Index: readme.txt ================================================================== --- readme.txt +++ readme.txt @@ -1,7 +1,7 @@ ---------------------------- - Quasi-Bga32.DLL 2015/05/01 + Quasi-Bga32.DLL 2015/05/05 ---------------------------- http://www.forest.impress.co.jp/article/2004/07/30/arcsecurity.html などで脆弱性と指摘されている問題が気になるけれど、Bga32.dllは使い続け たいという人のための回避策です。展開処理はこの問題に対処しつつ内部で @@ -29,12 +29,13 @@ オリジナルと同じになるように作ったつもりです。 * ただし、突貫で作ったのでたぶんバグだらけです。 ★更新履歴 - 2015/05/01 (0.05) - * TBW + 2015/05/05 (0.05) + * zlib のバージョンを 1.2.8 に上げ(るためにdmdのバージョンを 2.067 に上げ)ました + * libbz2 のバージョンを 1.0.6 に上げました 2010/11/25 (0.04) * _Bga32.dll を探す対象パスからカレントディレクトリを外しました 2004/8/31 (0.03) * レスポンスファイルが扱えてなかったバグを修正 * .gzaを正しく展開できないケースがあったっぽいので修正 @@ -57,16 +58,16 @@ ★著作権等 src/libbz2ディレクトリの中身は、 libbzip2 - http://sources.redhat.com/bzip2/ + http://www.bzip.org/ をビルドしたライブラリなどです。この部分は - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. + Copyright (C) 1996-2010 Julian Seward で。 - dmd_win32.lib と win32 ディレクトリの中身は - DWinProgramming - https://github.com/AndrejMitrovic/DWinProgramming + win32 ディレクトリの中身は + Bindings for the Windows API + http://www.dsource.org/projects/bindings/wiki/WindowsApi を利用しています。 他は NYSL 0.9982 ( http://www.kmonos.net/nysl/ )に基づいてご自由に。 Index: src/Makefile ================================================================== --- src/Makefile +++ src/Makefile @@ -1,12 +1,14 @@ -SRCFILES = qbga32.def qbga32.d util.d bga_melter.d hack.d windll.d qbga_gui.d -BZ2FILES = libbz2\\bzlib.d libbz2\\libbz2.lib -DEPLIBS = dmd_win32.lib +SRCFILES = qbga32.def dllmain.d util.d windll.d qbga32.d bga_melter.d qbga_gui.d +BZ2FILES = libbz2\bzlib.d libbz2\libbz2.lib +DEPLIBS = win32\windef.d OPTS = -release -shared -#OPTS = -unittest -QBga32.dll: $(SRCFILES) $(BZ2FILES) +QBga32.dll: $(SRCFILES) $(BZ2FILES) Makefile dmd.exe $(OPTS) -ofQBga32.dll $(SRCFILES) $(BZ2FILES) $(DEPLIBS) +testexe.exe: testexe.d + dmd.exe -gc -oftestexe.exe testexe.d + clean: del *.map del *.obj Index: src/bga_melter.d ================================================================== --- src/bga_melter.d +++ src/bga_melter.d @@ -258,11 +258,11 @@ } private bool read_header( out BgaHeader hdr ) { // 繝ェ繝医Ν繧ィ繝ウ繝繧」繧「繝ウ繧剃サョ螳壹ゅ倥ャ繝隱ュ縺ソ霎シ縺ソ - string buf = cast(string) fp.read(28); + void[] buf = fp.read(28); if( buf.length < 28 ) return false; buf.length = BgaHeader.sizeof; hdr = (cast(BgaHeader[]) buf)[0]; hdr.fname = ""; @@ -270,11 +270,11 @@ hdr.fname = cast(string) fp.read(hdr.dir_name_len + hdr.file_name_len); if( hdr.fname.length < hdr.dir_name_len + hdr.file_name_len ) return false; // 繝√ぉ繝繧ッ繧オ繝 int sum = 0; - for( int i=4; i!=28; ++i ) sum += signed_char(buf[i]); + for( int i=4; i!=28; ++i ) sum += signed_char((cast(char[])buf)[i]); foreach( char c ; hdr.fname ) sum += signed_char(c); return (sum == hdr.checksum); } private bool is_compressed( ref BgaHeader hdr ) // ref=just for optimization ADDED src/dllmain.d Index: src/dllmain.d ================================================================== --- src/dllmain.d +++ src/dllmain.d @@ -0,0 +1,70 @@ +import core.sys.windows.dll; +import core.sys.windows.windows; + +//---------------------------------------------------------------- +// 縺翫″縺セ繧翫ョDLL蛻晄悄蛹悶Ν繝シ繝√Φ +//---------------------------------------------------------------- + +extern (Windows) +BOOL DllMain( HINSTANCE inst, ULONG reason, void* reserved ) +{ + switch( reason ) + { + case DLL_PROCESS_ATTACH: + dll_process_attach( inst, true ); + break; + + case DLL_PROCESS_DETACH: + dll_process_detach( inst, true ); + break; + + case DLL_THREAD_ATTACH: + dll_thread_attach( true, true ); + break; + + case DLL_THREAD_DETACH: + dll_thread_detach( true, true ); + break; + + default: + } + return true; +} + +/* +// Hack! +// +// _acrtused_dll縺悟享謇九↓邨ゆコ譎ゅ↓讓呎コ門・蜃コ蜉帙ワ繝ウ繝峨Ν繧 +// 髢峨§縺。繧縺」縺ヲ蝗ー繧九ョ縺ァ縲√◎縺ョ霎コ繧翫□縺代ッ髢峨§縺ェ縺繧医≧縺ェ +// CloseHandle繧堤ェ√▲霎シ繧薙〒蝗樣∩縲 +// +// dmd v0.99 縺ァ縺ッ蜍輔>縺ヲ縺縺溘ョ縺縺代←譛霑代ョ縺縺ィ縺薙l繧貞・繧後k縺ィ +// 閾ウ繧区園縺ァ繧ッ繝ゥ繝繧キ繝・縺吶k縺ョ縺ァ閠縺育峩縺吝ソ隕√′縺ゅk縲 +// TODO: bug report. + +extern(Windows) +{ + private alias BOOL function(HANDLE) ClHnT; + private ClHnT Real_CloseHandle; + private HANDLE stdin; + private HANDLE stdout; + private HANDLE stderr; + + BOOL CloseHandle( HANDLE h ) + { + if( h==stdin ) return TRUE; + if( h==stdout ) return TRUE; + if( h==stderr ) return TRUE; + return Real_CloseHandle(h); + } +} + +static this() +{ + Real_CloseHandle = cast(ClHnT) + GetProcAddress( GetModuleHandleA("kernel32.dll"), "CloseHandle" ); + stdin = GetStdHandle(STD_INPUT_HANDLE ); + stdout = GetStdHandle(STD_OUTPUT_HANDLE); + stderr = GetStdHandle(STD_ERROR_HANDLE ); +} +*/ DELETED src/dmd_win32.lib Index: src/dmd_win32.lib ================================================================== --- src/dmd_win32.lib +++ src/dmd_win32.lib cannot compute difference between binary files DELETED src/hack.d Index: src/hack.d ================================================================== --- src/hack.d +++ src/hack.d @@ -1,33 +0,0 @@ -import core.sys.windows.windows; - -// Hack! -// -// _acrtused_dll縺悟享謇九↓邨ゆコ譎ゅ↓讓呎コ門・蜃コ蜉帙ワ繝ウ繝峨Ν繧 -// 髢峨§縺。繧縺」縺ヲ蝗ー繧九ョ縺ァ縲√◎縺ョ霎コ繧翫□縺代ッ髢峨§縺ェ縺繧医≧縺ェ -// CloseHandle繧堤ェ√▲霎シ繧薙〒蝗樣∩縲ゅ>縺縺ョ縺九%繧後 - -extern(Windows) -{ - private alias BOOL function(HANDLE) ClHnT; - private ClHnT Real_CloseHandle; - private HANDLE stdin; - private HANDLE stdout; - private HANDLE stderr; - - BOOL CloseHandle( HANDLE h ) - { - if( h==stdin ) return TRUE; - if( h==stdout ) return TRUE; - if( h==stderr ) return TRUE; - return Real_CloseHandle(h); - } -} - -static this() -{ - Real_CloseHandle = cast(ClHnT) - GetProcAddress( GetModuleHandleA("kernel32.dll"), "CloseHandle" ); - stdin = GetStdHandle(STD_INPUT_HANDLE ); - stdout = GetStdHandle(STD_OUTPUT_HANDLE); - stderr = GetStdHandle(STD_ERROR_HANDLE ); -} Index: src/qbga32.d ================================================================== --- src/qbga32.d +++ src/qbga32.d @@ -1,56 +1,19 @@ -import core.sys.windows.dll; import win32.windows; -import win32.winuser; import std.string; import std.file; import util; import windll; import bga_melter; import qbga_gui; //---------------------------------------------------------------- -// 縺翫″縺セ繧翫ョDLL蛻晄悄蛹悶Ν繝シ繝√Φ +// API霆「騾∝ヲ逅 //---------------------------------------------------------------- -__gshared HINSTANCE g_hinst; - -extern (Windows) -BOOL DllMain( HINSTANCE inst, ULONG reason, void* reserved ) -{ - switch( reason ) - { - case DLL_PROCESS_ATTACH: - g_hinst = inst; - dll_process_attach( inst, true ); - if( g_orig_dll is null ) - return false; - break; - - case DLL_PROCESS_DETACH: - dll_process_detach( inst, true ); - break; - - case DLL_THREAD_ATTACH: - dll_thread_attach( true, true ); - break; - - case DLL_THREAD_DETACH: - dll_thread_detach( true, true ); - break; - - default: - } - return true; -} - -//---------------------------------------------------------------- -// API霆「騾∝ヲ逅 -//---------------------------------------------------------------- - -__gshared WinDLL g_orig_dll = null; -__gshared UINT WM_ARCEXTRACT; +WinDLL g_orig_dll = null; +UINT WM_ARCEXTRACT; static this() { g_orig_dll = WinDLL.load( "_Bga32.DLL" ); WM_ARCEXTRACT = RegisterWindowMessage("wm_arcextract"); Index: src/qbga_gui.d ================================================================== --- src/qbga_gui.d +++ src/qbga_gui.d @@ -1,9 +1,8 @@ サソprivate import win32.windows; private import win32.commctrl; private import std.string; -private import qbga32; void process_messages() { for( MSG msg; PeekMessageA( &msg, null, 0, 0, PM_REMOVE ); ) { @@ -10,22 +9,20 @@ TranslateMessage( &msg ); DispatchMessageA( &msg ); } } -// 螳溯」邯呎価(w - class Dialog { public: HWND hwnd() { return handle; } protected: - void on_init() { MessageBoxA(null,"xxx",null,MB_OK); } + void on_init() {} bool on_ok() { return false; } bool on_cancel() { return false; } bool on_command( UINT cmd ) { return false; } bool on_message( UINT msg, WPARAM wp, LPARAM lp ) { return false; } @@ -59,11 +56,11 @@ protected: HWND handle; void BeginModeless( DLGTEMPLATE* dlg_template, HWND parent ) { CreateDialogIndirectParam( - g_hinst, + GetModuleHandle(null), dlg_template, parent, &static_dlg_proc, cast(LPARAM) cast(Dialog*) this ); @@ -70,11 +67,11 @@ } int BeginModal( DLGTEMPLATE* dlg_template, HWND parent ) { return DialogBoxIndirectParam( - g_hinst, + GetModuleHandle(null), dlg_template, parent, &static_dlg_proc, cast(LPARAM) cast(Dialog*) this ); ADDED src/testexe.d Index: src/testexe.d ================================================================== --- src/testexe.d +++ src/testexe.d @@ -0,0 +1,21 @@ +import win32.windows; +import std.stdio; +import std.string; +import core.runtime; + +alias extern(Windows) int function( HWND a, immutable char* b, char* c, DWORD d ) CmdFuncT; + +void main() +{ + HINSTANCE h = cast(HINSTANCE) Runtime.loadLibrary("QBga32.DLL"); + for(;;) { + write("> "); + string s = readln(); + if(s.length > 0) { + CmdFuncT Bga = cast(CmdFuncT)GetProcAddress(h, "Bga"); + int r = Bga(NULL, s.toStringz(), null, 0); + writeln("Return: ", r); + } + } + Runtime.unloadLibrary(h); +} Index: src/util.d ================================================================== --- src/util.d +++ src/util.d @@ -3,72 +3,10 @@ import std.file; char lastChar( string s ) { return *CharPrevA(cast(char*)s.ptr, cast(char*)s.ptr+s.length); } -//---------------------------------------------------------------- -// int do_opApply!(E, C)( collection, delegate ); -// int do_opApply!(E) ( array, delegate ); -// forwarding the opApply call to another collection -//---------------------------------------------------------------- - -template do_opApply( Elem, Collection ) -{ - int do_opApply( Collection c, int delegate(inout Elem) dg ) - { - int result = 0; - foreach( Elem x ; c ) - if( 0 != (result=dg(x)) ) - break; - return result; - } -} - -template do_opApply( E ) -{ - int do_opApply( E[] c, int delegate(inout E) dg ) - { - return .do_opApply!(E,E[])( c, dg ); - } -} - -//---------------------------------------------------------------- -// class set!(T) -// add : T -> void -// remove : T -> void -// has : T -> bool -// elems : () -> T[] -// length : () -> int -//---------------------------------------------------------------- - -class set(T) -{ - void add ( T x ) { data[x]; } - void remove( T x ) { delete data[x]; } - bool has ( T x ) { return x in data; } - T[] elems () { return data.keys; } - int opApply( int delegate(inout T) dg ) - { return do_opApply!(T)( elems, dg ); } - int length() { return data.length; } - private void[T] data; -} - -unittest -{ - set!(int) x = new set!(int); - x.add(1); - x.add(2); - x.add(3); - assert( x.elems[0] + x.elems[1] + x.elems[2] == 6 ); - assert( x.length == 3 ); - x.remove(4); - x.remove(3); - x.remove(1); - assert( x.length == 1 ); - foreach( int t ; x ) assert( t==2 ); -} - //---------------------------------------------------------------- // 繧ウ繝槭Φ繝峨Λ繧、繝ウ隗」譫 //---------------------------------------------------------------- string[] cmd_parse( string str, bool in_resp=false ) @@ -110,11 +48,11 @@ // 繝ャ繧ケ繝昴Φ繧ケ繝輔ぃ繧、繝ォ髢「騾」縺ョ蜃ヲ逅 if( !in_resp && param[0]==resp_char ) { try { - string rsp = cast(string) std.file.read( param[1 .. param.length] ); + string rsp = cast(string) std.file.read( param[1..$] ); ans ~= cmd_parse(rsp,true); } catch( FileException e ) {} } else if( param.length>=2 && param[0..2]=="--" ) { Index: src/win32/accctrl.d ================================================================== --- src/win32/accctrl.d +++ src/win32/accctrl.d @@ -1,424 +1,420 @@ -/***********************************************************************\ -* accctrl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.accctrl; - -private import win32.basetyps, win32.w32api, win32.winbase, win32.windef; - -// FIXME: check types and grouping of constants -// FIXME: check Windows version support - -static assert (_WIN32_WINNT_ONLY, - "win32.accctrl is available only if version WindowsNTonly, WindowsXP, " - "Windows2003 or WindowsVista is set"); - -alias LocalFree AccFree; - -const uint - ACTRL_RESERVED = 0x00000000, - ACTRL_ACCESS_PROTECTED = 0x00000001, - ACTRL_ACCESS_ALLOWED = 0x00000001, - ACTRL_ACCESS_DENIED = 0x00000002, - ACTRL_AUDIT_SUCCESS = 0x00000004, - ACTRL_AUDIT_FAILURE = 0x00000008, - ACTRL_SYSTEM_ACCESS = 0x04000000, - ACTRL_DELETE = 0x08000000, - ACTRL_READ_CONTROL = 0x10000000, - ACTRL_CHANGE_ACCESS = 0x20000000, - ACTRL_CHANGE_OWNER = 0x40000000, - ACTRL_SYNCHRONIZE = 0x80000000, - ACTRL_STD_RIGHTS_ALL = 0xf8000000; - -const uint - ACTRL_FILE_READ = 0x00000001, - ACTRL_FILE_WRITE = 0x00000002, - ACTRL_FILE_APPEND = 0x00000004, - ACTRL_FILE_READ_PROP = 0x00000008, - ACTRL_FILE_WRITE_PROP = 0x00000010, - ACTRL_FILE_EXECUTE = 0x00000020, - ACTRL_FILE_READ_ATTRIB = 0x00000080, - ACTRL_FILE_WRITE_ATTRIB = 0x00000100, - ACTRL_FILE_CREATE_PIPE = 0x00000200; - -const uint - ACTRL_DIR_LIST = 0x00000001, - ACTRL_DIR_CREATE_OBJECT = 0x00000002, - ACTRL_DIR_CREATE_CHILD = 0x00000004, - ACTRL_DIR_DELETE_CHILD = 0x00000040, - ACTRL_DIR_TRAVERSE = 0x00000020; - -const uint - ACTRL_KERNEL_TERMINATE = 0x00000001, - ACTRL_KERNEL_THREAD = 0x00000002, - ACTRL_KERNEL_VM = 0x00000004, - ACTRL_KERNEL_VM_READ = 0x00000008, - ACTRL_KERNEL_VM_WRITE = 0x00000010, - ACTRL_KERNEL_DUP_HANDLE = 0x00000020, - ACTRL_KERNEL_PROCESS = 0x00000040, - ACTRL_KERNEL_SET_INFO = 0x00000080, - ACTRL_KERNEL_GET_INFO = 0x00000100, - ACTRL_KERNEL_CONTROL = 0x00000200, - ACTRL_KERNEL_ALERT = 0x00000400, - ACTRL_KERNEL_GET_CONTEXT = 0x00000800, - ACTRL_KERNEL_SET_CONTEXT = 0x00001000, - ACTRL_KERNEL_TOKEN = 0x00002000, - ACTRL_KERNEL_IMPERSONATE = 0x00004000, - ACTRL_KERNEL_DIMPERSONATE = 0x00008000; - -const uint - ACTRL_PRINT_SADMIN = 0x00000001, - ACTRL_PRINT_SLIST = 0x00000002, - ACTRL_PRINT_PADMIN = 0x00000004, - ACTRL_PRINT_PUSE = 0x00000008, - ACTRL_PRINT_JADMIN = 0x00000010; - -const uint - ACTRL_SVC_GET_INFO = 0x00000001, - ACTRL_SVC_SET_INFO = 0x00000002, - ACTRL_SVC_STATUS = 0x00000004, - ACTRL_SVC_LIST = 0x00000008, - ACTRL_SVC_START = 0x00000010, - ACTRL_SVC_STOP = 0x00000020, - ACTRL_SVC_PAUSE = 0x00000040, - ACTRL_SVC_INTERROGATE = 0x00000080, - ACTRL_SVC_UCONTROL = 0x00000100; - -const uint - ACTRL_REG_QUERY = 0x00000001, - ACTRL_REG_SET = 0x00000002, - ACTRL_REG_CREATE_CHILD = 0x00000004, - ACTRL_REG_LIST = 0x00000008, - ACTRL_REG_NOTIFY = 0x00000010, - ACTRL_REG_LINK = 0x00000020; - -const uint - ACTRL_WIN_CLIPBRD = 0x00000001, - ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, - ACTRL_WIN_CREATE = 0x00000004, - ACTRL_WIN_LIST_DESK = 0x00000008, - ACTRL_WIN_LIST = 0x00000010, - ACTRL_WIN_READ_ATTRIBS = 0x00000020, - ACTRL_WIN_WRITE_ATTRIBS = 0x00000040, - ACTRL_WIN_SCREEN = 0x00000080, - ACTRL_WIN_EXIT = 0x00000100; - -enum : uint { - ACTRL_ACCESS_NO_OPTIONS = 0x00000000, - ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = 0x00000001 -} - -const TCHAR[] ACCCTRL_DEFAULT_PROVIDER = "Windows NT Access Provider"; - -const uint - TRUSTEE_ACCESS_ALLOWED = 0x00000001, - TRUSTEE_ACCESS_READ = 0x00000002, - TRUSTEE_ACCESS_WRITE = 0x00000004, - TRUSTEE_ACCESS_EXPLICIT = 0x00000001, - TRUSTEE_ACCESS_READ_WRITE = 0x00000006, - TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; - -const uint - NO_INHERITANCE = 0x0, - SUB_OBJECTS_ONLY_INHERIT = 0x1, - SUB_CONTAINERS_ONLY_INHERIT = 0x2, - SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3, - INHERIT_NO_PROPAGATE = 0x4, - INHERIT_ONLY = 0x8, - INHERITED_ACCESS_ENTRY = 0x10, - INHERITED_PARENT = 0x10000000, - INHERITED_GRANDPARENT = 0x20000000; - -alias ULONG INHERIT_FLAGS, ACCESS_RIGHTS; -alias ULONG* PINHERIT_FLAGS, PACCESS_RIGHTS; - -enum ACCESS_MODE { - NOT_USED_ACCESS, - GRANT_ACCESS, - SET_ACCESS, - DENY_ACCESS, - REVOKE_ACCESS, - SET_AUDIT_SUCCESS, - SET_AUDIT_FAILURE -} - -enum SE_OBJECT_TYPE { - SE_UNKNOWN_OBJECT_TYPE, - SE_FILE_OBJECT, - SE_SERVICE, - SE_PRINTER, - SE_REGISTRY_KEY, - SE_LMSHARE, - SE_KERNEL_OBJECT, - SE_WINDOW_OBJECT, - SE_DS_OBJECT, - SE_DS_OBJECT_ALL, - SE_PROVIDER_DEFINED_OBJECT, - SE_WMIGUID_OBJECT, - SE_REGISTRY_WOW64_32KEY -} - -enum TRUSTEE_TYPE { - TRUSTEE_IS_UNKNOWN, - TRUSTEE_IS_USER, - TRUSTEE_IS_GROUP, - TRUSTEE_IS_DOMAIN, - TRUSTEE_IS_ALIAS, - TRUSTEE_IS_WELL_KNOWN_GROUP, - TRUSTEE_IS_DELETED, - TRUSTEE_IS_INVALID, - TRUSTEE_IS_COMPUTER -} - -enum TRUSTEE_FORM { - TRUSTEE_IS_SID, - TRUSTEE_IS_NAME, - TRUSTEE_BAD_FORM, - TRUSTEE_IS_OBJECTS_AND_SID, - TRUSTEE_IS_OBJECTS_AND_NAME -} - -enum MULTIPLE_TRUSTEE_OPERATION { - NO_MULTIPLE_TRUSTEE, - TRUSTEE_IS_IMPERSONATE -} - -struct TRUSTEE_A { - TRUSTEE_A* pMultipleTrustee; - MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; - TRUSTEE_FORM TrusteeForm; - TRUSTEE_TYPE TrusteeType; - LPSTR ptstrName; -} -alias TRUSTEE_A TRUSTEEA; -alias TRUSTEE_A* PTRUSTEE_A, PTRUSTEEA; - -struct TRUSTEE_W { - TRUSTEE_W* pMultipleTrustee; - MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; - TRUSTEE_FORM TrusteeForm; - TRUSTEE_TYPE TrusteeType; - LPWSTR ptstrName; -} -alias TRUSTEE_W TRUSTEEW; -alias TRUSTEEW* PTRUSTEE_W, PTRUSTEEW; - -struct ACTRL_ACCESS_ENTRYA { - TRUSTEE_A Trustee; - ULONG fAccessFlags; - ACCESS_RIGHTS Access; - ACCESS_RIGHTS ProvSpecificAccess; - INHERIT_FLAGS Inheritance; - LPCSTR lpInheritProperty; -} -alias ACTRL_ACCESS_ENTRYA* PACTRL_ACCESS_ENTRYA; - -struct ACTRL_ACCESS_ENTRYW { - TRUSTEE_W Trustee; - ULONG fAccessFlags; - ACCESS_RIGHTS Access; - ACCESS_RIGHTS ProvSpecificAccess; - INHERIT_FLAGS Inheritance; - LPCWSTR lpInheritProperty; -} -alias ACTRL_ACCESS_ENTRYW* PACTRL_ACCESS_ENTRYW; - -struct ACTRL_ACCESS_ENTRY_LISTA { - ULONG cEntries; - ACTRL_ACCESS_ENTRYA* pAccessList; -} -alias ACTRL_ACCESS_ENTRY_LISTA* PACTRL_ACCESS_ENTRY_LISTA; - -struct ACTRL_ACCESS_ENTRY_LISTW { - ULONG cEntries; - ACTRL_ACCESS_ENTRYW* pAccessList; -} -alias ACTRL_ACCESS_ENTRY_LISTW* PACTRL_ACCESS_ENTRY_LISTW; - -struct ACTRL_PROPERTY_ENTRYA { - LPCSTR lpProperty; - PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; - ULONG fListFlags; -} -alias ACTRL_PROPERTY_ENTRYA* PACTRL_PROPERTY_ENTRYA; - -struct ACTRL_PROPERTY_ENTRYW { - LPCWSTR lpProperty; - PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; - ULONG fListFlags; -} -alias ACTRL_PROPERTY_ENTRYW* PACTRL_PROPERTY_ENTRYW; - -struct ACTRL_ACCESSA { - ULONG cEntries; - PACTRL_PROPERTY_ENTRYA pPropertyAccessList; -} -alias ACTRL_ACCESSA ACTRL_AUDITA; -alias ACTRL_ACCESSA* PACTRL_ACCESSA, PACTRL_AUDITA; - -struct ACTRL_ACCESSW { - ULONG cEntries; - PACTRL_PROPERTY_ENTRYW pPropertyAccessList; -} -alias ACTRL_ACCESSW ACTRL_AUDITW; -alias ACTRL_ACCESSW* PACTRL_ACCESSW, PACTRL_AUDITW; - -struct TRUSTEE_ACCESSA { - LPSTR lpProperty; - ACCESS_RIGHTS Access; - ULONG fAccessFlags; - ULONG fReturnedAccess; -} -alias TRUSTEE_ACCESSA* PTRUSTEE_ACCESSA; - -struct TRUSTEE_ACCESSW { - LPWSTR lpProperty; - ACCESS_RIGHTS Access; - ULONG fAccessFlags; - ULONG fReturnedAccess; -} -alias TRUSTEE_ACCESSW* PTRUSTEE_ACCESSW; - -struct ACTRL_OVERLAPPED { - union { - PVOID Provider; - ULONG Reserved1; - } - ULONG Reserved2; - HANDLE hEvent; -} -alias ACTRL_OVERLAPPED* PACTRL_OVERLAPPED; - -struct ACTRL_ACCESS_INFOA { - ULONG fAccessPermission; - LPSTR lpAccessPermissionName; -} -alias ACTRL_ACCESS_INFOA* PACTRL_ACCESS_INFOA; - -struct ACTRL_ACCESS_INFOW { - ULONG fAccessPermission; - LPWSTR lpAccessPermissionName; -} -alias ACTRL_ACCESS_INFOW* PACTRL_ACCESS_INFOW; - -struct ACTRL_CONTROL_INFOA { - LPSTR lpControlId; - LPSTR lpControlName; -} -alias ACTRL_CONTROL_INFOA* PACTRL_CONTROL_INFOA; - -struct ACTRL_CONTROL_INFOW { - LPWSTR lpControlId; - LPWSTR lpControlName; -} -alias ACTRL_CONTROL_INFOW* PACTRL_CONTROL_INFOW; - -struct EXPLICIT_ACCESS_A { - DWORD grfAccessPermissions; - ACCESS_MODE grfAccessMode; - DWORD grfInheritance; - TRUSTEE_A Trustee; -} -alias EXPLICIT_ACCESS_A EXPLICIT_ACCESSA; -alias EXPLICIT_ACCESS_A* PEXPLICIT_ACCESS_A, PEXPLICIT_ACCESSA; - -struct EXPLICIT_ACCESS_W { - DWORD grfAccessPermissions; - ACCESS_MODE grfAccessMode; - DWORD grfInheritance; - TRUSTEE_W Trustee; -} -alias EXPLICIT_ACCESS_W EXPLICIT_ACCESSW; -alias EXPLICIT_ACCESS_W* PEXPLICIT_ACCESS_W, PEXPLICIT_ACCESSW; - -struct OBJECTS_AND_SID { - DWORD ObjectsPresent; - GUID ObjectTypeGuid; - GUID InheritedObjectTypeGuid; - SID* pSid; -} -alias OBJECTS_AND_SID* POBJECTS_AND_SID; - -struct OBJECTS_AND_NAME_A { - DWORD ObjectsPresent; - SE_OBJECT_TYPE ObjectType; - LPSTR ObjectTypeName; - LPSTR InheritedObjectTypeName; - LPSTR ptstrName; -} -alias OBJECTS_AND_NAME_A* POBJECTS_AND_NAME_A; - -struct OBJECTS_AND_NAME_W { - DWORD ObjectsPresent; - SE_OBJECT_TYPE ObjectType; - LPWSTR ObjectTypeName; - LPWSTR InheritedObjectTypeName; - LPWSTR ptstrName; -} -alias OBJECTS_AND_NAME_W* POBJECTS_AND_NAME_W; - -static if (WINVER >= 0x501) { - struct INHERITED_FROMA { - LONG GenerationGap; - LPSTR AncestorName; - } - alias INHERITED_FROMA* PINHERITED_FROMA; - - struct INHERITED_FROMW { - LONG GenerationGap; - LPWSTR AncestorName; - } - alias INHERITED_FROMW* PINHERITED_FROMW; -} - -version (Unicode) { - alias TRUSTEEW TRUSTEE; - alias ACTRL_ACCESSW ACTRL_ACCESS; - alias ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST; - alias ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO; - alias ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY; - alias ACTRL_AUDITW ACTRL_AUDIT; - alias ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO; - alias EXPLICIT_ACCESSW EXPLICIT_ACCESS; - alias TRUSTEE_ACCESSW TRUSTEE_ACCESS; - alias OBJECTS_AND_NAME_W OBJECTS_AND_NAME_; - static if (WINVER >= 0x501) { - alias INHERITED_FROMW INHERITED_FROM; - } -} else { - alias TRUSTEEA TRUSTEE; - alias ACTRL_ACCESSA ACTRL_ACCESS; - alias ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST; - alias ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO; - alias ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY; - alias ACTRL_AUDITA ACTRL_AUDIT; - alias ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO; - alias EXPLICIT_ACCESSA EXPLICIT_ACCESS; - alias TRUSTEE_ACCESSA TRUSTEE_ACCESS; - alias OBJECTS_AND_NAME_A OBJECTS_AND_NAME_; - static if (WINVER >= 0x501) { - alias INHERITED_FROMA INHERITED_FROM; - } -} - -alias TRUSTEE TRUSTEE_; -alias TRUSTEE* PTRUSTEE, PTRUSTEE_; -alias ACTRL_ACCESS* PACTRL_ACCESS; -alias ACTRL_ACCESS_ENTRY_LIST* PACTRL_ACCESS_ENTRY_LIST; -alias ACTRL_ACCESS_INFO* PACTRL_ACCESS_INFO; -alias ACTRL_ACCESS_ENTRY* PACTRL_ACCESS_ENTRY; -alias ACTRL_AUDIT* PACTRL_AUDIT; -alias ACTRL_CONTROL_INFO* PACTRL_CONTROL_INFO; -alias EXPLICIT_ACCESS EXPLICIT_ACCESS_; -alias EXPLICIT_ACCESS* PEXPLICIT_ACCESS, PEXPLICIT_ACCESS_; -alias TRUSTEE_ACCESS* PTRUSTEE_ACCESS; -alias OBJECTS_AND_NAME_* POBJECTS_AND_NAME_; -static if (WINVER >= 0x501) { - alias INHERITED_FROM* PINHERITED_FROM; -} +/***********************************************************************\ +* accctrl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.accctrl; + +private import win32.basetyps, win32.w32api, win32.winbase, win32.windef; + +// FIXME: check types and grouping of constants +// FIXME: check Windows version support + +alias LocalFree AccFree; + +const uint + ACTRL_RESERVED = 0x00000000, + ACTRL_ACCESS_PROTECTED = 0x00000001, + ACTRL_ACCESS_ALLOWED = 0x00000001, + ACTRL_ACCESS_DENIED = 0x00000002, + ACTRL_AUDIT_SUCCESS = 0x00000004, + ACTRL_AUDIT_FAILURE = 0x00000008, + ACTRL_SYSTEM_ACCESS = 0x04000000, + ACTRL_DELETE = 0x08000000, + ACTRL_READ_CONTROL = 0x10000000, + ACTRL_CHANGE_ACCESS = 0x20000000, + ACTRL_CHANGE_OWNER = 0x40000000, + ACTRL_SYNCHRONIZE = 0x80000000, + ACTRL_STD_RIGHTS_ALL = 0xf8000000; + +const uint + ACTRL_FILE_READ = 0x00000001, + ACTRL_FILE_WRITE = 0x00000002, + ACTRL_FILE_APPEND = 0x00000004, + ACTRL_FILE_READ_PROP = 0x00000008, + ACTRL_FILE_WRITE_PROP = 0x00000010, + ACTRL_FILE_EXECUTE = 0x00000020, + ACTRL_FILE_READ_ATTRIB = 0x00000080, + ACTRL_FILE_WRITE_ATTRIB = 0x00000100, + ACTRL_FILE_CREATE_PIPE = 0x00000200; + +const uint + ACTRL_DIR_LIST = 0x00000001, + ACTRL_DIR_CREATE_OBJECT = 0x00000002, + ACTRL_DIR_CREATE_CHILD = 0x00000004, + ACTRL_DIR_DELETE_CHILD = 0x00000040, + ACTRL_DIR_TRAVERSE = 0x00000020; + +const uint + ACTRL_KERNEL_TERMINATE = 0x00000001, + ACTRL_KERNEL_THREAD = 0x00000002, + ACTRL_KERNEL_VM = 0x00000004, + ACTRL_KERNEL_VM_READ = 0x00000008, + ACTRL_KERNEL_VM_WRITE = 0x00000010, + ACTRL_KERNEL_DUP_HANDLE = 0x00000020, + ACTRL_KERNEL_PROCESS = 0x00000040, + ACTRL_KERNEL_SET_INFO = 0x00000080, + ACTRL_KERNEL_GET_INFO = 0x00000100, + ACTRL_KERNEL_CONTROL = 0x00000200, + ACTRL_KERNEL_ALERT = 0x00000400, + ACTRL_KERNEL_GET_CONTEXT = 0x00000800, + ACTRL_KERNEL_SET_CONTEXT = 0x00001000, + ACTRL_KERNEL_TOKEN = 0x00002000, + ACTRL_KERNEL_IMPERSONATE = 0x00004000, + ACTRL_KERNEL_DIMPERSONATE = 0x00008000; + +const uint + ACTRL_PRINT_SADMIN = 0x00000001, + ACTRL_PRINT_SLIST = 0x00000002, + ACTRL_PRINT_PADMIN = 0x00000004, + ACTRL_PRINT_PUSE = 0x00000008, + ACTRL_PRINT_JADMIN = 0x00000010; + +const uint + ACTRL_SVC_GET_INFO = 0x00000001, + ACTRL_SVC_SET_INFO = 0x00000002, + ACTRL_SVC_STATUS = 0x00000004, + ACTRL_SVC_LIST = 0x00000008, + ACTRL_SVC_START = 0x00000010, + ACTRL_SVC_STOP = 0x00000020, + ACTRL_SVC_PAUSE = 0x00000040, + ACTRL_SVC_INTERROGATE = 0x00000080, + ACTRL_SVC_UCONTROL = 0x00000100; + +const uint + ACTRL_REG_QUERY = 0x00000001, + ACTRL_REG_SET = 0x00000002, + ACTRL_REG_CREATE_CHILD = 0x00000004, + ACTRL_REG_LIST = 0x00000008, + ACTRL_REG_NOTIFY = 0x00000010, + ACTRL_REG_LINK = 0x00000020; + +const uint + ACTRL_WIN_CLIPBRD = 0x00000001, + ACTRL_WIN_GLOBAL_ATOMS = 0x00000002, + ACTRL_WIN_CREATE = 0x00000004, + ACTRL_WIN_LIST_DESK = 0x00000008, + ACTRL_WIN_LIST = 0x00000010, + ACTRL_WIN_READ_ATTRIBS = 0x00000020, + ACTRL_WIN_WRITE_ATTRIBS = 0x00000040, + ACTRL_WIN_SCREEN = 0x00000080, + ACTRL_WIN_EXIT = 0x00000100; + +enum : uint { + ACTRL_ACCESS_NO_OPTIONS = 0x00000000, + ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES = 0x00000001 +} + +const TCHAR[] ACCCTRL_DEFAULT_PROVIDER = "Windows NT Access Provider"; + +const uint + TRUSTEE_ACCESS_ALLOWED = 0x00000001, + TRUSTEE_ACCESS_READ = 0x00000002, + TRUSTEE_ACCESS_WRITE = 0x00000004, + TRUSTEE_ACCESS_EXPLICIT = 0x00000001, + TRUSTEE_ACCESS_READ_WRITE = 0x00000006, + TRUSTEE_ACCESS_ALL = 0xFFFFFFFF; + +const uint + NO_INHERITANCE = 0x0, + SUB_OBJECTS_ONLY_INHERIT = 0x1, + SUB_CONTAINERS_ONLY_INHERIT = 0x2, + SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3, + INHERIT_NO_PROPAGATE = 0x4, + INHERIT_ONLY = 0x8, + INHERITED_ACCESS_ENTRY = 0x10, + INHERITED_PARENT = 0x10000000, + INHERITED_GRANDPARENT = 0x20000000; + +alias ULONG INHERIT_FLAGS, ACCESS_RIGHTS; +alias ULONG* PINHERIT_FLAGS, PACCESS_RIGHTS; + +enum ACCESS_MODE { + NOT_USED_ACCESS, + GRANT_ACCESS, + SET_ACCESS, + DENY_ACCESS, + REVOKE_ACCESS, + SET_AUDIT_SUCCESS, + SET_AUDIT_FAILURE +} + +enum SE_OBJECT_TYPE { + SE_UNKNOWN_OBJECT_TYPE, + SE_FILE_OBJECT, + SE_SERVICE, + SE_PRINTER, + SE_REGISTRY_KEY, + SE_LMSHARE, + SE_KERNEL_OBJECT, + SE_WINDOW_OBJECT, + SE_DS_OBJECT, + SE_DS_OBJECT_ALL, + SE_PROVIDER_DEFINED_OBJECT, + SE_WMIGUID_OBJECT, + SE_REGISTRY_WOW64_32KEY +} + +enum TRUSTEE_TYPE { + TRUSTEE_IS_UNKNOWN, + TRUSTEE_IS_USER, + TRUSTEE_IS_GROUP, + TRUSTEE_IS_DOMAIN, + TRUSTEE_IS_ALIAS, + TRUSTEE_IS_WELL_KNOWN_GROUP, + TRUSTEE_IS_DELETED, + TRUSTEE_IS_INVALID, + TRUSTEE_IS_COMPUTER +} + +enum TRUSTEE_FORM { + TRUSTEE_IS_SID, + TRUSTEE_IS_NAME, + TRUSTEE_BAD_FORM, + TRUSTEE_IS_OBJECTS_AND_SID, + TRUSTEE_IS_OBJECTS_AND_NAME +} + +enum MULTIPLE_TRUSTEE_OPERATION { + NO_MULTIPLE_TRUSTEE, + TRUSTEE_IS_IMPERSONATE +} + +struct TRUSTEE_A { + TRUSTEE_A* pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPSTR ptstrName; +} +alias TRUSTEE_A TRUSTEEA; +alias TRUSTEE_A* PTRUSTEE_A, PTRUSTEEA; + +struct TRUSTEE_W { + TRUSTEE_W* pMultipleTrustee; + MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation; + TRUSTEE_FORM TrusteeForm; + TRUSTEE_TYPE TrusteeType; + LPWSTR ptstrName; +} +alias TRUSTEE_W TRUSTEEW; +alias TRUSTEEW* PTRUSTEE_W, PTRUSTEEW; + +struct ACTRL_ACCESS_ENTRYA { + TRUSTEE_A Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCSTR lpInheritProperty; +} +alias ACTRL_ACCESS_ENTRYA* PACTRL_ACCESS_ENTRYA; + +struct ACTRL_ACCESS_ENTRYW { + TRUSTEE_W Trustee; + ULONG fAccessFlags; + ACCESS_RIGHTS Access; + ACCESS_RIGHTS ProvSpecificAccess; + INHERIT_FLAGS Inheritance; + LPCWSTR lpInheritProperty; +} +alias ACTRL_ACCESS_ENTRYW* PACTRL_ACCESS_ENTRYW; + +struct ACTRL_ACCESS_ENTRY_LISTA { + ULONG cEntries; + ACTRL_ACCESS_ENTRYA* pAccessList; +} +alias ACTRL_ACCESS_ENTRY_LISTA* PACTRL_ACCESS_ENTRY_LISTA; + +struct ACTRL_ACCESS_ENTRY_LISTW { + ULONG cEntries; + ACTRL_ACCESS_ENTRYW* pAccessList; +} +alias ACTRL_ACCESS_ENTRY_LISTW* PACTRL_ACCESS_ENTRY_LISTW; + +struct ACTRL_PROPERTY_ENTRYA { + LPCSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; + ULONG fListFlags; +} +alias ACTRL_PROPERTY_ENTRYA* PACTRL_PROPERTY_ENTRYA; + +struct ACTRL_PROPERTY_ENTRYW { + LPCWSTR lpProperty; + PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; + ULONG fListFlags; +} +alias ACTRL_PROPERTY_ENTRYW* PACTRL_PROPERTY_ENTRYW; + +struct ACTRL_ACCESSA { + ULONG cEntries; + PACTRL_PROPERTY_ENTRYA pPropertyAccessList; +} +alias ACTRL_ACCESSA ACTRL_AUDITA; +alias ACTRL_ACCESSA* PACTRL_ACCESSA, PACTRL_AUDITA; + +struct ACTRL_ACCESSW { + ULONG cEntries; + PACTRL_PROPERTY_ENTRYW pPropertyAccessList; +} +alias ACTRL_ACCESSW ACTRL_AUDITW; +alias ACTRL_ACCESSW* PACTRL_ACCESSW, PACTRL_AUDITW; + +struct TRUSTEE_ACCESSA { + LPSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; +} +alias TRUSTEE_ACCESSA* PTRUSTEE_ACCESSA; + +struct TRUSTEE_ACCESSW { + LPWSTR lpProperty; + ACCESS_RIGHTS Access; + ULONG fAccessFlags; + ULONG fReturnedAccess; +} +alias TRUSTEE_ACCESSW* PTRUSTEE_ACCESSW; + +struct ACTRL_OVERLAPPED { + union { + PVOID Provider; + ULONG Reserved1; + } + ULONG Reserved2; + HANDLE hEvent; +} +alias ACTRL_OVERLAPPED* PACTRL_OVERLAPPED; + +struct ACTRL_ACCESS_INFOA { + ULONG fAccessPermission; + LPSTR lpAccessPermissionName; +} +alias ACTRL_ACCESS_INFOA* PACTRL_ACCESS_INFOA; + +struct ACTRL_ACCESS_INFOW { + ULONG fAccessPermission; + LPWSTR lpAccessPermissionName; +} +alias ACTRL_ACCESS_INFOW* PACTRL_ACCESS_INFOW; + +struct ACTRL_CONTROL_INFOA { + LPSTR lpControlId; + LPSTR lpControlName; +} +alias ACTRL_CONTROL_INFOA* PACTRL_CONTROL_INFOA; + +struct ACTRL_CONTROL_INFOW { + LPWSTR lpControlId; + LPWSTR lpControlName; +} +alias ACTRL_CONTROL_INFOW* PACTRL_CONTROL_INFOW; + +struct EXPLICIT_ACCESS_A { + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_A Trustee; +} +alias EXPLICIT_ACCESS_A EXPLICIT_ACCESSA; +alias EXPLICIT_ACCESS_A* PEXPLICIT_ACCESS_A, PEXPLICIT_ACCESSA; + +struct EXPLICIT_ACCESS_W { + DWORD grfAccessPermissions; + ACCESS_MODE grfAccessMode; + DWORD grfInheritance; + TRUSTEE_W Trustee; +} +alias EXPLICIT_ACCESS_W EXPLICIT_ACCESSW; +alias EXPLICIT_ACCESS_W* PEXPLICIT_ACCESS_W, PEXPLICIT_ACCESSW; + +struct OBJECTS_AND_SID { + DWORD ObjectsPresent; + GUID ObjectTypeGuid; + GUID InheritedObjectTypeGuid; + SID* pSid; +} +alias OBJECTS_AND_SID* POBJECTS_AND_SID; + +struct OBJECTS_AND_NAME_A { + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPSTR ObjectTypeName; + LPSTR InheritedObjectTypeName; + LPSTR ptstrName; +} +alias OBJECTS_AND_NAME_A* POBJECTS_AND_NAME_A; + +struct OBJECTS_AND_NAME_W { + DWORD ObjectsPresent; + SE_OBJECT_TYPE ObjectType; + LPWSTR ObjectTypeName; + LPWSTR InheritedObjectTypeName; + LPWSTR ptstrName; +} +alias OBJECTS_AND_NAME_W* POBJECTS_AND_NAME_W; + +static if (_WIN32_WINNT >= 0x501) { + struct INHERITED_FROMA { + LONG GenerationGap; + LPSTR AncestorName; + } + alias INHERITED_FROMA* PINHERITED_FROMA; + + struct INHERITED_FROMW { + LONG GenerationGap; + LPWSTR AncestorName; + } + alias INHERITED_FROMW* PINHERITED_FROMW; +} + +version (Unicode) { + alias TRUSTEEW TRUSTEE; + alias ACTRL_ACCESSW ACTRL_ACCESS; + alias ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST; + alias ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO; + alias ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY; + alias ACTRL_AUDITW ACTRL_AUDIT; + alias ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO; + alias EXPLICIT_ACCESSW EXPLICIT_ACCESS; + alias TRUSTEE_ACCESSW TRUSTEE_ACCESS; + alias OBJECTS_AND_NAME_W OBJECTS_AND_NAME_; + static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROMW INHERITED_FROM; + } +} else { + alias TRUSTEEA TRUSTEE; + alias ACTRL_ACCESSA ACTRL_ACCESS; + alias ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST; + alias ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO; + alias ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY; + alias ACTRL_AUDITA ACTRL_AUDIT; + alias ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO; + alias EXPLICIT_ACCESSA EXPLICIT_ACCESS; + alias TRUSTEE_ACCESSA TRUSTEE_ACCESS; + alias OBJECTS_AND_NAME_A OBJECTS_AND_NAME_; + static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROMA INHERITED_FROM; + } +} + +alias TRUSTEE TRUSTEE_; +alias TRUSTEE* PTRUSTEE, PTRUSTEE_; +alias ACTRL_ACCESS* PACTRL_ACCESS; +alias ACTRL_ACCESS_ENTRY_LIST* PACTRL_ACCESS_ENTRY_LIST; +alias ACTRL_ACCESS_INFO* PACTRL_ACCESS_INFO; +alias ACTRL_ACCESS_ENTRY* PACTRL_ACCESS_ENTRY; +alias ACTRL_AUDIT* PACTRL_AUDIT; +alias ACTRL_CONTROL_INFO* PACTRL_CONTROL_INFO; +alias EXPLICIT_ACCESS EXPLICIT_ACCESS_; +alias EXPLICIT_ACCESS* PEXPLICIT_ACCESS, PEXPLICIT_ACCESS_; +alias TRUSTEE_ACCESS* PTRUSTEE_ACCESS; +alias OBJECTS_AND_NAME_* POBJECTS_AND_NAME_; +static if (_WIN32_WINNT >= 0x501) { + alias INHERITED_FROM* PINHERITED_FROM; +} Index: src/win32/aclapi.d ================================================================== --- src/win32/aclapi.d +++ src/win32/aclapi.d @@ -1,141 +1,137 @@ -/***********************************************************************\ -* aclapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.aclapi; -pragma(lib, "advapi32.lib"); - -import win32.windows, win32.accctrl; - -static assert (_WIN32_WINNT_ONLY, - "win32.aclapi is available only if version WindowsNTonly, WindowsXP, " - "Windows2003 or WindowsVista is set"); - -extern (Windows) { - VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, - ACCESS_MODE, DWORD); - VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD, - ACCESS_MODE, DWORD); - DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG, - PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR, - PULONG, PSECURITY_DESCRIPTOR*); - DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG, - PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR, - PULONG, PSECURITY_DESCRIPTOR*); - VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR); - VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR); - VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A, - SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR); - VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W, - SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR); - VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID, - GUID*, GUID*, PSID); - VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID, - GUID*, GUID*, PSID); - VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID); - VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID); - DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK, - PACCESS_MASK); - DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK, - PACCESS_MASK); - DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK); - DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK); - DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*); - DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*); - static if (WINVER >= 0x501) { - DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE, - SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, - PGENERIC_MAPPING, PINHERITED_FROMA); - DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE, - SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, - PGENERIC_MAPPING, PINHERITED_FROMW); - } - DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); - TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A); - TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W); - LPSTR GetTrusteeNameA(PTRUSTEE_A); - LPWSTR GetTrusteeNameW(PTRUSTEE_W); - TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A); - TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W); - DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG, - PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*, - PSECURITY_DESCRIPTOR); - DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG, - PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*, - PSECURITY_DESCRIPTOR); - DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*); - DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*); - DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID, PSID, PACL, PACL); - DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, - PSID, PSID, PACL, PACL); - DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, - PSID, PACL, PACL); - VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, - PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD); - VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, - PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD); - VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A); - VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W); - PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A); - PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W); - MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A); - MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W); -} - -version (Unicode) { - alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName; - alias BuildSecurityDescriptorW BuildSecurityDescriptor; - alias BuildTrusteeWithNameW BuildTrusteeWithName; - alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName; - alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid; - alias BuildTrusteeWithSidW BuildTrusteeWithSid; - alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl; - alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl; - alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl; - alias GetNamedSecurityInfoW GetNamedSecurityInfo; - alias GetTrusteeFormW GetTrusteeForm; - alias GetTrusteeNameW GetTrusteeName; - alias GetTrusteeTypeW GetTrusteeType; - alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts; - alias SetEntriesInAclW SetEntriesInAcl; - alias SetNamedSecurityInfoW SetNamedSecurityInfo; - alias BuildImpersonateExplicitAccessWithNameW - BuildImpersonateExplicitAccessWithName; - alias BuildImpersonateTrusteeW BuildImpersonateTrustee; - alias GetMultipleTrusteeW GetMultipleTrustee; - alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation; -} else { - alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName; - alias BuildSecurityDescriptorA BuildSecurityDescriptor; - alias BuildTrusteeWithNameA BuildTrusteeWithName; - alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName; - alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid; - alias BuildTrusteeWithSidA BuildTrusteeWithSid; - alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl; - alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl; - alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl; - alias GetNamedSecurityInfoA GetNamedSecurityInfo; - alias GetTrusteeFormA GetTrusteeForm; - alias GetTrusteeNameA GetTrusteeName; - alias GetTrusteeTypeA GetTrusteeType; - alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts; - alias SetEntriesInAclA SetEntriesInAcl; - alias SetNamedSecurityInfoA SetNamedSecurityInfo; - alias BuildImpersonateExplicitAccessWithNameA - BuildImpersonateExplicitAccessWithName; - alias BuildImpersonateTrusteeA BuildImpersonateTrustee; - alias GetMultipleTrusteeA GetMultipleTrustee; - alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation; -} +/***********************************************************************\ +* aclapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.aclapi; +pragma(lib, "advapi32"); + +import win32.windows, win32.accctrl; + +extern (Windows) { + VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD, + ACCESS_MODE, DWORD); + VOID BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, DWORD, + ACCESS_MODE, DWORD); + DWORD BuildSecurityDescriptorA(PTRUSTEE_A, PTRUSTEE_A , ULONG, + PEXPLICIT_ACCESS_A, ULONG, PEXPLICIT_ACCESS_A, PSECURITY_DESCRIPTOR, + PULONG, PSECURITY_DESCRIPTOR*); + DWORD BuildSecurityDescriptorW(PTRUSTEE_W, PTRUSTEE_W , ULONG, + PEXPLICIT_ACCESS_W, ULONG, PEXPLICIT_ACCESS_W, PSECURITY_DESCRIPTOR, + PULONG, PSECURITY_DESCRIPTOR*); + VOID BuildTrusteeWithNameA(PTRUSTEE_A, LPSTR); + VOID BuildTrusteeWithNameW(PTRUSTEE_W, LPWSTR); + VOID BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A, POBJECTS_AND_NAME_A, + SE_OBJECT_TYPE, LPSTR, LPSTR, LPSTR); + VOID BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W, POBJECTS_AND_NAME_W, + SE_OBJECT_TYPE, LPWSTR, LPWSTR, LPWSTR); + VOID BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A, POBJECTS_AND_SID, + GUID*, GUID*, PSID); + VOID BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W, POBJECTS_AND_SID, + GUID*, GUID*, PSID); + VOID BuildTrusteeWithSidA(PTRUSTEE_A, PSID); + VOID BuildTrusteeWithSidW(PTRUSTEE_W, PSID); + DWORD GetAuditedPermissionsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK, + PACCESS_MASK); + DWORD GetAuditedPermissionsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK, + PACCESS_MASK); + DWORD GetEffectiveRightsFromAclA(PACL, PTRUSTEE_A, PACCESS_MASK); + DWORD GetEffectiveRightsFromAclW(PACL, PTRUSTEE_W, PACCESS_MASK); + DWORD GetExplicitEntriesFromAclA(PACL, PULONG, PEXPLICIT_ACCESS_A*); + DWORD GetExplicitEntriesFromAclW(PACL, PULONG, PEXPLICIT_ACCESS_W*); + static if (_WIN32_WINNT >= 0x501) { + DWORD GetInheritanceSourceA(LPSTR, SE_OBJECT_TYPE, + SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, + PGENERIC_MAPPING, PINHERITED_FROMA); + DWORD GetInheritanceSourceW(LPWSTR, SE_OBJECT_TYPE, + SECURITY_INFORMATION, BOOL, GUID**, DWORD, PACL, void*, + PGENERIC_MAPPING, PINHERITED_FROMW); + } + DWORD GetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + DWORD GetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + DWORD GetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID*, PSID*, PACL*, PACL*, PSECURITY_DESCRIPTOR*); + TRUSTEE_FORM GetTrusteeFormA(PTRUSTEE_A); + TRUSTEE_FORM GetTrusteeFormW(PTRUSTEE_W); + LPSTR GetTrusteeNameA(PTRUSTEE_A); + LPWSTR GetTrusteeNameW(PTRUSTEE_W); + TRUSTEE_TYPE GetTrusteeTypeA(PTRUSTEE_A); + TRUSTEE_TYPE GetTrusteeTypeW(PTRUSTEE_W); + DWORD LookupSecurityDescriptorPartsA(PTRUSTEE_A*, PTRUSTEE_A*, PULONG, + PEXPLICIT_ACCESS_A*, PULONG, PEXPLICIT_ACCESS_A*, + PSECURITY_DESCRIPTOR); + DWORD LookupSecurityDescriptorPartsW(PTRUSTEE_W*, PTRUSTEE_W*, PULONG, + PEXPLICIT_ACCESS_W*, PULONG, PEXPLICIT_ACCESS_W*, + PSECURITY_DESCRIPTOR); + DWORD SetEntriesInAclA(ULONG, PEXPLICIT_ACCESS_A, PACL, PACL*); + DWORD SetEntriesInAclW(ULONG, PEXPLICIT_ACCESS_W, PACL, PACL*); + DWORD SetNamedSecurityInfoA(LPSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID, PSID, PACL, PACL); + DWORD SetNamedSecurityInfoW(LPWSTR, SE_OBJECT_TYPE, SECURITY_INFORMATION, + PSID, PSID, PACL, PACL); + DWORD SetSecurityInfo(HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION, PSID, + PSID, PACL, PACL); + VOID BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, + PTRUSTEE_A, DWORD, ACCESS_MODE, DWORD); + VOID BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W, LPWSTR, + PTRUSTEE_W, DWORD, ACCESS_MODE, DWORD); + VOID BuildImpersonateTrusteeA(PTRUSTEE_A, PTRUSTEE_A); + VOID BuildImpersonateTrusteeW(PTRUSTEE_W, PTRUSTEE_W); + PTRUSTEE_A GetMultipleTrusteeA(PTRUSTEE_A); + PTRUSTEE_W GetMultipleTrusteeW(PTRUSTEE_W); + MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationA(PTRUSTEE_A); + MULTIPLE_TRUSTEE_OPERATION GetMultipleTrusteeOperationW(PTRUSTEE_W); +} + +version (Unicode) { + alias BuildExplicitAccessWithNameW BuildExplicitAccessWithName; + alias BuildSecurityDescriptorW BuildSecurityDescriptor; + alias BuildTrusteeWithNameW BuildTrusteeWithName; + alias BuildTrusteeWithObjectsAndNameW BuildTrusteeWithObjectsAndName; + alias BuildTrusteeWithObjectsAndSidW BuildTrusteeWithObjectsAndSid; + alias BuildTrusteeWithSidW BuildTrusteeWithSid; + alias GetAuditedPermissionsFromAclW GetAuditedPermissionsFromAcl; + alias GetEffectiveRightsFromAclW GetEffectiveRightsFromAcl; + alias GetExplicitEntriesFromAclW GetExplicitEntriesFromAcl; + alias GetNamedSecurityInfoW GetNamedSecurityInfo; + alias GetTrusteeFormW GetTrusteeForm; + alias GetTrusteeNameW GetTrusteeName; + alias GetTrusteeTypeW GetTrusteeType; + alias LookupSecurityDescriptorPartsW LookupSecurityDescriptorParts; + alias SetEntriesInAclW SetEntriesInAcl; + alias SetNamedSecurityInfoW SetNamedSecurityInfo; + alias BuildImpersonateExplicitAccessWithNameW + BuildImpersonateExplicitAccessWithName; + alias BuildImpersonateTrusteeW BuildImpersonateTrustee; + alias GetMultipleTrusteeW GetMultipleTrustee; + alias GetMultipleTrusteeOperationW GetMultipleTrusteeOperation; +} else { + alias BuildExplicitAccessWithNameA BuildExplicitAccessWithName; + alias BuildSecurityDescriptorA BuildSecurityDescriptor; + alias BuildTrusteeWithNameA BuildTrusteeWithName; + alias BuildTrusteeWithObjectsAndNameA BuildTrusteeWithObjectsAndName; + alias BuildTrusteeWithObjectsAndSidA BuildTrusteeWithObjectsAndSid; + alias BuildTrusteeWithSidA BuildTrusteeWithSid; + alias GetAuditedPermissionsFromAclA GetAuditedPermissionsFromAcl; + alias GetEffectiveRightsFromAclA GetEffectiveRightsFromAcl; + alias GetExplicitEntriesFromAclA GetExplicitEntriesFromAcl; + alias GetNamedSecurityInfoA GetNamedSecurityInfo; + alias GetTrusteeFormA GetTrusteeForm; + alias GetTrusteeNameA GetTrusteeName; + alias GetTrusteeTypeA GetTrusteeType; + alias LookupSecurityDescriptorPartsA LookupSecurityDescriptorParts; + alias SetEntriesInAclA SetEntriesInAcl; + alias SetNamedSecurityInfoA SetNamedSecurityInfo; + alias BuildImpersonateExplicitAccessWithNameA + BuildImpersonateExplicitAccessWithName; + alias BuildImpersonateTrusteeA BuildImpersonateTrustee; + alias GetMultipleTrusteeA GetMultipleTrustee; + alias GetMultipleTrusteeOperationA GetMultipleTrusteeOperation; +} Index: src/win32/aclui.d ================================================================== --- src/win32/aclui.d +++ src/win32/aclui.d @@ -1,120 +1,120 @@ -/***********************************************************************\ -* aclui.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.aclui; -pragma(lib, "aclui.lib"); - -private import win32.w32api; - -static assert (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500, - "win32.aclui is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set, or both Windows2000 and WindowsNTonly are set"); - -import win32.accctrl, win32.commctrl, win32.objbase; -private import win32.basetyps, win32.prsht, win32.unknwn, win32.windef, - win32.winuser; - - -struct SI_OBJECT_INFO { - DWORD dwFlags; - HINSTANCE hInstance; - LPWSTR pszServerName; - LPWSTR pszObjectName; - LPWSTR pszPageTitle; - GUID guidObjectType; -} -alias SI_OBJECT_INFO* PSI_OBJECT_INFO; - -// values for SI_OBJECT_INFO.dwFlags -const DWORD - SI_EDIT_PERMS = 0x00000000, - SI_EDIT_OWNER = 0x00000001, - SI_EDIT_AUDITS = 0x00000002, - SI_CONTAINER = 0x00000004, - SI_READONLY = 0x00000008, - SI_ADVANCED = 0x00000010, - SI_RESET = 0x00000020, - SI_OWNER_READONLY = 0x00000040, - SI_EDIT_PROPERTIES = 0x00000080, - SI_OWNER_RECURSE = 0x00000100, - SI_NO_ACL_PROTECT = 0x00000200, - SI_NO_TREE_APPLY = 0x00000400, - SI_PAGE_TITLE = 0x00000800, - SI_SERVER_IS_DC = 0x00001000, - SI_RESET_DACL_TREE = 0x00004000, - SI_RESET_SACL_TREE = 0x00008000, - SI_OBJECT_GUID = 0x00010000, - SI_EDIT_EFFECTIVE = 0x00020000, - SI_RESET_DACL = 0x00040000, - SI_RESET_SACL = 0x00080000, - SI_RESET_OWNER = 0x00100000, - SI_NO_ADDITIONAL_PERMISSION = 0x00200000, - SI_MAY_WRITE = 0x10000000, - SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER - | SI_EDIT_AUDITS; - -struct SI_ACCESS { - CPtr!(GUID) pguid; - ACCESS_MASK mask; - LPCWSTR pszName; - DWORD dwFlags; -} -alias SI_ACCESS* PSI_ACCESS; - -// values for SI_ACCESS.dwFlags -const DWORD - SI_ACCESS_SPECIFIC = 0x00010000, - SI_ACCESS_GENERAL = 0x00020000, - SI_ACCESS_CONTAINER = 0x00040000, - SI_ACCESS_PROPERTY = 0x00080000; - - -struct SI_INHERIT_TYPE { - CPtr!(GUID) pguid; - ULONG dwFlags; - LPCWSTR pszName; -} -alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE; - -/* values for SI_INHERIT_TYPE.dwFlags - INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE - defined elsewhere */ - -enum SI_PAGE_TYPE { - SI_PAGE_PERM, - SI_PAGE_ADVPERM, - SI_PAGE_AUDIT, - SI_PAGE_OWNER -} - -const uint PSPCB_SI_INITDIALOG = WM_USER + 1; - -interface ISecurityInformation : IUnknown { - HRESULT GetObjectInformation(PSI_OBJECT_INFO); - HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL); - HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - HRESULT GetAccessRights(CPtr!(GUID), DWORD, PSI_ACCESS*, ULONG*, ULONG*); - HRESULT MapGeneric(CPtr!(GUID), UCHAR*, ACCESS_MASK*); - HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*); - HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE); -} -alias ISecurityInformation* LPSECURITYINFO; - -/* Comment from MinGW - * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo - */ - -// FIXME: linkage attribute? -extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation; - -extern (Windows) { - HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi); - BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); -} +/***********************************************************************\ +* aclui.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.aclui; +pragma(lib, "aclui"); + +private import win32.w32api; + +static assert (_WIN32_WINNT >= 0x500, + "win32.aclui is available only if version Windows2000, WindowsXP, Windows2003 " + "or WindowsVista is set"); + +import win32.accctrl, win32.commctrl, win32.objbase; +private import win32.basetyps, win32.prsht, win32.unknwn, win32.windef, + win32.winuser; + + +struct SI_OBJECT_INFO { + DWORD dwFlags; + HINSTANCE hInstance; + LPWSTR pszServerName; + LPWSTR pszObjectName; + LPWSTR pszPageTitle; + GUID guidObjectType; +} +alias SI_OBJECT_INFO* PSI_OBJECT_INFO; + +// values for SI_OBJECT_INFO.dwFlags +const DWORD + SI_EDIT_PERMS = 0x00000000, + SI_EDIT_OWNER = 0x00000001, + SI_EDIT_AUDITS = 0x00000002, + SI_CONTAINER = 0x00000004, + SI_READONLY = 0x00000008, + SI_ADVANCED = 0x00000010, + SI_RESET = 0x00000020, + SI_OWNER_READONLY = 0x00000040, + SI_EDIT_PROPERTIES = 0x00000080, + SI_OWNER_RECURSE = 0x00000100, + SI_NO_ACL_PROTECT = 0x00000200, + SI_NO_TREE_APPLY = 0x00000400, + SI_PAGE_TITLE = 0x00000800, + SI_SERVER_IS_DC = 0x00001000, + SI_RESET_DACL_TREE = 0x00004000, + SI_RESET_SACL_TREE = 0x00008000, + SI_OBJECT_GUID = 0x00010000, + SI_EDIT_EFFECTIVE = 0x00020000, + SI_RESET_DACL = 0x00040000, + SI_RESET_SACL = 0x00080000, + SI_RESET_OWNER = 0x00100000, + SI_NO_ADDITIONAL_PERMISSION = 0x00200000, + SI_MAY_WRITE = 0x10000000, + SI_EDIT_ALL = SI_EDIT_PERMS | SI_EDIT_OWNER + | SI_EDIT_AUDITS; + +struct SI_ACCESS { + const(GUID)* pguid; + ACCESS_MASK mask; + LPCWSTR pszName; + DWORD dwFlags; +} +alias SI_ACCESS* PSI_ACCESS; + +// values for SI_ACCESS.dwFlags +const DWORD + SI_ACCESS_SPECIFIC = 0x00010000, + SI_ACCESS_GENERAL = 0x00020000, + SI_ACCESS_CONTAINER = 0x00040000, + SI_ACCESS_PROPERTY = 0x00080000; + + +struct SI_INHERIT_TYPE { + const(GUID)* pguid; + ULONG dwFlags; + LPCWSTR pszName; +} +alias SI_INHERIT_TYPE* PSI_INHERIT_TYPE; + +/* values for SI_INHERIT_TYPE.dwFlags + INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE + defined elsewhere */ + +enum SI_PAGE_TYPE { + SI_PAGE_PERM, + SI_PAGE_ADVPERM, + SI_PAGE_AUDIT, + SI_PAGE_OWNER +} + +const uint PSPCB_SI_INITDIALOG = WM_USER + 1; + +interface ISecurityInformation : IUnknown { + HRESULT GetObjectInformation(PSI_OBJECT_INFO); + HRESULT GetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR*, BOOL); + HRESULT SetSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + HRESULT GetAccessRights(const(GUID)*, DWORD, PSI_ACCESS*, ULONG*, ULONG*); + HRESULT MapGeneric(const(GUID)*, UCHAR*, ACCESS_MASK*); + HRESULT GetInheritTypes(PSI_INHERIT_TYPE*, ULONG*); + HRESULT PropertySheetPageCallback(HWND, UINT, SI_PAGE_TYPE); +} +alias ISecurityInformation LPSECURITYINFO; + +/* Comment from MinGW + * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo + */ + +// FIXME: linkage attribute? +extern (C) /+DECLSPEC_IMPORT+/ extern const IID IID_ISecurityInformation; + +extern (Windows) { + HPROPSHEETPAGE CreateSecurityPage(LPSECURITYINFO psi); + BOOL EditSecurity(HWND hwndOwner, LPSECURITYINFO psi); +} Index: src/win32/basetsd.d ================================================================== --- src/win32/basetsd.d +++ src/win32/basetsd.d @@ -1,129 +1,159 @@ -/***********************************************************************\ -* basetsd.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.12 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.basetsd; - -/* This template is used in these modules to declare constant pointer types, - * in order to support both D 1.x and 2.x. - */ -template CPtr(T) { - version (D_Version2) { - // must use mixin so that it doesn't cause a syntax error under D1 - mixin("alias const(T)* CPtr;"); - } else { - alias T* CPtr; - } -} - -// [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid -// 'forwatd template reference' to CPtr from winnt.d caused by a circular -// import. - -alias void* HANDLE; - -alias HANDLE* PHANDLE, LPHANDLE; - -version (Win64) { - alias long __int3264; - const ulong ADDRESS_TAG_BIT = 0x40000000000; - - alias long INT_PTR, LONG_PTR; - alias long* PINT_PTR, PLONG_PTR; - alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR; - alias ulong* PUINT_PTR, PULONG_PTR; - alias int HALF_PTR; - alias int* PHALF_PTR; - alias uint UHALF_PTR; - alias uint* PUHALF_PTR; - - /* *To* functions are conditioned out in MinGW. - * Presumably they're not working/tested yet. Comment: - TODO when WIN64 is here - */ -} else { - alias int __int3264; - const uint ADDRESS_TAG_BIT = 0x80000000; - - alias int INT_PTR, LONG_PTR; - alias int* PINT_PTR, PLONG_PTR; - alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR; - alias uint* PUINT_PTR, PULONG_PTR; - alias short HALF_PTR; - alias short* PHALF_PTR; - alias ushort UHALF_PTR; - alias ushort* PUHALF_PTR; - - uint HandleToUlong(HANDLE h) { return cast(uint) h; } - int HandleToLong(HANDLE h) { return cast(int) h; } - HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE) h; } - uint PtrToUlong(CPtr!(void) p) { return cast(uint) p; } - uint PtrToUint(CPtr!(void) p) { return cast(uint) p; } - int PtrToInt(CPtr!(void) p) { return cast(int) p; } - ushort PtrToUshort(CPtr!(void) p) { return cast(ushort) p; } - short PtrToShort(CPtr!(void) p) { return cast(short) p; } - void* IntToPtr(int i) { return cast(void*) i; } - void* UIntToPtr(uint ui) { return cast(void*) ui; } - alias IntToPtr LongToPtr; - alias UIntToPtr ULongToPtr; -} - -alias UIntToPtr UintToPtr, UlongToPtr; - -enum : UINT_PTR { - MAXUINT_PTR = UINT_PTR.max -} - -enum : INT_PTR { - MAXINT_PTR = INT_PTR.max, - MININT_PTR = INT_PTR.min -} - -enum : ULONG_PTR { - MAXULONG_PTR = ULONG_PTR.max -} - -enum : LONG_PTR { - MAXLONG_PTR = LONG_PTR.max, - MINLONG_PTR = LONG_PTR.min -} - -enum : UHALF_PTR { - MAXUHALF_PTR = UHALF_PTR.max -} - -enum : HALF_PTR { - MAXHALF_PTR = HALF_PTR.max, - MINHALF_PTR = HALF_PTR.min -} - -alias byte INT8; -alias byte* PINT8; -alias ubyte UINT8; -alias ubyte* PUINT8; - -alias short INT16; -alias short* PINT16; -alias ushort UINT16; -alias ushort* PUINT16; - -alias int LONG32, INT32; -alias int* PLONG32, PINT32; -alias uint ULONG32, DWORD32, UINT32; -alias uint* PULONG32, PDWORD32, PUINT32; - -alias ULONG_PTR SIZE_T, DWORD_PTR; -alias ULONG_PTR* PSIZE_T, PDWORD_PTR; -alias LONG_PTR SSIZE_T; -alias LONG_PTR* PSSIZE_T; - -alias long LONG64, INT64; -alias long* PLONG64, PINT64; -alias ulong ULONG64, DWORD64, UINT64; -alias ulong* PULONG64, PDWORD64, PUINT64; +/***********************************************************************\ +* basetsd.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.12 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.basetsd; + +/* This template is used in these modules to declare constant pointer types, + * in order to support both D 1.x and 2.x. + * Since removed - now supporting only D2 + */ +/*template CPtr(T) { + version (D_Version2) { + // must use mixin so that it doesn't cause a syntax error under D1 + mixin("alias const(T)* CPtr;"); + } else { + alias T* CPtr; + } +}*/ + +/* [CyberShadow VP 2011.12.22] typedef is now deprecated in D2. + */ +template TypeDef(T) { + version (D_Version2) { + alias T TypeDef; + } else { + // must use mixin so that it doesn't cause a deprecation error under D2 + mixin("typedef T TypeDef;"); + } +} + +// [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid +// 'forwatd template reference' to CPtr from winnt.d caused by a circular +// import. + +alias TypeDef!(void*) HANDLE; +/+struct HANDLE { + const(void)* h; + alias h this; +}+/ + +package template DECLARE_HANDLE(string name, base = HANDLE) { + mixin ("alias " ~ base.stringof ~ " " ~ name ~ ";"); +} +alias HANDLE* PHANDLE, LPHANDLE; + +version (Win64) { + alias long __int3264; + const ulong ADDRESS_TAG_BIT = 0x40000000000; + + alias long INT_PTR, LONG_PTR; + alias long* PINT_PTR, PLONG_PTR; + alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR; + alias ulong* PUINT_PTR, PULONG_PTR; + alias int HALF_PTR; + alias int* PHALF_PTR; + alias uint UHALF_PTR; + alias uint* PUHALF_PTR; + + uint HandleToULong(void* h) { return(cast(uint) cast(ULONG_PTR) h); } + int HandleToLong(void* h) { return(cast(int) cast(LONG_PTR) h); } + void* ULongToHandle(uint h) { return(cast(void*) cast(UINT_PTR) h); } + void* LongToHandle(int h) { return(cast(void*) cast(INT_PTR) h); } + uint PtrToUlong(void* p) { return(cast(uint) cast(ULONG_PTR) p); } + uint PtrToUint(void* p) { return(cast(uint) cast(UINT_PTR) p); } + ushort PtrToUshort(void* p) { return(cast(ushort) cast(uint) cast(ULONG_PTR) p); } + int PtrToLong(void* p) { return(cast(int) cast(LONG_PTR) p); } + int PtrToInt(void* p) { return(cast(int) cast(INT_PTR) p); } + short PtrToShort(void* p) { return(cast(short) cast(int) cast(LONG_PTR) p); } + void* IntToPtr(int i) { return(cast(void*) cast(INT_PTR) i); } + void* UIntToPtr(uint ui) { return(cast(void*) cast(UINT_PTR) ui); } + void* LongToPtr(int l) { return(cast(void*) cast(LONG_PTR) l); } + void* ULongToPtr(uint ul) { return(cast(void*) cast(ULONG_PTR) ul); } + +} else { + alias int __int3264; + const uint ADDRESS_TAG_BIT = 0x80000000; + + alias int INT_PTR, LONG_PTR; + alias int* PINT_PTR, PLONG_PTR; + alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR; + alias uint* PUINT_PTR, PULONG_PTR; + alias short HALF_PTR; + alias short* PHALF_PTR; + alias ushort UHALF_PTR; + alias ushort* PUHALF_PTR; + + uint HandleToUlong(HANDLE h) { return cast(uint) h; } + int HandleToLong(HANDLE h) { return cast(int) h; } + HANDLE LongToHandle(LONG_PTR h) { return cast(HANDLE)h; } + uint PtrToUlong(const(void)* p) { return cast(uint) p; } + uint PtrToUint(const(void)* p) { return cast(uint) p; } + int PtrToInt(const(void)* p) { return cast(int) p; } + ushort PtrToUshort(const(void)* p) { return cast(ushort) p; } + short PtrToShort(const(void)* p) { return cast(short) p; } + void* IntToPtr(int i) { return cast(void*) i; } + void* UIntToPtr(uint ui) { return cast(void*) ui; } + alias IntToPtr LongToPtr; + alias UIntToPtr ULongToPtr; +} + +alias UIntToPtr UintToPtr, UlongToPtr; + +enum : UINT_PTR { + MAXUINT_PTR = UINT_PTR.max +} + +enum : INT_PTR { + MAXINT_PTR = INT_PTR.max, + MININT_PTR = INT_PTR.min +} + +enum : ULONG_PTR { + MAXULONG_PTR = ULONG_PTR.max +} + +enum : LONG_PTR { + MAXLONG_PTR = LONG_PTR.max, + MINLONG_PTR = LONG_PTR.min +} + +enum : UHALF_PTR { + MAXUHALF_PTR = UHALF_PTR.max +} + +enum : HALF_PTR { + MAXHALF_PTR = HALF_PTR.max, + MINHALF_PTR = HALF_PTR.min +} + +alias byte INT8; +alias byte* PINT8; +alias ubyte UINT8; +alias ubyte* PUINT8; + +alias short INT16; +alias short* PINT16; +alias ushort UINT16; +alias ushort* PUINT16; + +alias int LONG32, INT32; +alias int* PLONG32, PINT32; +alias uint ULONG32, DWORD32, UINT32; +alias uint* PULONG32, PDWORD32, PUINT32; + +alias ULONG_PTR SIZE_T, DWORD_PTR; +alias ULONG_PTR* PSIZE_T, PDWORD_PTR; +alias LONG_PTR SSIZE_T; +alias LONG_PTR* PSSIZE_T; + +alias long LONG64, INT64; +alias long* PLONG64, PINT64; +alias ulong ULONG64, DWORD64, UINT64; +alias ulong* PULONG64, PDWORD64, PUINT64; Index: src/win32/basetyps.d ================================================================== --- src/win32/basetyps.d +++ src/win32/basetyps.d @@ -1,24 +1,24 @@ -/***********************************************************************\ -* basetyps.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.basetyps; - -private import win32.windef, win32.basetsd; - -align(1) struct GUID { // size is 16 - DWORD Data1; - WORD Data2; - WORD Data3; - BYTE[8] Data4; -} -alias GUID UUID, IID, CLSID, FMTID, uuid_t; -alias GUID* LPGUID, LPCLSID, LPIID; -alias CPtr!(GUID) REFGUID, REFIID, REFCLSID, REFFMTID; - -alias uint error_status_t, PROPID; +/***********************************************************************\ +* basetyps.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.basetyps; + +private import win32.windef, win32.basetsd; + +align(1) struct GUID { // size is 16 + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE[8] Data4; +} +alias GUID UUID, IID, CLSID, FMTID, uuid_t; +alias GUID* LPGUID, LPCLSID, LPIID; +alias const(GUID)* REFGUID, REFIID, REFCLSID, REFFMTID; + +alias uint error_status_t, PROPID; Index: src/win32/cderr.d ================================================================== --- src/win32/cderr.d +++ src/win32/cderr.d @@ -1,50 +1,50 @@ -/***********************************************************************\ -* cderr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.cderr; - -enum { - CDERR_DIALOGFAILURE = 0xFFFF, - CDERR_GENERALCODES = 0x0000, - CDERR_STRUCTSIZE, - CDERR_INITIALIZATION, - CDERR_NOTEMPLATE, - CDERR_NOHINSTANCE, - CDERR_LOADSTRFAILURE, - CDERR_FINDRESFAILURE, - CDERR_LOADRESFAILURE, - CDERR_LOCKRESFAILURE, - CDERR_MEMALLOCFAILURE, - CDERR_MEMLOCKFAILURE, - CDERR_NOHOOK, - CDERR_REGISTERMSGFAIL, - PDERR_PRINTERCODES = 0x1000, - PDERR_SETUPFAILURE, - PDERR_PARSEFAILURE, - PDERR_RETDEFFAILURE, - PDERR_LOADDRVFAILURE, - PDERR_GETDEVMODEFAIL, - PDERR_INITFAILURE, - PDERR_NODEVICES, - PDERR_NODEFAULTPRN, - PDERR_DNDMMISMATCH, - PDERR_CREATEICFAILURE, - PDERR_PRINTERNOTFOUND, - PDERR_DEFAULTDIFFERENT, - CFERR_CHOOSEFONTCODES = 0x2000, - CFERR_NOFONTS, - CFERR_MAXLESSTHANMIN, - FNERR_FILENAMECODES = 0x3000, - FNERR_SUBCLASSFAILURE, - FNERR_INVALIDFILENAME, - FNERR_BUFFERTOOSMALL, - FRERR_FINDREPLACECODES = 0x4000, - FRERR_BUFFERLENGTHZERO, - CCERR_CHOOSECOLORCODES = 0x5000 -} +/***********************************************************************\ +* cderr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.cderr; + +enum { + CDERR_DIALOGFAILURE = 0xFFFF, + CDERR_GENERALCODES = 0x0000, + CDERR_STRUCTSIZE, + CDERR_INITIALIZATION, + CDERR_NOTEMPLATE, + CDERR_NOHINSTANCE, + CDERR_LOADSTRFAILURE, + CDERR_FINDRESFAILURE, + CDERR_LOADRESFAILURE, + CDERR_LOCKRESFAILURE, + CDERR_MEMALLOCFAILURE, + CDERR_MEMLOCKFAILURE, + CDERR_NOHOOK, + CDERR_REGISTERMSGFAIL, + PDERR_PRINTERCODES = 0x1000, + PDERR_SETUPFAILURE, + PDERR_PARSEFAILURE, + PDERR_RETDEFFAILURE, + PDERR_LOADDRVFAILURE, + PDERR_GETDEVMODEFAIL, + PDERR_INITFAILURE, + PDERR_NODEVICES, + PDERR_NODEFAULTPRN, + PDERR_DNDMMISMATCH, + PDERR_CREATEICFAILURE, + PDERR_PRINTERNOTFOUND, + PDERR_DEFAULTDIFFERENT, + CFERR_CHOOSEFONTCODES = 0x2000, + CFERR_NOFONTS, + CFERR_MAXLESSTHANMIN, + FNERR_FILENAMECODES = 0x3000, + FNERR_SUBCLASSFAILURE, + FNERR_INVALIDFILENAME, + FNERR_BUFFERTOOSMALL, + FRERR_FINDREPLACECODES = 0x4000, + FRERR_BUFFERLENGTHZERO, + CCERR_CHOOSECOLORCODES = 0x5000 +} Index: src/win32/cguid.d ================================================================== --- src/win32/cguid.d +++ src/win32/cguid.d @@ -1,13 +1,13 @@ -/***********************************************************************\ -* cguid.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ +/***********************************************************************\ +* cguid.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ module win32.cguid; - + private import win32.basetyps; Index: src/win32/comcat.d ================================================================== --- src/win32/comcat.d +++ src/win32/comcat.d @@ -1,73 +1,73 @@ -/***********************************************************************\ -* comcat.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.comcat; - -import win32.windows, win32.ole2; -private import win32.basetyps, win32.cguid, win32.objbase, win32.unknwn, - win32.windef, win32.wtypes; - -alias IEnumGUID* LPENUMGUID; - -interface IEnumGUID : IUnknown { - HRESULT Next(ULONG, GUID*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMGUID*); -} - -alias GUID CATID; -alias REFGUID REFCATID; -alias GUID_NULL CATID_NULL; -alias IsEqualGUID IsEqualCATID; - -struct CATEGORYINFO { - CATID catid; - LCID lcid; - OLECHAR[128] szDescription; -} -alias CATEGORYINFO* LPCATEGORYINFO; - -alias IEnumGUID IEnumCATID; -alias LPENUMGUID LPENUMCATID; -alias IID_IEnumGUID IID_IEnumCATID; - -alias IEnumGUID IEnumCLSID; -alias LPENUMGUID LPENUMCLSID; -alias IID_IEnumGUID IID_IEnumCLSID; - -interface ICatInformation : IUnknown { - HRESULT EnumCategories(LCID, LPENUMCATEGORYINFO*); - HRESULT GetCategoryDesc(REFCATID, LCID, PWCHAR*); - HRESULT EnumClassesOfCategories(ULONG, CATID*, ULONG, CATID*, - LPENUMCLSID*); - HRESULT IsClassOfCategories(REFCLSID, ULONG, CATID*, ULONG, CATID*); - HRESULT EnumImplCategoriesOfClass(REFCLSID, LPENUMCATID*); - HRESULT EnumReqCategoriesOfClass(REFCLSID, LPENUMCATID*); -} -alias ICatInformation* LPCATINFORMATION; - -interface ICatRegister : IUnknown { - HRESULT RegisterCategories(ULONG, CATEGORYINFO*); - HRESULT UnRegisterCategories(ULONG, CATID*); - HRESULT RegisterClassImplCategories(REFCLSID, ULONG, CATID*); - HRESULT UnRegisterClassImplCategories(REFCLSID, ULONG, CATID*); - HRESULT RegisterClassReqCategories(REFCLSID, ULONG, CATID*); - HRESULT UnRegisterClassReqCategories(REFCLSID, ULONG, CATID*); -} -alias ICatRegister* LPCATREGISTER; - -interface IEnumCATEGORYINFO : IUnknown { - HRESULT Next(ULONG, CATEGORYINFO*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCATEGORYINFO*); -} -alias IEnumCATEGORYINFO* LPENUMCATEGORYINFO; +/***********************************************************************\ +* comcat.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.comcat; + +import win32.windows, win32.ole2; +private import win32.basetyps, win32.cguid, win32.objbase, win32.unknwn, + win32.windef, win32.wtypes; + +alias IEnumGUID LPENUMGUID; + +interface IEnumGUID : IUnknown { + HRESULT Next(ULONG, GUID*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMGUID*); +} + +alias GUID CATID; +alias REFGUID REFCATID; +alias GUID_NULL CATID_NULL; +alias IsEqualGUID IsEqualCATID; + +struct CATEGORYINFO { + CATID catid; + LCID lcid; + OLECHAR[128] szDescription; +} +alias CATEGORYINFO* LPCATEGORYINFO; + +alias IEnumGUID IEnumCATID; +alias LPENUMGUID LPENUMCATID; +alias IID_IEnumGUID IID_IEnumCATID; + +alias IEnumGUID IEnumCLSID; +alias LPENUMGUID LPENUMCLSID; +alias IID_IEnumGUID IID_IEnumCLSID; + +interface ICatInformation : IUnknown { + HRESULT EnumCategories(LCID, LPENUMCATEGORYINFO*); + HRESULT GetCategoryDesc(REFCATID, LCID, PWCHAR*); + HRESULT EnumClassesOfCategories(ULONG, CATID*, ULONG, CATID*, + LPENUMCLSID*); + HRESULT IsClassOfCategories(REFCLSID, ULONG, CATID*, ULONG, CATID*); + HRESULT EnumImplCategoriesOfClass(REFCLSID, LPENUMCATID*); + HRESULT EnumReqCategoriesOfClass(REFCLSID, LPENUMCATID*); +} +alias ICatInformation LPCATINFORMATION; + +interface ICatRegister : IUnknown { + HRESULT RegisterCategories(ULONG, CATEGORYINFO*); + HRESULT UnRegisterCategories(ULONG, CATID*); + HRESULT RegisterClassImplCategories(REFCLSID, ULONG, CATID*); + HRESULT UnRegisterClassImplCategories(REFCLSID, ULONG, CATID*); + HRESULT RegisterClassReqCategories(REFCLSID, ULONG, CATID*); + HRESULT UnRegisterClassReqCategories(REFCLSID, ULONG, CATID*); +} +alias ICatRegister LPCATREGISTER; + +interface IEnumCATEGORYINFO : IUnknown { + HRESULT Next(ULONG, CATEGORYINFO*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCATEGORYINFO*); +} +alias IEnumCATEGORYINFO LPENUMCATEGORYINFO; Index: src/win32/commctrl.d ================================================================== --- src/win32/commctrl.d +++ src/win32/commctrl.d @@ -1,5874 +1,6283 @@ -/***********************************************************************\ -* commctrl.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.12 * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.commctrl; -pragma(lib, "comctl32.lib"); - -private import win32.w32api, win32.windef, win32.winuser; -private import win32.winbase; // for SYSTEMTIME -private import win32.objfwd; // for LPSTREAM - -import win32.prsht; - -const COMCTL32_VERSION = 6; - -const TCHAR[] - DRAGLISTMSGSTRING = "commctrl_DragListMsg", - HOTKEY_CLASS = "msctls_hotkey32", - PROGRESS_CLASS = "msctls_progress32", - STATUSCLASSNAME = "msctls_statusbar32", - TOOLBARCLASSNAME = "ToolbarWindow32", - TOOLTIPS_CLASS = "tooltips_class32", - TRACKBAR_CLASS = "msctls_trackbar32", - UPDOWN_CLASS = "msctls_updown32", - ANIMATE_CLASS = "SysAnimate32", - DATETIMEPICK_CLASS = "SysDateTimePick32", - MONTHCAL_CLASS = "SysMonthCal32", - REBARCLASSNAME = "ReBarWindow32", - WC_COMBOBOXEX = "ComboBoxEx32", - WC_IPADDRESS = "SysIPAddress32", - WC_LISTVIEW = "SysListView32", - WC_TABCONTROL = "SysTabControl32", - WC_TREEVIEW = "SysTreeView32", - WC_HEADER = "SysHeader32", - WC_PAGESCROLLER = "SysPager", - WC_NATIVEFONTCTL = "NativeFontCtl", - WC_BUTTON = "Button", - WC_STATIC = "Static", - WC_EDIT = "Edit", - WC_LISTBOX = "ListBox", - WC_COMBOBOX = "ComboBox", - WC_SCROLLBAR = "ScrollBar", - WC_LINKA = "SysLink"; - -enum { - LVM_FIRST = 0x1000, - TV_FIRST = 0x1100, - HDM_FIRST = 0x1200 -} - -enum { - ACM_OPENA = WM_USER + 100, - ACM_PLAY = WM_USER + 101, - ACM_STOP = WM_USER + 102, - ACM_OPENW = WM_USER + 103 -} - -enum { - ACN_START = 1, - ACN_STOP -} - -enum { - CBEIF_TEXT = 0x00000001, - CBEIF_IMAGE = 0x00000002, - CBEIF_SELECTEDIMAGE = 0x00000004, - CBEIF_OVERLAY = 0x00000008, - CBEIF_INDENT = 0x00000010, - CBEIF_LPARAM = 0x00000020, - CBEIF_DI_SETITEM = 0x10000000 -} - -enum { - RBN_FIRST = -831U, - RBN_LAST = -859U, - MCN_FIRST = -750U, - MCN_LAST = -759U, - DTN_FIRST = -760U, - DTN_LAST = -799U, - CBEN_FIRST = -800U, - CBEN_LAST = -830U -} - -enum { - CBEN_INSERTITEM = CBEN_FIRST - 1, - CBEN_DELETEITEM = CBEN_FIRST - 2, - CBEN_BEGINEDIT = CBEN_FIRST - 4, - CBEN_ENDEDITA = CBEN_FIRST - 5, - CBEN_ENDEDITW = CBEN_FIRST - 6 -} - -enum { - CBENF_KILLFOCUS = 1, - CBENF_RETURN, - CBENF_ESCAPE, - CBENF_DROPDOWN // = 4 -} - -const CBEMAXSTRLEN = 260; - -enum { - DL_BEGINDRAG = 1157, - DL_CANCELDRAG = 1160, - DL_DRAGGING = 1158, - DL_DROPPED = 1159, - DL_CURSORSET = 0, - DL_STOPCURSOR = 1, - DL_COPYCURSOR = 2, - DL_MOVECURSOR = 3 -} - -enum { - CCS_TOP = 1, - CCS_NOMOVEY = 2, - CCS_BOTTOM = 3, - CCS_NORESIZE = 4, - CCS_NOPARENTALIGN = 8, - CCS_ADJUSTABLE = 32, - CCS_NODIVIDER = 64 -} -static if (_WIN32_IE >= 0x300) { - enum { - CCS_VERT = 128, - CCS_LEFT = 129, - CCS_NOMOVEX = 130, - CCS_RIGHT = 131 - } -} - -enum { - ACS_CENTER = 0x0001, - ACS_TRANSPARENT = 0x0002, - ACS_AUTOPLAY = 0x0004, - ACS_TIMER = 0x0008 -} - -enum { - PGS_VERT = 0x00000000, - PGS_HORZ = 0x00000001, - PGS_AUTOSCROLL = 0x00000002, - PGS_DRAGNDROP = 0x00000004 -} - -const CMB_MASKED = 2; - -const MINSYSCOMMAND = SC_SIZE; - -enum { - SBT_OWNERDRAW = 0x1000, - SBT_NOBORDERS = 256, - SBT_POPOUT = 512, - SBT_RTLREADING = 1024 -} - -enum { - SB_SETTEXTA = WM_USER + 1, - SB_SETTEXTW = WM_USER + 11, - SB_GETTEXTA = WM_USER + 2, - SB_GETTEXTW = WM_USER + 13, - SB_GETTEXTLENGTHA = WM_USER + 3, - SB_GETTEXTLENGTHW = WM_USER + 12, - SB_SETPARTS = WM_USER + 4, - SB_GETPARTS = WM_USER + 6, - SB_GETBORDERS = WM_USER + 7, - SB_SETMINHEIGHT = WM_USER + 8, - SB_SIMPLE = WM_USER + 9, - SB_GETRECT = WM_USER + 10 -} - -enum { - MSGF_COMMCTRL_BEGINDRAG = 0x4200, - MSGF_COMMCTRL_SIZEHEADER = 0x4201, - MSGF_COMMCTRL_DRAGSELECT = 0x4202, - MSGF_COMMCTRL_TOOLBARCUST = 0x4203 -} - -enum { - 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 -} - -enum { - ILCF_MOVE, - ILCF_SWAP -} - -enum { - ILS_NORMAL = 0, - ILS_GLOW = 1, - ILS_SHADOW = 2, - ILS_SATURATE = 4, - ILS_ALPHA = 8, - ILD_BLEND25 = 2, - ILD_BLEND50 = 4, - ILD_SELECTED = 4, - ILD_BLEND = 4, - ILD_FOCUS = 2, - ILD_MASK = 16, - ILD_NORMAL = 0, - ILD_TRANSPARENT = 1, - ILD_IMAGE = 0x0020, - ILD_ROP = 0x0040, - ILD_OVERLAYMASK = 0x0F00, - ILD_PRESERVEALPHA = 0x1000, - ILD_SCALE = 0x2000, - ILD_DPISCALE = 0x4000 -} - -enum { - HDS_HORZ = 0, - HDS_BUTTONS = 2, - HDS_HIDDEN = 8 -} -static if (_WIN32_IE >= 0x400) { - enum { - HDS_HOTTRACK = 4, - HDS_DRAGDROP = 0x0040, - HDS_FULLDRAG = 0x0080 - } -} -static if (_WIN32_IE >= 0x500) { - enum { - HDS_FILTERBAR = 0x0100 - } -} - -enum { - NM_FIRST = 0, - NM_LAST = -99U, - LVN_FIRST = -100U, - LVN_LAST = -199U, - HDN_FIRST = -300U, - HDN_LAST = -399U, - TVN_FIRST = -400U, - TVN_LAST = -499U, - TTN_FIRST = -520U, - TTN_LAST = -549U, - TCN_FIRST = -550U, - TCN_LAST = -580U, - CDN_FIRST = -601U, /* also in commdlg.h */ - CDN_LAST = -699U, - TBN_FIRST = -700U, - TBN_LAST = -720U, - UDN_FIRST = -721U, - UDN_LAST = -740U -} -/*static if (_WIN32_IE >= 0x300) { - enum { - RBN_FIRST = -831U, - RBN_LAST = -859U, - MCN_FIRST = -750U, - MCN_LAST = -759U, - DTN_FIRST = -760U, - DTN_LAST = -799U, - CBEN_FIRST = -800U, - CBEN_LAST = -830U - } -}*/ -static if (_WIN32_IE >= 0x400) { - enum { - IPN_FIRST = -860U, - IPN_LAST = -879U, - IPN_FIELDCHANGED = IPN_FIRST, - SBN_FIRST = -880U, - SBN_LAST = -899U, - PGN_FIRST = -900U, - PGN_LAST = -950U, - PGN_SCROLL = PGN_FIRST-1, - PGN_CALCSIZE = PGN_FIRST-2 - } -} - -enum { - HDI_WIDTH = 1, - HDI_HEIGHT = 1, - HDI_TEXT = 2, - HDI_FORMAT = 4, - HDI_LPARAM = 8, - HDI_BITMAP = 16 -} -static if (_WIN32_IE >= 0x300) { - enum { - HDI_IMAGE = 32, - HDI_DI_SETITEM = 64, - HDI_ORDER = 128 - } -} -static if (_WIN32_IE >= 0x500) { - enum { - HDI_FILTER = 256 - } -} - -enum { - CBES_EX_NOEDITIMAGE = 0x00000001, - CBES_EX_NOEDITIMAGEINDENT = 0x00000002, - CBES_EX_PATHWORDBREAKPROC = 0x00000004 -} -static if (_WIN32_IE >= 0x400) { - enum { - CBES_EX_NOSIZELIMIT = 0x00000008, - CBES_EX_CASESENSITIVE = 0x00000010, - CBEN_GETDISPINFOA = CBEN_FIRST - 0, - CBEN_GETDISPINFOW = CBEN_FIRST - 7, - CBEN_DRAGBEGINA = CBEN_FIRST - 8, - CBEN_DRAGBEGINW = CBEN_FIRST - 9 - } -} - -enum { - HDF_LEFT, - HDF_RIGHT, - HDF_CENTER, - HDF_JUSTIFYMASK, - HDF_RTLREADING, // = 4 - HDF_OWNERDRAW = 0x8000, - HDF_STRING = 0x4000, - HDF_BITMAP = 0x2000 -} -static if (_WIN32_IE >= 0x300) { - enum { - HDF_BITMAP_ON_RIGHT = 0x1000, - HDF_IMAGE = 0x0800 - } -} - -enum { - CCM_FIRST = 0x2000, - CCM_LAST = CCM_FIRST + 0x200, - CCM_SETBKCOLOR = 8193, - CCM_SETCOLORSCHEME = 8194, - CCM_GETCOLORSCHEME = 8195, - CCM_GETDROPTARGET = 8196, - CCM_SETUNICODEFORMAT = 8197, - CCM_GETUNICODEFORMAT = 8198, - CCM_SETVERSION = 0x2007, - CCM_GETVERSION = 0x2008, - CCM_SETNOTIFYWINDOW = 0x2009 -} - -enum { - HDM_GETITEMCOUNT = HDM_FIRST, - HDM_INSERTITEMA = HDM_FIRST + 1, - HDM_INSERTITEMW = HDM_FIRST + 10, - HDM_DELETEITEM = HDM_FIRST + 2, - HDM_GETITEMA = HDM_FIRST + 3, - HDM_GETITEMW = HDM_FIRST + 11, - HDM_SETITEMA = HDM_FIRST + 4, - HDM_SETITEMW = HDM_FIRST + 12, - HDM_LAYOUT = HDM_FIRST + 5 -} -static if (_WIN32_IE >= 0x300) { - enum { - HDM_GETITEMRECT = HDM_FIRST + 7, - HDM_SETIMAGELIST = HDM_FIRST + 8, - HDM_GETIMAGELIST = HDM_FIRST + 9, - HDM_ORDERTOINDEX = HDM_FIRST + 15, - HDM_CREATEDRAGIMAGE = HDM_FIRST + 16, - HDM_GETORDERARRAY = HDM_FIRST + 17, - HDM_SETORDERARRAY = HDM_FIRST + 18, - HDM_SETHOTDIVIDER = HDM_FIRST + 19 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT - } -} - -enum { - HHT_NOWHERE = 1, - HHT_ONHEADER = 2, - HHT_ONDIVIDER = 4, - HHT_ONDIVOPEN = 8, - HHT_ABOVE = 256, - HHT_BELOW = 512, - HHT_TORIGHT = 1024, - HHT_TOLEFT = 2048 -} - -enum { - HDM_HITTEST = HDM_FIRST + 6 -} - -enum { - HDN_ITEMCHANGINGA = HDN_FIRST -0, - HDN_ITEMCHANGINGW = HDN_FIRST -20, - HDN_ITEMCHANGEDA = HDN_FIRST -1, - HDN_ITEMCHANGEDW = HDN_FIRST -21, - HDN_ITEMCLICKA = HDN_FIRST -2, - HDN_ITEMCLICKW = HDN_FIRST -22, - HDN_ITEMDBLCLICKA = HDN_FIRST -3, - HDN_ITEMDBLCLICKW = HDN_FIRST -23, - HDN_DIVIDERDBLCLICKA = HDN_FIRST -5, - HDN_DIVIDERDBLCLICKW = HDN_FIRST -25, - HDN_BEGINTRACKA = HDN_FIRST -6, - HDN_BEGINTRACKW = HDN_FIRST -26, - HDN_ENDTRACKA = HDN_FIRST -7, - HDN_ENDTRACKW = HDN_FIRST -27, - HDN_TRACKA = HDN_FIRST -8, - HDN_TRACKW = HDN_FIRST -28 -} -static if (_WIN32_IE >= 0x300) { - enum { - HDN_ENDDRAG = (HDN_FIRST-11), - HDN_BEGINDRAG = (HDN_FIRST-10), - HDN_GETDISPINFOA = (HDN_FIRST-9), - HDN_GETDISPINFOW = (HDN_FIRST-29) - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - HICF_OTHER = 0x00, - HICF_MOUSE = 0x01, - HICF_ARROWKEYS = 0x02, - HICF_ACCELERATOR = 0x04, - HICF_DUPACCEL = 0x08, - HICF_ENTERING = 0x10, - HICF_LEAVING = 0x20, - HICF_RESELECT = 0x40, - HICF_LMOUSE = 0x80, - HICF_TOGGLEDROPDOWN = 0x100 - } -} - -enum { - IPM_CLEARADDRESS = WM_USER + 100, - IPM_SETADDRESS = WM_USER + 101, - IPM_GETADDRESS = WM_USER + 102, - IPM_SETRANGE = WM_USER + 103, - IPM_SETFOCUS = WM_USER + 104, - IPM_ISBLANK = WM_USER + 105 -} - -static if (_WIN32_IE >= 0x500) { - enum { - I_INDENTCALLBACK = -1, - I_IMAGENONE = -2 - } -} - -enum { - TBSTATE_CHECKED = 1, - TBSTATE_PRESSED = 2, - TBSTATE_ENABLED = 4, - TBSTATE_HIDDEN = 8, - TBSTATE_INDETERMINATE = 16, - TBSTATE_WRAP = 32 -} -static if (_WIN32_IE >= 0x300) { - enum { - TBSTATE_ELLIPSES = 0x40 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TBSTATE_MARKED = 0x0080 - } -} - -enum { - TBSTYLE_BUTTON = 0, - TBSTYLE_SEP = 1, - TBSTYLE_CHECK = 2, - TBSTYLE_GROUP = 4, - TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK -} -static if (_WIN32_IE >= 0x300) { - enum { - TBSTYLE_DROPDOWN = 8 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TBSTYLE_AUTOSIZE = 16, - TBSTYLE_NOPREFIX = 32 - } -} -enum { - TBSTYLE_TOOLTIPS = 256, - TBSTYLE_WRAPABLE = 512, - TBSTYLE_ALTDRAG = 1024 -} -static if (_WIN32_IE >= 0x300) { - enum { - TBSTYLE_FLAT = 2048, - TBSTYLE_LIST = 4096, - TBSTYLE_CUSTOMERASE = 8192 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TBSTYLE_REGISTERDROP = 0x4000, - TBSTYLE_TRANSPARENT = 0x8000, - TBSTYLE_EX_DRAWDDARROWS = 0x00000001 - } -} -static if (_WIN32_IE >= 0x501) { - enum { - TBSTYLE_EX_MIXEDBUTTONS = 8, - TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16 - } -} -static if (_WIN32_WINNT >= 0x501) { - enum { - TBSTYLE_EX_DOUBLEBUFFER = 0x80 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - BTNS_BUTTON = TBSTYLE_BUTTON, - BTNS_SEP = TBSTYLE_SEP, - BTNS_CHECK = TBSTYLE_CHECK, - BTNS_GROUP = TBSTYLE_GROUP, - BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP, - BTNS_DROPDOWN = TBSTYLE_DROPDOWN, - BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE, - BTNS_NOPREFIX = TBSTYLE_NOPREFIX, - BTNS_WHOLEDROPDOWN = 0x0080 - } -} -static if (_WIN32_IE >= 0x501) { - enum { - BTNS_SHOWTEXT = 0x0040 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TBCDRF_NOEDGES = 0x10000, - TBCDRF_HILITEHOTTRACK = 0x20000, - TBCDRF_NOOFFSET = 0x40000, - TBCDRF_NOMARK = 0x80000, - TBCDRF_NOETCHEDEFFECT = 0x100000 - } -} - -const HINST_COMMCTRL = cast(HINSTANCE) (-1); - -enum { - IDB_STD_SMALL_COLOR, - IDB_STD_LARGE_COLOR, - IDB_VIEW_SMALL_COLOR = 4, - IDB_VIEW_LARGE_COLOR = 5 -} -static if (_WIN32_IE >= 0x300) { - enum { - IDB_HIST_SMALL_COLOR = 8, - IDB_HIST_LARGE_COLOR = 9 - } -} - -enum { - STD_CUT, - STD_COPY, - STD_PASTE, - STD_UNDO, - STD_REDOW, - STD_DELETE, - STD_FILENEW, - STD_FILEOPEN, - STD_FILESAVE, - STD_PRINTPRE, - STD_PROPERTIES, - STD_HELP, - STD_FIND, - STD_REPLACE, - STD_PRINT // = 14 -} - -enum { - VIEW_LARGEICONS, - VIEW_SMALLICONS, - VIEW_LIST, - VIEW_DETAILS, - VIEW_SORTNAME, - VIEW_SORTSIZE, - VIEW_SORTDATE, - VIEW_SORTTYPE, - VIEW_PARENTFOLDER, - VIEW_NETCONNECT, - VIEW_NETDISCONNECT, - VIEW_NEWFOLDER // = 11 -} - -enum { - TB_ENABLEBUTTON = WM_USER + 1, - TB_CHECKBUTTON, - TB_PRESSBUTTON, - TB_HIDEBUTTON, - TB_INDETERMINATE, // = WM_USER + 5, - TB_ISBUTTONENABLED = WM_USER + 9, - TB_ISBUTTONCHECKED, - TB_ISBUTTONPRESSED, - TB_ISBUTTONHIDDEN, - TB_ISBUTTONINDETERMINATE, // = WM_USER + 13, - TB_SETSTATE = WM_USER + 17, - TB_GETSTATE = WM_USER + 18, - TB_ADDBITMAP = WM_USER + 19, - TB_DELETEBUTTON = WM_USER + 22, - TB_GETBUTTON, - TB_BUTTONCOUNT, - TB_COMMANDTOINDEX, - TB_SAVERESTOREA, - TB_CUSTOMIZE, - TB_ADDSTRINGA, - TB_GETITEMRECT, - TB_BUTTONSTRUCTSIZE, - TB_SETBUTTONSIZE, - TB_SETBITMAPSIZE, - TB_AUTOSIZE, // = WM_USER + 33, - TB_GETTOOLTIPS = WM_USER + 35, - TB_SETTOOLTIPS = WM_USER + 36, - TB_SETPARENT = WM_USER + 37, - TB_SETROWS = WM_USER + 39, - TB_GETROWS, - TB_GETBITMAPFLAGS, - TB_SETCMDID, - TB_CHANGEBITMAP, - TB_GETBITMAP, - TB_GETBUTTONTEXTA, - TB_REPLACEBITMAP, // = WM_USER + 46, - TB_GETBUTTONSIZE = WM_USER + 58, - TB_SETBUTTONWIDTH = WM_USER + 59, - TB_GETBUTTONTEXTW = WM_USER + 75, - TB_SAVERESTOREW = WM_USER + 76, - TB_ADDSTRINGW = WM_USER + 77, -} -static if (_WIN32_IE >= 0x400) { - enum { - TB_MARKBUTTON = WM_USER + 6 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TB_ADDBUTTONSA = WM_USER + 20, - TB_INSERTBUTTONA = WM_USER + 21 - } -} else { - enum { - TB_ADDBUTTONS = WM_USER + 20, - TB_INSERTBUTTON = WM_USER + 21 - } -} -static if (_WIN32_IE >= 0x300) { - enum { - TB_SETINDENT = WM_USER + 47, - TB_SETIMAGELIST, - TB_GETIMAGELIST, - TB_LOADIMAGES, - TB_GETRECT, - TB_SETHOTIMAGELIST, - TB_GETHOTIMAGELIST, - TB_SETDISABLEDIMAGELIST, - TB_GETDISABLEDIMAGELIST, - TB_SETSTYLE, - TB_GETSTYLE, - //TB_GETBUTTONSIZE, - //TB_SETBUTTONWIDTH, - TB_SETMAXTEXTROWS, - TB_GETTEXTROWS // = WM_USER + 61 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TB_GETOBJECT = WM_USER + 62, - TB_GETBUTTONINFOW, - TB_SETBUTTONINFOW, - TB_GETBUTTONINFOA, - TB_SETBUTTONINFOA, - TB_INSERTBUTTONW, - TB_ADDBUTTONSW, - TB_HITTEST, // = WM_USER + 69 - TB_SETEXTENDEDSTYLE = WM_USER + 84, - TB_GETEXTENDEDSTYLE = WM_USER + 85, - TB_SETDRAWTEXTFLAGS = WM_USER + 70, - TB_GETHOTITEM, - TB_SETHOTITEM, - TB_SETANCHORHIGHLIGHT, - TB_GETANCHORHIGHLIGHT, // = WM_USER + 74 - TB_MAPACCELERATORA = WM_USER + 78, - TB_GETINSERTMARK, - TB_SETINSERTMARK, - TB_INSERTMARKHITTEST, - TB_MOVEBUTTON, - TB_GETMAXSIZE, - //TB_SETEXTENDEDSTYLE, - //TB_GETEXTENDEDSTYLE, - TB_GETPADDING, - TB_SETPADDING, - TB_SETINSERTMARKCOLOR, - TB_GETINSERTMARKCOLOR, - TB_MAPACCELERATORW, - TB_GETSTRINGW, - TB_GETSTRINGA, // = WM_USER + 92 - TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, - TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME, - TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -const TBBF_LARGE = 1; - -enum { - TBN_GETBUTTONINFOA = TBN_FIRST -0, - TBN_BEGINDRAG = TBN_FIRST -1, - TBN_ENDDRAG = TBN_FIRST -2, - TBN_BEGINADJUST = TBN_FIRST -3, - TBN_ENDADJUST = TBN_FIRST -4, - TBN_RESET = TBN_FIRST -5, - TBN_QUERYINSERT = TBN_FIRST -6, - TBN_QUERYDELETE = TBN_FIRST -7, - TBN_TOOLBARCHANGE = TBN_FIRST -8, - TBN_CUSTHELP = TBN_FIRST -9 -} -static if (_WIN32_IE >= 0x300) { - enum { - TBN_DROPDOWN = TBN_FIRST - 10 - } -} -static if (_WIN32_IE >= 0x400) { - enum { - TBN_HOTITEMCHANGE = TBN_FIRST - 13, - TBN_DRAGOUT = TBN_FIRST - 14, - TBN_DELETINGBUTTON = TBN_FIRST - 15, - TBN_GETDISPINFOA = TBN_FIRST - 16, - TBN_GETDISPINFOW = TBN_FIRST - 17, - TBN_GETINFOTIPA = TBN_FIRST - 18, - TBN_GETINFOTIPW = TBN_FIRST - 19, - TBN_GETBUTTONINFOW = TBN_FIRST - 20 - } -} -static if (_WIN32_IE >= 0x500) { - enum { - TBN_RESTORE = TBN_FIRST - 21, - TBN_SAVE = TBN_FIRST - 22, - TBN_INITCUSTOMIZE = TBN_FIRST - 23 - } - - enum { - TBNRF_HIDEHELP = 1, - TBNRF_ENDCUSTOMIZE - } - - enum { - TBNF_IMAGE = 1, - TBNF_TEXT = 2, - TBNF_DI_SETITEM = 0x10000000 - } -} - -enum { - TTS_ALWAYSTIP = 1, - TTS_NOPREFIX -} -static if(_WIN32_IE >= 0x500) { - enum { - TTS_NOANIMATE = 0x10, - TTS_NOFADE = 0x20, - TTS_BALLOON = 0x40, - TTS_CLOSE = 0x80 - } -} - -enum { - TTF_IDISHWND = 1, - TTF_CENTERTIP = 2, - TTF_RTLREADING = 4, - TTF_SUBCLASS = 16 -} -static if (_WIN32_IE >= 0x300) { - enum { - TTF_TRACK = 0x0020, - TTF_ABSOLUTE = 0x0080, - TTF_TRANSPARENT = 0x0100, - TTF_DI_SETITEM = 0x8000 - } - - static if (_WIN32_IE >= 0x501) { - enum { - TTF_PARSELINKS = 0x1000 - } - } - - enum { - TBCD_TICS = 1, - TBCD_THUMB, - TBCD_CHANNEL // = 3 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TBDDRET_DEFAULT, - TBDDRET_NODEFAULT, - TBDDRET_TREATPRESSED - } - - enum { - TBIMHT_AFTER = 1, - TBIMHT_BACKGROUND - } -} - -enum { - TTDT_AUTOMATIC, - TTDT_RESHOW, - TTDT_AUTOPOP, - TTDT_INITIAL -} - -enum { - TTM_ACTIVATE = WM_USER + 1, - TTM_SETDELAYTIME = WM_USER + 3, - TTM_ADDTOOLA, - TTM_DELTOOLA, - TTM_NEWTOOLRECTA, - TTM_RELAYEVENT, - TTM_GETTOOLINFOA, - TTM_SETTOOLINFOA, - TTM_HITTESTA, - TTM_GETTEXTA, - TTM_UPDATETIPTEXTA, - TTM_GETTOOLCOUNT, - TTM_ENUMTOOLSA, - TTM_GETCURRENTTOOLA, - TTM_WINDOWFROMPOINT, // = WM_USER + 16 - TTM_ADDTOOLW = WM_USER + 50, - TTM_DELTOOLW, - TTM_NEWTOOLRECTW, - TTM_GETTOOLINFOW, - TTM_SETTOOLINFOW, - TTM_HITTESTW, - TTM_GETTEXTW, - TTM_UPDATETIPTEXTW, - TTM_ENUMTOOLSW, - TTM_GETCURRENTTOOLW // = WM_USER + 59 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TTM_TRACKACTIVATE = WM_USER + 17, - TTM_TRACKPOSITION, - TTM_SETTIPBKCOLOR, - TTM_SETTIPTEXTCOLOR, - TTM_GETDELAYTIME, - TTM_GETTIPBKCOLOR, - TTM_GETTIPTEXTCOLOR, - TTM_SETMAXTIPWIDTH, - TTM_GETMAXTIPWIDTH, - TTM_SETMARGIN, - TTM_GETMARGIN, - TTM_POP // = WM_USER + 28 - } -} - -static if (_WIN32_IE >= 0x400) { // IE4.0 ??? - enum { - TTM_UPDATE = WM_USER + 29, - TTM_GETBUBBLESIZE, - TTM_ADJUSTRECT, - TTM_SETTITLEA, - TTM_SETTITLEW // = WM_USER + 33 - } -} - -enum { - TTN_GETDISPINFOA = TTN_FIRST - 0, - TTN_GETDISPINFOW = TTN_FIRST - 10, - TTN_NEEDTEXTA = TTN_GETDISPINFOA, - TTN_NEEDTEXTW = TTN_GETDISPINFOW, - TTN_SHOW = TTN_FIRST-1, - TTN_POP = TTN_FIRST-2 -} - -const UD_MAXVAL = 0x7fff; -const UD_MINVAL = -UD_MAXVAL; - -enum { - UDN_DELTAPOS = UDN_FIRST-1, - UDS_WRAP = 1, - UDS_SETBUDDYINT = 2, - UDS_ALIGNRIGHT = 4, - UDS_ALIGNLEFT = 8, - UDS_AUTOBUDDY = 16, - UDS_ARROWKEYS = 32, - UDS_HORZ = 64, - UDS_NOTHOUSANDS = 128 -} - -static if (_WIN32_IE >= 0x300) { - enum { - UDS_HOTTRACK = 0x0100 - } -} - -enum { - UDM_SETRANGE = WM_USER + 101, - UDM_GETRANGE, - UDM_SETPOS, - UDM_GETPOS, - UDM_SETBUDDY, - UDM_GETBUDDY, - UDM_SETACCEL, - UDM_GETACCEL, - UDM_SETBASE, - UDM_GETBASE // = WM_USER + 110 -} - -static if (_WIN32_IE >= 0x400) { - enum { - UDM_SETRANGE32 = WM_USER + 111, - UDM_GETRANGE32, - UDM_SETPOS32, - UDM_GETPOS32 // = WM_USER + 114 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -/*enum { - SB_SETTEXTA = WM_USER + 1, - SB_GETTEXTA, - SB_GETTEXTLENGTHA, - SB_SETPARTS, // = WM_USER + 4 - SB_GETPARTS = WM_USER + 6, - SB_GETBORDERS, - SB_SETMINHEIGHT, - SB_SIMPLE, - SB_GETRECT, - SB_SETTEXTW, - SB_GETTEXTLENGTHW, - SB_GETTEXTW // = WM_USER + 13 -}*/ - -/*enum { - SBT_OWNERDRAW = 0x1000, - SBT_NOBORDERS = 256, - SBT_POPOUT = 512, - SBT_RTLREADING = 1024 -}*/ - -static if(_WIN32_IE >= 0x400) { - enum { - SBT_TOOLTIPS = 0x0800, - SBN_SIMPLEMODECHANGE = SBN_FIRST - } -} - -enum { - TBS_AUTOTICKS = 1, - TBS_VERT = 2, - TBS_HORZ = 0, - TBS_TOP = 4, - TBS_BOTTOM = 0, - TBS_LEFT = 4, - TBS_RIGHT = 0, - TBS_BOTH = 8, - TBS_NOTICKS = 16, - TBS_ENABLESELRANGE = 32, - TBS_FIXEDLENGTH = 64, - TBS_NOTHUMB = 128 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TBS_TOOLTIPS = 0x0100, - TBTS_TOP = 0, - TBTS_LEFT, - TBTS_BOTTOM, - TBTS_RIGHT // = 3 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - TBS_REVERSED = 0x0200 - } -} - -static if (_WIN32_IE >= 0x501) { - enum { - TBS_DOWNISLEFT = 0x0400 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TBIF_BYINDEX = 0x80000000, - TBIF_COMMAND = 32, - TBIF_IMAGE = 1, - TBIF_LPARAM = 16, - TBIF_SIZE = 64, - TBIF_STATE = 4, - TBIF_STYLE = 8, - TBIF_TEXT = 2 - } -} - -enum { - TBM_GETPOS = WM_USER, - TBM_GETRANGEMIN, - TBM_GETRANGEMAX, - TBM_GETTIC, - TBM_SETTIC, - TBM_SETPOS, - TBM_SETRANGE, - TBM_SETRANGEMIN, - TBM_SETRANGEMAX, - TBM_CLEARTICS, - TBM_SETSEL, - TBM_SETSELSTART, - TBM_SETSELEND, // = WM_USER+12, - TBM_GETPTICS = WM_USER+14, - TBM_GETTICPOS, - TBM_GETNUMTICS, - TBM_GETSELSTART, - TBM_GETSELEND, - TBM_CLEARSEL, - TBM_SETTICFREQ, - TBM_SETPAGESIZE, - TBM_GETPAGESIZE, - TBM_SETLINESIZE, - TBM_GETLINESIZE, - TBM_GETTHUMBRECT, - TBM_GETCHANNELRECT, - TBM_SETTHUMBLENGTH, - TBM_GETTHUMBLENGTH, - TBM_SETTOOLTIPS, - TBM_GETTOOLTIPS, - TBM_SETTIPSIDE, - TBM_SETBUDDY, - TBM_GETBUDDY, // = WM_USER+33, - TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT -} - -enum { - TB_LINEUP, - TB_LINEDOWN, - TB_PAGEUP, - TB_PAGEDOWN, - TB_THUMBPOSITION, - TB_THUMBTRACK, - TB_TOP, - TB_BOTTOM, - TB_ENDTRACK // = 8 -} - -enum { - HOTKEYF_SHIFT = 1, - HOTKEYF_CONTROL = 2, - HOTKEYF_ALT = 4, - HOTKEYF_EXT = 8 -} - -enum { - HKCOMB_NONE = 1, - HKCOMB_S = 2, - HKCOMB_C = 4, - HKCOMB_A = 8, - HKCOMB_SC = 16, - HKCOMB_SA = 32, - HKCOMB_CA = 64, - HKCOMB_SCA = 128 -} - -enum { - HKM_SETHOTKEY = WM_USER + 1, - HKM_GETHOTKEY = WM_USER + 2, - HKM_SETRULES = WM_USER + 3 -} - -enum { - PBM_SETRANGE = WM_USER + 1, - PBM_SETPOS, - PBM_DELTAPOS, - PBM_SETSTEP, - PBM_STEPIT, // = WM_USER + 5 - PBM_SETRANGE32 = 1030, - PBM_GETRANGE, - PBM_GETPOS, - PBM_SETBARCOLOR, // = 1033 - PBM_SETBKCOLOR = CCM_SETBKCOLOR -} - -enum { - PBS_SMOOTH = 1, - PBS_VERTICAL = 4 -} - -enum { - LVS_ICON, - LVS_REPORT, - LVS_SMALLICON, - LVS_LIST, // = 3 - LVS_TYPEMASK = 3, - LVS_SINGLESEL = 4, - LVS_SHOWSELALWAYS = 8, - LVS_SORTASCENDING = 16, - LVS_SORTDESCENDING = 32, - LVS_SHAREIMAGELISTS = 64, - LVS_NOLABELWRAP = 128, - LVS_AUTOARRANGE = 256, - LVS_EDITLABELS = 512, - LVS_NOSCROLL = 0x2000, - LVS_TYPESTYLEMASK = 0xFC00, - LVS_ALIGNTOP = 0, - LVS_ALIGNLEFT = 0x800, - LVS_ALIGNMASK = 0xC00, - LVS_OWNERDRAWFIXED = 0x400, - LVS_NOCOLUMNHEADER = 0x4000, - LVS_NOSORTHEADER = 0x8000 -} - -static if (_WIN32_IE >= 0x300) { - enum { - CDIS_CHECKED = 8, - CDIS_DEFAULT = 32, - CDIS_DISABLED = 4, - CDIS_FOCUS = 16, - CDIS_GRAYED = 2, - CDIS_HOT = 64, - CDIS_SELECTED = 1, - CDIS_MARKED = 128, - CDIS_INDETERMINATE = 256 - } - - static if (_WIN32_WINNT >= 0x501) { - enum { - CDIS_SHOWKEYBOARDCUES = 512 - } - } - - enum { - CDDS_POSTERASE = 4, - CDDS_POSTPAINT = 2, - CDDS_PREERASE = 3, - CDDS_PREPAINT = 1, - CDDS_ITEM = 65536, - CDDS_ITEMPOSTERASE = 65540, - CDDS_ITEMPOSTPAINT = 65538, - CDDS_ITEMPREERASE = 65539, - CDDS_ITEMPREPAINT = 65537 - } - - static if (_WIN32_IE >= 0x400) { - enum { - CDDS_SUBITEM = 0x20000 - } - } - - enum { - CDRF_DODEFAULT = 0x00, - CDRF_NOTIFYITEMDRAW = 0x20, - CDRF_NOTIFYSUBITEMDRAW = 0x20, - CDRF_NOTIFYITEMERASE = 0x80, - CDRF_NOTIFYPOSTERASE = 0x40, - CDRF_NOTIFYPOSTPAINT = 0x10, - CDRF_NEWFONT = 0x02, - CDRF_SKIPDEFAULT = 0x04 - } - - static if (_WIN32_IE >= 0x400) { - enum { - LVBKIF_SOURCE_NONE = 0x00000000, - LVBKIF_SOURCE_HBITMAP = 0x00000001, - LVBKIF_SOURCE_URL = 0x00000002, - LVBKIF_SOURCE_MASK = 0x00000003, - LVBKIF_STYLE_NORMAL = 0x00000000, - LVBKIF_STYLE_TILE = 0x00000010, - LVBKIF_STYLE_MASK = 0x00000010 - } - } - - static if (_WIN32_WINNT >= 0x501) { - enum { - LVBKIF_FLAG_TILEOFFSET = 0x00000100, - LVBKIF_TYPE_WATERMARK = 0x10000000 - } - } - - enum { - LVS_OWNERDATA = 4096 - } - - enum { - LVS_EX_CHECKBOXES = 4, - LVS_EX_FULLROWSELECT = 32, - LVS_EX_GRIDLINES = 1, - LVS_EX_HEADERDRAGDROP = 16, - LVS_EX_ONECLICKACTIVATE = 64, - LVS_EX_SUBITEMIMAGES = 2, - LVS_EX_TRACKSELECT = 8, - LVS_EX_TWOCLICKACTIVATE = 128 - } - - enum { - LVSICF_NOINVALIDATEALL = 0x00000001, - LVSICF_NOSCROLL = 0x00000002 - } - - static if(_WIN32_IE >= 0x400) { - enum { - LVS_EX_FLATSB = 0x00000100, - LVS_EX_REGIONAL = 0x00000200, - LVS_EX_INFOTIP = 0x00000400, - LVS_EX_UNDERLINEHOT = 0x00000800, - LVS_EX_UNDERLINECOLD = 0x00001000, - LVS_EX_MULTIWORKAREAS = 0x00002000 - } - } - - static if(_WIN32_IE >= 0x500) { - enum { - LVS_EX_LABELTIP = 0x00004000, - LVS_EX_BORDERSELECT = 0x00008000 - } - } -} - -enum { - LVSIL_NORMAL, - LVSIL_SMALL, - LVSIL_STATE -} - -enum { - LVM_GETBKCOLOR = LVM_FIRST, - LVM_SETBKCOLOR, - LVM_GETIMAGELIST, - LVM_SETIMAGELIST, - LVM_GETITEMCOUNT, // = LVM_FIRST + 4 - LVM_SORTITEMSEX = LVM_FIRST + 81, - LVM_SETVIEW = LVM_FIRST + 142, - LVM_GETVIEW, // = LVM_FIRST + 143 - LVM_INSERTGROUP = LVM_FIRST + 145, - LVM_SETGROUPINFO = LVM_FIRST + 147, - LVM_GETGROUPINFO = LVM_FIRST + 149, - LVM_REMOVEGROUP, - LVM_MOVEGROUP, // = LVM_FIRST + 151 - LVM_SETGROUPMETRICS = LVM_FIRST + 155, - LVM_GETGROUPMETRICS, - LVM_ENABLEGROUPVIEW, - LVM_SORTGROUPS, - LVM_INSERTGROUPSORTED, - LVM_REMOVEALLGROUPS, - LVM_HASGROUP, - LVM_SETTILEVIEWINFO, - LVM_GETTILEVIEWINFO, - LVM_SETTILEINFO, - LVM_GETTILEINFO, - LVM_SETINSERTMARK, - LVM_GETINSERTMARK, - LVM_INSERTMARKHITTEST, - LVM_GETINSERTMARKRECT, - LVM_SETINSERTMARKCOLOR, - LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171 - LVM_SETINFOTIP = LVM_FIRST + 173, - LVM_GETSELECTEDCOLUMN, - LVM_ISGROUPVIEWENABLED, - LVM_GETOUTLINECOLOR, - LVM_SETOUTLINECOLOR, // = LVM_FIRST + 177 - LVM_CANCELEDITLABEL = LVM_FIRST + 179, - LVM_MAPIDTOINDEX = LVM_FIRST + 181 -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 - } -} - -enum { - LVIF_TEXT = 1, - LVIF_IMAGE = 2, - LVIF_PARAM = 4, - LVIF_STATE = 8 -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVIF_INDENT = 16, - LVIF_NORECOMPUTE = 2048 - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - LVIF_GROUPID = 128, - LVIF_COLUMNS = 256 - } -} - -enum { - LVIS_FOCUSED = 1, - LVIS_SELECTED = 2, - LVIS_CUT = 4, - LVIS_DROPHILITED = 8, - LVIS_OVERLAYMASK = 0xF00, - LVIS_STATEIMAGEMASK = 0xF000 -} - -const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1; -const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR) -1; - -const I_IMAGECALLBACK = -1; - -static if(_WIN32_IE >= 0x400) { - enum { - LVM_SETBKIMAGEA = LVM_FIRST + 68, - LVM_SETBKIMAGEW = LVM_FIRST + 138, - LVM_GETBKIMAGEA = LVM_FIRST + 69, - LVM_GETBKIMAGEW = LVM_FIRST + 139, - LV_MAX_WORKAREAS = 16, - LVM_SETWORKAREAS = LVM_FIRST + 65, - LVM_GETWORKAREAS = LVM_FIRST + 70, - LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73, - LVM_GETSELECTIONMARK = LVM_FIRST + 66, - LVM_SETSELECTIONMARK = LVM_FIRST + 67, - LVM_SETHOVERTIME = LVM_FIRST + 71, - LVM_GETHOVERTIME = LVM_FIRST + 72, - LVM_SETTOOLTIPS = LVM_FIRST + 74, - LVM_GETTOOLTIPS = LVM_FIRST + 78, - LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -enum { - LVNI_ALL, - LVNI_FOCUSED = 1, - LVNI_SELECTED = 2, - LVNI_CUT = 4, - LVNI_DROPHILITED = 8, - LVNI_ABOVE = 256, - LVNI_BELOW = 512, - LVNI_TOLEFT = 1024, - LVNI_TORIGHT = 2048 -} - -enum { - LVM_GETITEMA = LVM_FIRST + 5, - LVM_SETITEMA, - LVM_INSERTITEMA, - LVM_DELETEITEM, - LVM_DELETEALLITEMS, - LVM_GETCALLBACKMASK, - LVM_SETCALLBACKMASK, - LVM_GETNEXTITEM, - LVM_FINDITEMA, - LVM_GETITEMRECT, - LVM_SETITEMPOSITION, - LVM_GETITEMPOSITION, - LVM_GETSTRINGWIDTHA, - LVM_HITTEST, - LVM_ENSUREVISIBLE, - LVM_SCROLL, - LVM_REDRAWITEMS, - LVM_ARRANGE, - LVM_EDITLABELA, - LVM_GETEDITCONTROL, - LVM_GETCOLUMNA, - LVM_SETCOLUMNA, - LVM_INSERTCOLUMNA, - LVM_DELETECOLUMN, - LVM_GETCOLUMNWIDTH, - LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30, - LVM_CREATEDRAGIMAGE = LVM_FIRST + 33, - LVM_GETVIEWRECT, - LVM_GETTEXTCOLOR, - LVM_SETTEXTCOLOR, - LVM_GETTEXTBKCOLOR, - LVM_SETTEXTBKCOLOR, - LVM_GETTOPINDEX, - LVM_GETCOUNTPERPAGE, - LVM_GETORIGIN, - LVM_UPDATE, - LVM_SETITEMSTATE, - LVM_GETITEMSTATE, - LVM_GETITEMTEXTA, - LVM_SETITEMTEXTA, - LVM_SETITEMCOUNT, - LVM_SORTITEMS, - LVM_SETITEMPOSITION32, - LVM_GETSELECTEDCOUNT, - LVM_GETITEMSPACING, - LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52, - LVM_GETITEMW = LVM_FIRST + 75, - LVM_SETITEMW = LVM_FIRST + 76, - LVM_INSERTITEMW = LVM_FIRST + 77, - LVM_FINDITEMW = LVM_FIRST + 83, - LVM_GETSTRINGWIDTHW = LVM_FIRST + 87, - LVM_GETCOLUMNW = LVM_FIRST + 95, - LVM_SETCOLUMNW = LVM_FIRST + 96, - LVM_INSERTCOLUMNW = LVM_FIRST + 97, - LVM_GETITEMTEXTW = LVM_FIRST + 115, - LVM_SETITEMTEXTW, - LVM_GETISEARCHSTRINGW, - LVM_EDITLABELW // = LVM_FIRST + 118, -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVM_GETHEADER = LVM_FIRST + 31, - LVM_SETICONSPACING = LVM_FIRST + 53, - LVM_SETEXTENDEDLISTVIEWSTYLE, - LVM_GETEXTENDEDLISTVIEWSTYLE, - LVM_GETSUBITEMRECT, - LVM_SUBITEMHITTEST, - LVM_SETCOLUMNORDERARRAY, - LVM_GETCOLUMNORDERARRAY, - LVM_SETHOTITEM, - LVM_GETHOTITEM, - LVM_SETHOTCURSOR, - LVM_GETHOTCURSOR, - LVM_APPROXIMATEVIEWRECT // = LVM_FIRST + 64, - } -} - -enum { - LVFI_PARAM = 1, - LVFI_STRING = 2, - LVFI_PARTIAL = 8, - LVFI_WRAP = 32, - LVFI_NEARESTXY = 64 -} - -enum { - LVIF_DI_SETITEM = 0x1000 -} - -enum { - LVIR_BOUNDS, - LVIR_ICON, - LVIR_LABEL, - LVIR_SELECTBOUNDS // = 3 -} - -enum { - LVHT_NOWHERE = 1, - LVHT_ONITEMICON = 2, - LVHT_ONITEMLABEL = 4, - LVHT_ONITEMSTATEICON = 8, - LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL - | LVHT_ONITEMSTATEICON, - LVHT_ABOVE = 8, - LVHT_BELOW = 16, - LVHT_TORIGHT = 32, - LVHT_TOLEFT = 64 -} - -enum { - LVA_DEFAULT = 0, - LVA_ALIGNLEFT = 1, - LVA_ALIGNTOP = 2, - LVA_SNAPTOGRID = 5 -} - -enum { - LVCF_FMT = 1, - LVCF_WIDTH = 2, - LVCF_TEXT = 4, - LVCF_SUBITEM = 8 -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVCF_IMAGE = 16, - LVCF_ORDER = 32 - } -} - -enum { - LVCFMT_LEFT, - LVCFMT_RIGHT, - LVCFMT_CENTER, - LVCFMT_JUSTIFYMASK // = 3 -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVCFMT_IMAGE = 2048, - LVCFMT_BITMAP_ON_RIGHT = 4096, - LVCFMT_COL_HAS_IMAGES = 32768 - } -} - -enum { - LVSCW_AUTOSIZE = -1, - LVSCW_AUTOSIZE_USEHEADER = -2 -} - -enum { - LVN_ITEMCHANGING = LVN_FIRST, - LVN_ITEMCHANGED = LVN_FIRST - 1, - LVN_INSERTITEM = LVN_FIRST - 2, - LVN_DELETEITEM = LVN_FIRST - 3, - LVN_DELETEALLITEMS = LVN_FIRST - 4, - LVN_BEGINLABELEDITA = LVN_FIRST - 5, - LVN_ENDLABELEDITA = LVN_FIRST - 6, - LVN_COLUMNCLICK = LVN_FIRST - 8, - LVN_BEGINDRAG = LVN_FIRST - 9, - LVN_BEGINRDRAG = LVN_FIRST - 11, - LVN_GETDISPINFOA = LVN_FIRST - 50, - LVN_SETDISPINFOA = LVN_FIRST - 51, - LVN_KEYDOWN = LVN_FIRST - 55, - LVN_BEGINLABELEDITW = LVN_FIRST - 75, - LVN_ENDLABELEDITW = LVN_FIRST - 76, - LVN_GETDISPINFOW = LVN_FIRST - 77, - LVN_SETDISPINFOW = LVN_FIRST - 78 -} - -static if (_WIN32_IE >= 0x400) { - enum { - LVN_MARQUEEBEGIN = LVN_FIRST - 56, - LVN_GETINFOTIPA = LVN_FIRST - 57, - LVN_GETINFOTIPW = LVN_FIRST - 58, - LVKF_ALT = 1, - LVKF_CONTROL = 2, - LVKF_SHIFT = 4, - LVGIT_UNFOLDED = 1 - } -} - -enum { - TVS_HASBUTTONS = 1, - TVS_HASLINES = 2, - TVS_LINESATROOT = 4, - TVS_EDITLABELS = 8, - TVS_DISABLEDRAGDROP = 16, - TVS_SHOWSELALWAYS = 32 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TVS_RTLREADING = 64, - TVS_NOTOOLTIPS = 128, - TVS_CHECKBOXES = 256, - TVS_TRACKSELECT = 512 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVS_SINGLEEXPAND = 1024, - TVS_INFOTIP = 2048, - TVS_FULLROWSELECT = 4096, - TVS_NOSCROLL = 8192, - TVS_NONEVENHEIGHT = 16384 - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - TVS_NOHSCROLL = 0x8000 - } -} - -enum { - TVIF_TEXT = 1, - TVIF_IMAGE = 2, - TVIF_PARAM = 4, - TVIF_STATE = 8, - TVIF_HANDLE = 16, - TVIF_SELECTEDIMAGE = 32, - TVIF_CHILDREN = 64 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVIF_INTEGRAL = 0x0080 - } -} - -enum { - TVIS_FOCUSED = 1, - TVIS_SELECTED = 2, - TVIS_CUT = 4, - TVIS_DROPHILITED = 8, - TVIS_BOLD = 16, - TVIS_EXPANDED = 32, - TVIS_EXPANDEDONCE = 64, - TVIS_OVERLAYMASK = 0xF00, - TVIS_STATEIMAGEMASK = 0xF000, - TVIS_USERMASK = 0xF000 -} - -enum { - I_CHILDRENCALLBACK = -1 -} - -alias HANDLE HTREEITEM; - -const HTREEITEM - TVI_ROOT = cast(HTREEITEM) 0xFFFF0000, - TVI_FIRST = cast(HTREEITEM) 0xFFFF0001, - TVI_LAST = cast(HTREEITEM) 0xFFFF0002, - TVI_SORT = cast(HTREEITEM) 0xFFFF0003; - -enum { - TVSIL_NORMAL = 0, - TVSIL_STATE = 2 -} - -enum { - TVM_INSERTITEMA = TV_FIRST, - TVM_DELETEITEM = TV_FIRST + 1, - TVM_EXPAND = TV_FIRST + 2, - TVM_GETITEMRECT = TV_FIRST + 4, - TVM_GETCOUNT, - TVM_GETINDENT, - TVM_SETINDENT, - TVM_GETIMAGELIST, - TVM_SETIMAGELIST, - TVM_GETNEXTITEM, - TVM_SELECTITEM, - TVM_GETITEMA, - TVM_SETITEMA, - TVM_EDITLABELA, - TVM_GETEDITCONTROL, - TVM_GETVISIBLECOUNT, - TVM_HITTEST, - TVM_CREATEDRAGIMAGE, - TVM_SORTCHILDREN, - TVM_ENSUREVISIBLE, - TVM_SORTCHILDRENCB, - TVM_ENDEDITLABELNOW, - TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23 - TVM_INSERTITEMW = TV_FIRST + 50, - TVM_GETITEMW = TV_FIRST + 62, - TVM_SETITEMW = TV_FIRST + 63, - TVM_GETISEARCHSTRINGW = TV_FIRST + 64, - TVM_EDITLABELW = TV_FIRST + 65 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TVM_GETTOOLTIPS = TV_FIRST + 25, - TVM_SETTOOLTIPS = TV_FIRST + 24 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVM_SETINSERTMARK = TV_FIRST + 26, - TVM_SETITEMHEIGHT, - TVM_GETITEMHEIGHT, - TVM_SETBKCOLOR, - TVM_SETTEXTCOLOR, - TVM_GETBKCOLOR, - TVM_GETTEXTCOLOR, - TVM_SETSCROLLTIME, - TVM_GETSCROLLTIME, // = TV_FIRST + 34 - TVM_SETINSERTMARKCOLOR = TV_FIRST + 37, - TVM_GETINSERTMARKCOLOR = TV_FIRST + 38, - TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -static if (_WIN32_IE >= 0x500) { - enum { - TVM_GETITEMSTATE = TV_FIRST + 39, - TVM_SETLINECOLOR = TV_FIRST + 40, - TVM_GETLINECOLOR = TV_FIRST + 41 - } -} - -enum { - TVE_COLLAPSE = 1, - TVE_EXPAND = 2, - TVE_TOGGLE = 3, - TVE_COLLAPSERESET = 0x8000 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TVE_EXPANDPARTIAL = 0x4000 - } -} - -enum { - TVC_UNKNOWN, - TVC_BYMOUSE, - TVC_BYKEYBOARD // = 2 -} - -enum { - TVGN_ROOT, - TVGN_NEXT, - TVGN_PREVIOUS, - TVGN_PARENT, - TVGN_CHILD, - TVGN_FIRSTVISIBLE, - TVGN_NEXTVISIBLE, - TVGN_PREVIOUSVISIBLE, - TVGN_DROPHILITE, - TVGN_CARET // = 9 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVGN_LASTVISIBLE = 10 - } -} - -enum { - TVN_SELCHANGINGA = TVN_FIRST - 1, - TVN_SELCHANGEDA = TVN_FIRST - 2, - TVN_GETDISPINFOA = TVN_FIRST - 3, - TVN_SETDISPINFOA = TVN_FIRST - 4, - TVN_ITEMEXPANDINGA = TVN_FIRST - 5, - TVN_ITEMEXPANDEDA = TVN_FIRST - 6, - TVN_BEGINDRAGA = TVN_FIRST - 7, - TVN_BEGINRDRAGA = TVN_FIRST - 8, - TVN_DELETEITEMA = TVN_FIRST - 9, - TVN_BEGINLABELEDITA = TVN_FIRST - 10, - TVN_ENDLABELEDITA = TVN_FIRST - 11, - TVN_KEYDOWN = TVN_FIRST - 12, - TVN_SELCHANGINGW = TVN_FIRST - 50, - TVN_SELCHANGEDW = TVN_FIRST - 51, - TVN_GETDISPINFOW = TVN_FIRST - 52, - TVN_SETDISPINFOW = TVN_FIRST - 53, - TVN_ITEMEXPANDINGW = TVN_FIRST - 54, - TVN_ITEMEXPANDEDW = TVN_FIRST - 55, - TVN_BEGINDRAGW = TVN_FIRST - 56, - TVN_BEGINRDRAGW = TVN_FIRST - 57, - TVN_DELETEITEMW = TVN_FIRST - 58, - TVN_BEGINLABELEDITW = TVN_FIRST - 59, - TVN_ENDLABELEDITW = TVN_FIRST - 60 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TVNRET_DEFAULT = 0, - TVNRET_SKIPOLD = 1, - TVNRET_SKIPNEW = 2, - TVN_GETINFOTIPA = TVN_FIRST - 13, - TVN_GETINFOTIPW = TVN_FIRST - 14, - TVN_SINGLEEXPAND = TVN_FIRST - 15 - } -} - -enum { - TVIF_DI_SETITEM = 0x1000 -} - -enum { - TVHT_NOWHERE = 1, - TVHT_ONITEMICON = 2, - TVHT_ONITEMLABEL = 4, - TVHT_ONITEMINDENT = 8, - TVHT_ONITEMBUTTON = 16, - TVHT_ONITEMRIGHT = 32, - TVHT_ONITEMSTATEICON = 64, - TVHT_ABOVE = 256, - TVHT_BELOW = 512, - TVHT_TORIGHT = 1024, - TVHT_TOLEFT = 2048, - TCHT_NOWHERE = 1, - TCHT_ONITEMICON = 2, - TCHT_ONITEMLABEL = 4, - TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL - | TVHT_ONITEMSTATEICON, - TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL -} - -enum { - TCS_TABS = 0, - TCS_RIGHTJUSTIFY = 0, - TCS_SINGLELINE = 0, - TCS_FORCEICONLEFT = 16, - TCS_FORCELABELLEFT = 32, - TCS_BUTTONS = 256, - TCS_MULTILINE = 512, - TCS_FIXEDWIDTH = 1024, - TCS_RAGGEDRIGHT = 2048, - TCS_FOCUSONBUTTONDOWN = 0x1000, - TCS_OWNERDRAWFIXED = 0x2000, - TCS_TOOLTIPS = 0x4000, - TCS_FOCUSNEVER = 0x8000 -} - -static if (_WIN32_IE >= 0x300) { - enum { - TCS_BOTTOM = 2, - TCS_RIGHT = 2, - TCS_VERTICAL = 128, - TCS_SCROLLOPPOSITE = 0x0001, - TCS_HOTTRACK = 0x0040, - TCS_MULTISELECT = 0x0004 - } -} - -static if(_WIN32_IE >= 0x400) { - enum { - TCS_FLATBUTTONS = 0x0008, - TCS_EX_FLATSEPARATORS = 0x00000001, - TCS_EX_REGISTERDROP = 0x00000002 - } -} - -enum { - TCIF_TEXT = 1, - TCIF_IMAGE = 2, - TCIF_RTLREADING = 4, - TCIF_PARAM = 8 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TCIF_STATE = 16 - } -} - -enum { - TCIS_BUTTONPRESSED = 1 -} - -static if (_WIN32_IE >= 0x400) { - enum { - TCIS_HIGHLIGHTED = 2 - } -} - -enum { - TCM_FIRST = 0x1300, - TCM_GETIMAGELIST = TCM_FIRST + 2, - TCM_SETIMAGELIST, - TCM_GETITEMCOUNT, - TCM_GETITEMA, - TCM_SETITEMA, - TCM_INSERTITEMA, - TCM_DELETEITEM, - TCM_DELETEALLITEMS, - TCM_GETITEMRECT, - TCM_GETCURSEL, - TCM_SETCURSEL, - TCM_HITTEST, - TCM_SETITEMEXTRA, // = TCM_FIRST + 14 - TCM_ADJUSTRECT = TCM_FIRST + 40, - TCM_SETITEMSIZE, - TCM_REMOVEIMAGE, - TCM_SETPADDING, - TCM_GETROWCOUNT, - TCM_GETTOOLTIPS, - TCM_SETTOOLTIPS, - TCM_GETCURFOCUS, - TCM_SETCURFOCUS, - TCM_SETMINTABWIDTH, - TCM_DESELECTALL, // = TCM_FIRST + 50 - TCM_GETITEMW = TCM_FIRST + 60, - TCM_SETITEMW = TCM_FIRST + 61, - TCM_INSERTITEMW = TCM_FIRST + 62 -} - -static if (_WIN32_IE >=0x0400) { - enum { - TCM_HIGHLIGHTITEM = TCM_FIRST + 51, - TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52, - TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53, - TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -enum { - TCN_KEYDOWN = TCN_FIRST, - TCN_SELCHANGE = TCN_FIRST - 1, - TCN_SELCHANGING = TCN_FIRST - 2 -} - -enum { - NM_OUTOFMEMORY = NM_FIRST - 1, - NM_CLICK = NM_FIRST - 2, - NM_DBLCLK = NM_FIRST - 3, - NM_RETURN = NM_FIRST - 4, - NM_RCLICK = NM_FIRST - 5, - NM_RDBLCLK = NM_FIRST - 6, - NM_SETFOCUS = NM_FIRST - 7, - NM_KILLFOCUS = NM_FIRST - 8, - NM_CUSTOMDRAW = NM_FIRST - 12, - NM_HOVER = NM_FIRST - 13, - NM_NCHITTEST = NM_FIRST - 14, - NM_KEYDOWN = NM_FIRST - 15, - NM_RELEASEDCAPTURE = NM_FIRST - 16, - NM_SETCURSOR = NM_FIRST - 17, - NM_CHAR = NM_FIRST - 18, - NM_TOOLTIPSCREATED = NM_FIRST - 19 -} - -enum { - SBARS_SIZEGRIP = 256 -} - -/*enum { - CCM_FIRST = 0x2000, - CCM_LAST = CCM_FIRST + 0x200, - CCM_SETBKCOLOR = 8193, - CCM_SETCOLORSCHEME = 8194, - CCM_GETCOLORSCHEME = 8195, - CCM_GETDROPTARGET = 8196, - CCM_SETUNICODEFORMAT = 8197, - CCM_GETUNICODEFORMAT = 8198, - CCM_SETVERSION = 0x2007, - CCM_GETVERSION = 0x2008, - CCM_SETNOTIFYWINDOW = 0x2009 -}*/ - -static if (_WIN32_WINNT >= 0x501) { - enum { - CCM_SETWINDOWTHEME = 0x200b, - CCM_DPISCALE = 0x200c - } -} - -enum { - ICC_LISTVIEW_CLASSES = 1, - ICC_TREEVIEW_CLASSES = 2, - ICC_BAR_CLASSES = 4, - ICC_TAB_CLASSES = 8, - ICC_UPDOWN_CLASS = 16, - ICC_PROGRESS_CLASS = 32, - ICC_HOTKEY_CLASS = 64, - ICC_ANIMATE_CLASS = 128, - ICC_WIN95_CLASSES = 255, - ICC_DATE_CLASSES = 256, - ICC_USEREX_CLASSES = 512, - ICC_COOL_CLASSES = 1024 -} - -static if (_WIN32_IE >= 0x400) { - enum { - INFOTIPSIZE = 1024, - ICC_INTERNET_CLASSES = 2048, - ICC_PAGESCROLLER_CLASS = 4096, - ICC_NATIVEFNTCTL_CLASS = 8192 - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - ICC_STANDARD_CLASSES = 0x00004000, - ICC_LINK_CLASS = 0x00008000 - } -} - -enum { - GDTR_MIN = 1, - GDTR_MAX = 2 -} - -enum { - GMR_VISIBLE, - GMR_DAYSTATE -} - -enum { - GDT_ERROR = -1, - GDT_VALID = 0, - GDT_NONE = 1 -} - -enum { - DTS_SHORTDATEFORMAT = 0, - DTS_UPDOWN = 1, - DTS_SHOWNONE = 2, - DTS_LONGDATEFORMAT = 4, - DTS_TIMEFORMAT = 9, - DTS_APPCANPARSE = 16, - DTS_RIGHTALIGN = 32 -} - -static if (_WIN32_IE >= 0x500) { - enum { - DTS_SHORTDATECENTURYFORMAT = 0x000C - } -} - -enum { - MCS_DAYSTATE = 1, - MCS_MULTISELECT = 2, - MCS_WEEKNUMBERS = 4 -} - -static if (_WIN32_IE >= 0x400) { - enum { - MCS_NOTODAYCIRCLE = 0x0008, - MCS_NOTODAY = 0x0010 - } -} else { - enum { - MCS_NOTODAY = 0x0008 - } -} - -enum { - DTM_GETSYSTEMTIME = 0x1001, - DTM_SETSYSTEMTIME = 0x1002, - DTM_GETRANGE = 0x1003, - DTM_SETRANGE = 0x1004, - DTM_SETFORMATA = 0x1005, - DTM_SETMCCOLOR = 0x1006, - DTM_GETMCCOLOR = 0x1007, - DTM_GETMONTHCAL = 0x1008, - DTM_SETMCFONT = 0x1009, - DTM_GETMCFONT = 0x100a, - DTM_SETFORMATW = 0x1050 -} - -enum { - DTN_USERSTRINGA = -758U, - DTN_USERSTRINGW = -745U, - DTN_WMKEYDOWNA = -757U, - DTN_WMKEYDOWNW = -744U, - DTN_FORMATA = -756U, - DTN_FORMATW = -743U, - DTN_FORMATQUERYA = -755U, - DTN_FORMATQUERYW = -742U, - DTN_DROPDOWN = -754U, - DTN_CLOSEUP = -753U, - DTN_DATETIMECHANGE = -759U, -} - -enum { - MCM_GETCURSEL = 0x1001, - MCM_SETCURSEL = 0x1002, - MCM_GETMAXSELCOUNT = 0x1003, - MCM_SETMAXSELCOUNT = 0x1004, - MCM_GETSELRANGE = 0x1005, - MCM_SETSELRANGE = 0x1006, - MCM_GETMONTHRANGE = 0x1007, - MCM_SETDAYSTATE = 0x1008, - MCM_GETMINREQRECT = 0x1009, - MCM_SETCOLOR = 0x100a, - MCM_GETCOLOR = 0x100b, - MCM_SETTODAY = 0x100c, - MCM_GETTODAY = 0x100d, - MCM_HITTEST = 0x100e, - MCM_SETFIRSTDAYOFWEEK = 0x100f, - MCM_GETFIRSTDAYOFWEEK = 0x1010, - MCM_GETRANGE = 0x1011, - MCM_SETRANGE = 0x1012, - MCM_GETMONTHDELTA = 0x1013, - MCM_SETMONTHDELTA = 0x1014, - MCM_GETMAXTODAYWIDTH = 0x1015, - MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, - MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT -} - -enum { - MCN_SELCHANGE = -749U, - MCN_GETDAYSTATE = -747U, - MCN_SELECT = -746U -} - -enum { - ODT_HEADER = 100, - ODT_TAB, - ODT_LISTVIEW // = 102 -} - -enum { - SB_SETBKCOLOR = 0x2001 -} - -static if (_WIN32_IE >= 0x300) { - enum { - SB_ISSIMPLE = 1038 - } - - enum { - MCSC_BACKGROUND, - MCSC_TEXT, - MCSC_TITLEBK, - MCSC_TITLETEXT, - MCSC_MONTHBK, - MCSC_TRAILINGTEXT // = 5 - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - MCHT_TITLE = 0x10000, - MCHT_CALENDAR = 0x20000, - MCHT_TODAYLINK = 0x30000, - MCHT_NEXT = 0x1000000, - MCHT_PREV = 0x2000000, - MCHT_NOWHERE = 0x00, - MCHT_TITLEBK = MCHT_TITLE, - MCHT_TITLEMONTH = MCHT_TITLE | 0x0001, - MCHT_TITLEYEAR = MCHT_TITLE | 0x0002, - MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003, - MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003, - MCHT_CALENDARBK = MCHT_CALENDAR, - MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001, - MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT, - MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV, - MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002, - MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 - } -} - -enum { - RBS_TOOLTIPS = 256, - RBS_VARHEIGHT = 512, - RBS_BANDBORDERS = 1024, - RBS_FIXEDORDER = 2048 -} - -enum { - RBIM_IMAGELIST = 1 -} - -enum { - RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, - RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME -} - -enum { - RBBS_BREAK = 0x0001, - RBBS_FIXEDSIZE = 0x0002, - RBBS_CHILDEDGE = 0x0004, - RBBS_HIDDEN = 0x0008, - RBBS_NOVERT = 0x0010, - RBBS_FIXEDBMP = 0x0020, - RBBS_VARIABLEHEIGHT = 0x0040, - RBBS_GRIPPERALWAYS = 0x0080, - RBBS_NOGRIPPER = 0x0100 -} - -static if (_WIN32_IE >= 0x500) { - enum { - RBBS_USECHEVRON = 0x0200 - } -} - -static if (_WIN32_IE >= 0x501) { - enum { - RBBS_HIDETITLE = 0x0400, - RBBS_TOPALIGN = 0x0800 - } -} - -enum { - RBBIM_STYLE = 1, - RBBIM_COLORS = 2, - RBBIM_TEXT = 4, - RBBIM_IMAGE = 8, - RBBIM_CHILD = 16, - RBBIM_CHILDSIZE = 32, - RBBIM_SIZE = 64, - RBBIM_BACKGROUND = 128, - RBBIM_ID = 256 -} - -enum { - RB_INSERTBANDA = WM_USER + 1, - RB_DELETEBAND, - RB_GETBARINFO, - RB_SETBARINFO, // = WM_USER + 4 - RB_SETBANDINFOA = WM_USER + 6, - RB_SETPARENT = WM_USER + 7, - RB_INSERTBANDW = WM_USER + 10, - RB_SETBANDINFOW, - RB_GETBANDCOUNT, - RB_GETROWCOUNT, - RB_GETROWHEIGHT // = WM_USER + 14, -} - -enum { - RBN_HEIGHTCHANGE = RBN_FIRST -} - -static if (_WIN32_IE >= 0x300) { - enum { - LVN_ODCACHEHINT = LVN_FIRST - 13, - LVN_ODFINDITEMA = LVN_FIRST - 52, - LVN_ODFINDITEMW = LVN_FIRST - 79, - LVN_ITEMACTIVATE = LVN_FIRST - 14, - LVN_ODSTATECHANGED = LVN_FIRST - 15 - } - - version (Unicode) { - enum { - LVN_ODFINDITEM = LVN_ODFINDITEMW - } - } else { - enum { - LVN_ODFINDITEM = LVN_ODFINDITEMA - } - } -} - -static if (_WIN32_IE >= 0x400) { - enum { - SB_SETICON = 1039, - SB_SETTIPTEXTA, - SB_SETTIPTEXTW, - SB_GETTIPTEXTA, - SB_GETTIPTEXTW, - SB_GETICON, // = 1044 - SB_SETUNICODEFORMAT = 0x2005, - SB_GETUNICODEFORMAT = 0x2006 - } - - enum { - PGF_INVISIBLE = 0, - PGF_NORMAL = 1, - PGF_GRAYED = 2, - PGF_DEPRESSED = 4, - PGF_HOT = 8 - } - - enum { - PGB_TOPORLEFT, - PGB_BOTTOMORRIGHT - } - - enum { - PGF_SCROLLUP = 1, - PGF_SCROLLDOWN = 2, - PGF_SCROLLLEFT = 4, - PGF_SCROLLRIGHT = 8 - } - - enum { - PGK_SHIFT = 1, - PGK_CONTROL = 2, - PGK_MENU = 4 - } - - enum { - PGF_CALCWIDTH = 1, - PGF_CALCHEIGHT = 2 - } - - enum { - PGM_FIRST = 0x1400, - PGM_SETCHILD = PGM_FIRST + 1, - PGM_RECALCSIZE, - PGM_FORWARDMOUSE, - PGM_SETBKCOLOR, - PGM_GETBKCOLOR, - PGM_SETBORDER, - PGM_GETBORDER, - PGM_SETPOS, - PGM_GETPOS, - PGM_SETBUTTONSIZE, - PGM_GETBUTTONSIZE, - PGM_GETBUTTONSTATE, // = PGM_FIRST + 12 - PGM_GETDROPTARGET = CCM_GETDROPTARGET - } - - enum { - RBS_REGISTERDROP = 4096, - RBS_AUTOSIZE = 8192, - RBS_VERTICALGRIPPER = 16384, - RBS_DBLCLKTOGGLE = 32768 - } - - enum { - RBBIM_IDEALSIZE = 512, - RBBIM_LPARAM = 1024, - RBBIM_HEADERSIZE = 2048 - } - - enum { - RB_HITTEST = WM_USER + 8, - RB_GETRECT = WM_USER + 9, - RB_IDTOINDEX = WM_USER + 16, - RB_GETTOOLTIPS, - RB_SETTOOLTIPS, - RB_SETBKCOLOR, - RB_GETBKCOLOR, - RB_SETTEXTCOLOR, - RB_GETTEXTCOLOR, - RB_SIZETORECT, - RB_BEGINDRAG, - RB_ENDDRAG, - RB_DRAGMOVE, - RB_GETBARHEIGHT, - RB_GETBANDINFOW, - RB_GETBANDINFOA, - RB_MINIMIZEBAND, - RB_MAXIMIZEBAND, // = WM_USER + 31 - RB_GETDROPTARGET = CCM_GETDROPTARGET, - RB_GETBANDBORDERS = WM_USER + 34, - RB_SHOWBAND = WM_USER + 35, - RB_SETPALETTE = WM_USER + 37, - RB_GETPALETTE = WM_USER + 38, - RB_MOVEBAND = WM_USER + 39, - RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } - - enum { - RBN_GETOBJECT = RBN_FIRST - 1, - RBN_LAYOUTCHANGED = RBN_FIRST - 2, - RBN_AUTOSIZE = RBN_FIRST - 3, - RBN_BEGINDRAG = RBN_FIRST - 4, - RBN_ENDDRAG = RBN_FIRST - 5, - RBN_DELETINGBAND = RBN_FIRST - 6, - RBN_DELETEDBAND = RBN_FIRST - 7, - RBN_CHILDSIZE = RBN_FIRST - 8 - } - - enum { - RBNM_ID = 1, - RBNM_STYLE = 2, - RBNM_LPARAM = 4 - } - - enum { - RBHT_NOWHERE = 1, - RBHT_CAPTION, - RBHT_CLIENT, - RBHT_GRABBER - } - - version (Unicode) { - alias SB_SETTIPTEXTW SB_SETTIPTEXT; - alias SB_GETTIPTEXTW SB_GETTIPTEXT; - alias RB_GETBANDINFOW RB_GETBANDINFO; - } else { - alias SB_SETTIPTEXTA SB_SETTIPTEXT; - alias SB_GETTIPTEXTA SB_GETTIPTEXT; - alias RB_GETBANDINFOA RB_GETBANDINFO; - } -} else { - enum { - RB_GETBANDINFO = WM_USER + 5 - } -} - -enum { - CBEM_INSERTITEMA = WM_USER + 1, - CBEM_SETIMAGELIST, - CBEM_GETIMAGELIST, - CBEM_GETITEMA, - CBEM_SETITEMA, - CBEM_GETCOMBOCONTROL, - CBEM_GETEDITCONTROL, - CBEM_SETEXSTYLE, - CBEM_GETEXSTYLE, // = WM_USER + 9) - CBEM_DELETEITEM = CB_DELETESTRING -} - -static if (_WIN32_IE >= 0x400) { - enum { - CBEM_SETEXTENDEDSTYLE = WM_USER + 14, - CBEM_GETEXTENDEDSTYLE = WM_USER + 9, - CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, - CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT - } -} - -enum { - CBEM_HASEDITCHANGED = WM_USER + 10, - CBEM_INSERTITEMW = WM_USER + 11, - CBEM_SETITEMW = WM_USER + 12, - CBEM_GETITEMW = WM_USER + 13 -} - -enum { - DA_LAST = 0x7fffffff -} - -enum { - DPA_APPEND = 0x7fffffff, - DPA_ERR = -1 -} - -enum { - DSA_APPEND = 0x7fffffff, - DSA_ERR = -1 -} - -enum { - DPAS_SORTED = 1, - DPAS_INSERTBEFORE = 2, - DPAS_INSERTAFTER = 4 -} - -static if (_WIN32_IE >= 0x400) { - enum { - WSB_PROP_CYVSCROLL = 1, - WSB_PROP_CXHSCROLL = 2, - WSB_PROP_CYHSCROLL = 4, - WSB_PROP_CXVSCROLL = 8, - WSB_PROP_CXHTHUMB = 16, - WSB_PROP_CYVTHUMB = 32, - WSB_PROP_VBKGCOLOR = 64, - WSB_PROP_HBKGCOLOR = 128, - WSB_PROP_VSTYLE = 256, - WSB_PROP_HSTYLE = 512, - WSB_PROP_WINSTYLE = 1024, - WSB_PROP_PALETTE = 2048, - WSB_PROP_MASK = 0xfff, - FSB_FLAT_MODE = 2, - FSB_ENCARTA_MODE = 1, - FSB_REGULAR_MODE = 0 - } -} - -static if (_WIN32_WINNT >= 0x0501) { - enum { - LIF_ITEMINDEX = 1, - LIF_STATE = 2, - LIF_ITEMID = 4, - LIF_URL = 8 - } - - enum { - LIS_FOCUSED = 1, - LIS_ENABLED = 2, - LIS_VISITED = 4 - } - - enum { - LM_HITTEST = WM_USER + 768, - LM_GETIDEALHEIGHT, - LM_SETITEM, - LM_GETITEM // = WM_USER + 771 - } - - const size_t MAX_LINKID_TEXT = 48; - const size_t L_MAX_URL_LENGTH = 2084; -} - - -struct COMBOBOXEXITEMA { - UINT mask; - int iItem; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int iOverlay; - int iIndent; - LPARAM lParam; -} -alias COMBOBOXEXITEMA* PCOMBOBOXEXITEMA; -alias CPtr!(COMBOBOXEXITEMA) PCCOMBOEXITEMA; - -struct COMBOBOXEXITEMW { - UINT mask; - int iItem; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int iOverlay; - int iIndent; - LPARAM lParam; -} -alias COMBOBOXEXITEMW* PCOMBOBOXEXITEMW; -alias CPtr!(COMBOBOXEXITEMW) PCCOMBOEXITEMW; - -static if (_WIN32_IE >= 0x400) { - struct NMCOMBOBOXEXA { - NMHDR hdr; - COMBOBOXEXITEMA ceItem; - } - alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA; - - struct NMCOMBOBOXEXW { - NMHDR hdr; - COMBOBOXEXITEMW ceItem; - } - alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW; - - struct NMCBEDRAGBEGINW { - NMHDR hdr; - int iItemid; - WCHAR szText[CBEMAXSTRLEN]; - } - alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW; - - struct NMCBEDRAGBEGINA { - NMHDR hdr; - int iItemid; - char szText[CBEMAXSTRLEN]; - } - alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA; - - struct NMIPADDRESS { - NMHDR hdr; - int iField; - int iValue; - } - alias NMIPADDRESS* LPNMIPADDRESS; - - struct NMLVKEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; - } - alias NMLVKEYDOWN* LPNMLVKEYDOWN; - - struct NMPGCALCSIZE { - NMHDR hdr; - DWORD dwFlag; - int iWidth; - int iHeight; - } - alias NMPGCALCSIZE* LPNMPGCALCSIZE; - - struct NMPGSCROLL { - NMHDR hdr; - BOOL fwKeys; - RECT rcParent; - int iDir; - int iXpos; - int iYpos; - int iScroll; - } - alias NMPGSCROLL* LPNMPGSCROLL; - - struct NMSELCHANGE { - NMHDR nmhdr; - SYSTEMTIME stSelStart; - SYSTEMTIME stSelEnd; - } - alias NMSELCHANGE* LPNMSELCHANGE; - - struct NMTBHOTITEM { - NMHDR hdr; - int idOld; - int idNew; - DWORD dwFlags; - } - alias NMTBHOTITEM* LPNMTBHOTITEM; - - struct NMTBDISPINFOA { - NMHDR hdr; - DWORD dwMask; - int idCommand; - DWORD_PTR lParam; - int iImage; - LPSTR pszText; - int cchText; - } - alias NMTBDISPINFOA* LPNMTBDISPINFOA; - - struct NMTBDISPINFOW { - NMHDR hdr; - DWORD dwMask; - int idCommand; - DWORD_PTR lParam; - int iImage; - LPWSTR pszText; - int cchText; - } - alias NMTBDISPINFOW* LPNMTBDISPINFOW; - - struct NMTBGETINFOTIPA { - NMHDR hdr; - LPSTR pszText; - int cchTextMax; - int iItem; - LPARAM lParam; - } - alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA; - - struct NMTBGETINFOTIPW { - NMHDR hdr; - LPWSTR pszText; - int cchTextMax; - int iItem; - LPARAM lParam; - } - alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW; - - struct NMMOUSE { - NMHDR hdr; - DWORD_PTR dwItemSpec; - DWORD_PTR dwItemData; - POINT pt; - LPARAM dwHitInfo; - } - alias NMMOUSE* LPNMMOUSE; -} - -static if (_WIN32_IE >= 0x401) { - struct NMTOOLTIPSCREATED { - NMHDR hdr; - HWND hwndToolTips; - } - alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; -} - -struct NMDATETIMECHANGE { - NMHDR nmhdr; - DWORD dwFlags; - SYSTEMTIME st; -} -alias NMDATETIMECHANGE* LPNMDATETIMECHANGE; - -struct NMCBEENDEDITW { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - WCHAR szText[CBEMAXSTRLEN]; - int iWhy; -} -alias NMCBEENDEDITW* LPNMCBEENDEDITW, PNMCBEENDEDITW; - -struct NMCBEENDEDITA { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - char szText[CBEMAXSTRLEN]; - int iWhy; -} -alias NMCBEENDEDITA* LPNMCBEENDEDITA, PNMCBEENDEDITA; - -struct COLORMAP { - COLORREF from; - COLORREF to; -} -alias COLORMAP* LPCOLORMAP; - -struct DRAGLISTINFO { - UINT uNotification; - HWND hWnd; - POINT ptCursor; -} -alias DRAGLISTINFO* LPDRAGLISTINFO; - -struct TBBUTTON { - int iBitmap; - int idCommand; - BYTE fsState; - BYTE fsStyle; - BYTE bReserved[2]; - DWORD dwData; - int iString; -} -alias TBBUTTON* PTBBUTTON, LPTBBUTTON; -alias CPtr!(TBBUTTON) LPCTBBUTTON; - -static if (_WIN32_IE >= 0x400) { - struct TBBUTTONINFOA { - UINT cbSize = TBBUTTONINFOA.sizeof; - DWORD dwMask; - int idCommand; - int iImage; - BYTE fsState; - BYTE fsStyle; - WORD cx; - DWORD lParam; - LPSTR pszText; - int cchText; - } - alias TBBUTTONINFOA* LPTBBUTTONINFOA; - - struct TBBUTTONINFOW { - UINT cbSize = TBBUTTONINFOW.sizeof; - DWORD dwMask; - int idCommand; - int iImage; - BYTE fsState; - BYTE fsStyle; - WORD cx; - DWORD lParam; - LPWSTR pszText; - int cchText; - } - alias TBBUTTONINFOW* LPTBBUTTONINFOW; - - struct TBINSERTMARK { - int iButton; - DWORD dwFlags; - } - alias TBINSERTMARK* LPTBINSERTMARK; - - struct LVBKIMAGEA { - ULONG ulFlags; - HBITMAP hbm; - LPSTR pszImage; - UINT cchImageMax; - int xOffsetPercent; - int yOffsetPercent; - } - alias LVBKIMAGEA* LPLVBKIMAGEA; - - struct LVBKIMAGEW { - ULONG ulFlags; - HBITMAP hbm; - LPWSTR pszImage; - UINT cchImageMax; - int xOffsetPercent; - int yOffsetPercent; - } - alias LVBKIMAGEW* LPLVBKIMAGEW; -} - -/*struct TBNOTIFY { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPTSTR pszText; -} -alias TBNOTIFY* LPTBNOTIFY; -*/ - -/*struct TBSAVEPARAMS { - HKEY hkr; - LPCTSTR pszSubKey; - LPCTSTR pszValueName; -}*/ - -struct IMAGEINFO { - HBITMAP hbmImage; - HBITMAP hbmMask; - int Unused1; - int Unused2; - RECT rcImage; -} -alias IMAGEINFO* LPIMAGEINFO; - -alias HANDLE HIMAGELIST; - -static if (_WIN32_IE >= 0x500) { - struct HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - UINT type; - LPVOID pvFilter; - } - - struct HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - int iImage; - int iOrder; - UINT type; - LPVOID pvFilter; - } -} else static if (_WIN32_IE >= 0x300) { - 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; - } -} else { - struct HDITEMA { - UINT mask; - int cxy; - LPSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - } - - struct HDITEMW { - UINT mask; - int cxy; - LPWSTR pszText; - HBITMAP hbm; - int cchTextMax; - int fmt; - LPARAM lParam; - } -} -alias HDITEMA* LPHDITEMA; -alias HDITEMW* LPHDITEMW; - -deprecated { - alias HDITEMA HD_ITEMA; - alias HDITEMW HD_ITEMW; - //alias HDITEM HD_ITEM; fixme -} - -struct HD_LAYOUT { - RECT* prc; - WINDOWPOS* pwpos; -} -alias HDLAYOUT* LPHDLAYOUT; -deprecated alias HD_LAYOUT HDLAYOUT; - -struct HD_HITTESTINFO { - POINT pt; - UINT flags; - int iItem; -} -alias HD_HITTESTINFO* LPHDHITTESTINFO; - -struct HD_NOTIFYA { - NMHDR hdr; - int iItem; - int iButton; - HDITEMA* pitem; -} - -struct HD_NOTIFYW { - NMHDR hdr; - int iItem; - int iButton; - HDITEMW* pitem; -} - -/* FIXME: NMHEADER structure (base for all events of the comctl controls) - is the same as HD_NOTIFY depending on the value of _WIN32_IE macro. - I'm defining both for now. */ -struct NMHEADERA { - NMHDR hdr; - int iItem; - int iButton; - HDITEMA* pitem; -} -alias NMHEADERA* LPNMHEADERA; - -struct NMHEADERW { - NMHDR hdr; - int iItem; - int iButton; - HDITEMW* pitem; -} -alias NMHEADERW* LPNMHEADERW; - -version (Unicode) { - alias NMHEADERW NMHEADER; - alias LPNMHEADERW LPNMHEADER; -} else { - alias NMHEADERA NMHEADER; - alias LPNMHEADERA LPNMHEADER; -} -// End FIXME - -struct NMHDDISPINFOA { - NMHDR hdr; - int iItem; - UINT mask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -} -alias NMHDDISPINFOA* LPNMHDDISPINFOA; - -struct NMHDDISPINFOW { - NMHDR hdr; - int iItem; - UINT mask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; -} -alias NMHDDISPINFOW* LPNMHDDISPINFOW; - -struct NMCUSTOMDRAW { - NMHDR hdr; - DWORD dwDrawStage; - HDC hdc; - RECT rc; - DWORD dwItemSpec; - UINT uItemState; - LPARAM lItemlParam; -} -alias NMCUSTOMDRAW* LPNMCUSTOMDRAW; - -static if (_WIN32_IE >= 0x400) { - struct NMLVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - int iSubItem; - } -} else { - struct NMLVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - } -} -alias NMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW; - -static if (_WIN32_IE >= 0x400) { - struct NMLVGETINFOTIPA { - NMHDR hdr; - DWORD dwFlags; - LPSTR pszText; - int cchTextMax; - int iItem; - int iSubItem; - LPARAM lParam; - } - alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA; - - struct NMLVGETINFOTIPW { - NMHDR hdr; - DWORD dwFlags; - LPWSTR pszText; - int cchTextMax; - int iItem; - int iSubItem; - LPARAM lParam; - } - alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW; -} - -static if (_WIN32_IE >= 0x400) { - struct NMTVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - int iLevel; - } -} else { - struct NMTVCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - COLORREF clrText; - COLORREF clrTextBk; - } -} -alias NMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW; - -static if (_WIN32_IE >= 0x400) { - static if (_WIN32_WINNT >= 0x501) { - struct NMTBCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - HBRUSH hbrMonoDither; - HBRUSH hbrLines; - HPEN hpenLines; - COLORREF clrText; - COLORREF clrMark; - COLORREF clrTextHighlight; - COLORREF clrBtnFace; - COLORREF clrBtnHighlight; - COLORREF clrHighlightHotTrack; - RECT rcText; - int nStringBkMode; - int nHLStringBkMode; - int iListGap; - } - } else { - struct NMTBCUSTOMDRAW { - NMCUSTOMDRAW nmcd; - HBRUSH hbrMonoDither; - HBRUSH hbrLines; - HPEN hpenLines; - COLORREF clrText; - COLORREF clrMark; - COLORREF clrTextHighlight; - COLORREF clrBtnFace; - COLORREF clrBtnHighlight; - COLORREF clrHighlightHotTrack; - RECT rcText; - int nStringBkMode; - int nHLStringBkMode; - } - } - alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; - - struct NMITEMACTIVATE { - NMHDR hdr; - int iItem; - int iSubItem; - UINT uNewState; - UINT uOldState; - UINT uChanged; - POINT ptAction; - LPARAM lParam; - UINT uKeyFlags; - } - alias NMITEMACTIVATE* LPNMITEMACTIVATE; -} - -struct TBADDBITMAP { - HINSTANCE hInst; - UINT nID; -} -alias TBADDBITMAP* LPTBADDBITMAP; - -struct TBSAVEPARAMSA { - HKEY hkr; - LPCSTR pszSubKey; - LPCSTR pszValueName; -} - -struct TBSAVEPARAMSW { - HKEY hkr; - LPCWSTR pszSubKey; - LPCWSTR pszValueName; -} - -struct TBREPLACEBITMAP { - HINSTANCE hInstOld; - UINT nIDOld; - HINSTANCE hInstNew; - UINT nIDNew; - int nButtons; -} -alias TBREPLACEBITMAP* LPTBREPLACEBITMAP; - -static if (_WIN32_IE >= 0x500) { - struct NMTOOLBARA { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPSTR pszText; - RECT rcButton; - } - - struct NMTOOLBARW { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPWSTR pszText; - RECT rcButton; - } -} else { - struct NMTOOLBARA { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPSTR pszText; - } - - struct NMTOOLBARW { - NMHDR hdr; - int iItem; - TBBUTTON tbButton; - int cchText; - LPWSTR pszText; - } -} -alias NMTOOLBARA* LPNMTOOLBARA; -alias NMTOOLBARW* LPNMTOOLBARW; - -alias NMTOOLBARA TBNOTIFYA; -alias LPNMTOOLBARA LPTBNOTIFYA; - -alias NMTOOLBARW TBNOTIFYW; -alias LPNMTOOLBARW LPTBNOTIFYW; - -static if (_WIN32_WINNT >= 0x501) { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - LPARAM lParam; - void* lpReserved; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - LPARAM lParam; - void* lpReserved; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, - TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, - TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof, - TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof; -} else static if (_WIN32_IE >= 0x300) { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - LPARAM lParam; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - LPARAM lParam; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, - TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V2_SIZE = TOOLINFOW.sizeof; -} else { - struct TOOLINFOA { - UINT cbSize = TOOLINFOA.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPSTR lpszText; - } - - struct TOOLINFOW { - UINT cbSize = TOOLINFOW.sizeof; - UINT uFlags; - HWND hwnd; - UINT uId; - RECT rect; - HINSTANCE hinst; - LPWSTR lpszText; - } - - const size_t - TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof, - TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof; -} -alias TOOLINFOA TTTOOLINFOA; -alias TOOLINFOW TTTOOLINFOW; -alias TTTOOLINFOA* LPTTTOOLINFOA, PTOOLINFOA, LPTOOLINFOA; -alias TTTOOLINFOW* LPTTTOOLINFOW, PTOOLINFOW, LPTOOLINFOW; - -struct TTHITTESTINFOA { - HWND hwnd; - POINT pt; - TOOLINFOA ti; -} -alias TTHITTESTINFOA* LPTTHITTESTINFOA, LPHITTESTINFOA; - -struct TTHITTESTINFOW { - HWND hwnd; - POINT pt; - TOOLINFOW ti; -} -alias TTHITTESTINFOW* LPTTHITTESTINFOW, LPHITTESTINFOW; - -static if (_WIN32_IE >= 0x300) { - 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; - } -} else { - struct NMTTDISPINFOA { - NMHDR hdr; - LPSTR lpszText; - char szText[80]; - HINSTANCE hinst; - UINT uFlags; - } - - struct NMTTDISPINFOW { - NMHDR hdr; - LPWSTR lpszText; - WCHAR szText[80]; - HINSTANCE hinst; - UINT uFlags; - } -} -alias NMTTDISPINFOA* LPNMTTDISPINFOA; -alias NMTTDISPINFOW* LPNMTTDISPINFOW; -alias NMTTDISPINFOA TOOLTIPTEXTA; -alias LPNMTTDISPINFOA LPTOOLTIPTEXTA; -alias NMTTDISPINFOW TOOLTIPTEXTW; -alias LPNMTTDISPINFOW LPTOOLTIPTEXTW; - -struct UDACCEL { - UINT nSec; - UINT nInc; -} -alias UDACCEL* LPUDACCEL; - -struct NMUPDOWN { - NMHDR hdr; - int iPos; - int iDelta; -} -alias NMUPDOWN* LPNMUPDOWN; - -deprecated { - alias NMUPDOWN NM_UPDOWN; - alias LPNMUPDOWN LPNM_UPDOWN; -} - -static if (_WIN32_WINNT >= 0x501) { - struct LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - int iGroupId; - UINT cColumns; - PUINT puColumns; - } - - struct LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - int iIndent; - int iGroupId; - UINT cColumns; - PUINT puColumns; - } -} else static if (_WIN32_IE >= 0x300) { - 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; - } -} else { - struct LVITEMA { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct LVITEMW { - UINT mask; - int iItem; - int iSubItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } -} -alias LVITEMA* LPLVITEMA; -alias LVITEMW* LPLVITEMW; -alias LVITEMA LV_ITEMA; -alias LVITEMW LV_ITEMW; - -struct LVFINDINFOA { - UINT flags; - LPCSTR psz; - LPARAM lParam; - POINT pt; - UINT vkDirection; -} - -struct LVFINDINFOW { - UINT flags; - LPCWSTR psz; - LPARAM lParam; - POINT pt; - UINT vkDirection; -} - -alias LVFINDINFOA* LPFINDINFOA; -alias LVFINDINFOA LV_FINDINFOA; -alias LVFINDINFOW* LPFINDINFOW; -alias LVFINDINFOW LV_FINDINFOW; - -struct NMLVFINDITEMA { - NMHDR hdr; - int iStart; - LVFINDINFOA lvfi; -} - -struct NMLVFINDITEMW { - NMHDR hdr; - int iStart; - LVFINDINFOW lvfi; -} - -alias NMLVFINDITEMA* PNMLVFINDITEMA, LPNMLVFINDITEMA; -alias NMLVFINDITEMW* PNMLVFINDITEMW, LPNMLVFINDITEMW; - -static if (_WIN32_IE >= 0x300) { - struct LVHITTESTINFO { - POINT pt; - UINT flags; - int iItem; - int iSubItem; - } -} else { - struct LVHITTESTINFO { - POINT pt; - UINT flags; - int iItem; - } -} -alias LVHITTESTINFO* LPLVHITTESTINFO; -alias LVHITTESTINFO LV_HITTESTINFO; - -static if (_WIN32_IE >= 0x300) { - 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; - } -} else { - struct LVCOLUMNA { - UINT mask; - int fmt; - int cx; - LPSTR pszText; - int cchTextMax; - int iSubItem; - } - struct LVCOLUMNW { - UINT mask; - int fmt; - int cx; - LPWSTR pszText; - int cchTextMax; - int iSubItem; - } -} -alias LVCOLUMNA* LPLVCOLUMNA; -alias LVCOLUMNW* LPLVCOLUMNW; -alias LVCOLUMNA LV_COLUMNA; -alias LVCOLUMNW LV_COLUMNW; - -static if (_WIN32_WINNT >= 0x501) { - /* SG: The definitions in this static if block are from the MSDN docs. - * They are not in MinGW, but nonetheless required for macros that are. - */ - struct LVGROUP { - UINT cbSize = LVGROUP.sizeof; - UINT mask; - LPWSTR pszHeader; - int cchHeader; - LPWSTR pszFooter; - int cchFooter; - int iGroupId; - UINT stateMask; - UINT state; - UINT uAlign; - static if (_WIN32_WINNT >= 0x600) { - LPWSTR pszSubtitle; - UINT cchSubtitle; - LPWSTR pszTask; - UINT cchTask; - LPWSTR pszDescriptionTop; - UINT cchDescriptionTop; - LPWSTR pszDescriptionBottom; - UINT cchDescriptionBottom; - int iTitleImage; - int iExtendedImage; - int iFirstItem; // Read only - UINT cItems; // Read only - LPWSTR pszSubsetTitle; // NULL if group is not subset - UINT cchSubsetTitle; - } - } - alias LVGROUP* PLVGROUP; - - struct LVGROUPMETRICS { - UINT cbSize = LVGROUPMETRICS.sizeof; - UINT mask; - UINT Left; - UINT Top; - UINT Right; - UINT Bottom; - COLORREF crLeft; - COLORREF crTop; - COLORREF crRight; - COLORREF crBottom; - COLORREF crHeader; - COLORREF crFooter; - } - alias LVGROUPMETRICS* PLVGROUPMETRICS; - - struct LVINSERTMARK { - UINT cbSize = LVINSERTMARK.sizeof; - DWORD dwFlags; - int iItem; - DWORD dwReserved; - } - alias LVINSERTMARK* PLVINSERTMARK; - - struct LVTILEINFO { - UINT cbSize = LVTILEINFO.sizeof; - int iItem; - UINT cColumns; - PUINT puColumns; - static if (_WIN32_WINNT >= 0x600) { - int* piColFmt; - } - } - alias LVTILEINFO* PLVTILEINFO; - - struct LVTILEVIEWINFO { - UINT cbSize = LVTILEVIEWINFO.sizeof; - DWORD dwMask; - DWORD dwFlags; - SIZE sizeTile; - int cLines; - RECT rcLabelMargin; - } - alias LVTILEVIEWINFO* PLVTILEVIEWINFO; - - struct LVINSERTGROUPSORTED { - PFNLVGROUPCOMPARE pfnGroupCompare; - LPVOID* pvData; - LVGROUP lvGroup; - } - alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; - - alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; - - struct LVSETINFOTIP { - UINT cbSize = LVSETINFOTIP.sizeof; - DWORD dwFlags; - LPWSTR pszText; - int iItem; - int iSubItem; - HBITMAP hbmp; - } - alias LVSETINFOTIP* PLVSETINFOTIP; -} - -alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; - -struct NMLISTVIEW { - NMHDR hdr; - int iItem; - int iSubItem; - UINT uNewState; - UINT uOldState; - UINT uChanged; - POINT ptAction; - LPARAM lParam; -} -alias NMLISTVIEW* LPNMLISTVIEW; - -deprecated { - alias NMLISTVIEW NM_LISTVIEW; - alias LPNMLISTVIEW LPNM_LISTVIEW; -} - -struct NMLVDISPINFOA { - NMHDR hdr; - LV_ITEMA item; -} -alias NMLVDISPINFOA* LPNMLVDISPINFOA; -alias NMLVDISPINFOA LV_DISPINFOA; - -struct NMLVDISPINFOW { - NMHDR hdr; - LV_ITEMW item; -} -alias NMLVDISPINFOW* LPNMLVDISPINFOW; -alias NMLVDISPINFOW LV_DISPINFOW; - -struct LV_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} - -struct NMLVCACHEHINT { - NMHDR hdr; - int iFrom; - int iTo; -} -alias NMLVCACHEHINT* LPNMLVCACHEHINT, PNM_CACHEHINT, LPNM_CACHEHINT; -alias NMLVCACHEHINT NM_CACHEHINT; - -struct TVITEMA { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; -} -alias TVITEMA* LPTVITEMA, LPTV_ITEMA; -alias TVITEMA TV_ITEMA; - -struct TVITEMW { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; -} -alias TVITEMW* LPTVITEMW, LPTV_ITEMW; -alias TVITEMW TV_ITEMW; - -static if (_WIN32_IE >= 0x400) { - struct TVITEMEXA { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; - int iIntegral; - } - alias TVITEMEXA* LPTVITEMEXA; - - struct TVITEMEXW { - UINT mask; - HTREEITEM hItem; - UINT state; - UINT stateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - int iSelectedImage; - int cChildren; - LPARAM lParam; - int iIntegral; - } - alias TVITEMEXW* LPTVITEMEXW; -} - -static if (_WIN32_IE >= 0x400) { - struct TVINSERTSTRUCTA { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - union { - TVITEMEXA itemex; - TV_ITEMA item; - } - } - - struct TVINSERTSTRUCTW { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - union { - TVITEMEXW itemex; - TV_ITEMW item; - } - } -} else { - struct TVINSERTSTRUCTA { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - TV_ITEMA item; - } - - struct TVINSERTSTRUCTW { - HTREEITEM hParent; - HTREEITEM hInsertAfter; - TV_ITEMW item; - } -} -alias TVINSERTSTRUCTA* LPTVINSERTSTRUCTA, LPTV_INSERTSTRUCTA; -alias TVINSERTSTRUCTA TV_INSERTSTRUCTA; -alias TVINSERTSTRUCTW* LPTVINSERTSTRUCTW, LPTV_INSERTSTRUCTW; -alias TVINSERTSTRUCTW TV_INSERTSTRUCTW; - -struct TVHITTESTINFO { - POINT pt; - UINT flags; - HTREEITEM hItem; -} -alias TVHITTESTINFO* LPTVHITTESTINFO, LPTV_HITTESTINFO; -alias TVHITTESTINFO TV_HITTESTINFO; - -alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE; -struct TVSORTCB { - HTREEITEM hParent; - PFNTVCOMPARE lpfnCompare; - LPARAM lParam; -} -alias TVSORTCB* LPTVSORTCB, LPTV_SORTCB; -alias TVSORTCB TV_SORTCB; - -struct NMTREEVIEWA { - NMHDR hdr; - UINT action; - TV_ITEMA itemOld; - TV_ITEMA itemNew; - POINT ptDrag; -} -alias NMTREEVIEWA* LPNMTREEVIEWA, LPNM_TREEVIEWA; -alias NMTREEVIEWA NM_TREEVIEWA; - -struct NMTREEVIEWW { - NMHDR hdr; - UINT action; - TV_ITEMW itemOld; - TV_ITEMW itemNew; - POINT ptDrag; -} -alias NMTREEVIEWW* LPNMTREEVIEWW, LPNM_TREEVIEWW; -alias NMTREEVIEWW NM_TREEVIEWW; - -struct NMTVDISPINFOA { - NMHDR hdr; - TVITEMA item; -} -alias NMTVDISPINFOA* LPNMTVDISPINFOA; -alias NMTVDISPINFOA TV_DISPINFOA; - -struct NMTVDISPINFOW { - NMHDR hdr; - TVITEMW item; -} -alias NMTVDISPINFOW* LPNMTVDISPINFOW; -alias NMTVDISPINFOW TV_DISPINFOW; - -static if (_WIN32_IE >= 0x400) { - struct NMTVGETINFOTIPA { - NMHDR hdr; - LPSTR pszText; - int cchTextMax; - HTREEITEM hItem; - LPARAM lParam; - } - alias NMTVGETINFOTIPA* LPNMTVGETINFOTIPA; - - struct NMTVGETINFOTIPW { - NMHDR hdr; - LPWSTR pszText; - int cchTextMax; - HTREEITEM hItem; - LPARAM lParam; - } - alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW; -} - -struct TV_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} - -struct TC_ITEMHEADERA { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPSTR pszText; - int cchTextMax; - int iImage; -} - -struct TC_ITEMHEADERW { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPWSTR pszText; - int cchTextMax; - int iImage; -} - -static if (_WIN32_IE >= 0x300) { - struct TCITEMA { - UINT mask; - DWORD dwState; - DWORD dwStateMask; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct TCITEMW { - UINT mask; - DWORD dwState; - DWORD dwStateMask; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } -} else { - struct TCITEMA { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } - - struct TCITEMW { - UINT mask; - UINT lpReserved1; - UINT lpReserved2; - LPWSTR pszText; - int cchTextMax; - int iImage; - LPARAM lParam; - } -} -alias TCITEMA* LPTCITEMA; -alias TCITEMA TC_ITEMA; -alias TCITEMW* LPTCITEMW; -alias TCITEMW TC_ITEMW; - -struct TCHITTESTINFO { - POINT pt; - UINT flags; -} -alias TCHITTESTINFO* LPTCHITTESTINFO, LPTC_HITTESTINFO; -alias TCHITTESTINFO TC_HITTESTINFO; - -struct TC_KEYDOWN { - NMHDR hdr; - WORD wVKey; - UINT flags; -} - -static if (_WIN32_IE >= 0x300) { - struct INITCOMMONCONTROLSEX { - DWORD dwSize = INITCOMMONCONTROLSEX.sizeof; - DWORD dwICC; - } - alias INITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; -} - -struct PBRANGE { - int iLow; - int iHigh; -} -alias PBRANGE* PPBRANGE; - -struct COLORSCHEME { - DWORD dwSize = COLORSCHEME.sizeof; - COLORREF clrBtnHighlight; - COLORREF clrBtnShadow; -} -alias COLORSCHEME* LPCOLORSCHEME; - -struct MCHITTESTINFO { - UINT cbSize = MCHITTESTINFO.sizeof; - POINT pt; - UINT uHit; - SYSTEMTIME st; -} -alias MCHITTESTINFO* PMCHITTESTINFO; - -alias DWORD MONTHDAYSTATE; -alias MONTHDAYSTATE* LPMONTHDAYSTATE; - -struct NMDAYSTATE { - NMHDR nmhdr; - SYSTEMTIME stStart; - int cDayState; - LPMONTHDAYSTATE prgDayState; -} -alias NMDAYSTATE* LPNMDAYSTATE; - -struct REBARINFO { - UINT cbSize = REBARINFO.sizeof; - UINT fMask; - HIMAGELIST himl; -} -alias REBARINFO* LPREBARINFO; - -static if (_WIN32_IE >= 0x400) { - struct REBARBANDINFOA { - UINT cbSize = REBARBANDINFOA.sizeof; - 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; - } - - struct REBARBANDINFOW { - UINT cbSize = REBARBANDINFOW.sizeof; - 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; - } - - enum : size_t { - REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.cyChild.offsetof, - REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.cyChild.offsetof - } -} else { - struct REBARBANDINFOA { - UINT cbSize = REBARBANDINFOA.sizeof; - 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; - } - - struct REBARBANDINFOW { - UINT cbSize = REBARBANDINFOW.sizeof; - 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; - } - - enum : size_t { - REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.sizeof, - REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.sizeof - } -} -alias REBARBANDINFOA* LPREBARBANDINFOA; -alias CPtr!(REBARBANDINFOA) LPCREBARBANDINFOA; -alias REBARBANDINFOW* LPREBARBANDINFOW; -alias CPtr!(REBARBANDINFOW) LPCREBARBANDINFOW; - -static if (_WIN32_IE >= 0x300) { - struct NMLVODSTATECHANGE { - NMHDR hdr; - int iFrom; - int iTo; - UINT uNewState; - UINT uOldState; - } - alias NMLVODSTATECHANGE* LPNMLVODSTATECHANGE; - - static if (_WIN32_WINNT >= 0x501) { - struct IMAGELISTDRAWPARAMS { - DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; - HIMAGELIST himl; - int i; - HDC hdcDst; - int x; - int y; - int cx; - int cy; - int xBitmap; - int yBitmap; - COLORREF rgbBk; - COLORREF rgbFg; - UINT fStyle; - DWORD dwRop; - DWORD fState; - DWORD Frame; - COLORREF crEffect; - } - } else { - struct IMAGELISTDRAWPARAMS { - DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; - HIMAGELIST himl; - int i; - HDC hdcDst; - int x; - int y; - int cx; - int cy; - int xBitmap; - int yBitmap; - COLORREF rgbBk; - COLORREF rgbFg; - UINT fStyle; - DWORD dwRop; - } - } - alias IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; -} - -static if (_WIN32_IE >= 0x400) { - struct NMREBARCHILDSIZE { - NMHDR hdr; - UINT uBand; - UINT wID; - RECT rcChild; - RECT rcBand; - } - alias NMREBARCHILDSIZE* LPNMREBARCHILDSIZE; - - struct NMREBAR { - NMHDR hdr; - DWORD dwMask; - UINT uBand; - UINT fStyle; - UINT wID; - LPARAM lParam; - } - alias NMREBAR* LPNMREBAR; - - struct NMRBAUTOSIZE { - NMHDR hdr; - BOOL fChanged; - RECT rcTarget; - RECT rcActual; - } - alias NMRBAUTOSIZE* LPNMRBAUTOSIZE; - - static if (_WIN32_IE >= 0x500) { - struct NMREBARCHEVRON { - NMHDR hdr; - UINT uBand; - UINT wID; - LPARAM lParam; - RECT rc; - LPARAM lParamNM; - } - alias NMREBARCHEVRON* LPNMREBARCHEVRON; - } - - struct RBHITTESTINFO { - POINT pt; - UINT flags; - int iBand; - } - alias RBHITTESTINFO* LPRBHITTESTINFO; -} - -alias HANDLE HDSA; -alias HANDLE HDPA; - -version (Unicode) { - alias HDITEMW HDITEM; - alias LPHDITEMW LPHDITEM; - alias TOOLINFOW TOOLINFO; - alias TOOLINFOW* PTOOLINFO, LPTOOLINFO; - alias TTHITTESTINFOW TTHITTESTINFO; - alias TTHITTESTINFOW* LPHITTESTINFO, LPTTHITTESTINFO; - alias TOOLTIPTEXTW TOOLTIPTEXT; - alias TOOLTIPTEXTW* LPTOOLTIPTEXT; - alias NMTTDISPINFOW NMTTDISPINFO; - alias NMTTDISPINFOW* LPNMTTDISPINFO; - alias TV_ITEMW TV_ITEM; - alias TV_ITEMW* LPTV_ITEM; - alias TVITEMW TVITEM; - alias TVITEMW* LPTVITEM; - - static if (_WIN32_IE >= 0x400) { - alias TVITEMEXW TVITEMEX; - alias TVITEMEXW* LPTVITEMEX; - } - - alias TV_INSERTSTRUCTW TV_INSERTSTRUCT; - alias TV_INSERTSTRUCTW* LPTV_INSERTSTRUCT; - alias TVINSERTSTRUCTW TVINSERTSTRUCT; - alias TVINSERTSTRUCTW* LPTVINSERTSTRUCT; - alias NM_TREEVIEWW NM_TREEVIEW; - alias NM_TREEVIEWW* LPNM_TREEVIEW; - alias NMTREEVIEWW NMTREEVIEW; - alias NMTREEVIEWW* LPNMTREEVIEW; - alias NMHDDISPINFOW NMHDDISPINFO; - alias NMHDDISPINFOW* LPNMHDDISPINFO; - - alias ACM_OPENW ACM_OPEN; - alias COMBOBOXEXITEMW COMBOBOXEXITEM; - alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM; - //alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; fixme - alias CBEM_INSERTITEMW CBEM_INSERTITEM; - alias CBEM_SETITEMW CBEM_SETITEM; - alias CBEM_GETITEMW CBEM_GETITEM; - alias CBEN_ENDEDITW CBEN_ENDEDIT; - alias NMCBEENDEDITW NMCBEENDEDIT; - alias LPNMCBEENDEDITW LPNMCBEENDEDIT; - alias PNMCBEENDEDITW PNMCBEENDEDIT; - - static if (_WIN32_IE >= 0x400) { - alias NMCOMBOBOXEXW NMCOMBOBOXEX; - alias PNMCOMBOBOXEXW PNMCOMBOBOXEX; - alias CBEN_GETDISPINFOW CBEN_GETDISPINFO; - alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN; - alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN; - alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN; - alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN; - } - - alias SB_GETTEXTW SB_GETTEXT; - alias SB_SETTEXTW SB_SETTEXT; - alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; - alias HDM_INSERTITEMW HDM_INSERTITEM; - alias HDM_GETITEMW HDM_GETITEM; - alias HDM_SETITEMW HDM_SETITEM; - alias HDN_ITEMCHANGINGW HDN_ITEMCHANGING; - alias HDN_ITEMCHANGEDW HDN_ITEMCHANGED; - alias HDN_ITEMCLICKW HDN_ITEMCLICK; - alias HDN_ITEMDBLCLICKW HDN_ITEMDBLCLICK; - alias HDN_DIVIDERDBLCLICKW HDN_DIVIDERDBLCLICK; - alias HDN_BEGINTRACKW HDN_BEGINTRACK; - alias HDN_ENDTRACKW HDN_ENDTRACK; - alias HDN_TRACKW HDN_TRACK; - - static if (_WIN32_IE >= 0x300) { - alias HDN_GETDISPINFOW HDN_GETDISPINFO; - } - - alias HD_NOTIFYW HD_NOTIFY; - alias TBSAVEPARAMSW TBSAVEPARAMS; - alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT; - alias TB_SAVERESTOREW TB_SAVERESTORE; - alias TB_ADDSTRINGW TB_ADDSTRING; - - static if (_WIN32_IE >= 0x400) { - alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO; // fixme - alias TB_GETBUTTONINFOW TB_GETBUTTONINFO; - alias TB_SETBUTTONINFOW TB_SETBUTTONINFO; - alias TB_INSERTBUTTONW TB_INSERTBUTTON; - alias TB_ADDBUTTONSW TB_ADDBUTTONS; - alias TB_MAPACCELERATORW TB_MAPACCELERATOR; - alias TB_GETSTRINGW TB_GETSTRING; - alias TBBUTTONINFOW TBBUTTONINFO; - alias LPTBBUTTONINFOW LPTBBUTTONINFO; - alias TBN_GETDISPINFOW TBN_GETDISPINFO; - alias NMTBDISPINFOW NMTBDISPINFO; - alias LPNMTBDISPINFOW LPNMTBDISPINFO; - alias NMTBGETINFOTIPW NMTBGETINFOTIP; - alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP; - } - - alias TBNOTIFYW TBNOTIFY; - alias LPTBNOTIFYW LPTBNOTIFY; - alias NMTOOLBARW NMTOOLBAR; - alias LPNMTOOLBARW LPNMTOOLBAR; - alias TTM_ADDTOOLW TTM_ADDTOOL; - alias TTM_DELTOOLW TTM_DELTOOL; - alias TTM_NEWTOOLRECTW TTM_NEWTOOLRECT; - alias TTM_GETTOOLINFOW TTM_GETTOOLINFO; - alias TTM_SETTOOLINFOW TTM_SETTOOLINFO; - alias TTM_HITTESTW TTM_HITTEST; - alias TTM_GETTEXTW TTM_GETTEXT; - alias TTM_UPDATETIPTEXTW TTM_UPDATETIPTEXT; - alias TTM_ENUMTOOLSW TTM_ENUMTOOLS; - alias TTM_GETCURRENTTOOLW TTM_GETCURRENTTOOL; - alias TTN_NEEDTEXTW TTN_NEEDTEXT; - alias TTN_GETDISPINFOW TTN_GETDISPINFO; - //alias SB_GETTEXTW SB_GETTEXT; - //alias SB_SETTEXTW SB_SETTEXT; - //alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; - alias LV_ITEMW LV_ITEM; - alias LVITEMW LVITEM; - alias LVITEM* LPLVITEM; - alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK; - - static if (_WIN32_IE >= 0x400) { - alias LVBKIMAGEW LVBKIMAGE; - alias LPLVBKIMAGEW LPLVBKIMAGE; - alias LVM_SETBKIMAGEW LVM_SETBKIMAGE; - alias LVM_GETBKIMAGEW LVM_GETBKIMAGE; - } - - alias LVM_GETITEMW LVM_GETITEM; - alias LVM_SETITEMW LVM_SETITEM; - alias LVM_INSERTITEMW LVM_INSERTITEM; - alias LV_FINDINFOW LV_FINDINFO; - alias LVFINDINFOW LVFINDINFO; - alias LPFINDINFOW LPFINDINFO; - alias NMLVFINDITEMW NMLVFINDITEM; - alias PNMLVFINDITEMW PNMLVFINDITEM; - alias LPNMLVFINDITEMW LPNMLVFINDITEM; - alias LVM_FINDITEMW LVM_FINDITEM; - alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH; - alias LVM_EDITLABELW LVM_EDITLABEL; - alias LV_COLUMNW LV_COLUMN; - alias LVCOLUMNW LVCOLUMN; - alias LVCOLUMNW* LPLVCOLUMN; - alias LVM_GETCOLUMNW LVM_GETCOLUMN; - alias LVM_SETCOLUMNW LVM_SETCOLUMN; - alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN; - alias LVM_GETITEMTEXTW LVM_GETITEMTEXT; - alias LVM_SETITEMTEXTW LVM_SETITEMTEXT; - alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING; - alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT; - alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT; - alias LVN_GETDISPINFOW LVN_GETDISPINFO; - alias LVN_SETDISPINFOW LVN_SETDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias LVN_GETINFOTIPW LVN_GETINFOTIP; - alias NMLVGETINFOTIPW NMLVGETINFOTIP; - alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP; - } - - alias LV_DISPINFOW LV_DISPINFO; - alias NMLVDISPINFOW NMLVDISPINFO; - alias LPNMLVDISPINFOW LPNMLVDISPINFO; - alias TVM_INSERTITEMW TVM_INSERTITEM; - alias TVM_GETITEMW TVM_GETITEM; - alias TVM_SETITEMW TVM_SETITEM; - alias TVM_EDITLABELW TVM_EDITLABEL; - alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING; - alias NMTVDISPINFOW TV_DISPINFO; - alias NMTVDISPINFOW NMTVDISPINFO; - alias LPNMTVDISPINFOW LPNMTVDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias NMTVGETINFOTIPW NMTVGETINFOTIP; - alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP; - alias TVN_GETINFOTIPW TVN_GETINFOTIP; - } - - alias TVN_SELCHANGINGW TVN_SELCHANGING; - alias TVN_SELCHANGEDW TVN_SELCHANGED; - alias TVN_GETDISPINFOW TVN_GETDISPINFO; - alias TVN_SETDISPINFOW TVN_SETDISPINFO; - alias TVN_ITEMEXPANDINGW TVN_ITEMEXPANDING; - alias TVN_ITEMEXPANDEDW TVN_ITEMEXPANDED; - alias TVN_BEGINDRAGW TVN_BEGINDRAG; - alias TVN_BEGINRDRAGW TVN_BEGINRDRAG; - alias TVN_DELETEITEMW TVN_DELETEITEM; - alias TVN_BEGINLABELEDITW TVN_BEGINLABELEDIT; - alias TVN_ENDLABELEDITW TVN_ENDLABELEDIT; - alias TC_ITEMHEADERW TC_ITEMHEADER; - alias TC_ITEMW TC_ITEM; - alias TCITEMW TCITEM; - alias LPTCITEMW LPTCITEM; - alias TCM_GETITEMW TCM_GETITEM; - alias TCM_SETITEMW TCM_SETITEM; - alias TCM_INSERTITEMW TCM_INSERTITEM; - alias CreateStatusWindowW CreateStatusWindow; - alias DrawStatusTextW DrawStatusText; - alias ImageList_LoadImageW ImageList_LoadImage; - alias DTM_SETFORMATW DTM_SETFORMAT; - alias DTN_USERSTRINGW DTN_USERSTRING; - alias DTN_WMKEYDOWNW DTN_WMKEYDOWN; - alias DTN_FORMATW DTN_FORMAT; - alias DTN_FORMATQUERYW DTN_FORMATQUERY; - alias REBARBANDINFOW REBARBANDINFO; - alias REBARBANDINFO* LPREBARBANDINFO; - alias LPCREBARBANDINFOW LPCREBARBANDINFO; - alias REBARBANDINFOW_V3_SIZE REBARBANDINFO_V3_SIZE; - alias RB_INSERTBANDW RB_INSERTBAND; - alias RB_SETBANDINFOW RB_SETBANDINFO; -} else { - alias HDITEMA HDITEM; - alias LPHDITEMA LPHDITEM; - alias TOOLINFOA TOOLINFO; - alias TOOLINFOA* PTOOLINFO, LPTOOLINFO; - alias TTHITTESTINFOA TTHITTESTINFO; - alias TTHITTESTINFOA* LPHITTESTINFO, LPTTHITTESTINFO; - alias TOOLTIPTEXTA TOOLTIPTEXT; - alias TOOLTIPTEXTA* LPTOOLTIPTEXT; - alias NMTTDISPINFOA NMTTDISPINFO; - alias NMTTDISPINFOA* LPNMTTDISPINFO; - alias TV_ITEMA TV_ITEM; - alias TV_ITEMA* LPTV_ITEM; - alias TVITEMA TVITEM; - alias TVITEMA* LPTVITEM; - - static if (_WIN32_IE >= 0x400) { - alias TVITEMEXA TVITEMEX; - alias TVITEMEXA* LPTVITEMEX; - } - - alias TV_INSERTSTRUCTA TV_INSERTSTRUCT; - alias TV_INSERTSTRUCTA* LPTV_INSERTSTRUCT; - alias TVINSERTSTRUCTA TVINSERTSTRUCT; - alias TVINSERTSTRUCTA* LPTVINSERTSTRUCT; - alias NM_TREEVIEWA NM_TREEVIEW; - alias NM_TREEVIEWA* LPNM_TREEVIEW; - alias NMTREEVIEWA NMTREEVIEW; - alias NMTREEVIEWA* LPNMTREEVIEW; - alias NMHDDISPINFOW NMHDDISPINFO; - alias NMHDDISPINFOW* LPNMHDDISPINFO; - - alias ACM_OPENA ACM_OPEN; - alias COMBOBOXEXITEMA COMBOBOXEXITEM; - alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM; - //alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; fixme - alias CBEM_INSERTITEMA CBEM_INSERTITEM; - alias CBEM_SETITEMA CBEM_SETITEM; - alias CBEM_GETITEMA CBEM_GETITEM; - alias CBEN_ENDEDITA CBEN_ENDEDIT; - alias NMCBEENDEDITA NMCBEENDEDIT; - alias LPNMCBEENDEDITA LPNMCBEENDEDIT; - alias PNMCBEENDEDITA PNMCBEENDEDIT; - - static if (_WIN32_IE >= 0x400) { - alias TB_GETBUTTONINFOA TB_GETBUTTONINFO; - alias TB_SETBUTTONINFOA TB_SETBUTTONINFO; - alias TB_INSERTBUTTONA TB_INSERTBUTTON; - alias TB_ADDBUTTONSA TB_ADDBUTTONS; - alias TB_MAPACCELERATORA TB_MAPACCELERATOR; - alias TB_GETSTRINGA TB_GETSTRING; - alias NMCOMBOBOXEXA NMCOMBOBOXEX; - alias PNMCOMBOBOXEXA PNMCOMBOBOXEX; - alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN; - alias CBEN_GETDISPINFOA CBEN_GETDISPINFO; - alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN; - alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN; - alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN; - alias TBN_GETDISPINFOA TBN_GETDISPINFO; - alias NMTBDISPINFOA NMTBDISPINFO; - alias LPNMTBDISPINFOA LPNMTBDISPINFO; - alias NMTBGETINFOTIPA NMTBGETINFOTIP; - alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP; - } - - alias SB_GETTEXTA SB_GETTEXT; - alias SB_SETTEXTA SB_SETTEXT; - alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH; - alias HDM_INSERTITEMA HDM_INSERTITEM; - alias HDM_GETITEMA HDM_GETITEM; - alias HDM_SETITEMA HDM_SETITEM; - alias HDN_ITEMCHANGINGA HDN_ITEMCHANGING; - alias HDN_ITEMCHANGEDA HDN_ITEMCHANGED; - alias HDN_ITEMCLICKA HDN_ITEMCLICK; - alias HDN_ITEMDBLCLICKA HDN_ITEMDBLCLICK; - alias HDN_DIVIDERDBLCLICKA HDN_DIVIDERDBLCLICK; - alias HDN_BEGINTRACKA HDN_BEGINTRACK; - alias HDN_ENDTRACKA HDN_ENDTRACK; - alias HDN_TRACKA HDN_TRACK; - - static if (_WIN32_IE >= 0x300) { - alias HDN_GETDISPINFOA HDN_GETDISPINFO; - } - - alias HD_NOTIFYA HD_NOTIFY; - alias TBSAVEPARAMSA TBSAVEPARAMS; - alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT; - alias TB_SAVERESTOREA TB_SAVERESTORE; - alias TB_ADDSTRINGA TB_ADDSTRING; - alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO; - - static if (_WIN32_IE >= 0x400) { - alias TBBUTTONINFOA TBBUTTONINFO; - alias LPTBBUTTONINFOA LPTBBUTTONINFO; - } - - alias TBNOTIFYA TBNOTIFY; - alias LPTBNOTIFYA LPTBNOTIFY; - alias NMTOOLBARA NMTOOLBAR; - alias LPNMTOOLBARA LPNMTOOLBAR; - alias TTM_ADDTOOLA TTM_ADDTOOL; - alias TTM_DELTOOLA TTM_DELTOOL; - alias TTM_NEWTOOLRECTA TTM_NEWTOOLRECT; - alias TTM_GETTOOLINFOA TTM_GETTOOLINFO; - alias TTM_SETTOOLINFOA TTM_SETTOOLINFO; - alias TTM_HITTESTA TTM_HITTEST; - alias TTM_GETTEXTA TTM_GETTEXT; - alias TTM_UPDATETIPTEXTA TTM_UPDATETIPTEXT; - alias TTM_ENUMTOOLSA TTM_ENUMTOOLS; - alias TTM_GETCURRENTTOOLA TTM_GETCURRENTTOOL; - alias TTN_NEEDTEXTA TTN_NEEDTEXT; - alias TTN_GETDISPINFOA TTN_GETDISPINFO; - alias LV_ITEMA LV_ITEM; - alias LVITEMA LVITEM; - alias LVITEM* LPLVITEM; - alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK; - - static if (_WIN32_IE >= 0x400) { - alias LVBKIMAGEA LVBKIMAGE; - alias LPLVBKIMAGEA LPLVBKIMAGE; - alias LVM_SETBKIMAGEA LVM_SETBKIMAGE; - alias LVM_GETBKIMAGEA LVM_GETBKIMAGE; - } - - alias LVM_GETITEMA LVM_GETITEM; - alias LVM_SETITEMA LVM_SETITEM; - alias LVM_INSERTITEMA LVM_INSERTITEM; - alias LV_FINDINFOA LV_FINDINFO; - alias LVFINDINFOA LVFINDINFO; - alias LPFINDINFOA LPFINDINFO; - alias NMLVFINDITEMA NMLVFINDITEM; - alias PNMLVFINDITEMA PNMLVFINDITEM; - alias LPNMLVFINDITEMA LPNMLVFINDITEM; - alias LVM_FINDITEMA LVM_FINDITEM; - alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH; - alias LVM_EDITLABELA LVM_EDITLABEL; - alias LV_COLUMNA LV_COLUMN; - alias LVCOLUMNA LVCOLUMN; - alias LVCOLUMNA* LPLVCOLUMN; - alias LVM_GETCOLUMNA LVM_GETCOLUMN; - alias LVM_SETCOLUMNA LVM_SETCOLUMN; - alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN; - alias LVM_GETITEMTEXTA LVM_GETITEMTEXT; - alias LVM_SETITEMTEXTA LVM_SETITEMTEXT; - alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING; - alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT; - alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT; - alias LVN_GETDISPINFOA LVN_GETDISPINFO; - alias LVN_SETDISPINFOA LVN_SETDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias LVN_GETINFOTIPA LVN_GETINFOTIP; - alias NMLVGETINFOTIPA NMLVGETINFOTIP; - alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP; - } - - alias LV_DISPINFOA LV_DISPINFO; - alias NMLVDISPINFOA NMLVDISPINFO; - alias LPNMLVDISPINFOA LPNMLVDISPINFO; - alias TVM_INSERTITEMA TVM_INSERTITEM; - alias TVM_GETITEMA TVM_GETITEM; - alias TVM_SETITEMA TVM_SETITEM; - alias TVM_EDITLABELA TVM_EDITLABEL; - alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING; - alias NMTVDISPINFOA TV_DISPINFO; - alias NMTVDISPINFOA NMTVDISPINFO; - alias LPNMTVDISPINFOA LPNMTVDISPINFO; - - static if (_WIN32_IE >= 0x400) { - alias NMTVGETINFOTIPA NMTVGETINFOTIP; - alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP; - alias TVN_GETINFOTIPA TVN_GETINFOTIP; - } - - alias TVN_SELCHANGINGA TVN_SELCHANGING; - alias TVN_SELCHANGEDA TVN_SELCHANGED; - alias TVN_GETDISPINFOA TVN_GETDISPINFO; - alias TVN_SETDISPINFOA TVN_SETDISPINFO; - alias TVN_ITEMEXPANDINGA TVN_ITEMEXPANDING; - alias TVN_ITEMEXPANDEDA TVN_ITEMEXPANDED; - alias TVN_BEGINDRAGA TVN_BEGINDRAG; - alias TVN_BEGINRDRAGA TVN_BEGINRDRAG; - alias TVN_DELETEITEMA TVN_DELETEITEM; - alias TVN_BEGINLABELEDITA TVN_BEGINLABELEDIT; - alias TVN_ENDLABELEDITA TVN_ENDLABELEDIT; - alias TC_ITEMHEADERA TC_ITEMHEADER; - alias TC_ITEMA TC_ITEM; - alias TCITEMA TCITEM; - alias LPTCITEMA LPTCITEM; - alias TCM_GETITEMA TCM_GETITEM; - alias TCM_SETITEMA TCM_SETITEM; - alias TCM_INSERTITEMA TCM_INSERTITEM; - alias CreateStatusWindowA CreateStatusWindow; - alias DrawStatusTextA DrawStatusText; - alias ImageList_LoadImageA ImageList_LoadImage; - alias DTM_SETFORMATA DTM_SETFORMAT; - alias DTN_USERSTRINGA DTN_USERSTRING; - alias DTN_WMKEYDOWNA DTN_WMKEYDOWN; - alias DTN_FORMATA DTN_FORMAT; - alias DTN_FORMATQUERYA DTN_FORMATQUERY; - alias REBARBANDINFOA REBARBANDINFO; - alias REBARBANDINFOA* LPREBARBANDINFO; - alias LPCREBARBANDINFOA LPCREBARBANDINFO; - alias REBARBANDINFOA_V3_SIZE REBARBANDINFO_V3_SIZE; - alias RB_INSERTBANDA RB_INSERTBAND; - alias RB_SETBANDINFOA RB_SETBANDINFO; -} - - -alias INT function(PVOID, PVOID) PFNDPAENUMCALLBACK; -alias INT function(PVOID, PVOID) PFNDSAENUMCALLBACK; -alias INT function(PVOID, PVOID, LPARAM) PFNDPACOMPARE; - -static if (_WIN32_WINNT >= 0x501) { - extern (Windows) - alias LRESULT function(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR) - SUBCLASSPROC; - - struct LITEM { - UINT mask; - int iLink; - UINT state; - UINT stateMask; - WCHAR[MAX_LINKID_TEXT] szID; - WCHAR[L_MAX_URL_LENGTH] szUrl; - } - alias LITEM* PLITEM; - - struct LHITTESTINFO { - POINT pt; - LITEM item; - } - alias LHITTESTINFO* PLHITTESTINFO; - - struct NMLINK { - NMHDR hdr; - LITEM item; - } - alias NMLINK* PNMLINK; -} - -uint INDEXTOOVERLAYMASK(uint i) { return i << 8; } -uint INDEXTOSTATEIMAGEMASK(uint i) { return i << 12; } - -template HANDLE_WM_NOTIFY(R) { - R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, - R function(HWND, int, NMHDR*) fn) { - return fn(hwnd, wParam, cast(NMHDR*) lParam); - } -} -int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, - int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) fn) { - return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); -} - -//#define CCSIZEOF_STRUCT(s, m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m)) - -LPARAM MAKEIPADDRESS(ubyte b1, ubyte b2, ubyte b3, ubyte b4) { - return (cast(DWORD) b1 << 24) - | (cast(DWORD) b2 << 16) - | (cast(DWORD) b3 << 8) - | (cast(DWORD) b4); -} - -LPARAM MAKEIPRANGE(ubyte low, ubyte high) { - return (cast(int) high << 8) | low; -} - -ubyte FIRST_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 24); -} - -ubyte SECOND_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 16); -} - -ubyte THIRD_IPADDRESS(LPARAM x) { - return cast(ubyte) (x >> 8); -} - -ubyte FOURTH_IPADDRESS(LPARAM x) { - return cast(ubyte) x; -} - -HWND Animate_Create(HWND hwndP, UINT id, DWORD dwStyle, - HINSTANCE hInstance) { - return CreateWindow(cast(TCHAR*)ANIMATE_CLASS.ptr, null, dwStyle, 0, 0, 0, 0, hwndP, - cast(HMENU) id, hInstance, null); -} - -BOOL Animate_Open(HWND hwnd, LPTSTR szName) { - return SendMessage(hwnd, ACM_OPEN, 0, cast(LPARAM) szName); -} - -BOOL Animate_OpenEx(HWND hwnd, HINSTANCE hInst, LPTSTR szName) { - return SendMessage(hwnd, ACM_OPEN, cast(WPARAM) hInst, - cast(LPARAM) szName); -} - -BOOL Animate_Play(HWND hwnd, int from, int to, int rep) { - return SendMessage(hwnd, ACM_PLAY, rep, - MAKELONG(cast(ushort) from, cast(ushort) to)); -} - -BOOL Animate_Stop(HWND hwnd) { - return SendMessage(hwnd, ACM_STOP, 0, 0); -} - -BOOL Animate_Close(HWND hwnd) { - return Animate_Open(hwnd, null); -} - -BOOL Animate_Seek(HWND hwnd, int frame) { - return Animate_Play(hwnd, frame, frame, 1); -} - -extern (Windows) { - HBITMAP CreateMappedBitmap(HINSTANCE, int, UINT, LPCOLORMAP, int); - HWND CreateStatusWindowA(LONG, LPCSTR, HWND, UINT); - HWND CreateStatusWindowW(LONG, LPCWSTR, HWND, UINT); - HWND CreateToolbarEx(HWND, DWORD, UINT, int, HINSTANCE, UINT, - LPCTBBUTTON, int, int, int, int, int, UINT); - HWND CreateUpDownControl(DWORD, int, int, int, int, HWND, int, HINSTANCE, - HWND, int, int, int); -} - -HWND DateTime_GetMonthCal(HWND hwnd) { - return cast(HWND) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0); -} - -COLORREF DateTime_GetMonthCalColor(HWND hwnd, int iColor) { - return cast(COLORREF) SendMessage(hwnd, DTM_GETMCCOLOR, iColor, 0); -} - -HFONT DateTime_GetMonthCalFont(HWND hwnd) { - return cast(HFONT) SendMessage(hwnd, DTM_GETMCFONT, 0, 0); -} - -DWORD DateTime_GetRange(HWND hwnd, LPSYSTEMTIME lpSysTimeArray) { - return SendMessage(hwnd, DTM_GETRANGE, 0, cast(LPARAM) lpSysTimeArray); -} - -DWORD DateTime_GetSystemtime(HWND hwnd, LPSYSTEMTIME lpSysTime) { - return SendMessage(hwnd, DTM_GETSYSTEMTIME, 0, cast(LPARAM) lpSysTime); -} - -BOOL DateTime_SetFormat(HWND hwnd, LPCTSTR lpszFormat) { - return cast(BOOL) SendMessage(hwnd, DTM_SETFORMAT, 0, - cast(LPARAM) lpszFormat); -} - -LRESULT DateTime_SetMonthCalColor(HWND hwnd, int iColor, COLORREF clr) { - return SendMessage(hwnd, DTM_SETMCCOLOR, cast(WPARAM) iColor, - cast(LPARAM) clr); -} - -void DateTime_SetMonthCalFont(HWND hwnd, HFONT hfont, BOOL fRedraw) { - SendMessage(hwnd, DTM_SETMCFONT, cast(WPARAM) hfont, fRedraw); -} - -BOOL DateTime_SetRange(HWND hwnd, WPARAM flags, LPSYSTEMTIME lpSysTimeArray) { - return cast(BOOL) SendMessage(hwnd, DTM_SETRANGE, flags, - cast(LPARAM) lpSysTimeArray); -} - -BOOL DateTime_SetSystemtime(HWND hwnd, WPARAM flag, LPSYSTEMTIME lpSysTime) { - return cast(BOOL) SendMessage(hwnd, DTM_SETSYSTEMTIME, flag, - cast(LPARAM) lpSysTime); -} - -extern (Windows) { - void DrawInsert(HWND, HWND, int); - void DrawStatusTextA(HDC, LPRECT, LPCSTR, UINT); - void DrawStatusTextW(HDC, LPRECT, LPCWSTR, UINT); - void GetEffectiveClientRect(HWND, LPRECT, LPINT); -} - -int Header_GetItemCount(HWND w) { - return SendMessage(w, HDM_GETITEMCOUNT, 0, 0); -} - -int Header_InsertItem(HWND w, int i, CPtr!(HDITEM) phdi) { - return SendMessage(w, HDM_INSERTITEM, i, cast(LPARAM) phdi); -} - -BOOL Header_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, HDM_DELETEITEM, i, 0); -} - -BOOL Header_GetItem(HWND w, int i, LPHDITEM phdi) { - return cast(BOOL) SendMessage(w, HDM_GETITEM, i, cast(LPARAM) phdi); -} - -BOOL Header_SetItem(HWND w, int i, CPtr!(HDITEM) phdi) { - return cast(BOOL) SendMessage(w, HDM_SETITEM, i, cast(LPARAM) phdi); -} - -BOOL Header_Layout(HWND w, LPHDLAYOUT playout) { - return SendMessage(w, HDM_LAYOUT, 0, cast(LPARAM) playout); -} - -static if (_WIN32_IE >= 0x300) { - int Header_OrderToIndex(HWND w, int i) { - return SendMessage(w, HDM_ORDERTOINDEX, i, 0); - } - - BOOL Header_GetItemRect(HWND w, int i, RECT* r) { - return cast(BOOL) SendMessage(w, HDM_GETITEMRECT, i, cast(LPARAM) r); - } - - BOOL Header_GetOrderArray(HWND w, int iSize, LPINT lpiArray) { - return cast(BOOL) SendMessage(w, HDM_GETORDERARRAY, iSize, - cast(LPARAM) lpiArray); - } - - BOOL Header_SetOrderArray(HWND w, int iSize, LPINT lpiArray) { - return cast(BOOL) SendMessage(w, HDM_SETORDERARRAY, iSize, - cast(LPARAM) lpiArray); - } - - HIMAGELIST Header_CreateDragImage(HWND w, int i) { - return cast(HIMAGELIST) SendMessage(w, HDM_CREATEDRAGIMAGE, i, 0); - } - - HIMAGELIST Header_SetImageList(HWND w, HIMAGELIST himl) { - return cast(HIMAGELIST) SendMessage(w, HDM_SETIMAGELIST, 0, - cast(LPARAM) himl); - } - - HIMAGELIST Header_GetImageList(HWND w) { - return cast(HIMAGELIST) SendMessage(w, HDM_GETIMAGELIST, 0, 0); - } -} - -static if (_WIN32_IE >= 0x400) { - BOOL Header_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, HDM_GETUNICODEFORMAT, 0, 0); - } - - BOOL Header_SetUnicodeFormat(HWND w, BOOL fUnicode) { - return cast(BOOL) SendMessage(w, HDM_SETUNICODEFORMAT, fUnicode, 0); - } -} - -extern (Windows) { - HDSA DSA_Create(INT, INT); - BOOL DSA_Destroy(HDSA); - VOID DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, PVOID); - PVOID DSA_GetItemPtr(HDSA, INT); - INT DSA_InsertItem(HDSA, INT, PVOID); - HDPA DPA_Create(INT); - BOOL DPA_Destroy(HDPA); - PVOID DPA_DeletePtr(HDPA, INT); - BOOL DPA_DeleteAllPtrs(HDPA); - VOID DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); - VOID DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); - BOOL DPA_SetPtr(HDPA, INT, PVOID); - INT DPA_InsertPtr(HDPA, INT, PVOID); - PVOID DPA_GetPtr(HDPA, INT_PTR); - BOOL DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM); - INT DPA_Search(HDPA, PVOID, INT, PFNDPACOMPARE, LPARAM, UINT); - BOOL Str_SetPtrW(LPWSTR*, LPCWSTR); - - static if (_WIN32_IE >= 0x400) { - BOOL FlatSB_EnableScrollBar(HWND, INT, UINT); - BOOL FlatSB_ShowScrollBar(HWND, INT, BOOL); - BOOL FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT); - BOOL FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO); - INT FlatSB_GetScrollPos(HWND, INT); - BOOL FlatSB_GetScrollProp(HWND, INT, LPINT); - version (Win64) { - BOOL FlatSB_GetScrollPropPtr(HWND, INT, PINT_PTR); - } else { - alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; - } - INT FlatSB_SetScrollPos(HWND, INT, INT, BOOL); - INT FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL); - INT FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL); - BOOL FlatSB_SetScrollProp(HWND, UINT, INT_PTR, BOOL); - alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; - BOOL InitializeFlatSB(HWND); - HRESULT UninitializeFlatSB(HWND); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR); - BOOL GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*); - BOOL RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR); - LRESULT DefSubclassProc(HWND, UINT, WPARAM, LPARAM); - INT DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, - COLORREF, INT, INT); - } - - int ImageList_Add(HIMAGELIST, HBITMAP, HBITMAP); - int ImageList_AddMasked(HIMAGELIST, HBITMAP, COLORREF); - BOOL ImageList_BeginDrag(HIMAGELIST, int, int, int); - HIMAGELIST ImageList_Create(int, int, UINT, int, int); - BOOL ImageList_Destroy(HIMAGELIST); - BOOL ImageList_DragEnter(HWND, int, int); - BOOL ImageList_DragLeave(HWND); - BOOL ImageList_DragMove(int, int); - BOOL ImageList_DragShowNolock(BOOL); - BOOL ImageList_Draw(HIMAGELIST, int, HDC, int, int, UINT); - BOOL ImageList_DrawEx(HIMAGELIST, int, HDC, int, int, int, int, COLORREF, - COLORREF, UINT); - void ImageList_EndDrag(PVOID); - COLORREF ImageList_GetBkColor(HIMAGELIST); - HIMAGELIST ImageList_GetDragImage(LPPOINT, LPPOINT); - HICON ImageList_GetIcon(HIMAGELIST, int, UINT); - BOOL ImageList_GetIconSize(HIMAGELIST, int*, int*); - int ImageList_GetImageCount(HIMAGELIST); - BOOL ImageList_GetImageInfo(HIMAGELIST, int, IMAGEINFO*); - HIMAGELIST ImageList_LoadImageA(HINSTANCE, LPCSTR, int, int, COLORREF, - UINT, UINT); - HIMAGELIST ImageList_LoadImageW(HINSTANCE, LPCWSTR, int, int, COLORREF, - UINT, UINT); - HIMAGELIST ImageList_Merge(HIMAGELIST, int, HIMAGELIST, int, int, int); - BOOL ImageList_Remove(HIMAGELIST, int); - BOOL ImageList_Replace(HIMAGELIST, int, HBITMAP, HBITMAP); - int ImageList_ReplaceIcon(HIMAGELIST, int, HICON); - COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF); - BOOL ImageList_SetDragCursorImage(HIMAGELIST, int, int, int); - BOOL ImageList_SetIconSize(HIMAGELIST, int, int); - BOOL ImageList_SetOverlayImage(HIMAGELIST, int, int); - - //#ifdef _OBJIDL_H - HIMAGELIST ImageList_Read(LPSTREAM); - BOOL ImageList_Write(HIMAGELIST, LPSTREAM); - //#endif - - static if (_WIN32_IE >= 0x400) { - HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); - } - - void InitCommonControls(); - - static if (_WIN32_IE >= 0x300) { - BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); - } - - int LBItemFromPt(HWND, POINT, BOOL); -} - -int ImageList_AddIcon(HIMAGELIST himl, HICON hicon) { - return ImageList_ReplaceIcon(himl, -1, hicon); -} - -HICON ImageList_ExtractIcon(HINSTANCE hi, HIMAGELIST himl, int i) { - return ImageList_GetIcon(himl, i, 0); -} - -HIMAGELIST ImageList_LoadBitmap(HINSTANCE hi, LPCTSTR lpbmp, int cx, - int cGrow, COLORREF crMask) { - return ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0); -} - -BOOL ImageList_RemoveAll(HIMAGELIST himl) { - return ImageList_Remove(himl, -1); -} - -COLORREF ListView_GetBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETBKCOLOR, 0, 0); -} - -HIMAGELIST ListView_GetImageList(HWND w, int i) { - return cast(HIMAGELIST) SendMessage(w, LVM_GETIMAGELIST, i, 0); -} - -int ListView_GetItemCount(HWND w) { - return SendMessage(w, LVM_GETITEMCOUNT, 0, 0); -} - -BOOL ListView_GetItem(HWND w, LPLVITEM pitem) { - return cast(BOOL) SendMessage(w, LVM_GETITEM, 0, cast(LPARAM) pitem); -} - -BOOL ListView_SetBkColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETBKCOLOR, 0, cast(LPARAM) c); -} - -HIMAGELIST ListView_SetImageList(HWND w, HIMAGELIST h, int i) { - return cast(HIMAGELIST) SendMessage(w, LVM_SETIMAGELIST, i, - cast(LPARAM) h); -} - -BOOL ListView_SetItem(HWND w, CPtr!(LV_ITEM) i) { - return cast(BOOL) SendMessage(w, LVM_SETITEM, 0, cast(LPARAM) i); -} - -int ListView_InsertItem(HWND w, CPtr!(LV_ITEM) i) { - return SendMessage(w, LVM_INSERTITEM, 0, cast(LPARAM) i); -} - -BOOL ListView_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, LVM_DELETEITEM, i, 0); -} - -BOOL ListView_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, LVM_DELETEALLITEMS, 0, 0); -} - -UINT ListView_GetCallbackMask(HWND w) { - return cast(UINT) SendMessage(w, LVM_GETCALLBACKMASK, 0, 0); -} - -BOOL ListView_SetCallbackMask(HWND w, UINT m) { - return cast(BOOL) SendMessage(w, LVM_SETCALLBACKMASK, m, 0); -} - -int ListView_GetNextItem(HWND w, int i, UINT f) { - return SendMessage(w, LVM_GETNEXTITEM, i, MAKELPARAM(cast(ushort)f, 0)); -} - -int ListView_FindItem(HWND w, int i, CPtr!(LV_FINDINFO) p) { - return SendMessage(w, LVM_FINDITEM, i, cast(LPARAM) p); -} - -BOOL ListView_GetItemRect(HWND w, int i, LPRECT p, int c) { - return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, p ? - (p.left = c, cast(LPARAM) p) : 0); -} - -BOOL ListView_SetItemPosition(HWND w, int i, int x, int y) { - return cast(BOOL) SendMessage(w, LVM_SETITEMPOSITION, i, MAKELPARAM(cast(ushort)x, cast(ushort)y)); -} - -BOOL ListView_GetItemPosition(HWND w, int i, POINT* p) { - return cast(BOOL) SendMessage(w, LVM_GETITEMPOSITION, i, cast(LPARAM) p); -} - -DWORD ListView_GetItemSpacing(HWND w, BOOL f) { - return cast(DWORD) SendMessage(w, LVM_GETITEMSPACING, f, 0); -} - -int ListView_GetStringWidth(HWND w, LPCSTR s) { - return SendMessage(w, LVM_GETSTRINGWIDTH, 0, cast(LPARAM) s); -} - -int ListView_HitTest(HWND w, LPLVHITTESTINFO p) { - return SendMessage(w, LVM_HITTEST, 0, cast(LPARAM) p); -} - -BOOL ListView_EnsureVisible(HWND w, int i, BOOL f) { - return cast(BOOL) SendMessage(w, LVM_ENSUREVISIBLE, i, MAKELPARAM(cast(ushort)f, 0)); -} - -BOOL ListView_Scroll(HWND w, int dx, int dy) { - return cast(BOOL) SendMessage(w, LVM_SCROLL, dx, dy); -} - -BOOL ListView_RedrawItems(HWND w, int f, int l) { - return cast(BOOL) SendMessage(w, LVM_REDRAWITEMS, f, l); -} - -BOOL ListView_Arrange(HWND w, UINT c) { - return cast(BOOL) SendMessage(w, LVM_ARRANGE, c, 0); -} - -HWND ListView_EditLabel(HWND w, int i) { - return cast(HWND) SendMessage(w, LVM_EDITLABEL, i, 0); -} - -HWND ListView_GetEditControl(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETEDITCONTROL, 0, 0); -} - -BOOL ListView_GetColumn(HWND w, int i, LPLVCOLUMN p) { - return cast(BOOL) SendMessage(w, LVM_GETCOLUMN, i, cast(LPARAM) p); -} - -BOOL ListView_SetColumn(HWND w, int i, CPtr!(LV_COLUMN) p) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMN, i, cast(LPARAM) p); -} - -int ListView_InsertColumn(HWND w, int i, CPtr!(LV_COLUMN) p) { - return SendMessage(w, LVM_INSERTCOLUMN, i, cast(LPARAM) p); -} - -BOOL ListView_DeleteColumn(HWND w, int i) { - return cast(BOOL) SendMessage(w, LVM_DELETECOLUMN, i, 0); -} - -int ListView_GetColumnWidth(HWND w, int i) { - return SendMessage(w, LVM_GETCOLUMNWIDTH, i, 0); -} - -BOOL ListView_SetColumnWidth(HWND w, int i, int x) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMNWIDTH, i, MAKELPARAM(cast(ushort)x, 0)); -} - -HIMAGELIST ListView_CreateDragImage(HWND w, int i, LPPOINT p) { - return cast(HIMAGELIST) SendMessage(w, LVM_CREATEDRAGIMAGE, i, - cast(LPARAM) p); -} - -BOOL ListView_GetViewRect(HWND w, RECT* p) { - return cast(BOOL) SendMessage(w, LVM_GETVIEWRECT, 0, cast(LPARAM) p); -} - -COLORREF ListView_GetTextColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETTEXTCOLOR, 0, 0); -} - -BOOL ListView_SetTextColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETTEXTCOLOR, 0, cast(LPARAM) c); -} - -COLORREF ListView_GetTextBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, LVM_GETTEXTBKCOLOR, 0, 0); -} - -BOOL ListView_SetTextBkColor(HWND w, COLORREF c) { - return cast(BOOL) SendMessage(w, LVM_SETTEXTBKCOLOR, 0, cast(LPARAM) c); -} - -int ListView_GetTopIndex(HWND w) { - return SendMessage(w, LVM_GETTOPINDEX, 0, 0); -} - -int ListView_GetCountPerPage(HWND w) { - return SendMessage(w, LVM_GETCOUNTPERPAGE, 0, 0); -} - -BOOL ListView_GetOrigin(HWND w, LPPOINT p) { - return cast(BOOL) SendMessage(w, LVM_GETORIGIN, 0, cast(LPARAM) p); -} - -BOOL ListView_Update(HWND w, WPARAM i) { - return cast(BOOL) SendMessage(w, LVM_UPDATE, i, 0); -} - -void ListView_SetItemState(HWND w, int i, UINT d, UINT m) { - LV_ITEM _lvi; - _lvi.stateMask = m; - _lvi.state = d; - SendMessage(w, LVM_SETITEMSTATE, i, cast(LPARAM) &_lvi); -} - -UINT ListView_GetItemState(HWND w, int i, UINT m) { - return cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, m); -} - -void ListView_GetItemText(HWND w, int i, int iS, LPTSTR s, int n) { - LV_ITEM _lvi; - _lvi.iSubItem = iS; - _lvi.cchTextMax = n; - _lvi.pszText = s; - SendMessage(w, LVM_GETITEMTEXT, i, cast(LPARAM) &_lvi); -} - -void ListView_SetItemText(HWND w, int i, int iS, LPTSTR s) { - LV_ITEM _lvi; - _lvi.iSubItem = iS; - _lvi.pszText = s; - SendMessage(w, LVM_SETITEMTEXT, i, cast(LPARAM) &_lvi); -} - -void ListView_SetItemCount(HWND w, int n) { - SendMessage(w, LVM_SETITEMCOUNT, n, 0); -} - -BOOL ListView_SortItems(HWND w, PFNLVCOMPARE f, LPARAM l) { - return cast(BOOL) SendMessage(w, LVM_SORTITEMS, l, cast(LPARAM) f); -} - -void ListView_SetItemPosition32(HWND w, int i, int x, int y) { - POINT p; - p.x = x; - p.y = y; - SendMessage(w, LVM_SETITEMPOSITION32, i, cast(LPARAM) &p); -} - -UINT ListView_GetSelectedCount(HWND w) { - return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOUNT, 0, 0); -} - -UINT ListView_GetCheckState(HWND w, UINT i) { - return ((cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK)) >> 12) - 1; -} - -void ListView_SetCheckState(HWND w, UINT i, BOOL f) { - ListView_SetItemState(w, i, INDEXTOSTATEIMAGEMASK(f ? 2 : 1), - LVIS_STATEIMAGEMASK); -} - -BOOL ListView_GetISearchString(HWND w, LPSTR lpsz) { - return cast(BOOL) SendMessage(w, LVM_GETISEARCHSTRING, 0, - cast(LPARAM) lpsz); -} - -void ListView_CancelEditLabel(HWND w) { - SendMessage(w, LVM_CANCELEDITLABEL, 0, 0); -} - -int ListView_EnableGroupView(HWND w, BOOL i) { - return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0); -} - -static if (_WIN32_WINDOWS >= 0x410 && (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500)) { - BOOL ListView_SortItemsEx(HWND w, PFNLVCOMPARE c, LPARAM p) { - return SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c); - } -} - -static if (_WIN32_WINNT >= 0x501) { - int ListView_GetGroupInfo(HWND w, int i, PLVGROUP p) { - return SendMessage(w, LVM_GETGROUPINFO, i, cast(LPARAM) p); - } - - void ListView_GetGroupMetrics(HWND w, PLVGROUPMETRICS p) { - SendMessage(w, LVM_GETGROUPMETRICS, 0, cast(LPARAM) p); - } - - BOOL ListView_GetInsertMark(HWND w, PLVINSERTMARK p) { - return SendMessage(w, LVM_GETINSERTMARK, 0, cast(LPARAM) p); - } - - COLORREF ListView_GetInsertMarkColor(HWND w) { - return SendMessage(w, LVM_GETINSERTMARKCOLOR, 0, 0); - } - - int ListView_GetInsertMarkRect(HWND w, LPRECT p) { - return SendMessage(w, LVM_GETINSERTMARKRECT, 0, cast(LPARAM) p); - } - - COLORREF ListView_GetOutlineColor(HWND w) { - return SendMessage(w, LVM_GETOUTLINECOLOR, 0, 0); - } - - UINT ListView_GetSelectedColumn(HWND w) { - return SendMessage(w, LVM_GETSELECTEDCOLUMN, 0, 0); - } - - void ListView_GetTileInfo(HWND w, PLVTILEINFO p) { - SendMessage(w, LVM_GETTILEINFO, 0, cast(LPARAM) p); - } - - void ListView_GetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { - SendMessage(w, LVM_GETTILEVIEWINFO, 0, cast(LPARAM) p); - } - - DWORD ListView_GetView(HWND w) { - return SendMessage(w, LVM_GETVIEW, 0, 0); - } - - BOOL ListView_HasGroup(HWND w, int i) { - return SendMessage(w, LVM_HASGROUP, i, 0); - } - - int ListView_InsertGroup(HWND w, int i, PLVGROUP p) { - return SendMessage(w, LVM_INSERTGROUP, i, cast(LPARAM) p); - } - - void ListView_InsertGroupSorted(HWND w, PLVINSERTGROUPSORTED p) { - SendMessage(w, LVM_INSERTGROUPSORTED, cast(WPARAM) p, 0); - } - - BOOL ListView_InsertMarkHitTest(HWND w, LPPOINT p, PLVINSERTMARK t) { - return SendMessage(w, LVM_INSERTMARKHITTEST, cast(WPARAM) p, cast(LPARAM) t); - } - - BOOL ListView_IsGroupViewEnabled(HWND w) { - return SendMessage(w, LVM_ISGROUPVIEWENABLED, 0, 0); - } - - UINT ListView_MapIDToIndex(HWND w, UINT i) { - return SendMessage(w, LVM_MAPIDTOINDEX, i, 0); - } - - /* ??? MSDN documents this as "Not implemented", except in relation to - * Windows CE/Mobile. - */ - void ListView_MoveGroup(HWND w, int i, int t) { - SendMessage(w, LVM_MOVEGROUP, i, t); - } - - void ListView_RemoveAllGroups(HWND w) { - SendMessage(w, LVM_REMOVEALLGROUPS, 0, 0); - } - - int ListView_RemoveGroup(HWND w, int i) { - return SendMessage(w, LVM_REMOVEGROUP, i, 0); - } - - int ListView_SetGroupInfo(HWND w, int i, PLVGROUP p) { - return SendMessage(w, LVM_SETGROUPINFO, i, cast(LPARAM) p); - } - - void ListView_SetGroupMetrics(HWND w, PLVGROUPMETRICS p) { - SendMessage(w, LVM_SETGROUPMETRICS, 0, cast(LPARAM) p); - } - - BOOL ListView_SetInfoTip(HWND w, PLVSETINFOTIP p) { - return SendMessage(w, LVM_SETINFOTIP, 0, cast(LPARAM) p); - } - - BOOL ListView_SetInsertMark(HWND w, PLVINSERTMARK p) { - return SendMessage(w, LVM_SETINSERTMARK, 0, cast(LPARAM) p); - } - - COLORREF ListView_SetInsertMarkColor(HWND w, COLORREF c) { - return SendMessage(w, LVM_SETINSERTMARKCOLOR, 0, c); - } - - COLORREF ListView_SetOutlineColor(HWND w, COLORREF c) { - return SendMessage(w, LVM_SETOUTLINECOLOR, 0, c); - } - - void ListView_SetSelectedColumn(HWND w, int i) { - SendMessage(w, LVM_SETSELECTEDCOLUMN, i, 0); - } - - BOOL ListView_SetTileInfo(HWND w, PLVTILEINFO p) { - return SendMessage(w, LVM_SETTILEINFO, 0, cast(LPARAM) p); - } - - BOOL ListView_SetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { - return SendMessage(w, LVM_SETTILEVIEWINFO, 0, cast(LPARAM) p); - } - - int ListView_SetView(HWND w, DWORD i) { - return SendMessage(w, LVM_SETVIEW, i, 0); - } - - int ListView_SortGroups(HWND w, PFNLVGROUPCOMPARE c, LPVOID p) { - return SendMessage(w, LVM_SORTGROUPS, cast(WPARAM) c, cast(LPARAM) p); - } -} - -static if (_WIN32_WINNT >= 0x501) { - enum { - CBM_FIRST = 0x1700, - CB_SETMINVISIBLE = CBM_FIRST + 1, - CB_GETMINVISIBLE = CBM_FIRST + 2 - } - - BOOL ComboBox_SetMinVisible(HWND w, INT i) { - return cast(BOOL) SendMessage(w, CB_SETMINVISIBLE, cast(WPARAM) i, 0); - } - - int ComboBox_GetMinVisible(HWND w) { - return SendMessage(w, CB_GETMINVISIBLE, 0, 0); - } -} - -extern (Windows) BOOL MakeDragList(HWND); -extern (Windows) void MenuHelp(UINT, WPARAM, LPARAM, HMENU, HINSTANCE, HWND, - PUINT); - -COLORREF MonthCal_GetColor(HWND hwnd, INT icolor) { - return cast(COLORREF) SendMessage(hwnd, MCM_GETCOLOR, - cast(WPARAM) icolor, 0); -} - -BOOL MonthCal_GetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { - return cast(BOOL) SendMessage(hwnd, MCM_GETCURSEL, 0, - cast(LPARAM) lpsystime); -} - -DWORD MonthCal_GetFirstDayOfWeek(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETFIRSTDAYOFWEEK, 0, 0); -} - -DWORD MonthCal_GetMaxSelCount(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETMAXSELCOUNT, 0, 0); -} - -DWORD MonthCal_GetMaxTodayWidth(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, MCM_GETMAXTODAYWIDTH, 0, 0); -} - -BOOL MonthCal_GetMinReqRect(HWND hwnd, LPRECT lpRectInfo) { - return cast(BOOL) SendMessage(hwnd, MCM_GETMINREQRECT, 0, - cast(LPARAM) lpRectInfo); -} - -INT MonthCal_GetMonthDelta(HWND hwnd) { - return SendMessage(hwnd, MCM_GETMONTHDELTA, 0, 0); -} - -INT MonthCal_GetMonthRange(HWND hwnd, DWORD flag, LPSYSTEMTIME systimearray) { - return SendMessage(hwnd, MCM_GETMONTHRANGE, cast(WPARAM) flag, - cast(LPARAM) systimearray); -} - -DWORD MonthCal_GetRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(DWORD) SendMessage(hwnd, MCM_GETRANGE, 0, - cast(LPARAM) systimearray); -} - -BOOL MonthCal_GetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(BOOL) SendMessage(hwnd, MCM_GETSELRANGE, 0, - cast(LPARAM) systimearray); -} - -BOOL MonthCal_GetToday(HWND hwnd, LPSYSTEMTIME systime) { - return cast(BOOL) SendMessage(hwnd, MCM_GETTODAY, 0, - cast(LPARAM) systime); -} - -BOOL MonthCal_GetUnicodeFormat(HWND hwnd) { - return cast(BOOL) SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0); -} - -DWORD MonthCal_HitTest(HWND hwnd, PMCHITTESTINFO pmchittest) { - return cast(DWORD) SendMessage(hwnd, MCM_HITTEST, 0, - cast(LPARAM) pmchittest); -} - -COLORREF MonthCal_SetColor(HWND hwnd, INT icolor, COLORREF clr) { - return cast(COLORREF) SendMessage(hwnd, MCM_SETCOLOR, cast(WPARAM) icolor, - cast(LPARAM) clr); -} - -BOOL MonthCal_SetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { - return cast(BOOL) SendMessage(hwnd, MCM_SETCURSEL, 0, - cast(LPARAM) lpsystime); -} - -BOOL MonthCal_SetDayState(HWND hwnd, INT imonths, LPMONTHDAYSTATE lpdatestatearray) { - return cast(BOOL) SendMessage(hwnd, MCM_SETDAYSTATE, cast(WPARAM) imonths, - cast(LPARAM) lpdatestatearray); -} - -DWORD MonthCal_SetFirstDayOfWeek(HWND hwnd, INT iday) { - return cast(DWORD) SendMessage(hwnd, MCM_SETFIRSTDAYOFWEEK, 0, - cast(LPARAM) iday); -} - -BOOL MonthCal_SetMaxSelCount(HWND hwnd, UINT imax) { - return cast(BOOL) SendMessage(hwnd, MCM_SETMAXSELCOUNT, - cast(WPARAM) imax, 0); -} - -INT MonthCal_SetMonthDelta(HWND hwnd, INT idelta) { - return SendMessage(hwnd, MCM_SETMONTHDELTA, cast(WPARAM) idelta, 0); -} - -BOOL MonthCal_SetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { - return cast(BOOL) SendMessage(hwnd, MCM_SETSELRANGE, 0, - cast(LPARAM) systimearray); -} - -void MonthCal_SetToday(HWND hwnd, LPSYSTEMTIME systime) { - SendMessage(hwnd, MCM_SETTODAY, 0, cast(LPARAM) systime); -} - -BOOL MonthCal_SetUnicodeFormat(HWND hwnd, BOOL unicode) { - return cast(BOOL) SendMessage(hwnd, MCM_SETUNICODEFORMAT, - cast(WPARAM) unicode, 0); -} - -BOOL MonthCal_SetRange(HWND w, DWORD f, LPSYSTEMTIME st) { - return cast(BOOL) SendMessage(w, MCM_SETRANGE, cast(WPARAM) f, - cast(LPARAM) st); -} - -extern (Windows) BOOL ShowHideMenuCtl(HWND, UINT, PINT); - -BOOL TabCtrl_GetItem(HWND w, int i, LPTCITEM p) { - return cast(BOOL) SendMessage(w, TCM_GETITEM, i, cast(LPARAM) p); -} - -BOOL TabCtrl_SetItem(HWND w, int i, LPTCITEM p) { - return cast(BOOL) SendMessage(w, TCM_SETITEM, i, cast(LPARAM) p); -} - -int TabCtrl_InsertItem(HWND w, int i, CPtr!(TC_ITEM) p) { - return SendMessage(w, TCM_INSERTITEM, i, cast(LPARAM) p); -} - -BOOL TabCtrl_DeleteItem(HWND w, int i) { - return cast(BOOL) SendMessage(w, TCM_DELETEITEM, i, 0); -} - -BOOL TabCtrl_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, TCM_DELETEALLITEMS, 0, 0); -} - -BOOL TabCtrl_GetItemRect(HWND w, int i, LPRECT p) { - return cast(BOOL) SendMessage(w, TCM_GETITEMRECT, i, cast(LPARAM) p); -} - -int TabCtrl_GetCurSel(HWND w) { - return SendMessage(w, TCM_GETCURSEL, 0, 0); -} - -int TabCtrl_SetCurSel(HWND w, int i) { - return SendMessage(w, TCM_SETCURSEL, i, 0); -} - -int TabCtrl_HitTest(HWND w, LPTCHITTESTINFO p) { - return SendMessage(w, TCM_HITTEST, 0, cast(LPARAM) p); -} - -BOOL TabCtrl_SetItemExtra(HWND w, int c) { - return cast(BOOL) SendMessage(w, TCM_SETITEMEXTRA, c, 0); -} - -int TabCtrl_AdjustRect(HWND w, BOOL b, LPRECT p) { - return SendMessage(w, TCM_ADJUSTRECT, b, cast(LPARAM) p); -} - -DWORD TabCtrl_SetItemSize(HWND w, int x, int y) { - return cast(DWORD) SendMessage(w, TCM_SETITEMSIZE, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); -} - -void TabCtrl_RemoveImage(HWND w, int i) { - SendMessage(w, TCM_REMOVEIMAGE, i, 0); -} - -void TabCtrl_SetPadding(HWND w, int x, int y) { - SendMessage(w, TCM_SETPADDING, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); -} - -int TabCtrl_GetRowCount(HWND w) { - return SendMessage(w, TCM_GETROWCOUNT, 0, 0); -} - -HWND TabCtrl_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, TCM_GETTOOLTIPS, 0, 0); -} - -void TabCtrl_SetToolTips(HWND w, HWND t) { - SendMessage(w, TCM_SETTOOLTIPS, cast(WPARAM) t, 0); -} - -int TabCtrl_GetCurFocus(HWND w) { - return SendMessage(w, TCM_GETCURFOCUS, 0, 0); -} - -void TabCtrl_SetCurFocus(HWND w, int i) { - SendMessage(w, TCM_SETCURFOCUS, i, 0); -} - -HIMAGELIST TabCtrl_GetImageList(HWND w) { - return cast(HIMAGELIST) SendMessage(w, TCM_GETIMAGELIST, 0, 0); -} - -HIMAGELIST TabCtrl_SetImageList(HWND w, HIMAGELIST h) { - return cast(HIMAGELIST) SendMessage(w, TCM_SETIMAGELIST, 0, - cast(LPARAM) h); -} - -int TabCtrl_GetItemCount(HWND w) { - return SendMessage(w, TCM_GETITEMCOUNT, 0, 0); -} - -extern (Windows) BOOL _TrackMouseEvent(LPTRACKMOUSEEVENT); - -HTREEITEM TreeView_InsertItem(HWND w, LPTVINSERTSTRUCT i) { - return cast(HTREEITEM) SendMessage(w, TVM_INSERTITEM, 0, cast(LPARAM) i); -} - -BOOL TreeView_DeleteItem(HWND w, HTREEITEM i) { - return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) i); -} - -BOOL TreeView_DeleteAllItems(HWND w) { - return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) TVI_ROOT); -} - -BOOL TreeView_Expand(HWND w, HTREEITEM i, UINT c) { - return cast(BOOL) SendMessage(w, TVM_EXPAND, c, cast(LPARAM) i); -} - -BOOL TreeView_GetItemRect(HWND w, HTREEITEM i, LPRECT p, BOOL c) { - *cast(HTREEITEM*) p = i; - return cast(BOOL) SendMessage(w, TVM_GETITEMRECT, c, cast(LPARAM) p); -} - -UINT TreeView_GetCount(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETCOUNT, 0, 0); -} - -UINT TreeView_GetIndent(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETINDENT, 0, 0); -} - -BOOL TreeView_SetIndent(HWND w, INT i) { - return cast(BOOL) SendMessage(w, TVM_SETINDENT, i, 0); -} - -HIMAGELIST TreeView_GetImageList(HWND w, INT i) { - return cast(HIMAGELIST) SendMessage(w, TVM_GETIMAGELIST, i, 0); -} - -HIMAGELIST TreeView_SetImageList(HWND w, HIMAGELIST h, INT i) { - return cast(HIMAGELIST) SendMessage(w, TVM_SETIMAGELIST, i, - cast(LPARAM) h); -} - -HTREEITEM TreeView_GetNextItem(HWND w, HTREEITEM i, UINT c) { - return cast(HTREEITEM) SendMessage(w, TVM_GETNEXTITEM, c, cast(LPARAM) i); -} - -HTREEITEM TreeView_GetChild(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_CHILD); -} - -HTREEITEM TreeView_GetNextSibling(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_NEXT); -} - -HTREEITEM TreeView_GetPrevSibling(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PREVIOUS); -} - -HTREEITEM TreeView_GetParent(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PARENT); -} - -HTREEITEM TreeView_GetFirstVisible(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_FIRSTVISIBLE); -} - -HTREEITEM TreeView_GetNextVisible(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_NEXTVISIBLE); -} - -HTREEITEM TreeView_GetPrevVisible(HWND w, HTREEITEM i) { - return TreeView_GetNextItem(w, i, TVGN_PREVIOUSVISIBLE); -} - -HTREEITEM TreeView_GetSelection(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_CARET); -} - -HTREEITEM TreeView_GetDropHilight(HTREEITEM w) { - return TreeView_GetNextItem(w, null, TVGN_DROPHILITE); -} - -HTREEITEM TreeView_GetRoot(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_ROOT); -} - -BOOL TreeView_Select(HWND w, HTREEITEM i, UINT c) { - return cast(BOOL) SendMessage(w, TVM_SELECTITEM, c, cast(LPARAM) i); -} - -BOOL TreeView_SelectItem(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_CARET); -} - -BOOL TreeView_SelectDropTarget(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_DROPHILITE); -} - -BOOL TreeView_SelectSetFirstVisible(HWND w, HTREEITEM i) { - return TreeView_Select(w, i, TVGN_FIRSTVISIBLE); -} - -BOOL TreeView_GetItem(HWND w, LPTVITEM i) { - return cast(BOOL) SendMessage(w, TVM_GETITEM, 0, cast(LPARAM) i); -} - -BOOL TreeView_SetItem(HWND w, CPtr!(TV_ITEM) i) { - return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) i); -} - -HWND TreeView_EditLabel(HWND w, HTREEITEM i) { - return cast(HWND) SendMessage(w, TVM_EDITLABEL, 0, cast(LPARAM) i); -} - -HWND TreeView_GetEditControl(HWND w) { - return cast(HWND) SendMessage(w, TVM_GETEDITCONTROL, 0, 0); -} - -UINT TreeView_GetVisibleCount(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETVISIBLECOUNT, 0, 0); -} - -HTREEITEM TreeView_HitTest(HWND w, LPTVHITTESTINFO p) { - return cast(HTREEITEM) SendMessage(w, TVM_HITTEST, 0, cast(LPARAM) p); -} - -HIMAGELIST TreeView_CreateDragImage(HWND w, HTREEITEM i) { - return cast(HIMAGELIST) SendMessage(w, TVM_CREATEDRAGIMAGE, 0, - cast(LPARAM) i); -} - -BOOL TreeView_SortChildren(HWND w, HTREEITEM i, BOOL r) { - return cast(BOOL) SendMessage(w, TVM_SORTCHILDREN, r, cast(LPARAM) i); -} - -BOOL TreeView_EnsureVisible(HWND w, HTREEITEM i) { - return cast(BOOL) SendMessage(w, TVM_ENSUREVISIBLE, 0, cast(LPARAM) i); -} - -BOOL TreeView_SortChildrenCB(HWND w, LPTVSORTCB s, BOOL r) { - return cast(BOOL) SendMessage(w, TVM_SORTCHILDRENCB, r, cast(LPARAM) s); -} - -BOOL TreeView_EndEditLabelNow(HWND w, BOOL f) { - return cast(BOOL) SendMessage(w, TVM_ENDEDITLABELNOW, f, 0); -} - -BOOL TreeView_GetISearchString(HWND w, LPTSTR s) { - return cast(BOOL) SendMessage(w, TVM_GETISEARCHSTRING, 0, cast(LPARAM) s); -} - -static if (_WIN32_IE >= 0x300) { - DWORD ListView_ApproximateViewRect(HWND w, int iw, int ih, int i) { - return cast(DWORD) SendMessage(w, LVM_APPROXIMATEVIEWRECT, i, - MAKELPARAM(cast(ushort)iw, cast(ushort)ih)); - } - - DWORD ListView_SetExtendedListViewStyle(HWND w, DWORD s) { - return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, s); - } - - DWORD ListView_GetExtendedListViewStyle(HWND w) { - return cast(DWORD) SendMessage(w, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); - } - - BOOL ListView_SetColumnOrderArray(HWND w, int i, int* a) { - return cast(BOOL) SendMessage(w, LVM_SETCOLUMNORDERARRAY, - cast(WPARAM) i, cast(LPARAM) a); - } - - BOOL ListView_GetColumnOrderArray(HWND w, int i, int* a) { - return cast(BOOL) SendMessage(w, LVM_GETCOLUMNORDERARRAY, - cast(WPARAM) i, cast(LPARAM) a); - } - - HWND ListView_GetHeader(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETHEADER, 0, 0); - } - - HCURSOR ListView_GetHotCursor(HWND w) { - return cast(HCURSOR) SendMessage(w, LVM_GETHOTCURSOR, 0, 0); - } - - INT ListView_GetHotItem(HWND w) { - return SendMessage(w, LVM_GETHOTITEM, 0, 0); - } - - BOOL ListView_GetSubItemRect(HWND w, int i, int isi, int c, LPRECT p) { - return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, - p ? (p.left = c, p.top = isi, cast(LPARAM) p) : 0); - } - - HCURSOR ListView_SetHotCursor(HWND w, HCURSOR c) { - return cast(HCURSOR) SendMessage(w, LVM_SETHOTCURSOR, 0, - cast(LPARAM) c); - } - - INT ListView_SetHotItem(HWND w, INT i) { - return SendMessage(w, LVM_SETHOTITEM, cast(WPARAM) i, 0); - } - - DWORD ListView_SetIconSpacing(HWND w, int x, int y) { - return cast(DWORD) SendMessage(w, LVM_SETICONSPACING, 0, - MAKELONG(cast(ushort)x, cast(ushort)y)); - } - - INT ListView_SubItemHitTest(HWND w, LPLVHITTESTINFO p) { - return SendMessage(w, LVM_SUBITEMHITTEST, 0, cast(LPARAM) p); - } - - BOOL ListView_SetItemCountEx(HWND w, int i, DWORD f) { - return cast(BOOL) SendMessage(w, LVM_SETITEMCOUNT, i, cast(LPARAM) f); - } - - extern (Windows) { - WINBOOL ImageList_SetImageCount(HIMAGELIST, UINT); - WINBOOL ImageList_Copy(HIMAGELIST, int, HIMAGELIST, int, UINT); - WINBOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); - } - - int TabCtrl_SetMinTabWidth(HWND hwnd, int x) { - return SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x); - } - - VOID TabCtrl_DeselectAll(HWND hwnd, UINT fExcludeFocus) { - SendMessage(hwnd, TCM_DESELECTALL, fExcludeFocus, 0); - } - - HWND TreeView_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, TVM_GETTOOLTIPS, 0, 0); - } - - HWND TreeView_SetToolTips(HWND w, HWND wt) { - return cast(HWND) SendMessage(w, TVM_SETTOOLTIPS, cast(WPARAM) wt, 0); - } -} - -static if (_WIN32_IE >= 0x400) { - BOOL ListView_GetBkImage(HWND h, LPLVBKIMAGE plvbki) { - return cast(BOOL) SendMessage(h, LVM_GETBKIMAGE, 0, - cast(LPARAM) plvbki); - } - - BOOL ListView_SetBkImage(HWND h, LPLVBKIMAGE plvbki) { - return cast(BOOL) SendMessage(h, LVM_SETBKIMAGE, 0, - cast(LPARAM) plvbki); - } - - DWORD ListView_SetExtendedListViewStyleEx(HWND w, DWORD m, DWORD s) { - return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, m, s); - } - - VOID ListView_SetWorkAreas(HWND w, INT n, LPRECT r) { - SendMessage(w, LVM_SETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); - } - - VOID ListView_GetWorkAreas(HWND w, INT n, LPRECT r) { - SendMessage(w, LVM_GETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); - } - - BOOL ListView_GetNumberOfWorkAreas(HWND w, LPUINT n) { - return cast(BOOL) SendMessage(w, LVM_GETNUMBEROFWORKAREAS, 0, - cast(LPARAM) n); - } - - DWORD ListView_SetHoverTime(HWND w, DWORD t) { - return cast(DWORD) SendMessage(w, LVM_SETHOVERTIME, 0, - cast(LPARAM) t); - } - - DWORD ListView_GetHoverTime(HWND w) { - return cast(DWORD) SendMessage(w, LVM_GETHOVERTIME, 0, 0); - } - - INT ListView_GetSelectionMark(HWND w) { - return SendMessage(w, LVM_GETSELECTIONMARK, 0, 0); - } - - INT ListView_SetSelectionMark(HWND w, INT i) { - return SendMessage(w, LVM_SETSELECTIONMARK, 0, cast(LPARAM) i); - } - - HWND ListView_SetToolTips(HWND w, HWND n) { - return cast(HWND) SendMessage(w, LVM_SETTOOLTIPS, cast(WPARAM) n, 0); - } - - HWND ListView_GetToolTips(HWND w) { - return cast(HWND) SendMessage(w, LVM_GETTOOLTIPS, 0, 0); - } - - BOOL ListView_SetUnicodeFormat(HWND w, BOOL f) { - return cast(BOOL) SendMessage(w, LVM_SETUNICODEFORMAT, - cast(WPARAM) f, 0); - } - - BOOL ListView_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, LVM_GETUNICODEFORMAT, 0, 0); - } - - BOOL TabCtrl_HighlightItem(HWND hwnd, INT i, WORD fHighlight) { - return cast(BOOL) SendMessage(hwnd, TCM_HIGHLIGHTITEM, - cast(WPARAM) i, cast(LPARAM) MAKELONG(fHighlight, 0)); - } - - DWORD TabCtrl_SetExtendedStyle(HWND hwnd, DWORD dw) { - return cast(DWORD) SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw); - } - - DWORD TabCtrl_GetExtendedStyle(HWND hwnd) { - return cast(DWORD) SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0); - } - - BOOL TabCtrl_SetUnicodeFormat(HWND hwnd, HWND fUnicode) { - return cast(BOOL) SendMessage(hwnd, TCM_SETUNICODEFORMAT, - cast(WPARAM) fUnicode, 0); - } - - BOOL TabCtrl_GetUnicodeFormat(HWND hwnd) { - return cast(BOOL) SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0); - } - - COLORREF TreeView_GetBkColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETBKCOLOR, 0, 0); - } - - COLORREF TreeView_GetInsertMarkColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETINSERTMARKCOLOR, 0, 0); - } - - int TreeView_GetItemHeight(HWND w) { - return SendMessage(w, TVM_GETITEMHEIGHT, 0, 0); - } - - UINT TreeView_GetScrollTime(HWND w) { - return cast(UINT) SendMessage(w, TVM_GETSCROLLTIME, 0, 0); - } - - COLORREF TreeView_GetTextColor(HWND w) { - return cast(COLORREF) SendMessage(w, TVM_GETTEXTCOLOR, 0, 0); - } - - COLORREF TreeView_SetBkColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETBKCOLOR, 0, - cast(LPARAM) c); - } - - COLORREF TreeView_SetInsertMarkColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETINSERTMARKCOLOR, 0, - cast(LPARAM) c); - } - - int TreeView_SetItemHeight(HWND w, SHORT h) { - return SendMessage(w, TVM_SETITEMHEIGHT, cast(WPARAM) h, 0); - } - - UINT TreeView_SetScrollTime(HWND w, UINT t) { - return cast(UINT) SendMessage(w, TVM_SETSCROLLTIME, cast(WPARAM) t, 0); - } - - COLORREF TreeView_SetTextColor(HWND w, COLORREF c) { - return cast(COLORREF) SendMessage(w, TVM_SETTEXTCOLOR, 0, - cast(LPARAM) c); - } - - BOOL TreeView_SetInsertMark(HWND w, HTREEITEM i, BOOL a) { - return cast(BOOL) SendMessage(w, TVM_SETINSERTMARK, cast(WPARAM) a, - cast(LPARAM) i); - } - - BOOL TreeView_SetUnicodeFormat(HWND w, BOOL u) { - return cast(BOOL) SendMessage(w, TVM_SETUNICODEFORMAT, - cast(WPARAM) u, 0); - } - - BOOL TreeView_GetUnicodeFormat(HWND w) { - return cast(BOOL) SendMessage(w, TVM_GETUNICODEFORMAT, 0, 0); - } - - HTREEITEM TreeView_GetLastVisible(HWND w) { - return TreeView_GetNextItem(w, null, TVGN_LASTVISIBLE); - } -} - -static if (_WIN32_IE >= 0x500) { - UINT TreeView_GetItemState(HWND w, HTREEITEM i, UINT m) { - return cast(UINT) SendMessage(w, TVM_GETITEMSTATE, cast(WPARAM) i, - cast(LPARAM) m); - } - - BOOL TreeView_SetItemState(HWND w, HTREEITEM i, UINT d, UINT m) { - TVITEM _tvi; - _tvi.mask = TVIF_STATE; - _tvi.hItem = i; - _tvi.stateMask = m; - _tvi.state = d; - return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) &_tvi); - } -} - - -//#ifdef _WIN32_WCE // these are PPC only -/+ -extern (Windows) { - HWND CommandBar_Create(HINSTANCE, HWND, int); - BOOL CommandBar_Show(HWND, BOOL); - int CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int); - HWND CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD); - BOOL CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD ); - BOOL CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD); - BOOL CommandBar_DrawMenuBar(HWND, WORD); - HMENU CommandBar_GetMenu(HWND, WORD); - BOOL CommandBar_AddAdornments(HWND, DWORD, DWORD); - int CommandBar_Height(HWND hwndCB); -} - -// MinGW: These two are not in the DLL -void CommandBar_InsertButton(HWND hwnd, int i, LPTBBUTTON lptbbutton) { - SendMessage(hwnd, TB_INSERTBUTTON, i, lptbbutton); -} -alias DestroyWindow CommandBar_Destroy; -+/ -//#endif // _WIN32_WCE +/***********************************************************************\ +* commctrl.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.12 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.commctrl; +pragma(lib, "comctl32"); + +private import win32.w32api, win32.windef, win32.winuser; +private import win32.winbase; // for SYSTEMTIME +private import win32.objfwd; // for LPSTREAM + +import win32.prsht; + +const COMCTL32_VERSION = 6; + +const TCHAR[] + DRAGLISTMSGSTRING = "commctrl_DragListMsg", + HOTKEY_CLASS = "msctls_hotkey32", + PROGRESS_CLASS = "msctls_progress32", + STATUSCLASSNAME = "msctls_statusbar32", + TOOLBARCLASSNAME = "ToolbarWindow32", + TOOLTIPS_CLASS = "tooltips_class32", + TRACKBAR_CLASS = "msctls_trackbar32", + UPDOWN_CLASS = "msctls_updown32", + ANIMATE_CLASS = "SysAnimate32", + DATETIMEPICK_CLASS = "SysDateTimePick32", + MONTHCAL_CLASS = "SysMonthCal32", + REBARCLASSNAME = "ReBarWindow32", + WC_COMBOBOXEX = "ComboBoxEx32", + WC_IPADDRESS = "SysIPAddress32", + WC_LISTVIEW = "SysListView32", + WC_TABCONTROL = "SysTabControl32", + WC_TREEVIEW = "SysTreeView32", + WC_HEADER = "SysHeader32", + WC_PAGESCROLLER = "SysPager", + WC_NATIVEFONTCTL = "NativeFontCtl", + WC_BUTTON = "Button", + WC_STATIC = "Static", + WC_EDIT = "Edit", + WC_LISTBOX = "ListBox", + WC_COMBOBOX = "ComboBox", + WC_SCROLLBAR = "ScrollBar", + WC_LINKA = "SysLink"; + +enum { + LVM_FIRST = 0x1000, + TV_FIRST = 0x1100, + HDM_FIRST = 0x1200 +} + +enum { + ACM_OPENA = WM_USER + 100, + ACM_PLAY = WM_USER + 101, + ACM_STOP = WM_USER + 102, + ACM_OPENW = WM_USER + 103, + ACM_ISPLAYING = WM_USER + 104 +} + +enum { + ACN_START = 1, + ACN_STOP +} + +enum { + CBEIF_TEXT = 0x00000001, + CBEIF_IMAGE = 0x00000002, + CBEIF_SELECTEDIMAGE = 0x00000004, + CBEIF_OVERLAY = 0x00000008, + CBEIF_INDENT = 0x00000010, + CBEIF_LPARAM = 0x00000020, + CBEIF_DI_SETITEM = 0x10000000 +} + +enum { + RBN_FIRST = -831U, + RBN_LAST = -859U, + MCN_FIRST = -750U, + MCN_LAST = -759U, + DTN_FIRST = -760U, + DTN_LAST = -799U, + CBEN_FIRST = -800U, + CBEN_LAST = -830U +} + +enum { + CBEN_INSERTITEM = CBEN_FIRST - 1, + CBEN_DELETEITEM = CBEN_FIRST - 2, + CBEN_BEGINEDIT = CBEN_FIRST - 4, + CBEN_ENDEDITA = CBEN_FIRST - 5, + CBEN_ENDEDITW = CBEN_FIRST - 6 +} + +enum { + CBENF_KILLFOCUS = 1, + CBENF_RETURN, + CBENF_ESCAPE, + CBENF_DROPDOWN // = 4 +} + +const CBEMAXSTRLEN = 260; + +enum { + DL_BEGINDRAG = 1157, + DL_CANCELDRAG = 1160, + DL_DRAGGING = 1158, + DL_DROPPED = 1159, + DL_CURSORSET = 0, + DL_STOPCURSOR = 1, + DL_COPYCURSOR = 2, + DL_MOVECURSOR = 3 +} + +enum { + CCS_TOP = 1, + CCS_NOMOVEY = 2, + CCS_BOTTOM = 3, + CCS_NORESIZE = 4, + CCS_NOPARENTALIGN = 8, + CCS_ADJUSTABLE = 32, + CCS_NODIVIDER = 64 +} +static if (_WIN32_IE >= 0x300) { + enum { + CCS_VERT = 128, + CCS_LEFT = 129, + CCS_NOMOVEX = 130, + CCS_RIGHT = 131 + } +} + +enum { + ACS_CENTER = 0x0001, + ACS_TRANSPARENT = 0x0002, + ACS_AUTOPLAY = 0x0004, + ACS_TIMER = 0x0008 +} + +enum { + PGS_VERT = 0x00000000, + PGS_HORZ = 0x00000001, + PGS_AUTOSCROLL = 0x00000002, + PGS_DRAGNDROP = 0x00000004 +} + +const CMB_MASKED = 2; + +const MINSYSCOMMAND = SC_SIZE; + +enum { + SBT_OWNERDRAW = 0x1000, + SBT_NOBORDERS = 256, + SBT_POPOUT = 512, + SBT_RTLREADING = 1024 +} + +enum { + SB_SETTEXTA = WM_USER + 1, + SB_SETTEXTW = WM_USER + 11, + SB_GETTEXTA = WM_USER + 2, + SB_GETTEXTW = WM_USER + 13, + SB_GETTEXTLENGTHA = WM_USER + 3, + SB_GETTEXTLENGTHW = WM_USER + 12, + SB_SETPARTS = WM_USER + 4, + SB_GETPARTS = WM_USER + 6, + SB_GETBORDERS = WM_USER + 7, + SB_SETMINHEIGHT = WM_USER + 8, + SB_SIMPLE = WM_USER + 9, + SB_GETRECT = WM_USER + 10 +} + +enum { + MSGF_COMMCTRL_BEGINDRAG = 0x4200, + MSGF_COMMCTRL_SIZEHEADER = 0x4201, + MSGF_COMMCTRL_DRAGSELECT = 0x4202, + MSGF_COMMCTRL_TOOLBARCUST = 0x4203 +} + +enum { + 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 +} + +enum { + ILCF_MOVE, + ILCF_SWAP +} + +enum { + ILS_NORMAL = 0, + ILS_GLOW = 1, + ILS_SHADOW = 2, + ILS_SATURATE = 4, + ILS_ALPHA = 8, + ILD_BLEND25 = 2, + ILD_BLEND50 = 4, + ILD_SELECTED = 4, + ILD_BLEND = 4, + ILD_FOCUS = 2, + ILD_MASK = 16, + ILD_NORMAL = 0, + ILD_TRANSPARENT = 1, + ILD_IMAGE = 0x0020, + ILD_ROP = 0x0040, + ILD_OVERLAYMASK = 0x0F00, + ILD_PRESERVEALPHA = 0x1000, + ILD_SCALE = 0x2000, + ILD_DPISCALE = 0x4000 +} + +enum { + HDS_HORZ = 0, + HDS_BUTTONS = 2, + HDS_HIDDEN = 8 +} +static if (_WIN32_IE >= 0x400) { + enum { + HDS_HOTTRACK = 4, + HDS_DRAGDROP = 0x0040, + HDS_FULLDRAG = 0x0080 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDS_FILTERBAR = 0x0100 + } +} + +enum { + NM_FIRST = 0, + NM_LAST = -99U, + LVN_FIRST = -100U, + LVN_LAST = -199U, + HDN_FIRST = -300U, + HDN_LAST = -399U, + TVN_FIRST = -400U, + TVN_LAST = -499U, + TTN_FIRST = -520U, + TTN_LAST = -549U, + TCN_FIRST = -550U, + TCN_LAST = -580U, + CDN_FIRST = -601U, /* also in commdlg.h */ + CDN_LAST = -699U, + TBN_FIRST = -700U, + TBN_LAST = -720U, + UDN_FIRST = -721U, + UDN_LAST = -740U +} +/*static if (_WIN32_IE >= 0x300) { + enum { + RBN_FIRST = -831U, + RBN_LAST = -859U, + MCN_FIRST = -750U, + MCN_LAST = -759U, + DTN_FIRST = -760U, + DTN_LAST = -799U, + CBEN_FIRST = -800U, + CBEN_LAST = -830U + } +}*/ +static if (_WIN32_IE >= 0x400) { + enum { + IPN_FIRST = -860U, + IPN_LAST = -879U, + IPN_FIELDCHANGED = IPN_FIRST, + SBN_FIRST = -880U, + SBN_LAST = -899U, + PGN_FIRST = -900U, + PGN_LAST = -950U, + PGN_SCROLL = PGN_FIRST-1, + PGN_CALCSIZE = PGN_FIRST-2 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + WMN_FIRST = -1000U, + WMN_LAST = -1200U, + } +} + +static if (_WIN32_WINNT >= 0x501) +{ + enum { + BCN_FIRST = -1250U, + BCN_LAST = -1350U, + } +} + +static if (_WIN32_WINNT >= 0x600) +{ + enum { + TRBN_FIRST = -1501U, + TRBN_LAST = -1519U, + } +} + +enum { + HDI_WIDTH = 1, + HDI_HEIGHT = 1, + HDI_TEXT = 2, + HDI_FORMAT = 4, + HDI_LPARAM = 8, + HDI_BITMAP = 16 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDI_IMAGE = 32, + HDI_DI_SETITEM = 64, + HDI_ORDER = 128 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDI_FILTER = 256 + } +} + +enum { + CBES_EX_NOEDITIMAGE = 0x00000001, + CBES_EX_NOEDITIMAGEINDENT = 0x00000002, + CBES_EX_PATHWORDBREAKPROC = 0x00000004 +} +static if (_WIN32_IE >= 0x400) { + enum { + CBES_EX_NOSIZELIMIT = 0x00000008, + CBES_EX_CASESENSITIVE = 0x00000010, + CBEN_GETDISPINFOA = CBEN_FIRST - 0, + CBEN_GETDISPINFOW = CBEN_FIRST - 7, + CBEN_DRAGBEGINA = CBEN_FIRST - 8, + CBEN_DRAGBEGINW = CBEN_FIRST - 9 + } +} + +enum { + HDF_LEFT, + HDF_RIGHT, + HDF_CENTER, + HDF_JUSTIFYMASK, + HDF_RTLREADING, // = 4 + HDF_OWNERDRAW = 0x8000, + HDF_STRING = 0x4000, + HDF_BITMAP = 0x2000 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDF_BITMAP_ON_RIGHT = 0x1000, + HDF_IMAGE = 0x0800 + } +} + +enum { + CCM_FIRST = 0x2000, + CCM_LAST = CCM_FIRST + 0x200, + CCM_SETBKCOLOR = 8193, + CCM_SETCOLORSCHEME = 8194, + CCM_GETCOLORSCHEME = 8195, + CCM_GETDROPTARGET = 8196, + CCM_SETUNICODEFORMAT = 8197, + CCM_GETUNICODEFORMAT = 8198, + CCM_SETVERSION = 0x2007, + CCM_GETVERSION = 0x2008, + CCM_SETNOTIFYWINDOW = 0x2009 +} + +enum { + HDM_GETITEMCOUNT = HDM_FIRST, + HDM_INSERTITEMA = HDM_FIRST + 1, + HDM_INSERTITEMW = HDM_FIRST + 10, + HDM_DELETEITEM = HDM_FIRST + 2, + HDM_GETITEMA = HDM_FIRST + 3, + HDM_GETITEMW = HDM_FIRST + 11, + HDM_SETITEMA = HDM_FIRST + 4, + HDM_SETITEMW = HDM_FIRST + 12, + HDM_LAYOUT = HDM_FIRST + 5 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDM_GETITEMRECT = HDM_FIRST + 7, + HDM_SETIMAGELIST = HDM_FIRST + 8, + HDM_GETIMAGELIST = HDM_FIRST + 9, + HDM_ORDERTOINDEX = HDM_FIRST + 15, + HDM_CREATEDRAGIMAGE = HDM_FIRST + 16, + HDM_GETORDERARRAY = HDM_FIRST + 17, + HDM_SETORDERARRAY = HDM_FIRST + 18, + HDM_SETHOTDIVIDER = HDM_FIRST + 19 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT + } +} +static if (_WIN32_IE >= 0x500) { + enum { + HDM_SETBITMAPMARGIN = HDM_FIRST + 20, + HDM_GETBITMAPMARGIN = HDM_FIRST + 21, + HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST + 22, + HDM_EDITFILTER = HDM_FIRST + 23, + HDM_CLEARFILTER = HDM_FIRST + 24, + } +} +static if (_WIN32_IE >= 0x600) { + enum { + HDM_GETITEMDROPDOWNRECT = HDM_FIRST + 25, + HDM_GETOVERFLOWRECT = HDM_FIRST + 26, + HDM_GETFOCUSEDITEM = HDM_FIRST + 27, + HDM_SETFOCUSEDITEM = HDM_FIRST + 28, + } +} + +enum { + HHT_NOWHERE = 1, + HHT_ONHEADER = 2, + HHT_ONDIVIDER = 4, + HHT_ONDIVOPEN = 8, + HHT_ABOVE = 256, + HHT_BELOW = 512, + HHT_TORIGHT = 1024, + HHT_TOLEFT = 2048 +} + +enum { + HDM_HITTEST = HDM_FIRST + 6 +} + +enum { + HDN_ITEMCHANGINGA = HDN_FIRST -0, + HDN_ITEMCHANGINGW = HDN_FIRST -20, + HDN_ITEMCHANGEDA = HDN_FIRST -1, + HDN_ITEMCHANGEDW = HDN_FIRST -21, + HDN_ITEMCLICKA = HDN_FIRST -2, + HDN_ITEMCLICKW = HDN_FIRST -22, + HDN_ITEMDBLCLICKA = HDN_FIRST -3, + HDN_ITEMDBLCLICKW = HDN_FIRST -23, + HDN_DIVIDERDBLCLICKA = HDN_FIRST -5, + HDN_DIVIDERDBLCLICKW = HDN_FIRST -25, + HDN_BEGINTRACKA = HDN_FIRST -6, + HDN_BEGINTRACKW = HDN_FIRST -26, + HDN_ENDTRACKA = HDN_FIRST -7, + HDN_ENDTRACKW = HDN_FIRST -27, + HDN_TRACKA = HDN_FIRST -8, + HDN_TRACKW = HDN_FIRST -28 +} +static if (_WIN32_IE >= 0x300) { + enum { + HDN_ENDDRAG = (HDN_FIRST-11), + HDN_BEGINDRAG = (HDN_FIRST-10), + HDN_GETDISPINFOA = (HDN_FIRST-9), + HDN_GETDISPINFOW = (HDN_FIRST-29) + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + HICF_OTHER = 0x00, + HICF_MOUSE = 0x01, + HICF_ARROWKEYS = 0x02, + HICF_ACCELERATOR = 0x04, + HICF_DUPACCEL = 0x08, + HICF_ENTERING = 0x10, + HICF_LEAVING = 0x20, + HICF_RESELECT = 0x40, + HICF_LMOUSE = 0x80, + HICF_TOGGLEDROPDOWN = 0x100 + } +} + +enum { + IPM_CLEARADDRESS = WM_USER + 100, + IPM_SETADDRESS = WM_USER + 101, + IPM_GETADDRESS = WM_USER + 102, + IPM_SETRANGE = WM_USER + 103, + IPM_SETFOCUS = WM_USER + 104, + IPM_ISBLANK = WM_USER + 105 +} + +static if (_WIN32_IE >= 0x500) { + enum { + I_INDENTCALLBACK = -1, + I_IMAGENONE = -2 + } +} + +enum { + TBSTATE_CHECKED = 1, + TBSTATE_PRESSED = 2, + TBSTATE_ENABLED = 4, + TBSTATE_HIDDEN = 8, + TBSTATE_INDETERMINATE = 16, + TBSTATE_WRAP = 32 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTATE_ELLIPSES = 0x40 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTATE_MARKED = 0x0080 + } +} + +enum { + TBSTYLE_BUTTON = 0, + TBSTYLE_SEP = 1, + TBSTYLE_CHECK = 2, + TBSTYLE_GROUP = 4, + TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTYLE_DROPDOWN = 8 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTYLE_AUTOSIZE = 16, + TBSTYLE_NOPREFIX = 32 + } +} +enum { + TBSTYLE_TOOLTIPS = 256, + TBSTYLE_WRAPABLE = 512, + TBSTYLE_ALTDRAG = 1024 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBSTYLE_FLAT = 2048, + TBSTYLE_LIST = 4096, + TBSTYLE_CUSTOMERASE = 8192 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBSTYLE_REGISTERDROP = 0x4000, + TBSTYLE_TRANSPARENT = 0x8000, + TBSTYLE_EX_DRAWDDARROWS = 0x00000001 + } +} +static if (_WIN32_IE >= 0x501) { + enum { + TBSTYLE_EX_MIXEDBUTTONS = 8, + TBSTYLE_EX_HIDECLIPPEDBUTTONS = 16 + } +} +static if (_WIN32_WINNT >= 0x501) { + enum { + TBSTYLE_EX_DOUBLEBUFFER = 0x80 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + BTNS_BUTTON = TBSTYLE_BUTTON, + BTNS_SEP = TBSTYLE_SEP, + BTNS_CHECK = TBSTYLE_CHECK, + BTNS_GROUP = TBSTYLE_GROUP, + BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP, + BTNS_DROPDOWN = TBSTYLE_DROPDOWN, + BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE, + BTNS_NOPREFIX = TBSTYLE_NOPREFIX, + BTNS_WHOLEDROPDOWN = 0x0080 + } +} +static if (_WIN32_IE >= 0x501) { + enum { + BTNS_SHOWTEXT = 0x0040 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBCDRF_NOEDGES = 0x10000, + TBCDRF_HILITEHOTTRACK = 0x20000, + TBCDRF_NOOFFSET = 0x40000, + TBCDRF_NOMARK = 0x80000, + TBCDRF_NOETCHEDEFFECT = 0x100000 + } +} + +const HINST_COMMCTRL = cast(HINSTANCE) (-1); + +enum { + IDB_STD_SMALL_COLOR, + IDB_STD_LARGE_COLOR, + IDB_VIEW_SMALL_COLOR = 4, + IDB_VIEW_LARGE_COLOR = 5 +} +static if (_WIN32_IE >= 0x300) { + enum { + IDB_HIST_SMALL_COLOR = 8, + IDB_HIST_LARGE_COLOR = 9 + } +} + +enum { + STD_CUT, + STD_COPY, + STD_PASTE, + STD_UNDO, + STD_REDOW, + STD_DELETE, + STD_FILENEW, + STD_FILEOPEN, + STD_FILESAVE, + STD_PRINTPRE, + STD_PROPERTIES, + STD_HELP, + STD_FIND, + STD_REPLACE, + STD_PRINT // = 14 +} + +enum { + VIEW_LARGEICONS, + VIEW_SMALLICONS, + VIEW_LIST, + VIEW_DETAILS, + VIEW_SORTNAME, + VIEW_SORTSIZE, + VIEW_SORTDATE, + VIEW_SORTTYPE, + VIEW_PARENTFOLDER, + VIEW_NETCONNECT, + VIEW_NETDISCONNECT, + VIEW_NEWFOLDER // = 11 +} + +enum { + TB_ENABLEBUTTON = WM_USER + 1, + TB_CHECKBUTTON, + TB_PRESSBUTTON, + TB_HIDEBUTTON, + TB_INDETERMINATE, // = WM_USER + 5, + TB_ISBUTTONENABLED = WM_USER + 9, + TB_ISBUTTONCHECKED, + TB_ISBUTTONPRESSED, + TB_ISBUTTONHIDDEN, + TB_ISBUTTONINDETERMINATE, // = WM_USER + 13, + TB_SETSTATE = WM_USER + 17, + TB_GETSTATE = WM_USER + 18, + TB_ADDBITMAP = WM_USER + 19, + TB_DELETEBUTTON = WM_USER + 22, + TB_GETBUTTON, + TB_BUTTONCOUNT, + TB_COMMANDTOINDEX, + TB_SAVERESTOREA, + TB_CUSTOMIZE, + TB_ADDSTRINGA, + TB_GETITEMRECT, + TB_BUTTONSTRUCTSIZE, + TB_SETBUTTONSIZE, + TB_SETBITMAPSIZE, + TB_AUTOSIZE, // = WM_USER + 33, + TB_GETTOOLTIPS = WM_USER + 35, + TB_SETTOOLTIPS = WM_USER + 36, + TB_SETPARENT = WM_USER + 37, + TB_SETROWS = WM_USER + 39, + TB_GETROWS, + TB_GETBITMAPFLAGS, + TB_SETCMDID, + TB_CHANGEBITMAP, + TB_GETBITMAP, + TB_GETBUTTONTEXTA, + TB_REPLACEBITMAP, // = WM_USER + 46, + TB_GETBUTTONSIZE = WM_USER + 58, + TB_SETBUTTONWIDTH = WM_USER + 59, + TB_GETBUTTONTEXTW = WM_USER + 75, + TB_SAVERESTOREW = WM_USER + 76, + TB_ADDSTRINGW = WM_USER + 77, +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_MARKBUTTON = WM_USER + 6 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_ADDBUTTONSA = WM_USER + 20, + TB_INSERTBUTTONA = WM_USER + 21 + } +} else { + enum { + TB_ADDBUTTONS = WM_USER + 20, + TB_INSERTBUTTON = WM_USER + 21 + } +} +static if (_WIN32_IE >= 0x300) { + enum { + TB_SETINDENT = WM_USER + 47, + TB_SETIMAGELIST, + TB_GETIMAGELIST, + TB_LOADIMAGES, + TB_GETRECT, + TB_SETHOTIMAGELIST, + TB_GETHOTIMAGELIST, + TB_SETDISABLEDIMAGELIST, + TB_GETDISABLEDIMAGELIST, + TB_SETSTYLE, + TB_GETSTYLE, + //TB_GETBUTTONSIZE, + //TB_SETBUTTONWIDTH, + TB_SETMAXTEXTROWS, + TB_GETTEXTROWS // = WM_USER + 61 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TB_GETOBJECT = WM_USER + 62, + TB_GETBUTTONINFOW, + TB_SETBUTTONINFOW, + TB_GETBUTTONINFOA, + TB_SETBUTTONINFOA, + TB_INSERTBUTTONW, + TB_ADDBUTTONSW, + TB_HITTEST, // = WM_USER + 69 + TB_SETEXTENDEDSTYLE = WM_USER + 84, + TB_GETEXTENDEDSTYLE = WM_USER + 85, + TB_SETDRAWTEXTFLAGS = WM_USER + 70, + TB_GETHOTITEM, + TB_SETHOTITEM, + TB_SETANCHORHIGHLIGHT, + TB_GETANCHORHIGHLIGHT, // = WM_USER + 74 + TB_MAPACCELERATORA = WM_USER + 78, + TB_GETINSERTMARK, + TB_SETINSERTMARK, + TB_INSERTMARKHITTEST, + TB_MOVEBUTTON, + TB_GETMAXSIZE, + //TB_SETEXTENDEDSTYLE, + //TB_GETEXTENDEDSTYLE, + TB_GETPADDING, + TB_SETPADDING, + TB_SETINSERTMARKCOLOR, + TB_GETINSERTMARKCOLOR, + TB_MAPACCELERATORW, + TB_GETSTRINGW, + TB_GETSTRINGA, // = WM_USER + 92 + TB_SETHOTITEM2 = WM_USER + 94, + TB_SETLISTGAP = WM_USER + 96, + TB_GETIMAGELISTCOUNT = WM_USER + 98, + TB_GETIDEALSIZE = WM_USER + 99, + //TB_TRANSLATEACCELERATOR = CCM_TRANSLATEACCELERATOR, + TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, + TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME, + TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + TB_GETMETRICS = WM_USER + 101, + TB_SETMETRICS = WM_USER + 102, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + TB_GETITEMDROPDOWNRECT = WM_USER + 103, + TB_SETPRESSEDIMAGELIST = WM_USER + 104, + TB_GETPRESSEDIMAGELIST = WM_USER + 105, + } +} + +const TBBF_LARGE = 1; + +enum { + TBN_GETBUTTONINFOA = TBN_FIRST -0, + TBN_BEGINDRAG = TBN_FIRST -1, + TBN_ENDDRAG = TBN_FIRST -2, + TBN_BEGINADJUST = TBN_FIRST -3, + TBN_ENDADJUST = TBN_FIRST -4, + TBN_RESET = TBN_FIRST -5, + TBN_QUERYINSERT = TBN_FIRST -6, + TBN_QUERYDELETE = TBN_FIRST -7, + TBN_TOOLBARCHANGE = TBN_FIRST -8, + TBN_CUSTHELP = TBN_FIRST -9 +} +static if (_WIN32_IE >= 0x300) { + enum { + TBN_DROPDOWN = TBN_FIRST - 10 + } +} +static if (_WIN32_IE >= 0x400) { + enum { + TBN_HOTITEMCHANGE = TBN_FIRST - 13, + TBN_DRAGOUT = TBN_FIRST - 14, + TBN_DELETINGBUTTON = TBN_FIRST - 15, + TBN_GETDISPINFOA = TBN_FIRST - 16, + TBN_GETDISPINFOW = TBN_FIRST - 17, + TBN_GETINFOTIPA = TBN_FIRST - 18, + TBN_GETINFOTIPW = TBN_FIRST - 19, + TBN_GETBUTTONINFOW = TBN_FIRST - 20 + } +} +static if (_WIN32_IE >= 0x500) { + enum { + TBN_RESTORE = TBN_FIRST - 21, + TBN_SAVE = TBN_FIRST - 22, + TBN_INITCUSTOMIZE = TBN_FIRST - 23 + } + + enum { + TBNRF_HIDEHELP = 1, + TBNRF_ENDCUSTOMIZE + } + + enum { + TBNF_IMAGE = 1, + TBNF_TEXT = 2, + TBNF_DI_SETITEM = 0x10000000 + } +} + +enum { + TTS_ALWAYSTIP = 1, + TTS_NOPREFIX +} +static if(_WIN32_IE >= 0x500) { + enum { + TTS_NOANIMATE = 0x10, + TTS_NOFADE = 0x20, + TTS_BALLOON = 0x40, + TTS_CLOSE = 0x80 + } +} + +enum { + TTF_IDISHWND = 1, + TTF_CENTERTIP = 2, + TTF_RTLREADING = 4, + TTF_SUBCLASS = 16 +} +static if (_WIN32_IE >= 0x300) { + enum { + TTF_TRACK = 0x0020, + TTF_ABSOLUTE = 0x0080, + TTF_TRANSPARENT = 0x0100, + TTF_DI_SETITEM = 0x8000 + } + + static if (_WIN32_IE >= 0x501) { + enum { + TTF_PARSELINKS = 0x1000 + } + } + + enum { + TBCD_TICS = 1, + TBCD_THUMB, + TBCD_CHANNEL // = 3 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBDDRET_DEFAULT, + TBDDRET_NODEFAULT, + TBDDRET_TREATPRESSED + } + + enum { + TBIMHT_AFTER = 1, + TBIMHT_BACKGROUND + } +} + +enum { + TTDT_AUTOMATIC, + TTDT_RESHOW, + TTDT_AUTOPOP, + TTDT_INITIAL +} + +enum { + TTM_ACTIVATE = WM_USER + 1, + TTM_SETDELAYTIME = WM_USER + 3, + TTM_ADDTOOLA, + TTM_DELTOOLA, + TTM_NEWTOOLRECTA, + TTM_RELAYEVENT, + TTM_GETTOOLINFOA, + TTM_SETTOOLINFOA, + TTM_HITTESTA, + TTM_GETTEXTA, + TTM_UPDATETIPTEXTA, + TTM_GETTOOLCOUNT, + TTM_ENUMTOOLSA, + TTM_GETCURRENTTOOLA, + TTM_WINDOWFROMPOINT, // = WM_USER + 16 + TTM_ADDTOOLW = WM_USER + 50, + TTM_DELTOOLW, + TTM_NEWTOOLRECTW, + TTM_GETTOOLINFOW, + TTM_SETTOOLINFOW, + TTM_HITTESTW, + TTM_GETTEXTW, + TTM_UPDATETIPTEXTW, + TTM_ENUMTOOLSW, + TTM_GETCURRENTTOOLW // = WM_USER + 59 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TTM_TRACKACTIVATE = WM_USER + 17, + TTM_TRACKPOSITION, + TTM_SETTIPBKCOLOR, + TTM_SETTIPTEXTCOLOR, + TTM_GETDELAYTIME, + TTM_GETTIPBKCOLOR, + TTM_GETTIPTEXTCOLOR, + TTM_SETMAXTIPWIDTH, + TTM_GETMAXTIPWIDTH, + TTM_SETMARGIN, + TTM_GETMARGIN, + TTM_POP // = WM_USER + 28 + } +} + +static if (_WIN32_IE >= 0x400) { // IE4.0 ??? + enum { + TTM_UPDATE = WM_USER + 29, + TTM_GETBUBBLESIZE, + TTM_ADJUSTRECT, + TTM_SETTITLEA, + TTM_SETTITLEW // = WM_USER + 33 + } + static if (_WIN32_IE >= 0x500) + { + alias TTM_SETTITLEW TTM_SETTITLE; + } + else + { + alias TTM_SETTITLEA TTM_SETTITLE; + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + TTM_POPUP = (WM_USER + 34), + TTM_GETTITLE = (WM_USER + 35), + } +} + +enum { + TTN_GETDISPINFOA = TTN_FIRST - 0, + TTN_GETDISPINFOW = TTN_FIRST - 10, + TTN_NEEDTEXTA = TTN_GETDISPINFOA, + TTN_NEEDTEXTW = TTN_GETDISPINFOW, + TTN_SHOW = TTN_FIRST-1, + TTN_POP = TTN_FIRST-2 +} + +const UD_MAXVAL = 0x7fff; +const UD_MINVAL = -UD_MAXVAL; + +enum { + UDN_DELTAPOS = UDN_FIRST-1, + UDS_WRAP = 1, + UDS_SETBUDDYINT = 2, + UDS_ALIGNRIGHT = 4, + UDS_ALIGNLEFT = 8, + UDS_AUTOBUDDY = 16, + UDS_ARROWKEYS = 32, + UDS_HORZ = 64, + UDS_NOTHOUSANDS = 128 +} + +static if (_WIN32_IE >= 0x300) { + enum { + UDS_HOTTRACK = 0x0100 + } +} + +enum { + UDM_SETRANGE = WM_USER + 101, + UDM_GETRANGE, + UDM_SETPOS, + UDM_GETPOS, + UDM_SETBUDDY, + UDM_GETBUDDY, + UDM_SETACCEL, + UDM_GETACCEL, + UDM_SETBASE, + UDM_GETBASE // = WM_USER + 110 +} + +static if (_WIN32_IE >= 0x400) { + enum { + UDM_SETRANGE32 = WM_USER + 111, + UDM_GETRANGE32, + UDM_SETPOS32, + UDM_GETPOS32 // = WM_USER + 114 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +/*enum { + SB_SETTEXTA = WM_USER + 1, + SB_GETTEXTA, + SB_GETTEXTLENGTHA, + SB_SETPARTS, // = WM_USER + 4 + SB_GETPARTS = WM_USER + 6, + SB_GETBORDERS, + SB_SETMINHEIGHT, + SB_SIMPLE, + SB_GETRECT, + SB_SETTEXTW, + SB_GETTEXTLENGTHW, + SB_GETTEXTW // = WM_USER + 13 +}*/ + +/*enum { + SBT_OWNERDRAW = 0x1000, + SBT_NOBORDERS = 256, + SBT_POPOUT = 512, + SBT_RTLREADING = 1024 +}*/ + +static if(_WIN32_IE >= 0x400) { + enum { + SBT_TOOLTIPS = 0x0800, + SBN_SIMPLEMODECHANGE = SBN_FIRST + } +} + +enum { + TBS_AUTOTICKS = 1, + TBS_VERT = 2, + TBS_HORZ = 0, + TBS_TOP = 4, + TBS_BOTTOM = 0, + TBS_LEFT = 4, + TBS_RIGHT = 0, + TBS_BOTH = 8, + TBS_NOTICKS = 16, + TBS_ENABLESELRANGE = 32, + TBS_FIXEDLENGTH = 64, + TBS_NOTHUMB = 128 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TBS_TOOLTIPS = 0x0100, + TBTS_TOP = 0, + TBTS_LEFT, + TBTS_BOTTOM, + TBTS_RIGHT // = 3 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TBS_REVERSED = 0x0200 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + TBS_DOWNISLEFT = 0x0400 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TBIF_BYINDEX = 0x80000000, + TBIF_COMMAND = 32, + TBIF_IMAGE = 1, + TBIF_LPARAM = 16, + TBIF_SIZE = 64, + TBIF_STATE = 4, + TBIF_STYLE = 8, + TBIF_TEXT = 2 + } +} + +enum { + TBM_GETPOS = WM_USER, + TBM_GETRANGEMIN, + TBM_GETRANGEMAX, + TBM_GETTIC, + TBM_SETTIC, + TBM_SETPOS, + TBM_SETRANGE, + TBM_SETRANGEMIN, + TBM_SETRANGEMAX, + TBM_CLEARTICS, + TBM_SETSEL, + TBM_SETSELSTART, + TBM_SETSELEND, // = WM_USER+12, + TBM_GETPTICS = WM_USER+14, + TBM_GETTICPOS, + TBM_GETNUMTICS, + TBM_GETSELSTART, + TBM_GETSELEND, + TBM_CLEARSEL, + TBM_SETTICFREQ, + TBM_SETPAGESIZE, + TBM_GETPAGESIZE, + TBM_SETLINESIZE, + TBM_GETLINESIZE, + TBM_GETTHUMBRECT, + TBM_GETCHANNELRECT, + TBM_SETTHUMBLENGTH, + TBM_GETTHUMBLENGTH, + TBM_SETTOOLTIPS, + TBM_GETTOOLTIPS, + TBM_SETTIPSIDE, + TBM_SETBUDDY, + TBM_GETBUDDY, // = WM_USER+33, + TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT +} + +enum { + TB_LINEUP, + TB_LINEDOWN, + TB_PAGEUP, + TB_PAGEDOWN, + TB_THUMBPOSITION, + TB_THUMBTRACK, + TB_TOP, + TB_BOTTOM, + TB_ENDTRACK // = 8 +} + +enum { + HOTKEYF_SHIFT = 1, + HOTKEYF_CONTROL = 2, + HOTKEYF_ALT = 4, + HOTKEYF_EXT = 8 +} + +enum { + HKCOMB_NONE = 1, + HKCOMB_S = 2, + HKCOMB_C = 4, + HKCOMB_A = 8, + HKCOMB_SC = 16, + HKCOMB_SA = 32, + HKCOMB_CA = 64, + HKCOMB_SCA = 128 +} + +enum { + HKM_SETHOTKEY = WM_USER + 1, + HKM_GETHOTKEY = WM_USER + 2, + HKM_SETRULES = WM_USER + 3 +} + +enum { + PBM_SETRANGE = WM_USER + 1, + PBM_SETPOS, + PBM_DELTAPOS, + PBM_SETSTEP, + PBM_STEPIT, // = WM_USER + 5 + PBM_SETRANGE32 = 1030, + PBM_GETRANGE, + PBM_GETPOS, + PBM_SETBARCOLOR, // = 1033 + PBM_SETBKCOLOR = CCM_SETBKCOLOR +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PBM_SETMARQUEE = WM_USER + 10, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + PBM_GETSTEP = WM_USER + 13, + PBM_GETBKCOLOR, + PBM_GETBARCOLOR, + PBM_SETSTATE, + PBM_GETSTATE, + } +} + +enum { + PBS_SMOOTH = 1, + PBS_VERTICAL = 4 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PBS_MARQUEE = 8, + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + PBS_SMOOTHREVERSE = 16, + } +} + +enum { + LVS_ICON, + LVS_REPORT, + LVS_SMALLICON, + LVS_LIST, // = 3 + LVS_TYPEMASK = 3, + LVS_SINGLESEL = 4, + LVS_SHOWSELALWAYS = 8, + LVS_SORTASCENDING = 16, + LVS_SORTDESCENDING = 32, + LVS_SHAREIMAGELISTS = 64, + LVS_NOLABELWRAP = 128, + LVS_AUTOARRANGE = 256, + LVS_EDITLABELS = 512, + LVS_NOSCROLL = 0x2000, + LVS_TYPESTYLEMASK = 0xFC00, + LVS_ALIGNTOP = 0, + LVS_ALIGNLEFT = 0x800, + LVS_ALIGNMASK = 0xC00, + LVS_OWNERDRAWFIXED = 0x400, + LVS_NOCOLUMNHEADER = 0x4000, + LVS_NOSORTHEADER = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + CDIS_CHECKED = 8, + CDIS_DEFAULT = 32, + CDIS_DISABLED = 4, + CDIS_FOCUS = 16, + CDIS_GRAYED = 2, + CDIS_HOT = 64, + CDIS_SELECTED = 1, + CDIS_MARKED = 128, + CDIS_INDETERMINATE = 256 + } + + static if (_WIN32_WINNT >= 0x501) { + enum { + CDIS_SHOWKEYBOARDCUES = 512 + } + } + + enum { + CDDS_POSTERASE = 4, + CDDS_POSTPAINT = 2, + CDDS_PREERASE = 3, + CDDS_PREPAINT = 1, + CDDS_ITEM = 65536, + CDDS_ITEMPOSTERASE = 65540, + CDDS_ITEMPOSTPAINT = 65538, + CDDS_ITEMPREERASE = 65539, + CDDS_ITEMPREPAINT = 65537 + } + + static if (_WIN32_IE >= 0x400) { + enum { + CDDS_SUBITEM = 0x20000 + } + } + + enum { + CDRF_DODEFAULT = 0x00, + CDRF_NOTIFYITEMDRAW = 0x20, + CDRF_NOTIFYSUBITEMDRAW = 0x20, + CDRF_NOTIFYITEMERASE = 0x80, + CDRF_NOTIFYPOSTERASE = 0x40, + CDRF_NOTIFYPOSTPAINT = 0x10, + CDRF_NEWFONT = 0x02, + CDRF_SKIPDEFAULT = 0x04 + } + + static if (_WIN32_IE >= 0x400) { + enum { + LVBKIF_SOURCE_NONE = 0x00000000, + LVBKIF_SOURCE_HBITMAP = 0x00000001, + LVBKIF_SOURCE_URL = 0x00000002, + LVBKIF_SOURCE_MASK = 0x00000003, + LVBKIF_STYLE_NORMAL = 0x00000000, + LVBKIF_STYLE_TILE = 0x00000010, + LVBKIF_STYLE_MASK = 0x00000010 + } + } + + static if (_WIN32_WINNT >= 0x501) { + enum { + LVBKIF_FLAG_TILEOFFSET = 0x00000100, + LVBKIF_TYPE_WATERMARK = 0x10000000 + } + } + + enum { + LVS_OWNERDATA = 4096 + } + + enum { + LVS_EX_CHECKBOXES = 4, + LVS_EX_FULLROWSELECT = 32, + LVS_EX_GRIDLINES = 1, + LVS_EX_HEADERDRAGDROP = 16, + LVS_EX_ONECLICKACTIVATE = 64, + LVS_EX_SUBITEMIMAGES = 2, + LVS_EX_TRACKSELECT = 8, + LVS_EX_TWOCLICKACTIVATE = 128 + } + + enum { + LVSICF_NOINVALIDATEALL = 0x00000001, + LVSICF_NOSCROLL = 0x00000002 + } + + static if(_WIN32_IE >= 0x400) { + enum { + LVS_EX_FLATSB = 0x00000100, + LVS_EX_REGIONAL = 0x00000200, + LVS_EX_INFOTIP = 0x00000400, + LVS_EX_UNDERLINEHOT = 0x00000800, + LVS_EX_UNDERLINECOLD = 0x00001000, + LVS_EX_MULTIWORKAREAS = 0x00002000 + } + } + + static if(_WIN32_IE >= 0x500) { + enum { + LVS_EX_LABELTIP = 0x00004000, + LVS_EX_BORDERSELECT = 0x00008000 + } + } +} + +enum { + LVSIL_NORMAL, + LVSIL_SMALL, + LVSIL_STATE +} + +enum { + LVM_GETBKCOLOR = LVM_FIRST, + LVM_SETBKCOLOR, + LVM_GETIMAGELIST, + LVM_SETIMAGELIST, + LVM_GETITEMCOUNT, // = LVM_FIRST + 4 + LVM_SORTITEMSEX = LVM_FIRST + 81, + LVM_GETGROUPSTATE = LVM_FIRST + 92, + LVM_GETFOCUSEDGROUP, + LVM_GETGROUPRECT = LVM_FIRST + 98, + LVM_SETVIEW = LVM_FIRST + 142, + LVM_GETVIEW, // = LVM_FIRST + 143 + LVM_INSERTGROUP = LVM_FIRST + 145, + LVM_SETGROUPINFO = LVM_FIRST + 147, + LVM_GETGROUPINFO = LVM_FIRST + 149, + LVM_REMOVEGROUP, + LVM_MOVEGROUP, // = LVM_FIRST + 151 + LVM_GETGROUPCOUNT, + LVM_GETGROUPINFOBYINDEX, + LVM_MOVEITEMTOGROUP, + LVM_SETGROUPMETRICS = LVM_FIRST + 155, + LVM_GETGROUPMETRICS, + LVM_ENABLEGROUPVIEW, + LVM_SORTGROUPS, + LVM_INSERTGROUPSORTED, + LVM_REMOVEALLGROUPS, + LVM_HASGROUP, + LVM_SETTILEVIEWINFO, + LVM_GETTILEVIEWINFO, + LVM_SETTILEINFO, + LVM_GETTILEINFO, + LVM_SETINSERTMARK, + LVM_GETINSERTMARK, + LVM_INSERTMARKHITTEST, + LVM_GETINSERTMARKRECT, + LVM_SETINSERTMARKCOLOR, + LVM_GETINSERTMARKCOLOR, // = LVM_FIRST + 171 + LVM_SETINFOTIP = LVM_FIRST + 173, + LVM_GETSELECTEDCOLUMN, + LVM_ISGROUPVIEWENABLED, + LVM_GETOUTLINECOLOR, + LVM_SETOUTLINECOLOR, // = LVM_FIRST + 177 + LVM_CANCELEDITLABEL = LVM_FIRST + 179, + LVM_MAPINDEXTOID = LVM_FIRST + 180, + LVM_MAPIDTOINDEX = LVM_FIRST + 181, + LVM_ISITEMVISIBLE = LVM_FIRST + 182, +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 + } +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + LVM_GETEMPTYTEXT = LVM_FIRST + 204, + LVM_GETFOOTERRECT = LVM_FIRST + 205, + LVM_GETFOOTERINFO = LVM_FIRST + 206, + LVM_GETFOOTERITEMRECT = LVM_FIRST + 207, + LVM_GETFOOTERITEM = (LVM_FIRST + 208), + LVM_GETITEMINDEXRECT = (LVM_FIRST + 209), + LVM_SETITEMINDEXSTATE = (LVM_FIRST + 210), + LVM_GETNEXTITEMINDEX = (LVM_FIRST + 211), + } +} + +enum { + LVIF_TEXT = 1, + LVIF_IMAGE = 2, + LVIF_PARAM = 4, + LVIF_STATE = 8 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVIF_INDENT = 16, + LVIF_NORECOMPUTE = 2048 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LVIF_GROUPID = 128, + LVIF_COLUMNS = 256 + } +} + +enum { + LVIS_FOCUSED = 1, + LVIS_SELECTED = 2, + LVIS_CUT = 4, + LVIS_DROPHILITED = 8, + LVIS_OVERLAYMASK = 0xF00, + LVIS_STATEIMAGEMASK = 0xF000 +} + +const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR) -1; +const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR) -1; + +const I_IMAGECALLBACK = -1; + +static if(_WIN32_IE >= 0x400) { + enum { + LVM_SETBKIMAGEA = LVM_FIRST + 68, + LVM_SETBKIMAGEW = LVM_FIRST + 138, + LVM_GETBKIMAGEA = LVM_FIRST + 69, + LVM_GETBKIMAGEW = LVM_FIRST + 139, + LV_MAX_WORKAREAS = 16, + LVM_SETWORKAREAS = LVM_FIRST + 65, + LVM_GETWORKAREAS = LVM_FIRST + 70, + LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73, + LVM_GETSELECTIONMARK = LVM_FIRST + 66, + LVM_SETSELECTIONMARK = LVM_FIRST + 67, + LVM_SETHOVERTIME = LVM_FIRST + 71, + LVM_GETHOVERTIME = LVM_FIRST + 72, + LVM_SETTOOLTIPS = LVM_FIRST + 74, + LVM_GETTOOLTIPS = LVM_FIRST + 78, + LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + LVNI_ALL, + LVNI_FOCUSED = 1, + LVNI_SELECTED = 2, + LVNI_CUT = 4, + LVNI_DROPHILITED = 8, + LVNI_ABOVE = 256, + LVNI_BELOW = 512, + LVNI_TOLEFT = 1024, + LVNI_TORIGHT = 2048 +} + +enum { + LVM_GETITEMA = LVM_FIRST + 5, + LVM_SETITEMA, + LVM_INSERTITEMA, + LVM_DELETEITEM, + LVM_DELETEALLITEMS, + LVM_GETCALLBACKMASK, + LVM_SETCALLBACKMASK, + LVM_GETNEXTITEM, + LVM_FINDITEMA, + LVM_GETITEMRECT, + LVM_SETITEMPOSITION, + LVM_GETITEMPOSITION, + LVM_GETSTRINGWIDTHA, + LVM_HITTEST, + LVM_ENSUREVISIBLE, + LVM_SCROLL, + LVM_REDRAWITEMS, + LVM_ARRANGE, + LVM_EDITLABELA, + LVM_GETEDITCONTROL, + LVM_GETCOLUMNA, + LVM_SETCOLUMNA, + LVM_INSERTCOLUMNA, + LVM_DELETECOLUMN, + LVM_GETCOLUMNWIDTH, + LVM_SETCOLUMNWIDTH, // = LVM_FIRST + 30, + LVM_CREATEDRAGIMAGE = LVM_FIRST + 33, + LVM_GETVIEWRECT, + LVM_GETTEXTCOLOR, + LVM_SETTEXTCOLOR, + LVM_GETTEXTBKCOLOR, + LVM_SETTEXTBKCOLOR, + LVM_GETTOPINDEX, + LVM_GETCOUNTPERPAGE, + LVM_GETORIGIN, + LVM_UPDATE, + LVM_SETITEMSTATE, + LVM_GETITEMSTATE, + LVM_GETITEMTEXTA, + LVM_SETITEMTEXTA, + LVM_SETITEMCOUNT, + LVM_SORTITEMS, + LVM_SETITEMPOSITION32, + LVM_GETSELECTEDCOUNT, + LVM_GETITEMSPACING, + LVM_GETISEARCHSTRINGA, // = LVM_FIRST + 52, + LVM_GETITEMW = LVM_FIRST + 75, + LVM_SETITEMW = LVM_FIRST + 76, + LVM_INSERTITEMW = LVM_FIRST + 77, + LVM_FINDITEMW = LVM_FIRST + 83, + LVM_GETSTRINGWIDTHW = LVM_FIRST + 87, + LVM_GETCOLUMNW = LVM_FIRST + 95, + LVM_SETCOLUMNW = LVM_FIRST + 96, + LVM_INSERTCOLUMNW = LVM_FIRST + 97, + LVM_GETITEMTEXTW = LVM_FIRST + 115, + LVM_SETITEMTEXTW, + LVM_GETISEARCHSTRINGW, + LVM_EDITLABELW // = LVM_FIRST + 118, +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVM_GETHEADER = LVM_FIRST + 31, + LVM_SETICONSPACING = LVM_FIRST + 53, + LVM_SETEXTENDEDLISTVIEWSTYLE, + LVM_GETEXTENDEDLISTVIEWSTYLE, + LVM_GETSUBITEMRECT, + LVM_SUBITEMHITTEST, + LVM_SETCOLUMNORDERARRAY, + LVM_GETCOLUMNORDERARRAY, + LVM_SETHOTITEM, + LVM_GETHOTITEM, + LVM_SETHOTCURSOR, + LVM_GETHOTCURSOR, + LVM_APPROXIMATEVIEWRECT // = LVM_FIRST + 64, + } +} + +enum { + LVFI_PARAM = 1, + LVFI_STRING = 2, + LVFI_PARTIAL = 8, + LVFI_WRAP = 32, + LVFI_NEARESTXY = 64 +} + +enum { + LVIF_DI_SETITEM = 0x1000 +} + +enum { + LVIR_BOUNDS, + LVIR_ICON, + LVIR_LABEL, + LVIR_SELECTBOUNDS // = 3 +} + +enum { + LVHT_NOWHERE = 1, + LVHT_ONITEMICON = 2, + LVHT_ONITEMLABEL = 4, + LVHT_ONITEMSTATEICON = 8, + LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL + | LVHT_ONITEMSTATEICON, + LVHT_ABOVE = 8, + LVHT_BELOW = 16, + LVHT_TORIGHT = 32, + LVHT_TOLEFT = 64 +} + +enum { + LVA_DEFAULT = 0, + LVA_ALIGNLEFT = 1, + LVA_ALIGNTOP = 2, + LVA_SNAPTOGRID = 5 +} + +enum { + LVCF_FMT = 1, + LVCF_WIDTH = 2, + LVCF_TEXT = 4, + LVCF_SUBITEM = 8 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVCF_IMAGE = 16, + LVCF_ORDER = 32 + } +} + +enum { + LVCFMT_LEFT, + LVCFMT_RIGHT, + LVCFMT_CENTER, + LVCFMT_JUSTIFYMASK // = 3 +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVCFMT_IMAGE = 2048, + LVCFMT_BITMAP_ON_RIGHT = 4096, + LVCFMT_COL_HAS_IMAGES = 32768 + } +} + +enum { + LVSCW_AUTOSIZE = -1, + LVSCW_AUTOSIZE_USEHEADER = -2 +} + +enum { + LVN_ITEMCHANGING = LVN_FIRST, + LVN_ITEMCHANGED = LVN_FIRST - 1, + LVN_INSERTITEM = LVN_FIRST - 2, + LVN_DELETEITEM = LVN_FIRST - 3, + LVN_DELETEALLITEMS = LVN_FIRST - 4, + LVN_BEGINLABELEDITA = LVN_FIRST - 5, + LVN_ENDLABELEDITA = LVN_FIRST - 6, + LVN_COLUMNCLICK = LVN_FIRST - 8, + LVN_BEGINDRAG = LVN_FIRST - 9, + LVN_BEGINRDRAG = LVN_FIRST - 11, + LVN_GETDISPINFOA = LVN_FIRST - 50, + LVN_SETDISPINFOA = LVN_FIRST - 51, + LVN_KEYDOWN = LVN_FIRST - 55, + LVN_BEGINLABELEDITW = LVN_FIRST - 75, + LVN_ENDLABELEDITW = LVN_FIRST - 76, + LVN_GETDISPINFOW = LVN_FIRST - 77, + LVN_SETDISPINFOW = LVN_FIRST - 78 +} + +static if (_WIN32_IE >= 0x400) { + enum { + LVN_MARQUEEBEGIN = LVN_FIRST - 56, + LVN_GETINFOTIPA = LVN_FIRST - 57, + LVN_GETINFOTIPW = LVN_FIRST - 58, + LVKF_ALT = 1, + LVKF_CONTROL = 2, + LVKF_SHIFT = 4, + LVGIT_UNFOLDED = 1 + } +} + +enum { + TVS_HASBUTTONS = 1, + TVS_HASLINES = 2, + TVS_LINESATROOT = 4, + TVS_EDITLABELS = 8, + TVS_DISABLEDRAGDROP = 16, + TVS_SHOWSELALWAYS = 32 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVS_RTLREADING = 64, + TVS_NOTOOLTIPS = 128, + TVS_CHECKBOXES = 256, + TVS_TRACKSELECT = 512 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVS_SINGLEEXPAND = 1024, + TVS_INFOTIP = 2048, + TVS_FULLROWSELECT = 4096, + TVS_NOSCROLL = 8192, + TVS_NONEVENHEIGHT = 16384 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TVS_NOHSCROLL = 0x8000 + } +} + +enum { + TVIF_TEXT = 1, + TVIF_IMAGE = 2, + TVIF_PARAM = 4, + TVIF_STATE = 8, + TVIF_HANDLE = 16, + TVIF_SELECTEDIMAGE = 32, + TVIF_CHILDREN = 64 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVIF_INTEGRAL = 0x0080 + } +} + +enum { + TVIS_FOCUSED = 1, + TVIS_SELECTED = 2, + TVIS_CUT = 4, + TVIS_DROPHILITED = 8, + TVIS_BOLD = 16, + TVIS_EXPANDED = 32, + TVIS_EXPANDEDONCE = 64, + TVIS_OVERLAYMASK = 0xF00, + TVIS_STATEIMAGEMASK = 0xF000, + TVIS_USERMASK = 0xF000 +} + +enum { + I_CHILDRENCALLBACK = -1 +} + +mixin DECLARE_HANDLE!("HTREEITEM"); +mixin DECLARE_HANDLE!("HIMAGELIST"); + +version(Win64) +{ +const HTREEITEM + TVI_ROOT = cast(HTREEITEM) cast(ULONG_PTR)-0x10000, + TVI_FIRST = cast(HTREEITEM) cast(ULONG_PTR)-0xffff, + TVI_LAST = cast(HTREEITEM) cast(ULONG_PTR)-0xfffe, + TVI_SORT = cast(HTREEITEM) cast(ULONG_PTR)-0xfffd; +} else { +const HTREEITEM + TVI_ROOT = cast(HTREEITEM) 0xFFFF0000, + TVI_FIRST = cast(HTREEITEM) 0xFFFF0001, + TVI_LAST = cast(HTREEITEM) 0xFFFF0002, + TVI_SORT = cast(HTREEITEM) 0xFFFF0003; +} + +enum { + TVSIL_NORMAL = 0, + TVSIL_STATE = 2 +} + +enum { + TVM_INSERTITEMA = TV_FIRST, + TVM_DELETEITEM = TV_FIRST + 1, + TVM_EXPAND = TV_FIRST + 2, + TVM_GETITEMRECT = TV_FIRST + 4, + TVM_GETCOUNT, + TVM_GETINDENT, + TVM_SETINDENT, + TVM_GETIMAGELIST, + TVM_SETIMAGELIST, + TVM_GETNEXTITEM, + TVM_SELECTITEM, + TVM_GETITEMA, + TVM_SETITEMA, + TVM_EDITLABELA, + TVM_GETEDITCONTROL, + TVM_GETVISIBLECOUNT, + TVM_HITTEST, + TVM_CREATEDRAGIMAGE, + TVM_SORTCHILDREN, + TVM_ENSUREVISIBLE, + TVM_SORTCHILDRENCB, + TVM_ENDEDITLABELNOW, + TVM_GETISEARCHSTRINGA, // = TV_FIRST + 23 + TVM_INSERTITEMW = TV_FIRST + 50, + TVM_GETITEMW = TV_FIRST + 62, + TVM_SETITEMW = TV_FIRST + 63, + TVM_GETISEARCHSTRINGW = TV_FIRST + 64, + TVM_EDITLABELW = TV_FIRST + 65 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVM_GETTOOLTIPS = TV_FIRST + 25, + TVM_SETTOOLTIPS = TV_FIRST + 24 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVM_SETINSERTMARK = TV_FIRST + 26, + TVM_SETITEMHEIGHT, + TVM_GETITEMHEIGHT, + TVM_SETBKCOLOR, + TVM_SETTEXTCOLOR, + TVM_GETBKCOLOR, + TVM_GETTEXTCOLOR, + TVM_SETSCROLLTIME, + TVM_GETSCROLLTIME, // = TV_FIRST + 34 + TVM_SETINSERTMARKCOLOR = TV_FIRST + 37, + TVM_GETINSERTMARKCOLOR = TV_FIRST + 38, + TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + TVM_GETITEMSTATE = TV_FIRST + 39, + TVM_SETLINECOLOR = TV_FIRST + 40, + TVM_GETLINECOLOR = TV_FIRST + 41 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42, + TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43, + TVM_SETEXTENDEDSTYLE = TV_FIRST + 44, + TVM_GETEXTENDEDSTYLE = TV_FIRST + 45, + TVM_SETAUTOSCROLLINFO = TV_FIRST + 59 + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + TVM_GETSELECTEDCOUNT = TV_FIRST + 70, + TVM_SHOWINFOTIP = TV_FIRST + 71, + TVM_GETITEMPARTRECT = TV_FIRST + 72, + } +} + +enum { + TVE_COLLAPSE = 1, + TVE_EXPAND = 2, + TVE_TOGGLE = 3, + TVE_COLLAPSERESET = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TVE_EXPANDPARTIAL = 0x4000 + } +} + +enum { + TVC_UNKNOWN, + TVC_BYMOUSE, + TVC_BYKEYBOARD // = 2 +} + +enum { + TVGN_ROOT, + TVGN_NEXT, + TVGN_PREVIOUS, + TVGN_PARENT, + TVGN_CHILD, + TVGN_FIRSTVISIBLE, + TVGN_NEXTVISIBLE, + TVGN_PREVIOUSVISIBLE, + TVGN_DROPHILITE, + TVGN_CARET // = 9 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVGN_LASTVISIBLE = 10 + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + TVGN_NEXTSELECTED = 11 + } +} + +enum { + TVN_SELCHANGINGA = TVN_FIRST - 1, + TVN_SELCHANGEDA = TVN_FIRST - 2, + TVN_GETDISPINFOA = TVN_FIRST - 3, + TVN_SETDISPINFOA = TVN_FIRST - 4, + TVN_ITEMEXPANDINGA = TVN_FIRST - 5, + TVN_ITEMEXPANDEDA = TVN_FIRST - 6, + TVN_BEGINDRAGA = TVN_FIRST - 7, + TVN_BEGINRDRAGA = TVN_FIRST - 8, + TVN_DELETEITEMA = TVN_FIRST - 9, + TVN_BEGINLABELEDITA = TVN_FIRST - 10, + TVN_ENDLABELEDITA = TVN_FIRST - 11, + TVN_KEYDOWN = TVN_FIRST - 12, + TVN_SELCHANGINGW = TVN_FIRST - 50, + TVN_SELCHANGEDW = TVN_FIRST - 51, + TVN_GETDISPINFOW = TVN_FIRST - 52, + TVN_SETDISPINFOW = TVN_FIRST - 53, + TVN_ITEMEXPANDINGW = TVN_FIRST - 54, + TVN_ITEMEXPANDEDW = TVN_FIRST - 55, + TVN_BEGINDRAGW = TVN_FIRST - 56, + TVN_BEGINRDRAGW = TVN_FIRST - 57, + TVN_DELETEITEMW = TVN_FIRST - 58, + TVN_BEGINLABELEDITW = TVN_FIRST - 59, + TVN_ENDLABELEDITW = TVN_FIRST - 60 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TVNRET_DEFAULT = 0, + TVNRET_SKIPOLD = 1, + TVNRET_SKIPNEW = 2, + TVN_GETINFOTIPA = TVN_FIRST - 13, + TVN_GETINFOTIPW = TVN_FIRST - 14, + TVN_SINGLEEXPAND = TVN_FIRST - 15 + } +} + +enum { + TVIF_DI_SETITEM = 0x1000 +} + +enum { + TVHT_NOWHERE = 1, + TVHT_ONITEMICON = 2, + TVHT_ONITEMLABEL = 4, + TVHT_ONITEMINDENT = 8, + TVHT_ONITEMBUTTON = 16, + TVHT_ONITEMRIGHT = 32, + TVHT_ONITEMSTATEICON = 64, + TVHT_ABOVE = 256, + TVHT_BELOW = 512, + TVHT_TORIGHT = 1024, + TVHT_TOLEFT = 2048, + TCHT_NOWHERE = 1, + TCHT_ONITEMICON = 2, + TCHT_ONITEMLABEL = 4, + TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL + | TVHT_ONITEMSTATEICON, + TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL +} + +enum { + TCS_TABS = 0, + TCS_RIGHTJUSTIFY = 0, + TCS_SINGLELINE = 0, + TCS_FORCEICONLEFT = 16, + TCS_FORCELABELLEFT = 32, + TCS_BUTTONS = 256, + TCS_MULTILINE = 512, + TCS_FIXEDWIDTH = 1024, + TCS_RAGGEDRIGHT = 2048, + TCS_FOCUSONBUTTONDOWN = 0x1000, + TCS_OWNERDRAWFIXED = 0x2000, + TCS_TOOLTIPS = 0x4000, + TCS_FOCUSNEVER = 0x8000 +} + +static if (_WIN32_IE >= 0x300) { + enum { + TCS_BOTTOM = 2, + TCS_RIGHT = 2, + TCS_VERTICAL = 128, + TCS_SCROLLOPPOSITE = 0x0001, + TCS_HOTTRACK = 0x0040, + TCS_MULTISELECT = 0x0004 + } +} + +static if(_WIN32_IE >= 0x400) { + enum { + TCS_FLATBUTTONS = 0x0008, + TCS_EX_FLATSEPARATORS = 0x00000001, + TCS_EX_REGISTERDROP = 0x00000002 + } +} + +enum { + TCIF_TEXT = 1, + TCIF_IMAGE = 2, + TCIF_RTLREADING = 4, + TCIF_PARAM = 8 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TCIF_STATE = 16 + } +} + +enum { + TCIS_BUTTONPRESSED = 1 +} + +static if (_WIN32_IE >= 0x400) { + enum { + TCIS_HIGHLIGHTED = 2 + } +} + +enum { + TCM_FIRST = 0x1300, + TCM_GETIMAGELIST = TCM_FIRST + 2, + TCM_SETIMAGELIST, + TCM_GETITEMCOUNT, + TCM_GETITEMA, + TCM_SETITEMA, + TCM_INSERTITEMA, + TCM_DELETEITEM, + TCM_DELETEALLITEMS, + TCM_GETITEMRECT, + TCM_GETCURSEL, + TCM_SETCURSEL, + TCM_HITTEST, + TCM_SETITEMEXTRA, // = TCM_FIRST + 14 + TCM_ADJUSTRECT = TCM_FIRST + 40, + TCM_SETITEMSIZE, + TCM_REMOVEIMAGE, + TCM_SETPADDING, + TCM_GETROWCOUNT, + TCM_GETTOOLTIPS, + TCM_SETTOOLTIPS, + TCM_GETCURFOCUS, + TCM_SETCURFOCUS, + TCM_SETMINTABWIDTH, + TCM_DESELECTALL, // = TCM_FIRST + 50 + TCM_GETITEMW = TCM_FIRST + 60, + TCM_SETITEMW = TCM_FIRST + 61, + TCM_INSERTITEMW = TCM_FIRST + 62 +} + +static if (_WIN32_IE >=0x0400) { + enum { + TCM_HIGHLIGHTITEM = TCM_FIRST + 51, + TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52, + TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53, + TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + TCN_KEYDOWN = TCN_FIRST, + TCN_SELCHANGE = TCN_FIRST - 1, + TCN_SELCHANGING = TCN_FIRST - 2 +} + +enum { + NM_OUTOFMEMORY = NM_FIRST - 1, + NM_CLICK = NM_FIRST - 2, + NM_DBLCLK = NM_FIRST - 3, + NM_RETURN = NM_FIRST - 4, + NM_RCLICK = NM_FIRST - 5, + NM_RDBLCLK = NM_FIRST - 6, + NM_SETFOCUS = NM_FIRST - 7, + NM_KILLFOCUS = NM_FIRST - 8, + NM_CUSTOMDRAW = NM_FIRST - 12, + NM_HOVER = NM_FIRST - 13, + NM_NCHITTEST = NM_FIRST - 14, + NM_KEYDOWN = NM_FIRST - 15, + NM_RELEASEDCAPTURE = NM_FIRST - 16, + NM_SETCURSOR = NM_FIRST - 17, + NM_CHAR = NM_FIRST - 18, + NM_TOOLTIPSCREATED = NM_FIRST - 19 +} + +enum { + SBARS_SIZEGRIP = 256 +} + +/*enum { + CCM_FIRST = 0x2000, + CCM_LAST = CCM_FIRST + 0x200, + CCM_SETBKCOLOR = 8193, + CCM_SETCOLORSCHEME = 8194, + CCM_GETCOLORSCHEME = 8195, + CCM_GETDROPTARGET = 8196, + CCM_SETUNICODEFORMAT = 8197, + CCM_GETUNICODEFORMAT = 8198, + CCM_SETVERSION = 0x2007, + CCM_GETVERSION = 0x2008, + CCM_SETNOTIFYWINDOW = 0x2009 +}*/ + +static if (_WIN32_WINNT >= 0x501) { + enum { + CCM_SETWINDOWTHEME = 0x200b, + CCM_DPISCALE = 0x200c, + + RB_GETBANDMARGINS = WM_USER + 40, + RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME, + } +} + +enum { + ICC_LISTVIEW_CLASSES = 1, + ICC_TREEVIEW_CLASSES = 2, + ICC_BAR_CLASSES = 4, + ICC_TAB_CLASSES = 8, + ICC_UPDOWN_CLASS = 16, + ICC_PROGRESS_CLASS = 32, + ICC_HOTKEY_CLASS = 64, + ICC_ANIMATE_CLASS = 128, + ICC_WIN95_CLASSES = 255, + ICC_DATE_CLASSES = 256, + ICC_USEREX_CLASSES = 512, + ICC_COOL_CLASSES = 1024 +} + +static if (_WIN32_IE >= 0x400) { + enum { + INFOTIPSIZE = 1024, + ICC_INTERNET_CLASSES = 2048, + ICC_PAGESCROLLER_CLASS = 4096, + ICC_NATIVEFNTCTL_CLASS = 8192 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + ICC_STANDARD_CLASSES = 0x00004000, + ICC_LINK_CLASS = 0x00008000 + } +} + +enum { + GDTR_MIN = 1, + GDTR_MAX = 2 +} + +enum { + GMR_VISIBLE, + GMR_DAYSTATE +} + +enum { + GDT_ERROR = -1, + GDT_VALID = 0, + GDT_NONE = 1 +} + +enum { + DTS_SHORTDATEFORMAT = 0, + DTS_UPDOWN = 1, + DTS_SHOWNONE = 2, + DTS_LONGDATEFORMAT = 4, + DTS_TIMEFORMAT = 9, + DTS_APPCANPARSE = 16, + DTS_RIGHTALIGN = 32 +} + +static if (_WIN32_IE >= 0x500) { + enum { + DTS_SHORTDATECENTURYFORMAT = 0x000C + } +} + +enum { + MCS_DAYSTATE = 1, + MCS_MULTISELECT = 2, + MCS_WEEKNUMBERS = 4 +} + +static if (_WIN32_IE >= 0x400) { + enum { + MCS_NOTODAYCIRCLE = 0x0008, + MCS_NOTODAY = 0x0010 + } +} else { + enum { + MCS_NOTODAY = 0x0008 + } +} + +enum { + DTM_FIRST = 0x10000, + DTM_GETSYSTEMTIME = 0x1001, + DTM_SETSYSTEMTIME = 0x1002, + DTM_GETRANGE = 0x1003, + DTM_SETRANGE = 0x1004, + DTM_SETFORMATA = 0x1005, + DTM_SETMCCOLOR = 0x1006, + DTM_GETMCCOLOR = 0x1007, + DTM_GETMONTHCAL = 0x1008, + DTM_SETMCFONT = 0x1009, + DTM_GETMCFONT = 0x100a, + DTM_SETFORMATW = 0x1050 +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + DTM_SETMCSTYLE = DTM_FIRST + 11, + DTM_GETMCSTYLE, + DTM_CLOSEMONTHCAL, + DTM_GETDATETIMEPICKERINFO, + DTM_GETIDEALSIZE, + } +} + +enum { + DTN_USERSTRINGA = -758U, + DTN_USERSTRINGW = -745U, + DTN_WMKEYDOWNA = -757U, + DTN_WMKEYDOWNW = -744U, + DTN_FORMATA = -756U, + DTN_FORMATW = -743U, + DTN_FORMATQUERYA = -755U, + DTN_FORMATQUERYW = -742U, + DTN_DROPDOWN = -754U, + DTN_CLOSEUP = -753U, + DTN_DATETIMECHANGE = -759U, +} + +enum { + MCM_FIRST = 0x1000, + MCM_GETCURSEL = 0x1001, + MCM_SETCURSEL = 0x1002, + MCM_GETMAXSELCOUNT = 0x1003, + MCM_SETMAXSELCOUNT = 0x1004, + MCM_GETSELRANGE = 0x1005, + MCM_SETSELRANGE = 0x1006, + MCM_GETMONTHRANGE = 0x1007, + MCM_SETDAYSTATE = 0x1008, + MCM_GETMINREQRECT = 0x1009, + MCM_SETCOLOR = 0x100a, + MCM_GETCOLOR = 0x100b, + MCM_SETTODAY = 0x100c, + MCM_GETTODAY = 0x100d, + MCM_HITTEST = 0x100e, + MCM_SETFIRSTDAYOFWEEK = 0x100f, + MCM_GETFIRSTDAYOFWEEK = 0x1010, + MCM_GETRANGE = 0x1011, + MCM_SETRANGE = 0x1012, + MCM_GETMONTHDELTA = 0x1013, + MCM_SETMONTHDELTA = 0x1014, + MCM_GETMAXTODAYWIDTH = 0x1015, + MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT, + MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT +} + +static if (_WIN32_WINNT >= 0x600) { + enum { + MCM_GETCURRENTVIEW = MCM_FIRST + 22, + MCM_GETCALENDARCOUNT, + MCM_GETCALENDARGRIDINFO, + MCM_GETCALID = MCM_FIRST + 27, + MCM_SETCALID, + MCM_SIZERECTTOMIN, + MCM_SETCALENDARBORDER, + MCM_GETCALENDARBORDER, + MCM_SETCURRENTVIEW, + } +} + +enum { + MCN_SELCHANGE = -749U, + MCN_GETDAYSTATE = -747U, + MCN_SELECT = -746U +} + +enum { + ODT_HEADER = 100, + ODT_TAB, + ODT_LISTVIEW // = 102 +} + +enum { + SB_SETBKCOLOR = 0x2001 +} + +static if (_WIN32_IE >= 0x300) { + enum { + SB_ISSIMPLE = 1038 + } + + enum { + MCSC_BACKGROUND, + MCSC_TEXT, + MCSC_TITLEBK, + MCSC_TITLETEXT, + MCSC_MONTHBK, + MCSC_TRAILINGTEXT // = 5 + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + MCHT_TITLE = 0x10000, + MCHT_CALENDAR = 0x20000, + MCHT_TODAYLINK = 0x30000, + MCHT_NEXT = 0x1000000, + MCHT_PREV = 0x2000000, + MCHT_NOWHERE = 0x00, + MCHT_TITLEBK = MCHT_TITLE, + MCHT_TITLEMONTH = MCHT_TITLE | 0x0001, + MCHT_TITLEYEAR = MCHT_TITLE | 0x0002, + MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003, + MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003, + MCHT_CALENDARBK = MCHT_CALENDAR, + MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001, + MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT, + MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV, + MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002, + MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 + } +} + +enum { + RBS_TOOLTIPS = 256, + RBS_VARHEIGHT = 512, + RBS_BANDBORDERS = 1024, + RBS_FIXEDORDER = 2048 +} + +enum { + RBIM_IMAGELIST = 1 +} + +enum { + RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME, + RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME +} + +enum { + RBBS_BREAK = 0x0001, + RBBS_FIXEDSIZE = 0x0002, + RBBS_CHILDEDGE = 0x0004, + RBBS_HIDDEN = 0x0008, + RBBS_NOVERT = 0x0010, + RBBS_FIXEDBMP = 0x0020, + RBBS_VARIABLEHEIGHT = 0x0040, + RBBS_GRIPPERALWAYS = 0x0080, + RBBS_NOGRIPPER = 0x0100 +} + +static if (_WIN32_IE >= 0x500) { + enum { + RBBS_USECHEVRON = 0x0200 + } +} + +static if (_WIN32_IE >= 0x501) { + enum { + RBBS_HIDETITLE = 0x0400, + RBBS_TOPALIGN = 0x0800 + } +} + +enum { + RBBIM_STYLE = 1, + RBBIM_COLORS = 2, + RBBIM_TEXT = 4, + RBBIM_IMAGE = 8, + RBBIM_CHILD = 16, + RBBIM_CHILDSIZE = 32, + RBBIM_SIZE = 64, + RBBIM_BACKGROUND = 128, + RBBIM_ID = 256 +} + +enum { + RB_INSERTBANDA = WM_USER + 1, + RB_DELETEBAND, + RB_GETBARINFO, + RB_SETBARINFO, // = WM_USER + 4 + RB_SETBANDINFOA = WM_USER + 6, + RB_SETPARENT = WM_USER + 7, + RB_INSERTBANDW = WM_USER + 10, + RB_SETBANDINFOW, + RB_GETBANDCOUNT, + RB_GETROWCOUNT, + RB_GETROWHEIGHT // = WM_USER + 14, +} + +enum { + RBN_HEIGHTCHANGE = RBN_FIRST +} + +static if (_WIN32_IE >= 0x300) { + enum { + LVN_ODCACHEHINT = LVN_FIRST - 13, + LVN_ODFINDITEMA = LVN_FIRST - 52, + LVN_ODFINDITEMW = LVN_FIRST - 79, + LVN_ITEMACTIVATE = LVN_FIRST - 14, + LVN_ODSTATECHANGED = LVN_FIRST - 15 + } + + version (Unicode) { + enum { + LVN_ODFINDITEM = LVN_ODFINDITEMW + } + } else { + enum { + LVN_ODFINDITEM = LVN_ODFINDITEMA + } + } +} + +static if (_WIN32_IE >= 0x400) { + enum { + SB_SETICON = 1039, + SB_SETTIPTEXTA, + SB_SETTIPTEXTW, + SB_GETTIPTEXTA, + SB_GETTIPTEXTW, + SB_GETICON, // = 1044 + SB_SETUNICODEFORMAT = 0x2005, + SB_GETUNICODEFORMAT = 0x2006 + } + + enum { + PGF_INVISIBLE = 0, + PGF_NORMAL = 1, + PGF_GRAYED = 2, + PGF_DEPRESSED = 4, + PGF_HOT = 8 + } + + enum { + PGB_TOPORLEFT, + PGB_BOTTOMORRIGHT + } + + enum { + PGF_SCROLLUP = 1, + PGF_SCROLLDOWN = 2, + PGF_SCROLLLEFT = 4, + PGF_SCROLLRIGHT = 8 + } + + enum { + PGK_SHIFT = 1, + PGK_CONTROL = 2, + PGK_MENU = 4 + } + + enum { + PGF_CALCWIDTH = 1, + PGF_CALCHEIGHT = 2 + } + + enum { + PGM_FIRST = 0x1400, + PGM_SETCHILD = PGM_FIRST + 1, + PGM_RECALCSIZE, + PGM_FORWARDMOUSE, + PGM_SETBKCOLOR, + PGM_GETBKCOLOR, + PGM_SETBORDER, + PGM_GETBORDER, + PGM_SETPOS, + PGM_GETPOS, + PGM_SETBUTTONSIZE, + PGM_GETBUTTONSIZE, + PGM_GETBUTTONSTATE, // = PGM_FIRST + 12 + PGM_GETDROPTARGET = CCM_GETDROPTARGET + } + + enum { + RBS_REGISTERDROP = 4096, + RBS_AUTOSIZE = 8192, + RBS_VERTICALGRIPPER = 16384, + RBS_DBLCLKTOGGLE = 32768 + } + + enum { + RBBIM_IDEALSIZE = 512, + RBBIM_LPARAM = 1024, + RBBIM_HEADERSIZE = 2048 + } + + enum { + RB_HITTEST = WM_USER + 8, + RB_GETRECT = WM_USER + 9, + RB_IDTOINDEX = WM_USER + 16, + RB_GETTOOLTIPS, + RB_SETTOOLTIPS, + RB_SETBKCOLOR, + RB_GETBKCOLOR, + RB_SETTEXTCOLOR, + RB_GETTEXTCOLOR, + RB_SIZETORECT, + RB_BEGINDRAG, + RB_ENDDRAG, + RB_DRAGMOVE, + RB_GETBARHEIGHT, + RB_GETBANDINFOW, + RB_GETBANDINFOA, + RB_MINIMIZEBAND, + RB_MAXIMIZEBAND, // = WM_USER + 31 + RB_GETDROPTARGET = CCM_GETDROPTARGET, + RB_GETBANDBORDERS = WM_USER + 34, + RB_SHOWBAND = WM_USER + 35, + RB_SETPALETTE = WM_USER + 37, + RB_GETPALETTE = WM_USER + 38, + RB_MOVEBAND = WM_USER + 39, + RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } + + enum { + RBN_GETOBJECT = RBN_FIRST - 1, + RBN_LAYOUTCHANGED = RBN_FIRST - 2, + RBN_AUTOSIZE = RBN_FIRST - 3, + RBN_BEGINDRAG = RBN_FIRST - 4, + RBN_ENDDRAG = RBN_FIRST - 5, + RBN_DELETINGBAND = RBN_FIRST - 6, + RBN_DELETEDBAND = RBN_FIRST - 7, + RBN_CHILDSIZE = RBN_FIRST - 8 + } + + enum { + RBNM_ID = 1, + RBNM_STYLE = 2, + RBNM_LPARAM = 4 + } + + enum { + RBHT_NOWHERE = 1, + RBHT_CAPTION, + RBHT_CLIENT, + RBHT_GRABBER + } + + version (Unicode) { + alias SB_SETTIPTEXTW SB_SETTIPTEXT; + alias SB_GETTIPTEXTW SB_GETTIPTEXT; + alias RB_GETBANDINFOW RB_GETBANDINFO; + } else { + alias SB_SETTIPTEXTA SB_SETTIPTEXT; + alias SB_GETTIPTEXTA SB_GETTIPTEXT; + alias RB_GETBANDINFOA RB_GETBANDINFO; + } +} else { + enum { + RB_GETBANDINFO = WM_USER + 5 + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + RB_PUSHCHEVRON = WM_USER + 43, + } +} + +static if (_WIN32_IE >= 0x600) { + enum { + RB_SETEXTENDEDSTYLE = WM_USER + 41, + RB_GETEXTENDEDSTYLE = WM_USER + 42, + } +} + +static if (_WIN32_WINNT >= 0x500) { + enum { + RB_SETBANDWIDTH = WM_USER + 44, + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + ECM_FIRST = 0x1500, + BCM_FIRST = 0x1600, + + BCM_GETIDEALSIZE = BCM_FIRST + 0x0001, + BCM_SETIMAGELIST = BCM_FIRST + 0x0002, + BCM_GETIMAGELIST = BCM_FIRST + 0x0003, + BCM_SETTEXTMARGIN = BCM_FIRST + 0x0004, + BCM_GETTEXTMARGIN = BCM_FIRST + 0x0005, + + BCN_HOTITEMCHANGE = BCN_FIRST + 0x0001, + } + + struct NMBCHOTITEM { + NMHDR hdr; + DWORD dwFlags; + } + alias NMBCHOTITEM* LPNMBCHOTITEM; +} + +static if(_WIN32_WINNT >= 0x600) { + enum { + BST_DROPDOWNPUSHED = 0x0400, + + BS_SPLITBUTTON = 0x0000_000C, + BS_DEFSPLITBUTTON = 0x0000_000D, + BS_COMMANDLINK = 0x0000_000E, + BS_DEFCOMMANDLINK = 0x0000_000F, + + BCSIF_GLYPH = 0x0001, + BCSIF_IMAGE = 0x0002, + BCSIF_STYLE = 0x0004, + BCSIF_SIZE = 0x0008, + + BCSS_NOSPLIT = 0x0001, + BCSS_STRETCH = 0x0002, + BCSS_ALIGNLEFT = 0x0004, + BCSS_IMAGE = 0x0008, + + BCM_SETDROPDOWNSTATE = BCM_FIRST + 0x0006, + BCM_SETSPLITINFO = BCM_FIRST + 0x0007, + BCM_GETSPLITINFO = BCM_FIRST + 0x0008, + BCM_SETNOTE = BCM_FIRST + 0x0009, + BCM_GETNOTE = BCM_FIRST + 0x000A, + BCM_GETNOTELENGTH = BCM_FIRST + 0x000B, + BCM_SETSHIELD = BCM_FIRST + 0x000C, + + BCN_DROPDOWN = BCN_FIRST + 0x0002, + } + + const HIMAGELIST BCCL_NOGLYPH = cast(HIMAGELIST)-1; + + struct BUTTON_SPLITINFO + { + UINT mask; + HIMAGELIST himlGlyph; + UINT uSplitStyle; + SIZE size; + } + alias BUTTON_SPLITINFO* PBUTTON_SPLITINFO; +} + +enum { + CBEM_INSERTITEMA = WM_USER + 1, + CBEM_SETIMAGELIST, + CBEM_GETIMAGELIST, + CBEM_GETITEMA, + CBEM_SETITEMA, + CBEM_GETCOMBOCONTROL, + CBEM_GETEDITCONTROL, + CBEM_SETEXSTYLE, + CBEM_GETEXSTYLE, // = WM_USER + 9) + CBEM_DELETEITEM = CB_DELETESTRING +} + +static if (_WIN32_IE >= 0x400) { + enum { + CBEM_SETEXTENDEDSTYLE = WM_USER + 14, + CBEM_GETEXTENDEDSTYLE = WM_USER + 9, + CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT, + CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT + } +} + +enum { + CBEM_HASEDITCHANGED = WM_USER + 10, + CBEM_INSERTITEMW = WM_USER + 11, + CBEM_SETITEMW = WM_USER + 12, + CBEM_GETITEMW = WM_USER + 13 +} + +static if (_WIN32_WINNT >= 0x501) +{ + enum { + CBEM_SETWINDOWTHEME = CCM_SETWINDOWTHEME + } +} + +enum { + DA_LAST = 0x7fffffff +} + +enum { + DPA_APPEND = 0x7fffffff, + DPA_ERR = -1 +} + +enum { + DSA_APPEND = 0x7fffffff, + DSA_ERR = -1 +} + +enum { + DPAS_SORTED = 1, + DPAS_INSERTBEFORE = 2, + DPAS_INSERTAFTER = 4 +} + +static if (_WIN32_IE >= 0x400) { + enum { + WSB_PROP_CYVSCROLL = 1, + WSB_PROP_CXHSCROLL = 2, + WSB_PROP_CYHSCROLL = 4, + WSB_PROP_CXVSCROLL = 8, + WSB_PROP_CXHTHUMB = 16, + WSB_PROP_CYVTHUMB = 32, + WSB_PROP_VBKGCOLOR = 64, + WSB_PROP_HBKGCOLOR = 128, + WSB_PROP_VSTYLE = 256, + WSB_PROP_HSTYLE = 512, + WSB_PROP_WINSTYLE = 1024, + WSB_PROP_PALETTE = 2048, + WSB_PROP_MASK = 0xfff, + FSB_FLAT_MODE = 2, + FSB_ENCARTA_MODE = 1, + FSB_REGULAR_MODE = 0 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + LIF_ITEMINDEX = 1, + LIF_STATE = 2, + LIF_ITEMID = 4, + LIF_URL = 8 + } + + enum { + LIS_FOCUSED = 1, + LIS_ENABLED = 2, + LIS_VISITED = 4 + } + + enum { + LM_HITTEST = WM_USER + 768, + LM_GETIDEALHEIGHT, + LM_SETITEM, + LM_GETITEM, // = WM_USER + 771 + LM_GETIDEALSIZE = LM_GETIDEALHEIGHT, + } + + const size_t MAX_LINKID_TEXT = 48; + const size_t L_MAX_URL_LENGTH = 2084; +} + + +struct TBMETRICS { + UINT cbSize = TBMETRICS.sizeof; + DWORD dwMask; + int cxPad; + int cyPad; + int cxBarPad; + int cyBarPad; + int cxButtonSpacing; + int cyButtonSpacing; +} +alias TBMETRICS* LPTBMETRICS; + +static if (_WIN32_WINNT >= 0x501) { + struct TTGETTITLE { + DWORD dwSize = TTGETTITLE.sizeof; + UINT uTitleBitmap; + UINT cch; + WCHAR* pszTitle; + } + alias TTGETTITLE* PTTGETTITLE; +} + +static if (_WIN32_WINNT >= 0x600) { + struct MCGRIDINFO { + UINT cbSize; + DWORD dwPart; + DWORD dwFlags; + int iCalendar; + int iRow; + int iCol; + BOOL bSelected; + SYSTEMTIME stStart; + SYSTEMTIME stEnd; + RECT rc; + PWSTR pszName; + size_t cchName; + } + alias MCGRIDINFO* PMCGRIDINFO; + + struct DATETIMEPICKERINFO + { + DWORD cbSize; + RECT rcCheck; + DWORD stateCheck; + RECT rcButton; + DWORD stateButton; + HWND hwndEdit; + HWND hwndUD; + HWND hwndDropDown; + } + alias DATETIMEPICKERINFO* LPDATETIMEPICKERINFO; +} + +struct COMBOBOXEXITEMA { + UINT mask; + INT_PTR iItem; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias COMBOBOXEXITEMA* PCOMBOBOXEXITEMA; +alias const(COMBOBOXEXITEMA)* PCCOMBOEXITEMA; + +struct COMBOBOXEXITEMW { + UINT mask; + INT_PTR iItem; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias COMBOBOXEXITEMW* PCOMBOBOXEXITEMW; +alias const(COMBOBOXEXITEMW)* PCCOMBOEXITEMW; + +static if (_WIN32_IE >= 0x400) { + struct NMCOMBOBOXEXA { + NMHDR hdr; + COMBOBOXEXITEMA ceItem; + } + alias NMCOMBOBOXEXA* PNMCOMBOBOXEXA; + + struct NMCOMBOBOXEXW { + NMHDR hdr; + COMBOBOXEXITEMW ceItem; + } + alias NMCOMBOBOXEXW* PNMCOMBOBOXEXW; + + struct NMCBEDRAGBEGINW { + NMHDR hdr; + int iItemid; + WCHAR[CBEMAXSTRLEN] szText; + } + alias NMCBEDRAGBEGINW* LPNMCBEDRAGBEGINW, PNMCBEDRAGBEGINW; + + struct NMCBEDRAGBEGINA { + NMHDR hdr; + int iItemid; + char[CBEMAXSTRLEN] szText; + } + alias NMCBEDRAGBEGINA* LPNMCBEDRAGBEGINA, PNMCBEDRAGBEGINA; + + struct NMIPADDRESS { + NMHDR hdr; + int iField; + int iValue; + } + alias NMIPADDRESS* LPNMIPADDRESS; + + struct NMLVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; + } + alias NMLVKEYDOWN* LPNMLVKEYDOWN; + + struct NMPGCALCSIZE { + NMHDR hdr; + DWORD dwFlag; + int iWidth; + int iHeight; + } + alias NMPGCALCSIZE* LPNMPGCALCSIZE; + + struct NMPGSCROLL { + NMHDR hdr; + BOOL fwKeys; + RECT rcParent; + int iDir; + int iXpos; + int iYpos; + int iScroll; + } + alias NMPGSCROLL* LPNMPGSCROLL; + + struct NMSELCHANGE { + NMHDR nmhdr; + SYSTEMTIME stSelStart; + SYSTEMTIME stSelEnd; + } + alias NMSELCHANGE* LPNMSELCHANGE; + + struct NMTBHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; + } + alias NMTBHOTITEM* LPNMTBHOTITEM; + + struct NMTBDISPINFOA { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPSTR pszText; + int cchText; + } + alias NMTBDISPINFOA* LPNMTBDISPINFOA; + + struct NMTBDISPINFOW { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPWSTR pszText; + int cchText; + } + alias NMTBDISPINFOW* LPNMTBDISPINFOW; + + struct NMTBGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; + } + alias NMTBGETINFOTIPA* LPNMTBGETINFOTIPA; + + struct NMTBGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; + } + alias NMTBGETINFOTIPW* LPNMTBGETINFOTIPW; + + struct NMMOUSE { + NMHDR hdr; + DWORD_PTR dwItemSpec; + DWORD_PTR dwItemData; + POINT pt; + LPARAM dwHitInfo; + } + alias NMMOUSE* LPNMMOUSE; +} + +static if (_WIN32_IE >= 0x401) { + struct NMTOOLTIPSCREATED { + NMHDR hdr; + HWND hwndToolTips; + } + alias NMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; +} + +struct NMDATETIMECHANGE { + NMHDR nmhdr; + DWORD dwFlags; + SYSTEMTIME st; +} +alias NMDATETIMECHANGE* LPNMDATETIMECHANGE; + +struct NMCBEENDEDITW { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR[CBEMAXSTRLEN] szText; + int iWhy; +} +alias NMCBEENDEDITW* LPNMCBEENDEDITW, PNMCBEENDEDITW; + +struct NMCBEENDEDITA { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char[CBEMAXSTRLEN] szText; + int iWhy; +} +alias NMCBEENDEDITA* LPNMCBEENDEDITA, PNMCBEENDEDITA; + +struct COLORMAP { + COLORREF from; + COLORREF to; +} +alias COLORMAP* LPCOLORMAP; + +struct DRAGLISTINFO { + UINT uNotification; + HWND hWnd; + POINT ptCursor; +} +alias DRAGLISTINFO* LPDRAGLISTINFO; + +struct TBBUTTON { + int iBitmap; + int idCommand; + BYTE fsState; + BYTE fsStyle; + version(Win64){ + BYTE[6] bReserved; + } else { + BYTE[2] bReserved; + } + DWORD_PTR dwData; + INT_PTR iString; +} +alias TBBUTTON* PTBBUTTON, LPTBBUTTON; +alias const(TBBUTTON)* LPCTBBUTTON; + +static if (_WIN32_IE >= 0x400) { + struct TBBUTTONINFOA { + UINT cbSize = TBBUTTONINFOA.sizeof; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPSTR pszText; + int cchText; + } + alias TBBUTTONINFOA* LPTBBUTTONINFOA; + + struct TBBUTTONINFOW { + UINT cbSize = TBBUTTONINFOW.sizeof; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPWSTR pszText; + int cchText; + } + alias TBBUTTONINFOW* LPTBBUTTONINFOW; + + struct TBINSERTMARK { + int iButton; + DWORD dwFlags; + } + alias TBINSERTMARK* LPTBINSERTMARK; + + struct LVBKIMAGEA { + ULONG ulFlags; + HBITMAP hbm; + LPSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; + } + alias LVBKIMAGEA* LPLVBKIMAGEA; + + struct LVBKIMAGEW { + ULONG ulFlags; + HBITMAP hbm; + LPWSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; + } + alias LVBKIMAGEW* LPLVBKIMAGEW; +} + +/*struct TBNOTIFY { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPTSTR pszText; +} +alias TBNOTIFY* LPTBNOTIFY; +*/ + +/*struct TBSAVEPARAMS { + HKEY hkr; + LPCTSTR pszSubKey; + LPCTSTR pszValueName; +}*/ + +struct IMAGEINFO { + HBITMAP hbmImage; + HBITMAP hbmMask; + int Unused1; + int Unused2; + RECT rcImage; +} +alias IMAGEINFO* LPIMAGEINFO; + +static if (_WIN32_IE >= 0x500) { + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + UINT type; + LPVOID pvFilter; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + int iImage; + int iOrder; + UINT type; + LPVOID pvFilter; + } +} else static if (_WIN32_IE >= 0x300) { + 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; + } +} else { + struct HDITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + } + + struct HDITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; + } +} +alias HDITEMA* LPHDITEMA; +alias HDITEMW* LPHDITEMW; + +deprecated { + alias HDITEMA HD_ITEMA; + alias HDITEMW HD_ITEMW; + //alias HDITEM HD_ITEM; fixme +} + +struct HD_LAYOUT { + RECT* prc; + WINDOWPOS* pwpos; +} +alias HD_LAYOUT* LPHDLAYOUT; +deprecated alias HD_LAYOUT HDLAYOUT; + +struct HD_HITTESTINFO { + POINT pt; + UINT flags; + int iItem; +} +alias HD_HITTESTINFO* LPHDHITTESTINFO; + +struct HD_NOTIFYA { + NMHDR hdr; + int iItem; + int iButton; + HDITEMA* pitem; +} + +struct HD_NOTIFYW { + NMHDR hdr; + int iItem; + int iButton; + HDITEMW* pitem; +} + +/* FIXME: NMHEADER structure (base for all events of the comctl controls) + is the same as HD_NOTIFY depending on the value of _WIN32_IE macro. + I'm defining both for now. */ +struct NMHEADERA { + NMHDR hdr; + int iItem; + int iButton; + HDITEMA* pitem; +} +alias NMHEADERA* LPNMHEADERA; + +struct NMHEADERW { + NMHDR hdr; + int iItem; + int iButton; + HDITEMW* pitem; +} +alias NMHEADERW* LPNMHEADERW; + +version (Unicode) { + alias NMHEADERW NMHEADER; + alias LPNMHEADERW LPNMHEADER; +} else { + alias NMHEADERA NMHEADER; + alias LPNMHEADERA LPNMHEADER; +} +// End FIXME + +struct NMHDDISPINFOA { + NMHDR hdr; + int iItem; + UINT mask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias NMHDDISPINFOA* LPNMHDDISPINFOA; + +struct NMHDDISPINFOW { + NMHDR hdr; + int iItem; + UINT mask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias NMHDDISPINFOW* LPNMHDDISPINFOW; + +struct NMCUSTOMDRAW { + NMHDR hdr; + DWORD dwDrawStage; + HDC hdc; + RECT rc; + DWORD dwItemSpec; + UINT uItemState; + LPARAM lItemlParam; +} +alias NMCUSTOMDRAW* LPNMCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + struct NMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iSubItem; + } +} else { + struct NMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + } +} +alias NMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + struct NMLVGETINFOTIPA { + NMHDR hdr; + DWORD dwFlags; + LPSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; + } + alias NMLVGETINFOTIPA* LPNMLVGETINFOTIPA; + + struct NMLVGETINFOTIPW { + NMHDR hdr; + DWORD dwFlags; + LPWSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; + } + alias NMLVGETINFOTIPW* LPNMLVGETINFOTIPW; +} + +static if (_WIN32_IE >= 0x400) { + struct NMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + int iLevel; + } +} else { + struct NMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; + } +} +alias NMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW; + +static if (_WIN32_IE >= 0x400) { + static if (_WIN32_WINNT >= 0x501) { + struct NMTBCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + int iListGap; + } + } else { + struct NMTBCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + HBRUSH hbrMonoDither; + HBRUSH hbrLines; + HPEN hpenLines; + COLORREF clrText; + COLORREF clrMark; + COLORREF clrTextHighlight; + COLORREF clrBtnFace; + COLORREF clrBtnHighlight; + COLORREF clrHighlightHotTrack; + RECT rcText; + int nStringBkMode; + int nHLStringBkMode; + } + } + alias NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; + + struct NMITEMACTIVATE { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; + UINT uKeyFlags; + } + alias NMITEMACTIVATE* LPNMITEMACTIVATE; +} + +struct TBADDBITMAP { + HINSTANCE hInst; + UINT_PTR nID; +} +alias TBADDBITMAP* LPTBADDBITMAP; + +struct TBSAVEPARAMSA { + HKEY hkr; + LPCSTR pszSubKey; + LPCSTR pszValueName; +} + +struct TBSAVEPARAMSW { + HKEY hkr; + LPCWSTR pszSubKey; + LPCWSTR pszValueName; +} + +struct TBREPLACEBITMAP { + HINSTANCE hInstOld; + UINT_PTR nIDOld; + HINSTANCE hInstNew; + UINT_PTR nIDNew; + int nButtons; +} +alias TBREPLACEBITMAP* LPTBREPLACEBITMAP; + +static if (_WIN32_IE >= 0x500) { + struct NMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; + RECT rcButton; + } + + struct NMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; + RECT rcButton; + } +} else { + struct NMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; + } + + struct NMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; + } +} +alias NMTOOLBARA* LPNMTOOLBARA; +alias NMTOOLBARW* LPNMTOOLBARW; + +alias NMTOOLBARA TBNOTIFYA; +alias LPNMTOOLBARA LPTBNOTIFYA; + +alias NMTOOLBARW TBNOTIFYW; +alias LPNMTOOLBARW LPTBNOTIFYW; + +static if (_WIN32_WINNT >= 0x501) { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + void* lpReserved; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + void* lpReserved; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, + TTTOOLINFOA_V2_SIZE = TOOLINFOA.lpReserved.offsetof, + TTTOOLINFOW_V2_SIZE = TOOLINFOW.lpReserved.offsetof, + TTTOOLINFOA_V3_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V3_SIZE = TOOLINFOW.sizeof; +} else static if (_WIN32_IE >= 0x300) { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + LPARAM lParam; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + LPARAM lParam; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.lParam.offsetof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.lParam.offsetof, + TTTOOLINFOA_V2_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V2_SIZE = TOOLINFOW.sizeof; +} else { + struct TOOLINFOA { + UINT cbSize = TOOLINFOA.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; + } + + struct TOOLINFOW { + UINT cbSize = TOOLINFOW.sizeof; + UINT uFlags; + HWND hwnd; + UINT uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; + } + + const size_t + TTTOOLINFOA_V1_SIZE = TOOLINFOA.sizeof, + TTTOOLINFOW_V1_SIZE = TOOLINFOW.sizeof; +} +alias TOOLINFOA TTTOOLINFOA; +alias TOOLINFOW TTTOOLINFOW; +alias TTTOOLINFOA* LPTTTOOLINFOA, PTOOLINFOA, LPTOOLINFOA; +alias TTTOOLINFOW* LPTTTOOLINFOW, PTOOLINFOW, LPTOOLINFOW; + +struct TTHITTESTINFOA { + HWND hwnd; + POINT pt; + TOOLINFOA ti; +} +alias TTHITTESTINFOA* LPTTHITTESTINFOA, LPHITTESTINFOA; + +struct TTHITTESTINFOW { + HWND hwnd; + POINT pt; + TOOLINFOW ti; +} +alias TTHITTESTINFOW* LPTTHITTESTINFOW, LPHITTESTINFOW; + +static if (_WIN32_IE >= 0x300) { + struct NMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char[80] szText; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; + } + + struct NMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR[80] szText; + HINSTANCE hinst; + UINT uFlags; + LPARAM lParam; + } +} else { + struct NMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char[80] szText; + HINSTANCE hinst; + UINT uFlags; + } + + struct NMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR[80] szText; + HINSTANCE hinst; + UINT uFlags; + } +} +alias NMTTDISPINFOA* LPNMTTDISPINFOA; +alias NMTTDISPINFOW* LPNMTTDISPINFOW; +alias NMTTDISPINFOA TOOLTIPTEXTA; +alias LPNMTTDISPINFOA LPTOOLTIPTEXTA; +alias NMTTDISPINFOW TOOLTIPTEXTW; +alias LPNMTTDISPINFOW LPTOOLTIPTEXTW; + +struct UDACCEL { + UINT nSec; + UINT nInc; +} +alias UDACCEL* LPUDACCEL; + +struct NMUPDOWN { + NMHDR hdr; + int iPos; + int iDelta; +} +alias NMUPDOWN* LPNMUPDOWN; + +deprecated { + alias NMUPDOWN NM_UPDOWN; + alias LPNMUPDOWN LPNM_UPDOWN; +} + +static if (_WIN32_WINNT >= 0x501) { + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + int iGroupId; + UINT cColumns; + PUINT puColumns; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + int iIndent; + int iGroupId; + UINT cColumns; + PUINT puColumns; + } +} else static if (_WIN32_IE >= 0x300) { + 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; + } +} else { + struct LVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct LVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} +alias LVITEMA* LPLVITEMA; +alias LVITEMW* LPLVITEMW; +alias LVITEMA LV_ITEMA; +alias LVITEMW LV_ITEMW; + +struct LVFINDINFOA { + UINT flags; + LPCSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} + +struct LVFINDINFOW { + UINT flags; + LPCWSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} + +alias LVFINDINFOA* LPFINDINFOA; +alias LVFINDINFOA LV_FINDINFOA; +alias LVFINDINFOW* LPFINDINFOW; +alias LVFINDINFOW LV_FINDINFOW; + +struct NMLVFINDITEMA { + NMHDR hdr; + int iStart; + LVFINDINFOA lvfi; +} + +struct NMLVFINDITEMW { + NMHDR hdr; + int iStart; + LVFINDINFOW lvfi; +} + +alias NMLVFINDITEMA* PNMLVFINDITEMA, LPNMLVFINDITEMA; +alias NMLVFINDITEMW* PNMLVFINDITEMW, LPNMLVFINDITEMW; + +static if (_WIN32_IE >= 0x300) { + struct LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; + int iSubItem; + } +} else { + struct LVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; + } +} +alias LVHITTESTINFO* LPLVHITTESTINFO; +alias LVHITTESTINFO LV_HITTESTINFO; + +static if (_WIN32_IE >= 0x300) { + 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; + } +} else { + struct LVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; + } + struct LVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; + } +} +alias LVCOLUMNA* LPLVCOLUMNA; +alias LVCOLUMNW* LPLVCOLUMNW; +alias LVCOLUMNA LV_COLUMNA; +alias LVCOLUMNW LV_COLUMNW; + +static if (_WIN32_WINNT >= 0x501) { + /* SG: The definitions in this static if block are from the MSDN docs. + * They are not in MinGW, but nonetheless required for macros that are. + */ + struct LVGROUP { + UINT cbSize = LVGROUP.sizeof; + UINT mask; + LPWSTR pszHeader; + int cchHeader; + LPWSTR pszFooter; + int cchFooter; + int iGroupId; + UINT stateMask; + UINT state; + UINT uAlign; + static if (_WIN32_WINNT >= 0x600) { + LPWSTR pszSubtitle; + UINT cchSubtitle; + LPWSTR pszTask; + UINT cchTask; + LPWSTR pszDescriptionTop; + UINT cchDescriptionTop; + LPWSTR pszDescriptionBottom; + UINT cchDescriptionBottom; + int iTitleImage; + int iExtendedImage; + int iFirstItem; // Read only + UINT cItems; // Read only + LPWSTR pszSubsetTitle; // NULL if group is not subset + UINT cchSubsetTitle; + } + } + alias LVGROUP* PLVGROUP; + + struct LVGROUPMETRICS { + UINT cbSize = LVGROUPMETRICS.sizeof; + UINT mask; + UINT Left; + UINT Top; + UINT Right; + UINT Bottom; + COLORREF crLeft; + COLORREF crTop; + COLORREF crRight; + COLORREF crBottom; + COLORREF crHeader; + COLORREF crFooter; + } + alias LVGROUPMETRICS* PLVGROUPMETRICS; + + struct LVINSERTMARK { + UINT cbSize = LVINSERTMARK.sizeof; + DWORD dwFlags; + int iItem; + DWORD dwReserved; + } + alias LVINSERTMARK* PLVINSERTMARK; + alias LVINSERTMARK* LPLVINSERTMARK; + + struct LVTILEINFO { + UINT cbSize = LVTILEINFO.sizeof; + int iItem; + UINT cColumns; + PUINT puColumns; + static if (_WIN32_WINNT >= 0x600) { + int* piColFmt; + } + } + alias LVTILEINFO* PLVTILEINFO; + + struct LVTILEVIEWINFO { + UINT cbSize = LVTILEVIEWINFO.sizeof; + DWORD dwMask; + DWORD dwFlags; + SIZE sizeTile; + int cLines; + RECT rcLabelMargin; + } + alias LVTILEVIEWINFO* PLVTILEVIEWINFO; + + struct LVINSERTGROUPSORTED { + PFNLVGROUPCOMPARE pfnGroupCompare; + LPVOID* pvData; + LVGROUP lvGroup; + } + alias LVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; + + alias int function(INT, INT, VOID*) PFNLVGROUPCOMPARE; + + struct LVSETINFOTIP { + UINT cbSize = LVSETINFOTIP.sizeof; + DWORD dwFlags; + LPWSTR pszText; + int iItem; + int iSubItem; + HBITMAP hbmp; + } + alias LVSETINFOTIP* PLVSETINFOTIP; + + struct BUTTON_IMAGELIST { + HIMAGELIST himl; + RECT margin; + UINT uAlign; + } + alias BUTTON_IMAGELIST* PBUTTON_IMAGELIST; +} + +static if (_WIN32_WINNT >= 0x600) { + struct LVITEMINDEX + { + int iItem; + int iGroup; + }; + alias LVITEMINDEX* PLVITEMINDEX; + + struct LVFOOTERINFO + { + UINT mask; + LPWSTR pszText; + int cchTextMax; + UINT cItems; + } + alias LVFOOTERINFO* LPLVFOOTERINFO; + + struct LVFOOTERITEM + { + UINT mask; + int iItem; + LPWSTR pszText; + int cchTextMax; + UINT state; + UINT stateMask; + } + alias LVFOOTERITEM *LPLVFOOTERITEM; + + alias UINT TVITEMPART; + enum { + TVGIPR_BUTTON = 0x0001, + } +} + +alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; + +struct NMLISTVIEW { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; +} +alias NMLISTVIEW* LPNMLISTVIEW; + +deprecated { + alias NMLISTVIEW NM_LISTVIEW; + alias LPNMLISTVIEW LPNM_LISTVIEW; +} + +struct NMLVDISPINFOA { + NMHDR hdr; + LV_ITEMA item; +} +alias NMLVDISPINFOA* LPNMLVDISPINFOA; +alias NMLVDISPINFOA LV_DISPINFOA; + +struct NMLVDISPINFOW { + NMHDR hdr; + LV_ITEMW item; +} +alias NMLVDISPINFOW* LPNMLVDISPINFOW; +alias NMLVDISPINFOW LV_DISPINFOW; + +struct LV_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +struct NMLVCACHEHINT { + NMHDR hdr; + int iFrom; + int iTo; +} +alias NMLVCACHEHINT* LPNMLVCACHEHINT, PNM_CACHEHINT, LPNM_CACHEHINT; +alias NMLVCACHEHINT NM_CACHEHINT; + +struct TVITEMA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias TVITEMA* LPTVITEMA, LPTV_ITEMA; +alias TVITEMA TV_ITEMA; + +struct TVITEMW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias TVITEMW* LPTVITEMW, LPTV_ITEMW; +alias TVITEMW TV_ITEMW; + +static if (_WIN32_IE >= 0x400) { + struct TVITEMEXA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; + } + alias TVITEMEXA* LPTVITEMEXA; + + struct TVITEMEXW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; + } + alias TVITEMEXW* LPTVITEMEXW; +} + +static if (_WIN32_IE >= 0x400) { + struct TVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXA itemex; + TV_ITEMA item; + } + } + + struct TVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + union { + TVITEMEXW itemex; + TV_ITEMW item; + } + } +} else { + struct TVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + TV_ITEMA item; + } + + struct TVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; + TV_ITEMW item; + } +} +alias TVINSERTSTRUCTA* LPTVINSERTSTRUCTA, LPTV_INSERTSTRUCTA; +alias TVINSERTSTRUCTA TV_INSERTSTRUCTA; +alias TVINSERTSTRUCTW* LPTVINSERTSTRUCTW, LPTV_INSERTSTRUCTW; +alias TVINSERTSTRUCTW TV_INSERTSTRUCTW; + +struct TVHITTESTINFO { + POINT pt; + UINT flags; + HTREEITEM hItem; +} +alias TVHITTESTINFO* LPTVHITTESTINFO, LPTV_HITTESTINFO; +alias TVHITTESTINFO TV_HITTESTINFO; + +static if (_WIN32_WINNT >= 0x600) { + struct TVGETITEMPARTRECTINFO { + HTREEITEM hti; + RECT* prc; + TVITEMPART partID; + } +} + +alias int function(LPARAM, LPARAM, LPARAM) PFNTVCOMPARE; +struct TVSORTCB { + HTREEITEM hParent; + PFNTVCOMPARE lpfnCompare; + LPARAM lParam; +} +alias TVSORTCB* LPTVSORTCB, LPTV_SORTCB; +alias TVSORTCB TV_SORTCB; + +struct NMTREEVIEWA { + NMHDR hdr; + UINT action; + TV_ITEMA itemOld; + TV_ITEMA itemNew; + POINT ptDrag; +} +alias NMTREEVIEWA* LPNMTREEVIEWA, LPNM_TREEVIEWA; +alias NMTREEVIEWA NM_TREEVIEWA; + +struct NMTREEVIEWW { + NMHDR hdr; + UINT action; + TV_ITEMW itemOld; + TV_ITEMW itemNew; + POINT ptDrag; +} +alias NMTREEVIEWW* LPNMTREEVIEWW, LPNM_TREEVIEWW; +alias NMTREEVIEWW NM_TREEVIEWW; + +struct NMTVDISPINFOA { + NMHDR hdr; + TVITEMA item; +} +alias NMTVDISPINFOA* LPNMTVDISPINFOA; +alias NMTVDISPINFOA TV_DISPINFOA; + +struct NMTVDISPINFOW { + NMHDR hdr; + TVITEMW item; +} +alias NMTVDISPINFOW* LPNMTVDISPINFOW; +alias NMTVDISPINFOW TV_DISPINFOW; + +static if (_WIN32_IE >= 0x400) { + struct NMTVGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; + } + alias NMTVGETINFOTIPA* LPNMTVGETINFOTIPA; + + struct NMTVGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; + } + alias NMTVGETINFOTIPW* LPNMTVGETINFOTIPW; +} + +struct TV_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +struct TC_ITEMHEADERA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; +} + +struct TC_ITEMHEADERW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; +} + +static if (_WIN32_IE >= 0x300) { + struct TCITEMA { + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct TCITEMW { + UINT mask; + DWORD dwState; + DWORD dwStateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} else { + struct TCITEMA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } + + struct TCITEMW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; + } +} +alias TCITEMA* LPTCITEMA; +alias TCITEMA TC_ITEMA; +alias TCITEMW* LPTCITEMW; +alias TCITEMW TC_ITEMW; + +struct TCHITTESTINFO { + POINT pt; + UINT flags; +} +alias TCHITTESTINFO* LPTCHITTESTINFO, LPTC_HITTESTINFO; +alias TCHITTESTINFO TC_HITTESTINFO; + +struct TC_KEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} + +static if (_WIN32_IE >= 0x300) { + struct INITCOMMONCONTROLSEX { + DWORD dwSize = INITCOMMONCONTROLSEX.sizeof; + DWORD dwICC; + } + alias INITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; +} + +struct PBRANGE { + int iLow; + int iHigh; +} +alias PBRANGE* PPBRANGE; + +struct COLORSCHEME { + DWORD dwSize = COLORSCHEME.sizeof; + COLORREF clrBtnHighlight; + COLORREF clrBtnShadow; +} +alias COLORSCHEME* LPCOLORSCHEME; + +struct MCHITTESTINFO { + UINT cbSize = MCHITTESTINFO.sizeof; + POINT pt; + UINT uHit; + SYSTEMTIME st; +} +alias MCHITTESTINFO* PMCHITTESTINFO; + +alias DWORD MONTHDAYSTATE; +alias MONTHDAYSTATE* LPMONTHDAYSTATE; + +struct NMDAYSTATE { + NMHDR nmhdr; + SYSTEMTIME stStart; + int cDayState; + LPMONTHDAYSTATE prgDayState; +} +alias NMDAYSTATE* LPNMDAYSTATE; + +struct REBARINFO { + UINT cbSize = REBARINFO.sizeof; + UINT fMask; + HIMAGELIST himl; +} +alias REBARINFO* LPREBARINFO; + +static if (_WIN32_IE >= 0x400) { + struct REBARBANDINFOA { + UINT cbSize = REBARBANDINFOA.sizeof; + 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; + } + + struct REBARBANDINFOW { + UINT cbSize = REBARBANDINFOW.sizeof; + 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; + } + + enum : size_t { + REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.cyChild.offsetof, + REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.cyChild.offsetof + } +} else { + struct REBARBANDINFOA { + UINT cbSize = REBARBANDINFOA.sizeof; + 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; + } + + struct REBARBANDINFOW { + UINT cbSize = REBARBANDINFOW.sizeof; + 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; + } + + enum : size_t { + REBARBANDINFOA_V3_SIZE = REBARBANDINFOA.sizeof, + REBARBANDINFOW_V3_SIZE = REBARBANDINFOW.sizeof + } +} +alias REBARBANDINFOA* LPREBARBANDINFOA; +alias const(REBARBANDINFOA)* LPCREBARBANDINFOA; +alias REBARBANDINFOW* LPREBARBANDINFOW; +alias const(REBARBANDINFOW)* LPCREBARBANDINFOW; + +static if (_WIN32_IE >= 0x300) { + struct NMLVODSTATECHANGE { + NMHDR hdr; + int iFrom; + int iTo; + UINT uNewState; + UINT uOldState; + } + alias NMLVODSTATECHANGE* LPNMLVODSTATECHANGE; + + static if (_WIN32_WINNT >= 0x501) { + struct IMAGELISTDRAWPARAMS { + DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; + HIMAGELIST himl; + int i; + HDC hdcDst; + int x; + int y; + int cx; + int cy; + int xBitmap; + int yBitmap; + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + DWORD fState; + DWORD Frame; + COLORREF crEffect; + } + } else { + struct IMAGELISTDRAWPARAMS { + DWORD cbSize = IMAGELISTDRAWPARAMS.sizeof; + HIMAGELIST himl; + int i; + HDC hdcDst; + int x; + int y; + int cx; + int cy; + int xBitmap; + int yBitmap; + COLORREF rgbBk; + COLORREF rgbFg; + UINT fStyle; + DWORD dwRop; + } + } + alias IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; +} + +static if (_WIN32_IE >= 0x400) { + struct NMREBARCHILDSIZE { + NMHDR hdr; + UINT uBand; + UINT wID; + RECT rcChild; + RECT rcBand; + } + alias NMREBARCHILDSIZE* LPNMREBARCHILDSIZE; + + struct NMREBAR { + NMHDR hdr; + DWORD dwMask; + UINT uBand; + UINT fStyle; + UINT wID; + LPARAM lParam; + } + alias NMREBAR* LPNMREBAR; + + struct NMRBAUTOSIZE { + NMHDR hdr; + BOOL fChanged; + RECT rcTarget; + RECT rcActual; + } + alias NMRBAUTOSIZE* LPNMRBAUTOSIZE; + + static if (_WIN32_IE >= 0x500) { + struct NMREBARCHEVRON { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + RECT rc; + LPARAM lParamNM; + } + alias NMREBARCHEVRON* LPNMREBARCHEVRON; + } + + struct RBHITTESTINFO { + POINT pt; + UINT flags; + int iBand; + } + alias RBHITTESTINFO* LPRBHITTESTINFO; +} + +mixin DECLARE_HANDLE!("HDSA"); +mixin DECLARE_HANDLE!("HDPA"); + +version (Unicode) { + alias HDITEMW HDITEM; + alias LPHDITEMW LPHDITEM; + alias TOOLINFOW TOOLINFO; + alias TOOLINFOW* PTOOLINFO, LPTOOLINFO; + alias TTHITTESTINFOW TTHITTESTINFO; + alias TTHITTESTINFOW* LPHITTESTINFO, LPTTHITTESTINFO; + alias TOOLTIPTEXTW TOOLTIPTEXT; + alias TOOLTIPTEXTW* LPTOOLTIPTEXT; + alias NMTTDISPINFOW NMTTDISPINFO; + alias NMTTDISPINFOW* LPNMTTDISPINFO; + alias TV_ITEMW TV_ITEM; + alias TV_ITEMW* LPTV_ITEM; + alias TVITEMW TVITEM; + alias TVITEMW* LPTVITEM; + + static if (_WIN32_IE >= 0x400) { + alias TVITEMEXW TVITEMEX; + alias TVITEMEXW* LPTVITEMEX; + } + + alias TV_INSERTSTRUCTW TV_INSERTSTRUCT; + alias TV_INSERTSTRUCTW* LPTV_INSERTSTRUCT; + alias TVINSERTSTRUCTW TVINSERTSTRUCT; + alias TVINSERTSTRUCTW* LPTVINSERTSTRUCT; + alias NM_TREEVIEWW NM_TREEVIEW; + alias NM_TREEVIEWW* LPNM_TREEVIEW; + alias NMTREEVIEWW NMTREEVIEW; + alias NMTREEVIEWW* LPNMTREEVIEW; + alias NMHDDISPINFOW NMHDDISPINFO; + alias NMHDDISPINFOW* LPNMHDDISPINFO; + + alias ACM_OPENW ACM_OPEN; + alias COMBOBOXEXITEMW COMBOBOXEXITEM; + alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM; + //alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; fixme + alias CBEM_INSERTITEMW CBEM_INSERTITEM; + alias CBEM_SETITEMW CBEM_SETITEM; + alias CBEM_GETITEMW CBEM_GETITEM; + alias CBEN_ENDEDITW CBEN_ENDEDIT; + alias NMCBEENDEDITW NMCBEENDEDIT; + alias LPNMCBEENDEDITW LPNMCBEENDEDIT; + alias PNMCBEENDEDITW PNMCBEENDEDIT; + + static if (_WIN32_IE >= 0x400) { + alias NMCOMBOBOXEXW NMCOMBOBOXEX; + alias PNMCOMBOBOXEXW PNMCOMBOBOXEX; + alias CBEN_GETDISPINFOW CBEN_GETDISPINFO; + alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN; + alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN; + alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN; + alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN; + } + + alias SB_GETTEXTW SB_GETTEXT; + alias SB_SETTEXTW SB_SETTEXT; + alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; + alias HDM_INSERTITEMW HDM_INSERTITEM; + alias HDM_GETITEMW HDM_GETITEM; + alias HDM_SETITEMW HDM_SETITEM; + alias HDN_ITEMCHANGINGW HDN_ITEMCHANGING; + alias HDN_ITEMCHANGEDW HDN_ITEMCHANGED; + alias HDN_ITEMCLICKW HDN_ITEMCLICK; + alias HDN_ITEMDBLCLICKW HDN_ITEMDBLCLICK; + alias HDN_DIVIDERDBLCLICKW HDN_DIVIDERDBLCLICK; + alias HDN_BEGINTRACKW HDN_BEGINTRACK; + alias HDN_ENDTRACKW HDN_ENDTRACK; + alias HDN_TRACKW HDN_TRACK; + + static if (_WIN32_IE >= 0x300) { + alias HDN_GETDISPINFOW HDN_GETDISPINFO; + } + + alias HD_NOTIFYW HD_NOTIFY; + alias TBSAVEPARAMSW TBSAVEPARAMS; + alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT; + alias TB_SAVERESTOREW TB_SAVERESTORE; + alias TB_ADDSTRINGW TB_ADDSTRING; + + static if (_WIN32_IE >= 0x400) { + alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO; // fixme + alias TB_GETBUTTONINFOW TB_GETBUTTONINFO; + alias TB_SETBUTTONINFOW TB_SETBUTTONINFO; + alias TB_INSERTBUTTONW TB_INSERTBUTTON; + alias TB_ADDBUTTONSW TB_ADDBUTTONS; + alias TB_MAPACCELERATORW TB_MAPACCELERATOR; + alias TB_GETSTRINGW TB_GETSTRING; + alias TBBUTTONINFOW TBBUTTONINFO; + alias LPTBBUTTONINFOW LPTBBUTTONINFO; + alias TBN_GETDISPINFOW TBN_GETDISPINFO; + alias NMTBDISPINFOW NMTBDISPINFO; + alias LPNMTBDISPINFOW LPNMTBDISPINFO; + alias NMTBGETINFOTIPW NMTBGETINFOTIP; + alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP; + } + + alias TBNOTIFYW TBNOTIFY; + alias LPTBNOTIFYW LPTBNOTIFY; + alias NMTOOLBARW NMTOOLBAR; + alias LPNMTOOLBARW LPNMTOOLBAR; + alias TTM_ADDTOOLW TTM_ADDTOOL; + alias TTM_DELTOOLW TTM_DELTOOL; + alias TTM_NEWTOOLRECTW TTM_NEWTOOLRECT; + alias TTM_GETTOOLINFOW TTM_GETTOOLINFO; + alias TTM_SETTOOLINFOW TTM_SETTOOLINFO; + alias TTM_HITTESTW TTM_HITTEST; + alias TTM_GETTEXTW TTM_GETTEXT; + alias TTM_UPDATETIPTEXTW TTM_UPDATETIPTEXT; + alias TTM_ENUMTOOLSW TTM_ENUMTOOLS; + alias TTM_GETCURRENTTOOLW TTM_GETCURRENTTOOL; + alias TTN_NEEDTEXTW TTN_NEEDTEXT; + alias TTN_GETDISPINFOW TTN_GETDISPINFO; + //alias SB_GETTEXTW SB_GETTEXT; + //alias SB_SETTEXTW SB_SETTEXT; + //alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; + alias LV_ITEMW LV_ITEM; + alias LVITEMW LVITEM; + alias LVITEM* LPLVITEM; + alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK; + + static if (_WIN32_IE >= 0x400) { + alias LVBKIMAGEW LVBKIMAGE; + alias LPLVBKIMAGEW LPLVBKIMAGE; + alias LVM_SETBKIMAGEW LVM_SETBKIMAGE; + alias LVM_GETBKIMAGEW LVM_GETBKIMAGE; + } + + alias LVM_GETITEMW LVM_GETITEM; + alias LVM_SETITEMW LVM_SETITEM; + alias LVM_INSERTITEMW LVM_INSERTITEM; + alias LV_FINDINFOW LV_FINDINFO; + alias LVFINDINFOW LVFINDINFO; + alias LPFINDINFOW LPFINDINFO; + alias NMLVFINDITEMW NMLVFINDITEM; + alias PNMLVFINDITEMW PNMLVFINDITEM; + alias LPNMLVFINDITEMW LPNMLVFINDITEM; + alias LVM_FINDITEMW LVM_FINDITEM; + alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH; + alias LVM_EDITLABELW LVM_EDITLABEL; + alias LV_COLUMNW LV_COLUMN; + alias LVCOLUMNW LVCOLUMN; + alias LVCOLUMNW* LPLVCOLUMN; + alias LVM_GETCOLUMNW LVM_GETCOLUMN; + alias LVM_SETCOLUMNW LVM_SETCOLUMN; + alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN; + alias LVM_GETITEMTEXTW LVM_GETITEMTEXT; + alias LVM_SETITEMTEXTW LVM_SETITEMTEXT; + alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING; + alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT; + alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT; + alias LVN_GETDISPINFOW LVN_GETDISPINFO; + alias LVN_SETDISPINFOW LVN_SETDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias LVN_GETINFOTIPW LVN_GETINFOTIP; + alias NMLVGETINFOTIPW NMLVGETINFOTIP; + alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP; + } + + alias LV_DISPINFOW LV_DISPINFO; + alias NMLVDISPINFOW NMLVDISPINFO; + alias LPNMLVDISPINFOW LPNMLVDISPINFO; + alias TVM_INSERTITEMW TVM_INSERTITEM; + alias TVM_GETITEMW TVM_GETITEM; + alias TVM_SETITEMW TVM_SETITEM; + alias TVM_EDITLABELW TVM_EDITLABEL; + alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING; + alias NMTVDISPINFOW TV_DISPINFO; + alias NMTVDISPINFOW NMTVDISPINFO; + alias LPNMTVDISPINFOW LPNMTVDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias NMTVGETINFOTIPW NMTVGETINFOTIP; + alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP; + alias TVN_GETINFOTIPW TVN_GETINFOTIP; + } + + alias TVN_SELCHANGINGW TVN_SELCHANGING; + alias TVN_SELCHANGEDW TVN_SELCHANGED; + alias TVN_GETDISPINFOW TVN_GETDISPINFO; + alias TVN_SETDISPINFOW TVN_SETDISPINFO; + alias TVN_ITEMEXPANDINGW TVN_ITEMEXPANDING; + alias TVN_ITEMEXPANDEDW TVN_ITEMEXPANDED; + alias TVN_BEGINDRAGW TVN_BEGINDRAG; + alias TVN_BEGINRDRAGW TVN_BEGINRDRAG; + alias TVN_DELETEITEMW TVN_DELETEITEM; + alias TVN_BEGINLABELEDITW TVN_BEGINLABELEDIT; + alias TVN_ENDLABELEDITW TVN_ENDLABELEDIT; + alias TC_ITEMHEADERW TC_ITEMHEADER; + alias TC_ITEMW TC_ITEM; + alias TCITEMW TCITEM; + alias LPTCITEMW LPTCITEM; + alias TCM_GETITEMW TCM_GETITEM; + alias TCM_SETITEMW TCM_SETITEM; + alias TCM_INSERTITEMW TCM_INSERTITEM; + alias CreateStatusWindowW CreateStatusWindow; + alias DrawStatusTextW DrawStatusText; + alias ImageList_LoadImageW ImageList_LoadImage; + alias DTM_SETFORMATW DTM_SETFORMAT; + alias DTN_USERSTRINGW DTN_USERSTRING; + alias DTN_WMKEYDOWNW DTN_WMKEYDOWN; + alias DTN_FORMATW DTN_FORMAT; + alias DTN_FORMATQUERYW DTN_FORMATQUERY; + alias REBARBANDINFOW REBARBANDINFO; + alias REBARBANDINFO* LPREBARBANDINFO; + alias LPCREBARBANDINFOW LPCREBARBANDINFO; + alias REBARBANDINFOW_V3_SIZE REBARBANDINFO_V3_SIZE; + alias RB_INSERTBANDW RB_INSERTBAND; + alias RB_SETBANDINFOW RB_SETBANDINFO; +} else { + alias HDITEMA HDITEM; + alias LPHDITEMA LPHDITEM; + alias TOOLINFOA TOOLINFO; + alias TOOLINFOA* PTOOLINFO, LPTOOLINFO; + alias TTHITTESTINFOA TTHITTESTINFO; + alias TTHITTESTINFOA* LPHITTESTINFO, LPTTHITTESTINFO; + alias TOOLTIPTEXTA TOOLTIPTEXT; + alias TOOLTIPTEXTA* LPTOOLTIPTEXT; + alias NMTTDISPINFOA NMTTDISPINFO; + alias NMTTDISPINFOA* LPNMTTDISPINFO; + alias TV_ITEMA TV_ITEM; + alias TV_ITEMA* LPTV_ITEM; + alias TVITEMA TVITEM; + alias TVITEMA* LPTVITEM; + + static if (_WIN32_IE >= 0x400) { + alias TVITEMEXA TVITEMEX; + alias TVITEMEXA* LPTVITEMEX; + } + + alias TV_INSERTSTRUCTA TV_INSERTSTRUCT; + alias TV_INSERTSTRUCTA* LPTV_INSERTSTRUCT; + alias TVINSERTSTRUCTA TVINSERTSTRUCT; + alias TVINSERTSTRUCTA* LPTVINSERTSTRUCT; + alias NM_TREEVIEWA NM_TREEVIEW; + alias NM_TREEVIEWA* LPNM_TREEVIEW; + alias NMTREEVIEWA NMTREEVIEW; + alias NMTREEVIEWA* LPNMTREEVIEW; + alias NMHDDISPINFOW NMHDDISPINFO; + alias NMHDDISPINFOW* LPNMHDDISPINFO; + + alias ACM_OPENA ACM_OPEN; + alias COMBOBOXEXITEMA COMBOBOXEXITEM; + alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM; + //alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; fixme + alias CBEM_INSERTITEMA CBEM_INSERTITEM; + alias CBEM_SETITEMA CBEM_SETITEM; + alias CBEM_GETITEMA CBEM_GETITEM; + alias CBEN_ENDEDITA CBEN_ENDEDIT; + alias NMCBEENDEDITA NMCBEENDEDIT; + alias LPNMCBEENDEDITA LPNMCBEENDEDIT; + alias PNMCBEENDEDITA PNMCBEENDEDIT; + + static if (_WIN32_IE >= 0x400) { + alias TB_GETBUTTONINFOA TB_GETBUTTONINFO; + alias TB_SETBUTTONINFOA TB_SETBUTTONINFO; + alias TB_INSERTBUTTONA TB_INSERTBUTTON; + alias TB_ADDBUTTONSA TB_ADDBUTTONS; + alias TB_MAPACCELERATORA TB_MAPACCELERATOR; + alias TB_GETSTRINGA TB_GETSTRING; + alias NMCOMBOBOXEXA NMCOMBOBOXEX; + alias PNMCOMBOBOXEXA PNMCOMBOBOXEX; + alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN; + alias CBEN_GETDISPINFOA CBEN_GETDISPINFO; + alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN; + alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN; + alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN; + alias TBN_GETDISPINFOA TBN_GETDISPINFO; + alias NMTBDISPINFOA NMTBDISPINFO; + alias LPNMTBDISPINFOA LPNMTBDISPINFO; + alias NMTBGETINFOTIPA NMTBGETINFOTIP; + alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP; + } + + alias SB_GETTEXTA SB_GETTEXT; + alias SB_SETTEXTA SB_SETTEXT; + alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH; + alias HDM_INSERTITEMA HDM_INSERTITEM; + alias HDM_GETITEMA HDM_GETITEM; + alias HDM_SETITEMA HDM_SETITEM; + alias HDN_ITEMCHANGINGA HDN_ITEMCHANGING; + alias HDN_ITEMCHANGEDA HDN_ITEMCHANGED; + alias HDN_ITEMCLICKA HDN_ITEMCLICK; + alias HDN_ITEMDBLCLICKA HDN_ITEMDBLCLICK; + alias HDN_DIVIDERDBLCLICKA HDN_DIVIDERDBLCLICK; + alias HDN_BEGINTRACKA HDN_BEGINTRACK; + alias HDN_ENDTRACKA HDN_ENDTRACK; + alias HDN_TRACKA HDN_TRACK; + + static if (_WIN32_IE >= 0x300) { + alias HDN_GETDISPINFOA HDN_GETDISPINFO; + } + + alias HD_NOTIFYA HD_NOTIFY; + alias TBSAVEPARAMSA TBSAVEPARAMS; + alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT; + alias TB_SAVERESTOREA TB_SAVERESTORE; + alias TB_ADDSTRINGA TB_ADDSTRING; + alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO; + + static if (_WIN32_IE >= 0x400) { + alias TBBUTTONINFOA TBBUTTONINFO; + alias LPTBBUTTONINFOA LPTBBUTTONINFO; + } + + alias TBNOTIFYA TBNOTIFY; + alias LPTBNOTIFYA LPTBNOTIFY; + alias NMTOOLBARA NMTOOLBAR; + alias LPNMTOOLBARA LPNMTOOLBAR; + alias TTM_ADDTOOLA TTM_ADDTOOL; + alias TTM_DELTOOLA TTM_DELTOOL; + alias TTM_NEWTOOLRECTA TTM_NEWTOOLRECT; + alias TTM_GETTOOLINFOA TTM_GETTOOLINFO; + alias TTM_SETTOOLINFOA TTM_SETTOOLINFO; + alias TTM_HITTESTA TTM_HITTEST; + alias TTM_GETTEXTA TTM_GETTEXT; + alias TTM_UPDATETIPTEXTA TTM_UPDATETIPTEXT; + alias TTM_ENUMTOOLSA TTM_ENUMTOOLS; + alias TTM_GETCURRENTTOOLA TTM_GETCURRENTTOOL; + alias TTN_NEEDTEXTA TTN_NEEDTEXT; + alias TTN_GETDISPINFOA TTN_GETDISPINFO; + alias LV_ITEMA LV_ITEM; + alias LVITEMA LVITEM; + alias LVITEM* LPLVITEM; + alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK; + + static if (_WIN32_IE >= 0x400) { + alias LVBKIMAGEA LVBKIMAGE; + alias LPLVBKIMAGEA LPLVBKIMAGE; + alias LVM_SETBKIMAGEA LVM_SETBKIMAGE; + alias LVM_GETBKIMAGEA LVM_GETBKIMAGE; + } + + alias LVM_GETITEMA LVM_GETITEM; + alias LVM_SETITEMA LVM_SETITEM; + alias LVM_INSERTITEMA LVM_INSERTITEM; + alias LV_FINDINFOA LV_FINDINFO; + alias LVFINDINFOA LVFINDINFO; + alias LPFINDINFOA LPFINDINFO; + alias NMLVFINDITEMA NMLVFINDITEM; + alias PNMLVFINDITEMA PNMLVFINDITEM; + alias LPNMLVFINDITEMA LPNMLVFINDITEM; + alias LVM_FINDITEMA LVM_FINDITEM; + alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH; + alias LVM_EDITLABELA LVM_EDITLABEL; + alias LV_COLUMNA LV_COLUMN; + alias LVCOLUMNA LVCOLUMN; + alias LVCOLUMNA* LPLVCOLUMN; + alias LVM_GETCOLUMNA LVM_GETCOLUMN; + alias LVM_SETCOLUMNA LVM_SETCOLUMN; + alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN; + alias LVM_GETITEMTEXTA LVM_GETITEMTEXT; + alias LVM_SETITEMTEXTA LVM_SETITEMTEXT; + alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING; + alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT; + alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT; + alias LVN_GETDISPINFOA LVN_GETDISPINFO; + alias LVN_SETDISPINFOA LVN_SETDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias LVN_GETINFOTIPA LVN_GETINFOTIP; + alias NMLVGETINFOTIPA NMLVGETINFOTIP; + alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP; + } + + alias LV_DISPINFOA LV_DISPINFO; + alias NMLVDISPINFOA NMLVDISPINFO; + alias LPNMLVDISPINFOA LPNMLVDISPINFO; + alias TVM_INSERTITEMA TVM_INSERTITEM; + alias TVM_GETITEMA TVM_GETITEM; + alias TVM_SETITEMA TVM_SETITEM; + alias TVM_EDITLABELA TVM_EDITLABEL; + alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING; + alias NMTVDISPINFOA TV_DISPINFO; + alias NMTVDISPINFOA NMTVDISPINFO; + alias LPNMTVDISPINFOA LPNMTVDISPINFO; + + static if (_WIN32_IE >= 0x400) { + alias NMTVGETINFOTIPA NMTVGETINFOTIP; + alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP; + alias TVN_GETINFOTIPA TVN_GETINFOTIP; + } + + alias TVN_SELCHANGINGA TVN_SELCHANGING; + alias TVN_SELCHANGEDA TVN_SELCHANGED; + alias TVN_GETDISPINFOA TVN_GETDISPINFO; + alias TVN_SETDISPINFOA TVN_SETDISPINFO; + alias TVN_ITEMEXPANDINGA TVN_ITEMEXPANDING; + alias TVN_ITEMEXPANDEDA TVN_ITEMEXPANDED; + alias TVN_BEGINDRAGA TVN_BEGINDRAG; + alias TVN_BEGINRDRAGA TVN_BEGINRDRAG; + alias TVN_DELETEITEMA TVN_DELETEITEM; + alias TVN_BEGINLABELEDITA TVN_BEGINLABELEDIT; + alias TVN_ENDLABELEDITA TVN_ENDLABELEDIT; + alias TC_ITEMHEADERA TC_ITEMHEADER; + alias TC_ITEMA TC_ITEM; + alias TCITEMA TCITEM; + alias LPTCITEMA LPTCITEM; + alias TCM_GETITEMA TCM_GETITEM; + alias TCM_SETITEMA TCM_SETITEM; + alias TCM_INSERTITEMA TCM_INSERTITEM; + alias CreateStatusWindowA CreateStatusWindow; + alias DrawStatusTextA DrawStatusText; + alias ImageList_LoadImageA ImageList_LoadImage; + alias DTM_SETFORMATA DTM_SETFORMAT; + alias DTN_USERSTRINGA DTN_USERSTRING; + alias DTN_WMKEYDOWNA DTN_WMKEYDOWN; + alias DTN_FORMATA DTN_FORMAT; + alias DTN_FORMATQUERYA DTN_FORMATQUERY; + alias REBARBANDINFOA REBARBANDINFO; + alias REBARBANDINFOA* LPREBARBANDINFO; + alias LPCREBARBANDINFOA LPCREBARBANDINFO; + alias REBARBANDINFOA_V3_SIZE REBARBANDINFO_V3_SIZE; + alias RB_INSERTBANDA RB_INSERTBAND; + alias RB_SETBANDINFOA RB_SETBANDINFO; +} + + +alias INT function(PVOID, PVOID) PFNDPAENUMCALLBACK; +alias INT function(PVOID, PVOID) PFNDSAENUMCALLBACK; +alias INT function(PVOID, PVOID, LPARAM) PFNDPACOMPARE; + +static if (_WIN32_WINNT >= 0x501) { + extern (Windows) + alias LRESULT function(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR) + SUBCLASSPROC; + + struct LITEM { + UINT mask; + int iLink; + UINT state; + UINT stateMask; + WCHAR[MAX_LINKID_TEXT] szID; + WCHAR[L_MAX_URL_LENGTH] szUrl; + } + alias LITEM* PLITEM; + + struct LHITTESTINFO { + POINT pt; + LITEM item; + } + alias LHITTESTINFO* PLHITTESTINFO; + + struct NMLINK { + NMHDR hdr; + LITEM item; + } + alias NMLINK* PNMLINK; +} + +uint INDEXTOOVERLAYMASK(uint i) { return i << 8; } +uint INDEXTOSTATEIMAGEMASK(uint i) { return i << 12; } + +template HANDLE_WM_NOTIFY(R) { + R HANDLE_WM_NOTIFY(HWND hwnd, WPARAM wParam, LPARAM lParam, + R function(HWND, int, NMHDR*) fn) { + return fn(hwnd, wParam, cast(NMHDR*) lParam); + } +} +int FORWARD_WM_NOTIFY(HWND hwnd, int idFrom, NMHDR* pnmhdr, + int function(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) fn) { + return fn(hwnd, WM_NOTIFY, idFrom, cast(LPARAM) pnmhdr); +} + +//#define CCSIZEOF_STRUCT(s, m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m)) + +LPARAM MAKEIPADDRESS(ubyte b1, ubyte b2, ubyte b3, ubyte b4) { + return (cast(DWORD) b1 << 24) + | (cast(DWORD) b2 << 16) + | (cast(DWORD) b3 << 8) + | (cast(DWORD) b4); +} + +LPARAM MAKEIPRANGE(ubyte low, ubyte high) { + return (cast(int) high << 8) | low; +} + +ubyte FIRST_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 24); +} + +ubyte SECOND_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 16); +} + +ubyte THIRD_IPADDRESS(LPARAM x) { + return cast(ubyte) (x >> 8); +} + +ubyte FOURTH_IPADDRESS(LPARAM x) { + return cast(ubyte) x; +} + +HWND Animate_Create(HWND hwndP, UINT id, DWORD dwStyle, + HINSTANCE hInstance) { + return CreateWindow(cast(TCHAR*)ANIMATE_CLASS.ptr, null, dwStyle, 0, 0, 0, 0, hwndP, + cast(HMENU) id, hInstance, null); +} + +BOOL Animate_Open(HWND hwnd, LPTSTR szName) { + return cast(BOOL) SendMessage(hwnd, ACM_OPEN, 0, cast(LPARAM) szName); +} + +BOOL Animate_OpenEx(HWND hwnd, HINSTANCE hInst, LPTSTR szName) { + return cast(BOOL) SendMessage(hwnd, ACM_OPEN, cast(WPARAM) hInst, + cast(LPARAM) szName); +} + +BOOL Animate_Play(HWND hwnd, int from, int to, int rep) { + return cast(BOOL) SendMessage(hwnd, ACM_PLAY, rep, + MAKELONG(cast(ushort) from, cast(ushort) to)); +} + +BOOL Animate_Stop(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, ACM_STOP, 0, 0); +} + +BOOL Animate_Close(HWND hwnd) { + return Animate_Open(hwnd, null); +} + +BOOL Animate_Seek(HWND hwnd, int frame) { + return Animate_Play(hwnd, frame, frame, 1); +} + +extern (Windows) { + HBITMAP CreateMappedBitmap(HINSTANCE, INT_PTR, UINT, LPCOLORMAP, int); + HWND CreateStatusWindowA(LONG, LPCSTR, HWND, UINT); + HWND CreateStatusWindowW(LONG, LPCWSTR, HWND, UINT); + HWND CreateToolbarEx(HWND, DWORD, UINT, int, HINSTANCE, UINT_PTR, + LPCTBBUTTON, int, int, int, int, int, UINT); + HWND CreateUpDownControl(DWORD, int, int, int, int, HWND, int, HINSTANCE, + HWND, int, int, int); +} + +HWND DateTime_GetMonthCal(HWND hwnd) { + return cast(HWND) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0); +} + +COLORREF DateTime_GetMonthCalColor(HWND hwnd, int iColor) { + return cast(COLORREF) SendMessage(hwnd, DTM_GETMCCOLOR, iColor, 0); +} + +HFONT DateTime_GetMonthCalFont(HWND hwnd) { + return cast(HFONT) SendMessage(hwnd, DTM_GETMCFONT, 0, 0); +} + +DWORD DateTime_GetRange(HWND hwnd, LPSYSTEMTIME lpSysTimeArray) { + return cast(DWORD) SendMessage(hwnd, DTM_GETRANGE, 0, cast(LPARAM) lpSysTimeArray); +} + +DWORD DateTime_GetSystemtime(HWND hwnd, LPSYSTEMTIME lpSysTime) { + return cast(DWORD) SendMessage(hwnd, DTM_GETSYSTEMTIME, 0, cast(LPARAM) lpSysTime); +} + +BOOL DateTime_SetFormat(HWND hwnd, LPCTSTR lpszFormat) { + return cast(BOOL) SendMessage(hwnd, DTM_SETFORMAT, 0, + cast(LPARAM) lpszFormat); +} + +LRESULT DateTime_SetMonthCalColor(HWND hwnd, int iColor, COLORREF clr) { + return SendMessage(hwnd, DTM_SETMCCOLOR, cast(WPARAM) iColor, + cast(LPARAM) clr); +} + +void DateTime_SetMonthCalFont(HWND hwnd, HFONT hfont, BOOL fRedraw) { + SendMessage(hwnd, DTM_SETMCFONT, cast(WPARAM) hfont, fRedraw); +} + +BOOL DateTime_SetRange(HWND hwnd, WPARAM flags, LPSYSTEMTIME lpSysTimeArray) { + return cast(BOOL) SendMessage(hwnd, DTM_SETRANGE, flags, + cast(LPARAM) lpSysTimeArray); +} + +BOOL DateTime_SetSystemtime(HWND hwnd, WPARAM flag, LPSYSTEMTIME lpSysTime) { + return cast(BOOL) SendMessage(hwnd, DTM_SETSYSTEMTIME, flag, + cast(LPARAM) lpSysTime); +} + +extern (Windows) { + void DrawInsert(HWND, HWND, int); + void DrawStatusTextA(HDC, LPRECT, LPCSTR, UINT); + void DrawStatusTextW(HDC, LPRECT, LPCWSTR, UINT); + void GetEffectiveClientRect(HWND, LPRECT, LPINT); +} + +int Header_GetItemCount(HWND w) { + return cast(int) SendMessage(w, HDM_GETITEMCOUNT, 0, 0); +} + +int Header_InsertItem(HWND w, int i, const(HDITEM)* phdi) { + return cast(int) SendMessage(w, HDM_INSERTITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, HDM_DELETEITEM, i, 0); +} + +BOOL Header_GetItem(HWND w, int i, LPHDITEM phdi) { + return cast(BOOL) SendMessage(w, HDM_GETITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_SetItem(HWND w, int i, const(HDITEM)* phdi) { + return cast(BOOL) SendMessage(w, HDM_SETITEM, i, cast(LPARAM) phdi); +} + +BOOL Header_Layout(HWND w, LPHDLAYOUT playout) { + return cast(BOOL) SendMessage(w, HDM_LAYOUT, 0, cast(LPARAM) playout); +} + +static if (_WIN32_IE >= 0x300) { + int Header_OrderToIndex(HWND w, int i) { + return cast(int) SendMessage(w, HDM_ORDERTOINDEX, i, 0); + } + + BOOL Header_GetItemRect(HWND w, int i, RECT* r) { + return cast(BOOL) SendMessage(w, HDM_GETITEMRECT, i, cast(LPARAM) r); + } + + BOOL Header_GetOrderArray(HWND w, int iSize, LPINT lpiArray) { + return cast(BOOL) SendMessage(w, HDM_GETORDERARRAY, iSize, + cast(LPARAM) lpiArray); + } + + BOOL Header_SetOrderArray(HWND w, int iSize, LPINT lpiArray) { + return cast(BOOL) SendMessage(w, HDM_SETORDERARRAY, iSize, + cast(LPARAM) lpiArray); + } + + HIMAGELIST Header_CreateDragImage(HWND w, int i) { + return cast(HIMAGELIST) SendMessage(w, HDM_CREATEDRAGIMAGE, i, 0); + } + + HIMAGELIST Header_SetImageList(HWND w, HIMAGELIST himl) { + return cast(HIMAGELIST) SendMessage(w, HDM_SETIMAGELIST, 0, + cast(LPARAM) himl); + } + + HIMAGELIST Header_GetImageList(HWND w) { + return cast(HIMAGELIST) SendMessage(w, HDM_GETIMAGELIST, 0, 0); + } +} + +static if (_WIN32_IE >= 0x400) { + BOOL Header_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, HDM_GETUNICODEFORMAT, 0, 0); + } + + BOOL Header_SetUnicodeFormat(HWND w, BOOL fUnicode) { + return cast(BOOL) SendMessage(w, HDM_SETUNICODEFORMAT, fUnicode, 0); + } +} + +extern (Windows) { + HDSA DSA_Create(INT, INT); + BOOL DSA_Destroy(HDSA); + VOID DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, PVOID); + PVOID DSA_GetItemPtr(HDSA, INT); + INT DSA_InsertItem(HDSA, INT, PVOID); + HDPA DPA_Create(INT); + BOOL DPA_Destroy(HDPA); + PVOID DPA_DeletePtr(HDPA, INT); + BOOL DPA_DeleteAllPtrs(HDPA); + VOID DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); + VOID DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, PVOID); + BOOL DPA_SetPtr(HDPA, INT, PVOID); + INT DPA_InsertPtr(HDPA, INT, PVOID); + PVOID DPA_GetPtr(HDPA, INT_PTR); + BOOL DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM); + INT DPA_Search(HDPA, PVOID, INT, PFNDPACOMPARE, LPARAM, UINT); + BOOL Str_SetPtrW(LPWSTR*, LPCWSTR); + + static if (_WIN32_IE >= 0x400) { + BOOL FlatSB_EnableScrollBar(HWND, INT, UINT); + BOOL FlatSB_ShowScrollBar(HWND, INT, BOOL); + BOOL FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT); + BOOL FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO); + INT FlatSB_GetScrollPos(HWND, INT); + BOOL FlatSB_GetScrollProp(HWND, INT, LPINT); + version (Win64) { + BOOL FlatSB_GetScrollPropPtr(HWND, INT, PINT_PTR); + } else { + alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; + } + INT FlatSB_SetScrollPos(HWND, INT, INT, BOOL); + INT FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL); + INT FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL); + BOOL FlatSB_SetScrollProp(HWND, UINT, INT_PTR, BOOL); + alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; + BOOL InitializeFlatSB(HWND); + HRESULT UninitializeFlatSB(HWND); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR); + BOOL GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*); + BOOL RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR); + LRESULT DefSubclassProc(HWND, UINT, WPARAM, LPARAM); + INT DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, + COLORREF, INT, INT); + } + + int ImageList_Add(HIMAGELIST, HBITMAP, HBITMAP); + int ImageList_AddMasked(HIMAGELIST, HBITMAP, COLORREF); + BOOL ImageList_BeginDrag(HIMAGELIST, int, int, int); + HIMAGELIST ImageList_Create(int, int, UINT, int, int); + BOOL ImageList_Destroy(HIMAGELIST); + BOOL ImageList_DragEnter(HWND, int, int); + BOOL ImageList_DragLeave(HWND); + BOOL ImageList_DragMove(int, int); + BOOL ImageList_DragShowNolock(BOOL); + BOOL ImageList_Draw(HIMAGELIST, int, HDC, int, int, UINT); + BOOL ImageList_DrawEx(HIMAGELIST, int, HDC, int, int, int, int, COLORREF, + COLORREF, UINT); + void ImageList_EndDrag(); + COLORREF ImageList_GetBkColor(HIMAGELIST); + HIMAGELIST ImageList_GetDragImage(LPPOINT, LPPOINT); + HICON ImageList_GetIcon(HIMAGELIST, int, UINT); + BOOL ImageList_GetIconSize(HIMAGELIST, int*, int*); + int ImageList_GetImageCount(HIMAGELIST); + BOOL ImageList_GetImageInfo(HIMAGELIST, int, IMAGEINFO*); + HIMAGELIST ImageList_LoadImageA(HINSTANCE, LPCSTR, int, int, COLORREF, + UINT, UINT); + HIMAGELIST ImageList_LoadImageW(HINSTANCE, LPCWSTR, int, int, COLORREF, + UINT, UINT); + HIMAGELIST ImageList_Merge(HIMAGELIST, int, HIMAGELIST, int, int, int); + BOOL ImageList_Remove(HIMAGELIST, int); + BOOL ImageList_Replace(HIMAGELIST, int, HBITMAP, HBITMAP); + int ImageList_ReplaceIcon(HIMAGELIST, int, HICON); + COLORREF ImageList_SetBkColor(HIMAGELIST, COLORREF); + BOOL ImageList_SetDragCursorImage(HIMAGELIST, int, int, int); + BOOL ImageList_SetIconSize(HIMAGELIST, int, int); + BOOL ImageList_SetOverlayImage(HIMAGELIST, int, int); + + //#ifdef _OBJIDL_H + HIMAGELIST ImageList_Read(LPSTREAM); + BOOL ImageList_Write(HIMAGELIST, LPSTREAM); + //#endif + + static if (_WIN32_IE >= 0x400) { + HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); + } + + void InitCommonControls(); + + static if (_WIN32_IE >= 0x300) { + BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); + } + + int LBItemFromPt(HWND, POINT, BOOL); +} + +int ImageList_AddIcon(HIMAGELIST himl, HICON hicon) { + return ImageList_ReplaceIcon(himl, -1, hicon); +} + +HICON ImageList_ExtractIcon(HINSTANCE hi, HIMAGELIST himl, int i) { + return ImageList_GetIcon(himl, i, 0); +} + +HIMAGELIST ImageList_LoadBitmap(HINSTANCE hi, LPCTSTR lpbmp, int cx, + int cGrow, COLORREF crMask) { + return ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0); +} + +BOOL ImageList_RemoveAll(HIMAGELIST himl) { + return ImageList_Remove(himl, -1); +} + +COLORREF ListView_GetBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETBKCOLOR, 0, 0); +} + +HIMAGELIST ListView_GetImageList(HWND w, int i) { + return cast(HIMAGELIST) SendMessage(w, LVM_GETIMAGELIST, i, 0); +} + +int ListView_GetItemCount(HWND w) { + return cast(int) SendMessage(w, LVM_GETITEMCOUNT, 0, 0); +} + +BOOL ListView_GetItem(HWND w, LPLVITEM pitem) { + return cast(BOOL) SendMessage(w, LVM_GETITEM, 0, cast(LPARAM) pitem); +} + +BOOL ListView_SetBkColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETBKCOLOR, 0, cast(LPARAM) c); +} + +HIMAGELIST ListView_SetImageList(HWND w, HIMAGELIST h, int i) { + return cast(HIMAGELIST) SendMessage(w, LVM_SETIMAGELIST, i, + cast(LPARAM) h); +} + +BOOL ListView_SetItem(HWND w, const(LV_ITEM)* i) { + return cast(BOOL) SendMessage(w, LVM_SETITEM, 0, cast(LPARAM) i); +} + +int ListView_InsertItem(HWND w, const(LV_ITEM)* i) { + return cast(int) SendMessage(w, LVM_INSERTITEM, 0, cast(LPARAM) i); +} + +BOOL ListView_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_DELETEITEM, i, 0); +} + +BOOL ListView_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, LVM_DELETEALLITEMS, 0, 0); +} + +UINT ListView_GetCallbackMask(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETCALLBACKMASK, 0, 0); +} + +BOOL ListView_SetCallbackMask(HWND w, UINT m) { + return cast(BOOL) SendMessage(w, LVM_SETCALLBACKMASK, m, 0); +} + +int ListView_GetNextItem(HWND w, int i, UINT f) { + return cast(int) SendMessage(w, LVM_GETNEXTITEM, i, MAKELPARAM(cast(ushort)f, 0)); +} + +int ListView_FindItem(HWND w, int i, const(LV_FINDINFO)* p) { + return cast(int) SendMessage(w, LVM_FINDITEM, i, cast(LPARAM) p); +} + +BOOL ListView_GetItemRect(HWND w, int i, LPRECT p, int c) { + return cast(BOOL) SendMessage(w, LVM_GETITEMRECT, i, p ? + (p.left = c, cast(LPARAM) p) : 0); +} + +BOOL ListView_SetItemPosition(HWND w, int i, int x, int y) { + return cast(BOOL) SendMessage(w, LVM_SETITEMPOSITION, i, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +BOOL ListView_GetItemPosition(HWND w, int i, POINT* p) { + return cast(BOOL) SendMessage(w, LVM_GETITEMPOSITION, i, cast(LPARAM) p); +} + +DWORD ListView_GetItemSpacing(HWND w, BOOL f) { + return cast(DWORD) SendMessage(w, LVM_GETITEMSPACING, f, 0); +} + +int ListView_GetStringWidth(HWND w, LPCSTR s) { + return cast(int) SendMessage(w, LVM_GETSTRINGWIDTH, 0, cast(LPARAM) s); +} + +int ListView_HitTest(HWND w, LPLVHITTESTINFO p) { + return cast(int) SendMessage(w, LVM_HITTEST, 0, cast(LPARAM) p); +} + +BOOL ListView_EnsureVisible(HWND w, int i, BOOL f) { + return cast(BOOL) SendMessage(w, LVM_ENSUREVISIBLE, i, MAKELPARAM(cast(ushort)f, 0)); +} + +BOOL ListView_Scroll(HWND w, int dx, int dy) { + return cast(BOOL) SendMessage(w, LVM_SCROLL, dx, dy); +} + +BOOL ListView_RedrawItems(HWND w, int f, int l) { + return cast(BOOL) SendMessage(w, LVM_REDRAWITEMS, f, l); +} + +BOOL ListView_Arrange(HWND w, UINT c) { + return cast(BOOL) SendMessage(w, LVM_ARRANGE, c, 0); +} + +HWND ListView_EditLabel(HWND w, int i) { + return cast(HWND) SendMessage(w, LVM_EDITLABEL, i, 0); +} + +HWND ListView_GetEditControl(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETEDITCONTROL, 0, 0); +} + +BOOL ListView_GetColumn(HWND w, int i, LPLVCOLUMN p) { + return cast(BOOL) SendMessage(w, LVM_GETCOLUMN, i, cast(LPARAM) p); +} + +BOOL ListView_SetColumn(HWND w, int i, const(LV_COLUMN)* p) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMN, i, cast(LPARAM) p); +} + +int ListView_InsertColumn(HWND w, int i, const(LV_COLUMN)* p) { + return cast(int) SendMessage(w, LVM_INSERTCOLUMN, i, cast(LPARAM) p); +} + +BOOL ListView_DeleteColumn(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_DELETECOLUMN, i, 0); +} + +int ListView_GetColumnWidth(HWND w, int i) { + return cast(int) SendMessage(w, LVM_GETCOLUMNWIDTH, i, 0); +} + +BOOL ListView_SetColumnWidth(HWND w, int i, int x) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMNWIDTH, i, MAKELPARAM(cast(ushort)x, 0)); +} + +HIMAGELIST ListView_CreateDragImage(HWND w, int i, LPPOINT p) { + return cast(HIMAGELIST) SendMessage(w, LVM_CREATEDRAGIMAGE, i, + cast(LPARAM) p); +} + +BOOL ListView_GetViewRect(HWND w, RECT* p) { + return cast(BOOL) SendMessage(w, LVM_GETVIEWRECT, 0, cast(LPARAM) p); +} + +COLORREF ListView_GetTextColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETTEXTCOLOR, 0, 0); +} + +BOOL ListView_SetTextColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETTEXTCOLOR, 0, cast(LPARAM) c); +} + +COLORREF ListView_GetTextBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETTEXTBKCOLOR, 0, 0); +} + +BOOL ListView_SetTextBkColor(HWND w, COLORREF c) { + return cast(BOOL) SendMessage(w, LVM_SETTEXTBKCOLOR, 0, cast(LPARAM) c); +} + +int ListView_GetTopIndex(HWND w) { + return cast(int) SendMessage(w, LVM_GETTOPINDEX, 0, 0); +} + +int ListView_GetCountPerPage(HWND w) { + return cast(int) SendMessage(w, LVM_GETCOUNTPERPAGE, 0, 0); +} + +BOOL ListView_GetOrigin(HWND w, LPPOINT p) { + return cast(BOOL) SendMessage(w, LVM_GETORIGIN, 0, cast(LPARAM) p); +} + +BOOL ListView_Update(HWND w, WPARAM i) { + return cast(BOOL) SendMessage(w, LVM_UPDATE, i, 0); +} + +void ListView_SetItemState(HWND w, int i, UINT d, UINT m) { + LV_ITEM _lvi; + _lvi.stateMask = m; + _lvi.state = d; + SendMessage(w, LVM_SETITEMSTATE, i, cast(LPARAM) &_lvi); +} + +UINT ListView_GetItemState(HWND w, int i, UINT m) { + return cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, m); +} + +void ListView_GetItemText(HWND w, int i, int iS, LPTSTR s, int n) { + LV_ITEM _lvi; + _lvi.iSubItem = iS; + _lvi.cchTextMax = n; + _lvi.pszText = s; + SendMessage(w, LVM_GETITEMTEXT, i, cast(LPARAM) &_lvi); +} + +void ListView_SetItemText(HWND w, int i, int iS, LPTSTR s) { + LV_ITEM _lvi; + _lvi.iSubItem = iS; + _lvi.pszText = s; + SendMessage(w, LVM_SETITEMTEXT, i, cast(LPARAM) &_lvi); +} + +void ListView_SetItemCount(HWND w, int n) { + SendMessage(w, LVM_SETITEMCOUNT, n, 0); +} + +BOOL ListView_SortItems(HWND w, PFNLVCOMPARE f, LPARAM l) { + return cast(BOOL) SendMessage(w, LVM_SORTITEMS, l, cast(LPARAM) f); +} + +void ListView_SetItemPosition32(HWND w, int i, int x, int y) { + POINT p; + p.x = x; + p.y = y; + SendMessage(w, LVM_SETITEMPOSITION32, i, cast(LPARAM) &p); +} + +UINT ListView_GetSelectedCount(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOUNT, 0, 0); +} + +UINT ListView_GetCheckState(HWND w, UINT i) { + return ((cast(UINT) SendMessage(w, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK)) >> 12) - 1; +} + +void ListView_SetCheckState(HWND w, UINT i, BOOL f) { + ListView_SetItemState(w, i, INDEXTOSTATEIMAGEMASK(f ? 2 : 1), + LVIS_STATEIMAGEMASK); +} + +BOOL ListView_GetISearchString(HWND w, LPSTR lpsz) { + return cast(BOOL) SendMessage(w, LVM_GETISEARCHSTRING, 0, + cast(LPARAM) lpsz); +} + +void ListView_CancelEditLabel(HWND w) { + SendMessage(w, LVM_CANCELEDITLABEL, 0, 0); +} + +int ListView_EnableGroupView(HWND w, BOOL i) { + return cast(int) SendMessage(w, LVM_ENABLEGROUPVIEW, i, 0); +} + +static if (_WIN32_WINNT >= 0x500 || _WIN32_IE >= 0x500) { + BOOL ListView_SortItemsEx(HWND w, PFNLVCOMPARE c, LPARAM p) { + return cast(BOOL) SendMessage(w, LVM_SORTITEMSEX, cast(WPARAM) p, cast(LPARAM)c); + } +} + +static if (_WIN32_WINNT >= 0x501) { + int ListView_GetGroupInfo(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_GETGROUPINFO, i, cast(LPARAM) p); + } + + void ListView_GetGroupMetrics(HWND w, PLVGROUPMETRICS p) { + SendMessage(w, LVM_GETGROUPMETRICS, 0, cast(LPARAM) p); + } + + BOOL ListView_GetInsertMark(HWND w, PLVINSERTMARK p) { + return cast(BOOL) SendMessage(w, LVM_GETINSERTMARK, 0, cast(LPARAM) p); + } + + COLORREF ListView_GetInsertMarkColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETINSERTMARKCOLOR, 0, 0); + } + + int ListView_GetInsertMarkRect(HWND w, LPRECT p) { + return cast(int) SendMessage(w, LVM_GETINSERTMARKRECT, 0, cast(LPARAM) p); + } + + COLORREF ListView_GetOutlineColor(HWND w) { + return cast(COLORREF) SendMessage(w, LVM_GETOUTLINECOLOR, 0, 0); + } + + UINT ListView_GetSelectedColumn(HWND w) { + return cast(UINT) SendMessage(w, LVM_GETSELECTEDCOLUMN, 0, 0); + } + + void ListView_GetTileInfo(HWND w, PLVTILEINFO p) { + SendMessage(w, LVM_GETTILEINFO, 0, cast(LPARAM) p); + } + + void ListView_GetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { + SendMessage(w, LVM_GETTILEVIEWINFO, 0, cast(LPARAM) p); + } + + DWORD ListView_GetView(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETVIEW, 0, 0); + } + + BOOL ListView_HasGroup(HWND w, int i) { + return cast(BOOL) SendMessage(w, LVM_HASGROUP, i, 0); + } + + int ListView_InsertGroup(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_INSERTGROUP, i, cast(LPARAM) p); + } + + void ListView_InsertGroupSorted(HWND w, PLVINSERTGROUPSORTED p) { + SendMessage(w, LVM_INSERTGROUPSORTED, cast(WPARAM) p, 0); + } + + BOOL ListView_InsertMarkHitTest(HWND w, LPPOINT p, PLVINSERTMARK t) { + return cast(BOOL) SendMessage(w, LVM_INSERTMARKHITTEST, cast(WPARAM) p, cast(LPARAM) t); + } + + BOOL ListView_IsGroupViewEnabled(HWND w) { + return cast(BOOL) SendMessage(w, LVM_ISGROUPVIEWENABLED, 0, 0); + } + + UINT ListView_MapIDToIndex(HWND w, UINT i) { + return cast(UINT) SendMessage(w, LVM_MAPIDTOINDEX, i, 0); + } + + /* ??? MSDN documents this as "Not implemented", except in relation to + * Windows CE/Mobile. + */ + void ListView_MoveGroup(HWND w, int i, int t) { + SendMessage(w, LVM_MOVEGROUP, i, t); + } + + void ListView_RemoveAllGroups(HWND w) { + SendMessage(w, LVM_REMOVEALLGROUPS, 0, 0); + } + + int ListView_RemoveGroup(HWND w, int i) { + return cast(int) SendMessage(w, LVM_REMOVEGROUP, i, 0); + } + + int ListView_SetGroupInfo(HWND w, int i, PLVGROUP p) { + return cast(int) SendMessage(w, LVM_SETGROUPINFO, i, cast(LPARAM) p); + } + + void ListView_SetGroupMetrics(HWND w, PLVGROUPMETRICS p) { + SendMessage(w, LVM_SETGROUPMETRICS, 0, cast(LPARAM) p); + } + + BOOL ListView_SetInfoTip(HWND w, PLVSETINFOTIP p) { + return cast(BOOL) SendMessage(w, LVM_SETINFOTIP, 0, cast(LPARAM) p); + } + + BOOL ListView_SetInsertMark(HWND w, PLVINSERTMARK p) { + return cast(BOOL) SendMessage(w, LVM_SETINSERTMARK, 0, cast(LPARAM) p); + } + + COLORREF ListView_SetInsertMarkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, LVM_SETINSERTMARKCOLOR, 0, c); + } + + COLORREF ListView_SetOutlineColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, LVM_SETOUTLINECOLOR, 0, c); + } + + void ListView_SetSelectedColumn(HWND w, int i) { + SendMessage(w, LVM_SETSELECTEDCOLUMN, i, 0); + } + + BOOL ListView_SetTileInfo(HWND w, PLVTILEINFO p) { + return cast(BOOL) SendMessage(w, LVM_SETTILEINFO, 0, cast(LPARAM) p); + } + + BOOL ListView_SetTileViewInfo(HWND w, PLVTILEVIEWINFO p) { + return cast(BOOL) SendMessage(w, LVM_SETTILEVIEWINFO, 0, cast(LPARAM) p); + } + + int ListView_SetView(HWND w, DWORD i) { + return cast(int) SendMessage(w, LVM_SETVIEW, i, 0); + } + + int ListView_SortGroups(HWND w, PFNLVGROUPCOMPARE c, LPVOID p) { + return cast(int) SendMessage(w, LVM_SORTGROUPS, cast(WPARAM) c, cast(LPARAM) p); + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + CBM_FIRST = 0x1700, + CB_SETMINVISIBLE = CBM_FIRST + 1, + CB_GETMINVISIBLE = CBM_FIRST + 2, + CB_SETCUEBANNER = CBM_FIRST + 3, + CB_GETCUEBANNER = CBM_FIRST + 4, + } + + BOOL ComboBox_SetMinVisible(HWND w, INT i) { + return cast(BOOL) SendMessage(w, CB_SETMINVISIBLE, cast(WPARAM) i, 0); + } + + int ComboBox_GetMinVisible(HWND w) { + return cast(int) SendMessage(w, CB_GETMINVISIBLE, 0, 0); + } +} + +extern (Windows) BOOL MakeDragList(HWND); +extern (Windows) void MenuHelp(UINT, WPARAM, LPARAM, HMENU, HINSTANCE, HWND, + PUINT); + +COLORREF MonthCal_GetColor(HWND hwnd, INT icolor) { + return cast(COLORREF) SendMessage(hwnd, MCM_GETCOLOR, + cast(WPARAM) icolor, 0); +} + +BOOL MonthCal_GetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { + return cast(BOOL) SendMessage(hwnd, MCM_GETCURSEL, 0, + cast(LPARAM) lpsystime); +} + +DWORD MonthCal_GetFirstDayOfWeek(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETFIRSTDAYOFWEEK, 0, 0); +} + +DWORD MonthCal_GetMaxSelCount(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETMAXSELCOUNT, 0, 0); +} + +DWORD MonthCal_GetMaxTodayWidth(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, MCM_GETMAXTODAYWIDTH, 0, 0); +} + +BOOL MonthCal_GetMinReqRect(HWND hwnd, LPRECT lpRectInfo) { + return cast(BOOL) SendMessage(hwnd, MCM_GETMINREQRECT, 0, + cast(LPARAM) lpRectInfo); +} + +INT MonthCal_GetMonthDelta(HWND hwnd) { + return cast(INT) SendMessage(hwnd, MCM_GETMONTHDELTA, 0, 0); +} + +INT MonthCal_GetMonthRange(HWND hwnd, DWORD flag, LPSYSTEMTIME systimearray) { + return cast(INT) SendMessage(hwnd, MCM_GETMONTHRANGE, cast(WPARAM) flag, + cast(LPARAM) systimearray); +} + +DWORD MonthCal_GetRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(DWORD) SendMessage(hwnd, MCM_GETRANGE, 0, + cast(LPARAM) systimearray); +} + +BOOL MonthCal_GetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(BOOL) SendMessage(hwnd, MCM_GETSELRANGE, 0, + cast(LPARAM) systimearray); +} + +BOOL MonthCal_GetToday(HWND hwnd, LPSYSTEMTIME systime) { + return cast(BOOL) SendMessage(hwnd, MCM_GETTODAY, 0, + cast(LPARAM) systime); +} + +BOOL MonthCal_GetUnicodeFormat(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0); +} + +DWORD MonthCal_HitTest(HWND hwnd, PMCHITTESTINFO pmchittest) { + return cast(DWORD) SendMessage(hwnd, MCM_HITTEST, 0, + cast(LPARAM) pmchittest); +} + +COLORREF MonthCal_SetColor(HWND hwnd, INT icolor, COLORREF clr) { + return cast(COLORREF) SendMessage(hwnd, MCM_SETCOLOR, cast(WPARAM) icolor, + cast(LPARAM) clr); +} + +BOOL MonthCal_SetCurSel(HWND hwnd, LPSYSTEMTIME lpsystime) { + return cast(BOOL) SendMessage(hwnd, MCM_SETCURSEL, 0, + cast(LPARAM) lpsystime); +} + +BOOL MonthCal_SetDayState(HWND hwnd, INT imonths, LPMONTHDAYSTATE lpdatestatearray) { + return cast(BOOL) SendMessage(hwnd, MCM_SETDAYSTATE, cast(WPARAM) imonths, + cast(LPARAM) lpdatestatearray); +} + +DWORD MonthCal_SetFirstDayOfWeek(HWND hwnd, INT iday) { + return cast(DWORD) SendMessage(hwnd, MCM_SETFIRSTDAYOFWEEK, 0, + cast(LPARAM) iday); +} + +BOOL MonthCal_SetMaxSelCount(HWND hwnd, UINT imax) { + return cast(BOOL) SendMessage(hwnd, MCM_SETMAXSELCOUNT, + cast(WPARAM) imax, 0); +} + +INT MonthCal_SetMonthDelta(HWND hwnd, INT idelta) { + return cast(INT) SendMessage(hwnd, MCM_SETMONTHDELTA, cast(WPARAM) idelta, 0); +} + +BOOL MonthCal_SetSelRange(HWND hwnd, LPSYSTEMTIME systimearray) { + return cast(BOOL) SendMessage(hwnd, MCM_SETSELRANGE, 0, + cast(LPARAM) systimearray); +} + +void MonthCal_SetToday(HWND hwnd, LPSYSTEMTIME systime) { + SendMessage(hwnd, MCM_SETTODAY, 0, cast(LPARAM) systime); +} + +BOOL MonthCal_SetUnicodeFormat(HWND hwnd, BOOL unicode) { + return cast(BOOL) SendMessage(hwnd, MCM_SETUNICODEFORMAT, + cast(WPARAM) unicode, 0); +} + +BOOL MonthCal_SetRange(HWND w, DWORD f, LPSYSTEMTIME st) { + return cast(BOOL) SendMessage(w, MCM_SETRANGE, cast(WPARAM) f, + cast(LPARAM) st); +} + +extern (Windows) BOOL ShowHideMenuCtl(HWND, UINT_PTR, PINT); + +BOOL TabCtrl_GetItem(HWND w, int i, LPTCITEM p) { + return cast(BOOL) SendMessage(w, TCM_GETITEM, i, cast(LPARAM) p); +} + +BOOL TabCtrl_SetItem(HWND w, int i, LPTCITEM p) { + return cast(BOOL) SendMessage(w, TCM_SETITEM, i, cast(LPARAM) p); +} + +int TabCtrl_InsertItem(HWND w, int i, const(TC_ITEM)* p) { + return cast(int) SendMessage(w, TCM_INSERTITEM, i, cast(LPARAM) p); +} + +BOOL TabCtrl_DeleteItem(HWND w, int i) { + return cast(BOOL) SendMessage(w, TCM_DELETEITEM, i, 0); +} + +BOOL TabCtrl_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, TCM_DELETEALLITEMS, 0, 0); +} + +BOOL TabCtrl_GetItemRect(HWND w, int i, LPRECT p) { + return cast(BOOL) SendMessage(w, TCM_GETITEMRECT, i, cast(LPARAM) p); +} + +int TabCtrl_GetCurSel(HWND w) { + return cast(int) SendMessage(w, TCM_GETCURSEL, 0, 0); +} + +int TabCtrl_SetCurSel(HWND w, int i) { + return cast(int) SendMessage(w, TCM_SETCURSEL, i, 0); +} + +int TabCtrl_HitTest(HWND w, LPTCHITTESTINFO p) { + return cast(int) SendMessage(w, TCM_HITTEST, 0, cast(LPARAM) p); +} + +BOOL TabCtrl_SetItemExtra(HWND w, int c) { + return cast(BOOL) SendMessage(w, TCM_SETITEMEXTRA, c, 0); +} + +int TabCtrl_AdjustRect(HWND w, BOOL b, LPRECT p) { + return cast(int) SendMessage(w, TCM_ADJUSTRECT, b, cast(LPARAM) p); +} + +DWORD TabCtrl_SetItemSize(HWND w, int x, int y) { + return cast(DWORD) SendMessage(w, TCM_SETITEMSIZE, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +void TabCtrl_RemoveImage(HWND w, int i) { + SendMessage(w, TCM_REMOVEIMAGE, i, 0); +} + +void TabCtrl_SetPadding(HWND w, int x, int y) { + SendMessage(w, TCM_SETPADDING, 0, MAKELPARAM(cast(ushort)x, cast(ushort)y)); +} + +int TabCtrl_GetRowCount(HWND w) { + return cast(int) SendMessage(w, TCM_GETROWCOUNT, 0, 0); +} + +HWND TabCtrl_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, TCM_GETTOOLTIPS, 0, 0); +} + +void TabCtrl_SetToolTips(HWND w, HWND t) { + SendMessage(w, TCM_SETTOOLTIPS, cast(WPARAM) t, 0); +} + +int TabCtrl_GetCurFocus(HWND w) { + return cast(int) SendMessage(w, TCM_GETCURFOCUS, 0, 0); +} + +void TabCtrl_SetCurFocus(HWND w, int i) { + SendMessage(w, TCM_SETCURFOCUS, i, 0); +} + +HIMAGELIST TabCtrl_GetImageList(HWND w) { + return cast(HIMAGELIST) SendMessage(w, TCM_GETIMAGELIST, 0, 0); +} + +HIMAGELIST TabCtrl_SetImageList(HWND w, HIMAGELIST h) { + return cast(HIMAGELIST) SendMessage(w, TCM_SETIMAGELIST, 0, + cast(LPARAM) h); +} + +int TabCtrl_GetItemCount(HWND w) { + return cast(int) SendMessage(w, TCM_GETITEMCOUNT, 0, 0); +} + +extern (Windows) BOOL _TrackMouseEvent(LPTRACKMOUSEEVENT); + +HTREEITEM TreeView_InsertItem(HWND w, LPTVINSERTSTRUCT i) { + return cast(HTREEITEM) SendMessage(w, TVM_INSERTITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_DeleteItem(HWND w, HTREEITEM i) { + return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_DeleteAllItems(HWND w) { + return cast(BOOL) SendMessage(w, TVM_DELETEITEM, 0, cast(LPARAM) TVI_ROOT); +} + +BOOL TreeView_Expand(HWND w, HTREEITEM i, UINT c) { + return cast(BOOL) SendMessage(w, TVM_EXPAND, c, cast(LPARAM) i); +} + +BOOL TreeView_GetItemRect(HWND w, HTREEITEM i, LPRECT p, BOOL c) { + *cast(HTREEITEM*) p = i; + return cast(BOOL) SendMessage(w, TVM_GETITEMRECT, c, cast(LPARAM) p); +} + +UINT TreeView_GetCount(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETCOUNT, 0, 0); +} + +UINT TreeView_GetIndent(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETINDENT, 0, 0); +} + +BOOL TreeView_SetIndent(HWND w, INT i) { + return cast(BOOL) SendMessage(w, TVM_SETINDENT, i, 0); +} + +HIMAGELIST TreeView_GetImageList(HWND w, INT i) { + return cast(HIMAGELIST) SendMessage(w, TVM_GETIMAGELIST, i, 0); +} + +HIMAGELIST TreeView_SetImageList(HWND w, HIMAGELIST h, INT i) { + return cast(HIMAGELIST) SendMessage(w, TVM_SETIMAGELIST, i, + cast(LPARAM) h); +} + +HTREEITEM TreeView_GetNextItem(HWND w, HTREEITEM i, UINT c) { + return cast(HTREEITEM) SendMessage(w, TVM_GETNEXTITEM, c, cast(LPARAM) i); +} + +HTREEITEM TreeView_GetChild(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_CHILD); +} + +HTREEITEM TreeView_GetNextSibling(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_NEXT); +} + +HTREEITEM TreeView_GetPrevSibling(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PREVIOUS); +} + +HTREEITEM TreeView_GetParent(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PARENT); +} + +HTREEITEM TreeView_GetFirstVisible(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_FIRSTVISIBLE); +} + +HTREEITEM TreeView_GetNextVisible(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_NEXTVISIBLE); +} + +HTREEITEM TreeView_GetPrevVisible(HWND w, HTREEITEM i) { + return TreeView_GetNextItem(w, i, TVGN_PREVIOUSVISIBLE); +} + +HTREEITEM TreeView_GetSelection(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_CARET); +} + +HTREEITEM TreeView_GetDropHilight(HTREEITEM w) { + return TreeView_GetNextItem(w, null, TVGN_DROPHILITE); +} + +HTREEITEM TreeView_GetRoot(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_ROOT); +} + +BOOL TreeView_Select(HWND w, HTREEITEM i, UINT c) { + return cast(BOOL) SendMessage(w, TVM_SELECTITEM, c, cast(LPARAM) i); +} + +BOOL TreeView_SelectItem(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_CARET); +} + +BOOL TreeView_SelectDropTarget(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_DROPHILITE); +} + +BOOL TreeView_SelectSetFirstVisible(HWND w, HTREEITEM i) { + return TreeView_Select(w, i, TVGN_FIRSTVISIBLE); +} + +BOOL TreeView_GetItem(HWND w, LPTVITEM i) { + return cast(BOOL) SendMessage(w, TVM_GETITEM, 0, cast(LPARAM) i); +} + +BOOL TreeView_SetItem(HWND w, const(TV_ITEM)* i) { + return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) i); +} + +HWND TreeView_EditLabel(HWND w, HTREEITEM i) { + return cast(HWND) SendMessage(w, TVM_EDITLABEL, 0, cast(LPARAM) i); +} + +HWND TreeView_GetEditControl(HWND w) { + return cast(HWND) SendMessage(w, TVM_GETEDITCONTROL, 0, 0); +} + +UINT TreeView_GetVisibleCount(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETVISIBLECOUNT, 0, 0); +} + +HTREEITEM TreeView_HitTest(HWND w, LPTVHITTESTINFO p) { + return cast(HTREEITEM) SendMessage(w, TVM_HITTEST, 0, cast(LPARAM) p); +} + +HIMAGELIST TreeView_CreateDragImage(HWND w, HTREEITEM i) { + return cast(HIMAGELIST) SendMessage(w, TVM_CREATEDRAGIMAGE, 0, + cast(LPARAM) i); +} + +BOOL TreeView_SortChildren(HWND w, HTREEITEM i, BOOL r) { + return cast(BOOL) SendMessage(w, TVM_SORTCHILDREN, r, cast(LPARAM) i); +} + +BOOL TreeView_EnsureVisible(HWND w, HTREEITEM i) { + return cast(BOOL) SendMessage(w, TVM_ENSUREVISIBLE, 0, cast(LPARAM) i); +} + +BOOL TreeView_SortChildrenCB(HWND w, LPTVSORTCB s, BOOL r) { + return cast(BOOL) SendMessage(w, TVM_SORTCHILDRENCB, r, cast(LPARAM) s); +} + +BOOL TreeView_EndEditLabelNow(HWND w, BOOL f) { + return cast(BOOL) SendMessage(w, TVM_ENDEDITLABELNOW, f, 0); +} + +BOOL TreeView_GetISearchString(HWND w, LPTSTR s) { + return cast(BOOL) SendMessage(w, TVM_GETISEARCHSTRING, 0, cast(LPARAM) s); +} + +static if (_WIN32_IE >= 0x300) { + DWORD ListView_ApproximateViewRect(HWND w, int iw, int ih, int i) { + return cast(DWORD) SendMessage(w, LVM_APPROXIMATEVIEWRECT, i, + MAKELPARAM(cast(ushort)iw, cast(ushort)ih)); + } + + DWORD ListView_SetExtendedListViewStyle(HWND w, DWORD s) { + return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, s); + } + + DWORD ListView_GetExtendedListViewStyle(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0); + } + + BOOL ListView_SetColumnOrderArray(HWND w, int i, int* a) { + return cast(BOOL) SendMessage(w, LVM_SETCOLUMNORDERARRAY, + cast(WPARAM) i, cast(LPARAM) a); + } + + BOOL ListView_GetColumnOrderArray(HWND w, int i, int* a) { + return cast(BOOL) SendMessage(w, LVM_GETCOLUMNORDERARRAY, + cast(WPARAM) i, cast(LPARAM) a); + } + + HWND ListView_GetHeader(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETHEADER, 0, 0); + } + + HCURSOR ListView_GetHotCursor(HWND w) { + return cast(HCURSOR) SendMessage(w, LVM_GETHOTCURSOR, 0, 0); + } + + INT ListView_GetHotItem(HWND w) { + return cast(INT) SendMessage(w, LVM_GETHOTITEM, 0, 0); + } + + BOOL ListView_GetSubItemRect(HWND w, int i, int isi, int c, LPRECT p) { + return cast(BOOL) SendMessage(w, LVM_GETSUBITEMRECT, i, + p ? (p.left = c, p.top = isi, cast(LPARAM) p) : 0); + } + + HCURSOR ListView_SetHotCursor(HWND w, HCURSOR c) { + return cast(HCURSOR) SendMessage(w, LVM_SETHOTCURSOR, 0, + cast(LPARAM) c); + } + + INT ListView_SetHotItem(HWND w, INT i) { + return cast(INT) SendMessage(w, LVM_SETHOTITEM, cast(WPARAM) i, 0); + } + + DWORD ListView_SetIconSpacing(HWND w, int x, int y) { + return cast(DWORD) SendMessage(w, LVM_SETICONSPACING, 0, + MAKELONG(cast(ushort)x, cast(ushort)y)); + } + + INT ListView_SubItemHitTest(HWND w, LPLVHITTESTINFO p) { + return cast(INT) SendMessage(w, LVM_SUBITEMHITTEST, 0, cast(LPARAM) p); + } + + BOOL ListView_SetItemCountEx(HWND w, int i, DWORD f) { + return cast(BOOL) SendMessage(w, LVM_SETITEMCOUNT, i, cast(LPARAM) f); + } + + extern (Windows) { + WINBOOL ImageList_SetImageCount(HIMAGELIST, UINT); + WINBOOL ImageList_Copy(HIMAGELIST, int, HIMAGELIST, int, UINT); + WINBOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*); + } + + int TabCtrl_SetMinTabWidth(HWND hwnd, int x) { + return cast(int) SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x); + } + + VOID TabCtrl_DeselectAll(HWND hwnd, UINT fExcludeFocus) { + SendMessage(hwnd, TCM_DESELECTALL, fExcludeFocus, 0); + } + + HWND TreeView_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, TVM_GETTOOLTIPS, 0, 0); + } + + HWND TreeView_SetToolTips(HWND w, HWND wt) { + return cast(HWND) SendMessage(w, TVM_SETTOOLTIPS, cast(WPARAM) wt, 0); + } +} + +static if (_WIN32_IE >= 0x400) { + BOOL ListView_GetBkImage(HWND h, LPLVBKIMAGE plvbki) { + return cast(BOOL) SendMessage(h, LVM_GETBKIMAGE, 0, + cast(LPARAM) plvbki); + } + + BOOL ListView_SetBkImage(HWND h, LPLVBKIMAGE plvbki) { + return cast(BOOL) SendMessage(h, LVM_SETBKIMAGE, 0, + cast(LPARAM) plvbki); + } + + DWORD ListView_SetExtendedListViewStyleEx(HWND w, DWORD m, DWORD s) { + return cast(DWORD) SendMessage(w, LVM_SETEXTENDEDLISTVIEWSTYLE, m, s); + } + + VOID ListView_SetWorkAreas(HWND w, INT n, LPRECT r) { + SendMessage(w, LVM_SETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); + } + + VOID ListView_GetWorkAreas(HWND w, INT n, LPRECT r) { + SendMessage(w, LVM_GETWORKAREAS, cast(WPARAM) n, cast(LPARAM) r); + } + + BOOL ListView_GetNumberOfWorkAreas(HWND w, LPUINT n) { + return cast(BOOL) SendMessage(w, LVM_GETNUMBEROFWORKAREAS, 0, + cast(LPARAM) n); + } + + DWORD ListView_SetHoverTime(HWND w, DWORD t) { + return cast(DWORD) SendMessage(w, LVM_SETHOVERTIME, 0, + cast(LPARAM) t); + } + + DWORD ListView_GetHoverTime(HWND w) { + return cast(DWORD) SendMessage(w, LVM_GETHOVERTIME, 0, 0); + } + + INT ListView_GetSelectionMark(HWND w) { + return cast(INT) SendMessage(w, LVM_GETSELECTIONMARK, 0, 0); + } + + INT ListView_SetSelectionMark(HWND w, INT i) { + return cast(INT) SendMessage(w, LVM_SETSELECTIONMARK, 0, cast(LPARAM) i); + } + + HWND ListView_SetToolTips(HWND w, HWND n) { + return cast(HWND) SendMessage(w, LVM_SETTOOLTIPS, cast(WPARAM) n, 0); + } + + HWND ListView_GetToolTips(HWND w) { + return cast(HWND) SendMessage(w, LVM_GETTOOLTIPS, 0, 0); + } + + BOOL ListView_SetUnicodeFormat(HWND w, BOOL f) { + return cast(BOOL) SendMessage(w, LVM_SETUNICODEFORMAT, + cast(WPARAM) f, 0); + } + + BOOL ListView_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, LVM_GETUNICODEFORMAT, 0, 0); + } + + BOOL TabCtrl_HighlightItem(HWND hwnd, INT i, WORD fHighlight) { + return cast(BOOL) SendMessage(hwnd, TCM_HIGHLIGHTITEM, + cast(WPARAM) i, cast(LPARAM) MAKELONG(fHighlight, 0)); + } + + DWORD TabCtrl_SetExtendedStyle(HWND hwnd, DWORD dw) { + return cast(DWORD) SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw); + } + + DWORD TabCtrl_GetExtendedStyle(HWND hwnd) { + return cast(DWORD) SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0); + } + + BOOL TabCtrl_SetUnicodeFormat(HWND hwnd, HWND fUnicode) { + return cast(BOOL) SendMessage(hwnd, TCM_SETUNICODEFORMAT, + cast(WPARAM) fUnicode, 0); + } + + BOOL TabCtrl_GetUnicodeFormat(HWND hwnd) { + return cast(BOOL) SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0); + } + + COLORREF TreeView_GetBkColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETBKCOLOR, 0, 0); + } + + COLORREF TreeView_GetInsertMarkColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETINSERTMARKCOLOR, 0, 0); + } + + int TreeView_GetItemHeight(HWND w) { + return cast(int) SendMessage(w, TVM_GETITEMHEIGHT, 0, 0); + } + + UINT TreeView_GetScrollTime(HWND w) { + return cast(UINT) SendMessage(w, TVM_GETSCROLLTIME, 0, 0); + } + + COLORREF TreeView_GetTextColor(HWND w) { + return cast(COLORREF) SendMessage(w, TVM_GETTEXTCOLOR, 0, 0); + } + + COLORREF TreeView_SetBkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETBKCOLOR, 0, + cast(LPARAM) c); + } + + COLORREF TreeView_SetInsertMarkColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETINSERTMARKCOLOR, 0, + cast(LPARAM) c); + } + + int TreeView_SetItemHeight(HWND w, SHORT h) { + return cast(int) SendMessage(w, TVM_SETITEMHEIGHT, cast(WPARAM) h, 0); + } + + UINT TreeView_SetScrollTime(HWND w, UINT t) { + return cast(UINT) SendMessage(w, TVM_SETSCROLLTIME, cast(WPARAM) t, 0); + } + + COLORREF TreeView_SetTextColor(HWND w, COLORREF c) { + return cast(COLORREF) SendMessage(w, TVM_SETTEXTCOLOR, 0, + cast(LPARAM) c); + } + + BOOL TreeView_SetInsertMark(HWND w, HTREEITEM i, BOOL a) { + return cast(BOOL) SendMessage(w, TVM_SETINSERTMARK, cast(WPARAM) a, + cast(LPARAM) i); + } + + BOOL TreeView_SetUnicodeFormat(HWND w, BOOL u) { + return cast(BOOL) SendMessage(w, TVM_SETUNICODEFORMAT, + cast(WPARAM) u, 0); + } + + BOOL TreeView_GetUnicodeFormat(HWND w) { + return cast(BOOL) SendMessage(w, TVM_GETUNICODEFORMAT, 0, 0); + } + + HTREEITEM TreeView_GetLastVisible(HWND w) { + return TreeView_GetNextItem(w, null, TVGN_LASTVISIBLE); + } +} + +static if (_WIN32_IE >= 0x500) { + UINT TreeView_GetItemState(HWND w, HTREEITEM i, UINT m) { + return cast(UINT) SendMessage(w, TVM_GETITEMSTATE, cast(WPARAM) i, + cast(LPARAM) m); + } + + BOOL TreeView_SetItemState(HWND w, HTREEITEM i, UINT d, UINT m) { + TVITEM _tvi; + _tvi.mask = TVIF_STATE; + _tvi.hItem = i; + _tvi.stateMask = m; + _tvi.state = d; + return cast(BOOL) SendMessage(w, TVM_SETITEM, 0, cast(LPARAM) &_tvi); + } +} + + +//#ifdef _WIN32_WCE // these are PPC only +/+ +extern (Windows) { + HWND CommandBar_Create(HINSTANCE, HWND, int); + BOOL CommandBar_Show(HWND, BOOL); + int CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int); + HWND CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD); + BOOL CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD ); + BOOL CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD); + BOOL CommandBar_DrawMenuBar(HWND, WORD); + HMENU CommandBar_GetMenu(HWND, WORD); + BOOL CommandBar_AddAdornments(HWND, DWORD, DWORD); + int CommandBar_Height(HWND hwndCB); +} + +// MinGW: These two are not in the DLL +void CommandBar_InsertButton(HWND hwnd, int i, LPTBBUTTON lptbbutton) { + SendMessage(hwnd, TB_INSERTBUTTON, i, lptbbutton); +} +alias DestroyWindow CommandBar_Destroy; ++/ +//#endif // _WIN32_WCE + + +static if (_WIN32_WINNT >= 0x501) { + struct EDITBALLOONTIP + { + DWORD cbStruct; + LPCWSTR pszTitle; + LPCWSTR pszText; + INT ttiIcon; + } + alias EDITBALLOONTIP* PEDITBALLOONTIP; + + const EM_SETCUEBANNER = ECM_FIRST + 1; + const EM_GETCUEBANNER = ECM_FIRST + 2; + const EM_SHOWBALLOONTIP = ECM_FIRST + 3; + const EM_HIDEBALLOONTIP = ECM_FIRST + 4; +} + +static if (_WIN32_WINNT >= 0x600) { + const EM_SETHILITE = ECM_FIRST + 5; + const EM_GETHILITE = ECM_FIRST + 6; +} Index: src/win32/commdlg.d ================================================================== --- src/win32/commdlg.d +++ src/win32/commdlg.d @@ -1,710 +1,717 @@ -/***********************************************************************\ -* commdlg.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.12 * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.commdlg; -pragma(lib, "comdlg32.lib"); - -private import win32.w32api; -import win32.windef, win32.winuser; -import win32.wingdi; // for LPLOGFONTA - -const TCHAR[] - LBSELCHSTRING = "commdlg_LBSelChangedNotify", - SHAREVISTRING = "commdlg_ShareViolation", - FILEOKSTRING = "commdlg_FileNameOK", - COLOROKSTRING = "commdlg_ColorOK", - SETRGBSTRING = "commdlg_SetRGBColor", - HELPMSGSTRING = "commdlg_help", - FINDMSGSTRING = "commdlg_FindReplace"; - -enum : UINT { - CDN_FIRST = -601, // also in commctrl.h - CDN_LAST = -699, - CDN_INITDONE = CDN_FIRST, - CDN_SELCHANGE = CDN_FIRST - 1, - CDN_FOLDERCHANGE = CDN_FIRST - 2, - CDN_SHAREVIOLATION = CDN_FIRST - 3, - CDN_HELP = CDN_FIRST - 4, - CDN_FILEOK = CDN_FIRST - 5, - CDN_TYPECHANGE = CDN_FIRST - 6 -} - -enum : UINT { - CDM_FIRST = WM_USER + 100, - CDM_LAST = WM_USER + 200, - CDM_GETSPEC = CDM_FIRST, - CDM_GETFILEPATH, - CDM_GETFOLDERPATH, - CDM_GETFOLDERIDLIST, - CDM_SETCONTROLTEXT, - CDM_HIDECONTROL, - CDM_SETDEFEXT // = CDM_FIRST + 6 -} - -// flags for ChooseColor -enum : DWORD { - CC_RGBINIT = 0x0001, - CC_FULLOPEN = 0x0002, - CC_PREVENTFULLOPEN = 0x0004, - CC_SHOWHELP = 0x0008, - CC_ENABLEHOOK = 0x0010, - CC_ENABLETEMPLATE = 0x0020, - CC_ENABLETEMPLATEHANDLE = 0x0040, - CC_SOLIDCOLOR = 0x0080, - CC_ANYCOLOR = 0x0100 -} - -// flags for ChooseFont -enum : DWORD { - CF_SCREENFONTS = 0x00000001, - CF_PRINTERFONTS = 0x00000002, - CF_BOTH = 0x00000003, - CF_SHOWHELP = 0x00000004, - CF_ENABLEHOOK = 0x00000008, - CF_ENABLETEMPLATE = 0x00000010, - CF_ENABLETEMPLATEHANDLE = 0x00000020, - CF_INITTOLOGFONTSTRUCT = 0x00000040, - CF_USESTYLE = 0x00000080, - CF_EFFECTS = 0x00000100, - CF_APPLY = 0x00000200, - CF_ANSIONLY = 0x00000400, - CF_SCRIPTSONLY = CF_ANSIONLY, - CF_NOVECTORFONTS = 0x00000800, - CF_NOOEMFONTS = 0x00000800, - CF_NOSIMULATIONS = 0x00001000, - CF_LIMITSIZE = 0x00002000, - CF_FIXEDPITCHONLY = 0x00004000, - CF_WYSIWYG = 0x00008000, - CF_FORCEFONTEXIST = 0x00010000, - CF_SCALABLEONLY = 0x00020000, - CF_TTONLY = 0x00040000, - CF_NOFACESEL = 0x00080000, - CF_NOSTYLESEL = 0x00100000, - CF_NOSIZESEL = 0x00200000, - CF_SELECTSCRIPT = 0x00400000, - CF_NOSCRIPTSEL = 0x00800000, - CF_NOVERTFONTS = 0x01000000 -} - -// Font type for ChooseFont -enum : WORD { - BOLD_FONTTYPE = 0x0100, - ITALIC_FONTTYPE = 0x0200, - REGULAR_FONTTYPE = 0x0400, - SCREEN_FONTTYPE = 0x2000, - PRINTER_FONTTYPE = 0x4000, - SIMULATED_FONTTYPE = 0x8000 -} - -enum : UINT { - WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1, - WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, - WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 -} - -// flags for OpenFileName -enum : DWORD { - OFN_SHAREWARN = 0, - OFN_SHARENOWARN = 0x000001, - OFN_READONLY = 0x000001, - OFN_SHAREFALLTHROUGH = 0x000002, - OFN_OVERWRITEPROMPT = 0x000002, - OFN_HIDEREADONLY = 0x000004, - OFN_NOCHANGEDIR = 0x000008, - OFN_SHOWHELP = 0x000010, - OFN_ENABLEHOOK = 0x000020, - OFN_ENABLETEMPLATE = 0x000040, - OFN_ENABLETEMPLATEHANDLE = 0x000080, - OFN_NOVALIDATE = 0x000100, - OFN_ALLOWMULTISELECT = 0x000200, - OFN_EXTENSIONDIFFERENT = 0x000400, - OFN_PATHMUSTEXIST = 0x000800, - OFN_FILEMUSTEXIST = 0x001000, - OFN_CREATEPROMPT = 0x002000, - OFN_SHAREAWARE = 0x004000, - OFN_NOREADONLYRETURN = 0x008000, - OFN_NOTESTFILECREATE = 0x010000, - OFN_NONETWORKBUTTON = 0x020000, - OFN_NOLONGNAMES = 0x040000, - OFN_EXPLORER = 0x080000, - OFN_NODEREFERENCELINKS = 0x100000, - OFN_LONGNAMES = 0x200000, - OFN_ENABLESIZING = 0x800000 -} - -enum : DWORD { - FR_DOWN = 0x00000001, - FR_WHOLEWORD = 0x00000002, - FR_MATCHCASE = 0x00000004, - FR_FINDNEXT = 0x00000008, - FR_REPLACE = 0x00000010, - FR_REPLACEALL = 0x00000020, - FR_DIALOGTERM = 0x00000040, - FR_SHOWHELP = 0x00000080, - FR_ENABLEHOOK = 0x00000100, - FR_ENABLETEMPLATE = 0x00000200, - FR_NOUPDOWN = 0x00000400, - FR_NOMATCHCASE = 0x00000800, - FR_NOWHOLEWORD = 0x00001000, - FR_ENABLETEMPLATEHANDLE = 0x00002000, - FR_HIDEUPDOWN = 0x00004000, - FR_HIDEMATCHCASE = 0x00008000, - FR_HIDEWHOLEWORD = 0x00010000, - FR_MATCHDIAC = 0x20000000, - FR_MATCHKASHIDA = 0x40000000, - FR_MATCHALEFHAMZA = 0x80000000 -} - -enum : DWORD { - PD_ALLPAGES = 0, - PD_SELECTION = 0x000001, - PD_PAGENUMS = 0x000002, - PD_NOSELECTION = 0x000004, - PD_NOPAGENUMS = 0x000008, - PD_COLLATE = 0x000010, - PD_PRINTTOFILE = 0x000020, - PD_PRINTSETUP = 0x000040, - PD_NOWARNING = 0x000080, - PD_RETURNDC = 0x000100, - PD_RETURNIC = 0x000200, - PD_RETURNDEFAULT = 0x000400, - PD_SHOWHELP = 0x000800, - PD_ENABLEPRINTHOOK = 0x001000, - PD_ENABLESETUPHOOK = 0x002000, - PD_ENABLEPRINTTEMPLATE = 0x004000, - PD_ENABLESETUPTEMPLATE = 0x008000, - PD_ENABLEPRINTTEMPLATEHANDLE = 0x010000, - PD_ENABLESETUPTEMPLATEHANDLE = 0x020000, - PD_USEDEVMODECOPIES = 0x040000, - PD_USEDEVMODECOPIESANDCOLLATE = 0x040000, - PD_DISABLEPRINTTOFILE = 0x080000, - PD_HIDEPRINTTOFILE = 0x100000, - PD_NONETWORKBUTTON = 0x200000 -} - -static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - enum : DWORD { - PD_CURRENTPAGE = 0x00400000, - PD_NOCURRENTPAGE = 0x00800000, - PD_EXCLUSIONFLAGS = 0x01000000, - PD_USELARGETEMPLATE = 0x10000000, - } - - enum : HRESULT { - PD_RESULT_CANCEL, - PD_RESULT_PRINT, - PD_RESULT_APPLY - } - - const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; -} - -enum { - PSD_DEFAULTMINMARGINS = 0, - PSD_INWININIINTLMEASURE = 0, - PSD_MINMARGINS = 0x000001, - PSD_MARGINS = 0x000002, - PSD_INTHOUSANDTHSOFINCHES = 0x000004, - PSD_INHUNDREDTHSOFMILLIMETERS = 0x000008, - PSD_DISABLEMARGINS = 0x000010, - PSD_DISABLEPRINTER = 0x000020, - PSD_NOWARNING = 0x000080, - PSD_DISABLEORIENTATION = 0x000100, - PSD_DISABLEPAPER = 0x000200, - PSD_RETURNDEFAULT = 0x000400, - PSD_SHOWHELP = 0x000800, - PSD_ENABLEPAGESETUPHOOK = 0x002000, - PSD_ENABLEPAGESETUPTEMPLATE = 0x008000, - PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000, - PSD_ENABLEPAGEPAINTHOOK = 0x040000, - PSD_DISABLEPAGEPAINTING = 0x080000 -} - -enum : UINT { - WM_PSD_PAGESETUPDLG = WM_USER, - WM_PSD_FULLPAGERECT, - WM_PSD_MINMARGINRECT, - WM_PSD_MARGINRECT, - WM_PSD_GREEKTEXTRECT, - WM_PSD_ENVSTAMPRECT, - WM_PSD_YAFULLPAGERECT // = WM_USER + 6 -} - -enum : int { - CD_LBSELNOITEMS = -1, - CD_LBSELCHANGE, - CD_LBSELSUB, - CD_LBSELADD -} - -const WORD DN_DEFAULTPRN = 1; - -/+ -// Both MinGW and the windows docs indicate that there are macros for the send messages -// the controls. These seem to be totally unnecessary -- and at least one of MinGW or -// Windows Docs is buggy! - -int CommDlg_OpenSave_GetSpec(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam); -} - -int CommDlg_OpenSave_GetFilePath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam); -} - -int CommDlg_OpenSave_GetFolderPath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam); -} - -int CommDlg_OpenSave_GetFolderIDList(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam); -} - -void CommDlg_OpenSave_SetControlText(HWND hWndControl, LPARAM lparam, WPARAM wParam) { - return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam); -} - -void CommDlg_OpenSave_HideControl(HWND hWndControl, WPARAM wParam) { - return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0); -} - -void CommDlg_OpenSave_SetDefExt(HWND hWndControl, TCHAR* lparam) { - return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam); -} - -// These aliases seem even more unnecessary -alias CommDlg_OpenSave_GetSpec - CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW; -alias CommDlg_OpenSave_GetFilePath - CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW; -alias CommDlg_OpenSave_GetFolderPath - CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW; -+/ - -// Callbacks. -extern(Windows) { -alias UINT function (HWND, UINT, WPARAM, LPARAM) - LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, - LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; -} - -align (1): - -struct CHOOSECOLORA { - DWORD lStructSize = CHOOSECOLORA.sizeof; - HWND hwndOwner; - HWND hInstance; - COLORREF rgbResult; - COLORREF* lpCustColors; - DWORD Flags; - LPARAM lCustData; - LPCCHOOKPROC lpfnHook; - LPCSTR lpTemplateName; -} -alias CHOOSECOLORA* LPCHOOSECOLORA; - -struct CHOOSECOLORW { - DWORD lStructSize = CHOOSECOLORW.sizeof; - HWND hwndOwner; - HWND hInstance; - COLORREF rgbResult; - COLORREF* lpCustColors; - DWORD Flags; - LPARAM lCustData; - LPCCHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; -} -alias CHOOSECOLORW* LPCHOOSECOLORW; - -align (4) struct CHOOSEFONTA { - DWORD lStructSize = CHOOSEFONTA.sizeof; - 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* LPCHOOSEFONTA; - -align (4) struct CHOOSEFONTW { - DWORD lStructSize = CHOOSEFONTW.sizeof; - HWND hwndOwner; - HDC hDC; - LPLOGFONTW 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* LPCHOOSEFONTW; - -struct DEVNAMES { - WORD wDriverOffset; - WORD wDeviceOffset; - WORD wOutputOffset; - WORD wDefault; -} -alias DEVNAMES* LPDEVNAMES; - -struct FINDREPLACEA { - DWORD lStructSize = FINDREPLACEA.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - DWORD Flags; - LPSTR lpstrFindWhat; - LPSTR lpstrReplaceWith; - WORD wFindWhatLen; - WORD wReplaceWithLen; - LPARAM lCustData; - LPFRHOOKPROC lpfnHook; - LPCSTR lpTemplateName; -} -alias FINDREPLACEA* LPFINDREPLACEA; - -struct FINDREPLACEW { - DWORD lStructSize = FINDREPLACEW.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - DWORD Flags; - LPWSTR lpstrFindWhat; - LPWSTR lpstrReplaceWith; - WORD wFindWhatLen; - WORD wReplaceWithLen; - LPARAM lCustData; - LPFRHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; -} -alias FINDREPLACEW* LPFINDREPLACEW; - -struct OPENFILENAMEA { - DWORD lStructSize = OPENFILENAMEA.sizeof; - 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; - DWORD lCustData; - LPOFNHOOKPROC lpfnHook; - LPCSTR lpTemplateName; - - static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x0500) { - void *pvReserved; - DWORD dwReserved; - DWORD FlagsEx; - } -} -alias OPENFILENAMEA* LPOPENFILENAMEA; - -struct OPENFILENAMEW { - DWORD lStructSize = OPENFILENAMEW.sizeof; - 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; - DWORD lCustData; - LPOFNHOOKPROC lpfnHook; - LPCWSTR lpTemplateName; - - static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x0500) { - void *pvReserved; - DWORD dwReserved; - DWORD FlagsEx; - } -} -alias OPENFILENAMEW* LPOPENFILENAMEW; - -const size_t OPENFILENAME_SIZE_VERSION_400 = 76; - -struct OFNOTIFYA { - NMHDR hdr; - LPOPENFILENAMEA lpOFN; - LPSTR pszFile; -} -alias OFNOTIFYA* LPOFNOTIFYA; - -struct OFNOTIFYW { - NMHDR hdr; - LPOPENFILENAMEW lpOFN; - LPWSTR pszFile; -} -alias OFNOTIFYW* LPOFNOTIFYW; - -struct PAGESETUPDLGA { - DWORD lStructSize = PAGESETUPDLGA.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - DWORD Flags; - POINT ptPaperSize; - RECT rtMinMargin; - RECT rtMargin; - HINSTANCE hInstance; - LPARAM lCustData; - LPPAGESETUPHOOK lpfnPageSetupHook; - LPPAGEPAINTHOOK lpfnPagePaintHook; - LPCSTR lpPageSetupTemplateName; - HGLOBAL hPageSetupTemplate; -} -alias PAGESETUPDLGA* LPPAGESETUPDLGA; - -struct PAGESETUPDLGW { - DWORD lStructSize = PAGESETUPDLGW.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - DWORD Flags; - POINT ptPaperSize; - RECT rtMinMargin; - RECT rtMargin; - HINSTANCE hInstance; - LPARAM lCustData; - LPPAGESETUPHOOK lpfnPageSetupHook; - LPPAGEPAINTHOOK lpfnPagePaintHook; - LPCWSTR lpPageSetupTemplateName; - HGLOBAL hPageSetupTemplate; -} -alias PAGESETUPDLGW* LPPAGESETUPDLGW; - -struct PRINTDLGA { - DWORD lStructSize = PRINTDLGA.sizeof; - 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* LPPRINTDLGA; - -struct PRINTDLGW { - DWORD lStructSize = PRINTDLGW.sizeof; - 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* LPPRINTDLGW; - -static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - import win32.unknwn; // for LPUNKNOWN - import win32.prsht; // for HPROPSHEETPAGE - - struct PRINTPAGERANGE { - DWORD nFromPage; - DWORD nToPage; - } - alias PRINTPAGERANGE* LPPRINTPAGERANGE; - - struct PRINTDLGEXA { - DWORD lStructSize = PRINTDLGEXA.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - HDC hDC; - DWORD Flags; - DWORD Flags2; - DWORD ExclusionFlags; - DWORD nPageRanges; - DWORD nMaxPageRanges; - LPPRINTPAGERANGE lpPageRanges; - DWORD nMinPage; - DWORD nMaxPage; - DWORD nCopies; - HINSTANCE hInstance; - LPCSTR lpPrintTemplateName; - LPUNKNOWN lpCallback; - DWORD nPropertyPages; - HPROPSHEETPAGE* lphPropertyPages; - DWORD nStartPage; - DWORD dwResultAction; - } - alias PRINTDLGEXA* LPPRINTDLGEXA; - - struct PRINTDLGEXW { - DWORD lStructSize = PRINTDLGEXW.sizeof; - HWND hwndOwner; - HGLOBAL hDevMode; - HGLOBAL hDevNames; - HDC hDC; - DWORD Flags; - DWORD Flags2; - DWORD ExclusionFlags; - DWORD nPageRanges; - DWORD nMaxPageRanges; - LPPRINTPAGERANGE lpPageRanges; - DWORD nMinPage; - DWORD nMaxPage; - DWORD nCopies; - HINSTANCE hInstance; - LPCWSTR lpPrintTemplateName; - LPUNKNOWN lpCallback; - DWORD nPropertyPages; - HPROPSHEETPAGE* lphPropertyPages; - DWORD nStartPage; - DWORD dwResultAction; - } - alias PRINTDLGEXW* LPPRINTDLGEXW; - -} // _WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500 - -extern (Windows) { - BOOL ChooseColorA(LPCHOOSECOLORA); - BOOL ChooseColorW(LPCHOOSECOLORW); - BOOL ChooseFontA(LPCHOOSEFONTA); - BOOL ChooseFontW(LPCHOOSEFONTW); - DWORD CommDlgExtendedError(); - HWND FindTextA(LPFINDREPLACEA); - HWND FindTextW(LPFINDREPLACEW); - short GetFileTitleA(LPCSTR, LPSTR, WORD); - short GetFileTitleW(LPCWSTR, LPWSTR, WORD); - BOOL GetOpenFileNameA(LPOPENFILENAMEA); - BOOL GetOpenFileNameW(LPOPENFILENAMEW); - BOOL GetSaveFileNameA(LPOPENFILENAMEA); - BOOL GetSaveFileNameW(LPOPENFILENAMEW); - BOOL PageSetupDlgA(LPPAGESETUPDLGA); - BOOL PageSetupDlgW(LPPAGESETUPDLGW); - BOOL PrintDlgA(LPPRINTDLGA); - BOOL PrintDlgW(LPPRINTDLGW); - HWND ReplaceTextA(LPFINDREPLACEA); - HWND ReplaceTextW(LPFINDREPLACEW); - - static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - HRESULT PrintDlgExA(LPPRINTDLGEXA); - HRESULT PrintDlgExW(LPPRINTDLGEXW); - } -} - -version (Unicode) { - alias CHOOSECOLORW CHOOSECOLOR; - alias CHOOSEFONTW CHOOSEFONT; - alias FINDREPLACEW FINDREPLACE; - alias OPENFILENAMEW OPENFILENAME; - alias OFNOTIFYW OFNOTIFY; - alias PAGESETUPDLGW PAGESETUPDLG; - alias PRINTDLGW PRINTDLG; - - alias ChooseColorW ChooseColor; - alias ChooseFontW ChooseFont; - alias FindTextW FindText; - alias GetFileTitleW GetFileTitle; - alias GetOpenFileNameW GetOpenFileName; - alias GetSaveFileNameW GetSaveFileName; - alias PageSetupDlgW PageSetupDlg; - alias PrintDlgW PrintDlg; - alias ReplaceTextW ReplaceText; - - static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - alias PRINTDLGEXW PRINTDLGEX; - alias PrintDlgExW PrintDlgEx; - } - -} else { // UNICODE - - alias CHOOSECOLORA CHOOSECOLOR; - alias CHOOSEFONTA CHOOSEFONT; - alias FINDREPLACEA FINDREPLACE; - alias OPENFILENAMEA OPENFILENAME; - alias OFNOTIFYA OFNOTIFY; - alias PAGESETUPDLGA PAGESETUPDLG; - alias PRINTDLGA PRINTDLG; - - alias ChooseColorA ChooseColor; - alias ChooseFontA ChooseFont; - alias FindTextA FindText; - alias GetFileTitleA GetFileTitle; - alias GetOpenFileNameA GetOpenFileName; - alias GetSaveFileNameA GetSaveFileName; - alias PageSetupDlgA PageSetupDlg; - alias PrintDlgA PrintDlg; - alias ReplaceTextA ReplaceText; - - static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - alias PRINTDLGEXA PRINTDLGEX; - alias PrintDlgExA PrintDlgEx; - } - -} // UNICODE - -alias CHOOSECOLOR* LPCHOOSECOLOR; -alias CHOOSEFONT* LPCHOOSEFONT; -alias FINDREPLACE* LPFINDREPLACE; -alias OPENFILENAME* LPOPENFILENAME; -alias OFNOTIFY* LPOFNOTIFY; -alias PAGESETUPDLG* LPPAGESETUPDLG; -alias PRINTDLG* LPPRINTDLG; -static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - alias PRINTDLGEX* LPPRINTDLGEX; -} +/***********************************************************************\ +* commdlg.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.12 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.commdlg; +pragma(lib, "comdlg32"); + +private import win32.w32api; +import win32.windef, win32.winuser; +import win32.wingdi; // for LPLOGFONTA + +const TCHAR[] + LBSELCHSTRING = "commdlg_LBSelChangedNotify", + SHAREVISTRING = "commdlg_ShareViolation", + FILEOKSTRING = "commdlg_FileNameOK", + COLOROKSTRING = "commdlg_ColorOK", + SETRGBSTRING = "commdlg_SetRGBColor", + HELPMSGSTRING = "commdlg_help", + FINDMSGSTRING = "commdlg_FindReplace"; + +enum : UINT { + CDN_FIRST = -601, // also in commctrl.h + CDN_LAST = -699, + CDN_INITDONE = CDN_FIRST, + CDN_SELCHANGE = CDN_FIRST - 1, + CDN_FOLDERCHANGE = CDN_FIRST - 2, + CDN_SHAREVIOLATION = CDN_FIRST - 3, + CDN_HELP = CDN_FIRST - 4, + CDN_FILEOK = CDN_FIRST - 5, + CDN_TYPECHANGE = CDN_FIRST - 6, +} + +static if(_WIN32_WINNT >= 0x500) +{ + enum : UINT { + CDN_INCLUDEITEM = CDN_FIRST - 7, + } +} + +enum : UINT { + CDM_FIRST = WM_USER + 100, + CDM_LAST = WM_USER + 200, + CDM_GETSPEC = CDM_FIRST, + CDM_GETFILEPATH, + CDM_GETFOLDERPATH, + CDM_GETFOLDERIDLIST, + CDM_SETCONTROLTEXT, + CDM_HIDECONTROL, + CDM_SETDEFEXT // = CDM_FIRST + 6 +} + +// flags for ChooseColor +enum : DWORD { + CC_RGBINIT = 0x0001, + CC_FULLOPEN = 0x0002, + CC_PREVENTFULLOPEN = 0x0004, + CC_SHOWHELP = 0x0008, + CC_ENABLEHOOK = 0x0010, + CC_ENABLETEMPLATE = 0x0020, + CC_ENABLETEMPLATEHANDLE = 0x0040, + CC_SOLIDCOLOR = 0x0080, + CC_ANYCOLOR = 0x0100 +} + +// flags for ChooseFont +enum : DWORD { + CF_SCREENFONTS = 0x00000001, + CF_PRINTERFONTS = 0x00000002, + CF_BOTH = 0x00000003, + CF_SHOWHELP = 0x00000004, + CF_ENABLEHOOK = 0x00000008, + CF_ENABLETEMPLATE = 0x00000010, + CF_ENABLETEMPLATEHANDLE = 0x00000020, + CF_INITTOLOGFONTSTRUCT = 0x00000040, + CF_USESTYLE = 0x00000080, + CF_EFFECTS = 0x00000100, + CF_APPLY = 0x00000200, + CF_ANSIONLY = 0x00000400, + CF_SCRIPTSONLY = CF_ANSIONLY, + CF_NOVECTORFONTS = 0x00000800, + CF_NOOEMFONTS = 0x00000800, + CF_NOSIMULATIONS = 0x00001000, + CF_LIMITSIZE = 0x00002000, + CF_FIXEDPITCHONLY = 0x00004000, + CF_WYSIWYG = 0x00008000, + CF_FORCEFONTEXIST = 0x00010000, + CF_SCALABLEONLY = 0x00020000, + CF_TTONLY = 0x00040000, + CF_NOFACESEL = 0x00080000, + CF_NOSTYLESEL = 0x00100000, + CF_NOSIZESEL = 0x00200000, + CF_SELECTSCRIPT = 0x00400000, + CF_NOSCRIPTSEL = 0x00800000, + CF_NOVERTFONTS = 0x01000000 +} + +// Font type for ChooseFont +enum : WORD { + BOLD_FONTTYPE = 0x0100, + ITALIC_FONTTYPE = 0x0200, + REGULAR_FONTTYPE = 0x0400, + SCREEN_FONTTYPE = 0x2000, + PRINTER_FONTTYPE = 0x4000, + SIMULATED_FONTTYPE = 0x8000 +} + +enum : UINT { + WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1, + WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, + WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 +} + +// flags for OpenFileName +enum : DWORD { + OFN_SHAREWARN = 0, + OFN_SHARENOWARN = 0x000001, + OFN_READONLY = 0x000001, + OFN_SHAREFALLTHROUGH = 0x000002, + OFN_OVERWRITEPROMPT = 0x000002, + OFN_HIDEREADONLY = 0x000004, + OFN_NOCHANGEDIR = 0x000008, + OFN_SHOWHELP = 0x000010, + OFN_ENABLEHOOK = 0x000020, + OFN_ENABLETEMPLATE = 0x000040, + OFN_ENABLETEMPLATEHANDLE = 0x000080, + OFN_NOVALIDATE = 0x000100, + OFN_ALLOWMULTISELECT = 0x000200, + OFN_EXTENSIONDIFFERENT = 0x000400, + OFN_PATHMUSTEXIST = 0x000800, + OFN_FILEMUSTEXIST = 0x001000, + OFN_CREATEPROMPT = 0x002000, + OFN_SHAREAWARE = 0x004000, + OFN_NOREADONLYRETURN = 0x008000, + OFN_NOTESTFILECREATE = 0x010000, + OFN_NONETWORKBUTTON = 0x020000, + OFN_NOLONGNAMES = 0x040000, + OFN_EXPLORER = 0x080000, + OFN_NODEREFERENCELINKS = 0x100000, + OFN_LONGNAMES = 0x200000, + OFN_ENABLESIZING = 0x800000 +} + +enum : DWORD { + FR_DOWN = 0x00000001, + FR_WHOLEWORD = 0x00000002, + FR_MATCHCASE = 0x00000004, + FR_FINDNEXT = 0x00000008, + FR_REPLACE = 0x00000010, + FR_REPLACEALL = 0x00000020, + FR_DIALOGTERM = 0x00000040, + FR_SHOWHELP = 0x00000080, + FR_ENABLEHOOK = 0x00000100, + FR_ENABLETEMPLATE = 0x00000200, + FR_NOUPDOWN = 0x00000400, + FR_NOMATCHCASE = 0x00000800, + FR_NOWHOLEWORD = 0x00001000, + FR_ENABLETEMPLATEHANDLE = 0x00002000, + FR_HIDEUPDOWN = 0x00004000, + FR_HIDEMATCHCASE = 0x00008000, + FR_HIDEWHOLEWORD = 0x00010000, + FR_MATCHDIAC = 0x20000000, + FR_MATCHKASHIDA = 0x40000000, + FR_MATCHALEFHAMZA = 0x80000000 +} + +enum : DWORD { + PD_ALLPAGES = 0, + PD_SELECTION = 0x000001, + PD_PAGENUMS = 0x000002, + PD_NOSELECTION = 0x000004, + PD_NOPAGENUMS = 0x000008, + PD_COLLATE = 0x000010, + PD_PRINTTOFILE = 0x000020, + PD_PRINTSETUP = 0x000040, + PD_NOWARNING = 0x000080, + PD_RETURNDC = 0x000100, + PD_RETURNIC = 0x000200, + PD_RETURNDEFAULT = 0x000400, + PD_SHOWHELP = 0x000800, + PD_ENABLEPRINTHOOK = 0x001000, + PD_ENABLESETUPHOOK = 0x002000, + PD_ENABLEPRINTTEMPLATE = 0x004000, + PD_ENABLESETUPTEMPLATE = 0x008000, + PD_ENABLEPRINTTEMPLATEHANDLE = 0x010000, + PD_ENABLESETUPTEMPLATEHANDLE = 0x020000, + PD_USEDEVMODECOPIES = 0x040000, + PD_USEDEVMODECOPIESANDCOLLATE = 0x040000, + PD_DISABLEPRINTTOFILE = 0x080000, + PD_HIDEPRINTTOFILE = 0x100000, + PD_NONETWORKBUTTON = 0x200000 +} + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + PD_CURRENTPAGE = 0x00400000, + PD_NOCURRENTPAGE = 0x00800000, + PD_EXCLUSIONFLAGS = 0x01000000, + PD_USELARGETEMPLATE = 0x10000000, + } + + enum : HRESULT { + PD_RESULT_CANCEL, + PD_RESULT_PRINT, + PD_RESULT_APPLY + } + + const DWORD START_PAGE_GENERAL = 0xFFFFFFFF; +} + +enum { + PSD_DEFAULTMINMARGINS = 0, + PSD_INWININIINTLMEASURE = 0, + PSD_MINMARGINS = 0x000001, + PSD_MARGINS = 0x000002, + PSD_INTHOUSANDTHSOFINCHES = 0x000004, + PSD_INHUNDREDTHSOFMILLIMETERS = 0x000008, + PSD_DISABLEMARGINS = 0x000010, + PSD_DISABLEPRINTER = 0x000020, + PSD_NOWARNING = 0x000080, + PSD_DISABLEORIENTATION = 0x000100, + PSD_DISABLEPAPER = 0x000200, + PSD_RETURNDEFAULT = 0x000400, + PSD_SHOWHELP = 0x000800, + PSD_ENABLEPAGESETUPHOOK = 0x002000, + PSD_ENABLEPAGESETUPTEMPLATE = 0x008000, + PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000, + PSD_ENABLEPAGEPAINTHOOK = 0x040000, + PSD_DISABLEPAGEPAINTING = 0x080000 +} + +enum : UINT { + WM_PSD_PAGESETUPDLG = WM_USER, + WM_PSD_FULLPAGERECT, + WM_PSD_MINMARGINRECT, + WM_PSD_MARGINRECT, + WM_PSD_GREEKTEXTRECT, + WM_PSD_ENVSTAMPRECT, + WM_PSD_YAFULLPAGERECT // = WM_USER + 6 +} + +enum : int { + CD_LBSELNOITEMS = -1, + CD_LBSELCHANGE, + CD_LBSELSUB, + CD_LBSELADD +} + +const WORD DN_DEFAULTPRN = 1; + +/+ +// Both MinGW and the windows docs indicate that there are macros for the send messages +// the controls. These seem to be totally unnecessary -- and at least one of MinGW or +// Windows Docs is buggy! + +int CommDlg_OpenSave_GetSpec(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam); +} + +int CommDlg_OpenSave_GetFilePath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam); +} + +int CommDlg_OpenSave_GetFolderPath(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam); +} + +int CommDlg_OpenSave_GetFolderIDList(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam); +} + +void CommDlg_OpenSave_SetControlText(HWND hWndControl, LPARAM lparam, WPARAM wParam) { + return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam); +} + +void CommDlg_OpenSave_HideControl(HWND hWndControl, WPARAM wParam) { + return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0); +} + +void CommDlg_OpenSave_SetDefExt(HWND hWndControl, TCHAR* lparam) { + return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam); +} + +// These aliases seem even more unnecessary +alias CommDlg_OpenSave_GetSpec + CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW; +alias CommDlg_OpenSave_GetFilePath + CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW; +alias CommDlg_OpenSave_GetFolderPath + CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW; ++/ + +// Callbacks. +extern(Windows) { +alias UINT_PTR function (HWND, UINT, WPARAM, LPARAM) + LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, + LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; +} + +align (1): + +struct CHOOSECOLORA { + DWORD lStructSize = CHOOSECOLORA.sizeof; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias CHOOSECOLORA* LPCHOOSECOLORA; + +struct CHOOSECOLORW { + DWORD lStructSize = CHOOSECOLORW.sizeof; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF* lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias CHOOSECOLORW* LPCHOOSECOLORW; + +align (4) struct CHOOSEFONTA { + DWORD lStructSize = CHOOSEFONTA.sizeof; + 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* LPCHOOSEFONTA; + +align (4) struct CHOOSEFONTW { + DWORD lStructSize = CHOOSEFONTW.sizeof; + HWND hwndOwner; + HDC hDC; + LPLOGFONTW 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* LPCHOOSEFONTW; + +struct DEVNAMES { + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; +} +alias DEVNAMES* LPDEVNAMES; + +struct FINDREPLACEA { + DWORD lStructSize = FINDREPLACEA.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPSTR lpstrFindWhat; + LPSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias FINDREPLACEA* LPFINDREPLACEA; + +struct FINDREPLACEW { + DWORD lStructSize = FINDREPLACEW.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + DWORD Flags; + LPWSTR lpstrFindWhat; + LPWSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias FINDREPLACEW* LPFINDREPLACEW; + +struct OPENFILENAMEA { + DWORD lStructSize = OPENFILENAMEA.sizeof; + 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; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + + static if (_WIN32_WINNT >= 0x500) { + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + } +} +alias OPENFILENAMEA* LPOPENFILENAMEA; + +struct OPENFILENAMEW { + DWORD lStructSize = OPENFILENAMEW.sizeof; + 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; + DWORD lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + + static if (_WIN32_WINNT >= 0x500) { + void *pvReserved; + DWORD dwReserved; + DWORD FlagsEx; + } +} +alias OPENFILENAMEW* LPOPENFILENAMEW; + +const size_t OPENFILENAME_SIZE_VERSION_400 = 76; + +struct OFNOTIFYA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPSTR pszFile; +} +alias OFNOTIFYA* LPOFNOTIFYA; + +struct OFNOTIFYW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPWSTR pszFile; +} +alias OFNOTIFYW* LPOFNOTIFYW; + +struct PAGESETUPDLGA { + DWORD lStructSize = PAGESETUPDLGA.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; +} +alias PAGESETUPDLGA* LPPAGESETUPDLGA; + +struct PAGESETUPDLGW { + DWORD lStructSize = PAGESETUPDLGW.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + DWORD Flags; + POINT ptPaperSize; + RECT rtMinMargin; + RECT rtMargin; + HINSTANCE hInstance; + LPARAM lCustData; + LPPAGESETUPHOOK lpfnPageSetupHook; + LPPAGEPAINTHOOK lpfnPagePaintHook; + LPCWSTR lpPageSetupTemplateName; + HGLOBAL hPageSetupTemplate; +} +alias PAGESETUPDLGW* LPPAGESETUPDLGW; + +struct PRINTDLGA { + DWORD lStructSize = PRINTDLGA.sizeof; + 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* LPPRINTDLGA; + +struct PRINTDLGW { + DWORD lStructSize = PRINTDLGW.sizeof; + 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* LPPRINTDLGW; + +static if (_WIN32_WINNT >= 0x500) { + import win32.unknwn; // for LPUNKNOWN + import win32.prsht; // for HPROPSHEETPAGE + + struct PRINTPAGERANGE { + DWORD nFromPage; + DWORD nToPage; + } + alias PRINTPAGERANGE* LPPRINTPAGERANGE; + + struct PRINTDLGEXA { + DWORD lStructSize = PRINTDLGEXA.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE* lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } + alias PRINTDLGEXA* LPPRINTDLGEXA; + + struct PRINTDLGEXW { + DWORD lStructSize = PRINTDLGEXW.sizeof; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + DWORD Flags2; + DWORD ExclusionFlags; + DWORD nPageRanges; + DWORD nMaxPageRanges; + LPPRINTPAGERANGE lpPageRanges; + DWORD nMinPage; + DWORD nMaxPage; + DWORD nCopies; + HINSTANCE hInstance; + LPCWSTR lpPrintTemplateName; + LPUNKNOWN lpCallback; + DWORD nPropertyPages; + HPROPSHEETPAGE* lphPropertyPages; + DWORD nStartPage; + DWORD dwResultAction; + } + alias PRINTDLGEXW* LPPRINTDLGEXW; + +} // _WIN32_WINNT >= 0x500 + +extern (Windows) { + BOOL ChooseColorA(LPCHOOSECOLORA); + BOOL ChooseColorW(LPCHOOSECOLORW); + BOOL ChooseFontA(LPCHOOSEFONTA); + BOOL ChooseFontW(LPCHOOSEFONTW); + DWORD CommDlgExtendedError(); + HWND FindTextA(LPFINDREPLACEA); + HWND FindTextW(LPFINDREPLACEW); + short GetFileTitleA(LPCSTR, LPSTR, WORD); + short GetFileTitleW(LPCWSTR, LPWSTR, WORD); + BOOL GetOpenFileNameA(LPOPENFILENAMEA); + BOOL GetOpenFileNameW(LPOPENFILENAMEW); + BOOL GetSaveFileNameA(LPOPENFILENAMEA); + BOOL GetSaveFileNameW(LPOPENFILENAMEW); + BOOL PageSetupDlgA(LPPAGESETUPDLGA); + BOOL PageSetupDlgW(LPPAGESETUPDLGW); + BOOL PrintDlgA(LPPRINTDLGA); + BOOL PrintDlgW(LPPRINTDLGW); + HWND ReplaceTextA(LPFINDREPLACEA); + HWND ReplaceTextW(LPFINDREPLACEW); + + static if (_WIN32_WINNT >= 0x500) { + HRESULT PrintDlgExA(LPPRINTDLGEXA); + HRESULT PrintDlgExW(LPPRINTDLGEXW); + } +} + +version (Unicode) { + alias CHOOSECOLORW CHOOSECOLOR; + alias CHOOSEFONTW CHOOSEFONT; + alias FINDREPLACEW FINDREPLACE; + alias OPENFILENAMEW OPENFILENAME; + alias OFNOTIFYW OFNOTIFY; + alias PAGESETUPDLGW PAGESETUPDLG; + alias PRINTDLGW PRINTDLG; + + alias ChooseColorW ChooseColor; + alias ChooseFontW ChooseFont; + alias FindTextW FindText; + alias GetFileTitleW GetFileTitle; + alias GetOpenFileNameW GetOpenFileName; + alias GetSaveFileNameW GetSaveFileName; + alias PageSetupDlgW PageSetupDlg; + alias PrintDlgW PrintDlg; + alias ReplaceTextW ReplaceText; + + static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEXW PRINTDLGEX; + alias PrintDlgExW PrintDlgEx; + } + +} else { // UNICODE + + alias CHOOSECOLORA CHOOSECOLOR; + alias CHOOSEFONTA CHOOSEFONT; + alias FINDREPLACEA FINDREPLACE; + alias OPENFILENAMEA OPENFILENAME; + alias OFNOTIFYA OFNOTIFY; + alias PAGESETUPDLGA PAGESETUPDLG; + alias PRINTDLGA PRINTDLG; + + alias ChooseColorA ChooseColor; + alias ChooseFontA ChooseFont; + alias FindTextA FindText; + alias GetFileTitleA GetFileTitle; + alias GetOpenFileNameA GetOpenFileName; + alias GetSaveFileNameA GetSaveFileName; + alias PageSetupDlgA PageSetupDlg; + alias PrintDlgA PrintDlg; + alias ReplaceTextA ReplaceText; + + static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEXA PRINTDLGEX; + alias PrintDlgExA PrintDlgEx; + } + +} // UNICODE + +alias CHOOSECOLOR* LPCHOOSECOLOR; +alias CHOOSEFONT* LPCHOOSEFONT; +alias FINDREPLACE* LPFINDREPLACE; +alias OPENFILENAME* LPOPENFILENAME; +alias OFNOTIFY* LPOFNOTIFY; +alias PAGESETUPDLG* LPPAGESETUPDLG; +alias PRINTDLG* LPPRINTDLG; +static if (_WIN32_WINNT >= 0x500) { + alias PRINTDLGEX* LPPRINTDLGEX; +} Index: src/win32/core.d ================================================================== --- src/win32/core.d +++ src/win32/core.d @@ -1,45 +1,30 @@ -/***********************************************************************\ -* core.d * -* * -* Helper module for the Windows API * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.core; - -/** - The core Windows API functions. - - Importing this file is equivalent to the C code: - --- - #define WIN32_LEAN_AND_MEAN - #include "windows.h" - --- - -*/ - -public import win32.windef; -public import win32.winnt; -public import win32.wincon; -public import win32.winbase; -public import win32.wingdi; -public import win32.winuser; -public import win32.winnls; -public import win32.winver; -public import win32.winnetwk; - -// We can't use static if for imports, build gets confused. -// static if (_WIN32_WINNT_ONLY) import win32.winsvc; -version (WindowsVista) { - version = WIN32_WINNT_ONLY; -} else version (Windows2003) { - version = WIN32_WINNT_ONLY; -} else version (WindowsXP) { - version = WIN32_WINNT_ONLY; -} else version (WindowsNTonly) { - version = WIN32_WINNT_ONLY; -} - -version (WIN32_WINNT_ONLY) { - public import win32.winsvc; -} +/***********************************************************************\ +* core.d * +* * +* Helper module for the Windows API * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.core; + +/** + The core Windows API functions. + + Importing this file is equivalent to the C code: + --- + #define WIN32_LEAN_AND_MEAN + #include "windows.h" + --- + +*/ + +public import win32.windef; +public import win32.winnt; +public import win32.wincon; +public import win32.winbase; +public import win32.wingdi; +public import win32.winuser; +public import win32.winnls; +public import win32.winver; +public import win32.winnetwk; +public import win32.winsvc; Index: src/win32/cpl.d ================================================================== --- src/win32/cpl.d +++ src/win32/cpl.d @@ -1,77 +1,77 @@ -/***********************************************************************\ -* cpl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.cpl; - -private import win32.windef, win32.winuser; - -enum : uint { - WM_CPL_LAUNCH = WM_USER + 1000, - WM_CPL_LAUNCHED -} - -enum : uint { - CPL_DYNAMIC_RES, - CPL_INIT, - CPL_GETCOUNT, - CPL_INQUIRE, - CPL_SELECT, - CPL_DBLCLK, - CPL_STOP, - CPL_EXIT, - CPL_NEWINQUIRE, - CPL_STARTWPARMSA, - CPL_STARTWPARMSW, // = 10 - CPL_SETUP = 200 -} - -extern (Windows) alias LONG function(HWND, UINT, LONG, LONG) APPLET_PROC; - -struct CPLINFO { - int idIcon; - int idName; - int idInfo; - LONG lData; -} -alias CPLINFO* LPCPLINFO; - -struct NEWCPLINFOA { - DWORD dwSize = NEWCPLINFOA.sizeof; - DWORD dwFlags; - DWORD dwHelpContext; - LONG lData; - HICON hIcon; - CHAR[32] szName; - CHAR[64] szInfo; - CHAR[128] szHelpFile; -} -alias NEWCPLINFOA* LPNEWCPLINFOA; - -struct NEWCPLINFOW { - DWORD dwSize = NEWCPLINFOW.sizeof; - DWORD dwFlags; - DWORD dwHelpContext; - LONG lData; - HICON hIcon; - WCHAR[32] szName; - WCHAR[64] szInfo; - WCHAR[128] szHelpFile; -} -alias NEWCPLINFOW* LPNEWCPLINFOW; - -version (Unicode) { - alias CPL_STARTWPARMSW CPL_STARTWPARMS; - alias NEWCPLINFOW NEWCPLINFO; -} else { - alias CPL_STARTWPARMSA CPL_STARTWPARMS; - alias NEWCPLINFOA NEWCPLINFO; -} - -alias NEWCPLINFO* LPNEWCPLINFO; +/***********************************************************************\ +* cpl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.cpl; + +private import win32.windef, win32.winuser; + +enum : uint { + WM_CPL_LAUNCH = WM_USER + 1000, + WM_CPL_LAUNCHED +} + +enum : uint { + CPL_DYNAMIC_RES, + CPL_INIT, + CPL_GETCOUNT, + CPL_INQUIRE, + CPL_SELECT, + CPL_DBLCLK, + CPL_STOP, + CPL_EXIT, + CPL_NEWINQUIRE, + CPL_STARTWPARMSA, + CPL_STARTWPARMSW, // = 10 + CPL_SETUP = 200 +} + +extern (Windows) alias LONG function(HWND, UINT, LONG, LONG) APPLET_PROC; + +struct CPLINFO { + int idIcon; + int idName; + int idInfo; + LONG lData; +} +alias CPLINFO* LPCPLINFO; + +struct NEWCPLINFOA { + DWORD dwSize = NEWCPLINFOA.sizeof; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + CHAR[32] szName; + CHAR[64] szInfo; + CHAR[128] szHelpFile; +} +alias NEWCPLINFOA* LPNEWCPLINFOA; + +struct NEWCPLINFOW { + DWORD dwSize = NEWCPLINFOW.sizeof; + DWORD dwFlags; + DWORD dwHelpContext; + LONG lData; + HICON hIcon; + WCHAR[32] szName; + WCHAR[64] szInfo; + WCHAR[128] szHelpFile; +} +alias NEWCPLINFOW* LPNEWCPLINFOW; + +version (Unicode) { + alias CPL_STARTWPARMSW CPL_STARTWPARMS; + alias NEWCPLINFOW NEWCPLINFO; +} else { + alias CPL_STARTWPARMSA CPL_STARTWPARMS; + alias NEWCPLINFOA NEWCPLINFO; +} + +alias NEWCPLINFO* LPNEWCPLINFO; Index: src/win32/cplext.d ================================================================== --- src/win32/cplext.d +++ src/win32/cplext.d @@ -1,19 +1,19 @@ -/***********************************************************************\ -* cplext.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.cplext; - -enum : uint { - CPLPAGE_MOUSE_BUTTONS = 1, - CPLPAGE_MOUSE_PTRMOTION = 2, - CPLPAGE_MOUSE_WHEEL = 3, - CPLPAGE_KEYBOARD_SPEED = 1, - CPLPAGE_DISPLAY_BACKGROUND = 1 -} +/***********************************************************************\ +* cplext.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.cplext; + +enum : uint { + CPLPAGE_MOUSE_BUTTONS = 1, + CPLPAGE_MOUSE_PTRMOTION = 2, + CPLPAGE_MOUSE_WHEEL = 3, + CPLPAGE_KEYBOARD_SPEED = 1, + CPLPAGE_DISPLAY_BACKGROUND = 1 +} Index: src/win32/custcntl.d ================================================================== --- src/win32/custcntl.d +++ src/win32/custcntl.d @@ -1,122 +1,122 @@ -/***********************************************************************\ -* custcntl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.custcntl; - -private import win32.windef; - -// FIXME: check type -const CCF_NOTEXT = 1; - -const size_t - CCHCCCLASS = 32, - CCHCCDESC = 32, - CCHCCTEXT = 256; - -struct CCSTYLEA { - DWORD flStyle; - DWORD flExtStyle; - CHAR[CCHCCTEXT] szText; - LANGID lgid; - WORD wReserved1; -} -alias CCSTYLEA* LPCCSTYLEA; - -struct CCSTYLEW { - DWORD flStyle; - DWORD flExtStyle; - WCHAR[CCHCCTEXT] szText; - LANGID lgid; - WORD wReserved1; -} -alias CCSTYLEW* LPCCSTYLEW; - -struct CCSTYLEFLAGA { - DWORD flStyle; - DWORD flStyleMask; - LPSTR pszStyle; -} -alias CCSTYLEFLAGA* LPCCSTYLEFLAGA; - -struct CCSTYLEFLAGW { - DWORD flStyle; - DWORD flStyleMask; - LPWSTR pszStyle; -} -alias CCSTYLEFLAGW* LPCCSTYLEFLAGW; - -struct CCINFOA { - CHAR[CCHCCCLASS] szClass; - DWORD flOptions; - CHAR[CCHCCDESC] szDesc; - UINT cxDefault; - UINT cyDefault; - DWORD flStyleDefault; - DWORD flExtStyleDefault; - DWORD flCtrlTypeMask; - CHAR[CCHCCTEXT] szTextDefault; - INT cStyleFlags; - LPCCSTYLEFLAGA aStyleFlags; - LPFNCCSTYLEA lpfnStyle; - LPFNCCSIZETOTEXTA lpfnSizeToText; - DWORD dwReserved1; - DWORD dwReserved2; -} -alias CCINFOA* LPCCINFOA; - -struct CCINFOW { - WCHAR[CCHCCCLASS] szClass; - DWORD flOptions; - WCHAR[CCHCCDESC] szDesc; - UINT cxDefault; - UINT cyDefault; - DWORD flStyleDefault; - DWORD flExtStyleDefault; - DWORD flCtrlTypeMask; - WCHAR[CCHCCTEXT] szTextDefault; - INT cStyleFlags; - LPCCSTYLEFLAGW aStyleFlags; - LPFNCCSTYLEW lpfnStyle; - LPFNCCSIZETOTEXTW lpfnSizeToText; - DWORD dwReserved1; - DWORD dwReserved2; -} -alias CCINFOW* LPCCINFOW; - -extern (Windows) { - alias BOOL function(HWND, LPCCSTYLEA) LPFNCCSTYLEA; - alias BOOL function(HWND, LPCCSTYLEW) LPFNCCSTYLEW; - alias INT function(DWORD, DWORD, HFONT, LPSTR) LPFNCCSIZETOTEXTA; - alias INT function(DWORD, DWORD, HFONT, LPWSTR) LPFNCCSIZETOTEXTW; - alias UINT function(LPCCINFOA) LPFNCCINFOA; - alias UINT function(LPCCINFOW) LPFNCCINFOW; - UINT CustomControlInfoA(LPCCINFOA acci); - UINT CustomControlInfoW(LPCCINFOW acci); -} - -version (Unicode) { - alias CCSTYLEW CCSTYLE; - alias CCSTYLEFLAGW CCSTYLEFLAG; - alias CCINFOW CCINFO; - alias LPFNCCSTYLEW LPFNCCSTYLE; - alias LPFNCCSIZETOTEXTW LPFNCCSIZETOTEXT; - alias LPFNCCINFOW LPFNCCINFO; -} else { - alias CCSTYLEA CCSTYLE; - alias CCSTYLEFLAGA CCSTYLEFLAG; - alias CCINFOA CCINFO; - alias LPFNCCSTYLEA LPFNCCSTYLE; - alias LPFNCCSIZETOTEXTA LPFNCCSIZETOTEXT; - alias LPFNCCINFOA LPFNCCINFO; -} - -alias CCSTYLE* LPCCSTYLE; -alias CCSTYLEFLAG* LPCCSTYLEFLAG; -alias CCINFO* LPCCINFO; +/***********************************************************************\ +* custcntl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.custcntl; + +private import win32.windef; + +// FIXME: check type +const CCF_NOTEXT = 1; + +const size_t + CCHCCCLASS = 32, + CCHCCDESC = 32, + CCHCCTEXT = 256; + +struct CCSTYLEA { + DWORD flStyle; + DWORD flExtStyle; + CHAR[CCHCCTEXT] szText; + LANGID lgid; + WORD wReserved1; +} +alias CCSTYLEA* LPCCSTYLEA; + +struct CCSTYLEW { + DWORD flStyle; + DWORD flExtStyle; + WCHAR[CCHCCTEXT] szText; + LANGID lgid; + WORD wReserved1; +} +alias CCSTYLEW* LPCCSTYLEW; + +struct CCSTYLEFLAGA { + DWORD flStyle; + DWORD flStyleMask; + LPSTR pszStyle; +} +alias CCSTYLEFLAGA* LPCCSTYLEFLAGA; + +struct CCSTYLEFLAGW { + DWORD flStyle; + DWORD flStyleMask; + LPWSTR pszStyle; +} +alias CCSTYLEFLAGW* LPCCSTYLEFLAGW; + +struct CCINFOA { + CHAR[CCHCCCLASS] szClass; + DWORD flOptions; + CHAR[CCHCCDESC] szDesc; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + CHAR[CCHCCTEXT] szTextDefault; + INT cStyleFlags; + LPCCSTYLEFLAGA aStyleFlags; + LPFNCCSTYLEA lpfnStyle; + LPFNCCSIZETOTEXTA lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias CCINFOA* LPCCINFOA; + +struct CCINFOW { + WCHAR[CCHCCCLASS] szClass; + DWORD flOptions; + WCHAR[CCHCCDESC] szDesc; + UINT cxDefault; + UINT cyDefault; + DWORD flStyleDefault; + DWORD flExtStyleDefault; + DWORD flCtrlTypeMask; + WCHAR[CCHCCTEXT] szTextDefault; + INT cStyleFlags; + LPCCSTYLEFLAGW aStyleFlags; + LPFNCCSTYLEW lpfnStyle; + LPFNCCSIZETOTEXTW lpfnSizeToText; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias CCINFOW* LPCCINFOW; + +extern (Windows) { + alias BOOL function(HWND, LPCCSTYLEA) LPFNCCSTYLEA; + alias BOOL function(HWND, LPCCSTYLEW) LPFNCCSTYLEW; + alias INT function(DWORD, DWORD, HFONT, LPSTR) LPFNCCSIZETOTEXTA; + alias INT function(DWORD, DWORD, HFONT, LPWSTR) LPFNCCSIZETOTEXTW; + alias UINT function(LPCCINFOA) LPFNCCINFOA; + alias UINT function(LPCCINFOW) LPFNCCINFOW; + UINT CustomControlInfoA(LPCCINFOA acci); + UINT CustomControlInfoW(LPCCINFOW acci); +} + +version (Unicode) { + alias CCSTYLEW CCSTYLE; + alias CCSTYLEFLAGW CCSTYLEFLAG; + alias CCINFOW CCINFO; + alias LPFNCCSTYLEW LPFNCCSTYLE; + alias LPFNCCSIZETOTEXTW LPFNCCSIZETOTEXT; + alias LPFNCCINFOW LPFNCCINFO; +} else { + alias CCSTYLEA CCSTYLE; + alias CCSTYLEFLAGA CCSTYLEFLAG; + alias CCINFOA CCINFO; + alias LPFNCCSTYLEA LPFNCCSTYLE; + alias LPFNCCSIZETOTEXTA LPFNCCSIZETOTEXT; + alias LPFNCCINFOA LPFNCCINFO; +} + +alias CCSTYLE* LPCCSTYLE; +alias CCSTYLEFLAG* LPCCSTYLEFLAG; +alias CCINFO* LPCCINFO; Index: src/win32/dbt.d ================================================================== --- src/win32/dbt.d +++ src/win32/dbt.d @@ -1,194 +1,189 @@ -/***********************************************************************\ -* dbt.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Vladimir Vlasov * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.dbt; - -import win32.w32api, win32.windef; -import win32.basetyps; // for GUID - -// FIXME: clean up Windows version support - -enum : DWORD { - DBT_NO_DISK_SPACE = 0x47, - DBT_CONFIGMGPRIVATE = 0x7FFF, - DBT_DEVICEARRIVAL = 0x8000, - DBT_DEVICEQUERYREMOVE = 0x8001, - DBT_DEVICEQUERYREMOVEFAILED = 0x8002, - DBT_DEVICEREMOVEPENDING = 0x8003, - DBT_DEVICEREMOVECOMPLETE = 0x8004, - DBT_DEVICETYPESPECIFIC = 0x8005, - DBT_DEVTYP_OEM = 0, - DBT_DEVTYP_DEVNODE = 1, - DBT_DEVTYP_VOLUME = 2, - DBT_DEVTYP_PORT = 3, - DBT_DEVTYP_NET = 4 -} - -static if (_WIN32_WINDOWS >= 0x040A) { - enum : DWORD { - DBT_DEVTYP_DEVICEINTERFACE = 5, - DBT_DEVTYP_HANDLE = 6 - } -} - -enum : DWORD { - DBT_APPYBEGIN, - DBT_APPYEND, - DBT_DEVNODES_CHANGED = 7, - DBT_QUERYCHANGECONFIG = 0x17, - DBT_CONFIGCHANGED = 0x18, - DBT_CONFIGCHANGECANCELED = 0x19, - DBT_MONITORCHANGE = 0x1B, - DBT_SHELLLOGGEDON = 32, - DBT_CONFIGMGAPI32 = 34, - DBT_VXDINITCOMPLETE = 35, - DBT_VOLLOCKQUERYLOCK = 0x8041, - DBT_VOLLOCKLOCKTAKEN = 0x8042, - DBT_VOLLOCKLOCKFAILED = 0x8043, - DBT_VOLLOCKQUERYUNLOCK = 0x8044, - DBT_VOLLOCKLOCKRELEASED = 0x8045, - DBT_VOLLOCKUNLOCKFAILED = 0x8046, - DBT_USERDEFINED = 0xFFFF -} - -enum : WORD { - DBTF_MEDIA = 1, - DBTF_NET = 2 -} - -enum : DWORD { - BSM_ALLCOMPONENTS = 0, - BSM_APPLICATIONS = 8, - BSM_ALLDESKTOPS = 16, - BSM_INSTALLABLEDRIVERS = 4, - BSM_NETDRIVER = 2, - BSM_VXDS = 1, - BSF_FLUSHDISK = 0x00000004, - BSF_FORCEIFHUNG = 0x00000020, - BSF_IGNORECURRENTTASK = 0x00000002, - BSF_NOHANG = 0x00000008, - BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, - BSF_POSTMESSAGE = 0x00000010, - BSF_QUERY = 0x00000001, - BSF_MSGSRV32ISOK_BIT = 31, - BSF_MSGSRV32ISOK = 0x80000000 -} - -static if (_WIN32_WINNT >= 0x0500) { - enum : DWORD { - BSF_ALLOWSFW = 0x00000080, - BSF_SENDNOTIFYMESSAGE = 0x00000100 - } -} - -static if (_WIN32_WINNT >= 0x0501) { - enum : DWORD { - BSF_LUID = 0x00000400, - BSF_RETURNHDESK = 0x00000200 - } -} - -struct DEV_BROADCAST_HDR { - DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; - DWORD dbch_devicetype; - DWORD dbch_reserved; -} -alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR; - -struct DEV_BROADCAST_OEM { - DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; - DWORD dbco_devicetype; - DWORD dbco_reserved; - DWORD dbco_identifier; - DWORD dbco_suppfunc; -} -alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM; - -struct DEV_BROADCAST_PORT_A { - DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; - DWORD dbcp_devicetype; - DWORD dbcp_reserved; - char _dbcp_name; - char* dbcp_name() { return &_dbcp_name; } -} -alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; - -struct DEV_BROADCAST_PORT_W { - DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; - DWORD dbcp_devicetype; - DWORD dbcp_reserved; - WCHAR _dbcp_name; - WCHAR* dbcp_name() { return &_dbcp_name; } -} -alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; - -struct DEV_BROADCAST_USERDEFINED { - DEV_BROADCAST_HDR dbud_dbh; - char _dbud_szName; - char* dbud_szName() { return &_dbud_szName; } -} - -struct DEV_BROADCAST_VOLUME { - DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; - DWORD dbcv_devicetype; - DWORD dbcv_reserved; - DWORD dbcv_unitmask; - WORD dbcv_flags; -} -alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME; - -version (Unicode) { - alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; -} else { - alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; -} -alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; - -static if ((_WIN32_WINDOWS >= 0x0410) || (_WIN32_WINNT >= 0x0500)) { - struct DEV_BROADCAST_DEVICEINTERFACE_A { - DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; - DWORD dbcc_devicetype; - DWORD dbcc_reserved; - GUID dbcc_classguid; - char _dbcc_name; - char* dbcc_name() { return &_dbcc_name; } - } - alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; - - struct DEV_BROADCAST_DEVICEINTERFACE_W { - DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; - DWORD dbcc_devicetype; - DWORD dbcc_reserved; - GUID dbcc_classguid; - WCHAR _dbcc_name; - WCHAR* dbcc_name() { return &_dbcc_name; } - } - alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; - - version (Unicode) { - alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; - } else { - alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; - } - alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; - - struct DEV_BROADCAST_HANDLE { - DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; - DWORD dbch_devicetype; - DWORD dbch_reserved; - HANDLE dbch_handle; - DWORD dbch_hdevnotify; - GUID dbch_eventguid; - LONG dbch_nameoffset; - BYTE _dbch_data; - BYTE* dbch_data() { return &_dbch_data; } - } - alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; -} +/***********************************************************************\ +* dbt.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Vladimir Vlasov * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.dbt; + +import win32.w32api, win32.windef; +import win32.basetyps; // for GUID + +// FIXME: clean up Windows version support + +enum : DWORD { + DBT_NO_DISK_SPACE = 0x47, + DBT_CONFIGMGPRIVATE = 0x7FFF, + DBT_DEVICEARRIVAL = 0x8000, + DBT_DEVICEQUERYREMOVE = 0x8001, + DBT_DEVICEQUERYREMOVEFAILED = 0x8002, + DBT_DEVICEREMOVEPENDING = 0x8003, + DBT_DEVICEREMOVECOMPLETE = 0x8004, + DBT_DEVICETYPESPECIFIC = 0x8005, + DBT_DEVTYP_OEM = 0, + DBT_DEVTYP_DEVNODE, + DBT_DEVTYP_VOLUME, + DBT_DEVTYP_PORT, + DBT_DEVTYP_NET, + DBT_DEVTYP_DEVICEINTERFACE, + DBT_DEVTYP_HANDLE // = 6 +} + +enum : DWORD { + DBT_APPYBEGIN, + DBT_APPYEND, + DBT_DEVNODES_CHANGED = 7, + DBT_QUERYCHANGECONFIG = 0x17, + DBT_CONFIGCHANGED = 0x18, + DBT_CONFIGCHANGECANCELED = 0x19, + DBT_MONITORCHANGE = 0x1B, + DBT_SHELLLOGGEDON = 32, + DBT_CONFIGMGAPI32 = 34, + DBT_VXDINITCOMPLETE = 35, + DBT_VOLLOCKQUERYLOCK = 0x8041, + DBT_VOLLOCKLOCKTAKEN = 0x8042, + DBT_VOLLOCKLOCKFAILED = 0x8043, + DBT_VOLLOCKQUERYUNLOCK = 0x8044, + DBT_VOLLOCKLOCKRELEASED = 0x8045, + DBT_VOLLOCKUNLOCKFAILED = 0x8046, + DBT_USERDEFINED = 0xFFFF +} + +enum : WORD { + DBTF_MEDIA = 1, + DBTF_NET = 2 +} + +enum : DWORD { + BSM_ALLCOMPONENTS = 0, + BSM_APPLICATIONS = 8, + BSM_ALLDESKTOPS = 16, + BSM_INSTALLABLEDRIVERS = 4, + BSM_NETDRIVER = 2, + BSM_VXDS = 1, + BSF_FLUSHDISK = 0x00000004, + BSF_FORCEIFHUNG = 0x00000020, + BSF_IGNORECURRENTTASK = 0x00000002, + BSF_NOHANG = 0x00000008, + BSF_NOTIMEOUTIFNOTHUNG = 0x00000040, + BSF_POSTMESSAGE = 0x00000010, + BSF_QUERY = 0x00000001, + BSF_MSGSRV32ISOK_BIT = 31, + BSF_MSGSRV32ISOK = 0x80000000 +} + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + BSF_ALLOWSFW = 0x00000080, + BSF_SENDNOTIFYMESSAGE = 0x00000100 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum : DWORD { + BSF_LUID = 0x00000400, + BSF_RETURNHDESK = 0x00000200 + } +} + +struct DEV_BROADCAST_HDR { + DWORD dbch_size = DEV_BROADCAST_HDR.sizeof; + DWORD dbch_devicetype; + DWORD dbch_reserved; +} +alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR; + +struct DEV_BROADCAST_OEM { + DWORD dbco_size = DEV_BROADCAST_OEM.sizeof; + DWORD dbco_devicetype; + DWORD dbco_reserved; + DWORD dbco_identifier; + DWORD dbco_suppfunc; +} +alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM; + +struct DEV_BROADCAST_PORT_A { + DWORD dbcp_size = DEV_BROADCAST_PORT_A.sizeof; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + char _dbcp_name; + char* dbcp_name() { return &_dbcp_name; } +} +alias DEV_BROADCAST_PORT_A* PDEV_BROADCAST_PORT_A; + +struct DEV_BROADCAST_PORT_W { + DWORD dbcp_size = DEV_BROADCAST_PORT_W.sizeof; + DWORD dbcp_devicetype; + DWORD dbcp_reserved; + WCHAR _dbcp_name; + WCHAR* dbcp_name() { return &_dbcp_name; } +} +alias DEV_BROADCAST_PORT_W* PDEV_BROADCAST_PORT_W; + +struct DEV_BROADCAST_USERDEFINED { + DEV_BROADCAST_HDR dbud_dbh; + char _dbud_szName; + char* dbud_szName() { return &_dbud_szName; } +} + +struct DEV_BROADCAST_VOLUME { + DWORD dbcv_size = DEV_BROADCAST_VOLUME.sizeof; + DWORD dbcv_devicetype; + DWORD dbcv_reserved; + DWORD dbcv_unitmask; + WORD dbcv_flags; +} +alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME; + +version (Unicode) { + alias DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT; +} else { + alias DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT; +} +alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT; + +static if (_WIN32_WINNT >= 0x500) { + struct DEV_BROADCAST_DEVICEINTERFACE_A { + DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_A.sizeof; + DWORD dbcc_devicetype; + DWORD dbcc_reserved; + GUID dbcc_classguid; + char _dbcc_name; + char* dbcc_name() { return &_dbcc_name; } + } + alias DEV_BROADCAST_DEVICEINTERFACE_A* PDEV_BROADCAST_DEVICEINTERFACE_A; + + struct DEV_BROADCAST_DEVICEINTERFACE_W { + DWORD dbcc_size = DEV_BROADCAST_DEVICEINTERFACE_W.sizeof; + DWORD dbcc_devicetype; + DWORD dbcc_reserved; + GUID dbcc_classguid; + WCHAR _dbcc_name; + WCHAR* dbcc_name() { return &_dbcc_name; } + } + alias DEV_BROADCAST_DEVICEINTERFACE_W* PDEV_BROADCAST_DEVICEINTERFACE_W; + + version (Unicode) { + alias DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE; + } else { + alias DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE; + } + alias DEV_BROADCAST_DEVICEINTERFACE* PDEV_BROADCAST_DEVICEINTERFACE; + + struct DEV_BROADCAST_HANDLE { + DWORD dbch_size = DEV_BROADCAST_HANDLE.sizeof; + DWORD dbch_devicetype; + DWORD dbch_reserved; + HANDLE dbch_handle; + DWORD dbch_hdevnotify; + GUID dbch_eventguid; + LONG dbch_nameoffset; + BYTE _dbch_data; + BYTE* dbch_data() { return &_dbch_data; } + } + alias DEV_BROADCAST_HANDLE* PDEV_BROADCAST_HANDLE; +} Index: src/win32/dde.d ================================================================== --- src/win32/dde.d +++ src/win32/dde.d @@ -1,215 +1,215 @@ -/***********************************************************************\ -* dde.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.dde; -pragma(lib, "user32.lib"); - -private import win32.windef; - -enum : uint { - WM_DDE_FIRST = 0x03E0, - WM_DDE_INITIATE = WM_DDE_FIRST, - WM_DDE_TERMINATE, - WM_DDE_ADVISE, - WM_DDE_UNADVISE, - WM_DDE_ACK, - WM_DDE_DATA, - WM_DDE_REQUEST, - WM_DDE_POKE, - WM_DDE_EXECUTE, - WM_DDE_LAST = WM_DDE_EXECUTE -} - -struct DDEACK { - ubyte bAppReturnCode; - ubyte _bf; - - ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } - bool fBusy() { return cast(bool) (_bf & 0x40); } - bool fAck() { return cast(bool) (_bf & 0x80); } - - ubyte reserved(ubyte r) { - _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); - return cast(ubyte)(r & 0x3F); - } - - bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } - bool fAck(bool f) { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } -} - -struct DDEADVISE { - ushort _bf; - short cfFormat; - - ushort reserved() { return cast(ushort) (_bf & 0x3FFF); } - bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } - bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - ushort reserved(ushort r) { - _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); - return cast(ushort)(r & 0x3FFF); - } - - bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } -} - -struct DDEDATA { - ushort _bf; - short cfFormat; - byte _Value; - - ushort unused() { return cast(ushort) (_bf & 0x0FFF); } - bool fResponse() { return cast(bool) (_bf & 0x1000); } - bool fRelease() { return cast(bool) (_bf & 0x2000); } - bool reserved() { return cast(bool) (_bf & 0x4000); } - bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - byte* Value() { return &_Value; } - - ushort unused(ushort r) { - _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); - return cast(ushort)(r & 0x0FFF); - } - - bool fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } - bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - bool reserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } -} - -struct DDEPOKE { - ushort _bf; - short cfFormat; - byte _Value; - - ushort unused() { return cast(ushort) (_bf & 0x1FFF); } - bool fRelease() { return cast(bool) (_bf & 0x2000); } - ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } - - byte* Value() { return &_Value; } - - ushort unused(ushort u) { - _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); - return cast(ushort)(u & 0x1FFF); - } - - bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - ubyte fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } -} - -deprecated struct DDELN { - ushort _bf; - short cfFormat; - - ushort unused() { return cast(ushort) (_bf & 0x1FFF); } - bool fRelease() { return cast(bool) (_bf & 0x2000); } - bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } - bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - ushort unused(ushort u) { - _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); - return cast(ushort)(u & 0x1FFF); - } - - bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } -} - -deprecated struct DDEUP { - ushort _bf; - short cfFormat; - byte _rgb; - - ushort unused() { return cast(ushort) (_bf & 0x0FFF); } - bool fAck() { return cast(bool) (_bf & 0x1000); } - bool fRelease() { return cast(bool) (_bf & 0x2000); } - bool fReserved() { return cast(bool) (_bf & 0x4000); } - bool fAckReq() { return cast(bool) (_bf & 0x8000); } - - byte* rgb() { return &_rgb; } - - ushort unused(ushort r) { - _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); - return cast(ushort)(r & 0x0FFF); - } - - bool fAck(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } - bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } - bool fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } - bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } -} - -extern (Windows) { - BOOL DdeSetQualityOfService(HWND, CPtr!(SECURITY_QUALITY_OF_SERVICE), - PSECURITY_QUALITY_OF_SERVICE); - BOOL ImpersonateDdeClientWindow(HWND, HWND); - LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR); - BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR); - BOOL FreeDDElParam(UINT, LPARAM); - LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR); -} - -debug (WindowsUnitTest) { - unittest { - DDEACK ddeack; - - with (ddeack) { - reserved = 10; - assert (_bf == 0x0A); - fBusy = true; - assert (_bf == 0x4A); - fAck = true; - assert (_bf == 0xCA); - - assert (reserved == 10); - assert (fBusy == true); - assert (fAck == true); - - reserved = 43; - assert (_bf == 0xEB); - fBusy = false; - assert (_bf == 0xAB); - fAck = false; - assert (_bf == 0x2B); - - assert (reserved == 43); - assert (fBusy == false); - assert (fAck == false); - } - - DDEPOKE ddepoke; - - with (ddepoke) { - unused = 3456; - assert (_bf == 0x0D80); - fRelease = true; - assert (_bf == 0x2D80); - fReserved = 2; - assert (_bf == 0xAD80); - - assert (unused == 3456); - assert (fRelease == true); - assert (fReserved == 2); - - unused = 2109; - assert (_bf == 0xa83d); - fRelease = false; - assert (_bf == 0x883d); - fReserved = 1; - assert (_bf == 0x483d); - - assert (unused == 2109); - assert (fRelease == false); - assert (fReserved == 1); - } - } -} +/***********************************************************************\ +* dde.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.dde; +pragma(lib, "user32"); + +private import win32.windef; + +enum : uint { + WM_DDE_FIRST = 0x03E0, + WM_DDE_INITIATE = WM_DDE_FIRST, + WM_DDE_TERMINATE, + WM_DDE_ADVISE, + WM_DDE_UNADVISE, + WM_DDE_ACK, + WM_DDE_DATA, + WM_DDE_REQUEST, + WM_DDE_POKE, + WM_DDE_EXECUTE, + WM_DDE_LAST = WM_DDE_EXECUTE +} + +struct DDEACK { + ubyte bAppReturnCode; + ubyte _bf; + + @property ubyte reserved() { return cast(ubyte) (_bf & 0x3F); } + @property bool fBusy() { return cast(bool) (_bf & 0x40); } + @property bool fAck() { return cast(bool) (_bf & 0x80); } + + @property ubyte reserved(ubyte r) { + _bf = cast(ubyte) ((_bf & ~0x3F) | (r & 0x3F)); + return cast(ubyte)(r & 0x3F); + } + + @property bool fBusy(bool f) { _bf = cast(ubyte) ((_bf & ~0x40) | (f << 6)); return f; } + @property bool fAck(bool f) { _bf = cast(ubyte) ((_bf & ~0x80) | (f << 7)); return f; } +} + +struct DDEADVISE { + ushort _bf; + short cfFormat; + + @property ushort reserved() { return cast(ushort) (_bf & 0x3FFF); } + @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property ushort reserved(ushort r) { + _bf = cast(ushort) ((_bf & ~0x3FFF) | (r & 0x3FFF)); + return cast(ushort)(r & 0x3FFF); + } + + @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +struct DDEDATA { + ushort _bf; + short cfFormat; + byte _Value; + + @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } + @property bool fResponse() { return cast(bool) (_bf & 0x1000); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool reserved() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property byte* Value() { return &_Value; } + + @property ushort unused(ushort r) { + _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); + return cast(ushort)(r & 0x0FFF); + } + + @property bool fResponse(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool reserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +struct DDEPOKE { + ushort _bf; + short cfFormat; + byte _Value; + + @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property ubyte fReserved() { return cast(ubyte) ((_bf & 0xC000) >>> 14); } + + @property byte* Value() { return &_Value; } + + @property ushort unused(ushort u) { + _bf = cast(ushort) ((_bf & ~0x1FFF) | (u & 0x1FFF)); + return cast(ushort)(u & 0x1FFF); + } + + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property ubyte fReserved(ubyte r) { _bf = cast(ushort) ((_bf & ~0xC000) | (r << 14)); return r; } +} + +deprecated struct DDELN { + ushort _bf; + short cfFormat; + + @property ushort unused() { return cast(ushort) (_bf & 0x1FFF); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool fDeferUpd() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property ushort unused(ushort u) { + _bf = cast(ushort)((_bf & ~0x1FFF) | (u & 0x1FFF)); + return cast(ushort)(u & 0x1FFF); + } + + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool fDeferUpd(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +deprecated struct DDEUP { + ushort _bf; + short cfFormat; + byte _rgb; + + @property ushort unused() { return cast(ushort) (_bf & 0x0FFF); } + @property bool fAck() { return cast(bool) (_bf & 0x1000); } + @property bool fRelease() { return cast(bool) (_bf & 0x2000); } + @property bool fReserved() { return cast(bool) (_bf & 0x4000); } + @property bool fAckReq() { return cast(bool) (_bf & 0x8000); } + + @property byte* rgb() { return &_rgb; } + + @property ushort unused(ushort r) { + _bf = cast(ushort) ((_bf & ~0x0FFF) | (r & 0x0FFF)); + return cast(ushort)(r & 0x0FFF); + } + + @property bool fAck(bool f) { _bf = cast(ushort) ((_bf & ~0x1000) | (f << 12)); return f; } + @property bool fRelease(bool f) { _bf = cast(ushort) ((_bf & ~0x2000) | (f << 13)); return f; } + @property bool fReserved(bool f) { _bf = cast(ushort) ((_bf & ~0x4000) | (f << 14)); return f; } + @property bool fAckReq(bool f) { _bf = cast(ushort) ((_bf & ~0x8000) | (f << 15)); return f; } +} + +extern (Windows) { + BOOL DdeSetQualityOfService(HWND, const(SECURITY_QUALITY_OF_SERVICE)*, + PSECURITY_QUALITY_OF_SERVICE); + BOOL ImpersonateDdeClientWindow(HWND, HWND); + LPARAM PackDDElParam(UINT, UINT_PTR, UINT_PTR); + BOOL UnpackDDElParam(UINT, LPARAM, PUINT_PTR, PUINT_PTR); + BOOL FreeDDElParam(UINT, LPARAM); + LPARAM ReuseDDElParam(LPARAM, UINT, UINT, UINT_PTR, UINT_PTR); +} + +debug (WindowsUnitTest) { + unittest { + DDEACK ddeack; + + with (ddeack) { + reserved = 10; + assert (_bf == 0x0A); + fBusy = true; + assert (_bf == 0x4A); + fAck = true; + assert (_bf == 0xCA); + + assert (reserved == 10); + assert (fBusy == true); + assert (fAck == true); + + reserved = 43; + assert (_bf == 0xEB); + fBusy = false; + assert (_bf == 0xAB); + fAck = false; + assert (_bf == 0x2B); + + assert (reserved == 43); + assert (fBusy == false); + assert (fAck == false); + } + + DDEPOKE ddepoke; + + with (ddepoke) { + unused = 3456; + assert (_bf == 0x0D80); + fRelease = true; + assert (_bf == 0x2D80); + fReserved = 2; + assert (_bf == 0xAD80); + + assert (unused == 3456); + assert (fRelease == true); + assert (fReserved == 2); + + unused = 2109; + assert (_bf == 0xa83d); + fRelease = false; + assert (_bf == 0x883d); + fReserved = 1; + assert (_bf == 0x483d); + + assert (unused == 2109); + assert (fRelease == false); + assert (fReserved == 1); + } + } +} Index: src/win32/ddeml.d ================================================================== --- src/win32/ddeml.d +++ src/win32/ddeml.d @@ -1,374 +1,377 @@ -/***********************************************************************\ -* ddeml.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.ddeml; -pragma(lib, "user32.lib"); - -private import win32.basetsd, win32.windef, win32.winnt; - -enum : int { - CP_WINANSI = 1004, - CP_WINUNICODE = 1200 -} - -enum : UINT { - XTYPF_NOBLOCK = 2, - XTYPF_NODATA = 4, - XTYPF_ACKREQ = 8 -} - -enum : UINT { - XCLASS_MASK = 0xFC00, - XCLASS_BOOL = 0x1000, - XCLASS_DATA = 0x2000, - XCLASS_FLAGS = 0x4000, - XCLASS_NOTIFICATION = 0x8000 -} - -enum : UINT { - XST_NULL, - XST_INCOMPLETE, - XST_CONNECTED, - XST_INIT1, - XST_INIT2, - XST_REQSENT, - XST_DATARCVD, - XST_POKESENT, - XST_POKEACKRCVD, - XST_EXECSENT, - XST_EXECACKRCVD, - XST_ADVSENT, - XST_UNADVSENT, - XST_ADVACKRCVD, - XST_UNADVACKRCVD, - XST_ADVDATASENT, - XST_ADVDATAACKRCVD // = 16 -} - -enum : UINT { - XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, - XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, - XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, - XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, - XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, - XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, - XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, - XTYP_POKE = 0x0090 | XCLASS_FLAGS, - XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_REQUEST = 0x00B0 | XCLASS_DATA, - XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, - XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, - XTYP_MASK = 0x00F0, - XTYP_SHIFT = 4 -} - -/+ -#define TIMEOUT_ASYNC 0xFFFFFFFF -#define QID_SYNC 0xFFFFFFFF -+/ - -enum : UINT { - ST_CONNECTED = 1, - ST_ADVISE = 2, - ST_ISLOCAL = 4, - ST_BLOCKED = 8, - ST_CLIENT = 16, - ST_TERMINATED = 32, - ST_INLIST = 64, - ST_BLOCKNEXT = 128, - ST_ISSELF = 256 -} - -/+ -#define CADV_LATEACK 0xFFFF -+/ - -enum : UINT { - DMLERR_NO_ERROR = 0, - DMLERR_FIRST = 0x4000, - DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, - DMLERR_BUSY, - DMLERR_DATAACKTIMEOUT, - DMLERR_DLL_NOT_INITIALIZED, - DMLERR_DLL_USAGE, - DMLERR_EXECACKTIMEOUT, - DMLERR_INVALIDPARAMETER, - DMLERR_LOW_MEMORY, - DMLERR_MEMORY_ERROR, - DMLERR_NOTPROCESSED, - DMLERR_NO_CONV_ESTABLISHED, - DMLERR_POKEACKTIMEOUT, - DMLERR_POSTMSG_FAILED, - DMLERR_REENTRANCY, - DMLERR_SERVER_DIED, - DMLERR_SYS_ERROR, - DMLERR_UNADVACKTIMEOUT, - DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 - DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID -} - -/+ -#define DDE_FACK 0x8000 -#define DDE_FBUSY 0x4000 -#define DDE_FDEFERUPD 0x4000 -#define DDE_FACKREQ 0x8000 -#define DDE_FRELEASE 0x2000 -#define DDE_FREQUESTED 0x1000 -#define DDE_FAPPSTATUS 0x00ff -#define DDE_FNOTPROCESSED 0 -#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)) -#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD)) -#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)) -#define DDE_FPOKRESERVED (~DDE_FRELEASE) -#define MSGF_DDEMGR 0x8001 -#define CBR_BLOCK ((HDDEDATA)0xffffffff) -+/ - -const DWORD - APPCLASS_STANDARD = 0, - APPCLASS_MONITOR = 0x00000001, - APPCLASS_MASK = 0x0000000F, - APPCMD_CLIENTONLY = 0x00000010, - APPCMD_FILTERINITS = 0x00000020, - APPCMD_MASK = 0x00000FF0, - CBF_FAIL_SELFCONNECTIONS = 0x00001000, - CBF_FAIL_CONNECTIONS = 0x00002000, - CBF_FAIL_ADVISES = 0x00004000, - CBF_FAIL_EXECUTES = 0x00008000, - CBF_FAIL_POKES = 0x00010000, - CBF_FAIL_REQUESTS = 0x00020000, - CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, - CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, - CBF_SKIP_REGISTRATIONS = 0x00080000, - CBF_SKIP_UNREGISTRATIONS = 0x00100000, - CBF_SKIP_DISCONNECTS = 0x00200000, - CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, - MF_HSZ_INFO = 0x01000000, - MF_SENDMSGS = 0x02000000, - MF_POSTMSGS = 0x04000000, - MF_CALLBACKS = 0x08000000, - MF_ERRORS = 0x10000000, - MF_LINKS = 0x20000000, - MF_CONV = 0x40000000, - MF_MASK = 0xFF000000; - -enum : UINT { - EC_ENABLEALL = 0, - EC_ENABLEONE = ST_BLOCKNEXT, - EC_DISABLE = ST_BLOCKED, - EC_QUERYWAITING = 2 -} - -enum : UINT { - DNS_REGISTER = 1, - DNS_UNREGISTER = 2, - DNS_FILTERON = 4, - DNS_FILTEROFF = 8 -} - -/+ -#define HDATA_APPOWNED 1 -#define MAX_MONITORS 4 -+/ - -enum : int { - MH_CREATE = 1, - MH_KEEP = 2, - MH_DELETE = 3, - MH_CLEANUP = 4 -} - -alias HANDLE HCONVLIST, HCONV, HSZ, HDDEDATA; - -extern (Windows) alias HDDEDATA - function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK; - -struct HSZPAIR { - HSZ hszSvc; - HSZ hszTopic; -} -alias HSZPAIR* PHSZPAIR; - -struct CONVCONTEXT { - UINT cb = CONVCONTEXT.sizeof; - UINT wFlags; - UINT wCountryID; - int iCodePage; - DWORD dwLangID; - DWORD dwSecurity; - SECURITY_QUALITY_OF_SERVICE qos; -} -alias CONVCONTEXT* PCONVCONTEXT; - -struct CONVINFO { - DWORD cb = CONVINFO.sizeof; - 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* PCONVINFO; - -struct DDEML_MSG_HOOK_DATA { - UINT uiLo; - UINT uiHi; - DWORD cbData; - DWORD[8] Data; -} - -struct MONHSZSTRUCT { - UINT cb = MONHSZSTRUCT.sizeof; - int fsAction; - DWORD dwTime; - HSZ hsz; - HANDLE hTask; - TCHAR[1] _str; - - TCHAR* str() { return _str.ptr; } -} -alias MONHSZSTRUCT* PMONHSZSTRUCT; - -struct MONLINKSTRUCT { - UINT cb = MONLINKSTRUCT.sizeof; - DWORD dwTime; - HANDLE hTask; - BOOL fEstablished; - BOOL fNoData; - HSZ hszSvc; - HSZ hszTopic; - HSZ hszItem; - UINT wFmt; - BOOL fServer; - HCONV hConvServer; - HCONV hConvClient; -} -alias MONLINKSTRUCT* PMONLINKSTRUCT; - -struct MONCONVSTRUCT { - UINT cb = MONCONVSTRUCT.sizeof; - BOOL fConnect; - DWORD dwTime; - HANDLE hTask; - HSZ hszSvc; - HSZ hszTopic; - HCONV hConvClient; - HCONV hConvServer; -} -alias MONCONVSTRUCT* PMONCONVSTRUCT; - -struct MONCBSTRUCT { - UINT cb = MONCBSTRUCT.sizeof; - DWORD dwTime; - HANDLE hTask; - DWORD dwRet; - UINT wType; - UINT wFmt; - HCONV hConv; - HSZ hsz1; - HSZ hsz2; - HDDEDATA hData; - ULONG_PTR dwData1; - ULONG_PTR dwData2; - CONVCONTEXT cc; - DWORD cbData; - DWORD[8] Data; -} -alias MONCBSTRUCT* PMONCBSTRUCT; - -struct MONERRSTRUCT { - UINT cb = MONERRSTRUCT.sizeof; - UINT wLastError; - DWORD dwTime; - HANDLE hTask; -} -alias MONERRSTRUCT* PMONERRSTRUCT; - -struct MONMSGSTRUCT { - UINT cb = MONMSGSTRUCT.sizeof; - HWND hwndTo; - DWORD dwTime; - HANDLE hTask; - UINT wMsg; - WPARAM wParam; - LPARAM lParam; - DDEML_MSG_HOOK_DATA dmhd; -} -alias MONMSGSTRUCT* PMONMSGSTRUCT; - -extern (Windows) { - BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); - PBYTE DdeAccessData(HDDEDATA, PDWORD); - HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); - HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, - DWORD, PDWORD); - int DdeCmpStringHandles(HSZ, HSZ); - HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); - HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); - HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, - UINT); - HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); - HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); - BOOL DdeDisconnect(HCONV); - BOOL DdeDisconnectList(HCONVLIST); - BOOL DdeEnableCallback(DWORD, HCONV, UINT); - BOOL DdeFreeDataHandle(HDDEDATA); - BOOL DdeFreeStringHandle(DWORD, HSZ); - DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); - UINT DdeGetLastError(DWORD); - BOOL DdeImpersonateClient(HCONV); - UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); - UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); - BOOL DdeKeepStringHandle(DWORD, HSZ); - HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); - BOOL DdePostAdvise(DWORD, HSZ, HSZ); - UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); - HCONV DdeQueryNextServer(HCONVLIST, HCONV); - DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); - DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); - HCONV DdeReconnect(HCONV); - BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); - BOOL DdeUnaccessData(HDDEDATA); - BOOL DdeUninitialize(DWORD); -} - -const TCHAR[] - SZDDESYS_TOPIC = "System", - SZDDESYS_ITEM_TOPICS = "Topics", - SZDDESYS_ITEM_SYSITEMS = "SysItems", - SZDDESYS_ITEM_RTNMSG = "ReturnMessage", - SZDDESYS_ITEM_STATUS = "Status", - SZDDESYS_ITEM_FORMATS = "Formats", - SZDDESYS_ITEM_HELP = "Help", - SZDDE_ITEM_ITEMLIST = "TopicItemList"; - -version (Unicode) { - alias DdeCreateStringHandleW DdeCreateStringHandle; - alias DdeInitializeW DdeInitialize; - alias DdeQueryStringW DdeQueryString; -} else { - alias DdeCreateStringHandleA DdeCreateStringHandle; - alias DdeInitializeA DdeInitialize; - alias DdeQueryStringA DdeQueryString; -} +/***********************************************************************\ +* ddeml.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ddeml; +pragma(lib, "user32"); + +private import win32.basetsd, win32.windef, win32.winnt; + +enum : int { + CP_WINANSI = 1004, + CP_WINUNICODE = 1200 +} + +enum : UINT { + XTYPF_NOBLOCK = 2, + XTYPF_NODATA = 4, + XTYPF_ACKREQ = 8 +} + +enum : UINT { + XCLASS_MASK = 0xFC00, + XCLASS_BOOL = 0x1000, + XCLASS_DATA = 0x2000, + XCLASS_FLAGS = 0x4000, + XCLASS_NOTIFICATION = 0x8000 +} + +enum : UINT { + XST_NULL, + XST_INCOMPLETE, + XST_CONNECTED, + XST_INIT1, + XST_INIT2, + XST_REQSENT, + XST_DATARCVD, + XST_POKESENT, + XST_POKEACKRCVD, + XST_EXECSENT, + XST_EXECACKRCVD, + XST_ADVSENT, + XST_UNADVSENT, + XST_ADVACKRCVD, + XST_UNADVACKRCVD, + XST_ADVDATASENT, + XST_ADVDATAACKRCVD // = 16 +} + +enum : UINT { + XTYP_ERROR = XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS, + XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_ADVSTART = 0x0030 | XCLASS_BOOL, + XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION, + XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS, + XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK, + XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION, + XTYP_POKE = 0x0090 | XCLASS_FLAGS, + XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_REQUEST = 0x00B0 | XCLASS_DATA, + XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK, + XTYP_MONITOR = 0X00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK, + XTYP_MASK = 0x00F0, + XTYP_SHIFT = 4 +} + +/+ +#define TIMEOUT_ASYNC 0xFFFFFFFF +#define QID_SYNC 0xFFFFFFFF ++/ + +enum : UINT { + ST_CONNECTED = 1, + ST_ADVISE = 2, + ST_ISLOCAL = 4, + ST_BLOCKED = 8, + ST_CLIENT = 16, + ST_TERMINATED = 32, + ST_INLIST = 64, + ST_BLOCKNEXT = 128, + ST_ISSELF = 256 +} + +/+ +#define CADV_LATEACK 0xFFFF ++/ + +enum : UINT { + DMLERR_NO_ERROR = 0, + DMLERR_FIRST = 0x4000, + DMLERR_ADVACKTIMEOUT = DMLERR_FIRST, + DMLERR_BUSY, + DMLERR_DATAACKTIMEOUT, + DMLERR_DLL_NOT_INITIALIZED, + DMLERR_DLL_USAGE, + DMLERR_EXECACKTIMEOUT, + DMLERR_INVALIDPARAMETER, + DMLERR_LOW_MEMORY, + DMLERR_MEMORY_ERROR, + DMLERR_NOTPROCESSED, + DMLERR_NO_CONV_ESTABLISHED, + DMLERR_POKEACKTIMEOUT, + DMLERR_POSTMSG_FAILED, + DMLERR_REENTRANCY, + DMLERR_SERVER_DIED, + DMLERR_SYS_ERROR, + DMLERR_UNADVACKTIMEOUT, + DMLERR_UNFOUND_QUEUE_ID, // = 0x4011 + DMLERR_LAST = DMLERR_UNFOUND_QUEUE_ID +} + +/+ +#define DDE_FACK 0x8000 +#define DDE_FBUSY 0x4000 +#define DDE_FDEFERUPD 0x4000 +#define DDE_FACKREQ 0x8000 +#define DDE_FRELEASE 0x2000 +#define DDE_FREQUESTED 0x1000 +#define DDE_FAPPSTATUS 0x00ff +#define DDE_FNOTPROCESSED 0 +#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS)) +#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD)) +#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED)) +#define DDE_FPOKRESERVED (~DDE_FRELEASE) +#define MSGF_DDEMGR 0x8001 +#define CBR_BLOCK ((HDDEDATA)0xffffffff) ++/ + +const DWORD + APPCLASS_STANDARD = 0, + APPCLASS_MONITOR = 0x00000001, + APPCLASS_MASK = 0x0000000F, + APPCMD_CLIENTONLY = 0x00000010, + APPCMD_FILTERINITS = 0x00000020, + APPCMD_MASK = 0x00000FF0, + CBF_FAIL_SELFCONNECTIONS = 0x00001000, + CBF_FAIL_CONNECTIONS = 0x00002000, + CBF_FAIL_ADVISES = 0x00004000, + CBF_FAIL_EXECUTES = 0x00008000, + CBF_FAIL_POKES = 0x00010000, + CBF_FAIL_REQUESTS = 0x00020000, + CBF_FAIL_ALLSVRXACTIONS = 0x0003f000, + CBF_SKIP_CONNECT_CONFIRMS = 0x00040000, + CBF_SKIP_REGISTRATIONS = 0x00080000, + CBF_SKIP_UNREGISTRATIONS = 0x00100000, + CBF_SKIP_DISCONNECTS = 0x00200000, + CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000, + MF_HSZ_INFO = 0x01000000, + MF_SENDMSGS = 0x02000000, + MF_POSTMSGS = 0x04000000, + MF_CALLBACKS = 0x08000000, + MF_ERRORS = 0x10000000, + MF_LINKS = 0x20000000, + MF_CONV = 0x40000000, + MF_MASK = 0xFF000000; + +enum : UINT { + EC_ENABLEALL = 0, + EC_ENABLEONE = ST_BLOCKNEXT, + EC_DISABLE = ST_BLOCKED, + EC_QUERYWAITING = 2 +} + +enum : UINT { + DNS_REGISTER = 1, + DNS_UNREGISTER = 2, + DNS_FILTERON = 4, + DNS_FILTEROFF = 8 +} + +/+ +#define HDATA_APPOWNED 1 +#define MAX_MONITORS 4 ++/ + +enum : int { + MH_CREATE = 1, + MH_KEEP = 2, + MH_DELETE = 3, + MH_CLEANUP = 4 +} + +mixin DECLARE_HANDLE!("HCONVLIST"); +mixin DECLARE_HANDLE!("HCONV"); +mixin DECLARE_HANDLE!("HSZ"); +mixin DECLARE_HANDLE!("HDDEDATA"); + +extern (Windows) alias HDDEDATA + function(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD) PFNCALLBACK; + +struct HSZPAIR { + HSZ hszSvc; + HSZ hszTopic; +} +alias HSZPAIR* PHSZPAIR; + +struct CONVCONTEXT { + UINT cb = CONVCONTEXT.sizeof; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; +} +alias CONVCONTEXT* PCONVCONTEXT; + +struct CONVINFO { + DWORD cb = CONVINFO.sizeof; + 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* PCONVINFO; + +struct DDEML_MSG_HOOK_DATA { + UINT_PTR uiLo; + UINT_PTR uiHi; + DWORD cbData; + DWORD[8] Data; +} + +struct MONHSZSTRUCT { + UINT cb = MONHSZSTRUCT.sizeof; + int fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + TCHAR[1] _str; + + TCHAR* str() { return _str.ptr; } +} +alias MONHSZSTRUCT* PMONHSZSTRUCT; + +struct MONLINKSTRUCT { + UINT cb = MONLINKSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + BOOL fEstablished; + BOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + BOOL fServer; + HCONV hConvServer; + HCONV hConvClient; +} +alias MONLINKSTRUCT* PMONLINKSTRUCT; + +struct MONCONVSTRUCT { + UINT cb = MONCONVSTRUCT.sizeof; + BOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; +} +alias MONCONVSTRUCT* PMONCONVSTRUCT; + +struct MONCBSTRUCT { + UINT cb = MONCBSTRUCT.sizeof; + DWORD dwTime; + HANDLE hTask; + DWORD dwRet; + UINT wType; + UINT wFmt; + HCONV hConv; + HSZ hsz1; + HSZ hsz2; + HDDEDATA hData; + ULONG_PTR dwData1; + ULONG_PTR dwData2; + CONVCONTEXT cc; + DWORD cbData; + DWORD[8] Data; +} +alias MONCBSTRUCT* PMONCBSTRUCT; + +struct MONERRSTRUCT { + UINT cb = MONERRSTRUCT.sizeof; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; +} +alias MONERRSTRUCT* PMONERRSTRUCT; + +struct MONMSGSTRUCT { + UINT cb = MONMSGSTRUCT.sizeof; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; +} +alias MONMSGSTRUCT* PMONMSGSTRUCT; + +extern (Windows) { + BOOL DdeAbandonTransaction(DWORD, HCONV, DWORD); + PBYTE DdeAccessData(HDDEDATA, PDWORD); + HDDEDATA DdeAddData(HDDEDATA, PBYTE, DWORD, DWORD); + HDDEDATA DdeClientTransaction(PBYTE, DWORD, HCONV, HSZ, UINT, UINT, + DWORD, PDWORD); + int DdeCmpStringHandles(HSZ, HSZ); + HCONV DdeConnect(DWORD, HSZ, HSZ, PCONVCONTEXT); + HCONVLIST DdeConnectList(DWORD, HSZ, HSZ, HCONVLIST, PCONVCONTEXT); + HDDEDATA DdeCreateDataHandle(DWORD, PBYTE, DWORD, DWORD, HSZ, UINT, + UINT); + HSZ DdeCreateStringHandleA(DWORD, LPSTR, int); + HSZ DdeCreateStringHandleW(DWORD, LPWSTR, int); + BOOL DdeDisconnect(HCONV); + BOOL DdeDisconnectList(HCONVLIST); + BOOL DdeEnableCallback(DWORD, HCONV, UINT); + BOOL DdeFreeDataHandle(HDDEDATA); + BOOL DdeFreeStringHandle(DWORD, HSZ); + DWORD DdeGetData(HDDEDATA, PBYTE, DWORD, DWORD); + UINT DdeGetLastError(DWORD); + BOOL DdeImpersonateClient(HCONV); + UINT DdeInitializeA(PDWORD, PFNCALLBACK, DWORD, DWORD); + UINT DdeInitializeW(PDWORD, PFNCALLBACK, DWORD, DWORD); + BOOL DdeKeepStringHandle(DWORD, HSZ); + HDDEDATA DdeNameService(DWORD, HSZ, HSZ, UINT); + BOOL DdePostAdvise(DWORD, HSZ, HSZ); + UINT DdeQueryConvInfo(HCONV, DWORD, PCONVINFO); + HCONV DdeQueryNextServer(HCONVLIST, HCONV); + DWORD DdeQueryStringA(DWORD, HSZ, LPSTR, DWORD, int); + DWORD DdeQueryStringW(DWORD, HSZ, LPWSTR, DWORD, int); + HCONV DdeReconnect(HCONV); + BOOL DdeSetUserHandle(HCONV, DWORD, DWORD); + BOOL DdeUnaccessData(HDDEDATA); + BOOL DdeUninitialize(DWORD); +} + +const TCHAR[] + SZDDESYS_TOPIC = "System", + SZDDESYS_ITEM_TOPICS = "Topics", + SZDDESYS_ITEM_SYSITEMS = "SysItems", + SZDDESYS_ITEM_RTNMSG = "ReturnMessage", + SZDDESYS_ITEM_STATUS = "Status", + SZDDESYS_ITEM_FORMATS = "Formats", + SZDDESYS_ITEM_HELP = "Help", + SZDDE_ITEM_ITEMLIST = "TopicItemList"; + +version (Unicode) { + alias DdeCreateStringHandleW DdeCreateStringHandle; + alias DdeInitializeW DdeInitialize; + alias DdeQueryStringW DdeQueryString; +} else { + alias DdeCreateStringHandleA DdeCreateStringHandle; + alias DdeInitializeA DdeInitialize; + alias DdeQueryStringA DdeQueryString; +} Index: src/win32/dhcpcsdk.d ================================================================== --- src/win32/dhcpcsdk.d +++ src/win32/dhcpcsdk.d @@ -1,58 +1,58 @@ -/***********************************************************************\ -* dhcpcsdk.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.dhcpcsdk; - -private import win32.w32api, win32.windef; - -static assert (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500, -"win32.dhcpcsdk is available only if version WindowsXP, Windows2003 -or WindowsVista is set, or both Windows2000 and WindowsNTonly are set"); - -//#if (_WIN32_WINNT >= 0x0500) - -// FIXME: check type -const DHCPCAPI_REGISTER_HANDLE_EVENT = 1; -const DHCPCAPI_REQUEST_PERSISTENT = 1; -const DHCPCAPI_REQUEST_SYNCHRONOUS = 2; - -struct DHCPCAPI_CLASSID { - ULONG Flags; - LPBYTE Data; - ULONG nBytesData; -} -alias DHCPCAPI_CLASSID* PDHCPCAPI_CLASSID, LPDHCPCAPI_CLASSID; - -struct DHCPAPI_PARAMS { - ULONG Flags; - ULONG OptionId; - BOOL IsVendor; - LPBYTE Data; - DWORD nBytesData; -} -alias DHCPAPI_PARAMS* PDHCPAPI_PARAMS, LPDHCPAPI_PARAMS; - -struct DHCPCAPI_PARAMS_ARRAY { - ULONG nParams; - LPDHCPAPI_PARAMS Params; -} -alias DHCPCAPI_PARAMS_ARRAY* PDHCPCAPI_PARAMS_ARRAY, LPDHCPCAPI_PARAMS_ARRAY; - -extern (Windows) { - void DhcpCApiCleanup(); - DWORD DhcpCApiInitialize(LPDWORD); - DWORD DhcpDeRegisterParamChange(DWORD, LPVOID, LPVOID); - DWORD DhcpRegisterParamChange(DWORD, LPVOID, PWSTR, LPDHCPCAPI_CLASSID, - DHCPCAPI_PARAMS_ARRAY, LPVOID); - DWORD DhcpRemoveDNSRegistrations(); - DWORD DhcpUndoRequestParams(DWORD, LPVOID, LPWSTR, LPWSTR); -} - -//#endif // (_WIN32_WINNT >= 0x0500) +/***********************************************************************\ +* dhcpcsdk.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.dhcpcsdk; + +private import win32.w32api, win32.windef; + +static assert (_WIN32_WINNT >= 0x500, +"win32.dhcpcsdk is available only if version Windows2000, WindowsXP, Windows2003 +or WindowsVista is set"); + +//#if (_WIN32_WINNT >= 0x500) + +// FIXME: check type +const DHCPCAPI_REGISTER_HANDLE_EVENT = 1; +const DHCPCAPI_REQUEST_PERSISTENT = 1; +const DHCPCAPI_REQUEST_SYNCHRONOUS = 2; + +struct DHCPCAPI_CLASSID { + ULONG Flags; + LPBYTE Data; + ULONG nBytesData; +} +alias DHCPCAPI_CLASSID* PDHCPCAPI_CLASSID, LPDHCPCAPI_CLASSID; + +struct DHCPAPI_PARAMS { + ULONG Flags; + ULONG OptionId; + BOOL IsVendor; + LPBYTE Data; + DWORD nBytesData; +} +alias DHCPAPI_PARAMS* PDHCPAPI_PARAMS, LPDHCPAPI_PARAMS; + +struct DHCPCAPI_PARAMS_ARRAY { + ULONG nParams; + LPDHCPAPI_PARAMS Params; +} +alias DHCPCAPI_PARAMS_ARRAY* PDHCPCAPI_PARAMS_ARRAY, LPDHCPCAPI_PARAMS_ARRAY; + +extern (Windows) { + void DhcpCApiCleanup(); + DWORD DhcpCApiInitialize(LPDWORD); + DWORD DhcpDeRegisterParamChange(DWORD, LPVOID, LPVOID); + DWORD DhcpRegisterParamChange(DWORD, LPVOID, PWSTR, LPDHCPCAPI_CLASSID, + DHCPCAPI_PARAMS_ARRAY, LPVOID); + DWORD DhcpRemoveDNSRegistrations(); + DWORD DhcpUndoRequestParams(DWORD, LPVOID, LPWSTR, LPWSTR); +} + +//#endif // (_WIN32_WINNT >= 0x500) ADDED src/win32/directx/d3d10.d Index: src/win32/directx/d3d10.d ================================================================== --- src/win32/directx/d3d10.d +++ src/win32/directx/d3d10.d @@ -0,0 +1,1229 @@ +/***********************************************************************\ +* d3d10.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.d3d10; + +private import win32.windows; + +public import win32.directx.dxgitype; +public import win32.directx.dxgi; +public import win32.directx.d3d10misc; + +pragma(lib, "d3d10.lib"); + +const D3D10_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff; +const D3D10_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff; +const D3D10_8BIT_INDEX_STRIP_CUT_VALUE = 0xff; +const D3D10_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9; +const D3D10_CLIP_OR_CULL_DISTANCE_COUNT = 8; +const D3D10_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2; +const D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14; +const D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4; +const D3D10_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32; +const D3D10_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15; +const D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4; +const D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15; +const D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1; +const D3D10_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1; +const D3D10_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64; +const D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4; +const D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1; +const D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1; +const D3D10_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1; +const D3D10_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32; +const D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1; +const D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128; +const D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1; +const D3D10_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1; +const D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128; +const D3D10_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1; +const D3D10_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16; +const D3D10_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1; +const D3D10_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1; +const D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT = 16; +const D3D10_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32; +const D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4; +const D3D10_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_COMMONSHADER_TEMP_REGISTER_COUNT = 4096; +const D3D10_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3; +const D3D10_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3; +const D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10; +const D3D10_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10; +const D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8; +const D3D10_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7; +const D3D10_DEFAULT_BLEND_FACTOR_ALPHA = 1.0f; +const D3D10_DEFAULT_BLEND_FACTOR_BLUE = 1.0f; +const D3D10_DEFAULT_BLEND_FACTOR_GREEN = 1.0f; +const D3D10_DEFAULT_BLEND_FACTOR_RED = 1.0f; +const D3D10_DEFAULT_BORDER_COLOR_COMPONENT = 0.0f; +const D3D10_DEFAULT_DEPTH_BIAS = 0; +const D3D10_DEFAULT_DEPTH_BIAS_CLAMP = 0.0f; +const D3D10_DEFAULT_MAX_ANISOTROPY = 16.0f; +const D3D10_DEFAULT_MIP_LOD_BIAS = 0.0f; +const D3D10_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0; +const D3D10_DEFAULT_SAMPLE_MASK = 0xffffffff; +const D3D10_DEFAULT_SCISSOR_ENDX = 0; +const D3D10_DEFAULT_SCISSOR_ENDY = 0; +const D3D10_DEFAULT_SCISSOR_STARTX = 0; +const D3D10_DEFAULT_SCISSOR_STARTY = 0; +const D3D10_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = 0.0f; +const D3D10_DEFAULT_STENCIL_READ_MASK = 0xff; +const D3D10_DEFAULT_STENCIL_REFERENCE = 0; +const D3D10_DEFAULT_STENCIL_WRITE_MASK = 0xff; +const D3D10_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0; +const D3D10_DEFAULT_VIEWPORT_HEIGHT = 0; +const D3D10_DEFAULT_VIEWPORT_MAX_DEPTH = 0.0f; +const D3D10_DEFAULT_VIEWPORT_MIN_DEPTH = 0.0f; +const D3D10_DEFAULT_VIEWPORT_TOPLEFTX = 0; +const D3D10_DEFAULT_VIEWPORT_TOPLEFTY = 0; +const D3D10_DEFAULT_VIEWPORT_WIDTH = 0; +const D3D10_FLOAT16_FUSED_TOLERANCE_IN_ULP = 0.6; +const D3D10_FLOAT32_MAX = 3.402823466e+38f; +const D3D10_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP = 0.6f; +const D3D10_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR = 2.4f; +const D3D10_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = 1.0f; +const D3D10_FLOAT_TO_SRGB_OFFSET = 0.055f; +const D3D10_FLOAT_TO_SRGB_SCALE_1 = 12.92f; +const D3D10_FLOAT_TO_SRGB_SCALE_2 = 1.055f; +const D3D10_FLOAT_TO_SRGB_THRESHOLD = 0.0031308f; +const D3D10_FTOI_INSTRUCTION_MAX_INPUT = 2147483647.999f; +const D3D10_FTOI_INSTRUCTION_MIN_INPUT = -2147483648.999f; +const D3D10_FTOU_INSTRUCTION_MAX_INPUT = 4294967295.999f; +const D3D10_FTOU_INSTRUCTION_MIN_INPUT = 0.0f; +const D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1; +const D3D10_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1; +const D3D10_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2; +const D3D10_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1; +const D3D10_GS_INPUT_REGISTER_COMPONENTS = 4; +const D3D10_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_GS_INPUT_REGISTER_COUNT = 16; +const D3D10_GS_INPUT_REGISTER_READS_PER_INST = 2; +const D3D10_GS_INPUT_REGISTER_READ_PORTS = 1; +const D3D10_GS_INPUT_REGISTER_VERTICES = 6; +const D3D10_GS_OUTPUT_ELEMENTS = 32; +const D3D10_GS_OUTPUT_REGISTER_COMPONENTS = 4; +const D3D10_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_GS_OUTPUT_REGISTER_COUNT = 32; +const D3D10_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0; +const D3D10_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0; +const D3D10_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0; +const D3D10_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1; +const D3D10_IA_INSTANCE_ID_BIT_COUNT = 32; +const D3D10_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32; +const D3D10_IA_PRIMITIVE_ID_BIT_COUNT = 32; +const D3D10_IA_VERTEX_ID_BIT_COUNT = 32; +const D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 16; +const D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 64; +const D3D10_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 16; +const D3D10_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff; +const D3D10_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff; +const D3D10_LINEAR_GAMMA = 1.0f; +const D3D10_MAX_BORDER_COLOR_COMPONENT = 1.0f; +const D3D10_MAX_DEPTH = 1.0f; +const D3D10_MAX_MAXANISOTROPY = 16; +const D3D10_MAX_MULTISAMPLE_SAMPLE_COUNT = 32; +const D3D10_MAX_POSITION_VALUE = 3.402823466e+34f; +const D3D10_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17; +const D3D10_MIN_BORDER_COLOR_COMPONENT = 0.0f; +const D3D10_MIN_DEPTH = 0.0f; +const D3D10_MIN_MAXANISOTROPY = 0; +const D3D10_MIP_LOD_BIAS_MAX = 15.99f; +const D3D10_MIP_LOD_BIAS_MIN = -16.0f; +const D3D10_MIP_LOD_FRACTIONAL_BIT_COUNT = 6; +const D3D10_MIP_LOD_RANGE_BIT_COUNT = 8; +const D3D10_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = 1.4f; +const D3D10_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0; +const D3D10_PIXEL_ADDRESS_RANGE_BIT_COUNT = 13; +const D3D10_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15; +const D3D10_PS_FRONTFACING_DEFAULT_VALUE = 0xffffffff; +const D3D10_PS_FRONTFACING_FALSE_VALUE = 0; +const D3D10_PS_FRONTFACING_TRUE_VALUE = 0xffffffff; +const D3D10_PS_INPUT_REGISTER_COMPONENTS = 4; +const D3D10_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_PS_INPUT_REGISTER_COUNT = 32; +const D3D10_PS_INPUT_REGISTER_READS_PER_INST = 2; +const D3D10_PS_INPUT_REGISTER_READ_PORTS = 1; +const D3D10_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.0f; +const D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1; +const D3D10_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1; +const D3D10_PS_OUTPUT_REGISTER_COMPONENTS = 4; +const D3D10_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_PS_OUTPUT_REGISTER_COUNT = 8; +const D3D10_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.5f; +const D3D10_REQ_BLEND_OBJECT_COUNT_PER_CONTEXT = 4096; +const D3D10_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27; +const D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096; +const D3D10_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_CONTEXT = 4096; +const D3D10_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32; +const D3D10_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32; +const D3D10_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 8192; +const D3D10_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024; +const D3D10_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096; +const D3D10_REQ_MAXANISOTROPY = 16; +const D3D10_REQ_MIP_LEVELS = 14; +const D3D10_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048; +const D3D10_REQ_RASTERIZER_OBJECT_COUNT_PER_CONTEXT = 4096; +const D3D10_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 8192; +const D3D10_REQ_RESOURCE_SIZE_IN_MEGABYTES = 128; +const D3D10_REQ_RESOURCE_VIEW_COUNT_PER_CONTEXT_2_TO_EXP = 20; +const D3D10_REQ_SAMPLER_OBJECT_COUNT_PER_CONTEXT = 4096; +const D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 512; +const D3D10_REQ_TEXTURE1D_U_DIMENSION = 8192; +const D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 512; +const D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION = 8192; +const D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048; +const D3D10_REQ_TEXTURECUBE_DIMENSION = 8192; +const D3D10_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0; +const D3D10_SHADER_MAJOR_VERSION = 4; +const D3D10_SHADER_MINOR_VERSION = 0; +const D3D10_SHIFT_INSTRUCTION_PAD_VALUE = 0; +const D3D10_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5; +const D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT = 8; +const D3D10_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048; +const D3D10_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 256; +const D3D10_SO_BUFFER_SLOT_COUNT = 4; +const D3D10_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff; +const D3D10_SO_MULTIPLE_BUFFER_ELEMENTS_PER_BUFFER = 1; +const D3D10_SO_SINGLE_BUFFER_COMPONENT_LIMIT = 64; +const D3D10_SRGB_GAMMA = 2.2f; +const D3D10_SRGB_TO_FLOAT_DENOMINATOR_1 = 12.92f; +const D3D10_SRGB_TO_FLOAT_DENOMINATOR_2 = 1.055f; +const D3D10_SRGB_TO_FLOAT_EXPONENT = 2.4f; +const D3D10_SRGB_TO_FLOAT_OFFSET = 0.055f; +const D3D10_SRGB_TO_FLOAT_THRESHOLD = 0.04045f; +const D3D10_SRGB_TO_FLOAT_TOLERANCE_IN_ULP = 0.5f; +const D3D10_STANDARD_COMPONENT_BIT_COUNT = 32; +const D3D10_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64; +const D3D10_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4; +const D3D10_STANDARD_PIXEL_COMPONENT_COUNT = 128; +const D3D10_STANDARD_PIXEL_ELEMENT_COUNT = 32; +const D3D10_STANDARD_VECTOR_SIZE = 4; +const D3D10_STANDARD_VERTEX_ELEMENT_COUNT = 16; +const D3D10_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64; +const D3D10_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8; +const D3D10_SUBTEXEL_FRACTIONAL_BIT_COUNT = 6; +const D3D10_TEXEL_ADDRESS_RANGE_BIT_COUNT = 18; +const D3D10_UNBOUND_MEMORY_ACCESS_RESULT = 0; +const D3D10_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15; +const D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16; +const D3D10_VIEWPORT_BOUNDS_MAX = 16383; +const D3D10_VIEWPORT_BOUNDS_MIN = -16384; +const D3D10_VS_INPUT_REGISTER_COMPONENTS = 4; +const D3D10_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_VS_INPUT_REGISTER_COUNT = 16; +const D3D10_VS_INPUT_REGISTER_READS_PER_INST = 2; +const D3D10_VS_INPUT_REGISTER_READ_PORTS = 1; +const D3D10_VS_OUTPUT_REGISTER_COMPONENTS = 4; +const D3D10_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32; +const D3D10_VS_OUTPUT_REGISTER_COUNT = 16; +const D3D10_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10; +const D3D10_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25; +const D3D10_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25; +const D3D_MAJOR_VERSION = 10; +const D3D_MINOR_VERSION = 0; +const D3D_SPEC_DATE_DAY = 8; +const D3D_SPEC_DATE_MONTH = 8; +const D3D_SPEC_DATE_YEAR = 2006; +const D3D_SPEC_VERSION = 1.050005; + +const _FACD3D10 = 0x879; +const _FACD3D10DEBUG = _FACD3D10 + 1; + +HRESULT MAKE_D3D10_HRESULT(T)(T code) { + return MAKE_HRESULT(1, _FACD3D10, code); +} + +HRESULT MAKE_D3D10_STATUS(T)(T code) { + return MAKE_HRESULT(0, _FACD3D10, code); +} + +const D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS = MAKE_D3D10_HRESULT(1); +const D3D10_ERROR_FILE_NOT_FOUND = MAKE_D3D10_HRESULT(2); + +enum D3D10_INPUT_CLASSIFICATION { + D3D10_INPUT_PER_VERTEX_DATA = 0, + D3D10_INPUT_PER_INSTANCE_DATA = 1 +} + +const D3D10_APPEND_ALIGNED_ELEMENT = 0xffffffff; + +struct D3D10_INPUT_ELEMENT_DESC { + LPCSTR SemanticName; + UINT SemanticIndex; + DXGI_FORMAT Format; + UINT InputSlot; + UINT AlignedByteOffset; + D3D10_INPUT_CLASSIFICATION InputSlotClass; + UINT InstanceDataStepRate; +} + +enum D3D10_FILL_MODE { + D3D10_FILL_WIREFRAME = 2, + D3D10_FILL_SOLID = 3 +} + +enum D3D10_PRIMITIVE_TOPOLOGY { + D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = 0, + D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = 1, + D3D10_PRIMITIVE_TOPOLOGY_LINELIST = 2, + D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = 3, + D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4, + D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5, + D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10, + D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11, + D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12, + D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13 +} + +enum D3D10_PRIMITIVE { + D3D10_PRIMITIVE_UNDEFINED = 0, + D3D10_PRIMITIVE_POINT = 1, + D3D10_PRIMITIVE_LINE = 2, + D3D10_PRIMITIVE_TRIANGLE = 3, + D3D10_PRIMITIVE_LINE_ADJ = 6, + D3D10_PRIMITIVE_TRIANGLE_ADJ = 7 +} + +enum D3D10_CULL_MODE { + D3D10_CULL_NONE = 1, + D3D10_CULL_FRONT, + D3D10_CULL_BACK +} + +struct D3D10_SO_DECLARATION_ENTRY { + LPCSTR SemanticName; + UINT SemanticIndex; + BYTE StartComponent; + BYTE ComponentCount; + BYTE OutputSlot; +} + +struct D3D10_VIEWPORT { + INT TopLeftX; + INT TopLeftY; + UINT Width; + UINT Height; + FLOAT MinDepth; + FLOAT MaxDepth; +} + +enum D3D10_RESOURCE_DIMENSION { + D3D10_RESOURCE_DIMENSION_UNKNOWN = 0, + D3D10_RESOURCE_DIMENSION_BUFFER, + D3D10_RESOURCE_DIMENSION_TEXTURE1D, + D3D10_RESOURCE_DIMENSION_TEXTURE2D, + D3D10_RESOURCE_DIMENSION_TEXTURE3D +} + +enum D3D10_SRV_DIMENSION { + D3D10_SRV_DIMENSION_UNKNOWN = 0, + D3D10_SRV_DIMENSION_BUFFER, + D3D10_SRV_DIMENSION_TEXTURE1D, + D3D10_SRV_DIMENSION_TEXTURE1DARRAY, + D3D10_SRV_DIMENSION_TEXTURE2D, + D3D10_SRV_DIMENSION_TEXTURE2DARRAY, + D3D10_SRV_DIMENSION_TEXTURE2DMS, + D3D10_SRV_DIMENSION_TEXTURE2DMSARRAY, + D3D10_SRV_DIMENSION_TEXTURE3D, + D3D10_SRV_DIMENSION_TEXTURECUBE +} + +enum D3D10_DSV_DIMENSION { + D3D10_DSV_DIMENSION_UNKNOWN = 0, + D3D10_DSV_DIMENSION_TEXTURE1D, + D3D10_DSV_DIMENSION_TEXTURE1DARRAY, + D3D10_DSV_DIMENSION_TEXTURE2D, + D3D10_DSV_DIMENSION_TEXTURE2DARRAY, + D3D10_DSV_DIMENSION_TEXTURE2DMS, + D3D10_DSV_DIMENSION_TEXTURE2DMSARRAY6 +} + +enum D3D10_RTV_DIMENSION { + D3D10_RTV_DIMENSION_UNKNOWN = 0, + D3D10_RTV_DIMENSION_BUFFER, + D3D10_RTV_DIMENSION_TEXTURE1D, + D3D10_RTV_DIMENSION_TEXTURE1DARRAY, + D3D10_RTV_DIMENSION_TEXTURE2D, + D3D10_RTV_DIMENSION_TEXTURE2DARRAY, + D3D10_RTV_DIMENSION_TEXTURE2DMS, + D3D10_RTV_DIMENSION_TEXTURE2DMSARRAY, + D3D10_RTV_DIMENSION_TEXTURE3D +} + +enum D3D10_USAGE { + D3D10_USAGE_DEFAULT = 0, + D3D10_USAGE_IMMUTABLE, + D3D10_USAGE_DYNAMIC, + D3D10_USAGE_STAGING +} + +enum D3D10_BIND_FLAG { + D3D10_BIND_VERTEX_BUFFER = 0x01, + D3D10_BIND_INDEX_BUFFER = 0x02, + D3D10_BIND_CONSTANT_BUFFER = 0x04, + D3D10_BIND_SHADER_RESOURCE = 0x08, + D3D10_BIND_STREAM_OUTPUT = 0x10, + D3D10_BIND_RENDER_TARGET = 0x20, + D3D10_BIND_DEPTH_STENCIL = 0x40 +} + +enum D3D10_CPU_ACCESS_FLAG { + D3D10_CPU_ACCESS_WRITE = 0x10000, + D3D10_CPU_ACCESS_READ = 0x20000 +} + +enum D3D10_RESOURCE_MISC_FLAG { + D3D10_RESOURCE_MISC_GENERATE_MIPS = 0x01, + D3D10_RESOURCE_MISC_SHARED = 0x02, + D3D10_RESOURCE_MISC_TEXTURECUBE = 0x04 +} + +enum D3D10_MAP { + D3D10_MAP_READ = 1, + D3D10_MAP_WRITE, + D3D10_MAP_READ_WRITE, + D3D10_MAP_WRITE_DISCARD, + D3D10_MAP_WRITE_NO_OVERWRITE +} + +enum D3D10_MAP_FLAG { + D3D10_MAP_FLAG_DO_NOT_WAIT = 0x100000 +} + +enum D3D10_RAISE_FLAG { + D3D10_RAISE_FLAG_DRIVER_INTERNAL_ERROR = 0x01 +} + +enum D3D10_CLEAR_FLAG { + D3D10_CLEAR_DEPTH = 0x01, + D3D10_CLEAR_STENCIL = 0x02 +} + +alias RECT D3D10_RECT; + +struct D3D10_BOX { + UINT left; + UINT top; + UINT front; + UINT right; + UINT bottom; + UINT back; +} + +extern (Windows) interface ID3D10DeviceChild : IUnknown { + //extern(Windows) : + void GetDevice(ID3D10Device* ppDevice); + HRESULT GetPrivateData(REFGUID guid, UINT *pDataSize, void *pData); + HRESULT SetPrivateData(REFGUID guid, UINT DataSize, void *pData); + HRESULT SetPrivateDataInterface(REFGUID guid, IUnknown pData); +} + +enum D3D10_COMPARISON_FUNC { + D3D10_COMPARISON_NEVER = 1, + D3D10_COMPARISON_LESS, + D3D10_COMPARISON_EQUAL, + D3D10_COMPARISON_LESS_EQUAL, + D3D10_COMPARISON_GREATER, + D3D10_COMPARISON_NOT_EQUAL, + D3D10_COMPARISON_GREATER_EQUAL, + D3D10_COMPARISON_ALWAYS +} + +enum D3D10_DEPTH_WRITE_MASK { + D3D10_DEPTH_WRITE_MASK_ZERO = 0, + D3D10_DEPTH_WRITE_MASK_ALL +} + +enum D3D10_STENCIL_OP { + D3D10_STENCIL_OP_KEEP = 1, + D3D10_STENCIL_OP_ZERO, + D3D10_STENCIL_OP_REPLACE, + D3D10_STENCIL_OP_INCR_SAT, + D3D10_STENCIL_OP_DECR_SAT, + D3D10_STENCIL_OP_INVERT, + D3D10_STENCIL_OP_INCR, + D3D10_STENCIL_OP_DECR +} + +struct D3D10_DEPTH_STENCILOP_DESC { + D3D10_STENCIL_OP StencilFailOp; + D3D10_STENCIL_OP StencilDepthFailOp; + D3D10_STENCIL_OP StencilPassOp; + D3D10_COMPARISON_FUNC StencilFunc; +} + +struct D3D10_DEPTH_STENCIL_DESC { + BOOL DepthEnable; + D3D10_DEPTH_WRITE_MASK DepthWriteMask; + D3D10_COMPARISON_FUNC DepthFunc; + BOOL StencilEnable; + UINT8 StencilReadMask; + UINT8 StencilWriteMask; + D3D10_DEPTH_STENCILOP_DESC FrontFace; + D3D10_DEPTH_STENCILOP_DESC BackFace; +} + +interface ID3D10DepthStencilState : ID3D10DeviceChild { + extern(Windows) : + void GetDesc(D3D10_DEPTH_STENCIL_DESC *pDesc); +} + +enum D3D10_BLEND { + D3D10_BLEND_ZERO = 1, + D3D10_BLEND_ONE = 2, + D3D10_BLEND_SRC_COLOR = 3, + D3D10_BLEND_INV_SRC_COLOR = 4, + D3D10_BLEND_SRC_ALPHA = 5, + D3D10_BLEND_INV_SRC_ALPHA = 6, + D3D10_BLEND_DEST_ALPHA = 7, + D3D10_BLEND_INV_DEST_ALPHA = 8, + D3D10_BLEND_DEST_COLOR = 9, + D3D10_BLEND_INV_DEST_COLOR = 10, + D3D10_BLEND_SRC_ALPHA_SAT = 11, + D3D10_BLEND_BLEND_FACTOR = 14, + D3D10_BLEND_INV_BLEND_FACTOR = 15, + D3D10_BLEND_SRC1_COLOR = 16, + D3D10_BLEND_INV_SRC1_COLOR = 17, + D3D10_BLEND_SRC1_ALPHA = 18, + D3D10_BLEND_INV_SRC1_ALPHA = 19 +} + +enum D3D10_BLEND_OP { + D3D10_BLEND_OP_ADD = 1, + D3D10_BLEND_OP_SUBTRACT, + D3D10_BLEND_OP_REV_SUBTRACT, + D3D10_BLEND_OP_MIN, + D3D10_BLEND_OP_MAX +} + +enum D3D10_COLOR_WRITE_ENABLE { + D3D10_COLOR_WRITE_ENABLE_RED = 1, + D3D10_COLOR_WRITE_ENABLE_GREEN = 2, + D3D10_COLOR_WRITE_ENABLE_BLUE = 4, + D3D10_COLOR_WRITE_ENABLE_ALPHA = 8, + D3D10_COLOR_WRITE_ENABLE_ALL = (((D3D10_COLOR_WRITE_ENABLE_RED | D3D10_COLOR_WRITE_ENABLE_GREEN) | D3D10_COLOR_WRITE_ENABLE_BLUE) | D3D10_COLOR_WRITE_ENABLE_ALPHA) +} + +struct D3D10_BLEND_DESC { + BOOL AlphaToCoverageEnable; + BOOL[8] BlendEnable; + D3D10_BLEND SrcBlend; + D3D10_BLEND DestBlend; + D3D10_BLEND_OP BlendOp; + D3D10_BLEND SrcBlendAlpha; + D3D10_BLEND DestBlendAlpha; + D3D10_BLEND_OP BlendOpAlpha; + UINT8[8] RenderTargetWriteMask; +} + +interface ID3D10BlendState : ID3D10DeviceChild { + extern(Windows) : + void GetDesc(D3D10_BLEND_DESC *pDesc); +} + +struct D3D10_RASTERIZER_DESC { + D3D10_FILL_MODE FillMode; + D3D10_CULL_MODE CullMode; + BOOL FrontCounterClockwise; + INT DepthBias; + FLOAT DepthBiasClamp; + FLOAT SlopeScaledDepthBias; + BOOL DepthClipEnable; + BOOL ScissorEnable; + BOOL MultisampleEnable; + BOOL AntialiasedLineEnable; +} + +interface ID3D10RasterizerState : ID3D10DeviceChild { + extern(Windows) : + void GetDesc(D3D10_RASTERIZER_DESC *pDesc); +} + +UINT D3D10CalcSubresource(UINT MipSlice, UINT ArraySlice, UINT MipLevels) { + return MipSlice + ArraySlice * MipLevels; +} + +struct D3D10_SUBRESOURCE_DATA { + void *pSysMem; + UINT SysMemPitch; + UINT SysMemSlicePitch; +} + +interface ID3D10Resource : ID3D10DeviceChild { + extern(Windows) : + void GetType(D3D10_RESOURCE_DIMENSION *rType); + void SetEvictionPriority(UINT EvictionPriority); + UINT GetEvictionPriority(); +} + +struct D3D10_BUFFER_DESC { + UINT ByteWidth; + D3D10_USAGE Usage; + UINT BindFlags; + UINT CPUAccessFlags; + UINT MiscFlags; +} + +interface ID3D10Buffer : ID3D10Resource { + extern(Windows) : + HRESULT Map(D3D10_MAP MapType, UINT MapFlags, void **ppData); + void Unmap(); + void GetDesc(D3D10_BUFFER_DESC *pDesc); +} + +struct D3D10_TEXTURE1D_DESC { + UINT Width; + UINT MipLevels; + UINT ArraySize; + DXGI_FORMAT Format; + D3D10_USAGE Usage; + UINT BindFlags; + UINT CPUAccessFlags; + UINT MiscFlags; +} + +interface ID3D10Texture1D : ID3D10Resource { + extern(Windows) : + HRESULT Map(UINT Subresource, D3D10_MAP MapType, UINT MapFlags, void **ppData); + void Unmap(UINT Subresource); + void GetDesc(D3D10_TEXTURE1D_DESC *pDesc); +} + +struct D3D10_TEXTURE2D_DESC { + UINT Width; + UINT Height; + UINT MipLevels; + UINT ArraySize; + DXGI_FORMAT Format; + DXGI_SAMPLE_DESC SampleDesc; + D3D10_USAGE Usage; + UINT BindFlags; + UINT CPUAccessFlags; + UINT MiscFlags; +} + +struct D3D10_MAPPED_TEXTURE2D { + void *pData; + UINT RowPitch; +} + +interface ID3D10Texture2D : ID3D10Resource { + extern(Windows) : + HRESULT Map(UINT Subresource, D3D10_MAP MapType, UINT MapFlags, D3D10_MAPPED_TEXTURE2D *pMappedTex2D); + void Unmap(UINT Subresource); + void GetDesc(D3D10_TEXTURE2D_DESC *pDesc); +} + +struct D3D10_TEXTURE3D_DESC { + UINT Width; + UINT Height; + UINT Depth; + UINT MipLevels; + DXGI_FORMAT Format; + D3D10_USAGE Usage; + UINT BindFlags; + UINT CPUAccessFlags; + UINT MiscFlags; +} + +struct D3D10_MAPPED_TEXTURE3D { + void *pData; + UINT RowPitch; + UINT DepthPitch; +} + +interface ID3D10Texture3D : ID3D10Resource { + extern(Windows) : + HRESULT Map(UINT Subresource, D3D10_MAP MapType, UINT MapFlags, D3D10_MAPPED_TEXTURE3D *pMappedTex3D); + void Unmap(UINT Subresource); + void GetDesc(D3D10_TEXTURE3D_DESC *pDesc); +} + +enum D3D10_TEXTURECUBE_FACE { + D3D10_TEXTURECUBE_FACE_POSITIVE_X = 0, + D3D10_TEXTURECUBE_FACE_NEGATIVE_X, + D3D10_TEXTURECUBE_FACE_POSITIVE_Y, + D3D10_TEXTURECUBE_FACE_NEGATIVE_Y, + D3D10_TEXTURECUBE_FACE_POSITIVE_Z, + D3D10_TEXTURECUBE_FACE_NEGATIVE_Z +} + +interface ID3D10View : ID3D10DeviceChild { + extern(Windows) : + void GetResource(ID3D10Resource *ppResource); +} + +struct D3D10_BUFFER_SRV { + UINT ElementOffset; + UINT ElementWidth; +} + +struct D3D10_TEX1D_SRV { + UINT MostDetailedMip; + UINT MipLevels; +} + +struct D3D10_TEX1D_ARRAY_SRV { + UINT MostDetailedMip; + UINT MipLevels; + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_TEX2D_SRV { + UINT MostDetailedMip; + UINT MipLevels; +} + +struct D3D10_TEX2D_ARRAY_SRV { + UINT MostDetailedMip; + UINT MipLevels; + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_TEX3D_SRV { + UINT MostDetailedMip; + UINT MipLevels; +} + +struct D3D10_TEXCUBE_SRV { + UINT MostDetailedMip; + UINT MipLevels; +} + +struct D3D10_TEX2DMS_SRV { + UINT UnusedField_NothingToDefine; +} + +struct D3D10_TEX2DMS_ARRAY_SRV { + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_SHADER_RESOURCE_VIEW_DESC { + DXGI_FORMAT Format; + D3D10_SRV_DIMENSION ViewDimension; + union { + D3D10_BUFFER_SRV Buffer; + D3D10_TEX1D_SRV Texture1D; + D3D10_TEX1D_ARRAY_SRV Texture1DArray; + D3D10_TEX2D_SRV Texture2D; + D3D10_TEX2D_ARRAY_SRV Texture2DArray; + D3D10_TEX2DMS_SRV Texture2DMS; + D3D10_TEX2DMS_ARRAY_SRV Texture2DMSArray; + D3D10_TEX3D_SRV Texture3D; + D3D10_TEXCUBE_SRV TextureCube; + } +} + +interface ID3D10ShaderResourceView : ID3D10View { + extern(Windows) : + void GetDesc(D3D10_SHADER_RESOURCE_VIEW_DESC *pDesc); +} + +struct D3D10_BUFFER_RTV { + UINT ElementOffset; + UINT ElementWidth; +} + +struct D3D10_TEX1D_RTV { + UINT MipSlice; +} + +struct D3D10_TEX1D_ARRAY_RTV { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_TEX2D_RTV { + UINT MipSlice; +} + +struct D3D10_TEX2DMS_RTV { + UINT UnusedField_NothingToDefine; +} + +struct D3D10_TEX2D_ARRAY_RTV { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_TEX2DMS_ARRAY_RTV { + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_TEX3D_RTV { + UINT MipSlice; + UINT FirstWSlice; + UINT WSize; +} + +struct D3D10_RENDER_TARGET_VIEW_DESC { + DXGI_FORMAT Format; + D3D10_RTV_DIMENSION ViewDimension; + union { + D3D10_BUFFER_RTV Buffer; + D3D10_TEX1D_RTV Texture1D; + D3D10_TEX1D_ARRAY_RTV Texture1DArray; + D3D10_TEX2D_RTV Texture2D; + D3D10_TEX2D_ARRAY_RTV Texture2DArray; + D3D10_TEX2DMS_RTV Texture2DMS; + D3D10_TEX2DMS_ARRAY_RTV Texture2DMSArray; + D3D10_TEX3D_RTV Texture3D; + } +} + +interface ID3D10RenderTargetView : ID3D10View { + extern(Windows) : + void GetDesc(D3D10_RENDER_TARGET_VIEW_DESC *pDesc); +} + +struct D3D10_TEX1D_DSV { + UINT MipSlice; +} + +struct D3D10_TEX1D_ARRAY_DSV { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_TEX2D_DSV { + UINT MipSlice; +} + +struct D3D10_TEX2D_ARRAY_DSV { + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_TEX2DMS_DSV { + UINT UnusedField_NothingToDefine; +} + +struct D3D10_TEX2DMS_ARRAY_DSV { + UINT FirstArraySlice; + UINT ArraySize; +} + +struct D3D10_DEPTH_STENCIL_VIEW_DESC { + DXGI_FORMAT Format; + D3D10_DSV_DIMENSION ViewDimension; + union { + D3D10_TEX1D_DSV Texture1D; + D3D10_TEX1D_ARRAY_DSV Texture1DArray; + D3D10_TEX2D_DSV Texture2D; + D3D10_TEX2D_ARRAY_DSV Texture2DArray; + D3D10_TEX2DMS_DSV Texture2DMS; + D3D10_TEX2DMS_ARRAY_DSV Texture2DMSArray; + } +} + +interface ID3D10DepthStencilView : ID3D10View { + extern(Windows) : + void GetDesc(D3D10_DEPTH_STENCIL_VIEW_DESC *pDesc); +} + +interface ID3D10VertexShader : ID3D10DeviceChild { } + +interface ID3D10GeometryShader : ID3D10DeviceChild { } + +interface ID3D10PixelShader : ID3D10DeviceChild { } + +interface ID3D10InputLayout : ID3D10DeviceChild { } + +enum D3D10_FILTER { + D3D10_FILTER_MIN_MAG_MIP_POINT = 0x00, + D3D10_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x01, + D3D10_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x04, + D3D10_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x05, + D3D10_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10, + D3D10_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11, + D3D10_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14, + D3D10_FILTER_MIN_MAG_MIP_LINEAR = 0x15, + D3D10_FILTER_ANISOTROPIC = 0x55, + D3D10_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80, + D3D10_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81, + D3D10_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84, + D3D10_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85, + D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90, + D3D10_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91, + D3D10_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94, + D3D10_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95, + D3D10_FILTER_COMPARISON_ANISOTROPIC = 0xd5, + D3D10_FILTER_TEXT_1BIT = 0x80000000 +} + + +enum D3D10_FILTER_TYPE { + D3D10_FILTER_TYPE_POINT = 0, + D3D10_FILTER_TYPE_LINEAR +} + +const D3D10_FILTER_TYPE_MASK = 0x03; + +const D3D10_MIN_FILTER_SHIFT = 4; + +const D3D10_MAG_FILTER_SHIFT = 2; + +const D3D10_MIP_FILTER_SHIFT = 0; + +const D3D10_COMPARISON_FILTERING_BIT = 0x80; + +const D3D10_ANISOTROPIC_FILTERING_BIT = 0x40; + +const D3D10_TEXT_1BIT_BIT = 0x80000000; + +D3D10_FILTER D3D10_ENCODE_BASIC_FILTER(int min, int mag, int mip, bool bComparison) { + return cast(D3D10_FILTER)(((bComparison) ? D3D10_COMPARISON_FILTERING_BIT : 0) | + ((min & D3D10_FILTER_TYPE_MASK) << D3D10_MIN_FILTER_SHIFT) | + ((mag & D3D10_FILTER_TYPE_MASK) << D3D10_MAG_FILTER_SHIFT) | + ((mip & D3D10_FILTER_TYPE_MASK) << D3D10_MIP_FILTER_SHIFT)); +} + +D3D10_FILTER D3D10_ENCODE_ANISOTROPIC_FILTER(bool bComparison) { + return cast(D3D10_FILTER)(D3D10_ANISOTROPIC_FILTERING_BIT | + D3D10_ENCODE_BASIC_FILTER(D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR, + D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR, D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR, + bComparison)); +} + +D3D10_FILTER_TYPE D3D10_DECODE_MIN_FILTER(D3D10_FILTER d3d10Filter) { + return cast(D3D10_FILTER_TYPE)((d3d10Filter >> D3D10_MIN_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK); +} + +D3D10_FILTER_TYPE D3D10_DECODE_MAG_FILTER(D3D10_FILTER d3d10Filter) { + return cast(D3D10_FILTER_TYPE)((d3d10Filter >> D3D10_MAG_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK); +} + +D3D10_FILTER_TYPE D3D10_DECODE_MIP_FILTER(D3D10_FILTER d3d10Filter) { + return cast(D3D10_FILTER_TYPE)((d3d10Filter >> D3D10_MIP_FILTER_SHIFT) & D3D10_FILTER_TYPE_MASK); +} + +bool D3D10_DECODE_IS_COMPARISON_FILTER(D3D10_FILTER d3d10Filter) { + return (d3d10Filter & D3D10_COMPARISON_FILTERING_BIT) == D3D10_COMPARISON_FILTERING_BIT; +} + +bool D3D10_DECODE_IS_ANISOTROPIC_FILTER(D3D10_FILTER d3d10Filter) { + return ((d3d10Filter & D3D10_ANISOTROPIC_FILTERING_BIT) && + (D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIN_FILTER(d3d10Filter)) && + (D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MAG_FILTER(d3d10Filter)) && + (D3D10_FILTER_TYPE.D3D10_FILTER_TYPE_LINEAR == D3D10_DECODE_MIP_FILTER(d3d10Filter))); +} + +bool D3D10_DECODE_IS_TEXT_1BIT_FILTER(D3D10_FILTER d3d10Filter) { + return d3d10Filter == D3D10_TEXT_1BIT_BIT; +} + +enum D3D10_TEXTURE_ADDRESS_MODE { + D3D10_TEXTURE_ADDRESS_WRAP = 1, + D3D10_TEXTURE_ADDRESS_MIRROR, + D3D10_TEXTURE_ADDRESS_CLAMP, + D3D10_TEXTURE_ADDRESS_BORDER, + D3D10_TEXTURE_ADDRESS_MIRROR_ONCE +} + +struct D3D10_SAMPLER_DESC { + D3D10_FILTER Filter; + D3D10_TEXTURE_ADDRESS_MODE AddressU; + D3D10_TEXTURE_ADDRESS_MODE AddressV; + D3D10_TEXTURE_ADDRESS_MODE AddressW; + FLOAT MipLODBias; + UINT MaxAnisotropy; + D3D10_COMPARISON_FUNC ComparisonFunc; + FLOAT[4] BorderColor; + FLOAT MinLOD; + FLOAT MaxLOD; +} + +interface ID3D10SamplerState : ID3D10DeviceChild { + extern(Windows) : + void GetDesc(D3D10_SAMPLER_DESC *pDesc); +} + +enum D3D10_FORMAT_SUPPORT { + D3D10_FORMAT_SUPPORT_BUFFER = 0x000001, + D3D10_FORMAT_SUPPORT_IA_VERTEX_BUFFER = 0x000002, + D3D10_FORMAT_SUPPORT_IA_INDEX_BUFFER = 0x000004, + D3D10_FORMAT_SUPPORT_SO_BUFFER = 0x000008, + D3D10_FORMAT_SUPPORT_TEXTURE1D = 0x000010, + D3D10_FORMAT_SUPPORT_TEXTURE2D = 0x000020, + D3D10_FORMAT_SUPPORT_TEXTURE3D = 0x000040, + D3D10_FORMAT_SUPPORT_TEXTURECUBE = 0x000080, + D3D10_FORMAT_SUPPORT_SHADER_LOAD = 0x000100, + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE = 0x000200, + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON = 0x000400, + D3D10_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT = 0x000800, + D3D10_FORMAT_SUPPORT_MIP = 0x001000, + D3D10_FORMAT_SUPPORT_MIP_AUTOGEN = 0x002000, + D3D10_FORMAT_SUPPORT_RENDER_TARGET = 0x004000, + D3D10_FORMAT_SUPPORT_BLENDABLE = 0x008000, + D3D10_FORMAT_SUPPORT_DEPTH_STENCIL = 0x010000, + D3D10_FORMAT_SUPPORT_CPU_LOCKABLE = 0x020000, + D3D10_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE = 0x040000, + D3D10_FORMAT_SUPPORT_DISPLAY = 0x080000, + D3D10_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT = 0x100000, + D3D10_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET = 0x200000, + D3D10_FORMAT_SUPPORT_MULTISAMPLE_LOAD = 0x400000, + D3D10_FORMAT_SUPPORT_SHADER_GATHER = 0x800000 +} + +interface ID3D10Asynchronous : ID3D10DeviceChild { + extern(Windows) : + void Begin(); + void End(); + HRESULT GetData(void *pData, UINT DataSize, UINT GetDataFlags); + UINT GetDataSize(); +} + +enum D3D10_ASYNC_GETDATA_FLAG { + D3D10_ASYNC_GETDATA_DONOTFLUSH = 0x1 +} + +enum D3D10_QUERY { + D3D10_QUERY_EVENT = 0, + D3D10_QUERY_OCCLUSION = (D3D10_QUERY_EVENT + 1), + D3D10_QUERY_TIMESTAMP = (D3D10_QUERY_OCCLUSION + 1), + D3D10_QUERY_TIMESTAMP_DISJOINT = (D3D10_QUERY_TIMESTAMP + 1), + D3D10_QUERY_PIPELINE_STATISTICS = (D3D10_QUERY_TIMESTAMP_DISJOINT + 1), + D3D10_QUERY_OCCLUSION_PREDICATE = (D3D10_QUERY_PIPELINE_STATISTICS + 1), + D3D10_QUERY_SO_STATISTICS = (D3D10_QUERY_OCCLUSION_PREDICATE + 1), + D3D10_QUERY_SO_OVERFLOW_PREDICATE = (D3D10_QUERY_SO_STATISTICS + 1) +} + +enum D3D10_QUERY_MISC_FLAG { + D3D10_QUERY_MISC_PREDICATEHINT = 0x01 +} + +struct D3D10_QUERY_DESC { + D3D10_QUERY Query; + UINT MiscFlags; +} + +interface ID3D10Query : ID3D10Asynchronous { + extern(Windows) : + void GetDesc(D3D10_QUERY_DESC *pDesc); +} + +interface ID3D10Predicate : ID3D10Query { } + +struct D3D10_QUERY_DATA_TIMESTAMP_DISJOINT { + UINT64 Frequency; + BOOL Disjoint; +} + +struct D3D10_QUERY_DATA_PIPELINE_STATISTICS { + UINT64 IAVertices; + UINT64 IAPrimitives; + UINT64 VSInvocations; + UINT64 GSInvocations; + UINT64 GSPrimitives; + UINT64 CInvocations; + UINT64 CPrimitives; + UINT64 PSInvocations; +} + +struct D3D10_QUERY_DATA_SO_STATISTICS { + UINT64 NumPrimitivesWritten; + UINT64 PrimitivesStorageNeeded; +} + +enum D3D10_COUNTER { + D3D10_COUNTER_GPU_IDLE = 0, + D3D10_COUNTER_VERTEX_PROCESSING = (D3D10_COUNTER_GPU_IDLE + 1), + D3D10_COUNTER_GEOMETRY_PROCESSING = (D3D10_COUNTER_VERTEX_PROCESSING + 1), + D3D10_COUNTER_PIXEL_PROCESSING = (D3D10_COUNTER_GEOMETRY_PROCESSING + 1), + D3D10_COUNTER_OTHER_GPU_PROCESSING = (D3D10_COUNTER_PIXEL_PROCESSING + 1), + D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION = (D3D10_COUNTER_OTHER_GPU_PROCESSING + 1), + D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION = (D3D10_COUNTER_HOST_ADAPTER_BANDWIDTH_UTILIZATION + 1), + D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION = (D3D10_COUNTER_LOCAL_VIDMEM_BANDWIDTH_UTILIZATION + 1), + D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION = (D3D10_COUNTER_VERTEX_THROUGHPUT_UTILIZATION + 1), + D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION = (D3D10_COUNTER_TRIANGLE_SETUP_THROUGHPUT_UTILIZATION + 1), + D3D10_COUNTER_VS_MEMORY_LIMITED = (D3D10_COUNTER_FILLRATE_THROUGHPUT_UTILIZATION + 1), + D3D10_COUNTER_VS_COMPUTATION_LIMITED = (D3D10_COUNTER_VS_MEMORY_LIMITED + 1), + D3D10_COUNTER_GS_MEMORY_LIMITED = (D3D10_COUNTER_VS_COMPUTATION_LIMITED + 1), + D3D10_COUNTER_GS_COMPUTATION_LIMITED = (D3D10_COUNTER_GS_MEMORY_LIMITED + 1), + D3D10_COUNTER_PS_MEMORY_LIMITED = (D3D10_COUNTER_GS_COMPUTATION_LIMITED + 1), + D3D10_COUNTER_PS_COMPUTATION_LIMITED = (D3D10_COUNTER_PS_MEMORY_LIMITED + 1), + D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE = (D3D10_COUNTER_PS_COMPUTATION_LIMITED + 1), + D3D10_COUNTER_TEXTURE_CACHE_HIT_RATE = (D3D10_COUNTER_POST_TRANSFORM_CACHE_HIT_RATE + 1), + D3D10_COUNTER_DEVICE_DEPENDENT_0 = 0x40000000 +} + +enum D3D10_COUNTER_TYPE { + D3D10_COUNTER_TYPE_FLOAT32 = 0, + D3D10_COUNTER_TYPE_UINT16 = (D3D10_COUNTER_TYPE_FLOAT32 + 1), + D3D10_COUNTER_TYPE_UINT32 = (D3D10_COUNTER_TYPE_UINT16 + 1), + D3D10_COUNTER_TYPE_UINT64 = (D3D10_COUNTER_TYPE_UINT32 + 1) +} + +struct D3D10_COUNTER_DESC { + D3D10_COUNTER Counter; + UINT MiscFlags; +} + +struct D3D10_COUNTER_INFO { + D3D10_COUNTER LastDeviceDependentCounter; + UINT NumSimultaneousCounters; + UINT8 NumDetectableParallelUnits; +} + +interface ID3D10Counter : ID3D10Asynchronous { + extern(Windows) : + void GetDesc(D3D10_COUNTER_DESC *pDesc); +} + +interface ID3D10Device : IUnknown { + extern(Windows) : + void VSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers); + void PSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews); + void PSSetShader(ID3D10PixelShader pPixelShader); + void PSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers); + void VSSetShader(ID3D10VertexShader pVertexShader); + void DrawIndexed(UINT IndexCount, UINT StartIndexLocation, INT BaseVertexLocation); + void Draw(UINT VertexCount, UINT StartVertexLocation); + void PSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers); + void IASetInputLayout(ID3D10InputLayout pInputLayout); + void IASetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppVertexBuffers, UINT* pStrides, UINT* pOffsets); + void IASetIndexBuffer(ID3D10Buffer pIndexBuffer, DXGI_FORMAT Format, UINT Offset); + void DrawIndexedInstanced(UINT IndexCountPerInstance, UINT InstanceCount, UINT StartIndexLocation, INT BaseVertexLocation, UINT StartInstanceLocation); + void DrawInstanced(UINT VertexCountPerInstance, UINT InstanceCount, UINT StartVertexLocation, UINT StartInstanceLocation); + void GSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers); + void GSSetShader(ID3D10GeometryShader pShader); + void IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY Topology); + void VSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews); + void VSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers); + void SetPredication(ID3D10Predicate pPredicate, BOOL PredicateValue); + void GSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews); + void GSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers); + void OMSetRenderTargets(UINT NumViews, ID3D10RenderTargetView* ppRenderTargetViews, ID3D10DepthStencilView pDepthStencilView); + void OMSetBlendState(ID3D10BlendState pBlendState, FLOAT[4] BlendFactor, UINT SampleMask); + void OMSetDepthStencilState(ID3D10DepthStencilState pDepthStencilState, UINT StencilRef); + void SOSetTargets(UINT NumBuffers, ID3D10Buffer* ppSOTargets, UINT* pOffsets); + void DrawAuto(); + void RSSetState(ID3D10RasterizerState pRasterizerState); + void RSSetViewports(UINT NumViewports, D3D10_VIEWPORT* pViewports); + void RSSetScissorRects(UINT NumRects, D3D10_RECT* pRects); + void CopySubresourceRegion(ID3D10Resource pDstResource, UINT DstSubresource, UINT DstX, UINT DstY, UINT DstZ, ID3D10Resource pSrcResource, UINT SrcSubresource, D3D10_BOX* pSrcBox); + void CopyResource(ID3D10Resource pDstResource, ID3D10Resource pSrcResource); + void UpdateSubresource(ID3D10Resource pDstResource, UINT DstSubresource, D3D10_BOX* pDstBox, void* pSrcData, UINT SrcRowPitch, UINT SrcDepthPitch); + void ClearRenderTargetView(ID3D10RenderTargetView pRenderTargetView, FLOAT[4]* ColorRGBA); + void ClearDepthStencilView(ID3D10DepthStencilView pDepthStencilView, UINT ClearFlags, FLOAT Depth, UINT8 Stencil); + void GenerateMips(ID3D10ShaderResourceView pShaderResourceView); + void ResolveSubresource(ID3D10Resource pDstResource, UINT DstSubresource, ID3D10Resource pSrcResource, UINT SrcSubresource, DXGI_FORMAT Format); + void VSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers); + void PSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews); + void PSGetShader(ID3D10PixelShader* ppPixelShader); + void PSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers); + void VSGetShader(ID3D10VertexShader* ppVertexShader); + void PSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers); + void IAGetInputLayout(ID3D10InputLayout* ppInputLayout); + void IAGetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppVertexBuffers, UINT* pStrides, UINT* pOffsets); + void IAGetIndexBuffer(ID3D10Buffer* pIndexBuffer, DXGI_FORMAT* Format, UINT* Offset); + void GSGetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D10Buffer* ppConstantBuffers); + void GSGetShader(ID3D10GeometryShader* ppGeometryShader); + void IAGetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY* pTopology); + void VSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews); + void VSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers); + void GetPredication(ID3D10Predicate* ppPredicate, BOOL* pPredicateValue); + void GSGetShaderResources(UINT StartSlot, UINT NumViews, ID3D10ShaderResourceView* ppShaderResourceViews); + void GSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D10SamplerState* ppSamplers); + void OMGetRenderTargets(UINT NumViews, ID3D10RenderTargetView* ppRenderTargetViews, ID3D10DepthStencilView* ppDepthStencilView); + void OMGetBlendState(ID3D10BlendState* ppBlendState, FLOAT[ 4 ] BlendFactor, UINT* pSampleMask); + void OMGetDepthStencilState(ID3D10DepthStencilState* ppDepthStencilState, UINT* pStencilRef); + void SOGetTargets(UINT NumBuffers, ID3D10Buffer* ppSOTargets, UINT* pOffsets); + void RSGetState(ID3D10RasterizerState* ppRasterizerState); + void RSGetViewports(UINT* NumViewports, D3D10_VIEWPORT* pViewports); + void RSGetScissorRects(UINT* NumRects, D3D10_RECT* pRects); + HRESULT GetDeviceRemovedReason(); + HRESULT SetExceptionMode(UINT RaiseFlags); + UINT GetExceptionMode(); + HRESULT GetPrivateData(REFGUID guid, UINT* pDataSize, void* pData); + HRESULT SetPrivateData(REFGUID guid, UINT DataSize, void* pData); + HRESULT SetPrivateDataInterface(REFGUID guid, IUnknown pData); + void ClearState(); + void Flush(); + HRESULT CreateBuffer(D3D10_BUFFER_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Buffer* ppBuffer); + HRESULT CreateTexture1D(D3D10_TEXTURE1D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture1D* ppTexture1D); + HRESULT CreateTexture2D(D3D10_TEXTURE2D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture2D* ppTexture2D); + HRESULT CreateTexture3D(D3D10_TEXTURE3D_DESC* pDesc, D3D10_SUBRESOURCE_DATA* pInitialData, ID3D10Texture3D* ppTexture3D); + HRESULT CreateShaderResourceView(ID3D10Resource pResource, D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc, ID3D10ShaderResourceView* ppSRView); + HRESULT CreateRenderTargetView(ID3D10Resource pResource, D3D10_RENDER_TARGET_VIEW_DESC* pDesc, ID3D10RenderTargetView* ppRTView); + HRESULT CreateDepthStencilView(ID3D10Resource pResource, D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc, ID3D10DepthStencilView* ppDepthStencilView); + HRESULT CreateInputLayout(D3D10_INPUT_ELEMENT_DESC* pInputElementDescs, UINT NumElements, void* pShaderBytecodeWithInputSignature, SIZE_T BytecodeLength, ID3D10InputLayout* ppInputLayout); + HRESULT CreateVertexShader(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10VertexShader* ppVertexShader); + HRESULT CreateGeometryShader(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10GeometryShader* ppGeometryShader); + HRESULT CreateGeometryShaderWithStreamOutput(void* pShaderBytecode, SIZE_T BytecodeLength, D3D10_SO_DECLARATION_ENTRY* pSODeclaration, UINT NumEntries, UINT OutputStreamStride, ID3D10GeometryShader* ppGeometryShader); + HRESULT CreatePixelShader(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10PixelShader* ppPixelShader); + HRESULT CreateBlendState(D3D10_BLEND_DESC* pBlendStateDesc, ID3D10BlendState* ppBlendState); + HRESULT CreateDepthStencilState(D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc, ID3D10DepthStencilState* ppDepthStencilState); + HRESULT CreateRasterizerState(D3D10_RASTERIZER_DESC* pRasterizerDesc, ID3D10RasterizerState* ppRasterizerState); + HRESULT CreateSamplerState(D3D10_SAMPLER_DESC* pSamplerDesc, ID3D10SamplerState* ppSamplerState); + HRESULT CreateQuery(D3D10_QUERY_DESC* pQueryDesc, ID3D10Query* ppQuery); + HRESULT CreatePredicate(D3D10_QUERY_DESC* pPredicateDesc, ID3D10Predicate* ppPredicate); + HRESULT CreateCounter(D3D10_COUNTER_DESC* pCounterDesc, ID3D10Counter* ppCounter); + HRESULT CheckFormatSupport(DXGI_FORMAT Format, UINT* pFormatSupport); + HRESULT CheckMultisampleQualityLevels(DXGI_FORMAT Format, UINT SampleCount, UINT* pNumQualityLevels); + void CheckCounterInfo(D3D10_COUNTER_INFO* pCounterInfo); + HRESULT CheckCounter(D3D10_COUNTER_DESC* pDesc, D3D10_COUNTER_TYPE* pType, UINT* pActiveCounters, LPSTR szName, UINT* pNameLength, LPSTR szUnits, UINT* pUnitsLength, LPSTR szDescription, UINT* pDescriptionLength); + UINT GetCreationFlags(); + HRESULT OpenSharedResource(HANDLE hResource, REFIID ReturnedInterface, void** ppResource); + void SetTextFilterSize(UINT Width, UINT Height); + void GetTextFilterSize(UINT* pWidth, UINT* pHeight); +} + +interface ID3D10Multithread : IUnknown { + extern(Windows) : + void Enter(); + void Leave(); + BOOL SetMultithreadProtected(BOOL bMTProtect); + BOOL GetMultithreadProtected(); +} + +enum D3D10_CREATE_DEVICE_FLAG { + D3D10_CREATE_DEVICE_SINGLETHREADED = 0x01, + D3D10_CREATE_DEVICE_DEBUG = 0x02, + D3D10_CREATE_DEVICE_SWITCH_TO_REF = 0x04, + D3D10_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x08 +} + +const D3D10_SDK_VERSION = 29; + +extern(C) const GUID IID_ID3D10DeviceChild = {0x9B7E4C00, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10DepthStencilState = {0x2B4B1CC8, 0xA4AD, 0x41f8, [0x83, 0x22, 0xCA, 0x86, 0xFC, 0x3E, 0xC6, 0x75]}; +extern(C) const GUID IID_ID3D10BlendState = {0xEDAD8D19, 0x8A35, 0x4d6d, [0x85, 0x66, 0x2E, 0xA2, 0x76, 0xCD, 0xE1, 0x61]}; +extern(C) const GUID IID_ID3D10RasterizerState = {0xA2A07292, 0x89AF, 0x4345, [0xBE, 0x2E, 0xC5, 0x3D, 0x9F, 0xBB, 0x6E, 0x9F]}; +extern(C) const GUID IID_ID3D10Resource = {0x9B7E4C01, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Buffer = {0x9B7E4C02, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Texture1D = {0x9B7E4C03, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Texture2D = {0x9B7E4C04, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Texture3D = {0x9B7E4C05, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10View = {0xC902B03F, 0x60A7, 0x49BA, [0x99, 0x36, 0x2A, 0x3A, 0xB3, 0x7A, 0x7E, 0x33]}; +extern(C) const GUID IID_ID3D10ShaderResourceView = {0x9B7E4C07, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10RenderTargetView = {0x9B7E4C08, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10DepthStencilView = {0x9B7E4C09, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10VertexShader = {0x9B7E4C0A, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10GeometryShader = {0x6316BE88, 0x54CD, 0x4040, [0xAB, 0x44, 0x20, 0x46, 0x1B, 0xC8, 0x1F, 0x68]}; +extern(C) const GUID IID_ID3D10PixelShader = {0x4968B601, 0x9D00, 0x4cde, [0x83, 0x46, 0x8E, 0x7F, 0x67, 0x58, 0x19, 0xB6]}; +extern(C) const GUID IID_ID3D10InputLayout = {0x9B7E4C0B, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10SamplerState = {0x9B7E4C0C, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Asynchronous = {0x9B7E4C0D, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Query = {0x9B7E4C0E, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Predicate = {0x9B7E4C10, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Counter = {0x9B7E4C11, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Device = {0x9B7E4C0F, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; +extern(C) const GUID IID_ID3D10Multithread = {0x9B7E4E00, 0x342C, 0x4106, [0xA1, 0x9F, 0x4F, 0x27, 0x04, 0xF6, 0x89, 0xF0]}; + +public import win32.directx.d3d10shader; +public import win32.directx.d3d10effect; ADDED src/win32/directx/d3d10effect.d Index: src/win32/directx/d3d10effect.d ================================================================== --- src/win32/directx/d3d10effect.d +++ src/win32/directx/d3d10effect.d @@ -0,0 +1,795 @@ +/***********************************************************************\ +* d3d10effect.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.d3d10effect; + +private import win32.windows; +private import win32.directx.d3d10; + + +enum D3D10_DEVICE_STATE_TYPES { + D3D10_DST_SO_BUFFERS = 1, + D3D10_DST_OM_RENDER_TARGETS, + D3D10_DST_OM_DEPTH_STENCIL_STATE, + D3D10_DST_OM_BLEND_STATE, + D3D10_DST_VS, + D3D10_DST_VS_SAMPLERS, + D3D10_DST_VS_SHADER_RESOURCES, + D3D10_DST_VS_CONSTANT_BUFFERS, + D3D10_DST_GS, + D3D10_DST_GS_SAMPLERS, + D3D10_DST_GS_SHADER_RESOURCES, + D3D10_DST_GS_CONSTANT_BUFFERS, + D3D10_DST_PS, + D3D10_DST_PS_SAMPLERS, + D3D10_DST_PS_SHADER_RESOURCES, + D3D10_DST_PS_CONSTANT_BUFFERS, + D3D10_DST_IA_VERTEX_BUFFERS, + D3D10_DST_IA_INDEX_BUFFER, + D3D10_DST_IA_INPUT_LAYOUT, + D3D10_DST_IA_PRIMITIVE_TOPOLOGY, + D3D10_DST_RS_VIEWPORTS, + D3D10_DST_RS_SCISSOR_RECTS, + D3D10_DST_RS_RASTERIZER_STATE, + D3D10_DST_PREDICATION +} + +struct D3D10_STATE_BLOCK_MASK { + BYTE VS; + BYTE[2] VSSamplers; + BYTE[16] VSShaderResources; + BYTE[2] VSConstantBuffers; + BYTE GS; + BYTE[2] GSSamplers; + BYTE[16] GSShaderResources; + BYTE[2] GSConstantBuffers; + BYTE PS; + BYTE[2] PSSamplers; + BYTE[16] PSShaderResources; + BYTE[2] PSConstantBuffers; + BYTE[2] IAVertexBuffers; + BYTE IAIndexBuffer; + BYTE IAInputLayout; + BYTE IAPrimitiveTopology; + BYTE OMRenderTargets; + BYTE OMDepthStencilState; + BYTE OMBlendState; + BYTE RSViewports; + BYTE RSScissorRects; + BYTE RSRasterizerState; + BYTE SOBuffers; + BYTE Predication; +} + +extern (C) const GUID IID_ID3D10StateBlock = {0x803425a, 0x57f5, 0x4dd6, [0x94, 0x65, 0xa8, 0x75, 0x70, 0x83, 0x4a, 0x08]}; + +interface ID3D10StateBlock : IUnknown { + extern(Windows) : + HRESULT Capture(); + HRESULT Apply(); + HRESULT ReleaseAllDeviceObjects(); + HRESULT GetDevice(ID3D10Device ppDevice); +} + +HRESULT D3D10StateBlockMaskUnion(D3D10_STATE_BLOCK_MASK* pA, D3D10_STATE_BLOCK_MASK* pB, D3D10_STATE_BLOCK_MASK* pResult); +HRESULT D3D10StateBlockMaskIntersect(D3D10_STATE_BLOCK_MASK* pA, D3D10_STATE_BLOCK_MASK* pB, D3D10_STATE_BLOCK_MASK* pResult); +HRESULT D3D10StateBlockMaskDifference(D3D10_STATE_BLOCK_MASK* pA, D3D10_STATE_BLOCK_MASK* pB, D3D10_STATE_BLOCK_MASK* pResult); +HRESULT D3D10StateBlockMaskEnableCapture(D3D10_STATE_BLOCK_MASK* pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength); +HRESULT D3D10StateBlockMaskDisableCapture(D3D10_STATE_BLOCK_MASK* pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength); +HRESULT D3D10StateBlockMaskEnableAll(D3D10_STATE_BLOCK_MASK* pMask); +HRESULT D3D10StateBlockMaskDisableAll(D3D10_STATE_BLOCK_MASK* pMask); +BOOL D3D10StateBlockMaskGetSetting(D3D10_STATE_BLOCK_MASK* pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT Entry); +HRESULT D3D10CreateStateBlock(ID3D10Device pDevice, D3D10_STATE_BLOCK_MASK* pStateBlockMask, ID3D10StateBlock ppStateBlock); + +const D3D10_EFFECT_COMPILE_CHILD_EFFECT = 1 << 0; +const D3D10_EFFECT_COMPILE_ALLOW_SLOW_OPS = 1 << 1; +const D3D10_EFFECT_SINGLE_THREADED = 1 << 3; +const D3D10_EFFECT_VARIABLE_POOLED = 1 << 0; +const D3D10_EFFECT_VARIABLE_ANNOTATION = 1 << 1; +const D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT = 1 << 2; + +struct D3D10_EFFECT_TYPE_DESC { + LPCSTR TypeName; + D3D10_SHADER_VARIABLE_CLASS Class; + D3D10_SHADER_VARIABLE_TYPE Type; + UINT Elements; + UINT Members; + UINT Rows; + UINT Columns; + UINT PackedSize; + UINT UnpackedSize; + UINT Stride; +} + +extern (C) const GUID IID_ID3D10EffectType = {0x4e9e1ddc, 0xcd9d, 0x4772, [0xa8, 0x37, 0x0, 0x18, 0x0b, 0x9b, 0x88, 0xfd]}; + +interface ID3D10EffectType { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + HRESULT GetDesc(D3D10_EFFECT_TYPE_DESC* pDesc); + ID3D10EffectType GetMemberTypeByIndex(UINT Index); + ID3D10EffectType GetMemberTypeByName(LPCSTR Name); + ID3D10EffectType GetMemberTypeBySemantic(LPCSTR Semantic); + LPCSTR GetMemberName(UINT Index); + LPCSTR GetMemberSemantic(UINT Index); + */ +} + +struct D3D10_EFFECT_VARIABLE_DESC { + LPCSTR Name; + LPCSTR Semantic; + UINT Flags; + UINT Annotations; + UINT BufferOffset; + UINT ExplicitBindPoint; +} + +extern (C) const GUID IID_ID3D10EffectVariable = {0xae897105, 0x00e6, 0x45bf, [0xbb, 0x8e, 0x28, 0x1d, 0xd6, 0xdb, 0x8e, 0x1b]}; + +interface ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + */ +} + +extern (C) const GUID IID_ID3D10EffectScalarVariable = {0xe48f7b, 0xd2c8, 0x49e8, [0xa8, 0x6c, 0x2, 0x2d, 0xee, 0x53, 0x43, 0x1f]}; + +interface ID3D10EffectScalarVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT ByteOffset, UINT ByteCount); + HRESULT GetRawValue(void* pData, UINT ByteOffset, UINT ByteCount); + HRESULT SetFloat(float Value); + HRESULT GetFloat(float* pValue); + HRESULT SetFloatArray(float* pData, UINT Offset, UINT Count); + HRESULT GetFloatArray(float* pData, UINT Offset, UINT Count); + HRESULT SetInt(int Value); + HRESULT GetInt(int* pValue); + HRESULT SetIntArray(int* pData, UINT Offset, UINT Count); + HRESULT GetIntArray(int* pData, UINT Offset, UINT Count); + HRESULT SetBool(BOOL Value); + HRESULT GetBool(BOOL* pValue); + HRESULT SetBoolArray(BOOL* pData, UINT Offset, UINT Count); + HRESULT GetBoolArray(BOOL* pData, UINT Offset, UINT Count); + */ +} + +extern (C) const GUID IID_ID3D10EffectVectorVariable = {0x62b98c44, 0x1f82, 0x4c67, [0xbc, 0xd0, 0x72, 0xcf, 0x8f, 0x21, 0x7e, 0x81]}; + +interface ID3D10EffectVectorVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT ByteOffset, UINT ByteCount); + HRESULT GetRawValue(void* pData, UINT ByteOffset, UINT ByteCount); + HRESULT SetBoolVector (BOOL* pData); + HRESULT SetIntVector (int* pData); + HRESULT SetFloatVector(float* pData); + HRESULT GetBoolVector (BOOL* pData); + HRESULT GetIntVector (int* pData); + HRESULT GetFloatVector(float* pData); + HRESULT SetBoolVectorArray (BOOL* pData, UINT Offset, UINT Count); + HRESULT SetIntVectorArray (int* pData, UINT Offset, UINT Count); + HRESULT SetFloatVectorArray(float* pData, UINT Offset, UINT Count); + HRESULT GetBoolVectorArray (BOOL* pData, UINT Offset, UINT Count); + HRESULT GetIntVectorArray (int* pData, UINT Offset, UINT Count); + HRESULT GetFloatVectorArray(float* pData, UINT Offset, UINT Count); + */ +} + +extern (C) const GUID IID_ID3D10EffectMatrixVariable = {0x50666c24, 0xb82f, 0x4eed, [0xa1, 0x72, 0x5b, 0x6e, 0x7e, 0x85, 0x22, 0xe0]}; + +interface ID3D10EffectMatrixVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT ByteOffset, UINT ByteCount); + HRESULT GetRawValue(void* pData, UINT ByteOffset, UINT ByteCount); + HRESULT SetMatrix(float* pData); + HRESULT GetMatrix(float* pData); + HRESULT SetMatrixArray(float* pData, UINT Offset, UINT Count); + HRESULT GetMatrixArray(float* pData, UINT Offset, UINT Count); + HRESULT SetMatrixTranspose(float* pData); + HRESULT GetMatrixTranspose(float* pData); + HRESULT SetMatrixTransposeArray(float* pData, UINT Offset, UINT Count); + HRESULT GetMatrixTransposeArray(float* pData, UINT Offset, UINT Count); + */ +} + +extern (C) const GUID IID_ID3D10EffectStringVariable = {0x71417501, 0x8df9, 0x4e0a, [0xa7, 0x8a, 0x25, 0x5f, 0x97, 0x56, 0xba, 0xff]}; + +interface ID3D10EffectStringVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetString(LPCSTR* ppString); + HRESULT GetStringArray(LPCSTR* ppStrings, UINT Offset, UINT Count); + */ +} + +extern (C) const GUID IID_ID3D10EffectShaderResourceVariable = {0xc0a7157b, 0xd872, 0x4b1d, [0x80, 0x73, 0xef, 0xc2, 0xac, 0xd4, 0xb1, 0xfc]}; + +interface ID3D10EffectShaderResourceVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT SetResource(ID3D10ShaderResourceView pResource); + HRESULT GetResource(ID3D10ShaderResourceView* ppResource); + HRESULT SetResourceArray(ID3D10ShaderResourceView* ppResources, UINT Offset, UINT Count); + HRESULT GetResourceArray(ID3D10ShaderResourceView* ppResources, UINT Offset, UINT Count); + */ +} + +extern (C) const GUID IID_ID3D10EffectRenderTargetViewVariable = {0x28ca0cc3, 0xc2c9, 0x40bb, [0xb5, 0x7f, 0x67, 0xb7, 0x37, 0x12, 0x2b, 0x17]}; + +interface ID3D10EffectRenderTargetViewVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT SetRenderTarget(ID3D10RenderTargetView pResource); + HRESULT GetRenderTarget(ID3D10RenderTargetView* ppResource); + HRESULT SetRenderTargetArray(ID3D10RenderTargetView* ppResources, UINT Offset, UINT Count); + HRESULT GetRenderTargetArray(ID3D10RenderTargetView* ppResources, UINT Offset, UINT Count); + */ +} + +extern (C) const GUID IID_ID3D10EffectDepthStencilViewVariable = {0x3e02c918, 0xcc79, 0x4985, [0xb6, 0x22, 0x2d, 0x92, 0xad, 0x70, 0x16, 0x23]}; + +interface ID3D10EffectDepthStencilViewVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT SetDepthStencil(ID3D10DepthStencilView pResource); + HRESULT GetDepthStencil(ID3D10DepthStencilView* ppResource); + HRESULT SetDepthStencilArray(ID3D10DepthStencilView* ppResources, UINT Offset, UINT Count); + HRESULT GetDepthStencilArray(ID3D10DepthStencilView* ppResources, UINT Offset, UINT Count); + */ +} + +extern (C) const GUID IID_ID3D10EffectConstantBuffer = {0x56648f4d, 0xcc8b, 0x4444, [0xa5, 0xad, 0xb5, 0xa3, 0xd7, 0x6e, 0x91, 0xb3]}; + +interface ID3D10EffectConstantBuffer : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT SetConstantBuffer(ID3D10Buffer pConstantBuffer); + HRESULT GetConstantBuffer(ID3D10Buffer* ppConstantBuffer); + HRESULT SetTextureBuffer(ID3D10ShaderResourceView pTextureBuffer); + HRESULT GetTextureBuffer(ID3D10ShaderResourceView* ppTextureBuffer); + */ +} + +struct D3D10_EFFECT_SHADER_DESC { + BYTE* pInputSignature; + BOOL IsInline; + BYTE* pBytecode; + UINT BytecodeLength; + LPCSTR SODecl; + UINT NumInputSignatureEntries; + UINT NumOutputSignatureEntries; +} + +extern (C) const GUID IID_ID3D10EffectShaderVariable = {0x80849279, 0xc799, 0x4797, [0x8c, 0x33, 0x4, 0x7, 0xa0, 0x7d, 0x9e, 0x6]}; + +interface ID3D10EffectShaderVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetShaderDesc(UINT ShaderIndex, D3D10_EFFECT_SHADER_DESC* pDesc); + HRESULT GetVertexShader(UINT ShaderIndex, ID3D10VertexShader* ppVS); + HRESULT GetGeometryShader(UINT ShaderIndex, ID3D10GeometryShader* ppGS); + HRESULT GetPixelShader(UINT ShaderIndex, ID3D10PixelShader* ppPS); + HRESULT GetInputSignatureElementDesc(UINT ShaderIndex, UINT Element, D3D10_SIGNATURE_PARAMETER_DESC* pDesc); + HRESULT GetOutputSignatureElementDesc(UINT ShaderIndex, UINT Element, D3D10_SIGNATURE_PARAMETER_DESC* pDesc); + */ +} + +extern (C) const GUID IID_ID3D10EffectBlendVariable = {0x1fcd2294, 0xdf6d, 0x4eae, [0x86, 0xb3, 0xe, 0x91, 0x60, 0xcf, 0xb0, 0x7b]}; + +interface ID3D10EffectBlendVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetBlendState(UINT Index, ID3D10BlendState* ppBlendState); + HRESULT GetBackingStore(UINT Index, D3D10_BLEND_DESC* pBlendDesc); + */ +} + +extern (C) const GUID IID_ID3D10EffectDepthStencilVariable = {0xaf482368, 0x330a, 0x46a5, [0x9a, 0x5c, 0x1, 0xc7, 0x1a, 0xf2, 0x4c, 0x8d]}; + +interface ID3D10EffectDepthStencilVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetDepthStencilState(UINT Index, ID3D10DepthStencilState* ppDepthStencilState); + HRESULT GetBackingStore(UINT Index, D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc); + */ +} + +extern (C) const GUID IID_ID3D10EffectRasterizerVariable = {0x21af9f0e, 0x4d94, 0x4ea9, [0x97, 0x85, 0x2c, 0xb7, 0x6b, 0x8c, 0xb, 0x34]}; + +interface ID3D10EffectRasterizerVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRasterizerState(UINT Index, ID3D10RasterizerState* ppRasterizerState); + HRESULT GetBackingStore(UINT Index, D3D10_RASTERIZER_DESC* pRasterizerDesc); + */ +} + +extern (C) const GUID IID_ID3D10EffectSamplerVariable = {0x6530d5c7, 0x07e9, 0x4271, [0xa4, 0x18, 0xe7, 0xce, 0x4b, 0xd1, 0xe4, 0x80]}; + +interface ID3D10EffectSamplerVariable : ID3D10EffectVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + ID3D10EffectType GetType(); + HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectVariable GetMemberByIndex(UINT Index); + ID3D10EffectVariable GetMemberByName(LPCSTR Name); + ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic); + ID3D10EffectVariable GetElement(UINT Index); + ID3D10EffectConstantBuffer GetParentConstantBuffer(); + ID3D10EffectScalarVariable AsScalar(); + ID3D10EffectVectorVariable AsVector(); + ID3D10EffectMatrixVariable AsMatrix(); + ID3D10EffectStringVariable AsString(); + ID3D10EffectShaderResourceVariable AsShaderResource(); + ID3D10EffectRenderTargetViewVariable AsRenderTargetView(); + ID3D10EffectDepthStencilViewVariable AsDepthStencilView(); + ID3D10EffectConstantBuffer AsConstantBuffer(); + ID3D10EffectShaderVariable AsShader(); + ID3D10EffectBlendVariable AsBlend(); + ID3D10EffectDepthStencilVariable AsDepthStencil(); + ID3D10EffectRasterizerVariable AsRasterizer(); + ID3D10EffectSamplerVariable AsSampler(); + HRESULT SetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetRawValue(void* pData, UINT Offset, UINT Count); + HRESULT GetSampler(UINT Index, ID3D10SamplerState* ppSampler); + HRESULT GetBackingStore(UINT Index, D3D10_SAMPLER_DESC* pSamplerDesc); + */ +} + +struct D3D10_PASS_DESC { + LPCSTR Name; + UINT Annotations; + BYTE* pIAInputSignature; + SIZE_T IAInputSignatureSize; + UINT StencilRef; + UINT SampleMask; + FLOAT[4] BlendFactor; +} + +struct D3D10_PASS_SHADER_DESC { + ID3D10EffectShaderVariable pShaderVariable; + UINT ShaderIndex; +} + +extern (C) const GUID IID_ID3D10EffectPass = {0x5cfbeb89, 0x1a06, 0x46e0, [0xb2, 0x82, 0xe3, 0xf9, 0xbf, 0xa3, 0x6a, 0x54]}; + +/+interface ID3D10EffectPass { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + HRESULT GetDesc(D3D10_PASS_DESC* pDesc); + HRESULT GetVertexShaderDesc(D3D10_PASS_SHADER_DESC* pDesc); + HRESULT GetGeometryShaderDesc(D3D10_PASS_SHADER_DESC* pDesc); + HRESULT GetPixelShaderDesc(D3D10_PASS_SHADER_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + HRESULT Apply(UINT Flags); + HRESULT ComputeStateBlockMask(D3D10_STATE_BLOCK_MASK* pStateBlockMask); + */ +}+/ +/** + * HACK to FIX vtbl[0] bug: + * This is an example HACK how to fix all interfaces which are NOT derived from + * IUnknown. They need the first entry in their vtbl[] point to the first + * virtual function. + * See: + * http://www.digitalmars.com/d/cpp_interface.html + * http://d.puremagic.com/issues/show_bug.cgi?id=1687 + */ +struct ID3D10EffectPassVtbl { + extern(Windows) : + BOOL function(ID3D10EffectPass) IsValid; + HRESULT function(ID3D10EffectPass, D3D10_PASS_DESC* pDesc) GetDesc; + HRESULT function(ID3D10EffectPass, D3D10_PASS_SHADER_DESC* pDesc) GetVertexShaderDesc; + HRESULT function(ID3D10EffectPass, D3D10_PASS_SHADER_DESC* pDesc) GetGeometryShaderDesc; + HRESULT function(ID3D10EffectPass, D3D10_PASS_SHADER_DESC* pDesc) GetPixelShaderDesc; + ID3D10EffectVariable function(ID3D10EffectPass, UINT Index) GetAnnotationByIndex; + ID3D10EffectVariable function(ID3D10EffectPass, LPCSTR Name) GetAnnotationByName; + HRESULT function(ID3D10EffectPass, UINT Flags) Apply; + HRESULT function(ID3D10EffectPass, D3D10_STATE_BLOCK_MASK* pStateBlockMask) ComputeStateBlockMask; +} +alias ID3D10EffectPassVtbl** ID3D10EffectPass; + +struct D3D10_TECHNIQUE_DESC { + LPCSTR Name; + UINT Passes; + UINT Annotations; +} + +extern (C) const GUID IID_ID3D10EffectTechnique = {0xdb122ce8, 0xd1c9, 0x4292, [0xb2, 0x37, 0x24, 0xed, 0x3d, 0xe8, 0xb1, 0x75]}; + +/+interface ID3D10EffectTechnique { +/* TODO: fix vtbl[0] bug + extern(Windows) : + BOOL IsValid(); + HRESULT GetDesc(D3D10_TECHNIQUE_DESC* pDesc); + ID3D10EffectVariable GetAnnotationByIndex(UINT Index); + ID3D10EffectVariable GetAnnotationByName(LPCSTR Name); + ID3D10EffectPass GetPassByIndex(UINT Index); + ID3D10EffectPass GetPassByName(LPCSTR Name); + HRESULT ComputeStateBlockMask(D3D10_STATE_BLOCK_MASK* pStateBlockMask); + */ +}+/ +/** + * HACK to FIX vtbl[0] bug: + * This is an example HACK how to fix all interfaces which are NOT derived from + * IUnknown. They need the first entry in their vtbl[] point to the first + * virtual function. + * See: + * http://www.digitalmars.com/d/cpp_interface.html + * http://d.puremagic.com/issues/show_bug.cgi?id=1687 + */ +struct ID3D10EffectTechniqueVtbl { + extern(Windows) : + BOOL function(ID3D10EffectTechnique) IsValid; + HRESULT function(ID3D10EffectTechnique, D3D10_TECHNIQUE_DESC* pDesc) GetDesc; + ID3D10EffectVariable function(ID3D10EffectTechnique, UINT Index) GetAnnotationByIndex; + ID3D10EffectVariable function(ID3D10EffectTechnique, LPCSTR Name) GetAnnotationByName; + ID3D10EffectPass function(ID3D10EffectTechnique, UINT Index) GetPassByIndex; + ID3D10EffectPass function(ID3D10EffectTechnique, LPCSTR Name) GetPassByName; + HRESULT function(ID3D10EffectTechnique, D3D10_STATE_BLOCK_MASK* pStateBlockMask) ComputeStateBlockMask; +} +alias ID3D10EffectTechniqueVtbl** ID3D10EffectTechnique; + +struct D3D10_EFFECT_DESC { + BOOL IsChildEffect; + UINT ConstantBuffers; + UINT SharedConstantBuffers; + UINT GlobalVariables; + UINT SharedGlobalVariables; + UINT Techniques; +} + +extern (C) const GUID IID_ID3D10Effect = {0x51b0ca8b, 0xec0b, 0x4519, [0x87, 0xd, 0x8e, 0xe1, 0xcb, 0x50, 0x17, 0xc7]}; + +interface ID3D10Effect : IUnknown { + extern(Windows) : + BOOL IsValid(); + BOOL IsPool(); + HRESULT GetDevice(ID3D10Device* ppDevice); + HRESULT GetDesc(D3D10_EFFECT_DESC* pDesc); + ID3D10EffectConstantBuffer GetConstantBufferByIndex(UINT Index); + ID3D10EffectConstantBuffer GetConstantBufferByName(LPCSTR Name); + ID3D10EffectVariable GetVariableByIndex(UINT Index); + ID3D10EffectVariable GetVariableByName(LPCSTR Name); + ID3D10EffectVariable GetVariableBySemantic(LPCSTR Semantic); + ID3D10EffectTechnique GetTechniqueByIndex(UINT Index); + ID3D10EffectTechnique GetTechniqueByName(LPCSTR Name); + HRESULT Optimize(); + BOOL IsOptimized(); +} + +extern (C) const GUID IID_ID3D10EffectPool = {0x9537ab04, 0x3250, 0x412e, [0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33]}; + +interface ID3D10EffectPool : IUnknown { + extern(Windows) : + ID3D10Effect AsEffect(); +} + +HRESULT D3D10CompileEffectFromMemory(void* pData, SIZE_T DataLength, LPCSTR pSrcFileName, D3D10_SHADER_MACRO* pDefines, ID3D10Include pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Blob* ppCompiledEffect, ID3D10Blob* ppErrors); +HRESULT D3D10CreateEffectFromMemory(void* pData, SIZE_T DataLength, UINT FXFlags, ID3D10Device pDevice, ID3D10EffectPool pEffectPool, ID3D10Effect* ppEffect); +HRESULT D3D10CreateEffectPoolFromMemory(void* pData, SIZE_T DataLength, UINT FXFlags, ID3D10Device pDevice, ID3D10EffectPool* ppEffectPool); +HRESULT D3D10DisassembleEffect(ID3D10Effect pEffect, BOOL EnableColorCode, ID3D10Blob* ppDisassembly); ADDED src/win32/directx/d3d10misc.d Index: src/win32/directx/d3d10misc.d ================================================================== --- src/win32/directx/d3d10misc.d +++ src/win32/directx/d3d10misc.d @@ -0,0 +1,45 @@ +/***********************************************************************\ +* d3d10misc.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.d3d10misc; + +private import win32.windows; + +private import win32.directx.dxgi; +private import win32.directx.d3d10; + +extern (C) const GUID IID_ID3D10Blob = { + 0x8BA5FB08, 0x5195, 0x40E2, [0xAC, 0x58, 0x0D, 0x98, 0x9C, 0x3A, 0x01, 0x02] +}; + +interface ID3D10Blob : IUnknown { + extern(Windows) : + LPVOID GetBufferPointer(); + SIZE_T GetBufferSize(); +} + +enum D3D10_DRIVER_TYPE { + D3D10_DRIVER_TYPE_HARDWARE = 0, + D3D10_DRIVER_TYPE_REFERENCE = 1, + D3D10_DRIVER_TYPE_NULL = 2, + D3D10_DRIVER_TYPE_SOFTWARE = 3 +} + +extern (C) const GUID GUID_DeviceType = { + 0xD722FB4D, 0x7A68, 0x437A, [0xB2, 0x0C, 0x58, 0x04, 0xEE, 0x24, 0x94, 0xA6] +}; + +extern(Windows) { + HRESULT D3D10CreateDevice(IDXGIAdapter pAdapter, + D3D10_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, + UINT SDKVersion, ID3D10Device* ppDevice); + HRESULT D3D10CreateDeviceAndSwapChain(IDXGIAdapter pAdapter, + D3D10_DRIVER_TYPE DriverType, HMODULE Software, UINT Flags, + UINT SDKVersion, DXGI_SWAP_CHAIN_DESC* pSwapChainDesc, + IDXGISwapChain* ppSwapChain, ID3D10Device* ppDevice); + HRESULT D3D10CreateBlob(SIZE_T NumBytes, ID3D10Blob* ppBuffer); +} ADDED src/win32/directx/d3d10shader.d Index: src/win32/directx/d3d10shader.d ================================================================== --- src/win32/directx/d3d10shader.d +++ src/win32/directx/d3d10shader.d @@ -0,0 +1,301 @@ +/***********************************************************************\ +* d3d10shader.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.d3d10shader; + +private import win32.windows; +private import win32.directx.d3d10; + + +uint D3D10_TX_VERSION(uint _Major, uint _Minor) { + return ('T' << 24) | ('X' << 16) | (_Major << 8) | _Minor; +} + +const D3D10_SHADER_DEBUG = 1 << 0; +const D3D10_SHADER_SKIP_VALIDATION = 1 << 1; +const D3D10_SHADER_SKIP_OPTIMIZATION = 1 << 2; +const D3D10_SHADER_PACK_MATRIX_ROW_MAJOR = 1 << 3; +const D3D10_SHADER_PACK_MATRIX_COLUMN_MAJOR = 1 << 4; +const D3D10_SHADER_PARTIAL_PRECISION = 1 << 5; +const D3D10_SHADER_FORCE_VS_SOFTWARE_NO_OPT = 1 << 6; +const D3D10_SHADER_FORCE_PS_SOFTWARE_NO_OPT = 1 << 7; +const D3D10_SHADER_NO_PRESHADER = 1 << 8; +const D3D10_SHADER_AVOID_FLOW_CONTROL = 1 << 9; +const D3D10_SHADER_PREFER_FLOW_CONTROL = 1 << 10; +const D3D10_SHADER_ENABLE_STRICTNESS = 1 << 11; +const D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY = 1 << 12; +const D3D10_SHADER_IEEE_STRICTNESS = 1 << 13; +const D3D10_SHADER_OPTIMIZATION_LEVEL0 = 1 << 14; +const D3D10_SHADER_OPTIMIZATION_LEVEL1 = 0; +const D3D10_SHADER_OPTIMIZATION_LEVEL2 = (1 << 14) | (1 << 15); +const D3D10_SHADER_OPTIMIZATION_LEVEL3 = 1 << 15; + +struct D3D10_SHADER_MACRO { + LPCSTR Name; + LPCSTR Definition; +} + +enum D3D10_SHADER_VARIABLE_CLASS { + D3D10_SVC_SCALAR, + D3D10_SVC_VECTOR, + D3D10_SVC_MATRIX_ROWS, + D3D10_SVC_MATRIX_COLUMNS, + D3D10_SVC_OBJECT, + D3D10_SVC_STRUCT, + D3D10_SVC_FORCE_DWORD = 0x7fffffff +} + +enum D3D10_SHADER_VARIABLE_FLAGS { + D3D10_SVF_USERPACKED = 1, + D3D10_SVF_USED = 2, + D3D10_SVF_FORCE_DWORD = 0x7fffffff +} + +enum D3D10_SHADER_VARIABLE_TYPE { + D3D10_SVT_VOID = 0, + D3D10_SVT_BOOL = 1, + D3D10_SVT_INT = 2, + D3D10_SVT_FLOAT = 3, + D3D10_SVT_STRING = 4, + D3D10_SVT_TEXTURE = 5, + D3D10_SVT_TEXTURE1D = 6, + D3D10_SVT_TEXTURE2D = 7, + D3D10_SVT_TEXTURE3D = 8, + D3D10_SVT_TEXTURECUBE = 9, + D3D10_SVT_SAMPLER = 10, + D3D10_SVT_PIXELSHADER = 15, + D3D10_SVT_VERTEXSHADER = 16, + D3D10_SVT_UINT = 19, + D3D10_SVT_UINT8 = 20, + D3D10_SVT_GEOMETRYSHADER = 21, + D3D10_SVT_RASTERIZER = 22, + D3D10_SVT_DEPTHSTENCIL = 23, + D3D10_SVT_BLEND = 24, + D3D10_SVT_BUFFER = 25, + D3D10_SVT_CBUFFER = 26, + D3D10_SVT_TBUFFER = 27, + D3D10_SVT_TEXTURE1DARRAY = 28, + D3D10_SVT_TEXTURE2DARRAY = 29, + D3D10_SVT_RENDERTARGETVIEW = 30, + D3D10_SVT_DEPTHSTENCILVIEW = 31, + D3D10_SVT_TEXTURE2DMS = 32, + D3D10_SVT_TEXTURE2DMSARRAY = 33, + D3D10_SVT_TEXTURECUBEARRAY = 34, + D3D10_SVT_FORCE_DWORD = 0x7fffffff +} + +enum D3D10_SHADER_INPUT_FLAGS { + D3D10_SIF_USERPACKED = 1, + D3D10_SIF_COMPARISON_SAMPLER = 2, + D3D10_SIF_TEXTURE_COMPONENT_0 = 4, + D3D10_SIF_TEXTURE_COMPONENT_1 = 8, + D3D10_SIF_TEXTURE_COMPONENTS = 12, + D3D10_SIF_FORCE_DWORD = 0x7fffffff +} + +enum D3D10_SHADER_INPUT_TYPE { + D3D10_SIT_CBUFFER, + D3D10_SIT_TBUFFER, + D3D10_SIT_TEXTURE, + D3D10_SIT_SAMPLER +} + +enum D3D10_SHADER_CBUFFER_FLAGS { + D3D10_CBF_USERPACKED = 1, + D3D10_CBF_FORCE_DWORD = 0x7fffffff +} + +enum D3D10_CBUFFER_TYPE { + D3D10_CT_CBUFFER, + D3D10_CT_TBUFFER +} + +enum D3D10_NAME { + D3D10_NAME_UNDEFINED = 0, + D3D10_NAME_POSITION = 1, + D3D10_NAME_CLIP_DISTANCE = 2, + D3D10_NAME_CULL_DISTANCE = 3, + D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = 4, + D3D10_NAME_VIEWPORT_ARRAY_INDEX = 5, + D3D10_NAME_VERTEX_ID = 6, + D3D10_NAME_PRIMITIVE_ID = 7, + D3D10_NAME_INSTANCE_ID = 8, + D3D10_NAME_IS_FRONT_FACE = 9, + D3D10_NAME_SAMPLE_INDEX = 10, + D3D10_NAME_TARGET = 64, + D3D10_NAME_DEPTH = 65, + D3D10_NAME_COVERAGE = 66 +} + +enum D3D10_RESOURCE_RETURN_TYPE { + D3D10_RETURN_TYPE_UNORM = 1, + D3D10_RETURN_TYPE_SNORM, + D3D10_RETURN_TYPE_SINT, + D3D10_RETURN_TYPE_UINT, + D3D10_RETURN_TYPE_FLOAT, + D3D10_RETURN_TYPE_MIXED +} + +enum D3D10_REGISTER_COMPONENT_TYPE { + D3D10_REGISTER_COMPONENT_UNKNOWN = 0, + D3D10_REGISTER_COMPONENT_UINT32, + D3D10_REGISTER_COMPONENT_SINT32, + D3D10_REGISTER_COMPONENT_FLOAT32 +} + +enum D3D10_INCLUDE_TYPE { + D3D10_INCLUDE_LOCAL, + D3D10_INCLUDE_SYSTEM, + D3D10_INCLUDE_FORCE_DWORD = 0x7fffffff +} + +interface ID3D10Include { +/* TODO: fix vtbl[0] bug + extern(Windows) : + HRESULT Open(D3D10_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID* ppData, UINT* pBytes); + HRESULT Close(LPCVOID pData); + */ +} + +struct D3D10_SHADER_DESC { + UINT Version; + LPCSTR Creator; + UINT Flags; + UINT ConstantBuffers; + UINT BoundResources; + UINT InputParameters; + UINT OutputParameters; + UINT InstructionCount; + UINT TempRegisterCount; + UINT TempArrayCount; + UINT DefCount; + UINT DclCount; + UINT TextureNormalInstructions; + UINT TextureLoadInstructions; + UINT TextureCompInstructions; + UINT TextureBiasInstructions; + UINT TextureGradientInstructions; + UINT FloatInstructionCount; + UINT IntInstructionCount; + UINT UintInstructionCount; + UINT StaticFlowControlCount; + UINT DynamicFlowControlCount; + UINT MacroInstructionCount; + UINT ArrayInstructionCount; + UINT CutInstructionCount; + UINT EmitInstructionCount; + D3D10_PRIMITIVE_TOPOLOGY GSOutputTopology; + UINT GSMaxOutputVertexCount; +} + +struct D3D10_SHADER_BUFFER_DESC { + LPCSTR Name; + D3D10_CBUFFER_TYPE Type; + UINT Variables; + UINT Size; + UINT uFlags; +} + +struct D3D10_SHADER_VARIABLE_DESC { + LPCSTR Name; + UINT StartOffset; + UINT Size; + UINT uFlags; + LPVOID DefaultValue; +} + +struct D3D10_SHADER_TYPE_DESC { + D3D10_SHADER_VARIABLE_CLASS Class; + D3D10_SHADER_VARIABLE_TYPE Type; + UINT Rows; + UINT Columns; + UINT Elements; + UINT Members; + UINT Offset; +} + +struct D3D10_SHADER_INPUT_BIND_DESC { + LPCSTR Name; + D3D10_SHADER_INPUT_TYPE Type; + UINT BindPoint; + UINT BindCount; + UINT uFlags; + D3D10_RESOURCE_RETURN_TYPE ReturnType; + D3D10_SRV_DIMENSION Dimension; + UINT NumSamples; +} + +struct D3D10_SIGNATURE_PARAMETER_DESC { + LPCSTR SemanticName; + UINT SemanticIndex; + UINT Register; + D3D10_NAME SystemValueType; + D3D10_REGISTER_COMPONENT_TYPE ComponentType; + BYTE Mask; + BYTE ReadWriteMask; +} + +extern(C) const GUID IID_ID3D10ShaderReflectionType = {0xc530ad7d, 0x9b16, 0x4395, [0xa9, 0x79, 0xba, 0x2e, 0xcf, 0xf8, 0x3a, 0xdd]}; + +interface ID3D10ShaderReflectionType { +/* TODO: fix vtbl[0] bug + extern(Windows) : + HRESULT GetDesc(D3D10_SHADER_TYPE_DESC* pDesc); + ID3D10ShaderReflectionType* GetMemberTypeByIndex(UINT Index); + ID3D10ShaderReflectionType* GetMemberTypeByName(LPCSTR Name); + LPCSTR GetMemberTypeName(UINT Index); + */ +} + +extern(C) const GUID IID_ID3D10ShaderReflectionVariable = {0x1bf63c95, 0x2650, 0x405d, [0x99, 0xc1, 0x36, 0x36, 0xbd, 0x1d, 0xa0, 0xa1]}; + +interface ID3D10ShaderReflectionVariable { +/* TODO: fix vtbl[0] bug + extern(Windows) : + HRESULT GetDesc(D3D10_SHADER_VARIABLE_DESC* pDesc); + ID3D10ShaderReflectionType* GetType(); + */ +} + +extern(C) const GUID IID_ID3D10ShaderReflectionConstantBuffer = {0x66c66a94, 0xdddd, 0x4b62, [0xa6, 0x6a, 0xf0, 0xda, 0x33, 0xc2, 0xb4, 0xd0]}; + +interface ID3D10ShaderReflectionConstantBuffer { +/* TODO: fix vtbl[0] bug + extern(Windows) : + HRESULT GetDesc(D3D10_SHADER_BUFFER_DESC* pDesc); + ID3D10ShaderReflectionVariable* GetVariableByIndex(UINT Index); + ID3D10ShaderReflectionVariable* GetVariableByName(LPCSTR Name); + */ +} + +extern(C) const GUID IID_ID3D10ShaderReflection = {0xd40e20b6, 0xf8f7, 0x42ad, [0xab, 0x20, 0x4b, 0xaf, 0x8f, 0x15, 0xdf, 0xaa]}; + +interface ID3D10ShaderReflection : IUnknown { + extern(Windows) : + HRESULT QueryInterface(REFIID iid, LPVOID* ppv); + ULONG AddRef(); + ULONG Release(); + HRESULT GetDesc(D3D10_SHADER_DESC* pDesc); + ID3D10ShaderReflectionConstantBuffer* GetConstantBufferByIndex(UINT Index); + ID3D10ShaderReflectionConstantBuffer* GetConstantBufferByName(LPCSTR Name); + HRESULT GetResourceBindingDesc(UINT ResourceIndex, D3D10_SHADER_INPUT_BIND_DESC* pDesc); + HRESULT GetInputParameterDesc(UINT ParameterIndex, D3D10_SIGNATURE_PARAMETER_DESC* pDesc); + HRESULT GetOutputParameterDesc(UINT ParameterIndex, D3D10_SIGNATURE_PARAMETER_DESC* pDesc); +} + +HRESULT D3D10CompileShader(LPCSTR pSrcData, SIZE_T SrcDataLen, LPCSTR pFileName, D3D10_SHADER_MACRO* pDefines, ID3D10Include pInclude, LPCSTR pFunctionName, LPCSTR pProfile, UINT Flags, ID3D10Blob* ppShader, ID3D10Blob* ppErrorMsgs); +HRESULT D3D10DisassembleShader(void* pShader, SIZE_T BytecodeLength, BOOL EnableColorCode, LPCSTR pComments, ID3D10Blob* ppDisassembly); +LPCSTR D3D10GetPixelShaderProfile(ID3D10Device pDevice); +LPCSTR D3D10GetVertexShaderProfile(ID3D10Device pDevice); +LPCSTR D3D10GetGeometryShaderProfile(ID3D10Device pDevice); +HRESULT D3D10ReflectShader(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10ShaderReflection* ppReflector); +HRESULT D3D10PreprocessShader(LPCSTR pSrcData, SIZE_T SrcDataSize, LPCSTR pFileName, D3D10_SHADER_MACRO* pDefines, ID3D10Include pInclude, ID3D10Blob* ppShaderText, ID3D10Blob* ppErrorMsgs); +HRESULT D3D10GetInputSignatureBlob(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob* ppSignatureBlob); +HRESULT D3D10GetOutputSignatureBlob(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob* ppSignatureBlob); +HRESULT D3D10GetInputAndOutputSignatureBlob(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob* ppSignatureBlob); +HRESULT D3D10GetShaderDebugInfo(void* pShaderBytecode, SIZE_T BytecodeLength, ID3D10Blob* ppDebugInfo); + ADDED src/win32/directx/d3d9.d Index: src/win32/directx/d3d9.d ================================================================== --- src/win32/directx/d3d9.d +++ src/win32/directx/d3d9.d @@ -0,0 +1,837 @@ +/*==========================================================================; + * + * Copyright (C) Microsoft Corporation. All Rights Reserved. + * + * File: d3d9.h + * Content: Direct3D include file + * + ****************************************************************************/ +module win32.directx.d3d9; + +import win32.windows; +public import win32.directx.d3d9types; +public import win32.directx.d3d9caps; + +const DIRECT3D_VERSION = 0x0900; + +/**This identifier is passed to Direct3DCreate9 in order to ensure that an + * application was built against the correct header files. This number is + * incremented whenever a header (or other) change would require applications + * to be rebuilt. If the version doesn't match, Direct3DCreate9 will fail. + * (The number itself has no meaning.)*/ + +debug { + const D3D_SDK_VERSION = (32 | 0x80000000); + const D3D9b_SDK_VERSION = (31 | 0x80000000); +} +else { + const D3D_SDK_VERSION = 32; + const D3D9b_SDK_VERSION = 31; +} + +/* IID_IDirect3D9 */ +/* {81BDCBCA-64D4-426d-AE8D-AD0147F4275C} */ +extern (C) const GUID IID_IDirect3D9 = { 0x81bdcbca, 0x64d4, 0x426d, [0xae, 0x8d, 0xad, 0x1, 0x47, 0xf4, 0x27, 0x5c] }; + +/* IID_IDirect3DDevice9 */ +// {D0223B96-BF7A-43fd-92BD-A43B0D82B9EB} */ +extern (C) const GUID IID_IDirect3DDevice9 = { 0xd0223b96, 0xbf7a, 0x43fd, [0x92, 0xbd, 0xa4, 0x3b, 0xd, 0x82, 0xb9, 0xeb] }; + +/* IID_IDirect3DResource9 */ +// {05EEC05D-8F7D-4362-B999-D1BAF357C704} +extern (C) const GUID IID_IDirect3DResource9 = { 0x05eec05d, 0x8f7d, 0x4362, [0xb9, 0x99, 0xd1, 0xba, 0xf3, 0x57, 0xc7, 0x04] }; + +/* IID_IDirect3DBaseTexture9 */ +/* {580CA87E-1D3C-4d54-991D-B7D3E3C298CE} */ +extern (C) const GUID IID_IDirect3DBaseTexture9 = { 0x580ca87e, 0x1d3c, 0x4d54, [0x99, 0x1d, 0xb7, 0xd3, 0xe3, 0xc2, 0x98, 0xce] }; + +/* IID_IDirect3DTexture9 */ +/* {85C31227-3DE5-4f00-9B3A-F11AC38C18B5} */ +extern (C) const GUID IID_IDirect3DTexture9 = { 0x85c31227, 0x3de5, 0x4f00, [0x9b, 0x3a, 0xf1, 0x1a, 0xc3, 0x8c, 0x18, 0xb5] }; + +/* IID_IDirect3DCubeTexture9 */ +/* {FFF32F81-D953-473a-9223-93D652ABA93F} */ +extern (C) const GUID IID_IDirect3DCubeTexture9 = { 0xfff32f81, 0xd953, 0x473a, [0x92, 0x23, 0x93, 0xd6, 0x52, 0xab, 0xa9, 0x3f] }; + +/* IID_IDirect3DVolumeTexture9 */ +/* {2518526C-E789-4111-A7B9-47EF328D13E6} */ +extern (C) const GUID IID_IDirect3DVolumeTexture9 = { 0x2518526c, 0xe789, 0x4111, [0xa7, 0xb9, 0x47, 0xef, 0x32, 0x8d, 0x13, 0xe6] }; + +/* IID_IDirect3DVertexBuffer9 */ +/* {B64BB1B5-FD70-4df6-BF91-19D0A12455E3} */ +extern (C) const GUID IID_IDirect3DVertexBuffer9 = { 0xb64bb1b5, 0xfd70, 0x4df6, [0xbf, 0x91, 0x19, 0xd0, 0xa1, 0x24, 0x55, 0xe3] }; + +/* IID_IDirect3DIndexBuffer9 */ +/* {7C9DD65E-D3F7-4529-ACEE-785830ACDE35} */ +extern (C) const GUID IID_IDirect3DIndexBuffer9 = { 0x7c9dd65e, 0xd3f7, 0x4529, [0xac, 0xee, 0x78, 0x58, 0x30, 0xac, 0xde, 0x35] }; + +/* IID_IDirect3DSurface9 */ +/* {0CFBAF3A-9FF6-429a-99B3-A2796AF8B89B} */ +extern (C) const GUID IID_IDirect3DSurface9 = { 0xcfbaf3a, 0x9ff6, 0x429a, [0x99, 0xb3, 0xa2, 0x79, 0x6a, 0xf8, 0xb8, 0x9b] }; + +/* IID_IDirect3DVolume9 */ +/* {24F416E6-1F67-4aa7-B88E-D33F6F3128A1} */ +extern (C) const GUID IID_IDirect3DVolume9 = { 0x24f416e6, 0x1f67, 0x4aa7, [0xb8, 0x8e, 0xd3, 0x3f, 0x6f, 0x31, 0x28, 0xa1] }; + +/* IID_IDirect3DSwapChain9 */ +/* {794950F2-ADFC-458a-905E-10A10B0B503B} */ +extern (C) const GUID IID_IDirect3DSwapChain9 = { 0x794950f2, 0xadfc, 0x458a, [0x90, 0x5e, 0x10, 0xa1, 0xb, 0xb, 0x50, 0x3b] }; + +/* IID_IDirect3DVertexDeclaration9 */ +/* {DD13C59C-36FA-4098-A8FB-C7ED39DC8546} */ +extern (C) const GUID IID_IDirect3DVertexDeclaration9 = { 0xdd13c59c, 0x36fa, 0x4098, [0xa8, 0xfb, 0xc7, 0xed, 0x39, 0xdc, 0x85, 0x46] }; + +/* IID_IDirect3DVertexShader9 */ +/* {EFC5557E-6265-4613-8A94-43857889EB36} */ +extern (C) const GUID IID_IDirect3DVertexShader9 = { 0xefc5557e, 0x6265, 0x4613, [0x8a, 0x94, 0x43, 0x85, 0x78, 0x89, 0xeb, 0x36] }; + +/* IID_IDirect3DPixelShader9 */ +/* {6D3BDBDC-5B02-4415-B852-CE5E8BCCB289} */ +extern (C) const GUID IID_IDirect3DPixelShader9 = { 0x6d3bdbdc, 0x5b02, 0x4415, [0xb8, 0x52, 0xce, 0x5e, 0x8b, 0xcc, 0xb2, 0x89] }; + +/* IID_IDirect3DStateBlock9 */ +/* {B07C4FE5-310D-4ba8-A23C-4F0F206F218B} */ +extern (C) const GUID IID_IDirect3DStateBlock9 = { 0xb07c4fe5, 0x310d, 0x4ba8, [0xa2, 0x3c, 0x4f, 0xf, 0x20, 0x6f, 0x21, 0x8b] }; + +/* IID_IDirect3DQuery9 */ +/* {d9771460-a695-4f26-bbd3-27b840b541cc} */ +extern (C) const GUID IID_IDirect3DQuery9 = { 0xd9771460, 0xa695, 0x4f26, [0xbb, 0xd3, 0x27, 0xb8, 0x40, 0xb5, 0x41, 0xcc] }; + + +/* IID_HelperName */ +/* {E4A36723-FDFE-4b22-B146-3C04C07F4CC8} */ +extern (C) const GUID IID_HelperName = { 0xe4a36723, 0xfdfe, 0x4b22, [0xb1, 0x46, 0x3c, 0x4, 0xc0, 0x7f, 0x4c, 0xc8] }; + +/* IID_IDirect3D9Ex */ +/* {02177241-69FC-400C-8FF1-93A44DF6861D} */ +extern (C) const GUID IID_IDirect3D9Ex = { 0x02177241, 0x69FC, 0x400C, [0x8F, 0xF1, 0x93, 0xA4, 0x4D, 0xF6, 0x86, 0x1D] }; + +/* IID_IDirect3DDevice9Ex */ +// {B18B10CE-2649-405a-870F-95F777D4313A} +extern (C) const GUID IID_IDirect3DDevice9Ex = { 0xb18b10ce, 0x2649, 0x405a, [0x87, 0xf, 0x95, 0xf7, 0x77, 0xd4, 0x31, 0x3a] }; + +/* IID_IDirect3DSwapChain9Ex */ +/* {91886CAF-1C3D-4d2e-A0AB-3E4C7D8D3303} */ +extern (C) const GUID IID_IDirect3DSwapChain9Ex = { 0x91886caf, 0x1c3d, 0x4d2e, [0xa0, 0xab, 0x3e, 0x4c, 0x7d, 0x8d, 0x33, 0x03] }; + + + +extern (C): +/** + * DLL Function for creating a Direct3D9 object. This object supports + * enumeration and allows the creation of Direct3DDevice9 objects. + * Pass the value of the constant D3D_SDK_VERSION to this function, so + * that the run-time can validate that your application was compiled + * against the right headers. + */ + +extern (Windows) LPDIRECT3D9 Direct3DCreate9(UINT SDKVersion); + +/** + * Stubs for graphics profiling. + */ +extern (Windows) int D3DPERF_BeginEvent( D3DCOLOR col, LPCWSTR wszName ); +extern (Windows) int D3DPERF_EndEvent(); +extern (Windows) void D3DPERF_SetMarker( D3DCOLOR col, LPCWSTR wszName ); +extern (Windows) void D3DPERF_SetRegion( D3DCOLOR col, LPCWSTR wszName ); +extern (Windows) BOOL D3DPERF_QueryRepeatFrame(); + +extern (Windows) void D3DPERF_SetOptions( DWORD dwOptions ); +extern (Windows) DWORD D3DPERF_GetStatus(); + + +interface LPDIRECT3D9 : IUnknown +{ + HRESULT RegisterSoftwareDevice(void* pInitializeFunction); + UINT GetAdapterCount(); + HRESULT GetAdapterIdentifier( UINT Adapter,DWORD Flags,D3DADAPTER_IDENTIFIER9* pIdentifier); + UINT GetAdapterModeCount(UINT Adapter,D3DFORMAT Format); + HRESULT EnumAdapterModes( UINT Adapter,D3DFORMAT Format,UINT Mode,D3DDISPLAYMODE* pMode); + HRESULT GetAdapterDisplayMode( UINT Adapter,D3DDISPLAYMODE* pMode); + HRESULT CheckDeviceType( UINT Adapter,D3DDEVTYPE DevType,D3DFORMAT AdapterFormat,D3DFORMAT BackBufferFormat,BOOL bWindowed); + HRESULT CheckDeviceFormat( UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,DWORD Usage,D3DRESOURCETYPE RType,D3DFORMAT CheckFormat); + HRESULT CheckDeviceMultiSampleType( UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT SurfaceFormat,BOOL Windowed,D3DMULTISAMPLE_TYPE MultiSampleType,DWORD* pQualityLevels); + HRESULT CheckDepthStencilMatch( UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,D3DFORMAT RenderTargetFormat,D3DFORMAT DepthStencilFormat); + HRESULT CheckDeviceFormatConversion( UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT SourceFormat,D3DFORMAT TargetFormat); + HRESULT GetDeviceCaps( UINT Adapter,D3DDEVTYPE DeviceType,D3DCAPS9* pCaps); + HMONITOR GetAdapterMonitor(UINT Adapter); + HRESULT CreateDevice( UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS* pPresentationParameters,LPDIRECT3DDEVICE9* ppReturnedDeviceInterface); +/* + debug { + LPCWSTR Version; + } +*/ +} +alias LPDIRECT3D9 IDirect3D9; + +interface LPDIRECT3DDEVICE9 : IUnknown +{ + HRESULT TestCooperativeLevel(); + UINT GetAvailableTextureMem(); + HRESULT EvictManagedResources(); + HRESULT GetDirect3D( LPDIRECT3D9* ppD3D9); + HRESULT GetDeviceCaps( D3DCAPS9* pCaps); + HRESULT GetDisplayMode( UINT iSwapChain,D3DDISPLAYMODE* pMode); + HRESULT GetCreationParameters( D3DDEVICE_CREATION_PARAMETERS *pParameters); + HRESULT SetCursorProperties( UINT XHotSpot,UINT YHotSpot,LPDIRECT3DSURFACE9 pCursorBitmap); + void SetCursorPosition(int X,int Y,DWORD Flags); + BOOL ShowCursor(BOOL bShow); + HRESULT CreateAdditionalSwapChain( D3DPRESENT_PARAMETERS* pPresentationParameters,LPDIRECT3DSWAPCHAIN9* pSwapChain); + HRESULT GetSwapChain( UINT iSwapChain,LPDIRECT3DSWAPCHAIN9* pSwapChain); + UINT GetNumberOfSwapChains(); + HRESULT Reset( D3DPRESENT_PARAMETERS* pPresentationParameters); + HRESULT Present(RECT* pSourceRect,RECT* pDestRect,HWND hDestWindowOverride, RGNDATA* pDirtyRegion); + HRESULT GetBackBuffer( UINT iSwapChain,UINT iBackBuffer,D3DBACKBUFFER_TYPE Type,LPDIRECT3DSURFACE9* ppBackBuffer); + HRESULT GetRasterStatus( UINT iSwapChain,D3DRASTER_STATUS* pRasterStatus); + HRESULT SetDialogBoxMode( BOOL bEnableDialogs); + void SetGammaRamp(UINT iSwapChain,DWORD Flags, D3DGAMMARAMP* pRamp); + void GetGammaRamp(UINT iSwapChain,D3DGAMMARAMP* pRamp); + HRESULT CreateTexture( UINT Width,UINT Height,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,LPDIRECT3DTEXTURE9* ppTexture,HANDLE* pSharedHandle); + HRESULT CreateVolumeTexture( UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,LPDIRECT3DVOLUMETEXTURE9* ppVolumeTexture,HANDLE* pSharedHandle); + HRESULT CreateCubeTexture( UINT EdgeLength,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,LPDIRECT3DCUBETEXTURE9* ppCubeTexture,HANDLE* pSharedHandle); + HRESULT CreateVertexBuffer( UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,LPDIRECT3DVERTEXBUFFER9* ppVertexBuffer,HANDLE* pSharedHandle); + HRESULT CreateIndexBuffer( UINT Length,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,LPDIRECT3DINDEXBUFFER9* ppIndexBuffer,HANDLE* pSharedHandle); + HRESULT CreateRenderTarget( UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,LPDIRECT3DSURFACE9* ppSurface,HANDLE* pSharedHandle); + HRESULT CreateDepthStencilSurface( UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,LPDIRECT3DSURFACE9* ppSurface,HANDLE* pSharedHandle); + HRESULT UpdateSurface( LPDIRECT3DSURFACE9 pSourceSurface, RECT* pSourceRect,LPDIRECT3DSURFACE9 pDestinationSurface, POINT* pDestPoint); + HRESULT UpdateTexture( LPDIRECT3DBASETEXTURE9 pSourceTexture,LPDIRECT3DBASETEXTURE9 pDestinationTexture); + HRESULT GetRenderTargetData( LPDIRECT3DSURFACE9 pRenderTarget,LPDIRECT3DSURFACE9 pDestSurface); + HRESULT GetFrontBufferData( UINT iSwapChain,LPDIRECT3DSURFACE9 pDestSurface); + HRESULT StretchRect( LPDIRECT3DSURFACE9 pSourceSurface, RECT* pSourceRect,LPDIRECT3DSURFACE9 pDestSurface, RECT* pDestRect,D3DTEXTUREFILTERTYPE Filter); + HRESULT ColorFill( LPDIRECT3DSURFACE9 pSurface, RECT* pRect,D3DCOLOR color); + HRESULT CreateOffscreenPlainSurface( UINT Width,UINT Height,D3DFORMAT Format,D3DPOOL Pool,LPDIRECT3DSURFACE9* ppSurface,HANDLE* pSharedHandle); + HRESULT SetRenderTarget( DWORD RenderTargetIndex,LPDIRECT3DSURFACE9 pRenderTarget); + HRESULT GetRenderTarget( DWORD RenderTargetIndex,LPDIRECT3DSURFACE9* ppRenderTarget); + HRESULT SetDepthStencilSurface( LPDIRECT3DSURFACE9 pNewZStencil); + HRESULT GetDepthStencilSurface( LPDIRECT3DSURFACE9* ppZStencilSurface); + HRESULT BeginScene(); + HRESULT EndScene(); + HRESULT Clear( DWORD Count, D3DRECT* pRects,DWORD Flags,D3DCOLOR Color,float Z,DWORD Stencil); + HRESULT SetTransform( D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix); + HRESULT GetTransform( D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix); + HRESULT MultiplyTransform( D3DTRANSFORMSTATETYPE, D3DMATRIX*); + HRESULT SetViewport( D3DVIEWPORT9* pViewport); + HRESULT GetViewport( D3DVIEWPORT9* pViewport); + HRESULT SetMaterial( D3DMATERIAL9* pMaterial); + HRESULT GetMaterial( D3DMATERIAL9* pMaterial); + HRESULT SetLight( DWORD Index, D3DLIGHT9*); + HRESULT GetLight( DWORD Index,D3DLIGHT9*); + HRESULT LightEnable( DWORD Index,BOOL Enable); + HRESULT GetLightEnable( DWORD Index,BOOL* pEnable); + HRESULT SetClipPlane( DWORD Index, float* pPlane); + HRESULT GetClipPlane( DWORD Index,float* pPlane); + HRESULT SetRenderState( D3DRENDERSTATETYPE State,DWORD Value); + HRESULT GetRenderState( D3DRENDERSTATETYPE State,DWORD* pValue); + HRESULT CreateStateBlock( D3DSTATEBLOCKTYPE Type,LPDIRECT3DSTATEBLOCK9* ppSB); + HRESULT BeginStateBlock(); + HRESULT EndStateBlock( LPDIRECT3DSTATEBLOCK9* ppSB); + HRESULT SetClipStatus( D3DCLIPSTATUS9* pClipStatus); + HRESULT GetClipStatus( D3DCLIPSTATUS9* pClipStatus); + HRESULT GetTexture( DWORD Stage,LPDIRECT3DBASETEXTURE9* ppTexture); + HRESULT SetTexture( DWORD Stage,LPDIRECT3DBASETEXTURE9 pTexture); + HRESULT GetTextureStageState( DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD* pValue); + HRESULT SetTextureStageState( DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD Value); + HRESULT GetSamplerState( DWORD Sampler,D3DSAMPLERSTATETYPE Type,DWORD* pValue); + HRESULT SetSamplerState( DWORD Sampler,D3DSAMPLERSTATETYPE Type,DWORD Value); + HRESULT ValidateDevice( DWORD* pNumPasses); + HRESULT SetPaletteEntries( UINT PaletteNumber, PALETTEENTRY* pEntries); + HRESULT GetPaletteEntries( UINT PaletteNumber,PALETTEENTRY* pEntries); + HRESULT SetCurrentTexturePalette( UINT PaletteNumber); + HRESULT GetCurrentTexturePalette( UINT *PaletteNumber); + HRESULT SetScissorRect( RECT* pRect); + HRESULT GetScissorRect( RECT* pRect); + HRESULT SetSoftwareVertexProcessing( BOOL bSoftware); + BOOL GetSoftwareVertexProcessing(); + HRESULT SetNPatchMode( float nSegments); + float GetNPatchMode(); + HRESULT DrawPrimitive( D3DPRIMITIVETYPE PrimitiveType,UINT StartVertex,UINT PrimitiveCount); + HRESULT DrawIndexedPrimitive( D3DPRIMITIVETYPE,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount); + HRESULT DrawPrimitiveUP( D3DPRIMITIVETYPE PrimitiveType,UINT PrimitiveCount, void* pVertexStreamZeroData,UINT VertexStreamZeroStride); + HRESULT DrawIndexedPrimitiveUP( D3DPRIMITIVETYPE PrimitiveType,UINT MinVertexIndex,UINT NumVertices,UINT PrimitiveCount, void* pIndexData,D3DFORMAT IndexDataFormat, void* pVertexStreamZeroData,UINT VertexStreamZeroStride); + HRESULT ProcessVertices( UINT SrcStartIndex,UINT DestIndex,UINT VertexCount,LPDIRECT3DVERTEXBUFFER9 pDestBuffer,LPDIRECT3DVERTEXDECLARATION9 pVertexDecl,DWORD Flags); + HRESULT CreateVertexDeclaration( D3DVERTEXELEMENT9* pVertexElements,LPDIRECT3DVERTEXDECLARATION9* ppDecl); + HRESULT SetVertexDeclaration(LPDIRECT3DVERTEXDECLARATION9 pDecl); + HRESULT GetVertexDeclaration(LPDIRECT3DVERTEXDECLARATION9* ppDecl); + HRESULT SetFVF( DWORD FVF); + HRESULT GetFVF( DWORD* pFVF); + HRESULT CreateVertexShader( DWORD* pFunction,LPDIRECT3DVERTEXSHADER9* ppShader); + HRESULT SetVertexShader( LPDIRECT3DVERTEXSHADER9 pShader); + HRESULT GetVertexShader( LPDIRECT3DVERTEXSHADER9* ppShader); + HRESULT SetVertexShaderConstantF( UINT StartRegister, float* pConstantData,UINT Vector4fCount); + HRESULT GetVertexShaderConstantF( UINT StartRegister,float* pConstantData,UINT Vector4fCount); + HRESULT SetVertexShaderConstantI( UINT StartRegister, int* pConstantData,UINT Vector4iCount); + HRESULT GetVertexShaderConstantI( UINT StartRegister,int* pConstantData,UINT Vector4iCount); + HRESULT SetVertexShaderConstantB( UINT StartRegister, BOOL* pConstantData,UINT BoolCount); + HRESULT GetVertexShaderConstantB( UINT StartRegister,BOOL* pConstantData,UINT BoolCount); + HRESULT SetStreamSource( UINT StreamNumber,LPDIRECT3DVERTEXBUFFER9 pStreamData,UINT OffsetInBytes,UINT Stride); + HRESULT GetStreamSource( UINT StreamNumber,LPDIRECT3DVERTEXBUFFER9* ppStreamData,UINT* pOffsetInBytes,UINT* pStride); + HRESULT SetStreamSourceFreq( UINT StreamNumber,UINT Setting); + HRESULT GetStreamSourceFreq( UINT StreamNumber,UINT* pSetting); + HRESULT SetIndices( LPDIRECT3DINDEXBUFFER9 pIndexData); + HRESULT GetIndices( LPDIRECT3DINDEXBUFFER9* ppIndexData); + HRESULT CreatePixelShader( DWORD* pFunction,LPDIRECT3DPIXELSHADER9* ppShader); + HRESULT SetPixelShader(LPDIRECT3DPIXELSHADER9 pShader); + HRESULT GetPixelShader(LPDIRECT3DPIXELSHADER9* ppShader); + HRESULT SetPixelShaderConstantF( UINT StartRegister, float* pConstantData,UINT Vector4fCount); + HRESULT GetPixelShaderConstantF( UINT StartRegister,float* pConstantData,UINT Vector4fCount); + HRESULT SetPixelShaderConstantI( UINT StartRegister, int* pConstantData,UINT Vector4iCount); + HRESULT GetPixelShaderConstantI( UINT StartRegister,int* pConstantData,UINT Vector4iCount); + HRESULT SetPixelShaderConstantB( UINT StartRegister, BOOL* pConstantData,UINT BoolCount); + HRESULT GetPixelShaderConstantB( UINT StartRegister,BOOL* pConstantData,UINT BoolCount); + HRESULT DrawRectPatch( UINT Handle, float* pNumSegs, D3DRECTPATCH_INFO* pRectPatchInfo); + HRESULT DrawTriPatch( UINT Handle, float* pNumSegs, D3DTRIPATCH_INFO* pTriPatchInfo); + HRESULT DeletePatch( UINT Handle); + HRESULT CreateQuery( D3DQUERYTYPE Type,LPDIRECT3DQUERY9* ppQuery); +/* + debug { + D3DDEVICE_CREATION_PARAMETERS CreationParameters; + D3DPRESENT_PARAMETERS PresentParameters; + D3DDISPLAYMODE DisplayMode; + D3DCAPS9 Caps; + + UINT AvailableTextureMem; + UINT SwapChains; + UINT Textures; + UINT VertexBuffers; + UINT IndexBuffers; + UINT VertexShaders; + UINT PixelShaders; + + D3DVIEWPORT9 Viewport; + D3DMATRIX ProjectionMatrix; + D3DMATRIX ViewMatrix; + D3DMATRIX WorldMatrix; + D3DMATRIX[8] TextureMatrices; + + DWORD FVF; + UINT VertexSize; + DWORD VertexShaderVersion; + DWORD PixelShaderVersion; + BOOL SoftwareVertexProcessing; + + D3DMATERIAL9 Material; + D3DLIGHT9[16] Lights; + BOOL[16] LightsEnabled; + + D3DGAMMARAMP GammaRamp; + RECT ScissorRect; + BOOL DialogBoxMode; + } +*/ +} + +alias LPDIRECT3DDEVICE9 IDirect3DDevice9; + + +interface LPDIRECT3DSTATEBLOCK9 : IUnknown +{ + HRESULT GetDevice(LPDIRECT3DDEVICE9* ppDevice); + HRESULT Capture(); + HRESULT Apply(); +/* + debug { + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DSTATEBLOCK9 IDirect3DStateBlock9; + +interface LPDIRECT3DSWAPCHAIN9 : IUnknown +{ + HRESULT Present( RECT* pSourceRect, RECT* pDestRect,HWND hDestWindowOverride, RGNDATA* pDirtyRegion,DWORD dwFlags); + HRESULT GetFrontBufferData( LPDIRECT3DSURFACE9 pDestSurface); + HRESULT GetBackBuffer( UINT iBackBuffer,D3DBACKBUFFER_TYPE Type,LPDIRECT3DSURFACE9* ppBackBuffer); + HRESULT GetRasterStatus( D3DRASTER_STATUS* pRasterStatus); + HRESULT GetDisplayMode( D3DDISPLAYMODE* pMode); + HRESULT GetDevice( LPDIRECT3DDEVICE9 * ppDevice); + HRESULT GetPresentParameters( D3DPRESENT_PARAMETERS* pPresentationParameters); +/* + debug { + D3DPRESENT_PARAMETERS PresentParameters; + D3DDISPLAYMODE DisplayMode; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DSWAPCHAIN9 IDirect3DSwapChain9; + +interface LPDIRECT3DRESOURCE9 : IUnknown +{ + HRESULT GetDevice( LPDIRECT3DDEVICE9* ppDevice); + HRESULT SetPrivateData( REFGUID refguid, void* pData,DWORD SizeOfData,DWORD Flags); + HRESULT GetPrivateData( REFGUID refguid,void* pData,DWORD* pSizeOfData); + HRESULT FreePrivateData( REFGUID refguid); + DWORD SetPriority(DWORD PriorityNew); + DWORD GetPriority(); + void PreLoad(); + D3DRESOURCETYPE GetType(); +} + +alias LPDIRECT3DRESOURCE9 IDirect3DResource9; + +interface LPDIRECT3DVERTEXDECLARATION9 : IUnknown +{ + HRESULT GetDevice( LPDIRECT3DDEVICE9* ppDevice); + HRESULT GetDeclaration( D3DVERTEXELEMENT9* pElement,UINT* pNumElements); +/* + debug { + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DVERTEXDECLARATION9 IDirect3DVertexDeclaration9; + +interface LPDIRECT3DVERTEXSHADER9 : IUnknown +{ + HRESULT GetDevice( LPDIRECT3DDEVICE9 * ppDevice); + HRESULT GetFunction( void*,UINT* pSizeOfData); +/* + debug { + DWORD Version; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DVERTEXSHADER9 IDirect3DVertexShader9; + +interface LPDIRECT3DPIXELSHADER9 : IUnknown +{ + HRESULT GetDevice( LPDIRECT3DDEVICE9 * ppDevice); + HRESULT GetFunction( void*,UINT* pSizeOfData); +/* + debug { + DWORD Version; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DPIXELSHADER9 IDirect3DPixelShader9; + +interface LPDIRECT3DBASETEXTURE9 : LPDIRECT3DRESOURCE9 +{ + DWORD SetLOD(DWORD LODNew); + DWORD GetLOD(); + DWORD GetLevelCount(); + HRESULT SetAutoGenFilterType( D3DTEXTUREFILTERTYPE FilterType); + D3DTEXTUREFILTERTYPE GetAutoGenFilterType(); + void GenerateMipSubLevels(); +} + +alias LPDIRECT3DBASETEXTURE9 IDirect3DBaseTexture9; + +interface LPDIRECT3DTEXTURE9 : LPDIRECT3DBASETEXTURE9 +{ + HRESULT GetLevelDesc( UINT Level,D3DSURFACE_DESC *pDesc); + HRESULT GetSurfaceLevel( UINT Level,LPDIRECT3DSURFACE9* ppSurfaceLevel); + HRESULT LockRect( UINT Level,D3DLOCKED_RECT* pLockedRect,RECT* pRect,DWORD Flags); + HRESULT UnlockRect( UINT Level); + HRESULT AddDirtyRect(RECT* pDirtyRect); +/* + debug { + LPCWSTR Name; + UINT Width; + UINT Height; + UINT Levels; + DWORD Usage; + D3DFORMAT Format; + D3DPOOL Pool; + DWORD Priority; + DWORD LOD; + D3DTEXTUREFILTERTYPE FilterType; + UINT LockCount; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DTEXTURE9 IDirect3DTexture9; + +interface LPDIRECT3DVOLUMETEXTURE9 : LPDIRECT3DBASETEXTURE9 +{ + HRESULT GetLevelDesc( UINT Level,D3DVOLUME_DESC *pDesc); + HRESULT GetVolumeLevel( UINT Level,LPDIRECT3DVOLUME9* ppVolumeLevel); + HRESULT LockBox( UINT Level,D3DLOCKED_BOX* pLockedVolume, D3DBOX* pBox,DWORD Flags); + HRESULT UnlockBox( UINT Level); + HRESULT AddDirtyBox( D3DBOX* pDirtyBox); +/* + debug { + LPCWSTR Name; + UINT Width; + UINT Height; + UINT Depth; + UINT Levels; + DWORD Usage; + D3DFORMAT Format; + D3DPOOL Pool; + DWORD Priority; + DWORD LOD; + D3DTEXTUREFILTERTYPE FilterType; + UINT LockCount; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DVOLUMETEXTURE9 IDirect3DVolumeTexture9; + +interface LPDIRECT3DCUBETEXTURE9 : LPDIRECT3DBASETEXTURE9 +{ + HRESULT GetLevelDesc( UINT Level,D3DSURFACE_DESC *pDesc); + HRESULT GetCubeMapSurface( D3DCUBEMAP_FACES FaceType,UINT Level,LPDIRECT3DSURFACE9* ppCubeMapSurface); + HRESULT LockRect( D3DCUBEMAP_FACES FaceType,UINT Level,D3DLOCKED_RECT* pLockedRect, RECT* pRect,DWORD Flags); + HRESULT UnlockRect( D3DCUBEMAP_FACES FaceType,UINT Level); + HRESULT AddDirtyRect( D3DCUBEMAP_FACES FaceType, RECT* pDirtyRect); +/* + debug { + LPCWSTR Name; + UINT Width; + UINT Height; + UINT Levels; + DWORD Usage; + D3DFORMAT Format; + D3DPOOL Pool; + DWORD Priority; + DWORD LOD; + D3DTEXTUREFILTERTYPE FilterType; + UINT LockCount; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DCUBETEXTURE9 IDirect3DCubeTexture9; + +interface LPDIRECT3DVERTEXBUFFER9 : LPDIRECT3DRESOURCE9 +{ + HRESULT Lock( UINT OffsetToLock,UINT SizeToLock,void** ppbData,DWORD Flags); + HRESULT Unlock(); + HRESULT GetDesc( D3DVERTEXBUFFER_DESC *pDesc); +/* + debug { + LPCWSTR Name; + UINT Length; + DWORD Usage; + DWORD FVF; + D3DPOOL Pool; + DWORD Priority; + UINT LockCount; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DVERTEXBUFFER9 IDirect3DVertexBuffer9; + +interface LPDIRECT3DINDEXBUFFER9 : LPDIRECT3DRESOURCE9 +{ + HRESULT Lock( UINT OffsetToLock,UINT SizeToLock,void** ppbData,DWORD Flags); + HRESULT Unlock(); + HRESULT GetDesc( D3DINDEXBUFFER_DESC *pDesc); +/* + debug { + LPCWSTR Name; + UINT Length; + DWORD Usage; + D3DFORMAT Format; + D3DPOOL Pool; + DWORD Priority; + UINT LockCount; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DINDEXBUFFER9 IDirect3DIndexBuffer9; + +interface LPDIRECT3DSURFACE9 : LPDIRECT3DRESOURCE9 +{ + HRESULT GetContainer( REFIID riid,void** ppContainer); + HRESULT GetDesc( D3DSURFACE_DESC *pDesc); + HRESULT LockRect( D3DLOCKED_RECT* pLockedRect, RECT* pRect,DWORD Flags); + HRESULT UnlockRect(); + HRESULT GetDC( HDC *phdc); + HRESULT ReleaseDC( HDC hdc); +/* + debug { + LPCWSTR Name; + UINT Width; + UINT Height; + DWORD Usage; + D3DFORMAT Format; + D3DPOOL Pool; + D3DMULTISAMPLE_TYPE MultiSampleType; + DWORD MultiSampleQuality; + DWORD Priority; + UINT LockCount; + UINT DCCount; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DSURFACE9 IDirect3DSurface9; + +interface LPDIRECT3DVOLUME9 : IUnknown +{ + HRESULT GetDevice( LPDIRECT3DDEVICE9 * ppDevice); + HRESULT SetPrivateData( REFGUID refguid, void* pData,DWORD SizeOfData,DWORD Flags); + HRESULT GetPrivateData( REFGUID refguid,void* pData,DWORD* pSizeOfData); + HRESULT FreePrivateData( REFGUID refguid); + HRESULT GetContainer( REFIID riid,void** ppContainer); + HRESULT GetDesc( D3DVOLUME_DESC *pDesc); + HRESULT LockBox( D3DLOCKED_BOX * pLockedVolume, D3DBOX* pBox,DWORD Flags); + HRESULT UnlockBox(); +/* + debug { + LPCWSTR Name; + UINT Width; + UINT Height; + UINT Depth; + DWORD Usage; + D3DFORMAT Format; + D3DPOOL Pool; + UINT LockCount; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DVOLUME9 IDirect3DVolume9; + +interface LPDIRECT3DQUERY9 : IUnknown +{ + HRESULT GetDevice( LPDIRECT3DDEVICE9* ppDevice); + D3DQUERYTYPE GetType(); + DWORD GetDataSize(); + HRESULT Issue( DWORD dwIssueFlags); + HRESULT GetData( void* pData,DWORD dwSize,DWORD dwGetDataFlags); +/* + debug { + D3DQUERYTYPE Type; + DWORD DataSize; + LPCWSTR CreationCallStack; + } +*/ +} + +alias LPDIRECT3DQUERY9 IDirect3DQuery9; + +/**************************************************************************** + * Flags for SetPrivateData method on all D3D9 interfaces + * + * The passed pointer is an IUnknown ptr. The SizeOfData argument to SetPrivateData + * must be set to sizeof(IUnknown*). Direct3D will call AddRef through this + * pointer and Release when the private data is destroyed. The data will be + * destroyed when another SetPrivateData with the same GUID is set, when + * FreePrivateData is called, or when the D3D9 object is freed. + ****************************************************************************/ +const D3DSPD_IUNKNOWN = 0x00000001L; + +/**************************************************************************** + * + * Flags for IDirect3D9::CreateDevice's BehaviorFlags + * + ****************************************************************************/ + +const D3DCREATE_FPU_PRESERVE = 0x00000002L; +const D3DCREATE_MULTITHREADED = 0x00000004L; + +const D3DCREATE_PUREDEVICE = 0x00000010L; +const D3DCREATE_SOFTWARE_VERTEXPROCESSING = 0x00000020L; +const D3DCREATE_HARDWARE_VERTEXPROCESSING = 0x00000040L; +const D3DCREATE_MIXED_VERTEXPROCESSING = 0x00000080L; + +const D3DCREATE_DISABLE_DRIVER_MANAGEMENT = 0x00000100L; +const D3DCREATE_ADAPTERGROUP_DEVICE = 0x00000200L; +const D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX = 0x00000400L; + +// This flag causes the D3D runtime not to alter the focus +// window in any way. Use with caution- the burden of supporting +// focus management events (alt-tab, etc.) falls on the +// application, and appropriate responses (switching display +// mode, etc.) should be coded. +const D3DCREATE_NOWINDOWCHANGES = 0x00000800L; + +// Disable multithreading for software vertex processing +const D3DCREATE_DISABLE_PSGP_THREADING = 0x00002000L; +// This flag enables present statistics on device. +const D3DCREATE_ENABLE_PRESENTSTATS = 0x00004000L; +// This flag disables printscreen support in the runtime for this device +const D3DCREATE_DISABLE_PRINTSCREEN = 0x00008000L; + +const D3DCREATE_SCREENSAVER = 0x10000000L; + + +/**************************************************************************** + * + * Parameter for IDirect3D9::CreateDevice's Adapter argument + * + ****************************************************************************/ + +const D3DADAPTER_DEFAULT = 0; + +/**************************************************************************** + * + * Flags for IDirect3D9::EnumAdapters + * + ****************************************************************************/ + +/* + * The D3DENUM_WHQL_LEVEL value has been retired for 9Ex and future versions, + * but it needs to be defined here for compatibility with DX9 and earlier versions. + * See the DirectX SDK for sample code on discovering driver signatures. + */ +const D3DENUM_WHQL_LEVEL = 0x00000002L; + +/* NO_DRIVERVERSION will not fill out the DriverVersion field, nor will the + DriverVersion be incorporated into the DeviceIdentifier GUID. WINNT only */ +const D3DENUM_NO_DRIVERVERSION = 0x00000004L; + + +/**************************************************************************** + * + * Maximum number of back-buffers supported in DX9 + * + ****************************************************************************/ + +const D3DPRESENT_BACK_BUFFERS_MAX = 3L; + +/**************************************************************************** + * + * Maximum number of back-buffers supported when apps use CreateDeviceEx + * + ****************************************************************************/ +const D3DPRESENT_BACK_BUFFERS_MAX_EX = 30L; + +/**************************************************************************** + * + * Flags for IDirect3DDevice9::SetGammaRamp + * + ****************************************************************************/ + +const D3DSGR_NO_CALIBRATION = 0x00000000L; +const D3DSGR_CALIBRATE = 0x00000001L; + +/**************************************************************************** + * + * Flags for IDirect3DDevice9::SetCursorPosition + * + ****************************************************************************/ + +const D3DCURSOR_IMMEDIATE_UPDATE = 0x00000001L; + +/**************************************************************************** + * + * Flags for IDirect3DSwapChain9::Present + * + ****************************************************************************/ + +const D3DPRESENT_DONOTWAIT = 0x00000001L; +const D3DPRESENT_LINEAR_CONTENT = 0x00000002L; +const D3DPRESENT_DONOTFLIP = 0x00000004L; +const D3DPRESENT_FLIPRESTART = 0x00000008L; +const D3DPRESENT_VIDEO_RESTRICT_TO_MONITOR = 0x00000010L; + +/**************************************************************************** + * + * Flags for DrawPrimitive/DrawIndexedPrimitive + * Also valid for Begin/BeginIndexed + * Also valid for VertexBuffer::CreateVertexBuffer + ****************************************************************************/ + + +/* + * DirectDraw error codes + */ +const _FACD3D = 0x876; +HRESULT MAKE_D3DHRESULT(T)(T code) { return MAKE_HRESULT( 1, _FACD3D, code ); } +HRESULT MAKE_D3DSTATUS(T)(T code) { return MAKE_HRESULT( 0, _FACD3D, code ); } + +/* + * Direct3D Errors + */ +const HRESULT D3D_OK = S_OK; + +const HRESULT D3DERR_WRONGTEXTUREFORMAT = MAKE_D3DHRESULT(2072); +const HRESULT D3DERR_UNSUPPORTEDCOLOROPERATION = MAKE_D3DHRESULT(2073); +const HRESULT D3DERR_UNSUPPORTEDCOLORARG = MAKE_D3DHRESULT(2074); +const HRESULT D3DERR_UNSUPPORTEDALPHAOPERATION = MAKE_D3DHRESULT(2075); +const HRESULT D3DERR_UNSUPPORTEDALPHAARG = MAKE_D3DHRESULT(2076); +const HRESULT D3DERR_TOOMANYOPERATIONS = MAKE_D3DHRESULT(2077); +const HRESULT D3DERR_CONFLICTINGTEXTUREFILTER = MAKE_D3DHRESULT(2078); +const HRESULT D3DERR_UNSUPPORTEDFACTORVALUE = MAKE_D3DHRESULT(2079); +const HRESULT D3DERR_CONFLICTINGRENDERSTATE = MAKE_D3DHRESULT(2081); +const HRESULT D3DERR_UNSUPPORTEDTEXTUREFILTER = MAKE_D3DHRESULT(2082); +const HRESULT D3DERR_CONFLICTINGTEXTUREPALETTE = MAKE_D3DHRESULT(2086); +const HRESULT D3DERR_DRIVERINTERNALERROR = MAKE_D3DHRESULT(2087); + +const HRESULT D3DERR_NOTFOUND = MAKE_D3DHRESULT(2150); +const HRESULT D3DERR_MOREDATA = MAKE_D3DHRESULT(2151); +const HRESULT D3DERR_DEVICELOST = MAKE_D3DHRESULT(2152); +const HRESULT D3DERR_DEVICENOTRESET = MAKE_D3DHRESULT(2153); +const HRESULT D3DERR_NOTAVAILABLE = MAKE_D3DHRESULT(2154); +const HRESULT D3DERR_OUTOFVIDEOMEMORY = MAKE_D3DHRESULT(380); +const HRESULT D3DERR_INVALIDDEVICE = MAKE_D3DHRESULT(2155); +const HRESULT D3DERR_INVALIDCALL = MAKE_D3DHRESULT(2156); +const HRESULT D3DERR_DRIVERINVALIDCALL = MAKE_D3DHRESULT(2157); +const HRESULT D3DERR_WASSTILLDRAWING = MAKE_D3DHRESULT(540); +const HRESULT D3DOK_NOAUTOGEN = MAKE_D3DSTATUS(2159); +const HRESULT D3DERR_DEVICEREMOVED = MAKE_D3DHRESULT(2160); +const HRESULT S_NOT_RESIDENT = MAKE_D3DSTATUS(2165); +const HRESULT S_RESIDENT_IN_SHARED_MEMORY = MAKE_D3DSTATUS(2166); +const HRESULT S_PRESENT_MODE_CHANGED = MAKE_D3DSTATUS(2167); +const HRESULT S_PRESENT_OCCLUDED = MAKE_D3DSTATUS(2168); +const HRESULT D3DERR_DEVICEHUNG = MAKE_D3DHRESULT(2164); + + +/********************* +/* D3D9Ex interfaces +/*********************/ + +extern (Windows) HRESULT Direct3DCreate9Ex(UINT SDKVersion, LPDIRECT3D9EX*); + +interface LPDIRECT3D9EX : LPDIRECT3D9 +{ + UINT GetAdapterModeCountEx(UINT Adapter, D3DDISPLAYMODEFILTER* pFilter ); + HRESULT EnumAdapterModesEx( UINT Adapter, D3DDISPLAYMODEFILTER* pFilter,UINT Mode,D3DDISPLAYMODEEX* pMode); + HRESULT GetAdapterDisplayModeEx( UINT Adapter,D3DDISPLAYMODEEX* pMode,D3DDISPLAYROTATION* pRotation); + HRESULT CreateDeviceEx( UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS* pPresentationParameters,D3DDISPLAYMODEEX* pFullscreenDisplayMode,LPDIRECT3DDEVICE9EX* ppReturnedDeviceInterface); + HRESULT GetAdapterLUID( UINT Adapter,LUID * pLUID); +} + +alias LPDIRECT3D9EX IDirect3D9Ex; + +interface LPDIRECT3DDEVICE9EX : LPDIRECT3DDEVICE9 +{ + HRESULT SetConvolutionMonoKernel( UINT width,UINT height,float* rows,float* columns); + HRESULT ComposeRects( LPDIRECT3DSURFACE9 pSrc,LPDIRECT3DSURFACE9 pDst,LPDIRECT3DVERTEXBUFFER9 pSrcRectDescs,UINT NumRects,LPDIRECT3DVERTEXBUFFER9 pDstRectDescs,D3DCOMPOSERECTSOP Operation,int Xoffset,int Yoffset); + HRESULT PresentEx( RECT* pSourceRect, RECT* pDestRect,HWND hDestWindowOverride, RGNDATA* pDirtyRegion,DWORD dwFlags); + HRESULT GetGPUThreadPriority( INT* pPriority); + HRESULT SetGPUThreadPriority( INT Priority); + HRESULT WaitForVBlank( UINT iSwapChain); + HRESULT CheckResourceResidency( LPDIRECT3DRESOURCE9* pResourceArray,UINT32 NumResources); + HRESULT SetMaximumFrameLatency( UINT MaxLatency); + HRESULT GetMaximumFrameLatency( UINT* pMaxLatency); + HRESULT CheckDeviceState( HWND hDestinationWindow); + HRESULT CreateRenderTargetEx( UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,LPDIRECT3DSURFACE9* ppSurface,HANDLE* pSharedHandle,DWORD Usage); + HRESULT CreateOffscreenPlainSurfaceEx( UINT Width,UINT Height,D3DFORMAT Format,D3DPOOL Pool,LPDIRECT3DSURFACE9* ppSurface,HANDLE* pSharedHandle,DWORD Usage); + HRESULT CreateDepthStencilSurfaceEx( UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,LPDIRECT3DSURFACE9* ppSurface,HANDLE* pSharedHandle,DWORD Usage); + HRESULT ResetEx( D3DPRESENT_PARAMETERS* pPresentationParameters,D3DDISPLAYMODEEX *pFullscreenDisplayMode); + HRESULT GetDisplayModeEx( UINT iSwapChain,D3DDISPLAYMODEEX* pMode,D3DDISPLAYROTATION* pRotation); +} + +alias LPDIRECT3DDEVICE9EX IDirect3DDevice9Ex; + +interface LPDIRECT3DSWAPCHAIN9EX : LPDIRECT3DSWAPCHAIN9 +{ + HRESULT GetLastPresentCount( UINT* pLastPresentCount); + HRESULT GetPresentStats( D3DPRESENTSTATS* pPresentationStatistics); + HRESULT GetDisplayModeEx( D3DDISPLAYMODEEX* pMode,D3DDISPLAYROTATION* pRotation); +} + +alias LPDIRECT3DSWAPCHAIN9EX IDirect3DSwapChain9Ex; ADDED src/win32/directx/d3d9.def Index: src/win32/directx/d3d9.def ================================================================== --- src/win32/directx/d3d9.def +++ src/win32/directx/d3d9.def @@ -0,0 +1,2 @@ +IMPORTS +_Direct3DCreate9@4 = d3d9.Direct3DCreate9 ADDED src/win32/directx/d3d9caps.d Index: src/win32/directx/d3d9caps.d ================================================================== --- src/win32/directx/d3d9caps.d +++ src/win32/directx/d3d9caps.d @@ -0,0 +1,472 @@ +/*==========================================================================; + * + * Copyright (C) Microsoft Corporation. All Rights Reserved. + * + * File: d3d9caps.h + * Content: Direct3D capabilities include file + * + ***************************************************************************/ + +module win32.directx.d3d9caps; + +private import win32.windows, + win32.directx.d3d9types; + +align(4): + +struct D3DVSHADERCAPS2_0 +{ + DWORD Caps; + INT DynamicFlowControlDepth; + INT NumTemps; + INT StaticFlowControlDepth; +} + +const D3DVS20CAPS_PREDICATION = (1<<0); + +const D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH = 24; +const D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH = 0; +const D3DVS20_MAX_NUMTEMPS = 32; +const D3DVS20_MIN_NUMTEMPS = 12; +const D3DVS20_MAX_STATICFLOWCONTROLDEPTH = 4; +const D3DVS20_MIN_STATICFLOWCONTROLDEPTH = 1; + +struct D3DPSHADERCAPS2_0 +{ + DWORD Caps; + INT DynamicFlowControlDepth; + INT NumTemps; + INT StaticFlowControlDepth; + INT NumInstructionSlots; +} + +const D3DPS20CAPS_ARBITRARYSWIZZLE = (1<<0); +const D3DPS20CAPS_GRADIENTINSTRUCTIONS = (1<<1); +const D3DPS20CAPS_PREDICATION = (1<<2); +const D3DPS20CAPS_NODEPENDENTREADLIMIT = (1<<3); +const D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT = (1<<4); + +const D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH = 24; +const D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH = 0; +const D3DPS20_MAX_NUMTEMPS = 32; +const D3DPS20_MIN_NUMTEMPS = 12; +const D3DPS20_MAX_STATICFLOWCONTROLDEPTH = 4; +const D3DPS20_MIN_STATICFLOWCONTROLDEPTH = 0; +const D3DPS20_MAX_NUMINSTRUCTIONSLOTS = 512; +const D3DPS20_MIN_NUMINSTRUCTIONSLOTS = 96; + +const D3DMIN30SHADERINSTRUCTIONS = 512; +const D3DMAX30SHADERINSTRUCTIONS = 32768; + +struct D3DCAPS9 +{ + /* Device Info */ + D3DDEVTYPE DeviceType; + UINT AdapterOrdinal; + + /* Caps from DX7 Draw */ + DWORD Caps; + DWORD Caps2; + DWORD Caps3; + DWORD PresentationIntervals; + + /* Cursor Caps */ + DWORD CursorCaps; + + /* 3D Device Caps */ + DWORD DevCaps; + + DWORD PrimitiveMiscCaps; + DWORD RasterCaps; + DWORD ZCmpCaps; + DWORD SrcBlendCaps; + DWORD DestBlendCaps; + DWORD AlphaCmpCaps; + DWORD ShadeCaps; + DWORD TextureCaps; + DWORD TextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture9's + DWORD CubeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DCubeTexture9's + DWORD VolumeTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DVolumeTexture9's + DWORD TextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DTexture9's + DWORD VolumeTextureAddressCaps; // D3DPTADDRESSCAPS for IDirect3DVolumeTexture9's + + DWORD LineCaps; // D3DLINECAPS + + DWORD MaxTextureWidth, MaxTextureHeight; + DWORD MaxVolumeExtent; + + DWORD MaxTextureRepeat; + DWORD MaxTextureAspectRatio; + DWORD MaxAnisotropy; + float MaxVertexW; + + float GuardBandLeft; + float GuardBandTop; + float GuardBandRight; + float GuardBandBottom; + + float ExtentsAdjust; + DWORD StencilCaps; + + DWORD FVFCaps; + DWORD TextureOpCaps; + DWORD MaxTextureBlendStages; + DWORD MaxSimultaneousTextures; + + DWORD VertexProcessingCaps; + DWORD MaxActiveLights; + DWORD MaxUserClipPlanes; + DWORD MaxVertexBlendMatrices; + DWORD MaxVertexBlendMatrixIndex; + + float MaxPointSize; + + DWORD MaxPrimitiveCount; // max number of primitives per DrawPrimitive call + DWORD MaxVertexIndex; + DWORD MaxStreams; + DWORD MaxStreamStride; // max stride for SetStreamSource + + DWORD VertexShaderVersion; + DWORD MaxVertexShaderConst; // number of vertex shader constant registers + + DWORD PixelShaderVersion; + float PixelShader1xMaxValue; // max value storable in registers of ps.1.x shaders + + // Here are the DX9 specific ones + DWORD DevCaps2; + + float MaxNpatchTessellationLevel; + DWORD Reserved5; + + UINT MasterAdapterOrdinal; // ordinal of master adaptor for adapter group + UINT AdapterOrdinalInGroup; // ordinal inside the adapter group + UINT NumberOfAdaptersInGroup; // number of adapters in this adapter group (only if master) + DWORD DeclTypes; // Data types, supported in vertex declarations + DWORD NumSimultaneousRTs; // Will be at least 1 + DWORD StretchRectFilterCaps; // Filter caps supported by StretchRect + D3DVSHADERCAPS2_0 VS20Caps; + D3DPSHADERCAPS2_0 PS20Caps; + DWORD VertexTextureFilterCaps; // D3DPTFILTERCAPS for IDirect3DTexture9's for texture, used in vertex shaders + DWORD MaxVShaderInstructionsExecuted; // maximum number of vertex shader instructions that can be executed + DWORD MaxPShaderInstructionsExecuted; // maximum number of pixel shader instructions that can be executed + DWORD MaxVertexShader30InstructionSlots; + DWORD MaxPixelShader30InstructionSlots; +} + +// +// BIT DEFINES FOR D3DCAPS9 DWORD MEMBERS +// + +// +// Caps +// +const D3DCAPS_READ_SCANLINE = 0x00020000L; + +// +// Caps2 +// +const D3DCAPS2_FULLSCREENGAMMA = 0x00020000L; +const D3DCAPS2_CANCALIBRATEGAMMA = 0x00100000L; +const D3DCAPS2_RESERVED = 0x02000000L; +const D3DCAPS2_CANMANAGERESOURCE = 0x10000000L; +const D3DCAPS2_DYNAMICTEXTURES = 0x20000000L; +const D3DCAPS2_CANAUTOGENMIPMAP = 0x40000000L; + +const D3DCAPS2_CANSHARERESOURCE = 0x80000000L; + +// +// Caps3 +// +const D3DCAPS3_RESERVED = 0x8000001fL; + +// Indicates that the device can respect the ALPHABLENDENABLE render state +// when fullscreen while using the FLIP or DISCARD swap effect. +// COPY and COPYVSYNC swap effects work whether or not this flag is set. +const D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD = 0x00000020L; + +// Indicates that the device can perform a gamma correction from +// a windowed back buffer containing linear content to the sRGB desktop. +const D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION = 0x00000080L; + +const D3DCAPS3_COPY_TO_VIDMEM = 0x00000100L; /* Device can acclerate copies from sysmem to local vidmem */ +const D3DCAPS3_COPY_TO_SYSTEMMEM = 0x00000200L; /* Device can acclerate copies from local vidmem to sysmem */ + + +// +// PresentationIntervals +// +const D3DPRESENT_INTERVAL_DEFAULT = 0x00000000L; +const D3DPRESENT_INTERVAL_ONE = 0x00000001L; +const D3DPRESENT_INTERVAL_TWO = 0x00000002L; +const D3DPRESENT_INTERVAL_THREE = 0x00000004L; +const D3DPRESENT_INTERVAL_FOUR = 0x00000008L; +const D3DPRESENT_INTERVAL_IMMEDIATE = 0x80000000L; + +// +// CursorCaps +// +// Driver supports HW color cursor in at least hi-res modes(height >=400) +const D3DCURSORCAPS_COLOR = 0x00000001L; +// Driver supports HW cursor also in low-res modes(height < 400) +const D3DCURSORCAPS_LOWRES = 0x00000002L; + +// +// DevCaps +// +const D3DDEVCAPS_EXECUTESYSTEMMEMORY = 0x00000010L; /* Device can use execute buffers from system memory */ +const D3DDEVCAPS_EXECUTEVIDEOMEMORY = 0x00000020L; /* Device can use execute buffers from video memory */ +const D3DDEVCAPS_TLVERTEXSYSTEMMEMORY = 0x00000040L; /* Device can use TL buffers from system memory */ +const D3DDEVCAPS_TLVERTEXVIDEOMEMORY = 0x00000080L; /* Device can use TL buffers from video memory */ +const D3DDEVCAPS_TEXTURESYSTEMMEMORY = 0x00000100L; /* Device can texture from system memory */ +const D3DDEVCAPS_TEXTUREVIDEOMEMORY = 0x00000200L; /* Device can texture from device memory */ +const D3DDEVCAPS_DRAWPRIMTLVERTEX = 0x00000400L; /* Device can draw TLVERTEX primitives */ +const D3DDEVCAPS_CANRENDERAFTERFLIP = 0x00000800L; /* Device can render without waiting for flip to complete */ +const D3DDEVCAPS_TEXTURENONLOCALVIDMEM = 0x00001000L; /* Device can texture from nonlocal video memory */ +const D3DDEVCAPS_DRAWPRIMITIVES2 = 0x00002000L; /* Device can support DrawPrimitives2 */ +const D3DDEVCAPS_SEPARATETEXTUREMEMORIES = 0x00004000L; /* Device is texturing from separate memory pools */ +const D3DDEVCAPS_DRAWPRIMITIVES2EX = 0x00008000L; /* Device can support Extended DrawPrimitives2 i.e. DX7 compliant driver*/ +const D3DDEVCAPS_HWTRANSFORMANDLIGHT = 0x00010000L; /* Device can support transformation and lighting in hardware and DRAWPRIMITIVES2EX must be also */ +const D3DDEVCAPS_CANBLTSYSTONONLOCAL = 0x00020000L; /* Device supports a Tex Blt from system memory to non-local vidmem */ +const D3DDEVCAPS_HWRASTERIZATION = 0x00080000L; /* Device has HW acceleration for rasterization */ +const D3DDEVCAPS_PUREDEVICE = 0x00100000L; /* Device supports D3DCREATE_PUREDEVICE */ +const D3DDEVCAPS_QUINTICRTPATCHES = 0x00200000L; /* Device supports quintic Beziers and BSplines */ +const D3DDEVCAPS_RTPATCHES = 0x00400000L; /* Device supports Rect and Tri patches */ +const D3DDEVCAPS_RTPATCHHANDLEZERO = 0x00800000L; /* Indicates that RT Patches may be drawn efficiently using handle 0 */ +const D3DDEVCAPS_NPATCHES = 0x01000000L; /* Device supports N-Patches */ + +// +// PrimitiveMiscCaps +// +const D3DPMISCCAPS_MASKZ = 0x00000002L; +const D3DPMISCCAPS_CULLNONE = 0x00000010L; +const D3DPMISCCAPS_CULLCW = 0x00000020L; +const D3DPMISCCAPS_CULLCCW = 0x00000040L; +const D3DPMISCCAPS_COLORWRITEENABLE = 0x00000080L; +const D3DPMISCCAPS_CLIPPLANESCALEDPOINTS = 0x00000100L; /* Device correctly clips scaled points to clip planes */ +const D3DPMISCCAPS_CLIPTLVERTS = 0x00000200L; /* device will clip post-transformed vertex primitives */ +const D3DPMISCCAPS_TSSARGTEMP = 0x00000400L; /* device supports D3DTA_TEMP for temporary register */ +const D3DPMISCCAPS_BLENDOP = 0x00000800L; /* device supports D3DRS_BLENDOP */ +const D3DPMISCCAPS_NULLREFERENCE = 0x00001000L; /* Reference Device that doesnt render */ +const D3DPMISCCAPS_INDEPENDENTWRITEMASKS = 0x00004000L; /* Device supports independent write masks for MET or MRT */ +const D3DPMISCCAPS_PERSTAGECONSTANT = 0x00008000L; /* Device supports per-stage constants */ +const D3DPMISCCAPS_FOGANDSPECULARALPHA = 0x00010000L; /* Device supports separate fog and specular alpha (many devices + use the specular alpha channel to store fog factor) */ +const D3DPMISCCAPS_SEPARATEALPHABLEND = 0x00020000L; /* Device supports separate blend settings for the alpha channel */ +const D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS = 0x00040000L; /* Device supports different bit depths for MRT */ +const D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING = 0x00080000L; /* Device supports post-pixel shader operations for MRT */ +const D3DPMISCCAPS_FOGVERTEXCLAMPED = 0x00100000L; /* Device clamps fog blend factor per vertex */ + +const D3DPMISCCAPS_POSTBLENDSRGBCONVERT = 0x00200000L; /* Indicates device can perform conversion to sRGB after blending. */ + +// +// LineCaps +// +const D3DLINECAPS_TEXTURE = 0x00000001L; +const D3DLINECAPS_ZTEST = 0x00000002L; +const D3DLINECAPS_BLEND = 0x00000004L; +const D3DLINECAPS_ALPHACMP = 0x00000008L; +const D3DLINECAPS_FOG = 0x00000010L; +const D3DLINECAPS_ANTIALIAS = 0x00000020L; + +// +// RasterCaps +// +const D3DPRASTERCAPS_DITHER = 0x00000001L; +const D3DPRASTERCAPS_ZTEST = 0x00000010L; +const D3DPRASTERCAPS_FOGVERTEX = 0x00000080L; +const D3DPRASTERCAPS_FOGTABLE = 0x00000100L; +const D3DPRASTERCAPS_MIPMAPLODBIAS = 0x00002000L; +const D3DPRASTERCAPS_ZBUFFERLESSHSR = 0x00008000L; +const D3DPRASTERCAPS_FOGRANGE = 0x00010000L; +const D3DPRASTERCAPS_ANISOTROPY = 0x00020000L; +const D3DPRASTERCAPS_WBUFFER = 0x00040000L; +const D3DPRASTERCAPS_WFOG = 0x00100000L; +const D3DPRASTERCAPS_ZFOG = 0x00200000L; +const D3DPRASTERCAPS_COLORPERSPECTIVE = 0x00400000L; /* Device iterates colors perspective correct */ +const D3DPRASTERCAPS_SCISSORTEST = 0x01000000L; +const D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS = 0x02000000L; +const D3DPRASTERCAPS_DEPTHBIAS = 0x04000000L; +const D3DPRASTERCAPS_MULTISAMPLE_TOGGLE = 0x08000000L; + +// +// ZCmpCaps, AlphaCmpCaps +// +const D3DPCMPCAPS_NEVER = 0x00000001L; +const D3DPCMPCAPS_LESS = 0x00000002L; +const D3DPCMPCAPS_EQUAL = 0x00000004L; +const D3DPCMPCAPS_LESSEQUAL = 0x00000008L; +const D3DPCMPCAPS_GREATER = 0x00000010L; +const D3DPCMPCAPS_NOTEQUAL = 0x00000020L; +const D3DPCMPCAPS_GREATEREQUAL = 0x00000040L; +const D3DPCMPCAPS_ALWAYS = 0x00000080L; + +// +// SourceBlendCaps, DestBlendCaps +// +const D3DPBLENDCAPS_ZERO = 0x00000001L; +const D3DPBLENDCAPS_ONE = 0x00000002L; +const D3DPBLENDCAPS_SRCCOLOR = 0x00000004L; +const D3DPBLENDCAPS_INVSRCCOLOR = 0x00000008L; +const D3DPBLENDCAPS_SRCALPHA = 0x00000010L; +const D3DPBLENDCAPS_INVSRCALPHA = 0x00000020L; +const D3DPBLENDCAPS_DESTALPHA = 0x00000040L; +const D3DPBLENDCAPS_INVDESTALPHA = 0x00000080L; +const D3DPBLENDCAPS_DESTCOLOR = 0x00000100L; +const D3DPBLENDCAPS_INVDESTCOLOR = 0x00000200L; +const D3DPBLENDCAPS_SRCALPHASAT = 0x00000400L; +const D3DPBLENDCAPS_BOTHSRCALPHA = 0x00000800L; +const D3DPBLENDCAPS_BOTHINVSRCALPHA = 0x00001000L; +const D3DPBLENDCAPS_BLENDFACTOR = 0x00002000L; /* Supports both D3DBLEND_BLENDFACTOR and D3DBLEND_INVBLENDFACTOR */ + +const D3DPBLENDCAPS_SRCCOLOR2 = 0x00004000L; +const D3DPBLENDCAPS_INVSRCCOLOR2 = 0x00008000L; + +// +// ShadeCaps +// +const D3DPSHADECAPS_COLORGOURAUDRGB = 0x00000008L; +const D3DPSHADECAPS_SPECULARGOURAUDRGB = 0x00000200L; +const D3DPSHADECAPS_ALPHAGOURAUDBLEND = 0x00004000L; +const D3DPSHADECAPS_FOGGOURAUD = 0x00080000L; + +// +// TextureCaps +// +const D3DPTEXTURECAPS_PERSPECTIVE = 0x00000001L; /* Perspective-correct texturing is supported */ +const D3DPTEXTURECAPS_POW2 = 0x00000002L; /* Power-of-2 texture dimensions are required - applies to non-Cube/Volume textures only. */ +const D3DPTEXTURECAPS_ALPHA = 0x00000004L; /* Alpha in texture pixels is supported */ +const D3DPTEXTURECAPS_SQUAREONLY = 0x00000020L; /* Only square textures are supported */ +const D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE = 0x00000040L; /* Texture indices are not scaled by the texture size prior to interpolation */ +const D3DPTEXTURECAPS_ALPHAPALETTE = 0x00000080L; /* Device can draw alpha from texture palettes */ +// Device can use non-POW2 textures if: +// 1) D3DTEXTURE_ADDRESS is set to CLAMP for this texture's stage +// 2) D3DRS_WRAP(N) is zero for this texture's coordinates +// 3) mip mapping is not enabled (use magnification filter only) +const D3DPTEXTURECAPS_NONPOW2CONDITIONAL = 0x00000100L; +const D3DPTEXTURECAPS_PROJECTED = 0x00000400L; /* Device can do D3DTTFF_PROJECTED */ +const D3DPTEXTURECAPS_CUBEMAP = 0x00000800L; /* Device can do cubemap textures */ +const D3DPTEXTURECAPS_VOLUMEMAP = 0x00002000L; /* Device can do volume textures */ +const D3DPTEXTURECAPS_MIPMAP = 0x00004000L; /* Device can do mipmapped textures */ +const D3DPTEXTURECAPS_MIPVOLUMEMAP = 0x00008000L; /* Device can do mipmapped volume textures */ +const D3DPTEXTURECAPS_MIPCUBEMAP = 0x00010000L; /* Device can do mipmapped cube maps */ +const D3DPTEXTURECAPS_CUBEMAP_POW2 = 0x00020000L; /* Device requires that cubemaps be power-of-2 dimension */ +const D3DPTEXTURECAPS_VOLUMEMAP_POW2 = 0x00040000L; /* Device requires that volume maps be power-of-2 dimension */ +const D3DPTEXTURECAPS_NOPROJECTEDBUMPENV = 0x00200000L; /* Device does not support projected bump env lookup operation + in programmable and fixed function pixel shaders */ + +// +// TextureFilterCaps, StretchRectFilterCaps +// +const D3DPTFILTERCAPS_MINFPOINT = 0x00000100L; /* Min Filter */ +const D3DPTFILTERCAPS_MINFLINEAR = 0x00000200L; +const D3DPTFILTERCAPS_MINFANISOTROPIC = 0x00000400L; +const D3DPTFILTERCAPS_MINFPYRAMIDALQUAD = 0x00000800L; +const D3DPTFILTERCAPS_MINFGAUSSIANQUAD = 0x00001000L; +const D3DPTFILTERCAPS_MIPFPOINT = 0x00010000L; /* Mip Filter */ +const D3DPTFILTERCAPS_MIPFLINEAR = 0x00020000L; + +const D3DPTFILTERCAPS_CONVOLUTIONMONO = 0x00040000L; /* Min and Mag for the convolution mono filter */ + +const D3DPTFILTERCAPS_MAGFPOINT = 0x01000000L; /* Mag Filter */ +const D3DPTFILTERCAPS_MAGFLINEAR = 0x02000000L; +const D3DPTFILTERCAPS_MAGFANISOTROPIC = 0x04000000L; +const D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD = 0x08000000L; +const D3DPTFILTERCAPS_MAGFGAUSSIANQUAD = 0x10000000L; + +// +// TextureAddressCaps +// +const D3DPTADDRESSCAPS_WRAP = 0x00000001L; +const D3DPTADDRESSCAPS_MIRROR = 0x00000002L; +const D3DPTADDRESSCAPS_CLAMP = 0x00000004L; +const D3DPTADDRESSCAPS_BORDER = 0x00000008L; +const D3DPTADDRESSCAPS_INDEPENDENTUV = 0x00000010L; +const D3DPTADDRESSCAPS_MIRRORONCE = 0x00000020L; + +// +// StencilCaps +// +const D3DSTENCILCAPS_KEEP = 0x00000001L; +const D3DSTENCILCAPS_ZERO = 0x00000002L; +const D3DSTENCILCAPS_REPLACE = 0x00000004L; +const D3DSTENCILCAPS_INCRSAT = 0x00000008L; +const D3DSTENCILCAPS_DECRSAT = 0x00000010L; +const D3DSTENCILCAPS_INVERT = 0x00000020L; +const D3DSTENCILCAPS_INCR = 0x00000040L; +const D3DSTENCILCAPS_DECR = 0x00000080L; +const D3DSTENCILCAPS_TWOSIDED = 0x00000100L; + +// +// TextureOpCaps +// +const D3DTEXOPCAPS_DISABLE = 0x00000001L; +const D3DTEXOPCAPS_SELECTARG1 = 0x00000002L; +const D3DTEXOPCAPS_SELECTARG2 = 0x00000004L; +const D3DTEXOPCAPS_MODULATE = 0x00000008L; +const D3DTEXOPCAPS_MODULATE2X = 0x00000010L; +const D3DTEXOPCAPS_MODULATE4X = 0x00000020L; +const D3DTEXOPCAPS_ADD = 0x00000040L; +const D3DTEXOPCAPS_ADDSIGNED = 0x00000080L; +const D3DTEXOPCAPS_ADDSIGNED2X = 0x00000100L; +const D3DTEXOPCAPS_SUBTRACT = 0x00000200L; +const D3DTEXOPCAPS_ADDSMOOTH = 0x00000400L; +const D3DTEXOPCAPS_BLENDDIFFUSEALPHA = 0x00000800L; +const D3DTEXOPCAPS_BLENDTEXTUREALPHA = 0x00001000L; +const D3DTEXOPCAPS_BLENDFACTORALPHA = 0x00002000L; +const D3DTEXOPCAPS_BLENDTEXTUREALPHAPM = 0x00004000L; +const D3DTEXOPCAPS_BLENDCURRENTALPHA = 0x00008000L; +const D3DTEXOPCAPS_PREMODULATE = 0x00010000L; +const D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR = 0x00020000L; +const D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA = 0x00040000L; +const D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR = 0x00080000L; +const D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA = 0x00100000L; +const D3DTEXOPCAPS_BUMPENVMAP = 0x00200000L; +const D3DTEXOPCAPS_BUMPENVMAPLUMINANCE = 0x00400000L; +const D3DTEXOPCAPS_DOTPRODUCT3 = 0x00800000L; +const D3DTEXOPCAPS_MULTIPLYADD = 0x01000000L; +const D3DTEXOPCAPS_LERP = 0x02000000L; + +// +// FVFCaps +// +const D3DFVFCAPS_TEXCOORDCOUNTMASK = 0x0000ffffL; /* mask for texture coordinate count field */ +const D3DFVFCAPS_DONOTSTRIPELEMENTS = 0x00080000L; /* Device prefers that vertex elements not be stripped */ +const D3DFVFCAPS_PSIZE = 0x00100000L; /* Device can receive point size */ + +// +// VertexProcessingCaps +// +const D3DVTXPCAPS_TEXGEN = 0x00000001L; /* device can do texgen */ +const D3DVTXPCAPS_MATERIALSOURCE7 = 0x00000002L; /* device can do DX7-level colormaterialsource ops */ +const D3DVTXPCAPS_DIRECTIONALLIGHTS = 0x00000008L; /* device can do directional lights */ +const D3DVTXPCAPS_POSITIONALLIGHTS = 0x00000010L; /* device can do positional lights (includes point and spot) */ +const D3DVTXPCAPS_LOCALVIEWER = 0x00000020L; /* device can do local viewer */ +const D3DVTXPCAPS_TWEENING = 0x00000040L; /* device can do vertex tweening */ +const D3DVTXPCAPS_TEXGEN_SPHEREMAP = 0x00000100L; /* device supports D3DTSS_TCI_SPHEREMAP */ +const D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER = 0x00000200L; /* device does not support TexGen in non-local + viewer mode */ + +// +// DevCaps2 +// +const D3DDEVCAPS2_STREAMOFFSET = 0x00000001L; /* Device supports offsets in streams. Must be set by DX9 drivers */ +const D3DDEVCAPS2_DMAPNPATCH = 0x00000002L; /* Device supports displacement maps for N-Patches*/ +const D3DDEVCAPS2_ADAPTIVETESSRTPATCH = 0x00000004L; /* Device supports adaptive tesselation of RT-patches*/ +const D3DDEVCAPS2_ADAPTIVETESSNPATCH = 0x00000008L; /* Device supports adaptive tesselation of N-patches*/ +const D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES = 0x00000010L; /* Device supports StretchRect calls with a texture as the source*/ +const D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH = 0x00000020L; /* Device supports presampled displacement maps for N-Patches */ +const D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET = 0x00000040L; /* Vertex elements in a vertex declaration can share the same stream offset */ + +// +// DeclTypes +// +const D3DDTCAPS_UBYTE4 = 0x00000001L; +const D3DDTCAPS_UBYTE4N = 0x00000002L; +const D3DDTCAPS_SHORT2N = 0x00000004L; +const D3DDTCAPS_SHORT4N = 0x00000008L; +const D3DDTCAPS_USHORT2N = 0x00000010L; +const D3DDTCAPS_USHORT4N = 0x00000020L; +const D3DDTCAPS_UDEC3 = 0x00000040L; +const D3DDTCAPS_DEC3N = 0x00000080L; +const D3DDTCAPS_FLOAT16_2 = 0x00000100L; +const D3DDTCAPS_FLOAT16_4 = 0x00000200L; ADDED src/win32/directx/d3d9types.d Index: src/win32/directx/d3d9types.d ================================================================== --- src/win32/directx/d3d9types.d +++ src/win32/directx/d3d9types.d @@ -0,0 +1,1846 @@ +/*==========================================================================; + * + * Copyright (C) Microsoft Corporation. All Rights Reserved. + * + * File: d3d9types.h + * Content: Direct3D capabilities include file + * + ***************************************************************************/ + +module win32.directx.d3d9types; + +private import win32.windows; + +// Alignment compatibility +align(4): + +// D3DCOLOR is equivalent to D3DFMT_A8R8G8B8 +alias TypeDef!(uint) D3DCOLOR; + +// maps unsigned 8 bits/channel to D3DCOLOR +D3DCOLOR D3DCOLOR_ARGB(ubyte a,ubyte r,ubyte g,ubyte b) { return cast(D3DCOLOR)((a<<24)|(r<<16)|(g<<8)|b); } +D3DCOLOR D3DCOLOR_RGBA(ubyte r,ubyte g,ubyte b,ubyte a) { return D3DCOLOR_ARGB(a,r,g,b); } +D3DCOLOR D3DCOLOR_XRGB(ubyte r,ubyte g,ubyte b) { return D3DCOLOR_ARGB(0xff,r,g,b); } + +D3DCOLOR D3DCOLOR_XYUV(ubyte y, ubyte u, ubyte v) { return D3DCOLOR_ARGB(0xff,y,u,v); } +D3DCOLOR D3DCOLOR_AYUV( ubyte a, ubyte y, ubyte u, ubyte v) { return D3DCOLOR_ARGB(a,y,u,v); } + +// maps floating point channels (0.f to 1.f range) to D3DCOLOR +D3DCOLOR D3DCOLOR_COLORVALUE(float r, float g, float b, float a) { return D3DCOLOR_RGBA(cast(ubyte)(r*255.0f),cast(ubyte)(g*255.0f),cast(ubyte)(b*255.0f),cast(ubyte)(a*255.0f)); } + +struct D3DVECTOR { + float x; + float y; + float z; +} + +struct D3DCOLORVALUE { + float r; + float g; + float b; + float a; +} + +struct D3DRECT { + LONG x1; + LONG y1; + LONG x2; + LONG y2; +} + +struct D3DMATRIX { + union { + struct { + float _11, _12, _13, _14; + float _21, _22, _23, _24; + float _31, _32, _33, _34; + float _41, _42, _43, _44; + } + float[4][4] m; + } +} + +struct D3DVIEWPORT9 { + uint X; + uint Y; /* Viewport Top left */ + uint Width; + uint Height; /* Viewport Dimensions */ + float MinZ; /* Min/max of clip Volume */ + float MaxZ; +} + +/* + * Values for clip fields. + */ + +// Max number of user clipping planes, supported in D3D. +const D3DMAXUSERCLIPPLANES = 32; + +// These bits could be ORed together to use with D3DRS_CLIPPLANEENABLE +// +const D3DCLIPPLANE0 = (1<<0); +const D3DCLIPPLANE1 = (1<<1); +const D3DCLIPPLANE2 = (1<<2); +const D3DCLIPPLANE3 = (1<<3); +const D3DCLIPPLANE4 = (1<<4); +const D3DCLIPPLANE5 = (1<<5); + +// The following bits are used in the ClipUnion and ClipIntersection +// members of the D3DCLIPSTATUS9 +// + +const D3DCS_LEFT = 0x00000001L; +const D3DCS_RIGHT = 0x00000002L; +const D3DCS_TOP = 0x00000004L; +const D3DCS_BOTTOM = 0x00000008L; +const D3DCS_FRONT = 0x00000010L; +const D3DCS_BACK = 0x00000020L; +const D3DCS_PLANE0 = 0x00000040L; +const D3DCS_PLANE1 = 0x00000080L; +const D3DCS_PLANE2 = 0x00000100L; +const D3DCS_PLANE3 = 0x00000200L; +const D3DCS_PLANE4 = 0x00000400L; +const D3DCS_PLANE5 = 0x00000800L; + +const D3DCS_ALL = D3DCS_LEFT | + D3DCS_RIGHT | + D3DCS_TOP | + D3DCS_BOTTOM | + D3DCS_FRONT | + D3DCS_BACK | + D3DCS_PLANE0 | + D3DCS_PLANE1 | + D3DCS_PLANE2 | + D3DCS_PLANE3 | + D3DCS_PLANE4 | + D3DCS_PLANE5; + +struct D3DCLIPSTATUS9 { + uint ClipUnion; + uint ClipIntersection; +} + +struct D3DMATERIAL9 { + D3DCOLORVALUE Diffuse; /* Diffuse color RGBA */ + D3DCOLORVALUE Ambient; /* Ambient color RGB */ + D3DCOLORVALUE Specular; /* Specular 'shininess' */ + D3DCOLORVALUE Emissive; /* Emissive color RGB */ + float Power; /* Sharpness if specular highlight */ +} + +enum : uint { + D3DLIGHT_POINT = 1, + D3DLIGHT_SPOT = 2, + D3DLIGHT_DIRECTIONAL = 3 +} +alias TypeDef!(uint) D3DLIGHTTYPE; + +struct D3DLIGHT9 { + D3DLIGHTTYPE Type; /* Type of light source */ + D3DCOLORVALUE Diffuse; /* Diffuse color of light */ + D3DCOLORVALUE Specular; /* Specular color of light */ + D3DCOLORVALUE Ambient; /* Ambient color of light */ + D3DVECTOR Position; /* Position in world space */ + D3DVECTOR Direction; /* Direction in world space */ + float Range; /* Cutoff range */ + float Falloff; /* Falloff */ + float Attenuation0; /* Constant attenuation */ + float Attenuation1; /* Linear attenuation */ + float Attenuation2; /* Quadratic attenuation */ + float Theta; /* Inner angle of spotlight cone */ + float Phi; /* Outer angle of spotlight cone */ +} + +/* + * Options for clearing + */ +const D3DCLEAR_TARGET = 0x00000001L; /* Clear target surface */ +const D3DCLEAR_ZBUFFER = 0x00000002L; /* Clear target z buffer */ +const D3DCLEAR_STENCIL = 0x00000004L; /* Clear stencil planes */ + +/* + * The following defines the rendering states + */ + +enum : D3DSHADEMODE { + D3DSHADE_FLAT = 1, + D3DSHADE_GOURAUD = 2, + D3DSHADE_PHONG = 3 +} +alias TypeDef!(uint) D3DSHADEMODE; + +enum : D3DFILLMODE { + D3DFILL_POINT = 1, + D3DFILL_WIREFRAME = 2, + D3DFILL_SOLID = 3 +} +alias TypeDef!(uint) D3DFILLMODE; + +enum : D3DBLEND { + D3DBLEND_ZERO = 1, + D3DBLEND_ONE = 2, + D3DBLEND_SRCCOLOR = 3, + D3DBLEND_INVSRCCOLOR = 4, + D3DBLEND_SRCALPHA = 5, + D3DBLEND_INVSRCALPHA = 6, + D3DBLEND_DESTALPHA = 7, + D3DBLEND_INVDESTALPHA = 8, + D3DBLEND_DESTCOLOR = 9, + D3DBLEND_INVDESTCOLOR = 10, + D3DBLEND_SRCALPHASAT = 11, + D3DBLEND_BOTHSRCALPHA = 12, + D3DBLEND_BOTHINVSRCALPHA = 13, + D3DBLEND_BLENDFACTOR = 14, /* Only supported if D3DPBLENDCAPS_BLENDFACTOR is on */ + D3DBLEND_INVBLENDFACTOR = 15, /* Only supported if D3DPBLENDCAPS_BLENDFACTOR is on */ + D3DBLEND_SRCCOLOR2 = 16, + D3DBLEND_INVSRCCOLOR2 = 17 +} +alias TypeDef!(uint) D3DBLEND; + +enum : D3DBLENDOP { + D3DBLENDOP_ADD = 1, + D3DBLENDOP_SUBTRACT = 2, + D3DBLENDOP_REVSUBTRACT = 3, + D3DBLENDOP_MIN = 4, + D3DBLENDOP_MAX = 5 +} +alias TypeDef!(uint) D3DBLENDOP; + +enum : D3DTEXTUREADDRESS { + D3DTADDRESS_WRAP = 1, + D3DTADDRESS_MIRROR = 2, + D3DTADDRESS_CLAMP = 3, + D3DTADDRESS_BORDER = 4, + D3DTADDRESS_MIRRORONCE = 5 +} +alias TypeDef!(uint) D3DTEXTUREADDRESS; + +enum : D3DCULL { + D3DCULL_NONE = 1, + D3DCULL_CW = 2, + D3DCULL_CCW = 3 +} +alias TypeDef!(uint) D3DCULL; + +enum : D3DCMPFUNC { + D3DCMP_NEVER = 1, + D3DCMP_LESS = 2, + D3DCMP_EQUAL = 3, + D3DCMP_LESSEQUAL = 4, + D3DCMP_GREATER = 5, + D3DCMP_NOTEQUAL = 6, + D3DCMP_GREATEREQUAL = 7, + D3DCMP_ALWAYS = 8 +} +alias TypeDef!(uint) D3DCMPFUNC; + +enum : D3DSTENCILOP { + D3DSTENCILOP_KEEP = 1, + D3DSTENCILOP_ZERO = 2, + D3DSTENCILOP_REPLACE = 3, + D3DSTENCILOP_INCRSAT = 4, + D3DSTENCILOP_DECRSAT = 5, + D3DSTENCILOP_INVERT = 6, + D3DSTENCILOP_INCR = 7, + D3DSTENCILOP_DECR = 8 +} +alias TypeDef!(uint) D3DSTENCILOP; + +enum : D3DFOGMODE { + D3DFOG_NONE = 0, + D3DFOG_EXP = 1, + D3DFOG_EXP2 = 2, + D3DFOG_LINEAR = 3 +} +alias TypeDef!(uint) D3DFOGMODE; + +enum : D3DZBUFFERTYPE { + D3DZB_FALSE = 0, + D3DZB_TRUE = 1, // Z buffering + D3DZB_USEW = 2 // W buffering +} +alias TypeDef!(uint) D3DZBUFFERTYPE; + +// Primitives supported by draw-primitive API +enum : D3DPRIMITIVETYPE { + D3DPT_POINTLIST = 1, + D3DPT_LINELIST = 2, + D3DPT_LINESTRIP = 3, + D3DPT_TRIANGLELIST = 4, + D3DPT_TRIANGLESTRIP = 5, + D3DPT_TRIANGLEFAN = 6 +} +alias TypeDef!(uint) D3DPRIMITIVETYPE; + +D3DTRANSFORMSTATETYPE D3DTS_WORLDMATRIX(uint index) { return cast(D3DTRANSFORMSTATETYPE)(index + 256); } +template T_D3DTS_WORLDMATRIX(uint index) { + const D3DTRANSFORMSTATETYPE T_D3DTS_WORLDMATRIX = index + 256; +} + +enum : D3DTRANSFORMSTATETYPE { + D3DTS_VIEW = 2, + D3DTS_PROJECTION = 3, + D3DTS_TEXTURE0 = 16, + D3DTS_TEXTURE1 = 17, + D3DTS_TEXTURE2 = 18, + D3DTS_TEXTURE3 = 19, + D3DTS_TEXTURE4 = 20, + D3DTS_TEXTURE5 = 21, + D3DTS_TEXTURE6 = 22, + D3DTS_TEXTURE7 = 23, + D3DTS_WORLD = T_D3DTS_WORLDMATRIX!(0), + D3DTS_WORLD1 = T_D3DTS_WORLDMATRIX!(1), + D3DTS_WORLD2 = T_D3DTS_WORLDMATRIX!(2), + D3DTS_WORLD3 = T_D3DTS_WORLDMATRIX!(3) +} +alias TypeDef!(uint) D3DTRANSFORMSTATETYPE; + +enum : D3DRENDERSTATETYPE { + D3DRS_ZENABLE = 7, /* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) */ + D3DRS_FILLMODE = 8, /* D3DFILLMODE */ + D3DRS_SHADEMODE = 9, /* D3DSHADEMODE */ + D3DRS_ZWRITEENABLE = 14, /* TRUE to enable z writes */ + D3DRS_ALPHATESTENABLE = 15, /* TRUE to enable alpha tests */ + D3DRS_LASTPIXEL = 16, /* TRUE for last-pixel on lines */ + D3DRS_SRCBLEND = 19, /* D3DBLEND */ + D3DRS_DESTBLEND = 20, /* D3DBLEND */ + D3DRS_CULLMODE = 22, /* D3DCULL */ + D3DRS_ZFUNC = 23, /* D3DCMPFUNC */ + D3DRS_ALPHAREF = 24, /* D3DFIXED */ + D3DRS_ALPHAFUNC = 25, /* D3DCMPFUNC */ + D3DRS_DITHERENABLE = 26, /* TRUE to enable dithering */ + D3DRS_ALPHABLENDENABLE = 27, /* TRUE to enable alpha blending */ + D3DRS_FOGENABLE = 28, /* TRUE to enable fog blending */ + D3DRS_SPECULARENABLE = 29, /* TRUE to enable specular */ + D3DRS_FOGCOLOR = 34, /* D3DCOLOR */ + D3DRS_FOGTABLEMODE = 35, /* D3DFOGMODE */ + D3DRS_FOGSTART = 36, /* Fog start (for both vertex and pixel fog) */ + D3DRS_FOGEND = 37, /* Fog end */ + D3DRS_FOGDENSITY = 38, /* Fog density */ + D3DRS_RANGEFOGENABLE = 48, /* Enables range-based fog */ + D3DRS_STENCILENABLE = 52, /* BOOL enable/disable stenciling */ + D3DRS_STENCILFAIL = 53, /* D3DSTENCILOP to do if stencil test fails */ + D3DRS_STENCILZFAIL = 54, /* D3DSTENCILOP to do if stencil test passes and Z test fails */ + D3DRS_STENCILPASS = 55, /* D3DSTENCILOP to do if both stencil and Z tests pass */ + D3DRS_STENCILFUNC = 56, /* D3DCMPFUNC fn. Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */ + D3DRS_STENCILREF = 57, /* Reference value used in stencil test */ + D3DRS_STENCILMASK = 58, /* Mask value used in stencil test */ + D3DRS_STENCILWRITEMASK = 59, /* Write mask applied to values written to stencil buffer */ + D3DRS_TEXTUREFACTOR = 60, /* D3DCOLOR used for multi-texture blend */ + D3DRS_WRAP0 = 128, /* wrap for 1st texture coord. set */ + D3DRS_WRAP1 = 129, /* wrap for 2nd texture coord. set */ + D3DRS_WRAP2 = 130, /* wrap for 3rd texture coord. set */ + D3DRS_WRAP3 = 131, /* wrap for 4th texture coord. set */ + D3DRS_WRAP4 = 132, /* wrap for 5th texture coord. set */ + D3DRS_WRAP5 = 133, /* wrap for 6th texture coord. set */ + D3DRS_WRAP6 = 134, /* wrap for 7th texture coord. set */ + D3DRS_WRAP7 = 135, /* wrap for 8th texture coord. set */ + D3DRS_CLIPPING = 136, + D3DRS_LIGHTING = 137, + D3DRS_AMBIENT = 139, + D3DRS_FOGVERTEXMODE = 140, + D3DRS_COLORVERTEX = 141, + D3DRS_LOCALVIEWER = 142, + D3DRS_NORMALIZENORMALS = 143, + D3DRS_DIFFUSEMATERIALSOURCE = 145, + D3DRS_SPECULARMATERIALSOURCE = 146, + D3DRS_AMBIENTMATERIALSOURCE = 147, + D3DRS_EMISSIVEMATERIALSOURCE = 148, + D3DRS_VERTEXBLEND = 151, + D3DRS_CLIPPLANEENABLE = 152, + D3DRS_POINTSIZE = 154, /* float point size */ + D3DRS_POINTSIZE_MIN = 155, /* float point size min threshold */ + D3DRS_POINTSPRITEENABLE = 156, /* BOOL point texture coord control */ + D3DRS_POINTSCALEENABLE = 157, /* BOOL point size scale enable */ + D3DRS_POINTSCALE_A = 158, /* float point attenuation A value */ + D3DRS_POINTSCALE_B = 159, /* float point attenuation B value */ + D3DRS_POINTSCALE_C = 160, /* float point attenuation C value */ + D3DRS_MULTISAMPLEANTIALIAS = 161, // BOOL - set to do FSAA with multisample buffer + D3DRS_MULTISAMPLEMASK = 162, // DWORD - per-sample enable/disable + D3DRS_PATCHEDGESTYLE = 163, // Sets whether patch edges will use float style tessellation + D3DRS_DEBUGMONITORTOKEN = 165, // DEBUG ONLY - token to debug monitor + D3DRS_POINTSIZE_MAX = 166, /* float point size max threshold */ + D3DRS_INDEXEDVERTEXBLENDENABLE = 167, + D3DRS_COLORWRITEENABLE = 168, // per-channel write enable + D3DRS_TWEENFACTOR = 170, // float tween factor + D3DRS_BLENDOP = 171, // D3DBLENDOP setting + D3DRS_POSITIONDEGREE = 172, // NPatch position interpolation degree. D3DDEGREE_LINEAR or D3DDEGREE_CUBIC (default) + D3DRS_NORMALDEGREE = 173, // NPatch normal interpolation degree. D3DDEGREE_LINEAR (default) or D3DDEGREE_QUADRATIC + D3DRS_SCISSORTESTENABLE = 174, + D3DRS_SLOPESCALEDEPTHBIAS = 175, + D3DRS_ANTIALIASEDLINEENABLE = 176, + D3DRS_MINTESSELLATIONLEVEL = 178, + D3DRS_MAXTESSELLATIONLEVEL = 179, + D3DRS_ADAPTIVETESS_X = 180, + D3DRS_ADAPTIVETESS_Y = 181, + D3DRS_ADAPTIVETESS_Z = 182, + D3DRS_ADAPTIVETESS_W = 183, + D3DRS_ENABLEADAPTIVETESSELLATION = 184, + D3DRS_TWOSIDEDSTENCILMODE = 185, /* BOOL enable/disable 2 sided stenciling */ + D3DRS_CCW_STENCILFAIL = 186, /* D3DSTENCILOP to do if ccw stencil test fails */ + D3DRS_CCW_STENCILZFAIL = 187, /* D3DSTENCILOP to do if ccw stencil test passes and Z test fails */ + D3DRS_CCW_STENCILPASS = 188, /* D3DSTENCILOP to do if both ccw stencil and Z tests pass */ + D3DRS_CCW_STENCILFUNC = 189, /* D3DCMPFUNC fn. ccw Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true */ + D3DRS_COLORWRITEENABLE1 = 190, /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */ + D3DRS_COLORWRITEENABLE2 = 191, /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */ + D3DRS_COLORWRITEENABLE3 = 192, /* Additional ColorWriteEnables for the devices that support D3DPMISCCAPS_INDEPENDENTWRITEMASKS */ + D3DRS_BLENDFACTOR = 193, /* D3DCOLOR used for a constant blend factor during alpha blending for devices that support D3DPBLENDCAPS_BLENDFACTOR */ + D3DRS_SRGBWRITEENABLE = 194, /* Enable rendertarget writes to be DE-linearized to SRGB (for formats that expose D3DUSAGE_QUERY_SRGBWRITE) */ + D3DRS_DEPTHBIAS = 195, + D3DRS_WRAP8 = 198, /* Additional wrap states for vs_3_0+ attributes with D3DDECLUSAGE_TEXCOORD */ + D3DRS_WRAP9 = 199, + D3DRS_WRAP10 = 200, + D3DRS_WRAP11 = 201, + D3DRS_WRAP12 = 202, + D3DRS_WRAP13 = 203, + D3DRS_WRAP14 = 204, + D3DRS_WRAP15 = 205, + D3DRS_SEPARATEALPHABLENDENABLE = 206, /* TRUE to enable a separate blending function for the alpha channel */ + D3DRS_SRCBLENDALPHA = 207, /* SRC blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */ + D3DRS_DESTBLENDALPHA = 208, /* DST blend factor for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */ + D3DRS_BLENDOPALPHA = 209 /* Blending operation for the alpha channel when D3DRS_SEPARATEDESTALPHAENABLE is TRUE */ +} +alias TypeDef!(uint) D3DRENDERSTATETYPE; + +// Maximum number of simultaneous render targets D3D supports +const D3D_MAX_SIMULTANEOUS_RENDERTARGETS = 4; + +// Values for material source +enum : D3DMATERIALCOLORSOURCE { + D3DMCS_MATERIAL = 0, // Color from material is used + D3DMCS_COLOR1 = 1, // Diffuse vertex color is used + D3DMCS_COLOR2 = 2 // Specular vertex color is used +} +alias TypeDef!(uint) D3DMATERIALCOLORSOURCE; + +// Bias to apply to the texture coordinate set to apply a wrap to. +const D3DRENDERSTATE_WRAPBIAS = 128UL; + +/* Flags to construct the WRAP render states */ +const D3DWRAP_U = 0x00000001L; +const D3DWRAP_V = 0x00000002L; +const D3DWRAP_W = 0x00000004L; + +/* Flags to construct the WRAP render states for 1D thru 4D texture coordinates */ +const D3DWRAPCOORD_0 = 0x00000001L; // same as D3DWRAP_U +const D3DWRAPCOORD_1 = 0x00000002L; // same as D3DWRAP_V +const D3DWRAPCOORD_2 = 0x00000004L; // same as D3DWRAP_W +const D3DWRAPCOORD_3 = 0x00000008L; + +/* Flags to construct D3DRS_COLORWRITEENABLE */ +const D3DCOLORWRITEENABLE_RED = (1L<<0); +const D3DCOLORWRITEENABLE_GREEN = (1L<<1); +const D3DCOLORWRITEENABLE_BLUE = (1L<<2); +const D3DCOLORWRITEENABLE_ALPHA = (1L<<3); + +/* + * State enumerants for per-stage processing of fixed function pixel processing + * Two of these affect fixed function vertex processing as well: TEXTURETRANSFORMFLAGS and TEXCOORDINDEX. + */ +enum : D3DTEXTURESTAGESTATETYPE { + D3DTSS_COLOROP = 1, /* D3DTEXTUREOP - per-stage blending controls for color channels */ + D3DTSS_COLORARG1 = 2, /* D3DTA_* (texture arg) */ + D3DTSS_COLORARG2 = 3, /* D3DTA_* (texture arg) */ + D3DTSS_ALPHAOP = 4, /* D3DTEXTUREOP - per-stage blending controls for alpha channel */ + D3DTSS_ALPHAARG1 = 5, /* D3DTA_* (texture arg) */ + D3DTSS_ALPHAARG2 = 6, /* D3DTA_* (texture arg) */ + D3DTSS_BUMPENVMAT00 = 7, /* float (bump mapping matrix) */ + D3DTSS_BUMPENVMAT01 = 8, /* float (bump mapping matrix) */ + D3DTSS_BUMPENVMAT10 = 9, /* float (bump mapping matrix) */ + D3DTSS_BUMPENVMAT11 = 10, /* float (bump mapping matrix) */ + D3DTSS_TEXCOORDINDEX = 11, /* identifies which set of texture coordinates index this texture */ + D3DTSS_BUMPENVLSCALE = 22, /* float scale for bump map luminance */ + D3DTSS_BUMPENVLOFFSET = 23, /* float offset for bump map luminance */ + D3DTSS_TEXTURETRANSFORMFLAGS = 24, /* D3DTEXTURETRANSFORMFLAGS controls texture transform */ + D3DTSS_COLORARG0 = 26, /* D3DTA_* third arg for triadic ops */ + D3DTSS_ALPHAARG0 = 27, /* D3DTA_* third arg for triadic ops */ + D3DTSS_RESULTARG = 28, /* D3DTA_* arg for result (CURRENT or TEMP) */ + D3DTSS_CONSTANT = 32 /* Per-stage constant D3DTA_CONSTANT */ +} +alias TypeDef!(uint) D3DTEXTURESTAGESTATETYPE; + +/* + * State enumerants for per-sampler texture processing. + */ +enum : D3DSAMPLERSTATETYPE { + D3DSAMP_ADDRESSU = 1, /* D3DTEXTUREADDRESS for U coordinate */ + D3DSAMP_ADDRESSV = 2, /* D3DTEXTUREADDRESS for V coordinate */ + D3DSAMP_ADDRESSW = 3, /* D3DTEXTUREADDRESS for W coordinate */ + D3DSAMP_BORDERCOLOR = 4, /* D3DCOLOR */ + D3DSAMP_MAGFILTER = 5, /* D3DTEXTUREFILTER filter to use for magnification */ + D3DSAMP_MINFILTER = 6, /* D3DTEXTUREFILTER filter to use for minification */ + D3DSAMP_MIPFILTER = 7, /* D3DTEXTUREFILTER filter to use between mipmaps during minification */ + D3DSAMP_MIPMAPLODBIAS = 8, /* float Mipmap LOD bias */ + D3DSAMP_MAXMIPLEVEL = 9, /* DWORD 0..(n-1) LOD index of largest map to use (0 == largest) */ + D3DSAMP_MAXANISOTROPY = 10, /* DWORD maximum anisotropy */ + D3DSAMP_SRGBTEXTURE = 11, /* Default = 0 (which means Gamma 1.0, + no correction required.) else correct for + Gamma = 2.2 */ + D3DSAMP_ELEMENTINDEX = 12, /* When multi-element texture is assigned to sampler, this + indicates which element index to use. Default = 0. */ + D3DSAMP_DMAPOFFSET = 13 /* Offset in vertices in the pre-sampled displacement map. + Only valid for D3DDMAPSAMPLER sampler */ +} +alias TypeDef!(uint) D3DSAMPLERSTATETYPE; + +/* Special sampler which is used in the tesselator */ +const D3DDMAPSAMPLER = 256; + +// Samplers used in vertex shaders +const D3DVERTEXTEXTURESAMPLER0 = (D3DDMAPSAMPLER+1); +const D3DVERTEXTEXTURESAMPLER1 = (D3DDMAPSAMPLER+2); +const D3DVERTEXTEXTURESAMPLER2 = (D3DDMAPSAMPLER+3); +const D3DVERTEXTEXTURESAMPLER3 = (D3DDMAPSAMPLER+4); + +// Values, used with D3DTSS_TEXCOORDINDEX, to specify that the vertex data(position +// and normal in the camera space) should be taken as texture coordinates +// Low 16 bits are used to specify texture coordinate index, to take the WRAP mode from +// +const D3DTSS_TCI_PASSTHRU = 0x00000000; +const D3DTSS_TCI_CAMERASPACENORMAL = 0x00010000; +const D3DTSS_TCI_CAMERASPACEPOSITION = 0x00020000; +const D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR = 0x00030000; +const D3DTSS_TCI_SPHEREMAP = 0x00040000; + +/* + * Enumerations for COLOROP and ALPHAOP texture blending operations set in + * texture processing stage controls in D3DTSS. + */ +enum : D3DTEXTUREOP { + // Control + D3DTOP_DISABLE = 1, // disables stage + D3DTOP_SELECTARG1 = 2, // the default + D3DTOP_SELECTARG2 = 3, + + // Modulate + D3DTOP_MODULATE = 4, // multiply args together + D3DTOP_MODULATE2X = 5, // multiply and 1 bit + D3DTOP_MODULATE4X = 6, // multiply and 2 bits + + // Add + D3DTOP_ADD = 7, // add arguments together + D3DTOP_ADDSIGNED = 8, // add with -0.5 bias + D3DTOP_ADDSIGNED2X = 9, // as above but left 1 bit + D3DTOP_SUBTRACT = 10, // Arg1 - Arg2, with no saturation + D3DTOP_ADDSMOOTH = 11, // add 2 args, subtract product + // Arg1 + Arg2 - Arg1*Arg2 + // = Arg1 + (1-Arg1)*Arg2 + + // Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha) + D3DTOP_BLENDDIFFUSEALPHA = 12, // iterated alpha + D3DTOP_BLENDTEXTUREALPHA = 13, // texture alpha + D3DTOP_BLENDFACTORALPHA = 14, // alpha from D3DRS_TEXTUREFACTOR + + // Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha) + D3DTOP_BLENDTEXTUREALPHAPM = 15, // texture alpha + D3DTOP_BLENDCURRENTALPHA = 16, // by alpha of current color + + // Specular mapping + D3DTOP_PREMODULATE = 17, // modulate with next texture before use + D3DTOP_MODULATEALPHA_ADDCOLOR = 18, // Arg1.RGB + Arg1.A*Arg2.RGB + // COLOROP only + D3DTOP_MODULATECOLOR_ADDALPHA = 19, // Arg1.RGB*Arg2.RGB + Arg1.A + // COLOROP only + D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20, // (1-Arg1.A)*Arg2.RGB + Arg1.RGB + // COLOROP only + D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21, // (1-Arg1.RGB)*Arg2.RGB + Arg1.A + // COLOROP only + + // Bump mapping + D3DTOP_BUMPENVMAP = 22, // per pixel env map perturbation + D3DTOP_BUMPENVMAPLUMINANCE = 23, // with luminance channel + + // This can do either diffuse or specular bump mapping with correct input. + // Performs the function (Arg1.R*Arg2.R + Arg1.G*Arg2.G + Arg1.B*Arg2.B) + // where each component has been scaled and offset to make it signed. + // The result is replicated into all four (including alpha) channels. + // This is a valid COLOROP only. + D3DTOP_DOTPRODUCT3 = 24, + + // Triadic ops + D3DTOP_MULTIPLYADD = 25, // Arg0 + Arg1*Arg2 + D3DTOP_LERP = 26 // (Arg0)*Arg1 + (1-Arg0)*Arg2 +} +alias TypeDef!(uint) D3DTEXTUREOP; + +/* + * Values for COLORARG0,1,2, ALPHAARG0,1,2, and RESULTARG texture blending + * operations set in texture processing stage controls in D3DRENDERSTATE. + */ +const D3DTA_SELECTMASK = 0x0000000f; // mask for arg selector +const D3DTA_DIFFUSE = 0x00000000; // select diffuse color (read only) +const D3DTA_CURRENT = 0x00000001; // select stage destination register (read/write) +const D3DTA_TEXTURE = 0x00000002; // select texture color (read only) +const D3DTA_TFACTOR = 0x00000003; // select D3DRS_TEXTUREFACTOR (read only) +const D3DTA_SPECULAR = 0x00000004; // select specular color (read only) +const D3DTA_TEMP = 0x00000005; // select temporary register color (read/write) +const D3DTA_CONSTANT = 0x00000006; // select texture stage constant +const D3DTA_COMPLEMENT = 0x00000010; // take 1.0 - x (read modifier) +const D3DTA_ALPHAREPLICATE = 0x00000020; // replicate alpha to color components (read modifier) + +// +// Values for D3DSAMP_***FILTER texture stage states +// +enum : D3DTEXTUREFILTERTYPE { + D3DTEXF_NONE = 0, // filtering disabled (valid for mip filter only) + D3DTEXF_POINT = 1, // nearest + D3DTEXF_LINEAR = 2, // linear interpolation + D3DTEXF_ANISOTROPIC = 3, // anisotropic + D3DTEXF_PYRAMIDALQUAD = 6, // 4-sample tent + D3DTEXF_GAUSSIANQUAD = 7, // 4-sample gaussian + D3DTEXF_CONVOLUTIONMONO = 8 // Convolution filter for monochrome textures +} +alias TypeDef!(uint) D3DTEXTUREFILTERTYPE; + +/* Bits for Flags in ProcessVertices call */ + +const D3DPV_DONOTCOPYDATA = (1 << 0); + +//------------------------------------------------------------------- + +// Flexible vertex format bits +// +const D3DFVF_RESERVED0 = 0x001; +const D3DFVF_POSITION_MASK = 0x400E; +const D3DFVF_XYZ = 0x002; +const D3DFVF_XYZRHW = 0x004; +const D3DFVF_XYZB1 = 0x006; +const D3DFVF_XYZB2 = 0x008; +const D3DFVF_XYZB3 = 0x00a; +const D3DFVF_XYZB4 = 0x00c; +const D3DFVF_XYZB5 = 0x00e; +const D3DFVF_XYZW = 0x4002; + +const D3DFVF_NORMAL = 0x010; +const D3DFVF_PSIZE = 0x020; +const D3DFVF_DIFFUSE = 0x040; +const D3DFVF_SPECULAR = 0x080; + +const D3DFVF_TEXCOUNT_MASK = 0xf00; +const D3DFVF_TEXCOUNT_SHIFT = 8; +const D3DFVF_TEX0 = 0x000; +const D3DFVF_TEX1 = 0x100; +const D3DFVF_TEX2 = 0x200; +const D3DFVF_TEX3 = 0x300; +const D3DFVF_TEX4 = 0x400; +const D3DFVF_TEX5 = 0x500; +const D3DFVF_TEX6 = 0x600; +const D3DFVF_TEX7 = 0x700; +const D3DFVF_TEX8 = 0x800; + +const D3DFVF_LASTBETA_UBYTE4 = 0x1000; +const D3DFVF_LASTBETA_D3DCOLOR = 0x8000; + +const D3DFVF_RESERVED2 = 0x6000; // 2 reserved bits + +//--------------------------------------------------------------------- +// Vertex Shaders +// + +// Vertex shader declaration + +// Vertex element semantics +// +enum : D3DDECLUSAGE { + D3DDECLUSAGE_POSITION = 0, + D3DDECLUSAGE_BLENDWEIGHT, // 1 + D3DDECLUSAGE_BLENDINDICES, // 2 + D3DDECLUSAGE_NORMAL, // 3 + D3DDECLUSAGE_PSIZE, // 4 + D3DDECLUSAGE_TEXCOORD, // 5 + D3DDECLUSAGE_TANGENT, // 6 + D3DDECLUSAGE_BINORMAL, // 7 + D3DDECLUSAGE_TESSFACTOR, // 8 + D3DDECLUSAGE_POSITIONT, // 9 + D3DDECLUSAGE_COLOR, // 10 + D3DDECLUSAGE_FOG, // 11 + D3DDECLUSAGE_DEPTH, // 12 + D3DDECLUSAGE_SAMPLE // 13 +} +alias TypeDef!(uint) D3DDECLUSAGE; + +const MAXD3DDECLUSAGE = D3DDECLUSAGE_SAMPLE; +const MAXD3DDECLUSAGEINDEX = 15; +const MAXD3DDECLLENGTH = 64; // does not include "end" marker vertex element + +enum : D3DDECLMETHOD { + D3DDECLMETHOD_DEFAULT = 0, + D3DDECLMETHOD_PARTIALU, + D3DDECLMETHOD_PARTIALV, + D3DDECLMETHOD_CROSSUV, // Normal + D3DDECLMETHOD_UV, + D3DDECLMETHOD_LOOKUP, // Lookup a displacement map + D3DDECLMETHOD_LOOKUPPRESAMPLED // Lookup a pre-sampled displacement map +} +alias TypeDef!(uint) D3DDECLMETHOD; + +const MAXD3DDECLMETHOD = D3DDECLMETHOD_LOOKUPPRESAMPLED; + +// Declarations for _Type fields +// +enum : D3DDECLTYPE { + D3DDECLTYPE_FLOAT1 = 0, // 1D float expanded to (value, 0., 0., 1.) + D3DDECLTYPE_FLOAT2 = 1, // 2D float expanded to (value, value, 0., 1.) + D3DDECLTYPE_FLOAT3 = 2, // 3D float expanded to (value, value, value, 1.) + D3DDECLTYPE_FLOAT4 = 3, // 4D float + D3DDECLTYPE_D3DCOLOR = 4, // 4D packed unsigned bytes mapped to 0. to 1. range + // Input is in D3DCOLOR format (ARGB) expanded to (R, G, B, A) + D3DDECLTYPE_UBYTE4 = 5, // 4D unsigned byte + D3DDECLTYPE_SHORT2 = 6, // 2D signed short expanded to (value, value, 0., 1.) + D3DDECLTYPE_SHORT4 = 7, // 4D signed short + +// The following types are valid only with vertex shaders >= 2.0 + + + D3DDECLTYPE_UBYTE4N = 8, // Each of 4 bytes is normalized by dividing to 255.0 + D3DDECLTYPE_SHORT2N = 9, // 2D signed short normalized (v[0]/32767.0,v[1]/32767.0,0,1) + D3DDECLTYPE_SHORT4N = 10, // 4D signed short normalized (v[0]/32767.0,v[1]/32767.0,v[2]/32767.0,v[3]/32767.0) + D3DDECLTYPE_USHORT2N = 11, // 2D unsigned short normalized (v[0]/65535.0,v[1]/65535.0,0,1) + D3DDECLTYPE_USHORT4N = 12, // 4D unsigned short normalized (v[0]/65535.0,v[1]/65535.0,v[2]/65535.0,v[3]/65535.0) + D3DDECLTYPE_UDEC3 = 13, // 3D unsigned 10 10 10 format expanded to (value, value, value, 1) + D3DDECLTYPE_DEC3N = 14, // 3D signed 10 10 10 format normalized and expanded to (v[0]/511.0, v[1]/511.0, v[2]/511.0, 1) + D3DDECLTYPE_FLOAT16_2 = 15, // Two 16-bit floating point values, expanded to (value, value, 0, 1) + D3DDECLTYPE_FLOAT16_4 = 16, // Four 16-bit floating point values + D3DDECLTYPE_UNUSED = 17 // When the type field in a decl is unused. +} +alias TypeDef!(uint) D3DDECLTYPE; + +const MAXD3DDECLTYPE = D3DDECLTYPE_UNUSED; + +struct D3DVERTEXELEMENT9 +{ + ushort Stream; // Stream index + ushort Offset; // Offset in the stream in bytes + ubyte Type; // Data type + ubyte Method; // Processing method + ubyte Usage; // Semantics + ubyte UsageIndex; // Semantic index +} +alias D3DVERTEXELEMENT9 *LPD3DVERTEXELEMENT9; + +// This is used to initialize the last vertex element in a vertex declaration +// array +// +template D3DDECL_END() { + static const D3DVERTEXELEMENT9 D3DDECL_END = { 0xFF,0,D3DDECLTYPE_UNUSED,0,0,0 }; +} + +// Maximum supported number of texture coordinate sets +const D3DDP_MAXTEXCOORD = 8; + +//--------------------------------------------------------------------- +// Values for IDirect3DDevice9::SetStreamSourceFreq's Setting parameter +//--------------------------------------------------------------------- +const D3DSTREAMSOURCE_INDEXEDDATA = (1<<30); +const D3DSTREAMSOURCE_INSTANCEDATA = (2<<30); + + + +//--------------------------------------------------------------------- +// +// The internal format of Pixel Shader (PS) & Vertex Shader (VS) +// Instruction Tokens is defined in the Direct3D Device Driver Kit +// +//--------------------------------------------------------------------- + +// +// Instruction Token Bit Definitions +// +const D3DSI_OPCODE_MASK = 0x0000FFFF; + +const D3DSI_INSTLENGTH_MASK = 0x0F000000; +const D3DSI_INSTLENGTH_SHIFT = 24; + +enum : D3DSHADER_INSTRUCTION_OPCODE_TYPE { + D3DSIO_NOP = 0, + D3DSIO_MOV , + D3DSIO_ADD , + D3DSIO_SUB , + D3DSIO_MAD , + D3DSIO_MUL , + D3DSIO_RCP , + D3DSIO_RSQ , + D3DSIO_DP3 , + D3DSIO_DP4 , + D3DSIO_MIN , + D3DSIO_MAX , + D3DSIO_SLT , + D3DSIO_SGE , + D3DSIO_EXP , + D3DSIO_LOG , + D3DSIO_LIT , + D3DSIO_DST , + D3DSIO_LRP , + D3DSIO_FRC , + D3DSIO_M4x4 , + D3DSIO_M4x3 , + D3DSIO_M3x4 , + D3DSIO_M3x3 , + D3DSIO_M3x2 , + D3DSIO_CALL , + D3DSIO_CALLNZ , + D3DSIO_LOOP , + D3DSIO_RET , + D3DSIO_ENDLOOP , + D3DSIO_LABEL , + D3DSIO_DCL , + D3DSIO_POW , + D3DSIO_CRS , + D3DSIO_SGN , + D3DSIO_ABS , + D3DSIO_NRM , + D3DSIO_SINCOS , + D3DSIO_REP , + D3DSIO_ENDREP , + D3DSIO_IF , + D3DSIO_IFC , + D3DSIO_ELSE , + D3DSIO_ENDIF , + D3DSIO_BREAK , + D3DSIO_BREAKC , + D3DSIO_MOVA , + D3DSIO_DEFB , + D3DSIO_DEFI , + + D3DSIO_TEXCOORD = 64, + D3DSIO_TEXKILL , + D3DSIO_TEX , + D3DSIO_TEXBEM , + D3DSIO_TEXBEML , + D3DSIO_TEXREG2AR , + D3DSIO_TEXREG2GB , + D3DSIO_TEXM3x2PAD , + D3DSIO_TEXM3x2TEX , + D3DSIO_TEXM3x3PAD , + D3DSIO_TEXM3x3TEX , + D3DSIO_RESERVED0 , + D3DSIO_TEXM3x3SPEC , + D3DSIO_TEXM3x3VSPEC , + D3DSIO_EXPP , + D3DSIO_LOGP , + D3DSIO_CND , + D3DSIO_DEF , + D3DSIO_TEXREG2RGB , + D3DSIO_TEXDP3TEX , + D3DSIO_TEXM3x2DEPTH , + D3DSIO_TEXDP3 , + D3DSIO_TEXM3x3 , + D3DSIO_TEXDEPTH , + D3DSIO_CMP , + D3DSIO_BEM , + D3DSIO_DP2ADD , + D3DSIO_DSX , + D3DSIO_DSY , + D3DSIO_TEXLDD , + D3DSIO_SETP , + D3DSIO_TEXLDL , + D3DSIO_BREAKP , + + D3DSIO_PHASE = 0xFFFD, + D3DSIO_COMMENT = 0xFFFE, + D3DSIO_END = 0xFFFF +} +alias TypeDef!(uint) D3DSHADER_INSTRUCTION_OPCODE_TYPE; + +//--------------------------------------------------------------------- +// Use these constants with D3DSIO_SINCOS macro as SRC2, SRC3 +// +const float[4] D3DSINCOSCONST1 = [-1.5500992e-006f, -2.1701389e-005f, 0.0026041667f, 0.00026041668f]; +const float[4] D3DSINCOSCONST2 = [-0.020833334f, -0.12500000f, 1.0f, 0.50000000f]; + +//--------------------------------------------------------------------- +// Co-Issue Instruction Modifier - if set then this instruction is to be +// issued in parallel with the previous instruction(s) for which this bit +// is not set. +// +const D3DSI_COISSUE = 0x40000000; + +//--------------------------------------------------------------------- +// Opcode specific controls + +const D3DSP_OPCODESPECIFICCONTROL_MASK = 0x00ff0000; +const D3DSP_OPCODESPECIFICCONTROL_SHIFT = 16; + +// ps_2_0 texld controls +const D3DSI_TEXLD_PROJECT = (0x01 << D3DSP_OPCODESPECIFICCONTROL_SHIFT); +const D3DSI_TEXLD_BIAS = (0x02 << D3DSP_OPCODESPECIFICCONTROL_SHIFT); + +// Comparison for dynamic conditional instruction opcodes (i.e. if, breakc) +enum : D3DSHADER_COMPARISON { + // < = > + D3DSPC_RESERVED0= 0, // 0 0 0 + D3DSPC_GT = 1, // 0 0 1 + D3DSPC_EQ = 2, // 0 1 0 + D3DSPC_GE = 3, // 0 1 1 + D3DSPC_LT = 4, // 1 0 0 + D3DSPC_NE = 5, // 1 0 1 + D3DSPC_LE = 6, // 1 1 0 + D3DSPC_RESERVED1= 7 // 1 1 1 +} +alias TypeDef!(uint) D3DSHADER_COMPARISON; + +// Comparison is part of instruction opcode token: +const D3DSHADER_COMPARISON_SHIFT = D3DSP_OPCODESPECIFICCONTROL_SHIFT; +const D3DSHADER_COMPARISON_MASK = (0x7<>8)&0xFF); } +ubyte D3DSHADER_VERSION_MINOR(uint _Version) { return cast(ubyte)((_Version>>0)&0xFF); } + +// destination/source parameter register type +const D3DSI_COMMENTSIZE_SHIFT = 16; +const D3DSI_COMMENTSIZE_MASK = 0x7FFF0000; +uint D3DSHADER_COMMENT(ushort _DWordSize) { return (((_DWordSize< pV2.x ? pV1.x : pV2.x; + pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y; + return pOut; +} + +D3DXVECTOR2* D3DXVec2Scale(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, float s) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV is null)) return null; + } + pOut.x = pV.x * s; + pOut.y = pV.y * s; + return pOut; +} + +D3DXVECTOR2* D3DXVec2Lerp(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, float s) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x + s * (pV2.x - pV1.x); + pOut.y = pV1.y + s * (pV2.y - pV1.y); + return pOut; +} + +extern(Windows) { + D3DXVECTOR2* D3DXVec2Normalize(D3DXVECTOR2* pOut, D3DXVECTOR2* pV); + D3DXVECTOR2* D3DXVec2Hermite(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pT1, D3DXVECTOR2* pV2, D3DXVECTOR2* pT2, float s); + D3DXVECTOR2* D3DXVec2CatmullRom(D3DXVECTOR2* pOut, D3DXVECTOR2* pV0, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, D3DXVECTOR2* pV3, float s); + D3DXVECTOR2* D3DXVec2BaryCentric(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, D3DXVECTOR2* pV3, float f, float g); + D3DXVECTOR4* D3DXVec2Transform(D3DXVECTOR4* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM); + D3DXVECTOR2* D3DXVec2TransformCoord(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM); + D3DXVECTOR2* D3DXVec2TransformNormal(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM); + D3DXVECTOR4* D3DXVec2TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n); + D3DXVECTOR2* D3DXVec2TransformCoordArray(D3DXVECTOR2* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n); + D3DXVECTOR2* D3DXVec2TransformNormalArray(D3DXVECTOR2* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n); +} + +float D3DXVec3Length(D3DXVECTOR3* pV) { + debug(D3DX10_DEBUG) { + if (pV is null) return 0.0; + } + return sqrtf((pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z)); +} + +float D3DXVec3LengthSq(D3DXVECTOR3* pV) { + debug(D3DX10_DEBUG) { + if (pV is null) return 0.0; + } + return (pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z); +} + +float D3DXVec3Dot(D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { + debug(D3DX10_DEBUG) { + if ((pV1 is null) || (pV2 is null)) return 0.0; + } + return (pV1.x * pV2.x) + (pV1.y * pV2.y) + (pV1.z * pV2.z); +} + +D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return 0.0; + } + D3DXVECTOR3 v; + v.x = (pV1.y * pV2.z) - (pV1.z * pV2.y); + v.y = (pV1.z * pV2.x) - (pV1.x * pV2.z); + v.z = (pV1.x * pV2.y) - (pV1.y * pV2.x); + *pOut = v; + return pOut; +} + +D3DXVECTOR3* D3DXVec3Add(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x + pV2.x; + pOut.y = pV1.y + pV2.y; + pOut.z = pV1.z + pV2.z; + return pOut; +} + +D3DXVECTOR3* D3DXVec3Subtract(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x - pV2.x; + pOut.y = pV1.y - pV2.y; + pOut.z = pV1.z - pV2.z; + return pOut; +} + +D3DXVECTOR3* D3DXVec3Minimize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x < pV2.x ? pV1.x : pV2.x; + pOut.y = pV1.y < pV2.y ? pV1.y : pV2.y; + pOut.z = pV1.z < pV2.z ? pV1.z : pV2.z; + return pOut; +} + +D3DXVECTOR3* D3DXVec3Maximize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x > pV2.x ? pV1.x : pV2.x; + pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y; + pOut.z = pV1.z > pV2.z ? pV1.z : pV2.z; + return pOut; +} + +D3DXVECTOR3* D3DXVec3Scale(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, float s) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV is null)) return null; + } + pOut.x = pV.x * s; + pOut.y = pV.y * s; + pOut.z = pV.z * s; + return pOut; +} + +D3DXVECTOR3* D3DXVec3Lerp(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, float s) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x + s * (pV2.x - pV1.x); + pOut.y = pV1.y + s * (pV2.y - pV1.y); + pOut.z = pV1.z + s * (pV2.z - pV1.z); + return pOut; +} + +extern(Windows) { + D3DXVECTOR3* D3DXVec3Normalize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV); + D3DXVECTOR3* D3DXVec3Hermite(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pT1, D3DXVECTOR3* pV2, D3DXVECTOR3* pT2, FLOAT s); + D3DXVECTOR3* D3DXVec3CatmullRom(D3DXVECTOR3* pOut, D3DXVECTOR3* pV0, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3, FLOAT s); + D3DXVECTOR3* D3DXVec3BaryCentric(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3, FLOAT f, FLOAT g); + D3DXVECTOR4* D3DXVec3Transform(D3DXVECTOR4* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM); + D3DXVECTOR3* D3DXVec3TransformCoord(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM); + D3DXVECTOR3* D3DXVec3TransformNormal(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM); + D3DXVECTOR4* D3DXVec3TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n); + D3DXVECTOR3* D3DXVec3TransformCoordArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n); + D3DXVECTOR3* D3DXVec3TransformNormalArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n); + D3DXVECTOR3* D3DXVec3Project(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld); + D3DXVECTOR3* D3DXVec3Unproject(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld); + D3DXVECTOR3* D3DXVec3ProjectArray(D3DXVECTOR3* pOut, UINT OutStride,D3DXVECTOR3* pV, UINT VStride,D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld, UINT n); + D3DXVECTOR3* D3DXVec3UnprojectArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld, UINT n); +} + +float D3DXVec4Length(D3DXVECTOR4* pV) { + debug(D3DX10_DEBUG) { + if (pV is null) return 0.0; + } + return sqrtf((pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z) + (pV.w * pV.w)); +} + +float D3DXVec4LengthSq(D3DXVECTOR4* pV) { + debug(D3DX10_DEBUG) { + if (pV is null) return 0.0; + } + return (pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z) + (pV.w * pV.w); +} + +float D3DXVec4Dot(D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { + debug(D3DX10_DEBUG) { + if ((pV1 is null) || (pV2 is null)) return 0.0; + } + return (pV1.x * pV2.x) + (pV1.y * pV2.y) + (pV1.z * pV2.z) + (pV1.w * pV2.w); +} + +D3DXVECTOR4* D3DXVec4Add(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x + pV2.x; + pOut.y = pV1.y + pV2.y; + pOut.z = pV1.z + pV2.z; + pOut.w = pV1.w + pV2.w; + return pOut; +} + +D3DXVECTOR4* D3DXVec4Subtract(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x - pV2.x; + pOut.y = pV1.y - pV2.y; + pOut.z = pV1.z - pV2.z; + pOut.w = pV1.w - pV2.w; + return pOut; +} + +D3DXVECTOR4* D3DXVec4Minimize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x < pV2.x ? pV1.x : pV2.x; + pOut.y = pV1.y < pV2.y ? pV1.y : pV2.y; + pOut.z = pV1.z < pV2.z ? pV1.z : pV2.z; + pOut.w = pV1.w < pV2.w ? pV1.w : pV2.w; + return pOut; +} + +D3DXVECTOR4* D3DXVec4Maximize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x > pV2.x ? pV1.x : pV2.x; + pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y; + pOut.z = pV1.z > pV2.z ? pV1.z : pV2.z; + pOut.w = pV1.w > pV2.w ? pV1.w : pV2.w; + return pOut; +} + +D3DXVECTOR4* D3DXVec4Scale(D3DXVECTOR4* pOut, D3DXVECTOR4* pV, float s) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV is null)) return null; + } + pOut.x = pV.x * s; + pOut.y = pV.y * s; + pOut.z = pV.z * s; + pOut.w = pV.w * s; + return pOut; +} + +D3DXVECTOR4* D3DXVec4Lerp(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, float s) { + debug(D3DX10_DEBUG) { + if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; + } + pOut.x = pV1.x + s * (pV2.x - pV1.x); + pOut.y = pV1.y + s * (pV2.y - pV1.y); + pOut.z = pV1.z + s * (pV2.z - pV1.z); + pOut.w = pV1.w + s * (pV2.w - pV1.w); + return pOut; +} + +extern(Windows) { + D3DXVECTOR4* D3DXVec4Cross(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3); + D3DXVECTOR4* D3DXVec4Normalize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV); + D3DXVECTOR4* D3DXVec4Hermite(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pT1, D3DXVECTOR4* pV2, D3DXVECTOR4* pT2, FLOAT s); + D3DXVECTOR4* D3DXVec4CatmullRom(D3DXVECTOR4* pOut, D3DXVECTOR4* pV0, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3, FLOAT s); + D3DXVECTOR4* D3DXVec4BaryCentric(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3, FLOAT f, FLOAT g); + D3DXVECTOR4* D3DXVec4Transform(D3DXVECTOR4* pOut, D3DXVECTOR4* pV, D3DXMATRIX* pM); + D3DXVECTOR4* D3DXVec4TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR4* pV, UINT VStride, D3DXMATRIX* pM, UINT n); +} + +D3DXMATRIX* D3DXMatrixIdentity(D3DXMATRIX *pOut) { + debug(D3DX10_DEBUG) { + if (pOut is null) return NULL; + } + pOut.m[0][1] = pOut.m[0][2] = pOut.m[0][3] = + pOut.m[1][0] = pOut.m[1][2] = pOut.m[1][3] = + pOut.m[2][0] = pOut.m[2][1] = pOut.m[2][3] = + pOut.m[3][0] = pOut.m[3][1] = pOut.m[3][2] = 0.0; + pOut.m[0][0] = pOut.m[1][1] = pOut.m[2][2] = pOut.m[3][3] = 1.0; + return pOut; +} + + +BOOL D3DXMatrixIsIdentity(D3DXMATRIX *pM) { + debug(D3DX10_DEBUG) { + if(pM is null) return FALSE; + } + return (pM.m[0][0] == 1.0f) && (pM.m[0][1] == 0.0f) && (pM.m[0][2] == 0.0f) && (pM.m[0][3] == 0.0f) && + (pM.m[1][0] == 0.0f) && (pM.m[1][1] == 1.0f) && (pM.m[1][2] == 0.0f) && (pM.m[1][3] == 0.0f) && + (pM.m[2][0] == 0.0f) && (pM.m[2][1] == 0.0f) && (pM.m[2][2] == 1.0f) && (pM.m[2][3] == 0.0f) && + (pM.m[3][0] == 0.0f) && (pM.m[3][1] == 0.0f) && (pM.m[3][2] == 0.0f) && (pM.m[3][3] == 1.0f); +} + +extern(Windows) { + FLOAT D3DXMatrixDeterminant(D3DXMATRIX* pM); + HRESULT D3DXMatrixDecompose(D3DXVECTOR3* pOutScale, D3DXQUATERNION* pOutRotation, D3DXVECTOR3* pOutTranslation, D3DXMATRIX* pM); + D3DXMATRIX* D3DXMatrixTranspose(D3DXMATRIX* pOut, D3DXMATRIX* pM); + D3DXMATRIX* D3DXMatrixMultiply(D3DXMATRIX* pOut, D3DXMATRIX* pM1, D3DXMATRIX* pM2); + D3DXMATRIX* D3DXMatrixMultiplyTranspose(D3DXMATRIX* pOut, D3DXMATRIX* pM1, D3DXMATRIX* pM2); + D3DXMATRIX* D3DXMatrixInverse(D3DXMATRIX* pOut, FLOAT* pDeterminant, D3DXMATRIX* pM); + D3DXMATRIX* D3DXMatrixScaling(D3DXMATRIX* pOut, FLOAT sx, FLOAT sy, FLOAT sz); + D3DXMATRIX* D3DXMatrixTranslation(D3DXMATRIX* pOut, FLOAT x, FLOAT y, FLOAT z); + D3DXMATRIX* D3DXMatrixRotationX(D3DXMATRIX* pOut, FLOAT Angle); + D3DXMATRIX* D3DXMatrixRotationY(D3DXMATRIX* pOut, FLOAT Angle); + D3DXMATRIX* D3DXMatrixRotationZ(D3DXMATRIX* pOut, FLOAT Angle); + D3DXMATRIX* D3DXMatrixRotationAxis(D3DXMATRIX* pOut, D3DXVECTOR3* pV, FLOAT Angle); + D3DXMATRIX* D3DXMatrixRotationQuaternion(D3DXMATRIX* pOut, D3DXQUATERNION* pQ); + D3DXMATRIX* D3DXMatrixRotationYawPitchRoll(D3DXMATRIX* pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll); + D3DXMATRIX* D3DXMatrixTransformation(D3DXMATRIX* pOut, D3DXVECTOR3* pScalingCenter, D3DXQUATERNION* pScalingRotation, D3DXVECTOR3* pScaling, D3DXVECTOR3* pRotationCenter, D3DXQUATERNION* pRotation, D3DXVECTOR3* pTranslation); + D3DXMATRIX* D3DXMatrixTransformation2D(D3DXMATRIX* pOut, D3DXVECTOR2* pScalingCenter, FLOAT ScalingRotation, D3DXVECTOR2* pScaling, D3DXVECTOR2* pRotationCenter, FLOAT Rotation, D3DXVECTOR2* pTranslation); + D3DXMATRIX* D3DXMatrixAffineTransformation(D3DXMATRIX* pOut, FLOAT Scaling, D3DXVECTOR3* pRotationCenter, D3DXQUATERNION* pRotation, D3DXVECTOR3* pTranslation); + D3DXMATRIX* D3DXMatrixAffineTransformation2D(D3DXMATRIX* pOut, FLOAT Scaling, D3DXVECTOR2* pRotationCenter, FLOAT Rotation, D3DXVECTOR2* pTranslation); + D3DXMATRIX* D3DXMatrixLookAtRH(D3DXMATRIX* pOut, D3DXVECTOR3* pEye, D3DXVECTOR3* pAt, D3DXVECTOR3* pUp); + D3DXMATRIX* D3DXMatrixLookAtLH(D3DXMATRIX* pOut, D3DXVECTOR3* pEye, D3DXVECTOR3* pAt, D3DXVECTOR3* pUp); + D3DXMATRIX* D3DXMatrixPerspectiveRH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixPerspectiveLH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixPerspectiveFovRH(D3DXMATRIX* pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixPerspectiveFovLH(D3DXMATRIX* pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixOrthoRH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixOrthoLH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixOrthoOffCenterRH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixOrthoOffCenterLH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); + D3DXMATRIX* D3DXMatrixShadow(D3DXMATRIX* pOut, D3DXVECTOR4* pLight, D3DXPLANE* pPlane); + D3DXMATRIX* D3DXMatrixReflect(D3DXMATRIX* pOut, D3DXPLANE* pPlane); +} + +float D3DXQuaternionLength(D3DXQUATERNION *pQ) { + debug(D3DX10_DEBUG) { + if (pQ is null) return 0.0f; + } + return sqrtf((pQ.x * pQ.x) + (pQ.y * pQ.y) + (pQ.z * pQ.z) + (pQ.w * pQ.w)); +} + +float D3DXQuaternionLengthSq(D3DXQUATERNION *pQ) { + debug(D3DX10_DEBUG) { + if(pQ is null) return 0.0f; + } + return (pQ.x * pQ.x) + (pQ.y * pQ.y) + (pQ.z * pQ.z) + (pQ.w * pQ.w); +} + +float D3DXQuaternionDot(D3DXQUATERNION *pQ1, D3DXQUATERNION *pQ2) { + debug(D3DX10_DEBUG) { + if((pQ1 is null) || (pQ2 is null)) return 0.0f; + } + return (pQ1.x * pQ2.x) + (pQ1.y * pQ2.y) + (pQ1.z * pQ2.z) + (pQ1.w * pQ2.w); +} + +D3DXQUATERNION* D3DXQuaternionIdentity(D3DXQUATERNION *pOut) { + debug(D3DX10_DEBUG) { + if(pOut is null) return null; + } + pOut.x = pOut.y = pOut.z = 0.0f; + pOut.w = 1.0f; + return pOut; +} + +bool D3DXQuaternionIsIdentity(D3DXQUATERNION *pQ) { + debug(D3DX10_DEBUG) { + if(pQ is null) return false; + } + return (pQ.x == 0.0f) && (pQ.y == 0.0f) && (pQ.z == 0.0f) && (pQ.w == 1.0f); +} + +D3DXQUATERNION* D3DXQuaternionConjugate(D3DXQUATERNION *pOut, D3DXQUATERNION *pQ) { + debug(D3DX10_DEBUG) { + if((pOut is null) || (pQis is null)) return null; + } + pOut.x = -pQ.x; + pOut.y = -pQ.y; + pOut.z = -pQ.z; + pOut.w = pQ.w; + return pOut; +} + +extern(Windows) { + void D3DXQuaternionToAxisAngle(D3DXQUATERNION* pQ, D3DXVECTOR3* pAxis, FLOAT* pAngle); + D3DXQUATERNION* D3DXQuaternionRotationMatrix(D3DXQUATERNION* pOut, D3DXMATRIX* pM); + D3DXQUATERNION* D3DXQuaternionRotationAxis(D3DXQUATERNION* pOut, D3DXVECTOR3* pV, FLOAT Angle); + D3DXQUATERNION* D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION* pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll); + D3DXQUATERNION* D3DXQuaternionMultiply(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2); + D3DXQUATERNION* D3DXQuaternionNormalize(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ); + D3DXQUATERNION* D3DXQuaternionInverse(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ); + D3DXQUATERNION* D3DXQuaternionLn(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ); + D3DXQUATERNION* D3DXQuaternionExp(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ); + D3DXQUATERNION* D3DXQuaternionSlerp(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, FLOAT t); + D3DXQUATERNION* D3DXQuaternionSquad(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pA, D3DXQUATERNION* pB, D3DXQUATERNION* pC, FLOAT t); + void D3DXQuaternionSquadSetup(D3DXQUATERNION* pAOut, D3DXQUATERNION* pBOut, D3DXQUATERNION* pCOut, D3DXQUATERNION* pQ0, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, D3DXQUATERNION* pQ3); + D3DXQUATERNION* D3DXQuaternionBaryCentric(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, D3DXQUATERNION* pQ3, FLOAT f, FLOAT g); +} + +float D3DXPlaneDot(D3DXPLANE *pP, D3DXVECTOR4 *pV) { + debug(D3DX10_DEBUG) { + if((pP is null) || (pV is null)) return 0.0f; + } + return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z) + (pP.d * pV.w); +} + +float D3DXPlaneDotCoord(D3DXPLANE *pP, D3DXVECTOR3 *pV) { + debug(D3DX10_DEBUG) { + if((pP is null) || (pV is null)) return 0.0f; + } + return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z) + pP.d; +} + +float D3DXPlaneDotNormal(D3DXPLANE *pP, D3DXVECTOR3 *pV) { + debug(D3DX10_DEBUG) { + if((pP is null) || (pV is null)) return 0.0f; + } + return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z); +} + +D3DXPLANE* D3DXPlaneScale(D3DXPLANE *pOut, D3DXPLANE *pP, float s) { + debug(D3DX10_DEBUG) { + if((pOut is null) || (pP is null)) return null; + } + pOut.a = pP.a * s; + pOut.b = pP.b * s; + pOut.c = pP.c * s; + pOut.d = pP.d * s; + return pOut; +} + +extern(Windows) { + D3DXPLANE* D3DXPlaneNormalize(D3DXPLANE* pOut, D3DXPLANE* pP); + D3DXVECTOR3* D3DXPlaneIntersectLine(D3DXVECTOR3* pOut, D3DXPLANE* pP, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2); + D3DXPLANE* D3DXPlaneFromPointNormal(D3DXPLANE* pOut, D3DXVECTOR3* pPoint, D3DXVECTOR3* pNormal); + D3DXPLANE* D3DXPlaneFromPoints(D3DXPLANE* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3); + D3DXPLANE* D3DXPlaneTransform(D3DXPLANE* pOut, D3DXPLANE* pP, D3DXMATRIX* pM); + D3DXPLANE* D3DXPlaneTransformArray(D3DXPLANE* pOut, UINT OutStride, D3DXPLANE* pP, UINT PStride, D3DXMATRIX* pM, UINT n); +} + +D3DXCOLOR* D3DXColorNegative(D3DXCOLOR* pOut, D3DXCOLOR* pC) { + debug(D3DX10_DEBUG) { + if((pOut is null) || (pC is null)) return null; + } + pOut.r = 1.0f - pC.r; + pOut.g = 1.0f - pC.g; + pOut.b = 1.0f - pC.b; + pOut.a = pC.a; + return pOut; +} + +D3DXCOLOR* D3DXColorAdd(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) { + debug(D3DX10_DEBUG) { + if((pOut is null) || (pC1 is null) || (pC2 is null)) return null; + } + pOut.r = pC1.r + pC2.r; + pOut.g = pC1.g + pC2.g; + pOut.b = pC1.b + pC2.b; + pOut.a = pC1.a + pC2.a; + return pOut; +} + +D3DXCOLOR* D3DXColorSubtract(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) { + debug(D3DX10_DEBUG) { + if((pOut is null) || (pC1 is null) || (pC2 is null)) return null; + } + pOut.r = pC1.r - pC2.r; + pOut.g = pC1.g - pC2.g; + pOut.b = pC1.b - pC2.b; + pOut.a = pC1.a - pC2.a; + return pOut; +} + +D3DXCOLOR* D3DXColorScale(D3DXCOLOR* pOut, D3DXCOLOR* pC, float s) { + debug(D3DX10_DEBUG) { + if((pOut is null) || (pC is null)) return null; + } + pOut.r = pC.r * s; + pOut.g = pC.g * s; + pOut.b = pC.b * s; + pOut.a = pC.a * s; + return pOut; +} + +D3DXCOLOR* D3DXColorModulate(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) { + debug(D3DX10_DEBUG) { + if((pOut is null) || (pC1 is null) || (pC2 is null)) return null; + } + pOut.r = pC1.r * pC2.r; + pOut.g = pC1.g * pC2.g; + pOut.b = pC1.b * pC2.b; + pOut.a = pC1.a * pC2.a; + return pOut; +} + +D3DXCOLOR* D3DXColorLerp(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2, float s) { + debug(D3DX10_DEBUG) { + if((pOut is null) || (pC1 is null) || (pC2 is null)) return null; + } + pOut.r = pC1.r + s * (pC2.r - pC1.r); + pOut.g = pC1.g + s * (pC2.g - pC1.g); + pOut.b = pC1.b + s * (pC2.b - pC1.b); + pOut.a = pC1.a + s * (pC2.a - pC1.a); + return pOut; +} + +extern(Windows) { + D3DXCOLOR* D3DXColorAdjustSaturation(D3DXCOLOR* pOut, D3DXCOLOR* pC, float s); + D3DXCOLOR* D3DXColorAdjustContrast(D3DXCOLOR* pOut, D3DXCOLOR* pC, float c); + FLOAT D3DXFresnelTerm(float CosTheta, float RefractionIndex); +} + +extern (C) const GUID IID_ID3DXMatrixStack = {0xc7885ba7, 0xf990, 0x4fe7, [0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85]}; + +interface ID3DXMatrixStack : IUnknown { + extern(Windows) : + HRESULT Pop(); + HRESULT Push(); + HRESULT LoadIdentity(); + HRESULT LoadMatrix(D3DXMATRIX* pM ); + HRESULT MultMatrix(D3DXMATRIX* pM ); + HRESULT MultMatrixLocal(D3DXMATRIX* pM ); + HRESULT RotateAxis(D3DXVECTOR3* pV, float Angle); + HRESULT RotateAxisLocal(D3DXVECTOR3* pV, float Angle); + HRESULT RotateYawPitchRoll(float Yaw, float Pitch, float Roll); + HRESULT RotateYawPitchRollLocal(float Yaw, float Pitch, float Roll); + HRESULT Scale(float x, float y, float z); + HRESULT ScaleLocal(float x, float y, float z); + HRESULT Translate(float x, float y, float z ); + HRESULT TranslateLocal(float x, float y, float z); + D3DXMATRIX* GetTop(); +} + +//TODO extern(Windows) HRESULT D3DXCreateMatrixStack(UINT Flags, D3DXMATRIXSTACK* ppStack); + +const D3DXSH_MINORDER = 2; +const D3DXSH_MAXORDER = 6; + +extern(Windows) { + float* D3DXSHEvalDirection(float* pOut, UINT Order, D3DXVECTOR3* pDir); + float* D3DXSHRotate(float* pOut, UINT Order, D3DXMATRIX* pMatrix, float* pIn); + float* D3DXSHRotateZ(float* pOut, UINT Order, float Angle, float* pIn); + float* D3DXSHAdd(float* pOut, UINT Order, float* pA, float* pB); + float* D3DXSHScale(float* pOut, UINT Order, float* pIn, float Scale); + float D3DXSHDot(UINT Order, float* pA, float* pB); + float* D3DXSHMultiply2(float* pOut, float* pF, float* pG); + float* D3DXSHMultiply3(float* pOut, float* pF, float* pG); + float* D3DXSHMultiply4(float* pOut, float* pF, float* pG); + float* D3DXSHMultiply5(float* pOut, float* pF, float* pG); + float* D3DXSHMultiply6(float* pOut, float* pF, float* pG); + HRESULT D3DXSHEvalDirectionalLight(UINT Order, D3DXVECTOR3* pDir, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut); + HRESULT D3DXSHEvalSphericalLight(UINT Order, D3DXVECTOR3* pPos, float Radius, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut); + HRESULT D3DXSHEvalConeLight(UINT Order, D3DXVECTOR3* pDir, float Radius, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut); + HRESULT D3DXSHEvalHemisphereLight(UINT Order, D3DXVECTOR3* pDir, D3DXCOLOR Top, D3DXCOLOR Bottom, float* pROut, float* pGOut, float* pBOut); + BOOL D3DXIntersectTri(D3DXVECTOR3* p0, D3DXVECTOR3* p1, D3DXVECTOR3* p2, D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir, float* pU, float* pV, float* pDist); + BOOL D3DXSphereBoundProbe(D3DXVECTOR3* pCenter, float Radius, D3DXVECTOR3* pRayPosition, D3DXVECTOR3* pRayDirection); + BOOL D3DXBoxBoundProbe(D3DXVECTOR3* pMin, D3DXVECTOR3* pMax, D3DXVECTOR3* pRayPosition, D3DXVECTOR3* pRayDirection); + HRESULT D3DXComputeBoundingSphere(D3DXVECTOR3* pFirstPosition, DWORD NumVertices, DWORD dwStride, D3DXVECTOR3* pCenter, float* pRadius); + HRESULT D3DXComputeBoundingBox(D3DXVECTOR3* pFirstPosition, DWORD NumVertices, DWORD dwStride, D3DXVECTOR3* pMin, D3DXVECTOR3* pMax); +} + +enum D3DX_CPU_OPTIMIZATION { + D3DX_NOT_OPTIMIZED = 0, + D3DX_3DNOW_OPTIMIZED, + D3DX_SSE2_OPTIMIZED, + D3DX_SSE_OPTIMIZED +} + +extern(Windows) D3DX_CPU_OPTIMIZATION D3DXCpuOptimizations(bool Enable); ADDED src/win32/directx/d3dx10mesh.d Index: src/win32/directx/d3dx10mesh.d ================================================================== --- src/win32/directx/d3dx10mesh.d +++ src/win32/directx/d3dx10mesh.d @@ -0,0 +1,163 @@ +/***********************************************************************\ +* d3dx10mesh.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.d3dx10mesh; + +private import win32.windows; +private import win32.directx.d3d10; +private import win32.directx.d3dx10; + +extern(C) const GUID IID_ID3DX10BaseMesh = {0x7ed943dd, 0x52e8, 0x40b5, [0xa8, 0xd8, 0x76, 0x68, 0x5c, 0x40, 0x63, 0x30]}; +extern(C) const GUID IID_ID3DX10MeshBuffer = {0x4b0d117, 0x1041, 0x46b1, [0xaa, 0x8a, 0x39, 0x52, 0x84, 0x8b, 0xa2, 0x2e]}; +extern(C) const GUID IID_ID3DX10Mesh = {0x4020e5c2, 0x1403, 0x4929, [0x88, 0x3f, 0xe2, 0xe8, 0x49, 0xfa, 0xc1, 0x95]}; +extern(C) const GUID IID_ID3DX10PMesh = {0x8875769a, 0xd579, 0x4088, [0xaa, 0xeb, 0x53, 0x4d, 0x1a, 0xd8, 0x4e, 0x96]}; +extern(C) const GUID IID_ID3DX10SPMesh = {0x667ea4c7, 0xf1cd, 0x4386, [0xb5, 0x23, 0x7c, 0x2, 0x90, 0xb8, 0x3c, 0xc5]}; +extern(C) const GUID IID_ID3DX10PatchMesh = {0x3ce6cc22, 0xdbf2, 0x44f4, [0x89, 0x4d, 0xf9, 0xc3, 0x4a, 0x33, 0x71, 0x39]}; + +enum D3DX10_MESH { + D3DX10_MESH_32_BIT = 0x001, + D3DX10_MESH_GS_ADJACENCY = 0x004 +} + +struct D3DX10_ATTRIBUTE_RANGE { + UINT AttribId; + UINT FaceStart; + UINT FaceCount; + UINT VertexStart; + UINT VertexCount; +} + +enum D3DX10_MESH_DISCARD_FLAGS { + D3DX10_MESH_DISCARD_ATTRIBUTE_BUFFER = 0x01, + D3DX10_MESH_DISCARD_ATTRIBUTE_TABLE = 0x02, + D3DX10_MESH_DISCARD_POINTREPS = 0x04, + D3DX10_MESH_DISCARD_ADJACENCY = 0x08, + D3DX10_MESH_DISCARD_DEVICE_BUFFERS = 0x10 +} + +struct D3DX10_WELD_EPSILONS { + FLOAT Position; + FLOAT BlendWeights; + FLOAT Normal; + FLOAT PSize; + FLOAT Specular; + FLOAT Diffuse; + FLOAT[8] Texcoord; + FLOAT Tangent; + FLOAT Binormal; + FLOAT TessFactor; +} + +struct D3DX10_INTERSECT_INFO { + UINT FaceIndex; + FLOAT U; + FLOAT V; + FLOAT Dist; +} + +interface ID3DX10MeshBuffer : IUnknown { + extern(Windows) : + HRESULT Map(void** ppData, SIZE_T* pSize); + HRESULT Unmap(); + SIZE_T GetSize(); +} + +interface ID3DX10Mesh : IUnknown { + extern(Windows) : + UINT GetFaceCount(); + UINT GetVertexCount(); + UINT GetVertexBufferCount(); + UINT GetFlags(); + HRESULT GetVertexDescription(D3D10_INPUT_ELEMENT_DESC** ppDesc, UINT* pDeclCount); + HRESULT SetVertexData(UINT iBuffer, void* pData); + HRESULT GetVertexBuffer(UINT iBuffer, ID3DX10MeshBuffer** ppVertexBuffer); + HRESULT SetIndexData(void* pData, UINT cIndices); + HRESULT GetIndexBuffer(ID3DX10MeshBuffer** ppIndexBuffer); + HRESULT SetAttributeData(UINT* pData); + HRESULT GetAttributeBuffer(ID3DX10MeshBuffer** ppAttributeBuffer); + HRESULT SetAttributeTable(D3DX10_ATTRIBUTE_RANGE* pAttribTable, UINT cAttribTableSize); + HRESULT GetAttributeTable(D3DX10_ATTRIBUTE_RANGE* pAttribTable, UINT* pAttribTableSize); + HRESULT GenerateAdjacencyAndPointReps(FLOAT Epsilon); + HRESULT GenerateGSAdjacency(); + HRESULT SetAdjacencyData(UINT* pAdjacency); + HRESULT GetAdjacencyBuffer(ID3DX10MeshBuffer** ppAdjacency); + HRESULT SetPointRepData(UINT* pPointReps); + HRESULT GetPointRepBuffer(ID3DX10MeshBuffer** ppPointReps); + HRESULT Discard(D3DX10_MESH_DISCARD_FLAGS dwDiscard); + HRESULT CloneMesh(UINT Flags, LPCSTR pPosSemantic, D3D10_INPUT_ELEMENT_DESC* pDesc, UINT DeclCount, ID3DX10Mesh** ppCloneMesh); + HRESULT Optimize(UINT Flags, UINT * pFaceRemap, ID3D10Blob* ppVertexRemap); + HRESULT GenerateAttributeBufferFromTable(); + HRESULT Intersect(D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir, UINT* pHitCount, UINT* pFaceIndex, float* pU, float* pV, float* pDist, ID3D10Blob* ppAllHits); + HRESULT IntersectSubset(UINT AttribId, D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir, UINT* pHitCount, UINT* pFaceIndex, float* pU, float* pV, float* pDist, ID3D10Blob* ppAllHits); + HRESULT CommitToDevice(); + HRESULT DrawSubset(UINT AttribId); + HRESULT DrawSubsetInstanced(UINT AttribId, UINT InstanceCount, UINT StartInstanceLocation); + HRESULT GetDeviceVertexBuffer(UINT iBuffer, ID3D10Buffer** ppVertexBuffer); + HRESULT GetDeviceIndexBuffer(ID3D10Buffer** ppIndexBuffer); +} + +HRESULT D3DX10CreateMesh(ID3D10Device* pDevice, D3D10_INPUT_ELEMENT_DESC* pDeclaration, UINT DeclCount, LPCSTR pPositionSemantic, UINT VertexCount, UINT FaceCount, UINT Options, ID3DX10Mesh** ppMesh); + +enum D3DX10_MESHOPT { + D3DX10_MESHOPT_COMPACT = 0x01000000, + D3DX10_MESHOPT_ATTR_SORT = 0x02000000, + D3DX10_MESHOPT_VERTEX_CACHE = 0x04000000, + D3DX10_MESHOPT_STRIP_REORDER = 0x08000000, + D3DX10_MESHOPT_IGNORE_VERTS = 0x10000000, + D3DX10_MESHOPT_DO_NOT_SPLIT = 0x20000000, + D3DX10_MESHOPT_DEVICE_INDEPENDENT = 0x00400000 +} + +extern(C) const GUID IID_ID3DX10SkinInfo = {0x420bd604, 0x1c76, 0x4a34, [0xa4, 0x66, 0xe4, 0x5d, 0x6, 0x58, 0xa3, 0x2c]}; + +const D3DX10_SKININFO_NO_SCALING = 0; +const D3DX10_SKININFO_SCALE_TO_1 = 1; +const D3DX10_SKININFO_SCALE_TO_TOTAL = 2; + +struct D3DX10_SKINNING_CHANNEL { + UINT SrcOffset; + UINT DestOffset; + BOOL IsNormal; +} + +interface ID3DX10SkinInfo : IUnknown { + extern(Windows) : + HRESULT QueryInterface(REFIID iid, LPVOID* ppv); + ULONG AddRef(); + ULONG Release(); + UINT GetNumVertices(); + UINT GetNumBones(); + UINT GetMaxBoneInfluences(); + HRESULT AddVertices(UINT Count); + HRESULT RemapVertices(UINT NewVertexCount, UINT* pVertexRemap); + HRESULT AddBones(UINT Count); + HRESULT RemoveBone(UINT Index); + HRESULT RemapBones(UINT NewBoneCount, UINT* pBoneRemap); + HRESULT AddBoneInfluences(UINT BoneIndex, UINT InfluenceCount, UINT* pIndices, float* pWeights); + HRESULT ClearBoneInfluences(UINT BoneIndex); + UINT GetBoneInfluenceCount(UINT BoneIndex); + HRESULT GetBoneInfluences(UINT BoneIndex, UINT Offset, UINT Count, UINT* pDestIndices, float* pDestWeights); + HRESULT FindBoneInfluenceIndex(UINT BoneIndex, UINT VertexIndex, UINT* pInfluenceIndex); + HRESULT SetBoneInfluence(UINT BoneIndex, UINT InfluenceIndex, float Weight); + HRESULT GetBoneInfluence(UINT BoneIndex, UINT InfluenceIndex, float* pWeight); + HRESULT Compact(UINT MaxPerVertexInfluences, UINT ScaleMode, float MinWeight); + HRESULT DoSoftwareSkinning(UINT StartVertex, UINT VertexCount, void* pSrcVertices, UINT SrcStride, void* pDestVertices, UINT DestStride, D3DXMATRIX* pBoneMatrices, D3DXMATRIX* pInverseTransposeBoneMatrices, D3DX10_SKINNING_CHANNEL* pChannelDescs, UINT NumChannels); +} + +HRESULT D3DX10CreateSkinInfo(ID3DX10SkinInfo* ppSkinInfo); + +struct D3DX10_ATTRIBUTE_WEIGHTS { + FLOAT Position; + FLOAT Boundary; + FLOAT Normal; + FLOAT Diffuse; + FLOAT Specular; + FLOAT[8] Texcoord; + FLOAT Tangent; + FLOAT Binormal; +} + ADDED src/win32/directx/d3dx10tex.d Index: src/win32/directx/d3dx10tex.d ================================================================== --- src/win32/directx/d3dx10tex.d +++ src/win32/directx/d3dx10tex.d @@ -0,0 +1,192 @@ +/***********************************************************************\ +* d3dx10tex.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.d3dx10tex; + +private import win32.windows; +private import win32.directx.d3d10; +private import win32.directx.d3dx10core; + +enum D3DX10_FILTER_FLAG { + D3DX10_FILTER_NONE = 0x000001, + D3DX10_FILTER_POINT = 0x000002, + D3DX10_FILTER_LINEAR = 0x000003, + D3DX10_FILTER_TRIANGLE = 0x000004, + D3DX10_FILTER_BOX = 0x000005, + D3DX10_FILTER_MIRROR_U = 0x010000, + D3DX10_FILTER_MIRROR_V = 0x020000, + D3DX10_FILTER_MIRROR_W = 0x040000, + D3DX10_FILTER_MIRROR = 0x070000, + D3DX10_FILTER_DITHER = 0x080000, + D3DX10_FILTER_DITHER_DIFFUSION = 0x100000, + D3DX10_FILTER_SRGB_IN = 0x200000, + D3DX10_FILTER_SRGB_OUT = 0x400000, + D3DX10_FILTER_SRGB = 0x600000 +} + +enum D3DX10_NORMALMAP_FLAG { + D3DX10_NORMALMAP_MIRROR_U = 0x010000, + D3DX10_NORMALMAP_MIRROR_V = 0x020000, + D3DX10_NORMALMAP_MIRROR = 0x030000, + D3DX10_NORMALMAP_INVERTSIGN = 0x080000, + D3DX10_NORMALMAP_COMPUTE_OCCLUSION = 0x100000 +} + +enum D3DX10_CHANNEL_FLAG { + D3DX10_CHANNEL_RED = 1, + D3DX10_CHANNEL_BLUE = 2, + D3DX10_CHANNEL_GREEN = 4, + D3DX10_CHANNEL_ALPHA = 8, + D3DX10_CHANNEL_LUMINANCE = 16 +} + +enum D3DX10_IMAGE_FILE_FORMAT { + D3DX10_IFF_BMP = 0, + D3DX10_IFF_JPG = 1, + D3DX10_IFF_PNG = 3, + D3DX10_IFF_DDS = 4, + D3DX10_IFF_TIFF = 10, + D3DX10_IFF_GIF = 11, + D3DX10_IFF_WMP = 12, + D3DX10_IFF_FORCE_DWORD = 0x7fffffff +} + +enum D3DX10_SAVE_TEXTURE_FLAG { + D3DX10_STF_USEINPUTBLOB = 1 +} + +struct D3DX10_IMAGE_INFO { + UINT Width; + UINT Height; + UINT Depth; + UINT ArraySize; + UINT MipLevels; + UINT MiscFlags; + DXGI_FORMAT Format; + D3D10_RESOURCE_DIMENSION ResourceDimension; + D3DX10_IMAGE_FILE_FORMAT ImageFileFormat; +} + +struct D3DX10_IMAGE_LOAD_INFO { + UINT Width; + UINT Height; + UINT Depth; + UINT FirstMipLevel; + UINT MipLevels; + D3D10_USAGE Usage; + UINT BindFlags; + UINT CpuAccessFlags; + UINT MiscFlags; + DXGI_FORMAT Format; + UINT Filter; + UINT MipFilter; + D3DX10_IMAGE_INFO* pSrcInfo; +} + +HRESULT D3DX10GetImageInfoFromFileA(LPCSTR pSrcFile, ID3DX10ThreadPump pPump, + D3DX10_IMAGE_INFO* pSrcInfo, HRESULT* pHResult); +HRESULT D3DX10GetImageInfoFromFileW(LPCWSTR pSrcFile, ID3DX10ThreadPump pPump, + D3DX10_IMAGE_INFO* pSrcInfo, HRESULT* pHResult); + +HRESULT D3DX10GetImageInfoFromResourceA(HMODULE hSrcModule, + LPCSTR pSrcResource, ID3DX10ThreadPump pPump, D3DX10_IMAGE_INFO* pSrcInfo, + HRESULT* pHResult); +HRESULT D3DX10GetImageInfoFromResourceW(HMODULE hSrcModule, + LPCWSTR pSrcResource, ID3DX10ThreadPump pPump, D3DX10_IMAGE_INFO* pSrcInfo, + HRESULT* pHResult); + +HRESULT D3DX10GetImageInfoFromMemory(LPCVOID pSrcData, SIZE_T SrcDataSize, + ID3DX10ThreadPump pPump, D3DX10_IMAGE_INFO* pSrcInfo, HRESULT* pHResult); + +HRESULT D3DX10CreateShaderResourceViewFromFileA(ID3D10Device pDevice, + LPCSTR pSrcFile, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, ID3DX10ThreadPump pPump, + ID3D10ShaderResourceView* ppShaderResourceView, HRESULT* pHResult); +HRESULT D3DX10CreateShaderResourceViewFromFileW(ID3D10Device pDevice, + LPCWSTR pSrcFile, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, ID3DX10ThreadPump pPump, + ID3D10ShaderResourceView* ppShaderResourceView, HRESULT* pHResult); + +HRESULT D3DX10CreateTextureFromFileA(ID3D10Device pDevice, LPCSTR pSrcFile, + D3DX10_IMAGE_LOAD_INFO* pLoadInfo, ID3DX10ThreadPump pPump, + ID3D10Resource* ppTexture, HRESULT* pHResult); +HRESULT D3DX10CreateTextureFromFileW(ID3D10Device pDevice, LPCWSTR pSrcFile, + D3DX10_IMAGE_LOAD_INFO* pLoadInfo, ID3DX10ThreadPump pPump, + ID3D10Resource* ppTexture, HRESULT* pHResult); + +HRESULT D3DX10CreateShaderResourceViewFromResourceA(ID3D10Device pDevice, + HMODULE hSrcModule, LPCSTR pSrcResource, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, + ID3DX10ThreadPump pPump, ID3D10ShaderResourceView* ppShaderResourceView, + HRESULT* pHResult); +HRESULT D3DX10CreateShaderResourceViewFromResourceW(ID3D10Device pDevice, + HMODULE hSrcModule, LPCWSTR pSrcResource, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, + ID3DX10ThreadPump pPump, ID3D10ShaderResourceView* ppShaderResourceView, + HRESULT* pHResult); + +HRESULT D3DX10CreateTextureFromResourceA(ID3D10Device pDevice, + HMODULE hSrcModule, LPCSTR pSrcResource, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, + ID3DX10ThreadPump pPump, ID3D10Resource* ppTexture, HRESULT* pHResult); +HRESULT D3DX10CreateTextureFromResourceW(ID3D10Device pDevice, + HMODULE hSrcModule, LPCWSTR pSrcResource, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, + ID3DX10ThreadPump pPump, ID3D10Resource* ppTexture, HRESULT* pHResult); + +HRESULT D3DX10CreateShaderResourceViewFromMemory(ID3D10Device pDevice, + LPCVOID pSrcData, SIZE_T SrcDataSize, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, + ID3DX10ThreadPump pPump, ID3D10ShaderResourceView* ppShaderResourceView, + HRESULT* pHResult); + +HRESULT D3DX10CreateTextureFromMemory(ID3D10Device pDevice, LPCVOID pSrcData, + SIZE_T SrcDataSize, D3DX10_IMAGE_LOAD_INFO* pLoadInfo, + ID3DX10ThreadPump pPump, ID3D10Resource* ppTexture, HRESULT* pHResult); + +struct D3DX10_TEXTURE_LOAD_INFO { + D3D10_BOX* pSrcBox; + D3D10_BOX* pDstBox; + UINT SrcFirstMip; + UINT DstFirstMip; + UINT NumMips; + UINT SrcFirstElement; + UINT DstFirstElement; + UINT NumElements; + UINT Filter; + UINT MipFilter; +} + +HRESULT D3DX10LoadTextureFromTexture(ID3D10Resource pSrcTexture, + D3DX10_TEXTURE_LOAD_INFO* pLoadInfo, ID3D10Resource pDstTexture); + +HRESULT D3DX10FilterTexture(ID3D10Resource pTexture, UINT SrcLevel, UINT MipFilter); + +HRESULT D3DX10SaveTextureToFileA(ID3D10Resource pSrcTexture, + D3DX10_IMAGE_FILE_FORMAT DestFormat, LPCSTR pDestFile); +HRESULT D3DX10SaveTextureToFileW(ID3D10Resource pSrcTexture, + D3DX10_IMAGE_FILE_FORMAT DestFormat, LPCWSTR pDestFile); + +HRESULT D3DX10SaveTextureToMemory(ID3D10Resource pSrcTexture, + D3DX10_IMAGE_FILE_FORMAT DestFormat, ID3D10Blob* ppDestBuf, UINT Flags); + +HRESULT D3DX10ComputeNormalMap(ID3D10Texture2D pSrcTexture, UINT Flags, + UINT Channel, FLOAT Amplitude, ID3D10Texture2D pDestTexture); + +HRESULT D3DX10SHProjectCubeMap(UINT Order, ID3D10Texture2D pCubeMap, + FLOAT* pROut, FLOAT* pGOut, FLOAT* pBOut); + +version(Unicode) { + alias D3DX10GetImageInfoFromFileW D3DX10GetImageInfoFromFile; + alias D3DX10GetImageInfoFromResourceW D3DX10GetImageInfoFromResource; + alias D3DX10CreateShaderResourceViewFromFileW D3DX10CreateShaderResourceViewFromFile; + alias D3DX10CreateTextureFromFileW D3DX10CreateTextureFromFile; + alias D3DX10CreateShaderResourceViewFromResourceW D3DX10CreateShaderResourceViewFromResource; + alias D3DX10CreateTextureFromResourceW D3DX10CreateTextureFromResource; + alias D3DX10SaveTextureToFileW D3DX10SaveTextureToFile; +} else { + alias D3DX10GetImageInfoFromFileA D3DX10GetImageInfoFromFile; + alias D3DX10GetImageInfoFromResourceA D3DX10GetImageInfoFromResource; + alias D3DX10CreateShaderResourceViewFromFileA D3DX10CreateShaderResourceViewFromFile; + alias D3DX10CreateTextureFromFileA D3DX10CreateTextureFromFile; + alias D3DX10CreateShaderResourceViewFromResourceA D3DX10CreateShaderResourceViewFromResource; + alias D3DX10CreateTextureFromResourceA D3DX10CreateTextureFromResource; + alias D3DX10SaveTextureToFileA D3DX10SaveTextureToFile; +} ADDED src/win32/directx/d3dx9.d Index: src/win32/directx/d3dx9.d ================================================================== --- src/win32/directx/d3dx9.d +++ src/win32/directx/d3dx9.d @@ -0,0 +1,1990 @@ +// D3DX Types and Constants --------------------------------------------------------------------------------------- + +module win32.directx.d3dx9; + +public import win32.directx.d3d9; +public import win32.windows; + +alias D3DMATRIX D3DXMATRIX; + +const uint MAXD3DDECLLENGTH = 64; +const uint MAX_FVF_DECL_SIZE = MAXD3DDECLLENGTH + 1; + +align(4) struct D3DXATTRIBUTERANGE +{ + DWORD AttribId; + DWORD FaceStart; + DWORD FaceCount; + DWORD VertexStart; + DWORD VertexCount; +} + +align(4) struct D3DXVECTOR2 +{ + float x = 0, y = 0; + + static D3DXVECTOR2 opCall(float x, float y) + { + D3DXVECTOR2 v; + v.x = x; + v.y = y; + return v; + } +} + +alias D3DVECTOR D3DXVECTOR3; + +align(4) struct D3DXVECTOR4 +{ + float x = 0, y = 0, z = 0, w = 0; + + static D3DXVECTOR4 opCall(float x, float y, float z, float w) + { + D3DXVECTOR4 v; + v.x = x; + v.y = y; + v.z = z; + v.w = w; + return v; + } +} + +align(4) struct D3DXQUATERNION +{ + float x = 0, y = 0, z = 0, w = 0; +} + +align(4) struct D3DXFRAME +{ + LPSTR Name; + D3DXMATRIX TransformationMatrix; + + D3DXMESHCONTAINER* pMeshContainer; + + D3DXFRAME *pFrameSibling; + D3DXFRAME *pFrameFirstChild; +} + +align(4) struct D3DXMESHCONTAINER +{ + LPSTR Name; + + D3DXMESHDATA MeshData; + + D3DXMATERIAL* pMaterials; + D3DXEFFECTINSTANCE* pEffects; + DWORD NumMaterials; + DWORD *pAdjacency; + + ID3DXSkinInfo pSkinInfo; + + D3DXMESHCONTAINER* pNextMeshContainer; +} + +align(4) struct D3DXMESHDATA +{ + D3DXMESHDATATYPE Type; + + // current mesh data interface + union + { + ID3DXMesh pMesh; + ID3DXPMesh pPMesh; + ID3DXPatchMesh pPatchMesh; + } +} + +alias uint D3DXMESHDATATYPE; +enum : uint +{ + D3DXMESHTYPE_MESH = 0x001, // Normal ID3DXMesh data + D3DXMESHTYPE_PMESH = 0x002, // Progressive Mesh - ID3DXPMesh + D3DXMESHTYPE_PATCHMESH = 0x003 // Patch Mesh - ID3DXPatchMesh +} + +align(4) struct D3DXMATERIAL +{ + D3DMATERIAL9 MatD3D; + LPSTR pTextureFilename; +} + +alias uint D3DXEFFECTDEFAULTTYPE; +enum : uint +{ + D3DXEDT_STRING = 0x1, // pValue points to a null terminated ASCII string + D3DXEDT_FLOATS = 0x2, // pValue points to an array of floats - number of floats is NumBytes / sizeof(float) + D3DXEDT_DWORD = 0x3 // pValue points to a DWORD +} + +align(4) struct D3DXEFFECTDEFAULT +{ + LPSTR pParamName; + D3DXEFFECTDEFAULTTYPE Type; // type of the data pointed to by pValue + DWORD NumBytes; // size in bytes of the data pointed to by pValue + LPVOID pValue; // data for the default of the effect +} + +align(4) struct D3DXEFFECTINSTANCE +{ + LPSTR pEffectFilename; + DWORD NumDefaults; + D3DXEFFECTDEFAULT* pDefaults; +} + +alias uint D3DXPATCHMESHTYPE; +enum : uint +{ + D3DXPATCHMESH_RECT = 0x001, + D3DXPATCHMESH_TRI = 0x002, + D3DXPATCHMESH_NPATCH = 0x003 +} + +align(4) struct D3DXPATCHINFO +{ + D3DXPATCHMESHTYPE PatchType; + D3DDEGREETYPE Degree; + D3DBASISTYPE Basis; +} + +const uint LF_FACESIZE = 32; + +align(4) struct D3DXFONT_DESCA +{ + INT Height; + UINT Width; + UINT Weight; + UINT MipLevels; + BOOL Italic; + BYTE CharSet; + BYTE OutputPrecision; + BYTE Quality; + BYTE PitchAndFamily; + CHAR[LF_FACESIZE] FaceName; +} + +align(4) struct D3DXFONT_DESCW +{ + INT Height; + UINT Width; + UINT Weight; + UINT MipLevels; + BOOL Italic; + BYTE CharSet; + BYTE OutputPrecision; + BYTE Quality; + BYTE PitchAndFamily; + WCHAR[LF_FACESIZE] FaceName; +} + +align(4) struct TEXTMETRICA +{ + 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; +} + +align(4) struct TEXTMETRICW +{ + 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; +} + +align(4) struct D3DXEFFECT_DESC +{ + LPCSTR Creator; // Creator string + UINT Parameters; // Number of parameters + UINT Techniques; // Number of techniques + UINT Functions; // Number of function entrypoints +} + +alias char* D3DXHANDLE; + +align(4) struct D3DXPARAMETER_DESC +{ + LPCSTR Name; // Parameter name + LPCSTR Semantic; // Parameter semantic + D3DXPARAMETER_CLASS Class; // Class + D3DXPARAMETER_TYPE Type; // Component type + UINT Rows; // Number of rows + UINT Columns; // Number of columns + UINT Elements; // Number of array elements + UINT Annotations; // Number of annotations + UINT StructMembers; // Number of structure member sub-parameters + DWORD Flags; // D3DX_PARAMETER_* flags + UINT Bytes; // Parameter size, in bytes +} + +alias uint D3DXPARAMETER_CLASS; +enum : uint +{ + D3DXPC_SCALAR, + D3DXPC_VECTOR, + D3DXPC_MATRIX_ROWS, + D3DXPC_MATRIX_COLUMNS, + D3DXPC_OBJECT, + D3DXPC_STRUCT +} + +alias uint D3DXPARAMETER_TYPE; +enum : uint +{ + D3DXPT_VOID, + D3DXPT_BOOL, + D3DXPT_INT, + D3DXPT_FLOAT, + D3DXPT_STRING, + D3DXPT_TEXTURE, + D3DXPT_TEXTURE1D, + D3DXPT_TEXTURE2D, + D3DXPT_TEXTURE3D, + D3DXPT_TEXTURECUBE, + D3DXPT_SAMPLER, + D3DXPT_SAMPLER1D, + D3DXPT_SAMPLER2D, + D3DXPT_SAMPLER3D, + D3DXPT_SAMPLERCUBE, + D3DXPT_PIXELSHADER, + D3DXPT_VERTEXSHADER, + D3DXPT_PIXELFRAGMENT, + D3DXPT_VERTEXFRAGMENT +} + +align(4) struct D3DXTECHNIQUE_DESC +{ + LPCSTR Name; // Technique name + UINT Passes; // Number of passes + UINT Annotations; // Number of annotations +} + +align(4) struct D3DXPASS_DESC +{ + LPCSTR Name; // Pass name + UINT Annotations; // Number of annotations + + DWORD *pVertexShaderFunction; // Vertex shader function + DWORD *pPixelShaderFunction; // Pixel shader function +} + +align(4) struct D3DXFUNCTION_DESC +{ + LPCSTR Name; // Function name + UINT Annotations; // Number of annotations +} + +struct D3DXTRACK_DESC +{ + DWORD Priority; + FLOAT Weight = 0; + FLOAT Speed = 0; + double Position = 0; + BOOL Enable; +} + +align(4) struct D3DXEVENT_DESC +{ + DWORD Type; + UINT Track; + double StartTime = 0; + double Duration = 0; + DWORD Transition; + union + { + FLOAT Weight = 0; + FLOAT Speed; + double Position; + BOOL Enable; + }; +} + +align(4) struct D3DXKEY_VECTOR3 +{ + FLOAT Time = 0; + D3DXVECTOR3 Value; +} + +align(4) struct D3DXKEY_QUATERNION +{ + FLOAT Time = 0; + D3DXQUATERNION Value; +} + +align(4) struct D3DXKEY_CALLBACK +{ + FLOAT Time = 0; + LPVOID pCallbackData; +} + +align(4) struct D3DXIMAGE_INFO +{ + UINT Width; + UINT Height; + UINT Depth; + UINT MipLevels; + D3DFORMAT Format; + D3DRESOURCETYPE ResourceType; + D3DXIMAGE_FILEFORMAT ImageFileFormat; +} + +alias uint D3DXIMAGE_FILEFORMAT; +enum : uint +{ + D3DXIFF_BMP = 0, + D3DXIFF_JPG = 1, + D3DXIFF_TGA = 2, + D3DXIFF_PNG = 3, + D3DXIFF_DDS = 4, + D3DXIFF_PPM = 5, + D3DXIFF_DIB = 6, +} + +align(4) struct D3DXATTRIBUTEWEIGHTS +{ + FLOAT Position = 0; + FLOAT Boundary = 0; + FLOAT Normal = 0; + FLOAT Diffuse = 0; + FLOAT Specular = 0; + FLOAT[8] Texcoord = 0; + FLOAT Tangent = 0; + FLOAT Binormal = 0; +} + +align(4) struct D3DXPLANE +{ + FLOAT a = 0, b = 0, c = 0, d = 0; +} + +alias uint D3DXMESH; +enum : uint +{ + D3DXMESH_32BIT = 0x001, + D3DXMESH_DONOTCLIP = 0x002, + D3DXMESH_POINTS = 0x004, + D3DXMESH_RTPATCHES = 0x008, + D3DXMESH_NPATCHES = 0x4000, + D3DXMESH_VB_SYSTEMMEM = 0x010, + D3DXMESH_VB_MANAGED = 0x020, + D3DXMESH_VB_WRITEONLY = 0x040, + D3DXMESH_VB_DYNAMIC = 0x080, + D3DXMESH_VB_SOFTWAREPROCESSING = 0x8000, + D3DXMESH_IB_SYSTEMMEM = 0x100, + D3DXMESH_IB_MANAGED = 0x200, + D3DXMESH_IB_WRITEONLY = 0x400, + D3DXMESH_IB_DYNAMIC = 0x800, + D3DXMESH_IB_SOFTWAREPROCESSING= 0x10000, + D3DXMESH_VB_SHARE = 0x1000, + D3DXMESH_USEHWONLY = 0x2000, + D3DXMESH_SYSTEMMEM = 0x110, + D3DXMESH_MANAGED = 0x220, + D3DXMESH_WRITEONLY = 0x440, + D3DXMESH_DYNAMIC = 0x880, + D3DXMESH_SOFTWAREPROCESSING = 0x18000, +} + +align(4) struct D3DXMACRO +{ + LPCSTR Name; + LPCSTR Definition; +} + +align(4) struct D3DXSEMANTIC +{ + UINT Usage; + UINT UsageIndex; +} + +alias uint D3DXINCLUDE_TYPE; +enum : uint +{ + D3DXINC_LOCAL, + D3DXINC_SYSTEM, +} + +enum : uint +{ + D3DXFX_DONOTSAVESTATE = (1 << 0), + D3DXFX_DONOTSAVESHADERSTATE = (1 << 1), + D3DXFX_DONOTSAVESAMPLERSTATE = (1 << 2), + D3DXFX_NOT_CLONEABLE = (1 << 11) +} + +alias uint D3DXMESHSIMP; +enum : uint +{ + D3DXMESHSIMP_VERTEX = 0x1, + D3DXMESHSIMP_FACE = 0x2 +} + +enum : uint +{ + DT_TOP = 0x00000000, + DT_LEFT = 0x00000000, + DT_CENTER = 0x00000001, + DT_RIGHT = 0x00000002, + DT_VCENTER = 0x00000004, + DT_BOTTOM = 0x00000008, + DT_WORDBREAK = 0x00000010, + DT_SINGLELINE = 0x00000020, + DT_EXPANDTABS = 0x00000040, + DT_TABSTOP = 0x00000080, + DT_NOCLIP = 0x00000100, + DT_EXTERNALLEADING = 0x00000200, + DT_CALCRECT = 0x00000400, + DT_NOPREFIX = 0x00000800, + DT_INTERNAL = 0x00001000 +} + +enum : uint +{ + D3DXSPRITE_DONOTSAVESTATE = (1 << 0), + D3DXSPRITE_DONOTMODIFY_RENDERSTATE = (1 << 1), + D3DXSPRITE_OBJECTSPACE = (1 << 2), + D3DXSPRITE_BILLBOARD = (1 << 3), + D3DXSPRITE_ALPHABLEND = (1 << 4), + D3DXSPRITE_SORT_TEXTURE = (1 << 5), + D3DXSPRITE_SORT_DEPTH_FRONTTOBACK = (1 << 6), + D3DXSPRITE_SORT_DEPTH_BACKTOFRONT = (1 << 7) +} + +enum : uint +{ + D3DX_FILTER_NONE = (1 << 0), + D3DX_FILTER_POINT = (2 << 0), + D3DX_FILTER_LINEAR = (3 << 0), + D3DX_FILTER_TRIANGLE = (4 << 0), + D3DX_FILTER_BOX = (5 << 0), + D3DX_FILTER_MIRROR_U = (1 << 16), + D3DX_FILTER_MIRROR_V = (2 << 16), + D3DX_FILTER_MIRROR_W = (4 << 16), + D3DX_FILTER_MIRROR = (7 << 16), + D3DX_FILTER_DITHER = (1 << 19), + D3DX_FILTER_DITHER_DIFFUSION = (2 << 19), + D3DX_FILTER_SRGB_IN = (1 << 21), + D3DX_FILTER_SRGB_OUT = (2 << 21), + D3DX_FILTER_SRGB = (3 << 21) +} + +const uint D3DX_DEFAULT = cast(UINT) -1; + +alias uint D3DXMESHOPT; +enum : uint +{ + D3DXMESHOPT_COMPACT = 0x01000000, + D3DXMESHOPT_ATTRSORT = 0x02000000, + D3DXMESHOPT_VERTEXCACHE = 0x04000000, + D3DXMESHOPT_STRIPREORDER = 0x08000000, + D3DXMESHOPT_IGNOREVERTS = 0x10000000, // optimize faces only, don't touch vertices + D3DXMESHOPT_DONOTSPLIT = 0x20000000, // do not split vertices shared between attribute groups when attribute sorting + D3DXMESHOPT_DEVICEINDEPENDENT = 0x00400000 // Only affects VCache. uses a static known good cache size for all cards +} + +enum : uint +{ + D3DXPLAY_LOOP = 0, + D3DXPLAY_ONCE = 1, + D3DXPLAY_PINGPONG = 2 +} +alias uint D3DXPLAYBACK_TYPE; + + +// D3DX Interfaces --------------------------------------------------------------------------------------- + +interface ID3DXSkinInfo : IUnknown +{ + extern(Windows): + + // Specify the which vertices do each bones influence and by how much + HRESULT SetBoneInfluence(DWORD bone, DWORD numInfluences, DWORD* vertices, FLOAT* weights); + HRESULT SetBoneVertexInfluence(DWORD boneNum, DWORD influenceNum, float weight); + DWORD GetNumBoneInfluences(DWORD bone); + HRESULT GetBoneInfluence(DWORD bone, DWORD* vertices, FLOAT* weights); + HRESULT GetBoneVertexInfluence(DWORD boneNum, DWORD influenceNum, float *pWeight, DWORD *pVertexNum); + HRESULT GetMaxVertexInfluences(DWORD* maxVertexInfluences); + DWORD GetNumBones(); + HRESULT FindBoneVertexInfluenceIndex(DWORD boneNum, DWORD vertexNum, DWORD *pInfluenceIndex); + + // This gets the max face influences based on a triangle mesh with the specified index buffer + HRESULT GetMaxFaceInfluences(IDirect3DIndexBuffer9 pIB, DWORD NumFaces, DWORD* maxFaceInfluences); + + // Set min bone influence. Bone influences that are smaller than this are ignored + HRESULT SetMinBoneInfluence(FLOAT MinInfl); + // Get min bone influence. + FLOAT GetMinBoneInfluence(); + + // Bone names are returned by D3DXLoadSkinMeshFromXof. They are not used by any other method of this object + HRESULT SetBoneName(DWORD Bone, LPCSTR pName); // pName is copied to an internal string buffer + LPCSTR GetBoneName(DWORD Bone); // A pointer to an internal string buffer is returned. Do not free this. + + // Bone offset matrices are returned by D3DXLoadSkinMeshFromXof. They are not used by any other method of this object + HRESULT SetBoneOffsetMatrix(DWORD Bone, D3DXMATRIX *pBoneTransform); // pBoneTransform is copied to an internal buffer + D3DXMATRIX* GetBoneOffsetMatrix(DWORD Bone); // A pointer to an internal matrix is returned. Do not free this. + + // Clone a skin info object + HRESULT Clone(ID3DXSkinInfo* ppSkinInfo); + + // Update bone influence information to match vertices after they are reordered. This should be called + // if the target vertex buffer has been reordered externally. + HRESULT Remap(DWORD NumVertices, DWORD* pVertexRemap); + + // These methods enable the modification of the vertex layout of the vertices that will be skinned + HRESULT SetFVF(DWORD FVF); + HRESULT SetDeclaration(D3DVERTEXELEMENT9 *pDeclaration); + DWORD GetFVF(); + HRESULT GetDeclaration(D3DVERTEXELEMENT9[MAX_FVF_DECL_SIZE] Declaration); + + // Apply SW skinning based on current pose matrices to the target vertices. + HRESULT UpdateSkinnedMesh( + D3DXMATRIX* pBoneTransforms, + D3DXMATRIX* pBoneInvTransposeTransforms, + LPCVOID pVerticesSrc, + PVOID pVerticesDst); + + // Takes a mesh and returns a new mesh with per vertex blend weights and a bone combination + // table that describes which bones affect which subsets of the mesh + HRESULT ConvertToBlendedMesh( + ID3DXMesh pMesh, + DWORD Options, + DWORD *pAdjacencyIn, + LPDWORD pAdjacencyOut, + DWORD* pFaceRemap, + ID3DXBuffer* ppVertexRemap, + DWORD* pMaxFaceInfl, + DWORD* pNumBoneCombinations, + ID3DXBuffer* ppBoneCombinationTable, + ID3DXMesh* ppMesh); + + // Takes a mesh and returns a new mesh with per vertex blend weights and indices + // and a bone combination table that describes which bones palettes affect which subsets of the mesh + HRESULT ConvertToIndexedBlendedMesh( + ID3DXMesh pMesh, + DWORD Options, + DWORD paletteSize, + DWORD *pAdjacencyIn, + LPDWORD pAdjacencyOut, + DWORD* pFaceRemap, + ID3DXBuffer* ppVertexRemap, + DWORD* pMaxVertexInfl, + DWORD *pNumBoneCombinations, + ID3DXBuffer* ppBoneCombinationTable, + ID3DXMesh* ppMesh); +} + +interface ID3DXBaseMesh : IUnknown +{ + extern(Windows): + + // ID3DXBaseMesh + HRESULT DrawSubset( DWORD AttribId) ; + DWORD GetNumFaces() ; + DWORD GetNumVertices() ; + DWORD GetFVF() ; + HRESULT GetDeclaration( D3DVERTEXELEMENT9[MAX_FVF_DECL_SIZE] Declaration) ; + DWORD GetNumBytesPerVertex() ; + DWORD GetOptions() ; + HRESULT GetDevice( IDirect3DDevice9* ppDevice) ; + HRESULT CloneMeshFVF( DWORD Options, + DWORD FVF, IDirect3DDevice9 pD3DDevice, ID3DXMesh* ppCloneMesh) ; + HRESULT CloneMesh( DWORD Options, + D3DVERTEXELEMENT9 *pDeclaration, IDirect3DDevice9 pD3DDevice, ID3DXMesh* ppCloneMesh) ; + HRESULT GetVertexBuffer( IDirect3DVertexBuffer9* ppVB) ; + HRESULT GetIndexBuffer( IDirect3DIndexBuffer9* ppIB) ; + HRESULT LockVertexBuffer( DWORD Flags, LPVOID *ppData) ; + HRESULT UnlockVertexBuffer() ; + HRESULT LockIndexBuffer( DWORD Flags, LPVOID *ppData) ; + HRESULT UnlockIndexBuffer() ; + HRESULT GetAttributeTable( + D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) ; + + HRESULT ConvertPointRepsToAdjacency( DWORD* pPRep, DWORD* pAdjacency) ; + HRESULT ConvertAdjacencyToPointReps( DWORD* pAdjacency, DWORD* pPRep) ; + HRESULT GenerateAdjacency( FLOAT Epsilon, DWORD* pAdjacency) ; + + HRESULT UpdateSemantics( D3DVERTEXELEMENT9[MAX_FVF_DECL_SIZE] Declaration) ; +} + +interface ID3DXMesh : ID3DXBaseMesh +{ + extern(Windows): + + // ID3DXMesh + HRESULT LockAttributeBuffer( DWORD Flags, DWORD** ppData) ; + HRESULT UnlockAttributeBuffer() ; + HRESULT Optimize( DWORD Flags, DWORD* pAdjacencyIn, DWORD* pAdjacencyOut, + DWORD* pFaceRemap, ID3DXBuffer *ppVertexRemap, + ID3DXMesh* ppOptMesh) ; + HRESULT OptimizeInplace( DWORD Flags, DWORD* pAdjacencyIn, DWORD* pAdjacencyOut, + DWORD* pFaceRemap, ID3DXBuffer *ppVertexRemap) ; + HRESULT SetAttributeTable( D3DXATTRIBUTERANGE *pAttribTable, DWORD cAttribTableSize) ; +} + +interface ID3DXBuffer : IUnknown +{ + extern(Windows): + + // ID3DXBuffer + LPVOID GetBufferPointer(); + DWORD GetBufferSize(); +} + +interface ID3DXPMesh : ID3DXBaseMesh +{ + extern(Windows): + + // ID3DXPMesh + HRESULT ClonePMeshFVF( DWORD Options, + DWORD FVF, IDirect3DDevice9 pD3DDevice, ID3DXPMesh* ppCloneMesh) ; + HRESULT ClonePMesh( DWORD Options, + D3DVERTEXELEMENT9 *pDeclaration, IDirect3DDevice9 pD3DDevice, ID3DXPMesh* ppCloneMesh) ; + HRESULT SetNumFaces( DWORD Faces) ; + HRESULT SetNumVertices( DWORD Vertices) ; + DWORD GetMaxFaces() ; + DWORD GetMinFaces() ; + DWORD GetMaxVertices() ; + DWORD GetMinVertices() ; + HRESULT Save( void *pStream, D3DXMATERIAL* pMaterials, D3DXEFFECTINSTANCE* pEffectInstances, DWORD NumMaterials) ; + + HRESULT Optimize( DWORD Flags, DWORD* pAdjacencyOut, + DWORD* pFaceRemap, ID3DXBuffer *ppVertexRemap, + ID3DXMesh* ppOptMesh) ; + + HRESULT OptimizeBaseLOD( DWORD Flags, DWORD* pFaceRemap) ; + HRESULT TrimByFaces( DWORD NewFacesMin, DWORD NewFacesMax, DWORD *rgiFaceRemap, DWORD *rgiVertRemap) ; + HRESULT TrimByVertices( DWORD NewVerticesMin, DWORD NewVerticesMax, DWORD *rgiFaceRemap, DWORD *rgiVertRemap) ; + + HRESULT GetAdjacency( DWORD* pAdjacency) ; + + // Used to generate the immediate "ancestor" for each vertex when it is removed by a vsplit. Allows generation of geomorphs + // Vertex buffer must be equal to or greater than the maximum number of vertices in the pmesh + HRESULT GenerateVertexHistory( DWORD* pVertexHistory) ; +} + +interface ID3DXPatchMesh : IUnknown +{ + extern(Windows): + + // ID3DXPatchMesh + + // Return creation parameters + DWORD GetNumPatches() ; + DWORD GetNumVertices() ; + HRESULT GetDeclaration( D3DVERTEXELEMENT9[MAX_FVF_DECL_SIZE] Declaration) ; + DWORD GetControlVerticesPerPatch() ; + DWORD GetOptions() ; + HRESULT GetDevice( IDirect3DDevice9 *ppDevice) ; + HRESULT GetPatchInfo( D3DXPATCHINFO* PatchInfo) ; + + // Control mesh access + HRESULT GetVertexBuffer( IDirect3DVertexBuffer9* ppVB) ; + HRESULT GetIndexBuffer( IDirect3DIndexBuffer9* ppIB) ; + HRESULT LockVertexBuffer( DWORD flags, LPVOID *ppData) ; + HRESULT UnlockVertexBuffer() ; + HRESULT LockIndexBuffer( DWORD flags, LPVOID *ppData) ; + HRESULT UnlockIndexBuffer() ; + HRESULT LockAttributeBuffer( DWORD flags, DWORD** ppData) ; + HRESULT UnlockAttributeBuffer() ; + + // function returns the size of the tessellated mesh given a tessellation level. + // assumes uniform tessellation. For adaptive tessellation the Adaptive parameter must + // be set to TRUE and TessellationLevel should be the max tessellation. + // will result in the max mesh size necessary for adaptive tessellation. + HRESULT GetTessSize( FLOAT fTessLevel,DWORD Adaptive, DWORD *NumTriangles,DWORD *NumVertices) ; + + //GenerateAdjacency determines which patches are adjacent with provided tolerance + // information is used internally to optimize tessellation + HRESULT GenerateAdjacency( FLOAT Tolerance) ; + + //CloneMesh Creates a new patchmesh with the specified decl, and converts the vertex buffer + //to the new decl. Entries in the new decl which are new are set to 0. If the current mesh + //has adjacency, the new mesh will also have adjacency + HRESULT CloneMesh( DWORD Options, D3DVERTEXELEMENT9 *pDecl, ID3DXPatchMesh *pMesh) ; + + // Optimizes the patchmesh for efficient tessellation. function is designed + // to perform one time optimization for patch meshes that need to be tessellated + // repeatedly by calling the Tessellate() method. The optimization performed is + // independent of the actual tessellation level used. + // Currently Flags is unused. + // If vertices are changed, Optimize must be called again + HRESULT Optimize( DWORD flags) ; + + //gets and sets displacement parameters + //displacement maps can only be 2D textures MIP-MAPPING is ignored for non adapative tessellation + HRESULT SetDisplaceParam( IDirect3DBaseTexture9 Texture, + D3DTEXTUREFILTERTYPE MinFilter, + D3DTEXTUREFILTERTYPE MagFilter, + D3DTEXTUREFILTERTYPE MipFilter, + D3DTEXTUREADDRESS Wrap, + DWORD dwLODBias) ; + + HRESULT GetDisplaceParam( IDirect3DBaseTexture9 *Texture, + D3DTEXTUREFILTERTYPE *MinFilter, + D3DTEXTUREFILTERTYPE *MagFilter, + D3DTEXTUREFILTERTYPE *MipFilter, + D3DTEXTUREADDRESS *Wrap, + DWORD *dwLODBias) ; + + // Performs the uniform tessellation based on the tessellation level. + // function will perform more efficiently if the patch mesh has been optimized using the Optimize() call. + HRESULT Tessellate( FLOAT fTessLevel,ID3DXMesh pMesh) ; + + // Performs adaptive tessellation based on the Z based adaptive tessellation criterion. + // pTrans specifies a 4D vector that is dotted with the vertices to get the per vertex + // adaptive tessellation amount. Each edge is tessellated to the average of the criterion + // at the 2 vertices it connects. + // MaxTessLevel specifies the upper limit for adaptive tesselation. + // function will perform more efficiently if the patch mesh has been optimized using the Optimize() call. + HRESULT TessellateAdaptive( + D3DXVECTOR4 *pTrans, + DWORD dwMaxTessLevel, + DWORD dwMinTessLevel, + ID3DXMesh pMesh) ; + +} + +interface ID3DXFont : IUnknown +{ + extern(Windows): + + // ID3DXFont + HRESULT GetDevice( IDirect3DDevice9 *ppDevice) ; + HRESULT GetDescA( D3DXFONT_DESCA *pDesc) ; + HRESULT GetDescW( D3DXFONT_DESCW *pDesc) ; + BOOL GetTextMetricsA( TEXTMETRICA *pTextMetrics) ; + BOOL GetTextMetricsW( TEXTMETRICW *pTextMetrics) ; + + HDC GetDC() ; + HRESULT GetGlyphData( UINT Glyph, IDirect3DTexture9 *ppTexture, RECT *pBlackBox, POINT *pCellInc) ; + + HRESULT PreloadCharacters( UINT First, UINT Last) ; + HRESULT PreloadGlyphs( UINT First, UINT Last) ; + HRESULT PreloadTextA( LPCSTR pString, INT Count) ; + HRESULT PreloadTextW( LPCWSTR pString, INT Count) ; + + INT DrawTextA( ID3DXSprite pSprite, LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) ; + INT DrawTextW( ID3DXSprite pSprite, LPCWSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color) ; + + HRESULT OnLostDevice() ; + HRESULT OnResetDevice() ; +} + +interface ID3DXSprite : IUnknown +{ + extern(Windows): + + // ID3DXSprite + HRESULT GetDevice( IDirect3DDevice9* ppDevice) ; + + HRESULT GetTransform( D3DXMATRIX *pTransform) ; + HRESULT SetTransform( D3DXMATRIX *pTransform) ; + + HRESULT SetWorldViewRH( D3DXMATRIX *pWorld, D3DXMATRIX *pView) ; + HRESULT SetWorldViewLH( D3DXMATRIX *pWorld, D3DXMATRIX *pView) ; + + HRESULT Begin( DWORD Flags) ; + HRESULT Draw( IDirect3DTexture9 pTexture, RECT *pSrcRect, D3DXVECTOR3 *pCenter, D3DXVECTOR3 *pPosition, D3DCOLOR Color) ; + HRESULT Flush() ; + HRESULT End() ; + + HRESULT OnLostDevice() ; + HRESULT OnResetDevice() ; +} + +interface ID3DXBaseEffect : IUnknown +{ + extern(Windows): + + // Descs + HRESULT GetDesc( D3DXEFFECT_DESC* pDesc) ; + HRESULT GetParameterDesc( D3DXHANDLE hParameter, D3DXPARAMETER_DESC* pDesc) ; + HRESULT GetTechniqueDesc( D3DXHANDLE hTechnique, D3DXTECHNIQUE_DESC* pDesc) ; + HRESULT GetPassDesc( D3DXHANDLE hPass, D3DXPASS_DESC* pDesc) ; + HRESULT GetFunctionDesc( D3DXHANDLE hShader, D3DXFUNCTION_DESC* pDesc) ; + + // Handle operations + D3DXHANDLE GetParameter( D3DXHANDLE hParameter, UINT Index) ; + D3DXHANDLE GetParameterByName( D3DXHANDLE hParameter, LPCSTR pName) ; + D3DXHANDLE GetParameterBySemantic( D3DXHANDLE hParameter, LPCSTR pSemantic) ; + D3DXHANDLE GetParameterElement( D3DXHANDLE hParameter, UINT Index) ; + D3DXHANDLE GetTechnique( UINT Index) ; + D3DXHANDLE GetTechniqueByName( LPCSTR pName) ; + D3DXHANDLE GetPass( D3DXHANDLE hTechnique, UINT Index) ; + D3DXHANDLE GetPassByName( D3DXHANDLE hTechnique, LPCSTR pName) ; + D3DXHANDLE GetFunction( UINT Index) ; + D3DXHANDLE GetFunctionByName( LPCSTR pName) ; + D3DXHANDLE GetAnnotation( D3DXHANDLE hObject, UINT Index) ; + D3DXHANDLE GetAnnotationByName( D3DXHANDLE hObject, LPCSTR pName) ; + + // Get/Set Parameters + HRESULT SetValue( D3DXHANDLE hParameter, LPCVOID pData, UINT Bytes) ; + HRESULT GetValue( D3DXHANDLE hParameter, LPVOID pData, UINT Bytes) ; + HRESULT SetBool( D3DXHANDLE hParameter, BOOL b) ; + HRESULT GetBool( D3DXHANDLE hParameter, BOOL* pb) ; + HRESULT SetBoolArray( D3DXHANDLE hParameter, BOOL* pb, UINT Count) ; + HRESULT GetBoolArray( D3DXHANDLE hParameter, BOOL* pb, UINT Count) ; + HRESULT SetInt( D3DXHANDLE hParameter, INT n) ; + HRESULT GetInt( D3DXHANDLE hParameter, INT* pn) ; + HRESULT SetIntArray( D3DXHANDLE hParameter, INT* pn, UINT Count) ; + HRESULT GetIntArray( D3DXHANDLE hParameter, INT* pn, UINT Count) ; + HRESULT SetFloat( D3DXHANDLE hParameter, FLOAT f) ; + HRESULT GetFloat( D3DXHANDLE hParameter, FLOAT* pf) ; + HRESULT SetFloatArray( D3DXHANDLE hParameter, FLOAT* pf, UINT Count) ; + HRESULT GetFloatArray( D3DXHANDLE hParameter, FLOAT* pf, UINT Count) ; + HRESULT SetVector( D3DXHANDLE hParameter, D3DXVECTOR4* pVector) ; + HRESULT GetVector( D3DXHANDLE hParameter, D3DXVECTOR4* pVector) ; + HRESULT SetVectorArray( D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) ; + HRESULT GetVectorArray( D3DXHANDLE hParameter, D3DXVECTOR4* pVector, UINT Count) ; + HRESULT SetMatrix( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) ; + HRESULT GetMatrix( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) ; + HRESULT SetMatrixArray( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) ; + HRESULT GetMatrixArray( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) ; + HRESULT SetMatrixPointerArray( D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) ; + HRESULT GetMatrixPointerArray( D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) ; + HRESULT SetMatrixTranspose( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) ; + HRESULT GetMatrixTranspose( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix) ; + HRESULT SetMatrixTransposeArray( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) ; + HRESULT GetMatrixTransposeArray( D3DXHANDLE hParameter, D3DXMATRIX* pMatrix, UINT Count) ; + HRESULT SetMatrixTransposePointerArray( D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) ; + HRESULT GetMatrixTransposePointerArray( D3DXHANDLE hParameter, D3DXMATRIX** ppMatrix, UINT Count) ; + HRESULT SetString( D3DXHANDLE hParameter, LPCSTR pString) ; + HRESULT GetString( D3DXHANDLE hParameter, LPCSTR* ppString) ; + HRESULT SetTexture( D3DXHANDLE hParameter, IDirect3DBaseTexture9 pTexture) ; + HRESULT GetTexture( D3DXHANDLE hParameter, IDirect3DBaseTexture9 *ppTexture) ; + HRESULT GetPixelShader( D3DXHANDLE hParameter, IDirect3DPixelShader9 *ppPShader) ; + HRESULT GetVertexShader( D3DXHANDLE hParameter, IDirect3DVertexShader9 *ppVShader) ; + + //Set Range of an Array to pass to device + //Useful for sending only a subrange of an array down to the device + HRESULT SetArrayRange( D3DXHANDLE hParameter, UINT uStart, UINT uEnd) ; + +} + +interface ID3DXEffect : ID3DXBaseEffect +{ + extern(Windows): + + // Pool + HRESULT GetPool( ID3DXEffectPool* ppPool) ; + + // Selecting and setting a technique + HRESULT SetTechnique( D3DXHANDLE hTechnique) ; + D3DXHANDLE GetCurrentTechnique() ; + HRESULT ValidateTechnique( D3DXHANDLE hTechnique) ; + HRESULT FindNextValidTechnique( D3DXHANDLE hTechnique, D3DXHANDLE *pTechnique) ; + BOOL IsParameterUsed( D3DXHANDLE hParameter, D3DXHANDLE hTechnique) ; + + // Using current technique + // Begin starts active technique + // BeginPass begins a pass + // CommitChanges updates changes to any set calls in the pass. should be called before + // any DrawPrimitive call to d3d + // EndPass ends a pass + // End ends active technique + HRESULT Begin( UINT *pPasses, DWORD Flags) ; + HRESULT BeginPass( UINT Pass) ; + HRESULT CommitChanges() ; + HRESULT EndPass() ; + HRESULT End() ; + + // Managing D3D Device + HRESULT GetDevice( IDirect3DDevice9* ppDevice) ; + HRESULT OnLostDevice() ; + HRESULT OnResetDevice() ; + + // Logging device calls + HRESULT SetStateManager( ID3DXEffectStateManager pManager) ; + HRESULT GetStateManager( ID3DXEffectStateManager *ppManager) ; + + // Parameter blocks + HRESULT BeginParameterBlock() ; + D3DXHANDLE EndParameterBlock() ; + HRESULT ApplyParameterBlock( D3DXHANDLE hParameterBlock) ; + HRESULT DeleteParameterBlock( D3DXHANDLE hParameterBlock) ; + + // Cloning + HRESULT CloneEffect( IDirect3DDevice9 pDevice, ID3DXEffect* ppEffect) ; +} + +interface ID3DXEffectPool : IUnknown +{ + extern(Windows): + + // No public methods +} + +interface ID3DXEffectStateManager : IUnknown +{ + extern(Windows): + + // The following methods are called by the Effect when it wants to make + // the corresponding device call. Note that: + // 1. Users manage the state and are therefore responsible for making the + // the corresponding device calls themselves inside their callbacks. + // 2. Effects pay attention to the return values of the callbacks, and so + // users must pay attention to what they return in their callbacks. + + HRESULT SetTransform( D3DTRANSFORMSTATETYPE State, D3DMATRIX *pMatrix) ; + HRESULT SetMaterial( D3DMATERIAL9 *pMaterial) ; + HRESULT SetLight( DWORD Index, D3DLIGHT9 *pLight) ; + HRESULT LightEnable( DWORD Index, BOOL Enable) ; + HRESULT SetRenderState( D3DRENDERSTATETYPE State, DWORD Value) ; + HRESULT SetTexture( DWORD Stage, IDirect3DBaseTexture9 pTexture) ; + HRESULT SetTextureStageState( DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) ; + HRESULT SetSamplerState( DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) ; + HRESULT SetNPatchMode( FLOAT NumSegments) ; + HRESULT SetFVF( DWORD FVF) ; + HRESULT SetVertexShader( IDirect3DVertexShader9 pShader) ; + HRESULT SetVertexShaderConstantF( UINT RegisterIndex, FLOAT *pConstantData, UINT RegisterCount) ; + HRESULT SetVertexShaderConstantI( UINT RegisterIndex, INT *pConstantData, UINT RegisterCount) ; + HRESULT SetVertexShaderConstantB( UINT RegisterIndex, BOOL *pConstantData, UINT RegisterCount) ; + HRESULT SetPixelShader( IDirect3DPixelShader9 pShader) ; + HRESULT SetPixelShaderConstantF( UINT RegisterIndex, FLOAT *pConstantData, UINT RegisterCount) ; + HRESULT SetPixelShaderConstantI( UINT RegisterIndex, INT *pConstantData, UINT RegisterCount) ; + HRESULT SetPixelShaderConstantB( UINT RegisterIndex, BOOL *pConstantData, UINT RegisterCount) ; +} + +interface ID3DXInclude +{ + HRESULT Open(D3DXINCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes); + HRESULT Close(LPCVOID pData); +} + +// D3DX Functions --------------------------------------------------------------------------------------- +extern(Windows) +{ + uint D3DXGetShaderVersion(uint* pFunction); + + HRESULT D3DXCheckTextureRequirements( + IDirect3DDevice9 pDevice, + UINT* pWidth, + UINT* pHeight, + UINT* pNumMipLevels, + DWORD Usage, + D3DFORMAT* pFormat, + D3DPOOL Pool) ; + + HRESULT D3DXCreateTexture( + IDirect3DDevice9 pDevice, + UINT Width, + UINT Height, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + IDirect3DTexture9* ppTexture); + + HRESULT D3DXCreateCubeTexture( + IDirect3DDevice9 pDevice, + UINT Size, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + IDirect3DCubeTexture9* ppCubeTexture); + + HRESULT D3DXCreateTextureFromFileA( + LPDIRECT3DDEVICE9 pDevice, + LPCTSTR pSrcFile, + LPDIRECT3DTEXTURE9 * ppTexture); + + HRESULT D3DXCreateTextureFromFileExA( + IDirect3DDevice9 pDevice, + LPCSTR pSrcFile, + UINT Width, + UINT Height, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + IDirect3DTexture9* ppTexture); + + HRESULT D3DXCreateCubeTextureFromFileExA( + IDirect3DDevice9 pDevice, + LPCSTR pSrcFile, + UINT Size, + UINT MipLevels, + DWORD Usage, + D3DFORMAT Format, + D3DPOOL Pool, + DWORD Filter, + DWORD MipFilter, + D3DCOLOR ColorKey, + D3DXIMAGE_INFO* pSrcInfo, + PALETTEENTRY* pPalette, + IDirect3DCubeTexture9* ppCubeTexture); + + HRESULT D3DXSimplifyMesh( + ID3DXMesh pMesh, + DWORD* pAdjacency, + D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights, + FLOAT *pVertexWeights, + DWORD MinValue, + DWORD Options, + ID3DXMesh* ppMesh); + + HRESULT D3DXCreateSkinInfoFVF( + DWORD NumVertices, + DWORD FVF, + DWORD NumBones, + ID3DXSkinInfo* ppSkinInfo); + + D3DXVECTOR2* D3DXVec2TransformCoord( D3DXVECTOR2 *pOut, D3DXVECTOR2 *pV, D3DXMATRIX *pM ); + + D3DXVECTOR4* D3DXVec3Transform( D3DXVECTOR4 *pOut, D3DXVECTOR3 *pV, D3DXMATRIX *pM ); + + D3DXVECTOR3* D3DXVec3TransformCoord( D3DXVECTOR3 *pOut, D3DXVECTOR3 *pV, D3DXMATRIX *pM ); + + D3DXVECTOR4* D3DXVec4Transform( D3DXVECTOR4 *pOut, D3DXVECTOR4 *pV, D3DXMATRIX *pM ); + + D3DXMATRIX* D3DXMatrixTranspose( D3DXMATRIX *pOut, D3DXMATRIX *pM ); + + D3DXMATRIX* D3DXMatrixMultiply( D3DXMATRIX *pOut, D3DXMATRIX *pM1, D3DXMATRIX *pM2 ); + + D3DXMATRIX* D3DXMatrixInverse( D3DXMATRIX *pOut, FLOAT *pDeterminant, D3DXMATRIX *pM ); + + D3DXMATRIX* D3DXMatrixScaling( D3DXMATRIX *pOut, FLOAT sx, FLOAT sy, FLOAT sz ); + + D3DXMATRIX* D3DXMatrixTranslation( D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z ); + + D3DXMATRIX* D3DXMatrixRotationX( D3DXMATRIX *pOut, FLOAT Angle ); + + D3DXMATRIX* D3DXMatrixRotationY( D3DXMATRIX *pOut, FLOAT Angle ); + + D3DXMATRIX* D3DXMatrixRotationZ( D3DXMATRIX *pOut, FLOAT Angle ); + + D3DXMATRIX* D3DXMatrixRotationQuaternion( D3DXMATRIX *pOut, D3DXQUATERNION *pQ); + + D3DXMATRIX* D3DXMatrixRotationYawPitchRoll( D3DXMATRIX *pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll ); + + D3DXMATRIX* D3DXMatrixAffineTransformation2D( D3DXMATRIX *pOut, FLOAT Scaling, D3DXVECTOR2 *pRotationCenter, + float Rotation, D3DXVECTOR2 *pTranslation); + + D3DXMATRIX* D3DXMatrixPerspectiveFovLH( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf ); + + D3DXMATRIX* D3DXMatrixOrthoLH( D3DXMATRIX *pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf ); + + D3DXMATRIX* D3DXMatrixOrthoOffCenterLH( D3DXMATRIX *pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, + FLOAT zf ); + + void D3DXQuaternionToAxisAngle( D3DXQUATERNION *pQ, D3DXVECTOR3 *pAxis, FLOAT *pAngle ); + + D3DXQUATERNION* D3DXQuaternionRotationMatrix( D3DXQUATERNION *pOut, D3DXMATRIX *pM); + + D3DXQUATERNION* D3DXQuaternionNormalize( D3DXQUATERNION *pOut, D3DXQUATERNION *pQ ); + + D3DXPLANE* D3DXPlaneNormalize( D3DXPLANE *pOut, D3DXPLANE *pP); + + char* DXGetErrorDescription9A(HRESULT hr); + + HRESULT D3DXCreateEffectFromFileA( + IDirect3DDevice9 pDevice, + LPCSTR pSrcFile, + D3DXMACRO* pDefines, + ID3DXInclude pInclude, + DWORD Flags, + ID3DXEffectPool pPool, + ID3DXEffect* ppEffect, + ID3DXBuffer* ppCompilationErrors); + + D3DXMATRIX* D3DXMatrixTransformation2D( D3DXMATRIX *pOut, D3DXVECTOR2 *pScalingCenter, + float *pScalingRotation, D3DXVECTOR2 *pScaling, + D3DXVECTOR2 *pRotationCenter, float Rotation, + D3DXVECTOR2 *pTranslation); + + HRESULT D3DXLoadMeshFromXA( + LPCSTR pFilename, + DWORD Options, + IDirect3DDevice9 pD3D, + ID3DXBuffer *ppAdjacency, + ID3DXBuffer *ppMaterials, + ID3DXBuffer *ppEffectInstances, + DWORD *pNumMaterials, + ID3DXMesh *ppMesh); + + HRESULT D3DXCreatePolygon( + IDirect3DDevice9 pDevice, + FLOAT Length, + UINT Sides, + ID3DXMesh* ppMesh, + ID3DXBuffer* ppAdjacency); + + HRESULT D3DXCreateBox( + IDirect3DDevice9 pDevice, + FLOAT Width, + FLOAT Height, + FLOAT Depth, + ID3DXMesh* ppMesh, + ID3DXBuffer* ppAdjacency); + + HRESULT D3DXCreateCylinder( + IDirect3DDevice9 pDevice, + FLOAT Radius1, + FLOAT Radius2, + FLOAT Length, + UINT Slices, + UINT Stacks, + ID3DXMesh* ppMesh, + ID3DXBuffer* ppAdjacency); + + HRESULT D3DXCreateSphere( + IDirect3DDevice9 pDevice, + FLOAT Radius, + UINT Slices, + UINT Stacks, + ID3DXMesh* ppMesh, + ID3DXBuffer* ppAdjacency); + + HRESULT D3DXCreateTorus( + IDirect3DDevice9 pDevice, + FLOAT InnerRadius, + FLOAT OuterRadius, + UINT Sides, + UINT Rings, + ID3DXMesh* ppMesh, + ID3DXBuffer* ppAdjacency); + + HRESULT D3DXCreateTeapot( + IDirect3DDevice9 pDevice, + ID3DXMesh* ppMesh, + ID3DXBuffer* ppAdjacency); + + HRESULT D3DXCreateFontA( + IDirect3DDevice9 pDevice, + UINT Height, + UINT Width, + UINT Weight, + UINT MipLevels, + BOOL Italic, + DWORD CharSet, + DWORD OutputPrecision, + DWORD Quality, + DWORD PitchAndFamily, + LPCTSTR pFacename, + ID3DXFont *ppFont); + + HRESULT D3DXCreateSprite( + IDirect3DDevice9 pDevice, + ID3DXSprite* ppSprite) ; + + HRESULT D3DXCreateEffect( + IDirect3DDevice9 pDevice, + LPCVOID pSrcData, + UINT SrcDataLen, + D3DXMACRO* pDefines, + ID3DXInclude pInclude, + DWORD Flags, + ID3DXEffectPool pPool, + ID3DXEffect* ppEffect, + ID3DXBuffer* ppCompilationErrors); + + HRESULT D3DXCreateEffectPool( + ID3DXEffectPool* pEffectPool); + + HRESULT D3DXGetShaderInputSemantics( + DWORD* pFunction, + D3DXSEMANTIC* pSemantics, + UINT* pCount); + + HRESULT + D3DXCreateMeshFVF( + DWORD NumFaces, + DWORD NumVertices, + DWORD Options, + DWORD FVF, + IDirect3DDevice9 pD3DDevice, + ID3DXMesh* ppMesh); + + UINT D3DXGetFVFVertexSize(DWORD FVF); + + HRESULT D3DXFileCreate(ID3DXFile* lplpDirectXFile); + + HRESULT D3DXLoadMeshFromXof( + ID3DXFileData pxofMesh, + DWORD Options, + IDirect3DDevice9 pD3DDevice, + ID3DXBuffer *ppAdjacency, + ID3DXBuffer *ppMaterials, + ID3DXBuffer *ppEffectInstances, + DWORD *pNumMaterials, + ID3DXMesh *ppMesh); + + HRESULT D3DXConcatenateMeshes( + ID3DXMesh * ppMeshes, + UINT NumMeshes, + DWORD Options, + D3DXMATRIX * pGeomXForms, + D3DXMATRIX * pTextureXForms, + D3DVERTEXELEMENT9 * pDecl, + IDirect3DDevice9 pD3DDevice, + ID3DXMesh * ppMeshOut); + + HRESULT D3DXDeclaratorFromFVF(DWORD FVF, D3DVERTEXELEMENT9* Declaration); + + D3DXQUATERNION* D3DXQuaternionSlerp(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, float t); + + D3DXVECTOR3* D3DXVec3CatmullRom(D3DXVECTOR3 *pOut, D3DXVECTOR3 *pV0, D3DXVECTOR3 *pV1, D3DXVECTOR3 *pV2, D3DXVECTOR3 *pV3, float s); + + void D3DXQuaternionSquadSetup( D3DXQUATERNION *pAOut, + D3DXQUATERNION *pBOut, + D3DXQUATERNION *pCOut, + D3DXQUATERNION *pQ0, + D3DXQUATERNION *pQ1, + D3DXQUATERNION *pQ2, + D3DXQUATERNION *pQ3); + + D3DXQUATERNION* D3DXQuaternionSquad(D3DXQUATERNION *pOut, + D3DXQUATERNION *pQ1, + D3DXQUATERNION *pA, + D3DXQUATERNION *pB, + D3DXQUATERNION *pC, + float t); + + HRESULT D3DXMatrixDecompose(D3DXVECTOR3 *pOutScale, + D3DXQUATERNION *pOutRotation, + D3DXVECTOR3 *pOutTranslation, + D3DXMATRIX *pM + ); + + D3DXQUATERNION* D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION *pOut, + FLOAT Yaw, + FLOAT Pitch, + FLOAT Roll + ); + + UINT D3DXGetDeclVertexSize(D3DVERTEXELEMENT9 *pDecl, DWORD Stream ); +} // extern(Windows) + +D3DXMATRIX* D3DXMatrixIdentity( D3DXMATRIX *pOut ) +{ + pOut.m[0][1] = pOut.m[0][2] = pOut.m[0][3] = + pOut.m[1][0] = pOut.m[1][2] = pOut.m[1][3] = + pOut.m[2][0] = pOut.m[2][1] = pOut.m[2][3] = + pOut.m[3][0] = pOut.m[3][1] = pOut.m[3][2] = 0.0f; + + pOut.m[0][0] = pOut.m[1][1] = pOut.m[2][2] = pOut.m[3][3] = 1.0f; + return pOut; +} + +FLOAT D3DXVec3LengthSq(D3DXVECTOR3* v) +{ + return (v.x * v.x) + (v.y * v.y) + (v.z * v.z); +} + +template DEFINE_GUID(uint d1, ushort d2, ushort d3, ubyte d4, ubyte d5, ubyte d6, ubyte d7, ubyte d8, ubyte d9, ubyte d10, ubyte d11) +{ + const GUID DEFINE_GUID = {d1, d2, d3, [d4, d5, d6, d7, d8, d9, d10, d11]}; +} + +const GUID TID_D3DRMInfo = DEFINE_GUID!(0x2b957100, 0x9e9a, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMMesh = DEFINE_GUID!(0x3d82ab44, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMVector = DEFINE_GUID!(0x3d82ab5e, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMMeshFace = DEFINE_GUID!(0x3d82ab5f, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMMaterial = DEFINE_GUID!(0x3d82ab4d, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMMaterialArray = DEFINE_GUID!(0x35ff44e1, 0x6c7c, 0x11cf, 0x8F, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMFrame = DEFINE_GUID!(0x3d82ab46, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMFrameTransformMatrix = DEFINE_GUID!(0xf6f23f41, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMMeshMaterialList = DEFINE_GUID!(0xf6f23f42, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMMeshTextureCoords = DEFINE_GUID!(0xf6f23f40, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMMeshNormals = DEFINE_GUID!(0xf6f23f43, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMCoords2d = DEFINE_GUID!(0xf6f23f44, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMMatrix4x4 = DEFINE_GUID!(0xf6f23f45, 0x7686, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMAnimation = DEFINE_GUID!(0x3d82ab4f, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMAnimationSet = DEFINE_GUID!(0x3d82ab50, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMAnimationKey = DEFINE_GUID!(0x10dd46a8, 0x775b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); +const GUID TID_D3DRMFloatKeys = DEFINE_GUID!(0x10dd46a9, 0x775b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); +const GUID TID_D3DRMMaterialAmbientColor = DEFINE_GUID!(0x01411840, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); +const GUID TID_D3DRMMaterialDiffuseColor = DEFINE_GUID!(0x01411841, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); +const GUID TID_D3DRMMaterialSpecularColor = DEFINE_GUID!(0x01411842, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); +const GUID TID_D3DRMMaterialEmissiveColor = DEFINE_GUID!(0xd3e16e80, 0x7835, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMMaterialPower = DEFINE_GUID!(0x01411843, 0x7786, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); +const GUID TID_D3DRMColorRGBA = DEFINE_GUID!(0x35ff44e0, 0x6c7c, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xA3); +const GUID TID_D3DRMColorRGB = DEFINE_GUID!(0xd3e16e81, 0x7835, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMGuid = DEFINE_GUID!(0xa42790e0, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMTextureFilename = DEFINE_GUID!(0xa42790e1, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMTextureReference = DEFINE_GUID!(0xa42790e2, 0x7810, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMIndexedColor = DEFINE_GUID!(0x1630b820, 0x7842, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMMeshVertexColors = DEFINE_GUID!(0x1630b821, 0x7842, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMMaterialWrap = DEFINE_GUID!(0x4885ae60, 0x78e8, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMBoolean = DEFINE_GUID!(0x537da6a0, 0xca37, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); +const GUID TID_D3DRMMeshFaceWraps = DEFINE_GUID!(0xed1ec5c0, 0xc0a8, 0x11d0, 0x94, 0x1c, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); +const GUID TID_D3DRMBoolean2d = DEFINE_GUID!(0x4885ae63, 0x78e8, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMTimedFloatKeys = DEFINE_GUID!(0xf406b180, 0x7b3b, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMAnimationOptions = DEFINE_GUID!(0xe2bf56c0, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMFramePosition = DEFINE_GUID!(0xe2bf56c1, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMFrameVelocity = DEFINE_GUID!(0xe2bf56c2, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMFrameRotation = DEFINE_GUID!(0xe2bf56c3, 0x840f, 0x11cf, 0x8f, 0x52, 0x0, 0x40, 0x33, 0x35, 0x94, 0xa3); +const GUID TID_D3DRMLight = DEFINE_GUID!(0x3d82ab4a, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMCamera = DEFINE_GUID!(0x3d82ab51, 0x62da, 0x11cf, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMAppData = DEFINE_GUID!(0xe5745280, 0xb24f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); +const GUID TID_D3DRMLightUmbra = DEFINE_GUID!(0xaed22740, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); +const GUID TID_D3DRMLightRange = DEFINE_GUID!(0xaed22742, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); +const GUID TID_D3DRMLightPenumbra = DEFINE_GUID!(0xaed22741, 0xb31f, 0x11cf, 0x9d, 0xd5, 0x0, 0xaa, 0x0, 0xa7, 0x1a, 0x2f); +const GUID TID_D3DRMLightAttenuation = DEFINE_GUID!(0xa8a98ba0, 0xc5e5, 0x11cf, 0xb9, 0x41, 0x0, 0x80, 0xc8, 0xc, 0xfa, 0x7b); +const GUID TID_D3DRMInlineData = DEFINE_GUID!(0x3a23eea0, 0x94b1, 0x11d0, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMUrl = DEFINE_GUID!(0x3a23eea1, 0x94b1, 0x11d0, 0xab, 0x39, 0x0, 0x20, 0xaf, 0x71, 0xe4, 0x33); +const GUID TID_D3DRMProgressiveMesh = DEFINE_GUID!(0x8A63C360, 0x997D, 0x11d0, 0x94, 0x1C, 0x0, 0x80, 0xC8, 0x0C, 0xFA, 0x7B); +const GUID TID_D3DRMExternalVisual = DEFINE_GUID!(0x98116AA0, 0xBDBA, 0x11d1, 0x82, 0xC0, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x71); +const GUID TID_D3DRMStringProperty = DEFINE_GUID!(0x7f0f21e0, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); +const GUID TID_D3DRMPropertyBag = DEFINE_GUID!(0x7f0f21e1, 0xbfe1, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); +const GUID TID_D3DRMRightHanded = DEFINE_GUID!(0x7f5d5ea0, 0xd53a, 0x11d1, 0x82, 0xc0, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x71); + +ubyte[] D3DRM_XTEMPLATES = +[ + 0x78, 0x6f, 0x66, 0x20, 0x30, 0x33, 0x30, 0x32, 0x62, + 0x69, 0x6e, 0x20, 0x30, 0x30, 0x36, 0x34, 0x1f, 0, 0x1, + 0, 0x6, 0, 0, 0, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0xa, 0, 0x5, 0, 0x43, 0xab, 0x82, 0x3d, 0xda, + 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, + 0x33, 0x28, 0, 0x1, 0, 0x5, 0, 0, 0, 0x6d, + 0x61, 0x6a, 0x6f, 0x72, 0x14, 0, 0x28, 0, 0x1, 0, + 0x5, 0, 0, 0, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x14, + 0, 0x29, 0, 0x1, 0, 0x5, 0, 0, 0, 0x66, + 0x6c, 0x61, 0x67, 0x73, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0xa, 0, 0x5, 0, 0x5e, 0xab, 0x82, 0x3d, + 0xda, 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, + 0xe4, 0x33, 0x2a, 0, 0x1, 0, 0x1, 0, 0, 0, + 0x78, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, 0, + 0, 0x79, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, + 0, 0, 0x7a, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, + 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6f, 0x72, 0x64, + 0x73, 0x32, 0x64, 0xa, 0, 0x5, 0, 0x44, 0x3f, 0xf2, + 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, + 0x35, 0x94, 0xa3, 0x2a, 0, 0x1, 0, 0x1, 0, 0, + 0, 0x75, 0x14, 0, 0x2a, 0, 0x1, 0, 0x1, 0, + 0, 0, 0x76, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, + 0, 0x9, 0, 0, 0, 0x4d, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x34, 0x78, 0x34, 0xa, 0, 0x5, 0, 0x45, 0x3f, + 0xf2, 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, + 0x33, 0x35, 0x94, 0xa3, 0x34, 0, 0x2a, 0, 0x1, 0, + 0x6, 0, 0, 0, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, + 0xe, 0, 0x3, 0, 0x10, 0, 0, 0, 0xf, 0, + 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x9, 0, + 0, 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, + 0x41, 0xa, 0, 0x5, 0, 0xe0, 0x44, 0xff, 0x35, 0x7c, + 0x6c, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, + 0xa3, 0x2a, 0, 0x1, 0, 0x3, 0, 0, 0, 0x72, + 0x65, 0x64, 0x14, 0, 0x2a, 0, 0x1, 0, 0x5, 0, + 0, 0, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x14, 0, 0x2a, + 0, 0x1, 0, 0x4, 0, 0, 0, 0x62, 0x6c, 0x75, + 0x65, 0x14, 0, 0x2a, 0, 0x1, 0, 0x5, 0, 0, + 0, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x14, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0x8, 0, 0, 0, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0xa, 0, 0x5, 0, + 0x81, 0x6e, 0xe1, 0xd3, 0x35, 0x78, 0xcf, 0x11, 0x8f, 0x52, + 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x2a, 0, 0x1, 0, + 0x3, 0, 0, 0, 0x72, 0x65, 0x64, 0x14, 0, 0x2a, + 0, 0x1, 0, 0x5, 0, 0, 0, 0x67, 0x72, 0x65, + 0x65, 0x6e, 0x14, 0, 0x2a, 0, 0x1, 0, 0x4, 0, + 0, 0, 0x62, 0x6c, 0x75, 0x65, 0x14, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0xc, 0, 0, 0, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0xa, 0, 0x5, 0, 0x20, 0xb8, 0x30, 0x16, 0x42, 0x78, + 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, + 0x29, 0, 0x1, 0, 0x5, 0, 0, 0, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x14, 0, 0x1, 0, 0x9, 0, 0, + 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0x41, + 0x1, 0, 0xa, 0, 0, 0, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0x7, 0, 0, 0, 0x42, 0x6f, + 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0xa, 0, 0x5, 0, 0xa0, + 0xa6, 0x7d, 0x53, 0x37, 0xca, 0xd0, 0x11, 0x94, 0x1c, 0, + 0x80, 0xc8, 0xc, 0xfa, 0x7b, 0x29, 0, 0x1, 0, 0x9, + 0, 0, 0, 0x74, 0x72, 0x75, 0x65, 0x66, 0x61, 0x6c, + 0x73, 0x65, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0x9, 0, 0, 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, + 0x6e, 0x32, 0x64, 0xa, 0, 0x5, 0, 0x63, 0xae, 0x85, + 0x48, 0xe8, 0x78, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, + 0x35, 0x94, 0xa3, 0x1, 0, 0x7, 0, 0, 0, 0x42, + 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, 0x1, 0, + 0, 0, 0x75, 0x14, 0, 0x1, 0, 0x7, 0, 0, + 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, + 0x1, 0, 0, 0, 0x76, 0x14, 0, 0xb, 0, 0x1f, + 0, 0x1, 0, 0xc, 0, 0, 0, 0x4d, 0x61, 0x74, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x57, 0x72, 0x61, 0x70, 0xa, + 0, 0x5, 0, 0x60, 0xae, 0x85, 0x48, 0xe8, 0x78, 0xcf, + 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x1, + 0, 0x7, 0, 0, 0, 0x42, 0x6f, 0x6f, 0x6c, 0x65, + 0x61, 0x6e, 0x1, 0, 0x1, 0, 0, 0, 0x75, 0x14, + 0, 0x1, 0, 0x7, 0, 0, 0, 0x42, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x1, 0, 0x1, 0, 0, 0, + 0x76, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0xf, + 0, 0, 0, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, + 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0xa, 0, + 0x5, 0, 0xe1, 0x90, 0x27, 0xa4, 0x10, 0x78, 0xcf, 0x11, + 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x31, 0, + 0x1, 0, 0x8, 0, 0, 0, 0x66, 0x69, 0x6c, 0x65, + 0x6e, 0x61, 0x6d, 0x65, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x8, 0, 0, 0, 0x4d, 0x61, 0x74, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0xa, 0, 0x5, 0, 0x4d, 0xab, + 0x82, 0x3d, 0xda, 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, + 0xaf, 0x71, 0xe4, 0x33, 0x1, 0, 0x9, 0, 0, 0, + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, 0x41, 0x1, + 0, 0x9, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0x2a, 0, 0x1, 0, + 0x5, 0, 0, 0, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x14, + 0, 0x1, 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x52, 0x47, 0x42, 0x1, 0, 0xd, 0, 0, + 0, 0x73, 0x70, 0x65, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x14, 0, 0x1, 0, 0x8, 0, + 0, 0, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x47, 0x42, + 0x1, 0, 0xd, 0, 0, 0, 0x65, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x14, + 0, 0xe, 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, + 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x8, 0, 0, + 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, 0x63, 0x65, 0xa, + 0, 0x5, 0, 0x5f, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, + 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0x29, + 0, 0x1, 0, 0x12, 0, 0, 0, 0x6e, 0x46, 0x61, + 0x63, 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, + 0x64, 0x69, 0x63, 0x65, 0x73, 0x14, 0, 0x34, 0, 0x29, + 0, 0x1, 0, 0x11, 0, 0, 0, 0x66, 0x61, 0x63, + 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0xe, 0, 0x1, 0, 0x12, 0, + 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x56, 0x65, 0x72, + 0x74, 0x65, 0x78, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, + 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0xd, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, + 0x63, 0x65, 0x57, 0x72, 0x61, 0x70, 0x73, 0xa, 0, 0x5, + 0, 0xc0, 0xc5, 0x1e, 0xed, 0xa8, 0xc0, 0xd0, 0x11, 0x94, + 0x1c, 0, 0x80, 0xc8, 0xc, 0xfa, 0x7b, 0x29, 0, 0x1, + 0, 0xf, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, + 0x57, 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x14, 0, 0x34, 0, 0x1, 0, 0x9, 0, 0, 0, + 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x32, 0x64, 0x1, + 0, 0xe, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, 0x57, + 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0xe, + 0, 0x1, 0, 0xf, 0, 0, 0, 0x6e, 0x46, 0x61, + 0x63, 0x65, 0x57, 0x72, 0x61, 0x70, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x11, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, + 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6f, + 0x72, 0x64, 0x73, 0xa, 0, 0x5, 0, 0x40, 0x3f, 0xf2, + 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, + 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xe, 0, 0, + 0, 0x6e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, + 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x14, 0, 0x34, 0, 0x1, + 0, 0x8, 0, 0, 0, 0x43, 0x6f, 0x6f, 0x72, 0x64, + 0x73, 0x32, 0x64, 0x1, 0, 0xd, 0, 0, 0, 0x74, + 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x6f, 0x72, + 0x64, 0x73, 0xe, 0, 0x1, 0, 0xe, 0, 0, 0, + 0x6e, 0x54, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, + 0x6f, 0x72, 0x64, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0x10, 0, 0, 0, 0x4d, 0x65, + 0x73, 0x68, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x4c, 0x69, 0x73, 0x74, 0xa, 0, 0x5, 0, 0x42, 0x3f, + 0xf2, 0xf6, 0x86, 0x76, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, + 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xa, 0, + 0, 0, 0x6e, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x73, 0x14, 0, 0x29, 0, 0x1, 0, 0xc, 0, + 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x65, 0x73, 0x14, 0, 0x34, 0, 0x29, 0, + 0x1, 0, 0xb, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0xe, 0, 0x1, + 0, 0xc, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0xf, 0, 0x14, + 0, 0xe, 0, 0x1, 0, 0x8, 0, 0, 0, 0x4d, + 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0xf, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0xb, 0, 0, 0, 0x4d, + 0x65, 0x73, 0x68, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, + 0xa, 0, 0x5, 0, 0x43, 0x3f, 0xf2, 0xf6, 0x86, 0x76, + 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, + 0x29, 0, 0x1, 0, 0x8, 0, 0, 0, 0x6e, 0x4e, + 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x14, 0, 0x34, 0, + 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x1, 0, 0x7, 0, 0, 0, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x73, 0xe, 0, 0x1, 0, 0x8, + 0, 0, 0, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x73, 0xf, 0, 0x14, 0, 0x29, 0, 0x1, 0, 0xc, + 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, 0x65, 0x4e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x14, 0, 0x34, 0, 0x1, + 0, 0x8, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, + 0x61, 0x63, 0x65, 0x1, 0, 0xb, 0, 0, 0, 0x66, + 0x61, 0x63, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, + 0xe, 0, 0x1, 0, 0xc, 0, 0, 0, 0x6e, 0x46, + 0x61, 0x63, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, + 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0x10, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x56, 0x65, + 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x73, + 0xa, 0, 0x5, 0, 0x21, 0xb8, 0x30, 0x16, 0x42, 0x78, + 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, + 0x29, 0, 0x1, 0, 0xd, 0, 0, 0, 0x6e, 0x56, + 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x73, 0x14, 0, 0x34, 0, 0x1, 0, 0xc, 0, 0, + 0, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x64, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x1, 0, 0xc, 0, 0, 0, 0x76, + 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x73, 0xe, 0, 0x1, 0, 0xd, 0, 0, 0, 0x6e, + 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x4, 0, 0, 0, 0x4d, 0x65, 0x73, 0x68, + 0xa, 0, 0x5, 0, 0x44, 0xab, 0x82, 0x3d, 0xda, 0x62, + 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, + 0x29, 0, 0x1, 0, 0x9, 0, 0, 0, 0x6e, 0x56, + 0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0x14, 0, 0x34, + 0, 0x1, 0, 0x6, 0, 0, 0, 0x56, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x1, 0, 0x8, 0, 0, 0, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x63, 0x65, 0x73, 0xe, 0, 0x1, + 0, 0x9, 0, 0, 0, 0x6e, 0x56, 0x65, 0x72, 0x74, + 0x69, 0x63, 0x65, 0x73, 0xf, 0, 0x14, 0, 0x29, 0, + 0x1, 0, 0x6, 0, 0, 0, 0x6e, 0x46, 0x61, 0x63, + 0x65, 0x73, 0x14, 0, 0x34, 0, 0x1, 0, 0x8, 0, + 0, 0, 0x4d, 0x65, 0x73, 0x68, 0x46, 0x61, 0x63, 0x65, + 0x1, 0, 0x5, 0, 0, 0, 0x66, 0x61, 0x63, 0x65, + 0x73, 0xe, 0, 0x1, 0, 0x6, 0, 0, 0, 0x6e, + 0x46, 0x61, 0x63, 0x65, 0x73, 0xf, 0, 0x14, 0, 0xe, + 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0x14, 0, 0, 0, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x6f, 0x72, 0x6d, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0xa, + 0, 0x5, 0, 0x41, 0x3f, 0xf2, 0xf6, 0x86, 0x76, 0xcf, + 0x11, 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x1, + 0, 0x9, 0, 0, 0, 0x4d, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x34, 0x78, 0x34, 0x1, 0, 0xb, 0, 0, 0, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x72, 0x69, + 0x78, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x5, + 0, 0, 0, 0x46, 0x72, 0x61, 0x6d, 0x65, 0xa, 0, + 0x5, 0, 0x46, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, 0x11, + 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0xe, 0, + 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, 0, + 0x1f, 0, 0x1, 0, 0x9, 0, 0, 0, 0x46, 0x6c, + 0x6f, 0x61, 0x74, 0x4b, 0x65, 0x79, 0x73, 0xa, 0, 0x5, + 0, 0xa9, 0x46, 0xdd, 0x10, 0x5b, 0x77, 0xcf, 0x11, 0x8f, + 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, + 0, 0x7, 0, 0, 0, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x14, 0, 0x34, 0, 0x2a, 0, 0x1, 0, + 0x6, 0, 0, 0, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0xe, 0, 0x1, 0, 0x7, 0, 0, 0, 0x6e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0xf, 0, 0x14, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0xe, 0, 0, 0, 0x54, + 0x69, 0x6d, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, + 0x65, 0x79, 0x73, 0xa, 0, 0x5, 0, 0x80, 0xb1, 0x6, + 0xf4, 0x3b, 0x7b, 0xcf, 0x11, 0x8f, 0x52, 0, 0x40, 0x33, + 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0x4, 0, 0, + 0, 0x74, 0x69, 0x6d, 0x65, 0x14, 0, 0x1, 0, 0x9, + 0, 0, 0, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, 0x65, + 0x79, 0x73, 0x1, 0, 0x6, 0, 0, 0, 0x74, 0x66, + 0x6b, 0x65, 0x79, 0x73, 0x14, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0xc, 0, 0, 0, 0x41, 0x6e, 0x69, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0xa, 0, + 0x5, 0, 0xa8, 0x46, 0xdd, 0x10, 0x5b, 0x77, 0xcf, 0x11, + 0x8f, 0x52, 0, 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, + 0x1, 0, 0x7, 0, 0, 0, 0x6b, 0x65, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x14, 0, 0x29, 0, 0x1, 0, 0x5, + 0, 0, 0, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x14, 0, + 0x34, 0, 0x1, 0, 0xe, 0, 0, 0, 0x54, 0x69, + 0x6d, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4b, 0x65, + 0x79, 0x73, 0x1, 0, 0x4, 0, 0, 0, 0x6b, 0x65, + 0x79, 0x73, 0xe, 0, 0x1, 0, 0x5, 0, 0, 0, + 0x6e, 0x4b, 0x65, 0x79, 0x73, 0xf, 0, 0x14, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0x10, 0, 0, 0, 0x41, + 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa, 0, 0x5, 0, 0xc0, + 0x56, 0xbf, 0xe2, 0xf, 0x84, 0xcf, 0x11, 0x8f, 0x52, 0, + 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0xa, + 0, 0, 0, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x14, 0, 0x29, 0, 0x1, 0, 0xf, + 0, 0, 0, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x14, 0, + 0xb, 0, 0x1f, 0, 0x1, 0, 0x9, 0, 0, 0, + 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xa, + 0, 0x5, 0, 0x4f, 0xab, 0x82, 0x3d, 0xda, 0x62, 0xcf, + 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0xe, + 0, 0x12, 0, 0x12, 0, 0x12, 0, 0xf, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0xc, 0, 0, 0, 0x41, + 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0xa, 0, 0x5, 0, 0x50, 0xab, 0x82, 0x3d, 0xda, + 0x62, 0xcf, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, + 0x33, 0xe, 0, 0x1, 0, 0x9, 0, 0, 0, 0x41, + 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xf, 0, + 0xb, 0, 0x1f, 0, 0x1, 0, 0xa, 0, 0, 0, + 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, + 0xa, 0, 0x5, 0, 0xa0, 0xee, 0x23, 0x3a, 0xb1, 0x94, + 0xd0, 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, + 0xe, 0, 0x1, 0, 0x6, 0, 0, 0, 0x42, 0x49, + 0x4e, 0x41, 0x52, 0x59, 0xf, 0, 0xb, 0, 0x1f, 0, + 0x1, 0, 0x3, 0, 0, 0, 0x55, 0x72, 0x6c, 0xa, + 0, 0x5, 0, 0xa1, 0xee, 0x23, 0x3a, 0xb1, 0x94, 0xd0, + 0x11, 0xab, 0x39, 0, 0x20, 0xaf, 0x71, 0xe4, 0x33, 0x29, + 0, 0x1, 0, 0x5, 0, 0, 0, 0x6e, 0x55, 0x72, + 0x6c, 0x73, 0x14, 0, 0x34, 0, 0x31, 0, 0x1, 0, + 0x4, 0, 0, 0, 0x75, 0x72, 0x6c, 0x73, 0xe, 0, + 0x1, 0, 0x5, 0, 0, 0, 0x6e, 0x55, 0x72, 0x6c, + 0x73, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, 0, 0x1, + 0, 0xf, 0, 0, 0, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x73, 0x68, + 0xa, 0, 0x5, 0, 0x60, 0xc3, 0x63, 0x8a, 0x7d, 0x99, + 0xd0, 0x11, 0x94, 0x1c, 0, 0x80, 0xc8, 0xc, 0xfa, 0x7b, + 0xe, 0, 0x1, 0, 0x3, 0, 0, 0, 0x55, 0x72, + 0x6c, 0x13, 0, 0x1, 0, 0xa, 0, 0, 0, 0x49, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x44, 0x61, 0x74, 0x61, 0xf, + 0, 0xb, 0, 0x1f, 0, 0x1, 0, 0x4, 0, 0, + 0, 0x47, 0x75, 0x69, 0x64, 0xa, 0, 0x5, 0, 0xe0, + 0x90, 0x27, 0xa4, 0x10, 0x78, 0xcf, 0x11, 0x8f, 0x52, 0, + 0x40, 0x33, 0x35, 0x94, 0xa3, 0x29, 0, 0x1, 0, 0x5, + 0, 0, 0, 0x64, 0x61, 0x74, 0x61, 0x31, 0x14, 0, + 0x28, 0, 0x1, 0, 0x5, 0, 0, 0, 0x64, 0x61, + 0x74, 0x61, 0x32, 0x14, 0, 0x28, 0, 0x1, 0, 0x5, + 0, 0, 0, 0x64, 0x61, 0x74, 0x61, 0x33, 0x14, 0, + 0x34, 0, 0x2d, 0, 0x1, 0, 0x5, 0, 0, 0, + 0x64, 0x61, 0x74, 0x61, 0x34, 0xe, 0, 0x3, 0, 0x8, + 0, 0, 0, 0xf, 0, 0x14, 0, 0xb, 0, 0x1f, + 0, 0x1, 0, 0xe, 0, 0, 0, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x79, 0xa, 0, 0x5, 0, 0xe0, 0x21, 0xf, 0x7f, 0xe1, + 0xbf, 0xd1, 0x11, 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, + 0x71, 0x31, 0, 0x1, 0, 0x3, 0, 0, 0, 0x6b, + 0x65, 0x79, 0x14, 0, 0x31, 0, 0x1, 0, 0x5, 0, + 0, 0, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x14, 0, 0xb, + 0, 0x1f, 0, 0x1, 0, 0xb, 0, 0, 0, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x42, 0x61, 0x67, + 0xa, 0, 0x5, 0, 0xe1, 0x21, 0xf, 0x7f, 0xe1, 0xbf, + 0xd1, 0x11, 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, 0x71, + 0xe, 0, 0x1, 0, 0xe, 0, 0, 0, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x79, 0xf, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0xe, 0, 0, 0, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0xa, 0, + 0x5, 0, 0xa0, 0x6a, 0x11, 0x98, 0xba, 0xbd, 0xd1, 0x11, + 0x82, 0xc0, 0, 0xa0, 0xc9, 0x69, 0x72, 0x71, 0x1, 0, + 0x4, 0, 0, 0, 0x47, 0x75, 0x69, 0x64, 0x1, 0, + 0x12, 0, 0, 0, 0x67, 0x75, 0x69, 0x64, 0x45, 0x78, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x56, 0x69, 0x73, 0x75, + 0x61, 0x6c, 0x14, 0, 0xe, 0, 0x12, 0, 0x12, 0, + 0x12, 0, 0xf, 0, 0xb, 0, 0x1f, 0, 0x1, 0, + 0xb, 0, 0, 0, 0x52, 0x69, 0x67, 0x68, 0x74, 0x48, + 0x61, 0x6e, 0x64, 0x65, 0x64, 0xa, 0, 0x5, 0, 0xa0, + 0x5e, 0x5d, 0x7f, 0x3a, 0xd5, 0xd1, 0x11, 0x82, 0xc0, 0, + 0xa0, 0xc9, 0x69, 0x72, 0x71, 0x29, 0, 0x1, 0, 0xc, + 0, 0, 0, 0x62, 0x52, 0x69, 0x67, 0x68, 0x74, 0x48, + 0x61, 0x6e, 0x64, 0x65, 0x64, 0x14, 0, 0xb, 0 +]; + +const GUID DXFILEOBJ_XSkinMeshHeader = DEFINE_GUID!(0x3cf169ce, 0xff7c, 0x44ab, 0x93, 0xc0, 0xf7, 0x8f, 0x62, 0xd1, 0x72, 0xe2); +const GUID DXFILEOBJ_VertexDuplicationIndices = DEFINE_GUID!(0xb8d65549, 0xd7c9, 0x4995, 0x89, 0xcf, 0x53, 0xa9, 0xa8, 0xb0, 0x31, 0xe3); +const GUID DXFILEOBJ_FaceAdjacency = DEFINE_GUID!(0xa64c844a, 0xe282, 0x4756, 0x8b, 0x80, 0x25, 0xc, 0xde, 0x4, 0x39, 0x8c); +const GUID DXFILEOBJ_SkinWeights = DEFINE_GUID!(0x6f0d123b, 0xbad2, 0x4167, 0xa0, 0xd0, 0x80, 0x22, 0x4f, 0x25, 0xfa, 0xbb); +const GUID DXFILEOBJ_Patch = DEFINE_GUID!(0xa3eb5d44, 0xfc22, 0x429d, 0x9a, 0xfb, 0x32, 0x21, 0xcb, 0x97, 0x19, 0xa6); +const GUID DXFILEOBJ_PatchMesh = DEFINE_GUID!(0xd02c95cc, 0xedba, 0x4305, 0x9b, 0x5d, 0x18, 0x20, 0xd7, 0x70, 0x4b, 0xbf); +const GUID DXFILEOBJ_PatchMesh9 = DEFINE_GUID!(0xb9ec94e1, 0xb9a6, 0x4251, 0xba, 0x18, 0x94, 0x89, 0x3f, 0x2, 0xc0, 0xea); +const GUID DXFILEOBJ_PMInfo = DEFINE_GUID!(0xb6c3e656, 0xec8b, 0x4b92, 0x9b, 0x62, 0x68, 0x16, 0x59, 0x52, 0x29, 0x47); +const GUID DXFILEOBJ_PMAttributeRange = DEFINE_GUID!(0x917e0427, 0xc61e, 0x4a14, 0x9c, 0x64, 0xaf, 0xe6, 0x5f, 0x9e, 0x98, 0x44); +const GUID DXFILEOBJ_PMVSplitRecord = DEFINE_GUID!(0x574ccc14, 0xf0b3, 0x4333, 0x82, 0x2d, 0x93, 0xe8, 0xa8, 0xa0, 0x8e, 0x4c); +const GUID DXFILEOBJ_FVFData = DEFINE_GUID!(0xb6e70a0e, 0x8ef9, 0x4e83, 0x94, 0xad, 0xec, 0xc8, 0xb0, 0xc0, 0x48, 0x97); +const GUID DXFILEOBJ_VertexElement = DEFINE_GUID!(0xf752461c, 0x1e23, 0x48f6, 0xb9, 0xf8, 0x83, 0x50, 0x85, 0xf, 0x33, 0x6f); +const GUID DXFILEOBJ_DeclData = DEFINE_GUID!(0xbf22e553, 0x292c, 0x4781, 0x9f, 0xea, 0x62, 0xbd, 0x55, 0x4b, 0xdd, 0x93); +const GUID DXFILEOBJ_EffectFloats = DEFINE_GUID!(0xf1cfe2b3, 0xde3, 0x4e28, 0xaf, 0xa1, 0x15, 0x5a, 0x75, 0xa, 0x28, 0x2d); +const GUID DXFILEOBJ_EffectString = DEFINE_GUID!(0xd55b097e, 0xbdb6, 0x4c52, 0xb0, 0x3d, 0x60, 0x51, 0xc8, 0x9d, 0xe, 0x42); +const GUID DXFILEOBJ_EffectDWord = DEFINE_GUID!(0x622c0ed0, 0x956e, 0x4da9, 0x90, 0x8a, 0x2a, 0xf9, 0x4f, 0x3c, 0xe7, 0x16); +const GUID DXFILEOBJ_EffectParamFloats = DEFINE_GUID!(0x3014b9a0, 0x62f5, 0x478c, 0x9b, 0x86, 0xe4, 0xac, 0x9f, 0x4e, 0x41, 0x8b); +const GUID DXFILEOBJ_EffectParamString = DEFINE_GUID!(0x1dbc4c88, 0x94c1, 0x46ee, 0x90, 0x76, 0x2c, 0x28, 0x81, 0x8c, 0x94, 0x81); +const GUID DXFILEOBJ_EffectParamDWord = DEFINE_GUID!(0xe13963bc, 0xae51, 0x4c5d, 0xb0, 0xf, 0xcf, 0xa3, 0xa9, 0xd9, 0x7c, 0xe5); +const GUID DXFILEOBJ_EffectInstance = DEFINE_GUID!(0xe331f7e4, 0x559, 0x4cc2, 0x8e, 0x99, 0x1c, 0xec, 0x16, 0x57, 0x92, 0x8f); +const GUID DXFILEOBJ_AnimTicksPerSecond = DEFINE_GUID!(0x9e415a43, 0x7ba6, 0x4a73, 0x87, 0x43, 0xb7, 0x3d, 0x47, 0xe8, 0x84, 0x76); +const GUID DXFILEOBJ_CompressedAnimationSet = DEFINE_GUID!(0x7f9b00b3, 0xf125, 0x4890, 0x87, 0x6e, 0x1c, 0x42, 0xbf, 0x69, 0x7c, 0x4d); + +align(1) struct XFILECOMPRESSEDANIMATIONSET +{ + DWORD CompressedBlockSize; + FLOAT TicksPerSec; + DWORD PlaybackType; + DWORD BufferLength; +} + +const char[] XSKINEXP_TEMPLATES = + "xof 0303txt 0032 + template XSkinMeshHeader + { + <3CF169CE-FF7C-44ab-93C0-F78F62D172E2> + WORD nMaxSkinWeightsPerVertex; + WORD nMaxSkinWeightsPerFace; + WORD nBones; + } + template VertexDuplicationIndices + { + + DWORD nIndices; + DWORD nOriginalVertices; + array DWORD[nIndices] indices; + } + template FaceAdjacency + { + + DWORD nIndices; + array DWORD[nIndices] indices; + } + template SkinWeights + { + <6F0D123B-BAD2-4167-A0D0-80224F25FABB> + STRING transformNodeName; + DWORD nWeights; + array DWORD[nWeights] vertexIndices; + array float[nWeights] weights; + Matrix4x4 matrixOffset; + } + template Patch + { + + DWORD nControlIndices; + array DWORD[nControlIndices] controlIndices; + } + template PatchMesh + { + + DWORD nVertices; + array Vector[nVertices] vertices; + DWORD nPatches; + array Patch[nPatches] patches; + [ ... ] + } + template PatchMesh9 + { + + DWORD Type; + DWORD Degree; + DWORD Basis; + DWORD nVertices; + array Vector[nVertices] vertices; + DWORD nPatches; + array Patch[nPatches] patches; + [ ... ] + } " + "template EffectFloats + { + + DWORD nFloats; + array float[nFloats] Floats; + } + template EffectString + { + + STRING Value; + } + template EffectDWord + { + <622C0ED0-956E-4da9-908A-2AF94F3CE716> + DWORD Value; + } " + "template EffectParamFloats + { + <3014B9A0-62F5-478c-9B86-E4AC9F4E418B> + STRING ParamName; + DWORD nFloats; + array float[nFloats] Floats; + } " + "template EffectParamString + { + <1DBC4C88-94C1-46ee-9076-2C28818C9481> + STRING ParamName; + STRING Value; + } + template EffectParamDWord + { + + STRING ParamName; + DWORD Value; + } + template EffectInstance + { + + STRING EffectFilename; + [ ... ] + } " + "template AnimTicksPerSecond + { + <9E415A43-7BA6-4a73-8743-B73D47E88476> + DWORD AnimTicksPerSecond; + } + template CompressedAnimationSet + { + <7F9B00B3-F125-4890-876E-1C42BF697C4D> + DWORD CompressedBlockSize; + FLOAT TicksPerSec; + DWORD PlaybackType; + DWORD BufferLength; + array DWORD[BufferLength] CompressedData; + } "; + +const char[] XEXTENSIONS_TEMPLATES = + "xof 0303txt 0032 + template FVFData + { + + DWORD dwFVF; + DWORD nDWords; + array DWORD[nDWords] data; + } + template VertexElement + { + + DWORD Type; + DWORD Method; + DWORD Usage; + DWORD UsageIndex; + } + template DeclData + { + + DWORD nElements; + array VertexElement[nElements] Elements; + DWORD nDWords; + array DWORD[nDWords] data; + } + template PMAttributeRange + { + <917E0427-C61E-4a14-9C64-AFE65F9E9844> + DWORD iFaceOffset; + DWORD nFacesMin; + DWORD nFacesMax; + DWORD iVertexOffset; + DWORD nVerticesMin; + DWORD nVerticesMax; + } + template PMVSplitRecord + { + <574CCC14-F0B3-4333-822D-93E8A8A08E4C> + DWORD iFaceCLW; + DWORD iVlrOffset; + DWORD iCode; + } + template PMInfo + { + + DWORD nAttributes; + array PMAttributeRange[nAttributes] attributeRanges; + DWORD nMaxValence; + DWORD nMinLogicalVertices; + DWORD nMaxLogicalVertices; + DWORD nVSplits; + array PMVSplitRecord[nVSplits] splitRecords; + DWORD nAttributeMispredicts; + array DWORD[nAttributeMispredicts] attributeMispredicts; + } "; + +enum : uint +{ + D3DXF_FILEFORMAT_BINARY = 0, + D3DXF_FILEFORMAT_TEXT = 1, + D3DXF_FILEFORMAT_COMPRESSED = 2 +} +alias uint D3DXF_FILEFORMAT; + +enum : uint +{ + D3DXF_FILESAVE_TOFILE = 0x00L, + D3DXF_FILESAVE_TOWFILE = 0x01L +} +alias uint D3DXF_FILESAVEOPTIONS; + +enum : uint +{ + D3DXF_FILELOAD_FROMFILE = 0x00L, + D3DXF_FILELOAD_FROMWFILE = 0x01L, + D3DXF_FILELOAD_FROMRESOURCE = 0x02L, + D3DXF_FILELOAD_FROMMEMORY = 0x03L +} +alias uint D3DXF_FILELOADOPTIONS; + +struct D3DXF_FILELOADRESOURCE +{ + HMODULE hModule; // Desc + LPCSTR lpName; // Desc + LPCSTR lpType; // Desc +} + +struct D3DXF_FILELOADMEMORY +{ + LPCVOID lpMemory; // Desc + size_t dSize; // Desc +} + +const GUID IID_ID3DXFile = DEFINE_GUID!(0xcef08cf9, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); +const GUID IID_ID3DXFileSaveObject = DEFINE_GUID!(0xcef08cfa, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); +const GUID IID_ID3DXFileSaveData = DEFINE_GUID!(0xcef08cfb, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); +const GUID IID_ID3DXFileEnumObject = DEFINE_GUID!(0xcef08cfc, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); +const GUID IID_ID3DXFileData = DEFINE_GUID!(0xcef08cfd, 0x7b4f, 0x4429, 0x96, 0x24, 0x2a, 0x69, 0x0a, 0x93, 0x32, 0x01 ); + +interface ID3DXFile : IUnknown +{ + HRESULT CreateEnumObject(LPCVOID, D3DXF_FILELOADOPTIONS, ID3DXFileEnumObject*); + HRESULT CreateSaveObject(LPCVOID, D3DXF_FILESAVEOPTIONS, D3DXF_FILEFORMAT, ID3DXFileSaveObject*); + HRESULT RegisterTemplates(LPCVOID, size_t); + HRESULT RegisterEnumTemplates(ID3DXFileEnumObject); +} + +interface ID3DXFileSaveObject : IUnknown +{ + HRESULT GetFile(ID3DXFile*); + HRESULT AddDataObject(GUID*, LPCSTR, GUID*, size_t, LPCVOID, ID3DXFileSaveData*); + HRESULT Save(); +} + +interface ID3DXFileSaveData : IUnknown +{ + HRESULT GetSave(ID3DXFileSaveObject*); + HRESULT GetName(LPSTR, size_t*); + HRESULT GetId(GUID*); + HRESULT GetType(GUID*); + HRESULT AddDataObject(GUID*, LPCSTR, GUID*, size_t, LPCVOID, ID3DXFileSaveData*); + HRESULT AddDataReference(LPCSTR, GUID* ); +} + +interface ID3DXFileEnumObject : IUnknown +{ + HRESULT GetFile(ID3DXFile*); + HRESULT GetChildren(size_t*); + HRESULT GetChild(size_t, ID3DXFileData*); + HRESULT GetDataObjectById(REFGUID, ID3DXFileData*); + HRESULT GetDataObjectByName(LPCSTR, ID3DXFileData*); +} + +interface ID3DXFileData : IUnknown +{ + HRESULT GetEnum(ID3DXFileEnumObject*); + HRESULT GetName(LPSTR, size_t*); + HRESULT GetId(GUID*); + HRESULT Lock(size_t*, LPCVOID*); + HRESULT Unlock(); + HRESULT GetType(GUID*); + BOOL IsReference(); + HRESULT GetChildren(size_t*); + HRESULT GetChild(size_t, ID3DXFileData*); +} ADDED src/win32/directx/d3dx9.def Index: src/win32/directx/d3dx9.def ================================================================== --- src/win32/directx/d3dx9.def +++ src/win32/directx/d3dx9.def @@ -0,0 +1,48 @@ +IMPORTS +_D3DXConcatenateMeshes@32 = d3dx9_29.D3DXConcatenateMeshes +_D3DXCreateBox@24 = d3dx9_29.D3DXCreateBox +_D3DXCreateCubeTexture@28 = d3dx9_29.D3DXCreateCubeTexture +_D3DXCreateCubeTextureFromFileExA@52 = d3dx9_29.D3DXCreateCubeTextureFromFileExA +_D3DXCreateCylinder@32 = d3dx9_29.D3DXCreateCylinder +_D3DXCreateFontA@48 = d3dx9_29.D3DXCreateFontA +_D3DXCreatePolygon@20 = d3dx9_29.D3DXCreatePolygon +_D3DXCreateSkinInfoFVF@16 = d3dx9_29.D3DXCreateSkinInfoFVF +_D3DXCreateSphere@24 = d3dx9_29.D3DXCreateSphere +_D3DXCreateSprite@8 = d3dx9_29.D3DXCreateSprite +_D3DXCreateTeapot@12 = d3dx9_29.D3DXCreateTeapot +_D3DXCreateTexture@32 = d3dx9_29.D3DXCreateTexture +_D3DXCreateTextureFromFileExA@56 = d3dx9_29.D3DXCreateTextureFromFileExA +_D3DXCreateTextureFromFileA@12 = d3dx9_29.D3DXCreateTextureFromFileA +_D3DXCreateTorus@28 = d3dx9_29.D3DXCreateTorus +_D3DXFileCreate@4 = d3dx9_29.D3DXFileCreate +_D3DXGetDeclVertexSize@8 = d3dx9_29.D3DXGetDeclVertexSize +_D3DXLoadMeshFromXof@32 = d3dx9_29.D3DXLoadMeshFromXof +_D3DXMatrixDecompose@16 = d3dx9_29.D3DXMatrixDecompose +_D3DXMatrixInverse@12 = d3dx9_29.D3DXMatrixInverse +_D3DXMatrixMultiply@12 = d3dx9_29.D3DXMatrixMultiply +_D3DXMatrixOrthoOffCenterLH@28 = d3dx9_29.D3DXMatrixOrthoOffCenterLH +_D3DXMatrixPerspectiveFovLH@20 = d3dx9_29.D3DXMatrixPerspectiveFovLH +_D3DXMatrixRotationQuaternion@8 = d3dx9_29.D3DXMatrixRotationQuaternion +_D3DXMatrixRotationX@8 = d3dx9_29.D3DXMatrixRotationX +_D3DXMatrixRotationY@8 = d3dx9_29.D3DXMatrixRotationY +_D3DXMatrixRotationYawPitchRoll@16 = d3dx9_29.D3DXMatrixRotationYawPitchRoll +_D3DXMatrixRotationZ@8 = d3dx9_29.D3DXMatrixRotationZ +_D3DXMatrixScaling@16 = d3dx9_29.D3DXMatrixScaling +_D3DXMatrixTransformation2D@28 = d3dx9_29.D3DXMatrixTransformation2D +_D3DXMatrixTranslation@16 = d3dx9_29.D3DXMatrixTranslation +_D3DXPlaneNormalize@8 = d3dx9_29.D3DXPlaneNormalize +_D3DXQuaternionNormalize@8 = d3dx9_29.D3DXQuaternionNormalize +_D3DXQuaternionRotationYawPitchRoll@16 = d3dx9_29.D3DXQuaternionRotationYawPitchRoll +_D3DXQuaternionSlerp@16 = d3dx9_29.D3DXQuaternionSlerp +_D3DXQuaternionSquad@24 = d3dx9_29.D3DXQuaternionSquad +_D3DXQuaternionSquadSetup@28 = d3dx9_29.D3DXQuaternionSquadSetup +_D3DXSimplifyMesh@28 = d3dx9_29.D3DXSimplifyMesh +_D3DXVec2TransformCoord@12 = d3dx9_29.D3DXVec2TransformCoord +_D3DXVec3CatmullRom@24 = d3dx9_29.D3DXVec3CatmullRom +_D3DXVec3TransformCoord@12 = d3dx9_29.D3DXVec3TransformCoord +_D3DXCreateEffect@36 = d3dx9_29.D3DXCreateEffect +_D3DXCreateEffectFromFileA@32 = d3dx9_29.D3DXCreateEffectFromFileA +_D3DXCreateEffectPool@4 = d3dx9_29.D3DXCreateEffectPool +_D3DXGetShaderInputSemantics@12 = d3dx9_29.D3DXGetShaderInputSemantics +_D3DXGetShaderVersion@4 = d3dx9_29.D3DXGetShaderVersion +_D3DXMatrixTranspose@8 = d3dx9_29.D3DXMatrixTranspose ADDED src/win32/directx/dinput8.d Index: src/win32/directx/dinput8.d ================================================================== --- src/win32/directx/dinput8.d +++ src/win32/directx/dinput8.d @@ -0,0 +1,431 @@ +module win32.directx.dinput8; + +//import tango.sys.win32.Types; +//alias char CHAR; + +import win32.windows; + +enum { + CLASS_E_NOAGGREGATION = cast(int) 0x80040110, +} + +interface IUnknown { + HRESULT QueryInterface(IID* riid, void** pvObject); + ULONG AddRef(); + ULONG Release(); +} + +extern(C): + +struct DIDEVICEINSTANCEA +{ + DWORD dwSize; + GUID guidInstance; + GUID guidProduct; + DWORD dwDevType; + CHAR[MAX_PATH] tszInstanceName; + CHAR[MAX_PATH] tszProductName; + GUID guidFFDriver; + WORD wUsagePage; + WORD wUsage; +} +alias DIDEVICEINSTANCEA DIDEVICEINSTANCE; + +struct DIDEVICEOBJECTINSTANCEA +{ + DWORD dwSize; + GUID guidType; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; + CHAR[MAX_PATH] tszName; + DWORD dwFFMaxForce; + DWORD dwFFForceResolution; + WORD wCollectionNumber; + WORD wDesignatorIndex; + WORD wUsagePage; + WORD wUsage; + DWORD dwDimension; + WORD wExponent; + WORD wReportId; +} + +struct DIOBJECTDATAFORMAT +{ + const GUID *pguid; + DWORD dwOfs; + DWORD dwType; + DWORD dwFlags; +} + +struct DIDATAFORMAT +{ + DWORD dwSize; + DWORD dwObjSize; + DWORD dwFlags; + DWORD dwDataSize; + DWORD dwNumObjs; + DIOBJECTDATAFORMAT* rgodf; +} + +extern DIDATAFORMAT c_dfDIKeyboard; +extern DIDATAFORMAT c_dfDIMouse2; +extern DIDATAFORMAT c_dfDIJoystick; + +struct DIACTIONA +{ + UINT* uAppData; + DWORD dwSemantic; + DWORD dwFlags; + union + { + LPCSTR lptszActionName; + UINT uResIdString; + } + GUID guidInstance; + DWORD dwObjID; + DWORD dwHow; +} + +struct DIACTIONFORMATA +{ + DWORD dwSize; + DWORD dwActionSize; + DWORD dwDataSize; + DWORD dwNumActions; + DIACTIONA* rgoAction; + GUID guidActionMap; + DWORD dwGenre; + DWORD dwBufferSize; + LONG lAxisMin; + LONG lAxisMax; + HINSTANCE hInstString; + FILETIME ftTimeStamp; + DWORD dwCRC; + CHAR[MAX_PATH] tszActionMap; +} + +struct DIDEVCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDevType; + DWORD dwAxes; + DWORD dwButtons; + DWORD dwPOVs; + DWORD dwFFSamplePeriod; + DWORD dwFFMinTimeResolution; + DWORD dwFirmwareRevision; + DWORD dwHardwareRevision; + DWORD dwFFDriverVersion; +} + +struct DIPROPHEADER +{ + DWORD dwSize; + DWORD dwHeaderSize; + DWORD dwObj; + DWORD dwHow; +} + +struct DIDEVICEOBJECTDATA +{ + DWORD dwOfs; + DWORD dwData; + DWORD dwTimeStamp; + DWORD dwSequence; + UINT* uAppData; +} + +struct DIENVELOPE +{ + DWORD dwSize = DIENVELOPE.sizeof; + DWORD dwAttackLevel; + DWORD dwAttackTime; // Microseconds + DWORD dwFadeLevel; + DWORD dwFadeTime; // Microseconds +} + +struct DIEFFECT +{ + DWORD dwSize = DIEFFECT.sizeof; + DWORD dwFlags; // DIEFF_* + DWORD dwDuration; // Microseconds + DWORD dwSamplePeriod; // Microseconds + DWORD dwGain; + DWORD dwTriggerButton; // or DIEB_NOTRIGGER + DWORD dwTriggerRepeatInterval; // Microseconds + DWORD cAxes; // Number of axes + LPDWORD rgdwAxes; // Array of axes + LPLONG rglDirection; // Array of directions + DIENVELOPE* lpEnvelope; // Optional + DWORD cbTypeSpecificParams; // Size of params + LPVOID lpvTypeSpecificParams; // Pointer to params + DWORD dwStartDelay; // Microseconds +} + +struct DIEFFESCAPE +{ + DWORD dwSize; + DWORD dwCommand; + LPVOID lpvInBuffer; + DWORD cbInBuffer; + LPVOID lpvOutBuffer; + DWORD cbOutBuffer; +} + +struct DIEFFECTINFOA +{ + DWORD dwSize; + GUID guid; + DWORD dwEffType; + DWORD dwStaticParams; + DWORD dwDynamicParams; + CHAR[MAX_PATH] tszName; +} + +struct DIFILEEFFECT +{ + DWORD dwSize; + GUID GuidEffect; + DIEFFECT* lpDiEffect; + CHAR[MAX_PATH] szFriendlyName; +} + +struct DIDEVICEIMAGEINFOA +{ + CHAR[MAX_PATH] tszImagePath; + DWORD dwFlags; + // These are valid if DIDIFT_OVERLAY is present in dwFlags. + DWORD dwViewID; + RECT rcOverlay; + DWORD dwObjID; + DWORD dwcValidPts; + POINT[5] rgptCalloutLine; + RECT rcCalloutRect; + DWORD dwTextAlign; +} + +struct DIDEVICEIMAGEINFOHEADERA +{ + DWORD dwSize; + DWORD dwSizeImageInfo; + DWORD dwcViews; + DWORD dwcButtons; + DWORD dwcAxes; + DWORD dwcPOVs; + DWORD dwBufferSize; + DWORD dwBufferUsed; + DIDEVICEIMAGEINFOA* lprgImageInfoArray; +} + +struct DICONFIGUREDEVICESPARAMSA +{ + DWORD dwSize; + DWORD dwcUsers; + LPSTR lptszUserNames; + DWORD dwcFormats; + DIACTIONFORMATA* lprgFormats; + HWND hwnd; + DICOLORSET dics; + IUnknown lpUnkDDSTarget; +} + +struct DICOLORSET +{ + DWORD dwSize; + DWORD cTextFore; + DWORD cTextHighlight; + DWORD cCalloutLine; + DWORD cCalloutHighlight; + DWORD cBorder; + DWORD cControlFill; + DWORD cHighlightFill; + DWORD cAreaFill; +} + +struct DIMOUSESTATE2 +{ + LONG lX; + LONG lY; + LONG lZ; + BYTE[8] rgbButtons; +} + +struct DIJOYSTATE +{ + LONG lX; /* x-axis position */ + LONG lY; /* y-axis position */ + LONG lZ; /* z-axis position */ + LONG lRx; /* x-axis rotation */ + LONG lRy; /* y-axis rotation */ + LONG lRz; /* z-axis rotation */ + LONG[2] rglSlider; /* extra axes positions */ + DWORD[4]rgdwPOV; /* POV directions */ + BYTE[32]rgbButtons; /* 32 buttons */ +} + +struct DIPROPRANGE +{ + DIPROPHEADER diph; + LONG lMin; + LONG lMax; +} + +interface IDirectInputEffect : IUnknown +{ + HRESULT Initialize(HINSTANCE, DWORD, GUID*); + HRESULT GetEffectGuid(GUID*); + HRESULT GetParameters(DIEFFECT*, DWORD); + HRESULT SetParameters(DIEFFECT*, DWORD); + HRESULT Start(DWORD, DWORD); + HRESULT Stop(); + HRESULT GetEffectStatus(LPDWORD); + HRESULT Download(); + HRESULT Unload(); + HRESULT Escape(DIEFFESCAPE*); +} + +extern(Windows) alias bool function(DIDEVICEINSTANCEA*, LPVOID) LPDIENUMDEVICESCALLBACKA; +extern(Windows) alias bool function(DIDEVICEINSTANCEA*, IDirectInputDevice8A*, DWORD, DWORD, LPVOID) LPDIENUMDEVICESBYSEMANTICSCBA; + +extern(Windows) alias bool function(DIDEVICEOBJECTINSTANCEA *didoi, void* pContext) LPDIENUMDEVICEOBJECTSCALLBACKA; + +extern(Windows) alias bool function(DIEFFECTINFOA*, LPVOID) LPDIENUMEFFECTSCALLBACKA; +extern(Windows) alias bool function(IDirectInputEffect, LPVOID) LPDIENUMCREATEDEFFECTOBJECTSCALLBACK; +extern(Windows) alias bool function(DIFILEEFFECT* , LPVOID) LPDIENUMEFFECTSINFILECALLBACK; +extern(Windows) alias bool function(IUnknown, LPVOID) LPDICONFIGUREDEVICESCALLBACK; + +interface IDirectInputDevice8A : IUnknown +{ + HRESULT GetCapabilities(DIDEVCAPS*); + HRESULT EnumObjects(LPDIENUMDEVICEOBJECTSCALLBACKA, VOID*, DWORD); + HRESULT GetProperty(GUID*, DIPROPHEADER*); + HRESULT SetProperty(GUID*, DIPROPHEADER*); + HRESULT Acquire(); + HRESULT Unacquire(); + HRESULT GetDeviceState(DWORD, LPVOID); + HRESULT GetDeviceData(DWORD, DIDEVICEOBJECTDATA*, LPDWORD, DWORD); + HRESULT SetDataFormat(DIDATAFORMAT*); + HRESULT SetEventNotification(HANDLE); + HRESULT SetCooperativeLevel(HWND, DWORD); + HRESULT GetObjectInfo(DIDEVICEOBJECTINSTANCEA*, DWORD, DWORD); + HRESULT GetDeviceInfo(DIDEVICEINSTANCEA*); + HRESULT RunControlPanel(HWND, DWORD); + HRESULT Initialize(HINSTANCE, DWORD, GUID*); + HRESULT CreateEffect(GUID*, DIEFFECT*, IDirectInputEffect*, IUnknown); + HRESULT EnumEffects(LPDIENUMEFFECTSCALLBACKA, LPVOID, DWORD); + HRESULT GetEffectInfo(DIEFFECTINFOA*, GUID*); + HRESULT GetForceFeedbackState(LPDWORD); + HRESULT SendForceFeedbackCommand(DWORD); + HRESULT EnumCreatedEffectObjects(LPDIENUMCREATEDEFFECTOBJECTSCALLBACK, LPVOID, DWORD); + HRESULT Escape(DIEFFESCAPE*); + HRESULT Poll(); + HRESULT SendDeviceData(DWORD, DIDEVICEOBJECTDATA*, LPDWORD, DWORD); + HRESULT EnumEffectsInFile(LPCSTR, LPDIENUMEFFECTSINFILECALLBACK, LPVOID, DWORD); + HRESULT WriteEffectToFile(LPCSTR, DWORD, DIFILEEFFECT*, DWORD); + HRESULT BuildActionMap(DIACTIONFORMATA*, LPCSTR, DWORD); + HRESULT SetActionMap(DIACTIONFORMATA*, LPCSTR, DWORD); + HRESULT GetImageInfo(DIDEVICEIMAGEINFOHEADERA*); +} +alias IDirectInputDevice8A IDirectInputDevice8; + +interface IDirectInput8A : IUnknown +{ +extern(Windows): + HRESULT CreateDevice(GUID*, IDirectInputDevice8A*, IUnknown); + HRESULT EnumDevices(DWORD, LPDIENUMDEVICESCALLBACKA, LPVOID, DWORD); + HRESULT GetDeviceStatus(GUID*); + HRESULT RunControlPanel(HWND, DWORD); + HRESULT Initialize(HINSTANCE, DWORD); + HRESULT FindDevice(GUID*, LPCSTR, GUID*); + HRESULT EnumDevicesBySemantics(LPCSTR, DIACTIONFORMATA*, LPDIENUMDEVICESBYSEMANTICSCBA, LPVOID, DWORD); + HRESULT ConfigureDevices(LPDICONFIGUREDEVICESCALLBACK, DICONFIGUREDEVICESPARAMSA*, DWORD, LPVOID); +} +alias IDirectInput8A IDirectInput8; + +extern(Windows) HRESULT DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, GUID* riidltf, void** ppvOut, IUnknown punkOuter); + +const GUID IID_IDirectInput8A={0xBF798030, 0x483A, 0x4DA2, [0xAA, 0x99, 0x5D, 0x64, 0xED, 0x36, 0x97, 0x00]}; +alias IID_IDirectInput8A IID_IDirectInput8; +const GUID GUID_SysKeyboard = {0x6F1D2B61, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_SysMouse = {0x6F1D2B60, 0xD5A0, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_XAxis = {0xA36D02E0, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_YAxis = {0xA36D02E1, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_ZAxis = {0xA36D02E2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_RxAxis = {0xA36D02F4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_RyAxis = {0xA36D02F5, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_RzAxis = {0xA36D02E3, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_Slider = {0xA36D02E4, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_Key = {0x55728220, 0xD33C, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; +const GUID GUID_POV = {0xA36D02F2, 0xC9F3, 0x11CF, [0xBF, 0xC7, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00]}; + +enum : uint +{ + DISCL_EXCLUSIVE= 0x00000001, + DISCL_NONEXCLUSIVE= 0x00000002, + DISCL_FOREGROUND= 0x00000004, + DISCL_BACKGROUND= 0x00000008, + DISCL_NOWINKEY= 0x00000010, + + DIPH_DEVICE=0, + DIPH_BYOFFSET=1, + + DI8DEVCLASS_GAMECTRL=4, + DIEDFL_ATTACHEDONLY= 0x00000001, + DIDFT_AXIS= 0x00000003 +} + +enum +{ + SEVERITY_SUCCESS= 0, + SEVERITY_ERROR= 1, + FACILITY_WIN32= 7, + ERROR_READ_FAULT= 30L, + DIENUM_CONTINUE= 1, + DIPH_BYID= 2 +} + +struct DIPROPDWORD +{ + DIPROPHEADER diph; + DWORD dwData; +} + +template MAKE_HRESULT(uint sev, uint fac, uint code) +{ + const HRESULT MAKE_HRESULT = cast(HRESULT)((sev << 31) | (fac << 16) | code); +} + +const HRESULT DIERR_OLDDIRECTINPUTVERSION = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1150); +const HRESULT DIERR_BETADIRECTINPUTVERSION = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1153); +const HRESULT DIERR_BADDRIVERVER = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 119); +const HRESULT DIERR_DEVICENOTREG = 0x80040154; +const HRESULT DIERR_NOTFOUND = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND); +const HRESULT DIERR_OBJECTNOTFOUND = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND); +const HRESULT DIERR_INVALIDPARAM = E_INVALIDARG; +const HRESULT DIERR_NOINTERFACE = E_NOINTERFACE; +const HRESULT DIERR_GENERIC = E_FAIL; +const HRESULT DIERR_OUTOFMEMORY = E_OUTOFMEMORY; +const HRESULT DIERR_UNSUPPORTED = E_NOTIMPL; +const HRESULT DIERR_NOTINITIALIZED = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 21); +const HRESULT DIERR_ALREADYINITIALIZED = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 1247); +const HRESULT DIERR_NOAGGREGATION = CLASS_E_NOAGGREGATION; +const HRESULT DIERR_OTHERAPPHASPRIO = 0x80070005; +const HRESULT DIERR_INPUTLOST = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT); +const HRESULT DIERR_ACQUIRED = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 170); +const HRESULT DIERR_NOTACQUIRED = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_WIN32, 12); +const HRESULT DIERR_READONLY = 0x80070005; +const HRESULT DIERR_HANDLEEXISTS = 0x80070005; +const HRESULT DIERR_INSUFFICIENTPRIVS = 0x80040200; +const HRESULT DIERR_DEVICEFULL = 0x80040201; +const HRESULT DIERR_MOREDATA = 0x80040202; +const HRESULT DIERR_NOTDOWNLOADED = 0x80040203; +const HRESULT DIERR_HASEFFECTS = 0x80040204; +const HRESULT DIERR_NOTEXCLUSIVEACQUIRED = 0x80040205; +const HRESULT DIERR_INCOMPLETEEFFECT = 0x80040206; +const HRESULT DIERR_NOTBUFFERED = 0x80040207; +const HRESULT DIERR_EFFECTPLAYING = 0x80040208; +const HRESULT DIERR_UNPLUGGED = 0x80040209; +const HRESULT DIERR_REPORTFULL = 0x8004020A; +const HRESULT DIERR_MAPFILEFAIL = 0x8004020B; ADDED src/win32/directx/dinput8.def Index: src/win32/directx/dinput8.def ================================================================== --- src/win32/directx/dinput8.def +++ src/win32/directx/dinput8.def @@ -0,0 +1,2 @@ +IMPORTS +_DirectInput8Create@20 = dinput8.DirectInput8Create ADDED src/win32/directx/dsound8.d Index: src/win32/directx/dsound8.d ================================================================== --- src/win32/directx/dsound8.d +++ src/win32/directx/dsound8.d @@ -0,0 +1,228 @@ +module win32.directx.dsound8; + +//import tango.sys.win32.Types; +import win32.windows; + +alias GUID* LPCGUID; + +interface IUnknown +{ + HRESULT QueryInterface(IID* riid, void** pvObject); + ULONG AddRef(); + ULONG Release(); +} + +alias IUnknown LPUNKNOWN; + +interface IDirectSound : IUnknown +{ + extern(Windows): + + // IDirectSound methods + HRESULT CreateSoundBuffer (LPCDSBUFFERDESC pcDSBufferDesc, LPDIRECTSOUNDBUFFER *ppDSBuffer, LPUNKNOWN pUnkOuter); + HRESULT GetCaps (LPDSCAPS pDSCaps); + HRESULT DuplicateSoundBuffer (LPDIRECTSOUNDBUFFER pDSBufferOriginal, LPDIRECTSOUNDBUFFER *ppDSBufferDuplicate); + HRESULT SetCooperativeLevel (HWND hwnd, DWORD dwLevel); + HRESULT Compact (); + HRESULT GetSpeakerConfig (LPDWORD pdwSpeakerConfig); + HRESULT SetSpeakerConfig (DWORD dwSpeakerConfig); + HRESULT Initialize (LPCGUID pcGuidDevice); +} + +alias IDirectSound LPDIRECTSOUND; + +interface IDirectSound8 : IDirectSound +{ + extern(Windows): + + // IDirectSound8 methods + HRESULT VerifyCertification (LPDWORD pdwCertified); +} + +alias IDirectSound8 LPDIRECTSOUND8; + +interface IDirectSoundBuffer : IUnknown +{ + extern(Windows): + + // IDirectSoundBuffer methods + HRESULT GetCaps (LPDSBCAPS pDSBufferCaps); + HRESULT GetCurrentPosition (LPDWORD pdwCurrentPlayCursor, LPDWORD pdwCurrentWriteCursor); + HRESULT GetFormat (LPWAVEFORMATEX pwfxFormat, DWORD dwSizeAllocated, LPDWORD pdwSizeWritten); + HRESULT GetVolume (LPLONG plVolume); + HRESULT GetPan (LPLONG plPan); + HRESULT GetFrequency (LPDWORD pdwFrequency); + HRESULT GetStatus (LPDWORD pdwStatus); + HRESULT Initialize (LPDIRECTSOUND pDirectSound, LPCDSBUFFERDESC pcDSBufferDesc); + HRESULT Lock (DWORD dwOffset, DWORD dwBytes, LPVOID *ppvAudioPtr1, LPDWORD pdwAudioBytes1, + LPVOID *ppvAudioPtr2, LPDWORD pdwAudioBytes2, DWORD dwFlags); + HRESULT Play (DWORD dwReserved1, DWORD dwPriority, DWORD dwFlags); + HRESULT SetCurrentPosition (DWORD dwNewPosition); + HRESULT SetFormat (LPCWAVEFORMATEX pcfxFormat); + HRESULT SetVolume (LONG lVolume); + HRESULT SetPan (LONG lPan); + HRESULT SetFrequency (DWORD dwFrequency); + HRESULT Stop (); + HRESULT Unlock (LPVOID pvAudioPtr1, DWORD dwAudioBytes1, LPVOID pvAudioPtr2, DWORD dwAudioBytes2); + HRESULT Restore (); +} + +alias IDirectSoundBuffer LPDIRECTSOUNDBUFFER; + +interface IDirectSound3DListener : IUnknown +{ + extern(Windows): + + // IDirectSound3DListener methods + HRESULT GetAllParameters (LPDS3DLISTENER pListener); + HRESULT GetDistanceFactor (D3DVALUE* pflDistanceFactor); + HRESULT GetDopplerFactor (D3DVALUE* pflDopplerFactor); + HRESULT GetOrientation (D3DVECTOR* pvOrientFront, D3DVECTOR* pvOrientTop); + HRESULT GetPosition (D3DVECTOR* pvPosition); + HRESULT GetRolloffFactor (D3DVALUE* pflRolloffFactor); + HRESULT GetVelocity (D3DVECTOR* pvVelocity); + HRESULT SetAllParameters (LPCDS3DLISTENER pcListener, DWORD dwApply); + HRESULT SetDistanceFactor (D3DVALUE flDistanceFactor, DWORD dwApply); + HRESULT SetDopplerFactor (D3DVALUE flDopplerFactor, DWORD dwApply); + HRESULT SetOrientation (D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, + D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply); + HRESULT SetPosition (D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply); + HRESULT SetRolloffFactor (D3DVALUE flRolloffFactor, DWORD dwApply); + HRESULT SetVelocity (D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply); + HRESULT CommitDeferredSettings (); +} + +struct WAVEFORMATEX +{ + ushort wFormatTag; + ushort nChannels; + uint nSamplesPerSec; + uint nAvgBytesPerSec; + ushort nBlockAlign; + ushort wBitsPerSample; + ushort cbSize; +} + +alias WAVEFORMATEX* LPWAVEFORMATEX, LPCWAVEFORMATEX; + +enum : uint +{ + WAVE_FORMAT_PCM = 1 +} + +struct DSCBUFFERDESC +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; + DWORD dwFXCount; + LPDSCEFFECTDESC lpDSCFXDesc; +} + +alias DSCBUFFERDESC* LPDSCBUFFERDESC; + +struct DSBUFFERDESC +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwReserved; + LPWAVEFORMATEX lpwfxFormat; + GUID guid3DAlgorithm; +} + +alias DSBUFFERDESC* LPCDSBUFFERDESC; + +struct DSCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwMinSecondarySampleRate; + DWORD dwMaxSecondarySampleRate; + DWORD dwPrimaryBuffers; + DWORD dwMaxHwMixingAllBuffers; + DWORD dwMaxHwMixingStaticBuffers; + DWORD dwMaxHwMixingStreamingBuffers; + DWORD dwFreeHwMixingAllBuffers; + DWORD dwFreeHwMixingStaticBuffers; + DWORD dwFreeHwMixingStreamingBuffers; + DWORD dwMaxHw3DAllBuffers; + DWORD dwMaxHw3DStaticBuffers; + DWORD dwMaxHw3DStreamingBuffers; + DWORD dwFreeHw3DAllBuffers; + DWORD dwFreeHw3DStaticBuffers; + DWORD dwFreeHw3DStreamingBuffers; + DWORD dwTotalHwMemBytes; + DWORD dwFreeHwMemBytes; + DWORD dwMaxContigFreeHwMemBytes; + DWORD dwUnlockTransferRateHwBuffers; + DWORD dwPlayCpuOverheadSwBuffers; + DWORD dwReserved1; + DWORD dwReserved2; +} + +alias DSCAPS* LPDSCAPS; + +struct DSBCAPS +{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwBufferBytes; + DWORD dwUnlockTransferRate; + DWORD dwPlayCpuOverhead; +} + +alias DSBCAPS *LPDSBCAPS; + +struct DSCEFFECTDESC +{ + DWORD dwSize; + DWORD dwFlags; + GUID guidDSCFXClass; + GUID guidDSCFXInstance; + DWORD dwReserved1; + DWORD dwReserved2; +} + +alias DSCEFFECTDESC *LPDSCEFFECTDESC; + +struct DS3DLISTENER +{ + DWORD dwSize; + D3DVECTOR vPosition; + D3DVECTOR vVelocity; + D3DVECTOR vOrientFront; + D3DVECTOR vOrientTop; + D3DVALUE flDistanceFactor; + D3DVALUE flRolloffFactor; + D3DVALUE flDopplerFactor; +} + +alias DS3DLISTENER *LPDS3DLISTENER, LPCDS3DLISTENER; + +alias float D3DVALUE; + +struct D3DVECTOR +{ + float x; + float y; + float z; +} + +extern(Windows) export HRESULT DirectSoundCreate8(LPCGUID pcGuidDevice, LPDIRECTSOUND8 *ppDS8, LPUNKNOWN pUnkOuter); + +const DSSCL_PRIORITY = 0x00000002; +const DSBCAPS_PRIMARYBUFFER = 0x00000001; +const DSBCAPS_CTRL3D = 0x00000010; +const DSBCAPS_GETCURRENTPOSITION2 = 0x00010000; +const DSBCAPS_LOCDEFER = 0x00040000; +const DSBPLAY_LOOPING = 0x00000001; +const DSBSTATUS_PLAYING = 0x00000001; +const DSBCAPS_CTRLFREQUENCY = 0x00000020; +const DSBCAPS_CTRLPAN = 0x00000040; +const DSBCAPS_CTRLVOLUME = 0x00000080; +const DSBLOCK_ENTIREBUFFER = 0x00000002; + +const GUID IID_IDirectSound3DListener8 = {0x279AFA84,0x4981,0x11CE,[0xA5, 0x21, 0x00, 0x20, 0xAF, 0x0B, 0xE5, 0x60]}; ADDED src/win32/directx/dsound8.def Index: src/win32/directx/dsound8.def ================================================================== --- src/win32/directx/dsound8.def +++ src/win32/directx/dsound8.def @@ -0,0 +1,2 @@ +IMPORTS +_DirectSoundCreate8@12 = dsound.DirectSoundCreate8 ADDED src/win32/directx/dxerr.d Index: src/win32/directx/dxerr.d ================================================================== --- src/win32/directx/dxerr.d +++ src/win32/directx/dxerr.d @@ -0,0 +1,55 @@ +/***********************************************************************\ +* dxerr.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.dxerr; + +import win32.windows; + +pragma(lib, "dxerr.lib"); + +extern (Windows) { + CHAR* DXGetErrorStringA(HRESULT hr); + WCHAR* DXGetErrorStringW(HRESULT hr); + CHAR* DXGetErrorDescriptionA(HRESULT hr); + WCHAR* DXGetErrorDescriptionW(HRESULT hr); + HRESULT DXTraceA(CHAR* strFile, DWORD dwLine, HRESULT hr, CHAR* strMsg, + BOOL bPopMsgBox); + HRESULT DXTraceW(CHAR* strFile, DWORD dwLine, HRESULT hr, WCHAR* strMsg, + BOOL bPopMsgBox); +} + +version (Unicode) { + alias DXGetErrorStringW DXGetErrorString; + alias DXGetErrorDescriptionW DXGetErrorDescription; + alias DXTraceW DXTrace; +} else { + alias DXGetErrorStringA DXGetErrorString; + alias DXGetErrorDescriptionA DXGetErrorDescription; + alias DXTraceA DXTrace; +} + +debug (dxerr) { + HRESULT DXTRACE_MSG(TCHAR* str) { + return DXTrace(__FILE__, __LINE__, 0, str, false); + } + HRESULT DXTRACE_ERR(TCHAR* str, HRESULT hr) { + return DXTrace(__FILE__, __LINE__, hr, str, false); + } + HRESULT DXTRACE_ERR_MSGBOX(TCHAR* str, HRESULT hr) { + return DXTrace(__FILE__, __LINE__, hr, str, true); + } +} else { + HRESULT DXTRACE_MSG(TCHAR* str) { + return 0; + } + HRESULT DXTRACE_ERR(TCHAR* str, HRESULT hr) { + return hr; + } + HRESULT DXTRACE_ERR_MSGBOX(TCHAR* str, HRESULT hr) { + return hr; + } +} ADDED src/win32/directx/dxerr8.d Index: src/win32/directx/dxerr8.d ================================================================== --- src/win32/directx/dxerr8.d +++ src/win32/directx/dxerr8.d @@ -0,0 +1,68 @@ +/***********************************************************************\ +* dxerr8.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.dxerr8; + +/* + dxerr8.d - Header file for the DirectX 8 Error API + + Written by Filip Navara + Ported to D by James Pelcis + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +private import win32.windef; + +extern (Windows) { + char* DXGetErrorString8A (HRESULT); + WCHAR* DXGetErrorString8W (HRESULT); + char* DXGetErrorDescription8A (HRESULT); + WCHAR* DXGetErrorDescription8W (HRESULT); + HRESULT DXTraceA (char*, DWORD, HRESULT, char*, BOOL); + HRESULT DXTraceW (char*, DWORD, HRESULT, WCHAR*, BOOL); +} + +version (Unicode) { + alias DXGetErrorString8W DXGetErrorString8; + alias DXGetErrorDescription8W DXGetErrorDescription8; + alias DXTraceW DXTrace; +} else { + alias DXGetErrorString8A DXGetErrorString8; + alias DXGetErrorDescription8A DXGetErrorDescription8; + alias DXTraceA DXTrace; +} + +debug (dxerr) { + HRESULT DXTRACE_MSG(TCHAR* str) { + return DXTrace(__FILE__, __LINE__, 0, str, FALSE); + } + + HRESULT DXTRACE_ERR(TCHAR* str, HRESULT hr) { + return DXTrace(__FILE__, __LINE__, hr, str, TRUE); + } + + HRESULT DXTRACE_ERR_NOMSGBOX (WCHAR* str, HRESULT hr) { + return DXTrace(__FILE__, __LINE__, hr, str, FALSE); + } +} else { + HRESULT DXTRACE_MSG(TCHAR* str) { + return 0; + } + + HRESULT DXTRACE_ERR(TCHAR* str, HRESULT hr) { + return hr; + } + + HRESULT DXTRACE_ERR_NOMSGBOX(TCHAR* str, HRESULT hr) { + return hr; + } +} ADDED src/win32/directx/dxerr9.d Index: src/win32/directx/dxerr9.d ================================================================== --- src/win32/directx/dxerr9.d +++ src/win32/directx/dxerr9.d @@ -0,0 +1,69 @@ +/***********************************************************************\ +* dxerr9.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.dxerr9; + +/* + dxerr9.h - Header file for the DirectX 9 Error API + + Written by Filip Navara + Ported to D by James Pelcis + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +*/ + +private import win32.windef; + +extern (Windows) { + char* DXGetErrorString9A(HRESULT); + WCHAR* DXGetErrorString9W(HRESULT); + char* DXGetErrorDescription9A(HRESULT); + WCHAR* DXGetErrorDescription9W(HRESULT); + HRESULT DXTraceA(char*, DWORD, HRESULT, char*, BOOL); + HRESULT DXTraceW(char*, DWORD, HRESULT, WCHAR*, BOOL); +} + +version (Unicode) { + alias DXGetErrorString9W DXGetErrorString9; + alias DXGetErrorDescription9W DXGetErrorDescription9; + alias DXTraceW DXTrace; +} else { + alias DXGetErrorString9A DXGetErrorString9; + alias DXGetErrorDescription9A DXGetErrorDescription9; + alias DXTraceA DXTrace; +} + +debug (dxerr) { + HRESULT DXTRACE_MSG(TCHAR* str) { + return DXTrace(__FILE__, cast(DWORD)__LINE__, 0, str, FALSE); + } + + HRESULT DXTRACE_ERR(TCHAR* str, HRESULT hr) { + return DXTrace(__FILE__, cast(DWORD)__LINE__, hr, str, FALSE); + } + + HRESULT DXTRACE_ERR_NOMSGBOX(TCHAR* str, HRESULT hr) { + return DXTrace(__FILE__, cast(DWORD)__LINE__, hr, str, TRUE); + } +} else { + HRESULT DXTRACE_MSG(TCHAR* str) { + return 0; + } + + HRESULT DXTRACE_ERR(TCHAR* str, HRESULT hr) { + return hr; + } + + HRESULT DXTRACE_ERR_NOMSGBOX(TCHAR* str, HRESULT hr) { + return hr; + } +} ADDED src/win32/directx/dxgi.d Index: src/win32/directx/dxgi.d ================================================================== --- src/win32/directx/dxgi.d +++ src/win32/directx/dxgi.d @@ -0,0 +1,211 @@ +/***********************************************************************\ +* dxgi.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.dxgi; + +private import win32.windows; + +private import win32.directx.dxgitype; + +enum { + DXGI_CPU_ACCESS_NONE = 0, + DXGI_CPU_ACCESS_DYNAMIC = 1, + DXGI_CPU_ACCESS_READ_WRITE = 2, + DXGI_CPU_ACCESS_SCRATCH = 3, + DXGI_CPU_ACCESS_FIELD = 15 +} + +enum { + DXGI_USAGE_SHADER_INPUT = 0b00_00010000, + DXGI_USAGE_RENDER_TARGET_OUTPUT = 0b00_00100000, + DXGI_USAGE_BACK_BUFFER = 0b00_01000000, + DXGI_USAGE_SHARED = 0b00_10000000, + DXGI_USAGE_READ_ONLY = 0b01_00000000, + DXGI_USAGE_DISCARD_ON_PRESENT = 0b10_00000000, +} +alias UINT DXGI_USAGE; + +struct DXGI_FRAME_STATISTICS { + UINT PresentCount; + UINT PresentRefreshCount; + UINT SyncRefreshCount; + LARGE_INTEGER SyncQPCTime; + LARGE_INTEGER SyncGPUTime; +} + +struct DXGI_MAPPED_RECT { + INT Pitch; + BYTE* pBits; +} + +struct DXGI_ADAPTER_DESC { + WCHAR[128] Description; + UINT VendorId; + UINT DeviceId; + UINT SubSysId; + UINT Revision; + SIZE_T DedicatedVideoMemory; + SIZE_T DedicatedSystemMemory; + SIZE_T SharedSystemMemory; + LUID AdapterLuid; +} + +struct DXGI_OUTPUT_DESC { + WCHAR[32] DeviceName; + RECT DesktopCoordinates; + BOOL AttachedToDesktop; + DXGI_MODE_ROTATION Rotation; + HMONITOR Monitor; +} + +struct DXGI_SHARED_RESOURCE { + HANDLE Handle; +} + +enum { + DXGI_RESOURCE_PRIORITY_MINIMUM = 0x28000000, + DXGI_RESOURCE_PRIORITY_LOW = 0x50000000, + DXGI_RESOURCE_PRIORITY_NORMAL = 0x78000000, + DXGI_RESOURCE_PRIORITY_HIGH = 0xa0000000, + DXGI_RESOURCE_PRIORITY_MAXIMUM = 0xc8000000 +} + +enum DXGI_RESIDENCY { + DXGI_RESIDENCY_FULLY_RESIDENT = 1, + DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY = 2, + DXGI_RESIDENCY_EVICTED_TO_DISK = 3 +} + +struct DXGI_SURFACE_DESC { + UINT Width; + UINT Height; + DXGI_FORMAT Format; + DXGI_SAMPLE_DESC SampleDesc; +} + +enum DXGI_SWAP_EFFECT { + DXGI_SWAP_EFFECT_DISCARD = 0, + DXGI_SWAP_EFFECT_SEQUENTIAL = 1 +} + +enum DXGI_SWAP_CHAIN_FLAG { + DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1, + DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH = 2 +} + +struct DXGI_SWAP_CHAIN_DESC { + DXGI_MODE_DESC BufferDesc; + DXGI_SAMPLE_DESC SampleDesc; + DXGI_USAGE BufferUsage; + UINT BufferCount; + HWND OutputWindow; + BOOL Windowed; + DXGI_SWAP_EFFECT SwapEffect; + UINT Flags; +} + +interface IDXGIObject : IUnknown { + extern(Windows) : + HRESULT SetPrivateData(REFGUID Name, UINT DataSize, void* pData); + HRESULT SetPrivateDataInterface(REFGUID Name, IUnknown pUnknown); + HRESULT GetPrivateData(REFGUID Name, UINT* pDataSize, void* pData); + HRESULT GetParent(REFIID riid, void** ppParent); +} + +interface IDXGIDeviceSubObject : IDXGIObject { + extern(Windows) : + HRESULT GetDevice(REFIID riid, void** ppDevice); +} + +interface IDXGIResource : IDXGIDeviceSubObject { + extern(Windows) : + HRESULT GetSharedHandle(HANDLE* pSharedHandle); + HRESULT GetUsage(DXGI_USAGE* pUsage); + HRESULT SetEvictionPriority(UINT EvictionPriority); + HRESULT GetEvictionPriority(UINT* pEvictionPriority); +} + +interface IDXGISurface : IDXGIDeviceSubObject { + extern(Windows) : + HRESULT GetDesc(DXGI_SURFACE_DESC* pDesc); + HRESULT Map(DXGI_MAPPED_RECT* pLockedRect, UINT MapFlags); + HRESULT Unmap(); +} + +interface IDXGIAdapter : IDXGIObject { + extern(Windows) : + HRESULT EnumOutputs(UINT Output, IDXGIOutput* ppOutput); + HRESULT GetDesc(DXGI_ADAPTER_DESC* pDesc); + HRESULT CheckInterfaceSupport(REFGUID InterfaceName, LARGE_INTEGER* pUMDVersion); +} + +interface IDXGIOutput : IDXGIObject { + extern(Windows) : + HRESULT GetDesc(DXGI_OUTPUT_DESC* pDesc); + HRESULT GetDisplayModeList(DXGI_FORMAT EnumFormat, UINT Flags, UINT* pNumModes, DXGI_MODE_DESC* pDesc); + HRESULT FindClosestMatchingMode(DXGI_MODE_DESC* pModeToMatch, DXGI_MODE_DESC* pClosestMatch, IUnknown pConcernedDevice); + HRESULT WaitForVBlank(); + HRESULT TakeOwnership(IUnknown pDevice, BOOL Exclusive); + void ReleaseOwnership(); + HRESULT GetGammaControlCapabilities(DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps); + HRESULT SetGammaControl(DXGI_GAMMA_CONTROL* pArray); + HRESULT GetGammaControl(DXGI_GAMMA_CONTROL* pArray); + HRESULT SetDisplaySurface(IDXGISurface pScanoutSurface); + HRESULT GetDisplaySurfaceData(IDXGISurface pDestination); + HRESULT GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats); +} + +const DXGI_MAX_SWAP_CHAIN_BUFFERS = 16; + +enum { + DXGI_PRESENT_TEST = 0x00000001, + DXGI_PRESENT_DO_NOT_SEQUENCE = 0x00000002, + DXGI_PRESENT_RESTART = 0x00000004 +} + +interface IDXGISwapChain : IDXGIDeviceSubObject { + extern(Windows) : + HRESULT Present(UINT SyncInterval, UINT Flags); + HRESULT GetBuffer(UINT Buffer, REFIID riid, void** ppSurface); + HRESULT SetFullscreenState(BOOL Fullscreen, IDXGIOutput pTarget); + HRESULT GetFullscreenState(BOOL* pFullscreen, IDXGIOutput* ppTarget); + HRESULT GetDesc(DXGI_SWAP_CHAIN_DESC* pDesc); + HRESULT ResizeBuffers(UINT BufferCount, UINT Width, UINT Height, DXGI_FORMAT NewFormat, UINT SwapChainFlags); + HRESULT ResizeTarget(DXGI_MODE_DESC* pNewTargetParameters); + HRESULT GetContainingOutput(IDXGIOutput* ppOutput); + HRESULT GetFrameStatistics(DXGI_FRAME_STATISTICS* pStats); + HRESULT GetLastPresentCount(UINT* pLastPresentCount); +} + +interface IDXGIFactory : IDXGIObject { + extern(Windows) : + HRESULT EnumAdapters(UINT Adapter, IDXGIAdapter* ppAdapter); + HRESULT MakeWindowAssociation(HWND WindowHandle, UINT Flags); + HRESULT GetWindowAssociation(HWND* pWindowHandle); + HRESULT CreateSwapChain(IUnknown pDevice, DXGI_SWAP_CHAIN_DESC* pDesc, IDXGISwapChain* ppSwapChain); + HRESULT CreateSoftwareAdapter(HMODULE Module, IDXGIAdapter* ppAdapter); +} + +interface IDXGIDevice : IDXGIObject { + extern(Windows) : + HRESULT GetAdapter(IDXGIAdapter* pAdapter); + HRESULT CreateSurface(DXGI_SURFACE_DESC* pDesc, UINT NumSurfaces, DXGI_USAGE Usage, DXGI_SHARED_RESOURCE* pSharedResource, IDXGISurface* ppSurface); + HRESULT QueryResourceResidency(IUnknown* ppResources, DXGI_RESIDENCY* pResidencyStatus, UINT NumResources); + HRESULT SetGPUThreadPriority(INT Priority); + HRESULT GetGPUThreadPriority(INT* pPriority); +} + +extern(C) const GUID IID_IDXGIObject = {0xaec22fb8, 0x76f3, 0x4639, [0x9b, 0xe0, 0x28, 0xeb, 0x43, 0xa6, 0x7a, 0x2e]}; +extern(C) const GUID IID_IDXGIDeviceSubObject = {0x3d3e0379, 0xf9de, 0x4d58, [0xbb, 0x6c, 0x18, 0xd6, 0x29, 0x92, 0xf1, 0xa6]}; +extern(C) const GUID IID_IDXGIResource = {0x035f3ab4, 0x482e, 0x4e50, [0xb4, 0x1f, 0x8a, 0x7f, 0x8b, 0xd8, 0x96, 0x0b]}; +extern(C) const GUID IID_IDXGISurface = {0xcafcb56c, 0x6ac3, 0x4889, [0xbf, 0x47, 0x9e, 0x23, 0xbb, 0xd2, 0x60, 0xec]}; +extern(C) const GUID IID_IDXGIAdapter = {0x2411e7e1, 0x12ac, 0x4ccf, [0xbd, 0x14, 0x97, 0x98, 0xe8, 0x53, 0x4d, 0xc0]}; +extern(C) const GUID IID_IDXGIOutput = {0xae02eedb, 0xc735, 0x4690, [0x8d, 0x52, 0x5a, 0x8d, 0xc2, 0x02, 0x13, 0xaa]}; +extern(C) const GUID IID_IDXGISwapChain = {0x310d36a0, 0xd2e7, 0x4c0a, [0xaa, 0x04, 0x6a, 0x9d, 0x23, 0xb8, 0x88, 0x6a]}; +extern(C) const GUID IID_IDXGIFactory = {0x7b7166ec, 0x21c7, 0x44ae, [0xb2, 0x1a, 0xc9, 0xae, 0x32, 0x1a, 0xe3, 0x69]}; +extern(C) const GUID IID_IDXGIDevice = {0x54ec77fa, 0x1377, 0x44e6, [0x8c, 0x32, 0x88, 0xfd, 0x5f, 0x44, 0xc8, 0x4c]}; + ADDED src/win32/directx/dxgitype.d Index: src/win32/directx/dxgitype.d ================================================================== --- src/win32/directx/dxgitype.d +++ src/win32/directx/dxgitype.d @@ -0,0 +1,195 @@ +/***********************************************************************\ +* dxgitype.d * +* * +* Windows API header module * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.directx.dxgitype; + +private import win32.windows; + +const _FACDXGI = 0x87a; + +HRESULT MAKE_DXGI_HRESULT(T)(T code) { + return MAKE_HRESULT(1, _FACDXGI, code); +} + +HRESULT MAKE_DXGI_STATUS(T)(T code) { + return MAKE_HRESULT(0, _FACDXGI, code); +} + +const HRESULT DXGI_STATUS_OCCLUDED = MAKE_DXGI_STATUS(1); +const HRESULT DXGI_STATUS_CLIPPED = MAKE_DXGI_STATUS(2); +const HRESULT DXGI_STATUS_NO_REDIRECTION = MAKE_DXGI_STATUS(4); +const HRESULT DXGI_STATUS_NO_DESKTOP_ACCESS = MAKE_DXGI_STATUS(5); +const HRESULT DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE = MAKE_DXGI_STATUS(6); +const HRESULT DXGI_STATUS_MODE_CHANGED = MAKE_DXGI_STATUS(7); +const HRESULT DXGI_STATUS_MODE_CHANGE_IN_PROGRESS = MAKE_DXGI_STATUS(8); +const HRESULT DXGI_ERROR_INVALID_CALL = MAKE_DXGI_HRESULT( 1); +const HRESULT DXGI_ERROR_NOT_FOUND = MAKE_DXGI_HRESULT( 2); +const HRESULT DXGI_ERROR_MORE_DATA = MAKE_DXGI_HRESULT( 3); +const HRESULT DXGI_ERROR_UNSUPPORTED = MAKE_DXGI_HRESULT( 4); +const HRESULT DXGI_ERROR_DEVICE_REMOVED = MAKE_DXGI_HRESULT( 5); +const HRESULT DXGI_ERROR_DEVICE_HUNG = MAKE_DXGI_HRESULT( 6); +const HRESULT DXGI_ERROR_DEVICE_RESET = MAKE_DXGI_HRESULT( 7); +const HRESULT DXGI_ERROR_WAS_STILL_DRAWING = MAKE_DXGI_HRESULT(10); +const HRESULT DXGI_ERROR_FRAME_STATISTICS_DISJOINT = MAKE_DXGI_HRESULT(11); +const HRESULT DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE = MAKE_DXGI_HRESULT(12); +const HRESULT DXGI_ERROR_DRIVER_INTERNAL_ERROR = MAKE_DXGI_HRESULT(32); +const HRESULT DXGI_ERROR_NONEXCLUSIVE = MAKE_DXGI_HRESULT(33); +const HRESULT DXGI_ERROR_NOT_CURRENTLY_AVAILABLE = MAKE_DXGI_HRESULT(34); +const HRESULT DXGI_FORMAT_DEFINED = 1; + +enum DXGI_FORMAT { + DXGI_FORMAT_UNKNOWN = 0, + DXGI_FORMAT_R32G32B32A32_TYPELESS, + DXGI_FORMAT_R32G32B32A32_FLOAT, + DXGI_FORMAT_R32G32B32A32_UINT, + DXGI_FORMAT_R32G32B32A32_SINT, + DXGI_FORMAT_R32G32B32_TYPELESS, + DXGI_FORMAT_R32G32B32_FLOAT, + DXGI_FORMAT_R32G32B32_UINT, + DXGI_FORMAT_R32G32B32_SINT, + DXGI_FORMAT_R16G16B16A16_TYPELESS, + DXGI_FORMAT_R16G16B16A16_FLOAT, + DXGI_FORMAT_R16G16B16A16_UNORM, + DXGI_FORMAT_R16G16B16A16_UINT, + DXGI_FORMAT_R16G16B16A16_SNORM, + DXGI_FORMAT_R16G16B16A16_SINT, + DXGI_FORMAT_R32G32_TYPELESS, + DXGI_FORMAT_R32G32_FLOAT, + DXGI_FORMAT_R32G32_UINT, + DXGI_FORMAT_R32G32_SINT, + DXGI_FORMAT_R32G8X24_TYPELESS, + DXGI_FORMAT_D32_FLOAT_S8X24_UINT, + DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, + DXGI_FORMAT_X32_TYPELESS_G8X24_UINT, + DXGI_FORMAT_R10G10B10A2_TYPELESS, + DXGI_FORMAT_R10G10B10A2_UNORM, + DXGI_FORMAT_R10G10B10A2_UINT, + DXGI_FORMAT_R11G11B10_FLOAT, + DXGI_FORMAT_R8G8B8A8_TYPELESS, + DXGI_FORMAT_R8G8B8A8_UNORM, + DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, + DXGI_FORMAT_R8G8B8A8_UINT, + DXGI_FORMAT_R8G8B8A8_SNORM, + DXGI_FORMAT_R8G8B8A8_SINT, + DXGI_FORMAT_R16G16_TYPELESS, + DXGI_FORMAT_R16G16_FLOAT, + DXGI_FORMAT_R16G16_UNORM, + DXGI_FORMAT_R16G16_UINT, + DXGI_FORMAT_R16G16_SNORM, + DXGI_FORMAT_R16G16_SINT, + DXGI_FORMAT_R32_TYPELESS, + DXGI_FORMAT_D32_FLOAT, + DXGI_FORMAT_R32_FLOAT, + DXGI_FORMAT_R32_UINT, + DXGI_FORMAT_R32_SINT, + DXGI_FORMAT_R24G8_TYPELESS, + DXGI_FORMAT_D24_UNORM_S8_UINT, + DXGI_FORMAT_R24_UNORM_X8_TYPELESS, + DXGI_FORMAT_X24_TYPELESS_G8_UINT, + DXGI_FORMAT_R8G8_TYPELESS, + DXGI_FORMAT_R8G8_UNORM, + DXGI_FORMAT_R8G8_UINT, + DXGI_FORMAT_R8G8_SNORM, + DXGI_FORMAT_R8G8_SINT, + DXGI_FORMAT_R16_TYPELESS, + DXGI_FORMAT_R16_FLOAT, + DXGI_FORMAT_D16_UNORM, + DXGI_FORMAT_R16_UNORM, + DXGI_FORMAT_R16_UINT, + DXGI_FORMAT_R16_SNORM, + DXGI_FORMAT_R16_SINT, + DXGI_FORMAT_R8_TYPELESS, + DXGI_FORMAT_R8_UNORM, + DXGI_FORMAT_R8_UINT, + DXGI_FORMAT_R8_SNORM, + DXGI_FORMAT_R8_SINT, + DXGI_FORMAT_A8_UNORM, + DXGI_FORMAT_R1_UNORM, + DXGI_FORMAT_R9G9B9E5_SHAREDEXP, + DXGI_FORMAT_R8G8_B8G8_UNORM, + DXGI_FORMAT_G8R8_G8B8_UNORM, + DXGI_FORMAT_BC1_TYPELESS, + DXGI_FORMAT_BC1_UNORM, + DXGI_FORMAT_BC1_UNORM_SRGB, + DXGI_FORMAT_BC2_TYPELESS, + DXGI_FORMAT_BC2_UNORM, + DXGI_FORMAT_BC2_UNORM_SRGB, + DXGI_FORMAT_BC3_TYPELESS, + DXGI_FORMAT_BC3_UNORM, + DXGI_FORMAT_BC3_UNORM_SRGB, + DXGI_FORMAT_BC4_TYPELESS, + DXGI_FORMAT_BC4_UNORM, + DXGI_FORMAT_BC4_SNORM, + DXGI_FORMAT_BC5_TYPELESS, + DXGI_FORMAT_BC5_UNORM, + DXGI_FORMAT_BC5_SNORM, + DXGI_FORMAT_B5G6R5_UNORM, + DXGI_FORMAT_B5G5R5A1_UNORM, + DXGI_FORMAT_B8G8R8A8_UNORM, + DXGI_FORMAT_B8G8R8X8_UNORM, + DXGI_FORMAT_FORCE_UINT = 0xffffffff +} + +struct DXGI_RGB { + float Red; + float Green; + float Blue; +} + +struct DXGI_GAMMA_CONTROL { + DXGI_RGB Scale; + DXGI_RGB Offset; + DXGI_RGB[1025] GammaCurve; +} + +struct DXGI_GAMMA_CONTROL_CAPABILITIES { + BOOL ScaleAndOffsetSupported; + float MaxConvertedValue; + float MinConvertedValue; + UINT NumGammaControlPoints; + float[1025] ControlPointPositions; +} + +struct DXGI_RATIONAL { + UINT Numerator; + UINT Denominator; +} + +enum DXGI_MODE_SCANLINE_ORDER { + DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED = 0, + DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE = 1, + DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST = 2, + DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST = 3 +} + +enum DXGI_MODE_SCALING { + DXGI_MODE_SCALING_UNSPECIFIED = 0, + DXGI_MODE_SCALING_CENTERED = 1, + DXGI_MODE_SCALING_STRETCHED = 2 +} + +enum DXGI_MODE_ROTATION { + DXGI_MODE_ROTATION_UNSPECIFIED = 0, + DXGI_MODE_ROTATION_IDENTITY = 1, + DXGI_MODE_ROTATION_ROTATE90 = 2, + DXGI_MODE_ROTATION_ROTATE180 = 3, + DXGI_MODE_ROTATION_ROTATE270 = 4 +} + +struct DXGI_MODE_DESC { + UINT Width; + UINT Height; + DXGI_RATIONAL RefreshRate; + DXGI_FORMAT Format; + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering; + DXGI_MODE_SCALING Scaling; +} + +struct DXGI_SAMPLE_DESC { + UINT Count; + UINT Quality; +} Index: src/win32/dlgs.d ================================================================== --- src/win32/dlgs.d +++ src/win32/dlgs.d @@ -1,191 +1,191 @@ -/***********************************************************************\ -* dlgs.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.dlgs; - -private import win32.windef; - -enum : ushort { - FILEOPENORD = 1536, - MULTIFILEOPENORD = 1537, - PRINTDLGORD = 1538, - PRNSETUPDLGORD = 1539, - FINDDLGORD = 1540, - REPLACEDLGORD = 1541, - FONTDLGORD = 1542, - FORMATDLGORD31 = 1543, - FORMATDLGORD30 = 1544, - PAGESETUPDLGORD = 1546 -} - -enum : int { - ctlFirst = 0x400, - ctlLast = 0x4ff, - chx1 = 0x410, - chx2 = 0x411, - chx3 = 0x412, - chx4 = 0x413, - chx5 = 0x414, - chx6 = 0x415, - chx7 = 0x416, - chx8 = 0x417, - chx9 = 0x418, - chx10 = 0x419, - chx11 = 0x41a, - chx12 = 0x41b, - chx13 = 0x41c, - chx14 = 0x41d, - chx15 = 0x41e, - chx16 = 0x41f, - cmb1 = 0x470, - cmb2 = 0x471, - cmb3 = 0x472, - cmb4 = 0x473, - cmb5 = 0x474, - cmb6 = 0x475, - cmb7 = 0x476, - cmb8 = 0x477, - cmb9 = 0x478, - cmb10 = 0x479, - cmb11 = 0x47a, - cmb12 = 0x47b, - cmb13 = 0x47c, - cmb14 = 0x47d, - cmb15 = 0x47e, - cmb16 = 0x47f, - edt1 = 0x480, - edt2 = 0x481, - edt3 = 0x482, - edt4 = 0x483, - edt5 = 0x484, - edt6 = 0x485, - edt7 = 0x486, - edt8 = 0x487, - edt9 = 0x488, - edt10 = 0x489, - edt11 = 0x48a, - edt12 = 0x48b, - edt13 = 0x48c, - edt14 = 0x48d, - edt15 = 0x48e, - edt16 = 0x48f, - frm1 = 0x434, - frm2 = 0x435, - frm3 = 0x436, - frm4 = 0x437, - grp1 = 0x430, - grp2 = 0x431, - grp3 = 0x432, - grp4 = 0x433, - ico1 = 0x43c, - ico2 = 0x43d, - ico3 = 0x43e, - ico4 = 0x43f, - lst1 = 0x460, - lst2 = 0x461, - lst3 = 0x462, - lst4 = 0x463, - lst5 = 0x464, - lst6 = 0x465, - lst7 = 0x466, - lst8 = 0x467, - lst9 = 0x468, - lst10 = 0x469, - lst11 = 0x46a, - lst12 = 0x46b, - lst13 = 0x46c, - lst14 = 0x46d, - lst15 = 0x46e, - lst16 = 0x46f, - psh1 = 0x400, - psh2 = 0x401, - psh3 = 0x402, - psh4 = 0x403, - psh5 = 0x404, - psh6 = 0x405, - psh7 = 0x406, - psh8 = 0x407, - psh9 = 0x408, - psh10 = 0x409, - psh11 = 0x40a, - psh12 = 0x40b, - psh13 = 0x40c, - psh14 = 0x40d, - psh15 = 0x40e, - pshHelp = 0x40e, - psh16 = 0x40f, - rad1 = 0x420, - rad2 = 0x421, - rad3 = 0x422, - rad4 = 0x423, - rad5 = 0x424, - rad6 = 0x425, - rad7 = 0x426, - rad8 = 0x427, - rad9 = 0x428, - rad10 = 0x429, - rad11 = 0x42a, - rad12 = 0x42b, - rad13 = 0x42c, - rad14 = 0x42d, - rad15 = 0x42e, - rad16 = 0x42f, - rct1 = 0x438, - rct2 = 0x439, - rct3 = 0x43a, - rct4 = 0x43b, - scr1 = 0x490, - scr2 = 0x491, - scr3 = 0x492, - scr4 = 0x493, - scr5 = 0x494, - scr6 = 0x495, - scr7 = 0x496, - scr8 = 0x497, - stc1 = 0x440, - stc2 = 0x441, - stc3 = 0x442, - stc4 = 0x443, - stc5 = 0x444, - stc6 = 0x445, - stc7 = 0x446, - stc8 = 0x447, - stc9 = 0x448, - stc10 = 0x449, - stc11 = 0x44a, - stc12 = 0x44b, - stc13 = 0x44c, - stc14 = 0x44d, - stc15 = 0x44e, - stc16 = 0x44f, - stc17 = 0x450, - stc18 = 0x451, - stc19 = 0x452, - stc20 = 0x453, - stc21 = 0x454, - stc22 = 0x455, - stc23 = 0x456, - stc24 = 0x457, - stc25 = 0x458, - stc26 = 0x459, - stc27 = 0x45a, - stc28 = 0x45b, - stc29 = 0x45c, - stc30 = 0x45d, - stc31 = 0x45e, - stc32 = 0x45f -} - -struct CRGB { - ubyte bRed; - ubyte bGreen; - ubyte bBlue; - ubyte bExtra; -} +/***********************************************************************\ +* dlgs.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.dlgs; + +private import win32.windef; + +enum : ushort { + FILEOPENORD = 1536, + MULTIFILEOPENORD = 1537, + PRINTDLGORD = 1538, + PRNSETUPDLGORD = 1539, + FINDDLGORD = 1540, + REPLACEDLGORD = 1541, + FONTDLGORD = 1542, + FORMATDLGORD31 = 1543, + FORMATDLGORD30 = 1544, + PAGESETUPDLGORD = 1546 +} + +enum : int { + ctlFirst = 0x400, + ctlLast = 0x4ff, + chx1 = 0x410, + chx2 = 0x411, + chx3 = 0x412, + chx4 = 0x413, + chx5 = 0x414, + chx6 = 0x415, + chx7 = 0x416, + chx8 = 0x417, + chx9 = 0x418, + chx10 = 0x419, + chx11 = 0x41a, + chx12 = 0x41b, + chx13 = 0x41c, + chx14 = 0x41d, + chx15 = 0x41e, + chx16 = 0x41f, + cmb1 = 0x470, + cmb2 = 0x471, + cmb3 = 0x472, + cmb4 = 0x473, + cmb5 = 0x474, + cmb6 = 0x475, + cmb7 = 0x476, + cmb8 = 0x477, + cmb9 = 0x478, + cmb10 = 0x479, + cmb11 = 0x47a, + cmb12 = 0x47b, + cmb13 = 0x47c, + cmb14 = 0x47d, + cmb15 = 0x47e, + cmb16 = 0x47f, + edt1 = 0x480, + edt2 = 0x481, + edt3 = 0x482, + edt4 = 0x483, + edt5 = 0x484, + edt6 = 0x485, + edt7 = 0x486, + edt8 = 0x487, + edt9 = 0x488, + edt10 = 0x489, + edt11 = 0x48a, + edt12 = 0x48b, + edt13 = 0x48c, + edt14 = 0x48d, + edt15 = 0x48e, + edt16 = 0x48f, + frm1 = 0x434, + frm2 = 0x435, + frm3 = 0x436, + frm4 = 0x437, + grp1 = 0x430, + grp2 = 0x431, + grp3 = 0x432, + grp4 = 0x433, + ico1 = 0x43c, + ico2 = 0x43d, + ico3 = 0x43e, + ico4 = 0x43f, + lst1 = 0x460, + lst2 = 0x461, + lst3 = 0x462, + lst4 = 0x463, + lst5 = 0x464, + lst6 = 0x465, + lst7 = 0x466, + lst8 = 0x467, + lst9 = 0x468, + lst10 = 0x469, + lst11 = 0x46a, + lst12 = 0x46b, + lst13 = 0x46c, + lst14 = 0x46d, + lst15 = 0x46e, + lst16 = 0x46f, + psh1 = 0x400, + psh2 = 0x401, + psh3 = 0x402, + psh4 = 0x403, + psh5 = 0x404, + psh6 = 0x405, + psh7 = 0x406, + psh8 = 0x407, + psh9 = 0x408, + psh10 = 0x409, + psh11 = 0x40a, + psh12 = 0x40b, + psh13 = 0x40c, + psh14 = 0x40d, + psh15 = 0x40e, + pshHelp = 0x40e, + psh16 = 0x40f, + rad1 = 0x420, + rad2 = 0x421, + rad3 = 0x422, + rad4 = 0x423, + rad5 = 0x424, + rad6 = 0x425, + rad7 = 0x426, + rad8 = 0x427, + rad9 = 0x428, + rad10 = 0x429, + rad11 = 0x42a, + rad12 = 0x42b, + rad13 = 0x42c, + rad14 = 0x42d, + rad15 = 0x42e, + rad16 = 0x42f, + rct1 = 0x438, + rct2 = 0x439, + rct3 = 0x43a, + rct4 = 0x43b, + scr1 = 0x490, + scr2 = 0x491, + scr3 = 0x492, + scr4 = 0x493, + scr5 = 0x494, + scr6 = 0x495, + scr7 = 0x496, + scr8 = 0x497, + stc1 = 0x440, + stc2 = 0x441, + stc3 = 0x442, + stc4 = 0x443, + stc5 = 0x444, + stc6 = 0x445, + stc7 = 0x446, + stc8 = 0x447, + stc9 = 0x448, + stc10 = 0x449, + stc11 = 0x44a, + stc12 = 0x44b, + stc13 = 0x44c, + stc14 = 0x44d, + stc15 = 0x44e, + stc16 = 0x44f, + stc17 = 0x450, + stc18 = 0x451, + stc19 = 0x452, + stc20 = 0x453, + stc21 = 0x454, + stc22 = 0x455, + stc23 = 0x456, + stc24 = 0x457, + stc25 = 0x458, + stc26 = 0x459, + stc27 = 0x45a, + stc28 = 0x45b, + stc29 = 0x45c, + stc30 = 0x45d, + stc31 = 0x45e, + stc32 = 0x45f +} + +struct CRGB { + ubyte bRed; + ubyte bGreen; + ubyte bBlue; + ubyte bExtra; +} Index: src/win32/docobj.d ================================================================== --- src/win32/docobj.d +++ src/win32/docobj.d @@ -1,133 +1,133 @@ -/***********************************************************************\ -* docobj.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.docobj; - -private import win32.basetyps, win32.oaidl, win32.objidl, win32.oleidl, - win32.unknwn, win32.windef, win32.wtypes; - -// FIXME: remove inherited methods from interface definitions - -enum { - OLECMDERR_E_UNKNOWNGROUP = -2147221244, - OLECMDERR_E_CANCELED = -2147221245, - OLECMDERR_E_NOHELP = -2147221246, - OLECMDERR_E_DISABLED = -2147221247, - OLECMDERR_E_NOTSUPPORTED = -2147221248 -} - -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 -} - -enum OLECMDF { - OLECMDF_SUPPORTED = 1, - OLECMDF_ENABLED = 2, - OLECMDF_LATCHED = 4, - OLECMDF_NINCHED = 8 -} - -enum OLECMDEXECOPT { - OLECMDEXECOPT_DODEFAULT = 0, - OLECMDEXECOPT_PROMPTUSER = 1, - OLECMDEXECOPT_DONTPROMPTUSER = 2, - OLECMDEXECOPT_SHOWHELP = 3 -} - -struct OLECMDTEXT { - DWORD cmdtextf; - ULONG cwActual; - ULONG cwBuf; - wchar rgwz[1]; -} - -struct OLECMD { - ULONG cmdID; - DWORD cmdf; -} - -alias IOleInPlaceSite* LPOLEINPLACESITE; -alias IEnumOleDocumentViews* LPENUMOLEDOCUMENTVIEWS; - -extern (C) extern const IID - IID_IContinueCallback, - IID_IEnumOleDocumentViews, - IID_IPrint, - IID_IOleDocumentView, - IID_IOleDocument, - IID_IOleCommandTarget, - IID_IOleDocumentSite; - - -interface IOleDocumentView : IUnknown { - HRESULT SetInPlaceSite(LPOLEINPLACESITE); - HRESULT GetInPlaceSite(LPOLEINPLACESITE*); - HRESULT GetDocument(IUnknown**); - HRESULT SetRect(LPRECT); - HRESULT GetRect(LPRECT); - HRESULT SetRectComplex(LPRECT, LPRECT, LPRECT, LPRECT); - HRESULT Show(BOOL); - HRESULT UIActivate(BOOL); - HRESULT Open(); - HRESULT Close(DWORD); - HRESULT SaveViewState(IStream*); - HRESULT ApplyViewState(IStream*); - HRESULT Clone(LPOLEINPLACESITE, IOleDocumentView**); -} - -interface IEnumOleDocumentViews : IUnknown { - HRESULT Next(ULONG, IOleDocumentView*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOleDocumentViews**); -} - -interface IOleDocument : IUnknown { - HRESULT CreateView(LPOLEINPLACESITE, IStream*, DWORD, IOleDocumentView**); - HRESULT GetDocMiscStatus(DWORD*); - HRESULT EnumViews(LPENUMOLEDOCUMENTVIEWS*, IOleDocumentView**); -} - -interface IOleCommandTarget : IUnknown { - HRESULT QueryStatus(CPtr!(GUID), ULONG, OLECMD*, OLECMDTEXT*); - HRESULT Exec(CPtr!(GUID), DWORD, DWORD, VARIANTARG*, VARIANTARG*); -} - -interface IOleDocumentSite : IUnknown { - HRESULT ActivateMe(IOleDocumentView*); -} +/***********************************************************************\ +* docobj.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.docobj; + +private import win32.basetyps, win32.oaidl, win32.objidl, win32.oleidl, + win32.unknwn, win32.windef, win32.wtypes; + +// FIXME: remove inherited methods from interface definitions + +enum { + OLECMDERR_E_UNKNOWNGROUP = -2147221244, + OLECMDERR_E_CANCELED = -2147221245, + OLECMDERR_E_NOHELP = -2147221246, + OLECMDERR_E_DISABLED = -2147221247, + OLECMDERR_E_NOTSUPPORTED = -2147221248 +} + +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 +} + +enum OLECMDF { + OLECMDF_SUPPORTED = 1, + OLECMDF_ENABLED = 2, + OLECMDF_LATCHED = 4, + OLECMDF_NINCHED = 8 +} + +enum OLECMDEXECOPT { + OLECMDEXECOPT_DODEFAULT = 0, + OLECMDEXECOPT_PROMPTUSER = 1, + OLECMDEXECOPT_DONTPROMPTUSER = 2, + OLECMDEXECOPT_SHOWHELP = 3 +} + +struct OLECMDTEXT { + DWORD cmdtextf; + ULONG cwActual; + ULONG cwBuf; + wchar[1] rgwz; +} + +struct OLECMD { + ULONG cmdID; + DWORD cmdf; +} + +alias IOleInPlaceSite LPOLEINPLACESITE; +alias IEnumOleDocumentViews LPENUMOLEDOCUMENTVIEWS; + +extern (C) extern const IID + IID_IContinueCallback, + IID_IEnumOleDocumentViews, + IID_IPrint, + IID_IOleDocumentView, + IID_IOleDocument, + IID_IOleCommandTarget, + IID_IOleDocumentSite; + + +interface IOleDocumentView : IUnknown { + HRESULT SetInPlaceSite(LPOLEINPLACESITE); + HRESULT GetInPlaceSite(LPOLEINPLACESITE*); + HRESULT GetDocument(IUnknown*); + HRESULT SetRect(LPRECT); + HRESULT GetRect(LPRECT); + HRESULT SetRectComplex(LPRECT, LPRECT, LPRECT, LPRECT); + HRESULT Show(BOOL); + HRESULT UIActivate(BOOL); + HRESULT Open(); + HRESULT Close(DWORD); + HRESULT SaveViewState(IStream); + HRESULT ApplyViewState(IStream); + HRESULT Clone(LPOLEINPLACESITE, IOleDocumentView*); +} + +interface IEnumOleDocumentViews : IUnknown { + HRESULT Next(ULONG, IOleDocumentView, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOleDocumentViews*); +} + +interface IOleDocument : IUnknown { + HRESULT CreateView(LPOLEINPLACESITE, IStream, DWORD, IOleDocumentView*); + HRESULT GetDocMiscStatus(DWORD*); + HRESULT EnumViews(LPENUMOLEDOCUMENTVIEWS*, IOleDocumentView*); +} + +interface IOleCommandTarget : IUnknown { + HRESULT QueryStatus(const(GUID)*, ULONG, OLECMD*, OLECMDTEXT*); + HRESULT Exec(const(GUID)*, DWORD, DWORD, VARIANTARG*, VARIANTARG*); +} + +interface IOleDocumentSite : IUnknown { + HRESULT ActivateMe(IOleDocumentView); +} Index: src/win32/errorrep.d ================================================================== --- src/win32/errorrep.d +++ src/win32/errorrep.d @@ -1,40 +1,40 @@ -/***********************************************************************\ -* errorrep.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.errorrep; - -private import win32.w32api, win32.windef; - -static assert (_WIN32_WINNT >= 0x501, - "win32.errorrep is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set"); - -enum EFaultRepRetVal { - frrvOk, - frrvOkManifest, - frrvOkQueued, - frrvErr, - frrvErrNoDW, - frrvErrTimeout, - frrvLaunchDebugger, - frrvOkHeadless // = 7 -} - -extern (Windows) { - BOOL AddERExcludedApplicationA(LPCSTR); - BOOL AddERExcludedApplicationW(LPCWSTR); - EFaultRepRetVal ReportFault(LPEXCEPTION_POINTERS, DWORD); -} - -version (Unicode) { - alias AddERExcludedApplicationW AddERExcludedApplication; -} else { - alias AddERExcludedApplicationA AddERExcludedApplication; -} +/***********************************************************************\ +* errorrep.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.errorrep; + +private import win32.w32api, win32.windef; + +static assert (_WIN32_WINNT >= 0x501, + "win32.errorrep is available only if version WindowsXP, Windows2003 " + "or WindowsVista is set"); + +enum EFaultRepRetVal { + frrvOk, + frrvOkManifest, + frrvOkQueued, + frrvErr, + frrvErrNoDW, + frrvErrTimeout, + frrvLaunchDebugger, + frrvOkHeadless // = 7 +} + +extern (Windows) { + BOOL AddERExcludedApplicationA(LPCSTR); + BOOL AddERExcludedApplicationW(LPCWSTR); + EFaultRepRetVal ReportFault(LPEXCEPTION_POINTERS, DWORD); +} + +version (Unicode) { + alias AddERExcludedApplicationW AddERExcludedApplication; +} else { + alias AddERExcludedApplicationA AddERExcludedApplication; +} Index: src/win32/exdisp.d ================================================================== --- src/win32/exdisp.d +++ src/win32/exdisp.d @@ -1,127 +1,127 @@ -/***********************************************************************\ -* exdisp.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.exdisp; - -import win32.docobj, win32.oaidl, win32.ocidl; -private import win32.basetyps, win32.windef, win32.wtypes; - - -enum BrowserNavConstants { - navOpenInNewWindow = 0x01, - navNoHistory = 0x02, - navNoReadFromCache = 0x04, - navNoWriteTocache = 0x08, - navAllowAutosearch = 0x10, - navBrowserBar = 0x20, - navHyperLink = 0x40 -} - -interface IWebBrowser : IDispatch { - HRESULT GoBack(); - HRESULT GoForward(); - HRESULT GoHome(); - HRESULT GoSearch(); - HRESULT Navigate(BSTR, VARIANT*, VARIANT*, VARIANT*, VARIANT*); - HRESULT Refresh(); - HRESULT Refresh2(VARIANT*); - HRESULT Stop(); - HRESULT get_Application(IDispatch* ppDisp); - HRESULT get_Parent(IDispatch* ppDisp); - HRESULT get_Container(IDispatch* ppDisp); - HRESULT get_Document(IDispatch* ppDisp); - HRESULT get_TopLevelContainer(VARIANT_BOOL*); - HRESULT get_Type(BSTR*); - HRESULT get_Left(LONG*); - HRESULT put_Left(LONG); - HRESULT get_Top(LONG*); - HRESULT put_Top(LONG); - HRESULT get_Width(LONG*); - HRESULT put_Width(LONG); - HRESULT get_Height(LONG*); - HRESULT put_Height(LONG); - HRESULT get_LocationName(BSTR*); - HRESULT get_LocationURL(BSTR*); - HRESULT get_Busy(VARIANT_BOOL*); -} - -interface IWebBrowserApp : IWebBrowser { - HRESULT Quit(); - HRESULT ClientToWindow(int*, int*); - HRESULT PutProperty(BSTR, VARIANT); - HRESULT GetProperty(BSTR, VARIANT*); - HRESULT get_Name(BSTR*); - HRESULT get_HWND(LONG*); - HRESULT get_FullName(BSTR*); - HRESULT get_Path(BSTR*); - HRESULT get_Visible(VARIANT_BOOL*); - HRESULT put_Visible(VARIANT_BOOL); - HRESULT get_StatusBar(VARIANT_BOOL*); - HRESULT put_StatusBar(VARIANT_BOOL); - HRESULT get_StatusText(BSTR*); - HRESULT put_StatusText(BSTR); - HRESULT get_ToolBar(int*); - HRESULT put_ToolBar(int); - HRESULT get_MenuBar(VARIANT_BOOL*); - HRESULT put_MenuBar(VARIANT_BOOL); - HRESULT get_FullScreen(VARIANT_BOOL*); - HRESULT put_FullScreen(VARIANT_BOOL); -} - -interface IWebBrowser2 : IWebBrowserApp { - HRESULT Navigate2(VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*); - HRESULT QueryStatusWB(OLECMDID, OLECMDF*); - HRESULT ExecWB(OLECMDID, OLECMDEXECOPT, VARIANT*, VARIANT*); - HRESULT ShowBrowserBar(VARIANT*, VARIANT*, VARIANT*); - HRESULT get_ReadyState(READYSTATE*); - HRESULT get_Offline(VARIANT_BOOL*); - HRESULT put_Offline(VARIANT_BOOL); - HRESULT get_Silent(VARIANT_BOOL*); - HRESULT put_Silent(VARIANT_BOOL); - HRESULT get_RegistaerAsBrowser(VARIANT_BOOL*); - HRESULT put_RegisterAsBrowser(VARIANT_BOOL); - HRESULT get_RegistaerAsDropTarget(VARIANT_BOOL*); - HRESULT put_RegisterAsDropTarget(VARIANT_BOOL); - HRESULT get_TheaterMode(VARIANT_BOOL*); - HRESULT put_TheaterMode(VARIANT_BOOL); - HRESULT get_AddressBar(VARIANT_BOOL*); - HRESULT put_AddressBar(VARIANT_BOOL); - HRESULT get_Resizable(VARIANT_BOOL*); - HRESULT put_Resizable(VARIANT_BOOL); -} - -interface DWebBrowserEvents2 : IDispatch { - void StatusTextChange(BSTR); - void ProgressChange(LONG, LONG); - void CommandStateChange(LONG, VARIANT_BOOL); - void DownloadBegin(); - void DownloadComplete(); - void TitleChange(BSTR); - void PropertyChange(BSTR); - void BeforeNavigate2(IDispatch pDisp, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT_BOOL*); - void NewWindow2(IDispatch* ppDisp, VARIANT_BOOL*); - void NavigateComplete(IDispatch pDisp, VARIANT*); - void DocumentComplete(IDispatch pDisp, VARIANT*); - void OnQuit(); - void OnVisible(VARIANT_BOOL); - void OnToolBar(VARIANT_BOOL); - void OnMenuBar(VARIANT_BOOL); - void OnStatusBar(VARIANT_BOOL); - void OnFullScreen(VARIANT_BOOL); - void OnTheaterMode(VARIANT_BOOL); - void WindowSetResizable(VARIANT_BOOL); - void WindowSetLeft(LONG); - void WindowSetTop(LONG); - void WindowSetWidth(LONG); - void WindowSetHeight(LONG); - void WindowClosing(VARIANT_BOOL, VARIANT_BOOL*); - void ClientToHostWindow(LONG*, LONG*); - void SetSecureLockIcon(LONG); - void FileDownload(VARIANT_BOOL*); -} +/***********************************************************************\ +* exdisp.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.exdisp; + +import win32.docobj, win32.oaidl, win32.ocidl; +private import win32.basetyps, win32.windef, win32.wtypes; + + +enum BrowserNavConstants { + navOpenInNewWindow = 0x01, + navNoHistory = 0x02, + navNoReadFromCache = 0x04, + navNoWriteTocache = 0x08, + navAllowAutosearch = 0x10, + navBrowserBar = 0x20, + navHyperLink = 0x40 +} + +interface IWebBrowser : IDispatch { + HRESULT GoBack(); + HRESULT GoForward(); + HRESULT GoHome(); + HRESULT GoSearch(); + HRESULT Navigate(BSTR, VARIANT*, VARIANT*, VARIANT*, VARIANT*); + HRESULT Refresh(); + HRESULT Refresh2(VARIANT*); + HRESULT Stop(); + HRESULT get_Application(IDispatch* ppDisp); + HRESULT get_Parent(IDispatch* ppDisp); + HRESULT get_Container(IDispatch* ppDisp); + HRESULT get_Document(IDispatch* ppDisp); + HRESULT get_TopLevelContainer(VARIANT_BOOL*); + HRESULT get_Type(BSTR*); + HRESULT get_Left(LONG*); + HRESULT put_Left(LONG); + HRESULT get_Top(LONG*); + HRESULT put_Top(LONG); + HRESULT get_Width(LONG*); + HRESULT put_Width(LONG); + HRESULT get_Height(LONG*); + HRESULT put_Height(LONG); + HRESULT get_LocationName(BSTR*); + HRESULT get_LocationURL(BSTR*); + HRESULT get_Busy(VARIANT_BOOL*); +} + +interface IWebBrowserApp : IWebBrowser { + HRESULT Quit(); + HRESULT ClientToWindow(int*, int*); + HRESULT PutProperty(BSTR, VARIANT); + HRESULT GetProperty(BSTR, VARIANT*); + HRESULT get_Name(BSTR*); + HRESULT get_HWND(LONG*); + HRESULT get_FullName(BSTR*); + HRESULT get_Path(BSTR*); + HRESULT get_Visible(VARIANT_BOOL*); + HRESULT put_Visible(VARIANT_BOOL); + HRESULT get_StatusBar(VARIANT_BOOL*); + HRESULT put_StatusBar(VARIANT_BOOL); + HRESULT get_StatusText(BSTR*); + HRESULT put_StatusText(BSTR); + HRESULT get_ToolBar(int*); + HRESULT put_ToolBar(int); + HRESULT get_MenuBar(VARIANT_BOOL*); + HRESULT put_MenuBar(VARIANT_BOOL); + HRESULT get_FullScreen(VARIANT_BOOL*); + HRESULT put_FullScreen(VARIANT_BOOL); +} + +interface IWebBrowser2 : IWebBrowserApp { + HRESULT Navigate2(VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*); + HRESULT QueryStatusWB(OLECMDID, OLECMDF*); + HRESULT ExecWB(OLECMDID, OLECMDEXECOPT, VARIANT*, VARIANT*); + HRESULT ShowBrowserBar(VARIANT*, VARIANT*, VARIANT*); + HRESULT get_ReadyState(READYSTATE*); + HRESULT get_Offline(VARIANT_BOOL*); + HRESULT put_Offline(VARIANT_BOOL); + HRESULT get_Silent(VARIANT_BOOL*); + HRESULT put_Silent(VARIANT_BOOL); + HRESULT get_RegistaerAsBrowser(VARIANT_BOOL*); + HRESULT put_RegisterAsBrowser(VARIANT_BOOL); + HRESULT get_RegistaerAsDropTarget(VARIANT_BOOL*); + HRESULT put_RegisterAsDropTarget(VARIANT_BOOL); + HRESULT get_TheaterMode(VARIANT_BOOL*); + HRESULT put_TheaterMode(VARIANT_BOOL); + HRESULT get_AddressBar(VARIANT_BOOL*); + HRESULT put_AddressBar(VARIANT_BOOL); + HRESULT get_Resizable(VARIANT_BOOL*); + HRESULT put_Resizable(VARIANT_BOOL); +} + +interface DWebBrowserEvents2 : IDispatch { + void StatusTextChange(BSTR); + void ProgressChange(LONG, LONG); + void CommandStateChange(LONG, VARIANT_BOOL); + void DownloadBegin(); + void DownloadComplete(); + void TitleChange(BSTR); + void PropertyChange(BSTR); + void BeforeNavigate2(IDispatch pDisp, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT_BOOL*); + void NewWindow2(IDispatch* ppDisp, VARIANT_BOOL*); + void NavigateComplete(IDispatch pDisp, VARIANT*); + void DocumentComplete(IDispatch pDisp, VARIANT*); + void OnQuit(); + void OnVisible(VARIANT_BOOL); + void OnToolBar(VARIANT_BOOL); + void OnMenuBar(VARIANT_BOOL); + void OnStatusBar(VARIANT_BOOL); + void OnFullScreen(VARIANT_BOOL); + void OnTheaterMode(VARIANT_BOOL); + void WindowSetResizable(VARIANT_BOOL); + void WindowSetLeft(LONG); + void WindowSetTop(LONG); + void WindowSetWidth(LONG); + void WindowSetHeight(LONG); + void WindowClosing(VARIANT_BOOL, VARIANT_BOOL*); + void ClientToHostWindow(LONG*, LONG*); + void SetSecureLockIcon(LONG); + void FileDownload(VARIANT_BOOL*); +} Index: src/win32/exdispid.d ================================================================== --- src/win32/exdispid.d +++ src/win32/exdispid.d @@ -1,20 +1,20 @@ -/***********************************************************************\ -* exdispid.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.exdispid; - -enum : int { - DISPID_STATUSTEXTCHANGE = 102, - DISPID_PROGRESSCHANGE = 108, - DISPID_TITLECHANGE = 113, - DISPID_BEFORENAVIGATE2 = 250, - DISPID_NEWWINDOW2 = 251, - DISPID_DOCUMENTCOMPLETE = 259 -} +/***********************************************************************\ +* exdispid.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.exdispid; + +enum : int { + DISPID_STATUSTEXTCHANGE = 102, + DISPID_PROGRESSCHANGE = 108, + DISPID_TITLECHANGE = 113, + DISPID_BEFORENAVIGATE2 = 250, + DISPID_NEWWINDOW2 = 251, + DISPID_DOCUMENTCOMPLETE = 259 +} Index: src/win32/httpext.d ================================================================== --- src/win32/httpext.d +++ src/win32/httpext.d @@ -1,114 +1,114 @@ -/***********************************************************************\ -* httpext.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.httpext; - -/* Comment from MinGW - httpext.h - Header for ISAPI extensions. - - This file is part of a free library for the Win32 API. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -*/ - -private import win32.windows; - -enum { - HSE_VERSION_MAJOR = 2, - HSE_VERSION_MINOR = 0, - HSE_LOG_BUFFER_LEN = 80, - HSE_MAX_EXT_DLL_NAME_LEN = 256, - HSE_STATUS_SUCCESS = 1, - HSE_STATUS_SUCCESS_AND_KEEP_CONN, - HSE_STATUS_PENDING, - HSE_STATUS_ERROR, - HSE_REQ_BASE = 0, - HSE_REQ_SEND_URL_REDIRECT_RESP, - HSE_REQ_SEND_URL, - HSE_REQ_SEND_RESPONSE_HEADER, - HSE_REQ_DONE_WITH_SESSION, - HSE_REQ_SEND_RESPONSE_HEADER_EX = 1016, - HSE_REQ_END_RESERVED = 1000, - HSE_TERM_ADVISORY_UNLOAD = 0x00000001, - HSE_TERM_MUST_UNLOAD, - HSE_IO_SYNC = 0x00000001, - HSE_IO_ASYNC, - HSE_IO_DISCONNECT_AFTER_SEND = 0x00000004, - HSE_IO_SEND_HEADERS = 0x00000008 -} - -alias HANDLE HCONN; - -struct HSE_VERSION_INFO { - DWORD dwExtensionVersion; - CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; -} -alias HSE_VERSION_INFO* LPHSE_VERSION_INFO; - -struct EXTENSION_CONTROL_BLOCK { - DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; - DWORD dwVersion; - HCONN ConnID; - DWORD dwHttpStatusCode; - CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; - LPSTR lpszMethod; - LPSTR lpszQueryString; - LPSTR lpszPathInfo; - LPSTR lpszPathTranslated; - DWORD cbTotalBytes; - DWORD cbAvailable; - LPBYTE lpbData; - LPSTR lpszContentType; - extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) - GetServerVariable; - extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; - extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; - extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) - ServerSupportFunction; -} -alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK; - -extern (Pascal) { - alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; - alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; - alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; - alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; -} - -struct HSE_TF_INFO { - PFN_HSE_IO_COMPLETION pfnHseIO; - PVOID pContext; - HANDLE hFile; - LPCSTR pszStatusCode; - DWORD BytesToWrite; - DWORD Offset; - PVOID pHead; - DWORD HeadLength; - PVOID pTail; - DWORD TailLength; - DWORD dwFlags; -} -alias HSE_TF_INFO* LPHSE_TF_INFO; - -struct HSE_SEND_HEADER_EX_INFO { - LPCSTR pszStatus; - LPCSTR pszHeader; - DWORD cchStatus; - DWORD cchHeader; - BOOL fKeepConn; -} -alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF; - -extern (Pascal) { - BOOL GetExtensionVersion(HSE_VERSION_INFO*); - DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); - BOOL TerminateExtension(DWORD); -} +/***********************************************************************\ +* httpext.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.httpext; + +/* Comment from MinGW + httpext.h - Header for ISAPI extensions. + + This file is part of a free library for the Win32 API. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +private import win32.windows; + +enum { + HSE_VERSION_MAJOR = 2, + HSE_VERSION_MINOR = 0, + HSE_LOG_BUFFER_LEN = 80, + HSE_MAX_EXT_DLL_NAME_LEN = 256, + HSE_STATUS_SUCCESS = 1, + HSE_STATUS_SUCCESS_AND_KEEP_CONN, + HSE_STATUS_PENDING, + HSE_STATUS_ERROR, + HSE_REQ_BASE = 0, + HSE_REQ_SEND_URL_REDIRECT_RESP, + HSE_REQ_SEND_URL, + HSE_REQ_SEND_RESPONSE_HEADER, + HSE_REQ_DONE_WITH_SESSION, + HSE_REQ_SEND_RESPONSE_HEADER_EX = 1016, + HSE_REQ_END_RESERVED = 1000, + HSE_TERM_ADVISORY_UNLOAD = 0x00000001, + HSE_TERM_MUST_UNLOAD, + HSE_IO_SYNC = 0x00000001, + HSE_IO_ASYNC, + HSE_IO_DISCONNECT_AFTER_SEND = 0x00000004, + HSE_IO_SEND_HEADERS = 0x00000008 +} + +mixin DECLARE_HANDLE!("HCONN"); + +struct HSE_VERSION_INFO { + DWORD dwExtensionVersion; + CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; +} +alias HSE_VERSION_INFO* LPHSE_VERSION_INFO; + +struct EXTENSION_CONTROL_BLOCK { + DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; + DWORD dwVersion; + HCONN ConnID; + DWORD dwHttpStatusCode; + CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; + LPSTR lpszMethod; + LPSTR lpszQueryString; + LPSTR lpszPathInfo; + LPSTR lpszPathTranslated; + DWORD cbTotalBytes; + DWORD cbAvailable; + LPBYTE lpbData; + LPSTR lpszContentType; + extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) + GetServerVariable; + extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; + extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; + extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) + ServerSupportFunction; +} +alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK; + +extern (Pascal) { + alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; + alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; + alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; + alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; +} + +struct HSE_TF_INFO { + PFN_HSE_IO_COMPLETION pfnHseIO; + PVOID pContext; + HANDLE hFile; + LPCSTR pszStatusCode; + DWORD BytesToWrite; + DWORD Offset; + PVOID pHead; + DWORD HeadLength; + PVOID pTail; + DWORD TailLength; + DWORD dwFlags; +} +alias HSE_TF_INFO* LPHSE_TF_INFO; + +struct HSE_SEND_HEADER_EX_INFO { + LPCSTR pszStatus; + LPCSTR pszHeader; + DWORD cchStatus; + DWORD cchHeader; + BOOL fKeepConn; +} +alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF; + +extern (Pascal) { + BOOL GetExtensionVersion(HSE_VERSION_INFO*); + DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); + BOOL TerminateExtension(DWORD); +} Index: src/win32/idispids.d ================================================================== --- src/win32/idispids.d +++ src/win32/idispids.d @@ -1,16 +1,16 @@ -/***********************************************************************\ -* idispids.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.idispids; - -enum : int { - DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, - DISPID_AMBIENT_SILENT = -5502 -} +/***********************************************************************\ +* idispids.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.idispids; + +enum : int { + DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501, + DISPID_AMBIENT_SILENT = -5502 +} Index: src/win32/imagehlp.d ================================================================== --- src/win32/imagehlp.d +++ src/win32/imagehlp.d @@ -1,363 +1,363 @@ -/***********************************************************************\ -* imagehlp.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.imagehlp; - -/* Comment from MinGW - NOTE: This strictly does not belong in the Win32 API since it's - really part of Platform SDK. However, GDB needs it and we might - as well provide it here. -*/ - -private import win32.winbase, win32.windef; - -// FIXME: check types of constants - -const API_VERSION_NUMBER = 7; - -const BIND_NO_BOUND_IMPORTS = 1; -const BIND_NO_UPDATE = 2; -const BIND_ALL_IMAGES = 4; -const BIND_CACHE_IMPORT_DLLS = 8; - -enum { - CBA_DEFERRED_SYMBOL_LOAD_START = 1, - CBA_DEFERRED_SYMBOL_LOAD_COMPLETE, - CBA_DEFERRED_SYMBOL_LOAD_FAILURE, - CBA_SYMBOLS_UNLOADED, - CBA_DUPLICATE_SYMBOL -} - -const CERT_PE_IMAGE_DIGEST_DEBUG_INFO = 1; -const CERT_PE_IMAGE_DIGEST_RESOURCES = 2; -const CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = 4; -const CERT_PE_IMAGE_DIGEST_NON_PE_INFO = 8; - -const CERT_SECTION_TYPE_ANY = 255; - -enum { - CHECKSUM_SUCCESS = 0, - CHECKSUM_OPEN_FAILURE, - CHECKSUM_MAP_FAILURE, - CHECKSUM_MAPVIEW_FAILURE, - CHECKSUM_UNICODE_FAILURE -} - -const IMAGE_SEPARATION = 65536; - -const SPLITSYM_REMOVE_PRIVATE = 1; -const SPLITSYM_EXTRACT_ALL = 2; -const SPLITSYM_SYMBOLPATH_IS_SRC = 4; - -const SYMF_OMAP_GENERATED = 1; -const SYMF_OMAP_MODIFIED = 2; - -const SYMOPT_CASE_INSENSITIVE = 1; -const SYMOPT_UNDNAME = 2; -const SYMOPT_DEFERRED_LOADS = 4; -const SYMOPT_NO_CPP = 8; -const SYMOPT_LOAD_LINES = 16; -const SYMOPT_OMAP_FIND_NEAREST = 32; - -const UNDNAME_COMPLETE = 0; -const UNDNAME_NO_LEADING_UNDERSCORES = 1; -const UNDNAME_NO_MS_KEYWORDS = 2; -const UNDNAME_NO_FUNCTION_RETURNS = 4; -const UNDNAME_NO_ALLOCATION_MODEL = 8; -const UNDNAME_NO_ALLOCATION_LANGUAGE = 16; -const UNDNAME_NO_MS_THISTYPE = 32; -const UNDNAME_NO_CV_THISTYPE = 64; -const UNDNAME_NO_THISTYPE = 96; -const UNDNAME_NO_ACCESS_SPECIFIERS = 128; -const UNDNAME_NO_THROW_SIGNATURES = 256; -const UNDNAME_NO_MEMBER_TYPE = 512; -const UNDNAME_NO_RETURN_UDT_MODEL = 1024; -const UNDNAME_32_BIT_DECODE = 2048; -const UNDNAME_NAME_ONLY = 4096; -const UNDNAME_NO_ARGUMENTS = 8192; -const UNDNAME_NO_SPECIAL_SYMS = 16384; - -enum IMAGEHLP_STATUS_REASON { - BindOutOfMemory, - BindRvaToVaFailed, - BindNoRoomInImage, - BindImportModuleFailed, - BindImportProcedureFailed, - BindImportModule, - BindImportProcedure, - BindForwarder, - BindForwarderNOT, - BindImageModified, - BindExpandFileHeaders, - BindImageComplete, - BindMismatchedSymbols, - BindSymbolsNotUpdated -} - -struct LOADED_IMAGE { - LPSTR ModuleName; - HANDLE hFile; - PUCHAR MappedAddress; - PIMAGE_NT_HEADERS FileHeader; - PIMAGE_SECTION_HEADER LastRvaSection; - ULONG NumberOfSections; - PIMAGE_SECTION_HEADER Sections; - ULONG Characteristics; - BOOLEAN fSystemImage; - BOOLEAN fDOSImage; - LIST_ENTRY Links; - ULONG SizeOfImage; -} -alias LOADED_IMAGE* PLOADED_IMAGE; - -struct IMAGE_DEBUG_INFORMATION { - LIST_ENTRY List; - DWORD Size; - PVOID MappedBase; - USHORT Machine; - USHORT Characteristics; - DWORD CheckSum; - DWORD ImageBase; - DWORD SizeOfImage; - DWORD NumberOfSections; - PIMAGE_SECTION_HEADER Sections; - DWORD ExportedNamesSize; - LPSTR ExportedNames; - DWORD NumberOfFunctionTableEntries; - PIMAGE_FUNCTION_ENTRY FunctionTableEntries; - DWORD LowestFunctionStartingAddress; - DWORD HighestFunctionEndingAddress; - DWORD NumberOfFpoTableEntries; - PFPO_DATA FpoTableEntries; - DWORD SizeOfCoffSymbols; - PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; - DWORD SizeOfCodeViewSymbols; - PVOID CodeViewSymbols; - LPSTR ImageFilePath; - LPSTR ImageFileName; - LPSTR DebugFilePath; - DWORD TimeDateStamp; - BOOL RomImage; - PIMAGE_DEBUG_DIRECTORY DebugDirectory; - DWORD NumberOfDebugDirectories; - DWORD[3] Reserved; -} -alias IMAGE_DEBUG_INFORMATION* PIMAGE_DEBUG_INFORMATION; - -enum ADDRESS_MODE { - AddrMode1616, - AddrMode1632, - AddrModeReal, - AddrModeFlat -} - -struct ADDRESS { - DWORD Offset; - WORD Segment; - ADDRESS_MODE Mode; -} -alias ADDRESS* LPADDRESS; - -struct KDHELP { - DWORD Thread; - DWORD ThCallbackStack; - DWORD NextCallback; - DWORD FramePointer; - DWORD KiCallUserMode; - DWORD KeUserCallbackDispatcher; - DWORD SystemRangeStart; -} -alias KDHELP* PKDHELP; - -struct STACKFRAME { - ADDRESS AddrPC; - ADDRESS AddrReturn; - ADDRESS AddrFrame; - ADDRESS AddrStack; - LPVOID FuncTableEntry; - DWORD[4] Params; - BOOL Far; - BOOL Virtual; - DWORD[3] Reserved; - KDHELP KdHelp; -} -alias STACKFRAME* LPSTACKFRAME; - -struct API_VERSION { - USHORT MajorVersion; - USHORT MinorVersion; - USHORT Revision; - USHORT Reserved; -} -alias API_VERSION* LPAPI_VERSION; - -enum SYM_TYPE { - SymNone, - SymCoff, - SymCv, - SymPdb, - SymExport, - SymDeferred, - SymSym -} - -struct IMAGEHLP_SYMBOL { - DWORD SizeOfStruct; - DWORD Address; - DWORD Size; - DWORD Flags; - DWORD MaxNameLength; - CHAR[1] Name; -} -alias IMAGEHLP_SYMBOL* PIMAGEHLP_SYMBOL; - -struct IMAGEHLP_MODULE { - DWORD SizeOfStruct; - DWORD BaseOfImage; - DWORD ImageSize; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD NumSyms; - SYM_TYPE SymType; - CHAR[32] ModuleName; - CHAR[256] ImageName; - CHAR[256] LoadedImageName; -} -alias IMAGEHLP_MODULE* PIMAGEHLP_MODULE; - -struct IMAGEHLP_LINE { - DWORD SizeOfStruct; - DWORD Key; - DWORD LineNumber; - PCHAR FileName; - DWORD Address; -} -alias IMAGEHLP_LINE* PIMAGEHLP_LINE; - -struct IMAGEHLP_DEFERRED_SYMBOL_LOAD { - DWORD SizeOfStruct; - DWORD BaseOfImage; - DWORD CheckSum; - DWORD TimeDateStamp; - CHAR[MAX_PATH] FileName; - BOOLEAN Reparse; -} -alias IMAGEHLP_DEFERRED_SYMBOL_LOAD* PIMAGEHLP_DEFERRED_SYMBOL_LOAD; - -struct IMAGEHLP_DUPLICATE_SYMBOL { - DWORD SizeOfStruct; - DWORD NumberOfDups; - PIMAGEHLP_SYMBOL Symbol; - ULONG SelectedSymbol; -} -alias IMAGEHLP_DUPLICATE_SYMBOL* PIMAGEHLP_DUPLICATE_SYMBOL; - -alias HANDLE DIGEST_HANDLE; - -extern (Windows) { - alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG, ULONG) - PIMAGEHLP_STATUS_ROUTINE; - alias BOOL function(HANDLE , LPCVOID, LPVOID, DWORD, LPDWORD) - PREAD_PROCESS_MEMORY_ROUTINE; - alias LPVOID function(HANDLE, DWORD) PFUNCTION_TABLE_ACCESS_ROUTINE; - alias DWORD function(HANDLE, DWORD) PGET_MODULE_BASE_ROUTINE; - alias DWORD function(HANDLE, HANDLE, LPADDRESS) - PTRANSLATE_ADDRESS_ROUTINE; - alias BOOL function(LPSTR, ULONG, PVOID) PSYM_ENUMMODULES_CALLBACK; - alias BOOL function(LPSTR, ULONG, ULONG, PVOID) PSYM_ENUMSYMBOLS_CALLBACK; - alias BOOL function(LPSTR, ULONG, ULONG, PVOID) - PENUMLOADED_MODULES_CALLBACK; - alias BOOL function(HANDLE, ULONG, PVOID, PVOID) - PSYMBOL_REGISTERED_CALLBACK; - alias BOOL function(DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength) - DIGEST_FUNCTION; - - PIMAGE_NT_HEADERS CheckSumMappedFile(LPVOID, DWORD, LPDWORD, LPDWORD); - DWORD MapFileAndCheckSumA(LPSTR, LPDWORD, LPDWORD); - DWORD MapFileAndCheckSumW(PWSTR, LPDWORD, LPDWORD); - BOOL TouchFileTimes(HANDLE, LPSYSTEMTIME); - BOOL SplitSymbols(LPSTR, LPSTR, LPSTR, DWORD); - HANDLE FindDebugInfoFile(LPSTR, LPSTR, LPSTR); - HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); - BOOL UpdateDebugInfoFile(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS); - BOOL UpdateDebugInfoFileEx(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS, DWORD); - BOOL BindImage(LPSTR, LPSTR, LPSTR); - BOOL BindImageEx(DWORD, LPSTR, LPSTR, LPSTR, PIMAGEHLP_STATUS_ROUTINE); - BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG*, - ULONG*, ULONG*, ULONG); - PLOADED_IMAGE ImageLoad(LPSTR, LPSTR); - BOOL ImageUnload(PLOADED_IMAGE); - PIMAGE_NT_HEADERS ImageNtHeader(PVOID); - PVOID ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); - PIMAGE_SECTION_HEADER ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); - PVOID ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, - PIMAGE_SECTION_HEADER*); - BOOL MapAndLoad(LPSTR, LPSTR, PLOADED_IMAGE, BOOL, BOOL); - BOOL GetImageConfigInformation(PLOADED_IMAGE, - PIMAGE_LOAD_CONFIG_DIRECTORY); - DWORD GetImageUnusedHeaderBytes(PLOADED_IMAGE, LPDWORD); - BOOL SetImageConfigInformation(PLOADED_IMAGE, - PIMAGE_LOAD_CONFIG_DIRECTORY); - BOOL UnMapAndLoad(PLOADED_IMAGE); - PIMAGE_DEBUG_INFORMATION MapDebugInformation(HANDLE, LPSTR, LPSTR, DWORD); - BOOL UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); - HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); - BOOL SearchTreeForFile(LPSTR, LPSTR, LPSTR); - BOOL MakeSureDirectoryPathExists(LPCSTR); - DWORD UnDecorateSymbolName(LPCSTR, LPSTR, DWORD, DWORD); - BOOL StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, - PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, - PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE); - LPAPI_VERSION ImagehlpApiVersion(); - LPAPI_VERSION ImagehlpApiVersionEx(LPAPI_VERSION); - DWORD GetTimestampForLoadedLibrary(HMODULE); - BOOL RemovePrivateCvSymbolic(PCHAR, PCHAR*, ULONG*); - VOID RemoveRelocations(PCHAR); - DWORD SymSetOptions(DWORD); - DWORD SymGetOptions(); - BOOL SymCleanup(HANDLE); - BOOL SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); - BOOL SymEnumerateSymbols(HANDLE, DWORD, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); - BOOL EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); - LPVOID SymFunctionTableAccess(HANDLE, DWORD); - BOOL SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); - DWORD SymGetModuleBase(HANDLE, DWORD); - BOOL SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); - BOOL SymGetSymFromName(HANDLE, LPSTR, PIMAGEHLP_SYMBOL); - BOOL SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); - BOOL SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); - BOOL SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); - BOOL SymGetLineFromName(HANDLE, LPSTR, LPSTR, DWORD, PLONG, - PIMAGEHLP_LINE); - BOOL SymGetLineNext(HANDLE, PIMAGEHLP_LINE); - BOOL SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); - BOOL SymMatchFileName(LPSTR, LPSTR, LPSTR*, LPSTR*); - BOOL SymInitialize(HANDLE, LPSTR, BOOL); - BOOL SymGetSearchPath(HANDLE, LPSTR, DWORD); - BOOL SymSetSearchPath(HANDLE, LPSTR); - BOOL SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD); - BOOL SymUnloadModule(HANDLE, DWORD); - BOOL SymUnDName(PIMAGEHLP_SYMBOL, LPSTR, DWORD); - BOOL SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); - BOOL ImageGetDigestStream(HANDLE, DWORD, DIGEST_FUNCTION, DIGEST_HANDLE); - BOOL ImageAddCertificate(HANDLE, LPWIN_CERTIFICATE, PDWORD); - BOOL ImageRemoveCertificate(HANDLE, DWORD); - BOOL ImageEnumerateCertificates(HANDLE, WORD, PDWORD, PDWORD, DWORD); - BOOL ImageGetCertificateData(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD); - BOOL ImageGetCertificateHeader(HANDLE, DWORD, LPWIN_CERTIFICATE); - BOOL CopyPdb(CHAR*, CHAR*, BOOL); - BOOL RemovePrivateCvSymbolicEx(PCHAR, ULONG, PCHAR*, ULONG*); -} - -version (Unicode) { - alias MapFileAndCheckSumW MapFileAndCheckSum; -} else { - alias MapFileAndCheckSumA MapFileAndCheckSum; -} +/***********************************************************************\ +* imagehlp.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.imagehlp; + +/* Comment from MinGW + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. However, GDB needs it and we might + as well provide it here. +*/ + +private import win32.winbase, win32.windef; + +// FIXME: check types of constants + +const API_VERSION_NUMBER = 7; + +const BIND_NO_BOUND_IMPORTS = 1; +const BIND_NO_UPDATE = 2; +const BIND_ALL_IMAGES = 4; +const BIND_CACHE_IMPORT_DLLS = 8; + +enum { + CBA_DEFERRED_SYMBOL_LOAD_START = 1, + CBA_DEFERRED_SYMBOL_LOAD_COMPLETE, + CBA_DEFERRED_SYMBOL_LOAD_FAILURE, + CBA_SYMBOLS_UNLOADED, + CBA_DUPLICATE_SYMBOL +} + +const CERT_PE_IMAGE_DIGEST_DEBUG_INFO = 1; +const CERT_PE_IMAGE_DIGEST_RESOURCES = 2; +const CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = 4; +const CERT_PE_IMAGE_DIGEST_NON_PE_INFO = 8; + +const CERT_SECTION_TYPE_ANY = 255; + +enum { + CHECKSUM_SUCCESS = 0, + CHECKSUM_OPEN_FAILURE, + CHECKSUM_MAP_FAILURE, + CHECKSUM_MAPVIEW_FAILURE, + CHECKSUM_UNICODE_FAILURE +} + +const IMAGE_SEPARATION = 65536; + +const SPLITSYM_REMOVE_PRIVATE = 1; +const SPLITSYM_EXTRACT_ALL = 2; +const SPLITSYM_SYMBOLPATH_IS_SRC = 4; + +const SYMF_OMAP_GENERATED = 1; +const SYMF_OMAP_MODIFIED = 2; + +const SYMOPT_CASE_INSENSITIVE = 1; +const SYMOPT_UNDNAME = 2; +const SYMOPT_DEFERRED_LOADS = 4; +const SYMOPT_NO_CPP = 8; +const SYMOPT_LOAD_LINES = 16; +const SYMOPT_OMAP_FIND_NEAREST = 32; + +const UNDNAME_COMPLETE = 0; +const UNDNAME_NO_LEADING_UNDERSCORES = 1; +const UNDNAME_NO_MS_KEYWORDS = 2; +const UNDNAME_NO_FUNCTION_RETURNS = 4; +const UNDNAME_NO_ALLOCATION_MODEL = 8; +const UNDNAME_NO_ALLOCATION_LANGUAGE = 16; +const UNDNAME_NO_MS_THISTYPE = 32; +const UNDNAME_NO_CV_THISTYPE = 64; +const UNDNAME_NO_THISTYPE = 96; +const UNDNAME_NO_ACCESS_SPECIFIERS = 128; +const UNDNAME_NO_THROW_SIGNATURES = 256; +const UNDNAME_NO_MEMBER_TYPE = 512; +const UNDNAME_NO_RETURN_UDT_MODEL = 1024; +const UNDNAME_32_BIT_DECODE = 2048; +const UNDNAME_NAME_ONLY = 4096; +const UNDNAME_NO_ARGUMENTS = 8192; +const UNDNAME_NO_SPECIAL_SYMS = 16384; + +enum IMAGEHLP_STATUS_REASON { + BindOutOfMemory, + BindRvaToVaFailed, + BindNoRoomInImage, + BindImportModuleFailed, + BindImportProcedureFailed, + BindImportModule, + BindImportProcedure, + BindForwarder, + BindForwarderNOT, + BindImageModified, + BindExpandFileHeaders, + BindImageComplete, + BindMismatchedSymbols, + BindSymbolsNotUpdated +} + +struct LOADED_IMAGE { + LPSTR ModuleName; + HANDLE hFile; + PUCHAR MappedAddress; + PIMAGE_NT_HEADERS FileHeader; + PIMAGE_SECTION_HEADER LastRvaSection; + ULONG NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + ULONG Characteristics; + BOOLEAN fSystemImage; + BOOLEAN fDOSImage; + LIST_ENTRY Links; + ULONG SizeOfImage; +} +alias LOADED_IMAGE* PLOADED_IMAGE; + +struct IMAGE_DEBUG_INFORMATION { + LIST_ENTRY List; + DWORD Size; + PVOID MappedBase; + USHORT Machine; + USHORT Characteristics; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + DWORD ExportedNamesSize; + LPSTR ExportedNames; + DWORD NumberOfFunctionTableEntries; + PIMAGE_FUNCTION_ENTRY FunctionTableEntries; + DWORD LowestFunctionStartingAddress; + DWORD HighestFunctionEndingAddress; + DWORD NumberOfFpoTableEntries; + PFPO_DATA FpoTableEntries; + DWORD SizeOfCoffSymbols; + PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; + DWORD SizeOfCodeViewSymbols; + PVOID CodeViewSymbols; + LPSTR ImageFilePath; + LPSTR ImageFileName; + LPSTR DebugFilePath; + DWORD TimeDateStamp; + BOOL RomImage; + PIMAGE_DEBUG_DIRECTORY DebugDirectory; + DWORD NumberOfDebugDirectories; + DWORD[3] Reserved; +} +alias IMAGE_DEBUG_INFORMATION* PIMAGE_DEBUG_INFORMATION; + +enum ADDRESS_MODE { + AddrMode1616, + AddrMode1632, + AddrModeReal, + AddrModeFlat +} + +struct ADDRESS { + DWORD Offset; + WORD Segment; + ADDRESS_MODE Mode; +} +alias ADDRESS* LPADDRESS; + +struct KDHELP { + DWORD Thread; + DWORD ThCallbackStack; + DWORD NextCallback; + DWORD FramePointer; + DWORD KiCallUserMode; + DWORD KeUserCallbackDispatcher; + DWORD SystemRangeStart; +} +alias KDHELP* PKDHELP; + +struct STACKFRAME { + ADDRESS AddrPC; + ADDRESS AddrReturn; + ADDRESS AddrFrame; + ADDRESS AddrStack; + LPVOID FuncTableEntry; + DWORD[4] Params; + BOOL Far; + BOOL Virtual; + DWORD[3] Reserved; + KDHELP KdHelp; +} +alias STACKFRAME* LPSTACKFRAME; + +struct API_VERSION { + USHORT MajorVersion; + USHORT MinorVersion; + USHORT Revision; + USHORT Reserved; +} +alias API_VERSION* LPAPI_VERSION; + +enum SYM_TYPE { + SymNone, + SymCoff, + SymCv, + SymPdb, + SymExport, + SymDeferred, + SymSym +} + +struct IMAGEHLP_SYMBOL { + DWORD SizeOfStruct; + DWORD Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + CHAR[1] Name; +} +alias IMAGEHLP_SYMBOL* PIMAGEHLP_SYMBOL; + +struct IMAGEHLP_MODULE { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + CHAR[32] ModuleName; + CHAR[256] ImageName; + CHAR[256] LoadedImageName; +} +alias IMAGEHLP_MODULE* PIMAGEHLP_MODULE; + +struct IMAGEHLP_LINE { + DWORD SizeOfStruct; + DWORD Key; + DWORD LineNumber; + PCHAR FileName; + DWORD Address; +} +alias IMAGEHLP_LINE* PIMAGEHLP_LINE; + +struct IMAGEHLP_DEFERRED_SYMBOL_LOAD { + DWORD SizeOfStruct; + DWORD BaseOfImage; + DWORD CheckSum; + DWORD TimeDateStamp; + CHAR[MAX_PATH] FileName; + BOOLEAN Reparse; +} +alias IMAGEHLP_DEFERRED_SYMBOL_LOAD* PIMAGEHLP_DEFERRED_SYMBOL_LOAD; + +struct IMAGEHLP_DUPLICATE_SYMBOL { + DWORD SizeOfStruct; + DWORD NumberOfDups; + PIMAGEHLP_SYMBOL Symbol; + ULONG SelectedSymbol; +} +alias IMAGEHLP_DUPLICATE_SYMBOL* PIMAGEHLP_DUPLICATE_SYMBOL; + +mixin DECLARE_HANDLE!("DIGEST_HANDLE"); + +extern (Windows) { + alias BOOL function(IMAGEHLP_STATUS_REASON, LPSTR, LPSTR, ULONG, ULONG) + PIMAGEHLP_STATUS_ROUTINE; + alias BOOL function(HANDLE , LPCVOID, LPVOID, DWORD, LPDWORD) + PREAD_PROCESS_MEMORY_ROUTINE; + alias LPVOID function(HANDLE, DWORD) PFUNCTION_TABLE_ACCESS_ROUTINE; + alias DWORD function(HANDLE, DWORD) PGET_MODULE_BASE_ROUTINE; + alias DWORD function(HANDLE, HANDLE, LPADDRESS) + PTRANSLATE_ADDRESS_ROUTINE; + alias BOOL function(LPSTR, ULONG, PVOID) PSYM_ENUMMODULES_CALLBACK; + alias BOOL function(LPSTR, ULONG, ULONG, PVOID) PSYM_ENUMSYMBOLS_CALLBACK; + alias BOOL function(LPSTR, ULONG, ULONG, PVOID) + PENUMLOADED_MODULES_CALLBACK; + alias BOOL function(HANDLE, ULONG, PVOID, PVOID) + PSYMBOL_REGISTERED_CALLBACK; + alias BOOL function(DIGEST_HANDLE refdata, PBYTE pData, DWORD dwLength) + DIGEST_FUNCTION; + + PIMAGE_NT_HEADERS CheckSumMappedFile(LPVOID, DWORD, LPDWORD, LPDWORD); + DWORD MapFileAndCheckSumA(LPSTR, LPDWORD, LPDWORD); + DWORD MapFileAndCheckSumW(PWSTR, LPDWORD, LPDWORD); + BOOL TouchFileTimes(HANDLE, LPSYSTEMTIME); + BOOL SplitSymbols(LPSTR, LPSTR, LPSTR, DWORD); + HANDLE FindDebugInfoFile(LPSTR, LPSTR, LPSTR); + HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); + BOOL UpdateDebugInfoFile(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS); + BOOL UpdateDebugInfoFileEx(LPSTR, LPSTR, LPSTR, PIMAGE_NT_HEADERS, DWORD); + BOOL BindImage(LPSTR, LPSTR, LPSTR); + BOOL BindImageEx(DWORD, LPSTR, LPSTR, LPSTR, PIMAGEHLP_STATUS_ROUTINE); + BOOL ReBaseImage(LPSTR, LPSTR, BOOL, BOOL, BOOL, ULONG, ULONG*, ULONG*, + ULONG*, ULONG*, ULONG); + PLOADED_IMAGE ImageLoad(LPSTR, LPSTR); + BOOL ImageUnload(PLOADED_IMAGE); + PIMAGE_NT_HEADERS ImageNtHeader(PVOID); + PVOID ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); + PIMAGE_SECTION_HEADER ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); + PVOID ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, + PIMAGE_SECTION_HEADER*); + BOOL MapAndLoad(LPSTR, LPSTR, PLOADED_IMAGE, BOOL, BOOL); + BOOL GetImageConfigInformation(PLOADED_IMAGE, + PIMAGE_LOAD_CONFIG_DIRECTORY); + DWORD GetImageUnusedHeaderBytes(PLOADED_IMAGE, LPDWORD); + BOOL SetImageConfigInformation(PLOADED_IMAGE, + PIMAGE_LOAD_CONFIG_DIRECTORY); + BOOL UnMapAndLoad(PLOADED_IMAGE); + PIMAGE_DEBUG_INFORMATION MapDebugInformation(HANDLE, LPSTR, LPSTR, DWORD); + BOOL UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); + HANDLE FindExecutableImage(LPSTR, LPSTR, LPSTR); + BOOL SearchTreeForFile(LPSTR, LPSTR, LPSTR); + BOOL MakeSureDirectoryPathExists(LPCSTR); + DWORD UnDecorateSymbolName(LPCSTR, LPSTR, DWORD, DWORD); + BOOL StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, + PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, + PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE); + LPAPI_VERSION ImagehlpApiVersion(); + LPAPI_VERSION ImagehlpApiVersionEx(LPAPI_VERSION); + DWORD GetTimestampForLoadedLibrary(HMODULE); + BOOL RemovePrivateCvSymbolic(PCHAR, PCHAR*, ULONG*); + VOID RemoveRelocations(PCHAR); + DWORD SymSetOptions(DWORD); + DWORD SymGetOptions(); + BOOL SymCleanup(HANDLE); + BOOL SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); + BOOL SymEnumerateSymbols(HANDLE, DWORD, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); + BOOL EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); + LPVOID SymFunctionTableAccess(HANDLE, DWORD); + BOOL SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); + DWORD SymGetModuleBase(HANDLE, DWORD); + BOOL SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); + BOOL SymGetSymFromName(HANDLE, LPSTR, PIMAGEHLP_SYMBOL); + BOOL SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); + BOOL SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); + BOOL SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); + BOOL SymGetLineFromName(HANDLE, LPSTR, LPSTR, DWORD, PLONG, + PIMAGEHLP_LINE); + BOOL SymGetLineNext(HANDLE, PIMAGEHLP_LINE); + BOOL SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); + BOOL SymMatchFileName(LPSTR, LPSTR, LPSTR*, LPSTR*); + BOOL SymInitialize(HANDLE, LPSTR, BOOL); + BOOL SymGetSearchPath(HANDLE, LPSTR, DWORD); + BOOL SymSetSearchPath(HANDLE, LPSTR); + BOOL SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD); + BOOL SymUnloadModule(HANDLE, DWORD); + BOOL SymUnDName(PIMAGEHLP_SYMBOL, LPSTR, DWORD); + BOOL SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); + BOOL ImageGetDigestStream(HANDLE, DWORD, DIGEST_FUNCTION, DIGEST_HANDLE); + BOOL ImageAddCertificate(HANDLE, LPWIN_CERTIFICATE, PDWORD); + BOOL ImageRemoveCertificate(HANDLE, DWORD); + BOOL ImageEnumerateCertificates(HANDLE, WORD, PDWORD, PDWORD, DWORD); + BOOL ImageGetCertificateData(HANDLE, DWORD, LPWIN_CERTIFICATE, PDWORD); + BOOL ImageGetCertificateHeader(HANDLE, DWORD, LPWIN_CERTIFICATE); + BOOL CopyPdb(CHAR*, CHAR*, BOOL); + BOOL RemovePrivateCvSymbolicEx(PCHAR, ULONG, PCHAR*, ULONG*); +} + +version (Unicode) { + alias MapFileAndCheckSumW MapFileAndCheckSum; +} else { + alias MapFileAndCheckSumA MapFileAndCheckSum; +} Index: src/win32/imm.d ================================================================== --- src/win32/imm.d +++ src/win32/imm.d @@ -1,482 +1,482 @@ -/***********************************************************************\ -* imm.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.imm; -pragma(lib, "imm32.lib"); - -import win32.windef, win32.wingdi; -import win32.winuser; // for the MFS_xxx enums. -private import win32.w32api; - -const WM_CONVERTREQUESTEX = 0x108; -const WM_IME_STARTCOMPOSITION = 0x10D; -const WM_IME_ENDCOMPOSITION = 0x10E; -const WM_IME_COMPOSITION = 0x10F; -const WM_IME_KEYLAST = 0x10F; -const WM_IME_SETCONTEXT = 0x281; -const WM_IME_NOTIFY = 0x282; -const WM_IME_CONTROL = 0x283; -const WM_IME_COMPOSITIONFULL = 0x284; -const WM_IME_SELECT = 0x285; -const WM_IME_CHAR = 0x286; -static if (WINVER >= 0x500) { - const WM_IME_REQUEST = 0x288; -} -const WM_IME_KEYDOWN = 0x290; -const WM_IME_KEYUP = 0x291; - - -const IMC_GETCANDIDATEPOS=7; -const IMC_SETCANDIDATEPOS=8; -const IMC_GETCOMPOSITIONFONT=9; -const IMC_SETCOMPOSITIONFONT=10; -const IMC_GETCOMPOSITIONWINDOW=11; -const IMC_SETCOMPOSITIONWINDOW=12; -const IMC_GETSTATUSWINDOWPOS=15; -const IMC_SETSTATUSWINDOWPOS=16; -const IMC_CLOSESTATUSWINDOW=0x21; -const IMC_OPENSTATUSWINDOW=0x22; -const IMN_CLOSESTATUSWINDOW=1; -const IMN_OPENSTATUSWINDOW=2; -const IMN_CHANGECANDIDATE=3; -const IMN_CLOSECANDIDATE=4; -const IMN_OPENCANDIDATE=5; -const IMN_SETCONVERSIONMODE=6; -const IMN_SETSENTENCEMODE=7; -const IMN_SETOPENSTATUS=8; -const IMN_SETCANDIDATEPOS=9; -const IMN_SETCOMPOSITIONFONT=10; -const IMN_SETCOMPOSITIONWINDOW=11; -const IMN_SETSTATUSWINDOWPOS=12; -const IMN_GUIDELINE=13; -const IMN_PRIVATE=14; - -const NI_OPENCANDIDATE=16; -const NI_CLOSECANDIDATE=17; -const NI_SELECTCANDIDATESTR=18; -const NI_CHANGECANDIDATELIST=19; -const NI_FINALIZECONVERSIONRESULT=20; -const NI_COMPOSITIONSTR=21; -const NI_SETCANDIDATE_PAGESTART=22; -const NI_SETCANDIDATE_PAGESIZE=23; -const NI_IMEMENUSELECTED=24; - -const ISC_SHOWUICANDIDATEWINDOW=1; -const ISC_SHOWUICOMPOSITIONWINDOW=0x80000000; -const ISC_SHOWUIGUIDELINE=0x40000000; -const ISC_SHOWUIALLCANDIDATEWINDOW=15; -const ISC_SHOWUIALL=0xC000000F; - -const CPS_COMPLETE=1; -const CPS_CONVERT=2; -const CPS_REVERT=3; -const CPS_CANCEL=4; - -const IME_CHOTKEY_IME_NONIME_TOGGLE=16; -const IME_CHOTKEY_SHAPE_TOGGLE=17; -const IME_CHOTKEY_SYMBOL_TOGGLE=18; -const IME_JHOTKEY_CLOSE_OPEN=0x30; -const IME_KHOTKEY_SHAPE_TOGGLE=0x50; -const IME_KHOTKEY_HANJACONVERT=0x51; -const IME_KHOTKEY_ENGLISH=0x52; -const IME_THOTKEY_IME_NONIME_TOGGLE=0x70; -const IME_THOTKEY_SHAPE_TOGGLE=0x71; -const IME_THOTKEY_SYMBOL_TOGGLE=0x72; -const IME_HOTKEY_DSWITCH_FIRST=256; -const IME_HOTKEY_DSWITCH_LAST=0x11F; -const IME_ITHOTKEY_RESEND_RESULTSTR=512; -const IME_ITHOTKEY_PREVIOUS_COMPOSITION=513; -const IME_ITHOTKEY_UISTYLE_TOGGLE=514; - -const GCS_COMPREADSTR=1; -const GCS_COMPREADATTR=2; -const GCS_COMPREADCLAUSE=4; -const GCS_COMPSTR=8; -const GCS_COMPATTR=16; -const GCS_COMPCLAUSE=32; -const GCS_CURSORPOS=128; -const GCS_DELTASTART=256; -const GCS_RESULTREADSTR=512; -const GCS_RESULTREADCLAUSE=1024; -const GCS_RESULTSTR=2048; -const GCS_RESULTCLAUSE=4096; - -const CS_INSERTCHAR=0x2000; -const CS_NOMOVECARET=0x4000; - -const IMEVER_0310=0x3000A; -const IMEVER_0400=0x40000; - -const IME_PROP_AT_CARET=0x10000; -const IME_PROP_SPECIAL_UI=0x20000; -const IME_PROP_CANDLIST_START_FROM_1=0x40000; -const IME_PROP_UNICODE=0x80000; - -const UI_CAP_2700=1; -const UI_CAP_ROT90=2; -const UI_CAP_ROTANY=4; - -const SCS_CAP_COMPSTR=1; -const SCS_CAP_MAKEREAD=2; -const SELECT_CAP_CONVERSION=1; -const SELECT_CAP_SENTENCE=2; -const GGL_LEVEL=1; -const GGL_INDEX=2; -const GGL_STRING=3; -const GGL_PRIVATE=4; -const GL_LEVEL_NOGUIDELINE=0; -const GL_LEVEL_FATAL=1; -const GL_LEVEL_ERROR=2; -const GL_LEVEL_WARNING=3; -const GL_LEVEL_INFORMATION=4; -const GL_ID_UNKNOWN=0; -const GL_ID_NOMODULE=1; -const GL_ID_NODICTIONARY=16; -const GL_ID_CANNOTSAVE=17; -const GL_ID_NOCONVERT=32; -const GL_ID_TYPINGERROR=33; -const GL_ID_TOOMANYSTROKE=34; -const GL_ID_READINGCONFLICT=35; -const GL_ID_INPUTREADING=36; -const GL_ID_INPUTRADICAL=37; -const GL_ID_INPUTCODE=38; -const GL_ID_INPUTSYMBOL=39; -const GL_ID_CHOOSECANDIDATE=40; -const GL_ID_REVERSECONVERSION=41; -const GL_ID_PRIVATE_FIRST=0x8000; -const GL_ID_PRIVATE_LAST=0xFFFF; - -const DWORD IGP_GETIMEVERSION = -4; -const IGP_PROPERTY=4; -const IGP_CONVERSION=8; -const IGP_SENTENCE=12; -const IGP_UI=16; -const IGP_SETCOMPSTR=0x14; -const IGP_SELECT=0x18; - -const SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR; -const SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR; -const SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE; - -const ATTR_INPUT=0; -const ATTR_TARGET_CONVERTED=1; -const ATTR_CONVERTED=2; -const ATTR_TARGET_NOTCONVERTED=3; -const ATTR_INPUT_ERROR=4; -const ATTR_FIXEDCONVERTED=5; -const CFS_DEFAULT=0; -const CFS_RECT=1; -const CFS_POINT=2; -const CFS_SCREEN=4; -const CFS_FORCE_POSITION=32; -const CFS_CANDIDATEPOS=64; -const CFS_EXCLUDE=128; -const GCL_CONVERSION=1; -const GCL_REVERSECONVERSION=2; -const GCL_REVERSE_LENGTH=3; - -const IME_CMODE_ALPHANUMERIC=0; -const IME_CMODE_NATIVE=1; -const IME_CMODE_CHINESE=IME_CMODE_NATIVE; -const IME_CMODE_HANGEUL=IME_CMODE_NATIVE; -const IME_CMODE_HANGUL=IME_CMODE_NATIVE; -const IME_CMODE_JAPANESE=IME_CMODE_NATIVE; -const IME_CMODE_KATAKANA=2; -const IME_CMODE_LANGUAGE=3; -const IME_CMODE_FULLSHAPE=8; -const IME_CMODE_ROMAN=16; -const IME_CMODE_CHARCODE=32; -const IME_CMODE_HANJACONVERT=64; -const IME_CMODE_SOFTKBD=128; -const IME_CMODE_NOCONVERSION=256; -const IME_CMODE_EUDC=512; -const IME_CMODE_SYMBOL=1024; -const IME_CMODE_FIXED=2048; -const IME_SMODE_NONE=0; -const IME_SMODE_PLAURALCLAUSE=1; -const IME_SMODE_SINGLECONVERT=2; -const IME_SMODE_AUTOMATIC=4; -const IME_SMODE_PHRASEPREDICT=8; -const IME_CAND_UNKNOWN=0; -const IME_CAND_READ=1; -const IME_CAND_CODE=2; -const IME_CAND_MEANING=3; -const IME_CAND_RADICAL=4; -const IME_CAND_STROKE=5; -const IMM_ERROR_NODATA=(-1); -const IMM_ERROR_GENERAL=(-2); -const IME_CONFIG_GENERAL=1; -const IME_CONFIG_REGISTERWORD=2; -const IME_CONFIG_SELECTDICTIONARY=3; -const IME_ESC_QUERY_SUPPORT=3; -const IME_ESC_RESERVED_FIRST=4; -const IME_ESC_RESERVED_LAST=0x7FF; -const IME_ESC_PRIVATE_FIRST=0x800; -const IME_ESC_PRIVATE_LAST=0xFFF; -const IME_ESC_SEQUENCE_TO_INTERNAL=0x1001; -const IME_ESC_GET_EUDC_DICTIONARY=0x1003; -const IME_ESC_SET_EUDC_DICTIONARY=0x1004; -const IME_ESC_MAX_KEY=0x1005; -const IME_ESC_IME_NAME=0x1006; -const IME_ESC_SYNC_HOTKEY=0x1007; -const IME_ESC_HANJA_MODE=0x1008; -const IME_ESC_AUTOMATA=0x1009; -const IME_REGWORD_STYLE_EUDC=1; -const IME_REGWORD_STYLE_USER_FIRST=0x80000000; -const IME_REGWORD_STYLE_USER_LAST=0xFFFFFFFF; - -const SOFTKEYBOARD_TYPE_T1=1; -const SOFTKEYBOARD_TYPE_C1=2; - -const IMEMENUITEM_STRING_SIZE=80; - -const MOD_ALT=1; -const MOD_CONTROL=2; -const MOD_SHIFT=4; -const MOD_WIN=8; -const MOD_IGNORE_ALL_MODIFIER=1024; -const MOD_ON_KEYUP=2048; -const MOD_RIGHT=16384; -const MOD_LEFT=32768; - -const IACE_CHILDREN=1; -const IACE_DEFAULT=16; -const IACE_IGNORENOCONTEXT=32; - -const IGIMIF_RIGHTMENU=1; - -const IGIMII_CMODE=1; -const IGIMII_SMODE=2; -const IGIMII_CONFIGURE=4; -const IGIMII_TOOLS=8; -const IGIMII_HELP=16; -const IGIMII_OTHER=32; -const IGIMII_INPUTTOOLS=64; - -const IMFT_RADIOCHECK=1; -const IMFT_SEPARATOR=2; -const IMFT_SUBMENU=4; - -const IMFS_GRAYED=MFS_GRAYED; -const IMFS_DISABLED=MFS_DISABLED; -const IMFS_CHECKED=MFS_CHECKED; -const IMFS_HILITE=MFS_HILITE; -const IMFS_ENABLED=MFS_ENABLED; -const IMFS_UNCHECKED=MFS_UNCHECKED; -const IMFS_UNHILITE=MFS_UNHILITE; -const IMFS_DEFAULT=MFS_DEFAULT; - -const STYLE_DESCRIPTION_SIZE=32; - -alias DWORD HIMC; -alias DWORD HIMCC; -alias HKL* LPHKL; - -struct COMPOSITIONFORM{ - DWORD dwStyle; - POINT ptCurrentPos; - RECT rcArea; -} -alias COMPOSITIONFORM* PCOMPOSITIONFORM, LPCOMPOSITIONFORM; - -struct CANDIDATEFORM{ - DWORD dwIndex; - DWORD dwStyle; - POINT ptCurrentPos; - RECT rcArea; -} -alias CANDIDATEFORM* PCANDIDATEFORM, LPCANDIDATEFORM; - -struct CANDIDATELIST{ - DWORD dwSize; - DWORD dwStyle; - DWORD dwCount; - DWORD dwSelection; - DWORD dwPageStart; - DWORD dwPageSize; - DWORD dwOffset[1]; -} -alias CANDIDATELIST* PCANDIDATELIST, LPCANDIDATELIST; - -struct REGISTERWORDA{ - LPSTR lpReading; - LPSTR lpWord; -} -alias REGISTERWORDA* PREGISTERWORDA, LPREGISTERWORDA; - -struct REGISTERWORDW{ - LPWSTR lpReading; - LPWSTR lpWord; -} -alias REGISTERWORDW* PREGISTERWORDW, LPREGISTERWORDW; - -struct STYLEBUFA{ - DWORD dwStyle; - CHAR szDescription[STYLE_DESCRIPTION_SIZE]; -} -alias STYLEBUFA* PSTYLEBUFA, LPSTYLEBUFA; - -struct STYLEBUFW{ - DWORD dwStyle; - WCHAR szDescription[STYLE_DESCRIPTION_SIZE]; -} -alias STYLEBUFW* PSTYLEBUFW, LPSTYLEBUFW; - -struct IMEMENUITEMINFOA{ - UINT cbSize = this.sizeof; - UINT fType; - UINT fState; - UINT wID; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - CHAR szString[IMEMENUITEM_STRING_SIZE]; - HBITMAP hbmpItem; -} -alias IMEMENUITEMINFOA* PIMEMENUITEMINFOA, LPIMEMENUITEMINFOA; - -struct IMEMENUITEMINFOW{ - UINT cbSize = this.sizeof; - UINT fType; - UINT fState; - UINT wID; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - WCHAR szString[IMEMENUITEM_STRING_SIZE]; - HBITMAP hbmpItem; -} -alias IMEMENUITEMINFOW* PIMEMENUITEMINFOW, LPIMEMENUITEMINFOW; - -alias int function (LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; -alias int function (LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; - -version(Unicode) { - alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; - alias REGISTERWORDW REGISTERWORD; - alias IMEMENUITEMINFOW IMEMENUITEMINFO; - alias STYLEBUFW STYLEBUF; -} else { - alias REGISTERWORDENUMPROCA REGISTERWORDENUMPROC; - alias REGISTERWORDA REGISTERWORD; - alias IMEMENUITEMINFOA IMEMENUITEMINFO; - alias STYLEBUFA STYLEBUF; -} - -alias STYLEBUF* PSTYLEBUF, LPSTYLEBUF; -alias REGISTERWORD* PREGISTERWORD, LPREGISTERWORD; -alias IMEMENUITEMINFO* PIMEMENUITEMINFO, LPIMEMENUITEMINFO; - - -extern (Windows): -HKL ImmInstallIMEA(LPCSTR, LPCSTR); -HKL ImmInstallIMEW(LPCWSTR, LPCWSTR); -HWND ImmGetDefaultIMEWnd(HWND); -UINT ImmGetDescriptionA(HKL, LPSTR, UINT); -UINT ImmGetDescriptionW(HKL, LPWSTR, UINT); -UINT ImmGetIMEFileNameA(HKL, LPSTR, UINT); -UINT ImmGetIMEFileNameW(HKL, LPWSTR, UINT); -DWORD ImmGetProperty(HKL, DWORD); -BOOL ImmIsIME(HKL); -BOOL ImmSimulateHotKey(HWND, DWORD); -HIMC ImmCreateContext(); -BOOL ImmDestroyContext(HIMC); -HIMC ImmGetContext(HWND); -BOOL ImmReleaseContext(HWND, HIMC); -HIMC ImmAssociateContext(HWND, HIMC); -LONG ImmGetCompositionStringA(HIMC, DWORD, PVOID, DWORD); -LONG ImmGetCompositionStringW(HIMC, DWORD, PVOID, DWORD); -BOOL ImmSetCompositionStringA(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); -BOOL ImmSetCompositionStringW(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); -DWORD ImmGetCandidateListCountA(HIMC, PDWORD); -DWORD ImmGetCandidateListCountW(HIMC, PDWORD); -DWORD ImmGetCandidateListA(HIMC, DWORD, PCANDIDATELIST, DWORD); -DWORD ImmGetCandidateListW(HIMC, DWORD, PCANDIDATELIST, DWORD); -DWORD ImmGetGuideLineA(HIMC, DWORD, LPSTR, DWORD); -DWORD ImmGetGuideLineW(HIMC, DWORD, LPWSTR, DWORD); -BOOL ImmGetConversionStatus(HIMC, LPDWORD, PDWORD); -BOOL ImmSetConversionStatus(HIMC, DWORD, DWORD); -BOOL ImmGetOpenStatus(HIMC); -BOOL ImmSetOpenStatus(HIMC, BOOL); - -BOOL ImmGetCompositionFontA(HIMC, LPLOGFONTA); -BOOL ImmGetCompositionFontW(HIMC, LPLOGFONTW); -BOOL ImmSetCompositionFontA(HIMC, LPLOGFONTA); -BOOL ImmSetCompositionFontW(HIMC, LPLOGFONTW); - -BOOL ImmConfigureIMEA(HKL, HWND, DWORD, PVOID); -BOOL ImmConfigureIMEW(HKL, HWND, DWORD, PVOID); -LRESULT ImmEscapeA(HKL, HIMC, UINT, PVOID); -LRESULT ImmEscapeW(HKL, HIMC, UINT, PVOID); -DWORD ImmGetConversionListA(HKL, HIMC, LPCSTR, PCANDIDATELIST, DWORD, UINT); -DWORD ImmGetConversionListW(HKL, HIMC, LPCWSTR, PCANDIDATELIST, DWORD, UINT); -BOOL ImmNotifyIME(HIMC, DWORD, DWORD, DWORD); -BOOL ImmGetStatusWindowPos(HIMC, LPPOINT); -BOOL ImmSetStatusWindowPos(HIMC, LPPOINT); -BOOL ImmGetCompositionWindow(HIMC, PCOMPOSITIONFORM); -BOOL ImmSetCompositionWindow(HIMC, PCOMPOSITIONFORM); -BOOL ImmGetCandidateWindow(HIMC, DWORD, PCANDIDATEFORM); -BOOL ImmSetCandidateWindow(HIMC, PCANDIDATEFORM); -BOOL ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM); -UINT ImmGetVirtualKey(HWND); -BOOL ImmRegisterWordA(HKL, LPCSTR, DWORD, LPCSTR); -BOOL ImmRegisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); -BOOL ImmUnregisterWordA(HKL, LPCSTR, DWORD, LPCSTR); -BOOL ImmUnregisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); -UINT ImmGetRegisterWordStyleA(HKL, UINT, PSTYLEBUFA); -UINT ImmGetRegisterWordStyleW(HKL, UINT, PSTYLEBUFW); -UINT ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR, DWORD, LPCSTR, PVOID); -UINT ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, PVOID); -BOOL EnableEUDC(BOOL); -BOOL ImmDisableIME(DWORD); -DWORD ImmGetImeMenuItemsA(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD); -DWORD ImmGetImeMenuItemsW(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); - -version(Unicode) { - alias ImmEnumRegisterWordW ImmEnumRegisterWord; - alias ImmGetRegisterWordStyleW ImmGetRegisterWordStyle; - alias ImmUnregisterWordW ImmUnregisterWord; - alias ImmRegisterWordW ImmRegisterWord; - alias ImmInstallIMEW ImmInstallIME; - alias ImmIsUIMessageW ImmIsUIMessage; - alias ImmGetConversionListW ImmGetConversionList; - alias ImmEscapeW ImmEscape; - alias ImmConfigureIMEW ImmConfigureIME; - alias ImmSetCompositionFontW ImmSetCompositionFont; - alias ImmGetCompositionFontW ImmGetCompositionFont; - alias ImmGetGuideLineW ImmGetGuideLine; - alias ImmGetCandidateListW ImmGetCandidateList; - alias ImmGetCandidateListCountW ImmGetCandidateListCount; - alias ImmSetCompositionStringW ImmSetCompositionString; - alias ImmGetCompositionStringW ImmGetCompositionString; - alias ImmGetDescriptionW ImmGetDescription; - alias ImmGetIMEFileNameW ImmGetIMEFileName; - alias ImmGetImeMenuItemsW ImmGetImeMenuItems; -} else { - alias ImmEnumRegisterWordA ImmEnumRegisterWord; - alias ImmGetRegisterWordStyleA ImmGetRegisterWordStyle; - alias ImmUnregisterWordA ImmUnregisterWord; - alias ImmRegisterWordA ImmRegisterWord; - alias ImmInstallIMEA ImmInstallIME; - alias ImmIsUIMessageA ImmIsUIMessage; - alias ImmGetConversionListA ImmGetConversionList; - alias ImmEscapeA ImmEscape; - alias ImmConfigureIMEA ImmConfigureIME; - alias ImmSetCompositionFontA ImmSetCompositionFont; - alias ImmGetCompositionFontA ImmGetCompositionFont; - alias ImmGetGuideLineA ImmGetGuideLine; - alias ImmGetCandidateListA ImmGetCandidateList; - alias ImmGetCandidateListCountA ImmGetCandidateListCount; - alias ImmSetCompositionStringA ImmSetCompositionString; - alias ImmGetCompositionStringA ImmGetCompositionString; - alias ImmGetDescriptionA ImmGetDescription; - alias ImmGetIMEFileNameA ImmGetIMEFileName; - alias ImmGetImeMenuItemsW ImmGetImeMenuItems; -} +/***********************************************************************\ +* imm.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.imm; +pragma(lib, "imm32"); + +import win32.windef, win32.wingdi; +import win32.winuser; // for the MFS_xxx enums. +private import win32.w32api; + +const WM_CONVERTREQUESTEX = 0x108; +const WM_IME_STARTCOMPOSITION = 0x10D; +const WM_IME_ENDCOMPOSITION = 0x10E; +const WM_IME_COMPOSITION = 0x10F; +const WM_IME_KEYLAST = 0x10F; +const WM_IME_SETCONTEXT = 0x281; +const WM_IME_NOTIFY = 0x282; +const WM_IME_CONTROL = 0x283; +const WM_IME_COMPOSITIONFULL = 0x284; +const WM_IME_SELECT = 0x285; +const WM_IME_CHAR = 0x286; +static if (_WIN32_WINNT >= 0x500) { + const WM_IME_REQUEST = 0x288; +} +const WM_IME_KEYDOWN = 0x290; +const WM_IME_KEYUP = 0x291; + + +const IMC_GETCANDIDATEPOS=7; +const IMC_SETCANDIDATEPOS=8; +const IMC_GETCOMPOSITIONFONT=9; +const IMC_SETCOMPOSITIONFONT=10; +const IMC_GETCOMPOSITIONWINDOW=11; +const IMC_SETCOMPOSITIONWINDOW=12; +const IMC_GETSTATUSWINDOWPOS=15; +const IMC_SETSTATUSWINDOWPOS=16; +const IMC_CLOSESTATUSWINDOW=0x21; +const IMC_OPENSTATUSWINDOW=0x22; +const IMN_CLOSESTATUSWINDOW=1; +const IMN_OPENSTATUSWINDOW=2; +const IMN_CHANGECANDIDATE=3; +const IMN_CLOSECANDIDATE=4; +const IMN_OPENCANDIDATE=5; +const IMN_SETCONVERSIONMODE=6; +const IMN_SETSENTENCEMODE=7; +const IMN_SETOPENSTATUS=8; +const IMN_SETCANDIDATEPOS=9; +const IMN_SETCOMPOSITIONFONT=10; +const IMN_SETCOMPOSITIONWINDOW=11; +const IMN_SETSTATUSWINDOWPOS=12; +const IMN_GUIDELINE=13; +const IMN_PRIVATE=14; + +const NI_OPENCANDIDATE=16; +const NI_CLOSECANDIDATE=17; +const NI_SELECTCANDIDATESTR=18; +const NI_CHANGECANDIDATELIST=19; +const NI_FINALIZECONVERSIONRESULT=20; +const NI_COMPOSITIONSTR=21; +const NI_SETCANDIDATE_PAGESTART=22; +const NI_SETCANDIDATE_PAGESIZE=23; +const NI_IMEMENUSELECTED=24; + +const ISC_SHOWUICANDIDATEWINDOW=1; +const ISC_SHOWUICOMPOSITIONWINDOW=0x80000000; +const ISC_SHOWUIGUIDELINE=0x40000000; +const ISC_SHOWUIALLCANDIDATEWINDOW=15; +const ISC_SHOWUIALL=0xC000000F; + +const CPS_COMPLETE=1; +const CPS_CONVERT=2; +const CPS_REVERT=3; +const CPS_CANCEL=4; + +const IME_CHOTKEY_IME_NONIME_TOGGLE=16; +const IME_CHOTKEY_SHAPE_TOGGLE=17; +const IME_CHOTKEY_SYMBOL_TOGGLE=18; +const IME_JHOTKEY_CLOSE_OPEN=0x30; +const IME_KHOTKEY_SHAPE_TOGGLE=0x50; +const IME_KHOTKEY_HANJACONVERT=0x51; +const IME_KHOTKEY_ENGLISH=0x52; +const IME_THOTKEY_IME_NONIME_TOGGLE=0x70; +const IME_THOTKEY_SHAPE_TOGGLE=0x71; +const IME_THOTKEY_SYMBOL_TOGGLE=0x72; +const IME_HOTKEY_DSWITCH_FIRST=256; +const IME_HOTKEY_DSWITCH_LAST=0x11F; +const IME_ITHOTKEY_RESEND_RESULTSTR=512; +const IME_ITHOTKEY_PREVIOUS_COMPOSITION=513; +const IME_ITHOTKEY_UISTYLE_TOGGLE=514; + +const GCS_COMPREADSTR=1; +const GCS_COMPREADATTR=2; +const GCS_COMPREADCLAUSE=4; +const GCS_COMPSTR=8; +const GCS_COMPATTR=16; +const GCS_COMPCLAUSE=32; +const GCS_CURSORPOS=128; +const GCS_DELTASTART=256; +const GCS_RESULTREADSTR=512; +const GCS_RESULTREADCLAUSE=1024; +const GCS_RESULTSTR=2048; +const GCS_RESULTCLAUSE=4096; + +const CS_INSERTCHAR=0x2000; +const CS_NOMOVECARET=0x4000; + +const IMEVER_0310=0x3000A; +const IMEVER_0400=0x40000; + +const IME_PROP_AT_CARET=0x10000; +const IME_PROP_SPECIAL_UI=0x20000; +const IME_PROP_CANDLIST_START_FROM_1=0x40000; +const IME_PROP_UNICODE=0x80000; + +const UI_CAP_2700=1; +const UI_CAP_ROT90=2; +const UI_CAP_ROTANY=4; + +const SCS_CAP_COMPSTR=1; +const SCS_CAP_MAKEREAD=2; +const SELECT_CAP_CONVERSION=1; +const SELECT_CAP_SENTENCE=2; +const GGL_LEVEL=1; +const GGL_INDEX=2; +const GGL_STRING=3; +const GGL_PRIVATE=4; +const GL_LEVEL_NOGUIDELINE=0; +const GL_LEVEL_FATAL=1; +const GL_LEVEL_ERROR=2; +const GL_LEVEL_WARNING=3; +const GL_LEVEL_INFORMATION=4; +const GL_ID_UNKNOWN=0; +const GL_ID_NOMODULE=1; +const GL_ID_NODICTIONARY=16; +const GL_ID_CANNOTSAVE=17; +const GL_ID_NOCONVERT=32; +const GL_ID_TYPINGERROR=33; +const GL_ID_TOOMANYSTROKE=34; +const GL_ID_READINGCONFLICT=35; +const GL_ID_INPUTREADING=36; +const GL_ID_INPUTRADICAL=37; +const GL_ID_INPUTCODE=38; +const GL_ID_INPUTSYMBOL=39; +const GL_ID_CHOOSECANDIDATE=40; +const GL_ID_REVERSECONVERSION=41; +const GL_ID_PRIVATE_FIRST=0x8000; +const GL_ID_PRIVATE_LAST=0xFFFF; + +const DWORD IGP_GETIMEVERSION = -4; +const IGP_PROPERTY=4; +const IGP_CONVERSION=8; +const IGP_SENTENCE=12; +const IGP_UI=16; +const IGP_SETCOMPSTR=0x14; +const IGP_SELECT=0x18; + +const SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR; +const SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR; +const SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE; + +const ATTR_INPUT=0; +const ATTR_TARGET_CONVERTED=1; +const ATTR_CONVERTED=2; +const ATTR_TARGET_NOTCONVERTED=3; +const ATTR_INPUT_ERROR=4; +const ATTR_FIXEDCONVERTED=5; +const CFS_DEFAULT=0; +const CFS_RECT=1; +const CFS_POINT=2; +const CFS_SCREEN=4; +const CFS_FORCE_POSITION=32; +const CFS_CANDIDATEPOS=64; +const CFS_EXCLUDE=128; +const GCL_CONVERSION=1; +const GCL_REVERSECONVERSION=2; +const GCL_REVERSE_LENGTH=3; + +const IME_CMODE_ALPHANUMERIC=0; +const IME_CMODE_NATIVE=1; +const IME_CMODE_CHINESE=IME_CMODE_NATIVE; +const IME_CMODE_HANGEUL=IME_CMODE_NATIVE; +const IME_CMODE_HANGUL=IME_CMODE_NATIVE; +const IME_CMODE_JAPANESE=IME_CMODE_NATIVE; +const IME_CMODE_KATAKANA=2; +const IME_CMODE_LANGUAGE=3; +const IME_CMODE_FULLSHAPE=8; +const IME_CMODE_ROMAN=16; +const IME_CMODE_CHARCODE=32; +const IME_CMODE_HANJACONVERT=64; +const IME_CMODE_SOFTKBD=128; +const IME_CMODE_NOCONVERSION=256; +const IME_CMODE_EUDC=512; +const IME_CMODE_SYMBOL=1024; +const IME_CMODE_FIXED=2048; +const IME_SMODE_NONE=0; +const IME_SMODE_PLAURALCLAUSE=1; +const IME_SMODE_SINGLECONVERT=2; +const IME_SMODE_AUTOMATIC=4; +const IME_SMODE_PHRASEPREDICT=8; +const IME_CAND_UNKNOWN=0; +const IME_CAND_READ=1; +const IME_CAND_CODE=2; +const IME_CAND_MEANING=3; +const IME_CAND_RADICAL=4; +const IME_CAND_STROKE=5; +const IMM_ERROR_NODATA=(-1); +const IMM_ERROR_GENERAL=(-2); +const IME_CONFIG_GENERAL=1; +const IME_CONFIG_REGISTERWORD=2; +const IME_CONFIG_SELECTDICTIONARY=3; +const IME_ESC_QUERY_SUPPORT=3; +const IME_ESC_RESERVED_FIRST=4; +const IME_ESC_RESERVED_LAST=0x7FF; +const IME_ESC_PRIVATE_FIRST=0x800; +const IME_ESC_PRIVATE_LAST=0xFFF; +const IME_ESC_SEQUENCE_TO_INTERNAL=0x1001; +const IME_ESC_GET_EUDC_DICTIONARY=0x1003; +const IME_ESC_SET_EUDC_DICTIONARY=0x1004; +const IME_ESC_MAX_KEY=0x1005; +const IME_ESC_IME_NAME=0x1006; +const IME_ESC_SYNC_HOTKEY=0x1007; +const IME_ESC_HANJA_MODE=0x1008; +const IME_ESC_AUTOMATA=0x1009; +const IME_REGWORD_STYLE_EUDC=1; +const IME_REGWORD_STYLE_USER_FIRST=0x80000000; +const IME_REGWORD_STYLE_USER_LAST=0xFFFFFFFF; + +const SOFTKEYBOARD_TYPE_T1=1; +const SOFTKEYBOARD_TYPE_C1=2; + +const IMEMENUITEM_STRING_SIZE=80; + +const MOD_ALT=1; +const MOD_CONTROL=2; +const MOD_SHIFT=4; +const MOD_WIN=8; +const MOD_IGNORE_ALL_MODIFIER=1024; +const MOD_ON_KEYUP=2048; +const MOD_RIGHT=16384; +const MOD_LEFT=32768; + +const IACE_CHILDREN=1; +const IACE_DEFAULT=16; +const IACE_IGNORENOCONTEXT=32; + +const IGIMIF_RIGHTMENU=1; + +const IGIMII_CMODE=1; +const IGIMII_SMODE=2; +const IGIMII_CONFIGURE=4; +const IGIMII_TOOLS=8; +const IGIMII_HELP=16; +const IGIMII_OTHER=32; +const IGIMII_INPUTTOOLS=64; + +const IMFT_RADIOCHECK=1; +const IMFT_SEPARATOR=2; +const IMFT_SUBMENU=4; + +const IMFS_GRAYED=MFS_GRAYED; +const IMFS_DISABLED=MFS_DISABLED; +const IMFS_CHECKED=MFS_CHECKED; +const IMFS_HILITE=MFS_HILITE; +const IMFS_ENABLED=MFS_ENABLED; +const IMFS_UNCHECKED=MFS_UNCHECKED; +const IMFS_UNHILITE=MFS_UNHILITE; +const IMFS_DEFAULT=MFS_DEFAULT; + +const STYLE_DESCRIPTION_SIZE=32; + +alias DWORD HIMC; +alias DWORD HIMCC; +alias HKL* LPHKL; + +struct COMPOSITIONFORM{ + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias COMPOSITIONFORM* PCOMPOSITIONFORM, LPCOMPOSITIONFORM; + +struct CANDIDATEFORM{ + DWORD dwIndex; + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias CANDIDATEFORM* PCANDIDATEFORM, LPCANDIDATEFORM; + +struct CANDIDATELIST{ + DWORD dwSize; + DWORD dwStyle; + DWORD dwCount; + DWORD dwSelection; + DWORD dwPageStart; + DWORD dwPageSize; + DWORD[1] dwOffset; +} +alias CANDIDATELIST* PCANDIDATELIST, LPCANDIDATELIST; + +struct REGISTERWORDA{ + LPSTR lpReading; + LPSTR lpWord; +} +alias REGISTERWORDA* PREGISTERWORDA, LPREGISTERWORDA; + +struct REGISTERWORDW{ + LPWSTR lpReading; + LPWSTR lpWord; +} +alias REGISTERWORDW* PREGISTERWORDW, LPREGISTERWORDW; + +struct STYLEBUFA{ + DWORD dwStyle; + CHAR[STYLE_DESCRIPTION_SIZE] szDescription; +} +alias STYLEBUFA* PSTYLEBUFA, LPSTYLEBUFA; + +struct STYLEBUFW{ + DWORD dwStyle; + WCHAR[STYLE_DESCRIPTION_SIZE] szDescription; +} +alias STYLEBUFW* PSTYLEBUFW, LPSTYLEBUFW; + +struct IMEMENUITEMINFOA{ + UINT cbSize = this.sizeof; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + CHAR[IMEMENUITEM_STRING_SIZE] szString; + HBITMAP hbmpItem; +} +alias IMEMENUITEMINFOA* PIMEMENUITEMINFOA, LPIMEMENUITEMINFOA; + +struct IMEMENUITEMINFOW{ + UINT cbSize = this.sizeof; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + WCHAR[IMEMENUITEM_STRING_SIZE] szString; + HBITMAP hbmpItem; +} +alias IMEMENUITEMINFOW* PIMEMENUITEMINFOW, LPIMEMENUITEMINFOW; + +alias int function (LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; +alias int function (LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; + +version(Unicode) { + alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; + alias REGISTERWORDW REGISTERWORD; + alias IMEMENUITEMINFOW IMEMENUITEMINFO; + alias STYLEBUFW STYLEBUF; +} else { + alias REGISTERWORDENUMPROCA REGISTERWORDENUMPROC; + alias REGISTERWORDA REGISTERWORD; + alias IMEMENUITEMINFOA IMEMENUITEMINFO; + alias STYLEBUFA STYLEBUF; +} + +alias STYLEBUF* PSTYLEBUF, LPSTYLEBUF; +alias REGISTERWORD* PREGISTERWORD, LPREGISTERWORD; +alias IMEMENUITEMINFO* PIMEMENUITEMINFO, LPIMEMENUITEMINFO; + + +extern (Windows): +HKL ImmInstallIMEA(LPCSTR, LPCSTR); +HKL ImmInstallIMEW(LPCWSTR, LPCWSTR); +HWND ImmGetDefaultIMEWnd(HWND); +UINT ImmGetDescriptionA(HKL, LPSTR, UINT); +UINT ImmGetDescriptionW(HKL, LPWSTR, UINT); +UINT ImmGetIMEFileNameA(HKL, LPSTR, UINT); +UINT ImmGetIMEFileNameW(HKL, LPWSTR, UINT); +DWORD ImmGetProperty(HKL, DWORD); +BOOL ImmIsIME(HKL); +BOOL ImmSimulateHotKey(HWND, DWORD); +HIMC ImmCreateContext(); +BOOL ImmDestroyContext(HIMC); +HIMC ImmGetContext(HWND); +BOOL ImmReleaseContext(HWND, HIMC); +HIMC ImmAssociateContext(HWND, HIMC); +LONG ImmGetCompositionStringA(HIMC, DWORD, PVOID, DWORD); +LONG ImmGetCompositionStringW(HIMC, DWORD, PVOID, DWORD); +BOOL ImmSetCompositionStringA(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); +BOOL ImmSetCompositionStringW(HIMC, DWORD, PCVOID, DWORD, PCVOID, DWORD); +DWORD ImmGetCandidateListCountA(HIMC, PDWORD); +DWORD ImmGetCandidateListCountW(HIMC, PDWORD); +DWORD ImmGetCandidateListA(HIMC, DWORD, PCANDIDATELIST, DWORD); +DWORD ImmGetCandidateListW(HIMC, DWORD, PCANDIDATELIST, DWORD); +DWORD ImmGetGuideLineA(HIMC, DWORD, LPSTR, DWORD); +DWORD ImmGetGuideLineW(HIMC, DWORD, LPWSTR, DWORD); +BOOL ImmGetConversionStatus(HIMC, LPDWORD, PDWORD); +BOOL ImmSetConversionStatus(HIMC, DWORD, DWORD); +BOOL ImmGetOpenStatus(HIMC); +BOOL ImmSetOpenStatus(HIMC, BOOL); + +BOOL ImmGetCompositionFontA(HIMC, LPLOGFONTA); +BOOL ImmGetCompositionFontW(HIMC, LPLOGFONTW); +BOOL ImmSetCompositionFontA(HIMC, LPLOGFONTA); +BOOL ImmSetCompositionFontW(HIMC, LPLOGFONTW); + +BOOL ImmConfigureIMEA(HKL, HWND, DWORD, PVOID); +BOOL ImmConfigureIMEW(HKL, HWND, DWORD, PVOID); +LRESULT ImmEscapeA(HKL, HIMC, UINT, PVOID); +LRESULT ImmEscapeW(HKL, HIMC, UINT, PVOID); +DWORD ImmGetConversionListA(HKL, HIMC, LPCSTR, PCANDIDATELIST, DWORD, UINT); +DWORD ImmGetConversionListW(HKL, HIMC, LPCWSTR, PCANDIDATELIST, DWORD, UINT); +BOOL ImmNotifyIME(HIMC, DWORD, DWORD, DWORD); +BOOL ImmGetStatusWindowPos(HIMC, LPPOINT); +BOOL ImmSetStatusWindowPos(HIMC, LPPOINT); +BOOL ImmGetCompositionWindow(HIMC, PCOMPOSITIONFORM); +BOOL ImmSetCompositionWindow(HIMC, PCOMPOSITIONFORM); +BOOL ImmGetCandidateWindow(HIMC, DWORD, PCANDIDATEFORM); +BOOL ImmSetCandidateWindow(HIMC, PCANDIDATEFORM); +BOOL ImmIsUIMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL ImmIsUIMessageW(HWND, UINT, WPARAM, LPARAM); +UINT ImmGetVirtualKey(HWND); +BOOL ImmRegisterWordA(HKL, LPCSTR, DWORD, LPCSTR); +BOOL ImmRegisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); +BOOL ImmUnregisterWordA(HKL, LPCSTR, DWORD, LPCSTR); +BOOL ImmUnregisterWordW(HKL, LPCWSTR, DWORD, LPCWSTR); +UINT ImmGetRegisterWordStyleA(HKL, UINT, PSTYLEBUFA); +UINT ImmGetRegisterWordStyleW(HKL, UINT, PSTYLEBUFW); +UINT ImmEnumRegisterWordA(HKL, REGISTERWORDENUMPROCA, LPCSTR, DWORD, LPCSTR, PVOID); +UINT ImmEnumRegisterWordW(HKL, REGISTERWORDENUMPROCW, LPCWSTR, DWORD, LPCWSTR, PVOID); +BOOL EnableEUDC(BOOL); +BOOL ImmDisableIME(DWORD); +DWORD ImmGetImeMenuItemsA(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD); +DWORD ImmGetImeMenuItemsW(HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); + +version(Unicode) { + alias ImmEnumRegisterWordW ImmEnumRegisterWord; + alias ImmGetRegisterWordStyleW ImmGetRegisterWordStyle; + alias ImmUnregisterWordW ImmUnregisterWord; + alias ImmRegisterWordW ImmRegisterWord; + alias ImmInstallIMEW ImmInstallIME; + alias ImmIsUIMessageW ImmIsUIMessage; + alias ImmGetConversionListW ImmGetConversionList; + alias ImmEscapeW ImmEscape; + alias ImmConfigureIMEW ImmConfigureIME; + alias ImmSetCompositionFontW ImmSetCompositionFont; + alias ImmGetCompositionFontW ImmGetCompositionFont; + alias ImmGetGuideLineW ImmGetGuideLine; + alias ImmGetCandidateListW ImmGetCandidateList; + alias ImmGetCandidateListCountW ImmGetCandidateListCount; + alias ImmSetCompositionStringW ImmSetCompositionString; + alias ImmGetCompositionStringW ImmGetCompositionString; + alias ImmGetDescriptionW ImmGetDescription; + alias ImmGetIMEFileNameW ImmGetIMEFileName; + alias ImmGetImeMenuItemsW ImmGetImeMenuItems; +} else { + alias ImmEnumRegisterWordA ImmEnumRegisterWord; + alias ImmGetRegisterWordStyleA ImmGetRegisterWordStyle; + alias ImmUnregisterWordA ImmUnregisterWord; + alias ImmRegisterWordA ImmRegisterWord; + alias ImmInstallIMEA ImmInstallIME; + alias ImmIsUIMessageA ImmIsUIMessage; + alias ImmGetConversionListA ImmGetConversionList; + alias ImmEscapeA ImmEscape; + alias ImmConfigureIMEA ImmConfigureIME; + alias ImmSetCompositionFontA ImmSetCompositionFont; + alias ImmGetCompositionFontA ImmGetCompositionFont; + alias ImmGetGuideLineA ImmGetGuideLine; + alias ImmGetCandidateListA ImmGetCandidateList; + alias ImmGetCandidateListCountA ImmGetCandidateListCount; + alias ImmSetCompositionStringA ImmSetCompositionString; + alias ImmGetCompositionStringA ImmGetCompositionString; + alias ImmGetDescriptionA ImmGetDescription; + alias ImmGetIMEFileNameA ImmGetIMEFileName; + alias ImmGetImeMenuItemsW ImmGetImeMenuItems; +} Index: src/win32/intshcut.d ================================================================== --- src/win32/intshcut.d +++ src/win32/intshcut.d @@ -1,89 +1,89 @@ -/***********************************************************************\ -* intshcut.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.intshcut; - -private import win32.unknwn, win32.windef; - -enum : SCODE { - E_FLAGS = 0x80041000, - // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000) - URL_E_INVALID_SYNTAX = 0x80041001, - // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001) - URL_E_UNREGISTERED_PROTOCOL = 0x80041002, // etc. - IS_E_EXEC_FAILED = 0x80042002 -} - -enum IURL_SETURL_FLAGS { - IURL_SETURL_FL_GUESS_PROTOCOL = 1, - IURL_SETURL_FL_USE_DEFAULT_PROTOCOL, - ALL_IURL_SETURL_FLAGS -} - -enum IURL_INVOKECOMMAND_FLAGS { - IURL_INVOKECOMMAND_FL_ALLOW_UI = 1, - IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB, - ALL_IURL_INVOKECOMMAND_FLAGS -} - -enum TRANSLATEURL_IN_FLAGS { - TRANSLATEURL_FL_GUESS_PROTOCOL = 1, - TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL, - ALL_TRANSLATEURL_FLAGS -} - -enum URLASSOCIATIONDIALOG_IN_FLAGS { - URLASSOCDLG_FL_USE_DEFAULT_NAME = 1, - URLASSOCDLG_FL_REGISTER_ASSOC, - ALL_URLASSOCDLG_FLAGS -} - -enum MIMEASSOCIATIONDIALOG_IN_FLAGS { - MIMEASSOCDLG_FL_REGISTER_ASSOC = 1, - ALL_MIMEASSOCDLG_FLAGS = MIMEASSOCDLG_FL_REGISTER_ASSOC -} - -struct URLINVOKECOMMANDINFO { - DWORD dwcbSize = URLINVOKECOMMANDINFO.sizeof; - DWORD dwFlags; - HWND hwndParent; - PCSTR pcszVerb; -} -alias URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO; -alias URLINVOKECOMMANDINFO* PURLINVOKECOMMANDINFO, PCURLINVOKECOMMANDINFO; - -interface IUniformResourceLocator : IUnknown { - HRESULT SetURL(PCSTR, DWORD); - HRESULT GetURL(PSTR*); - HRESULT InvokeCommand(PURLINVOKECOMMANDINFO); -} -alias IUniformResourceLocator CIUniformResourceLocator; -alias IUniformResourceLocator* PIUniformResourceLocator, - PCIUniformResourceLocator; - -extern (Windows) { - BOOL InetIsOffline(DWORD); - HRESULT MIMEAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); - HRESULT MIMEAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); - HRESULT TranslateURLA(PCSTR, DWORD, PSTR*); - HRESULT TranslateURLW(PCWSTR, DWORD, PWSTR*); - HRESULT URLAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); - HRESULT URLAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); -} - -version (Unicode) { - alias TranslateURLW TranslateURL; - alias MIMEAssociationDialogW MIMEAssociationDialog; - alias URLAssociationDialogW URLAssociationDialog; -} else { - alias TranslateURLA TranslateURL; - alias MIMEAssociationDialogA MIMEAssociationDialog; - alias URLAssociationDialogA URLAssociationDialog; -} +/***********************************************************************\ +* intshcut.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.intshcut; + +private import win32.unknwn, win32.windef; + +enum : SCODE { + E_FLAGS = 0x80041000, + // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000) + URL_E_INVALID_SYNTAX = 0x80041001, + // = MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001) + URL_E_UNREGISTERED_PROTOCOL = 0x80041002, // etc. + IS_E_EXEC_FAILED = 0x80042002 +} + +enum IURL_SETURL_FLAGS { + IURL_SETURL_FL_GUESS_PROTOCOL = 1, + IURL_SETURL_FL_USE_DEFAULT_PROTOCOL, + ALL_IURL_SETURL_FLAGS +} + +enum IURL_INVOKECOMMAND_FLAGS { + IURL_INVOKECOMMAND_FL_ALLOW_UI = 1, + IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB, + ALL_IURL_INVOKECOMMAND_FLAGS +} + +enum TRANSLATEURL_IN_FLAGS { + TRANSLATEURL_FL_GUESS_PROTOCOL = 1, + TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL, + ALL_TRANSLATEURL_FLAGS +} + +enum URLASSOCIATIONDIALOG_IN_FLAGS { + URLASSOCDLG_FL_USE_DEFAULT_NAME = 1, + URLASSOCDLG_FL_REGISTER_ASSOC, + ALL_URLASSOCDLG_FLAGS +} + +enum MIMEASSOCIATIONDIALOG_IN_FLAGS { + MIMEASSOCDLG_FL_REGISTER_ASSOC = 1, + ALL_MIMEASSOCDLG_FLAGS = MIMEASSOCDLG_FL_REGISTER_ASSOC +} + +struct URLINVOKECOMMANDINFO { + DWORD dwcbSize = URLINVOKECOMMANDINFO.sizeof; + DWORD dwFlags; + HWND hwndParent; + PCSTR pcszVerb; +} +alias URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO; +alias URLINVOKECOMMANDINFO* PURLINVOKECOMMANDINFO, PCURLINVOKECOMMANDINFO; + +interface IUniformResourceLocator : IUnknown { + HRESULT SetURL(PCSTR, DWORD); + HRESULT GetURL(PSTR*); + HRESULT InvokeCommand(PURLINVOKECOMMANDINFO); +} +//alias typeof(*(IUniformResourceLocator.init)) CIUniformResourceLocator; // value-type of interface not representable in D +alias IUniformResourceLocator PIUniformResourceLocator, + PCIUniformResourceLocator; + +extern (Windows) { + BOOL InetIsOffline(DWORD); + HRESULT MIMEAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); + HRESULT MIMEAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); + HRESULT TranslateURLA(PCSTR, DWORD, PSTR*); + HRESULT TranslateURLW(PCWSTR, DWORD, PWSTR*); + HRESULT URLAssociationDialogA(HWND, DWORD, PCSTR, PCSTR, PSTR, UINT); + HRESULT URLAssociationDialogW(HWND, DWORD, PCWSTR, PCWSTR, PWSTR, UINT); +} + +version (Unicode) { + alias TranslateURLW TranslateURL; + alias MIMEAssociationDialogW MIMEAssociationDialog; + alias URLAssociationDialogW URLAssociationDialog; +} else { + alias TranslateURLA TranslateURL; + alias MIMEAssociationDialogA MIMEAssociationDialog; + alias URLAssociationDialogA URLAssociationDialog; +} Index: src/win32/ipexport.d ================================================================== --- src/win32/ipexport.d +++ src/win32/ipexport.d @@ -1,108 +1,108 @@ -/***********************************************************************\ -* ipexport.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.ipexport; - -private import win32.windef; - -const size_t MAX_ADAPTER_NAME = 128; - -// IP STATUS flags -enum : IP_STATUS { - IP_SUCCESS = 0, - IP_STATUS_BASE = 11000, - IP_BUF_TOO_SMALL, - IP_DEST_NET_UNREACHABLE, - IP_DEST_HOST_UNREACHABLE, - IP_DEST_PROT_UNREACHABLE, - IP_DEST_PORT_UNREACHABLE, - IP_NO_RESOURCES, - IP_BAD_OPTION, - IP_HW_ERROR, - IP_PACKET_TOO_BIG, - IP_REQ_TIMED_OUT, - IP_BAD_REQ, - IP_BAD_ROUTE, - IP_TTL_EXPIRED_TRANSIT, - IP_TTL_EXPIRED_REASSEM, - IP_PARAM_PROBLEM, - IP_SOURCE_QUENCH, - IP_OPTION_TOO_BIG, - IP_BAD_DESTINATION, - IP_ADDR_DELETED, - IP_SPEC_MTU_CHANGE, - IP_MTU_CHANGE, - IP_UNLOAD, // = IP_STATUS_BASE + 22 - IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, - MAX_IP_STATUS = IP_GENERAL_FAILURE, - IP_PENDING = IP_STATUS_BASE + 255 -} - -// IP header Flags values -const byte IP_FLAG_DF = 2; - -// IP Option types -enum : ubyte { - IP_OPT_EOL = 0, - IP_OPT_NOP = 0x01, - IP_OPT_RR = 0x07, - IP_OPT_SECURITY = 0x82, - IP_OPT_LSRR = 0x83, - IP_OPT_SSRR = 0x89, - IP_OPT_TS = 0x44, - IP_OPT_SID = 0x88, - IP_OPT_ROUTER_ALERT = 0x94 -} - -const ubyte MAX_OPT_SIZE = 40; - -alias uint IPAddr, IPMask, IP_STATUS; - -struct IP_OPTION_INFORMATION { - ubyte Ttl; - ubyte Tos; - ubyte Flags; - ubyte OptionsSize; - ubyte* OptionsData; -} -alias IP_OPTION_INFORMATION* PIP_OPTION_INFORMATION; - -struct ICMP_ECHO_REPLY { - IPAddr Address; - uint Status; - uint RoundTripTime; - ushort DataSize; - ushort Reserved; - void* Data; - IP_OPTION_INFORMATION Options; -} -alias ICMP_ECHO_REPLY* PICMP_ECHO_REPLY; - -struct IP_ADAPTER_INDEX_MAP { - ULONG Index; - WCHAR[MAX_ADAPTER_NAME] Name; -} -alias IP_ADAPTER_INDEX_MAP* PIP_ADAPTER_INDEX_MAP; - -struct IP_INTERFACE_INFO { - LONG NumAdapters; - IP_ADAPTER_INDEX_MAP[1] _Adapter; - - IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; } -} -alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO; - -struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { - ULONG NumAdapters; - IPAddr[1] _Address; - - IPAddr* Address() { return _Address.ptr; } -} -alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; +/***********************************************************************\ +* ipexport.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ipexport; + +private import win32.windef; + +const size_t MAX_ADAPTER_NAME = 128; + +// IP STATUS flags +enum : IP_STATUS { + IP_SUCCESS = 0, + IP_STATUS_BASE = 11000, + IP_BUF_TOO_SMALL, + IP_DEST_NET_UNREACHABLE, + IP_DEST_HOST_UNREACHABLE, + IP_DEST_PROT_UNREACHABLE, + IP_DEST_PORT_UNREACHABLE, + IP_NO_RESOURCES, + IP_BAD_OPTION, + IP_HW_ERROR, + IP_PACKET_TOO_BIG, + IP_REQ_TIMED_OUT, + IP_BAD_REQ, + IP_BAD_ROUTE, + IP_TTL_EXPIRED_TRANSIT, + IP_TTL_EXPIRED_REASSEM, + IP_PARAM_PROBLEM, + IP_SOURCE_QUENCH, + IP_OPTION_TOO_BIG, + IP_BAD_DESTINATION, + IP_ADDR_DELETED, + IP_SPEC_MTU_CHANGE, + IP_MTU_CHANGE, + IP_UNLOAD, // = IP_STATUS_BASE + 22 + IP_GENERAL_FAILURE = IP_STATUS_BASE + 50, + MAX_IP_STATUS = IP_GENERAL_FAILURE, + IP_PENDING = IP_STATUS_BASE + 255 +} + +// IP header Flags values +const byte IP_FLAG_DF = 2; + +// IP Option types +enum : ubyte { + IP_OPT_EOL = 0, + IP_OPT_NOP = 0x01, + IP_OPT_RR = 0x07, + IP_OPT_SECURITY = 0x82, + IP_OPT_LSRR = 0x83, + IP_OPT_SSRR = 0x89, + IP_OPT_TS = 0x44, + IP_OPT_SID = 0x88, + IP_OPT_ROUTER_ALERT = 0x94 +} + +const ubyte MAX_OPT_SIZE = 40; + +alias uint IPAddr, IPMask, IP_STATUS; + +struct IP_OPTION_INFORMATION { + ubyte Ttl; + ubyte Tos; + ubyte Flags; + ubyte OptionsSize; + ubyte* OptionsData; +} +alias IP_OPTION_INFORMATION* PIP_OPTION_INFORMATION; + +struct ICMP_ECHO_REPLY { + IPAddr Address; + uint Status; + uint RoundTripTime; + ushort DataSize; + ushort Reserved; + void* Data; + IP_OPTION_INFORMATION Options; +} +alias ICMP_ECHO_REPLY* PICMP_ECHO_REPLY; + +struct IP_ADAPTER_INDEX_MAP { + ULONG Index; + WCHAR[MAX_ADAPTER_NAME] Name; +} +alias IP_ADAPTER_INDEX_MAP* PIP_ADAPTER_INDEX_MAP; + +struct IP_INTERFACE_INFO { + LONG NumAdapters; + IP_ADAPTER_INDEX_MAP[1] _Adapter; + + IP_ADAPTER_INDEX_MAP* Adapter() { return _Adapter.ptr; } +} +alias IP_INTERFACE_INFO* PIP_INTERFACE_INFO; + +struct IP_UNIDIRECTIONAL_ADAPTER_ADDRESS { + ULONG NumAdapters; + IPAddr[1] _Address; + + IPAddr* Address() { return _Address.ptr; } +} +alias IP_UNIDIRECTIONAL_ADAPTER_ADDRESS* PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; Index: src/win32/iphlpapi.d ================================================================== --- src/win32/iphlpapi.d +++ src/win32/iphlpapi.d @@ -1,62 +1,62 @@ -/***********************************************************************\ -* iphlpapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.iphlpapi; - -import win32.ipexport, win32.iprtrmib, win32.iptypes; -private import win32.winbase, win32.windef; - -extern (Windows) { - DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG); - DWORD CreateIpForwardEntry(PMIB_IPFORWARDROW); - DWORD CreateIpNetEntry(PMIB_IPNETROW); - DWORD CreateProxyArpEntry(DWORD, DWORD, DWORD); - DWORD DeleteIPAddress(ULONG); - DWORD DeleteIpForwardEntry(PMIB_IPFORWARDROW); - DWORD DeleteIpNetEntry(PMIB_IPNETROW); - DWORD DeleteProxyArpEntry(DWORD, DWORD, DWORD); - DWORD EnableRouter(HANDLE*, OVERLAPPED*); - DWORD FlushIpNetTable(DWORD); - DWORD GetAdapterIndex(LPWSTR, PULONG); - DWORD GetAdaptersInfo(PIP_ADAPTER_INFO, PULONG); - DWORD GetBestInterface(IPAddr, PDWORD); - DWORD GetBestRoute(DWORD, DWORD, PMIB_IPFORWARDROW); - DWORD GetFriendlyIfIndex(DWORD); - DWORD GetIcmpStatistics(PMIB_ICMP); - DWORD GetIfEntry(PMIB_IFROW); - DWORD GetIfTable(PMIB_IFTABLE, PULONG, BOOL); - DWORD GetInterfaceInfo(PIP_INTERFACE_INFO, PULONG); - DWORD GetIpAddrTable(PMIB_IPADDRTABLE, PULONG, BOOL); - DWORD GetIpForwardTable(PMIB_IPFORWARDTABLE, PULONG, BOOL); - DWORD GetIpNetTable(PMIB_IPNETTABLE, PULONG, BOOL); - DWORD GetIpStatistics(PMIB_IPSTATS); - DWORD GetNetworkParams(PFIXED_INFO, PULONG); - DWORD GetNumberOfInterfaces(PDWORD); - DWORD GetPerAdapterInfo(ULONG, PIP_PER_ADAPTER_INFO, PULONG); - BOOL GetRTTAndHopCount(IPAddr, PULONG, ULONG, PULONG); - DWORD GetTcpStatistics(PMIB_TCPSTATS); - DWORD GetTcpTable(PMIB_TCPTABLE, PDWORD, BOOL); - DWORD GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, - PULONG); - DWORD GetUdpStatistics(PMIB_UDPSTATS); - DWORD GetUdpTable(PMIB_UDPTABLE, PDWORD, BOOL); - DWORD IpReleaseAddress(PIP_ADAPTER_INDEX_MAP); - DWORD IpRenewAddress(PIP_ADAPTER_INDEX_MAP); - DWORD NotifyAddrChange(PHANDLE, LPOVERLAPPED); - DWORD NotifyRouteChange(PHANDLE, LPOVERLAPPED); - DWORD SendARP(IPAddr, IPAddr, PULONG, PULONG); - DWORD SetIfEntry(PMIB_IFROW); - DWORD SetIpForwardEntry(PMIB_IPFORWARDROW); - DWORD SetIpNetEntry(PMIB_IPNETROW); - DWORD SetIpStatistics(PMIB_IPSTATS); - DWORD SetIpTTL(UINT); - DWORD SetTcpEntry(PMIB_TCPROW); - DWORD UnenableRouter(OVERLAPPED*, LPDWORD); -} +/***********************************************************************\ +* iphlpapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.iphlpapi; + +import win32.ipexport, win32.iprtrmib, win32.iptypes; +private import win32.winbase, win32.windef; + +extern (Windows) { + DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG); + DWORD CreateIpForwardEntry(PMIB_IPFORWARDROW); + DWORD CreateIpNetEntry(PMIB_IPNETROW); + DWORD CreateProxyArpEntry(DWORD, DWORD, DWORD); + DWORD DeleteIPAddress(ULONG); + DWORD DeleteIpForwardEntry(PMIB_IPFORWARDROW); + DWORD DeleteIpNetEntry(PMIB_IPNETROW); + DWORD DeleteProxyArpEntry(DWORD, DWORD, DWORD); + DWORD EnableRouter(HANDLE*, OVERLAPPED*); + DWORD FlushIpNetTable(DWORD); + DWORD GetAdapterIndex(LPWSTR, PULONG); + DWORD GetAdaptersInfo(PIP_ADAPTER_INFO, PULONG); + DWORD GetBestInterface(IPAddr, PDWORD); + DWORD GetBestRoute(DWORD, DWORD, PMIB_IPFORWARDROW); + DWORD GetFriendlyIfIndex(DWORD); + DWORD GetIcmpStatistics(PMIB_ICMP); + DWORD GetIfEntry(PMIB_IFROW); + DWORD GetIfTable(PMIB_IFTABLE, PULONG, BOOL); + DWORD GetInterfaceInfo(PIP_INTERFACE_INFO, PULONG); + DWORD GetIpAddrTable(PMIB_IPADDRTABLE, PULONG, BOOL); + DWORD GetIpForwardTable(PMIB_IPFORWARDTABLE, PULONG, BOOL); + DWORD GetIpNetTable(PMIB_IPNETTABLE, PULONG, BOOL); + DWORD GetIpStatistics(PMIB_IPSTATS); + DWORD GetNetworkParams(PFIXED_INFO, PULONG); + DWORD GetNumberOfInterfaces(PDWORD); + DWORD GetPerAdapterInfo(ULONG, PIP_PER_ADAPTER_INFO, PULONG); + BOOL GetRTTAndHopCount(IPAddr, PULONG, ULONG, PULONG); + DWORD GetTcpStatistics(PMIB_TCPSTATS); + DWORD GetTcpTable(PMIB_TCPTABLE, PDWORD, BOOL); + DWORD GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS, + PULONG); + DWORD GetUdpStatistics(PMIB_UDPSTATS); + DWORD GetUdpTable(PMIB_UDPTABLE, PDWORD, BOOL); + DWORD IpReleaseAddress(PIP_ADAPTER_INDEX_MAP); + DWORD IpRenewAddress(PIP_ADAPTER_INDEX_MAP); + DWORD NotifyAddrChange(PHANDLE, LPOVERLAPPED); + DWORD NotifyRouteChange(PHANDLE, LPOVERLAPPED); + DWORD SendARP(IPAddr, IPAddr, PULONG, PULONG); + DWORD SetIfEntry(PMIB_IFROW); + DWORD SetIpForwardEntry(PMIB_IPFORWARDROW); + DWORD SetIpNetEntry(PMIB_IPNETROW); + DWORD SetIpStatistics(PMIB_IPSTATS); + DWORD SetIpTTL(UINT); + DWORD SetTcpEntry(PMIB_TCPROW); + DWORD UnenableRouter(OVERLAPPED*, LPDWORD); +} Index: src/win32/ipifcons.d ================================================================== --- src/win32/ipifcons.d +++ src/win32/ipifcons.d @@ -1,38 +1,38 @@ -/***********************************************************************\ -* ipifcons.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.ipifcons; - -// FIXME: check types of constants - -enum { - MIB_IF_ADMIN_STATUS_UP = 1, - MIB_IF_ADMIN_STATUS_DOWN, - MIB_IF_ADMIN_STATUS_TESTING, -} - -enum { - MIB_IF_OPER_STATUS_NON_OPERATIONAL, - MIB_IF_OPER_STATUS_UNREACHABLE, - MIB_IF_OPER_STATUS_DISCONNECTED, - MIB_IF_OPER_STATUS_CONNECTING, - MIB_IF_OPER_STATUS_CONNECTED, - MIB_IF_OPER_STATUS_OPERATIONAL // = 5 -} - -enum { - MIB_IF_TYPE_OTHER = 1, - MIB_IF_TYPE_ETHERNET = 6, - MIB_IF_TYPE_TOKENRING = 9, - MIB_IF_TYPE_FDDI = 15, - MIB_IF_TYPE_PPP = 23, - MIB_IF_TYPE_LOOPBACK = 24, - MIB_IF_TYPE_SLIP = 28 -} +/***********************************************************************\ +* ipifcons.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ipifcons; + +// FIXME: check types of constants + +enum { + MIB_IF_ADMIN_STATUS_UP = 1, + MIB_IF_ADMIN_STATUS_DOWN, + MIB_IF_ADMIN_STATUS_TESTING, +} + +enum { + MIB_IF_OPER_STATUS_NON_OPERATIONAL, + MIB_IF_OPER_STATUS_UNREACHABLE, + MIB_IF_OPER_STATUS_DISCONNECTED, + MIB_IF_OPER_STATUS_CONNECTING, + MIB_IF_OPER_STATUS_CONNECTED, + MIB_IF_OPER_STATUS_OPERATIONAL // = 5 +} + +enum { + MIB_IF_TYPE_OTHER = 1, + MIB_IF_TYPE_ETHERNET = 6, + MIB_IF_TYPE_TOKENRING = 9, + MIB_IF_TYPE_FDDI = 15, + MIB_IF_TYPE_PPP = 23, + MIB_IF_TYPE_LOOPBACK = 24, + MIB_IF_TYPE_SLIP = 28 +} Index: src/win32/iprtrmib.d ================================================================== --- src/win32/iprtrmib.d +++ src/win32/iprtrmib.d @@ -1,267 +1,267 @@ -/***********************************************************************\ -* iprtrmib.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.iprtrmib; - -import win32.ipifcons; -private import win32.windef; - -// FIXME: check types of constants - -const size_t - MAXLEN_PHYSADDR = 8, - MAXLEN_IFDESCR = 256, - MAX_INTERFACE_NAME_LEN = 256; - -enum { - MIB_IPNET_TYPE_OTHER = 1, - MIB_IPNET_TYPE_INVALID, - MIB_IPNET_TYPE_DYNAMIC, - MIB_IPNET_TYPE_STATIC -} - -enum { - MIB_TCP_RTO_OTHER = 1, - MIB_TCP_RTO_CONSTANT, - MIB_TCP_RTO_RSRE, - MIB_TCP_RTO_VANJ -} - -enum { - MIB_TCP_STATE_CLOSED = 1, - MIB_TCP_STATE_LISTEN, - MIB_TCP_STATE_SYN_SENT, - MIB_TCP_STATE_SYN_RCVD, - MIB_TCP_STATE_ESTAB, - MIB_TCP_STATE_FIN_WAIT1, - MIB_TCP_STATE_FIN_WAIT2, - MIB_TCP_STATE_CLOSE_WAIT, - MIB_TCP_STATE_CLOSING, - MIB_TCP_STATE_LAST_ACK, - MIB_TCP_STATE_TIME_WAIT, - MIB_TCP_STATE_DELETE_TCB // = 12 -} - -const DWORD - MIB_USE_CURRENT_TTL = -1, - MIB_USE_CURRENT_FORWARDING = -1, - MIB_TCP_MAXCONN_DYNAMIC = -1; - -struct MIB_IPADDRROW { - DWORD dwAddr; - DWORD dwIndex; - DWORD dwMask; - DWORD dwBCastAddr; - DWORD dwReasmSize; - ushort unused1; - ushort unused2; -} -alias MIB_IPADDRROW* PMIB_IPADDRROW; - -struct MIB_IPADDRTABLE { - DWORD dwNumEntries; - MIB_IPADDRROW[1] _table; - - MIB_IPADDRROW* table() { return _table.ptr; } -} -alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE; - -struct MIB_IPFORWARDROW { - DWORD dwForwardDest; - DWORD dwForwardMask; - DWORD dwForwardPolicy; - DWORD dwForwardNextHop; - DWORD dwForwardIfIndex; - DWORD dwForwardType; - DWORD dwForwardProto; - DWORD dwForwardAge; - DWORD dwForwardNextHopAS; - DWORD dwForwardMetric1; - DWORD dwForwardMetric2; - DWORD dwForwardMetric3; - DWORD dwForwardMetric4; - DWORD dwForwardMetric5; -} -alias MIB_IPFORWARDROW* PMIB_IPFORWARDROW; - -struct MIB_IPFORWARDTABLE { - DWORD dwNumEntries; - MIB_IPFORWARDROW[1] _table; - - MIB_IPFORWARDROW* table() { return _table.ptr; } -} -alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE; - -struct MIB_IPNETROW { - DWORD dwIndex; - DWORD dwPhysAddrLen; - BYTE[MAXLEN_PHYSADDR] bPhysAddr; - DWORD dwAddr; - DWORD dwType; -} -alias MIB_IPNETROW* PMIB_IPNETROW; - -struct MIB_IPNETTABLE { - DWORD dwNumEntries; - MIB_IPNETROW[1] _table; - - MIB_IPNETROW* table() { return _table.ptr; } -} -alias MIB_IPNETTABLE* PMIB_IPNETTABLE; - -struct MIBICMPSTATS { - DWORD dwMsgs; - DWORD dwErrors; - DWORD dwDestUnreachs; - DWORD dwTimeExcds; - DWORD dwParmProbs; - DWORD dwSrcQuenchs; - DWORD dwRedirects; - DWORD dwEchos; - DWORD dwEchoReps; - DWORD dwTimestamps; - DWORD dwTimestampReps; - DWORD dwAddrMasks; - DWORD dwAddrMaskReps; -} -alias MIBICMPSTATS* PMIBICMPSTATS; - -struct MIBICMPINFO { - MIBICMPSTATS icmpInStats; - MIBICMPSTATS icmpOutStats; -} -alias MIBICMPINFO* PMIBICMPINFO; - -struct MIB_ICMP { - MIBICMPINFO stats; -} -alias MIB_ICMP* PMIB_ICMP; - -struct MIB_IFROW { - WCHAR[MAX_INTERFACE_NAME_LEN] wszName; - DWORD dwIndex; - DWORD dwType; - DWORD dwMtu; - DWORD dwSpeed; - DWORD dwPhysAddrLen; - BYTE[MAXLEN_PHYSADDR] bPhysAddr; - DWORD dwAdminStatus; - DWORD dwOperStatus; - DWORD dwLastChange; - DWORD dwInOctets; - DWORD dwInUcastPkts; - DWORD dwInNUcastPkts; - DWORD dwInDiscards; - DWORD dwInErrors; - DWORD dwInUnknownProtos; - DWORD dwOutOctets; - DWORD dwOutUcastPkts; - DWORD dwOutNUcastPkts; - DWORD dwOutDiscards; - DWORD dwOutErrors; - DWORD dwOutQLen; - DWORD dwDescrLen; - BYTE[MAXLEN_IFDESCR] bDescr; -} -alias MIB_IFROW* PMIB_IFROW; - -struct MIB_IFTABLE { - DWORD dwNumEntries; - MIB_IFROW[1] _table; - - MIB_IFROW* table() { return _table.ptr; } -} -alias MIB_IFTABLE* PMIB_IFTABLE; - -struct MIB_IPSTATS { - DWORD dwForwarding; - DWORD dwDefaultTTL; - DWORD dwInReceives; - DWORD dwInHdrErrors; - DWORD dwInAddrErrors; - DWORD dwForwDatagrams; - DWORD dwInUnknownProtos; - DWORD dwInDiscards; - DWORD dwInDelivers; - DWORD dwOutRequests; - DWORD dwRoutingDiscards; - DWORD dwOutDiscards; - DWORD dwOutNoRoutes; - DWORD dwReasmTimeout; - DWORD dwReasmReqds; - DWORD dwReasmOks; - DWORD dwReasmFails; - DWORD dwFragOks; - DWORD dwFragFails; - DWORD dwFragCreates; - DWORD dwNumIf; - DWORD dwNumAddr; - DWORD dwNumRoutes; -} -alias MIB_IPSTATS* PMIB_IPSTATS; - -struct MIB_TCPSTATS { - DWORD dwRtoAlgorithm; - DWORD dwRtoMin; - DWORD dwRtoMax; - DWORD dwMaxConn; - DWORD dwActiveOpens; - DWORD dwPassiveOpens; - DWORD dwAttemptFails; - DWORD dwEstabResets; - DWORD dwCurrEstab; - DWORD dwInSegs; - DWORD dwOutSegs; - DWORD dwRetransSegs; - DWORD dwInErrs; - DWORD dwOutRsts; - DWORD dwNumConns; -} -alias MIB_TCPSTATS* PMIB_TCPSTATS; - -struct MIB_TCPROW { - DWORD dwState; - DWORD dwLocalAddr; - DWORD dwLocalPort; - DWORD dwRemoteAddr; - DWORD dwRemotePort; -} -alias MIB_TCPROW* PMIB_TCPROW; - -struct MIB_TCPTABLE { - DWORD dwNumEntries; - MIB_TCPROW[1] _table; - - MIB_TCPROW* table() { return _table.ptr; } -} -alias MIB_TCPTABLE* PMIB_TCPTABLE; - -struct MIB_UDPSTATS { - DWORD dwInDatagrams; - DWORD dwNoPorts; - DWORD dwInErrors; - DWORD dwOutDatagrams; - DWORD dwNumAddrs; -} -alias MIB_UDPSTATS* PMIB_UDPSTATS; - -struct MIB_UDPROW { - DWORD dwLocalAddr; - DWORD dwLocalPort; -} -alias MIB_UDPROW* PMIB_UDPROW; - -struct MIB_UDPTABLE { - DWORD dwNumEntries; - MIB_UDPROW[1] _table; - - MIB_UDPROW* table() { return _table.ptr; } -} -alias MIB_UDPTABLE* PMIB_UDPTABLE; +/***********************************************************************\ +* iprtrmib.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.iprtrmib; + +import win32.ipifcons; +private import win32.windef; + +// FIXME: check types of constants + +const size_t + MAXLEN_PHYSADDR = 8, + MAXLEN_IFDESCR = 256, + MAX_INTERFACE_NAME_LEN = 256; + +enum { + MIB_IPNET_TYPE_OTHER = 1, + MIB_IPNET_TYPE_INVALID, + MIB_IPNET_TYPE_DYNAMIC, + MIB_IPNET_TYPE_STATIC +} + +enum { + MIB_TCP_RTO_OTHER = 1, + MIB_TCP_RTO_CONSTANT, + MIB_TCP_RTO_RSRE, + MIB_TCP_RTO_VANJ +} + +enum { + MIB_TCP_STATE_CLOSED = 1, + MIB_TCP_STATE_LISTEN, + MIB_TCP_STATE_SYN_SENT, + MIB_TCP_STATE_SYN_RCVD, + MIB_TCP_STATE_ESTAB, + MIB_TCP_STATE_FIN_WAIT1, + MIB_TCP_STATE_FIN_WAIT2, + MIB_TCP_STATE_CLOSE_WAIT, + MIB_TCP_STATE_CLOSING, + MIB_TCP_STATE_LAST_ACK, + MIB_TCP_STATE_TIME_WAIT, + MIB_TCP_STATE_DELETE_TCB // = 12 +} + +const DWORD + MIB_USE_CURRENT_TTL = -1, + MIB_USE_CURRENT_FORWARDING = -1, + MIB_TCP_MAXCONN_DYNAMIC = -1; + +struct MIB_IPADDRROW { + DWORD dwAddr; + DWORD dwIndex; + DWORD dwMask; + DWORD dwBCastAddr; + DWORD dwReasmSize; + ushort unused1; + ushort unused2; +} +alias MIB_IPADDRROW* PMIB_IPADDRROW; + +struct MIB_IPADDRTABLE { + DWORD dwNumEntries; + MIB_IPADDRROW[1] _table; + + MIB_IPADDRROW* table() { return _table.ptr; } +} +alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE; + +struct MIB_IPFORWARDROW { + DWORD dwForwardDest; + DWORD dwForwardMask; + DWORD dwForwardPolicy; + DWORD dwForwardNextHop; + DWORD dwForwardIfIndex; + DWORD dwForwardType; + DWORD dwForwardProto; + DWORD dwForwardAge; + DWORD dwForwardNextHopAS; + DWORD dwForwardMetric1; + DWORD dwForwardMetric2; + DWORD dwForwardMetric3; + DWORD dwForwardMetric4; + DWORD dwForwardMetric5; +} +alias MIB_IPFORWARDROW* PMIB_IPFORWARDROW; + +struct MIB_IPFORWARDTABLE { + DWORD dwNumEntries; + MIB_IPFORWARDROW[1] _table; + + MIB_IPFORWARDROW* table() { return _table.ptr; } +} +alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE; + +struct MIB_IPNETROW { + DWORD dwIndex; + DWORD dwPhysAddrLen; + BYTE[MAXLEN_PHYSADDR] bPhysAddr; + DWORD dwAddr; + DWORD dwType; +} +alias MIB_IPNETROW* PMIB_IPNETROW; + +struct MIB_IPNETTABLE { + DWORD dwNumEntries; + MIB_IPNETROW[1] _table; + + MIB_IPNETROW* table() { return _table.ptr; } +} +alias MIB_IPNETTABLE* PMIB_IPNETTABLE; + +struct MIBICMPSTATS { + DWORD dwMsgs; + DWORD dwErrors; + DWORD dwDestUnreachs; + DWORD dwTimeExcds; + DWORD dwParmProbs; + DWORD dwSrcQuenchs; + DWORD dwRedirects; + DWORD dwEchos; + DWORD dwEchoReps; + DWORD dwTimestamps; + DWORD dwTimestampReps; + DWORD dwAddrMasks; + DWORD dwAddrMaskReps; +} +alias MIBICMPSTATS* PMIBICMPSTATS; + +struct MIBICMPINFO { + MIBICMPSTATS icmpInStats; + MIBICMPSTATS icmpOutStats; +} +alias MIBICMPINFO* PMIBICMPINFO; + +struct MIB_ICMP { + MIBICMPINFO stats; +} +alias MIB_ICMP* PMIB_ICMP; + +struct MIB_IFROW { + WCHAR[MAX_INTERFACE_NAME_LEN] wszName; + DWORD dwIndex; + DWORD dwType; + DWORD dwMtu; + DWORD dwSpeed; + DWORD dwPhysAddrLen; + BYTE[MAXLEN_PHYSADDR] bPhysAddr; + DWORD dwAdminStatus; + DWORD dwOperStatus; + DWORD dwLastChange; + DWORD dwInOctets; + DWORD dwInUcastPkts; + DWORD dwInNUcastPkts; + DWORD dwInDiscards; + DWORD dwInErrors; + DWORD dwInUnknownProtos; + DWORD dwOutOctets; + DWORD dwOutUcastPkts; + DWORD dwOutNUcastPkts; + DWORD dwOutDiscards; + DWORD dwOutErrors; + DWORD dwOutQLen; + DWORD dwDescrLen; + BYTE[MAXLEN_IFDESCR] bDescr; +} +alias MIB_IFROW* PMIB_IFROW; + +struct MIB_IFTABLE { + DWORD dwNumEntries; + MIB_IFROW[1] _table; + + MIB_IFROW* table() { return _table.ptr; } +} +alias MIB_IFTABLE* PMIB_IFTABLE; + +struct MIB_IPSTATS { + DWORD dwForwarding; + DWORD dwDefaultTTL; + DWORD dwInReceives; + DWORD dwInHdrErrors; + DWORD dwInAddrErrors; + DWORD dwForwDatagrams; + DWORD dwInUnknownProtos; + DWORD dwInDiscards; + DWORD dwInDelivers; + DWORD dwOutRequests; + DWORD dwRoutingDiscards; + DWORD dwOutDiscards; + DWORD dwOutNoRoutes; + DWORD dwReasmTimeout; + DWORD dwReasmReqds; + DWORD dwReasmOks; + DWORD dwReasmFails; + DWORD dwFragOks; + DWORD dwFragFails; + DWORD dwFragCreates; + DWORD dwNumIf; + DWORD dwNumAddr; + DWORD dwNumRoutes; +} +alias MIB_IPSTATS* PMIB_IPSTATS; + +struct MIB_TCPSTATS { + DWORD dwRtoAlgorithm; + DWORD dwRtoMin; + DWORD dwRtoMax; + DWORD dwMaxConn; + DWORD dwActiveOpens; + DWORD dwPassiveOpens; + DWORD dwAttemptFails; + DWORD dwEstabResets; + DWORD dwCurrEstab; + DWORD dwInSegs; + DWORD dwOutSegs; + DWORD dwRetransSegs; + DWORD dwInErrs; + DWORD dwOutRsts; + DWORD dwNumConns; +} +alias MIB_TCPSTATS* PMIB_TCPSTATS; + +struct MIB_TCPROW { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; +} +alias MIB_TCPROW* PMIB_TCPROW; + +struct MIB_TCPTABLE { + DWORD dwNumEntries; + MIB_TCPROW[1] _table; + + MIB_TCPROW* table() { return _table.ptr; } +} +alias MIB_TCPTABLE* PMIB_TCPTABLE; + +struct MIB_UDPSTATS { + DWORD dwInDatagrams; + DWORD dwNoPorts; + DWORD dwInErrors; + DWORD dwOutDatagrams; + DWORD dwNumAddrs; +} +alias MIB_UDPSTATS* PMIB_UDPSTATS; + +struct MIB_UDPROW { + DWORD dwLocalAddr; + DWORD dwLocalPort; +} +alias MIB_UDPROW* PMIB_UDPROW; + +struct MIB_UDPTABLE { + DWORD dwNumEntries; + MIB_UDPROW[1] _table; + + MIB_UDPROW* table() { return _table.ptr; } +} +alias MIB_UDPTABLE* PMIB_UDPTABLE; Index: src/win32/iptypes.d ================================================================== --- src/win32/iptypes.d +++ src/win32/iptypes.d @@ -1,100 +1,103 @@ -/***********************************************************************\ -* iptypes.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.iptypes; - -import win32.windef; -version(Tango){ - private import tango.stdc.time; -}else{ - private import std.c.time; -} -//#include - -const size_t - DEFAULT_MINIMUM_ENTITIES = 32, - MAX_ADAPTER_ADDRESS_LENGTH = 8, - MAX_ADAPTER_DESCRIPTION_LENGTH = 128, - MAX_ADAPTER_NAME_LENGTH = 256, - MAX_DOMAIN_NAME_LEN = 128, - MAX_HOSTNAME_LEN = 128, - MAX_SCOPE_ID_LEN = 256; - -const UINT - BROADCAST_NODETYPE = 1, - PEER_TO_PEER_NODETYPE = 2, - MIXED_NODETYPE = 4, - HYBRID_NODETYPE = 8; - -enum : UINT { - IF_OTHER_ADAPTERTYPE, - IF_ETHERNET_ADAPTERTYPE, - IF_TOKEN_RING_ADAPTERTYPE, - IF_FDDI_ADAPTERTYPE, - IF_PPP_ADAPTERTYPE, - IF_LOOPBACK_ADAPTERTYPE // = 5 -} - -struct IP_ADDRESS_STRING { - char[16] String; -} -alias IP_ADDRESS_STRING IP_MASK_STRING; -alias IP_ADDRESS_STRING* PIP_ADDRESS_STRING, PIP_MASK_STRING; - -struct IP_ADDR_STRING { - IP_ADDR_STRING* Next; - IP_ADDRESS_STRING IpAddress; - IP_MASK_STRING IpMask; - DWORD Context; -} -alias IP_ADDR_STRING* PIP_ADDR_STRING; - -struct IP_ADAPTER_INFO { - IP_ADAPTER_INFO* Next; - DWORD ComboIndex; - char[MAX_ADAPTER_NAME_LENGTH+4] AdapterName; - char[MAX_ADAPTER_DESCRIPTION_LENGTH+4] Description; - UINT AddressLength; - BYTE[MAX_ADAPTER_ADDRESS_LENGTH] Address; - DWORD Index; - UINT Type; - UINT DhcpEnabled; - PIP_ADDR_STRING CurrentIpAddress; - IP_ADDR_STRING IpAddressList; - IP_ADDR_STRING GatewayList; - IP_ADDR_STRING DhcpServer; - BOOL HaveWins; - IP_ADDR_STRING PrimaryWinsServer; - IP_ADDR_STRING SecondaryWinsServer; - time_t LeaseObtained; - time_t LeaseExpires; -} -alias IP_ADAPTER_INFO* PIP_ADAPTER_INFO; - -struct IP_PER_ADAPTER_INFO { - UINT AutoconfigEnabled; - UINT AutoconfigActive; - PIP_ADDR_STRING CurrentDnsServer; - IP_ADDR_STRING DnsServerList; -} -alias IP_PER_ADAPTER_INFO* PIP_PER_ADAPTER_INFO; - -struct FIXED_INFO { - char[MAX_HOSTNAME_LEN+4] HostName; - char[MAX_DOMAIN_NAME_LEN+4] DomainName; - PIP_ADDR_STRING CurrentDnsServer; - IP_ADDR_STRING DnsServerList; - UINT NodeType; - char[MAX_SCOPE_ID_LEN+4] ScopeId; - UINT EnableRouting; - UINT EnableProxy; - UINT EnableDns; -} -alias FIXED_INFO* PFIXED_INFO; +/***********************************************************************\ +* iptypes.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.iptypes; + +import win32.windef; +version(Tango){ + private import tango.stdc.time; +}else{ + version (D_Version2) + import core.stdc.time; + else + import std.c.time; +} +//#include + +const size_t + DEFAULT_MINIMUM_ENTITIES = 32, + MAX_ADAPTER_ADDRESS_LENGTH = 8, + MAX_ADAPTER_DESCRIPTION_LENGTH = 128, + MAX_ADAPTER_NAME_LENGTH = 256, + MAX_DOMAIN_NAME_LEN = 128, + MAX_HOSTNAME_LEN = 128, + MAX_SCOPE_ID_LEN = 256; + +const UINT + BROADCAST_NODETYPE = 1, + PEER_TO_PEER_NODETYPE = 2, + MIXED_NODETYPE = 4, + HYBRID_NODETYPE = 8; + +enum : UINT { + IF_OTHER_ADAPTERTYPE, + IF_ETHERNET_ADAPTERTYPE, + IF_TOKEN_RING_ADAPTERTYPE, + IF_FDDI_ADAPTERTYPE, + IF_PPP_ADAPTERTYPE, + IF_LOOPBACK_ADAPTERTYPE // = 5 +} + +struct IP_ADDRESS_STRING { + char[16] String; +} +alias IP_ADDRESS_STRING IP_MASK_STRING; +alias IP_ADDRESS_STRING* PIP_ADDRESS_STRING, PIP_MASK_STRING; + +struct IP_ADDR_STRING { + IP_ADDR_STRING* Next; + IP_ADDRESS_STRING IpAddress; + IP_MASK_STRING IpMask; + DWORD Context; +} +alias IP_ADDR_STRING* PIP_ADDR_STRING; + +struct IP_ADAPTER_INFO { + IP_ADAPTER_INFO* Next; + DWORD ComboIndex; + char[MAX_ADAPTER_NAME_LENGTH+4] AdapterName; + char[MAX_ADAPTER_DESCRIPTION_LENGTH+4] Description; + UINT AddressLength; + BYTE[MAX_ADAPTER_ADDRESS_LENGTH] Address; + DWORD Index; + UINT Type; + UINT DhcpEnabled; + PIP_ADDR_STRING CurrentIpAddress; + IP_ADDR_STRING IpAddressList; + IP_ADDR_STRING GatewayList; + IP_ADDR_STRING DhcpServer; + BOOL HaveWins; + IP_ADDR_STRING PrimaryWinsServer; + IP_ADDR_STRING SecondaryWinsServer; + time_t LeaseObtained; + time_t LeaseExpires; +} +alias IP_ADAPTER_INFO* PIP_ADAPTER_INFO; + +struct IP_PER_ADAPTER_INFO { + UINT AutoconfigEnabled; + UINT AutoconfigActive; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; +} +alias IP_PER_ADAPTER_INFO* PIP_PER_ADAPTER_INFO; + +struct FIXED_INFO { + char[MAX_HOSTNAME_LEN+4] HostName; + char[MAX_DOMAIN_NAME_LEN+4] DomainName; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; + UINT NodeType; + char[MAX_SCOPE_ID_LEN+4] ScopeId; + UINT EnableRouting; + UINT EnableProxy; + UINT EnableDns; +} +alias FIXED_INFO* PFIXED_INFO; Index: src/win32/isguids.d ================================================================== --- src/win32/isguids.d +++ src/win32/isguids.d @@ -1,17 +1,17 @@ -/***********************************************************************\ -* isguids.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.isguids; - -private import win32.basetyps; - -extern (C) extern const GUID - CLSID_InternetShortcut, - IID_IUniformResourceLocator; +/***********************************************************************\ +* isguids.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.isguids; + +private import win32.basetyps; + +extern (C) extern const GUID + CLSID_InternetShortcut, + IID_IUniformResourceLocator; Index: src/win32/lm.d ================================================================== --- src/win32/lm.d +++ src/win32/lm.d @@ -1,52 +1,47 @@ -/***********************************************************************\ -* lm.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lm; - -version (WindowsVista) { - version = WIN32_WINNT_ONLY; -} else version (Windows2003) { - version = WIN32_WINNT_ONLY; -} else version (WindowsXP) { - version = WIN32_WINNT_ONLY; -} else version (WindowsNTonly) { - version = WIN32_WINNT_ONLY; -} - -public import win32.lmcons; -public import win32.lmaccess; -public import win32.lmalert; -public import win32.lmat; -public import win32.lmerr; -public import win32.lmshare; -public import win32.lmapibuf; -public import win32.lmremutl; -public import win32.lmrepl; -public import win32.lmuse; -public import win32.lmstats; - -version (WIN32_WINNT_ONLY) { - public import win32.lmwksta; - public import win32.lmserver; -} -version (WindowsVista) { - public import win32.lmmsg; -} else version (Windows2003) { - public import win32.lmmsg; -} else version (WindowsXP) { - public import win32.lmmsg; -} - -// FIXME: Everything in these next files seems to be deprecated! -import win32.lmaudit; -import win32.lmchdev; // can't find many docs for functions from this file. -import win32.lmconfig; -import win32.lmerrlog; -import win32.lmsvc; -import win32.lmsname; // in MinGW, this was publicly included by lm.lmsvc +/***********************************************************************\ +* lm.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lm; +/* removed - now supporting only Win2k up +version (WindowsVista) { + version = WIN32_WINNT_ONLY; +} else version (Windows2003) { + version = WIN32_WINNT_ONLY; +} else version (WindowsXP) { + version = WIN32_WINNT_ONLY; +} else version (WindowsNTonly) { + version = WIN32_WINNT_ONLY; +} +*/ +public import win32.lmcons; +public import win32.lmaccess; +public import win32.lmalert; +public import win32.lmat; +public import win32.lmerr; +public import win32.lmshare; +public import win32.lmapibuf; +public import win32.lmremutl; +public import win32.lmrepl; +public import win32.lmuse; +public import win32.lmstats; +public import win32.lmwksta; +public import win32.lmserver; + +version (Windows2000) { +} else { + public import win32.lmmsg; +} + +// FIXME: Everything in these next files seems to be deprecated! +import win32.lmaudit; +import win32.lmchdev; // can't find many docs for functions from this file. +import win32.lmconfig; +import win32.lmerrlog; +import win32.lmsvc; +import win32.lmsname; // in MinGW, this was publicly included by lm.lmsvc Index: src/win32/lmaccess.d ================================================================== --- src/win32/lmaccess.d +++ src/win32/lmaccess.d @@ -1,759 +1,759 @@ -/***********************************************************************\ -* lmaccess.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmaccess; -pragma(lib, "netapi32.lib"); - -/** - Changes relative to MinGW: - USER_POSIX_ID_PARMNUM and GROUP_POSIX_ID_PARMNUM aren't in MinGW or in - the Platform SDK docs, so they have been dropped from this file. -*/ - -private import win32.lmcons, win32.windef; - -const wchar[] - GROUP_SPECIALGRP_USERS = "USERS", - GROUP_SPECIALGRP_ADMINS = "ADMINS", - GROUP_SPECIALGRP_GUESTS = "GUESTS", - GROUP_SPECIALGRP_LOCAL = "LOCAL"; - -const ACCESS_LETTERS = "RWCXDAP "; - -const NETLOGON_CONTROL_QUERY=1; -const NETLOGON_CONTROL_REPLICATE=2; -const NETLOGON_CONTROL_SYNCHRONIZE=3; -const NETLOGON_CONTROL_PDC_REPLICATE=4; -const NETLOGON_CONTROL_REDISCOVER=5; -const NETLOGON_CONTROL_TC_QUERY=6; -const NETLOGON_CONTROL_BACKUP_CHANGE_LOG=65532; -const NETLOGON_CONTROL_TRUNCATE_LOG=65533; -const NETLOGON_CONTROL_SET_DBFLAG=65534; -const NETLOGON_CONTROL_BREAKPOINT=65535; - -const UF_SCRIPT=1; -const UF_ACCOUNTDISABLE=2; -const UF_HOMEDIR_REQUIRED=8; -const UF_LOCKOUT=16; -const UF_PASSWD_NOTREQD=32; -const UF_PASSWD_CANT_CHANGE=64; -const UF_TEMP_DUPLICATE_ACCOUNT=256; -const UF_NORMAL_ACCOUNT=512; -const UF_INTERDOMAIN_TRUST_ACCOUNT=2048; -const UF_WORKSTATION_TRUST_ACCOUNT=4096; -const UF_SERVER_TRUST_ACCOUNT=8192; -const UF_MNS_LOGON_ACCOUNT=131072; -const UF_MACHINE_ACCOUNT_MASK=UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; -const UF_ACCOUNT_TYPE_MASK=UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; -const UF_DONT_EXPIRE_PASSWD=65536; -const UF_SETTABLE_BITS=UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCKOUT|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD; - -const FILTER_TEMP_DUPLICATE_ACCOUNT=1; -const FILTER_NORMAL_ACCOUNT=2; -const FILTER_INTERDOMAIN_TRUST_ACCOUNT=8; -const FILTER_WORKSTATION_TRUST_ACCOUNT=16; -const FILTER_SERVER_TRUST_ACCOUNT=32; - -const LG_INCLUDE_INDIRECT=1; - -const AF_OP_PRINT=1; -const AF_OP_COMM=2; -const AF_OP_SERVER=4; -const AF_OP_ACCOUNTS=8; -const AF_SETTABLE_BITS=(AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS); - -const UAS_ROLE_STANDALONE=0; -const UAS_ROLE_MEMBER=1; -const UAS_ROLE_BACKUP=2; -const UAS_ROLE_PRIMARY=3; - -const USER_NAME_PARMNUM=1; -const USER_PASSWORD_PARMNUM=3; -const USER_PASSWORD_AGE_PARMNUM=4; -const USER_PRIV_PARMNUM=5; -const USER_HOME_DIR_PARMNUM=6; -const USER_COMMENT_PARMNUM=7; -const USER_FLAGS_PARMNUM=8; -const USER_SCRIPT_PATH_PARMNUM=9; -const USER_AUTH_FLAGS_PARMNUM=10; -const USER_FULL_NAME_PARMNUM=11; -const USER_USR_COMMENT_PARMNUM=12; -const USER_PARMS_PARMNUM=13; -const USER_WORKSTATIONS_PARMNUM=14; -const USER_LAST_LOGON_PARMNUM=15; -const USER_LAST_LOGOFF_PARMNUM=16; -const USER_ACCT_EXPIRES_PARMNUM=17; -const USER_MAX_STORAGE_PARMNUM=18; -const USER_UNITS_PER_WEEK_PARMNUM=19; -const USER_LOGON_HOURS_PARMNUM=20; -const USER_PAD_PW_COUNT_PARMNUM=21; -const USER_NUM_LOGONS_PARMNUM=22; -const USER_LOGON_SERVER_PARMNUM=23; -const USER_COUNTRY_CODE_PARMNUM=24; -const USER_CODE_PAGE_PARMNUM=25; -const USER_PRIMARY_GROUP_PARMNUM=51; -const USER_PROFILE=52; -const USER_PROFILE_PARMNUM=52; -const USER_HOME_DIR_DRIVE_PARMNUM=53; - -const USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM; -const USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM; -const USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM; -const USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM; -const USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM; -const USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM; -const USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM; -const USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM; -const USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM; -const USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM; -const USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM; -const USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM; -const USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM; -const USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM; -const USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM; -const USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM; -const USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM; -const USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM; -const USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM; -const USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM; -const USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM; -const USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM; -const USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM; -const USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM; -const USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM; -// USER_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. -//const USER_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM; -const USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM; - -const NULL_USERSETINFO_PASSWD=" "; -const ULONG TIMEQ_FOREVER=-1; -const ULONG USER_MAXSTORAGE_UNLIMITED=-1; -const ULONG USER_NO_LOGOFF=-1; -const UNITS_PER_DAY=24; -const UNITS_PER_WEEK=168; -const USER_PRIV_MASK=3; -const USER_PRIV_GUEST=0; -const USER_PRIV_USER=1; -const USER_PRIV_ADMIN=2; -const MAX_PASSWD_LEN=PWLEN; -const DEF_MIN_PWLEN=6; -const DEF_PWUNIQUENESS=5; -const DEF_MAX_PWHIST=8; -const DEF_MAX_PWAGE=TIMEQ_FOREVER; -const DEF_MIN_PWAGE=0; -const ULONG DEF_FORCE_LOGOFF=0xffffffff; -const DEF_MAX_BADPW=0; -const ONE_DAY=86400; -const VALIDATED_LOGON=0; -const PASSWORD_EXPIRED=2; -const NON_VALIDATED_LOGON=3; -const VALID_LOGOFF=1; - -const MODALS_MIN_PASSWD_LEN_PARMNUM=1; -const MODALS_MAX_PASSWD_AGE_PARMNUM=2; -const MODALS_MIN_PASSWD_AGE_PARMNUM=3; -const MODALS_FORCE_LOGOFF_PARMNUM=4; -const MODALS_PASSWD_HIST_LEN_PARMNUM=5; -const MODALS_ROLE_PARMNUM=6; -const MODALS_PRIMARY_PARMNUM=7; -const MODALS_DOMAIN_NAME_PARMNUM=8; -const MODALS_DOMAIN_ID_PARMNUM=9; -const MODALS_LOCKOUT_DURATION_PARMNUM=10; -const MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM=11; -const MODALS_LOCKOUT_THRESHOLD_PARMNUM=12; - -const MODALS_MIN_PASSWD_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM); -const MODALS_MAX_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM); -const MODALS_MIN_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM); -const MODALS_FORCE_LOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM); -const MODALS_PASSWD_HIST_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM); -const MODALS_ROLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM); -const MODALS_PRIMARY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM); -const MODALS_DOMAIN_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM); -const MODALS_DOMAIN_ID_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM); - -const GROUPIDMASK=0x8000; -const GROUP_ALL_PARMNUM=0; -const GROUP_NAME_PARMNUM=1; -const GROUP_COMMENT_PARMNUM=2; -const GROUP_ATTRIBUTES_PARMNUM=3; - -const GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM; -const GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM; -const GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM; -const GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM; -// GROUP_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. -//const GROUP_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM; - -const LOCALGROUP_NAME_PARMNUM=1; -const LOCALGROUP_COMMENT_PARMNUM=2; -const MAXPERMENTRIES=64; -const ACCESS_NONE=0; -const ACCESS_READ=1; -const ACCESS_WRITE=2; -const ACCESS_CREATE=4; -const ACCESS_EXEC=8; -const ACCESS_DELETE=16; -const ACCESS_ATRIB=32; -const ACCESS_PERM=64; -const ACCESS_ALL = ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM; -const ACCESS_GROUP=0x8000; -const ACCESS_AUDIT=1; -const ACCESS_SUCCESS_OPEN=16; -const ACCESS_SUCCESS_WRITE=32; -const ACCESS_SUCCESS_DELETE=64; -const ACCESS_SUCCESS_ACL=128; -const ACCESS_SUCCESS_MASK=240; -const ACCESS_FAIL_OPEN=256; -const ACCESS_FAIL_WRITE=512; -const ACCESS_FAIL_DELETE=1024; -const ACCESS_FAIL_ACL=2048; -const ACCESS_FAIL_MASK=3840; -const ACCESS_FAIL_SHIFT=4; -const ACCESS_RESOURCE_NAME_PARMNUM=1; -const ACCESS_ATTR_PARMNUM=2; -const ACCESS_COUNT_PARMNUM=3; -const ACCESS_ACCESS_LIST_PARMNUM=4; - -const ACCESS_RESOURCE_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM); -const ACCESS_ATTR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM); -const ACCESS_COUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM); -const ACCESS_ACCESS_LIST_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM); - -const NETLOGON_REPLICATION_NEEDED=1; -const NETLOGON_REPLICATION_IN_PROGRESS=2; -const NETLOGON_FULL_SYNC_REPLICATION=4; -const NETLOGON_REDO_NEEDED=8; - -struct USER_INFO_0 { - LPWSTR usri0_name; -} -alias USER_INFO_0* PUSER_INFO_0, LPUSER_INFO_0; - -struct USER_INFO_1{ - LPWSTR usri1_name; - LPWSTR usri1_password; - DWORD usri1_password_age; - DWORD usri1_priv; - LPWSTR usri1_home_dir; - LPWSTR usri1_comment; - DWORD usri1_flags; - LPWSTR usri1_script_path; -} -alias USER_INFO_1* PUSER_INFO_1, LPUSER_INFO_1; - -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, LPUSER_INFO_2; - -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, LPUSER_INFO_3; - -struct USER_INFO_10{ - LPWSTR usri10_name; - LPWSTR usri10_comment; - LPWSTR usri10_usr_comment; - LPWSTR usri10_full_name; -} -alias USER_INFO_10* PUSER_INFO_10, LPUSER_INFO_10; - -struct USER_INFO_11{ - LPWSTR usri11_name; - LPWSTR usri11_comment; - LPWSTR usri11_usr_comment; - LPWSTR usri11_full_name; - DWORD usri11_priv; - DWORD usri11_auth_flags; - DWORD usri11_password_age; - LPWSTR usri11_home_dir; - LPWSTR usri11_parms; - DWORD usri11_last_logon; - DWORD usri11_last_logoff; - DWORD usri11_bad_pw_count; - DWORD usri11_num_logons; - LPWSTR usri11_logon_server; - DWORD usri11_country_code; - LPWSTR usri11_workstations; - DWORD usri11_max_storage; - DWORD usri11_units_per_week; - PBYTE usri11_logon_hours; - DWORD usri11_code_page; -} -alias USER_INFO_11* PUSER_INFO_11, LPUSER_INFO_11; - -struct USER_INFO_20 { - LPWSTR usri20_name; - LPWSTR usri20_full_name; - LPWSTR usri20_comment; - DWORD usri20_flags; - DWORD usri20_user_id; -} -alias USER_INFO_20* PUSER_INFO_20, LPUSER_INFO_20; - -struct USER_INFO_21 { - BYTE usri21_password[ENCRYPTED_PWLEN]; -} -alias USER_INFO_21* PUSER_INFO_21, LPUSER_INFO_21; - -struct USER_INFO_22{ - LPWSTR usri22_name; - BYTE usri22_password[ENCRYPTED_PWLEN]; - DWORD usri22_password_age; - DWORD usri22_priv; - LPWSTR usri22_home_dir; - LPWSTR usri22_comment; - DWORD usri22_flags; - LPWSTR usri22_script_path; - DWORD usri22_auth_flags; - LPWSTR usri22_full_name; - LPWSTR usri22_usr_comment; - LPWSTR usri22_parms; - LPWSTR usri22_workstations; - DWORD usri22_last_logon; - DWORD usri22_last_logoff; - DWORD usri22_acct_expires; - DWORD usri22_max_storage; - DWORD usri22_units_per_week; - PBYTE usri22_logon_hours; - DWORD usri22_bad_pw_count; - DWORD usri22_num_logons; - LPWSTR usri22_logon_server; - DWORD usri22_country_code; - DWORD usri22_code_page; -} -alias USER_INFO_22* PUSER_INFO_22, LPUSER_INFO_22; - -struct USER_INFO_1003{ - LPWSTR usri1003_password; -} -alias USER_INFO_1003* PUSER_INFO_1003, LPUSER_INFO_1003; - -struct USER_INFO_1005{ - DWORD usri1005_priv; -} -alias USER_INFO_1005* PUSER_INFO_1005, LPUSER_INFO_1005; - -struct USER_INFO_1006{ - LPWSTR usri1006_home_dir; -} -alias USER_INFO_1006* PUSER_INFO_1006, LPUSER_INFO_1006; - -struct USER_INFO_1007{ - LPWSTR usri1007_comment; -} -alias USER_INFO_1007* PUSER_INFO_1007, LPUSER_INFO_1007; - -struct USER_INFO_1008{ - DWORD usri1008_flags; -} -alias USER_INFO_1008* PUSER_INFO_1008, LPUSER_INFO_1008; - -struct USER_INFO_1009{ - LPWSTR usri1009_script_path; -} -alias USER_INFO_1009* PUSER_INFO_1009, LPUSER_INFO_1009; - -struct USER_INFO_1010{ - DWORD usri1010_auth_flags; -} -alias USER_INFO_1010* PUSER_INFO_1010, LPUSER_INFO_1010; - -struct USER_INFO_1011{ - LPWSTR usri1011_full_name; -} -alias USER_INFO_1011* PUSER_INFO_1011, LPUSER_INFO_1011; - -struct USER_INFO_1012{ - LPWSTR usri1012_usr_comment; -} -alias USER_INFO_1012* PUSER_INFO_1012, LPUSER_INFO_1012; - -struct USER_INFO_1013{ - LPWSTR usri1013_parms; -} -alias USER_INFO_1013* PUSER_INFO_1013, LPUSER_INFO_1013; - -struct USER_INFO_1014{ - LPWSTR usri1014_workstations; -} -alias USER_INFO_1014* PUSER_INFO_1014, LPUSER_INFO_1014; - -struct USER_INFO_1017{ - DWORD usri1017_acct_expires; -} -alias USER_INFO_1017* PUSER_INFO_1017, LPUSER_INFO_1017; - -struct USER_INFO_1018{ - DWORD usri1018_max_storage; -} -alias USER_INFO_1018* PUSER_INFO_1018, LPUSER_INFO_1018; - -struct USER_INFO_1020{ - DWORD usri1020_units_per_week; - PBYTE usri1020_logon_hours; -} -alias USER_INFO_1020* PUSER_INFO_1020, LPUSER_INFO_1020; - -struct USER_INFO_1023{ - LPWSTR usri1023_logon_server; -} -alias USER_INFO_1023* PUSER_INFO_1023, LPUSER_INFO_1023; - -struct USER_INFO_1024{ - DWORD usri1024_country_code; -} -alias USER_INFO_1024* PUSER_INFO_1024, LPUSER_INFO_1024; - -struct USER_INFO_1025{ - DWORD usri1025_code_page; -} -alias USER_INFO_1025* PUSER_INFO_1025, LPUSER_INFO_1025; - -struct USER_INFO_1051{ - DWORD usri1051_primary_group_id; -} -alias USER_INFO_1051* PUSER_INFO_1051, LPUSER_INFO_1051; - -struct USER_INFO_1052{ - LPWSTR usri1052_profile; -} -alias USER_INFO_1052* PUSER_INFO_1052, LPUSER_INFO_1052; - -struct USER_INFO_1053{ - LPWSTR usri1053_home_dir_drive; -} -alias USER_INFO_1053* PUSER_INFO_1053, LPUSER_INFO_1053; - -struct USER_MODALS_INFO_0{ - DWORD usrmod0_min_passwd_len; - DWORD usrmod0_max_passwd_age; - DWORD usrmod0_min_passwd_age; - DWORD usrmod0_force_logoff; - DWORD usrmod0_password_hist_len; -} -alias USER_MODALS_INFO_0* PUSER_MODALS_INFO_0, LPUSER_MODALS_INFO_0; - -struct USER_MODALS_INFO_1{ - DWORD usrmod1_role; - LPWSTR usrmod1_primary; -} -alias USER_MODALS_INFO_1* PUSER_MODALS_INFO_1, LPUSER_MODALS_INFO_1; - -struct USER_MODALS_INFO_2{ - LPWSTR usrmod2_domain_name; - PSID usrmod2_domain_id; -} -alias USER_MODALS_INFO_2* PUSER_MODALS_INFO_2, LPUSER_MODALS_INFO_2; - -struct USER_MODALS_INFO_3{ - DWORD usrmod3_lockout_duration; - DWORD usrmod3_lockout_observation_window; - DWORD usrmod3_lockout_threshold; -} -alias USER_MODALS_INFO_3* PUSER_MODALS_INFO_3, LPUSER_MODALS_INFO_3; - -struct USER_MODALS_INFO_1001{ - DWORD usrmod1001_min_passwd_len; -} -alias USER_MODALS_INFO_1001* PUSER_MODALS_INFO_1001, LPUSER_MODALS_INFO_1001; - -struct USER_MODALS_INFO_1002{ - DWORD usrmod1002_max_passwd_age; -} -alias USER_MODALS_INFO_1002* PUSER_MODALS_INFO_1002, LPUSER_MODALS_INFO_1002; - -struct USER_MODALS_INFO_1003{ - DWORD usrmod1003_min_passwd_age; -} -alias USER_MODALS_INFO_1003* PUSER_MODALS_INFO_1003, LPUSER_MODALS_INFO_1003; - -struct USER_MODALS_INFO_1004{ - DWORD usrmod1004_force_logoff; -} -alias USER_MODALS_INFO_1004* PUSER_MODALS_INFO_1004, LPUSER_MODALS_INFO_1004; - -struct USER_MODALS_INFO_1005{ - DWORD usrmod1005_password_hist_len; -} -alias USER_MODALS_INFO_1005* PUSER_MODALS_INFO_1005, LPUSER_MODALS_INFO_1005; - -struct USER_MODALS_INFO_1006{ - DWORD usrmod1006_role; -} -alias USER_MODALS_INFO_1006* PUSER_MODALS_INFO_1006, LPUSER_MODALS_INFO_1006; - -struct USER_MODALS_INFO_1007{ - LPWSTR usrmod1007_primary; -} -alias USER_MODALS_INFO_1007* PUSER_MODALS_INFO_1007, LPUSER_MODALS_INFO_1007; - -struct GROUP_INFO_0{ - LPWSTR grpi0_name; -} -alias GROUP_INFO_0* PGROUP_INFO_0, LPGROUP_INFO_0; - -struct GROUP_INFO_1{ - LPWSTR grpi1_name; - LPWSTR grpi1_comment; -} -alias GROUP_INFO_1* PGROUP_INFO_1, LPGROUP_INFO_1; - -struct GROUP_INFO_2{ - LPWSTR grpi2_name; - LPWSTR grpi2_comment; - DWORD grpi2_group_id; - DWORD grpi2_attributes; -} -alias GROUP_INFO_2* PGROUP_INFO_2; - -struct GROUP_INFO_1002{ - LPWSTR grpi1002_comment; -} -alias GROUP_INFO_1002* PGROUP_INFO_1002, LPGROUP_INFO_1002; - -struct GROUP_INFO_1005{ - DWORD grpi1005_attributes; -} -alias GROUP_INFO_1005* PGROUP_INFO_1005, LPGROUP_INFO_1005; - -struct GROUP_USERS_INFO_0{ - LPWSTR grui0_name; -} -alias GROUP_USERS_INFO_0* PGROUP_USERS_INFO_0, LPGROUP_USERS_INFO_0; - -struct GROUP_USERS_INFO_1{ - LPWSTR grui1_name; - DWORD grui1_attributes; -} -alias GROUP_USERS_INFO_1* PGROUP_USERS_INFO_1, LPGROUP_USERS_INFO_1; - -struct LOCALGROUP_INFO_0{ - LPWSTR lgrpi0_name; -} -alias LOCALGROUP_INFO_0* PLOCALGROUP_INFO_0, LPLOCALGROUP_INFO_0; - -struct LOCALGROUP_INFO_1{ - LPWSTR lgrpi1_name; - LPWSTR lgrpi1_comment; -} -alias LOCALGROUP_INFO_1* PLOCALGROUP_INFO_1, LPLOCALGROUP_INFO_1; - -struct LOCALGROUP_INFO_1002{ - LPWSTR lgrpi1002_comment; -} -alias LOCALGROUP_INFO_1002* PLOCALGROUP_INFO_1002, LPLOCALGROUP_INFO_1002; - -struct LOCALGROUP_MEMBERS_INFO_0{ - PSID lgrmi0_sid; -} -alias LOCALGROUP_MEMBERS_INFO_0* PLOCALGROUP_MEMBERS_INFO_0, LPLOCALGROUP_MEMBERS_INFO_0; - -struct LOCALGROUP_MEMBERS_INFO_1{ - PSID lgrmi1_sid; - SID_NAME_USE lgrmi1_sidusage; - LPWSTR lgrmi1_name; -} -alias LOCALGROUP_MEMBERS_INFO_1* PLOCALGROUP_MEMBERS_INFO_1, LPLOCALGROUP_MEMBERS_INFO_1; - -struct LOCALGROUP_MEMBERS_INFO_2{ - PSID lgrmi2_sid; - SID_NAME_USE lgrmi2_sidusage; - LPWSTR lgrmi2_domainandname; -} -alias LOCALGROUP_MEMBERS_INFO_2* PLOCALGROUP_MEMBERS_INFO_2, LPLOCALGROUP_MEMBERS_INFO_2; - -struct LOCALGROUP_MEMBERS_INFO_3{ - LPWSTR lgrmi3_domainandname; -} -alias LOCALGROUP_MEMBERS_INFO_3* PLOCALGROUP_MEMBERS_INFO_3, LPLOCALGROUP_MEMBERS_INFO_3; - -struct LOCALGROUP_USERS_INFO_0{ - LPWSTR lgrui0_name; -} -alias LOCALGROUP_USERS_INFO_0* PLOCALGROUP_USERS_INFO_0, LPLOCALGROUP_USERS_INFO_0; - -struct NET_DISPLAY_USER{ - LPWSTR usri1_name; - LPWSTR usri1_comment; - DWORD usri1_flags; - LPWSTR usri1_full_name; - DWORD usri1_user_id; - DWORD usri1_next_index; -} -alias NET_DISPLAY_USER* PNET_DISPLAY_USER; - -struct NET_DISPLAY_MACHINE{ - LPWSTR usri2_name; - LPWSTR usri2_comment; - DWORD usri2_flags; - DWORD usri2_user_id; - DWORD usri2_next_index; -} -alias NET_DISPLAY_MACHINE* PNET_DISPLAY_MACHINE; - -struct NET_DISPLAY_GROUP{ - LPWSTR grpi3_name; - LPWSTR grpi3_comment; - DWORD grpi3_group_id; - DWORD grpi3_attributes; - DWORD grpi3_next_index; -} -alias NET_DISPLAY_GROUP* PNET_DISPLAY_GROUP; - -struct ACCESS_INFO_0{ - LPTSTR acc0_resource_name; -} -alias ACCESS_INFO_0* PACCESS_INFO_0, LPACCESS_INFO_0; - -struct ACCESS_INFO_1{ - LPTSTR acc1_resource_name; - DWORD acc1_attr; - DWORD acc1_count; -} -alias ACCESS_INFO_1* PACCESS_INFO_1, LPACCESS_INFO_1; - -struct ACCESS_INFO_1002{ - DWORD acc1002_attr; -} -alias ACCESS_INFO_1002* PACCESS_INFO_1002, LPACCESS_INFO_1002; - -struct ACCESS_LIST{ - LPTSTR acl_ugname; - DWORD acl_access; -} -alias ACCESS_LIST* PACCESS_LIST, LPACCESS_LIST; - -struct NETLOGON_INFO_1{ - DWORD netlog1_flags; - NET_API_STATUS netlog1_pdc_connection_status; -} -alias NETLOGON_INFO_1* PNETLOGON_INFO_1; - -struct NETLOGON_INFO_2{ - DWORD netlog2_flags; - NET_API_STATUS netlog2_pdc_connection_status; - LPWSTR netlog2_trusted_dc_name; - NET_API_STATUS netlog2_tc_connection_status; -} -alias NETLOGON_INFO_2* PNETLOGON_INFO_2; - -struct NETLOGON_INFO_3{ - DWORD netlog3_flags; - DWORD netlog3_logon_attempts; - DWORD netlog3_reserved1; - DWORD netlog3_reserved2; - DWORD netlog3_reserved3; - DWORD netlog3_reserved4; - DWORD netlog3_reserved5; -} -alias NETLOGON_INFO_3* PNETLOGON_INFO_3; - -extern (Windows) { -deprecated { - /* These are obsolete */ - NET_API_STATUS NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD); - NET_API_STATUS NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); - NET_API_STATUS NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); - NET_API_STATUS NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); - NET_API_STATUS NetAccessDel(LPCWSTR,LPCWSTR); - NET_API_STATUS NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD); -} -NET_API_STATUS NetUserAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetUserEnum(LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetUserGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetUserSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetUserDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetUserGetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); -NET_API_STATUS NetUserSetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetUserGetLocalGroups(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); -NET_API_STATUS NetUserModalsGet(LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetUserModalsSet(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetUserChangePassword(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); -NET_API_STATUS NetGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetGroupAddUser(LPCWSTR,LPCWSTR,LPCWSTR); -NET_API_STATUS NetGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetGroupDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetGroupDelUser(LPCWSTR,LPCWSTR,LPCWSTR); -NET_API_STATUS NetGroupGetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetGroupSetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetLocalGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetLocalGroupAddMember(LPCWSTR,LPCWSTR,PSID); -NET_API_STATUS NetLocalGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetLocalGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetLocalGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetLocalGroupDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetLocalGroupDelMember(LPCWSTR,LPCWSTR,PSID); -NET_API_STATUS NetLocalGroupGetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD, -PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetLocalGroupSetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetLocalGroupAddMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetLocalGroupDelMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); -NET_API_STATUS NetQueryDisplayInformation(LPCWSTR,DWORD,DWORD,DWORD,DWORD,PDWORD,PVOID*); -NET_API_STATUS NetGetDisplayInformationIndex(LPCWSTR,DWORD,LPCWSTR,PDWORD); -NET_API_STATUS NetGetDCName(LPCWSTR,LPCWSTR,PBYTE*); -NET_API_STATUS NetGetAnyDCName(LPCWSTR,LPCWSTR,PBYTE*); -NET_API_STATUS I_NetLogonControl(LPCWSTR,DWORD,DWORD,PBYTE*); -NET_API_STATUS I_NetLogonControl2(LPCWSTR,DWORD,DWORD,PBYTE,PBYTE*); +/***********************************************************************\ +* lmaccess.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmaccess; +pragma(lib, "netapi32"); + +/** + Changes relative to MinGW: + USER_POSIX_ID_PARMNUM and GROUP_POSIX_ID_PARMNUM aren't in MinGW or in + the Platform SDK docs, so they have been dropped from this file. +*/ + +private import win32.lmcons, win32.windef; + +const wchar[] + GROUP_SPECIALGRP_USERS = "USERS", + GROUP_SPECIALGRP_ADMINS = "ADMINS", + GROUP_SPECIALGRP_GUESTS = "GUESTS", + GROUP_SPECIALGRP_LOCAL = "LOCAL"; + +const ACCESS_LETTERS = "RWCXDAP "; + +const NETLOGON_CONTROL_QUERY=1; +const NETLOGON_CONTROL_REPLICATE=2; +const NETLOGON_CONTROL_SYNCHRONIZE=3; +const NETLOGON_CONTROL_PDC_REPLICATE=4; +const NETLOGON_CONTROL_REDISCOVER=5; +const NETLOGON_CONTROL_TC_QUERY=6; +const NETLOGON_CONTROL_BACKUP_CHANGE_LOG=65532; +const NETLOGON_CONTROL_TRUNCATE_LOG=65533; +const NETLOGON_CONTROL_SET_DBFLAG=65534; +const NETLOGON_CONTROL_BREAKPOINT=65535; + +const UF_SCRIPT=1; +const UF_ACCOUNTDISABLE=2; +const UF_HOMEDIR_REQUIRED=8; +const UF_LOCKOUT=16; +const UF_PASSWD_NOTREQD=32; +const UF_PASSWD_CANT_CHANGE=64; +const UF_TEMP_DUPLICATE_ACCOUNT=256; +const UF_NORMAL_ACCOUNT=512; +const UF_INTERDOMAIN_TRUST_ACCOUNT=2048; +const UF_WORKSTATION_TRUST_ACCOUNT=4096; +const UF_SERVER_TRUST_ACCOUNT=8192; +const UF_MNS_LOGON_ACCOUNT=131072; +const UF_MACHINE_ACCOUNT_MASK=UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; +const UF_ACCOUNT_TYPE_MASK=UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT; +const UF_DONT_EXPIRE_PASSWD=65536; +const UF_SETTABLE_BITS=UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCKOUT|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD; + +const FILTER_TEMP_DUPLICATE_ACCOUNT=1; +const FILTER_NORMAL_ACCOUNT=2; +const FILTER_INTERDOMAIN_TRUST_ACCOUNT=8; +const FILTER_WORKSTATION_TRUST_ACCOUNT=16; +const FILTER_SERVER_TRUST_ACCOUNT=32; + +const LG_INCLUDE_INDIRECT=1; + +const AF_OP_PRINT=1; +const AF_OP_COMM=2; +const AF_OP_SERVER=4; +const AF_OP_ACCOUNTS=8; +const AF_SETTABLE_BITS=(AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS); + +const UAS_ROLE_STANDALONE=0; +const UAS_ROLE_MEMBER=1; +const UAS_ROLE_BACKUP=2; +const UAS_ROLE_PRIMARY=3; + +const USER_NAME_PARMNUM=1; +const USER_PASSWORD_PARMNUM=3; +const USER_PASSWORD_AGE_PARMNUM=4; +const USER_PRIV_PARMNUM=5; +const USER_HOME_DIR_PARMNUM=6; +const USER_COMMENT_PARMNUM=7; +const USER_FLAGS_PARMNUM=8; +const USER_SCRIPT_PATH_PARMNUM=9; +const USER_AUTH_FLAGS_PARMNUM=10; +const USER_FULL_NAME_PARMNUM=11; +const USER_USR_COMMENT_PARMNUM=12; +const USER_PARMS_PARMNUM=13; +const USER_WORKSTATIONS_PARMNUM=14; +const USER_LAST_LOGON_PARMNUM=15; +const USER_LAST_LOGOFF_PARMNUM=16; +const USER_ACCT_EXPIRES_PARMNUM=17; +const USER_MAX_STORAGE_PARMNUM=18; +const USER_UNITS_PER_WEEK_PARMNUM=19; +const USER_LOGON_HOURS_PARMNUM=20; +const USER_PAD_PW_COUNT_PARMNUM=21; +const USER_NUM_LOGONS_PARMNUM=22; +const USER_LOGON_SERVER_PARMNUM=23; +const USER_COUNTRY_CODE_PARMNUM=24; +const USER_CODE_PAGE_PARMNUM=25; +const USER_PRIMARY_GROUP_PARMNUM=51; +const USER_PROFILE=52; +const USER_PROFILE_PARMNUM=52; +const USER_HOME_DIR_DRIVE_PARMNUM=53; + +const USER_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM; +const USER_PASSWORD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM; +const USER_PASSWORD_AGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM; +const USER_PRIV_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM; +const USER_HOME_DIR_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM; +const USER_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM; +const USER_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM; +const USER_SCRIPT_PATH_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM; +const USER_AUTH_FLAGS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM; +const USER_FULL_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM; +const USER_USR_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM; +const USER_PARMS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM; +const USER_WORKSTATIONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM; +const USER_LAST_LOGON_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM; +const USER_LAST_LOGOFF_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM; +const USER_ACCT_EXPIRES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM; +const USER_MAX_STORAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM; +const USER_UNITS_PER_WEEK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM; +const USER_LOGON_HOURS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM; +const USER_PAD_PW_COUNT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM; +const USER_NUM_LOGONS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM; +const USER_LOGON_SERVER_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM; +const USER_COUNTRY_CODE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM; +const USER_CODE_PAGE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM; +const USER_PRIMARY_GROUP_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM; +// USER_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. +//const USER_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM; +const USER_HOME_DIR_DRIVE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM; + +const NULL_USERSETINFO_PASSWD=" "; +const ULONG TIMEQ_FOREVER=-1; +const ULONG USER_MAXSTORAGE_UNLIMITED=-1; +const ULONG USER_NO_LOGOFF=-1; +const UNITS_PER_DAY=24; +const UNITS_PER_WEEK=168; +const USER_PRIV_MASK=3; +const USER_PRIV_GUEST=0; +const USER_PRIV_USER=1; +const USER_PRIV_ADMIN=2; +const MAX_PASSWD_LEN=PWLEN; +const DEF_MIN_PWLEN=6; +const DEF_PWUNIQUENESS=5; +const DEF_MAX_PWHIST=8; +const DEF_MAX_PWAGE=TIMEQ_FOREVER; +const DEF_MIN_PWAGE=0; +const ULONG DEF_FORCE_LOGOFF=0xffffffff; +const DEF_MAX_BADPW=0; +const ONE_DAY=86400; +const VALIDATED_LOGON=0; +const PASSWORD_EXPIRED=2; +const NON_VALIDATED_LOGON=3; +const VALID_LOGOFF=1; + +const MODALS_MIN_PASSWD_LEN_PARMNUM=1; +const MODALS_MAX_PASSWD_AGE_PARMNUM=2; +const MODALS_MIN_PASSWD_AGE_PARMNUM=3; +const MODALS_FORCE_LOGOFF_PARMNUM=4; +const MODALS_PASSWD_HIST_LEN_PARMNUM=5; +const MODALS_ROLE_PARMNUM=6; +const MODALS_PRIMARY_PARMNUM=7; +const MODALS_DOMAIN_NAME_PARMNUM=8; +const MODALS_DOMAIN_ID_PARMNUM=9; +const MODALS_LOCKOUT_DURATION_PARMNUM=10; +const MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM=11; +const MODALS_LOCKOUT_THRESHOLD_PARMNUM=12; + +const MODALS_MIN_PASSWD_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM); +const MODALS_MAX_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM); +const MODALS_MIN_PASSWD_AGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM); +const MODALS_FORCE_LOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM); +const MODALS_PASSWD_HIST_LEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM); +const MODALS_ROLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM); +const MODALS_PRIMARY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM); +const MODALS_DOMAIN_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM); +const MODALS_DOMAIN_ID_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM); + +const GROUPIDMASK=0x8000; +const GROUP_ALL_PARMNUM=0; +const GROUP_NAME_PARMNUM=1; +const GROUP_COMMENT_PARMNUM=2; +const GROUP_ATTRIBUTES_PARMNUM=3; + +const GROUP_ALL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ALL_PARMNUM; +const GROUP_NAME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_NAME_PARMNUM; +const GROUP_COMMENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_COMMENT_PARMNUM; +const GROUP_ATTRIBUTES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_ATTRIBUTES_PARMNUM; +// GROUP_POSIX_ID_PARMNUM isn't in MinGW or in the Platform SDK docs. +//const GROUP_POSIX_ID_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + GROUP_POSIX_ID_PARMNUM; + +const LOCALGROUP_NAME_PARMNUM=1; +const LOCALGROUP_COMMENT_PARMNUM=2; +const MAXPERMENTRIES=64; +const ACCESS_NONE=0; +const ACCESS_READ=1; +const ACCESS_WRITE=2; +const ACCESS_CREATE=4; +const ACCESS_EXEC=8; +const ACCESS_DELETE=16; +const ACCESS_ATRIB=32; +const ACCESS_PERM=64; +const ACCESS_ALL = ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM; +const ACCESS_GROUP=0x8000; +const ACCESS_AUDIT=1; +const ACCESS_SUCCESS_OPEN=16; +const ACCESS_SUCCESS_WRITE=32; +const ACCESS_SUCCESS_DELETE=64; +const ACCESS_SUCCESS_ACL=128; +const ACCESS_SUCCESS_MASK=240; +const ACCESS_FAIL_OPEN=256; +const ACCESS_FAIL_WRITE=512; +const ACCESS_FAIL_DELETE=1024; +const ACCESS_FAIL_ACL=2048; +const ACCESS_FAIL_MASK=3840; +const ACCESS_FAIL_SHIFT=4; +const ACCESS_RESOURCE_NAME_PARMNUM=1; +const ACCESS_ATTR_PARMNUM=2; +const ACCESS_COUNT_PARMNUM=3; +const ACCESS_ACCESS_LIST_PARMNUM=4; + +const ACCESS_RESOURCE_NAME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM); +const ACCESS_ATTR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM); +const ACCESS_COUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM); +const ACCESS_ACCESS_LIST_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM); + +const NETLOGON_REPLICATION_NEEDED=1; +const NETLOGON_REPLICATION_IN_PROGRESS=2; +const NETLOGON_FULL_SYNC_REPLICATION=4; +const NETLOGON_REDO_NEEDED=8; + +struct USER_INFO_0 { + LPWSTR usri0_name; +} +alias USER_INFO_0* PUSER_INFO_0, LPUSER_INFO_0; + +struct USER_INFO_1{ + LPWSTR usri1_name; + LPWSTR usri1_password; + DWORD usri1_password_age; + DWORD usri1_priv; + LPWSTR usri1_home_dir; + LPWSTR usri1_comment; + DWORD usri1_flags; + LPWSTR usri1_script_path; +} +alias USER_INFO_1* PUSER_INFO_1, LPUSER_INFO_1; + +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, LPUSER_INFO_2; + +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, LPUSER_INFO_3; + +struct USER_INFO_10{ + LPWSTR usri10_name; + LPWSTR usri10_comment; + LPWSTR usri10_usr_comment; + LPWSTR usri10_full_name; +} +alias USER_INFO_10* PUSER_INFO_10, LPUSER_INFO_10; + +struct USER_INFO_11{ + LPWSTR usri11_name; + LPWSTR usri11_comment; + LPWSTR usri11_usr_comment; + LPWSTR usri11_full_name; + DWORD usri11_priv; + DWORD usri11_auth_flags; + DWORD usri11_password_age; + LPWSTR usri11_home_dir; + LPWSTR usri11_parms; + DWORD usri11_last_logon; + DWORD usri11_last_logoff; + DWORD usri11_bad_pw_count; + DWORD usri11_num_logons; + LPWSTR usri11_logon_server; + DWORD usri11_country_code; + LPWSTR usri11_workstations; + DWORD usri11_max_storage; + DWORD usri11_units_per_week; + PBYTE usri11_logon_hours; + DWORD usri11_code_page; +} +alias USER_INFO_11* PUSER_INFO_11, LPUSER_INFO_11; + +struct USER_INFO_20 { + LPWSTR usri20_name; + LPWSTR usri20_full_name; + LPWSTR usri20_comment; + DWORD usri20_flags; + DWORD usri20_user_id; +} +alias USER_INFO_20* PUSER_INFO_20, LPUSER_INFO_20; + +struct USER_INFO_21 { + BYTE[ENCRYPTED_PWLEN] usri21_password; +} +alias USER_INFO_21* PUSER_INFO_21, LPUSER_INFO_21; + +struct USER_INFO_22{ + LPWSTR usri22_name; + BYTE[ENCRYPTED_PWLEN] usri22_password; + DWORD usri22_password_age; + DWORD usri22_priv; + LPWSTR usri22_home_dir; + LPWSTR usri22_comment; + DWORD usri22_flags; + LPWSTR usri22_script_path; + DWORD usri22_auth_flags; + LPWSTR usri22_full_name; + LPWSTR usri22_usr_comment; + LPWSTR usri22_parms; + LPWSTR usri22_workstations; + DWORD usri22_last_logon; + DWORD usri22_last_logoff; + DWORD usri22_acct_expires; + DWORD usri22_max_storage; + DWORD usri22_units_per_week; + PBYTE usri22_logon_hours; + DWORD usri22_bad_pw_count; + DWORD usri22_num_logons; + LPWSTR usri22_logon_server; + DWORD usri22_country_code; + DWORD usri22_code_page; +} +alias USER_INFO_22* PUSER_INFO_22, LPUSER_INFO_22; + +struct USER_INFO_1003{ + LPWSTR usri1003_password; +} +alias USER_INFO_1003* PUSER_INFO_1003, LPUSER_INFO_1003; + +struct USER_INFO_1005{ + DWORD usri1005_priv; +} +alias USER_INFO_1005* PUSER_INFO_1005, LPUSER_INFO_1005; + +struct USER_INFO_1006{ + LPWSTR usri1006_home_dir; +} +alias USER_INFO_1006* PUSER_INFO_1006, LPUSER_INFO_1006; + +struct USER_INFO_1007{ + LPWSTR usri1007_comment; +} +alias USER_INFO_1007* PUSER_INFO_1007, LPUSER_INFO_1007; + +struct USER_INFO_1008{ + DWORD usri1008_flags; +} +alias USER_INFO_1008* PUSER_INFO_1008, LPUSER_INFO_1008; + +struct USER_INFO_1009{ + LPWSTR usri1009_script_path; +} +alias USER_INFO_1009* PUSER_INFO_1009, LPUSER_INFO_1009; + +struct USER_INFO_1010{ + DWORD usri1010_auth_flags; +} +alias USER_INFO_1010* PUSER_INFO_1010, LPUSER_INFO_1010; + +struct USER_INFO_1011{ + LPWSTR usri1011_full_name; +} +alias USER_INFO_1011* PUSER_INFO_1011, LPUSER_INFO_1011; + +struct USER_INFO_1012{ + LPWSTR usri1012_usr_comment; +} +alias USER_INFO_1012* PUSER_INFO_1012, LPUSER_INFO_1012; + +struct USER_INFO_1013{ + LPWSTR usri1013_parms; +} +alias USER_INFO_1013* PUSER_INFO_1013, LPUSER_INFO_1013; + +struct USER_INFO_1014{ + LPWSTR usri1014_workstations; +} +alias USER_INFO_1014* PUSER_INFO_1014, LPUSER_INFO_1014; + +struct USER_INFO_1017{ + DWORD usri1017_acct_expires; +} +alias USER_INFO_1017* PUSER_INFO_1017, LPUSER_INFO_1017; + +struct USER_INFO_1018{ + DWORD usri1018_max_storage; +} +alias USER_INFO_1018* PUSER_INFO_1018, LPUSER_INFO_1018; + +struct USER_INFO_1020{ + DWORD usri1020_units_per_week; + PBYTE usri1020_logon_hours; +} +alias USER_INFO_1020* PUSER_INFO_1020, LPUSER_INFO_1020; + +struct USER_INFO_1023{ + LPWSTR usri1023_logon_server; +} +alias USER_INFO_1023* PUSER_INFO_1023, LPUSER_INFO_1023; + +struct USER_INFO_1024{ + DWORD usri1024_country_code; +} +alias USER_INFO_1024* PUSER_INFO_1024, LPUSER_INFO_1024; + +struct USER_INFO_1025{ + DWORD usri1025_code_page; +} +alias USER_INFO_1025* PUSER_INFO_1025, LPUSER_INFO_1025; + +struct USER_INFO_1051{ + DWORD usri1051_primary_group_id; +} +alias USER_INFO_1051* PUSER_INFO_1051, LPUSER_INFO_1051; + +struct USER_INFO_1052{ + LPWSTR usri1052_profile; +} +alias USER_INFO_1052* PUSER_INFO_1052, LPUSER_INFO_1052; + +struct USER_INFO_1053{ + LPWSTR usri1053_home_dir_drive; +} +alias USER_INFO_1053* PUSER_INFO_1053, LPUSER_INFO_1053; + +struct USER_MODALS_INFO_0{ + DWORD usrmod0_min_passwd_len; + DWORD usrmod0_max_passwd_age; + DWORD usrmod0_min_passwd_age; + DWORD usrmod0_force_logoff; + DWORD usrmod0_password_hist_len; +} +alias USER_MODALS_INFO_0* PUSER_MODALS_INFO_0, LPUSER_MODALS_INFO_0; + +struct USER_MODALS_INFO_1{ + DWORD usrmod1_role; + LPWSTR usrmod1_primary; +} +alias USER_MODALS_INFO_1* PUSER_MODALS_INFO_1, LPUSER_MODALS_INFO_1; + +struct USER_MODALS_INFO_2{ + LPWSTR usrmod2_domain_name; + PSID usrmod2_domain_id; +} +alias USER_MODALS_INFO_2* PUSER_MODALS_INFO_2, LPUSER_MODALS_INFO_2; + +struct USER_MODALS_INFO_3{ + DWORD usrmod3_lockout_duration; + DWORD usrmod3_lockout_observation_window; + DWORD usrmod3_lockout_threshold; +} +alias USER_MODALS_INFO_3* PUSER_MODALS_INFO_3, LPUSER_MODALS_INFO_3; + +struct USER_MODALS_INFO_1001{ + DWORD usrmod1001_min_passwd_len; +} +alias USER_MODALS_INFO_1001* PUSER_MODALS_INFO_1001, LPUSER_MODALS_INFO_1001; + +struct USER_MODALS_INFO_1002{ + DWORD usrmod1002_max_passwd_age; +} +alias USER_MODALS_INFO_1002* PUSER_MODALS_INFO_1002, LPUSER_MODALS_INFO_1002; + +struct USER_MODALS_INFO_1003{ + DWORD usrmod1003_min_passwd_age; +} +alias USER_MODALS_INFO_1003* PUSER_MODALS_INFO_1003, LPUSER_MODALS_INFO_1003; + +struct USER_MODALS_INFO_1004{ + DWORD usrmod1004_force_logoff; +} +alias USER_MODALS_INFO_1004* PUSER_MODALS_INFO_1004, LPUSER_MODALS_INFO_1004; + +struct USER_MODALS_INFO_1005{ + DWORD usrmod1005_password_hist_len; +} +alias USER_MODALS_INFO_1005* PUSER_MODALS_INFO_1005, LPUSER_MODALS_INFO_1005; + +struct USER_MODALS_INFO_1006{ + DWORD usrmod1006_role; +} +alias USER_MODALS_INFO_1006* PUSER_MODALS_INFO_1006, LPUSER_MODALS_INFO_1006; + +struct USER_MODALS_INFO_1007{ + LPWSTR usrmod1007_primary; +} +alias USER_MODALS_INFO_1007* PUSER_MODALS_INFO_1007, LPUSER_MODALS_INFO_1007; + +struct GROUP_INFO_0{ + LPWSTR grpi0_name; +} +alias GROUP_INFO_0* PGROUP_INFO_0, LPGROUP_INFO_0; + +struct GROUP_INFO_1{ + LPWSTR grpi1_name; + LPWSTR grpi1_comment; +} +alias GROUP_INFO_1* PGROUP_INFO_1, LPGROUP_INFO_1; + +struct GROUP_INFO_2{ + LPWSTR grpi2_name; + LPWSTR grpi2_comment; + DWORD grpi2_group_id; + DWORD grpi2_attributes; +} +alias GROUP_INFO_2* PGROUP_INFO_2; + +struct GROUP_INFO_1002{ + LPWSTR grpi1002_comment; +} +alias GROUP_INFO_1002* PGROUP_INFO_1002, LPGROUP_INFO_1002; + +struct GROUP_INFO_1005{ + DWORD grpi1005_attributes; +} +alias GROUP_INFO_1005* PGROUP_INFO_1005, LPGROUP_INFO_1005; + +struct GROUP_USERS_INFO_0{ + LPWSTR grui0_name; +} +alias GROUP_USERS_INFO_0* PGROUP_USERS_INFO_0, LPGROUP_USERS_INFO_0; + +struct GROUP_USERS_INFO_1{ + LPWSTR grui1_name; + DWORD grui1_attributes; +} +alias GROUP_USERS_INFO_1* PGROUP_USERS_INFO_1, LPGROUP_USERS_INFO_1; + +struct LOCALGROUP_INFO_0{ + LPWSTR lgrpi0_name; +} +alias LOCALGROUP_INFO_0* PLOCALGROUP_INFO_0, LPLOCALGROUP_INFO_0; + +struct LOCALGROUP_INFO_1{ + LPWSTR lgrpi1_name; + LPWSTR lgrpi1_comment; +} +alias LOCALGROUP_INFO_1* PLOCALGROUP_INFO_1, LPLOCALGROUP_INFO_1; + +struct LOCALGROUP_INFO_1002{ + LPWSTR lgrpi1002_comment; +} +alias LOCALGROUP_INFO_1002* PLOCALGROUP_INFO_1002, LPLOCALGROUP_INFO_1002; + +struct LOCALGROUP_MEMBERS_INFO_0{ + PSID lgrmi0_sid; +} +alias LOCALGROUP_MEMBERS_INFO_0* PLOCALGROUP_MEMBERS_INFO_0, LPLOCALGROUP_MEMBERS_INFO_0; + +struct LOCALGROUP_MEMBERS_INFO_1{ + PSID lgrmi1_sid; + SID_NAME_USE lgrmi1_sidusage; + LPWSTR lgrmi1_name; +} +alias LOCALGROUP_MEMBERS_INFO_1* PLOCALGROUP_MEMBERS_INFO_1, LPLOCALGROUP_MEMBERS_INFO_1; + +struct LOCALGROUP_MEMBERS_INFO_2{ + PSID lgrmi2_sid; + SID_NAME_USE lgrmi2_sidusage; + LPWSTR lgrmi2_domainandname; +} +alias LOCALGROUP_MEMBERS_INFO_2* PLOCALGROUP_MEMBERS_INFO_2, LPLOCALGROUP_MEMBERS_INFO_2; + +struct LOCALGROUP_MEMBERS_INFO_3{ + LPWSTR lgrmi3_domainandname; +} +alias LOCALGROUP_MEMBERS_INFO_3* PLOCALGROUP_MEMBERS_INFO_3, LPLOCALGROUP_MEMBERS_INFO_3; + +struct LOCALGROUP_USERS_INFO_0{ + LPWSTR lgrui0_name; +} +alias LOCALGROUP_USERS_INFO_0* PLOCALGROUP_USERS_INFO_0, LPLOCALGROUP_USERS_INFO_0; + +struct NET_DISPLAY_USER{ + LPWSTR usri1_name; + LPWSTR usri1_comment; + DWORD usri1_flags; + LPWSTR usri1_full_name; + DWORD usri1_user_id; + DWORD usri1_next_index; +} +alias NET_DISPLAY_USER* PNET_DISPLAY_USER; + +struct NET_DISPLAY_MACHINE{ + LPWSTR usri2_name; + LPWSTR usri2_comment; + DWORD usri2_flags; + DWORD usri2_user_id; + DWORD usri2_next_index; +} +alias NET_DISPLAY_MACHINE* PNET_DISPLAY_MACHINE; + +struct NET_DISPLAY_GROUP{ + LPWSTR grpi3_name; + LPWSTR grpi3_comment; + DWORD grpi3_group_id; + DWORD grpi3_attributes; + DWORD grpi3_next_index; +} +alias NET_DISPLAY_GROUP* PNET_DISPLAY_GROUP; + +struct ACCESS_INFO_0{ + LPTSTR acc0_resource_name; +} +alias ACCESS_INFO_0* PACCESS_INFO_0, LPACCESS_INFO_0; + +struct ACCESS_INFO_1{ + LPTSTR acc1_resource_name; + DWORD acc1_attr; + DWORD acc1_count; +} +alias ACCESS_INFO_1* PACCESS_INFO_1, LPACCESS_INFO_1; + +struct ACCESS_INFO_1002{ + DWORD acc1002_attr; +} +alias ACCESS_INFO_1002* PACCESS_INFO_1002, LPACCESS_INFO_1002; + +struct ACCESS_LIST{ + LPTSTR acl_ugname; + DWORD acl_access; +} +alias ACCESS_LIST* PACCESS_LIST, LPACCESS_LIST; + +struct NETLOGON_INFO_1{ + DWORD netlog1_flags; + NET_API_STATUS netlog1_pdc_connection_status; +} +alias NETLOGON_INFO_1* PNETLOGON_INFO_1; + +struct NETLOGON_INFO_2{ + DWORD netlog2_flags; + NET_API_STATUS netlog2_pdc_connection_status; + LPWSTR netlog2_trusted_dc_name; + NET_API_STATUS netlog2_tc_connection_status; +} +alias NETLOGON_INFO_2* PNETLOGON_INFO_2; + +struct NETLOGON_INFO_3{ + DWORD netlog3_flags; + DWORD netlog3_logon_attempts; + DWORD netlog3_reserved1; + DWORD netlog3_reserved2; + DWORD netlog3_reserved3; + DWORD netlog3_reserved4; + DWORD netlog3_reserved5; +} +alias NETLOGON_INFO_3* PNETLOGON_INFO_3; + +extern (Windows) { +deprecated { + /* These are obsolete */ + NET_API_STATUS NetAccessAdd(LPCWSTR,DWORD,PBYTE,PDWORD); + NET_API_STATUS NetAccessEnum(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); + NET_API_STATUS NetAccessGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); + NET_API_STATUS NetAccessSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); + NET_API_STATUS NetAccessDel(LPCWSTR,LPCWSTR); + NET_API_STATUS NetAccessGetUserPerms(LPCWSTR,LPCWSTR,LPCWSTR,PDWORD); +} +NET_API_STATUS NetUserAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserEnum(LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetUserSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetUserGetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserSetGroups(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetUserGetLocalGroups(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetUserModalsGet(LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetUserModalsSet(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetUserChangePassword(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetGroupAddUser(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetGroupDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupDelUser(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetGroupGetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetGroupSetUsers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetLocalGroupAddMember(LPCWSTR,LPCWSTR,PSID); +NET_API_STATUS NetLocalGroupEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetLocalGroupGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetLocalGroupSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetLocalGroupDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetLocalGroupDelMember(LPCWSTR,LPCWSTR,PSID); +NET_API_STATUS NetLocalGroupGetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD, +PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetLocalGroupSetMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupAddMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetLocalGroupDelMembers(LPCWSTR,LPCWSTR,DWORD,PBYTE,DWORD); +NET_API_STATUS NetQueryDisplayInformation(LPCWSTR,DWORD,DWORD,DWORD,DWORD,PDWORD,PVOID*); +NET_API_STATUS NetGetDisplayInformationIndex(LPCWSTR,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS NetGetDCName(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS NetGetAnyDCName(LPCWSTR,LPCWSTR,PBYTE*); +NET_API_STATUS I_NetLogonControl(LPCWSTR,DWORD,DWORD,PBYTE*); +NET_API_STATUS I_NetLogonControl2(LPCWSTR,DWORD,DWORD,PBYTE,PBYTE*); } Index: src/win32/lmalert.d ================================================================== --- src/win32/lmalert.d +++ src/win32/lmalert.d @@ -1,77 +1,77 @@ -/***********************************************************************\ -* lmalert.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmalert; -pragma(lib, "netapi32.lib"); - -private import win32.lmcons, win32.windef; - -const TCHAR[] - ALERTER_MAILSLOT = `\\.\MAILSLOT\Alerter`, - ALERT_PRINT_EVENT = "PRINTING", - ALERT_MESSAGE_EVENT = "MESSAGE", - ALERT_ERRORLOG_EVENT = "ERRORLOG", - ALERT_ADMIN_EVENT = "ADMIN", - ALERT_USER_EVENT = "USER"; -//MACRO #define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT)) - -//MACRO #define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p)) - -const PRJOB_QSTATUS = 3; -const PRJOB_DEVSTATUS = 508; -const PRJOB_COMPLETE = 4; -const PRJOB_INTERV = 8; -const PRJOB_ = 16; -const PRJOB_DESTOFFLINE = 32; -const PRJOB_DESTPAUSED = 64; -const PRJOB_NOTIFY = 128; -const PRJOB_DESTNOPAPER = 256; -const PRJOB_DELETED = 32768; -const PRJOB_QS_QUEUED = 0; -const PRJOB_QS_PAUSED = 1; -const PRJOB_QS_SPOOLING = 2; -const PRJOB_QS_PRINTING = 3; - -struct ADMIN_OTHER_INFO{ - DWORD alrtad_errcode; - DWORD alrtad_numstrings; -} -alias ADMIN_OTHER_INFO* PADMIN_OTHER_INFO, LPADMIN_OTHER_INFO; - -struct STD_ALERT{ - DWORD alrt_timestamp; - TCHAR alrt_eventname[EVLEN+1]; - TCHAR alrt_servicename[SNLEN+1]; -} -alias STD_ALERT* PSTD_ALERT, LPSTD_ALERT; - -struct ERRLOG_OTHER_INFO{ - DWORD alrter_errcode; - DWORD alrter_offset; -} -alias ERRLOG_OTHER_INFO* PERRLOG_OTHER_INFO, LPERRLOG_OTHER_INFO; - -struct PRINT_OTHER_INFO{ - DWORD alrtpr_jobid; - DWORD alrtpr_status; - DWORD alrtpr_submitted; - DWORD alrtpr_size; -} -alias PRINT_OTHER_INFO* PPRINT_OTHER_INFO, LPPRINT_OTHER_INFO; - -struct USER_OTHER_INFO{ - DWORD alrtus_errcode; - DWORD alrtus_numstrings; -} -alias USER_OTHER_INFO* PUSER_OTHER_INFO, LPUSER_OTHER_INFO; - -extern (Windows) { -NET_API_STATUS NetAlertRaise(LPCWSTR,PVOID,DWORD); -NET_API_STATUS NetAlertRaiseEx(LPCWSTR,PVOID,DWORD,LPCWSTR); -} +/***********************************************************************\ +* lmalert.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmalert; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +const TCHAR[] + ALERTER_MAILSLOT = `\\.\MAILSLOT\Alerter`, + ALERT_PRINT_EVENT = "PRINTING", + ALERT_MESSAGE_EVENT = "MESSAGE", + ALERT_ERRORLOG_EVENT = "ERRORLOG", + ALERT_ADMIN_EVENT = "ADMIN", + ALERT_USER_EVENT = "USER"; +//MACRO #define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT)) + +//MACRO #define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p)) + +const PRJOB_QSTATUS = 3; +const PRJOB_DEVSTATUS = 508; +const PRJOB_COMPLETE = 4; +const PRJOB_INTERV = 8; +const PRJOB_ = 16; +const PRJOB_DESTOFFLINE = 32; +const PRJOB_DESTPAUSED = 64; +const PRJOB_NOTIFY = 128; +const PRJOB_DESTNOPAPER = 256; +const PRJOB_DELETED = 32768; +const PRJOB_QS_QUEUED = 0; +const PRJOB_QS_PAUSED = 1; +const PRJOB_QS_SPOOLING = 2; +const PRJOB_QS_PRINTING = 3; + +struct ADMIN_OTHER_INFO{ + DWORD alrtad_errcode; + DWORD alrtad_numstrings; +} +alias ADMIN_OTHER_INFO* PADMIN_OTHER_INFO, LPADMIN_OTHER_INFO; + +struct STD_ALERT{ + DWORD alrt_timestamp; + TCHAR[EVLEN+1] alrt_eventname; + TCHAR[SNLEN+1] alrt_servicename; +} +alias STD_ALERT* PSTD_ALERT, LPSTD_ALERT; + +struct ERRLOG_OTHER_INFO{ + DWORD alrter_errcode; + DWORD alrter_offset; +} +alias ERRLOG_OTHER_INFO* PERRLOG_OTHER_INFO, LPERRLOG_OTHER_INFO; + +struct PRINT_OTHER_INFO{ + DWORD alrtpr_jobid; + DWORD alrtpr_status; + DWORD alrtpr_submitted; + DWORD alrtpr_size; +} +alias PRINT_OTHER_INFO* PPRINT_OTHER_INFO, LPPRINT_OTHER_INFO; + +struct USER_OTHER_INFO{ + DWORD alrtus_errcode; + DWORD alrtus_numstrings; +} +alias USER_OTHER_INFO* PUSER_OTHER_INFO, LPUSER_OTHER_INFO; + +extern (Windows) { +NET_API_STATUS NetAlertRaise(LPCWSTR,PVOID,DWORD); +NET_API_STATUS NetAlertRaiseEx(LPCWSTR,PVOID,DWORD,LPCWSTR); +} Index: src/win32/lmapibuf.d ================================================================== --- src/win32/lmapibuf.d +++ src/win32/lmapibuf.d @@ -1,21 +1,21 @@ -/***********************************************************************\ -* lmapibuf.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmapibuf; -pragma(lib, "netapi32.lib"); - -private import win32.lmcons, win32.windef; - -extern (Windows) { - NET_API_STATUS NetApiBufferAllocate(DWORD, PVOID*); - NET_API_STATUS NetApiBufferFree(PVOID); - NET_API_STATUS NetApiBufferReallocate(PVOID, DWORD, PVOID*); - NET_API_STATUS NetApiBufferSize(PVOID, PDWORD); - NET_API_STATUS NetapipBufferAllocate(DWORD, PVOID*); -} +/***********************************************************************\ +* lmapibuf.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmapibuf; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +extern (Windows) { + NET_API_STATUS NetApiBufferAllocate(DWORD, PVOID*); + NET_API_STATUS NetApiBufferFree(PVOID); + NET_API_STATUS NetApiBufferReallocate(PVOID, DWORD, PVOID*); + NET_API_STATUS NetApiBufferSize(PVOID, PDWORD); + NET_API_STATUS NetapipBufferAllocate(DWORD, PVOID*); +} Index: src/win32/lmat.d ================================================================== --- src/win32/lmat.d +++ src/win32/lmat.d @@ -1,50 +1,50 @@ -/***********************************************************************\ -* lmat.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmat; -pragma(lib, "netapi32.lib"); - -private import win32.lmcons, win32.windef; - -const JOB_RUN_PERIODICALLY = 1; -const JOB_EXEC_ERROR = 2; -const JOB_RUNS_TODAY = 4; -const JOB_ADD_CURRENT_DATE = 8; -const JOB_NONINTERACTIVE = 16; -const JOB_INPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_ADD_CURRENT_DATE - | JOB_NONINTERACTIVE; -const JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR - | JOB_RUNS_TODAY | JOB_NONINTERACTIVE; - -struct AT_ENUM { - DWORD JobId; - DWORD JobTime; - DWORD DaysOfMonth; - UCHAR DaysOfWeek; - UCHAR Flags; - LPWSTR Command; -} -alias AT_ENUM* PAT_ENUM, LPAT_ENUM; - -struct AT_INFO { - DWORD JobTime; - DWORD DaysOfMonth; - UCHAR DaysOfWeek; - UCHAR Flags; - LPWSTR Command; -} -alias AT_INFO* PAT_INFO, LPAT_INFO; - -extern (Windows) { - NET_API_STATUS NetScheduleJobAdd(LPWSTR, PBYTE, LPDWORD); - NET_API_STATUS NetScheduleJobDel(LPWSTR, DWORD, DWORD); - NET_API_STATUS NetScheduleJobEnum(LPWSTR, PBYTE*, DWORD, PDWORD, PDWORD, - PDWORD); - NET_API_STATUS NetScheduleJobGetInfo(LPWSTR, DWORD, PBYTE*); -} +/***********************************************************************\ +* lmat.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmat; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +const JOB_RUN_PERIODICALLY = 1; +const JOB_EXEC_ERROR = 2; +const JOB_RUNS_TODAY = 4; +const JOB_ADD_CURRENT_DATE = 8; +const JOB_NONINTERACTIVE = 16; +const JOB_INPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_ADD_CURRENT_DATE + | JOB_NONINTERACTIVE; +const JOB_OUTPUT_FLAGS = JOB_RUN_PERIODICALLY | JOB_EXEC_ERROR + | JOB_RUNS_TODAY | JOB_NONINTERACTIVE; + +struct AT_ENUM { + DWORD JobId; + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; +} +alias AT_ENUM* PAT_ENUM, LPAT_ENUM; + +struct AT_INFO { + DWORD JobTime; + DWORD DaysOfMonth; + UCHAR DaysOfWeek; + UCHAR Flags; + LPWSTR Command; +} +alias AT_INFO* PAT_INFO, LPAT_INFO; + +extern (Windows) { + NET_API_STATUS NetScheduleJobAdd(LPWSTR, PBYTE, LPDWORD); + NET_API_STATUS NetScheduleJobDel(LPWSTR, DWORD, DWORD); + NET_API_STATUS NetScheduleJobEnum(LPWSTR, PBYTE*, DWORD, PDWORD, PDWORD, + PDWORD); + NET_API_STATUS NetScheduleJobGetInfo(LPWSTR, DWORD, PBYTE*); +} Index: src/win32/lmaudit.d ================================================================== --- src/win32/lmaudit.d +++ src/win32/lmaudit.d @@ -1,302 +1,302 @@ -/***********************************************************************\ -* lmaudit.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -// COMMENT: This file may be deprecated. -module win32.lmaudit; - -private import win32.lmcons, win32.windef; - -const LOGFLAGS_FORWARD = 0; -const LOGFLAGS_BACKWARD = 1; -const LOGFLAGS_SEEK = 2; - -const ACTION_LOCKOUT = 0; -const ACTION_ADMINUNLOCK = 1; - -const AE_GUEST=0; -const AE_USER=1; -const AE_ADMIN=2; -const AE_NORMAL=0; -const AE_USERLIMIT=0; -const AE_GENERAL=0; -const AE_ERROR=1; -const AE_SESSDIS=1; -const AE_BADPW=1; -const AE_AUTODIS=2; -const AE_UNSHARE=2; -const AE_ADMINPRIVREQD=2; -const AE_ADMINDIS=3; -const AE_NOACCESSPERM=3; -const AE_ACCRESTRICT=4; -const AE_NORMAL_CLOSE=0; -const AE_SES_CLOSE=1; -const AE_ADMIN_CLOSE=2; -const AE_LIM_UNKNOWN=0; -const AE_LIM_LOGONHOURS=1; -const AE_LIM_EXPIRED=2; -const AE_LIM_INVAL_WKSTA=3; -const AE_LIM_DISABLED=4; -const AE_LIM_DELETED=5; -const AE_MOD=0; -const AE_DELETE=1; -const AE_ADD=2; - -const AE_UAS_USER = 0; -const AE_UAS_GROUP = 1; -const AE_UAS_MODALS = 2; - -const SVAUD_SERVICE = 1; -const SVAUD_GOODSESSLOGON = 6; -const SVAUD_BADSESSLOGON = 24; -const SVAUD_SESSLOGON = SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON; -const SVAUD_GOODNETLOGON = 96; -const SVAUD_BADNETLOGON = 384; -const SVAUD_NETLOGON = SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON; -const SVAUD_LOGON = SVAUD_NETLOGON|SVAUD_SESSLOGON; -const SVAUD_GOODUSE = 0x600; -const SVAUD_BADUSE = 0x1800; -const SVAUD_USE = SVAUD_GOODUSE|SVAUD_BADUSE; -const SVAUD_USERLIST = 8192; -const SVAUD_PERMISSIONS = 16384; -const SVAUD_RESOURCE = 32768; -const SVAUD_LOGONLIM = 65536; - -const AA_AUDIT_ALL=1; -const AA_A_OWNER=4; -const AA_CLOSE=8; -const AA_S_OPEN=16; -const AA_S_WRITE=32; -const AA_S_CREATE=32; -const AA_S_DELETE=64; -const AA_S_ACL=128; -const AA_S_ALL=253; -const AA_F_OPEN=256; -const AA_F_WRITE=512; -const AA_F_CREATE=512; -const AA_F_DELETE=1024; -const AA_F_ACL=2048; -const AA_F_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; -const AA_A_OPEN=2048; -const AA_A_WRITE=4096; -const AA_A_CREATE=8192; -const AA_A_DELETE=16384; -const AA_A_ACL=32768; -const AA_A_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; - -struct AUDIT_ENTRY{ - DWORD ae_len; - DWORD ae_reserved; - DWORD ae_time; - DWORD ae_type; - DWORD ae_data_offset; - DWORD ae_data_size; -} -alias AUDIT_ENTRY* PAUDIT_ENTRY, LPAUDIT_ENTRY; - -struct HLOG{ - DWORD time; - DWORD last_flags; - DWORD offset; - DWORD rec_offset; -} -alias HLOG* PHLOG, LPHLOG; - -struct AE_SRVSTATUS{ - DWORD ae_sv_status; -} -alias AE_SRVSTATUS* PAE_SRVSTATUS, LPAE_SRVSTATUS; - -struct AE_SESSLOGON{ - DWORD ae_so_compname; - DWORD ae_so_username; - DWORD ae_so_privilege; -} -alias AE_SESSLOGON* PAE_SESSLOGON, LPAE_SESSLOGON; - -struct AE_SESSLOGOFF{ - DWORD ae_sf_compname; - DWORD ae_sf_username; - DWORD ae_sf_reason; -} -alias AE_SESSLOGOFF* PAE_SESSLOGOFF, LPAE_SESSLOGOFF; - -struct AE_SESSPWERR{ - DWORD ae_sp_compname; - DWORD ae_sp_username; -} -alias AE_SESSPWERR* PAE_SESSPWERR, LPAE_SESSPWERR; - -struct AE_CONNSTART{ - DWORD ae_ct_compname; - DWORD ae_ct_username; - DWORD ae_ct_netname; - DWORD ae_ct_connid; -} -alias AE_CONNSTART* PAE_CONNSTART, LPAE_CONNSTART; - -struct AE_CONNSTOP{ - DWORD ae_cp_compname; - DWORD ae_cp_username; - DWORD ae_cp_netname; - DWORD ae_cp_connid; - DWORD ae_cp_reason; -} -alias AE_CONNSTOP* PAE_CONNSTOP, LPAE_CONNSTOP; - -struct AE_CONNREJ{ - DWORD ae_cr_compname; - DWORD ae_cr_username; - DWORD ae_cr_netname; - DWORD ae_cr_reason; -} -alias AE_CONNREJ* PAE_CONNREJ, LPAE_CONNREJ; - -struct AE_RESACCESS{ - DWORD ae_ra_compname; - DWORD ae_ra_username; - DWORD ae_ra_resname; - DWORD ae_ra_operation; - DWORD ae_ra_returncode; - DWORD ae_ra_restype; - DWORD ae_ra_fileid; -} -alias AE_RESACCESS* PAE_RESACCESS, LPAE_RESACCESS; - -struct AE_RESACCESSREJ{ - DWORD ae_rr_compname; - DWORD ae_rr_username; - DWORD ae_rr_resname; - DWORD ae_rr_operation; -} -alias AE_RESACCESSREJ* PAE_RESACCESSREJ, LPAE_RESACCESSREJ; - -struct AE_CLOSEFILE{ - DWORD ae_cf_compname; - DWORD ae_cf_username; - DWORD ae_cf_resname; - DWORD ae_cf_fileid; - DWORD ae_cf_duration; - DWORD ae_cf_reason; -} -alias AE_CLOSEFILE* PAE_CLOSEFILE, LPAE_CLOSEFILE; - -struct AE_SERVICESTAT{ - DWORD ae_ss_compname; - DWORD ae_ss_username; - DWORD ae_ss_svcname; - DWORD ae_ss_status; - DWORD ae_ss_code; - DWORD ae_ss_text; - DWORD ae_ss_returnval; -} -alias AE_SERVICESTAT* PAE_SERVICESTAT, LPAE_SERVICESTAT; - -struct AE_ACLMOD{ - DWORD ae_am_compname; - DWORD ae_am_username; - DWORD ae_am_resname; - DWORD ae_am_action; - DWORD ae_am_datalen; -} -alias AE_ACLMOD* PAE_ACLMOD, LPAE_ACLMOD; - -struct AE_UASMOD{ - DWORD ae_um_compname; - DWORD ae_um_username; - DWORD ae_um_resname; - DWORD ae_um_rectype; - DWORD ae_um_action; - DWORD ae_um_datalen; -} -alias AE_UASMOD* PAE_UASMOD, LPAE_UASMOD; - -struct AE_NETLOGON{ - DWORD ae_no_compname; - DWORD ae_no_username; - DWORD ae_no_privilege; - DWORD ae_no_authflags; -} -alias AE_NETLOGON* PAE_NETLOGON, LPAE_NETLOGON; - -struct AE_NETLOGOFF{ - DWORD ae_nf_compname; - DWORD ae_nf_username; - DWORD ae_nf_reserved1; - DWORD ae_nf_reserved2; -} -alias AE_NETLOGOFF* PAE_NETLOGOFF, LPAE_NETLOGOFF; - -struct AE_ACCLIM{ - DWORD ae_al_compname; - DWORD ae_al_username; - DWORD ae_al_resname; - DWORD ae_al_limit; -} -alias AE_ACCLIM* PAE_ACCLIM, LPAE_ACCLIM; - -struct AE_LOCKOUT{ - DWORD ae_lk_compname; - DWORD ae_lk_username; - DWORD ae_lk_action; - DWORD ae_lk_bad_pw_count; -} -alias AE_LOCKOUT* PAE_LOCKOUT, LPAE_LOCKOUT; - -struct AE_GENERIC{ - DWORD ae_ge_msgfile; - DWORD ae_ge_msgnum; - DWORD ae_ge_params; - DWORD ae_ge_param1; - DWORD ae_ge_param2; - DWORD ae_ge_param3; - DWORD ae_ge_param4; - DWORD ae_ge_param5; - DWORD ae_ge_param6; - DWORD ae_ge_param7; - DWORD ae_ge_param8; - DWORD ae_ge_param9; -} -alias AE_GENERIC* PAE_GENERIC, LPAE_GENERIC; - -extern (Windows) { -deprecated { -NET_API_STATUS NetAuditClear(LPCWSTR,LPCWSTR,LPCWSTR); -NET_API_STATUS NetAuditRead(LPTSTR,LPTSTR,LPHLOG,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); -NET_API_STATUS NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE); -} -} - -/+ -/* MinGW: These conflict with struct typedefs, why? */ -const AE_SRVSTATUS=0; -const AE_SESSLOGON=1; -const AE_SESSLOGOFF=2; -const AE_SESSPWERR=3; -const AE_CONNSTART=4; -const AE_CONNSTOP=5; -const AE_CONNREJ=6; -const AE_RESACCESS=7; -const AE_RESACCESSREJ=8; -const AE_CLOSEFILE=9; -const AE_SERVICESTAT=11; -const AE_ACLMOD=12; -const AE_UASMOD=13; -const AE_NETLOGON=14; -const AE_NETLOGOFF=15; -const AE_NETLOGDENIED=16; -const AE_ACCLIMITEXCD=17; -const AE_RESACCESS2=18; -const AE_ACLMODFAIL=19; -const AE_LOCKOUT=20; -const AE_GENERIC_TYPE=21; -const AE_SRVSTART=0; -const AE_SRVPAUSED=1; -const AE_SRVCONT=2; -const AE_SRVSTOP=3; +/***********************************************************************\ +* lmaudit.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +// COMMENT: This file may be deprecated. +module win32.lmaudit; + +private import win32.lmcons, win32.windef; + +const LOGFLAGS_FORWARD = 0; +const LOGFLAGS_BACKWARD = 1; +const LOGFLAGS_SEEK = 2; + +const ACTION_LOCKOUT = 0; +const ACTION_ADMINUNLOCK = 1; + +const AE_GUEST=0; +const AE_USER=1; +const AE_ADMIN=2; +const AE_NORMAL=0; +const AE_USERLIMIT=0; +const AE_GENERAL=0; +const AE_ERROR=1; +const AE_SESSDIS=1; +const AE_BADPW=1; +const AE_AUTODIS=2; +const AE_UNSHARE=2; +const AE_ADMINPRIVREQD=2; +const AE_ADMINDIS=3; +const AE_NOACCESSPERM=3; +const AE_ACCRESTRICT=4; +const AE_NORMAL_CLOSE=0; +const AE_SES_CLOSE=1; +const AE_ADMIN_CLOSE=2; +const AE_LIM_UNKNOWN=0; +const AE_LIM_LOGONHOURS=1; +const AE_LIM_EXPIRED=2; +const AE_LIM_INVAL_WKSTA=3; +const AE_LIM_DISABLED=4; +const AE_LIM_DELETED=5; +const AE_MOD=0; +const AE_DELETE=1; +const AE_ADD=2; + +const AE_UAS_USER = 0; +const AE_UAS_GROUP = 1; +const AE_UAS_MODALS = 2; + +const SVAUD_SERVICE = 1; +const SVAUD_GOODSESSLOGON = 6; +const SVAUD_BADSESSLOGON = 24; +const SVAUD_SESSLOGON = SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON; +const SVAUD_GOODNETLOGON = 96; +const SVAUD_BADNETLOGON = 384; +const SVAUD_NETLOGON = SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON; +const SVAUD_LOGON = SVAUD_NETLOGON|SVAUD_SESSLOGON; +const SVAUD_GOODUSE = 0x600; +const SVAUD_BADUSE = 0x1800; +const SVAUD_USE = SVAUD_GOODUSE|SVAUD_BADUSE; +const SVAUD_USERLIST = 8192; +const SVAUD_PERMISSIONS = 16384; +const SVAUD_RESOURCE = 32768; +const SVAUD_LOGONLIM = 65536; + +const AA_AUDIT_ALL=1; +const AA_A_OWNER=4; +const AA_CLOSE=8; +const AA_S_OPEN=16; +const AA_S_WRITE=32; +const AA_S_CREATE=32; +const AA_S_DELETE=64; +const AA_S_ACL=128; +const AA_S_ALL=253; +const AA_F_OPEN=256; +const AA_F_WRITE=512; +const AA_F_CREATE=512; +const AA_F_DELETE=1024; +const AA_F_ACL=2048; +const AA_F_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; +const AA_A_OPEN=2048; +const AA_A_WRITE=4096; +const AA_A_CREATE=8192; +const AA_A_DELETE=16384; +const AA_A_ACL=32768; +const AA_A_ALL = AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL; + +struct AUDIT_ENTRY{ + DWORD ae_len; + DWORD ae_reserved; + DWORD ae_time; + DWORD ae_type; + DWORD ae_data_offset; + DWORD ae_data_size; +} +alias AUDIT_ENTRY* PAUDIT_ENTRY, LPAUDIT_ENTRY; + +struct HLOG{ + DWORD time; + DWORD last_flags; + DWORD offset; + DWORD rec_offset; +} +alias HLOG* PHLOG, LPHLOG; + +struct AE_SRVSTATUS{ + DWORD ae_sv_status; +} +alias AE_SRVSTATUS* PAE_SRVSTATUS, LPAE_SRVSTATUS; + +struct AE_SESSLOGON{ + DWORD ae_so_compname; + DWORD ae_so_username; + DWORD ae_so_privilege; +} +alias AE_SESSLOGON* PAE_SESSLOGON, LPAE_SESSLOGON; + +struct AE_SESSLOGOFF{ + DWORD ae_sf_compname; + DWORD ae_sf_username; + DWORD ae_sf_reason; +} +alias AE_SESSLOGOFF* PAE_SESSLOGOFF, LPAE_SESSLOGOFF; + +struct AE_SESSPWERR{ + DWORD ae_sp_compname; + DWORD ae_sp_username; +} +alias AE_SESSPWERR* PAE_SESSPWERR, LPAE_SESSPWERR; + +struct AE_CONNSTART{ + DWORD ae_ct_compname; + DWORD ae_ct_username; + DWORD ae_ct_netname; + DWORD ae_ct_connid; +} +alias AE_CONNSTART* PAE_CONNSTART, LPAE_CONNSTART; + +struct AE_CONNSTOP{ + DWORD ae_cp_compname; + DWORD ae_cp_username; + DWORD ae_cp_netname; + DWORD ae_cp_connid; + DWORD ae_cp_reason; +} +alias AE_CONNSTOP* PAE_CONNSTOP, LPAE_CONNSTOP; + +struct AE_CONNREJ{ + DWORD ae_cr_compname; + DWORD ae_cr_username; + DWORD ae_cr_netname; + DWORD ae_cr_reason; +} +alias AE_CONNREJ* PAE_CONNREJ, LPAE_CONNREJ; + +struct AE_RESACCESS{ + DWORD ae_ra_compname; + DWORD ae_ra_username; + DWORD ae_ra_resname; + DWORD ae_ra_operation; + DWORD ae_ra_returncode; + DWORD ae_ra_restype; + DWORD ae_ra_fileid; +} +alias AE_RESACCESS* PAE_RESACCESS, LPAE_RESACCESS; + +struct AE_RESACCESSREJ{ + DWORD ae_rr_compname; + DWORD ae_rr_username; + DWORD ae_rr_resname; + DWORD ae_rr_operation; +} +alias AE_RESACCESSREJ* PAE_RESACCESSREJ, LPAE_RESACCESSREJ; + +struct AE_CLOSEFILE{ + DWORD ae_cf_compname; + DWORD ae_cf_username; + DWORD ae_cf_resname; + DWORD ae_cf_fileid; + DWORD ae_cf_duration; + DWORD ae_cf_reason; +} +alias AE_CLOSEFILE* PAE_CLOSEFILE, LPAE_CLOSEFILE; + +struct AE_SERVICESTAT{ + DWORD ae_ss_compname; + DWORD ae_ss_username; + DWORD ae_ss_svcname; + DWORD ae_ss_status; + DWORD ae_ss_code; + DWORD ae_ss_text; + DWORD ae_ss_returnval; +} +alias AE_SERVICESTAT* PAE_SERVICESTAT, LPAE_SERVICESTAT; + +struct AE_ACLMOD{ + DWORD ae_am_compname; + DWORD ae_am_username; + DWORD ae_am_resname; + DWORD ae_am_action; + DWORD ae_am_datalen; +} +alias AE_ACLMOD* PAE_ACLMOD, LPAE_ACLMOD; + +struct AE_UASMOD{ + DWORD ae_um_compname; + DWORD ae_um_username; + DWORD ae_um_resname; + DWORD ae_um_rectype; + DWORD ae_um_action; + DWORD ae_um_datalen; +} +alias AE_UASMOD* PAE_UASMOD, LPAE_UASMOD; + +struct AE_NETLOGON{ + DWORD ae_no_compname; + DWORD ae_no_username; + DWORD ae_no_privilege; + DWORD ae_no_authflags; +} +alias AE_NETLOGON* PAE_NETLOGON, LPAE_NETLOGON; + +struct AE_NETLOGOFF{ + DWORD ae_nf_compname; + DWORD ae_nf_username; + DWORD ae_nf_reserved1; + DWORD ae_nf_reserved2; +} +alias AE_NETLOGOFF* PAE_NETLOGOFF, LPAE_NETLOGOFF; + +struct AE_ACCLIM{ + DWORD ae_al_compname; + DWORD ae_al_username; + DWORD ae_al_resname; + DWORD ae_al_limit; +} +alias AE_ACCLIM* PAE_ACCLIM, LPAE_ACCLIM; + +struct AE_LOCKOUT{ + DWORD ae_lk_compname; + DWORD ae_lk_username; + DWORD ae_lk_action; + DWORD ae_lk_bad_pw_count; +} +alias AE_LOCKOUT* PAE_LOCKOUT, LPAE_LOCKOUT; + +struct AE_GENERIC{ + DWORD ae_ge_msgfile; + DWORD ae_ge_msgnum; + DWORD ae_ge_params; + DWORD ae_ge_param1; + DWORD ae_ge_param2; + DWORD ae_ge_param3; + DWORD ae_ge_param4; + DWORD ae_ge_param5; + DWORD ae_ge_param6; + DWORD ae_ge_param7; + DWORD ae_ge_param8; + DWORD ae_ge_param9; +} +alias AE_GENERIC* PAE_GENERIC, LPAE_GENERIC; + +extern (Windows) { +deprecated { +NET_API_STATUS NetAuditClear(LPCWSTR,LPCWSTR,LPCWSTR); +NET_API_STATUS NetAuditRead(LPTSTR,LPTSTR,LPHLOG,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD); +NET_API_STATUS NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE); +} +} + +/+ +/* MinGW: These conflict with struct typedefs, why? */ +const AE_SRVSTATUS=0; +const AE_SESSLOGON=1; +const AE_SESSLOGOFF=2; +const AE_SESSPWERR=3; +const AE_CONNSTART=4; +const AE_CONNSTOP=5; +const AE_CONNREJ=6; +const AE_RESACCESS=7; +const AE_RESACCESSREJ=8; +const AE_CLOSEFILE=9; +const AE_SERVICESTAT=11; +const AE_ACLMOD=12; +const AE_UASMOD=13; +const AE_NETLOGON=14; +const AE_NETLOGOFF=15; +const AE_NETLOGDENIED=16; +const AE_ACCLIMITEXCD=17; +const AE_RESACCESS2=18; +const AE_ACLMODFAIL=19; +const AE_LOCKOUT=20; +const AE_GENERIC_TYPE=21; +const AE_SRVSTART=0; +const AE_SRVPAUSED=1; +const AE_SRVCONT=2; +const AE_SRVSTOP=3; +/ Index: src/win32/lmbrowsr.d ================================================================== --- src/win32/lmbrowsr.d +++ src/win32/lmbrowsr.d @@ -1,85 +1,85 @@ -/***********************************************************************\ -* lmbrowsr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmbrowsr; - -private import win32.lmcons, win32.windef; - -const BROWSER_ROLE_PDC = 1; -const BROWSER_ROLE_BDC = 2; - -struct BROWSER_STATISTICS { - LARGE_INTEGER StatisticsStartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - ULONG NumberOfServerEnumerations; - ULONG NumberOfDomainEnumerations; - ULONG NumberOfOtherEnumerations; - ULONG NumberOfMissedServerAnnouncements; - ULONG NumberOfMissedMailslotDatagrams; - ULONG NumberOfMissedGetBrowserServerListRequests; - ULONG NumberOfFailedServerAnnounceAllocations; - ULONG NumberOfFailedMailslotAllocations; - ULONG NumberOfFailedMailslotReceives; - ULONG NumberOfFailedMailslotWrites; - ULONG NumberOfFailedMailslotOpens; - ULONG NumberOfDuplicateMasterAnnouncements; - LARGE_INTEGER NumberOfIllegalDatagrams; -} -alias BROWSER_STATISTICS* PBROWSER_STATISTICS, LPBROWSER_STATISTICS; - -struct BROWSER_STATISTICS_100 { - LARGE_INTEGER StartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - LARGE_INTEGER NumberOfIllegalDatagrams; -} -alias BROWSER_STATISTICS_100* PBROWSER_STATISTICS_100; - -struct BROWSER_STATISTICS_101 { - LARGE_INTEGER StartTime; - LARGE_INTEGER NumberOfServerAnnouncements; - LARGE_INTEGER NumberOfDomainAnnouncements; - ULONG NumberOfElectionPackets; - ULONG NumberOfMailslotWrites; - ULONG NumberOfGetBrowserServerListRequests; - LARGE_INTEGER NumberOfIllegalDatagrams; - ULONG NumberOfMissedServerAnnouncements; - ULONG NumberOfMissedMailslotDatagrams; - ULONG NumberOfMissedGetBrowserServerListRequests; - ULONG NumberOfFailedServerAnnounceAllocations; - ULONG NumberOfFailedMailslotAllocations; - ULONG NumberOfFailedMailslotReceives; - ULONG NumberOfFailedMailslotWrites; - ULONG NumberOfFailedMailslotOpens; - ULONG NumberOfDuplicateMasterAnnouncements; -} -alias BROWSER_STATISTICS_101* PBROWSER_STATISTICS_101; - -extern (Windows) { - NET_API_STATUS I_BrowserServerEnum(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, - PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, PDWORD); - NET_API_STATUS I_BrowserServerEnumEx(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, - PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR); - NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR, PBYTE*, PDWORD); - NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR, PBYTE*, PDWORD, PDWORD); - NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR); - NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR, LPWSTR, LPWSTR, DWORD); - NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR, LPBROWSER_STATISTICS*); - NET_API_STATUS I_BrowserResetStatistics(LPCWSTR); - WORD I_BrowserServerEnumForXactsrv(LPCWSTR, LPCWSTR, ULONG, USHORT, PVOID, - WORD, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR, PWORD); - NET_API_STATUS I_BrowserDebugTrace(PWCHAR, PCHAR); -} +/***********************************************************************\ +* lmbrowsr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmbrowsr; + +private import win32.lmcons, win32.windef; + +const BROWSER_ROLE_PDC = 1; +const BROWSER_ROLE_BDC = 2; + +struct BROWSER_STATISTICS { + LARGE_INTEGER StatisticsStartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + ULONG NumberOfServerEnumerations; + ULONG NumberOfDomainEnumerations; + ULONG NumberOfOtherEnumerations; + ULONG NumberOfMissedServerAnnouncements; + ULONG NumberOfMissedMailslotDatagrams; + ULONG NumberOfMissedGetBrowserServerListRequests; + ULONG NumberOfFailedServerAnnounceAllocations; + ULONG NumberOfFailedMailslotAllocations; + ULONG NumberOfFailedMailslotReceives; + ULONG NumberOfFailedMailslotWrites; + ULONG NumberOfFailedMailslotOpens; + ULONG NumberOfDuplicateMasterAnnouncements; + LARGE_INTEGER NumberOfIllegalDatagrams; +} +alias BROWSER_STATISTICS* PBROWSER_STATISTICS, LPBROWSER_STATISTICS; + +struct BROWSER_STATISTICS_100 { + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; +} +alias BROWSER_STATISTICS_100* PBROWSER_STATISTICS_100; + +struct BROWSER_STATISTICS_101 { + LARGE_INTEGER StartTime; + LARGE_INTEGER NumberOfServerAnnouncements; + LARGE_INTEGER NumberOfDomainAnnouncements; + ULONG NumberOfElectionPackets; + ULONG NumberOfMailslotWrites; + ULONG NumberOfGetBrowserServerListRequests; + LARGE_INTEGER NumberOfIllegalDatagrams; + ULONG NumberOfMissedServerAnnouncements; + ULONG NumberOfMissedMailslotDatagrams; + ULONG NumberOfMissedGetBrowserServerListRequests; + ULONG NumberOfFailedServerAnnounceAllocations; + ULONG NumberOfFailedMailslotAllocations; + ULONG NumberOfFailedMailslotReceives; + ULONG NumberOfFailedMailslotWrites; + ULONG NumberOfFailedMailslotOpens; + ULONG NumberOfDuplicateMasterAnnouncements; +} +alias BROWSER_STATISTICS_101* PBROWSER_STATISTICS_101; + +extern (Windows) { + NET_API_STATUS I_BrowserServerEnum(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, + PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, PDWORD); + NET_API_STATUS I_BrowserServerEnumEx(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, + PBYTE*, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR); + NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR, PBYTE*, PDWORD); + NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR, PBYTE*, PDWORD, PDWORD); + NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR); + NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR, LPWSTR, LPWSTR, DWORD); + NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR, LPBROWSER_STATISTICS*); + NET_API_STATUS I_BrowserResetStatistics(LPCWSTR); + WORD I_BrowserServerEnumForXactsrv(LPCWSTR, LPCWSTR, ULONG, USHORT, PVOID, + WORD, DWORD, PDWORD, PDWORD, DWORD, LPCWSTR, LPCWSTR, PWORD); + NET_API_STATUS I_BrowserDebugTrace(PWCHAR, PCHAR); +} Index: src/win32/lmchdev.d ================================================================== --- src/win32/lmchdev.d +++ src/win32/lmchdev.d @@ -1,90 +1,90 @@ -/***********************************************************************\ -* lmchdev.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmchdev; - -// COMMENT: This file might be deprecated. - -private import win32.lmcons, win32.windef; - -const CHARDEVQ_NO_REQUESTS = -1; -const CHARDEV_CLOSE = 0; -const CHARDEVQ_MAX_PRIORITY = 1; -const CHARDEVQ_DEV_PARMNUM = 1; - -const HANDLE_INFO_LEVEL_1 = 1; -const HANDLE_CHARTIME_PARMNUM = 1; -const HANDLE_CHARCOUNT_PARMNUM = 2; - -const CHARDEV_STAT_OPENED = 2; -const CHARDEVQ_PRIORITY_PARMNUM = 2; -const CHARDEVQ_DEVS_PARMNUM = 3; -const CHARDEV_STAT_ERROR = 4; -const CHARDEVQ_NUMUSERS_PARMNUM = 4; -const CHARDEVQ_NUMAHEAD_PARMNUM = 5; -const CHARDEVQ_DEF_PRIORITY = 5; -const CHARDEVQ_PRIORITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM; -const CHARDEVQ_DEVS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM; -const CHARDEVQ_MIN_PRIORITY = 9; - -struct CHARDEV_INFO_0 { - LPWSTR ch0_dev; -} -alias CHARDEV_INFO_0* PCHARDEV_INFO_0, LPCHARDEV_INFO_0; - -struct CHARDEV_INFO_1{ - LPWSTR ch1_dev; - DWORD ch1_status; - LPWSTR ch1_username; - DWORD ch1_time; -} -alias CHARDEV_INFO_1* PCHARDEV_INFO_1, LPCHARDEV_INFO_1; - -struct CHARDEVQ_INFO_0 { - LPWSTR cq0_dev; -} -alias CHARDEVQ_INFO_0* PCHARDEVQ_INFO_0, LPCHARDEVQ_INFO_0; - -struct CHARDEVQ_INFO_1{ - LPWSTR cq1_dev; - DWORD cq1_priority; - LPWSTR cq1_devs; - DWORD cq1_numusers; - DWORD cq1_numahead; -} -alias CHARDEVQ_INFO_1* PCHARDEVQ_INFO_1, LPCHARDEVQ_INFO_1; - -struct CHARDEVQ_INFO_1002 { - DWORD cq1002_priority; -} -alias CHARDEVQ_INFO_1002* PCHARDEVQ_INFO_1002, LPCHARDEVQ_INFO_1002; - -struct CHARDEVQ_INFO_1003 { - LPWSTR cq1003_devs; -} -alias CHARDEVQ_INFO_1003* PCHARDEVQ_INFO_1003, LPCHARDEVQ_INFO_1003; - -struct HANDLE_INFO_1{ - DWORD hdli1_chartime; - DWORD hdli1_charcount; -} -alias HANDLE_INFO_1* PHANDLE_INFO_1, LPHANDLE_INFO_1; - -extern (Windows) { - NET_API_STATUS NetCharDevEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); - NET_API_STATUS NetCharDevGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetCharDevControl(LPCWSTR, LPCWSTR, DWORD); - NET_API_STATUS NetCharDevQEnum(LPCWSTR, LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); - NET_API_STATUS NetCharDevQGetInfo(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetCharDevQSetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE, PDWORD); - NET_API_STATUS NetCharDevQPurge(LPCWSTR, LPCWSTR); - NET_API_STATUS NetCharDevQPurgeSelf(LPCWSTR, LPCWSTR, LPCWSTR); - NET_API_STATUS NetHandleGetInfo(HANDLE, DWORD, PBYTE*); - NET_API_STATUS NetHandleSetInfo(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -} +/***********************************************************************\ +* lmchdev.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmchdev; + +// COMMENT: This file might be deprecated. + +private import win32.lmcons, win32.windef; + +const CHARDEVQ_NO_REQUESTS = -1; +const CHARDEV_CLOSE = 0; +const CHARDEVQ_MAX_PRIORITY = 1; +const CHARDEVQ_DEV_PARMNUM = 1; + +const HANDLE_INFO_LEVEL_1 = 1; +const HANDLE_CHARTIME_PARMNUM = 1; +const HANDLE_CHARCOUNT_PARMNUM = 2; + +const CHARDEV_STAT_OPENED = 2; +const CHARDEVQ_PRIORITY_PARMNUM = 2; +const CHARDEVQ_DEVS_PARMNUM = 3; +const CHARDEV_STAT_ERROR = 4; +const CHARDEVQ_NUMUSERS_PARMNUM = 4; +const CHARDEVQ_NUMAHEAD_PARMNUM = 5; +const CHARDEVQ_DEF_PRIORITY = 5; +const CHARDEVQ_PRIORITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM; +const CHARDEVQ_DEVS_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM; +const CHARDEVQ_MIN_PRIORITY = 9; + +struct CHARDEV_INFO_0 { + LPWSTR ch0_dev; +} +alias CHARDEV_INFO_0* PCHARDEV_INFO_0, LPCHARDEV_INFO_0; + +struct CHARDEV_INFO_1{ + LPWSTR ch1_dev; + DWORD ch1_status; + LPWSTR ch1_username; + DWORD ch1_time; +} +alias CHARDEV_INFO_1* PCHARDEV_INFO_1, LPCHARDEV_INFO_1; + +struct CHARDEVQ_INFO_0 { + LPWSTR cq0_dev; +} +alias CHARDEVQ_INFO_0* PCHARDEVQ_INFO_0, LPCHARDEVQ_INFO_0; + +struct CHARDEVQ_INFO_1{ + LPWSTR cq1_dev; + DWORD cq1_priority; + LPWSTR cq1_devs; + DWORD cq1_numusers; + DWORD cq1_numahead; +} +alias CHARDEVQ_INFO_1* PCHARDEVQ_INFO_1, LPCHARDEVQ_INFO_1; + +struct CHARDEVQ_INFO_1002 { + DWORD cq1002_priority; +} +alias CHARDEVQ_INFO_1002* PCHARDEVQ_INFO_1002, LPCHARDEVQ_INFO_1002; + +struct CHARDEVQ_INFO_1003 { + LPWSTR cq1003_devs; +} +alias CHARDEVQ_INFO_1003* PCHARDEVQ_INFO_1003, LPCHARDEVQ_INFO_1003; + +struct HANDLE_INFO_1{ + DWORD hdli1_chartime; + DWORD hdli1_charcount; +} +alias HANDLE_INFO_1* PHANDLE_INFO_1, LPHANDLE_INFO_1; + +extern (Windows) { + NET_API_STATUS NetCharDevEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); + NET_API_STATUS NetCharDevGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetCharDevControl(LPCWSTR, LPCWSTR, DWORD); + NET_API_STATUS NetCharDevQEnum(LPCWSTR, LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, PDWORD); + NET_API_STATUS NetCharDevQGetInfo(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetCharDevQSetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE, PDWORD); + NET_API_STATUS NetCharDevQPurge(LPCWSTR, LPCWSTR); + NET_API_STATUS NetCharDevQPurgeSelf(LPCWSTR, LPCWSTR, LPCWSTR); + NET_API_STATUS NetHandleGetInfo(HANDLE, DWORD, PBYTE*); + NET_API_STATUS NetHandleSetInfo(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +} Index: src/win32/lmconfig.d ================================================================== --- src/win32/lmconfig.d +++ src/win32/lmconfig.d @@ -1,30 +1,30 @@ -/***********************************************************************\ -* lmconfig.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmconfig; - -// All functions in this file are deprecated! - -private import win32.lmcons, win32.windef; - -deprecated { - struct CONFIG_INFO_0 { - LPWSTR cfgi0_key; - LPWSTR cfgi0_data; - } - - alias CONFIG_INFO_0* PCONFIG_INFO_0, LPCONFIG_INFO_0; - - extern (Windows) { - NET_API_STATUS NetConfigGet(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE*); - NET_API_STATUS NetConfigGetAll(LPCWSTR, LPCWSTR, PBYTE*); - NET_API_STATUS NetConfigSet(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, - PBYTE, DWORD); - } -} +/***********************************************************************\ +* lmconfig.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmconfig; + +// All functions in this file are deprecated! + +private import win32.lmcons, win32.windef; + +deprecated { + struct CONFIG_INFO_0 { + LPWSTR cfgi0_key; + LPWSTR cfgi0_data; + } + + alias CONFIG_INFO_0* PCONFIG_INFO_0, LPCONFIG_INFO_0; + + extern (Windows) { + NET_API_STATUS NetConfigGet(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE*); + NET_API_STATUS NetConfigGetAll(LPCWSTR, LPCWSTR, PBYTE*); + NET_API_STATUS NetConfigSet(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, DWORD, + PBYTE, DWORD); + } +} Index: src/win32/lmcons.d ================================================================== --- src/win32/lmcons.d +++ src/win32/lmcons.d @@ -1,86 +1,86 @@ -/***********************************************************************\ -* lmcons.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmcons; - -private import win32.windef; -private import win32.lmerr; // for NERR_BASE - -const TCHAR[] - MESSAGE_FILENAME = "NETMSG", - OS2MSG_FILENAME = "BASE", - HELP_MSG_FILENAME = "NETH"; - -alias DWORD NET_API_STATUS, API_RET_TYPE; - -const MIN_LANMAN_MESSAGE_ID = NERR_BASE; -const MAX_LANMAN_MESSAGE_ID = 5799; - -const CNLEN = 15; /* also in nddeapi.h */ -const UNCLEN = CNLEN + 2; - -const DNLEN = 15; -const LM20_CNLEN = 15; -const LM20_DNLEN = 15; -const LM20_SNLEN = 15; -const LM20_STXTLEN = 63; -const LM20_UNCLEN = LM20_CNLEN + 2; -const LM20_NNLEN = 12; -const LM20_RMLEN = LM20_UNCLEN + 1 + LM20_NNLEN; -const NNLEN = 80; -const RMLEN = UNCLEN + 1 + NNLEN; -const SNLEN = 80; -const STXTLEN = 256; -const PATHLEN = 256; -const LM20_PATHLEN = 256; -const DEVLEN = 80; -const LM20_DEVLEN = 8; -const EVLEN = 16; -const UNLEN = 256; -const LM20_UNLEN = 20; -const GNLEN = UNLEN; -const LM20_GNLEN = LM20_UNLEN; -const PWLEN = 256; -const LM20_PWLEN = 14; -const SHPWLEN = 8; -const CLTYPE_LEN = 12; -const QNLEN = NNLEN; -const LM20_QNLEN = LM20_NNLEN; - -const MAXCOMMENTSZ = 256; -const LM20_MAXCOMMENTSZ = 48; -const ALERTSZ = 128; -const MAXDEVENTRIES = 32;// (sizeof(int)*8); -const NETBIOS_NAME_LEN = 16; -const DWORD MAX_PREFERRED_LENGTH = -1; -const CRYPT_KEY_LEN = 7; -const CRYPT_TXT_LEN = 8; -const ENCRYPTED_PWLEN = 16; -const SESSION_PWLEN = 24; -const SESSION_CRYPT_KLEN = 21; - -const PARMNUM_ALL = 0; -const DWORD PARM_ERROR_UNKNOWN = -1; -const PARM_ERROR_NONE = 0; -const PARMNUM_BASE_INFOLEVEL = 1000; - -const PLATFORM_ID_DOS = 300; -const PLATFORM_ID_OS2 = 400; -const PLATFORM_ID_NT = 500; -const PLATFORM_ID_OSF = 600; -const PLATFORM_ID_VMS = 700; - -// this is a new typedef in W2K, but it should be harmless for earlier Windows versions. -version (Unicode) { - alias LPWSTR LMSTR; - alias LPCWSTR LMCSTR; -} else { - alias LPSTR LMSTR; - alias LPCSTR LMCSTR; -} +/***********************************************************************\ +* lmcons.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmcons; + +private import win32.windef; +private import win32.lmerr; // for NERR_BASE + +const TCHAR[] + MESSAGE_FILENAME = "NETMSG", + OS2MSG_FILENAME = "BASE", + HELP_MSG_FILENAME = "NETH"; + +alias DWORD NET_API_STATUS, API_RET_TYPE; + +const MIN_LANMAN_MESSAGE_ID = NERR_BASE; +const MAX_LANMAN_MESSAGE_ID = 5799; + +const CNLEN = 15; /* also in nddeapi.h */ +const UNCLEN = CNLEN + 2; + +const DNLEN = 15; +const LM20_CNLEN = 15; +const LM20_DNLEN = 15; +const LM20_SNLEN = 15; +const LM20_STXTLEN = 63; +const LM20_UNCLEN = LM20_CNLEN + 2; +const LM20_NNLEN = 12; +const LM20_RMLEN = LM20_UNCLEN + 1 + LM20_NNLEN; +const NNLEN = 80; +const RMLEN = UNCLEN + 1 + NNLEN; +const SNLEN = 80; +const STXTLEN = 256; +const PATHLEN = 256; +const LM20_PATHLEN = 256; +const DEVLEN = 80; +const LM20_DEVLEN = 8; +const EVLEN = 16; +const UNLEN = 256; +const LM20_UNLEN = 20; +const GNLEN = UNLEN; +const LM20_GNLEN = LM20_UNLEN; +const PWLEN = 256; +const LM20_PWLEN = 14; +const SHPWLEN = 8; +const CLTYPE_LEN = 12; +const QNLEN = NNLEN; +const LM20_QNLEN = LM20_NNLEN; + +const MAXCOMMENTSZ = 256; +const LM20_MAXCOMMENTSZ = 48; +const ALERTSZ = 128; +const MAXDEVENTRIES = 32;// (sizeof(int)*8); +const NETBIOS_NAME_LEN = 16; +const DWORD MAX_PREFERRED_LENGTH = -1; +const CRYPT_KEY_LEN = 7; +const CRYPT_TXT_LEN = 8; +const ENCRYPTED_PWLEN = 16; +const SESSION_PWLEN = 24; +const SESSION_CRYPT_KLEN = 21; + +const PARMNUM_ALL = 0; +const DWORD PARM_ERROR_UNKNOWN = -1; +const PARM_ERROR_NONE = 0; +const PARMNUM_BASE_INFOLEVEL = 1000; + +const PLATFORM_ID_DOS = 300; +const PLATFORM_ID_OS2 = 400; +const PLATFORM_ID_NT = 500; +const PLATFORM_ID_OSF = 600; +const PLATFORM_ID_VMS = 700; + +// this is a new typedef in W2K, but it should be harmless for earlier Windows versions. +version (Unicode) { + alias LPWSTR LMSTR; + alias LPCWSTR LMCSTR; +} else { + alias LPSTR LMSTR; + alias LPCSTR LMCSTR; +} Index: src/win32/lmerr.d ================================================================== --- src/win32/lmerr.d +++ src/win32/lmerr.d @@ -1,313 +1,313 @@ -/***********************************************************************\ -* lmerr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmerr; - -import win32.winerror; - -enum { - NERR_Success = 0, - NERR_BASE = 2100, - NERR_NetNotStarted = NERR_BASE + 2, - NERR_UnknownServer, - NERR_ShareMem, - NERR_NoNetworkResource, - NERR_RemoteOnly, - NERR_DevNotRedirected, - NERR_ServerNotStarted = NERR_BASE + 14, - NERR_ItemNotFound, - NERR_UnknownDevDir, - NERR_RedirectedPath, - NERR_DuplicateShare, - NERR_NoRoom, - NERR_TooManyItems = NERR_BASE + 21, - NERR_InvalidMaxUsers, - NERR_BufTooSmall, - NERR_RemoteErr = NERR_BASE + 27, - NERR_LanmanIniError = NERR_BASE + 31, - NERR_NetworkError = NERR_BASE + 36, - NERR_WkstaInconsistentState, - NERR_WkstaNotStarted, - NERR_BrowserNotStarted, - NERR_InternalError, - NERR_BadTransactConfig, - NERR_InvalidAPI, - NERR_BadEventName, - NERR_DupNameReboot, - NERR_CfgCompNotFound = NERR_BASE + 46, - NERR_CfgParamNotFound, - NERR_LineTooLong = NERR_BASE + 49, - NERR_QNotFound, - NERR_JobNotFound, - NERR_DestNotFound, - NERR_DestExists, - NERR_QExists, - NERR_QNoRoom, - NERR_JobNoRoom, - NERR_DestNoRoom, - NERR_DestIdle, - NERR_DestInvalidOp, - NERR_ProcNoRespond, - NERR_SpoolerNotLoaded, - NERR_DestInvalidState, - NERR_QInvalidState, - NERR_JobInvalidState, - NERR_SpoolNoMemory, - NERR_DriverNotFound, - NERR_DataTypeInvalid, - NERR_ProcNotFound, - NERR_ServiceTableLocked = NERR_BASE + 80, - NERR_ServiceTableFull, - NERR_ServiceInstalled, - NERR_ServiceEntryLocked, - NERR_ServiceNotInstalled, - NERR_BadServiceName, - NERR_ServiceCtlTimeout, - NERR_ServiceCtlBusy, - NERR_BadServiceProgName, - NERR_ServiceNotCtrl, - NERR_ServiceKillProc, - NERR_ServiceCtlNotValid, - NERR_NotInDispatchTbl, - NERR_BadControlRecv, - NERR_ServiceNotStarting, - NERR_AlreadyLoggedOn = NERR_BASE + 100, - NERR_NotLoggedOn, - NERR_BadUsername, - NERR_BadPassword, - NERR_UnableToAddName_W, - NERR_UnableToAddName_F, - NERR_UnableToDelName_W, - NERR_UnableToDelName_F, - NERR_LogonsPaused = NERR_BASE + 109, - NERR_LogonServerConflict, - NERR_LogonNoUserPath, - NERR_LogonScriptError, - NERR_StandaloneLogon = NERR_BASE + 114, - NERR_LogonServerNotFound, - NERR_LogonDomainExists, - NERR_NonValidatedLogon, - NERR_ACFNotFound = NERR_BASE + 119, - NERR_GroupNotFound, - NERR_UserNotFound, - NERR_ResourceNotFound, - NERR_GroupExists, - NERR_UserExists, - NERR_ResourceExists, - NERR_NotPrimary, - NERR_ACFNotLoaded, - NERR_ACFNoRoom, - NERR_ACFFileIOFail, - NERR_ACFTooManyLists, - NERR_UserLogon, - NERR_ACFNoParent, - NERR_CanNotGrowSegment, - NERR_SpeGroupOp, - NERR_NotInCache, - NERR_UserInGroup, - NERR_UserNotInGroup, - NERR_AccountUndefined, - NERR_AccountExpired, - NERR_InvalidWorkstation, - NERR_InvalidLogonHours, - NERR_PasswordExpired, - NERR_PasswordCantChange, - NERR_PasswordHistConflict, - NERR_PasswordTooShort, - NERR_PasswordTooRecent, - NERR_InvalidDatabase, - NERR_DatabaseUpToDate, - NERR_SyncRequired, - NERR_UseNotFound, - NERR_BadAsgType, - NERR_DeviceIsShared, - NERR_NoComputerName = NERR_BASE + 170, - NERR_MsgAlreadyStarted, - NERR_MsgInitFailed, - NERR_NameNotFound, - NERR_AlreadyForwarded, - NERR_AddForwarded, - NERR_AlreadyExists, - NERR_TooManyNames, - NERR_DelComputerName, - NERR_LocalForward, - NERR_GrpMsgProcessor, - NERR_PausedRemote, - NERR_BadReceive, - NERR_NameInUse, - NERR_MsgNotStarted, - NERR_NotLocalName, - NERR_NoForwardName, - NERR_RemoteFull, - NERR_NameNotForwarded, - NERR_TruncatedBroadcast, - NERR_InvalidDevice = NERR_BASE + 194, - NERR_WriteFault, - NERR_DuplicateName = NERR_BASE + 197, - NERR_DeleteLater, - NERR_IncompleteDel, - NERR_MultipleNets, - NERR_NetNameNotFound = NERR_BASE + 210, - NERR_DeviceNotShared, - NERR_ClientNameNotFound, - NERR_FileIdNotFound = NERR_BASE + 214, - NERR_ExecFailure, - NERR_TmpFile, - NERR_TooMuchData, - NERR_DeviceShareConflict, - NERR_BrowserTableIncomplete, - NERR_NotLocalDomain, - NERR_DevInvalidOpCode = NERR_BASE + 231, - NERR_DevNotFound, - NERR_DevNotOpen, - NERR_BadQueueDevString, - NERR_BadQueuePriority, - NERR_NoCommDevs = NERR_BASE + 237, - NERR_QueueNotFound, - NERR_BadDevString = NERR_BASE + 240, - NERR_BadDev, - NERR_InUseBySpooler, - NERR_CommDevInUse, - NERR_InvalidComputer = NERR_BASE + 251, - NERR_MaxLenExceeded = NERR_BASE + 254, - NERR_BadComponent = NERR_BASE + 256, - NERR_CantType, - NERR_TooManyEntries = NERR_BASE + 262, - NERR_ProfileFileTooBig = NERR_BASE + 270, - NERR_ProfileOffset, - NERR_ProfileCleanup, - NERR_ProfileUnknownCmd, - NERR_ProfileLoadErr, - NERR_ProfileSaveErr, - NERR_LogOverflow = NERR_BASE + 277, - NERR_LogFileChanged, - NERR_LogFileCorrupt, - NERR_SourceIsDir, - NERR_BadSource, - NERR_BadDest, - NERR_DifferentServers, - NERR_RunSrvPaused = NERR_BASE + 285, - NERR_ErrCommRunSrv = NERR_BASE + 289, - NERR_ErrorExecingGhost = NERR_BASE + 291, - NERR_ShareNotFound, - NERR_InvalidLana = NERR_BASE + 300, - NERR_OpenFiles, - NERR_ActiveConns, - NERR_BadPasswordCore, - NERR_DevInUse, - NERR_LocalDrive, - NERR_AlertExists = NERR_BASE + 330, - NERR_TooManyAlerts, - NERR_NoSuchAlert, - NERR_BadRecipient, - NERR_AcctLimitExceeded, - NERR_InvalidLogSeek = NERR_BASE + 340, - NERR_BadUasConfig = NERR_BASE + 350, - NERR_InvalidUASOp, - NERR_LastAdmin, - NERR_DCNotFound, - NERR_LogonTrackingError, - NERR_NetlogonNotStarted, - NERR_CanNotGrowUASFile, - NERR_TimeDiffAtDC, - NERR_PasswordMismatch, - NERR_NoSuchServer = NERR_BASE + 360, - NERR_NoSuchSession, - NERR_NoSuchConnection, - NERR_TooManyServers, - NERR_TooManySessions, - NERR_TooManyConnections, - NERR_TooManyFiles, - NERR_NoAlternateServers, - NERR_TryDownLevel = NERR_BASE + 370, - NERR_UPSDriverNotStarted = NERR_BASE + 380, - NERR_UPSInvalidConfig, - NERR_UPSInvalidCommPort, - NERR_UPSSignalAsserted, - NERR_UPSShutdownFailed, - NERR_BadDosRetCode = NERR_BASE + 400, - NERR_ProgNeedsExtraMem, - NERR_BadDosFunction, - NERR_RemoteBootFailed, - NERR_BadFileCheckSum, - NERR_NoRplBootSystem, - NERR_RplLoadrNetBiosErr, - NERR_RplLoadrDiskErr, - NERR_ImageParamErr, - NERR_TooManyImageParams, - NERR_NonDosFloppyUsed, - NERR_RplBootRestart, - NERR_RplSrvrCallFailed, - NERR_CantConnectRplSrvr, - NERR_CantOpenImageFile, - NERR_CallingRplSrvr, - NERR_StartingRplBoot, - NERR_RplBootServiceTerm, - NERR_RplBootStartFailed, - NERR_RPL_CONNECTED, - NERR_BrowserConfiguredToNotRun = NERR_BASE + 450, - NERR_RplNoAdaptersStarted = NERR_BASE + 510, - NERR_RplBadRegistry, - NERR_RplBadDatabase, - NERR_RplRplfilesShare, - NERR_RplNotRplServer, - NERR_RplCannotEnum, - NERR_RplWkstaInfoCorrupted, - NERR_RplWkstaNotFound, - NERR_RplWkstaNameUnavailable, - NERR_RplProfileInfoCorrupted, - NERR_RplProfileNotFound, - NERR_RplProfileNameUnavailable, - NERR_RplProfileNotEmpty, - NERR_RplConfigInfoCorrupted, - NERR_RplConfigNotFound, - NERR_RplAdapterInfoCorrupted, - NERR_RplInternal, - NERR_RplVendorInfoCorrupted, - NERR_RplBootInfoCorrupted, - NERR_RplWkstaNeedsUserAcct, - NERR_RplNeedsRPLUSERAcct, - NERR_RplBootNotFound, - NERR_RplIncompatibleProfile, - NERR_RplAdapterNameUnavailable, - NERR_RplConfigNotEmpty, - NERR_RplBootInUse, - NERR_RplBackupDatabase, - NERR_RplAdapterNotFound, - NERR_RplVendorNotFound, - NERR_RplVendorNameUnavailable, - NERR_RplBootNameUnavailable, - NERR_RplConfigNameUnavailable, - NERR_DfsInternalCorruption = NERR_BASE + 560, - NERR_DfsVolumeDataCorrupt, - NERR_DfsNoSuchVolume, - NERR_DfsVolumeAlreadyExists, - NERR_DfsAlreadyShared, - NERR_DfsNoSuchShare, - NERR_DfsNotALeafVolume, - NERR_DfsLeafVolume, - NERR_DfsVolumeHasMultipleServers, - NERR_DfsCantCreateJunctionPoint, - NERR_DfsServerNotDfsAware, - NERR_DfsBadRenamePath, - NERR_DfsVolumeIsOffline, - NERR_DfsNoSuchServer, - NERR_DfsCyclicalName, - NERR_DfsNotSupportedInServerDfs, - NERR_DfsDuplicateService, - NERR_DfsCantRemoveLastServerShare, - NERR_DfsVolumeIsInterDfs, - NERR_DfsInconsistent, - NERR_DfsServerUpgraded, - NERR_DfsDataIsIdentical, - NERR_DfsCantRemoveDfsRoot, - NERR_DfsChildOrParentInDfs, - NERR_DfsInternalError = NERR_BASE + 590, - MAX_NERR = NERR_BASE + 899 -} +/***********************************************************************\ +* lmerr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmerr; + +import win32.winerror; + +enum { + NERR_Success = 0, + NERR_BASE = 2100, + NERR_NetNotStarted = NERR_BASE + 2, + NERR_UnknownServer, + NERR_ShareMem, + NERR_NoNetworkResource, + NERR_RemoteOnly, + NERR_DevNotRedirected, + NERR_ServerNotStarted = NERR_BASE + 14, + NERR_ItemNotFound, + NERR_UnknownDevDir, + NERR_RedirectedPath, + NERR_DuplicateShare, + NERR_NoRoom, + NERR_TooManyItems = NERR_BASE + 21, + NERR_InvalidMaxUsers, + NERR_BufTooSmall, + NERR_RemoteErr = NERR_BASE + 27, + NERR_LanmanIniError = NERR_BASE + 31, + NERR_NetworkError = NERR_BASE + 36, + NERR_WkstaInconsistentState, + NERR_WkstaNotStarted, + NERR_BrowserNotStarted, + NERR_InternalError, + NERR_BadTransactConfig, + NERR_InvalidAPI, + NERR_BadEventName, + NERR_DupNameReboot, + NERR_CfgCompNotFound = NERR_BASE + 46, + NERR_CfgParamNotFound, + NERR_LineTooLong = NERR_BASE + 49, + NERR_QNotFound, + NERR_JobNotFound, + NERR_DestNotFound, + NERR_DestExists, + NERR_QExists, + NERR_QNoRoom, + NERR_JobNoRoom, + NERR_DestNoRoom, + NERR_DestIdle, + NERR_DestInvalidOp, + NERR_ProcNoRespond, + NERR_SpoolerNotLoaded, + NERR_DestInvalidState, + NERR_QInvalidState, + NERR_JobInvalidState, + NERR_SpoolNoMemory, + NERR_DriverNotFound, + NERR_DataTypeInvalid, + NERR_ProcNotFound, + NERR_ServiceTableLocked = NERR_BASE + 80, + NERR_ServiceTableFull, + NERR_ServiceInstalled, + NERR_ServiceEntryLocked, + NERR_ServiceNotInstalled, + NERR_BadServiceName, + NERR_ServiceCtlTimeout, + NERR_ServiceCtlBusy, + NERR_BadServiceProgName, + NERR_ServiceNotCtrl, + NERR_ServiceKillProc, + NERR_ServiceCtlNotValid, + NERR_NotInDispatchTbl, + NERR_BadControlRecv, + NERR_ServiceNotStarting, + NERR_AlreadyLoggedOn = NERR_BASE + 100, + NERR_NotLoggedOn, + NERR_BadUsername, + NERR_BadPassword, + NERR_UnableToAddName_W, + NERR_UnableToAddName_F, + NERR_UnableToDelName_W, + NERR_UnableToDelName_F, + NERR_LogonsPaused = NERR_BASE + 109, + NERR_LogonServerConflict, + NERR_LogonNoUserPath, + NERR_LogonScriptError, + NERR_StandaloneLogon = NERR_BASE + 114, + NERR_LogonServerNotFound, + NERR_LogonDomainExists, + NERR_NonValidatedLogon, + NERR_ACFNotFound = NERR_BASE + 119, + NERR_GroupNotFound, + NERR_UserNotFound, + NERR_ResourceNotFound, + NERR_GroupExists, + NERR_UserExists, + NERR_ResourceExists, + NERR_NotPrimary, + NERR_ACFNotLoaded, + NERR_ACFNoRoom, + NERR_ACFFileIOFail, + NERR_ACFTooManyLists, + NERR_UserLogon, + NERR_ACFNoParent, + NERR_CanNotGrowSegment, + NERR_SpeGroupOp, + NERR_NotInCache, + NERR_UserInGroup, + NERR_UserNotInGroup, + NERR_AccountUndefined, + NERR_AccountExpired, + NERR_InvalidWorkstation, + NERR_InvalidLogonHours, + NERR_PasswordExpired, + NERR_PasswordCantChange, + NERR_PasswordHistConflict, + NERR_PasswordTooShort, + NERR_PasswordTooRecent, + NERR_InvalidDatabase, + NERR_DatabaseUpToDate, + NERR_SyncRequired, + NERR_UseNotFound, + NERR_BadAsgType, + NERR_DeviceIsShared, + NERR_NoComputerName = NERR_BASE + 170, + NERR_MsgAlreadyStarted, + NERR_MsgInitFailed, + NERR_NameNotFound, + NERR_AlreadyForwarded, + NERR_AddForwarded, + NERR_AlreadyExists, + NERR_TooManyNames, + NERR_DelComputerName, + NERR_LocalForward, + NERR_GrpMsgProcessor, + NERR_PausedRemote, + NERR_BadReceive, + NERR_NameInUse, + NERR_MsgNotStarted, + NERR_NotLocalName, + NERR_NoForwardName, + NERR_RemoteFull, + NERR_NameNotForwarded, + NERR_TruncatedBroadcast, + NERR_InvalidDevice = NERR_BASE + 194, + NERR_WriteFault, + NERR_DuplicateName = NERR_BASE + 197, + NERR_DeleteLater, + NERR_IncompleteDel, + NERR_MultipleNets, + NERR_NetNameNotFound = NERR_BASE + 210, + NERR_DeviceNotShared, + NERR_ClientNameNotFound, + NERR_FileIdNotFound = NERR_BASE + 214, + NERR_ExecFailure, + NERR_TmpFile, + NERR_TooMuchData, + NERR_DeviceShareConflict, + NERR_BrowserTableIncomplete, + NERR_NotLocalDomain, + NERR_DevInvalidOpCode = NERR_BASE + 231, + NERR_DevNotFound, + NERR_DevNotOpen, + NERR_BadQueueDevString, + NERR_BadQueuePriority, + NERR_NoCommDevs = NERR_BASE + 237, + NERR_QueueNotFound, + NERR_BadDevString = NERR_BASE + 240, + NERR_BadDev, + NERR_InUseBySpooler, + NERR_CommDevInUse, + NERR_InvalidComputer = NERR_BASE + 251, + NERR_MaxLenExceeded = NERR_BASE + 254, + NERR_BadComponent = NERR_BASE + 256, + NERR_CantType, + NERR_TooManyEntries = NERR_BASE + 262, + NERR_ProfileFileTooBig = NERR_BASE + 270, + NERR_ProfileOffset, + NERR_ProfileCleanup, + NERR_ProfileUnknownCmd, + NERR_ProfileLoadErr, + NERR_ProfileSaveErr, + NERR_LogOverflow = NERR_BASE + 277, + NERR_LogFileChanged, + NERR_LogFileCorrupt, + NERR_SourceIsDir, + NERR_BadSource, + NERR_BadDest, + NERR_DifferentServers, + NERR_RunSrvPaused = NERR_BASE + 285, + NERR_ErrCommRunSrv = NERR_BASE + 289, + NERR_ErrorExecingGhost = NERR_BASE + 291, + NERR_ShareNotFound, + NERR_InvalidLana = NERR_BASE + 300, + NERR_OpenFiles, + NERR_ActiveConns, + NERR_BadPasswordCore, + NERR_DevInUse, + NERR_LocalDrive, + NERR_AlertExists = NERR_BASE + 330, + NERR_TooManyAlerts, + NERR_NoSuchAlert, + NERR_BadRecipient, + NERR_AcctLimitExceeded, + NERR_InvalidLogSeek = NERR_BASE + 340, + NERR_BadUasConfig = NERR_BASE + 350, + NERR_InvalidUASOp, + NERR_LastAdmin, + NERR_DCNotFound, + NERR_LogonTrackingError, + NERR_NetlogonNotStarted, + NERR_CanNotGrowUASFile, + NERR_TimeDiffAtDC, + NERR_PasswordMismatch, + NERR_NoSuchServer = NERR_BASE + 360, + NERR_NoSuchSession, + NERR_NoSuchConnection, + NERR_TooManyServers, + NERR_TooManySessions, + NERR_TooManyConnections, + NERR_TooManyFiles, + NERR_NoAlternateServers, + NERR_TryDownLevel = NERR_BASE + 370, + NERR_UPSDriverNotStarted = NERR_BASE + 380, + NERR_UPSInvalidConfig, + NERR_UPSInvalidCommPort, + NERR_UPSSignalAsserted, + NERR_UPSShutdownFailed, + NERR_BadDosRetCode = NERR_BASE + 400, + NERR_ProgNeedsExtraMem, + NERR_BadDosFunction, + NERR_RemoteBootFailed, + NERR_BadFileCheckSum, + NERR_NoRplBootSystem, + NERR_RplLoadrNetBiosErr, + NERR_RplLoadrDiskErr, + NERR_ImageParamErr, + NERR_TooManyImageParams, + NERR_NonDosFloppyUsed, + NERR_RplBootRestart, + NERR_RplSrvrCallFailed, + NERR_CantConnectRplSrvr, + NERR_CantOpenImageFile, + NERR_CallingRplSrvr, + NERR_StartingRplBoot, + NERR_RplBootServiceTerm, + NERR_RplBootStartFailed, + NERR_RPL_CONNECTED, + NERR_BrowserConfiguredToNotRun = NERR_BASE + 450, + NERR_RplNoAdaptersStarted = NERR_BASE + 510, + NERR_RplBadRegistry, + NERR_RplBadDatabase, + NERR_RplRplfilesShare, + NERR_RplNotRplServer, + NERR_RplCannotEnum, + NERR_RplWkstaInfoCorrupted, + NERR_RplWkstaNotFound, + NERR_RplWkstaNameUnavailable, + NERR_RplProfileInfoCorrupted, + NERR_RplProfileNotFound, + NERR_RplProfileNameUnavailable, + NERR_RplProfileNotEmpty, + NERR_RplConfigInfoCorrupted, + NERR_RplConfigNotFound, + NERR_RplAdapterInfoCorrupted, + NERR_RplInternal, + NERR_RplVendorInfoCorrupted, + NERR_RplBootInfoCorrupted, + NERR_RplWkstaNeedsUserAcct, + NERR_RplNeedsRPLUSERAcct, + NERR_RplBootNotFound, + NERR_RplIncompatibleProfile, + NERR_RplAdapterNameUnavailable, + NERR_RplConfigNotEmpty, + NERR_RplBootInUse, + NERR_RplBackupDatabase, + NERR_RplAdapterNotFound, + NERR_RplVendorNotFound, + NERR_RplVendorNameUnavailable, + NERR_RplBootNameUnavailable, + NERR_RplConfigNameUnavailable, + NERR_DfsInternalCorruption = NERR_BASE + 560, + NERR_DfsVolumeDataCorrupt, + NERR_DfsNoSuchVolume, + NERR_DfsVolumeAlreadyExists, + NERR_DfsAlreadyShared, + NERR_DfsNoSuchShare, + NERR_DfsNotALeafVolume, + NERR_DfsLeafVolume, + NERR_DfsVolumeHasMultipleServers, + NERR_DfsCantCreateJunctionPoint, + NERR_DfsServerNotDfsAware, + NERR_DfsBadRenamePath, + NERR_DfsVolumeIsOffline, + NERR_DfsNoSuchServer, + NERR_DfsCyclicalName, + NERR_DfsNotSupportedInServerDfs, + NERR_DfsDuplicateService, + NERR_DfsCantRemoveLastServerShare, + NERR_DfsVolumeIsInterDfs, + NERR_DfsInconsistent, + NERR_DfsServerUpgraded, + NERR_DfsDataIsIdentical, + NERR_DfsCantRemoveDfsRoot, + NERR_DfsChildOrParentInDfs, + NERR_DfsInternalError = NERR_BASE + 590, + MAX_NERR = NERR_BASE + 899 +} Index: src/win32/lmerrlog.d ================================================================== --- src/win32/lmerrlog.d +++ src/win32/lmerrlog.d @@ -1,222 +1,222 @@ -/***********************************************************************\ -* lmerrlog.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmerrlog; - -// COMMENT: This appears to be only for Win16. All functions are deprecated. - -private import win32.lmcons, win32.windef; -private import win32.lmaudit; // for LPHLOG - -const ERRLOG_BASE=3100; -const ERRLOG2_BASE=5700; -const LOGFLAGS_FORWARD=0; -const LOGFLAGS_BACKWARD=1; -const LOGFLAGS_SEEK=2; -const NELOG_Internal_Error=ERRLOG_BASE; -const NELOG_Resource_Shortage=(ERRLOG_BASE+1); -const NELOG_Unable_To_Lock_Segment=(ERRLOG_BASE+2); -const NELOG_Unable_To_Unlock_Segment=(ERRLOG_BASE+3); -const NELOG_Uninstall_Service=(ERRLOG_BASE+4); -const NELOG_Init_Exec_Fail=(ERRLOG_BASE+5); -const NELOG_Ncb_Error=(ERRLOG_BASE+6); -const NELOG_Net_Not_Started=(ERRLOG_BASE+7); -const NELOG_Ioctl_Error=(ERRLOG_BASE+8); -const NELOG_System_Semaphore=(ERRLOG_BASE+9); -const NELOG_Init_OpenCreate_Err=(ERRLOG_BASE+10); -const NELOG_NetBios=(ERRLOG_BASE+11); -const NELOG_SMB_Illegal=(ERRLOG_BASE+12); -const NELOG_Service_Fail=(ERRLOG_BASE+13); -const NELOG_Entries_Lost=(ERRLOG_BASE+14); -const NELOG_Init_Seg_Overflow=(ERRLOG_BASE+20); -const NELOG_Srv_No_Mem_Grow=(ERRLOG_BASE+21); -const NELOG_Access_File_Bad=(ERRLOG_BASE+22); -const NELOG_Srvnet_Not_Started=(ERRLOG_BASE+23); -const NELOG_Init_Chardev_Err=(ERRLOG_BASE+24); -const NELOG_Remote_API=(ERRLOG_BASE+25); -const NELOG_Ncb_TooManyErr=(ERRLOG_BASE+26); -const NELOG_Mailslot_err=(ERRLOG_BASE+27); -const NELOG_ReleaseMem_Alert=(ERRLOG_BASE+28); -const NELOG_AT_cannot_write=(ERRLOG_BASE+29); -const NELOG_Cant_Make_Msg_File=(ERRLOG_BASE+30); -const NELOG_Exec_Netservr_NoMem=(ERRLOG_BASE+31); -const NELOG_Server_Lock_Failure=(ERRLOG_BASE+32); -const NELOG_Msg_Shutdown=(ERRLOG_BASE+40); -const NELOG_Msg_Sem_Shutdown=(ERRLOG_BASE+41); -const NELOG_Msg_Log_Err=(ERRLOG_BASE+50); -const NELOG_VIO_POPUP_ERR=(ERRLOG_BASE+51); -const NELOG_Msg_Unexpected_SMB_Type=(ERRLOG_BASE+52); -const NELOG_Wksta_Infoseg=(ERRLOG_BASE+60); -const NELOG_Wksta_Compname=(ERRLOG_BASE+61); -const NELOG_Wksta_BiosThreadFailure=(ERRLOG_BASE+62); -const NELOG_Wksta_IniSeg=(ERRLOG_BASE+63); -const NELOG_Wksta_HostTab_Full=(ERRLOG_BASE+64); -const NELOG_Wksta_Bad_Mailslot_SMB=(ERRLOG_BASE+65); -const NELOG_Wksta_UASInit=(ERRLOG_BASE+66); -const NELOG_Wksta_SSIRelogon=(ERRLOG_BASE+67); -const NELOG_Build_Name=(ERRLOG_BASE+70); -const NELOG_Name_Expansion=(ERRLOG_BASE+71); -const NELOG_Message_Send=(ERRLOG_BASE+72); -const NELOG_Mail_Slt_Err=(ERRLOG_BASE+73); -const NELOG_AT_cannot_read=(ERRLOG_BASE+74); -const NELOG_AT_sched_err=(ERRLOG_BASE+75); -const NELOG_AT_schedule_file_created=(ERRLOG_BASE+76); -const NELOG_Srvnet_NB_Open=(ERRLOG_BASE+77); -const NELOG_AT_Exec_Err=(ERRLOG_BASE+78); -const NELOG_Lazy_Write_Err=(ERRLOG_BASE+80); -const NELOG_HotFix=(ERRLOG_BASE+81); -const NELOG_HardErr_From_Server=(ERRLOG_BASE+82); -const NELOG_LocalSecFail1=(ERRLOG_BASE+83); -const NELOG_LocalSecFail2=(ERRLOG_BASE+84); -const NELOG_LocalSecFail3=(ERRLOG_BASE+85); -const NELOG_LocalSecGeneralFail=(ERRLOG_BASE+86); -const NELOG_NetWkSta_Internal_Error=(ERRLOG_BASE+90); -const NELOG_NetWkSta_No_Resource=(ERRLOG_BASE+91); -const NELOG_NetWkSta_SMB_Err=(ERRLOG_BASE+92); -const NELOG_NetWkSta_VC_Err=(ERRLOG_BASE+93); -const NELOG_NetWkSta_Stuck_VC_Err=(ERRLOG_BASE+94); -const NELOG_NetWkSta_NCB_Err=(ERRLOG_BASE+95); -const NELOG_NetWkSta_Write_Behind_Err=(ERRLOG_BASE+96); -const NELOG_NetWkSta_Reset_Err=(ERRLOG_BASE+97); -const NELOG_NetWkSta_Too_Many=(ERRLOG_BASE+98); -const NELOG_Srv_Thread_Failure=(ERRLOG_BASE+104); -const NELOG_Srv_Close_Failure=(ERRLOG_BASE+105); -const NELOG_ReplUserCurDir=(ERRLOG_BASE+106); -const NELOG_ReplCannotMasterDir=(ERRLOG_BASE+107); -const NELOG_ReplUpdateError=(ERRLOG_BASE+108); -const NELOG_ReplLostMaster=(ERRLOG_BASE+109); -const NELOG_NetlogonAuthDCFail=(ERRLOG_BASE+110); -const NELOG_ReplLogonFailed=(ERRLOG_BASE+111); -const NELOG_ReplNetErr=(ERRLOG_BASE+112); -const NELOG_ReplMaxFiles=(ERRLOG_BASE+113); -const NELOG_ReplMaxTreeDepth=(ERRLOG_BASE+114); -const NELOG_ReplBadMsg=(ERRLOG_BASE+115); -const NELOG_ReplSysErr=(ERRLOG_BASE+116); -const NELOG_ReplUserLoged=(ERRLOG_BASE+117); -const NELOG_ReplBadImport=(ERRLOG_BASE+118); -const NELOG_ReplBadExport=(ERRLOG_BASE+119); -const NELOG_ReplSignalFileErr=(ERRLOG_BASE+120); -const NELOG_DiskFT=(ERRLOG_BASE+121); -const NELOG_ReplAccessDenied=(ERRLOG_BASE+122); -const NELOG_NetlogonFailedPrimary=(ERRLOG_BASE+123); -const NELOG_NetlogonPasswdSetFailed=(ERRLOG_BASE+124); -const NELOG_NetlogonTrackingError=(ERRLOG_BASE+125); -const NELOG_NetlogonSyncError=(ERRLOG_BASE+126); -const NELOG_UPS_PowerOut=(ERRLOG_BASE+130); -const NELOG_UPS_Shutdown=(ERRLOG_BASE+131); -const NELOG_UPS_CmdFileError=(ERRLOG_BASE+132); -const NELOG_UPS_CannotOpenDriver=(ERRLOG_BASE+133); -const NELOG_UPS_PowerBack=(ERRLOG_BASE+134); -const NELOG_UPS_CmdFileConfig=(ERRLOG_BASE+135); -const NELOG_UPS_CmdFileExec=(ERRLOG_BASE+136); -const NELOG_Missing_Parameter=(ERRLOG_BASE+150); -const NELOG_Invalid_Config_Line=(ERRLOG_BASE+151); -const NELOG_Invalid_Config_File=(ERRLOG_BASE+152); -const NELOG_File_Changed=(ERRLOG_BASE+153); -const NELOG_Files_Dont_Fit=(ERRLOG_BASE+154); -const NELOG_Wrong_DLL_Version=(ERRLOG_BASE+155); -const NELOG_Error_in_DLL=(ERRLOG_BASE+156); -const NELOG_System_Error=(ERRLOG_BASE+157); -const NELOG_FT_ErrLog_Too_Large=(ERRLOG_BASE+158); -const NELOG_FT_Update_In_Progress=(ERRLOG_BASE+159); -const NELOG_OEM_Code=(ERRLOG_BASE+199); -const NELOG_NetlogonSSIInitError=ERRLOG2_BASE; -const NELOG_NetlogonFailedToUpdateTrustList=(ERRLOG2_BASE+1); -const NELOG_NetlogonFailedToAddRpcInterface=(ERRLOG2_BASE+2); -const NELOG_NetlogonFailedToReadMailslot=(ERRLOG2_BASE+3); -const NELOG_NetlogonFailedToRegisterSC=(ERRLOG2_BASE+4); -const NELOG_NetlogonChangeLogCorrupt=(ERRLOG2_BASE+5); -const NELOG_NetlogonFailedToCreateShare=(ERRLOG2_BASE+6); -const NELOG_NetlogonDownLevelLogonFailed=(ERRLOG2_BASE+7); -const NELOG_NetlogonDownLevelLogoffFailed=(ERRLOG2_BASE+8); -const NELOG_NetlogonNTLogonFailed=(ERRLOG2_BASE+9); -const NELOG_NetlogonNTLogoffFailed=(ERRLOG2_BASE+10); -const NELOG_NetlogonPartialSyncCallSuccess=(ERRLOG2_BASE+11); -const NELOG_NetlogonPartialSyncCallFailed=(ERRLOG2_BASE+12); -const NELOG_NetlogonFullSyncCallSuccess=(ERRLOG2_BASE+13); -const NELOG_NetlogonFullSyncCallFailed=(ERRLOG2_BASE+14); -const NELOG_NetlogonPartialSyncSuccess=(ERRLOG2_BASE+15); -const NELOG_NetlogonPartialSyncFailed=(ERRLOG2_BASE+16); -const NELOG_NetlogonFullSyncSuccess=(ERRLOG2_BASE+17); -const NELOG_NetlogonFullSyncFailed=(ERRLOG2_BASE+18); -const NELOG_NetlogonAuthNoDomainController=(ERRLOG2_BASE+19); -const NELOG_NetlogonAuthNoTrustLsaSecret=(ERRLOG2_BASE+20); -const NELOG_NetlogonAuthNoTrustSamAccount=(ERRLOG2_BASE+21); -const NELOG_NetlogonServerAuthFailed=(ERRLOG2_BASE+22); -const NELOG_NetlogonServerAuthNoTrustSamAccount=(ERRLOG2_BASE+23); -const NELOG_FailedToRegisterSC=(ERRLOG2_BASE+24); -const NELOG_FailedToSetServiceStatus=(ERRLOG2_BASE+25); -const NELOG_FailedToGetComputerName=(ERRLOG2_BASE+26); -const NELOG_DriverNotLoaded=(ERRLOG2_BASE+27); -const NELOG_NoTranportLoaded=(ERRLOG2_BASE+28); -const NELOG_NetlogonFailedDomainDelta=(ERRLOG2_BASE+29); -const NELOG_NetlogonFailedGlobalGroupDelta=(ERRLOG2_BASE+30); -const NELOG_NetlogonFailedLocalGroupDelta=(ERRLOG2_BASE+31); -const NELOG_NetlogonFailedUserDelta=(ERRLOG2_BASE+32); -const NELOG_NetlogonFailedPolicyDelta=(ERRLOG2_BASE+33); -const NELOG_NetlogonFailedTrustedDomainDelta=(ERRLOG2_BASE+34); -const NELOG_NetlogonFailedAccountDelta=(ERRLOG2_BASE+35); -const NELOG_NetlogonFailedSecretDelta=(ERRLOG2_BASE+36); -const NELOG_NetlogonSystemError=(ERRLOG2_BASE+37); -const NELOG_NetlogonDuplicateMachineAccounts=(ERRLOG2_BASE+38); -const NELOG_NetlogonTooManyGlobalGroups=(ERRLOG2_BASE+39); -const NELOG_NetlogonBrowserDriver=(ERRLOG2_BASE+40); -const NELOG_NetlogonAddNameFailure=(ERRLOG2_BASE+41); -const NELOG_RplMessages=(ERRLOG2_BASE+42); -const NELOG_RplXnsBoot=(ERRLOG2_BASE+43); -const NELOG_RplSystem=(ERRLOG2_BASE+44); -const NELOG_RplWkstaTimeout=(ERRLOG2_BASE+45); -const NELOG_RplWkstaFileOpen=(ERRLOG2_BASE+46); -const NELOG_RplWkstaFileRead=(ERRLOG2_BASE+47); -const NELOG_RplWkstaMemory=(ERRLOG2_BASE+48); -const NELOG_RplWkstaFileChecksum=(ERRLOG2_BASE+49); -const NELOG_RplWkstaFileLineCount=(ERRLOG2_BASE+50); -const NELOG_RplWkstaBbcFile=(ERRLOG2_BASE+51); -const NELOG_RplWkstaFileSize=(ERRLOG2_BASE+52); -const NELOG_RplWkstaInternal=(ERRLOG2_BASE+53); -const NELOG_RplWkstaWrongVersion=(ERRLOG2_BASE+54); -const NELOG_RplWkstaNetwork=(ERRLOG2_BASE+55); -const NELOG_RplAdapterResource=(ERRLOG2_BASE+56); -const NELOG_RplFileCopy=(ERRLOG2_BASE+57); -const NELOG_RplFileDelete=(ERRLOG2_BASE+58); -const NELOG_RplFilePerms=(ERRLOG2_BASE+59); -const NELOG_RplCheckConfigs=(ERRLOG2_BASE+60); -const NELOG_RplCreateProfiles=(ERRLOG2_BASE+61); -const NELOG_RplRegistry=(ERRLOG2_BASE+62); -const NELOG_RplReplaceRPLDISK=(ERRLOG2_BASE+63); -const NELOG_RplCheckSecurity=(ERRLOG2_BASE+64); -const NELOG_RplBackupDatabase=(ERRLOG2_BASE+65); -const NELOG_RplInitDatabase=(ERRLOG2_BASE+66); -const NELOG_RplRestoreDatabaseFailure=(ERRLOG2_BASE+67); -const NELOG_RplRestoreDatabaseSuccess=(ERRLOG2_BASE+68); -const NELOG_RplInitRestoredDatabase=(ERRLOG2_BASE+69); -const NELOG_NetlogonSessionTypeWrong=(ERRLOG2_BASE+70); - -struct ERROR_LOG { - DWORD el_len; - DWORD el_reserved; - DWORD el_time; - DWORD el_error; - LPWSTR el_name; - LPWSTR el_text; - LPBYTE el_data; - DWORD el_data_size; - DWORD el_nstrings; -} -alias ERROR_LOG* PERROR_LOG, LPERROR_LOG; - -extern (Windows) { - deprecated { - NET_API_STATUS NetErrorLogClear(LPCWSTR, LPCWSTR, LPBYTE); - NET_API_STATUS NetErrorLogRead(LPCWSTR, LPWSTR, LPHLOG, DWORD, - LPDWORD, DWORD, DWORD, LPBYTE*, DWORD, LPDWORD, LPDWORD); - NET_API_STATUS NetErrorLogWrite(LPBYTE, DWORD, LPCWSTR, LPBYTE, - DWORD, LPBYTE, DWORD, LPBYTE); - } +/***********************************************************************\ +* lmerrlog.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmerrlog; + +// COMMENT: This appears to be only for Win16. All functions are deprecated. + +private import win32.lmcons, win32.windef; +private import win32.lmaudit; // for LPHLOG + +const ERRLOG_BASE=3100; +const ERRLOG2_BASE=5700; +const LOGFLAGS_FORWARD=0; +const LOGFLAGS_BACKWARD=1; +const LOGFLAGS_SEEK=2; +const NELOG_Internal_Error=ERRLOG_BASE; +const NELOG_Resource_Shortage=(ERRLOG_BASE+1); +const NELOG_Unable_To_Lock_Segment=(ERRLOG_BASE+2); +const NELOG_Unable_To_Unlock_Segment=(ERRLOG_BASE+3); +const NELOG_Uninstall_Service=(ERRLOG_BASE+4); +const NELOG_Init_Exec_Fail=(ERRLOG_BASE+5); +const NELOG_Ncb_Error=(ERRLOG_BASE+6); +const NELOG_Net_Not_Started=(ERRLOG_BASE+7); +const NELOG_Ioctl_Error=(ERRLOG_BASE+8); +const NELOG_System_Semaphore=(ERRLOG_BASE+9); +const NELOG_Init_OpenCreate_Err=(ERRLOG_BASE+10); +const NELOG_NetBios=(ERRLOG_BASE+11); +const NELOG_SMB_Illegal=(ERRLOG_BASE+12); +const NELOG_Service_Fail=(ERRLOG_BASE+13); +const NELOG_Entries_Lost=(ERRLOG_BASE+14); +const NELOG_Init_Seg_Overflow=(ERRLOG_BASE+20); +const NELOG_Srv_No_Mem_Grow=(ERRLOG_BASE+21); +const NELOG_Access_File_Bad=(ERRLOG_BASE+22); +const NELOG_Srvnet_Not_Started=(ERRLOG_BASE+23); +const NELOG_Init_Chardev_Err=(ERRLOG_BASE+24); +const NELOG_Remote_API=(ERRLOG_BASE+25); +const NELOG_Ncb_TooManyErr=(ERRLOG_BASE+26); +const NELOG_Mailslot_err=(ERRLOG_BASE+27); +const NELOG_ReleaseMem_Alert=(ERRLOG_BASE+28); +const NELOG_AT_cannot_write=(ERRLOG_BASE+29); +const NELOG_Cant_Make_Msg_File=(ERRLOG_BASE+30); +const NELOG_Exec_Netservr_NoMem=(ERRLOG_BASE+31); +const NELOG_Server_Lock_Failure=(ERRLOG_BASE+32); +const NELOG_Msg_Shutdown=(ERRLOG_BASE+40); +const NELOG_Msg_Sem_Shutdown=(ERRLOG_BASE+41); +const NELOG_Msg_Log_Err=(ERRLOG_BASE+50); +const NELOG_VIO_POPUP_ERR=(ERRLOG_BASE+51); +const NELOG_Msg_Unexpected_SMB_Type=(ERRLOG_BASE+52); +const NELOG_Wksta_Infoseg=(ERRLOG_BASE+60); +const NELOG_Wksta_Compname=(ERRLOG_BASE+61); +const NELOG_Wksta_BiosThreadFailure=(ERRLOG_BASE+62); +const NELOG_Wksta_IniSeg=(ERRLOG_BASE+63); +const NELOG_Wksta_HostTab_Full=(ERRLOG_BASE+64); +const NELOG_Wksta_Bad_Mailslot_SMB=(ERRLOG_BASE+65); +const NELOG_Wksta_UASInit=(ERRLOG_BASE+66); +const NELOG_Wksta_SSIRelogon=(ERRLOG_BASE+67); +const NELOG_Build_Name=(ERRLOG_BASE+70); +const NELOG_Name_Expansion=(ERRLOG_BASE+71); +const NELOG_Message_Send=(ERRLOG_BASE+72); +const NELOG_Mail_Slt_Err=(ERRLOG_BASE+73); +const NELOG_AT_cannot_read=(ERRLOG_BASE+74); +const NELOG_AT_sched_err=(ERRLOG_BASE+75); +const NELOG_AT_schedule_file_created=(ERRLOG_BASE+76); +const NELOG_Srvnet_NB_Open=(ERRLOG_BASE+77); +const NELOG_AT_Exec_Err=(ERRLOG_BASE+78); +const NELOG_Lazy_Write_Err=(ERRLOG_BASE+80); +const NELOG_HotFix=(ERRLOG_BASE+81); +const NELOG_HardErr_From_Server=(ERRLOG_BASE+82); +const NELOG_LocalSecFail1=(ERRLOG_BASE+83); +const NELOG_LocalSecFail2=(ERRLOG_BASE+84); +const NELOG_LocalSecFail3=(ERRLOG_BASE+85); +const NELOG_LocalSecGeneralFail=(ERRLOG_BASE+86); +const NELOG_NetWkSta_Internal_Error=(ERRLOG_BASE+90); +const NELOG_NetWkSta_No_Resource=(ERRLOG_BASE+91); +const NELOG_NetWkSta_SMB_Err=(ERRLOG_BASE+92); +const NELOG_NetWkSta_VC_Err=(ERRLOG_BASE+93); +const NELOG_NetWkSta_Stuck_VC_Err=(ERRLOG_BASE+94); +const NELOG_NetWkSta_NCB_Err=(ERRLOG_BASE+95); +const NELOG_NetWkSta_Write_Behind_Err=(ERRLOG_BASE+96); +const NELOG_NetWkSta_Reset_Err=(ERRLOG_BASE+97); +const NELOG_NetWkSta_Too_Many=(ERRLOG_BASE+98); +const NELOG_Srv_Thread_Failure=(ERRLOG_BASE+104); +const NELOG_Srv_Close_Failure=(ERRLOG_BASE+105); +const NELOG_ReplUserCurDir=(ERRLOG_BASE+106); +const NELOG_ReplCannotMasterDir=(ERRLOG_BASE+107); +const NELOG_ReplUpdateError=(ERRLOG_BASE+108); +const NELOG_ReplLostMaster=(ERRLOG_BASE+109); +const NELOG_NetlogonAuthDCFail=(ERRLOG_BASE+110); +const NELOG_ReplLogonFailed=(ERRLOG_BASE+111); +const NELOG_ReplNetErr=(ERRLOG_BASE+112); +const NELOG_ReplMaxFiles=(ERRLOG_BASE+113); +const NELOG_ReplMaxTreeDepth=(ERRLOG_BASE+114); +const NELOG_ReplBadMsg=(ERRLOG_BASE+115); +const NELOG_ReplSysErr=(ERRLOG_BASE+116); +const NELOG_ReplUserLoged=(ERRLOG_BASE+117); +const NELOG_ReplBadImport=(ERRLOG_BASE+118); +const NELOG_ReplBadExport=(ERRLOG_BASE+119); +const NELOG_ReplSignalFileErr=(ERRLOG_BASE+120); +const NELOG_DiskFT=(ERRLOG_BASE+121); +const NELOG_ReplAccessDenied=(ERRLOG_BASE+122); +const NELOG_NetlogonFailedPrimary=(ERRLOG_BASE+123); +const NELOG_NetlogonPasswdSetFailed=(ERRLOG_BASE+124); +const NELOG_NetlogonTrackingError=(ERRLOG_BASE+125); +const NELOG_NetlogonSyncError=(ERRLOG_BASE+126); +const NELOG_UPS_PowerOut=(ERRLOG_BASE+130); +const NELOG_UPS_Shutdown=(ERRLOG_BASE+131); +const NELOG_UPS_CmdFileError=(ERRLOG_BASE+132); +const NELOG_UPS_CannotOpenDriver=(ERRLOG_BASE+133); +const NELOG_UPS_PowerBack=(ERRLOG_BASE+134); +const NELOG_UPS_CmdFileConfig=(ERRLOG_BASE+135); +const NELOG_UPS_CmdFileExec=(ERRLOG_BASE+136); +const NELOG_Missing_Parameter=(ERRLOG_BASE+150); +const NELOG_Invalid_Config_Line=(ERRLOG_BASE+151); +const NELOG_Invalid_Config_File=(ERRLOG_BASE+152); +const NELOG_File_Changed=(ERRLOG_BASE+153); +const NELOG_Files_Dont_Fit=(ERRLOG_BASE+154); +const NELOG_Wrong_DLL_Version=(ERRLOG_BASE+155); +const NELOG_Error_in_DLL=(ERRLOG_BASE+156); +const NELOG_System_Error=(ERRLOG_BASE+157); +const NELOG_FT_ErrLog_Too_Large=(ERRLOG_BASE+158); +const NELOG_FT_Update_In_Progress=(ERRLOG_BASE+159); +const NELOG_OEM_Code=(ERRLOG_BASE+199); +const NELOG_NetlogonSSIInitError=ERRLOG2_BASE; +const NELOG_NetlogonFailedToUpdateTrustList=(ERRLOG2_BASE+1); +const NELOG_NetlogonFailedToAddRpcInterface=(ERRLOG2_BASE+2); +const NELOG_NetlogonFailedToReadMailslot=(ERRLOG2_BASE+3); +const NELOG_NetlogonFailedToRegisterSC=(ERRLOG2_BASE+4); +const NELOG_NetlogonChangeLogCorrupt=(ERRLOG2_BASE+5); +const NELOG_NetlogonFailedToCreateShare=(ERRLOG2_BASE+6); +const NELOG_NetlogonDownLevelLogonFailed=(ERRLOG2_BASE+7); +const NELOG_NetlogonDownLevelLogoffFailed=(ERRLOG2_BASE+8); +const NELOG_NetlogonNTLogonFailed=(ERRLOG2_BASE+9); +const NELOG_NetlogonNTLogoffFailed=(ERRLOG2_BASE+10); +const NELOG_NetlogonPartialSyncCallSuccess=(ERRLOG2_BASE+11); +const NELOG_NetlogonPartialSyncCallFailed=(ERRLOG2_BASE+12); +const NELOG_NetlogonFullSyncCallSuccess=(ERRLOG2_BASE+13); +const NELOG_NetlogonFullSyncCallFailed=(ERRLOG2_BASE+14); +const NELOG_NetlogonPartialSyncSuccess=(ERRLOG2_BASE+15); +const NELOG_NetlogonPartialSyncFailed=(ERRLOG2_BASE+16); +const NELOG_NetlogonFullSyncSuccess=(ERRLOG2_BASE+17); +const NELOG_NetlogonFullSyncFailed=(ERRLOG2_BASE+18); +const NELOG_NetlogonAuthNoDomainController=(ERRLOG2_BASE+19); +const NELOG_NetlogonAuthNoTrustLsaSecret=(ERRLOG2_BASE+20); +const NELOG_NetlogonAuthNoTrustSamAccount=(ERRLOG2_BASE+21); +const NELOG_NetlogonServerAuthFailed=(ERRLOG2_BASE+22); +const NELOG_NetlogonServerAuthNoTrustSamAccount=(ERRLOG2_BASE+23); +const NELOG_FailedToRegisterSC=(ERRLOG2_BASE+24); +const NELOG_FailedToSetServiceStatus=(ERRLOG2_BASE+25); +const NELOG_FailedToGetComputerName=(ERRLOG2_BASE+26); +const NELOG_DriverNotLoaded=(ERRLOG2_BASE+27); +const NELOG_NoTranportLoaded=(ERRLOG2_BASE+28); +const NELOG_NetlogonFailedDomainDelta=(ERRLOG2_BASE+29); +const NELOG_NetlogonFailedGlobalGroupDelta=(ERRLOG2_BASE+30); +const NELOG_NetlogonFailedLocalGroupDelta=(ERRLOG2_BASE+31); +const NELOG_NetlogonFailedUserDelta=(ERRLOG2_BASE+32); +const NELOG_NetlogonFailedPolicyDelta=(ERRLOG2_BASE+33); +const NELOG_NetlogonFailedTrustedDomainDelta=(ERRLOG2_BASE+34); +const NELOG_NetlogonFailedAccountDelta=(ERRLOG2_BASE+35); +const NELOG_NetlogonFailedSecretDelta=(ERRLOG2_BASE+36); +const NELOG_NetlogonSystemError=(ERRLOG2_BASE+37); +const NELOG_NetlogonDuplicateMachineAccounts=(ERRLOG2_BASE+38); +const NELOG_NetlogonTooManyGlobalGroups=(ERRLOG2_BASE+39); +const NELOG_NetlogonBrowserDriver=(ERRLOG2_BASE+40); +const NELOG_NetlogonAddNameFailure=(ERRLOG2_BASE+41); +const NELOG_RplMessages=(ERRLOG2_BASE+42); +const NELOG_RplXnsBoot=(ERRLOG2_BASE+43); +const NELOG_RplSystem=(ERRLOG2_BASE+44); +const NELOG_RplWkstaTimeout=(ERRLOG2_BASE+45); +const NELOG_RplWkstaFileOpen=(ERRLOG2_BASE+46); +const NELOG_RplWkstaFileRead=(ERRLOG2_BASE+47); +const NELOG_RplWkstaMemory=(ERRLOG2_BASE+48); +const NELOG_RplWkstaFileChecksum=(ERRLOG2_BASE+49); +const NELOG_RplWkstaFileLineCount=(ERRLOG2_BASE+50); +const NELOG_RplWkstaBbcFile=(ERRLOG2_BASE+51); +const NELOG_RplWkstaFileSize=(ERRLOG2_BASE+52); +const NELOG_RplWkstaInternal=(ERRLOG2_BASE+53); +const NELOG_RplWkstaWrongVersion=(ERRLOG2_BASE+54); +const NELOG_RplWkstaNetwork=(ERRLOG2_BASE+55); +const NELOG_RplAdapterResource=(ERRLOG2_BASE+56); +const NELOG_RplFileCopy=(ERRLOG2_BASE+57); +const NELOG_RplFileDelete=(ERRLOG2_BASE+58); +const NELOG_RplFilePerms=(ERRLOG2_BASE+59); +const NELOG_RplCheckConfigs=(ERRLOG2_BASE+60); +const NELOG_RplCreateProfiles=(ERRLOG2_BASE+61); +const NELOG_RplRegistry=(ERRLOG2_BASE+62); +const NELOG_RplReplaceRPLDISK=(ERRLOG2_BASE+63); +const NELOG_RplCheckSecurity=(ERRLOG2_BASE+64); +const NELOG_RplBackupDatabase=(ERRLOG2_BASE+65); +const NELOG_RplInitDatabase=(ERRLOG2_BASE+66); +const NELOG_RplRestoreDatabaseFailure=(ERRLOG2_BASE+67); +const NELOG_RplRestoreDatabaseSuccess=(ERRLOG2_BASE+68); +const NELOG_RplInitRestoredDatabase=(ERRLOG2_BASE+69); +const NELOG_NetlogonSessionTypeWrong=(ERRLOG2_BASE+70); + +struct ERROR_LOG { + DWORD el_len; + DWORD el_reserved; + DWORD el_time; + DWORD el_error; + LPWSTR el_name; + LPWSTR el_text; + LPBYTE el_data; + DWORD el_data_size; + DWORD el_nstrings; +} +alias ERROR_LOG* PERROR_LOG, LPERROR_LOG; + +extern (Windows) { + deprecated { + NET_API_STATUS NetErrorLogClear(LPCWSTR, LPCWSTR, LPBYTE); + NET_API_STATUS NetErrorLogRead(LPCWSTR, LPWSTR, LPHLOG, DWORD, + LPDWORD, DWORD, DWORD, LPBYTE*, DWORD, LPDWORD, LPDWORD); + NET_API_STATUS NetErrorLogWrite(LPBYTE, DWORD, LPCWSTR, LPBYTE, + DWORD, LPBYTE, DWORD, LPBYTE); + } } Index: src/win32/lmmsg.d ================================================================== --- src/win32/lmmsg.d +++ src/win32/lmmsg.d @@ -1,43 +1,43 @@ -/***********************************************************************\ -* lmmsg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmmsg; -pragma(lib, "netapi32.lib"); - -private import win32.lmcons, win32.windef, win32.w32api; - -static assert (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x501, - "win32.lmmsg is available only if version WindowsXP, Windows2003 " - "or WindowsVista is set"); - -const MSGNAME_NOT_FORWARDED = 0; -const MSGNAME_FORWARDED_TO = 4; -const MSGNAME_FORWARDED_FROM = 16; - -struct MSG_INFO_0 { - LPWSTR msgi0_name; -} -alias MSG_INFO_0* PMSG_INFO_0, LPMSG_INFO_0; - -struct MSG_INFO_1 { - LPWSTR msgi1_name; - DWORD msgi1_forward_flag; - LPWSTR msgi1_forward; -} -alias MSG_INFO_1* PMSG_INFO_1, LPMSG_INFO_1; - -extern (Windows) { - NET_API_STATUS NetMessageBufferSend(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE, - DWORD); - NET_API_STATUS NetMessageNameAdd(LPCWSTR, LPCWSTR); - NET_API_STATUS NetMessageNameDel(LPCWSTR, LPCWSTR); - NET_API_STATUS NetMessageNameEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, - PDWORD, PDWORD); - NET_API_STATUS NetMessageNameGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); -} +/***********************************************************************\ +* lmmsg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmmsg; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef, win32.w32api; + +static assert (_WIN32_WINNT >= 0x501, + "win32.lmmsg is available only if version WindowsXP, Windows2003 " + "or WindowsVista is set"); + +const MSGNAME_NOT_FORWARDED = 0; +const MSGNAME_FORWARDED_TO = 4; +const MSGNAME_FORWARDED_FROM = 16; + +struct MSG_INFO_0 { + LPWSTR msgi0_name; +} +alias MSG_INFO_0* PMSG_INFO_0, LPMSG_INFO_0; + +struct MSG_INFO_1 { + LPWSTR msgi1_name; + DWORD msgi1_forward_flag; + LPWSTR msgi1_forward; +} +alias MSG_INFO_1* PMSG_INFO_1, LPMSG_INFO_1; + +extern (Windows) { + NET_API_STATUS NetMessageBufferSend(LPCWSTR, LPCWSTR, LPCWSTR, PBYTE, + DWORD); + NET_API_STATUS NetMessageNameAdd(LPCWSTR, LPCWSTR); + NET_API_STATUS NetMessageNameDel(LPCWSTR, LPCWSTR); + NET_API_STATUS NetMessageNameEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, + PDWORD, PDWORD); + NET_API_STATUS NetMessageNameGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); +} Index: src/win32/lmremutl.d ================================================================== --- src/win32/lmremutl.d +++ src/win32/lmremutl.d @@ -1,60 +1,60 @@ -/***********************************************************************\ -* lmremutl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmremutl; -pragma(lib, "netapi32.lib"); - -// D Conversion Note: DESC_CHAR is defined as TCHAR. - -private import win32.lmcons, win32.windef; - -const SUPPORTS_REMOTE_ADMIN_PROTOCOL = 2; -const SUPPORTS_RPC = 4; -const SUPPORTS_SAM_PROTOCOL = 8; -const SUPPORTS_UNICODE = 16; -const SUPPORTS_LOCAL = 32; -const SUPPORTS_ANY = 0xFFFFFFFF; - -const NO_PERMISSION_REQUIRED = 1; -const ALLOCATE_RESPONSE = 2; -const USE_SPECIFIC_TRANSPORT = 0x80000000; - -//[Yes] #ifndef DESC_CHAR_UNICODE -//alias CHAR DESC_CHAR; -//} else { -//[No] #else -//[No] typedef WCHAR DESC_CHAR; -//[No] #endif -// FIXME (D): Is this OK? -alias TCHAR DESC_CHAR; - -alias DESC_CHAR* LPDESC; - -struct TIME_OF_DAY_INFO { - DWORD tod_elapsedt; - DWORD tod_msecs; - DWORD tod_hours; - DWORD tod_mins; - DWORD tod_secs; - DWORD tod_hunds; - LONG tod_timezone; - DWORD tod_tinterval; - DWORD tod_day; - DWORD tod_month; - DWORD tod_year; - DWORD tod_weekday; -} -alias TIME_OF_DAY_INFO* PTIME_OF_DAY_INFO, LPTIME_OF_DAY_INFO; - -extern (Windows) { - NET_API_STATUS NetRemoteTOD(LPCWSTR, PBYTE*); - NET_API_STATUS NetRemoteComputerSupports(LPCWSTR, DWORD, PDWORD); - NET_API_STATUS RxRemoteApi(DWORD, LPCWSTR, LPDESC, LPDESC, LPDESC, - LPDESC, LPDESC, LPDESC, LPDESC, DWORD, ...); -} +/***********************************************************************\ +* lmremutl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmremutl; +pragma(lib, "netapi32"); + +// D Conversion Note: DESC_CHAR is defined as TCHAR. + +private import win32.lmcons, win32.windef; + +const SUPPORTS_REMOTE_ADMIN_PROTOCOL = 2; +const SUPPORTS_RPC = 4; +const SUPPORTS_SAM_PROTOCOL = 8; +const SUPPORTS_UNICODE = 16; +const SUPPORTS_LOCAL = 32; +const SUPPORTS_ANY = 0xFFFFFFFF; + +const NO_PERMISSION_REQUIRED = 1; +const ALLOCATE_RESPONSE = 2; +const USE_SPECIFIC_TRANSPORT = 0x80000000; + +//[Yes] #ifndef DESC_CHAR_UNICODE +//alias CHAR DESC_CHAR; +//} else { +//[No] #else +//[No] typedef WCHAR DESC_CHAR; +//[No] #endif +// FIXME (D): Is this OK? +alias TCHAR DESC_CHAR; + +alias DESC_CHAR* LPDESC; + +struct TIME_OF_DAY_INFO { + DWORD tod_elapsedt; + DWORD tod_msecs; + DWORD tod_hours; + DWORD tod_mins; + DWORD tod_secs; + DWORD tod_hunds; + LONG tod_timezone; + DWORD tod_tinterval; + DWORD tod_day; + DWORD tod_month; + DWORD tod_year; + DWORD tod_weekday; +} +alias TIME_OF_DAY_INFO* PTIME_OF_DAY_INFO, LPTIME_OF_DAY_INFO; + +extern (Windows) { + NET_API_STATUS NetRemoteTOD(LPCWSTR, PBYTE*); + NET_API_STATUS NetRemoteComputerSupports(LPCWSTR, DWORD, PDWORD); + NET_API_STATUS RxRemoteApi(DWORD, LPCWSTR, LPDESC, LPDESC, LPDESC, + LPDESC, LPDESC, LPDESC, LPDESC, DWORD, ...); +} Index: src/win32/lmrepl.d ================================================================== --- src/win32/lmrepl.d +++ src/win32/lmrepl.d @@ -1,134 +1,134 @@ -/***********************************************************************\ -* lmrepl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmrepl; -pragma(lib, "netapi32.lib"); - -private import win32.lmcons, win32.windef; - -const REPL_ROLE_EXPORT=1; -const REPL_ROLE_IMPORT=2; -const REPL_ROLE_BOTH=3; - -const REPL_INTERVAL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; -const REPL_PULSE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; -const REPL_GUARDTIME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+2; -const REPL_RANDOM_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+3; - -const REPL_UNLOCK_NOFORCE=0; -const REPL_UNLOCK_FORCE=1; -const REPL_STATE_OK=0; -const REPL_STATE_NO_MASTER=1; -const REPL_STATE_NO_SYNC=2; -const REPL_STATE_NEVER_REPLICATED=3; -const REPL_INTEGRITY_FILE=1; -const REPL_INTEGRITY_TREE=2; -const REPL_EXTENT_FILE=1; -const REPL_EXTENT_TREE=2; - -const REPL_EXPORT_INTEGRITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; -const REPL_EXPORT_EXTENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; - -struct REPL_INFO_0 { - DWORD rp0_role; - LPWSTR rp0_exportpath; - LPWSTR rp0_exportlist; - LPWSTR rp0_importpath; - LPWSTR rp0_importlist; - LPWSTR rp0_logonusername; - DWORD rp0_interval; - DWORD rp0_pulse; - DWORD rp0_guardtime; - DWORD rp0_random; -} -alias REPL_INFO_0* PREPL_INFO_0, LPREPL_INFO_0; - -struct REPL_INFO_1000 { - DWORD rp1000_interval; -} -alias REPL_INFO_1000* PREPL_INFO_1000, LPREPL_INFO_1000; - -struct REPL_INFO_1001 { - DWORD rp1001_pulse; -} -alias REPL_INFO_1001* PREPL_INFO_1001, LPREPL_INFO_1001; - -struct REPL_INFO_1002 { - DWORD rp1002_guardtime; -} -alias REPL_INFO_1002* PREPL_INFO_1002, LPREPL_INFO_1002; - -struct REPL_INFO_1003 { - DWORD rp1003_random; -} -alias REPL_INFO_1003* PREPL_INFO_1003, LPREPL_INFO_1003; - -struct REPL_EDIR_INFO_0 { - LPWSTR rped0_dirname; -} -alias REPL_EDIR_INFO_0* PREPL_EDIR_INFO_0, LPREPL_EDIR_INFO_0; - -struct REPL_EDIR_INFO_1 { - LPWSTR rped1_dirname; - DWORD rped1_integrity; - DWORD rped1_extent; -} -alias REPL_EDIR_INFO_1* PREPL_EDIR_INFO_1, LPREPL_EDIR_INFO_1; - -struct REPL_EDIR_INFO_2 { - LPWSTR rped2_dirname; - DWORD rped2_integrity; - DWORD rped2_extent; - DWORD rped2_lockcount; - DWORD rped2_locktime; -} -alias REPL_EDIR_INFO_2* PREPL_EDIR_INFO_2, LPREPL_EDIR_INFO_2; - -struct REPL_EDIR_INFO_1000 { - DWORD rped1000_integrity; -} -alias REPL_EDIR_INFO_1000* PREPL_EDIR_INFO_1000, LPREPL_EDIR_INFO_1000; - -struct REPL_EDIR_INFO_1001 { - DWORD rped1001_extent; -} -alias REPL_EDIR_INFO_1001* PREPL_EDIR_INFO_1001, LPREPL_EDIR_INFO_1001; - -struct REPL_IDIR_INFO_0 { - LPWSTR rpid0_dirname; -} -alias REPL_IDIR_INFO_0* PREPL_IDIR_INFO_0, LPREPL_IDIR_INFO_0; - -struct REPL_IDIR_INFO_1 { - LPWSTR rpid1_dirname; - DWORD rpid1_state; - LPWSTR rpid1_mastername; - DWORD rpid1_last_update_time; - DWORD rpid1_lockcount; - DWORD rpid1_locktime; -} -alias REPL_IDIR_INFO_1* PREPL_IDIR_INFO_1, LPREPL_IDIR_INFO_1; - -extern (Windows) { -NET_API_STATUS NetReplGetInfo(LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetReplSetInfo(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetReplExportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetReplExportDirDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetReplExportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetReplExportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetReplExportDirSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetReplExportDirLock(LPCWSTR,LPCWSTR); -NET_API_STATUS NetReplExportDirUnlock(LPCWSTR,LPCWSTR,DWORD); -NET_API_STATUS NetReplImportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetReplImportDirDel(LPCWSTR,LPCWSTR); -NET_API_STATUS NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); -NET_API_STATUS NetReplImportDirLock(LPCWSTR,LPCWSTR); -NET_API_STATUS NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD); +/***********************************************************************\ +* lmrepl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmrepl; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +const REPL_ROLE_EXPORT=1; +const REPL_ROLE_IMPORT=2; +const REPL_ROLE_BOTH=3; + +const REPL_INTERVAL_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; +const REPL_PULSE_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; +const REPL_GUARDTIME_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+2; +const REPL_RANDOM_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+3; + +const REPL_UNLOCK_NOFORCE=0; +const REPL_UNLOCK_FORCE=1; +const REPL_STATE_OK=0; +const REPL_STATE_NO_MASTER=1; +const REPL_STATE_NO_SYNC=2; +const REPL_STATE_NEVER_REPLICATED=3; +const REPL_INTEGRITY_FILE=1; +const REPL_INTEGRITY_TREE=2; +const REPL_EXTENT_FILE=1; +const REPL_EXTENT_TREE=2; + +const REPL_EXPORT_INTEGRITY_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+0; +const REPL_EXPORT_EXTENT_INFOLEVEL = PARMNUM_BASE_INFOLEVEL+1; + +struct REPL_INFO_0 { + DWORD rp0_role; + LPWSTR rp0_exportpath; + LPWSTR rp0_exportlist; + LPWSTR rp0_importpath; + LPWSTR rp0_importlist; + LPWSTR rp0_logonusername; + DWORD rp0_interval; + DWORD rp0_pulse; + DWORD rp0_guardtime; + DWORD rp0_random; +} +alias REPL_INFO_0* PREPL_INFO_0, LPREPL_INFO_0; + +struct REPL_INFO_1000 { + DWORD rp1000_interval; +} +alias REPL_INFO_1000* PREPL_INFO_1000, LPREPL_INFO_1000; + +struct REPL_INFO_1001 { + DWORD rp1001_pulse; +} +alias REPL_INFO_1001* PREPL_INFO_1001, LPREPL_INFO_1001; + +struct REPL_INFO_1002 { + DWORD rp1002_guardtime; +} +alias REPL_INFO_1002* PREPL_INFO_1002, LPREPL_INFO_1002; + +struct REPL_INFO_1003 { + DWORD rp1003_random; +} +alias REPL_INFO_1003* PREPL_INFO_1003, LPREPL_INFO_1003; + +struct REPL_EDIR_INFO_0 { + LPWSTR rped0_dirname; +} +alias REPL_EDIR_INFO_0* PREPL_EDIR_INFO_0, LPREPL_EDIR_INFO_0; + +struct REPL_EDIR_INFO_1 { + LPWSTR rped1_dirname; + DWORD rped1_integrity; + DWORD rped1_extent; +} +alias REPL_EDIR_INFO_1* PREPL_EDIR_INFO_1, LPREPL_EDIR_INFO_1; + +struct REPL_EDIR_INFO_2 { + LPWSTR rped2_dirname; + DWORD rped2_integrity; + DWORD rped2_extent; + DWORD rped2_lockcount; + DWORD rped2_locktime; +} +alias REPL_EDIR_INFO_2* PREPL_EDIR_INFO_2, LPREPL_EDIR_INFO_2; + +struct REPL_EDIR_INFO_1000 { + DWORD rped1000_integrity; +} +alias REPL_EDIR_INFO_1000* PREPL_EDIR_INFO_1000, LPREPL_EDIR_INFO_1000; + +struct REPL_EDIR_INFO_1001 { + DWORD rped1001_extent; +} +alias REPL_EDIR_INFO_1001* PREPL_EDIR_INFO_1001, LPREPL_EDIR_INFO_1001; + +struct REPL_IDIR_INFO_0 { + LPWSTR rpid0_dirname; +} +alias REPL_IDIR_INFO_0* PREPL_IDIR_INFO_0, LPREPL_IDIR_INFO_0; + +struct REPL_IDIR_INFO_1 { + LPWSTR rpid1_dirname; + DWORD rpid1_state; + LPWSTR rpid1_mastername; + DWORD rpid1_last_update_time; + DWORD rpid1_lockcount; + DWORD rpid1_locktime; +} +alias REPL_IDIR_INFO_1* PREPL_IDIR_INFO_1, LPREPL_IDIR_INFO_1; + +extern (Windows) { +NET_API_STATUS NetReplGetInfo(LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplSetInfo(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplExportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetReplExportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplExportDirSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplExportDirLock(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplExportDirUnlock(LPCWSTR,LPCWSTR,DWORD); +NET_API_STATUS NetReplImportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetReplImportDirDel(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*); +NET_API_STATUS NetReplImportDirLock(LPCWSTR,LPCWSTR); +NET_API_STATUS NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD); } Index: src/win32/lmserver.d ================================================================== --- src/win32/lmserver.d +++ src/win32/lmserver.d @@ -1,941 +1,941 @@ -/***********************************************************************\ -* lmserver.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmserver; - -import win32.winsvc; -private import win32.lmcons, win32.windef; - -struct SERVER_INFO_100 { - DWORD sv100_platform_id; - LPWSTR sv100_name; -} -alias SERVER_INFO_100* PSERVER_INFO_100, LPSERVER_INFO_100; - -struct SERVER_INFO_101 { - DWORD sv101_platform_id; - LPWSTR sv101_name; - DWORD sv101_version_major; - DWORD sv101_version_minor; - DWORD sv101_type; - LPWSTR sv101_comment; -} -alias SERVER_INFO_101* PSERVER_INFO_101, LPSERVER_INFO_101; - -struct SERVER_INFO_102 { - DWORD sv102_platform_id; - LPWSTR sv102_name; - DWORD sv102_version_major; - DWORD sv102_version_minor; - DWORD sv102_type; - LPWSTR sv102_comment; - DWORD sv102_users; - LONG sv102_disc; - BOOL sv102_hidden; - DWORD sv102_announce; - DWORD sv102_anndelta; - DWORD sv102_licenses; - LPWSTR sv102_userpath; -} -alias SERVER_INFO_102* PSERVER_INFO_102, LPSERVER_INFO_102; - -struct SERVER_INFO_402 { - DWORD sv402_ulist_mtime; - DWORD sv402_glist_mtime; - DWORD sv402_alist_mtime; - LPWSTR sv402_alerts; - DWORD sv402_security; - DWORD sv402_numadmin; - DWORD sv402_lanmask; - LPWSTR sv402_guestacct; - DWORD sv402_chdevs; - DWORD sv402_chdevq; - DWORD sv402_chdevjobs; - DWORD sv402_connections; - DWORD sv402_shares; - DWORD sv402_openfiles; - DWORD sv402_sessopens; - DWORD sv402_sessvcs; - DWORD sv402_sessreqs; - DWORD sv402_opensearch; - DWORD sv402_activelocks; - DWORD sv402_numreqbuf; - DWORD sv402_sizreqbuf; - DWORD sv402_numbigbuf; - DWORD sv402_numfiletasks; - DWORD sv402_alertsched; - DWORD sv402_erroralert; - DWORD sv402_logonalert; - DWORD sv402_accessalert; - DWORD sv402_diskalert; - DWORD sv402_netioalert; - DWORD sv402_maxauditsz; - LPWSTR sv402_srvheuristics; -} -alias SERVER_INFO_402* PSERVER_INFO_402, LPSERVER_INFO_402; - -struct SERVER_INFO_403 { - DWORD sv403_ulist_mtime; - DWORD sv403_glist_mtime; - DWORD sv403_alist_mtime; - LPWSTR sv403_alerts; - DWORD sv403_security; - DWORD sv403_numadmin; - DWORD sv403_lanmask; - LPWSTR sv403_guestacct; - DWORD sv403_chdevs; - DWORD sv403_chdevq; - DWORD sv403_chdevjobs; - DWORD sv403_connections; - DWORD sv403_shares; - DWORD sv403_openfiles; - DWORD sv403_sessopens; - DWORD sv403_sessvcs; - DWORD sv403_sessreqs; - DWORD sv403_opensearch; - DWORD sv403_activelocks; - DWORD sv403_numreqbuf; - DWORD sv403_sizreqbuf; - DWORD sv403_numbigbuf; - DWORD sv403_numfiletasks; - DWORD sv403_alertsched; - DWORD sv403_erroralert; - DWORD sv403_logonalert; - DWORD sv403_accessalert; - DWORD sv403_diskalert; - DWORD sv403_netioalert; - DWORD sv403_maxauditsz; - LPWSTR sv403_srvheuristics; - DWORD sv403_auditedevents; - DWORD sv403_autoprofile; - LPWSTR sv403_autopath; -} -alias SERVER_INFO_403* PSERVER_INFO_403, LPSERVER_INFO_403; - -struct SERVER_INFO_502 { - DWORD sv502_sessopens; - DWORD sv502_sessvcs; - DWORD sv502_opensearch; - DWORD sv502_sizreqbuf; - DWORD sv502_initworkitems; - DWORD sv502_maxworkitems; - DWORD sv502_rawworkitems; - DWORD sv502_irpstacksize; - DWORD sv502_maxrawbuflen; - DWORD sv502_sessusers; - DWORD sv502_sessconns; - DWORD sv502_maxpagedmemoryusage; - DWORD sv502_maxnonpagedmemoryusage; - BOOL sv502_enablesoftcompat; - BOOL sv502_enableforcedlogoff; - BOOL sv502_timesource; - BOOL sv502_acceptdownlevelapis; - BOOL sv502_lmannounce; -} -alias SERVER_INFO_502* PSERVER_INFO_502, LPSERVER_INFO_502; - -struct SERVER_INFO_503 { - DWORD sv503_sessopens; - DWORD sv503_sessvcs; - DWORD sv503_opensearch; - DWORD sv503_sizreqbuf; - DWORD sv503_initworkitems; - DWORD sv503_maxworkitems; - DWORD sv503_rawworkitems; - DWORD sv503_irpstacksize; - DWORD sv503_maxrawbuflen; - DWORD sv503_sessusers; - DWORD sv503_sessconns; - DWORD sv503_maxpagedmemoryusage; - DWORD sv503_maxnonpagedmemoryusage; - BOOL sv503_enablesoftcompat; - BOOL sv503_enableforcedlogoff; - BOOL sv503_timesource; - BOOL sv503_acceptdownlevelapis; - BOOL sv503_lmannounce; - LPWSTR sv503_domain; - DWORD sv503_maxcopyreadlen; - DWORD sv503_maxcopywritelen; - DWORD sv503_minkeepsearch; - DWORD sv503_maxkeepsearch; - DWORD sv503_minkeepcomplsearch; - DWORD sv503_maxkeepcomplsearch; - DWORD sv503_threadcountadd; - DWORD sv503_numblockthreads; - DWORD sv503_scavtimeout; - DWORD sv503_minrcvqueue; - DWORD sv503_minfreeworkitems; - DWORD sv503_xactmemsize; - DWORD sv503_threadpriority; - DWORD sv503_maxmpxct; - DWORD sv503_oplockbreakwait; - DWORD sv503_oplockbreakresponsewait; - BOOL sv503_enableoplocks; - BOOL sv503_enableoplockforceclose; - BOOL sv503_enablefcbopens; - BOOL sv503_enableraw; - BOOL sv503_enablesharednetdrives; - DWORD sv503_minfreeconnections; - DWORD sv503_maxfreeconnections; -} -alias SERVER_INFO_503* PSERVER_INFO_503, LPSERVER_INFO_503; - -struct SERVER_INFO_599 { - DWORD sv599_sessopens; - DWORD sv599_sessvcs; - DWORD sv599_opensearch; - DWORD sv599_sizreqbuf; - DWORD sv599_initworkitems; - DWORD sv599_maxworkitems; - DWORD sv599_rawworkitems; - DWORD sv599_irpstacksize; - DWORD sv599_maxrawbuflen; - DWORD sv599_sessusers; - DWORD sv599_sessconns; - DWORD sv599_maxpagedmemoryusage; - DWORD sv599_maxnonpagedmemoryusage; - BOOL sv599_enablesoftcompat; - BOOL sv599_enableforcedlogoff; - BOOL sv599_timesource; - BOOL sv599_acceptdownlevelapis; - BOOL sv599_lmannounce; - LPWSTR sv599_domain; - DWORD sv599_maxcopyreadlen; - DWORD sv599_maxcopywritelen; - DWORD sv599_minkeepsearch; - DWORD sv599_maxkeepsearch; - DWORD sv599_minkeepcomplsearch; - DWORD sv599_maxkeepcomplsearch; - DWORD sv599_threadcountadd; - DWORD sv599_numblockthreads; - DWORD sv599_scavtimeout; - DWORD sv599_minrcvqueue; - DWORD sv599_minfreeworkitems; - DWORD sv599_xactmemsize; - DWORD sv599_threadpriority; - DWORD sv599_maxmpxct; - DWORD sv599_oplockbreakwait; - DWORD sv599_oplockbreakresponsewait; - BOOL sv599_enableoplocks; - BOOL sv599_enableoplockforceclose; - BOOL sv599_enablefcbopens; - BOOL sv599_enableraw; - BOOL sv599_enablesharednetdrives; - DWORD sv599_minfreeconnections; - DWORD sv599_maxfreeconnections; - DWORD sv599_initsesstable; - DWORD sv599_initconntable; - DWORD sv599_initfiletable; - DWORD sv599_initsearchtable; - DWORD sv599_alertschedule; - DWORD sv599_errorthreshold; - DWORD sv599_networkerrorthreshold; - DWORD sv599_diskspacethreshold; - DWORD sv599_reserved; - DWORD sv599_maxlinkdelay; - DWORD sv599_minlinkthroughput; - DWORD sv599_linkinfovalidtime; - DWORD sv599_scavqosinfoupdatetime; - DWORD sv599_maxworkitemidletime; -} -alias SERVER_INFO_599* PSERVER_INFO_599, LPSERVER_INFO_599; - -struct SERVER_INFO_598 { - DWORD sv598_maxrawworkitems; - DWORD sv598_maxthreadsperqueue; - DWORD sv598_producttype; - DWORD sv598_serversize; - DWORD sv598_connectionlessautodisc; - DWORD sv598_sharingviolationretries; - DWORD sv598_sharingviolationdelay; - DWORD sv598_maxglobalopensearch; - DWORD sv598_removeduplicatesearches; - DWORD sv598_lockviolationoffset; - DWORD sv598_lockviolationdelay; - DWORD sv598_mdlreadswitchover; - DWORD sv598_cachedopenlimit; - DWORD sv598_otherqueueaffinity; - BOOL sv598_restrictnullsessaccess; - BOOL sv598_enablewfw311directipx; - DWORD sv598_queuesamplesecs; - DWORD sv598_balancecount; - DWORD sv598_preferredaffinity; - DWORD sv598_maxfreerfcbs; - DWORD sv598_maxfreemfcbs; - DWORD sv598_maxfreelfcbs; - DWORD sv598_maxfreepagedpoolchunks; - DWORD sv598_minpagedpoolchunksize; - DWORD sv598_maxpagedpoolchunksize; - BOOL sv598_sendsfrompreferredprocessor; -} -alias SERVER_INFO_598* PSERVER_INFO_598, LPSERVER_INFO_598; - -struct SERVER_INFO_1005 { - LPWSTR sv1005_comment; -} -alias SERVER_INFO_1005* PSERVER_INFO_1005, LPSERVER_INFO_1005; - -struct SERVER_INFO_1107 { - DWORD sv1107_users; -} -alias SERVER_INFO_1107* PSERVER_INFO_1107, LPSERVER_INFO_1107; - -struct SERVER_INFO_1010 { - LONG sv1010_disc; -} -alias SERVER_INFO_1010* PSERVER_INFO_1010, LPSERVER_INFO_1010; - -struct SERVER_INFO_1016 { - BOOL sv1016_hidden; -} -alias SERVER_INFO_1016* PSERVER_INFO_1016, LPSERVER_INFO_1016; - -struct SERVER_INFO_1017 { - DWORD sv1017_announce; -} -alias SERVER_INFO_1017* PSERVER_INFO_1017, LPSERVER_INFO_1017; - -struct SERVER_INFO_1018 { - DWORD sv1018_anndelta; -} -alias SERVER_INFO_1018* PSERVER_INFO_1018, LPSERVER_INFO_1018; - -struct SERVER_INFO_1501 { - DWORD sv1501_sessopens; -} -alias SERVER_INFO_1501* PSERVER_INFO_1501, LPSERVER_INFO_1501; - -struct SERVER_INFO_1502 { - DWORD sv1502_sessvcs; -} -alias SERVER_INFO_1502* PSERVER_INFO_1502, LPSERVER_INFO_1502; - -struct SERVER_INFO_1503 { - DWORD sv1503_opensearch; -} -alias SERVER_INFO_1503* PSERVER_INFO_1503, LPSERVER_INFO_1503; - -struct SERVER_INFO_1506 { - DWORD sv1506_maxworkitems; -} -alias SERVER_INFO_1506* PSERVER_INFO_1506, LPSERVER_INFO_1506; - -struct SERVER_INFO_1509 { - DWORD sv1509_maxrawbuflen; -} -alias SERVER_INFO_1509* PSERVER_INFO_1509, LPSERVER_INFO_1509; - -struct SERVER_INFO_1510 { - DWORD sv1510_sessusers; -} -alias SERVER_INFO_1510* PSERVER_INFO_1510, LPSERVER_INFO_1510; - -struct SERVER_INFO_1511 { - DWORD sv1511_sessconns; -} alias SERVER_INFO_1511* PSERVER_INFO_1511, LPSERVER_INFO_1511; - -struct SERVER_INFO_1512 { - DWORD sv1512_maxnonpagedmemoryusage; -} -alias SERVER_INFO_1512* PSERVER_INFO_1512, LPSERVER_INFO_1512; - -struct SERVER_INFO_1513 { - DWORD sv1513_maxpagedmemoryusage; -} -alias SERVER_INFO_1513* PSERVER_INFO_1513, LPSERVER_INFO_1513; - -struct SERVER_INFO_1514 { - BOOL sv1514_enablesoftcompat; -} -alias SERVER_INFO_1514* PSERVER_INFO_1514, LPSERVER_INFO_1514; - -struct SERVER_INFO_1515 { - BOOL sv1515_enableforcedlogoff; -} -alias SERVER_INFO_1515* PSERVER_INFO_1515, LPSERVER_INFO_1515; - -struct SERVER_INFO_1516 { - BOOL sv1516_timesource; -} -alias SERVER_INFO_1516* PSERVER_INFO_1516, LPSERVER_INFO_1516; - -struct SERVER_INFO_1518 { - BOOL sv1518_lmannounce; -} -alias SERVER_INFO_1518* PSERVER_INFO_1518, LPSERVER_INFO_1518; - -struct SERVER_INFO_1520 { - DWORD sv1520_maxcopyreadlen; -} -alias SERVER_INFO_1520* PSERVER_INFO_1520, LPSERVER_INFO_1520; - -struct SERVER_INFO_1521 { - DWORD sv1521_maxcopywritelen; -} -alias SERVER_INFO_1521* PSERVER_INFO_1521, LPSERVER_INFO_1521; - -struct SERVER_INFO_1522 { - DWORD sv1522_minkeepsearch; -} -alias SERVER_INFO_1522* PSERVER_INFO_1522, LPSERVER_INFO_1522; - -struct SERVER_INFO_1523 { - DWORD sv1523_maxkeepsearch; -} -alias SERVER_INFO_1523* PSERVER_INFO_1523, LPSERVER_INFO_1523; - -struct SERVER_INFO_1524 { - DWORD sv1524_minkeepcomplsearch; -} -alias SERVER_INFO_1524* PSERVER_INFO_1524, LPSERVER_INFO_1524; - -struct SERVER_INFO_1525 { - DWORD sv1525_maxkeepcomplsearch; -} -alias SERVER_INFO_1525* PSERVER_INFO_1525, LPSERVER_INFO_1525; - -struct SERVER_INFO_1528 { - DWORD sv1528_scavtimeout; -} -alias SERVER_INFO_1528* PSERVER_INFO_1528, LPSERVER_INFO_1528; - -struct SERVER_INFO_1529 { - DWORD sv1529_minrcvqueue; -} -alias SERVER_INFO_1529* PSERVER_INFO_1529, LPSERVER_INFO_1529; - -struct SERVER_INFO_1530 { - DWORD sv1530_minfreeworkitems; -} -alias SERVER_INFO_1530* PSERVER_INFO_1530, LPSERVER_INFO_1530; - -struct SERVER_INFO_1533 { - DWORD sv1533_maxmpxct; -} -alias SERVER_INFO_1533* PSERVER_INFO_1533, LPSERVER_INFO_1533; - -struct SERVER_INFO_1534 { - DWORD sv1534_oplockbreakwait; -} -alias SERVER_INFO_1534* PSERVER_INFO_1534, LPSERVER_INFO_1534; - -struct SERVER_INFO_1535 { - DWORD sv1535_oplockbreakresponsewait; -} -alias SERVER_INFO_1535* PSERVER_INFO_1535, LPSERVER_INFO_1535; - -struct SERVER_INFO_1536 { - BOOL sv1536_enableoplocks; -} -alias SERVER_INFO_1536* PSERVER_INFO_1536, LPSERVER_INFO_1536; - -struct SERVER_INFO_1537 { - BOOL sv1537_enableoplockforceclose; -} -alias SERVER_INFO_1537* PSERVER_INFO_1537, LPSERVER_INFO_1537; - -struct SERVER_INFO_1538 { - BOOL sv1538_enablefcbopens; -} -alias SERVER_INFO_1538* PSERVER_INFO_1538, LPSERVER_INFO_1538; - -struct SERVER_INFO_1539 { - BOOL sv1539_enableraw; -} -alias SERVER_INFO_1539* PSERVER_INFO_1539, LPSERVER_INFO_1539; - -struct SERVER_INFO_1540 { - BOOL sv1540_enablesharednetdrives; -} -alias SERVER_INFO_1540* PSERVER_INFO_1540, LPSERVER_INFO_1540; - -struct SERVER_INFO_1541 { - BOOL sv1541_minfreeconnections; -} -alias SERVER_INFO_1541* PSERVER_INFO_1541, LPSERVER_INFO_1541; - -struct SERVER_INFO_1542 { - BOOL sv1542_maxfreeconnections; -} -alias SERVER_INFO_1542* PSERVER_INFO_1542, LPSERVER_INFO_1542; - -struct SERVER_INFO_1543 { - DWORD sv1543_initsesstable; -} -alias SERVER_INFO_1543* PSERVER_INFO_1543, LPSERVER_INFO_1543; - -struct SERVER_INFO_1544 { - DWORD sv1544_initconntable; -} -alias SERVER_INFO_1544* PSERVER_INFO_1544, LPSERVER_INFO_1544; - -struct SERVER_INFO_1545 { - DWORD sv1545_initfiletable; -} -alias SERVER_INFO_1545* PSERVER_INFO_1545, LPSERVER_INFO_1545; - -struct SERVER_INFO_1546 { - DWORD sv1546_initsearchtable; -} -alias SERVER_INFO_1546* PSERVER_INFO_1546, LPSERVER_INFO_1546; - -struct SERVER_INFO_1547 { - DWORD sv1547_alertschedule; -} -alias SERVER_INFO_1547* PSERVER_INFO_1547, LPSERVER_INFO_1547; - -struct SERVER_INFO_1548 { - DWORD sv1548_errorthreshold; -} -alias SERVER_INFO_1548* PSERVER_INFO_1548, LPSERVER_INFO_1548; - -struct SERVER_INFO_1549 { - DWORD sv1549_networkerrorthreshold; -} -alias SERVER_INFO_1549* PSERVER_INFO_1549, LPSERVER_INFO_1549; - -struct SERVER_INFO_1550 { - DWORD sv1550_diskspacethreshold; -} -alias SERVER_INFO_1550* PSERVER_INFO_1550, LPSERVER_INFO_1550; - -struct SERVER_INFO_1552 { - DWORD sv1552_maxlinkdelay; -} -alias SERVER_INFO_1552* PSERVER_INFO_1552, LPSERVER_INFO_1552; - -struct SERVER_INFO_1553 { - DWORD sv1553_minlinkthroughput; -} -alias SERVER_INFO_1553* PSERVER_INFO_1553, LPSERVER_INFO_1553; - -struct SERVER_INFO_1554 { - DWORD sv1554_linkinfovalidtime; -} -alias SERVER_INFO_1554* PSERVER_INFO_1554, LPSERVER_INFO_1554; - -struct SERVER_INFO_1555 { - DWORD sv1555_scavqosinfoupdatetime; -} -alias SERVER_INFO_1555* PSERVER_INFO_1555, LPSERVER_INFO_1555; - -struct SERVER_INFO_1556 { - DWORD sv1556_maxworkitemidletime; -} -alias SERVER_INFO_1556* PSERVER_INFO_1556, LPSERVER_INFO_1556; - -struct SERVER_INFO_1557 { - DWORD sv1557_maxrawworkitems; -} -alias SERVER_INFO_1557* PSERVER_INFO_1557, LPSERVER_INFO_1557; - -struct SERVER_INFO_1560 { - DWORD sv1560_producttype; -} -alias SERVER_INFO_1560* PSERVER_INFO_1560, LPSERVER_INFO_1560; - -struct SERVER_INFO_1561 { - DWORD sv1561_serversize; -} -alias SERVER_INFO_1561* PSERVER_INFO_1561, LPSERVER_INFO_1561; - -struct SERVER_INFO_1562 { - DWORD sv1562_connectionlessautodisc; -} -alias SERVER_INFO_1562* PSERVER_INFO_1562, LPSERVER_INFO_1562; - -struct SERVER_INFO_1563 { - DWORD sv1563_sharingviolationretries; -} -alias SERVER_INFO_1563* PSERVER_INFO_1563, LPSERVER_INFO_1563; - -struct SERVER_INFO_1564 { - DWORD sv1564_sharingviolationdelay; -} -alias SERVER_INFO_1564* PSERVER_INFO_1564, LPSERVER_INFO_1564; - -struct SERVER_INFO_1565 { - DWORD sv1565_maxglobalopensearch; -} -alias SERVER_INFO_1565* PSERVER_INFO_1565, LPSERVER_INFO_1565; - -struct SERVER_INFO_1566 { - BOOL sv1566_removeduplicatesearches; -} -alias SERVER_INFO_1566* PSERVER_INFO_1566, LPSERVER_INFO_1566; - -struct SERVER_INFO_1567 { - DWORD sv1567_lockviolationretries; -} -alias SERVER_INFO_1567* PSERVER_INFO_1567, LPSERVER_INFO_1567; - -struct SERVER_INFO_1568 { - DWORD sv1568_lockviolationoffset; -} -alias SERVER_INFO_1568* PSERVER_INFO_1568, LPSERVER_INFO_1568; - -struct SERVER_INFO_1569 { - DWORD sv1569_lockviolationdelay; -} -alias SERVER_INFO_1569* PSERVER_INFO_1569, LPSERVER_INFO_1569; - -struct SERVER_INFO_1570 { - DWORD sv1570_mdlreadswitchover; -} -alias SERVER_INFO_1570* PSERVER_INFO_1570, LPSERVER_INFO_1570; - -struct SERVER_INFO_1571 { - DWORD sv1571_cachedopenlimit; -} -alias SERVER_INFO_1571* PSERVER_INFO_1571, LPSERVER_INFO_1571; - -struct SERVER_INFO_1572 { - DWORD sv1572_criticalthreads; -} -alias SERVER_INFO_1572* PSERVER_INFO_1572, LPSERVER_INFO_1572; - -struct SERVER_INFO_1573 { - DWORD sv1573_restrictnullsessaccess; -} -alias SERVER_INFO_1573* PSERVER_INFO_1573, LPSERVER_INFO_1573; - -struct SERVER_INFO_1574 { - DWORD sv1574_enablewfw311directipx; -} -alias SERVER_INFO_1574* PSERVER_INFO_1574, LPSERVER_INFO_1574; - -struct SERVER_INFO_1575 { - DWORD sv1575_otherqueueaffinity; -} -alias SERVER_INFO_1575* PSERVER_INFO_1575, LPSERVER_INFO_1575; - -struct SERVER_INFO_1576 { - DWORD sv1576_queuesamplesecs; -} -alias SERVER_INFO_1576* PSERVER_INFO_1576, LPSERVER_INFO_1576; - -struct SERVER_INFO_1577 { - DWORD sv1577_balancecount; -} -alias SERVER_INFO_1577* PSERVER_INFO_1577, LPSERVER_INFO_1577; - -struct SERVER_INFO_1578 { - DWORD sv1578_preferredaffinity; -} -alias SERVER_INFO_1578* PSERVER_INFO_1578, LPSERVER_INFO_1578; - -struct SERVER_INFO_1579 { - DWORD sv1579_maxfreerfcbs; -} -alias SERVER_INFO_1579* PSERVER_INFO_1579, LPSERVER_INFO_1579; - -struct SERVER_INFO_1580 { - DWORD sv1580_maxfreemfcbs; -} -alias SERVER_INFO_1580* PSERVER_INFO_1580, LPSERVER_INFO_1580; - -struct SERVER_INFO_1581 { - DWORD sv1581_maxfreemlcbs; -} -alias SERVER_INFO_1581* PSERVER_INFO_1581, LPSERVER_INFO_1581; - -struct SERVER_INFO_1582 { - DWORD sv1582_maxfreepagedpoolchunks; -} -alias SERVER_INFO_1582* PSERVER_INFO_1582, LPSERVER_INFO_1582; - -struct SERVER_INFO_1583 { - DWORD sv1583_minpagedpoolchunksize; -} -alias SERVER_INFO_1583* PSERVER_INFO_1583, LPSERVER_INFO_1583; - -struct SERVER_INFO_1584 { - DWORD sv1584_maxpagedpoolchunksize; -} -alias SERVER_INFO_1584* PSERVER_INFO_1584, LPSERVER_INFO_1584; - -struct SERVER_INFO_1585 { - BOOL sv1585_sendsfrompreferredprocessor; -} -alias SERVER_INFO_1585* PSERVER_INFO_1585, LPSERVER_INFO_1585; - -struct SERVER_INFO_1586 { - BOOL sv1586_maxthreadsperqueue; -} -alias SERVER_INFO_1586* PSERVER_INFO_1586, LPSERVER_INFO_1586; - -struct SERVER_TRANSPORT_INFO_0 { - DWORD svti0_numberofvcs; - LPWSTR svti0_transportname; - PBYTE svti0_transportaddress; - DWORD svti0_transportaddresslength; - LPWSTR svti0_networkaddress; -} -alias SERVER_TRANSPORT_INFO_0* PSERVER_TRANSPORT_INFO_0, - LPSERVER_TRANSPORT_INFO_0; - -extern (Windows): -NET_API_STATUS NetServerEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD); -NET_API_STATUS NetServerEnumEx(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR); -NET_API_STATUS NetServerGetInfo(LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetServerSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetServerSetInfoCommandLine(WORD,LPWSTR*); -NET_API_STATUS NetServerDiskEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetServerComputerNameAdd(LPWSTR,LPWSTR,LPWSTR); -NET_API_STATUS NetServerComputerNameDel(LPWSTR,LPWSTR); -NET_API_STATUS NetServerTransportAdd(LPWSTR,DWORD,PBYTE); -NET_API_STATUS NetServerTransportAddEx(LPWSTR,DWORD,PBYTE); -NET_API_STATUS NetServerTransportDel(LPWSTR,DWORD,PBYTE); -NET_API_STATUS NetServerTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL); - -const SVI1_NUM_ELEMENTS=5; -const SVI2_NUM_ELEMENTS=40; -const SVI3_NUM_ELEMENTS=44; -const SV_MAX_CMD_LEN=PATHLEN; -const SW_AUTOPROF_LOAD_MASK=1; -const SW_AUTOPROF_SAVE_MASK=2; -const SV_MAX_SRV_HEUR_LEN=32; -const SV_USERS_PER_LICENSE=5; -const SV_PLATFORM_ID_OS2=400; -const SV_PLATFORM_ID_NT=500; -const MAJOR_VERSION_MASK=15; -const SV_TYPE_WORKSTATION=1; -const SV_TYPE_SERVER=2; -const SV_TYPE_SQLSERVER=4; -const SV_TYPE_DOMAIN_CTRL=8; -const SV_TYPE_DOMAIN_BAKCTRL=16; -const SV_TYPE_TIME_SOURCE=32; -const SV_TYPE_AFP=64; -const SV_TYPE_NOVELL=128; -const SV_TYPE_DOMAIN_MEMBER=256; -const SV_TYPE_PRINTQ_SERVER=512; -const SV_TYPE_DIALIN_SERVER=1024; -const SV_TYPE_XENIX_SERVER=2048; -const SV_TYPE_SERVER_UNIX=SV_TYPE_XENIX_SERVER; -const SV_TYPE_NT=4096; -const SV_TYPE_WFW=8192; -const SV_TYPE_SERVER_MFPN=16384; -const SV_TYPE_SERVER_NT=32768; -const SV_TYPE_POTENTIAL_BROWSER=65536; -const SV_TYPE_BACKUP_BROWSER=0x20000; -const SV_TYPE_MASTER_BROWSER=0x40000; -const SV_TYPE_DOMAIN_MASTER=0x80000; -const SV_TYPE_SERVER_OSF=0x100000; -const SV_TYPE_SERVER_VMS=0x200000; -const SV_TYPE_WINDOWS=0x400000; -const SV_TYPE_ALTERNATE_XPORT=0x20000000; -const SV_TYPE_LOCAL_LIST_ONLY=0x40000000; -const SV_TYPE_DOMAIN_ENUM=0x80000000; -const SV_TYPE_ALL=0xFFFFFFFF; -const SV_NODISC=(-1); -const SV_USERSECURITY=1; -const SV_SHARESECURITY=0; -const SV_HIDDEN=1; -const SV_VISIBLE=0; -const SV_PLATFORM_ID_PARMNUM=101; -const SV_NAME_PARMNUM=102; -const SV_VERSION_MAJOR_PARMNUM=103; -const SV_VERSION_MINOR_PARMNUM=104; -const SV_TYPE_PARMNUM=105; -const SV_COMMENT_PARMNUM=5; -const SV_USERS_PARMNUM=107; -const SV_DISC_PARMNUM=10; -const SV_HIDDEN_PARMNUM=16; -const SV_ANNOUNCE_PARMNUM=17; -const SV_ANNDELTA_PARMNUM=18; -const SV_USERPATH_PARMNUM=112; -const SV_ULIST_MTIME_PARMNUM=401; -const SV_GLIST_MTIME_PARMNUM=402; -const SV_ALIST_MTIME_PARMNUM=403; -const SV_ALERTS_PARMNUM=11; -const SV_SECURITY_PARMNUM=405; -const SV_NUMADMIN_PARMNUM=406; -const SV_LANMASK_PARMNUM=407; -const SV_GUESTACC_PARMNUM=408; -const SV_CHDEVQ_PARMNUM=410; -const SV_CHDEVJOBS_PARMNUM=411; -const SV_CONNECTIONS_PARMNUM=412; -const SV_SHARES_PARMNUM=413; -const SV_OPENFILES_PARMNUM=414; -const SV_SESSREQS_PARMNUM=417; -const SV_ACTIVELOCKS_PARMNUM=419; -const SV_NUMREQBUF_PARMNUM=420; -const SV_NUMBIGBUF_PARMNUM=422; -const SV_NUMFILETASKS_PARMNUM=423; -const SV_ALERTSCHED_PARMNUM=37; -const SV_ERRORALERT_PARMNUM=38; -const SV_LOGONALERT_PARMNUM=39; -const SV_ACCESSALERT_PARMNUM=40; -const SV_DISKALERT_PARMNUM=41; -const SV_NETIOALERT_PARMNUM=42; -const SV_MAXAUDITSZ_PARMNUM=43; -const SV_SRVHEURISTICS_PARMNUM=431; -const SV_SESSOPENS_PARMNUM=501; -const SV_SESSVCS_PARMNUM=502; -const SV_OPENSEARCH_PARMNUM=503; -const SV_SIZREQBUF_PARMNUM=504; -const SV_INITWORKITEMS_PARMNUM=505; -const SV_MAXWORKITEMS_PARMNUM=506; -const SV_RAWWORKITEMS_PARMNUM=507; -const SV_IRPSTACKSIZE_PARMNUM=508; -const SV_MAXRAWBUFLEN_PARMNUM=509; -const SV_SESSUSERS_PARMNUM=510; -const SV_SESSCONNS_PARMNUM=511; -const SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM=512; -const SV_MAXPAGEDMEMORYUSAGE_PARMNUM=513; -const SV_ENABLESOFTCOMPAT_PARMNUM=514; -const SV_ENABLEFORCEDLOGOFF_PARMNUM=515; -const SV_TIMESOURCE_PARMNUM=516; -const SV_ACCEPTDOWNLEVELAPIS_PARMNUM=517; -const SV_LMANNOUNCE_PARMNUM=518; -const SV_DOMAIN_PARMNUM=519; -const SV_MAXCOPYREADLEN_PARMNUM=520; -const SV_MAXCOPYWRITELEN_PARMNUM=521; -const SV_MINKEEPSEARCH_PARMNUM=522; -const SV_MAXKEEPSEARCH_PARMNUM=523; -const SV_MINKEEPCOMPLSEARCH_PARMNUM=524; -const SV_MAXKEEPCOMPLSEARCH_PARMNUM=525; -const SV_THREADCOUNTADD_PARMNUM=526; -const SV_NUMBLOCKTHREADS_PARMNUM=527; -const SV_SCAVTIMEOUT_PARMNUM=528; -const SV_MINRCVQUEUE_PARMNUM=529; -const SV_MINFREEWORKITEMS_PARMNUM=530; -const SV_XACTMEMSIZE_PARMNUM=531; -const SV_THREADPRIORITY_PARMNUM=532; -const SV_MAXMPXCT_PARMNUM=533; -const SV_OPLOCKBREAKWAIT_PARMNUM=534; -const SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM=535; -const SV_ENABLEOPLOCKS_PARMNUM=536; -const SV_ENABLEOPLOCKFORCECLOSE_PARMNUM=537; -const SV_ENABLEFCBOPENS_PARMNUM=538; -const SV_ENABLERAW_PARMNUM=539; -const SV_ENABLESHAREDNETDRIVES_PARMNUM=540; -const SV_MINFREECONNECTIONS_PARMNUM=541; -const SV_MAXFREECONNECTIONS_PARMNUM=542; -const SV_INITSESSTABLE_PARMNUM=543; -const SV_INITCONNTABLE_PARMNUM=544; -const SV_INITFILETABLE_PARMNUM=545; -const SV_INITSEARCHTABLE_PARMNUM=546; -const SV_ALERTSCHEDULE_PARMNUM=547; -const SV_ERRORTHRESHOLD_PARMNUM=548; -const SV_NETWORKERRORTHRESHOLD_PARMNUM=549; -const SV_DISKSPACETHRESHOLD_PARMNUM=550; -const SV_MAXLINKDELAY_PARMNUM=552; -const SV_MINLINKTHROUGHPUT_PARMNUM=553; -const SV_LINKINFOVALIDTIME_PARMNUM=554; -const SV_SCAVQOSINFOUPDATETIME_PARMNUM=555; -const SV_MAXWORKITEMIDLETIME_PARMNUM=556; -const SV_MAXRAWWORKITEMS_PARMNUM=557; -const SV_PRODUCTTYPE_PARMNUM=560; -const SV_SERVERSIZE_PARMNUM=561; -const SV_CONNECTIONLESSAUTODISC_PARMNUM=562; -const SV_SHARINGVIOLATIONRETRIES_PARMNUM=563; -const SV_SHARINGVIOLATIONDELAY_PARMNUM=564; -const SV_MAXGLOBALOPENSEARCH_PARMNUM=565; -const SV_REMOVEDUPLICATESEARCHES_PARMNUM=566; -const SV_LOCKVIOLATIONRETRIES_PARMNUM=567; -const SV_LOCKVIOLATIONOFFSET_PARMNUM=568; -const SV_LOCKVIOLATIONDELAY_PARMNUM=569; -const SV_MDLREADSWITCHOVER_PARMNUM=570; -const SV_CACHEDOPENLIMIT_PARMNUM=571; -const SV_CRITICALTHREADS_PARMNUM=572; -const SV_RESTRICTNULLSESSACCESS_PARMNUM=573; -const SV_ENABLEWFW311DIRECTIPX_PARMNUM=574; -const SV_OTHERQUEUEAFFINITY_PARMNUM=575; -const SV_QUEUESAMPLESECS_PARMNUM=576; -const SV_BALANCECOUNT_PARMNUM=577; -const SV_PREFERREDAFFINITY_PARMNUM=578; -const SV_MAXFREERFCBS_PARMNUM=579; -const SV_MAXFREEMFCBS_PARMNUM=580; -const SV_MAXFREELFCBS_PARMNUM=581; -const SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM=582; -const SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM=583; -const SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM=584; -const SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM=585; -const SV_MAXTHREADSPERQUEUE_PARMNUM=586; -const SV_COMMENT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM); -const SV_USERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM); -const SV_DISC_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM); -const SV_HIDDEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM); -const SV_ANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM); -const SV_ANNDELTA_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM); -const SV_SESSOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM); -const SV_SESSVCS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM); -const SV_OPENSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM); -const SV_MAXWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM); -const SV_MAXRAWBUFLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM); -const SV_SESSUSERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM); -const SV_SESSCONNS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM); -const SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM); -const SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM); -const SV_ENABLESOFTCOMPAT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM); -const SV_ENABLEFORCEDLOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM); -const SV_TIMESOURCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM); -const SV_LMANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM); -const SV_MAXCOPYREADLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM); -const SV_MAXCOPYWRITELEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM); -const SV_MINKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM); -const SV_MAXKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM); -const SV_MINKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM); -const SV_MAXKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM); -const SV_SCAVTIMEOUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM); -const SV_MINRCVQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM); -const SV_MINFREEWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM); -const SV_MAXMPXCT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM); -const SV_OPLOCKBREAKWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM); -const SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM); -const SV_ENABLEOPLOCKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM); -const SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM); -const SV_ENABLEFCBOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM); -const SV_ENABLERAW_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM); -const SV_ENABLESHAREDNETDRIVES_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM); -const SV_MINFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM); -const SV_MAXFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM); -const SV_INITSESSTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM); -const SV_INITCONNTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM); -const SV_INITFILETABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM); -const SV_INITSEARCHTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM); -const SV_ALERTSCHEDULE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM); -const SV_ERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM); -const SV_NETWORKERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM); -const SV_DISKSPACETHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM); -const SV_MAXLINKDELAY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM); -const SV_MINLINKTHROUGHPUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM); -const SV_LINKINFOVALIDTIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM); -const SV_SCAVQOSINFOUPDATETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM); -const SV_MAXWORKITEMIDLETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM); -const SV_MAXRAWWORKITEMS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM); -const SV_PRODUCTTYPE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM); -const SV_SERVERSIZE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM); -const SV_CONNECTIONLESSAUTODISC_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM); -const SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM); -const SV_SHARINGVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM); -const SV_MAXGLOBALOPENSEARCH_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM); -const SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM); -const SV_LOCKVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM); -const SV_LOCKVIOLATIONOFFSET_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM); -const SV_LOCKVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM); -const SV_MDLREADSWITCHOVER_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM); -const SV_CACHEDOPENLIMIT_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM); -const SV_CRITICALTHREADS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM); -const SV_RESTRICTNULLSESSACCESS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM); -const SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM); -const SV_OTHERQUEUEAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM); -const SV_QUEUESAMPLESECS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM); -const SV_BALANCECOUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM); -const SV_PREFERREDAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM); -const SV_MAXFREERFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM); -const SV_MAXFREEMFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM); -const SV_MAXFREELFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM); -const SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM); -const SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM); -const SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM); -const SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM); -const SV_MAXTHREADSPERQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM); +/***********************************************************************\ +* lmserver.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmserver; + +import win32.winsvc; +private import win32.lmcons, win32.windef; + +struct SERVER_INFO_100 { + DWORD sv100_platform_id; + LPWSTR sv100_name; +} +alias SERVER_INFO_100* PSERVER_INFO_100, LPSERVER_INFO_100; + +struct SERVER_INFO_101 { + DWORD sv101_platform_id; + LPWSTR sv101_name; + DWORD sv101_version_major; + DWORD sv101_version_minor; + DWORD sv101_type; + LPWSTR sv101_comment; +} +alias SERVER_INFO_101* PSERVER_INFO_101, LPSERVER_INFO_101; + +struct SERVER_INFO_102 { + DWORD sv102_platform_id; + LPWSTR sv102_name; + DWORD sv102_version_major; + DWORD sv102_version_minor; + DWORD sv102_type; + LPWSTR sv102_comment; + DWORD sv102_users; + LONG sv102_disc; + BOOL sv102_hidden; + DWORD sv102_announce; + DWORD sv102_anndelta; + DWORD sv102_licenses; + LPWSTR sv102_userpath; +} +alias SERVER_INFO_102* PSERVER_INFO_102, LPSERVER_INFO_102; + +struct SERVER_INFO_402 { + DWORD sv402_ulist_mtime; + DWORD sv402_glist_mtime; + DWORD sv402_alist_mtime; + LPWSTR sv402_alerts; + DWORD sv402_security; + DWORD sv402_numadmin; + DWORD sv402_lanmask; + LPWSTR sv402_guestacct; + DWORD sv402_chdevs; + DWORD sv402_chdevq; + DWORD sv402_chdevjobs; + DWORD sv402_connections; + DWORD sv402_shares; + DWORD sv402_openfiles; + DWORD sv402_sessopens; + DWORD sv402_sessvcs; + DWORD sv402_sessreqs; + DWORD sv402_opensearch; + DWORD sv402_activelocks; + DWORD sv402_numreqbuf; + DWORD sv402_sizreqbuf; + DWORD sv402_numbigbuf; + DWORD sv402_numfiletasks; + DWORD sv402_alertsched; + DWORD sv402_erroralert; + DWORD sv402_logonalert; + DWORD sv402_accessalert; + DWORD sv402_diskalert; + DWORD sv402_netioalert; + DWORD sv402_maxauditsz; + LPWSTR sv402_srvheuristics; +} +alias SERVER_INFO_402* PSERVER_INFO_402, LPSERVER_INFO_402; + +struct SERVER_INFO_403 { + DWORD sv403_ulist_mtime; + DWORD sv403_glist_mtime; + DWORD sv403_alist_mtime; + LPWSTR sv403_alerts; + DWORD sv403_security; + DWORD sv403_numadmin; + DWORD sv403_lanmask; + LPWSTR sv403_guestacct; + DWORD sv403_chdevs; + DWORD sv403_chdevq; + DWORD sv403_chdevjobs; + DWORD sv403_connections; + DWORD sv403_shares; + DWORD sv403_openfiles; + DWORD sv403_sessopens; + DWORD sv403_sessvcs; + DWORD sv403_sessreqs; + DWORD sv403_opensearch; + DWORD sv403_activelocks; + DWORD sv403_numreqbuf; + DWORD sv403_sizreqbuf; + DWORD sv403_numbigbuf; + DWORD sv403_numfiletasks; + DWORD sv403_alertsched; + DWORD sv403_erroralert; + DWORD sv403_logonalert; + DWORD sv403_accessalert; + DWORD sv403_diskalert; + DWORD sv403_netioalert; + DWORD sv403_maxauditsz; + LPWSTR sv403_srvheuristics; + DWORD sv403_auditedevents; + DWORD sv403_autoprofile; + LPWSTR sv403_autopath; +} +alias SERVER_INFO_403* PSERVER_INFO_403, LPSERVER_INFO_403; + +struct SERVER_INFO_502 { + DWORD sv502_sessopens; + DWORD sv502_sessvcs; + DWORD sv502_opensearch; + DWORD sv502_sizreqbuf; + DWORD sv502_initworkitems; + DWORD sv502_maxworkitems; + DWORD sv502_rawworkitems; + DWORD sv502_irpstacksize; + DWORD sv502_maxrawbuflen; + DWORD sv502_sessusers; + DWORD sv502_sessconns; + DWORD sv502_maxpagedmemoryusage; + DWORD sv502_maxnonpagedmemoryusage; + BOOL sv502_enablesoftcompat; + BOOL sv502_enableforcedlogoff; + BOOL sv502_timesource; + BOOL sv502_acceptdownlevelapis; + BOOL sv502_lmannounce; +} +alias SERVER_INFO_502* PSERVER_INFO_502, LPSERVER_INFO_502; + +struct SERVER_INFO_503 { + DWORD sv503_sessopens; + DWORD sv503_sessvcs; + DWORD sv503_opensearch; + DWORD sv503_sizreqbuf; + DWORD sv503_initworkitems; + DWORD sv503_maxworkitems; + DWORD sv503_rawworkitems; + DWORD sv503_irpstacksize; + DWORD sv503_maxrawbuflen; + DWORD sv503_sessusers; + DWORD sv503_sessconns; + DWORD sv503_maxpagedmemoryusage; + DWORD sv503_maxnonpagedmemoryusage; + BOOL sv503_enablesoftcompat; + BOOL sv503_enableforcedlogoff; + BOOL sv503_timesource; + BOOL sv503_acceptdownlevelapis; + BOOL sv503_lmannounce; + LPWSTR sv503_domain; + DWORD sv503_maxcopyreadlen; + DWORD sv503_maxcopywritelen; + DWORD sv503_minkeepsearch; + DWORD sv503_maxkeepsearch; + DWORD sv503_minkeepcomplsearch; + DWORD sv503_maxkeepcomplsearch; + DWORD sv503_threadcountadd; + DWORD sv503_numblockthreads; + DWORD sv503_scavtimeout; + DWORD sv503_minrcvqueue; + DWORD sv503_minfreeworkitems; + DWORD sv503_xactmemsize; + DWORD sv503_threadpriority; + DWORD sv503_maxmpxct; + DWORD sv503_oplockbreakwait; + DWORD sv503_oplockbreakresponsewait; + BOOL sv503_enableoplocks; + BOOL sv503_enableoplockforceclose; + BOOL sv503_enablefcbopens; + BOOL sv503_enableraw; + BOOL sv503_enablesharednetdrives; + DWORD sv503_minfreeconnections; + DWORD sv503_maxfreeconnections; +} +alias SERVER_INFO_503* PSERVER_INFO_503, LPSERVER_INFO_503; + +struct SERVER_INFO_599 { + DWORD sv599_sessopens; + DWORD sv599_sessvcs; + DWORD sv599_opensearch; + DWORD sv599_sizreqbuf; + DWORD sv599_initworkitems; + DWORD sv599_maxworkitems; + DWORD sv599_rawworkitems; + DWORD sv599_irpstacksize; + DWORD sv599_maxrawbuflen; + DWORD sv599_sessusers; + DWORD sv599_sessconns; + DWORD sv599_maxpagedmemoryusage; + DWORD sv599_maxnonpagedmemoryusage; + BOOL sv599_enablesoftcompat; + BOOL sv599_enableforcedlogoff; + BOOL sv599_timesource; + BOOL sv599_acceptdownlevelapis; + BOOL sv599_lmannounce; + LPWSTR sv599_domain; + DWORD sv599_maxcopyreadlen; + DWORD sv599_maxcopywritelen; + DWORD sv599_minkeepsearch; + DWORD sv599_maxkeepsearch; + DWORD sv599_minkeepcomplsearch; + DWORD sv599_maxkeepcomplsearch; + DWORD sv599_threadcountadd; + DWORD sv599_numblockthreads; + DWORD sv599_scavtimeout; + DWORD sv599_minrcvqueue; + DWORD sv599_minfreeworkitems; + DWORD sv599_xactmemsize; + DWORD sv599_threadpriority; + DWORD sv599_maxmpxct; + DWORD sv599_oplockbreakwait; + DWORD sv599_oplockbreakresponsewait; + BOOL sv599_enableoplocks; + BOOL sv599_enableoplockforceclose; + BOOL sv599_enablefcbopens; + BOOL sv599_enableraw; + BOOL sv599_enablesharednetdrives; + DWORD sv599_minfreeconnections; + DWORD sv599_maxfreeconnections; + DWORD sv599_initsesstable; + DWORD sv599_initconntable; + DWORD sv599_initfiletable; + DWORD sv599_initsearchtable; + DWORD sv599_alertschedule; + DWORD sv599_errorthreshold; + DWORD sv599_networkerrorthreshold; + DWORD sv599_diskspacethreshold; + DWORD sv599_reserved; + DWORD sv599_maxlinkdelay; + DWORD sv599_minlinkthroughput; + DWORD sv599_linkinfovalidtime; + DWORD sv599_scavqosinfoupdatetime; + DWORD sv599_maxworkitemidletime; +} +alias SERVER_INFO_599* PSERVER_INFO_599, LPSERVER_INFO_599; + +struct SERVER_INFO_598 { + DWORD sv598_maxrawworkitems; + DWORD sv598_maxthreadsperqueue; + DWORD sv598_producttype; + DWORD sv598_serversize; + DWORD sv598_connectionlessautodisc; + DWORD sv598_sharingviolationretries; + DWORD sv598_sharingviolationdelay; + DWORD sv598_maxglobalopensearch; + DWORD sv598_removeduplicatesearches; + DWORD sv598_lockviolationoffset; + DWORD sv598_lockviolationdelay; + DWORD sv598_mdlreadswitchover; + DWORD sv598_cachedopenlimit; + DWORD sv598_otherqueueaffinity; + BOOL sv598_restrictnullsessaccess; + BOOL sv598_enablewfw311directipx; + DWORD sv598_queuesamplesecs; + DWORD sv598_balancecount; + DWORD sv598_preferredaffinity; + DWORD sv598_maxfreerfcbs; + DWORD sv598_maxfreemfcbs; + DWORD sv598_maxfreelfcbs; + DWORD sv598_maxfreepagedpoolchunks; + DWORD sv598_minpagedpoolchunksize; + DWORD sv598_maxpagedpoolchunksize; + BOOL sv598_sendsfrompreferredprocessor; +} +alias SERVER_INFO_598* PSERVER_INFO_598, LPSERVER_INFO_598; + +struct SERVER_INFO_1005 { + LPWSTR sv1005_comment; +} +alias SERVER_INFO_1005* PSERVER_INFO_1005, LPSERVER_INFO_1005; + +struct SERVER_INFO_1107 { + DWORD sv1107_users; +} +alias SERVER_INFO_1107* PSERVER_INFO_1107, LPSERVER_INFO_1107; + +struct SERVER_INFO_1010 { + LONG sv1010_disc; +} +alias SERVER_INFO_1010* PSERVER_INFO_1010, LPSERVER_INFO_1010; + +struct SERVER_INFO_1016 { + BOOL sv1016_hidden; +} +alias SERVER_INFO_1016* PSERVER_INFO_1016, LPSERVER_INFO_1016; + +struct SERVER_INFO_1017 { + DWORD sv1017_announce; +} +alias SERVER_INFO_1017* PSERVER_INFO_1017, LPSERVER_INFO_1017; + +struct SERVER_INFO_1018 { + DWORD sv1018_anndelta; +} +alias SERVER_INFO_1018* PSERVER_INFO_1018, LPSERVER_INFO_1018; + +struct SERVER_INFO_1501 { + DWORD sv1501_sessopens; +} +alias SERVER_INFO_1501* PSERVER_INFO_1501, LPSERVER_INFO_1501; + +struct SERVER_INFO_1502 { + DWORD sv1502_sessvcs; +} +alias SERVER_INFO_1502* PSERVER_INFO_1502, LPSERVER_INFO_1502; + +struct SERVER_INFO_1503 { + DWORD sv1503_opensearch; +} +alias SERVER_INFO_1503* PSERVER_INFO_1503, LPSERVER_INFO_1503; + +struct SERVER_INFO_1506 { + DWORD sv1506_maxworkitems; +} +alias SERVER_INFO_1506* PSERVER_INFO_1506, LPSERVER_INFO_1506; + +struct SERVER_INFO_1509 { + DWORD sv1509_maxrawbuflen; +} +alias SERVER_INFO_1509* PSERVER_INFO_1509, LPSERVER_INFO_1509; + +struct SERVER_INFO_1510 { + DWORD sv1510_sessusers; +} +alias SERVER_INFO_1510* PSERVER_INFO_1510, LPSERVER_INFO_1510; + +struct SERVER_INFO_1511 { + DWORD sv1511_sessconns; +} alias SERVER_INFO_1511* PSERVER_INFO_1511, LPSERVER_INFO_1511; + +struct SERVER_INFO_1512 { + DWORD sv1512_maxnonpagedmemoryusage; +} +alias SERVER_INFO_1512* PSERVER_INFO_1512, LPSERVER_INFO_1512; + +struct SERVER_INFO_1513 { + DWORD sv1513_maxpagedmemoryusage; +} +alias SERVER_INFO_1513* PSERVER_INFO_1513, LPSERVER_INFO_1513; + +struct SERVER_INFO_1514 { + BOOL sv1514_enablesoftcompat; +} +alias SERVER_INFO_1514* PSERVER_INFO_1514, LPSERVER_INFO_1514; + +struct SERVER_INFO_1515 { + BOOL sv1515_enableforcedlogoff; +} +alias SERVER_INFO_1515* PSERVER_INFO_1515, LPSERVER_INFO_1515; + +struct SERVER_INFO_1516 { + BOOL sv1516_timesource; +} +alias SERVER_INFO_1516* PSERVER_INFO_1516, LPSERVER_INFO_1516; + +struct SERVER_INFO_1518 { + BOOL sv1518_lmannounce; +} +alias SERVER_INFO_1518* PSERVER_INFO_1518, LPSERVER_INFO_1518; + +struct SERVER_INFO_1520 { + DWORD sv1520_maxcopyreadlen; +} +alias SERVER_INFO_1520* PSERVER_INFO_1520, LPSERVER_INFO_1520; + +struct SERVER_INFO_1521 { + DWORD sv1521_maxcopywritelen; +} +alias SERVER_INFO_1521* PSERVER_INFO_1521, LPSERVER_INFO_1521; + +struct SERVER_INFO_1522 { + DWORD sv1522_minkeepsearch; +} +alias SERVER_INFO_1522* PSERVER_INFO_1522, LPSERVER_INFO_1522; + +struct SERVER_INFO_1523 { + DWORD sv1523_maxkeepsearch; +} +alias SERVER_INFO_1523* PSERVER_INFO_1523, LPSERVER_INFO_1523; + +struct SERVER_INFO_1524 { + DWORD sv1524_minkeepcomplsearch; +} +alias SERVER_INFO_1524* PSERVER_INFO_1524, LPSERVER_INFO_1524; + +struct SERVER_INFO_1525 { + DWORD sv1525_maxkeepcomplsearch; +} +alias SERVER_INFO_1525* PSERVER_INFO_1525, LPSERVER_INFO_1525; + +struct SERVER_INFO_1528 { + DWORD sv1528_scavtimeout; +} +alias SERVER_INFO_1528* PSERVER_INFO_1528, LPSERVER_INFO_1528; + +struct SERVER_INFO_1529 { + DWORD sv1529_minrcvqueue; +} +alias SERVER_INFO_1529* PSERVER_INFO_1529, LPSERVER_INFO_1529; + +struct SERVER_INFO_1530 { + DWORD sv1530_minfreeworkitems; +} +alias SERVER_INFO_1530* PSERVER_INFO_1530, LPSERVER_INFO_1530; + +struct SERVER_INFO_1533 { + DWORD sv1533_maxmpxct; +} +alias SERVER_INFO_1533* PSERVER_INFO_1533, LPSERVER_INFO_1533; + +struct SERVER_INFO_1534 { + DWORD sv1534_oplockbreakwait; +} +alias SERVER_INFO_1534* PSERVER_INFO_1534, LPSERVER_INFO_1534; + +struct SERVER_INFO_1535 { + DWORD sv1535_oplockbreakresponsewait; +} +alias SERVER_INFO_1535* PSERVER_INFO_1535, LPSERVER_INFO_1535; + +struct SERVER_INFO_1536 { + BOOL sv1536_enableoplocks; +} +alias SERVER_INFO_1536* PSERVER_INFO_1536, LPSERVER_INFO_1536; + +struct SERVER_INFO_1537 { + BOOL sv1537_enableoplockforceclose; +} +alias SERVER_INFO_1537* PSERVER_INFO_1537, LPSERVER_INFO_1537; + +struct SERVER_INFO_1538 { + BOOL sv1538_enablefcbopens; +} +alias SERVER_INFO_1538* PSERVER_INFO_1538, LPSERVER_INFO_1538; + +struct SERVER_INFO_1539 { + BOOL sv1539_enableraw; +} +alias SERVER_INFO_1539* PSERVER_INFO_1539, LPSERVER_INFO_1539; + +struct SERVER_INFO_1540 { + BOOL sv1540_enablesharednetdrives; +} +alias SERVER_INFO_1540* PSERVER_INFO_1540, LPSERVER_INFO_1540; + +struct SERVER_INFO_1541 { + BOOL sv1541_minfreeconnections; +} +alias SERVER_INFO_1541* PSERVER_INFO_1541, LPSERVER_INFO_1541; + +struct SERVER_INFO_1542 { + BOOL sv1542_maxfreeconnections; +} +alias SERVER_INFO_1542* PSERVER_INFO_1542, LPSERVER_INFO_1542; + +struct SERVER_INFO_1543 { + DWORD sv1543_initsesstable; +} +alias SERVER_INFO_1543* PSERVER_INFO_1543, LPSERVER_INFO_1543; + +struct SERVER_INFO_1544 { + DWORD sv1544_initconntable; +} +alias SERVER_INFO_1544* PSERVER_INFO_1544, LPSERVER_INFO_1544; + +struct SERVER_INFO_1545 { + DWORD sv1545_initfiletable; +} +alias SERVER_INFO_1545* PSERVER_INFO_1545, LPSERVER_INFO_1545; + +struct SERVER_INFO_1546 { + DWORD sv1546_initsearchtable; +} +alias SERVER_INFO_1546* PSERVER_INFO_1546, LPSERVER_INFO_1546; + +struct SERVER_INFO_1547 { + DWORD sv1547_alertschedule; +} +alias SERVER_INFO_1547* PSERVER_INFO_1547, LPSERVER_INFO_1547; + +struct SERVER_INFO_1548 { + DWORD sv1548_errorthreshold; +} +alias SERVER_INFO_1548* PSERVER_INFO_1548, LPSERVER_INFO_1548; + +struct SERVER_INFO_1549 { + DWORD sv1549_networkerrorthreshold; +} +alias SERVER_INFO_1549* PSERVER_INFO_1549, LPSERVER_INFO_1549; + +struct SERVER_INFO_1550 { + DWORD sv1550_diskspacethreshold; +} +alias SERVER_INFO_1550* PSERVER_INFO_1550, LPSERVER_INFO_1550; + +struct SERVER_INFO_1552 { + DWORD sv1552_maxlinkdelay; +} +alias SERVER_INFO_1552* PSERVER_INFO_1552, LPSERVER_INFO_1552; + +struct SERVER_INFO_1553 { + DWORD sv1553_minlinkthroughput; +} +alias SERVER_INFO_1553* PSERVER_INFO_1553, LPSERVER_INFO_1553; + +struct SERVER_INFO_1554 { + DWORD sv1554_linkinfovalidtime; +} +alias SERVER_INFO_1554* PSERVER_INFO_1554, LPSERVER_INFO_1554; + +struct SERVER_INFO_1555 { + DWORD sv1555_scavqosinfoupdatetime; +} +alias SERVER_INFO_1555* PSERVER_INFO_1555, LPSERVER_INFO_1555; + +struct SERVER_INFO_1556 { + DWORD sv1556_maxworkitemidletime; +} +alias SERVER_INFO_1556* PSERVER_INFO_1556, LPSERVER_INFO_1556; + +struct SERVER_INFO_1557 { + DWORD sv1557_maxrawworkitems; +} +alias SERVER_INFO_1557* PSERVER_INFO_1557, LPSERVER_INFO_1557; + +struct SERVER_INFO_1560 { + DWORD sv1560_producttype; +} +alias SERVER_INFO_1560* PSERVER_INFO_1560, LPSERVER_INFO_1560; + +struct SERVER_INFO_1561 { + DWORD sv1561_serversize; +} +alias SERVER_INFO_1561* PSERVER_INFO_1561, LPSERVER_INFO_1561; + +struct SERVER_INFO_1562 { + DWORD sv1562_connectionlessautodisc; +} +alias SERVER_INFO_1562* PSERVER_INFO_1562, LPSERVER_INFO_1562; + +struct SERVER_INFO_1563 { + DWORD sv1563_sharingviolationretries; +} +alias SERVER_INFO_1563* PSERVER_INFO_1563, LPSERVER_INFO_1563; + +struct SERVER_INFO_1564 { + DWORD sv1564_sharingviolationdelay; +} +alias SERVER_INFO_1564* PSERVER_INFO_1564, LPSERVER_INFO_1564; + +struct SERVER_INFO_1565 { + DWORD sv1565_maxglobalopensearch; +} +alias SERVER_INFO_1565* PSERVER_INFO_1565, LPSERVER_INFO_1565; + +struct SERVER_INFO_1566 { + BOOL sv1566_removeduplicatesearches; +} +alias SERVER_INFO_1566* PSERVER_INFO_1566, LPSERVER_INFO_1566; + +struct SERVER_INFO_1567 { + DWORD sv1567_lockviolationretries; +} +alias SERVER_INFO_1567* PSERVER_INFO_1567, LPSERVER_INFO_1567; + +struct SERVER_INFO_1568 { + DWORD sv1568_lockviolationoffset; +} +alias SERVER_INFO_1568* PSERVER_INFO_1568, LPSERVER_INFO_1568; + +struct SERVER_INFO_1569 { + DWORD sv1569_lockviolationdelay; +} +alias SERVER_INFO_1569* PSERVER_INFO_1569, LPSERVER_INFO_1569; + +struct SERVER_INFO_1570 { + DWORD sv1570_mdlreadswitchover; +} +alias SERVER_INFO_1570* PSERVER_INFO_1570, LPSERVER_INFO_1570; + +struct SERVER_INFO_1571 { + DWORD sv1571_cachedopenlimit; +} +alias SERVER_INFO_1571* PSERVER_INFO_1571, LPSERVER_INFO_1571; + +struct SERVER_INFO_1572 { + DWORD sv1572_criticalthreads; +} +alias SERVER_INFO_1572* PSERVER_INFO_1572, LPSERVER_INFO_1572; + +struct SERVER_INFO_1573 { + DWORD sv1573_restrictnullsessaccess; +} +alias SERVER_INFO_1573* PSERVER_INFO_1573, LPSERVER_INFO_1573; + +struct SERVER_INFO_1574 { + DWORD sv1574_enablewfw311directipx; +} +alias SERVER_INFO_1574* PSERVER_INFO_1574, LPSERVER_INFO_1574; + +struct SERVER_INFO_1575 { + DWORD sv1575_otherqueueaffinity; +} +alias SERVER_INFO_1575* PSERVER_INFO_1575, LPSERVER_INFO_1575; + +struct SERVER_INFO_1576 { + DWORD sv1576_queuesamplesecs; +} +alias SERVER_INFO_1576* PSERVER_INFO_1576, LPSERVER_INFO_1576; + +struct SERVER_INFO_1577 { + DWORD sv1577_balancecount; +} +alias SERVER_INFO_1577* PSERVER_INFO_1577, LPSERVER_INFO_1577; + +struct SERVER_INFO_1578 { + DWORD sv1578_preferredaffinity; +} +alias SERVER_INFO_1578* PSERVER_INFO_1578, LPSERVER_INFO_1578; + +struct SERVER_INFO_1579 { + DWORD sv1579_maxfreerfcbs; +} +alias SERVER_INFO_1579* PSERVER_INFO_1579, LPSERVER_INFO_1579; + +struct SERVER_INFO_1580 { + DWORD sv1580_maxfreemfcbs; +} +alias SERVER_INFO_1580* PSERVER_INFO_1580, LPSERVER_INFO_1580; + +struct SERVER_INFO_1581 { + DWORD sv1581_maxfreemlcbs; +} +alias SERVER_INFO_1581* PSERVER_INFO_1581, LPSERVER_INFO_1581; + +struct SERVER_INFO_1582 { + DWORD sv1582_maxfreepagedpoolchunks; +} +alias SERVER_INFO_1582* PSERVER_INFO_1582, LPSERVER_INFO_1582; + +struct SERVER_INFO_1583 { + DWORD sv1583_minpagedpoolchunksize; +} +alias SERVER_INFO_1583* PSERVER_INFO_1583, LPSERVER_INFO_1583; + +struct SERVER_INFO_1584 { + DWORD sv1584_maxpagedpoolchunksize; +} +alias SERVER_INFO_1584* PSERVER_INFO_1584, LPSERVER_INFO_1584; + +struct SERVER_INFO_1585 { + BOOL sv1585_sendsfrompreferredprocessor; +} +alias SERVER_INFO_1585* PSERVER_INFO_1585, LPSERVER_INFO_1585; + +struct SERVER_INFO_1586 { + BOOL sv1586_maxthreadsperqueue; +} +alias SERVER_INFO_1586* PSERVER_INFO_1586, LPSERVER_INFO_1586; + +struct SERVER_TRANSPORT_INFO_0 { + DWORD svti0_numberofvcs; + LPWSTR svti0_transportname; + PBYTE svti0_transportaddress; + DWORD svti0_transportaddresslength; + LPWSTR svti0_networkaddress; +} +alias SERVER_TRANSPORT_INFO_0* PSERVER_TRANSPORT_INFO_0, + LPSERVER_TRANSPORT_INFO_0; + +extern (Windows): +NET_API_STATUS NetServerEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD); +NET_API_STATUS NetServerEnumEx(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR); +NET_API_STATUS NetServerGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetServerSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetServerSetInfoCommandLine(WORD,LPWSTR*); +NET_API_STATUS NetServerDiskEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetServerComputerNameAdd(LPWSTR,LPWSTR,LPWSTR); +NET_API_STATUS NetServerComputerNameDel(LPWSTR,LPWSTR); +NET_API_STATUS NetServerTransportAdd(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportAddEx(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportDel(LPWSTR,DWORD,PBYTE); +NET_API_STATUS NetServerTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL); + +const SVI1_NUM_ELEMENTS=5; +const SVI2_NUM_ELEMENTS=40; +const SVI3_NUM_ELEMENTS=44; +const SV_MAX_CMD_LEN=PATHLEN; +const SW_AUTOPROF_LOAD_MASK=1; +const SW_AUTOPROF_SAVE_MASK=2; +const SV_MAX_SRV_HEUR_LEN=32; +const SV_USERS_PER_LICENSE=5; +const SV_PLATFORM_ID_OS2=400; +const SV_PLATFORM_ID_NT=500; +const MAJOR_VERSION_MASK=15; +const SV_TYPE_WORKSTATION=1; +const SV_TYPE_SERVER=2; +const SV_TYPE_SQLSERVER=4; +const SV_TYPE_DOMAIN_CTRL=8; +const SV_TYPE_DOMAIN_BAKCTRL=16; +const SV_TYPE_TIME_SOURCE=32; +const SV_TYPE_AFP=64; +const SV_TYPE_NOVELL=128; +const SV_TYPE_DOMAIN_MEMBER=256; +const SV_TYPE_PRINTQ_SERVER=512; +const SV_TYPE_DIALIN_SERVER=1024; +const SV_TYPE_XENIX_SERVER=2048; +const SV_TYPE_SERVER_UNIX=SV_TYPE_XENIX_SERVER; +const SV_TYPE_NT=4096; +const SV_TYPE_WFW=8192; +const SV_TYPE_SERVER_MFPN=16384; +const SV_TYPE_SERVER_NT=32768; +const SV_TYPE_POTENTIAL_BROWSER=65536; +const SV_TYPE_BACKUP_BROWSER=0x20000; +const SV_TYPE_MASTER_BROWSER=0x40000; +const SV_TYPE_DOMAIN_MASTER=0x80000; +const SV_TYPE_SERVER_OSF=0x100000; +const SV_TYPE_SERVER_VMS=0x200000; +const SV_TYPE_WINDOWS=0x400000; +const SV_TYPE_ALTERNATE_XPORT=0x20000000; +const SV_TYPE_LOCAL_LIST_ONLY=0x40000000; +const SV_TYPE_DOMAIN_ENUM=0x80000000; +const SV_TYPE_ALL=0xFFFFFFFF; +const SV_NODISC=(-1); +const SV_USERSECURITY=1; +const SV_SHARESECURITY=0; +const SV_HIDDEN=1; +const SV_VISIBLE=0; +const SV_PLATFORM_ID_PARMNUM=101; +const SV_NAME_PARMNUM=102; +const SV_VERSION_MAJOR_PARMNUM=103; +const SV_VERSION_MINOR_PARMNUM=104; +const SV_TYPE_PARMNUM=105; +const SV_COMMENT_PARMNUM=5; +const SV_USERS_PARMNUM=107; +const SV_DISC_PARMNUM=10; +const SV_HIDDEN_PARMNUM=16; +const SV_ANNOUNCE_PARMNUM=17; +const SV_ANNDELTA_PARMNUM=18; +const SV_USERPATH_PARMNUM=112; +const SV_ULIST_MTIME_PARMNUM=401; +const SV_GLIST_MTIME_PARMNUM=402; +const SV_ALIST_MTIME_PARMNUM=403; +const SV_ALERTS_PARMNUM=11; +const SV_SECURITY_PARMNUM=405; +const SV_NUMADMIN_PARMNUM=406; +const SV_LANMASK_PARMNUM=407; +const SV_GUESTACC_PARMNUM=408; +const SV_CHDEVQ_PARMNUM=410; +const SV_CHDEVJOBS_PARMNUM=411; +const SV_CONNECTIONS_PARMNUM=412; +const SV_SHARES_PARMNUM=413; +const SV_OPENFILES_PARMNUM=414; +const SV_SESSREQS_PARMNUM=417; +const SV_ACTIVELOCKS_PARMNUM=419; +const SV_NUMREQBUF_PARMNUM=420; +const SV_NUMBIGBUF_PARMNUM=422; +const SV_NUMFILETASKS_PARMNUM=423; +const SV_ALERTSCHED_PARMNUM=37; +const SV_ERRORALERT_PARMNUM=38; +const SV_LOGONALERT_PARMNUM=39; +const SV_ACCESSALERT_PARMNUM=40; +const SV_DISKALERT_PARMNUM=41; +const SV_NETIOALERT_PARMNUM=42; +const SV_MAXAUDITSZ_PARMNUM=43; +const SV_SRVHEURISTICS_PARMNUM=431; +const SV_SESSOPENS_PARMNUM=501; +const SV_SESSVCS_PARMNUM=502; +const SV_OPENSEARCH_PARMNUM=503; +const SV_SIZREQBUF_PARMNUM=504; +const SV_INITWORKITEMS_PARMNUM=505; +const SV_MAXWORKITEMS_PARMNUM=506; +const SV_RAWWORKITEMS_PARMNUM=507; +const SV_IRPSTACKSIZE_PARMNUM=508; +const SV_MAXRAWBUFLEN_PARMNUM=509; +const SV_SESSUSERS_PARMNUM=510; +const SV_SESSCONNS_PARMNUM=511; +const SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM=512; +const SV_MAXPAGEDMEMORYUSAGE_PARMNUM=513; +const SV_ENABLESOFTCOMPAT_PARMNUM=514; +const SV_ENABLEFORCEDLOGOFF_PARMNUM=515; +const SV_TIMESOURCE_PARMNUM=516; +const SV_ACCEPTDOWNLEVELAPIS_PARMNUM=517; +const SV_LMANNOUNCE_PARMNUM=518; +const SV_DOMAIN_PARMNUM=519; +const SV_MAXCOPYREADLEN_PARMNUM=520; +const SV_MAXCOPYWRITELEN_PARMNUM=521; +const SV_MINKEEPSEARCH_PARMNUM=522; +const SV_MAXKEEPSEARCH_PARMNUM=523; +const SV_MINKEEPCOMPLSEARCH_PARMNUM=524; +const SV_MAXKEEPCOMPLSEARCH_PARMNUM=525; +const SV_THREADCOUNTADD_PARMNUM=526; +const SV_NUMBLOCKTHREADS_PARMNUM=527; +const SV_SCAVTIMEOUT_PARMNUM=528; +const SV_MINRCVQUEUE_PARMNUM=529; +const SV_MINFREEWORKITEMS_PARMNUM=530; +const SV_XACTMEMSIZE_PARMNUM=531; +const SV_THREADPRIORITY_PARMNUM=532; +const SV_MAXMPXCT_PARMNUM=533; +const SV_OPLOCKBREAKWAIT_PARMNUM=534; +const SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM=535; +const SV_ENABLEOPLOCKS_PARMNUM=536; +const SV_ENABLEOPLOCKFORCECLOSE_PARMNUM=537; +const SV_ENABLEFCBOPENS_PARMNUM=538; +const SV_ENABLERAW_PARMNUM=539; +const SV_ENABLESHAREDNETDRIVES_PARMNUM=540; +const SV_MINFREECONNECTIONS_PARMNUM=541; +const SV_MAXFREECONNECTIONS_PARMNUM=542; +const SV_INITSESSTABLE_PARMNUM=543; +const SV_INITCONNTABLE_PARMNUM=544; +const SV_INITFILETABLE_PARMNUM=545; +const SV_INITSEARCHTABLE_PARMNUM=546; +const SV_ALERTSCHEDULE_PARMNUM=547; +const SV_ERRORTHRESHOLD_PARMNUM=548; +const SV_NETWORKERRORTHRESHOLD_PARMNUM=549; +const SV_DISKSPACETHRESHOLD_PARMNUM=550; +const SV_MAXLINKDELAY_PARMNUM=552; +const SV_MINLINKTHROUGHPUT_PARMNUM=553; +const SV_LINKINFOVALIDTIME_PARMNUM=554; +const SV_SCAVQOSINFOUPDATETIME_PARMNUM=555; +const SV_MAXWORKITEMIDLETIME_PARMNUM=556; +const SV_MAXRAWWORKITEMS_PARMNUM=557; +const SV_PRODUCTTYPE_PARMNUM=560; +const SV_SERVERSIZE_PARMNUM=561; +const SV_CONNECTIONLESSAUTODISC_PARMNUM=562; +const SV_SHARINGVIOLATIONRETRIES_PARMNUM=563; +const SV_SHARINGVIOLATIONDELAY_PARMNUM=564; +const SV_MAXGLOBALOPENSEARCH_PARMNUM=565; +const SV_REMOVEDUPLICATESEARCHES_PARMNUM=566; +const SV_LOCKVIOLATIONRETRIES_PARMNUM=567; +const SV_LOCKVIOLATIONOFFSET_PARMNUM=568; +const SV_LOCKVIOLATIONDELAY_PARMNUM=569; +const SV_MDLREADSWITCHOVER_PARMNUM=570; +const SV_CACHEDOPENLIMIT_PARMNUM=571; +const SV_CRITICALTHREADS_PARMNUM=572; +const SV_RESTRICTNULLSESSACCESS_PARMNUM=573; +const SV_ENABLEWFW311DIRECTIPX_PARMNUM=574; +const SV_OTHERQUEUEAFFINITY_PARMNUM=575; +const SV_QUEUESAMPLESECS_PARMNUM=576; +const SV_BALANCECOUNT_PARMNUM=577; +const SV_PREFERREDAFFINITY_PARMNUM=578; +const SV_MAXFREERFCBS_PARMNUM=579; +const SV_MAXFREEMFCBS_PARMNUM=580; +const SV_MAXFREELFCBS_PARMNUM=581; +const SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM=582; +const SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM=583; +const SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM=584; +const SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM=585; +const SV_MAXTHREADSPERQUEUE_PARMNUM=586; +const SV_COMMENT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM); +const SV_USERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM); +const SV_DISC_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM); +const SV_HIDDEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM); +const SV_ANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM); +const SV_ANNDELTA_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM); +const SV_SESSOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM); +const SV_SESSVCS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM); +const SV_OPENSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM); +const SV_MAXWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM); +const SV_MAXRAWBUFLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM); +const SV_SESSUSERS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM); +const SV_SESSCONNS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM); +const SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM); +const SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM); +const SV_ENABLESOFTCOMPAT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM); +const SV_ENABLEFORCEDLOGOFF_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM); +const SV_TIMESOURCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM); +const SV_LMANNOUNCE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM); +const SV_MAXCOPYREADLEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM); +const SV_MAXCOPYWRITELEN_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM); +const SV_MINKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM); +const SV_MAXKEEPSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM); +const SV_MINKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM); +const SV_MAXKEEPCOMPLSEARCH_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM); +const SV_SCAVTIMEOUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM); +const SV_MINRCVQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM); +const SV_MINFREEWORKITEMS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM); +const SV_MAXMPXCT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM); +const SV_OPLOCKBREAKWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM); +const SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM); +const SV_ENABLEOPLOCKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM); +const SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM); +const SV_ENABLEFCBOPENS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM); +const SV_ENABLERAW_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM); +const SV_ENABLESHAREDNETDRIVES_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM); +const SV_MINFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM); +const SV_MAXFREECONNECTIONS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM); +const SV_INITSESSTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM); +const SV_INITCONNTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM); +const SV_INITFILETABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM); +const SV_INITSEARCHTABLE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM); +const SV_ALERTSCHEDULE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM); +const SV_ERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM); +const SV_NETWORKERRORTHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM); +const SV_DISKSPACETHRESHOLD_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM); +const SV_MAXLINKDELAY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM); +const SV_MINLINKTHROUGHPUT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM); +const SV_LINKINFOVALIDTIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM); +const SV_SCAVQOSINFOUPDATETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM); +const SV_MAXWORKITEMIDLETIME_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM); +const SV_MAXRAWWORKITEMS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM); +const SV_PRODUCTTYPE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM); +const SV_SERVERSIZE_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM); +const SV_CONNECTIONLESSAUTODISC_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM); +const SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM); +const SV_SHARINGVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM); +const SV_MAXGLOBALOPENSEARCH_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM); +const SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM); +const SV_LOCKVIOLATIONRETRIES_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM); +const SV_LOCKVIOLATIONOFFSET_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM); +const SV_LOCKVIOLATIONDELAY_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM); +const SV_MDLREADSWITCHOVER_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM); +const SV_CACHEDOPENLIMIT_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM); +const SV_CRITICALTHREADS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM); +const SV_RESTRICTNULLSESSACCESS_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM); +const SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL=(PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM); +const SV_OTHERQUEUEAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM); +const SV_QUEUESAMPLESECS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM); +const SV_BALANCECOUNT_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM); +const SV_PREFERREDAFFINITY_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM); +const SV_MAXFREERFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM); +const SV_MAXFREEMFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM); +const SV_MAXFREELFCBS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM); +const SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM); +const SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM); +const SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM); +const SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM); +const SV_MAXTHREADSPERQUEUE_INFOLEVEL=(PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM); Index: src/win32/lmshare.d ================================================================== --- src/win32/lmshare.d +++ src/win32/lmshare.d @@ -1,204 +1,197 @@ -/***********************************************************************\ -* lmshare.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmshare; - -import win32.lmcons; -private import win32.w32api, win32.windef; - -static if (_WIN32_WINNT_ONLY) { - pragma(lib, "netapi.lib"); -} -/* else { -// only for WinME, 98, 95. - pragma(lib, "svrapi.lib") -} -*/ - -const SHARE_NETNAME_PARMNUM = 1; -const SHARE_TYPE_PARMNUM = 3; -const SHARE_REMARK_PARMNUM = 4; -const SHARE_PERMISSIONS_PARMNUM = 5; -const SHARE_MAX_USES_PARMNUM = 6; -const SHARE_CURRENT_USES_PARMNUM = 7; -const SHARE_PATH_PARMNUM = 8; -const SHARE_PASSWD_PARMNUM = 9; -const SHARE_FILE_SD_PARMNUM = 501; -const SHARE_REMARK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; -const SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; -const SHARE_FILE_SD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; - -const SHI1_NUM_ELEMENTS = 4; -const SHI2_NUM_ELEMENTS = 10; - -const STYPE_DISKTREE = 0; -const STYPE_PRINTQ = 1; -const STYPE_DEVICE = 2; -const STYPE_IPC = 3; -const STYPE_DFS = 100; -const STYPE_SPECIAL = 0x80000000; - -const DWORD SHI_USES_UNLIMITED = -1; - -const SESS_GUEST = 1; -const SESS_NOENCRYPTION = 2; -const SESI1_NUM_ELEMENTS = 8; -const SESI2_NUM_ELEMENTS = 9; - -const PERM_FILE_READ = 1; -const PERM_FILE_WRITE = 2; -const PERM_FILE_CREATE = 4; - -struct FILE_INFO_2 { - DWORD fi2_id; -} -alias FILE_INFO_2* PFILE_INFO_2, LPFILE_INFO_2; - -struct FILE_INFO_3 { - DWORD fi3_id; - DWORD fi3_permissions; - DWORD fi3_num_locks; - LPTSTR fi3_pathname; - LPTSTR fi3_username; -} -alias FILE_INFO_3* PFILE_INFO_3, LPFILE_INFO_3; - -struct SHARE_INFO_0 { - LPTSTR shi0_netname; -} -alias SHARE_INFO_0* PSHARE_INFO_0, LPSHARE_INFO_0; - -struct SHARE_INFO_1 { - LPTSTR shi1_netname; - DWORD shi1_type; - LPTSTR shi1_remark; -} -alias SHARE_INFO_1* PSHARE_INFO_1, LPSHARE_INFO_1; - -struct SHARE_INFO_2 { - LPTSTR shi2_netname; - DWORD shi2_type; - LPTSTR shi2_remark; - DWORD shi2_permissions; - DWORD shi2_max_uses; - DWORD shi2_current_uses; - LPTSTR shi2_path; - LPTSTR shi2_passwd; -} -alias SHARE_INFO_2* PSHARE_INFO_2, LPSHARE_INFO_2; - -struct SHARE_INFO_502 { - LPTSTR shi502_netname; - DWORD shi502_type; - LPTSTR shi502_remark; - DWORD shi502_permissions; - DWORD shi502_max_uses; - DWORD shi502_current_uses; - LPTSTR shi502_path; - LPTSTR shi502_passwd; - DWORD shi502_reserved; - PSECURITY_DESCRIPTOR shi502_security_descriptor; -} -alias SHARE_INFO_502* PSHARE_INFO_502, LPSHARE_INFO_502; - -struct SHARE_INFO_1004 { - LPTSTR shi1004_remark; -} -alias SHARE_INFO_1004* PSHARE_INFO_1004, LPSHARE_INFO_1004; - -struct SHARE_INFO_1006 { - DWORD shi1006_max_uses; -} -alias SHARE_INFO_1006* PSHARE_INFO_1006, LPSHARE_INFO_1006; - -struct SHARE_INFO_1501 { - DWORD shi1501_reserved; - PSECURITY_DESCRIPTOR shi1501_security_descriptor; -} -alias SHARE_INFO_1501* PSHARE_INFO_1501, LPSHARE_INFO_1501; - -struct SESSION_INFO_0 { - LPWSTR sesi0_cname; -} -alias SESSION_INFO_0* PSESSION_INFO_0, LPSESSION_INFO_0; - -struct SESSION_INFO_1 { - LPTSTR sesi1_cname; - LPTSTR sesi1_username; - DWORD sesi1_num_opens; - DWORD sesi1_time; - DWORD sesi1_idle_time; - DWORD sesi1_user_flags; -} -alias SESSION_INFO_1* PSESSION_INFO_1, LPSESSION_INFO_1; - -struct SESSION_INFO_2 { - LPTSTR sesi2_cname; - LPTSTR sesi2_username; - DWORD sesi2_num_opens; - DWORD sesi2_time; - DWORD sesi2_idle_time; - DWORD sesi2_user_flags; - LPWSTR sesi2_cltype_name; -} -alias SESSION_INFO_2* PSESSION_INFO_2, LPSESSION_INFO_2; - -struct SESSION_INFO_10 { - LPWSTR sesi10_cname; - LPWSTR sesi10_username; - DWORD sesi10_time; - DWORD sesi10_idle_time; -} -alias SESSION_INFO_10* PSESSION_INFO_10, LPSESSION_INFO_10; - -struct SESSION_INFO_502 { - LPWSTR sesi502_cname; - LPWSTR sesi502_username; - DWORD sesi502_num_opens; - DWORD sesi502_time; - DWORD sesi502_idle_time; - DWORD sesi502_user_flags; - LPWSTR sesi502_cltype_name; - LPWSTR sesi502_transport; -} -alias SESSION_INFO_502* PSESSION_INFO_502, LPSESSION_INFO_502; - -struct CONNECTION_INFO_0 { - DWORD coni0_id; -} -alias CONNECTION_INFO_0* PCONNECTION_INFO_0, LPCONNECTION_INFO_0; - -struct CONNECTION_INFO_1 { - DWORD coni1_id; - DWORD coni1_type; - DWORD coni1_num_opens; - DWORD coni1_num_users; - DWORD coni1_time; - LPWSTR coni1_username; - LPWSTR coni1_netname; -} -alias CONNECTION_INFO_1* PCONNECTION_INFO_1, LPCONNECTION_INFO_1; - -extern (Windows) { -NET_API_STATUS NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle); -NET_API_STATUS NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetShareDel(LPWSTR,LPWSTR,DWORD); -NET_API_STATUS NetShareDelSticky(LPWSTR,LPWSTR,DWORD); -NET_API_STATUS NetShareCheck(LPWSTR,LPWSTR,PDWORD); -NET_API_STATUS NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetSessionDel(LPWSTR,LPWSTR,LPWSTR); -NET_API_STATUS NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetFileClose(LPWSTR,DWORD); -NET_API_STATUS NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*); +/***********************************************************************\ +* lmshare.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmshare; +pragma(lib, "netapi"); + +import win32.lmcons; +private import win32.w32api, win32.windef; + + +const SHARE_NETNAME_PARMNUM = 1; +const SHARE_TYPE_PARMNUM = 3; +const SHARE_REMARK_PARMNUM = 4; +const SHARE_PERMISSIONS_PARMNUM = 5; +const SHARE_MAX_USES_PARMNUM = 6; +const SHARE_CURRENT_USES_PARMNUM = 7; +const SHARE_PATH_PARMNUM = 8; +const SHARE_PASSWD_PARMNUM = 9; +const SHARE_FILE_SD_PARMNUM = 501; +const SHARE_REMARK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; +const SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; +const SHARE_FILE_SD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; + +const SHI1_NUM_ELEMENTS = 4; +const SHI2_NUM_ELEMENTS = 10; + +const STYPE_DISKTREE = 0; +const STYPE_PRINTQ = 1; +const STYPE_DEVICE = 2; +const STYPE_IPC = 3; +const STYPE_DFS = 100; +const STYPE_SPECIAL = 0x80000000; + +const DWORD SHI_USES_UNLIMITED = -1; + +const SESS_GUEST = 1; +const SESS_NOENCRYPTION = 2; +const SESI1_NUM_ELEMENTS = 8; +const SESI2_NUM_ELEMENTS = 9; + +const PERM_FILE_READ = 1; +const PERM_FILE_WRITE = 2; +const PERM_FILE_CREATE = 4; + +struct FILE_INFO_2 { + DWORD fi2_id; +} +alias FILE_INFO_2* PFILE_INFO_2, LPFILE_INFO_2; + +struct FILE_INFO_3 { + DWORD fi3_id; + DWORD fi3_permissions; + DWORD fi3_num_locks; + LPTSTR fi3_pathname; + LPTSTR fi3_username; +} +alias FILE_INFO_3* PFILE_INFO_3, LPFILE_INFO_3; + +struct SHARE_INFO_0 { + LPTSTR shi0_netname; +} +alias SHARE_INFO_0* PSHARE_INFO_0, LPSHARE_INFO_0; + +struct SHARE_INFO_1 { + LPTSTR shi1_netname; + DWORD shi1_type; + LPTSTR shi1_remark; +} +alias SHARE_INFO_1* PSHARE_INFO_1, LPSHARE_INFO_1; + +struct SHARE_INFO_2 { + LPTSTR shi2_netname; + DWORD shi2_type; + LPTSTR shi2_remark; + DWORD shi2_permissions; + DWORD shi2_max_uses; + DWORD shi2_current_uses; + LPTSTR shi2_path; + LPTSTR shi2_passwd; +} +alias SHARE_INFO_2* PSHARE_INFO_2, LPSHARE_INFO_2; + +struct SHARE_INFO_502 { + LPTSTR shi502_netname; + DWORD shi502_type; + LPTSTR shi502_remark; + DWORD shi502_permissions; + DWORD shi502_max_uses; + DWORD shi502_current_uses; + LPTSTR shi502_path; + LPTSTR shi502_passwd; + DWORD shi502_reserved; + PSECURITY_DESCRIPTOR shi502_security_descriptor; +} +alias SHARE_INFO_502* PSHARE_INFO_502, LPSHARE_INFO_502; + +struct SHARE_INFO_1004 { + LPTSTR shi1004_remark; +} +alias SHARE_INFO_1004* PSHARE_INFO_1004, LPSHARE_INFO_1004; + +struct SHARE_INFO_1006 { + DWORD shi1006_max_uses; +} +alias SHARE_INFO_1006* PSHARE_INFO_1006, LPSHARE_INFO_1006; + +struct SHARE_INFO_1501 { + DWORD shi1501_reserved; + PSECURITY_DESCRIPTOR shi1501_security_descriptor; +} +alias SHARE_INFO_1501* PSHARE_INFO_1501, LPSHARE_INFO_1501; + +struct SESSION_INFO_0 { + LPWSTR sesi0_cname; +} +alias SESSION_INFO_0* PSESSION_INFO_0, LPSESSION_INFO_0; + +struct SESSION_INFO_1 { + LPTSTR sesi1_cname; + LPTSTR sesi1_username; + DWORD sesi1_num_opens; + DWORD sesi1_time; + DWORD sesi1_idle_time; + DWORD sesi1_user_flags; +} +alias SESSION_INFO_1* PSESSION_INFO_1, LPSESSION_INFO_1; + +struct SESSION_INFO_2 { + LPTSTR sesi2_cname; + LPTSTR sesi2_username; + DWORD sesi2_num_opens; + DWORD sesi2_time; + DWORD sesi2_idle_time; + DWORD sesi2_user_flags; + LPWSTR sesi2_cltype_name; +} +alias SESSION_INFO_2* PSESSION_INFO_2, LPSESSION_INFO_2; + +struct SESSION_INFO_10 { + LPWSTR sesi10_cname; + LPWSTR sesi10_username; + DWORD sesi10_time; + DWORD sesi10_idle_time; +} +alias SESSION_INFO_10* PSESSION_INFO_10, LPSESSION_INFO_10; + +struct SESSION_INFO_502 { + LPWSTR sesi502_cname; + LPWSTR sesi502_username; + DWORD sesi502_num_opens; + DWORD sesi502_time; + DWORD sesi502_idle_time; + DWORD sesi502_user_flags; + LPWSTR sesi502_cltype_name; + LPWSTR sesi502_transport; +} +alias SESSION_INFO_502* PSESSION_INFO_502, LPSESSION_INFO_502; + +struct CONNECTION_INFO_0 { + DWORD coni0_id; +} +alias CONNECTION_INFO_0* PCONNECTION_INFO_0, LPCONNECTION_INFO_0; + +struct CONNECTION_INFO_1 { + DWORD coni1_id; + DWORD coni1_type; + DWORD coni1_num_opens; + DWORD coni1_num_users; + DWORD coni1_time; + LPWSTR coni1_username; + LPWSTR coni1_netname; +} +alias CONNECTION_INFO_1* PCONNECTION_INFO_1, LPCONNECTION_INFO_1; + +extern (Windows) { +NET_API_STATUS NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle); +NET_API_STATUS NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetShareDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetShareDelSticky(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetShareCheck(LPWSTR,LPWSTR,PDWORD); +NET_API_STATUS NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetSessionDel(LPWSTR,LPWSTR,LPWSTR); +NET_API_STATUS NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetFileClose(LPWSTR,DWORD); +NET_API_STATUS NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*); } Index: src/win32/lmsname.d ================================================================== --- src/win32/lmsname.d +++ src/win32/lmsname.d @@ -1,65 +1,65 @@ -/***********************************************************************\ -* lmsname.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmsname; - -private import win32.windef; - -const TCHAR[] - SERVICE_WORKSTATION = "LanmanWorkstation", - SERVICE_LM20_WORKSTATION = "WORKSTATION", - WORKSTATION_DISPLAY_NAME = "Workstation", - SERVICE_SERVER = "LanmanServer", - SERVICE_LM20_SERVER = "SERVER", - SERVER_DISPLAY_NAME = "Server", - SERVICE_BROWSER = "BROWSER", - SERVICE_LM20_BROWSER = SERVICE_BROWSER, - SERVICE_MESSENGER = "MESSENGER", - SERVICE_LM20_MESSENGER = SERVICE_MESSENGER, - SERVICE_NETRUN = "NETRUN", - SERVICE_LM20_NETRUN = SERVICE_NETRUN, - SERVICE_SPOOLER = "SPOOLER", - SERVICE_LM20_SPOOLER = SERVICE_SPOOLER, - SERVICE_ALERTER = "ALERTER", - SERVICE_LM20_ALERTER = SERVICE_ALERTER, - SERVICE_NETLOGON = "NETLOGON", - SERVICE_LM20_NETLOGON = SERVICE_NETLOGON, - SERVICE_NETPOPUP = "NETPOPUP", - SERVICE_LM20_NETPOPUP = SERVICE_NETPOPUP, - SERVICE_SQLSERVER = "SQLSERVER", - SERVICE_LM20_SQLSERVER = SERVICE_SQLSERVER, - SERVICE_REPL = "REPLICATOR", - SERVICE_LM20_REPL = SERVICE_REPL, - SERVICE_RIPL = "REMOTEBOOT", - SERVICE_LM20_RIPL = SERVICE_RIPL, - SERVICE_TIMESOURCE = "TIMESOURCE", - SERVICE_LM20_TIMESOURCE = SERVICE_TIMESOURCE, - SERVICE_AFP = "AFP", - SERVICE_LM20_AFP = SERVICE_AFP, - SERVICE_UPS = "UPS", - SERVICE_LM20_UPS = SERVICE_UPS, - SERVICE_XACTSRV = "XACTSRV", - SERVICE_LM20_XACTSRV = SERVICE_XACTSRV, - SERVICE_TCPIP = "TCPIP", - SERVICE_LM20_TCPIP = SERVICE_TCPIP, - SERVICE_NBT = "NBT", - SERVICE_LM20_NBT = SERVICE_NBT, - SERVICE_LMHOSTS = "LMHOSTS", - SERVICE_LM20_LMHOSTS = SERVICE_LMHOSTS, - SERVICE_TELNET = "Telnet", - SERVICE_LM20_TELNET = SERVICE_TELNET, - SERVICE_SCHEDULE = "Schedule", - SERVICE_LM20_SCHEDULE = SERVICE_SCHEDULE, - SERVICE_NTLMSSP = "NtLmSsp", - SERVICE_DHCP = "DHCP", - SERVICE_LM20_DHCP = SERVICE_DHCP, - SERVICE_NWSAP = "NwSapAgent", - SERVICE_LM20_NWSAP = SERVICE_NWSAP, - NWSAP_DISPLAY_NAME = "NW Sap Agent", - SERVICE_NWCS = "NWCWorkstation"; +/***********************************************************************\ +* lmsname.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmsname; + +private import win32.windef; + +const TCHAR[] + SERVICE_WORKSTATION = "LanmanWorkstation", + SERVICE_LM20_WORKSTATION = "WORKSTATION", + WORKSTATION_DISPLAY_NAME = "Workstation", + SERVICE_SERVER = "LanmanServer", + SERVICE_LM20_SERVER = "SERVER", + SERVER_DISPLAY_NAME = "Server", + SERVICE_BROWSER = "BROWSER", + SERVICE_LM20_BROWSER = SERVICE_BROWSER, + SERVICE_MESSENGER = "MESSENGER", + SERVICE_LM20_MESSENGER = SERVICE_MESSENGER, + SERVICE_NETRUN = "NETRUN", + SERVICE_LM20_NETRUN = SERVICE_NETRUN, + SERVICE_SPOOLER = "SPOOLER", + SERVICE_LM20_SPOOLER = SERVICE_SPOOLER, + SERVICE_ALERTER = "ALERTER", + SERVICE_LM20_ALERTER = SERVICE_ALERTER, + SERVICE_NETLOGON = "NETLOGON", + SERVICE_LM20_NETLOGON = SERVICE_NETLOGON, + SERVICE_NETPOPUP = "NETPOPUP", + SERVICE_LM20_NETPOPUP = SERVICE_NETPOPUP, + SERVICE_SQLSERVER = "SQLSERVER", + SERVICE_LM20_SQLSERVER = SERVICE_SQLSERVER, + SERVICE_REPL = "REPLICATOR", + SERVICE_LM20_REPL = SERVICE_REPL, + SERVICE_RIPL = "REMOTEBOOT", + SERVICE_LM20_RIPL = SERVICE_RIPL, + SERVICE_TIMESOURCE = "TIMESOURCE", + SERVICE_LM20_TIMESOURCE = SERVICE_TIMESOURCE, + SERVICE_AFP = "AFP", + SERVICE_LM20_AFP = SERVICE_AFP, + SERVICE_UPS = "UPS", + SERVICE_LM20_UPS = SERVICE_UPS, + SERVICE_XACTSRV = "XACTSRV", + SERVICE_LM20_XACTSRV = SERVICE_XACTSRV, + SERVICE_TCPIP = "TCPIP", + SERVICE_LM20_TCPIP = SERVICE_TCPIP, + SERVICE_NBT = "NBT", + SERVICE_LM20_NBT = SERVICE_NBT, + SERVICE_LMHOSTS = "LMHOSTS", + SERVICE_LM20_LMHOSTS = SERVICE_LMHOSTS, + SERVICE_TELNET = "Telnet", + SERVICE_LM20_TELNET = SERVICE_TELNET, + SERVICE_SCHEDULE = "Schedule", + SERVICE_LM20_SCHEDULE = SERVICE_SCHEDULE, + SERVICE_NTLMSSP = "NtLmSsp", + SERVICE_DHCP = "DHCP", + SERVICE_LM20_DHCP = SERVICE_DHCP, + SERVICE_NWSAP = "NwSapAgent", + SERVICE_LM20_NWSAP = SERVICE_NWSAP, + NWSAP_DISPLAY_NAME = "NW Sap Agent", + SERVICE_NWCS = "NWCWorkstation"; Index: src/win32/lmstats.d ================================================================== --- src/win32/lmstats.d +++ src/win32/lmstats.d @@ -1,121 +1,121 @@ -/***********************************************************************\ -* lmstats.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmstats; -pragma(lib, "netapi32.lib"); - -private import win32.lmcons, win32.windef; - -const ULONG - STATSOPT_CLR = 1, - STATS_NO_VALUE = -1, - STATS_OVERFLOW = -2; - -struct STAT_SERVER_0{ - DWORD sts0_start; - DWORD sts0_fopens; - DWORD sts0_devopens; - DWORD sts0_jobsqueued; - DWORD sts0_sopens; - DWORD sts0_stimedout; - DWORD sts0_serrorout; - DWORD sts0_pwerrors; - DWORD sts0_permerrors; - DWORD sts0_syserrors; - DWORD sts0_bytessent_low; - DWORD sts0_bytessent_high; - DWORD sts0_bytesrcvd_low; - DWORD sts0_bytesrcvd_high; - DWORD sts0_avresponse; - DWORD sts0_reqbufneed; - DWORD sts0_bigbufneed; -} -alias STAT_SERVER_0* PSTAT_SERVER_0, LPSTAT_SERVER_0; - -// #ifdef LM20_WORKSTATION_STATISTICS -// typedef struct _STAT_WORKSTATION_0 { -// DWORD stw0_start; -// DWORD stw0_numNCB_r; -// DWORD stw0_numNCB_s; -// DWORD stw0_numNCB_a; -// DWORD stw0_fiNCB_r; -// DWORD stw0_fiNCB_s; -// DWORD stw0_fiNCB_a; -// DWORD stw0_fcNCB_r; -// DWORD stw0_fcNCB_s; -// DWORD stw0_fcNCB_a; -// DWORD stw0_sesstart; -// DWORD stw0_sessfailcon; -// DWORD stw0_sessbroke; -// DWORD stw0_uses; -// DWORD stw0_usefail; -// DWORD stw0_autorec; -// DWORD stw0_bytessent_r_lo; -// DWORD stw0_bytessent_r_hi; -// DWORD stw0_bytesrcvd_r_lo; -// DWORD stw0_bytesrcvd_r_hi; -// DWORD stw0_bytessent_s_lo; -// DWORD stw0_bytessent_s_hi; -// DWORD stw0_bytesrcvd_s_lo; -// DWORD stw0_bytesrcvd_s_hi; -// DWORD stw0_bytessent_a_lo; -// DWORD stw0_bytessent_a_hi; -// DWORD stw0_bytesrcvd_a_lo; -// DWORD stw0_bytesrcvd_a_hi; -// DWORD stw0_reqbufneed; -// DWORD stw0_bigbufneed; -// } STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0; -// #else - -struct STAT_WORKSTATION_0{ - LARGE_INTEGER StatisticsStartTime; - LARGE_INTEGER BytesReceived; - LARGE_INTEGER SmbsReceived; - LARGE_INTEGER PagingReadBytesRequested; - LARGE_INTEGER NonPagingReadBytesRequested; - LARGE_INTEGER CacheReadBytesRequested; - LARGE_INTEGER NetworkReadBytesRequested; - LARGE_INTEGER BytesTransmitted; - LARGE_INTEGER SmbsTransmitted; - LARGE_INTEGER PagingWriteBytesRequested; - LARGE_INTEGER NonPagingWriteBytesRequested; - LARGE_INTEGER CacheWriteBytesRequested; - LARGE_INTEGER NetworkWriteBytesRequested; - DWORD InitiallyFailedOperations; - DWORD FailedCompletionOperations; - DWORD ReadOperations; - DWORD RandomReadOperations; - DWORD ReadSmbs; - DWORD LargeReadSmbs; - DWORD SmallReadSmbs; - DWORD WriteOperations; - DWORD RandomWriteOperations; - DWORD WriteSmbs; - DWORD LargeWriteSmbs; - DWORD SmallWriteSmbs; - DWORD RawReadsDenied; - DWORD RawWritesDenied; - DWORD NetworkErrors; - DWORD Sessions; - DWORD FailedSessions; - DWORD Reconnects; - DWORD CoreConnects; - DWORD Lanman20Connects; - DWORD Lanman21Connects; - DWORD LanmanNtConnects; - DWORD ServerDisconnects; - DWORD HungSessions; - DWORD UseCount; - DWORD FailedUseCount; - DWORD CurrentCommands; -} -alias STAT_WORKSTATION_0* PSTAT_WORKSTATION_0, LPSTAT_WORKSTATION_0; - -extern (Windows): -NET_API_STATUS NetStatisticsGet(LPWSTR,LPWSTR,DWORD,DWORD,PBYTE*); +/***********************************************************************\ +* lmstats.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmstats; +pragma(lib, "netapi32"); + +private import win32.lmcons, win32.windef; + +const ULONG + STATSOPT_CLR = 1, + STATS_NO_VALUE = -1, + STATS_OVERFLOW = -2; + +struct STAT_SERVER_0{ + DWORD sts0_start; + DWORD sts0_fopens; + DWORD sts0_devopens; + DWORD sts0_jobsqueued; + DWORD sts0_sopens; + DWORD sts0_stimedout; + DWORD sts0_serrorout; + DWORD sts0_pwerrors; + DWORD sts0_permerrors; + DWORD sts0_syserrors; + DWORD sts0_bytessent_low; + DWORD sts0_bytessent_high; + DWORD sts0_bytesrcvd_low; + DWORD sts0_bytesrcvd_high; + DWORD sts0_avresponse; + DWORD sts0_reqbufneed; + DWORD sts0_bigbufneed; +} +alias STAT_SERVER_0* PSTAT_SERVER_0, LPSTAT_SERVER_0; + +// #ifdef LM20_WORKSTATION_STATISTICS +// typedef struct _STAT_WORKSTATION_0 { +// DWORD stw0_start; +// DWORD stw0_numNCB_r; +// DWORD stw0_numNCB_s; +// DWORD stw0_numNCB_a; +// DWORD stw0_fiNCB_r; +// DWORD stw0_fiNCB_s; +// DWORD stw0_fiNCB_a; +// DWORD stw0_fcNCB_r; +// DWORD stw0_fcNCB_s; +// DWORD stw0_fcNCB_a; +// DWORD stw0_sesstart; +// DWORD stw0_sessfailcon; +// DWORD stw0_sessbroke; +// DWORD stw0_uses; +// DWORD stw0_usefail; +// DWORD stw0_autorec; +// DWORD stw0_bytessent_r_lo; +// DWORD stw0_bytessent_r_hi; +// DWORD stw0_bytesrcvd_r_lo; +// DWORD stw0_bytesrcvd_r_hi; +// DWORD stw0_bytessent_s_lo; +// DWORD stw0_bytessent_s_hi; +// DWORD stw0_bytesrcvd_s_lo; +// DWORD stw0_bytesrcvd_s_hi; +// DWORD stw0_bytessent_a_lo; +// DWORD stw0_bytessent_a_hi; +// DWORD stw0_bytesrcvd_a_lo; +// DWORD stw0_bytesrcvd_a_hi; +// DWORD stw0_reqbufneed; +// DWORD stw0_bigbufneed; +// } STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0; +// #else + +struct STAT_WORKSTATION_0{ + LARGE_INTEGER StatisticsStartTime; + LARGE_INTEGER BytesReceived; + LARGE_INTEGER SmbsReceived; + LARGE_INTEGER PagingReadBytesRequested; + LARGE_INTEGER NonPagingReadBytesRequested; + LARGE_INTEGER CacheReadBytesRequested; + LARGE_INTEGER NetworkReadBytesRequested; + LARGE_INTEGER BytesTransmitted; + LARGE_INTEGER SmbsTransmitted; + LARGE_INTEGER PagingWriteBytesRequested; + LARGE_INTEGER NonPagingWriteBytesRequested; + LARGE_INTEGER CacheWriteBytesRequested; + LARGE_INTEGER NetworkWriteBytesRequested; + DWORD InitiallyFailedOperations; + DWORD FailedCompletionOperations; + DWORD ReadOperations; + DWORD RandomReadOperations; + DWORD ReadSmbs; + DWORD LargeReadSmbs; + DWORD SmallReadSmbs; + DWORD WriteOperations; + DWORD RandomWriteOperations; + DWORD WriteSmbs; + DWORD LargeWriteSmbs; + DWORD SmallWriteSmbs; + DWORD RawReadsDenied; + DWORD RawWritesDenied; + DWORD NetworkErrors; + DWORD Sessions; + DWORD FailedSessions; + DWORD Reconnects; + DWORD CoreConnects; + DWORD Lanman20Connects; + DWORD Lanman21Connects; + DWORD LanmanNtConnects; + DWORD ServerDisconnects; + DWORD HungSessions; + DWORD UseCount; + DWORD FailedUseCount; + DWORD CurrentCommands; +} +alias STAT_WORKSTATION_0* PSTAT_WORKSTATION_0, LPSTAT_WORKSTATION_0; + +extern (Windows): +NET_API_STATUS NetStatisticsGet(LPWSTR,LPWSTR,DWORD,DWORD,PBYTE*); Index: src/win32/lmsvc.d ================================================================== --- src/win32/lmsvc.d +++ src/win32/lmsvc.d @@ -1,156 +1,156 @@ -/***********************************************************************\ -* lmsvc.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmsvc; - -// FIXME: Is this file deprecated? All of the functions are only for Win16. -/** - Changes relative to MinGW: - lmsname is not imported publicly (instead, win32.lm imports it directly). -*/ -// TODO: 5 macros - -private import win32.lmcons, win32.lmsname, win32.windef; - -const TCHAR[] SERVICE_DOS_ENCRYPTION = "ENCRYPT"; - -const SERVICE_UNINSTALLED=0; -const SERVICE_INSTALL_PENDING=1; -const SERVICE_UNINSTALL_PENDING=2; -const SERVICE_INSTALLED=3; -const SERVICE_INSTALL_STATE=3; -const SERVICE_PAUSE_STATE=18; -const LM20_SERVICE_ACTIVE=0; -const LM20_SERVICE_CONTINUE_PENDING=4; -const LM20_SERVICE_PAUSE_PENDING=8; -const LM20_SERVICE_PAUSED=18; -const SERVICE_NOT_UNINSTALLABLE=0; -const SERVICE_UNINSTALLABLE=16; -const SERVICE_NOT_PAUSABLE=0; -const SERVICE_PAUSABLE=32; -const SERVICE_REDIR_PAUSED=0x700; -const SERVICE_REDIR_DISK_PAUSED=256; -const SERVICE_REDIR_PRINT_PAUSED=512; -const SERVICE_REDIR_COMM_PAUSED=1024; -const SERVICE_CTRL_INTERROGATE=0; -const SERVICE_CTRL_PAUSE=1; -const SERVICE_CTRL_CONTINUE=2; -const SERVICE_CTRL_UNINSTALL=3; -const SERVICE_CTRL_REDIR_DISK=1; -const SERVICE_CTRL_REDIR_PRINT=2; -const SERVICE_CTRL_REDIR_COMM=4; -const SERVICE_IP_NO_HINT=0; -const SERVICE_CCP_NO_HINT=0; -const SERVICE_IP_QUERY_HINT=0x10000; -const SERVICE_CCP_QUERY_HINT=0x10000; -const SERVICE_IP_CHKPT_NUM=255; -const SERVICE_CCP_CHKPT_NUM=255; -const SERVICE_IP_WAIT_TIME=0xFF00; -const SERVICE_CCP_WAIT_TIME=0xFF00; -const SERVICE_IP_WAITTIME_SHIFT=8; -const SERVICE_NTIP_WAITTIME_SHIFT=12; -const UPPER_HINT_MASK=0xFF00; -const LOWER_HINT_MASK=255; -const UPPER_GET_HINT_MASK=0xFF00000; -const LOWER_GET_HINT_MASK=0xFF00; -const SERVICE_NT_MAXTIME=0xFFFF; -const SERVICE_RESRV_MASK=0x1FFFF; -const SERVICE_MAXTIME=255; -const SERVICE_BASE=3050; -const SERVICE_UIC_NORMAL=0; - -const SERVICE_UIC_BADPARMVAL = SERVICE_BASE+1; -const SERVICE_UIC_MISSPARM = SERVICE_BASE+2; -const SERVICE_UIC_UNKPARM = SERVICE_BASE+3; -const SERVICE_UIC_RESOURCE = SERVICE_BASE+4; -const SERVICE_UIC_CONFIG = SERVICE_BASE+5; -const SERVICE_UIC_SYSTEM = SERVICE_BASE+6; -const SERVICE_UIC_INTERNAL = SERVICE_BASE+7; -const SERVICE_UIC_AMBIGPARM = SERVICE_BASE+8; -const SERVICE_UIC_DUPPARM = SERVICE_BASE+9; -const SERVICE_UIC_KILL = SERVICE_BASE+10; -const SERVICE_UIC_EXEC = SERVICE_BASE+11; -const SERVICE_UIC_SUBSERV = SERVICE_BASE+12; -const SERVICE_UIC_CONFLPARM = SERVICE_BASE+13; -const SERVICE_UIC_FILE = SERVICE_BASE+14; -const SERVICE_UIC_M_NULL=0; -const SERVICE_UIC_M_MEMORY = SERVICE_BASE+20; -const SERVICE_UIC_M_DISK = SERVICE_BASE+21; -const SERVICE_UIC_M_THREADS = SERVICE_BASE+22; -const SERVICE_UIC_M_PROCESSES = SERVICE_BASE+23; -const SERVICE_UIC_M_SECURITY = SERVICE_BASE+24; -const SERVICE_UIC_M_LANROOT = SERVICE_BASE+25; -const SERVICE_UIC_M_REDIR = SERVICE_BASE+26; -const SERVICE_UIC_M_SERVER = SERVICE_BASE+27; -const SERVICE_UIC_M_SEC_FILE_ERR = SERVICE_BASE+28; -const SERVICE_UIC_M_FILES = SERVICE_BASE+29; -const SERVICE_UIC_M_LOGS = SERVICE_BASE+30; -const SERVICE_UIC_M_LANGROUP = SERVICE_BASE+31; -const SERVICE_UIC_M_MSGNAME = SERVICE_BASE+32; -const SERVICE_UIC_M_ANNOUNCE = SERVICE_BASE+33; -const SERVICE_UIC_M_UAS = SERVICE_BASE+34; -const SERVICE_UIC_M_SERVER_SEC_ERR = SERVICE_BASE+35; -const SERVICE_UIC_M_WKSTA = SERVICE_BASE+37; -const SERVICE_UIC_M_ERRLOG = SERVICE_BASE+38; -const SERVICE_UIC_M_FILE_UW = SERVICE_BASE+39; -const SERVICE_UIC_M_ADDPAK = SERVICE_BASE+40; -const SERVICE_UIC_M_LAZY = SERVICE_BASE+41; -const SERVICE_UIC_M_UAS_MACHINE_ACCT = SERVICE_BASE+42; -const SERVICE_UIC_M_UAS_SERVERS_NMEMB = SERVICE_BASE+43; -const SERVICE_UIC_M_UAS_SERVERS_NOGRP = SERVICE_BASE+44; -const SERVICE_UIC_M_UAS_INVALID_ROLE = SERVICE_BASE+45; -const SERVICE_UIC_M_NETLOGON_NO_DC = SERVICE_BASE+46; -const SERVICE_UIC_M_NETLOGON_DC_CFLCT = SERVICE_BASE+47; -const SERVICE_UIC_M_NETLOGON_AUTH = SERVICE_BASE+48; -const SERVICE_UIC_M_UAS_PROLOG = SERVICE_BASE+49; -const SERVICE2_BASE=5600; -const SERVICE_UIC_M_NETLOGON_MPATH = SERVICE2_BASE+0; -const SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1; -const SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2; - -struct SERVICE_INFO_0 { - LPWSTR svci0_name; -} -alias SERVICE_INFO_0* PSERVICE_INFO_0, LPSERVICE_INFO_0; - -struct SERVICE_INFO_1 { - LPWSTR svci1_name; - DWORD svci1_status; - DWORD svci1_code; - DWORD svci1_pid; -} -alias SERVICE_INFO_1* PSERVICE_INFO_1, LPSERVICE_INFO_1; - -struct SERVICE_INFO_2 { - LPWSTR svci2_name; - DWORD svci2_status; - DWORD svci2_code; - DWORD svci2_pid; - LPWSTR svci2_text; - DWORD svci2_specific_error; - LPWSTR svci2_display_name; -} -alias SERVICE_INFO_2* PSERVICE_INFO_2, LPSERVICE_INFO_2; - -extern (Windows) { - deprecated { - NET_API_STATUS NetServiceControl(LPCWSTR, LPCWSTR, DWORD, DWORD, - PBYTE*); - NET_API_STATUS NetServiceEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, - PDWORD, PDWORD); - NET_API_STATUS NetServiceGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); - NET_API_STATUS NetServiceInstall(LPCWSTR, LPCWSTR, DWORD, LPCWSTR*, - PBYTE*); - } -} -//MACRO #define SERVICE_IP_CODE(t, n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<>SERVICE_NTIP_WAITTIME_SHIFT)|(((c)&LOWER_GET_HINT_MASK)>>SERVICE_IP_WAITTIME_SHIFT)) +/***********************************************************************\ +* lmsvc.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmsvc; + +// FIXME: Is this file deprecated? All of the functions are only for Win16. +/** + Changes relative to MinGW: + lmsname is not imported publicly (instead, win32.lm imports it directly). +*/ +// TODO: 5 macros + +private import win32.lmcons, win32.lmsname, win32.windef; + +const TCHAR[] SERVICE_DOS_ENCRYPTION = "ENCRYPT"; + +const SERVICE_UNINSTALLED=0; +const SERVICE_INSTALL_PENDING=1; +const SERVICE_UNINSTALL_PENDING=2; +const SERVICE_INSTALLED=3; +const SERVICE_INSTALL_STATE=3; +const SERVICE_PAUSE_STATE=18; +const LM20_SERVICE_ACTIVE=0; +const LM20_SERVICE_CONTINUE_PENDING=4; +const LM20_SERVICE_PAUSE_PENDING=8; +const LM20_SERVICE_PAUSED=18; +const SERVICE_NOT_UNINSTALLABLE=0; +const SERVICE_UNINSTALLABLE=16; +const SERVICE_NOT_PAUSABLE=0; +const SERVICE_PAUSABLE=32; +const SERVICE_REDIR_PAUSED=0x700; +const SERVICE_REDIR_DISK_PAUSED=256; +const SERVICE_REDIR_PRINT_PAUSED=512; +const SERVICE_REDIR_COMM_PAUSED=1024; +const SERVICE_CTRL_INTERROGATE=0; +const SERVICE_CTRL_PAUSE=1; +const SERVICE_CTRL_CONTINUE=2; +const SERVICE_CTRL_UNINSTALL=3; +const SERVICE_CTRL_REDIR_DISK=1; +const SERVICE_CTRL_REDIR_PRINT=2; +const SERVICE_CTRL_REDIR_COMM=4; +const SERVICE_IP_NO_HINT=0; +const SERVICE_CCP_NO_HINT=0; +const SERVICE_IP_QUERY_HINT=0x10000; +const SERVICE_CCP_QUERY_HINT=0x10000; +const SERVICE_IP_CHKPT_NUM=255; +const SERVICE_CCP_CHKPT_NUM=255; +const SERVICE_IP_WAIT_TIME=0xFF00; +const SERVICE_CCP_WAIT_TIME=0xFF00; +const SERVICE_IP_WAITTIME_SHIFT=8; +const SERVICE_NTIP_WAITTIME_SHIFT=12; +const UPPER_HINT_MASK=0xFF00; +const LOWER_HINT_MASK=255; +const UPPER_GET_HINT_MASK=0xFF00000; +const LOWER_GET_HINT_MASK=0xFF00; +const SERVICE_NT_MAXTIME=0xFFFF; +const SERVICE_RESRV_MASK=0x1FFFF; +const SERVICE_MAXTIME=255; +const SERVICE_BASE=3050; +const SERVICE_UIC_NORMAL=0; + +const SERVICE_UIC_BADPARMVAL = SERVICE_BASE+1; +const SERVICE_UIC_MISSPARM = SERVICE_BASE+2; +const SERVICE_UIC_UNKPARM = SERVICE_BASE+3; +const SERVICE_UIC_RESOURCE = SERVICE_BASE+4; +const SERVICE_UIC_CONFIG = SERVICE_BASE+5; +const SERVICE_UIC_SYSTEM = SERVICE_BASE+6; +const SERVICE_UIC_INTERNAL = SERVICE_BASE+7; +const SERVICE_UIC_AMBIGPARM = SERVICE_BASE+8; +const SERVICE_UIC_DUPPARM = SERVICE_BASE+9; +const SERVICE_UIC_KILL = SERVICE_BASE+10; +const SERVICE_UIC_EXEC = SERVICE_BASE+11; +const SERVICE_UIC_SUBSERV = SERVICE_BASE+12; +const SERVICE_UIC_CONFLPARM = SERVICE_BASE+13; +const SERVICE_UIC_FILE = SERVICE_BASE+14; +const SERVICE_UIC_M_NULL=0; +const SERVICE_UIC_M_MEMORY = SERVICE_BASE+20; +const SERVICE_UIC_M_DISK = SERVICE_BASE+21; +const SERVICE_UIC_M_THREADS = SERVICE_BASE+22; +const SERVICE_UIC_M_PROCESSES = SERVICE_BASE+23; +const SERVICE_UIC_M_SECURITY = SERVICE_BASE+24; +const SERVICE_UIC_M_LANROOT = SERVICE_BASE+25; +const SERVICE_UIC_M_REDIR = SERVICE_BASE+26; +const SERVICE_UIC_M_SERVER = SERVICE_BASE+27; +const SERVICE_UIC_M_SEC_FILE_ERR = SERVICE_BASE+28; +const SERVICE_UIC_M_FILES = SERVICE_BASE+29; +const SERVICE_UIC_M_LOGS = SERVICE_BASE+30; +const SERVICE_UIC_M_LANGROUP = SERVICE_BASE+31; +const SERVICE_UIC_M_MSGNAME = SERVICE_BASE+32; +const SERVICE_UIC_M_ANNOUNCE = SERVICE_BASE+33; +const SERVICE_UIC_M_UAS = SERVICE_BASE+34; +const SERVICE_UIC_M_SERVER_SEC_ERR = SERVICE_BASE+35; +const SERVICE_UIC_M_WKSTA = SERVICE_BASE+37; +const SERVICE_UIC_M_ERRLOG = SERVICE_BASE+38; +const SERVICE_UIC_M_FILE_UW = SERVICE_BASE+39; +const SERVICE_UIC_M_ADDPAK = SERVICE_BASE+40; +const SERVICE_UIC_M_LAZY = SERVICE_BASE+41; +const SERVICE_UIC_M_UAS_MACHINE_ACCT = SERVICE_BASE+42; +const SERVICE_UIC_M_UAS_SERVERS_NMEMB = SERVICE_BASE+43; +const SERVICE_UIC_M_UAS_SERVERS_NOGRP = SERVICE_BASE+44; +const SERVICE_UIC_M_UAS_INVALID_ROLE = SERVICE_BASE+45; +const SERVICE_UIC_M_NETLOGON_NO_DC = SERVICE_BASE+46; +const SERVICE_UIC_M_NETLOGON_DC_CFLCT = SERVICE_BASE+47; +const SERVICE_UIC_M_NETLOGON_AUTH = SERVICE_BASE+48; +const SERVICE_UIC_M_UAS_PROLOG = SERVICE_BASE+49; +const SERVICE2_BASE=5600; +const SERVICE_UIC_M_NETLOGON_MPATH = SERVICE2_BASE+0; +const SERVICE_UIC_M_LSA_MACHINE_ACCT = SERVICE2_BASE+1; +const SERVICE_UIC_M_DATABASE_ERROR = SERVICE2_BASE+2; + +struct SERVICE_INFO_0 { + LPWSTR svci0_name; +} +alias SERVICE_INFO_0* PSERVICE_INFO_0, LPSERVICE_INFO_0; + +struct SERVICE_INFO_1 { + LPWSTR svci1_name; + DWORD svci1_status; + DWORD svci1_code; + DWORD svci1_pid; +} +alias SERVICE_INFO_1* PSERVICE_INFO_1, LPSERVICE_INFO_1; + +struct SERVICE_INFO_2 { + LPWSTR svci2_name; + DWORD svci2_status; + DWORD svci2_code; + DWORD svci2_pid; + LPWSTR svci2_text; + DWORD svci2_specific_error; + LPWSTR svci2_display_name; +} +alias SERVICE_INFO_2* PSERVICE_INFO_2, LPSERVICE_INFO_2; + +extern (Windows) { + deprecated { + NET_API_STATUS NetServiceControl(LPCWSTR, LPCWSTR, DWORD, DWORD, + PBYTE*); + NET_API_STATUS NetServiceEnum(LPCWSTR, DWORD, PBYTE*, DWORD, PDWORD, + PDWORD, PDWORD); + NET_API_STATUS NetServiceGetInfo(LPCWSTR, LPCWSTR, DWORD, PBYTE*); + NET_API_STATUS NetServiceInstall(LPCWSTR, LPCWSTR, DWORD, LPCWSTR*, + PBYTE*); + } +} +//MACRO #define SERVICE_IP_CODE(t, n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<>SERVICE_NTIP_WAITTIME_SHIFT)|(((c)&LOWER_GET_HINT_MASK)>>SERVICE_IP_WAITTIME_SHIFT)) Index: src/win32/lmuse.d ================================================================== --- src/win32/lmuse.d +++ src/win32/lmuse.d @@ -1,80 +1,80 @@ -/***********************************************************************\ -* lmuse.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmuse; -pragma(lib, "netapi32.lib"); - -import win32.lmuseflg; -private import win32.lmcons, win32.windef; - -enum { - USE_LOCAL_PARMNUM = 1, - USE_REMOTE_PARMNUM, - USE_PASSWORD_PARMNUM, - USE_ASGTYPE_PARMNUM, - USE_USERNAME_PARMNUM, - USE_DOMAINNAME_PARMNUM -} - -enum { - USE_OK, - USE_PAUSED, - USE_SESSLOST, - USE_DISCONN = USE_SESSLOST, - USE_NETERR, - USE_CONN, - USE_RECONN -} - -const DWORD USE_WILDCARD = -1; - -enum { - USE_DISKDEV, - USE_SPOOLDEV, - USE_CHARDEV, - USE_IPC -} - -struct USE_INFO_0 { - LPWSTR ui0_local; - LPWSTR ui0_remote; -} -alias USE_INFO_0* PUSE_INFO_0, LPUSE_INFO_0; - -struct USE_INFO_1 { - LPWSTR ui1_local; - LPWSTR ui1_remote; - LPWSTR ui1_password; - DWORD ui1_status; - DWORD ui1_asg_type; - DWORD ui1_refcount; - DWORD ui1_usecount; -} -alias USE_INFO_1* PUSE_INFO_1, LPUSE_INFO_1; - -struct USE_INFO_2 { - LPWSTR ui2_local; - LPWSTR ui2_remote; - LPWSTR ui2_password; - DWORD ui2_status; - DWORD ui2_asg_type; - DWORD ui2_refcount; - DWORD ui2_usecount; - LPWSTR ui2_username; - LPWSTR ui2_domainname; -} -alias USE_INFO_2* PUSE_INFO_2, LPUSE_INFO_2; - -extern (Windows) { - NET_API_STATUS NetUseAdd(LPWSTR, DWORD, PBYTE, PDWORD); - NET_API_STATUS NetUseDel(LPWSTR, LPWSTR, DWORD); - NET_API_STATUS NetUseEnum(LPWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, - PDWORD); - NET_API_STATUS NetUseGetInfo(LPWSTR, LPWSTR, DWORD, PBYTE*); -} +/***********************************************************************\ +* lmuse.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmuse; +pragma(lib, "netapi32"); + +import win32.lmuseflg; +private import win32.lmcons, win32.windef; + +enum { + USE_LOCAL_PARMNUM = 1, + USE_REMOTE_PARMNUM, + USE_PASSWORD_PARMNUM, + USE_ASGTYPE_PARMNUM, + USE_USERNAME_PARMNUM, + USE_DOMAINNAME_PARMNUM +} + +enum { + USE_OK, + USE_PAUSED, + USE_SESSLOST, + USE_DISCONN = USE_SESSLOST, + USE_NETERR, + USE_CONN, + USE_RECONN +} + +const DWORD USE_WILDCARD = -1; + +enum { + USE_DISKDEV, + USE_SPOOLDEV, + USE_CHARDEV, + USE_IPC +} + +struct USE_INFO_0 { + LPWSTR ui0_local; + LPWSTR ui0_remote; +} +alias USE_INFO_0* PUSE_INFO_0, LPUSE_INFO_0; + +struct USE_INFO_1 { + LPWSTR ui1_local; + LPWSTR ui1_remote; + LPWSTR ui1_password; + DWORD ui1_status; + DWORD ui1_asg_type; + DWORD ui1_refcount; + DWORD ui1_usecount; +} +alias USE_INFO_1* PUSE_INFO_1, LPUSE_INFO_1; + +struct USE_INFO_2 { + LPWSTR ui2_local; + LPWSTR ui2_remote; + LPWSTR ui2_password; + DWORD ui2_status; + DWORD ui2_asg_type; + DWORD ui2_refcount; + DWORD ui2_usecount; + LPWSTR ui2_username; + LPWSTR ui2_domainname; +} +alias USE_INFO_2* PUSE_INFO_2, LPUSE_INFO_2; + +extern (Windows) { + NET_API_STATUS NetUseAdd(LPWSTR, DWORD, PBYTE, PDWORD); + NET_API_STATUS NetUseDel(LPWSTR, LPWSTR, DWORD); + NET_API_STATUS NetUseEnum(LPWSTR, DWORD, PBYTE*, DWORD, PDWORD, PDWORD, + PDWORD); + NET_API_STATUS NetUseGetInfo(LPWSTR, LPWSTR, DWORD, PBYTE*); +} Index: src/win32/lmwksta.d ================================================================== --- src/win32/lmwksta.d +++ src/win32/lmwksta.d @@ -1,390 +1,390 @@ -/***********************************************************************\ -* lmwksta.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lmwksta; -pragma(lib, "netapi32.lib"); - -import win32.lmuseflg; -private import win32.lmcons, win32.windef; - -pragma(lib, "Netapi32.lib"); - -enum { - WKSTA_COMPUTERNAME_PARMNUM = 1, - WKSTA_LANGROUP_PARMNUM, // = 2 - WKSTA_VER_MAJOR_PARMNUM = 4, - WKSTA_VER_MINOR_PARMNUM, - WKSTA_LOGGED_ON_USERS_PARMNUM, - WKSTA_LANROOT_PARMNUM, - WKSTA_LOGON_DOMAIN_PARMNUM, - WKSTA_LOGON_SERVER_PARMNUM, - WKSTA_CHARWAIT_PARMNUM, - WKSTA_CHARTIME_PARMNUM, - WKSTA_CHARCOUNT_PARMNUM, - WKSTA_KEEPCONN_PARMNUM, - WKSTA_KEEPSEARCH_PARMNUM, - WKSTA_MAXCMDS_PARMNUM, - WKSTA_NUMWORKBUF_PARMNUM, - WKSTA_MAXWRKCACHE_PARMNUM, - WKSTA_SESSTIMEOUT_PARMNUM, - WKSTA_SIZERROR_PARMNUM, - WKSTA_NUMALERTS_PARMNUM, - WKSTA_NUMSERVICES_PARMNUM, - WKSTA_NUMCHARBUF_PARMNUM, - WKSTA_SIZCHARBUF_PARMNUM, // = 23 - WKSTA_ERRLOGSZ_PARMNUM = 27, - WKSTA_PRINTBUFTIME_PARMNUM, - WKSTA_SIZWORKBUF_PARMNUM, - WKSTA_MAILSLOTS_PARMNUM, - WKSTA_NUMDGRAMBUF_PARMNUM, - WKSTA_WRKHEURISTICS_PARMNUM, - WKSTA_MAXTHREADS_PARMNUM, // = 33 - WKSTA_LOCKQUOTA_PARMNUM = 41, - WKSTA_LOCKINCREMENT_PARMNUM, - WKSTA_LOCKMAXIMUM_PARMNUM, - WKSTA_PIPEINCREMENT_PARMNUM, - WKSTA_PIPEMAXIMUM_PARMNUM, - WKSTA_DORMANTFILELIMIT_PARMNUM, - WKSTA_CACHEFILETIMEOUT_PARMNUM, - WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM, - WKSTA_USEUNLOCKBEHIND_PARMNUM, - WKSTA_USECLOSEBEHIND_PARMNUM, - WKSTA_BUFFERNAMEDPIPES_PARMNUM, - WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM, - WKSTA_UTILIZENTCACHING_PARMNUM, - WKSTA_USERAWREAD_PARMNUM, - WKSTA_USERAWWRITE_PARMNUM, - WKSTA_USEWRITERAWWITHDATA_PARMNUM, - WKSTA_USEENCRYPTION_PARMNUM, - WKSTA_BUFFILESWITHDENYWRITE_PARMNUM, - WKSTA_BUFFERREADONLYFILES_PARMNUM, - WKSTA_FORCECORECREATEMODE_PARMNUM, - WKSTA_USE512BYTESMAXTRANSFER_PARMNUM, - WKSTA_READAHEADTHRUPUT_PARMNUM, // = 62 - WKSTA_PLATFORM_ID_PARMNUM = 100, - WKSTA_OTH_DOMAINS_PARMNUM = 101, - TRANSPORT_QUALITYOFSERVICE_PARMNUM = 201, - TRANSPORT_NAME_PARMNUM = 202 -} - -struct WKSTA_INFO_100{ - DWORD wki100_platform_id; - LPWSTR wki100_computername; - LPWSTR wki100_langroup; - DWORD wki100_ver_major; - DWORD wki100_ver_minor; -} -alias WKSTA_INFO_100* PWKSTA_INFO_100, LPWKSTA_INFO_100; - -struct WKSTA_INFO_101{ - DWORD wki101_platform_id; - LPWSTR wki101_computername; - LPWSTR wki101_langroup; - DWORD wki101_ver_major; - DWORD wki101_ver_minor; - LPWSTR wki101_lanroot; -} -alias WKSTA_INFO_101* PWKSTA_INFO_101, LPWKSTA_INFO_101; - -struct WKSTA_INFO_102{ - DWORD wki102_platform_id; - LPWSTR wki102_computername; - LPWSTR wki102_langroup; - DWORD wki102_ver_major; - DWORD wki102_ver_minor; - LPWSTR wki102_lanroot; - DWORD wki102_logged_on_users; -} -alias WKSTA_INFO_102* PWKSTA_INFO_102, LPWKSTA_INFO_102; - -struct WKSTA_INFO_302{ - DWORD wki302_char_wait; - DWORD wki302_collection_time; - DWORD wki302_maximum_collection_count; - DWORD wki302_keep_conn; - DWORD wki302_keep_search; - DWORD wki302_max_cmds; - DWORD wki302_num_work_buf; - DWORD wki302_siz_work_buf; - DWORD wki302_max_wrk_cache; - DWORD wki302_sess_timeout; - DWORD wki302_siz_error; - DWORD wki302_num_alerts; - DWORD wki302_num_services; - DWORD wki302_errlog_sz; - DWORD wki302_print_buf_time; - DWORD wki302_num_char_buf; - DWORD wki302_siz_char_buf; - LPWSTR wki302_wrk_heuristics; - DWORD wki302_mailslots; - DWORD wki302_num_dgram_buf; -} -alias WKSTA_INFO_302* PWKSTA_INFO_302, LPWKSTA_INFO_302; - -struct WKSTA_INFO_402{ - DWORD wki402_char_wait; - DWORD wki402_collection_time; - DWORD wki402_maximum_collection_count; - DWORD wki402_keep_conn; - DWORD wki402_keep_search; - DWORD wki402_max_cmds; - DWORD wki402_num_work_buf; - DWORD wki402_siz_work_buf; - DWORD wki402_max_wrk_cache; - DWORD wki402_sess_timeout; - DWORD wki402_siz_error; - DWORD wki402_num_alerts; - DWORD wki402_num_services; - DWORD wki402_errlog_sz; - DWORD wki402_print_buf_time; - DWORD wki402_num_char_buf; - DWORD wki402_siz_char_buf; - LPWSTR wki402_wrk_heuristics; - DWORD wki402_mailslots; - DWORD wki402_num_dgram_buf; - DWORD wki402_max_threads; -} -alias WKSTA_INFO_402* PWKSTA_INFO_402, LPWKSTA_INFO_402; - -struct WKSTA_INFO_502{ - DWORD wki502_char_wait; - DWORD wki502_collection_time; - DWORD wki502_maximum_collection_count; - DWORD wki502_keep_conn; - DWORD wki502_max_cmds; - DWORD wki502_sess_timeout; - DWORD wki502_siz_char_buf; - DWORD wki502_max_threads; - DWORD wki502_lock_quota; - DWORD wki502_lock_increment; - DWORD wki502_lock_maximum; - DWORD wki502_pipe_increment; - DWORD wki502_pipe_maximum; - DWORD wki502_cache_file_timeout; - DWORD wki502_dormant_file_limit; - DWORD wki502_read_ahead_throughput; - DWORD wki502_num_mailslot_buffers; - DWORD wki502_num_srv_announce_buffers; - DWORD wki502_max_illegal_datagram_events; - DWORD wki502_illegal_datagram_event_reset_frequency; - BOOL wki502_log_election_packets; - BOOL wki502_use_opportunistic_locking; - BOOL wki502_use_unlock_behind; - BOOL wki502_use_close_behind; - BOOL wki502_buf_named_pipes; - BOOL wki502_use_lock_read_unlock; - BOOL wki502_utilize_nt_caching; - BOOL wki502_use_raw_read; - BOOL wki502_use_raw_write; - BOOL wki502_use_write_raw_data; - BOOL wki502_use_encryption; - BOOL wki502_buf_files_deny_write; - BOOL wki502_buf_read_only_files; - BOOL wki502_force_core_create_mode; - BOOL wki502_use_512_byte_max_transfer; -} -alias WKSTA_INFO_502* PWKSTA_INFO_502, LPWKSTA_INFO_502; - -struct WKSTA_INFO_1010 { - DWORD wki1010_char_wait; -} -alias WKSTA_INFO_1010* PWKSTA_INFO_1010, LPWKSTA_INFO_1010; - -struct WKSTA_INFO_1011 { - DWORD wki1011_collection_time; -} -alias WKSTA_INFO_1011* PWKSTA_INFO_1011, LPWKSTA_INFO_1011; - -struct WKSTA_INFO_1012 { - DWORD wki1012_maximum_collection_count; -} -alias WKSTA_INFO_1012* PWKSTA_INFO_1012, LPWKSTA_INFO_1012; - -struct WKSTA_INFO_1027 { - DWORD wki1027_errlog_sz; -} -alias WKSTA_INFO_1027* PWKSTA_INFO_1027, LPWKSTA_INFO_1027; - -struct WKSTA_INFO_1028 { - DWORD wki1028_print_buf_time; -} -alias WKSTA_INFO_1028* PWKSTA_INFO_1028, LPWKSTA_INFO_1028; - -struct WKSTA_INFO_1032 { - DWORD wki1032_wrk_heuristics; -} -alias WKSTA_INFO_1032* PWKSTA_INFO_1032, LPWKSTA_INFO_1032; - -struct WKSTA_INFO_1013 { - DWORD wki1013_keep_conn; -} -alias WKSTA_INFO_1013* PWKSTA_INFO_1013, LPWKSTA_INFO_1013; - -struct WKSTA_INFO_1018 { - DWORD wki1018_sess_timeout; -} -alias WKSTA_INFO_1018* PWKSTA_INFO_1018, LPWKSTA_INFO_1018; - -struct WKSTA_INFO_1023 { - DWORD wki1023_siz_char_buf; -} -alias WKSTA_INFO_1023* PWKSTA_INFO_1023, LPWKSTA_INFO_1023; - -struct WKSTA_INFO_1033 { - DWORD wki1033_max_threads; -} -alias WKSTA_INFO_1033* PWKSTA_INFO_1033, LPWKSTA_INFO_1033; - -struct WKSTA_INFO_1041 { - DWORD wki1041_lock_quota; -} -alias WKSTA_INFO_1041* PWKSTA_INFO_1041, LPWKSTA_INFO_1041; - -struct WKSTA_INFO_1042 { - DWORD wki1042_lock_increment; -} -alias WKSTA_INFO_1042* PWKSTA_INFO_1042, LPWKSTA_INFO_1042; - -struct WKSTA_INFO_1043 { - DWORD wki1043_lock_maximum; -} -alias WKSTA_INFO_1043* PWKSTA_INFO_1043, LPWKSTA_INFO_1043; - -struct WKSTA_INFO_1044 { - DWORD wki1044_pipe_increment; -} -alias WKSTA_INFO_1044* PWKSTA_INFO_1044, LPWKSTA_INFO_1044; - -struct WKSTA_INFO_1045 { - DWORD wki1045_pipe_maximum; -} -alias WKSTA_INFO_1045* PWKSTA_INFO_1045, LPWKSTA_INFO_1045; - -struct WKSTA_INFO_1046 { - DWORD wki1046_dormant_file_limit; -} -alias WKSTA_INFO_1046* PWKSTA_INFO_1046, LPWKSTA_INFO_1046; - -struct WKSTA_INFO_1047 { - DWORD wki1047_cache_file_timeout; -} -alias WKSTA_INFO_1047* PWKSTA_INFO_1047, LPWKSTA_INFO_1047; - -struct WKSTA_INFO_1048 { - BOOL wki1048_use_opportunistic_locking; -} -alias WKSTA_INFO_1048* PWKSTA_INFO_1048, LPWKSTA_INFO_1048; - -struct WKSTA_INFO_1049 { - BOOL wki1049_use_unlock_behind; -} -alias WKSTA_INFO_1049* PWKSTA_INFO_1049, LPWKSTA_INFO_1049; - -struct WKSTA_INFO_1050 { - BOOL wki1050_use_close_behind; -} -alias WKSTA_INFO_1050* PWKSTA_INFO_1050, LPWKSTA_INFO_1050; - -struct WKSTA_INFO_1051 { - BOOL wki1051_buf_named_pipes; -} -alias WKSTA_INFO_1051* PWKSTA_INFO_1051, LPWKSTA_INFO_1051; - -struct WKSTA_INFO_1052 { - BOOL wki1052_use_lock_read_unlock; -} -alias WKSTA_INFO_1052* PWKSTA_INFO_1052, LPWKSTA_INFO_1052; - -struct WKSTA_INFO_1053 { - BOOL wki1053_utilize_nt_caching; -} -alias WKSTA_INFO_1053* PWKSTA_INFO_1053, LPWKSTA_INFO_1053; - -struct WKSTA_INFO_1054 { - BOOL wki1054_use_raw_read; -} -alias WKSTA_INFO_1054* PWKSTA_INFO_1054, LPWKSTA_INFO_1054; - -struct WKSTA_INFO_1055 { - BOOL wki1055_use_raw_write; -} -alias WKSTA_INFO_1055* PWKSTA_INFO_1055, LPWKSTA_INFO_1055; - -struct WKSTA_INFO_1056 { - BOOL wki1056_use_write_raw_data; -} -alias WKSTA_INFO_1056* PWKSTA_INFO_1056, LPWKSTA_INFO_1056; - -struct WKSTA_INFO_1057 { - BOOL wki1057_use_encryption; -} -alias WKSTA_INFO_1057* PWKSTA_INFO_1057, LPWKSTA_INFO_1057; - -struct WKSTA_INFO_1058 { - BOOL wki1058_buf_files_deny_write; -} -alias WKSTA_INFO_1058* PWKSTA_INFO_1058, LPWKSTA_INFO_1058; - -struct WKSTA_INFO_1059 { - BOOL wki1059_buf_read_only_files; -} -alias WKSTA_INFO_1059* PWKSTA_INFO_1059, LPWKSTA_INFO_1059; - -struct WKSTA_INFO_1060 { - BOOL wki1060_force_core_create_mode; -} -alias WKSTA_INFO_1060* PWKSTA_INFO_1060, LPWKSTA_INFO_1060; - -struct WKSTA_INFO_1061 { - BOOL wki1061_use_512_byte_max_transfer; -} -alias WKSTA_INFO_1061* PWKSTA_INFO_1061, LPWKSTA_INFO_1061; - -struct WKSTA_INFO_1062 { - DWORD wki1062_read_ahead_throughput; -} -alias WKSTA_INFO_1062* PWKSTA_INFO_1062, LPWKSTA_INFO_1062; - -struct WKSTA_USER_INFO_0 { - LPWSTR wkui0_username; -} -alias WKSTA_USER_INFO_0* PWKSTA_USER_INFO_0, LPWKSTA_USER_INFO_0; - -struct WKSTA_USER_INFO_1{ - LPWSTR wkui1_username; - LPWSTR wkui1_logon_domain; - LPWSTR wkui1_oth_domains; - LPWSTR wkui1_logon_server; -} -alias WKSTA_USER_INFO_1* PWKSTA_USER_INFO_1, LPWKSTA_USER_INFO_1; - -struct WKSTA_USER_INFO_1101 { - LPWSTR wkui1101_oth_domains; -} -alias WKSTA_USER_INFO_1101* PWKSTA_USER_INFO_1101, LPWKSTA_USER_INFO_1101; - -struct WKSTA_TRANSPORT_INFO_0{ - DWORD wkti0_quality_of_service; - DWORD wkti0_number_of_vcs; - LPWSTR wkti0_transport_name; - LPWSTR wkti0_transport_address; - BOOL wkti0_wan_ish; -} -alias WKSTA_TRANSPORT_INFO_0* PWKSTA_TRANSPORT_INFO_0, LPWKSTA_TRANSPORT_INFO_0; - -extern (Windows) { -NET_API_STATUS NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*); -NET_API_STATUS NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -NET_API_STATUS NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD); -NET_API_STATUS NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD); -NET_API_STATUS NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); -} +/***********************************************************************\ +* lmwksta.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lmwksta; +pragma(lib, "netapi32"); + +import win32.lmuseflg; +private import win32.lmcons, win32.windef; + +pragma(lib, "Netapi32"); + +enum { + WKSTA_COMPUTERNAME_PARMNUM = 1, + WKSTA_LANGROUP_PARMNUM, // = 2 + WKSTA_VER_MAJOR_PARMNUM = 4, + WKSTA_VER_MINOR_PARMNUM, + WKSTA_LOGGED_ON_USERS_PARMNUM, + WKSTA_LANROOT_PARMNUM, + WKSTA_LOGON_DOMAIN_PARMNUM, + WKSTA_LOGON_SERVER_PARMNUM, + WKSTA_CHARWAIT_PARMNUM, + WKSTA_CHARTIME_PARMNUM, + WKSTA_CHARCOUNT_PARMNUM, + WKSTA_KEEPCONN_PARMNUM, + WKSTA_KEEPSEARCH_PARMNUM, + WKSTA_MAXCMDS_PARMNUM, + WKSTA_NUMWORKBUF_PARMNUM, + WKSTA_MAXWRKCACHE_PARMNUM, + WKSTA_SESSTIMEOUT_PARMNUM, + WKSTA_SIZERROR_PARMNUM, + WKSTA_NUMALERTS_PARMNUM, + WKSTA_NUMSERVICES_PARMNUM, + WKSTA_NUMCHARBUF_PARMNUM, + WKSTA_SIZCHARBUF_PARMNUM, // = 23 + WKSTA_ERRLOGSZ_PARMNUM = 27, + WKSTA_PRINTBUFTIME_PARMNUM, + WKSTA_SIZWORKBUF_PARMNUM, + WKSTA_MAILSLOTS_PARMNUM, + WKSTA_NUMDGRAMBUF_PARMNUM, + WKSTA_WRKHEURISTICS_PARMNUM, + WKSTA_MAXTHREADS_PARMNUM, // = 33 + WKSTA_LOCKQUOTA_PARMNUM = 41, + WKSTA_LOCKINCREMENT_PARMNUM, + WKSTA_LOCKMAXIMUM_PARMNUM, + WKSTA_PIPEINCREMENT_PARMNUM, + WKSTA_PIPEMAXIMUM_PARMNUM, + WKSTA_DORMANTFILELIMIT_PARMNUM, + WKSTA_CACHEFILETIMEOUT_PARMNUM, + WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM, + WKSTA_USEUNLOCKBEHIND_PARMNUM, + WKSTA_USECLOSEBEHIND_PARMNUM, + WKSTA_BUFFERNAMEDPIPES_PARMNUM, + WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM, + WKSTA_UTILIZENTCACHING_PARMNUM, + WKSTA_USERAWREAD_PARMNUM, + WKSTA_USERAWWRITE_PARMNUM, + WKSTA_USEWRITERAWWITHDATA_PARMNUM, + WKSTA_USEENCRYPTION_PARMNUM, + WKSTA_BUFFILESWITHDENYWRITE_PARMNUM, + WKSTA_BUFFERREADONLYFILES_PARMNUM, + WKSTA_FORCECORECREATEMODE_PARMNUM, + WKSTA_USE512BYTESMAXTRANSFER_PARMNUM, + WKSTA_READAHEADTHRUPUT_PARMNUM, // = 62 + WKSTA_PLATFORM_ID_PARMNUM = 100, + WKSTA_OTH_DOMAINS_PARMNUM = 101, + TRANSPORT_QUALITYOFSERVICE_PARMNUM = 201, + TRANSPORT_NAME_PARMNUM = 202 +} + +struct WKSTA_INFO_100{ + DWORD wki100_platform_id; + LPWSTR wki100_computername; + LPWSTR wki100_langroup; + DWORD wki100_ver_major; + DWORD wki100_ver_minor; +} +alias WKSTA_INFO_100* PWKSTA_INFO_100, LPWKSTA_INFO_100; + +struct WKSTA_INFO_101{ + DWORD wki101_platform_id; + LPWSTR wki101_computername; + LPWSTR wki101_langroup; + DWORD wki101_ver_major; + DWORD wki101_ver_minor; + LPWSTR wki101_lanroot; +} +alias WKSTA_INFO_101* PWKSTA_INFO_101, LPWKSTA_INFO_101; + +struct WKSTA_INFO_102{ + DWORD wki102_platform_id; + LPWSTR wki102_computername; + LPWSTR wki102_langroup; + DWORD wki102_ver_major; + DWORD wki102_ver_minor; + LPWSTR wki102_lanroot; + DWORD wki102_logged_on_users; +} +alias WKSTA_INFO_102* PWKSTA_INFO_102, LPWKSTA_INFO_102; + +struct WKSTA_INFO_302{ + DWORD wki302_char_wait; + DWORD wki302_collection_time; + DWORD wki302_maximum_collection_count; + DWORD wki302_keep_conn; + DWORD wki302_keep_search; + DWORD wki302_max_cmds; + DWORD wki302_num_work_buf; + DWORD wki302_siz_work_buf; + DWORD wki302_max_wrk_cache; + DWORD wki302_sess_timeout; + DWORD wki302_siz_error; + DWORD wki302_num_alerts; + DWORD wki302_num_services; + DWORD wki302_errlog_sz; + DWORD wki302_print_buf_time; + DWORD wki302_num_char_buf; + DWORD wki302_siz_char_buf; + LPWSTR wki302_wrk_heuristics; + DWORD wki302_mailslots; + DWORD wki302_num_dgram_buf; +} +alias WKSTA_INFO_302* PWKSTA_INFO_302, LPWKSTA_INFO_302; + +struct WKSTA_INFO_402{ + DWORD wki402_char_wait; + DWORD wki402_collection_time; + DWORD wki402_maximum_collection_count; + DWORD wki402_keep_conn; + DWORD wki402_keep_search; + DWORD wki402_max_cmds; + DWORD wki402_num_work_buf; + DWORD wki402_siz_work_buf; + DWORD wki402_max_wrk_cache; + DWORD wki402_sess_timeout; + DWORD wki402_siz_error; + DWORD wki402_num_alerts; + DWORD wki402_num_services; + DWORD wki402_errlog_sz; + DWORD wki402_print_buf_time; + DWORD wki402_num_char_buf; + DWORD wki402_siz_char_buf; + LPWSTR wki402_wrk_heuristics; + DWORD wki402_mailslots; + DWORD wki402_num_dgram_buf; + DWORD wki402_max_threads; +} +alias WKSTA_INFO_402* PWKSTA_INFO_402, LPWKSTA_INFO_402; + +struct WKSTA_INFO_502{ + DWORD wki502_char_wait; + DWORD wki502_collection_time; + DWORD wki502_maximum_collection_count; + DWORD wki502_keep_conn; + DWORD wki502_max_cmds; + DWORD wki502_sess_timeout; + DWORD wki502_siz_char_buf; + DWORD wki502_max_threads; + DWORD wki502_lock_quota; + DWORD wki502_lock_increment; + DWORD wki502_lock_maximum; + DWORD wki502_pipe_increment; + DWORD wki502_pipe_maximum; + DWORD wki502_cache_file_timeout; + DWORD wki502_dormant_file_limit; + DWORD wki502_read_ahead_throughput; + DWORD wki502_num_mailslot_buffers; + DWORD wki502_num_srv_announce_buffers; + DWORD wki502_max_illegal_datagram_events; + DWORD wki502_illegal_datagram_event_reset_frequency; + BOOL wki502_log_election_packets; + BOOL wki502_use_opportunistic_locking; + BOOL wki502_use_unlock_behind; + BOOL wki502_use_close_behind; + BOOL wki502_buf_named_pipes; + BOOL wki502_use_lock_read_unlock; + BOOL wki502_utilize_nt_caching; + BOOL wki502_use_raw_read; + BOOL wki502_use_raw_write; + BOOL wki502_use_write_raw_data; + BOOL wki502_use_encryption; + BOOL wki502_buf_files_deny_write; + BOOL wki502_buf_read_only_files; + BOOL wki502_force_core_create_mode; + BOOL wki502_use_512_byte_max_transfer; +} +alias WKSTA_INFO_502* PWKSTA_INFO_502, LPWKSTA_INFO_502; + +struct WKSTA_INFO_1010 { + DWORD wki1010_char_wait; +} +alias WKSTA_INFO_1010* PWKSTA_INFO_1010, LPWKSTA_INFO_1010; + +struct WKSTA_INFO_1011 { + DWORD wki1011_collection_time; +} +alias WKSTA_INFO_1011* PWKSTA_INFO_1011, LPWKSTA_INFO_1011; + +struct WKSTA_INFO_1012 { + DWORD wki1012_maximum_collection_count; +} +alias WKSTA_INFO_1012* PWKSTA_INFO_1012, LPWKSTA_INFO_1012; + +struct WKSTA_INFO_1027 { + DWORD wki1027_errlog_sz; +} +alias WKSTA_INFO_1027* PWKSTA_INFO_1027, LPWKSTA_INFO_1027; + +struct WKSTA_INFO_1028 { + DWORD wki1028_print_buf_time; +} +alias WKSTA_INFO_1028* PWKSTA_INFO_1028, LPWKSTA_INFO_1028; + +struct WKSTA_INFO_1032 { + DWORD wki1032_wrk_heuristics; +} +alias WKSTA_INFO_1032* PWKSTA_INFO_1032, LPWKSTA_INFO_1032; + +struct WKSTA_INFO_1013 { + DWORD wki1013_keep_conn; +} +alias WKSTA_INFO_1013* PWKSTA_INFO_1013, LPWKSTA_INFO_1013; + +struct WKSTA_INFO_1018 { + DWORD wki1018_sess_timeout; +} +alias WKSTA_INFO_1018* PWKSTA_INFO_1018, LPWKSTA_INFO_1018; + +struct WKSTA_INFO_1023 { + DWORD wki1023_siz_char_buf; +} +alias WKSTA_INFO_1023* PWKSTA_INFO_1023, LPWKSTA_INFO_1023; + +struct WKSTA_INFO_1033 { + DWORD wki1033_max_threads; +} +alias WKSTA_INFO_1033* PWKSTA_INFO_1033, LPWKSTA_INFO_1033; + +struct WKSTA_INFO_1041 { + DWORD wki1041_lock_quota; +} +alias WKSTA_INFO_1041* PWKSTA_INFO_1041, LPWKSTA_INFO_1041; + +struct WKSTA_INFO_1042 { + DWORD wki1042_lock_increment; +} +alias WKSTA_INFO_1042* PWKSTA_INFO_1042, LPWKSTA_INFO_1042; + +struct WKSTA_INFO_1043 { + DWORD wki1043_lock_maximum; +} +alias WKSTA_INFO_1043* PWKSTA_INFO_1043, LPWKSTA_INFO_1043; + +struct WKSTA_INFO_1044 { + DWORD wki1044_pipe_increment; +} +alias WKSTA_INFO_1044* PWKSTA_INFO_1044, LPWKSTA_INFO_1044; + +struct WKSTA_INFO_1045 { + DWORD wki1045_pipe_maximum; +} +alias WKSTA_INFO_1045* PWKSTA_INFO_1045, LPWKSTA_INFO_1045; + +struct WKSTA_INFO_1046 { + DWORD wki1046_dormant_file_limit; +} +alias WKSTA_INFO_1046* PWKSTA_INFO_1046, LPWKSTA_INFO_1046; + +struct WKSTA_INFO_1047 { + DWORD wki1047_cache_file_timeout; +} +alias WKSTA_INFO_1047* PWKSTA_INFO_1047, LPWKSTA_INFO_1047; + +struct WKSTA_INFO_1048 { + BOOL wki1048_use_opportunistic_locking; +} +alias WKSTA_INFO_1048* PWKSTA_INFO_1048, LPWKSTA_INFO_1048; + +struct WKSTA_INFO_1049 { + BOOL wki1049_use_unlock_behind; +} +alias WKSTA_INFO_1049* PWKSTA_INFO_1049, LPWKSTA_INFO_1049; + +struct WKSTA_INFO_1050 { + BOOL wki1050_use_close_behind; +} +alias WKSTA_INFO_1050* PWKSTA_INFO_1050, LPWKSTA_INFO_1050; + +struct WKSTA_INFO_1051 { + BOOL wki1051_buf_named_pipes; +} +alias WKSTA_INFO_1051* PWKSTA_INFO_1051, LPWKSTA_INFO_1051; + +struct WKSTA_INFO_1052 { + BOOL wki1052_use_lock_read_unlock; +} +alias WKSTA_INFO_1052* PWKSTA_INFO_1052, LPWKSTA_INFO_1052; + +struct WKSTA_INFO_1053 { + BOOL wki1053_utilize_nt_caching; +} +alias WKSTA_INFO_1053* PWKSTA_INFO_1053, LPWKSTA_INFO_1053; + +struct WKSTA_INFO_1054 { + BOOL wki1054_use_raw_read; +} +alias WKSTA_INFO_1054* PWKSTA_INFO_1054, LPWKSTA_INFO_1054; + +struct WKSTA_INFO_1055 { + BOOL wki1055_use_raw_write; +} +alias WKSTA_INFO_1055* PWKSTA_INFO_1055, LPWKSTA_INFO_1055; + +struct WKSTA_INFO_1056 { + BOOL wki1056_use_write_raw_data; +} +alias WKSTA_INFO_1056* PWKSTA_INFO_1056, LPWKSTA_INFO_1056; + +struct WKSTA_INFO_1057 { + BOOL wki1057_use_encryption; +} +alias WKSTA_INFO_1057* PWKSTA_INFO_1057, LPWKSTA_INFO_1057; + +struct WKSTA_INFO_1058 { + BOOL wki1058_buf_files_deny_write; +} +alias WKSTA_INFO_1058* PWKSTA_INFO_1058, LPWKSTA_INFO_1058; + +struct WKSTA_INFO_1059 { + BOOL wki1059_buf_read_only_files; +} +alias WKSTA_INFO_1059* PWKSTA_INFO_1059, LPWKSTA_INFO_1059; + +struct WKSTA_INFO_1060 { + BOOL wki1060_force_core_create_mode; +} +alias WKSTA_INFO_1060* PWKSTA_INFO_1060, LPWKSTA_INFO_1060; + +struct WKSTA_INFO_1061 { + BOOL wki1061_use_512_byte_max_transfer; +} +alias WKSTA_INFO_1061* PWKSTA_INFO_1061, LPWKSTA_INFO_1061; + +struct WKSTA_INFO_1062 { + DWORD wki1062_read_ahead_throughput; +} +alias WKSTA_INFO_1062* PWKSTA_INFO_1062, LPWKSTA_INFO_1062; + +struct WKSTA_USER_INFO_0 { + LPWSTR wkui0_username; +} +alias WKSTA_USER_INFO_0* PWKSTA_USER_INFO_0, LPWKSTA_USER_INFO_0; + +struct WKSTA_USER_INFO_1{ + LPWSTR wkui1_username; + LPWSTR wkui1_logon_domain; + LPWSTR wkui1_oth_domains; + LPWSTR wkui1_logon_server; +} +alias WKSTA_USER_INFO_1* PWKSTA_USER_INFO_1, LPWKSTA_USER_INFO_1; + +struct WKSTA_USER_INFO_1101 { + LPWSTR wkui1101_oth_domains; +} +alias WKSTA_USER_INFO_1101* PWKSTA_USER_INFO_1101, LPWKSTA_USER_INFO_1101; + +struct WKSTA_TRANSPORT_INFO_0{ + DWORD wkti0_quality_of_service; + DWORD wkti0_number_of_vcs; + LPWSTR wkti0_transport_name; + LPWSTR wkti0_transport_address; + BOOL wkti0_wan_ish; +} +alias WKSTA_TRANSPORT_INFO_0* PWKSTA_TRANSPORT_INFO_0, LPWKSTA_TRANSPORT_INFO_0; + +extern (Windows) { +NET_API_STATUS NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*); +NET_API_STATUS NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +NET_API_STATUS NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD); +NET_API_STATUS NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD); +NET_API_STATUS NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); +} Index: src/win32/lzexpand.d ================================================================== --- src/win32/lzexpand.d +++ src/win32/lzexpand.d @@ -1,48 +1,48 @@ -/***********************************************************************\ -* lzexpand.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.lzexpand; -pragma(lib, "lz32.lib"); - -private import win32.winbase, win32.windef; - -enum : LONG { - LZERROR_BADINHANDLE = -1, - LZERROR_BADOUTHANDLE = -2, - LZERROR_READ = -3, - LZERROR_WRITE = -4, - LZERROR_GLOBALLOC = -5, - LZERROR_GLOBLOCK = -6, - LZERROR_BADVALUE = -7, - LZERROR_UNKNOWNALG = -8 -} - -extern (Windows): -deprecated { - LONG CopyLZFile(INT, INT); - void LZDone(); - INT LZStart(); -} -INT GetExpandedNameA(LPSTR, LPSTR); -INT GetExpandedNameW(LPWSTR, LPWSTR); -void LZClose(INT); -LONG LZCopy(INT, INT); -INT LZInit(INT); -INT LZOpenFileA(LPSTR, LPOFSTRUCT, WORD); -INT LZOpenFileW(LPWSTR, LPOFSTRUCT, WORD); -INT LZRead(INT, LPSTR, INT); -LONG LZSeek(INT, LONG, INT); - -version (Unicode) { - alias GetExpandedNameW GetExpandedName; - alias LZOpenFileW LZOpenFile; -} else { - alias GetExpandedNameA GetExpandedName; - alias LZOpenFileA LZOpenFile; -} +/***********************************************************************\ +* lzexpand.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.lzexpand; +pragma(lib, "lz32"); + +private import win32.winbase, win32.windef; + +enum : LONG { + LZERROR_BADINHANDLE = -1, + LZERROR_BADOUTHANDLE = -2, + LZERROR_READ = -3, + LZERROR_WRITE = -4, + LZERROR_GLOBALLOC = -5, + LZERROR_GLOBLOCK = -6, + LZERROR_BADVALUE = -7, + LZERROR_UNKNOWNALG = -8 +} + +extern (Windows): +deprecated { + LONG CopyLZFile(INT, INT); + void LZDone(); + INT LZStart(); +} +INT GetExpandedNameA(LPSTR, LPSTR); +INT GetExpandedNameW(LPWSTR, LPWSTR); +void LZClose(INT); +LONG LZCopy(INT, INT); +INT LZInit(INT); +INT LZOpenFileA(LPSTR, LPOFSTRUCT, WORD); +INT LZOpenFileW(LPWSTR, LPOFSTRUCT, WORD); +INT LZRead(INT, LPSTR, INT); +LONG LZSeek(INT, LONG, INT); + +version (Unicode) { + alias GetExpandedNameW GetExpandedName; + alias LZOpenFileW LZOpenFile; +} else { + alias GetExpandedNameA GetExpandedName; + alias LZOpenFileA LZOpenFile; +} ADDED src/win32/makefile Index: src/win32/makefile ================================================================== --- src/win32/makefile +++ src/win32/makefile @@ -0,0 +1,34 @@ +# Makefile for the Windows API project +# Uses GNU Make-specific extensions + +DC := dmd.exe + +DFLAGS := -inline -O -release -w +#DFLAGS := -debug -gc -unittest -w + +DFLAGS += -version=Unicode -version=WindowsVista + +######################################## + +SUBDIRS := directx + +EXCLUSIONS := winsock.d + +######################################## + +SOURCES := $(wildcard *.d $(addsuffix /*.d, $(SUBDIRS))) +SOURCES := $(filter-out $(EXCLUSIONS), $(SOURCES)) + +######################################## + +win32.lib : $(SOURCES) + $(DC) $^ -lib -of$@ $(DFLAGS) + +win64.lib : $(SOURCES) + $(DC) $^ -lib -m64 -of$@ $(DFLAGS) + +clean : + -del win32.lib + -del win64.lib + +.PHONY : clean Index: src/win32/mapi.d ================================================================== --- src/win32/mapi.d +++ src/win32/mapi.d @@ -1,168 +1,168 @@ -/***********************************************************************\ -* mapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.mapi; - -private import win32.windef; - -// FIXME: check types and grouping of constants - -enum { - SUCCESS_SUCCESS, - MAPI_USER_ABORT, - MAPI_E_USER_ABORT = MAPI_USER_ABORT, - MAPI_E_FAILURE, - MAPI_E_LOGIN_FAILURE, - MAPI_E_LOGON_FAILURE = MAPI_E_LOGIN_FAILURE, - MAPI_E_DISK_FULL = 4, - MAPI_E_INSUFFICIENT_MEMORY, - MAPI_E_ACCESS_DENIED, - MAPI_E_BLK_TOO_SMALL = MAPI_E_ACCESS_DENIED, // = 6 - MAPI_E_TOO_MANY_SESSIONS = 8, - MAPI_E_TOO_MANY_FILES, - MAPI_E_TOO_MANY_RECIPIENTS, - MAPI_E_ATTACHMENT_NOT_FOUND, - MAPI_E_ATTACHMENT_OPEN_FAILURE, - MAPI_E_ATTACHMENT_WRITE_FAILURE, - MAPI_E_UNKNOWN_RECIPIENT, - MAPI_E_BAD_RECIPTYPE, - MAPI_E_NO_MESSAGES, - MAPI_E_INVALID_MESSAGE, - MAPI_E_TEXT_TOO_LARGE, - MAPI_E_INVALID_SESSION, - MAPI_E_TYPE_NOT_SUPPORTED, - MAPI_E_AMBIGUOUS_RECIPIENT, - MAPI_E_AMBIGUOUS_RECIP = MAPI_E_AMBIGUOUS_RECIPIENT, - MAPI_E_MESSAGE_IN_USE, - MAPI_E_NETWORK_FAILURE, - MAPI_E_INVALID_EDITFIELDS, - MAPI_E_INVALID_RECIPS, - MAPI_E_NOT_SUPPORTED // = 26 -} - -enum { - MAPI_ORIG, - MAPI_TO, - MAPI_CC, - MAPI_BCC -} - -const MAPI_LOGON_UI = 0x0001; -const MAPI_NEW_SESSION = 0x0002; -const MAPI_FORCE_DOWNLOAD = 0x1000; -const MAPI_LOGOFF_SHARED = 0x0001; -const MAPI_LOGOFF_UI = 0x0002; -const MAPI_DIALOG = 0x0008; -const MAPI_UNREAD_ONLY = 0x0020; -const MAPI_LONG_MSGID = 0x4000; -const MAPI_GUARANTEE_FIFO = 0x0100; -const MAPI_ENVELOPE_ONLY = 0x0040; -const MAPI_PEEK = 0x0080; -const MAPI_BODY_AS_FILE = 0x0200; -const MAPI_SUPPRESS_ATTACH = 0x0800; -const MAPI_AB_NOMODIFY = 0x0400; -const MAPI_OLE = 0x0001; -const MAPI_OLE_STATIC = 0x0002; -const MAPI_UNREAD = 0x0001; -const MAPI_RECEIPT_REQUESTED = 0x0002; -const MAPI_SENT = 0x0004; - -alias uint FLAGS, LHANDLE; -alias uint* LPLHANDLE, LPULONG; - -struct MapiRecipDesc { - ULONG ulReserved; - ULONG ulRecipClass; - LPSTR lpszName; - LPSTR lpszAddress; - ULONG ulEIDSize; - LPVOID lpEntryID; -} -alias MapiRecipDesc* lpMapiRecipDesc; - -struct MapiFileDesc { - ULONG ulReserved; - ULONG flFlags; - ULONG nPosition; - LPSTR lpszPathName; - LPSTR lpszFileName; - LPVOID lpFileType; -} -alias MapiFileDesc* lpMapiFileDesc; - -struct MapiFileTagExt { - ULONG ulReserved; - ULONG cbTag; - LPBYTE lpTag; - ULONG cbEncoding; - LPBYTE lpEncoding; -} -alias MapiFileTagExt* lpMapiFileTagExt; - -struct MapiMessage { - ULONG ulReserved; - LPSTR lpszSubject; - LPSTR lpszNoteText; - LPSTR lpszMessageType; - LPSTR lpszDateReceived; - LPSTR lpszConversationID; - FLAGS flFlags; - lpMapiRecipDesc lpOriginator; - ULONG nRecipCount; - lpMapiRecipDesc lpRecips; - ULONG nFileCount; - lpMapiFileDesc lpFiles; -} -alias MapiMessage* lpMapiMessage; - -extern (Pascal) { - ULONG MAPILogon(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); - ULONG MAPISendMail(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG); - ULONG MAPISendDocuments(ULONG, LPSTR, LPSTR, LPSTR, ULONG); - ULONG MAPIReadMail(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*); - ULONG MAPIFindNext(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR); - ULONG MAPIResolveName(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, - lpMapiRecipDesc*); - ULONG MAPIAddress(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, - lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*); - ULONG MAPIFreeBuffer(LPVOID); - ULONG MAPIDetails(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG); - ULONG MAPISaveMail(LHANDLE, ULONG, lpMapiMessage lpszMessage, FLAGS, - ULONG, LPSTR); - ULONG MAPIDeleteMail(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG); - ULONG MAPILogoff(LHANDLE, ULONG, FLAGS, ULONG); - // Netscape extensions - ULONG MAPIGetNetscapeVersion(); - ULONG MAPI_NSCP_SynchronizeClient(LHANDLE, ULONG); - - // Handles for use with GetProcAddress - alias ULONG function(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE) - LPMAPILOGON; - alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG) - LPMAPISENDMAIL; - alias ULONG function(ULONG, LPSTR, LPSTR, LPSTR, ULONG) - LPMAPISENDDOCUMENTS; - alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*) - LPMAPIREADMAIL; - alias ULONG function(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR) - LPMAPIFINDNEXT; - alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, - lpMapiRecipDesc*) LPMAPIRESOLVENAME; - alias ULONG function(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, - lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*) LPMAPIADDRESS; - alias ULONG function(LPVOID lpv) LPMAPIFREEBUFFER; - alias ULONG function(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG) - LPMAPIDETAILS; - alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG, LPSTR) - LPMAPISAVEMAIL; - alias ULONG function(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG) - LPMAPIDELETEMAIL; - alias ULONG function(LHANDLE, ULONG, FLAGS, ULONG) LPMAPILOGOFF; -} +/***********************************************************************\ +* mapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mapi; + +private import win32.windef; + +// FIXME: check types and grouping of constants + +enum { + SUCCESS_SUCCESS, + MAPI_USER_ABORT, + MAPI_E_USER_ABORT = MAPI_USER_ABORT, + MAPI_E_FAILURE, + MAPI_E_LOGIN_FAILURE, + MAPI_E_LOGON_FAILURE = MAPI_E_LOGIN_FAILURE, + MAPI_E_DISK_FULL = 4, + MAPI_E_INSUFFICIENT_MEMORY, + MAPI_E_ACCESS_DENIED, + MAPI_E_BLK_TOO_SMALL = MAPI_E_ACCESS_DENIED, // = 6 + MAPI_E_TOO_MANY_SESSIONS = 8, + MAPI_E_TOO_MANY_FILES, + MAPI_E_TOO_MANY_RECIPIENTS, + MAPI_E_ATTACHMENT_NOT_FOUND, + MAPI_E_ATTACHMENT_OPEN_FAILURE, + MAPI_E_ATTACHMENT_WRITE_FAILURE, + MAPI_E_UNKNOWN_RECIPIENT, + MAPI_E_BAD_RECIPTYPE, + MAPI_E_NO_MESSAGES, + MAPI_E_INVALID_MESSAGE, + MAPI_E_TEXT_TOO_LARGE, + MAPI_E_INVALID_SESSION, + MAPI_E_TYPE_NOT_SUPPORTED, + MAPI_E_AMBIGUOUS_RECIPIENT, + MAPI_E_AMBIGUOUS_RECIP = MAPI_E_AMBIGUOUS_RECIPIENT, + MAPI_E_MESSAGE_IN_USE, + MAPI_E_NETWORK_FAILURE, + MAPI_E_INVALID_EDITFIELDS, + MAPI_E_INVALID_RECIPS, + MAPI_E_NOT_SUPPORTED // = 26 +} + +enum { + MAPI_ORIG, + MAPI_TO, + MAPI_CC, + MAPI_BCC +} + +const MAPI_LOGON_UI = 0x0001; +const MAPI_NEW_SESSION = 0x0002; +const MAPI_FORCE_DOWNLOAD = 0x1000; +const MAPI_LOGOFF_SHARED = 0x0001; +const MAPI_LOGOFF_UI = 0x0002; +const MAPI_DIALOG = 0x0008; +const MAPI_UNREAD_ONLY = 0x0020; +const MAPI_LONG_MSGID = 0x4000; +const MAPI_GUARANTEE_FIFO = 0x0100; +const MAPI_ENVELOPE_ONLY = 0x0040; +const MAPI_PEEK = 0x0080; +const MAPI_BODY_AS_FILE = 0x0200; +const MAPI_SUPPRESS_ATTACH = 0x0800; +const MAPI_AB_NOMODIFY = 0x0400; +const MAPI_OLE = 0x0001; +const MAPI_OLE_STATIC = 0x0002; +const MAPI_UNREAD = 0x0001; +const MAPI_RECEIPT_REQUESTED = 0x0002; +const MAPI_SENT = 0x0004; + +alias uint FLAGS, LHANDLE; +alias uint* LPLHANDLE, LPULONG; + +struct MapiRecipDesc { + ULONG ulReserved; + ULONG ulRecipClass; + LPSTR lpszName; + LPSTR lpszAddress; + ULONG ulEIDSize; + LPVOID lpEntryID; +} +alias MapiRecipDesc* lpMapiRecipDesc; + +struct MapiFileDesc { + ULONG ulReserved; + ULONG flFlags; + ULONG nPosition; + LPSTR lpszPathName; + LPSTR lpszFileName; + LPVOID lpFileType; +} +alias MapiFileDesc* lpMapiFileDesc; + +struct MapiFileTagExt { + ULONG ulReserved; + ULONG cbTag; + LPBYTE lpTag; + ULONG cbEncoding; + LPBYTE lpEncoding; +} +alias MapiFileTagExt* lpMapiFileTagExt; + +struct MapiMessage { + ULONG ulReserved; + LPSTR lpszSubject; + LPSTR lpszNoteText; + LPSTR lpszMessageType; + LPSTR lpszDateReceived; + LPSTR lpszConversationID; + FLAGS flFlags; + lpMapiRecipDesc lpOriginator; + ULONG nRecipCount; + lpMapiRecipDesc lpRecips; + ULONG nFileCount; + lpMapiFileDesc lpFiles; +} +alias MapiMessage* lpMapiMessage; + +extern (Pascal) { + ULONG MAPILogon(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); + ULONG MAPISendMail(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG); + ULONG MAPISendDocuments(ULONG, LPSTR, LPSTR, LPSTR, ULONG); + ULONG MAPIReadMail(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*); + ULONG MAPIFindNext(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR); + ULONG MAPIResolveName(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, + lpMapiRecipDesc*); + ULONG MAPIAddress(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, + lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*); + ULONG MAPIFreeBuffer(LPVOID); + ULONG MAPIDetails(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG); + ULONG MAPISaveMail(LHANDLE, ULONG, lpMapiMessage lpszMessage, FLAGS, + ULONG, LPSTR); + ULONG MAPIDeleteMail(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG); + ULONG MAPILogoff(LHANDLE, ULONG, FLAGS, ULONG); + // Netscape extensions + ULONG MAPIGetNetscapeVersion(); + ULONG MAPI_NSCP_SynchronizeClient(LHANDLE, ULONG); + + // Handles for use with GetProcAddress + alias ULONG function(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE) + LPMAPILOGON; + alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG) + LPMAPISENDMAIL; + alias ULONG function(ULONG, LPSTR, LPSTR, LPSTR, ULONG) + LPMAPISENDDOCUMENTS; + alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage*) + LPMAPIREADMAIL; + alias ULONG function(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR) + LPMAPIFINDNEXT; + alias ULONG function(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, + lpMapiRecipDesc*) LPMAPIRESOLVENAME; + alias ULONG function(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, + lpMapiRecipDesc, FLAGS, ULONG, LPULONG, lpMapiRecipDesc*) LPMAPIADDRESS; + alias ULONG function(LPVOID lpv) LPMAPIFREEBUFFER; + alias ULONG function(LHANDLE, ULONG, lpMapiRecipDesc, FLAGS, ULONG) + LPMAPIDETAILS; + alias ULONG function(LHANDLE, ULONG, lpMapiMessage, FLAGS, ULONG, LPSTR) + LPMAPISAVEMAIL; + alias ULONG function(LHANDLE lpSession, ULONG, LPSTR, FLAGS, ULONG) + LPMAPIDELETEMAIL; + alias ULONG function(LHANDLE, ULONG, FLAGS, ULONG) LPMAPILOGOFF; +} Index: src/win32/mciavi.d ================================================================== --- src/win32/mciavi.d +++ src/win32/mciavi.d @@ -1,40 +1,40 @@ -/***********************************************************************\ -* mciavi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.mciavi; - -private import win32.mmsystem; - -// FIXME: check types and grouping of constants - -const MCI_MCIAVI_PLAY_WINDOW = 0x01000000; -const MCI_MCIAVI_PLAY_FULLSCREEN = 0x02000000; -const MCI_MCIAVI_PLAY_FULLBY2 = 0x04000000; - -enum { - MCI_AVI_STATUS_FRAMES_SKIPPED = 0x00008001, - MCI_AVI_STATUS_LAST_PLAY_SPEED = 0x00008002, - MCI_AVI_STATUS_AUDIO_BREAKS = 0x00008003, - MCI_AVI_SETVIDEO_DRAW_PROCEDURE = 0x00008000, - MCI_AVI_SETVIDEO_PALETTE_COLOR = 0x00008100, - MCI_AVI_SETVIDEO_PALETTE_HALFTONE = 0x0000FFFF -} - -enum { - MCIERR_AVI_OLDAVIFORMAT = MCIERR_CUSTOM_DRIVER_BASE + 100, - MCIERR_AVI_NOTINTERLEAVED, - MCIERR_AVI_NODISPDIB, - MCIERR_AVI_CANTPLAYFULLSCREEN, - MCIERR_AVI_TOOBIGFORVGA, - MCIERR_AVI_NOCOMPRESSOR, - MCIERR_AVI_DISPLAYERROR, - MCIERR_AVI_AUDIOERROR, - MCIERR_AVI_BADPALETTE // = MCIERR_CUSTOM_DRIVER_BASE + 108 -} +/***********************************************************************\ +* mciavi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mciavi; + +private import win32.mmsystem; + +// FIXME: check types and grouping of constants + +const MCI_MCIAVI_PLAY_WINDOW = 0x01000000; +const MCI_MCIAVI_PLAY_FULLSCREEN = 0x02000000; +const MCI_MCIAVI_PLAY_FULLBY2 = 0x04000000; + +enum { + MCI_AVI_STATUS_FRAMES_SKIPPED = 0x00008001, + MCI_AVI_STATUS_LAST_PLAY_SPEED = 0x00008002, + MCI_AVI_STATUS_AUDIO_BREAKS = 0x00008003, + MCI_AVI_SETVIDEO_DRAW_PROCEDURE = 0x00008000, + MCI_AVI_SETVIDEO_PALETTE_COLOR = 0x00008100, + MCI_AVI_SETVIDEO_PALETTE_HALFTONE = 0x0000FFFF +} + +enum { + MCIERR_AVI_OLDAVIFORMAT = MCIERR_CUSTOM_DRIVER_BASE + 100, + MCIERR_AVI_NOTINTERLEAVED, + MCIERR_AVI_NODISPDIB, + MCIERR_AVI_CANTPLAYFULLSCREEN, + MCIERR_AVI_TOOBIGFORVGA, + MCIERR_AVI_NOCOMPRESSOR, + MCIERR_AVI_DISPLAYERROR, + MCIERR_AVI_AUDIOERROR, + MCIERR_AVI_BADPALETTE // = MCIERR_CUSTOM_DRIVER_BASE + 108 +} Index: src/win32/mcx.d ================================================================== --- src/win32/mcx.d +++ src/win32/mcx.d @@ -1,99 +1,99 @@ -/***********************************************************************\ -* mcx.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.mcx; - -private import win32.windef; - -const DWORD - DIALOPTION_BILLING = 64, - DIALOPTION_QUIET = 128, - DIALOPTION_DIALTONE = 256; - -const DWORD - MDMVOLFLAG_LOW = 1, - MDMVOLFLAG_MEDIUM = 2, - MDMVOLFLAG_HIGH = 4; - -enum : DWORD { - MDMVOL_LOW = 0, - MDMVOL_MEDIUM = 1, - MDMVOL_HIGH = 2 -} - -const DWORD - MDMSPKRFLAG_OFF = 1, - MDMSPKRFLAG_DIAL = 2, - MDMSPKRFLAG_ON = 4, - MDMSPKRFLAG_CALLSETUP = 8; - -enum : DWORD { - MDMSPKR_OFF, - MDMSPKR_DIAL, - MDMSPKR_ON, - MDMSPKR_CALLSETUP -} - -const DWORD - MDM_COMPRESSION = 0x0001, - MDM_ERROR_CONTROL = 0x0002, - MDM_FORCED_EC = 0x0004, - MDM_CELLULAR = 0x0008, - MDM_FLOWCONTROL_HARD = 0x0010, - MDM_FLOWCONTROL_SOFT = 0x0020, - MDM_CCITT_OVERRIDE = 0x0040, - MDM_SPEED_ADJUST = 0x0080, - MDM_TONE_DIAL = 0x0100, - MDM_BLIND_DIAL = 0x0200, - MDM_V23_OVERRIDE = 0x0400; - -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; - BYTE _abVariablePortion; - - BYTE* abVariablePortion() { return &_abVariablePortion; } -} -alias MODEMDEVCAPS* PMODEMDEVCAPS, LPMODEMDEVCAPS; - -struct MODEMSETTINGS { - DWORD dwActualSize; - DWORD dwRequiredSize; - DWORD dwDevSpecificOffset; - DWORD dwDevSpecificSize; - DWORD dwCallSetupFailTimer; - DWORD dwInactivityTimeout; - DWORD dwSpeakerVolume; - DWORD dwSpeakerMode; - DWORD dwPreferredModemOptions; - DWORD dwNegotiatedModemOptions; - DWORD dwNegotiatedDCERate; - BYTE _abVariablePortion; - - BYTE* abVariablePortion() { return &_abVariablePortion; } -} -alias MODEMSETTINGS* PMODEMSETTINGS, LPMODEMSETTINGS; +/***********************************************************************\ +* mcx.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mcx; + +private import win32.windef; + +const DWORD + DIALOPTION_BILLING = 64, + DIALOPTION_QUIET = 128, + DIALOPTION_DIALTONE = 256; + +const DWORD + MDMVOLFLAG_LOW = 1, + MDMVOLFLAG_MEDIUM = 2, + MDMVOLFLAG_HIGH = 4; + +enum : DWORD { + MDMVOL_LOW = 0, + MDMVOL_MEDIUM = 1, + MDMVOL_HIGH = 2 +} + +const DWORD + MDMSPKRFLAG_OFF = 1, + MDMSPKRFLAG_DIAL = 2, + MDMSPKRFLAG_ON = 4, + MDMSPKRFLAG_CALLSETUP = 8; + +enum : DWORD { + MDMSPKR_OFF, + MDMSPKR_DIAL, + MDMSPKR_ON, + MDMSPKR_CALLSETUP +} + +const DWORD + MDM_COMPRESSION = 0x0001, + MDM_ERROR_CONTROL = 0x0002, + MDM_FORCED_EC = 0x0004, + MDM_CELLULAR = 0x0008, + MDM_FLOWCONTROL_HARD = 0x0010, + MDM_FLOWCONTROL_SOFT = 0x0020, + MDM_CCITT_OVERRIDE = 0x0040, + MDM_SPEED_ADJUST = 0x0080, + MDM_TONE_DIAL = 0x0100, + MDM_BLIND_DIAL = 0x0200, + MDM_V23_OVERRIDE = 0x0400; + +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; + BYTE _abVariablePortion; + + BYTE* abVariablePortion() { return &_abVariablePortion; } +} +alias MODEMDEVCAPS* PMODEMDEVCAPS, LPMODEMDEVCAPS; + +struct MODEMSETTINGS { + DWORD dwActualSize; + DWORD dwRequiredSize; + DWORD dwDevSpecificOffset; + DWORD dwDevSpecificSize; + DWORD dwCallSetupFailTimer; + DWORD dwInactivityTimeout; + DWORD dwSpeakerVolume; + DWORD dwSpeakerMode; + DWORD dwPreferredModemOptions; + DWORD dwNegotiatedModemOptions; + DWORD dwNegotiatedDCERate; + BYTE _abVariablePortion; + + BYTE* abVariablePortion() { return &_abVariablePortion; } +} +alias MODEMSETTINGS* PMODEMSETTINGS, LPMODEMSETTINGS; Index: src/win32/mgmtapi.d ================================================================== --- src/win32/mgmtapi.d +++ src/win32/mgmtapi.d @@ -1,47 +1,47 @@ -/***********************************************************************\ -* mgmtapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.mgmtapi; - -import win32.snmp; -private import win32.windef; - -enum { - SNMP_MGMTAPI_TIMEOUT = 40, - SNMP_MGMTAPI_SELECT_FDERRORS, - SNMP_MGMTAPI_TRAP_ERRORS, - SNMP_MGMTAPI_TRAP_DUPINIT, - SNMP_MGMTAPI_NOTRAPS, - SNMP_MGMTAPI_AGAIN, - SNMP_MGMTAPI_INVALID_CTL, - SNMP_MGMTAPI_INVALID_SESSION, - SNMP_MGMTAPI_INVALID_BUFFER // = 48 -} - -const MGMCTL_SETAGENTPORT = 1; - -alias PVOID LPSNMP_MGR_SESSION; - -extern (Windows) { - BOOL SnmpMgrClose(LPSNMP_MGR_SESSION); - BOOL SnmpMgrCtl(LPSNMP_MGR_SESSION, DWORD, LPVOID, DWORD, LPVOID, DWORD, - LPDWORD); - BOOL SnmpMgrGetTrap(AsnObjectIdentifier*, AsnNetworkAddress*, - AsnInteger*, AsnInteger*, AsnTimeticks*, SnmpVarBindList*); - BOOL SnmpMgrGetTrapEx(AsnObjectIdentifier*, AsnNetworkAddress*, - AsnNetworkAddress*, AsnInteger*, AsnInteger*, AsnOctetString*, - AsnTimeticks*, SnmpVarBindList*); - BOOL SnmpMgrOidToStr(AsnObjectIdentifier*, LPSTR*); - LPSNMP_MGR_SESSION SnmpMgrOpen(LPSTR, LPSTR, INT, INT); - INT SnmpMgrRequest(LPSNMP_MGR_SESSION, BYTE, SnmpVarBindList*, - AsnInteger*, AsnInteger*); - BOOL SnmpMgrStrToOid(LPSTR, AsnObjectIdentifier*); - BOOL SnmpMgrTrapListen(HANDLE*); -} +/***********************************************************************\ +* mgmtapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mgmtapi; + +import win32.snmp; +private import win32.windef; + +enum { + SNMP_MGMTAPI_TIMEOUT = 40, + SNMP_MGMTAPI_SELECT_FDERRORS, + SNMP_MGMTAPI_TRAP_ERRORS, + SNMP_MGMTAPI_TRAP_DUPINIT, + SNMP_MGMTAPI_NOTRAPS, + SNMP_MGMTAPI_AGAIN, + SNMP_MGMTAPI_INVALID_CTL, + SNMP_MGMTAPI_INVALID_SESSION, + SNMP_MGMTAPI_INVALID_BUFFER // = 48 +} + +const MGMCTL_SETAGENTPORT = 1; + +alias PVOID LPSNMP_MGR_SESSION; + +extern (Windows) { + BOOL SnmpMgrClose(LPSNMP_MGR_SESSION); + BOOL SnmpMgrCtl(LPSNMP_MGR_SESSION, DWORD, LPVOID, DWORD, LPVOID, DWORD, + LPDWORD); + BOOL SnmpMgrGetTrap(AsnObjectIdentifier*, AsnNetworkAddress*, + AsnInteger*, AsnInteger*, AsnTimeticks*, SnmpVarBindList*); + BOOL SnmpMgrGetTrapEx(AsnObjectIdentifier*, AsnNetworkAddress*, + AsnNetworkAddress*, AsnInteger*, AsnInteger*, AsnOctetString*, + AsnTimeticks*, SnmpVarBindList*); + BOOL SnmpMgrOidToStr(AsnObjectIdentifier*, LPSTR*); + LPSNMP_MGR_SESSION SnmpMgrOpen(LPSTR, LPSTR, INT, INT); + INT SnmpMgrRequest(LPSNMP_MGR_SESSION, BYTE, SnmpVarBindList*, + AsnInteger*, AsnInteger*); + BOOL SnmpMgrStrToOid(LPSTR, AsnObjectIdentifier*); + BOOL SnmpMgrTrapListen(HANDLE*); +} Index: src/win32/mmsystem.d ================================================================== --- src/win32/mmsystem.d +++ src/win32/mmsystem.d @@ -1,2269 +1,2269 @@ -/***********************************************************************\ -* mmsystem.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.mmsystem; -pragma(lib, "winmm.lib"); - -/* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define - * compile-time constants, so they are implemented as templates. - */ - -private import win32.w32api, win32.windef, win32.winver; - -align(1): - -const MAXPNAMELEN = 32; -const MAXERRORLENGTH = 256; -const MAX_JOYSTICKOEMVXDNAME = 260; - -const TIME_MS = 1; -const TIME_SAMPLES = 2; -const TIME_BYTES = 4; -const TIME_SMPTE = 8; -const TIME_MIDI = 16; -const TIME_TICKS = 32; - -template MAKEFOURCC(char c0, char c1, char c2, char c3) -{ - const DWORD MAKEFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); -} - -template mmioFOURCC(char c0, char c1, char c2, char c3) -{ - const DWORD mmioFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); -} - -enum { - MM_JOY1MOVE = 0x3A0, - MM_JOY2MOVE, - MM_JOY1ZMOVE, - MM_JOY2ZMOVE, // = 0x3A3 - MM_JOY1BUTTONDOWN = 0x3B5, - MM_JOY2BUTTONDOWN, - MM_JOY1BUTTONUP, - MM_JOY2BUTTONUP, - MM_MCINOTIFY, // = 0x3B9 - MM_WOM_OPEN = 0x3BB, - MM_WOM_CLOSE, - MM_WOM_DONE, - MM_WIM_OPEN, - MM_WIM_CLOSE, - MM_WIM_DATA, - MM_MIM_OPEN, - MM_MIM_CLOSE, - MM_MIM_DATA, - MM_MIM_LONGDATA, - MM_MIM_ERROR, - MM_MIM_LONGERROR, - MM_MOM_OPEN, - MM_MOM_CLOSE, - MM_MOM_DONE, // = 0x3C9 - MM_DRVM_OPEN = 0x3D0, - MM_DRVM_CLOSE, - MM_DRVM_DATA, - MM_DRVM_ERROR, - MM_STREAM_OPEN, - MM_STREAM_CLOSE, - MM_STREAM_DONE, - MM_STREAM_ERROR, // = 0x3D7 - MM_MOM_POSITIONCB = 0x3CA, - MM_MCISIGNAL, - MM_MIM_MOREDATA, // = 0x3CC - MM_MIXM_LINE_CHANGE = 0x3D0, - MM_MIXM_CONTROL_CHANGE = 0x3D1 -} - -const MMSYSERR_BASE = 0; -const WAVERR_BASE = 32; -const MIDIERR_BASE = 64; -const TIMERR_BASE = 96; -const JOYERR_BASE = 160; -const MCIERR_BASE = 256; -const MIXERR_BASE = 1024; -const MCI_STRING_OFFSET = 512; -const MCI_VD_OFFSET = 1024; -const MCI_CD_OFFSET = 1088; -const MCI_WAVE_OFFSET = 1152; -const MCI_SEQ_OFFSET = 1216; - -enum { - MMSYSERR_NOERROR = 0, - MMSYSERR_ERROR = MMSYSERR_BASE+1, - MMSYSERR_BADDEVICEID, - MMSYSERR_NOTENABLED, - MMSYSERR_ALLOCATED, - MMSYSERR_INVALHANDLE, - MMSYSERR_NODRIVER, - MMSYSERR_NOMEM, - MMSYSERR_NOTSUPPORTED, - MMSYSERR_BADERRNUM, - MMSYSERR_INVALFLAG, - MMSYSERR_INVALPARAM, - MMSYSERR_HANDLEBUSY, - MMSYSERR_INVALIDALIAS, - MMSYSERR_BADDB, - MMSYSERR_KEYNOTFOUND, - MMSYSERR_READERROR, - MMSYSERR_WRITEERROR, - MMSYSERR_DELETEERROR, - MMSYSERR_VALNOTFOUND, - MMSYSERR_NODRIVERCB, // = MMSYSERR_BASE+20 - MMSYSERR_LASTERROR = MMSYSERR_NODRIVERCB -} - -enum { - DRV_LOAD = 1, - DRV_ENABLE, - DRV_OPEN, - DRV_CLOSE, - DRV_DISABLE, - DRV_FREE, - DRV_CONFIGURE, - DRV_QUERYCONFIGURE, - DRV_INSTALL, - DRV_REMOVE, - DRV_EXITSESSION, - DRV_POWER -} - -const DRV_RESERVED = 0x800; -const DRV_USER = 0x4000; - -const DRVCNF_CANCEL = 0; -const DRVCNF_OK = 1; -const DRVCNF_RESTART = 2; -const DRV_CANCEL = DRVCNF_CANCEL; -const DRV_OK = DRVCNF_OK; -const DRV_RESTART = DRVCNF_RESTART; -const DRV_MCI_FIRST = DRV_RESERVED; -const DRV_MCI_LAST = DRV_RESERVED + 0xFFF; - -const CALLBACK_TYPEMASK = 0x70000; -const CALLBACK_NULL = 0; -const CALLBACK_WINDOW = 0x10000; -const CALLBACK_TASK = 0x20000; -const CALLBACK_FUNCTION = 0x30000; -const CALLBACK_THREAD = CALLBACK_TASK; -const CALLBACK_EVENT = 0x50000; - -const SND_SYNC=0; -const SND_ASYNC=1; -const SND_NODEFAULT=2; -const SND_MEMORY=4; -const SND_LOOP=8; -const SND_NOSTOP=16; -const SND_NOWAIT=0x2000; -const SND_ALIAS=0x10000; -const SND_ALIAS_ID=0x110000; -const SND_FILENAME=0x20000; -const SND_RESOURCE=0x40004; -const SND_PURGE=0x40; -const SND_APPLICATION=0x80; -const SND_ALIAS_START=0; - -template sndAlias(char c0, char c1) -{ - const DWORD sndAlias = SND_ALIAS_START + c0 | (c1<<8); -} - -const SND_ALIAS_SYSTEMASTERISK = sndAlias!('S','*'); -const SND_ALIAS_SYSTEMQUESTION = sndAlias!('S','?'); -const SND_ALIAS_SYSTEMHAND = sndAlias!('S','H'); -const SND_ALIAS_SYSTEMEXIT = sndAlias!('S','E'); -const SND_ALIAS_SYSTEMSTART = sndAlias!('S','S'); -const SND_ALIAS_SYSTEMWELCOME = sndAlias!('S','W'); -const SND_ALIAS_SYSTEMEXCLAMATION = sndAlias!('S','!'); -const SND_ALIAS_SYSTEMDEFAULT = sndAlias!('S','D'); - -enum { - WAVERR_BADFORMAT = (WAVERR_BASE + 0), - WAVERR_STILLPLAYING, - WAVERR_UNPREPARED, - WAVERR_SYNC, // = WAVERR_BASE + 3; - WAVERR_LASTERROR = WAVERR_SYNC -} - -const WOM_OPEN = MM_WOM_OPEN; -const WOM_CLOSE = MM_WOM_CLOSE; -const WOM_DONE = MM_WOM_DONE; -const WIM_OPEN = MM_WIM_OPEN; -const WIM_CLOSE = MM_WIM_CLOSE; -const WIM_DATA = MM_WIM_DATA; - -const UINT WAVE_MAPPER= -1; // FIXME: This doesn't make sense! -const WAVE_FORMAT_QUERY=1; -const WAVE_ALLOWSYNC=2; -const WAVE_MAPPED=4; -const WAVE_FORMAT_DIRECT=8; -const WAVE_FORMAT_DIRECT_QUERY=(WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT); -const WHDR_DONE=1; -const WHDR_PREPARED=2; -const WHDR_BEGINLOOP=4; -const WHDR_ENDLOOP=8; -const WHDR_INQUEUE=16; - -const WAVECAPS_PITCH=1; -const WAVECAPS_PLAYBACKRATE=2; -const WAVECAPS_VOLUME=4; -const WAVECAPS_LRVOLUME=8; -const WAVECAPS_SYNC=16; -const WAVECAPS_SAMPLEACCURATE=32; -const WAVECAPS_DIRECTSOUND=64; - -const WAVE_INVALIDFORMAT=0; -const WAVE_FORMAT_1M08=1; -const WAVE_FORMAT_1S08=2; -const WAVE_FORMAT_1M16=4; -const WAVE_FORMAT_1S16=8; -const WAVE_FORMAT_2M08=16; -const WAVE_FORMAT_2S08=32; -const WAVE_FORMAT_2M16=64; -const WAVE_FORMAT_2S16=128; -const WAVE_FORMAT_4M08=256; -const WAVE_FORMAT_4S08=512; -const WAVE_FORMAT_4M16=1024; -const WAVE_FORMAT_4S16=2048; -const WAVE_FORMAT_PCM=1; - -enum { - MIDIERR_UNPREPARED = MIDIERR_BASE, - MIDIERR_STILLPLAYING, - MIDIERR_NOMAP, - MIDIERR_NOTREADY, - MIDIERR_NODEVICE, - MIDIERR_INVALIDSETUP, - MIDIERR_BADOPENMODE, - MIDIERR_DONT_CONTINUE, // = MIDIERR_BASE+7 - MIDIERR_LASTERROR = MIDIERR_DONT_CONTINUE -} - -const MIDIPATCHSIZE=128; - -const MIM_OPEN=MM_MIM_OPEN; -const MIM_CLOSE=MM_MIM_CLOSE; -const MIM_DATA=MM_MIM_DATA; -const MIM_LONGDATA=MM_MIM_LONGDATA; -const MIM_ERROR=MM_MIM_ERROR; -const MIM_LONGERROR=MM_MIM_LONGERROR; -const MOM_OPEN=MM_MOM_OPEN; -const MOM_CLOSE=MM_MOM_CLOSE; -const MOM_DONE=MM_MOM_DONE; -const MIM_MOREDATA=MM_MIM_MOREDATA; -const MOM_POSITIONCB=MM_MOM_POSITIONCB; - -const UINT MIDIMAPPER= -1; // FIXME: uint is nonsense for this! -const UINT MIDI_MAPPER= -1; // FIXME: uint is nonsense for this! -const MIDI_IO_STATUS=32; -const MIDI_CACHE_ALL=1; -const MIDI_CACHE_BESTFIT=2; -const MIDI_CACHE_QUERY=3; -const MIDI_UNCACHE=4; -const MOD_MIDIPORT=1; -const MOD_SYNTH=2; -const MOD_SQSYNTH=3; -const MOD_FMSYNTH=4; -const MOD_MAPPER=5; -const MIDICAPS_VOLUME=1; -const MIDICAPS_LRVOLUME=2; -const MIDICAPS_CACHE=4; -const MIDICAPS_STREAM=8; -const MHDR_DONE=1; -const MHDR_PREPARED=2; -const MHDR_INQUEUE=4; -const MHDR_ISSTRM=8; -const MEVT_F_SHORT=0; -const MEVT_F_LONG=0x80000000; -const MEVT_F_CALLBACK=0x40000000; - -BYTE MEVT_EVENTTYPE(DWORD x) { return cast(BYTE)((x>>24) &0xFF); } -DWORD MEVT_EVENTPARM(DWORD x) { return x & 0xFFFFFF; } - -const MEVT_SHORTMSG=0; -const MEVT_TEMPO=1; -const MEVT_NOP=2; - -const BYTE MEVT_LONGMSG = 0x80; -const BYTE MEVT_COMMENT = 0x82; -const BYTE MEVT_VERSION = 0x84; - -const MIDISTRM_ERROR = -2; - -const MIDIPROP_SET = 0x80000000; -const MIDIPROP_GET = 0x40000000; -const MIDIPROP_TIMEDIV = 1; -const MIDIPROP_TEMPO = 2; - -const UINT AUX_MAPPER = -1; - -const AUXCAPS_CDAUDIO=1; -const AUXCAPS_AUXIN=2; -const AUXCAPS_VOLUME=1; -const AUXCAPS_LRVOLUME=2; -const MIXER_SHORT_NAME_CHARS=16; -const MIXER_LONG_NAME_CHARS=64; -const MIXERR_INVALLINE=MIXERR_BASE; -const MIXERR_INVALCONTROL=(MIXERR_BASE+1); -const MIXERR_INVALVALUE=(MIXERR_BASE+2); -const MIXERR_LASTERROR=(MIXERR_BASE+2); - -const MIXER_OBJECTF_HANDLE=0x80000000; -const MIXER_OBJECTF_MIXER=0; -const MIXER_OBJECTF_HMIXER=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER); -const MIXER_OBJECTF_WAVEOUT=0x10000000; -const MIXER_OBJECTF_HWAVEOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT); -const MIXER_OBJECTF_WAVEIN=0x20000000; -const MIXER_OBJECTF_HWAVEIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN); -const MIXER_OBJECTF_MIDIOUT=0x30000000; -const MIXER_OBJECTF_HMIDIOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT); -const MIXER_OBJECTF_MIDIIN=0x40000000; -const MIXER_OBJECTF_HMIDIIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN); -const MIXER_OBJECTF_AUX=0x50000000; - -const MIXERLINE_LINEF_ACTIVE=1; -const MIXERLINE_LINEF_DISCONNECTED=0x8000; -const MIXERLINE_LINEF_SOURCE=0x80000000; - -const MIXERLINE_COMPONENTTYPE_DST_FIRST=0; -const MIXERLINE_COMPONENTTYPE_DST_UNDEFINED=MIXERLINE_COMPONENTTYPE_DST_FIRST; -const MIXERLINE_COMPONENTTYPE_DST_DIGITAL=(MIXERLINE_COMPONENTTYPE_DST_FIRST+1); -const MIXERLINE_COMPONENTTYPE_DST_LINE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+2); -const MIXERLINE_COMPONENTTYPE_DST_MONITOR=(MIXERLINE_COMPONENTTYPE_DST_FIRST+3); -const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS=(MIXERLINE_COMPONENTTYPE_DST_FIRST+4); -const MIXERLINE_COMPONENTTYPE_DST_HEADPHONES=(MIXERLINE_COMPONENTTYPE_DST_FIRST+5); -const MIXERLINE_COMPONENTTYPE_DST_TELEPHONE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+6); -const MIXERLINE_COMPONENTTYPE_DST_WAVEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+7); -const MIXERLINE_COMPONENTTYPE_DST_VOICEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); -const MIXERLINE_COMPONENTTYPE_DST_LAST=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); -const MIXERLINE_COMPONENTTYPE_SRC_FIRST=0x1000; -const MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED=MIXERLINE_COMPONENTTYPE_SRC_FIRST; -const MIXERLINE_COMPONENTTYPE_SRC_DIGITAL=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+1); -const MIXERLINE_COMPONENTTYPE_SRC_LINE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+2); -const MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+3); -const MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+4); -const MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+5); -const MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+6); -const MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+7); -const MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+8); -const MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+9); -const MIXERLINE_COMPONENTTYPE_SRC_ANALOG=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); -const MIXERLINE_COMPONENTTYPE_SRC_LAST=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); - -enum { - MIXERLINE_TARGETTYPE_UNDEFINED = 0, - MIXERLINE_TARGETTYPE_WAVEOUT, - MIXERLINE_TARGETTYPE_WAVEIN, - MIXERLINE_TARGETTYPE_MIDIOUT, - MIXERLINE_TARGETTYPE_MIDIIN, - MIXERLINE_TARGETTYPE_AUX // =5 -} - -const MIXER_GETLINEINFOF_DESTINATION=0; -const MIXER_GETLINEINFOF_SOURCE=1; -const MIXER_GETLINEINFOF_LINEID=2; -const MIXER_GETLINEINFOF_COMPONENTTYPE=3; -const MIXER_GETLINEINFOF_TARGETTYPE=4; -const MIXER_GETLINEINFOF_QUERYMASK=15; - -const MIXERCONTROL_CONTROLF_UNIFORM=1; -const MIXERCONTROL_CONTROLF_MULTIPLE=2; -const MIXERCONTROL_CONTROLF_DISABLED=0x80000000; -const MIXERCONTROL_CT_CLASS_MASK=0xF0000000; -const MIXERCONTROL_CT_CLASS_CUSTOM=0; -const MIXERCONTROL_CT_CLASS_METER=0x10000000; -const MIXERCONTROL_CT_CLASS_SWITCH=0x20000000; -const MIXERCONTROL_CT_CLASS_NUMBER=0x30000000; -const MIXERCONTROL_CT_CLASS_SLIDER=0x40000000; -const MIXERCONTROL_CT_CLASS_FADER=0x50000000; -const MIXERCONTROL_CT_CLASS_TIME=0x60000000; -const MIXERCONTROL_CT_CLASS_LIST=0x70000000; -const MIXERCONTROL_CT_SUBCLASS_MASK=0xF000000; -const MIXERCONTROL_CT_SC_SWITCH_BOOLEAN=0; -const MIXERCONTROL_CT_SC_SWITCH_BUTTON=0x1000000; -const MIXERCONTROL_CT_SC_METER_POLLED=0; -const MIXERCONTROL_CT_SC_TIME_MICROSECS=0; -const MIXERCONTROL_CT_SC_TIME_MILLISECS=0x1000000; -const MIXERCONTROL_CT_SC_LIST_SINGLE=0; -const MIXERCONTROL_CT_SC_LIST_MULTIPLE=0x1000000; -const MIXERCONTROL_CT_UNITS_MASK=0xFF0000; -const MIXERCONTROL_CT_UNITS_CUSTOM=0; -const MIXERCONTROL_CT_UNITS_BOOLEAN=0x10000; -const MIXERCONTROL_CT_UNITS_SIGNED=0x20000; -const MIXERCONTROL_CT_UNITS_UNSIGNED=0x30000; -const MIXERCONTROL_CT_UNITS_DECIBELS=0x40000; -const MIXERCONTROL_CT_UNITS_PERCENT=0x50000; - -const MIXERCONTROL_CONTROLTYPE_CUSTOM=(MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM); -const MIXERCONTROL_CONTROLTYPE_BOOLEANMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_SIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_PEAKMETER=(MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1); -const MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_BOOLEAN=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_ONOFF=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+1); -const MIXERCONTROL_CONTROLTYPE_MUTE=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+2); -const MIXERCONTROL_CONTROLTYPE_MONO=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+3); -const MIXERCONTROL_CONTROLTYPE_LOUDNESS=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+4); -const MIXERCONTROL_CONTROLTYPE_STEREOENH=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+5); -const MIXERCONTROL_CONTROLTYPE_BUTTON=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_DECIBELS=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS); -const MIXERCONTROL_CONTROLTYPE_SIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_UNSIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_PERCENT=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT); -const MIXERCONTROL_CONTROLTYPE_SLIDER=(MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED); -const MIXERCONTROL_CONTROLTYPE_PAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+1); -const MIXERCONTROL_CONTROLTYPE_QSOUNDPAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+2); -const MIXERCONTROL_CONTROLTYPE_FADER=(MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_VOLUME=(MIXERCONTROL_CONTROLTYPE_FADER+1); -const MIXERCONTROL_CONTROLTYPE_BASS=(MIXERCONTROL_CONTROLTYPE_FADER+2); -const MIXERCONTROL_CONTROLTYPE_TREBLE=(MIXERCONTROL_CONTROLTYPE_FADER+3); -const MIXERCONTROL_CONTROLTYPE_EQUALIZER=(MIXERCONTROL_CONTROLTYPE_FADER+4); -const MIXERCONTROL_CONTROLTYPE_SINGLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_MUX=(MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1); -const MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN); -const MIXERCONTROL_CONTROLTYPE_MIXER=(MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1); -const MIXERCONTROL_CONTROLTYPE_MICROTIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED); -const MIXERCONTROL_CONTROLTYPE_MILLITIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED); - -const MIXER_GETLINECONTROLSF_ALL=0; -const MIXER_GETLINECONTROLSF_ONEBYID=1; -const MIXER_GETLINECONTROLSF_ONEBYTYPE=2; -const MIXER_GETLINECONTROLSF_QUERYMASK=15; -const MIXER_GETCONTROLDETAILSF_VALUE=0; -const MIXER_GETCONTROLDETAILSF_LISTTEXT=1; -const MIXER_GETCONTROLDETAILSF_QUERYMASK=15; -const MIXER_SETCONTROLDETAILSF_VALUE=0; -const MIXER_SETCONTROLDETAILSF_CUSTOM=1; -const MIXER_SETCONTROLDETAILSF_QUERYMASK=15; - -const TIMERR_NOERROR=0; -const TIMERR_NOCANDO=(TIMERR_BASE+1); -const TIMERR_STRUCT=(TIMERR_BASE+33); -const TIME_ONESHOT=0; -const TIME_PERIODIC=1; -const TIME_CALLBACK_FUNCTION=0; -const TIME_CALLBACK_EVENT_SET=16; -const TIME_CALLBACK_EVENT_PULSE=32; - -static if (WINVER >= 0x0501) { - -const TIME_KILL_SYNCHRONOUS=0x0100; - -} - -const JOYERR_NOERROR = 0; -const JOYERR_PARMS=(JOYERR_BASE+5); -const JOYERR_NOCANDO=(JOYERR_BASE+6); -const JOYERR_UNPLUGGED=(JOYERR_BASE+7); - -const JOY_BUTTON1=1; -const JOY_BUTTON2=2; -const JOY_BUTTON3=4; -const JOY_BUTTON4=8; -const JOY_BUTTON1CHG=256; -const JOY_BUTTON2CHG=512; -const JOY_BUTTON3CHG=1024; -const JOY_BUTTON4CHG=2048; -const JOY_BUTTON5=257; -const JOY_BUTTON6=513; -const JOY_BUTTON7=1025; -const JOY_BUTTON8=2049; -const JOY_BUTTON9=256; -const JOY_BUTTON10=512; -const JOY_BUTTON11=1024; -const JOY_BUTTON12=2048; -const JOY_BUTTON13=4096; -const JOY_BUTTON14=8192; -const JOY_BUTTON15=16384; -const JOY_BUTTON16=32768; -const JOY_BUTTON17=65536; -const JOY_BUTTON18=0x20000; -const JOY_BUTTON19=0x40000; -const JOY_BUTTON20=0x80000; -const JOY_BUTTON21=0x100000; -const JOY_BUTTON22=0x200000; -const JOY_BUTTON23=0x400000; -const JOY_BUTTON24=0x800000; -const JOY_BUTTON25=0x1000000; -const JOY_BUTTON26=0x2000000; -const JOY_BUTTON27=0x4000000; -const JOY_BUTTON28=0x8000000; -const JOY_BUTTON29=0x10000000; -const JOY_BUTTON30=0x20000000; -const JOY_BUTTON31=0x40000000; -const JOY_BUTTON32=0x80000000; - -enum : DWORD { - JOY_POVCENTERED = -1, - JOY_POVFORWARD = 0, - JOY_POVBACKWARD = 18000, - JOY_POVLEFT = 27000, - JOY_POVRIGHT = 9000 -} - -const DWORD - JOY_RETURNX = 0x00000001, - JOY_RETURNY = 0x00000002, - JOY_RETURNZ = 0x00000004, - JOY_RETURNR = 0x00000008, - JOY_RETURNU = 0x00000010, - JOY_RETURNV = 0x00000020, - JOY_RETURNPOV = 0x00000040, - JOY_RETURNBUTTONS = 0x00000080, - JOY_RETURNRAWDATA = 0x00000100, - JOY_RETURNPOVCTS = 0x00000200, - JOY_RETURNCENTERED = 0x00000400, - JOY_USEDEADZONE = 0x00000800, - JOY_RETURNALL = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR - | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV - | JOY_RETURNBUTTONS, - JOY_CAL_READALWAYS = 0x00010000, - JOY_CAL_READXYONLY = 0x00020000, - JOY_CAL_READ3 = 0x00040000, - JOY_CAL_READ4 = 0x00080000, - JOY_CAL_READXONLY = 0x00100000, - JOY_CAL_READYONLY = 0x00200000, - JOY_CAL_READ5 = 0x00400000, - JOY_CAL_READ6 = 0x00800000, - JOY_CAL_READZONLY = 0x01000000, - JOY_CAL_READRONLY = 0x02000000, - JOY_CAL_READUONLY = 0x04000000, - JOY_CAL_READVONLY = 0x08000000; - -const JOYSTICKID1=0; -const JOYSTICKID2=1; - -const JOYCAPS_HASZ=1; -const JOYCAPS_HASR=2; -const JOYCAPS_HASU=4; -const JOYCAPS_HASV=8; -const JOYCAPS_HASPOV=16; -const JOYCAPS_POV4DIR=32; -const JOYCAPS_POVCTS=64; - -const MMIOERR_BASE=256; -const MMIOERR_FILENOTFOUND=(MMIOERR_BASE+1); -const MMIOERR_OUTOFMEMORY=(MMIOERR_BASE+2); -const MMIOERR_CANNOTOPEN=(MMIOERR_BASE+3); -const MMIOERR_CANNOTCLOSE=(MMIOERR_BASE+4); -const MMIOERR_CANNOTREAD=(MMIOERR_BASE+5); -const MMIOERR_CANNOTWRITE=(MMIOERR_BASE+6); -const MMIOERR_CANNOTSEEK=(MMIOERR_BASE+7); -const MMIOERR_CANNOTEXPAND=(MMIOERR_BASE+8); -const MMIOERR_CHUNKNOTFOUND=(MMIOERR_BASE+9); -const MMIOERR_UNBUFFERED=(MMIOERR_BASE+10); -const MMIOERR_PATHNOTFOUND=(MMIOERR_BASE+11); -const MMIOERR_ACCESSDENIED=(MMIOERR_BASE+12); -const MMIOERR_SHARINGVIOLATION=(MMIOERR_BASE+13); -const MMIOERR_NETWORKERROR=(MMIOERR_BASE+14); -const MMIOERR_TOOMANYOPENFILES=(MMIOERR_BASE+15); -const MMIOERR_INVALIDFILE=(MMIOERR_BASE+16); - -const CFSEPCHAR='+'; - -const MMIO_RWMODE=3; -const MMIO_SHAREMODE=0x70; -const MMIO_CREATE=0x1000; -const MMIO_PARSE=256; -const MMIO_DELETE=512; -const MMIO_EXIST=0x4000; -const MMIO_ALLOCBUF=0x10000; -const MMIO_GETTEMP=0x20000; -const MMIO_DIRTY=0x10000000; -const MMIO_READ=0; -const MMIO_WRITE=1; -const MMIO_READWRITE=2; -const MMIO_COMPAT=0; -const MMIO_EXCLUSIVE=16; -const MMIO_DENYWRITE=32; -const MMIO_DENYREAD=0x30; -const MMIO_DENYNONE=64; -const MMIO_FHOPEN=16; -const MMIO_EMPTYBUF=16; -const MMIO_TOUPPER=16; -const MMIO_INSTALLPROC=0x10000; -const MMIO_GLOBALPROC=0x10000000; -const MMIO_REMOVEPROC=0x20000; -const MMIO_UNICODEPROC=0x1000000; -const MMIO_FINDPROC=0x40000; -const MMIO_FINDCHUNK=16; -const MMIO_FINDRIFF=32; -const MMIO_FINDLIST=64; -const MMIO_CREATERIFF=32; -const MMIO_CREATELIST=64; -const MMIOM_READ=MMIO_READ; -const MMIOM_WRITE=MMIO_WRITE; -const MMIOM_SEEK=2; -const MMIOM_OPEN=3; -const MMIOM_CLOSE=4; -const MMIOM_WRITEFLUSH=5; -const MMIOM_RENAME=6; -const MMIOM_USER=0x8000; - -const FOURCC_RIFF = mmioFOURCC!('R', 'I', 'F', 'F'); -const FOURCC_LIST = mmioFOURCC!('L', 'I', 'S', 'T'); -const FOURCC_DOS = mmioFOURCC!('D', 'O', 'S', ' '); -const FOURCC_MEM = mmioFOURCC!('M', 'E', 'M', ' '); - -const MMIO_DEFAULTBUFFER=8192; - -enum { - MCIERR_INVALID_DEVICE_ID = MCIERR_BASE + 1, - MCIERR_UNRECOGNIZED_KEYWORD = MCIERR_BASE + 3, - MCIERR_UNRECOGNIZED_COMMAND = MCIERR_BASE + 5, - MCIERR_HARDWARE, - MCIERR_INVALID_DEVICE_NAME, - MCIERR_OUT_OF_MEMORY, - MCIERR_DEVICE_OPEN, - MCIERR_CANNOT_LOAD_DRIVER, - MCIERR_MISSING_COMMAND_STRING, - MCIERR_PARAM_OVERFLOW, - MCIERR_MISSING_STRING_ARGUMENT, - MCIERR_BAD_INTEGER, - MCIERR_PARSER_INTERNAL, - MCIERR_DRIVER_INTERNAL, - MCIERR_MISSING_PARAMETER, - MCIERR_UNSUPPORTED_FUNCTION, - MCIERR_FILE_NOT_FOUND, - MCIERR_DEVICE_NOT_READY, - MCIERR_INTERNAL, - MCIERR_DRIVER, - MCIERR_CANNOT_USE_ALL, - MCIERR_MULTIPLE, - MCIERR_EXTENSION_NOT_FOUND, - MCIERR_OUTOFRANGE, // = MCIERR_BASE+26 - MCIERR_FLAGS_NOT_COMPATIBLE = MCIERR_BASE + 28, - MCIERR_FILE_NOT_SAVED = MCIERR_BASE + 30, - MCIERR_DEVICE_TYPE_REQUIRED, - MCIERR_DEVICE_LOCKED, - MCIERR_DUPLICATE_ALIAS, - MCIERR_BAD_CONSTANT, - MCIERR_MUST_USE_SHAREABLE, - MCIERR_MISSING_DEVICE_NAME, - MCIERR_BAD_TIME_FORMAT, - MCIERR_NO_CLOSING_QUOTE, - MCIERR_DUPLICATE_FLAGS, - MCIERR_INVALID_FILE, - MCIERR_NULL_PARAMETER_BLOCK, - MCIERR_UNNAMED_RESOURCE, - MCIERR_NEW_REQUIRES_ALIAS, - MCIERR_NOTIFY_ON_AUTO_OPEN, - MCIERR_NO_ELEMENT_ALLOWED, - MCIERR_NONAPPLICABLE_FUNCTION, - MCIERR_ILLEGAL_FOR_AUTO_OPEN, - MCIERR_FILENAME_REQUIRED, - MCIERR_EXTRA_CHARACTERS, - MCIERR_DEVICE_NOT_INSTALLED, - MCIERR_GET_CD, - MCIERR_SET_CD, - MCIERR_SET_DRIVE, - MCIERR_DEVICE_LENGTH, - MCIERR_DEVICE_ORD_LENGTH, - MCIERR_NO_INTEGER, // = MCIERR_BASE + 56 - MCIERR_WAVE_OUTPUTSINUSE = MCIERR_BASE + 64, - MCIERR_WAVE_SETOUTPUTINUSE, - MCIERR_WAVE_INPUTSINUSE, - MCIERR_WAVE_SETINPUTINUSE, - MCIERR_WAVE_OUTPUTUNSPECIFIED, - MCIERR_WAVE_INPUTUNSPECIFIED, - MCIERR_WAVE_OUTPUTSUNSUITABLE, - MCIERR_WAVE_SETOUTPUTUNSUITABLE, - MCIERR_WAVE_INPUTSUNSUITABLE, - MCIERR_WAVE_SETINPUTUNSUITABLE, // = MCIERR_BASE + 73 - MCIERR_SEQ_DIV_INCOMPATIBLE = MCIERR_BASE + 80, - MCIERR_SEQ_PORT_INUSE, - MCIERR_SEQ_PORT_NONEXISTENT, - MCIERR_SEQ_PORT_MAPNODEVICE, - MCIERR_SEQ_PORT_MISCERROR, - MCIERR_SEQ_TIMER, - MCIERR_SEQ_PORTUNSPECIFIED, - MCIERR_SEQ_NOMIDIPRESENT, // = MCIERR_BASE + 87 - MCIERR_NO_WINDOW = MCIERR_BASE + 90, - MCIERR_CREATEWINDOW, - MCIERR_FILE_READ, - MCIERR_FILE_WRITE, - MCIERR_NO_IDENTITY // = MCIERR_BASE + 94 -} -const MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256; - -const MCI_FIRST=DRV_MCI_FIRST; -const MCI_OPEN=0x803; -const MCI_CLOSE=0x804; -const MCI_ESCAPE=0x805; -const MCI_PLAY=0x806; -const MCI_SEEK=0x807; -const MCI_STOP=0x808; -const MCI_PAUSE=0x809; -const MCI_INFO=0x80A; -const MCI_GETDEVCAPS=0x80B; -const MCI_SPIN=0x80C; -const MCI_SET=0x80D; -const MCI_STEP=0x80E; -const MCI_RECORD=0x80F; -const MCI_SYSINFO=0x810; -const MCI_BREAK=0x811; -const MCI_SAVE=0x813; -const MCI_STATUS=0x814; -const MCI_CUE=0x830; -const MCI_REALIZE=0x840; -const MCI_WINDOW=0x841; -const MCI_PUT=0x842; -const MCI_WHERE=0x843; -const MCI_FREEZE=0x844; -const MCI_UNFREEZE=0x845; -const MCI_LOAD=0x850; -const MCI_CUT=0x851; -const MCI_COPY=0x852; -const MCI_PASTE=0x853; -const MCI_UPDATE=0x854; -const MCI_RESUME=0x855; -const MCI_DELETE=0x856; -const MCI_USER_MESSAGES=(DRV_MCI_FIRST+0x400); -const MCI_LAST=0xFFF; - -const MCIDEVICEID MCI_ALL_DEVICE_ID = -1; - -const MCI_DEVTYPE_VCR=513; -const MCI_DEVTYPE_VIDEODISC=514; -const MCI_DEVTYPE_OVERLAY=515; -const MCI_DEVTYPE_CD_AUDIO=516; -const MCI_DEVTYPE_DAT=517; -const MCI_DEVTYPE_SCANNER=518; -const MCI_DEVTYPE_ANIMATION=519; -const MCI_DEVTYPE_DIGITAL_VIDEO=520; -const MCI_DEVTYPE_OTHER=521; -const MCI_DEVTYPE_WAVEFORM_AUDIO=522; -const MCI_DEVTYPE_SEQUENCER=523; -const MCI_DEVTYPE_FIRST=MCI_DEVTYPE_VCR; -const MCI_DEVTYPE_LAST=MCI_DEVTYPE_SEQUENCER; -const MCI_DEVTYPE_FIRST_USER=0x1000; -const MCI_MODE_NOT_READY=(MCI_STRING_OFFSET+12); -const MCI_MODE_STOP=(MCI_STRING_OFFSET+13); -const MCI_MODE_PLAY=(MCI_STRING_OFFSET+14); -const MCI_MODE_RECORD=(MCI_STRING_OFFSET+15); -const MCI_MODE_SEEK=(MCI_STRING_OFFSET+16); -const MCI_MODE_PAUSE=(MCI_STRING_OFFSET+17); -const MCI_MODE_OPEN=(MCI_STRING_OFFSET+18); -const MCI_FORMAT_MILLISECONDS=0; -const MCI_FORMAT_HMS=1; -const MCI_FORMAT_MSF=2; -const MCI_FORMAT_FRAMES=3; -const MCI_FORMAT_SMPTE_24=4; -const MCI_FORMAT_SMPTE_25=5; -const MCI_FORMAT_SMPTE_30=6; -const MCI_FORMAT_SMPTE_30DROP=7; -const MCI_FORMAT_BYTES=8; -const MCI_FORMAT_SAMPLES=9; -const MCI_FORMAT_TMSF=10; - - - - -// Macros -BYTE MCI_HMS_HOUR(DWORD t) { return cast(BYTE)(t); } -BYTE MCI_HMS_MINUTE(DWORD t) { return cast(BYTE)(t>>>8); } -BYTE MCI_HMS_SECOND(DWORD t) { return cast(BYTE)( t>>>16); } -DWORD MCI_MAKE_HMS(BYTE h, BYTE m, BYTE s) { return h |(m<<8)|(cast(DWORD)(s)<<16); } -DWORD MCI_MAKE_MSF(BYTE m, BYTE s, BYTE f) { return m |(s<<8)|(cast(DWORD)(f)<<16); } -DWORD MCI_MAKE_TMSF(BYTE t, BYTE m, BYTE s, BYTE f) { - return t |(m<<8)|(s<<16)|(cast(DWORD)(f)<< 24); } - -BYTE MCI_MSF_MINUTE(DWORD t) { return cast(BYTE)(t); } -BYTE MCI_MSF_SECOND(DWORD t) { return cast(BYTE)(t >>> 8); } -BYTE MCI_MSF_FRAME(DWORD t) { return cast(BYTE)(t >>> 16); } - -BYTE MCI_TMSF_TRACK(DWORD t) { return cast(BYTE)(t); } -BYTE MCI_TMSF_MINUTE(DWORD t) { return cast(BYTE)(t>>8); } -BYTE MCI_TMSF_SECOND(DWORD t) { return cast(BYTE)(t>>16); } -BYTE MCI_TMSF_FRAME(DWORD t) { return cast(BYTE)(t>>24); } - - -const MCI_NOTIFY_SUCCESSFUL=1; -const MCI_NOTIFY_SUPERSEDED=2; -const MCI_NOTIFY_ABORTED=4; -const MCI_NOTIFY_FAILURE=8; -const MCI_NOTIFY=1; -const MCI_WAIT=2; -const MCI_FROM=4; -const MCI_TO=8; -const MCI_TRACK=16; -const MCI_OPEN_SHAREABLE=256; -const MCI_OPEN_ELEMENT=512; -const MCI_OPEN_ALIAS=1024; -const MCI_OPEN_ELEMENT_ID=2048; -const MCI_OPEN_TYPE_ID=0x1000; -const MCI_OPEN_TYPE=0x2000; -const MCI_SEEK_TO_START=256; -const MCI_SEEK_TO_END=512; -const MCI_STATUS_ITEM=256; -const MCI_STATUS_START=512; -const MCI_STATUS_LENGTH=1; -const MCI_STATUS_POSITION=2; -const MCI_STATUS_NUMBER_OF_TRACKS=3; -const MCI_STATUS_MODE=4; -const MCI_STATUS_MEDIA_PRESENT=5; -const MCI_STATUS_TIME_FORMAT=6; -const MCI_STATUS_READY=7; -const MCI_STATUS_CURRENT_TRACK=8; -const MCI_INFO_PRODUCT=256; -const MCI_INFO_FILE=512; -const MCI_INFO_MEDIA_UPC=1024; -const MCI_INFO_MEDIA_IDENTITY=2048; -const MCI_INFO_NAME=0x1000; -const MCI_INFO_COPYRIGHT=0x2000; - -const MCI_GETDEVCAPS_ITEM=256; -const MCI_GETDEVCAPS_CAN_RECORD=1; -const MCI_GETDEVCAPS_HAS_AUDIO=2; -const MCI_GETDEVCAPS_HAS_VIDEO=3; -const MCI_GETDEVCAPS_DEVICE_TYPE=4; -const MCI_GETDEVCAPS_USES_FILES=5; -const MCI_GETDEVCAPS_COMPOUND_DEVICE=6; -const MCI_GETDEVCAPS_CAN_EJECT=7; -const MCI_GETDEVCAPS_CAN_PLAY=8; -const MCI_GETDEVCAPS_CAN_SAVE=9; - -const MCI_SYSINFO_QUANTITY=256; -const MCI_SYSINFO_OPEN=512; -const MCI_SYSINFO_NAME=1024; -const MCI_SYSINFO_INSTALLNAME=2048; -const MCI_SET_DOOR_OPEN=256; -const MCI_SET_DOOR_CLOSED=512; -const MCI_SET_TIME_FORMAT=1024; -const MCI_SET_AUDIO=2048; -const MCI_SET_VIDEO=0x1000; -const MCI_SET_ON=0x2000; -const MCI_SET_OFF=0x4000; - -const MCI_SET_AUDIO_ALL=0; -const MCI_SET_AUDIO_LEFT=1; -const MCI_SET_AUDIO_RIGHT=2; - -const MCI_BREAK_KEY=256; -const MCI_BREAK_HWND=512; -const MCI_BREAK_OFF=1024; - -const MCI_RECORD_INSERT=256; -const MCI_RECORD_OVERWRITE=512; -const MCI_SAVE_FILE=256; -const MCI_LOAD_FILE=256; - -const MCI_VD_MODE_PARK=(MCI_VD_OFFSET+1); -const MCI_VD_MEDIA_CLV=(MCI_VD_OFFSET+2); -const MCI_VD_MEDIA_CAV=(MCI_VD_OFFSET+3); -const MCI_VD_MEDIA_OTHER=(MCI_VD_OFFSET+4); - -const MCI_VD_FORMAT_TRACK=0x4001; -const MCI_VD_PLAY_REVERSE=0x10000; -const MCI_VD_PLAY_FAST=0x20000; -const MCI_VD_PLAY_SPEED=0x40000; -const MCI_VD_PLAY_SCAN=0x80000; -const MCI_VD_PLAY_SLOW=0x100000; -const MCI_VD_SEEK_REVERSE=0x10000; -const MCI_VD_STATUS_SPEED=0x4002; -const MCI_VD_STATUS_FORWARD=0x4003; -const MCI_VD_STATUS_MEDIA_TYPE=0x4004; -const MCI_VD_STATUS_SIDE=0x4005; -const MCI_VD_STATUS_DISC_SIZE=0x4006; -const MCI_VD_GETDEVCAPS_CLV=0x10000; -const MCI_VD_GETDEVCAPS_CAV=0x20000; -const MCI_VD_SPIN_UP=0x10000; -const MCI_VD_SPIN_DOWN=0x20000; -const MCI_VD_GETDEVCAPS_CAN_REVERSE=0x4002; -const MCI_VD_GETDEVCAPS_FAST_RATE=0x4003; -const MCI_VD_GETDEVCAPS_SLOW_RATE=0x4004; -const MCI_VD_GETDEVCAPS_NORMAL_RATE=0x4005; -const MCI_VD_STEP_FRAMES=0x10000; -const MCI_VD_STEP_REVERSE=0x20000; -const MCI_VD_ESCAPE_STRING=256; - -const MCI_CDA_STATUS_TYPE_TRACK=0x4001; -const MCI_CDA_TRACK_AUDIO=MCI_CD_OFFSET; -const MCI_CDA_TRACK_OTHER=(MCI_CD_OFFSET+1); - -const MCI_WAVE_PCM=MCI_WAVE_OFFSET; -const MCI_WAVE_MAPPER=(MCI_WAVE_OFFSET+1); -const MCI_WAVE_OPEN_BUFFER=0x10000; -const MCI_WAVE_SET_FORMATTAG=0x10000; -const MCI_WAVE_SET_CHANNELS=0x20000; -const MCI_WAVE_SET_SAMPLESPERSEC=0x40000; -const MCI_WAVE_SET_AVGBYTESPERSEC=0x80000; -const MCI_WAVE_SET_BLOCKALIGN=0x100000; -const MCI_WAVE_SET_BITSPERSAMPLE=0x200000; -const MCI_WAVE_INPUT=0x400000; -const MCI_WAVE_OUTPUT=0x800000; -const MCI_WAVE_STATUS_FORMATTAG=0x4001; -const MCI_WAVE_STATUS_CHANNELS=0x4002; -const MCI_WAVE_STATUS_SAMPLESPERSEC=0x4003; -const MCI_WAVE_STATUS_AVGBYTESPERSEC=0x4004; -const MCI_WAVE_STATUS_BLOCKALIGN=0x4005; -const MCI_WAVE_STATUS_BITSPERSAMPLE=0x4006; -const MCI_WAVE_STATUS_LEVEL=0x4007; -const MCI_WAVE_SET_ANYINPUT=0x4000000; -const MCI_WAVE_SET_ANYOUTPUT=0x8000000; -const MCI_WAVE_GETDEVCAPS_INPUTS=0x4001; -const MCI_WAVE_GETDEVCAPS_OUTPUTS=0x4002; - -const MCI_SEQ_DIV_PPQN=MCI_SEQ_OFFSET; -const MCI_SEQ_DIV_SMPTE_24=(MCI_SEQ_OFFSET+1); -const MCI_SEQ_DIV_SMPTE_25=(MCI_SEQ_OFFSET+2); -const MCI_SEQ_DIV_SMPTE_30DROP=(MCI_SEQ_OFFSET+3); -const MCI_SEQ_DIV_SMPTE_30=(MCI_SEQ_OFFSET+4); -const MCI_SEQ_FORMAT_SONGPTR=0x4001; -const MCI_SEQ_FILE=0x4002; -const MCI_SEQ_MIDI=0x4003; -const MCI_SEQ_SMPTE=0x4004; -const MCI_SEQ_NONE=65533; -const MCI_SEQ_MAPPER=65535; - -const MCI_SEQ_STATUS_TEMPO=0x4002; -const MCI_SEQ_STATUS_PORT=0x4003; -const MCI_SEQ_STATUS_SLAVE=0x4007; -const MCI_SEQ_STATUS_MASTER=0x4008; -const MCI_SEQ_STATUS_OFFSET=0x4009; -const MCI_SEQ_STATUS_DIVTYPE=0x400A; -const MCI_SEQ_STATUS_NAME=0x400B; -const MCI_SEQ_STATUS_COPYRIGHT=0x400C; - -const MCI_SEQ_SET_TEMPO=0x10000; -const MCI_SEQ_SET_PORT=0x20000; -const MCI_SEQ_SET_SLAVE=0x40000; -const MCI_SEQ_SET_MASTER=0x80000; -const MCI_SEQ_SET_OFFSET=0x1000000; - -const MCI_ANIM_OPEN_WS=0x10000; -const MCI_ANIM_OPEN_PARENT=0x20000; -const MCI_ANIM_OPEN_NOSTATIC=0x40000; -const MCI_ANIM_PLAY_SPEED=0x10000; -const MCI_ANIM_PLAY_REVERSE=0x20000; -const MCI_ANIM_PLAY_FAST=0x40000; -const MCI_ANIM_PLAY_SLOW=0x80000; -const MCI_ANIM_PLAY_SCAN=0x100000; -const MCI_ANIM_STEP_REVERSE=0x10000; -const MCI_ANIM_STEP_FRAMES=0x20000; -const MCI_ANIM_STATUS_SPEED=0x4001; -const MCI_ANIM_STATUS_FORWARD=0x4002; -const MCI_ANIM_STATUS_HWND=0x4003; -const MCI_ANIM_STATUS_HPAL=0x4004; -const MCI_ANIM_STATUS_STRETCH=0x4005; -const MCI_ANIM_INFO_TEXT=0x10000; - -const MCI_ANIM_GETDEVCAPS_CAN_REVERSE=0x4001; -const MCI_ANIM_GETDEVCAPS_FAST_RATE=0x4002; -const MCI_ANIM_GETDEVCAPS_SLOW_RATE=0x4003; -const MCI_ANIM_GETDEVCAPS_NORMAL_RATE=0x4004; -const MCI_ANIM_GETDEVCAPS_PALETTES=0x4006; -const MCI_ANIM_GETDEVCAPS_CAN_STRETCH=0x4007; -const MCI_ANIM_GETDEVCAPS_MAX_WINDOWS=0x4008; - -const MCI_ANIM_REALIZE_NORM=0x10000; -const MCI_ANIM_REALIZE_BKGD=0x20000; - -const MCI_ANIM_WINDOW_HWND=0x10000; -const MCI_ANIM_WINDOW_STATE=0x40000; -const MCI_ANIM_WINDOW_TEXT=0x80000; -const MCI_ANIM_WINDOW_ENABLE_STRETCH=0x100000; -const MCI_ANIM_WINDOW_DISABLE_STRETCH=0x200000; -const MCI_ANIM_WINDOW_DEFAULT=0x0; - -const MCI_ANIM_RECT=0x10000; -const MCI_ANIM_PUT_SOURCE=0x20000; -const MCI_ANIM_PUT_DESTINATION=0x40000; -const MCI_ANIM_WHERE_SOURCE=0x20000; -const MCI_ANIM_WHERE_DESTINATION=0x40000; -const MCI_ANIM_UPDATE_HDC=0x20000; - -const MCI_OVLY_OPEN_WS=0x10000; -const MCI_OVLY_OPEN_PARENT=0x20000; -const MCI_OVLY_STATUS_HWND=0x4001; -const MCI_OVLY_STATUS_STRETCH=0x4002; -const MCI_OVLY_INFO_TEXT=0x10000; -const MCI_OVLY_GETDEVCAPS_CAN_STRETCH=0x4001; -const MCI_OVLY_GETDEVCAPS_CAN_FREEZE=0x4002; -const MCI_OVLY_GETDEVCAPS_MAX_WINDOWS=0x4003; -const MCI_OVLY_WINDOW_HWND=0x10000; -const MCI_OVLY_WINDOW_STATE=0x40000; -const MCI_OVLY_WINDOW_TEXT=0x80000; -const MCI_OVLY_WINDOW_ENABLE_STRETCH=0x100000; -const MCI_OVLY_WINDOW_DISABLE_STRETCH=0x200000; -const MCI_OVLY_WINDOW_DEFAULT=0x0; -const MCI_OVLY_RECT=0x10000; -const MCI_OVLY_PUT_SOURCE=0x20000; -const MCI_OVLY_PUT_DESTINATION=0x40000; -const MCI_OVLY_PUT_FRAME=0x80000; -const MCI_OVLY_PUT_VIDEO=0x100000; -const MCI_OVLY_WHERE_SOURCE=0x20000; -const MCI_OVLY_WHERE_DESTINATION=0x40000; -const MCI_OVLY_WHERE_FRAME=0x80000; -const MCI_OVLY_WHERE_VIDEO=0x100000; - -const NEWTRANSPARENT=3; -const QUERYROPSUPPORT=40; -const SELECTDIB=41; - -LONG DIBINDEX(WORD n) { - return MAKELONG(n,0x10FF); -} -const CAPS1=94; -const C1_TRANSPARENT=1; - -const SEEK_SET=0; -const SEEK_CUR=1; -const SEEK_END=2; - -alias DWORD MCIERROR; -alias UINT MCIDEVICEID; -alias UINT function (MCIDEVICEID,DWORD) YIELDPROC; -alias UINT MMVERSION; -alias UINT MMRESULT; - -struct MMTIME { - UINT wType; - union { - DWORD ms; - DWORD sample; - DWORD cb; - DWORD ticks; - struct smpte { - BYTE hour; - BYTE min; - BYTE sec; - BYTE frame; - BYTE fps; - BYTE dummy; - BYTE pad[2]; - }; - struct midi { - DWORD songptrpos; - } - } -} -alias MMTIME* PMMTIME, LPMMTIME; - -alias HANDLE HDRVR; - -struct DRVCONFIGINFO { - DWORD dwDCISize; - LPCWSTR lpszDCISectionName; - LPCWSTR lpszDCIAliasName; -} -alias DRVCONFIGINFO * PDRVCONFIGINFO, LPDRVCONFIGINFO; - -struct DRVCONFIGINFOEX { - DWORD dwDCISize; - LPCWSTR lpszDCISectionName; - LPCWSTR lpszDCIAliasName; - DWORD dnDevNode; -} -alias DRVCONFIGINFOEX* PDRVCONFIGINFOEX, LPDRVCONFIGINFOEX; - -extern(Windows): - -/+FIXME: I couldn't find these in MSDN. -alias void function (HDRVR,UINT,DWORD,DWORD,DWORD) DRVCALLBACK; -LRESULT DRIVERPROC (DWORD,HDRVR,UINT,LPARAM,LPARAM); -alias DRVCALLBACK* LPDRVCALLBACK, PDRVCALLBACK; - -alias DRVCALLBACK WAVECALLBACK; -alias WAVECALLBACK* LPWAVECALLBACK; - -alias DRVCALLBACK MIDICALLBACK; -alias MIDICALLBACK* LPMIDICALLBACK; - -+/ - -alias HANDLE HWAVE; -alias HANDLE HWAVEIN; -alias HANDLE HWAVEOUT; - -alias HWAVEIN* LPHWAVEIN; -alias HWAVEOUT* LPHWAVEOUT; - -struct WAVEHDR { - LPSTR lpData; - DWORD dwBufferLength; - DWORD dwBytesRecorded; - DWORD dwUser; - DWORD dwFlags; - DWORD dwLoops; - WAVEHDR *lpNext; - DWORD reserved; -} -alias WAVEHDR* PWAVEHDR, LPWAVEHDR; - -struct WAVEOUTCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR szPname[MAXPNAMELEN]; - DWORD dwFormats; - WORD wChannels; - WORD wReserved1; - DWORD dwSupport; -} -alias WAVEOUTCAPSA* PWAVEOUTCAPSA, LPWAVEOUTCAPSA; - -struct WAVEOUTCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR szPname[MAXPNAMELEN]; - DWORD dwFormats; - WORD wChannels; - WORD wReserved1; - DWORD dwSupport; -} -alias WAVEOUTCAPSW* PWAVEOUTCAPSW, LPWAVEOUTCAPSW; - -struct WAVEINCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR szPname[MAXPNAMELEN]; - DWORD dwFormats; - WORD wChannels; - WORD wReserved1; -} -alias WAVEINCAPSA* PWAVEINCAPSA, LPWAVEINCAPSA; - -struct WAVEINCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR szPname[MAXPNAMELEN]; - DWORD dwFormats; - WORD wChannels; - WORD wReserved1; -} -alias WAVEINCAPSW* PWAVEINCAPSW, LPWAVEINCAPSW; - -struct WAVEFORMAT { - WORD wFormatTag; - WORD nChannels; - DWORD nSamplesPerSec; - DWORD nAvgBytesPerSec; - WORD nBlockAlign; -} -alias WAVEFORMAT* PWAVEFORMAT, LPWAVEFORMAT; - -struct PCMWAVEFORMAT { - WAVEFORMAT wf; - WORD wBitsPerSample; -} -alias PCMWAVEFORMAT* PPCMWAVEFORMAT, LPPCMWAVEFORMAT; - -struct WAVEFORMATEX { - WORD wFormatTag; - WORD nChannels; - DWORD nSamplesPerSec; - DWORD nAvgBytesPerSec; - WORD nBlockAlign; - WORD wBitsPerSample; - WORD cbSize; -} -alias WAVEFORMATEX* PWAVEFORMATEX, LPWAVEFORMATEX; -alias CPtr!(WAVEFORMATEX) LPCWAVEFORMATEX; - -alias HANDLE HMIDI; -alias HANDLE HMIDIIN; -alias HANDLE HMIDIOUT; -alias HANDLE HMIDISTRM; - -alias HMIDI* LPHMIDI; -alias HMIDIIN* LPHMIDIIN; -alias HMIDIOUT* LPHMIDIOUT; -alias HMIDISTRM* LPHMIDISTRM; - -alias WORD PATCHARRAY[MIDIPATCHSIZE]; -alias WORD* LPPATCHARRAY; -alias WORD KEYARRAY[MIDIPATCHSIZE]; -alias WORD* LPKEYARRAY; - -struct MIDIOUTCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR szPname[MAXPNAMELEN]; - WORD wTechnology; - WORD wVoices; - WORD wNotes; - WORD wChannelMask; - DWORD dwSupport; -} -alias MIDIOUTCAPSA* PMIDIOUTCAPSA, LPMIDIOUTCAPSA; - -struct MIDIOUTCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR szPname[MAXPNAMELEN]; - WORD wTechnology; - WORD wVoices; - WORD wNotes; - WORD wChannelMask; - DWORD dwSupport; -} -alias MIDIOUTCAPSW* PMIDIOUTCAPSW, LPMIDIOUTCAPSW; - -struct MIDIINCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR szPname[MAXPNAMELEN]; - DWORD dwSupport; -} -alias MIDIINCAPSA* PMIDIINCAPSA, LPMIDIINCAPSA; - -struct MIDIINCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR szPname[MAXPNAMELEN]; - DWORD dwSupport; -} -alias MIDIINCAPSW* PMIDIINCAPSW, LPMIDIINCAPSW; - -struct MIDIHDR { - LPSTR lpData; - DWORD dwBufferLength; - DWORD dwBytesRecorded; - DWORD dwUser; - DWORD dwFlags; - MIDIHDR *lpNext; - DWORD reserved; - DWORD dwOffset; - DWORD dwReserved[8]; -} -alias MIDIHDR* PMIDIHDR, LPMIDIHDR; - -struct MIDIEVENT { - DWORD dwDeltaTime; - DWORD dwStreamID; - DWORD dwEvent; - DWORD dwParms[1]; -} - -struct MIDISTRMBUFFVER { - DWORD dwVersion; - DWORD dwMid; - DWORD dwOEMVersion; -} - -struct MIDIPROPTIMEDIV { - DWORD cbStruct; - DWORD dwTimeDiv; -} -alias MIDIPROPTIMEDIV* LPMIDIPROPTIMEDIV; - -struct MIDIPROPTEMPO { - DWORD cbStruct; - DWORD dwTempo; -} -alias MIDIPROPTEMPO* LPMIDIPROPTEMPO; - -struct AUXCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR szPname[MAXPNAMELEN]; - WORD wTechnology; - WORD wReserved1; - DWORD dwSupport; -} -alias AUXCAPSA* PAUXCAPSA, LPAUXCAPSA; - -struct AUXCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR szPname[MAXPNAMELEN]; - WORD wTechnology; - WORD wReserved1; - DWORD dwSupport; -} -alias AUXCAPSW* PAUXCAPSW, LPAUXCAPSW; - -alias HANDLE HMIXEROBJ; -alias HMIXEROBJ* LPHMIXEROBJ; - -alias HANDLE HMIXER; -alias HMIXER* LPHMIXER; - -struct MIXERCAPSA { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR szPname[MAXPNAMELEN]; - DWORD fdwSupport; - DWORD cDestinations; -} -alias MIXERCAPSA* PMIXERCAPSA, LPMIXERCAPSA; - -struct MIXERCAPSW { - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR szPname[MAXPNAMELEN]; - DWORD fdwSupport; - DWORD cDestinations; -} -alias MIXERCAPSW* PMIXERCAPSW, LPMIXERCAPSW; - -struct MIXERLINEA { - DWORD cbStruct; - DWORD dwDestination; - DWORD dwSource; - DWORD dwLineID; - DWORD fdwLine; - DWORD dwUser; - DWORD dwComponentType; - DWORD cChannels; - DWORD cConnections; - DWORD cControls; - CHAR szShortName[MIXER_SHORT_NAME_CHARS]; - CHAR szName[MIXER_LONG_NAME_CHARS]; - struct Target { - DWORD dwType; - DWORD dwDeviceID; - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - CHAR szPname[MAXPNAMELEN]; - } -} -alias MIXERLINEA* PMIXERLINEA, LPMIXERLINEA; - -struct MIXERLINEW { - DWORD cbStruct; - DWORD dwDestination; - DWORD dwSource; - DWORD dwLineID; - DWORD fdwLine; - DWORD dwUser; - DWORD dwComponentType; - DWORD cChannels; - DWORD cConnections; - DWORD cControls; - WCHAR szShortName[MIXER_SHORT_NAME_CHARS]; - WCHAR szName[MIXER_LONG_NAME_CHARS]; - struct Target { - DWORD dwType; - DWORD dwDeviceID; - WORD wMid; - WORD wPid; - MMVERSION vDriverVersion; - WCHAR szPname[MAXPNAMELEN]; - } -} -alias MIXERLINEW* PMIXERLINEW, LPMIXERLINEW; - -struct MIXERCONTROLA { - DWORD cbStruct; - DWORD dwControlID; - DWORD dwControlType; - DWORD fdwControl; - DWORD cMultipleItems; - CHAR szShortName[MIXER_SHORT_NAME_CHARS]; - CHAR szName[MIXER_LONG_NAME_CHARS]; - union _Bounds { - struct { - LONG lMinimum; - LONG lMaximum; - } - struct { - DWORD dwMinimum; - DWORD dwMaximum; - } - DWORD dwReserved[6]; - } - _Bounds Bounds; - union _Metrics { - DWORD cSteps; - DWORD cbCustomData; - DWORD dwReserved[6]; - } - _Metrics Metrics; -} -alias MIXERCONTROLA* PMIXERCONTROLA, LPMIXERCONTROLA; - -struct MIXERCONTROLW { - DWORD cbStruct; - DWORD dwControlID; - DWORD dwControlType; - DWORD fdwControl; - DWORD cMultipleItems; - WCHAR szShortName[MIXER_SHORT_NAME_CHARS]; - WCHAR szName[MIXER_LONG_NAME_CHARS]; - union _Bounds { - struct { - LONG lMinimum; - LONG lMaximum; - } - struct { - DWORD dwMinimum; - DWORD dwMaximum; - } - DWORD dwReserved[6]; - } - _Bounds Bounds; - union _Metrics { - DWORD cSteps; - DWORD cbCustomData; - DWORD dwReserved[6]; - } - _Metrics Metrics; -} - -alias MIXERCONTROLW* PMIXERCONTROLW, LPMIXERCONTROLW; - -struct MIXERLINECONTROLSA { - DWORD cbStruct; - DWORD dwLineID; - union { - DWORD dwControlID; - DWORD dwControlType; - } - DWORD cControls; - DWORD cbmxctrl; - LPMIXERCONTROLA pamxctrl; -} -alias MIXERLINECONTROLSA* PMIXERLINECONTROLSA, LPMIXERLINECONTROLSA; - -struct MIXERLINECONTROLSW { - DWORD cbStruct; - DWORD dwLineID; - union { - DWORD dwControlID; - DWORD dwControlType; - } - DWORD cControls; - DWORD cbmxctrl; - LPMIXERCONTROLW pamxctrl; -} -alias MIXERLINECONTROLSW* PMIXERLINECONTROLSW, LPMIXERLINECONTROLSW; - -struct MIXERCONTROLDETAILS { - DWORD cbStruct; - DWORD dwControlID; - DWORD cChannels; - union { - HWND hwndOwner; - DWORD cMultipleItems; - } - DWORD cbDetails; - PVOID paDetails; -} -alias MIXERCONTROLDETAILS* PMIXERCONTROLDETAILS, LPMIXERCONTROLDETAILS; - -struct MIXERCONTROLDETAILS_LISTTEXTA { - DWORD dwParam1; - DWORD dwParam2; - CHAR szName[MIXER_LONG_NAME_CHARS]; -} -alias MIXERCONTROLDETAILS_LISTTEXTA* PMIXERCONTROLDETAILS_LISTTEXTA,LPMIXERCONTROLDETAILS_LISTTEXTA; - -struct MIXERCONTROLDETAILS_LISTTEXTW { - DWORD dwParam1; - DWORD dwParam2; - WCHAR szName[MIXER_LONG_NAME_CHARS]; -} -alias MIXERCONTROLDETAILS_LISTTEXTW* PMIXERCONTROLDETAILS_LISTTEXTW,LPMIXERCONTROLDETAILS_LISTTEXTW; - -struct MIXERCONTROLDETAILS_BOOLEAN { - LONG fValue; -} -alias MIXERCONTROLDETAILS_BOOLEAN* PMIXERCONTROLDETAILS_BOOLEAN, LPMIXERCONTROLDETAILS_BOOLEAN; - -struct MIXERCONTROLDETAILS_SIGNED { - LONG lValue; -} -alias MIXERCONTROLDETAILS_SIGNED* PMIXERCONTROLDETAILS_SIGNED, LPMIXERCONTROLDETAILS_SIGNED; - -struct MIXERCONTROLDETAILS_UNSIGNED { - DWORD dwValue; -} -alias MIXERCONTROLDETAILS_UNSIGNED* PMIXERCONTROLDETAILS_UNSIGNED, LPMIXERCONTROLDETAILS_UNSIGNED; - -alias void function (UINT,UINT,DWORD,DWORD,DWORD) LPTIMECALLBACK; - -struct TIMECAPS { - UINT wPeriodMin; - UINT wPeriodMax; -} -alias TIMECAPS* PTIMECAPS, LPTIMECAPS; - -struct JOYCAPSA { - WORD wMid; - WORD wPid; - CHAR szPname[MAXPNAMELEN]; - UINT wXmin; - UINT wXmax; - UINT wYmin; - UINT wYmax; - UINT wZmin; - UINT wZmax; - UINT wNumButtons; - UINT wPeriodMin; - UINT wPeriodMax; - UINT wRmin; - UINT wRmax; - UINT wUmin; - UINT wUmax; - UINT wVmin; - UINT wVmax; - UINT wCaps; - UINT wMaxAxes; - UINT wNumAxes; - UINT wMaxButtons; - CHAR szRegKey[MAXPNAMELEN]; - CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; -} -alias JOYCAPSA* PJOYCAPSA, LPJOYCAPSA; - -struct JOYCAPSW { - WORD wMid; - WORD wPid; - WCHAR szPname[MAXPNAMELEN]; - UINT wXmin; - UINT wXmax; - UINT wYmin; - UINT wYmax; - UINT wZmin; - UINT wZmax; - UINT wNumButtons; - UINT wPeriodMin; - UINT wPeriodMax; - UINT wRmin; - UINT wRmax; - UINT wUmin; - UINT wUmax; - UINT wVmin; - UINT wVmax; - UINT wCaps; - UINT wMaxAxes; - UINT wNumAxes; - UINT wMaxButtons; - WCHAR szRegKey[MAXPNAMELEN]; - WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME]; -} -alias JOYCAPSW* PJOYCAPSW, LPJOYCAPSW; - -struct JOYINFO { - UINT wXpos; - UINT wYpos; - UINT wZpos; - UINT wButtons; -} -alias JOYINFO* PJOYINFO, LPJOYINFO; - -struct JOYINFOEX { - DWORD dwSize; - DWORD dwFlags; - DWORD dwXpos; - DWORD dwYpos; - DWORD dwZpos; - DWORD dwRpos; - DWORD dwUpos; - DWORD dwVpos; - DWORD dwButtons; - DWORD dwButtonNumber; - DWORD dwPOV; - DWORD dwReserved1; - DWORD dwReserved2; -} -alias JOYINFOEX* PJOYINFOEX, LPJOYINFOEX; - -alias DWORD FOURCC; -alias char* HPSTR; - -alias HANDLE HMMIO; - -alias LRESULT function (LPSTR,UINT,LPARAM,LPARAM) LPMMIOPROC; - -struct MMIOINFO { - DWORD dwFlags; - FOURCC fccIOProc; - LPMMIOPROC pIOProc; - UINT wErrorRet; - HTASK htask; - LONG cchBuffer; - HPSTR pchBuffer; - HPSTR pchNext; - HPSTR pchEndRead; - HPSTR pchEndWrite; - LONG lBufOffset; - LONG lDiskOffset; - DWORD adwInfo[3]; - DWORD dwReserved1; - DWORD dwReserved2; - HMMIO hmmio; -} -alias MMIOINFO* PMMIOINFO, LPMMIOINFO; -alias CPtr!(MMIOINFO) LPCMMIOINFO; - -struct MMCKINFO { - FOURCC ckid; - DWORD cksize; - FOURCC fccType; - DWORD dwDataOffset; - DWORD dwFlags; -} -alias MMCKINFO* PMMCKINFO, LPMMCKINFO; -alias CPtr!(MMCKINFO) LPCMMCKINFO; - -struct MCI_GENERIC_PARMS { - DWORD dwCallback; -} -alias MCI_GENERIC_PARMS* PMCI_GENERIC_PARMS, LPMCI_GENERIC_PARMS; - -struct MCI_OPEN_PARMSA { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCSTR lpstrDeviceType; - LPCSTR lpstrElementName; - LPCSTR lpstrAlias; -} -alias MCI_OPEN_PARMSA* PMCI_OPEN_PARMSA, LPMCI_OPEN_PARMSA; - -struct MCI_OPEN_PARMSW { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCWSTR lpstrDeviceType; - LPCWSTR lpstrElementName; - LPCWSTR lpstrAlias; -} -alias MCI_OPEN_PARMSW* PMCI_OPEN_PARMSW, LPMCI_OPEN_PARMSW; - -struct MCI_PLAY_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; -} -alias MCI_PLAY_PARMS* PMCI_PLAY_PARMS, LPMCI_PLAY_PARMS; - -struct MCI_SEEK_PARMS { - DWORD dwCallback; - DWORD dwTo; -} -alias MCI_SEEK_PARMS* PMCI_SEEK_PARMS, LPMCI_SEEK_PARMS; - -struct MCI_STATUS_PARMS { - DWORD dwCallback; - DWORD dwReturn; - DWORD dwItem; - DWORD dwTrack; -} -alias MCI_STATUS_PARMS* PMCI_STATUS_PARMS, LPMCI_STATUS_PARMS; - -struct MCI_INFO_PARMSA { - DWORD dwCallback; - LPSTR lpstrReturn; - DWORD dwRetSize; -} -alias MCI_INFO_PARMSA* LPMCI_INFO_PARMSA; - -struct MCI_INFO_PARMSW { - DWORD dwCallback; - LPWSTR lpstrReturn; - DWORD dwRetSize; -} -alias MCI_INFO_PARMSW* LPMCI_INFO_PARMSW; - -struct MCI_GETDEVCAPS_PARMS { - DWORD dwCallback; - DWORD dwReturn; - DWORD dwItem; -} -alias MCI_GETDEVCAPS_PARMS* PMCI_GETDEVCAPS_PARMS, LPMCI_GETDEVCAPS_PARMS; - -struct MCI_SYSINFO_PARMSA { - DWORD dwCallback; - LPSTR lpstrReturn; - DWORD dwRetSize; - DWORD dwNumber; - UINT wDeviceType; -} -alias MCI_SYSINFO_PARMSA* PMCI_SYSINFO_PARMSA, LPMCI_SYSINFO_PARMSA; - -struct MCI_SYSINFO_PARMSW { - DWORD dwCallback; - LPWSTR lpstrReturn; - DWORD dwRetSize; - DWORD dwNumber; - UINT wDeviceType; -} -alias MCI_SYSINFO_PARMSW* PMCI_SYSINFO_PARMSW, LPMCI_SYSINFO_PARMSW; - -struct MCI_SET_PARMS { - DWORD dwCallback; - DWORD dwTimeFormat; - DWORD dwAudio; -} -alias MCI_SET_PARMS* PMCI_SET_PARMS, LPMCI_SET_PARMS; - -struct MCI_BREAK_PARMS { - DWORD dwCallback; - int nVirtKey; - HWND hwndBreak; -} -alias MCI_BREAK_PARMS* PMCI_BREAK_PARMS, LPMCI_BREAK_PARMS; - -struct MCI_SAVE_PARMSA { - DWORD dwCallback; - LPCSTR lpfilename; -} -alias MCI_SAVE_PARMSA* PMCI_SAVE_PARMSA, LPMCI_SAVE_PARMSA; - -struct MCI_SAVE_PARMSW { - DWORD dwCallback; - LPCWSTR lpfilename; -} -alias MCI_SAVE_PARMSW* PMCI_SAVE_PARMSW, LPMCI_SAVE_PARMSW; - -struct MCI_LOAD_PARMSA { - DWORD dwCallback; - LPCSTR lpfilename; -} -alias MCI_LOAD_PARMSA* PMCI_LOAD_PARMSA, LPMCI_LOAD_PARMSA; - -struct MCI_LOAD_PARMSW { - DWORD dwCallback; - LPCWSTR lpfilename; -} -alias MCI_LOAD_PARMSW* PMCI_LOAD_PARMSW, LPMCI_LOAD_PARMSW; - -struct MCI_RECORD_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; -} -alias MCI_RECORD_PARMS* LPMCI_RECORD_PARMS; - -struct MCI_VD_PLAY_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; - DWORD dwSpeed; -} -alias MCI_VD_PLAY_PARMS* PMCI_VD_PLAY_PARMS, LPMCI_VD_PLAY_PARMS; - -struct MCI_VD_STEP_PARMS { - DWORD dwCallback; - DWORD dwFrames; -} -alias MCI_VD_STEP_PARMS* PMCI_VD_STEP_PARMS, LPMCI_VD_STEP_PARMS; - -struct MCI_VD_ESCAPE_PARMSA { - DWORD dwCallback; - LPCSTR lpstrCommand; -} -alias MCI_VD_ESCAPE_PARMSA* PMCI_VD_ESCAPE_PARMSA, LPMCI_VD_ESCAPE_PARMSA; - -struct MCI_VD_ESCAPE_PARMSW { - DWORD dwCallback; - LPCWSTR lpstrCommand; -} -alias MCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW, LPMCI_VD_ESCAPE_PARMSW; - -struct MCI_WAVE_OPEN_PARMSA { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCSTR lpstrDeviceType; - LPCSTR lpstrElementName; - LPCSTR lpstrAlias; - DWORD dwBufferSeconds; -} -alias MCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA, LPMCI_WAVE_OPEN_PARMSA; - -struct MCI_WAVE_OPEN_PARMSW { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCWSTR lpstrDeviceType; - LPCWSTR lpstrElementName; - LPCWSTR lpstrAlias; - DWORD dwBufferSeconds; -} -alias MCI_WAVE_OPEN_PARMSW* PMCI_WAVE_OPEN_PARMSW, LPMCI_WAVE_OPEN_PARMSW; - -struct MCI_WAVE_DELETE_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; -} -alias MCI_WAVE_DELETE_PARMS* PMCI_WAVE_DELETE_PARMS, LPMCI_WAVE_DELETE_PARMS; - -struct MCI_WAVE_SET_PARMS { - DWORD dwCallback; - DWORD dwTimeFormat; - DWORD dwAudio; - UINT wInput; - UINT wOutput; - WORD wFormatTag; - WORD wReserved2; - WORD nChannels; - WORD wReserved3; - DWORD nSamplesPerSec; - DWORD nAvgBytesPerSec; - WORD nBlockAlign; - WORD wReserved4; - WORD wBitsPerSample; - WORD wReserved5; -} -alias MCI_WAVE_SET_PARMS* PMCI_WAVE_SET_PARMS, LPMCI_WAVE_SET_PARMS; - -extern (Windows): -LRESULT CloseDriver(HDRVR,LONG,LONG); -HDRVR OpenDriver(LPCWSTR,LPCWSTR,LONG); -LRESULT SendDriverMessage(HDRVR,UINT,LONG,LONG); -HMODULE DrvGetModuleHandle(HDRVR); -HMODULE GetDriverModuleHandle(HDRVR); -LRESULT DefDriverProc(DWORD,HDRVR,UINT,LPARAM,LPARAM); -UINT mmsystemGetVersion(); -// FIXME: I believe this next line is a mistake -//alias OutputDebugString OutputDebugStr; -BOOL sndPlaySoundA(LPCSTR,UINT); -BOOL sndPlaySoundW(LPCWSTR,UINT); -BOOL PlaySoundA(LPCSTR,HMODULE,DWORD); -BOOL PlaySoundW(LPCWSTR,HMODULE,DWORD); -UINT waveOutGetNumDevs(); -MMRESULT waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT); -MMRESULT waveOutGetDevCapsW(UINT,LPWAVEOUTCAPSW,UINT); -MMRESULT waveOutGetVolume(HWAVEOUT,PDWORD); -MMRESULT waveOutSetVolume(HWAVEOUT,DWORD); -MMRESULT waveOutGetErrorTextA(MMRESULT,LPSTR,UINT); -MMRESULT waveOutGetErrorTextW(MMRESULT,LPWSTR,UINT); -MMRESULT waveOutOpen(LPHWAVEOUT,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD); -MMRESULT waveOutClose(HWAVEOUT); -MMRESULT waveOutPrepareHeader(HWAVEOUT,LPWAVEHDR,UINT); -MMRESULT waveOutUnprepareHeader(HWAVEOUT,LPWAVEHDR,UINT); -MMRESULT waveOutWrite(HWAVEOUT,LPWAVEHDR,UINT); -MMRESULT waveOutPause(HWAVEOUT); -MMRESULT waveOutRestart(HWAVEOUT); -MMRESULT waveOutReset(HWAVEOUT); -MMRESULT waveOutBreakLoop(HWAVEOUT); -MMRESULT waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT); -MMRESULT waveOutGetPitch(HWAVEOUT,PDWORD); -MMRESULT waveOutSetPitch(HWAVEOUT,DWORD); -MMRESULT waveOutGetPlaybackRate(HWAVEOUT,PDWORD); -MMRESULT waveOutSetPlaybackRate(HWAVEOUT,DWORD); -MMRESULT waveOutGetID(HWAVEOUT,LPUINT); -MMRESULT waveOutMessage(HWAVEOUT,UINT,DWORD,DWORD); -UINT waveInGetNumDevs(); -MMRESULT waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT); -MMRESULT waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT); -MMRESULT waveInGetErrorTextA(MMRESULT,LPSTR,UINT); -MMRESULT waveInGetErrorTextW(MMRESULT,LPWSTR,UINT); -MMRESULT waveInOpen(LPHWAVEIN,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD); -MMRESULT waveInClose(HWAVEIN); -MMRESULT waveInPrepareHeader(HWAVEIN,LPWAVEHDR,UINT); -MMRESULT waveInUnprepareHeader(HWAVEIN,LPWAVEHDR,UINT); -MMRESULT waveInAddBuffer(HWAVEIN,LPWAVEHDR,UINT); -MMRESULT waveInStart(HWAVEIN); -MMRESULT waveInStop(HWAVEIN); -MMRESULT waveInReset(HWAVEIN); -MMRESULT waveInGetPosition(HWAVEIN,LPMMTIME,UINT); -MMRESULT waveInGetID(HWAVEIN,LPUINT); -MMRESULT waveInMessage(HWAVEIN,UINT,DWORD,DWORD); -UINT midiOutGetNumDevs(); -MMRESULT midiStreamOpen(LPHMIDISTRM,LPUINT,DWORD,DWORD,DWORD,DWORD); -MMRESULT midiStreamClose(HMIDISTRM); -MMRESULT midiStreamProperty(HMIDISTRM,LPBYTE,DWORD); -MMRESULT midiStreamPosition(HMIDISTRM,LPMMTIME,UINT); -MMRESULT midiStreamOut(HMIDISTRM,LPMIDIHDR,UINT); -MMRESULT midiStreamPause(HMIDISTRM); -MMRESULT midiStreamRestart(HMIDISTRM); -MMRESULT midiStreamStop(HMIDISTRM); -MMRESULT midiConnect(HMIDI,HMIDIOUT,PVOID); -MMRESULT midiDisconnect(HMIDI,HMIDIOUT,PVOID); -MMRESULT midiOutGetDevCapsA(UINT,LPMIDIOUTCAPSA,UINT); -MMRESULT midiOutGetDevCapsW(UINT,LPMIDIOUTCAPSW,UINT); -MMRESULT midiOutGetVolume(HMIDIOUT,PDWORD); -MMRESULT midiOutSetVolume(HMIDIOUT,DWORD); -MMRESULT midiOutGetErrorTextA(MMRESULT,LPSTR,UINT); -MMRESULT midiOutGetErrorTextW(MMRESULT,LPWSTR,UINT); -MMRESULT midiOutOpen(LPHMIDIOUT,UINT,DWORD,DWORD,DWORD); -MMRESULT midiOutClose(HMIDIOUT); -MMRESULT midiOutPrepareHeader(HMIDIOUT,LPMIDIHDR,UINT); -MMRESULT midiOutUnprepareHeader(HMIDIOUT,LPMIDIHDR,UINT); -MMRESULT midiOutShortMsg(HMIDIOUT,DWORD); -MMRESULT midiOutLongMsg(HMIDIOUT,LPMIDIHDR,UINT); -MMRESULT midiOutReset(HMIDIOUT); -MMRESULT midiOutCachePatches(HMIDIOUT,UINT,LPWORD,UINT); -MMRESULT midiOutCacheDrumPatches(HMIDIOUT,UINT,LPWORD,UINT); -MMRESULT midiOutGetID(HMIDIOUT,LPUINT); -MMRESULT midiOutMessage(HMIDIOUT,UINT,DWORD,DWORD); -UINT midiInGetNumDevs(); -MMRESULT midiInGetDevCapsA(UINT,LPMIDIINCAPSA,UINT); -MMRESULT midiInGetDevCapsW(UINT,LPMIDIINCAPSW,UINT); -MMRESULT midiInGetErrorTextA(MMRESULT,LPSTR,UINT); -MMRESULT midiInGetErrorTextW(MMRESULT,LPWSTR,UINT); -MMRESULT midiInOpen(LPHMIDIIN,UINT,DWORD,DWORD,DWORD); -MMRESULT midiInClose(HMIDIIN); -MMRESULT midiInPrepareHeader(HMIDIIN,LPMIDIHDR,UINT); -MMRESULT midiInUnprepareHeader(HMIDIIN,LPMIDIHDR,UINT); -MMRESULT midiInAddBuffer(HMIDIIN,LPMIDIHDR,UINT); -MMRESULT midiInStart(HMIDIIN); -MMRESULT midiInStop(HMIDIIN); -MMRESULT midiInReset(HMIDIIN); -MMRESULT midiInGetID(HMIDIIN,LPUINT); -MMRESULT midiInMessage(HMIDIIN,UINT,DWORD,DWORD); -UINT auxGetNumDevs(); -MMRESULT auxGetDevCapsA(UINT,LPAUXCAPSA,UINT); -MMRESULT auxGetDevCapsW(UINT,LPAUXCAPSW,UINT); -MMRESULT auxSetVolume(UINT,DWORD); -MMRESULT auxGetVolume(UINT,PDWORD); -MMRESULT auxOutMessage(UINT,UINT,DWORD,DWORD); -UINT mixerGetNumDevs(); -MMRESULT mixerGetDevCapsA(UINT,LPMIXERCAPSA,UINT); -MMRESULT mixerGetDevCapsW(UINT,LPMIXERCAPSW,UINT); -MMRESULT mixerOpen(LPHMIXER,UINT,DWORD,DWORD,DWORD); -MMRESULT mixerClose(HMIXER); -DWORD mixerMessage(HMIXER,UINT,DWORD,DWORD); -MMRESULT mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD); -MMRESULT mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD); -MMRESULT mixerGetID(HMIXEROBJ,PUINT,DWORD); -MMRESULT mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD); -MMRESULT mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD); -MMRESULT mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD); -MMRESULT mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD); -MMRESULT mixerSetControlDetails(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD); -MMRESULT timeGetSystemTime(LPMMTIME,UINT); -DWORD timeGetTime(); -MMRESULT timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD,UINT); -MMRESULT timeKillEvent(UINT); -MMRESULT timeGetDevCaps(LPTIMECAPS,UINT); -MMRESULT timeBeginPeriod(UINT); -MMRESULT timeEndPeriod(UINT); -UINT joyGetNumDevs(); -MMRESULT joyGetDevCapsA(UINT,LPJOYCAPSA,UINT); -MMRESULT joyGetDevCapsW(UINT,LPJOYCAPSW,UINT); -MMRESULT joyGetPos(UINT,LPJOYINFO); -MMRESULT joyGetPosEx(UINT,LPJOYINFOEX); -MMRESULT joyGetThreshold(UINT,LPUINT); -MMRESULT joyReleaseCapture(UINT); -MMRESULT joySetCapture(HWND,UINT,UINT,BOOL); -MMRESULT joySetThreshold(UINT,UINT); -FOURCC mmioStringToFOURCCA(LPCSTR,UINT); -FOURCC mmioStringToFOURCCW(LPCWSTR,UINT); -LPMMIOPROC mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD); -LPMMIOPROC mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD); -HMMIO mmioOpenA(LPSTR,LPMMIOINFO,DWORD); -HMMIO mmioOpenW(LPWSTR,LPMMIOINFO,DWORD); -MMRESULT mmioRenameA(LPCSTR,LPCSTR,LPCMMIOINFO,DWORD); -MMRESULT mmioRenameW(LPCWSTR,LPCWSTR,LPCMMIOINFO,DWORD); -MMRESULT mmioClose(HMMIO,UINT); -LONG mmioRead(HMMIO,HPSTR,LONG); -LONG mmioWrite(HMMIO,LPCSTR,LONG); -LONG mmioSeek(HMMIO,LONG,int); -MMRESULT mmioGetInfo(HMMIO,LPMMIOINFO,UINT); -MMRESULT mmioSetInfo(HMMIO,LPCMMIOINFO,UINT); -MMRESULT mmioSetBuffer(HMMIO,LPSTR,LONG,UINT); -MMRESULT mmioFlush(HMMIO,UINT); -MMRESULT mmioAdvance(HMMIO,LPMMIOINFO,UINT); -LRESULT mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM); -MMRESULT mmioDescend(HMMIO,LPMMCKINFO, CPtr!(MMCKINFO),UINT); -MMRESULT mmioAscend(HMMIO,LPMMCKINFO,UINT); -MMRESULT mmioCreateChunk(HMMIO,LPMMCKINFO,UINT); -MCIERROR mciSendCommandA(MCIDEVICEID,UINT,DWORD,DWORD); -MCIERROR mciSendCommandW(MCIDEVICEID,UINT,DWORD,DWORD); -MCIERROR mciSendStringA(LPCSTR,LPSTR,UINT,HWND); -MCIERROR mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND); -MCIDEVICEID mciGetDeviceIDA(LPCSTR); -MCIDEVICEID mciGetDeviceIDW(LPCWSTR); -MCIDEVICEID mciGetDeviceIDFromElementIDA(DWORD,LPCSTR); -MCIDEVICEID mciGetDeviceIDFromElementIDW(DWORD,LPCWSTR); -BOOL mciGetErrorStringA(MCIERROR,LPSTR,UINT); -BOOL mciGetErrorStringW(MCIERROR,LPWSTR,UINT); -BOOL mciSetYieldProc(MCIDEVICEID,YIELDPROC,DWORD); -HTASK mciGetCreatorTask(MCIDEVICEID); -YIELDPROC mciGetYieldProc(MCIDEVICEID,PDWORD); - -struct MCI_SEQ_SET_PARMS { - DWORD dwCallback; - DWORD dwTimeFormat; - DWORD dwAudio; - DWORD dwTempo; - DWORD dwPort; - DWORD dwSlave; - DWORD dwMaster; - DWORD dwOffset; -} -alias MCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS, LPMCI_SEQ_SET_PARMS; - -struct MCI_ANIM_OPEN_PARMSA { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCSTR lpstrDeviceType; - LPCSTR lpstrElementName; - LPCSTR lpstrAlias; - DWORD dwStyle; - HWND hWndParent; -} -alias MCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA, LPMCI_ANIM_OPEN_PARMSA; - -struct MCI_ANIM_OPEN_PARMSW { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCWSTR lpstrDeviceType; - LPCWSTR lpstrElementName; - LPCWSTR lpstrAlias; - DWORD dwStyle; - HWND hWndParent; -} -alias MCI_ANIM_OPEN_PARMSW* PMCI_ANIM_OPEN_PARMSW, LPMCI_ANIM_OPEN_PARMSW; - -struct MCI_ANIM_PLAY_PARMS { - DWORD dwCallback; - DWORD dwFrom; - DWORD dwTo; - DWORD dwSpeed; -} -alias MCI_ANIM_PLAY_PARMS* PMCI_ANIM_PLAY_PARMS, LPMCI_ANIM_PLAY_PARMS; - -struct MCI_ANIM_STEP_PARMS { - DWORD dwCallback; - DWORD dwFrames; -} -alias MCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS, LPMCI_ANIM_STEP_PARMS; - -struct MCI_ANIM_WINDOW_PARMSA { - DWORD dwCallback; - HWND hWnd; - UINT nCmdShow; - LPCSTR lpstrText; -} -alias MCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA, LPMCI_ANIM_WINDOW_PARMSA; - -struct MCI_ANIM_WINDOW_PARMSW { - DWORD dwCallback; - HWND hWnd; - UINT nCmdShow; - LPCWSTR lpstrText; -} -alias MCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW, LPMCI_ANIM_WINDOW_PARMSW; - -struct MCI_ANIM_RECT_PARMS { - DWORD dwCallback; - //#ifdef MCI_USE_OFFEXT - // POINT ptOffset; - // POINT ptExtent; - //#else - RECT rc; - //#endif -} -alias MCI_ANIM_RECT_PARMS* PMCI_ANIM_RECT_PARMS, LPMCI_ANIM_RECT_PARMS; - -struct MCI_ANIM_UPDATE_PARMS { - DWORD dwCallback; - RECT rc; - HDC hDC; -} -alias MCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS, LPMCI_ANIM_UPDATE_PARMS; - -struct MCI_OVLY_OPEN_PARMSA { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCSTR lpstrDeviceType; - LPCSTR lpstrElementName; - LPCSTR lpstrAlias; - DWORD dwStyle; - HWND hWndParent; -} -alias MCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA, LPMCI_OVLY_OPEN_PARMSA; - -struct MCI_OVLY_OPEN_PARMSW { - DWORD dwCallback; - MCIDEVICEID wDeviceID; - LPCWSTR lpstrDeviceType; - LPCWSTR lpstrElementName; - LPCWSTR lpstrAlias; - DWORD dwStyle; - HWND hWndParent; -} -alias MCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW, LPMCI_OVLY_OPEN_PARMSW; - -struct MCI_OVLY_WINDOW_PARMSA { - DWORD dwCallback; - HWND hWnd; - UINT nCmdShow; - LPCSTR lpstrText; -} -alias MCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA, LPMCI_OVLY_WINDOW_PARMSA; - -struct MCI_OVLY_WINDOW_PARMSW { - DWORD dwCallback; - HWND hWnd; - UINT nCmdShow; - LPCWSTR lpstrText; -} -alias MCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW, LPMCI_OVLY_WINDOW_PARMSW; - -struct MCI_OVLY_RECT_PARMS { - DWORD dwCallback; - //#ifdef MCI_USE_OFFEXT - // POINT ptOffset; - // POINT ptExtent; - //#else - RECT rc; - //#endif -} -alias MCI_OVLY_RECT_PARMS* PMCI_OVLY_RECT_PARMS, LPMCI_OVLY_RECT_PARMS; - -struct MCI_OVLY_SAVE_PARMSA { - DWORD dwCallback; - LPCSTR lpfilename; - RECT rc; -} -alias MCI_OVLY_SAVE_PARMSA* PMCI_OVLY_SAVE_PARMSA, LPMCI_OVLY_SAVE_PARMSA; - -struct MCI_OVLY_SAVE_PARMSW { - DWORD dwCallback; - LPCWSTR lpfilename; - RECT rc; -} -alias MCI_OVLY_SAVE_PARMSW* PMCI_OVLY_SAVE_PARMSW, LPMCI_OVLY_SAVE_PARMSW; - -struct MCI_OVLY_LOAD_PARMSA { - DWORD dwCallback; - LPCSTR lpfilename; - RECT rc; -} -alias MCI_OVLY_LOAD_PARMSA* PMCI_OVLY_LOAD_PARMSA, LPMCI_OVLY_LOAD_PARMSA; - -struct MCI_OVLY_LOAD_PARMSW { - DWORD dwCallback; - LPCWSTR lpfilename; - RECT rc; -} -alias MCI_OVLY_LOAD_PARMSW* PMCI_OVLY_LOAD_PARMSW, LPMCI_OVLY_LOAD_PARMSW; - -version(Unicode) { - alias WAVEOUTCAPSW WAVEOUTCAPS; - alias WAVEINCAPSW WAVEINCAPS; - alias MIDIOUTCAPSW MIDIOUTCAPS; - alias MIDIINCAPSW MIDIINCAPS; - alias AUXCAPSW AUXCAPS; - alias MIXERCAPSW MIXERCAPS; - alias MIXERLINEW MIXERLINE; - alias MIXERCONTROLA MIXERCONTROL; - alias MIXERLINECONTROLSW MIXERLINECONTROLS; - alias MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT; - alias JOYCAPSW JOYCAPS; - alias MCI_OPEN_PARMSW MCI_OPEN_PARMS; - alias MCI_INFO_PARMSW MCI_INFO_PARMS; - alias MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS; - alias MCI_SAVE_PARMSW MCI_SAVE_PARMS; - alias MCI_LOAD_PARMSW MCI_LOAD_PARMS; - alias MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS; - alias MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS; - alias MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS; - alias MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS; - alias MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS; - alias MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS; - alias MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS; - - alias sndPlaySoundW sndPlaySound; - alias PlaySoundW PlaySound; - alias waveOutGetDevCapsW waveOutGetDevCaps; - alias waveOutGetErrorTextW waveOutGetErrorText; - alias waveInGetDevCapsW waveInGetDevCaps; - alias waveInGetErrorTextW waveInGetErrorText; - alias midiOutGetDevCapsW midiOutGetDevCaps; - alias midiOutGetErrorTextW midiOutGetErrorText; - alias midiInGetDevCapsW midiInGetDevCaps; - alias midiInGetErrorTextW midiInGetErrorText; - alias auxGetDevCapsW auxGetDevCaps; - alias mixerGetDevCapsW mixerGetDevCaps; - alias mixerGetLineInfoW mixerGetLineInfo; - alias mixerGetLineControlsW mixerGetLineControls; - alias mixerGetControlDetailsW mixerGetControlDetails; - alias joyGetDevCapsW joyGetDevCaps; - alias mmioInstallIOProcW mmioInstallIOProc; - alias mmioStringToFOURCCW mmioStringToFOURCC; - alias mmioOpenW mmioOpen; - alias mmioRenameW mmioRename; - alias mciSendCommandW mciSendCommand; - alias mciSendStringW mciSendString; - alias mciGetDeviceIDW mciGetDeviceID; - alias mciGetDeviceIDFromElementIDW mciGetDeviceIDFromElementID; - alias mciGetErrorStringW mciGetErrorString; - -} else { - alias WAVEOUTCAPSA WAVEOUTCAPS; - alias WAVEINCAPSA WAVEINCAPS; - alias MIDIOUTCAPSA MIDIOUTCAPS; - alias MIDIINCAPSA MIDIINCAPS; - alias AUXCAPSA AUXCAPS; - alias MIXERCAPSA MIXERCAPS; - alias MIXERLINEA MIXERLINE; - alias MIXERCONTROLA MIXERCONTROL; - alias MIXERLINECONTROLSA MIXERLINECONTROLS; - alias MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT; - alias JOYCAPSA JOYCAPS; - alias MCI_OPEN_PARMSA MCI_OPEN_PARMS; - alias MCI_INFO_PARMSA MCI_INFO_PARMS; - alias MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS; - alias MCI_SAVE_PARMSA MCI_SAVE_PARMS; - alias MCI_LOAD_PARMSA MCI_LOAD_PARMS; - alias MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS; - alias MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS; - alias MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS; - alias MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS; - alias MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS; - alias MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS; - alias MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS; - - alias sndPlaySoundA sndPlaySound; - alias PlaySoundA PlaySound; - alias waveOutGetDevCapsA waveOutGetDevCaps; - alias waveOutGetErrorTextA waveOutGetErrorText; - alias waveInGetDevCapsA waveInGetDevCaps; - alias waveInGetErrorTextA waveInGetErrorText; - alias midiOutGetDevCapsA midiOutGetDevCaps; - alias midiOutGetErrorTextA midiOutGetErrorText; - alias midiInGetDevCapsA midiInGetDevCaps; - alias midiInGetErrorTextA midiInGetErrorText; - alias auxGetDevCapsA auxGetDevCaps; - alias mixerGetDevCapsA mixerGetDevCaps; - alias mixerGetLineInfoA mixerGetLineInfo; - alias mixerGetLineControlsA mixerGetLineControls; - alias mixerGetControlDetailsA mixerGetControlDetails; - alias joyGetDevCapsA joyGetDevCaps; - alias mmioInstallIOProcA mmioInstallIOProc; - alias mmioStringToFOURCCA mmioStringToFOURCC; - alias mmioOpenA mmioOpen; - alias mmioRenameA mmioRename; - alias mciSendCommandA mciSendCommand; - alias mciSendStringA mciSendString; - alias mciGetDeviceIDA mciGetDeviceID; - alias mciGetDeviceIDFromElementIDA mciGetDeviceIDFromElementID; - alias mciGetErrorStringA mciGetErrorString; -} - -alias WAVEOUTCAPS* PWAVEOUTCAPS, LPWAVEOUTCAPS; -alias WAVEINCAPS* PWAVEINCAPS, LPWAVEINCAPS; -alias MIDIOUTCAPS* PMIDIOUTCAPS, LPMIDIOUTCAPS; -alias MIDIINCAPS* PMIDIINCAPS, LPMIDIINCAPS; -alias AUXCAPS* PAUXCAPS, LPAUXCAPS; -alias MIXERCAPS* PMIXERCAPS, LPMIXERCAPS; -alias MIXERLINE* PMIXERLINE, LPMIXERLINE; -alias MIXERCONTROL* PMIXERCONTROL, LPMIXERCONTROL; -alias MIXERLINECONTROLS* PMIXERLINECONTROLS, LPMIXERLINECONTROLS; -alias MIXERCONTROLDETAILS_LISTTEXT* PMIXERCONTROLDETAILS_LISTTEXT, LPMIXERCONTROLDETAILS_LISTTEXT; -alias JOYCAPS* PJOYCAPS, LPJOYCAPS; -alias MCI_OPEN_PARMS* PMCI_OPEN_PARMS, LPMCI_OPEN_PARMS; -alias MCI_INFO_PARMS* LPMCI_INFO_PARMS; -alias MCI_SYSINFO_PARMS* PMCI_SYSINFO_PARMS, LPMCI_SYSINFO_PARMS; -alias MCI_SAVE_PARMS* PMCI_SAVE_PARMS, LPMCI_SAVE_PARMS; -alias MCI_LOAD_PARMS* PMCI_LOAD_PARMS, LPMCI_LOAD_PARMS; -alias MCI_VD_ESCAPE_PARMS* PMCI_VD_ESCAPE_PARMS, LPMCI_VD_ESCAPE_PARMS; -alias MCI_WAVE_OPEN_PARMS* PMCI_WAVE_OPEN_PARMS, LPMCI_WAVE_OPEN_PARMS; -alias MCI_ANIM_OPEN_PARMS* PMCI_ANIM_OPEN_PARMS, LPMCI_ANIM_OPEN_PARMS; -alias MCI_ANIM_WINDOW_PARMS* PMCI_ANIM_WINDOW_PARMS, LPMCI_ANIM_WINDOW_PARMS; -alias MCI_OVLY_OPEN_PARMS* PMCI_OVLY_OPEN_PARMS, LPMCI_OVLY_OPEN_PARMS; -alias MCI_OVLY_WINDOW_PARMS* PMCI_OVLY_WINDOW_PARMS, LPMCI_OVLY_WINDOW_PARMS; -alias MCI_OVLY_SAVE_PARMS* PMCI_OVLY_SAVE_PARMS, LPMCI_OVLY_SAVE_PARMS; +/***********************************************************************\ +* mmsystem.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mmsystem; +pragma(lib, "winmm"); + +/* The #defines MAKEFOURCC, mmioFOURCC, sndAlias are used to define + * compile-time constants, so they are implemented as templates. + */ + +private import win32.w32api, win32.windef, win32.winver; + +align(1): + +const MAXPNAMELEN = 32; +const MAXERRORLENGTH = 256; +const MAX_JOYSTICKOEMVXDNAME = 260; + +const TIME_MS = 1; +const TIME_SAMPLES = 2; +const TIME_BYTES = 4; +const TIME_SMPTE = 8; +const TIME_MIDI = 16; +const TIME_TICKS = 32; + +template MAKEFOURCC(char c0, char c1, char c2, char c3) +{ + const DWORD MAKEFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); +} + +template mmioFOURCC(char c0, char c1, char c2, char c3) +{ + const DWORD mmioFOURCC = c0 | (c1<<8) | (c2<<16) | (cast(DWORD)c3 <<24); +} + +enum { + MM_JOY1MOVE = 0x3A0, + MM_JOY2MOVE, + MM_JOY1ZMOVE, + MM_JOY2ZMOVE, // = 0x3A3 + MM_JOY1BUTTONDOWN = 0x3B5, + MM_JOY2BUTTONDOWN, + MM_JOY1BUTTONUP, + MM_JOY2BUTTONUP, + MM_MCINOTIFY, // = 0x3B9 + MM_WOM_OPEN = 0x3BB, + MM_WOM_CLOSE, + MM_WOM_DONE, + MM_WIM_OPEN, + MM_WIM_CLOSE, + MM_WIM_DATA, + MM_MIM_OPEN, + MM_MIM_CLOSE, + MM_MIM_DATA, + MM_MIM_LONGDATA, + MM_MIM_ERROR, + MM_MIM_LONGERROR, + MM_MOM_OPEN, + MM_MOM_CLOSE, + MM_MOM_DONE, // = 0x3C9 + MM_DRVM_OPEN = 0x3D0, + MM_DRVM_CLOSE, + MM_DRVM_DATA, + MM_DRVM_ERROR, + MM_STREAM_OPEN, + MM_STREAM_CLOSE, + MM_STREAM_DONE, + MM_STREAM_ERROR, // = 0x3D7 + MM_MOM_POSITIONCB = 0x3CA, + MM_MCISIGNAL, + MM_MIM_MOREDATA, // = 0x3CC + MM_MIXM_LINE_CHANGE = 0x3D0, + MM_MIXM_CONTROL_CHANGE = 0x3D1 +} + +const MMSYSERR_BASE = 0; +const WAVERR_BASE = 32; +const MIDIERR_BASE = 64; +const TIMERR_BASE = 96; +const JOYERR_BASE = 160; +const MCIERR_BASE = 256; +const MIXERR_BASE = 1024; +const MCI_STRING_OFFSET = 512; +const MCI_VD_OFFSET = 1024; +const MCI_CD_OFFSET = 1088; +const MCI_WAVE_OFFSET = 1152; +const MCI_SEQ_OFFSET = 1216; + +enum { + MMSYSERR_NOERROR = 0, + MMSYSERR_ERROR = MMSYSERR_BASE+1, + MMSYSERR_BADDEVICEID, + MMSYSERR_NOTENABLED, + MMSYSERR_ALLOCATED, + MMSYSERR_INVALHANDLE, + MMSYSERR_NODRIVER, + MMSYSERR_NOMEM, + MMSYSERR_NOTSUPPORTED, + MMSYSERR_BADERRNUM, + MMSYSERR_INVALFLAG, + MMSYSERR_INVALPARAM, + MMSYSERR_HANDLEBUSY, + MMSYSERR_INVALIDALIAS, + MMSYSERR_BADDB, + MMSYSERR_KEYNOTFOUND, + MMSYSERR_READERROR, + MMSYSERR_WRITEERROR, + MMSYSERR_DELETEERROR, + MMSYSERR_VALNOTFOUND, + MMSYSERR_NODRIVERCB, // = MMSYSERR_BASE+20 + MMSYSERR_LASTERROR = MMSYSERR_NODRIVERCB +} + +enum { + DRV_LOAD = 1, + DRV_ENABLE, + DRV_OPEN, + DRV_CLOSE, + DRV_DISABLE, + DRV_FREE, + DRV_CONFIGURE, + DRV_QUERYCONFIGURE, + DRV_INSTALL, + DRV_REMOVE, + DRV_EXITSESSION, + DRV_POWER +} + +const DRV_RESERVED = 0x800; +const DRV_USER = 0x4000; + +const DRVCNF_CANCEL = 0; +const DRVCNF_OK = 1; +const DRVCNF_RESTART = 2; +const DRV_CANCEL = DRVCNF_CANCEL; +const DRV_OK = DRVCNF_OK; +const DRV_RESTART = DRVCNF_RESTART; +const DRV_MCI_FIRST = DRV_RESERVED; +const DRV_MCI_LAST = DRV_RESERVED + 0xFFF; + +const CALLBACK_TYPEMASK = 0x70000; +const CALLBACK_NULL = 0; +const CALLBACK_WINDOW = 0x10000; +const CALLBACK_TASK = 0x20000; +const CALLBACK_FUNCTION = 0x30000; +const CALLBACK_THREAD = CALLBACK_TASK; +const CALLBACK_EVENT = 0x50000; + +const SND_SYNC=0; +const SND_ASYNC=1; +const SND_NODEFAULT=2; +const SND_MEMORY=4; +const SND_LOOP=8; +const SND_NOSTOP=16; +const SND_NOWAIT=0x2000; +const SND_ALIAS=0x10000; +const SND_ALIAS_ID=0x110000; +const SND_FILENAME=0x20000; +const SND_RESOURCE=0x40004; +const SND_PURGE=0x40; +const SND_APPLICATION=0x80; +const SND_ALIAS_START=0; + +template sndAlias(char c0, char c1) +{ + const DWORD sndAlias = SND_ALIAS_START + c0 | (c1<<8); +} + +const SND_ALIAS_SYSTEMASTERISK = sndAlias!('S', '*'); +const SND_ALIAS_SYSTEMQUESTION = sndAlias!('S', '?'); +const SND_ALIAS_SYSTEMHAND = sndAlias!('S', 'H'); +const SND_ALIAS_SYSTEMEXIT = sndAlias!('S', 'E'); +const SND_ALIAS_SYSTEMSTART = sndAlias!('S', 'S'); +const SND_ALIAS_SYSTEMWELCOME = sndAlias!('S', 'W'); +const SND_ALIAS_SYSTEMEXCLAMATION = sndAlias!('S', '!'); +const SND_ALIAS_SYSTEMDEFAULT = sndAlias!('S', 'D'); + +enum { + WAVERR_BADFORMAT = (WAVERR_BASE + 0), + WAVERR_STILLPLAYING, + WAVERR_UNPREPARED, + WAVERR_SYNC, // = WAVERR_BASE + 3; + WAVERR_LASTERROR = WAVERR_SYNC +} + +const WOM_OPEN = MM_WOM_OPEN; +const WOM_CLOSE = MM_WOM_CLOSE; +const WOM_DONE = MM_WOM_DONE; +const WIM_OPEN = MM_WIM_OPEN; +const WIM_CLOSE = MM_WIM_CLOSE; +const WIM_DATA = MM_WIM_DATA; + +const UINT WAVE_MAPPER= -1; // FIXME: This doesn't make sense! +const WAVE_FORMAT_QUERY=1; +const WAVE_ALLOWSYNC=2; +const WAVE_MAPPED=4; +const WAVE_FORMAT_DIRECT=8; +const WAVE_FORMAT_DIRECT_QUERY=(WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT); +const WHDR_DONE=1; +const WHDR_PREPARED=2; +const WHDR_BEGINLOOP=4; +const WHDR_ENDLOOP=8; +const WHDR_INQUEUE=16; + +const WAVECAPS_PITCH=1; +const WAVECAPS_PLAYBACKRATE=2; +const WAVECAPS_VOLUME=4; +const WAVECAPS_LRVOLUME=8; +const WAVECAPS_SYNC=16; +const WAVECAPS_SAMPLEACCURATE=32; +const WAVECAPS_DIRECTSOUND=64; + +const WAVE_INVALIDFORMAT=0; +const WAVE_FORMAT_1M08=1; +const WAVE_FORMAT_1S08=2; +const WAVE_FORMAT_1M16=4; +const WAVE_FORMAT_1S16=8; +const WAVE_FORMAT_2M08=16; +const WAVE_FORMAT_2S08=32; +const WAVE_FORMAT_2M16=64; +const WAVE_FORMAT_2S16=128; +const WAVE_FORMAT_4M08=256; +const WAVE_FORMAT_4S08=512; +const WAVE_FORMAT_4M16=1024; +const WAVE_FORMAT_4S16=2048; +const WAVE_FORMAT_PCM=1; + +enum { + MIDIERR_UNPREPARED = MIDIERR_BASE, + MIDIERR_STILLPLAYING, + MIDIERR_NOMAP, + MIDIERR_NOTREADY, + MIDIERR_NODEVICE, + MIDIERR_INVALIDSETUP, + MIDIERR_BADOPENMODE, + MIDIERR_DONT_CONTINUE, // = MIDIERR_BASE+7 + MIDIERR_LASTERROR = MIDIERR_DONT_CONTINUE +} + +const MIDIPATCHSIZE=128; + +const MIM_OPEN=MM_MIM_OPEN; +const MIM_CLOSE=MM_MIM_CLOSE; +const MIM_DATA=MM_MIM_DATA; +const MIM_LONGDATA=MM_MIM_LONGDATA; +const MIM_ERROR=MM_MIM_ERROR; +const MIM_LONGERROR=MM_MIM_LONGERROR; +const MOM_OPEN=MM_MOM_OPEN; +const MOM_CLOSE=MM_MOM_CLOSE; +const MOM_DONE=MM_MOM_DONE; +const MIM_MOREDATA=MM_MIM_MOREDATA; +const MOM_POSITIONCB=MM_MOM_POSITIONCB; + +const UINT MIDIMAPPER= -1; // FIXME: uint is nonsense for this! +const UINT MIDI_MAPPER= -1; // FIXME: uint is nonsense for this! +const MIDI_IO_STATUS=32; +const MIDI_CACHE_ALL=1; +const MIDI_CACHE_BESTFIT=2; +const MIDI_CACHE_QUERY=3; +const MIDI_UNCACHE=4; +const MOD_MIDIPORT=1; +const MOD_SYNTH=2; +const MOD_SQSYNTH=3; +const MOD_FMSYNTH=4; +const MOD_MAPPER=5; +const MIDICAPS_VOLUME=1; +const MIDICAPS_LRVOLUME=2; +const MIDICAPS_CACHE=4; +const MIDICAPS_STREAM=8; +const MHDR_DONE=1; +const MHDR_PREPARED=2; +const MHDR_INQUEUE=4; +const MHDR_ISSTRM=8; +const MEVT_F_SHORT=0; +const MEVT_F_LONG=0x80000000; +const MEVT_F_CALLBACK=0x40000000; + +BYTE MEVT_EVENTTYPE(DWORD x) { return cast(BYTE)((x>>24) &0xFF); } +DWORD MEVT_EVENTPARM(DWORD x) { return x & 0xFFFFFF; } + +const MEVT_SHORTMSG=0; +const MEVT_TEMPO=1; +const MEVT_NOP=2; + +const BYTE MEVT_LONGMSG = 0x80; +const BYTE MEVT_COMMENT = 0x82; +const BYTE MEVT_VERSION = 0x84; + +const MIDISTRM_ERROR = -2; + +const MIDIPROP_SET = 0x80000000; +const MIDIPROP_GET = 0x40000000; +const MIDIPROP_TIMEDIV = 1; +const MIDIPROP_TEMPO = 2; + +const UINT AUX_MAPPER = -1; + +const AUXCAPS_CDAUDIO=1; +const AUXCAPS_AUXIN=2; +const AUXCAPS_VOLUME=1; +const AUXCAPS_LRVOLUME=2; +const MIXER_SHORT_NAME_CHARS=16; +const MIXER_LONG_NAME_CHARS=64; +const MIXERR_INVALLINE=MIXERR_BASE; +const MIXERR_INVALCONTROL=(MIXERR_BASE+1); +const MIXERR_INVALVALUE=(MIXERR_BASE+2); +const MIXERR_LASTERROR=(MIXERR_BASE+2); + +const MIXER_OBJECTF_HANDLE=0x80000000; +const MIXER_OBJECTF_MIXER=0; +const MIXER_OBJECTF_HMIXER=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER); +const MIXER_OBJECTF_WAVEOUT=0x10000000; +const MIXER_OBJECTF_HWAVEOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT); +const MIXER_OBJECTF_WAVEIN=0x20000000; +const MIXER_OBJECTF_HWAVEIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN); +const MIXER_OBJECTF_MIDIOUT=0x30000000; +const MIXER_OBJECTF_HMIDIOUT=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT); +const MIXER_OBJECTF_MIDIIN=0x40000000; +const MIXER_OBJECTF_HMIDIIN=(MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN); +const MIXER_OBJECTF_AUX=0x50000000; + +const MIXERLINE_LINEF_ACTIVE=1; +const MIXERLINE_LINEF_DISCONNECTED=0x8000; +const MIXERLINE_LINEF_SOURCE=0x80000000; + +const MIXERLINE_COMPONENTTYPE_DST_FIRST=0; +const MIXERLINE_COMPONENTTYPE_DST_UNDEFINED=MIXERLINE_COMPONENTTYPE_DST_FIRST; +const MIXERLINE_COMPONENTTYPE_DST_DIGITAL=(MIXERLINE_COMPONENTTYPE_DST_FIRST+1); +const MIXERLINE_COMPONENTTYPE_DST_LINE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+2); +const MIXERLINE_COMPONENTTYPE_DST_MONITOR=(MIXERLINE_COMPONENTTYPE_DST_FIRST+3); +const MIXERLINE_COMPONENTTYPE_DST_SPEAKERS=(MIXERLINE_COMPONENTTYPE_DST_FIRST+4); +const MIXERLINE_COMPONENTTYPE_DST_HEADPHONES=(MIXERLINE_COMPONENTTYPE_DST_FIRST+5); +const MIXERLINE_COMPONENTTYPE_DST_TELEPHONE=(MIXERLINE_COMPONENTTYPE_DST_FIRST+6); +const MIXERLINE_COMPONENTTYPE_DST_WAVEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+7); +const MIXERLINE_COMPONENTTYPE_DST_VOICEIN=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); +const MIXERLINE_COMPONENTTYPE_DST_LAST=(MIXERLINE_COMPONENTTYPE_DST_FIRST+8); +const MIXERLINE_COMPONENTTYPE_SRC_FIRST=0x1000; +const MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED=MIXERLINE_COMPONENTTYPE_SRC_FIRST; +const MIXERLINE_COMPONENTTYPE_SRC_DIGITAL=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+1); +const MIXERLINE_COMPONENTTYPE_SRC_LINE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+2); +const MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+3); +const MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+4); +const MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+5); +const MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+6); +const MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+7); +const MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+8); +const MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+9); +const MIXERLINE_COMPONENTTYPE_SRC_ANALOG=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); +const MIXERLINE_COMPONENTTYPE_SRC_LAST=(MIXERLINE_COMPONENTTYPE_SRC_FIRST+10); + +enum { + MIXERLINE_TARGETTYPE_UNDEFINED = 0, + MIXERLINE_TARGETTYPE_WAVEOUT, + MIXERLINE_TARGETTYPE_WAVEIN, + MIXERLINE_TARGETTYPE_MIDIOUT, + MIXERLINE_TARGETTYPE_MIDIIN, + MIXERLINE_TARGETTYPE_AUX // =5 +} + +const MIXER_GETLINEINFOF_DESTINATION=0; +const MIXER_GETLINEINFOF_SOURCE=1; +const MIXER_GETLINEINFOF_LINEID=2; +const MIXER_GETLINEINFOF_COMPONENTTYPE=3; +const MIXER_GETLINEINFOF_TARGETTYPE=4; +const MIXER_GETLINEINFOF_QUERYMASK=15; + +const MIXERCONTROL_CONTROLF_UNIFORM=1; +const MIXERCONTROL_CONTROLF_MULTIPLE=2; +const MIXERCONTROL_CONTROLF_DISABLED=0x80000000; +const MIXERCONTROL_CT_CLASS_MASK=0xF0000000; +const MIXERCONTROL_CT_CLASS_CUSTOM=0; +const MIXERCONTROL_CT_CLASS_METER=0x10000000; +const MIXERCONTROL_CT_CLASS_SWITCH=0x20000000; +const MIXERCONTROL_CT_CLASS_NUMBER=0x30000000; +const MIXERCONTROL_CT_CLASS_SLIDER=0x40000000; +const MIXERCONTROL_CT_CLASS_FADER=0x50000000; +const MIXERCONTROL_CT_CLASS_TIME=0x60000000; +const MIXERCONTROL_CT_CLASS_LIST=0x70000000; +const MIXERCONTROL_CT_SUBCLASS_MASK=0xF000000; +const MIXERCONTROL_CT_SC_SWITCH_BOOLEAN=0; +const MIXERCONTROL_CT_SC_SWITCH_BUTTON=0x1000000; +const MIXERCONTROL_CT_SC_METER_POLLED=0; +const MIXERCONTROL_CT_SC_TIME_MICROSECS=0; +const MIXERCONTROL_CT_SC_TIME_MILLISECS=0x1000000; +const MIXERCONTROL_CT_SC_LIST_SINGLE=0; +const MIXERCONTROL_CT_SC_LIST_MULTIPLE=0x1000000; +const MIXERCONTROL_CT_UNITS_MASK=0xFF0000; +const MIXERCONTROL_CT_UNITS_CUSTOM=0; +const MIXERCONTROL_CT_UNITS_BOOLEAN=0x10000; +const MIXERCONTROL_CT_UNITS_SIGNED=0x20000; +const MIXERCONTROL_CT_UNITS_UNSIGNED=0x30000; +const MIXERCONTROL_CT_UNITS_DECIBELS=0x40000; +const MIXERCONTROL_CT_UNITS_PERCENT=0x50000; + +const MIXERCONTROL_CONTROLTYPE_CUSTOM=(MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM); +const MIXERCONTROL_CONTROLTYPE_BOOLEANMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_SIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_PEAKMETER=(MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1); +const MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER=(MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_BOOLEAN=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_ONOFF=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+1); +const MIXERCONTROL_CONTROLTYPE_MUTE=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+2); +const MIXERCONTROL_CONTROLTYPE_MONO=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+3); +const MIXERCONTROL_CONTROLTYPE_LOUDNESS=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+4); +const MIXERCONTROL_CONTROLTYPE_STEREOENH=(MIXERCONTROL_CONTROLTYPE_BOOLEAN+5); +const MIXERCONTROL_CONTROLTYPE_BUTTON=(MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_DECIBELS=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS); +const MIXERCONTROL_CONTROLTYPE_SIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_UNSIGNED=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_PERCENT=(MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT); +const MIXERCONTROL_CONTROLTYPE_SLIDER=(MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED); +const MIXERCONTROL_CONTROLTYPE_PAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+1); +const MIXERCONTROL_CONTROLTYPE_QSOUNDPAN=(MIXERCONTROL_CONTROLTYPE_SLIDER+2); +const MIXERCONTROL_CONTROLTYPE_FADER=(MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_VOLUME=(MIXERCONTROL_CONTROLTYPE_FADER+1); +const MIXERCONTROL_CONTROLTYPE_BASS=(MIXERCONTROL_CONTROLTYPE_FADER+2); +const MIXERCONTROL_CONTROLTYPE_TREBLE=(MIXERCONTROL_CONTROLTYPE_FADER+3); +const MIXERCONTROL_CONTROLTYPE_EQUALIZER=(MIXERCONTROL_CONTROLTYPE_FADER+4); +const MIXERCONTROL_CONTROLTYPE_SINGLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_MUX=(MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1); +const MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT=(MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN); +const MIXERCONTROL_CONTROLTYPE_MIXER=(MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1); +const MIXERCONTROL_CONTROLTYPE_MICROTIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED); +const MIXERCONTROL_CONTROLTYPE_MILLITIME=(MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED); + +const MIXER_GETLINECONTROLSF_ALL=0; +const MIXER_GETLINECONTROLSF_ONEBYID=1; +const MIXER_GETLINECONTROLSF_ONEBYTYPE=2; +const MIXER_GETLINECONTROLSF_QUERYMASK=15; +const MIXER_GETCONTROLDETAILSF_VALUE=0; +const MIXER_GETCONTROLDETAILSF_LISTTEXT=1; +const MIXER_GETCONTROLDETAILSF_QUERYMASK=15; +const MIXER_SETCONTROLDETAILSF_VALUE=0; +const MIXER_SETCONTROLDETAILSF_CUSTOM=1; +const MIXER_SETCONTROLDETAILSF_QUERYMASK=15; + +const TIMERR_NOERROR=0; +const TIMERR_NOCANDO=(TIMERR_BASE+1); +const TIMERR_STRUCT=(TIMERR_BASE+33); +const TIME_ONESHOT=0; +const TIME_PERIODIC=1; +const TIME_CALLBACK_FUNCTION=0; +const TIME_CALLBACK_EVENT_SET=16; +const TIME_CALLBACK_EVENT_PULSE=32; + +static if (_WIN32_WINNT >= 0x501) { + +const TIME_KILL_SYNCHRONOUS=0x0100; + +} + +const JOYERR_NOERROR = 0; +const JOYERR_PARMS=(JOYERR_BASE+5); +const JOYERR_NOCANDO=(JOYERR_BASE+6); +const JOYERR_UNPLUGGED=(JOYERR_BASE+7); + +const JOY_BUTTON1=1; +const JOY_BUTTON2=2; +const JOY_BUTTON3=4; +const JOY_BUTTON4=8; +const JOY_BUTTON1CHG=256; +const JOY_BUTTON2CHG=512; +const JOY_BUTTON3CHG=1024; +const JOY_BUTTON4CHG=2048; +const JOY_BUTTON5=257; +const JOY_BUTTON6=513; +const JOY_BUTTON7=1025; +const JOY_BUTTON8=2049; +const JOY_BUTTON9=256; +const JOY_BUTTON10=512; +const JOY_BUTTON11=1024; +const JOY_BUTTON12=2048; +const JOY_BUTTON13=4096; +const JOY_BUTTON14=8192; +const JOY_BUTTON15=16384; +const JOY_BUTTON16=32768; +const JOY_BUTTON17=65536; +const JOY_BUTTON18=0x20000; +const JOY_BUTTON19=0x40000; +const JOY_BUTTON20=0x80000; +const JOY_BUTTON21=0x100000; +const JOY_BUTTON22=0x200000; +const JOY_BUTTON23=0x400000; +const JOY_BUTTON24=0x800000; +const JOY_BUTTON25=0x1000000; +const JOY_BUTTON26=0x2000000; +const JOY_BUTTON27=0x4000000; +const JOY_BUTTON28=0x8000000; +const JOY_BUTTON29=0x10000000; +const JOY_BUTTON30=0x20000000; +const JOY_BUTTON31=0x40000000; +const JOY_BUTTON32=0x80000000; + +enum : DWORD { + JOY_POVCENTERED = -1, + JOY_POVFORWARD = 0, + JOY_POVBACKWARD = 18000, + JOY_POVLEFT = 27000, + JOY_POVRIGHT = 9000 +} + +const DWORD + JOY_RETURNX = 0x00000001, + JOY_RETURNY = 0x00000002, + JOY_RETURNZ = 0x00000004, + JOY_RETURNR = 0x00000008, + JOY_RETURNU = 0x00000010, + JOY_RETURNV = 0x00000020, + JOY_RETURNPOV = 0x00000040, + JOY_RETURNBUTTONS = 0x00000080, + JOY_RETURNRAWDATA = 0x00000100, + JOY_RETURNPOVCTS = 0x00000200, + JOY_RETURNCENTERED = 0x00000400, + JOY_USEDEADZONE = 0x00000800, + JOY_RETURNALL = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR + | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV + | JOY_RETURNBUTTONS, + JOY_CAL_READALWAYS = 0x00010000, + JOY_CAL_READXYONLY = 0x00020000, + JOY_CAL_READ3 = 0x00040000, + JOY_CAL_READ4 = 0x00080000, + JOY_CAL_READXONLY = 0x00100000, + JOY_CAL_READYONLY = 0x00200000, + JOY_CAL_READ5 = 0x00400000, + JOY_CAL_READ6 = 0x00800000, + JOY_CAL_READZONLY = 0x01000000, + JOY_CAL_READRONLY = 0x02000000, + JOY_CAL_READUONLY = 0x04000000, + JOY_CAL_READVONLY = 0x08000000; + +const JOYSTICKID1=0; +const JOYSTICKID2=1; + +const JOYCAPS_HASZ=1; +const JOYCAPS_HASR=2; +const JOYCAPS_HASU=4; +const JOYCAPS_HASV=8; +const JOYCAPS_HASPOV=16; +const JOYCAPS_POV4DIR=32; +const JOYCAPS_POVCTS=64; + +const MMIOERR_BASE=256; +const MMIOERR_FILENOTFOUND=(MMIOERR_BASE+1); +const MMIOERR_OUTOFMEMORY=(MMIOERR_BASE+2); +const MMIOERR_CANNOTOPEN=(MMIOERR_BASE+3); +const MMIOERR_CANNOTCLOSE=(MMIOERR_BASE+4); +const MMIOERR_CANNOTREAD=(MMIOERR_BASE+5); +const MMIOERR_CANNOTWRITE=(MMIOERR_BASE+6); +const MMIOERR_CANNOTSEEK=(MMIOERR_BASE+7); +const MMIOERR_CANNOTEXPAND=(MMIOERR_BASE+8); +const MMIOERR_CHUNKNOTFOUND=(MMIOERR_BASE+9); +const MMIOERR_UNBUFFERED=(MMIOERR_BASE+10); +const MMIOERR_PATHNOTFOUND=(MMIOERR_BASE+11); +const MMIOERR_ACCESSDENIED=(MMIOERR_BASE+12); +const MMIOERR_SHARINGVIOLATION=(MMIOERR_BASE+13); +const MMIOERR_NETWORKERROR=(MMIOERR_BASE+14); +const MMIOERR_TOOMANYOPENFILES=(MMIOERR_BASE+15); +const MMIOERR_INVALIDFILE=(MMIOERR_BASE+16); + +const CFSEPCHAR='+'; + +const MMIO_RWMODE=3; +const MMIO_SHAREMODE=0x70; +const MMIO_CREATE=0x1000; +const MMIO_PARSE=256; +const MMIO_DELETE=512; +const MMIO_EXIST=0x4000; +const MMIO_ALLOCBUF=0x10000; +const MMIO_GETTEMP=0x20000; +const MMIO_DIRTY=0x10000000; +const MMIO_READ=0; +const MMIO_WRITE=1; +const MMIO_READWRITE=2; +const MMIO_COMPAT=0; +const MMIO_EXCLUSIVE=16; +const MMIO_DENYWRITE=32; +const MMIO_DENYREAD=0x30; +const MMIO_DENYNONE=64; +const MMIO_FHOPEN=16; +const MMIO_EMPTYBUF=16; +const MMIO_TOUPPER=16; +const MMIO_INSTALLPROC=0x10000; +const MMIO_GLOBALPROC=0x10000000; +const MMIO_REMOVEPROC=0x20000; +const MMIO_UNICODEPROC=0x1000000; +const MMIO_FINDPROC=0x40000; +const MMIO_FINDCHUNK=16; +const MMIO_FINDRIFF=32; +const MMIO_FINDLIST=64; +const MMIO_CREATERIFF=32; +const MMIO_CREATELIST=64; +const MMIOM_READ=MMIO_READ; +const MMIOM_WRITE=MMIO_WRITE; +const MMIOM_SEEK=2; +const MMIOM_OPEN=3; +const MMIOM_CLOSE=4; +const MMIOM_WRITEFLUSH=5; +const MMIOM_RENAME=6; +const MMIOM_USER=0x8000; + +const FOURCC_RIFF = mmioFOURCC!('R', 'I', 'F', 'F'); +const FOURCC_LIST = mmioFOURCC!('L', 'I', 'S', 'T'); +const FOURCC_DOS = mmioFOURCC!('D', 'O', 'S', ' '); +const FOURCC_MEM = mmioFOURCC!('M', 'E', 'M', ' '); + +const MMIO_DEFAULTBUFFER=8192; + +enum { + MCIERR_INVALID_DEVICE_ID = MCIERR_BASE + 1, + MCIERR_UNRECOGNIZED_KEYWORD = MCIERR_BASE + 3, + MCIERR_UNRECOGNIZED_COMMAND = MCIERR_BASE + 5, + MCIERR_HARDWARE, + MCIERR_INVALID_DEVICE_NAME, + MCIERR_OUT_OF_MEMORY, + MCIERR_DEVICE_OPEN, + MCIERR_CANNOT_LOAD_DRIVER, + MCIERR_MISSING_COMMAND_STRING, + MCIERR_PARAM_OVERFLOW, + MCIERR_MISSING_STRING_ARGUMENT, + MCIERR_BAD_INTEGER, + MCIERR_PARSER_INTERNAL, + MCIERR_DRIVER_INTERNAL, + MCIERR_MISSING_PARAMETER, + MCIERR_UNSUPPORTED_FUNCTION, + MCIERR_FILE_NOT_FOUND, + MCIERR_DEVICE_NOT_READY, + MCIERR_INTERNAL, + MCIERR_DRIVER, + MCIERR_CANNOT_USE_ALL, + MCIERR_MULTIPLE, + MCIERR_EXTENSION_NOT_FOUND, + MCIERR_OUTOFRANGE, // = MCIERR_BASE+26 + MCIERR_FLAGS_NOT_COMPATIBLE = MCIERR_BASE + 28, + MCIERR_FILE_NOT_SAVED = MCIERR_BASE + 30, + MCIERR_DEVICE_TYPE_REQUIRED, + MCIERR_DEVICE_LOCKED, + MCIERR_DUPLICATE_ALIAS, + MCIERR_BAD_CONSTANT, + MCIERR_MUST_USE_SHAREABLE, + MCIERR_MISSING_DEVICE_NAME, + MCIERR_BAD_TIME_FORMAT, + MCIERR_NO_CLOSING_QUOTE, + MCIERR_DUPLICATE_FLAGS, + MCIERR_INVALID_FILE, + MCIERR_NULL_PARAMETER_BLOCK, + MCIERR_UNNAMED_RESOURCE, + MCIERR_NEW_REQUIRES_ALIAS, + MCIERR_NOTIFY_ON_AUTO_OPEN, + MCIERR_NO_ELEMENT_ALLOWED, + MCIERR_NONAPPLICABLE_FUNCTION, + MCIERR_ILLEGAL_FOR_AUTO_OPEN, + MCIERR_FILENAME_REQUIRED, + MCIERR_EXTRA_CHARACTERS, + MCIERR_DEVICE_NOT_INSTALLED, + MCIERR_GET_CD, + MCIERR_SET_CD, + MCIERR_SET_DRIVE, + MCIERR_DEVICE_LENGTH, + MCIERR_DEVICE_ORD_LENGTH, + MCIERR_NO_INTEGER, // = MCIERR_BASE + 56 + MCIERR_WAVE_OUTPUTSINUSE = MCIERR_BASE + 64, + MCIERR_WAVE_SETOUTPUTINUSE, + MCIERR_WAVE_INPUTSINUSE, + MCIERR_WAVE_SETINPUTINUSE, + MCIERR_WAVE_OUTPUTUNSPECIFIED, + MCIERR_WAVE_INPUTUNSPECIFIED, + MCIERR_WAVE_OUTPUTSUNSUITABLE, + MCIERR_WAVE_SETOUTPUTUNSUITABLE, + MCIERR_WAVE_INPUTSUNSUITABLE, + MCIERR_WAVE_SETINPUTUNSUITABLE, // = MCIERR_BASE + 73 + MCIERR_SEQ_DIV_INCOMPATIBLE = MCIERR_BASE + 80, + MCIERR_SEQ_PORT_INUSE, + MCIERR_SEQ_PORT_NONEXISTENT, + MCIERR_SEQ_PORT_MAPNODEVICE, + MCIERR_SEQ_PORT_MISCERROR, + MCIERR_SEQ_TIMER, + MCIERR_SEQ_PORTUNSPECIFIED, + MCIERR_SEQ_NOMIDIPRESENT, // = MCIERR_BASE + 87 + MCIERR_NO_WINDOW = MCIERR_BASE + 90, + MCIERR_CREATEWINDOW, + MCIERR_FILE_READ, + MCIERR_FILE_WRITE, + MCIERR_NO_IDENTITY // = MCIERR_BASE + 94 +} +const MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256; + +const MCI_FIRST=DRV_MCI_FIRST; +const MCI_OPEN=0x803; +const MCI_CLOSE=0x804; +const MCI_ESCAPE=0x805; +const MCI_PLAY=0x806; +const MCI_SEEK=0x807; +const MCI_STOP=0x808; +const MCI_PAUSE=0x809; +const MCI_INFO=0x80A; +const MCI_GETDEVCAPS=0x80B; +const MCI_SPIN=0x80C; +const MCI_SET=0x80D; +const MCI_STEP=0x80E; +const MCI_RECORD=0x80F; +const MCI_SYSINFO=0x810; +const MCI_BREAK=0x811; +const MCI_SAVE=0x813; +const MCI_STATUS=0x814; +const MCI_CUE=0x830; +const MCI_REALIZE=0x840; +const MCI_WINDOW=0x841; +const MCI_PUT=0x842; +const MCI_WHERE=0x843; +const MCI_FREEZE=0x844; +const MCI_UNFREEZE=0x845; +const MCI_LOAD=0x850; +const MCI_CUT=0x851; +const MCI_COPY=0x852; +const MCI_PASTE=0x853; +const MCI_UPDATE=0x854; +const MCI_RESUME=0x855; +const MCI_DELETE=0x856; +const MCI_USER_MESSAGES=(DRV_MCI_FIRST+0x400); +const MCI_LAST=0xFFF; + +const MCIDEVICEID MCI_ALL_DEVICE_ID = -1; + +const MCI_DEVTYPE_VCR=513; +const MCI_DEVTYPE_VIDEODISC=514; +const MCI_DEVTYPE_OVERLAY=515; +const MCI_DEVTYPE_CD_AUDIO=516; +const MCI_DEVTYPE_DAT=517; +const MCI_DEVTYPE_SCANNER=518; +const MCI_DEVTYPE_ANIMATION=519; +const MCI_DEVTYPE_DIGITAL_VIDEO=520; +const MCI_DEVTYPE_OTHER=521; +const MCI_DEVTYPE_WAVEFORM_AUDIO=522; +const MCI_DEVTYPE_SEQUENCER=523; +const MCI_DEVTYPE_FIRST=MCI_DEVTYPE_VCR; +const MCI_DEVTYPE_LAST=MCI_DEVTYPE_SEQUENCER; +const MCI_DEVTYPE_FIRST_USER=0x1000; +const MCI_MODE_NOT_READY=(MCI_STRING_OFFSET+12); +const MCI_MODE_STOP=(MCI_STRING_OFFSET+13); +const MCI_MODE_PLAY=(MCI_STRING_OFFSET+14); +const MCI_MODE_RECORD=(MCI_STRING_OFFSET+15); +const MCI_MODE_SEEK=(MCI_STRING_OFFSET+16); +const MCI_MODE_PAUSE=(MCI_STRING_OFFSET+17); +const MCI_MODE_OPEN=(MCI_STRING_OFFSET+18); +const MCI_FORMAT_MILLISECONDS=0; +const MCI_FORMAT_HMS=1; +const MCI_FORMAT_MSF=2; +const MCI_FORMAT_FRAMES=3; +const MCI_FORMAT_SMPTE_24=4; +const MCI_FORMAT_SMPTE_25=5; +const MCI_FORMAT_SMPTE_30=6; +const MCI_FORMAT_SMPTE_30DROP=7; +const MCI_FORMAT_BYTES=8; +const MCI_FORMAT_SAMPLES=9; +const MCI_FORMAT_TMSF=10; + + + + +// Macros +BYTE MCI_HMS_HOUR(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_HMS_MINUTE(DWORD t) { return cast(BYTE)(t>>>8); } +BYTE MCI_HMS_SECOND(DWORD t) { return cast(BYTE)( t>>>16); } +DWORD MCI_MAKE_HMS(BYTE h, BYTE m, BYTE s) { return h |(m<<8)|(cast(DWORD)(s)<<16); } +DWORD MCI_MAKE_MSF(BYTE m, BYTE s, BYTE f) { return m |(s<<8)|(cast(DWORD)(f)<<16); } +DWORD MCI_MAKE_TMSF(BYTE t, BYTE m, BYTE s, BYTE f) { + return t |(m<<8)|(s<<16)|(cast(DWORD)(f)<< 24); } + +BYTE MCI_MSF_MINUTE(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_MSF_SECOND(DWORD t) { return cast(BYTE)(t >>> 8); } +BYTE MCI_MSF_FRAME(DWORD t) { return cast(BYTE)(t >>> 16); } + +BYTE MCI_TMSF_TRACK(DWORD t) { return cast(BYTE)(t); } +BYTE MCI_TMSF_MINUTE(DWORD t) { return cast(BYTE)(t>>8); } +BYTE MCI_TMSF_SECOND(DWORD t) { return cast(BYTE)(t>>16); } +BYTE MCI_TMSF_FRAME(DWORD t) { return cast(BYTE)(t>>24); } + + +const MCI_NOTIFY_SUCCESSFUL=1; +const MCI_NOTIFY_SUPERSEDED=2; +const MCI_NOTIFY_ABORTED=4; +const MCI_NOTIFY_FAILURE=8; +const MCI_NOTIFY=1; +const MCI_WAIT=2; +const MCI_FROM=4; +const MCI_TO=8; +const MCI_TRACK=16; +const MCI_OPEN_SHAREABLE=256; +const MCI_OPEN_ELEMENT=512; +const MCI_OPEN_ALIAS=1024; +const MCI_OPEN_ELEMENT_ID=2048; +const MCI_OPEN_TYPE_ID=0x1000; +const MCI_OPEN_TYPE=0x2000; +const MCI_SEEK_TO_START=256; +const MCI_SEEK_TO_END=512; +const MCI_STATUS_ITEM=256; +const MCI_STATUS_START=512; +const MCI_STATUS_LENGTH=1; +const MCI_STATUS_POSITION=2; +const MCI_STATUS_NUMBER_OF_TRACKS=3; +const MCI_STATUS_MODE=4; +const MCI_STATUS_MEDIA_PRESENT=5; +const MCI_STATUS_TIME_FORMAT=6; +const MCI_STATUS_READY=7; +const MCI_STATUS_CURRENT_TRACK=8; +const MCI_INFO_PRODUCT=256; +const MCI_INFO_FILE=512; +const MCI_INFO_MEDIA_UPC=1024; +const MCI_INFO_MEDIA_IDENTITY=2048; +const MCI_INFO_NAME=0x1000; +const MCI_INFO_COPYRIGHT=0x2000; + +const MCI_GETDEVCAPS_ITEM=256; +const MCI_GETDEVCAPS_CAN_RECORD=1; +const MCI_GETDEVCAPS_HAS_AUDIO=2; +const MCI_GETDEVCAPS_HAS_VIDEO=3; +const MCI_GETDEVCAPS_DEVICE_TYPE=4; +const MCI_GETDEVCAPS_USES_FILES=5; +const MCI_GETDEVCAPS_COMPOUND_DEVICE=6; +const MCI_GETDEVCAPS_CAN_EJECT=7; +const MCI_GETDEVCAPS_CAN_PLAY=8; +const MCI_GETDEVCAPS_CAN_SAVE=9; + +const MCI_SYSINFO_QUANTITY=256; +const MCI_SYSINFO_OPEN=512; +const MCI_SYSINFO_NAME=1024; +const MCI_SYSINFO_INSTALLNAME=2048; +const MCI_SET_DOOR_OPEN=256; +const MCI_SET_DOOR_CLOSED=512; +const MCI_SET_TIME_FORMAT=1024; +const MCI_SET_AUDIO=2048; +const MCI_SET_VIDEO=0x1000; +const MCI_SET_ON=0x2000; +const MCI_SET_OFF=0x4000; + +const MCI_SET_AUDIO_ALL=0; +const MCI_SET_AUDIO_LEFT=1; +const MCI_SET_AUDIO_RIGHT=2; + +const MCI_BREAK_KEY=256; +const MCI_BREAK_HWND=512; +const MCI_BREAK_OFF=1024; + +const MCI_RECORD_INSERT=256; +const MCI_RECORD_OVERWRITE=512; +const MCI_SAVE_FILE=256; +const MCI_LOAD_FILE=256; + +const MCI_VD_MODE_PARK=(MCI_VD_OFFSET+1); +const MCI_VD_MEDIA_CLV=(MCI_VD_OFFSET+2); +const MCI_VD_MEDIA_CAV=(MCI_VD_OFFSET+3); +const MCI_VD_MEDIA_OTHER=(MCI_VD_OFFSET+4); + +const MCI_VD_FORMAT_TRACK=0x4001; +const MCI_VD_PLAY_REVERSE=0x10000; +const MCI_VD_PLAY_FAST=0x20000; +const MCI_VD_PLAY_SPEED=0x40000; +const MCI_VD_PLAY_SCAN=0x80000; +const MCI_VD_PLAY_SLOW=0x100000; +const MCI_VD_SEEK_REVERSE=0x10000; +const MCI_VD_STATUS_SPEED=0x4002; +const MCI_VD_STATUS_FORWARD=0x4003; +const MCI_VD_STATUS_MEDIA_TYPE=0x4004; +const MCI_VD_STATUS_SIDE=0x4005; +const MCI_VD_STATUS_DISC_SIZE=0x4006; +const MCI_VD_GETDEVCAPS_CLV=0x10000; +const MCI_VD_GETDEVCAPS_CAV=0x20000; +const MCI_VD_SPIN_UP=0x10000; +const MCI_VD_SPIN_DOWN=0x20000; +const MCI_VD_GETDEVCAPS_CAN_REVERSE=0x4002; +const MCI_VD_GETDEVCAPS_FAST_RATE=0x4003; +const MCI_VD_GETDEVCAPS_SLOW_RATE=0x4004; +const MCI_VD_GETDEVCAPS_NORMAL_RATE=0x4005; +const MCI_VD_STEP_FRAMES=0x10000; +const MCI_VD_STEP_REVERSE=0x20000; +const MCI_VD_ESCAPE_STRING=256; + +const MCI_CDA_STATUS_TYPE_TRACK=0x4001; +const MCI_CDA_TRACK_AUDIO=MCI_CD_OFFSET; +const MCI_CDA_TRACK_OTHER=(MCI_CD_OFFSET+1); + +const MCI_WAVE_PCM=MCI_WAVE_OFFSET; +const MCI_WAVE_MAPPER=(MCI_WAVE_OFFSET+1); +const MCI_WAVE_OPEN_BUFFER=0x10000; +const MCI_WAVE_SET_FORMATTAG=0x10000; +const MCI_WAVE_SET_CHANNELS=0x20000; +const MCI_WAVE_SET_SAMPLESPERSEC=0x40000; +const MCI_WAVE_SET_AVGBYTESPERSEC=0x80000; +const MCI_WAVE_SET_BLOCKALIGN=0x100000; +const MCI_WAVE_SET_BITSPERSAMPLE=0x200000; +const MCI_WAVE_INPUT=0x400000; +const MCI_WAVE_OUTPUT=0x800000; +const MCI_WAVE_STATUS_FORMATTAG=0x4001; +const MCI_WAVE_STATUS_CHANNELS=0x4002; +const MCI_WAVE_STATUS_SAMPLESPERSEC=0x4003; +const MCI_WAVE_STATUS_AVGBYTESPERSEC=0x4004; +const MCI_WAVE_STATUS_BLOCKALIGN=0x4005; +const MCI_WAVE_STATUS_BITSPERSAMPLE=0x4006; +const MCI_WAVE_STATUS_LEVEL=0x4007; +const MCI_WAVE_SET_ANYINPUT=0x4000000; +const MCI_WAVE_SET_ANYOUTPUT=0x8000000; +const MCI_WAVE_GETDEVCAPS_INPUTS=0x4001; +const MCI_WAVE_GETDEVCAPS_OUTPUTS=0x4002; + +const MCI_SEQ_DIV_PPQN=MCI_SEQ_OFFSET; +const MCI_SEQ_DIV_SMPTE_24=(MCI_SEQ_OFFSET+1); +const MCI_SEQ_DIV_SMPTE_25=(MCI_SEQ_OFFSET+2); +const MCI_SEQ_DIV_SMPTE_30DROP=(MCI_SEQ_OFFSET+3); +const MCI_SEQ_DIV_SMPTE_30=(MCI_SEQ_OFFSET+4); +const MCI_SEQ_FORMAT_SONGPTR=0x4001; +const MCI_SEQ_FILE=0x4002; +const MCI_SEQ_MIDI=0x4003; +const MCI_SEQ_SMPTE=0x4004; +const MCI_SEQ_NONE=65533; +const MCI_SEQ_MAPPER=65535; + +const MCI_SEQ_STATUS_TEMPO=0x4002; +const MCI_SEQ_STATUS_PORT=0x4003; +const MCI_SEQ_STATUS_SLAVE=0x4007; +const MCI_SEQ_STATUS_MASTER=0x4008; +const MCI_SEQ_STATUS_OFFSET=0x4009; +const MCI_SEQ_STATUS_DIVTYPE=0x400A; +const MCI_SEQ_STATUS_NAME=0x400B; +const MCI_SEQ_STATUS_COPYRIGHT=0x400C; + +const MCI_SEQ_SET_TEMPO=0x10000; +const MCI_SEQ_SET_PORT=0x20000; +const MCI_SEQ_SET_SLAVE=0x40000; +const MCI_SEQ_SET_MASTER=0x80000; +const MCI_SEQ_SET_OFFSET=0x1000000; + +const MCI_ANIM_OPEN_WS=0x10000; +const MCI_ANIM_OPEN_PARENT=0x20000; +const MCI_ANIM_OPEN_NOSTATIC=0x40000; +const MCI_ANIM_PLAY_SPEED=0x10000; +const MCI_ANIM_PLAY_REVERSE=0x20000; +const MCI_ANIM_PLAY_FAST=0x40000; +const MCI_ANIM_PLAY_SLOW=0x80000; +const MCI_ANIM_PLAY_SCAN=0x100000; +const MCI_ANIM_STEP_REVERSE=0x10000; +const MCI_ANIM_STEP_FRAMES=0x20000; +const MCI_ANIM_STATUS_SPEED=0x4001; +const MCI_ANIM_STATUS_FORWARD=0x4002; +const MCI_ANIM_STATUS_HWND=0x4003; +const MCI_ANIM_STATUS_HPAL=0x4004; +const MCI_ANIM_STATUS_STRETCH=0x4005; +const MCI_ANIM_INFO_TEXT=0x10000; + +const MCI_ANIM_GETDEVCAPS_CAN_REVERSE=0x4001; +const MCI_ANIM_GETDEVCAPS_FAST_RATE=0x4002; +const MCI_ANIM_GETDEVCAPS_SLOW_RATE=0x4003; +const MCI_ANIM_GETDEVCAPS_NORMAL_RATE=0x4004; +const MCI_ANIM_GETDEVCAPS_PALETTES=0x4006; +const MCI_ANIM_GETDEVCAPS_CAN_STRETCH=0x4007; +const MCI_ANIM_GETDEVCAPS_MAX_WINDOWS=0x4008; + +const MCI_ANIM_REALIZE_NORM=0x10000; +const MCI_ANIM_REALIZE_BKGD=0x20000; + +const MCI_ANIM_WINDOW_HWND=0x10000; +const MCI_ANIM_WINDOW_STATE=0x40000; +const MCI_ANIM_WINDOW_TEXT=0x80000; +const MCI_ANIM_WINDOW_ENABLE_STRETCH=0x100000; +const MCI_ANIM_WINDOW_DISABLE_STRETCH=0x200000; +const MCI_ANIM_WINDOW_DEFAULT=0x0; + +const MCI_ANIM_RECT=0x10000; +const MCI_ANIM_PUT_SOURCE=0x20000; +const MCI_ANIM_PUT_DESTINATION=0x40000; +const MCI_ANIM_WHERE_SOURCE=0x20000; +const MCI_ANIM_WHERE_DESTINATION=0x40000; +const MCI_ANIM_UPDATE_HDC=0x20000; + +const MCI_OVLY_OPEN_WS=0x10000; +const MCI_OVLY_OPEN_PARENT=0x20000; +const MCI_OVLY_STATUS_HWND=0x4001; +const MCI_OVLY_STATUS_STRETCH=0x4002; +const MCI_OVLY_INFO_TEXT=0x10000; +const MCI_OVLY_GETDEVCAPS_CAN_STRETCH=0x4001; +const MCI_OVLY_GETDEVCAPS_CAN_FREEZE=0x4002; +const MCI_OVLY_GETDEVCAPS_MAX_WINDOWS=0x4003; +const MCI_OVLY_WINDOW_HWND=0x10000; +const MCI_OVLY_WINDOW_STATE=0x40000; +const MCI_OVLY_WINDOW_TEXT=0x80000; +const MCI_OVLY_WINDOW_ENABLE_STRETCH=0x100000; +const MCI_OVLY_WINDOW_DISABLE_STRETCH=0x200000; +const MCI_OVLY_WINDOW_DEFAULT=0x0; +const MCI_OVLY_RECT=0x10000; +const MCI_OVLY_PUT_SOURCE=0x20000; +const MCI_OVLY_PUT_DESTINATION=0x40000; +const MCI_OVLY_PUT_FRAME=0x80000; +const MCI_OVLY_PUT_VIDEO=0x100000; +const MCI_OVLY_WHERE_SOURCE=0x20000; +const MCI_OVLY_WHERE_DESTINATION=0x40000; +const MCI_OVLY_WHERE_FRAME=0x80000; +const MCI_OVLY_WHERE_VIDEO=0x100000; + +const NEWTRANSPARENT=3; +const QUERYROPSUPPORT=40; +const SELECTDIB=41; + +LONG DIBINDEX(WORD n) { + return MAKELONG(n, 0x10FF); +} +const CAPS1=94; +const C1_TRANSPARENT=1; + +const SEEK_SET=0; +const SEEK_CUR=1; +const SEEK_END=2; + +alias DWORD MCIERROR; +alias UINT MCIDEVICEID; +alias UINT function (MCIDEVICEID, DWORD) YIELDPROC; +alias UINT MMVERSION; +alias UINT MMRESULT; + +struct MMTIME { + UINT wType; + union { + DWORD ms; + DWORD sample; + DWORD cb; + DWORD ticks; + struct smpte { + BYTE hour; + BYTE min; + BYTE sec; + BYTE frame; + BYTE fps; + BYTE dummy; + BYTE[2] pad; + }; + struct midi { + DWORD songptrpos; + } + } +} +alias MMTIME* PMMTIME, LPMMTIME; + +alias TypeDef!(HANDLE) HDRVR; + +struct DRVCONFIGINFO { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; +} +alias DRVCONFIGINFO * PDRVCONFIGINFO, LPDRVCONFIGINFO; + +struct DRVCONFIGINFOEX { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; + DWORD dnDevNode; +} +alias DRVCONFIGINFOEX* PDRVCONFIGINFOEX, LPDRVCONFIGINFOEX; + +extern(Windows): + +/+FIXME: I couldn't find these in MSDN. +alias void function (HDRVR, UINT, DWORD, DWORD, DWORD) DRVCALLBACK; +LRESULT DRIVERPROC (DWORD, HDRVR, UINT, LPARAM, LPARAM); +alias DRVCALLBACK* LPDRVCALLBACK, PDRVCALLBACK; + +alias DRVCALLBACK WAVECALLBACK; +alias WAVECALLBACK* LPWAVECALLBACK; + +alias DRVCALLBACK MIDICALLBACK; +alias MIDICALLBACK* LPMIDICALLBACK; + ++/ + +alias TypeDef!(HANDLE) HWAVE; +alias TypeDef!(HANDLE) HWAVEIN; +alias TypeDef!(HANDLE) HWAVEOUT; + +alias HWAVEIN* LPHWAVEIN; +alias HWAVEOUT* LPHWAVEOUT; + +struct WAVEHDR { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + DWORD dwLoops; + WAVEHDR *lpNext; + DWORD reserved; +} +alias WAVEHDR* PWAVEHDR, LPWAVEHDR; + +struct WAVEOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias WAVEOUTCAPSA* PWAVEOUTCAPSA, LPWAVEOUTCAPSA; + +struct WAVEOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias WAVEOUTCAPSW* PWAVEOUTCAPSW, LPWAVEOUTCAPSW; + +struct WAVEINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias WAVEINCAPSA* PWAVEINCAPSA, LPWAVEINCAPSA; + +struct WAVEINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias WAVEINCAPSW* PWAVEINCAPSW, LPWAVEINCAPSW; + +struct WAVEFORMAT { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; +} +alias WAVEFORMAT* PWAVEFORMAT, LPWAVEFORMAT; + +struct PCMWAVEFORMAT { + WAVEFORMAT wf; + WORD wBitsPerSample; +} +alias PCMWAVEFORMAT* PPCMWAVEFORMAT, LPPCMWAVEFORMAT; + +struct WAVEFORMATEX { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; +} +alias WAVEFORMATEX* PWAVEFORMATEX, LPWAVEFORMATEX; +alias const(WAVEFORMATEX)* LPCWAVEFORMATEX; + +alias TypeDef!(HANDLE) HMIDI; +alias TypeDef!(HANDLE) HMIDIIN; +alias TypeDef!(HANDLE) HMIDIOUT; +alias TypeDef!(HANDLE) HMIDISTRM; + +alias HMIDI* LPHMIDI; +alias HMIDIIN* LPHMIDIIN; +alias HMIDIOUT* LPHMIDIOUT; +alias HMIDISTRM* LPHMIDISTRM; + +alias WORD[MIDIPATCHSIZE] PATCHARRAY; +alias WORD* LPPATCHARRAY; +alias WORD[MIDIPATCHSIZE] KEYARRAY; +alias WORD* LPKEYARRAY; + +struct MIDIOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias MIDIOUTCAPSA* PMIDIOUTCAPSA, LPMIDIOUTCAPSA; + +struct MIDIOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias MIDIOUTCAPSW* PMIDIOUTCAPSW, LPMIDIOUTCAPSW; + +struct MIDIINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD dwSupport; +} +alias MIDIINCAPSA* PMIDIINCAPSA, LPMIDIINCAPSA; + +struct MIDIINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD dwSupport; +} +alias MIDIINCAPSW* PMIDIINCAPSW, LPMIDIINCAPSW; + +struct MIDIHDR { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD dwUser; + DWORD dwFlags; + MIDIHDR *lpNext; + DWORD reserved; + DWORD dwOffset; + DWORD[8] dwReserved; +} +alias MIDIHDR* PMIDIHDR, LPMIDIHDR; + +struct MIDIEVENT { + DWORD dwDeltaTime; + DWORD dwStreamID; + DWORD dwEvent; + DWORD[1] dwParms; +} + +struct MIDISTRMBUFFVER { + DWORD dwVersion; + DWORD dwMid; + DWORD dwOEMVersion; +} + +struct MIDIPROPTIMEDIV { + DWORD cbStruct; + DWORD dwTimeDiv; +} +alias MIDIPROPTIMEDIV* LPMIDIPROPTIMEDIV; + +struct MIDIPROPTEMPO { + DWORD cbStruct; + DWORD dwTempo; +} +alias MIDIPROPTEMPO* LPMIDIPROPTEMPO; + +struct AUXCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias AUXCAPSA* PAUXCAPSA, LPAUXCAPSA; + +struct AUXCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias AUXCAPSW* PAUXCAPSW, LPAUXCAPSW; + +alias TypeDef!(HANDLE) HMIXEROBJ; +alias HMIXEROBJ* LPHMIXEROBJ; + +alias TypeDef!(HANDLE) HMIXER; +alias HMIXER* LPHMIXER; + +struct MIXERCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + DWORD fdwSupport; + DWORD cDestinations; +} +alias MIXERCAPSA* PMIXERCAPSA, LPMIXERCAPSA; + +struct MIXERCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + DWORD fdwSupport; + DWORD cDestinations; +} +alias MIXERCAPSW* PMIXERCAPSW, LPMIXERCAPSW; + +struct MIXERLINEA { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + CHAR[MIXER_SHORT_NAME_CHARS] szShortName; + CHAR[MIXER_LONG_NAME_CHARS] szName; + struct Target { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR[MAXPNAMELEN] szPname; + } +} +alias MIXERLINEA* PMIXERLINEA, LPMIXERLINEA; + +struct MIXERLINEW { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; + WCHAR[MIXER_LONG_NAME_CHARS] szName; + struct Target { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR[MAXPNAMELEN] szPname; + } +} +alias MIXERLINEW* PMIXERLINEW, LPMIXERLINEW; + +struct MIXERCONTROLA { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + CHAR[MIXER_SHORT_NAME_CHARS] szShortName; + CHAR[MIXER_LONG_NAME_CHARS] szName; + union _Bounds { + struct { + LONG lMinimum; + LONG lMaximum; + } + struct { + DWORD dwMinimum; + DWORD dwMaximum; + } + DWORD[6] dwReserved; + } + _Bounds Bounds; + union _Metrics { + DWORD cSteps; + DWORD cbCustomData; + DWORD[6] dwReserved; + } + _Metrics Metrics; +} +alias MIXERCONTROLA* PMIXERCONTROLA, LPMIXERCONTROLA; + +struct MIXERCONTROLW { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + WCHAR[MIXER_SHORT_NAME_CHARS] szShortName; + WCHAR[MIXER_LONG_NAME_CHARS] szName; + union _Bounds { + struct { + LONG lMinimum; + LONG lMaximum; + } + struct { + DWORD dwMinimum; + DWORD dwMaximum; + } + DWORD[6] dwReserved; + } + _Bounds Bounds; + union _Metrics { + DWORD cSteps; + DWORD cbCustomData; + DWORD[6] dwReserved; + } + _Metrics Metrics; +} + +alias MIXERCONTROLW* PMIXERCONTROLW, LPMIXERCONTROLW; + +struct MIXERLINECONTROLSA { + DWORD cbStruct; + DWORD dwLineID; + union { + DWORD dwControlID; + DWORD dwControlType; + } + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLA pamxctrl; +} +alias MIXERLINECONTROLSA* PMIXERLINECONTROLSA, LPMIXERLINECONTROLSA; + +struct MIXERLINECONTROLSW { + DWORD cbStruct; + DWORD dwLineID; + union { + DWORD dwControlID; + DWORD dwControlType; + } + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLW pamxctrl; +} +alias MIXERLINECONTROLSW* PMIXERLINECONTROLSW, LPMIXERLINECONTROLSW; + +struct MIXERCONTROLDETAILS { + DWORD cbStruct; + DWORD dwControlID; + DWORD cChannels; + union { + HWND hwndOwner; + DWORD cMultipleItems; + } + DWORD cbDetails; + PVOID paDetails; +} +alias MIXERCONTROLDETAILS* PMIXERCONTROLDETAILS, LPMIXERCONTROLDETAILS; + +struct MIXERCONTROLDETAILS_LISTTEXTA { + DWORD dwParam1; + DWORD dwParam2; + CHAR[MIXER_LONG_NAME_CHARS] szName; +} +alias MIXERCONTROLDETAILS_LISTTEXTA* PMIXERCONTROLDETAILS_LISTTEXTA, LPMIXERCONTROLDETAILS_LISTTEXTA; + +struct MIXERCONTROLDETAILS_LISTTEXTW { + DWORD dwParam1; + DWORD dwParam2; + WCHAR[MIXER_LONG_NAME_CHARS] szName; +} +alias MIXERCONTROLDETAILS_LISTTEXTW* PMIXERCONTROLDETAILS_LISTTEXTW, LPMIXERCONTROLDETAILS_LISTTEXTW; + +struct MIXERCONTROLDETAILS_BOOLEAN { + LONG fValue; +} +alias MIXERCONTROLDETAILS_BOOLEAN* PMIXERCONTROLDETAILS_BOOLEAN, LPMIXERCONTROLDETAILS_BOOLEAN; + +struct MIXERCONTROLDETAILS_SIGNED { + LONG lValue; +} +alias MIXERCONTROLDETAILS_SIGNED* PMIXERCONTROLDETAILS_SIGNED, LPMIXERCONTROLDETAILS_SIGNED; + +struct MIXERCONTROLDETAILS_UNSIGNED { + DWORD dwValue; +} +alias MIXERCONTROLDETAILS_UNSIGNED* PMIXERCONTROLDETAILS_UNSIGNED, LPMIXERCONTROLDETAILS_UNSIGNED; + +alias void function (UINT, UINT, DWORD, DWORD, DWORD) LPTIMECALLBACK; + +struct TIMECAPS { + UINT wPeriodMin; + UINT wPeriodMax; +} +alias TIMECAPS* PTIMECAPS, LPTIMECAPS; + +struct JOYCAPSA { + WORD wMid; + WORD wPid; + CHAR[MAXPNAMELEN] szPname; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + CHAR[MAXPNAMELEN] szRegKey; + CHAR[MAX_JOYSTICKOEMVXDNAME] szOEMVxD; +} +alias JOYCAPSA* PJOYCAPSA, LPJOYCAPSA; + +struct JOYCAPSW { + WORD wMid; + WORD wPid; + WCHAR[MAXPNAMELEN] szPname; + UINT wXmin; + UINT wXmax; + UINT wYmin; + UINT wYmax; + UINT wZmin; + UINT wZmax; + UINT wNumButtons; + UINT wPeriodMin; + UINT wPeriodMax; + UINT wRmin; + UINT wRmax; + UINT wUmin; + UINT wUmax; + UINT wVmin; + UINT wVmax; + UINT wCaps; + UINT wMaxAxes; + UINT wNumAxes; + UINT wMaxButtons; + WCHAR[MAXPNAMELEN] szRegKey; + WCHAR[MAX_JOYSTICKOEMVXDNAME] szOEMVxD; +} +alias JOYCAPSW* PJOYCAPSW, LPJOYCAPSW; + +struct JOYINFO { + UINT wXpos; + UINT wYpos; + UINT wZpos; + UINT wButtons; +} +alias JOYINFO* PJOYINFO, LPJOYINFO; + +struct JOYINFOEX { + DWORD dwSize; + DWORD dwFlags; + DWORD dwXpos; + DWORD dwYpos; + DWORD dwZpos; + DWORD dwRpos; + DWORD dwUpos; + DWORD dwVpos; + DWORD dwButtons; + DWORD dwButtonNumber; + DWORD dwPOV; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias JOYINFOEX* PJOYINFOEX, LPJOYINFOEX; + +alias DWORD FOURCC; +alias char* HPSTR; + +alias TypeDef!(HANDLE) HMMIO; + +alias LRESULT function (LPSTR, UINT, LPARAM, LPARAM) LPMMIOPROC; + +struct MMIOINFO { + DWORD dwFlags; + FOURCC fccIOProc; + LPMMIOPROC pIOProc; + UINT wErrorRet; + HTASK htask; + LONG cchBuffer; + HPSTR pchBuffer; + HPSTR pchNext; + HPSTR pchEndRead; + HPSTR pchEndWrite; + LONG lBufOffset; + LONG lDiskOffset; + DWORD[3] adwInfo; + DWORD dwReserved1; + DWORD dwReserved2; + HMMIO hmmio; +} +alias MMIOINFO* PMMIOINFO, LPMMIOINFO; +alias const(MMIOINFO)* LPCMMIOINFO; + +struct MMCKINFO { + FOURCC ckid; + DWORD cksize; + FOURCC fccType; + DWORD dwDataOffset; + DWORD dwFlags; +} +alias MMCKINFO* PMMCKINFO, LPMMCKINFO; +alias const(MMCKINFO)* LPCMMCKINFO; + +struct MCI_GENERIC_PARMS { + DWORD dwCallback; +} +alias MCI_GENERIC_PARMS* PMCI_GENERIC_PARMS, LPMCI_GENERIC_PARMS; + +struct MCI_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; +} +alias MCI_OPEN_PARMSA* PMCI_OPEN_PARMSA, LPMCI_OPEN_PARMSA; + +struct MCI_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; +} +alias MCI_OPEN_PARMSW* PMCI_OPEN_PARMSW, LPMCI_OPEN_PARMSW; + +struct MCI_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_PLAY_PARMS* PMCI_PLAY_PARMS, LPMCI_PLAY_PARMS; + +struct MCI_SEEK_PARMS { + DWORD dwCallback; + DWORD dwTo; +} +alias MCI_SEEK_PARMS* PMCI_SEEK_PARMS, LPMCI_SEEK_PARMS; + +struct MCI_STATUS_PARMS { + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; + DWORD dwTrack; +} +alias MCI_STATUS_PARMS* PMCI_STATUS_PARMS, LPMCI_STATUS_PARMS; + +struct MCI_INFO_PARMSA { + DWORD dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; +} +alias MCI_INFO_PARMSA* LPMCI_INFO_PARMSA; + +struct MCI_INFO_PARMSW { + DWORD dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; +} +alias MCI_INFO_PARMSW* LPMCI_INFO_PARMSW; + +struct MCI_GETDEVCAPS_PARMS { + DWORD dwCallback; + DWORD dwReturn; + DWORD dwItem; +} +alias MCI_GETDEVCAPS_PARMS* PMCI_GETDEVCAPS_PARMS, LPMCI_GETDEVCAPS_PARMS; + +struct MCI_SYSINFO_PARMSA { + DWORD dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias MCI_SYSINFO_PARMSA* PMCI_SYSINFO_PARMSA, LPMCI_SYSINFO_PARMSA; + +struct MCI_SYSINFO_PARMSW { + DWORD dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias MCI_SYSINFO_PARMSW* PMCI_SYSINFO_PARMSW, LPMCI_SYSINFO_PARMSW; + +struct MCI_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} +alias MCI_SET_PARMS* PMCI_SET_PARMS, LPMCI_SET_PARMS; + +struct MCI_BREAK_PARMS { + DWORD dwCallback; + int nVirtKey; + HWND hwndBreak; +} +alias MCI_BREAK_PARMS* PMCI_BREAK_PARMS, LPMCI_BREAK_PARMS; + +struct MCI_SAVE_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; +} +alias MCI_SAVE_PARMSA* PMCI_SAVE_PARMSA, LPMCI_SAVE_PARMSA; + +struct MCI_SAVE_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; +} +alias MCI_SAVE_PARMSW* PMCI_SAVE_PARMSW, LPMCI_SAVE_PARMSW; + +struct MCI_LOAD_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; +} +alias MCI_LOAD_PARMSA* PMCI_LOAD_PARMSA, LPMCI_LOAD_PARMSA; + +struct MCI_LOAD_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; +} +alias MCI_LOAD_PARMSW* PMCI_LOAD_PARMSW, LPMCI_LOAD_PARMSW; + +struct MCI_RECORD_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_RECORD_PARMS* LPMCI_RECORD_PARMS; + +struct MCI_VD_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias MCI_VD_PLAY_PARMS* PMCI_VD_PLAY_PARMS, LPMCI_VD_PLAY_PARMS; + +struct MCI_VD_STEP_PARMS { + DWORD dwCallback; + DWORD dwFrames; +} +alias MCI_VD_STEP_PARMS* PMCI_VD_STEP_PARMS, LPMCI_VD_STEP_PARMS; + +struct MCI_VD_ESCAPE_PARMSA { + DWORD dwCallback; + LPCSTR lpstrCommand; +} +alias MCI_VD_ESCAPE_PARMSA* PMCI_VD_ESCAPE_PARMSA, LPMCI_VD_ESCAPE_PARMSA; + +struct MCI_VD_ESCAPE_PARMSW { + DWORD dwCallback; + LPCWSTR lpstrCommand; +} +alias MCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW, LPMCI_VD_ESCAPE_PARMSW; + +struct MCI_WAVE_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias MCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA, LPMCI_WAVE_OPEN_PARMSA; + +struct MCI_WAVE_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias MCI_WAVE_OPEN_PARMSW* PMCI_WAVE_OPEN_PARMSW, LPMCI_WAVE_OPEN_PARMSW; + +struct MCI_WAVE_DELETE_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias MCI_WAVE_DELETE_PARMS* PMCI_WAVE_DELETE_PARMS, LPMCI_WAVE_DELETE_PARMS; + +struct MCI_WAVE_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + UINT wInput; + UINT wOutput; + WORD wFormatTag; + WORD wReserved2; + WORD nChannels; + WORD wReserved3; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wReserved4; + WORD wBitsPerSample; + WORD wReserved5; +} +alias MCI_WAVE_SET_PARMS* PMCI_WAVE_SET_PARMS, LPMCI_WAVE_SET_PARMS; + +extern (Windows): +LRESULT CloseDriver(HDRVR, LONG, LONG); +HDRVR OpenDriver(LPCWSTR, LPCWSTR, LONG); +LRESULT SendDriverMessage(HDRVR, UINT, LONG, LONG); +HMODULE DrvGetModuleHandle(HDRVR); +HMODULE GetDriverModuleHandle(HDRVR); +LRESULT DefDriverProc(DWORD, HDRVR, UINT, LPARAM, LPARAM); +UINT mmsystemGetVersion(); +// FIXME: I believe this next line is a mistake +//alias OutputDebugString OutputDebugStr; +BOOL sndPlaySoundA(LPCSTR, UINT); +BOOL sndPlaySoundW(LPCWSTR, UINT); +BOOL PlaySoundA(LPCSTR, HMODULE, DWORD); +BOOL PlaySoundW(LPCWSTR, HMODULE, DWORD); +UINT waveOutGetNumDevs(); +MMRESULT waveOutGetDevCapsA(UINT, LPWAVEOUTCAPSA, UINT); +MMRESULT waveOutGetDevCapsW(UINT, LPWAVEOUTCAPSW, UINT); +MMRESULT waveOutGetVolume(HWAVEOUT, PDWORD); +MMRESULT waveOutSetVolume(HWAVEOUT, DWORD); +MMRESULT waveOutGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT waveOutGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT waveOutOpen(LPHWAVEOUT, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); +MMRESULT waveOutClose(HWAVEOUT); +MMRESULT waveOutPrepareHeader(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutUnprepareHeader(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutWrite(HWAVEOUT, LPWAVEHDR, UINT); +MMRESULT waveOutPause(HWAVEOUT); +MMRESULT waveOutRestart(HWAVEOUT); +MMRESULT waveOutReset(HWAVEOUT); +MMRESULT waveOutBreakLoop(HWAVEOUT); +MMRESULT waveOutGetPosition(HWAVEOUT, LPMMTIME, UINT); +MMRESULT waveOutGetPitch(HWAVEOUT, PDWORD); +MMRESULT waveOutSetPitch(HWAVEOUT, DWORD); +MMRESULT waveOutGetPlaybackRate(HWAVEOUT, PDWORD); +MMRESULT waveOutSetPlaybackRate(HWAVEOUT, DWORD); +MMRESULT waveOutGetID(HWAVEOUT, LPUINT); +MMRESULT waveOutMessage(HWAVEOUT, UINT, DWORD, DWORD); +UINT waveInGetNumDevs(); +MMRESULT waveInGetDevCapsA(UINT, LPWAVEINCAPSA, UINT); +MMRESULT waveInGetDevCapsW(UINT, LPWAVEINCAPSW, UINT); +MMRESULT waveInGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT waveInGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT waveInOpen(LPHWAVEIN, UINT, LPCWAVEFORMATEX, DWORD, DWORD, DWORD); +MMRESULT waveInClose(HWAVEIN); +MMRESULT waveInPrepareHeader(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInUnprepareHeader(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInAddBuffer(HWAVEIN, LPWAVEHDR, UINT); +MMRESULT waveInStart(HWAVEIN); +MMRESULT waveInStop(HWAVEIN); +MMRESULT waveInReset(HWAVEIN); +MMRESULT waveInGetPosition(HWAVEIN, LPMMTIME, UINT); +MMRESULT waveInGetID(HWAVEIN, LPUINT); +MMRESULT waveInMessage(HWAVEIN, UINT, DWORD, DWORD); +UINT midiOutGetNumDevs(); +MMRESULT midiStreamOpen(LPHMIDISTRM, LPUINT, DWORD, DWORD, DWORD, DWORD); +MMRESULT midiStreamClose(HMIDISTRM); +MMRESULT midiStreamProperty(HMIDISTRM, LPBYTE, DWORD); +MMRESULT midiStreamPosition(HMIDISTRM, LPMMTIME, UINT); +MMRESULT midiStreamOut(HMIDISTRM, LPMIDIHDR, UINT); +MMRESULT midiStreamPause(HMIDISTRM); +MMRESULT midiStreamRestart(HMIDISTRM); +MMRESULT midiStreamStop(HMIDISTRM); +MMRESULT midiConnect(HMIDI, HMIDIOUT, PVOID); +MMRESULT midiDisconnect(HMIDI, HMIDIOUT, PVOID); +MMRESULT midiOutGetDevCapsA(UINT, LPMIDIOUTCAPSA, UINT); +MMRESULT midiOutGetDevCapsW(UINT, LPMIDIOUTCAPSW, UINT); +MMRESULT midiOutGetVolume(HMIDIOUT, PDWORD); +MMRESULT midiOutSetVolume(HMIDIOUT, DWORD); +MMRESULT midiOutGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT midiOutGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT midiOutOpen(LPHMIDIOUT, UINT, DWORD, DWORD, DWORD); +MMRESULT midiOutClose(HMIDIOUT); +MMRESULT midiOutPrepareHeader(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutUnprepareHeader(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutShortMsg(HMIDIOUT, DWORD); +MMRESULT midiOutLongMsg(HMIDIOUT, LPMIDIHDR, UINT); +MMRESULT midiOutReset(HMIDIOUT); +MMRESULT midiOutCachePatches(HMIDIOUT, UINT, LPWORD, UINT); +MMRESULT midiOutCacheDrumPatches(HMIDIOUT, UINT, LPWORD, UINT); +MMRESULT midiOutGetID(HMIDIOUT, LPUINT); +MMRESULT midiOutMessage(HMIDIOUT, UINT, DWORD, DWORD); +UINT midiInGetNumDevs(); +MMRESULT midiInGetDevCapsA(UINT, LPMIDIINCAPSA, UINT); +MMRESULT midiInGetDevCapsW(UINT, LPMIDIINCAPSW, UINT); +MMRESULT midiInGetErrorTextA(MMRESULT, LPSTR, UINT); +MMRESULT midiInGetErrorTextW(MMRESULT, LPWSTR, UINT); +MMRESULT midiInOpen(LPHMIDIIN, UINT, DWORD, DWORD, DWORD); +MMRESULT midiInClose(HMIDIIN); +MMRESULT midiInPrepareHeader(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInUnprepareHeader(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInAddBuffer(HMIDIIN, LPMIDIHDR, UINT); +MMRESULT midiInStart(HMIDIIN); +MMRESULT midiInStop(HMIDIIN); +MMRESULT midiInReset(HMIDIIN); +MMRESULT midiInGetID(HMIDIIN, LPUINT); +MMRESULT midiInMessage(HMIDIIN, UINT, DWORD, DWORD); +UINT auxGetNumDevs(); +MMRESULT auxGetDevCapsA(UINT, LPAUXCAPSA, UINT); +MMRESULT auxGetDevCapsW(UINT, LPAUXCAPSW, UINT); +MMRESULT auxSetVolume(UINT, DWORD); +MMRESULT auxGetVolume(UINT, PDWORD); +MMRESULT auxOutMessage(UINT, UINT, DWORD, DWORD); +UINT mixerGetNumDevs(); +MMRESULT mixerGetDevCapsA(UINT, LPMIXERCAPSA, UINT); +MMRESULT mixerGetDevCapsW(UINT, LPMIXERCAPSW, UINT); +MMRESULT mixerOpen(LPHMIXER, UINT, DWORD, DWORD, DWORD); +MMRESULT mixerClose(HMIXER); +DWORD mixerMessage(HMIXER, UINT, DWORD, DWORD); +MMRESULT mixerGetLineInfoA(HMIXEROBJ, LPMIXERLINEA, DWORD); +MMRESULT mixerGetLineInfoW(HMIXEROBJ, LPMIXERLINEW, DWORD); +MMRESULT mixerGetID(HMIXEROBJ, PUINT, DWORD); +MMRESULT mixerGetLineControlsA(HMIXEROBJ, LPMIXERLINECONTROLSA, DWORD); +MMRESULT mixerGetLineControlsW(HMIXEROBJ, LPMIXERLINECONTROLSW, DWORD); +MMRESULT mixerGetControlDetailsA(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT mixerGetControlDetailsW(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT mixerSetControlDetails(HMIXEROBJ, LPMIXERCONTROLDETAILS, DWORD); +MMRESULT timeGetSystemTime(LPMMTIME, UINT); +DWORD timeGetTime(); +MMRESULT timeSetEvent(UINT, UINT, LPTIMECALLBACK, DWORD, UINT); +MMRESULT timeKillEvent(UINT); +MMRESULT timeGetDevCaps(LPTIMECAPS, UINT); +MMRESULT timeBeginPeriod(UINT); +MMRESULT timeEndPeriod(UINT); +UINT joyGetNumDevs(); +MMRESULT joyGetDevCapsA(UINT, LPJOYCAPSA, UINT); +MMRESULT joyGetDevCapsW(UINT, LPJOYCAPSW, UINT); +MMRESULT joyGetPos(UINT, LPJOYINFO); +MMRESULT joyGetPosEx(UINT, LPJOYINFOEX); +MMRESULT joyGetThreshold(UINT, LPUINT); +MMRESULT joyReleaseCapture(UINT); +MMRESULT joySetCapture(HWND, UINT, UINT, BOOL); +MMRESULT joySetThreshold(UINT, UINT); +FOURCC mmioStringToFOURCCA(LPCSTR, UINT); +FOURCC mmioStringToFOURCCW(LPCWSTR, UINT); +LPMMIOPROC mmioInstallIOProcA(FOURCC, LPMMIOPROC, DWORD); +LPMMIOPROC mmioInstallIOProcW(FOURCC, LPMMIOPROC, DWORD); +HMMIO mmioOpenA(LPSTR, LPMMIOINFO, DWORD); +HMMIO mmioOpenW(LPWSTR, LPMMIOINFO, DWORD); +MMRESULT mmioRenameA(LPCSTR, LPCSTR, LPCMMIOINFO, DWORD); +MMRESULT mmioRenameW(LPCWSTR, LPCWSTR, LPCMMIOINFO, DWORD); +MMRESULT mmioClose(HMMIO, UINT); +LONG mmioRead(HMMIO, HPSTR, LONG); +LONG mmioWrite(HMMIO, LPCSTR, LONG); +LONG mmioSeek(HMMIO, LONG, int); +MMRESULT mmioGetInfo(HMMIO, LPMMIOINFO, UINT); +MMRESULT mmioSetInfo(HMMIO, LPCMMIOINFO, UINT); +MMRESULT mmioSetBuffer(HMMIO, LPSTR, LONG, UINT); +MMRESULT mmioFlush(HMMIO, UINT); +MMRESULT mmioAdvance(HMMIO, LPMMIOINFO, UINT); +LRESULT mmioSendMessage(HMMIO, UINT, LPARAM, LPARAM); +MMRESULT mmioDescend(HMMIO, LPMMCKINFO, const(MMCKINFO)*, UINT); +MMRESULT mmioAscend(HMMIO, LPMMCKINFO, UINT); +MMRESULT mmioCreateChunk(HMMIO, LPMMCKINFO, UINT); +MCIERROR mciSendCommandA(MCIDEVICEID, UINT, DWORD, DWORD); +MCIERROR mciSendCommandW(MCIDEVICEID, UINT, DWORD, DWORD); +MCIERROR mciSendStringA(LPCSTR, LPSTR, UINT, HWND); +MCIERROR mciSendStringW(LPCWSTR, LPWSTR, UINT, HWND); +MCIDEVICEID mciGetDeviceIDA(LPCSTR); +MCIDEVICEID mciGetDeviceIDW(LPCWSTR); +MCIDEVICEID mciGetDeviceIDFromElementIDA(DWORD, LPCSTR); +MCIDEVICEID mciGetDeviceIDFromElementIDW(DWORD, LPCWSTR); +BOOL mciGetErrorStringA(MCIERROR, LPSTR, UINT); +BOOL mciGetErrorStringW(MCIERROR, LPWSTR, UINT); +BOOL mciSetYieldProc(MCIDEVICEID, YIELDPROC, DWORD); +HTASK mciGetCreatorTask(MCIDEVICEID); +YIELDPROC mciGetYieldProc(MCIDEVICEID, PDWORD); + +struct MCI_SEQ_SET_PARMS { + DWORD dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + DWORD dwTempo; + DWORD dwPort; + DWORD dwSlave; + DWORD dwMaster; + DWORD dwOffset; +} +alias MCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS, LPMCI_SEQ_SET_PARMS; + +struct MCI_ANIM_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA, LPMCI_ANIM_OPEN_PARMSA; + +struct MCI_ANIM_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_ANIM_OPEN_PARMSW* PMCI_ANIM_OPEN_PARMSW, LPMCI_ANIM_OPEN_PARMSW; + +struct MCI_ANIM_PLAY_PARMS { + DWORD dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias MCI_ANIM_PLAY_PARMS* PMCI_ANIM_PLAY_PARMS, LPMCI_ANIM_PLAY_PARMS; + +struct MCI_ANIM_STEP_PARMS { + DWORD dwCallback; + DWORD dwFrames; +} +alias MCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS, LPMCI_ANIM_STEP_PARMS; + +struct MCI_ANIM_WINDOW_PARMSA { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias MCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA, LPMCI_ANIM_WINDOW_PARMSA; + +struct MCI_ANIM_WINDOW_PARMSW { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias MCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW, LPMCI_ANIM_WINDOW_PARMSW; + +struct MCI_ANIM_RECT_PARMS { + DWORD dwCallback; + //#ifdef MCI_USE_OFFEXT + // POINT ptOffset; + // POINT ptExtent; + //#else + RECT rc; + //#endif +} +alias MCI_ANIM_RECT_PARMS* PMCI_ANIM_RECT_PARMS, LPMCI_ANIM_RECT_PARMS; + +struct MCI_ANIM_UPDATE_PARMS { + DWORD dwCallback; + RECT rc; + HDC hDC; +} +alias MCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS, LPMCI_ANIM_UPDATE_PARMS; + +struct MCI_OVLY_OPEN_PARMSA { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA, LPMCI_OVLY_OPEN_PARMSA; + +struct MCI_OVLY_OPEN_PARMSW { + DWORD dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias MCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW, LPMCI_OVLY_OPEN_PARMSW; + +struct MCI_OVLY_WINDOW_PARMSA { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias MCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA, LPMCI_OVLY_WINDOW_PARMSA; + +struct MCI_OVLY_WINDOW_PARMSW { + DWORD dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias MCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW, LPMCI_OVLY_WINDOW_PARMSW; + +struct MCI_OVLY_RECT_PARMS { + DWORD dwCallback; + //#ifdef MCI_USE_OFFEXT + // POINT ptOffset; + // POINT ptExtent; + //#else + RECT rc; + //#endif +} +alias MCI_OVLY_RECT_PARMS* PMCI_OVLY_RECT_PARMS, LPMCI_OVLY_RECT_PARMS; + +struct MCI_OVLY_SAVE_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_SAVE_PARMSA* PMCI_OVLY_SAVE_PARMSA, LPMCI_OVLY_SAVE_PARMSA; + +struct MCI_OVLY_SAVE_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_SAVE_PARMSW* PMCI_OVLY_SAVE_PARMSW, LPMCI_OVLY_SAVE_PARMSW; + +struct MCI_OVLY_LOAD_PARMSA { + DWORD dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_LOAD_PARMSA* PMCI_OVLY_LOAD_PARMSA, LPMCI_OVLY_LOAD_PARMSA; + +struct MCI_OVLY_LOAD_PARMSW { + DWORD dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias MCI_OVLY_LOAD_PARMSW* PMCI_OVLY_LOAD_PARMSW, LPMCI_OVLY_LOAD_PARMSW; + +version(Unicode) { + alias WAVEOUTCAPSW WAVEOUTCAPS; + alias WAVEINCAPSW WAVEINCAPS; + alias MIDIOUTCAPSW MIDIOUTCAPS; + alias MIDIINCAPSW MIDIINCAPS; + alias AUXCAPSW AUXCAPS; + alias MIXERCAPSW MIXERCAPS; + alias MIXERLINEW MIXERLINE; + alias MIXERCONTROLA MIXERCONTROL; + alias MIXERLINECONTROLSW MIXERLINECONTROLS; + alias MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT; + alias JOYCAPSW JOYCAPS; + alias MCI_OPEN_PARMSW MCI_OPEN_PARMS; + alias MCI_INFO_PARMSW MCI_INFO_PARMS; + alias MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS; + alias MCI_SAVE_PARMSW MCI_SAVE_PARMS; + alias MCI_LOAD_PARMSW MCI_LOAD_PARMS; + alias MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS; + alias MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS; + alias MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS; + alias MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS; + alias MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS; + alias MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS; + alias MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS; + + alias sndPlaySoundW sndPlaySound; + alias PlaySoundW PlaySound; + alias waveOutGetDevCapsW waveOutGetDevCaps; + alias waveOutGetErrorTextW waveOutGetErrorText; + alias waveInGetDevCapsW waveInGetDevCaps; + alias waveInGetErrorTextW waveInGetErrorText; + alias midiOutGetDevCapsW midiOutGetDevCaps; + alias midiOutGetErrorTextW midiOutGetErrorText; + alias midiInGetDevCapsW midiInGetDevCaps; + alias midiInGetErrorTextW midiInGetErrorText; + alias auxGetDevCapsW auxGetDevCaps; + alias mixerGetDevCapsW mixerGetDevCaps; + alias mixerGetLineInfoW mixerGetLineInfo; + alias mixerGetLineControlsW mixerGetLineControls; + alias mixerGetControlDetailsW mixerGetControlDetails; + alias joyGetDevCapsW joyGetDevCaps; + alias mmioInstallIOProcW mmioInstallIOProc; + alias mmioStringToFOURCCW mmioStringToFOURCC; + alias mmioOpenW mmioOpen; + alias mmioRenameW mmioRename; + alias mciSendCommandW mciSendCommand; + alias mciSendStringW mciSendString; + alias mciGetDeviceIDW mciGetDeviceID; + alias mciGetDeviceIDFromElementIDW mciGetDeviceIDFromElementID; + alias mciGetErrorStringW mciGetErrorString; + +} else { + alias WAVEOUTCAPSA WAVEOUTCAPS; + alias WAVEINCAPSA WAVEINCAPS; + alias MIDIOUTCAPSA MIDIOUTCAPS; + alias MIDIINCAPSA MIDIINCAPS; + alias AUXCAPSA AUXCAPS; + alias MIXERCAPSA MIXERCAPS; + alias MIXERLINEA MIXERLINE; + alias MIXERCONTROLA MIXERCONTROL; + alias MIXERLINECONTROLSA MIXERLINECONTROLS; + alias MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT; + alias JOYCAPSA JOYCAPS; + alias MCI_OPEN_PARMSA MCI_OPEN_PARMS; + alias MCI_INFO_PARMSA MCI_INFO_PARMS; + alias MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS; + alias MCI_SAVE_PARMSA MCI_SAVE_PARMS; + alias MCI_LOAD_PARMSA MCI_LOAD_PARMS; + alias MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS; + alias MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS; + alias MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS; + alias MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS; + alias MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS; + alias MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS; + alias MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS; + + alias sndPlaySoundA sndPlaySound; + alias PlaySoundA PlaySound; + alias waveOutGetDevCapsA waveOutGetDevCaps; + alias waveOutGetErrorTextA waveOutGetErrorText; + alias waveInGetDevCapsA waveInGetDevCaps; + alias waveInGetErrorTextA waveInGetErrorText; + alias midiOutGetDevCapsA midiOutGetDevCaps; + alias midiOutGetErrorTextA midiOutGetErrorText; + alias midiInGetDevCapsA midiInGetDevCaps; + alias midiInGetErrorTextA midiInGetErrorText; + alias auxGetDevCapsA auxGetDevCaps; + alias mixerGetDevCapsA mixerGetDevCaps; + alias mixerGetLineInfoA mixerGetLineInfo; + alias mixerGetLineControlsA mixerGetLineControls; + alias mixerGetControlDetailsA mixerGetControlDetails; + alias joyGetDevCapsA joyGetDevCaps; + alias mmioInstallIOProcA mmioInstallIOProc; + alias mmioStringToFOURCCA mmioStringToFOURCC; + alias mmioOpenA mmioOpen; + alias mmioRenameA mmioRename; + alias mciSendCommandA mciSendCommand; + alias mciSendStringA mciSendString; + alias mciGetDeviceIDA mciGetDeviceID; + alias mciGetDeviceIDFromElementIDA mciGetDeviceIDFromElementID; + alias mciGetErrorStringA mciGetErrorString; +} + +alias WAVEOUTCAPS* PWAVEOUTCAPS, LPWAVEOUTCAPS; +alias WAVEINCAPS* PWAVEINCAPS, LPWAVEINCAPS; +alias MIDIOUTCAPS* PMIDIOUTCAPS, LPMIDIOUTCAPS; +alias MIDIINCAPS* PMIDIINCAPS, LPMIDIINCAPS; +alias AUXCAPS* PAUXCAPS, LPAUXCAPS; +alias MIXERCAPS* PMIXERCAPS, LPMIXERCAPS; +alias MIXERLINE* PMIXERLINE, LPMIXERLINE; +alias MIXERCONTROL* PMIXERCONTROL, LPMIXERCONTROL; +alias MIXERLINECONTROLS* PMIXERLINECONTROLS, LPMIXERLINECONTROLS; +alias MIXERCONTROLDETAILS_LISTTEXT* PMIXERCONTROLDETAILS_LISTTEXT, LPMIXERCONTROLDETAILS_LISTTEXT; +alias JOYCAPS* PJOYCAPS, LPJOYCAPS; +alias MCI_OPEN_PARMS* PMCI_OPEN_PARMS, LPMCI_OPEN_PARMS; +alias MCI_INFO_PARMS* LPMCI_INFO_PARMS; +alias MCI_SYSINFO_PARMS* PMCI_SYSINFO_PARMS, LPMCI_SYSINFO_PARMS; +alias MCI_SAVE_PARMS* PMCI_SAVE_PARMS, LPMCI_SAVE_PARMS; +alias MCI_LOAD_PARMS* PMCI_LOAD_PARMS, LPMCI_LOAD_PARMS; +alias MCI_VD_ESCAPE_PARMS* PMCI_VD_ESCAPE_PARMS, LPMCI_VD_ESCAPE_PARMS; +alias MCI_WAVE_OPEN_PARMS* PMCI_WAVE_OPEN_PARMS, LPMCI_WAVE_OPEN_PARMS; +alias MCI_ANIM_OPEN_PARMS* PMCI_ANIM_OPEN_PARMS, LPMCI_ANIM_OPEN_PARMS; +alias MCI_ANIM_WINDOW_PARMS* PMCI_ANIM_WINDOW_PARMS, LPMCI_ANIM_WINDOW_PARMS; +alias MCI_OVLY_OPEN_PARMS* PMCI_OVLY_OPEN_PARMS, LPMCI_OVLY_OPEN_PARMS; +alias MCI_OVLY_WINDOW_PARMS* PMCI_OVLY_WINDOW_PARMS, LPMCI_OVLY_WINDOW_PARMS; +alias MCI_OVLY_SAVE_PARMS* PMCI_OVLY_SAVE_PARMS, LPMCI_OVLY_SAVE_PARMS; Index: src/win32/msacm.d ================================================================== --- src/win32/msacm.d +++ src/win32/msacm.d @@ -10,12 +10,13 @@ \***********************************************************************/ module win32.msacm; private import win32.basetsd, win32.mmsystem, win32.windef; -alias HANDLE HACMDRIVERID, HACMDRIVER; -alias HANDLE* LPHACMDRIVER; +mixin DECLARE_HANDLE!("HACMDRIVERID"); +mixin DECLARE_HANDLE!("HACMDRIVER"); +alias HACMDRIVER* LPHACMDRIVER; /* Comment from MinGW found through experimentation */ const size_t Index: src/win32/mshtml.d ================================================================== --- src/win32/mshtml.d +++ src/win32/mshtml.d @@ -1,536 +1,536 @@ -/***********************************************************************\ -* mshtml.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.mshtml; - -private import win32.basetyps, win32.oaidl, win32.unknwn, - win32.windef, win32.wtypes; - -// These are used in this file, but not defined in MinGW. -interface IHTMLStyleSheet {}; -alias IHTMLStyle LPHTMLSTYLE; -alias IHTMLStyleSheet LPHTMLSTYLESHEET; -interface IHTMLLocation {}; -alias IHTMLLocation LPHTMLLOCATION; -interface IHTMLFramesCollection {}; -alias IHTMLFramesCollection LPHTMLFRAMESCOLLECTION; -interface IHTMLStyleSheetsCollection {}; -alias IHTMLStyleSheetsCollection LPHTMLSTYLESHEETSCOLLECTION; -interface IHTMLStyle {}; -interface IHTMLFiltersCollection {}; -alias IHTMLFiltersCollection LPHTMLFILTERSCOLLECTION; -interface IOmHistory : IDispatch { - HRESULT get_length(short* p); - HRESULT back(VARIANT*); - HRESULT forward(VARIANT*); - HRESULT go(VARIANT*); -}; -alias IOmHistory LPOMHISTORY; -interface IOmNavigator {}; -alias IOmNavigator LPOMNAVIGATOR; -interface IHTMLImageElementFactory {}; -alias IHTMLImageElementFactory LPHTMLIMAGEELEMENTFACTORY; -interface IHTMLEventObj {}; -alias IHTMLEventObj LPHTMLEVENTOBJ; -interface IHTMLScreen {}; -alias IHTMLScreen LPHTMLSCREEN; -interface IHTMLOptionElementFactory {}; -alias IHTMLOptionElementFactory LPHTMLOPTIONELEMENTFACTORY; - -interface IHTMLLinkElement : IDispatch { - HRESULT put_href(BSTR); - HRESULT get_href(BSTR*); - HRESULT put_rel(BSTR); - HRESULT get_rel(BSTR*); - HRESULT put_rev(BSTR); - HRESULT get_rev(BSTR*); - HRESULT put_type(BSTR); - HRESULT get_type(BSTR*); - HRESULT get_readyState(BSTR*); - HRESULT put_onreadystatechange(VARIANT); - HRESULT get_onreadystatechange(VARIANT*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onerror(VARIANT); - HRESULT get_onerror(VARIANT*); - HRESULT get_styleSheet(LPHTMLSTYLESHEET*); - HRESULT put_disabled(VARIANT_BOOL); - HRESULT get_disabled(VARIANT_BOOL*); - HRESULT put_media(BSTR); - HRESULT get_media(BSTR*); -} -alias IHTMLLinkElement LPHTMLLINKELEMENT; - -interface IHTMLImgElement : IDispatch { - HRESULT put_isMap(VARIANT_BOOL); - HRESULT get_isMap(VARIANT_BOOL*); - HRESULT put_useMap(BSTR); - HRESULT get_useMap(BSTR*); - HRESULT get_mimeType(BSTR*); - HRESULT get_fileSize(BSTR*); - HRESULT get_fileCreatedDate(BSTR*); - HRESULT get_fileModifiedDate(BSTR*); - HRESULT get_fileUpdatedDate(BSTR*); - HRESULT get_protocol(BSTR*); - HRESULT get_href(BSTR*); - HRESULT get_nameProp(BSTR*); - HRESULT put_border(VARIANT); - HRESULT get_border(VARIANT*); - HRESULT put_vspace(LONG); - HRESULT get_vspace(LONG*); - HRESULT put_hspace(LONG); - HRESULT get_hspace(LONG*); - HRESULT put_alt(BSTR); - HRESULT get_alt(BSTR*); - HRESULT put_src(BSTR); - HRESULT get_src(BSTR*); - HRESULT put_lowsrc(BSTR); - HRESULT get_lowsrc(BSTR*); - HRESULT put_vrml(BSTR); - HRESULT get_vrml(BSTR*); - HRESULT put_dynsrc(BSTR); - HRESULT get_dynsrc(BSTR*); - HRESULT get_readyState(BSTR*); - HRESULT get_complete(VARIANT_BOOL*); - HRESULT put_loop(VARIANT); - HRESULT get_loop(VARIANT*); - HRESULT put_align(BSTR); - HRESULT get_align(BSTR*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onerror(VARIANT); - HRESULT get_onerror(VARIANT*); - HRESULT put_onabort(VARIANT); - HRESULT get_onabort(VARIANT*); - HRESULT put_name(BSTR); - HRESULT get_name(BSTR*); - HRESULT put_width(LONG); - HRESULT get_width(LONG*); - HRESULT put_height(LONG); - HRESULT get_height(LONG*); - HRESULT put_start(BSTR); - HRESULT get_start(BSTR*); -} -alias IHTMLImgElement LPHTMLIMGELEMENT; - -interface IHTMLElementCollection : IDispatch { - HRESULT toString(BSTR*); - HRESULT put_length(LONG); - HRESULT get_length(LONG*); - HRESULT get__newEnum(IUnknown*); - HRESULT item(VARIANT,VARIANT,IDispatch* pDisp); - HRESULT tags(VARIANT,IDispatch* pdisp); -} -alias IHTMLElementCollection LPHTMLELEMENTCOLLECTION; - -interface IHTMLDocument : IDispatch { - HRESULT get_Script(IDispatch*); -} - -interface IHTMLDocument2 : IHTMLDocument { - HRESULT get_all(LPHTMLELEMENTCOLLECTION*); - HRESULT get_body(LPHTMLELEMENT*); - HRESULT get_activeElement(LPHTMLELEMENT*); - HRESULT get_images(LPHTMLELEMENTCOLLECTION*); - HRESULT get_applets(LPHTMLELEMENTCOLLECTION*); - HRESULT get_links(LPHTMLELEMENTCOLLECTION*); - HRESULT get_forms(LPHTMLELEMENTCOLLECTION*); - HRESULT get_anchors(LPHTMLELEMENTCOLLECTION*); - HRESULT put_title(BSTR); - HRESULT get_title(BSTR*); - HRESULT get_scripts(LPHTMLELEMENTCOLLECTION*); - HRESULT put_designMode(BSTR); - HRESULT get_designMode(BSTR*); - HRESULT get_selection(LPHTMLSELECTIONOBJECT*); - HRESULT get_readyState(BSTR*); - HRESULT get_frames(IHTMLFramesCollection2*); - HRESULT get_embeds(LPHTMLELEMENTCOLLECTION*); - HRESULT get_plugins(LPHTMLELEMENTCOLLECTION*); - HRESULT put_alinkColor(VARIANT); - HRESULT get_alinkColor(VARIANT*); - HRESULT put_bgColor(VARIANT); - HRESULT get_bgColor(VARIANT*); - HRESULT put_fgColor(VARIANT); - HRESULT get_fgColor(VARIANT*); - HRESULT put_linkColor(VARIANT); - HRESULT get_linkColor(VARIANT*); - HRESULT put_vlinkColor(VARIANT); - HRESULT get_vlinkColor(VARIANT*); - HRESULT get_referrer(BSTR*); - HRESULT get_location(LPHTMLLOCATION*); - HRESULT get_lastModified(BSTR*); - HRESULT put_url(BSTR); - HRESULT get_url(BSTR*); - HRESULT put_domain(BSTR); - HRESULT get_domain(BSTR*); - HRESULT put_cookie(BSTR); - HRESULT get_cookie(BSTR*); - HRESULT put_expands(VARIANT_BOOL); - HRESULT get_expands(VARIANT_BOOL*); - HRESULT put_charset(BSTR); - HRESULT get_charset(BSTR*); - HRESULT put_defaultCharset(BSTR); - HRESULT get_defaultCharset(BSTR*); - HRESULT get_mimeType(BSTR*); - HRESULT get_fileSize(BSTR*); - HRESULT get_fileCreatedDate(BSTR*); - HRESULT get_fileModifiedDate(BSTR*); - HRESULT get_fileUpdatedDate(BSTR*); - HRESULT get_security(BSTR*); - HRESULT get_protocol(BSTR*); - HRESULT get_nameProp(BSTR*); - HRESULT write(SAFEARRAY*); - HRESULT writeln(SAFEARRAY*); - HRESULT open(BSTR,VARIANT,VARIANT,VARIANT,IDispatch*); - HRESULT close(); - HRESULT clear(); - HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); - HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); - HRESULT queryCommandState(BSTR,VARIANT_BOOL*); - HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); - HRESULT queryCommandText(BSTR,BSTR*); - HRESULT queryCommandValue(BSTR,VARIANT*); - HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); - HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); - HRESULT createElement(BSTR,LPHTMLELEMENT*); - HRESULT put_onhelp(VARIANT); - HRESULT get_onhelp(VARIANT*); - HRESULT put_onclick(VARIANT); - HRESULT get_onclick(VARIANT*); - HRESULT put_ondblclick(VARIANT); - HRESULT get_ondblclick(VARIANT*); - HRESULT put_onkeyup(VARIANT); - HRESULT get_onkeyup(VARIANT*); - HRESULT put_onkeydown(VARIANT); - HRESULT get_onkeydown(VARIANT*); - HRESULT put_onkeypress(VARIANT); - HRESULT get_onkeypress(VARIANT*); - HRESULT put_onmouseup(VARIANT); - HRESULT get_onmouseup(VARIANT*); - HRESULT put_onmousedown(VARIANT); - HRESULT get_onmousedown(VARIANT*); - HRESULT put_onmousemove(VARIANT); - HRESULT get_onmousemove(VARIANT*); - HRESULT put_onmouseout(VARIANT); - HRESULT get_onmouseout(VARIANT*); - HRESULT put_onmouseover(VARIANT); - HRESULT get_onmouseover(VARIANT*); - HRESULT put_onreadystatechange(VARIANT); - HRESULT get_onreadystatechange(VARIANT*); - HRESULT put_onafterupdate(VARIANT); - HRESULT get_onafterupdate(VARIANT*); - HRESULT put_onrowexit(VARIANT); - HRESULT get_onrowexit(VARIANT*); - HRESULT put_onrowenter(VARIANT); - HRESULT get_onrowenter(VARIANT*); - HRESULT put_ondragstart(VARIANT); - HRESULT get_ondragstart(VARIANT*); - HRESULT put_onselectstart(VARIANT); - HRESULT get_onselectstart(VARIANT*); - HRESULT elementFromPoint(LONG,LONG,LPHTMLELEMENT*); - HRESULT get_parentWindow(LPHTMLWINDOW2*); - HRESULT get_styleSheets(LPHTMLSTYLESHEETSCOLLECTION*); - HRESULT put_onbeforeupdate(VARIANT); - HRESULT get_onbeforeupdate(VARIANT*); - HRESULT put_onerrorupdate(VARIANT); - HRESULT get_onerrorupdate(VARIANT*); - HRESULT toString(BSTR*); - HRESULT createStyleSheet(BSTR,LONG,LPHTMLSTYLESHEET*); -} - -interface IHTMLSelectionObject : IDispatch { - HRESULT createRange(IDispatch*); - HRESULT empty(); - HRESULT clear(); - HRESULT get_type(BSTR*); -} -alias IHTMLSelectionObject LPHTMLSELECTIONOBJECT; - -interface IHTMLTxtRange : IDispatch { - HRESULT get_htmlText(BSTR*); - HRESULT put_text(BSTR); - HRESULT get_text(BSTR*); - HRESULT parentElement(LPHTMLELEMENT*); - HRESULT duplicate(IHTMLTxtRange*); - HRESULT inRange(IHTMLTxtRange,VARIANT_BOOL*); - HRESULT isEqual(IHTMLTxtRange,VARIANT_BOOL*); - HRESULT scrollIntoView(VARIANT_BOOL); - HRESULT collapse(VARIANT_BOOL); - HRESULT expand(BSTR,VARIANT_BOOL*); - HRESULT move(BSTR,LONG,LONG*); - HRESULT moveStart(BSTR,LONG,LONG*); - HRESULT moveEnd(BSTR,LONG,LONG*); - HRESULT select(); - HRESULT pasteHTML(BSTR); - HRESULT moveToElementText(LPHTMLELEMENT); - HRESULT setEndPoint(BSTR,IHTMLTxtRange); - HRESULT compareEndPoints(BSTR,IHTMLTxtRange,LONG*); - HRESULT findText(BSTR,LONG,LONG,VARIANT_BOOL*); - HRESULT moveToPoint(LONG,LONG); - HRESULT getBookmark(BSTR*); - HRESULT moveToBookbark(BSTR,VARIANT_BOOL*); - HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); - HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); - HRESULT queryCommandState(BSTR,VARIANT_BOOL*); - HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); - HRESULT queryCommandText(BSTR,BSTR*); - HRESULT queryCommandValue(BSTR,VARIANT*); - HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); - HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); -} - -interface IHTMLElement : IDispatch { - HRESULT setAttribute(BSTR,VARIANT,LONG); - HRESULT getAttribute(BSTR,LONG,VARIANT*); - HRESULT removeAttribute(BSTR,LONG,VARIANT_BOOL*); - HRESULT put_className(BSTR); - HRESULT get_className(ref BSTR); - HRESULT put_id(BSTR); - HRESULT get_id(ref BSTR); - HRESULT get_tagName(ref BSTR); - HRESULT get_parentElement(LPHTMLELEMENT*); - HRESULT get_style(LPHTMLSTYLE*); - HRESULT put_onhelp(VARIANT); - HRESULT get_onhelp(VARIANT*); - HRESULT put_onclick(VARIANT); - HRESULT get_onclick(VARIANT*); - HRESULT put_ondblclick(VARIANT); - HRESULT get_ondblclick(VARIANT*); - HRESULT put_onkeydown(VARIANT); - HRESULT get_onkeydown(VARIANT*); - HRESULT put_onkeyup(VARIANT); - HRESULT get_onkeyup(VARIANT*); - HRESULT put_onkeypress(VARIANT); - HRESULT get_onkeypress(VARIANT*); - HRESULT put_onmouseout(VARIANT); - HRESULT get_onmouseout(VARIANT*); - HRESULT put_onmouseover(VARIANT); - HRESULT get_onmouseover(VARIANT*); - HRESULT put_onmousemove(VARIANT); - HRESULT get_onmousemove(VARIANT*); - HRESULT put_onmousedown(VARIANT); - HRESULT get_onmousedown(VARIANT*); - HRESULT put_onmouseup(VARIANT); - HRESULT get_onmouseup(VARIANT*); - HRESULT get_document(IDispatch*); - HRESULT put_title(BSTR); - HRESULT get_title(ref BSTR); - HRESULT put_language(BSTR); - HRESULT get_language(ref BSTR); - HRESULT put_onselectstart(VARIANT); - HRESULT get_onselectstart(VARIANT*); - HRESULT scrollIntoView(VARIANT); - HRESULT contains(LPHTMLELEMENT,VARIANT_BOOL*); - HRESULT get_source3Index(LONG*); - HRESULT get_recordNumber(VARIANT*); - HRESULT put_lang(BSTR); - HRESULT get_lang(ref BSTR); - HRESULT get_offsetLeft(LONG*); - HRESULT get_offsetTop(LONG*); - HRESULT get_offsetWidth(LONG*); - HRESULT get_offsetHeight(LONG*); - HRESULT get_offsetParent(LPHTMLELEMENT*); - HRESULT put_innerHTML(BSTR); - HRESULT get_innerHTML(ref BSTR); - HRESULT put_innerText(BSTR); - HRESULT get_innerText(ref BSTR); - HRESULT put_outerHTML(BSTR); - HRESULT get_outerHTML(ref BSTR); - HRESULT put_outerText(BSTR); - HRESULT get_outerText(ref BSTR); - HRESULT insertAdjacentHTML(BSTR,BSTR); - HRESULT insertAdjacentText(BSTR,BSTR); - HRESULT get_parentTextEdit(LPHTMLELEMENT*); - HRESULT isTextEdit(VARIANT_BOOL*); - HRESULT click(); - HRESULT get_filters(LPHTMLFILTERSCOLLECTION*); - HRESULT put_ondragstart(VARIANT); - HRESULT get_ondragstart(VARIANT*); - HRESULT toString(BSTR*); - HRESULT put_onbeforeupdate(VARIANT); - HRESULT get_onbeforeupdate(VARIANT*); - HRESULT put_onafterupdate(VARIANT); - HRESULT get_onafterupdate(VARIANT*); - HRESULT put_onerrorupdate(VARIANT); - HRESULT get_onerrorupdate(VARIANT*); - HRESULT put_onrowexit(VARIANT); - HRESULT get_onrowexit(VARIANT*); - HRESULT put_onrowenter(VARIANT); - HRESULT get_onrowenter(VARIANT*); - HRESULT put_ondatasetchanged(VARIANT); - HRESULT get_ondatasetchanged(VARIANT*); - HRESULT put_ondataavailable(VARIANT); - HRESULT get_ondataavailable(VARIANT*); - HRESULT put_ondatasetcomplete(VARIANT); - HRESULT get_ondatasetcomplete(VARIANT*); - HRESULT put_onfilterchange(VARIANT); - HRESULT get_onfilterchange(VARIANT*); - HRESULT get_children(IDispatch*); - HRESULT get_all(IDispatch*); -} -alias IHTMLElement LPHTMLELEMENT; - -interface IHTMLFramesCollection2 : IDispatch { - HRESULT item(VARIANT*,VARIANT*); - HRESULT get_length(LONG*); -} - -interface IHTMLWindow2 : IHTMLFramesCollection2 { - HRESULT get_frames(IHTMLFramesCollection2*); - HRESULT put_defaultStatus(BSTR); - HRESULT get_defaultStatus(BSTR*); - HRESULT put_status(BSTR); - HRESULT get_status(BSTR*); - HRESULT setTimeout(BSTR,LONG,VARIANT*,LONG*); - HRESULT clearTimeout(LONG); - HRESULT alert(BSTR); - HRESULT confirm(BSTR,VARIANT_BOOL*); - HRESULT prompt(BSTR,BSTR,VARIANT*); - HRESULT get_Image(LPHTMLIMAGEELEMENTFACTORY*); - HRESULT get_location(LPHTMLLOCATION*); - HRESULT get_history(LPOMHISTORY*); - HRESULT close(); - HRESULT put_opener(VARIANT); - HRESULT get_opener(VARIANT*); - HRESULT get_navigator(LPOMNAVIGATOR*); - HRESULT put_name(BSTR); - HRESULT get_name(BSTR*); - HRESULT get_parent(LPHTMLWINDOW2*); - HRESULT open(BSTR,BSTR,BSTR,VARIANT_BOOL,LPHTMLWINDOW2*); - HRESULT get_self(LPHTMLWINDOW2*); - HRESULT get_top(LPHTMLWINDOW2*); - HRESULT get_window(LPHTMLWINDOW2*); - HRESULT navigate(BSTR); - HRESULT put_onfocus(VARIANT); - HRESULT get_onfocus(VARIANT*); - HRESULT put_onblur(VARIANT); - HRESULT get_onblur(VARIANT*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onbeforeunload(VARIANT); - HRESULT get_onbeforeunload(VARIANT*); - HRESULT put_onunload(VARIANT); - HRESULT get_onunload(VARIANT*); - HRESULT put_onhelp(VARIANT); - HRESULT get_onhelp(VARIANT*); - HRESULT put_onerror(VARIANT); - HRESULT get_onerror(VARIANT*); - HRESULT put_onresize(VARIANT); - HRESULT get_onresize(VARIANT*); - HRESULT put_onscroll(VARIANT); - HRESULT get_onscroll(VARIANT*); - HRESULT get_document(IHTMLDocument2*); - HRESULT get_event(LPHTMLEVENTOBJ*); - HRESULT get__newEnum(IUnknown*); - HRESULT showModalDialog(BSTR,VARIANT*,VARIANT*,VARIANT*); - HRESULT showHelp(BSTR,VARIANT,BSTR); - HRESULT get_screen(LPHTMLSCREEN*); - HRESULT get_Option(LPHTMLOPTIONELEMENTFACTORY*); - HRESULT focus(); - HRESULT get_closed(VARIANT_BOOL*); - HRESULT blur(); - HRESULT scroll(long,long); - HRESULT get_clientInformation(LPOMNAVIGATOR*); - HRESULT setInterval(BSTR,long,VARIANT*,long*); - HRESULT clearInterval(long); - HRESULT put_offscreenBuffering(VARIANT); - HRESULT get_offscreenBuffering(VARIANT*); - HRESULT execScript(BSTR,BSTR,VARIANT*); - HRESULT toString(BSTR*); - HRESULT scrollBy(LONG,LONG); - HRESULT scrollTo(LONG,LONG); - HRESULT moveTo(LONG,LONG); - HRESULT moveBy(LONG,LONG); - HRESULT resizeTo(LONG,LONG); - HRESULT resizeBy(LONG,LONG); - HRESULT get_external(IDispatch*); -} -alias IHTMLWindow2 LPHTMLWINDOW2; - -interface IHTMLFrameBase : IDispatch { - HRESULT put_src(BSTR); - HRESULT get_src(BSTR*); - HRESULT put_name(BSTR); - HRESULT get_name(BSTR*); - HRESULT put_border(VARIANT); - HRESULT get_border(VARIANT*); - HRESULT put_frameBorder(BSTR); - HRESULT get_frameBorder(BSTR*); - HRESULT put_frameSpacing(VARIANT); - HRESULT get_frameSpacing(VARIANT*); - HRESULT put_marginWidth(VARIANT); - HRESULT get_marginWidth(VARIANT*); - HRESULT put_marginHeight(VARIANT); - HRESULT get_marginHeight(VARIANT*); - HRESULT put_noResize(VARIANT_BOOL); - HRESULT get_noResize(VARIANT_BOOL*); - HRESULT put_scrolling(BSTR); - HRESULT get_scrolling(BSTR*); -} - -interface IHTMLFrameBase2 : IDispatch { - HRESULT get_contentWindow(IHTMLWindow2 *); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onreadystatechange(VARIANT); - HRESULT get_onreadystatechange(VARIANT*); - HRESULT get_readyState(BSTR*); - HRESULT put_allowTransparency(VARIANT_BOOL); - HRESULT get_allowTransparency(VARIANT_BOOL*); -} - -interface IHTMLFrameBase3 : IDispatch { - HRESULT put_longDesc(BSTR); - HRESULT get_longDesc(BSTR*); -} - -interface IHTMLBodyElement : IDispatch { - HRESULT put_background(BSTR); - HRESULT get_background(BSTR*); - HRESULT put_bgProperties(BSTR); - HRESULT get_bgProperties(BSTR*); - HRESULT put_leftMargin(VARIANT); - HRESULT get_leftMargin(VARIANT*); - HRESULT put_topMargin(VARIANT); - HRESULT get_topMargin(VARIANT*); - HRESULT put_rightMargin(VARIANT); - HRESULT get_rightMargin(VARIANT*); - HRESULT put_bottomMargin(VARIANT); - HRESULT get_bottomMargin(VARIANT*); - HRESULT put_noWrap(VARIANT_BOOL); - HRESULT get_noWrap(VARIANT_BOOL*); - HRESULT put_bgColor(VARIANT); - HRESULT get_bgColor(VARIANT*); - HRESULT put_text(VARIANT); - HRESULT get_text(VARIANT*); - HRESULT put_link(VARIANT); - HRESULT get_link(VARIANT*); - HRESULT put_vLink(VARIANT); - HRESULT get_vLink(VARIANT*); - HRESULT put_aLink(VARIANT); - HRESULT get_aLink(VARIANT*); - HRESULT put_onload(VARIANT); - HRESULT get_onload(VARIANT*); - HRESULT put_onunload(VARIANT); - HRESULT get_onunload(VARIANT*); - HRESULT put_scroll(BSTR); - HRESULT get_scroll(BSTR*); - HRESULT put_onselect(VARIANT); - HRESULT get_onselect(VARIANT*); - HRESULT put_onbeforeunload(VARIANT); - HRESULT get_onbeforeunload(VARIANT*); - HRESULT createTextRange(IHTMLTxtRange*); -} - -interface IHTMLBodyElement2 : IDispatch { - HRESULT put_onbeforeprint(VARIANT); - HRESULT get_onbeforeprint(VARIANT*); - HRESULT put_onafterprint(VARIANT); - HRESULT get_onafterprint(VARIANT*); -} +/***********************************************************************\ +* mshtml.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mshtml; + +private import win32.basetyps, win32.oaidl, win32.unknwn, + win32.windef, win32.wtypes; + +// These are used in this file, but not defined in MinGW. +interface IHTMLStyleSheet {}; +alias IHTMLStyle LPHTMLSTYLE; +alias IHTMLStyleSheet LPHTMLSTYLESHEET; +interface IHTMLLocation {}; +alias IHTMLLocation LPHTMLLOCATION; +interface IHTMLFramesCollection {}; +alias IHTMLFramesCollection LPHTMLFRAMESCOLLECTION; +interface IHTMLStyleSheetsCollection {}; +alias IHTMLStyleSheetsCollection LPHTMLSTYLESHEETSCOLLECTION; +interface IHTMLStyle {}; +interface IHTMLFiltersCollection {}; +alias IHTMLFiltersCollection LPHTMLFILTERSCOLLECTION; +interface IOmHistory : IDispatch { + HRESULT get_length(short* p); + HRESULT back(VARIANT*); + HRESULT forward(VARIANT*); + HRESULT go(VARIANT*); +}; +alias IOmHistory LPOMHISTORY; +interface IOmNavigator {}; +alias IOmNavigator LPOMNAVIGATOR; +interface IHTMLImageElementFactory {}; +alias IHTMLImageElementFactory LPHTMLIMAGEELEMENTFACTORY; +interface IHTMLEventObj {}; +alias IHTMLEventObj LPHTMLEVENTOBJ; +interface IHTMLScreen {}; +alias IHTMLScreen LPHTMLSCREEN; +interface IHTMLOptionElementFactory {}; +alias IHTMLOptionElementFactory LPHTMLOPTIONELEMENTFACTORY; + +interface IHTMLLinkElement : IDispatch { + HRESULT put_href(BSTR); + HRESULT get_href(BSTR*); + HRESULT put_rel(BSTR); + HRESULT get_rel(BSTR*); + HRESULT put_rev(BSTR); + HRESULT get_rev(BSTR*); + HRESULT put_type(BSTR); + HRESULT get_type(BSTR*); + HRESULT get_readyState(BSTR*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT get_styleSheet(LPHTMLSTYLESHEET*); + HRESULT put_disabled(VARIANT_BOOL); + HRESULT get_disabled(VARIANT_BOOL*); + HRESULT put_media(BSTR); + HRESULT get_media(BSTR*); +} +alias IHTMLLinkElement LPHTMLLINKELEMENT; + +interface IHTMLImgElement : IDispatch { + HRESULT put_isMap(VARIANT_BOOL); + HRESULT get_isMap(VARIANT_BOOL*); + HRESULT put_useMap(BSTR); + HRESULT get_useMap(BSTR*); + HRESULT get_mimeType(BSTR*); + HRESULT get_fileSize(BSTR*); + HRESULT get_fileCreatedDate(BSTR*); + HRESULT get_fileModifiedDate(BSTR*); + HRESULT get_fileUpdatedDate(BSTR*); + HRESULT get_protocol(BSTR*); + HRESULT get_href(BSTR*); + HRESULT get_nameProp(BSTR*); + HRESULT put_border(VARIANT); + HRESULT get_border(VARIANT*); + HRESULT put_vspace(LONG); + HRESULT get_vspace(LONG*); + HRESULT put_hspace(LONG); + HRESULT get_hspace(LONG*); + HRESULT put_alt(BSTR); + HRESULT get_alt(BSTR*); + HRESULT put_src(BSTR); + HRESULT get_src(BSTR*); + HRESULT put_lowsrc(BSTR); + HRESULT get_lowsrc(BSTR*); + HRESULT put_vrml(BSTR); + HRESULT get_vrml(BSTR*); + HRESULT put_dynsrc(BSTR); + HRESULT get_dynsrc(BSTR*); + HRESULT get_readyState(BSTR*); + HRESULT get_complete(VARIANT_BOOL*); + HRESULT put_loop(VARIANT); + HRESULT get_loop(VARIANT*); + HRESULT put_align(BSTR); + HRESULT get_align(BSTR*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT put_onabort(VARIANT); + HRESULT get_onabort(VARIANT*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT put_width(LONG); + HRESULT get_width(LONG*); + HRESULT put_height(LONG); + HRESULT get_height(LONG*); + HRESULT put_start(BSTR); + HRESULT get_start(BSTR*); +} +alias IHTMLImgElement LPHTMLIMGELEMENT; + +interface IHTMLElementCollection : IDispatch { + HRESULT toString(BSTR*); + HRESULT put_length(LONG); + HRESULT get_length(LONG*); + HRESULT get__newEnum(IUnknown*); + HRESULT item(VARIANT,VARIANT,IDispatch* pDisp); + HRESULT tags(VARIANT,IDispatch* pdisp); +} +alias IHTMLElementCollection LPHTMLELEMENTCOLLECTION; + +interface IHTMLDocument : IDispatch { + HRESULT get_Script(IDispatch*); +} + +interface IHTMLDocument2 : IHTMLDocument { + HRESULT get_all(LPHTMLELEMENTCOLLECTION*); + HRESULT get_body(LPHTMLELEMENT*); + HRESULT get_activeElement(LPHTMLELEMENT*); + HRESULT get_images(LPHTMLELEMENTCOLLECTION*); + HRESULT get_applets(LPHTMLELEMENTCOLLECTION*); + HRESULT get_links(LPHTMLELEMENTCOLLECTION*); + HRESULT get_forms(LPHTMLELEMENTCOLLECTION*); + HRESULT get_anchors(LPHTMLELEMENTCOLLECTION*); + HRESULT put_title(BSTR); + HRESULT get_title(BSTR*); + HRESULT get_scripts(LPHTMLELEMENTCOLLECTION*); + HRESULT put_designMode(BSTR); + HRESULT get_designMode(BSTR*); + HRESULT get_selection(LPHTMLSELECTIONOBJECT*); + HRESULT get_readyState(BSTR*); + HRESULT get_frames(IHTMLFramesCollection2*); + HRESULT get_embeds(LPHTMLELEMENTCOLLECTION*); + HRESULT get_plugins(LPHTMLELEMENTCOLLECTION*); + HRESULT put_alinkColor(VARIANT); + HRESULT get_alinkColor(VARIANT*); + HRESULT put_bgColor(VARIANT); + HRESULT get_bgColor(VARIANT*); + HRESULT put_fgColor(VARIANT); + HRESULT get_fgColor(VARIANT*); + HRESULT put_linkColor(VARIANT); + HRESULT get_linkColor(VARIANT*); + HRESULT put_vlinkColor(VARIANT); + HRESULT get_vlinkColor(VARIANT*); + HRESULT get_referrer(BSTR*); + HRESULT get_location(LPHTMLLOCATION*); + HRESULT get_lastModified(BSTR*); + HRESULT put_url(BSTR); + HRESULT get_url(BSTR*); + HRESULT put_domain(BSTR); + HRESULT get_domain(BSTR*); + HRESULT put_cookie(BSTR); + HRESULT get_cookie(BSTR*); + HRESULT put_expands(VARIANT_BOOL); + HRESULT get_expands(VARIANT_BOOL*); + HRESULT put_charset(BSTR); + HRESULT get_charset(BSTR*); + HRESULT put_defaultCharset(BSTR); + HRESULT get_defaultCharset(BSTR*); + HRESULT get_mimeType(BSTR*); + HRESULT get_fileSize(BSTR*); + HRESULT get_fileCreatedDate(BSTR*); + HRESULT get_fileModifiedDate(BSTR*); + HRESULT get_fileUpdatedDate(BSTR*); + HRESULT get_security(BSTR*); + HRESULT get_protocol(BSTR*); + HRESULT get_nameProp(BSTR*); + HRESULT write(SAFEARRAY*); + HRESULT writeln(SAFEARRAY*); + HRESULT open(BSTR,VARIANT,VARIANT,VARIANT,IDispatch*); + HRESULT close(); + HRESULT clear(); + HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); + HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); + HRESULT queryCommandState(BSTR,VARIANT_BOOL*); + HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); + HRESULT queryCommandText(BSTR,BSTR*); + HRESULT queryCommandValue(BSTR,VARIANT*); + HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); + HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); + HRESULT createElement(BSTR,LPHTMLELEMENT*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onclick(VARIANT); + HRESULT get_onclick(VARIANT*); + HRESULT put_ondblclick(VARIANT); + HRESULT get_ondblclick(VARIANT*); + HRESULT put_onkeyup(VARIANT); + HRESULT get_onkeyup(VARIANT*); + HRESULT put_onkeydown(VARIANT); + HRESULT get_onkeydown(VARIANT*); + HRESULT put_onkeypress(VARIANT); + HRESULT get_onkeypress(VARIANT*); + HRESULT put_onmouseup(VARIANT); + HRESULT get_onmouseup(VARIANT*); + HRESULT put_onmousedown(VARIANT); + HRESULT get_onmousedown(VARIANT*); + HRESULT put_onmousemove(VARIANT); + HRESULT get_onmousemove(VARIANT*); + HRESULT put_onmouseout(VARIANT); + HRESULT get_onmouseout(VARIANT*); + HRESULT put_onmouseover(VARIANT); + HRESULT get_onmouseover(VARIANT*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT put_onafterupdate(VARIANT); + HRESULT get_onafterupdate(VARIANT*); + HRESULT put_onrowexit(VARIANT); + HRESULT get_onrowexit(VARIANT*); + HRESULT put_onrowenter(VARIANT); + HRESULT get_onrowenter(VARIANT*); + HRESULT put_ondragstart(VARIANT); + HRESULT get_ondragstart(VARIANT*); + HRESULT put_onselectstart(VARIANT); + HRESULT get_onselectstart(VARIANT*); + HRESULT elementFromPoint(LONG,LONG,LPHTMLELEMENT*); + HRESULT get_parentWindow(LPHTMLWINDOW2*); + HRESULT get_styleSheets(LPHTMLSTYLESHEETSCOLLECTION*); + HRESULT put_onbeforeupdate(VARIANT); + HRESULT get_onbeforeupdate(VARIANT*); + HRESULT put_onerrorupdate(VARIANT); + HRESULT get_onerrorupdate(VARIANT*); + HRESULT toString(BSTR*); + HRESULT createStyleSheet(BSTR,LONG,LPHTMLSTYLESHEET*); +} + +interface IHTMLSelectionObject : IDispatch { + HRESULT createRange(IDispatch*); + HRESULT empty(); + HRESULT clear(); + HRESULT get_type(BSTR*); +} +alias IHTMLSelectionObject LPHTMLSELECTIONOBJECT; + +interface IHTMLTxtRange : IDispatch { + HRESULT get_htmlText(BSTR*); + HRESULT put_text(BSTR); + HRESULT get_text(BSTR*); + HRESULT parentElement(LPHTMLELEMENT*); + HRESULT duplicate(IHTMLTxtRange*); + HRESULT inRange(IHTMLTxtRange,VARIANT_BOOL*); + HRESULT isEqual(IHTMLTxtRange,VARIANT_BOOL*); + HRESULT scrollIntoView(VARIANT_BOOL); + HRESULT collapse(VARIANT_BOOL); + HRESULT expand(BSTR,VARIANT_BOOL*); + HRESULT move(BSTR,LONG,LONG*); + HRESULT moveStart(BSTR,LONG,LONG*); + HRESULT moveEnd(BSTR,LONG,LONG*); + HRESULT select(); + HRESULT pasteHTML(BSTR); + HRESULT moveToElementText(LPHTMLELEMENT); + HRESULT setEndPoint(BSTR,IHTMLTxtRange); + HRESULT compareEndPoints(BSTR,IHTMLTxtRange,LONG*); + HRESULT findText(BSTR,LONG,LONG,VARIANT_BOOL*); + HRESULT moveToPoint(LONG,LONG); + HRESULT getBookmark(BSTR*); + HRESULT moveToBookbark(BSTR,VARIANT_BOOL*); + HRESULT queryCommandSupported(BSTR,VARIANT_BOOL*); + HRESULT queryCommandEnabled(BSTR,VARIANT_BOOL*); + HRESULT queryCommandState(BSTR,VARIANT_BOOL*); + HRESULT queryCommandIndeterm(BSTR,VARIANT_BOOL*); + HRESULT queryCommandText(BSTR,BSTR*); + HRESULT queryCommandValue(BSTR,VARIANT*); + HRESULT execCommand(BSTR,VARIANT_BOOL,VARIANT,VARIANT_BOOL*); + HRESULT execCommandShowHelp(BSTR,VARIANT_BOOL*); +} + +interface IHTMLElement : IDispatch { + HRESULT setAttribute(BSTR,VARIANT,LONG); + HRESULT getAttribute(BSTR,LONG,VARIANT*); + HRESULT removeAttribute(BSTR,LONG,VARIANT_BOOL*); + HRESULT put_className(BSTR); + HRESULT get_className(ref BSTR); + HRESULT put_id(BSTR); + HRESULT get_id(ref BSTR); + HRESULT get_tagName(ref BSTR); + HRESULT get_parentElement(LPHTMLELEMENT*); + HRESULT get_style(LPHTMLSTYLE*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onclick(VARIANT); + HRESULT get_onclick(VARIANT*); + HRESULT put_ondblclick(VARIANT); + HRESULT get_ondblclick(VARIANT*); + HRESULT put_onkeydown(VARIANT); + HRESULT get_onkeydown(VARIANT*); + HRESULT put_onkeyup(VARIANT); + HRESULT get_onkeyup(VARIANT*); + HRESULT put_onkeypress(VARIANT); + HRESULT get_onkeypress(VARIANT*); + HRESULT put_onmouseout(VARIANT); + HRESULT get_onmouseout(VARIANT*); + HRESULT put_onmouseover(VARIANT); + HRESULT get_onmouseover(VARIANT*); + HRESULT put_onmousemove(VARIANT); + HRESULT get_onmousemove(VARIANT*); + HRESULT put_onmousedown(VARIANT); + HRESULT get_onmousedown(VARIANT*); + HRESULT put_onmouseup(VARIANT); + HRESULT get_onmouseup(VARIANT*); + HRESULT get_document(IDispatch*); + HRESULT put_title(BSTR); + HRESULT get_title(ref BSTR); + HRESULT put_language(BSTR); + HRESULT get_language(ref BSTR); + HRESULT put_onselectstart(VARIANT); + HRESULT get_onselectstart(VARIANT*); + HRESULT scrollIntoView(VARIANT); + HRESULT contains(LPHTMLELEMENT,VARIANT_BOOL*); + HRESULT get_source3Index(LONG*); + HRESULT get_recordNumber(VARIANT*); + HRESULT put_lang(BSTR); + HRESULT get_lang(ref BSTR); + HRESULT get_offsetLeft(LONG*); + HRESULT get_offsetTop(LONG*); + HRESULT get_offsetWidth(LONG*); + HRESULT get_offsetHeight(LONG*); + HRESULT get_offsetParent(LPHTMLELEMENT*); + HRESULT put_innerHTML(BSTR); + HRESULT get_innerHTML(ref BSTR); + HRESULT put_innerText(BSTR); + HRESULT get_innerText(ref BSTR); + HRESULT put_outerHTML(BSTR); + HRESULT get_outerHTML(ref BSTR); + HRESULT put_outerText(BSTR); + HRESULT get_outerText(ref BSTR); + HRESULT insertAdjacentHTML(BSTR,BSTR); + HRESULT insertAdjacentText(BSTR,BSTR); + HRESULT get_parentTextEdit(LPHTMLELEMENT*); + HRESULT isTextEdit(VARIANT_BOOL*); + HRESULT click(); + HRESULT get_filters(LPHTMLFILTERSCOLLECTION*); + HRESULT put_ondragstart(VARIANT); + HRESULT get_ondragstart(VARIANT*); + HRESULT toString(BSTR*); + HRESULT put_onbeforeupdate(VARIANT); + HRESULT get_onbeforeupdate(VARIANT*); + HRESULT put_onafterupdate(VARIANT); + HRESULT get_onafterupdate(VARIANT*); + HRESULT put_onerrorupdate(VARIANT); + HRESULT get_onerrorupdate(VARIANT*); + HRESULT put_onrowexit(VARIANT); + HRESULT get_onrowexit(VARIANT*); + HRESULT put_onrowenter(VARIANT); + HRESULT get_onrowenter(VARIANT*); + HRESULT put_ondatasetchanged(VARIANT); + HRESULT get_ondatasetchanged(VARIANT*); + HRESULT put_ondataavailable(VARIANT); + HRESULT get_ondataavailable(VARIANT*); + HRESULT put_ondatasetcomplete(VARIANT); + HRESULT get_ondatasetcomplete(VARIANT*); + HRESULT put_onfilterchange(VARIANT); + HRESULT get_onfilterchange(VARIANT*); + HRESULT get_children(IDispatch*); + HRESULT get_all(IDispatch*); +} +alias IHTMLElement LPHTMLELEMENT; + +interface IHTMLFramesCollection2 : IDispatch { + HRESULT item(VARIANT*,VARIANT*); + HRESULT get_length(LONG*); +} + +interface IHTMLWindow2 : IHTMLFramesCollection2 { + HRESULT get_frames(IHTMLFramesCollection2*); + HRESULT put_defaultStatus(BSTR); + HRESULT get_defaultStatus(BSTR*); + HRESULT put_status(BSTR); + HRESULT get_status(BSTR*); + HRESULT setTimeout(BSTR,LONG,VARIANT*,LONG*); + HRESULT clearTimeout(LONG); + HRESULT alert(BSTR); + HRESULT confirm(BSTR,VARIANT_BOOL*); + HRESULT prompt(BSTR,BSTR,VARIANT*); + HRESULT get_Image(LPHTMLIMAGEELEMENTFACTORY*); + HRESULT get_location(LPHTMLLOCATION*); + HRESULT get_history(LPOMHISTORY*); + HRESULT close(); + HRESULT put_opener(VARIANT); + HRESULT get_opener(VARIANT*); + HRESULT get_navigator(LPOMNAVIGATOR*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT get_parent(LPHTMLWINDOW2*); + HRESULT open(BSTR,BSTR,BSTR,VARIANT_BOOL,LPHTMLWINDOW2*); + HRESULT get_self(LPHTMLWINDOW2*); + HRESULT get_top(LPHTMLWINDOW2*); + HRESULT get_window(LPHTMLWINDOW2*); + HRESULT navigate(BSTR); + HRESULT put_onfocus(VARIANT); + HRESULT get_onfocus(VARIANT*); + HRESULT put_onblur(VARIANT); + HRESULT get_onblur(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onbeforeunload(VARIANT); + HRESULT get_onbeforeunload(VARIANT*); + HRESULT put_onunload(VARIANT); + HRESULT get_onunload(VARIANT*); + HRESULT put_onhelp(VARIANT); + HRESULT get_onhelp(VARIANT*); + HRESULT put_onerror(VARIANT); + HRESULT get_onerror(VARIANT*); + HRESULT put_onresize(VARIANT); + HRESULT get_onresize(VARIANT*); + HRESULT put_onscroll(VARIANT); + HRESULT get_onscroll(VARIANT*); + HRESULT get_document(IHTMLDocument2*); + HRESULT get_event(LPHTMLEVENTOBJ*); + HRESULT get__newEnum(IUnknown*); + HRESULT showModalDialog(BSTR,VARIANT*,VARIANT*,VARIANT*); + HRESULT showHelp(BSTR,VARIANT,BSTR); + HRESULT get_screen(LPHTMLSCREEN*); + HRESULT get_Option(LPHTMLOPTIONELEMENTFACTORY*); + HRESULT focus(); + HRESULT get_closed(VARIANT_BOOL*); + HRESULT blur(); + HRESULT scroll(long,long); + HRESULT get_clientInformation(LPOMNAVIGATOR*); + HRESULT setInterval(BSTR,long,VARIANT*,long*); + HRESULT clearInterval(long); + HRESULT put_offscreenBuffering(VARIANT); + HRESULT get_offscreenBuffering(VARIANT*); + HRESULT execScript(BSTR,BSTR,VARIANT*); + HRESULT toString(BSTR*); + HRESULT scrollBy(LONG,LONG); + HRESULT scrollTo(LONG,LONG); + HRESULT moveTo(LONG,LONG); + HRESULT moveBy(LONG,LONG); + HRESULT resizeTo(LONG,LONG); + HRESULT resizeBy(LONG,LONG); + HRESULT get_external(IDispatch*); +} +alias IHTMLWindow2 LPHTMLWINDOW2; + +interface IHTMLFrameBase : IDispatch { + HRESULT put_src(BSTR); + HRESULT get_src(BSTR*); + HRESULT put_name(BSTR); + HRESULT get_name(BSTR*); + HRESULT put_border(VARIANT); + HRESULT get_border(VARIANT*); + HRESULT put_frameBorder(BSTR); + HRESULT get_frameBorder(BSTR*); + HRESULT put_frameSpacing(VARIANT); + HRESULT get_frameSpacing(VARIANT*); + HRESULT put_marginWidth(VARIANT); + HRESULT get_marginWidth(VARIANT*); + HRESULT put_marginHeight(VARIANT); + HRESULT get_marginHeight(VARIANT*); + HRESULT put_noResize(VARIANT_BOOL); + HRESULT get_noResize(VARIANT_BOOL*); + HRESULT put_scrolling(BSTR); + HRESULT get_scrolling(BSTR*); +} + +interface IHTMLFrameBase2 : IDispatch { + HRESULT get_contentWindow(IHTMLWindow2*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onreadystatechange(VARIANT); + HRESULT get_onreadystatechange(VARIANT*); + HRESULT get_readyState(BSTR*); + HRESULT put_allowTransparency(VARIANT_BOOL); + HRESULT get_allowTransparency(VARIANT_BOOL*); +} + +interface IHTMLFrameBase3 : IDispatch { + HRESULT put_longDesc(BSTR); + HRESULT get_longDesc(BSTR*); +} + +interface IHTMLBodyElement : IDispatch { + HRESULT put_background(BSTR); + HRESULT get_background(BSTR*); + HRESULT put_bgProperties(BSTR); + HRESULT get_bgProperties(BSTR*); + HRESULT put_leftMargin(VARIANT); + HRESULT get_leftMargin(VARIANT*); + HRESULT put_topMargin(VARIANT); + HRESULT get_topMargin(VARIANT*); + HRESULT put_rightMargin(VARIANT); + HRESULT get_rightMargin(VARIANT*); + HRESULT put_bottomMargin(VARIANT); + HRESULT get_bottomMargin(VARIANT*); + HRESULT put_noWrap(VARIANT_BOOL); + HRESULT get_noWrap(VARIANT_BOOL*); + HRESULT put_bgColor(VARIANT); + HRESULT get_bgColor(VARIANT*); + HRESULT put_text(VARIANT); + HRESULT get_text(VARIANT*); + HRESULT put_link(VARIANT); + HRESULT get_link(VARIANT*); + HRESULT put_vLink(VARIANT); + HRESULT get_vLink(VARIANT*); + HRESULT put_aLink(VARIANT); + HRESULT get_aLink(VARIANT*); + HRESULT put_onload(VARIANT); + HRESULT get_onload(VARIANT*); + HRESULT put_onunload(VARIANT); + HRESULT get_onunload(VARIANT*); + HRESULT put_scroll(BSTR); + HRESULT get_scroll(BSTR*); + HRESULT put_onselect(VARIANT); + HRESULT get_onselect(VARIANT*); + HRESULT put_onbeforeunload(VARIANT); + HRESULT get_onbeforeunload(VARIANT*); + HRESULT createTextRange(IHTMLTxtRange*); +} + +interface IHTMLBodyElement2 : IDispatch { + HRESULT put_onbeforeprint(VARIANT); + HRESULT get_onbeforeprint(VARIANT*); + HRESULT put_onafterprint(VARIANT); + HRESULT get_onafterprint(VARIANT*); +} Index: src/win32/mswsock.d ================================================================== --- src/win32/mswsock.d +++ src/win32/mswsock.d @@ -1,203 +1,197 @@ -/***********************************************************************\ -* mswsock.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Daniel Keep * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.mswsock; - -import win32.winbase, win32.windef; -private import win32.basetyps, win32.w32api; - -// FIXME: clean up Windows version support - -version (Win32_Winsock2) pragma(msg, - "Version Win32_Winsock2 is deprecated; Winsock2 is now imported by default"); - -// Pull in Winsock1 if the user has put "Win32_Winsock1" on the compile -// line; otherwise, default to Winsock2. -version (Win32_Winsock1) { - import win32.winsock; -} else { - import win32.winsock2; -} - -static if (_WIN32_WINNT_ONLY) { - static if (_WIN32_WINNT >= 0x500) { - enum { - /* WinNT5+: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_MAXDG = 0x7009, - SO_MAXPATHDG = 0x700A, - } - } - - enum { - /* WinNT4+: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */ - SO_CONNDATA = 0x7000, - SO_CONNOPT = 0x7001, - SO_DISCDATA = 0x7002, - SO_DISCOPT = 0x7003, - SO_CONNDATALEN = 0x7004, - SO_CONNOPTLEN = 0x7005, - SO_DISCDATALEN = 0x7006, - SO_DISCOPTLEN = 0x7007, - - /* WinNT4: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_UPDATE_ACCEPT_CONTENT = 0x700B, - } -} - -enum { - /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated? - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_OPENTYPE = 0x7008, - - /* Win95+; these two are passed to the SO_OPENTYPE option as arguments, - so would they be deprecated as well? - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_SYNCHRONOUS_ALERT = 0x0010, - SO_SYNCHRONOUS_NONALERT = 0x0020, - - /* Win95: - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ - SO_CONNECT_TIME = 0x700C, -} - - -static if (_WIN32_WINNT_ONLY) { - enum { - TCP_BSDURGENT = 0x7000, - } - - /* These *appear* to be constants for passing to the TransmitFile / - TransmitPackets functions, which are available in WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ - enum { - TF_DISCONNECT = 1, - TF_REUSE_SOCKET = 2, - TF_WRITE_BEHIND = 4, - TF_USE_DEFAULT_WORKER = 0, - TF_USE_SYSTEM_THREAD = 16, - TF_USE_KERNEL_APC = 32 - } -} - -/* Win95+, WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm */ -struct TRANSMIT_FILE_BUFFERS { - PVOID Head; - DWORD HeadLength; - PVOID Tail; - DWORD TailLength; -} -alias TRANSMIT_FILE_BUFFERS* PTRANSMIT_FILE_BUFFERS, LPTRANSMIT_FILE_BUFFERS; - -extern(Windows) { - /* Win95+, WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */ - int WSARecvEx(SOCKET, char*, int, int*); - - /* Win95+, WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDRs_2.htm */ - VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, SOCKADDR**, LPINT); - - static if (_WIN32_WINNT_ONLY) { - /* WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ - BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD); - - /* WinNT3.51+ - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ - alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; - const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; - - alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; - const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; - } -} - -version(Win32_Winsock1) { -} else { - static if (WINVER > 0x501) { - /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT - * structure below, so I've given them the same minimum version - */ - enum { - TP_ELEMENT_FILE = 1, - TP_ELEMENT_MEMORY = 2, - TP_ELEMENT_EOP = 4 - } - - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm - */ - struct TRANSMIT_PACKETS_ELEMENT { - ULONG dwElFlags; - ULONG cLength; - union { - struct { - LARGE_INTEGER nFileOffset; - HANDLE hFile; - } - PVOID pBuffer; - } - } - - /* WinXP+, Server2003+: - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm - */ - struct WSAMSG { - LPSOCKADDR name; - INT namelen; - LPWSABUF lpBuffers; - DWORD dwBufferCount; - WSABUF Control; - DWORD dwFlags; - } - - alias WSAMSG* PWSAMSG, LPWSAMSG; - - /* According to MSDN docs, the WSAMSG.Control buffer starts with a - cmsghdr header of the following form. See also RFC 2292. */ - /* DK: Confirmed. So I suppose these should get the same version as - WSAMSG... */ - struct WSACMSGHDR { - UINT cmsg_len; - INT cmsg_level; - INT cmsg_type; - // followed by UCHAR cmsg_data[]; - } - - /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ - /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have - to actually look up RFC 2292... */ - /+ - #if 0 - #define WSA_CMSG_FIRSTHDR(mhdr) - #define WSA_CMSG_NXTHDR(mhdr, cmsg) - #define WSA_CMSG_SPACE(length) - #define WSA_CMSG_LEN(length) - #endif - +/ - - extern(Windows) - { - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm - */ - BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); - - /* WinXP+, Srv2k3+ - * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm - */ - int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - } - } -} +/***********************************************************************\ +* mswsock.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Daniel Keep * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.mswsock; + +import win32.winbase, win32.windef; +private import win32.basetyps, win32.w32api; + +// FIXME: clean up Windows version support + +version (Win32_Winsock2) pragma(msg, + "Version Win32_Winsock2 is deprecated; Winsock2 is now imported by default"); + +// Pull in Winsock1 if the user has put "Win32_Winsock1" on the compile +// line; otherwise, default to Winsock2. +version (Win32_Winsock1) { + import win32.winsock; +} else { + import win32.winsock2; +} + +static if (_WIN32_WINNT >= 0x500) { + enum { + /* WinNT5+: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_MAXDG = 0x7009, + SO_MAXPATHDG = 0x700A, + } +} + +enum { + /* WinNT4+: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */ + SO_CONNDATA = 0x7000, + SO_CONNOPT = 0x7001, + SO_DISCDATA = 0x7002, + SO_DISCOPT = 0x7003, + SO_CONNDATALEN = 0x7004, + SO_CONNOPTLEN = 0x7005, + SO_DISCDATALEN = 0x7006, + SO_DISCOPTLEN = 0x7007, + + /* WinNT4: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_UPDATE_ACCEPT_CONTENT = 0x700B, +} + +enum { + /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated? + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_OPENTYPE = 0x7008, + + /* Win95+; these two are passed to the SO_OPENTYPE option as arguments, + so would they be deprecated as well? + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_SYNCHRONOUS_ALERT = 0x0010, + SO_SYNCHRONOUS_NONALERT = 0x0020, + + /* Win95: + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */ + SO_CONNECT_TIME = 0x700C, +} + + +enum { + TCP_BSDURGENT = 0x7000, +} + +/* These *appear* to be constants for passing to the TransmitFile / + TransmitPackets functions, which are available in WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ +enum { + TF_DISCONNECT = 1, + TF_REUSE_SOCKET = 2, + TF_WRITE_BEHIND = 4, + TF_USE_DEFAULT_WORKER = 0, + TF_USE_SYSTEM_THREAD = 16, + TF_USE_KERNEL_APC = 32 +} + +/* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm */ +struct TRANSMIT_FILE_BUFFERS { + PVOID Head; + DWORD HeadLength; + PVOID Tail; + DWORD TailLength; +} +alias TRANSMIT_FILE_BUFFERS* PTRANSMIT_FILE_BUFFERS, LPTRANSMIT_FILE_BUFFERS; + +extern(Windows) { + /* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */ + int WSARecvEx(SOCKET, char*, int, int*); + + /* Win95+, WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDRs_2.htm */ + VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, SOCKADDR**, LPINT); + + /* WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */ + BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD); + + /* WinNT3.51+ + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */ + alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX; + const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]}; + + alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX; + const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]}; +} + +version(Win32_Winsock1) { +} else { + static if (_WIN32_WINNT > 0x501) { + /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT + * structure below, so I've given them the same minimum version + */ + enum { + TP_ELEMENT_FILE = 1, + TP_ELEMENT_MEMORY = 2, + TP_ELEMENT_EOP = 4 + } + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_packets_element_2.htm + */ + struct TRANSMIT_PACKETS_ELEMENT { + ULONG dwElFlags; + ULONG cLength; + union { + struct { + LARGE_INTEGER nFileOffset; + HANDLE hFile; + } + PVOID pBuffer; + } + } + + /* WinXP+, Server2003+: + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsamsg_2.htm + */ + struct WSAMSG { + LPSOCKADDR name; + INT namelen; + LPWSABUF lpBuffers; + DWORD dwBufferCount; + WSABUF Control; + DWORD dwFlags; + } + + alias WSAMSG* PWSAMSG, LPWSAMSG; + + /* According to MSDN docs, the WSAMSG.Control buffer starts with a + cmsghdr header of the following form. See also RFC 2292. */ + /* DK: Confirmed. So I suppose these should get the same version as + WSAMSG... */ + struct WSACMSGHDR { + UINT cmsg_len; + INT cmsg_level; + INT cmsg_type; + // followed by UCHAR cmsg_data[]; + } + + /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */ + /* DK: MinGW doesn't define these, and neither does the MSDN docs. Might have + to actually look up RFC 2292... */ + /+ + #if 0 + #define WSA_CMSG_FIRSTHDR(mhdr) + #define WSA_CMSG_NXTHDR(mhdr, cmsg) + #define WSA_CMSG_SPACE(length) + #define WSA_CMSG_LEN(length) + #endif + +/ + + extern(Windows) + { + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/disconnectex_2.htm + */ + BOOL DisconnectEx(SOCKET, LPOVERLAPPED, DWORD, DWORD); + + /* WinXP+, Srv2k3+ + * ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvmsg_2.htm + */ + int WSARecvMsg(SOCKET, LPWSAMSG, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + } + } +} Index: src/win32/nb30.d ================================================================== --- src/win32/nb30.d +++ src/win32/nb30.d @@ -1,237 +1,237 @@ -/***********************************************************************\ -* nb30.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.nb30; - -private import win32.windef; - -const size_t - NCBNAMSZ = 16, - MAX_LANA = 254; - -// FIXME: are these really two sets of constants? -enum : UCHAR { - REGISTERING = 0, - REGISTERED = 4, - DEREGISTERED, - DUPLICATE, - DUPLICATE_DEREG, // = 7 - UNIQUE_NAME = 0, - GROUP_NAME = 0x80, - NAME_FLAGS_MASK = 0x87 -} - -enum : UCHAR { - LISTEN_OUTSTANDING = 1, - CALL_PENDING, - SESSION_ESTABLISHED, - HANGUP_PENDING, - HANGUP_COMPLETE, - SESSION_ABORTED // = 6 -} - -const char[4] - ALL_TRANSPORTS = "M\0\0\0", - MS_NBF = "MNBF"; - -enum : UCHAR { - NCBCALL = 0x10, - NCBLISTEN, - NCBHANGUP, // = 0x12 - NCBSEND = 0x14, - NCBRECV, - NCBRECVANY, - NCBCHAINSEND, // = 0x17 - NCBDGSEND = 0x20, - NCBDGRECV, - NCBDGSENDBC, - NCBDGRECVBC, // = 0x23, - NCBADDNAME = 0x30, - NCBDELNAME, - NCBRESET, - NCBASTAT, - NCBSSTAT, - NCBCANCEL, - NCBADDGRNAME, - NCBENUM, // = 0x37 - NCBUNLINK = 0x70, - NCBSENDNA, - NCBCHAINSENDNA, - NCBLANSTALERT, // = 0x73 - NCBACTION = 0x77, - NCBFINDNAME, - NCBTRACE // = 0x79 -} - -const UCHAR ASYNCH = 0x80; - -enum : UCHAR { - NRC_GOODRET = 0x00, - NRC_BUFLEN = 0x01, - NRC_ILLCMD = 0x03, - NRC_CMDTMO = 0x05, - NRC_INCOMP, - NRC_BADDR, - NRC_SNUMOUT, - NRC_NORES, - NRC_SCLOSED, - NRC_CMDCAN, // = 0x0b - NRC_DUPNAME = 0x0d, - NRC_NAMTFUL, - NRC_ACTSES, // = 0x0f, - NRC_LOCTFUL = 0x11, - NRC_REMTFUL, - NRC_ILLNN, - NRC_NOCALL, - NRC_NOWILD, - NRC_INUSE, - NRC_NAMERR, - NRC_SABORT, - NRC_NAMCONF, // = 0x19 - NRC_IFBUSY = 0x21, - NRC_TOOMANY, - NRC_BRIDGE, - NRC_CANOCCR, // = 0x24 - NRC_CANCEL = 0x26, - NRC_DUPENV = 0x30, - NRC_ENVNOTDEF = 0x34, - NRC_OSRESNOTAV, - NRC_MAXAPPS, - NRC_NOSAPS, - NRC_NORESOURCES, - NRC_INVADDRESS, // = 0x39 - NRC_INVDDID = 0x3B, - NRC_LOCKFAIL = 0x3C, - NRC_OPENERR = 0x3f, - NRC_SYSTEM = 0x40, - NRC_PENDING = 0xff -} - -struct ACTION_HEADER { - union { - /* transport_id is defined as a ULONG, but both the above constants - * and the documented description suggest it should be a char[4] - */ - ULONG transport_id; - char[4] c_transport_id; - } - USHORT action_code; - USHORT reserved; -} -alias ACTION_HEADER* PACTION_HEADER; - -struct ADAPTER_STATUS { - UCHAR[6] adapter_address; - UCHAR rev_major; - UCHAR reserved0; - UCHAR adapter_type; - UCHAR rev_minor; - WORD duration; - WORD frmr_recv; - WORD frmr_xmit; - WORD iframe_recv_err; - WORD xmit_aborts; - DWORD xmit_success; - DWORD recv_success; - WORD iframe_xmit_err; - WORD recv_buff_unavail; - WORD t1_timeouts; - WORD ti_timeouts; - DWORD reserved1; - WORD free_ncbs; - WORD max_cfg_ncbs; - WORD max_ncbs; - WORD xmit_buf_unavail; - WORD max_dgram_size; - WORD pending_sess; - WORD max_cfg_sess; - WORD max_sess; - WORD max_sess_pkt_size; - WORD name_count; -} -alias ADAPTER_STATUS* PADAPTER_STATUS; - -struct FIND_NAME_BUFFER { - /* From Win32 API docs - * - * length - * Specifies the length, in bytes, of the FIND_NAME_BUFFER - * structure. Although this structure always occupies 33 bytes, - * not all of the structure is necessarily valid. - * - * On this basis, should length be initialised? - */ - UCHAR length; - UCHAR access_control; - UCHAR frame_control; - UCHAR[6] destination_addr; - UCHAR[6] source_addr; - UCHAR[18] routing_info; -} -alias FIND_NAME_BUFFER* PFIND_NAME_BUFFER; - -struct FIND_NAME_HEADER { - WORD node_count; - UCHAR reserved; - UCHAR unique_group; -} -alias FIND_NAME_HEADER* PFIND_NAME_HEADER; - -struct LANA_ENUM { - UCHAR length; - UCHAR[MAX_LANA+1] lana; -} -alias LANA_ENUM* PLANA_ENUM; - -struct NAME_BUFFER { - UCHAR[NCBNAMSZ] name; - UCHAR name_num; - UCHAR name_flags; -} -alias NAME_BUFFER* PNAME_BUFFER; - -struct NCB { - UCHAR ncb_command; - UCHAR ncb_retcode; - UCHAR ncb_lsn; - UCHAR ncb_num; - PUCHAR ncb_buffer; - WORD ncb_length; - UCHAR[NCBNAMSZ] ncb_callname; - UCHAR[NCBNAMSZ] ncb_name; - UCHAR ncb_rto; - UCHAR ncb_sto; - extern (Windows) void function(NCB*) ncb_post; - UCHAR ncb_lana_num; - UCHAR ncb_cmd_cplt; - UCHAR ncb_reserve[10]; - HANDLE ncb_event; -} -alias NCB* PNCB; - -struct SESSION_BUFFER { - UCHAR lsn; - UCHAR state; - UCHAR[NCBNAMSZ] local_name; - UCHAR[NCBNAMSZ] remote_name; - UCHAR rcvs_outstanding; - UCHAR sends_outstanding; -} -alias SESSION_BUFFER* PSESSION_BUFFER; - -struct SESSION_HEADER { - UCHAR sess_name; - UCHAR num_sess; - UCHAR rcv_dg_outstanding; - UCHAR rcv_any_outstanding; -} -alias SESSION_HEADER* PSESSION_HEADER; - -extern (Windows) UCHAR Netbios(PNCB); +/***********************************************************************\ +* nb30.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.nb30; + +private import win32.windef; + +const size_t + NCBNAMSZ = 16, + MAX_LANA = 254; + +// FIXME: are these really two sets of constants? +enum : UCHAR { + REGISTERING = 0, + REGISTERED = 4, + DEREGISTERED, + DUPLICATE, + DUPLICATE_DEREG, // = 7 + UNIQUE_NAME = 0, + GROUP_NAME = 0x80, + NAME_FLAGS_MASK = 0x87 +} + +enum : UCHAR { + LISTEN_OUTSTANDING = 1, + CALL_PENDING, + SESSION_ESTABLISHED, + HANGUP_PENDING, + HANGUP_COMPLETE, + SESSION_ABORTED // = 6 +} + +const char[4] + ALL_TRANSPORTS = "M\0\0\0", + MS_NBF = "MNBF"; + +enum : UCHAR { + NCBCALL = 0x10, + NCBLISTEN, + NCBHANGUP, // = 0x12 + NCBSEND = 0x14, + NCBRECV, + NCBRECVANY, + NCBCHAINSEND, // = 0x17 + NCBDGSEND = 0x20, + NCBDGRECV, + NCBDGSENDBC, + NCBDGRECVBC, // = 0x23, + NCBADDNAME = 0x30, + NCBDELNAME, + NCBRESET, + NCBASTAT, + NCBSSTAT, + NCBCANCEL, + NCBADDGRNAME, + NCBENUM, // = 0x37 + NCBUNLINK = 0x70, + NCBSENDNA, + NCBCHAINSENDNA, + NCBLANSTALERT, // = 0x73 + NCBACTION = 0x77, + NCBFINDNAME, + NCBTRACE // = 0x79 +} + +const UCHAR ASYNCH = 0x80; + +enum : UCHAR { + NRC_GOODRET = 0x00, + NRC_BUFLEN = 0x01, + NRC_ILLCMD = 0x03, + NRC_CMDTMO = 0x05, + NRC_INCOMP, + NRC_BADDR, + NRC_SNUMOUT, + NRC_NORES, + NRC_SCLOSED, + NRC_CMDCAN, // = 0x0b + NRC_DUPNAME = 0x0d, + NRC_NAMTFUL, + NRC_ACTSES, // = 0x0f, + NRC_LOCTFUL = 0x11, + NRC_REMTFUL, + NRC_ILLNN, + NRC_NOCALL, + NRC_NOWILD, + NRC_INUSE, + NRC_NAMERR, + NRC_SABORT, + NRC_NAMCONF, // = 0x19 + NRC_IFBUSY = 0x21, + NRC_TOOMANY, + NRC_BRIDGE, + NRC_CANOCCR, // = 0x24 + NRC_CANCEL = 0x26, + NRC_DUPENV = 0x30, + NRC_ENVNOTDEF = 0x34, + NRC_OSRESNOTAV, + NRC_MAXAPPS, + NRC_NOSAPS, + NRC_NORESOURCES, + NRC_INVADDRESS, // = 0x39 + NRC_INVDDID = 0x3B, + NRC_LOCKFAIL = 0x3C, + NRC_OPENERR = 0x3f, + NRC_SYSTEM = 0x40, + NRC_PENDING = 0xff +} + +struct ACTION_HEADER { + union { + /* transport_id is defined as a ULONG, but both the above constants + * and the documented description suggest it should be a char[4] + */ + ULONG transport_id; + char[4] c_transport_id; + } + USHORT action_code; + USHORT reserved; +} +alias ACTION_HEADER* PACTION_HEADER; + +struct ADAPTER_STATUS { + UCHAR[6] adapter_address; + UCHAR rev_major; + UCHAR reserved0; + UCHAR adapter_type; + UCHAR rev_minor; + WORD duration; + WORD frmr_recv; + WORD frmr_xmit; + WORD iframe_recv_err; + WORD xmit_aborts; + DWORD xmit_success; + DWORD recv_success; + WORD iframe_xmit_err; + WORD recv_buff_unavail; + WORD t1_timeouts; + WORD ti_timeouts; + DWORD reserved1; + WORD free_ncbs; + WORD max_cfg_ncbs; + WORD max_ncbs; + WORD xmit_buf_unavail; + WORD max_dgram_size; + WORD pending_sess; + WORD max_cfg_sess; + WORD max_sess; + WORD max_sess_pkt_size; + WORD name_count; +} +alias ADAPTER_STATUS* PADAPTER_STATUS; + +struct FIND_NAME_BUFFER { + /* From Win32 API docs + * + * length + * Specifies the length, in bytes, of the FIND_NAME_BUFFER + * structure. Although this structure always occupies 33 bytes, + * not all of the structure is necessarily valid. + * + * On this basis, should length be initialised? + */ + UCHAR length; + UCHAR access_control; + UCHAR frame_control; + UCHAR[6] destination_addr; + UCHAR[6] source_addr; + UCHAR[18] routing_info; +} +alias FIND_NAME_BUFFER* PFIND_NAME_BUFFER; + +struct FIND_NAME_HEADER { + WORD node_count; + UCHAR reserved; + UCHAR unique_group; +} +alias FIND_NAME_HEADER* PFIND_NAME_HEADER; + +struct LANA_ENUM { + UCHAR length; + UCHAR[MAX_LANA+1] lana; +} +alias LANA_ENUM* PLANA_ENUM; + +struct NAME_BUFFER { + UCHAR[NCBNAMSZ] name; + UCHAR name_num; + UCHAR name_flags; +} +alias NAME_BUFFER* PNAME_BUFFER; + +struct NCB { + UCHAR ncb_command; + UCHAR ncb_retcode; + UCHAR ncb_lsn; + UCHAR ncb_num; + PUCHAR ncb_buffer; + WORD ncb_length; + UCHAR[NCBNAMSZ] ncb_callname; + UCHAR[NCBNAMSZ] ncb_name; + UCHAR ncb_rto; + UCHAR ncb_sto; + extern (Windows) void function(NCB*) ncb_post; + UCHAR ncb_lana_num; + UCHAR ncb_cmd_cplt; + UCHAR[10] ncb_reserve; + HANDLE ncb_event; +} +alias NCB* PNCB; + +struct SESSION_BUFFER { + UCHAR lsn; + UCHAR state; + UCHAR[NCBNAMSZ] local_name; + UCHAR[NCBNAMSZ] remote_name; + UCHAR rcvs_outstanding; + UCHAR sends_outstanding; +} +alias SESSION_BUFFER* PSESSION_BUFFER; + +struct SESSION_HEADER { + UCHAR sess_name; + UCHAR num_sess; + UCHAR rcv_dg_outstanding; + UCHAR rcv_any_outstanding; +} +alias SESSION_HEADER* PSESSION_HEADER; + +extern (Windows) UCHAR Netbios(PNCB); Index: src/win32/ntdef.d ================================================================== --- src/win32/ntdef.d +++ src/win32/ntdef.d @@ -45,12 +45,12 @@ struct UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } -alias UNICODE_STRING* PUNICODE_STRING; -alias CPtr!(UNICODE_STRING) PCUNICODE_STRING; +alias UNICODE_STRING* PUNICODE_STRING; +alias const(UNICODE_STRING)* PCUNICODE_STRING; struct STRING { USHORT Length; USHORT MaximumLength; PCHAR Buffer; Index: src/win32/ntdll.d ================================================================== --- src/win32/ntdll.d +++ src/win32/ntdll.d @@ -10,18 +10,13 @@ \***********************************************************************/ module win32.ntdll; private import win32.w32api; -// http://www.matcode.com/undocwin.h.txt -static assert (_WIN32_WINNT_ONLY, - "win32.ntdll is available only if version WindowsNTonly, WindowsXP, " - "Windows2003 or WindowsVista is set"); - enum SHUTDOWN_ACTION { ShutdownNoReboot, ShutdownReboot, ShutdownPowerOff } extern (Windows) uint NtShutdownSystem(SHUTDOWN_ACTION Action); Index: src/win32/ntsecapi.d ================================================================== --- src/win32/ntsecapi.d +++ src/win32/ntsecapi.d @@ -404,11 +404,11 @@ STRING CaseInsensitiveChallengeResponse; ULONG ParameterControl; } alias MSV1_0_LM20_LOGON* PMSV1_0_LM20_LOGON; -static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { +static if (_WIN32_WINNT >= 0x500) { struct MSV1_0_SUBAUTH_LOGON { MSV1_0_LOGON_SUBMIT_TYPE MessageType; UNICODE_STRING LogonDomainName; UNICODE_STRING UserName; UNICODE_STRING Workstation; @@ -661,12 +661,12 @@ LARGE_INTEGER ProxyLifetime; LARGE_INTEGER ForceLogoff; } alias POLICY_DOMAIN_KERBEROS_TICKET_INFO* PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; -alias HANDLE LSA_HANDLE; -alias HANDLE* PLSA_HANDLE; +mixin DECLARE_HANDLE!("LSA_HANDLE"); +alias LSA_HANDLE* PLSA_HANDLE; struct TRUSTED_DOMAIN_NAME_INFO { LSA_UNICODE_STRING Name; } alias TRUSTED_DOMAIN_NAME_INFO* PTRUSTED_DOMAIN_NAME_INFO; ADDED src/win32/ntsecpkg.d Index: src/win32/ntsecpkg.d ================================================================== --- src/win32/ntsecpkg.d +++ src/win32/ntsecpkg.d @@ -0,0 +1,446 @@ +/***********************************************************************\ +* ntsecpkg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Ellery Newcomer * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ntsecpkg; + +import win32.windef, win32.ntsecapi, win32.security, win32.ntdef, win32.sspi; +import win32.winnt: GUID; +import win32.winbase; + +extern(Windows): + +enum :ULONG{ + ISC_REQ_DELEGATE = 1, + ISC_REQ_MUTUAL_AUTH = 2, + ISC_REQ_REPLAY_DETECT = 4, + ISC_REQ_SEQUENCE_DETECT = 8, + ISC_REQ_CONFIDENTIALITY = 16, + ISC_REQ_USE_SESSION_KEY = 32, + ISC_REQ_PROMPT_FOR_CREDS = 64, + ISC_REQ_USE_SUPPLIED_CREDS = 128, + ISC_REQ_ALLOCATE_MEMORY = 256, + ISC_REQ_USE_DCE_STYLE = 512, + ISC_REQ_DATAGRAM = 1024, + ISC_REQ_CONNECTION = 2048, + ISC_REQ_EXTENDED_ERROR = 16384, + ISC_REQ_STREAM = 32768, + ISC_REQ_INTEGRITY = 65536, + ISC_REQ_MANUAL_CRED_VALIDATION = 524288, + ISC_REQ_HTTP = 268435456, +} + +enum ISC_RET_EXTENDED_ERROR = 16384; + +enum :ULONG{ + ASC_REQ_DELEGATE = 1, + ASC_REQ_MUTUAL_AUTH = 2, + ASC_REQ_REPLAY_DETECT = 4, + ASC_REQ_SEQUENCE_DETECT = 8, + ASC_REQ_CONFIDENTIALITY = 16, + ASC_REQ_USE_SESSION_KEY = 32, + ASC_REQ_ALLOCATE_MEMORY = 256, + ASC_REQ_USE_DCE_STYLE = 512, + ASC_REQ_DATAGRAM = 1024, + ASC_REQ_CONNECTION = 2048, + ASC_REQ_EXTENDED_ERROR = 32768, + ASC_REQ_STREAM = 65536, + ASC_REQ_INTEGRITY = 131072, +} + +enum SECURITY_NATIVE_DREP = 16; +enum SECURITY_NETWORK_DREP = 0; + +enum :ULONG{ + SECPKG_STATE_ENCRYPTION_PERMITTED = 0x01, + SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED = 0x02, + SECPKG_STATE_DOMAIN_CONTROLLER = 0x04, + SECPKG_STATE_WORKSTATION = 0x08, + SECPKG_STATE_STANDALONE = 0x10, +} + +/* enum definitions for Secure Service Provider/Authentication Packages */ +enum LSA_TOKEN_INFORMATION_TYPE { + LsaTokenInformationNull, + LsaTokenInformationV1 +} +alias LSA_TOKEN_INFORMATION_TYPE* PLSA_TOKEN_INFORMATION_TYPE; +enum SECPKG_EXTENDED_INFORMATION_CLASS +{ + SecpkgGssInfo = 1, + SecpkgContextThunks, + SecpkgMutualAuthLevel, + SecpkgMaxInfo +} +enum SECPKG_NAME_TYPE { + SecNameSamCompatible, + SecNameAlternateId, + SecNameFlat, + SecNameDN +} + +/* struct definitions for SSP/AP */ +struct SECPKG_PRIMARY_CRED { + LUID LogonId; + UNICODE_STRING DownlevelName; + UNICODE_STRING DomainName; + UNICODE_STRING Password; + UNICODE_STRING OldPassword; + PSID UserSid; + ULONG Flags; + UNICODE_STRING DnsDomainName; + UNICODE_STRING Upn; + UNICODE_STRING LogonServer; + UNICODE_STRING Spare1; + UNICODE_STRING Spare2; + UNICODE_STRING Spare3; + UNICODE_STRING Spare4; +} +alias SECPKG_PRIMARY_CRED* PSECPKG_PRIMARY_CRED; +struct SECPKG_SUPPLEMENTAL_CRED { + UNICODE_STRING PackageName; + ULONG CredentialSize; + PUCHAR Credentials; +} +alias SECPKG_SUPPLEMENTAL_CRED* PSECPKG_SUPPLEMENTAL_CRED; +struct SECPKG_SUPPLEMENTAL_CRED_ARRAY { + ULONG CredentialCount; + SECPKG_SUPPLEMENTAL_CRED[1] Credentials; +} +alias SECPKG_SUPPLEMENTAL_CRED_ARRAY* PSECPKG_SUPPLEMENTAL_CRED_ARRAY; +struct SECPKG_PARAMETERS { + ULONG Version; + ULONG MachineState; + ULONG SetupMode; + PSID DomainSid; + UNICODE_STRING DomainName; + UNICODE_STRING DnsDomainName; + GUID DomainGuid; +} +alias SECPKG_PARAMETERS* PSECPKG_PARAMETERS,PSECPKG_EVENT_DOMAIN_CHANGE; +alias SECPKG_PARAMETERS SECPKG_EVENT_DOMAIN_CHANGE; +struct SECPKG_CLIENT_INFO { + LUID LogonId; + ULONG ProcessID; + ULONG ThreadID; + BOOLEAN HasTcbPrivilege; + BOOLEAN Impersonating; + BOOLEAN Restricted; +} +alias SECPKG_CLIENT_INFO* PSECPKG_CLIENT_INFO; +struct SECURITY_USER_DATA { + SECURITY_STRING UserName; + SECURITY_STRING LogonDomainName; + SECURITY_STRING LogonServer; + PSID pSid; +} +alias SECURITY_USER_DATA* PSECURITY_USER_DATA,PSecurityUserData; +alias SECURITY_USER_DATA SecurityUserData; +struct SECPKG_GSS_INFO { + ULONG EncodedIdLength; + UCHAR[4] EncodedId; +} +alias SECPKG_GSS_INFO* PSECPKG_GSS_INFO; +struct SECPKG_CONTEXT_THUNKS { + ULONG InfoLevelCount; + ULONG[1] Levels; +} +alias SECPKG_CONTEXT_THUNKS* PSECPKG_CONTEXT_THUNKS; +struct SECPKG_MUTUAL_AUTH_LEVEL { + ULONG MutualAuthLevel; +} +alias SECPKG_MUTUAL_AUTH_LEVEL* PSECPKG_MUTUAL_AUTH_LEVEL; +struct SECPKG_CALL_INFO { + ULONG ProcessId; + ULONG ThreadId; + ULONG Attributes; + ULONG CallCount; +} +alias SECPKG_CALL_INFO* PSECPKG_CALL_INFO; +struct SECPKG_EXTENDED_INFORMATION { + SECPKG_EXTENDED_INFORMATION_CLASS Class; + union _Info{ + SECPKG_GSS_INFO GssInfo; + SECPKG_CONTEXT_THUNKS ContextThunks; + SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel; + } + _Info Info; +} +alias SECPKG_EXTENDED_INFORMATION* PSECPKG_EXTENDED_INFORMATION; + +/* callbacks implemented by SSP/AP dlls and called by the LSA */ +alias void function(ULONG_PTR, ULONG_PTR, PSecBuffer, + PSecBuffer) PLSA_CALLBACK_FUNCTION; + +/* misc typedefs used in the below prototypes */ +alias PVOID* PLSA_CLIENT_REQUEST; +alias ULONG LSA_SEC_HANDLE; +alias ULONG* PLSA_SEC_HANDLE; +alias LPTHREAD_START_ROUTINE SEC_THREAD_START; +alias PSECURITY_ATTRIBUTES SEC_ATTRS; + +/* functions used by SSP/AP obtainable by dispatch tables */ +alias NTSTATUS function(ULONG, PLSA_CALLBACK_FUNCTION) PLSA_REGISTER_CALLBACK; +alias NTSTATUS function(PLUID) PLSA_CREATE_LOGON_SESSION; +alias NTSTATUS function(PLUID) PLSA_DELETE_LOGON_SESSION; +alias NTSTATUS function(PLUID, ULONG, PLSA_STRING, + PLSA_STRING) PLSA_ADD_CREDENTIAL; +alias NTSTATUS function(PLUID, ULONG, PULONG, BOOLEAN, + PLSA_STRING, PULONG, PLSA_STRING) PLSA_GET_CREDENTIALS; +alias NTSTATUS function(PLUID, ULONG, PLSA_STRING) PLSA_DELETE_CREDENTIAL; +alias PVOID function(ULONG) PLSA_ALLOCATE_LSA_HEAP; +alias void function(PVOID) PLSA_FREE_LSA_HEAP; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + ULONG, PVOID*) PLSA_ALLOCATE_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, PVOID) PLSA_FREE_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, ULONG, + PVOID, PVOID) PLSA_COPY_TO_CLIENT_BUFFER; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + ULONG, PVOID, PVOID) PLSA_COPY_FROM_CLIENT_BUFFER; +alias NTSTATUS function() PLSA_IMPERSONATE_CLIENT; +alias NTSTATUS function() PLSA_UNLOAD_PACKAGE; +alias NTSTATUS function(HANDLE, PHANDLE) PLSA_DUPLICATE_HANDLE; +alias NTSTATUS function(PLUID, ULONG, + PVOID, BOOLEAN) PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS; +alias HANDLE function(SEC_ATTRS, ULONG, SEC_THREAD_START, + PVOID, ULONG, PULONG) PLSA_CREATE_THREAD; +alias NTSTATUS function(PSECPKG_CLIENT_INFO) PLSA_GET_CLIENT_INFO; +alias HANDLE function(SEC_THREAD_START, PVOID, + ULONG, ULONG, ULONG, ULONG, HANDLE) PLSA_REGISTER_NOTIFICATION; +alias NTSTATUS function(HANDLE) PLSA_CANCEL_NOTIFICATION; +alias NTSTATUS function(PSecBuffer, PSecBuffer) PLSA_MAP_BUFFER; +alias NTSTATUS function(PLUID, PTOKEN_SOURCE, + SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE, + PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, + PUNICODE_STRING, PHANDLE, PNTSTATUS) PLSA_CREATE_TOKEN; +alias void function(NTSTATUS, NTSTATUS, PUNICODE_STRING, + PUNICODE_STRING, PUNICODE_STRING, PSID, SECURITY_LOGON_TYPE, + PTOKEN_SOURCE, PLUID) PLSA_AUDIT_LOGON; +alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, + PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE; +alias BOOLEAN function(PSECPKG_CALL_INFO) PLSA_GET_CALL_INFO; +alias NTSTATUS function(PUNICODE_STRING, PVOID, PVOID, + ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGEEX; +alias PVOID function(ULONG, ULONG) PLSA_CREATE_SHARED_MEMORY; +alias PVOID function(PVOID, ULONG) PLSA_ALLOCATE_SHARED_MEMORY; +alias void function(PVOID, PVOID) PLSA_FREE_SHARED_MEMORY; +alias BOOLEAN function(PVOID) PLSA_DELETE_SHARED_MEMORY; +alias NTSTATUS function(PSECURITY_STRING, SECPKG_NAME_TYPE, + PSECURITY_STRING, BOOLEAN, ULONG, PVOID*) PLSA_OPEN_SAM_USER; +alias NTSTATUS function(PVOID, PVOID *, PULONG, + PVOID *, PULONG) PLSA_GET_USER_CREDENTIALS; +alias NTSTATUS function(PVOID, PUCHAR *, PULONG) PLSA_GET_USER_AUTH_DATA; +alias NTSTATUS function(PVOID) PLSA_CLOSE_SAM_USER; +alias NTSTATUS function(PVOID, ULONG, + SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE, + PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS) PLSA_CONVERT_AUTH_DATA_TO_TOKEN; +alias NTSTATUS function(PCHAR, ULONG_PTR, ULONG_PTR, + PSecBuffer, PSecBuffer) PLSA_CLIENT_CALLBACK; +alias NTSTATUS function(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY) PLSA_UPDATE_PRIMARY_CREDENTIALS; +alias NTSTATUS function(PSECURITY_STRING, + SECPKG_NAME_TYPE, PSECURITY_STRING, PUCHAR *, PULONG, PUNICODE_STRING) PLSA_GET_AUTH_DATA_FOR_USER; +alias NTSTATUS function(ULONG, BOOLEAN, + PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING, + PULONG) PLSA_CRACK_SINGLE_NAME; +alias NTSTATUS function(ULONG, BOOLEAN, + PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS) PLSA_AUDIT_ACCOUNT_LOGON; +alias NTSTATUS function(PUNICODE_STRING, PVOID, + PVOID, ULONG, PVOID*, PULONG, PNTSTATUS) PLSA_CALL_PACKAGE_PASSTHROUGH; + +/* Dispatch tables of functions used by SSP/AP */ +struct SECPKG_DLL_FUNCTIONS { + PLSA_ALLOCATE_LSA_HEAP AllocateHeap; + PLSA_FREE_LSA_HEAP FreeHeap; + PLSA_REGISTER_CALLBACK RegisterCallback; +} +alias SECPKG_DLL_FUNCTIONS* PSECPKG_DLL_FUNCTIONS; +struct LSA_DISPATCH_TABLE { + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; +} +alias LSA_DISPATCH_TABLE* PLSA_DISPATCH_TABLE; +struct LSA_SECPKG_FUNCTION_TABLE { + PLSA_CREATE_LOGON_SESSION CreateLogonSession; + PLSA_DELETE_LOGON_SESSION DeleteLogonSession; + PLSA_ADD_CREDENTIAL AddCredential; + PLSA_GET_CREDENTIALS GetCredentials; + PLSA_DELETE_CREDENTIAL DeleteCredential; + PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap; + PLSA_FREE_LSA_HEAP FreeLsaHeap; + PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer; + PLSA_FREE_CLIENT_BUFFER FreeClientBuffer; + PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer; + PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer; + PLSA_IMPERSONATE_CLIENT ImpersonateClient; + PLSA_UNLOAD_PACKAGE UnloadPackage; + PLSA_DUPLICATE_HANDLE DuplicateHandle; + PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials; + PLSA_CREATE_THREAD CreateThread; + PLSA_GET_CLIENT_INFO GetClientInfo; + PLSA_REGISTER_NOTIFICATION RegisterNotification; + PLSA_CANCEL_NOTIFICATION CancelNotification; + PLSA_MAP_BUFFER MapBuffer; + PLSA_CREATE_TOKEN CreateToken; + PLSA_AUDIT_LOGON AuditLogon; + PLSA_CALL_PACKAGE CallPackage; + PLSA_FREE_LSA_HEAP FreeReturnBuffer; + PLSA_GET_CALL_INFO GetCallInfo; + PLSA_CALL_PACKAGEEX CallPackageEx; + PLSA_CREATE_SHARED_MEMORY CreateSharedMemory; + PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory; + PLSA_FREE_SHARED_MEMORY FreeSharedMemory; + PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory; + PLSA_OPEN_SAM_USER OpenSamUser; + PLSA_GET_USER_CREDENTIALS GetUserCredentials; + PLSA_GET_USER_AUTH_DATA GetUserAuthData; + PLSA_CLOSE_SAM_USER CloseSamUser; + PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken; + PLSA_CLIENT_CALLBACK ClientCallback; + PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials; + PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser; + PLSA_CRACK_SINGLE_NAME CrackSingleName; + PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon; + PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; +} +alias LSA_SECPKG_FUNCTION_TABLE* PLSA_SECPKG_FUNCTION_TABLE; + +/* functions implemented by SSP/AP obtainable by dispatch tables */ +alias NTSTATUS function(ULONG, PLSA_DISPATCH_TABLE, + PLSA_STRING, PLSA_STRING, PLSA_STRING *) PLSA_AP_INITIALIZE_PACKAGE; +alias NTSTATUS function(LPWSTR, LPWSTR, LPWSTR, LPWSTR, + DWORD, DWORD, PHANDLE) PLSA_AP_LOGON_USER; +alias NTSTATUS function(PUNICODE_STRING, PVOID, ULONG, + PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE; +alias void function(PLUID) PLSA_AP_LOGON_TERMINATED; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_UNTRUSTED; +alias NTSTATUS function(PUNICODE_STRING, + PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS) PLSA_AP_CALL_PACKAGE_PASSTHROUGH; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, + PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, + PUNICODE_STRING *) PLSA_AP_LOGON_USER_EX; +alias NTSTATUS function(PLSA_CLIENT_REQUEST, + SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS, + PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *, + PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *) PLSA_AP_LOGON_USER_EX2; +alias NTSTATUS function(ULONG_PTR, PSECPKG_PARAMETERS, + PLSA_SECPKG_FUNCTION_TABLE) SpInitializeFn; +alias NTSTATUS function() SpShutDownFn; +alias NTSTATUS function(PSecPkgInfoW) SpGetInfoFn; +alias NTSTATUS function(SECURITY_LOGON_TYPE, + PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED) SpAcceptCredentialsFn; +alias NTSTATUS function(PUNICODE_STRING, ULONG, + PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp) SpAcquireCredentialsHandleFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryCredentialsAttributesFn; +alias NTSTATUS function(LSA_SEC_HANDLE) SpFreeCredentialsHandleFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpSaveCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpGetCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpDeleteCredentialsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, LSA_SEC_HANDLE, + PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc, + PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpInitLsaModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, + LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc, + PULONG, PTimeStamp, PBOOLEAN, PSecBuffer) SpAcceptLsaModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE) SpDeleteContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpApplyControlTokenFn; +alias NTSTATUS function(PLUID, ULONG, PSecurityUserData *) SpGetUserInfoFn; +alias NTSTATUS function(SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *) SpGetExtendedInformationFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PVOID) SpQueryContextAttributesFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PUNICODE_STRING, + PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp) SpAddCredentialsFn; +alias NTSTATUS function( + SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION) SpSetExtendedInformationFn; +alias NTSTATUS function(ULONG, PSECPKG_DLL_FUNCTIONS, + PVOID *) SpInstanceInitFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBuffer) SpInitUserModeContextFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, + PSecBufferDesc, ULONG) SpMakeSignatureFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, + ULONG, PULONG) SpVerifySignatureFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, PSecBufferDesc, + ULONG) SpSealMessageFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc, + ULONG, PULONG) SpUnsealMessageFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PHANDLE) SpGetContextTokenFn; +alias NTSTATUS function(LSA_SEC_HANDLE, PSecBufferDesc) SpCompleteAuthTokenFn; +alias NTSTATUS function(PSecBuffer, PSecBuffer) SpFormatCredentialsFn; +alias NTSTATUS function(ULONG, PUCHAR, PULONG, + PVOID *) SpMarshallSupplementalCredsFn; +alias NTSTATUS function(LSA_SEC_HANDLE, ULONG, + PSecBuffer, PHANDLE) SpExportSecurityContextFn; +alias NTSTATUS function(PSecBuffer, HANDLE, + PLSA_SEC_HANDLE) SpImportSecurityContextFn; + +/* Dispatch tables of functions implemented by SSP/AP */ +struct SECPKG_FUNCTION_TABLE { + PLSA_AP_INITIALIZE_PACKAGE InitializePackage; + PLSA_AP_LOGON_USER LogonUser; + PLSA_AP_CALL_PACKAGE CallPackage; + PLSA_AP_LOGON_TERMINATED LogonTerminated; + PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted; + PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough; + PLSA_AP_LOGON_USER_EX LogonUserEx; + PLSA_AP_LOGON_USER_EX2 LogonUserEx2; + SpInitializeFn *Initialize; + SpShutDownFn *Shutdown; + SpGetInfoFn *GetInfo; + SpAcceptCredentialsFn *AcceptCredentials; + SpAcquireCredentialsHandleFn *AcquireCredentialsHandle; + SpQueryCredentialsAttributesFn *QueryCredentialsAttributes; + SpFreeCredentialsHandleFn *FreeCredentialsHandle; + SpSaveCredentialsFn *SaveCredentials; + SpGetCredentialsFn *GetCredentials; + SpDeleteCredentialsFn *DeleteCredentials; + SpInitLsaModeContextFn *InitLsaModeContext; + SpAcceptLsaModeContextFn *AcceptLsaModeContext; + SpDeleteContextFn *DeleteContext; + SpApplyControlTokenFn *ApplyControlToken; + SpGetUserInfoFn *GetUserInfo; + SpGetExtendedInformationFn *GetExtendedInformation; + SpQueryContextAttributesFn *QueryContextAttributes; + SpAddCredentialsFn *AddCredentials; + SpSetExtendedInformationFn *SetExtendedInformation; +} +alias SECPKG_FUNCTION_TABLE* PSECPKG_FUNCTION_TABLE; + +struct SECPKG_USER_FUNCTION_TABLE { + SpInstanceInitFn *InstanceInit; + SpInitUserModeContextFn *InitUserModeContext; + SpMakeSignatureFn *MakeSignature; + SpVerifySignatureFn *VerifySignature; + SpSealMessageFn *SealMessage; + SpUnsealMessageFn *UnsealMessage; + SpGetContextTokenFn *GetContextToken; + SpQueryContextAttributesFn *QueryContextAttributes; + SpCompleteAuthTokenFn *CompleteAuthToken; + SpDeleteContextFn *DeleteUserModeContext; + SpFormatCredentialsFn *FormatCredentials; + SpMarshallSupplementalCredsFn *MarshallSupplementalCreds; + SpExportSecurityContextFn *ExportContext; + SpImportSecurityContextFn *ImportContext; +} +alias SECPKG_USER_FUNCTION_TABLE* PSECPKG_USER_FUNCTION_TABLE; + +/* Entry points to SSP/AP */ +alias NTSTATUS function(ULONG, PULONG, + PSECPKG_FUNCTION_TABLE *, PULONG) SpLsaModeInitializeFn; +alias NTSTATUS function(ULONG, PULONG, + PSECPKG_USER_FUNCTION_TABLE *, PULONG) SpUserModeInitializeFn; + Index: src/win32/oaidl.d ================================================================== --- src/win32/oaidl.d +++ src/win32/oaidl.d @@ -1,672 +1,672 @@ -/***********************************************************************\ -* oaidl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.oaidl; - -private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; - -const DISPID_UNKNOWN = -1; -const DISPID_VALUE = 0; -const DISPID_PROPERTYPUT = -3; -const DISPID_NEWENUM = -4; -const DISPID_EVALUATE = -5; -const DISPID_CONSTRUCTOR = -6; -const DISPID_DESTRUCTOR = -7; -const DISPID_COLLECT = -8; - -const FADF_AUTO = 1; -const FADF_STATIC = 2; -const FADF_EMBEDDED = 4; -const FADF_FIXEDSIZE = 16; -const FADF_RECORD = 32; -const FADF_HAVEIID = 64; -const FADF_HAVEVARTYPE = 128; -const FADF_BSTR = 256; -const FADF_UNKNOWN = 512; -const FADF_DISPATCH = 1024; -const FADF_VARIANT = 2048; -const FADF_RESERVED = 0xf0e8; -const FADF_DATADELETED = 0x1000; -const FADF_CREATEVECTOR = 0x2000; - -const PARAMFLAG_NONE = 0; -const PARAMFLAG_FIN = 1; -const PARAMFLAG_FOUT = 2; -const PARAMFLAG_FLCID = 4; -const PARAMFLAG_FRETVAL = 8; -const PARAMFLAG_FOPT = 16; -const PARAMFLAG_FHASDEFAULT = 32; - -const IDLFLAG_NONE = PARAMFLAG_NONE; -const IDLFLAG_FIN = PARAMFLAG_FIN; -const IDLFLAG_FOUT = PARAMFLAG_FOUT; -const IDLFLAG_FLCID = PARAMFLAG_FLCID; -const IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; - -const IMPLTYPEFLAG_FDEFAULT = 1; -const IMPLTYPEFLAG_FSOURCE = 2; -const IMPLTYPEFLAG_FRESTRICTED = 4; -const IMPLTYPEFLAG_FDEFAULTVTABLE = 8; - - -enum SYSKIND { - SYS_WIN16, - SYS_WIN32, - SYS_MAC -} - -enum LIBFLAGS { - LIBFLAG_FRESTRICTED = 1, - LIBFLAG_FCONTROL = 2, - LIBFLAG_FHIDDEN = 4, - LIBFLAG_FHASDISKIMAGE = 8 -} - -struct TLIBATTR { - GUID guid; - LCID lcid; - SYSKIND syskind; - WORD wMajorVerNum; - WORD wMinorVerNum; - WORD wLibFlags; -} -alias TLIBATTR* LPTLIBATTR; - -alias CY CURRENCY; - -struct SAFEARRAYBOUND { - ULONG cElements; - LONG lLbound; -} -alias SAFEARRAYBOUND* LPSAFEARRAYBOUND; - -struct SAFEARR_BSTR { - ULONG Size; - wireBSTR* aBstr; -} - -struct SAFEARR_UNKNOWN { - ULONG Size; - IUnknown** apUnknown; -} - -struct SAFEARR_DISPATCH { - ULONG Size; - LPDISPATCH* apDispatch; -} - -struct SAFEARR_VARIANT { - ULONG Size; - _wireVARIANT* aVariant; -} - -enum SF_TYPE { - SF_ERROR=VARENUM.VT_ERROR, - SF_I1=VARENUM.VT_I1, - SF_I2=VARENUM.VT_I2, - SF_I4=VARENUM.VT_I4, - SF_I8=VARENUM.VT_I8, - SF_BSTR=VARENUM.VT_BSTR, - SF_UNKNOWN=VARENUM.VT_UNKNOWN, - SF_DISPATCH=VARENUM.VT_DISPATCH, - SF_VARIANT=VARENUM.VT_VARIANT -} - -struct _wireBRECORD { - ULONG fFlags; - ULONG clSize; - LPRECORDINFO* pRecInfo; - byte* pRecord; -} -alias _wireBRECORD* wireBRECORD; - -struct SAFEARR_BRECORD { - ULONG Size; - wireBRECORD* aRecord; -} - -struct SAFEARR_HAVEIID { - ULONG Size; - IUnknown** apUnknown; - IID iid; -} - -struct SAFEARRAYUNION { - ULONG sfType; - union _u { - 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; - } - _u u; -} - -struct _wireSAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - SAFEARRAYUNION uArrayStructs; - SAFEARRAYBOUND rgsabound[1]; -} -alias _wireSAFEARRAY* wireSAFEARRAY; - -alias wireSAFEARRAY* wirePSAFEARRAY; - -struct SAFEARRAY { - USHORT cDims; - USHORT fFeatures; - ULONG cbElements; - ULONG cLocks; - PVOID pvData; - SAFEARRAYBOUND rgsabound[1]; -} -alias SAFEARRAY* LPSAFEARRAY; - -struct VARIANT { - union { - struct { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - union { - int lVal; - LONGLONG llVal; - ubyte bVal; - short iVal; - float fltVal; - double dblVal; - VARIANT_BOOL boolVal; - SCODE scode; - CY cyVal; - DATE date; - BSTR bstrVal; - IUnknown punkVal; - IDispatch pdispVal; - SAFEARRAY* parray; - ubyte* pbVal; - short* piVal; - int* plVal; - float* pfltVal; - double* pdblVal; - VARIANT_BOOL* pboolVal; - _VARIANT_BOOL* pbool; - SCODE* pscode; - CY* pcyVal; - DATE* pdate; - BSTR* pbstrVal; - IUnknown* ppunkVal; - IDispatch* ppdispVal; - SAFEARRAY** pparray; - VARIANT* pvarVal; - void* byref; - CHAR cVal; - USHORT uiVal; - ULONG ulVal; - ULONGLONG ullVal; - INT intVal; - UINT uintVal; - DECIMAL* pdecVal; - CHAR* pcVal; - USHORT* puiVal; - ULONG* pulVal; - INT* pintVal; - UINT* puintVal; - struct { - PVOID pvRecord; - IRecordInfo pRecInfo; - } - } - } - DECIMAL decVal; - } -} -alias VARIANT* LPVARIANT; - -alias VARIANT VARIANTARG; -alias VARIANT* LPVARIANTARG; - -struct _wireVARIANT { - DWORD clSize; - DWORD rpcReserved; - USHORT vt; - USHORT wReserved1; - USHORT wReserved2; - USHORT wReserved3; - union { - LONG lVal; - LONGLONG llVal; - BYTE bVal; - SHORT iVal; - FLOAT fltVal; - DOUBLE dblVal; - VARIANT_BOOL boolVal; - SCODE scode; - CY cyVal; - DATE date; - wireBSTR bstrVal; - IUnknown* punkVal; - LPDISPATCH pdispVal; - wirePSAFEARRAY parray; - wireBRECORD brecVal; - BYTE* pbVal; - SHORT* piVal; - LONG* plVal; - FLOAT* pfltVal; - DOUBLE* pdblVal; - VARIANT_BOOL* pboolVal; - SCODE* pscode; - CY* pcyVal; - DATE* pdate; - wireBSTR* pbstrVal; - IUnknown** ppunkVal; - LPDISPATCH* ppdispVal; - wirePSAFEARRAY* pparray; - wireVARIANT* pvarVal; - CHAR cVal; - USHORT uiVal; - ULONG ulVal; - ULONGLONG ullVal; - INT intVal; - UINT uintVal; - DECIMAL decVal; - DECIMAL* pdecVal; - CHAR* pcVal; - USHORT* puiVal; - ULONG* pulVal; - INT* pintVal; - UINT* puintVal; - } -} -alias _wireVARIANT* wireVARIANT; - -alias LONG DISPID; -alias DISPID MEMBERID; -alias DWORD HREFTYPE; - -enum TYPEKIND { - TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH, - TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX -} - -struct TYPEDESC { - union { - TYPEDESC* lptdesc; - ARRAYDESC* lpadesc; - HREFTYPE hreftype; - } - VARTYPE vt; -} - -struct ARRAYDESC { - TYPEDESC tdescElem; - USHORT cDims; - SAFEARRAYBOUND rgbounds[1]; -} - -struct PARAMDESCEX { - ULONG cBytes; - VARIANTARG varDefaultValue; -} -alias PARAMDESCEX* LPPARAMDESCEX; - -struct PARAMDESC { - LPPARAMDESCEX pparamdescex; - USHORT wParamFlags; -} -alias PARAMDESC* LPPARAMDESC; - -struct IDLDESC { - ULONG dwReserved; - USHORT wIDLFlags; -} -alias IDLDESC* LPIDLDESC; - -struct ELEMDESC { - TYPEDESC tdesc; - union { - IDLDESC idldesc; - PARAMDESC paramdesc; - } -} -alias ELEMDESC* LPELEMDESC; - -struct TYPEATTR { - GUID guid; - LCID lcid; - DWORD dwReserved; - MEMBERID memidConstructor; - MEMBERID memidDestructor; - LPOLESTR lpstrSchema; - ULONG cbSizeInstance; - TYPEKIND typekind; - WORD cFuncs; - WORD cVars; - WORD cImplTypes; - WORD cbSizeVft; - WORD cbAlignment; - WORD wTypeFlags; - WORD wMajorVerNum; - WORD wMinorVerNum; - TYPEDESC tdescAlias; - IDLDESC idldescType; -} -alias TYPEATTR* LPTYPEATTR; - -struct DISPPARAMS { - VARIANTARG* rgvarg; - DISPID* rgdispidNamedArgs; - UINT cArgs; - UINT cNamedArgs; -} - -struct EXCEPINFO { - WORD wCode; - WORD wReserved; - BSTR bstrSource; - BSTR bstrDescription; - BSTR bstrHelpFile; - DWORD dwHelpContext; - PVOID pvReserved; - extern (Windows) { - HRESULT function (EXCEPINFO* ) pfnDeferredFillIn; - } - SCODE scode; -} -alias EXCEPINFO* LPEXCEPINFO; - -enum CALLCONV { - CC_FASTCALL, - CC_CDECL, - CC_MSCPASCAL, - CC_PASCAL=CC_MSCPASCAL, - CC_MACPASCAL, - CC_STDCALL, - CC_FPFASTCALL, - CC_SYSCALL, - CC_MPWCDECL, - CC_MPWPASCAL, - CC_MAX=CC_MPWPASCAL -} - -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; - 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 -} - -struct VARDESC { - MEMBERID memid; - LPOLESTR lpstrSchema; - union { - ULONG oInst; - VARIANT* lpvarValue; - } - ELEMDESC elemdescVar; - WORD wVarFlags; - VARKIND varkind; -} -alias VARDESC* LPVARDESC; - -enum TYPEFLAGS { - TYPEFLAG_FAPPOBJECT = 1, - TYPEFLAG_FCANCREATE = 2, - TYPEFLAG_FLICENSED = 4, - TYPEFLAG_FPREDECLID = 8, - TYPEFLAG_FHIDDEN = 16, - TYPEFLAG_FCONTROL = 32, - TYPEFLAG_FDUAL = 64, - TYPEFLAG_FNONEXTENSIBLE = 128, - TYPEFLAG_FOLEAUTOMATION = 256, - TYPEFLAG_FRESTRICTED = 512, - TYPEFLAG_FAGGREGATABLE = 1024, - TYPEFLAG_FREPLACEABLE = 2048, - TYPEFLAG_FDISPATCHABLE = 4096, - TYPEFLAG_FREVERSEBIND = 8192 -} - -enum FUNCFLAGS { - FUNCFLAG_FRESTRICTED = 1, - FUNCFLAG_FSOURCE = 2, - FUNCFLAG_FBINDABLE = 4, - FUNCFLAG_FREQUESTEDIT = 8, - FUNCFLAG_FDISPLAYBIND = 16, - FUNCFLAG_FDEFAULTBIND = 32, - FUNCFLAG_FHIDDEN = 64, - FUNCFLAG_FUSESGETLASTERROR = 128, - FUNCFLAG_FDEFAULTCOLLELEM = 256, - FUNCFLAG_FUIDEFAULT = 512, - FUNCFLAG_FNONBROWSABLE = 1024, - FUNCFLAG_FREPLACEABLE = 2048, - FUNCFLAG_FIMMEDIATEBIND = 4096 -} - -enum VARFLAGS { - VARFLAG_FREADONLY = 1, - VARFLAG_FSOURCE = 2, - VARFLAG_FBINDABLE = 4, - VARFLAG_FREQUESTEDIT = 8, - VARFLAG_FDISPLAYBIND = 16, - VARFLAG_FDEFAULTBIND = 32, - VARFLAG_FHIDDEN = 64, - VARFLAG_FRESTRICTED = 128, - VARFLAG_FDEFAULTCOLLELEM = 256, - VARFLAG_FUIDEFAULT = 512, - VARFLAG_FNONBROWSABLE = 1024, - VARFLAG_FREPLACEABLE = 2048, - VARFLAG_FIMMEDIATEBIND = 4096 -} - -struct CLEANLOCALSTORAGE { - IUnknown* pInterface; - PVOID pStorage; - DWORD flags; -} - -struct CUSTDATAITEM { - GUID guid; - VARIANTARG varValue; -} -alias CUSTDATAITEM* LPCUSTDATAITEM; - -struct CUSTDATA { - DWORD cCustData; - LPCUSTDATAITEM prgCustData; -} -alias CUSTDATA* LPCUSTDATA; - -enum DESCKIND { - DESCKIND_NONE = 0, - DESCKIND_FUNCDESC = DESCKIND_NONE+1, - DESCKIND_VARDESC = DESCKIND_FUNCDESC+1, - DESCKIND_TYPECOMP = DESCKIND_VARDESC+1, - DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1, - DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1 -} - -union BINDPTR { - LPFUNCDESC lpfuncdesc; - LPVARDESC lpvardesc; - LPTYPECOMP lptcomp; -} -alias BINDPTR* LPBINDPTR; - -interface IDispatch : IUnknown { - HRESULT GetTypeInfoCount(UINT*); - HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*); - HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*); - HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); -} -alias IDispatch LPDISPATCH; - -interface IEnumVARIANT : IUnknown { - HRESULT Next(ULONG, VARIANT*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumVARIANT**); -} -alias IEnumVARIANT LPENUMVARIANT; - -interface ITypeComp : IUnknown { - HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR); - HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*); -} -alias ITypeComp LPTYPECOMP; - -interface ITypeInfo : IUnknown { - HRESULT GetTypeAttr(LPTYPEATTR*); - HRESULT GetTypeComp(LPTYPECOMP*); - HRESULT GetFuncDesc(UINT, LPFUNCDESC*); - HRESULT GetVarDesc(UINT, LPVARDESC*); - HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*); - HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*); - HRESULT GetImplTypeFlags(UINT, INT*); - HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*); - HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, - UINT*); - HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*); - HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*); - HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*); - HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*); - HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*); - HRESULT GetMops(MEMBERID, BSTR*); - HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*); - void ReleaseTypeAttr(LPTYPEATTR); - void ReleaseFuncDesc(LPFUNCDESC); - void ReleaseVarDesc(LPVARDESC); -} -alias ITypeInfo LPTYPEINFO; - -interface ITypeInfo2 : ITypeInfo { - HRESULT GetTypeKind(TYPEKIND*); - HRESULT GetTypeFlags(ULONG*); - HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*); - HRESULT GetVarIndexOfMemId(MEMBERID, UINT*); - HRESULT GetCustData(REFGUID, VARIANT*); - HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*); - HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*); - HRESULT GetVarCustData(UINT, REFGUID, VARIANT*); - HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*); - HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*); - HRESULT GetAllCustData(CUSTDATA*); - HRESULT GetAllFuncCustData(UINT, CUSTDATA*); - HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*); - HRESULT GetAllVarCustData(UINT, CUSTDATA*); - HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*); -} -alias ITypeInfo2 LPTYPEINFO2; - -interface ITypeLib : IUnknown { - UINT GetTypeInfoCount(); - HRESULT GetTypeInfo(UINT, ITypeInfo**); - HRESULT GetTypeInfoType(UINT, TYPEKIND*); - HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo**); - HRESULT GetLibAttr(TLIBATTR**); - HRESULT GetTypeComp(ITypeComp*); - HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*); - HRESULT IsName(LPOLESTR, ULONG, BOOL*); - HRESULT FindName(LPOLESTR, ULONG, ITypeInfo**, MEMBERID*, USHORT*); - void ReleaseTLibAttr(TLIBATTR*); -} -alias ITypeLib LPTYPELIB; - -interface ITypeLib2 : ITypeLib { - HRESULT GetCustData(REFGUID, VARIANT*); - HRESULT GetLibStatistics(ULONG*, ULONG*); - HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*); - HRESULT GetAllCustData(CUSTDATA*); -} -alias ITypeLib2 LPTYPELIB2; - -interface IErrorInfo : IUnknown { - HRESULT GetGUID(GUID*); - HRESULT GetSource(BSTR*); - HRESULT GetDescription(BSTR*); - HRESULT GetHelpFile(BSTR*); - HRESULT GetHelpContext(DWORD*); -} -alias IErrorInfo LPERRORINFO; - -interface ICreateErrorInfo : IUnknown { - HRESULT SetGUID(REFGUID); - HRESULT SetSource(LPOLESTR); - HRESULT SetDescription(LPOLESTR); - HRESULT SetHelpFile(LPOLESTR); - HRESULT SetHelpContext(DWORD); -} -alias ICreateErrorInfo* LPCREATEERRORINFO; - -interface ISupportErrorInfo : IUnknown { - HRESULT InterfaceSupportsErrorInfo(REFIID); -} -alias ISupportErrorInfo LPSUPPORTERRORINFO; - -interface IRecordInfo : IUnknown { - HRESULT RecordInit(PVOID); - HRESULT RecordClear(PVOID); - HRESULT RecordCopy(PVOID, PVOID); - HRESULT GetGuid(GUID*); - HRESULT GetName(BSTR*); - HRESULT GetSize(ULONG*); - HRESULT GetTypeInfo(ITypeInfo**); - HRESULT GetField(PVOID, LPCOLESTR, VARIANT*); - HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*); - HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*); - HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*); - HRESULT GetFieldNames(ULONG*, BSTR*); - BOOL IsMatchingType(); - PVOID RecordCreate(); - HRESULT RecordCreateCopy(PVOID, PVOID*); - HRESULT RecordDestroy (PVOID); -} -alias IRecordInfo LPRECORDINFO; - -interface ITypeMarshal : IUnknown { - HRESULT Size(PVOID, DWORD, PVOID, ULONG*); - HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*); - HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*); - HRESULT Free(PVOID); -} +/***********************************************************************\ +* oaidl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oaidl; + +private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; + +const DISPID_UNKNOWN = -1; +const DISPID_VALUE = 0; +const DISPID_PROPERTYPUT = -3; +const DISPID_NEWENUM = -4; +const DISPID_EVALUATE = -5; +const DISPID_CONSTRUCTOR = -6; +const DISPID_DESTRUCTOR = -7; +const DISPID_COLLECT = -8; + +const FADF_AUTO = 1; +const FADF_STATIC = 2; +const FADF_EMBEDDED = 4; +const FADF_FIXEDSIZE = 16; +const FADF_RECORD = 32; +const FADF_HAVEIID = 64; +const FADF_HAVEVARTYPE = 128; +const FADF_BSTR = 256; +const FADF_UNKNOWN = 512; +const FADF_DISPATCH = 1024; +const FADF_VARIANT = 2048; +const FADF_RESERVED = 0xf0e8; +const FADF_DATADELETED = 0x1000; +const FADF_CREATEVECTOR = 0x2000; + +const PARAMFLAG_NONE = 0; +const PARAMFLAG_FIN = 1; +const PARAMFLAG_FOUT = 2; +const PARAMFLAG_FLCID = 4; +const PARAMFLAG_FRETVAL = 8; +const PARAMFLAG_FOPT = 16; +const PARAMFLAG_FHASDEFAULT = 32; + +const IDLFLAG_NONE = PARAMFLAG_NONE; +const IDLFLAG_FIN = PARAMFLAG_FIN; +const IDLFLAG_FOUT = PARAMFLAG_FOUT; +const IDLFLAG_FLCID = PARAMFLAG_FLCID; +const IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; + +const IMPLTYPEFLAG_FDEFAULT = 1; +const IMPLTYPEFLAG_FSOURCE = 2; +const IMPLTYPEFLAG_FRESTRICTED = 4; +const IMPLTYPEFLAG_FDEFAULTVTABLE = 8; + + +enum SYSKIND { + SYS_WIN16, + SYS_WIN32, + SYS_MAC +} + +enum LIBFLAGS { + LIBFLAG_FRESTRICTED = 1, + LIBFLAG_FCONTROL = 2, + LIBFLAG_FHIDDEN = 4, + LIBFLAG_FHASDISKIMAGE = 8 +} + +struct TLIBATTR { + GUID guid; + LCID lcid; + SYSKIND syskind; + WORD wMajorVerNum; + WORD wMinorVerNum; + WORD wLibFlags; +} +alias TLIBATTR* LPTLIBATTR; + +alias CY CURRENCY; + +struct SAFEARRAYBOUND { + ULONG cElements; + LONG lLbound; +} +alias SAFEARRAYBOUND* LPSAFEARRAYBOUND; + +struct SAFEARR_BSTR { + ULONG Size; + wireBSTR* aBstr; +} + +struct SAFEARR_UNKNOWN { + ULONG Size; + IUnknown* apUnknown; +} + +struct SAFEARR_DISPATCH { + ULONG Size; + LPDISPATCH* apDispatch; +} + +struct SAFEARR_VARIANT { + ULONG Size; + _wireVARIANT* aVariant; +} + +enum SF_TYPE { + SF_ERROR=VARENUM.VT_ERROR, + SF_I1=VARENUM.VT_I1, + SF_I2=VARENUM.VT_I2, + SF_I4=VARENUM.VT_I4, + SF_I8=VARENUM.VT_I8, + SF_BSTR=VARENUM.VT_BSTR, + SF_UNKNOWN=VARENUM.VT_UNKNOWN, + SF_DISPATCH=VARENUM.VT_DISPATCH, + SF_VARIANT=VARENUM.VT_VARIANT +} + +struct _wireBRECORD { + ULONG fFlags; + ULONG clSize; + LPRECORDINFO* pRecInfo; + byte* pRecord; +} +alias _wireBRECORD* wireBRECORD; + +struct SAFEARR_BRECORD { + ULONG Size; + wireBRECORD* aRecord; +} + +struct SAFEARR_HAVEIID { + ULONG Size; + IUnknown* apUnknown; + IID iid; +} + +struct SAFEARRAYUNION { + ULONG sfType; + union _u { + 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; + } + _u u; +} + +struct _wireSAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + SAFEARRAYUNION uArrayStructs; + SAFEARRAYBOUND[1] rgsabound; +} +alias _wireSAFEARRAY* wireSAFEARRAY; + +alias wireSAFEARRAY* wirePSAFEARRAY; + +struct SAFEARRAY { + USHORT cDims; + USHORT fFeatures; + ULONG cbElements; + ULONG cLocks; + PVOID pvData; + SAFEARRAYBOUND[1] rgsabound; +} +alias SAFEARRAY* LPSAFEARRAY; + +struct VARIANT { + union { + struct { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + int lVal; + LONGLONG llVal; + ubyte bVal; + short iVal; + float fltVal; + double dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + BSTR bstrVal; + IUnknown punkVal; + IDispatch pdispVal; + SAFEARRAY* parray; + ubyte* pbVal; + short* piVal; + int* plVal; + float* pfltVal; + double* pdblVal; + VARIANT_BOOL* pboolVal; + _VARIANT_BOOL* pbool; + SCODE* pscode; + CY* pcyVal; + DATE* pdate; + BSTR* pbstrVal; + IUnknown* ppunkVal; + IDispatch* ppdispVal; + SAFEARRAY** pparray; + VARIANT* pvarVal; + void* byref; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL* pdecVal; + CHAR* pcVal; + USHORT* puiVal; + ULONG* pulVal; + INT* pintVal; + UINT* puintVal; + struct { + PVOID pvRecord; + IRecordInfo pRecInfo; + } + } + } + DECIMAL decVal; + } +} +alias VARIANT* LPVARIANT; + +alias VARIANT VARIANTARG; +alias VARIANT* LPVARIANTARG; + +struct _wireVARIANT { + DWORD clSize; + DWORD rpcReserved; + USHORT vt; + USHORT wReserved1; + USHORT wReserved2; + USHORT wReserved3; + union { + LONG lVal; + LONGLONG llVal; + BYTE bVal; + SHORT iVal; + FLOAT fltVal; + DOUBLE dblVal; + VARIANT_BOOL boolVal; + SCODE scode; + CY cyVal; + DATE date; + wireBSTR bstrVal; + IUnknown punkVal; + LPDISPATCH pdispVal; + wirePSAFEARRAY parray; + wireBRECORD brecVal; + BYTE* pbVal; + SHORT* piVal; + LONG* plVal; + FLOAT* pfltVal; + DOUBLE* pdblVal; + VARIANT_BOOL* pboolVal; + SCODE* pscode; + CY* pcyVal; + DATE* pdate; + wireBSTR* pbstrVal; + IUnknown* ppunkVal; + LPDISPATCH* ppdispVal; + wirePSAFEARRAY* pparray; + wireVARIANT* pvarVal; + CHAR cVal; + USHORT uiVal; + ULONG ulVal; + ULONGLONG ullVal; + INT intVal; + UINT uintVal; + DECIMAL decVal; + DECIMAL* pdecVal; + CHAR* pcVal; + USHORT* puiVal; + ULONG* pulVal; + INT* pintVal; + UINT* puintVal; + } +} +alias _wireVARIANT* wireVARIANT; + +alias LONG DISPID; +alias DISPID MEMBERID; +alias DWORD HREFTYPE; + +enum TYPEKIND { + TKIND_ENUM, TKIND_RECORD, TKIND_MODULE, TKIND_INTERFACE, TKIND_DISPATCH, + TKIND_COCLASS, TKIND_ALIAS, TKIND_UNION, TKIND_MAX +} + +struct TYPEDESC { + union { + TYPEDESC* lptdesc; + ARRAYDESC* lpadesc; + HREFTYPE hreftype; + } + VARTYPE vt; +} + +struct ARRAYDESC { + TYPEDESC tdescElem; + USHORT cDims; + SAFEARRAYBOUND[1] rgbounds; +} + +struct PARAMDESCEX { + ULONG cBytes; + VARIANTARG varDefaultValue; +} +alias PARAMDESCEX* LPPARAMDESCEX; + +struct PARAMDESC { + LPPARAMDESCEX pparamdescex; + USHORT wParamFlags; +} +alias PARAMDESC* LPPARAMDESC; + +struct IDLDESC { + ULONG dwReserved; + USHORT wIDLFlags; +} +alias IDLDESC* LPIDLDESC; + +struct ELEMDESC { + TYPEDESC tdesc; + union { + IDLDESC idldesc; + PARAMDESC paramdesc; + } +} +alias ELEMDESC* LPELEMDESC; + +struct TYPEATTR { + GUID guid; + LCID lcid; + DWORD dwReserved; + MEMBERID memidConstructor; + MEMBERID memidDestructor; + LPOLESTR lpstrSchema; + ULONG cbSizeInstance; + TYPEKIND typekind; + WORD cFuncs; + WORD cVars; + WORD cImplTypes; + WORD cbSizeVft; + WORD cbAlignment; + WORD wTypeFlags; + WORD wMajorVerNum; + WORD wMinorVerNum; + TYPEDESC tdescAlias; + IDLDESC idldescType; +} +alias TYPEATTR* LPTYPEATTR; + +struct DISPPARAMS { + VARIANTARG* rgvarg; + DISPID* rgdispidNamedArgs; + UINT cArgs; + UINT cNamedArgs; +} + +struct EXCEPINFO { + WORD wCode; + WORD wReserved; + BSTR bstrSource; + BSTR bstrDescription; + BSTR bstrHelpFile; + DWORD dwHelpContext; + PVOID pvReserved; + extern (Windows) { + HRESULT function (EXCEPINFO* ) pfnDeferredFillIn; + } + SCODE scode; +} +alias EXCEPINFO* LPEXCEPINFO; + +enum CALLCONV { + CC_FASTCALL, + CC_CDECL, + CC_MSCPASCAL, + CC_PASCAL=CC_MSCPASCAL, + CC_MACPASCAL, + CC_STDCALL, + CC_FPFASTCALL, + CC_SYSCALL, + CC_MPWCDECL, + CC_MPWPASCAL, + CC_MAX=CC_MPWPASCAL +} + +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; + 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 +} + +struct VARDESC { + MEMBERID memid; + LPOLESTR lpstrSchema; + union { + ULONG oInst; + VARIANT* lpvarValue; + } + ELEMDESC elemdescVar; + WORD wVarFlags; + VARKIND varkind; +} +alias VARDESC* LPVARDESC; + +enum TYPEFLAGS { + TYPEFLAG_FAPPOBJECT = 1, + TYPEFLAG_FCANCREATE = 2, + TYPEFLAG_FLICENSED = 4, + TYPEFLAG_FPREDECLID = 8, + TYPEFLAG_FHIDDEN = 16, + TYPEFLAG_FCONTROL = 32, + TYPEFLAG_FDUAL = 64, + TYPEFLAG_FNONEXTENSIBLE = 128, + TYPEFLAG_FOLEAUTOMATION = 256, + TYPEFLAG_FRESTRICTED = 512, + TYPEFLAG_FAGGREGATABLE = 1024, + TYPEFLAG_FREPLACEABLE = 2048, + TYPEFLAG_FDISPATCHABLE = 4096, + TYPEFLAG_FREVERSEBIND = 8192 +} + +enum FUNCFLAGS { + FUNCFLAG_FRESTRICTED = 1, + FUNCFLAG_FSOURCE = 2, + FUNCFLAG_FBINDABLE = 4, + FUNCFLAG_FREQUESTEDIT = 8, + FUNCFLAG_FDISPLAYBIND = 16, + FUNCFLAG_FDEFAULTBIND = 32, + FUNCFLAG_FHIDDEN = 64, + FUNCFLAG_FUSESGETLASTERROR = 128, + FUNCFLAG_FDEFAULTCOLLELEM = 256, + FUNCFLAG_FUIDEFAULT = 512, + FUNCFLAG_FNONBROWSABLE = 1024, + FUNCFLAG_FREPLACEABLE = 2048, + FUNCFLAG_FIMMEDIATEBIND = 4096 +} + +enum VARFLAGS { + VARFLAG_FREADONLY = 1, + VARFLAG_FSOURCE = 2, + VARFLAG_FBINDABLE = 4, + VARFLAG_FREQUESTEDIT = 8, + VARFLAG_FDISPLAYBIND = 16, + VARFLAG_FDEFAULTBIND = 32, + VARFLAG_FHIDDEN = 64, + VARFLAG_FRESTRICTED = 128, + VARFLAG_FDEFAULTCOLLELEM = 256, + VARFLAG_FUIDEFAULT = 512, + VARFLAG_FNONBROWSABLE = 1024, + VARFLAG_FREPLACEABLE = 2048, + VARFLAG_FIMMEDIATEBIND = 4096 +} + +struct CLEANLOCALSTORAGE { + IUnknown pInterface; + PVOID pStorage; + DWORD flags; +} + +struct CUSTDATAITEM { + GUID guid; + VARIANTARG varValue; +} +alias CUSTDATAITEM* LPCUSTDATAITEM; + +struct CUSTDATA { + DWORD cCustData; + LPCUSTDATAITEM prgCustData; +} +alias CUSTDATA* LPCUSTDATA; + +enum DESCKIND { + DESCKIND_NONE = 0, + DESCKIND_FUNCDESC = DESCKIND_NONE+1, + DESCKIND_VARDESC = DESCKIND_FUNCDESC+1, + DESCKIND_TYPECOMP = DESCKIND_VARDESC+1, + DESCKIND_IMPLICITAPPOBJ = DESCKIND_TYPECOMP+1, + DESCKIND_MAX = DESCKIND_IMPLICITAPPOBJ+1 +} + +union BINDPTR { + LPFUNCDESC lpfuncdesc; + LPVARDESC lpvardesc; + LPTYPECOMP lptcomp; +} +alias BINDPTR* LPBINDPTR; + +interface IDispatch : IUnknown { + HRESULT GetTypeInfoCount(UINT*); + HRESULT GetTypeInfo(UINT, LCID, LPTYPEINFO*); + HRESULT GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*); + HRESULT Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); +} +alias IDispatch LPDISPATCH; + +interface IEnumVARIANT : IUnknown { + HRESULT Next(ULONG, VARIANT*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumVARIANT*); +} +alias IEnumVARIANT LPENUMVARIANT; + +interface ITypeComp : IUnknown { + HRESULT Bind(LPOLESTR, ULONG, WORD, LPTYPEINFO*, DESCKIND*, LPBINDPTR); + HRESULT BindType(LPOLESTR, ULONG, LPTYPEINFO*, LPTYPECOMP*); +} +alias ITypeComp LPTYPECOMP; + +interface ITypeInfo : IUnknown { + HRESULT GetTypeAttr(LPTYPEATTR*); + HRESULT GetTypeComp(LPTYPECOMP*); + HRESULT GetFuncDesc(UINT, LPFUNCDESC*); + HRESULT GetVarDesc(UINT, LPVARDESC*); + HRESULT GetNames(MEMBERID, BSTR*, UINT, UINT*); + HRESULT GetRefTypeOfImplType(UINT, HREFTYPE*); + HRESULT GetImplTypeFlags(UINT, INT*); + HRESULT GetIDsOfNames(LPOLESTR*, UINT, MEMBERID*); + HRESULT Invoke(PVOID, MEMBERID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, + UINT*); + HRESULT GetDocumentation(MEMBERID, BSTR*, BSTR*, DWORD*, BSTR*); + HRESULT GetDllEntry(MEMBERID, INVOKEKIND, BSTR*, BSTR*, WORD*); + HRESULT GetRefTypeInfo(HREFTYPE, LPTYPEINFO*); + HRESULT AddressOfMember(MEMBERID, INVOKEKIND, PVOID*); + HRESULT CreateInstance(LPUNKNOWN, REFIID, PVOID*); + HRESULT GetMops(MEMBERID, BSTR*); + HRESULT GetContainingTypeLib(LPTYPELIB*, UINT*); + void ReleaseTypeAttr(LPTYPEATTR); + void ReleaseFuncDesc(LPFUNCDESC); + void ReleaseVarDesc(LPVARDESC); +} +alias ITypeInfo LPTYPEINFO; + +interface ITypeInfo2 : ITypeInfo { + HRESULT GetTypeKind(TYPEKIND*); + HRESULT GetTypeFlags(ULONG*); + HRESULT GetFuncIndexOfMemId(MEMBERID, INVOKEKIND, UINT*); + HRESULT GetVarIndexOfMemId(MEMBERID, UINT*); + HRESULT GetCustData(REFGUID, VARIANT*); + HRESULT GetFuncCustData(UINT, REFGUID, VARIANT*); + HRESULT GetParamCustData(UINT, UINT, REFGUID, VARIANT*); + HRESULT GetVarCustData(UINT, REFGUID, VARIANT*); + HRESULT GetImplTypeCustData(UINT, REFGUID, VARIANT*); + HRESULT GetDocumentation2(MEMBERID, LCID, BSTR*, DWORD*, BSTR*); + HRESULT GetAllCustData(CUSTDATA*); + HRESULT GetAllFuncCustData(UINT, CUSTDATA*); + HRESULT GetAllParamCustData(UINT, UINT, CUSTDATA*); + HRESULT GetAllVarCustData(UINT, CUSTDATA*); + HRESULT GetAllImplTypeCustData(UINT, CUSTDATA*); +} +alias ITypeInfo2 LPTYPEINFO2; + +interface ITypeLib : IUnknown { + UINT GetTypeInfoCount(); + HRESULT GetTypeInfo(UINT, ITypeInfo*); + HRESULT GetTypeInfoType(UINT, TYPEKIND*); + HRESULT GetTypeInfoOfGuid(REFGUID, ITypeInfo*); + HRESULT GetLibAttr(TLIBATTR**); + HRESULT GetTypeComp(ITypeComp); + HRESULT GetDocumentation(INT, BSTR*, BSTR*, DWORD*, BSTR*); + HRESULT IsName(LPOLESTR, ULONG, BOOL*); + HRESULT FindName(LPOLESTR, ULONG, ITypeInfo*, MEMBERID*, USHORT*); + void ReleaseTLibAttr(TLIBATTR*); +} +alias ITypeLib LPTYPELIB; + +interface ITypeLib2 : ITypeLib { + HRESULT GetCustData(REFGUID, VARIANT*); + HRESULT GetLibStatistics(ULONG*, ULONG*); + HRESULT GetDocumentation2(INT, LCID, BSTR*, DWORD*, BSTR*); + HRESULT GetAllCustData(CUSTDATA*); +} +alias ITypeLib2 LPTYPELIB2; + +interface IErrorInfo : IUnknown { + HRESULT GetGUID(GUID*); + HRESULT GetSource(BSTR*); + HRESULT GetDescription(BSTR*); + HRESULT GetHelpFile(BSTR*); + HRESULT GetHelpContext(DWORD*); +} +alias IErrorInfo LPERRORINFO; + +interface ICreateErrorInfo : IUnknown { + HRESULT SetGUID(REFGUID); + HRESULT SetSource(LPOLESTR); + HRESULT SetDescription(LPOLESTR); + HRESULT SetHelpFile(LPOLESTR); + HRESULT SetHelpContext(DWORD); +} +alias ICreateErrorInfo LPCREATEERRORINFO; + +interface ISupportErrorInfo : IUnknown { + HRESULT InterfaceSupportsErrorInfo(REFIID); +} +alias ISupportErrorInfo LPSUPPORTERRORINFO; + +interface IRecordInfo : IUnknown { + HRESULT RecordInit(PVOID); + HRESULT RecordClear(PVOID); + HRESULT RecordCopy(PVOID, PVOID); + HRESULT GetGuid(GUID*); + HRESULT GetName(BSTR*); + HRESULT GetSize(ULONG*); + HRESULT GetTypeInfo(ITypeInfo*); + HRESULT GetField(PVOID, LPCOLESTR, VARIANT*); + HRESULT GetFieldNoCopy(PVOID, LPCOLESTR, VARIANT*, PVOID*); + HRESULT PutField (ULONG, PVOID, LPCOLESTR, VARIANT*); + HRESULT PutFieldNoCopy(ULONG, PVOID, LPCOLESTR, VARIANT*); + HRESULT GetFieldNames(ULONG*, BSTR*); + BOOL IsMatchingType(); + PVOID RecordCreate(); + HRESULT RecordCreateCopy(PVOID, PVOID*); + HRESULT RecordDestroy (PVOID); +} +alias IRecordInfo LPRECORDINFO; + +interface ITypeMarshal : IUnknown { + HRESULT Size(PVOID, DWORD, PVOID, ULONG*); + HRESULT Marshal(PVOID, DWORD, PVOID, ULONG, BYTE*, ULONG*); + HRESULT Unmarshal(PVOID, DWORD, ULONG, BYTE*, ULONG*); + HRESULT Free(PVOID); +} Index: src/win32/objbase.d ================================================================== --- src/win32/objbase.d +++ src/win32/objbase.d @@ -1,207 +1,207 @@ -/***********************************************************************\ -* objbase.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.objbase; -pragma(lib, "ole32.lib"); - -import win32.cguid, win32.objidl, win32.unknwn, win32.wtypes; -private import win32.basetyps, win32.objfwd, win32.rpcdce, win32.winbase, - win32.windef; - -// DAC: Not needed for D? -//MACRO #define LISet32(li, v) ((li).HighPart=(v)<0?-1:0, (li).LowPart=(v)) -//MACRO #define ULISet32(li, v) ((li).HighPart=0, (li).LowPart=(v)) - -const CLSCTX_ALL = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER|CLSCTX.CLSCTX_LOCAL_SERVER; -const CLSCTX_INPROC = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER; -const CLSCTX_SERVER = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_LOCAL_SERVER|CLSCTX.CLSCTX_REMOTE_SERVER; -const MARSHALINTERFACE_MIN=500; -const CWCSTORAGENAME=32; - -const STGM_DIRECT = 0; -const STGM_TRANSACTED = 0x10000L; -const STGM_SIMPLE = 0x8000000L; -const STGM_READ = 0; -const STGM_WRITE = 1; -const STGM_READWRITE = 2; -const STGM_SHARE_DENY_NONE = 0x40; -const STGM_SHARE_DENY_READ = 0x30; -const STGM_SHARE_DENY_WRITE = 0x20; -const STGM_SHARE_EXCLUSIVE = 0x10; -const STGM_PRIORITY = 0x40000L; -const STGM_DELETEONRELEASE = 0x4000000; -const STGM_NOSCRATCH = 0x100000; -const STGM_CREATE = 0x1000; -const STGM_CONVERT = 0x20000; -const STGM_NOSNAPSHOT = 0x200000; -const STGM_FAILIFTHERE = 0; - -const ASYNC_MODE_COMPATIBILITY = 1; -const ASYNC_MODE_DEFAULT = 0; - -const STGTY_REPEAT = 256; -const STG_TOEND = 0xFFFFFFFF; -const STG_LAYOUT_SEQUENTIAL = 0; -const STG_LAYOUT_INTERLEAVED = 1; - -const COM_RIGHTS_EXECUTE = 1; -const COM_RIGHTS_SAFE_FOR_SCRIPTING = 2; - -const STGOPTIONS_VERSION = 2; - -enum STGFMT { - STGFMT_STORAGE = 0, - STGFMT_FILE = 3, - STGFMT_ANY = 4, - STGFMT_DOCFILE = 5 -} - -struct STGOPTIONS { - USHORT usVersion; - USHORT reserved; - ULONG ulSectorSize; - CPtr!(WCHAR) pwcsTemplateFile; -} - -enum REGCLS { - REGCLS_SINGLEUSE = 0, - REGCLS_MULTIPLEUSE = 1, - REGCLS_MULTI_SEPARATE = 2 -} - -/* -BOOL IsEqualGUID(GUID rguid1, GUID rguid2) { - return rguid1 == rguid2; -} -*/ - -extern (Windows) BOOL IsEqualGUID( - REFGUID rguid1, - REFGUID rguid2 -); - -alias IsEqualGUID IsEqualIID; -alias IsEqualGUID IsEqualCLSID; - -enum COINIT { - COINIT_APARTMENTTHREADED = 2, - COINIT_MULTITHREADED = 0, - COINIT_DISABLE_OLE1DDE = 4, - COINIT_SPEED_OVER_MEMORY = 8 -} - -enum STDMSHLFLAGS { - SMEXF_SERVER = 1, - SMEXF_HANDLER -} - -extern(Windows) { - alias HRESULT function(REFCLSID, REFIID, PVOID*) LPFNGETCLASSOBJECT; - alias HRESULT function() LPFNCANUNLOADNOW; - - DWORD CoBuildVersion(); - HRESULT CoInitialize(PVOID); - HRESULT CoInitializeEx(LPVOID, DWORD); - void CoUninitialize(); - HRESULT CoGetMalloc(DWORD, LPMALLOC*); - DWORD CoGetCurrentProcess(); - HRESULT CoRegisterMallocSpy(LPMALLOCSPY); - HRESULT CoRevokeMallocSpy(); - HRESULT CoCreateStandardMalloc(DWORD, IMalloc**); - //#ifdef DBG - ULONG DebugCoGetRpcFault(); - void DebugCoSetRpcFault(ULONG); - //#endif - HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*); - HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD); - HRESULT CoRevokeClassObject(DWORD); - HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); - HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); - HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*); - HRESULT CoMarshalHresult(LPSTREAM, HRESULT); - HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*); - HRESULT CoReleaseMarshalData(LPSTREAM); - HRESULT CoDisconnectObject(LPUNKNOWN, DWORD); - HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL); - HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*); - HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*); - BOOL CoIsHandlerConnected(LPUNKNOWN); - BOOL CoHasStrongExternalConnections(LPUNKNOWN); - HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*); - HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*); - HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*); - HINSTANCE CoLoadLibrary(LPOLESTR, BOOL); - void CoFreeLibrary(HINSTANCE); - void CoFreeAllLibraries(); - void CoFreeUnusedLibraries(); - HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*); - HRESULT CoCreateInstanceEx(REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); - HRESULT StringFromCLSID(REFCLSID, LPOLESTR*); - HRESULT CLSIDFromString(LPOLESTR, LPCLSID); - HRESULT StringFromIID(REFIID, LPOLESTR*); - HRESULT IIDFromString(LPOLESTR, LPIID); - BOOL CoIsOle1Class(REFCLSID); - HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*); - HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID); - int StringFromGUID2(REFGUID, LPOLESTR, int); - HRESULT CoCreateGuid(GUID*); - BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD); - BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*); - HRESULT CoFileTimeNow(FILETIME*); - HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*); - HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID); - HRESULT CoTreatAsClass(REFCLSID, REFCLSID); - HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*); - HRESULT DllCanUnloadNow(); - PVOID CoTaskMemAlloc(ULONG); - PVOID CoTaskMemRealloc(PVOID, ULONG); - void CoTaskMemFree(PVOID); - HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); - HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*); - HRESULT StgCreateDocfile(CPtr!(OLECHAR), DWORD, DWORD, IStorage**); - HRESULT StgCreateDocfileOnILockBytes(ILockBytes*, DWORD, DWORD, IStorage**); - HRESULT StgOpenStorage(CPtr!(OLECHAR), IStorage, DWORD, SNB, DWORD, IStorage*); - HRESULT StgOpenStorageOnILockBytes(ILockBytes*, IStorage*, DWORD, SNB, DWORD, IStorage**); - HRESULT StgIsStorageFile(CPtr!(OLECHAR)); - HRESULT StgIsStorageILockBytes(ILockBytes*); - HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *); - HRESULT StgCreateStorageEx(CPtr!(WCHAR), DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); - HRESULT StgOpenStorageEx(CPtr!(WCHAR), DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); - HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*); - HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**); - HRESULT MkParseDisplayName(LPBC, LPCOLESTR, ULONG*, LPMONIKER*); - HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL); - HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*); - HRESULT CreateBindCtx(DWORD, LPBC*); - HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*); - HRESULT GetClassFile (LPCOLESTR, CLSID*); - HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*); - HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*); - HRESULT CreateAntiMoniker(LPMONIKER*); - HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*); - HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*); - HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*); - HRESULT CoGetCallContext(REFIID, void**); - HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*); - HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD); - HRESULT CoCopyProxy(IUnknown*, IUnknown**); - HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*); - HRESULT CoImpersonateClient(); - HRESULT CoRevertToSelf(); - HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); - HRESULT CoSwitchCallContext(IUnknown*, IUnknown**); - HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*); - HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*); - ULONG CoAddRefServerProcess(); - ULONG CoReleaseServerProcess(); - HRESULT CoResumeClassObjects(); - HRESULT CoSuspendClassObjects(); - HRESULT CoGetPSClsid(REFIID, CLSID*); - HRESULT CoRegisterPSClsid(REFIID, REFCLSID); -} +/***********************************************************************\ +* objbase.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.objbase; +pragma(lib, "ole32"); + +import win32.cguid, win32.objidl, win32.unknwn, win32.wtypes; +private import win32.basetyps, win32.objfwd, win32.rpcdce, win32.winbase, + win32.windef; + +// DAC: Not needed for D? +//MACRO #define LISet32(li, v) ((li).HighPart=(v)<0?-1:0, (li).LowPart=(v)) +//MACRO #define ULISet32(li, v) ((li).HighPart=0, (li).LowPart=(v)) + +const CLSCTX_ALL = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER|CLSCTX.CLSCTX_LOCAL_SERVER; +const CLSCTX_INPROC = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_INPROC_HANDLER; +const CLSCTX_SERVER = CLSCTX.CLSCTX_INPROC_SERVER|CLSCTX.CLSCTX_LOCAL_SERVER|CLSCTX.CLSCTX_REMOTE_SERVER; +const MARSHALINTERFACE_MIN=500; +const CWCSTORAGENAME=32; + +const STGM_DIRECT = 0; +const STGM_TRANSACTED = 0x10000L; +const STGM_SIMPLE = 0x8000000L; +const STGM_READ = 0; +const STGM_WRITE = 1; +const STGM_READWRITE = 2; +const STGM_SHARE_DENY_NONE = 0x40; +const STGM_SHARE_DENY_READ = 0x30; +const STGM_SHARE_DENY_WRITE = 0x20; +const STGM_SHARE_EXCLUSIVE = 0x10; +const STGM_PRIORITY = 0x40000L; +const STGM_DELETEONRELEASE = 0x4000000; +const STGM_NOSCRATCH = 0x100000; +const STGM_CREATE = 0x1000; +const STGM_CONVERT = 0x20000; +const STGM_NOSNAPSHOT = 0x200000; +const STGM_FAILIFTHERE = 0; + +const ASYNC_MODE_COMPATIBILITY = 1; +const ASYNC_MODE_DEFAULT = 0; + +const STGTY_REPEAT = 256; +const STG_TOEND = 0xFFFFFFFF; +const STG_LAYOUT_SEQUENTIAL = 0; +const STG_LAYOUT_INTERLEAVED = 1; + +const COM_RIGHTS_EXECUTE = 1; +const COM_RIGHTS_SAFE_FOR_SCRIPTING = 2; + +const STGOPTIONS_VERSION = 2; + +enum STGFMT { + STGFMT_STORAGE = 0, + STGFMT_FILE = 3, + STGFMT_ANY = 4, + STGFMT_DOCFILE = 5 +} + +struct STGOPTIONS { + USHORT usVersion; + USHORT reserved; + ULONG ulSectorSize; + const(WCHAR)* pwcsTemplateFile; +} + +enum REGCLS { + REGCLS_SINGLEUSE = 0, + REGCLS_MULTIPLEUSE = 1, + REGCLS_MULTI_SEPARATE = 2 +} + +/* +BOOL IsEqualGUID(GUID rguid1, GUID rguid2) { + return rguid1 == rguid2; +} +*/ + +extern (Windows) BOOL IsEqualGUID( + REFGUID rguid1, + REFGUID rguid2 +); + +alias IsEqualGUID IsEqualIID; +alias IsEqualGUID IsEqualCLSID; + +enum COINIT { + COINIT_APARTMENTTHREADED = 2, + COINIT_MULTITHREADED = 0, + COINIT_DISABLE_OLE1DDE = 4, + COINIT_SPEED_OVER_MEMORY = 8 +} + +enum STDMSHLFLAGS { + SMEXF_SERVER = 1, + SMEXF_HANDLER +} + +extern(Windows) { + alias HRESULT function(REFCLSID, REFIID, PVOID*) LPFNGETCLASSOBJECT; + alias HRESULT function() LPFNCANUNLOADNOW; + + DWORD CoBuildVersion(); + HRESULT CoInitialize(PVOID); + HRESULT CoInitializeEx(LPVOID, DWORD); + void CoUninitialize(); + HRESULT CoGetMalloc(DWORD, LPMALLOC*); + DWORD CoGetCurrentProcess(); + HRESULT CoRegisterMallocSpy(LPMALLOCSPY); + HRESULT CoRevokeMallocSpy(); + HRESULT CoCreateStandardMalloc(DWORD, IMalloc*); + //#ifdef DBG + ULONG DebugCoGetRpcFault(); + void DebugCoSetRpcFault(ULONG); + //#endif + HRESULT CoGetClassObject(REFCLSID, DWORD, COSERVERINFO*, REFIID, PVOID*); + HRESULT CoRegisterClassObject(REFCLSID, LPUNKNOWN, DWORD, DWORD, PDWORD); + HRESULT CoRevokeClassObject(DWORD); + HRESULT CoGetMarshalSizeMax(ULONG*, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); + HRESULT CoMarshalInterface(LPSTREAM, REFIID, LPUNKNOWN, DWORD, PVOID, DWORD); + HRESULT CoUnmarshalInterface(LPSTREAM, REFIID, PVOID*); + HRESULT CoMarshalHresult(LPSTREAM, HRESULT); + HRESULT CoUnmarshalHresult(LPSTREAM, HRESULT*); + HRESULT CoReleaseMarshalData(LPSTREAM); + HRESULT CoDisconnectObject(LPUNKNOWN, DWORD); + HRESULT CoLockObjectExternal(LPUNKNOWN, BOOL, BOOL); + HRESULT CoGetStandardMarshal(REFIID, LPUNKNOWN, DWORD, PVOID, DWORD, LPMARSHAL*); + HRESULT CoGetStdMarshalEx(LPUNKNOWN, DWORD, LPUNKNOWN*); + BOOL CoIsHandlerConnected(LPUNKNOWN); + BOOL CoHasStrongExternalConnections(LPUNKNOWN); + HRESULT CoMarshalInterThreadInterfaceInStream(REFIID, LPUNKNOWN, LPSTREAM*); + HRESULT CoGetInterfaceAndReleaseStream(LPSTREAM, REFIID, PVOID*); + HRESULT CoCreateFreeThreadedMarshaler(LPUNKNOWN, LPUNKNOWN*); + HINSTANCE CoLoadLibrary(LPOLESTR, BOOL); + void CoFreeLibrary(HINSTANCE); + void CoFreeAllLibraries(); + void CoFreeUnusedLibraries(); + HRESULT CoCreateInstance(REFCLSID, LPUNKNOWN, DWORD, REFIID, PVOID*); + HRESULT CoCreateInstanceEx(REFCLSID, IUnknown, DWORD, COSERVERINFO*, DWORD, MULTI_QI*); + HRESULT StringFromCLSID(REFCLSID, LPOLESTR*); + HRESULT CLSIDFromString(LPOLESTR, LPCLSID); + HRESULT StringFromIID(REFIID, LPOLESTR*); + HRESULT IIDFromString(LPOLESTR, LPIID); + BOOL CoIsOle1Class(REFCLSID); + HRESULT ProgIDFromCLSID(REFCLSID, LPOLESTR*); + HRESULT CLSIDFromProgID(LPCOLESTR, LPCLSID); + int StringFromGUID2(REFGUID, LPOLESTR, int); + HRESULT CoCreateGuid(GUID*); + BOOL CoFileTimeToDosDateTime(FILETIME*, LPWORD, LPWORD); + BOOL CoDosDateTimeToFileTime(WORD, WORD, FILETIME*); + HRESULT CoFileTimeNow(FILETIME*); + HRESULT CoRegisterMessageFilter(LPMESSAGEFILTER, LPMESSAGEFILTER*); + HRESULT CoGetTreatAsClass(REFCLSID, LPCLSID); + HRESULT CoTreatAsClass(REFCLSID, REFCLSID); + HRESULT DllGetClassObject(REFCLSID, REFIID, PVOID*); + HRESULT DllCanUnloadNow(); + PVOID CoTaskMemAlloc(ULONG); + PVOID CoTaskMemRealloc(PVOID, ULONG); + void CoTaskMemFree(PVOID); + HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); + HRESULT CreateDataCache(LPUNKNOWN, REFCLSID, REFIID, PVOID*); + HRESULT StgCreateDocfile(const(OLECHAR)*, DWORD, DWORD, IStorage*); + HRESULT StgCreateDocfileOnILockBytes(ILockBytes, DWORD, DWORD, IStorage*); + HRESULT StgOpenStorage(const(OLECHAR)*, IStorage, DWORD, SNB, DWORD, IStorage*); + HRESULT StgOpenStorageOnILockBytes(ILockBytes, IStorage, DWORD, SNB, DWORD, IStorage*); + HRESULT StgIsStorageFile(const(OLECHAR)*); + HRESULT StgIsStorageILockBytes(ILockBytes); + HRESULT StgSetTimes(OLECHAR *, FILETIME *, FILETIME *, FILETIME *); + HRESULT StgCreateStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); + HRESULT StgOpenStorageEx(const(WCHAR)*, DWORD, DWORD, DWORD, STGOPTIONS*, void*, REFIID, void**); + HRESULT BindMoniker(LPMONIKER, DWORD, REFIID, PVOID*); + HRESULT CoGetObject(LPCWSTR, BIND_OPTS*, REFIID, void**); + HRESULT MkParseDisplayName(LPBC, LPCOLESTR, ULONG*, LPMONIKER*); + HRESULT MonikerRelativePathTo(LPMONIKER, LPMONIKER, LPMONIKER*, BOOL); + HRESULT MonikerCommonPrefixWith(LPMONIKER, LPMONIKER, LPMONIKER*); + HRESULT CreateBindCtx(DWORD, LPBC*); + HRESULT CreateGenericComposite(LPMONIKER, LPMONIKER, LPMONIKER*); + HRESULT GetClassFile (LPCOLESTR, CLSID*); + HRESULT CreateFileMoniker(LPCOLESTR, LPMONIKER*); + HRESULT CreateItemMoniker(LPCOLESTR, LPCOLESTR, LPMONIKER*); + HRESULT CreateAntiMoniker(LPMONIKER*); + HRESULT CreatePointerMoniker(LPUNKNOWN, LPMONIKER*); + HRESULT GetRunningObjectTable(DWORD, LPRUNNINGOBJECTTABLE*); + HRESULT CoInitializeSecurity(PSECURITY_DESCRIPTOR, LONG, SOLE_AUTHENTICATION_SERVICE*, void*, DWORD, DWORD, void*, DWORD, void*); + HRESULT CoGetCallContext(REFIID, void**); + HRESULT CoQueryProxyBlanket(IUnknown*, DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTH_IDENTITY_HANDLE*, DWORD*); + HRESULT CoSetProxyBlanket(IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE, DWORD); + HRESULT CoCopyProxy(IUnknown*, IUnknown**); + HRESULT CoQueryClientBlanket(DWORD*, DWORD*, OLECHAR**, DWORD*, DWORD*, RPC_AUTHZ_HANDLE*, DWORD*); + HRESULT CoImpersonateClient(); + HRESULT CoRevertToSelf(); + HRESULT CoQueryAuthenticationServices(DWORD*, SOLE_AUTHENTICATION_SERVICE**); + HRESULT CoSwitchCallContext(IUnknown*, IUnknown**); + HRESULT CoGetInstanceFromFile(COSERVERINFO*, CLSID*, IUnknown*, DWORD, DWORD, OLECHAR*, DWORD, MULTI_QI*); + HRESULT CoGetInstanceFromIStorage(COSERVERINFO*, CLSID*, IUnknown*, DWORD, IStorage*, DWORD, MULTI_QI*); + ULONG CoAddRefServerProcess(); + ULONG CoReleaseServerProcess(); + HRESULT CoResumeClassObjects(); + HRESULT CoSuspendClassObjects(); + HRESULT CoGetPSClsid(REFIID, CLSID*); + HRESULT CoRegisterPSClsid(REFIID, REFCLSID); +} Index: src/win32/objfwd.d ================================================================== --- src/win32/objfwd.d +++ src/win32/objfwd.d @@ -1,103 +1,103 @@ -/***********************************************************************\ -* objfwd.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.objfwd; - -private import win32.objidl; - -/+ -// Forward declararions are not necessary in D. -extern(Windows) { - interface IMoniker; - interface IStream; - interface IMarshal; - interface IMalloc; - interface IMallocSpy; - interface IMessageFilter; - interface IPersist; - interface IPersistStream; - interface IRunningObjectTable; - interface IBindCtx; - interface IAdviseSink; - interface IAdviseSink2; - interface IDataObject; - interface IDataAdviseHolder; - - interface IEnumMoniker; - interface IEnumFORMATETC; - interface IEnumSTATDATA; - interface IEnumSTATSTG; - interface IEnumSTATPROPSTG; - interface IEnumString; - interface IEnumUnknown; - interface IStorage; - interface IPersistStorage; - interface ILockBytes; - interface IStdMarshalInfo; - interface IExternalConnection; - interface IRunnableObject; - interface IROTData; - interface IPersistFile; - interface IRootStorage; - interface IPropertyStorage; - interface IEnumSTATPROPSETSTG; - interface IPropertySetStorage; - interface IClientSecurity; - interface IServerSecurity; - interface IClassActivator; - interface IFillLockBytes; - interface IProgressNotify; - interface ILayoutStorage; - interface IRpcProxyBuffer; - interface IRpcChannelBuffer; - interface IRpcStubBuffer; -} -+/ -alias IMoniker LPMONIKER; -alias IStream LPSTREAM; -alias IMarshal LPMARSHAL; -alias IMalloc LPMALLOC; -alias IMallocSpy LPMALLOCSPY; -alias IMessageFilter LPMESSAGEFILTER; -alias IPersist LPPERSIST; -alias IPersistStream LPPERSISTSTREAM; -alias IRunningObjectTable LPRUNNINGOBJECTTABLE; -alias IBindCtx LPBINDCTX, LPBC; -alias IAdviseSink LPADVISESINK; -alias IAdviseSink2 LPADVISESINK2; -alias IDataObject LPDATAOBJECT; -alias IDataAdviseHolder LPDATAADVISEHOLDER; -alias IEnumMoniker LPENUMMONIKER; -alias IEnumFORMATETC LPENUMFORMATETC; -alias IEnumSTATDATA LPENUMSTATDATA; -alias IEnumSTATSTG LPENUMSTATSTG; -alias IEnumSTATPROPSTG LPENUMSTATPROPSTG; -alias IEnumString LPENUMSTRING; -alias IEnumUnknown LPENUMUNKNOWN; -alias IStorage LPSTORAGE; -alias IPersistStorage LPPERSISTSTORAGE; -alias ILockBytes LPLOCKBYTES; -alias IStdMarshalInfo LPSTDMARSHALINFO; -alias IExternalConnection LPEXTERNALCONNECTION; -alias IRunnableObject LPRUNNABLEOBJECT; -alias IROTData LPROTDATA; -alias IPersistFile LPPERSISTFILE; -alias IRootStorage LPROOTSTORAGE; -alias IRpcChannelBuffer LPRPCCHANNELBUFFER; -alias IRpcProxyBuffer LPRPCPROXYBUFFER; -alias IRpcStubBuffer LPRPCSTUBBUFFER; -alias IPropertyStorage LPPROPERTYSTORAGE; -alias IEnumSTATPROPSETSTG LPENUMSTATPROPSETSTG; -alias IPropertySetStorage LPPROPERTYSETSTORAGE; -alias IClientSecurity LPCLIENTSECURITY; -alias IServerSecurity LPSERVERSECURITY; -alias IClassActivator LPCLASSACTIVATOR; -alias IFillLockBytes LPFILLLOCKBYTES; -alias IProgressNotify LPPROGRESSNOTIFY; -alias ILayoutStorage LPLAYOUTSTORAGE; +/***********************************************************************\ +* objfwd.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.objfwd; + +private import win32.objidl; + +/+ +// Forward declararions are not necessary in D. +extern(Windows) { + interface IMoniker; + interface IStream; + interface IMarshal; + interface IMalloc; + interface IMallocSpy; + interface IMessageFilter; + interface IPersist; + interface IPersistStream; + interface IRunningObjectTable; + interface IBindCtx; + interface IAdviseSink; + interface IAdviseSink2; + interface IDataObject; + interface IDataAdviseHolder; + + interface IEnumMoniker; + interface IEnumFORMATETC; + interface IEnumSTATDATA; + interface IEnumSTATSTG; + interface IEnumSTATPROPSTG; + interface IEnumString; + interface IEnumUnknown; + interface IStorage; + interface IPersistStorage; + interface ILockBytes; + interface IStdMarshalInfo; + interface IExternalConnection; + interface IRunnableObject; + interface IROTData; + interface IPersistFile; + interface IRootStorage; + interface IPropertyStorage; + interface IEnumSTATPROPSETSTG; + interface IPropertySetStorage; + interface IClientSecurity; + interface IServerSecurity; + interface IClassActivator; + interface IFillLockBytes; + interface IProgressNotify; + interface ILayoutStorage; + interface IRpcProxyBuffer; + interface IRpcChannelBuffer; + interface IRpcStubBuffer; +} ++/ +alias IMoniker LPMONIKER; +alias IStream LPSTREAM; +alias IMarshal LPMARSHAL; +alias IMalloc LPMALLOC; +alias IMallocSpy LPMALLOCSPY; +alias IMessageFilter LPMESSAGEFILTER; +alias IPersist LPPERSIST; +alias IPersistStream LPPERSISTSTREAM; +alias IRunningObjectTable LPRUNNINGOBJECTTABLE; +alias IBindCtx LPBINDCTX, LPBC; +alias IAdviseSink LPADVISESINK; +alias IAdviseSink2 LPADVISESINK2; +alias IDataObject LPDATAOBJECT; +alias IDataAdviseHolder LPDATAADVISEHOLDER; +alias IEnumMoniker LPENUMMONIKER; +alias IEnumFORMATETC LPENUMFORMATETC; +alias IEnumSTATDATA LPENUMSTATDATA; +alias IEnumSTATSTG LPENUMSTATSTG; +alias IEnumSTATPROPSTG LPENUMSTATPROPSTG; +alias IEnumString LPENUMSTRING; +alias IEnumUnknown LPENUMUNKNOWN; +alias IStorage LPSTORAGE; +alias IPersistStorage LPPERSISTSTORAGE; +alias ILockBytes LPLOCKBYTES; +alias IStdMarshalInfo LPSTDMARSHALINFO; +alias IExternalConnection LPEXTERNALCONNECTION; +alias IRunnableObject LPRUNNABLEOBJECT; +alias IROTData LPROTDATA; +alias IPersistFile LPPERSISTFILE; +alias IRootStorage LPROOTSTORAGE; +alias IRpcChannelBuffer LPRPCCHANNELBUFFER; +alias IRpcProxyBuffer LPRPCPROXYBUFFER; +alias IRpcStubBuffer LPRPCSTUBBUFFER; +alias IPropertyStorage LPPROPERTYSTORAGE; +alias IEnumSTATPROPSETSTG LPENUMSTATPROPSETSTG; +alias IPropertySetStorage LPPROPERTYSETSTORAGE; +alias IClientSecurity LPCLIENTSECURITY; +alias IServerSecurity LPSERVERSECURITY; +alias IClassActivator LPCLASSACTIVATOR; +alias IFillLockBytes LPFILLLOCKBYTES; +alias IProgressNotify LPPROGRESSNOTIFY; +alias ILayoutStorage LPLAYOUTSTORAGE; Index: src/win32/objidl.d ================================================================== --- src/win32/objidl.d +++ src/win32/objidl.d @@ -1,1307 +1,1307 @@ -/***********************************************************************\ -* objidl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -// TODO (Don): -// # why is "alias IPSFactoryBuffer* LPPSFACTORYBUFFER;" in this file, -// rather than in objfwd ? -// # do we need the proxies that are defined in this file? -module win32.objidl; - -import win32.unknwn; -import win32.objfwd; -private import win32.windef; -private import win32.basetyps; -private import win32.oleidl; -private import win32.wtypes; -private import win32.winbase; // for FILETIME -private import win32.rpcdce; - -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; -} - -enum STGTY { - STGTY_STORAGE = 1, - STGTY_STREAM, - STGTY_LOCKBYTES, - STGTY_PROPERTY -} - -enum STREAM_SEEK { - STREAM_SEEK_SET, - STREAM_SEEK_CUR, - STREAM_SEEK_END -} - -struct INTERFACEINFO { - LPUNKNOWN pUnk; - IID iid; - WORD wMethod; -} -alias INTERFACEINFO* LPINTERFACEINFO; - -enum CALLTYPE { - CALLTYPE_TOPLEVEL = 1, - CALLTYPE_NESTED, - CALLTYPE_ASYNC, - CALLTYPE_TOPLEVEL_CALLPENDING, - CALLTYPE_ASYNC_CALLPENDING -} - -enum PENDINGTYPE { - PENDINGTYPE_TOPLEVEL = 1, - PENDINGTYPE_NESTED -} - -enum PENDINGMSG { - PENDINGMSG_CANCELCALL = 0, - PENDINGMSG_WAITNOPROCESS, - PENDINGMSG_WAITDEFPROCESS -} - -alias OLECHAR** SNB; - -enum DATADIR { - DATADIR_GET = 1, - DATADIR_SET -} -alias WORD CLIPFORMAT; -alias CLIPFORMAT* LPCLIPFORMAT; - -struct DVTARGETDEVICE { - DWORD tdSize; - WORD tdDriverNameOffset; - WORD tdDeviceNameOffset; - WORD tdPortNameOffset; - WORD tdExtDevmodeOffset; - BYTE tdData[1]; -} - -struct FORMATETC { - CLIPFORMAT cfFormat; - DVTARGETDEVICE* ptd; - DWORD dwAspect; - LONG lindex; - DWORD tymed; -} -alias FORMATETC* LPFORMATETC; - -struct RemSTGMEDIUM { - DWORD tymed; - DWORD dwHandleType; - ULONG pData; - uint pUnkForRelease; - uint cbData; - BYTE data[1]; -} - -struct HLITEM { - ULONG uHLID; - LPWSTR pwzFriendlyName; -} - -struct STATDATA { - FORMATETC formatetc; - DWORD grfAdvf; - IAdviseSink* pAdvSink; - DWORD dwConnection; -} - -struct STATPROPSETSTG { - FMTID fmtid; - CLSID clsid; - DWORD grfFlags; - FILETIME mtime; - FILETIME ctime; - FILETIME atime; -} - -enum EXTCONN { - EXTCONN_STRONG = 1, - EXTCONN_WEAK = 2, - EXTCONN_CALLABLE = 4 -} - -struct MULTI_QI { - CPtr!(IID) pIID; - IUnknown pItf; - HRESULT hr; -} - -struct AUTH_IDENTITY { - USHORT* User; - ULONG UserLength; - USHORT* Domain; - ULONG DomainLength; - USHORT* Password; - ULONG PasswordLength; - ULONG Flags; -} - -struct COAUTHINFO { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - LPWSTR pwszServerPrincName; - DWORD dwAuthnLevel; - DWORD dwImpersonationLevel; - AUTH_IDENTITY* pAuthIdentityData; - DWORD dwCapabilities; -} - -struct COSERVERINFO { - DWORD dwReserved1; - LPWSTR pwszName; - COAUTHINFO* pAuthInfo; - DWORD dwReserved2; -} - -struct BIND_OPTS { - DWORD cbStruct; - DWORD grfFlags; - DWORD grfMode; - DWORD dwTickCountDeadline; -} -alias BIND_OPTS* LPBIND_OPTS; - -struct BIND_OPTS2 { - DWORD cbStruct; - 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 -} - -struct STGMEDIUM { - DWORD tymed; - union { - HBITMAP hBitmap; - PVOID hMetaFilePict; - HENHMETAFILE hEnhMetaFile; - HGLOBAL hGlobal; - LPWSTR lpszFileName; - LPSTREAM pstm; - LPSTORAGE pstg; - } - LPUNKNOWN pUnkForRelease; -} -alias STGMEDIUM* LPSTGMEDIUM; - -enum LOCKTYPE { - LOCK_WRITE = 1, - LOCK_EXCLUSIVE = 2, - LOCK_ONLYONCE = 4 -} - -alias uint RPCOLEDATAREP; - -struct RPCOLEMESSAGE { - PVOID reserved1; - RPCOLEDATAREP dataRepresentation; - PVOID Buffer; - ULONG cbBuffer; - ULONG iMethod; - PVOID reserved2[5]; - ULONG rpcFlags; -} -alias RPCOLEMESSAGE* PRPCOLEMESSAGE; - -enum MKSYS { - MKSYS_NONE, - MKSYS_GENERICCOMPOSITE, - MKSYS_FILEMONIKER, - MKSYS_ANTIMONIKER, - MKSYS_ITEMMONIKER, - MKSYS_POINTERMONIKER -} - -enum MKREDUCE { - MKRREDUCE_ALL, - MKRREDUCE_ONE = 196608, - MKRREDUCE_TOUSER = 131072, - MKRREDUCE_THROUGHUSER = 65536 -} - -struct RemSNB { - uint ulCntStr; - uint ulCntChar; - OLECHAR rgString[1]; -} - -enum ADVF { - ADVF_NODATA = 1, - ADVF_PRIMEFIRST = 2, - ADVF_ONLYONCE = 4, - ADVFCACHE_NOHANDLER = 8, - ADVFCACHE_FORCEBUILTIN = 16, - ADVFCACHE_ONSAVE = 32, - ADVF_DATAONSTOP = 64 -} - -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 -} - -enum SERVERCALL { - SERVERCALL_ISHANDLED, - SERVERCALL_REJECTED, - SERVERCALL_RETRYLATER -} - -struct CAUB { - ULONG cElems; - ubyte* pElems; -} - -struct CAI { - ULONG cElems; - short* pElems; -} - -struct CAUI { - ULONG cElems; - USHORT* pElems; -} - -struct CAL { - ULONG cElems; - int* pElems; -} - -struct CAUL { - ULONG cElems; - ULONG* pElems; -} - -struct CAFLT { - ULONG cElems; - float* pElems; -} - -struct CADBL { - ULONG cElems; - double* pElems; -} - -struct CACY { - ULONG cElems; - CY* pElems; -} - -struct CADATE { - ULONG cElems; - DATE* pElems; -} - -struct CABSTR { - ULONG cElems; - BSTR* pElems; -} - -struct CABSTRBLOB { - ULONG cElems; - BSTRBLOB* pElems; -} - -struct CABOOL { - ULONG cElems; - VARIANT_BOOL* pElems; -} - -struct CASCODE { - ULONG cElems; - SCODE* pElems; -} - -struct CAH { - ULONG cElems; - LARGE_INTEGER* pElems; -} - -struct CAUH { - ULONG cElems; - ULARGE_INTEGER* pElems; -} - -struct CALPSTR { - ULONG cElems; - LPSTR* pElems; -} - -struct CALPWSTR { - ULONG cElems; - LPWSTR* pElems; -} - -struct CAFILETIME { - ULONG cElems; - FILETIME* pElems; -} - -struct CACLIPDATA { - ULONG cElems; - CLIPDATA* pElems; -} - -struct CACLSID { - ULONG cElems; - CLSID* pElems; -} -alias PROPVARIANT* LPPROPVARIANT; - -struct CAPROPVARIANT { - ULONG cElems; - LPPROPVARIANT pElems; -} - -struct PROPVARIANT { - VARTYPE vt; - WORD wReserved1; - WORD wReserved2; - WORD wReserved3; - union { - CHAR cVal; - UCHAR bVal; - short iVal; - USHORT uiVal; - VARIANT_BOOL boolVal; - int lVal; - ULONG ulVal; - float fltVal; - SCODE scode; - LARGE_INTEGER hVal; - ULARGE_INTEGER uhVal; - double dblVal; - CY cyVal; - DATE date; - FILETIME filetime; - CLSID* puuid; - BLOB blob; - CLIPDATA* pclipdata; - LPSTREAM pStream; - LPSTORAGE pStorage; - BSTR bstrVal; - BSTRBLOB bstrblobVal; - LPSTR pszVal; - LPWSTR pwszVal; - CAUB caub; - CAI cai; - CAUI caui; - CABOOL cabool; - CAL cal; - CAUL caul; - CAFLT caflt; - CASCODE cascode; - CAH cah; - CAUH cauh; - CADBL cadbl; - CACY cacy; - CADATE cadate; - CAFILETIME cafiletime; - CACLSID cauuid; - CACLIPDATA caclipdata; - CABSTR cabstr; - CABSTRBLOB cabstrblob; - CALPSTR calpstr; - CALPWSTR calpwstr; - CAPROPVARIANT capropvar; - } -} - -struct PROPSPEC { - ULONG ulKind; - union { - PROPID propid; - LPOLESTR lpwstr; - } -} - -struct STATPROPSTG { - LPOLESTR lpwstrName; - PROPID propid; - VARTYPE vt; -} - -enum PROPSETFLAG { - PROPSETFLAG_DEFAULT, - PROPSETFLAG_NONSIMPLE, - PROPSETFLAG_ANSI, - PROPSETFLAG_UNBUFFERED = 4 -} - -struct STORAGELAYOUT { - DWORD LayoutType; - OLECHAR* pwcsElementName; - LARGE_INTEGER cOffset; - LARGE_INTEGER cBytes; -} - -struct SOLE_AUTHENTICATION_SERVICE { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - OLECHAR* pPrincipalName; - HRESULT hr; -} - -const OLECHAR* COLE_DEFAULT_PRINCIPAL = cast ( OLECHAR* )(-1); - -enum EOLE_AUTHENTICATION_CAPABILITIES { - EOAC_NONE = 0, - EOAC_MUTUAL_AUTH = 0x1, - EOAC_SECURE_REFS = 0x2, - EOAC_ACCESS_CONTROL = 0x4, - EOAC_APPID = 0x8, - EOAC_DYNAMIC = 0x10, - EOAC_STATIC_CLOAKING = 0x20, - EOAC_DYNAMIC_CLOAKING = 0x40, - EOAC_ANY_AUTHORITY = 0x80, - EOAC_MAKE_FULLSIC = 0x100, - EOAC_REQUIRE_FULLSIC = 0x200, - EOAC_AUTO_IMPERSONATE = 0x400, - EOAC_DEFAULT = 0x800, - EOAC_DISABLE_AAA = 0x1000, - EOAC_NO_CUSTOM_MARSHAL = 0x2000 -} - -struct SOLE_AUTHENTICATION_INFO { - DWORD dwAuthnSvc; - DWORD dwAuthzSvc; - void* pAuthInfo; -} - -const void* COLE_DEFAULT_AUTHINFO = cast( void* )(-1 ); - -struct SOLE_AUTHENTICATION_LIST { - DWORD cAuthInfo; - SOLE_AUTHENTICATION_INFO* aAuthInfo; -} - -interface IEnumFORMATETC : IUnknown { - HRESULT Next(ULONG, FORMATETC*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumFORMATETC**); -} - -interface IEnumHLITEM : IUnknown { - HRESULT Next(ULONG, HLITEM*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumHLITEM**); -} - -interface IEnumSTATDATA : IUnknown { - HRESULT Next(ULONG, STATDATA*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATDATA**); -} - -interface IEnumSTATPROPSETSTG : IUnknown { - HRESULT Next(ULONG, STATPROPSETSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATPROPSETSTG**); -} - -interface IEnumSTATPROPSTG : IUnknown { - HRESULT Next(ULONG, STATPROPSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATPROPSTG**); -} - -interface IEnumSTATSTG : IUnknown { - HRESULT Next(ULONG, STATSTG*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumSTATSTG**); -} - -interface IEnumString : IUnknown { - HRESULT Next(ULONG, LPOLESTR*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumString**); -} - -interface IEnumMoniker : IUnknown { - HRESULT Next(ULONG, IMoniker*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumMoniker**); -} - - -interface IEnumUnknown : IUnknown { - HRESULT Next(ULONG, IUnknown*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumUnknown**); -} - -interface ISequentialStream : IUnknown { - HRESULT Read(void*, ULONG, ULONG*); - HRESULT Write(void* , ULONG, ULONG*); -} - -interface IStream : ISequentialStream { - HRESULT Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*); - HRESULT SetSize(ULARGE_INTEGER); - HRESULT CopyTo(IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT Stat(STATSTG*, DWORD); - HRESULT Clone(LPSTREAM*); -} - -interface IMarshal : IUnknown { - HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*); - HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, PDWORD, ULONG*); - HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD); - HRESULT UnmarshalInterface(IStream, REFIID, void**); - HRESULT ReleaseMarshalData(IStream); - HRESULT DisconnectObject(DWORD); -} - -interface IStdMarshalInfo : IUnknown { - HRESULT GetClassForHandler(DWORD, PVOID, CLSID*); -} - -interface IMalloc : IUnknown { - void* Alloc(ULONG); - void* Realloc(void*, ULONG); - void Free(void*); - ULONG GetSize(void*); - int DidAlloc(void*); - void HeapMinimize(); -} - -interface IMallocSpy : IUnknown { - ULONG PreAlloc(ULONG); - void* PostAlloc(void*); - void* PreFree(void*, BOOL); - void PostFree(BOOL); - ULONG PreRealloc(void*, ULONG, void**, BOOL); - void* PostRealloc(void*, BOOL); - void* PreGetSize(void*, BOOL); - ULONG PostGetSize(ULONG, BOOL); - void* PreDidAlloc(void*, BOOL); - int PostDidAlloc(void*, BOOL, int); - void PreHeapMinimize(); - void PostHeapMinimize(); -} - -interface IMessageFilter : IUnknown { - DWORD HandleInComingCall(DWORD, HTASK, DWORD, LPINTERFACEINFO); - DWORD RetryRejectedCall(HTASK, DWORD, DWORD); - DWORD MessagePending(HTASK, DWORD, DWORD); -} - - -interface IPersist : IUnknown { - HRESULT GetClassID(CLSID*); -} - -interface IPersistStream : IPersist { - HRESULT IsDirty(); - HRESULT Load(IStream*); - HRESULT Save(IStream*, BOOL); - HRESULT GetSizeMax(PULARGE_INTEGER); -} - -interface IRunningObjectTable : IUnknown { - HRESULT Register(DWORD, LPUNKNOWN, LPMONIKER, PDWORD); - HRESULT Revoke(DWORD); - HRESULT IsRunning(LPMONIKER); - HRESULT GetObject(LPMONIKER, LPUNKNOWN*); - HRESULT NoteChangeTime(DWORD, LPFILETIME); - HRESULT GetTimeOfLastChange(LPMONIKER, LPFILETIME); - HRESULT EnumRunning(IEnumMoniker**); -} - -interface IBindCtx : IUnknown { - HRESULT RegisterObjectBound(LPUNKNOWN); - HRESULT RevokeObjectBound(LPUNKNOWN); - HRESULT ReleaseBoundObjects(); - HRESULT SetBindOptions(LPBIND_OPTS); - HRESULT GetBindOptions(LPBIND_OPTS); - HRESULT GetRunningObjectTable(IRunningObjectTable**); - HRESULT RegisterObjectParam(LPOLESTR, IUnknown*); - HRESULT GetObjectParam(LPOLESTR, IUnknown**); - HRESULT EnumObjectParam(IEnumString**); - HRESULT RevokeObjectParam(LPOLESTR); -} - -interface IMoniker: IPersistStream { - HRESULT BindToObject(IBindCtx*, IMoniker*, REFIID, PVOID*); - HRESULT BindToStorage(IBindCtx*, IMoniker*, REFIID, PVOID*); - HRESULT Reduce(IBindCtx*, DWORD, IMoniker**, IMoniker**); - HRESULT ComposeWith(IMoniker*, BOOL, IMoniker**); - HRESULT Enum(BOOL, IEnumMoniker**); - HRESULT IsEqual(IMoniker*); - HRESULT Hash(PDWORD); - HRESULT IsRunning(IBindCtx*, IMoniker*, IMoniker*); - HRESULT GetTimeOfLastChange(IBindCtx*, IMoniker*, LPFILETIME); - HRESULT Inverse(IMoniker**); - HRESULT CommonPrefixWith(IMoniker*, IMoniker**); - HRESULT RelativePathTo(IMoniker*, IMoniker**); - HRESULT GetDisplayName(IBindCtx*, IMoniker*, LPOLESTR*); - HRESULT ParseDisplayName(IBindCtx*, IMoniker*, LPOLESTR, ULONG*, IMoniker**); - HRESULT IsSystemMoniker(PDWORD); -} - -interface IPersistStorage : IPersist -{ - HRESULT IsDirty(); - HRESULT InitNew(LPSTORAGE); - HRESULT Load(LPSTORAGE); - HRESULT Save(LPSTORAGE, BOOL); - HRESULT SaveCompleted(LPSTORAGE); - HRESULT HandsOffStorage(); -} - -interface IPersistFile : IPersist -{ - HRESULT IsDirty(); - HRESULT Load(LPCOLESTR, DWORD); - HRESULT Save(LPCOLESTR, BOOL); - HRESULT SaveCompleted(LPCOLESTR); - HRESULT GetCurFile(LPOLESTR*); -} - -interface IAdviseSink : IUnknown { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - void OnDataChange(FORMATETC*, STGMEDIUM*); - void OnViewChange(DWORD, LONG); - void OnRename(IMoniker*); - void OnSave(); - void OnClose(); -} - -interface IAdviseSink2 : IAdviseSink -{ - void OnLinkSrcChange(IMoniker*); -} - -interface IDataObject : IUnknown { - HRESULT GetData(FORMATETC*, STGMEDIUM*); - HRESULT GetDataHere(FORMATETC*, STGMEDIUM*); - HRESULT QueryGetData(FORMATETC*); - HRESULT GetCanonicalFormatEtc(FORMATETC*, FORMATETC*); - HRESULT SetData(FORMATETC*, STGMEDIUM*, BOOL); - HRESULT EnumFormatEtc(DWORD, IEnumFORMATETC**); - HRESULT DAdvise(FORMATETC*, DWORD, IAdviseSink*, PDWORD); - HRESULT DUnadvise(DWORD); - HRESULT EnumDAdvise(IEnumSTATDATA**); -} - -interface IDataAdviseHolder : IUnknown { - HRESULT Advise(IDataObject*, FORMATETC*, DWORD, IAdviseSink*, PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(IEnumSTATDATA**); - HRESULT SendOnDataChange(IDataObject*, DWORD, DWORD); -} - -interface IStorage : IUnknown { - HRESULT CreateStream(LPCWSTR, DWORD, DWORD, DWORD, IStream*); - HRESULT OpenStream(LPCWSTR, PVOID, DWORD, DWORD, IStream*); - HRESULT CreateStorage(LPCWSTR, DWORD, DWORD, DWORD, IStorage*); - HRESULT OpenStorage(LPCWSTR, IStorage, DWORD, SNB, DWORD, IStorage*); - HRESULT CopyTo(DWORD, IID* , SNB, IStorage); - HRESULT MoveElementTo(LPCWSTR, IStorage, LPCWSTR, DWORD); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT EnumElements(DWORD, PVOID, DWORD, IEnumSTATSTG*); - HRESULT DestroyElement(LPCWSTR); - HRESULT RenameElement(LPCWSTR, LPCWSTR); - HRESULT SetElementTimes(LPCWSTR, FILETIME* , FILETIME* , FILETIME* ); - HRESULT SetClass(REFCLSID); - HRESULT SetStateBits(DWORD, DWORD); - HRESULT Stat(STATSTG*, DWORD); -} - -// FIXME: GetClassID from IPersist not there - what to do about it? -interface IRootStorage : IPersist { - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT SwitchToFile(LPOLESTR); -} - -interface IRpcChannelBuffer : IUnknown { - HRESULT GetBuffer(RPCOLEMESSAGE*, REFIID); - HRESULT SendReceive(RPCOLEMESSAGE*, PULONG); - HRESULT FreeBuffer(RPCOLEMESSAGE*); - HRESULT GetDestCtx(PDWORD, PVOID*); - HRESULT IsConnected(); -} - -interface IRpcProxyBuffer : IUnknown { - HRESULT Connect(IRpcChannelBuffer*); - void Disconnect(); -} - -interface IRpcStubBuffer : IUnknown { - HRESULT Connect(LPUNKNOWN); - void Disconnect(); - HRESULT Invoke(RPCOLEMESSAGE*, LPRPCSTUBBUFFER); - LPRPCSTUBBUFFER IsIIDSupported(REFIID); - ULONG CountRefs(); - HRESULT DebugServerQueryInterface(PVOID*); - HRESULT DebugServerRelease(PVOID); -} - -interface IPSFactoryBuffer : IUnknown { - HRESULT CreateProxy(LPUNKNOWN, REFIID, LPRPCPROXYBUFFER*, PVOID*); - HRESULT CreateStub(REFIID, LPUNKNOWN, LPRPCSTUBBUFFER*); -} -alias IPSFactoryBuffer* LPPSFACTORYBUFFER; - -interface ILockBytes : IUnknown { - HRESULT ReadAt(ULARGE_INTEGER, PVOID, ULONG, ULONG*); - HRESULT WriteAt(ULARGE_INTEGER, PCVOID, ULONG, ULONG*); - HRESULT Flush(); - HRESULT SetSize(ULARGE_INTEGER); - HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); - HRESULT Stat(STATSTG*, DWORD); -} - -interface IExternalConnection : IUnknown { - HRESULT AddConnection(DWORD, DWORD); - HRESULT ReleaseConnection(DWORD, DWORD, BOOL); -} - -interface IRunnableObject : IUnknown { - HRESULT GetRunningClass(LPCLSID); - HRESULT Run(LPBC); - BOOL IsRunning(); - HRESULT LockRunning(BOOL, BOOL); - HRESULT SetContainedObject(BOOL); -} - -interface IROTData : IUnknown { - HRESULT GetComparisonData(PVOID, ULONG, PULONG); -} - -interface IChannelHook : IUnknown { - void ClientGetSize(REFGUID, REFIID, PULONG); - void ClientFillBuffer(REFGUID, REFIID, PULONG, PVOID); - void ClientNotify(REFGUID, REFIID, ULONG, PVOID, DWORD, HRESULT); - void ServerNotify(REFGUID, REFIID, ULONG, PVOID, DWORD); - void ServerGetSize(REFGUID, REFIID, HRESULT, PULONG); - void ServerFillBuffer(REFGUID, REFIID, PULONG, PVOID, HRESULT); -} - -interface IPropertyStorage : IUnknown { - HRESULT ReadMultiple(ULONG, PROPSPEC* , PROPVARIANT*); - HRESULT WriteMultiple(ULONG, PROPSPEC* , PROPVARIANT*, PROPID); - HRESULT DeleteMultiple(ULONG, PROPSPEC* ); - HRESULT ReadPropertyNames(ULONG, PROPID* , LPWSTR*); - HRESULT WritePropertyNames(ULONG, PROPID* , LPWSTR* ); - HRESULT DeletePropertyNames(ULONG, PROPID* ); - HRESULT SetClass(REFCLSID); - HRESULT Commit(DWORD); - HRESULT Revert(); - HRESULT Enum(IEnumSTATPROPSTG**); - HRESULT Stat(STATPROPSTG*); - HRESULT SetTimes(FILETIME* , FILETIME* , FILETIME* ); -} - -interface IPropertySetStorage : IUnknown { - HRESULT Create(REFFMTID, CLSID*, DWORD, DWORD, LPPROPERTYSTORAGE*); - HRESULT Open(REFFMTID, DWORD, LPPROPERTYSTORAGE*); - HRESULT Delete(REFFMTID); - HRESULT Enum(IEnumSTATPROPSETSTG**); -} - -interface IClientSecurity : IUnknown { - HRESULT QueryBlanket(PVOID, PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTH_IDENTITY_HANDLE**, PDWORD*); - HRESULT SetBlanket(PVOID, DWORD, DWORD, LPWSTR, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE*, DWORD); - HRESULT CopyProxy(LPUNKNOWN, LPUNKNOWN*); -} - -interface IServerSecurity : IUnknown { - HRESULT QueryBlanket(PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTHZ_HANDLE*, PDWORD*); - HRESULT ImpersonateClient(); - HRESULT RevertToSelf(); - HRESULT IsImpersonating(); -} - -interface IClassActivator : IUnknown { - HRESULT GetClassObject(REFCLSID, DWORD, LCID, REFIID, PVOID*); -} - -interface IFillLockBytes : IUnknown { - HRESULT FillAppend(void* , ULONG, PULONG); - HRESULT FillAt(ULARGE_INTEGER, void* , ULONG, PULONG); - HRESULT SetFillSize(ULARGE_INTEGER); - HRESULT Terminate(BOOL); -} - -interface IProgressNotify : IUnknown { - HRESULT OnProgress(DWORD, DWORD, BOOL, BOOL); -} - -interface ILayoutStorage : IUnknown { - HRESULT LayoutScript(STORAGELAYOUT*, DWORD, DWORD); - HRESULT BeginMonitor(); - HRESULT EndMonitor(); - HRESULT ReLayoutDocfile(OLECHAR*); -} - -interface IGlobalInterfaceTable : IUnknown { - HRESULT RegisterInterfaceInGlobal(IUnknown*, REFIID, DWORD*); - HRESULT RevokeInterfaceFromGlobal(DWORD); - HRESULT GetInterfaceFromGlobal(DWORD, REFIID, void**); -} - -/+ -// These are probably unnecessary for D. -extern (Windows) { -HRESULT IMarshal_GetUnmarshalClass_Proxy(IMarshal*, REFIID, void*, DWORD, void*, DWORD, CLSID*); -void IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_GetMarshalSizeMax_Proxy(IMarshal*, REFIID, void*, DWORD, void*, DWORD, DWORD*); -void IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_MarshalInterface_Proxy(IMarshal*, IStream*, REFIID, void*, DWORD, void*, DWORD); -void IMarshal_MarshalInterface_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_UnmarshalInterface_Proxy(IMarshal*, IStream*, REFIID, void**); -void IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_ReleaseMarshalData_Proxy(IMarshal*, IStream*); -void IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMarshal_DisconnectObject_Proxy(IMarshal*, DWORD); -void IMarshal_DisconnectObject_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void* IMalloc_Alloc_Proxy(IMalloc*, ULONG); -void IMalloc_Alloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void* IMalloc_Realloc_Proxy(IMalloc*, void*, ULONG); -void IMalloc_Realloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IMalloc_Free_Proxy(IMalloc*, void*); -void IMalloc_Free_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -ULONG IMalloc_GetSize_Proxy(IMalloc*, void*); -void IMalloc_GetSize_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -int IMalloc_DidAlloc_Proxy(IMalloc*, void*); -void IMalloc_DidAlloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IMalloc_HeapMinimize_Proxy(IMalloc*); -void IMalloc_HeapMinimize_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -ULONG IMallocSpy_PreAlloc_Proxy(IMallocSpy*, ULONG cbRequest); -void IMallocSpy_PreAlloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PostAlloc_Proxy(IMallocSpy*, void*); -void IMallocSpy_PostAlloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PreFree_Proxy(IMallocSpy*, void*, BOOL); -void IMallocSpy_PreFree_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IMallocSpy_PostFree_Proxy(IMallocSpy*, BOOL); -void IMallocSpy_PostFree_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -ULONG IMallocSpy_PreRealloc_Proxy(IMallocSpy*, void*, ULONG, void**, BOOL); -void IMallocSpy_PreRealloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PostRealloc_Proxy(IMallocSpy*, void*, BOOL); -void IMallocSpy_PostRealloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PreGetSize_Proxy(IMallocSpy*, void*, BOOL); -void IMallocSpy_PreGetSize_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -ULONG IMallocSpy_PostGetSize_Proxy(IMallocSpy*, ULONG, BOOL); -void IMallocSpy_PostGetSize_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void* IMallocSpy_PreDidAlloc_Proxy(IMallocSpy*, void*, BOOL); -void IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -int IMallocSpy_PostDidAlloc_Proxy(IMallocSpy*, void*, BOOL, int); -void IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy* ); -void IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy*); -void IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo*, DWORD, void*, CLSID*); -void IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -DWORD IExternalConnection_AddConnection_Proxy(IExternalConnection*, DWORD, DWORD); -void IExternalConnection_AddConnection_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -DWORD IExternalConnection_ReleaseConnection_Proxy(IExternalConnection*, DWORD, DWORD, BOOL); -void IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumUnknown_RemoteNext_Proxy(IEnumUnknown*, ULONG, IUnknown**, ULONG*); -void IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumUnknown_Skip_Proxy(IEnumUnknown*, ULONG); -void IEnumUnknown_Skip_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumUnknown_Reset_Proxy(IEnumUnknown* ); -void IEnumUnknown_Reset_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumUnknown_Clone_Proxy(IEnumUnknown*, IEnumUnknown**); -void IEnumUnknown_Clone_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_RegisterObjectBound_Proxy(IBindCtx*, IUnknown*punk); -void IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer*, IRpcChannelBuffer*_pRpcChannelBuffer, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_RevokeObjectBound_Proxy(IBindCtx*, IUnknown*punk); -void IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx*); -void IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_SetBindOptions_Proxy(IBindCtx*, BIND_OPTS*); -void IBindCtx_SetBindOptions_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_GetBindOptions_Proxy(IBindCtx*, BIND_OPTS*pbindopts); -void IBindCtx_GetBindOptions_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_GetRunningObjectTable_Proxy(IBindCtx*, IRunningObjectTable**); -void IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_RegisterObjectParam_Proxy(IBindCtx*, LPCSTR, IUnknown*); -void IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_GetObjectParam_Proxy(IBindCtx*, LPCSTR, IUnknown**); -void IBindCtx_GetObjectParam_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_EnumObjectParam_Proxy(IBindCtx*, IEnumString**); -void IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IBindCtx_RevokeObjectParam_Proxy(IBindCtx*, LPCSTR); -void IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumMoniker_RemoteNext_Proxy(IEnumMoniker*, ULONG, IMoniker**, ULONG*); -void IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumMoniker_Skip_Proxy(IEnumMoniker*, ULONG); -void IEnumMoniker_Skip_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumMoniker_Reset_Proxy(IEnumMoniker*); -void IEnumMoniker_Reset_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumMoniker_Clone_Proxy(IEnumMoniker*, IEnumMoniker**); -void IEnumMoniker_Clone_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunnableObject_GetRunningClass_Proxy(IRunnableObject*, LPCLSID); -void IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunnableObject_Run_Proxy(IRunnableObject*, LPBINDCTX); -void IRunnableObject_Run_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -BOOL IRunnableObject_IsRunning_Proxy(IRunnableObject*); -void IRunnableObject_IsRunning_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunnableObject_LockRunning_Proxy(IRunnableObject*, BOOL, BOOL); -void IRunnableObject_LockRunning_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunnableObject_SetContainedObject_Proxy(IRunnableObject*, BOOL); -void IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_Register_Proxy(IRunningObjectTable*, DWORD, IUnknown*, IMoniker*, DWORD*); -void IRunningObjectTable_Register_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_Revoke_Proxy(IRunningObjectTable*, DWORD); -void IRunningObjectTable_Revoke_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable*, IMoniker*); -void IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_GetObject_Proxy(IRunningObjectTable*, IMoniker*, IUnknown**); -void IRunningObjectTable_GetObject_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable*, DWORD, FILETIME*); -void IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable*, IMoniker*, FILETIME*); -void IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable*, IEnumMoniker**); -void IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersist_GetClassID_Proxy(IPersist*, CLSID*); -void IPersist_GetClassID_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStream_IsDirty_Proxy(IPersistStream*); -void IPersistStream_IsDirty_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStream_Load_Proxy(IPersistStream*, IStream*); -void IPersistStream_Load_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStream_Save_Proxy(IPersistStream*, IStream*, BOOL); -void IPersistStream_Save_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStream_GetSizeMax_Proxy(IPersistStream*, ULARGE_INTEGER*); -void IPersistStream_GetSizeMax_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_RemoteBindToObject_Proxy(IMoniker*, IBindCtx*, IMoniker*, REFIID, IUnknown**); -void IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_RemoteBindToStorage_Proxy(IMoniker*, IBindCtx*, IMoniker*, REFIID, IUnknown**); -void IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_Reduce_Proxy(IMoniker*, IBindCtx*, DWORD, IMoniker**, IMoniker**); -void IMoniker_Reduce_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_ComposeWith_Proxy(IMoniker*, IMoniker*, BOOL, IMoniker**); -void IMoniker_ComposeWith_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_Enum_Proxy(IMoniker*, BOOL, IEnumMoniker**); -void IMoniker_Enum_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_IsEqual_Proxy(IMoniker*, IMoniker*); -void IMoniker_IsEqual_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_Hash_Proxy(IMoniker*, DWORD*); -void IMoniker_Hash_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_IsRunning_Proxy(IMoniker*, IBindCtx*, IMoniker*, IMoniker*); -void IMoniker_IsRunning_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_GetTimeOfLastChange_Proxy(IMoniker*, IBindCtx*, IMoniker*, FILETIME*); -void IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_Inverse_Proxy(IMoniker*, IMoniker**); -void IMoniker_Inverse_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_CommonPrefixWith_Proxy(IMoniker*, IMoniker*, IMoniker**); -void IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_RelativePathTo_Proxy(IMoniker*, IMoniker*, IMoniker**); -void IMoniker_RelativePathTo_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_GetDisplayName_Proxy(IMoniker*, IBindCtx*, IMoniker*, LPCSTR*); -void IMoniker_GetDisplayName_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_ParseDisplayName_Proxy(IMoniker*, IBindCtx*, IMoniker*, LPCSTR, ULONG*, IMoniker**); -void IMoniker_ParseDisplayName_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IMoniker_IsSystemMoniker_Proxy(IMoniker*, DWORD*); -void IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IROTData_GetComparisonData_Proxy(IROTData*, BYTE*, ULONG cbMax, ULONG*); -void IROTData_GetComparisonData_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumString_RemoteNext_Proxy(IEnumString*, ULONG, LPCSTR*rgelt, ULONG*); -void IEnumString_RemoteNext_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumString_Skip_Proxy(IEnumString*, ULONG); -void IEnumString_Skip_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumString_Reset_Proxy(IEnumString*); -void IEnumString_Reset_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumString_Clone_Proxy(IEnumString*, IEnumString**); -void IEnumString_Clone_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_RemoteRead_Proxy(IStream*, BYTE*, ULONG, ULONG*); -void IStream_RemoteRead_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_RemoteWrite_Proxy(IStream*, BYTE*pv, ULONG, ULONG*); -void IStream_RemoteWrite_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_RemoteSeek_Proxy(IStream*, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); -void IStream_RemoteSeek_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_SetSize_Proxy(IStream*, ULARGE_INTEGER); -void IStream_SetSize_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_RemoteCopyTo_Proxy(IStream*, IStream*, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); -void IStream_RemoteCopyTo_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_Commit_Proxy(IStream*, DWORD); -void IStream_Commit_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_Revert_Proxy(IStream*); -void IStream_Revert_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_LockRegion_Proxy(IStream*, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); -void IStream_LockRegion_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_UnlockRegion_Proxy(IStream*, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); -void IStream_UnlockRegion_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_Stat_Proxy(IStream*, STATSTG*, DWORD); -void IStream_Stat_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStream_Clone_Proxy(IStream*, IStream**); -void IStream_Clone_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG*, ULONG, STATSTG*, ULONG*); -void IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG*, ULONG celt); -void IEnumSTATSTG_Skip_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG*); -void IEnumSTATSTG_Reset_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG*, IEnumSTATSTG**); -void IEnumSTATSTG_Clone_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_CreateStream_Proxy(IStorage*, OLECHAR*, DWORD, DWORD, DWORD, IStream**); -void IStorage_CreateStream_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_RemoteOpenStream_Proxy(IStorage*, CPtr!(OLECHAR), uint, BYTE*, DWORD, DWORD, IStream**); -void IStorage_RemoteOpenStream_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_CreateStorage_Proxy(IStorage*, OLECHAR*, DWORD, DWORD, DWORD, IStorage**); -void IStorage_CreateStorage_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_OpenStorage_Proxy(IStorage*, OLECHAR*, IStorage*, DWORD, SNB, DWORD, IStorage**); -void IStorage_OpenStorage_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_CopyTo_Proxy(IStorage*, DWORD, CPtr!(IID), SNB, IStorage*); -void IStorage_CopyTo_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_MoveElementTo_Proxy(IStorage*, CPtr!(OLECHAR), IStorage*, CPtr!(OLECHAR), DWORD); -void IStorage_MoveElementTo_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_Commit_Proxy(IStorage*, DWORD); -void IStorage_Commit_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_Revert_Proxy(IStorage*); -void IStorage_Revert_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_RemoteEnumElements_Proxy(IStorage*, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG**); -void IStorage_RemoteEnumElements_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_DestroyElement_Proxy(IStorage*, OLECHAR*); -void IStorage_DestroyElement_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_RenameElement_Proxy(IStorage*, CPtr!(OLECHAR), CPtr!(OLECHAR)); -void IStorage_RenameElement_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_SetElementTimes_Proxy(IStorage*, CPtr!(OLECHAR), CPtr!(FILETIME), CPtr!(FILETIME), CPtr!(FILETIME)); -void IStorage_SetElementTimes_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_SetClass_Proxy(IStorage*, REFCLSID); -void IStorage_SetClass_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_SetStateBits_Proxy(IStorage*, DWORD, DWORD); -void IStorage_SetStateBits_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IStorage_Stat_Proxy(IStorage*, STATSTG*, DWORD); -void IStorage_Stat_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_IsDirty_Proxy(IPersistFile*); -void IPersistFile_IsDirty_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_Load_Proxy(IPersistFile*, LPCOLESTR, DWORD); -void IPersistFile_Load_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_Save_Proxy(IPersistFile*, LPCOLESTR pszFileName, BOOL); -void IPersistFile_Save_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_SaveCompleted_Proxy(IPersistFile*, LPCOLESTR); -void IPersistFile_SaveCompleted_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistFile_GetCurFile_Proxy(IPersistFile*, LPCSTR*); -void IPersistFile_GetCurFile_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_IsDirty_Proxy(IPersistStorage*); -void IPersistStorage_IsDirty_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_InitNew_Proxy(IPersistStorage*, IStorage*); -void IPersistStorage_InitNew_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_Load_Proxy(IPersistStorage*, IStorage*); -void IPersistStorage_Load_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_Save_Proxy(IPersistStorage*, IStorage*, BOOL); -void IPersistStorage_Save_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_SaveCompleted_Proxy(IPersistStorage*, IStorage*); -void IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPersistStorage_HandsOffStorage_Proxy(IPersistStorage*); -void IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_RemoteReadAt_Proxy(ILockBytes*, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); -void ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_RemoteWriteAt_Proxy(ILockBytes*, ULARGE_INTEGER, BYTE*pv, ULONG, ULONG*); -void ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_Flush_Proxy(ILockBytes*); -void ILockBytes_Flush_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_SetSize_Proxy(ILockBytes*, ULARGE_INTEGER); -void ILockBytes_SetSize_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_LockRegion_Proxy(ILockBytes*, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); -void ILockBytes_LockRegion_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_UnlockRegion_Proxy(ILockBytes*, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); -void ILockBytes_UnlockRegion_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT ILockBytes_Stat_Proxy(ILockBytes*, STATSTG*, DWORD); -void ILockBytes_Stat_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC*, ULONG, FORMATETC*, ULONG*); -void IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC*, ULONG); -void IEnumFORMATETC_Skip_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC*); -void IEnumFORMATETC_Reset_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC*, IEnumFORMATETC**); -void IEnumFORMATETC_Clone_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumFORMATETC_Next_Proxy(IEnumFORMATETC*, ULONG, FORMATETC*, ULONG*); -HRESULT IEnumFORMATETC_Next_Stub(IEnumFORMATETC*, ULONG, FORMATETC*, ULONG*); -HRESULT IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA*, ULONG, STATDATA*, ULONG*); -void IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA*, ULONG); -void IEnumSTATDATA_Skip_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA*); -void IEnumSTATDATA_Reset_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA*, IEnumSTATDATA**); -void IEnumSTATDATA_Clone_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IEnumSTATDATA_Next_Proxy(IEnumSTATDATA*, ULONG, STATDATA*, ULONG*); -HRESULT IEnumSTATDATA_Next_Stub(IEnumSTATDATA*, ULONG, STATDATA*, ULONG*); -HRESULT IRootStorage_SwitchToFile_Proxy(IRootStorage*, LPCSTR); -void IRootStorage_SwitchToFile_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink*, FORMATETC*, RemSTGMEDIUM*); -void IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink*, DWORD, LONG); -void IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IAdviseSink_RemoteOnRename_Proxy(IAdviseSink*, IMoniker*); -void IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IAdviseSink_RemoteOnSave_Proxy(IAdviseSink*); -void IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IAdviseSink_RemoteOnClose_Proxy(IAdviseSink*); -void IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IAdviseSink_OnDataChange_Proxy(IAdviseSink*, FORMATETC*, STGMEDIUM*); -void IAdviseSink_OnDataChange_Stub(IAdviseSink*, FORMATETC*, RemSTGMEDIUM*); -void IAdviseSink_OnViewChange_Proxy(IAdviseSink*, DWORD, LONG); -void IAdviseSink_OnViewChange_Stub(IAdviseSink*, DWORD, LONG); -void IAdviseSink_OnRename_Proxy(IAdviseSink*, IMoniker*); -void IAdviseSink_OnRename_Stub(IAdviseSink*, IMoniker*); -void IAdviseSink_OnSave_Proxy(IAdviseSink*); -void IAdviseSink_OnSave_Stub(IAdviseSink*); -void IAdviseSink_OnClose_Proxy(IAdviseSink*); -HRESULT IAdviseSink_OnClose_Stub(IAdviseSink*); -void IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2*, IMoniker*); -void IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2*, IMoniker*); -void IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2*, IMoniker*); -HRESULT IDataObject_RemoteGetData_Proxy(IDataObject*, FORMATETC*, RemSTGMEDIUM**); -void IDataObject_RemoteGetData_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_RemoteGetDataHere_Proxy(IDataObject*, FORMATETC*, RemSTGMEDIUM**); -void IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_QueryGetData_Proxy(IDataObject*, FORMATETC*); -void IDataObject_QueryGetData_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject*, FORMATETC*, FORMATETC*); -void IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_RemoteSetData_Proxy(IDataObject*, FORMATETC*, RemSTGMEDIUM*, BOOL); -void IDataObject_RemoteSetData_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_EnumFormatEtc_Proxy(IDataObject*, DWORD, IEnumFORMATETC**); -void IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_DAdvise_Proxy(IDataObject*, FORMATETC*, DWORD, IAdviseSink*, DWORD*); -void IDataObject_DAdvise_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_DUnadvise_Proxy(IDataObject*, DWORD); -void IDataObject_DUnadvise_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_EnumDAdvise_Proxy(IDataObject*, IEnumSTATDATA**); -void IDataObject_EnumDAdvise_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataObject_GetData_Proxy(IDataObject*, FORMATETC*, STGMEDIUM*); -HRESULT IDataObject_GetData_Stub(IDataObject*, FORMATETC*, RemSTGMEDIUM**); -HRESULT IDataObject_GetDataHere_Proxy(IDataObject*, FORMATETC*, STGMEDIUM*); -HRESULT IDataObject_GetDataHere_Stub(IDataObject*, FORMATETC*, RemSTGMEDIUM**); -HRESULT IDataObject_SetData_Proxy(IDataObject*, FORMATETC*, STGMEDIUM*, BOOL); -HRESULT IDataObject_SetData_Stub(IDataObject*, FORMATETC*, RemSTGMEDIUM*, BOOL); -HRESULT IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder*, IDataObject*, FORMATETC*, DWORD, IAdviseSink*, DWORD*); -void IDataAdviseHolder_Advise_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder*, DWORD); -void IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder*, IEnumSTATDATA**); -void IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder*, IDataObject*, DWORD, DWORD); -void IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -DWORD IMessageFilter_HandleInComingCall_Proxy(IMessageFilter*, DWORD, HTASK, DWORD, LPINTERFACEINFO); -void IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -DWORD IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter*, HTASK, DWORD, DWORD); -void IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -DWORD IMessageFilter_MessagePending_Proxy(IMessageFilter*, HTASK, DWORD, DWORD); -void IMessageFilter_MessagePending_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer*, RPCOLEMESSAGE*, REFIID); -void IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer*, RPCOLEMESSAGE*, ULONG*); -void IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer*, RPCOLEMESSAGE*); -void IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer*, DWORD*, void**); -void IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer*); -void IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer*, IRpcChannelBuffer*pRpcChannelBuffer); -void IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer*); -void IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer*, IUnknown*); -void IRpcStubBuffer_Connect_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer*); -void IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer*, RPCOLEMESSAGE*, IRpcChannelBuffer*); -void IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -IRpcStubBuffer*IRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer*, REFIID); -void IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -ULONG IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer*); -void IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer*, void**); -void IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer*, void*); -void IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer*, IUnknown*, REFIID, IRpcProxyBuffer**, void**); -void IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -HRESULT IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer*, REFIID, IUnknown*, IRpcStubBuffer**); -void IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer*, IRpcChannelBuffer*, PRPC_MESSAGE, PDWORD); -void SNB_to_xmit(SNB*, RemSNB**); -void SNB_from_xmit(RemSNB*, SNB*); -void SNB_free_inst(SNB*); -void SNB_free_xmit(RemSNB*); -HRESULT IEnumUnknown_Next_Proxy(IEnumUnknown*, ULONG, IUnknown**, ULONG*); -HRESULT IEnumUnknown_Next_Stub(IEnumUnknown*, ULONG, IUnknown**, ULONG*); -HRESULT IEnumMoniker_Next_Proxy(IEnumMoniker*, ULONG, IMoniker**, ULONG*); -HRESULT IEnumMoniker_Next_Stub(IEnumMoniker*, ULONG, IMoniker**, ULONG*); -HRESULT IMoniker_BindToObject_Proxy(IMoniker*, IBindCtx*, IMoniker*, REFIID, void**); -HRESULT IMoniker_BindToObject_Stub(IMoniker*, IBindCtx*, IMoniker*, REFIID, IUnknown**); -HRESULT IMoniker_BindToStorage_Proxy(IMoniker*, IBindCtx*, IMoniker*, REFIID, void**); -HRESULT IMoniker_BindToStorage_Stub(IMoniker*, IBindCtx*, IMoniker*, REFIID, IUnknown**); -HRESULT IEnumString_Next_Proxy(IEnumString*, ULONG, LPCSTR*, ULONG*); -HRESULT IEnumString_Next_Stub(IEnumString*, ULONG, LPCSTR*, ULONG*); -HRESULT IStream_Read_Proxy(IStream*, void*, ULONG, ULONG*); -HRESULT IStream_Read_Stub(IStream*, BYTE*, ULONG, ULONG*); -HRESULT IStream_Write_Proxy(IStream*, void*, ULONG, ULONG*); -HRESULT IStream_Write_Stub(IStream*, BYTE*, ULONG, ULONG*); -HRESULT IStream_Seek_Proxy(IStream*, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); -HRESULT IStream_Seek_Stub(IStream*, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); -HRESULT IStream_CopyTo_Proxy(IStream*, IStream*, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); -HRESULT IStream_CopyTo_Stub(IStream*, IStream*, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); -HRESULT IEnumSTATSTG_Next_Proxy(IEnumSTATSTG*, ULONG, STATSTG*, ULONG*); -HRESULT IEnumSTATSTG_Next_Stub(IEnumSTATSTG*, ULONG, STATSTG*, ULONG*); -HRESULT IStorage_OpenStream_Proxy(IStorage*, OLECHAR*, void*, DWORD, DWORD, IStream**); -HRESULT IStorage_OpenStream_Stub(IStorage*, OLECHAR*, uint, BYTE*, DWORD, DWORD, IStream** ); -HRESULT IStorage_EnumElements_Proxy(IStorage*, DWORD, void*, DWORD, IEnumSTATSTG**); -HRESULT IStorage_EnumElements_Stub(IStorage*, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG**); -HRESULT ILockBytes_ReadAt_Proxy(ILockBytes*, ULARGE_INTEGER, void*, ULONG, ULONG*); -HRESULT ILockBytes_ReadAt_Stub(ILockBytes*, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); -HRESULT ILockBytes_WriteAt_Proxy(ILockBytes*, ULARGE_INTEGER, CPtr!(void), ULONG, ULONG*); -HRESULT ILockBytes_WriteAt_Stub(ILockBytes*, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); -} -+/ +/***********************************************************************\ +* objidl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +// TODO (Don): +// # why is "alias IPSFactoryBuffer* LPPSFACTORYBUFFER;" in this file, +// rather than in objfwd ? +// # do we need the proxies that are defined in this file? +module win32.objidl; + +import win32.unknwn; +import win32.objfwd; +private import win32.windef; +private import win32.basetyps; +private import win32.oleidl; +private import win32.wtypes; +private import win32.winbase; // for FILETIME +private import win32.rpcdce; + +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; +} + +enum STGTY { + STGTY_STORAGE = 1, + STGTY_STREAM, + STGTY_LOCKBYTES, + STGTY_PROPERTY +} + +enum STREAM_SEEK { + STREAM_SEEK_SET, + STREAM_SEEK_CUR, + STREAM_SEEK_END +} + +struct INTERFACEINFO { + LPUNKNOWN pUnk; + IID iid; + WORD wMethod; +} +alias INTERFACEINFO* LPINTERFACEINFO; + +enum CALLTYPE { + CALLTYPE_TOPLEVEL = 1, + CALLTYPE_NESTED, + CALLTYPE_ASYNC, + CALLTYPE_TOPLEVEL_CALLPENDING, + CALLTYPE_ASYNC_CALLPENDING +} + +enum PENDINGTYPE { + PENDINGTYPE_TOPLEVEL = 1, + PENDINGTYPE_NESTED +} + +enum PENDINGMSG { + PENDINGMSG_CANCELCALL = 0, + PENDINGMSG_WAITNOPROCESS, + PENDINGMSG_WAITDEFPROCESS +} + +alias OLECHAR** SNB; + +enum DATADIR { + DATADIR_GET = 1, + DATADIR_SET +} +alias WORD CLIPFORMAT; +alias CLIPFORMAT* LPCLIPFORMAT; + +struct DVTARGETDEVICE { + DWORD tdSize; + WORD tdDriverNameOffset; + WORD tdDeviceNameOffset; + WORD tdPortNameOffset; + WORD tdExtDevmodeOffset; + BYTE[1] tdData; +} + +struct FORMATETC { + CLIPFORMAT cfFormat; + DVTARGETDEVICE* ptd; + DWORD dwAspect; + LONG lindex; + DWORD tymed; +} +alias FORMATETC* LPFORMATETC; + +struct RemSTGMEDIUM { + DWORD tymed; + DWORD dwHandleType; + ULONG pData; + uint pUnkForRelease; + uint cbData; + BYTE[1] data; +} + +struct HLITEM { + ULONG uHLID; + LPWSTR pwzFriendlyName; +} + +struct STATDATA { + FORMATETC formatetc; + DWORD grfAdvf; + IAdviseSink pAdvSink; + DWORD dwConnection; +} + +struct STATPROPSETSTG { + FMTID fmtid; + CLSID clsid; + DWORD grfFlags; + FILETIME mtime; + FILETIME ctime; + FILETIME atime; +} + +enum EXTCONN { + EXTCONN_STRONG = 1, + EXTCONN_WEAK = 2, + EXTCONN_CALLABLE = 4 +} + +struct MULTI_QI { + const(IID)* pIID; + IUnknown pItf; + HRESULT hr; +} + +struct AUTH_IDENTITY { + USHORT* User; + ULONG UserLength; + USHORT* Domain; + ULONG DomainLength; + USHORT* Password; + ULONG PasswordLength; + ULONG Flags; +} + +struct COAUTHINFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + LPWSTR pwszServerPrincName; + DWORD dwAuthnLevel; + DWORD dwImpersonationLevel; + AUTH_IDENTITY* pAuthIdentityData; + DWORD dwCapabilities; +} + +struct COSERVERINFO { + DWORD dwReserved1; + LPWSTR pwszName; + COAUTHINFO* pAuthInfo; + DWORD dwReserved2; +} + +struct BIND_OPTS { + DWORD cbStruct; + DWORD grfFlags; + DWORD grfMode; + DWORD dwTickCountDeadline; +} +alias BIND_OPTS* LPBIND_OPTS; + +struct BIND_OPTS2 { + DWORD cbStruct; + 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 +} + +struct STGMEDIUM { + DWORD tymed; + union { + HBITMAP hBitmap; + PVOID hMetaFilePict; + HENHMETAFILE hEnhMetaFile; + HGLOBAL hGlobal; + LPWSTR lpszFileName; + LPSTREAM pstm; + LPSTORAGE pstg; + } + LPUNKNOWN pUnkForRelease; +} +alias STGMEDIUM* LPSTGMEDIUM; + +enum LOCKTYPE { + LOCK_WRITE = 1, + LOCK_EXCLUSIVE = 2, + LOCK_ONLYONCE = 4 +} + +alias uint RPCOLEDATAREP; + +struct RPCOLEMESSAGE { + PVOID reserved1; + RPCOLEDATAREP dataRepresentation; + PVOID Buffer; + ULONG cbBuffer; + ULONG iMethod; + PVOID[5] reserved2; + ULONG rpcFlags; +} +alias RPCOLEMESSAGE* PRPCOLEMESSAGE; + +enum MKSYS { + MKSYS_NONE, + MKSYS_GENERICCOMPOSITE, + MKSYS_FILEMONIKER, + MKSYS_ANTIMONIKER, + MKSYS_ITEMMONIKER, + MKSYS_POINTERMONIKER +} + +enum MKREDUCE { + MKRREDUCE_ALL, + MKRREDUCE_ONE = 196608, + MKRREDUCE_TOUSER = 131072, + MKRREDUCE_THROUGHUSER = 65536 +} + +struct RemSNB { + uint ulCntStr; + uint ulCntChar; + OLECHAR[1] rgString; +} + +enum ADVF { + ADVF_NODATA = 1, + ADVF_PRIMEFIRST = 2, + ADVF_ONLYONCE = 4, + ADVFCACHE_NOHANDLER = 8, + ADVFCACHE_FORCEBUILTIN = 16, + ADVFCACHE_ONSAVE = 32, + ADVF_DATAONSTOP = 64 +} + +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 +} + +enum SERVERCALL { + SERVERCALL_ISHANDLED, + SERVERCALL_REJECTED, + SERVERCALL_RETRYLATER +} + +struct CAUB { + ULONG cElems; + ubyte* pElems; +} + +struct CAI { + ULONG cElems; + short* pElems; +} + +struct CAUI { + ULONG cElems; + USHORT* pElems; +} + +struct CAL { + ULONG cElems; + int* pElems; +} + +struct CAUL { + ULONG cElems; + ULONG* pElems; +} + +struct CAFLT { + ULONG cElems; + float* pElems; +} + +struct CADBL { + ULONG cElems; + double* pElems; +} + +struct CACY { + ULONG cElems; + CY* pElems; +} + +struct CADATE { + ULONG cElems; + DATE* pElems; +} + +struct CABSTR { + ULONG cElems; + BSTR* pElems; +} + +struct CABSTRBLOB { + ULONG cElems; + BSTRBLOB* pElems; +} + +struct CABOOL { + ULONG cElems; + VARIANT_BOOL* pElems; +} + +struct CASCODE { + ULONG cElems; + SCODE* pElems; +} + +struct CAH { + ULONG cElems; + LARGE_INTEGER* pElems; +} + +struct CAUH { + ULONG cElems; + ULARGE_INTEGER* pElems; +} + +struct CALPSTR { + ULONG cElems; + LPSTR* pElems; +} + +struct CALPWSTR { + ULONG cElems; + LPWSTR* pElems; +} + +struct CAFILETIME { + ULONG cElems; + FILETIME* pElems; +} + +struct CACLIPDATA { + ULONG cElems; + CLIPDATA* pElems; +} + +struct CACLSID { + ULONG cElems; + CLSID* pElems; +} +alias PROPVARIANT* LPPROPVARIANT; + +struct CAPROPVARIANT { + ULONG cElems; + LPPROPVARIANT pElems; +} + +struct PROPVARIANT { + VARTYPE vt; + WORD wReserved1; + WORD wReserved2; + WORD wReserved3; + union { + CHAR cVal; + UCHAR bVal; + short iVal; + USHORT uiVal; + VARIANT_BOOL boolVal; + int lVal; + ULONG ulVal; + float fltVal; + SCODE scode; + LARGE_INTEGER hVal; + ULARGE_INTEGER uhVal; + double dblVal; + CY cyVal; + DATE date; + FILETIME filetime; + CLSID* puuid; + BLOB blob; + CLIPDATA* pclipdata; + LPSTREAM pStream; + LPSTORAGE pStorage; + BSTR bstrVal; + BSTRBLOB bstrblobVal; + LPSTR pszVal; + LPWSTR pwszVal; + CAUB caub; + CAI cai; + CAUI caui; + CABOOL cabool; + CAL cal; + CAUL caul; + CAFLT caflt; + CASCODE cascode; + CAH cah; + CAUH cauh; + CADBL cadbl; + CACY cacy; + CADATE cadate; + CAFILETIME cafiletime; + CACLSID cauuid; + CACLIPDATA caclipdata; + CABSTR cabstr; + CABSTRBLOB cabstrblob; + CALPSTR calpstr; + CALPWSTR calpwstr; + CAPROPVARIANT capropvar; + } +} + +struct PROPSPEC { + ULONG ulKind; + union { + PROPID propid; + LPOLESTR lpwstr; + } +} + +struct STATPROPSTG { + LPOLESTR lpwstrName; + PROPID propid; + VARTYPE vt; +} + +enum PROPSETFLAG { + PROPSETFLAG_DEFAULT, + PROPSETFLAG_NONSIMPLE, + PROPSETFLAG_ANSI, + PROPSETFLAG_UNBUFFERED = 4 +} + +struct STORAGELAYOUT { + DWORD LayoutType; + OLECHAR* pwcsElementName; + LARGE_INTEGER cOffset; + LARGE_INTEGER cBytes; +} + +struct SOLE_AUTHENTICATION_SERVICE { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + OLECHAR* pPrincipalName; + HRESULT hr; +} + +const OLECHAR* COLE_DEFAULT_PRINCIPAL = cast ( OLECHAR* )(-1); + +enum EOLE_AUTHENTICATION_CAPABILITIES { + EOAC_NONE = 0, + EOAC_MUTUAL_AUTH = 0x1, + EOAC_SECURE_REFS = 0x2, + EOAC_ACCESS_CONTROL = 0x4, + EOAC_APPID = 0x8, + EOAC_DYNAMIC = 0x10, + EOAC_STATIC_CLOAKING = 0x20, + EOAC_DYNAMIC_CLOAKING = 0x40, + EOAC_ANY_AUTHORITY = 0x80, + EOAC_MAKE_FULLSIC = 0x100, + EOAC_REQUIRE_FULLSIC = 0x200, + EOAC_AUTO_IMPERSONATE = 0x400, + EOAC_DEFAULT = 0x800, + EOAC_DISABLE_AAA = 0x1000, + EOAC_NO_CUSTOM_MARSHAL = 0x2000 +} + +struct SOLE_AUTHENTICATION_INFO { + DWORD dwAuthnSvc; + DWORD dwAuthzSvc; + void* pAuthInfo; +} + +const void* COLE_DEFAULT_AUTHINFO = cast( void* )(-1 ); + +struct SOLE_AUTHENTICATION_LIST { + DWORD cAuthInfo; + SOLE_AUTHENTICATION_INFO* aAuthInfo; +} + +interface IEnumFORMATETC : IUnknown { + HRESULT Next(ULONG, FORMATETC*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumFORMATETC*); +} + +interface IEnumHLITEM : IUnknown { + HRESULT Next(ULONG, HLITEM*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumHLITEM*); +} + +interface IEnumSTATDATA : IUnknown { + HRESULT Next(ULONG, STATDATA*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATDATA*); +} + +interface IEnumSTATPROPSETSTG : IUnknown { + HRESULT Next(ULONG, STATPROPSETSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATPROPSETSTG*); +} + +interface IEnumSTATPROPSTG : IUnknown { + HRESULT Next(ULONG, STATPROPSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATPROPSTG*); +} + +interface IEnumSTATSTG : IUnknown { + HRESULT Next(ULONG, STATSTG*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumSTATSTG*); +} + +interface IEnumString : IUnknown { + HRESULT Next(ULONG, LPOLESTR*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumString*); +} + +interface IEnumMoniker : IUnknown { + HRESULT Next(ULONG, IMoniker*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumMoniker*); +} + + +interface IEnumUnknown : IUnknown { + HRESULT Next(ULONG, IUnknown*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumUnknown*); +} + +interface ISequentialStream : IUnknown { + HRESULT Read(void*, ULONG, ULONG*); + HRESULT Write(void* , ULONG, ULONG*); +} + +interface IStream : ISequentialStream { + HRESULT Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*); + HRESULT SetSize(ULARGE_INTEGER); + HRESULT CopyTo(IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT Stat(STATSTG*, DWORD); + HRESULT Clone(LPSTREAM*); +} + +interface IMarshal : IUnknown { + HRESULT GetUnmarshalClass(REFIID, PVOID, DWORD, PVOID, DWORD, CLSID*); + HRESULT GetMarshalSizeMax(REFIID, PVOID, DWORD, PVOID, PDWORD, ULONG*); + HRESULT MarshalInterface(IStream, REFIID, PVOID, DWORD, PVOID, DWORD); + HRESULT UnmarshalInterface(IStream, REFIID, void**); + HRESULT ReleaseMarshalData(IStream); + HRESULT DisconnectObject(DWORD); +} + +interface IStdMarshalInfo : IUnknown { + HRESULT GetClassForHandler(DWORD, PVOID, CLSID*); +} + +interface IMalloc : IUnknown { + void* Alloc(ULONG); + void* Realloc(void*, ULONG); + void Free(void*); + ULONG GetSize(void*); + int DidAlloc(void*); + void HeapMinimize(); +} + +interface IMallocSpy : IUnknown { + ULONG PreAlloc(ULONG); + void* PostAlloc(void*); + void* PreFree(void*, BOOL); + void PostFree(BOOL); + ULONG PreRealloc(void*, ULONG, void**, BOOL); + void* PostRealloc(void*, BOOL); + void* PreGetSize(void*, BOOL); + ULONG PostGetSize(ULONG, BOOL); + void* PreDidAlloc(void*, BOOL); + int PostDidAlloc(void*, BOOL, int); + void PreHeapMinimize(); + void PostHeapMinimize(); +} + +interface IMessageFilter : IUnknown { + DWORD HandleInComingCall(DWORD, HTASK, DWORD, LPINTERFACEINFO); + DWORD RetryRejectedCall(HTASK, DWORD, DWORD); + DWORD MessagePending(HTASK, DWORD, DWORD); +} + + +interface IPersist : IUnknown { + HRESULT GetClassID(CLSID*); +} + +interface IPersistStream : IPersist { + HRESULT IsDirty(); + HRESULT Load(IStream); + HRESULT Save(IStream, BOOL); + HRESULT GetSizeMax(PULARGE_INTEGER); +} + +interface IRunningObjectTable : IUnknown { + HRESULT Register(DWORD, LPUNKNOWN, LPMONIKER, PDWORD); + HRESULT Revoke(DWORD); + HRESULT IsRunning(LPMONIKER); + HRESULT GetObject(LPMONIKER, LPUNKNOWN*); + HRESULT NoteChangeTime(DWORD, LPFILETIME); + HRESULT GetTimeOfLastChange(LPMONIKER, LPFILETIME); + HRESULT EnumRunning(IEnumMoniker*); +} + +interface IBindCtx : IUnknown { + HRESULT RegisterObjectBound(LPUNKNOWN); + HRESULT RevokeObjectBound(LPUNKNOWN); + HRESULT ReleaseBoundObjects(); + HRESULT SetBindOptions(LPBIND_OPTS); + HRESULT GetBindOptions(LPBIND_OPTS); + HRESULT GetRunningObjectTable(IRunningObjectTable*); + HRESULT RegisterObjectParam(LPOLESTR, IUnknown); + HRESULT GetObjectParam(LPOLESTR, IUnknown*); + HRESULT EnumObjectParam(IEnumString*); + HRESULT RevokeObjectParam(LPOLESTR); +} + +interface IMoniker: IPersistStream { + HRESULT BindToObject(IBindCtx, IMoniker, REFIID, PVOID*); + HRESULT BindToStorage(IBindCtx, IMoniker, REFIID, PVOID*); + HRESULT Reduce(IBindCtx, DWORD, IMoniker*, IMoniker*); + HRESULT ComposeWith(IMoniker, BOOL, IMoniker*); + HRESULT Enum(BOOL, IEnumMoniker*); + HRESULT IsEqual(IMoniker); + HRESULT Hash(PDWORD); + HRESULT IsRunning(IBindCtx, IMoniker, IMoniker); + HRESULT GetTimeOfLastChange(IBindCtx, IMoniker, LPFILETIME); + HRESULT Inverse(IMoniker*); + HRESULT CommonPrefixWith(IMoniker, IMoniker*); + HRESULT RelativePathTo(IMoniker, IMoniker*); + HRESULT GetDisplayName(IBindCtx, IMoniker, LPOLESTR*); + HRESULT ParseDisplayName(IBindCtx, IMoniker, LPOLESTR, ULONG*, IMoniker*); + HRESULT IsSystemMoniker(PDWORD); +} + +interface IPersistStorage : IPersist +{ + HRESULT IsDirty(); + HRESULT InitNew(LPSTORAGE); + HRESULT Load(LPSTORAGE); + HRESULT Save(LPSTORAGE, BOOL); + HRESULT SaveCompleted(LPSTORAGE); + HRESULT HandsOffStorage(); +} + +interface IPersistFile : IPersist +{ + HRESULT IsDirty(); + HRESULT Load(LPCOLESTR, DWORD); + HRESULT Save(LPCOLESTR, BOOL); + HRESULT SaveCompleted(LPCOLESTR); + HRESULT GetCurFile(LPOLESTR*); +} + +interface IAdviseSink : IUnknown { + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + void OnDataChange(FORMATETC*, STGMEDIUM*); + void OnViewChange(DWORD, LONG); + void OnRename(IMoniker); + void OnSave(); + void OnClose(); +} + +interface IAdviseSink2 : IAdviseSink +{ + void OnLinkSrcChange(IMoniker); +} + +interface IDataObject : IUnknown { + HRESULT GetData(FORMATETC*, STGMEDIUM*); + HRESULT GetDataHere(FORMATETC*, STGMEDIUM*); + HRESULT QueryGetData(FORMATETC*); + HRESULT GetCanonicalFormatEtc(FORMATETC*, FORMATETC*); + HRESULT SetData(FORMATETC*, STGMEDIUM*, BOOL); + HRESULT EnumFormatEtc(DWORD, IEnumFORMATETC*); + HRESULT DAdvise(FORMATETC*, DWORD, IAdviseSink, PDWORD); + HRESULT DUnadvise(DWORD); + HRESULT EnumDAdvise(IEnumSTATDATA*); +} + +interface IDataAdviseHolder : IUnknown { + HRESULT Advise(IDataObject, FORMATETC*, DWORD, IAdviseSink, PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(IEnumSTATDATA*); + HRESULT SendOnDataChange(IDataObject, DWORD, DWORD); +} + +interface IStorage : IUnknown { + HRESULT CreateStream(LPCWSTR, DWORD, DWORD, DWORD, IStream); + HRESULT OpenStream(LPCWSTR, PVOID, DWORD, DWORD, IStream); + HRESULT CreateStorage(LPCWSTR, DWORD, DWORD, DWORD, IStorage); + HRESULT OpenStorage(LPCWSTR, IStorage, DWORD, SNB, DWORD, IStorage); + HRESULT CopyTo(DWORD, IID* , SNB, IStorage); + HRESULT MoveElementTo(LPCWSTR, IStorage, LPCWSTR, DWORD); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT EnumElements(DWORD, PVOID, DWORD, IEnumSTATSTG); + HRESULT DestroyElement(LPCWSTR); + HRESULT RenameElement(LPCWSTR, LPCWSTR); + HRESULT SetElementTimes(LPCWSTR, FILETIME* , FILETIME* , FILETIME* ); + HRESULT SetClass(REFCLSID); + HRESULT SetStateBits(DWORD, DWORD); + HRESULT Stat(STATSTG*, DWORD); +} + +// FIXME: GetClassID from IPersist not there - what to do about it? +interface IRootStorage : IPersist { + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT SwitchToFile(LPOLESTR); +} + +interface IRpcChannelBuffer : IUnknown { + HRESULT GetBuffer(RPCOLEMESSAGE*, REFIID); + HRESULT SendReceive(RPCOLEMESSAGE*, PULONG); + HRESULT FreeBuffer(RPCOLEMESSAGE*); + HRESULT GetDestCtx(PDWORD, PVOID*); + HRESULT IsConnected(); +} + +interface IRpcProxyBuffer : IUnknown { + HRESULT Connect(IRpcChannelBuffer); + void Disconnect(); +} + +interface IRpcStubBuffer : IUnknown { + HRESULT Connect(LPUNKNOWN); + void Disconnect(); + HRESULT Invoke(RPCOLEMESSAGE*, LPRPCSTUBBUFFER); + LPRPCSTUBBUFFER IsIIDSupported(REFIID); + ULONG CountRefs(); + HRESULT DebugServerQueryInterface(PVOID*); + HRESULT DebugServerRelease(PVOID); +} + +interface IPSFactoryBuffer : IUnknown { + HRESULT CreateProxy(LPUNKNOWN, REFIID, LPRPCPROXYBUFFER*, PVOID*); + HRESULT CreateStub(REFIID, LPUNKNOWN, LPRPCSTUBBUFFER*); +} +alias IPSFactoryBuffer LPPSFACTORYBUFFER; + +interface ILockBytes : IUnknown { + HRESULT ReadAt(ULARGE_INTEGER, PVOID, ULONG, ULONG*); + HRESULT WriteAt(ULARGE_INTEGER, PCVOID, ULONG, ULONG*); + HRESULT Flush(); + HRESULT SetSize(ULARGE_INTEGER); + HRESULT LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); + HRESULT Stat(STATSTG*, DWORD); +} + +interface IExternalConnection : IUnknown { + HRESULT AddConnection(DWORD, DWORD); + HRESULT ReleaseConnection(DWORD, DWORD, BOOL); +} + +interface IRunnableObject : IUnknown { + HRESULT GetRunningClass(LPCLSID); + HRESULT Run(LPBC); + BOOL IsRunning(); + HRESULT LockRunning(BOOL, BOOL); + HRESULT SetContainedObject(BOOL); +} + +interface IROTData : IUnknown { + HRESULT GetComparisonData(PVOID, ULONG, PULONG); +} + +interface IChannelHook : IUnknown { + void ClientGetSize(REFGUID, REFIID, PULONG); + void ClientFillBuffer(REFGUID, REFIID, PULONG, PVOID); + void ClientNotify(REFGUID, REFIID, ULONG, PVOID, DWORD, HRESULT); + void ServerNotify(REFGUID, REFIID, ULONG, PVOID, DWORD); + void ServerGetSize(REFGUID, REFIID, HRESULT, PULONG); + void ServerFillBuffer(REFGUID, REFIID, PULONG, PVOID, HRESULT); +} + +interface IPropertyStorage : IUnknown { + HRESULT ReadMultiple(ULONG, PROPSPEC* , PROPVARIANT*); + HRESULT WriteMultiple(ULONG, PROPSPEC* , PROPVARIANT*, PROPID); + HRESULT DeleteMultiple(ULONG, PROPSPEC* ); + HRESULT ReadPropertyNames(ULONG, PROPID* , LPWSTR*); + HRESULT WritePropertyNames(ULONG, PROPID* , LPWSTR* ); + HRESULT DeletePropertyNames(ULONG, PROPID* ); + HRESULT SetClass(REFCLSID); + HRESULT Commit(DWORD); + HRESULT Revert(); + HRESULT Enum(IEnumSTATPROPSTG*); + HRESULT Stat(STATPROPSTG*); + HRESULT SetTimes(FILETIME* , FILETIME* , FILETIME* ); +} + +interface IPropertySetStorage : IUnknown { + HRESULT Create(REFFMTID, CLSID*, DWORD, DWORD, LPPROPERTYSTORAGE*); + HRESULT Open(REFFMTID, DWORD, LPPROPERTYSTORAGE*); + HRESULT Delete(REFFMTID); + HRESULT Enum(IEnumSTATPROPSETSTG*); +} + +interface IClientSecurity : IUnknown { + HRESULT QueryBlanket(PVOID, PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTH_IDENTITY_HANDLE**, PDWORD*); + HRESULT SetBlanket(PVOID, DWORD, DWORD, LPWSTR, DWORD, DWORD, RPC_AUTH_IDENTITY_HANDLE*, DWORD); + HRESULT CopyProxy(LPUNKNOWN, LPUNKNOWN*); +} + +interface IServerSecurity : IUnknown { + HRESULT QueryBlanket(PDWORD, PDWORD, OLECHAR**, PDWORD, PDWORD, RPC_AUTHZ_HANDLE*, PDWORD*); + HRESULT ImpersonateClient(); + HRESULT RevertToSelf(); + HRESULT IsImpersonating(); +} + +interface IClassActivator : IUnknown { + HRESULT GetClassObject(REFCLSID, DWORD, LCID, REFIID, PVOID*); +} + +interface IFillLockBytes : IUnknown { + HRESULT FillAppend(void* , ULONG, PULONG); + HRESULT FillAt(ULARGE_INTEGER, void* , ULONG, PULONG); + HRESULT SetFillSize(ULARGE_INTEGER); + HRESULT Terminate(BOOL); +} + +interface IProgressNotify : IUnknown { + HRESULT OnProgress(DWORD, DWORD, BOOL, BOOL); +} + +interface ILayoutStorage : IUnknown { + HRESULT LayoutScript(STORAGELAYOUT*, DWORD, DWORD); + HRESULT BeginMonitor(); + HRESULT EndMonitor(); + HRESULT ReLayoutDocfile(OLECHAR*); +} + +interface IGlobalInterfaceTable : IUnknown { + HRESULT RegisterInterfaceInGlobal(IUnknown, REFIID, DWORD*); + HRESULT RevokeInterfaceFromGlobal(DWORD); + HRESULT GetInterfaceFromGlobal(DWORD, REFIID, void**); +} + +/+ +// These are probably unnecessary for D. +extern (Windows) { +HRESULT IMarshal_GetUnmarshalClass_Proxy(IMarshal, REFIID, void*, DWORD, void*, DWORD, CLSID*); +void IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_GetMarshalSizeMax_Proxy(IMarshal, REFIID, void*, DWORD, void*, DWORD, DWORD*); +void IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_MarshalInterface_Proxy(IMarshal, IStream, REFIID, void*, DWORD, void*, DWORD); +void IMarshal_MarshalInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_UnmarshalInterface_Proxy(IMarshal, IStream, REFIID, void**); +void IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_ReleaseMarshalData_Proxy(IMarshal, IStream); +void IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMarshal_DisconnectObject_Proxy(IMarshal, DWORD); +void IMarshal_DisconnectObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMalloc_Alloc_Proxy(IMalloc, ULONG); +void IMalloc_Alloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMalloc_Realloc_Proxy(IMalloc, void*, ULONG); +void IMalloc_Realloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMalloc_Free_Proxy(IMalloc, void*); +void IMalloc_Free_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMalloc_GetSize_Proxy(IMalloc, void*); +void IMalloc_GetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +int IMalloc_DidAlloc_Proxy(IMalloc, void*); +void IMalloc_DidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMalloc_HeapMinimize_Proxy(IMalloc); +void IMalloc_HeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PreAlloc_Proxy(IMallocSpy, ULONG cbRequest); +void IMallocSpy_PreAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PostAlloc_Proxy(IMallocSpy, void*); +void IMallocSpy_PostAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreFree_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreFree_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PostFree_Proxy(IMallocSpy, BOOL); +void IMallocSpy_PostFree_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PreRealloc_Proxy(IMallocSpy, void*, ULONG, void**, BOOL); +void IMallocSpy_PreRealloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PostRealloc_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PostRealloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreGetSize_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreGetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IMallocSpy_PostGetSize_Proxy(IMallocSpy, ULONG, BOOL); +void IMallocSpy_PostGetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void* IMallocSpy_PreDidAlloc_Proxy(IMallocSpy, void*, BOOL); +void IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +int IMallocSpy_PostDidAlloc_Proxy(IMallocSpy, void*, BOOL, int); +void IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy ); +void IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy); +void IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo, DWORD, void*, CLSID*); +void IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IExternalConnection_AddConnection_Proxy(IExternalConnection, DWORD, DWORD); +void IExternalConnection_AddConnection_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IExternalConnection_ReleaseConnection_Proxy(IExternalConnection, DWORD, DWORD, BOOL); +void IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_RemoteNext_Proxy(IEnumUnknown, ULONG, IUnknown*, ULONG*); +void IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Skip_Proxy(IEnumUnknown, ULONG); +void IEnumUnknown_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Reset_Proxy(IEnumUnknown ); +void IEnumUnknown_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumUnknown_Clone_Proxy(IEnumUnknown, IEnumUnknown*); +void IEnumUnknown_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RegisterObjectBound_Proxy(IBindCtx, IUnknownpunk); +void IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer, IRpcChannelBuffer_pRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RevokeObjectBound_Proxy(IBindCtx, IUnknownpunk); +void IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx); +void IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_SetBindOptions_Proxy(IBindCtx, BIND_OPTS*); +void IBindCtx_SetBindOptions_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetBindOptions_Proxy(IBindCtx, BIND_OPTS*pbindopts); +void IBindCtx_GetBindOptions_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetRunningObjectTable_Proxy(IBindCtx, IRunningObjectTable*); +void IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RegisterObjectParam_Proxy(IBindCtx, LPCSTR, IUnknown); +void IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_GetObjectParam_Proxy(IBindCtx, LPCSTR, IUnknown*); +void IBindCtx_GetObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_EnumObjectParam_Proxy(IBindCtx, IEnumString*); +void IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IBindCtx_RevokeObjectParam_Proxy(IBindCtx, LPCSTR); +void IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_RemoteNext_Proxy(IEnumMoniker, ULONG, IMoniker*, ULONG*); +void IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Skip_Proxy(IEnumMoniker, ULONG); +void IEnumMoniker_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Reset_Proxy(IEnumMoniker); +void IEnumMoniker_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumMoniker_Clone_Proxy(IEnumMoniker, IEnumMoniker*); +void IEnumMoniker_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_GetRunningClass_Proxy(IRunnableObject, LPCLSID); +void IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_Run_Proxy(IRunnableObject, LPBINDCTX); +void IRunnableObject_Run_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +BOOL IRunnableObject_IsRunning_Proxy(IRunnableObject); +void IRunnableObject_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_LockRunning_Proxy(IRunnableObject, BOOL, BOOL); +void IRunnableObject_LockRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunnableObject_SetContainedObject_Proxy(IRunnableObject, BOOL); +void IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_Register_Proxy(IRunningObjectTable, DWORD, IUnknown, IMoniker, DWORD*); +void IRunningObjectTable_Register_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_Revoke_Proxy(IRunningObjectTable, DWORD); +void IRunningObjectTable_Revoke_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable, IMoniker); +void IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_GetObject_Proxy(IRunningObjectTable, IMoniker, IUnknown*); +void IRunningObjectTable_GetObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable, DWORD, FILETIME*); +void IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable, IMoniker, FILETIME*); +void IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable, IEnumMoniker*); +void IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersist_GetClassID_Proxy(IPersist, CLSID*); +void IPersist_GetClassID_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_IsDirty_Proxy(IPersistStream); +void IPersistStream_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_Load_Proxy(IPersistStream, IStream); +void IPersistStream_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_Save_Proxy(IPersistStream, IStream, BOOL); +void IPersistStream_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStream_GetSizeMax_Proxy(IPersistStream, ULARGE_INTEGER*); +void IPersistStream_GetSizeMax_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RemoteBindToObject_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +void IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RemoteBindToStorage_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +void IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Reduce_Proxy(IMoniker, IBindCtx, DWORD, IMoniker*, IMoniker*); +void IMoniker_Reduce_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_ComposeWith_Proxy(IMoniker, IMoniker, BOOL, IMoniker*); +void IMoniker_ComposeWith_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Enum_Proxy(IMoniker, BOOL, IEnumMoniker*); +void IMoniker_Enum_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsEqual_Proxy(IMoniker, IMoniker); +void IMoniker_IsEqual_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Hash_Proxy(IMoniker, DWORD*); +void IMoniker_Hash_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsRunning_Proxy(IMoniker, IBindCtx, IMoniker, IMoniker); +void IMoniker_IsRunning_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_GetTimeOfLastChange_Proxy(IMoniker, IBindCtx, IMoniker, FILETIME*); +void IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_Inverse_Proxy(IMoniker, IMoniker*); +void IMoniker_Inverse_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_CommonPrefixWith_Proxy(IMoniker, IMoniker, IMoniker*); +void IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_RelativePathTo_Proxy(IMoniker, IMoniker, IMoniker*); +void IMoniker_RelativePathTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_GetDisplayName_Proxy(IMoniker, IBindCtx, IMoniker, LPCSTR*); +void IMoniker_GetDisplayName_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_ParseDisplayName_Proxy(IMoniker, IBindCtx, IMoniker, LPCSTR, ULONG*, IMoniker*); +void IMoniker_ParseDisplayName_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IMoniker_IsSystemMoniker_Proxy(IMoniker, DWORD*); +void IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IROTData_GetComparisonData_Proxy(IROTData, BYTE*, ULONG cbMax, ULONG*); +void IROTData_GetComparisonData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_RemoteNext_Proxy(IEnumString, ULONG, LPCSTR*rgelt, ULONG*); +void IEnumString_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Skip_Proxy(IEnumString, ULONG); +void IEnumString_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Reset_Proxy(IEnumString); +void IEnumString_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumString_Clone_Proxy(IEnumString, IEnumString*); +void IEnumString_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteRead_Proxy(IStream, BYTE*, ULONG, ULONG*); +void IStream_RemoteRead_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteWrite_Proxy(IStream, BYTE*pv, ULONG, ULONG*); +void IStream_RemoteWrite_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteSeek_Proxy(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +void IStream_RemoteSeek_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_SetSize_Proxy(IStream, ULARGE_INTEGER); +void IStream_SetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_RemoteCopyTo_Proxy(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +void IStream_RemoteCopyTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Commit_Proxy(IStream, DWORD); +void IStream_Commit_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Revert_Proxy(IStream); +void IStream_Revert_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_LockRegion_Proxy(IStream, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void IStream_LockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_UnlockRegion_Proxy(IStream, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void IStream_UnlockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Stat_Proxy(IStream, STATSTG*, DWORD); +void IStream_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStream_Clone_Proxy(IStream, IStream*); +void IStream_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +void IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG, ULONG celt); +void IEnumSTATSTG_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG); +void IEnumSTATSTG_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG, IEnumSTATSTG*); +void IEnumSTATSTG_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CreateStream_Proxy(IStorage, OLECHAR*, DWORD, DWORD, DWORD, IStream*); +void IStorage_CreateStream_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RemoteOpenStream_Proxy(IStorage, const(OLECHAR)*, uint, BYTE*, DWORD, DWORD, IStream*); +void IStorage_RemoteOpenStream_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CreateStorage_Proxy(IStorage, OLECHAR*, DWORD, DWORD, DWORD, IStorage*); +void IStorage_CreateStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_OpenStorage_Proxy(IStorage, OLECHAR*, IStorage, DWORD, SNB, DWORD, IStorage*); +void IStorage_OpenStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_CopyTo_Proxy(IStorage, DWORD, const(IID)*, SNB, IStorage); +void IStorage_CopyTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_MoveElementTo_Proxy(IStorage, const(OLECHAR)*, IStorage, const(OLECHAR)*, DWORD); +void IStorage_MoveElementTo_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Commit_Proxy(IStorage, DWORD); +void IStorage_Commit_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Revert_Proxy(IStorage); +void IStorage_Revert_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RemoteEnumElements_Proxy(IStorage, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG*); +void IStorage_RemoteEnumElements_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_DestroyElement_Proxy(IStorage, OLECHAR*); +void IStorage_DestroyElement_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_RenameElement_Proxy(IStorage, const(OLECHAR)*, const(OLECHAR)*); +void IStorage_RenameElement_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetElementTimes_Proxy(IStorage, const(OLECHAR)*, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); +void IStorage_SetElementTimes_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetClass_Proxy(IStorage, REFCLSID); +void IStorage_SetClass_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_SetStateBits_Proxy(IStorage, DWORD, DWORD); +void IStorage_SetStateBits_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IStorage_Stat_Proxy(IStorage, STATSTG*, DWORD); +void IStorage_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_IsDirty_Proxy(IPersistFile); +void IPersistFile_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_Load_Proxy(IPersistFile, LPCOLESTR, DWORD); +void IPersistFile_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_Save_Proxy(IPersistFile, LPCOLESTR pszFileName, BOOL); +void IPersistFile_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_SaveCompleted_Proxy(IPersistFile, LPCOLESTR); +void IPersistFile_SaveCompleted_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistFile_GetCurFile_Proxy(IPersistFile, LPCSTR*); +void IPersistFile_GetCurFile_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_IsDirty_Proxy(IPersistStorage); +void IPersistStorage_IsDirty_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_InitNew_Proxy(IPersistStorage, IStorage); +void IPersistStorage_InitNew_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_Load_Proxy(IPersistStorage, IStorage); +void IPersistStorage_Load_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_Save_Proxy(IPersistStorage, IStorage, BOOL); +void IPersistStorage_Save_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_SaveCompleted_Proxy(IPersistStorage, IStorage); +void IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPersistStorage_HandsOffStorage_Proxy(IPersistStorage); +void IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_RemoteReadAt_Proxy(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +void ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_RemoteWriteAt_Proxy(ILockBytes, ULARGE_INTEGER, BYTE*pv, ULONG, ULONG*); +void ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_Flush_Proxy(ILockBytes); +void ILockBytes_Flush_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_SetSize_Proxy(ILockBytes, ULARGE_INTEGER); +void ILockBytes_SetSize_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_LockRegion_Proxy(ILockBytes, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void ILockBytes_LockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_UnlockRegion_Proxy(ILockBytes, ULARGE_INTEGER, ULARGE_INTEGER, DWORD); +void ILockBytes_UnlockRegion_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT ILockBytes_Stat_Proxy(ILockBytes, STATSTG*, DWORD); +void ILockBytes_Stat_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +void IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC, ULONG); +void IEnumFORMATETC_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC); +void IEnumFORMATETC_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC, IEnumFORMATETC*); +void IEnumFORMATETC_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumFORMATETC_Next_Proxy(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +HRESULT IEnumFORMATETC_Next_Stub(IEnumFORMATETC, ULONG, FORMATETC*, ULONG*); +HRESULT IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +void IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA, ULONG); +void IEnumSTATDATA_Skip_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA); +void IEnumSTATDATA_Reset_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA, IEnumSTATDATA*); +void IEnumSTATDATA_Clone_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IEnumSTATDATA_Next_Proxy(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +HRESULT IEnumSTATDATA_Next_Stub(IEnumSTATDATA, ULONG, STATDATA*, ULONG*); +HRESULT IRootStorage_SwitchToFile_Proxy(IRootStorage, LPCSTR); +void IRootStorage_SwitchToFile_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink, FORMATETC*, RemSTGMEDIUM*); +void IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink, DWORD, LONG); +void IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnRename_Proxy(IAdviseSink, IMoniker); +void IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_RemoteOnSave_Proxy(IAdviseSink); +void IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IAdviseSink_RemoteOnClose_Proxy(IAdviseSink); +void IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink_OnDataChange_Proxy(IAdviseSink, FORMATETC*, STGMEDIUM*); +void IAdviseSink_OnDataChange_Stub(IAdviseSink, FORMATETC*, RemSTGMEDIUM*); +void IAdviseSink_OnViewChange_Proxy(IAdviseSink, DWORD, LONG); +void IAdviseSink_OnViewChange_Stub(IAdviseSink, DWORD, LONG); +void IAdviseSink_OnRename_Proxy(IAdviseSink, IMoniker); +void IAdviseSink_OnRename_Stub(IAdviseSink, IMoniker); +void IAdviseSink_OnSave_Proxy(IAdviseSink); +void IAdviseSink_OnSave_Stub(IAdviseSink); +void IAdviseSink_OnClose_Proxy(IAdviseSink); +HRESULT IAdviseSink_OnClose_Stub(IAdviseSink); +void IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2, IMoniker); +void IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2, IMoniker); +void IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2, IMoniker); +HRESULT IDataObject_RemoteGetData_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM**); +void IDataObject_RemoteGetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_RemoteGetDataHere_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM**); +void IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_QueryGetData_Proxy(IDataObject, FORMATETC*); +void IDataObject_QueryGetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject, FORMATETC*, FORMATETC*); +void IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_RemoteSetData_Proxy(IDataObject, FORMATETC*, RemSTGMEDIUM*, BOOL); +void IDataObject_RemoteSetData_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_EnumFormatEtc_Proxy(IDataObject, DWORD, IEnumFORMATETC*); +void IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_DAdvise_Proxy(IDataObject, FORMATETC*, DWORD, IAdviseSink, DWORD*); +void IDataObject_DAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_DUnadvise_Proxy(IDataObject, DWORD); +void IDataObject_DUnadvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_EnumDAdvise_Proxy(IDataObject, IEnumSTATDATA*); +void IDataObject_EnumDAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataObject_GetData_Proxy(IDataObject, FORMATETC*, STGMEDIUM*); +HRESULT IDataObject_GetData_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM**); +HRESULT IDataObject_GetDataHere_Proxy(IDataObject, FORMATETC*, STGMEDIUM*); +HRESULT IDataObject_GetDataHere_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM**); +HRESULT IDataObject_SetData_Proxy(IDataObject, FORMATETC*, STGMEDIUM*, BOOL); +HRESULT IDataObject_SetData_Stub(IDataObject, FORMATETC*, RemSTGMEDIUM*, BOOL); +HRESULT IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder, IDataObject, FORMATETC*, DWORD, IAdviseSink, DWORD*); +void IDataAdviseHolder_Advise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder, DWORD); +void IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder, IEnumSTATDATA*); +void IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder, IDataObject, DWORD, DWORD); +void IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_HandleInComingCall_Proxy(IMessageFilter, DWORD, HTASK, DWORD, LPINTERFACEINFO); +void IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter, HTASK, DWORD, DWORD); +void IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +DWORD IMessageFilter_MessagePending_Proxy(IMessageFilter, HTASK, DWORD, DWORD); +void IMessageFilter_MessagePending_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*, REFIID); +void IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*, ULONG*); +void IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer, RPCOLEMESSAGE*); +void IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer, DWORD*, void**); +void IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer); +void IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer, IRpcChannelBufferpRpcChannelBuffer); +void IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer); +void IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer, IUnknown); +void IRpcStubBuffer_Connect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer); +void IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer, RPCOLEMESSAGE*, IRpcChannelBuffer); +void IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +IRpcStubBufferIRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer, REFIID); +void IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +ULONG IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer); +void IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer, void**); +void IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer, void*); +void IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer, IUnknown, REFIID, IRpcProxyBuffer*, void**); +void IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +HRESULT IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer, REFIID, IUnknown, IRpcStubBuffer*); +void IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer, IRpcChannelBuffer, PRPC_MESSAGE, PDWORD); +void SNB_to_xmit(SNB*, RemSNB**); +void SNB_from_xmit(RemSNB*, SNB*); +void SNB_free_inst(SNB*); +void SNB_free_xmit(RemSNB*); +HRESULT IEnumUnknown_Next_Proxy(IEnumUnknown, ULONG, IUnknown*, ULONG*); +HRESULT IEnumUnknown_Next_Stub(IEnumUnknown, ULONG, IUnknown*, ULONG*); +HRESULT IEnumMoniker_Next_Proxy(IEnumMoniker, ULONG, IMoniker*, ULONG*); +HRESULT IEnumMoniker_Next_Stub(IEnumMoniker, ULONG, IMoniker*, ULONG*); +HRESULT IMoniker_BindToObject_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, void**); +HRESULT IMoniker_BindToObject_Stub(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +HRESULT IMoniker_BindToStorage_Proxy(IMoniker, IBindCtx, IMoniker, REFIID, void**); +HRESULT IMoniker_BindToStorage_Stub(IMoniker, IBindCtx, IMoniker, REFIID, IUnknown*); +HRESULT IEnumString_Next_Proxy(IEnumString, ULONG, LPCSTR*, ULONG*); +HRESULT IEnumString_Next_Stub(IEnumString, ULONG, LPCSTR*, ULONG*); +HRESULT IStream_Read_Proxy(IStream, void*, ULONG, ULONG*); +HRESULT IStream_Read_Stub(IStream, BYTE*, ULONG, ULONG*); +HRESULT IStream_Write_Proxy(IStream, void*, ULONG, ULONG*); +HRESULT IStream_Write_Stub(IStream, BYTE*, ULONG, ULONG*); +HRESULT IStream_Seek_Proxy(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +HRESULT IStream_Seek_Stub(IStream, LARGE_INTEGER, DWORD, ULARGE_INTEGER*); +HRESULT IStream_CopyTo_Proxy(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +HRESULT IStream_CopyTo_Stub(IStream, IStream, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); +HRESULT IEnumSTATSTG_Next_Proxy(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +HRESULT IEnumSTATSTG_Next_Stub(IEnumSTATSTG, ULONG, STATSTG*, ULONG*); +HRESULT IStorage_OpenStream_Proxy(IStorage, OLECHAR*, void*, DWORD, DWORD, IStream*); +HRESULT IStorage_OpenStream_Stub(IStorage, OLECHAR*, uint, BYTE*, DWORD, DWORD, IStream* ); +HRESULT IStorage_EnumElements_Proxy(IStorage, DWORD, void*, DWORD, IEnumSTATSTG*); +HRESULT IStorage_EnumElements_Stub(IStorage, DWORD, uint, BYTE*, DWORD, IEnumSTATSTG*); +HRESULT ILockBytes_ReadAt_Proxy(ILockBytes, ULARGE_INTEGER, void*, ULONG, ULONG*); +HRESULT ILockBytes_ReadAt_Stub(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +HRESULT ILockBytes_WriteAt_Proxy(ILockBytes, ULARGE_INTEGER, const(void)*, ULONG, ULONG*); +HRESULT ILockBytes_WriteAt_Stub(ILockBytes, ULARGE_INTEGER, BYTE*, ULONG, ULONG*); +} ++/ Index: src/win32/ocidl.d ================================================================== --- src/win32/ocidl.d +++ src/win32/ocidl.d @@ -1,471 +1,471 @@ -/***********************************************************************\ -* ocidl.d * -* * -* Windows API header module * -* Part of the Internet Development SDK * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.ocidl; - -private import win32.ole2, win32.oleidl, win32.oaidl, win32.objfwd, - win32.windef, win32.wtypes; -private import win32.objidl; // for CLIPFORMAT -private import win32.wingdi; // for TEXTMETRICW -private import win32.winuser; // for LPMSG - -interface IBindHost : IUnknown {} - -interface IServiceProvider : IUnknown{ - HRESULT QueryService(REFGUID,REFIID,void**); -} - -/* -// TODO: -//private import win32.servprov; // for IServiceProvider -// private import win32.urlmon; // for IBindHost. This is not included in MinGW. - -// win32.urlmon should contain: -interface IBindHost : IUnknown -{ - HRESULT CreateMoniker(LPOLESTR szName, IBindCtx* pBC, IMoniker** ppmk, DWORD); - HRESULT MonikerBindToObject(IMoniker* pMk, IBindCtx* pBC, IBindStatusCallback* pBSC, REFIID, void** ); - HRESULT MonikerBindToStorage(IMoniker* pMk, IBindCtx* pBC, IBindStatusCallback* pBSC, REFIID, void** ); -} -*/ - - - - -//[Yes] #ifndef OLE2ANSI -alias TEXTMETRICW TEXTMETRICOLE; -//} else { -//alias TEXTMETRIC TEXTMETRICOLE; -//} -alias TEXTMETRICOLE* LPTEXTMETRICOLE; - -alias DWORD OLE_COLOR; -alias UINT OLE_HANDLE; -alias int OLE_XPOS_HIMETRIC; -alias int OLE_YPOS_HIMETRIC; -alias int OLE_XSIZE_HIMETRIC; -alias int OLE_YSIZE_HIMETRIC; - -enum READYSTATE { - READYSTATE_UNINITIALIZED = 0, - READYSTATE_LOADING = 1, - READYSTATE_LOADED = 2, - READYSTATE_INTERACTIVE = 3, - READYSTATE_COMPLETE = 4 -} - -enum PROPBAG2_TYPE { - PROPBAG2_TYPE_UNDEFINED, - PROPBAG2_TYPE_DATA, - PROPBAG2_TYPE_URL, - PROPBAG2_TYPE_OBJECT, - PROPBAG2_TYPE_STREAM, - PROPBAG2_TYPE_STORAGE, - PROPBAG2_TYPE_MONIKER // = 6 -} - -struct PROPBAG2 { - DWORD dwType; - VARTYPE vt; - CLIPFORMAT cfType; - DWORD dwHint; - LPOLESTR pstrName; - CLSID clsid; -} - -enum QACONTAINERFLAGS { - QACONTAINER_SHOWHATCHING = 1, - QACONTAINER_SHOWGRABHANDLES = 2, - QACONTAINER_USERMODE = 4, - QACONTAINER_DISPLAYASDEFAULT = 8, - QACONTAINER_UIDEAD = 16, - QACONTAINER_AUTOCLIP = 32, - QACONTAINER_MESSAGEREFLECT = 64, - QACONTAINER_SUPPORTSMNEMONICS = 128 -} - -struct QACONTAINER { - ULONG cbSize = this.sizeof; - IOleClientSite* pClientSite; - IAdviseSinkEx* pAdviseSink; - IPropertyNotifySink* pPropertyNotifySink; - IUnknown* pUnkEventSink; - DWORD dwAmbientFlags; - OLE_COLOR colorFore; - OLE_COLOR colorBack; - IFont* pFont; - IOleUndoManager* pUndoMgr; - DWORD dwAppearance; - LONG lcid; - HPALETTE hpal; - IBindHost* pBindHost; - IOleControlSite* pOleControlSite; - IServiceProvider* pServiceProvider; -} - -struct QACONTROL { - ULONG cbSize = this.sizeof; - DWORD dwMiscStatus; - DWORD dwViewStatus; - DWORD dwEventCookie; - DWORD dwPropNotifyCookie; - DWORD dwPointerActivationPolicy; -} - -struct POINTF { - float x; - float y; -} -alias POINTF* LPPOINTF; - -struct CONTROLINFO { - ULONG cb; - HACCEL hAccel; - USHORT cAccel; - DWORD dwFlags; -} -alias CONTROLINFO* LPCONTROLINFO; - -struct CONNECTDATA { - LPUNKNOWN pUnk; - DWORD dwCookie; -} -alias CONNECTDATA* LPCONNECTDATA; - -struct LICINFO { - int cbLicInfo; - BOOL fRuntimeKeyAvail; - BOOL fLicVerified; -} -alias LICINFO* LPLICINFO; - -struct CAUUID { - ULONG cElems; - GUID* pElems; -} -alias CAUUID* LPCAUUID; - -struct CALPOLESTR { - ULONG cElems; - LPOLESTR* pElems; -} -alias CALPOLESTR* LPCALPOLESTR; - -struct CADWORD { - ULONG cElems; - DWORD* pElems; -} -alias CADWORD* LPCADWORD; - -struct PROPPAGEINFO { - ULONG cb; - LPOLESTR pszTitle; - SIZE size; - LPOLESTR pszDocString; - LPOLESTR pszHelpFile; - DWORD dwHelpContext; -} -alias PROPPAGEINFO* LPPROPPAGEINFO; - -interface IOleControl : IUnknown { - HRESULT GetControlInfo(LPCONTROLINFO); - HRESULT OnMnemonic(LPMSG); - HRESULT OnAmbientPropertyChange(DISPID); - HRESULT FreezeEvents(BOOL); -} - -interface IOleControlSite : IUnknown { - HRESULT OnControlInfoChanged(); - HRESULT LockInPlaceActive(BOOL); - HRESULT GetExtendedControl(LPDISPATCH*); - HRESULT TransformCoords(POINTL*, POINTF*, DWORD); - HRESULT TranslateAccelerator(LPMSG, DWORD); - HRESULT OnFocus(BOOL); - HRESULT ShowPropertyFrame(); -} - -interface ISimpleFrameSite : IUnknown { - HRESULT PreMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, PDWORD); - HRESULT PostMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, DWORD); -} - -interface IErrorLog : IUnknown { - HRESULT AddError(LPCOLESTR, LPEXCEPINFO); -} -alias IErrorLog LPERRORLOG; - -interface IPropertyBag : IUnknown { - HRESULT Read(LPCOLESTR, LPVARIANT, LPERRORLOG); - HRESULT Write(LPCOLESTR, LPVARIANT); -} -alias IPropertyBag LPPROPERTYBAG; - -interface IPropertyBag2 : IUnknown { - HRESULT Read(ULONG, PROPBAG2*, LPERRORLOG, VARIANT*, HRESULT*); - HRESULT Write(ULONG, PROPBAG2*, VARIANT*); - HRESULT CountProperties(ULONG*); - HRESULT GetPropertyInfo(ULONG, ULONG, PROPBAG2*, ULONG*); - HRESULT LoadObject(LPCOLESTR, DWORD, IUnknown*, LPERRORLOG); -} -alias IPropertyBag2 LPPROPERTYBAG2; - -interface IPersistPropertyBag : IPersist { - HRESULT InitNew(); - HRESULT Load(LPPROPERTYBAG, LPERRORLOG); - HRESULT Save(LPPROPERTYBAG, BOOL, BOOL); -} - -interface IPersistPropertyBag2 : IPersist { - HRESULT InitNew(); - HRESULT Load(LPPROPERTYBAG2, LPERRORLOG); - HRESULT Save(LPPROPERTYBAG2, BOOL, BOOL); - HRESULT IsDirty(); -} - -interface IPersistStreamInit : IPersist { - HRESULT IsDirty(); - HRESULT Load(LPSTREAM); - HRESULT Save(LPSTREAM, BOOL); - HRESULT GetSizeMax(PULARGE_INTEGER); - HRESULT InitNew(); -} - -interface IPersistMemory : IPersist { - HRESULT IsDirty(); - HRESULT Load(PVOID, ULONG); - HRESULT Save(PVOID, BOOL, ULONG); - HRESULT GetSizeMax(PULONG); - HRESULT InitNew(); -} - -interface IPropertyNotifySink : IUnknown { - HRESULT OnChanged(DISPID); - HRESULT OnRequestEdit(DISPID); -} - -interface IProvideClassInfo : IUnknown { - HRESULT GetClassInfo(LPTYPEINFO*); -} - -interface IProvideClassInfo2 : IProvideClassInfo { - HRESULT GetGUID(DWORD, GUID*); -} - -interface IConnectionPointContainer : IUnknown { - HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS*); - HRESULT FindConnectionPoint(REFIID, LPCONNECTIONPOINT*); -} - -interface IEnumConnectionPoints : IUnknown { - HRESULT Next(ULONG, LPCONNECTIONPOINT*, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCONNECTIONPOINTS*); -} -alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS; - -interface IConnectionPoint : IUnknown { - HRESULT GetConnectionInterface(IID*); - HRESULT GetConnectionPointContainer(IConnectionPointContainer**); - HRESULT Advise(LPUNKNOWN, PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumConnections(LPENUMCONNECTIONS*); -} -alias IConnectionPoint LPCONNECTIONPOINT; - -interface IEnumConnections : IUnknown { - HRESULT Next(ULONG, LPCONNECTDATA, PULONG); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(LPENUMCONNECTIONS*); -} -alias IEnumConnections LPENUMCONNECTIONS; - -interface IClassFactory2 : IClassFactory { - HRESULT GetLicInfo(LPLICINFO); - HRESULT RequestLicKey(DWORD, BSTR*); - HRESULT CreateInstanceLic(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR, PVOID*); -} - -interface ISpecifyPropertyPages : IUnknown { - HRESULT GetPages(CAUUID*); -} - -interface IPerPropertyBrowsing : IUnknown { - HRESULT GetDisplayString(DISPID, BSTR*); - HRESULT MapPropertyToPage(DISPID, LPCLSID); - HRESULT GetPredefinedStrings(DISPID, CALPOLESTR*, CADWORD*); - HRESULT GetPredefinedValue(DISPID, DWORD, VARIANT*); -} - -interface IPropertyPageSite : IUnknown { - HRESULT OnStatusChange(DWORD); - HRESULT GetLocaleID(LCID*); - HRESULT GetPageContainer(LPUNKNOWN*); - HRESULT TranslateAccelerator(LPMSG); -} -alias IPropertyPageSite LPPROPERTYPAGESITE; - -interface IPropertyPage : IUnknown { - HRESULT SetPageSite(LPPROPERTYPAGESITE); - HRESULT Activate(HWND, LPCRECT, BOOL); - HRESULT Deactivate(); - HRESULT GetPageInfo(LPPROPPAGEINFO); - HRESULT SetObjects(ULONG, LPUNKNOWN*); - HRESULT Show(UINT); - HRESULT Move(LPCRECT); - HRESULT IsPageDirty(); - HRESULT Apply(); - HRESULT Help(LPCOLESTR); - HRESULT TranslateAccelerator(LPMSG); -} - - -interface IPropertyPage2 : IPropertyPage -{ HRESULT EditProperty(DISPID); -} - -interface IFont : IUnknown { - HRESULT get_Name(BSTR*); - HRESULT put_Name(BSTR); - HRESULT get_Size(CY*); - HRESULT put_Size(CY); - HRESULT get_Bold(BOOL*); - HRESULT put_Bold(BOOL); - HRESULT get_Italic(BOOL*); - HRESULT put_Italic(BOOL); - HRESULT get_Underline(BOOL*); - HRESULT put_Underline(BOOL); - HRESULT get_Strikethrough(BOOL*); - HRESULT put_Strikethrough(BOOL); - HRESULT get_Weight(short*); - HRESULT put_Weight(short); - HRESULT get_Charset(short*); - HRESULT put_Charset(short); - HRESULT get_hFont(HFONT*); - HRESULT Clone(IFont**); - HRESULT IsEqual(IFont*); - HRESULT SetRatio(int, int); - HRESULT QueryTextMetrics(LPTEXTMETRICOLE); - HRESULT AddRefHfont(HFONT); - HRESULT ReleaseHfont(HFONT); - HRESULT SetHdc(HDC); -} -alias IFont LPFONT; - -interface IFontDisp : IDispatch { -} -alias IFontDisp LPFONTDISP; - -interface IPicture : IUnknown { - HRESULT get_Handle(OLE_HANDLE*); - HRESULT get_hPal(OLE_HANDLE*); - HRESULT get_Type(short*); - HRESULT get_Width(OLE_XSIZE_HIMETRIC*); - HRESULT get_Height(OLE_YSIZE_HIMETRIC*); - HRESULT Render(HDC, int, int, int, int, OLE_XPOS_HIMETRIC, - OLE_YPOS_HIMETRIC, OLE_XSIZE_HIMETRIC, OLE_YSIZE_HIMETRIC, LPCRECT); - HRESULT set_hPal(OLE_HANDLE); - HRESULT get_CurDC(HDC*); - HRESULT SelectPicture(HDC, HDC*, OLE_HANDLE*); - HRESULT get_KeepOriginalFormat(BOOL*); - HRESULT put_KeepOriginalFormat(BOOL); - HRESULT PictureChanged(); - HRESULT SaveAsFile(LPSTREAM, BOOL, LONG*); - HRESULT get_Attributes(PDWORD); -} - -interface IPictureDisp : IDispatch { -} - -interface IOleInPlaceSiteEx : IOleInPlaceSite { - HRESULT OnInPlaceActivateEx(BOOL*, DWORD); - HRESULT OnInPlaceDeactivateEx(BOOL); - HRESULT RequestUIActivate(); -} - -interface IObjectWithSite : IUnknown { - HRESULT SetSite(IUnknown*); - HRESULT GetSite(REFIID, void**); -} - -interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx { - HRESULT CanWindowlessActivate(); - HRESULT GetCapture(); - HRESULT SetCapture(BOOL); - HRESULT GetFocus(); - HRESULT SetFocus(BOOL); - HRESULT GetDC(LPCRECT, DWORD, HDC*); - HRESULT ReleaseDC(HDC); - HRESULT InvalidateRect(LPCRECT, BOOL); - HRESULT InvalidateRgn(HRGN, BOOL); - HRESULT ScrollRect(INT, INT, LPCRECT, LPCRECT); - HRESULT AdjustRect(LPCRECT); - HRESULT OnDefWindowMessage(UINT, WPARAM, LPARAM, LRESULT*); -} - -interface IAdviseSinkEx : IUnknown { - void OnDataChange(FORMATETC*, STGMEDIUM*); - void OnViewChange(DWORD, LONG); - void OnRename(IMoniker*); - void OnSave(); - void OnClose(); - HRESULT OnViewStatusChange(DWORD); -} - -interface IPointerInactive : IUnknown { - HRESULT GetActivationPolicy(DWORD*); - HRESULT OnInactiveMouseMove(LPCRECT, LONG, LONG, DWORD); - HRESULT OnInactiveSetCursor(LPCRECT, LONG, LONG, DWORD, BOOL); -} - -interface IOleUndoUnit : IUnknown { - HRESULT Do(LPOLEUNDOMANAGER); - HRESULT GetDescription(BSTR*); - HRESULT GetUnitType(CLSID*, LONG*); - HRESULT OnNextAdd(); -} - -interface IOleParentUndoUnit : IOleUndoUnit { - HRESULT Open(IOleParentUndoUnit*); - HRESULT Close(IOleParentUndoUnit*, BOOL); - HRESULT Add(IOleUndoUnit*); - HRESULT FindUnit(IOleUndoUnit*); - HRESULT GetParentState(DWORD*); -} - -interface IEnumOleUndoUnits : IUnknown { - HRESULT Next(ULONG, IOleUndoUnit**, ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOleUndoUnits**); -} - -interface IOleUndoManager : IUnknown { - HRESULT Open(IOleParentUndoUnit*); - HRESULT Close(IOleParentUndoUnit*, BOOL); - HRESULT Add(IOleUndoUnit*); - HRESULT GetOpenParentState(DWORD*); - HRESULT DiscardFrom(IOleUndoUnit*); - HRESULT UndoTo(IOleUndoUnit*); - HRESULT RedoTo(IOleUndoUnit*); - HRESULT EnumUndoable(IEnumOleUndoUnits**); - HRESULT EnumRedoable(IEnumOleUndoUnits**); - HRESULT GetLastUndoDescription(BSTR*); - HRESULT GetLastRedoDescription(BSTR*); - HRESULT Enable(BOOL); -} -alias IOleUndoManager LPOLEUNDOMANAGER; - -interface IQuickActivate : IUnknown { - HRESULT QuickActivate(QACONTAINER*, QACONTROL*); - HRESULT SetContentExtent(LPSIZEL); - HRESULT GetContentExtent(LPSIZEL); -} +/***********************************************************************\ +* ocidl.d * +* * +* Windows API header module * +* Part of the Internet Development SDK * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ocidl; + +private import win32.ole2, win32.oleidl, win32.oaidl, win32.objfwd, + win32.windef, win32.wtypes; +private import win32.objidl; // for CLIPFORMAT +private import win32.wingdi; // for TEXTMETRICW +private import win32.winuser; // for LPMSG + +interface IBindHost : IUnknown {} + +interface IServiceProvider : IUnknown{ + HRESULT QueryService(REFGUID,REFIID,void**); +} + +/* +// TODO: +//private import win32.servprov; // for IServiceProvider +// private import win32.urlmon; // for IBindHost. This is not included in MinGW. + +// win32.urlmon should contain: +interface IBindHost : IUnknown +{ + HRESULT CreateMoniker(LPOLESTR szName, IBindCtx pBC, IMoniker* ppmk, DWORD); + HRESULT MonikerBindToObject(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); + HRESULT MonikerBindToStorage(IMoniker pMk, IBindCtx pBC, IBindStatusCallback pBSC, REFIID, void** ); +} +*/ + + + + +//[Yes] #ifndef OLE2ANSI +alias TEXTMETRICW TEXTMETRICOLE; +//} else { +//alias TEXTMETRIC TEXTMETRICOLE; +//} +alias TEXTMETRICOLE* LPTEXTMETRICOLE; + +alias DWORD OLE_COLOR; +alias UINT OLE_HANDLE; +alias int OLE_XPOS_HIMETRIC; +alias int OLE_YPOS_HIMETRIC; +alias int OLE_XSIZE_HIMETRIC; +alias int OLE_YSIZE_HIMETRIC; + +enum READYSTATE { + READYSTATE_UNINITIALIZED = 0, + READYSTATE_LOADING = 1, + READYSTATE_LOADED = 2, + READYSTATE_INTERACTIVE = 3, + READYSTATE_COMPLETE = 4 +} + +enum PROPBAG2_TYPE { + PROPBAG2_TYPE_UNDEFINED, + PROPBAG2_TYPE_DATA, + PROPBAG2_TYPE_URL, + PROPBAG2_TYPE_OBJECT, + PROPBAG2_TYPE_STREAM, + PROPBAG2_TYPE_STORAGE, + PROPBAG2_TYPE_MONIKER // = 6 +} + +struct PROPBAG2 { + DWORD dwType; + VARTYPE vt; + CLIPFORMAT cfType; + DWORD dwHint; + LPOLESTR pstrName; + CLSID clsid; +} + +enum QACONTAINERFLAGS { + QACONTAINER_SHOWHATCHING = 1, + QACONTAINER_SHOWGRABHANDLES = 2, + QACONTAINER_USERMODE = 4, + QACONTAINER_DISPLAYASDEFAULT = 8, + QACONTAINER_UIDEAD = 16, + QACONTAINER_AUTOCLIP = 32, + QACONTAINER_MESSAGEREFLECT = 64, + QACONTAINER_SUPPORTSMNEMONICS = 128 +} + +struct QACONTAINER { + ULONG cbSize = this.sizeof; + IOleClientSite pClientSite; + IAdviseSinkEx pAdviseSink; + IPropertyNotifySink pPropertyNotifySink; + IUnknown pUnkEventSink; + DWORD dwAmbientFlags; + OLE_COLOR colorFore; + OLE_COLOR colorBack; + IFont pFont; + IOleUndoManager pUndoMgr; + DWORD dwAppearance; + LONG lcid; + HPALETTE hpal; + IBindHost pBindHost; + IOleControlSite pOleControlSite; + IServiceProvider pServiceProvider; +} + +struct QACONTROL { + ULONG cbSize = this.sizeof; + DWORD dwMiscStatus; + DWORD dwViewStatus; + DWORD dwEventCookie; + DWORD dwPropNotifyCookie; + DWORD dwPointerActivationPolicy; +} + +struct POINTF { + float x; + float y; +} +alias POINTF* LPPOINTF; + +struct CONTROLINFO { + ULONG cb; + HACCEL hAccel; + USHORT cAccel; + DWORD dwFlags; +} +alias CONTROLINFO* LPCONTROLINFO; + +struct CONNECTDATA { + LPUNKNOWN pUnk; + DWORD dwCookie; +} +alias CONNECTDATA* LPCONNECTDATA; + +struct LICINFO { + int cbLicInfo; + BOOL fRuntimeKeyAvail; + BOOL fLicVerified; +} +alias LICINFO* LPLICINFO; + +struct CAUUID { + ULONG cElems; + GUID* pElems; +} +alias CAUUID* LPCAUUID; + +struct CALPOLESTR { + ULONG cElems; + LPOLESTR* pElems; +} +alias CALPOLESTR* LPCALPOLESTR; + +struct CADWORD { + ULONG cElems; + DWORD* pElems; +} +alias CADWORD* LPCADWORD; + +struct PROPPAGEINFO { + ULONG cb; + LPOLESTR pszTitle; + SIZE size; + LPOLESTR pszDocString; + LPOLESTR pszHelpFile; + DWORD dwHelpContext; +} +alias PROPPAGEINFO* LPPROPPAGEINFO; + +interface IOleControl : IUnknown { + HRESULT GetControlInfo(LPCONTROLINFO); + HRESULT OnMnemonic(LPMSG); + HRESULT OnAmbientPropertyChange(DISPID); + HRESULT FreezeEvents(BOOL); +} + +interface IOleControlSite : IUnknown { + HRESULT OnControlInfoChanged(); + HRESULT LockInPlaceActive(BOOL); + HRESULT GetExtendedControl(LPDISPATCH*); + HRESULT TransformCoords(POINTL*, POINTF*, DWORD); + HRESULT TranslateAccelerator(LPMSG, DWORD); + HRESULT OnFocus(BOOL); + HRESULT ShowPropertyFrame(); +} + +interface ISimpleFrameSite : IUnknown { + HRESULT PreMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, PDWORD); + HRESULT PostMessageFilter(HWND, UINT, WPARAM, LPARAM, LRESULT*, DWORD); +} + +interface IErrorLog : IUnknown { + HRESULT AddError(LPCOLESTR, LPEXCEPINFO); +} +alias IErrorLog LPERRORLOG; + +interface IPropertyBag : IUnknown { + HRESULT Read(LPCOLESTR, LPVARIANT, LPERRORLOG); + HRESULT Write(LPCOLESTR, LPVARIANT); +} +alias IPropertyBag LPPROPERTYBAG; + +interface IPropertyBag2 : IUnknown { + HRESULT Read(ULONG, PROPBAG2*, LPERRORLOG, VARIANT*, HRESULT*); + HRESULT Write(ULONG, PROPBAG2*, VARIANT*); + HRESULT CountProperties(ULONG*); + HRESULT GetPropertyInfo(ULONG, ULONG, PROPBAG2*, ULONG*); + HRESULT LoadObject(LPCOLESTR, DWORD, IUnknown, LPERRORLOG); +} +alias IPropertyBag2 LPPROPERTYBAG2; + +interface IPersistPropertyBag : IPersist { + HRESULT InitNew(); + HRESULT Load(LPPROPERTYBAG, LPERRORLOG); + HRESULT Save(LPPROPERTYBAG, BOOL, BOOL); +} + +interface IPersistPropertyBag2 : IPersist { + HRESULT InitNew(); + HRESULT Load(LPPROPERTYBAG2, LPERRORLOG); + HRESULT Save(LPPROPERTYBAG2, BOOL, BOOL); + HRESULT IsDirty(); +} + +interface IPersistStreamInit : IPersist { + HRESULT IsDirty(); + HRESULT Load(LPSTREAM); + HRESULT Save(LPSTREAM, BOOL); + HRESULT GetSizeMax(PULARGE_INTEGER); + HRESULT InitNew(); +} + +interface IPersistMemory : IPersist { + HRESULT IsDirty(); + HRESULT Load(PVOID, ULONG); + HRESULT Save(PVOID, BOOL, ULONG); + HRESULT GetSizeMax(PULONG); + HRESULT InitNew(); +} + +interface IPropertyNotifySink : IUnknown { + HRESULT OnChanged(DISPID); + HRESULT OnRequestEdit(DISPID); +} + +interface IProvideClassInfo : IUnknown { + HRESULT GetClassInfo(LPTYPEINFO*); +} + +interface IProvideClassInfo2 : IProvideClassInfo { + HRESULT GetGUID(DWORD, GUID*); +} + +interface IConnectionPointContainer : IUnknown { + HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS*); + HRESULT FindConnectionPoint(REFIID, LPCONNECTIONPOINT*); +} + +interface IEnumConnectionPoints : IUnknown { + HRESULT Next(ULONG, LPCONNECTIONPOINT*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCONNECTIONPOINTS*); +} +alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS; + +interface IConnectionPoint : IUnknown { + HRESULT GetConnectionInterface(IID*); + HRESULT GetConnectionPointContainer(IConnectionPointContainer*); + HRESULT Advise(LPUNKNOWN, PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumConnections(LPENUMCONNECTIONS*); +} +alias IConnectionPoint LPCONNECTIONPOINT; + +interface IEnumConnections : IUnknown { + HRESULT Next(ULONG, LPCONNECTDATA, PULONG); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(LPENUMCONNECTIONS*); +} +alias IEnumConnections LPENUMCONNECTIONS; + +interface IClassFactory2 : IClassFactory { + HRESULT GetLicInfo(LPLICINFO); + HRESULT RequestLicKey(DWORD, BSTR*); + HRESULT CreateInstanceLic(LPUNKNOWN, LPUNKNOWN, REFIID, BSTR, PVOID*); +} + +interface ISpecifyPropertyPages : IUnknown { + HRESULT GetPages(CAUUID*); +} + +interface IPerPropertyBrowsing : IUnknown { + HRESULT GetDisplayString(DISPID, BSTR*); + HRESULT MapPropertyToPage(DISPID, LPCLSID); + HRESULT GetPredefinedStrings(DISPID, CALPOLESTR*, CADWORD*); + HRESULT GetPredefinedValue(DISPID, DWORD, VARIANT*); +} + +interface IPropertyPageSite : IUnknown { + HRESULT OnStatusChange(DWORD); + HRESULT GetLocaleID(LCID*); + HRESULT GetPageContainer(LPUNKNOWN*); + HRESULT TranslateAccelerator(LPMSG); +} +alias IPropertyPageSite LPPROPERTYPAGESITE; + +interface IPropertyPage : IUnknown { + HRESULT SetPageSite(LPPROPERTYPAGESITE); + HRESULT Activate(HWND, LPCRECT, BOOL); + HRESULT Deactivate(); + HRESULT GetPageInfo(LPPROPPAGEINFO); + HRESULT SetObjects(ULONG, LPUNKNOWN*); + HRESULT Show(UINT); + HRESULT Move(LPCRECT); + HRESULT IsPageDirty(); + HRESULT Apply(); + HRESULT Help(LPCOLESTR); + HRESULT TranslateAccelerator(LPMSG); +} + + +interface IPropertyPage2 : IPropertyPage +{ HRESULT EditProperty(DISPID); +} + +interface IFont : IUnknown { + HRESULT get_Name(BSTR*); + HRESULT put_Name(BSTR); + HRESULT get_Size(CY*); + HRESULT put_Size(CY); + HRESULT get_Bold(BOOL*); + HRESULT put_Bold(BOOL); + HRESULT get_Italic(BOOL*); + HRESULT put_Italic(BOOL); + HRESULT get_Underline(BOOL*); + HRESULT put_Underline(BOOL); + HRESULT get_Strikethrough(BOOL*); + HRESULT put_Strikethrough(BOOL); + HRESULT get_Weight(short*); + HRESULT put_Weight(short); + HRESULT get_Charset(short*); + HRESULT put_Charset(short); + HRESULT get_hFont(HFONT*); + HRESULT Clone(IFont*); + HRESULT IsEqual(IFont); + HRESULT SetRatio(int, int); + HRESULT QueryTextMetrics(LPTEXTMETRICOLE); + HRESULT AddRefHfont(HFONT); + HRESULT ReleaseHfont(HFONT); + HRESULT SetHdc(HDC); +} +alias IFont LPFONT; + +interface IFontDisp : IDispatch { +} +alias IFontDisp LPFONTDISP; + +interface IPicture : IUnknown { + HRESULT get_Handle(OLE_HANDLE*); + HRESULT get_hPal(OLE_HANDLE*); + HRESULT get_Type(short*); + HRESULT get_Width(OLE_XSIZE_HIMETRIC*); + HRESULT get_Height(OLE_YSIZE_HIMETRIC*); + HRESULT Render(HDC, int, int, int, int, OLE_XPOS_HIMETRIC, + OLE_YPOS_HIMETRIC, OLE_XSIZE_HIMETRIC, OLE_YSIZE_HIMETRIC, LPCRECT); + HRESULT set_hPal(OLE_HANDLE); + HRESULT get_CurDC(HDC*); + HRESULT SelectPicture(HDC, HDC*, OLE_HANDLE*); + HRESULT get_KeepOriginalFormat(BOOL*); + HRESULT put_KeepOriginalFormat(BOOL); + HRESULT PictureChanged(); + HRESULT SaveAsFile(LPSTREAM, BOOL, LONG*); + HRESULT get_Attributes(PDWORD); +} + +interface IPictureDisp : IDispatch { +} + +interface IOleInPlaceSiteEx : IOleInPlaceSite { + HRESULT OnInPlaceActivateEx(BOOL*, DWORD); + HRESULT OnInPlaceDeactivateEx(BOOL); + HRESULT RequestUIActivate(); +} + +interface IObjectWithSite : IUnknown { + HRESULT SetSite(IUnknown); + HRESULT GetSite(REFIID, void**); +} + +interface IOleInPlaceSiteWindowless : IOleInPlaceSiteEx { + HRESULT CanWindowlessActivate(); + HRESULT GetCapture(); + HRESULT SetCapture(BOOL); + HRESULT GetFocus(); + HRESULT SetFocus(BOOL); + HRESULT GetDC(LPCRECT, DWORD, HDC*); + HRESULT ReleaseDC(HDC); + HRESULT InvalidateRect(LPCRECT, BOOL); + HRESULT InvalidateRgn(HRGN, BOOL); + HRESULT ScrollRect(INT, INT, LPCRECT, LPCRECT); + HRESULT AdjustRect(LPCRECT); + HRESULT OnDefWindowMessage(UINT, WPARAM, LPARAM, LRESULT*); +} + +interface IAdviseSinkEx : IUnknown { + void OnDataChange(FORMATETC*, STGMEDIUM*); + void OnViewChange(DWORD, LONG); + void OnRename(IMoniker); + void OnSave(); + void OnClose(); + HRESULT OnViewStatusChange(DWORD); +} + +interface IPointerInactive : IUnknown { + HRESULT GetActivationPolicy(DWORD*); + HRESULT OnInactiveMouseMove(LPCRECT, LONG, LONG, DWORD); + HRESULT OnInactiveSetCursor(LPCRECT, LONG, LONG, DWORD, BOOL); +} + +interface IOleUndoUnit : IUnknown { + HRESULT Do(LPOLEUNDOMANAGER); + HRESULT GetDescription(BSTR*); + HRESULT GetUnitType(CLSID*, LONG*); + HRESULT OnNextAdd(); +} + +interface IOleParentUndoUnit : IOleUndoUnit { + HRESULT Open(IOleParentUndoUnit); + HRESULT Close(IOleParentUndoUnit, BOOL); + HRESULT Add(IOleUndoUnit); + HRESULT FindUnit(IOleUndoUnit); + HRESULT GetParentState(DWORD*); +} + +interface IEnumOleUndoUnits : IUnknown { + HRESULT Next(ULONG, IOleUndoUnit*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOleUndoUnits*); +} + +interface IOleUndoManager : IUnknown { + HRESULT Open(IOleParentUndoUnit); + HRESULT Close(IOleParentUndoUnit, BOOL); + HRESULT Add(IOleUndoUnit); + HRESULT GetOpenParentState(DWORD*); + HRESULT DiscardFrom(IOleUndoUnit); + HRESULT UndoTo(IOleUndoUnit); + HRESULT RedoTo(IOleUndoUnit); + HRESULT EnumUndoable(IEnumOleUndoUnits*); + HRESULT EnumRedoable(IEnumOleUndoUnits*); + HRESULT GetLastUndoDescription(BSTR*); + HRESULT GetLastRedoDescription(BSTR*); + HRESULT Enable(BOOL); +} +alias IOleUndoManager LPOLEUNDOMANAGER; + +interface IQuickActivate : IUnknown { + HRESULT QuickActivate(QACONTAINER*, QACONTROL*); + HRESULT SetContentExtent(LPSIZEL); + HRESULT GetContentExtent(LPSIZEL); +} Index: src/win32/odbcinst.d ================================================================== --- src/win32/odbcinst.d +++ src/win32/odbcinst.d @@ -1,166 +1,166 @@ -/***********************************************************************\ -* odbcinst.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.odbcinst; - -import win32.sql; -private import win32.windef; - -/* FIXME: The Unicode/Ansi functions situation is a mess. How do the xxxA - * versions of these functions fit into the scheme? - */ - -// SQLConfigDataSource() -enum : WORD { - ODBC_ADD_DSN = 1, - ODBC_CONFIG_DSN = 2, - ODBC_REMOVE_DSN = 3, - ODBC_ADD_SYS_DSN = 4, - ODBC_CONFIG_SYS_DSN = 5, - ODBC_REMOVE_SYS_DSN = 6, - ODBC_REMOVE_DEFAULT_DSN = 7 -} - -// ODBC 3.0+ -enum : WORD { - ODBC_INSTALL_INQUIRY = 1, - ODBC_INSTALL_COMPLETE = 2 -} - -// ODBC 2.5+ -enum : WORD { - ODBC_INSTALL_DRIVER = 1, - ODBC_REMOVE_DRIVER = 2, - ODBC_CONFIG_DRIVER = 3, - ODBC_CONFIG_DRIVER_MAX = 100 -} - -// ODBC 3.0+ -// SQLSetConfigMode() -enum : UWORD { - ODBC_BOTH_DSN = 0, - ODBC_USER_DSN = 1, - ODBC_SYSTEM_DSN = 2 -} - -enum : DWORD { - ODBC_ERROR_GENERAL_ERR = 1, - ODBC_ERROR_INVALID_BUFF_LEN = 2, - ODBC_ERROR_INVALID_HWND = 3, - ODBC_ERROR_INVALID_STR = 4, - ODBC_ERROR_INVALID_REQUEST_TYPE = 5, - ODBC_ERROR_COMPONENT_NOT_FOUND = 6, - ODBC_ERROR_INVALID_NAME = 7, - ODBC_ERROR_INVALID_KEYWORD_VALUE = 8, - ODBC_ERROR_INVALID_DSN = 9, - ODBC_ERROR_INVALID_INF = 10, - ODBC_ERROR_REQUEST_FAILED = 11, - ODBC_ERROR_INVALID_PATH = 12, - ODBC_ERROR_LOAD_LIB_FAILED = 13, - ODBC_ERROR_INVALID_PARAM_SEQUENCE = 14, - ODBC_ERROR_INVALID_LOG_FILE = 15, - ODBC_ERROR_USER_CANCELED = 16, - ODBC_ERROR_USAGE_UPDATE_FAILED = 17, - ODBC_ERROR_CREATE_DSN_FAILED = 18, - ODBC_ERROR_WRITING_SYSINFO_FAILED = 19, - ODBC_ERROR_REMOVE_DSN_FAILED = 20, - ODBC_ERROR_OUT_OF_MEM = 21, - ODBC_ERROR_OUTPUT_STRING_TRUNCATED = 22 -} - -extern (Windows): -BOOL ConfigDSN(HWND,WORD,LPCSTR,LPCSTR); -BOOL ConfigDSNW(HWND,WORD,LPCWSTR,LPCWSTR); -BOOL ConfigTranslator(HWND,DWORD*); -BOOL SQLConfigDataSource(HWND,WORD,LPCSTR,LPCSTR); -BOOL SQLConfigDataSourceW(HWND,WORD,LPCWSTR,LPCWSTR); -BOOL SQLCreateDataSource(HWND,LPCSTR); -BOOL SQLCreateDataSourceW(HWND,LPCWSTR); -BOOL SQLGetAvailableDrivers(LPCSTR,LPSTR,WORD,WORD*); -BOOL SQLGetAvailableDriversW(LPCWSTR,LPWSTR,WORD,WORD*); -BOOL SQLGetInstalledDrivers(LPSTR,WORD,WORD*); -BOOL SQLGetInstalledDriversW(LPWSTR,WORD,WORD*); -int SQLGetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,int,LPCSTR); -int SQLGetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,int,LPCWSTR); -BOOL SQLGetTranslator(HWND,LPSTR,WORD,WORD*,LPSTR,WORD,WORD*,DWORD*); -BOOL SQLGetTranslatorW(HWND,LPWSTR,WORD,WORD*,LPWSTR,WORD,WORD*,DWORD*); -BOOL SQLInstallDriver(LPCSTR,LPCSTR,LPSTR,WORD,WORD*); -BOOL SQLInstallDriverManager(LPSTR,WORD,WORD*); -BOOL SQLInstallDriverManagerW(LPWSTR,WORD,WORD*); -BOOL SQLInstallDriverW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); -BOOL SQLInstallODBC(HWND,LPCSTR,LPCSTR,LPCSTR); -BOOL SQLInstallODBCW(HWND,LPCWSTR,LPCWSTR,LPCWSTR); -BOOL SQLManageDataSources(HWND); -BOOL SQLRemoveDefaultDataSource(); -BOOL SQLRemoveDSNFromIni(LPCSTR); -BOOL SQLRemoveDSNFromIniW(LPCWSTR); -BOOL SQLValidDSN(LPCSTR); -BOOL SQLValidDSNW(LPCWSTR); -BOOL SQLWriteDSNToIni(LPCSTR,LPCSTR); -BOOL SQLWriteDSNToIniW(LPCWSTR,LPCWSTR); -BOOL SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); -BOOL SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); - -static if (ODBCVER >= 0x0250) { - BOOL ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - BOOL SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - deprecated { - BOOL SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - } - BOOL SQLRemoveDriver(LPCSTR,BOOL,LPDWORD); - BOOL SQLRemoveDriverManager(LPDWORD); - BOOL SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD); - BOOL SQLRemoveTranslator(LPCSTR,LPDWORD); - BOOL SQLRemoveTranslatorW(LPCWSTR,LPDWORD); -} -static if (ODBCVER >= 0x0300) { - BOOL SQLGetConfigMode(UWORD*); - BOOL SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - SQLRETURN SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*); - SQLRETURN SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*); - BOOL SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); - BOOL SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); - SQLRETURN SQLPostInstallerError(DWORD,LPCSTR); - SQLRETURN SQLPostInstallerErrorW(DWORD,LPCWSTR); - BOOL SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); - BOOL SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); - BOOL SQLSetConfigMode(UWORD); - BOOL SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR); - BOOL SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); -} - -version (Unicode) { - alias SQLConfigDataSourceW SQLConfigDataSource; - alias SQLConfigDriverW SQLConfigDriver; - alias SQLCreateDataSourceW SQLCreateDataSource; - alias SQLGetAvailableDriversW SQLGetAvailableDrivers; - alias SQLGetInstalledDriversW SQLGetInstalledDrivers; - alias SQLGetPrivateProfileStringW SQLGetPrivateProfileString; - alias SQLGetTranslatorW SQLGetTranslator; - alias SQLInstallDriverW SQLInstallDriver; - alias SQLInstallDriverExW SQLInstallDriverEx; - alias SQLInstallDriverManagerW SQLInstallDriverManager; - alias SQLInstallerErrorW SQLInstallerError; - alias SQLInstallODBCW SQLInstallODBC; - deprecated alias SQLInstallTranslatorW SQLInstallTranslator; - alias SQLInstallTranslatorExW SQLInstallTranslatorEx; - alias SQLPostInstallerErrorW SQLPostInstallerError; - alias SQLReadFileDSNW SQLReadFileDSN; - alias SQLRemoveDriverW SQLRemoveDriver; - alias SQLRemoveDSNFromIniW SQLRemoveDSNFromIni; - alias SQLRemoveTranslatorW SQLRemoveTranslator; - alias SQLValidDSNW SQLValidDSN; - alias SQLWriteDSNToIniW SQLWriteDSNToIni; - alias SQLWriteFileDSNW SQLWriteFileDSN; - alias SQLWritePrivateProfileStringW SQLWritePrivateProfileString; -} +/***********************************************************************\ +* odbcinst.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.odbcinst; + +import win32.sql; +private import win32.windef; + +/* FIXME: The Unicode/Ansi functions situation is a mess. How do the xxxA + * versions of these functions fit into the scheme? + */ + +// SQLConfigDataSource() +enum : WORD { + ODBC_ADD_DSN = 1, + ODBC_CONFIG_DSN = 2, + ODBC_REMOVE_DSN = 3, + ODBC_ADD_SYS_DSN = 4, + ODBC_CONFIG_SYS_DSN = 5, + ODBC_REMOVE_SYS_DSN = 6, + ODBC_REMOVE_DEFAULT_DSN = 7 +} + +// ODBC 3.0+ +enum : WORD { + ODBC_INSTALL_INQUIRY = 1, + ODBC_INSTALL_COMPLETE = 2 +} + +// ODBC 2.5+ +enum : WORD { + ODBC_INSTALL_DRIVER = 1, + ODBC_REMOVE_DRIVER = 2, + ODBC_CONFIG_DRIVER = 3, + ODBC_CONFIG_DRIVER_MAX = 100 +} + +// ODBC 3.0+ +// SQLSetConfigMode() +enum : UWORD { + ODBC_BOTH_DSN = 0, + ODBC_USER_DSN = 1, + ODBC_SYSTEM_DSN = 2 +} + +enum : DWORD { + ODBC_ERROR_GENERAL_ERR = 1, + ODBC_ERROR_INVALID_BUFF_LEN = 2, + ODBC_ERROR_INVALID_HWND = 3, + ODBC_ERROR_INVALID_STR = 4, + ODBC_ERROR_INVALID_REQUEST_TYPE = 5, + ODBC_ERROR_COMPONENT_NOT_FOUND = 6, + ODBC_ERROR_INVALID_NAME = 7, + ODBC_ERROR_INVALID_KEYWORD_VALUE = 8, + ODBC_ERROR_INVALID_DSN = 9, + ODBC_ERROR_INVALID_INF = 10, + ODBC_ERROR_REQUEST_FAILED = 11, + ODBC_ERROR_INVALID_PATH = 12, + ODBC_ERROR_LOAD_LIB_FAILED = 13, + ODBC_ERROR_INVALID_PARAM_SEQUENCE = 14, + ODBC_ERROR_INVALID_LOG_FILE = 15, + ODBC_ERROR_USER_CANCELED = 16, + ODBC_ERROR_USAGE_UPDATE_FAILED = 17, + ODBC_ERROR_CREATE_DSN_FAILED = 18, + ODBC_ERROR_WRITING_SYSINFO_FAILED = 19, + ODBC_ERROR_REMOVE_DSN_FAILED = 20, + ODBC_ERROR_OUT_OF_MEM = 21, + ODBC_ERROR_OUTPUT_STRING_TRUNCATED = 22 +} + +extern (Windows): +BOOL ConfigDSN(HWND,WORD,LPCSTR,LPCSTR); +BOOL ConfigDSNW(HWND,WORD,LPCWSTR,LPCWSTR); +BOOL ConfigTranslator(HWND,DWORD*); +BOOL SQLConfigDataSource(HWND,WORD,LPCSTR,LPCSTR); +BOOL SQLConfigDataSourceW(HWND,WORD,LPCWSTR,LPCWSTR); +BOOL SQLCreateDataSource(HWND,LPCSTR); +BOOL SQLCreateDataSourceW(HWND,LPCWSTR); +BOOL SQLGetAvailableDrivers(LPCSTR,LPSTR,WORD,WORD*); +BOOL SQLGetAvailableDriversW(LPCWSTR,LPWSTR,WORD,WORD*); +BOOL SQLGetInstalledDrivers(LPSTR,WORD,WORD*); +BOOL SQLGetInstalledDriversW(LPWSTR,WORD,WORD*); +int SQLGetPrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPSTR,int,LPCSTR); +int SQLGetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,int,LPCWSTR); +BOOL SQLGetTranslator(HWND,LPSTR,WORD,WORD*,LPSTR,WORD,WORD*,DWORD*); +BOOL SQLGetTranslatorW(HWND,LPWSTR,WORD,WORD*,LPWSTR,WORD,WORD*,DWORD*); +BOOL SQLInstallDriver(LPCSTR,LPCSTR,LPSTR,WORD,WORD*); +BOOL SQLInstallDriverManager(LPSTR,WORD,WORD*); +BOOL SQLInstallDriverManagerW(LPWSTR,WORD,WORD*); +BOOL SQLInstallDriverW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); +BOOL SQLInstallODBC(HWND,LPCSTR,LPCSTR,LPCSTR); +BOOL SQLInstallODBCW(HWND,LPCWSTR,LPCWSTR,LPCWSTR); +BOOL SQLManageDataSources(HWND); +BOOL SQLRemoveDefaultDataSource(); +BOOL SQLRemoveDSNFromIni(LPCSTR); +BOOL SQLRemoveDSNFromIniW(LPCWSTR); +BOOL SQLValidDSN(LPCSTR); +BOOL SQLValidDSNW(LPCWSTR); +BOOL SQLWriteDSNToIni(LPCSTR,LPCSTR); +BOOL SQLWriteDSNToIniW(LPCWSTR,LPCWSTR); +BOOL SQLWritePrivateProfileString(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL SQLWritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); + +static if (ODBCVER >= 0x0250) { + BOOL ConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL ConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + BOOL SQLConfigDriver(HWND,WORD,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL SQLConfigDriverW(HWND,WORD,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + deprecated { + BOOL SQLInstallTranslator(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallTranslatorW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + } + BOOL SQLRemoveDriver(LPCSTR,BOOL,LPDWORD); + BOOL SQLRemoveDriverManager(LPDWORD); + BOOL SQLRemoveDriverW(LPCWSTR,BOOL,LPDWORD); + BOOL SQLRemoveTranslator(LPCSTR,LPDWORD); + BOOL SQLRemoveTranslatorW(LPCWSTR,LPDWORD); +} +static if (ODBCVER >= 0x0300) { + BOOL SQLGetConfigMode(UWORD*); + BOOL SQLInstallDriverEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallDriverExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + SQLRETURN SQLInstallerError(WORD,DWORD*,LPSTR,WORD,WORD*); + SQLRETURN SQLInstallerErrorW(WORD,DWORD*,LPWSTR,WORD,WORD*); + BOOL SQLInstallTranslatorEx(LPCSTR,LPCSTR,LPSTR,WORD,WORD*,WORD,LPDWORD); + BOOL SQLInstallTranslatorExW(LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*,WORD,LPDWORD); + SQLRETURN SQLPostInstallerError(DWORD,LPCSTR); + SQLRETURN SQLPostInstallerErrorW(DWORD,LPCWSTR); + BOOL SQLReadFileDSN(LPCSTR,LPCSTR,LPCSTR,LPSTR,WORD,WORD*); + BOOL SQLReadFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,WORD,WORD*); + BOOL SQLSetConfigMode(UWORD); + BOOL SQLWriteFileDSN(LPCSTR,LPCSTR,LPCSTR,LPCSTR); + BOOL SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +} + +version (Unicode) { + alias SQLConfigDataSourceW SQLConfigDataSource; + alias SQLConfigDriverW SQLConfigDriver; + alias SQLCreateDataSourceW SQLCreateDataSource; + alias SQLGetAvailableDriversW SQLGetAvailableDrivers; + alias SQLGetInstalledDriversW SQLGetInstalledDrivers; + alias SQLGetPrivateProfileStringW SQLGetPrivateProfileString; + alias SQLGetTranslatorW SQLGetTranslator; + alias SQLInstallDriverW SQLInstallDriver; + alias SQLInstallDriverExW SQLInstallDriverEx; + alias SQLInstallDriverManagerW SQLInstallDriverManager; + alias SQLInstallerErrorW SQLInstallerError; + alias SQLInstallODBCW SQLInstallODBC; + deprecated alias SQLInstallTranslatorW SQLInstallTranslator; + alias SQLInstallTranslatorExW SQLInstallTranslatorEx; + alias SQLPostInstallerErrorW SQLPostInstallerError; + alias SQLReadFileDSNW SQLReadFileDSN; + alias SQLRemoveDriverW SQLRemoveDriver; + alias SQLRemoveDSNFromIniW SQLRemoveDSNFromIni; + alias SQLRemoveTranslatorW SQLRemoveTranslator; + alias SQLValidDSNW SQLValidDSN; + alias SQLWriteDSNToIniW SQLWriteDSNToIni; + alias SQLWriteFileDSNW SQLWriteFileDSN; + alias SQLWritePrivateProfileStringW SQLWritePrivateProfileString; +} Index: src/win32/ole.d ================================================================== --- src/win32/ole.d +++ src/win32/ole.d @@ -152,11 +152,11 @@ // #ifdef OLE_INTERNAL oleupdate_onclose // #endif } -alias HANDLE HOBJECT; +mixin DECLARE_HANDLE!("HOBJECT"); alias LONG LHSERVER, LHCLIENTDOC, LHSERVERDOC; struct OLEOBJECTVTBL { extern (Windows) { void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol; @@ -252,11 +252,11 @@ LPOLESERVERDOC*) Edit; OLESTATUS function(LPOLESERVER) Exit; OLESTATUS function(LPOLESERVER) Release; OLESTATUS function(LPOLESERVER, HGLOBAL) Execute; } -alias OLESERVERVTBL* LPOLESERVERVTBL; +alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL; struct OLESERVER { LPOLESERVERVTBL lpvtbl; } alias OLESERVER* LPOLESERVER; @@ -286,11 +286,11 @@ OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT); OLESTATUS OleCopyToClipboard(LPOLEOBJECT); OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR); OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL); OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT); - OLESTATUS OleSetColorScheme(LPOLEOBJECT, CPtr!(LOGPALETTE)); + OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*); OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*); OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*); OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC); OLESTATUS OleQueryOpen(LPOLEOBJECT); OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT); Index: src/win32/ole2.d ================================================================== --- src/win32/ole2.d +++ src/win32/ole2.d @@ -1,118 +1,118 @@ -/***********************************************************************\ -* ole2.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.ole2; -pragma(lib, "ole32.lib"); - -public import win32.basetyps, win32.objbase, win32.oleauto, win32.olectlid, - win32.oleidl, win32.unknwn, win32.winerror, win32.uuid; -private import win32.objfwd, win32.objidl, win32.windef, win32.wtypes; -private import win32.winuser; // for LPMSG - -const E_DRAW = VIEW_E_DRAW; - -const DATA_E_FORMATETC = DV_E_FORMATETC; - -enum { - OLEIVERB_PRIMARY = 0, - OLEIVERB_SHOW = -1, - OLEIVERB_OPEN = -2, - OLEIVERB_HIDE = -3, - OLEIVERB_UIACTIVATE = -4, - OLEIVERB_INPLACEACTIVATE = -5, - OLEIVERB_DISCARDUNDOSTATE = -6 -} - -const EMBDHLP_INPROC_HANDLER = 0x0000L; -const EMBDHLP_INPROC_SERVER = 0x0001L; -const EMBDHLP_CREATENOW = 0x00000000L; -const EMBDHLP_DELAYCREATE = 0x00010000L; - -align(8): -struct OLESTREAM { - LPOLESTREAMVTBL lpstbl; -} -alias OLESTREAM* LPOLESTREAM; - -extern (Windows) { - struct OLESTREAMVTBL { - DWORD function (LPOLESTREAM, void*, DWORD) Get; - DWORD function (LPOLESTREAM, CPtr!(void), DWORD) Put; - } -} -alias OLESTREAMVTBL* LPOLESTREAMVTBL; - -extern (Windows) { - HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); - DWORD OleBuildVersion(); - HRESULT ReadClassStg(LPSTORAGE, CLSID*); - HRESULT WriteClassStg(LPSTORAGE, REFCLSID); - HRESULT ReadClassStm(LPSTREAM, CLSID*); - HRESULT WriteClassStm(LPSTREAM, REFCLSID); - HRESULT WriteFmtUserTypeStg(LPSTORAGE, CLIPFORMAT, LPOLESTR); - HRESULT ReadFmtUserTypeStg(LPSTORAGE, CLIPFORMAT*, LPOLESTR*); - HRESULT OleInitialize(PVOID); - void OleUninitialize(); - HRESULT OleQueryLinkFromData(LPDATAOBJECT); - HRESULT OleQueryCreateFromData(LPDATAOBJECT); - HRESULT OleCreate(REFCLSID, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLinkFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateStaticFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLink(LPMONIKER, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateLinkToFile(LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleCreateFromFile(REFCLSID, LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); - HRESULT OleLoad(LPSTORAGE, REFIID, LPOLECLIENTSITE, PVOID*); - HRESULT OleSave(LPPERSISTSTORAGE, LPSTORAGE, BOOL); - HRESULT OleLoadFromStream(LPSTREAM, REFIID, PVOID*); - HRESULT OleSaveToStream(LPPERSISTSTREAM, LPSTREAM); - HRESULT OleSetContainedObject(LPUNKNOWN, BOOL); - HRESULT OleNoteObjectVisible(LPUNKNOWN, BOOL); - HRESULT RegisterDragDrop(HWND, LPDROPTARGET); - HRESULT RevokeDragDrop(HWND); - HRESULT DoDragDrop(LPDATAOBJECT, LPDROPSOURCE, DWORD, PDWORD); - HRESULT OleSetClipboard(LPDATAOBJECT); - HRESULT OleGetClipboard(LPDATAOBJECT*); - HRESULT OleFlushClipboard(); - HRESULT OleIsCurrentClipboard(LPDATAOBJECT); - HOLEMENU OleCreateMenuDescriptor(HMENU, LPOLEMENUGROUPWIDTHS); - HRESULT OleSetMenuDescriptor(HOLEMENU, HWND, HWND, LPOLEINPLACEFRAME, LPOLEINPLACEACTIVEOBJECT); - HRESULT OleDestroyMenuDescriptor(HOLEMENU); - HRESULT OleTranslateAccelerator(LPOLEINPLACEFRAME, LPOLEINPLACEFRAMEINFO, LPMSG); - HANDLE OleDuplicateData(HANDLE, CLIPFORMAT, UINT); - HRESULT OleDraw(LPUNKNOWN, DWORD, HDC, LPCRECT); - HRESULT OleRun(LPUNKNOWN); - BOOL OleIsRunning(LPOLEOBJECT); - HRESULT OleLockRunning(LPUNKNOWN, BOOL, BOOL); - void ReleaseStgMedium(LPSTGMEDIUM); - HRESULT CreateOleAdviseHolder(LPOLEADVISEHOLDER*); - HRESULT OleCreateDefaultHandler(REFCLSID, LPUNKNOWN, REFIID, PVOID*); - HRESULT OleCreateEmbeddingHelper(REFCLSID, LPUNKNOWN, DWORD, LPCLASSFACTORY, REFIID, PVOID*); - BOOL IsAccelerator(HACCEL, int, LPMSG, WORD*); - HGLOBAL OleGetIconOfFile(LPOLESTR, BOOL); - HGLOBAL OleGetIconOfClass(REFCLSID, LPOLESTR, BOOL); - HGLOBAL OleMetafilePictFromIconAndLabel(HICON, LPOLESTR, LPOLESTR, UINT); - HRESULT OleRegGetUserType(REFCLSID, DWORD, LPOLESTR*); - HRESULT OleRegGetMiscStatus(REFCLSID, DWORD, DWORD*); - HRESULT OleRegEnumFormatEtc (REFCLSID, DWORD, LPENUMFORMATETC*); - HRESULT OleRegEnumVerbs (REFCLSID, LPENUMOLEVERB*); - HRESULT OleConvertOLESTREAMToIStorage(LPOLESTREAM, LPSTORAGE, CPtr!(DVTARGETDEVICE)); - HRESULT OleConvertIStorageToOLESTREAM(LPSTORAGE, LPOLESTREAM); - HRESULT GetHGlobalFromILockBytes(LPLOCKBYTES, HGLOBAL*); - HRESULT CreateILockBytesOnHGlobal(HGLOBAL, BOOL, LPLOCKBYTES*); - HRESULT GetHGlobalFromStream(LPSTREAM, HGLOBAL*); - HRESULT CreateStreamOnHGlobal(HGLOBAL, BOOL, LPSTREAM*); - HRESULT OleDoAutoConvert(LPSTORAGE, LPCLSID); - HRESULT OleGetAutoConvert(REFCLSID, LPCLSID); - HRESULT OleSetAutoConvert(REFCLSID, REFCLSID); - HRESULT GetConvertStg(LPSTORAGE); - HRESULT SetConvertStg(LPSTORAGE, BOOL); - HRESULT OleConvertIStorageToOLESTREAMEx(LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM); - HRESULT OleConvertOLESTREAMToIStorageEx(LPOLESTREAM, LPSTORAGE, CLIPFORMAT*, LONG*, LONG*, DWORD*, LPSTGMEDIUM); -} +/***********************************************************************\ +* ole2.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ole2; +pragma(lib, "ole32"); + +public import win32.basetyps, win32.objbase, win32.oleauto, win32.olectlid, + win32.oleidl, win32.unknwn, win32.winerror, win32.uuid; +private import win32.objfwd, win32.objidl, win32.windef, win32.wtypes; +private import win32.winuser; // for LPMSG + +const E_DRAW = VIEW_E_DRAW; + +const DATA_E_FORMATETC = DV_E_FORMATETC; + +enum { + OLEIVERB_PRIMARY = 0, + OLEIVERB_SHOW = -1, + OLEIVERB_OPEN = -2, + OLEIVERB_HIDE = -3, + OLEIVERB_UIACTIVATE = -4, + OLEIVERB_INPLACEACTIVATE = -5, + OLEIVERB_DISCARDUNDOSTATE = -6 +} + +const EMBDHLP_INPROC_HANDLER = 0x0000L; +const EMBDHLP_INPROC_SERVER = 0x0001L; +const EMBDHLP_CREATENOW = 0x00000000L; +const EMBDHLP_DELAYCREATE = 0x00010000L; + +align(8): +struct OLESTREAM { + LPOLESTREAMVTBL lpstbl; +} +alias OLESTREAM* LPOLESTREAM; + +extern (Windows) { + struct OLESTREAMVTBL { + DWORD function (LPOLESTREAM, void*, DWORD) Get; + DWORD function (LPOLESTREAM, const(void)*, DWORD) Put; + } +} +alias OLESTREAMVTBL* LPOLESTREAMVTBL; + +extern (Windows) { + HRESULT CreateDataAdviseHolder(LPDATAADVISEHOLDER*); + DWORD OleBuildVersion(); + HRESULT ReadClassStg(LPSTORAGE, CLSID*); + HRESULT WriteClassStg(LPSTORAGE, REFCLSID); + HRESULT ReadClassStm(LPSTREAM, CLSID*); + HRESULT WriteClassStm(LPSTREAM, REFCLSID); + HRESULT WriteFmtUserTypeStg(LPSTORAGE, CLIPFORMAT, LPOLESTR); + HRESULT ReadFmtUserTypeStg(LPSTORAGE, CLIPFORMAT*, LPOLESTR*); + HRESULT OleInitialize(PVOID); + void OleUninitialize(); + HRESULT OleQueryLinkFromData(LPDATAOBJECT); + HRESULT OleQueryCreateFromData(LPDATAOBJECT); + HRESULT OleCreate(REFCLSID, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLinkFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateStaticFromData(LPDATAOBJECT, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLink(LPMONIKER, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateLinkToFile(LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleCreateFromFile(REFCLSID, LPCOLESTR, REFIID, DWORD, LPFORMATETC, LPOLECLIENTSITE, LPSTORAGE, PVOID*); + HRESULT OleLoad(LPSTORAGE, REFIID, LPOLECLIENTSITE, PVOID*); + HRESULT OleSave(LPPERSISTSTORAGE, LPSTORAGE, BOOL); + HRESULT OleLoadFromStream(LPSTREAM, REFIID, PVOID*); + HRESULT OleSaveToStream(LPPERSISTSTREAM, LPSTREAM); + HRESULT OleSetContainedObject(LPUNKNOWN, BOOL); + HRESULT OleNoteObjectVisible(LPUNKNOWN, BOOL); + HRESULT RegisterDragDrop(HWND, LPDROPTARGET); + HRESULT RevokeDragDrop(HWND); + HRESULT DoDragDrop(LPDATAOBJECT, LPDROPSOURCE, DWORD, PDWORD); + HRESULT OleSetClipboard(LPDATAOBJECT); + HRESULT OleGetClipboard(LPDATAOBJECT*); + HRESULT OleFlushClipboard(); + HRESULT OleIsCurrentClipboard(LPDATAOBJECT); + HOLEMENU OleCreateMenuDescriptor(HMENU, LPOLEMENUGROUPWIDTHS); + HRESULT OleSetMenuDescriptor(HOLEMENU, HWND, HWND, LPOLEINPLACEFRAME, LPOLEINPLACEACTIVEOBJECT); + HRESULT OleDestroyMenuDescriptor(HOLEMENU); + HRESULT OleTranslateAccelerator(LPOLEINPLACEFRAME, LPOLEINPLACEFRAMEINFO, LPMSG); + HANDLE OleDuplicateData(HANDLE, CLIPFORMAT, UINT); + HRESULT OleDraw(LPUNKNOWN, DWORD, HDC, LPCRECT); + HRESULT OleRun(LPUNKNOWN); + BOOL OleIsRunning(LPOLEOBJECT); + HRESULT OleLockRunning(LPUNKNOWN, BOOL, BOOL); + void ReleaseStgMedium(LPSTGMEDIUM); + HRESULT CreateOleAdviseHolder(LPOLEADVISEHOLDER*); + HRESULT OleCreateDefaultHandler(REFCLSID, LPUNKNOWN, REFIID, PVOID*); + HRESULT OleCreateEmbeddingHelper(REFCLSID, LPUNKNOWN, DWORD, LPCLASSFACTORY, REFIID, PVOID*); + BOOL IsAccelerator(HACCEL, int, LPMSG, WORD*); + HGLOBAL OleGetIconOfFile(LPOLESTR, BOOL); + HGLOBAL OleGetIconOfClass(REFCLSID, LPOLESTR, BOOL); + HGLOBAL OleMetafilePictFromIconAndLabel(HICON, LPOLESTR, LPOLESTR, UINT); + HRESULT OleRegGetUserType(REFCLSID, DWORD, LPOLESTR*); + HRESULT OleRegGetMiscStatus(REFCLSID, DWORD, DWORD*); + HRESULT OleRegEnumFormatEtc (REFCLSID, DWORD, LPENUMFORMATETC*); + HRESULT OleRegEnumVerbs (REFCLSID, LPENUMOLEVERB*); + HRESULT OleConvertOLESTREAMToIStorage(LPOLESTREAM, LPSTORAGE, const(DVTARGETDEVICE)*); + HRESULT OleConvertIStorageToOLESTREAM(LPSTORAGE, LPOLESTREAM); + HRESULT GetHGlobalFromILockBytes(LPLOCKBYTES, HGLOBAL*); + HRESULT CreateILockBytesOnHGlobal(HGLOBAL, BOOL, LPLOCKBYTES*); + HRESULT GetHGlobalFromStream(LPSTREAM, HGLOBAL*); + HRESULT CreateStreamOnHGlobal(HGLOBAL, BOOL, LPSTREAM*); + HRESULT OleDoAutoConvert(LPSTORAGE, LPCLSID); + HRESULT OleGetAutoConvert(REFCLSID, LPCLSID); + HRESULT OleSetAutoConvert(REFCLSID, REFCLSID); + HRESULT GetConvertStg(LPSTORAGE); + HRESULT SetConvertStg(LPSTORAGE, BOOL); + HRESULT OleConvertIStorageToOLESTREAMEx(LPSTORAGE, CLIPFORMAT, LONG, LONG, DWORD, LPSTGMEDIUM, LPOLESTREAM); + HRESULT OleConvertOLESTREAMToIStorageEx(LPOLESTREAM, LPSTORAGE, CLIPFORMAT*, LONG*, LONG*, DWORD*, LPSTGMEDIUM); +} Index: src/win32/ole2ver.d ================================================================== --- src/win32/ole2ver.d +++ src/win32/ole2ver.d @@ -1,14 +1,14 @@ -/***********************************************************************\ -* ole2ver.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.ole2ver; - -// These are apparently not documented on the MSDN site -const rmm = 23; -const rup = 639; +/***********************************************************************\ +* ole2ver.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ole2ver; + +// These are apparently not documented on the MSDN site +const rmm = 23; +const rup = 639; Index: src/win32/oleacc.d ================================================================== --- src/win32/oleacc.d +++ src/win32/oleacc.d @@ -1,214 +1,214 @@ -/***********************************************************************\ -* oleacc.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.oleacc; -pragma(lib, "oleacc.lib"); - -private import win32.basetyps, win32.oaidl, win32.unknwn, win32.wtypes, - win32.windef; - -enum { - DISPID_ACC_PARENT = -5000, - DISPID_ACC_CHILDCOUNT = -5001, - DISPID_ACC_CHILD = -5002, - DISPID_ACC_NAME = -5003, - DISPID_ACC_VALUE = -5004, - DISPID_ACC_DESCRIPTION = -5005, - DISPID_ACC_ROLE = -5006, - DISPID_ACC_STATE = -5007, - DISPID_ACC_HELP = -5008, - DISPID_ACC_HELPTOPIC = -5009, - DISPID_ACC_KEYBOARDSHORTCUT = -5010, - DISPID_ACC_FOCUS = -5011, - DISPID_ACC_SELECTION = -5012, - DISPID_ACC_DEFAULTACTION = -5013, - DISPID_ACC_SELECT = -5014, - DISPID_ACC_LOCATION = -5015, - DISPID_ACC_NAVIGATE = -5016, - DISPID_ACC_HITTEST = -5017, - DISPID_ACC_DODEFAULTACTION = -5018 -} - -enum { - NAVDIR_UP = 1, - NAVDIR_DOWN, - NAVDIR_LEFT, - NAVDIR_RIGHT, - NAVDIR_NEXT, - NAVDIR_PREVIOUS, - NAVDIR_FIRSTCHILD, - NAVDIR_LASTCHILD // = 8 -} - -enum { - ROLE_SYSTEM_TITLEBAR = 1, - ROLE_SYSTEM_MENUBAR, - ROLE_SYSTEM_SCROLLBAR, - ROLE_SYSTEM_GRIP, - ROLE_SYSTEM_SOUND, - ROLE_SYSTEM_CURSOR, - ROLE_SYSTEM_CARET, - ROLE_SYSTEM_ALERT, - ROLE_SYSTEM_WINDOW, - ROLE_SYSTEM_CLIENT, - ROLE_SYSTEM_MENUPOPUP, - ROLE_SYSTEM_MENUITEM, - ROLE_SYSTEM_TOOLTIP, - ROLE_SYSTEM_APPLICATION, - ROLE_SYSTEM_DOCUMENT, - ROLE_SYSTEM_PANE, - ROLE_SYSTEM_CHART, - ROLE_SYSTEM_DIALOG, - ROLE_SYSTEM_BORDER, - ROLE_SYSTEM_GROUPING, - ROLE_SYSTEM_SEPARATOR, - ROLE_SYSTEM_TOOLBAR, - ROLE_SYSTEM_STATUSBAR, - ROLE_SYSTEM_TABLE, - ROLE_SYSTEM_COLUMNHEADER, - ROLE_SYSTEM_ROWHEADER, - ROLE_SYSTEM_COLUMN, - ROLE_SYSTEM_ROW, - ROLE_SYSTEM_CELL, - ROLE_SYSTEM_LINK, - ROLE_SYSTEM_HELPBALLOON, - ROLE_SYSTEM_CHARACTER, - ROLE_SYSTEM_LIST, - ROLE_SYSTEM_LISTITEM, - ROLE_SYSTEM_OUTLINE, - ROLE_SYSTEM_OUTLINEITEM, - ROLE_SYSTEM_PAGETAB, - ROLE_SYSTEM_PROPERTYPAGE, - ROLE_SYSTEM_INDICATOR, - ROLE_SYSTEM_GRAPHIC, - ROLE_SYSTEM_STATICTEXT, - ROLE_SYSTEM_TEXT, - ROLE_SYSTEM_PUSHBUTTON, - ROLE_SYSTEM_CHECKBUTTON, - ROLE_SYSTEM_RADIOBUTTON, - ROLE_SYSTEM_COMBOBOX, - ROLE_SYSTEM_DROPLIST, - ROLE_SYSTEM_PROGRESSBAR, - ROLE_SYSTEM_DIAL, - ROLE_SYSTEM_HOTKEYFIELD, - ROLE_SYSTEM_SLIDER, - ROLE_SYSTEM_SPINBUTTON, - ROLE_SYSTEM_DIAGRAM, - ROLE_SYSTEM_ANIMATION, - ROLE_SYSTEM_EQUATION, - ROLE_SYSTEM_BUTTONDROPDOWN, - ROLE_SYSTEM_BUTTONMENU, - ROLE_SYSTEM_BUTTONDROPDOWNGRID, - ROLE_SYSTEM_WHITESPACE, - ROLE_SYSTEM_PAGETABLIST, - ROLE_SYSTEM_CLOCK // = 61 -} - -enum { - STATE_SYSTEM_UNAVAILABLE = 0x00000001, - STATE_SYSTEM_SELECTED = 0x00000002, - STATE_SYSTEM_FOCUSED = 0x00000004, - STATE_SYSTEM_PRESSED = 0x00000008, - STATE_SYSTEM_CHECKED = 0x00000010, - STATE_SYSTEM_MIXED = 0x00000020, - STATE_SYSTEM_READONLY = 0x00000040, - STATE_SYSTEM_HOTTRACKED = 0x00000080, - STATE_SYSTEM_DEFAULT = 0x00000100, - STATE_SYSTEM_EXPANDED = 0x00000200, - STATE_SYSTEM_COLLAPSED = 0x00000400, - STATE_SYSTEM_BUSY = 0x00000800, - STATE_SYSTEM_FLOATING = 0x00001000, - STATE_SYSTEM_MARQUEED = 0x00002000, - STATE_SYSTEM_ANIMATED = 0x00004000, - STATE_SYSTEM_INVISIBLE = 0x00008000, - STATE_SYSTEM_OFFSCREEN = 0x00010000, - STATE_SYSTEM_SIZEABLE = 0x00020000, - STATE_SYSTEM_MOVEABLE = 0x00040000, - STATE_SYSTEM_SELFVOICING = 0x00080000, - STATE_SYSTEM_FOCUSABLE = 0x00100000, - STATE_SYSTEM_SELECTABLE = 0x00200000, - STATE_SYSTEM_LINKED = 0x00400000, - STATE_SYSTEM_TRAVERSED = 0x00800000, - STATE_SYSTEM_MULTISELECTABLE = 0x01000000, - STATE_SYSTEM_EXTSELECTABLE = 0x02000000, - STATE_SYSTEM_ALERT_LOW = 0x04000000, - STATE_SYSTEM_ALERT_MEDIUM = 0x08000000, - STATE_SYSTEM_ALERT_HIGH = 0x10000000, - STATE_SYSTEM_VALID = 0x1fffffff -} - -enum SELFLAG -{ - SELFLAG_NONE = 0, - SELFLAG_TAKEFOCUS = 1, - SELFLAG_TAKESELECTION = 2, - SELFLAG_EXTENDSELECTION = 4, - SELFLAG_ADDSELECTION = 8, - SELFLAG_REMOVESELECTION = 16 -} - -const SELFLAG_VALID = 0x0000001F; - - -interface IAccessible : IDispatch { - HRESULT get_accParent(IDispatch**); - HRESULT get_accChildCount(int*); - HRESULT get_accChild(VARIANT, IDispatch **); - HRESULT get_accName(VARIANT, BSTR*); - HRESULT get_accValue(VARIANT, BSTR*); - HRESULT get_accDescription(VARIANT, BSTR*); - HRESULT get_accRole(VARIANT, VARIANT*); - HRESULT get_accState(VARIANT, VARIANT*); - HRESULT get_accHelp(VARIANT, BSTR*); - HRESULT get_accHelpTopic(BSTR*, VARIANT, int*); - HRESULT get_accKeyboardShortcut(VARIANT, BSTR*); - HRESULT get_accFocus(VARIANT*); - HRESULT get_accSelection(VARIANT*); - HRESULT get_accDefaultAction(VARIANT, BSTR*); - - HRESULT accSelect(int, VARIANT); - HRESULT accLocation(int*, int*, int*, int*, VARIANT); - HRESULT accNavigate(int, VARIANT, VARIANT*); - HRESULT accHitTest(int, int, VARIANT*); - HRESULT accDoDefaultAction(VARIANT); - - HRESULT put_accName(VARIANT, BSTR); - HRESULT put_accValue(VARIANT, BSTR); -} - -alias IAccessible* LPACCESSIBLE; - -extern (Windows) { - HRESULT AccessibleChildren(IAccessible*, LONG, LONG, VARIANT*, LONG*); - HRESULT AccessibleObjectFromEvent(HWND, DWORD, DWORD, IAccessible*, VARIANT*); - HRESULT AccessibleObjectFromPoint(POINT, IAccessible**, VARIANT*); - HRESULT AccessibleObjectFromWindow(HWND, DWORD, REFIID, void**); - HRESULT CreateStdAccessibleObject(HWND, LONG, REFIID, void**); - HRESULT CreateStdAccessibleProxyA(HWND, LPCSTR, LONG, REFIID, void**); - HRESULT CreateStdAccessibleProxyW(HWND, LPCWSTR, LONG, REFIID, void**); - - void GetOleaccVersionInfo(DWORD*, DWORD*); - UINT GetRoleTextA(DWORD, LPSTR, UINT); - UINT GetRoleTextW(DWORD, LPWSTR, UINT); - UINT GetStateTextA(DWORD, LPSTR, UINT); - UINT GetStateTextW(DWORD, LPWSTR, UINT); - LRESULT LresultFromObject(REFIID, WPARAM, LPUNKNOWN); - HRESULT ObjectFromLresult(LRESULT, REFIID, WPARAM, void**); - HRESULT WindowFromAccessibleObject(IAccessible*, HWND*); -} - -version(Unicode) { - alias CreateStdAccessibleProxyW CreateStdAccessibleProxy; - alias GetRoleTextW GetRoleText; - alias GetStateTextW GetStateText; -} else { - alias CreateStdAccessibleProxyA CreateStdAccessibleProxy; - alias GetRoleTextA GetRoleText; - alias GetStateTextA GetStateText; -} +/***********************************************************************\ +* oleacc.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oleacc; +pragma(lib, "oleacc"); + +private import win32.basetyps, win32.oaidl, win32.unknwn, win32.wtypes, + win32.windef; + +enum { + DISPID_ACC_PARENT = -5000, + DISPID_ACC_CHILDCOUNT = -5001, + DISPID_ACC_CHILD = -5002, + DISPID_ACC_NAME = -5003, + DISPID_ACC_VALUE = -5004, + DISPID_ACC_DESCRIPTION = -5005, + DISPID_ACC_ROLE = -5006, + DISPID_ACC_STATE = -5007, + DISPID_ACC_HELP = -5008, + DISPID_ACC_HELPTOPIC = -5009, + DISPID_ACC_KEYBOARDSHORTCUT = -5010, + DISPID_ACC_FOCUS = -5011, + DISPID_ACC_SELECTION = -5012, + DISPID_ACC_DEFAULTACTION = -5013, + DISPID_ACC_SELECT = -5014, + DISPID_ACC_LOCATION = -5015, + DISPID_ACC_NAVIGATE = -5016, + DISPID_ACC_HITTEST = -5017, + DISPID_ACC_DODEFAULTACTION = -5018 +} + +enum { + NAVDIR_UP = 1, + NAVDIR_DOWN, + NAVDIR_LEFT, + NAVDIR_RIGHT, + NAVDIR_NEXT, + NAVDIR_PREVIOUS, + NAVDIR_FIRSTCHILD, + NAVDIR_LASTCHILD // = 8 +} + +enum { + ROLE_SYSTEM_TITLEBAR = 1, + ROLE_SYSTEM_MENUBAR, + ROLE_SYSTEM_SCROLLBAR, + ROLE_SYSTEM_GRIP, + ROLE_SYSTEM_SOUND, + ROLE_SYSTEM_CURSOR, + ROLE_SYSTEM_CARET, + ROLE_SYSTEM_ALERT, + ROLE_SYSTEM_WINDOW, + ROLE_SYSTEM_CLIENT, + ROLE_SYSTEM_MENUPOPUP, + ROLE_SYSTEM_MENUITEM, + ROLE_SYSTEM_TOOLTIP, + ROLE_SYSTEM_APPLICATION, + ROLE_SYSTEM_DOCUMENT, + ROLE_SYSTEM_PANE, + ROLE_SYSTEM_CHART, + ROLE_SYSTEM_DIALOG, + ROLE_SYSTEM_BORDER, + ROLE_SYSTEM_GROUPING, + ROLE_SYSTEM_SEPARATOR, + ROLE_SYSTEM_TOOLBAR, + ROLE_SYSTEM_STATUSBAR, + ROLE_SYSTEM_TABLE, + ROLE_SYSTEM_COLUMNHEADER, + ROLE_SYSTEM_ROWHEADER, + ROLE_SYSTEM_COLUMN, + ROLE_SYSTEM_ROW, + ROLE_SYSTEM_CELL, + ROLE_SYSTEM_LINK, + ROLE_SYSTEM_HELPBALLOON, + ROLE_SYSTEM_CHARACTER, + ROLE_SYSTEM_LIST, + ROLE_SYSTEM_LISTITEM, + ROLE_SYSTEM_OUTLINE, + ROLE_SYSTEM_OUTLINEITEM, + ROLE_SYSTEM_PAGETAB, + ROLE_SYSTEM_PROPERTYPAGE, + ROLE_SYSTEM_INDICATOR, + ROLE_SYSTEM_GRAPHIC, + ROLE_SYSTEM_STATICTEXT, + ROLE_SYSTEM_TEXT, + ROLE_SYSTEM_PUSHBUTTON, + ROLE_SYSTEM_CHECKBUTTON, + ROLE_SYSTEM_RADIOBUTTON, + ROLE_SYSTEM_COMBOBOX, + ROLE_SYSTEM_DROPLIST, + ROLE_SYSTEM_PROGRESSBAR, + ROLE_SYSTEM_DIAL, + ROLE_SYSTEM_HOTKEYFIELD, + ROLE_SYSTEM_SLIDER, + ROLE_SYSTEM_SPINBUTTON, + ROLE_SYSTEM_DIAGRAM, + ROLE_SYSTEM_ANIMATION, + ROLE_SYSTEM_EQUATION, + ROLE_SYSTEM_BUTTONDROPDOWN, + ROLE_SYSTEM_BUTTONMENU, + ROLE_SYSTEM_BUTTONDROPDOWNGRID, + ROLE_SYSTEM_WHITESPACE, + ROLE_SYSTEM_PAGETABLIST, + ROLE_SYSTEM_CLOCK // = 61 +} + +enum { + STATE_SYSTEM_UNAVAILABLE = 0x00000001, + STATE_SYSTEM_SELECTED = 0x00000002, + STATE_SYSTEM_FOCUSED = 0x00000004, + STATE_SYSTEM_PRESSED = 0x00000008, + STATE_SYSTEM_CHECKED = 0x00000010, + STATE_SYSTEM_MIXED = 0x00000020, + STATE_SYSTEM_READONLY = 0x00000040, + STATE_SYSTEM_HOTTRACKED = 0x00000080, + STATE_SYSTEM_DEFAULT = 0x00000100, + STATE_SYSTEM_EXPANDED = 0x00000200, + STATE_SYSTEM_COLLAPSED = 0x00000400, + STATE_SYSTEM_BUSY = 0x00000800, + STATE_SYSTEM_FLOATING = 0x00001000, + STATE_SYSTEM_MARQUEED = 0x00002000, + STATE_SYSTEM_ANIMATED = 0x00004000, + STATE_SYSTEM_INVISIBLE = 0x00008000, + STATE_SYSTEM_OFFSCREEN = 0x00010000, + STATE_SYSTEM_SIZEABLE = 0x00020000, + STATE_SYSTEM_MOVEABLE = 0x00040000, + STATE_SYSTEM_SELFVOICING = 0x00080000, + STATE_SYSTEM_FOCUSABLE = 0x00100000, + STATE_SYSTEM_SELECTABLE = 0x00200000, + STATE_SYSTEM_LINKED = 0x00400000, + STATE_SYSTEM_TRAVERSED = 0x00800000, + STATE_SYSTEM_MULTISELECTABLE = 0x01000000, + STATE_SYSTEM_EXTSELECTABLE = 0x02000000, + STATE_SYSTEM_ALERT_LOW = 0x04000000, + STATE_SYSTEM_ALERT_MEDIUM = 0x08000000, + STATE_SYSTEM_ALERT_HIGH = 0x10000000, + STATE_SYSTEM_VALID = 0x1fffffff +} + +enum SELFLAG +{ + SELFLAG_NONE = 0, + SELFLAG_TAKEFOCUS = 1, + SELFLAG_TAKESELECTION = 2, + SELFLAG_EXTENDSELECTION = 4, + SELFLAG_ADDSELECTION = 8, + SELFLAG_REMOVESELECTION = 16 +} + +const SELFLAG_VALID = 0x0000001F; + + +interface IAccessible : IDispatch { + HRESULT get_accParent(IDispatch*); + HRESULT get_accChildCount(int*); + HRESULT get_accChild(VARIANT, IDispatch*); + HRESULT get_accName(VARIANT, BSTR*); + HRESULT get_accValue(VARIANT, BSTR*); + HRESULT get_accDescription(VARIANT, BSTR*); + HRESULT get_accRole(VARIANT, VARIANT*); + HRESULT get_accState(VARIANT, VARIANT*); + HRESULT get_accHelp(VARIANT, BSTR*); + HRESULT get_accHelpTopic(BSTR*, VARIANT, int*); + HRESULT get_accKeyboardShortcut(VARIANT, BSTR*); + HRESULT get_accFocus(VARIANT*); + HRESULT get_accSelection(VARIANT*); + HRESULT get_accDefaultAction(VARIANT, BSTR*); + + HRESULT accSelect(int, VARIANT); + HRESULT accLocation(int*, int*, int*, int*, VARIANT); + HRESULT accNavigate(int, VARIANT, VARIANT*); + HRESULT accHitTest(int, int, VARIANT*); + HRESULT accDoDefaultAction(VARIANT); + + HRESULT put_accName(VARIANT, BSTR); + HRESULT put_accValue(VARIANT, BSTR); +} + +alias IAccessible LPACCESSIBLE; + +extern (Windows) { + HRESULT AccessibleChildren(IAccessible, LONG, LONG, VARIANT*, LONG*); + HRESULT AccessibleObjectFromEvent(HWND, DWORD, DWORD, IAccessible, VARIANT*); + HRESULT AccessibleObjectFromPoint(POINT, IAccessible*, VARIANT*); + HRESULT AccessibleObjectFromWindow(HWND, DWORD, REFIID, void**); + HRESULT CreateStdAccessibleObject(HWND, LONG, REFIID, void**); + HRESULT CreateStdAccessibleProxyA(HWND, LPCSTR, LONG, REFIID, void**); + HRESULT CreateStdAccessibleProxyW(HWND, LPCWSTR, LONG, REFIID, void**); + + void GetOleaccVersionInfo(DWORD*, DWORD*); + UINT GetRoleTextA(DWORD, LPSTR, UINT); + UINT GetRoleTextW(DWORD, LPWSTR, UINT); + UINT GetStateTextA(DWORD, LPSTR, UINT); + UINT GetStateTextW(DWORD, LPWSTR, UINT); + LRESULT LresultFromObject(REFIID, WPARAM, LPUNKNOWN); + HRESULT ObjectFromLresult(LRESULT, REFIID, WPARAM, void**); + HRESULT WindowFromAccessibleObject(IAccessible, HWND*); +} + +version(Unicode) { + alias CreateStdAccessibleProxyW CreateStdAccessibleProxy; + alias GetRoleTextW GetRoleText; + alias GetStateTextW GetStateText; +} else { + alias CreateStdAccessibleProxyA CreateStdAccessibleProxy; + alias GetRoleTextA GetRoleText; + alias GetStateTextA GetStateText; +} Index: src/win32/oleauto.d ================================================================== --- src/win32/oleauto.d +++ src/win32/oleauto.d @@ -1,684 +1,684 @@ -/***********************************************************************\ -* oleauto.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.oleauto; -pragma(lib, "oleaut32.lib"); - -import win32.oaidl; -private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; -private import win32.winbase; // for SYSTEMTIME - -align(8): -const STDOLE_MAJORVERNUM = 1; -const STDOLE_MINORVERNUM = 0; -const STDOLE_LCID = 0; - -const VARIANT_NOVALUEPROP = 0x01; -const VARIANT_ALPHABOOL = 0x02; -const VARIANT_NOUSEOVERRIDE = 0x04; -const VARIANT_LOCALBOOL = 0x08; - -const VAR_TIMEVALUEONLY = 0x0001; -const VAR_DATEVALUEONLY = 0x0002; -const VAR_VALIDDATE = 0x0004; -const VAR_CALENDAR_HIJRI = 0x0008; -const VAR_LOCALBOOL = 0x0010; -const VAR_FORMAT_NOSUBSTITUTE = 0x0020; -const VAR_FOURDIGITYEARS = 0x0040; -const VAR_CALENDAR_THAI = 0x0080; -const VAR_CALENDAR_GREGORIAN = 0x0100; - -const MEMBERID_NIL = DISPID_UNKNOWN; -const ID_DEFAULTINST = -2; -const DISPATCH_METHOD = 1; -const DISPATCH_PROPERTYGET = 2; -const DISPATCH_PROPERTYPUT = 4; -const DISPATCH_PROPERTYPUTREF = 8; - -//ULONG LHashValOfName(LCID l, OLECHAR* n) { return LHashValOfNameSys(SYSKIND.SYS_WIN32, l, n); } - -// DAC: These aren't in the 2003 SDK. -//MACRO #define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h))) -//MACRO #define IsHashValCompatible(h1, h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2)))) - -enum { - ACTIVEOBJECT_STRONG = 0, - ACTIVEOBJECT_WEAK = 1 -} - -// DAC: These seem to be irrelevant for D. -//#define V_UNION(X, Y) ((X)->Y) -//#define V_VT(X) ((X)->vt) -//#define V_BOOL(X) V_UNION(X, boolVal) -//#define V_ISBYREF(X) (V_VT(X)&VT_BYREF) -//#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY) -//#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR) -//#define V_NONE(X) V_I2(X) -//#define V_UI1(X) V_UNION(X, bVal) -//#define V_UI1REF(X) V_UNION(X, pbVal) -//#define V_I2(X) V_UNION(X, iVal) -//#define V_UI2(X) V_UNION(X, uiVal) -//#define V_I2REF(X) V_UNION(X, piVal) -//#define V_I4(X) V_UNION(X, lVal) -//#define V_UI4(X) V_UNION(X, ulVal) -//#define V_I4REF(X) V_UNION(X, plVal) -//#define V_UI4REF(X) V_UNION(X, pulVal) -//#define V_I8(X) V_UNION(X, llVal) -//#define V_UI8(X) V_UNION(X, ullVal) -//#define V_I8REF(X) V_UNION(X, pllVal) -//#define V_UI8REF(X) V_UNION(X, pullVal) -//#define V_R4(X) V_UNION(X, fltVal) -//#define V_R4REF(X) V_UNION(X, pfltVal) -//#define V_R8(X) V_UNION(X, dblVal) -//#define V_R8REF(X) V_UNION(X, pdblVal) -//#define V_CY(X) V_UNION(X, cyVal) -//#define V_CYREF(X) V_UNION(X, pcyVal) -//#define V_DATE(X) V_UNION(X, date) -//#define V_DATEREF(X) V_UNION(X, pdate) -//#define V_BSTR(X) V_UNION(X, bstrVal) -//#define V_BSTRREF(X) V_UNION(X, pbstrVal) -//#define V_DISPATCH(X) V_UNION(X, pdispVal) -//#define V_DISPATCHREF(X) V_UNION(X, ppdispVal) -//#define V_ERROR(X) V_UNION(X, scode) -//#define V_ERRORREF(X) V_UNION(X, pscode) -//#define V_BOOLREF(X) V_UNION(X, pboolVal) -//#define V_UNKNOWN(X) V_UNION(X, punkVal) -//#define V_UNKNOWNREF(X) V_UNION(X, ppunkVal) -//#define V_VARIANTREF(X) V_UNION(X, pvarVal) -//#define V_LPSTR(X) V_UNION(X, pszVal) -//#define V_LPSTRREF(X) V_UNION(X, ppszVal) -//#define V_LPWSTR(X) V_UNION(X, pwszVal) -//#define V_LPWSTRREF(X) V_UNION(X, ppwszVal) -//#define V_FILETIME(X) V_UNION(X, filetime) -//#define V_FILETIMEREF(X) V_UNION(X, pfiletime) -//#define V_BLOB(X) V_UNION(X, blob) -//#define V_UUID(X) V_UNION(X, puuid) -//#define V_CLSID(X) V_UNION(X, puuid) -//#define V_ARRAY(X) V_UNION(X, parray) -//#define V_ARRAYREF(X) V_UNION(X, pparray) -//#define V_BYREF(X) V_UNION(X, byref) -//#define V_DECIMAL(X) ((X)->decVal) -//#define V_DECIMALREF(X) V_UNION(X, pdecVal) -//#define V_I1(X) V_UNION(X, cVal) - -//#ifdef _WIN64 -//#define V_INT_PTR(X) V_I8(X) -//#define V_UINT_PTR(X) V_UI8(X) -//#define V_INT_PTRREF(X) V_I8REF(X) -//#define V_UINT_PTRREF(X) V_UI8REF(X) -//#else -//#define V_INT_PTR(X) V_I4(X) -//#define V_UINT_PTR(X) V_UI4(X) -//#define V_INT_PTRREF(X) V_I4REF(X) -//#define V_UINT_PTRREF(X) V_UI4REF(X) -//#endif - -enum { - VARCMP_LT = 0, - VARCMP_EQ, - VARCMP_GT, - VARCMP_NULL // = 3 -} - -const LOCALE_USE_NLS = 0x10000000; - -const VARIANT_NOUSEROVERRIDE = 0x04; -const VARIANT_CALENDAR_HIJRI = 0x08; -const VARIANT_CALENDAR_THAI = 0x20; -const VARIANT_CALENDAR_GREGORIAN = 0x40; -const VARIANT_USE_NLS = 0x80; - -const NUMPRS_LEADING_WHITE = 0x00001; -const NUMPRS_TRAILING_WHITE = 0x00002; -const NUMPRS_LEADING_PLUS = 0x00004; -const NUMPRS_TRAILING_PLUS = 0x00008; -const NUMPRS_LEADING_MINUS = 0x00010; -const NUMPRS_TRAILING_MINUS = 0x00020; -const NUMPRS_HEX_OCT = 0x00040; -const NUMPRS_PARENS = 0x00080; -const NUMPRS_DECIMAL = 0x00100; -const NUMPRS_THOUSANDS = 0x00200; -const NUMPRS_CURRENCY = 0x00400; -const NUMPRS_EXPONENT = 0x00800; -const NUMPRS_USE_ALL = 0x01000; -const NUMPRS_STD = 0x01FFF; -const NUMPRS_NEG = 0x10000; -const NUMPRS_INEXACT = 0x20000; - -const VTBIT_I1 = 1 << VARENUM.VT_I1; -const VTBIT_UI1 = 1 << VARENUM.VT_UI1; -const VTBIT_I2 = 1 << VARENUM.VT_I2; -const VTBIT_UI2 = 1 << VARENUM.VT_UI2; -const VTBIT_I4 = 1 << VARENUM.VT_I4; -const VTBIT_UI4 = 1 << VARENUM.VT_UI4; -const VTBIT_I8 = 1 << VARENUM.VT_I8; -const VTBIT_UI8 = 1 << VARENUM.VT_UI8; -const VTBIT_R4 = 1 << VARENUM.VT_R4; -const VTBIT_R8 = 1 << VARENUM.VT_R8; -const VTBIT_CY = 1 << VARENUM.VT_CY; -const VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL; - - -enum REGKIND{ - REGKIND_DEFAULT, - REGKIND_REGISTER, - REGKIND_NONE -} - -struct PARAMDATA{ - OLECHAR* szName; - VARTYPE vt; -} -alias PARAMDATA* LPPARAMDATA; - -struct METHODDATA{ - OLECHAR* szName; - PARAMDATA* ppdata; - DISPID dispid; - UINT iMeth; - CALLCONV cc; - UINT cArgs; - WORD wFlags; - VARTYPE vtReturn; -} -alias METHODDATA* LPMETHODDATA; - -struct INTERFACEDATA{ - METHODDATA* pmethdata; - UINT cMembers; -} -alias INTERFACEDATA* LPINTERFACEDATA; - -struct UDATE { - SYSTEMTIME st; - USHORT wDayOfYear; -} - -struct NUMPARSE { - int cDig; - uint dwInFlags; - uint dwOutFlags; - int cchUsed; - int nBaseShift; - int nPwr10; -} - - -// DAC: In MinGW, these were declared but not defined in oaidl. -// The SDK docs suggest they belong in this file instead. - -deprecated { // not actually deprecated, but they aren't converted yet. - // (will need to reinstate CreateTypeLib as well) - interface ICreateTypeInfo {}; - interface ICreateTypeInfo2 {}; - interface ICreateTypeLib {}; - interface ICreateTypeLib2 {}; - - alias ICreateTypeInfo* LPCREATETYPEINFO; - alias ICreateTypeInfo2* LPCREATETYPEINFO2; - alias ICreateTypeLib* LPCREATETYPELIB; - alias ICreateTypeLib2* LPCREATETYPELIB2; -} - -extern (Windows) { - BSTR SysAllocString(CPtr!(OLECHAR)); - int SysReAllocString(BSTR*, CPtr!(OLECHAR)); - BSTR SysAllocStringLen(CPtr!(OLECHAR), uint); - int SysReAllocStringLen(BSTR*, CPtr!(OLECHAR), uint); - void SysFreeString(BSTR); - uint SysStringLen(BSTR); - uint SysStringByteLen(BSTR); - BSTR SysAllocStringByteLen(CPtr!(char), uint); - int DosDateTimeToVariantTime(ushort, ushort, double*); - int VariantTimeToDosDateTime(double, ushort*, ushort*); - int VariantTimeToSystemTime(double, LPSYSTEMTIME); - int SystemTimeToVariantTime(LPSYSTEMTIME, double*); - HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*); - HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*); - HRESULT VarUdateFromDate(DATE, ULONG, UDATE*); - HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**); - HRESULT SafeArrayAllocData(SAFEARRAY*); - SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*); - HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*); - HRESULT SafeArrayDestroyData(SAFEARRAY*); - HRESULT SafeArrayDestroy(SAFEARRAY*); - HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*); - uint SafeArrayGetDim(SAFEARRAY*); - uint SafeArrayGetElemsize(SAFEARRAY*); - HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*); - HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*); - HRESULT SafeArrayLock(SAFEARRAY*); - HRESULT SafeArrayUnlock(SAFEARRAY*); - HRESULT SafeArrayAccessData(SAFEARRAY*, void**); - HRESULT SafeArrayUnaccessData(SAFEARRAY*); - HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*); - HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*); - HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**); - HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**); - SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG); - SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID); - HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**); - HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*); - HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo*); - HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo**); - HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID); - HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*); - void VariantInit(VARIANTARG*); - HRESULT VariantClear(VARIANTARG*); - HRESULT VariantCopy(VARIANTARG*, VARIANTARG*); - HRESULT VariantCopyInd(VARIANT*, VARIANTARG*); - HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE); - HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE); - HRESULT VarUI1FromI2(short, ubyte*); - HRESULT VarUI1FromI4(int, ubyte*); - HRESULT VarUI1FromR4(float, ubyte*); - HRESULT VarUI1FromR8(double, ubyte*); - HRESULT VarUI1FromCy(CY, ubyte*); - HRESULT VarUI1FromDate(DATE, ubyte*); - HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*); - HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*); - HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*); - HRESULT VarI2FromUI1(ubyte, short*); - HRESULT VarI2FromI4(int, short*); - HRESULT VarI2FromR4(float, short*); - HRESULT VarI2FromR8(double, short*); - HRESULT VarI2FromCy(CY cyIn, short*); - HRESULT VarI2FromDate(DATE, short*); - HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*); - HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*); - HRESULT VarI2FromBool(VARIANT_BOOL, short*); - HRESULT VarI4FromUI1(ubyte, int*); - HRESULT VarI4FromI2(short, int*); - HRESULT VarI4FromR4(float, int*); - HRESULT VarI4FromR8(double, int*); - HRESULT VarI4FromCy(CY, int*); - HRESULT VarI4FromDate(DATE, int*); - HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*); - HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*); - HRESULT VarI4FromBool(VARIANT_BOOL, int*); - HRESULT VarR4FromUI1(ubyte, float*); - HRESULT VarR4FromI2(short, float*); - HRESULT VarR4FromI4(int, float*); - HRESULT VarR4FromR8(double, float*); - HRESULT VarR4FromCy(CY, float*); - HRESULT VarR4FromDate(DATE, float*); - HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*); - HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*); - HRESULT VarR4FromBool(VARIANT_BOOL, float*); - HRESULT VarR8FromUI1(ubyte, double*); - HRESULT VarR8FromI2(short, double*); - HRESULT VarR8FromI4(int, double*); - HRESULT VarR8FromR4(float, double*); - HRESULT VarR8FromCy(CY, double*); - HRESULT VarR8FromDate(DATE, double*); - HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*); - HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*); - HRESULT VarR8FromBool(VARIANT_BOOL, double*); - HRESULT VarR8FromDec(DECIMAL*, double*); - HRESULT VarDateFromUI1(ubyte, DATE*); - HRESULT VarDateFromI2(short, DATE*); - HRESULT VarDateFromI4(int, DATE*); - HRESULT VarDateFromR4(float, DATE*); - HRESULT VarDateFromR8(double, DATE*); - HRESULT VarDateFromCy(CY, DATE*); - HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*); - HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*); - HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); - HRESULT VarCyFromUI1(ubyte, CY*); - HRESULT VarCyFromI2(short, CY*); - HRESULT VarCyFromI4(int, CY*); - HRESULT VarCyFromR4(float, CY*); - HRESULT VarCyFromR8(double, CY*); - HRESULT VarCyFromDate(DATE, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*); - HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*); - HRESULT VarCyFromBool(VARIANT_BOOL, CY*); - HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*); - HRESULT VarBstrFromI2(short, LCID, uint, BSTR*); - HRESULT VarBstrFromI4(int, LCID, uint, BSTR*); - HRESULT VarBstrFromR4(float, LCID, uint, BSTR*); - HRESULT VarBstrFromR8(double, LCID, uint, BSTR*); - HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*); - HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*); - HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*); - HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*); - HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*); - HRESULT VarBoolFromI2(short, VARIANT_BOOL*); - HRESULT VarBoolFromI4(int, VARIANT_BOOL*); - HRESULT VarBoolFromR4(float, VARIANT_BOOL*); - HRESULT VarBoolFromR8(double, VARIANT_BOOL*); - HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); - HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); - HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*); - HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*); - HRESULT VarDecFromR8(double, DECIMAL*); - ULONG LHashValOfNameSysA(SYSKIND, LCID, CPtr!(char)); - ULONG LHashValOfNameSys(SYSKIND, LCID, CPtr!(OLECHAR)); - HRESULT LoadTypeLib(CPtr!(OLECHAR), LPTYPELIB*); - HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*); - HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*); - HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR); - HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*); - HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND); - // not actually deprecated, but depends on unconverted ICreateTypeLib - deprecated HRESULT CreateTypeLib(SYSKIND, CPtr!(OLECHAR), LPCREATETYPELIB*); - HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*); - HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*); - HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); - HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*); - HRESULT CreateStdDispatch(IUnknown*, void*, LPTYPEINFO, IUnknown**); - HRESULT RegisterActiveObject(IUnknown*, REFCLSID, DWORD, DWORD*); - HRESULT RevokeActiveObject(DWORD, void*); - HRESULT GetActiveObject(REFCLSID, void*, IUnknown**); - HRESULT SetErrorInfo(uint, LPERRORINFO); - HRESULT GetErrorInfo(uint, LPERRORINFO*); - HRESULT CreateErrorInfo(LPCREATEERRORINFO*); - uint OaBuildVersion(); - HRESULT VectorFromBstr (BSTR, SAFEARRAY**); - HRESULT BstrFromVector (SAFEARRAY*, BSTR*); - HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*); - HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*); - - HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); - - HRESULT VarUI1FromI2(SHORT, BYTE*); - HRESULT VarUI1FromI4(LONG, BYTE*); - HRESULT VarUI1FromI8(LONG64, BYTE*); - HRESULT VarUI1FromR4(FLOAT, BYTE*); - HRESULT VarUI1FromR8(DOUBLE, BYTE*); - HRESULT VarUI1FromDate(DATE, BYTE*); - HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*); - HRESULT VarUI1FromI1(byte, BYTE*); - HRESULT VarUI1FromUI2(USHORT, BYTE*); - HRESULT VarUI1FromUI4(ULONG, BYTE*); - HRESULT VarUI1FromUI8(ULONG64, BYTE*); - HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*); - HRESULT VarUI1FromCy(CY, BYTE*); - HRESULT VarUI1FromDec(DECIMAL*, BYTE*); - HRESULT VarUI1FromDisp(IDispatch*, LCID, BYTE*); - - HRESULT VarI2FromUI1(BYTE, SHORT*); - HRESULT VarI2FromI4(LONG, SHORT*); - HRESULT VarI2FromI8(LONG64, SHORT*); - HRESULT VarI2FromR4(FLOAT, SHORT*); - HRESULT VarI2FromR8(DOUBLE, SHORT*); - HRESULT VarI2FromDate(DATE, SHORT*); - HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*); - HRESULT VarI2FromI1(byte, SHORT*); - HRESULT VarI2FromUI2(USHORT, SHORT*); - HRESULT VarI2FromUI4(ULONG, SHORT*); - HRESULT VarI2FromUI8(ULONG64, SHORT*); - HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*); - HRESULT VarI2FromCy(CY, SHORT*); - HRESULT VarI2FromDec(DECIMAL*, SHORT*); - HRESULT VarI2FromDisp(IDispatch*, LCID, SHORT*); - - HRESULT VarI4FromUI1(BYTE, LONG*); - HRESULT VarI4FromI2(SHORT, LONG*); - HRESULT VarI4FromI8(LONG64, LONG*); - HRESULT VarI4FromR4(FLOAT, LONG*); - HRESULT VarI4FromR8(DOUBLE, LONG*); - HRESULT VarI4FromDate(DATE, LONG*); - HRESULT VarI4FromBool(VARIANT_BOOL, LONG*); - HRESULT VarI4FromI1(byte, LONG*); - HRESULT VarI4FromUI2(USHORT, LONG*); - HRESULT VarI4FromUI4(ULONG, LONG*); - HRESULT VarI4FromUI8(ULONG64, LONG*); - HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*); - HRESULT VarI4FromCy(CY, LONG*); - HRESULT VarI4FromDec(DECIMAL*, LONG*); - HRESULT VarI4FromDisp(IDispatch*, LCID, LONG*); - - HRESULT VarI8FromUI1(BYTE, LONG64*); - HRESULT VarI8FromI2(SHORT, LONG64*); - HRESULT VarI8FromI4(LONG, LONG64*); - HRESULT VarI8FromR4(FLOAT, LONG64*); - HRESULT VarI8FromR8(DOUBLE, LONG64*); - HRESULT VarI8FromDate(DATE, LONG64*); - HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*); - HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*); - HRESULT VarI8FromI1(byte, LONG64*); - HRESULT VarI8FromUI2(USHORT, LONG64*); - HRESULT VarI8FromUI4(ULONG, LONG64*); - HRESULT VarI8FromUI8(ULONG64, LONG64*); - HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*); - HRESULT VarI8FromInt(INT intIn, LONG64*); - HRESULT VarI8FromCy(CY, LONG64*); - HRESULT VarI8FromDisp(IDispatch*, LCID, LONG64*); - - HRESULT VarR4FromUI1(BYTE, FLOAT*); - HRESULT VarR4FromI2(SHORT, FLOAT*); - HRESULT VarR4FromI4(LONG, FLOAT*); - HRESULT VarR4FromI8(LONG64, FLOAT*); - HRESULT VarR4FromR8(DOUBLE, FLOAT*); - HRESULT VarR4FromDate(DATE, FLOAT*); - HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*); - HRESULT VarR4FromI1(byte, FLOAT*); - HRESULT VarR4FromUI2(USHORT, FLOAT*); - HRESULT VarR4FromUI4(ULONG, FLOAT*); - HRESULT VarR4FromUI8(ULONG64, FLOAT*); - HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*); - HRESULT VarR4FromCy(CY, FLOAT*); - HRESULT VarR4FromDec(DECIMAL*, FLOAT*); - HRESULT VarR4FromDisp(IDispatch*, LCID, FLOAT*); - - HRESULT VarR8FromUI1(BYTE, double*); - HRESULT VarR8FromI2(SHORT, double*); - HRESULT VarR8FromI4(LONG, double*); - HRESULT VarR8FromI8(LONG64, double*); - HRESULT VarR8FromR4(FLOAT, double*); - HRESULT VarR8FromDate(DATE, double*); - HRESULT VarR8FromBool(VARIANT_BOOL, double*); - HRESULT VarR8FromI1(byte, double*); - HRESULT VarR8FromUI2(USHORT, double*); - HRESULT VarR8FromUI4(ULONG, double*); - HRESULT VarR8FromUI8(ULONG64, double*); - HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*); - HRESULT VarR8FromCy(CY, double*); - HRESULT VarR8FromDec(DECIMAL*, double*); - HRESULT VarR8FromDisp(IDispatch*, LCID, double*); - - HRESULT VarDateFromUI1(BYTE, DATE*); - HRESULT VarDateFromI2(SHORT, DATE*); - HRESULT VarDateFromI4(LONG, DATE*); - HRESULT VarDateFromI8(LONG64, DATE*); - HRESULT VarDateFromR4(FLOAT, DATE*); - HRESULT VarDateFromR8(DOUBLE, DATE*); - HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*); - HRESULT VarDateFromI1(byte, DATE*); - HRESULT VarDateFromUI2(USHORT, DATE*); - HRESULT VarDateFromUI4(ULONG, DATE*); - HRESULT VarDateFromUI8(ULONG64, DATE*); - HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); - HRESULT VarDateFromCy(CY, DATE*); - HRESULT VarDateFromDec(DECIMAL*, DATE*); - HRESULT VarDateFromDisp(IDispatch*, LCID, DATE*); - - HRESULT VarCyFromUI1(BYTE, CY*); - HRESULT VarCyFromI2(SHORT sIn, CY*); - HRESULT VarCyFromI4(LONG, CY*); - HRESULT VarCyFromI8(LONG64, CY*); - HRESULT VarCyFromR4(FLOAT, CY*); - HRESULT VarCyFromR8(DOUBLE, CY*); - HRESULT VarCyFromDate(DATE, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); - HRESULT VarCyFromBool(VARIANT_BOOL, CY*); - HRESULT VarCyFromI1(byte, CY*); - HRESULT VarCyFromUI2(USHORT, CY*); - HRESULT VarCyFromUI4(ULONG, CY*); - HRESULT VarCyFromUI8(ULONG64, CY*); - HRESULT VarCyFromDec(DECIMAL*, CY*); - HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); - HRESULT VarCyFromDisp(IDispatch*, LCID, CY*); - - HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*); - HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*); - HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*); - HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*); - HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*); - HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*); - HRESULT VarBstrFromDisp(IDispatch*, LCID, ULONG, BSTR*); - - HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*); - HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*); - HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*); - HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*); - HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*); - HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*); - HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); - HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*); - HRESULT VarBoolFromI1(byte, VARIANT_BOOL*); - HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*); - HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*); - HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*); - HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); - HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*); - HRESULT VarBoolFromDisp(IDispatch*, LCID, VARIANT_BOOL*); - - HRESULT VarI1FromUI1(BYTE, byte*); - HRESULT VarI1FromI2(SHORT, byte*); - HRESULT VarI1FromI4(LONG, byte*); - HRESULT VarI1FromI8(LONG64, byte*); - HRESULT VarI1FromR4(FLOAT, byte*); - HRESULT VarI1FromR8(DOUBLE, byte*); - HRESULT VarI1FromDate(DATE, byte*); - HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*); - HRESULT VarI1FromBool(VARIANT_BOOL, byte*); - HRESULT VarI1FromUI2(USHORT, byte*); - HRESULT VarI1FromUI4(ULONG, byte*); - HRESULT VarI1FromUI8(ULONG64, byte*); - HRESULT VarI1FromCy(CY, byte*); - HRESULT VarI1FromDec(DECIMAL*, byte*); - HRESULT VarI1FromDisp(IDispatch*, LCID, byte*); - - HRESULT VarUI2FromUI1(BYTE, USHORT*); - HRESULT VarUI2FromI2(SHORT, USHORT*); - HRESULT VarUI2FromI4(LONG, USHORT*); - HRESULT VarUI2FromI8(LONG64, USHORT*); - HRESULT VarUI2FromR4(FLOAT, USHORT*); - HRESULT VarUI2FromR8(DOUBLE, USHORT*); - HRESULT VarUI2FromDate(DATE, USHORT*); - HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*); - HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*); - HRESULT VarUI2FromI1(byte, USHORT*); - HRESULT VarUI2FromUI4(ULONG, USHORT*); - HRESULT VarUI2FromUI8(ULONG64, USHORT*); - HRESULT VarUI2FromCy(CY, USHORT*); - HRESULT VarUI2FromDec(DECIMAL*, USHORT*); - HRESULT VarUI2FromDisp(IDispatch*, LCID, USHORT*); - - HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*); - HRESULT VarUI4FromUI1(BYTE, ULONG*); - HRESULT VarUI4FromI2(SHORT, ULONG*); - HRESULT VarUI4FromI4(LONG, ULONG*); - HRESULT VarUI4FromI8(LONG64, ULONG*); - HRESULT VarUI4FromR4(FLOAT, ULONG*); - HRESULT VarUI4FromR8(DOUBLE, ULONG*); - HRESULT VarUI4FromDate(DATE, ULONG*); - HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*); - HRESULT VarUI4FromI1(byte, ULONG*); - HRESULT VarUI4FromUI2(USHORT, ULONG*); - HRESULT VarUI4FromUI8(ULONG64, ULONG*); - HRESULT VarUI4FromCy(CY, ULONG*); - HRESULT VarUI4FromDec(DECIMAL*, ULONG*); - HRESULT VarUI4FromDisp(IDispatch*, LCID, ULONG*); - - HRESULT VarUI8FromUI1(BYTE, ULONG64*); - HRESULT VarUI8FromI2(SHORT, ULONG64*); - HRESULT VarUI8FromI4(LONG, ULONG64*); - HRESULT VarUI8FromI8(LONG64, ULONG64*); - HRESULT VarUI8FromR4(FLOAT, ULONG64*); - HRESULT VarUI8FromR8(DOUBLE, ULONG64*); - HRESULT VarUI8FromDate(DATE, ULONG64*); - HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*); - HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*); - HRESULT VarUI8FromI1(byte, ULONG64*); - HRESULT VarUI8FromUI2(USHORT, ULONG64*); - HRESULT VarUI8FromUI4(ULONG, ULONG64*); - HRESULT VarUI8FromDec(DECIMAL*, ULONG64*); - HRESULT VarUI8FromInt(INT, ULONG64*); - HRESULT VarUI8FromCy(CY, ULONG64*); - HRESULT VarUI8FromDisp(IDispatch*, LCID, ULONG64*); - - HRESULT VarDecFromUI1(BYTE, DECIMAL*); - HRESULT VarDecFromI2(SHORT, DECIMAL*); - HRESULT VarDecFromI4(LONG, DECIMAL*); - HRESULT VarDecFromI8(LONG64, DECIMAL*); - HRESULT VarDecFromR4(FLOAT, DECIMAL*); - HRESULT VarDecFromR8(DOUBLE, DECIMAL*); - HRESULT VarDecFromDate(DATE, DECIMAL*); - HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*); - HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*); - HRESULT VarDecFromI1(byte, DECIMAL*); - HRESULT VarDecFromUI2(USHORT, DECIMAL*); - HRESULT VarDecFromUI4(ULONG, DECIMAL*); - HRESULT VarDecFromUI8(ULONG64, DECIMAL*); - HRESULT VarDecFromCy(CY, DECIMAL*); - HRESULT VarDecFromDisp(IDispatch*, LCID, DECIMAL*); - - HRESULT VarDecNeg(CPtr!(DECIMAL), DECIMAL*); - HRESULT VarR4CmpR8(float, double); - HRESULT VarR8Pow(double, double, double*); - HRESULT VarR8Round(double, int, double*); - HRESULT VarDecAbs(CPtr!(DECIMAL), DECIMAL*); - HRESULT VarDecAdd(CPtr!(DECIMAL), CPtr!(DECIMAL), DECIMAL*); - HRESULT VarDecCmp(CPtr!(DECIMAL), CPtr!(DECIMAL)); - HRESULT VarDecCmpR8(CPtr!(DECIMAL), DOUBLE); - HRESULT VarDecDiv(CPtr!(DECIMAL), CPtr!(DECIMAL), DECIMAL*); - HRESULT VarDecFix(CPtr!(DECIMAL), DECIMAL*); - HRESULT VarDecInt(CPtr!(DECIMAL), DECIMAL*); - HRESULT VarDecMul(CPtr!(DECIMAL), CPtr!(DECIMAL), DECIMAL*); - HRESULT VarDecRound(CPtr!(DECIMAL), int, DECIMAL*); - HRESULT VarDecSub(CPtr!(DECIMAL), CPtr!(DECIMAL), DECIMAL*); - HRESULT VarCyAbs(CY, CY*); - HRESULT VarCyAdd(CY, CY, CY*); - HRESULT VarCyCmp(CY, CY); - HRESULT VarCyCmpR8(CY, DOUBLE); - HRESULT VarCyFix(CY, CY*); - HRESULT VarCyInt(CY, CY*); - HRESULT VarCyMul(CY, CY, CY*); - HRESULT VarCyMulI4(CY, LONG, CY*); - HRESULT VarCyMulI8(CY, LONG64, CY*); - HRESULT VarCyNeg(CY, CY*); - HRESULT VarCyRound(CY, INT, CY*); - HRESULT VarCySub(CY, CY, CY*); - HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT); - HRESULT VarAbs(LPVARIANT, LPVARIANT); - HRESULT VarFix(LPVARIANT, LPVARIANT); - HRESULT VarInt(LPVARIANT, LPVARIANT); - HRESULT VarNeg(LPVARIANT, LPVARIANT); - HRESULT VarNot(LPVARIANT, LPVARIANT); - HRESULT VarRound(LPVARIANT, int, LPVARIANT); - HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG); - HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG); - HRESULT VarBstrCat(BSTR, BSTR, BSTR*); -} +/***********************************************************************\ +* oleauto.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oleauto; +pragma(lib, "oleaut32"); + +import win32.oaidl; +private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; +private import win32.winbase; // for SYSTEMTIME + +align(8): +const STDOLE_MAJORVERNUM = 1; +const STDOLE_MINORVERNUM = 0; +const STDOLE_LCID = 0; + +const VARIANT_NOVALUEPROP = 0x01; +const VARIANT_ALPHABOOL = 0x02; +const VARIANT_NOUSEOVERRIDE = 0x04; +const VARIANT_LOCALBOOL = 0x08; + +const VAR_TIMEVALUEONLY = 0x0001; +const VAR_DATEVALUEONLY = 0x0002; +const VAR_VALIDDATE = 0x0004; +const VAR_CALENDAR_HIJRI = 0x0008; +const VAR_LOCALBOOL = 0x0010; +const VAR_FORMAT_NOSUBSTITUTE = 0x0020; +const VAR_FOURDIGITYEARS = 0x0040; +const VAR_CALENDAR_THAI = 0x0080; +const VAR_CALENDAR_GREGORIAN = 0x0100; + +const MEMBERID_NIL = DISPID_UNKNOWN; +const ID_DEFAULTINST = -2; +const DISPATCH_METHOD = 1; +const DISPATCH_PROPERTYGET = 2; +const DISPATCH_PROPERTYPUT = 4; +const DISPATCH_PROPERTYPUTREF = 8; + +//ULONG LHashValOfName(LCID l, OLECHAR* n) { return LHashValOfNameSys(SYSKIND.SYS_WIN32, l, n); } + +// DAC: These aren't in the 2003 SDK. +//MACRO #define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h))) +//MACRO #define IsHashValCompatible(h1, h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2)))) + +enum { + ACTIVEOBJECT_STRONG = 0, + ACTIVEOBJECT_WEAK = 1 +} + +// DAC: These seem to be irrelevant for D. +//#define V_UNION(X, Y) ((X)->Y) +//#define V_VT(X) ((X)->vt) +//#define V_BOOL(X) V_UNION(X, boolVal) +//#define V_ISBYREF(X) (V_VT(X)&VT_BYREF) +//#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY) +//#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR) +//#define V_NONE(X) V_I2(X) +//#define V_UI1(X) V_UNION(X, bVal) +//#define V_UI1REF(X) V_UNION(X, pbVal) +//#define V_I2(X) V_UNION(X, iVal) +//#define V_UI2(X) V_UNION(X, uiVal) +//#define V_I2REF(X) V_UNION(X, piVal) +//#define V_I4(X) V_UNION(X, lVal) +//#define V_UI4(X) V_UNION(X, ulVal) +//#define V_I4REF(X) V_UNION(X, plVal) +//#define V_UI4REF(X) V_UNION(X, pulVal) +//#define V_I8(X) V_UNION(X, llVal) +//#define V_UI8(X) V_UNION(X, ullVal) +//#define V_I8REF(X) V_UNION(X, pllVal) +//#define V_UI8REF(X) V_UNION(X, pullVal) +//#define V_R4(X) V_UNION(X, fltVal) +//#define V_R4REF(X) V_UNION(X, pfltVal) +//#define V_R8(X) V_UNION(X, dblVal) +//#define V_R8REF(X) V_UNION(X, pdblVal) +//#define V_CY(X) V_UNION(X, cyVal) +//#define V_CYREF(X) V_UNION(X, pcyVal) +//#define V_DATE(X) V_UNION(X, date) +//#define V_DATEREF(X) V_UNION(X, pdate) +//#define V_BSTR(X) V_UNION(X, bstrVal) +//#define V_BSTRREF(X) V_UNION(X, pbstrVal) +//#define V_DISPATCH(X) V_UNION(X, pdispVal) +//#define V_DISPATCHREF(X) V_UNION(X, ppdispVal) +//#define V_ERROR(X) V_UNION(X, scode) +//#define V_ERRORREF(X) V_UNION(X, pscode) +//#define V_BOOLREF(X) V_UNION(X, pboolVal) +//#define V_UNKNOWN(X) V_UNION(X, punkVal) +//#define V_UNKNOWNREF(X) V_UNION(X, ppunkVal) +//#define V_VARIANTREF(X) V_UNION(X, pvarVal) +//#define V_LPSTR(X) V_UNION(X, pszVal) +//#define V_LPSTRREF(X) V_UNION(X, ppszVal) +//#define V_LPWSTR(X) V_UNION(X, pwszVal) +//#define V_LPWSTRREF(X) V_UNION(X, ppwszVal) +//#define V_FILETIME(X) V_UNION(X, filetime) +//#define V_FILETIMEREF(X) V_UNION(X, pfiletime) +//#define V_BLOB(X) V_UNION(X, blob) +//#define V_UUID(X) V_UNION(X, puuid) +//#define V_CLSID(X) V_UNION(X, puuid) +//#define V_ARRAY(X) V_UNION(X, parray) +//#define V_ARRAYREF(X) V_UNION(X, pparray) +//#define V_BYREF(X) V_UNION(X, byref) +//#define V_DECIMAL(X) ((X)->decVal) +//#define V_DECIMALREF(X) V_UNION(X, pdecVal) +//#define V_I1(X) V_UNION(X, cVal) + +//#ifdef _WIN64 +//#define V_INT_PTR(X) V_I8(X) +//#define V_UINT_PTR(X) V_UI8(X) +//#define V_INT_PTRREF(X) V_I8REF(X) +//#define V_UINT_PTRREF(X) V_UI8REF(X) +//#else +//#define V_INT_PTR(X) V_I4(X) +//#define V_UINT_PTR(X) V_UI4(X) +//#define V_INT_PTRREF(X) V_I4REF(X) +//#define V_UINT_PTRREF(X) V_UI4REF(X) +//#endif + +enum { + VARCMP_LT = 0, + VARCMP_EQ, + VARCMP_GT, + VARCMP_NULL // = 3 +} + +const LOCALE_USE_NLS = 0x10000000; + +const VARIANT_NOUSEROVERRIDE = 0x04; +const VARIANT_CALENDAR_HIJRI = 0x08; +const VARIANT_CALENDAR_THAI = 0x20; +const VARIANT_CALENDAR_GREGORIAN = 0x40; +const VARIANT_USE_NLS = 0x80; + +const NUMPRS_LEADING_WHITE = 0x00001; +const NUMPRS_TRAILING_WHITE = 0x00002; +const NUMPRS_LEADING_PLUS = 0x00004; +const NUMPRS_TRAILING_PLUS = 0x00008; +const NUMPRS_LEADING_MINUS = 0x00010; +const NUMPRS_TRAILING_MINUS = 0x00020; +const NUMPRS_HEX_OCT = 0x00040; +const NUMPRS_PARENS = 0x00080; +const NUMPRS_DECIMAL = 0x00100; +const NUMPRS_THOUSANDS = 0x00200; +const NUMPRS_CURRENCY = 0x00400; +const NUMPRS_EXPONENT = 0x00800; +const NUMPRS_USE_ALL = 0x01000; +const NUMPRS_STD = 0x01FFF; +const NUMPRS_NEG = 0x10000; +const NUMPRS_INEXACT = 0x20000; + +const VTBIT_I1 = 1 << VARENUM.VT_I1; +const VTBIT_UI1 = 1 << VARENUM.VT_UI1; +const VTBIT_I2 = 1 << VARENUM.VT_I2; +const VTBIT_UI2 = 1 << VARENUM.VT_UI2; +const VTBIT_I4 = 1 << VARENUM.VT_I4; +const VTBIT_UI4 = 1 << VARENUM.VT_UI4; +const VTBIT_I8 = 1 << VARENUM.VT_I8; +const VTBIT_UI8 = 1 << VARENUM.VT_UI8; +const VTBIT_R4 = 1 << VARENUM.VT_R4; +const VTBIT_R8 = 1 << VARENUM.VT_R8; +const VTBIT_CY = 1 << VARENUM.VT_CY; +const VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL; + + +enum REGKIND{ + REGKIND_DEFAULT, + REGKIND_REGISTER, + REGKIND_NONE +} + +struct PARAMDATA{ + OLECHAR* szName; + VARTYPE vt; +} +alias PARAMDATA* LPPARAMDATA; + +struct METHODDATA{ + OLECHAR* szName; + PARAMDATA* ppdata; + DISPID dispid; + UINT iMeth; + CALLCONV cc; + UINT cArgs; + WORD wFlags; + VARTYPE vtReturn; +} +alias METHODDATA* LPMETHODDATA; + +struct INTERFACEDATA{ + METHODDATA* pmethdata; + UINT cMembers; +} +alias INTERFACEDATA* LPINTERFACEDATA; + +struct UDATE { + SYSTEMTIME st; + USHORT wDayOfYear; +} + +struct NUMPARSE { + int cDig; + uint dwInFlags; + uint dwOutFlags; + int cchUsed; + int nBaseShift; + int nPwr10; +} + + +// DAC: In MinGW, these were declared but not defined in oaidl. +// The SDK docs suggest they belong in this file instead. + +deprecated { // not actually deprecated, but they aren't converted yet. + // (will need to reinstate CreateTypeLib as well) + interface ICreateTypeInfo {}; + interface ICreateTypeInfo2 {}; + interface ICreateTypeLib {}; + interface ICreateTypeLib2 {}; + + alias ICreateTypeInfo LPCREATETYPEINFO; + alias ICreateTypeInfo2 LPCREATETYPEINFO2; + alias ICreateTypeLib LPCREATETYPELIB; + alias ICreateTypeLib2 LPCREATETYPELIB2; +} + +extern (Windows) { + BSTR SysAllocString(const(OLECHAR)*); + int SysReAllocString(BSTR*, const(OLECHAR)*); + BSTR SysAllocStringLen(const(OLECHAR)*, uint); + int SysReAllocStringLen(BSTR*, const(OLECHAR)*, uint); + void SysFreeString(BSTR); + uint SysStringLen(BSTR); + uint SysStringByteLen(BSTR); + BSTR SysAllocStringByteLen(const(char)*, uint); + int DosDateTimeToVariantTime(ushort, ushort, double*); + int VariantTimeToDosDateTime(double, ushort*, ushort*); + int VariantTimeToSystemTime(double, LPSYSTEMTIME); + int SystemTimeToVariantTime(LPSYSTEMTIME, double*); + HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*); + HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*); + HRESULT VarUdateFromDate(DATE, ULONG, UDATE*); + HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**); + HRESULT SafeArrayAllocData(SAFEARRAY*); + SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*); + HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*); + HRESULT SafeArrayDestroyData(SAFEARRAY*); + HRESULT SafeArrayDestroy(SAFEARRAY*); + HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*); + uint SafeArrayGetDim(SAFEARRAY*); + uint SafeArrayGetElemsize(SAFEARRAY*); + HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*); + HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*); + HRESULT SafeArrayLock(SAFEARRAY*); + HRESULT SafeArrayUnlock(SAFEARRAY*); + HRESULT SafeArrayAccessData(SAFEARRAY*, void**); + HRESULT SafeArrayUnaccessData(SAFEARRAY*); + HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*); + HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*); + HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**); + HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**); + SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG); + SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID); + HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**); + HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*); + HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo); + HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo*); + HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID); + HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*); + void VariantInit(VARIANTARG*); + HRESULT VariantClear(VARIANTARG*); + HRESULT VariantCopy(VARIANTARG*, VARIANTARG*); + HRESULT VariantCopyInd(VARIANT*, VARIANTARG*); + HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE); + HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE); + HRESULT VarUI1FromI2(short, ubyte*); + HRESULT VarUI1FromI4(int, ubyte*); + HRESULT VarUI1FromR4(float, ubyte*); + HRESULT VarUI1FromR8(double, ubyte*); + HRESULT VarUI1FromCy(CY, ubyte*); + HRESULT VarUI1FromDate(DATE, ubyte*); + HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*); + HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*); + HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*); + HRESULT VarI2FromUI1(ubyte, short*); + HRESULT VarI2FromI4(int, short*); + HRESULT VarI2FromR4(float, short*); + HRESULT VarI2FromR8(double, short*); + HRESULT VarI2FromCy(CY cyIn, short*); + HRESULT VarI2FromDate(DATE, short*); + HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*); + HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*); + HRESULT VarI2FromBool(VARIANT_BOOL, short*); + HRESULT VarI4FromUI1(ubyte, int*); + HRESULT VarI4FromI2(short, int*); + HRESULT VarI4FromR4(float, int*); + HRESULT VarI4FromR8(double, int*); + HRESULT VarI4FromCy(CY, int*); + HRESULT VarI4FromDate(DATE, int*); + HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*); + HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*); + HRESULT VarI4FromBool(VARIANT_BOOL, int*); + HRESULT VarR4FromUI1(ubyte, float*); + HRESULT VarR4FromI2(short, float*); + HRESULT VarR4FromI4(int, float*); + HRESULT VarR4FromR8(double, float*); + HRESULT VarR4FromCy(CY, float*); + HRESULT VarR4FromDate(DATE, float*); + HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*); + HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*); + HRESULT VarR4FromBool(VARIANT_BOOL, float*); + HRESULT VarR8FromUI1(ubyte, double*); + HRESULT VarR8FromI2(short, double*); + HRESULT VarR8FromI4(int, double*); + HRESULT VarR8FromR4(float, double*); + HRESULT VarR8FromCy(CY, double*); + HRESULT VarR8FromDate(DATE, double*); + HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*); + HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*); + HRESULT VarR8FromBool(VARIANT_BOOL, double*); + HRESULT VarR8FromDec(DECIMAL*, double*); + HRESULT VarDateFromUI1(ubyte, DATE*); + HRESULT VarDateFromI2(short, DATE*); + HRESULT VarDateFromI4(int, DATE*); + HRESULT VarDateFromR4(float, DATE*); + HRESULT VarDateFromR8(double, DATE*); + HRESULT VarDateFromCy(CY, DATE*); + HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*); + HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*); + HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); + HRESULT VarCyFromUI1(ubyte, CY*); + HRESULT VarCyFromI2(short, CY*); + HRESULT VarCyFromI4(int, CY*); + HRESULT VarCyFromR4(float, CY*); + HRESULT VarCyFromR8(double, CY*); + HRESULT VarCyFromDate(DATE, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*); + HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*); + HRESULT VarCyFromBool(VARIANT_BOOL, CY*); + HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*); + HRESULT VarBstrFromI2(short, LCID, uint, BSTR*); + HRESULT VarBstrFromI4(int, LCID, uint, BSTR*); + HRESULT VarBstrFromR4(float, LCID, uint, BSTR*); + HRESULT VarBstrFromR8(double, LCID, uint, BSTR*); + HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*); + HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*); + HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*); + HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*); + HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*); + HRESULT VarBoolFromI2(short, VARIANT_BOOL*); + HRESULT VarBoolFromI4(int, VARIANT_BOOL*); + HRESULT VarBoolFromR4(float, VARIANT_BOOL*); + HRESULT VarBoolFromR8(double, VARIANT_BOOL*); + HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); + HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); + HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*); + HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*); + HRESULT VarDecFromR8(double, DECIMAL*); + ULONG LHashValOfNameSysA(SYSKIND, LCID, const(char)*); + ULONG LHashValOfNameSys(SYSKIND, LCID, const(OLECHAR)*); + HRESULT LoadTypeLib(const(OLECHAR)*, LPTYPELIB*); + HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*); + HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*); + HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR); + HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*); + HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND); + // not actually deprecated, but depends on unconverted ICreateTypeLib + deprecated HRESULT CreateTypeLib(SYSKIND, const(OLECHAR)*, LPCREATETYPELIB*); + HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*); + HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*); + HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*); + HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*); + HRESULT CreateStdDispatch(IUnknown, void*, LPTYPEINFO, IUnknown*); + HRESULT RegisterActiveObject(IUnknown, REFCLSID, DWORD, DWORD*); + HRESULT RevokeActiveObject(DWORD, void*); + HRESULT GetActiveObject(REFCLSID, void*, IUnknown*); + HRESULT SetErrorInfo(uint, LPERRORINFO); + HRESULT GetErrorInfo(uint, LPERRORINFO*); + HRESULT CreateErrorInfo(LPCREATEERRORINFO*); + uint OaBuildVersion(); + HRESULT VectorFromBstr (BSTR, SAFEARRAY**); + HRESULT BstrFromVector (SAFEARRAY*, BSTR*); + HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*); + HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*); + + HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); + + HRESULT VarUI1FromI2(SHORT, BYTE*); + HRESULT VarUI1FromI4(LONG, BYTE*); + HRESULT VarUI1FromI8(LONG64, BYTE*); + HRESULT VarUI1FromR4(FLOAT, BYTE*); + HRESULT VarUI1FromR8(DOUBLE, BYTE*); + HRESULT VarUI1FromDate(DATE, BYTE*); + HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*); + HRESULT VarUI1FromI1(byte, BYTE*); + HRESULT VarUI1FromUI2(USHORT, BYTE*); + HRESULT VarUI1FromUI4(ULONG, BYTE*); + HRESULT VarUI1FromUI8(ULONG64, BYTE*); + HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*); + HRESULT VarUI1FromCy(CY, BYTE*); + HRESULT VarUI1FromDec(DECIMAL*, BYTE*); + HRESULT VarUI1FromDisp(IDispatch, LCID, BYTE*); + + HRESULT VarI2FromUI1(BYTE, SHORT*); + HRESULT VarI2FromI4(LONG, SHORT*); + HRESULT VarI2FromI8(LONG64, SHORT*); + HRESULT VarI2FromR4(FLOAT, SHORT*); + HRESULT VarI2FromR8(DOUBLE, SHORT*); + HRESULT VarI2FromDate(DATE, SHORT*); + HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*); + HRESULT VarI2FromI1(byte, SHORT*); + HRESULT VarI2FromUI2(USHORT, SHORT*); + HRESULT VarI2FromUI4(ULONG, SHORT*); + HRESULT VarI2FromUI8(ULONG64, SHORT*); + HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*); + HRESULT VarI2FromCy(CY, SHORT*); + HRESULT VarI2FromDec(DECIMAL*, SHORT*); + HRESULT VarI2FromDisp(IDispatch, LCID, SHORT*); + + HRESULT VarI4FromUI1(BYTE, LONG*); + HRESULT VarI4FromI2(SHORT, LONG*); + HRESULT VarI4FromI8(LONG64, LONG*); + HRESULT VarI4FromR4(FLOAT, LONG*); + HRESULT VarI4FromR8(DOUBLE, LONG*); + HRESULT VarI4FromDate(DATE, LONG*); + HRESULT VarI4FromBool(VARIANT_BOOL, LONG*); + HRESULT VarI4FromI1(byte, LONG*); + HRESULT VarI4FromUI2(USHORT, LONG*); + HRESULT VarI4FromUI4(ULONG, LONG*); + HRESULT VarI4FromUI8(ULONG64, LONG*); + HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*); + HRESULT VarI4FromCy(CY, LONG*); + HRESULT VarI4FromDec(DECIMAL*, LONG*); + HRESULT VarI4FromDisp(IDispatch, LCID, LONG*); + + HRESULT VarI8FromUI1(BYTE, LONG64*); + HRESULT VarI8FromI2(SHORT, LONG64*); + HRESULT VarI8FromI4(LONG, LONG64*); + HRESULT VarI8FromR4(FLOAT, LONG64*); + HRESULT VarI8FromR8(DOUBLE, LONG64*); + HRESULT VarI8FromDate(DATE, LONG64*); + HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*); + HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*); + HRESULT VarI8FromI1(byte, LONG64*); + HRESULT VarI8FromUI2(USHORT, LONG64*); + HRESULT VarI8FromUI4(ULONG, LONG64*); + HRESULT VarI8FromUI8(ULONG64, LONG64*); + HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*); + HRESULT VarI8FromInt(INT intIn, LONG64*); + HRESULT VarI8FromCy(CY, LONG64*); + HRESULT VarI8FromDisp(IDispatch, LCID, LONG64*); + + HRESULT VarR4FromUI1(BYTE, FLOAT*); + HRESULT VarR4FromI2(SHORT, FLOAT*); + HRESULT VarR4FromI4(LONG, FLOAT*); + HRESULT VarR4FromI8(LONG64, FLOAT*); + HRESULT VarR4FromR8(DOUBLE, FLOAT*); + HRESULT VarR4FromDate(DATE, FLOAT*); + HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*); + HRESULT VarR4FromI1(byte, FLOAT*); + HRESULT VarR4FromUI2(USHORT, FLOAT*); + HRESULT VarR4FromUI4(ULONG, FLOAT*); + HRESULT VarR4FromUI8(ULONG64, FLOAT*); + HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*); + HRESULT VarR4FromCy(CY, FLOAT*); + HRESULT VarR4FromDec(DECIMAL*, FLOAT*); + HRESULT VarR4FromDisp(IDispatch, LCID, FLOAT*); + + HRESULT VarR8FromUI1(BYTE, double*); + HRESULT VarR8FromI2(SHORT, double*); + HRESULT VarR8FromI4(LONG, double*); + HRESULT VarR8FromI8(LONG64, double*); + HRESULT VarR8FromR4(FLOAT, double*); + HRESULT VarR8FromDate(DATE, double*); + HRESULT VarR8FromBool(VARIANT_BOOL, double*); + HRESULT VarR8FromI1(byte, double*); + HRESULT VarR8FromUI2(USHORT, double*); + HRESULT VarR8FromUI4(ULONG, double*); + HRESULT VarR8FromUI8(ULONG64, double*); + HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*); + HRESULT VarR8FromCy(CY, double*); + HRESULT VarR8FromDec(DECIMAL*, double*); + HRESULT VarR8FromDisp(IDispatch, LCID, double*); + + HRESULT VarDateFromUI1(BYTE, DATE*); + HRESULT VarDateFromI2(SHORT, DATE*); + HRESULT VarDateFromI4(LONG, DATE*); + HRESULT VarDateFromI8(LONG64, DATE*); + HRESULT VarDateFromR4(FLOAT, DATE*); + HRESULT VarDateFromR8(DOUBLE, DATE*); + HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*); + HRESULT VarDateFromI1(byte, DATE*); + HRESULT VarDateFromUI2(USHORT, DATE*); + HRESULT VarDateFromUI4(ULONG, DATE*); + HRESULT VarDateFromUI8(ULONG64, DATE*); + HRESULT VarDateFromBool(VARIANT_BOOL, DATE*); + HRESULT VarDateFromCy(CY, DATE*); + HRESULT VarDateFromDec(DECIMAL*, DATE*); + HRESULT VarDateFromDisp(IDispatch, LCID, DATE*); + + HRESULT VarCyFromUI1(BYTE, CY*); + HRESULT VarCyFromI2(SHORT sIn, CY*); + HRESULT VarCyFromI4(LONG, CY*); + HRESULT VarCyFromI8(LONG64, CY*); + HRESULT VarCyFromR4(FLOAT, CY*); + HRESULT VarCyFromR8(DOUBLE, CY*); + HRESULT VarCyFromDate(DATE, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); + HRESULT VarCyFromBool(VARIANT_BOOL, CY*); + HRESULT VarCyFromI1(byte, CY*); + HRESULT VarCyFromUI2(USHORT, CY*); + HRESULT VarCyFromUI4(ULONG, CY*); + HRESULT VarCyFromUI8(ULONG64, CY*); + HRESULT VarCyFromDec(DECIMAL*, CY*); + HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*); + HRESULT VarCyFromDisp(IDispatch, LCID, CY*); + + HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*); + HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*); + HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*); + HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*); + HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*); + HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*); + HRESULT VarBstrFromDisp(IDispatch, LCID, ULONG, BSTR*); + + HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*); + HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*); + HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*); + HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*); + HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*); + HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*); + HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*); + HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*); + HRESULT VarBoolFromI1(byte, VARIANT_BOOL*); + HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*); + HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*); + HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*); + HRESULT VarBoolFromCy(CY, VARIANT_BOOL*); + HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*); + HRESULT VarBoolFromDisp(IDispatch, LCID, VARIANT_BOOL*); + + HRESULT VarI1FromUI1(BYTE, byte*); + HRESULT VarI1FromI2(SHORT, byte*); + HRESULT VarI1FromI4(LONG, byte*); + HRESULT VarI1FromI8(LONG64, byte*); + HRESULT VarI1FromR4(FLOAT, byte*); + HRESULT VarI1FromR8(DOUBLE, byte*); + HRESULT VarI1FromDate(DATE, byte*); + HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*); + HRESULT VarI1FromBool(VARIANT_BOOL, byte*); + HRESULT VarI1FromUI2(USHORT, byte*); + HRESULT VarI1FromUI4(ULONG, byte*); + HRESULT VarI1FromUI8(ULONG64, byte*); + HRESULT VarI1FromCy(CY, byte*); + HRESULT VarI1FromDec(DECIMAL*, byte*); + HRESULT VarI1FromDisp(IDispatch, LCID, byte*); + + HRESULT VarUI2FromUI1(BYTE, USHORT*); + HRESULT VarUI2FromI2(SHORT, USHORT*); + HRESULT VarUI2FromI4(LONG, USHORT*); + HRESULT VarUI2FromI8(LONG64, USHORT*); + HRESULT VarUI2FromR4(FLOAT, USHORT*); + HRESULT VarUI2FromR8(DOUBLE, USHORT*); + HRESULT VarUI2FromDate(DATE, USHORT*); + HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*); + HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*); + HRESULT VarUI2FromI1(byte, USHORT*); + HRESULT VarUI2FromUI4(ULONG, USHORT*); + HRESULT VarUI2FromUI8(ULONG64, USHORT*); + HRESULT VarUI2FromCy(CY, USHORT*); + HRESULT VarUI2FromDec(DECIMAL*, USHORT*); + HRESULT VarUI2FromDisp(IDispatch, LCID, USHORT*); + + HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*); + HRESULT VarUI4FromUI1(BYTE, ULONG*); + HRESULT VarUI4FromI2(SHORT, ULONG*); + HRESULT VarUI4FromI4(LONG, ULONG*); + HRESULT VarUI4FromI8(LONG64, ULONG*); + HRESULT VarUI4FromR4(FLOAT, ULONG*); + HRESULT VarUI4FromR8(DOUBLE, ULONG*); + HRESULT VarUI4FromDate(DATE, ULONG*); + HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*); + HRESULT VarUI4FromI1(byte, ULONG*); + HRESULT VarUI4FromUI2(USHORT, ULONG*); + HRESULT VarUI4FromUI8(ULONG64, ULONG*); + HRESULT VarUI4FromCy(CY, ULONG*); + HRESULT VarUI4FromDec(DECIMAL*, ULONG*); + HRESULT VarUI4FromDisp(IDispatch, LCID, ULONG*); + + HRESULT VarUI8FromUI1(BYTE, ULONG64*); + HRESULT VarUI8FromI2(SHORT, ULONG64*); + HRESULT VarUI8FromI4(LONG, ULONG64*); + HRESULT VarUI8FromI8(LONG64, ULONG64*); + HRESULT VarUI8FromR4(FLOAT, ULONG64*); + HRESULT VarUI8FromR8(DOUBLE, ULONG64*); + HRESULT VarUI8FromDate(DATE, ULONG64*); + HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*); + HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*); + HRESULT VarUI8FromI1(byte, ULONG64*); + HRESULT VarUI8FromUI2(USHORT, ULONG64*); + HRESULT VarUI8FromUI4(ULONG, ULONG64*); + HRESULT VarUI8FromDec(DECIMAL*, ULONG64*); + HRESULT VarUI8FromInt(INT, ULONG64*); + HRESULT VarUI8FromCy(CY, ULONG64*); + HRESULT VarUI8FromDisp(IDispatch, LCID, ULONG64*); + + HRESULT VarDecFromUI1(BYTE, DECIMAL*); + HRESULT VarDecFromI2(SHORT, DECIMAL*); + HRESULT VarDecFromI4(LONG, DECIMAL*); + HRESULT VarDecFromI8(LONG64, DECIMAL*); + HRESULT VarDecFromR4(FLOAT, DECIMAL*); + HRESULT VarDecFromR8(DOUBLE, DECIMAL*); + HRESULT VarDecFromDate(DATE, DECIMAL*); + HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*); + HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*); + HRESULT VarDecFromI1(byte, DECIMAL*); + HRESULT VarDecFromUI2(USHORT, DECIMAL*); + HRESULT VarDecFromUI4(ULONG, DECIMAL*); + HRESULT VarDecFromUI8(ULONG64, DECIMAL*); + HRESULT VarDecFromCy(CY, DECIMAL*); + HRESULT VarDecFromDisp(IDispatch, LCID, DECIMAL*); + + HRESULT VarDecNeg(const(DECIMAL)*, DECIMAL*); + HRESULT VarR4CmpR8(float, double); + HRESULT VarR8Pow(double, double, double*); + HRESULT VarR8Round(double, int, double*); + HRESULT VarDecAbs(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecAdd(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecCmp(const(DECIMAL)*, const(DECIMAL)*); + HRESULT VarDecCmpR8(const(DECIMAL)*, DOUBLE); + HRESULT VarDecDiv(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecFix(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecInt(const(DECIMAL)*, DECIMAL*); + HRESULT VarDecMul(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarDecRound(const(DECIMAL)*, int, DECIMAL*); + HRESULT VarDecSub(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*); + HRESULT VarCyAbs(CY, CY*); + HRESULT VarCyAdd(CY, CY, CY*); + HRESULT VarCyCmp(CY, CY); + HRESULT VarCyCmpR8(CY, DOUBLE); + HRESULT VarCyFix(CY, CY*); + HRESULT VarCyInt(CY, CY*); + HRESULT VarCyMul(CY, CY, CY*); + HRESULT VarCyMulI4(CY, LONG, CY*); + HRESULT VarCyMulI8(CY, LONG64, CY*); + HRESULT VarCyNeg(CY, CY*); + HRESULT VarCyRound(CY, INT, CY*); + HRESULT VarCySub(CY, CY, CY*); + HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT); + HRESULT VarAbs(LPVARIANT, LPVARIANT); + HRESULT VarFix(LPVARIANT, LPVARIANT); + HRESULT VarInt(LPVARIANT, LPVARIANT); + HRESULT VarNeg(LPVARIANT, LPVARIANT); + HRESULT VarNot(LPVARIANT, LPVARIANT); + HRESULT VarRound(LPVARIANT, int, LPVARIANT); + HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG); + HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG); + HRESULT VarBstrCat(BSTR, BSTR, BSTR*); +} Index: src/win32/olectl.d ================================================================== --- src/win32/olectl.d +++ src/win32/olectl.d @@ -1,398 +1,398 @@ -/***********************************************************************\ -* olectl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.olectl; - -// In conversion from MinGW, the following was deleted: -//#define FONTSIZE(n) {n##0000, 0} - -import win32.ocidl, win32.olectlid; -private import win32.basetyps, win32.oaidl, win32.oleauto, win32.unknwn, - win32.windef, win32.wingdi, win32.winuser, win32.wtypes; -private import win32.ntdef; // for NTSTATUS -private import win32.objfwd; // for LPSTREAM -private import win32.winerror; // for SCODE - - -private { - // These replace C macros. - template ITF_ERROR_SCODE_FOR_D(int c) - { - const SCODE ITF_ERROR_SCODE_FOR_D - = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c; - } - - template ITF_SUCCESS_SCODE_FOR_D(int c) - { - const SCODE ITF_SUCCESS_SCODE_FOR_D - = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c; - } - - template STD_CTL_SCODE(int c) - { - const SCODE STD_CTL_SCODE - = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c; - } -} - -enum : SCODE { - CTL_E_ILLEGALFUNCTIONCALL = STD_CTL_SCODE!(5), - CTL_E_OVERFLOW = STD_CTL_SCODE!(6), - CTL_E_OUTOFMEMORY = STD_CTL_SCODE!(7), - CTL_E_DIVISIONBYZERO = STD_CTL_SCODE!(11), - CTL_E_OUTOFSTRINGSPACE = STD_CTL_SCODE!(14), - CTL_E_OUTOFSTACKSPACE = STD_CTL_SCODE!(28), - CTL_E_BADFILENAMEORNUMBER = STD_CTL_SCODE!(52), - CTL_E_FILENOTFOUND = STD_CTL_SCODE!(53), - CTL_E_BADFILEMODE = STD_CTL_SCODE!(54), - CTL_E_FILEALREADYOPEN = STD_CTL_SCODE!(55), - CTL_E_DEVICEIOERROR = STD_CTL_SCODE!(57), - CTL_E_FILEALREADYEXISTS = STD_CTL_SCODE!(58), - CTL_E_BADRECORDLENGTH = STD_CTL_SCODE!(59), - CTL_E_DISKFULL = STD_CTL_SCODE!(61), - CTL_E_BADRECORDNUMBER = STD_CTL_SCODE!(63), - CTL_E_BADFILENAME = STD_CTL_SCODE!(64), - CTL_E_TOOMANYFILES = STD_CTL_SCODE!(67), - CTL_E_DEVICEUNAVAILABLE = STD_CTL_SCODE!(68), - CTL_E_PERMISSIONDENIED = STD_CTL_SCODE!(70), - CTL_E_DISKNOTREADY = STD_CTL_SCODE!(71), - CTL_E_PATHFILEACCESSERROR = STD_CTL_SCODE!(75), - CTL_E_PATHNOTFOUND = STD_CTL_SCODE!(76), - CTL_E_INVALIDPATTERNSTRING = STD_CTL_SCODE!(93), - CTL_E_INVALIDUSEOFNULL = STD_CTL_SCODE!(94), - CTL_E_INVALIDFILEFORMAT = STD_CTL_SCODE!(321), - CTL_E_INVALIDPROPERTYVALUE = STD_CTL_SCODE!(380), - CTL_E_INVALIDPROPERTYARRAYINDEX = STD_CTL_SCODE!(381), - CTL_E_SETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(382), - CTL_E_SETNOTSUPPORTED = STD_CTL_SCODE!(383), - CTL_E_NEEDPROPERTYARRAYINDEX = STD_CTL_SCODE!(385), - CTL_E_SETNOTPERMITTED = STD_CTL_SCODE!(387), - CTL_E_GETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(393), - CTL_E_GETNOTSUPPORTED = STD_CTL_SCODE!(394), - CTL_E_PROPERTYNOTFOUND = STD_CTL_SCODE!(422), - CTL_E_INVALIDCLIPBOARDFORMAT = STD_CTL_SCODE!(460), - CTL_E_INVALIDPICTURE = STD_CTL_SCODE!(481), - CTL_E_PRINTERERROR = STD_CTL_SCODE!(482), - CTL_E_CANTSAVEFILETOTEMP = STD_CTL_SCODE!(735), - CTL_E_SEARCHTEXTNOTFOUND = STD_CTL_SCODE!(744), - CTL_E_REPLACEMENTSTOOLONG = STD_CTL_SCODE!(746), - CTL_E_CUSTOM_FIRST = STD_CTL_SCODE!(600) -} - -const SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2; - -enum : SCODE { - CONNECT_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - CONNECT_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - CONNECT_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - CONNECT_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - CONNECT_E_NOCONNECTION = CONNECT_E_FIRST + 0, - CONNECT_E_ADVISELIMIT = CONNECT_E_FIRST + 1, - CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2, - CONNECT_E_OVERRIDDEN = CONNECT_E_FIRST + 3, - - SELFREG_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - SELFREG_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - SELFREG_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - SELFREG_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0, - SELFREG_E_CLASS = SELFREG_E_FIRST + 1, - - PERPROP_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), - PERPROP_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), - PERPROP_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), - PERPROP_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), - PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST -} - -enum { - OLEMISC_RECOMPOSEONRESIZE = 0x1, - OLEMISC_ONLYICONIC = 0x2, - OLEMISC_INSERTNOTREPLACE = 0x4, - OLEMISC_STATIC = 0x8, - OLEMISC_CANTLINKINSIDE = 0x10, - OLEMISC_CANLINKBYOLE1 = 0x20, - OLEMISC_ISLINKOBJECT = 0x40, - OLEMISC_INSIDEOUT = 0x80, - OLEMISC_ACTIVATEWHENVISIBLE = 0x100, - OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, - OLEMISC_INVISIBLEATRUNTIME = 0x400, - OLEMISC_ALWAYSRUN = 0x800, - OLEMISC_ACTSLIKEBUTTON = 0x1000, - OLEMISC_ACTSLIKELABEL = 0x2000, - OLEMISC_NOUIACTIVATE = 0x4000, - OLEMISC_ALIGNABLE = 0x8000, - OLEMISC_SIMPLEFRAME = 0x10000, - OLEMISC_SETCLIENTSITEFIRST = 0x20000, - OLEMISC_IMEMODE = 0x40000, - OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, - OLEMISC_WANTSTOMENUMERGE = 0x100000, - OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 -} -const OLEIVERB_PROPERTIES = -7; - -const VT_STREAMED_PROPSET = 73; -const VT_STORED_PROPSET = 74; -const VT_BLOB_PROPSET = 75; -const VT_VERBOSE_ENUM = 76; -const VT_COLOR = VARENUM.VT_I4; -const VT_XPOS_PIXELS = VARENUM.VT_I4; -const VT_YPOS_PIXELS = VARENUM.VT_I4; -const VT_XSIZE_PIXELS = VARENUM.VT_I4; -const VT_YSIZE_PIXELS = VARENUM.VT_I4; -const VT_XPOS_HIMETRIC = VARENUM.VT_I4; -const VT_YPOS_HIMETRIC = VARENUM.VT_I4; -const VT_XSIZE_HIMETRIC = VARENUM.VT_I4; -const VT_YSIZE_HIMETRIC = VARENUM.VT_I4; -const VT_TRISTATE = VARENUM.VT_I2; -const VT_OPTEXCLUSIVE = VARENUM.VT_BOOL; -const VT_FONT = VARENUM.VT_DISPATCH; -const VT_PICTURE = VARENUM.VT_DISPATCH; -const VT_HANDLE = VARENUM.VT_I4; - -enum { - OCM__BASE = WM_USER + 0x1c00, - OCM_COMMAND = OCM__BASE + WM_COMMAND, - OCM_CTLCOLORBTN = OCM__BASE + WM_CTLCOLORBTN, - OCM_CTLCOLOREDIT = OCM__BASE + WM_CTLCOLOREDIT, - OCM_CTLCOLORDLG = OCM__BASE + WM_CTLCOLORDLG, - OCM_CTLCOLORLISTBOX = OCM__BASE + WM_CTLCOLORLISTBOX, - OCM_CTLCOLORMSGBOX = OCM__BASE + WM_CTLCOLORMSGBOX, - OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR, - OCM_CTLCOLORSTATIC = OCM__BASE + WM_CTLCOLORSTATIC, - OCM_DRAWITEM = OCM__BASE + WM_DRAWITEM, - OCM_MEASUREITEM = OCM__BASE + WM_MEASUREITEM, - OCM_DELETEITEM = OCM__BASE + WM_DELETEITEM, - OCM_VKEYTOITEM = OCM__BASE + WM_VKEYTOITEM, - OCM_CHARTOITEM = OCM__BASE + WM_CHARTOITEM, - OCM_COMPAREITEM = OCM__BASE + WM_COMPAREITEM, - OCM_HSCROLL = OCM__BASE + WM_HSCROLL, - OCM_VSCROLL = OCM__BASE + WM_VSCROLL, - OCM_PARENTNOTIFY = OCM__BASE + WM_PARENTNOTIFY, - OCM_NOTIFY = OCM__BASE + WM_NOTIFY -} - -enum { - CTRLINFO_EATS_RETURN = 1, - CTRLINFO_EATS_ESCAPE -} - -enum { - XFORMCOORDS_POSITION = 1, - XFORMCOORDS_SIZE = 2, - XFORMCOORDS_HIMETRICTOCONTAINER = 4, - XFORMCOORDS_CONTAINERTOHIMETRIC = 8 -} - -const GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1; - -enum { - PROPPAGESTATUS_DIRTY = 1, - PROPPAGESTATUS_VALIDATE = 2 -} - -enum { - PICTURE_SCALABLE = 1, - PICTURE_TRANSPARENT = 2 -} - -enum { - PICTYPE_UNINITIALIZED = -1, - PICTYPE_NONE, // = 0 - PICTYPE_BITMAP, - PICTYPE_METAFILE, - PICTYPE_ICON, - PICTYPE_ENHMETAFILE // = 4 -} - -enum { - DISPID_AUTOSIZE = -500, - DISPID_BACKCOLOR = -501, - DISPID_BACKSTYLE = -502, - DISPID_BORDERCOLOR = -503, - DISPID_BORDERSTYLE = -504, - DISPID_BORDERWIDTH = -505, - DISPID_DRAWMODE = -507, - DISPID_DRAWSTYLE = -508, - DISPID_DRAWWIDTH = -509, - DISPID_FILLCOLOR = -510, - DISPID_FILLSTYLE = -511, - DISPID_FONT = -512, - DISPID_FORECOLOR = -513, - DISPID_ENABLED = -514, - DISPID_HWND = -515, - DISPID_TABSTOP = -516, - DISPID_TEXT = -517, - DISPID_CAPTION = -518, - DISPID_BORDERVISIBLE = -519, - DISPID_APPEARANCE = -520, - DISPID_MOUSEPOINTER = -521, - DISPID_MOUSEICON = -522, - DISPID_PICTURE = -523, - DISPID_VALID = -524, - DISPID_REFRESH = -550, - DISPID_DOCLICK = -551, - DISPID_ABOUTBOX = -552, - DISPID_CLICK = -600, - DISPID_DBLCLICK = -601, - DISPID_KEYDOWN = -602, - DISPID_KEYPRESS = -603, - DISPID_KEYUP = -604, - DISPID_MOUSEDOWN = -605, - DISPID_MOUSEMOVE = -606, - DISPID_MOUSEUP = -607, - DISPID_ERROREVENT = -608, - DISPID_AMBIENT_BACKCOLOR = -701, - DISPID_AMBIENT_DISPLAYNAME = -702, - DISPID_AMBIENT_FONT = -703, - DISPID_AMBIENT_FORECOLOR = -704, - DISPID_AMBIENT_LOCALEID = -705, - DISPID_AMBIENT_MESSAGEREFLECT = -706, - DISPID_AMBIENT_SCALEUNITS = -707, - DISPID_AMBIENT_TEXTALIGN = -708, - DISPID_AMBIENT_USERMODE = -709, - DISPID_AMBIENT_UIDEAD = -710, - DISPID_AMBIENT_SHOWGRABHANDLES = -711, - DISPID_AMBIENT_SHOWHATCHING = -712, - DISPID_AMBIENT_DISPLAYASDEFAULT = -713, - DISPID_AMBIENT_SUPPORTSMNEMONICS = -714, - DISPID_AMBIENT_AUTOCLIP = -715, - DISPID_AMBIENT_APPEARANCE = -716, - DISPID_AMBIENT_CODEPAGE = -725, - DISPID_AMBIENT_PALETTE = -726, - DISPID_AMBIENT_CHARSET = -727, - DISPID_AMBIENT_RIGHTTOLEFT = -732, - DISPID_AMBIENT_TOPTOBOTTOM = -733 -} - -enum { - DISPID_FONT_NAME = 0, - DISPID_FONT_SIZE = 2, - DISPID_FONT_BOLD, - DISPID_FONT_ITALIC, - DISPID_FONT_UNDER, - DISPID_FONT_STRIKE, - DISPID_FONT_WEIGHT, - DISPID_FONT_CHARSET // = 8 -} - -enum { - DISPID_PICT_HANDLE = 0, - DISPID_PICT_HPAL = 2, - DISPID_PICT_TYPE, - DISPID_PICT_WIDTH, - DISPID_PICT_HEIGHT, - DISPID_PICT_RENDER // = 6 -} - -alias IOleControl *LPOLECONTROL; -alias IOleControlSite *LPOLECONTROLSITE; -alias ISimpleFrameSite *LPSIMPLEFRAMESITE; -alias IPersistPropertyBag *LPPERSISTPROPERTYBAG; -alias IPersistStreamInit *LPPERSISTSTREAMINIT; -alias IPersistMemory *LPPERSISTMEMORY; -alias IPropertyNotifySink* LPPROPERTYNOTIFYSINK; -alias IProvideClassInfo *LPPROVIDECLASSINFO; -alias IProvideClassInfo2 *LPPROVIDECLASSINFO2; -alias IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER; -alias IClassFactory2 *LPCLASSFACTORY2; -alias ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES; -alias IPerPropertyBrowsing *LPPERPROPERTYBROWSING; -alias IPropertyPage *LPPROPERTYPAGE; -alias IPropertyPage2 *LPPROPERTYPAGE2; - -alias IPicture *LPPICTURE; -alias IPictureDisp *LPPICTUREDISP; -alias int OLE_XPOS_PIXELS; -alias int OLE_YPOS_PIXELS; -alias int OLE_XSIZE_PIXELS; -alias int OLE_YSIZE_PIXELS; -alias float OLE_XPOS_CONTAINER; -alias float OLE_YPOS_CONTAINER; -alias float OLE_XSIZE_CONTAINER; - -alias VARIANT_BOOL OLE_OPTEXCLUSIVE; -alias VARIANT_BOOL OLE_CANCELBOOL; -alias VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; - -align(8): - -enum OLE_TRISTATE { - triUnchecked, - triChecked1, - triGray -} - -struct OCPFIPARAMS { - ULONG cbStructSize; - HWND hWndOwner; - int x; - int y; - LPCOLESTR lpszCaption; - ULONG cObjects; - LPUNKNOWN *lplpUnk; - ULONG cPages; - CLSID *lpPages; - LCID lcid; - DISPID dispidInitialProperty; -} -alias OCPFIPARAMS* LPOCPFIPARAMS; - -struct FONTDESC { - UINT cbSizeofstruct; - LPOLESTR lpstrName; - CY cySize; - SHORT sWeight; - SHORT sCharset; - BOOL fItalic; - BOOL fUnderline; - BOOL fStrikethrough; -} -alias FONTDESC* LPFONTDESC; - -struct PICTDESC -{ - UINT cbSizeofstruct; - UINT picType; - union { - struct bmp { - HBITMAP hbitmap; - HPALETTE hpal; - } - struct wmf { - HMETAFILE hmeta; - int xExt; - int yExt; - } - struct icon { - HICON hicon; - } - struct emf { - HENHMETAFILE hemf; - } - } -} -alias PICTDESC* LPPICTDESC; - -extern(Windows) { - HRESULT DllRegisterServer(); - HRESULT DllUnregisterServer(); - HRESULT OleCreateFontIndirect(LPFONTDESC, REFIID, PVOID*); - HRESULT OleCreatePictureIndirect(LPPICTDESC, REFIID, BOOL, PVOID*); - HRESULT OleCreatePropertyFrame(HWND, UINT, UINT, LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, PVOID); - HRESULT OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); - HCURSOR OleIconToCursor(HINSTANCE, HICON); - HRESULT OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, PVOID*); - HRESULT OleLoadPictureEx(LPSTREAM, LONG, BOOL, REFIID, DWORD, DWORD, DWORD, LPVOID*); - HRESULT OleLoadPicturePath(LPOLESTR, LPUNKNOWN, DWORD, OLE_COLOR, REFIID, LPVOID*); - HRESULT OleLoadPictureFile(VARIANT, LPDISPATCH*); - HRESULT OleLoadPictureFileEx(VARIANT, DWORD, DWORD, DWORD, LPDISPATCH*); - HRESULT OleSavePictureFile(LPDISPATCH, BSTR); - HRESULT OleTranslateColor(OLE_COLOR, HPALETTE, COLORREF*); -} +/***********************************************************************\ +* olectl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.olectl; + +// In conversion from MinGW, the following was deleted: +//#define FONTSIZE(n) {n##0000, 0} + +import win32.ocidl, win32.olectlid; +private import win32.basetyps, win32.oaidl, win32.oleauto, win32.unknwn, + win32.windef, win32.wingdi, win32.winuser, win32.wtypes; +private import win32.ntdef; // for NTSTATUS +private import win32.objfwd; // for LPSTREAM +private import win32.winerror; // for SCODE + + +private { + // These replace C macros. + template ITF_ERROR_SCODE_FOR_D(int c) + { + const SCODE ITF_ERROR_SCODE_FOR_D + = (SEVERITY_ERROR << 31) | (FACILITY_ITF << 16) | c; + } + + template ITF_SUCCESS_SCODE_FOR_D(int c) + { + const SCODE ITF_SUCCESS_SCODE_FOR_D + = (SEVERITY_SUCCESS << 31) | (FACILITY_ITF << 16) | c; + } + + template STD_CTL_SCODE(int c) + { + const SCODE STD_CTL_SCODE + = (SEVERITY_ERROR << 31) | (FACILITY_CONTROL << 16) | c; + } +} + +enum : SCODE { + CTL_E_ILLEGALFUNCTIONCALL = STD_CTL_SCODE!(5), + CTL_E_OVERFLOW = STD_CTL_SCODE!(6), + CTL_E_OUTOFMEMORY = STD_CTL_SCODE!(7), + CTL_E_DIVISIONBYZERO = STD_CTL_SCODE!(11), + CTL_E_OUTOFSTRINGSPACE = STD_CTL_SCODE!(14), + CTL_E_OUTOFSTACKSPACE = STD_CTL_SCODE!(28), + CTL_E_BADFILENAMEORNUMBER = STD_CTL_SCODE!(52), + CTL_E_FILENOTFOUND = STD_CTL_SCODE!(53), + CTL_E_BADFILEMODE = STD_CTL_SCODE!(54), + CTL_E_FILEALREADYOPEN = STD_CTL_SCODE!(55), + CTL_E_DEVICEIOERROR = STD_CTL_SCODE!(57), + CTL_E_FILEALREADYEXISTS = STD_CTL_SCODE!(58), + CTL_E_BADRECORDLENGTH = STD_CTL_SCODE!(59), + CTL_E_DISKFULL = STD_CTL_SCODE!(61), + CTL_E_BADRECORDNUMBER = STD_CTL_SCODE!(63), + CTL_E_BADFILENAME = STD_CTL_SCODE!(64), + CTL_E_TOOMANYFILES = STD_CTL_SCODE!(67), + CTL_E_DEVICEUNAVAILABLE = STD_CTL_SCODE!(68), + CTL_E_PERMISSIONDENIED = STD_CTL_SCODE!(70), + CTL_E_DISKNOTREADY = STD_CTL_SCODE!(71), + CTL_E_PATHFILEACCESSERROR = STD_CTL_SCODE!(75), + CTL_E_PATHNOTFOUND = STD_CTL_SCODE!(76), + CTL_E_INVALIDPATTERNSTRING = STD_CTL_SCODE!(93), + CTL_E_INVALIDUSEOFNULL = STD_CTL_SCODE!(94), + CTL_E_INVALIDFILEFORMAT = STD_CTL_SCODE!(321), + CTL_E_INVALIDPROPERTYVALUE = STD_CTL_SCODE!(380), + CTL_E_INVALIDPROPERTYARRAYINDEX = STD_CTL_SCODE!(381), + CTL_E_SETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(382), + CTL_E_SETNOTSUPPORTED = STD_CTL_SCODE!(383), + CTL_E_NEEDPROPERTYARRAYINDEX = STD_CTL_SCODE!(385), + CTL_E_SETNOTPERMITTED = STD_CTL_SCODE!(387), + CTL_E_GETNOTSUPPORTEDATRUNTIME = STD_CTL_SCODE!(393), + CTL_E_GETNOTSUPPORTED = STD_CTL_SCODE!(394), + CTL_E_PROPERTYNOTFOUND = STD_CTL_SCODE!(422), + CTL_E_INVALIDCLIPBOARDFORMAT = STD_CTL_SCODE!(460), + CTL_E_INVALIDPICTURE = STD_CTL_SCODE!(481), + CTL_E_PRINTERERROR = STD_CTL_SCODE!(482), + CTL_E_CANTSAVEFILETOTEMP = STD_CTL_SCODE!(735), + CTL_E_SEARCHTEXTNOTFOUND = STD_CTL_SCODE!(744), + CTL_E_REPLACEMENTSTOOLONG = STD_CTL_SCODE!(746), + CTL_E_CUSTOM_FIRST = STD_CTL_SCODE!(600) +} + +const SCODE CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST+2; + +enum : SCODE { + CONNECT_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + CONNECT_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + CONNECT_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + CONNECT_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + CONNECT_E_NOCONNECTION = CONNECT_E_FIRST + 0, + CONNECT_E_ADVISELIMIT = CONNECT_E_FIRST + 1, + CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2, + CONNECT_E_OVERRIDDEN = CONNECT_E_FIRST + 3, + + SELFREG_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + SELFREG_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + SELFREG_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + SELFREG_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0, + SELFREG_E_CLASS = SELFREG_E_FIRST + 1, + + PERPROP_E_FIRST = ITF_ERROR_SCODE_FOR_D!(0x200), + PERPROP_E_LAST = ITF_ERROR_SCODE_FOR_D!(0x20F), + PERPROP_S_FIRST = ITF_SUCCESS_SCODE_FOR_D!(0x200), + PERPROP_S_LAST = ITF_SUCCESS_SCODE_FOR_D!(0x20F), + PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST +} + +enum { + OLEMISC_RECOMPOSEONRESIZE = 0x1, + OLEMISC_ONLYICONIC = 0x2, + OLEMISC_INSERTNOTREPLACE = 0x4, + OLEMISC_STATIC = 0x8, + OLEMISC_CANTLINKINSIDE = 0x10, + OLEMISC_CANLINKBYOLE1 = 0x20, + OLEMISC_ISLINKOBJECT = 0x40, + OLEMISC_INSIDEOUT = 0x80, + OLEMISC_ACTIVATEWHENVISIBLE = 0x100, + OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, + OLEMISC_INVISIBLEATRUNTIME = 0x400, + OLEMISC_ALWAYSRUN = 0x800, + OLEMISC_ACTSLIKEBUTTON = 0x1000, + OLEMISC_ACTSLIKELABEL = 0x2000, + OLEMISC_NOUIACTIVATE = 0x4000, + OLEMISC_ALIGNABLE = 0x8000, + OLEMISC_SIMPLEFRAME = 0x10000, + OLEMISC_SETCLIENTSITEFIRST = 0x20000, + OLEMISC_IMEMODE = 0x40000, + OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, + OLEMISC_WANTSTOMENUMERGE = 0x100000, + OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 +} +const OLEIVERB_PROPERTIES = -7; + +const VT_STREAMED_PROPSET = 73; +const VT_STORED_PROPSET = 74; +const VT_BLOB_PROPSET = 75; +const VT_VERBOSE_ENUM = 76; +const VT_COLOR = VARENUM.VT_I4; +const VT_XPOS_PIXELS = VARENUM.VT_I4; +const VT_YPOS_PIXELS = VARENUM.VT_I4; +const VT_XSIZE_PIXELS = VARENUM.VT_I4; +const VT_YSIZE_PIXELS = VARENUM.VT_I4; +const VT_XPOS_HIMETRIC = VARENUM.VT_I4; +const VT_YPOS_HIMETRIC = VARENUM.VT_I4; +const VT_XSIZE_HIMETRIC = VARENUM.VT_I4; +const VT_YSIZE_HIMETRIC = VARENUM.VT_I4; +const VT_TRISTATE = VARENUM.VT_I2; +const VT_OPTEXCLUSIVE = VARENUM.VT_BOOL; +const VT_FONT = VARENUM.VT_DISPATCH; +const VT_PICTURE = VARENUM.VT_DISPATCH; +const VT_HANDLE = VARENUM.VT_I4; + +enum { + OCM__BASE = WM_USER + 0x1c00, + OCM_COMMAND = OCM__BASE + WM_COMMAND, + OCM_CTLCOLORBTN = OCM__BASE + WM_CTLCOLORBTN, + OCM_CTLCOLOREDIT = OCM__BASE + WM_CTLCOLOREDIT, + OCM_CTLCOLORDLG = OCM__BASE + WM_CTLCOLORDLG, + OCM_CTLCOLORLISTBOX = OCM__BASE + WM_CTLCOLORLISTBOX, + OCM_CTLCOLORMSGBOX = OCM__BASE + WM_CTLCOLORMSGBOX, + OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR, + OCM_CTLCOLORSTATIC = OCM__BASE + WM_CTLCOLORSTATIC, + OCM_DRAWITEM = OCM__BASE + WM_DRAWITEM, + OCM_MEASUREITEM = OCM__BASE + WM_MEASUREITEM, + OCM_DELETEITEM = OCM__BASE + WM_DELETEITEM, + OCM_VKEYTOITEM = OCM__BASE + WM_VKEYTOITEM, + OCM_CHARTOITEM = OCM__BASE + WM_CHARTOITEM, + OCM_COMPAREITEM = OCM__BASE + WM_COMPAREITEM, + OCM_HSCROLL = OCM__BASE + WM_HSCROLL, + OCM_VSCROLL = OCM__BASE + WM_VSCROLL, + OCM_PARENTNOTIFY = OCM__BASE + WM_PARENTNOTIFY, + OCM_NOTIFY = OCM__BASE + WM_NOTIFY +} + +enum { + CTRLINFO_EATS_RETURN = 1, + CTRLINFO_EATS_ESCAPE +} + +enum { + XFORMCOORDS_POSITION = 1, + XFORMCOORDS_SIZE = 2, + XFORMCOORDS_HIMETRICTOCONTAINER = 4, + XFORMCOORDS_CONTAINERTOHIMETRIC = 8 +} + +const GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1; + +enum { + PROPPAGESTATUS_DIRTY = 1, + PROPPAGESTATUS_VALIDATE = 2 +} + +enum { + PICTURE_SCALABLE = 1, + PICTURE_TRANSPARENT = 2 +} + +enum { + PICTYPE_UNINITIALIZED = -1, + PICTYPE_NONE, // = 0 + PICTYPE_BITMAP, + PICTYPE_METAFILE, + PICTYPE_ICON, + PICTYPE_ENHMETAFILE // = 4 +} + +enum { + DISPID_AUTOSIZE = -500, + DISPID_BACKCOLOR = -501, + DISPID_BACKSTYLE = -502, + DISPID_BORDERCOLOR = -503, + DISPID_BORDERSTYLE = -504, + DISPID_BORDERWIDTH = -505, + DISPID_DRAWMODE = -507, + DISPID_DRAWSTYLE = -508, + DISPID_DRAWWIDTH = -509, + DISPID_FILLCOLOR = -510, + DISPID_FILLSTYLE = -511, + DISPID_FONT = -512, + DISPID_FORECOLOR = -513, + DISPID_ENABLED = -514, + DISPID_HWND = -515, + DISPID_TABSTOP = -516, + DISPID_TEXT = -517, + DISPID_CAPTION = -518, + DISPID_BORDERVISIBLE = -519, + DISPID_APPEARANCE = -520, + DISPID_MOUSEPOINTER = -521, + DISPID_MOUSEICON = -522, + DISPID_PICTURE = -523, + DISPID_VALID = -524, + DISPID_REFRESH = -550, + DISPID_DOCLICK = -551, + DISPID_ABOUTBOX = -552, + DISPID_CLICK = -600, + DISPID_DBLCLICK = -601, + DISPID_KEYDOWN = -602, + DISPID_KEYPRESS = -603, + DISPID_KEYUP = -604, + DISPID_MOUSEDOWN = -605, + DISPID_MOUSEMOVE = -606, + DISPID_MOUSEUP = -607, + DISPID_ERROREVENT = -608, + DISPID_AMBIENT_BACKCOLOR = -701, + DISPID_AMBIENT_DISPLAYNAME = -702, + DISPID_AMBIENT_FONT = -703, + DISPID_AMBIENT_FORECOLOR = -704, + DISPID_AMBIENT_LOCALEID = -705, + DISPID_AMBIENT_MESSAGEREFLECT = -706, + DISPID_AMBIENT_SCALEUNITS = -707, + DISPID_AMBIENT_TEXTALIGN = -708, + DISPID_AMBIENT_USERMODE = -709, + DISPID_AMBIENT_UIDEAD = -710, + DISPID_AMBIENT_SHOWGRABHANDLES = -711, + DISPID_AMBIENT_SHOWHATCHING = -712, + DISPID_AMBIENT_DISPLAYASDEFAULT = -713, + DISPID_AMBIENT_SUPPORTSMNEMONICS = -714, + DISPID_AMBIENT_AUTOCLIP = -715, + DISPID_AMBIENT_APPEARANCE = -716, + DISPID_AMBIENT_CODEPAGE = -725, + DISPID_AMBIENT_PALETTE = -726, + DISPID_AMBIENT_CHARSET = -727, + DISPID_AMBIENT_RIGHTTOLEFT = -732, + DISPID_AMBIENT_TOPTOBOTTOM = -733 +} + +enum { + DISPID_FONT_NAME = 0, + DISPID_FONT_SIZE = 2, + DISPID_FONT_BOLD, + DISPID_FONT_ITALIC, + DISPID_FONT_UNDER, + DISPID_FONT_STRIKE, + DISPID_FONT_WEIGHT, + DISPID_FONT_CHARSET // = 8 +} + +enum { + DISPID_PICT_HANDLE = 0, + DISPID_PICT_HPAL = 2, + DISPID_PICT_TYPE, + DISPID_PICT_WIDTH, + DISPID_PICT_HEIGHT, + DISPID_PICT_RENDER // = 6 +} + +alias IOleControl LPOLECONTROL; +alias IOleControlSite LPOLECONTROLSITE; +alias ISimpleFrameSite LPSIMPLEFRAMESITE; +alias IPersistPropertyBag LPPERSISTPROPERTYBAG; +alias IPersistStreamInit LPPERSISTSTREAMINIT; +alias IPersistMemory LPPERSISTMEMORY; +alias IPropertyNotifySink LPPROPERTYNOTIFYSINK; +alias IProvideClassInfo LPPROVIDECLASSINFO; +alias IProvideClassInfo2 LPPROVIDECLASSINFO2; +alias IConnectionPointContainer LPCONNECTIONPOINTCONTAINER; +alias IClassFactory2 LPCLASSFACTORY2; +alias ISpecifyPropertyPages LPSPECIFYPROPERTYPAGES; +alias IPerPropertyBrowsing LPPERPROPERTYBROWSING; +alias IPropertyPage LPPROPERTYPAGE; +alias IPropertyPage2 LPPROPERTYPAGE2; + +alias IPicture LPPICTURE; +alias IPictureDisp LPPICTUREDISP; +alias int OLE_XPOS_PIXELS; +alias int OLE_YPOS_PIXELS; +alias int OLE_XSIZE_PIXELS; +alias int OLE_YSIZE_PIXELS; +alias float OLE_XPOS_CONTAINER; +alias float OLE_YPOS_CONTAINER; +alias float OLE_XSIZE_CONTAINER; + +alias VARIANT_BOOL OLE_OPTEXCLUSIVE; +alias VARIANT_BOOL OLE_CANCELBOOL; +alias VARIANT_BOOL OLE_ENABLEDEFAULTBOOL; + +align(8): + +enum OLE_TRISTATE { + triUnchecked, + triChecked1, + triGray +} + +struct OCPFIPARAMS { + ULONG cbStructSize; + HWND hWndOwner; + int x; + int y; + LPCOLESTR lpszCaption; + ULONG cObjects; + LPUNKNOWN *lplpUnk; + ULONG cPages; + CLSID *lpPages; + LCID lcid; + DISPID dispidInitialProperty; +} +alias OCPFIPARAMS* LPOCPFIPARAMS; + +struct FONTDESC { + UINT cbSizeofstruct; + LPOLESTR lpstrName; + CY cySize; + SHORT sWeight; + SHORT sCharset; + BOOL fItalic; + BOOL fUnderline; + BOOL fStrikethrough; +} +alias FONTDESC* LPFONTDESC; + +struct PICTDESC +{ + UINT cbSizeofstruct; + UINT picType; + union { + struct bmp { + HBITMAP hbitmap; + HPALETTE hpal; + } + struct wmf { + HMETAFILE hmeta; + int xExt; + int yExt; + } + struct icon { + HICON hicon; + } + struct emf { + HENHMETAFILE hemf; + } + } +} +alias PICTDESC* LPPICTDESC; + +extern(Windows) { + HRESULT DllRegisterServer(); + HRESULT DllUnregisterServer(); + HRESULT OleCreateFontIndirect(LPFONTDESC, REFIID, PVOID*); + HRESULT OleCreatePictureIndirect(LPPICTDESC, REFIID, BOOL, PVOID*); + HRESULT OleCreatePropertyFrame(HWND, UINT, UINT, LPCOLESTR, ULONG, LPUNKNOWN*, ULONG, LPCLSID, LCID, DWORD, PVOID); + HRESULT OleCreatePropertyFrameIndirect(LPOCPFIPARAMS); + HCURSOR OleIconToCursor(HINSTANCE, HICON); + HRESULT OleLoadPicture(LPSTREAM, LONG, BOOL, REFIID, PVOID*); + HRESULT OleLoadPictureEx(LPSTREAM, LONG, BOOL, REFIID, DWORD, DWORD, DWORD, LPVOID*); + HRESULT OleLoadPicturePath(LPOLESTR, LPUNKNOWN, DWORD, OLE_COLOR, REFIID, LPVOID*); + HRESULT OleLoadPictureFile(VARIANT, LPDISPATCH*); + HRESULT OleLoadPictureFileEx(VARIANT, DWORD, DWORD, DWORD, LPDISPATCH*); + HRESULT OleSavePictureFile(LPDISPATCH, BSTR); + HRESULT OleTranslateColor(OLE_COLOR, HPALETTE, COLORREF*); +} Index: src/win32/olectlid.d ================================================================== --- src/win32/olectlid.d +++ src/win32/olectlid.d @@ -1,13 +1,13 @@ -/***********************************************************************\ -* olectlid.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.olectlid; - -private import win32.basetyps; - +/***********************************************************************\ +* olectlid.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.olectlid; + +private import win32.basetyps; + Index: src/win32/oledlg.d ================================================================== --- src/win32/oledlg.d +++ src/win32/oledlg.d @@ -1,990 +1,990 @@ -/***********************************************************************\ -* oledlg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.oledlg; - -import win32.commdlg, win32.dlgs, win32.ole2, win32.prsht, win32.shellapi, - win32.windows; -private import win32.winbase, win32.objidl, win32.objfwd, win32.winnt; - -// FIXME: remove inherited methods from interface definitions - -const PS_MAXLINKTYPES=8; - -const TCHAR[] OLESTDDELIM = "\\"; -const TCHAR[] SZOLEUI_MSG_HELP = "OLEUI_MSG_HELP"; -const TCHAR[] SZOLEUI_MSG_ENDDIALOG = "OLEUI_MSG_ENDDIALOG"; -const TCHAR[] SZOLEUI_MSG_BROWSE = "OLEUI_MSG_BROWSE"; -const TCHAR[] SZOLEUI_MSG_CHANGEICON = "OLEUI_MSG_CHANGEICON"; -const TCHAR[] SZOLEUI_MSG_CLOSEBUSYDIALOG = "OLEUI_MSG_CLOSEBUSYDIALOG"; -const TCHAR[] SZOLEUI_MSG_CONVERT = "OLEUI_MSG_CONVERT"; -const TCHAR[] SZOLEUI_MSG_CHANGESOURCE = "OLEUI_MSG_CHANGESOURCE"; -const TCHAR[] SZOLEUI_MSG_ADDCONTROL = "OLEUI_MSG_ADDCONTROL"; -const TCHAR[] SZOLEUI_MSG_BROWSE_OFN = "OLEUI_MSG_BROWSE_OFN"; - -const TCHAR[] PROP_HWND_CHGICONDLG = "HWND_CIDLG"; - -const IDC_OLEUIHELP=99; - -enum { - IDC_IO_CREATENEW = 2100, - IDC_IO_CREATEFROMFILE, - IDC_IO_LINKFILE, - IDC_IO_OBJECTTYPELIST, - IDC_IO_DISPLAYASICON, - IDC_IO_CHANGEICON, - IDC_IO_FILE, - IDC_IO_FILEDISPLAY, - IDC_IO_RESULTIMAGE, - IDC_IO_RESULTTEXT, - IDC_IO_ICONDISPLAY, - IDC_IO_OBJECTTYPETEXT, - IDC_IO_FILETEXT, - IDC_IO_FILETYPE, - IDC_IO_INSERTCONTROL, - IDC_IO_ADDCONTROL, - IDC_IO_CONTROLTYPELIST // = 2116 -} - -const IDC_PS_PASTE=500; -const IDC_PS_PASTELINK=501; -const IDC_PS_SOURCETEXT=502; -const IDC_PS_PASTELIST=503; -const IDC_PS_PASTELINKLIST=504; -const IDC_PS_DISPLAYLIST=505; -const IDC_PS_DISPLAYASICON=506; -const IDC_PS_ICONDISPLAY=507; -const IDC_PS_CHANGEICON=508; -const IDC_PS_RESULTIMAGE=509; -const IDC_PS_RESULTTEXT=510; - -const IDC_CI_GROUP=120; -const IDC_CI_CURRENT=121; -const IDC_CI_CURRENTICON=122; -const IDC_CI_DEFAULT=123; -const IDC_CI_DEFAULTICON=124; -const IDC_CI_FROMFILE=125; -const IDC_CI_FROMFILEEDIT=126; -const IDC_CI_ICONLIST=127; -const IDC_CI_LABEL=128; -const IDC_CI_LABELEDIT=129; -const IDC_CI_BROWSE=130; -const IDC_CI_ICONDISPLAY=131; - -const IDC_CV_OBJECTTYPE=150; -const IDC_CV_DISPLAYASICON=152; -const IDC_CV_CHANGEICON=153; -const IDC_CV_ACTIVATELIST=154; -const IDC_CV_CONVERTTO=155; -const IDC_CV_ACTIVATEAS=156; -const IDC_CV_RESULTTEXT=157; -const IDC_CV_CONVERTLIST=158; -const IDC_CV_ICONDISPLAY=165; - -const IDC_EL_CHANGESOURCE=201; -const IDC_EL_AUTOMATIC=202; -const IDC_EL_CANCELLINK=209; -const IDC_EL_UPDATENOW=210; -const IDC_EL_OPENSOURCE=211; -const IDC_EL_MANUAL=212; -const IDC_EL_LINKSOURCE=216; -const IDC_EL_LINKTYPE=217; -const IDC_EL_LINKSLISTBOX=206; -const IDC_EL_COL1=220; -const IDC_EL_COL2=221; -const IDC_EL_COL3=222; - -const IDC_BZ_RETRY=600; -const IDC_BZ_ICON=601; -const IDC_BZ_MESSAGE1=602; -const IDC_BZ_SWITCHTO=604; - -const IDC_UL_METER=1029; -const IDC_UL_STOP=1030; -const IDC_UL_PERCENT=1031; -const IDC_UL_PROGRESS=1032; - -const IDC_PU_LINKS=900; -const IDC_PU_TEXT=901; -const IDC_PU_CONVERT=902; -const IDC_PU_ICON=908; - -const IDC_GP_OBJECTNAME=1009; -const IDC_GP_OBJECTTYPE=1010; -const IDC_GP_OBJECTSIZE=1011; -const IDC_GP_CONVERT=1013; -const IDC_GP_OBJECTICON=1014; -const IDC_GP_OBJECTLOCATION=1022; - -const IDC_VP_PERCENT=1000; -const IDC_VP_CHANGEICON=1001; -const IDC_VP_EDITABLE=1002; -const IDC_VP_ASICON=1003; -const IDC_VP_RELATIVE=1005; -const IDC_VP_SPIN=1006; -const IDC_VP_SCALETXT=1034; -const IDC_VP_ICONDISPLAY=1021; -const IDC_VP_RESULTIMAGE=1033; - -const IDC_LP_OPENSOURCE=1006; -const IDC_LP_UPDATENOW=1007; -const IDC_LP_BREAKLINK=1008; -const IDC_LP_LINKSOURCE=1012; -const IDC_LP_CHANGESOURCE=1015; -const IDC_LP_AUTOMATIC=1016; -const IDC_LP_MANUAL=1017; -const IDC_LP_DATE=1018; -const IDC_LP_TIME=1019; - -const IDD_INSERTOBJECT=1000; -const IDD_CHANGEICON=1001; -const IDD_CONVERT=1002; -const IDD_PASTESPECIAL=1003; -const IDD_EDITLINKS=1004; -const IDD_BUSY=1006; -const IDD_UPDATELINKS=1007; -const IDD_CHANGESOURCE=1009; -const IDD_INSERTFILEBROWSE=1010; -const IDD_CHANGEICONBROWSE=1011; -const IDD_CONVERTONLY=1012; -const IDD_CHANGESOURCE4=1013; -const IDD_GNRLPROPS=1100; -const IDD_VIEWPROPS=1101; -const IDD_LINKPROPS=1102; -const IDD_CANNOTUPDATELINK=1008; -const IDD_LINKSOURCEUNAVAILABLE=1020; -const IDD_SERVERNOTFOUND=1023; -const IDD_OUTOFMEMORY=1024; -const IDD_SERVERNOTREGW=1021; -const IDD_LINKTYPECHANGEDW=1022; -const IDD_SERVERNOTREGA=1025; -const IDD_LINKTYPECHANGEDA=1026; - -const ID_BROWSE_CHANGEICON=1; -const ID_BROWSE_INSERTFILE=2; -const ID_BROWSE_ADDCONTROL=3; -const ID_BROWSE_CHANGESOURCE=4; - -const OLEUI_FALSE=0; -const OLEUI_SUCCESS=1; -const OLEUI_OK=1; -const OLEUI_CANCEL=2; - -const OLEUI_ERR_STANDARDMIN=100; -const OLEUI_ERR_STRUCTURENULL=101; -const OLEUI_ERR_STRUCTUREINVALID=102; -const OLEUI_ERR_CBSTRUCTINCORRECT=103; -const OLEUI_ERR_HWNDOWNERINVALID=104; -const OLEUI_ERR_LPSZCAPTIONINVALID=105; -const OLEUI_ERR_LPFNHOOKINVALID=106; -const OLEUI_ERR_HINSTANCEINVALID=107; -const OLEUI_ERR_LPSZTEMPLATEINVALID=108; -const OLEUI_ERR_HRESOURCEINVALID=109; -const OLEUI_ERR_FINDTEMPLATEFAILURE=110; -const OLEUI_ERR_LOADTEMPLATEFAILURE=111; -const OLEUI_ERR_DIALOGFAILURE=112; -const OLEUI_ERR_LOCALMEMALLOC=113; -const OLEUI_ERR_GLOBALMEMALLOC=114; -const OLEUI_ERR_LOADSTRING=115; -const OLEUI_ERR_OLEMEMALLOC=116; -const OLEUI_ERR_STANDARDMAX=116; - -const OPF_OBJECTISLINK=1; -const OPF_NOFILLDEFAULT=2; -const OPF_SHOWHELP=4; -const OPF_DISABLECONVERT=8; - -const OLEUI_OPERR_SUBPROPNULL=OLEUI_ERR_STANDARDMAX; -const OLEUI_OPERR_SUBPROPINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_OPERR_PROPSHEETNULL=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_OPERR_PROPSHEETINVALID=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_OPERR_SUPPROP=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_OPERR_PROPSINVALID=(OLEUI_ERR_STANDARDMAX+5); -const OLEUI_OPERR_PAGESINCORRECT=(OLEUI_ERR_STANDARDMAX+6); -const OLEUI_OPERR_INVALIDPAGES=(OLEUI_ERR_STANDARDMAX+7); -const OLEUI_OPERR_NOTSUPPORTED=(OLEUI_ERR_STANDARDMAX+8); -const OLEUI_OPERR_DLGPROCNOTNULL=(OLEUI_ERR_STANDARDMAX+9); -const OLEUI_OPERR_LPARAMNOTZERO=(OLEUI_ERR_STANDARDMAX+10); -const OLEUI_GPERR_STRINGINVALID=(OLEUI_ERR_STANDARDMAX+11); -const OLEUI_GPERR_CLASSIDINVALID=(OLEUI_ERR_STANDARDMAX+12); -const OLEUI_GPERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+13); -const OLEUI_GPERR_CBFORMATINVALID=(OLEUI_ERR_STANDARDMAX+14); -const OLEUI_VPERR_METAPICTINVALID=(OLEUI_ERR_STANDARDMAX+15); -const OLEUI_VPERR_DVASPECTINVALID=(OLEUI_ERR_STANDARDMAX+16); -const OLEUI_LPERR_LINKCNTRNULL=(OLEUI_ERR_STANDARDMAX+17); -const OLEUI_LPERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+18); -const OLEUI_OPERR_PROPERTYSHEET=(OLEUI_ERR_STANDARDMAX+19); -const OLEUI_OPERR_OBJINFOINVALID=(OLEUI_ERR_STANDARDMAX+20); -const OLEUI_OPERR_LINKINFOINVALID=(OLEUI_ERR_STANDARDMAX+21); - -const OLEUI_QUERY_GETCLASSID=65280; -const OLEUI_QUERY_LINKBROKEN=65281; - -const IOF_SHOWHELP=1; -const IOF_SELECTCREATENEW=2; -const IOF_SELECTCREATEFROMFILE=4; -const IOF_CHECKLINK=8; -const IOF_CHECKDISPLAYASICON=16; -const IOF_CREATENEWOBJECT=32; -const IOF_CREATEFILEOBJECT=64; -const IOF_CREATELINKOBJECT=128; -const IOF_DISABLELINK=256; -const IOF_VERIFYSERVERSEXIST=512; -const IOF_DISABLEDISPLAYASICON=1024; -const IOF_HIDECHANGEICON=2048; -const IOF_SHOWINSERTCONTROL=4096; -const IOF_SELECTCREATECONTROL=8192; - -const OLEUI_IOERR_LPSZFILEINVALID=OLEUI_ERR_STANDARDMAX; -const OLEUI_IOERR_LPSZLABELINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_IOERR_HICONINVALID=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_IOERR_LPFORMATETCINVALID=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_IOERR_PPVOBJINVALID=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_IOERR_LPIOLECLIENTSITEINVALID=(OLEUI_ERR_STANDARDMAX+5); -const OLEUI_IOERR_LPISTORAGEINVALID=(OLEUI_ERR_STANDARDMAX+6); -const OLEUI_IOERR_SCODEHASERROR=(OLEUI_ERR_STANDARDMAX+7); -const OLEUI_IOERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+8); -const OLEUI_IOERR_CCHFILEINVALID=(OLEUI_ERR_STANDARDMAX+9); - -const PSF_SHOWHELP=1; -const PSF_SELECTPASTE=2; -const PSF_SELECTPASTELINK=4; -const PSF_CHECKDISPLAYASICON=8; -const PSF_DISABLEDISPLAYASICON=16; -const PSF_HIDECHANGEICON=32; -const PSF_STAYONCLIPBOARDCHANGE=64; -const PSF_NOREFRESHDATAOBJECT=128; - -const OLEUI_IOERR_SRCDATAOBJECTINVALID=OLEUI_ERR_STANDARDMAX; -const OLEUI_IOERR_ARRPASTEENTRIESINVALID=(OLEUI_ERR_STANDARDMAX+1); -const OLEUI_IOERR_ARRLINKTYPESINVALID=(OLEUI_ERR_STANDARDMAX+2); -const OLEUI_PSERR_CLIPBOARDCHANGED=(OLEUI_ERR_STANDARDMAX+3); -const OLEUI_PSERR_GETCLIPBOARDFAILED=(OLEUI_ERR_STANDARDMAX+4); -const OLEUI_ELERR_LINKCNTRNULL=OLEUI_ERR_STANDARDMAX; -const OLEUI_ELERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+1); - -const ELF_SHOWHELP=1; -const ELF_DISABLEUPDATENOW=2; -const ELF_DISABLEOPENSOURCE=4; -const ELF_DISABLECHANGESOURCE=8; -const ELF_DISABLECANCELLINK=16; - -const CIF_SHOWHELP=1; -const CIF_SELECTCURRENT=2; -const CIF_SELECTDEFAULT=4; -const CIF_SELECTFROMFILE=8; -const CIF_USEICONEXE=16; - -const OLEUI_CIERR_MUSTHAVECLSID=OLEUI_ERR_STANDARDMAX; -const OLEUI_CIERR_MUSTHAVECURRENTMETAFILE=OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CIERR_SZICONEXEINVALID=OLEUI_ERR_STANDARDMAX+2; - -const CF_SHOWHELPBUTTON=1; -const CF_SETCONVERTDEFAULT=2; -const CF_SETACTIVATEDEFAULT=4; -const CF_SELECTCONVERTTO=8; -const CF_SELECTACTIVATEAS=16; -const CF_DISABLEDISPLAYASICON=32; -const CF_DISABLEACTIVATEAS=64; -const CF_HIDECHANGEICON=128; -const CF_CONVERTONLY=256; - -const OLEUI_CTERR_CLASSIDINVALID = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CTERR_DVASPECTINVALID = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_CTERR_CBFORMATINVALID = OLEUI_ERR_STANDARDMAX+3; -const OLEUI_CTERR_HMETAPICTINVALID = OLEUI_ERR_STANDARDMAX+4; -const OLEUI_CTERR_STRINGINVALID = OLEUI_ERR_STANDARDMAX+5; - -const BZ_DISABLECANCELBUTTON = 1; -const BZ_DISABLESWITCHTOBUTTON = 2; -const BZ_DISABLERETRYBUTTON = 4; -const BZ_NOTRESPONDINGDIALOG = 8; - -const OLEUI_BZERR_HTASKINVALID = OLEUI_ERR_STANDARDMAX; -const OLEUI_BZ_SWITCHTOSELECTED = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_BZ_RETRYSELECTED = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_BZ_CALLUNBLOCKED = OLEUI_ERR_STANDARDMAX+3; - -const CSF_SHOWHELP = 1; -const CSF_VALIDSOURCE = 2; -const CSF_ONLYGETSOURCE = 4; -const CSF_EXPLORER = 8; - -const OLEUI_CSERR_LINKCNTRNULL = OLEUI_ERR_STANDARDMAX; -const OLEUI_CSERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX+1; -const OLEUI_CSERR_FROMNOTNULL = OLEUI_ERR_STANDARDMAX+2; -const OLEUI_CSERR_TONOTNULL = OLEUI_ERR_STANDARDMAX+3; -const OLEUI_CSERR_SOURCENULL = OLEUI_ERR_STANDARDMAX+4; -const OLEUI_CSERR_SOURCEINVALID = OLEUI_ERR_STANDARDMAX+5; -const OLEUI_CSERR_SOURCEPARSERROR = OLEUI_ERR_STANDARDMAX+6; -const OLEUI_CSERR_SOURCEPARSEERROR = OLEUI_ERR_STANDARDMAX+7; - -const VPF_SELECTRELATIVE=1; -const VPF_DISABLERELATIVE=2; -const VPF_DISABLESCALE=4; - -align(8): -extern (Windows) { - alias UINT function(HWND, UINT, WPARAM, LPARAM) LPFNOLEUIHOOK; -} - -struct OLEUIINSERTOBJECTW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - LPWSTR lpszFile; - UINT cchFile; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - IID iid; - DWORD oleRender; - LPFORMATETC lpFormatEtc; - LPOLECLIENTSITE lpIOleClientSite; - LPSTORAGE lpIStorage; - PVOID *ppvObj; - SCODE sc; - HGLOBAL hMetaPict; -} -alias OLEUIINSERTOBJECTW* POLEUIINSERTOBJECTW, LPOLEUIINSERTOBJECTW; - -struct OLEUIINSERTOBJECTA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - LPSTR lpszFile; - UINT cchFile; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - IID iid; - DWORD oleRender; - LPFORMATETC lpFormatEtc; - LPOLECLIENTSITE lpIOleClientSite; - LPSTORAGE lpIStorage; - PVOID *ppvObj; - SCODE sc; - HGLOBAL hMetaPict; -} -alias OLEUIINSERTOBJECTA* POLEUIINSERTOBJECTA, LPOLEUIINSERTOBJECTA; - -UINT OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); -UINT OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); - -enum OLEUIPASTEFLAG { - OLEUIPASTE_PASTEONLY, - OLEUIPASTE_LINKTYPE1, - OLEUIPASTE_LINKTYPE2, - OLEUIPASTE_LINKTYPE3 = 4, - OLEUIPASTE_LINKTYPE4 = 8, - OLEUIPASTE_LINKTYPE5 = 16, - OLEUIPASTE_LINKTYPE6 = 32, - OLEUIPASTE_LINKTYPE7 = 64, - OLEUIPASTE_LINKTYPE8 = 128, - OLEUIPASTE_PASTE = 512, - OLEUIPASTE_LINKANYTYPE = 1024, - OLEUIPASTE_ENABLEICON = 2048 -} - -struct OLEUIPASTEENTRYW { - FORMATETC fmtetc; - LPCWSTR lpstrFormatName; - LPCWSTR lpstrResultText; - DWORD dwFlags; - DWORD dwScratchSpace; -} -alias OLEUIPASTEENTRYW* POLEUIPASTEENTRYW, LPOLEUIPASTEENTRYW; - -struct OLEUIPASTEENTRYA { - FORMATETC fmtetc; - LPCSTR lpstrFormatName; - LPCSTR lpstrResultText; - DWORD dwFlags; - DWORD dwScratchSpace; -} -alias OLEUIPASTEENTRYA* POLEUIPASTEENTRYA, LPOLEUIPASTEENTRYA; - -struct OLEUIPASTESPECIALW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - LPDATAOBJECT lpSrcDataObj; - LPOLEUIPASTEENTRYW arrPasteEntries; - int cPasteEntries; - UINT *arrLinkTypes; - int cLinkTypes; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - int nSelectedIndex; - BOOL fLink; - HGLOBAL hMetaPict; - SIZEL sizel; -} -alias OLEUIPASTESPECIALW* POLEUIPASTESPECIALW, LPOLEUIPASTESPECIALW; - -struct OLEUIPASTESPECIALA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - LPDATAOBJECT lpSrcDataObj; - LPOLEUIPASTEENTRYA arrPasteEntries; - int cPasteEntries; - UINT* arrLinkTypes; - int cLinkTypes; - UINT cClsidExclude; - LPCLSID lpClsidExclude; - int nSelectedIndex; - BOOL fLink; - HGLOBAL hMetaPict; - SIZEL sizel; -} -alias OLEUIPASTESPECIALA* POLEUIPASTESPECIALA, LPOLEUIPASTESPECIALA; - -interface IOleUILinkContainerW : IUnknown -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD dwLink); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, PDWORD); - HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); -} -alias IOleUILinkContainerW* LPOLEUILINKCONTAINERW; - -interface IOleUILinkContainerA : IUnknown -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, PDWORD); - HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); -} -alias IOleUILinkContainerA* LPOLEUILINKCONTAINERA; - -struct OLEUIEDITLINKSW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - LPOLEUILINKCONTAINERW lpOleUILinkContainer; -} -alias OLEUIEDITLINKSW* POLEUIEDITLINKSW, LPOLEUIEDITLINKSW; - -struct OLEUIEDITLINKSA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - LPOLEUILINKCONTAINERA lpOleUILinkContainer; -} -alias OLEUIEDITLINKSA* POLEUIEDITLINKSA, LPOLEUIEDITLINKSA; - -struct OLEUICHANGEICONW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - HGLOBAL hMetaPict; - CLSID clsid; - WCHAR szIconExe[MAX_PATH]; - int cchIconExe; -} -alias OLEUICHANGEICONW* POLEUICHANGEICONW, LPOLEUICHANGEICONW; - -struct OLEUICHANGEICONA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - HGLOBAL hMetaPict; - CLSID clsid; - CHAR szIconExe[MAX_PATH]; - int cchIconExe; -} -alias OLEUICHANGEICONA* POLEUICHANGEICONA, LPOLEUICHANGEICONA; - -struct OLEUICONVERTW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - CLSID clsidConvertDefault; - CLSID clsidActivateDefault; - CLSID clsidNew; - DWORD dvAspect; - WORD wFormat; - BOOL fIsLinkedObject; - HGLOBAL hMetaPict; - LPWSTR lpszUserType; - BOOL fObjectsIconChanged; - LPWSTR lpszDefLabel; - UINT cClsidExclude; - LPCLSID lpClsidExclude; -} -alias OLEUICONVERTW* POLEUICONVERTW, LPOLEUICONVERTW; - -struct OLEUICONVERTA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - CLSID clsid; - CLSID clsidConvertDefault; - CLSID clsidActivateDefault; - CLSID clsidNew; - DWORD dvAspect; - WORD wFormat; - BOOL fIsLinkedObject; - HGLOBAL hMetaPict; - LPSTR lpszUserType; - BOOL fObjectsIconChanged; - LPSTR lpszDefLabel; - UINT cClsidExclude; - LPCLSID lpClsidExclude; -} -alias OLEUICONVERTA* POLEUICONVERTA, LPOLEUICONVERTA; - -struct OLEUIBUSYW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - HTASK hTask; - HWND *lphWndDialog; -} -alias OLEUIBUSYW* POLEUIBUSYW, LPOLEUIBUSYW; - -struct OLEUIBUSYA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - HTASK hTask; - HWND *lphWndDialog; -} -alias OLEUIBUSYA* POLEUIBUSYA, LPOLEUIBUSYA; - -struct OLEUICHANGESOURCEW { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCWSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCWSTR lpszTemplate; - HRSRC hResource; - OPENFILENAMEW* lpOFN; - DWORD dwReserved1[4]; - LPOLEUILINKCONTAINERW lpOleUILinkContainer; - DWORD dwLink; - LPWSTR lpszDisplayName; - ULONG nFileLength; - LPWSTR lpszFrom; - LPWSTR lpszTo; -} -alias OLEUICHANGESOURCEW* POLEUICHANGESOURCEW, LPOLEUICHANGESOURCEW; - -struct OLEUICHANGESOURCEA { - DWORD cbStruct; - DWORD dwFlags; - HWND hWndOwner; - LPCSTR lpszCaption; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - HINSTANCE hInstance; - LPCSTR lpszTemplate; - HRSRC hResource; - OPENFILENAMEA *lpOFN; - DWORD dwReserved1[4]; - LPOLEUILINKCONTAINERA lpOleUILinkContainer; - DWORD dwLink; - LPSTR lpszDisplayName; - ULONG nFileLength; - LPSTR lpszFrom; - LPSTR lpszTo; -} -alias OLEUICHANGESOURCEA* POLEUICHANGESOURCEA, LPOLEUICHANGESOURCEA; - -interface IOleUIObjInfoW : IUnknown -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*); - HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); - HRESULT ConvertObject(DWORD, REFCLSID); - HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); - HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); -} -alias IOleUIObjInfoW *LPOLEUIOBJINFOW; - -interface IOleUIObjInfoA : IUnknown -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*); - HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); - HRESULT ConvertObject(DWORD, REFCLSID); - HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); - HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); -} -alias IOleUIObjInfoA *LPOLEUIOBJINFOA; - -interface IOleUILinkInfoW : IOleUILinkContainerW -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, DWORD*); - HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); - HRESULT GetLastUpdate(DWORD, FILETIME*); -} -alias IOleUILinkInfoW *LPOLEUILINKINFOW; - -interface IOleUILinkInfoA : IOleUILinkContainerA -{ - HRESULT QueryInterface(REFIID, PVOID*); - ULONG AddRef(); - ULONG Release(); - DWORD GetNextLink(DWORD); - HRESULT SetLinkUpdateOptions(DWORD, DWORD); - HRESULT GetLinkUpdateOptions(DWORD, DWORD*); - HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); - HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); - HRESULT OpenLinkSource(DWORD); - HRESULT UpdateLink(DWORD, BOOL, BOOL); - HRESULT CancelLink(DWORD); - HRESULT GetLastUpdate(DWORD, FILETIME*); -} -alias IOleUILinkInfoA* LPOLEUILINKINFOA; - -struct OLEUIGNRLPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - OLEUIOBJECTPROPSW* lpOP; -} -alias OLEUIGNRLPROPSW* POLEUIGNRLPROPSW, LPOLEUIGNRLPROPSW; - -struct OLEUIGNRLPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - OLEUIOBJECTPROPSA* lpOP; -} -alias OLEUIGNRLPROPSA* POLEUIGNRLPROPSA, LPOLEUIGNRLPROPSA; - -struct OLEUIVIEWPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - OLEUIOBJECTPROPSW* lpOP; - int nScaleMin; - int nScaleMax; -} -alias OLEUIVIEWPROPSW* POLEUIVIEWPROPSW, LPOLEUIVIEWPROPSW; - -struct OLEUIVIEWPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - OLEUIOBJECTPROPSA *lpOP; - int nScaleMin; - int nScaleMax; -} -alias OLEUIVIEWPROPSA* POLEUIVIEWPROPSA, LPOLEUIVIEWPROPSA; - -struct OLEUILINKPROPSW { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - OLEUIOBJECTPROPSW *lpOP; -} -alias OLEUILINKPROPSW* POLEUILINKPROPSW, LPOLEUILINKPROPSW; - -struct OLEUILINKPROPSA { - DWORD cbStruct; - DWORD dwFlags; - DWORD dwReserved1[2]; - LPFNOLEUIHOOK lpfnHook; - LPARAM lCustData; - DWORD dwReserved2[3]; - OLEUIOBJECTPROPSA* lpOP; -} -alias OLEUILINKPROPSA* POLEUILINKPROPSA, LPOLEUILINKPROPSA; - -struct OLEUIOBJECTPROPSW { - DWORD cbStruct; - DWORD dwFlags; - LPPROPSHEETHEADERW lpPS; - DWORD dwObject; - LPOLEUIOBJINFOW lpObjInfo; - DWORD dwLink; - LPOLEUILINKINFOW lpLinkInfo; - LPOLEUIGNRLPROPSW lpGP; - LPOLEUIVIEWPROPSW lpVP; - LPOLEUILINKPROPSW lpLP; -} -alias OLEUIOBJECTPROPSW* POLEUIOBJECTPROPSW, LPOLEUIOBJECTPROPSW; - -struct OLEUIOBJECTPROPSA { - DWORD cbStruct; - DWORD dwFlags; - LPPROPSHEETHEADERA lpPS; - DWORD dwObject; - LPOLEUIOBJINFOA lpObjInfo; - DWORD dwLink; - LPOLEUILINKINFOA lpLinkInfo; - LPOLEUIGNRLPROPSA lpGP; - LPOLEUIVIEWPROPSA lpVP; - LPOLEUILINKPROPSA lpLP; -} -alias OLEUIOBJECTPROPSA* POLEUIOBJECTPROPSA, LPOLEUIOBJECTPROPSA; - -extern (Windows) { - BOOL OleUIAddVerbMenuW(LPOLEOBJECT, LPCWSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); - BOOL OleUIAddVerbMenuA(LPOLEOBJECT, LPCSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); - UINT OleUIBusyW(LPOLEUIBUSYW); - UINT OleUIBusyA(LPOLEUIBUSYA); - BOOL OleUICanConvertOrActivateAs(REFCLSID, BOOL, WORD); - UINT OleUIChangeIconW(LPOLEUICHANGEICONW); - UINT OleUIChangeIconA(LPOLEUICHANGEICONA); - UINT OleUIChangeSourceW(LPOLEUICHANGESOURCEW); - UINT OleUIChangeSourceA(LPOLEUICHANGESOURCEA); - UINT OleUIConvertW(LPOLEUICONVERTW); - UINT OleUIConvertA(LPOLEUICONVERTA); - UINT OleUIEditLinksW(LPOLEUIEDITLINKSW); - UINT OleUIEditLinksA(LPOLEUIEDITLINKSA); - UINT OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); - UINT OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); - UINT OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); - UINT OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); - BOOL OleUIUpdateLinksW(LPOLEUILINKCONTAINERW, HWND, LPWSTR, int); - BOOL OleUIUpdateLinksA(LPOLEUILINKCONTAINERA, HWND, LPSTR, int); -} - -extern (C) { - int OleUIPromptUserW(int, HWND, ...); - int OleUIPromptUserA(int, HWND, ...); -} - -version(Unicode) { - alias IDD_SERVERNOTREGW IDD_SERVERNOTREG; - alias IDD_LINKTYPECHANGEDW IDD_LINKTYPECHANGED; - alias OleUIUpdateLinksW OleUIUpdateLinks; - alias OleUIAddVerbMenuW OleUIAddVerbMenu; - alias OLEUIOBJECTPROPSW OLEUIOBJECTPROPS; - alias POLEUIOBJECTPROPSW POLEUIOBJECTPROPS; - alias LPOLEUIOBJECTPROPSW LPOLEUIOBJECTPROPS; - alias OleUIObjectPropertiesW OleUIObjectProperties; - alias OLEUIINSERTOBJECTW OLEUIINSERTOBJECT; - alias POLEUIINSERTOBJECTW POLEUIINSERTOBJECT; - alias LPOLEUIINSERTOBJECTW LPOLEUIINSERTOBJECT; - alias OleUIInsertObjectW OleUIInsertObject; - alias OleUIPromptUserW OleUIPromptUser; - alias OLEUIPASTEENTRYW OLEUIPASTEENTRY; - alias POLEUIPASTEENTRYW POLEUIPASTEENTRY; - alias LPOLEUIPASTEENTRYW LPOLEUIPASTEENTRY; - alias OLEUIPASTESPECIALW OLEUIPASTESPECIAL; - alias POLEUIPASTESPECIALW POLEUIPASTESPECIAL; - alias LPOLEUIPASTESPECIALW LPOLEUIPASTESPECIAL; - alias OleUIPasteSpecialW OleUIPasteSpecial; - alias IOleUILinkContainerW IOleUILinkContainer; - alias LPOLEUILINKCONTAINERW LPOLEUILINKCONTAINER; - alias OLEUIEDITLINKSW OLEUIEDITLINKS; - alias POLEUIEDITLINKSW POLEUIEDITLINKS; - alias LPOLEUIEDITLINKSW LPOLEUIEDITLINKS; - alias OleUIEditLinksW OleUIEditLinks; - alias OLEUICHANGEICONW OLEUICHANGEICON; - alias POLEUICHANGEICONW POLEUICHANGEICON; - alias LPOLEUICHANGEICONW LPOLEUICHANGEICON; - alias OleUIChangeIconW OleUIChangeIcon; - alias OLEUICONVERTW OLEUICONVERT; - alias POLEUICONVERTW POLEUICONVERT; - alias LPOLEUICONVERTW LPOLEUICONVERT; - alias OleUIConvertW OleUIConvert; - alias OLEUIBUSYW OLEUIBUSY; - alias POLEUIBUSYW POLEUIBUSY; - alias LPOLEUIBUSYW LPOLEUIBUSY; - alias OleUIBusyW OleUIBusy; - alias OLEUICHANGESOURCEW OLEUICHANGESOURCE; - alias POLEUICHANGESOURCEW POLEUICHANGESOURCE; - alias LPOLEUICHANGESOURCEW LPOLEUICHANGESOURCE; - alias OleUIChangeSourceW OleUIChangeSource; - alias IOleUIObjInfoW IOleUIObjInfo; - alias LPOLEUIOBJINFOW LPOLEUIOBJINFO; - alias IOleUILinkInfoW IOleUILinkInfo; - //alias IOleUILinkInfoWVtbl IOleUILinkInfoVtbl; - alias LPOLEUILINKINFOW LPOLEUILINKINFO; - alias OLEUIGNRLPROPSW OLEUIGNRLPROPS; - alias POLEUIGNRLPROPSW POLEUIGNRLPROPS; - alias LPOLEUIGNRLPROPSW LPOLEUIGNRLPROPS; - alias OLEUIVIEWPROPSW OLEUIVIEWPROPS; - alias POLEUIVIEWPROPSW POLEUIVIEWPROPS; - alias LPOLEUIVIEWPROPSW LPOLEUIVIEWPROPS; - alias OLEUILINKPROPSW OLEUILINKPROPS; - alias POLEUILINKPROPSW POLEUILINKPROPS; - alias LPOLEUILINKPROPSW LPOLEUILINKPROPS; -} else { - alias IDD_SERVERNOTREGA IDD_SERVERNOTREG; - alias IDD_LINKTYPECHANGEDA IDD_LINKTYPECHANGED; - alias OleUIUpdateLinksA OleUIUpdateLinks; - alias OleUIAddVerbMenuA OleUIAddVerbMenu; - alias OLEUIOBJECTPROPSA OLEUIOBJECTPROPS; - alias POLEUIOBJECTPROPSA POLEUIOBJECTPROPS; - alias LPOLEUIOBJECTPROPSA LPOLEUIOBJECTPROPS; - alias OleUIObjectPropertiesA OleUIObjectProperties; - alias OLEUIINSERTOBJECTA OLEUIINSERTOBJECT; - alias POLEUIINSERTOBJECTA POLEUIINSERTOBJECT; - alias LPOLEUIINSERTOBJECTA LPOLEUIINSERTOBJECT; - alias OleUIInsertObjectA OleUIInsertObject; - alias OleUIPromptUserA OleUIPromptUser; - alias OLEUIPASTEENTRYA OLEUIPASTEENTRY; - alias POLEUIPASTEENTRYA POLEUIPASTEENTRY; - alias LPOLEUIPASTEENTRYA LPOLEUIPASTEENTRY; - alias OLEUIPASTESPECIALA OLEUIPASTESPECIAL; - alias POLEUIPASTESPECIALA POLEUIPASTESPECIAL; - alias LPOLEUIPASTESPECIALA LPOLEUIPASTESPECIAL; - alias OleUIPasteSpecialA OleUIPasteSpecial; - alias IOleUILinkContainerA IOleUILinkContainer; - alias LPOLEUILINKCONTAINERA LPOLEUILINKCONTAINER; - alias OLEUIEDITLINKSA OLEUIEDITLINKS; - alias POLEUIEDITLINKSA POLEUIEDITLINKS; - alias LPOLEUIEDITLINKSA LPOLEUIEDITLINKS; - alias OleUIEditLinksA OleUIEditLinks; - alias OLEUICHANGEICONA OLEUICHANGEICON; - alias POLEUICHANGEICONA POLEUICHANGEICON; - alias LPOLEUICHANGEICONA LPOLEUICHANGEICON; - alias OleUIChangeIconA OleUIChangeIcon; - alias OLEUICONVERTA OLEUICONVERT; - alias POLEUICONVERTA POLEUICONVERT; - alias LPOLEUICONVERTA LPOLEUICONVERT; - alias OleUIConvertA OleUIConvert; - alias OLEUIBUSYA OLEUIBUSY; - alias POLEUIBUSYA POLEUIBUSY; - alias LPOLEUIBUSYA LPOLEUIBUSY; - alias OleUIBusyA OleUIBusy; - alias OLEUICHANGESOURCEA OLEUICHANGESOURCE; - alias POLEUICHANGESOURCEA POLEUICHANGESOURCE; - alias LPOLEUICHANGESOURCEA LPOLEUICHANGESOURCE; - alias OleUIChangeSourceA OleUIChangeSource; - alias IOleUIObjInfoA IOleUIObjInfo; - alias LPOLEUIOBJINFOA LPOLEUIOBJINFO; - alias IOleUILinkInfoA IOleUILinkInfo; - //alias IOleUILinkInfoAVtbl IOleUILinkInfoVtbl; - alias LPOLEUILINKINFOA LPOLEUILINKINFO; - alias OLEUIGNRLPROPSA OLEUIGNRLPROPS; - alias POLEUIGNRLPROPSA POLEUIGNRLPROPS; - alias LPOLEUIGNRLPROPSA LPOLEUIGNRLPROPS; - alias OLEUIVIEWPROPSA OLEUIVIEWPROPS; - alias POLEUIVIEWPROPSA POLEUIVIEWPROPS; - alias LPOLEUIVIEWPROPSA LPOLEUIVIEWPROPS; - alias OLEUILINKPROPSA OLEUILINKPROPS; - alias POLEUILINKPROPSA POLEUILINKPROPS; - alias LPOLEUILINKPROPSA LPOLEUILINKPROPS; -} +/***********************************************************************\ +* oledlg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oledlg; + +import win32.commdlg, win32.dlgs, win32.ole2, win32.prsht, win32.shellapi, + win32.windows; +private import win32.winbase, win32.objidl, win32.objfwd, win32.winnt; + +// FIXME: remove inherited methods from interface definitions + +const PS_MAXLINKTYPES=8; + +const TCHAR[] OLESTDDELIM = "\\"; +const TCHAR[] SZOLEUI_MSG_HELP = "OLEUI_MSG_HELP"; +const TCHAR[] SZOLEUI_MSG_ENDDIALOG = "OLEUI_MSG_ENDDIALOG"; +const TCHAR[] SZOLEUI_MSG_BROWSE = "OLEUI_MSG_BROWSE"; +const TCHAR[] SZOLEUI_MSG_CHANGEICON = "OLEUI_MSG_CHANGEICON"; +const TCHAR[] SZOLEUI_MSG_CLOSEBUSYDIALOG = "OLEUI_MSG_CLOSEBUSYDIALOG"; +const TCHAR[] SZOLEUI_MSG_CONVERT = "OLEUI_MSG_CONVERT"; +const TCHAR[] SZOLEUI_MSG_CHANGESOURCE = "OLEUI_MSG_CHANGESOURCE"; +const TCHAR[] SZOLEUI_MSG_ADDCONTROL = "OLEUI_MSG_ADDCONTROL"; +const TCHAR[] SZOLEUI_MSG_BROWSE_OFN = "OLEUI_MSG_BROWSE_OFN"; + +const TCHAR[] PROP_HWND_CHGICONDLG = "HWND_CIDLG"; + +const IDC_OLEUIHELP=99; + +enum { + IDC_IO_CREATENEW = 2100, + IDC_IO_CREATEFROMFILE, + IDC_IO_LINKFILE, + IDC_IO_OBJECTTYPELIST, + IDC_IO_DISPLAYASICON, + IDC_IO_CHANGEICON, + IDC_IO_FILE, + IDC_IO_FILEDISPLAY, + IDC_IO_RESULTIMAGE, + IDC_IO_RESULTTEXT, + IDC_IO_ICONDISPLAY, + IDC_IO_OBJECTTYPETEXT, + IDC_IO_FILETEXT, + IDC_IO_FILETYPE, + IDC_IO_INSERTCONTROL, + IDC_IO_ADDCONTROL, + IDC_IO_CONTROLTYPELIST // = 2116 +} + +const IDC_PS_PASTE=500; +const IDC_PS_PASTELINK=501; +const IDC_PS_SOURCETEXT=502; +const IDC_PS_PASTELIST=503; +const IDC_PS_PASTELINKLIST=504; +const IDC_PS_DISPLAYLIST=505; +const IDC_PS_DISPLAYASICON=506; +const IDC_PS_ICONDISPLAY=507; +const IDC_PS_CHANGEICON=508; +const IDC_PS_RESULTIMAGE=509; +const IDC_PS_RESULTTEXT=510; + +const IDC_CI_GROUP=120; +const IDC_CI_CURRENT=121; +const IDC_CI_CURRENTICON=122; +const IDC_CI_DEFAULT=123; +const IDC_CI_DEFAULTICON=124; +const IDC_CI_FROMFILE=125; +const IDC_CI_FROMFILEEDIT=126; +const IDC_CI_ICONLIST=127; +const IDC_CI_LABEL=128; +const IDC_CI_LABELEDIT=129; +const IDC_CI_BROWSE=130; +const IDC_CI_ICONDISPLAY=131; + +const IDC_CV_OBJECTTYPE=150; +const IDC_CV_DISPLAYASICON=152; +const IDC_CV_CHANGEICON=153; +const IDC_CV_ACTIVATELIST=154; +const IDC_CV_CONVERTTO=155; +const IDC_CV_ACTIVATEAS=156; +const IDC_CV_RESULTTEXT=157; +const IDC_CV_CONVERTLIST=158; +const IDC_CV_ICONDISPLAY=165; + +const IDC_EL_CHANGESOURCE=201; +const IDC_EL_AUTOMATIC=202; +const IDC_EL_CANCELLINK=209; +const IDC_EL_UPDATENOW=210; +const IDC_EL_OPENSOURCE=211; +const IDC_EL_MANUAL=212; +const IDC_EL_LINKSOURCE=216; +const IDC_EL_LINKTYPE=217; +const IDC_EL_LINKSLISTBOX=206; +const IDC_EL_COL1=220; +const IDC_EL_COL2=221; +const IDC_EL_COL3=222; + +const IDC_BZ_RETRY=600; +const IDC_BZ_ICON=601; +const IDC_BZ_MESSAGE1=602; +const IDC_BZ_SWITCHTO=604; + +const IDC_UL_METER=1029; +const IDC_UL_STOP=1030; +const IDC_UL_PERCENT=1031; +const IDC_UL_PROGRESS=1032; + +const IDC_PU_LINKS=900; +const IDC_PU_TEXT=901; +const IDC_PU_CONVERT=902; +const IDC_PU_ICON=908; + +const IDC_GP_OBJECTNAME=1009; +const IDC_GP_OBJECTTYPE=1010; +const IDC_GP_OBJECTSIZE=1011; +const IDC_GP_CONVERT=1013; +const IDC_GP_OBJECTICON=1014; +const IDC_GP_OBJECTLOCATION=1022; + +const IDC_VP_PERCENT=1000; +const IDC_VP_CHANGEICON=1001; +const IDC_VP_EDITABLE=1002; +const IDC_VP_ASICON=1003; +const IDC_VP_RELATIVE=1005; +const IDC_VP_SPIN=1006; +const IDC_VP_SCALETXT=1034; +const IDC_VP_ICONDISPLAY=1021; +const IDC_VP_RESULTIMAGE=1033; + +const IDC_LP_OPENSOURCE=1006; +const IDC_LP_UPDATENOW=1007; +const IDC_LP_BREAKLINK=1008; +const IDC_LP_LINKSOURCE=1012; +const IDC_LP_CHANGESOURCE=1015; +const IDC_LP_AUTOMATIC=1016; +const IDC_LP_MANUAL=1017; +const IDC_LP_DATE=1018; +const IDC_LP_TIME=1019; + +const IDD_INSERTOBJECT=1000; +const IDD_CHANGEICON=1001; +const IDD_CONVERT=1002; +const IDD_PASTESPECIAL=1003; +const IDD_EDITLINKS=1004; +const IDD_BUSY=1006; +const IDD_UPDATELINKS=1007; +const IDD_CHANGESOURCE=1009; +const IDD_INSERTFILEBROWSE=1010; +const IDD_CHANGEICONBROWSE=1011; +const IDD_CONVERTONLY=1012; +const IDD_CHANGESOURCE4=1013; +const IDD_GNRLPROPS=1100; +const IDD_VIEWPROPS=1101; +const IDD_LINKPROPS=1102; +const IDD_CANNOTUPDATELINK=1008; +const IDD_LINKSOURCEUNAVAILABLE=1020; +const IDD_SERVERNOTFOUND=1023; +const IDD_OUTOFMEMORY=1024; +const IDD_SERVERNOTREGW=1021; +const IDD_LINKTYPECHANGEDW=1022; +const IDD_SERVERNOTREGA=1025; +const IDD_LINKTYPECHANGEDA=1026; + +const ID_BROWSE_CHANGEICON=1; +const ID_BROWSE_INSERTFILE=2; +const ID_BROWSE_ADDCONTROL=3; +const ID_BROWSE_CHANGESOURCE=4; + +const OLEUI_FALSE=0; +const OLEUI_SUCCESS=1; +const OLEUI_OK=1; +const OLEUI_CANCEL=2; + +const OLEUI_ERR_STANDARDMIN=100; +const OLEUI_ERR_STRUCTURENULL=101; +const OLEUI_ERR_STRUCTUREINVALID=102; +const OLEUI_ERR_CBSTRUCTINCORRECT=103; +const OLEUI_ERR_HWNDOWNERINVALID=104; +const OLEUI_ERR_LPSZCAPTIONINVALID=105; +const OLEUI_ERR_LPFNHOOKINVALID=106; +const OLEUI_ERR_HINSTANCEINVALID=107; +const OLEUI_ERR_LPSZTEMPLATEINVALID=108; +const OLEUI_ERR_HRESOURCEINVALID=109; +const OLEUI_ERR_FINDTEMPLATEFAILURE=110; +const OLEUI_ERR_LOADTEMPLATEFAILURE=111; +const OLEUI_ERR_DIALOGFAILURE=112; +const OLEUI_ERR_LOCALMEMALLOC=113; +const OLEUI_ERR_GLOBALMEMALLOC=114; +const OLEUI_ERR_LOADSTRING=115; +const OLEUI_ERR_OLEMEMALLOC=116; +const OLEUI_ERR_STANDARDMAX=116; + +const OPF_OBJECTISLINK=1; +const OPF_NOFILLDEFAULT=2; +const OPF_SHOWHELP=4; +const OPF_DISABLECONVERT=8; + +const OLEUI_OPERR_SUBPROPNULL=OLEUI_ERR_STANDARDMAX; +const OLEUI_OPERR_SUBPROPINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_OPERR_PROPSHEETNULL=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_OPERR_PROPSHEETINVALID=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_OPERR_SUPPROP=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_OPERR_PROPSINVALID=(OLEUI_ERR_STANDARDMAX+5); +const OLEUI_OPERR_PAGESINCORRECT=(OLEUI_ERR_STANDARDMAX+6); +const OLEUI_OPERR_INVALIDPAGES=(OLEUI_ERR_STANDARDMAX+7); +const OLEUI_OPERR_NOTSUPPORTED=(OLEUI_ERR_STANDARDMAX+8); +const OLEUI_OPERR_DLGPROCNOTNULL=(OLEUI_ERR_STANDARDMAX+9); +const OLEUI_OPERR_LPARAMNOTZERO=(OLEUI_ERR_STANDARDMAX+10); +const OLEUI_GPERR_STRINGINVALID=(OLEUI_ERR_STANDARDMAX+11); +const OLEUI_GPERR_CLASSIDINVALID=(OLEUI_ERR_STANDARDMAX+12); +const OLEUI_GPERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+13); +const OLEUI_GPERR_CBFORMATINVALID=(OLEUI_ERR_STANDARDMAX+14); +const OLEUI_VPERR_METAPICTINVALID=(OLEUI_ERR_STANDARDMAX+15); +const OLEUI_VPERR_DVASPECTINVALID=(OLEUI_ERR_STANDARDMAX+16); +const OLEUI_LPERR_LINKCNTRNULL=(OLEUI_ERR_STANDARDMAX+17); +const OLEUI_LPERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+18); +const OLEUI_OPERR_PROPERTYSHEET=(OLEUI_ERR_STANDARDMAX+19); +const OLEUI_OPERR_OBJINFOINVALID=(OLEUI_ERR_STANDARDMAX+20); +const OLEUI_OPERR_LINKINFOINVALID=(OLEUI_ERR_STANDARDMAX+21); + +const OLEUI_QUERY_GETCLASSID=65280; +const OLEUI_QUERY_LINKBROKEN=65281; + +const IOF_SHOWHELP=1; +const IOF_SELECTCREATENEW=2; +const IOF_SELECTCREATEFROMFILE=4; +const IOF_CHECKLINK=8; +const IOF_CHECKDISPLAYASICON=16; +const IOF_CREATENEWOBJECT=32; +const IOF_CREATEFILEOBJECT=64; +const IOF_CREATELINKOBJECT=128; +const IOF_DISABLELINK=256; +const IOF_VERIFYSERVERSEXIST=512; +const IOF_DISABLEDISPLAYASICON=1024; +const IOF_HIDECHANGEICON=2048; +const IOF_SHOWINSERTCONTROL=4096; +const IOF_SELECTCREATECONTROL=8192; + +const OLEUI_IOERR_LPSZFILEINVALID=OLEUI_ERR_STANDARDMAX; +const OLEUI_IOERR_LPSZLABELINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_IOERR_HICONINVALID=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_IOERR_LPFORMATETCINVALID=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_IOERR_PPVOBJINVALID=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_IOERR_LPIOLECLIENTSITEINVALID=(OLEUI_ERR_STANDARDMAX+5); +const OLEUI_IOERR_LPISTORAGEINVALID=(OLEUI_ERR_STANDARDMAX+6); +const OLEUI_IOERR_SCODEHASERROR=(OLEUI_ERR_STANDARDMAX+7); +const OLEUI_IOERR_LPCLSIDEXCLUDEINVALID=(OLEUI_ERR_STANDARDMAX+8); +const OLEUI_IOERR_CCHFILEINVALID=(OLEUI_ERR_STANDARDMAX+9); + +const PSF_SHOWHELP=1; +const PSF_SELECTPASTE=2; +const PSF_SELECTPASTELINK=4; +const PSF_CHECKDISPLAYASICON=8; +const PSF_DISABLEDISPLAYASICON=16; +const PSF_HIDECHANGEICON=32; +const PSF_STAYONCLIPBOARDCHANGE=64; +const PSF_NOREFRESHDATAOBJECT=128; + +const OLEUI_IOERR_SRCDATAOBJECTINVALID=OLEUI_ERR_STANDARDMAX; +const OLEUI_IOERR_ARRPASTEENTRIESINVALID=(OLEUI_ERR_STANDARDMAX+1); +const OLEUI_IOERR_ARRLINKTYPESINVALID=(OLEUI_ERR_STANDARDMAX+2); +const OLEUI_PSERR_CLIPBOARDCHANGED=(OLEUI_ERR_STANDARDMAX+3); +const OLEUI_PSERR_GETCLIPBOARDFAILED=(OLEUI_ERR_STANDARDMAX+4); +const OLEUI_ELERR_LINKCNTRNULL=OLEUI_ERR_STANDARDMAX; +const OLEUI_ELERR_LINKCNTRINVALID=(OLEUI_ERR_STANDARDMAX+1); + +const ELF_SHOWHELP=1; +const ELF_DISABLEUPDATENOW=2; +const ELF_DISABLEOPENSOURCE=4; +const ELF_DISABLECHANGESOURCE=8; +const ELF_DISABLECANCELLINK=16; + +const CIF_SHOWHELP=1; +const CIF_SELECTCURRENT=2; +const CIF_SELECTDEFAULT=4; +const CIF_SELECTFROMFILE=8; +const CIF_USEICONEXE=16; + +const OLEUI_CIERR_MUSTHAVECLSID=OLEUI_ERR_STANDARDMAX; +const OLEUI_CIERR_MUSTHAVECURRENTMETAFILE=OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CIERR_SZICONEXEINVALID=OLEUI_ERR_STANDARDMAX+2; + +const CF_SHOWHELPBUTTON=1; +const CF_SETCONVERTDEFAULT=2; +const CF_SETACTIVATEDEFAULT=4; +const CF_SELECTCONVERTTO=8; +const CF_SELECTACTIVATEAS=16; +const CF_DISABLEDISPLAYASICON=32; +const CF_DISABLEACTIVATEAS=64; +const CF_HIDECHANGEICON=128; +const CF_CONVERTONLY=256; + +const OLEUI_CTERR_CLASSIDINVALID = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CTERR_DVASPECTINVALID = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_CTERR_CBFORMATINVALID = OLEUI_ERR_STANDARDMAX+3; +const OLEUI_CTERR_HMETAPICTINVALID = OLEUI_ERR_STANDARDMAX+4; +const OLEUI_CTERR_STRINGINVALID = OLEUI_ERR_STANDARDMAX+5; + +const BZ_DISABLECANCELBUTTON = 1; +const BZ_DISABLESWITCHTOBUTTON = 2; +const BZ_DISABLERETRYBUTTON = 4; +const BZ_NOTRESPONDINGDIALOG = 8; + +const OLEUI_BZERR_HTASKINVALID = OLEUI_ERR_STANDARDMAX; +const OLEUI_BZ_SWITCHTOSELECTED = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_BZ_RETRYSELECTED = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_BZ_CALLUNBLOCKED = OLEUI_ERR_STANDARDMAX+3; + +const CSF_SHOWHELP = 1; +const CSF_VALIDSOURCE = 2; +const CSF_ONLYGETSOURCE = 4; +const CSF_EXPLORER = 8; + +const OLEUI_CSERR_LINKCNTRNULL = OLEUI_ERR_STANDARDMAX; +const OLEUI_CSERR_LINKCNTRINVALID = OLEUI_ERR_STANDARDMAX+1; +const OLEUI_CSERR_FROMNOTNULL = OLEUI_ERR_STANDARDMAX+2; +const OLEUI_CSERR_TONOTNULL = OLEUI_ERR_STANDARDMAX+3; +const OLEUI_CSERR_SOURCENULL = OLEUI_ERR_STANDARDMAX+4; +const OLEUI_CSERR_SOURCEINVALID = OLEUI_ERR_STANDARDMAX+5; +const OLEUI_CSERR_SOURCEPARSERROR = OLEUI_ERR_STANDARDMAX+6; +const OLEUI_CSERR_SOURCEPARSEERROR = OLEUI_ERR_STANDARDMAX+7; + +const VPF_SELECTRELATIVE=1; +const VPF_DISABLERELATIVE=2; +const VPF_DISABLESCALE=4; + +align(8): +extern (Windows) { + alias UINT function(HWND, UINT, WPARAM, LPARAM) LPFNOLEUIHOOK; +} + +struct OLEUIINSERTOBJECTW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPWSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + PVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; +} +alias OLEUIINSERTOBJECTW* POLEUIINSERTOBJECTW, LPOLEUIINSERTOBJECTW; + +struct OLEUIINSERTOBJECTA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + LPSTR lpszFile; + UINT cchFile; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + IID iid; + DWORD oleRender; + LPFORMATETC lpFormatEtc; + LPOLECLIENTSITE lpIOleClientSite; + LPSTORAGE lpIStorage; + PVOID *ppvObj; + SCODE sc; + HGLOBAL hMetaPict; +} +alias OLEUIINSERTOBJECTA* POLEUIINSERTOBJECTA, LPOLEUIINSERTOBJECTA; + +UINT OleUIInsertObjectW(LPOLEUIINSERTOBJECTW); +UINT OleUIInsertObjectA(LPOLEUIINSERTOBJECTA); + +enum OLEUIPASTEFLAG { + OLEUIPASTE_PASTEONLY, + OLEUIPASTE_LINKTYPE1, + OLEUIPASTE_LINKTYPE2, + OLEUIPASTE_LINKTYPE3 = 4, + OLEUIPASTE_LINKTYPE4 = 8, + OLEUIPASTE_LINKTYPE5 = 16, + OLEUIPASTE_LINKTYPE6 = 32, + OLEUIPASTE_LINKTYPE7 = 64, + OLEUIPASTE_LINKTYPE8 = 128, + OLEUIPASTE_PASTE = 512, + OLEUIPASTE_LINKANYTYPE = 1024, + OLEUIPASTE_ENABLEICON = 2048 +} + +struct OLEUIPASTEENTRYW { + FORMATETC fmtetc; + LPCWSTR lpstrFormatName; + LPCWSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} +alias OLEUIPASTEENTRYW* POLEUIPASTEENTRYW, LPOLEUIPASTEENTRYW; + +struct OLEUIPASTEENTRYA { + FORMATETC fmtetc; + LPCSTR lpstrFormatName; + LPCSTR lpstrResultText; + DWORD dwFlags; + DWORD dwScratchSpace; +} +alias OLEUIPASTEENTRYA* POLEUIPASTEENTRYA, LPOLEUIPASTEENTRYA; + +struct OLEUIPASTESPECIALW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYW arrPasteEntries; + int cPasteEntries; + UINT *arrLinkTypes; + int cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + int nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; +} +alias OLEUIPASTESPECIALW* POLEUIPASTESPECIALW, LPOLEUIPASTESPECIALW; + +struct OLEUIPASTESPECIALA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPDATAOBJECT lpSrcDataObj; + LPOLEUIPASTEENTRYA arrPasteEntries; + int cPasteEntries; + UINT* arrLinkTypes; + int cLinkTypes; + UINT cClsidExclude; + LPCLSID lpClsidExclude; + int nSelectedIndex; + BOOL fLink; + HGLOBAL hMetaPict; + SIZEL sizel; +} +alias OLEUIPASTESPECIALA* POLEUIPASTESPECIALA, LPOLEUIPASTESPECIALA; + +interface IOleUILinkContainerW : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD dwLink); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, PDWORD); + HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); +} +alias IOleUILinkContainerW LPOLEUILINKCONTAINERW; + +interface IOleUILinkContainerA : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, PDWORD); + HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); +} +alias IOleUILinkContainerA LPOLEUILINKCONTAINERA; + +struct OLEUIEDITLINKSW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; +} +alias OLEUIEDITLINKSW* POLEUIEDITLINKSW, LPOLEUIEDITLINKSW; + +struct OLEUIEDITLINKSA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; +} +alias OLEUIEDITLINKSA* POLEUIEDITLINKSA, LPOLEUIEDITLINKSA; + +struct OLEUICHANGEICONW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + WCHAR[MAX_PATH] szIconExe; + int cchIconExe; +} +alias OLEUICHANGEICONW* POLEUICHANGEICONW, LPOLEUICHANGEICONW; + +struct OLEUICHANGEICONA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HGLOBAL hMetaPict; + CLSID clsid; + CHAR[MAX_PATH] szIconExe; + int cchIconExe; +} +alias OLEUICHANGEICONA* POLEUICHANGEICONA, LPOLEUICHANGEICONA; + +struct OLEUICONVERTW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPWSTR lpszUserType; + BOOL fObjectsIconChanged; + LPWSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; +} +alias OLEUICONVERTW* POLEUICONVERTW, LPOLEUICONVERTW; + +struct OLEUICONVERTA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + CLSID clsid; + CLSID clsidConvertDefault; + CLSID clsidActivateDefault; + CLSID clsidNew; + DWORD dvAspect; + WORD wFormat; + BOOL fIsLinkedObject; + HGLOBAL hMetaPict; + LPSTR lpszUserType; + BOOL fObjectsIconChanged; + LPSTR lpszDefLabel; + UINT cClsidExclude; + LPCLSID lpClsidExclude; +} +alias OLEUICONVERTA* POLEUICONVERTA, LPOLEUICONVERTA; + +struct OLEUIBUSYW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; +} +alias OLEUIBUSYW* POLEUIBUSYW, LPOLEUIBUSYW; + +struct OLEUIBUSYA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + HTASK hTask; + HWND *lphWndDialog; +} +alias OLEUIBUSYA* POLEUIBUSYA, LPOLEUIBUSYA; + +struct OLEUICHANGESOURCEW { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCWSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCWSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEW* lpOFN; + DWORD[4] dwReserved1; + LPOLEUILINKCONTAINERW lpOleUILinkContainer; + DWORD dwLink; + LPWSTR lpszDisplayName; + ULONG nFileLength; + LPWSTR lpszFrom; + LPWSTR lpszTo; +} +alias OLEUICHANGESOURCEW* POLEUICHANGESOURCEW, LPOLEUICHANGESOURCEW; + +struct OLEUICHANGESOURCEA { + DWORD cbStruct; + DWORD dwFlags; + HWND hWndOwner; + LPCSTR lpszCaption; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + HINSTANCE hInstance; + LPCSTR lpszTemplate; + HRSRC hResource; + OPENFILENAMEA *lpOFN; + DWORD[4] dwReserved1; + LPOLEUILINKCONTAINERA lpOleUILinkContainer; + DWORD dwLink; + LPSTR lpszDisplayName; + ULONG nFileLength; + LPSTR lpszFrom; + LPSTR lpszTo; +} +alias OLEUICHANGESOURCEA* POLEUICHANGESOURCEA, LPOLEUICHANGESOURCEA; + +interface IOleUIObjInfoW : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT GetObjectInfo(DWORD, PDWORD, LPWSTR*, LPWSTR*, LPWSTR*, LPWSTR*); + HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); + HRESULT ConvertObject(DWORD, REFCLSID); + HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); + HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); +} +alias IOleUIObjInfoW LPOLEUIOBJINFOW; + +interface IOleUIObjInfoA : IUnknown +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + HRESULT GetObjectInfo(DWORD, PDWORD, LPSTR*, LPSTR*, LPSTR*, LPSTR*); + HRESULT GetConvertInfo(DWORD, CLSID*, PWORD, CLSID*, LPCLSID*, UINT*); + HRESULT ConvertObject(DWORD, REFCLSID); + HRESULT GetViewInfo(DWORD, HGLOBAL*, PDWORD, int*); + HRESULT SetViewInfo(DWORD, HGLOBAL, DWORD, int, BOOL); +} +alias IOleUIObjInfoA LPOLEUIOBJINFOA; + +interface IOleUILinkInfoW : IOleUILinkContainerW +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, DWORD*); + HRESULT SetLinkSource(DWORD, LPWSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPWSTR*, PULONG, LPWSTR*, LPWSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); + HRESULT GetLastUpdate(DWORD, FILETIME*); +} +alias IOleUILinkInfoW LPOLEUILINKINFOW; + +interface IOleUILinkInfoA : IOleUILinkContainerA +{ + HRESULT QueryInterface(REFIID, PVOID*); + ULONG AddRef(); + ULONG Release(); + DWORD GetNextLink(DWORD); + HRESULT SetLinkUpdateOptions(DWORD, DWORD); + HRESULT GetLinkUpdateOptions(DWORD, DWORD*); + HRESULT SetLinkSource(DWORD, LPSTR, ULONG, PULONG, BOOL); + HRESULT GetLinkSource(DWORD, LPSTR*, PULONG, LPSTR*, LPSTR*, BOOL*, BOOL*); + HRESULT OpenLinkSource(DWORD); + HRESULT UpdateLink(DWORD, BOOL, BOOL); + HRESULT CancelLink(DWORD); + HRESULT GetLastUpdate(DWORD, FILETIME*); +} +alias IOleUILinkInfoA LPOLEUILINKINFOA; + +struct OLEUIGNRLPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW* lpOP; +} +alias OLEUIGNRLPROPSW* POLEUIGNRLPROPSW, LPOLEUIGNRLPROPSW; + +struct OLEUIGNRLPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA* lpOP; +} +alias OLEUIGNRLPROPSA* POLEUIGNRLPROPSA, LPOLEUIGNRLPROPSA; + +struct OLEUIVIEWPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW* lpOP; + int nScaleMin; + int nScaleMax; +} +alias OLEUIVIEWPROPSW* POLEUIVIEWPROPSW, LPOLEUIVIEWPROPSW; + +struct OLEUIVIEWPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA *lpOP; + int nScaleMin; + int nScaleMax; +} +alias OLEUIVIEWPROPSA* POLEUIVIEWPROPSA, LPOLEUIVIEWPROPSA; + +struct OLEUILINKPROPSW { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSW *lpOP; +} +alias OLEUILINKPROPSW* POLEUILINKPROPSW, LPOLEUILINKPROPSW; + +struct OLEUILINKPROPSA { + DWORD cbStruct; + DWORD dwFlags; + DWORD[2] dwReserved1; + LPFNOLEUIHOOK lpfnHook; + LPARAM lCustData; + DWORD[3] dwReserved2; + OLEUIOBJECTPROPSA* lpOP; +} +alias OLEUILINKPROPSA* POLEUILINKPROPSA, LPOLEUILINKPROPSA; + +struct OLEUIOBJECTPROPSW { + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERW lpPS; + DWORD dwObject; + LPOLEUIOBJINFOW lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOW lpLinkInfo; + LPOLEUIGNRLPROPSW lpGP; + LPOLEUIVIEWPROPSW lpVP; + LPOLEUILINKPROPSW lpLP; +} +alias OLEUIOBJECTPROPSW* POLEUIOBJECTPROPSW, LPOLEUIOBJECTPROPSW; + +struct OLEUIOBJECTPROPSA { + DWORD cbStruct; + DWORD dwFlags; + LPPROPSHEETHEADERA lpPS; + DWORD dwObject; + LPOLEUIOBJINFOA lpObjInfo; + DWORD dwLink; + LPOLEUILINKINFOA lpLinkInfo; + LPOLEUIGNRLPROPSA lpGP; + LPOLEUIVIEWPROPSA lpVP; + LPOLEUILINKPROPSA lpLP; +} +alias OLEUIOBJECTPROPSA* POLEUIOBJECTPROPSA, LPOLEUIOBJECTPROPSA; + +extern (Windows) { + BOOL OleUIAddVerbMenuW(LPOLEOBJECT, LPCWSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); + BOOL OleUIAddVerbMenuA(LPOLEOBJECT, LPCSTR, HMENU, UINT, UINT, UINT, BOOL, UINT, HMENU*); + UINT OleUIBusyW(LPOLEUIBUSYW); + UINT OleUIBusyA(LPOLEUIBUSYA); + BOOL OleUICanConvertOrActivateAs(REFCLSID, BOOL, WORD); + UINT OleUIChangeIconW(LPOLEUICHANGEICONW); + UINT OleUIChangeIconA(LPOLEUICHANGEICONA); + UINT OleUIChangeSourceW(LPOLEUICHANGESOURCEW); + UINT OleUIChangeSourceA(LPOLEUICHANGESOURCEA); + UINT OleUIConvertW(LPOLEUICONVERTW); + UINT OleUIConvertA(LPOLEUICONVERTA); + UINT OleUIEditLinksW(LPOLEUIEDITLINKSW); + UINT OleUIEditLinksA(LPOLEUIEDITLINKSA); + UINT OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW); + UINT OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA); + UINT OleUIPasteSpecialW(LPOLEUIPASTESPECIALW); + UINT OleUIPasteSpecialA(LPOLEUIPASTESPECIALA); + BOOL OleUIUpdateLinksW(LPOLEUILINKCONTAINERW, HWND, LPWSTR, int); + BOOL OleUIUpdateLinksA(LPOLEUILINKCONTAINERA, HWND, LPSTR, int); +} + +extern (C) { + int OleUIPromptUserW(int, HWND, ...); + int OleUIPromptUserA(int, HWND, ...); +} + +version(Unicode) { + alias IDD_SERVERNOTREGW IDD_SERVERNOTREG; + alias IDD_LINKTYPECHANGEDW IDD_LINKTYPECHANGED; + alias OleUIUpdateLinksW OleUIUpdateLinks; + alias OleUIAddVerbMenuW OleUIAddVerbMenu; + alias OLEUIOBJECTPROPSW OLEUIOBJECTPROPS; + alias POLEUIOBJECTPROPSW POLEUIOBJECTPROPS; + alias LPOLEUIOBJECTPROPSW LPOLEUIOBJECTPROPS; + alias OleUIObjectPropertiesW OleUIObjectProperties; + alias OLEUIINSERTOBJECTW OLEUIINSERTOBJECT; + alias POLEUIINSERTOBJECTW POLEUIINSERTOBJECT; + alias LPOLEUIINSERTOBJECTW LPOLEUIINSERTOBJECT; + alias OleUIInsertObjectW OleUIInsertObject; + alias OleUIPromptUserW OleUIPromptUser; + alias OLEUIPASTEENTRYW OLEUIPASTEENTRY; + alias POLEUIPASTEENTRYW POLEUIPASTEENTRY; + alias LPOLEUIPASTEENTRYW LPOLEUIPASTEENTRY; + alias OLEUIPASTESPECIALW OLEUIPASTESPECIAL; + alias POLEUIPASTESPECIALW POLEUIPASTESPECIAL; + alias LPOLEUIPASTESPECIALW LPOLEUIPASTESPECIAL; + alias OleUIPasteSpecialW OleUIPasteSpecial; + alias IOleUILinkContainerW IOleUILinkContainer; + alias LPOLEUILINKCONTAINERW LPOLEUILINKCONTAINER; + alias OLEUIEDITLINKSW OLEUIEDITLINKS; + alias POLEUIEDITLINKSW POLEUIEDITLINKS; + alias LPOLEUIEDITLINKSW LPOLEUIEDITLINKS; + alias OleUIEditLinksW OleUIEditLinks; + alias OLEUICHANGEICONW OLEUICHANGEICON; + alias POLEUICHANGEICONW POLEUICHANGEICON; + alias LPOLEUICHANGEICONW LPOLEUICHANGEICON; + alias OleUIChangeIconW OleUIChangeIcon; + alias OLEUICONVERTW OLEUICONVERT; + alias POLEUICONVERTW POLEUICONVERT; + alias LPOLEUICONVERTW LPOLEUICONVERT; + alias OleUIConvertW OleUIConvert; + alias OLEUIBUSYW OLEUIBUSY; + alias POLEUIBUSYW POLEUIBUSY; + alias LPOLEUIBUSYW LPOLEUIBUSY; + alias OleUIBusyW OleUIBusy; + alias OLEUICHANGESOURCEW OLEUICHANGESOURCE; + alias POLEUICHANGESOURCEW POLEUICHANGESOURCE; + alias LPOLEUICHANGESOURCEW LPOLEUICHANGESOURCE; + alias OleUIChangeSourceW OleUIChangeSource; + alias IOleUIObjInfoW IOleUIObjInfo; + alias LPOLEUIOBJINFOW LPOLEUIOBJINFO; + alias IOleUILinkInfoW IOleUILinkInfo; + //alias IOleUILinkInfoWVtbl IOleUILinkInfoVtbl; + alias LPOLEUILINKINFOW LPOLEUILINKINFO; + alias OLEUIGNRLPROPSW OLEUIGNRLPROPS; + alias POLEUIGNRLPROPSW POLEUIGNRLPROPS; + alias LPOLEUIGNRLPROPSW LPOLEUIGNRLPROPS; + alias OLEUIVIEWPROPSW OLEUIVIEWPROPS; + alias POLEUIVIEWPROPSW POLEUIVIEWPROPS; + alias LPOLEUIVIEWPROPSW LPOLEUIVIEWPROPS; + alias OLEUILINKPROPSW OLEUILINKPROPS; + alias POLEUILINKPROPSW POLEUILINKPROPS; + alias LPOLEUILINKPROPSW LPOLEUILINKPROPS; +} else { + alias IDD_SERVERNOTREGA IDD_SERVERNOTREG; + alias IDD_LINKTYPECHANGEDA IDD_LINKTYPECHANGED; + alias OleUIUpdateLinksA OleUIUpdateLinks; + alias OleUIAddVerbMenuA OleUIAddVerbMenu; + alias OLEUIOBJECTPROPSA OLEUIOBJECTPROPS; + alias POLEUIOBJECTPROPSA POLEUIOBJECTPROPS; + alias LPOLEUIOBJECTPROPSA LPOLEUIOBJECTPROPS; + alias OleUIObjectPropertiesA OleUIObjectProperties; + alias OLEUIINSERTOBJECTA OLEUIINSERTOBJECT; + alias POLEUIINSERTOBJECTA POLEUIINSERTOBJECT; + alias LPOLEUIINSERTOBJECTA LPOLEUIINSERTOBJECT; + alias OleUIInsertObjectA OleUIInsertObject; + alias OleUIPromptUserA OleUIPromptUser; + alias OLEUIPASTEENTRYA OLEUIPASTEENTRY; + alias POLEUIPASTEENTRYA POLEUIPASTEENTRY; + alias LPOLEUIPASTEENTRYA LPOLEUIPASTEENTRY; + alias OLEUIPASTESPECIALA OLEUIPASTESPECIAL; + alias POLEUIPASTESPECIALA POLEUIPASTESPECIAL; + alias LPOLEUIPASTESPECIALA LPOLEUIPASTESPECIAL; + alias OleUIPasteSpecialA OleUIPasteSpecial; + alias IOleUILinkContainerA IOleUILinkContainer; + alias LPOLEUILINKCONTAINERA LPOLEUILINKCONTAINER; + alias OLEUIEDITLINKSA OLEUIEDITLINKS; + alias POLEUIEDITLINKSA POLEUIEDITLINKS; + alias LPOLEUIEDITLINKSA LPOLEUIEDITLINKS; + alias OleUIEditLinksA OleUIEditLinks; + alias OLEUICHANGEICONA OLEUICHANGEICON; + alias POLEUICHANGEICONA POLEUICHANGEICON; + alias LPOLEUICHANGEICONA LPOLEUICHANGEICON; + alias OleUIChangeIconA OleUIChangeIcon; + alias OLEUICONVERTA OLEUICONVERT; + alias POLEUICONVERTA POLEUICONVERT; + alias LPOLEUICONVERTA LPOLEUICONVERT; + alias OleUIConvertA OleUIConvert; + alias OLEUIBUSYA OLEUIBUSY; + alias POLEUIBUSYA POLEUIBUSY; + alias LPOLEUIBUSYA LPOLEUIBUSY; + alias OleUIBusyA OleUIBusy; + alias OLEUICHANGESOURCEA OLEUICHANGESOURCE; + alias POLEUICHANGESOURCEA POLEUICHANGESOURCE; + alias LPOLEUICHANGESOURCEA LPOLEUICHANGESOURCE; + alias OleUIChangeSourceA OleUIChangeSource; + alias IOleUIObjInfoA IOleUIObjInfo; + alias LPOLEUIOBJINFOA LPOLEUIOBJINFO; + alias IOleUILinkInfoA IOleUILinkInfo; + //alias IOleUILinkInfoAVtbl IOleUILinkInfoVtbl; + alias LPOLEUILINKINFOA LPOLEUILINKINFO; + alias OLEUIGNRLPROPSA OLEUIGNRLPROPS; + alias POLEUIGNRLPROPSA POLEUIGNRLPROPS; + alias LPOLEUIGNRLPROPSA LPOLEUIGNRLPROPS; + alias OLEUIVIEWPROPSA OLEUIVIEWPROPS; + alias POLEUIVIEWPROPSA POLEUIVIEWPROPS; + alias LPOLEUIVIEWPROPSA LPOLEUIVIEWPROPS; + alias OLEUILINKPROPSA OLEUILINKPROPS; + alias POLEUILINKPROPSA POLEUILINKPROPS; + alias LPOLEUILINKPROPSA LPOLEUILINKPROPS; +} Index: src/win32/oleidl.d ================================================================== --- src/win32/oleidl.d +++ src/win32/oleidl.d @@ -1,270 +1,270 @@ -/***********************************************************************\ -* oleidl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.oleidl; - -// DAC: This is defined in ocidl !! -// what is it doing in here? -//alias IEnumOleUndoUnits* LPENUMOLEUNDOUNITS; - -private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef, - win32.winuser, win32.wtypes; -private import win32.objfwd; // for LPMONIKER -private import win32.wingdi; // for LPLOGPALETTE - -const MK_ALT = 32; - -enum BINDSPEED { - BINDSPEED_INDEFINITE = 1, - BINDSPEED_MODERATE, - BINDSPEED_IMMEDIATE -} - -enum OLEWHICHMK { - OLEWHICHMK_CONTAINER = 1, - OLEWHICHMK_OBJREL, - OLEWHICHMK_OBJFULL -} - -enum OLEGETMONIKER { - OLEGETMONIKER_ONLYIFTHERE = 1, - OLEGETMONIKER_FORCEASSIGN, - OLEGETMONIKER_UNASSIGN, - OLEGETMONIKER_TEMPFORUSER -} - -enum USERCLASSTYPE { - USERCLASSTYPE_FULL = 1, - USERCLASSTYPE_SHORT, - USERCLASSTYPE_APPNAME -} - -enum DROPEFFECT { - DROPEFFECT_NONE = 0, - DROPEFFECT_COPY = 1, - DROPEFFECT_MOVE = 2, - DROPEFFECT_LINK = 4, - DROPEFFECT_SCROLL = 0x80000000 -} - -struct OLEMENUGROUPWIDTHS { - LONG width[6]; -} -alias OLEMENUGROUPWIDTHS* LPOLEMENUGROUPWIDTHS; - -alias HGLOBAL HOLEMENU; - -enum OLECLOSE { - OLECLOSE_SAVEIFDIRTY, - OLECLOSE_NOSAVE, - OLECLOSE_PROMPTSAVE -} - -struct OLEVERB { - LONG lVerb; - LPWSTR lpszVerbName; - DWORD fuFlags; - DWORD grfAttribs; -} -alias OLEVERB* LPOLEVERB; - -alias RECT BORDERWIDTHS; -alias LPRECT LPBORDERWIDTHS; -alias LPCRECT LPCBORDERWIDTHS; - -struct OLEINPLACEFRAMEINFO { - UINT cb; - BOOL fMDIApp; - HWND hwndFrame; - HACCEL haccel; - UINT cAccelEntries; -} -alias OLEINPLACEFRAMEINFO* LPOLEINPLACEFRAMEINFO; - -interface IEnumOLEVERB : IUnknown -{ - HRESULT Next(ULONG,OLEVERB*,ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumOLEVERB**); -} -//alias IEnumOLEVERB IEnumOleVerb; -alias IEnumOLEVERB LPENUMOLEVERB; - - -interface IParseDisplayName : IUnknown { - HRESULT ParseDisplayName(IBindCtx*,LPOLESTR,ULONG*,IMoniker**); -} -alias IParseDisplayName LPPARSEDISPLAYNAME; - -interface IOleContainer : IParseDisplayName { - HRESULT EnumObjects(DWORD,IEnumUnknown**); - HRESULT LockContainer(BOOL); -} -alias IOleContainer LPOLECONTAINER; - -interface IOleItemContainer : IOleContainer { - HRESULT GetObject(LPOLESTR,DWORD,IBindCtx*,REFIID,void**); - HRESULT GetObjectStorage(LPOLESTR,IBindCtx*,REFIID,void**); - HRESULT IsRunning(LPOLESTR); -} - - -interface IOleClientSite : IUnknown { - HRESULT SaveObject(); - HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); - HRESULT GetContainer(LPOLECONTAINER*); - HRESULT ShowObject(); - HRESULT OnShowWindow(BOOL); - HRESULT RequestNewObjectLayout(); -} -alias IOleClientSite LPOLECLIENTSITE; - -interface IOleObject : IUnknown { - HRESULT SetClientSite(LPOLECLIENTSITE); - HRESULT GetClientSite(LPOLECLIENTSITE*); - HRESULT SetHostNames(LPCOLESTR,LPCOLESTR); - HRESULT Close(DWORD); - HRESULT SetMoniker(DWORD,LPMONIKER); - HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); - HRESULT InitFromData(LPDATAOBJECT,BOOL,DWORD); - HRESULT GetClipboardData(DWORD,LPDATAOBJECT*); - HRESULT DoVerb(LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT); - HRESULT EnumVerbs(LPENUMOLEVERB*); - HRESULT Update(); - HRESULT IsUpToDate(); - HRESULT GetUserClassID(LPCLSID); - HRESULT GetUserType(DWORD,LPOLESTR*); - HRESULT SetExtent(DWORD,SIZEL*); - HRESULT GetExtent(DWORD,SIZEL*); - HRESULT Advise(LPADVISESINK,PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(LPENUMSTATDATA*); - HRESULT GetMiscStatus(DWORD,PDWORD); - HRESULT SetColorScheme(LPLOGPALETTE); -} -alias IOleObject LPOLEOBJECT; - -interface IOleWindow : IUnknown { - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); -} -alias IOleWindow LPOLEWINDOW; - -interface IOleInPlaceUIWindow : IOleWindow { - HRESULT GetBorder(LPRECT); - HRESULT RequestBorderSpace(LPCBORDERWIDTHS); - HRESULT SetBorderSpace(LPCBORDERWIDTHS); - HRESULT SetActiveObject(LPOLEINPLACEACTIVEOBJECT,LPCOLESTR); -} -alias IOleInPlaceUIWindow LPOLEINPLACEUIWINDOW; - -interface IOleInPlaceObject : IOleWindow { - HRESULT InPlaceDeactivate(); - HRESULT UIDeactivate(); - HRESULT SetObjectRects(LPCRECT,LPCRECT); - HRESULT ReactivateAndUndo(); -} - - -interface IOleInPlaceActiveObject : IOleWindow { - HRESULT TranslateAccelerator(LPMSG); - HRESULT OnFrameWindowActivate(BOOL); - HRESULT OnDocWindowActivate(BOOL); - HRESULT ResizeBorder(LPCRECT,LPOLEINPLACEUIWINDOW,BOOL); - HRESULT EnableModeless(BOOL); -} -alias IOleInPlaceActiveObject LPOLEINPLACEACTIVEOBJECT; - -interface IOleInPlaceFrame : IOleInPlaceUIWindow { - HRESULT InsertMenus(HMENU,LPOLEMENUGROUPWIDTHS); - HRESULT SetMenu(HMENU,HOLEMENU,HWND); - HRESULT RemoveMenus(HMENU); - HRESULT SetStatusText(LPCOLESTR); - HRESULT EnableModeless(BOOL); - HRESULT TranslateAccelerator(LPMSG,WORD); -} -alias IOleInPlaceFrame LPOLEINPLACEFRAME; - -interface IOleInPlaceSite : IOleWindow { - HRESULT CanInPlaceActivate(); - HRESULT OnInPlaceActivate(); - HRESULT OnUIActivate(); - HRESULT GetWindowContext(IOleInPlaceFrame*,IOleInPlaceUIWindow*,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO); - HRESULT Scroll(SIZE); - HRESULT OnUIDeactivate(BOOL); - HRESULT OnInPlaceDeactivate(); - HRESULT DiscardUndoState(); - HRESULT DeactivateAndUndo(); - HRESULT OnPosRectChange(LPCRECT); -} - -interface IOleAdviseHolder : IUnknown { - HRESULT Advise(LPADVISESINK,PDWORD); - HRESULT Unadvise(DWORD); - HRESULT EnumAdvise(LPENUMSTATDATA*); - HRESULT SendOnRename(LPMONIKER); - HRESULT SendOnSave(); - HRESULT SendOnClose(); -} -alias IOleAdviseHolder LPOLEADVISEHOLDER; - -interface IDropSource : IUnknown { - HRESULT QueryContinueDrag(BOOL,DWORD); - HRESULT GiveFeedback(DWORD); -} -alias IDropSource LPDROPSOURCE; - -interface IDropTarget : IUnknown { - HRESULT DragEnter(LPDATAOBJECT,DWORD,POINTL,PDWORD); - HRESULT DragOver(DWORD,POINTL,PDWORD); - HRESULT DragLeave(); - HRESULT Drop(LPDATAOBJECT,DWORD,POINTL,PDWORD); -} -alias IDropTarget LPDROPTARGET; - -extern (Windows) { - alias BOOL function(DWORD) __IView_pfncont; -} - -interface IViewObject : IUnknown { - HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD); - HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*); - HRESULT Freeze(DWORD,LONG,PVOID,PDWORD); - HRESULT Unfreeze(DWORD); - HRESULT SetAdvise(DWORD,DWORD,IAdviseSink*); - HRESULT GetAdvise(PDWORD,PDWORD,IAdviseSink**); -} -alias IViewObject LPVIEWOBJECT; - -interface IViewObject2 : IViewObject { - HRESULT GetExtent(DWORD,LONG,DVTARGETDEVICE*,LPSIZEL); -} -alias IViewObject2 LPVIEWOBJECT2; - -interface IOleCache : IUnknown { - HRESULT Cache(FORMATETC*,DWORD,DWORD*); - HRESULT Uncache(DWORD); - HRESULT EnumCache(IEnumSTATDATA**); - HRESULT InitCache(LPDATAOBJECT); - HRESULT SetData(FORMATETC*,STGMEDIUM*,BOOL); -} -alias IOleCache LPOLECACHE; - -interface IOleCache2 : IOleCache { - HRESULT UpdateCache(LPDATAOBJECT,DWORD,LPVOID); - HRESULT DiscardCache(DWORD); -} -alias IOleCache2 LPOLECACHE2; - -interface IOleCacheControl : IUnknown { - HRESULT OnRun(LPDATAOBJECT); - HRESULT OnStop(); -} -alias IOleCacheControl LPOLECACHECONTROL; +/***********************************************************************\ +* oleidl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.oleidl; + +// DAC: This is defined in ocidl !! +// what is it doing in here? +//alias IEnumOleUndoUnits LPENUMOLEUNDOUNITS; + +private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef, + win32.winuser, win32.wtypes; +private import win32.objfwd; // for LPMONIKER +private import win32.wingdi; // for LPLOGPALETTE + +const MK_ALT = 32; + +enum BINDSPEED { + BINDSPEED_INDEFINITE = 1, + BINDSPEED_MODERATE, + BINDSPEED_IMMEDIATE +} + +enum OLEWHICHMK { + OLEWHICHMK_CONTAINER = 1, + OLEWHICHMK_OBJREL, + OLEWHICHMK_OBJFULL +} + +enum OLEGETMONIKER { + OLEGETMONIKER_ONLYIFTHERE = 1, + OLEGETMONIKER_FORCEASSIGN, + OLEGETMONIKER_UNASSIGN, + OLEGETMONIKER_TEMPFORUSER +} + +enum USERCLASSTYPE { + USERCLASSTYPE_FULL = 1, + USERCLASSTYPE_SHORT, + USERCLASSTYPE_APPNAME +} + +enum DROPEFFECT { + DROPEFFECT_NONE = 0, + DROPEFFECT_COPY = 1, + DROPEFFECT_MOVE = 2, + DROPEFFECT_LINK = 4, + DROPEFFECT_SCROLL = 0x80000000 +} + +struct OLEMENUGROUPWIDTHS { + LONG[6] width; +} +alias OLEMENUGROUPWIDTHS* LPOLEMENUGROUPWIDTHS; + +alias HGLOBAL HOLEMENU; + +enum OLECLOSE { + OLECLOSE_SAVEIFDIRTY, + OLECLOSE_NOSAVE, + OLECLOSE_PROMPTSAVE +} + +struct OLEVERB { + LONG lVerb; + LPWSTR lpszVerbName; + DWORD fuFlags; + DWORD grfAttribs; +} +alias OLEVERB* LPOLEVERB; + +alias RECT BORDERWIDTHS; +alias LPRECT LPBORDERWIDTHS; +alias LPCRECT LPCBORDERWIDTHS; + +struct OLEINPLACEFRAMEINFO { + UINT cb; + BOOL fMDIApp; + HWND hwndFrame; + HACCEL haccel; + UINT cAccelEntries; +} +alias OLEINPLACEFRAMEINFO* LPOLEINPLACEFRAMEINFO; + +interface IEnumOLEVERB : IUnknown +{ + HRESULT Next(ULONG,OLEVERB*,ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumOLEVERB*); +} +//alias IEnumOLEVERB IEnumOleVerb; +alias IEnumOLEVERB LPENUMOLEVERB; + + +interface IParseDisplayName : IUnknown { + HRESULT ParseDisplayName(IBindCtx,LPOLESTR,ULONG*,IMoniker*); +} +alias IParseDisplayName LPPARSEDISPLAYNAME; + +interface IOleContainer : IParseDisplayName { + HRESULT EnumObjects(DWORD,IEnumUnknown*); + HRESULT LockContainer(BOOL); +} +alias IOleContainer LPOLECONTAINER; + +interface IOleItemContainer : IOleContainer { + HRESULT GetObject(LPOLESTR,DWORD,IBindCtx,REFIID,void**); + HRESULT GetObjectStorage(LPOLESTR,IBindCtx,REFIID,void**); + HRESULT IsRunning(LPOLESTR); +} + + +interface IOleClientSite : IUnknown { + HRESULT SaveObject(); + HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); + HRESULT GetContainer(LPOLECONTAINER*); + HRESULT ShowObject(); + HRESULT OnShowWindow(BOOL); + HRESULT RequestNewObjectLayout(); +} +alias IOleClientSite LPOLECLIENTSITE; + +interface IOleObject : IUnknown { + HRESULT SetClientSite(LPOLECLIENTSITE); + HRESULT GetClientSite(LPOLECLIENTSITE*); + HRESULT SetHostNames(LPCOLESTR,LPCOLESTR); + HRESULT Close(DWORD); + HRESULT SetMoniker(DWORD,LPMONIKER); + HRESULT GetMoniker(DWORD,DWORD,LPMONIKER*); + HRESULT InitFromData(LPDATAOBJECT,BOOL,DWORD); + HRESULT GetClipboardData(DWORD,LPDATAOBJECT*); + HRESULT DoVerb(LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT); + HRESULT EnumVerbs(LPENUMOLEVERB*); + HRESULT Update(); + HRESULT IsUpToDate(); + HRESULT GetUserClassID(LPCLSID); + HRESULT GetUserType(DWORD,LPOLESTR*); + HRESULT SetExtent(DWORD,SIZEL*); + HRESULT GetExtent(DWORD,SIZEL*); + HRESULT Advise(LPADVISESINK,PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(LPENUMSTATDATA*); + HRESULT GetMiscStatus(DWORD,PDWORD); + HRESULT SetColorScheme(LPLOGPALETTE); +} +alias IOleObject LPOLEOBJECT; + +interface IOleWindow : IUnknown { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); +} +alias IOleWindow LPOLEWINDOW; + +interface IOleInPlaceUIWindow : IOleWindow { + HRESULT GetBorder(LPRECT); + HRESULT RequestBorderSpace(LPCBORDERWIDTHS); + HRESULT SetBorderSpace(LPCBORDERWIDTHS); + HRESULT SetActiveObject(LPOLEINPLACEACTIVEOBJECT,LPCOLESTR); +} +alias IOleInPlaceUIWindow LPOLEINPLACEUIWINDOW; + +interface IOleInPlaceObject : IOleWindow { + HRESULT InPlaceDeactivate(); + HRESULT UIDeactivate(); + HRESULT SetObjectRects(LPCRECT,LPCRECT); + HRESULT ReactivateAndUndo(); +} + + +interface IOleInPlaceActiveObject : IOleWindow { + HRESULT TranslateAccelerator(LPMSG); + HRESULT OnFrameWindowActivate(BOOL); + HRESULT OnDocWindowActivate(BOOL); + HRESULT ResizeBorder(LPCRECT,LPOLEINPLACEUIWINDOW,BOOL); + HRESULT EnableModeless(BOOL); +} +alias IOleInPlaceActiveObject LPOLEINPLACEACTIVEOBJECT; + +interface IOleInPlaceFrame : IOleInPlaceUIWindow { + HRESULT InsertMenus(HMENU,LPOLEMENUGROUPWIDTHS); + HRESULT SetMenu(HMENU,HOLEMENU,HWND); + HRESULT RemoveMenus(HMENU); + HRESULT SetStatusText(LPCOLESTR); + HRESULT EnableModeless(BOOL); + HRESULT TranslateAccelerator(LPMSG,WORD); +} +alias IOleInPlaceFrame LPOLEINPLACEFRAME; + +interface IOleInPlaceSite : IOleWindow { + HRESULT CanInPlaceActivate(); + HRESULT OnInPlaceActivate(); + HRESULT OnUIActivate(); + HRESULT GetWindowContext(IOleInPlaceFrame,IOleInPlaceUIWindow,LPRECT,LPRECT,LPOLEINPLACEFRAMEINFO); + HRESULT Scroll(SIZE); + HRESULT OnUIDeactivate(BOOL); + HRESULT OnInPlaceDeactivate(); + HRESULT DiscardUndoState(); + HRESULT DeactivateAndUndo(); + HRESULT OnPosRectChange(LPCRECT); +} + +interface IOleAdviseHolder : IUnknown { + HRESULT Advise(LPADVISESINK,PDWORD); + HRESULT Unadvise(DWORD); + HRESULT EnumAdvise(LPENUMSTATDATA*); + HRESULT SendOnRename(LPMONIKER); + HRESULT SendOnSave(); + HRESULT SendOnClose(); +} +alias IOleAdviseHolder LPOLEADVISEHOLDER; + +interface IDropSource : IUnknown { + HRESULT QueryContinueDrag(BOOL,DWORD); + HRESULT GiveFeedback(DWORD); +} +alias IDropSource LPDROPSOURCE; + +interface IDropTarget : IUnknown { + HRESULT DragEnter(LPDATAOBJECT,DWORD,POINTL,PDWORD); + HRESULT DragOver(DWORD,POINTL,PDWORD); + HRESULT DragLeave(); + HRESULT Drop(LPDATAOBJECT,DWORD,POINTL,PDWORD); +} +alias IDropTarget LPDROPTARGET; + +extern (Windows) { + alias BOOL function(DWORD) __IView_pfncont; +} + +interface IViewObject : IUnknown { + HRESULT Draw(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD); + HRESULT GetColorSet(DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*); + HRESULT Freeze(DWORD,LONG,PVOID,PDWORD); + HRESULT Unfreeze(DWORD); + HRESULT SetAdvise(DWORD,DWORD,IAdviseSink); + HRESULT GetAdvise(PDWORD,PDWORD,IAdviseSink*); +} +alias IViewObject LPVIEWOBJECT; + +interface IViewObject2 : IViewObject { + HRESULT GetExtent(DWORD,LONG,DVTARGETDEVICE*,LPSIZEL); +} +alias IViewObject2 LPVIEWOBJECT2; + +interface IOleCache : IUnknown { + HRESULT Cache(FORMATETC*,DWORD,DWORD*); + HRESULT Uncache(DWORD); + HRESULT EnumCache(IEnumSTATDATA*); + HRESULT InitCache(LPDATAOBJECT); + HRESULT SetData(FORMATETC*,STGMEDIUM*,BOOL); +} +alias IOleCache LPOLECACHE; + +interface IOleCache2 : IOleCache { + HRESULT UpdateCache(LPDATAOBJECT,DWORD,LPVOID); + HRESULT DiscardCache(DWORD); +} +alias IOleCache2 LPOLECACHE2; + +interface IOleCacheControl : IUnknown { + HRESULT OnRun(LPDATAOBJECT); + HRESULT OnStop(); +} +alias IOleCacheControl LPOLECACHECONTROL; Index: src/win32/pbt.d ================================================================== --- src/win32/pbt.d +++ src/win32/pbt.d @@ -1,30 +1,30 @@ -/***********************************************************************\ -* pbt.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.pbt; - -private import win32.windef; - -enum : WPARAM { - PBT_APMQUERYSUSPEND, - PBT_APMQUERYSTANDBY, - PBT_APMQUERYSUSPENDFAILED, - PBT_APMQUERYSTANDBYFAILED, - PBT_APMSUSPEND, - PBT_APMSTANDBY, - PBT_APMRESUMECRITICAL, - PBT_APMRESUMESUSPEND, - PBT_APMRESUMESTANDBY, - PBT_APMBATTERYLOW, - PBT_APMPOWERSTATUSCHANGE, - PBT_APMOEMEVENT // = 11 -} - -const LPARAM PBTF_APMRESUMEFROMFAILURE = 1; +/***********************************************************************\ +* pbt.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.pbt; + +private import win32.windef; + +enum : WPARAM { + PBT_APMQUERYSUSPEND, + PBT_APMQUERYSTANDBY, + PBT_APMQUERYSUSPENDFAILED, + PBT_APMQUERYSTANDBYFAILED, + PBT_APMSUSPEND, + PBT_APMSTANDBY, + PBT_APMRESUMECRITICAL, + PBT_APMRESUMESUSPEND, + PBT_APMRESUMESTANDBY, + PBT_APMBATTERYLOW, + PBT_APMPOWERSTATUSCHANGE, + PBT_APMOEMEVENT // = 11 +} + +const LPARAM PBTF_APMRESUMEFROMFAILURE = 1; Index: src/win32/powrprof.d ================================================================== --- src/win32/powrprof.d +++ src/win32/powrprof.d @@ -1,140 +1,140 @@ -/***********************************************************************\ -* powrprof.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.powrprof; -pragma(lib, "powrprof.lib"); - -private import win32.windef; -private import win32.ntdef; - -// FIXME: look up Windows version support - -const ULONG - EnableSysTrayBatteryMeter = 1, - EnableMultiBatteryDisplay = 2, - EnablePasswordLogon = 4, - EnableWakeOnRing = 8, - EnableVideoDimDisplay = 16; - -const UINT NEWSCHEME = -1; - -struct GLOBAL_MACHINE_POWER_POLICY { - ULONG Revision; - SYSTEM_POWER_STATE LidOpenWakeAc; - SYSTEM_POWER_STATE LidOpenWakeDc; - ULONG BroadcastCapacityResolution; -} -alias GLOBAL_MACHINE_POWER_POLICY* PGLOBAL_MACHINE_POWER_POLICY; - -struct GLOBAL_USER_POWER_POLICY { - ULONG Revision; - POWER_ACTION_POLICY PowerButtonAc; - POWER_ACTION_POLICY PowerButtonDc; - POWER_ACTION_POLICY SleepButtonAc; - POWER_ACTION_POLICY SleepButtonDc; - POWER_ACTION_POLICY LidCloseAc; - POWER_ACTION_POLICY LidCloseDc; - SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; - ULONG GlobalFlags; -} -alias GLOBAL_USER_POWER_POLICY* PGLOBAL_USER_POWER_POLICY; - -struct GLOBAL_POWER_POLICY { - GLOBAL_USER_POWER_POLICY user; - GLOBAL_MACHINE_POWER_POLICY mach; -} -alias GLOBAL_POWER_POLICY* PGLOBAL_POWER_POLICY; - -struct MACHINE_POWER_POLICY { - ULONG Revision; - SYSTEM_POWER_STATE MinSleepAc; - SYSTEM_POWER_STATE MinSleepDc; - SYSTEM_POWER_STATE ReducedLatencySleepAc; - SYSTEM_POWER_STATE ReducedLatencySleepDc; - ULONG DozeTimeoutAc; - ULONG DozeTimeoutDc; - ULONG DozeS4TimeoutAc; - ULONG DozeS4TimeoutDc; - UCHAR MinThrottleAc; - UCHAR MinThrottleDc; - UCHAR[2] pad1; - POWER_ACTION_POLICY OverThrottledAc; - POWER_ACTION_POLICY OverThrottledDc; -} -alias MACHINE_POWER_POLICY* PMACHINE_POWER_POLICY; - -struct MACHINE_PROCESSOR_POWER_POLICY { - ULONG Revision; - PROCESSOR_POWER_POLICY ProcessorPolicyAc; - PROCESSOR_POWER_POLICY ProcessorPolicyDc; -} -alias MACHINE_PROCESSOR_POWER_POLICY* PMACHINE_PROCESSOR_POWER_POLICY; - -struct USER_POWER_POLICY { - ULONG Revision; - POWER_ACTION_POLICY IdleAc; - POWER_ACTION_POLICY IdleDc; - ULONG IdleTimeoutAc; - ULONG IdleTimeoutDc; - UCHAR IdleSensitivityAc; - UCHAR IdleSensitivityDc; - UCHAR ThrottlePolicyAc; - UCHAR ThrottlePolicyDc; - SYSTEM_POWER_STATE MaxSleepAc; - SYSTEM_POWER_STATE MaxSleepDc; - ULONG[2] Reserved; - ULONG VideoTimeoutAc; - ULONG VideoTimeoutDc; - ULONG SpindownTimeoutAc; - ULONG SpindownTimeoutDc; - BOOLEAN OptimizeForPowerAc; - BOOLEAN OptimizeForPowerDc; - UCHAR FanThrottleToleranceAc; - UCHAR FanThrottleToleranceDc; - UCHAR ForcedThrottleAc; - UCHAR ForcedThrottleDc; -} -alias USER_POWER_POLICY* PUSER_POWER_POLICY; - -struct POWER_POLICY { - USER_POWER_POLICY user; - MACHINE_POWER_POLICY mach; -} -alias POWER_POLICY* PPOWER_POLICY; - -extern (Windows) { - alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, - LPARAM) PWRSCHEMESENUMPROC; - alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN) - PFNNTINITIATEPWRACTION; - - NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, - PVOID, ULONG); - BOOLEAN CanUserWritePwrScheme(); - BOOLEAN DeletePwrScheme(UINT); - BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); - BOOLEAN GetActivePwrScheme(PUINT); - BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); - BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT); - BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); - BOOLEAN IsPwrHibernateAllowed(); - BOOLEAN IsPwrShutdownAllowed(); - BOOLEAN IsPwrSuspendAllowed(); - BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); - BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); - BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY); - BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); - BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); - BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); - BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); - BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); -} +/***********************************************************************\ +* powrprof.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.powrprof; +pragma(lib, "powrprof"); + +private import win32.windef; +private import win32.ntdef; + +// FIXME: look up Windows version support + +const ULONG + EnableSysTrayBatteryMeter = 1, + EnableMultiBatteryDisplay = 2, + EnablePasswordLogon = 4, + EnableWakeOnRing = 8, + EnableVideoDimDisplay = 16; + +const UINT NEWSCHEME = -1; + +struct GLOBAL_MACHINE_POWER_POLICY { + ULONG Revision; + SYSTEM_POWER_STATE LidOpenWakeAc; + SYSTEM_POWER_STATE LidOpenWakeDc; + ULONG BroadcastCapacityResolution; +} +alias GLOBAL_MACHINE_POWER_POLICY* PGLOBAL_MACHINE_POWER_POLICY; + +struct GLOBAL_USER_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY PowerButtonAc; + POWER_ACTION_POLICY PowerButtonDc; + POWER_ACTION_POLICY SleepButtonAc; + POWER_ACTION_POLICY SleepButtonDc; + POWER_ACTION_POLICY LidCloseAc; + POWER_ACTION_POLICY LidCloseDc; + SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; + ULONG GlobalFlags; +} +alias GLOBAL_USER_POWER_POLICY* PGLOBAL_USER_POWER_POLICY; + +struct GLOBAL_POWER_POLICY { + GLOBAL_USER_POWER_POLICY user; + GLOBAL_MACHINE_POWER_POLICY mach; +} +alias GLOBAL_POWER_POLICY* PGLOBAL_POWER_POLICY; + +struct MACHINE_POWER_POLICY { + ULONG Revision; + SYSTEM_POWER_STATE MinSleepAc; + SYSTEM_POWER_STATE MinSleepDc; + SYSTEM_POWER_STATE ReducedLatencySleepAc; + SYSTEM_POWER_STATE ReducedLatencySleepDc; + ULONG DozeTimeoutAc; + ULONG DozeTimeoutDc; + ULONG DozeS4TimeoutAc; + ULONG DozeS4TimeoutDc; + UCHAR MinThrottleAc; + UCHAR MinThrottleDc; + UCHAR[2] pad1; + POWER_ACTION_POLICY OverThrottledAc; + POWER_ACTION_POLICY OverThrottledDc; +} +alias MACHINE_POWER_POLICY* PMACHINE_POWER_POLICY; + +struct MACHINE_PROCESSOR_POWER_POLICY { + ULONG Revision; + PROCESSOR_POWER_POLICY ProcessorPolicyAc; + PROCESSOR_POWER_POLICY ProcessorPolicyDc; +} +alias MACHINE_PROCESSOR_POWER_POLICY* PMACHINE_PROCESSOR_POWER_POLICY; + +struct USER_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY IdleAc; + POWER_ACTION_POLICY IdleDc; + ULONG IdleTimeoutAc; + ULONG IdleTimeoutDc; + UCHAR IdleSensitivityAc; + UCHAR IdleSensitivityDc; + UCHAR ThrottlePolicyAc; + UCHAR ThrottlePolicyDc; + SYSTEM_POWER_STATE MaxSleepAc; + SYSTEM_POWER_STATE MaxSleepDc; + ULONG[2] Reserved; + ULONG VideoTimeoutAc; + ULONG VideoTimeoutDc; + ULONG SpindownTimeoutAc; + ULONG SpindownTimeoutDc; + BOOLEAN OptimizeForPowerAc; + BOOLEAN OptimizeForPowerDc; + UCHAR FanThrottleToleranceAc; + UCHAR FanThrottleToleranceDc; + UCHAR ForcedThrottleAc; + UCHAR ForcedThrottleDc; +} +alias USER_POWER_POLICY* PUSER_POWER_POLICY; + +struct POWER_POLICY { + USER_POWER_POLICY user; + MACHINE_POWER_POLICY mach; +} +alias POWER_POLICY* PPOWER_POLICY; + +extern (Windows) { + alias BOOLEAN function(UINT, DWORD, LPTSTR, DWORD, LPTSTR, PPOWER_POLICY, + LPARAM) PWRSCHEMESENUMPROC; + alias BOOLEAN function(POWER_ACTION, SYSTEM_POWER_STATE, ULONG, BOOLEAN) + PFNNTINITIATEPWRACTION; + + NTSTATUS CallNtPowerInformation(POWER_INFORMATION_LEVEL, PVOID, ULONG, + PVOID, ULONG); + BOOLEAN CanUserWritePwrScheme(); + BOOLEAN DeletePwrScheme(UINT); + BOOLEAN EnumPwrSchemes(PWRSCHEMESENUMPROC, LPARAM); + BOOLEAN GetActivePwrScheme(PUINT); + BOOLEAN GetCurrentPowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN GetPwrCapabilities(PSYSTEM_POWER_CAPABILITIES); + BOOLEAN GetPwrDiskSpindownRange(PUINT, PUINT); + BOOLEAN IsAdminOverrideActive(PADMINISTRATOR_POWER_POLICY); + BOOLEAN IsPwrHibernateAllowed(); + BOOLEAN IsPwrShutdownAllowed(); + BOOLEAN IsPwrSuspendAllowed(); + BOOLEAN ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY); + BOOLEAN ReadProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); + BOOLEAN ReadPwrScheme(UINT, PPOWER_POLICY); + BOOLEAN SetActivePwrScheme(UINT, PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN SetSuspendState(BOOLEAN, BOOLEAN, BOOLEAN); + BOOLEAN WriteGlobalPwrPolicy(PGLOBAL_POWER_POLICY); + BOOLEAN WriteProcessorPwrScheme(UINT, PMACHINE_PROCESSOR_POWER_POLICY); + BOOLEAN ValidatePowerPolicies(PGLOBAL_POWER_POLICY, PPOWER_POLICY); + BOOLEAN WritePwrScheme(PUINT, LPTSTR, LPTSTR, PPOWER_POLICY); +} Index: src/win32/prsht.d ================================================================== --- src/win32/prsht.d +++ src/win32/prsht.d @@ -1,442 +1,442 @@ -/***********************************************************************\ -* prsht.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Vladimir Vlasov * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.prsht; -pragma(lib, "comctl32.lib"); - -private import win32.w32api, win32.windef, win32.winuser; - -const MAXPROPPAGES = 100; - -enum { - PSP_DEFAULT = 0x00000000, - PSP_DLGINDIRECT = 0x00000001, - PSP_USEHICON = 0x00000002, - PSP_USEICONID = 0x00000004, - PSP_USETITLE = 0x00000008, - PSP_RTLREADING = 0x00000010, - PSP_HASHELP = 0x00000020, - PSP_USEREFPARENT = 0x00000040, - PSP_USECALLBACK = 0x00000080, - PSP_PREMATURE = 0x00000400 -} - -static if (_WIN32_IE >= 0x0400) { - enum { - PSP_HIDEHEADER = 0x00000800, - PSP_USEHEADERTITLE = 0x00001000, - PSP_USEHEADERSUBTITLE = 0x00002000 - } -} - -enum { - PSPCB_RELEASE = 1, - PSPCB_CREATE -} - -enum { - PSH_DEFAULT = 0x00000000, - PSH_PROPTITLE = 0x00000001, - PSH_USEHICON = 0x00000002, - PSH_USEICONID = 0x00000004, - PSH_PROPSHEETPAGE = 0x00000008, - PSH_WIZARDHASFINISH = 0x00000010, - PSH_WIZARD = 0x00000020, - PSH_USEPSTARTPAGE = 0x00000040, - PSH_NOAPPLYNOW = 0x00000080, - PSH_USECALLBACK = 0x00000100, - PSH_HASHELP = 0x00000200, - PSH_MODELESS = 0x00000400, - PSH_RTLREADING = 0x00000800, - PSH_WIZARDCONTEXTHELP = 0x00001000 -} - -static if (_WIN32_IE >= 0x0400) { - enum { - PSH_WATERMARK = 0x00008000, - PSH_USEHBMWATERMARK = 0x00010000, - PSH_USEHPLWATERMARK = 0x00020000, - PSH_STRETCHWATERMARK = 0x00040000, - PSH_HEADER = 0x00080000, - PSH_USEHBMHEADER = 0x00100000, - PSH_USEPAGELANG = 0x00200000 - } - static if (_WIN32_IE < 0x0500) { - enum { - PSH_WIZARD97 = 0x00002000 - } - } else { - enum { - PSH_WIZARD97 = 0x01000000 - } - } -} - -static if (_WIN32_IE >= 0x0500) { - enum { - PSH_WIZARD_LITE = 0x00400000, - PSH_NOCONTEXTHELP = 0x02000000 - } -} - -enum { - PSCB_INITIALIZED = 1, - PSCB_PRECREATE -} - -enum { - PSN_FIRST = (-200), - PSN_LAST = (-299), - PSN_SETACTIVE = (-200), - PSN_KILLACTIVE = (-201), - PSN_APPLY = (-202), - PSN_RESET = (-203), - PSN_HELP = (-205), - PSN_WIZBACK = (-206), - PSN_WIZNEXT = (-207), - PSN_WIZFINISH = (-208), - PSN_QUERYCANCEL = (-209) -} -static if (_WIN32_IE >= 0x0400) { - enum { - PSN_GETOBJECT = (-210) - } -} -static if (_WIN32_IE >= 0x0500) { - enum { - PSN_TRANSLATEACCELERATOR = (-212), - PSN_QUERYINITIALFOCUS = (-213) - } -} - -enum { - PSNRET_NOERROR, - PSNRET_INVALID, - PSNRET_INVALID_NOCHANGEPAGE, - PSNRET_MESSAGEHANDLED -} - -enum { - ID_PSRESTARTWINDOWS = 0x2, - ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 -} - -enum { - WIZ_CXDLG = 276, - WIZ_CYDLG = 140, - WIZ_CXBMP = 80, - WIZ_BODYX = 92, - WIZ_BODYCX = 184 -} - -enum { - PROP_SM_CXDLG = 212, - PROP_SM_CYDLG = 188, - PROP_MED_CXDLG = 227, - PROP_MED_CYDLG = 215, - PROP_LG_CXDLG = 252, - PROP_LG_CYDLG = 218 -} - -enum { - PSBTN_BACK, - PSBTN_NEXT, - PSBTN_FINISH, - PSBTN_OK, - PSBTN_APPLYNOW, - PSBTN_CANCEL, - PSBTN_HELP, - PSBTN_MAX = 6 -} - -enum { - PSWIZB_BACK = 1, - PSWIZB_NEXT = 2, - PSWIZB_FINISH = 4, - PSWIZB_DISABLEDFINISH = 8 -} - -enum { - PSM_SETCURSEL = WM_USER + 101, - PSM_REMOVEPAGE, - PSM_ADDPAGE, - PSM_CHANGED, - PSM_RESTARTWINDOWS, - PSM_REBOOTSYSTEM, - PSM_CANCELTOCLOSE, - PSM_QUERYSIBLINGS, - PSM_UNCHANGED, - PSM_APPLY, - PSM_SETTITLEA, - PSM_SETWIZBUTTONS, - PSM_PRESSBUTTON, - PSM_SETCURSELID, - PSM_SETFINISHTEXTA, - PSM_GETTABCONTROL, - PSM_ISDIALOGMESSAGE, - PSM_GETCURRENTPAGEHWND, - PSM_INSERTPAGE, - PSM_SETTITLEW, - PSM_SETFINISHTEXTW // = WM_USER + 121, -} - -alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; -alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW; -alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; - -align(4): - -struct PROPSHEETPAGEA { - DWORD dwSize = PROPSHEETPAGEA.sizeof; - DWORD dwFlags; - HINSTANCE hInstance; - union { - LPCSTR pszTemplate; - LPCDLGTEMPLATE pResource; - } - union { - HICON hIcon; - LPCSTR pszIcon; - } - LPCSTR pszTitle; - DLGPROC pfnDlgProc; - LPARAM lParam; - LPFNPSPCALLBACKA pfnCallback; - UINT* pcRefParent; - static if (_WIN32_IE >= 0x0400) { - LPCSTR pszHeaderTitle; - LPCSTR pszHeaderSubTitle; - } -} -alias PROPSHEETPAGEA* LPPROPSHEETPAGEA; -alias CPtr!(PROPSHEETPAGEA) LPCPROPSHEETPAGEA; - -struct PROPSHEETPAGEW { - DWORD dwSize = PROPSHEETPAGEW.sizeof; - DWORD dwFlags; - HINSTANCE hInstance; - union { - LPCWSTR pszTemplate; - LPCDLGTEMPLATE pResource; - } - union { - HICON hIcon; - LPCWSTR pszIcon; - } - LPCWSTR pszTitle; - DLGPROC pfnDlgProc; - LPARAM lParam; - LPFNPSPCALLBACKW pfnCallback; - UINT* pcRefParent; - static if (_WIN32_IE >= 0x0400) { - LPCWSTR pszHeaderTitle; - LPCWSTR pszHeaderSubTitle; - } -} -alias PROPSHEETPAGEW* LPPROPSHEETPAGEW; -alias CPtr!(PROPSHEETPAGEW) LPCPROPSHEETPAGEW; - -alias HANDLE HPROPSHEETPAGE; - -struct PROPSHEETHEADERA { - DWORD dwSize = PROPSHEETHEADERA.sizeof; - DWORD dwFlags; - HWND hwndParent; - HINSTANCE hInstance; - union { - HICON hIcon; - LPCSTR pszIcon; - } - LPCSTR pszCaption; - UINT nPages; - union { - UINT nStartPage; - LPCSTR pStartPage; - } - union { - LPCPROPSHEETPAGEA ppsp; - HPROPSHEETPAGE* phpage; - } - PFNPROPSHEETCALLBACK pfnCallback; - static if (_WIN32_IE >= 0x0400) { - union { - HBITMAP hbmWatermark; - LPCSTR pszbmWatermark; - } - HPALETTE hplWatermark; - union { - HBITMAP hbmHeader; - LPCSTR pszbmHeader; - } - } -} -alias PROPSHEETHEADERA* LPPROPSHEETHEADERA; -alias CPtr!(PROPSHEETHEADERA) LPCPROPSHEETHEADERA; - -struct PROPSHEETHEADERW { - DWORD dwSize = PROPSHEETHEADERW.sizeof; - DWORD dwFlags; - HWND hwndParent; - HINSTANCE hInstance; - union { - HICON hIcon; - LPCWSTR pszIcon; - } - LPCWSTR pszCaption; - UINT nPages; - union { - UINT nStartPage; - LPCWSTR pStartPage; - } - union { - LPCPROPSHEETPAGEW ppsp; - HPROPSHEETPAGE* phpage; - } - PFNPROPSHEETCALLBACK pfnCallback; - static if (_WIN32_IE >= 0x0400) { - union { - HBITMAP hbmWatermark; - LPCWSTR pszbmWatermark; - } - HPALETTE hplWatermark; - union { - HBITMAP hbmHeader; - LPCWSTR pszbmHeader; - } - } -} -alias PROPSHEETHEADERW* LPPROPSHEETHEADERW; -alias CPtr!(PROPSHEETHEADERW) LPCPROPSHEETHEADERW; - -alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; -alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) - LPFNADDPROPSHEETPAGES; - -struct PSHNOTIFY { - NMHDR hdr; - LPARAM lParam; -} -alias PSHNOTIFY* LPPSHNOTIFY; - -extern (Windows) { - HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); - HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); - BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); - int PropertySheetA(LPCPROPSHEETHEADERA); - int PropertySheetW(LPCPROPSHEETHEADERW); -} - -version (Unicode) { - alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; - alias PROPSHEETPAGEW PROPSHEETPAGE; - alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; - alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; - alias PROPSHEETHEADERW PROPSHEETHEADER; - alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; - alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; - alias PSM_SETTITLEW PSM_SETTITLE; - alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; - alias CreatePropertySheetPageW CreatePropertySheetPage; - alias PropertySheetW PropertySheet; -} else { - alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; - alias PROPSHEETPAGEA PROPSHEETPAGE; - alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; - alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; - alias PROPSHEETHEADERA PROPSHEETHEADER; - alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; - alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; - alias PSM_SETTITLEA PSM_SETTITLE; - alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; - alias CreatePropertySheetPageA CreatePropertySheetPage; - alias PropertySheetA PropertySheet; -} - -BOOL PropSheet_SetCurSel(HWND hPropSheetDlg, HPROPSHEETPAGE hpage, - HPROPSHEETPAGE index) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, - cast(WPARAM) index, cast(LPARAM) hpage); -} - -VOID PropSheet_RemovePage(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) { - SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); -} - -BOOL PropSheet_AddPage(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, - 0, cast(LPARAM) hpage); -} - -VOID PropSheet_Changed(HWND hPropSheetDlg, HWND hwndPage) { - SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); -} - -VOID PropSheet_RestartWindows(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); -} - -VOID PropSheet_RebootSystem(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); -} - -VOID PropSheet_CancelToClose(HWND hPropSheetDlg) { - SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); -} - -int PropSheet_QuerySiblings(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) { - return SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); -} - -VOID PropSheet_UnChanged(HWND hPropSheetDlg, HWND hwndPage) { - SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); -} - -BOOL PropSheet_Apply(HWND hPropSheetDlg) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); -} - -VOID PropSheet_SetTitle(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) { - SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); -} - -VOID PropSheet_SetWizButtons(HWND hPropSheetDlg, DWORD dwFlags) { - PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); -} - -BOOL PropSheet_PressButton(HWND hPropSheetDlg, int iButton) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); -} - -BOOL PropSheet_SetCurSelByID(HWND hPropSheetDlg, int id) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); -} - -VOID PropSheet_SetFinishText(HWND hPropSheetDlg, LPTSTR lpszText) { - SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); -} - -HWND PropSheet_GetTabControl(HWND hPropSheetDlg) { - return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); -} - -BOOL PropSheet_IsDialogMessage(HWND hDlg, LPMSG pMsg) { - return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, - 0, cast(LPARAM) pMsg); -} - -HWND PropSheet_GetCurrentPageHwnd(HWND hDlg) { - return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); -} - -BOOL PropSheet_InsertPage(HWND hPropSheetDlg, WPARAM wInsertAfter, - HPROPSHEETPAGE hpage) { - return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, - wInsertAfter, cast(LPARAM) hpage); -} +/***********************************************************************\ +* prsht.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Vladimir Vlasov * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.prsht; +pragma(lib, "comctl32"); + +private import win32.w32api, win32.windef, win32.winuser; + +const MAXPROPPAGES = 100; + +enum { + PSP_DEFAULT = 0x00000000, + PSP_DLGINDIRECT = 0x00000001, + PSP_USEHICON = 0x00000002, + PSP_USEICONID = 0x00000004, + PSP_USETITLE = 0x00000008, + PSP_RTLREADING = 0x00000010, + PSP_HASHELP = 0x00000020, + PSP_USEREFPARENT = 0x00000040, + PSP_USECALLBACK = 0x00000080, + PSP_PREMATURE = 0x00000400 +} + +static if (_WIN32_IE >= 0x400) { + enum { + PSP_HIDEHEADER = 0x00000800, + PSP_USEHEADERTITLE = 0x00001000, + PSP_USEHEADERSUBTITLE = 0x00002000 + } +} + +enum { + PSPCB_RELEASE = 1, + PSPCB_CREATE +} + +enum { + PSH_DEFAULT = 0x00000000, + PSH_PROPTITLE = 0x00000001, + PSH_USEHICON = 0x00000002, + PSH_USEICONID = 0x00000004, + PSH_PROPSHEETPAGE = 0x00000008, + PSH_WIZARDHASFINISH = 0x00000010, + PSH_WIZARD = 0x00000020, + PSH_USEPSTARTPAGE = 0x00000040, + PSH_NOAPPLYNOW = 0x00000080, + PSH_USECALLBACK = 0x00000100, + PSH_HASHELP = 0x00000200, + PSH_MODELESS = 0x00000400, + PSH_RTLREADING = 0x00000800, + PSH_WIZARDCONTEXTHELP = 0x00001000 +} + +static if (_WIN32_IE >= 0x400) { + enum { + PSH_WATERMARK = 0x00008000, + PSH_USEHBMWATERMARK = 0x00010000, + PSH_USEHPLWATERMARK = 0x00020000, + PSH_STRETCHWATERMARK = 0x00040000, + PSH_HEADER = 0x00080000, + PSH_USEHBMHEADER = 0x00100000, + PSH_USEPAGELANG = 0x00200000 + } + static if (_WIN32_IE < 0x0500) { + enum { + PSH_WIZARD97 = 0x00002000 + } + } else { + enum { + PSH_WIZARD97 = 0x01000000 + } + } +} + +static if (_WIN32_IE >= 0x500) { + enum { + PSH_WIZARD_LITE = 0x00400000, + PSH_NOCONTEXTHELP = 0x02000000 + } +} + +enum { + PSCB_INITIALIZED = 1, + PSCB_PRECREATE +} + +enum { + PSN_FIRST = (-200), + PSN_LAST = (-299), + PSN_SETACTIVE = (-200), + PSN_KILLACTIVE = (-201), + PSN_APPLY = (-202), + PSN_RESET = (-203), + PSN_HELP = (-205), + PSN_WIZBACK = (-206), + PSN_WIZNEXT = (-207), + PSN_WIZFINISH = (-208), + PSN_QUERYCANCEL = (-209) +} +static if (_WIN32_IE >= 0x400) { + enum { + PSN_GETOBJECT = (-210) + } +} +static if (_WIN32_IE >= 0x500) { + enum { + PSN_TRANSLATEACCELERATOR = (-212), + PSN_QUERYINITIALFOCUS = (-213) + } +} + +enum { + PSNRET_NOERROR, + PSNRET_INVALID, + PSNRET_INVALID_NOCHANGEPAGE, + PSNRET_MESSAGEHANDLED +} + +enum { + ID_PSRESTARTWINDOWS = 0x2, + ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 +} + +enum { + WIZ_CXDLG = 276, + WIZ_CYDLG = 140, + WIZ_CXBMP = 80, + WIZ_BODYX = 92, + WIZ_BODYCX = 184 +} + +enum { + PROP_SM_CXDLG = 212, + PROP_SM_CYDLG = 188, + PROP_MED_CXDLG = 227, + PROP_MED_CYDLG = 215, + PROP_LG_CXDLG = 252, + PROP_LG_CYDLG = 218 +} + +enum { + PSBTN_BACK, + PSBTN_NEXT, + PSBTN_FINISH, + PSBTN_OK, + PSBTN_APPLYNOW, + PSBTN_CANCEL, + PSBTN_HELP, + PSBTN_MAX = 6 +} + +enum { + PSWIZB_BACK = 1, + PSWIZB_NEXT = 2, + PSWIZB_FINISH = 4, + PSWIZB_DISABLEDFINISH = 8 +} + +enum { + PSM_SETCURSEL = WM_USER + 101, + PSM_REMOVEPAGE, + PSM_ADDPAGE, + PSM_CHANGED, + PSM_RESTARTWINDOWS, + PSM_REBOOTSYSTEM, + PSM_CANCELTOCLOSE, + PSM_QUERYSIBLINGS, + PSM_UNCHANGED, + PSM_APPLY, + PSM_SETTITLEA, + PSM_SETWIZBUTTONS, + PSM_PRESSBUTTON, + PSM_SETCURSELID, + PSM_SETFINISHTEXTA, + PSM_GETTABCONTROL, + PSM_ISDIALOGMESSAGE, + PSM_GETCURRENTPAGEHWND, + PSM_INSERTPAGE, + PSM_SETTITLEW, + PSM_SETFINISHTEXTW // = WM_USER + 121, +} + +alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA; +alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW; +alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; + +align(4): + +struct PROPSHEETPAGEA { + DWORD dwSize = PROPSHEETPAGEA.sizeof; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; + static if (_WIN32_IE >= 0x400) { + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; + } +} +alias PROPSHEETPAGEA* LPPROPSHEETPAGEA; +alias const(PROPSHEETPAGEA)* LPCPROPSHEETPAGEA; + +struct PROPSHEETPAGEW { + DWORD dwSize = PROPSHEETPAGEW.sizeof; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + LPCDLGTEMPLATE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; + static if (_WIN32_IE >= 0x400) { + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; + } +} +alias PROPSHEETPAGEW* LPPROPSHEETPAGEW; +alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW; + +mixin DECLARE_HANDLE!("HPROPSHEETPAGE"); + +struct PROPSHEETHEADERA { + DWORD dwSize = PROPSHEETHEADERA.sizeof; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszCaption; + UINT nPages; + union { + UINT nStartPage; + LPCSTR pStartPage; + } + union { + LPCPROPSHEETPAGEA ppsp; + HPROPSHEETPAGE* phpage; + } + PFNPROPSHEETCALLBACK pfnCallback; + static if (_WIN32_IE >= 0x400) { + union { + HBITMAP hbmWatermark; + LPCSTR pszbmWatermark; + } + HPALETTE hplWatermark; + union { + HBITMAP hbmHeader; + LPCSTR pszbmHeader; + } + } +} +alias PROPSHEETHEADERA* LPPROPSHEETHEADERA; +alias const(PROPSHEETHEADERA)* LPCPROPSHEETHEADERA; + +struct PROPSHEETHEADERW { + DWORD dwSize = PROPSHEETHEADERW.sizeof; + DWORD dwFlags; + HWND hwndParent; + HINSTANCE hInstance; + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszCaption; + UINT nPages; + union { + UINT nStartPage; + LPCWSTR pStartPage; + } + union { + LPCPROPSHEETPAGEW ppsp; + HPROPSHEETPAGE* phpage; + } + PFNPROPSHEETCALLBACK pfnCallback; + static if (_WIN32_IE >= 0x400) { + union { + HBITMAP hbmWatermark; + LPCWSTR pszbmWatermark; + } + HPALETTE hplWatermark; + union { + HBITMAP hbmHeader; + LPCWSTR pszbmHeader; + } + } +} +alias PROPSHEETHEADERW* LPPROPSHEETHEADERW; +alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW; + +alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; +alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) + LPFNADDPROPSHEETPAGES; + +struct PSHNOTIFY { + NMHDR hdr; + LPARAM lParam; +} +alias PSHNOTIFY* LPPSHNOTIFY; + +extern (Windows) { + HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA); + HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW); + BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); + int PropertySheetA(LPCPROPSHEETHEADERA); + int PropertySheetW(LPCPROPSHEETHEADERW); +} + +version (Unicode) { + alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; + alias PROPSHEETPAGEW PROPSHEETPAGE; + alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; + alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; + alias PROPSHEETHEADERW PROPSHEETHEADER; + alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; + alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; + alias PSM_SETTITLEW PSM_SETTITLE; + alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; + alias CreatePropertySheetPageW CreatePropertySheetPage; + alias PropertySheetW PropertySheet; +} else { + alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; + alias PROPSHEETPAGEA PROPSHEETPAGE; + alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; + alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; + alias PROPSHEETHEADERA PROPSHEETHEADER; + alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; + alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; + alias PSM_SETTITLEA PSM_SETTITLE; + alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; + alias CreatePropertySheetPageA CreatePropertySheetPage; + alias PropertySheetA PropertySheet; +} + +BOOL PropSheet_SetCurSel(HWND hPropSheetDlg, HPROPSHEETPAGE hpage, + HPROPSHEETPAGE index) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL, + cast(WPARAM) index, cast(LPARAM) hpage); +} + +VOID PropSheet_RemovePage(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) { + SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage); +} + +BOOL PropSheet_AddPage(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE, + 0, cast(LPARAM) hpage); +} + +VOID PropSheet_Changed(HWND hPropSheetDlg, HWND hwndPage) { + SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0); +} + +VOID PropSheet_RestartWindows(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0); +} + +VOID PropSheet_RebootSystem(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0); +} + +VOID PropSheet_CancelToClose(HWND hPropSheetDlg) { + SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0); +} + +int PropSheet_QuerySiblings(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) { + return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2); +} + +VOID PropSheet_UnChanged(HWND hPropSheetDlg, HWND hwndPage) { + SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0); +} + +BOOL PropSheet_Apply(HWND hPropSheetDlg) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0); +} + +VOID PropSheet_SetTitle(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) { + SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText); +} + +VOID PropSheet_SetWizButtons(HWND hPropSheetDlg, DWORD dwFlags) { + PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags); +} + +BOOL PropSheet_PressButton(HWND hPropSheetDlg, int iButton) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0); +} + +BOOL PropSheet_SetCurSelByID(HWND hPropSheetDlg, int id) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id); +} + +VOID PropSheet_SetFinishText(HWND hPropSheetDlg, LPTSTR lpszText) { + SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText); +} + +HWND PropSheet_GetTabControl(HWND hPropSheetDlg) { + return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0); +} + +BOOL PropSheet_IsDialogMessage(HWND hDlg, LPMSG pMsg) { + return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE, + 0, cast(LPARAM) pMsg); +} + +HWND PropSheet_GetCurrentPageHwnd(HWND hDlg) { + return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0); +} + +BOOL PropSheet_InsertPage(HWND hPropSheetDlg, WPARAM wInsertAfter, + HPROPSHEETPAGE hpage) { + return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE, + wInsertAfter, cast(LPARAM) hpage); +} Index: src/win32/psapi.d ================================================================== --- src/win32/psapi.d +++ src/win32/psapi.d @@ -1,158 +1,158 @@ -/***********************************************************************\ -* psapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -/* Comment from MinGW - * Process status API (PSAPI) - * http://windowssdk.msdn.microsoft.com/library/ms684884.aspx - */ - -module win32.psapi; - -private import win32.w32api; -private import win32.winbase; -private import win32.windef; - -struct MODULEINFO { - LPVOID lpBaseOfDll; - DWORD SizeOfImage; - LPVOID EntryPoint; -} -alias MODULEINFO* LPMODULEINFO; - -struct PSAPI_WS_WATCH_INFORMATION { - LPVOID FaultingPc; - LPVOID FaultingVa; -} -alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION; - -struct PSAPI_WS_WATCH_INFORMATION_EX { - PSAPI_WS_WATCH_INFORMATION BasicInfo; - ULONG_PTR FaultingThreadId; - ULONG_PTR Flags; -} -alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX; - -struct PROCESS_MEMORY_COUNTERS { - DWORD cb; - DWORD PageFaultCount; - DWORD PeakWorkingSetSize; - DWORD WorkingSetSize; - DWORD QuotaPeakPagedPoolUsage; - DWORD QuotaPagedPoolUsage; - DWORD QuotaPeakNonPagedPoolUsage; - DWORD QuotaNonPagedPoolUsage; - DWORD PagefileUsage; - DWORD PeakPagefileUsage; -} -alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS; - -struct PERFORMANCE_INFORMATION { - DWORD cb; - SIZE_T CommitTotal; - SIZE_T CommitLimit; - SIZE_T CommitPeak; - SIZE_T PhysicalTotal; - SIZE_T PhysicalAvailable; - SIZE_T SystemCache; - SIZE_T KernelTotal; - SIZE_T KernelPaged; - SIZE_T KernelNonpaged; - SIZE_T PageSize; - DWORD HandleCount; - DWORD ProcessCount; - DWORD ThreadCount; -} -alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION; - -struct ENUM_PAGE_FILE_INFORMATION { - DWORD cb; - DWORD Reserved; - SIZE_T TotalSize; - SIZE_T TotalInUse; - SIZE_T PeakUsage; -} -alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION; - -/* application-defined callback function used with the EnumPageFiles() - * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */ -version (Unicode) { - alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) - PENUM_PAGE_FILE_CALLBACK; -} else { - alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) - PENUM_PAGE_FILE_CALLBACK; -} - -// Grouped by application, not in alphabetical order. -extern (Windows) { - /* Process Information - * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */ - BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */ - DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ - DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ - - /* Module Information - * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */ - BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD); - BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */ - DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD); - DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD); - DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD); - DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD); - BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); - - /* Device Driver Information - * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */ - BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD); - DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD); - DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD); - DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD); - DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD); - - /* Process Memory Usage Information - * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */ - BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD); - - /* Working Set Information - * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */ - BOOL EmptyWorkingSet(HANDLE); - BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD); - BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */ - BOOL InitializeProcessForWsWatch(HANDLE); - BOOL QueryWorkingSet(HANDLE, PVOID, DWORD); - BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD); - - /* Memory-Mapped File Information - * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */ - DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD); - DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD); - - /* Resources Information */ - BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */ - BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ - BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ -} - -version (Unicode) { - alias GetModuleBaseNameW GetModuleBaseName; - alias GetModuleFileNameExW GetModuleFileNameEx; - alias GetMappedFileNameW GetMappedFileName; - alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName; - alias GetDeviceDriverFileNameW GetDeviceDriverFileName; - alias EnumPageFilesW EnumPageFiles; - alias GetProcessImageFileNameW GetProcessImageFileName; -} else { - alias GetModuleBaseNameA GetModuleBaseName; - alias GetModuleFileNameExA GetModuleFileNameEx; - alias GetMappedFileNameA GetMappedFileName; - alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName; - alias GetDeviceDriverFileNameA GetDeviceDriverFileName; - alias EnumPageFilesA EnumPageFiles; - alias GetProcessImageFileNameA GetProcessImageFileName; -} +/***********************************************************************\ +* psapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +/* Comment from MinGW + * Process status API (PSAPI) + * http://windowssdk.msdn.microsoft.com/library/ms684884.aspx + */ + +module win32.psapi; + +private import win32.w32api; +private import win32.winbase; +private import win32.windef; + +struct MODULEINFO { + LPVOID lpBaseOfDll; + DWORD SizeOfImage; + LPVOID EntryPoint; +} +alias MODULEINFO* LPMODULEINFO; + +struct PSAPI_WS_WATCH_INFORMATION { + LPVOID FaultingPc; + LPVOID FaultingVa; +} +alias PSAPI_WS_WATCH_INFORMATION* PPSAPI_WS_WATCH_INFORMATION; + +struct PSAPI_WS_WATCH_INFORMATION_EX { + PSAPI_WS_WATCH_INFORMATION BasicInfo; + ULONG_PTR FaultingThreadId; + ULONG_PTR Flags; +} +alias PSAPI_WS_WATCH_INFORMATION_EX* PPSAPI_WS_WATCH_INFORMATION_EX; + +struct PROCESS_MEMORY_COUNTERS { + DWORD cb; + DWORD PageFaultCount; + DWORD PeakWorkingSetSize; + DWORD WorkingSetSize; + DWORD QuotaPeakPagedPoolUsage; + DWORD QuotaPagedPoolUsage; + DWORD QuotaPeakNonPagedPoolUsage; + DWORD QuotaNonPagedPoolUsage; + DWORD PagefileUsage; + DWORD PeakPagefileUsage; +} +alias PROCESS_MEMORY_COUNTERS* PPROCESS_MEMORY_COUNTERS; + +struct PERFORMANCE_INFORMATION { + DWORD cb; + SIZE_T CommitTotal; + SIZE_T CommitLimit; + SIZE_T CommitPeak; + SIZE_T PhysicalTotal; + SIZE_T PhysicalAvailable; + SIZE_T SystemCache; + SIZE_T KernelTotal; + SIZE_T KernelPaged; + SIZE_T KernelNonpaged; + SIZE_T PageSize; + DWORD HandleCount; + DWORD ProcessCount; + DWORD ThreadCount; +} +alias PERFORMANCE_INFORMATION* PPERFORMANCE_INFORMATION; + +struct ENUM_PAGE_FILE_INFORMATION { + DWORD cb; + DWORD Reserved; + SIZE_T TotalSize; + SIZE_T TotalInUse; + SIZE_T PeakUsage; +} +alias ENUM_PAGE_FILE_INFORMATION* PENUM_PAGE_FILE_INFORMATION; + +/* application-defined callback function used with the EnumPageFiles() + * http://windowssdk.msdn.microsoft.com/library/ms682627.aspx */ +version (Unicode) { + alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR) + PENUM_PAGE_FILE_CALLBACK; +} else { + alias BOOL function(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR) + PENUM_PAGE_FILE_CALLBACK; +} + +// Grouped by application, not in alphabetical order. +extern (Windows) { + /* Process Information + * http://windowssdk.msdn.microsoft.com/library/ms684870.aspx */ + BOOL EnumProcesses(DWORD*, DWORD, DWORD*); /* NT/2000/XP/Server2003/Vista/Longhorn */ + DWORD GetProcessImageFileNameA(HANDLE, LPSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ + DWORD GetProcessImageFileNameW(HANDLE, LPWSTR, DWORD); /* XP/Server2003/Vista/Longhorn */ + + /* Module Information + * http://windowssdk.msdn.microsoft.com/library/ms684232.aspx */ + BOOL EnumProcessModules(HANDLE, HMODULE*, DWORD, LPDWORD); + BOOL EnumProcessModulesEx(HANDLE, HMODULE*, DWORD, LPDWORD, DWORD); /* Vista/Longhorn */ + DWORD GetModuleBaseNameA(HANDLE, HMODULE, LPSTR, DWORD); + DWORD GetModuleBaseNameW(HANDLE, HMODULE, LPWSTR, DWORD); + DWORD GetModuleFileNameExA(HANDLE, HMODULE, LPSTR, DWORD); + DWORD GetModuleFileNameExW(HANDLE, HMODULE, LPWSTR, DWORD); + BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); + + /* Device Driver Information + * http://windowssdk.msdn.microsoft.com/library/ms682578.aspx */ + BOOL EnumDeviceDrivers(LPVOID*, DWORD, LPDWORD); + DWORD GetDeviceDriverBaseNameA(LPVOID, LPSTR, DWORD); + DWORD GetDeviceDriverBaseNameW(LPVOID, LPWSTR, DWORD); + DWORD GetDeviceDriverFileNameA(LPVOID, LPSTR, DWORD); + DWORD GetDeviceDriverFileNameW(LPVOID, LPWSTR, DWORD); + + /* Process Memory Usage Information + * http://windowssdk.msdn.microsoft.com/library/ms684879.aspx */ + BOOL GetProcessMemoryInfo(HANDLE, PPROCESS_MEMORY_COUNTERS, DWORD); + + /* Working Set Information + * http://windowssdk.msdn.microsoft.com/library/ms687398.aspx */ + BOOL EmptyWorkingSet(HANDLE); + BOOL GetWsChanges(HANDLE, PPSAPI_WS_WATCH_INFORMATION, DWORD); + BOOL GetWsChangesEx(HANDLE, PPSAPI_WS_WATCH_INFORMATION_EX, DWORD); /* Vista/Longhorn */ + BOOL InitializeProcessForWsWatch(HANDLE); + BOOL QueryWorkingSet(HANDLE, PVOID, DWORD); + BOOL QueryWorkingSetEx(HANDLE, PVOID, DWORD); + + /* Memory-Mapped File Information + * http://windowssdk.msdn.microsoft.com/library/ms684212.aspx */ + DWORD GetMappedFileNameW(HANDLE, LPVOID, LPWSTR, DWORD); + DWORD GetMappedFileNameA(HANDLE, LPVOID, LPSTR, DWORD); + + /* Resources Information */ + BOOL GetPerformanceInfo(PPERFORMANCE_INFORMATION, DWORD); /* XP/Server2003/Vista/Longhorn */ + BOOL EnumPageFilesW(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ + BOOL EnumPageFilesA(PENUM_PAGE_FILE_CALLBACK, LPVOID); /* 2000/XP/Server2003/Vista/Longhorn */ +} + +version (Unicode) { + alias GetModuleBaseNameW GetModuleBaseName; + alias GetModuleFileNameExW GetModuleFileNameEx; + alias GetMappedFileNameW GetMappedFileName; + alias GetDeviceDriverBaseNameW GetDeviceDriverBaseName; + alias GetDeviceDriverFileNameW GetDeviceDriverFileName; + alias EnumPageFilesW EnumPageFiles; + alias GetProcessImageFileNameW GetProcessImageFileName; +} else { + alias GetModuleBaseNameA GetModuleBaseName; + alias GetModuleFileNameExA GetModuleFileNameEx; + alias GetMappedFileNameA GetMappedFileName; + alias GetDeviceDriverBaseNameA GetDeviceDriverBaseName; + alias GetDeviceDriverFileNameA GetDeviceDriverFileName; + alias EnumPageFilesA EnumPageFiles; + alias GetProcessImageFileNameA GetProcessImageFileName; +} Index: src/win32/rapi.d ================================================================== --- src/win32/rapi.d +++ src/win32/rapi.d @@ -1,61 +1,54 @@ -/***********************************************************************\ -* rapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rapi; - -/* Comment from MinGW - NOTE: This strictly does not belong in the Win32 API since it's - really part of Platform SDK. - */ - -private import win32.winbase, win32.windef; - -struct IRAPIStream { - IRAPIStreamVtbl* lpVtbl; -} - -enum RAPISTREAMFLAG { - STREAM_TIMEOUT_READ -} - -extern (Windows) { - alias HRESULT function(IRAPIStream*, RAPISTREAMFLAG, DWORD) _SetRapiStat; - alias HRESULT function(IRAPIStream*, RAPISTREAMFLAG, DWORD*) _GetRapiStat; -} - -struct IRAPIStreamVtbl { - _SetRapiStat SetRapiStat; - _GetRapiStat GetRapiStat; -} - -// FIXME: what's this? -//typedef HRESULT(STDAPICALLTYPE RAPIEXT)(DWORD, BYTE, DWORD, BYTE, IRAPIStream*); - -struct RAPIINIT { - DWORD cbSize = this.sizeof; - HANDLE heRapiInit; - HRESULT hrRapiInit; -} - -extern (Windows) { - HRESULT CeRapiInit(); - HRESULT CeRapiInitEx(RAPIINIT*); - BOOL CeCreateProcess(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, - LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPWSTR, LPSTARTUPINFO, - LPPROCESS_INFORMATION); - HRESULT CeRapiUninit(); - BOOL CeWriteFile(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED); - HANDLE CeCreateFile(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, - DWORD, HANDLE); - BOOL CeCreateDirectory(LPCWSTR, LPSECURITY_ATTRIBUTES); - DWORD CeGetLastError(); - BOOL CeGetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); - BOOL CeCloseHandle(HANDLE); -} +/***********************************************************************\ +* rapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rapi; + +/* Comment from MinGW + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. + */ + +private import win32.winbase, win32.windef; + +extern (Windows): + +enum RAPISTREAMFLAG +{ + STREAM_TIMEOUT_READ +} + +interface IRAPIStream +{ + HRESULT SetRapiStat(RAPISTREAMFLAG, DWORD); + HRESULT GetRapiStat(RAPISTREAMFLAG, DWORD*); +} + +alias HRESULT function(DWORD, BYTE, DWORD, BYTE, IRAPIStream) RAPIEXT; + +struct RAPIINIT +{ + DWORD cbSize = this.sizeof; + HANDLE heRapiInit; + HRESULT hrRapiInit; +} + +HRESULT CeRapiInit(); +HRESULT CeRapiInitEx(RAPIINIT*); +BOOL CeCreateProcess(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, + LPSECURITY_ATTRIBUTES, BOOL, DWORD, LPVOID, LPWSTR, LPSTARTUPINFO, + LPPROCESS_INFORMATION); +HRESULT CeRapiUninit(); +BOOL CeWriteFile(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED); +HANDLE CeCreateFile(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, + DWORD, HANDLE); +BOOL CeCreateDirectory(LPCWSTR, LPSECURITY_ATTRIBUTES); +DWORD CeGetLastError(); +BOOL CeGetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); +BOOL CeCloseHandle(HANDLE); Index: src/win32/ras.d ================================================================== --- src/win32/ras.d +++ src/win32/ras.d @@ -1,1029 +1,1025 @@ -/***********************************************************************\ -* ras.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.ras; -pragma(lib, "rasapi32.lib"); - -private import win32.basetyps, win32.lmcons, win32.w32api, win32.windef; - -align(4): - -const RAS_MaxDeviceType = 16; -const RAS_MaxPhoneNumber = 128; -const RAS_MaxIpAddress = 15; -const RAS_MaxIpxAddress = 21; -const RAS_MaxEntryName = 256; -const RAS_MaxDeviceName = 128; -const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber; -const RAS_MaxAreaCode = 10; -const RAS_MaxPadType = 32; -const RAS_MaxX25Address = 200; -const RAS_MaxFacilities = 200; -const RAS_MaxUserData = 200; -const RAS_MaxReplyMessage = 1024; - -const RDEOPT_UsePrefixSuffix = 0x00000001; -const RDEOPT_PausedStates = 0x00000002; -const RDEOPT_IgnoreModemSpeaker = 0x00000004; -const RDEOPT_SetModemSpeaker = 0x00000008; -const RDEOPT_IgnoreSoftwareCompression = 0x00000010; -const RDEOPT_SetSoftwareCompression = 0x00000020; -const RDEOPT_DisableConnectedUI = 0x00000040; -const RDEOPT_DisableReconnectUI = 0x00000080; -const RDEOPT_DisableReconnect = 0x00000100; -const RDEOPT_NoUser = 0x00000200; -const RDEOPT_PauseOnScript = 0x00000400; -const RDEOPT_Router = 0x00000800; - -const REN_User = 0x00000000; -const REN_AllUsers = 0x00000001; -const VS_Default = 0; -const VS_PptpOnly = 1; -const VS_PptpFirst = 2; -const VS_L2tpOnly = 3; -const VS_L2tpFirst = 4; - -const RASDIALEVENT = "RasDialEvent"; -const WM_RASDIALEVENT = 0xCCCD; - -const RASEO_UseCountryAndAreaCodes = 0x00000001; -const RASEO_SpecificIpAddr = 0x00000002; -const RASEO_SpecificNameServers = 0x00000004; -const RASEO_IpHeaderCompression = 0x00000008; -const RASEO_RemoteDefaultGateway = 0x00000010; -const RASEO_DisableLcpExtensions = 0x00000020; -const RASEO_TerminalBeforeDial = 0x00000040; -const RASEO_TerminalAfterDial = 0x00000080; -const RASEO_ModemLights = 0x00000100; -const RASEO_SwCompression = 0x00000200; -const RASEO_RequireEncryptedPw = 0x00000400; -const RASEO_RequireMsEncryptedPw = 0x00000800; -const RASEO_RequireDataEncryption = 0x00001000; -const RASEO_NetworkLogon = 0x00002000; -const RASEO_UseLogonCredentials = 0x00004000; -const RASEO_PromoteAlternates = 0x00008000; -const RASNP_NetBEUI = 0x00000001; -const RASNP_Ipx = 0x00000002; -const RASNP_Ip = 0x00000004; -const RASFP_Ppp = 0x00000001; -const RASFP_Slip = 0x00000002; -const RASFP_Ras = 0x00000004; - -const TCHAR[] - RASDT_Modem = "modem", - RASDT_Isdn = "isdn", - RASDT_X25 = "x25", - RASDT_Vpn = "vpn", - RASDT_Pad = "pad", - RASDT_Generic = "GENERIC", - RASDT_Serial = "SERIAL", - RASDT_FrameRelay = "FRAMERELAY", - RASDT_Atm = "ATM", - RASDT_Sonet = "SONET", - RASDT_SW56 = "SW56", - RASDT_Irda = "IRDA", - RASDT_Parallel = "PARALLEL"; - -const RASET_Phone = 1; -const RASET_Vpn = 2; -const RASET_Direct = 3; -const RASET_Internet = 4; - -static if (WINVER >= 0x0401) { - const RASEO_SecureLocalFiles = 0x00010000; - const RASCN_Connection = 0x00000001; - const RASCN_Disconnection = 0x00000002; - const RASCN_BandwidthAdded = 0x00000004; - const RASCN_BandwidthRemoved = 0x00000008; - const RASEDM_DialAll = 1; - const RASEDM_DialAsNeeded = 2; - const RASIDS_Disabled = 0xffffffff; - const RASIDS_UseGlobalValue = 0; - const RASADFLG_PositionDlg = 0x00000001; - const RASCM_UserName = 0x00000001; - const RASCM_Password = 0x00000002; - const RASCM_Domain = 0x00000004; - const RASADP_DisableConnectionQuery = 0; - const RASADP_LoginSessionDisable = 1; - const RASADP_SavedAddressesLimit = 2; - const RASADP_FailedConnectionTimeout = 3; - const RASADP_ConnectionQueryTimeout = 4; -} -static if (WINVER >= 0x0500) { - const RDEOPT_CustomDial = 0x00001000; - const RASLCPAP_PAP = 0xC023; - const RASLCPAP_SPAP = 0xC027; - const RASLCPAP_CHAP = 0xC223; - const RASLCPAP_EAP = 0xC227; - const RASLCPAD_CHAP_MD5 = 0x05; - const RASLCPAD_CHAP_MS = 0x80; - const RASLCPAD_CHAP_MSV2 = 0x81; - const RASLCPO_PFC = 0x00000001; - const RASLCPO_ACFC = 0x00000002; - const RASLCPO_SSHF = 0x00000004; - const RASLCPO_DES_56 = 0x00000008; - const RASLCPO_3_DES = 0x00000010; - - const RASCCPCA_MPPC = 0x00000006; - const RASCCPCA_STAC = 0x00000005; - - const RASCCPO_Compression = 0x00000001; - const RASCCPO_HistoryLess = 0x00000002; - const RASCCPO_Encryption56bit = 0x00000010; - const RASCCPO_Encryption40bit = 0x00000020; - const RASCCPO_Encryption128bit = 0x00000040; - - const RASEO_RequireEAP = 0x00020000; - const RASEO_RequirePAP = 0x00040000; - const RASEO_RequireSPAP = 0x00080000; - const RASEO_Custom = 0x00100000; - const RASEO_PreviewPhoneNumber = 0x00200000; - const RASEO_SharedPhoneNumbers = 0x00800000; - const RASEO_PreviewUserPw = 0x01000000; - const RASEO_PreviewDomain = 0x02000000; - const RASEO_ShowDialingProgress = 0x04000000; - const RASEO_RequireCHAP = 0x08000000; - const RASEO_RequireMsCHAP = 0x10000000; - const RASEO_RequireMsCHAP2 = 0x20000000; - const RASEO_RequireW95MSCHAP = 0x40000000; - const RASEO_CustomScript = 0x80000000; - - const RASIPO_VJ = 0x00000001; - const RCD_SingleUser = 0; - const RCD_AllUsers = 0x00000001; - const RCD_Eap = 0x00000002; - const RASEAPF_NonInteractive = 0x00000002; - const RASEAPF_Logon = 0x00000004; - const RASEAPF_Preview = 0x00000008; - const ET_40Bit = 1; - const ET_128Bit = 2; - const ET_None = 0; - const ET_Require = 1; - const ET_RequireMax = 2; - const ET_Optional = 3; -} - -const RASCS_PAUSED = 0x1000; -const RASCS_DONE = 0x2000; -enum RASCONNSTATE { - 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_SubEntryConnected, - RASCS_SubEntryDisconnected, - RASCS_Interactive = RASCS_PAUSED, - RASCS_RetryAuthentication, - RASCS_CallbackSetByCaller, - RASCS_PasswordExpired, -// static if (WINVER >= 0x0500) { - RASCS_InvokeEapUI, -// } - RASCS_Connected = RASCS_DONE, - RASCS_Disconnected -} -alias RASCONNSTATE* LPRASCONNSTATE; - -enum RASPROJECTION { - RASP_Amb = 0x10000, - RASP_PppNbf = 0x803F, - RASP_PppIpx = 0x802B, - RASP_PppIp = 0x8021, -// static if (WINVER >= 0x0500) { - RASP_PppCcp = 0x80FD, -// } - RASP_PppLcp = 0xC021, - RASP_Slip = 0x20000 -} -alias RASPROJECTION* LPRASPROJECTION; - -alias HANDLE HRASCONN; -alias HRASCONN* LPHRASCONN; - -struct RASCONNW { - DWORD dwSize; - HRASCONN hrasconn; - WCHAR szEntryName[RAS_MaxEntryName + 1]; - static if (WINVER >= 0x0400) { - WCHAR szDeviceType[RAS_MaxDeviceType + 1]; - WCHAR szDeviceName[RAS_MaxDeviceName + 1]; - } - static if (WINVER >= 0x0401) { - WCHAR szPhonebook[MAX_PATH]; - DWORD dwSubEntry; - } - static if (WINVER >= 0x0500) { - GUID guidEntry; - } - static if (WINVER >= 0x0501) { - DWORD dwFlags; - LUID luid; - } -} -alias RASCONNW* LPRASCONNW; - -struct RASCONNA { - DWORD dwSize; - HRASCONN hrasconn; - CHAR szEntryName[RAS_MaxEntryName + 1]; - static if (WINVER >= 0x0400) { - CHAR szDeviceType[RAS_MaxDeviceType + 1]; - CHAR szDeviceName[RAS_MaxDeviceName + 1]; - } - static if (WINVER >= 0x0401) { - CHAR szPhonebook[MAX_PATH]; - DWORD dwSubEntry; - } - static if (WINVER >= 0x0500) { - GUID guidEntry; - } - static if (WINVER >= 0x0501) { - DWORD dwFlags; - LUID luid; - } -} -alias RASCONNA* LPRASCONNA; - -struct RASCONNSTATUSW { - DWORD dwSize; - RASCONNSTATE rasconnstate; - DWORD dwError; - WCHAR szDeviceType[RAS_MaxDeviceType + 1]; - WCHAR szDeviceName[RAS_MaxDeviceName + 1]; - static if (WINVER >= 0x0401) { - WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; - } -} -alias RASCONNSTATUSW* LPRASCONNSTATUSW; - -struct RASCONNSTATUSA { - DWORD dwSize; - RASCONNSTATE rasconnstate; - DWORD dwError; - CHAR szDeviceType[RAS_MaxDeviceType + 1]; - CHAR szDeviceName[RAS_MaxDeviceName + 1]; - static if (WINVER >= 0x0401) { - CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; - } -} -alias RASCONNSTATUSA* LPRASCONNSTATUSA; - -struct RASDIALPARAMSW { - DWORD dwSize; - WCHAR szEntryName[RAS_MaxEntryName + 1]; - WCHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; - WCHAR szCallbackNumber[RAS_MaxCallbackNumber + 1]; - WCHAR szUserName[UNLEN + 1]; - WCHAR szPassword[PWLEN + 1]; - WCHAR szDomain[DNLEN + 1]; - static if (WINVER >= 0x0401) { - DWORD dwSubEntry; - ULONG_PTR dwCallbackId; - } -} -alias RASDIALPARAMSW* LPRASDIALPARAMSW; - -struct RASDIALPARAMSA{ - DWORD dwSize; - CHAR szEntryName[RAS_MaxEntryName + 1]; - CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1]; - CHAR szCallbackNumber[RAS_MaxCallbackNumber + 1]; - CHAR szUserName[UNLEN + 1]; - CHAR szPassword[PWLEN + 1]; - CHAR szDomain[DNLEN + 1]; - static if (WINVER >= 0x0401) { - DWORD dwSubEntry; - ULONG_PTR dwCallbackId; - } -} -alias RASDIALPARAMSA* LPRASDIALPARAMSA; - -static if (WINVER >= 0x0500) { - struct RASEAPINFO { - DWORD dwSizeofEapInfo; - BYTE *pbEapInfo; - } -} - -struct RASDIALEXTENSIONS { - DWORD dwSize; - DWORD dwfOptions; - HWND hwndParent; - ULONG_PTR reserved; - static if (WINVER >= 0x0500) { - ULONG_PTR reserved1; - RASEAPINFO RasEapInfo; - } -} -alias RASDIALEXTENSIONS* LPRASDIALEXTENSIONS; - -struct RASENTRYNAMEW { - DWORD dwSize; - WCHAR szEntryName[RAS_MaxEntryName + 1]; - static if (WINVER >= 0x0500) { - DWORD dwFlags; - WCHAR szPhonebookPath[MAX_PATH + 1]; - } -} -alias RASENTRYNAMEW* LPRASENTRYNAMEW; - -struct RASENTRYNAMEA{ - DWORD dwSize; - CHAR szEntryName[RAS_MaxEntryName + 1]; - static if (WINVER >= 0x0500) { - DWORD dwFlags; - CHAR szPhonebookPath[MAX_PATH + 1]; - } -} -alias RASENTRYNAMEA* LPRASENTRYNAMEA; - -struct RASAMBW{ - DWORD dwSize; - DWORD dwError; - WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1]; - BYTE bLana; -} -alias RASAMBW* LPRASAMBW; - -struct RASAMBA{ - DWORD dwSize; - DWORD dwError; - CHAR szNetBiosError[NETBIOS_NAME_LEN + 1]; - BYTE bLana; -} -alias RASAMBA* LPRASAMBA; - -struct RASPPPNBFW{ - DWORD dwSize; - DWORD dwError; - DWORD dwNetBiosError; - WCHAR szNetBiosError[NETBIOS_NAME_LEN + 1]; - WCHAR szWorkstationName[NETBIOS_NAME_LEN + 1]; - BYTE bLana; -} -alias RASPPPNBFW* LPRASPPPNBFW; - -struct RASPPPNBFA{ - DWORD dwSize; - DWORD dwError; - DWORD dwNetBiosError; - CHAR szNetBiosError[NETBIOS_NAME_LEN + 1]; - CHAR szWorkstationName[NETBIOS_NAME_LEN + 1]; - BYTE bLana; -} -alias RASPPPNBFA* LPRASPPPNBFA; - -struct RASPPPIPXW { - DWORD dwSize; - DWORD dwError; - WCHAR szIpxAddress[RAS_MaxIpxAddress + 1]; -} -alias RASPPPIPXW* LPRASPPPIPXW; - -struct RASPPPIPXA { - DWORD dwSize; - DWORD dwError; - CHAR szIpxAddress[RAS_MaxIpxAddress + 1]; -} -alias RASPPPIPXA* LPRASPPPIPXA; - -struct RASPPPIPW{ - DWORD dwSize; - DWORD dwError; - WCHAR szIpAddress[RAS_MaxIpAddress + 1]; - //#ifndef WINNT35COMPATIBLE - WCHAR szServerIpAddress[RAS_MaxIpAddress + 1]; - //#endif - static if (WINVER >= 0x0500) { - DWORD dwOptions; - DWORD dwServerOptions; - } -} -alias RASPPPIPW* LPRASPPPIPW; - -struct RASPPPIPA{ - DWORD dwSize; - DWORD dwError; - CHAR szIpAddress[RAS_MaxIpAddress + 1]; - //#ifndef WINNT35COMPATIBLE - CHAR szServerIpAddress[RAS_MaxIpAddress + 1]; - //#endif - static if (WINVER >= 0x0500) { - DWORD dwOptions; - DWORD dwServerOptions; - } -} -alias RASPPPIPA* LPRASPPPIPA; - -struct RASPPPLCPW{ - DWORD dwSize; - BOOL fBundled; - static if (WINVER >= 0x0500) { - DWORD dwError; - DWORD dwAuthenticationProtocol; - DWORD dwAuthenticationData; - DWORD dwEapTypeId; - DWORD dwServerAuthenticationProtocol; - DWORD dwServerAuthenticationData; - DWORD dwServerEapTypeId; - BOOL fMultilink; - DWORD dwTerminateReason; - DWORD dwServerTerminateReason; - WCHAR szReplyMessage[RAS_MaxReplyMessage]; - DWORD dwOptions; - DWORD dwServerOptions; - } -} -alias RASPPPLCPW* LPRASPPPLCPW; - -struct RASPPPLCPA{ - DWORD dwSize; - BOOL fBundled; - static if (WINVER >= 0x0500) { - DWORD dwError; - DWORD dwAuthenticationProtocol; - DWORD dwAuthenticationData; - DWORD dwEapTypeId; - DWORD dwServerAuthenticationProtocol; - DWORD dwServerAuthenticationData; - DWORD dwServerEapTypeId; - BOOL fMultilink; - DWORD dwTerminateReason; - DWORD dwServerTerminateReason; - CHAR szReplyMessage[RAS_MaxReplyMessage]; - DWORD dwOptions; - DWORD dwServerOptions; - } -} -alias RASPPPLCPA* LPRASPPPLCPA; - -struct RASSLIPW{ - DWORD dwSize; - DWORD dwError; - WCHAR szIpAddress[RAS_MaxIpAddress + 1]; -} -alias RASSLIPW* LPRASSLIPW; - -struct RASSLIPA{ - DWORD dwSize; - DWORD dwError; - CHAR szIpAddress[RAS_MaxIpAddress + 1]; -} -alias RASSLIPA* LPRASSLIPA; - -struct RASDEVINFOW{ - DWORD dwSize; - WCHAR szDeviceType[RAS_MaxDeviceType + 1]; - WCHAR szDeviceName[RAS_MaxDeviceName + 1]; -} -alias RASDEVINFOW* LPRASDEVINFOW; - -struct RASDEVINFOA{ - DWORD dwSize; - CHAR szDeviceType[RAS_MaxDeviceType + 1]; - CHAR szDeviceName[RAS_MaxDeviceName + 1]; -} -alias RASDEVINFOA* LPRASDEVINFOA; - -struct RASCTRYINFO { - DWORD dwSize; - DWORD dwCountryID; - DWORD dwNextCountryID; - DWORD dwCountryCode; - DWORD dwCountryNameOffset; -} -alias RASCTRYINFO* LPRASCTRYINFO; -alias RASCTRYINFO RASCTRYINFOW, RASCTRYINFOA; -alias RASCTRYINFOW* LPRASCTRYINFOW; -alias RASCTRYINFOA* LPRASCTRYINFOA; - -struct RASIPADDR { - BYTE a; - BYTE b; - BYTE c; - BYTE d; -} - -struct RASENTRYW { - DWORD dwSize; - DWORD dwfOptions; - DWORD dwCountryID; - DWORD dwCountryCode; - WCHAR szAreaCode[RAS_MaxAreaCode + 1]; - WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; - DWORD dwAlternateOffset; - RASIPADDR ipaddr; - RASIPADDR ipaddrDns; - RASIPADDR ipaddrDnsAlt; - RASIPADDR ipaddrWins; - RASIPADDR ipaddrWinsAlt; - DWORD dwFrameSize; - DWORD dwfNetProtocols; - DWORD dwFramingProtocol; - WCHAR szScript[MAX_PATH]; - WCHAR szAutodialDll[MAX_PATH]; - WCHAR szAutodialFunc[MAX_PATH]; - WCHAR szDeviceType[RAS_MaxDeviceType + 1]; - WCHAR szDeviceName[RAS_MaxDeviceName + 1]; - WCHAR szX25PadType[RAS_MaxPadType + 1]; - WCHAR szX25Address[RAS_MaxX25Address + 1]; - WCHAR szX25Facilities[RAS_MaxFacilities + 1]; - WCHAR szX25UserData[RAS_MaxUserData + 1]; - DWORD dwChannels; - DWORD dwReserved1; - DWORD dwReserved2; - static if (WINVER >= 0x0401) { - DWORD dwSubEntries; - DWORD dwDialMode; - DWORD dwDialExtraPercent; - DWORD dwDialExtraSampleSeconds; - DWORD dwHangUpExtraPercent; - DWORD dwHangUpExtraSampleSeconds; - DWORD dwIdleDisconnectSeconds; - } - static if (WINVER >= 0x0500) { - DWORD dwType; - DWORD dwEncryptionType; - DWORD dwCustomAuthKey; - GUID guidId; - WCHAR szCustomDialDll[MAX_PATH]; - DWORD dwVpnStrategy; - } -} -alias RASENTRYW* LPRASENTRYW; - -struct RASENTRYA { - DWORD dwSize; - DWORD dwfOptions; - DWORD dwCountryID; - DWORD dwCountryCode; - CHAR szAreaCode[RAS_MaxAreaCode + 1]; - CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; - DWORD dwAlternateOffset; - RASIPADDR ipaddr; - RASIPADDR ipaddrDns; - RASIPADDR ipaddrDnsAlt; - RASIPADDR ipaddrWins; - RASIPADDR ipaddrWinsAlt; - DWORD dwFrameSize; - DWORD dwfNetProtocols; - DWORD dwFramingProtocol; - CHAR szScript[MAX_PATH]; - CHAR szAutodialDll[MAX_PATH]; - CHAR szAutodialFunc[MAX_PATH]; - CHAR szDeviceType[RAS_MaxDeviceType + 1]; - CHAR szDeviceName[RAS_MaxDeviceName + 1]; - CHAR szX25PadType[RAS_MaxPadType + 1]; - CHAR szX25Address[RAS_MaxX25Address + 1]; - CHAR szX25Facilities[RAS_MaxFacilities + 1]; - CHAR szX25UserData[RAS_MaxUserData + 1]; - DWORD dwChannels; - DWORD dwReserved1; - DWORD dwReserved2; - static if (WINVER >= 0x0401) { - DWORD dwSubEntries; - DWORD dwDialMode; - DWORD dwDialExtraPercent; - DWORD dwDialExtraSampleSeconds; - DWORD dwHangUpExtraPercent; - DWORD dwHangUpExtraSampleSeconds; - DWORD dwIdleDisconnectSeconds; - } - static if (WINVER >= 0x0500) { - DWORD dwType; - DWORD dwEncryptionType; - DWORD dwCustomAuthKey; - GUID guidId; - CHAR szCustomDialDll[MAX_PATH]; - DWORD dwVpnStrategy; - } -} -alias RASENTRYA* LPRASENTRYA; - - -static if (WINVER >= 0x0401) { - struct RASADPARAMS { - DWORD dwSize; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - } - alias RASADPARAMS* LPRASADPARAMS; - - struct RASSUBENTRYW{ - DWORD dwSize; - DWORD dwfFlags; - WCHAR szDeviceType[RAS_MaxDeviceType + 1]; - WCHAR szDeviceName[RAS_MaxDeviceName + 1]; - WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; - DWORD dwAlternateOffset; - } - alias RASSUBENTRYW* LPRASSUBENTRYW; - - struct RASSUBENTRYA{ - DWORD dwSize; - DWORD dwfFlags; - CHAR szDeviceType[RAS_MaxDeviceType + 1]; - CHAR szDeviceName[RAS_MaxDeviceName + 1]; - CHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; - DWORD dwAlternateOffset; - } - alias RASSUBENTRYA* LPRASSUBENTRYA; - - struct RASCREDENTIALSW{ - DWORD dwSize; - DWORD dwMask; - WCHAR szUserName[UNLEN + 1]; - WCHAR szPassword[PWLEN + 1]; - WCHAR szDomain[DNLEN + 1]; - } - alias RASCREDENTIALSW* LPRASCREDENTIALSW; - - struct RASCREDENTIALSA{ - DWORD dwSize; - DWORD dwMask; - CHAR szUserName[UNLEN + 1]; - CHAR szPassword[PWLEN + 1]; - CHAR szDomain[DNLEN + 1]; - } - alias RASCREDENTIALSA* LPRASCREDENTIALSA; - - struct RASAUTODIALENTRYW{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwDialingLocation; - WCHAR szEntry[RAS_MaxEntryName + 1]; - } - alias RASAUTODIALENTRYW* LPRASAUTODIALENTRYW; - - struct RASAUTODIALENTRYA{ - DWORD dwSize; - DWORD dwFlags; - DWORD dwDialingLocation; - CHAR szEntry[RAS_MaxEntryName + 1]; - } - alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA; -} - -static if (WINVER >= 0x0500) { - struct RASPPPCCP{ - DWORD dwSize; - DWORD dwError; - DWORD dwCompressionAlgorithm; - DWORD dwOptions; - DWORD dwServerCompressionAlgorithm; - DWORD dwServerOptions; - } - alias RASPPPCCP* LPRASPPPCCP; - - struct RASEAPUSERIDENTITYW{ - WCHAR szUserName[UNLEN + 1]; - DWORD dwSizeofEapInfo; - BYTE pbEapInfo[1]; - } - alias RASEAPUSERIDENTITYW* LPRASEAPUSERIDENTITYW; - - struct RASEAPUSERIDENTITYA{ - CHAR szUserName[UNLEN + 1]; - DWORD dwSizeofEapInfo; - BYTE pbEapInfo[1]; - } - alias RASEAPUSERIDENTITYA* LPRASEAPUSERIDENTITYA; - - struct RAS_STATS{ - DWORD dwSize; - DWORD dwBytesXmited; - DWORD dwBytesRcved; - DWORD dwFramesXmited; - DWORD dwFramesRcved; - DWORD dwCrcErr; - DWORD dwTimeoutErr; - DWORD dwAlignmentErr; - DWORD dwHardwareOverrunErr; - DWORD dwFramingErr; - DWORD dwBufferOverrunErr; - DWORD dwCompressionRatioIn; - DWORD dwCompressionRatioOut; - DWORD dwBps; - DWORD dwConnectDuration; - } - alias RAS_STATS* PRAS_STATS; -} - - -/* UNICODE typedefs for structures*/ -version (Unicode) { - alias RASCONNW RASCONN; - alias RASENTRYW RASENTRY; - alias RASCONNSTATUSW RASCONNSTATUS; - alias RASDIALPARAMSW RASDIALPARAMS; - alias RASAMBW RASAMB; - alias RASPPPNBFW RASPPPNBF; - alias RASPPPIPXW RASPPPIPX; - alias RASPPPIPW RASPPPIP; - alias RASPPPLCPW RASPPPLCP; - alias RASSLIPW RASSLIP; - alias RASDEVINFOW RASDEVINFO; - alias RASENTRYNAMEW RASENTRYNAME; - - static if (WINVER >= 0x0401) { - alias RASSUBENTRYW RASSUBENTRY; - alias RASCREDENTIALSW RASCREDENTIALS; - alias RASAUTODIALENTRYW RASAUTODIALENTRY; - } - - static if (WINVER >= 0x0500) { - alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY; - } - -} else { // ! defined UNICODE - - alias RASCONNA RASCONN; - alias RASENTRYA RASENTRY; - alias RASCONNSTATUSA RASCONNSTATUS; - alias RASDIALPARAMSA RASDIALPARAMS; - alias RASAMBA RASAMB; - alias RASPPPNBFA RASPPPNBF; - alias RASPPPIPXA RASPPPIPX; - alias RASPPPIPA RASPPPIP; - alias RASPPPLCPA RASPPPLCP; - alias RASSLIPA RASSLIP; - alias RASDEVINFOA RASDEVINFO; - alias RASENTRYNAMEA RASENTRYNAME; - - static if (WINVER >= 0x0401) { - alias RASSUBENTRYA RASSUBENTRY; - alias RASCREDENTIALSA RASCREDENTIALS; - alias RASAUTODIALENTRYA RASAUTODIALENTRY; - } - static if (WINVER >= 0x0500) { - alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY; - } -}// ! UNICODE - - -alias RASCONN* LPRASCONN; -alias RASENTRY* LPRASENTRY; -alias RASCONNSTATUS* LPRASCONNSTATUS; -alias RASDIALPARAMS* LPRASDIALPARAMS; -alias RASAMB* LPRASAM; -alias RASPPPNBF* LPRASPPPNBF; -alias RASPPPIPX* LPRASPPPIPX; -alias RASPPPIP* LPRASPPPIP; -alias RASPPPLCP* LPRASPPPLCP; -alias RASSLIP* LPRASSLIP; -alias RASDEVINFO* LPRASDEVINFO; -alias RASENTRYNAME* LPRASENTRYNAME; - -static if (WINVER >= 0x0401) { - alias RASSUBENTRY* LPRASSUBENTRY; - alias RASCREDENTIALS* LPRASCREDENTIALS; - alias RASAUTODIALENTRY* LPRASAUTODIALENTRY; -} -static if (WINVER >= 0x0500) { - alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY; -} - -/* Callback prototypes */ -deprecated { - alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; -} - -alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; -alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, -DWORD) RASDIALFUNC1; -alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, -RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; - -/* External functions */ -DWORD RasDialA (LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, -DWORD, LPVOID, LPHRASCONN); -DWORD RasDialW (LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, -DWORD, LPVOID, LPHRASCONN); -DWORD RasEnumConnectionsA (LPRASCONNA, LPDWORD, LPDWORD); -DWORD RasEnumConnectionsW (LPRASCONNW, LPDWORD, LPDWORD); -DWORD RasEnumEntriesA (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, -LPDWORD); -DWORD RasEnumEntriesW (LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, -LPDWORD); -DWORD RasGetConnectStatusA (HRASCONN, LPRASCONNSTATUSA); -DWORD RasGetConnectStatusW (HRASCONN, LPRASCONNSTATUSW); -DWORD RasGetErrorStringA (UINT, LPSTR, DWORD); -DWORD RasGetErrorStringW (UINT, LPWSTR, DWORD); -DWORD RasHangUpA (HRASCONN); -DWORD RasHangUpW (HRASCONN); -DWORD RasGetProjectionInfoA (HRASCONN, RASPROJECTION, LPVOID, -LPDWORD); -DWORD RasGetProjectionInfoW (HRASCONN, RASPROJECTION, LPVOID, -LPDWORD); -DWORD RasCreatePhonebookEntryA (HWND, LPCSTR); -DWORD RasCreatePhonebookEntryW (HWND, LPCWSTR); -DWORD RasEditPhonebookEntryA (HWND, LPCSTR, LPCSTR); -DWORD RasEditPhonebookEntryW (HWND, LPCWSTR, LPCWSTR); -DWORD RasSetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, BOOL); -DWORD RasSetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, BOOL); -DWORD RasGetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, LPBOOL); -DWORD RasGetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, LPBOOL); -DWORD RasEnumDevicesA (LPRASDEVINFOA, LPDWORD, LPDWORD); -DWORD RasEnumDevicesW (LPRASDEVINFOW, LPDWORD, LPDWORD); -DWORD RasGetCountryInfoA (LPRASCTRYINFOA, LPDWORD); -DWORD RasGetCountryInfoW (LPRASCTRYINFOW, LPDWORD); -DWORD RasGetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, -LPBYTE, LPDWORD); -DWORD RasGetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, -LPDWORD, LPBYTE, LPDWORD); -DWORD RasSetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, DWORD, -LPBYTE, DWORD); -DWORD RasSetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, -LPBYTE, DWORD); -DWORD RasRenameEntryA (LPCSTR, LPCSTR, LPCSTR); -DWORD RasRenameEntryW (LPCWSTR, LPCWSTR, LPCWSTR); -DWORD RasDeleteEntryA (LPCSTR, LPCSTR); -DWORD RasDeleteEntryW (LPCWSTR, LPCWSTR); -DWORD RasValidateEntryNameA (LPCSTR, LPCSTR); -DWORD RasValidateEntryNameW (LPCWSTR, LPCWSTR); - -static if (WINVER >= 0x0401) { - alias BOOL function (LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; - alias BOOL function (LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; - - DWORD RasGetSubEntryHandleA (HRASCONN, DWORD, LPHRASCONN); - DWORD RasGetSubEntryHandleW (HRASCONN, DWORD, LPHRASCONN); - DWORD RasGetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA); - DWORD RasGetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); - DWORD RasSetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); - DWORD RasSetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); - DWORD RasConnectionNotificationA (HRASCONN, HANDLE, DWORD); - DWORD RasConnectionNotificationW (HRASCONN, HANDLE, DWORD); - DWORD RasGetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, - LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); - DWORD RasGetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, - LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); - DWORD RasSetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, - LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); - DWORD RasSetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, - LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); - DWORD RasGetAutodialAddressA (LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, - LPDWORD, LPDWORD); - DWORD RasGetAutodialAddressW (LPCWSTR, LPDWORD, - LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); - DWORD RasSetAutodialAddressA (LPCSTR, DWORD, LPRASAUTODIALENTRYA, - DWORD, DWORD); - DWORD RasSetAutodialAddressW (LPCWSTR, DWORD, LPRASAUTODIALENTRYW, - DWORD, DWORD); - DWORD RasEnumAutodialAddressesA (LPSTR *, LPDWORD, LPDWORD); - DWORD RasEnumAutodialAddressesW (LPWSTR *, LPDWORD, LPDWORD); - DWORD RasGetAutodialEnableA (DWORD, LPBOOL); - DWORD RasGetAutodialEnableW (DWORD, LPBOOL); - DWORD RasSetAutodialEnableA (DWORD, BOOL); - DWORD RasSetAutodialEnableW (DWORD, BOOL); - DWORD RasGetAutodialParamA (DWORD, LPVOID, LPDWORD); - DWORD RasGetAutodialParamW (DWORD, LPVOID, LPDWORD); - DWORD RasSetAutodialParamA (DWORD, LPVOID, DWORD); - DWORD RasSetAutodialParamW (DWORD, LPVOID, DWORD); -} - -static if (WINVER >= 0x0500) { - alias DWORD function (HRASCONN) RasCustomHangUpFn; - alias DWORD function (LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; - alias DWORD function (HINSTANCE, LPRASDIALEXTENSIONS, - LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD) RasCustomDialFn; - - DWORD RasInvokeEapUI (HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); - DWORD RasGetLinkStatistics (HRASCONN, DWORD, RAS_STATS*); - DWORD RasGetConnectionStatistics (HRASCONN, RAS_STATS*); - DWORD RasClearLinkStatistics (HRASCONN, DWORD); - DWORD RasClearConnectionStatistics (HRASCONN); - DWORD RasGetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); - DWORD RasGetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); - DWORD RasSetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); - DWORD RasSetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); - DWORD RasGetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD*); - DWORD RasGetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD*); - DWORD RasSetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD); - DWORD RasSetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD); - DWORD RasGetEapUserIdentityW (LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); - DWORD RasGetEapUserIdentityA (LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); - void RasFreeEapUserIdentityW (LPRASEAPUSERIDENTITYW); - void RasFreeEapUserIdentityA (LPRASEAPUSERIDENTITYA); -} - - -/* UNICODE defines for functions */ -version(Unicode) { - alias RasDialW RasDial; - alias RasEnumConnectionsW RasEnumConnections; - alias RasEnumEntriesW RasEnumEntries; - alias RasGetConnectStatusW RasGetConnectStatus; - alias RasGetErrorStringW RasGetErrorString; - alias RasHangUpW RasHangUp; - alias RasGetProjectionInfoW RasGetProjectionInfo; - alias RasCreatePhonebookEntryW RasCreatePhonebookEntry; - alias RasEditPhonebookEntryW RasEditPhonebookEntry; - alias RasSetEntryDialParamsW RasSetEntryDialParams; - alias RasGetEntryDialParamsW RasGetEntryDialParams; - alias RasEnumDevicesW RasEnumDevices; - alias RasGetCountryInfoW RasGetCountryInfo; - alias RasGetEntryPropertiesW RasGetEntryProperties; - alias RasSetEntryPropertiesW RasSetEntryProperties; - alias RasRenameEntryW RasRenameEntry; - alias RasDeleteEntryW RasDeleteEntry; - alias RasValidateEntryNameW RasValidateEntryName; - - static if (WINVER >= 0x0401) { - alias RASADFUNCW RASADFUNC; - alias RasGetSubEntryHandleW RasGetSubEntryHandle; - alias RasConnectionNotificationW RasConnectionNotification; - alias RasGetSubEntryPropertiesW RasGetSubEntryProperties; - alias RasSetSubEntryPropertiesW RasSetSubEntryProperties; - alias RasGetCredentialsW RasGetCredentials; - alias RasSetCredentialsW RasSetCredentials; - alias RasGetAutodialAddressW RasGetAutodialAddress; - alias RasSetAutodialAddressW RasSetAutodialAddress; - alias RasEnumAutodialAddressesW RasEnumAutodialAddresses; - alias RasGetAutodialEnableW RasGetAutodialEnable; - alias RasSetAutodialEnableW RasSetAutodialEnable; - alias RasGetAutodialParamW RasGetAutodialParam; - alias RasSetAutodialParamW RasSetAutodialParam; - } - - static if (WINVER >= 0x0500) { - alias RasGetEapUserDataW RasGetEapUserData; - alias RasSetEapUserDataW RasSetEapUserData; - alias RasGetCustomAuthDataW RasGetCustomAuthData; - alias RasSetCustomAuthDataW RasSetCustomAuthData; - alias RasGetEapUserIdentityW RasGetEapUserIdentity; - alias RasFreeEapUserIdentityW RasFreeEapUserIdentity; - } - -} else { // ! defined UNICODE - alias RasDialA RasDial; - alias RasEnumConnectionsA RasEnumConnections; - alias RasEnumEntriesA RasEnumEntries; - alias RasGetConnectStatusA RasGetConnectStatus; - alias RasGetErrorStringA RasGetErrorString; - alias RasHangUpA RasHangUp; - alias RasGetProjectionInfoA RasGetProjectionInfo; - alias RasCreatePhonebookEntryA RasCreatePhonebookEntry; - alias RasEditPhonebookEntryA RasEditPhonebookEntry; - alias RasSetEntryDialParamsA RasSetEntryDialParams; - alias RasGetEntryDialParamsA RasGetEntryDialParams; - alias RasEnumDevicesA RasEnumDevices; - alias RasGetCountryInfoA RasGetCountryInfo; - alias RasGetEntryPropertiesA RasGetEntryProperties; - alias RasSetEntryPropertiesA RasSetEntryProperties; - alias RasRenameEntryA RasRenameEntry; - alias RasDeleteEntryA RasDeleteEntry; - alias RasValidateEntryNameA RasValidateEntryName; - - static if (WINVER >= 0x0401) { - alias RASADFUNCA RASADFUNC; - alias RasGetSubEntryHandleA RasGetSubEntryHandle; - alias RasConnectionNotificationA RasConnectionNotification; - alias RasGetSubEntryPropertiesA RasGetSubEntryProperties; - alias RasSetSubEntryPropertiesA RasSetSubEntryProperties; - alias RasGetCredentialsA RasGetCredentials; - alias RasSetCredentialsA RasSetCredentials; - alias RasGetAutodialAddressA RasGetAutodialAddress; - alias RasSetAutodialAddressA RasSetAutodialAddress; - alias RasEnumAutodialAddressesA RasEnumAutodialAddresses; - alias RasGetAutodialEnableA RasGetAutodialEnable; - alias RasSetAutodialEnableA RasSetAutodialEnable; - alias RasGetAutodialParamA RasGetAutodialParam; - alias RasSetAutodialParamA RasSetAutodialParam; - } - - static if (WINVER >= 0x0500) { - alias RasGetEapUserDataA RasGetEapUserData; - alias RasSetEapUserDataA RasSetEapUserData; - alias RasGetCustomAuthDataA RasGetCustomAuthData; - alias RasSetCustomAuthDataA RasSetCustomAuthData; - alias RasGetEapUserIdentityA RasGetEapUserIdentity; - alias RasFreeEapUserIdentityA RasFreeEapUserIdentity; - } -} //#endif // ! UNICODE +/***********************************************************************\ +* ras.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.ras; +pragma(lib, "rasapi32"); + +private import win32.basetyps, win32.lmcons, win32.w32api, win32.windef; + +align(4): + +const RAS_MaxDeviceType = 16; +const RAS_MaxPhoneNumber = 128; +const RAS_MaxIpAddress = 15; +const RAS_MaxIpxAddress = 21; +const RAS_MaxEntryName = 256; +const RAS_MaxDeviceName = 128; +const RAS_MaxCallbackNumber = RAS_MaxPhoneNumber; +const RAS_MaxAreaCode = 10; +const RAS_MaxPadType = 32; +const RAS_MaxX25Address = 200; +const RAS_MaxFacilities = 200; +const RAS_MaxUserData = 200; +const RAS_MaxReplyMessage = 1024; + +const RDEOPT_UsePrefixSuffix = 0x00000001; +const RDEOPT_PausedStates = 0x00000002; +const RDEOPT_IgnoreModemSpeaker = 0x00000004; +const RDEOPT_SetModemSpeaker = 0x00000008; +const RDEOPT_IgnoreSoftwareCompression = 0x00000010; +const RDEOPT_SetSoftwareCompression = 0x00000020; +const RDEOPT_DisableConnectedUI = 0x00000040; +const RDEOPT_DisableReconnectUI = 0x00000080; +const RDEOPT_DisableReconnect = 0x00000100; +const RDEOPT_NoUser = 0x00000200; +const RDEOPT_PauseOnScript = 0x00000400; +const RDEOPT_Router = 0x00000800; + +const REN_User = 0x00000000; +const REN_AllUsers = 0x00000001; +const VS_Default = 0; +const VS_PptpOnly = 1; +const VS_PptpFirst = 2; +const VS_L2tpOnly = 3; +const VS_L2tpFirst = 4; + +const RASDIALEVENT = "RasDialEvent"; +const WM_RASDIALEVENT = 0xCCCD; + +const RASEO_UseCountryAndAreaCodes = 0x00000001; +const RASEO_SpecificIpAddr = 0x00000002; +const RASEO_SpecificNameServers = 0x00000004; +const RASEO_IpHeaderCompression = 0x00000008; +const RASEO_RemoteDefaultGateway = 0x00000010; +const RASEO_DisableLcpExtensions = 0x00000020; +const RASEO_TerminalBeforeDial = 0x00000040; +const RASEO_TerminalAfterDial = 0x00000080; +const RASEO_ModemLights = 0x00000100; +const RASEO_SwCompression = 0x00000200; +const RASEO_RequireEncryptedPw = 0x00000400; +const RASEO_RequireMsEncryptedPw = 0x00000800; +const RASEO_RequireDataEncryption = 0x00001000; +const RASEO_NetworkLogon = 0x00002000; +const RASEO_UseLogonCredentials = 0x00004000; +const RASEO_PromoteAlternates = 0x00008000; +const RASNP_NetBEUI = 0x00000001; +const RASNP_Ipx = 0x00000002; +const RASNP_Ip = 0x00000004; +const RASFP_Ppp = 0x00000001; +const RASFP_Slip = 0x00000002; +const RASFP_Ras = 0x00000004; + +const TCHAR[] + RASDT_Modem = "modem", + RASDT_Isdn = "isdn", + RASDT_X25 = "x25", + RASDT_Vpn = "vpn", + RASDT_Pad = "pad", + RASDT_Generic = "GENERIC", + RASDT_Serial = "SERIAL", + RASDT_FrameRelay = "FRAMERELAY", + RASDT_Atm = "ATM", + RASDT_Sonet = "SONET", + RASDT_SW56 = "SW56", + RASDT_Irda = "IRDA", + RASDT_Parallel = "PARALLEL"; + +const RASET_Phone = 1; +const RASET_Vpn = 2; +const RASET_Direct = 3; +const RASET_Internet = 4; + +static if (_WIN32_WINNT >= 0x401) { + const RASEO_SecureLocalFiles = 0x00010000; + const RASCN_Connection = 0x00000001; + const RASCN_Disconnection = 0x00000002; + const RASCN_BandwidthAdded = 0x00000004; + const RASCN_BandwidthRemoved = 0x00000008; + const RASEDM_DialAll = 1; + const RASEDM_DialAsNeeded = 2; + const RASIDS_Disabled = 0xffffffff; + const RASIDS_UseGlobalValue = 0; + const RASADFLG_PositionDlg = 0x00000001; + const RASCM_UserName = 0x00000001; + const RASCM_Password = 0x00000002; + const RASCM_Domain = 0x00000004; + const RASADP_DisableConnectionQuery = 0; + const RASADP_LoginSessionDisable = 1; + const RASADP_SavedAddressesLimit = 2; + const RASADP_FailedConnectionTimeout = 3; + const RASADP_ConnectionQueryTimeout = 4; +} +static if (_WIN32_WINNT >= 0x500) { + const RDEOPT_CustomDial = 0x00001000; + const RASLCPAP_PAP = 0xC023; + const RASLCPAP_SPAP = 0xC027; + const RASLCPAP_CHAP = 0xC223; + const RASLCPAP_EAP = 0xC227; + const RASLCPAD_CHAP_MD5 = 0x05; + const RASLCPAD_CHAP_MS = 0x80; + const RASLCPAD_CHAP_MSV2 = 0x81; + const RASLCPO_PFC = 0x00000001; + const RASLCPO_ACFC = 0x00000002; + const RASLCPO_SSHF = 0x00000004; + const RASLCPO_DES_56 = 0x00000008; + const RASLCPO_3_DES = 0x00000010; + + const RASCCPCA_MPPC = 0x00000006; + const RASCCPCA_STAC = 0x00000005; + + const RASCCPO_Compression = 0x00000001; + const RASCCPO_HistoryLess = 0x00000002; + const RASCCPO_Encryption56bit = 0x00000010; + const RASCCPO_Encryption40bit = 0x00000020; + const RASCCPO_Encryption128bit = 0x00000040; + + const RASEO_RequireEAP = 0x00020000; + const RASEO_RequirePAP = 0x00040000; + const RASEO_RequireSPAP = 0x00080000; + const RASEO_Custom = 0x00100000; + const RASEO_PreviewPhoneNumber = 0x00200000; + const RASEO_SharedPhoneNumbers = 0x00800000; + const RASEO_PreviewUserPw = 0x01000000; + const RASEO_PreviewDomain = 0x02000000; + const RASEO_ShowDialingProgress = 0x04000000; + const RASEO_RequireCHAP = 0x08000000; + const RASEO_RequireMsCHAP = 0x10000000; + const RASEO_RequireMsCHAP2 = 0x20000000; + const RASEO_RequireW95MSCHAP = 0x40000000; + const RASEO_CustomScript = 0x80000000; + + const RASIPO_VJ = 0x00000001; + const RCD_SingleUser = 0; + const RCD_AllUsers = 0x00000001; + const RCD_Eap = 0x00000002; + const RASEAPF_NonInteractive = 0x00000002; + const RASEAPF_Logon = 0x00000004; + const RASEAPF_Preview = 0x00000008; + const ET_40Bit = 1; + const ET_128Bit = 2; + const ET_None = 0; + const ET_Require = 1; + const ET_RequireMax = 2; + const ET_Optional = 3; +} + +const RASCS_PAUSED = 0x1000; +const RASCS_DONE = 0x2000; +enum RASCONNSTATE { + 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_SubEntryConnected, + RASCS_SubEntryDisconnected, + RASCS_Interactive = RASCS_PAUSED, + RASCS_RetryAuthentication, + RASCS_CallbackSetByCaller, + RASCS_PasswordExpired, +// static if (_WIN32_WINNT >= 0x500) { + RASCS_InvokeEapUI, +// } + RASCS_Connected = RASCS_DONE, + RASCS_Disconnected +} +alias RASCONNSTATE* LPRASCONNSTATE; + +enum RASPROJECTION { + RASP_Amb = 0x10000, + RASP_PppNbf = 0x803F, + RASP_PppIpx = 0x802B, + RASP_PppIp = 0x8021, +// static if (_WIN32_WINNT >= 0x500) { + RASP_PppCcp = 0x80FD, +// } + RASP_PppLcp = 0xC021, + RASP_Slip = 0x20000 +} +alias RASPROJECTION* LPRASPROJECTION; + +alias TypeDef!(HANDLE) HRASCONN; +alias HRASCONN* LPHRASCONN; + +struct RASCONNW { + DWORD dwSize; + HRASCONN hrasconn; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + WCHAR[MAX_PATH] szPhonebook; + DWORD dwSubEntry; + } + static if (_WIN32_WINNT >= 0x500) { + GUID guidEntry; + } + static if (_WIN32_WINNT >= 0x501) { + DWORD dwFlags; + LUID luid; + } +} +alias RASCONNW* LPRASCONNW; + +struct RASCONNA { + DWORD dwSize; + HRASCONN hrasconn; + CHAR[RAS_MaxEntryName + 1] szEntryName; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + CHAR[MAX_PATH] szPhonebook; + DWORD dwSubEntry; + } + static if (_WIN32_WINNT >= 0x500) { + GUID guidEntry; + } + static if (_WIN32_WINNT >= 0x501) { + DWORD dwFlags; + LUID luid; + } +} +alias RASCONNA* LPRASCONNA; + +struct RASCONNSTATUSW { + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + } +} +alias RASCONNSTATUSW* LPRASCONNSTATUSW; + +struct RASCONNSTATUSA { + DWORD dwSize; + RASCONNSTATE rasconnstate; + DWORD dwError; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + static if (_WIN32_WINNT >= 0x401) { + CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + } +} +alias RASCONNSTATUSA* LPRASCONNSTATUSA; + +struct RASDIALPARAMSW { + DWORD dwSize; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + WCHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + WCHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + } +} +alias RASDIALPARAMSW* LPRASDIALPARAMSW; + +struct RASDIALPARAMSA{ + DWORD dwSize; + CHAR[RAS_MaxEntryName + 1] szEntryName; + CHAR[RAS_MaxPhoneNumber + 1] szPhoneNumber; + CHAR[RAS_MaxCallbackNumber + 1] szCallbackNumber; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntry; + ULONG_PTR dwCallbackId; + } +} +alias RASDIALPARAMSA* LPRASDIALPARAMSA; + +static if (_WIN32_WINNT >= 0x500) { + struct RASEAPINFO { + DWORD dwSizeofEapInfo; + BYTE *pbEapInfo; + } +} + +struct RASDIALEXTENSIONS { + DWORD dwSize; + DWORD dwfOptions; + HWND hwndParent; + ULONG_PTR reserved; + static if (_WIN32_WINNT >= 0x500) { + ULONG_PTR reserved1; + RASEAPINFO RasEapInfo; + } +} +alias RASDIALEXTENSIONS* LPRASDIALEXTENSIONS; + +struct RASENTRYNAMEW { + DWORD dwSize; + WCHAR[RAS_MaxEntryName + 1] szEntryName; + static if (_WIN32_WINNT >= 0x500) { + DWORD dwFlags; + WCHAR[MAX_PATH + 1] szPhonebookPath; + } +} +alias RASENTRYNAMEW* LPRASENTRYNAMEW; + +struct RASENTRYNAMEA{ + DWORD dwSize; + CHAR[RAS_MaxEntryName + 1] szEntryName; + static if (_WIN32_WINNT >= 0x500) { + DWORD dwFlags; + CHAR[MAX_PATH + 1] szPhonebookPath; + } +} +alias RASENTRYNAMEA* LPRASENTRYNAMEA; + +struct RASAMBW{ + DWORD dwSize; + DWORD dwError; + WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + BYTE bLana; +} +alias RASAMBW* LPRASAMBW; + +struct RASAMBA{ + DWORD dwSize; + DWORD dwError; + CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + BYTE bLana; +} +alias RASAMBA* LPRASAMBA; + +struct RASPPPNBFW{ + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + WCHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + WCHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; + BYTE bLana; +} +alias RASPPPNBFW* LPRASPPPNBFW; + +struct RASPPPNBFA{ + DWORD dwSize; + DWORD dwError; + DWORD dwNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szWorkstationName; + BYTE bLana; +} +alias RASPPPNBFA* LPRASPPPNBFA; + +struct RASPPPIPXW { + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpxAddress + 1] szIpxAddress; +} +alias RASPPPIPXW* LPRASPPPIPXW; + +struct RASPPPIPXA { + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpxAddress + 1] szIpxAddress; +} +alias RASPPPIPXA* LPRASPPPIPXA; + +struct RASPPPIPW{ + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpAddress + 1] szIpAddress; + //#ifndef WINNT35COMPATIBLE + WCHAR[RAS_MaxIpAddress + 1] szServerIpAddress; + //#endif + static if (_WIN32_WINNT >= 0x500) { + DWORD dwOptions; + DWORD dwServerOptions; + } +} +alias RASPPPIPW* LPRASPPPIPW; + +struct RASPPPIPA{ + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpAddress + 1] szIpAddress; + //#ifndef WINNT35COMPATIBLE + CHAR[RAS_MaxIpAddress + 1] szServerIpAddress; + //#endif + static if (_WIN32_WINNT >= 0x500) { + DWORD dwOptions; + DWORD dwServerOptions; + } +} +alias RASPPPIPA* LPRASPPPIPA; + +struct RASPPPLCPW{ + DWORD dwSize; + BOOL fBundled; + static if (_WIN32_WINNT >= 0x500) { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + WCHAR[RAS_MaxReplyMessage] szReplyMessage; + DWORD dwOptions; + DWORD dwServerOptions; + } +} +alias RASPPPLCPW* LPRASPPPLCPW; + +struct RASPPPLCPA{ + DWORD dwSize; + BOOL fBundled; + static if (_WIN32_WINNT >= 0x500) { + DWORD dwError; + DWORD dwAuthenticationProtocol; + DWORD dwAuthenticationData; + DWORD dwEapTypeId; + DWORD dwServerAuthenticationProtocol; + DWORD dwServerAuthenticationData; + DWORD dwServerEapTypeId; + BOOL fMultilink; + DWORD dwTerminateReason; + DWORD dwServerTerminateReason; + CHAR[RAS_MaxReplyMessage] szReplyMessage; + DWORD dwOptions; + DWORD dwServerOptions; + } +} +alias RASPPPLCPA* LPRASPPPLCPA; + +struct RASSLIPW{ + DWORD dwSize; + DWORD dwError; + WCHAR[RAS_MaxIpAddress + 1] szIpAddress; +} +alias RASSLIPW* LPRASSLIPW; + +struct RASSLIPA{ + DWORD dwSize; + DWORD dwError; + CHAR[RAS_MaxIpAddress + 1] szIpAddress; +} +alias RASSLIPA* LPRASSLIPA; + +struct RASDEVINFOW{ + DWORD dwSize; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; +} +alias RASDEVINFOW* LPRASDEVINFOW; + +struct RASDEVINFOA{ + DWORD dwSize; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; +} +alias RASDEVINFOA* LPRASDEVINFOA; + +struct RASCTRYINFO { + DWORD dwSize; + DWORD dwCountryID; + DWORD dwNextCountryID; + DWORD dwCountryCode; + DWORD dwCountryNameOffset; +} +alias RASCTRYINFO* LPRASCTRYINFO; +alias RASCTRYINFO RASCTRYINFOW, RASCTRYINFOA; +alias RASCTRYINFOW* LPRASCTRYINFOW; +alias RASCTRYINFOA* LPRASCTRYINFOA; + +struct RASIPADDR { + BYTE a; + BYTE b; + BYTE c; + BYTE d; +} + +struct RASENTRYW { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + WCHAR[RAS_MaxAreaCode + 1] szAreaCode; + WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + WCHAR[MAX_PATH] szScript; + WCHAR[MAX_PATH] szAutodialDll; + WCHAR[MAX_PATH] szAutodialFunc; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + WCHAR[RAS_MaxPadType + 1] szX25PadType; + WCHAR[RAS_MaxX25Address + 1] szX25Address; + WCHAR[RAS_MaxFacilities + 1] szX25Facilities; + WCHAR[RAS_MaxUserData + 1] szX25UserData; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + } + static if (_WIN32_WINNT >= 0x500) { + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + WCHAR[MAX_PATH] szCustomDialDll; + DWORD dwVpnStrategy; + } +} +alias RASENTRYW* LPRASENTRYW; + +struct RASENTRYA { + DWORD dwSize; + DWORD dwfOptions; + DWORD dwCountryID; + DWORD dwCountryCode; + CHAR[RAS_MaxAreaCode + 1] szAreaCode; + CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + RASIPADDR ipaddr; + RASIPADDR ipaddrDns; + RASIPADDR ipaddrDnsAlt; + RASIPADDR ipaddrWins; + RASIPADDR ipaddrWinsAlt; + DWORD dwFrameSize; + DWORD dwfNetProtocols; + DWORD dwFramingProtocol; + CHAR[MAX_PATH] szScript; + CHAR[MAX_PATH] szAutodialDll; + CHAR[MAX_PATH] szAutodialFunc; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + CHAR[RAS_MaxPadType + 1] szX25PadType; + CHAR[RAS_MaxX25Address + 1] szX25Address; + CHAR[RAS_MaxFacilities + 1] szX25Facilities; + CHAR[RAS_MaxUserData + 1] szX25UserData; + DWORD dwChannels; + DWORD dwReserved1; + DWORD dwReserved2; + static if (_WIN32_WINNT >= 0x401) { + DWORD dwSubEntries; + DWORD dwDialMode; + DWORD dwDialExtraPercent; + DWORD dwDialExtraSampleSeconds; + DWORD dwHangUpExtraPercent; + DWORD dwHangUpExtraSampleSeconds; + DWORD dwIdleDisconnectSeconds; + } + static if (_WIN32_WINNT >= 0x500) { + DWORD dwType; + DWORD dwEncryptionType; + DWORD dwCustomAuthKey; + GUID guidId; + CHAR[MAX_PATH] szCustomDialDll; + DWORD dwVpnStrategy; + } +} +alias RASENTRYA* LPRASENTRYA; + + +static if (_WIN32_WINNT >= 0x401) { + struct RASADPARAMS { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + } + alias RASADPARAMS* LPRASADPARAMS; + + struct RASSUBENTRYW{ + DWORD dwSize; + DWORD dwfFlags; + WCHAR[RAS_MaxDeviceType + 1] szDeviceType; + WCHAR[RAS_MaxDeviceName + 1] szDeviceName; + WCHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + } + alias RASSUBENTRYW* LPRASSUBENTRYW; + + struct RASSUBENTRYA{ + DWORD dwSize; + DWORD dwfFlags; + CHAR[RAS_MaxDeviceType + 1] szDeviceType; + CHAR[RAS_MaxDeviceName + 1] szDeviceName; + CHAR[RAS_MaxPhoneNumber + 1] szLocalPhoneNumber; + DWORD dwAlternateOffset; + } + alias RASSUBENTRYA* LPRASSUBENTRYA; + + struct RASCREDENTIALSW{ + DWORD dwSize; + DWORD dwMask; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; + } + alias RASCREDENTIALSW* LPRASCREDENTIALSW; + + struct RASCREDENTIALSA{ + DWORD dwSize; + DWORD dwMask; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; + } + alias RASCREDENTIALSA* LPRASCREDENTIALSA; + + struct RASAUTODIALENTRYW{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + WCHAR[RAS_MaxEntryName + 1] szEntry; + } + alias RASAUTODIALENTRYW* LPRASAUTODIALENTRYW; + + struct RASAUTODIALENTRYA{ + DWORD dwSize; + DWORD dwFlags; + DWORD dwDialingLocation; + CHAR[RAS_MaxEntryName + 1] szEntry; + } + alias RASAUTODIALENTRYA* LPRASAUTODIALENTRYA; +} + +static if (_WIN32_WINNT >= 0x500) { + struct RASPPPCCP{ + DWORD dwSize; + DWORD dwError; + DWORD dwCompressionAlgorithm; + DWORD dwOptions; + DWORD dwServerCompressionAlgorithm; + DWORD dwServerOptions; + } + alias RASPPPCCP* LPRASPPPCCP; + + struct RASEAPUSERIDENTITYW{ + WCHAR[UNLEN + 1] szUserName; + DWORD dwSizeofEapInfo; + BYTE[1] pbEapInfo; + } + alias RASEAPUSERIDENTITYW* LPRASEAPUSERIDENTITYW; + + struct RASEAPUSERIDENTITYA{ + CHAR[UNLEN + 1] szUserName; + DWORD dwSizeofEapInfo; + BYTE[1] pbEapInfo; + } + alias RASEAPUSERIDENTITYA* LPRASEAPUSERIDENTITYA; + + struct RAS_STATS{ + DWORD dwSize; + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwCompressionRatioIn; + DWORD dwCompressionRatioOut; + DWORD dwBps; + DWORD dwConnectDuration; + } + alias RAS_STATS* PRAS_STATS; +} + + +/* UNICODE typedefs for structures*/ +version (Unicode) { + alias RASCONNW RASCONN; + alias RASENTRYW RASENTRY; + alias RASCONNSTATUSW RASCONNSTATUS; + alias RASDIALPARAMSW RASDIALPARAMS; + alias RASAMBW RASAMB; + alias RASPPPNBFW RASPPPNBF; + alias RASPPPIPXW RASPPPIPX; + alias RASPPPIPW RASPPPIP; + alias RASPPPLCPW RASPPPLCP; + alias RASSLIPW RASSLIP; + alias RASDEVINFOW RASDEVINFO; + alias RASENTRYNAMEW RASENTRYNAME; + + static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRYW RASSUBENTRY; + alias RASCREDENTIALSW RASCREDENTIALS; + alias RASAUTODIALENTRYW RASAUTODIALENTRY; + } + + static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITYW RASEAPUSERIDENTITY; + } + +} else { // ! defined UNICODE + + alias RASCONNA RASCONN; + alias RASENTRYA RASENTRY; + alias RASCONNSTATUSA RASCONNSTATUS; + alias RASDIALPARAMSA RASDIALPARAMS; + alias RASAMBA RASAMB; + alias RASPPPNBFA RASPPPNBF; + alias RASPPPIPXA RASPPPIPX; + alias RASPPPIPA RASPPPIP; + alias RASPPPLCPA RASPPPLCP; + alias RASSLIPA RASSLIP; + alias RASDEVINFOA RASDEVINFO; + alias RASENTRYNAMEA RASENTRYNAME; + + static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRYA RASSUBENTRY; + alias RASCREDENTIALSA RASCREDENTIALS; + alias RASAUTODIALENTRYA RASAUTODIALENTRY; + } + static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITYA RASEAPUSERIDENTITY; + } +}// ! UNICODE + + +alias RASCONN* LPRASCONN; +alias RASENTRY* LPRASENTRY; +alias RASCONNSTATUS* LPRASCONNSTATUS; +alias RASDIALPARAMS* LPRASDIALPARAMS; +alias RASAMB* LPRASAM; +alias RASPPPNBF* LPRASPPPNBF; +alias RASPPPIPX* LPRASPPPIPX; +alias RASPPPIP* LPRASPPPIP; +alias RASPPPLCP* LPRASPPPLCP; +alias RASSLIP* LPRASSLIP; +alias RASDEVINFO* LPRASDEVINFO; +alias RASENTRYNAME* LPRASENTRYNAME; + +static if (_WIN32_WINNT >= 0x401) { + alias RASSUBENTRY* LPRASSUBENTRY; + alias RASCREDENTIALS* LPRASCREDENTIALS; + alias RASAUTODIALENTRY* LPRASAUTODIALENTRY; +} +static if (_WIN32_WINNT >= 0x500) { + alias RASEAPUSERIDENTITY* LPRASEAPUSERIDENTITY; +} + +/* Callback prototypes */ +deprecated { + alias BOOL function (HWND, LPSTR, DWORD, LPDWORD) ORASADFUNC; +} + +alias void function (UINT, RASCONNSTATE, DWORD) RASDIALFUNC; +alias void function(HRASCONN, UINT, RASCONNSTATE, DWORD, +DWORD) RASDIALFUNC1; +alias DWORD function (ULONG_PTR, DWORD, HRASCONN, UINT, +RASCONNSTATE, DWORD, DWORD) RASDIALFUNC2; + +/* External functions */ +DWORD RasDialA (LPRASDIALEXTENSIONS, LPCSTR, LPRASDIALPARAMSA, +DWORD, LPVOID, LPHRASCONN); +DWORD RasDialW (LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, +DWORD, LPVOID, LPHRASCONN); +DWORD RasEnumConnectionsA (LPRASCONNA, LPDWORD, LPDWORD); +DWORD RasEnumConnectionsW (LPRASCONNW, LPDWORD, LPDWORD); +DWORD RasEnumEntriesA (LPCSTR, LPCSTR, LPRASENTRYNAMEA, LPDWORD, +LPDWORD); +DWORD RasEnumEntriesW (LPCWSTR, LPCWSTR, LPRASENTRYNAMEW, LPDWORD, +LPDWORD); +DWORD RasGetConnectStatusA (HRASCONN, LPRASCONNSTATUSA); +DWORD RasGetConnectStatusW (HRASCONN, LPRASCONNSTATUSW); +DWORD RasGetErrorStringA (UINT, LPSTR, DWORD); +DWORD RasGetErrorStringW (UINT, LPWSTR, DWORD); +DWORD RasHangUpA (HRASCONN); +DWORD RasHangUpW (HRASCONN); +DWORD RasGetProjectionInfoA (HRASCONN, RASPROJECTION, LPVOID, +LPDWORD); +DWORD RasGetProjectionInfoW (HRASCONN, RASPROJECTION, LPVOID, +LPDWORD); +DWORD RasCreatePhonebookEntryA (HWND, LPCSTR); +DWORD RasCreatePhonebookEntryW (HWND, LPCWSTR); +DWORD RasEditPhonebookEntryA (HWND, LPCSTR, LPCSTR); +DWORD RasEditPhonebookEntryW (HWND, LPCWSTR, LPCWSTR); +DWORD RasSetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, BOOL); +DWORD RasSetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, BOOL); +DWORD RasGetEntryDialParamsA (LPCSTR, LPRASDIALPARAMSA, LPBOOL); +DWORD RasGetEntryDialParamsW (LPCWSTR, LPRASDIALPARAMSW, LPBOOL); +DWORD RasEnumDevicesA (LPRASDEVINFOA, LPDWORD, LPDWORD); +DWORD RasEnumDevicesW (LPRASDEVINFOW, LPDWORD, LPDWORD); +DWORD RasGetCountryInfoA (LPRASCTRYINFOA, LPDWORD); +DWORD RasGetCountryInfoW (LPRASCTRYINFOW, LPDWORD); +DWORD RasGetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, LPDWORD, +LPBYTE, LPDWORD); +DWORD RasGetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, +LPDWORD, LPBYTE, LPDWORD); +DWORD RasSetEntryPropertiesA (LPCSTR, LPCSTR, LPRASENTRYA, DWORD, +LPBYTE, DWORD); +DWORD RasSetEntryPropertiesW (LPCWSTR, LPCWSTR, LPRASENTRYW, DWORD, +LPBYTE, DWORD); +DWORD RasRenameEntryA (LPCSTR, LPCSTR, LPCSTR); +DWORD RasRenameEntryW (LPCWSTR, LPCWSTR, LPCWSTR); +DWORD RasDeleteEntryA (LPCSTR, LPCSTR); +DWORD RasDeleteEntryW (LPCWSTR, LPCWSTR); +DWORD RasValidateEntryNameA (LPCSTR, LPCSTR); +DWORD RasValidateEntryNameW (LPCWSTR, LPCWSTR); + +static if (_WIN32_WINNT >= 0x401) { + alias BOOL function (LPSTR, LPSTR, LPRASADPARAMS, LPDWORD) RASADFUNCA; + alias BOOL function (LPWSTR, LPWSTR, LPRASADPARAMS, LPDWORD) RASADFUNCW; + + DWORD RasGetSubEntryHandleA (HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetSubEntryHandleW (HRASCONN, DWORD, LPHRASCONN); + DWORD RasGetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA); + DWORD RasGetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW); + DWORD RasSetCredentialsA (LPCSTR, LPCSTR, LPRASCREDENTIALSA, BOOL); + DWORD RasSetCredentialsW (LPCWSTR, LPCWSTR, LPRASCREDENTIALSW, BOOL); + DWORD RasConnectionNotificationA (HRASCONN, HANDLE, DWORD); + DWORD RasConnectionNotificationW (HRASCONN, HANDLE, DWORD); + DWORD RasGetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, + LPRASSUBENTRYA, LPDWORD, LPBYTE, LPDWORD); + DWORD RasGetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, + LPRASSUBENTRYW, LPDWORD, LPBYTE, LPDWORD); + DWORD RasSetSubEntryPropertiesA (LPCSTR, LPCSTR, DWORD, + LPRASSUBENTRYA, DWORD, LPBYTE, DWORD); + DWORD RasSetSubEntryPropertiesW (LPCWSTR, LPCWSTR, DWORD, + LPRASSUBENTRYW, DWORD, LPBYTE, DWORD); + DWORD RasGetAutodialAddressA (LPCSTR, LPDWORD, LPRASAUTODIALENTRYA, + LPDWORD, LPDWORD); + DWORD RasGetAutodialAddressW (LPCWSTR, LPDWORD, + LPRASAUTODIALENTRYW, LPDWORD, LPDWORD); + DWORD RasSetAutodialAddressA (LPCSTR, DWORD, LPRASAUTODIALENTRYA, + DWORD, DWORD); + DWORD RasSetAutodialAddressW (LPCWSTR, DWORD, LPRASAUTODIALENTRYW, + DWORD, DWORD); + DWORD RasEnumAutodialAddressesA (LPSTR *, LPDWORD, LPDWORD); + DWORD RasEnumAutodialAddressesW (LPWSTR *, LPDWORD, LPDWORD); + DWORD RasGetAutodialEnableA (DWORD, LPBOOL); + DWORD RasGetAutodialEnableW (DWORD, LPBOOL); + DWORD RasSetAutodialEnableA (DWORD, BOOL); + DWORD RasSetAutodialEnableW (DWORD, BOOL); + DWORD RasGetAutodialParamA (DWORD, LPVOID, LPDWORD); + DWORD RasGetAutodialParamW (DWORD, LPVOID, LPDWORD); + DWORD RasSetAutodialParamA (DWORD, LPVOID, DWORD); + DWORD RasSetAutodialParamW (DWORD, LPVOID, DWORD); +} + +static if (_WIN32_WINNT >= 0x500) { + alias DWORD function (HRASCONN) RasCustomHangUpFn; + alias DWORD function (LPCTSTR, LPCTSTR, DWORD) RasCustomDeleteEntryNotifyFn; + alias DWORD function (HINSTANCE, LPRASDIALEXTENSIONS, + LPCTSTR, LPRASDIALPARAMS, DWORD, LPVOID, LPHRASCONN, DWORD) RasCustomDialFn; + + DWORD RasInvokeEapUI (HRASCONN, DWORD, LPRASDIALEXTENSIONS, HWND); + DWORD RasGetLinkStatistics (HRASCONN, DWORD, RAS_STATS*); + DWORD RasGetConnectionStatistics (HRASCONN, RAS_STATS*); + DWORD RasClearLinkStatistics (HRASCONN, DWORD); + DWORD RasClearConnectionStatistics (HRASCONN); + DWORD RasGetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetEapUserDataA (HANDLE, LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetEapUserDataW (HANDLE, LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD*); + DWORD RasGetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD*); + DWORD RasSetCustomAuthDataA (LPCSTR, LPCSTR, BYTE*, DWORD); + DWORD RasSetCustomAuthDataW (LPCWSTR, LPCWSTR, BYTE*, DWORD); + DWORD RasGetEapUserIdentityW (LPCWSTR, LPCWSTR, DWORD, HWND, LPRASEAPUSERIDENTITYW*); + DWORD RasGetEapUserIdentityA (LPCSTR, LPCSTR, DWORD, HWND, LPRASEAPUSERIDENTITYA*); + void RasFreeEapUserIdentityW (LPRASEAPUSERIDENTITYW); + void RasFreeEapUserIdentityA (LPRASEAPUSERIDENTITYA); +} + + +/* UNICODE defines for functions */ +version(Unicode) { + alias RasDialW RasDial; + alias RasEnumConnectionsW RasEnumConnections; + alias RasEnumEntriesW RasEnumEntries; + alias RasGetConnectStatusW RasGetConnectStatus; + alias RasGetErrorStringW RasGetErrorString; + alias RasHangUpW RasHangUp; + alias RasGetProjectionInfoW RasGetProjectionInfo; + alias RasCreatePhonebookEntryW RasCreatePhonebookEntry; + alias RasEditPhonebookEntryW RasEditPhonebookEntry; + alias RasSetEntryDialParamsW RasSetEntryDialParams; + alias RasGetEntryDialParamsW RasGetEntryDialParams; + alias RasEnumDevicesW RasEnumDevices; + alias RasGetCountryInfoW RasGetCountryInfo; + alias RasGetEntryPropertiesW RasGetEntryProperties; + alias RasSetEntryPropertiesW RasSetEntryProperties; + alias RasRenameEntryW RasRenameEntry; + alias RasDeleteEntryW RasDeleteEntry; + alias RasValidateEntryNameW RasValidateEntryName; + + static if (_WIN32_WINNT >= 0x401) { + alias RASADFUNCW RASADFUNC; + alias RasGetSubEntryHandleW RasGetSubEntryHandle; + alias RasConnectionNotificationW RasConnectionNotification; + alias RasGetSubEntryPropertiesW RasGetSubEntryProperties; + alias RasSetSubEntryPropertiesW RasSetSubEntryProperties; + alias RasGetCredentialsW RasGetCredentials; + alias RasSetCredentialsW RasSetCredentials; + alias RasGetAutodialAddressW RasGetAutodialAddress; + alias RasSetAutodialAddressW RasSetAutodialAddress; + alias RasEnumAutodialAddressesW RasEnumAutodialAddresses; + alias RasGetAutodialEnableW RasGetAutodialEnable; + alias RasSetAutodialEnableW RasSetAutodialEnable; + alias RasGetAutodialParamW RasGetAutodialParam; + alias RasSetAutodialParamW RasSetAutodialParam; + } + + static if (_WIN32_WINNT >= 0x500) { + alias RasGetEapUserDataW RasGetEapUserData; + alias RasSetEapUserDataW RasSetEapUserData; + alias RasGetCustomAuthDataW RasGetCustomAuthData; + alias RasSetCustomAuthDataW RasSetCustomAuthData; + alias RasGetEapUserIdentityW RasGetEapUserIdentity; + alias RasFreeEapUserIdentityW RasFreeEapUserIdentity; + } + +} else { // !Unicode + alias RasDialA RasDial; + alias RasEnumConnectionsA RasEnumConnections; + alias RasEnumEntriesA RasEnumEntries; + alias RasGetConnectStatusA RasGetConnectStatus; + alias RasGetErrorStringA RasGetErrorString; + alias RasHangUpA RasHangUp; + alias RasGetProjectionInfoA RasGetProjectionInfo; + alias RasCreatePhonebookEntryA RasCreatePhonebookEntry; + alias RasEditPhonebookEntryA RasEditPhonebookEntry; + alias RasSetEntryDialParamsA RasSetEntryDialParams; + alias RasGetEntryDialParamsA RasGetEntryDialParams; + alias RasEnumDevicesA RasEnumDevices; + alias RasGetCountryInfoA RasGetCountryInfo; + alias RasGetEntryPropertiesA RasGetEntryProperties; + alias RasSetEntryPropertiesA RasSetEntryProperties; + alias RasRenameEntryA RasRenameEntry; + alias RasDeleteEntryA RasDeleteEntry; + alias RasValidateEntryNameA RasValidateEntryName; + + static if (_WIN32_WINNT >= 0x401) { + alias RASADFUNCA RASADFUNC; + alias RasGetSubEntryHandleA RasGetSubEntryHandle; + alias RasConnectionNotificationA RasConnectionNotification; + alias RasGetSubEntryPropertiesA RasGetSubEntryProperties; + alias RasSetSubEntryPropertiesA RasSetSubEntryProperties; + alias RasGetCredentialsA RasGetCredentials; + alias RasSetCredentialsA RasSetCredentials; + alias RasGetAutodialAddressA RasGetAutodialAddress; + alias RasSetAutodialAddressA RasSetAutodialAddress; + alias RasEnumAutodialAddressesA RasEnumAutodialAddresses; + alias RasGetAutodialEnableA RasGetAutodialEnable; + alias RasSetAutodialEnableA RasSetAutodialEnable; + alias RasGetAutodialParamA RasGetAutodialParam; + alias RasSetAutodialParamA RasSetAutodialParam; + } + + static if (_WIN32_WINNT >= 0x500) { + alias RasGetEapUserDataA RasGetEapUserData; + alias RasSetEapUserDataA RasSetEapUserData; + alias RasGetCustomAuthDataA RasGetCustomAuthData; + alias RasSetCustomAuthDataA RasSetCustomAuthData; + alias RasGetEapUserIdentityA RasGetEapUserIdentity; + alias RasFreeEapUserIdentityA RasFreeEapUserIdentity; + } +} //#endif // !Unicode Index: src/win32/rasdlg.d ================================================================== --- src/win32/rasdlg.d +++ src/win32/rasdlg.d @@ -1,159 +1,159 @@ -/***********************************************************************\ -* rasdlg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rasdlg; - -import win32.ras; -private import win32.lmcons, win32.windef; - -enum { - RASPBDEVENT_AddEntry = 1, - RASPBDEVENT_EditEntry, - RASPBDEVENT_RemoveEntry, - RASPBDEVENT_DialEntry, - RASPBDEVENT_EditGlobals, - RASPBDEVENT_NoUser, - RASPBDEVENT_NoUserEdit -} - -const RASPBDFLAG_PositionDlg = 1; -const RASPBDFLAG_ForceCloseOnDial = 2; -const RASPBDFLAG_NoUser = 16; - -const RASEDFLAG_PositionDlg = 1; -const RASEDFLAG_NewEntry = 2; -const RASEDFLAG_CloneEntry = 4; - -const RASDDFLAG_PositionDlg = 1; - -align(4): - -struct RASENTRYDLGA { - DWORD dwSize = RASENTRYDLGA.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - CHAR[RAS_MaxEntryName + 1] szEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASENTRYDLGA* LPRASENTRYDLGA; - -struct RASENTRYDLGW { - DWORD dwSize = RASENTRYDLGW.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - WCHAR[RAS_MaxEntryName + 1] szEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASENTRYDLGW* LPRASENTRYDLGW; - -struct RASDIALDLG { - DWORD dwSize; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - DWORD dwSubEntry; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASDIALDLG* LPRASDIALDLG; - -// Application-defined callback functions -extern (Windows) { - alias VOID function(DWORD, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; - alias VOID function(DWORD, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; -} - -struct RASPBDLGA { - DWORD dwSize = RASPBDLGA.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - ULONG_PTR dwCallbackId; - RASPBDLGFUNCA pCallback; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASPBDLGA* LPRASPBDLGA; - -struct RASPBDLGW { - DWORD dwSize = RASPBDLGW.sizeof; - HWND hwndOwner; - DWORD dwFlags; - LONG xDlg; - LONG yDlg; - ULONG_PTR dwCallbackId; - RASPBDLGFUNCW pCallback; - DWORD dwError; - ULONG_PTR reserved; - ULONG_PTR reserved2; -} -alias RASPBDLGW* LPRASPBDLGW; - -struct RASNOUSERA -{ - DWORD dwSize = RASNOUSERA.sizeof; - DWORD dwFlags; - DWORD dwTimeoutMs; - CHAR[UNLEN + 1] szUserName; - CHAR[PWLEN + 1] szPassword; - CHAR[DNLEN + 1] szDomain; -} -alias RASNOUSERA* LPRASNOUSERA; - -struct RASNOUSERW { - DWORD dwSize = RASNOUSERW.sizeof; - DWORD dwFlags; - DWORD dwTimeoutMs; - WCHAR[UNLEN + 1] szUserName; - WCHAR[PWLEN + 1] szPassword; - WCHAR[DNLEN + 1] szDomain; -} -alias RASNOUSERW* LPRASNOUSERW; - -extern (Windows) { - BOOL RasDialDlgA(LPSTR, LPSTR, LPSTR, LPRASDIALDLG); - BOOL RasDialDlgW(LPWSTR, LPWSTR, LPWSTR, LPRASDIALDLG); - BOOL RasEntryDlgA(LPSTR, LPSTR, LPRASENTRYDLGA); - BOOL RasEntryDlgW(LPWSTR, LPWSTR, LPRASENTRYDLGW); - BOOL RasPhonebookDlgA(LPSTR, LPSTR, LPRASPBDLGA); - BOOL RasPhonebookDlgW(LPWSTR, LPWSTR, LPRASPBDLGW); -} - -version (Unicode) { - alias RASENTRYDLGW RASENTRYDLG; - alias RASPBDLGW RASPBDLG; - alias RASNOUSERW RASNOUSER; - alias RasDialDlgW RasDialDlg; - alias RasEntryDlgW RasEntryDlg; - alias RasPhonebookDlgW RasPhonebookDlg; -} else { - alias RASENTRYDLGA RASENTRYDLG; - alias RASPBDLGA RASPBDLG; - alias RASNOUSERA RASNOUSER; - alias RasDialDlgA RasDialDlg; - alias RasEntryDlgA RasEntryDlg; - alias RasPhonebookDlgA RasPhonebookDlg; -} - -alias RASENTRYDLG* LPRASENTRYDLG; -alias RASPBDLG* LPRASPBDLG; -alias RASNOUSER* LPRASNOUSER; +/***********************************************************************\ +* rasdlg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rasdlg; + +import win32.ras; +private import win32.lmcons, win32.windef; + +enum { + RASPBDEVENT_AddEntry = 1, + RASPBDEVENT_EditEntry, + RASPBDEVENT_RemoveEntry, + RASPBDEVENT_DialEntry, + RASPBDEVENT_EditGlobals, + RASPBDEVENT_NoUser, + RASPBDEVENT_NoUserEdit +} + +const RASPBDFLAG_PositionDlg = 1; +const RASPBDFLAG_ForceCloseOnDial = 2; +const RASPBDFLAG_NoUser = 16; + +const RASEDFLAG_PositionDlg = 1; +const RASEDFLAG_NewEntry = 2; +const RASEDFLAG_CloneEntry = 4; + +const RASDDFLAG_PositionDlg = 1; + +align(4): + +struct RASENTRYDLGA { + DWORD dwSize = RASENTRYDLGA.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + CHAR[RAS_MaxEntryName + 1] szEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASENTRYDLGA* LPRASENTRYDLGA; + +struct RASENTRYDLGW { + DWORD dwSize = RASENTRYDLGW.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + WCHAR[RAS_MaxEntryName + 1] szEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASENTRYDLGW* LPRASENTRYDLGW; + +struct RASDIALDLG { + DWORD dwSize; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + DWORD dwSubEntry; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASDIALDLG* LPRASDIALDLG; + +// Application-defined callback functions +extern (Windows) { + alias VOID function(DWORD, DWORD, LPWSTR, LPVOID) RASPBDLGFUNCW; + alias VOID function(DWORD, DWORD, LPSTR, LPVOID) RASPBDLGFUNCA; +} + +struct RASPBDLGA { + DWORD dwSize = RASPBDLGA.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCA pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASPBDLGA* LPRASPBDLGA; + +struct RASPBDLGW { + DWORD dwSize = RASPBDLGW.sizeof; + HWND hwndOwner; + DWORD dwFlags; + LONG xDlg; + LONG yDlg; + ULONG_PTR dwCallbackId; + RASPBDLGFUNCW pCallback; + DWORD dwError; + ULONG_PTR reserved; + ULONG_PTR reserved2; +} +alias RASPBDLGW* LPRASPBDLGW; + +struct RASNOUSERA +{ + DWORD dwSize = RASNOUSERA.sizeof; + DWORD dwFlags; + DWORD dwTimeoutMs; + CHAR[UNLEN + 1] szUserName; + CHAR[PWLEN + 1] szPassword; + CHAR[DNLEN + 1] szDomain; +} +alias RASNOUSERA* LPRASNOUSERA; + +struct RASNOUSERW { + DWORD dwSize = RASNOUSERW.sizeof; + DWORD dwFlags; + DWORD dwTimeoutMs; + WCHAR[UNLEN + 1] szUserName; + WCHAR[PWLEN + 1] szPassword; + WCHAR[DNLEN + 1] szDomain; +} +alias RASNOUSERW* LPRASNOUSERW; + +extern (Windows) { + BOOL RasDialDlgA(LPSTR, LPSTR, LPSTR, LPRASDIALDLG); + BOOL RasDialDlgW(LPWSTR, LPWSTR, LPWSTR, LPRASDIALDLG); + BOOL RasEntryDlgA(LPSTR, LPSTR, LPRASENTRYDLGA); + BOOL RasEntryDlgW(LPWSTR, LPWSTR, LPRASENTRYDLGW); + BOOL RasPhonebookDlgA(LPSTR, LPSTR, LPRASPBDLGA); + BOOL RasPhonebookDlgW(LPWSTR, LPWSTR, LPRASPBDLGW); +} + +version (Unicode) { + alias RASENTRYDLGW RASENTRYDLG; + alias RASPBDLGW RASPBDLG; + alias RASNOUSERW RASNOUSER; + alias RasDialDlgW RasDialDlg; + alias RasEntryDlgW RasEntryDlg; + alias RasPhonebookDlgW RasPhonebookDlg; +} else { + alias RASENTRYDLGA RASENTRYDLG; + alias RASPBDLGA RASPBDLG; + alias RASNOUSERA RASNOUSER; + alias RasDialDlgA RasDialDlg; + alias RasEntryDlgA RasEntryDlg; + alias RasPhonebookDlgA RasPhonebookDlg; +} + +alias RASENTRYDLG* LPRASENTRYDLG; +alias RASPBDLG* LPRASPBDLG; +alias RASNOUSER* LPRASNOUSER; Index: src/win32/raserror.d ================================================================== --- src/win32/raserror.d +++ src/win32/raserror.d @@ -1,215 +1,215 @@ -/***********************************************************************\ -* raserror.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.raserror; - -enum { - SUCCESS = 0, - RASBASE = 600, - PENDING = RASBASE, - ERROR_INVALID_PORT_HANDLE, - ERROR_PORT_ALREADY_OPEN, - ERROR_BUFFER_TOO_SMALL, - ERROR_WRONG_INFO_SPECIFIED, - ERROR_CANNOT_SET_PORT_INFO, - ERROR_PORT_NOT_CONNECTED, - ERROR_EVENT_INVALID, - ERROR_DEVICE_DOES_NOT_EXIST, - ERROR_DEVICETYPE_DOES_NOT_EXIST, - ERROR_BUFFER_INVALID, - ERROR_ROUTE_NOT_AVAILABLE, - ERROR_ROUTE_NOT_ALLOCATED, - ERROR_INVALID_COMPRESSION_SPECIFIED, - ERROR_OUT_OF_BUFFERS, - ERROR_PORT_NOT_FOUND, - ERROR_ASYNC_REQUEST_PENDING, - ERROR_ALREADY_DISCONNECTING, - ERROR_PORT_NOT_OPEN, - ERROR_PORT_DISCONNECTED, - ERROR_NO_ENDPOINTS, - ERROR_CANNOT_OPEN_PHONEBOOK, - ERROR_CANNOT_LOAD_PHONEBOOK, - ERROR_CANNOT_FIND_PHONEBOOK_ENTRY, - ERROR_CANNOT_WRITE_PHONEBOOK, - ERROR_CORRUPT_PHONEBOOK, - ERROR_CANNOT_LOAD_STRING, - ERROR_KEY_NOT_FOUND, - ERROR_DISCONNECTION, - ERROR_REMOTE_DISCONNECTION, - ERROR_HARDWARE_FAILURE, - ERROR_USER_DISCONNECTION, - ERROR_INVALID_SIZE, - ERROR_PORT_NOT_AVAILABLE, - ERROR_CANNOT_PROJECT_CLIENT, - ERROR_UNKNOWN, - ERROR_WRONG_DEVICE_ATTACHED, - ERROR_BAD_STRING, - ERROR_REQUEST_TIMEOUT, - ERROR_CANNOT_GET_LANA, - ERROR_NETBIOS_ERROR, - ERROR_SERVER_OUT_OF_RESOURCES, - ERROR_NAME_EXISTS_ON_NET, - ERROR_SERVER_GENERAL_NET_FAILURE, - WARNING_MSG_ALIAS_NOT_ADDED, - ERROR_AUTH_INTERNAL, - ERROR_RESTRICTED_LOGON_HOURS, - ERROR_ACCT_DISABLED, - ERROR_PASSWD_EXPIRED, - ERROR_NO_DIALIN_PERMISSION, - ERROR_SERVER_NOT_RESPONDING, - ERROR_FROM_DEVICE, - ERROR_UNRECOGNIZED_RESPONSE, - ERROR_MACRO_NOT_FOUND, - ERROR_MACRO_NOT_DEFINED, - ERROR_MESSAGE_MACRO_NOT_FOUND, - ERROR_DEFAULTOFF_MACRO_NOT_FOUND, - ERROR_FILE_COULD_NOT_BE_OPENED, - ERROR_DEVICENAME_TOO_LONG, - ERROR_DEVICENAME_NOT_FOUND, - ERROR_NO_RESPONSES, - ERROR_NO_COMMAND_FOUND, - ERROR_WRONG_KEY_SPECIFIED, - ERROR_UNKNOWN_DEVICE_TYPE, - ERROR_ALLOCATING_MEMORY, - ERROR_PORT_NOT_CONFIGURED, - ERROR_DEVICE_NOT_READY, - ERROR_READING_INI_FILE, - ERROR_NO_CONNECTION, - ERROR_BAD_USAGE_IN_INI_FILE, - ERROR_READING_SECTIONNAME, - ERROR_READING_DEVICETYPE, - ERROR_READING_DEVICENAME, - ERROR_READING_USAGE, - ERROR_READING_MAXCONNECTBPS, - ERROR_READING_MAXCARRIERBPS, - ERROR_LINE_BUSY, - ERROR_VOICE_ANSWER, - ERROR_NO_ANSWER, - ERROR_NO_CARRIER, - ERROR_NO_DIALTONE, - ERROR_IN_COMMAND, - ERROR_WRITING_SECTIONNAME, - ERROR_WRITING_DEVICETYPE, - ERROR_WRITING_DEVICENAME, - ERROR_WRITING_MAXCONNECTBPS, - ERROR_WRITING_MAXCARRIERBPS, - ERROR_WRITING_USAGE, - ERROR_WRITING_DEFAULTOFF, - ERROR_READING_DEFAULTOFF, - ERROR_EMPTY_INI_FILE, - ERROR_AUTHENTICATION_FAILURE, - ERROR_PORT_OR_DEVICE, - ERROR_NOT_BINARY_MACRO, - ERROR_DCB_NOT_FOUND, - ERROR_STATE_MACHINES_NOT_STARTED, - ERROR_STATE_MACHINES_ALREADY_STARTED, - ERROR_PARTIAL_RESPONSE_LOOPING, - ERROR_UNKNOWN_RESPONSE_KEY, - ERROR_RECV_BUF_FULL, - ERROR_CMD_TOO_LONG, - ERROR_UNSUPPORTED_BPS, - ERROR_UNEXPECTED_RESPONSE, - ERROR_INTERACTIVE_MODE, - ERROR_BAD_CALLBACK_NUMBER, - ERROR_INVALID_AUTH_STATE, - ERROR_WRITING_INITBPS, - ERROR_X25_DIAGNOSTIC, - ERROR_ACCT_EXPIRED, - ERROR_CHANGING_PASSWORD, - ERROR_OVERRUN, - ERROR_RASMAN_CANNOT_INITIALIZE, - ERROR_BIPLEX_PORT_NOT_AVAILABLE, - ERROR_NO_ACTIVE_ISDN_LINES, - ERROR_NO_ISDN_CHANNELS_AVAILABLE, - ERROR_TOO_MANY_LINE_ERRORS, - ERROR_IP_CONFIGURATION, - ERROR_NO_IP_ADDRESSES, - ERROR_PPP_TIMEOUT, - ERROR_PPP_REMOTE_TERMINATED, - ERROR_PPP_NO_PROTOCOLS_CONFIGURED, - ERROR_PPP_NO_RESPONSE, - ERROR_PPP_INVALID_PACKET, - ERROR_PHONE_NUMBER_TOO_LONG, - ERROR_IPXCP_NO_DIALOUT_CONFIGURED, - ERROR_IPXCP_NO_DIALIN_CONFIGURED, - ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE, - ERROR_ACCESSING_TCPCFGDLL, - ERROR_NO_IP_RAS_ADAPTER, - ERROR_SLIP_REQUIRES_IP, - ERROR_PROJECTION_NOT_COMPLETE, - ERROR_PROTOCOL_NOT_CONFIGURED, - ERROR_PPP_NOT_CONVERGING, - ERROR_PPP_CP_REJECTED, - ERROR_PPP_LCP_TERMINATED, - ERROR_PPP_REQUIRED_ADDRESS_REJECTED, - ERROR_PPP_NCP_TERMINATED, - ERROR_PPP_LOOPBACK_DETECTED, - ERROR_PPP_NO_ADDRESS_ASSIGNED, - ERROR_CANNOT_USE_LOGON_CREDENTIALS, - ERROR_TAPI_CONFIGURATION, - ERROR_NO_LOCAL_ENCRYPTION, - ERROR_NO_REMOTE_ENCRYPTION, - ERROR_REMOTE_REQUIRES_ENCRYPTION, - ERROR_IPXCP_NET_NUMBER_CONFLICT, - ERROR_INVALID_SMM, - ERROR_SMM_UNINITIALIZED, - ERROR_NO_MAC_FOR_PORT, - ERROR_SMM_TIMEOUT, - ERROR_BAD_PHONE_NUMBER, - ERROR_WRONG_MODULE, - ERROR_INVALID_CALLBACK_NUMBER, - ERROR_SCRIPT_SYNTAX, - ERROR_HANGUP_FAILED, - ERROR_BUNDLE_NOT_FOUND, - ERROR_CANNOT_DO_CUSTOMDIAL, - ERROR_DIAL_ALREADY_IN_PROGRESS, - ERROR_RASAUTO_CANNOT_INITIALIZE, - ERROR_CONNECTION_ALREADY_SHARED, - ERROR_SHARING_CHANGE_FAILED, - ERROR_SHARING_ROUTER_INSTALL, - ERROR_SHARE_CONNECTION_FAILED, - ERROR_SHARING_PRIVATE_INSTALL, - ERROR_CANNOT_SHARE_CONNECTION, - ERROR_NO_SMART_CARD_READER, - ERROR_SHARING_ADDRESS_EXISTS, - ERROR_NO_CERTIFICATE, - ERROR_SHARING_MULTIPLE_ADDRESSES, - ERROR_FAILED_TO_ENCRYPT, - ERROR_BAD_ADDRESS_SPECIFIED, - ERROR_CONNECTION_REJECT, - ERROR_CONGESTION, - ERROR_INCOMPATIBLE, - ERROR_NUMBERCHANGED, - ERROR_TEMPFAILURE, - ERROR_BLOCKED, - ERROR_DONOTDISTURB, - ERROR_OUTOFORDER, - ERROR_UNABLE_TO_AUTHENTICATE_SERVER, - ERROR_SMART_CARD_REQUIRED, - ERROR_INVALID_FUNCTION_FOR_ENTRY, - ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND, - ERROR_SHARING_RRAS_CONFLICT, - ERROR_SHARING_NO_PRIVATE_LAN, - ERROR_NO_DIFF_USER_AT_LOGON, - ERROR_NO_REG_CERT_AT_LOGON, - ERROR_OAKLEY_NO_CERT, - ERROR_OAKLEY_AUTH_FAIL, - ERROR_OAKLEY_ATTRIB_FAIL, - ERROR_OAKLEY_GENERAL_PROCESSING, - ERROR_OAKLEY_NO_PEER_CERT, - ERROR_OAKLEY_NO_POLICY, - ERROR_OAKLEY_TIMED_OUT, - ERROR_OAKLEY_ERROR, - ERROR_UNKNOWN_FRAMED_PROTOCOL, - ERROR_WRONG_TUNNEL_TYPE, - ERROR_UNKNOWN_SERVICE_TYPE, - ERROR_CONNECTING_DEVICE_NOT_FOUND, - ERROR_NO_EAPTLS_CERTIFICATE, // = RASBASE+198 - RASBASEEND = ERROR_NO_EAPTLS_CERTIFICATE -} +/***********************************************************************\ +* raserror.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.raserror; + +enum { + SUCCESS = 0, + RASBASE = 600, + PENDING = RASBASE, + ERROR_INVALID_PORT_HANDLE, + ERROR_PORT_ALREADY_OPEN, + ERROR_BUFFER_TOO_SMALL, + ERROR_WRONG_INFO_SPECIFIED, + ERROR_CANNOT_SET_PORT_INFO, + ERROR_PORT_NOT_CONNECTED, + ERROR_EVENT_INVALID, + ERROR_DEVICE_DOES_NOT_EXIST, + ERROR_DEVICETYPE_DOES_NOT_EXIST, + ERROR_BUFFER_INVALID, + ERROR_ROUTE_NOT_AVAILABLE, + ERROR_ROUTE_NOT_ALLOCATED, + ERROR_INVALID_COMPRESSION_SPECIFIED, + ERROR_OUT_OF_BUFFERS, + ERROR_PORT_NOT_FOUND, + ERROR_ASYNC_REQUEST_PENDING, + ERROR_ALREADY_DISCONNECTING, + ERROR_PORT_NOT_OPEN, + ERROR_PORT_DISCONNECTED, + ERROR_NO_ENDPOINTS, + ERROR_CANNOT_OPEN_PHONEBOOK, + ERROR_CANNOT_LOAD_PHONEBOOK, + ERROR_CANNOT_FIND_PHONEBOOK_ENTRY, + ERROR_CANNOT_WRITE_PHONEBOOK, + ERROR_CORRUPT_PHONEBOOK, + ERROR_CANNOT_LOAD_STRING, + ERROR_KEY_NOT_FOUND, + ERROR_DISCONNECTION, + ERROR_REMOTE_DISCONNECTION, + ERROR_HARDWARE_FAILURE, + ERROR_USER_DISCONNECTION, + ERROR_INVALID_SIZE, + ERROR_PORT_NOT_AVAILABLE, + ERROR_CANNOT_PROJECT_CLIENT, + ERROR_UNKNOWN, + ERROR_WRONG_DEVICE_ATTACHED, + ERROR_BAD_STRING, + ERROR_REQUEST_TIMEOUT, + ERROR_CANNOT_GET_LANA, + ERROR_NETBIOS_ERROR, + ERROR_SERVER_OUT_OF_RESOURCES, + ERROR_NAME_EXISTS_ON_NET, + ERROR_SERVER_GENERAL_NET_FAILURE, + WARNING_MSG_ALIAS_NOT_ADDED, + ERROR_AUTH_INTERNAL, + ERROR_RESTRICTED_LOGON_HOURS, + ERROR_ACCT_DISABLED, + ERROR_PASSWD_EXPIRED, + ERROR_NO_DIALIN_PERMISSION, + ERROR_SERVER_NOT_RESPONDING, + ERROR_FROM_DEVICE, + ERROR_UNRECOGNIZED_RESPONSE, + ERROR_MACRO_NOT_FOUND, + ERROR_MACRO_NOT_DEFINED, + ERROR_MESSAGE_MACRO_NOT_FOUND, + ERROR_DEFAULTOFF_MACRO_NOT_FOUND, + ERROR_FILE_COULD_NOT_BE_OPENED, + ERROR_DEVICENAME_TOO_LONG, + ERROR_DEVICENAME_NOT_FOUND, + ERROR_NO_RESPONSES, + ERROR_NO_COMMAND_FOUND, + ERROR_WRONG_KEY_SPECIFIED, + ERROR_UNKNOWN_DEVICE_TYPE, + ERROR_ALLOCATING_MEMORY, + ERROR_PORT_NOT_CONFIGURED, + ERROR_DEVICE_NOT_READY, + ERROR_READING_INI_FILE, + ERROR_NO_CONNECTION, + ERROR_BAD_USAGE_IN_INI_FILE, + ERROR_READING_SECTIONNAME, + ERROR_READING_DEVICETYPE, + ERROR_READING_DEVICENAME, + ERROR_READING_USAGE, + ERROR_READING_MAXCONNECTBPS, + ERROR_READING_MAXCARRIERBPS, + ERROR_LINE_BUSY, + ERROR_VOICE_ANSWER, + ERROR_NO_ANSWER, + ERROR_NO_CARRIER, + ERROR_NO_DIALTONE, + ERROR_IN_COMMAND, + ERROR_WRITING_SECTIONNAME, + ERROR_WRITING_DEVICETYPE, + ERROR_WRITING_DEVICENAME, + ERROR_WRITING_MAXCONNECTBPS, + ERROR_WRITING_MAXCARRIERBPS, + ERROR_WRITING_USAGE, + ERROR_WRITING_DEFAULTOFF, + ERROR_READING_DEFAULTOFF, + ERROR_EMPTY_INI_FILE, + ERROR_AUTHENTICATION_FAILURE, + ERROR_PORT_OR_DEVICE, + ERROR_NOT_BINARY_MACRO, + ERROR_DCB_NOT_FOUND, + ERROR_STATE_MACHINES_NOT_STARTED, + ERROR_STATE_MACHINES_ALREADY_STARTED, + ERROR_PARTIAL_RESPONSE_LOOPING, + ERROR_UNKNOWN_RESPONSE_KEY, + ERROR_RECV_BUF_FULL, + ERROR_CMD_TOO_LONG, + ERROR_UNSUPPORTED_BPS, + ERROR_UNEXPECTED_RESPONSE, + ERROR_INTERACTIVE_MODE, + ERROR_BAD_CALLBACK_NUMBER, + ERROR_INVALID_AUTH_STATE, + ERROR_WRITING_INITBPS, + ERROR_X25_DIAGNOSTIC, + ERROR_ACCT_EXPIRED, + ERROR_CHANGING_PASSWORD, + ERROR_OVERRUN, + ERROR_RASMAN_CANNOT_INITIALIZE, + ERROR_BIPLEX_PORT_NOT_AVAILABLE, + ERROR_NO_ACTIVE_ISDN_LINES, + ERROR_NO_ISDN_CHANNELS_AVAILABLE, + ERROR_TOO_MANY_LINE_ERRORS, + ERROR_IP_CONFIGURATION, + ERROR_NO_IP_ADDRESSES, + ERROR_PPP_TIMEOUT, + ERROR_PPP_REMOTE_TERMINATED, + ERROR_PPP_NO_PROTOCOLS_CONFIGURED, + ERROR_PPP_NO_RESPONSE, + ERROR_PPP_INVALID_PACKET, + ERROR_PHONE_NUMBER_TOO_LONG, + ERROR_IPXCP_NO_DIALOUT_CONFIGURED, + ERROR_IPXCP_NO_DIALIN_CONFIGURED, + ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE, + ERROR_ACCESSING_TCPCFGDLL, + ERROR_NO_IP_RAS_ADAPTER, + ERROR_SLIP_REQUIRES_IP, + ERROR_PROJECTION_NOT_COMPLETE, + ERROR_PROTOCOL_NOT_CONFIGURED, + ERROR_PPP_NOT_CONVERGING, + ERROR_PPP_CP_REJECTED, + ERROR_PPP_LCP_TERMINATED, + ERROR_PPP_REQUIRED_ADDRESS_REJECTED, + ERROR_PPP_NCP_TERMINATED, + ERROR_PPP_LOOPBACK_DETECTED, + ERROR_PPP_NO_ADDRESS_ASSIGNED, + ERROR_CANNOT_USE_LOGON_CREDENTIALS, + ERROR_TAPI_CONFIGURATION, + ERROR_NO_LOCAL_ENCRYPTION, + ERROR_NO_REMOTE_ENCRYPTION, + ERROR_REMOTE_REQUIRES_ENCRYPTION, + ERROR_IPXCP_NET_NUMBER_CONFLICT, + ERROR_INVALID_SMM, + ERROR_SMM_UNINITIALIZED, + ERROR_NO_MAC_FOR_PORT, + ERROR_SMM_TIMEOUT, + ERROR_BAD_PHONE_NUMBER, + ERROR_WRONG_MODULE, + ERROR_INVALID_CALLBACK_NUMBER, + ERROR_SCRIPT_SYNTAX, + ERROR_HANGUP_FAILED, + ERROR_BUNDLE_NOT_FOUND, + ERROR_CANNOT_DO_CUSTOMDIAL, + ERROR_DIAL_ALREADY_IN_PROGRESS, + ERROR_RASAUTO_CANNOT_INITIALIZE, + ERROR_CONNECTION_ALREADY_SHARED, + ERROR_SHARING_CHANGE_FAILED, + ERROR_SHARING_ROUTER_INSTALL, + ERROR_SHARE_CONNECTION_FAILED, + ERROR_SHARING_PRIVATE_INSTALL, + ERROR_CANNOT_SHARE_CONNECTION, + ERROR_NO_SMART_CARD_READER, + ERROR_SHARING_ADDRESS_EXISTS, + ERROR_NO_CERTIFICATE, + ERROR_SHARING_MULTIPLE_ADDRESSES, + ERROR_FAILED_TO_ENCRYPT, + ERROR_BAD_ADDRESS_SPECIFIED, + ERROR_CONNECTION_REJECT, + ERROR_CONGESTION, + ERROR_INCOMPATIBLE, + ERROR_NUMBERCHANGED, + ERROR_TEMPFAILURE, + ERROR_BLOCKED, + ERROR_DONOTDISTURB, + ERROR_OUTOFORDER, + ERROR_UNABLE_TO_AUTHENTICATE_SERVER, + ERROR_SMART_CARD_REQUIRED, + ERROR_INVALID_FUNCTION_FOR_ENTRY, + ERROR_CERT_FOR_ENCRYPTION_NOT_FOUND, + ERROR_SHARING_RRAS_CONFLICT, + ERROR_SHARING_NO_PRIVATE_LAN, + ERROR_NO_DIFF_USER_AT_LOGON, + ERROR_NO_REG_CERT_AT_LOGON, + ERROR_OAKLEY_NO_CERT, + ERROR_OAKLEY_AUTH_FAIL, + ERROR_OAKLEY_ATTRIB_FAIL, + ERROR_OAKLEY_GENERAL_PROCESSING, + ERROR_OAKLEY_NO_PEER_CERT, + ERROR_OAKLEY_NO_POLICY, + ERROR_OAKLEY_TIMED_OUT, + ERROR_OAKLEY_ERROR, + ERROR_UNKNOWN_FRAMED_PROTOCOL, + ERROR_WRONG_TUNNEL_TYPE, + ERROR_UNKNOWN_SERVICE_TYPE, + ERROR_CONNECTING_DEVICE_NOT_FOUND, + ERROR_NO_EAPTLS_CERTIFICATE, // = RASBASE+198 + RASBASEEND = ERROR_NO_EAPTLS_CERTIFICATE +} Index: src/win32/rassapi.d ================================================================== --- src/win32/rassapi.d +++ src/win32/rassapi.d @@ -1,220 +1,220 @@ -/***********************************************************************\ -* rassapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rassapi; - -private import win32.lmcons, win32.windef; - -// FIXME: check types of constants - -const size_t - RASSAPI_MAX_PHONENUMBER_SIZE = 128, - RASSAPI_MAX_MEDIA_NAME = 16, - RASSAPI_MAX_PORT_NAME = 16, - RASSAPI_MAX_DEVICE_NAME = 128, - RASSAPI_MAX_DEVICETYPE_NAME = 16, - RASSAPI_MAX_PARAM_KEY_SIZE = 32; - -const RASPRIV_NoCallback = 0x01; -const RASPRIV_AdminSetCallback = 0x02; -const RASPRIV_CallerSetCallback = 0x04; -const RASPRIV_DialinPrivilege = 0x08; -const RASPRIV_CallbackType = 0x07; - -enum { - RAS_MODEM_OPERATIONAL = 1, - RAS_MODEM_NOT_RESPONDING, - RAS_MODEM_HARDWARE_FAILURE, - RAS_MODEM_INCORRECT_RESPONSE, - RAS_MODEM_UNKNOWN // = 5 -} - -enum { - RAS_PORT_NON_OPERATIONAL = 1, - RAS_PORT_DISCONNECTED, - RAS_PORT_CALLING_BACK, - RAS_PORT_LISTENING, - RAS_PORT_AUTHENTICATING, - RAS_PORT_AUTHENTICATED, - RAS_PORT_INITIALIZING // = 7 -} - -enum { - MEDIA_UNKNOWN, - MEDIA_SERIAL, - MEDIA_RAS10_SERIAL, - MEDIA_X25, - MEDIA_ISDN -} - -const USER_AUTHENTICATED = 0x0001; -const MESSENGER_PRESENT = 0x0002; -const PPP_CLIENT = 0x0004; -const GATEWAY_ACTIVE = 0x0008; -const REMOTE_LISTEN = 0x0010; -const PORT_MULTILINKED = 0x0020; - -const size_t - RAS_IPADDRESSLEN = 15, - RAS_IPXADDRESSLEN = 22, - RAS_ATADDRESSLEN = 32; - -// FIXME: should these be grouped together? -enum { - RASDOWNLEVEL = 10, - RASADMIN_35 = 35, - RASADMIN_CURRENT = 40 -} - -alias ULONG IPADDR; - -enum RAS_PARAMS_FORMAT { - ParamNumber = 0, - ParamString -} - -union RAS_PARAMS_VALUE { - DWORD Number; - struct _String { - DWORD Length; - PCHAR Data; - } - _String String; -} - -struct RAS_PARAMETERS { - CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key; - RAS_PARAMS_FORMAT P_Type; - BYTE P_Attributes; - RAS_PARAMS_VALUE P_Value; -} - -struct RAS_USER_0 { - BYTE bfPrivilege; - WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber; -} -alias RAS_USER_0* PRAS_USER_0; - -struct RAS_PORT_0 { - WCHAR[RASSAPI_MAX_PORT_NAME] wszPortName; - WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType; - WCHAR[RASSAPI_MAX_DEVICE_NAME] wszDeviceName; - WCHAR[RASSAPI_MAX_MEDIA_NAME] wszMediaName; - DWORD reserved; - DWORD Flags; - WCHAR[UNLEN + 1] wszUserName; - WCHAR[NETBIOS_NAME_LEN] wszComputer; - DWORD dwStartSessionTime; // seconds from 1/1/1970 - WCHAR[DNLEN + 1] wszLogonDomain; - BOOL fAdvancedServer; -} -alias RAS_PORT_0* PRAS_PORT_0; - -struct RAS_PPP_NBFCP_RESULT { - DWORD dwError; - DWORD dwNetBiosError; - CHAR[NETBIOS_NAME_LEN + 1] szName; - WCHAR[NETBIOS_NAME_LEN + 1] wszWksta; -} - -struct RAS_PPP_IPCP_RESULT { - DWORD dwError; - WCHAR[RAS_IPADDRESSLEN + 1] wszAddress; -} - -struct RAS_PPP_IPXCP_RESULT { - DWORD dwError; - WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress; -} - -struct RAS_PPP_ATCP_RESULT { - DWORD dwError; - WCHAR[RAS_ATADDRESSLEN + 1] wszAddress; -} - -struct RAS_PPP_PROJECTION_RESULT { - RAS_PPP_NBFCP_RESULT nbf; - RAS_PPP_IPCP_RESULT ip; - RAS_PPP_IPXCP_RESULT ipx; - RAS_PPP_ATCP_RESULT at; -} - -struct RAS_PORT_1 { - RAS_PORT_0 rasport0; - DWORD LineCondition; - DWORD HardwareCondition; - DWORD LineSpeed; - WORD NumStatistics; - WORD NumMediaParms; - DWORD SizeMediaParms; - RAS_PPP_PROJECTION_RESULT ProjResult; -} -alias RAS_PORT_1* PRAS_PORT_1; - -struct RAS_PORT_STATISTICS { - DWORD dwBytesXmited; - DWORD dwBytesRcved; - DWORD dwFramesXmited; - DWORD dwFramesRcved; - DWORD dwCrcErr; - DWORD dwTimeoutErr; - DWORD dwAlignmentErr; - DWORD dwHardwareOverrunErr; - DWORD dwFramingErr; - DWORD dwBufferOverrunErr; - DWORD dwBytesXmitedUncompressed; - DWORD dwBytesRcvedUncompressed; - DWORD dwBytesXmitedCompressed; - DWORD dwBytesRcvedCompressed; - DWORD dwPortBytesXmited; - DWORD dwPortBytesRcved; - DWORD dwPortFramesXmited; - DWORD dwPortFramesRcved; - DWORD dwPortCrcErr; - DWORD dwPortTimeoutErr; - DWORD dwPortAlignmentErr; - DWORD dwPortHardwareOverrunErr; - DWORD dwPortFramingErr; - DWORD dwPortBufferOverrunErr; - DWORD dwPortBytesXmitedUncompressed; - DWORD dwPortBytesRcvedUncompressed; - DWORD dwPortBytesXmitedCompressed; - DWORD dwPortBytesRcvedCompressed; -} -alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS; - -struct RAS_SERVER_0 { - WORD TotalPorts; - WORD PortsInUse; - DWORD RasVersion; -} -alias RAS_SERVER_0* PRAS_SERVER_0; - -extern (Windows) { - DWORD RasAdminServerGetInfo(CPtr!(WCHAR), PRAS_SERVER_0); - DWORD RasAdminGetUserAccountServer(CPtr!(WCHAR), CPtr!(WCHAR), LPWSTR); - DWORD RasAdminUserGetInfo(CPtr!(WCHAR), CPtr!(WCHAR), PRAS_USER_0); - DWORD RasAdminUserSetInfo(CPtr!(WCHAR), CPtr!(WCHAR), PRAS_USER_0); - DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*); - DWORD RasAdminPortGetInfo(CPtr!(WCHAR), CPtr!(WCHAR), RAS_PORT_1*, - RAS_PORT_STATISTICS*, RAS_PARAMETERS**); - DWORD RasAdminPortClearStatistics(CPtr!(WCHAR), CPtr!(WCHAR)); - DWORD RasAdminPortDisconnect(CPtr!(WCHAR), CPtr!(WCHAR)); - DWORD RasAdminFreeBuffer(PVOID); - DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD); - BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*, - RAS_PARAMETERS*); - VOID RasAdminConnectionHangupNotification(RAS_PORT_1*, - RAS_PORT_STATISTICS*, RAS_PARAMETERS*); - DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*); - VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*); - DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0); - DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0); -} +/***********************************************************************\ +* rassapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rassapi; + +private import win32.lmcons, win32.windef; + +// FIXME: check types of constants + +const size_t + RASSAPI_MAX_PHONENUMBER_SIZE = 128, + RASSAPI_MAX_MEDIA_NAME = 16, + RASSAPI_MAX_PORT_NAME = 16, + RASSAPI_MAX_DEVICE_NAME = 128, + RASSAPI_MAX_DEVICETYPE_NAME = 16, + RASSAPI_MAX_PARAM_KEY_SIZE = 32; + +const RASPRIV_NoCallback = 0x01; +const RASPRIV_AdminSetCallback = 0x02; +const RASPRIV_CallerSetCallback = 0x04; +const RASPRIV_DialinPrivilege = 0x08; +const RASPRIV_CallbackType = 0x07; + +enum { + RAS_MODEM_OPERATIONAL = 1, + RAS_MODEM_NOT_RESPONDING, + RAS_MODEM_HARDWARE_FAILURE, + RAS_MODEM_INCORRECT_RESPONSE, + RAS_MODEM_UNKNOWN // = 5 +} + +enum { + RAS_PORT_NON_OPERATIONAL = 1, + RAS_PORT_DISCONNECTED, + RAS_PORT_CALLING_BACK, + RAS_PORT_LISTENING, + RAS_PORT_AUTHENTICATING, + RAS_PORT_AUTHENTICATED, + RAS_PORT_INITIALIZING // = 7 +} + +enum { + MEDIA_UNKNOWN, + MEDIA_SERIAL, + MEDIA_RAS10_SERIAL, + MEDIA_X25, + MEDIA_ISDN +} + +const USER_AUTHENTICATED = 0x0001; +const MESSENGER_PRESENT = 0x0002; +const PPP_CLIENT = 0x0004; +const GATEWAY_ACTIVE = 0x0008; +const REMOTE_LISTEN = 0x0010; +const PORT_MULTILINKED = 0x0020; + +const size_t + RAS_IPADDRESSLEN = 15, + RAS_IPXADDRESSLEN = 22, + RAS_ATADDRESSLEN = 32; + +// FIXME: should these be grouped together? +enum { + RASDOWNLEVEL = 10, + RASADMIN_35 = 35, + RASADMIN_CURRENT = 40 +} + +alias ULONG IPADDR; + +enum RAS_PARAMS_FORMAT { + ParamNumber = 0, + ParamString +} + +union RAS_PARAMS_VALUE { + DWORD Number; + struct _String { + DWORD Length; + PCHAR Data; + } + _String String; +} + +struct RAS_PARAMETERS { + CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key; + RAS_PARAMS_FORMAT P_Type; + BYTE P_Attributes; + RAS_PARAMS_VALUE P_Value; +} + +struct RAS_USER_0 { + BYTE bfPrivilege; + WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber; +} +alias RAS_USER_0* PRAS_USER_0; + +struct RAS_PORT_0 { + WCHAR[RASSAPI_MAX_PORT_NAME] wszPortName; + WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType; + WCHAR[RASSAPI_MAX_DEVICE_NAME] wszDeviceName; + WCHAR[RASSAPI_MAX_MEDIA_NAME] wszMediaName; + DWORD reserved; + DWORD Flags; + WCHAR[UNLEN + 1] wszUserName; + WCHAR[NETBIOS_NAME_LEN] wszComputer; + DWORD dwStartSessionTime; // seconds from 1/1/1970 + WCHAR[DNLEN + 1] wszLogonDomain; + BOOL fAdvancedServer; +} +alias RAS_PORT_0* PRAS_PORT_0; + +struct RAS_PPP_NBFCP_RESULT { + DWORD dwError; + DWORD dwNetBiosError; + CHAR[NETBIOS_NAME_LEN + 1] szName; + WCHAR[NETBIOS_NAME_LEN + 1] wszWksta; +} + +struct RAS_PPP_IPCP_RESULT { + DWORD dwError; + WCHAR[RAS_IPADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_IPXCP_RESULT { + DWORD dwError; + WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_ATCP_RESULT { + DWORD dwError; + WCHAR[RAS_ATADDRESSLEN + 1] wszAddress; +} + +struct RAS_PPP_PROJECTION_RESULT { + RAS_PPP_NBFCP_RESULT nbf; + RAS_PPP_IPCP_RESULT ip; + RAS_PPP_IPXCP_RESULT ipx; + RAS_PPP_ATCP_RESULT at; +} + +struct RAS_PORT_1 { + RAS_PORT_0 rasport0; + DWORD LineCondition; + DWORD HardwareCondition; + DWORD LineSpeed; + WORD NumStatistics; + WORD NumMediaParms; + DWORD SizeMediaParms; + RAS_PPP_PROJECTION_RESULT ProjResult; +} +alias RAS_PORT_1* PRAS_PORT_1; + +struct RAS_PORT_STATISTICS { + DWORD dwBytesXmited; + DWORD dwBytesRcved; + DWORD dwFramesXmited; + DWORD dwFramesRcved; + DWORD dwCrcErr; + DWORD dwTimeoutErr; + DWORD dwAlignmentErr; + DWORD dwHardwareOverrunErr; + DWORD dwFramingErr; + DWORD dwBufferOverrunErr; + DWORD dwBytesXmitedUncompressed; + DWORD dwBytesRcvedUncompressed; + DWORD dwBytesXmitedCompressed; + DWORD dwBytesRcvedCompressed; + DWORD dwPortBytesXmited; + DWORD dwPortBytesRcved; + DWORD dwPortFramesXmited; + DWORD dwPortFramesRcved; + DWORD dwPortCrcErr; + DWORD dwPortTimeoutErr; + DWORD dwPortAlignmentErr; + DWORD dwPortHardwareOverrunErr; + DWORD dwPortFramingErr; + DWORD dwPortBufferOverrunErr; + DWORD dwPortBytesXmitedUncompressed; + DWORD dwPortBytesRcvedUncompressed; + DWORD dwPortBytesXmitedCompressed; + DWORD dwPortBytesRcvedCompressed; +} +alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS; + +struct RAS_SERVER_0 { + WORD TotalPorts; + WORD PortsInUse; + DWORD RasVersion; +} +alias RAS_SERVER_0* PRAS_SERVER_0; + +extern (Windows) { + DWORD RasAdminServerGetInfo(const(WCHAR)*, PRAS_SERVER_0); + DWORD RasAdminGetUserAccountServer(const(WCHAR)*, const(WCHAR)*, LPWSTR); + DWORD RasAdminUserGetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); + DWORD RasAdminUserSetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0); + DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*); + DWORD RasAdminPortGetInfo(const(WCHAR)*, const(WCHAR)*, RAS_PORT_1*, + RAS_PORT_STATISTICS*, RAS_PARAMETERS**); + DWORD RasAdminPortClearStatistics(const(WCHAR)*, const(WCHAR)*); + DWORD RasAdminPortDisconnect(const(WCHAR)*, const(WCHAR)*); + DWORD RasAdminFreeBuffer(PVOID); + DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD); + BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*, + RAS_PARAMETERS*); + VOID RasAdminConnectionHangupNotification(RAS_PORT_1*, + RAS_PORT_STATISTICS*, RAS_PARAMETERS*); + DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*); + VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*); + DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0); + DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0); +} ADDED src/win32/readme.txt Index: src/win32/readme.txt ================================================================== --- src/win32/readme.txt +++ src/win32/readme.txt @@ -0,0 +1,15 @@ ++--------------------------------------+ +| Translation of the Win32 API headers | ++--------------------------------------+ + +This is a project to create a well-crafted translation of the Windows 32-bit API headers in the D programming language. + +The project started off as an improvement of Y. Tomino's translation, but is now a derivative of the public domain MinGW Windows headers. + +The official project page is at + +http://www.dsource.org/projects/bindings/wiki/WindowsApi + +If you wish to contribute to this project, please assign modules to yourself at that site, and refer to the translation instructions. + +Email me with comments/suggestions/bug reports: smjg@iname.com Index: src/win32/reason.d ================================================================== --- src/win32/reason.d +++ src/win32/reason.d @@ -1,63 +1,63 @@ -/***********************************************************************\ -* reason.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.reason; - -private import win32.w32api, win32.windef; - -static assert (_WIN32_WINNT >= 0x501, - "win32.reason is only available on WindowsXP and later"); - - -enum : DWORD { - SHTDN_REASON_MAJOR_OTHER = 0x00000000, - SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, - SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, - SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, - SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, - SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, - SHTDN_REASON_MAJOR_POWER = 0x00060000, - SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 -} - -enum : DWORD { - SHTDN_REASON_MINOR_OTHER, - SHTDN_REASON_MINOR_MAINTENANCE, - SHTDN_REASON_MINOR_INSTALLATION, - SHTDN_REASON_MINOR_UPGRADE, - SHTDN_REASON_MINOR_RECONFIG, - SHTDN_REASON_MINOR_HUNG, - SHTDN_REASON_MINOR_UNSTABLE, - SHTDN_REASON_MINOR_DISK, - SHTDN_REASON_MINOR_PROCESSOR, - SHTDN_REASON_MINOR_NETWORKCARD, - SHTDN_REASON_MINOR_POWER_SUPPLY, - SHTDN_REASON_MINOR_CORDUNPLUGGED, - SHTDN_REASON_MINOR_ENVIRONMENT, - SHTDN_REASON_MINOR_HARDWARE_DRIVER, - SHTDN_REASON_MINOR_OTHERDRIVER, - SHTDN_REASON_MINOR_BLUESCREEN, - SHTDN_REASON_MINOR_SERVICEPACK, - SHTDN_REASON_MINOR_HOTFIX, - SHTDN_REASON_MINOR_SECURITYFIX, - SHTDN_REASON_MINOR_SECURITY, - SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY, - SHTDN_REASON_MINOR_WMI, - SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL, - SHTDN_REASON_MINOR_HOTFIX_UNINSTALL, - SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL, - SHTDN_REASON_MINOR_MMC, // = 0x00000019 - SHTDN_REASON_MINOR_TERMSRV = 0x00000020 -} - -enum : DWORD { - SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, - SHTDN_REASON_FLAG_PLANNED = 0x80000000 -} +/***********************************************************************\ +* reason.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.reason; + +private import win32.w32api, win32.windef; + +static assert (_WIN32_WINNT >= 0x501, + "win32.reason is only available on WindowsXP and later"); + + +enum : DWORD { + SHTDN_REASON_MAJOR_OTHER = 0x00000000, + SHTDN_REASON_MAJOR_HARDWARE = 0x00010000, + SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000, + SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000, + SHTDN_REASON_MAJOR_APPLICATION = 0x00040000, + SHTDN_REASON_MAJOR_SYSTEM = 0x00050000, + SHTDN_REASON_MAJOR_POWER = 0x00060000, + SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 +} + +enum : DWORD { + SHTDN_REASON_MINOR_OTHER, + SHTDN_REASON_MINOR_MAINTENANCE, + SHTDN_REASON_MINOR_INSTALLATION, + SHTDN_REASON_MINOR_UPGRADE, + SHTDN_REASON_MINOR_RECONFIG, + SHTDN_REASON_MINOR_HUNG, + SHTDN_REASON_MINOR_UNSTABLE, + SHTDN_REASON_MINOR_DISK, + SHTDN_REASON_MINOR_PROCESSOR, + SHTDN_REASON_MINOR_NETWORKCARD, + SHTDN_REASON_MINOR_POWER_SUPPLY, + SHTDN_REASON_MINOR_CORDUNPLUGGED, + SHTDN_REASON_MINOR_ENVIRONMENT, + SHTDN_REASON_MINOR_HARDWARE_DRIVER, + SHTDN_REASON_MINOR_OTHERDRIVER, + SHTDN_REASON_MINOR_BLUESCREEN, + SHTDN_REASON_MINOR_SERVICEPACK, + SHTDN_REASON_MINOR_HOTFIX, + SHTDN_REASON_MINOR_SECURITYFIX, + SHTDN_REASON_MINOR_SECURITY, + SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY, + SHTDN_REASON_MINOR_WMI, + SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL, + SHTDN_REASON_MINOR_HOTFIX_UNINSTALL, + SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL, + SHTDN_REASON_MINOR_MMC, // = 0x00000019 + SHTDN_REASON_MINOR_TERMSRV = 0x00000020 +} + +enum : DWORD { + SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000, + SHTDN_REASON_FLAG_PLANNED = 0x80000000 +} Index: src/win32/regstr.d ================================================================== --- src/win32/regstr.d +++ src/win32/regstr.d @@ -1,816 +1,816 @@ -/***********************************************************************\ -* regstr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.regstr; - -// TODO: fix possible conflict with shloj. Sort out NEC_98 issue. - -private import win32.windef; - -const REGSTR_MAX_VALUE_LENGTH = 256; - -enum { - IT_COMPACT = 0, - IT_TYPICAL, - IT_PORTABLE, - IT_CUSTOM // = 3 -} - -const DOSOPTGF_DEFCLEAN = 1; - -const DOSOPTF_DEFAULT = 0x01; -const DOSOPTF_SUPPORTED = 0x02; -const DOSOPTF_ALWAYSUSE = 0x04; -const DOSOPTF_USESPMODE = 0x08; -const DOSOPTF_PROVIDESUMB = 0x10; -const DOSOPTF_NEEDSETUP = 0x20; -const DOSOPTF_INDOSSTART = 0x40; -const DOSOPTF_MULTIPLE = 0x80; - -const SUF_FIRSTTIME = 0x0001; -const SUF_EXPRESS = 0x0002; -const SUF_BATCHINF = 0x0004; -const SUF_CLEAN = 0x0008; -const SUF_INSETUP = 0x0010; -const SUF_NETSETUP = 0x0020; -const SUF_NETHDBOOT = 0x0040; -const SUF_NETRPLBOOT = 0x0080; -const SUF_SBSCOPYOK = 0x0100; - -const VPDF_DISABLEPWRMGMT = 1; -const VPDF_FORCEAPM10MODE = 2; -const VPDF_SKIPINTELSLCHECK = 4; -const VPDF_DISABLEPWRSTATUSPOLL = 8; - -const PCMCIA_OPT_HAVE_SOCKET = 0x01; -const PCMCIA_OPT_AUTOMEM = 0x04; -const PCMCIA_OPT_NO_SOUND = 0x08; -const PCMCIA_OPT_NO_AUDIO = 0x10; -const PCMCIA_OPT_NO_APMREMOVE = 0x20; - -const PCMCIA_DEF_MEMBEGIN = 0x0C0000; -const PCMCIA_DEF_MEMEND = 0xFFFFFF; -const PCMCIA_DEF_MEMLEN = 0x001000; -const PCMCIA_DEF_MIN_REGION = 0x010000; - -enum { - PCI_OPTIONS_USE_BIOS = 1, - PCI_OPTIONS_USE_IRQ_STEERING = 2 -} - -const PCI_FLAG_NO_VIDEO_IRQ = 0x0001; -const PCI_FLAG_PCMCIA_WANT_IRQ = 0x0002; -const PCI_FLAG_DUAL_IDE = 0x0004; -const PCI_FLAG_NO_ENUM_AT_ALL = 0x0008; -const PCI_FLAG_ENUM_NO_RESOURCE = 0x0010; -const PCI_FLAG_NEED_DWORD_ACCESS = 0x0020; -const PCI_FLAG_SINGLE_FUNCTION = 0x0040; -const PCI_FLAG_ALWAYS_ENABLED = 0x0080; -const PCI_FLAG_IS_IDE = 0x0100; -const PCI_FLAG_IS_VIDEO = 0x0200; -const PCI_FLAG_FAIL_START = 0x0400; - -const size_t REGSTR_VAL_MAX_HCID_LEN = 1024; - -const REGDF_NOTDETIO = 0x00000001; -const REGDF_NOTDETMEM = 0x00000002; -const REGDF_NOTDETIRQ = 0x00000004; -const REGDF_NOTDETDMA = 0x00000008; -const REGDF_NOTDETALL = REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA; -const REGDF_NEEDFULLCONFIG = 0x00000010; -const REGDF_GENFORCEDCONFIG = 0x00000020; -const REGDF_NODETCONFIG = 0x00008000; -const REGDF_CONFLICTIO = 0x00010000; -const REGDF_CONFLICTMEM = 0x00020000; -const REGDF_CONFLICTIRQ = 0x00040000; -const REGDF_CONFLICTDMA = 0x00080000; -const REGDF_CONFLICTALL = REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA; -const REGDF_MAPIRQ2TO9 = 0x00100000; -const REGDF_NOTVERIFIED = 0x80000000; - -const CONFIGFLAG_DISABLED = 0x0001; -const CONFIGFLAG_REMOVED = 0x0002; -const CONFIGFLAG_MANUAL_INSTALL = 0x0004; -const CONFIGFLAG_IGNORE_BOOT_LC = 0x0008; -const CONFIGFLAG_NET_BOOT = 0x0010; -const CONFIGFLAG_REINSTALL = 0x0020; -const CONFIGFLAG_FAILEDINSTALL = 0x0040; -const CONFIGFLAG_CANTSTOPACHILD = 0x0080; -const CONFIGFLAG_OKREMOVEROM = 0x0100; -const CONFIGFLAG_NOREMOVEEXIT = 0x0200; - -const CSCONFIGFLAG_DISABLED = 1; -const CSCONFIGFLAG_DO_NOT_CREATE = 2; -const CSCONFIGFLAG_DO_NOT_START = 4; -const CSCONFIGFLAG_BITS = 7; - -const DMSTATEFLAG_APPLYTOALL = 1; - -const NUM_RESOURCE_MAP = 256; - -const MF_FLAGS_EVEN_IF_NO_RESOURCE = 1; -const MF_FLAGS_NO_CREATE_IF_NO_RESOURCE = 2; -const MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE = 4; -const MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED = 8; - -const EISAFLAG_NO_IO_MERGE = 1; -const EISAFLAG_SLOT_IO_FIRST = 2; - -const EISA_NO_MAX_FUNCTION = 0xFF; - -const NUM_EISA_RANGES = 4; - -const APMMENUSUSPEND_DISABLED = 0; -const APMMENUSUSPEND_ENABLED = 1; -const APMMENUSUSPEND_UNDOCKED = 2; -const APMMENUSUSPEND_NOCHANGE = 128; - -//#ifndef NEC_98 -const TCHAR[] - REGSTR_KEY_ISAENUM = "ISAPnP", - REGSTR_KEY_EISAENUM = "EISA", - REGSTR_VAL_EISA_RANGES = "EISARanges", - REGSTR_VAL_EISA_FUNCTIONS = "EISAFunctions", - REGSTR_VAL_EISA_FUNCTIONS_MASK = "EISAFunctionsMask", - REGSTR_VAL_EISA_FLAGS = "EISAFlags", - REGSTR_VAL_EISA_SIMULATE_INT15 = "EISASimulateInt15"; -// #else -// #define REGSTR_KEY_ISAENUM TEXT("C98PnP") -// #define REGSTR_KEY_EISAENUM TEXT("NESA") -// #define REGSTR_VAL_EISA_RANGES TEXT("NESARanges") -// #define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions") -// #define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask") -// #define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags") -// #define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15") -// #endif - -const TCHAR[] - REGSTR_KEY_CLASS = `Class`, - REGSTR_KEY_CONFIG = `Config`, - REGSTR_KEY_ENUM = `Enum`, - REGSTR_KEY_ROOTENUM = `Root`, - REGSTR_KEY_BIOSENUM = `BIOS`, - REGSTR_KEY_PCMCIAENUM = `PCMCIA`, - REGSTR_KEY_PCIENUM = `PCI`, - REGSTR_KEY_LOGCONFIG = `LogConfig`, - REGSTR_KEY_SYSTEMBOARD = `*PNP0C01`, - REGSTR_KEY_APM = `*PNP0C05`, - REGSTR_KEY_INIUPDATE = `IniUpdate`, - REG_KEY_INSTDEV = `Installed`, - REGSTR_KEY_DOSOPTCDROM = `CD-ROM`, - REGSTR_KEY_DOSOPTMOUSE = `MOUSE`, - REGSTR_DEFAULT_INSTANCE = `0000`, - REGSTR_PATH_MOTHERBOARD = REGSTR_KEY_SYSTEMBOARD ~ `\` ~ REGSTR_DEFAULT_INSTANCE, - REGSTR_PATH_SETUP = `Software\Microsoft\Windows\CurrentVersion`, - REGSTR_PATH_PIFCONVERT = `Software\Microsoft\Windows\CurrentVersion\PIFConvert`, - REGSTR_PATH_MSDOSOPTS = `Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions`, - REGSTR_PATH_MSDOSEMU = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation`, - REGSTR_PATH_NEWDOSBOX = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\AppCompat`, - REGSTR_PATH_RUNONCE = `Software\Microsoft\Windows\CurrentVersion\RunOnce`, - REGSTR_PATH_RUN = `Software\Microsoft\Windows\CurrentVersion\Run`, - REGSTR_PATH_RUNSERVICESONCE = `Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`, - REGSTR_PATH_RUNSERVICES = `Software\Microsoft\Windows\CurrentVersion\RunServices`, - -//#ifndef REGSTR_PATH_EXPLORER /* also in shlobj.h */ - REGSTR_PATH_EXPLORER = `Software\Microsoft\Windows\CurrentVersion\Explorer`, -//#endif - - REGSTR_PATH_DETECT = `Software\Microsoft\Windows\CurrentVersion\Detect`, - REGSTR_PATH_APPPATHS = `Software\Microsoft\Windows\CurrentVersion\App Paths`, - REGSTR_PATH_UNINSTALL = `Software\Microsoft\Windows\CurrentVersion\Uninstall`, - REGSTR_PATH_REALMODENET = `Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net`, - REGSTR_PATH_NETEQUIV = `Software\Microsoft\Windows\CurrentVersion\Network\Equivalent`, - REGSTR_PATH_CVNETWORK = `Software\Microsoft\Windows\CurrentVersion\Network`, - REGSTR_PATH_IDCONFIGDB = `System\CurrentControlSet\Control\IDConfigDB`, - REGSTR_PATH_CLASS = `System\CurrentControlSet\Services\Class`, - REGSTR_PATH_DISPLAYSETTINGS = `Display\Settings`, - REGSTR_PATH_FONTS = `Display\Fonts`, - REGSTR_PATH_ENUM = `Enum`, - REGSTR_PATH_ROOT = `Enum\Root`, - REGSTR_PATH_SERVICES = `System\CurrentControlSet\Services`, - REGSTR_PATH_VXD = `System\CurrentControlSet\Services\VxD`, - REGSTR_PATH_IOS = `System\CurrentControlSet\Services\VxD\IOS`, - REGSTR_PATH_VMM = `System\CurrentControlSet\Services\VxD\VMM`, - REGSTR_PATH_VPOWERD = `System\CurrentControlSet\Services\VxD\VPOWERD`, - REGSTR_PATH_VNETSUP = `System\CurrentControlSet\Services\VxD\VNETSUP`, - REGSTR_PATH_NWREDIR = `System\CurrentControlSet\Services\VxD\NWREDIR`, - REGSTR_PATH_NCPSERVER = `System\CurrentControlSet\Services\NcpServer\Parameters`, - REGSTR_PATH_IOARB = `System\CurrentControlSet\Services\Arbitrators\IOArb`, - REGSTR_PATH_ADDRARB = `System\CurrentControlSet\Services\Arbitrators\AddrArb`, - REGSTR_PATH_DMAARB = `System\CurrentControlSet\Services\Arbitrators\DMAArb`, - REGSTR_PATH_IRQARB = `System\CurrentControlSet\Services\Arbitrators\IRQArb`, - REGSTR_PATH_CODEPAGE = `System\CurrentControlSet\Control\Nls\Codepage`, - REGSTR_PATH_FILESYSTEM = `System\CurrentControlSet\Control\FileSystem`, - REGSTR_PATH_FILESYSTEM_NOVOLTRACK = `System\CurrentControlSet\Control\FileSystem\NoVolTrack`, - REGSTR_PATH_CDFS = `System\CurrentControlSet\Control\FileSystem\CDFS`, - REGSTR_PATH_WINBOOT = `System\CurrentControlSet\Control\WinBoot`, - REGSTR_PATH_INSTALLEDFILES = `System\CurrentControlSet\Control\InstalledFiles`, - REGSTR_PATH_VMM32FILES = `System\CurrentControlSet\Control\VMM32Files`, - - REGSTR_VAL_BITSPERPIXEL = `BitsPerPixel`, - REGSTR_VAL_RESOLUTION = `Resolution`, - REGSTR_VAL_DPILOGICALX = `DPILogicalX`, - REGSTR_VAL_DPILOGICALY = `DPILogicalY`, - REGSTR_VAL_DPIPHYSICALX = `DPIPhysicalX`, - REGSTR_VAL_DPIPHYSICALY = `DPIPhysicalY`, - REGSTR_VAL_REFRESHRATE = `RefreshRate`, - REGSTR_VAL_DISPLAYFLAGS = `DisplayFlags`, - REGSTR_PATH_CONTROLPANEL = `Control Panel`, - REGSTR_PATH_CONTROLSFOLDER = `Software\Microsoft\Windows\CurrentVersion\Controls Folder`, - REGSTR_VAL_DOSCP = `OEMCP`, - REGSTR_VAL_WINCP = `ACP`, - REGSTR_PATH_DYNA_ENUM = `Config Manager\Enum`, - REGSTR_VAL_HARDWARE_KEY = `HardWareKey`, - REGSTR_VAL_ALLOCATION = `Allocation`, - REGSTR_VAL_PROBLEM = `Problem`, - REGSTR_VAL_STATUS = `Status`, - REGSTR_VAL_DONTUSEMEM = `DontAllocLastMem`, - REGSTR_VAL_SYSTEMROOT = `SystemRoot`, - REGSTR_VAL_BOOTCOUNT = `BootCount`, - REGSTR_VAL_REALNETSTART = `RealNetStart`, - REGSTR_VAL_MEDIA = `MediaPath`, - REGSTR_VAL_CONFIG = `ConfigPath`, - REGSTR_VAL_DEVICEPATH = `DevicePath`, - REGSTR_VAL_SRCPATH = `SourcePath`, - REGSTR_VAL_OLDWINDIR = `OldWinDir`, - REGSTR_VAL_SETUPFLAGS = `SetupFlags`, - REGSTR_VAL_REGOWNER = `RegisteredOwner`, - REGSTR_VAL_REGORGANIZATION = `RegisteredOrganization`, - REGSTR_VAL_LICENSINGINFO = `LicensingInfo`, - REGSTR_VAL_OLDMSDOSVER = `OldMSDOSVer`, - REGSTR_VAL_FIRSTINSTALLDATETIME = `FirstInstallDateTime`, - REGSTR_VAL_INSTALLTYPE = `InstallType`, - REGSTR_VAL_WRAPPER = `Wrapper`, - - REGSTR_KEY_SETUP = `\Setup`, - REGSTR_VAL_BOOTDIR = `BootDir`, - REGSTR_VAL_WINBOOTDIR = `WinbootDir`, - REGSTR_VAL_WINDIR = `WinDir`, - REGSTR_VAL_APPINSTPATH = `AppInstallPath`, - REGSTR_PATH_EBD = REGSTR_PATH_SETUP ~ REGSTR_KEY_SETUP ~ `\EBD`, - REGSTR_KEY_EBDFILESLOCAL = `EBDFilesLocale`, - REGSTR_KEY_EBDFILESKEYBOARD = `EBDFilesKeyboard`, - REGSTR_KEY_EBDAUTOEXECBATLOCAL = `EBDAutoexecBatLocale`, - REGSTR_KEY_EBDAUTOEXECBATKEYBOARD = `EBDAutoexecBatKeyboard`, - REGSTR_KEY_EBDCONFIGSYSLOCAL = `EBDConfigSysLocale`, - REGSTR_KEY_EBDCONFIGSYSKEYBOARD = `EBDConfigSysKeyboard`, - REGSTR_VAL_MSDOSMODE = `MSDOSMode`, - REGSTR_VAL_MSDOSMODEDISCARD = `Discard`, - REGSTR_VAL_DOSOPTGLOBALFLAGS = `GlobalFlags`, - REGSTR_VAL_DOSOPTFLAGS = `Flags`, - REGSTR_VAL_OPTORDER = `Order`, - REGSTR_VAL_CONFIGSYS = `Config.Sys`, - REGSTR_VAL_AUTOEXEC = `Autoexec.Bat`, - REGSTR_VAL_STDDOSOPTION = `StdOption`, - REGSTR_VAL_DOSOPTTIP = `TipText`, - - REGSTR_VAL_DOSPAGER = `DOSPager`, - REGSTR_VAL_VXDGROUPS = `VXDGroups`, - REGSTR_VAL_VPOWERDFLAGS = `Flags`, - - REGSTR_VAL_WORKGROUP = `Workgroup`, - REGSTR_VAL_DIRECTHOST = `DirectHost`, - REGSTR_VAL_FILESHARING = `FileSharing`, - REGSTR_VAL_PRINTSHARING = `PrintSharing`, - REGSTR_VAL_FIRSTNETDRIVE = `FirstNetworkDrive`, - REGSTR_VAL_MAXCONNECTIONS = `MaxConnections`, - REGSTR_VAL_APISUPPORT = `APISupport`, - REGSTR_VAL_MAXRETRY = `MaxRetry`, - REGSTR_VAL_MINRETRY = `MinRetry`, - REGSTR_VAL_SUPPORTLFN = `SupportLFN`, - REGSTR_VAL_SUPPORTBURST = `SupportBurst`, - REGSTR_VAL_SUPPORTTUNNELLING = `SupportTunnelling`, - REGSTR_VAL_FULLTRACE = `FullTrace`, - REGSTR_VAL_READCACHING = `ReadCaching`, - REGSTR_VAL_SHOWDOTS = `ShowDots`, - REGSTR_VAL_GAPTIME = `GapTime`, - REGSTR_VAL_SEARCHMODE = `SearchMode`, - REGSTR_VAL_SHELLVERSION = `ShellVersion`, - REGSTR_VAL_MAXLIP = `MaxLIP`, - REGSTR_VAL_PRESERVECASE = `PreserveCase`, - REGSTR_VAL_OPTIMIZESFN = `OptimizeSFN`, - REGSTR_VAL_NCP_BROWSEMASTER = `BrowseMaster`, - REGSTR_VAL_NCP_USEPEERBROWSING = `Use_PeerBrowsing`, - REGSTR_VAL_NCP_USESAP = `Use_Sap`, - REGSTR_VAL_WIN31FILESYSTEM = `Win31FileSystem`, - REGSTR_VAL_PRESERVELONGNAMES = `PreserveLongNames`, - REGSTR_VAL_DRIVEWRITEBEHIND = `DriveWriteBehind`, - REGSTR_VAL_ASYNCFILECOMMIT = `AsyncFileCommit`, - REGSTR_VAL_PATHCACHECOUNT = `PathCache`, - REGSTR_VAL_NAMECACHECOUNT = `NameCache`, - REGSTR_VAL_CONTIGFILEALLOC = `ContigFileAllocSize`, - REGSTR_VAL_VOLIDLETIMEOUT = `VolumeIdleTimeout`, - REGSTR_VAL_BUFFIDLETIMEOUT = `BufferIdleTimeout`, - REGSTR_VAL_BUFFAGETIMEOUT = `BufferAgeTimeout`, - REGSTR_VAL_NAMENUMERICTAIL = `NameNumericTail`, - REGSTR_VAL_READAHEADTHRESHOLD = `ReadAheadThreshold`, - REGSTR_VAL_DOUBLEBUFFER = `DoubleBuffer`, - REGSTR_VAL_SOFTCOMPATMODE = `SoftCompatMode`, - REGSTR_VAL_DRIVESPINDOWN = `DriveSpinDown`, - REGSTR_VAL_FORCEPMIO = `ForcePMIO`, - REGSTR_VAL_FORCERMIO = `ForceRMIO`, - REGSTR_VAL_LASTBOOTPMDRVS = `LastBootPMDrvs`, - REGSTR_VAL_VIRTUALHDIRQ = `VirtualHDIRQ`, - REGSTR_VAL_SRVNAMECACHECOUNT = `ServerNameCacheMax`, - REGSTR_VAL_SRVNAMECACHE = `ServerNameCache`, - REGSTR_VAL_SRVNAMECACHENETPROV = `ServerNameCacheNumNets`, - REGSTR_VAL_AUTOMOUNT = `AutoMountDrives`, - REGSTR_VAL_COMPRESSIONMETHOD = `CompressionAlgorithm`, - REGSTR_VAL_COMPRESSIONTHRESHOLD = `CompressionThreshold`, - REGSTR_VAL_CDCACHESIZE = `CacheSize`, - REGSTR_VAL_CDPREFETCH = `Prefetch`, - REGSTR_VAL_CDPREFETCHTAIL = `PrefetchTail`, - REGSTR_VAL_CDRAWCACHE = `RawCache`, - REGSTR_VAL_CDEXTERRORS = `ExtendedErrors`, - REGSTR_VAL_CDSVDSENSE = `SVDSense`, - REGSTR_VAL_CDSHOWVERSIONS = `ShowVersions`, - REGSTR_VAL_CDCOMPATNAMES = `MSCDEXCompatNames`, - REGSTR_VAL_CDNOREADAHEAD = `NoReadAhead`, - REGSTR_VAL_SCSI = `SCSI\`, - REGSTR_VAL_ESDI = `ESDI\`, - REGSTR_VAL_FLOP = `FLOP\`, - REGSTR_VAL_DISK = `GenDisk`, - REGSTR_VAL_CDROM = `GenCD`, - REGSTR_VAL_TAPE = `TAPE`, - REGSTR_VAL_SCANNER = `SCANNER`, - REGSTR_VAL_FLOPPY = `FLOPPY`, - REGSTR_VAL_SCSITID = `SCSITargetID`, - REGSTR_VAL_SCSILUN = `SCSILUN`, - REGSTR_VAL_REVLEVEL = `RevisionLevel`, - REGSTR_VAL_PRODUCTID = `ProductId`, - REGSTR_VAL_PRODUCTTYPE = `ProductType`, - REGSTR_VAL_DEVTYPE = `DeviceType`, - REGSTR_VAL_REMOVABLE = `Removable`, - REGSTR_VAL_CURDRVLET = `CurrentDriveLetterAssignment`, - REGSTR_VAL_USRDRVLET = `UserDriveLetterAssignment`, - REGSTR_VAL_SYNCDATAXFER = `SyncDataXfer`, - REGSTR_VAL_AUTOINSNOTE = `AutoInsertNotification`, - REGSTR_VAL_DISCONNECT = `Disconnect`, - REGSTR_VAL_INT13 = `Int13`, - REGSTR_VAL_PMODE_INT13 = `PModeInt13`, - REGSTR_VAL_USERSETTINGS = `AdapterSettings`, - REGSTR_VAL_NOIDE = `NoIDE`, - REGSTR_VAL_DISKCLASSNAME = `DiskDrive`, - REGSTR_VAL_CDROMCLASSNAME = `CDROM`, - REGSTR_VAL_FORCELOAD = `ForceLoadPD`, - REGSTR_VAL_FORCEFIFO = `ForceFIFO`, - REGSTR_VAL_FORCECL = `ForceChangeLine`, - REGSTR_VAL_NOUSECLASS = `NoUseClass`, - REGSTR_VAL_NOINSTALLCLASS = `NoInstallClass`, - REGSTR_VAL_NODISPLAYCLASS = `NoDisplayClass`, - REGSTR_VAL_SILENTINSTALL = `SilentInstall`, - REGSTR_KEY_PCMCIA_CLASS = `PCMCIA`, - REGSTR_KEY_SCSI_CLASS = `SCSIAdapter`, - REGSTR_KEY_PORTS_CLASS = `ports`, - REGSTR_KEY_MEDIA_CLASS = `MEDIA`, - REGSTR_KEY_DISPLAY_CLASS = `Display`, - REGSTR_KEY_KEYBOARD_CLASS = `Keyboard`, - REGSTR_KEY_MOUSE_CLASS = `Mouse`, - REGSTR_KEY_MONITOR_CLASS = `Monitor`, - REGSTR_VAL_PCMCIA_OPT = `Options`, - REGSTR_VAL_PCMCIA_MEM = `Memory`, - REGSTR_VAL_PCMCIA_ALLOC = `AllocMemWin`, - REGSTR_VAL_PCMCIA_ATAD = `ATADelay`, - REGSTR_VAL_PCMCIA_SIZ = `MinRegionSize`, - REGSTR_VAL_P1284MDL = `Model`, - REGSTR_VAL_P1284MFG = `Manufacturer`, - REGSTR_VAL_ISAPNP = `ISAPNP`, - REGSTR_VAL_ISAPNP_RDP_OVERRIDE = `RDPOverRide`, - REGSTR_VAL_PCI = `PCI`, - REGSTR_PCI_OPTIONS = `Options`, - REGSTR_PCI_DUAL_IDE = `PCIDualIDE`, - - REGSTR_KEY_CRASHES = `Crashes`, - REGSTR_KEY_DANGERS = `Dangers`, - REGSTR_KEY_DETMODVARS = `DetModVars`, - REGSTR_KEY_NDISINFO = `NDISInfo`, - REGSTR_VAL_PROTINIPATH = `ProtIniPath`, - REGSTR_VAL_RESOURCES = `Resources`, - REGSTR_VAL_CRASHFUNCS = `CrashFuncs`, - REGSTR_VAL_CLASS = `Class`, - REGSTR_VAL_DEVDESC = `DeviceDesc`, - REGSTR_VAL_BOOTCONFIG = `BootConfig`, - REGSTR_VAL_DETFUNC = `DetFunc`, - REGSTR_VAL_DETFLAGS = `DetFlags`, - REGSTR_VAL_COMPATIBLEIDS = `CompatibleIDs`, - REGSTR_VAL_DETCONFIG = `DetConfig`, - REGSTR_VAL_VERIFYKEY = `VerifyKey`, - REGSTR_VAL_COMINFO = `ComInfo`, - REGSTR_VAL_INFNAME = `InfName`, - REGSTR_VAL_CARDSPECIFIC = `CardSpecific`, - REGSTR_VAL_NETOSTYPE = `NetOSType`, - REGSTR_DATA_NETOS_NDIS = `NDIS`, - REGSTR_DATA_NETOS_ODI = `ODI`, - REGSTR_DATA_NETOS_IPX = `IPX`, - REGSTR_VAL_MFG = `Mfg`, - REGSTR_VAL_SCAN_ONLY_FIRST = `ScanOnlyFirstDrive`, - REGSTR_VAL_SHARE_IRQ = `ForceIRQSharing`, - REGSTR_VAL_NONSTANDARD_ATAPI = `NonStandardATAPI`, - REGSTR_VAL_IDE_FORCE_SERIALIZE = `ForceSerialization`, - REGSTR_VAL_HWREV = `HWRevision`, - REGSTR_VAL_ENABLEINTS = `EnableInts`, - - REGSTR_VAL_APMBIOSVER = `APMBiosVer`, - REGSTR_VAL_APMFLAGS = `APMFlags`, - REGSTR_VAL_SLSUPPORT = `SLSupport`, - REGSTR_VAL_MACHINETYPE = `MachineType`, - REGSTR_VAL_SETUPMACHINETYPE = `SetupMachineType`, - REGSTR_MACHTYPE_UNKNOWN = `Unknown`, - REGSTR_MACHTYPE_IBMPC = `IBM PC`, - REGSTR_MACHTYPE_IBMPCJR = `IBM PCjr`, - REGSTR_MACHTYPE_IBMPCCONV = `IBM PC Convertible`, - REGSTR_MACHTYPE_IBMPCXT = `IBM PC/XT`, - REGSTR_MACHTYPE_IBMPCXT_286 = `IBM PC/XT 286`, - REGSTR_MACHTYPE_IBMPCAT = `IBM PC/AT`, - REGSTR_MACHTYPE_IBMPS2_25 = `IBM PS/2-25`, - REGSTR_MACHTYPE_IBMPS2_30_286 = `IBM PS/2-30 286`, - REGSTR_MACHTYPE_IBMPS2_30 = `IBM PS/2-30`, - REGSTR_MACHTYPE_IBMPS2_50 = `IBM PS/2-50`, - REGSTR_MACHTYPE_IBMPS2_50Z = `IBM PS/2-50Z`, - REGSTR_MACHTYPE_IBMPS2_55SX = `IBM PS/2-55SX`, - REGSTR_MACHTYPE_IBMPS2_60 = `IBM PS/2-60`, - REGSTR_MACHTYPE_IBMPS2_65SX = `IBM PS/2-65SX`, - REGSTR_MACHTYPE_IBMPS2_70 = `IBM PS/2-70`, - REGSTR_MACHTYPE_IBMPS2_P70 = `IBM PS/2-P70`, - REGSTR_MACHTYPE_IBMPS2_70_80 = `IBM PS/2-70/80`, - REGSTR_MACHTYPE_IBMPS2_80 = `IBM PS/2-80`, - REGSTR_MACHTYPE_IBMPS2_90 = `IBM PS/2-90`, - REGSTR_MACHTYPE_IBMPS1 = `IBM PS/1`, - REGSTR_MACHTYPE_PHOENIX_PCAT = `Phoenix PC/AT Compatible`, - REGSTR_MACHTYPE_HP_VECTRA = `HP Vectra`, - REGSTR_MACHTYPE_ATT_PC = `AT&T PC`, - REGSTR_MACHTYPE_ZENITH_PC = `Zenith PC`, - REGSTR_VAL_APMMENUSUSPEND = `APMMenuSuspend`, - - REGSTR_VAL_BUSTYPE = `BusType`, - REGSTR_VAL_CPU = `CPU`, - REGSTR_VAL_NDP = `NDP`, - REGSTR_VAL_PNPBIOSVER = `PnPBIOSVer`, - REGSTR_VAL_PNPSTRUCOFFSET = `PnPStrucOffset`, - REGSTR_VAL_PCIBIOSVER = `PCIBIOSVer`, - REGSTR_VAL_HWMECHANISM = `HWMechanism`, - REGSTR_VAL_LASTPCIBUSNUM = `LastPCIBusNum`, - REGSTR_VAL_CONVMEM = `ConvMem`, - REGSTR_VAL_EXTMEM = `ExtMem`, - REGSTR_VAL_COMPUTERNAME = `ComputerName`, - REGSTR_VAL_BIOSNAME = `BIOSName`, - REGSTR_VAL_BIOSVERSION = `BIOSVersion`, - REGSTR_VAL_BIOSDATE = `BIOSDate`, - REGSTR_VAL_MODEL = `Model`, - REGSTR_VAL_SUBMODEL = `Submodel`, - REGSTR_VAL_REVISION = `Revision`, - REGSTR_VAL_FIFODEPTH = `FIFODepth`, - REGSTR_VAL_RDINTTHRESHOLD = `RDIntThreshold`, - REGSTR_VAL_WRINTTHRESHOLD = `WRIntThreshold`, - REGSTR_VAL_PRIORITY = `Priority`, - REGSTR_VAL_DRIVER = `Driver`, - REGSTR_VAL_FUNCDESC = `FunctionDesc`, - REGSTR_VAL_FORCEDCONFIG = `ForcedConfig`, - REGSTR_VAL_CONFIGFLAGS = `ConfigFlags`, - REGSTR_VAL_CSCONFIGFLAGS = `CSConfigFlags`, - - REGSTR_VAL_ROOT_DEVNODE = `HTREE\ROOT\0`, - REGSTR_VAL_RESERVED_DEVNODE = `HTREE\RESERVED\0`, - REGSTR_PATH_READDATAPORT = REGSTR_KEY_ISAENUM ~ `\ReadDataPort\0`, - REGSTR_PATH_MULTI_FUNCTION = `MF`, - REGSTR_VAL_RESOURCE_MAP = `ResourceMap`, - REGSTR_PATH_CHILD_PREFIX = `Child`, - REGSTR_VAL_MF_FLAGS = `MFFlags`, - REGSTR_VAL_DRVDESC = `DriverDesc`, - REGSTR_VAL_DEVLOADER = `DevLoader`, - REGSTR_VAL_STATICVXD = `StaticVxD`, - REGSTR_VAL_PROPERTIES = `Properties`, - REGSTR_VAL_MANUFACTURER = `Manufacturer`, - REGSTR_VAL_EXISTS = `Exists`, - REGSTR_VAL_CMENUMFLAGS = `CMEnumFlags`, - REGSTR_VAL_CMDRIVFLAGS = `CMDrivFlags`, - REGSTR_VAL_ENUMERATOR = `Enumerator`, - REGSTR_VAL_DEVICEDRIVER = `DeviceDriver`, - REGSTR_VAL_PORTNAME = `PortName`, - REGSTR_VAL_INFPATH = `InfPath`, - REGSTR_VAL_INFSECTION = `InfSection`, - REGSTR_VAL_POLLING = `Polling`, - REGSTR_VAL_DONTLOADIFCONFLICT = `DontLoadIfConflict`, - REGSTR_VAL_PORTSUBCLASS = `PortSubClass`, - REGSTR_VAL_NETCLEAN = `NetClean`, - REGSTR_VAL_IDE_NO_SERIALIZE = `IDENoSerialize`, - REGSTR_VAL_NOCMOSORFDPT = `NoCMOSorFDPT`, - REGSTR_VAL_COMVERIFYBASE = `COMVerifyBase`, - REGSTR_KEY_OVERRIDE = `Override`, - REGSTR_VAL_CONFIGMG = `CONFIGMG`, - REGSTR_VAL_SYSDM = `SysDM`, - REGSTR_VAL_SYSDMFUNC = `SysDMFunc`, - REGSTR_VAL_PRIVATE = `Private`, - REGSTR_VAL_PRIVATEFUNC = `PrivateFunc`, - REGSTR_VAL_DETECT = `Detect`, - REGSTR_VAL_DETECTFUNC = `DetectFunc`, - REGSTR_VAL_ASKFORCONFIG = `AskForConfig`, - REGSTR_VAL_ASKFORCONFIGFUNC = `AskForConfigFunc`, - REGSTR_VAL_WAITFORUNDOCK = `WaitForUndock`, - REGSTR_VAL_WAITFORUNDOCKFUNC = `WaitForUndockFunc`, - REGSTR_VAL_REMOVEROMOKAY = `RemoveRomOkay`, - REGSTR_VAL_REMOVEROMOKAYFUNC = `RemoveRomOkayFunc`, - REGSTR_VAL_CURCONFIG = `CurrentConfig`, - REGSTR_VAL_FRIENDLYNAME = `FriendlyName`, - REGSTR_VAL_CURRENTCONFIG = `CurrentConfig`, - REGSTR_VAL_MAP = `Map`, - REGSTR_VAL_ID = `CurrentID`, - REGSTR_VAL_DOCKED = `CurrentDockedState`, - REGSTR_VAL_CHECKSUM = `CurrentChecksum`, - REGSTR_VAL_HWDETECT = `HardwareDetect`, - REGSTR_VAL_INHIBITRESULTS = `InhibitResults`, - REGSTR_VAL_PROFILEFLAGS = `ProfileFlags`, - REGSTR_KEY_PCMCIA = `PCMCIA\`, - REGSTR_KEY_PCUNKNOWN = `UNKNOWN_MANUFACTURER`, - REGSTR_VAL_PCSSDRIVER = `Driver`, - REGSTR_KEY_PCMTD = `MTD-`, - REGSTR_VAL_PCMTDRIVER = `MTD`, - REGSTR_VAL_HARDWAREID = `HardwareID`, - REGSTR_VAL_INSTALLER = `Installer`, - REGSTR_VAL_INSICON = `Icon`, - REGSTR_VAL_ENUMPROPPAGES = `EnumPropPages`, - REGSTR_VAL_BASICPROPERTIES = `BasicProperties`, - REGSTR_VAL_PRIVATEPROBLEM = `PrivateProblem`, - REGSTR_KEY_CURRENT = `Current`, - REGSTR_KEY_DEFAULT = `Default`, - REGSTR_KEY_MODES = `Modes`, - REGSTR_VAL_MODE = `Mode`, - REGSTR_VAL_BPP = `BPP`, - REGSTR_VAL_HRES = `HRes`, - REGSTR_VAL_VRES = `VRes`, - REGSTR_VAL_FONTSIZE = `FontSize`, - REGSTR_VAL_DRV = `drv`, - REGSTR_VAL_GRB = `grb`, - REGSTR_VAL_VDD = `vdd`, - REGSTR_VAL_VER = `Ver`, - REGSTR_VAL_MAXRES = `MaxResolution`, - REGSTR_VAL_DPMS = `DPMS`, - REGSTR_VAL_RESUMERESET = `ResumeReset`, - REGSTR_VAL_DESCRIPTION = `Description`, - REGSTR_KEY_SYSTEM = `System`, - REGSTR_KEY_USER = `User`, - REGSTR_VAL_DPI = `dpi`, - REGSTR_VAL_PCICOPTIONS = `PCICOptions`, - - REGSTR_VAL_PCICIRQMAP = `PCICIRQMap`, - REGSTR_PATH_APPEARANCE = `Control Panel\Appearance`, - REGSTR_PATH_LOOKSCHEMES = `Control Panel\Appearance\Schemes`, - REGSTR_VAL_CUSTOMCOLORS = `CustomColors`, - REGSTR_PATH_SCREENSAVE = `Control Panel\Desktop`, - REGSTR_VALUE_USESCRPASSWORD = `ScreenSaveUsePassword`, - REGSTR_VALUE_SCRPASSWORD = `ScreenSave_Data`, - REGSTR_VALUE_LOWPOWERTIMEOUT = `ScreenSaveLowPowerTimeout`, - REGSTR_VALUE_POWEROFFTIMEOUT = `ScreenSavePowerOffTimeout`, - REGSTR_VALUE_LOWPOWERACTIVE = `ScreenSaveLowPowerActive`, - REGSTR_VALUE_POWEROFFACTIVE = `ScreenSavePowerOffActive`, - REGSTR_PATH_WINDOWSAPPLETS = `Software\Microsoft\Windows\CurrentVersion\Applets`, - REGSTR_PATH_SYSTRAY = `Software\Microsoft\Windows\CurrentVersion\Applets\SysTray`, - REGSTR_VAL_SYSTRAYSVCS = `Services`, - REGSTR_VAL_SYSTRAYBATFLAGS = `PowerFlags`, - REGSTR_VAL_SYSTRAYPCCARDFLAGS = `PCMCIAFlags`, - REGSTR_PATH_NETWORK_USERSETTINGS = `Network`, - REGSTR_KEY_NETWORK_PERSISTENT = `\Persistent`, - REGSTR_KEY_NETWORK_RECENT = `\Recent`, - REGSTR_VAL_REMOTE_PATH = `RemotePath`, - REGSTR_VAL_USER_NAME = `UserName`, - REGSTR_VAL_PROVIDER_NAME = `ProviderName`, - REGSTR_VAL_CONNECTION_TYPE = `ConnectionType`, - REGSTR_VAL_UPGRADE = `Upgrade`, - REGSTR_KEY_LOGON = `\Logon`, - REGSTR_VAL_MUSTBEVALIDATED = `MustBeValidated`, - REGSTR_VAL_RUNLOGINSCRIPT = `ProcessLoginScript`, - REGSTR_KEY_NETWORKPROVIDER = `\NetworkProvider`, - REGSTR_PATH_NW32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\NWNP32` ~ REGSTR_KEY_NETWORKPROVIDER, - REGSTR_PATH_MS32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\MSNP32` ~ REGSTR_KEY_NETWORKPROVIDER, - REGSTR_VAL_AUTHENT_AGENT = `AuthenticatingAgent`, - REGSTR_VAL_PREFREDIR = `PreferredRedir`, - REGSTR_VAL_AUTOSTART = `AutoStart`, - REGSTR_VAL_AUTOLOGON = `AutoLogon`, - REGSTR_VAL_NETCARD = `Netcard`, - REGSTR_VAL_TRANSPORT = `Transport`, - REGSTR_VAL_DYNAMIC = `Dynamic`, - REGSTR_VAL_TRANSITION = `Transition`, - REGSTR_VAL_STATICDRIVE = `StaticDrive`, - REGSTR_VAL_LOADHI = `LoadHi`, - REGSTR_VAL_LOADRMDRIVERS = `LoadRMDrivers`, - REGSTR_VAL_SETUPN = `SetupN`, - REGSTR_VAL_SETUPNPATH = `SetupNPath`, - REGSTR_VAL_WRKGRP_FORCEMAPPING = `WrkgrpForceMapping`, - REGSTR_VAL_WRKGRP_REQUIRED = `WrkgrpRequired`, - REGSTR_PATH_CURRENT_CONTROL_SET = `System\CurrentControlSet\Control`, - REGSTR_VAL_CURRENT_USER = `Current User`, - REGSTR_PATH_PWDPROVIDER = `System\CurrentControlSet\Control\PwdProvider`, - REGSTR_VAL_PWDPROVIDER_PATH = `ProviderPath`, - REGSTR_VAL_PWDPROVIDER_DESC = `Description`, - REGSTR_VAL_PWDPROVIDER_CHANGEPWD = `ChangePassword`, - REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND = `ChangePasswordHwnd`, - REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS = `GetPasswordStatus`, - REGSTR_VAL_PWDPROVIDER_ISNP = `NetworkProvider`, - REGSTR_VAL_PWDPROVIDER_CHANGEORDER = `ChangeOrder`, - REGSTR_PATH_POLICIES = `Software\Microsoft\Windows\CurrentVersion\Policies`, - REGSTR_PATH_UPDATE = `System\CurrentControlSet\Control\Update`, - REGSTR_VALUE_ENABLE = `Enable`, - REGSTR_VALUE_VERBOSE = `Verbose`, - REGSTR_VALUE_NETPATH = `NetworkPath`, - REGSTR_VALUE_DEFAULTLOC = `UseDefaultNetLocation`, - REGSTR_KEY_NETWORK = `Network`, -// [Redefined] REGSTR_KEY_SYSTEM = `System`) - REGSTR_KEY_PRINTERS = `Printers`, - REGSTR_KEY_WINOLDAPP = `WinOldApp`, - REGSTR_VAL_NOFILESHARING = `NoFileSharing`, - REGSTR_VAL_NOPRINTSHARING = `NoPrintSharing`, - REGSTR_VAL_NOFILESHARINGCTRL = `NoFileSharingControl`, - REGSTR_VAL_NOPRINTSHARINGCTRL = `NoPrintSharingControl`, - REGSTR_VAL_HIDESHAREPWDS = `HideSharePwds`, - REGSTR_VAL_DISABLEPWDCACHING = `DisablePwdCaching`, - REGSTR_VAL_ALPHANUMPWDS = `AlphanumPwds`, - REGSTR_VAL_NETSETUP_DISABLE = `NoNetSetup`, - REGSTR_VAL_NETSETUP_NOCONFIGPAGE = `NoNetSetupConfigPage`, - REGSTR_VAL_NETSETUP_NOIDPAGE = `NoNetSetupIDPage`, - REGSTR_VAL_NETSETUP_NOSECURITYPAGE = `NoNetSetupSecurityPage`, - REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE = `NoVirtMemPage`, - REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE = `NoDevMgrPage`, - REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE = `NoConfigPage`, - REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE = `NoFileSysPage`, - REGSTR_VAL_DISPCPL_NODISPCPL = `NoDispCPL`, - REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE = `NoDispBackgroundPage`, - REGSTR_VAL_DISPCPL_NOSCRSAVPAGE = `NoDispScrSavPage`, - REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE = `NoDispAppearancePage`, - REGSTR_VAL_DISPCPL_NOSETTINGSPAGE = `NoDispSettingsPage`, - REGSTR_VAL_SECCPL_NOSECCPL = `NoSecCPL`, - REGSTR_VAL_SECCPL_NOPWDPAGE = `NoPwdPage`, - REGSTR_VAL_SECCPL_NOADMINPAGE = `NoAdminPage`, - REGSTR_VAL_SECCPL_NOPROFILEPAGE = `NoProfilePage`, - REGSTR_VAL_PRINTERS_HIDETABS = `NoPrinterTabs`, - REGSTR_VAL_PRINTERS_NODELETE = `NoDeletePrinter`, - REGSTR_VAL_PRINTERS_NOADD = `NoAddPrinter`, - REGSTR_VAL_WINOLDAPP_DISABLED = `Disabled`, - REGSTR_VAL_WINOLDAPP_NOREALMODE = `NoRealMode`, - REGSTR_VAL_NOENTIRENETWORK = `NoEntireNetwork`, - REGSTR_VAL_NOWORKGROUPCONTENTS = `NoWorkgroupContents`, - REGSTR_VAL_MINPWDLEN = `MinPwdLen`, - REGSTR_VAL_PWDEXPIRATION = `PwdExpiration`, - REGSTR_VAL_WIN31PROVIDER = `Win31Provider`, - REGSTR_VAL_DISABLEREGTOOLS = `DisableRegistryTools`, - REGSTR_PATH_WINLOGON = `Software\Microsoft\Windows\CurrentVersion\Winlogon`, - REGSTR_VAL_LEGALNOTICECAPTION = `LegalNoticeCaption`, - REGSTR_VAL_LEGALNOTICETEXT = `LegalNoticeText`, - REGSTR_VAL_RESTRICTRUN = `RestrictRun`, - REGSTR_KEY_POL_USERS = `Users`, - REGSTR_KEY_POL_COMPUTERS = `Computers`, - REGSTR_KEY_POL_USERGROUPS = `UserGroups`, - REGSTR_KEY_POL_DEFAULT = `.default`, - REGSTR_KEY_POL_USERGROUPDATA = `GroupData\UserGroups\Priority`, - REGSTR_PATH_TIMEZONE = `System\CurrentControlSet\Control\TimeZoneInformation`, - REGSTR_VAL_TZBIAS = `Bias`, - REGSTR_VAL_TZDLTBIAS = `DaylightBias`, - REGSTR_VAL_TZSTDBIAS = `StandardBias`, - REGSTR_VAL_TZACTBIAS = `ActiveTimeBias`, - REGSTR_VAL_TZDLTFLAG = `DaylightFlag`, - REGSTR_VAL_TZSTDSTART = `StandardStart`, - REGSTR_VAL_TZDLTSTART = `DaylightStart`, - REGSTR_VAL_TZDLTNAME = `DaylightName`, - REGSTR_VAL_TZSTDNAME = `StandardName`, - REGSTR_VAL_TZNOCHANGESTART = `NoChangeStart`, - REGSTR_VAL_TZNOCHANGEEND = `NoChangeEnd`, - REGSTR_VAL_TZNOAUTOTIME = `DisableAutoDaylightTimeSet`, - REGSTR_PATH_FLOATINGPOINTPROCESSOR = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor`, - REGSTR_PATH_FLOATINGPOINTPROCESSOR0 = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0`, - REGSTR_PATH_COMPUTRNAME = `System\CurrentControlSet\Control\ComputerName\ComputerName`, - REGSTR_VAL_COMPUTRNAME = `ComputerName`, - REGSTR_PATH_SHUTDOWN = `System\CurrentControlSet\Control\Shutdown`, - REGSTR_VAL_FORCEREBOOT = `ForceReboot`, - REGSTR_VAL_SETUPPROGRAMRAN = `SetupProgramRan`, - REGSTR_VAL_DOES_POLLING = `PollingSupportNeeded`, - REGSTR_PATH_KNOWNDLLS = `System\CurrentControlSet\Control\SessionManager\KnownDLLs`, - REGSTR_PATH_KNOWN16DLLS = `System\CurrentControlSet\Control\SessionManager\Known16DLLs`, - REGSTR_PATH_CHECKVERDLLS = `System\CurrentControlSet\Control\SessionManager\CheckVerDLLs`, - REGSTR_PATH_WARNVERDLLS = `System\CurrentControlSet\Control\SessionManager\WarnVerDLLs`, - REGSTR_PATH_HACKINIFILE = `System\CurrentControlSet\Control\SessionManager\HackIniFiles`, - REGSTR_PATH_CHECKBADAPPS = `System\CurrentControlSet\Control\SessionManager\CheckBadApps`, - REGSTR_PATH_APPPATCH = `System\CurrentControlSet\Control\SessionManager\AppPatches`, - REGSTR_PATH_KNOWNVXDS = `System\CurrentControlSet\Control\SessionManager\KnownVxDs`, - REGSTR_VAL_UNINSTALLER_DISPLAYNAME = `DisplayName`, - REGSTR_VAL_UNINSTALLER_COMMANDLINE = `UninstallString`, - REGSTR_PATH_DESKTOP = REGSTR_PATH_SCREENSAVE, - REGSTR_PATH_MOUSE = `Control Panel\Mouse`, - REGSTR_PATH_KEYBOARD = `Control Panel\Keyboard`, - REGSTR_PATH_COLORS = `Control Panel\Colors`, - REGSTR_PATH_SOUND = `Control Panel\Sound`, - REGSTR_PATH_METRICS = `Control Panel\Desktop\WindowMetrics`, - REGSTR_PATH_ICONS = `Control Panel\Icons`, - REGSTR_PATH_CURSORS = `Control Panel\Cursors`, - REGSTR_PATH_CHECKDISK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive`, - REGSTR_PATH_CHECKDISKSET = `Settings`, - REGSTR_PATH_CHECKDISKUDRVS = `NoUnknownDDErrDrvs`, - REGSTR_PATH_FAULT = `Software\Microsoft\Windows\CurrentVersion\Fault`, - REGSTR_VAL_FAULT_LOGFILE = `LogFile`, - REGSTR_PATH_AEDEBUG = `Software\Microsoft\Windows NT\CurrentVersion\AeDebug`, - REGSTR_VAL_AEDEBUG_DEBUGGER = `Debugger`, - REGSTR_VAL_AEDEBUG_AUTO = `Auto`, - REGSTR_PATH_GRPCONV = `Software\Microsoft\Windows\CurrentVersion\GrpConv`, - REGSTR_VAL_REGITEMDELETEMESSAGE = `Removal Message`, - REGSTR_PATH_LASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastCheck`, - REGSTR_PATH_LASTOPTIMIZE = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastOptimize`, - REGSTR_PATH_LASTBACKUP = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastBackup`, - REGSTR_PATH_CHKLASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastCheck`, - REGSTR_PATH_CHKLASTSURFAN = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastSurfaceAnalysis`, - REGSTR_KEY_SHARES = `Software\Microsoft\Windows\CurrentVersion\Network\LanMan`, - REGSTR_VAL_SHARES_FLAGS = `Flags`, - REGSTR_VAL_SHARES_TYPE = `Type`, - REGSTR_VAL_SHARES_PATH = `Path`, - REGSTR_VAL_SHARES_REMARK = `Remark`, - REGSTR_VAL_SHARES_RW_PASS = `Parm1`, - REGSTR_VAL_SHARES_RO_PASS = `Parm2`, - REGSTR_PATH_PRINT = `System\CurrentControlSet\Control\Print`, - REGSTR_PATH_PRINTERS = `System\CurrentControlSet\Control\Print\Printers`, - REGSTR_PATH_PROVIDERS = `System\CurrentControlSet\Control\Print\Providers`, - REGSTR_PATH_MONITORS = `System\CurrentControlSet\Control\Print\Monitors`, - REGSTR_PATH_ENVIRONMENTS = `System\CurrentControlSet\Control\Print\Environments`, - REGSTR_VAL_START_ON_BOOT = `StartOnBoot`, - REGSTR_VAL_PRINTERS_MASK = `PrintersMask`, - REGSTR_VAL_DOS_SPOOL_MASK = `DOSSpoolMask`, - REGSTR_KEY_CURRENT_ENV = `\Windows 4.0`, - REGSTR_KEY_DRIVERS = `\Drivers`, - REGSTR_KEY_PRINT_PROC = `\Print Processors`, - REGSTR_PATH_EVENTLABELS = `AppEvents\EventLabels`, - REGSTR_PATH_SCHEMES = `AppEvents\Schemes`, - REGSTR_PATH_APPS = REGSTR_PATH_SCHEMES ~ `\Apps`, - REGSTR_PATH_APPS_DEFAULT = REGSTR_PATH_SCHEMES ~ `\Apps\.Default`, - REGSTR_PATH_NAMES = REGSTR_PATH_SCHEMES ~ `\Names`, - REGSTR_PATH_MULTIMEDIA = REGSTR_PATH_SETUP ~ `\Multimedia`, - REGSTR_PATH_MULTIMEDIA_AUDIO = `Software\Microsoft\Multimedia\Audio`, - REGSTR_PATH_MEDIARESOURCES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaResources`, - REGSTR_PATH_MEDIAPROPERTIES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaProperties`, - REGSTR_PATH_PRIVATEPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PrivateProperties`, - REGSTR_PATH_PUBLICPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PublicProperties`, - REGSTR_PATH_JOYOEM = REGSTR_PATH_PRIVATEPROPERTIES ~ `\Joystick\OEM`, - REGSTR_PATH_JOYCONFIG = REGSTR_PATH_MEDIARESOURCES ~ `\Joystick`, - REGSTR_KEY_JOYCURR = `CurrentJoystickSettings`, - REGSTR_KEY_JOYSETTINGS = `JoystickSettings`, - REGSTR_VAL_JOYUSERVALUES = `JoystickUserValues`, - REGSTR_VAL_JOYCALLOUT = `JoystickCallout`, - REGSTR_VAL_JOYNCONFIG = `Joystick%dConfiguration`, - REGSTR_VAL_JOYNOEMNAME = `Joystick%dOEMName`, - REGSTR_VAL_JOYNOEMCALLOUT = `Joystick%dOEMCallout`, - REGSTR_VAL_JOYOEMCALLOUT = `OEMCallout`, - REGSTR_VAL_JOYOEMNAME = `OEMName`, - REGSTR_VAL_JOYOEMDATA = `OEMData`, - REGSTR_VAL_JOYOEMXYLABEL = `OEMXYLabel`, - REGSTR_VAL_JOYOEMZLABEL = `OEMZLabel`, - REGSTR_VAL_JOYOEMRLABEL = `OEMRLabel`, - REGSTR_VAL_JOYOEMPOVLABEL = `OEMPOVLabel`, - REGSTR_VAL_JOYOEMULABEL = `OEMULabel`, - REGSTR_VAL_JOYOEMVLABEL = `OEMVLabel`, - REGSTR_VAL_JOYOEMTESTMOVEDESC = `OEMTestMoveDesc`, - REGSTR_VAL_JOYOEMTESTBUTTONDESC = `OEMTestButtonDesc`, - REGSTR_VAL_JOYOEMTESTMOVECAP = `OEMTestMoveCap`, - REGSTR_VAL_JOYOEMTESTBUTTONCAP = `OEMTestButtonCap`, - REGSTR_VAL_JOYOEMTESTWINCAP = `OEMTestWinCap`, - REGSTR_VAL_JOYOEMCALCAP = `OEMCalCap`, - REGSTR_VAL_JOYOEMCALWINCAP = `OEMCalWinCap`, - REGSTR_VAL_JOYOEMCAL1 = `OEMCal1`, - REGSTR_VAL_JOYOEMCAL2 = `OEMCal2`, - REGSTR_VAL_JOYOEMCAL3 = `OEMCal3`, - REGSTR_VAL_JOYOEMCAL4 = `OEMCal4`, - REGSTR_VAL_JOYOEMCAL5 = `OEMCal5`, - REGSTR_VAL_JOYOEMCAL6 = `OEMCal6`, - REGSTR_VAL_JOYOEMCAL7 = `OEMCal7`, - REGSTR_VAL_JOYOEMCAL8 = `OEMCal8`, - REGSTR_VAL_JOYOEMCAL9 = `OEMCal9`, - REGSTR_VAL_JOYOEMCAL10 = `OEMCal10`, - REGSTR_VAL_JOYOEMCAL11 = `OEMCal11`, - REGSTR_VAL_JOYOEMCAL12 = `OEMCal12`; - -enum { - DTRESULTOK, - DTRESULTFIX, - DTRESULTPROB, - DTRESULTPART -} - -//#ifndef NEC_98 -const PCIC_DEFAULT_IRQMASK = 0x4EB8; -//#else -//#define PCIC_DEFAULT_IRQMASK 0x1468 -//#endif -const PCIC_DEFAULT_NUMSOCKETS = 0; - -struct DSKTLSYSTEMTIME { - WORD wYear; - WORD wMonth; - WORD wDayOfWeek; - WORD wDay; - WORD wHour; - WORD wMinute; - WORD wSecond; - WORD wMilliseconds; - WORD wResult; -} -alias DSKTLSYSTEMTIME* PDSKTLSYSTEMTIME, LPDSKTLSYSTEMTIME; +/***********************************************************************\ +* regstr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.regstr; + +// TODO: fix possible conflict with shloj. Sort out NEC_98 issue. + +private import win32.windef; + +const REGSTR_MAX_VALUE_LENGTH = 256; + +enum { + IT_COMPACT = 0, + IT_TYPICAL, + IT_PORTABLE, + IT_CUSTOM // = 3 +} + +const DOSOPTGF_DEFCLEAN = 1; + +const DOSOPTF_DEFAULT = 0x01; +const DOSOPTF_SUPPORTED = 0x02; +const DOSOPTF_ALWAYSUSE = 0x04; +const DOSOPTF_USESPMODE = 0x08; +const DOSOPTF_PROVIDESUMB = 0x10; +const DOSOPTF_NEEDSETUP = 0x20; +const DOSOPTF_INDOSSTART = 0x40; +const DOSOPTF_MULTIPLE = 0x80; + +const SUF_FIRSTTIME = 0x0001; +const SUF_EXPRESS = 0x0002; +const SUF_BATCHINF = 0x0004; +const SUF_CLEAN = 0x0008; +const SUF_INSETUP = 0x0010; +const SUF_NETSETUP = 0x0020; +const SUF_NETHDBOOT = 0x0040; +const SUF_NETRPLBOOT = 0x0080; +const SUF_SBSCOPYOK = 0x0100; + +const VPDF_DISABLEPWRMGMT = 1; +const VPDF_FORCEAPM10MODE = 2; +const VPDF_SKIPINTELSLCHECK = 4; +const VPDF_DISABLEPWRSTATUSPOLL = 8; + +const PCMCIA_OPT_HAVE_SOCKET = 0x01; +const PCMCIA_OPT_AUTOMEM = 0x04; +const PCMCIA_OPT_NO_SOUND = 0x08; +const PCMCIA_OPT_NO_AUDIO = 0x10; +const PCMCIA_OPT_NO_APMREMOVE = 0x20; + +const PCMCIA_DEF_MEMBEGIN = 0x0C0000; +const PCMCIA_DEF_MEMEND = 0xFFFFFF; +const PCMCIA_DEF_MEMLEN = 0x001000; +const PCMCIA_DEF_MIN_REGION = 0x010000; + +enum { + PCI_OPTIONS_USE_BIOS = 1, + PCI_OPTIONS_USE_IRQ_STEERING = 2 +} + +const PCI_FLAG_NO_VIDEO_IRQ = 0x0001; +const PCI_FLAG_PCMCIA_WANT_IRQ = 0x0002; +const PCI_FLAG_DUAL_IDE = 0x0004; +const PCI_FLAG_NO_ENUM_AT_ALL = 0x0008; +const PCI_FLAG_ENUM_NO_RESOURCE = 0x0010; +const PCI_FLAG_NEED_DWORD_ACCESS = 0x0020; +const PCI_FLAG_SINGLE_FUNCTION = 0x0040; +const PCI_FLAG_ALWAYS_ENABLED = 0x0080; +const PCI_FLAG_IS_IDE = 0x0100; +const PCI_FLAG_IS_VIDEO = 0x0200; +const PCI_FLAG_FAIL_START = 0x0400; + +const size_t REGSTR_VAL_MAX_HCID_LEN = 1024; + +const REGDF_NOTDETIO = 0x00000001; +const REGDF_NOTDETMEM = 0x00000002; +const REGDF_NOTDETIRQ = 0x00000004; +const REGDF_NOTDETDMA = 0x00000008; +const REGDF_NOTDETALL = REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA; +const REGDF_NEEDFULLCONFIG = 0x00000010; +const REGDF_GENFORCEDCONFIG = 0x00000020; +const REGDF_NODETCONFIG = 0x00008000; +const REGDF_CONFLICTIO = 0x00010000; +const REGDF_CONFLICTMEM = 0x00020000; +const REGDF_CONFLICTIRQ = 0x00040000; +const REGDF_CONFLICTDMA = 0x00080000; +const REGDF_CONFLICTALL = REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA; +const REGDF_MAPIRQ2TO9 = 0x00100000; +const REGDF_NOTVERIFIED = 0x80000000; + +const CONFIGFLAG_DISABLED = 0x0001; +const CONFIGFLAG_REMOVED = 0x0002; +const CONFIGFLAG_MANUAL_INSTALL = 0x0004; +const CONFIGFLAG_IGNORE_BOOT_LC = 0x0008; +const CONFIGFLAG_NET_BOOT = 0x0010; +const CONFIGFLAG_REINSTALL = 0x0020; +const CONFIGFLAG_FAILEDINSTALL = 0x0040; +const CONFIGFLAG_CANTSTOPACHILD = 0x0080; +const CONFIGFLAG_OKREMOVEROM = 0x0100; +const CONFIGFLAG_NOREMOVEEXIT = 0x0200; + +const CSCONFIGFLAG_DISABLED = 1; +const CSCONFIGFLAG_DO_NOT_CREATE = 2; +const CSCONFIGFLAG_DO_NOT_START = 4; +const CSCONFIGFLAG_BITS = 7; + +const DMSTATEFLAG_APPLYTOALL = 1; + +const NUM_RESOURCE_MAP = 256; + +const MF_FLAGS_EVEN_IF_NO_RESOURCE = 1; +const MF_FLAGS_NO_CREATE_IF_NO_RESOURCE = 2; +const MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE = 4; +const MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED = 8; + +const EISAFLAG_NO_IO_MERGE = 1; +const EISAFLAG_SLOT_IO_FIRST = 2; + +const EISA_NO_MAX_FUNCTION = 0xFF; + +const NUM_EISA_RANGES = 4; + +const APMMENUSUSPEND_DISABLED = 0; +const APMMENUSUSPEND_ENABLED = 1; +const APMMENUSUSPEND_UNDOCKED = 2; +const APMMENUSUSPEND_NOCHANGE = 128; + +//#ifndef NEC_98 +const TCHAR[] + REGSTR_KEY_ISAENUM = "ISAPnP", + REGSTR_KEY_EISAENUM = "EISA", + REGSTR_VAL_EISA_RANGES = "EISARanges", + REGSTR_VAL_EISA_FUNCTIONS = "EISAFunctions", + REGSTR_VAL_EISA_FUNCTIONS_MASK = "EISAFunctionsMask", + REGSTR_VAL_EISA_FLAGS = "EISAFlags", + REGSTR_VAL_EISA_SIMULATE_INT15 = "EISASimulateInt15"; +// #else +// #define REGSTR_KEY_ISAENUM TEXT("C98PnP") +// #define REGSTR_KEY_EISAENUM TEXT("NESA") +// #define REGSTR_VAL_EISA_RANGES TEXT("NESARanges") +// #define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions") +// #define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask") +// #define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags") +// #define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15") +// #endif + +const TCHAR[] + REGSTR_KEY_CLASS = `Class`, + REGSTR_KEY_CONFIG = `Config`, + REGSTR_KEY_ENUM = `Enum`, + REGSTR_KEY_ROOTENUM = `Root`, + REGSTR_KEY_BIOSENUM = `BIOS`, + REGSTR_KEY_PCMCIAENUM = `PCMCIA`, + REGSTR_KEY_PCIENUM = `PCI`, + REGSTR_KEY_LOGCONFIG = `LogConfig`, + REGSTR_KEY_SYSTEMBOARD = `*PNP0C01`, + REGSTR_KEY_APM = `*PNP0C05`, + REGSTR_KEY_INIUPDATE = `IniUpdate`, + REG_KEY_INSTDEV = `Installed`, + REGSTR_KEY_DOSOPTCDROM = `CD-ROM`, + REGSTR_KEY_DOSOPTMOUSE = `MOUSE`, + REGSTR_DEFAULT_INSTANCE = `0000`, + REGSTR_PATH_MOTHERBOARD = REGSTR_KEY_SYSTEMBOARD ~ `\` ~ REGSTR_DEFAULT_INSTANCE, + REGSTR_PATH_SETUP = `Software\Microsoft\Windows\CurrentVersion`, + REGSTR_PATH_PIFCONVERT = `Software\Microsoft\Windows\CurrentVersion\PIFConvert`, + REGSTR_PATH_MSDOSOPTS = `Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions`, + REGSTR_PATH_MSDOSEMU = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation`, + REGSTR_PATH_NEWDOSBOX = `Software\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\AppCompat`, + REGSTR_PATH_RUNONCE = `Software\Microsoft\Windows\CurrentVersion\RunOnce`, + REGSTR_PATH_RUN = `Software\Microsoft\Windows\CurrentVersion\Run`, + REGSTR_PATH_RUNSERVICESONCE = `Software\Microsoft\Windows\CurrentVersion\RunServicesOnce`, + REGSTR_PATH_RUNSERVICES = `Software\Microsoft\Windows\CurrentVersion\RunServices`, + +//#ifndef REGSTR_PATH_EXPLORER /* also in shlobj.h */ + REGSTR_PATH_EXPLORER = `Software\Microsoft\Windows\CurrentVersion\Explorer`, +//#endif + + REGSTR_PATH_DETECT = `Software\Microsoft\Windows\CurrentVersion\Detect`, + REGSTR_PATH_APPPATHS = `Software\Microsoft\Windows\CurrentVersion\App Paths`, + REGSTR_PATH_UNINSTALL = `Software\Microsoft\Windows\CurrentVersion\Uninstall`, + REGSTR_PATH_REALMODENET = `Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net`, + REGSTR_PATH_NETEQUIV = `Software\Microsoft\Windows\CurrentVersion\Network\Equivalent`, + REGSTR_PATH_CVNETWORK = `Software\Microsoft\Windows\CurrentVersion\Network`, + REGSTR_PATH_IDCONFIGDB = `System\CurrentControlSet\Control\IDConfigDB`, + REGSTR_PATH_CLASS = `System\CurrentControlSet\Services\Class`, + REGSTR_PATH_DISPLAYSETTINGS = `Display\Settings`, + REGSTR_PATH_FONTS = `Display\Fonts`, + REGSTR_PATH_ENUM = `Enum`, + REGSTR_PATH_ROOT = `Enum\Root`, + REGSTR_PATH_SERVICES = `System\CurrentControlSet\Services`, + REGSTR_PATH_VXD = `System\CurrentControlSet\Services\VxD`, + REGSTR_PATH_IOS = `System\CurrentControlSet\Services\VxD\IOS`, + REGSTR_PATH_VMM = `System\CurrentControlSet\Services\VxD\VMM`, + REGSTR_PATH_VPOWERD = `System\CurrentControlSet\Services\VxD\VPOWERD`, + REGSTR_PATH_VNETSUP = `System\CurrentControlSet\Services\VxD\VNETSUP`, + REGSTR_PATH_NWREDIR = `System\CurrentControlSet\Services\VxD\NWREDIR`, + REGSTR_PATH_NCPSERVER = `System\CurrentControlSet\Services\NcpServer\Parameters`, + REGSTR_PATH_IOARB = `System\CurrentControlSet\Services\Arbitrators\IOArb`, + REGSTR_PATH_ADDRARB = `System\CurrentControlSet\Services\Arbitrators\AddrArb`, + REGSTR_PATH_DMAARB = `System\CurrentControlSet\Services\Arbitrators\DMAArb`, + REGSTR_PATH_IRQARB = `System\CurrentControlSet\Services\Arbitrators\IRQArb`, + REGSTR_PATH_CODEPAGE = `System\CurrentControlSet\Control\Nls\Codepage`, + REGSTR_PATH_FILESYSTEM = `System\CurrentControlSet\Control\FileSystem`, + REGSTR_PATH_FILESYSTEM_NOVOLTRACK = `System\CurrentControlSet\Control\FileSystem\NoVolTrack`, + REGSTR_PATH_CDFS = `System\CurrentControlSet\Control\FileSystem\CDFS`, + REGSTR_PATH_WINBOOT = `System\CurrentControlSet\Control\WinBoot`, + REGSTR_PATH_INSTALLEDFILES = `System\CurrentControlSet\Control\InstalledFiles`, + REGSTR_PATH_VMM32FILES = `System\CurrentControlSet\Control\VMM32Files`, + + REGSTR_VAL_BITSPERPIXEL = `BitsPerPixel`, + REGSTR_VAL_RESOLUTION = `Resolution`, + REGSTR_VAL_DPILOGICALX = `DPILogicalX`, + REGSTR_VAL_DPILOGICALY = `DPILogicalY`, + REGSTR_VAL_DPIPHYSICALX = `DPIPhysicalX`, + REGSTR_VAL_DPIPHYSICALY = `DPIPhysicalY`, + REGSTR_VAL_REFRESHRATE = `RefreshRate`, + REGSTR_VAL_DISPLAYFLAGS = `DisplayFlags`, + REGSTR_PATH_CONTROLPANEL = `Control Panel`, + REGSTR_PATH_CONTROLSFOLDER = `Software\Microsoft\Windows\CurrentVersion\Controls Folder`, + REGSTR_VAL_DOSCP = `OEMCP`, + REGSTR_VAL_WINCP = `ACP`, + REGSTR_PATH_DYNA_ENUM = `Config Manager\Enum`, + REGSTR_VAL_HARDWARE_KEY = `HardWareKey`, + REGSTR_VAL_ALLOCATION = `Allocation`, + REGSTR_VAL_PROBLEM = `Problem`, + REGSTR_VAL_STATUS = `Status`, + REGSTR_VAL_DONTUSEMEM = `DontAllocLastMem`, + REGSTR_VAL_SYSTEMROOT = `SystemRoot`, + REGSTR_VAL_BOOTCOUNT = `BootCount`, + REGSTR_VAL_REALNETSTART = `RealNetStart`, + REGSTR_VAL_MEDIA = `MediaPath`, + REGSTR_VAL_CONFIG = `ConfigPath`, + REGSTR_VAL_DEVICEPATH = `DevicePath`, + REGSTR_VAL_SRCPATH = `SourcePath`, + REGSTR_VAL_OLDWINDIR = `OldWinDir`, + REGSTR_VAL_SETUPFLAGS = `SetupFlags`, + REGSTR_VAL_REGOWNER = `RegisteredOwner`, + REGSTR_VAL_REGORGANIZATION = `RegisteredOrganization`, + REGSTR_VAL_LICENSINGINFO = `LicensingInfo`, + REGSTR_VAL_OLDMSDOSVER = `OldMSDOSVer`, + REGSTR_VAL_FIRSTINSTALLDATETIME = `FirstInstallDateTime`, + REGSTR_VAL_INSTALLTYPE = `InstallType`, + REGSTR_VAL_WRAPPER = `Wrapper`, + + REGSTR_KEY_SETUP = `\Setup`, + REGSTR_VAL_BOOTDIR = `BootDir`, + REGSTR_VAL_WINBOOTDIR = `WinbootDir`, + REGSTR_VAL_WINDIR = `WinDir`, + REGSTR_VAL_APPINSTPATH = `AppInstallPath`, + REGSTR_PATH_EBD = REGSTR_PATH_SETUP ~ REGSTR_KEY_SETUP ~ `\EBD`, + REGSTR_KEY_EBDFILESLOCAL = `EBDFilesLocale`, + REGSTR_KEY_EBDFILESKEYBOARD = `EBDFilesKeyboard`, + REGSTR_KEY_EBDAUTOEXECBATLOCAL = `EBDAutoexecBatLocale`, + REGSTR_KEY_EBDAUTOEXECBATKEYBOARD = `EBDAutoexecBatKeyboard`, + REGSTR_KEY_EBDCONFIGSYSLOCAL = `EBDConfigSysLocale`, + REGSTR_KEY_EBDCONFIGSYSKEYBOARD = `EBDConfigSysKeyboard`, + REGSTR_VAL_MSDOSMODE = `MSDOSMode`, + REGSTR_VAL_MSDOSMODEDISCARD = `Discard`, + REGSTR_VAL_DOSOPTGLOBALFLAGS = `GlobalFlags`, + REGSTR_VAL_DOSOPTFLAGS = `Flags`, + REGSTR_VAL_OPTORDER = `Order`, + REGSTR_VAL_CONFIGSYS = `Config.Sys`, + REGSTR_VAL_AUTOEXEC = `Autoexec.Bat`, + REGSTR_VAL_STDDOSOPTION = `StdOption`, + REGSTR_VAL_DOSOPTTIP = `TipText`, + + REGSTR_VAL_DOSPAGER = `DOSPager`, + REGSTR_VAL_VXDGROUPS = `VXDGroups`, + REGSTR_VAL_VPOWERDFLAGS = `Flags`, + + REGSTR_VAL_WORKGROUP = `Workgroup`, + REGSTR_VAL_DIRECTHOST = `DirectHost`, + REGSTR_VAL_FILESHARING = `FileSharing`, + REGSTR_VAL_PRINTSHARING = `PrintSharing`, + REGSTR_VAL_FIRSTNETDRIVE = `FirstNetworkDrive`, + REGSTR_VAL_MAXCONNECTIONS = `MaxConnections`, + REGSTR_VAL_APISUPPORT = `APISupport`, + REGSTR_VAL_MAXRETRY = `MaxRetry`, + REGSTR_VAL_MINRETRY = `MinRetry`, + REGSTR_VAL_SUPPORTLFN = `SupportLFN`, + REGSTR_VAL_SUPPORTBURST = `SupportBurst`, + REGSTR_VAL_SUPPORTTUNNELLING = `SupportTunnelling`, + REGSTR_VAL_FULLTRACE = `FullTrace`, + REGSTR_VAL_READCACHING = `ReadCaching`, + REGSTR_VAL_SHOWDOTS = `ShowDots`, + REGSTR_VAL_GAPTIME = `GapTime`, + REGSTR_VAL_SEARCHMODE = `SearchMode`, + REGSTR_VAL_SHELLVERSION = `ShellVersion`, + REGSTR_VAL_MAXLIP = `MaxLIP`, + REGSTR_VAL_PRESERVECASE = `PreserveCase`, + REGSTR_VAL_OPTIMIZESFN = `OptimizeSFN`, + REGSTR_VAL_NCP_BROWSEMASTER = `BrowseMaster`, + REGSTR_VAL_NCP_USEPEERBROWSING = `Use_PeerBrowsing`, + REGSTR_VAL_NCP_USESAP = `Use_Sap`, + REGSTR_VAL_WIN31FILESYSTEM = `Win31FileSystem`, + REGSTR_VAL_PRESERVELONGNAMES = `PreserveLongNames`, + REGSTR_VAL_DRIVEWRITEBEHIND = `DriveWriteBehind`, + REGSTR_VAL_ASYNCFILECOMMIT = `AsyncFileCommit`, + REGSTR_VAL_PATHCACHECOUNT = `PathCache`, + REGSTR_VAL_NAMECACHECOUNT = `NameCache`, + REGSTR_VAL_CONTIGFILEALLOC = `ContigFileAllocSize`, + REGSTR_VAL_VOLIDLETIMEOUT = `VolumeIdleTimeout`, + REGSTR_VAL_BUFFIDLETIMEOUT = `BufferIdleTimeout`, + REGSTR_VAL_BUFFAGETIMEOUT = `BufferAgeTimeout`, + REGSTR_VAL_NAMENUMERICTAIL = `NameNumericTail`, + REGSTR_VAL_READAHEADTHRESHOLD = `ReadAheadThreshold`, + REGSTR_VAL_DOUBLEBUFFER = `DoubleBuffer`, + REGSTR_VAL_SOFTCOMPATMODE = `SoftCompatMode`, + REGSTR_VAL_DRIVESPINDOWN = `DriveSpinDown`, + REGSTR_VAL_FORCEPMIO = `ForcePMIO`, + REGSTR_VAL_FORCERMIO = `ForceRMIO`, + REGSTR_VAL_LASTBOOTPMDRVS = `LastBootPMDrvs`, + REGSTR_VAL_VIRTUALHDIRQ = `VirtualHDIRQ`, + REGSTR_VAL_SRVNAMECACHECOUNT = `ServerNameCacheMax`, + REGSTR_VAL_SRVNAMECACHE = `ServerNameCache`, + REGSTR_VAL_SRVNAMECACHENETPROV = `ServerNameCacheNumNets`, + REGSTR_VAL_AUTOMOUNT = `AutoMountDrives`, + REGSTR_VAL_COMPRESSIONMETHOD = `CompressionAlgorithm`, + REGSTR_VAL_COMPRESSIONTHRESHOLD = `CompressionThreshold`, + REGSTR_VAL_CDCACHESIZE = `CacheSize`, + REGSTR_VAL_CDPREFETCH = `Prefetch`, + REGSTR_VAL_CDPREFETCHTAIL = `PrefetchTail`, + REGSTR_VAL_CDRAWCACHE = `RawCache`, + REGSTR_VAL_CDEXTERRORS = `ExtendedErrors`, + REGSTR_VAL_CDSVDSENSE = `SVDSense`, + REGSTR_VAL_CDSHOWVERSIONS = `ShowVersions`, + REGSTR_VAL_CDCOMPATNAMES = `MSCDEXCompatNames`, + REGSTR_VAL_CDNOREADAHEAD = `NoReadAhead`, + REGSTR_VAL_SCSI = `SCSI\`, + REGSTR_VAL_ESDI = `ESDI\`, + REGSTR_VAL_FLOP = `FLOP\`, + REGSTR_VAL_DISK = `GenDisk`, + REGSTR_VAL_CDROM = `GenCD`, + REGSTR_VAL_TAPE = `TAPE`, + REGSTR_VAL_SCANNER = `SCANNER`, + REGSTR_VAL_FLOPPY = `FLOPPY`, + REGSTR_VAL_SCSITID = `SCSITargetID`, + REGSTR_VAL_SCSILUN = `SCSILUN`, + REGSTR_VAL_REVLEVEL = `RevisionLevel`, + REGSTR_VAL_PRODUCTID = `ProductId`, + REGSTR_VAL_PRODUCTTYPE = `ProductType`, + REGSTR_VAL_DEVTYPE = `DeviceType`, + REGSTR_VAL_REMOVABLE = `Removable`, + REGSTR_VAL_CURDRVLET = `CurrentDriveLetterAssignment`, + REGSTR_VAL_USRDRVLET = `UserDriveLetterAssignment`, + REGSTR_VAL_SYNCDATAXFER = `SyncDataXfer`, + REGSTR_VAL_AUTOINSNOTE = `AutoInsertNotification`, + REGSTR_VAL_DISCONNECT = `Disconnect`, + REGSTR_VAL_INT13 = `Int13`, + REGSTR_VAL_PMODE_INT13 = `PModeInt13`, + REGSTR_VAL_USERSETTINGS = `AdapterSettings`, + REGSTR_VAL_NOIDE = `NoIDE`, + REGSTR_VAL_DISKCLASSNAME = `DiskDrive`, + REGSTR_VAL_CDROMCLASSNAME = `CDROM`, + REGSTR_VAL_FORCELOAD = `ForceLoadPD`, + REGSTR_VAL_FORCEFIFO = `ForceFIFO`, + REGSTR_VAL_FORCECL = `ForceChangeLine`, + REGSTR_VAL_NOUSECLASS = `NoUseClass`, + REGSTR_VAL_NOINSTALLCLASS = `NoInstallClass`, + REGSTR_VAL_NODISPLAYCLASS = `NoDisplayClass`, + REGSTR_VAL_SILENTINSTALL = `SilentInstall`, + REGSTR_KEY_PCMCIA_CLASS = `PCMCIA`, + REGSTR_KEY_SCSI_CLASS = `SCSIAdapter`, + REGSTR_KEY_PORTS_CLASS = `ports`, + REGSTR_KEY_MEDIA_CLASS = `MEDIA`, + REGSTR_KEY_DISPLAY_CLASS = `Display`, + REGSTR_KEY_KEYBOARD_CLASS = `Keyboard`, + REGSTR_KEY_MOUSE_CLASS = `Mouse`, + REGSTR_KEY_MONITOR_CLASS = `Monitor`, + REGSTR_VAL_PCMCIA_OPT = `Options`, + REGSTR_VAL_PCMCIA_MEM = `Memory`, + REGSTR_VAL_PCMCIA_ALLOC = `AllocMemWin`, + REGSTR_VAL_PCMCIA_ATAD = `ATADelay`, + REGSTR_VAL_PCMCIA_SIZ = `MinRegionSize`, + REGSTR_VAL_P1284MDL = `Model`, + REGSTR_VAL_P1284MFG = `Manufacturer`, + REGSTR_VAL_ISAPNP = `ISAPNP`, + REGSTR_VAL_ISAPNP_RDP_OVERRIDE = `RDPOverRide`, + REGSTR_VAL_PCI = `PCI`, + REGSTR_PCI_OPTIONS = `Options`, + REGSTR_PCI_DUAL_IDE = `PCIDualIDE`, + + REGSTR_KEY_CRASHES = `Crashes`, + REGSTR_KEY_DANGERS = `Dangers`, + REGSTR_KEY_DETMODVARS = `DetModVars`, + REGSTR_KEY_NDISINFO = `NDISInfo`, + REGSTR_VAL_PROTINIPATH = `ProtIniPath`, + REGSTR_VAL_RESOURCES = `Resources`, + REGSTR_VAL_CRASHFUNCS = `CrashFuncs`, + REGSTR_VAL_CLASS = `Class`, + REGSTR_VAL_DEVDESC = `DeviceDesc`, + REGSTR_VAL_BOOTCONFIG = `BootConfig`, + REGSTR_VAL_DETFUNC = `DetFunc`, + REGSTR_VAL_DETFLAGS = `DetFlags`, + REGSTR_VAL_COMPATIBLEIDS = `CompatibleIDs`, + REGSTR_VAL_DETCONFIG = `DetConfig`, + REGSTR_VAL_VERIFYKEY = `VerifyKey`, + REGSTR_VAL_COMINFO = `ComInfo`, + REGSTR_VAL_INFNAME = `InfName`, + REGSTR_VAL_CARDSPECIFIC = `CardSpecific`, + REGSTR_VAL_NETOSTYPE = `NetOSType`, + REGSTR_DATA_NETOS_NDIS = `NDIS`, + REGSTR_DATA_NETOS_ODI = `ODI`, + REGSTR_DATA_NETOS_IPX = `IPX`, + REGSTR_VAL_MFG = `Mfg`, + REGSTR_VAL_SCAN_ONLY_FIRST = `ScanOnlyFirstDrive`, + REGSTR_VAL_SHARE_IRQ = `ForceIRQSharing`, + REGSTR_VAL_NONSTANDARD_ATAPI = `NonStandardATAPI`, + REGSTR_VAL_IDE_FORCE_SERIALIZE = `ForceSerialization`, + REGSTR_VAL_HWREV = `HWRevision`, + REGSTR_VAL_ENABLEINTS = `EnableInts`, + + REGSTR_VAL_APMBIOSVER = `APMBiosVer`, + REGSTR_VAL_APMFLAGS = `APMFlags`, + REGSTR_VAL_SLSUPPORT = `SLSupport`, + REGSTR_VAL_MACHINETYPE = `MachineType`, + REGSTR_VAL_SETUPMACHINETYPE = `SetupMachineType`, + REGSTR_MACHTYPE_UNKNOWN = `Unknown`, + REGSTR_MACHTYPE_IBMPC = `IBM PC`, + REGSTR_MACHTYPE_IBMPCJR = `IBM PCjr`, + REGSTR_MACHTYPE_IBMPCCONV = `IBM PC Convertible`, + REGSTR_MACHTYPE_IBMPCXT = `IBM PC/XT`, + REGSTR_MACHTYPE_IBMPCXT_286 = `IBM PC/XT 286`, + REGSTR_MACHTYPE_IBMPCAT = `IBM PC/AT`, + REGSTR_MACHTYPE_IBMPS2_25 = `IBM PS/2-25`, + REGSTR_MACHTYPE_IBMPS2_30_286 = `IBM PS/2-30 286`, + REGSTR_MACHTYPE_IBMPS2_30 = `IBM PS/2-30`, + REGSTR_MACHTYPE_IBMPS2_50 = `IBM PS/2-50`, + REGSTR_MACHTYPE_IBMPS2_50Z = `IBM PS/2-50Z`, + REGSTR_MACHTYPE_IBMPS2_55SX = `IBM PS/2-55SX`, + REGSTR_MACHTYPE_IBMPS2_60 = `IBM PS/2-60`, + REGSTR_MACHTYPE_IBMPS2_65SX = `IBM PS/2-65SX`, + REGSTR_MACHTYPE_IBMPS2_70 = `IBM PS/2-70`, + REGSTR_MACHTYPE_IBMPS2_P70 = `IBM PS/2-P70`, + REGSTR_MACHTYPE_IBMPS2_70_80 = `IBM PS/2-70/80`, + REGSTR_MACHTYPE_IBMPS2_80 = `IBM PS/2-80`, + REGSTR_MACHTYPE_IBMPS2_90 = `IBM PS/2-90`, + REGSTR_MACHTYPE_IBMPS1 = `IBM PS/1`, + REGSTR_MACHTYPE_PHOENIX_PCAT = `Phoenix PC/AT Compatible`, + REGSTR_MACHTYPE_HP_VECTRA = `HP Vectra`, + REGSTR_MACHTYPE_ATT_PC = `AT&T PC`, + REGSTR_MACHTYPE_ZENITH_PC = `Zenith PC`, + REGSTR_VAL_APMMENUSUSPEND = `APMMenuSuspend`, + + REGSTR_VAL_BUSTYPE = `BusType`, + REGSTR_VAL_CPU = `CPU`, + REGSTR_VAL_NDP = `NDP`, + REGSTR_VAL_PNPBIOSVER = `PnPBIOSVer`, + REGSTR_VAL_PNPSTRUCOFFSET = `PnPStrucOffset`, + REGSTR_VAL_PCIBIOSVER = `PCIBIOSVer`, + REGSTR_VAL_HWMECHANISM = `HWMechanism`, + REGSTR_VAL_LASTPCIBUSNUM = `LastPCIBusNum`, + REGSTR_VAL_CONVMEM = `ConvMem`, + REGSTR_VAL_EXTMEM = `ExtMem`, + REGSTR_VAL_COMPUTERNAME = `ComputerName`, + REGSTR_VAL_BIOSNAME = `BIOSName`, + REGSTR_VAL_BIOSVERSION = `BIOSVersion`, + REGSTR_VAL_BIOSDATE = `BIOSDate`, + REGSTR_VAL_MODEL = `Model`, + REGSTR_VAL_SUBMODEL = `Submodel`, + REGSTR_VAL_REVISION = `Revision`, + REGSTR_VAL_FIFODEPTH = `FIFODepth`, + REGSTR_VAL_RDINTTHRESHOLD = `RDIntThreshold`, + REGSTR_VAL_WRINTTHRESHOLD = `WRIntThreshold`, + REGSTR_VAL_PRIORITY = `Priority`, + REGSTR_VAL_DRIVER = `Driver`, + REGSTR_VAL_FUNCDESC = `FunctionDesc`, + REGSTR_VAL_FORCEDCONFIG = `ForcedConfig`, + REGSTR_VAL_CONFIGFLAGS = `ConfigFlags`, + REGSTR_VAL_CSCONFIGFLAGS = `CSConfigFlags`, + + REGSTR_VAL_ROOT_DEVNODE = `HTREE\ROOT\0`, + REGSTR_VAL_RESERVED_DEVNODE = `HTREE\RESERVED\0`, + REGSTR_PATH_READDATAPORT = REGSTR_KEY_ISAENUM ~ `\ReadDataPort\0`, + REGSTR_PATH_MULTI_FUNCTION = `MF`, + REGSTR_VAL_RESOURCE_MAP = `ResourceMap`, + REGSTR_PATH_CHILD_PREFIX = `Child`, + REGSTR_VAL_MF_FLAGS = `MFFlags`, + REGSTR_VAL_DRVDESC = `DriverDesc`, + REGSTR_VAL_DEVLOADER = `DevLoader`, + REGSTR_VAL_STATICVXD = `StaticVxD`, + REGSTR_VAL_PROPERTIES = `Properties`, + REGSTR_VAL_MANUFACTURER = `Manufacturer`, + REGSTR_VAL_EXISTS = `Exists`, + REGSTR_VAL_CMENUMFLAGS = `CMEnumFlags`, + REGSTR_VAL_CMDRIVFLAGS = `CMDrivFlags`, + REGSTR_VAL_ENUMERATOR = `Enumerator`, + REGSTR_VAL_DEVICEDRIVER = `DeviceDriver`, + REGSTR_VAL_PORTNAME = `PortName`, + REGSTR_VAL_INFPATH = `InfPath`, + REGSTR_VAL_INFSECTION = `InfSection`, + REGSTR_VAL_POLLING = `Polling`, + REGSTR_VAL_DONTLOADIFCONFLICT = `DontLoadIfConflict`, + REGSTR_VAL_PORTSUBCLASS = `PortSubClass`, + REGSTR_VAL_NETCLEAN = `NetClean`, + REGSTR_VAL_IDE_NO_SERIALIZE = `IDENoSerialize`, + REGSTR_VAL_NOCMOSORFDPT = `NoCMOSorFDPT`, + REGSTR_VAL_COMVERIFYBASE = `COMVerifyBase`, + REGSTR_KEY_OVERRIDE = `Override`, + REGSTR_VAL_CONFIGMG = `CONFIGMG`, + REGSTR_VAL_SYSDM = `SysDM`, + REGSTR_VAL_SYSDMFUNC = `SysDMFunc`, + REGSTR_VAL_PRIVATE = `Private`, + REGSTR_VAL_PRIVATEFUNC = `PrivateFunc`, + REGSTR_VAL_DETECT = `Detect`, + REGSTR_VAL_DETECTFUNC = `DetectFunc`, + REGSTR_VAL_ASKFORCONFIG = `AskForConfig`, + REGSTR_VAL_ASKFORCONFIGFUNC = `AskForConfigFunc`, + REGSTR_VAL_WAITFORUNDOCK = `WaitForUndock`, + REGSTR_VAL_WAITFORUNDOCKFUNC = `WaitForUndockFunc`, + REGSTR_VAL_REMOVEROMOKAY = `RemoveRomOkay`, + REGSTR_VAL_REMOVEROMOKAYFUNC = `RemoveRomOkayFunc`, + REGSTR_VAL_CURCONFIG = `CurrentConfig`, + REGSTR_VAL_FRIENDLYNAME = `FriendlyName`, + REGSTR_VAL_CURRENTCONFIG = `CurrentConfig`, + REGSTR_VAL_MAP = `Map`, + REGSTR_VAL_ID = `CurrentID`, + REGSTR_VAL_DOCKED = `CurrentDockedState`, + REGSTR_VAL_CHECKSUM = `CurrentChecksum`, + REGSTR_VAL_HWDETECT = `HardwareDetect`, + REGSTR_VAL_INHIBITRESULTS = `InhibitResults`, + REGSTR_VAL_PROFILEFLAGS = `ProfileFlags`, + REGSTR_KEY_PCMCIA = `PCMCIA\`, + REGSTR_KEY_PCUNKNOWN = `UNKNOWN_MANUFACTURER`, + REGSTR_VAL_PCSSDRIVER = `Driver`, + REGSTR_KEY_PCMTD = `MTD-`, + REGSTR_VAL_PCMTDRIVER = `MTD`, + REGSTR_VAL_HARDWAREID = `HardwareID`, + REGSTR_VAL_INSTALLER = `Installer`, + REGSTR_VAL_INSICON = `Icon`, + REGSTR_VAL_ENUMPROPPAGES = `EnumPropPages`, + REGSTR_VAL_BASICPROPERTIES = `BasicProperties`, + REGSTR_VAL_PRIVATEPROBLEM = `PrivateProblem`, + REGSTR_KEY_CURRENT = `Current`, + REGSTR_KEY_DEFAULT = `Default`, + REGSTR_KEY_MODES = `Modes`, + REGSTR_VAL_MODE = `Mode`, + REGSTR_VAL_BPP = `BPP`, + REGSTR_VAL_HRES = `HRes`, + REGSTR_VAL_VRES = `VRes`, + REGSTR_VAL_FONTSIZE = `FontSize`, + REGSTR_VAL_DRV = `drv`, + REGSTR_VAL_GRB = `grb`, + REGSTR_VAL_VDD = `vdd`, + REGSTR_VAL_VER = `Ver`, + REGSTR_VAL_MAXRES = `MaxResolution`, + REGSTR_VAL_DPMS = `DPMS`, + REGSTR_VAL_RESUMERESET = `ResumeReset`, + REGSTR_VAL_DESCRIPTION = `Description`, + REGSTR_KEY_SYSTEM = `System`, + REGSTR_KEY_USER = `User`, + REGSTR_VAL_DPI = `dpi`, + REGSTR_VAL_PCICOPTIONS = `PCICOptions`, + + REGSTR_VAL_PCICIRQMAP = `PCICIRQMap`, + REGSTR_PATH_APPEARANCE = `Control Panel\Appearance`, + REGSTR_PATH_LOOKSCHEMES = `Control Panel\Appearance\Schemes`, + REGSTR_VAL_CUSTOMCOLORS = `CustomColors`, + REGSTR_PATH_SCREENSAVE = `Control Panel\Desktop`, + REGSTR_VALUE_USESCRPASSWORD = `ScreenSaveUsePassword`, + REGSTR_VALUE_SCRPASSWORD = `ScreenSave_Data`, + REGSTR_VALUE_LOWPOWERTIMEOUT = `ScreenSaveLowPowerTimeout`, + REGSTR_VALUE_POWEROFFTIMEOUT = `ScreenSavePowerOffTimeout`, + REGSTR_VALUE_LOWPOWERACTIVE = `ScreenSaveLowPowerActive`, + REGSTR_VALUE_POWEROFFACTIVE = `ScreenSavePowerOffActive`, + REGSTR_PATH_WINDOWSAPPLETS = `Software\Microsoft\Windows\CurrentVersion\Applets`, + REGSTR_PATH_SYSTRAY = `Software\Microsoft\Windows\CurrentVersion\Applets\SysTray`, + REGSTR_VAL_SYSTRAYSVCS = `Services`, + REGSTR_VAL_SYSTRAYBATFLAGS = `PowerFlags`, + REGSTR_VAL_SYSTRAYPCCARDFLAGS = `PCMCIAFlags`, + REGSTR_PATH_NETWORK_USERSETTINGS = `Network`, + REGSTR_KEY_NETWORK_PERSISTENT = `\Persistent`, + REGSTR_KEY_NETWORK_RECENT = `\Recent`, + REGSTR_VAL_REMOTE_PATH = `RemotePath`, + REGSTR_VAL_USER_NAME = `UserName`, + REGSTR_VAL_PROVIDER_NAME = `ProviderName`, + REGSTR_VAL_CONNECTION_TYPE = `ConnectionType`, + REGSTR_VAL_UPGRADE = `Upgrade`, + REGSTR_KEY_LOGON = `\Logon`, + REGSTR_VAL_MUSTBEVALIDATED = `MustBeValidated`, + REGSTR_VAL_RUNLOGINSCRIPT = `ProcessLoginScript`, + REGSTR_KEY_NETWORKPROVIDER = `\NetworkProvider`, + REGSTR_PATH_NW32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\NWNP32` ~ REGSTR_KEY_NETWORKPROVIDER, + REGSTR_PATH_MS32NETPROVIDER =REGSTR_PATH_SERVICES ~ `\MSNP32` ~ REGSTR_KEY_NETWORKPROVIDER, + REGSTR_VAL_AUTHENT_AGENT = `AuthenticatingAgent`, + REGSTR_VAL_PREFREDIR = `PreferredRedir`, + REGSTR_VAL_AUTOSTART = `AutoStart`, + REGSTR_VAL_AUTOLOGON = `AutoLogon`, + REGSTR_VAL_NETCARD = `Netcard`, + REGSTR_VAL_TRANSPORT = `Transport`, + REGSTR_VAL_DYNAMIC = `Dynamic`, + REGSTR_VAL_TRANSITION = `Transition`, + REGSTR_VAL_STATICDRIVE = `StaticDrive`, + REGSTR_VAL_LOADHI = `LoadHi`, + REGSTR_VAL_LOADRMDRIVERS = `LoadRMDrivers`, + REGSTR_VAL_SETUPN = `SetupN`, + REGSTR_VAL_SETUPNPATH = `SetupNPath`, + REGSTR_VAL_WRKGRP_FORCEMAPPING = `WrkgrpForceMapping`, + REGSTR_VAL_WRKGRP_REQUIRED = `WrkgrpRequired`, + REGSTR_PATH_CURRENT_CONTROL_SET = `System\CurrentControlSet\Control`, + REGSTR_VAL_CURRENT_USER = `Current User`, + REGSTR_PATH_PWDPROVIDER = `System\CurrentControlSet\Control\PwdProvider`, + REGSTR_VAL_PWDPROVIDER_PATH = `ProviderPath`, + REGSTR_VAL_PWDPROVIDER_DESC = `Description`, + REGSTR_VAL_PWDPROVIDER_CHANGEPWD = `ChangePassword`, + REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND = `ChangePasswordHwnd`, + REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS = `GetPasswordStatus`, + REGSTR_VAL_PWDPROVIDER_ISNP = `NetworkProvider`, + REGSTR_VAL_PWDPROVIDER_CHANGEORDER = `ChangeOrder`, + REGSTR_PATH_POLICIES = `Software\Microsoft\Windows\CurrentVersion\Policies`, + REGSTR_PATH_UPDATE = `System\CurrentControlSet\Control\Update`, + REGSTR_VALUE_ENABLE = `Enable`, + REGSTR_VALUE_VERBOSE = `Verbose`, + REGSTR_VALUE_NETPATH = `NetworkPath`, + REGSTR_VALUE_DEFAULTLOC = `UseDefaultNetLocation`, + REGSTR_KEY_NETWORK = `Network`, +// [Redefined] REGSTR_KEY_SYSTEM = `System`) + REGSTR_KEY_PRINTERS = `Printers`, + REGSTR_KEY_WINOLDAPP = `WinOldApp`, + REGSTR_VAL_NOFILESHARING = `NoFileSharing`, + REGSTR_VAL_NOPRINTSHARING = `NoPrintSharing`, + REGSTR_VAL_NOFILESHARINGCTRL = `NoFileSharingControl`, + REGSTR_VAL_NOPRINTSHARINGCTRL = `NoPrintSharingControl`, + REGSTR_VAL_HIDESHAREPWDS = `HideSharePwds`, + REGSTR_VAL_DISABLEPWDCACHING = `DisablePwdCaching`, + REGSTR_VAL_ALPHANUMPWDS = `AlphanumPwds`, + REGSTR_VAL_NETSETUP_DISABLE = `NoNetSetup`, + REGSTR_VAL_NETSETUP_NOCONFIGPAGE = `NoNetSetupConfigPage`, + REGSTR_VAL_NETSETUP_NOIDPAGE = `NoNetSetupIDPage`, + REGSTR_VAL_NETSETUP_NOSECURITYPAGE = `NoNetSetupSecurityPage`, + REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE = `NoVirtMemPage`, + REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE = `NoDevMgrPage`, + REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE = `NoConfigPage`, + REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE = `NoFileSysPage`, + REGSTR_VAL_DISPCPL_NODISPCPL = `NoDispCPL`, + REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE = `NoDispBackgroundPage`, + REGSTR_VAL_DISPCPL_NOSCRSAVPAGE = `NoDispScrSavPage`, + REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE = `NoDispAppearancePage`, + REGSTR_VAL_DISPCPL_NOSETTINGSPAGE = `NoDispSettingsPage`, + REGSTR_VAL_SECCPL_NOSECCPL = `NoSecCPL`, + REGSTR_VAL_SECCPL_NOPWDPAGE = `NoPwdPage`, + REGSTR_VAL_SECCPL_NOADMINPAGE = `NoAdminPage`, + REGSTR_VAL_SECCPL_NOPROFILEPAGE = `NoProfilePage`, + REGSTR_VAL_PRINTERS_HIDETABS = `NoPrinterTabs`, + REGSTR_VAL_PRINTERS_NODELETE = `NoDeletePrinter`, + REGSTR_VAL_PRINTERS_NOADD = `NoAddPrinter`, + REGSTR_VAL_WINOLDAPP_DISABLED = `Disabled`, + REGSTR_VAL_WINOLDAPP_NOREALMODE = `NoRealMode`, + REGSTR_VAL_NOENTIRENETWORK = `NoEntireNetwork`, + REGSTR_VAL_NOWORKGROUPCONTENTS = `NoWorkgroupContents`, + REGSTR_VAL_MINPWDLEN = `MinPwdLen`, + REGSTR_VAL_PWDEXPIRATION = `PwdExpiration`, + REGSTR_VAL_WIN31PROVIDER = `Win31Provider`, + REGSTR_VAL_DISABLEREGTOOLS = `DisableRegistryTools`, + REGSTR_PATH_WINLOGON = `Software\Microsoft\Windows\CurrentVersion\Winlogon`, + REGSTR_VAL_LEGALNOTICECAPTION = `LegalNoticeCaption`, + REGSTR_VAL_LEGALNOTICETEXT = `LegalNoticeText`, + REGSTR_VAL_RESTRICTRUN = `RestrictRun`, + REGSTR_KEY_POL_USERS = `Users`, + REGSTR_KEY_POL_COMPUTERS = `Computers`, + REGSTR_KEY_POL_USERGROUPS = `UserGroups`, + REGSTR_KEY_POL_DEFAULT = `.default`, + REGSTR_KEY_POL_USERGROUPDATA = `GroupData\UserGroups\Priority`, + REGSTR_PATH_TIMEZONE = `System\CurrentControlSet\Control\TimeZoneInformation`, + REGSTR_VAL_TZBIAS = `Bias`, + REGSTR_VAL_TZDLTBIAS = `DaylightBias`, + REGSTR_VAL_TZSTDBIAS = `StandardBias`, + REGSTR_VAL_TZACTBIAS = `ActiveTimeBias`, + REGSTR_VAL_TZDLTFLAG = `DaylightFlag`, + REGSTR_VAL_TZSTDSTART = `StandardStart`, + REGSTR_VAL_TZDLTSTART = `DaylightStart`, + REGSTR_VAL_TZDLTNAME = `DaylightName`, + REGSTR_VAL_TZSTDNAME = `StandardName`, + REGSTR_VAL_TZNOCHANGESTART = `NoChangeStart`, + REGSTR_VAL_TZNOCHANGEEND = `NoChangeEnd`, + REGSTR_VAL_TZNOAUTOTIME = `DisableAutoDaylightTimeSet`, + REGSTR_PATH_FLOATINGPOINTPROCESSOR = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor`, + REGSTR_PATH_FLOATINGPOINTPROCESSOR0 = `HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0`, + REGSTR_PATH_COMPUTRNAME = `System\CurrentControlSet\Control\ComputerName\ComputerName`, + REGSTR_VAL_COMPUTRNAME = `ComputerName`, + REGSTR_PATH_SHUTDOWN = `System\CurrentControlSet\Control\Shutdown`, + REGSTR_VAL_FORCEREBOOT = `ForceReboot`, + REGSTR_VAL_SETUPPROGRAMRAN = `SetupProgramRan`, + REGSTR_VAL_DOES_POLLING = `PollingSupportNeeded`, + REGSTR_PATH_KNOWNDLLS = `System\CurrentControlSet\Control\SessionManager\KnownDLLs`, + REGSTR_PATH_KNOWN16DLLS = `System\CurrentControlSet\Control\SessionManager\Known16DLLs`, + REGSTR_PATH_CHECKVERDLLS = `System\CurrentControlSet\Control\SessionManager\CheckVerDLLs`, + REGSTR_PATH_WARNVERDLLS = `System\CurrentControlSet\Control\SessionManager\WarnVerDLLs`, + REGSTR_PATH_HACKINIFILE = `System\CurrentControlSet\Control\SessionManager\HackIniFiles`, + REGSTR_PATH_CHECKBADAPPS = `System\CurrentControlSet\Control\SessionManager\CheckBadApps`, + REGSTR_PATH_APPPATCH = `System\CurrentControlSet\Control\SessionManager\AppPatches`, + REGSTR_PATH_KNOWNVXDS = `System\CurrentControlSet\Control\SessionManager\KnownVxDs`, + REGSTR_VAL_UNINSTALLER_DISPLAYNAME = `DisplayName`, + REGSTR_VAL_UNINSTALLER_COMMANDLINE = `UninstallString`, + REGSTR_PATH_DESKTOP = REGSTR_PATH_SCREENSAVE, + REGSTR_PATH_MOUSE = `Control Panel\Mouse`, + REGSTR_PATH_KEYBOARD = `Control Panel\Keyboard`, + REGSTR_PATH_COLORS = `Control Panel\Colors`, + REGSTR_PATH_SOUND = `Control Panel\Sound`, + REGSTR_PATH_METRICS = `Control Panel\Desktop\WindowMetrics`, + REGSTR_PATH_ICONS = `Control Panel\Icons`, + REGSTR_PATH_CURSORS = `Control Panel\Cursors`, + REGSTR_PATH_CHECKDISK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive`, + REGSTR_PATH_CHECKDISKSET = `Settings`, + REGSTR_PATH_CHECKDISKUDRVS = `NoUnknownDDErrDrvs`, + REGSTR_PATH_FAULT = `Software\Microsoft\Windows\CurrentVersion\Fault`, + REGSTR_VAL_FAULT_LOGFILE = `LogFile`, + REGSTR_PATH_AEDEBUG = `Software\Microsoft\Windows NT\CurrentVersion\AeDebug`, + REGSTR_VAL_AEDEBUG_DEBUGGER = `Debugger`, + REGSTR_VAL_AEDEBUG_AUTO = `Auto`, + REGSTR_PATH_GRPCONV = `Software\Microsoft\Windows\CurrentVersion\GrpConv`, + REGSTR_VAL_REGITEMDELETEMESSAGE = `Removal Message`, + REGSTR_PATH_LASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastCheck`, + REGSTR_PATH_LASTOPTIMIZE = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastOptimize`, + REGSTR_PATH_LASTBACKUP = `Software\Microsoft\Windows\CurrentVersion\Explorer\LastBackup`, + REGSTR_PATH_CHKLASTCHECK = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastCheck`, + REGSTR_PATH_CHKLASTSURFAN = `Software\Microsoft\Windows\CurrentVersion\Applets\Check Drive\LastSurfaceAnalysis`, + REGSTR_KEY_SHARES = `Software\Microsoft\Windows\CurrentVersion\Network\LanMan`, + REGSTR_VAL_SHARES_FLAGS = `Flags`, + REGSTR_VAL_SHARES_TYPE = `Type`, + REGSTR_VAL_SHARES_PATH = `Path`, + REGSTR_VAL_SHARES_REMARK = `Remark`, + REGSTR_VAL_SHARES_RW_PASS = `Parm1`, + REGSTR_VAL_SHARES_RO_PASS = `Parm2`, + REGSTR_PATH_PRINT = `System\CurrentControlSet\Control\Print`, + REGSTR_PATH_PRINTERS = `System\CurrentControlSet\Control\Print\Printers`, + REGSTR_PATH_PROVIDERS = `System\CurrentControlSet\Control\Print\Providers`, + REGSTR_PATH_MONITORS = `System\CurrentControlSet\Control\Print\Monitors`, + REGSTR_PATH_ENVIRONMENTS = `System\CurrentControlSet\Control\Print\Environments`, + REGSTR_VAL_START_ON_BOOT = `StartOnBoot`, + REGSTR_VAL_PRINTERS_MASK = `PrintersMask`, + REGSTR_VAL_DOS_SPOOL_MASK = `DOSSpoolMask`, + REGSTR_KEY_CURRENT_ENV = `\Windows 4.0`, + REGSTR_KEY_DRIVERS = `\Drivers`, + REGSTR_KEY_PRINT_PROC = `\Print Processors`, + REGSTR_PATH_EVENTLABELS = `AppEvents\EventLabels`, + REGSTR_PATH_SCHEMES = `AppEvents\Schemes`, + REGSTR_PATH_APPS = REGSTR_PATH_SCHEMES ~ `\Apps`, + REGSTR_PATH_APPS_DEFAULT = REGSTR_PATH_SCHEMES ~ `\Apps\.Default`, + REGSTR_PATH_NAMES = REGSTR_PATH_SCHEMES ~ `\Names`, + REGSTR_PATH_MULTIMEDIA = REGSTR_PATH_SETUP ~ `\Multimedia`, + REGSTR_PATH_MULTIMEDIA_AUDIO = `Software\Microsoft\Multimedia\Audio`, + REGSTR_PATH_MEDIARESOURCES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaResources`, + REGSTR_PATH_MEDIAPROPERTIES = REGSTR_PATH_CURRENT_CONTROL_SET ~ `\MediaProperties`, + REGSTR_PATH_PRIVATEPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PrivateProperties`, + REGSTR_PATH_PUBLICPROPERTIES = REGSTR_PATH_MEDIAPROPERTIES ~ `\PublicProperties`, + REGSTR_PATH_JOYOEM = REGSTR_PATH_PRIVATEPROPERTIES ~ `\Joystick\OEM`, + REGSTR_PATH_JOYCONFIG = REGSTR_PATH_MEDIARESOURCES ~ `\Joystick`, + REGSTR_KEY_JOYCURR = `CurrentJoystickSettings`, + REGSTR_KEY_JOYSETTINGS = `JoystickSettings`, + REGSTR_VAL_JOYUSERVALUES = `JoystickUserValues`, + REGSTR_VAL_JOYCALLOUT = `JoystickCallout`, + REGSTR_VAL_JOYNCONFIG = `Joystick%dConfiguration`, + REGSTR_VAL_JOYNOEMNAME = `Joystick%dOEMName`, + REGSTR_VAL_JOYNOEMCALLOUT = `Joystick%dOEMCallout`, + REGSTR_VAL_JOYOEMCALLOUT = `OEMCallout`, + REGSTR_VAL_JOYOEMNAME = `OEMName`, + REGSTR_VAL_JOYOEMDATA = `OEMData`, + REGSTR_VAL_JOYOEMXYLABEL = `OEMXYLabel`, + REGSTR_VAL_JOYOEMZLABEL = `OEMZLabel`, + REGSTR_VAL_JOYOEMRLABEL = `OEMRLabel`, + REGSTR_VAL_JOYOEMPOVLABEL = `OEMPOVLabel`, + REGSTR_VAL_JOYOEMULABEL = `OEMULabel`, + REGSTR_VAL_JOYOEMVLABEL = `OEMVLabel`, + REGSTR_VAL_JOYOEMTESTMOVEDESC = `OEMTestMoveDesc`, + REGSTR_VAL_JOYOEMTESTBUTTONDESC = `OEMTestButtonDesc`, + REGSTR_VAL_JOYOEMTESTMOVECAP = `OEMTestMoveCap`, + REGSTR_VAL_JOYOEMTESTBUTTONCAP = `OEMTestButtonCap`, + REGSTR_VAL_JOYOEMTESTWINCAP = `OEMTestWinCap`, + REGSTR_VAL_JOYOEMCALCAP = `OEMCalCap`, + REGSTR_VAL_JOYOEMCALWINCAP = `OEMCalWinCap`, + REGSTR_VAL_JOYOEMCAL1 = `OEMCal1`, + REGSTR_VAL_JOYOEMCAL2 = `OEMCal2`, + REGSTR_VAL_JOYOEMCAL3 = `OEMCal3`, + REGSTR_VAL_JOYOEMCAL4 = `OEMCal4`, + REGSTR_VAL_JOYOEMCAL5 = `OEMCal5`, + REGSTR_VAL_JOYOEMCAL6 = `OEMCal6`, + REGSTR_VAL_JOYOEMCAL7 = `OEMCal7`, + REGSTR_VAL_JOYOEMCAL8 = `OEMCal8`, + REGSTR_VAL_JOYOEMCAL9 = `OEMCal9`, + REGSTR_VAL_JOYOEMCAL10 = `OEMCal10`, + REGSTR_VAL_JOYOEMCAL11 = `OEMCal11`, + REGSTR_VAL_JOYOEMCAL12 = `OEMCal12`; + +enum { + DTRESULTOK, + DTRESULTFIX, + DTRESULTPROB, + DTRESULTPART +} + +//#ifndef NEC_98 +const PCIC_DEFAULT_IRQMASK = 0x4EB8; +//#else +//#define PCIC_DEFAULT_IRQMASK 0x1468 +//#endif +const PCIC_DEFAULT_NUMSOCKETS = 0; + +struct DSKTLSYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; + WORD wResult; +} +alias DSKTLSYSTEMTIME* PDSKTLSYSTEMTIME, LPDSKTLSYSTEMTIME; Index: src/win32/richedit.d ================================================================== --- src/win32/richedit.d +++ src/win32/richedit.d @@ -1,581 +1,590 @@ -/***********************************************************************\ -* richedit.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.richedit; - -private import win32.windef, win32.winuser; -private import win32.wingdi; // for LF_FACESIZE - -align(4): - -version(Unicode) { - const wchar[] RICHEDIT_CLASS = "RichEdit20W"; -} else { - const char[] RICHEDIT_CLASS = "RichEdit20A"; -} - -const RICHEDIT_CLASS10A = "RICHEDIT"; - -const TCHAR[] - CF_RTF = "Rich Text Format", - CF_RTFNOOBJS = "Rich Text Format Without Objects", - CF_RETEXTOBJ = "RichEdit Text and Objects"; - -const DWORD - CFM_BOLD = 1, - CFM_ITALIC = 2, - CFM_UNDERLINE = 4, - CFM_STRIKEOUT = 8, - CFM_PROTECTED = 16, - CFM_LINK = 32, - CFM_SIZE = 0x80000000, - CFM_COLOR = 0x40000000, - CFM_FACE = 0x20000000, - CFM_OFFSET = 0x10000000, - CFM_CHARSET = 0x08000000, - CFM_SUBSCRIPT = 0x00030000, - CFM_SUPERSCRIPT = 0x00030000; - -const DWORD - CFE_BOLD = 1, - CFE_ITALIC = 2, - CFE_UNDERLINE = 4, - CFE_STRIKEOUT = 8, - CFE_PROTECTED = 16, - CFE_SUBSCRIPT = 0x00010000, - CFE_SUPERSCRIPT = 0x00020000, - CFE_AUTOCOLOR = 0x40000000; - -const CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR - | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK; - -// flags for EM_SETIMEOPTIONS -const LPARAM - IMF_FORCENONE = 1, - IMF_FORCEENABLE = 2, - IMF_FORCEDISABLE = 4, - IMF_CLOSESTATUSWINDOW = 8, - IMF_VERTICAL = 32, - IMF_FORCEACTIVE = 64, - IMF_FORCEINACTIVE = 128, - IMF_FORCEREMEMBER = 256; - -const SEL_EMPTY=0; -const SEL_TEXT=1; -const SEL_OBJECT=2; -const SEL_MULTICHAR=4; -const SEL_MULTIOBJECT=8; - -const MAX_TAB_STOPS=32; - -const PFM_ALIGNMENT=8; -const PFM_NUMBERING=32; -const PFM_OFFSET=4; -const PFM_OFFSETINDENT=0x80000000; -const PFM_RIGHTINDENT=2; -const PFM_STARTINDENT=1; -const PFM_TABSTOPS=16; -const PFM_BORDER=2048; -const PFM_LINESPACING=256; -const PFM_NUMBERINGSTART=32768; -const PFM_NUMBERINGSTYLE=8192; -const PFM_NUMBERINGTAB=16384; -const PFM_SHADING=4096; -const PFM_SPACEAFTER=128; -const PFM_SPACEBEFORE=64; -const PFM_STYLE=1024; -const PFM_DONOTHYPHEN=4194304; -const PFM_KEEP=131072; -const PFM_KEEPNEXT=262144; -const PFM_NOLINENUMBER=1048576; -const PFM_NOWIDOWCONTROL=2097152; -const PFM_PAGEBREAKBEFORE=524288; -const PFM_RTLPARA=65536; -const PFM_SIDEBYSIDE=8388608; -const PFM_TABLE=1073741824; -const PFN_BULLET=1; - -const PFE_DONOTHYPHEN=64; -const PFE_KEEP=2; -const PFE_KEEPNEXT=4; -const PFE_NOLINENUMBER=16; -const PFE_NOWIDOWCONTROL=32; -const PFE_PAGEBREAKBEFORE=8; -const PFE_RTLPARA=1; -const PFE_SIDEBYSIDE=128; -const PFE_TABLE=16384; -const PFA_LEFT=1; -const PFA_RIGHT=2; -const PFA_CENTER=3; -const PFA_JUSTIFY=4; -const PFA_FULL_INTERWORD=4; - -const SF_TEXT=1; -const SF_RTF=2; -const SF_RTFNOOBJS=3; -const SF_TEXTIZED=4; -const SF_UNICODE=16; -const SF_USECODEPAGE=32; -const SF_NCRFORNONASCII=64; -const SF_RTFVAL=0x0700; - -const SFF_PWD=0x0800; -const SFF_KEEPDOCINFO=0x1000; -const SFF_PERSISTVIEWSCALE=0x2000; -const SFF_PLAINRTF=0x4000; -const SFF_SELECTION=0x8000; - -const WB_CLASSIFY = 3; -const WB_MOVEWORDLEFT = 4; -const WB_MOVEWORDRIGHT = 5; -const WB_LEFTBREAK = 6; -const WB_RIGHTBREAK = 7; -const WB_MOVEWORDPREV = 4; -const WB_MOVEWORDNEXT = 5; -const WB_PREVBREAK = 6; -const WB_NEXTBREAK = 7; - -const WBF_WORDWRAP = 16; -const WBF_WORDBREAK = 32; -const WBF_OVERFLOW = 64; -const WBF_LEVEL1 = 128; -const WBF_LEVEL2 = 256; -const WBF_CUSTOM = 512; - -const ES_DISABLENOSCROLL = 8192; -const ES_SUNKEN = 16384; -const ES_SAVESEL = 32768; -const ES_EX_NOCALLOLEINIT = 16777216; -const ES_NOIME = 524288; -const ES_NOOLEDRAGDROP = 8; -const ES_SELECTIONBAR = 16777216; -const ES_SELFIME = 262144; -const ES_VERTICAL = 4194304; - -const EM_CANPASTE = WM_USER+50; -const EM_DISPLAYBAND = WM_USER+51; -const EM_EXGETSEL = WM_USER+52; -const EM_EXLIMITTEXT = WM_USER+53; -const EM_EXLINEFROMCHAR = WM_USER+54; -const EM_EXSETSEL = WM_USER+55; -const EM_FINDTEXT = WM_USER+56; -const EM_FORMATRANGE = WM_USER+57; -const EM_GETCHARFORMAT = WM_USER+58; -const EM_GETEVENTMASK = WM_USER+59; -const EM_GETOLEINTERFACE = WM_USER+60; -const EM_GETPARAFORMAT = WM_USER+61; -const EM_GETSELTEXT = WM_USER+62; -const EM_HIDESELECTION = WM_USER+63; -const EM_PASTESPECIAL = WM_USER+64; -const EM_REQUESTRESIZE = WM_USER+65; -const EM_SELECTIONTYPE = WM_USER+66; -const EM_SETBKGNDCOLOR = WM_USER+67; -const EM_SETCHARFORMAT = WM_USER+68; -const EM_SETEVENTMASK = WM_USER+69; -const EM_SETOLECALLBACK = WM_USER+70; -const EM_SETPARAFORMAT = WM_USER+71; -const EM_SETTARGETDEVICE = WM_USER+72; -const EM_STREAMIN = WM_USER+73; -const EM_STREAMOUT = WM_USER+74; -const EM_GETTEXTRANGE = WM_USER+75; -const EM_FINDWORDBREAK = WM_USER+76; -const EM_SETOPTIONS = WM_USER+77; -const EM_GETOPTIONS = WM_USER+78; -const EM_FINDTEXTEX = WM_USER+79; -const EM_GETWORDBREAKPROCEX = WM_USER+80; -const EM_SETWORDBREAKPROCEX = WM_USER+81; -/* RichEdit 2.0 messages */ -const EM_SETUNDOLIMIT = WM_USER+82; -const EM_REDO = WM_USER+84; -const EM_CANREDO = WM_USER+85; -const EM_GETUNDONAME = WM_USER+86; -const EM_GETREDONAME = WM_USER+87; -const EM_STOPGROUPTYPING = WM_USER+88; -const EM_SETTEXTMODE = WM_USER+89; -const EM_GETTEXTMODE = WM_USER+90; -const EM_AUTOURLDETECT = WM_USER+91; -const EM_GETAUTOURLDETECT = WM_USER + 92; -const EM_SETPALETTE = WM_USER + 93; -const EM_GETTEXTEX = WM_USER+94; -const EM_GETTEXTLENGTHEX = WM_USER+95; -const EM_SHOWSCROLLBAR = WM_USER+96; -const EM_SETTEXTEX = WM_USER + 97; -const EM_SETPUNCTUATION = WM_USER + 100; -const EM_GETPUNCTUATION = WM_USER + 101; -const EM_SETWORDWRAPMODE = WM_USER + 102; -const EM_GETWORDWRAPMODE = WM_USER + 103; -const EM_SETIMECOLOR = WM_USER + 104; -const EM_GETIMECOLOR = WM_USER + 105; -const EM_SETIMEOPTIONS = WM_USER + 106; -const EM_GETIMEOPTIONS = WM_USER + 107; -const EM_SETLANGOPTIONS = WM_USER+120; -const EM_GETLANGOPTIONS = WM_USER+121; -const EM_GETIMECOMPMODE = WM_USER+122; -const EM_FINDTEXTW = WM_USER + 123; -const EM_FINDTEXTEXW = WM_USER + 124; -const EM_RECONVERSION = WM_USER + 125; -const EM_SETBIDIOPTIONS = WM_USER + 200; -const EM_GETBIDIOPTIONS = WM_USER + 201; -const EM_SETTYPOGRAPHYOPTIONS = WM_USER+202; -const EM_GETTYPOGRAPHYOPTIONS = WM_USER+203; -const EM_SETEDITSTYLE = WM_USER + 204; -const EM_GETEDITSTYLE = WM_USER + 205; -const EM_GETSCROLLPOS = WM_USER+221; -const EM_SETSCROLLPOS = WM_USER+222; -const EM_SETFONTSIZE = WM_USER+223; -const EM_GETZOOM = WM_USER+224; -const EM_SETZOOM = WM_USER+225; - -const EN_MSGFILTER = 1792; -const EN_REQUESTRESIZE = 1793; -const EN_SELCHANGE = 1794; -const EN_DROPFILES = 1795; -const EN_PROTECTED = 1796; -const EN_CORRECTTEXT = 1797; -const EN_STOPNOUNDO = 1798; -const EN_IMECHANGE = 1799; -const EN_SAVECLIPBOARD = 1800; -const EN_OLEOPFAILED = 1801; -const EN_LINK = 1803; - -const ENM_NONE = 0; -const ENM_CHANGE = 1; -const ENM_UPDATE = 2; -const ENM_SCROLL = 4; -const ENM_SCROLLEVENTS = 8; -const ENM_DRAGDROPDONE = 16; -const ENM_KEYEVENTS = 65536; -const ENM_MOUSEEVENTS = 131072; -const ENM_REQUESTRESIZE = 262144; -const ENM_SELCHANGE = 524288; -const ENM_DROPFILES = 1048576; -const ENM_PROTECTED = 2097152; -const ENM_CORRECTTEXT = 4194304; -const ENM_IMECHANGE = 8388608; -const ENM_LANGCHANGE = 16777216; -const ENM_OBJECTPOSITIONS = 33554432; -const ENM_LINK = 67108864; - -const ECO_AUTOWORDSELECTION=1; -const ECO_AUTOVSCROLL=64; -const ECO_AUTOHSCROLL=128; -const ECO_NOHIDESEL=256; -const ECO_READONLY=2048; -const ECO_WANTRETURN=4096; -const ECO_SAVESEL=0x8000; -const ECO_SELECTIONBAR=0x1000000; -const ECO_VERTICAL=0x400000; - -enum { - ECOOP_SET = 1, - ECOOP_OR, - ECOOP_AND, - ECOOP_XOR -} - -const SCF_DEFAULT = 0; -const SCF_SELECTION = 1; -const SCF_WORD = 2; -const SCF_ALL = 4; -const SCF_USEUIRULES = 8; - -const TM_PLAINTEXT=1; -const TM_RICHTEXT=2; -const TM_SINGLELEVELUNDO=4; -const TM_MULTILEVELUNDO=8; -const TM_SINGLECODEPAGE=16; -const TM_MULTICODEPAGE=32; - -const GT_DEFAULT=0; -const GT_USECRLF=1; - -const yHeightCharPtsMost=1638; -const lDefaultTab=720; - -struct CHARFORMATA { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - char szFaceName[LF_FACESIZE]; -} -struct CHARFORMATW { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - WCHAR szFaceName[LF_FACESIZE]; -} - -struct CHARFORMAT2A { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - char szFaceName[LF_FACESIZE]; - WORD wWeight; - SHORT sSpacing; - COLORREF crBackColor; - LCID lcid; - DWORD dwReserved; - SHORT sStyle; - WORD wKerning; - BYTE bUnderlineType; - BYTE bAnimation; - BYTE bRevAuthor; -} - -struct CHARFORMAT2W { - UINT cbSize = this.sizeof; - DWORD dwMask; - DWORD dwEffects; - LONG yHeight; - LONG yOffset; - COLORREF crTextColor; - BYTE bCharSet; - BYTE bPitchAndFamily; - WCHAR szFaceName[LF_FACESIZE]; - WORD wWeight; - SHORT sSpacing; - COLORREF crBackColor; - LCID lcid; - DWORD dwReserved; - SHORT sStyle; - WORD wKerning; - BYTE bUnderlineType; - BYTE bAnimation; - BYTE bRevAuthor; -} - -struct CHARRANGE { - LONG cpMin; - LONG cpMax; -} - -struct COMPCOLOR { - COLORREF crText; - COLORREF crBackground; - DWORD dwEffects; -} - -extern (Windows) { - alias DWORD function(DWORD,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; -} - -struct EDITSTREAM { - DWORD dwCookie; - DWORD dwError; - EDITSTREAMCALLBACK pfnCallback; -} - -struct ENCORRECTTEXT { - NMHDR nmhdr; - CHARRANGE chrg; - WORD seltyp; -} - -struct ENDROPFILES { - NMHDR nmhdr; - HANDLE hDrop; - LONG cp; - BOOL fProtected; -} - -struct ENLINK { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; - CHARRANGE chrg; -} - -struct ENOLEOPFAILED { - NMHDR nmhdr; - LONG iob; - LONG lOper; - HRESULT hr; -} - -struct ENPROTECTED { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; - CHARRANGE chrg; -} -alias ENPROTECTED* LPENPROTECTED; - -struct ENSAVECLIPBOARD { - NMHDR nmhdr; - LONG cObjectCount; - LONG cch; -} - -struct FINDTEXTA { - CHARRANGE chrg; - LPSTR lpstrText; -} - -struct FINDTEXTW { - CHARRANGE chrg; - LPWSTR lpstrText; -} - -struct FINDTEXTEXA { - CHARRANGE chrg; - LPSTR lpstrText; - CHARRANGE chrgText; -} - -struct FINDTEXTEXW { - CHARRANGE chrg; - LPWSTR lpstrText; - CHARRANGE chrgText; -} - -struct FORMATRANGE { - HDC hdc; - HDC hdcTarget; - RECT rc; - RECT rcPage; - CHARRANGE chrg; -} - -struct MSGFILTER { - NMHDR nmhdr; - UINT msg; - WPARAM wParam; - LPARAM lParam; -} - -struct PARAFORMAT { - UINT cbSize = this.sizeof; - DWORD dwMask; - WORD wNumbering; - WORD wReserved; - LONG dxStartIndent; - LONG dxRightIndent; - LONG dxOffset; - WORD wAlignment; - SHORT cTabCount; - LONG rgxTabs[MAX_TAB_STOPS]; -} - -struct PARAFORMAT2 { - UINT cbSize = this.sizeof; - DWORD dwMask; - WORD wNumbering; - WORD wEffects; - LONG dxStartIndent; - LONG dxRightIndent; - LONG dxOffset; - WORD wAlignment; - SHORT cTabCount; - LONG rgxTabs[MAX_TAB_STOPS]; - LONG dySpaceBefore; - LONG dySpaceAfter; - LONG dyLineSpacing; - SHORT sStype; - BYTE bLineSpacingRule; - BYTE bOutlineLevel; - WORD wShadingWeight; - WORD wShadingStyle; - WORD wNumberingStart; - WORD wNumberingStyle; - WORD wNumberingTab; - WORD wBorderSpace; - WORD wBorderWidth; - WORD wBorders; -} - -struct SELCHANGE { - NMHDR nmhdr; - CHARRANGE chrg; - WORD seltyp; -} - -struct TEXTRANGEA { - CHARRANGE chrg; - LPSTR lpstrText; -} - -struct TEXTRANGEW { - CHARRANGE chrg; - LPWSTR lpstrText; -} - -struct REQRESIZE { - NMHDR nmhdr; - RECT rc; -} - -struct REPASTESPECIAL { - DWORD dwAspect; - DWORD dwParam; -} - -struct PUNCTUATION { - UINT iSize; - LPSTR szPunctuation; -} - -struct GETTEXTEX { - DWORD cb; - DWORD flags; - UINT codepage; - LPCSTR lpDefaultChar; - LPBOOL lpUsedDefaultChar; -} - -extern (Windows) { -alias LONG function(char*,LONG,BYTE,INT) EDITWORDBREAKPROCEX; -} - -/* Defines for EM_SETTYPOGRAPHYOPTIONS */ -const TO_ADVANCEDTYPOGRAPHY = 1; -const TO_SIMPLELINEBREAK = 2; - -/* Defines for GETTEXTLENGTHEX */ -const GTL_DEFAULT = 0; -const GTL_USECRLF = 1; -const GTL_PRECISE = 2; -const GTL_CLOSE = 4; -const GTL_NUMCHARS = 8; -const GTL_NUMBYTES = 16; - -struct GETTEXTLENGTHEX { - DWORD flags; - UINT codepage; -} - -version(Unicode) { - alias CHARFORMATW CHARFORMAT; - alias CHARFORMAT2W CHARFORMAT2; - alias FINDTEXTW FINDTEXT; - alias FINDTEXTEXW FINDTEXTEX; - alias TEXTRANGEW TEXTRANGE; -} else { - alias CHARFORMATA CHARFORMAT; - alias CHARFORMAT2A CHARFORMAT2; - alias FINDTEXTA FINDTEXT; - alias FINDTEXTEXA FINDTEXTEX; - alias TEXTRANGEA TEXTRANGE; -} +/***********************************************************************\ +* richedit.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.richedit; + +private import win32.windef, win32.winuser; +private import win32.wingdi; // for LF_FACESIZE + +align(4): + +version(Unicode) { + const wchar[] RICHEDIT_CLASS = "RichEdit20W"; +} else { + const char[] RICHEDIT_CLASS = "RichEdit20A"; +} + +const RICHEDIT_CLASS10A = "RICHEDIT"; + +const TCHAR[] + CF_RTF = "Rich Text Format", + CF_RTFNOOBJS = "Rich Text Format Without Objects", + CF_RETEXTOBJ = "RichEdit Text and Objects"; + +const DWORD + CFM_BOLD = 1, + CFM_ITALIC = 2, + CFM_UNDERLINE = 4, + CFM_STRIKEOUT = 8, + CFM_PROTECTED = 16, + CFM_LINK = 32, + CFM_SIZE = 0x80000000, + CFM_COLOR = 0x40000000, + CFM_FACE = 0x20000000, + CFM_OFFSET = 0x10000000, + CFM_CHARSET = 0x08000000, + CFM_SUBSCRIPT = 0x00030000, + CFM_SUPERSCRIPT = 0x00030000; + +const DWORD + CFE_BOLD = 1, + CFE_ITALIC = 2, + CFE_UNDERLINE = 4, + CFE_STRIKEOUT = 8, + CFE_PROTECTED = 16, + CFE_SUBSCRIPT = 0x00010000, + CFE_SUPERSCRIPT = 0x00020000, + CFE_AUTOCOLOR = 0x40000000; + +const CFM_EFFECTS = CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE | CFM_COLOR + | CFM_STRIKEOUT | CFE_PROTECTED | CFM_LINK; + +// flags for EM_SETIMEOPTIONS +const LPARAM + IMF_FORCENONE = 1, + IMF_FORCEENABLE = 2, + IMF_FORCEDISABLE = 4, + IMF_CLOSESTATUSWINDOW = 8, + IMF_VERTICAL = 32, + IMF_FORCEACTIVE = 64, + IMF_FORCEINACTIVE = 128, + IMF_FORCEREMEMBER = 256; + +const SEL_EMPTY=0; +const SEL_TEXT=1; +const SEL_OBJECT=2; +const SEL_MULTICHAR=4; +const SEL_MULTIOBJECT=8; + +const MAX_TAB_STOPS=32; + +const PFM_ALIGNMENT=8; +const PFM_NUMBERING=32; +const PFM_OFFSET=4; +const PFM_OFFSETINDENT=0x80000000; +const PFM_RIGHTINDENT=2; +const PFM_STARTINDENT=1; +const PFM_TABSTOPS=16; +const PFM_BORDER=2048; +const PFM_LINESPACING=256; +const PFM_NUMBERINGSTART=32768; +const PFM_NUMBERINGSTYLE=8192; +const PFM_NUMBERINGTAB=16384; +const PFM_SHADING=4096; +const PFM_SPACEAFTER=128; +const PFM_SPACEBEFORE=64; +const PFM_STYLE=1024; +const PFM_DONOTHYPHEN=4194304; +const PFM_KEEP=131072; +const PFM_KEEPNEXT=262144; +const PFM_NOLINENUMBER=1048576; +const PFM_NOWIDOWCONTROL=2097152; +const PFM_PAGEBREAKBEFORE=524288; +const PFM_RTLPARA=65536; +const PFM_SIDEBYSIDE=8388608; +const PFM_TABLE=1073741824; +const PFN_BULLET=1; + +const PFE_DONOTHYPHEN=64; +const PFE_KEEP=2; +const PFE_KEEPNEXT=4; +const PFE_NOLINENUMBER=16; +const PFE_NOWIDOWCONTROL=32; +const PFE_PAGEBREAKBEFORE=8; +const PFE_RTLPARA=1; +const PFE_SIDEBYSIDE=128; +const PFE_TABLE=16384; +const PFA_LEFT=1; +const PFA_RIGHT=2; +const PFA_CENTER=3; +const PFA_JUSTIFY=4; +const PFA_FULL_INTERWORD=4; + +const SF_TEXT=1; +const SF_RTF=2; +const SF_RTFNOOBJS=3; +const SF_TEXTIZED=4; +const SF_UNICODE=16; +const SF_USECODEPAGE=32; +const SF_NCRFORNONASCII=64; +const SF_RTFVAL=0x0700; + +const SFF_PWD=0x0800; +const SFF_KEEPDOCINFO=0x1000; +const SFF_PERSISTVIEWSCALE=0x2000; +const SFF_PLAINRTF=0x4000; +const SFF_SELECTION=0x8000; + +const WB_CLASSIFY = 3; +const WB_MOVEWORDLEFT = 4; +const WB_MOVEWORDRIGHT = 5; +const WB_LEFTBREAK = 6; +const WB_RIGHTBREAK = 7; +const WB_MOVEWORDPREV = 4; +const WB_MOVEWORDNEXT = 5; +const WB_PREVBREAK = 6; +const WB_NEXTBREAK = 7; + +const WBF_WORDWRAP = 16; +const WBF_WORDBREAK = 32; +const WBF_OVERFLOW = 64; +const WBF_LEVEL1 = 128; +const WBF_LEVEL2 = 256; +const WBF_CUSTOM = 512; + +const ES_DISABLENOSCROLL = 8192; +const ES_SUNKEN = 16384; +const ES_SAVESEL = 32768; +const ES_EX_NOCALLOLEINIT = 16777216; +const ES_NOIME = 524288; +const ES_NOOLEDRAGDROP = 8; +const ES_SELECTIONBAR = 16777216; +const ES_SELFIME = 262144; +const ES_VERTICAL = 4194304; + +const EM_CANPASTE = WM_USER+50; +const EM_DISPLAYBAND = WM_USER+51; +const EM_EXGETSEL = WM_USER+52; +const EM_EXLIMITTEXT = WM_USER+53; +const EM_EXLINEFROMCHAR = WM_USER+54; +const EM_EXSETSEL = WM_USER+55; +const EM_FINDTEXT = WM_USER+56; +const EM_FORMATRANGE = WM_USER+57; +const EM_GETCHARFORMAT = WM_USER+58; +const EM_GETEVENTMASK = WM_USER+59; +const EM_GETOLEINTERFACE = WM_USER+60; +const EM_GETPARAFORMAT = WM_USER+61; +const EM_GETSELTEXT = WM_USER+62; +const EM_HIDESELECTION = WM_USER+63; +const EM_PASTESPECIAL = WM_USER+64; +const EM_REQUESTRESIZE = WM_USER+65; +const EM_SELECTIONTYPE = WM_USER+66; +const EM_SETBKGNDCOLOR = WM_USER+67; +const EM_SETCHARFORMAT = WM_USER+68; +const EM_SETEVENTMASK = WM_USER+69; +const EM_SETOLECALLBACK = WM_USER+70; +const EM_SETPARAFORMAT = WM_USER+71; +const EM_SETTARGETDEVICE = WM_USER+72; +const EM_STREAMIN = WM_USER+73; +const EM_STREAMOUT = WM_USER+74; +const EM_GETTEXTRANGE = WM_USER+75; +const EM_FINDWORDBREAK = WM_USER+76; +const EM_SETOPTIONS = WM_USER+77; +const EM_GETOPTIONS = WM_USER+78; +const EM_FINDTEXTEX = WM_USER+79; +const EM_GETWORDBREAKPROCEX = WM_USER+80; +const EM_SETWORDBREAKPROCEX = WM_USER+81; +/* RichEdit 2.0 messages */ +const EM_SETUNDOLIMIT = WM_USER+82; +const EM_REDO = WM_USER+84; +const EM_CANREDO = WM_USER+85; +const EM_GETUNDONAME = WM_USER+86; +const EM_GETREDONAME = WM_USER+87; +const EM_STOPGROUPTYPING = WM_USER+88; +const EM_SETTEXTMODE = WM_USER+89; +const EM_GETTEXTMODE = WM_USER+90; +const EM_AUTOURLDETECT = WM_USER+91; +const EM_GETAUTOURLDETECT = WM_USER + 92; +const EM_SETPALETTE = WM_USER + 93; +const EM_GETTEXTEX = WM_USER+94; +const EM_GETTEXTLENGTHEX = WM_USER+95; +const EM_SHOWSCROLLBAR = WM_USER+96; +const EM_SETTEXTEX = WM_USER + 97; +const EM_SETPUNCTUATION = WM_USER + 100; +const EM_GETPUNCTUATION = WM_USER + 101; +const EM_SETWORDWRAPMODE = WM_USER + 102; +const EM_GETWORDWRAPMODE = WM_USER + 103; +const EM_SETIMECOLOR = WM_USER + 104; +const EM_GETIMECOLOR = WM_USER + 105; +const EM_SETIMEOPTIONS = WM_USER + 106; +const EM_GETIMEOPTIONS = WM_USER + 107; +const EM_SETLANGOPTIONS = WM_USER+120; +const EM_GETLANGOPTIONS = WM_USER+121; +const EM_GETIMECOMPMODE = WM_USER+122; +const EM_FINDTEXTW = WM_USER + 123; +const EM_FINDTEXTEXW = WM_USER + 124; +const EM_RECONVERSION = WM_USER + 125; +const EM_SETBIDIOPTIONS = WM_USER + 200; +const EM_GETBIDIOPTIONS = WM_USER + 201; +const EM_SETTYPOGRAPHYOPTIONS = WM_USER+202; +const EM_GETTYPOGRAPHYOPTIONS = WM_USER+203; +const EM_SETEDITSTYLE = WM_USER + 204; +const EM_GETEDITSTYLE = WM_USER + 205; +const EM_GETSCROLLPOS = WM_USER+221; +const EM_SETSCROLLPOS = WM_USER+222; +const EM_SETFONTSIZE = WM_USER+223; +const EM_GETZOOM = WM_USER+224; +const EM_SETZOOM = WM_USER+225; + +const EN_MSGFILTER = 1792; +const EN_REQUESTRESIZE = 1793; +const EN_SELCHANGE = 1794; +const EN_DROPFILES = 1795; +const EN_PROTECTED = 1796; +const EN_CORRECTTEXT = 1797; +const EN_STOPNOUNDO = 1798; +const EN_IMECHANGE = 1799; +const EN_SAVECLIPBOARD = 1800; +const EN_OLEOPFAILED = 1801; +const EN_LINK = 1803; + +const ENM_NONE = 0; +const ENM_CHANGE = 1; +const ENM_UPDATE = 2; +const ENM_SCROLL = 4; +const ENM_SCROLLEVENTS = 8; +const ENM_DRAGDROPDONE = 16; +const ENM_KEYEVENTS = 65536; +const ENM_MOUSEEVENTS = 131072; +const ENM_REQUESTRESIZE = 262144; +const ENM_SELCHANGE = 524288; +const ENM_DROPFILES = 1048576; +const ENM_PROTECTED = 2097152; +const ENM_CORRECTTEXT = 4194304; +const ENM_IMECHANGE = 8388608; +const ENM_LANGCHANGE = 16777216; +const ENM_OBJECTPOSITIONS = 33554432; +const ENM_LINK = 67108864; + +const ECO_AUTOWORDSELECTION=1; +const ECO_AUTOVSCROLL=64; +const ECO_AUTOHSCROLL=128; +const ECO_NOHIDESEL=256; +const ECO_READONLY=2048; +const ECO_WANTRETURN=4096; +const ECO_SAVESEL=0x8000; +const ECO_SELECTIONBAR=0x1000000; +const ECO_VERTICAL=0x400000; + +enum { + ECOOP_SET = 1, + ECOOP_OR, + ECOOP_AND, + ECOOP_XOR +} + +const SCF_DEFAULT = 0; +const SCF_SELECTION = 1; +const SCF_WORD = 2; +const SCF_ALL = 4; +const SCF_USEUIRULES = 8; + +alias DWORD TEXTMODE; +const TM_PLAINTEXT=1; +const TM_RICHTEXT=2; +const TM_SINGLELEVELUNDO=4; +const TM_MULTILEVELUNDO=8; +const TM_SINGLECODEPAGE=16; +const TM_MULTICODEPAGE=32; + +const GT_DEFAULT=0; +const GT_USECRLF=1; + +const yHeightCharPtsMost=1638; +const lDefaultTab=720; + +alias DWORD UNDONAMEID; +const UID_UNKNOWN = 0; +const UID_TYPING = 1; +const UID_DELETE = 2; +const UID_DRAGDROP = 3; +const UID_CUT = 4; +const UID_PASTE = 5; + +struct CHARFORMATA { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char[LF_FACESIZE] szFaceName; +} +struct CHARFORMATW { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR[LF_FACESIZE] szFaceName; +} + +struct CHARFORMAT2A { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + char[LF_FACESIZE] szFaceName; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; +} + +struct CHARFORMAT2W { + UINT cbSize = this.sizeof; + DWORD dwMask; + DWORD dwEffects; + LONG yHeight; + LONG yOffset; + COLORREF crTextColor; + BYTE bCharSet; + BYTE bPitchAndFamily; + WCHAR[LF_FACESIZE] szFaceName; + WORD wWeight; + SHORT sSpacing; + COLORREF crBackColor; + LCID lcid; + DWORD dwReserved; + SHORT sStyle; + WORD wKerning; + BYTE bUnderlineType; + BYTE bAnimation; + BYTE bRevAuthor; +} + +struct CHARRANGE { + LONG cpMin; + LONG cpMax; +} + +struct COMPCOLOR { + COLORREF crText; + COLORREF crBackground; + DWORD dwEffects; +} + +extern (Windows) { + alias DWORD function(DWORD,PBYTE,LONG,LONG*) EDITSTREAMCALLBACK; +} + +struct EDITSTREAM { + DWORD dwCookie; + DWORD dwError; + EDITSTREAMCALLBACK pfnCallback; +} + +struct ENCORRECTTEXT { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} + +struct ENDROPFILES { + NMHDR nmhdr; + HANDLE hDrop; + LONG cp; + BOOL fProtected; +} + +struct ENLINK { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} + +struct ENOLEOPFAILED { + NMHDR nmhdr; + LONG iob; + LONG lOper; + HRESULT hr; +} + +struct ENPROTECTED { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; + CHARRANGE chrg; +} +alias ENPROTECTED* LPENPROTECTED; + +struct ENSAVECLIPBOARD { + NMHDR nmhdr; + LONG cObjectCount; + LONG cch; +} + +struct FINDTEXTA { + CHARRANGE chrg; + LPSTR lpstrText; +} + +struct FINDTEXTW { + CHARRANGE chrg; + LPWSTR lpstrText; +} + +struct FINDTEXTEXA { + CHARRANGE chrg; + LPSTR lpstrText; + CHARRANGE chrgText; +} + +struct FINDTEXTEXW { + CHARRANGE chrg; + LPWSTR lpstrText; + CHARRANGE chrgText; +} + +struct FORMATRANGE { + HDC hdc; + HDC hdcTarget; + RECT rc; + RECT rcPage; + CHARRANGE chrg; +} + +struct MSGFILTER { + NMHDR nmhdr; + UINT msg; + WPARAM wParam; + LPARAM lParam; +} + +struct PARAFORMAT { + UINT cbSize = this.sizeof; + DWORD dwMask; + WORD wNumbering; + WORD wReserved; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG[MAX_TAB_STOPS] rgxTabs; +} + +struct PARAFORMAT2 { + UINT cbSize = this.sizeof; + DWORD dwMask; + WORD wNumbering; + WORD wEffects; + LONG dxStartIndent; + LONG dxRightIndent; + LONG dxOffset; + WORD wAlignment; + SHORT cTabCount; + LONG[MAX_TAB_STOPS] rgxTabs; + LONG dySpaceBefore; + LONG dySpaceAfter; + LONG dyLineSpacing; + SHORT sStype; + BYTE bLineSpacingRule; + BYTE bOutlineLevel; + WORD wShadingWeight; + WORD wShadingStyle; + WORD wNumberingStart; + WORD wNumberingStyle; + WORD wNumberingTab; + WORD wBorderSpace; + WORD wBorderWidth; + WORD wBorders; +} + +struct SELCHANGE { + NMHDR nmhdr; + CHARRANGE chrg; + WORD seltyp; +} + +struct TEXTRANGEA { + CHARRANGE chrg; + LPSTR lpstrText; +} + +struct TEXTRANGEW { + CHARRANGE chrg; + LPWSTR lpstrText; +} + +struct REQRESIZE { + NMHDR nmhdr; + RECT rc; +} + +struct REPASTESPECIAL { + DWORD dwAspect; + DWORD dwParam; +} + +struct PUNCTUATION { + UINT iSize; + LPSTR szPunctuation; +} + +struct GETTEXTEX { + DWORD cb; + DWORD flags; + UINT codepage; + LPCSTR lpDefaultChar; + LPBOOL lpUsedDefChar; +} + +extern (Windows) { +alias LONG function(char*,LONG,BYTE,INT) EDITWORDBREAKPROCEX; +} + +/* Defines for EM_SETTYPOGRAPHYOPTIONS */ +const TO_ADVANCEDTYPOGRAPHY = 1; +const TO_SIMPLELINEBREAK = 2; + +/* Defines for GETTEXTLENGTHEX */ +const GTL_DEFAULT = 0; +const GTL_USECRLF = 1; +const GTL_PRECISE = 2; +const GTL_CLOSE = 4; +const GTL_NUMCHARS = 8; +const GTL_NUMBYTES = 16; + +struct GETTEXTLENGTHEX { + DWORD flags; + UINT codepage; +} + +version(Unicode) { + alias CHARFORMATW CHARFORMAT; + alias CHARFORMAT2W CHARFORMAT2; + alias FINDTEXTW FINDTEXT; + alias FINDTEXTEXW FINDTEXTEX; + alias TEXTRANGEW TEXTRANGE; +} else { + alias CHARFORMATA CHARFORMAT; + alias CHARFORMAT2A CHARFORMAT2; + alias FINDTEXTA FINDTEXT; + alias FINDTEXTEXA FINDTEXTEX; + alias TEXTRANGEA TEXTRANGE; +} Index: src/win32/richole.d ================================================================== --- src/win32/richole.d +++ src/win32/richole.d @@ -1,101 +1,101 @@ -/***********************************************************************\ -* richole.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.richole; - -private import win32.objfwd, win32.objidl, win32.ole2, win32.unknwn, - win32.windef; -private import win32.richedit; // for CHARRANGE - -align(4): - -const ULONG - REO_GETOBJ_NO_INTERFACES = 0, - REO_GETOBJ_POLEOBJ = 1, - REO_GETOBJ_PSTG = 2, - REO_GETOBJ_POLESITE = 4, - REO_GETOBJ_ALL_INTERFACES = 7, - REO_CP_SELECTION = -1, - REO_IOB_SELECTION = -1, - REO_IOB_USE_CP = -2, - REO_NULL = 0, - REO_READWRITEMASK = 0x3F, - REO_DONTNEEDPALETTE = 32, - REO_BLANK = 16, - REO_DYNAMICSIZE = 8, - REO_INVERTEDSELECT = 4, - REO_BELOWBASELINE = 2, - REO_RESIZABLE = 1, - REO_LINK = 0x80000000, - REO_STATIC = 0x40000000, - REO_SELECTED = 0x08000000, - REO_OPEN = 0x4000000, - REO_INPLACEACTIVE = 0x2000000, - REO_HILITED = 0x1000000, - REO_LINKAVAILABLE = 0x800000, - REO_GETMETAFILE = 0x400000; - -enum { - RECO_PASTE = 0, - RECO_DROP, - RECO_COPY, - RECO_CUT, - RECO_DRAG // = 4 -} - -extern (C) extern const GUID - IID_IRichEditOle, - IID_IRichEditOleCallback; - -struct REOBJECT { - DWORD cbStruct = REOBJECT.sizeof; - LONG cp; - CLSID clsid; - LPOLEOBJECT poleobj; - LPSTORAGE pstg; - LPOLECLIENTSITE polesite; - SIZEL sizel; - DWORD dvaspect; - DWORD dwFlags; - DWORD dwUser; -} - -interface IRichEditOle : IUnknown { - HRESULT GetClientSite(LPOLECLIENTSITE*); - LONG GetObjectCount(); - LONG GetLinkCount(); - HRESULT GetObject(LONG, REOBJECT*, DWORD); - HRESULT InsertObject(REOBJECT*); - HRESULT ConvertObject(LONG, REFCLSID, LPCSTR); - HRESULT ActivateAs(REFCLSID, REFCLSID); - HRESULT SetHostNames(LPCSTR, LPCSTR); - HRESULT SetLinkAvailable(LONG, BOOL); - HRESULT SetDvaspect(LONG, DWORD); - HRESULT HandsOffStorage(LONG); - HRESULT SaveCompleted(LONG, LPSTORAGE); - HRESULT InPlaceDeactivate(); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); - HRESULT ImportDataObject(LPDATAOBJECT, CLIPFORMAT, HGLOBAL); -}; -alias IRichEditOle* LPRICHEDITOLE; - -interface IRichEditOleCallback : IUnknown { - HRESULT GetNewStorage(LPSTORAGE*); - HRESULT GetInPlaceContext(LPOLEINPLACEFRAME*, LPOLEINPLACEUIWINDOW*, LPOLEINPLACEFRAMEINFO); - HRESULT ShowContainerUI(BOOL); - HRESULT QueryInsertObject(LPCLSID, LPSTORAGE, LONG); - HRESULT DeleteObject(LPOLEOBJECT); - HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD, BOOL, HGLOBAL); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); - HRESULT GetDragDropEffect(BOOL, DWORD, PDWORD); - HRESULT GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE*, HMENU*); -}; -alias IRichEditOleCallback* LPRICHEDITOLECALLBACK; +/***********************************************************************\ +* richole.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.richole; + +private import win32.objfwd, win32.objidl, win32.ole2, win32.unknwn, + win32.windef; +private import win32.richedit; // for CHARRANGE + +align(4): + +const ULONG + REO_GETOBJ_NO_INTERFACES = 0, + REO_GETOBJ_POLEOBJ = 1, + REO_GETOBJ_PSTG = 2, + REO_GETOBJ_POLESITE = 4, + REO_GETOBJ_ALL_INTERFACES = 7, + REO_CP_SELECTION = -1, + REO_IOB_SELECTION = -1, + REO_IOB_USE_CP = -2, + REO_NULL = 0, + REO_READWRITEMASK = 0x3F, + REO_DONTNEEDPALETTE = 32, + REO_BLANK = 16, + REO_DYNAMICSIZE = 8, + REO_INVERTEDSELECT = 4, + REO_BELOWBASELINE = 2, + REO_RESIZABLE = 1, + REO_LINK = 0x80000000, + REO_STATIC = 0x40000000, + REO_SELECTED = 0x08000000, + REO_OPEN = 0x4000000, + REO_INPLACEACTIVE = 0x2000000, + REO_HILITED = 0x1000000, + REO_LINKAVAILABLE = 0x800000, + REO_GETMETAFILE = 0x400000; + +enum { + RECO_PASTE = 0, + RECO_DROP, + RECO_COPY, + RECO_CUT, + RECO_DRAG // = 4 +} + +extern (C) extern const GUID + IID_IRichEditOle, + IID_IRichEditOleCallback; + +struct REOBJECT { + DWORD cbStruct = REOBJECT.sizeof; + LONG cp; + CLSID clsid; + LPOLEOBJECT poleobj; + LPSTORAGE pstg; + LPOLECLIENTSITE polesite; + SIZEL sizel; + DWORD dvaspect; + DWORD dwFlags; + DWORD dwUser; +} + +interface IRichEditOle : IUnknown { + HRESULT GetClientSite(LPOLECLIENTSITE*); + LONG GetObjectCount(); + LONG GetLinkCount(); + HRESULT GetObject(LONG, REOBJECT*, DWORD); + HRESULT InsertObject(REOBJECT*); + HRESULT ConvertObject(LONG, REFCLSID, LPCSTR); + HRESULT ActivateAs(REFCLSID, REFCLSID); + HRESULT SetHostNames(LPCSTR, LPCSTR); + HRESULT SetLinkAvailable(LONG, BOOL); + HRESULT SetDvaspect(LONG, DWORD); + HRESULT HandsOffStorage(LONG); + HRESULT SaveCompleted(LONG, LPSTORAGE); + HRESULT InPlaceDeactivate(); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); + HRESULT ImportDataObject(LPDATAOBJECT, CLIPFORMAT, HGLOBAL); +}; +alias IRichEditOle LPRICHEDITOLE; + +interface IRichEditOleCallback : IUnknown { + HRESULT GetNewStorage(LPSTORAGE*); + HRESULT GetInPlaceContext(LPOLEINPLACEFRAME*, LPOLEINPLACEUIWINDOW*, LPOLEINPLACEFRAMEINFO); + HRESULT ShowContainerUI(BOOL); + HRESULT QueryInsertObject(LPCLSID, LPSTORAGE, LONG); + HRESULT DeleteObject(LPOLEOBJECT); + HRESULT QueryAcceptData(LPDATAOBJECT, CLIPFORMAT*, DWORD, BOOL, HGLOBAL); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT GetClipboardData(CHARRANGE*, DWORD, LPDATAOBJECT*); + HRESULT GetDragDropEffect(BOOL, DWORD, PDWORD); + HRESULT GetContextMenu(WORD, LPOLEOBJECT, CHARRANGE*, HMENU*); +}; +alias IRichEditOleCallback LPRICHEDITOLECALLBACK; Index: src/win32/rpc.d ================================================================== --- src/win32/rpc.d +++ src/win32/rpc.d @@ -1,31 +1,31 @@ -/***********************************************************************\ -* rpc.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rpc; - -/* Moved to rpcdecp (duplicate definition). - typedef void *I_RPC_HANDLE; - alias long RPC_STATUS; - // Moved to rpcdce: - RpcImpersonateClient - RpcRevertToSelf -*/ - -public import win32.unknwn; -public import win32.rpcdce; // also pulls in rpcdcep -public import win32.rpcnsi; -public import win32.rpcnterr; -public import win32.winerror; - -alias MIDL_user_allocate midl_user_allocate; -alias MIDL_user_free midl_user_free; - -extern (Windows) { - int I_RpcMapWin32Status(RPC_STATUS); -} +/***********************************************************************\ +* rpc.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpc; + +/* Moved to rpcdecp (duplicate definition). + typedef void *I_RPC_HANDLE; + alias long RPC_STATUS; + // Moved to rpcdce: + RpcImpersonateClient + RpcRevertToSelf +*/ + +public import win32.unknwn; +public import win32.rpcdce; // also pulls in rpcdcep +public import win32.rpcnsi; +public import win32.rpcnterr; +public import win32.winerror; + +alias MIDL_user_allocate midl_user_allocate; +alias MIDL_user_free midl_user_free; + +extern (Windows) { + int I_RpcMapWin32Status(RPC_STATUS); +} Index: src/win32/rpcdce.d ================================================================== --- src/win32/rpcdce.d +++ src/win32/rpcdce.d @@ -1,449 +1,411 @@ -/***********************************************************************\ -* rpcdce.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rpcdce; -pragma(lib, "Rpcrt4.lib"); - -// TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be -// replaced aliases for version(Unicode) - -public import win32.rpcdcep; -private import win32.basetyps, win32.w32api, win32.windef; - -// FIXME: clean up Windows version support - -alias UUID uuid_t; -alias UUID_VECTOR uuid_vector_t; -alias void RPC_MGR_EPV; - -// for RpcMgmtSetComTimeout() -enum : uint { - RPC_C_BINDING_MIN_TIMEOUT = 0, - RPC_C_BINDING_DEFAULT_TIMEOUT = 5, - RPC_C_BINDING_MAX_TIMEOUT = 9, - RPC_C_BINDING_INFINITE_TIMEOUT = 10 -} - -const RPC_C_CANCEL_INFINITE_TIMEOUT= -1; -const RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234; -const RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10; -const RPC_C_BIND_TO_ALL_NICS=1; -const RPC_C_USE_INTERNET_PORT=1; -const RPC_C_USE_INTRANET_PORT=2; - -// for RPC_STATS_VECTOR, used by RpcMgmyInqStats -enum : uint { - RPC_C_STATS_CALLS_IN = 0, - RPC_C_STATS_CALLS_OUT, - RPC_C_STATS_PKTS_IN, - RPC_C_STATS_PKTS_OUT -} - -const RPC_IF_AUTOLISTEN=0x0001; -const RPC_IF_OLE=2; -const RPC_C_MGMT_INQ_IF_IDS=0; -const RPC_C_MGMT_INQ_PRINC_NAME=1; -const RPC_C_MGMT_INQ_STATS=2; -const RPC_C_MGMT_IS_SERVER_LISTEN=3; -const RPC_C_MGMT_STOP_SERVER_LISTEN=4; - -// Inquiry Type for RpcMgmtEpEltInqBegin() -enum : uint { - RPC_C_EP_ALL_ELTS = 0, - RPC_C_EP_MATCH_BY_IF, - RPC_C_EP_MATCH_BY_OBJ, - RPC_C_EP_MATCH_BY_BOTH -} - -// for RpcMgmtEpEltInqNext() -enum : uint { - RPC_C_VERS_ALL = 1, - RPC_C_VERS_COMPATIBLE, - RPC_C_VERS_EXACT, - RPC_C_VERS_MAJOR_ONLY, - RPC_C_VERS_UPTO -} - -const DCE_C_ERROR_STRING_LEN=256; -const RPC_C_PARM_MAX_PACKET_LENGTH=1; -const RPC_C_PARM_BUFFER_LENGTH=2; -const RPC_C_AUTHN_LEVEL_DEFAULT=0; -const RPC_C_AUTHN_LEVEL_NONE=1; -const RPC_C_AUTHN_LEVEL_CONNECT=2; -const RPC_C_AUTHN_LEVEL_CALL=3; -const RPC_C_AUTHN_LEVEL_PKT=4; -const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5; -const RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6; -const RPC_C_IMP_LEVEL_ANONYMOUS=1; -const RPC_C_IMP_LEVEL_IDENTIFY=2; -const RPC_C_IMP_LEVEL_IMPERSONATE=3; -const RPC_C_IMP_LEVEL_DELEGATE=4; -const RPC_C_QOS_IDENTITY_STATIC=0; -const RPC_C_QOS_IDENTITY_DYNAMIC=1; -const RPC_C_QOS_CAPABILITIES_DEFAULT=0; -const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1; - -// These enums were buggy in MinGW ! -const RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT; -const RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE; -const RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT; -const RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL; -const RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT; -const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; -const RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; - -const RPC_C_AUTHN_NONE=0; -const RPC_C_AUTHN_DCE_PRIVATE=1; -const RPC_C_AUTHN_DCE_PUBLIC=2; -const RPC_C_AUTHN_DEC_PUBLIC=4; -const RPC_C_AUTHN_WINNT=10; -const RPC_C_AUTHN_DEFAULT=0xFFFFFFFF; -//const RPC_C_SECURITY_QOS_VERSION=L; // FIXME(MinGW): This is nonsense! -const SEC_WINNT_AUTH_IDENTITY_ANSI=0x1; -const SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2; -const RPC_C_AUTHZ_NONE=0; -const RPC_C_AUTHZ_NAME=1; -const RPC_C_AUTHZ_DCE=2; -const RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF; - -alias I_RPC_HANDLE RPC_BINDING_HANDLE; -alias RPC_BINDING_HANDLE handle_t; - -struct RPC_BINDING_VECTOR { - uint Count; - RPC_BINDING_HANDLE BindingH[1]; -} - -alias RPC_BINDING_HANDLE rpc_binding_handle_t; -alias RPC_BINDING_VECTOR rpc_binding_vector_t; - - -struct UUID_VECTOR { - uint Count; - UUID* Uuid[1]; -} - -alias void* RPC_IF_HANDLE; - -struct RPC_IF_ID { - UUID Uuid; - ushort VersMajor; - ushort VersMinor; -} - -struct RPC_POLICY { - uint Length; - uint EndpointFlags; - uint NICFlags; -} -alias RPC_POLICY* PRPC_POLICY; - -extern (Windows) { - alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN; - alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN; -} - -struct RPC_STATS_VECTOR { - uint Count; - uint[1] Stats; -} - -struct RPC_IF_ID_VECTOR { - uint Count; - RPC_IF_ID*[1] IfId; -} -alias HANDLE RPC_AUTH_IDENTITY_HANDLE, RPC_AUTHZ_HANDLE; - -struct RPC_SECURITY_QOS { - uint Version; - uint Capabilities; - uint IdentityTracking; - uint ImpersonationType; -} -alias RPC_SECURITY_QOS* PRPC_SECURITY_QOS; - -struct SEC_WINNT_AUTH_IDENTITY_W { - ushort* User; - uint UserLength; - ushort* Domain; - uint DomainLength; - ushort* Password; - uint PasswordLength; - uint Flags; -} -alias SEC_WINNT_AUTH_IDENTITY_W* PSEC_WINNT_AUTH_IDENTITY_W; - -struct SEC_WINNT_AUTH_IDENTITY_A { - ubyte* User; - uint UserLength; - ubyte* Domain; - uint DomainLength; - ubyte* Password; - uint PasswordLength; - uint Flags; -} -alias SEC_WINNT_AUTH_IDENTITY_A* PSEC_WINNT_AUTH_IDENTITY_A; - -struct RPC_CLIENT_INFORMATION1 { - ubyte* UserName; - ubyte* ComputerName; - ushort Privilege; - uint AuthFlags; -} -alias RPC_CLIENT_INFORMATION1* PRPC_CLIENT_INFORMATION1; -alias I_RPC_HANDLE* RPC_EP_INQ_HANDLE; -extern (Windows) { - alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN; -} - -static if(_WIN32_WINNT_ONLY) { - - struct RPC_PROTSEQ_VECTORA { - uint Count; - ubyte*[1] Protseq; - } - - struct RPC_PROTSEQ_VECTORW { - uint Count; - ushort*[1] Protseq; - } - - extern (Windows) { - RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*); - RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*); - RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**); - RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**); - RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**); - RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**); - RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**); - RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**); - RPC_STATUS RpcStringFreeA(char**); - RPC_STATUS RpcStringFreeW(wchar**); - RPC_STATUS RpcNetworkIsProtseqValidA(char*); - RPC_STATUS RpcNetworkIsProtseqValidW(wchar*); - RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); - RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); - RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); - RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); - RPC_STATUS RpcServerUseProtseqA(char*, uint, void*); - RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*); - RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*); - RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*); - RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*); - RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*); - RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); - RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**); - RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**); - RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**); - RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**); - RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**); - RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**); - RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*); - RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*); - RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); - RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); - RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); - RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); - RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); - RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); - alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN; - RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); - RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); - RPC_STATUS UuidToStringA(UUID*, char**); - RPC_STATUS UuidFromStringA(char*, UUID*); - RPC_STATUS UuidToStringW(UUID*, wchar**); - RPC_STATUS UuidFromStringW(wchar*, UUID*); - RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); - RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); - RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); - RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); - RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); - RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); - RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**); - RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**); - - // MinGW erroneously had these in rpc.h - RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE); - RPC_STATUS RpcRevertToSelf(); - } - - version(Unicode) { - alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR; - alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY; - alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY; - alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; - alias RpcBindingFromStringBindingW RpcBindingFromStringBinding; - alias RpcBindingToStringBindingW RpcBindingToStringBinding; - alias RpcStringBindingComposeW RpcStringBindingCompose; - alias RpcStringBindingParseW RpcStringBindingParse; - alias RpcStringFreeW RpcStringFree; - alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid; - alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs; - alias RpcProtseqVectorFreeW RpcProtseqVectorFree; - alias RpcServerUseProtseqW RpcServerUseProtseq; - alias RpcServerUseProtseqExW RpcServerUseProtseqEx; - alias RpcServerUseProtseqEpW RpcServerUseProtseqEp; - alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx; - alias RpcServerUseProtseqIfW RpcServerUseProtseqIf; - alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx; - alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName; - alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName; - alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName; - alias RpcBindingInqAuthClientW RpcBindingInqAuthClient; - alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo; - alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo; - alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo; - alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx; - alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx; - alias UuidFromStringW UuidFromString; - alias UuidToStringW UuidToString; - alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace; - alias RpcEpRegisterW RpcEpRegister; - alias DceErrorInqTextW DceErrorInqText; - } else { // Ansi - alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR; - alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY; - alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY; - alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; - alias RpcBindingFromStringBindingA RpcBindingFromStringBinding; - alias RpcBindingToStringBindingA RpcBindingToStringBinding; - alias RpcStringBindingComposeA RpcStringBindingCompose; - alias RpcStringBindingParseA RpcStringBindingParse; - alias RpcStringFreeA RpcStringFree; - alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid; - alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs; - alias RpcProtseqVectorFreeA RpcProtseqVectorFree; - alias RpcServerUseProtseqA RpcServerUseProtseq; - alias RpcServerUseProtseqExA RpcServerUseProtseqEx; - alias RpcServerUseProtseqEpA RpcServerUseProtseqEp; - alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx; - alias RpcServerUseProtseqIfA RpcServerUseProtseqIf; - alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx; - alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName; - alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName; - alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName; - alias RpcBindingInqAuthClientA RpcBindingInqAuthClient; - alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo; - alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo; - alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo; - alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx; - alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx; - alias UuidFromStringA UuidFromString; - alias UuidToStringA UuidToString; - alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace; - alias RpcEpRegisterA RpcEpRegister; - alias DceErrorInqTextA DceErrorInqText; - } //#endif // UNICODE - -} else { // _WIN32_WINNT_ONLY - - struct RPC_PROTSEQ_VECTOR { - uint Count; - ubyte* Protseq[1]; - } - // versions without Unicode. - RPC_STATUS RpcBindingFromStringBinding(char*, RPC_BINDING_HANDLE*); - RPC_STATUS RpcBindingToStringBinding(RPC_BINDING_HANDLE, char**); - RPC_STATUS RpcStringBindingCompose(char*, char*, char*, char*, char*, char**); - RPC_STATUS RpcStringBindingParse(char*, char**, char**, char**, char**, char**); - RPC_STATUS RpcStringFree(char**); - RPC_STATUS RpcNetworkIsProtseqValid(char*); - RPC_STATUS RpcNetworkInqProtseqs(RPC_PROTSEQ_VECTOR**); - RPC_STATUS RpcServerInqBindings(RPC_BINDING_VECTOR**); - RPC_STATUS RpcServerUseProtseq(char*, uint, void*); - RPC_STATUS RpcServerUseProtseqEx(char*, uint, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqEp(char*, uint, char*, void*); - RPC_STATUS RpcServerUseProtseqEpEx(char*, uint, char*, void*, PRPC_POLICY); - RPC_STATUS RpcServerUseProtseqIf(char*, uint, RPC_IF_HANDLE, void*); - RPC_STATUS RpcServerUseProtseqIfEx(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); - RPC_STATUS RpcMgmtInqServerPrincName(RPC_BINDING_HANDLE, uint, char**); - RPC_STATUS RpcServerInqDefaultPrincName(uint, char**); - RPC_STATUS RpcNsBindingInqEntryName(RPC_BINDING_HANDLE, uint, char**); - RPC_STATUS RpcBindingInqAuthClient(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*); - RPC_STATUS RpcBindingInqAuthInfo(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); - RPC_STATUS RpcBindingSetAuthInfo(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); - alias void function(void*, char*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN; - RPC_STATUS RpcServerRegisterAuthInfo(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); - RPC_STATUS UuidToString(UUID*, char**); - RPC_STATUS UuidFromString(char*, UUID*); - RPC_STATUS RpcEpRegisterNoReplace(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); - RPC_STATUS RpcEpRegister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); - RPC_STATUS DceErrorInqText(RPC_STATUS, char*); - RPC_STATUS RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, char**); -}// _WIN32_WINNT_ONLY - - -RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); -RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*); -RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE); -RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*); -RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**); -RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*); -RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*); -RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint); -RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout); -RPC_STATUS RpcObjectInqType(UUID*, UUID*); -RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*); -RPC_STATUS RpcObjectSetType(UUID*, UUID*); -RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**); -RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**); -RPC_STATUS RpcServerListen(uint, uint, uint); -RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*); -RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*); -RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*); -RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint); -RPC_STATUS RpcServerUseAllProtseqs(uint, void*); -RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY); -RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*); -RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY); -RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); -RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**); -RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE); -RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE); -RPC_STATUS RpcMgmtWaitServerListen(); -RPC_STATUS RpcMgmtSetServerStackSize(uint); -void RpcSsDontSerializeContext(); -RPC_STATUS RpcMgmtEnableIdleCleanup(); -RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**); -RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); -RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE); -RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); - -// never returns -void RpcRaiseException(RPC_STATUS); -RPC_STATUS RpcTestCancel(); -RPC_STATUS RpcCancelThread(void*); -RPC_STATUS UuidCreate(UUID*); -int UuidCompare(UUID*, UUID*, RPC_STATUS*); -RPC_STATUS UuidCreateNil(UUID*); -int UuidEqual(UUID*, UUID*, RPC_STATUS*); -ushort UuidHash(UUID*, RPC_STATUS*); -int UuidIsNil(UUID*, RPC_STATUS*); -RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*); -RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*); -RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); -RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*); -RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); -RPC_STATUS RpcMgmtInqParameter(uint, uint*); -RPC_STATUS RpcMgmtSetParameter(uint, uint); -RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); -RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); - -static if (_WIN32_WINNT >= 0x0500) { - RPC_STATUS UuidCreateSequential(UUID*); -} +/***********************************************************************\ +* rpcdce.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcdce; +pragma(lib, "Rpcrt4"); + +// TODO: I think MinGW got this wrong. RPC_UNICODE_SUPPORTED should be +// replaced aliases for version(Unicode) + +public import win32.rpcdcep; +private import win32.basetyps, win32.w32api, win32.windef; + +// FIXME: clean up Windows version support + +alias UUID uuid_t; +alias UUID_VECTOR uuid_vector_t; +alias void RPC_MGR_EPV; + +// for RpcMgmtSetComTimeout() +enum : uint { + RPC_C_BINDING_MIN_TIMEOUT = 0, + RPC_C_BINDING_DEFAULT_TIMEOUT = 5, + RPC_C_BINDING_MAX_TIMEOUT = 9, + RPC_C_BINDING_INFINITE_TIMEOUT = 10 +} + +const RPC_C_CANCEL_INFINITE_TIMEOUT= -1; +const RPC_C_LISTEN_MAX_CALLS_DEFAULT=1234; +const RPC_C_PROTSEQ_MAX_REQS_DEFAULT=10; +const RPC_C_BIND_TO_ALL_NICS=1; +const RPC_C_USE_INTERNET_PORT=1; +const RPC_C_USE_INTRANET_PORT=2; + +// for RPC_STATS_VECTOR, used by RpcMgmyInqStats +enum : uint { + RPC_C_STATS_CALLS_IN = 0, + RPC_C_STATS_CALLS_OUT, + RPC_C_STATS_PKTS_IN, + RPC_C_STATS_PKTS_OUT +} + +const RPC_IF_AUTOLISTEN=0x0001; +const RPC_IF_OLE=2; +const RPC_C_MGMT_INQ_IF_IDS=0; +const RPC_C_MGMT_INQ_PRINC_NAME=1; +const RPC_C_MGMT_INQ_STATS=2; +const RPC_C_MGMT_IS_SERVER_LISTEN=3; +const RPC_C_MGMT_STOP_SERVER_LISTEN=4; + +// Inquiry Type for RpcMgmtEpEltInqBegin() +enum : uint { + RPC_C_EP_ALL_ELTS = 0, + RPC_C_EP_MATCH_BY_IF, + RPC_C_EP_MATCH_BY_OBJ, + RPC_C_EP_MATCH_BY_BOTH +} + +// for RpcMgmtEpEltInqNext() +enum : uint { + RPC_C_VERS_ALL = 1, + RPC_C_VERS_COMPATIBLE, + RPC_C_VERS_EXACT, + RPC_C_VERS_MAJOR_ONLY, + RPC_C_VERS_UPTO +} + +const DCE_C_ERROR_STRING_LEN=256; +const RPC_C_PARM_MAX_PACKET_LENGTH=1; +const RPC_C_PARM_BUFFER_LENGTH=2; +const RPC_C_AUTHN_LEVEL_DEFAULT=0; +const RPC_C_AUTHN_LEVEL_NONE=1; +const RPC_C_AUTHN_LEVEL_CONNECT=2; +const RPC_C_AUTHN_LEVEL_CALL=3; +const RPC_C_AUTHN_LEVEL_PKT=4; +const RPC_C_AUTHN_LEVEL_PKT_INTEGRITY=5; +const RPC_C_AUTHN_LEVEL_PKT_PRIVACY=6; +const RPC_C_IMP_LEVEL_ANONYMOUS=1; +const RPC_C_IMP_LEVEL_IDENTIFY=2; +const RPC_C_IMP_LEVEL_IMPERSONATE=3; +const RPC_C_IMP_LEVEL_DELEGATE=4; +const RPC_C_QOS_IDENTITY_STATIC=0; +const RPC_C_QOS_IDENTITY_DYNAMIC=1; +const RPC_C_QOS_CAPABILITIES_DEFAULT=0; +const RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH=1; + +// These enums were buggy in MinGW ! +const RPC_C_PROTECT_LEVEL_DEFAULT = RPC_C_AUTHN_LEVEL_DEFAULT; +const RPC_C_PROTECT_LEVEL_NONE = RPC_C_AUTHN_LEVEL_NONE; +const RPC_C_PROTECT_LEVEL_CONNECT = RPC_C_AUTHN_LEVEL_CONNECT; +const RPC_C_PROTECT_LEVEL_CALL = RPC_C_AUTHN_LEVEL_CALL; +const RPC_C_PROTECT_LEVEL_PKT = RPC_C_AUTHN_LEVEL_PKT; +const RPC_C_PROTECT_LEVEL_PKT_INTEGRITY = RPC_C_AUTHN_LEVEL_PKT_INTEGRITY; +const RPC_C_PROTECT_LEVEL_PKT_PRIVACY = RPC_C_AUTHN_LEVEL_PKT_PRIVACY; + +const RPC_C_AUTHN_NONE=0; +const RPC_C_AUTHN_DCE_PRIVATE=1; +const RPC_C_AUTHN_DCE_PUBLIC=2; +const RPC_C_AUTHN_DEC_PUBLIC=4; +const RPC_C_AUTHN_WINNT=10; +const RPC_C_AUTHN_DEFAULT=0xFFFFFFFF; +//const RPC_C_SECURITY_QOS_VERSION=L; // FIXME(MinGW): This is nonsense! +const SEC_WINNT_AUTH_IDENTITY_ANSI=0x1; +const SEC_WINNT_AUTH_IDENTITY_UNICODE=0x2; +const RPC_C_AUTHZ_NONE=0; +const RPC_C_AUTHZ_NAME=1; +const RPC_C_AUTHZ_DCE=2; +const RPC_C_AUTHZ_DEFAULT=0xFFFFFFFF; + +alias I_RPC_HANDLE RPC_BINDING_HANDLE; +alias RPC_BINDING_HANDLE handle_t; + +struct RPC_BINDING_VECTOR { + uint Count; + RPC_BINDING_HANDLE[1] BindingH; +} + +alias RPC_BINDING_HANDLE rpc_binding_handle_t; +alias RPC_BINDING_VECTOR rpc_binding_vector_t; + + +struct UUID_VECTOR { + uint Count; + UUID*[1] Uuid; +} + +alias void* RPC_IF_HANDLE; + +struct RPC_IF_ID { + UUID Uuid; + ushort VersMajor; + ushort VersMinor; +} + +struct RPC_POLICY { + uint Length; + uint EndpointFlags; + uint NICFlags; +} +alias RPC_POLICY* PRPC_POLICY; + +extern (Windows) { + alias void function(UUID*, UUID*, RPC_STATUS*) RPC_OBJECT_INQ_FN; + alias RPC_STATUS function(RPC_IF_HANDLE, void*) RPC_IF_CALLBACK_FN; +} + +struct RPC_STATS_VECTOR { + uint Count; + uint[1] Stats; +} + +struct RPC_IF_ID_VECTOR { + uint Count; + RPC_IF_ID*[1] IfId; +} +mixin DECLARE_HANDLE!("RPC_AUTH_IDENTITY_HANDLE"); +mixin DECLARE_HANDLE!("RPC_AUTHZ_HANDLE"); + +struct RPC_SECURITY_QOS { + uint Version; + uint Capabilities; + uint IdentityTracking; + uint ImpersonationType; +} +alias RPC_SECURITY_QOS* PRPC_SECURITY_QOS; + +struct SEC_WINNT_AUTH_IDENTITY_W { + ushort* User; + uint UserLength; + ushort* Domain; + uint DomainLength; + ushort* Password; + uint PasswordLength; + uint Flags; +} +alias SEC_WINNT_AUTH_IDENTITY_W* PSEC_WINNT_AUTH_IDENTITY_W; + +struct SEC_WINNT_AUTH_IDENTITY_A { + ubyte* User; + uint UserLength; + ubyte* Domain; + uint DomainLength; + ubyte* Password; + uint PasswordLength; + uint Flags; +} +alias SEC_WINNT_AUTH_IDENTITY_A* PSEC_WINNT_AUTH_IDENTITY_A; + +struct RPC_CLIENT_INFORMATION1 { + ubyte* UserName; + ubyte* ComputerName; + ushort Privilege; + uint AuthFlags; +} +alias RPC_CLIENT_INFORMATION1* PRPC_CLIENT_INFORMATION1; +alias I_RPC_HANDLE* RPC_EP_INQ_HANDLE; +extern (Windows) { + alias int function(RPC_BINDING_HANDLE, uint, RPC_STATUS*) RPC_MGMT_AUTHORIZATION_FN; +} + +struct RPC_PROTSEQ_VECTORA { + uint Count; + ubyte*[1] Protseq; +} + +struct RPC_PROTSEQ_VECTORW { + uint Count; + ushort*[1] Protseq; +} + +extern (Windows) { + RPC_STATUS RpcBindingFromStringBindingA(char*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingFromStringBindingW(wchar*, RPC_BINDING_HANDLE*); + RPC_STATUS RpcBindingToStringBindingA(RPC_BINDING_HANDLE, char**); + RPC_STATUS RpcBindingToStringBindingW(RPC_BINDING_HANDLE, wchar**); + RPC_STATUS RpcStringBindingComposeA(char*, char*, char*, char*, char*, char**); + RPC_STATUS RpcStringBindingComposeW(wchar*, wchar*, wchar*, wchar*, wchar*, wchar**); + RPC_STATUS RpcStringBindingParseA(char*, char**, char**, char**, char**, char**); + RPC_STATUS RpcStringBindingParseW(wchar*, wchar**, wchar**, wchar**, wchar**, wchar**); + RPC_STATUS RpcStringFreeA(char**); + RPC_STATUS RpcStringFreeW(wchar**); + RPC_STATUS RpcNetworkIsProtseqValidA(char*); + RPC_STATUS RpcNetworkIsProtseqValidW(wchar*); + RPC_STATUS RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**); + RPC_STATUS RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**); + RPC_STATUS RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**); + RPC_STATUS RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**); + RPC_STATUS RpcServerUseProtseqA(char*, uint, void*); + RPC_STATUS RpcServerUseProtseqW(wchar*, uint, void*); + RPC_STATUS RpcServerUseProtseqExA(char*, uint MaxCalls, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqExW(wchar*, uint, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqEpA(char*, uint, char*, void*); + RPC_STATUS RpcServerUseProtseqEpExA(char*, uint, char*, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqEpW(wchar*, uint, wchar*, void*); + RPC_STATUS RpcServerUseProtseqEpExW(wchar*, uint, wchar*, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqIfA(char*, uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseProtseqIfExA(char*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcServerUseProtseqIfW(wchar*, uint, RPC_IF_HANDLE, void*); + RPC_STATUS RpcServerUseProtseqIfExW(wchar*, uint, RPC_IF_HANDLE, void*, PRPC_POLICY); + RPC_STATUS RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE, uint, char**); + RPC_STATUS RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE, uint, wchar**); + RPC_STATUS RpcServerInqDefaultPrincNameA(uint, char**); + RPC_STATUS RpcServerInqDefaultPrincNameW(uint, wchar**); + RPC_STATUS RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE, uint, char**); + RPC_STATUS RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE, uint, wchar**); + RPC_STATUS RpcBindingInqAuthClientA(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, char**, uint*, uint*, uint*); + RPC_STATUS RpcBindingInqAuthClientW(RPC_BINDING_HANDLE, RPC_AUTHZ_HANDLE*, wchar**, uint*, uint*, uint*); + RPC_STATUS RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); + RPC_STATUS RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*); + RPC_STATUS RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); + RPC_STATUS RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE, char*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint); + RPC_STATUS RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE, wchar*, uint, uint, RPC_AUTH_IDENTITY_HANDLE, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE, char**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); + RPC_STATUS RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE, wchar**, uint*, uint*, RPC_AUTH_IDENTITY_HANDLE*, uint*, uint, RPC_SECURITY_QOS*); + alias void function(void*, wchar*, uint, void**, RPC_STATUS*) RPC_AUTH_KEY_RETRIEVAL_FN; + RPC_STATUS RpcServerRegisterAuthInfoA(char*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); + RPC_STATUS RpcServerRegisterAuthInfoW(wchar*, uint, RPC_AUTH_KEY_RETRIEVAL_FN, void*); + RPC_STATUS UuidToStringA(UUID*, char**); + RPC_STATUS UuidFromStringA(char*, UUID*); + RPC_STATUS UuidToStringW(UUID*, wchar**); + RPC_STATUS UuidFromStringW(wchar*, UUID*); + RPC_STATUS RpcEpRegisterNoReplaceA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); + RPC_STATUS RpcEpRegisterNoReplaceW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); + RPC_STATUS RpcEpRegisterA(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, char*); + RPC_STATUS RpcEpRegisterW(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*, wchar*); + RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); + RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); + RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, char**); + RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE*, UUID*, wchar**); + + // MinGW erroneously had these in rpc.h + RPC_STATUS RpcImpersonateClient(RPC_BINDING_HANDLE); + RPC_STATUS RpcRevertToSelf(); +} + +version (Unicode) { + alias RPC_PROTSEQ_VECTORW RPC_PROTSEQ_VECTOR; + alias SEC_WINNT_AUTH_IDENTITY_W SEC_WINNT_AUTH_IDENTITY; + alias PSEC_WINNT_AUTH_IDENTITY_W PSEC_WINNT_AUTH_IDENTITY; + alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; + alias RpcBindingFromStringBindingW RpcBindingFromStringBinding; + alias RpcBindingToStringBindingW RpcBindingToStringBinding; + alias RpcStringBindingComposeW RpcStringBindingCompose; + alias RpcStringBindingParseW RpcStringBindingParse; + alias RpcStringFreeW RpcStringFree; + alias RpcNetworkIsProtseqValidW RpcNetworkIsProtseqValid; + alias RpcNetworkInqProtseqsW RpcNetworkInqProtseqs; + alias RpcProtseqVectorFreeW RpcProtseqVectorFree; + alias RpcServerUseProtseqW RpcServerUseProtseq; + alias RpcServerUseProtseqExW RpcServerUseProtseqEx; + alias RpcServerUseProtseqEpW RpcServerUseProtseqEp; + alias RpcServerUseProtseqEpExW RpcServerUseProtseqEpEx; + alias RpcServerUseProtseqIfW RpcServerUseProtseqIf; + alias RpcServerUseProtseqIfExW RpcServerUseProtseqIfEx; + alias RpcMgmtInqServerPrincNameW RpcMgmtInqServerPrincName; + alias RpcServerInqDefaultPrincNameW RpcServerInqDefaultPrincName; + alias RpcNsBindingInqEntryNameW RpcNsBindingInqEntryName; + alias RpcBindingInqAuthClientW RpcBindingInqAuthClient; + alias RpcBindingInqAuthInfoW RpcBindingInqAuthInfo; + alias RpcBindingSetAuthInfoW RpcBindingSetAuthInfo; + alias RpcServerRegisterAuthInfoW RpcServerRegisterAuthInfo; + alias RpcBindingInqAuthInfoExW RpcBindingInqAuthInfoEx; + alias RpcBindingSetAuthInfoExW RpcBindingSetAuthInfoEx; + alias UuidFromStringW UuidFromString; + alias UuidToStringW UuidToString; + alias RpcEpRegisterNoReplaceW RpcEpRegisterNoReplace; + alias RpcEpRegisterW RpcEpRegister; + alias DceErrorInqTextW DceErrorInqText; +} else { // Ansi + alias RPC_PROTSEQ_VECTORA RPC_PROTSEQ_VECTOR; + alias SEC_WINNT_AUTH_IDENTITY_A SEC_WINNT_AUTH_IDENTITY; + alias PSEC_WINNT_AUTH_IDENTITY_A PSEC_WINNT_AUTH_IDENTITY; + alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; + alias RpcBindingFromStringBindingA RpcBindingFromStringBinding; + alias RpcBindingToStringBindingA RpcBindingToStringBinding; + alias RpcStringBindingComposeA RpcStringBindingCompose; + alias RpcStringBindingParseA RpcStringBindingParse; + alias RpcStringFreeA RpcStringFree; + alias RpcNetworkIsProtseqValidA RpcNetworkIsProtseqValid; + alias RpcNetworkInqProtseqsA RpcNetworkInqProtseqs; + alias RpcProtseqVectorFreeA RpcProtseqVectorFree; + alias RpcServerUseProtseqA RpcServerUseProtseq; + alias RpcServerUseProtseqExA RpcServerUseProtseqEx; + alias RpcServerUseProtseqEpA RpcServerUseProtseqEp; + alias RpcServerUseProtseqEpExA RpcServerUseProtseqEpEx; + alias RpcServerUseProtseqIfA RpcServerUseProtseqIf; + alias RpcServerUseProtseqIfExA RpcServerUseProtseqIfEx; + alias RpcMgmtInqServerPrincNameA RpcMgmtInqServerPrincName; + alias RpcServerInqDefaultPrincNameA RpcServerInqDefaultPrincName; + alias RpcNsBindingInqEntryNameA RpcNsBindingInqEntryName; + alias RpcBindingInqAuthClientA RpcBindingInqAuthClient; + alias RpcBindingInqAuthInfoA RpcBindingInqAuthInfo; + alias RpcBindingSetAuthInfoA RpcBindingSetAuthInfo; + alias RpcServerRegisterAuthInfoA RpcServerRegisterAuthInfo; + alias RpcBindingInqAuthInfoExA RpcBindingInqAuthInfoEx; + alias RpcBindingSetAuthInfoExA RpcBindingSetAuthInfoEx; + alias UuidFromStringA UuidFromString; + alias UuidToStringA UuidToString; + alias RpcEpRegisterNoReplaceA RpcEpRegisterNoReplace; + alias RpcEpRegisterA RpcEpRegister; + alias DceErrorInqTextA DceErrorInqText; +} //#endif // UNICODE + + +RPC_STATUS RpcBindingCopy(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); +RPC_STATUS RpcBindingFree(RPC_BINDING_HANDLE*); +RPC_STATUS RpcBindingInqObject(RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcBindingReset(RPC_BINDING_HANDLE); +RPC_STATUS RpcBindingSetObject(RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcMgmtInqDefaultProtectLevel(uint, uint*); +RPC_STATUS RpcBindingVectorFree(RPC_BINDING_VECTOR**); +RPC_STATUS RpcIfInqId(RPC_IF_HANDLE, RPC_IF_ID*); +RPC_STATUS RpcMgmtInqComTimeout(RPC_BINDING_HANDLE, uint*); +RPC_STATUS RpcMgmtSetComTimeout(RPC_BINDING_HANDLE, uint); +RPC_STATUS RpcMgmtSetCancelTimeout(int Timeout); +RPC_STATUS RpcObjectInqType(UUID*, UUID*); +RPC_STATUS RpcObjectSetInqFn(RPC_OBJECT_INQ_FN*); +RPC_STATUS RpcObjectSetType(UUID*, UUID*); +RPC_STATUS RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR**); +RPC_STATUS RpcServerInqIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV**); +RPC_STATUS RpcServerListen(uint, uint, uint); +RPC_STATUS RpcServerRegisterIf(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*); +RPC_STATUS RpcServerRegisterIfEx(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, RPC_IF_CALLBACK_FN*); +RPC_STATUS RpcServerRegisterIf2(RPC_IF_HANDLE, UUID*, RPC_MGR_EPV*, uint, uint, uint, RPC_IF_CALLBACK_FN*); +RPC_STATUS RpcServerUnregisterIf(RPC_IF_HANDLE, UUID*, uint); +RPC_STATUS RpcServerUseAllProtseqs(uint, void*); +RPC_STATUS RpcServerUseAllProtseqsEx(uint, void*, PRPC_POLICY); +RPC_STATUS RpcServerUseAllProtseqsIf(uint, RPC_IF_HANDLE, void*); +RPC_STATUS RpcServerUseAllProtseqsIfEx(uint, RPC_IF_HANDLE, void*, PRPC_POLICY); +RPC_STATUS RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**); +RPC_STATUS RpcMgmtInqStats(RPC_BINDING_HANDLE, RPC_STATS_VECTOR**); +RPC_STATUS RpcMgmtIsServerListening(RPC_BINDING_HANDLE); +RPC_STATUS RpcMgmtStopServerListening(RPC_BINDING_HANDLE); +RPC_STATUS RpcMgmtWaitServerListen(); +RPC_STATUS RpcMgmtSetServerStackSize(uint); +void RpcSsDontSerializeContext(); +RPC_STATUS RpcMgmtEnableIdleCleanup(); +RPC_STATUS RpcMgmtInqIfIds(RPC_BINDING_HANDLE, RPC_IF_ID_VECTOR**); +RPC_STATUS RpcIfIdVectorFree(RPC_IF_ID_VECTOR**); +RPC_STATUS RpcEpResolveBinding(RPC_BINDING_HANDLE, RPC_IF_HANDLE); +RPC_STATUS RpcBindingServerFromClient(RPC_BINDING_HANDLE, RPC_BINDING_HANDLE*); + +// never returns +void RpcRaiseException(RPC_STATUS); +RPC_STATUS RpcTestCancel(); +RPC_STATUS RpcCancelThread(void*); +RPC_STATUS UuidCreate(UUID*); +int UuidCompare(UUID*, UUID*, RPC_STATUS*); +RPC_STATUS UuidCreateNil(UUID*); +int UuidEqual(UUID*, UUID*, RPC_STATUS*); +ushort UuidHash(UUID*, RPC_STATUS*); +int UuidIsNil(UUID*, RPC_STATUS*); +RPC_STATUS RpcEpUnregister(RPC_IF_HANDLE, RPC_BINDING_VECTOR*, UUID_VECTOR*); +RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, uint, UUID*, RPC_EP_INQ_HANDLE*); +RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); +RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, RPC_BINDING_HANDLE, UUID*); +RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); +RPC_STATUS RpcMgmtInqParameter(uint, uint*); +RPC_STATUS RpcMgmtSetParameter(uint, uint); +RPC_STATUS RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE, uint, uint*); +RPC_STATUS RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE, uint, uint); + +static if (_WIN32_WINNT >= 0x500) { + RPC_STATUS UuidCreateSequential(UUID*); +} Index: src/win32/rpcdce2.d ================================================================== --- src/win32/rpcdce2.d +++ src/win32/rpcdce2.d @@ -1,78 +1,78 @@ -/***********************************************************************\ -* rpcdce2.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rpcdce2; - -import win32.rpcdce; -private import win32.basetyps; - -// FIXME: deal with RPC_UNICODE_SUPPORTED -// FIXME: check types of constants - -enum { - RPC_C_EP_ALL_ELTS, - RPC_C_EP_MATCH_BY_IF, - RPC_C_EP_MATCH_BY_OBJ, - RPC_C_EP_MATCH_BY_BOTH -} - -enum { - RPC_C_VERS_ALL = 1, - RPC_C_VERS_COMPATIBLE, - RPC_C_VERS_EXACT, - RPC_C_VERS_MAJOR_ONLY, - RPC_C_VERS_UPTO -} - -const size_t DCE_C_ERROR_STRING_LEN = 256; - -enum { - RPC_C_MGMT_INQ_IF_IDS, - RPC_C_MGMT_INQ_PRINC_NAME, - RPC_C_MGMT_INQ_STATS, - RPC_C_MGMT_IS_SERVER_LISTEN, - RPC_C_MGMT_STOP_SERVER_LISTEN -} - -extern (Windows) { - int UuidCompare(UUID*, UUID*, RPC_STATUS*); - RPC_STATUS UuidCreateNil(UUID*); - int UuidEqual(UUID*, UUID*, RPC_STATUS*); - ushort UuidHash(UUID*, RPC_STATUS*); - int UuidIsNil(UUID*, RPC_STATUS*); - - RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, - uint, UUID*, RPC_EP_INQ_HANDLE*); - RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); - RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE, UUID*); - RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); -} - - -//#ifdef RPC_UNICODE_SUPPORTED -RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); -RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); -RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE*, UUID*, char**); -RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, - RPC_BINDING_HANDLE*, UUID*, wchar**); -version (Unicode) { - alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; - alias DceErrorInqTextW DceErrorInqText; -} else { - alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; - alias DceErrorInqTextA DceErrorInqText; -} -/+ -#else /* RPC_UNICODE_SUPPORTED */ - RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*); - RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); -#endif -+/ +/***********************************************************************\ +* rpcdce2.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcdce2; + +import win32.rpcdce; +private import win32.basetyps; + +// FIXME: deal with RPC_UNICODE_SUPPORTED +// FIXME: check types of constants + +enum { + RPC_C_EP_ALL_ELTS, + RPC_C_EP_MATCH_BY_IF, + RPC_C_EP_MATCH_BY_OBJ, + RPC_C_EP_MATCH_BY_BOTH +} + +enum { + RPC_C_VERS_ALL = 1, + RPC_C_VERS_COMPATIBLE, + RPC_C_VERS_EXACT, + RPC_C_VERS_MAJOR_ONLY, + RPC_C_VERS_UPTO +} + +const size_t DCE_C_ERROR_STRING_LEN = 256; + +enum { + RPC_C_MGMT_INQ_IF_IDS, + RPC_C_MGMT_INQ_PRINC_NAME, + RPC_C_MGMT_INQ_STATS, + RPC_C_MGMT_IS_SERVER_LISTEN, + RPC_C_MGMT_STOP_SERVER_LISTEN +} + +extern (Windows) { + int UuidCompare(UUID*, UUID*, RPC_STATUS*); + RPC_STATUS UuidCreateNil(UUID*); + int UuidEqual(UUID*, UUID*, RPC_STATUS*); + ushort UuidHash(UUID*, RPC_STATUS*); + int UuidIsNil(UUID*, RPC_STATUS*); + + RPC_STATUS RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE, uint, RPC_IF_ID*, + uint, UUID*, RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*); + RPC_STATUS RpcMgmtEpUnregister(RPC_BINDING_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE, UUID*); + RPC_STATUS RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN); +} + + +//#ifdef RPC_UNICODE_SUPPORTED +RPC_STATUS DceErrorInqTextA(RPC_STATUS, char*); +RPC_STATUS DceErrorInqTextW(RPC_STATUS, wchar*); +RPC_STATUS RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE*, UUID*, char**); +RPC_STATUS RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE, RPC_IF_ID*, + RPC_BINDING_HANDLE*, UUID*, wchar**); +version (Unicode) { + alias RpcMgmtEpEltInqNextW RpcMgmtEpEltInqNext; + alias DceErrorInqTextW DceErrorInqText; +} else { + alias RpcMgmtEpEltInqNextA RpcMgmtEpEltInqNext; + alias DceErrorInqTextA DceErrorInqText; +} +/+ +#else /* RPC_UNICODE_SUPPORTED */ + RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*); + RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**); +#endif ++/ Index: src/win32/rpcdcep.d ================================================================== --- src/win32/rpcdcep.d +++ src/win32/rpcdcep.d @@ -1,158 +1,151 @@ -/***********************************************************************\ -* rpcdcep.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rpcdcep; - -private import win32.basetyps; -private import win32.w32api; -private import win32.windef; - -alias HANDLE I_RPC_HANDLE; -alias long RPC_STATUS; - -const RPC_NCA_FLAGS_DEFAULT=0; -const RPC_NCA_FLAGS_IDEMPOTENT=1; -const RPC_NCA_FLAGS_BROADCAST=2; -const RPC_NCA_FLAGS_MAYBE=4; -const RPCFLG_ASYNCHRONOUS=0x40000000; -const RPCFLG_INPUT_SYNCHRONOUS=0x20000000; -const RPC_FLAGS_VALID_BIT=0x8000; - -const TRANSPORT_TYPE_CN=1; -const TRANSPORT_TYPE_DG=2; -const TRANSPORT_TYPE_LPC=4; -const TRANSPORT_TYPE_WMSG=8; - -struct RPC_VERSION { - ushort MajorVersion; - ushort MinorVersion; -} -struct RPC_SYNTAX_IDENTIFIER { - GUID SyntaxGUID; - RPC_VERSION SyntaxVersion; -} -alias RPC_SYNTAX_IDENTIFIER* PRPC_SYNTAX_IDENTIFIER; - -struct RPC_MESSAGE { - HANDLE Handle; - uint DataRepresentation; - void* Buffer; - uint BufferLength; - uint ProcNum; - PRPC_SYNTAX_IDENTIFIER TransferSyntax; - void* RpcInterfaceInformation; - void* ReservedForRuntime; - void* ManagerEpv; - void* ImportContext; - uint RpcFlags; -} -alias RPC_MESSAGE* PRPC_MESSAGE; - -extern (Windows) { -alias void function (PRPC_MESSAGE Message) RPC_DISPATCH_FUNCTION; -} - -struct RPC_DISPATCH_TABLE { - uint DispatchTableCount; - RPC_DISPATCH_FUNCTION* DispatchTable; - int Reserved; -} -alias RPC_DISPATCH_TABLE* PRPC_DISPATCH_TABLE; - -struct RPC_PROTSEQ_ENDPOINT { - ubyte* RpcProtocolSequence; - ubyte* Endpoint; -} -alias RPC_PROTSEQ_ENDPOINT* PRPC_PROTSEQ_ENDPOINT; - -struct RPC_SERVER_INTERFACE { - uint Length; - RPC_SYNTAX_IDENTIFIER InterfaceId; - RPC_SYNTAX_IDENTIFIER TransferSyntax; - PRPC_DISPATCH_TABLE DispatchTable; - uint RpcProtseqEndpointCount; - PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - void* DefaultManagerEpv; - CPtr!(void) InterpreterInfo; -} -alias RPC_SERVER_INTERFACE* PRPC_SERVER_INTERFACE; - -struct RPC_CLIENT_INTERFACE { - uint Length; - RPC_SYNTAX_IDENTIFIER InterfaceId; - RPC_SYNTAX_IDENTIFIER TransferSyntax; - PRPC_DISPATCH_TABLE DispatchTable; - uint RpcProtseqEndpointCount; - PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; - uint Reserved; - CPtr!(void) InterpreterInfo; -} -alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE; - -alias void* I_RPC_MUTEX; - -struct RPC_TRANSFER_SYNTAX { - GUID Uuid; - ushort VersMajor; - ushort VersMinor; -} -alias RPC_STATUS function(void*, void*, void*) RPC_BLOCKING_FN; - -extern (Windows) { - alias void function(void*) PRPC_RUNDOWN; - - int I_RpcGetBuffer(RPC_MESSAGE*); - int I_RpcSendReceive(RPC_MESSAGE*); - int I_RpcSend(RPC_MESSAGE*); - int I_RpcFreeBuffer(RPC_MESSAGE*); - void I_RpcRequestMutex(I_RPC_MUTEX*); - void I_RpcClearMutex(I_RPC_MUTEX); - void I_RpcDeleteMutex(I_RPC_MUTEX); - void* I_RpcAllocate(uint); - void I_RpcFree(void*); - void I_RpcPauseExecution(uint); - int I_RpcMonitorAssociation(HANDLE, PRPC_RUNDOWN, void*); - int I_RpcStopMonitorAssociation(HANDLE); - HANDLE I_RpcGetCurrentCallHandle(); - int I_RpcGetAssociationContext(void**); - int I_RpcSetAssociationContext(void*); - - static if (_WIN32_WINNT_ONLY) { - int I_RpcNsBindingSetEntryName(HANDLE, uint, wchar*); - int I_RpcBindingInqDynamicEndpoint(HANDLE, wchar**); - } else { - int I_RpcNsBindingSetEntryName(HANDLE, uint, char*); - int I_RpcBindingInqDynamicEndpoint(HANDLE, char**); - } - - int I_RpcBindingInqTransportType(HANDLE, uint*); - int I_RpcIfInqTransferSyntaxes(HANDLE, RPC_TRANSFER_SYNTAX*, uint, - uint*); - int I_UuidCreate(GUID*); - int I_RpcBindingCopy(HANDLE, HANDLE*); - int I_RpcBindingIsClientLocal(HANDLE, uint*); - void I_RpcSsDontSerializeContext(); - int I_RpcServerRegisterForwardFunction(int function (GUID*, - RPC_VERSION*, GUID*, ubyte*, void**)); - int I_RpcConnectionInqSockBuffSize(uint*, uint*); - int I_RpcConnectionSetSockBuffSize(uint, uint); - int I_RpcBindingSetAsync(HANDLE, RPC_BLOCKING_FN); - int I_RpcAsyncSendReceive(RPC_MESSAGE*, void*); - int I_RpcGetThreadWindowHandle(void**); - int I_RpcServerThreadPauseListening(); - int I_RpcServerThreadContinueListening(); - int I_RpcServerUnregisterEndpointA(ubyte*, ubyte*); - int I_RpcServerUnregisterEndpointW(ushort*, ushort*); -} - -version(Unicode) { - alias I_RpcServerUnregisterEndpointW I_RpcServerUnregisterEndpoint; -} else { - alias I_RpcServerUnregisterEndpointA I_RpcServerUnregisterEndpoint; -} +/***********************************************************************\ +* rpcdcep.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcdcep; + +private import win32.basetyps; +private import win32.w32api; +private import win32.windef; + +mixin DECLARE_HANDLE!("I_RPC_HANDLE"); +alias long RPC_STATUS; + +const RPC_NCA_FLAGS_DEFAULT=0; +const RPC_NCA_FLAGS_IDEMPOTENT=1; +const RPC_NCA_FLAGS_BROADCAST=2; +const RPC_NCA_FLAGS_MAYBE=4; +const RPCFLG_ASYNCHRONOUS=0x40000000; +const RPCFLG_INPUT_SYNCHRONOUS=0x20000000; +const RPC_FLAGS_VALID_BIT=0x8000; + +const TRANSPORT_TYPE_CN=1; +const TRANSPORT_TYPE_DG=2; +const TRANSPORT_TYPE_LPC=4; +const TRANSPORT_TYPE_WMSG=8; + +struct RPC_VERSION { + ushort MajorVersion; + ushort MinorVersion; +} +struct RPC_SYNTAX_IDENTIFIER { + GUID SyntaxGUID; + RPC_VERSION SyntaxVersion; +} +alias RPC_SYNTAX_IDENTIFIER* PRPC_SYNTAX_IDENTIFIER; + +struct RPC_MESSAGE { + HANDLE Handle; + uint DataRepresentation; + void* Buffer; + uint BufferLength; + uint ProcNum; + PRPC_SYNTAX_IDENTIFIER TransferSyntax; + void* RpcInterfaceInformation; + void* ReservedForRuntime; + void* ManagerEpv; + void* ImportContext; + uint RpcFlags; +} +alias RPC_MESSAGE* PRPC_MESSAGE; + +extern (Windows) { +alias void function (PRPC_MESSAGE Message) RPC_DISPATCH_FUNCTION; +} + +struct RPC_DISPATCH_TABLE { + uint DispatchTableCount; + RPC_DISPATCH_FUNCTION* DispatchTable; + int Reserved; +} +alias RPC_DISPATCH_TABLE* PRPC_DISPATCH_TABLE; + +struct RPC_PROTSEQ_ENDPOINT { + ubyte* RpcProtocolSequence; + ubyte* Endpoint; +} +alias RPC_PROTSEQ_ENDPOINT* PRPC_PROTSEQ_ENDPOINT; + +struct RPC_SERVER_INTERFACE { + uint Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + uint RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + void* DefaultManagerEpv; + const(void)* InterpreterInfo; +} +alias RPC_SERVER_INTERFACE* PRPC_SERVER_INTERFACE; + +struct RPC_CLIENT_INTERFACE { + uint Length; + RPC_SYNTAX_IDENTIFIER InterfaceId; + RPC_SYNTAX_IDENTIFIER TransferSyntax; + PRPC_DISPATCH_TABLE DispatchTable; + uint RpcProtseqEndpointCount; + PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; + uint Reserved; + const(void)* InterpreterInfo; +} +alias RPC_CLIENT_INTERFACE* PRPC_CLIENT_INTERFACE; + +alias TypeDef!(void*) I_RPC_MUTEX; + +struct RPC_TRANSFER_SYNTAX { + GUID Uuid; + ushort VersMajor; + ushort VersMinor; +} +alias RPC_STATUS function(void*, void*, void*) RPC_BLOCKING_FN; + +extern (Windows) { + alias void function(void*) PRPC_RUNDOWN; + + int I_RpcGetBuffer(RPC_MESSAGE*); + int I_RpcSendReceive(RPC_MESSAGE*); + int I_RpcSend(RPC_MESSAGE*); + int I_RpcFreeBuffer(RPC_MESSAGE*); + void I_RpcRequestMutex(I_RPC_MUTEX*); + void I_RpcClearMutex(I_RPC_MUTEX); + void I_RpcDeleteMutex(I_RPC_MUTEX); + void* I_RpcAllocate(uint); + void I_RpcFree(void*); + void I_RpcPauseExecution(uint); + int I_RpcMonitorAssociation(HANDLE, PRPC_RUNDOWN, void*); + int I_RpcStopMonitorAssociation(HANDLE); + HANDLE I_RpcGetCurrentCallHandle(); + int I_RpcGetAssociationContext(void**); + int I_RpcSetAssociationContext(void*); + int I_RpcNsBindingSetEntryName(HANDLE, uint, wchar*); + int I_RpcBindingInqDynamicEndpoint(HANDLE, wchar**); + int I_RpcBindingInqTransportType(HANDLE, uint*); + int I_RpcIfInqTransferSyntaxes(HANDLE, RPC_TRANSFER_SYNTAX*, uint, + uint*); + int I_UuidCreate(GUID*); + int I_RpcBindingCopy(HANDLE, HANDLE*); + int I_RpcBindingIsClientLocal(HANDLE, uint*); + void I_RpcSsDontSerializeContext(); + int I_RpcServerRegisterForwardFunction(int function (GUID*, + RPC_VERSION*, GUID*, ubyte*, void**)); + int I_RpcConnectionInqSockBuffSize(uint*, uint*); + int I_RpcConnectionSetSockBuffSize(uint, uint); + int I_RpcBindingSetAsync(HANDLE, RPC_BLOCKING_FN); + int I_RpcAsyncSendReceive(RPC_MESSAGE*, void*); + int I_RpcGetThreadWindowHandle(void**); + int I_RpcServerThreadPauseListening(); + int I_RpcServerThreadContinueListening(); + int I_RpcServerUnregisterEndpointA(ubyte*, ubyte*); + int I_RpcServerUnregisterEndpointW(ushort*, ushort*); +} + +version(Unicode) { + alias I_RpcServerUnregisterEndpointW I_RpcServerUnregisterEndpoint; +} else { + alias I_RpcServerUnregisterEndpointA I_RpcServerUnregisterEndpoint; +} Index: src/win32/rpcndr.d ================================================================== --- src/win32/rpcndr.d +++ src/win32/rpcndr.d @@ -1,573 +1,573 @@ -/***********************************************************************\ -* rpcndr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rpcndr; -pragma(lib, "rpcrt4.lib"); - -/* Translation notes: - RPC_CLIENT_ALLOC*, RPC_CLIENT_FREE* were replaced with PRPC_CLIENT_ALLOC, PRPC_CLIENT_FREE -*/ - -// TODO: Bitfields in MIDL_STUB_MESSAGE. -// Macros need to be converted. -const __RPCNDR_H_VERSION__= 450; - -import win32.rpcnsip; -private import win32.rpc, win32.rpcdce, win32.unknwn, win32.windef; -private import win32.objidl; // for IRpcChannelBuffer, IRpcStubBuffer -private import win32.basetyps; - -extern (Windows): - -const uint NDR_CHAR_REP_MASK = 0xF, - NDR_INT_REP_MASK = 0xF0, - NDR_FLOAT_REP_MASK = 0xFF00, - NDR_LITTLE_ENDIAN = 0x10, - NDR_BIG_ENDIAN = 0, - NDR_IEEE_FLOAT = 0, - NDR_VAX_FLOAT = 0x100, - NDR_ASCII_CHAR = 0, - NDR_EBCDIC_CHAR = 1, - NDR_LOCAL_DATA_REPRESENTATION = 0x10, - NDR_LOCAL_ENDIAN = NDR_LITTLE_ENDIAN; - -alias MIDL_user_allocate midl_user_allocate; -alias MIDL_user_free midl_user_free; - -alias long hyper; -alias ulong MIDL_uhyper; -alias char small; - -const cbNDRContext=20; -//MACRO #define NDRSContextValue(hContext) (&(hContext)->userContext) -//MACRO #define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } - -//MACRO #define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } - -//MACRO #define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } - -//MACRO #define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } - -//MACRO #define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } - -//MACRO #define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; } - -//MACRO #define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } - -//MACRO #define MIDL_ascii_strlen(string) strlen(string) - -//MACRO #define MIDL_ascii_strcpy(target,source) strcpy(target,source) - -//MACRO #define MIDL_memset(s,c,n) memset(s,c,n) - -//MACRO #define _midl_ma1( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_ma2( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_ma4( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_ma8( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_unma1( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_unma2( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_unma3( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_unma4( p, cast ) *(( cast *)p)++ -//MACRO #define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) -//MACRO #define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) -//MACRO #define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) -//MACRO #define _midl_addp( p, n ) (p += n) -//MACRO #define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ -//MACRO #define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p -//MACRO #define _midl_advmp( mp ) *(*(unsigned long **)&mp)++ -//MACRO #define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++) - -//MACRO #define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l) - -//MACRO #define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long)) - -//MACRO #define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20) -//MACRO #define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20) -//MACRO #define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) -//MACRO #define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) - -//MACRO #define NdrFieldOffset(s,f) (long)(& (((s *)0)->f)) -//MACRO #define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) -//MACRO #define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) -//MACRO #define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) - -alias void * NDR_CCONTEXT; -struct tagNDR_SCONTEXT { - void *pad[2]; - void *userContext; -} -alias tagNDR_SCONTEXT * NDR_SCONTEXT; - -struct SCONTEXT_QUEUE { - uint NumberOfObjects; - NDR_SCONTEXT *ArrayOfObjects; -} -alias SCONTEXT_QUEUE * PSCONTEXT_QUEUE; - -struct _MIDL_STUB_MESSAGE; -struct _MIDL_STUB_DESC; -struct _FULL_PTR_XLAT_TABLES; - -alias ubyte *RPC_BUFPTR; -alias uint RPC_LENGTH; - -alias CPtr!(char) PFORMAT_STRING; - -struct ARRAY_INFO { - int Dimension; - uint *BufferConformanceMark; - uint *BufferVarianceMark; - uint *MaxCountArray; - uint *OffsetArray; - uint *ActualCountArray; -} -alias ARRAY_INFO * PARRAY_INFO; - -RPC_BINDING_HANDLE NDRCContextBinding(NDR_CCONTEXT); -void NDRCContextMarshall(NDR_CCONTEXT,void*); -void NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,uint); -void NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN); -NDR_SCONTEXT NDRSContextUnmarshall(void*pBuff,uint); -void RpcSsDestroyClientContext(void**); -void NDRcopy(void*,void*,uint); -uint MIDL_wchar_strlen(wchar *); -void MIDL_wchar_strcpy(void*,wchar *); -void char_from_ndr(PRPC_MESSAGE,ubyte*); -void char_array_from_ndr(PRPC_MESSAGE,uint,uint,ubyte*); -void short_from_ndr(PRPC_MESSAGE,ushort*); -void short_array_from_ndr(PRPC_MESSAGE,uint,uint,ushort*); -void short_from_ndr_temp(ubyte**,ushort*,uint); -void int_from_ndr(PRPC_MESSAGE,uint*); -void int_array_from_ndr(PRPC_MESSAGE,uint,uint,uint*); -void int_from_ndr_temp(ubyte**,uint*,uint); -void enum_from_ndr(PRPC_MESSAGE,uint*); -void float_from_ndr(PRPC_MESSAGE,void*); -void float_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); -void double_from_ndr(PRPC_MESSAGE,void*); -void double_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); -void hyper_from_ndr(PRPC_MESSAGE,hyper*); -void hyper_array_from_ndr(PRPC_MESSAGE,uint,uint,hyper*); -void hyper_from_ndr_temp(ubyte**,hyper*,uint); -void data_from_ndr(PRPC_MESSAGE,void*,char*,ubyte); -void data_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); -void tree_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); -void data_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); -void tree_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); -void tree_peek_ndr(PRPC_MESSAGE,ubyte**,char*,ubyte); -void * midl_allocate(int); - -align(4): -struct MIDL_STUB_MESSAGE { - PRPC_MESSAGE RpcMsg; - ubyte *Buffer; - ubyte *BufferStart; - ubyte *BufferEnd; - ubyte *BufferMark; - uint BufferLength; - uint MemorySize; - ubyte *Memory; - int IsClient; - int ReuseBuffer; - ubyte *AllocAllNodesMemory; - ubyte *AllocAllNodesMemoryEnd; - int IgnoreEmbeddedPointers; - ubyte *PointerBufferMark; - ubyte fBufferValid; - ubyte Unused; - uint MaxCount; - uint Offset; - uint ActualCount; - void* function (uint) pfnAllocate; - void function (void*) pfnFree; - ubyte * StackTop; - ubyte * pPresentedType; - ubyte * pTransmitType; - handle_t SavedHandle; - CPtr!(_MIDL_STUB_DESC) StubDesc; - _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; - uint FullPtrRefId; - int fCheckBounds; - // FIXME: - byte bit_fields_for_D; // FIXME: Bitfields -// int fInDontFree :1; -// int fDontCallFreeInst :1; -// int fInOnlyParam :1; -// int fHasReturn :1; - uint dwDestContext; - void* pvDestContext; - NDR_SCONTEXT * SavedContextHandles; - int ParamNumber; - IRpcChannelBuffer * pRpcChannelBuffer; - PARRAY_INFO pArrayInfo; - uint * SizePtrCountArray; - uint * SizePtrOffsetArray; - uint * SizePtrLengthArray; - void* pArgQueue; - uint dwStubPhase; - uint w2kReserved[5]; -} -alias MIDL_STUB_MESSAGE * PMIDL_STUB_MESSAGE; - -extern (Windows) { - alias void* function (void*) GENERIC_BINDING_ROUTINE; - alias void function (void*,ubyte*) GENERIC_UNBIND_ROUTINE; - alias uint function (uint *,uint,void *) USER_MARSHAL_SIZING_ROUTINE; - alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_MARSHALLING_ROUTINE; - alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_UNMARSHALLING_ROUTINE; - alias void function (uint *,void *) USER_MARSHAL_FREEING_ROUTINE; - alias void function () NDR_NOTIFY_ROUTINE; -} - -align: -struct GENERIC_BINDING_ROUTINE_PAIR { - GENERIC_BINDING_ROUTINE pfnBind; - GENERIC_UNBIND_ROUTINE pfnUnbind; -} -alias GENERIC_BINDING_ROUTINE_PAIR * PGENERIC_BINDING_ROUTINE_PAIR; - -struct GENERIC_BINDING_INFO { - void *pObj; - uint Size; - GENERIC_BINDING_ROUTINE pfnBind; - GENERIC_UNBIND_ROUTINE pfnUnbind; -} -alias GENERIC_BINDING_INFO * PGENERIC_BINDING_INFO; - - -struct XMIT_ROUTINE_QUINTUPLE { - XMIT_HELPER_ROUTINE pfnTranslateToXmit; - XMIT_HELPER_ROUTINE pfnTranslateFromXmit; - XMIT_HELPER_ROUTINE pfnFreeXmit; - XMIT_HELPER_ROUTINE pfnFreeInst; -} -alias XMIT_ROUTINE_QUINTUPLE * PXMIT_ROUTINE_QUINTUPLE; - -struct MALLOC_FREE_STRUCT { - void* function (uint) pfnAllocate; - void function (void*) pfnFree; -} - -struct COMM_FAULT_OFFSETS { - short CommOffset; - short FaultOffset; -} - -struct USER_MARSHAL_ROUTINE_QUADRUPLE { - USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; - USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; - USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; - USER_MARSHAL_FREEING_ROUTINE pfnFree; -} - -enum IDL_CS_CONVERT { - IDL_CS_NO_CONVERT, - IDL_CS_IN_PLACE_CONVERT, - IDL_CS_NEW_BUFFER_CONVERT -} - -struct NDR_CS_SIZE_CONVERT_ROUTINES { - CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; - CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; - CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; - CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; -} - -struct NDR_CS_ROUTINES { - NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; - CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; -} - -struct MIDL_STUB_DESC { - void* RpcInterfaceInformation; - void* function(uint) pfnAllocate; - void function (void*) pfnFree; - union _IMPLICIT_HANDLE_INFO { - handle_t *pAutoHandle; - handle_t *pPrimitiveHandle; - PGENERIC_BINDING_INFO pGenericBindingInfo; - } - _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; - CPtr!(NDR_RUNDOWN) apfnNdrRundownRoutines; - CPtr!(GENERIC_BINDING_ROUTINE_PAIR) aGenericBindingRoutinePairs; - CPtr!(EXPR_EVAL) apfnExprEval; - CPtr!(XMIT_ROUTINE_QUINTUPLE) aXmitQuintuple; - CPtr!(char) *pFormatTypes; - int fCheckBounds; - uint Version; - MALLOC_FREE_STRUCT *pMallocFreeStruct; - int MIDLVersion; - CPtr!(COMM_FAULT_OFFSETS) CommFaultOffsets; - CPtr!(USER_MARSHAL_ROUTINE_QUADRUPLE) aUserMarshalQuadruple; - CPtr!(NDR_NOTIFY_ROUTINE) NotifyRoutineTable; - ULONG_PTR mFlags; - CPtr!(NDR_CS_ROUTINES) CsRoutineTables; - void *Reserved4; - ULONG_PTR Reserved5; -} -alias CPtr!(MIDL_STUB_DESC) PMIDL_STUB_DESC; - -alias void * PMIDL_XMIT_TYPE; - -struct MIDL_FORMAT_STRING { - short Pad; - ubyte Format[1]; -} - -struct MIDL_SERVER_INFO { - PMIDL_STUB_DESC pStubDesc; - CPtr!(SERVER_ROUTINE) DispatchTable; - PFORMAT_STRING ProcString; - CPtr!(ushort) FmtStringOffset; - CPtr!(STUB_THUNK) ThunkTable; -} -alias MIDL_SERVER_INFO * PMIDL_SERVER_INFO; - -struct MIDL_STUBLESS_PROXY_INFO { - PMIDL_STUB_DESC pStubDesc; - PFORMAT_STRING ProcFormatString; - CPtr!(ushort) FormatStringOffset; -} -alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; - -union CLIENT_CALL_RETURN { - void *Pointer; - int Simple; -} - -enum XLAT_SIDE { - XLAT_SERVER = 1, - XLAT_CLIENT -} -struct FULL_PTR_TO_REFID_ELEMENT { - FULL_PTR_TO_REFID_ELEMENT * Next; - void* Pointer; - uint RefId; - ubyte State; -} -alias FULL_PTR_TO_REFID_ELEMENT * PFULL_PTR_TO_REFID_ELEMENT; - -struct FULL_PTR_XLAT_TABLES { - struct RefIdToPointer { - void **XlatTable; - ubyte *StateTable; - uint NumberOfEntries; - } - struct PointerToRefId { - PFULL_PTR_TO_REFID_ELEMENT *XlatTable; - uint NumberOfBuckets; - uint HashMask; - } - uint NextRefId; - XLAT_SIDE XlatSide; -} -alias FULL_PTR_XLAT_TABLES * PFULL_PTR_XLAT_TABLES; - - -enum STUB_PHASE { - STUB_UNMARSHAL, - STUB_CALL_SERVER, - STUB_MARSHAL, - STUB_CALL_SERVER_NO_HRESULT -} - -enum PROXY_PHASE { - PROXY_CALCSIZE, - PROXY_GETBUFFER, - PROXY_MARSHAL, - PROXY_SENDRECEIVE, - PROXY_UNMARSHAL -} - -alias void * RPC_SS_THREAD_HANDLE; - -extern (Windows) { -alias void function (void*) NDR_RUNDOWN; -alias void function (_MIDL_STUB_MESSAGE*) EXPR_EVAL; -alias void function(PMIDL_STUB_MESSAGE) XMIT_HELPER_ROUTINE; -alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_NET_SIZE_ROUTINE; -alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_LOCAL_SIZE_ROUTINE; -alias void function (RPC_BINDING_HANDLE,uint,void*,uint,byte*,uint*,error_status_t*) CS_TYPE_TO_NETCS_ROUTINE; -alias void function (RPC_BINDING_HANDLE,uint,byte*,uint,uint,void*,uint*,error_status_t*) CS_TYPE_FROM_NETCS_ROUTINE; -alias void function (RPC_BINDING_HANDLE,int,uint*,uint*,uint*,error_status_t*) CS_TAG_GETTING_ROUTINE; - -//alias void* RPC_CLIENT_ALLOC(uint); -//alias void RPC_CLIENT_FREE(void*); -alias void* function(uint) PRPC_CLIENT_ALLOC; -alias void function(void*) PRPC_CLIENT_FREE; - - alias void function (PMIDL_STUB_MESSAGE) STUB_THUNK; - alias int function() SERVER_ROUTINE; -} - -void NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); -ubyte * NdrPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING pFormat); -ubyte * NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrHardStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte * NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int); -void NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN); -void NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); -ubyte * NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -ubyte * NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -void NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE); -NDR_SCONTEXT NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE); -void NdrPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrContextHandleSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -uint NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -uint NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -void NdrPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrSimpleStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrHardStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrComplexStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrFixedArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrComplexArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -void NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -void NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); -ubyte * NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); -void NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); -ubyte * NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); -ubyte * NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE); -void NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE); -ubyte * NdrGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); -ubyte * NdrNsGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); -ubyte * NdrSendReceive(PMIDL_STUB_MESSAGE,ubyte*); -ubyte * NdrNsSendReceive(PMIDL_STUB_MESSAGE,ubyte*,RPC_BINDING_HANDLE*); -void NdrFreeBuffer(PMIDL_STUB_MESSAGE); - -CLIENT_CALL_RETURN NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...); - -int NdrStubCall(IRpcStubBuffer*, IRpcChannelBuffer*,PRPC_MESSAGE,uint*); -void NdrServerCall(PRPC_MESSAGE); -int NdrServerUnmarshall(IRpcChannelBuffer*, PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*); -void NdrServerMarshall(IRpcStubBuffer*, IRpcChannelBuffer*,PMIDL_STUB_MESSAGE,PFORMAT_STRING); -RPC_STATUS NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,uint*,uint*,RPC_STATUS); -int NdrSH_UPDecision(PMIDL_STUB_MESSAGE,ubyte**,RPC_BUFPTR); -int NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,ubyte**); -int NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,ubyte**); -int NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,ubyte**,uint); -int NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,ubyte**,uint); -int NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,ubyte**,uint); -RPC_BUFPTR NdrSH_IfCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); -RPC_BUFPTR NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); -uint NdrSH_Copy(ubyte*,ubyte*,uint); -void NdrSH_IfFree(PMIDL_STUB_MESSAGE,ubyte*); -RPC_BUFPTR NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,ubyte*,uint,int); -RPC_BUFPTR NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,ubyte**,int); -void* RpcSsAllocate(uint); -void RpcSsDisableAllocate(); -void RpcSsEnableAllocate(); -void RpcSsFree(void*); -RPC_SS_THREAD_HANDLE RpcSsGetThreadHandle(); -void RpcSsSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); -void RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE); -void RpcSsSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); -void* RpcSmAllocate(uint,RPC_STATUS*); -RPC_STATUS RpcSmClientFree(void*); -RPC_STATUS RpcSmDestroyClientContext(void**); -RPC_STATUS RpcSmDisableAllocate(); -RPC_STATUS RpcSmEnableAllocate(); -RPC_STATUS RpcSmFree(void*); -RPC_SS_THREAD_HANDLE RpcSmGetThreadHandle(RPC_STATUS*); -RPC_STATUS RpcSmSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); -RPC_STATUS RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE); -RPC_STATUS RpcSmSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); -void NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE); -void NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE); -void NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE); -void* NdrRpcSmClientAllocate(uint); -void NdrRpcSmClientFree(void*); -void* NdrRpcSsDefaultAllocate(uint); -void NdrRpcSsDefaultFree(void*); -PFULL_PTR_XLAT_TABLES NdrFullPointerXlatInit(uint,XLAT_SIDE); -void NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES); -int NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,ubyte,uint*); -int NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,uint,ubyte,void**); -void NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,uint,void*); -int NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*); -void* NdrAllocate(PMIDL_STUB_MESSAGE,uint); -void NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*); -void* NdrOleAllocate(uint); -void NdrOleFree(void*); -ubyte* NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -ubyte* NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); -void NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); -uint NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); -void NdrUserMarshalFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +/***********************************************************************\ +* rpcndr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcndr; +pragma(lib, "rpcrt4"); + +/* Translation notes: + RPC_CLIENT_ALLOC*, RPC_CLIENT_FREE* were replaced with PRPC_CLIENT_ALLOC, PRPC_CLIENT_FREE +*/ + +// TODO: Bitfields in MIDL_STUB_MESSAGE. +// Macros need to be converted. +const __RPCNDR_H_VERSION__= 450; + +import win32.rpcnsip; +private import win32.rpc, win32.rpcdce, win32.unknwn, win32.windef; +private import win32.objidl; // for IRpcChannelBuffer, IRpcStubBuffer +private import win32.basetyps; + +extern (Windows): + +const uint NDR_CHAR_REP_MASK = 0xF, + NDR_INT_REP_MASK = 0xF0, + NDR_FLOAT_REP_MASK = 0xFF00, + NDR_LITTLE_ENDIAN = 0x10, + NDR_BIG_ENDIAN = 0, + NDR_IEEE_FLOAT = 0, + NDR_VAX_FLOAT = 0x100, + NDR_ASCII_CHAR = 0, + NDR_EBCDIC_CHAR = 1, + NDR_LOCAL_DATA_REPRESENTATION = 0x10, + NDR_LOCAL_ENDIAN = NDR_LITTLE_ENDIAN; + +alias MIDL_user_allocate midl_user_allocate; +alias MIDL_user_free midl_user_free; + +alias long hyper; +alias ulong MIDL_uhyper; +alias char small; + +const cbNDRContext=20; +//MACRO #define NDRSContextValue(hContext) (&(hContext)->userContext) +//MACRO #define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; } + +//MACRO #define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; } + +//MACRO #define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); } + +//MACRO #define MIDL_ascii_strlen(string) strlen(string) + +//MACRO #define MIDL_ascii_strcpy(target,source) strcpy(target,source) + +//MACRO #define MIDL_memset(s,c,n) memset(s,c,n) + +//MACRO #define _midl_ma1( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma2( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma4( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_ma8( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_unma1( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma2( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma3( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_unma4( p, cast ) *(( cast *)p)++ +//MACRO #define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe)) +//MACRO #define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc)) +//MACRO #define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8)) +//MACRO #define _midl_addp( p, n ) (p += n) +//MACRO #define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++ +//MACRO #define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p +//MACRO #define _midl_advmp( mp ) *(*(unsigned long **)&mp)++ +//MACRO #define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++) + +//MACRO #define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l) + +//MACRO #define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long)) + +//MACRO #define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20) +//MACRO #define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20) +//MACRO #define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep )) +//MACRO #define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd) + +//MACRO #define NdrFieldOffset(s,f) (long)(& (((s *)0)->f)) +//MACRO #define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t)) +//MACRO #define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8) +//MACRO #define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24) + +alias void * NDR_CCONTEXT; +struct tagNDR_SCONTEXT { + void*[2] pad; + void *userContext; +} +alias tagNDR_SCONTEXT * NDR_SCONTEXT; + +struct SCONTEXT_QUEUE { + uint NumberOfObjects; + NDR_SCONTEXT *ArrayOfObjects; +} +alias SCONTEXT_QUEUE * PSCONTEXT_QUEUE; + +struct _MIDL_STUB_MESSAGE; +struct _MIDL_STUB_DESC; +struct _FULL_PTR_XLAT_TABLES; + +alias ubyte *RPC_BUFPTR; +alias uint RPC_LENGTH; + +alias const(char)* PFORMAT_STRING; + +struct ARRAY_INFO { + int Dimension; + uint *BufferConformanceMark; + uint *BufferVarianceMark; + uint *MaxCountArray; + uint *OffsetArray; + uint *ActualCountArray; +} +alias ARRAY_INFO * PARRAY_INFO; + +RPC_BINDING_HANDLE NDRCContextBinding(NDR_CCONTEXT); +void NDRCContextMarshall(NDR_CCONTEXT,void*); +void NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,uint); +void NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN); +NDR_SCONTEXT NDRSContextUnmarshall(void*pBuff,uint); +void RpcSsDestroyClientContext(void**); +void NDRcopy(void*,void*,uint); +uint MIDL_wchar_strlen(wchar *); +void MIDL_wchar_strcpy(void*,wchar *); +void char_from_ndr(PRPC_MESSAGE,ubyte*); +void char_array_from_ndr(PRPC_MESSAGE,uint,uint,ubyte*); +void short_from_ndr(PRPC_MESSAGE,ushort*); +void short_array_from_ndr(PRPC_MESSAGE,uint,uint,ushort*); +void short_from_ndr_temp(ubyte**,ushort*,uint); +void int_from_ndr(PRPC_MESSAGE,uint*); +void int_array_from_ndr(PRPC_MESSAGE,uint,uint,uint*); +void int_from_ndr_temp(ubyte**,uint*,uint); +void enum_from_ndr(PRPC_MESSAGE,uint*); +void float_from_ndr(PRPC_MESSAGE,void*); +void float_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); +void double_from_ndr(PRPC_MESSAGE,void*); +void double_array_from_ndr(PRPC_MESSAGE,uint,uint,void*); +void hyper_from_ndr(PRPC_MESSAGE,hyper*); +void hyper_array_from_ndr(PRPC_MESSAGE,uint,uint,hyper*); +void hyper_from_ndr_temp(ubyte**,hyper*,uint); +void data_from_ndr(PRPC_MESSAGE,void*,char*,ubyte); +void data_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_into_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void data_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_size_ndr(void*,PRPC_MESSAGE,char*,ubyte); +void tree_peek_ndr(PRPC_MESSAGE,ubyte**,char*,ubyte); +void * midl_allocate(int); + +align(4): +struct MIDL_STUB_MESSAGE { + PRPC_MESSAGE RpcMsg; + ubyte *Buffer; + ubyte *BufferStart; + ubyte *BufferEnd; + ubyte *BufferMark; + uint BufferLength; + uint MemorySize; + ubyte *Memory; + int IsClient; + int ReuseBuffer; + ubyte *AllocAllNodesMemory; + ubyte *AllocAllNodesMemoryEnd; + int IgnoreEmbeddedPointers; + ubyte *PointerBufferMark; + ubyte fBufferValid; + ubyte Unused; + uint MaxCount; + uint Offset; + uint ActualCount; + void* function (uint) pfnAllocate; + void function (void*) pfnFree; + ubyte * StackTop; + ubyte * pPresentedType; + ubyte * pTransmitType; + handle_t SavedHandle; + const(_MIDL_STUB_DESC)* StubDesc; + _FULL_PTR_XLAT_TABLES *FullPtrXlatTables; + uint FullPtrRefId; + int fCheckBounds; + // FIXME: + byte bit_fields_for_D; // FIXME: Bitfields +// int fInDontFree :1; +// int fDontCallFreeInst :1; +// int fInOnlyParam :1; +// int fHasReturn :1; + uint dwDestContext; + void* pvDestContext; + NDR_SCONTEXT * SavedContextHandles; + int ParamNumber; + IRpcChannelBuffer pRpcChannelBuffer; + PARRAY_INFO pArrayInfo; + uint * SizePtrCountArray; + uint * SizePtrOffsetArray; + uint * SizePtrLengthArray; + void* pArgQueue; + uint dwStubPhase; + uint[5] w2kReserved; +} +alias MIDL_STUB_MESSAGE * PMIDL_STUB_MESSAGE; + +extern (Windows) { + alias void* function (void*) GENERIC_BINDING_ROUTINE; + alias void function (void*,ubyte*) GENERIC_UNBIND_ROUTINE; + alias uint function (uint *,uint,void *) USER_MARSHAL_SIZING_ROUTINE; + alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_MARSHALLING_ROUTINE; + alias ubyte * function (uint *,ubyte *,void *) USER_MARSHAL_UNMARSHALLING_ROUTINE; + alias void function (uint *,void *) USER_MARSHAL_FREEING_ROUTINE; + alias void function () NDR_NOTIFY_ROUTINE; +} + +align: +struct GENERIC_BINDING_ROUTINE_PAIR { + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} +alias GENERIC_BINDING_ROUTINE_PAIR * PGENERIC_BINDING_ROUTINE_PAIR; + +struct GENERIC_BINDING_INFO { + void *pObj; + uint Size; + GENERIC_BINDING_ROUTINE pfnBind; + GENERIC_UNBIND_ROUTINE pfnUnbind; +} +alias GENERIC_BINDING_INFO * PGENERIC_BINDING_INFO; + + +struct XMIT_ROUTINE_QUINTUPLE { + XMIT_HELPER_ROUTINE pfnTranslateToXmit; + XMIT_HELPER_ROUTINE pfnTranslateFromXmit; + XMIT_HELPER_ROUTINE pfnFreeXmit; + XMIT_HELPER_ROUTINE pfnFreeInst; +} +alias XMIT_ROUTINE_QUINTUPLE * PXMIT_ROUTINE_QUINTUPLE; + +struct MALLOC_FREE_STRUCT { + void* function (uint) pfnAllocate; + void function (void*) pfnFree; +} + +struct COMM_FAULT_OFFSETS { + short CommOffset; + short FaultOffset; +} + +struct USER_MARSHAL_ROUTINE_QUADRUPLE { + USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; + USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; + USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; + USER_MARSHAL_FREEING_ROUTINE pfnFree; +} + +enum IDL_CS_CONVERT { + IDL_CS_NO_CONVERT, + IDL_CS_IN_PLACE_CONVERT, + IDL_CS_NEW_BUFFER_CONVERT +} + +struct NDR_CS_SIZE_CONVERT_ROUTINES { + CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; + CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; + CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; + CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; +} + +struct NDR_CS_ROUTINES { + NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; + CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; +} + +struct MIDL_STUB_DESC { + void* RpcInterfaceInformation; + void* function(uint) pfnAllocate; + void function (void*) pfnFree; + union _IMPLICIT_HANDLE_INFO { + handle_t *pAutoHandle; + handle_t *pPrimitiveHandle; + PGENERIC_BINDING_INFO pGenericBindingInfo; + } + _IMPLICIT_HANDLE_INFO IMPLICIT_HANDLE_INFO; + const(NDR_RUNDOWN)* apfnNdrRundownRoutines; + const(GENERIC_BINDING_ROUTINE_PAIR)* aGenericBindingRoutinePairs; + const(EXPR_EVAL)* apfnExprEval; + const(XMIT_ROUTINE_QUINTUPLE)* aXmitQuintuple; + const(char)* *pFormatTypes; + int fCheckBounds; + uint Version; + MALLOC_FREE_STRUCT *pMallocFreeStruct; + int MIDLVersion; + const(COMM_FAULT_OFFSETS)* CommFaultOffsets; + const(USER_MARSHAL_ROUTINE_QUADRUPLE)* aUserMarshalQuadruple; + const(NDR_NOTIFY_ROUTINE)* NotifyRoutineTable; + ULONG_PTR mFlags; + const(NDR_CS_ROUTINES)* CsRoutineTables; + void *Reserved4; + ULONG_PTR Reserved5; +} +alias const(MIDL_STUB_DESC)* PMIDL_STUB_DESC; + +alias void * PMIDL_XMIT_TYPE; + +struct MIDL_FORMAT_STRING { + short Pad; + ubyte[1] Format; +} + +struct MIDL_SERVER_INFO { + PMIDL_STUB_DESC pStubDesc; + const(SERVER_ROUTINE)* DispatchTable; + PFORMAT_STRING ProcString; + const(ushort)* FmtStringOffset; + const(STUB_THUNK)* ThunkTable; +} +alias MIDL_SERVER_INFO * PMIDL_SERVER_INFO; + +struct MIDL_STUBLESS_PROXY_INFO { + PMIDL_STUB_DESC pStubDesc; + PFORMAT_STRING ProcFormatString; + const(ushort)* FormatStringOffset; +} +alias MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO; + +union CLIENT_CALL_RETURN { + void *Pointer; + int Simple; +} + +enum XLAT_SIDE { + XLAT_SERVER = 1, + XLAT_CLIENT +} +struct FULL_PTR_TO_REFID_ELEMENT { + FULL_PTR_TO_REFID_ELEMENT * Next; + void* Pointer; + uint RefId; + ubyte State; +} +alias FULL_PTR_TO_REFID_ELEMENT * PFULL_PTR_TO_REFID_ELEMENT; + +struct FULL_PTR_XLAT_TABLES { + struct RefIdToPointer { + void **XlatTable; + ubyte *StateTable; + uint NumberOfEntries; + } + struct PointerToRefId { + PFULL_PTR_TO_REFID_ELEMENT *XlatTable; + uint NumberOfBuckets; + uint HashMask; + } + uint NextRefId; + XLAT_SIDE XlatSide; +} +alias FULL_PTR_XLAT_TABLES * PFULL_PTR_XLAT_TABLES; + + +enum STUB_PHASE { + STUB_UNMARSHAL, + STUB_CALL_SERVER, + STUB_MARSHAL, + STUB_CALL_SERVER_NO_HRESULT +} + +enum PROXY_PHASE { + PROXY_CALCSIZE, + PROXY_GETBUFFER, + PROXY_MARSHAL, + PROXY_SENDRECEIVE, + PROXY_UNMARSHAL +} + +alias TypeDef!(void *) RPC_SS_THREAD_HANDLE; + +extern (Windows) { +alias void function (void*) NDR_RUNDOWN; +alias void function (_MIDL_STUB_MESSAGE*) EXPR_EVAL; +alias void function(PMIDL_STUB_MESSAGE) XMIT_HELPER_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_NET_SIZE_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,uint,IDL_CS_CONVERT*,uint*,error_status_t*) CS_TYPE_LOCAL_SIZE_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,void*,uint,byte*,uint*,error_status_t*) CS_TYPE_TO_NETCS_ROUTINE; +alias void function (RPC_BINDING_HANDLE,uint,byte*,uint,uint,void*,uint*,error_status_t*) CS_TYPE_FROM_NETCS_ROUTINE; +alias void function (RPC_BINDING_HANDLE,int,uint*,uint*,uint*,error_status_t*) CS_TAG_GETTING_ROUTINE; + +//alias void* RPC_CLIENT_ALLOC(uint); +//alias void RPC_CLIENT_FREE(void*); +alias void* function(uint) PRPC_CLIENT_ALLOC; +alias void function(void*) PRPC_CLIENT_FREE; + + alias void function (PMIDL_STUB_MESSAGE) STUB_THUNK; + alias int function() SERVER_ROUTINE; +} + +void NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); +ubyte * NdrPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING pFormat); +ubyte * NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrHardStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte * NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int); +void NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN); +void NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,ubyte*,ubyte); +ubyte * NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +ubyte * NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +void NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE); +NDR_SCONTEXT NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE); +void NdrPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrContextHandleSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +uint NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +uint NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrSimpleStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrHardStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexStructFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrFixedArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrComplexArrayFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +void NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); +ubyte * NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); +void NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,uint); +ubyte * NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC); +ubyte * NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE); +void NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE); +ubyte * NdrGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); +ubyte * NdrNsGetBuffer(PMIDL_STUB_MESSAGE,uint,RPC_BINDING_HANDLE); +ubyte * NdrSendReceive(PMIDL_STUB_MESSAGE,ubyte*); +ubyte * NdrNsSendReceive(PMIDL_STUB_MESSAGE,ubyte*,RPC_BINDING_HANDLE*); +void NdrFreeBuffer(PMIDL_STUB_MESSAGE); + +CLIENT_CALL_RETURN NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...); + +int NdrStubCall(IRpcStubBuffer, IRpcChannelBuffer,PRPC_MESSAGE,uint*); +void NdrServerCall(PRPC_MESSAGE); +int NdrServerUnmarshall(IRpcChannelBuffer, PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*); +void NdrServerMarshall(IRpcStubBuffer, IRpcChannelBuffer,PMIDL_STUB_MESSAGE,PFORMAT_STRING); +RPC_STATUS NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,uint*,uint*,RPC_STATUS); +int NdrSH_UPDecision(PMIDL_STUB_MESSAGE,ubyte**,RPC_BUFPTR); +int NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,ubyte**); +int NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,ubyte**); +int NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,ubyte**,uint); +int NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,ubyte**,uint); +int NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,ubyte**,uint); +RPC_BUFPTR NdrSH_IfCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); +RPC_BUFPTR NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,ubyte**,uint); +uint NdrSH_Copy(ubyte*,ubyte*,uint); +void NdrSH_IfFree(PMIDL_STUB_MESSAGE,ubyte*); +RPC_BUFPTR NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,ubyte*,uint,int); +RPC_BUFPTR NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,ubyte**,int); +void* RpcSsAllocate(uint); +void RpcSsDisableAllocate(); +void RpcSsEnableAllocate(); +void RpcSsFree(void*); +RPC_SS_THREAD_HANDLE RpcSsGetThreadHandle(); +void RpcSsSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); +void RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE); +void RpcSsSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); +void* RpcSmAllocate(uint,RPC_STATUS*); +RPC_STATUS RpcSmClientFree(void*); +RPC_STATUS RpcSmDestroyClientContext(void**); +RPC_STATUS RpcSmDisableAllocate(); +RPC_STATUS RpcSmEnableAllocate(); +RPC_STATUS RpcSmFree(void*); +RPC_SS_THREAD_HANDLE RpcSmGetThreadHandle(RPC_STATUS*); +RPC_STATUS RpcSmSetClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE); +RPC_STATUS RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE); +RPC_STATUS RpcSmSwapClientAllocFree(PRPC_CLIENT_ALLOC,PRPC_CLIENT_FREE,PRPC_CLIENT_ALLOC*,PRPC_CLIENT_FREE*); +void NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE); +void NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE); +void NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE); +void* NdrRpcSmClientAllocate(uint); +void NdrRpcSmClientFree(void*); +void* NdrRpcSsDefaultAllocate(uint); +void NdrRpcSsDefaultFree(void*); +PFULL_PTR_XLAT_TABLES NdrFullPointerXlatInit(uint,XLAT_SIDE); +void NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES); +int NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,ubyte,uint*); +int NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,uint,ubyte,void**); +void NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,uint,void*); +int NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*); +void* NdrAllocate(PMIDL_STUB_MESSAGE,uint); +void NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*); +void* NdrOleAllocate(uint); +void NdrOleFree(void*); +ubyte* NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +ubyte* NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE,ubyte**,PFORMAT_STRING,ubyte); +void NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); +uint NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void NdrUserMarshalFree(PMIDL_STUB_MESSAGE,ubyte*,PFORMAT_STRING); Index: src/win32/rpcnsi.d ================================================================== --- src/win32/rpcnsi.d +++ src/win32/rpcnsi.d @@ -1,162 +1,149 @@ -/***********************************************************************\ -* rpcnsi.d * -* * -* Windows API header module * -* RPC Name Service (RpcNs APIs) * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rpcnsi; -pragma(lib, "rpcns4.lib"); - -private import win32.basetyps, win32.rpcdcep, win32.rpcnsi, win32.rpcdce, - win32.w32api; -private import win32.windef; // for HANDLE - -alias HANDLE RPC_NS_HANDLE; - -const RPC_C_NS_SYNTAX_DEFAULT=0; -const RPC_C_NS_SYNTAX_DCE=3; -const RPC_C_PROFILE_DEFAULT_ELT=0; -const RPC_C_PROFILE_ALL_ELT=1; -const RPC_C_PROFILE_MATCH_BY_IF=2; -const RPC_C_PROFILE_MATCH_BY_MBR=3; -const RPC_C_PROFILE_MATCH_BY_BOTH=4; -const RPC_C_NS_DEFAULT_EXP_AGE=-1; - -extern (Windows) { - RPC_STATUS RpcNsBindingExportA(uint, ubyte*, RPC_IF_HANDLE, - RPC_BINDING_VECTOR*, UUID_VECTOR*); - RPC_STATUS RpcNsBindingUnexportA(uint, ubyte*, RPC_IF_HANDLE, - UUID_VECTOR*); - RPC_STATUS RpcNsBindingLookupBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, - uint, RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingLookupNext(RPC_NS_HANDLE, RPC_BINDING_VECTOR**); - RPC_STATUS RpcNsBindingLookupDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsGroupDeleteA(uint, ubyte*); - RPC_STATUS RpcNsGroupMbrAddA(uint, ubyte*, uint, ubyte*); - RPC_STATUS RpcNsGroupMbrRemoveA(uint, ubyte*, uint, ubyte*); - RPC_STATUS RpcNsGroupMbrInqBeginA(uint, ubyte*, uint, RPC_NS_HANDLE*); - RPC_STATUS RpcNsGroupMbrInqNextA(RPC_NS_HANDLE, ubyte**); - RPC_STATUS RpcNsGroupMbrInqDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsProfileDeleteA(uint, ubyte*); - RPC_STATUS RpcNsProfileEltAddA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*, - uint, ubyte*); - RPC_STATUS RpcNsProfileEltRemoveA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*); - RPC_STATUS RpcNsProfileEltInqBeginA(uint, ubyte*, uint, RPC_IF_ID*, uint, - uint, ubyte*, RPC_NS_HANDLE*); - RPC_STATUS RpcNsProfileEltInqNextA(RPC_NS_HANDLE, RPC_IF_ID*, ubyte**, - uint*, ubyte**); - RPC_STATUS RpcNsProfileEltInqDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsEntryObjectInqNext(in RPC_NS_HANDLE, out UUID*); - RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*); - RPC_STATUS RpcNsEntryExpandNameA(uint, ubyte*, ubyte**); - RPC_STATUS RpcNsMgmtBindingUnexportA(uint, ubyte*, RPC_IF_ID*, uint, - UUID_VECTOR*); - RPC_STATUS RpcNsMgmtEntryCreateA(uint, ubyte*); - RPC_STATUS RpcNsMgmtEntryDeleteA(uint, ubyte*); - RPC_STATUS RpcNsMgmtEntryInqIfIdsA(uint, ubyte*, RPC_IF_ID_VECTOR**); - RPC_STATUS RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE, uint); - RPC_STATUS RpcNsMgmtInqExpAge(uint*); - RPC_STATUS RpcNsMgmtSetExpAge(uint); - RPC_STATUS RpcNsBindingImportNext(RPC_NS_HANDLE, RPC_BINDING_HANDLE*); - RPC_STATUS RpcNsBindingImportDone(RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingSelect(RPC_BINDING_VECTOR*, RPC_BINDING_HANDLE*); -} - -// For the cases where Win95, 98, ME have no _W versions, and we must alias to -// _A even for version(Unicode). - -version (Unicode) { - static if (_WIN32_WINNT_ONLY) { - const bool _WIN32_USE_UNICODE = true; - } else { - const bool _WIN32_USE_UNICODE = false; - } -} else { - const bool _WIN32_USE_UNICODE = false; -} - -static if (!_WIN32_USE_UNICODE) { - RPC_STATUS RpcNsEntryObjectInqBeginA(uint, ubyte*, RPC_NS_HANDLE*); - RPC_STATUS RpcNsBindingImportBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, - RPC_NS_HANDLE*); -} - -static if (_WIN32_WINNT_ONLY) { - RPC_STATUS RpcNsBindingExportW(uint, ushort*, RPC_IF_HANDLE, - RPC_BINDING_VECTOR*, UUID_VECTOR*); - RPC_STATUS RpcNsBindingUnexportW(uint, ushort*, RPC_IF_HANDLE, - UUID_VECTOR*); - RPC_STATUS RpcNsBindingLookupBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, - uint, RPC_NS_HANDLE*); - RPC_STATUS RpcNsGroupDeleteW(uint, ushort*); - RPC_STATUS RpcNsGroupMbrAddW(uint, ushort*, uint, ushort*); - RPC_STATUS RpcNsGroupMbrRemoveW(uint, ushort*, uint, ushort*); - RPC_STATUS RpcNsGroupMbrInqBeginW(uint, ushort*, uint, RPC_NS_HANDLE*); - RPC_STATUS RpcNsGroupMbrInqNextW(RPC_NS_HANDLE, ushort**); - RPC_STATUS RpcNsProfileDeleteW(uint, ushort*); - RPC_STATUS RpcNsProfileEltAddW(uint, ushort*, RPC_IF_ID*, uint, ushort*, - uint, ushort*); - RPC_STATUS RpcNsProfileEltRemoveW(uint, ushort*, RPC_IF_ID*, uint, - ushort*); - RPC_STATUS RpcNsProfileEltInqBeginW(uint, ushort*, uint, RPC_IF_ID*, - uint, uint, ushort*, RPC_NS_HANDLE*); - RPC_STATUS RpcNsProfileEltInqNextW(RPC_NS_HANDLE, RPC_IF_ID*, ushort**, - uint*, ushort**); - RPC_STATUS RpcNsEntryObjectInqBeginW(uint, ushort*, RPC_NS_HANDLE*); - RPC_STATUS RpcNsEntryExpandNameW(uint, ushort*, ushort**); - RPC_STATUS RpcNsMgmtBindingUnexportW(uint, ushort*, RPC_IF_ID*, uint, - UUID_VECTOR*); - RPC_STATUS RpcNsMgmtEntryCreateW(uint, ushort*); - RPC_STATUS RpcNsMgmtEntryDeleteW(uint, ushort*); - RPC_STATUS RpcNsMgmtEntryInqIfIdsW(uint, ushort , RPC_IF_ID_VECTOR**); - RPC_STATUS RpcNsBindingImportBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, - RPC_NS_HANDLE*); -} // _WIN32_WINNT_ONLY - -static if (_WIN32_USE_UNICODE) { - alias RpcNsBindingLookupBeginW RpcNsBindingLookupBegin; - alias RpcNsBindingImportBeginW RpcNsBindingImportBegin; - alias RpcNsBindingExportW RpcNsBindingExport; - alias RpcNsBindingUnexportW RpcNsBindingUnexport; - alias RpcNsGroupDeleteW RpcNsGroupDelete; - alias RpcNsGroupMbrAddW RpcNsGroupMbrAdd; - alias RpcNsGroupMbrRemoveW RpcNsGroupMbrRemove; - alias RpcNsGroupMbrInqBeginW RpcNsGroupMbrInqBegin; - alias RpcNsGroupMbrInqNextW RpcNsGroupMbrInqNext; - alias RpcNsEntryExpandNameW RpcNsEntryExpandName; - alias RpcNsEntryObjectInqBeginW RpcNsEntryObjectInqBegin; - alias RpcNsMgmtBindingUnexportW RpcNsMgmtBindingUnexport; - alias RpcNsMgmtEntryCreateW RpcNsMgmtEntryCreate; - alias RpcNsMgmtEntryDeleteW RpcNsMgmtEntryDelete; - alias RpcNsMgmtEntryInqIfIdsW RpcNsMgmtEntryInqIfIds; - alias RpcNsProfileDeleteW RpcNsProfileDelete; - alias RpcNsProfileEltAddW RpcNsProfileEltAdd; - alias RpcNsProfileEltRemoveW RpcNsProfileEltRemove; - alias RpcNsProfileEltInqBeginW RpcNsProfileEltInqBegin; - alias RpcNsProfileEltInqNextW RpcNsProfileEltInqNext; -} else { - alias RpcNsBindingLookupBeginA RpcNsBindingLookupBegin; - alias RpcNsBindingImportBeginA RpcNsBindingImportBegin; - alias RpcNsBindingExportA RpcNsBindingExport; - alias RpcNsBindingUnexportA RpcNsBindingUnexport; - alias RpcNsGroupDeleteA RpcNsGroupDelete; - alias RpcNsGroupMbrAddA RpcNsGroupMbrAdd; - alias RpcNsGroupMbrRemoveA RpcNsGroupMbrRemove; - alias RpcNsGroupMbrInqBeginA RpcNsGroupMbrInqBegin; - alias RpcNsGroupMbrInqNextA RpcNsGroupMbrInqNext; - alias RpcNsEntryExpandNameA RpcNsEntryExpandName; - alias RpcNsEntryObjectInqBeginA RpcNsEntryObjectInqBegin; - alias RpcNsMgmtBindingUnexportA RpcNsMgmtBindingUnexport; - alias RpcNsMgmtEntryCreateA RpcNsMgmtEntryCreate; - alias RpcNsMgmtEntryDeleteA RpcNsMgmtEntryDelete; - alias RpcNsMgmtEntryInqIfIdsA RpcNsMgmtEntryInqIfIds; - alias RpcNsProfileDeleteA RpcNsProfileDelete; - alias RpcNsProfileEltAddA RpcNsProfileEltAdd; - alias RpcNsProfileEltRemoveA RpcNsProfileEltRemove; - alias RpcNsProfileEltInqBeginA RpcNsProfileEltInqBegin; - alias RpcNsProfileEltInqNextA RpcNsProfileEltInqNext; -} +/***********************************************************************\ +* rpcnsi.d * +* * +* Windows API header module * +* RPC Name Service (RpcNs APIs) * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcnsi; +pragma(lib, "rpcns4"); + +private import win32.basetyps, win32.rpcdcep, win32.rpcnsi, win32.rpcdce, + win32.w32api; +private import win32.windef; // for HANDLE + +mixin DECLARE_HANDLE!("RPC_NS_HANDLE"); + +const RPC_C_NS_SYNTAX_DEFAULT=0; +const RPC_C_NS_SYNTAX_DCE=3; +const RPC_C_PROFILE_DEFAULT_ELT=0; +const RPC_C_PROFILE_ALL_ELT=1; +const RPC_C_PROFILE_MATCH_BY_IF=2; +const RPC_C_PROFILE_MATCH_BY_MBR=3; +const RPC_C_PROFILE_MATCH_BY_BOTH=4; +const RPC_C_NS_DEFAULT_EXP_AGE=-1; + +extern (Windows) { + RPC_STATUS RpcNsBindingExportA(uint, ubyte*, RPC_IF_HANDLE, + RPC_BINDING_VECTOR*, UUID_VECTOR*); + RPC_STATUS RpcNsBindingUnexportA(uint, ubyte*, RPC_IF_HANDLE, + UUID_VECTOR*); + RPC_STATUS RpcNsBindingLookupBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, + uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingLookupNext(RPC_NS_HANDLE, RPC_BINDING_VECTOR**); + RPC_STATUS RpcNsBindingLookupDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupDeleteA(uint, ubyte*); + RPC_STATUS RpcNsGroupMbrAddA(uint, ubyte*, uint, ubyte*); + RPC_STATUS RpcNsGroupMbrRemoveA(uint, ubyte*, uint, ubyte*); + RPC_STATUS RpcNsGroupMbrInqBeginA(uint, ubyte*, uint, RPC_NS_HANDLE*); + RPC_STATUS RpcNsGroupMbrInqNextA(RPC_NS_HANDLE, ubyte**); + RPC_STATUS RpcNsGroupMbrInqDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileDeleteA(uint, ubyte*); + RPC_STATUS RpcNsProfileEltAddA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*, + uint, ubyte*); + RPC_STATUS RpcNsProfileEltRemoveA(uint, ubyte*, RPC_IF_ID*, uint, ubyte*); + RPC_STATUS RpcNsProfileEltInqBeginA(uint, ubyte*, uint, RPC_IF_ID*, uint, + uint, ubyte*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsProfileEltInqNextA(RPC_NS_HANDLE, RPC_IF_ID*, ubyte**, + uint*, ubyte**); + RPC_STATUS RpcNsProfileEltInqDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryObjectInqNext(in RPC_NS_HANDLE, out UUID*); + RPC_STATUS RpcNsEntryObjectInqDone(ref RPC_NS_HANDLE*); + RPC_STATUS RpcNsEntryExpandNameA(uint, ubyte*, ubyte**); + RPC_STATUS RpcNsMgmtBindingUnexportA(uint, ubyte*, RPC_IF_ID*, uint, + UUID_VECTOR*); + RPC_STATUS RpcNsMgmtEntryCreateA(uint, ubyte*); + RPC_STATUS RpcNsMgmtEntryDeleteA(uint, ubyte*); + RPC_STATUS RpcNsMgmtEntryInqIfIdsA(uint, ubyte*, RPC_IF_ID_VECTOR**); + RPC_STATUS RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE, uint); + RPC_STATUS RpcNsMgmtInqExpAge(uint*); + RPC_STATUS RpcNsMgmtSetExpAge(uint); + RPC_STATUS RpcNsBindingImportNext(RPC_NS_HANDLE, RPC_BINDING_HANDLE*); + RPC_STATUS RpcNsBindingImportDone(RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingSelect(RPC_BINDING_VECTOR*, RPC_BINDING_HANDLE*); +} + + +version (Unicode) { +} else { + RPC_STATUS RpcNsEntryObjectInqBeginA(uint, ubyte*, RPC_NS_HANDLE*); + RPC_STATUS RpcNsBindingImportBeginA(uint, ubyte*, RPC_IF_HANDLE, UUID*, + RPC_NS_HANDLE*); +} + +RPC_STATUS RpcNsBindingExportW(uint, ushort*, RPC_IF_HANDLE, + RPC_BINDING_VECTOR*, UUID_VECTOR*); +RPC_STATUS RpcNsBindingUnexportW(uint, ushort*, RPC_IF_HANDLE, + UUID_VECTOR*); +RPC_STATUS RpcNsBindingLookupBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, + uint, RPC_NS_HANDLE*); +RPC_STATUS RpcNsGroupDeleteW(uint, ushort*); +RPC_STATUS RpcNsGroupMbrAddW(uint, ushort*, uint, ushort*); +RPC_STATUS RpcNsGroupMbrRemoveW(uint, ushort*, uint, ushort*); +RPC_STATUS RpcNsGroupMbrInqBeginW(uint, ushort*, uint, RPC_NS_HANDLE*); +RPC_STATUS RpcNsGroupMbrInqNextW(RPC_NS_HANDLE, ushort**); +RPC_STATUS RpcNsProfileDeleteW(uint, ushort*); +RPC_STATUS RpcNsProfileEltAddW(uint, ushort*, RPC_IF_ID*, uint, ushort*, + uint, ushort*); +RPC_STATUS RpcNsProfileEltRemoveW(uint, ushort*, RPC_IF_ID*, uint, + ushort*); +RPC_STATUS RpcNsProfileEltInqBeginW(uint, ushort*, uint, RPC_IF_ID*, + uint, uint, ushort*, RPC_NS_HANDLE*); +RPC_STATUS RpcNsProfileEltInqNextW(RPC_NS_HANDLE, RPC_IF_ID*, ushort**, + uint*, ushort**); +RPC_STATUS RpcNsEntryObjectInqBeginW(uint, ushort*, RPC_NS_HANDLE*); +RPC_STATUS RpcNsEntryExpandNameW(uint, ushort*, ushort**); +RPC_STATUS RpcNsMgmtBindingUnexportW(uint, ushort*, RPC_IF_ID*, uint, + UUID_VECTOR*); +RPC_STATUS RpcNsMgmtEntryCreateW(uint, ushort*); +RPC_STATUS RpcNsMgmtEntryDeleteW(uint, ushort*); +RPC_STATUS RpcNsMgmtEntryInqIfIdsW(uint, ushort , RPC_IF_ID_VECTOR**); +RPC_STATUS RpcNsBindingImportBeginW(uint, ushort*, RPC_IF_HANDLE, UUID*, + RPC_NS_HANDLE*); + +version (Unicode) { + alias RpcNsBindingLookupBeginW RpcNsBindingLookupBegin; + alias RpcNsBindingImportBeginW RpcNsBindingImportBegin; + alias RpcNsBindingExportW RpcNsBindingExport; + alias RpcNsBindingUnexportW RpcNsBindingUnexport; + alias RpcNsGroupDeleteW RpcNsGroupDelete; + alias RpcNsGroupMbrAddW RpcNsGroupMbrAdd; + alias RpcNsGroupMbrRemoveW RpcNsGroupMbrRemove; + alias RpcNsGroupMbrInqBeginW RpcNsGroupMbrInqBegin; + alias RpcNsGroupMbrInqNextW RpcNsGroupMbrInqNext; + alias RpcNsEntryExpandNameW RpcNsEntryExpandName; + alias RpcNsEntryObjectInqBeginW RpcNsEntryObjectInqBegin; + alias RpcNsMgmtBindingUnexportW RpcNsMgmtBindingUnexport; + alias RpcNsMgmtEntryCreateW RpcNsMgmtEntryCreate; + alias RpcNsMgmtEntryDeleteW RpcNsMgmtEntryDelete; + alias RpcNsMgmtEntryInqIfIdsW RpcNsMgmtEntryInqIfIds; + alias RpcNsProfileDeleteW RpcNsProfileDelete; + alias RpcNsProfileEltAddW RpcNsProfileEltAdd; + alias RpcNsProfileEltRemoveW RpcNsProfileEltRemove; + alias RpcNsProfileEltInqBeginW RpcNsProfileEltInqBegin; + alias RpcNsProfileEltInqNextW RpcNsProfileEltInqNext; +} else { + alias RpcNsBindingLookupBeginA RpcNsBindingLookupBegin; + alias RpcNsBindingImportBeginA RpcNsBindingImportBegin; + alias RpcNsBindingExportA RpcNsBindingExport; + alias RpcNsBindingUnexportA RpcNsBindingUnexport; + alias RpcNsGroupDeleteA RpcNsGroupDelete; + alias RpcNsGroupMbrAddA RpcNsGroupMbrAdd; + alias RpcNsGroupMbrRemoveA RpcNsGroupMbrRemove; + alias RpcNsGroupMbrInqBeginA RpcNsGroupMbrInqBegin; + alias RpcNsGroupMbrInqNextA RpcNsGroupMbrInqNext; + alias RpcNsEntryExpandNameA RpcNsEntryExpandName; + alias RpcNsEntryObjectInqBeginA RpcNsEntryObjectInqBegin; + alias RpcNsMgmtBindingUnexportA RpcNsMgmtBindingUnexport; + alias RpcNsMgmtEntryCreateA RpcNsMgmtEntryCreate; + alias RpcNsMgmtEntryDeleteA RpcNsMgmtEntryDelete; + alias RpcNsMgmtEntryInqIfIdsA RpcNsMgmtEntryInqIfIds; + alias RpcNsProfileDeleteA RpcNsProfileDelete; + alias RpcNsProfileEltAddA RpcNsProfileEltAdd; + alias RpcNsProfileEltRemoveA RpcNsProfileEltRemove; + alias RpcNsProfileEltInqBeginA RpcNsProfileEltInqBegin; + alias RpcNsProfileEltInqNextA RpcNsProfileEltInqNext; +} Index: src/win32/rpcnsip.d ================================================================== --- src/win32/rpcnsip.d +++ src/win32/rpcnsip.d @@ -1,29 +1,29 @@ -/***********************************************************************\ -* rpcnsip.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rpcnsip; - -private import win32.rpcdce, win32.rpcdcep, win32.rpcnsi; - -struct RPC_IMPORT_CONTEXT_P { - RPC_NS_HANDLE LookupContext; - RPC_BINDING_HANDLE ProposedHandle; - RPC_BINDING_VECTOR* Bindings; -} -alias RPC_IMPORT_CONTEXT_P* PRPC_IMPORT_CONTEXT_P; - -extern(Windows) { - RPC_STATUS I_RpcNsGetBuffer(PRPC_MESSAGE); - RPC_STATUS I_RpcNsSendReceive(PRPC_MESSAGE, RPC_BINDING_HANDLE*); - void I_RpcNsRaiseException(PRPC_MESSAGE, RPC_STATUS); - RPC_STATUS I_RpcReBindBuffer(PRPC_MESSAGE); - RPC_STATUS I_NsServerBindSearch(); - RPC_STATUS I_NsClientBindSearch(); - void I_NsClientBindDone(); -} +/***********************************************************************\ +* rpcnsip.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcnsip; + +private import win32.rpcdce, win32.rpcdcep, win32.rpcnsi; + +struct RPC_IMPORT_CONTEXT_P { + RPC_NS_HANDLE LookupContext; + RPC_BINDING_HANDLE ProposedHandle; + RPC_BINDING_VECTOR* Bindings; +} +alias RPC_IMPORT_CONTEXT_P* PRPC_IMPORT_CONTEXT_P; + +extern(Windows) { + RPC_STATUS I_RpcNsGetBuffer(PRPC_MESSAGE); + RPC_STATUS I_RpcNsSendReceive(PRPC_MESSAGE, RPC_BINDING_HANDLE*); + void I_RpcNsRaiseException(PRPC_MESSAGE, RPC_STATUS); + RPC_STATUS I_RpcReBindBuffer(PRPC_MESSAGE); + RPC_STATUS I_NsServerBindSearch(); + RPC_STATUS I_NsClientBindSearch(); + void I_NsClientBindDone(); +} Index: src/win32/rpcnterr.d ================================================================== --- src/win32/rpcnterr.d +++ src/win32/rpcnterr.d @@ -1,31 +1,31 @@ -/***********************************************************************\ -* rpcnterr.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.rpcnterr; - -import win32.winerror; - -enum : uint { - RPC_S_OK = ERROR_SUCCESS, - RPC_S_INVALID_ARG = ERROR_INVALID_PARAMETER, - RPC_S_OUT_OF_MEMORY = ERROR_OUTOFMEMORY, - RPC_S_OUT_OF_THREADS = ERROR_MAX_THRDS_REACHED, - RPC_S_INVALID_LEVEL = ERROR_INVALID_PARAMETER, - RPC_S_BUFFER_TOO_SMALL = ERROR_INSUFFICIENT_BUFFER, - RPC_S_INVALID_SECURITY_DESC = ERROR_INVALID_SECURITY_DESCR, - RPC_S_ACCESS_DENIED = ERROR_ACCESS_DENIED, - RPC_S_SERVER_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_SERVER_MEMORY, - RPC_X_NO_MEMORY = RPC_S_OUT_OF_MEMORY, - RPC_X_INVALID_BOUND = RPC_S_INVALID_BOUND, - RPC_X_INVALID_TAG = RPC_S_INVALID_TAG, - RPC_X_ENUM_VALUE_TOO_LARGE = RPC_X_ENUM_VALUE_OUT_OF_RANGE, - RPC_X_SS_CONTEXT_MISMATCH = ERROR_INVALID_HANDLE, - RPC_X_INVALID_BUFFER = ERROR_INVALID_USER_BUFFER, - RPC_X_INVALID_PIPE_OPERATION = RPC_X_WRONG_PIPE_ORDER -} +/***********************************************************************\ +* rpcnterr.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.rpcnterr; + +import win32.winerror; + +enum : uint { + RPC_S_OK = ERROR_SUCCESS, + RPC_S_INVALID_ARG = ERROR_INVALID_PARAMETER, + RPC_S_OUT_OF_MEMORY = ERROR_OUTOFMEMORY, + RPC_S_OUT_OF_THREADS = ERROR_MAX_THRDS_REACHED, + RPC_S_INVALID_LEVEL = ERROR_INVALID_PARAMETER, + RPC_S_BUFFER_TOO_SMALL = ERROR_INSUFFICIENT_BUFFER, + RPC_S_INVALID_SECURITY_DESC = ERROR_INVALID_SECURITY_DESCR, + RPC_S_ACCESS_DENIED = ERROR_ACCESS_DENIED, + RPC_S_SERVER_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_SERVER_MEMORY, + RPC_X_NO_MEMORY = RPC_S_OUT_OF_MEMORY, + RPC_X_INVALID_BOUND = RPC_S_INVALID_BOUND, + RPC_X_INVALID_TAG = RPC_S_INVALID_TAG, + RPC_X_ENUM_VALUE_TOO_LARGE = RPC_X_ENUM_VALUE_OUT_OF_RANGE, + RPC_X_SS_CONTEXT_MISMATCH = ERROR_INVALID_HANDLE, + RPC_X_INVALID_BUFFER = ERROR_INVALID_USER_BUFFER, + RPC_X_INVALID_PIPE_OPERATION = RPC_X_WRONG_PIPE_ORDER +} Index: src/win32/schannel.d ================================================================== --- src/win32/schannel.d +++ src/win32/schannel.d @@ -1,106 +1,106 @@ -/***********************************************************************\ -* schannel.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.schannel; - -import win32.wincrypt; -private import win32.windef; - -const DWORD SCHANNEL_CRED_VERSION = 4; -const SCHANNEL_SHUTDOWN = 1; -/* Comment from MinGW - ? Do these belong here or in wincrypt.h - */ -enum : DWORD { - AUTHTYPE_CLIENT = 1, - AUTHTYPE_SERVER = 2 -} - -const DWORD - SP_PROT_PCT1_SERVER = 0x01, - SP_PROT_PCT1_CLIENT = 0x02, - SP_PROT_SSL2_SERVER = 0x04, - SP_PROT_SSL2_CLIENT = 0x08, - SP_PROT_SSL3_SERVER = 0x10, - SP_PROT_SSL3_CLIENT = 0x20, - SP_PROT_TLS1_SERVER = 0x40, - SP_PROT_TLS1_CLIENT = 0x80, - SP_PROT_PCT1 = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER, - SP_PROT_TLS1 = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER, - SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, - SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; - -const DWORD - SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, - SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, - SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, - SCH_CRED_NO_DEFAULT_CREDS = 0x0010, - SCH_CRED_AUTO_CRED_VALIDATION = 0x0020, - SCH_CRED_USE_DEFAULT_CREDS = 0x0040, - SCH_CRED_REVOCATION_CHECK_END_CERT = 0x0100, - SCH_CRED_REVOCATION_CHECK_CHAIN = 0x0200, - SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400, - SCH_CRED_IGNORE_NO_REVOCATION_CHECK = 0x0800, - SCH_CRED_IGNORE_REVOCATION_OFFLINE = 0x1000; - -// No definition - presumably an opaque structure -struct _HMAPPER; - -struct SCHANNEL_CRED { - DWORD dwVersion = SCHANNEL_CRED_VERSION; - DWORD cCreds; - PCCERT_CONTEXT* paCred; - HCERTSTORE hRootStore; - DWORD cMappers; - _HMAPPER** aphMappers; - DWORD cSupportedAlgs; - ALG_ID* palgSupportedAlgs; - DWORD grbitEnabledProtocols; - DWORD dwMinimumCypherStrength; - DWORD dwMaximumCypherStrength; - DWORD dwSessionLifespan; - DWORD dwFlags; - DWORD reserved; -} -alias SCHANNEL_CRED* PSCHANNEL_CRED; - -struct SecPkgCred_SupportedAlgs { - DWORD cSupportedAlgs; - ALG_ID* palgSupportedAlgs; -} -alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs; - -struct SecPkgCred_CypherStrengths { - DWORD dwMinimumCypherStrength; - DWORD dwMaximumCypherStrength; -} -alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths; - -struct SecPkgCred_SupportedProtocols { - DWORD grbitProtocol; -} -alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols; - -struct SecPkgContext_IssuerListInfoEx { - PCERT_NAME_BLOB aIssuers; - DWORD cIssuers; -} -alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx; - -struct SecPkgContext_ConnectionInfo { - DWORD dwProtocol; - ALG_ID aiCipher; - DWORD dwCipherStrength; - ALG_ID aiHash; - DWORD dwHashStrength; - ALG_ID aiExch; - DWORD dwExchStrength; -} -alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo; +/***********************************************************************\ +* schannel.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.schannel; + +import win32.wincrypt; +private import win32.windef; + +const DWORD SCHANNEL_CRED_VERSION = 4; +const SCHANNEL_SHUTDOWN = 1; +/* Comment from MinGW + ? Do these belong here or in wincrypt.h + */ +enum : DWORD { + AUTHTYPE_CLIENT = 1, + AUTHTYPE_SERVER = 2 +} + +const DWORD + SP_PROT_PCT1_SERVER = 0x01, + SP_PROT_PCT1_CLIENT = 0x02, + SP_PROT_SSL2_SERVER = 0x04, + SP_PROT_SSL2_CLIENT = 0x08, + SP_PROT_SSL3_SERVER = 0x10, + SP_PROT_SSL3_CLIENT = 0x20, + SP_PROT_TLS1_SERVER = 0x40, + SP_PROT_TLS1_CLIENT = 0x80, + SP_PROT_PCT1 = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER, + SP_PROT_TLS1 = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER, + SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, + SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; + +const DWORD + SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, + SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, + SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, + SCH_CRED_NO_DEFAULT_CREDS = 0x0010, + SCH_CRED_AUTO_CRED_VALIDATION = 0x0020, + SCH_CRED_USE_DEFAULT_CREDS = 0x0040, + SCH_CRED_REVOCATION_CHECK_END_CERT = 0x0100, + SCH_CRED_REVOCATION_CHECK_CHAIN = 0x0200, + SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400, + SCH_CRED_IGNORE_NO_REVOCATION_CHECK = 0x0800, + SCH_CRED_IGNORE_REVOCATION_OFFLINE = 0x1000; + +// No definition - presumably an opaque structure +struct _HMAPPER; + +struct SCHANNEL_CRED { + DWORD dwVersion = SCHANNEL_CRED_VERSION; + DWORD cCreds; + PCCERT_CONTEXT* paCred; + HCERTSTORE hRootStore; + DWORD cMappers; + _HMAPPER** aphMappers; + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; + DWORD grbitEnabledProtocols; + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; + DWORD dwSessionLifespan; + DWORD dwFlags; + DWORD reserved; +} +alias SCHANNEL_CRED* PSCHANNEL_CRED; + +struct SecPkgCred_SupportedAlgs { + DWORD cSupportedAlgs; + ALG_ID* palgSupportedAlgs; +} +alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs; + +struct SecPkgCred_CypherStrengths { + DWORD dwMinimumCypherStrength; + DWORD dwMaximumCypherStrength; +} +alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths; + +struct SecPkgCred_SupportedProtocols { + DWORD grbitProtocol; +} +alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols; + +struct SecPkgContext_IssuerListInfoEx { + PCERT_NAME_BLOB aIssuers; + DWORD cIssuers; +} +alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx; + +struct SecPkgContext_ConnectionInfo { + DWORD dwProtocol; + ALG_ID aiCipher; + DWORD dwCipherStrength; + ALG_ID aiHash; + DWORD dwHashStrength; + ALG_ID aiExch; + DWORD dwExchStrength; +} +alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo; Index: src/win32/secext.d ================================================================== --- src/win32/secext.d +++ src/win32/secext.d @@ -7,15 +7,15 @@ * * * Placed into public domain * \***********************************************************************/ // Don't include this file directly, use win32.security instead. module win32.secext; -pragma(lib, "secur32.lib"); +pragma(lib, "secur32"); private import win32.w32api, win32.windef; -static assert (_WIN32_WINNT >= 0x0501, +static assert (_WIN32_WINNT >= 0x501, "SecExt is only available on WindowsXP and later"); enum EXTENDED_NAME_FORMAT { NameUnknown, NameFullyQualifiedDN, ADDED src/win32/security.d Index: src/win32/security.d ================================================================== --- src/win32/security.d +++ src/win32/security.d @@ -0,0 +1,46 @@ +/***********************************************************************\ +* security.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Ellery Newcomer * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.security; + +enum :SECURITY_STATUS{ + SEC_E_OK = 0, + SEC_E_CERT_EXPIRED = (-2146893016), + SEC_E_INCOMPLETE_MESSAGE = (-2146893032), + SEC_E_INSUFFICIENT_MEMORY = (-2146893056), + SEC_E_INTERNAL_ERROR = (-2146893052), + SEC_E_INVALID_HANDLE = (-2146893055), + SEC_E_INVALID_TOKEN = (-2146893048), + SEC_E_LOGON_DENIED = (-2146893044), + SEC_E_NO_AUTHENTICATING_AUTHORITY = (-2146893039), + SEC_E_NO_CREDENTIALS = (-2146893042), + SEC_E_TARGET_UNKNOWN = (-2146893053), + SEC_E_UNSUPPORTED_FUNCTION = (-2146893054), + SEC_E_UNTRUSTED_ROOT = (-2146893019), + SEC_E_WRONG_PRINCIPAL = (-2146893022), + SEC_E_SECPKG_NOT_FOUND = (-2146893051), + SEC_E_QOP_NOT_SUPPORTED = (-2146893046), + SEC_E_UNKNOWN_CREDENTIALS = (-2146893043), + SEC_E_NOT_OWNER = (-2146893050), +} +enum :SECURITY_STATUS { + SEC_I_RENEGOTIATE = 590625, + SEC_I_COMPLETE_AND_CONTINUE = 590612, + SEC_I_COMPLETE_NEEDED = 590611, + SEC_I_CONTINUE_NEEDED = 590610, + SEC_I_INCOMPLETE_CREDENTIALS = 590624, +} + +/* always a char */ +alias char SEC_CHAR; +alias wchar SEC_WCHAR; + +alias int SECURITY_STATUS; + Index: src/win32/servprov.d ================================================================== --- src/win32/servprov.d +++ src/win32/servprov.d @@ -1,16 +1,16 @@ -/***********************************************************************\ -* servprov.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.servprov; - -private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; - -interface IServiceProvider : IUnknown { - HRESULT QueryService(REFGUID, REFIID, void**); -} +/***********************************************************************\ +* servprov.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.servprov; + +private import win32.basetyps, win32.unknwn, win32.windef, win32.wtypes; + +interface IServiceProvider : IUnknown { + HRESULT QueryService(REFGUID, REFIID, void**); +} Index: src/win32/setupapi.d ================================================================== --- src/win32/setupapi.d +++ src/win32/setupapi.d @@ -1,1979 +1,1979 @@ -/***********************************************************************\ -* setupapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Vladimir Vlasov * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.setupapi; -pragma(lib, "setupapi.lib"); - -private import win32.basetyps, win32.commctrl, win32.prsht, win32.w32api, - win32.winreg, win32.windef; -private import win32.winbase; // for SYSTEMTIME - -/*static if(_WIN32_WINNT < _WIN32_WINDOWS) { - const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version -} else static if(_WIN32_WINDOWS) { - static if(_WIN32_WINDOWS >= 0x0490) { - const UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k - } else static if(_WIN32_WINDOWS >= 0x0410) { - const UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 - } else { - const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version - } -} else { - const UINT _SETUPAPI_VER = 0x0501; -} - -version (WindowsNTonly) { - static if (_WIN32_WINNT >= 0x500) { - const UINT USE_SP_DRVINFO_DATA_V1 = 0; - } else { - const UINT USE_SP_DRVINFO_DATA_V1 = 1; - } -} else { - const UINT USE_SP_DRVINFO_DATA_V1 = 1; -}*/ -/+ -const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version -const UINT USE_SP_DRVINFO_DATA_V1 = 1; -+/ -const UINT _SETUPAPI_VER = WINVER; -const bool USE_SP_DRVINFO_DATA_V1 = !_WIN32_WINNT_ONLY || _WIN32_WINNT < 0x500; - -enum : uint { - LINE_LEN = 256, - MAX_INF_STRING_LENGTH = 4096, - MAX_TITLE_LEN = 60, - MAX_INSTRUCTION_LEN = 256, - MAX_LABEL_LEN = 30, - MAX_SERVICE_NAME_LEN = 256, - MAX_SUBTITLE_LEN = 256, - SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 -} - -enum : DWORD { - COPYFLG_WARN_IF_SKIP = 0x00000001, - COPYFLG_NOSKIP = 0x00000002, - COPYFLG_NOVERSIONCHECK = 0x00000004, - COPYFLG_FORCE_FILE_IN_USE = 0x00000008, - COPYFLG_NO_OVERWRITE = 0x00000010, - COPYFLG_NO_VERSION_DIALOG = 0x00000020, - COPYFLG_OVERWRITE_OLDER_ONLY = 0x00000040, - COPYFLG_REPLACEONLY = 0x00000400, - COPYFLG_NODECOMP = 0x00000800, - COPYFLG_REPLACE_BOOT_FILE = 0x00001000, - COPYFLG_NOPRUNE = 0x00002000 -} - -enum : DWORD { - DELFLG_IN_USE = 0x00000001, - DELFLG_IN_USE1 = 0x00010000 -} - -enum : DWORD { - DI_REMOVEDEVICE_GLOBAL = 0x00000001, - DI_REMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, - DI_UNREMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, - DI_SHOWOEM = 0x00000001, - DI_SHOWCOMPAT = 0x00000002, - DI_SHOWCLASS = 0x00000004, - DI_SHOWALL = 0x00000007, - DI_NOVCP = 0x00000008, - DI_DIDCOMPAT = 0x00000010, - DI_DIDCLASS = 0x00000020, - DI_AUTOASSIGNRES = 0x00000040, - DI_NEEDRESTART = 0x00000080, - DI_NEEDREBOOT = 0x00000100, - DI_NOBROWSE = 0x00000200, - DI_MULTMFGS = 0x00000400, - DI_DISABLED = 0x00000800, - DI_GENERALPAGE_ADDED = 0x00001000, - DI_RESOURCEPAGE_ADDED = 0x00002000, - DI_PROPERTIES_CHANGE = 0x00004000, - DI_INF_IS_SORTED = 0x00008000, - DI_ENUMSINGLEINF = 0x00010000, - DI_DONOTCALLCONFIGMG = 0x00020000, - DI_INSTALLDISABLED = 0x00040000, - DI_COMPAT_FROM_CLASS = 0x00080000, - DI_CLASSINSTALLPARAMS = 0x00100000, - DI_NODI_DEFAULTACTION = 0x00200000, - DI_QUIETINSTALL = 0x00800000, - DI_NOFILECOPY = 0x01000000, - DI_FORCECOPY = 0x02000000, - DI_DRIVERPAGE_ADDED = 0x04000000, - DI_USECI_SELECTSTRINGS = 0x08000000, - DI_OVERRIDE_INFFLAGS = 0x10000000, - DI_PROPS_NOCHANGEUSAGE = 0x20000000, - DI_NOSELECTICONS = 0x40000000, - DI_NOWRITE_IDS = 0x80000000, - DI_FLAGSEX_USEOLDINFSEARCH = 0x00000001, - DI_FLAGSEX_AUTOSELECTRANK0 = 0x00000002, - DI_FLAGSEX_CI_FAILED = 0x00000004, - DI_FLAGSEX_DIDINFOLIST = 0x00000010, - DI_FLAGSEX_DIDCOMPATINFO = 0x00000020, - DI_FLAGSEX_FILTERCLASSES = 0x00000040, - DI_FLAGSEX_SETFAILEDINSTALL = 0x00000080, - DI_FLAGSEX_DEVICECHANGE = 0x00000100, - DI_FLAGSEX_ALWAYSWRITEIDS = 0x00000200, - DI_FLAGSEX_PROPCHANGE_PENDING = 0x00000400, - DI_FLAGSEX_ALLOWEXCLUDEDDRVS = 0x00000800, - DI_FLAGSEX_NOUIONQUERYREMOVE = 0x00001000, - DI_FLAGSEX_USECLASSFORCOMPAT = 0x00002000, - DI_FLAGSEX_OLDINF_IN_CLASSLIST = 0x00004000, - DI_FLAGSEX_NO_DRVREG_MODIFY = 0x00008000, - DI_FLAGSEX_IN_SYSTEM_SETUP = 0x00010000, - DI_FLAGSEX_INET_DRIVER = 0x00020000, - DI_FLAGSEX_APPENDDRIVERLIST = 0x00040000, - DI_FLAGSEX_PREINSTALLBACKUP = 0x00080000, - DI_FLAGSEX_BACKUPONREPLACE = 0x00100000, - DI_FLAGSEX_DRIVERLIST_FROM_URL = 0x00200000, - DI_FLAGSEX_RESERVED1 = 0x00400000, - DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = 0x00800000, - DI_FLAGSEX_POWERPAGE_ADDED = 0x01000000 -} - -enum : DWORD { - DIBCI_NOINSTALLCLASS = 0x00000001, - DIBCI_NODISPLAYCLASS = 0x00000002 -} - -enum : DWORD { - DICD_GENERATE_ID = 0x00000001, - DICD_INHERIT_CLASSDRVS = 0x00000002 -} - -enum : DWORD { - DICS_ENABLE = 1, - DICS_DISABLE, - DICS_PROPCHANGE, - DICS_START, - DICS_STOP // = 5 -} - -enum : DWORD { - DICS_FLAG_GLOBAL = 1, - DICS_FLAG_CONFIGSPECIFIC = 2, - DICS_FLAG_CONFIGGENERAL = 4 -} - -alias UINT DI_FUNCTION; - -enum : DI_FUNCTION { - DIF_SELECTDEVICE = 1, - DIF_INSTALLDEVICE, - DIF_ASSIGNRESOURCES, - DIF_PROPERTIES, - DIF_REMOVE, - DIF_FIRSTTIMESETUP, - DIF_FOUNDDEVICE, - DIF_SELECTCLASSDRIVERS, - DIF_VALIDATECLASSDRIVERS, - DIF_INSTALLCLASSDRIVERS, - DIF_CALCDISKSPACE, - DIF_DESTROYPRIVATEDATA, - DIF_VALIDATEDRIVER, - DIF_MOVEDEVICE, - DIF_DETECT, - DIF_INSTALLWIZARD, - DIF_DESTROYWIZARDDATA, - DIF_PROPERTYCHANGE, - DIF_ENABLECLASS, - DIF_DETECTVERIFY, - DIF_INSTALLDEVICEFILES, - DIF_UNREMOVE, - DIF_SELECTBESTCOMPATDRV, - DIF_ALLOW_INSTALL, - DIF_REGISTERDEVICE, - DIF_NEWDEVICEWIZARD_PRESELECT, - DIF_NEWDEVICEWIZARD_SELECT, - DIF_NEWDEVICEWIZARD_PREANALYZE, - DIF_NEWDEVICEWIZARD_POSTANALYZE, - DIF_NEWDEVICEWIZARD_FINISHINSTALL, - DIF_UNUSED1, - DIF_INSTALLINTERFACES, - DIF_DETECTCANCEL, - DIF_REGISTER_COINSTALLERS, - DIF_ADDPROPERTYPAGE_ADVANCED, - DIF_ADDPROPERTYPAGE_BASIC, - DIF_RESERVED1, - DIF_TROUBLESHOOTER, - DIF_POWERMESSAGEWAKE // = 39 -} - -enum : DWORD { - DIGCF_DEFAULT = 0x00000001, - DIGCF_PRESENT = 0x00000002, - DIGCF_ALLCLASSES = 0x00000004, - DIGCF_PROFILE = 0x00000008, - DIGCF_DEVICEINTERFACE = 0x00000010 -} - -deprecated enum : DWORD { - DIGCF_INTERFACEDEVICE = DIGCF_DEVICEINTERFACE -} - -enum : DWORD { - DIGCDP_FLAG_BASIC = 0x00000001, - DIGCDP_FLAG_ADVANCED = 0x00000002 -} - -enum : DWORD { - DIOCR_INSTALLER = 0x00000001, - DIOCR_INTERFACE = 0x00000002 -} - -enum : DWORD { - DIODI_NO_ADD = 0x00000001 -} - -enum : DWORD { - DIOD_INHERIT_CLASSDRVS = 0x00000002, - DIOD_CANCEL_REMOVE = 0x00000004 -} - -enum : DWORD { - DIREG_DEV = 0x00000001, - DIREG_DRV = 0x00000002, - DIREG_BOTH = 0x00000004 -} - -enum : int { - DIRID_ABSOLUTE = -1, - DIRID_NULL = 0, - DIRID_SRCPATH = 1, - DIRID_WINDOWS = 10, - DIRID_SYSTEM = 11, - DIRID_DRIVERS = 12, - DIRID_IOSUBSYS = DIRID_DRIVERS, - DIRID_INF = 17, - DIRID_HELP = 18, - DIRID_FONTS = 20, - DIRID_VIEWERS = 21, - DIRID_COLOR = 23, - DIRID_APPS = 24, - DIRID_SHARED = 25, - DIRID_BOOT = 30, - DIRID_SYSTEM16 = 50, - DIRID_SPOOL = 51, - DIRID_SPOOLDRIVERS = 52, - DIRID_USERPROFILE = 53, - DIRID_LOADER = 54, - DIRID_PRINTPROCESSOR = 55, - DIRID_DEFAULT = DIRID_SYSTEM -} - -enum : int { - DIRID_COMMON_STARTMENU = 16406, - DIRID_COMMON_PROGRAMS = 16407, - DIRID_COMMON_STARTUP = 16408, - DIRID_COMMON_DESKTOPDIRECTORY = 16409, - DIRID_COMMON_FAVORITES = 16415, - DIRID_COMMON_APPDATA = 16419, - DIRID_PROGRAM_FILES = 16422, - DIRID_SYSTEM_X86 = 16425, - DIRID_PROGRAM_FILES_X86 = 16426, - DIRID_PROGRAM_FILES_COMMON = 16427, - DIRID_PROGRAM_FILES_COMMONX86 = 16428, - DIRID_COMMON_TEMPLATES = 16429, - DIRID_COMMON_DOCUMENTS = 16430, - DIRID_USER = 0x8000, - DIRID_ABSOLUTE_16BIT = 0xffff -} - -enum : DWORD { - DMI_MASK = 0x00000001, - DMI_BKCOLOR = 0x00000002, - DMI_USERECT = 0x00000004 -} - -enum : DWORD { - DNF_DUPDESC = 0x00000001, - DNF_OLDDRIVER = 0x00000002, - DNF_EXCLUDEFROMLIST = 0x00000004, - DNF_NODRIVER = 0x00000008, - DNF_LEGACYINF = 0x00000010, - DNF_CLASS_DRIVER = 0x00000020, - DNF_COMPATIBLE_DRIVER = 0x00000040, - DNF_INET_DRIVER = 0x00000080, - DNF_UNUSED1 = 0x00000100, - DNF_INDEXED_DRIVER = 0x00000200, - DNF_OLD_INET_DRIVER = 0x00000400, - DNF_BAD_DRIVER = 0x00000800, - DNF_DUPPROVIDER = 0x00001000 -} - -enum : UINT { - DPROMPT_SUCCESS, - DPROMPT_CANCEL, - DPROMPT_SKIPFILE, - DPROMPT_BUFFERTOOSMALL, - DPROMPT_OUTOFMEMORY // = 4 -} - -enum : DWORD { - DRIVER_HARDWAREID_RANK = 0x00000FFF, - DRIVER_COMPATID_RANK = 0x00003FFF, - DRIVER_UNTRUSTED_RANK = 0x00008000, - DRIVER_UNTRUSTED_HARDWAREID_RANK = 0x00008FFF, - DRIVER_UNTRUSTED_COMPATID_RANK = 0x0000BFFF, - DRIVER_W9X_SUSPECT_RANK = 0x0000C000, - DRIVER_W9X_SUSPECT_HARDWAREID_RANK = 0x0000CFFF, - DRIVER_W9X_SUSPECT_COMPATID_RANK = 0x0000FFFF -} - -enum : DWORD { - DYNAWIZ_FLAG_PAGESADDED = 0x00000001, - DYNAWIZ_FLAG_INSTALLDET_NEXT = 0x00000002, - DYNAWIZ_FLAG_INSTALLDET_PREV = 0x00000004, - DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT = 0x00000008 -} - -enum : WORD { - ENABLECLASS_QUERY, - ENABLECLASS_SUCCESS, - ENABLECLASS_FAILURE // = 2 -} - -enum : DWORD { - ERROR_EXPECTED_SECTION_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0, - ERROR_BAD_SECTION_NAME_LINE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1, - ERROR_SECTION_NAME_TOO_LONG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2, - ERROR_GENERAL_SYNTAX = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3, - ERROR_WRONG_INF_STYLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100, - ERROR_NOT_INSTALLED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x1000, - ERROR_SECTION_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101, - ERROR_LINE_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102, - ERROR_NO_BACKUP = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103, - ERROR_NO_ASSOCIATED_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200, - ERROR_CLASS_MISMATCH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201, - ERROR_DUPLICATE_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202, - ERROR_NO_DRIVER_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203, - ERROR_KEY_DOES_NOT_EXIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204, - ERROR_INVALID_DEVINST_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x205, - ERROR_INVALID_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206, - ERROR_DEVINST_ALREADY_EXISTS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x207, - ERROR_DEVINFO_NOT_REGISTERED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x208, - ERROR_INVALID_REG_PROPERTY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x209, - ERROR_NO_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A, - ERROR_NO_SUCH_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B, - ERROR_CANT_LOAD_CLASS_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20C, - ERROR_INVALID_CLASS_INSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20D, - ERROR_DI_DO_DEFAULT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E, - ERROR_DI_NOFILECOPY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F, - ERROR_INVALID_HWPROFILE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210, - ERROR_NO_DEVICE_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211, - ERROR_DEVINFO_LIST_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212, - ERROR_DEVINFO_DATA_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213, - ERROR_DI_BAD_PATH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214, - ERROR_NO_CLASSINSTALL_PARAMS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x215, - ERROR_FILEQUEUE_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216, - ERROR_BAD_SERVICE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x217, - ERROR_NO_CLASS_DRIVER_LIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x218, - ERROR_NO_ASSOCIATED_SERVICE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x219, - ERROR_NO_DEFAULT_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21A, - ERROR_DEVICE_INTERFACE_ACTIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21B, - ERROR_DEVICE_INTERFACE_REMOVED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21C, - ERROR_BAD_INTERFACE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21D, - ERROR_NO_SUCH_INTERFACE_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21E, - ERROR_INVALID_REFERENCE_STRING = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21F, - ERROR_INVALID_MACHINENAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220, - ERROR_REMOTE_COMM_FAILURE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221, - ERROR_MACHINE_UNAVAILABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222, - ERROR_NO_CONFIGMGR_SERVICES = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x223, - ERROR_INVALID_PROPPAGE_PROVIDER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x224, - ERROR_NO_SUCH_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x225, - ERROR_DI_POSTPROCESSING_REQUIRED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x226, - ERROR_INVALID_COINSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227, - ERROR_NO_COMPAT_DRIVERS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228, - ERROR_NO_DEVICE_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229, - ERROR_INVALID_INF_LOGCONFIG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22A, - ERROR_DI_DONT_INSTALL = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B, - ERROR_INVALID_FILTER_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22C, - ERROR_NON_WINDOWS_NT_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22D, - ERROR_NON_WINDOWS_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E, - ERROR_NO_CATALOG_FOR_OEM_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22F, - ERROR_DEVINSTALL_QUEUE_NONNATIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x230, - ERROR_NOT_DISABLEABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231, - ERROR_CANT_REMOVE_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232 -} - -deprecated enum : DWORD { - ERROR_NO_DEFAULT_INTERFACE_DEVICE = ERROR_NO_DEFAULT_DEVICE_INTERFACE, - ERROR_INTERFACE_DEVICE_ACTIVE = ERROR_DEVICE_INTERFACE_ACTIVE, - ERROR_INTERFACE_DEVICE_REMOVED = ERROR_DEVICE_INTERFACE_REMOVED, - ERROR_NO_SUCH_INTERFACE_DEVICE = ERROR_NO_SUCH_DEVICE_INTERFACE, -} - -enum : UINT { - FILEOP_COPY, - FILEOP_RENAME, - FILEOP_DELETE, - FILEOP_BACKUP, - FILEOP_NEWPATH, // = 4 - FILEOP_ABORT = 0, - FILEOP_DOIT, - FILEOP_SKIP, // = 2 - FILEOP_RETRY = FILEOP_DOIT -} - -enum : UINT { - FILE_COMPRESSION_NONE, - FILE_COMPRESSION_WINLZA, - FILE_COMPRESSION_MSZIP, - FILE_COMPRESSION_NTCAB // = 3 -} - -enum : DWORD { - FLG_ADDREG_TYPE_SZ = 0x00000000, - FLG_ADDREG_BINVALUETYPE = 0x00000001, - FLG_ADDREG_NOCLOBBER = 0x00000002, - FLG_ADDREG_DELVAL = 0x00000004, - FLG_ADDREG_APPEND = 0x00000008, - FLG_ADDREG_KEYONLY = 0x00000010, - FLG_ADDREG_OVERWRITEONLY = 0x00000020, - FLG_ADDREG_TYPE_MULTI_SZ = 0x00010000, - FLG_ADDREG_TYPE_EXPAND_SZ = 0x00020000, - FLG_ADDREG_TYPE_BINARY = 0x00000000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_NONE = 0x00020000 | FLG_ADDREG_BINVALUETYPE, - FLG_ADDREG_TYPE_MASK = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_ADDREG_64BITKEY = 0x00001000, - FLG_ADDREG_KEYONLY_COMMON = 0x00002000, - FLG_ADDREG_32BITKEY = 0x00004000, - FLG_ADDREG_DELREG_BIT = 0x00008000 - } -} - -enum : DWORD { - FLG_DELREG_VALUE = 0x00000000 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_DELREG_TYPE_MASK = FLG_ADDREG_TYPE_MASK, - FLG_DELREG_TYPE_SZ = FLG_ADDREG_TYPE_SZ, - FLG_DELREG_TYPE_MULTI_SZ = FLG_ADDREG_TYPE_MULTI_SZ, - FLG_DELREG_TYPE_EXPAND_SZ = FLG_ADDREG_TYPE_EXPAND_SZ, - FLG_DELREG_TYPE_BINARY = FLG_ADDREG_TYPE_BINARY, - FLG_DELREG_TYPE_DWORD = FLG_ADDREG_TYPE_DWORD, - FLG_DELREG_TYPE_NONE = FLG_ADDREG_TYPE_NONE, - FLG_DELREG_64BITKEY = FLG_ADDREG_64BITKEY, - FLG_DELREG_KEYONLY_COMMON = FLG_ADDREG_KEYONLY_COMMON, - FLG_DELREG_32BITKEY = FLG_ADDREG_32BITKEY, - FLG_DELREG_OPERATION_MASK = 0x000000FE, - FLG_DELREG_MULTI_SZ_DELSTRING = 0x00000002 | FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT - } -} - -enum : DWORD { - FLG_BITREG_CLEARBITS = 0x00000000, - FLG_BITREG_SETBITS = 0x00000001 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - FLG_BITREG_64BITKEY = 0x00001000, - FLG_BITREG_32BITKEY = 0x00004000 - } -} - -enum : DWORD { - FLG_PROFITEM_CURRENTUSER = 0x00000001, - FLG_PROFITEM_DELETE = 0x00000002, - FLG_PROFITEM_GROUP = 0x00000004, - FLG_PROFITEM_CSIDL = 0x00000008 -} - -enum : DWORD { - FLG_REGSVR_DLLREGISTER = 0x00000001, - FLG_REGSVR_DLLINSTALL = 0x00000002 -} - -enum { - IDD_DYNAWIZ_FIRSTPAGE = 10000, - IDD_DYNAWIZ_SELECT_PREVPAGE, - IDD_DYNAWIZ_SELECT_NEXTPAGE, - IDD_DYNAWIZ_ANALYZE_PREVPAGE, - IDD_DYNAWIZ_ANALYZE_NEXTPAGE, // = 1004 - IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE = 10006, - IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE, - IDD_DYNAWIZ_INSTALLDETECTED_NODEVS, - IDD_DYNAWIZ_SELECTDEV_PAGE, - IDD_DYNAWIZ_ANALYZEDEV_PAGE, - IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE, - IDD_DYNAWIZ_SELECTCLASS_PAGE, // = 10012 - MIN_IDD_DYNAWIZ_RESOURCE_ID = 10000, - MAX_IDD_DYNAWIZ_RESOURCE_ID = 11000 -} - -enum : DWORD { - IDF_NOBROWSE = 0x00000001, - IDF_NOSKIP = 0x00000002, - IDF_NODETAILS = 0x00000004, - IDF_NOCOMPRESSED = 0x00000008, - IDF_CHECKFIRST = 0x00000100, - IDF_NOBEEP = 0x00000200, - IDF_NOFOREGROUND = 0x00000400, - IDF_WARNIFSKIP = 0x00000800 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - IDF_NOREMOVABLEMEDIAPROMPT = 0x00001000, - IDF_USEDISKNAMEASPROMPT = 0x00002000, - IDF_OEMDISK = 0x80000000 - } -} - -enum { - IDI_RESOURCEFIRST = 159, - IDI_RESOURCE = 159, - IDI_RESOURCELAST = 161, - IDI_RESOURCEOVERLAYFIRST = 161, - IDI_RESOURCEOVERLAYLAST = 161, - IDI_CONFLICT = 161, - IDI_PROBLEM_OVL = 500, - IDI_DISABLED_OVL = 501, - IDI_FORCED_OVL = 502, - IDI_CLASSICON_OVERLAYFIRST = 500, - IDI_CLASSICON_OVERLAYLAST = 502 -} - -enum : DWORD { - INF_STYLE_NONE = 0x00000000, - INF_STYLE_OLDNT = 0x00000001, - INF_STYLE_WIN4 = 0x00000002, - INF_STYLE_CACHE_ENABLE = 0x00000010, - INF_STYLE_CACHE_DISABLE = 0x00000020 -} - -enum : DWORD { - INFINFO_INF_SPEC_IS_HINF = 1, - INFINFO_INF_NAME_IS_ABSOLUTE, - INFINFO_DEFAULT_SEARCH, - INFINFO_REVERSE_DEFAULT_SEARCH, - INFINFO_INF_PATH_LIST_SEARCH // = 5 -} - -alias DWORD LogSeverity; -enum : LogSeverity { - LogSevInformation, - LogSevWarning, - LogSevError, - LogSevFatalError, - LogSevMaximum // = 4 -} - -const MAX_INSTALLWIZARD_DYNAPAGES = 20; - -enum : DWORD { - NDW_INSTALLFLAG_DIDFACTDEFS = 0x00000001, - NDW_INSTALLFLAG_HARDWAREALLREADYIN = 0x00000002, - NDW_INSTALLFLAG_NEEDSHUTDOWN = 0x00000200, - NDW_INSTALLFLAG_EXPRESSINTRO = 0x00000400, - NDW_INSTALLFLAG_SKIPISDEVINSTALLED = 0x00000800, - NDW_INSTALLFLAG_NODETECTEDDEVS = 0x00001000, - NDW_INSTALLFLAG_INSTALLSPECIFIC = 0x00002000, - NDW_INSTALLFLAG_SKIPCLASSLIST = 0x00004000, - NDW_INSTALLFLAG_CI_PICKED_OEM = 0x00008000, - NDW_INSTALLFLAG_PCMCIAMODE = 0x00010000, - NDW_INSTALLFLAG_PCMCIADEVICE = 0x00020000, - NDW_INSTALLFLAG_USERCANCEL = 0x00040000, - NDW_INSTALLFLAG_KNOWNCLASS = 0x00080000, - NDW_INSTALLFLAG_NEEDRESTART = 0x00000080, - NDW_INSTALLFLAG_NEEDREBOOT = 0x00000100 -} - -enum : DWORD { - SETDIRID_NOT_FULL_PATH = 0x00000001 -} - -enum : DWORD { - SP_COPY_DELETESOURCE = 0x0000001, - SP_COPY_REPLACEONLY = 0x0000002, - SP_COPY_NEWER = 0x0000004, - SP_COPY_NEWER_OR_SAME = 0x0000004, - SP_COPY_NOOVERWRITE = 0x0000008, - SP_COPY_NODECOMP = 0x0000010, - SP_COPY_LANGUAGEAWARE = 0x0000020, - SP_COPY_SOURCE_ABSOLUTE = 0x0000040, - SP_COPY_SOURCEPATH_ABSOLUTE = 0x0000080, - SP_COPY_IN_USE_NEEDS_REBOOT = 0x0000100, - SP_COPY_FORCE_IN_USE = 0x0000200, - SP_COPY_NOSKIP = 0x0000400, - SP_FLAG_CABINETCONTINUATION = 0x0000800, - SP_COPY_FORCE_NOOVERWRITE = 0x0001000, - SP_COPY_FORCE_NEWER = 0x0002000, - SP_COPY_WARNIFSKIP = 0x0004000, - SP_COPY_NOBROWSE = 0x0008000, - SP_COPY_NEWER_ONLY = 0x0010000, - SP_COPY_SOURCE_SIS_MASTER = 0x0020000, - SP_COPY_OEMINF_CATALOG_ONLY = 0x0040000, - SP_COPY_REPLACE_BOOT_FILE = 0x0080000, - SP_COPY_NOPRUNE = 0x0100000 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SP_COPY_OEM_F6_INF = 0x0200000 - } -} - -enum : DWORD { - SPCRP_SECURITY = 23, - SPCRP_SECURITY_SDS, - SPCRP_DEVTYPE, - SPCRP_EXCLUSIVE, - SPCRP_CHARACTERISTICS, - SPCRP_MAXIMUM_PROPERTY // = 28 -} - -enum : DWORD { - SPDIT_NODRIVER, - SPDIT_CLASSDRIVER, - SPDIT_COMPATDRIVER // = 2 -} - -enum : DWORD { - SPDRP_DEVICEDESC, - SPDRP_HARDWAREID, - SPDRP_COMPATIBLEIDS, - SPDRP_UNUSED0, - SPDRP_SERVICE, - SPDRP_UNUSED1, - SPDRP_UNUSED2, - SPDRP_CLASS, - SPDRP_CLASSGUID, - SPDRP_DRIVER, - SPDRP_CONFIGFLAGS, - SPDRP_MFG, - SPDRP_FRIENDLYNAME, - SPDRP_LOCATION_INFORMATION, - SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, - SPDRP_CAPABILITIES, - SPDRP_UI_NUMBER, - SPDRP_UPPERFILTERS, - SPDRP_LOWERFILTERS, - SPDRP_BUSTYPEGUID, - SPDRP_LEGACYBUSTYPE, - SPDRP_BUSNUMBER, - SPDRP_ENUMERATOR_NAME, - SPDRP_SECURITY, - SPDRP_SECURITY_SDS, - SPDRP_DEVTYPE, - SPDRP_EXCLUSIVE, - SPDRP_CHARACTERISTICS, - SPDRP_ADDRESS, // = 28 - SPDRP_UI_NUMBER_DESC_FORMAT = 30, - SPDRP_MAXIMUM_PROPERTY = 31 -} - -enum : UINT { - SPDSL_IGNORE_DISK = 1, - SPDSL_DISALLOW_NEGATIVE_ADJUST -} - -enum : UINT { - SPFILENOTIFY_STARTQUEUE = 1, - SPFILENOTIFY_ENDQUEUE, - SPFILENOTIFY_STARTSUBQUEUE, - SPFILENOTIFY_ENDSUBQUEUE, - SPFILENOTIFY_STARTDELETE, - SPFILENOTIFY_ENDDELETE, - SPFILENOTIFY_DELETEERROR, - SPFILENOTIFY_STARTRENAME, - SPFILENOTIFY_ENDRENAME, - SPFILENOTIFY_RENAMEERROR, - SPFILENOTIFY_STARTCOPY, - SPFILENOTIFY_ENDCOPY, - SPFILENOTIFY_COPYERROR, - SPFILENOTIFY_NEEDMEDIA, - SPFILENOTIFY_QUEUESCAN, - SPFILENOTIFY_CABINETINFO, - SPFILENOTIFY_FILEINCABINET, - SPFILENOTIFY_NEEDNEWCABINET, - SPFILENOTIFY_FILEEXTRACTED, - SPFILENOTIFY_FILEOPDELAYED, - SPFILENOTIFY_STARTBACKUP, - SPFILENOTIFY_BACKUPERROR, - SPFILENOTIFY_ENDBACKUP, - SPFILENOTIFY_QUEUESCAN_EX, - SPFILENOTIFY_STARTREGISTRATION, // = 25 - SPFILENOTIFY_ENDREGISTRATION = 32, - SPFILENOTIFY_LANGMISMATCH = 0x00010000, - SPFILENOTIFY_TARGETEXISTS = 0x00020000, - SPFILENOTIFY_TARGETNEWER = 0x00040000 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : UINT { - SPFILENOTIFY_QUEUESCAN_SIGNERINFO = 0x00000040 - } -} - -enum : DWORD { - SPFILELOG_SYSTEMLOG = 0x00000001, - SPFILELOG_OEMFILE = 0x00000001, - SPFILELOG_FORCENEW = 0x00000002, - SPFILELOG_QUERYONLY = 0x00000004 -} - -enum : INT { - SPFILEQ_FILE_IN_USE = 0x00000001, - SPFILEQ_REBOOT_RECOMMENDED = 0x00000002, - SPFILEQ_REBOOT_IN_PROGRESS = 0x00000004 -} - -enum : DWORD { - SPINT_ACTIVE = 0x00000001, - SPINT_DEFAULT = 0x00000002, - SPINT_REMOVED = 0x00000004 -} - -deprecated enum : DWORD { - SPID_ACTIVE = SPINT_ACTIVE, - SPID_DEFAULT = SPINT_DEFAULT, - SPID_REMOVED = SPINT_REMOVED -} - -enum : UINT { - SPINST_LOGCONFIG = 0x00000001, - SPINST_INIFILES = 0x00000002, - SPINST_REGISTRY = 0x00000004, - SPINST_INI2REG = 0x00000008, - SPINST_FILES = 0x00000010, - SPINST_BITREG = 0x00000020, - SPINST_REGSVR = 0x00000040, - SPINST_UNREGSVR = 0x00000080, - SPINST_PROFILEITEMS = 0x00000100, - SPINST_SINGLESECTION = 0x00010000, - SPINST_LOGCONFIG_IS_FORCED = 0x00020000, - SPINST_LOGCONFIGS_ARE_OVERRIDES = 0x00040000 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : UINT { - SPINST_COPYINF = 0x00000200, - SPINST_ALL = 0x000003ff, - SPINST_REGISTERCALLBACKAWARE = 0x00080000 - } -} else { - enum : UINT { - SPINST_ALL = 0x000001ff - } -} - -enum : DWORD { - SPOST_NONE, - SPOST_PATH, - SPOST_URL, - SPOST_MAX // = 3 -} - -enum : DWORD { - SPPSR_SELECT_DEVICE_RESOURCES = 1, - SPPSR_ENUM_BASIC_DEVICE_PROPERTIES, - SPPSR_ENUM_ADV_DEVICE_PROPERTIES -} - -enum : DWORD { - SPQ_SCAN_FILE_PRESENCE = 0x00000001, - SPQ_SCAN_FILE_VALIDITY = 0x00000002, - SPQ_SCAN_USE_CALLBACK = 0x00000004, - SPQ_SCAN_USE_CALLBACKEX = 0x00000008, - SPQ_SCAN_INFORM_USER = 0x00000010, - SPQ_SCAN_PRUNE_COPY_QUEUE = 0x00000020 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SPQ_SCAN_USE_CALLBACK_SIGNERINFO = 0x00000040, - SPQ_SCAN_PRUNE_DELREN = 0x00000080 - } -} - -enum : UINT_PTR { - SPQ_DELAYED_COPY = 0x00000001 -} - -enum : DWORD { - SPRDI_FIND_DUPS = 0x00000001, -} - -enum : DWORD { - SPSVCINST_TAGTOFRONT = 0x00000001, - SPSVCINST_ASSOCSERVICE = 0x00000002, - SPSVCINST_DELETEEVENTLOGENTRY = 0x00000004, - SPSVCINST_NOCLOBBER_DISPLAYNAME = 0x00000008, - SPSVCINST_NOCLOBBER_STARTTYPE = 0x00000010, - SPSVCINST_NOCLOBBER_ERRORCONTROL = 0x00000020, - SPSVCINST_NOCLOBBER_LOADORDERGROUP = 0x00000040, - SPSVCINST_NOCLOBBER_DEPENDENCIES = 0x00000080, - SPSVCINST_NOCLOBBER_DESCRIPTION = 0x00000100, - SPSVCINST_STOPSERVICE = 0x00000200 -} - -static if(_SETUPAPI_VER >= 0x0501) { - enum : DWORD { - SPSVCINST_CLOBBER_SECURITY = 0x00000400 - } -} - -enum : DWORD { - SPWPT_SELECTDEVICE = 0x00000001 -} - -enum : DWORD { - SPWP_USE_DEVINFO_DATA = 0x00000001 -} - -enum : UINT { - SRCINFO_PATH = 1, - SRCINFO_TAGFILE, - SRCINFO_DESCRIPTION, - SRCINFO_FLAGS // = 4 -} - -enum : DWORD { - SRCLIST_TEMPORARY = 0x00000001, - SRCLIST_NOBROWSE = 0x00000002, - SRCLIST_SYSTEM = 0x00000010, - SRCLIST_USER = 0x00000020, - SRCLIST_SYSIFADMIN = 0x00000040, - SRCLIST_SUBDIRS = 0x00000100, - SRCLIST_APPEND = 0x00000200, - SRCLIST_NOSTRIPPLATFORM = 0x00000400 -} - -alias PVOID HINF; -alias PVOID HDSKSPC; -alias HANDLE HDEVINFO; -alias PVOID HSPFILEQ; -alias PVOID HSPFILELOG; - -enum SetupFileLogInfo { - SetupFileLogSourceFilename, - SetupFileLogChecksum, - SetupFileLogDiskTagfile, - SetupFileLogDiskDescription, - SetupFileLogOtherInfo, - SetupFileLogMax -} - -align(1): - -struct INFCONTEXT { - PVOID Inf; - PVOID CurrentInf; - UINT Section; - UINT Line; -} -alias INFCONTEXT* PINFCONTEXT; - -struct SP_INF_INFORMATION { - DWORD InfStyle; - DWORD InfCount; - BYTE _VersionData[1]; - BYTE* VersionData() { return _VersionData.ptr; } -} -alias SP_INF_INFORMATION* PSP_INF_INFORMATION; - -struct SP_ALTPLATFORM_INFO { - DWORD cbSize = SP_ALTPLATFORM_INFO.sizeof; - DWORD Platform; - DWORD MajorVersion; - DWORD MinorVersion; - WORD ProcessorArchitecture; - WORD Reserved; -} -alias SP_ALTPLATFORM_INFO* PSP_ALTPLATFORM_INFO; - -struct SP_ORIGINAL_FILE_INFO_A { - DWORD cbSize = SP_ORIGINAL_FILE_INFO_A.sizeof; - CHAR OriginalInfName[MAX_PATH]; - CHAR OriginalCatalogName[MAX_PATH]; -} -alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO_A; - -struct SP_ORIGINAL_FILE_INFO_W { - DWORD cbSize = SP_ORIGINAL_FILE_INFO_W.sizeof; - WCHAR OriginalInfName[MAX_PATH]; - WCHAR OriginalCatalogName[MAX_PATH]; -} -alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO_W; - -struct FILEPATHS_A { - PCSTR Target; - PCSTR Source; - UINT Win32Error; - DWORD Flags; -} -alias FILEPATHS_A* PFILEPATHS_A; - -struct FILEPATHS_W { - PCWSTR Target; - PCWSTR Source; - UINT Win32Error; - DWORD Flags; -} -alias FILEPATHS_W* PFILEPATHS_W; - -struct SOURCE_MEDIA_A { - PCSTR Reserved; - PCSTR Tagfile; - PCSTR Description; - PCSTR SourcePath; - PCSTR SourceFile; - DWORD Flags; -} -alias SOURCE_MEDIA_A* PSOURCE_MEDIA_A; - -struct SOURCE_MEDIA_W { - PCWSTR Reserved; - PCWSTR Tagfile; - PCWSTR Description; - PCWSTR SourcePath; - PCWSTR SourceFile; - DWORD Flags; -} -alias SOURCE_MEDIA_W* PSOURCE_MEDIA_W; - -struct CABINET_INFO_A { - PCSTR CabinetPath; - PCSTR CabinetFile; - PCSTR DiskName; - USHORT SetId; - USHORT CabinetNumber; -} -alias CABINET_INFO_A* PCABINET_INFO_A; - -struct CABINET_INFO_W { - PCWSTR CabinetPath; - PCWSTR CabinetFile; - PCWSTR DiskName; - USHORT SetId; - USHORT CabinetNumber; -} -alias CABINET_INFO_W* PCABINET_INFO_W; - -struct FILE_IN_CABINET_INFO_A { - PCSTR NameInCabinet; - DWORD FileSize; - DWORD Win32Error; - WORD DosDate; - WORD DosTime; - WORD DosAttribs; - CHAR FullTargetName[MAX_PATH]; -} -alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO_A; - -struct FILE_IN_CABINET_INFO_W { - PCWSTR NameInCabinet; - DWORD FileSize; - DWORD Win32Error; - WORD DosDate; - WORD DosTime; - WORD DosAttribs; - WCHAR FullTargetName[MAX_PATH]; -} -alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO_W; - -struct SP_FILE_COPY_PARAMS_A { - DWORD cbSize = SP_FILE_COPY_PARAMS_A.sizeof; - HSPFILEQ QueueHandle; - PCSTR SourceRootPath; - PCSTR SourcePath; - PCSTR SourceFilename; - PCSTR SourceDescription; - PCSTR SourceTagfile; - PCSTR TargetDirectory; - PCSTR TargetFilename; - DWORD CopyStyle; - HINF LayoutInf; - PCSTR SecurityDescriptor; -} -alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS_A; - -struct SP_FILE_COPY_PARAMS_W { - DWORD cbSize = SP_FILE_COPY_PARAMS_W.sizeof; - HSPFILEQ QueueHandle; - PCWSTR SourceRootPath; - PCWSTR SourcePath; - PCWSTR SourceFilename; - PCWSTR SourceDescription; - PCWSTR SourceTagfile; - PCWSTR TargetDirectory; - PCWSTR TargetFilename; - DWORD CopyStyle; - HINF LayoutInf; - PCWSTR SecurityDescriptor; -} -alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS_W; - -struct SP_DEVINFO_DATA { - DWORD cbSize = SP_DEVINFO_DATA.sizeof; - GUID ClassGuid; - DWORD DevInst; - ULONG_PTR Reserved; -} -alias SP_DEVINFO_DATA* PSP_DEVINFO_DATA; - -struct SP_DEVICE_INTERFACE_DATA { - DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof; - GUID InterfaceClassGuid; - DWORD Flags; - ULONG_PTR Reserved; -} -alias SP_DEVICE_INTERFACE_DATA* PSP_DEVICE_INTERFACE_DATA; -deprecated alias SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA; -deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA; - -struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { - DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; - CHAR _DevicePath[1]; - CHAR* DevicePath() { return _DevicePath.ptr; } -} -alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A; - -struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { - DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; - WCHAR _DevicePath[1]; - WCHAR* DevicePath() { return _DevicePath.ptr; } -} -alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W; - -deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A; -deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA_A; -deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W; -deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA_W; - -struct SP_DEVINFO_LIST_DETAIL_DATA_A { - DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof; - GUID ClassGuid; - HANDLE RemoteMachineHandle; - CHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH]; -} -alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA_A; - -struct SP_DEVINFO_LIST_DETAIL_DATA_W { - DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof; - GUID ClassGuid; - HANDLE RemoteMachineHandle; - WCHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH]; -} -alias SP_DEVINFO_LIST_DETAIL_DATA_W* PSP_DEVINFO_LIST_DETAIL_DATA_W; - -extern(Windows) alias UINT function(PVOID,UINT,UINT_PTR,UINT_PTR) PSP_FILE_CALLBACK_A; -extern(Windows) alias UINT function(PVOID,UINT,UINT_PTR,UINT_PTR) PSP_FILE_CALLBACK_W; - -struct SP_DEVINSTALL_PARAMS_A { - DWORD cbSize = SP_DEVINSTALL_PARAMS_A.sizeof; - DWORD Flags; - DWORD FlagsEx; - HWND hwndParent; - PSP_FILE_CALLBACK_A InstallMsgHandler; - PVOID InstallMsgHandlerContext; - HSPFILEQ FileQueue; - ULONG_PTR ClassInstallReserved; - DWORD Reserved; - CHAR DriverPath[MAX_PATH]; -} -alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS_A; - -struct SP_DEVINSTALL_PARAMS_W { - DWORD cbSize = SP_DEVINSTALL_PARAMS_W.sizeof; - DWORD Flags; - DWORD FlagsEx; - HWND hwndParent; - PSP_FILE_CALLBACK_W InstallMsgHandler; - PVOID InstallMsgHandlerContext; - HSPFILEQ FileQueue; - ULONG_PTR ClassInstallReserved; - DWORD Reserved; - WCHAR DriverPath[MAX_PATH]; -} -alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS_W; - -struct SP_CLASSINSTALL_HEADER { - DWORD cbSize = SP_CLASSINSTALL_HEADER.sizeof; - DI_FUNCTION InstallFunction; -} -alias SP_CLASSINSTALL_HEADER* PSP_CLASSINSTALL_HEADER; - -struct SP_ENABLECLASS_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - GUID ClassGuid; - DWORD EnableMessage; -} -alias SP_ENABLECLASS_PARAMS* PSP_ENABLECLASS_PARAMS; - -struct SP_MOVEDEV_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - SP_DEVINFO_DATA SourceDeviceInfoData; -} -alias SP_MOVEDEV_PARAMS* PSP_MOVEDEV_PARAMS; - -struct SP_PROPCHANGE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD StateChange; - DWORD Scope; - DWORD HwProfile; -} -alias SP_PROPCHANGE_PARAMS* PSP_PROPCHANGE_PARAMS; - -struct SP_REMOVEDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Scope; - DWORD HwProfile; -} -alias SP_REMOVEDEVICE_PARAMS* PSP_REMOVEDEVICE_PARAMS; - -struct SP_UNREMOVEDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Scope; - DWORD HwProfile; -} -alias SP_UNREMOVEDEVICE_PARAMS* PSP_UNREMOVEDEVICE_PARAMS; - -struct SP_SELECTDEVICE_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR Title[MAX_TITLE_LEN]; - CHAR Instructions[MAX_INSTRUCTION_LEN]; - CHAR ListLabel[MAX_LABEL_LEN]; - CHAR SubTitle[MAX_SUBTITLE_LEN]; - BYTE Reserved[2]; -} -alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS_A; - -struct SP_SELECTDEVICE_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR Title[MAX_TITLE_LEN]; - WCHAR Instructions[MAX_INSTRUCTION_LEN]; - WCHAR ListLabel[MAX_LABEL_LEN]; - WCHAR SubTitle[MAX_SUBTITLE_LEN]; -} -alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS_W; - -extern(Windows) alias BOOL function(PVOID,DWORD) PDETECT_PROGRESS_NOTIFY; - -struct SP_DETECTDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - PDETECT_PROGRESS_NOTIFY DetectProgressNotify; - PVOID ProgressNotifyParam; -} -alias SP_DETECTDEVICE_PARAMS* PSP_DETECTDEVICE_PARAMS; - -struct SP_INSTALLWIZARD_DATA { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Flags; - HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES]; - DWORD NumDynamicPages; - DWORD DynamicPageFlags; - DWORD PrivateFlags; - LPARAM PrivateData; - HWND hwndWizardDlg; -} -alias SP_INSTALLWIZARD_DATA* PSP_INSTALLWIZARD_DATA; - -struct SP_NEWDEVICEWIZARD_DATA { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - DWORD Flags; - HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES]; - DWORD NumDynamicPages; - HWND hwndWizardDlg; -} -alias SP_NEWDEVICEWIZARD_DATA* PSP_NEWDEVICEWIZARD_DATA; -alias SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA; -alias SP_NEWDEVICEWIZARD_DATA* PSP_ADDPROPERTYPAGE_DATA; - -struct SP_TROUBLESHOOTER_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR ChmFile[MAX_PATH]; - CHAR HtmlTroubleShooter[MAX_PATH]; -} -alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS_A; - -struct SP_TROUBLESHOOTER_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR ChmFile[MAX_PATH]; - WCHAR HtmlTroubleShooter[MAX_PATH]; -} -alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS_W; - -struct SP_POWERMESSAGEWAKE_PARAMS_A { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - CHAR PowerMessageWake[LINE_LEN*2]; -} -alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS_A; - -struct SP_POWERMESSAGEWAKE_PARAMS_W { - SP_CLASSINSTALL_HEADER ClassInstallHeader; - WCHAR PowerMessageWake[LINE_LEN*2]; -} -alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS_W; - -struct SP_DRVINFO_DATA_V2_A { - DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - CHAR Description[LINE_LEN]; - CHAR MfgName[LINE_LEN]; - CHAR ProviderName[LINE_LEN]; - FILETIME DriverDate; - DWORDLONG DriverVersion; -} -alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_V2_A; - -struct SP_DRVINFO_DATA_V2_W { - DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - WCHAR Description[LINE_LEN]; - WCHAR MfgName[LINE_LEN]; - WCHAR ProviderName[LINE_LEN]; - FILETIME DriverDate; - DWORDLONG DriverVersion; -} -alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_V2_W; - -struct SP_DRVINFO_DATA_V1_A { - DWORD cbSize = SP_DRVINFO_DATA_V1_A.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - CHAR Description[LINE_LEN]; - CHAR MfgName[LINE_LEN]; - CHAR ProviderName[LINE_LEN]; -} -alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_V1_A; - -struct SP_DRVINFO_DATA_V1_W { - DWORD cbSize = SP_DRVINFO_DATA_V1_W.sizeof; - DWORD DriverType; - ULONG_PTR Reserved; - WCHAR Description[LINE_LEN]; - WCHAR MfgName[LINE_LEN]; - WCHAR ProviderName[LINE_LEN]; -} -alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_V1_W; - -version (Unicode) { - alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1; - alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2; -} else { - alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1; - alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2; -} -alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA_V1; -alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA_V2; - -static if(USE_SP_DRVINFO_DATA_V1) { - alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA; - alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA; -} else { - alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_A; - alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_W; - alias SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA; - alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA; -} - -extern(Windows) alias DWORD function(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINFO_DATA,PVOID) PSP_DETSIG_CMPPROC; - -struct SP_DRVINFO_DETAIL_DATA_A { - DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof; - FILETIME InfDate; - DWORD CompatIDsOffset; - DWORD CompatIDsLength; - ULONG_PTR Reserved; - CHAR SectionName[LINE_LEN]; - CHAR InfFileName[MAX_PATH]; - CHAR DrvDescription[LINE_LEN]; - CHAR _HardwareID[1]; - CHAR* HardwareID() { return _HardwareID.ptr; } -} -alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A; - -struct SP_DRVINFO_DETAIL_DATA_W { - DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof; - FILETIME InfDate; - DWORD CompatIDsOffset; - DWORD CompatIDsLength; - ULONG_PTR Reserved; - WCHAR SectionName[LINE_LEN]; - WCHAR InfFileName[MAX_PATH]; - WCHAR DrvDescription[LINE_LEN]; - WCHAR _HardwareID[1]; - WCHAR* HardwareID() { return _HardwareID.ptr; } -} -alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W; - -struct SP_DRVINSTALL_PARAMS { - DWORD cbSize = SP_DRVINSTALL_PARAMS.sizeof; - DWORD Rank; - DWORD Flags; - DWORD_PTR PrivateData; - DWORD Reserved; -} -alias SP_DRVINSTALL_PARAMS* PSP_DRVINSTALL_PARAMS; - -struct COINSTALLER_CONTEXT_DATA { - BOOL PostProcessing; - DWORD InstallResult; - PVOID PrivateData; -} -alias COINSTALLER_CONTEXT_DATA* PCOINSTALLER_CONTEXT_DATA; - -struct SP_CLASSIMAGELIST_DATA { - DWORD cbSize = SP_CLASSIMAGELIST_DATA.sizeof; - HIMAGELIST ImageList; - ULONG_PTR Reserved; -} -alias SP_CLASSIMAGELIST_DATA* PSP_CLASSIMAGELIST_DATA; - -struct SP_PROPSHEETPAGE_REQUEST { - DWORD cbSize = SP_PROPSHEETPAGE_REQUEST.sizeof; - DWORD PageRequested; - HDEVINFO DeviceInfoSet; - PSP_DEVINFO_DATA DeviceInfoData; -} -alias SP_PROPSHEETPAGE_REQUEST* PSP_PROPSHEETPAGE_REQUEST; - -struct SP_BACKUP_QUEUE_PARAMS_A { - DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_A.sizeof; - CHAR FullInfPath[MAX_PATH]; - INT FilenameOffset; -} -alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS_A; - -struct SP_BACKUP_QUEUE_PARAMS_W { - DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_W.sizeof; - WCHAR FullInfPath[MAX_PATH]; - INT FilenameOffset; -} -alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS_W; - -version (Unicode) { - alias SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO; - alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO; - alias FILEPATHS_W FILEPATHS; - alias FILEPATHS_W* PFILEPATHS; - alias SOURCE_MEDIA_W SOURCE_MEDIA; - alias SOURCE_MEDIA_W* PSOURCE_MEDIA; - alias CABINET_INFO_W CABINET_INFO; - alias CABINET_INFO_W* PCABINET_INFO; - alias FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO; - alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO; - alias SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS; - alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA; - deprecated { - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA; - } - alias SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINFO_LIST_DETAIL_DATA_W *PSP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS; - alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS; - alias SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS; - alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS; - alias SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA; - alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA; - alias SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS; - alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS; -} else { - alias SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO; - alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO; - alias FILEPATHS_A FILEPATHS; - alias FILEPATHS_A* PFILEPATHS; - alias SOURCE_MEDIA_A SOURCE_MEDIA; - alias SOURCE_MEDIA_A* PSOURCE_MEDIA; - alias CABINET_INFO_A CABINET_INFO; - alias CABINET_INFO_A* PCABINET_INFO; - alias FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO; - alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO; - alias SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS; - alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA; - deprecated { - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA; - alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA; - } - alias SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA; - alias SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS; - alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS; - alias SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS; - alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS; - alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS; - alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS; - alias SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA; - alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA; - alias SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS; - alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS; -} - -extern (Windows) { - BOOL SetupAddInstallSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT); - BOOL SetupAddInstallSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT); - BOOL SetupAddSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT); - BOOL SetupAddSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,UINT,PVOID,UINT); - BOOL SetupAddToDiskSpaceListA(HDSKSPC,PCSTR,LONGLONG,UINT,PVOID,UINT); - BOOL SetupAddToDiskSpaceListW(HDSKSPC,PCWSTR,LONGLONG,UINT,PVOID,UINT); - BOOL SetupAddToSourceListA(DWORD,PCSTR); - BOOL SetupAddToSourceListW(DWORD,PCWSTR); - BOOL SetupQuerySourceListA(DWORD,PCSTR**List,PUINT); - BOOL SetupQuerySourceListW(DWORD,PCWSTR**List,PUINT); - BOOL SetupFreeSourceListA(PCSTR**List,UINT); - BOOL SetupFreeSourceListW(PCWSTR**List,UINT); - BOOL SetupAdjustDiskSpaceListA(HDSKSPC,LPCSTR,LONGLONG,PVOID,UINT); - BOOL SetupAdjustDiskSpaceListW(HDSKSPC,LPCWSTR,LONGLONG,PVOID,UINT); - UINT SetupBackupErrorA(HWND,PCSTR,PCSTR,PCSTR,UINT,DWORD); - UINT SetupBackupErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD); - BOOL SetupCancelTemporary(); - BOOL SetupCloseFileQueue(HSPFILEQ); - VOID SetupCloseInfFile(HINF); - VOID SetupCloseLog(); - BOOL SetupCommitFileQueueA(HWND,HSPFILEQ,PSP_FILE_CALLBACK_A,PVOID); - BOOL SetupCommitFileQueueW(HWND,HSPFILEQ,PSP_FILE_CALLBACK_W,PVOID); - UINT SetupCopyErrorA(HWND,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,UINT,DWORD,PSTR,DWORD,PDWORD); - UINT SetupCopyErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD,PWSTR,DWORD,PDWORD); - BOOL SetupCopyOEMInfA(PCSTR,PCSTR,DWORD,DWORD,PSTR,DWORD,PDWORD,PSTR*); - BOOL SetupCopyOEMInfW(PCWSTR,PCWSTR,DWORD,DWORD,PWSTR,DWORD,PDWORD,PWSTR*); - HDSKSPC SetupCreateDiskSpaceListA(PVOID,DWORD,UINT); - HDSKSPC SetupCreateDiskSpaceListW(PVOID,DWORD,UINT); - DWORD SetupDecompressOrCopyFileA(PCSTR,PCSTR,PUINT); - DWORD SetupDecompressOrCopyFileW(PCWSTR,PCWSTR,PUINT); - UINT SetupDefaultQueueCallbackA(PVOID,UINT,UINT_PTR,UINT_PTR); - UINT SetupDefaultQueueCallbackW(PVOID,UINT,UINT_PTR,UINT_PTR); - UINT SetupDeleteErrorA(HWND,PCSTR,PCSTR,UINT,DWORD); - UINT SetupDeleteErrorW(HWND,PCWSTR,PCWSTR,UINT,DWORD); - BOOL SetupDestroyDiskSpaceList(HDSKSPC); - BOOL SetupDiAskForOEMDisk(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiBuildClassInfoList(DWORD,LPGUID,DWORD,PDWORD); - BOOL SetupDiBuildClassInfoListExA(DWORD,LPGUID,DWORD,PDWORD,PCSTR,PVOID); - BOOL SetupDiBuildClassInfoListExW(DWORD,LPGUID,DWORD,PDWORD,PCWSTR,PVOID); - BOOL SetupDiBuildDriverInfoList(HDEVINFO,PSP_DEVINFO_DATA,DWORD); - BOOL SetupDiCallClassInstaller(DI_FUNCTION,HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiCancelDriverInfoSearch(HDEVINFO); - BOOL SetupDiChangeState(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiClassGuidsFromNameA(PCSTR,LPGUID,DWORD,PDWORD); - BOOL SetupDiClassGuidsFromNameW(PCWSTR,LPGUID,DWORD,PDWORD); - BOOL SetupDiClassGuidsFromNameExA(PCSTR,LPGUID,DWORD,PDWORD,PCSTR,PVOID); - BOOL SetupDiClassGuidsFromNameExW(PCWSTR,LPGUID,DWORD,PDWORD,PCWSTR,PVOID); - BOOL SetupDiClassNameFromGuidA(CPtr!(GUID),PSTR,DWORD,PDWORD); - BOOL SetupDiClassNameFromGuidW(CPtr!(GUID),PWSTR,DWORD,PDWORD); - BOOL SetupDiClassNameFromGuidExA(CPtr!(GUID),PSTR,DWORD,PDWORD,PCSTR,PVOID); - BOOL SetupDiClassNameFromGuidExW(CPtr!(GUID),PWSTR,DWORD,PDWORD,PCWSTR,PVOID); - BOOL SetupDiCreateDeviceInfoA(HDEVINFO,PCSTR,CPtr!(GUID),PCSTR,HWND,DWORD,PSP_DEVINFO_DATA); - BOOL SetupDiCreateDeviceInfoW(HDEVINFO,PCWSTR,CPtr!(GUID),PCWSTR,HWND,DWORD,PSP_DEVINFO_DATA); - HDEVINFO SetupDiCreateDeviceInfoList(CPtr!(GUID),HWND); - HDEVINFO SetupDiCreateDeviceInfoListExA(CPtr!(GUID),HWND,PCSTR,PVOID); - HDEVINFO SetupDiCreateDeviceInfoListExW(CPtr!(GUID),HWND,PCWSTR,PVOID); - BOOL SetupDiCreateDeviceInterfaceA(HDEVINFO,PSP_DEVINFO_DATA,CPtr!(GUID),PCSTR,DWORD,PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiCreateDeviceInterfaceW(HDEVINFO,PSP_DEVINFO_DATA,CPtr!(GUID),PCWSTR,DWORD,PSP_DEVICE_INTERFACE_DATA); - HKEY SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM,HINF,PCSTR); - HKEY SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM,HINF,PCWSTR); - HKEY SetupDiCreateDevRegKeyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,HINF,PCSTR); - HKEY SetupDiCreateDevRegKeyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,HINF,PCWSTR); - BOOL SetupDiDeleteDeviceInfo(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiDeleteDeviceInterfaceData(HDEVINFO,PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD); - BOOL SetupDiDeleteDevRegKey(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD); - BOOL SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA); - BOOL SetupDiDestroyDeviceInfoList(HDEVINFO); - BOOL SetupDiDestroyDriverInfoList(HDEVINFO,PSP_DEVINFO_DATA,DWORD); - INT SetupDiDrawMiniIcon(HDC,RECT,INT,DWORD); - BOOL SetupDiEnumDeviceInfo(HDEVINFO,DWORD,PSP_DEVINFO_DATA); - BOOL SetupDiEnumDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA,CPtr!(GUID),DWORD,PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiEnumDriverInfoA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_A); - BOOL SetupDiEnumDriverInfoW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_W); - BOOL SetupDiGetActualSectionToInstallA(HINF,PCSTR,PSTR,DWORD,PDWORD,PSTR*); - BOOL SetupDiGetActualSectionToInstallW(HINF,PCWSTR,PWSTR,DWORD,PDWORD,PWSTR*); - BOOL SetupDiGetClassBitmapIndex(CPtr!(GUID),PINT); - BOOL SetupDiGetClassDescriptionA(CPtr!(GUID),PSTR,DWORD,PDWORD); - BOOL SetupDiGetClassDescriptionW(CPtr!(GUID),PWSTR,DWORD,PDWORD); - BOOL SetupDiGetClassDescriptionExA(CPtr!(GUID),PSTR,DWORD,PDWORD,PCSTR,PVOID); - BOOL SetupDiGetClassDescriptionExW(CPtr!(GUID),PWSTR,DWORD,PDWORD,PCWSTR,PVOID); - BOOL SetupDiGetClassDevPropertySheetsA(HDEVINFO,PSP_DEVINFO_DATA,LPPROPSHEETHEADERA,DWORD,PDWORD,DWORD); - BOOL SetupDiGetClassDevPropertySheetsW(HDEVINFO,PSP_DEVINFO_DATA,LPPROPSHEETHEADERW,DWORD,PDWORD,DWORD); - HDEVINFO SetupDiGetClassDevsA(CPtr!(GUID),PCSTR,HWND,DWORD); - HDEVINFO SetupDiGetClassDevsW(CPtr!(GUID),PCWSTR,HWND,DWORD); - HDEVINFO SetupDiGetClassDevsExA(CPtr!(GUID),PCSTR,HWND,DWORD,HDEVINFO,PCSTR,PVOID); - HDEVINFO SetupDiGetClassDevsExW(CPtr!(GUID),PCWSTR,HWND,DWORD,HDEVINFO,PCWSTR,PVOID); - BOOL SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA,CPtr!(GUID),PINT); - BOOL SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA); - BOOL SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA,PCSTR,PVOID); - BOOL SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA,PCWSTR,PVOID); - BOOL SetupDiGetClassInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD,PDWORD); - BOOL SetupDiGetClassInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD,PDWORD); - BOOL SetupDiGetClassRegistryPropertyA(LPGUID,DWORD,PDWORD,PBYTE,DWORD,PDWORD,PCSTR,PVOID); - BOOL SetupDiGetClassRegistryPropertyW(LPGUID,DWORD,PDWORD,PBYTE,DWORD,PDWORD,PCWSTR,PVOID); - BOOL SetupDiGetDeviceInfoListClass(HDEVINFO,LPGUID); - BOOL SetupDiGetDeviceInfoListDetailA(HDEVINFO,PSP_DEVINFO_LIST_DETAIL_DATA_A); - BOOL SetupDiGetDeviceInfoListDetailW(HDEVINFO,PSP_DEVINFO_LIST_DETAIL_DATA_W); - BOOL SetupDiGetDeviceInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_A); - BOOL SetupDiGetDeviceInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_W); - BOOL SetupDiGetDeviceInstanceIdA(HDEVINFO,PSP_DEVINFO_DATA,PSTR,DWORD,PDWORD); - BOOL SetupDiGetDeviceInstanceIdW(HDEVINFO,PSP_DEVINFO_DATA,PWSTR,DWORD,PDWORD); - BOOL SetupDiGetDeviceInterfaceAlias(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,CPtr!(GUID),PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiGetDeviceInterfaceDetailA(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,PSP_DEVICE_INTERFACE_DETAIL_DATA_A,DWORD,PDWORD,PSP_DEVINFO_DATA); - BOOL SetupDiGetDeviceInterfaceDetailW(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,PSP_DEVICE_INTERFACE_DETAIL_DATA_W,DWORD,PDWORD,PSP_DEVINFO_DATA); - BOOL SetupDiGetDeviceRegistryPropertyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PDWORD,PBYTE,DWORD,PDWORD); - BOOL SetupDiGetDeviceRegistryPropertyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PDWORD,PBYTE,DWORD,PDWORD); - BOOL SetupDiGetDriverInfoDetailA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINFO_DETAIL_DATA_A,DWORD,PDWORD); - BOOL SetupDiGetDriverInfoDetailW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINFO_DETAIL_DATA_W,DWORD,PDWORD); - BOOL SetupDiGetDriverInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINSTALL_PARAMS); - BOOL SetupDiGetDriverInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINSTALL_PARAMS); - BOOL SetupDiGetHwProfileFriendlyNameA(DWORD,PSTR,DWORD,PDWORD); - BOOL SetupDiGetHwProfileFriendlyNameExA(DWORD,PSTR,DWORD,PDWORD,PCSTR,PVOID); - BOOL SetupDiGetHwProfileFriendlyNameExW(DWORD,PWSTR,DWORD,PDWORD,PCWSTR,PVOID); - BOOL SetupDiGetHwProfileFriendlyNameW(DWORD,PWSTR,DWORD,PDWORD); - BOOL SetupDiGetHwProfileList(PDWORD,DWORD,PDWORD,PDWORD); - BOOL SetupDiGetHwProfileListExA(PDWORD,DWORD,PDWORD,PDWORD,PCSTR,PVOID); - BOOL SetupDiGetHwProfileListExW(PDWORD,DWORD,PDWORD,PDWORD,PCWSTR,PVOID); - BOOL SetupDiGetINFClassA(PCSTR,LPGUID,PSTR,DWORD,PDWORD); - BOOL SetupDiGetINFClassW(PCWSTR,LPGUID,PWSTR,DWORD,PDWORD); - BOOL SetupDiGetSelectedDevice(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiGetSelectedDriverA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A); - BOOL SetupDiGetSelectedDriverW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W); - HPROPSHEETPAGE SetupDiGetWizardage(HDEVINFO,PSP_DEVINFO_DATA,PSP_INSTALLWIZARD_DATA,DWORD,DWORD); - BOOL SetupDiInstallClassA(HWND,PCSTR,DWORD,HSPFILEQ); - BOOL SetupDiInstallClassW(HWND,PCWSTR,DWORD,HSPFILEQ); - BOOL SetupDiInstallClassExA(HWND,PCSTR,DWORD,HSPFILEQ,CPtr!(GUID),PVOID,PVOID); - BOOL SetupDiInstallClassExW(HWND,PCWSTR,DWORD,HSPFILEQ,CPtr!(GUID),PVOID,PVOID); - BOOL SetupDiInstallDevice(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiInstallDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiInstallDriverFiles(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiLoadClassIcon(CPtr!(GUID),HICON*,PINT); - BOOL SetupDiMoveDuplicateDevice(HDEVINFO,PSP_DEVINFO_DATA); - HKEY SetupDiOpenClassRegKey(CPtr!(GUID),REGSAM); - HKEY SetupDiOpenClassRegKeyExA(CPtr!(GUID),REGSAM,DWORD,PCSTR,PVOID); - HKEY SetupDiOpenClassRegKeyExW(CPtr!(GUID),REGSAM,DWORD,PCWSTR,PVOID); - BOOL SetupDiOpenDeviceInfoA(HDEVINFO,PCSTR,HWND,DWORD,PSP_DEVINFO_DATA); - BOOL SetupDiOpenDeviceInfoW(HDEVINFO,PCWSTR,HWND,DWORD,PSP_DEVINFO_DATA); - BOOL SetupDiOpenDeviceInterfaceA(HDEVINFO,PCSTR,DWORD,PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiOpenDeviceInterfaceW(HDEVINFO,PCWSTR,DWORD,PSP_DEVICE_INTERFACE_DATA); - HKEY SetupDiOpenDeviceInterfaceRegKey(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM); - HKEY SetupDiOpenDevRegKey(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,REGSAM); - BOOL SetupDiRegisterCoDeviceInstallers(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiRegisterDeviceInfo(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PSP_DETSIG_CMPPROC,PVOID,PSP_DEVINFO_DATA); - BOOL SetupDiRemoveDevice(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiRemoveDeviceInterface(HDEVINFO,PSP_DEVICE_INTERFACE_DATA); - BOOL SetupDiSelectBestCompatDrv(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiSelectDevice(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiSelectOEMDrv(HWND,HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiSetClassInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD); - BOOL SetupDiSetClassInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD); - BOOL SetupDiSetClassRegistryPropertyA(LPGUID,DWORD,CPtr!(BYTE),DWORD,PCSTR,PVOID); - BOOL SetupDiSetClassRegistryPropertyW(LPGUID,DWORD,CPtr!(BYTE),DWORD,PCWSTR,PVOID); - BOOL SetupDiSetDeviceInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_A); - BOOL SetupDiSetDeviceInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_W); - BOOL SetupDiSetDeviceRegistryPropertyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,CPtr!(BYTE),DWORD); - BOOL SetupDiSetDeviceRegistryPropertyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,CPtr!(BYTE),DWORD); - BOOL SetupDiSetDriverInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINSTALL_PARAMS); - BOOL SetupDiSetDriverInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINSTALL_PARAMS); - BOOL SetupDiSetSelectedDevice(HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupDiSetSelectedDriverA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A); - BOOL SetupDiSetSelectedDriverW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W); - BOOL SetupDiUnremoveDevice(HDEVINFO,PSP_DEVINFO_DATA); - HDSKSPC SetupDuplicateDiskSpaceListA(HDSKSPC,PVOID,DWORD,UINT); - HDSKSPC SetupDuplicateDiskSpaceListW(HDSKSPC,PVOID,DWORD,UINT); - BOOL SetupFindFirstLineA(HINF,PCSTR,PCSTR,PINFCONTEXT); - BOOL SetupFindFirstLineW(HINF,PCWSTR,PCWSTR,PINFCONTEXT); - BOOL SetupFindNextLine(PINFCONTEXT,PINFCONTEXT); - BOOL SetupFindNextMatchLineA(PINFCONTEXT,PCSTR,PINFCONTEXT); - BOOL SetupFindNextMatchLineW(PINFCONTEXT,PCWSTR,PINFCONTEXT); - BOOL SetupFreeA(PCSTR**,UINT); - BOOL SetupFreeW(PCWSTR**,UINT); - BOOL SetupGetBackupInformationA(HSPFILEQ,PSP_BACKUP_QUEUE_PARAMS_A); - BOOL SetupGetBackupInformationW(HSPFILEQ,PSP_BACKUP_QUEUE_PARAMS_W); - BOOL SetupGetBinaryField(PINFCONTEXT,DWORD,PBYTE,DWORD,LPDWORD); - DWORD SetupGetFieldCount(PINFCONTEXT); - DWORD SetupGetFileCompressionInfoA(PCSTR,PSTR*,PDWORD,PDWORD,PUINT); - DWORD SetupGetFileCompressionInfoW(PCWSTR,PWSTR*,PDWORD,PDWORD,PUINT); - BOOL SetupGetInfFileListA(PCSTR,DWORD,PSTR,DWORD,PDWORD); - BOOL SetupGetInfFileListW(PCWSTR,DWORD,PWSTR,DWORD,PDWORD); - BOOL SetupGetInfInformationA(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD); - BOOL SetupGetInfInformationW(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD); - BOOL SetupGetIntField(PINFCONTEXT,DWORD,PINT); - BOOL SetupGetLineByIndexA(HINF,PCSTR,DWORD,PINFCONTEXT); - BOOL SetupGetLineByIndexW(HINF,PCWSTR,DWORD,PINFCONTEXT); - LONG SetupGetLineCountA(HINF,PCSTR); - LONG SetupGetLineCountW(HINF,PCWSTR); - BOOL SetupGetLineTextA(PINFCONTEXT,HINF,PCSTR,PCSTR,PSTR,DWORD,PDWORD); - BOOL SetupGetLineTextW(PINFCONTEXT,HINF,PCWSTR,PCWSTR,PWSTR,DWORD,PDWORD); - BOOL SetupGetMultiSzFieldA(PINFCONTEXT,DWORD,PSTR,DWORD,LPDWORD); - BOOL SetupGetMultiSzFieldW(PINFCONTEXT,DWORD,PWSTR,DWORD,LPDWORD); - BOOL SetupGetSourceFileLocationA(HINF,PINFCONTEXT,PCSTR,PUINT,PSTR,DWORD,PDWORD); - BOOL SetupGetSourceFileLocationW(HINF,PINFCONTEXT,PCWSTR,PUINT,PWSTR,DWORD,PDWORD); - BOOL SetupGetSourceFileSizeA(HINF,PINFCONTEXT,PCSTR,PCSTR,PDWORD,UINT); - BOOL SetupGetSourceFileSizeW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PDWORD,UINT); - BOOL SetupGetSourceInfoA(HINF,UINT,UINT,PSTR,DWORD,PDWORD); - BOOL SetupGetSourceInfoW(HINF,UINT,UINT,PWSTR,DWORD,PDWORD); - BOOL SetupGetStringFieldA(PINFCONTEXT,DWORD,PSTR,DWORD,PDWORD); - BOOL SetupGetStringFieldW(PINFCONTEXT,DWORD,PWSTR,DWORD,PDWORD); - BOOL SetupGetTargetPathA(HINF,PINFCONTEXT,PCSTR,PSTR,DWORD,PDWORD); - BOOL SetupGetTargetPathW(HINF,PINFCONTEXT,PCWSTR,PWSTR,DWORD,PDWORD); - PVOID SetupInitDefaultQueueCallback(HWND); - PVOID SetupInitDefaultQueueCallbackEx(HWND,HWND,UINT,DWORD,PVOID); - HSPFILELOG SetupInitializeFileLogA(PCSTR,DWORD); - HSPFILELOG SetupInitializeFileLogW(PCWSTR,DWORD); - BOOL SetupInstallFileA(HINF,PINFCONTEXT,PCSTR,PCSTR,PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID); - BOOL SetupInstallFileW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID); - BOOL SetupInstallFileExA(HINF,PINFCONTEXT,PCSTR,PCSTR,PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID,PBOOL); - BOOL SetupInstallFileExW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID,PBOOL); - BOOL SetupInstallFilesFromInfSectionA(HINF,HINF,HSPFILEQ,PCSTR,PCSTR,UINT); - BOOL SetupInstallFilesFromInfSectionW(HINF,HINF,HSPFILEQ,PCWSTR,PCWSTR,UINT); - BOOL SetupInstallFromInfSectionA(HWND,HINF,PCSTR,UINT,HKEY,PCSTR,UINT,PSP_FILE_CALLBACK_A,PVOID,HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupInstallFromInfSectionW(HWND,HINF,PCWSTR,UINT,HKEY,PCWSTR,UINT,PSP_FILE_CALLBACK_W,PVOID,HDEVINFO,PSP_DEVINFO_DATA); - BOOL SetupInstallServicesFromInfSectionA(HINF,PCSTR,DWORD); - BOOL SetupInstallServicesFromInfSectionW(HINF,PCWSTR,DWORD); - BOOL SetupInstallServicesFromInfSectionExA(HINF,PCSTR,DWORD,HDEVINFO,PSP_DEVINFO_DATA,PVOID,PVOID); - BOOL SetupInstallServicesFromInfSectionExW(HINF,PCWSTR,DWORD,HDEVINFO,PSP_DEVINFO_DATA,PVOID,PVOID); - BOOL SetupIterateCabinetA(PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID); - BOOL SetupIterateCabinetW(PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID); - BOOL SetupLogErrorA(LPCSTR,LogSeverity); - BOOL SetupLogErrorW(LPCWSTR,LogSeverity); - BOOL SetupLogFileA(HSPFILELOG,PCSTR,PCSTR,PCSTR,DWORD,PCSTR,PCSTR,PCSTR,DWORD); - BOOL SetupLogFileW(HSPFILELOG,PCWSTR,PCWSTR,PCWSTR,DWORD,PCWSTR,PCWSTR,PCWSTR,DWORD); - BOOL SetupOpenAppendInfFileA(PCSTR,HINF,PUINT); - BOOL SetupOpenAppendInfFileW(PCWSTR,HINF,PUINT); - HSPFILEQ SetupOpenFileQueue(); - HINF SetupOpenInfFileA(PCSTR,PCSTR,DWORD,PUINT); - HINF SetupOpenInfFileW(PCWSTR,PCWSTR,DWORD,PUINT); - BOOL SetupOpenLog(BOOL); - HINF SetupOpenMasterInf(); - UINT SetupPromptForDiskA(HWND,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD,PSTR,DWORD,PDWORD); - UINT SetupPromptForDiskW(HWND,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD,PWSTR,DWORD,PDWORD); - INT SetupPromptReboot(HSPFILEQ,HWND,BOOL); - BOOL SetupQueryA(DWORD,PCSTR**,PUINT); - BOOL SetupQueryW(DWORD,PCWSTR**,PUINT); - BOOL SetupQueryDrivesInDiskSpaceListA(HDSKSPC,PSTR,DWORD,PDWORD); - BOOL SetupQueryDrivesInDiskSpaceListW(HDSKSPC,PWSTR,DWORD,PDWORD); - BOOL SetupQueryFileLogA(HSPFILELOG,PCSTR,PCSTR,SetupFileLogInfo,PSTR,DWORD,PDWORD); - BOOL SetupQueryFileLogW(HSPFILELOG,PCWSTR,PCWSTR,SetupFileLogInfo,PWSTR,DWORD,PDWORD); - BOOL SetupQueryInfFileInformationA(PSP_INF_INFORMATION,UINT,PSTR,DWORD,PDWORD); - BOOL SetupQueryInfFileInformationW(PSP_INF_INFORMATION,UINT,PWSTR,DWORD,PDWORD); - BOOL SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION,UINT,PSP_ALTPLATFORM_INFO,PSP_ORIGINAL_FILE_INFO_A); - BOOL SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION,UINT,PSP_ALTPLATFORM_INFO,PSP_ORIGINAL_FILE_INFO_W); - BOOL SetupQueryInfVersionInformationA(PSP_INF_INFORMATION,UINT,PSTR,PSTR,DWORD,PDWORD); - BOOL SetupQueryInfVersionInformationW(PSP_INF_INFORMATION,UINT,PCWSTR,PWSTR,DWORD,PDWORD); - BOOL SetupQuerySpaceRequiredOnDriveA(HDSKSPC,PCSTR,LONGLONG*,PVOID,UINT); - BOOL SetupQuerySpaceRequiredOnDriveW(HDSKSPC,PCWSTR,LONGLONG*,PVOID,UINT); - BOOL SetupQueueCopyA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD); - BOOL SetupQueueCopyW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD); - BOOL SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A); - BOOL SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W); - BOOL SetupQueueCopySectionA(HSPFILEQ,PCSTR,HINF,HINF,PCSTR,DWORD); - BOOL SetupQueueCopySectionW(HSPFILEQ,PCWSTR,HINF,HINF,PCWSTR,DWORD); - BOOL SetupQueueDefaultCopyA(HSPFILEQ,HINF,PCSTR,PCSTR,PCSTR,DWORD); - BOOL SetupQueueDefaultCopyW(HSPFILEQ,HINF,PCWSTR,PCWSTR,PCWSTR,DWORD); - BOOL SetupQueueDeleteA(HSPFILEQ,PCSTR,PCSTR); - BOOL SetupQueueDeleteW(HSPFILEQ,PCWSTR,PCWSTR); - BOOL SetupQueueDeleteSectionA(HSPFILEQ,HINF,HINF,PCSTR); - BOOL SetupQueueDeleteSectionW(HSPFILEQ,HINF,HINF,PCWSTR); - BOOL SetupQueueRenameA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR); - BOOL SetupQueueRenameW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR); - BOOL SetupQueueRenameSectionA(HSPFILEQ,HINF,HINF,PCSTR); - BOOL SetupQueueRenameSectionW(HSPFILEQ,HINF,HINF,PCWSTR); - BOOL SetupRemoveFileLogEntryA(HSPFILELOG,PCSTR,PCSTR); - BOOL SetupRemoveFileLogEntryW(HSPFILELOG,PCWSTR,PCWSTR); - BOOL SetupRemoveFromDiskSpaceListA(HDSKSPC,PCSTR,UINT,PVOID,UINT); - BOOL SetupRemoveFromDiskSpaceListW(HDSKSPC,PCWSTR,UINT,PVOID,UINT); - BOOL SetupRemoveFromSourceListA(DWORD,PCSTR); - BOOL SetupRemoveFromSourceListW(DWORD,PCWSTR); - BOOL SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT); - BOOL SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT); - BOOL SetupRemoveSectionFromDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT); - BOOL SetupRemoveSectionFromDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,UINT,PVOID,UINT); - UINT SetupRenameErrorA(HWND,PCSTR,PCSTR,PCSTR,UINT,DWORD); - UINT SetupRenameErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD); - BOOL SetupScanFileQueueA(HSPFILEQ,DWORD,HWND,PSP_FILE_CALLBACK_A,PVOID,PDWORD); - BOOL SetupScanFileQueueW(HSPFILEQ,DWORD,HWND,PSP_FILE_CALLBACK_W,PVOID,PDWORD); - BOOL SetupSetDirectoryIdA(HINF,DWORD,PCSTR); - BOOL SetupSetDirectoryIdW(HINF,DWORD,PCWSTR); - BOOL SetupSetDirectoryIdExA(HINF,DWORD,PCSTR,DWORD,DWORD,PVOID); - BOOL SetupSetDirectoryIdExW(HINF,DWORD,PCWSTR,DWORD,DWORD,PVOID); - BOOL SetupSetFileQueueAlternatePlatformA(HSPFILEQ,PSP_ALTPLATFORM_INFO,PCSTR); - BOOL SetupSetFileQueueAlternatePlatformW(HSPFILEQ,PSP_ALTPLATFORM_INFO,PCWSTR); - BOOL SetupSetPlatformPathOverrideA(PCSTR); - BOOL SetupSetPlatformPathOverrideW(PCWSTR); - BOOL SetupSetSourceListA(DWORD,PCSTR*,UINT); - BOOL SetupSetSourceListW(DWORD,PCWSTR*,UINT); - VOID SetupTermDefaultQueueCallback(PVOID); - BOOL SetupTerminateFileLog(HSPFILELOG); -} - -deprecated { - alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDeviceW; - alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKeyW; - alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDeviceW; - alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetailW; - alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDeviceA; - alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKeyA; - alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDeviceA; - alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetailA; -} - -version (Unicode) { - alias PSP_FILE_CALLBACK_W PSP_FILE_CALLBACK; - alias SetupAddInstallSectionToDiskSpaceListW SetupAddInstallSectionToDiskSpaceList; - alias SetupAddSectionToDiskSpaceListW SetupAddSectionToDiskSpaceList; - alias SetupAddToDiskSpaceListW SetupAddToDiskSpaceList; - alias SetupAddToSourceListW SetupAddToSourceList; - alias SetupAdjustDiskSpaceListW SetupAdjustDiskSpaceList; - alias SetupBackupErrorW SetupBackupError; - alias SetupCommitFileQueueW SetupCommitFileQueue; - alias SetupCopyErrorW SetupCopyError; - alias SetupCopyOEMInfW SetupCopyOEMInf; - alias SetupCreateDiskSpaceListW SetupCreateDiskSpaceList; - alias SetupDecompressOrCopyFileW SetupDecompressOrCopyFile; - alias SetupDefaultQueueCallbackW SetupDefaultQueueCallback; - alias SetupDeleteErrorW SetupDeleteError; - alias SetupDiBuildClassInfoListExW SetupDiBuildClassInfoListEx; - alias SetupDiClassGuidsFromNameExW SetupDiClassGuidsFromNameEx; - alias SetupDiClassGuidsFromNameW SetupDiClassGuidsFromName; - alias SetupDiClassNameFromGuidExW SetupDiClassNameFromGuidEx; - alias SetupDiClassNameFromGuidW SetupDiClassNameFromGuid; - alias SetupDiCreateDeviceInfoListExW SetupDiCreateDeviceInfoListEx; - alias SetupDiCreateDeviceInfoW SetupDiCreateDeviceInfo; - alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateDeviceInterfaceRegKey; - deprecated alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKey; - alias SetupDiCreateDeviceInterfaceW SetupDiCreateDeviceInterface; - deprecated alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDevice; - alias SetupDiCreateDevRegKeyW SetupDiCreateDevRegKey; - alias SetupDiEnumDriverInfoW SetupDiEnumDriverInfo; - alias SetupDiGetActualSectionToInstallW SetupDiGetActualSectionToInstall; - alias SetupDiGetClassDescriptionExW SetupDiGetClassDescriptionEx; - alias SetupDiGetClassDescriptionW SetupDiGetClassDescription; - alias SetupDiGetClassDevPropertySheetsW SetupDiGetClassDevPropertySheets; - alias SetupDiGetClassDevsExW SetupDiGetClassDevsEx; - alias SetupDiGetClassDevsW SetupDiGetClassDevs; - alias SetupDiGetClassImageListExW SetupDiGetClassImageListEx; - alias SetupDiGetClassInstallParamsW SetupDiGetClassInstallParams; - alias SetupDiGetClassRegistryPropertyW SetupDiGetClassRegistryProperty; - alias SetupDiGetDeviceInfoListDetailW SetupDiGetDeviceInfoListDetail; - alias SetupDiGetDeviceInstallParamsW SetupDiGetDeviceInstallParams; - alias SetupDiGetDeviceInstanceIdW SetupDiGetDeviceInstanceId; - alias SetupDiGetDeviceInterfaceDetailW SetupDiGetDeviceInterfaceDetail; - deprecated alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetail; - alias SetupDiGetDeviceRegistryPropertyW SetupDiGetDeviceRegistryProperty; - alias SetupDiGetDriverInfoDetailW SetupDiGetDriverInfoDetail; - alias SetupDiGetDriverInstallParamsW SetupDiGetDriverInstallParams; - alias SetupDiGetHwProfileFriendlyNameExW SetupDiGetHwProfileFriendlyNameEx; - alias SetupDiGetHwProfileFriendlyNameW SetupDiGetHwProfileFriendlyName; - alias SetupDiGetHwProfileListExW SetupDiGetHwProfileListEx; - alias SetupDiGetINFClassW SetupDiGetINFClass; - alias SetupDiGetSelectedDriverW SetupDiGetSelectedDriver; - alias SetupDiInstallClassExW SetupDiInstallClassEx; - alias SetupDiInstallClassW SetupDiInstallClass; - alias SetupDiOpenClassRegKeyExW SetupDiOpenClassRegKeyEx; - alias SetupDiOpenDeviceInfoW SetupDiOpenDeviceInfo; - alias SetupDiOpenDeviceInterfaceW SetupDiOpenDeviceInterface; - deprecated alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDevice; - alias SetupDiSetClassInstallParamsW SetupDiSetClassInstallParams; - alias SetupDiSetClassRegistryPropertyW SetupDiSetClassRegistryProperty; - alias SetupDiSetDeviceInstallParamsW SetupDiSetDeviceInstallParams; - alias SetupDiSetDeviceRegistryPropertyW SetupDiSetDeviceRegistryProperty; - alias SetupDiSetDriverInstallParamsW SetupDiSetDriverInstallParams; - alias SetupDiSetSelectedDriverW SetupDiSetSelectedDriver; - alias SetupDuplicateDiskSpaceListW SetupDuplicateDiskSpaceList; - alias SetupFindFirstLineW SetupFindFirstLine; - alias SetupFindNextMatchLineW SetupFindNextMatchLine; - alias SetupFreeSourceListW SetupFreeSourceList; - alias SetupGetBackupInformationW SetupGetBackupInformation; - alias SetupGetFileCompressionInfoW SetupGetFileCompressionInfo; - alias SetupGetInfFileListW SetupGetInfFileList; - alias SetupGetInfInformationW SetupGetInfInformation; - alias SetupGetLineByIndexW SetupGetLineByIndex; - alias SetupGetLineCountW SetupGetLineCount; - alias SetupGetLineTextW SetupGetLineText; - alias SetupGetMultiSzFieldW SetupGetMultiSzField; - alias SetupGetSourceFileLocationW SetupGetSourceFileLocation; - alias SetupGetSourceFileSizeW SetupGetSourceFileSize; - alias SetupGetSourceInfoW SetupGetSourceInfo; - alias SetupGetStringFieldW SetupGetStringField; - alias SetupGetTargetPathW SetupGetTargetPath; - alias SetupInitializeFileLogW SetupInitializeFileLog; - alias SetupInstallFileExW SetupInstallFileEx; - alias SetupInstallFilesFromInfSectionW SetupInstallFilesFromInfSection; - alias SetupInstallFileW SetupInstallFile; - alias SetupInstallFromInfSectionW SetupInstallFromInfSection; - alias SetupInstallServicesFromInfSectionExW SetupInstallServicesFromInfSectionEx; - alias SetupInstallServicesFromInfSectionW SetupInstallServicesFromInfSection; - alias SetupIterateCabinetW SetupIterateCabinet; - alias SetupLogErrorW SetupLogError; - alias SetupLogFileW SetupLogFile; - alias SetupOpenAppendInfFileW SetupOpenAppendInfFile; - alias SetupOpenInfFileW SetupOpenInfFile; - alias SetupPromptForDiskW SetupPromptForDisk; - alias SetupQueryDrivesInDiskSpaceListW SetupQueryDrivesInDiskSpaceList; - alias SetupQueryFileLogW SetupQueryFileLog; - alias SetupQueryInfFileInformationW SetupQueryInfFileInformation; - alias SetupQueryInfOriginalFileInformationW SetupQueryInfOriginalFileInformation; - alias SetupQueryInfVersionInformationW SetupQueryInfVersionInformation; - alias SetupQuerySourceListW SetupQuerySourceList; - alias SetupQuerySpaceRequiredOnDriveW SetupQuerySpaceRequiredOnDrive; - alias SetupQueueCopyIndirectW SetupQueueCopyIndirect; - alias SetupQueueCopySectionW SetupQueueCopySection; - alias SetupQueueCopyW SetupQueueCopy; - alias SetupQueueDefaultCopyW SetupQueueDefaultCopy; - alias SetupQueueDeleteSectionW SetupQueueDeleteSection; - alias SetupQueueDeleteW SetupQueueDelete; - alias SetupQueueRenameSectionW SetupQueueRenameSection; - alias SetupQueueRenameW SetupQueueRename; - alias SetupRemoveFileLogEntryW SetupRemoveFileLogEntry; - alias SetupRemoveFromDiskSpaceListW SetupRemoveFromDiskSpaceList; - alias SetupRemoveFromSourceListW SetupRemoveFromSourceList; - alias SetupRemoveInstallSectionFromDiskSpaceListW SetupRemoveInstallSectionFromDiskSpaceList; - alias SetupRemoveSectionFromDiskSpaceListW SetupRemoveSectionFromDiskSpaceList; - alias SetupRenameErrorW SetupRenameError; - alias SetupScanFileQueueW SetupScanFileQueue; - alias SetupSetDirectoryIdExW SetupSetDirectoryIdEx; - alias SetupSetDirectoryIdW SetupSetDirectoryId; - alias SetupSetFileQueueAlternatePlatformW SetupSetFileQueueAlternatePlatform; - alias SetupSetPlatformPathOverrideW SetupSetPlatformPathOverride; - alias SetupSetSourceListW SetupSetSourceList; -} else { - alias PSP_FILE_CALLBACK_A PSP_FILE_CALLBACK; - alias SetupAddInstallSectionToDiskSpaceListA SetupAddInstallSectionToDiskSpaceList; - alias SetupAddSectionToDiskSpaceListA SetupAddSectionToDiskSpaceList; - alias SetupAddToDiskSpaceListA SetupAddToDiskSpaceList; - alias SetupAddToSourceListA SetupAddToSourceList; - alias SetupAdjustDiskSpaceListA SetupAdjustDiskSpaceList; - alias SetupBackupErrorA SetupBackupError; - alias SetupCommitFileQueueA SetupCommitFileQueue; - alias SetupCopyErrorA SetupCopyError; - alias SetupCopyOEMInfA SetupCopyOEMInf; - alias SetupCreateDiskSpaceListA SetupCreateDiskSpaceList; - alias SetupDecompressOrCopyFileA SetupDecompressOrCopyFile; - alias SetupDefaultQueueCallbackA SetupDefaultQueueCallback; - alias SetupDeleteErrorA SetupDeleteError; - alias SetupDiBuildClassInfoListExA SetupDiBuildClassInfoListEx; - alias SetupDiClassGuidsFromNameA SetupDiClassGuidsFromName; - alias SetupDiClassGuidsFromNameExA SetupDiClassGuidsFromNameEx; - alias SetupDiClassNameFromGuidA SetupDiClassNameFromGuid; - alias SetupDiClassNameFromGuidExA SetupDiClassNameFromGuidEx; - alias SetupDiCreateDeviceInfoA SetupDiCreateDeviceInfo; - alias SetupDiCreateDeviceInfoListExA SetupDiCreateDeviceInfoListEx; - alias SetupDiCreateDeviceInterfaceA SetupDiCreateDeviceInterface; - deprecated alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDevice; - alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateDeviceInterfaceRegKey; - deprecated alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKey; - alias SetupDiCreateDevRegKeyA SetupDiCreateDevRegKey; - alias SetupDiDeleteDeviceInterfaceData SetupDiDeleteInterfaceDeviceData; - alias SetupDiEnumDriverInfoA SetupDiEnumDriverInfo; - alias SetupDiGetActualSectionToInstallA SetupDiGetActualSectionToInstall; - alias SetupDiGetClassDescriptionA SetupDiGetClassDescription; - alias SetupDiGetClassDescriptionExA SetupDiGetClassDescriptionEx; - alias SetupDiGetClassDevPropertySheetsA SetupDiGetClassDevPropertySheets; - alias SetupDiGetClassDevsA SetupDiGetClassDevs; - alias SetupDiGetClassDevsExA SetupDiGetClassDevsEx; - alias SetupDiGetClassImageListExA SetupDiGetClassImageListEx; - alias SetupDiGetClassInstallParamsA SetupDiGetClassInstallParams; - alias SetupDiGetClassRegistryPropertyA SetupDiGetClassRegistryProperty; - alias SetupDiGetDeviceInfoListDetailA SetupDiGetDeviceInfoListDetail; - alias SetupDiGetDeviceInstallParamsA SetupDiGetDeviceInstallParams; - alias SetupDiGetDeviceInstanceIdA SetupDiGetDeviceInstanceId; - alias SetupDiGetDeviceInterfaceDetailA SetupDiGetDeviceInterfaceDetail; - deprecated alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetail; - alias SetupDiGetDeviceRegistryPropertyA SetupDiGetDeviceRegistryProperty; - alias SetupDiGetDriverInfoDetailA SetupDiGetDriverInfoDetail; - alias SetupDiGetDriverInstallParamsA SetupDiGetDriverInstallParams; - alias SetupDiGetHwProfileFriendlyNameA SetupDiGetHwProfileFriendlyName; - alias SetupDiGetHwProfileFriendlyNameExA SetupDiGetHwProfileFriendlyNameEx; - alias SetupDiGetHwProfileListExA SetupDiGetHwProfileListEx; - alias SetupDiGetINFClassA SetupDiGetINFClass; - alias SetupDiGetSelectedDriverA SetupDiGetSelectedDriver; - alias SetupDiInstallClassA SetupDiInstallClass; - alias SetupDiInstallClassExA SetupDiInstallClassEx; - alias SetupDiOpenClassRegKeyExA SetupDiOpenClassRegKeyEx; - alias SetupDiOpenDeviceInfoA SetupDiOpenDeviceInfo; - alias SetupDiOpenDeviceInterfaceA SetupDiOpenDeviceInterface; - deprecated alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDevice; - alias SetupDiSetClassInstallParamsA SetupDiSetClassInstallParams; - alias SetupDiSetClassRegistryPropertyA SetupDiSetClassRegistryProperty; - alias SetupDiSetDeviceInstallParamsA SetupDiSetDeviceInstallParams; - alias SetupDiSetDeviceRegistryPropertyA SetupDiSetDeviceRegistryProperty; - alias SetupDiSetDriverInstallParamsA SetupDiSetDriverInstallParams; - alias SetupDiSetSelectedDriverA SetupDiSetSelectedDriver; - alias SetupDuplicateDiskSpaceListA SetupDuplicateDiskSpaceList; - alias SetupFindFirstLineA SetupFindFirstLine; - alias SetupFindNextMatchLineA SetupFindNextMatchLine; - alias SetupFreeSourceListA SetupFreeSourceList; - alias SetupGetBackupInformationA SetupGetBackupInformation; - alias SetupGetFileCompressionInfoA SetupGetFileCompressionInfo; - alias SetupGetInfFileListA SetupGetInfFileList; - alias SetupGetInfInformationA SetupGetInfInformation; - alias SetupGetLineByIndexA SetupGetLineByIndex; - alias SetupGetLineCountA SetupGetLineCount; - alias SetupGetLineTextA SetupGetLineText; - alias SetupGetMultiSzFieldA SetupGetMultiSzField; - alias SetupGetSourceFileLocationA SetupGetSourceFileLocation; - alias SetupGetSourceFileSizeA SetupGetSourceFileSize; - alias SetupGetSourceInfoA SetupGetSourceInfo; - alias SetupGetStringFieldA SetupGetStringField; - alias SetupGetTargetPathA SetupGetTargetPath; - alias SetupInitializeFileLogA SetupInitializeFileLog; - alias SetupInstallFileA SetupInstallFile; - alias SetupInstallFileExA SetupInstallFileEx; - alias SetupInstallFilesFromInfSectionA SetupInstallFilesFromInfSection; - alias SetupInstallFromInfSectionA SetupInstallFromInfSection; - alias SetupInstallServicesFromInfSectionA SetupInstallServicesFromInfSection; - alias SetupInstallServicesFromInfSectionExA SetupInstallServicesFromInfSectionEx; - alias SetupIterateCabinetA SetupIterateCabinet; - alias SetupLogErrorA SetupLogError; - alias SetupLogFileA SetupLogFile; - alias SetupOpenAppendInfFileA SetupOpenAppendInfFile; - alias SetupOpenInfFileA SetupOpenInfFile; - alias SetupPromptForDiskA SetupPromptForDisk; - alias SetupQueryDrivesInDiskSpaceListA SetupQueryDrivesInDiskSpaceList; - alias SetupQueryFileLogA SetupQueryFileLog; - alias SetupQueryInfFileInformationA SetupQueryInfFileInformation; - alias SetupQueryInfOriginalFileInformationA SetupQueryInfOriginalFileInformation; - alias SetupQueryInfVersionInformationA SetupQueryInfVersionInformation; - alias SetupQuerySourceListA SetupQuerySourceList; - alias SetupQuerySpaceRequiredOnDriveA SetupQuerySpaceRequiredOnDrive; - alias SetupQueueCopyA SetupQueueCopy; - alias SetupQueueCopyIndirectA SetupQueueCopyIndirect; - alias SetupQueueCopySectionA SetupQueueCopySection; - alias SetupQueueDefaultCopyA SetupQueueDefaultCopy; - alias SetupQueueDeleteA SetupQueueDelete; - alias SetupQueueDeleteSectionA SetupQueueDeleteSection; - alias SetupQueueRenameA SetupQueueRename; - alias SetupQueueRenameSectionA SetupQueueRenameSection; - alias SetupRemoveFileLogEntryA SetupRemoveFileLogEntry; - alias SetupRemoveFromDiskSpaceListA SetupRemoveFromDiskSpaceList; - alias SetupRemoveFromSourceListA SetupRemoveFromSourceList; - alias SetupRemoveInstallSectionFromDiskSpaceListA SetupRemoveInstallSectionFromDiskSpaceList; - alias SetupRemoveSectionFromDiskSpaceListA SetupRemoveSectionFromDiskSpaceList; - alias SetupRenameErrorA SetupRenameError; - alias SetupScanFileQueueA SetupScanFileQueue; - alias SetupSetDirectoryIdA SetupSetDirectoryId; - alias SetupSetDirectoryIdExA SetupSetDirectoryIdEx; - alias SetupSetFileQueueAlternatePlatformA SetupSetFileQueueAlternatePlatform; - alias SetupSetPlatformPathOverrideA SetupSetPlatformPathOverride; - alias SetupSetSourceListA SetupSetSourceList; -} +/***********************************************************************\ +* setupapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Vladimir Vlasov * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.setupapi; +pragma(lib, "setupapi"); + +private import win32.basetyps, win32.commctrl, win32.prsht, win32.w32api, + win32.winreg, win32.windef; +private import win32.winbase; // for SYSTEMTIME + +/*static if(_WIN32_WINNT < _WIN32_WINDOWS) { + const UINT _SETUPAPI_VER = _WIN32_WINNT; // SetupAPI version follows Windows NT version +} else static if(_WIN32_WINDOWS) { + static if(_WIN32_WINDOWS >= 0x0490) { + const UINT _SETUPAPI_VER = 0x0500; // WinME uses same version of SetupAPI as Win2k + } else static if(_WIN32_WINDOWS >= 0x0410) { + const UINT _SETUPAPI_VER = 0x0410; // Indicates version of SetupAPI shipped with Win98 + } else { + const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version + } +} else { + const UINT _SETUPAPI_VER = 0x0501; +} + +version (WindowsNTonly) { + static if (_WIN32_WINNT >= 0x500) { + const UINT USE_SP_DRVINFO_DATA_V1 = 0; + } else { + const UINT USE_SP_DRVINFO_DATA_V1 = 1; + } +} else { + const UINT USE_SP_DRVINFO_DATA_V1 = 1; +}*/ +/+ +const UINT _SETUPAPI_VER = 0x0400; // Earliest SetupAPI version +const UINT USE_SP_DRVINFO_DATA_V1 = 1; ++/ +const UINT _SETUPAPI_VER = _WIN32_WINNT; +const bool USE_SP_DRVINFO_DATA_V1 = _WIN32_WINNT < 0x500; + +enum : uint { + LINE_LEN = 256, + MAX_INF_STRING_LENGTH = 4096, + MAX_TITLE_LEN = 60, + MAX_INSTRUCTION_LEN = 256, + MAX_LABEL_LEN = 30, + MAX_SERVICE_NAME_LEN = 256, + MAX_SUBTITLE_LEN = 256, + SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 +} + +enum : DWORD { + COPYFLG_WARN_IF_SKIP = 0x00000001, + COPYFLG_NOSKIP = 0x00000002, + COPYFLG_NOVERSIONCHECK = 0x00000004, + COPYFLG_FORCE_FILE_IN_USE = 0x00000008, + COPYFLG_NO_OVERWRITE = 0x00000010, + COPYFLG_NO_VERSION_DIALOG = 0x00000020, + COPYFLG_OVERWRITE_OLDER_ONLY = 0x00000040, + COPYFLG_REPLACEONLY = 0x00000400, + COPYFLG_NODECOMP = 0x00000800, + COPYFLG_REPLACE_BOOT_FILE = 0x00001000, + COPYFLG_NOPRUNE = 0x00002000 +} + +enum : DWORD { + DELFLG_IN_USE = 0x00000001, + DELFLG_IN_USE1 = 0x00010000 +} + +enum : DWORD { + DI_REMOVEDEVICE_GLOBAL = 0x00000001, + DI_REMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, + DI_UNREMOVEDEVICE_CONFIGSPECIFIC = 0x00000002, + DI_SHOWOEM = 0x00000001, + DI_SHOWCOMPAT = 0x00000002, + DI_SHOWCLASS = 0x00000004, + DI_SHOWALL = 0x00000007, + DI_NOVCP = 0x00000008, + DI_DIDCOMPAT = 0x00000010, + DI_DIDCLASS = 0x00000020, + DI_AUTOASSIGNRES = 0x00000040, + DI_NEEDRESTART = 0x00000080, + DI_NEEDREBOOT = 0x00000100, + DI_NOBROWSE = 0x00000200, + DI_MULTMFGS = 0x00000400, + DI_DISABLED = 0x00000800, + DI_GENERALPAGE_ADDED = 0x00001000, + DI_RESOURCEPAGE_ADDED = 0x00002000, + DI_PROPERTIES_CHANGE = 0x00004000, + DI_INF_IS_SORTED = 0x00008000, + DI_ENUMSINGLEINF = 0x00010000, + DI_DONOTCALLCONFIGMG = 0x00020000, + DI_INSTALLDISABLED = 0x00040000, + DI_COMPAT_FROM_CLASS = 0x00080000, + DI_CLASSINSTALLPARAMS = 0x00100000, + DI_NODI_DEFAULTACTION = 0x00200000, + DI_QUIETINSTALL = 0x00800000, + DI_NOFILECOPY = 0x01000000, + DI_FORCECOPY = 0x02000000, + DI_DRIVERPAGE_ADDED = 0x04000000, + DI_USECI_SELECTSTRINGS = 0x08000000, + DI_OVERRIDE_INFFLAGS = 0x10000000, + DI_PROPS_NOCHANGEUSAGE = 0x20000000, + DI_NOSELECTICONS = 0x40000000, + DI_NOWRITE_IDS = 0x80000000, + DI_FLAGSEX_USEOLDINFSEARCH = 0x00000001, + DI_FLAGSEX_AUTOSELECTRANK0 = 0x00000002, + DI_FLAGSEX_CI_FAILED = 0x00000004, + DI_FLAGSEX_DIDINFOLIST = 0x00000010, + DI_FLAGSEX_DIDCOMPATINFO = 0x00000020, + DI_FLAGSEX_FILTERCLASSES = 0x00000040, + DI_FLAGSEX_SETFAILEDINSTALL = 0x00000080, + DI_FLAGSEX_DEVICECHANGE = 0x00000100, + DI_FLAGSEX_ALWAYSWRITEIDS = 0x00000200, + DI_FLAGSEX_PROPCHANGE_PENDING = 0x00000400, + DI_FLAGSEX_ALLOWEXCLUDEDDRVS = 0x00000800, + DI_FLAGSEX_NOUIONQUERYREMOVE = 0x00001000, + DI_FLAGSEX_USECLASSFORCOMPAT = 0x00002000, + DI_FLAGSEX_OLDINF_IN_CLASSLIST = 0x00004000, + DI_FLAGSEX_NO_DRVREG_MODIFY = 0x00008000, + DI_FLAGSEX_IN_SYSTEM_SETUP = 0x00010000, + DI_FLAGSEX_INET_DRIVER = 0x00020000, + DI_FLAGSEX_APPENDDRIVERLIST = 0x00040000, + DI_FLAGSEX_PREINSTALLBACKUP = 0x00080000, + DI_FLAGSEX_BACKUPONREPLACE = 0x00100000, + DI_FLAGSEX_DRIVERLIST_FROM_URL = 0x00200000, + DI_FLAGSEX_RESERVED1 = 0x00400000, + DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = 0x00800000, + DI_FLAGSEX_POWERPAGE_ADDED = 0x01000000 +} + +enum : DWORD { + DIBCI_NOINSTALLCLASS = 0x00000001, + DIBCI_NODISPLAYCLASS = 0x00000002 +} + +enum : DWORD { + DICD_GENERATE_ID = 0x00000001, + DICD_INHERIT_CLASSDRVS = 0x00000002 +} + +enum : DWORD { + DICS_ENABLE = 1, + DICS_DISABLE, + DICS_PROPCHANGE, + DICS_START, + DICS_STOP // = 5 +} + +enum : DWORD { + DICS_FLAG_GLOBAL = 1, + DICS_FLAG_CONFIGSPECIFIC = 2, + DICS_FLAG_CONFIGGENERAL = 4 +} + +alias UINT DI_FUNCTION; + +enum : DI_FUNCTION { + DIF_SELECTDEVICE = 1, + DIF_INSTALLDEVICE, + DIF_ASSIGNRESOURCES, + DIF_PROPERTIES, + DIF_REMOVE, + DIF_FIRSTTIMESETUP, + DIF_FOUNDDEVICE, + DIF_SELECTCLASSDRIVERS, + DIF_VALIDATECLASSDRIVERS, + DIF_INSTALLCLASSDRIVERS, + DIF_CALCDISKSPACE, + DIF_DESTROYPRIVATEDATA, + DIF_VALIDATEDRIVER, + DIF_MOVEDEVICE, + DIF_DETECT, + DIF_INSTALLWIZARD, + DIF_DESTROYWIZARDDATA, + DIF_PROPERTYCHANGE, + DIF_ENABLECLASS, + DIF_DETECTVERIFY, + DIF_INSTALLDEVICEFILES, + DIF_UNREMOVE, + DIF_SELECTBESTCOMPATDRV, + DIF_ALLOW_INSTALL, + DIF_REGISTERDEVICE, + DIF_NEWDEVICEWIZARD_PRESELECT, + DIF_NEWDEVICEWIZARD_SELECT, + DIF_NEWDEVICEWIZARD_PREANALYZE, + DIF_NEWDEVICEWIZARD_POSTANALYZE, + DIF_NEWDEVICEWIZARD_FINISHINSTALL, + DIF_UNUSED1, + DIF_INSTALLINTERFACES, + DIF_DETECTCANCEL, + DIF_REGISTER_COINSTALLERS, + DIF_ADDPROPERTYPAGE_ADVANCED, + DIF_ADDPROPERTYPAGE_BASIC, + DIF_RESERVED1, + DIF_TROUBLESHOOTER, + DIF_POWERMESSAGEWAKE // = 39 +} + +enum : DWORD { + DIGCF_DEFAULT = 0x00000001, + DIGCF_PRESENT = 0x00000002, + DIGCF_ALLCLASSES = 0x00000004, + DIGCF_PROFILE = 0x00000008, + DIGCF_DEVICEINTERFACE = 0x00000010 +} + +deprecated enum : DWORD { + DIGCF_INTERFACEDEVICE = DIGCF_DEVICEINTERFACE +} + +enum : DWORD { + DIGCDP_FLAG_BASIC = 0x00000001, + DIGCDP_FLAG_ADVANCED = 0x00000002 +} + +enum : DWORD { + DIOCR_INSTALLER = 0x00000001, + DIOCR_INTERFACE = 0x00000002 +} + +enum : DWORD { + DIODI_NO_ADD = 0x00000001 +} + +enum : DWORD { + DIOD_INHERIT_CLASSDRVS = 0x00000002, + DIOD_CANCEL_REMOVE = 0x00000004 +} + +enum : DWORD { + DIREG_DEV = 0x00000001, + DIREG_DRV = 0x00000002, + DIREG_BOTH = 0x00000004 +} + +enum : int { + DIRID_ABSOLUTE = -1, + DIRID_NULL = 0, + DIRID_SRCPATH = 1, + DIRID_WINDOWS = 10, + DIRID_SYSTEM = 11, + DIRID_DRIVERS = 12, + DIRID_IOSUBSYS = DIRID_DRIVERS, + DIRID_INF = 17, + DIRID_HELP = 18, + DIRID_FONTS = 20, + DIRID_VIEWERS = 21, + DIRID_COLOR = 23, + DIRID_APPS = 24, + DIRID_SHARED = 25, + DIRID_BOOT = 30, + DIRID_SYSTEM16 = 50, + DIRID_SPOOL = 51, + DIRID_SPOOLDRIVERS = 52, + DIRID_USERPROFILE = 53, + DIRID_LOADER = 54, + DIRID_PRINTPROCESSOR = 55, + DIRID_DEFAULT = DIRID_SYSTEM +} + +enum : int { + DIRID_COMMON_STARTMENU = 16406, + DIRID_COMMON_PROGRAMS = 16407, + DIRID_COMMON_STARTUP = 16408, + DIRID_COMMON_DESKTOPDIRECTORY = 16409, + DIRID_COMMON_FAVORITES = 16415, + DIRID_COMMON_APPDATA = 16419, + DIRID_PROGRAM_FILES = 16422, + DIRID_SYSTEM_X86 = 16425, + DIRID_PROGRAM_FILES_X86 = 16426, + DIRID_PROGRAM_FILES_COMMON = 16427, + DIRID_PROGRAM_FILES_COMMONX86 = 16428, + DIRID_COMMON_TEMPLATES = 16429, + DIRID_COMMON_DOCUMENTS = 16430, + DIRID_USER = 0x8000, + DIRID_ABSOLUTE_16BIT = 0xffff +} + +enum : DWORD { + DMI_MASK = 0x00000001, + DMI_BKCOLOR = 0x00000002, + DMI_USERECT = 0x00000004 +} + +enum : DWORD { + DNF_DUPDESC = 0x00000001, + DNF_OLDDRIVER = 0x00000002, + DNF_EXCLUDEFROMLIST = 0x00000004, + DNF_NODRIVER = 0x00000008, + DNF_LEGACYINF = 0x00000010, + DNF_CLASS_DRIVER = 0x00000020, + DNF_COMPATIBLE_DRIVER = 0x00000040, + DNF_INET_DRIVER = 0x00000080, + DNF_UNUSED1 = 0x00000100, + DNF_INDEXED_DRIVER = 0x00000200, + DNF_OLD_INET_DRIVER = 0x00000400, + DNF_BAD_DRIVER = 0x00000800, + DNF_DUPPROVIDER = 0x00001000 +} + +enum : UINT { + DPROMPT_SUCCESS, + DPROMPT_CANCEL, + DPROMPT_SKIPFILE, + DPROMPT_BUFFERTOOSMALL, + DPROMPT_OUTOFMEMORY // = 4 +} + +enum : DWORD { + DRIVER_HARDWAREID_RANK = 0x00000FFF, + DRIVER_COMPATID_RANK = 0x00003FFF, + DRIVER_UNTRUSTED_RANK = 0x00008000, + DRIVER_UNTRUSTED_HARDWAREID_RANK = 0x00008FFF, + DRIVER_UNTRUSTED_COMPATID_RANK = 0x0000BFFF, + DRIVER_W9X_SUSPECT_RANK = 0x0000C000, + DRIVER_W9X_SUSPECT_HARDWAREID_RANK = 0x0000CFFF, + DRIVER_W9X_SUSPECT_COMPATID_RANK = 0x0000FFFF +} + +enum : DWORD { + DYNAWIZ_FLAG_PAGESADDED = 0x00000001, + DYNAWIZ_FLAG_INSTALLDET_NEXT = 0x00000002, + DYNAWIZ_FLAG_INSTALLDET_PREV = 0x00000004, + DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT = 0x00000008 +} + +enum : WORD { + ENABLECLASS_QUERY, + ENABLECLASS_SUCCESS, + ENABLECLASS_FAILURE // = 2 +} + +enum : DWORD { + ERROR_EXPECTED_SECTION_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0, + ERROR_BAD_SECTION_NAME_LINE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 1, + ERROR_SECTION_NAME_TOO_LONG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 2, + ERROR_GENERAL_SYNTAX = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 3, + ERROR_WRONG_INF_STYLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x100, + ERROR_NOT_INSTALLED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x1000, + ERROR_SECTION_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x101, + ERROR_LINE_NOT_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x102, + ERROR_NO_BACKUP = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x103, + ERROR_NO_ASSOCIATED_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x200, + ERROR_CLASS_MISMATCH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x201, + ERROR_DUPLICATE_FOUND = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x202, + ERROR_NO_DRIVER_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x203, + ERROR_KEY_DOES_NOT_EXIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x204, + ERROR_INVALID_DEVINST_NAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x205, + ERROR_INVALID_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x206, + ERROR_DEVINST_ALREADY_EXISTS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x207, + ERROR_DEVINFO_NOT_REGISTERED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x208, + ERROR_INVALID_REG_PROPERTY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x209, + ERROR_NO_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20A, + ERROR_NO_SUCH_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20B, + ERROR_CANT_LOAD_CLASS_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20C, + ERROR_INVALID_CLASS_INSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20D, + ERROR_DI_DO_DEFAULT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20E, + ERROR_DI_NOFILECOPY = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x20F, + ERROR_INVALID_HWPROFILE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x210, + ERROR_NO_DEVICE_SELECTED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x211, + ERROR_DEVINFO_LIST_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x212, + ERROR_DEVINFO_DATA_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x213, + ERROR_DI_BAD_PATH = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x214, + ERROR_NO_CLASSINSTALL_PARAMS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x215, + ERROR_FILEQUEUE_LOCKED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x216, + ERROR_BAD_SERVICE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x217, + ERROR_NO_CLASS_DRIVER_LIST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x218, + ERROR_NO_ASSOCIATED_SERVICE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x219, + ERROR_NO_DEFAULT_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21A, + ERROR_DEVICE_INTERFACE_ACTIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21B, + ERROR_DEVICE_INTERFACE_REMOVED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21C, + ERROR_BAD_INTERFACE_INSTALLSECT = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21D, + ERROR_NO_SUCH_INTERFACE_CLASS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21E, + ERROR_INVALID_REFERENCE_STRING = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x21F, + ERROR_INVALID_MACHINENAME = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x220, + ERROR_REMOTE_COMM_FAILURE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x221, + ERROR_MACHINE_UNAVAILABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x222, + ERROR_NO_CONFIGMGR_SERVICES = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x223, + ERROR_INVALID_PROPPAGE_PROVIDER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x224, + ERROR_NO_SUCH_DEVICE_INTERFACE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x225, + ERROR_DI_POSTPROCESSING_REQUIRED = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x226, + ERROR_INVALID_COINSTALLER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x227, + ERROR_NO_COMPAT_DRIVERS = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x228, + ERROR_NO_DEVICE_ICON = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x229, + ERROR_INVALID_INF_LOGCONFIG = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22A, + ERROR_DI_DONT_INSTALL = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22B, + ERROR_INVALID_FILTER_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22C, + ERROR_NON_WINDOWS_NT_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22D, + ERROR_NON_WINDOWS_DRIVER = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22E, + ERROR_NO_CATALOG_FOR_OEM_INF = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x22F, + ERROR_DEVINSTALL_QUEUE_NONNATIVE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x230, + ERROR_NOT_DISABLEABLE = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x231, + ERROR_CANT_REMOVE_DEVINST = APPLICATION_ERROR_MASK | ERROR_SEVERITY_ERROR | 0x232 +} + +deprecated enum : DWORD { + ERROR_NO_DEFAULT_INTERFACE_DEVICE = ERROR_NO_DEFAULT_DEVICE_INTERFACE, + ERROR_INTERFACE_DEVICE_ACTIVE = ERROR_DEVICE_INTERFACE_ACTIVE, + ERROR_INTERFACE_DEVICE_REMOVED = ERROR_DEVICE_INTERFACE_REMOVED, + ERROR_NO_SUCH_INTERFACE_DEVICE = ERROR_NO_SUCH_DEVICE_INTERFACE, +} + +enum : UINT { + FILEOP_COPY, + FILEOP_RENAME, + FILEOP_DELETE, + FILEOP_BACKUP, + FILEOP_NEWPATH, // = 4 + FILEOP_ABORT = 0, + FILEOP_DOIT, + FILEOP_SKIP, // = 2 + FILEOP_RETRY = FILEOP_DOIT +} + +enum : UINT { + FILE_COMPRESSION_NONE, + FILE_COMPRESSION_WINLZA, + FILE_COMPRESSION_MSZIP, + FILE_COMPRESSION_NTCAB // = 3 +} + +enum : DWORD { + FLG_ADDREG_TYPE_SZ = 0x00000000, + FLG_ADDREG_BINVALUETYPE = 0x00000001, + FLG_ADDREG_NOCLOBBER = 0x00000002, + FLG_ADDREG_DELVAL = 0x00000004, + FLG_ADDREG_APPEND = 0x00000008, + FLG_ADDREG_KEYONLY = 0x00000010, + FLG_ADDREG_OVERWRITEONLY = 0x00000020, + FLG_ADDREG_TYPE_MULTI_SZ = 0x00010000, + FLG_ADDREG_TYPE_EXPAND_SZ = 0x00020000, + FLG_ADDREG_TYPE_BINARY = 0x00000000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_DWORD = 0x00010000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_NONE = 0x00020000 | FLG_ADDREG_BINVALUETYPE, + FLG_ADDREG_TYPE_MASK = 0xFFFF0000 | FLG_ADDREG_BINVALUETYPE +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_ADDREG_64BITKEY = 0x00001000, + FLG_ADDREG_KEYONLY_COMMON = 0x00002000, + FLG_ADDREG_32BITKEY = 0x00004000, + FLG_ADDREG_DELREG_BIT = 0x00008000 + } +} + +enum : DWORD { + FLG_DELREG_VALUE = 0x00000000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_DELREG_TYPE_MASK = FLG_ADDREG_TYPE_MASK, + FLG_DELREG_TYPE_SZ = FLG_ADDREG_TYPE_SZ, + FLG_DELREG_TYPE_MULTI_SZ = FLG_ADDREG_TYPE_MULTI_SZ, + FLG_DELREG_TYPE_EXPAND_SZ = FLG_ADDREG_TYPE_EXPAND_SZ, + FLG_DELREG_TYPE_BINARY = FLG_ADDREG_TYPE_BINARY, + FLG_DELREG_TYPE_DWORD = FLG_ADDREG_TYPE_DWORD, + FLG_DELREG_TYPE_NONE = FLG_ADDREG_TYPE_NONE, + FLG_DELREG_64BITKEY = FLG_ADDREG_64BITKEY, + FLG_DELREG_KEYONLY_COMMON = FLG_ADDREG_KEYONLY_COMMON, + FLG_DELREG_32BITKEY = FLG_ADDREG_32BITKEY, + FLG_DELREG_OPERATION_MASK = 0x000000FE, + FLG_DELREG_MULTI_SZ_DELSTRING = 0x00000002 | FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT + } +} + +enum : DWORD { + FLG_BITREG_CLEARBITS = 0x00000000, + FLG_BITREG_SETBITS = 0x00000001 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + FLG_BITREG_64BITKEY = 0x00001000, + FLG_BITREG_32BITKEY = 0x00004000 + } +} + +enum : DWORD { + FLG_PROFITEM_CURRENTUSER = 0x00000001, + FLG_PROFITEM_DELETE = 0x00000002, + FLG_PROFITEM_GROUP = 0x00000004, + FLG_PROFITEM_CSIDL = 0x00000008 +} + +enum : DWORD { + FLG_REGSVR_DLLREGISTER = 0x00000001, + FLG_REGSVR_DLLINSTALL = 0x00000002 +} + +enum { + IDD_DYNAWIZ_FIRSTPAGE = 10000, + IDD_DYNAWIZ_SELECT_PREVPAGE, + IDD_DYNAWIZ_SELECT_NEXTPAGE, + IDD_DYNAWIZ_ANALYZE_PREVPAGE, + IDD_DYNAWIZ_ANALYZE_NEXTPAGE, // = 1004 + IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE = 10006, + IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE, + IDD_DYNAWIZ_INSTALLDETECTED_NODEVS, + IDD_DYNAWIZ_SELECTDEV_PAGE, + IDD_DYNAWIZ_ANALYZEDEV_PAGE, + IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE, + IDD_DYNAWIZ_SELECTCLASS_PAGE, // = 10012 + MIN_IDD_DYNAWIZ_RESOURCE_ID = 10000, + MAX_IDD_DYNAWIZ_RESOURCE_ID = 11000 +} + +enum : DWORD { + IDF_NOBROWSE = 0x00000001, + IDF_NOSKIP = 0x00000002, + IDF_NODETAILS = 0x00000004, + IDF_NOCOMPRESSED = 0x00000008, + IDF_CHECKFIRST = 0x00000100, + IDF_NOBEEP = 0x00000200, + IDF_NOFOREGROUND = 0x00000400, + IDF_WARNIFSKIP = 0x00000800 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + IDF_NOREMOVABLEMEDIAPROMPT = 0x00001000, + IDF_USEDISKNAMEASPROMPT = 0x00002000, + IDF_OEMDISK = 0x80000000 + } +} + +enum { + IDI_RESOURCEFIRST = 159, + IDI_RESOURCE = 159, + IDI_RESOURCELAST = 161, + IDI_RESOURCEOVERLAYFIRST = 161, + IDI_RESOURCEOVERLAYLAST = 161, + IDI_CONFLICT = 161, + IDI_PROBLEM_OVL = 500, + IDI_DISABLED_OVL = 501, + IDI_FORCED_OVL = 502, + IDI_CLASSICON_OVERLAYFIRST = 500, + IDI_CLASSICON_OVERLAYLAST = 502 +} + +enum : DWORD { + INF_STYLE_NONE = 0x00000000, + INF_STYLE_OLDNT = 0x00000001, + INF_STYLE_WIN4 = 0x00000002, + INF_STYLE_CACHE_ENABLE = 0x00000010, + INF_STYLE_CACHE_DISABLE = 0x00000020 +} + +enum : DWORD { + INFINFO_INF_SPEC_IS_HINF = 1, + INFINFO_INF_NAME_IS_ABSOLUTE, + INFINFO_DEFAULT_SEARCH, + INFINFO_REVERSE_DEFAULT_SEARCH, + INFINFO_INF_PATH_LIST_SEARCH // = 5 +} + +alias DWORD LogSeverity; +enum : LogSeverity { + LogSevInformation, + LogSevWarning, + LogSevError, + LogSevFatalError, + LogSevMaximum // = 4 +} + +const MAX_INSTALLWIZARD_DYNAPAGES = 20; + +enum : DWORD { + NDW_INSTALLFLAG_DIDFACTDEFS = 0x00000001, + NDW_INSTALLFLAG_HARDWAREALLREADYIN = 0x00000002, + NDW_INSTALLFLAG_NEEDSHUTDOWN = 0x00000200, + NDW_INSTALLFLAG_EXPRESSINTRO = 0x00000400, + NDW_INSTALLFLAG_SKIPISDEVINSTALLED = 0x00000800, + NDW_INSTALLFLAG_NODETECTEDDEVS = 0x00001000, + NDW_INSTALLFLAG_INSTALLSPECIFIC = 0x00002000, + NDW_INSTALLFLAG_SKIPCLASSLIST = 0x00004000, + NDW_INSTALLFLAG_CI_PICKED_OEM = 0x00008000, + NDW_INSTALLFLAG_PCMCIAMODE = 0x00010000, + NDW_INSTALLFLAG_PCMCIADEVICE = 0x00020000, + NDW_INSTALLFLAG_USERCANCEL = 0x00040000, + NDW_INSTALLFLAG_KNOWNCLASS = 0x00080000, + NDW_INSTALLFLAG_NEEDRESTART = 0x00000080, + NDW_INSTALLFLAG_NEEDREBOOT = 0x00000100 +} + +enum : DWORD { + SETDIRID_NOT_FULL_PATH = 0x00000001 +} + +enum : DWORD { + SP_COPY_DELETESOURCE = 0x0000001, + SP_COPY_REPLACEONLY = 0x0000002, + SP_COPY_NEWER = 0x0000004, + SP_COPY_NEWER_OR_SAME = 0x0000004, + SP_COPY_NOOVERWRITE = 0x0000008, + SP_COPY_NODECOMP = 0x0000010, + SP_COPY_LANGUAGEAWARE = 0x0000020, + SP_COPY_SOURCE_ABSOLUTE = 0x0000040, + SP_COPY_SOURCEPATH_ABSOLUTE = 0x0000080, + SP_COPY_IN_USE_NEEDS_REBOOT = 0x0000100, + SP_COPY_FORCE_IN_USE = 0x0000200, + SP_COPY_NOSKIP = 0x0000400, + SP_FLAG_CABINETCONTINUATION = 0x0000800, + SP_COPY_FORCE_NOOVERWRITE = 0x0001000, + SP_COPY_FORCE_NEWER = 0x0002000, + SP_COPY_WARNIFSKIP = 0x0004000, + SP_COPY_NOBROWSE = 0x0008000, + SP_COPY_NEWER_ONLY = 0x0010000, + SP_COPY_SOURCE_SIS_MASTER = 0x0020000, + SP_COPY_OEMINF_CATALOG_ONLY = 0x0040000, + SP_COPY_REPLACE_BOOT_FILE = 0x0080000, + SP_COPY_NOPRUNE = 0x0100000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SP_COPY_OEM_F6_INF = 0x0200000 + } +} + +enum : DWORD { + SPCRP_SECURITY = 23, + SPCRP_SECURITY_SDS, + SPCRP_DEVTYPE, + SPCRP_EXCLUSIVE, + SPCRP_CHARACTERISTICS, + SPCRP_MAXIMUM_PROPERTY // = 28 +} + +enum : DWORD { + SPDIT_NODRIVER, + SPDIT_CLASSDRIVER, + SPDIT_COMPATDRIVER // = 2 +} + +enum : DWORD { + SPDRP_DEVICEDESC, + SPDRP_HARDWAREID, + SPDRP_COMPATIBLEIDS, + SPDRP_UNUSED0, + SPDRP_SERVICE, + SPDRP_UNUSED1, + SPDRP_UNUSED2, + SPDRP_CLASS, + SPDRP_CLASSGUID, + SPDRP_DRIVER, + SPDRP_CONFIGFLAGS, + SPDRP_MFG, + SPDRP_FRIENDLYNAME, + SPDRP_LOCATION_INFORMATION, + SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, + SPDRP_CAPABILITIES, + SPDRP_UI_NUMBER, + SPDRP_UPPERFILTERS, + SPDRP_LOWERFILTERS, + SPDRP_BUSTYPEGUID, + SPDRP_LEGACYBUSTYPE, + SPDRP_BUSNUMBER, + SPDRP_ENUMERATOR_NAME, + SPDRP_SECURITY, + SPDRP_SECURITY_SDS, + SPDRP_DEVTYPE, + SPDRP_EXCLUSIVE, + SPDRP_CHARACTERISTICS, + SPDRP_ADDRESS, // = 28 + SPDRP_UI_NUMBER_DESC_FORMAT = 30, + SPDRP_MAXIMUM_PROPERTY = 31 +} + +enum : UINT { + SPDSL_IGNORE_DISK = 1, + SPDSL_DISALLOW_NEGATIVE_ADJUST +} + +enum : UINT { + SPFILENOTIFY_STARTQUEUE = 1, + SPFILENOTIFY_ENDQUEUE, + SPFILENOTIFY_STARTSUBQUEUE, + SPFILENOTIFY_ENDSUBQUEUE, + SPFILENOTIFY_STARTDELETE, + SPFILENOTIFY_ENDDELETE, + SPFILENOTIFY_DELETEERROR, + SPFILENOTIFY_STARTRENAME, + SPFILENOTIFY_ENDRENAME, + SPFILENOTIFY_RENAMEERROR, + SPFILENOTIFY_STARTCOPY, + SPFILENOTIFY_ENDCOPY, + SPFILENOTIFY_COPYERROR, + SPFILENOTIFY_NEEDMEDIA, + SPFILENOTIFY_QUEUESCAN, + SPFILENOTIFY_CABINETINFO, + SPFILENOTIFY_FILEINCABINET, + SPFILENOTIFY_NEEDNEWCABINET, + SPFILENOTIFY_FILEEXTRACTED, + SPFILENOTIFY_FILEOPDELAYED, + SPFILENOTIFY_STARTBACKUP, + SPFILENOTIFY_BACKUPERROR, + SPFILENOTIFY_ENDBACKUP, + SPFILENOTIFY_QUEUESCAN_EX, + SPFILENOTIFY_STARTREGISTRATION, // = 25 + SPFILENOTIFY_ENDREGISTRATION = 32, + SPFILENOTIFY_LANGMISMATCH = 0x00010000, + SPFILENOTIFY_TARGETEXISTS = 0x00020000, + SPFILENOTIFY_TARGETNEWER = 0x00040000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : UINT { + SPFILENOTIFY_QUEUESCAN_SIGNERINFO = 0x00000040 + } +} + +enum : DWORD { + SPFILELOG_SYSTEMLOG = 0x00000001, + SPFILELOG_OEMFILE = 0x00000001, + SPFILELOG_FORCENEW = 0x00000002, + SPFILELOG_QUERYONLY = 0x00000004 +} + +enum : INT { + SPFILEQ_FILE_IN_USE = 0x00000001, + SPFILEQ_REBOOT_RECOMMENDED = 0x00000002, + SPFILEQ_REBOOT_IN_PROGRESS = 0x00000004 +} + +enum : DWORD { + SPINT_ACTIVE = 0x00000001, + SPINT_DEFAULT = 0x00000002, + SPINT_REMOVED = 0x00000004 +} + +deprecated enum : DWORD { + SPID_ACTIVE = SPINT_ACTIVE, + SPID_DEFAULT = SPINT_DEFAULT, + SPID_REMOVED = SPINT_REMOVED +} + +enum : UINT { + SPINST_LOGCONFIG = 0x00000001, + SPINST_INIFILES = 0x00000002, + SPINST_REGISTRY = 0x00000004, + SPINST_INI2REG = 0x00000008, + SPINST_FILES = 0x00000010, + SPINST_BITREG = 0x00000020, + SPINST_REGSVR = 0x00000040, + SPINST_UNREGSVR = 0x00000080, + SPINST_PROFILEITEMS = 0x00000100, + SPINST_SINGLESECTION = 0x00010000, + SPINST_LOGCONFIG_IS_FORCED = 0x00020000, + SPINST_LOGCONFIGS_ARE_OVERRIDES = 0x00040000 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : UINT { + SPINST_COPYINF = 0x00000200, + SPINST_ALL = 0x000003ff, + SPINST_REGISTERCALLBACKAWARE = 0x00080000 + } +} else { + enum : UINT { + SPINST_ALL = 0x000001ff + } +} + +enum : DWORD { + SPOST_NONE, + SPOST_PATH, + SPOST_URL, + SPOST_MAX // = 3 +} + +enum : DWORD { + SPPSR_SELECT_DEVICE_RESOURCES = 1, + SPPSR_ENUM_BASIC_DEVICE_PROPERTIES, + SPPSR_ENUM_ADV_DEVICE_PROPERTIES +} + +enum : DWORD { + SPQ_SCAN_FILE_PRESENCE = 0x00000001, + SPQ_SCAN_FILE_VALIDITY = 0x00000002, + SPQ_SCAN_USE_CALLBACK = 0x00000004, + SPQ_SCAN_USE_CALLBACKEX = 0x00000008, + SPQ_SCAN_INFORM_USER = 0x00000010, + SPQ_SCAN_PRUNE_COPY_QUEUE = 0x00000020 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SPQ_SCAN_USE_CALLBACK_SIGNERINFO = 0x00000040, + SPQ_SCAN_PRUNE_DELREN = 0x00000080 + } +} + +enum : UINT_PTR { + SPQ_DELAYED_COPY = 0x00000001 +} + +enum : DWORD { + SPRDI_FIND_DUPS = 0x00000001, +} + +enum : DWORD { + SPSVCINST_TAGTOFRONT = 0x00000001, + SPSVCINST_ASSOCSERVICE = 0x00000002, + SPSVCINST_DELETEEVENTLOGENTRY = 0x00000004, + SPSVCINST_NOCLOBBER_DISPLAYNAME = 0x00000008, + SPSVCINST_NOCLOBBER_STARTTYPE = 0x00000010, + SPSVCINST_NOCLOBBER_ERRORCONTROL = 0x00000020, + SPSVCINST_NOCLOBBER_LOADORDERGROUP = 0x00000040, + SPSVCINST_NOCLOBBER_DEPENDENCIES = 0x00000080, + SPSVCINST_NOCLOBBER_DESCRIPTION = 0x00000100, + SPSVCINST_STOPSERVICE = 0x00000200 +} + +static if(_SETUPAPI_VER >= 0x0501) { + enum : DWORD { + SPSVCINST_CLOBBER_SECURITY = 0x00000400 + } +} + +enum : DWORD { + SPWPT_SELECTDEVICE = 0x00000001 +} + +enum : DWORD { + SPWP_USE_DEVINFO_DATA = 0x00000001 +} + +enum : UINT { + SRCINFO_PATH = 1, + SRCINFO_TAGFILE, + SRCINFO_DESCRIPTION, + SRCINFO_FLAGS // = 4 +} + +enum : DWORD { + SRCLIST_TEMPORARY = 0x00000001, + SRCLIST_NOBROWSE = 0x00000002, + SRCLIST_SYSTEM = 0x00000010, + SRCLIST_USER = 0x00000020, + SRCLIST_SYSIFADMIN = 0x00000040, + SRCLIST_SUBDIRS = 0x00000100, + SRCLIST_APPEND = 0x00000200, + SRCLIST_NOSTRIPPLATFORM = 0x00000400 +} + +alias PVOID HINF; +alias PVOID HDSKSPC; +mixin DECLARE_HANDLE!("HDEVINFO"); +alias PVOID HSPFILEQ; +alias PVOID HSPFILELOG; + +enum SetupFileLogInfo { + SetupFileLogSourceFilename, + SetupFileLogChecksum, + SetupFileLogDiskTagfile, + SetupFileLogDiskDescription, + SetupFileLogOtherInfo, + SetupFileLogMax +} + +align(1): + +struct INFCONTEXT { + PVOID Inf; + PVOID CurrentInf; + UINT Section; + UINT Line; +} +alias INFCONTEXT* PINFCONTEXT; + +struct SP_INF_INFORMATION { + DWORD InfStyle; + DWORD InfCount; + BYTE[1] _VersionData; + BYTE* VersionData() { return _VersionData.ptr; } +} +alias SP_INF_INFORMATION* PSP_INF_INFORMATION; + +struct SP_ALTPLATFORM_INFO { + DWORD cbSize = SP_ALTPLATFORM_INFO.sizeof; + DWORD Platform; + DWORD MajorVersion; + DWORD MinorVersion; + WORD ProcessorArchitecture; + WORD Reserved; +} +alias SP_ALTPLATFORM_INFO* PSP_ALTPLATFORM_INFO; + +struct SP_ORIGINAL_FILE_INFO_A { + DWORD cbSize = SP_ORIGINAL_FILE_INFO_A.sizeof; + CHAR[MAX_PATH] OriginalInfName; + CHAR[MAX_PATH] OriginalCatalogName; +} +alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO_A; + +struct SP_ORIGINAL_FILE_INFO_W { + DWORD cbSize = SP_ORIGINAL_FILE_INFO_W.sizeof; + WCHAR[MAX_PATH] OriginalInfName; + WCHAR[MAX_PATH] OriginalCatalogName; +} +alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO_W; + +struct FILEPATHS_A { + PCSTR Target; + PCSTR Source; + UINT Win32Error; + DWORD Flags; +} +alias FILEPATHS_A* PFILEPATHS_A; + +struct FILEPATHS_W { + PCWSTR Target; + PCWSTR Source; + UINT Win32Error; + DWORD Flags; +} +alias FILEPATHS_W* PFILEPATHS_W; + +struct SOURCE_MEDIA_A { + PCSTR Reserved; + PCSTR Tagfile; + PCSTR Description; + PCSTR SourcePath; + PCSTR SourceFile; + DWORD Flags; +} +alias SOURCE_MEDIA_A* PSOURCE_MEDIA_A; + +struct SOURCE_MEDIA_W { + PCWSTR Reserved; + PCWSTR Tagfile; + PCWSTR Description; + PCWSTR SourcePath; + PCWSTR SourceFile; + DWORD Flags; +} +alias SOURCE_MEDIA_W* PSOURCE_MEDIA_W; + +struct CABINET_INFO_A { + PCSTR CabinetPath; + PCSTR CabinetFile; + PCSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; +} +alias CABINET_INFO_A* PCABINET_INFO_A; + +struct CABINET_INFO_W { + PCWSTR CabinetPath; + PCWSTR CabinetFile; + PCWSTR DiskName; + USHORT SetId; + USHORT CabinetNumber; +} +alias CABINET_INFO_W* PCABINET_INFO_W; + +struct FILE_IN_CABINET_INFO_A { + PCSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + CHAR[MAX_PATH] FullTargetName; +} +alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO_A; + +struct FILE_IN_CABINET_INFO_W { + PCWSTR NameInCabinet; + DWORD FileSize; + DWORD Win32Error; + WORD DosDate; + WORD DosTime; + WORD DosAttribs; + WCHAR[MAX_PATH] FullTargetName; +} +alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO_W; + +struct SP_FILE_COPY_PARAMS_A { + DWORD cbSize = SP_FILE_COPY_PARAMS_A.sizeof; + HSPFILEQ QueueHandle; + PCSTR SourceRootPath; + PCSTR SourcePath; + PCSTR SourceFilename; + PCSTR SourceDescription; + PCSTR SourceTagfile; + PCSTR TargetDirectory; + PCSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCSTR SecurityDescriptor; +} +alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS_A; + +struct SP_FILE_COPY_PARAMS_W { + DWORD cbSize = SP_FILE_COPY_PARAMS_W.sizeof; + HSPFILEQ QueueHandle; + PCWSTR SourceRootPath; + PCWSTR SourcePath; + PCWSTR SourceFilename; + PCWSTR SourceDescription; + PCWSTR SourceTagfile; + PCWSTR TargetDirectory; + PCWSTR TargetFilename; + DWORD CopyStyle; + HINF LayoutInf; + PCWSTR SecurityDescriptor; +} +alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS_W; + +struct SP_DEVINFO_DATA { + DWORD cbSize = SP_DEVINFO_DATA.sizeof; + GUID ClassGuid; + DWORD DevInst; + ULONG_PTR Reserved; +} +alias SP_DEVINFO_DATA* PSP_DEVINFO_DATA; + +struct SP_DEVICE_INTERFACE_DATA { + DWORD cbSize = SP_DEVICE_INTERFACE_DATA.sizeof; + GUID InterfaceClassGuid; + DWORD Flags; + ULONG_PTR Reserved; +} +alias SP_DEVICE_INTERFACE_DATA* PSP_DEVICE_INTERFACE_DATA; +deprecated alias SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA; +deprecated alias SP_DEVICE_INTERFACE_DATA* PSP_INTERFACE_DEVICE_DATA; + +struct SP_DEVICE_INTERFACE_DETAIL_DATA_A { + DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_A.sizeof; + CHAR[1] _DevicePath; + CHAR* DevicePath() { return _DevicePath.ptr; } +} +alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA_A; + +struct SP_DEVICE_INTERFACE_DETAIL_DATA_W { + DWORD cbSize = SP_DEVICE_INTERFACE_DETAIL_DATA_W.sizeof; + WCHAR[1] _DevicePath; + WCHAR* DevicePath() { return _DevicePath.ptr; } +} +alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA_W; + +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA_A; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W; +deprecated alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA_W; + +struct SP_DEVINFO_LIST_DETAIL_DATA_A { + DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_A.sizeof; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + CHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; +} +alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA_A; + +struct SP_DEVINFO_LIST_DETAIL_DATA_W { + DWORD cbSize = SP_DEVINFO_LIST_DETAIL_DATA_W.sizeof; + GUID ClassGuid; + HANDLE RemoteMachineHandle; + WCHAR[SP_MAX_MACHINENAME_LENGTH] RemoteMachineName; +} +alias SP_DEVINFO_LIST_DETAIL_DATA_W* PSP_DEVINFO_LIST_DETAIL_DATA_W; + +extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_A; +extern(Windows) alias UINT function(PVOID, UINT, UINT_PTR, UINT_PTR) PSP_FILE_CALLBACK_W; + +struct SP_DEVINSTALL_PARAMS_A { + DWORD cbSize = SP_DEVINSTALL_PARAMS_A.sizeof; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_A InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + CHAR[MAX_PATH] DriverPath; +} +alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS_A; + +struct SP_DEVINSTALL_PARAMS_W { + DWORD cbSize = SP_DEVINSTALL_PARAMS_W.sizeof; + DWORD Flags; + DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK_W InstallMsgHandler; + PVOID InstallMsgHandlerContext; + HSPFILEQ FileQueue; + ULONG_PTR ClassInstallReserved; + DWORD Reserved; + WCHAR[MAX_PATH] DriverPath; +} +alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS_W; + +struct SP_CLASSINSTALL_HEADER { + DWORD cbSize = SP_CLASSINSTALL_HEADER.sizeof; + DI_FUNCTION InstallFunction; +} +alias SP_CLASSINSTALL_HEADER* PSP_CLASSINSTALL_HEADER; + +struct SP_ENABLECLASS_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + GUID ClassGuid; + DWORD EnableMessage; +} +alias SP_ENABLECLASS_PARAMS* PSP_ENABLECLASS_PARAMS; + +struct SP_MOVEDEV_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + SP_DEVINFO_DATA SourceDeviceInfoData; +} +alias SP_MOVEDEV_PARAMS* PSP_MOVEDEV_PARAMS; + +struct SP_PROPCHANGE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD StateChange; + DWORD Scope; + DWORD HwProfile; +} +alias SP_PROPCHANGE_PARAMS* PSP_PROPCHANGE_PARAMS; + +struct SP_REMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; +} +alias SP_REMOVEDEVICE_PARAMS* PSP_REMOVEDEVICE_PARAMS; + +struct SP_UNREMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Scope; + DWORD HwProfile; +} +alias SP_UNREMOVEDEVICE_PARAMS* PSP_UNREMOVEDEVICE_PARAMS; + +struct SP_SELECTDEVICE_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[MAX_TITLE_LEN] Title; + CHAR[MAX_INSTRUCTION_LEN] Instructions; + CHAR[MAX_LABEL_LEN] ListLabel; + CHAR[MAX_SUBTITLE_LEN] SubTitle; + BYTE[2] Reserved; +} +alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS_A; + +struct SP_SELECTDEVICE_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[MAX_TITLE_LEN] Title; + WCHAR[MAX_INSTRUCTION_LEN] Instructions; + WCHAR[MAX_LABEL_LEN] ListLabel; + WCHAR[MAX_SUBTITLE_LEN] SubTitle; +} +alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS_W; + +extern(Windows) alias BOOL function(PVOID, DWORD) PDETECT_PROGRESS_NOTIFY; + +struct SP_DETECTDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + PDETECT_PROGRESS_NOTIFY DetectProgressNotify; + PVOID ProgressNotifyParam; +} +alias SP_DETECTDEVICE_PARAMS* PSP_DETECTDEVICE_PARAMS; + +struct SP_INSTALLWIZARD_DATA { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; + DWORD NumDynamicPages; + DWORD DynamicPageFlags; + DWORD PrivateFlags; + LPARAM PrivateData; + HWND hwndWizardDlg; +} +alias SP_INSTALLWIZARD_DATA* PSP_INSTALLWIZARD_DATA; + +struct SP_NEWDEVICEWIZARD_DATA { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + DWORD Flags; + HPROPSHEETPAGE[MAX_INSTALLWIZARD_DYNAPAGES] DynamicPages; + DWORD NumDynamicPages; + HWND hwndWizardDlg; +} +alias SP_NEWDEVICEWIZARD_DATA* PSP_NEWDEVICEWIZARD_DATA; +alias SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA; +alias SP_NEWDEVICEWIZARD_DATA* PSP_ADDPROPERTYPAGE_DATA; + +struct SP_TROUBLESHOOTER_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[MAX_PATH] ChmFile; + CHAR[MAX_PATH] HtmlTroubleShooter; +} +alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS_A; + +struct SP_TROUBLESHOOTER_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[MAX_PATH] ChmFile; + WCHAR[MAX_PATH] HtmlTroubleShooter; +} +alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS_W; + +struct SP_POWERMESSAGEWAKE_PARAMS_A { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + CHAR[LINE_LEN*2] PowerMessageWake; +} +alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS_A; + +struct SP_POWERMESSAGEWAKE_PARAMS_W { + SP_CLASSINSTALL_HEADER ClassInstallHeader; + WCHAR[LINE_LEN*2] PowerMessageWake; +} +alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS_W; + +struct SP_DRVINFO_DATA_V2_A { + DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR[LINE_LEN] Description; + CHAR[LINE_LEN] MfgName; + CHAR[LINE_LEN] ProviderName; + FILETIME DriverDate; + DWORDLONG DriverVersion; +} +alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_V2_A; + +struct SP_DRVINFO_DATA_V2_W { + DWORD cbSize = SP_DRVINFO_DATA_V2_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] Description; + WCHAR[LINE_LEN] MfgName; + WCHAR[LINE_LEN] ProviderName; + FILETIME DriverDate; + DWORDLONG DriverVersion; +} +alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_V2_W; + +struct SP_DRVINFO_DATA_V1_A { + DWORD cbSize = SP_DRVINFO_DATA_V1_A.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + CHAR[LINE_LEN] Description; + CHAR[LINE_LEN] MfgName; + CHAR[LINE_LEN] ProviderName; +} +alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_V1_A; + +struct SP_DRVINFO_DATA_V1_W { + DWORD cbSize = SP_DRVINFO_DATA_V1_W.sizeof; + DWORD DriverType; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] Description; + WCHAR[LINE_LEN] MfgName; + WCHAR[LINE_LEN] ProviderName; +} +alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_V1_W; + +version (Unicode) { + alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1; + alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2; +} else { + alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1; + alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2; +} +alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA_V1; +alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA_V2; + +static if(USE_SP_DRVINFO_DATA_V1) { + alias SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V1_A* PSP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V1_W* PSP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V1* PSP_DRVINFO_DATA; +} else { + alias SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V2_A* PSP_DRVINFO_DATA_A; + alias SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V2_W* PSP_DRVINFO_DATA_W; + alias SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA; + alias SP_DRVINFO_DATA_V2* PSP_DRVINFO_DATA; +} + +extern(Windows) alias DWORD function(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINFO_DATA, PVOID) PSP_DETSIG_CMPPROC; + +struct SP_DRVINFO_DETAIL_DATA_A { + DWORD cbSize = SP_DRVINFO_DETAIL_DATA_A.sizeof; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + CHAR[LINE_LEN] SectionName; + CHAR[MAX_PATH] InfFileName; + CHAR[LINE_LEN] DrvDescription; + CHAR[1] _HardwareID; + CHAR* HardwareID() { return _HardwareID.ptr; } +} +alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA_A; + +struct SP_DRVINFO_DETAIL_DATA_W { + DWORD cbSize = SP_DRVINFO_DETAIL_DATA_W.sizeof; + FILETIME InfDate; + DWORD CompatIDsOffset; + DWORD CompatIDsLength; + ULONG_PTR Reserved; + WCHAR[LINE_LEN] SectionName; + WCHAR[MAX_PATH] InfFileName; + WCHAR[LINE_LEN] DrvDescription; + WCHAR[1] _HardwareID; + WCHAR* HardwareID() { return _HardwareID.ptr; } +} +alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA_W; + +struct SP_DRVINSTALL_PARAMS { + DWORD cbSize = SP_DRVINSTALL_PARAMS.sizeof; + DWORD Rank; + DWORD Flags; + DWORD_PTR PrivateData; + DWORD Reserved; +} +alias SP_DRVINSTALL_PARAMS* PSP_DRVINSTALL_PARAMS; + +struct COINSTALLER_CONTEXT_DATA { + BOOL PostProcessing; + DWORD InstallResult; + PVOID PrivateData; +} +alias COINSTALLER_CONTEXT_DATA* PCOINSTALLER_CONTEXT_DATA; + +struct SP_CLASSIMAGELIST_DATA { + DWORD cbSize = SP_CLASSIMAGELIST_DATA.sizeof; + HIMAGELIST ImageList; + ULONG_PTR Reserved; +} +alias SP_CLASSIMAGELIST_DATA* PSP_CLASSIMAGELIST_DATA; + +struct SP_PROPSHEETPAGE_REQUEST { + DWORD cbSize = SP_PROPSHEETPAGE_REQUEST.sizeof; + DWORD PageRequested; + HDEVINFO DeviceInfoSet; + PSP_DEVINFO_DATA DeviceInfoData; +} +alias SP_PROPSHEETPAGE_REQUEST* PSP_PROPSHEETPAGE_REQUEST; + +struct SP_BACKUP_QUEUE_PARAMS_A { + DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_A.sizeof; + CHAR[MAX_PATH] FullInfPath; + INT FilenameOffset; +} +alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS_A; + +struct SP_BACKUP_QUEUE_PARAMS_W { + DWORD cbSize = SP_BACKUP_QUEUE_PARAMS_W.sizeof; + WCHAR[MAX_PATH] FullInfPath; + INT FilenameOffset; +} +alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS_W; + +version (Unicode) { + alias SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO; + alias SP_ORIGINAL_FILE_INFO_W* PSP_ORIGINAL_FILE_INFO; + alias FILEPATHS_W FILEPATHS; + alias FILEPATHS_W* PFILEPATHS; + alias SOURCE_MEDIA_W SOURCE_MEDIA; + alias SOURCE_MEDIA_W* PSOURCE_MEDIA; + alias CABINET_INFO_W CABINET_INFO; + alias CABINET_INFO_W* PCABINET_INFO; + alias FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO; + alias FILE_IN_CABINET_INFO_W* PFILE_IN_CABINET_INFO; + alias SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS; + alias SP_FILE_COPY_PARAMS_W* PSP_FILE_COPY_PARAMS; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_DEVICE_INTERFACE_DETAIL_DATA; + deprecated { + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_W* PSP_INTERFACE_DEVICE_DETAIL_DATA; + } + alias SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINFO_LIST_DETAIL_DATA_W *PSP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINSTALL_PARAMS_W SP_DEVINSTALL_PARAMS; + alias SP_DEVINSTALL_PARAMS_W* PSP_DEVINSTALL_PARAMS; + alias SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS; + alias SP_SELECTDEVICE_PARAMS_W* PSP_SELECTDEVICE_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_W* PSP_TROUBLESHOOTER_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_W* PSP_POWERMESSAGEWAKE_PARAMS; + alias SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA; + alias SP_DRVINFO_DETAIL_DATA_W* PSP_DRVINFO_DETAIL_DATA; + alias SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS; + alias SP_BACKUP_QUEUE_PARAMS_W* PSP_BACKUP_QUEUE_PARAMS; +} else { + alias SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO; + alias SP_ORIGINAL_FILE_INFO_A* PSP_ORIGINAL_FILE_INFO; + alias FILEPATHS_A FILEPATHS; + alias FILEPATHS_A* PFILEPATHS; + alias SOURCE_MEDIA_A SOURCE_MEDIA; + alias SOURCE_MEDIA_A* PSOURCE_MEDIA; + alias CABINET_INFO_A CABINET_INFO; + alias CABINET_INFO_A* PCABINET_INFO; + alias FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO; + alias FILE_IN_CABINET_INFO_A* PFILE_IN_CABINET_INFO; + alias SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS; + alias SP_FILE_COPY_PARAMS_A* PSP_FILE_COPY_PARAMS; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_DEVICE_INTERFACE_DETAIL_DATA; + deprecated { + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA; + alias SP_DEVICE_INTERFACE_DETAIL_DATA_A* PSP_INTERFACE_DEVICE_DETAIL_DATA; + } + alias SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINFO_LIST_DETAIL_DATA_A* PSP_DEVINFO_LIST_DETAIL_DATA; + alias SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS; + alias SP_DEVINSTALL_PARAMS_A* PSP_DEVINSTALL_PARAMS; + alias SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS; + alias SP_SELECTDEVICE_PARAMS_A* PSP_SELECTDEVICE_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS; + alias SP_TROUBLESHOOTER_PARAMS_A* PSP_TROUBLESHOOTER_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS; + alias SP_POWERMESSAGEWAKE_PARAMS_A* PSP_POWERMESSAGEWAKE_PARAMS; + alias SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA; + alias SP_DRVINFO_DETAIL_DATA_A* PSP_DRVINFO_DETAIL_DATA; + alias SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS; + alias SP_BACKUP_QUEUE_PARAMS_A* PSP_BACKUP_QUEUE_PARAMS; +} + +extern (Windows) { + BOOL SetupAddInstallSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); + BOOL SetupAddInstallSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); + BOOL SetupAddSectionToDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); + BOOL SetupAddSectionToDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); + BOOL SetupAddToDiskSpaceListA(HDSKSPC, PCSTR, LONGLONG, UINT, PVOID, UINT); + BOOL SetupAddToDiskSpaceListW(HDSKSPC, PCWSTR, LONGLONG, UINT, PVOID, UINT); + BOOL SetupAddToSourceListA(DWORD, PCSTR); + BOOL SetupAddToSourceListW(DWORD, PCWSTR); + BOOL SetupQuerySourceListA(DWORD, PCSTR**List, PUINT); + BOOL SetupQuerySourceListW(DWORD, PCWSTR**List, PUINT); + BOOL SetupFreeSourceListA(PCSTR**List, UINT); + BOOL SetupFreeSourceListW(PCWSTR**List, UINT); + BOOL SetupAdjustDiskSpaceListA(HDSKSPC, LPCSTR, LONGLONG, PVOID, UINT); + BOOL SetupAdjustDiskSpaceListW(HDSKSPC, LPCWSTR, LONGLONG, PVOID, UINT); + UINT SetupBackupErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); + UINT SetupBackupErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupCancelTemporary(); + BOOL SetupCloseFileQueue(HSPFILEQ); + VOID SetupCloseInfFile(HINF); + VOID SetupCloseLog(); + BOOL SetupCommitFileQueueA(HWND, HSPFILEQ, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupCommitFileQueueW(HWND, HSPFILEQ, PSP_FILE_CALLBACK_W, PVOID); + UINT SetupCopyErrorA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, UINT, DWORD, PSTR, DWORD, PDWORD); + UINT SetupCopyErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupCopyOEMInfA(PCSTR, PCSTR, DWORD, DWORD, PSTR, DWORD, PDWORD, PSTR*); + BOOL SetupCopyOEMInfW(PCWSTR, PCWSTR, DWORD, DWORD, PWSTR, DWORD, PDWORD, PWSTR*); + HDSKSPC SetupCreateDiskSpaceListA(PVOID, DWORD, UINT); + HDSKSPC SetupCreateDiskSpaceListW(PVOID, DWORD, UINT); + DWORD SetupDecompressOrCopyFileA(PCSTR, PCSTR, PUINT); + DWORD SetupDecompressOrCopyFileW(PCWSTR, PCWSTR, PUINT); + UINT SetupDefaultQueueCallbackA(PVOID, UINT, UINT_PTR, UINT_PTR); + UINT SetupDefaultQueueCallbackW(PVOID, UINT, UINT_PTR, UINT_PTR); + UINT SetupDeleteErrorA(HWND, PCSTR, PCSTR, UINT, DWORD); + UINT SetupDeleteErrorW(HWND, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupDestroyDiskSpaceList(HDSKSPC); + BOOL SetupDiAskForOEMDisk(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiBuildClassInfoList(DWORD, LPGUID, DWORD, PDWORD); + BOOL SetupDiBuildClassInfoListExA(DWORD, LPGUID, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiBuildClassInfoListExW(DWORD, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiBuildDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); + BOOL SetupDiCallClassInstaller(DI_FUNCTION, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiCancelDriverInfoSearch(HDEVINFO); + BOOL SetupDiChangeState(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiClassGuidsFromNameA(PCSTR, LPGUID, DWORD, PDWORD); + BOOL SetupDiClassGuidsFromNameW(PCWSTR, LPGUID, DWORD, PDWORD); + BOOL SetupDiClassGuidsFromNameExA(PCSTR, LPGUID, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiClassGuidsFromNameExW(PCWSTR, LPGUID, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiClassNameFromGuidA(const(GUID)*, PSTR, DWORD, PDWORD); + BOOL SetupDiClassNameFromGuidW(const(GUID)*, PWSTR, DWORD, PDWORD); + BOOL SetupDiClassNameFromGuidExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiClassNameFromGuidExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiCreateDeviceInfoA(HDEVINFO, PCSTR, const(GUID)*, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiCreateDeviceInfoW(HDEVINFO, PCWSTR, const(GUID)*, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); + HDEVINFO SetupDiCreateDeviceInfoList(const(GUID)*, HWND); + HDEVINFO SetupDiCreateDeviceInfoListExA(const(GUID)*, HWND, PCSTR, PVOID); + HDEVINFO SetupDiCreateDeviceInfoListExW(const(GUID)*, HWND, PCWSTR, PVOID); + BOOL SetupDiCreateDeviceInterfaceA(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiCreateDeviceInterfaceW(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + HKEY SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCSTR); + HKEY SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCWSTR); + HKEY SetupDiCreateDevRegKeyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCSTR); + HKEY SetupDiCreateDevRegKeyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, HINF, PCWSTR); + BOOL SetupDiDeleteDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiDeleteDeviceInterfaceData(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD); + BOOL SetupDiDeleteDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD); + BOOL SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA); + BOOL SetupDiDestroyDeviceInfoList(HDEVINFO); + BOOL SetupDiDestroyDriverInfoList(HDEVINFO, PSP_DEVINFO_DATA, DWORD); + INT SetupDiDrawMiniIcon(HDC, RECT, INT, DWORD); + BOOL SetupDiEnumDeviceInfo(HDEVINFO, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const(GUID)*, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiEnumDriverInfoA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_A); + BOOL SetupDiEnumDriverInfoW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, PSP_DRVINFO_DATA_W); + BOOL SetupDiGetActualSectionToInstallA(HINF, PCSTR, PSTR, DWORD, PDWORD, PSTR*); + BOOL SetupDiGetActualSectionToInstallW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR*); + BOOL SetupDiGetClassBitmapIndex(const(GUID)*, PINT); + BOOL SetupDiGetClassDescriptionA(const(GUID)*, PSTR, DWORD, PDWORD); + BOOL SetupDiGetClassDescriptionW(const(GUID)*, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetClassDescriptionExA(const(GUID)*, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetClassDescriptionExW(const(GUID)*, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetClassDevPropertySheetsA(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERA, DWORD, PDWORD, DWORD); + BOOL SetupDiGetClassDevPropertySheetsW(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERW, DWORD, PDWORD, DWORD); + HDEVINFO SetupDiGetClassDevsA(const(GUID)*, PCSTR, HWND, DWORD); + HDEVINFO SetupDiGetClassDevsW(const(GUID)*, PCWSTR, HWND, DWORD); + HDEVINFO SetupDiGetClassDevsExA(const(GUID)*, PCSTR, HWND, DWORD, HDEVINFO, PCSTR, PVOID); + HDEVINFO SetupDiGetClassDevsExW(const(GUID)*, PCWSTR, HWND, DWORD, HDEVINFO, PCWSTR, PVOID); + BOOL SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA, const(GUID)*, PINT); + BOOL SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA); + BOOL SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA, PCSTR, PVOID); + BOOL SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA, PCWSTR, PVOID); + BOOL SetupDiGetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); + BOOL SetupDiGetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD); + BOOL SetupDiGetClassRegistryPropertyA(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetClassRegistryPropertyW(LPGUID, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetDeviceInfoListClass(HDEVINFO, LPGUID); + BOOL SetupDiGetDeviceInfoListDetailA(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_A); + BOOL SetupDiGetDeviceInfoListDetailW(HDEVINFO, PSP_DEVINFO_LIST_DETAIL_DATA_W); + BOOL SetupDiGetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); + BOOL SetupDiGetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); + BOOL SetupDiGetDeviceInstanceIdA(HDEVINFO, PSP_DEVINFO_DATA, PSTR, DWORD, PDWORD); + BOOL SetupDiGetDeviceInstanceIdW(HDEVINFO, PSP_DEVINFO_DATA, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetDeviceInterfaceAlias(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, const(GUID)*, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A, DWORD, PDWORD, PSP_DEVINFO_DATA); + BOOL SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W, DWORD, PDWORD, PSP_DEVINFO_DATA); + BOOL SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); + BOOL SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD); + BOOL SetupDiGetDriverInfoDetailA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINFO_DETAIL_DATA_A, DWORD, PDWORD); + BOOL SetupDiGetDriverInfoDetailW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINFO_DETAIL_DATA_W, DWORD, PDWORD); + BOOL SetupDiGetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiGetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiGetHwProfileFriendlyNameA(DWORD, PSTR, DWORD, PDWORD); + BOOL SetupDiGetHwProfileFriendlyNameExA(DWORD, PSTR, DWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetHwProfileFriendlyNameExW(DWORD, PWSTR, DWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetHwProfileFriendlyNameW(DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetHwProfileList(PDWORD, DWORD, PDWORD, PDWORD); + BOOL SetupDiGetHwProfileListExA(PDWORD, DWORD, PDWORD, PDWORD, PCSTR, PVOID); + BOOL SetupDiGetHwProfileListExW(PDWORD, DWORD, PDWORD, PDWORD, PCWSTR, PVOID); + BOOL SetupDiGetINFClassA(PCSTR, LPGUID, PSTR, DWORD, PDWORD); + BOOL SetupDiGetINFClassW(PCWSTR, LPGUID, PWSTR, DWORD, PDWORD); + BOOL SetupDiGetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiGetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); + BOOL SetupDiGetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); + HPROPSHEETPAGE SetupDiGetWizardage(HDEVINFO, PSP_DEVINFO_DATA, PSP_INSTALLWIZARD_DATA, DWORD, DWORD); + BOOL SetupDiInstallClassA(HWND, PCSTR, DWORD, HSPFILEQ); + BOOL SetupDiInstallClassW(HWND, PCWSTR, DWORD, HSPFILEQ); + BOOL SetupDiInstallClassExA(HWND, PCSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); + BOOL SetupDiInstallClassExW(HWND, PCWSTR, DWORD, HSPFILEQ, const(GUID)*, PVOID, PVOID); + BOOL SetupDiInstallDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiInstallDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiInstallDriverFiles(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiLoadClassIcon(const(GUID)*, HICON*, PINT); + BOOL SetupDiMoveDuplicateDevice(HDEVINFO, PSP_DEVINFO_DATA); + HKEY SetupDiOpenClassRegKey(const(GUID)*, REGSAM); + HKEY SetupDiOpenClassRegKeyExA(const(GUID)*, REGSAM, DWORD, PCSTR, PVOID); + HKEY SetupDiOpenClassRegKeyExW(const(GUID)*, REGSAM, DWORD, PCWSTR, PVOID); + BOOL SetupDiOpenDeviceInfoA(HDEVINFO, PCSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiOpenDeviceInfoW(HDEVINFO, PCWSTR, HWND, DWORD, PSP_DEVINFO_DATA); + BOOL SetupDiOpenDeviceInterfaceA(HDEVINFO, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiOpenDeviceInterfaceW(HDEVINFO, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA); + HKEY SetupDiOpenDeviceInterfaceRegKey(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM); + HKEY SetupDiOpenDevRegKey(HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM); + BOOL SetupDiRegisterCoDeviceInstallers(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiRegisterDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PSP_DETSIG_CMPPROC, PVOID, PSP_DEVINFO_DATA); + BOOL SetupDiRemoveDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiRemoveDeviceInterface(HDEVINFO, PSP_DEVICE_INTERFACE_DATA); + BOOL SetupDiSelectBestCompatDrv(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSelectDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSelectOEMDrv(HWND, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); + BOOL SetupDiSetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD); + BOOL SetupDiSetClassRegistryPropertyA(LPGUID, DWORD, const(BYTE)*, DWORD, PCSTR, PVOID); + BOOL SetupDiSetClassRegistryPropertyW(LPGUID, DWORD, const(BYTE)*, DWORD, PCWSTR, PVOID); + BOOL SetupDiSetDeviceInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_A); + BOOL SetupDiSetDeviceInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DEVINSTALL_PARAMS_W); + BOOL SetupDiSetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); + BOOL SetupDiSetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const(BYTE)*, DWORD); + BOOL SetupDiSetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiSetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS); + BOOL SetupDiSetSelectedDevice(HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupDiSetSelectedDriverA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A); + BOOL SetupDiSetSelectedDriverW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W); + BOOL SetupDiUnremoveDevice(HDEVINFO, PSP_DEVINFO_DATA); + HDSKSPC SetupDuplicateDiskSpaceListA(HDSKSPC, PVOID, DWORD, UINT); + HDSKSPC SetupDuplicateDiskSpaceListW(HDSKSPC, PVOID, DWORD, UINT); + BOOL SetupFindFirstLineA(HINF, PCSTR, PCSTR, PINFCONTEXT); + BOOL SetupFindFirstLineW(HINF, PCWSTR, PCWSTR, PINFCONTEXT); + BOOL SetupFindNextLine(PINFCONTEXT, PINFCONTEXT); + BOOL SetupFindNextMatchLineA(PINFCONTEXT, PCSTR, PINFCONTEXT); + BOOL SetupFindNextMatchLineW(PINFCONTEXT, PCWSTR, PINFCONTEXT); + BOOL SetupFreeA(PCSTR**, UINT); + BOOL SetupFreeW(PCWSTR**, UINT); + BOOL SetupGetBackupInformationA(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_A); + BOOL SetupGetBackupInformationW(HSPFILEQ, PSP_BACKUP_QUEUE_PARAMS_W); + BOOL SetupGetBinaryField(PINFCONTEXT, DWORD, PBYTE, DWORD, LPDWORD); + DWORD SetupGetFieldCount(PINFCONTEXT); + DWORD SetupGetFileCompressionInfoA(PCSTR, PSTR*, PDWORD, PDWORD, PUINT); + DWORD SetupGetFileCompressionInfoW(PCWSTR, PWSTR*, PDWORD, PDWORD, PUINT); + BOOL SetupGetInfFileListA(PCSTR, DWORD, PSTR, DWORD, PDWORD); + BOOL SetupGetInfFileListW(PCWSTR, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupGetInfInformationA(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); + BOOL SetupGetInfInformationW(LPCVOID, DWORD, PSP_INF_INFORMATION, DWORD, PDWORD); + BOOL SetupGetIntField(PINFCONTEXT, DWORD, PINT); + BOOL SetupGetLineByIndexA(HINF, PCSTR, DWORD, PINFCONTEXT); + BOOL SetupGetLineByIndexW(HINF, PCWSTR, DWORD, PINFCONTEXT); + LONG SetupGetLineCountA(HINF, PCSTR); + LONG SetupGetLineCountW(HINF, PCWSTR); + BOOL SetupGetLineTextA(PINFCONTEXT, HINF, PCSTR, PCSTR, PSTR, DWORD, PDWORD); + BOOL SetupGetLineTextW(PINFCONTEXT, HINF, PCWSTR, PCWSTR, PWSTR, DWORD, PDWORD); + BOOL SetupGetMultiSzFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, LPDWORD); + BOOL SetupGetMultiSzFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, LPDWORD); + BOOL SetupGetSourceFileLocationA(HINF, PINFCONTEXT, PCSTR, PUINT, PSTR, DWORD, PDWORD); + BOOL SetupGetSourceFileLocationW(HINF, PINFCONTEXT, PCWSTR, PUINT, PWSTR, DWORD, PDWORD); + BOOL SetupGetSourceFileSizeA(HINF, PINFCONTEXT, PCSTR, PCSTR, PDWORD, UINT); + BOOL SetupGetSourceFileSizeW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PDWORD, UINT); + BOOL SetupGetSourceInfoA(HINF, UINT, UINT, PSTR, DWORD, PDWORD); + BOOL SetupGetSourceInfoW(HINF, UINT, UINT, PWSTR, DWORD, PDWORD); + BOOL SetupGetStringFieldA(PINFCONTEXT, DWORD, PSTR, DWORD, PDWORD); + BOOL SetupGetStringFieldW(PINFCONTEXT, DWORD, PWSTR, DWORD, PDWORD); + BOOL SetupGetTargetPathA(HINF, PINFCONTEXT, PCSTR, PSTR, DWORD, PDWORD); + BOOL SetupGetTargetPathW(HINF, PINFCONTEXT, PCWSTR, PWSTR, DWORD, PDWORD); + PVOID SetupInitDefaultQueueCallback(HWND); + PVOID SetupInitDefaultQueueCallbackEx(HWND, HWND, UINT, DWORD, PVOID); + HSPFILELOG SetupInitializeFileLogA(PCSTR, DWORD); + HSPFILELOG SetupInitializeFileLogW(PCWSTR, DWORD); + BOOL SetupInstallFileA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupInstallFileW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); + BOOL SetupInstallFileExA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID, PBOOL); + BOOL SetupInstallFileExW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID, PBOOL); + BOOL SetupInstallFilesFromInfSectionA(HINF, HINF, HSPFILEQ, PCSTR, PCSTR, UINT); + BOOL SetupInstallFilesFromInfSectionW(HINF, HINF, HSPFILEQ, PCWSTR, PCWSTR, UINT); + BOOL SetupInstallFromInfSectionA(HWND, HINF, PCSTR, UINT, HKEY, PCSTR, UINT, PSP_FILE_CALLBACK_A, PVOID, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupInstallFromInfSectionW(HWND, HINF, PCWSTR, UINT, HKEY, PCWSTR, UINT, PSP_FILE_CALLBACK_W, PVOID, HDEVINFO, PSP_DEVINFO_DATA); + BOOL SetupInstallServicesFromInfSectionA(HINF, PCSTR, DWORD); + BOOL SetupInstallServicesFromInfSectionW(HINF, PCWSTR, DWORD); + BOOL SetupInstallServicesFromInfSectionExA(HINF, PCSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); + BOOL SetupInstallServicesFromInfSectionExW(HINF, PCWSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID); + BOOL SetupIterateCabinetA(PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID); + BOOL SetupIterateCabinetW(PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID); + BOOL SetupLogErrorA(LPCSTR, LogSeverity); + BOOL SetupLogErrorW(LPCWSTR, LogSeverity); + BOOL SetupLogFileA(HSPFILELOG, PCSTR, PCSTR, PCSTR, DWORD, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupLogFileW(HSPFILELOG, PCWSTR, PCWSTR, PCWSTR, DWORD, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupOpenAppendInfFileA(PCSTR, HINF, PUINT); + BOOL SetupOpenAppendInfFileW(PCWSTR, HINF, PUINT); + HSPFILEQ SetupOpenFileQueue(); + HINF SetupOpenInfFileA(PCSTR, PCSTR, DWORD, PUINT); + HINF SetupOpenInfFileW(PCWSTR, PCWSTR, DWORD, PUINT); + BOOL SetupOpenLog(BOOL); + HINF SetupOpenMasterInf(); + UINT SetupPromptForDiskA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD, PSTR, DWORD, PDWORD); + UINT SetupPromptForDiskW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD, PWSTR, DWORD, PDWORD); + INT SetupPromptReboot(HSPFILEQ, HWND, BOOL); + BOOL SetupQueryA(DWORD, PCSTR**, PUINT); + BOOL SetupQueryW(DWORD, PCWSTR**, PUINT); + BOOL SetupQueryDrivesInDiskSpaceListA(HDSKSPC, PSTR, DWORD, PDWORD); + BOOL SetupQueryDrivesInDiskSpaceListW(HDSKSPC, PWSTR, DWORD, PDWORD); + BOOL SetupQueryFileLogA(HSPFILELOG, PCSTR, PCSTR, SetupFileLogInfo, PSTR, DWORD, PDWORD); + BOOL SetupQueryFileLogW(HSPFILELOG, PCWSTR, PCWSTR, SetupFileLogInfo, PWSTR, DWORD, PDWORD); + BOOL SetupQueryInfFileInformationA(PSP_INF_INFORMATION, UINT, PSTR, DWORD, PDWORD); + BOOL SetupQueryInfFileInformationW(PSP_INF_INFORMATION, UINT, PWSTR, DWORD, PDWORD); + BOOL SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_A); + BOOL SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_W); + BOOL SetupQueryInfVersionInformationA(PSP_INF_INFORMATION, UINT, PSTR, PSTR, DWORD, PDWORD); + BOOL SetupQueryInfVersionInformationW(PSP_INF_INFORMATION, UINT, PCWSTR, PWSTR, DWORD, PDWORD); + BOOL SetupQuerySpaceRequiredOnDriveA(HDSKSPC, PCSTR, LONGLONG*, PVOID, UINT); + BOOL SetupQuerySpaceRequiredOnDriveW(HDSKSPC, PCWSTR, LONGLONG*, PVOID, UINT); + BOOL SetupQueueCopyA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupQueueCopyW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A); + BOOL SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W); + BOOL SetupQueueCopySectionA(HSPFILEQ, PCSTR, HINF, HINF, PCSTR, DWORD); + BOOL SetupQueueCopySectionW(HSPFILEQ, PCWSTR, HINF, HINF, PCWSTR, DWORD); + BOOL SetupQueueDefaultCopyA(HSPFILEQ, HINF, PCSTR, PCSTR, PCSTR, DWORD); + BOOL SetupQueueDefaultCopyW(HSPFILEQ, HINF, PCWSTR, PCWSTR, PCWSTR, DWORD); + BOOL SetupQueueDeleteA(HSPFILEQ, PCSTR, PCSTR); + BOOL SetupQueueDeleteW(HSPFILEQ, PCWSTR, PCWSTR); + BOOL SetupQueueDeleteSectionA(HSPFILEQ, HINF, HINF, PCSTR); + BOOL SetupQueueDeleteSectionW(HSPFILEQ, HINF, HINF, PCWSTR); + BOOL SetupQueueRenameA(HSPFILEQ, PCSTR, PCSTR, PCSTR, PCSTR); + BOOL SetupQueueRenameW(HSPFILEQ, PCWSTR, PCWSTR, PCWSTR, PCWSTR); + BOOL SetupQueueRenameSectionA(HSPFILEQ, HINF, HINF, PCSTR); + BOOL SetupQueueRenameSectionW(HSPFILEQ, HINF, HINF, PCWSTR); + BOOL SetupRemoveFileLogEntryA(HSPFILELOG, PCSTR, PCSTR); + BOOL SetupRemoveFileLogEntryW(HSPFILELOG, PCWSTR, PCWSTR); + BOOL SetupRemoveFromDiskSpaceListA(HDSKSPC, PCSTR, UINT, PVOID, UINT); + BOOL SetupRemoveFromDiskSpaceListW(HDSKSPC, PCWSTR, UINT, PVOID, UINT); + BOOL SetupRemoveFromSourceListA(DWORD, PCSTR); + BOOL SetupRemoveFromSourceListW(DWORD, PCWSTR); + BOOL SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, PVOID, UINT); + BOOL SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, PVOID, UINT); + BOOL SetupRemoveSectionFromDiskSpaceListA(HDSKSPC, HINF, HINF, PCSTR, UINT, PVOID, UINT); + BOOL SetupRemoveSectionFromDiskSpaceListW(HDSKSPC, HINF, HINF, PCWSTR, UINT, PVOID, UINT); + UINT SetupRenameErrorA(HWND, PCSTR, PCSTR, PCSTR, UINT, DWORD); + UINT SetupRenameErrorW(HWND, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD); + BOOL SetupScanFileQueueA(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_A, PVOID, PDWORD); + BOOL SetupScanFileQueueW(HSPFILEQ, DWORD, HWND, PSP_FILE_CALLBACK_W, PVOID, PDWORD); + BOOL SetupSetDirectoryIdA(HINF, DWORD, PCSTR); + BOOL SetupSetDirectoryIdW(HINF, DWORD, PCWSTR); + BOOL SetupSetDirectoryIdExA(HINF, DWORD, PCSTR, DWORD, DWORD, PVOID); + BOOL SetupSetDirectoryIdExW(HINF, DWORD, PCWSTR, DWORD, DWORD, PVOID); + BOOL SetupSetFileQueueAlternatePlatformA(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCSTR); + BOOL SetupSetFileQueueAlternatePlatformW(HSPFILEQ, PSP_ALTPLATFORM_INFO, PCWSTR); + BOOL SetupSetPlatformPathOverrideA(PCSTR); + BOOL SetupSetPlatformPathOverrideW(PCWSTR); + BOOL SetupSetSourceListA(DWORD, PCSTR*, UINT); + BOOL SetupSetSourceListW(DWORD, PCWSTR*, UINT); + VOID SetupTermDefaultQueueCallback(PVOID); + BOOL SetupTerminateFileLog(HSPFILELOG); +} + +deprecated { + alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDeviceW; + alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKeyW; + alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDeviceW; + alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetailW; + alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDeviceA; + alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKeyA; + alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDeviceA; + alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetailA; +} + +version (Unicode) { + alias PSP_FILE_CALLBACK_W PSP_FILE_CALLBACK; + alias SetupAddInstallSectionToDiskSpaceListW SetupAddInstallSectionToDiskSpaceList; + alias SetupAddSectionToDiskSpaceListW SetupAddSectionToDiskSpaceList; + alias SetupAddToDiskSpaceListW SetupAddToDiskSpaceList; + alias SetupAddToSourceListW SetupAddToSourceList; + alias SetupAdjustDiskSpaceListW SetupAdjustDiskSpaceList; + alias SetupBackupErrorW SetupBackupError; + alias SetupCommitFileQueueW SetupCommitFileQueue; + alias SetupCopyErrorW SetupCopyError; + alias SetupCopyOEMInfW SetupCopyOEMInf; + alias SetupCreateDiskSpaceListW SetupCreateDiskSpaceList; + alias SetupDecompressOrCopyFileW SetupDecompressOrCopyFile; + alias SetupDefaultQueueCallbackW SetupDefaultQueueCallback; + alias SetupDeleteErrorW SetupDeleteError; + alias SetupDiBuildClassInfoListExW SetupDiBuildClassInfoListEx; + alias SetupDiClassGuidsFromNameExW SetupDiClassGuidsFromNameEx; + alias SetupDiClassGuidsFromNameW SetupDiClassGuidsFromName; + alias SetupDiClassNameFromGuidExW SetupDiClassNameFromGuidEx; + alias SetupDiClassNameFromGuidW SetupDiClassNameFromGuid; + alias SetupDiCreateDeviceInfoListExW SetupDiCreateDeviceInfoListEx; + alias SetupDiCreateDeviceInfoW SetupDiCreateDeviceInfo; + alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateDeviceInterfaceRegKey; + deprecated alias SetupDiCreateDeviceInterfaceRegKeyW SetupDiCreateInterfaceDeviceRegKey; + alias SetupDiCreateDeviceInterfaceW SetupDiCreateDeviceInterface; + deprecated alias SetupDiCreateDeviceInterfaceW SetupDiCreateInterfaceDevice; + alias SetupDiCreateDevRegKeyW SetupDiCreateDevRegKey; + alias SetupDiEnumDriverInfoW SetupDiEnumDriverInfo; + alias SetupDiGetActualSectionToInstallW SetupDiGetActualSectionToInstall; + alias SetupDiGetClassDescriptionExW SetupDiGetClassDescriptionEx; + alias SetupDiGetClassDescriptionW SetupDiGetClassDescription; + alias SetupDiGetClassDevPropertySheetsW SetupDiGetClassDevPropertySheets; + alias SetupDiGetClassDevsExW SetupDiGetClassDevsEx; + alias SetupDiGetClassDevsW SetupDiGetClassDevs; + alias SetupDiGetClassImageListExW SetupDiGetClassImageListEx; + alias SetupDiGetClassInstallParamsW SetupDiGetClassInstallParams; + alias SetupDiGetClassRegistryPropertyW SetupDiGetClassRegistryProperty; + alias SetupDiGetDeviceInfoListDetailW SetupDiGetDeviceInfoListDetail; + alias SetupDiGetDeviceInstallParamsW SetupDiGetDeviceInstallParams; + alias SetupDiGetDeviceInstanceIdW SetupDiGetDeviceInstanceId; + alias SetupDiGetDeviceInterfaceDetailW SetupDiGetDeviceInterfaceDetail; + deprecated alias SetupDiGetDeviceInterfaceDetailW SetupDiGetInterfaceDeviceDetail; + alias SetupDiGetDeviceRegistryPropertyW SetupDiGetDeviceRegistryProperty; + alias SetupDiGetDriverInfoDetailW SetupDiGetDriverInfoDetail; + alias SetupDiGetDriverInstallParamsW SetupDiGetDriverInstallParams; + alias SetupDiGetHwProfileFriendlyNameExW SetupDiGetHwProfileFriendlyNameEx; + alias SetupDiGetHwProfileFriendlyNameW SetupDiGetHwProfileFriendlyName; + alias SetupDiGetHwProfileListExW SetupDiGetHwProfileListEx; + alias SetupDiGetINFClassW SetupDiGetINFClass; + alias SetupDiGetSelectedDriverW SetupDiGetSelectedDriver; + alias SetupDiInstallClassExW SetupDiInstallClassEx; + alias SetupDiInstallClassW SetupDiInstallClass; + alias SetupDiOpenClassRegKeyExW SetupDiOpenClassRegKeyEx; + alias SetupDiOpenDeviceInfoW SetupDiOpenDeviceInfo; + alias SetupDiOpenDeviceInterfaceW SetupDiOpenDeviceInterface; + deprecated alias SetupDiOpenDeviceInterfaceW SetupDiOpenInterfaceDevice; + alias SetupDiSetClassInstallParamsW SetupDiSetClassInstallParams; + alias SetupDiSetClassRegistryPropertyW SetupDiSetClassRegistryProperty; + alias SetupDiSetDeviceInstallParamsW SetupDiSetDeviceInstallParams; + alias SetupDiSetDeviceRegistryPropertyW SetupDiSetDeviceRegistryProperty; + alias SetupDiSetDriverInstallParamsW SetupDiSetDriverInstallParams; + alias SetupDiSetSelectedDriverW SetupDiSetSelectedDriver; + alias SetupDuplicateDiskSpaceListW SetupDuplicateDiskSpaceList; + alias SetupFindFirstLineW SetupFindFirstLine; + alias SetupFindNextMatchLineW SetupFindNextMatchLine; + alias SetupFreeSourceListW SetupFreeSourceList; + alias SetupGetBackupInformationW SetupGetBackupInformation; + alias SetupGetFileCompressionInfoW SetupGetFileCompressionInfo; + alias SetupGetInfFileListW SetupGetInfFileList; + alias SetupGetInfInformationW SetupGetInfInformation; + alias SetupGetLineByIndexW SetupGetLineByIndex; + alias SetupGetLineCountW SetupGetLineCount; + alias SetupGetLineTextW SetupGetLineText; + alias SetupGetMultiSzFieldW SetupGetMultiSzField; + alias SetupGetSourceFileLocationW SetupGetSourceFileLocation; + alias SetupGetSourceFileSizeW SetupGetSourceFileSize; + alias SetupGetSourceInfoW SetupGetSourceInfo; + alias SetupGetStringFieldW SetupGetStringField; + alias SetupGetTargetPathW SetupGetTargetPath; + alias SetupInitializeFileLogW SetupInitializeFileLog; + alias SetupInstallFileExW SetupInstallFileEx; + alias SetupInstallFilesFromInfSectionW SetupInstallFilesFromInfSection; + alias SetupInstallFileW SetupInstallFile; + alias SetupInstallFromInfSectionW SetupInstallFromInfSection; + alias SetupInstallServicesFromInfSectionExW SetupInstallServicesFromInfSectionEx; + alias SetupInstallServicesFromInfSectionW SetupInstallServicesFromInfSection; + alias SetupIterateCabinetW SetupIterateCabinet; + alias SetupLogErrorW SetupLogError; + alias SetupLogFileW SetupLogFile; + alias SetupOpenAppendInfFileW SetupOpenAppendInfFile; + alias SetupOpenInfFileW SetupOpenInfFile; + alias SetupPromptForDiskW SetupPromptForDisk; + alias SetupQueryDrivesInDiskSpaceListW SetupQueryDrivesInDiskSpaceList; + alias SetupQueryFileLogW SetupQueryFileLog; + alias SetupQueryInfFileInformationW SetupQueryInfFileInformation; + alias SetupQueryInfOriginalFileInformationW SetupQueryInfOriginalFileInformation; + alias SetupQueryInfVersionInformationW SetupQueryInfVersionInformation; + alias SetupQuerySourceListW SetupQuerySourceList; + alias SetupQuerySpaceRequiredOnDriveW SetupQuerySpaceRequiredOnDrive; + alias SetupQueueCopyIndirectW SetupQueueCopyIndirect; + alias SetupQueueCopySectionW SetupQueueCopySection; + alias SetupQueueCopyW SetupQueueCopy; + alias SetupQueueDefaultCopyW SetupQueueDefaultCopy; + alias SetupQueueDeleteSectionW SetupQueueDeleteSection; + alias SetupQueueDeleteW SetupQueueDelete; + alias SetupQueueRenameSectionW SetupQueueRenameSection; + alias SetupQueueRenameW SetupQueueRename; + alias SetupRemoveFileLogEntryW SetupRemoveFileLogEntry; + alias SetupRemoveFromDiskSpaceListW SetupRemoveFromDiskSpaceList; + alias SetupRemoveFromSourceListW SetupRemoveFromSourceList; + alias SetupRemoveInstallSectionFromDiskSpaceListW SetupRemoveInstallSectionFromDiskSpaceList; + alias SetupRemoveSectionFromDiskSpaceListW SetupRemoveSectionFromDiskSpaceList; + alias SetupRenameErrorW SetupRenameError; + alias SetupScanFileQueueW SetupScanFileQueue; + alias SetupSetDirectoryIdExW SetupSetDirectoryIdEx; + alias SetupSetDirectoryIdW SetupSetDirectoryId; + alias SetupSetFileQueueAlternatePlatformW SetupSetFileQueueAlternatePlatform; + alias SetupSetPlatformPathOverrideW SetupSetPlatformPathOverride; + alias SetupSetSourceListW SetupSetSourceList; +} else { + alias PSP_FILE_CALLBACK_A PSP_FILE_CALLBACK; + alias SetupAddInstallSectionToDiskSpaceListA SetupAddInstallSectionToDiskSpaceList; + alias SetupAddSectionToDiskSpaceListA SetupAddSectionToDiskSpaceList; + alias SetupAddToDiskSpaceListA SetupAddToDiskSpaceList; + alias SetupAddToSourceListA SetupAddToSourceList; + alias SetupAdjustDiskSpaceListA SetupAdjustDiskSpaceList; + alias SetupBackupErrorA SetupBackupError; + alias SetupCommitFileQueueA SetupCommitFileQueue; + alias SetupCopyErrorA SetupCopyError; + alias SetupCopyOEMInfA SetupCopyOEMInf; + alias SetupCreateDiskSpaceListA SetupCreateDiskSpaceList; + alias SetupDecompressOrCopyFileA SetupDecompressOrCopyFile; + alias SetupDefaultQueueCallbackA SetupDefaultQueueCallback; + alias SetupDeleteErrorA SetupDeleteError; + alias SetupDiBuildClassInfoListExA SetupDiBuildClassInfoListEx; + alias SetupDiClassGuidsFromNameA SetupDiClassGuidsFromName; + alias SetupDiClassGuidsFromNameExA SetupDiClassGuidsFromNameEx; + alias SetupDiClassNameFromGuidA SetupDiClassNameFromGuid; + alias SetupDiClassNameFromGuidExA SetupDiClassNameFromGuidEx; + alias SetupDiCreateDeviceInfoA SetupDiCreateDeviceInfo; + alias SetupDiCreateDeviceInfoListExA SetupDiCreateDeviceInfoListEx; + alias SetupDiCreateDeviceInterfaceA SetupDiCreateDeviceInterface; + deprecated alias SetupDiCreateDeviceInterfaceA SetupDiCreateInterfaceDevice; + alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateDeviceInterfaceRegKey; + deprecated alias SetupDiCreateDeviceInterfaceRegKeyA SetupDiCreateInterfaceDeviceRegKey; + alias SetupDiCreateDevRegKeyA SetupDiCreateDevRegKey; + alias SetupDiDeleteDeviceInterfaceData SetupDiDeleteInterfaceDeviceData; + alias SetupDiEnumDriverInfoA SetupDiEnumDriverInfo; + alias SetupDiGetActualSectionToInstallA SetupDiGetActualSectionToInstall; + alias SetupDiGetClassDescriptionA SetupDiGetClassDescription; + alias SetupDiGetClassDescriptionExA SetupDiGetClassDescriptionEx; + alias SetupDiGetClassDevPropertySheetsA SetupDiGetClassDevPropertySheets; + alias SetupDiGetClassDevsA SetupDiGetClassDevs; + alias SetupDiGetClassDevsExA SetupDiGetClassDevsEx; + alias SetupDiGetClassImageListExA SetupDiGetClassImageListEx; + alias SetupDiGetClassInstallParamsA SetupDiGetClassInstallParams; + alias SetupDiGetClassRegistryPropertyA SetupDiGetClassRegistryProperty; + alias SetupDiGetDeviceInfoListDetailA SetupDiGetDeviceInfoListDetail; + alias SetupDiGetDeviceInstallParamsA SetupDiGetDeviceInstallParams; + alias SetupDiGetDeviceInstanceIdA SetupDiGetDeviceInstanceId; + alias SetupDiGetDeviceInterfaceDetailA SetupDiGetDeviceInterfaceDetail; + deprecated alias SetupDiGetDeviceInterfaceDetailA SetupDiGetInterfaceDeviceDetail; + alias SetupDiGetDeviceRegistryPropertyA SetupDiGetDeviceRegistryProperty; + alias SetupDiGetDriverInfoDetailA SetupDiGetDriverInfoDetail; + alias SetupDiGetDriverInstallParamsA SetupDiGetDriverInstallParams; + alias SetupDiGetHwProfileFriendlyNameA SetupDiGetHwProfileFriendlyName; + alias SetupDiGetHwProfileFriendlyNameExA SetupDiGetHwProfileFriendlyNameEx; + alias SetupDiGetHwProfileListExA SetupDiGetHwProfileListEx; + alias SetupDiGetINFClassA SetupDiGetINFClass; + alias SetupDiGetSelectedDriverA SetupDiGetSelectedDriver; + alias SetupDiInstallClassA SetupDiInstallClass; + alias SetupDiInstallClassExA SetupDiInstallClassEx; + alias SetupDiOpenClassRegKeyExA SetupDiOpenClassRegKeyEx; + alias SetupDiOpenDeviceInfoA SetupDiOpenDeviceInfo; + alias SetupDiOpenDeviceInterfaceA SetupDiOpenDeviceInterface; + deprecated alias SetupDiOpenDeviceInterfaceA SetupDiOpenInterfaceDevice; + alias SetupDiSetClassInstallParamsA SetupDiSetClassInstallParams; + alias SetupDiSetClassRegistryPropertyA SetupDiSetClassRegistryProperty; + alias SetupDiSetDeviceInstallParamsA SetupDiSetDeviceInstallParams; + alias SetupDiSetDeviceRegistryPropertyA SetupDiSetDeviceRegistryProperty; + alias SetupDiSetDriverInstallParamsA SetupDiSetDriverInstallParams; + alias SetupDiSetSelectedDriverA SetupDiSetSelectedDriver; + alias SetupDuplicateDiskSpaceListA SetupDuplicateDiskSpaceList; + alias SetupFindFirstLineA SetupFindFirstLine; + alias SetupFindNextMatchLineA SetupFindNextMatchLine; + alias SetupFreeSourceListA SetupFreeSourceList; + alias SetupGetBackupInformationA SetupGetBackupInformation; + alias SetupGetFileCompressionInfoA SetupGetFileCompressionInfo; + alias SetupGetInfFileListA SetupGetInfFileList; + alias SetupGetInfInformationA SetupGetInfInformation; + alias SetupGetLineByIndexA SetupGetLineByIndex; + alias SetupGetLineCountA SetupGetLineCount; + alias SetupGetLineTextA SetupGetLineText; + alias SetupGetMultiSzFieldA SetupGetMultiSzField; + alias SetupGetSourceFileLocationA SetupGetSourceFileLocation; + alias SetupGetSourceFileSizeA SetupGetSourceFileSize; + alias SetupGetSourceInfoA SetupGetSourceInfo; + alias SetupGetStringFieldA SetupGetStringField; + alias SetupGetTargetPathA SetupGetTargetPath; + alias SetupInitializeFileLogA SetupInitializeFileLog; + alias SetupInstallFileA SetupInstallFile; + alias SetupInstallFileExA SetupInstallFileEx; + alias SetupInstallFilesFromInfSectionA SetupInstallFilesFromInfSection; + alias SetupInstallFromInfSectionA SetupInstallFromInfSection; + alias SetupInstallServicesFromInfSectionA SetupInstallServicesFromInfSection; + alias SetupInstallServicesFromInfSectionExA SetupInstallServicesFromInfSectionEx; + alias SetupIterateCabinetA SetupIterateCabinet; + alias SetupLogErrorA SetupLogError; + alias SetupLogFileA SetupLogFile; + alias SetupOpenAppendInfFileA SetupOpenAppendInfFile; + alias SetupOpenInfFileA SetupOpenInfFile; + alias SetupPromptForDiskA SetupPromptForDisk; + alias SetupQueryDrivesInDiskSpaceListA SetupQueryDrivesInDiskSpaceList; + alias SetupQueryFileLogA SetupQueryFileLog; + alias SetupQueryInfFileInformationA SetupQueryInfFileInformation; + alias SetupQueryInfOriginalFileInformationA SetupQueryInfOriginalFileInformation; + alias SetupQueryInfVersionInformationA SetupQueryInfVersionInformation; + alias SetupQuerySourceListA SetupQuerySourceList; + alias SetupQuerySpaceRequiredOnDriveA SetupQuerySpaceRequiredOnDrive; + alias SetupQueueCopyA SetupQueueCopy; + alias SetupQueueCopyIndirectA SetupQueueCopyIndirect; + alias SetupQueueCopySectionA SetupQueueCopySection; + alias SetupQueueDefaultCopyA SetupQueueDefaultCopy; + alias SetupQueueDeleteA SetupQueueDelete; + alias SetupQueueDeleteSectionA SetupQueueDeleteSection; + alias SetupQueueRenameA SetupQueueRename; + alias SetupQueueRenameSectionA SetupQueueRenameSection; + alias SetupRemoveFileLogEntryA SetupRemoveFileLogEntry; + alias SetupRemoveFromDiskSpaceListA SetupRemoveFromDiskSpaceList; + alias SetupRemoveFromSourceListA SetupRemoveFromSourceList; + alias SetupRemoveInstallSectionFromDiskSpaceListA SetupRemoveInstallSectionFromDiskSpaceList; + alias SetupRemoveSectionFromDiskSpaceListA SetupRemoveSectionFromDiskSpaceList; + alias SetupRenameErrorA SetupRenameError; + alias SetupScanFileQueueA SetupScanFileQueue; + alias SetupSetDirectoryIdA SetupSetDirectoryId; + alias SetupSetDirectoryIdExA SetupSetDirectoryIdEx; + alias SetupSetFileQueueAlternatePlatformA SetupSetFileQueueAlternatePlatform; + alias SetupSetPlatformPathOverrideA SetupSetPlatformPathOverride; + alias SetupSetSourceListA SetupSetSourceList; +} Index: src/win32/shellapi.d ================================================================== --- src/win32/shellapi.d +++ src/win32/shellapi.d @@ -1,412 +1,418 @@ -/***********************************************************************\ -* shellapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.shellapi; -pragma(lib, "shell32.lib"); - -private import win32.w32api, win32.windef, win32.basetyps; - -enum : UINT { - ABE_LEFT, - ABE_TOP, - ABE_RIGHT, - ABE_BOTTOM // = 3 -} - -enum : UINT { - ABS_AUTOHIDE = 1, - ABS_ALWAYSONTOP -} - -const ULONG - SEE_MASK_CLASSNAME = 1, - SEE_MASK_CLASSKEY = 3, - SEE_MASK_IDLIST = 4, - SEE_MASK_INVOKEIDLIST = 12, - SEE_MASK_ICON = 0x000010, - SEE_MASK_HOTKEY = 0x000020, - SEE_MASK_NOCLOSEPROCESS = 0x000040, - SEE_MASK_CONNECTNETDRV = 0x000080, - SEE_MASK_FLAG_DDEWAIT = 0x000100, - SEE_MASK_DOENVSUBST = 0x000200, - SEE_MASK_FLAG_NO_UI = 0x000400, - SEE_MASK_NO_CONSOLE = 0x008000, - SEE_MASK_UNICODE = 0x010000, - SEE_MASK_ASYNCOK = 0x100000, - SEE_MASK_HMONITOR = 0x200000; - -enum : DWORD { - ABM_NEW, - ABM_REMOVE, - ABM_QUERYPOS, - ABM_SETPOS, - ABM_GETSTATE, - ABM_GETTASKBARPOS, - ABM_ACTIVATE, - ABM_GETAUTOHIDEBAR, - ABM_SETAUTOHIDEBAR, - ABM_WINDOWPOSCHANGED // = 9 -} - -static if (WINVER >= 0x501) { - const DWORD ABM_SETSTATE = 10; -} - -enum : UINT { - ABN_STATECHANGE, - ABN_POSCHANGED, - ABN_FULLSCREENAPP, - ABN_WINDOWARRANGE -} - -enum : DWORD { - NIM_ADD, - NIM_MODIFY, - NIM_DELETE -} - -static if (_WIN32_IE >= 0x500) { - const NOTIFYICON_VERSION = 3; - - enum : DWORD { - NIM_SETFOCUS = 3, - NIM_SETVERSION - } -} - -const UINT - NIF_MESSAGE = 1, - NIF_ICON = 2, - NIF_TIP = 4, - NIF_STATE = 8; - -static if (_WIN32_IE >= 0x500) { - const UINT NIF_INFO = 0x00000010; -} - -static if (_WIN32_IE >= 0x600) { - const UINT NIF_GUID = 0x00000020; -} - -static if (_WIN32_IE >= 0x500) { - enum : DWORD { - NIIF_NONE, - NIIF_INFO, - NIIF_WARNING, - NIIF_ERROR - } -} - -static if (_WIN32_IE >= 0x600) { - enum : DWORD { - NIIF_ICON_MASK = 15, - NIIF_NOSOUND - } -} - -const DWORD - NIS_HIDDEN = 1, - NIS_SHAREDICON = 2; - -const HINSTANCE - SE_ERR_FNF = cast(HANDLE) 2, - SE_ERR_PNF = cast(HANDLE) 3, - SE_ERR_ACCESSDENIED = cast(HANDLE) 5, - SE_ERR_OOM = cast(HANDLE) 8, - SE_ERR_DLLNOTFOUND = cast(HANDLE) 32, - SE_ERR_SHARE = cast(HANDLE) 26, - SE_ERR_ASSOCINCOMPLETE = cast(HANDLE) 27, - SE_ERR_DDETIMEOUT = cast(HANDLE) 28, - SE_ERR_DDEFAIL = cast(HANDLE) 29, - SE_ERR_DDEBUSY = cast(HANDLE) 30, - SE_ERR_NOASSOC = cast(HANDLE) 31; - -enum : UINT { - FO_MOVE = 1, - FO_COPY, - FO_DELETE, - FO_RENAME -} - -const FILEOP_FLAGS - FOF_MULTIDESTFILES = 0x0001, - FOF_CONFIRMMOUSE = 0x0002, - FOF_SILENT = 0x0004, - FOF_RENAMEONCOLLISION = 0x0008, - FOF_NOCONFIRMATION = 0x0010, - FOF_WANTMAPPINGHANDLE = 0x0020, - FOF_ALLOWUNDO = 0x0040, - FOF_FILESONLY = 0x0080, - FOF_SIMPLEPROGRESS = 0x0100, - FOF_NOCONFIRMMKDIR = 0x0200, - FOF_NOERRORUI = 0x0400, - FOF_NOCOPYSECURITYATTRIBS = 0x0800; - -// these are not documented on the MSDN site -enum { - PO_DELETE = 19, - PO_RENAME = 20, - PO_PORTCHANGE = 32, - PO_REN_PORT = 52 -} - -const UINT - SHGFI_LARGEICON = 0x000000, - SHGFI_SMALLICON = 0x000001, - SHGFI_OPENICON = 0x000002, - SHGFI_SHELLICONSIZE = 0x000004, - SHGFI_PIDL = 0x000008, - SHGFI_USEFILEATTRIBUTES = 0x000010, - SHGFI_ICON = 0x000100, - SHGFI_DISPLAYNAME = 0x000200, - SHGFI_TYPENAME = 0x000400, - SHGFI_ATTRIBUTES = 0x000800, - SHGFI_ICONLOCATION = 0x001000, - SHGFI_EXETYPE = 0x002000, - SHGFI_SYSICONINDEX = 0x004000, - SHGFI_LINKOVERLAY = 0x008000, - SHGFI_SELECTED = 0x010000, - SHGFI_ATTR_SPECIFIED = 0x020000; - -const SHERB_NOCONFIRMATION = 1; -const SHERB_NOPROGRESSUI = 2; -const SHERB_NOSOUND = 4; - -alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; -alias HANDLE HDROP; - -align(2): - -struct APPBARDATA { - DWORD cbSize = APPBARDATA.sizeof; - HWND hWnd; - UINT uCallbackMessage; - UINT uEdge; - RECT rc; - LPARAM lParam; -} -alias APPBARDATA* PAPPBARDATA; - -struct NOTIFYICONDATAA { - DWORD cbSize = NOTIFYICONDATAA.sizeof; - HWND hWnd; - UINT uID; - UINT uFlags; - UINT uCallbackMessage; - HICON hIcon; - static if (_WIN32_IE >= 0x500) { - CHAR[128] szTip; - DWORD dwState; - DWORD dwStateMask; - CHAR[256] szInfo; - union { - UINT uTimeout; - UINT uVersion; - } - CHAR[64] szInfoTitle; - DWORD dwInfoFlags; - } else { - CHAR[64] szTip; - } - static if (_WIN32_IE >= 0x600) { - GUID guidItem; - } -} -alias NOTIFYICONDATAA* PNOTIFYICONDATAA; - -struct NOTIFYICONDATAW { - DWORD cbSize = NOTIFYICONDATAW.sizeof; - HWND hWnd; - UINT uID; - UINT uFlags; - UINT uCallbackMessage; - HICON hIcon; - static if (_WIN32_IE >= 0x500) { - WCHAR[128] szTip; - DWORD dwState; - DWORD dwStateMask; - WCHAR[256] szInfo; - union { - UINT uTimeout; - UINT uVersion; - } - WCHAR[64] szInfoTitle; - DWORD dwInfoFlags; - } else { - WCHAR[64] szTip; - } - static if (_WIN32_IE >= 0x600) { - GUID guidItem; - } -} -alias NOTIFYICONDATAW* PNOTIFYICONDATAW; - -struct SHELLEXECUTEINFOA { - DWORD cbSize = SHELLEXECUTEINFOA.sizeof; - ULONG fMask; - HWND hwnd; - LPCSTR lpVerb; - LPCSTR lpFile; - LPCSTR lpParameters; - LPCSTR lpDirectory; - int nShow; - HINSTANCE hInstApp; - PVOID lpIDList; - LPCSTR lpClass; - HKEY hkeyClass; - DWORD dwHotKey; - HANDLE hIcon; - HANDLE hProcess; -} -alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; - -struct SHELLEXECUTEINFOW { - DWORD cbSize = SHELLEXECUTEINFOW.sizeof; - ULONG fMask; - HWND hwnd; - LPCWSTR lpVerb; - LPCWSTR lpFile; - LPCWSTR lpParameters; - LPCWSTR lpDirectory; - int nShow; - HINSTANCE hInstApp; - PVOID lpIDList; - LPCWSTR lpClass; - HKEY hkeyClass; - DWORD dwHotKey; - HANDLE hIcon; - HANDLE hProcess; -} -alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; - -struct SHFILEOPSTRUCTA { - HWND hwnd; - UINT wFunc; - LPCSTR pFrom; - LPCSTR pTo; - FILEOP_FLAGS fFlags; - BOOL fAnyOperationsAborted; - PVOID hNameMappings; - LPCSTR lpszProgressTitle; -} -alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; - -struct SHFILEOPSTRUCTW { - HWND hwnd; - UINT wFunc; - LPCWSTR pFrom; - LPCWSTR pTo; - FILEOP_FLAGS fFlags; - BOOL fAnyOperationsAborted; - PVOID hNameMappings; - LPCWSTR lpszProgressTitle; -} -alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; - -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; -} - -struct SHQUERYRBINFO { - DWORD cbSize = SHQUERYRBINFO.sizeof; - long i64Size; - long i64NumItems; -} -alias SHQUERYRBINFO* LPSHQUERYRBINFO; - -extern (Windows) { - LPWSTR* CommandLineToArgvW(LPCWSTR, int*); - void DragAcceptFiles(HWND, BOOL); - void DragFinish(HDROP); - UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); - UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); - BOOL DragQueryPoint(HDROP, LPPOINT); - HICON DuplicateIcon(HINSTANCE, HICON); - HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); - HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); - HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); - HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); - UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); - UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); - HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); - HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); - UINT SHAppBarMessage(DWORD, PAPPBARDATA); - BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); - BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); - int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); - int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); - HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); - HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); - BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); - BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); - int SHFileOperationA(LPSHFILEOPSTRUCTA); - int SHFileOperationW(LPSHFILEOPSTRUCTW); - void SHFreeNameMappings(HANDLE); - DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); - DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); - HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); - HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); - HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); - HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); -} - -version (Unicode) { - alias NOTIFYICONDATAW NOTIFYICONDATA; - alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; - alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; - alias SHFILEINFOW SHFILEINFO; - alias DragQueryFileW DragQueryFile; - alias ExtractAssociatedIconW ExtractAssociatedIcon; - alias ExtractIconW ExtractIcon; - alias ExtractIconExW ExtractIconEx; - alias FindExecutableW FindExecutable; - alias Shell_NotifyIconW Shell_NotifyIcon; - alias ShellAboutW ShellAbout; - alias ShellExecuteW ShellExecute; - alias ShellExecuteExW ShellExecuteEx; - alias SHFileOperationW SHFileOperation; - alias SHGetFileInfoW SHGetFileInfo; - alias SHQueryRecycleBinW SHQueryRecycleBin; - alias SHEmptyRecycleBinW SHEmptyRecycleBin; -} else { - alias NOTIFYICONDATAA NOTIFYICONDATA; - alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; - alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; - alias SHFILEINFOA SHFILEINFO; - alias DragQueryFileA DragQueryFile; - alias ExtractAssociatedIconA ExtractAssociatedIcon; - alias ExtractIconA ExtractIcon; - alias ExtractIconExA ExtractIconEx; - alias FindExecutableA FindExecutable; - alias Shell_NotifyIconA Shell_NotifyIcon; - alias ShellAboutA ShellAbout; - alias ShellExecuteA ShellExecute; - alias ShellExecuteExA ShellExecuteEx; - alias SHFileOperationA SHFileOperation; - alias SHGetFileInfoA SHGetFileInfo; - alias SHQueryRecycleBinA SHQueryRecycleBin; - alias SHEmptyRecycleBinA SHEmptyRecycleBin; -} - -alias NOTIFYICONDATA* PNOTIFYICONDATA; -alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO; -alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT; +/***********************************************************************\ +* shellapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shellapi; +pragma(lib, "shell32"); + +private import win32.w32api, win32.windef, win32.basetyps; + +enum : UINT { + ABE_LEFT, + ABE_TOP, + ABE_RIGHT, + ABE_BOTTOM // = 3 +} + +enum : UINT { + ABS_AUTOHIDE = 1, + ABS_ALWAYSONTOP +} + +const ULONG + SEE_MASK_CLASSNAME = 1, + SEE_MASK_CLASSKEY = 3, + SEE_MASK_IDLIST = 4, + SEE_MASK_INVOKEIDLIST = 12, + SEE_MASK_ICON = 0x000010, + SEE_MASK_HOTKEY = 0x000020, + SEE_MASK_NOCLOSEPROCESS = 0x000040, + SEE_MASK_CONNECTNETDRV = 0x000080, + SEE_MASK_FLAG_DDEWAIT = 0x000100, + SEE_MASK_DOENVSUBST = 0x000200, + SEE_MASK_FLAG_NO_UI = 0x000400, + SEE_MASK_NO_CONSOLE = 0x008000, + SEE_MASK_UNICODE = 0x010000, + SEE_MASK_ASYNCOK = 0x100000, + SEE_MASK_HMONITOR = 0x200000; + +enum : DWORD { + ABM_NEW, + ABM_REMOVE, + ABM_QUERYPOS, + ABM_SETPOS, + ABM_GETSTATE, + ABM_GETTASKBARPOS, + ABM_ACTIVATE, + ABM_GETAUTOHIDEBAR, + ABM_SETAUTOHIDEBAR, + ABM_WINDOWPOSCHANGED // = 9 +} + +static if (_WIN32_WINNT >= 0x501) { + const DWORD ABM_SETSTATE = 10; +} + +enum : UINT { + ABN_STATECHANGE, + ABN_POSCHANGED, + ABN_FULLSCREENAPP, + ABN_WINDOWARRANGE +} + +enum : DWORD { + NIM_ADD, + NIM_MODIFY, + NIM_DELETE +} + +static if (_WIN32_IE >= 0x500) { + const NOTIFYICON_VERSION = 3; + + enum : DWORD { + NIM_SETFOCUS = 3, + NIM_SETVERSION + } +} + +const UINT + NIF_MESSAGE = 1, + NIF_ICON = 2, + NIF_TIP = 4, + NIF_STATE = 8; + +static if (_WIN32_IE >= 0x500) { + const UINT NIF_INFO = 0x00000010; +} + +static if (_WIN32_IE >= 0x600) { + const UINT NIF_GUID = 0x00000020; +} + +static if (_WIN32_IE >= 0x500) { + enum : DWORD { + NIIF_NONE, + NIIF_INFO, + NIIF_WARNING, + NIIF_ERROR + } +} + +static if (_WIN32_IE >= 0x600) { + enum : DWORD { + NIIF_ICON_MASK = 15, + NIIF_NOSOUND + } +} + +const DWORD + NIS_HIDDEN = 1, + NIS_SHAREDICON = 2; + +const HINSTANCE + SE_ERR_FNF = cast(HINSTANCE) 2, + SE_ERR_PNF = cast(HINSTANCE) 3, + SE_ERR_ACCESSDENIED = cast(HINSTANCE) 5, + SE_ERR_OOM = cast(HINSTANCE) 8, + SE_ERR_DLLNOTFOUND = cast(HINSTANCE) 32, + SE_ERR_SHARE = cast(HINSTANCE) 26, + SE_ERR_ASSOCINCOMPLETE = cast(HINSTANCE) 27, + SE_ERR_DDETIMEOUT = cast(HINSTANCE) 28, + SE_ERR_DDEFAIL = cast(HINSTANCE) 29, + SE_ERR_DDEBUSY = cast(HINSTANCE) 30, + SE_ERR_NOASSOC = cast(HINSTANCE) 31; + +enum : UINT { + FO_MOVE = 1, + FO_COPY, + FO_DELETE, + FO_RENAME +} + +const FILEOP_FLAGS + FOF_MULTIDESTFILES = 0x0001, + FOF_CONFIRMMOUSE = 0x0002, + FOF_SILENT = 0x0004, + FOF_RENAMEONCOLLISION = 0x0008, + FOF_NOCONFIRMATION = 0x0010, + FOF_WANTMAPPINGHANDLE = 0x0020, + FOF_ALLOWUNDO = 0x0040, + FOF_FILESONLY = 0x0080, + FOF_SIMPLEPROGRESS = 0x0100, + FOF_NOCONFIRMMKDIR = 0x0200, + FOF_NOERRORUI = 0x0400, + FOF_NOCOPYSECURITYATTRIBS = 0x0800; + +// these are not documented on the MSDN site +enum { + PO_DELETE = 19, + PO_RENAME = 20, + PO_PORTCHANGE = 32, + PO_REN_PORT = 52 +} + +const UINT + SHGFI_LARGEICON = 0x000000, + SHGFI_SMALLICON = 0x000001, + SHGFI_OPENICON = 0x000002, + SHGFI_SHELLICONSIZE = 0x000004, + SHGFI_PIDL = 0x000008, + SHGFI_USEFILEATTRIBUTES = 0x000010, + SHGFI_ICON = 0x000100, + SHGFI_DISPLAYNAME = 0x000200, + SHGFI_TYPENAME = 0x000400, + SHGFI_ATTRIBUTES = 0x000800, + SHGFI_ICONLOCATION = 0x001000, + SHGFI_EXETYPE = 0x002000, + SHGFI_SYSICONINDEX = 0x004000, + SHGFI_LINKOVERLAY = 0x008000, + SHGFI_SELECTED = 0x010000, + SHGFI_ATTR_SPECIFIED = 0x020000; + +static if (_WIN32_IE >= 0x500) { + const uint + SHGFI_ADDOVERLAYS = 0x000020, + SHGFI_OVERLAYINDEX = 0x000040; +} + +const SHERB_NOCONFIRMATION = 1; +const SHERB_NOPROGRESSUI = 2; +const SHERB_NOSOUND = 4; + +alias WORD FILEOP_FLAGS, PRINTEROP_FLAGS; +mixin DECLARE_HANDLE!("HDROP"); + +align(2): + +struct APPBARDATA { + DWORD cbSize = APPBARDATA.sizeof; + HWND hWnd; + UINT uCallbackMessage; + UINT uEdge; + RECT rc; + LPARAM lParam; +} +alias APPBARDATA* PAPPBARDATA; + +struct NOTIFYICONDATAA { + DWORD cbSize = NOTIFYICONDATAA.sizeof; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + static if (_WIN32_IE >= 0x500) { + CHAR[128] szTip; + DWORD dwState; + DWORD dwStateMask; + CHAR[256] szInfo; + union { + UINT uTimeout; + UINT uVersion; + } + CHAR[64] szInfoTitle; + DWORD dwInfoFlags; + } else { + CHAR[64] szTip; + } + static if (_WIN32_IE >= 0x600) { + GUID guidItem; + } +} +alias NOTIFYICONDATAA* PNOTIFYICONDATAA; + +struct NOTIFYICONDATAW { + DWORD cbSize = NOTIFYICONDATAW.sizeof; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; + static if (_WIN32_IE >= 0x500) { + WCHAR[128] szTip; + DWORD dwState; + DWORD dwStateMask; + WCHAR[256] szInfo; + union { + UINT uTimeout; + UINT uVersion; + } + WCHAR[64] szInfoTitle; + DWORD dwInfoFlags; + } else { + WCHAR[64] szTip; + } + static if (_WIN32_IE >= 0x600) { + GUID guidItem; + } +} +alias NOTIFYICONDATAW* PNOTIFYICONDATAW; + +struct SHELLEXECUTEINFOA { + DWORD cbSize = SHELLEXECUTEINFOA.sizeof; + ULONG fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpFile; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + PVOID lpIDList; + LPCSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + HANDLE hIcon; + HANDLE hProcess; +} +alias SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; + +struct SHELLEXECUTEINFOW { + DWORD cbSize = SHELLEXECUTEINFOW.sizeof; + ULONG fMask; + HWND hwnd; + LPCWSTR lpVerb; + LPCWSTR lpFile; + LPCWSTR lpParameters; + LPCWSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + PVOID lpIDList; + LPCWSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; + HANDLE hIcon; + HANDLE hProcess; +} +alias SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; + +struct SHFILEOPSTRUCTA { + HWND hwnd; + UINT wFunc; + LPCSTR pFrom; + LPCSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCSTR lpszProgressTitle; +} +alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; + +struct SHFILEOPSTRUCTW { + HWND hwnd; + UINT wFunc; + LPCWSTR pFrom; + LPCWSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + PVOID hNameMappings; + LPCWSTR lpszProgressTitle; +} +alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; + +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; +} + +align(1) struct SHQUERYRBINFO { + DWORD cbSize = SHQUERYRBINFO.sizeof; + long i64Size; + long i64NumItems; +} +alias SHQUERYRBINFO* LPSHQUERYRBINFO; + +extern (Windows) { + LPWSTR* CommandLineToArgvW(LPCWSTR, int*); + void DragAcceptFiles(HWND, BOOL); + void DragFinish(HDROP); + UINT DragQueryFileA(HDROP, UINT, LPSTR, UINT); + UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); + BOOL DragQueryPoint(HDROP, LPPOINT); + HICON DuplicateIcon(HINSTANCE, HICON); + HICON ExtractAssociatedIconA(HINSTANCE, LPCSTR, PWORD); + HICON ExtractAssociatedIconW(HINSTANCE, LPCWSTR, PWORD); + HICON ExtractIconA(HINSTANCE, LPCSTR, UINT); + HICON ExtractIconW(HINSTANCE, LPCWSTR, UINT); + UINT ExtractIconExA(LPCSTR, int, HICON*, HICON*, UINT); + UINT ExtractIconExW(LPCWSTR, int, HICON*, HICON*, UINT); + HINSTANCE FindExecutableA(LPCSTR, LPCSTR, LPSTR); + HINSTANCE FindExecutableW(LPCWSTR, LPCWSTR, LPWSTR); + UINT SHAppBarMessage(DWORD, PAPPBARDATA); + BOOL Shell_NotifyIconA(DWORD, PNOTIFYICONDATAA); + BOOL Shell_NotifyIconW(DWORD, PNOTIFYICONDATAW); + int ShellAboutA(HWND, LPCSTR, LPCSTR, HICON); + int ShellAboutW(HWND, LPCWSTR, LPCWSTR, HICON); + HINSTANCE ShellExecuteA(HWND, LPCSTR, LPCSTR, LPCSTR, LPCSTR, INT); + HINSTANCE ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT); + BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA); + BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW); + int SHFileOperationA(LPSHFILEOPSTRUCTA); + int SHFileOperationW(LPSHFILEOPSTRUCTW); + void SHFreeNameMappings(HANDLE); + DWORD SHGetFileInfoA(LPCSTR, DWORD, SHFILEINFOA*, UINT, UINT); + DWORD SHGetFileInfoW(LPCWSTR, DWORD, SHFILEINFOW*, UINT, UINT); + HRESULT SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO); + HRESULT SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO); + HRESULT SHEmptyRecycleBinA(HWND, LPCSTR, DWORD); + HRESULT SHEmptyRecycleBinW(HWND, LPCWSTR, DWORD); +} + +version (Unicode) { + alias NOTIFYICONDATAW NOTIFYICONDATA; + alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; + alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; + alias SHFILEINFOW SHFILEINFO; + alias DragQueryFileW DragQueryFile; + alias ExtractAssociatedIconW ExtractAssociatedIcon; + alias ExtractIconW ExtractIcon; + alias ExtractIconExW ExtractIconEx; + alias FindExecutableW FindExecutable; + alias Shell_NotifyIconW Shell_NotifyIcon; + alias ShellAboutW ShellAbout; + alias ShellExecuteW ShellExecute; + alias ShellExecuteExW ShellExecuteEx; + alias SHFileOperationW SHFileOperation; + alias SHGetFileInfoW SHGetFileInfo; + alias SHQueryRecycleBinW SHQueryRecycleBin; + alias SHEmptyRecycleBinW SHEmptyRecycleBin; +} else { + alias NOTIFYICONDATAA NOTIFYICONDATA; + alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; + alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; + alias SHFILEINFOA SHFILEINFO; + alias DragQueryFileA DragQueryFile; + alias ExtractAssociatedIconA ExtractAssociatedIcon; + alias ExtractIconA ExtractIcon; + alias ExtractIconExA ExtractIconEx; + alias FindExecutableA FindExecutable; + alias Shell_NotifyIconA Shell_NotifyIcon; + alias ShellAboutA ShellAbout; + alias ShellExecuteA ShellExecute; + alias ShellExecuteExA ShellExecuteEx; + alias SHFileOperationA SHFileOperation; + alias SHGetFileInfoA SHGetFileInfo; + alias SHQueryRecycleBinA SHQueryRecycleBin; + alias SHEmptyRecycleBinA SHEmptyRecycleBin; +} + +alias NOTIFYICONDATA* PNOTIFYICONDATA; +alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO; +alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT; Index: src/win32/shldisp.d ================================================================== --- src/win32/shldisp.d +++ src/win32/shldisp.d @@ -1,27 +1,27 @@ -/***********************************************************************\ -* shldisp.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.shldisp; - -private import win32.unknwn, win32.windef, win32.wtypes; - -// options for IAutoComplete2 -const DWORD ACO_AUTOSUGGEST = 0x01; - -interface IAutoComplete : IUnknown { - HRESULT Init(HWND, IUnknown*, LPCOLESTR, LPCOLESTR); - HRESULT Enable(BOOL); -} -alias IAutoComplete* LPAUTOCOMPLETE; - -interface IAutoComplete2 : IAutoComplete { - HRESULT SetOptions(DWORD); - HRESULT GetOptions(DWORD*); -} -alias IAutoComplete2* LPAUTOCOMPLETE2; +/***********************************************************************\ +* shldisp.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shldisp; + +private import win32.unknwn, win32.windef, win32.wtypes; + +// options for IAutoComplete2 +const DWORD ACO_AUTOSUGGEST = 0x01; + +interface IAutoComplete : IUnknown { + HRESULT Init(HWND, IUnknown, LPCOLESTR, LPCOLESTR); + HRESULT Enable(BOOL); +} +alias IAutoComplete LPAUTOCOMPLETE; + +interface IAutoComplete2 : IAutoComplete { + HRESULT SetOptions(DWORD); + HRESULT GetOptions(DWORD*); +} +alias IAutoComplete2 LPAUTOCOMPLETE2; Index: src/win32/shlguid.d ================================================================== --- src/win32/shlguid.d +++ src/win32/shlguid.d @@ -1,18 +1,18 @@ -/***********************************************************************\ -* shlguid.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.shlguid; - -private import win32.basetyps, win32.w32api; - -// FIXME: clean up Windows version support - -// I think this is just a helper macro for other win32 headers? -//MACRO #define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) - +/***********************************************************************\ +* shlguid.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shlguid; + +private import win32.basetyps, win32.w32api; + +// FIXME: clean up Windows version support + +// I think this is just a helper macro for other win32 headers? +//MACRO #define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46) + Index: src/win32/shlobj.d ================================================================== --- src/win32/shlobj.d +++ src/win32/shlobj.d @@ -1,1358 +1,1353 @@ -/***********************************************************************\ -* shlobj.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.shlobj; -pragma(lib, "shell32.lib"); - -// TODO: fix bitfields -// TODO: CMIC_VALID_SEE_FLAGS -// SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K - -import win32.commctrl, win32.ole2, win32.shlguid, win32.shellapi; -private import win32.prsht, win32.unknwn, win32.w32api, win32.winbase, - win32.winnt, win32.winuser, win32.wtypes, win32.objfwd, win32.objidl; -private import win32.winnetwk; // for NETRESOURCE - - -// FIXME: clean up Windows version support - -align(1): - -const BIF_RETURNONLYFSDIRS = 1; -const BIF_DONTGOBELOWDOMAIN = 2; -const BIF_STATUSTEXT = 4; -const BIF_RETURNFSANCESTORS = 8; -const BIF_EDITBOX = 16; -const BIF_VALIDATE = 32; -const BIF_NEWDIALOGSTYLE = 64; -const BIF_BROWSEINCLUDEURLS = 128; -const BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE; -const BIF_BROWSEFORCOMPUTER = 0x1000; -const BIF_BROWSEFORPRINTER = 0x2000; -const BIF_BROWSEINCLUDEFILES = 0x4000; -const BIF_SHAREABLE = 0x8000; -const BFFM_INITIALIZED = 1; -const BFFM_SELCHANGED = 2; -const BFFM_VALIDATEFAILEDA = 3; -const BFFM_VALIDATEFAILEDW = 4; -const BFFM_SETSTATUSTEXTA = WM_USER + 100; -const BFFM_ENABLEOK = WM_USER + 101; -const BFFM_SETSELECTIONA = WM_USER + 102; -const BFFM_SETSELECTIONW = WM_USER + 103; -const BFFM_SETSTATUSTEXTW = WM_USER + 104; -const BFFM_SETOKTEXT = WM_USER + 105; -const BFFM_SETEXPANDED = WM_USER + 106; - -version(Unicode) { - alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; - alias BFFM_SETSELECTIONW BFFM_SETSELECTION; - alias BFFM_VALIDATEFAILEDW BFFM_VALIDATEFAILED; -} else { - alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT; - alias BFFM_SETSELECTIONA BFFM_SETSELECTION; - alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; -} - -const DVASPECT_SHORTNAME = 2; - -const SHARD_PIDL = 1; -const SHARD_PATH = 2; - -const SHCNE_RENAMEITEM = 1; -const SHCNE_CREATE = 2; -const SHCNE_DELETE = 4; -const SHCNE_MKDIR = 8; -const SHCNE_RMDIR = 16; -const SHCNE_MEDIAINSERTED = 32; -const SHCNE_MEDIAREMOVED = 64; -const SHCNE_DRIVEREMOVED = 128; -const SHCNE_DRIVEADD = 256; -const SHCNE_NETSHARE = 512; -const SHCNE_NETUNSHARE = 1024; -const SHCNE_ATTRIBUTES = 2048; -const SHCNE_UPDATEDIR = 4096; -const SHCNE_UPDATEITEM = 8192; -const SHCNE_SERVERDISCONNECT = 16384; -const SHCNE_UPDATEIMAGE = 32768; -const SHCNE_DRIVEADDGUI = 65536; -const SHCNE_RENAMEFOLDER = 0x20000; -const SHCNE_FREESPACE = 0x40000; -const SHCNE_ASSOCCHANGED = 0x8000000; -const SHCNE_DISKEVENTS = 0x2381F; -const SHCNE_GLOBALEVENTS = 0xC0581E0; -const SHCNE_ALLEVENTS = 0x7FFFFFFF; -const SHCNE_INTERRUPT = 0x80000000; - -const SHCNF_IDLIST = 0; -const SHCNF_PATHA = 1; -const SHCNF_PRINTERA = 2; -const SHCNF_DWORD = 3; -const SHCNF_PATHW = 5; -const SHCNF_PRINTERW = 6; -const SHCNF_TYPE = 0xFF; -const SHCNF_FLUSH = 0x1000; -const SHCNF_FLUSHNOWAIT = 0x2000; - -version(Unicode) { - alias SHCNF_PATHW SHCNF_PATH; - alias SHCNF_PRINTERW SHCNF_PRINTER; -} else { - alias SHCNF_PATHA SHCNF_PATH; - alias SHCNF_PRINTERA SHCNF_PRINTER; -} - -const SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY; -const SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE; -const SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK; -const SFGAO_CANRENAME = 0x00000010L; -const SFGAO_CANDELETE = 0x00000020L; -const SFGAO_HASPROPSHEET = 0x00000040L; -const SFGAO_DROPTARGET = 0x00000100L; -const SFGAO_CAPABILITYMASK = 0x00000177L; -const SFGAO_GHOSTED = 0x00008000L; -const SFGAO_LINK = 0x00010000L; -const SFGAO_SHARE = 0x00020000L; -const SFGAO_READONLY = 0x00040000L; -const SFGAO_HIDDEN = 0x00080000L; -const SFGAO_DISPLAYATTRMASK = 0x000F0000L; -const SFGAO_FILESYSANCESTOR = 0x10000000L; -const SFGAO_FOLDER = 0x20000000L; -const SFGAO_FILESYSTEM = 0x40000000L; -const SFGAO_HASSUBFOLDER = 0x80000000L; -const SFGAO_CONTENTSMASK = 0x80000000L; -const SFGAO_VALIDATE = 0x01000000L; -const SFGAO_REMOVABLE = 0x02000000L; -const SFGAO_COMPRESSED = 0x04000000L; -const STRRET_WSTR = 0; -const STRRET_OFFSET = 1; -const STRRET_CSTR = 2; - -enum { - SHGDFIL_FINDDATA = 1, - SHGDFIL_NETRESOURCE, - SHGDFIL_DESCRIPTIONID -} - -enum { - SHDID_ROOT_REGITEM = 1, - SHDID_FS_FILE, - SHDID_FS_DIRECTORY, - SHDID_FS_OTHER, - SHDID_COMPUTER_DRIVE35, - SHDID_COMPUTER_DRIVE525, - SHDID_COMPUTER_REMOVABLE, - SHDID_COMPUTER_FIXED, - SHDID_COMPUTER_NETDRIVE, - SHDID_COMPUTER_CDROM, - SHDID_COMPUTER_RAMDISK, - SHDID_COMPUTER_OTHER, - SHDID_NET_DOMAIN, - SHDID_NET_SERVER, - SHDID_NET_SHARE, - SHDID_NET_RESTOFNET, - SHDID_NET_OTHER -} - -const TCHAR[] REGSTR_PATH_EXPLORER = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"; -const TCHAR[] REGSTR_PATH_SPECIAL_FOLDERS=REGSTR_PATH_EXPLORER ~ "\\Shell Folders"; - -enum { - CSIDL_DESKTOP = 0, - CSIDL_INTERNET, - CSIDL_PROGRAMS, - CSIDL_CONTROLS, - CSIDL_PRINTERS, - CSIDL_PERSONAL, - CSIDL_FAVORITES, - CSIDL_STARTUP, - CSIDL_RECENT, - CSIDL_SENDTO, - CSIDL_BITBUCKET, - CSIDL_STARTMENU, // = 11 - CSIDL_DESKTOPDIRECTORY = 16, - CSIDL_DRIVES, - CSIDL_NETWORK, - CSIDL_NETHOOD, - CSIDL_FONTS, - CSIDL_TEMPLATES, - CSIDL_COMMON_STARTMENU, - CSIDL_COMMON_PROGRAMS, - CSIDL_COMMON_STARTUP, - CSIDL_COMMON_DESKTOPDIRECTORY, - CSIDL_APPDATA, - CSIDL_PRINTHOOD, - CSIDL_LOCAL_APPDATA, - CSIDL_ALTSTARTUP, - CSIDL_COMMON_ALTSTARTUP, - CSIDL_COMMON_FAVORITES, - CSIDL_INTERNET_CACHE, - CSIDL_COOKIES, - CSIDL_HISTORY, - CSIDL_COMMON_APPDATA, - CSIDL_WINDOWS, - CSIDL_SYSTEM, - CSIDL_PROGRAM_FILES, - CSIDL_MYPICTURES, - CSIDL_PROFILE, - CSIDL_SYSTEMX86, - CSIDL_PROGRAM_FILESX86, - CSIDL_PROGRAM_FILES_COMMON, - CSIDL_PROGRAM_FILES_COMMONX86, - CSIDL_COMMON_TEMPLATES, - CSIDL_COMMON_DOCUMENTS, - CSIDL_COMMON_ADMINTOOLS, - CSIDL_ADMINTOOLS, - CSIDL_CONNECTIONS, // =49 - CSIDL_COMMON_MUSIC = 53, - CSIDL_COMMON_PICTURES, - CSIDL_COMMON_VIDEO, - CSIDL_RESOURCES, - CSIDL_RESOURCES_LOCALIZED, - CSIDL_COMMON_OEM_LINKS, - CSIDL_CDBURN_AREA, // = 59 - CSIDL_COMPUTERSNEARME = 61, - CSIDL_FLAG_DONT_VERIFY = 0x4000, - CSIDL_FLAG_CREATE = 0x8000, - CSIDL_FLAG_MASK = 0xFF00 -} - -const TCHAR[] - CFSTR_SHELLIDLIST = "Shell IDList Array", - CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets", - CFSTR_NETRESOURCES = "Net Resource", - CFSTR_FILECONTENTS = "FileContents", - CFSTR_FILENAMEA = "FileName", - CFSTR_FILENAMEMAPA = "FileNameMap", - CFSTR_FILEDESCRIPTORA = "FileGroupDescriptor", - CFSTR_INETURLA = "UniformResourceLocator", - CFSTR_SHELLURL = CFSTR_INETURLA, - CFSTR_FILENAMEW = "FileNameW", - CFSTR_FILENAMEMAPW = "FileNameMapW", - CFSTR_FILEDESCRIPTORW = "FileGroupDescriptorW", - CFSTR_INETURLW = "UniformResourceLocatorW"; - -version(Unicode) { - alias CFSTR_FILENAMEW CFSTR_FILENAME; - alias CFSTR_FILENAMEMAPW CFSTR_FILENAMEMAP; - alias CFSTR_FILEDESCRIPTORW CFSTR_FILEDESCRIPTOR; - alias CFSTR_INETURLW CFSTR_INETURL; -} else { - alias CFSTR_FILENAMEA CFSTR_FILENAME; - alias CFSTR_FILENAMEMAPA CFSTR_FILENAMEMAP; - alias CFSTR_FILEDESCRIPTORA CFSTR_FILEDESCRIPTOR; - alias CFSTR_INETURLA CFSTR_INETURL; -} -const TCHAR[] - CFSTR_PRINTERGROUP = "PrinterFriendlyName", - CFSTR_INDRAGLOOP = "InShellDragLoop", - CFSTR_PASTESUCCEEDED = "Paste Succeeded", - CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", - CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; - -const CMF_NORMAL=0; -const CMF_DEFAULTONLY=1; -const CMF_VERBSONLY=2; -const CMF_EXPLORE=4; -const CMF_NOVERBS=8; -const CMF_CANRENAME=16; -const CMF_NODEFAULT=32; -const CMF_INCLUDESTATIC=64; -const CMF_RESERVED=0xffff0000; -const GCS_VERBA=0; -const GCS_HELPTEXTA=1; -const GCS_VALIDATEA=2; -const GCS_VERBW=4; -const GCS_HELPTEXTW=5; -const GCS_VALIDATEW=6; -const GCS_UNICODE=4; - -version(Unicode) { - alias GCS_VERBW GCS_VERB; - alias GCS_HELPTEXTW GCS_HELPTEXT; - alias GCS_VALIDATEW GCS_VALIDATE; -} else { - alias GCS_VERBA GCS_VERB; - alias GCS_HELPTEXTA GCS_HELPTEXT; - alias GCS_VALIDATEA GCS_VALIDATE; -} - -const TCHAR[] - CMDSTR_NEWFOLDER = "NewFolder", - CMDSTR_VIEWLIST = "ViewList", - CMDSTR_VIEWDETAILS = "ViewDetails"; - -const CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; -const CMIC_MASK_ICON = SEE_MASK_ICON; -const CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI; -const CMIC_MASK_MODAL = 0x80000000; -// TODO: This isn't defined anywhere in MinGW. -//const CMIC_VALID_SEE_FLAGS=SEE_VALID_CMIC_FLAGS; - -const GIL_OPENICON = 1; -const GIL_FORSHELL = 2; -const GIL_SIMULATEDOC = 1; -const GIL_PERINSTANCE = 2; -const GIL_PERCLASS = 4; -const GIL_NOTFILENAME = 8; -const GIL_DONTCACHE = 16; - -const FVSIF_RECT = 1; -const FVSIF_PINNED = 2; -const FVSIF_NEWFAILED = 0x8000000; -const FVSIF_NEWFILE = 0x80000000; -const FVSIF_CANVIEWIT = 0x40000000; - -const CDBOSC_SETFOCUS = 0; -const CDBOSC_KILLFOCUS = 1; -const CDBOSC_SELCHANGE = 2; -const CDBOSC_RENAME = 3; - -const FCIDM_SHVIEWFIRST = 0; -const FCIDM_SHVIEWLAST = 0x7fff; -const FCIDM_BROWSERFIRST = 0xa000; -const FCIDM_BROWSERLAST = 0xbf00; -const FCIDM_GLOBALFIRST = 0x8000; -const FCIDM_GLOBALLAST = 0x9fff; -const FCIDM_MENU_FILE = FCIDM_GLOBALFIRST; -const FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST+0x0040; -const FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST+0x0080; -const FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST+0x0081; -const FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST+0x00c0; -const FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST+0x00c1; -const FCIDM_MENU_HELP = FCIDM_GLOBALFIRST+0x0100; -const FCIDM_MENU_FIND = FCIDM_GLOBALFIRST+0x0140; -const FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST+0x0150; -const FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST+0x0170; -const FCIDM_TOOLBAR = FCIDM_BROWSERFIRST; -const FCIDM_STATUS = FCIDM_BROWSERFIRST+1; - -const SBSP_DEFBROWSER = 0; -const SBSP_SAMEBROWSER = 1; -const SBSP_NEWBROWSER = 2; -const SBSP_DEFMODE = 0; -const SBSP_OPENMODE = 16; -const SBSP_EXPLOREMODE = 32; -const SBSP_ABSOLUTE = 0; -const SBSP_RELATIVE = 0x1000; -const SBSP_PARENT = 0x2000; -const SBSP_INITIATEDBYHLINKFRAME = 0x80000000; -const SBSP_REDIRECT = 0x40000000; - -enum { - FCW_STATUS=1, - FCW_TOOLBAR, - FCW_TREE -} - -const FCT_MERGE=1; -const FCT_CONFIGABLE=2; -const FCT_ADDTOEND=4; - -const SVSI_DESELECT=0; -const SVSI_SELECT=1; -const SVSI_EDIT=3; -const SVSI_DESELECTOTHERS=4; -const SVSI_ENSUREVISIBLE=8; -const SVSI_FOCUSED=16; - -const SVGIO_BACKGROUND=0; -const SVGIO_SELECTION=1; -const SVGIO_ALLVIEW=2; - -const UINT SV2GV_CURRENTVIEW=-1; -const UINT SV2GV_DEFAULTVIEW=-2; - -alias ULONG SFGAOF; -alias DWORD SHGDNF; - -struct CIDA { - UINT cidl; - UINT[1] aoffset; -} -alias CIDA* LPIDA; - -struct SHITEMID { - USHORT cb; - BYTE[1] abID; -} -alias SHITEMID* LPSHITEMID; -alias CPtr!(SHITEMID) LPCSHITEMID; - -struct ITEMIDLIST { - SHITEMID mkid; -} -alias ITEMIDLIST* LPITEMIDLIST; -alias CPtr!(ITEMIDLIST) LPCITEMIDLIST; - -alias int function(HWND,UINT,LPARAM,LPARAM) BFFCALLBACK; - -struct BROWSEINFOA { - HWND hwndOwner; - LPCITEMIDLIST pidlRoot; - LPSTR pszDisplayName; - LPCSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; -} -alias BROWSEINFOA* PBROWSEINFOA, LPBROWSEINFOA; - -struct BROWSEINFOW { - HWND hwndOwner; - LPCITEMIDLIST pidlRoot; - LPWSTR pszDisplayName; - LPCWSTR lpszTitle; - UINT ulFlags; - BFFCALLBACK lpfn; - LPARAM lParam; - int iImage; -} -alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW; - -struct CMINVOKECOMMANDINFO { - DWORD cbSize = this.sizeof; - DWORD fMask; - HWND hwnd; - LPCSTR lpVerb; - LPCSTR lpParameters; - LPCSTR lpDirectory; - int nShow; - DWORD dwHotKey; - HANDLE hIcon; -} -alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO; - -struct DROPFILES { - DWORD pFiles; - POINT pt; - BOOL fNC; - BOOL fWide; -} -alias DROPFILES* LPDROPFILES; - -enum SHGNO { - SHGDN_NORMAL = 0, - SHGDN_INFOLDER, - SHGDN_FOREDITING = 0x1000, - SHGDN_INCLUDE_NONFILESYS = 0x2000, - SHGDN_FORADDRESSBAR = 0x4000, - SHGDN_FORPARSING = 0x8000 -} - -enum SHCONTF { - SHCONTF_FOLDERS = 32, - SHCONTF_NONFOLDERS = 64, - SHCONTF_INCLUDEHIDDEN = 128, - SHCONTF_INIT_ON_FIRST_NEXT = 256, - SHCONTF_NETPRINTERSRCH = 512, - SHCONTF_SHAREABLE = 1024, - SHCONTF_STORAGE = 2048 -} - -struct STRRET { - UINT uType; - union { - LPWSTR pOleStr; - UINT uOffset; - char cStr[MAX_PATH]; - } -} -alias STRRET* LPSTRRET; - -enum FD_FLAGS { - FD_CLSID = 1, - FD_SIZEPOINT = 2, - FD_ATTRIBUTES = 4, - FD_CREATETIME = 8, - FD_ACCESSTIME = 16, - FD_WRITESTIME = 32, - FD_FILESIZE = 64, - FD_LINKUI = 0x8000 -} - -struct FILEDESCRIPTORA { - DWORD dwFlags; - CLSID clsid; - SIZEL sizel; - POINTL pointl; - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - CHAR cFileName[MAX_PATH]; -} -alias FILEDESCRIPTORA* LPFILEDESCRIPTORA; - -struct FILEDESCRIPTORW { - DWORD dwFlags; - CLSID clsid; - SIZEL sizel; - POINTL pointl; - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - WCHAR cFileName[MAX_PATH]; -} -alias FILEDESCRIPTORW* LPFILEDESCRIPTORW; - -struct FILEGROUPDESCRIPTORA { - UINT cItems; - FILEDESCRIPTORA fgd[1]; -} -alias FILEGROUPDESCRIPTORA* LPFILEGROUPDESCRIPTORA; - -struct FILEGROUPDESCRIPTORW { - UINT cItems; - FILEDESCRIPTORW fgd[1]; -} -alias FILEGROUPDESCRIPTORW* LPFILEGROUPDESCRIPTORW; - -enum SLR_FLAGS { - SLR_NO_UI = 1, - SLR_ANY_MATCH = 2, - SLR_UPDATE = 4, - SLR_NOUPDATE = 8, - SLR_NOSEARCH = 16, - SLR_NOTRACK = 32, - SLR_NOLINKINFO = 64, - SLR_INVOKE_MSI = 128 -} - -enum SLGP_FLAGS { - SLGP_SHORTPATH=1, - SLGP_UNCPRIORITY=2, - SLGP_RAWPATH=4 -} - -alias PBYTE LPVIEWSETTINGS; - -enum FOLDERFLAGS { - FWF_AUTOARRANGE = 1, - FWF_ABBREVIATEDNAMES = 2, - FWF_SNAPTOGRID = 4, - FWF_OWNERDATA = 8, - FWF_BESTFITWINDOW = 16, - FWF_DESKTOP = 32, - FWF_SINGLESEL = 64, - FWF_NOSUBFOLDERS = 128, - FWF_TRANSPARENT = 256, - FWF_NOCLIENTEDGE = 512, - FWF_NOSCROLL = 0x400, - FWF_ALIGNLEFT = 0x800, - FWF_SINGLECLICKACTIVATE = 0x8000 -} - -enum FOLDERVIEWMODE { - FVM_ICON = 1, - FVM_SMALLICON, - FVM_LIST, - FVM_DETAILS -} - -struct FOLDERSETTINGS { - UINT ViewMode; - UINT fFlags; -} -alias FOLDERSETTINGS* LPFOLDERSETTINGS; -alias CPtr!(FOLDERSETTINGS) LPCFOLDERSETTINGS; - -struct FVSHOWINFO { - DWORD cbSize = this.sizeof; - HWND hwndOwner; - int iShow; - DWORD dwFlags; - RECT rect; - LPUNKNOWN punkRel; - OLECHAR strNewFile[MAX_PATH]; -} -alias FVSHOWINFO* LPFVSHOWINFO; - -struct NRESARRAY { - UINT cItems; - NETRESOURCE nr[1]; -} -alias NRESARRAY* LPNRESARRAY; - -enum { - SBSC_HIDE, - SBSC_SHOW, - SBSC_TOGGLE, - SBSC_QUERY -} - -enum { - SBCMDID_ENABLESHOWTREE, - SBCMDID_SHOWCONTROL, - SBCMDID_CANCELNAVIGATION, - SBCMDID_MAYSAVECHANGES, - SBCMDID_SETHLINKFRAME, - SBCMDID_ENABLESTOP, - SBCMDID_OPTIONS -} -enum SVUIA_STATUS { - SVUIA_DEACTIVATE, - SVUIA_ACTIVATE_NOFOCUS, - SVUIA_ACTIVATE_FOCUS, - SVUIA_INPLACEACTIVATE -} - -static if (_WIN32_IE >= 0x0500) { - - struct EXTRASEARCH - { - GUID guidSearch; - WCHAR wszFriendlyName[80]; - WCHAR wszUrl[2084]; - } - alias EXTRASEARCH* LPEXTRASEARCH; - - alias DWORD SHCOLSTATEF; - - struct SHCOLUMNID { - GUID fmtid; - DWORD pid; - } - alias SHCOLUMNID* LPSHCOLUMNID; - alias CPtr!(SHCOLUMNID) LPCSHCOLUMNID; - - struct SHELLDETAILS { - int fmt; - int cxChar; - STRRET str; - } - alias SHELLDETAILS* LPSHELLDETAILS; - - struct PERSIST_FOLDER_TARGET_INFO - { - LPITEMIDLIST pidlTargetFolder; - WCHAR szTargetParsingName[MAX_PATH]; - WCHAR szNetworkProvider[MAX_PATH]; - DWORD dwAttributes; - int csidl; - } - - enum SHGFP_TYPE { - SHGFP_TYPE_CURRENT = 0, - SHGFP_TYPE_DEFAULT = 1, - } - -} - -interface IEnumIDList: IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT Next(ULONG,LPITEMIDLIST*,ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumIDList**); -} -alias IEnumIDList *LPENUMIDLIST; - -interface IObjMgr : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT Append(IUnknown*); - HRESULT Remove(IUnknown*); -} - -interface IContextMenu : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT QueryContextMenu(HMENU,UINT,UINT,UINT,UINT); - HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); - HRESULT GetCommandString(UINT,UINT,PUINT,LPSTR,UINT); -} -alias IContextMenu* LPCONTEXTMENU; - -interface IContextMenu2 : IContextMenu -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT QueryContextMenu(HMENU,UINT,UINT,UINT,UINT); - HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); - HRESULT GetCommandString(UINT,UINT,PUINT,LPSTR,UINT); - HRESULT HandleMenuMsg(UINT,WPARAM,LPARAM); -}; -alias IContextMenu2* LPCONTEXTMENU2; - -static if (_WIN32_IE >= 0x0500) { - - align(8): - struct SHCOLUMNINIT { - ULONG dwFlags; - ULONG dwReserved; - WCHAR wszFolder[MAX_PATH]; - } - alias SHCOLUMNINIT* LPSHCOLUMNINIT; - alias CPtr!(SHCOLUMNINIT) LPCSHCOLUMNINIT; - - struct SHCOLUMNDATA { - ULONG dwFlags; - DWORD dwFileAttributes; - ULONG dwReserved; - WCHAR *pwszExt; - WCHAR wszFile[MAX_PATH]; - } - alias SHCOLUMNDATA* LPSHCOLUMNDATA; - alias CPtr!(SHCOLUMNDATA) LPCSHCOLUMNDATA; - align: - - const MAX_COLUMN_NAME_LEN = 80; - const MAX_COLUMN_DESC_LEN = 128; - - align(1): - struct SHCOLUMNINFO { - SHCOLUMNID scid; - VARTYPE vt; - DWORD fmt; - UINT cChars; - DWORD csFlags; - WCHAR wszTitle[MAX_COLUMN_NAME_LEN]; - WCHAR wszDescription[MAX_COLUMN_DESC_LEN]; - } - alias SHCOLUMNINFO* LPSHCOLUMNINFO; - alias CPtr!(SHCOLUMNINFO) LPCSHCOLUMNINFO; - align: - - enum SHCOLSTATE { - SHCOLSTATE_TYPE_STR = 0x00000001, - SHCOLSTATE_TYPE_INT = 0x00000002, - SHCOLSTATE_TYPE_DATE = 0x00000003, - SHCOLSTATE_TYPEMASK = 0x0000000f, - SHCOLSTATE_ONBYDEFAULT = 0x00000010, - SHCOLSTATE_SLOW = 0x00000020, - SHCOLSTATE_EXTENDED = 0x00000040, - SHCOLSTATE_SECONDARYUI = 0x00000080, - SHCOLSTATE_HIDDEN = 0x00000100, - SHCOLSTATE_PREFER_VARCMP = 0x00000200 - } - - interface IColumnProvider : IUnknown - { - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT Initialize(LPCSHCOLUMNINIT); - HRESULT GetColumnInfo(DWORD,SHCOLUMNINFO*); - HRESULT GetItemData(LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*); - } -}/* _WIN32_IE >= 0x0500 */ - -interface IQueryInfo : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetInfoTip(DWORD,WCHAR**); - HRESULT GetInfoFlags(DWORD*); -} - -interface IShellExtInit : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT Initialize(LPCITEMIDLIST,LPDATAOBJECT,HKEY); -} -alias IShellExtInit *LPSHELLEXTINIT; - -interface IShellPropSheetExt : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT AddPages(LPFNADDPROPSHEETPAGE,LPARAM); - HRESULT ReplacePage(UINT,LPFNADDPROPSHEETPAGE,LPARAM); -} -alias IShellPropSheetExt *LPSHELLPROPSHEETEXT; - -interface IExtractIconA : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetIconLocation(UINT,LPSTR,UINT,int*,PUINT); - HRESULT Extract(LPCSTR,UINT,HICON*,HICON*,UINT); -}; -alias IExtractIconA *LPEXTRACTICONA; - -interface IExtractIconW : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetIconLocation(UINT,LPWSTR,UINT,int*,PUINT); - HRESULT Extract(LPCWSTR,UINT,HICON*,HICON*,UINT); -} -alias IExtractIconW *LPEXTRACTICONW; - -version(Unicode) { - alias IExtractIconW IExtractIcon; - alias LPEXTRACTICONW LPEXTRACTICON; -} else { - alias IExtractIconA IExtractIcon; - alias LPEXTRACTICONA LPEXTRACTICON; -} - -interface IShellLinkA : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetPath(LPSTR,int,WIN32_FIND_DATAA*,DWORD); - HRESULT GetIDList(LPITEMIDLIST*); - HRESULT SetIDList(LPCITEMIDLIST); - HRESULT GetDescription(LPSTR,int); - HRESULT SetDescription(LPCSTR); - HRESULT GetWorkingDirectory(LPSTR,int); - HRESULT SetWorkingDirectory(LPCSTR); - HRESULT GetArguments(LPSTR,int); - HRESULT SetArguments(LPCSTR); - HRESULT GetHotkey(PWORD); - HRESULT SetHotkey(WORD); - HRESULT GetShowCmd(int*); - HRESULT SetShowCmd(int); - HRESULT GetIconLocation(LPSTR,int,int*); - HRESULT SetIconLocation(LPCSTR,int); - HRESULT SetRelativePath(LPCSTR ,DWORD); - HRESULT Resolve(HWND,DWORD); - HRESULT SetPath(LPCSTR); -} - -interface IShellLinkW : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetPath(LPWSTR,int,WIN32_FIND_DATAW*,DWORD); - HRESULT GetIDList(LPITEMIDLIST*); - HRESULT SetIDList(LPCITEMIDLIST); - HRESULT GetDescription(LPWSTR,int); - HRESULT SetDescription(LPCWSTR); - HRESULT GetWorkingDirectory(LPWSTR,int); - HRESULT SetWorkingDirectory(LPCWSTR); - HRESULT GetArguments(LPWSTR,int); - HRESULT SetArguments(LPCWSTR); - HRESULT GetHotkey(PWORD); - HRESULT SetHotkey(WORD); - HRESULT GetShowCmd(int*); - HRESULT SetShowCmd(int); - HRESULT GetIconLocation(LPWSTR,int,int*); - HRESULT SetIconLocation(LPCWSTR,int); - HRESULT SetRelativePath(LPCWSTR ,DWORD); - HRESULT Resolve(HWND,DWORD); - HRESULT SetPath(LPCWSTR); -} - - -interface IShellFolder : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT ParseDisplayName(HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG); - HRESULT EnumObjects(HWND,DWORD,LPENUMIDLIST*); - HRESULT BindToObject(LPCITEMIDLIST,LPBC,REFIID,PVOID*); - HRESULT BindToStorage(LPCITEMIDLIST,LPBC,REFIID,PVOID*); - HRESULT CompareIDs(LPARAM,LPCITEMIDLIST,LPCITEMIDLIST); - HRESULT CreateViewObject(HWND,REFIID,PVOID*); - HRESULT GetAttributesOf(UINT,LPCITEMIDLIST*,PULONG); - HRESULT GetUIObjectOf(HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*); - HRESULT GetDisplayNameOf(LPCITEMIDLIST,DWORD,LPSTRRET); - HRESULT SetNameOf(HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*); -} -alias IShellFolder *LPSHELLFOLDER; - -static if (_WIN32_IE >= 0x0500) { - -interface IEnumExtraSearch: IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT Next(ULONG,LPEXTRASEARCH*,ULONG*); - HRESULT Skip(ULONG); - HRESULT Reset(); - HRESULT Clone(IEnumExtraSearch**); -} -alias IEnumExtraSearch *LPENUMEXTRASEARCH; - -interface IShellFolder2 : IShellFolder -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT ParseDisplayName(HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG); - HRESULT EnumObjects(HWND,DWORD,LPENUMIDLIST*); - HRESULT BindToObject(LPCITEMIDLIST,LPBC,REFIID,PVOID*); - HRESULT BindToStorage(LPCITEMIDLIST,LPBC,REFIID,PVOID*); - HRESULT CompareIDs(LPARAM,LPCITEMIDLIST,LPCITEMIDLIST); - HRESULT CreateViewObject(HWND,REFIID,PVOID*); - HRESULT GetAttributesOf(UINT,LPCITEMIDLIST*,PULONG); - HRESULT GetUIObjectOf(HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*); - HRESULT GetDisplayNameOf(LPCITEMIDLIST,DWORD,LPSTRRET); - HRESULT SetNameOf(HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*); - HRESULT GetDefaultSearchGUID(GUID*); - HRESULT EnumSearches(IEnumExtraSearch**); - HRESULT GetDefaultColumn(DWORD,ULONG*,ULONG*); - HRESULT GetDefaultColumnState(UINT,SHCOLSTATEF*); - HRESULT GetDetailsEx(LPCITEMIDLIST, CPtr!(SHCOLUMNID),VARIANT*); - HRESULT GetDetailsOf(LPCITEMIDLIST,UINT,SHELLDETAILS*); - HRESULT MapColumnToSCID(UINT,SHCOLUMNID*); -} -alias IShellFolder2 *LPSHELLFOLDER2; - -} /* _WIN32_IE >= 0x0500 */ - -interface ICopyHook : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - UINT CopyCallback(HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD); -} -alias ICopyHook *LPCOPYHOOK; - -interface IFileViewerSite : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT SetPinnedWindow(HWND); - HRESULT GetPinnedWindow(HWND*); -} -alias IFileViewerSite *LPFILEVIEWERSITE; - -interface IFileViewer : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT ShowInitialize(LPFILEVIEWERSITE); - HRESULT Show(LPFVSHOWINFO); - HRESULT PrintTo(LPSTR,BOOL); -} -alias IFileViewer *LPFILEVIEWER; - -interface IFileSystemBindData : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT SetFindData(CPtr!(WIN32_FIND_DATAW)); - HRESULT GetFindData(WIN32_FIND_DATAW*); -} - -interface IPersistFolder : IPersist -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); -} -alias IPersistFolder *LPPERSISTFOLDER; - -static if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500) { - -interface IPersistFolder2 : IPersistFolder -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); - HRESULT GetCurFolder(LPITEMIDLIST*); -} -alias IPersistFolder2 *LPPERSISTFOLDER2; - -}/* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */ - -static if (_WIN32_IE >= 0x0500) { - -interface IPersistFolder3 : IPersistFolder2 -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetClassID(CLSID*); - HRESULT Initialize(LPCITEMIDLIST); - HRESULT GetCurFolder(LPITEMIDLIST*); - HRESULT InitializeEx(IBindCtx*,LPCITEMIDLIST, CPtr!(PERSIST_FOLDER_TARGET_INFO)); - HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*); -} -alias IPersistFolder3 *LPPERSISTFOLDER3; - -} /* _WIN32_IE >= 0x0500 */ - -alias IShellBrowser* LPSHELLBROWSER; -alias IShellView* LPSHELLVIEW; - -interface IShellBrowser : IOleWindow -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT InsertMenusSB(HMENU,LPOLEMENUGROUPWIDTHS); - HRESULT SetMenuSB(HMENU,HOLEMENU,HWND); - HRESULT RemoveMenusSB(HMENU); - HRESULT SetStatusTextSB(LPCOLESTR); - HRESULT EnableModelessSB(BOOL); - HRESULT TranslateAcceleratorSB(LPMSG,WORD); - HRESULT BrowseObject(LPCITEMIDLIST,UINT); - HRESULT GetViewStateStream(DWORD,LPSTREAM*); - HRESULT GetControlWindow(UINT,HWND*); - HRESULT SendControlMsg(UINT,UINT,WPARAM,LPARAM,LRESULT*); - HRESULT QueryActiveShellView(LPSHELLVIEW*); - HRESULT OnViewWindowActive(LPSHELLVIEW); - HRESULT SetToolbarItems(LPTBBUTTON,UINT,UINT); -} - -interface IShellView : IOleWindow -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT TranslateAccelerator(LPMSG); -//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT -//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; -//[Yes] #else - HRESULT EnableModeless(BOOL); -//[Yes] #endif - HRESULT UIActivate(UINT); - HRESULT Refresh(); - HRESULT CreateViewWindow(IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*); - HRESULT DestroyViewWindow(); - HRESULT GetCurrentInfo(LPFOLDERSETTINGS); - HRESULT AddPropertySheetPages(DWORD,LPFNADDPROPSHEETPAGE,LPARAM); - HRESULT SaveViewState(); - HRESULT SelectItem(LPCITEMIDLIST,UINT); - HRESULT GetItemObject(UINT,REFIID,PVOID*); -} - -interface ICommDlgBrowser : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT OnDefaultCommand(IShellView*); - HRESULT OnStateChange(IShellView*,ULONG); - HRESULT IncludeObject(IShellView*,LPCITEMIDLIST); -} -alias ICommDlgBrowser *LPCOMMDLGBROWSER; - -alias GUID SHELLVIEWID; - -struct SV2CVW2_PARAMS { - DWORD cbSize = this.sizeof; - IShellView *psvPrev; - FOLDERSETTINGS *pfs; - IShellBrowser *psbOwner; - RECT *prcView; - CPtr!(SHELLVIEWID) pvid; - HWND hwndView; -} -alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS; - -interface IShellView2 : IShellView -{ - - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetWindow(HWND*); - HRESULT ContextSensitiveHelp(BOOL); - HRESULT TranslateAccelerator(LPMSG); -//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT -//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; -//[Yes] #else - HRESULT EnableModeless(BOOL); -//[Yes] #endif - HRESULT UIActivate(UINT); - HRESULT Refresh(); - HRESULT CreateViewWindow(IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*); - HRESULT DestroyViewWindow(); - HRESULT GetCurrentInfo(LPFOLDERSETTINGS); - HRESULT AddPropertySheetPages(DWORD,LPFNADDPROPSHEETPAGE,LPARAM); - HRESULT SaveViewState(); - HRESULT SelectItem(LPCITEMIDLIST,UINT); - HRESULT GetItemObject(UINT,REFIID,PVOID*); - HRESULT GetView(SHELLVIEWID*,ULONG); - HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS); -} - -interface IShellExecuteHookA : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT Execute(LPSHELLEXECUTEINFOA); -} - -interface IShellExecuteHookW : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT Execute(LPSHELLEXECUTEINFOW); -} - -interface IShellIcon : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT GetIconOf(LPCITEMIDLIST,UINT,PINT); -} -alias IShellIcon* LPSHELLICON; - -struct SHELLFLAGSTATE { -// TODO - short bitflags_; // for D. - /* - BOOL fShowAllObjects : 1; - BOOL fShowExtensions : 1; - BOOL fNoConfirmRecycle : 1; - BOOL fShowSysFiles : 1; - BOOL fShowCompColor : 1; - BOOL fDoubleClickInWebView : 1; - BOOL fDesktopHTML : 1; - BOOL fWin95Classic : 1; - BOOL fDontPrettyPath : 1; - BOOL fShowAttribCol : 1; - BOOL fMapNetDrvBtn : 1; - BOOL fShowInfoTip : 1; - BOOL fHideIcons : 1; - UINT fRestFlags : 3; -*/ -} -alias SHELLFLAGSTATE* LPSHELLFLAGSTATE; - -const SSF_SHOWALLOBJECTS = 0x1; -const SSF_SHOWEXTENSIONS = 0x2; -const SSF_SHOWCOMPCOLOR = 0x8; -const SSF_SHOWSYSFILES = 0x20; -const SSF_DOUBLECLICKINWEBVIEW = 0x80; -const SSF_SHOWATTRIBCOL = 0x100; -const SSF_DESKTOPHTML = 0x200; -const SSF_WIN95CLASSIC = 0x400; -const SSF_DONTPRETTYPATH = 0x800; -const SSF_MAPNETDRVBUTTON = 0x1000; -const SSF_SHOWINFOTIP = 0x2000; -const SSF_HIDEICONS = 0x4000; -const SSF_NOCONFIRMRECYCLE = 0x8000; - -interface IShellIconOverlayIdentifier : IUnknown -{ - HRESULT QueryInterface(REFIID,PVOID*); - ULONG AddRef(); - ULONG Release(); - HRESULT IsMemberOf(LPCWSTR,DWORD); - HRESULT GetOverlayInfo(LPWSTR,int,int*,DWORD*); - HRESULT GetPriority(int*); -} - -const ISIOI_ICONFILE = 0x00000001; -const ISIOI_ICONINDEX = 0x00000002; - -static if (_WIN32_WINNT >= 0x0500) {/* W2K */ - struct SHELLSTATE { - //TODO: - /* - BOOL fShowAllObjects : 1; - BOOL fShowExtensions : 1; - BOOL fNoConfirmRecycle : 1; - BOOL fShowSysFiles : 1; - BOOL fShowCompColor : 1; - BOOL fDoubleClickInWebView : 1; - BOOL fDesktopHTML : 1; - BOOL fWin95Classic : 1; - BOOL fDontPrettyPath : 1; - BOOL fShowAttribCol : 1; - BOOL fMapNetDrvBtn : 1; - BOOL fShowInfoTip : 1; - BOOL fHideIcons : 1; - BOOL fWebView : 1; - BOOL fFilter : 1; - BOOL fShowSuperHidden : 1; - BOOL fNoNetCrawling : 1; - DWORD dwWin95Unused; - UINT uWin95Unused; - LONG lParamSort; - int iSortDirection; - UINT version; - UINT uNotUsed; - BOOL fSepProcess : 1; - BOOL fStartPanelOn : 1; - BOOL fShowStartPage : 1; - UINT fSpareFlags : 13; -*/ - } - alias SHELLSTATE* LPSHELLSTATE; -} - -static if (_WIN32_IE >= 0x0500) { - align(8): - struct SHDRAGIMAGE { - SIZE sizeDragImage; - POINT ptOffset; - HBITMAP hbmpDragImage; - COLORREF crColorKey; - } - alias SHDRAGIMAGE* LPSHDRAGIMAGE; - align: - - interface IDragSourceHelper : IUnknown - { - HRESULT QueryInterface(REFIID riid, void **ppv); - ULONG AddRef(); - ULONG Release(); - HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject* pDataObject); - HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject* pDataObject); - } - - interface IDropTargetHelper : IUnknown - { - HRESULT QueryInterface(REFIID riid, void** ppv); - ULONG AddRef(); - ULONG Release(); - HRESULT DragEnter(HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect); - HRESULT DragLeave(); - HRESULT DragOver(POINT* ppt, DWORD dwEffect); - HRESULT Drop(IDataObject* pDataObject, POINT* ppt, DWORD dwEffect); - HRESULT Show(BOOL fShow); - } -} - -extern (Windows): -void SHAddToRecentDocs(UINT,PCVOID); -LPITEMIDLIST SHBrowseForFolderA(PBROWSEINFOA); -LPITEMIDLIST SHBrowseForFolderW(PBROWSEINFOW); -void SHChangeNotify(LONG,UINT,PCVOID,PCVOID); -HRESULT SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); -HRESULT SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int); -HRESULT SHGetDesktopFolder(LPSHELLFOLDER*); -HRESULT SHGetInstanceExplorer(IUnknown **); -HRESULT SHGetMalloc(LPMALLOC*); -BOOL SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR); -BOOL SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR); -HRESULT SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*); -HRESULT SHLoadInProc(REFCLSID); - -static if (_WIN32_IE >= 0x0400) { - BOOL SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL); - BOOL SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL); -} - -/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ -HRESULT SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR); -HRESULT SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR); - -static if ((_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500)) {/* ME or W2K */ - HRESULT SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*); -} - -static if (_WIN32_WINNT >= 0x0500) { - INT SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES); - INT SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES); - HRESULT SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*); -} - -static if (_WIN32_WINNT >= 0x0501) {/* XP */ - HRESULT SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR); - HRESULT SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR); -} - -void SHGetSettings(LPSHELLFLAGSTATE,DWORD); - -static if (_WIN32_WINNT >= 0x0500) {/* W2K */ - void SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL); -} - -static if (_WIN32_WINNT >= 0x0500) {/* W2K */ - BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); - BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); - BOOL ILRemoveLastID(LPITEMIDLIST); - HRESULT ILLoadFromStream(IStream*, LPITEMIDLIST*); - HRESULT ILSaveToStream(IStream*, LPCITEMIDLIST); - LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); - LPITEMIDLIST ILClone(LPCITEMIDLIST); - LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST); - LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); - LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); - LPITEMIDLIST ILFindLastID(LPCITEMIDLIST); - LPITEMIDLIST ILGetNext(LPCITEMIDLIST); - UINT ILGetSize(LPCITEMIDLIST); - void ILFree(LPITEMIDLIST); - - HRESULT SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**); -} - -version(Unicode) { - alias IShellExecuteHookW IShellExecuteHook; - alias IShellLinkW IShellLink; - alias BROWSEINFOW BROWSEINFO; - alias SHBrowseForFolderW SHBrowseForFolder; - alias SHGetDataFromIDListW SHGetDataFromIDList; - alias SHGetPathFromIDListW SHGetPathFromIDList; - static if (_WIN32_IE >= 0x0400) { - alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; - } - alias SHGetFolderPathW SHGetFolderPath; - static if (_WIN32_WINNT >= 0x0500) { - alias SHCreateDirectoryExW SHCreateDirectoryEx; - } - static if (_WIN32_WINNT >= 0x0501) { - alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir; - } - alias FILEDESCRIPTORW FILEDESCRIPTOR; - alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR; - alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR; - alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR; - -} else { - alias IShellExecuteHookA IShellExecuteHook; - alias IShellLinkA IShellLink; - alias BROWSEINFOA BROWSEINFO; - alias SHBrowseForFolderA SHBrowseForFolder; - alias SHGetDataFromIDListA SHGetDataFromIDList; - alias SHGetPathFromIDListA SHGetPathFromIDList; - static if (_WIN32_IE >= 0x0400) { - alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; - } - alias SHGetFolderPathA SHGetFolderPath; - static if (_WIN32_WINNT >= 0x0500) { - alias SHCreateDirectoryExA SHCreateDirectoryEx; - } - static if (_WIN32_WINNT >= 0x0501) { - alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir; - } - alias FILEDESCRIPTORA FILEDESCRIPTOR; - alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR; - alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR; - alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR; -} -alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO; +/***********************************************************************\ +* shlobj.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 4.0 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shlobj; +pragma(lib, "shell32"); + +// TODO: fix bitfields +// TODO: CMIC_VALID_SEE_FLAGS +// SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K + +import win32.commctrl, win32.ole2, win32.shlguid, win32.shellapi; +private import win32.prsht, win32.unknwn, win32.w32api, win32.winbase, + win32.winnt, win32.winuser, win32.wtypes, win32.objfwd, win32.objidl; +private import win32.winnetwk; // for NETRESOURCE +private import win32.oaidl : VARIANT; + + +// FIXME: clean up Windows version support + +align(1): + +const BIF_RETURNONLYFSDIRS = 1; +const BIF_DONTGOBELOWDOMAIN = 2; +const BIF_STATUSTEXT = 4; +const BIF_RETURNFSANCESTORS = 8; +const BIF_EDITBOX = 16; +const BIF_VALIDATE = 32; +const BIF_NEWDIALOGSTYLE = 64; +const BIF_BROWSEINCLUDEURLS = 128; +const BIF_USENEWUI = BIF_EDITBOX | BIF_NEWDIALOGSTYLE; +const BIF_BROWSEFORCOMPUTER = 0x1000; +const BIF_BROWSEFORPRINTER = 0x2000; +const BIF_BROWSEINCLUDEFILES = 0x4000; +const BIF_SHAREABLE = 0x8000; +const BFFM_INITIALIZED = 1; +const BFFM_SELCHANGED = 2; +const BFFM_VALIDATEFAILEDA = 3; +const BFFM_VALIDATEFAILEDW = 4; +const BFFM_SETSTATUSTEXTA = WM_USER + 100; +const BFFM_ENABLEOK = WM_USER + 101; +const BFFM_SETSELECTIONA = WM_USER + 102; +const BFFM_SETSELECTIONW = WM_USER + 103; +const BFFM_SETSTATUSTEXTW = WM_USER + 104; +const BFFM_SETOKTEXT = WM_USER + 105; +const BFFM_SETEXPANDED = WM_USER + 106; + +version(Unicode) { + alias BFFM_SETSTATUSTEXTW BFFM_SETSTATUSTEXT; + alias BFFM_SETSELECTIONW BFFM_SETSELECTION; + alias BFFM_VALIDATEFAILEDW BFFM_VALIDATEFAILED; +} else { + alias BFFM_SETSTATUSTEXTA BFFM_SETSTATUSTEXT; + alias BFFM_SETSELECTIONA BFFM_SETSELECTION; + alias BFFM_VALIDATEFAILEDA BFFM_VALIDATEFAILED; +} + +const DVASPECT_SHORTNAME = 2; + +enum SHARD { + SHARD_PIDL = 1, + SHARD_PATHA, + SHARD_PATHW, + SHARD_APPIDINFO, + SHARD_APPIDINFOIDLIST, + SHARD_LINK, + SHARD_APPIDINFOLINK, + SHARD_SHELLITEM, // = 8 + SHARD_PATH = (_WIN32_UNICODE ? SHARD_PATHW : SHARD_PATHA) +} + +const SHCNE_RENAMEITEM = 1; +const SHCNE_CREATE = 2; +const SHCNE_DELETE = 4; +const SHCNE_MKDIR = 8; +const SHCNE_RMDIR = 16; +const SHCNE_MEDIAINSERTED = 32; +const SHCNE_MEDIAREMOVED = 64; +const SHCNE_DRIVEREMOVED = 128; +const SHCNE_DRIVEADD = 256; +const SHCNE_NETSHARE = 512; +const SHCNE_NETUNSHARE = 1024; +const SHCNE_ATTRIBUTES = 2048; +const SHCNE_UPDATEDIR = 4096; +const SHCNE_UPDATEITEM = 8192; +const SHCNE_SERVERDISCONNECT = 16384; +const SHCNE_UPDATEIMAGE = 32768; +const SHCNE_DRIVEADDGUI = 65536; +const SHCNE_RENAMEFOLDER = 0x20000; +const SHCNE_FREESPACE = 0x40000; +const SHCNE_ASSOCCHANGED = 0x8000000; +const SHCNE_DISKEVENTS = 0x2381F; +const SHCNE_GLOBALEVENTS = 0xC0581E0; +const SHCNE_ALLEVENTS = 0x7FFFFFFF; +const SHCNE_INTERRUPT = 0x80000000; + +const SHCNF_IDLIST = 0; +const SHCNF_PATHA = 1; +const SHCNF_PRINTERA = 2; +const SHCNF_DWORD = 3; +const SHCNF_PATHW = 5; +const SHCNF_PRINTERW = 6; +const SHCNF_TYPE = 0xFF; +const SHCNF_FLUSH = 0x1000; +const SHCNF_FLUSHNOWAIT = 0x2000; + +version(Unicode) { + alias SHCNF_PATHW SHCNF_PATH; + alias SHCNF_PRINTERW SHCNF_PRINTER; +} else { + alias SHCNF_PATHA SHCNF_PATH; + alias SHCNF_PRINTERA SHCNF_PRINTER; +} + +enum SFGAOF : DWORD { + SFGAO_CANCOPY = DROPEFFECT.DROPEFFECT_COPY, + SFGAO_CANMOVE = DROPEFFECT.DROPEFFECT_MOVE, + SFGAO_CANLINK = DROPEFFECT.DROPEFFECT_LINK, + SFGAO_CANRENAME = 0x00000010L, + SFGAO_CANDELETE = 0x00000020L, + SFGAO_HASPROPSHEET = 0x00000040L, + SFGAO_DROPTARGET = 0x00000100L, + SFGAO_CAPABILITYMASK = 0x00000177L, + SFGAO_ISSLOW = 0x00004000L, + SFGAO_GHOSTED = 0x00008000L, + SFGAO_LINK = 0x00010000L, + SFGAO_SHARE = 0x00020000L, + SFGAO_READONLY = 0x00040000L, + SFGAO_HIDDEN = 0x00080000L, + SFGAO_DISPLAYATTRMASK = (SFGAO_ISSLOW | SFGAO_GHOSTED | SFGAO_LINK + | SFGAO_SHARE | SFGAO_READONLY | SFGAO_HIDDEN), + SFGAO_FILESYSANCESTOR = 0x10000000L, + SFGAO_FOLDER = 0x20000000L, + SFGAO_FILESYSTEM = 0x40000000L, + SFGAO_HASSUBFOLDER = 0x80000000L, + SFGAO_CONTENTSMASK = 0x80000000L, + SFGAO_VALIDATE = 0x01000000L, + SFGAO_REMOVABLE = 0x02000000L, + SFGAO_COMPRESSED = 0x04000000L +} +const STRRET_WSTR = 0; +const STRRET_OFFSET = 1; +const STRRET_CSTR = 2; + +enum { + SHGDFIL_FINDDATA = 1, + SHGDFIL_NETRESOURCE, + SHGDFIL_DESCRIPTIONID +} + +enum { + SHDID_ROOT_REGITEM = 1, + SHDID_FS_FILE, + SHDID_FS_DIRECTORY, + SHDID_FS_OTHER, + SHDID_COMPUTER_DRIVE35, + SHDID_COMPUTER_DRIVE525, + SHDID_COMPUTER_REMOVABLE, + SHDID_COMPUTER_FIXED, + SHDID_COMPUTER_NETDRIVE, + SHDID_COMPUTER_CDROM, + SHDID_COMPUTER_RAMDISK, + SHDID_COMPUTER_OTHER, + SHDID_NET_DOMAIN, + SHDID_NET_SERVER, + SHDID_NET_SHARE, + SHDID_NET_RESTOFNET, + SHDID_NET_OTHER +} + +const TCHAR[] REGSTR_PATH_EXPLORER = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"; +const TCHAR[] REGSTR_PATH_SPECIAL_FOLDERS=REGSTR_PATH_EXPLORER ~ "\\Shell Folders"; + +enum { + CSIDL_DESKTOP = 0, + CSIDL_INTERNET, + CSIDL_PROGRAMS, + CSIDL_CONTROLS, + CSIDL_PRINTERS, + CSIDL_PERSONAL, + CSIDL_FAVORITES, + CSIDL_STARTUP, + CSIDL_RECENT, + CSIDL_SENDTO, + CSIDL_BITBUCKET, + CSIDL_STARTMENU, // = 11 + CSIDL_MYMUSIC = 13, + CSIDL_MYVIDEO, // = 14 + CSIDL_DESKTOPDIRECTORY = 16, + CSIDL_DRIVES, + CSIDL_NETWORK, + CSIDL_NETHOOD, + CSIDL_FONTS, + CSIDL_TEMPLATES, + CSIDL_COMMON_STARTMENU, + CSIDL_COMMON_PROGRAMS, + CSIDL_COMMON_STARTUP, + CSIDL_COMMON_DESKTOPDIRECTORY, + CSIDL_APPDATA, + CSIDL_PRINTHOOD, + CSIDL_LOCAL_APPDATA, + CSIDL_ALTSTARTUP, + CSIDL_COMMON_ALTSTARTUP, + CSIDL_COMMON_FAVORITES, + CSIDL_INTERNET_CACHE, + CSIDL_COOKIES, + CSIDL_HISTORY, + CSIDL_COMMON_APPDATA, + CSIDL_WINDOWS, + CSIDL_SYSTEM, + CSIDL_PROGRAM_FILES, + CSIDL_MYPICTURES, + CSIDL_PROFILE, + CSIDL_SYSTEMX86, + CSIDL_PROGRAM_FILESX86, + CSIDL_PROGRAM_FILES_COMMON, + CSIDL_PROGRAM_FILES_COMMONX86, + CSIDL_COMMON_TEMPLATES, + CSIDL_COMMON_DOCUMENTS, + CSIDL_COMMON_ADMINTOOLS, + CSIDL_ADMINTOOLS, + CSIDL_CONNECTIONS, // = 49 + CSIDL_COMMON_MUSIC = 53, + CSIDL_COMMON_PICTURES, + CSIDL_COMMON_VIDEO, + CSIDL_RESOURCES, + CSIDL_RESOURCES_LOCALIZED, + CSIDL_COMMON_OEM_LINKS, + CSIDL_CDBURN_AREA, // = 59 + CSIDL_COMPUTERSNEARME = 61, + CSIDL_FLAG_DONT_VERIFY = 0x4000, + CSIDL_FLAG_CREATE = 0x8000, + CSIDL_FLAG_MASK = 0xFF00 +} + +const TCHAR[] + CFSTR_SHELLIDLIST = "Shell IDList Array", + CFSTR_SHELLIDLISTOFFSET = "Shell Object Offsets", + CFSTR_NETRESOURCES = "Net Resource", + CFSTR_FILECONTENTS = "FileContents", + CFSTR_FILENAMEA = "FileName", + CFSTR_FILENAMEMAPA = "FileNameMap", + CFSTR_FILEDESCRIPTORA = "FileGroupDescriptor", + CFSTR_INETURLA = "UniformResourceLocator", + CFSTR_SHELLURL = CFSTR_INETURLA, + CFSTR_FILENAMEW = "FileNameW", + CFSTR_FILENAMEMAPW = "FileNameMapW", + CFSTR_FILEDESCRIPTORW = "FileGroupDescriptorW", + CFSTR_INETURLW = "UniformResourceLocatorW"; + +version(Unicode) { + alias CFSTR_FILENAMEW CFSTR_FILENAME; + alias CFSTR_FILENAMEMAPW CFSTR_FILENAMEMAP; + alias CFSTR_FILEDESCRIPTORW CFSTR_FILEDESCRIPTOR; + alias CFSTR_INETURLW CFSTR_INETURL; +} else { + alias CFSTR_FILENAMEA CFSTR_FILENAME; + alias CFSTR_FILENAMEMAPA CFSTR_FILENAMEMAP; + alias CFSTR_FILEDESCRIPTORA CFSTR_FILEDESCRIPTOR; + alias CFSTR_INETURLA CFSTR_INETURL; +} +const TCHAR[] + CFSTR_PRINTERGROUP = "PrinterFriendlyName", + CFSTR_INDRAGLOOP = "InShellDragLoop", + CFSTR_PASTESUCCEEDED = "Paste Succeeded", + CFSTR_PERFORMEDDROPEFFECT = "Performed DropEffect", + CFSTR_PREFERREDDROPEFFECT = "Preferred DropEffect"; + +const CMF_NORMAL=0; +const CMF_DEFAULTONLY=1; +const CMF_VERBSONLY=2; +const CMF_EXPLORE=4; +const CMF_NOVERBS=8; +const CMF_CANRENAME=16; +const CMF_NODEFAULT=32; +const CMF_INCLUDESTATIC=64; +const CMF_RESERVED=0xffff0000; +const GCS_VERBA=0; +const GCS_HELPTEXTA=1; +const GCS_VALIDATEA=2; +const GCS_VERBW=4; +const GCS_HELPTEXTW=5; +const GCS_VALIDATEW=6; +const GCS_UNICODE=4; + +version(Unicode) { + alias GCS_VERBW GCS_VERB; + alias GCS_HELPTEXTW GCS_HELPTEXT; + alias GCS_VALIDATEW GCS_VALIDATE; +} else { + alias GCS_VERBA GCS_VERB; + alias GCS_HELPTEXTA GCS_HELPTEXT; + alias GCS_VALIDATEA GCS_VALIDATE; +} + +const TCHAR[] + CMDSTR_NEWFOLDER = "NewFolder", + CMDSTR_VIEWLIST = "ViewList", + CMDSTR_VIEWDETAILS = "ViewDetails"; + +const CMIC_MASK_HOTKEY = SEE_MASK_HOTKEY; +const CMIC_MASK_ICON = SEE_MASK_ICON; +const CMIC_MASK_FLAG_NO_UI = SEE_MASK_FLAG_NO_UI; +const CMIC_MASK_MODAL = 0x80000000; +// TODO: This isn't defined anywhere in MinGW. +//const CMIC_VALID_SEE_FLAGS=SEE_VALID_CMIC_FLAGS; + +const GIL_OPENICON = 1; +const GIL_FORSHELL = 2; +const GIL_SIMULATEDOC = 1; +const GIL_PERINSTANCE = 2; +const GIL_PERCLASS = 4; +const GIL_NOTFILENAME = 8; +const GIL_DONTCACHE = 16; + +const FVSIF_RECT = 1; +const FVSIF_PINNED = 2; +const FVSIF_NEWFAILED = 0x8000000; +const FVSIF_NEWFILE = 0x80000000; +const FVSIF_CANVIEWIT = 0x40000000; + +const CDBOSC_SETFOCUS = 0; +const CDBOSC_KILLFOCUS = 1; +const CDBOSC_SELCHANGE = 2; +const CDBOSC_RENAME = 3; + +const FCIDM_SHVIEWFIRST = 0; +const FCIDM_SHVIEWLAST = 0x7fff; +const FCIDM_BROWSERFIRST = 0xa000; +const FCIDM_BROWSERLAST = 0xbf00; +const FCIDM_GLOBALFIRST = 0x8000; +const FCIDM_GLOBALLAST = 0x9fff; +const FCIDM_MENU_FILE = FCIDM_GLOBALFIRST; +const FCIDM_MENU_EDIT = FCIDM_GLOBALFIRST+0x0040; +const FCIDM_MENU_VIEW = FCIDM_GLOBALFIRST+0x0080; +const FCIDM_MENU_VIEW_SEP_OPTIONS = FCIDM_GLOBALFIRST+0x0081; +const FCIDM_MENU_TOOLS = FCIDM_GLOBALFIRST+0x00c0; +const FCIDM_MENU_TOOLS_SEP_GOTO = FCIDM_GLOBALFIRST+0x00c1; +const FCIDM_MENU_HELP = FCIDM_GLOBALFIRST+0x0100; +const FCIDM_MENU_FIND = FCIDM_GLOBALFIRST+0x0140; +const FCIDM_MENU_EXPLORE = FCIDM_GLOBALFIRST+0x0150; +const FCIDM_MENU_FAVORITES = FCIDM_GLOBALFIRST+0x0170; +const FCIDM_TOOLBAR = FCIDM_BROWSERFIRST; +const FCIDM_STATUS = FCIDM_BROWSERFIRST+1; + +const SBSP_DEFBROWSER = 0; +const SBSP_SAMEBROWSER = 1; +const SBSP_NEWBROWSER = 2; +const SBSP_DEFMODE = 0; +const SBSP_OPENMODE = 16; +const SBSP_EXPLOREMODE = 32; +const SBSP_ABSOLUTE = 0; +const SBSP_RELATIVE = 0x1000; +const SBSP_PARENT = 0x2000; +const SBSP_INITIATEDBYHLINKFRAME = 0x80000000; +const SBSP_REDIRECT = 0x40000000; + +enum { + FCW_STATUS=1, + FCW_TOOLBAR, + FCW_TREE +} + +const FCT_MERGE=1; +const FCT_CONFIGABLE=2; +const FCT_ADDTOEND=4; + +const SVSI_DESELECT=0; +const SVSI_SELECT=1; +const SVSI_EDIT=3; +const SVSI_DESELECTOTHERS=4; +const SVSI_ENSUREVISIBLE=8; +const SVSI_FOCUSED=16; + +const SVGIO_BACKGROUND=0; +const SVGIO_SELECTION=1; +const SVGIO_ALLVIEW=2; + +const UINT SV2GV_CURRENTVIEW=-1; +const UINT SV2GV_DEFAULTVIEW=-2; + +alias DWORD SHGDNF; + +struct CIDA { + UINT cidl; + UINT[1] aoffset; +} +alias CIDA* LPIDA; + +struct SHITEMID { + USHORT cb; + BYTE[1] abID; +} +alias SHITEMID* LPSHITEMID; +alias const(SHITEMID)* LPCSHITEMID; + +struct ITEMIDLIST { + SHITEMID mkid; +} +alias ITEMIDLIST* LPITEMIDLIST; +alias const(ITEMIDLIST)* LPCITEMIDLIST; + +alias int function(HWND, UINT, LPARAM, LPARAM) BFFCALLBACK; + +struct BROWSEINFOA { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPSTR pszDisplayName; + LPCSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} +alias BROWSEINFOA* PBROWSEINFOA, LPBROWSEINFOA; + +struct BROWSEINFOW { + HWND hwndOwner; + LPCITEMIDLIST pidlRoot; + LPWSTR pszDisplayName; + LPCWSTR lpszTitle; + UINT ulFlags; + BFFCALLBACK lpfn; + LPARAM lParam; + int iImage; +} +alias BROWSEINFOW* PBROWSEINFOW, LPBROWSEINFOW; + +struct CMINVOKECOMMANDINFO { + DWORD cbSize = this.sizeof; + DWORD fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + DWORD dwHotKey; + HANDLE hIcon; +} +alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO; + +struct DROPFILES { + DWORD pFiles; + POINT pt; + BOOL fNC; + BOOL fWide; +} +alias DROPFILES* LPDROPFILES; + +enum SHGNO { + SHGDN_NORMAL = 0, + SHGDN_INFOLDER, + SHGDN_FOREDITING = 0x1000, + SHGDN_INCLUDE_NONFILESYS = 0x2000, + SHGDN_FORADDRESSBAR = 0x4000, + SHGDN_FORPARSING = 0x8000 +} + +enum SHCONTF { + SHCONTF_FOLDERS = 32, + SHCONTF_NONFOLDERS = 64, + SHCONTF_INCLUDEHIDDEN = 128, + SHCONTF_INIT_ON_FIRST_NEXT = 256, + SHCONTF_NETPRINTERSRCH = 512, + SHCONTF_SHAREABLE = 1024, + SHCONTF_STORAGE = 2048 +} + +struct STRRET { + UINT uType; + union { + LPWSTR pOleStr; + UINT uOffset; + char[MAX_PATH] cStr; + } +} +alias STRRET* LPSTRRET; + +enum FD_FLAGS { + FD_CLSID = 1, + FD_SIZEPOINT = 2, + FD_ATTRIBUTES = 4, + FD_CREATETIME = 8, + FD_ACCESSTIME = 16, + FD_WRITESTIME = 32, + FD_FILESIZE = 64, + FD_LINKUI = 0x8000 +} + +struct FILEDESCRIPTORA { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + CHAR[MAX_PATH] cFileName; +} +alias FILEDESCRIPTORA* LPFILEDESCRIPTORA; + +struct FILEDESCRIPTORW { + DWORD dwFlags; + CLSID clsid; + SIZEL sizel; + POINTL pointl; + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + WCHAR[MAX_PATH] cFileName; +} +alias FILEDESCRIPTORW* LPFILEDESCRIPTORW; + +struct FILEGROUPDESCRIPTORA { + UINT cItems; + FILEDESCRIPTORA[1] fgd; +} +alias FILEGROUPDESCRIPTORA* LPFILEGROUPDESCRIPTORA; + +struct FILEGROUPDESCRIPTORW { + UINT cItems; + FILEDESCRIPTORW[1] fgd; +} +alias FILEGROUPDESCRIPTORW* LPFILEGROUPDESCRIPTORW; + +enum SLR_FLAGS { + SLR_NO_UI = 1, + SLR_ANY_MATCH = 2, + SLR_UPDATE = 4, + SLR_NOUPDATE = 8, + SLR_NOSEARCH = 16, + SLR_NOTRACK = 32, + SLR_NOLINKINFO = 64, + SLR_INVOKE_MSI = 128 +} + +enum SLGP_FLAGS { + SLGP_SHORTPATH=1, + SLGP_UNCPRIORITY=2, + SLGP_RAWPATH=4 +} + +alias PBYTE LPVIEWSETTINGS; + +enum FOLDERFLAGS { + FWF_AUTOARRANGE = 1, + FWF_ABBREVIATEDNAMES = 2, + FWF_SNAPTOGRID = 4, + FWF_OWNERDATA = 8, + FWF_BESTFITWINDOW = 16, + FWF_DESKTOP = 32, + FWF_SINGLESEL = 64, + FWF_NOSUBFOLDERS = 128, + FWF_TRANSPARENT = 256, + FWF_NOCLIENTEDGE = 512, + FWF_NOSCROLL = 0x400, + FWF_ALIGNLEFT = 0x800, + FWF_SINGLECLICKACTIVATE = 0x8000 +} + +enum FOLDERVIEWMODE { + FVM_ICON = 1, + FVM_SMALLICON, + FVM_LIST, + FVM_DETAILS +} + +struct FOLDERSETTINGS { + UINT ViewMode; + UINT fFlags; +} +alias FOLDERSETTINGS* LPFOLDERSETTINGS; +alias const(FOLDERSETTINGS)* LPCFOLDERSETTINGS; + +struct FVSHOWINFO { + DWORD cbSize = this.sizeof; + HWND hwndOwner; + int iShow; + DWORD dwFlags; + RECT rect; + LPUNKNOWN punkRel; + OLECHAR[MAX_PATH] strNewFile; +} +alias FVSHOWINFO* LPFVSHOWINFO; + +struct NRESARRAY { + UINT cItems; + NETRESOURCE[1] nr; +} +alias NRESARRAY* LPNRESARRAY; + +enum { + SBSC_HIDE, + SBSC_SHOW, + SBSC_TOGGLE, + SBSC_QUERY +} + +enum { + SBCMDID_ENABLESHOWTREE, + SBCMDID_SHOWCONTROL, + SBCMDID_CANCELNAVIGATION, + SBCMDID_MAYSAVECHANGES, + SBCMDID_SETHLINKFRAME, + SBCMDID_ENABLESTOP, + SBCMDID_OPTIONS +} +enum SVUIA_STATUS { + SVUIA_DEACTIVATE, + SVUIA_ACTIVATE_NOFOCUS, + SVUIA_ACTIVATE_FOCUS, + SVUIA_INPLACEACTIVATE +} + +static if (_WIN32_IE >= 0x500) { + + struct EXTRASEARCH + { + GUID guidSearch; + WCHAR[80] wszFriendlyName; + WCHAR[2084] wszUrl; + } + alias EXTRASEARCH* LPEXTRASEARCH; + + alias DWORD SHCOLSTATEF; + + struct SHCOLUMNID { + GUID fmtid; + DWORD pid; + } + alias SHCOLUMNID* LPSHCOLUMNID; + alias const(SHCOLUMNID)* LPCSHCOLUMNID; + + struct SHELLDETAILS { + int fmt; + int cxChar; + STRRET str; + } + alias SHELLDETAILS* LPSHELLDETAILS; + + struct PERSIST_FOLDER_TARGET_INFO + { + LPITEMIDLIST pidlTargetFolder; + WCHAR[MAX_PATH] szTargetParsingName; + WCHAR[MAX_PATH] szNetworkProvider; + DWORD dwAttributes; + int csidl; + } + + enum SHGFP_TYPE { + SHGFP_TYPE_CURRENT = 0, + SHGFP_TYPE_DEFAULT = 1, + } + +} + +interface IEnumIDList : IUnknown { + HRESULT Next(ULONG, LPITEMIDLIST*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumIDList*); +} +alias IEnumIDList LPENUMIDLIST; + +interface IObjMgr : IUnknown { + HRESULT Append(IUnknown); + HRESULT Remove(IUnknown); +} + +interface IContextMenu : IUnknown { + HRESULT QueryContextMenu(HMENU, UINT, UINT, UINT, UINT); + HRESULT InvokeCommand(LPCMINVOKECOMMANDINFO); + HRESULT GetCommandString(UINT, UINT, PUINT, LPSTR, UINT); +} +alias IContextMenu LPCONTEXTMENU; + +interface IContextMenu2 : IContextMenu { + HRESULT HandleMenuMsg(UINT, WPARAM, LPARAM); +}; +alias IContextMenu2 LPCONTEXTMENU2; + +static if (_WIN32_IE >= 0x500) { + align(8) { + struct SHCOLUMNINIT { + ULONG dwFlags; + ULONG dwReserved; + WCHAR[MAX_PATH] wszFolder; + } + alias SHCOLUMNINIT* LPSHCOLUMNINIT; + alias const(SHCOLUMNINIT)* LPCSHCOLUMNINIT; + + struct SHCOLUMNDATA { + ULONG dwFlags; + DWORD dwFileAttributes; + ULONG dwReserved; + WCHAR *pwszExt; + WCHAR[MAX_PATH] wszFile; + } + alias SHCOLUMNDATA* LPSHCOLUMNDATA; + alias const(SHCOLUMNDATA)* LPCSHCOLUMNDATA; + } + + const MAX_COLUMN_NAME_LEN = 80; + const MAX_COLUMN_DESC_LEN = 128; + + align(1) struct SHCOLUMNINFO { + SHCOLUMNID scid; + VARTYPE vt; + DWORD fmt; + UINT cChars; + DWORD csFlags; + WCHAR[MAX_COLUMN_NAME_LEN] wszTitle; + WCHAR[MAX_COLUMN_DESC_LEN] wszDescription; + } + alias SHCOLUMNINFO* LPSHCOLUMNINFO; + alias const(SHCOLUMNINFO)* LPCSHCOLUMNINFO; + + enum SHCOLSTATE { + SHCOLSTATE_TYPE_STR = 0x00000001, + SHCOLSTATE_TYPE_INT = 0x00000002, + SHCOLSTATE_TYPE_DATE = 0x00000003, + SHCOLSTATE_TYPEMASK = 0x0000000f, + SHCOLSTATE_ONBYDEFAULT = 0x00000010, + SHCOLSTATE_SLOW = 0x00000020, + SHCOLSTATE_EXTENDED = 0x00000040, + SHCOLSTATE_SECONDARYUI = 0x00000080, + SHCOLSTATE_HIDDEN = 0x00000100, + SHCOLSTATE_PREFER_VARCMP = 0x00000200 + } + + interface IColumnProvider : IUnknown { + HRESULT Initialize(LPCSHCOLUMNINIT); + HRESULT GetColumnInfo(DWORD, SHCOLUMNINFO*); + HRESULT GetItemData(LPCSHCOLUMNID, LPCSHCOLUMNDATA, VARIANT*); + } +}/* _WIN32_IE >= 0x500 */ + +interface IQueryInfo : IUnknown { + HRESULT GetInfoTip(DWORD, WCHAR**); + HRESULT GetInfoFlags(DWORD*); +} + +interface IShellExtInit : IUnknown { + HRESULT Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY); +} +alias IShellExtInit LPSHELLEXTINIT; + +interface IShellPropSheetExt : IUnknown { + HRESULT AddPages(LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM); +} +alias IShellPropSheetExt LPSHELLPROPSHEETEXT; + +interface IExtractIconA : IUnknown { + HRESULT GetIconLocation(UINT, LPSTR, UINT, int*, PUINT); + HRESULT Extract(LPCSTR, UINT, HICON*, HICON*, UINT); +}; +alias IExtractIconA LPEXTRACTICONA; + +interface IExtractIconW : IUnknown { + HRESULT GetIconLocation(UINT, LPWSTR, UINT, int*, PUINT); + HRESULT Extract(LPCWSTR, UINT, HICON*, HICON*, UINT); +} +alias IExtractIconW LPEXTRACTICONW; + +version(Unicode) { + alias IExtractIconW IExtractIcon; + alias LPEXTRACTICONW LPEXTRACTICON; +} else { + alias IExtractIconA IExtractIcon; + alias LPEXTRACTICONA LPEXTRACTICON; +} + +interface IShellLinkA : IUnknown { + HRESULT GetPath(LPSTR, int, WIN32_FIND_DATAA*, DWORD); + HRESULT GetIDList(LPITEMIDLIST*); + HRESULT SetIDList(LPCITEMIDLIST); + HRESULT GetDescription(LPSTR, int); + HRESULT SetDescription(LPCSTR); + HRESULT GetWorkingDirectory(LPSTR, int); + HRESULT SetWorkingDirectory(LPCSTR); + HRESULT GetArguments(LPSTR, int); + HRESULT SetArguments(LPCSTR); + HRESULT GetHotkey(PWORD); + HRESULT SetHotkey(WORD); + HRESULT GetShowCmd(int*); + HRESULT SetShowCmd(int); + HRESULT GetIconLocation(LPSTR, int, int*); + HRESULT SetIconLocation(LPCSTR, int); + HRESULT SetRelativePath(LPCSTR , DWORD); + HRESULT Resolve(HWND, DWORD); + HRESULT SetPath(LPCSTR); +} + +interface IShellLinkW : IUnknown { + HRESULT GetPath(LPWSTR, int, WIN32_FIND_DATAW*, DWORD); + HRESULT GetIDList(LPITEMIDLIST*); + HRESULT SetIDList(LPCITEMIDLIST); + HRESULT GetDescription(LPWSTR, int); + HRESULT SetDescription(LPCWSTR); + HRESULT GetWorkingDirectory(LPWSTR, int); + HRESULT SetWorkingDirectory(LPCWSTR); + HRESULT GetArguments(LPWSTR, int); + HRESULT SetArguments(LPCWSTR); + HRESULT GetHotkey(PWORD); + HRESULT SetHotkey(WORD); + HRESULT GetShowCmd(int*); + HRESULT SetShowCmd(int); + HRESULT GetIconLocation(LPWSTR, int, int*); + HRESULT SetIconLocation(LPCWSTR, int); + HRESULT SetRelativePath(LPCWSTR , DWORD); + HRESULT Resolve(HWND, DWORD); + HRESULT SetPath(LPCWSTR); +} + + +interface IShellFolder : IUnknown { + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); + HRESULT CreateViewObject(HWND, REFIID, PVOID*); + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); +} +alias IShellFolder LPSHELLFOLDER; + +static if (_WIN32_IE >= 0x500) { + +interface IEnumExtraSearch: IUnknown { + HRESULT Next(ULONG, LPEXTRASEARCH*, ULONG*); + HRESULT Skip(ULONG); + HRESULT Reset(); + HRESULT Clone(IEnumExtraSearch*); +} +alias IEnumExtraSearch LPENUMEXTRASEARCH; + +interface IShellFolder2 : IShellFolder { + HRESULT ParseDisplayName(HWND, LPBC, LPOLESTR, PULONG, LPITEMIDLIST*, PULONG); + HRESULT EnumObjects(HWND, DWORD, LPENUMIDLIST*); + HRESULT BindToObject(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT BindToStorage(LPCITEMIDLIST, LPBC, REFIID, PVOID*); + HRESULT CompareIDs(LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); + HRESULT CreateViewObject(HWND, REFIID, PVOID*); + HRESULT GetAttributesOf(UINT, LPCITEMIDLIST*, PULONG); + HRESULT GetUIObjectOf(HWND, UINT, LPCITEMIDLIST*, REFIID, PUINT, PVOID*); + HRESULT GetDisplayNameOf(LPCITEMIDLIST, DWORD, LPSTRRET); + HRESULT SetNameOf(HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); + HRESULT GetDefaultSearchGUID(GUID*); + HRESULT EnumSearches(IEnumExtraSearch*); + HRESULT GetDefaultColumn(DWORD, ULONG*, ULONG*); + HRESULT GetDefaultColumnState(UINT, SHCOLSTATEF*); + HRESULT GetDetailsEx(LPCITEMIDLIST, const(SHCOLUMNID)*, VARIANT*); + HRESULT GetDetailsOf(LPCITEMIDLIST, UINT, SHELLDETAILS*); + HRESULT MapColumnToSCID(UINT, SHCOLUMNID*); +} +alias IShellFolder2 LPSHELLFOLDER2; + +} /* _WIN32_IE >= 0x500 */ + +interface ICopyHook : IUnknown { + UINT CopyCallback(HWND, UINT, UINT, LPCSTR, DWORD, LPCSTR, DWORD); +} +alias ICopyHook LPCOPYHOOK; + +interface IFileViewerSite : IUnknown { + HRESULT SetPinnedWindow(HWND); + HRESULT GetPinnedWindow(HWND*); +} +alias IFileViewerSite LPFILEVIEWERSITE; + +interface IFileViewer : IUnknown { + HRESULT ShowInitialize(LPFILEVIEWERSITE); + HRESULT Show(LPFVSHOWINFO); + HRESULT PrintTo(LPSTR, BOOL); +} +alias IFileViewer LPFILEVIEWER; + +interface IFileSystemBindData : IUnknown { + HRESULT SetFindData(const(WIN32_FIND_DATAW)*); + HRESULT GetFindData(WIN32_FIND_DATAW*); +} + +interface IPersistFolder : IPersist { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); +} +alias IPersistFolder LPPERSISTFOLDER; + +static if (_WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500) { + +interface IPersistFolder2 : IPersistFolder { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetCurFolder(LPITEMIDLIST*); +} +alias IPersistFolder2 LPPERSISTFOLDER2; + +}/* _WIN32_IE >= 0x400 || _WIN32_WINNT >= 0x500 */ + +static if (_WIN32_IE >= 0x500) { + +interface IPersistFolder3 : IPersistFolder2 { + HRESULT GetClassID(CLSID*); + HRESULT Initialize(LPCITEMIDLIST); + HRESULT GetCurFolder(LPITEMIDLIST*); + HRESULT InitializeEx(IBindCtx, LPCITEMIDLIST, const(PERSIST_FOLDER_TARGET_INFO)*); + HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO*); +} +alias IPersistFolder3 LPPERSISTFOLDER3; + +} /* _WIN32_IE >= 0x500 */ + +alias IShellBrowser LPSHELLBROWSER; +alias IShellView LPSHELLVIEW; + +interface IShellBrowser : IOleWindow { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT InsertMenusSB(HMENU, LPOLEMENUGROUPWIDTHS); + HRESULT SetMenuSB(HMENU, HOLEMENU, HWND); + HRESULT RemoveMenusSB(HMENU); + HRESULT SetStatusTextSB(LPCOLESTR); + HRESULT EnableModelessSB(BOOL); + HRESULT TranslateAcceleratorSB(LPMSG, WORD); + HRESULT BrowseObject(LPCITEMIDLIST, UINT); + HRESULT GetViewStateStream(DWORD, LPSTREAM*); + HRESULT GetControlWindow(UINT, HWND*); + HRESULT SendControlMsg(UINT, UINT, WPARAM, LPARAM, LRESULT*); + HRESULT QueryActiveShellView(LPSHELLVIEW*); + HRESULT OnViewWindowActive(LPSHELLVIEW); + HRESULT SetToolbarItems(LPTBBUTTON, UINT, UINT); +} + +interface IShellView : IOleWindow { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT TranslateAccelerator(LPMSG); +//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +//[Yes] #else + HRESULT EnableModeless(BOOL); +//[Yes] #endif + HRESULT UIActivate(UINT); + HRESULT Refresh(); + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo(LPFOLDERSETTINGS); + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT SaveViewState(); + HRESULT SelectItem(LPCITEMIDLIST, UINT); + HRESULT GetItemObject(UINT, REFIID, PVOID*); +} + +interface ICommDlgBrowser : IUnknown { + HRESULT OnDefaultCommand(IShellView); + HRESULT OnStateChange(IShellView, ULONG); + HRESULT IncludeObject(IShellView, LPCITEMIDLIST); +} +alias ICommDlgBrowser LPCOMMDLGBROWSER; + +alias GUID SHELLVIEWID; + +struct SV2CVW2_PARAMS { + DWORD cbSize = this.sizeof; + IShellView psvPrev; + FOLDERSETTINGS *pfs; + IShellBrowser psbOwner; + RECT *prcView; + const(SHELLVIEWID)* pvid; + HWND hwndView; +} +alias SV2CVW2_PARAMS* LPSV2CVW2_PARAMS; + +interface IShellView2 : IShellView { + HRESULT GetWindow(HWND*); + HRESULT ContextSensitiveHelp(BOOL); + HRESULT TranslateAccelerator(LPMSG); +//[No] #ifdef _FIX_ENABLEMODELESS_CONFLICT +//[No] STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE; +//[Yes] #else + HRESULT EnableModeless(BOOL); +//[Yes] #endif + HRESULT UIActivate(UINT); + HRESULT Refresh(); + HRESULT CreateViewWindow(IShellView, LPCFOLDERSETTINGS, LPSHELLBROWSER, RECT*, HWND*); + HRESULT DestroyViewWindow(); + HRESULT GetCurrentInfo(LPFOLDERSETTINGS); + HRESULT AddPropertySheetPages(DWORD, LPFNADDPROPSHEETPAGE, LPARAM); + HRESULT SaveViewState(); + HRESULT SelectItem(LPCITEMIDLIST, UINT); + HRESULT GetItemObject(UINT, REFIID, PVOID*); + HRESULT GetView(SHELLVIEWID*, ULONG); + HRESULT CreateViewWindow2(LPSV2CVW2_PARAMS); +} + +interface IShellExecuteHookA : IUnknown { + HRESULT Execute(LPSHELLEXECUTEINFOA); +} + +interface IShellExecuteHookW : IUnknown { + HRESULT Execute(LPSHELLEXECUTEINFOW); +} + +interface IShellIcon : IUnknown { + HRESULT GetIconOf(LPCITEMIDLIST, UINT, PINT); +} +alias IShellIcon LPSHELLICON; + +struct SHELLFLAGSTATE { + short _bf; +/* + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + UINT fRestFlags : 3; +*/ + @property bool fShowAllObjects() { return cast(bool) (_bf & 0x0001); } + @property bool fShowExtensions() { return cast(bool) (_bf & 0x0002); } + @property bool fNoConfirmRecycle() { return cast(bool) (_bf & 0x0004); } + @property bool fShowSysFiles() { return cast(bool) (_bf & 0x0008); } + @property bool fShowCompColor() { return cast(bool) (_bf & 0x0010); } + @property bool fDoubleClickInWebView() { return cast(bool) (_bf & 0x0020); } + @property bool fDesktopHTML() { return cast(bool) (_bf & 0x0040); } + @property bool fWin95Classic() { return cast(bool) (_bf & 0x0080); } + @property bool fDontPrettyPath() { return cast(bool) (_bf & 0x0100); } + @property bool fShowAttribCol() { return cast(bool) (_bf & 0x0200); } + @property bool fMapNetDrvBtn() { return cast(bool) (_bf & 0x0400); } + @property bool fShowInfoTip() { return cast(bool) (_bf & 0x0800); } + @property bool fHideIcons() { return cast(bool) (_bf & 0x1000); } + @property ubyte fRestFlags() { return cast(ubyte) (_bf >> 13); } + + @property bool fShowAllObjects(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFE) | f); return f; } + @property bool fShowExtensions(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFD) | (f << 1)); return f; } + @property bool fNoConfirmRecycle(bool f) { _bf = cast(ushort) ((_bf & ~0xFFFB) | (f << 2)); return f; } + @property bool fShowSysFiles(bool f) { _bf = cast(ushort) ((_bf & ~0xFFF8) | (f << 3)); return f; } + @property bool fShowCompColor(bool f) { _bf = cast(ushort) ((_bf & ~0xFFEF) | (f << 4)); return f; } + @property bool fDoubleClickInWebView(bool f) { _bf = cast(ushort) ((_bf & ~0xFFDF) | (f << 5)); return f; } + @property bool fDesktopHTML(bool f) { _bf = cast(ushort) ((_bf & ~0xFFBF) | (f << 6)); return f; } + @property bool fWin95Classic(bool f) { _bf = cast(ushort) ((_bf & ~0xFF8F) | (f << 7)); return f; } + @property bool fDontPrettyPath(bool f) { _bf = cast(ushort) ((_bf & ~0xFEFF) | (f << 8)); return f; } + @property bool fShowAttribCol(bool f) { _bf = cast(ushort) ((_bf & ~0xFDFF) | (f << 9)); return f; } + @property bool fMapNetDrvBtn(bool f) { _bf = cast(ushort) ((_bf & ~0xFBFF) | (f << 10)); return f; } + @property bool fShowInfoTip(bool f) { _bf = cast(ushort) ((_bf & ~0xF8FF) | (f << 11)); return f; } + @property bool fHideIcons(bool f) { _bf = cast(ushort) ((_bf & ~0xEFFF) | (f << 12)); return f; } + @property ubyte fRestFlags(ubyte f) { _bf = cast(ushort) ((_bf & ~0x1FFF) | (f << 13)); return cast(ubyte) (f & 7); } +} +alias SHELLFLAGSTATE* LPSHELLFLAGSTATE; + +const SSF_SHOWALLOBJECTS = 0x1; +const SSF_SHOWEXTENSIONS = 0x2; +const SSF_SHOWCOMPCOLOR = 0x8; +const SSF_SHOWSYSFILES = 0x20; +const SSF_DOUBLECLICKINWEBVIEW = 0x80; +const SSF_SHOWATTRIBCOL = 0x100; +const SSF_DESKTOPHTML = 0x200; +const SSF_WIN95CLASSIC = 0x400; +const SSF_DONTPRETTYPATH = 0x800; +const SSF_MAPNETDRVBUTTON = 0x1000; +const SSF_SHOWINFOTIP = 0x2000; +const SSF_HIDEICONS = 0x4000; +const SSF_NOCONFIRMRECYCLE = 0x8000; + +interface IShellIconOverlayIdentifier : IUnknown { + HRESULT IsMemberOf(LPCWSTR, DWORD); + HRESULT GetOverlayInfo(LPWSTR, int, int*, DWORD*); + HRESULT GetPriority(int*); +} + +const ISIOI_ICONFILE = 0x00000001; +const ISIOI_ICONINDEX = 0x00000002; + +static if (_WIN32_WINNT >= 0x500) { + struct SHELLSTATE { + uint _bf1; + DWORD dwWin95Unused; + UINT uWin95Unused; + LONG lParamSort; + int iSortDirection; + UINT _version; + UINT uNotUsed; + uint _bf2; + /* + BOOL fShowAllObjects : 1; + BOOL fShowExtensions : 1; + BOOL fNoConfirmRecycle : 1; + BOOL fShowSysFiles : 1; + BOOL fShowCompColor : 1; + BOOL fDoubleClickInWebView : 1; + BOOL fDesktopHTML : 1; + BOOL fWin95Classic : 1; + BOOL fDontPrettyPath : 1; + BOOL fShowAttribCol : 1; + BOOL fMapNetDrvBtn : 1; + BOOL fShowInfoTip : 1; + BOOL fHideIcons : 1; + BOOL fWebView : 1; + BOOL fFilter : 1; + BOOL fShowSuperHidden : 1; + BOOL fNoNetCrawling : 1; + */ + @property bool fShowAllObjects() { return cast(bool) (_bf1 & 0x00000001); } + @property bool fShowExtensions() { return cast(bool) (_bf1 & 0x00000002); } + @property bool fNoConfirmRecycle() { return cast(bool) (_bf1 & 0x00000004); } + @property bool fShowSysFiles() { return cast(bool) (_bf1 & 0x00000008); } + @property bool fShowCompColor() { return cast(bool) (_bf1 & 0x00000010); } + @property bool fDoubleClickInWebView() { return cast(bool) (_bf1 & 0x00000020); } + @property bool fDesktopHTML() { return cast(bool) (_bf1 & 0x00000040); } + @property bool fWin95Classic() { return cast(bool) (_bf1 & 0x00000080); } + @property bool fDontPrettyPath() { return cast(bool) (_bf1 & 0x00000100); } + @property bool fShowAttribCol() { return cast(bool) (_bf1 & 0x00000200); } + @property bool fMapNetDrvBtn() { return cast(bool) (_bf1 & 0x00000400); } + @property bool fShowInfoTip() { return cast(bool) (_bf1 & 0x00000800); } + @property bool fHideIcons() { return cast(bool) (_bf1 & 0x00001000); } + @property bool fWebView() { return cast(bool) (_bf1 & 0x00002000); } + @property bool fFilter() { return cast(bool) (_bf1 & 0x00004000); } + @property bool fShowSuperHidden() { return cast(bool) (_bf1 & 0x00008000); } + @property bool fNoNetCrawling() { return cast(bool) (_bf1 & 0x00010000); } + + @property bool fShowAllObjects(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFE) | f); return f; } + @property bool fShowExtensions(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFD) | (f << 1)); return f; } + @property bool fNoConfirmRecycle(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFFB) | (f << 2)); return f; } + @property bool fShowSysFiles(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFF8) | (f << 3)); return f; } + @property bool fShowCompColor(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFEF) | (f << 4)); return f; } + @property bool fDoubleClickInWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFDF) | (f << 5)); return f; } + @property bool fDesktopHTML(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFFBF) | (f << 6)); return f; } + @property bool fWin95Classic(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFF8F) | (f << 7)); return f; } + @property bool fDontPrettyPath(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFEFF) | (f << 8)); return f; } + @property bool fShowAttribCol(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFDFF) | (f << 9)); return f; } + @property bool fMapNetDrvBtn(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFFBFF) | (f << 10)); return f; } + @property bool fShowInfoTip(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFF8FF) | (f << 11)); return f; } + @property bool fHideIcons(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFEFFF) | (f << 12)); return f; } + @property bool fWebView(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFDFFF) | (f << 13)); return f; } + @property bool fFilter(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFFBFFF) | (f << 14)); return f; } + @property bool fShowSuperHidden(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFF8FFF) | (f << 15)); return f; } + @property bool fNoNetCrawling(bool f) { _bf1 = cast(uint) ((_bf1 & ~0xFFFEFFFF) | (f << 16)); return f; } + /* + BOOL fSepProcess : 1; + BOOL fStartPanelOn : 1; + BOOL fShowStartPage : 1; + UINT fSpareFlags : 13; + */ + @property bool fSepProcess() { return cast(bool) (_bf2 & 0x00000001); } + @property bool fStartPanelOn() { return cast(bool) (_bf2 & 0x00000002); } + @property bool fShowStartPage() { return cast(bool) (_bf2 & 0x00000004); } + @property ushort fSpareFlags() { return cast(ushort) ((_bf2 & 0x0000FFF8) >> 3); } + + @property bool fSepProcess(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFE) | f); return f; } + @property bool fStartPanelOn(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFD) | (f << 1)); return f; } + @property bool fShowStartPage(bool f) { _bf2 = cast(uint) ((_bf2 & ~0xFFFFFFFB) | (f << 2)); return f; } + @property ushort fSpareFlags(ushort f) { + _bf2 = cast(ushort) ((_bf2 & ~0xFFFF0007) | ((f & 0x1FFF) << 3)); + return cast(ushort) (f & 0x1FFF); + } + } + alias SHELLSTATE* LPSHELLSTATE; +} + +static if (_WIN32_IE >= 0x500) { + align(8) { + struct SHDRAGIMAGE { + SIZE sizeDragImage; + POINT ptOffset; + HBITMAP hbmpDragImage; + COLORREF crColorKey; + } + alias SHDRAGIMAGE* LPSHDRAGIMAGE; + } + + interface IDragSourceHelper : IUnknown { + HRESULT InitializeFromBitmap(LPSHDRAGIMAGE pshdi, IDataObject pDataObject); + HRESULT InitializeFromWindow(HWND hwnd, POINT* ppt, IDataObject pDataObject); + } + + interface IDropTargetHelper : IUnknown { + HRESULT DragEnter(HWND hwndTarget, IDataObject pDataObject, POINT* ppt, DWORD dwEffect); + HRESULT DragLeave(); + HRESULT DragOver(POINT* ppt, DWORD dwEffect); + HRESULT Drop(IDataObject pDataObject, POINT* ppt, DWORD dwEffect); + HRESULT Show(BOOL fShow); + } +} + +extern (Windows): +void SHAddToRecentDocs(UINT, PCVOID); +LPITEMIDLIST SHBrowseForFolderA(PBROWSEINFOA); +LPITEMIDLIST SHBrowseForFolderW(PBROWSEINFOW); +void SHChangeNotify(LONG, UINT, PCVOID, PCVOID); +HRESULT SHGetDataFromIDListA(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int); +HRESULT SHGetDataFromIDListW(LPSHELLFOLDER, LPCITEMIDLIST, int, PVOID, int); +HRESULT SHGetDesktopFolder(LPSHELLFOLDER*); +HRESULT SHGetInstanceExplorer(IUnknown*); +HRESULT SHGetMalloc(LPMALLOC*); +BOOL SHGetPathFromIDListA(LPCITEMIDLIST, LPSTR); +BOOL SHGetPathFromIDListW(LPCITEMIDLIST, LPWSTR); +HRESULT SHGetSpecialFolderLocation(HWND, int, LPITEMIDLIST*); +HRESULT SHLoadInProc(REFCLSID); + +static if (_WIN32_IE >= 0x400) { + BOOL SHGetSpecialFolderPathA(HWND, LPSTR, int, BOOL); + BOOL SHGetSpecialFolderPathW(HWND, LPWSTR, int, BOOL); +} + +/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */ +HRESULT SHGetFolderPathA(HWND, int, HANDLE, DWORD, LPSTR); +HRESULT SHGetFolderPathW(HWND, int, HANDLE, DWORD, LPWSTR); + +static if (_WIN32_WINNT >= 0x500) { + INT SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex); + INT SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex); + HRESULT SHGetFolderLocation(HWND, int, HANDLE, DWORD, LPITEMIDLIST*); + INT SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES); + INT SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES); + HRESULT SHBindToParent(LPCITEMIDLIST, REFIID, VOID**, LPCITEMIDLIST*); +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + PRF_VERIFYEXISTS = 0x0001, + PRF_TRYPROGRAMEXTENSIONS = (0x0002 | PRF_VERIFYEXISTS), + PRF_FIRSTDIRDEF = 0x0004, + PRF_DONTFINDLNK = 0x0008, + IDO_SHGIOI_SHARE = 0x0FFFFFFF, + IDO_SHGIOI_LINK = 0x0FFFFFFE, + IDO_SHGIOI_SLOWFILE = 0x0FFFFFFD, + IDO_SHGIOI_DEFAULT = 0x0FFFFFFC + } + + struct SHDESCRIPTIONID { + DWORD dwDescriptionId; + CLSID clsid; + } + alias SHDESCRIPTIONID* LPSHDESCRIPTIONID; + + BOOL PathResolve(LPWSTR, LPCWSTR*, UINT); + HRESULT SHGetFolderPathAndSubDirA(HWND, int, HANDLE, DWORD, LPCSTR, LPSTR); + HRESULT SHGetFolderPathAndSubDirW(HWND, int, HANDLE, DWORD, LPCWSTR, LPWSTR); + HRESULT SHParseDisplayName(LPCWSTR, IBindCtx, LPITEMIDLIST, SFGAOF, SFGAOF*); +} + +void SHGetSettings(LPSHELLFLAGSTATE, DWORD); + +static if (_WIN32_WINNT >= 0x500) { + void SHGetSetSettings(LPSHELLSTATE, DWORD, BOOL); + BOOL ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST); + BOOL ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL); + BOOL ILRemoveLastID(LPITEMIDLIST); + HRESULT ILLoadFromStream(IStream, LPITEMIDLIST*); + HRESULT ILSaveToStream(IStream, LPCITEMIDLIST); + LPITEMIDLIST ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL); + LPITEMIDLIST ILClone(LPCITEMIDLIST); + LPITEMIDLIST ILCloneFirst(LPCITEMIDLIST); + LPITEMIDLIST ILCombine(LPCITEMIDLIST, LPCITEMIDLIST); + LPITEMIDLIST ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST); + LPITEMIDLIST ILFindLastID(LPCITEMIDLIST); + LPITEMIDLIST ILGetNext(LPCITEMIDLIST); + UINT ILGetSize(LPCITEMIDLIST); + void ILFree(LPITEMIDLIST); + + HRESULT SHCoCreateInstance(LPCWSTR, REFCLSID, IUnknown, REFIID, void**); +} + +version(Unicode) { + alias IShellExecuteHookW IShellExecuteHook; + alias IShellLinkW IShellLink; + alias BROWSEINFOW BROWSEINFO; + alias SHBrowseForFolderW SHBrowseForFolder; + alias SHGetDataFromIDListW SHGetDataFromIDList; + alias SHGetPathFromIDListW SHGetPathFromIDList; + static if (_WIN32_IE >= 0x400) { + alias SHGetSpecialFolderPathW SHGetSpecialFolderPath; + } + alias SHGetFolderPathW SHGetFolderPath; + static if (_WIN32_WINNT >= 0x500) { + alias SHGetIconOverlayIndexW SHGetIconOverlayIndex; + alias SHCreateDirectoryExW SHCreateDirectoryEx; + } + static if (_WIN32_WINNT >= 0x501) { + alias SHGetFolderPathAndSubDirW SHGetFolderPathAndSubDir; + } + alias FILEDESCRIPTORW FILEDESCRIPTOR; + alias LPFILEDESCRIPTORW LPFILEDESCRIPTOR; + alias FILEGROUPDESCRIPTORW FILEGROUPDESCRIPTOR; + alias LPFILEGROUPDESCRIPTORW LPFILEGROUPDESCRIPTOR; + +} else { + alias IShellExecuteHookA IShellExecuteHook; + alias IShellLinkA IShellLink; + alias BROWSEINFOA BROWSEINFO; + alias SHBrowseForFolderA SHBrowseForFolder; + alias SHGetDataFromIDListA SHGetDataFromIDList; + alias SHGetPathFromIDListA SHGetPathFromIDList; + static if (_WIN32_IE >= 0x400) { + alias SHGetSpecialFolderPathA SHGetSpecialFolderPath; + } + alias SHGetFolderPathA SHGetFolderPath; + static if (_WIN32_WINNT >= 0x500) { + alias SHGetIconOverlayIndexA SHGetIconOverlayIndex; + alias SHCreateDirectoryExA SHCreateDirectoryEx; + } + static if (_WIN32_WINNT >= 0x501) { + alias SHGetFolderPathAndSubDirA SHGetFolderPathAndSubDir; + } + alias FILEDESCRIPTORA FILEDESCRIPTOR; + alias LPFILEDESCRIPTORA LPFILEDESCRIPTOR; + alias FILEGROUPDESCRIPTORA FILEGROUPDESCRIPTOR; + alias LPFILEGROUPDESCRIPTORA LPFILEGROUPDESCRIPTOR; +} +alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO; + +static if (_WIN32_WINNT >= 0x501) { + interface IFolderView : IUnknown { + HRESULT GetAutoArrange(); + HRESULT GetCurrentViewMode(UINT); + HRESULT GetDefaultSpacing(POINT*); + HRESULT GetFocusedItem(int*); + HRESULT GetFolder(REFIID, PVOID*); + HRESULT GetItemPosition(LPCITEMIDLIST, POINT*); + HRESULT GetSelectionMarkedItem(int*); + HRESULT GetSpacing(POINT*); + HRESULT Item(int, LPITEMIDLIST*); + HRESULT ItemCount(UINT, int*); + HRESULT Items(UINT, REFIID, PVOID*); + HRESULT SelectAndPositionItems(UINT, LPCITEMIDLIST*, POINT*, DWORD); + HRESULT SelectItem(int, DWORD); + HRESULT SetCurrentViewMode(UINT); + } + alias IFolderView LPFOLDERVIEW; +} Index: src/win32/shlwapi.d ================================================================== --- src/win32/shlwapi.d +++ src/win32/shlwapi.d @@ -1,730 +1,730 @@ -/***********************************************************************\ -* shlwapi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.shlwapi; -pragma(lib, "shlwapi.lib"); - -/* Changes compared to MinGW: -wnsprintf functions are not included. -// Macros unneeded for D -#define StrCmpIA lstrcmpiA; -#define StrCmpA lstrcmpA; -#define StrCpyA lstrcpyA; -#define StrCpyNA lstrcpynA; -#define MAKEDLLVERULL(major, minor, build, qfe) \ - (((ULONGLONG)(major) << 48) | \ - ((ULONGLONG)(minor) << 32) | \ - ((ULONGLONG)(build) << 16) | \ - ((ULONGLONG)( qfe) << 0)) -*/ - -import win32.objbase, win32.shlobj; -private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef, - win32.winbase, win32.winreg; - -const DLLVER_PLATFORM_WINDOWS = 0x00000001; -const DLLVER_PLATFORM_NT = 0x00000002; - -const URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000; -const URL_DONT_SIMPLIFY = 0x08000000; -const URL_ESCAPE_PERCENT = 0x00001000; -const URL_ESCAPE_SEGMENT_ONLY = 0x00002000; -const URL_ESCAPE_SPACES_ONLY = 0x04000000; -const URL_ESCAPE_UNSAFE = 0x20000000; -const URL_INTERNAL_PATH = 0x00800000; -const URL_PARTFLAG_KEEPSCHEME = 0x00000001; -const URL_PLUGGABLE_PROTOCOL = 0x40000000; -const URL_UNESCAPE = 0x10000000; -const URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000; -const URL_UNESCAPE_INPLACE = 0x00100000; - -align(1): -struct DLLVERSIONINFO -{ - DWORD cbSize = this.sizeof; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformID; -} - -struct DLLVERSIONINFO2 -{ - DLLVERSIONINFO info1; - DWORD dwFlags; - ULONGLONG ullVersion; -} - -enum ASSOCSTR { - ASSOCSTR_COMMAND, - ASSOCSTR_EXECUTABLE, - ASSOCSTR_FRIENDLYDOCNAME, - ASSOCSTR_FRIENDLYAPPNAME, - ASSOCSTR_NOOPEN, - ASSOCSTR_SHELLNEWVALUE, - ASSOCSTR_DDECOMMAND, - ASSOCSTR_DDEIFEXEC, - ASSOCSTR_DDEAPPLICATION, - ASSOCSTR_DDETOPIC -} - -enum ASSOCKEY -{ - ASSOCKEY_SHELLEXECCLASS = 1, - ASSOCKEY_APP, - ASSOCKEY_CLASS, - ASSOCKEY_BASECLASS -} - -enum ASSOCDATA -{ - ASSOCDATA_MSIDESCRIPTOR = 1, - ASSOCDATA_NOACTIVATEHANDLER, - ASSOCDATA_QUERYCLASSSTORE -} - -alias DWORD ASSOCF; - -enum SHREGDEL_FLAGS -{ - SHREGDEL_DEFAULT = 0x00000000, - SHREGDEL_HKCU = 0x00000001, - SHREGDEL_HKLM = 0x00000010, - SHREGDEL_BOTH = 0x00000011 -} - -enum SHREGENUM_FLAGS -{ - SHREGENUM_DEFAULT = 0x00000000, - SHREGENUM_HKCU = 0x00000001, - SHREGENUM_HKLM = 0x00000010, - SHREGENUM_BOTH = 0x00000011 -} - -enum URLIS -{ - URLIS_URL, - URLIS_OPAQUE, - URLIS_NOHISTORY, - URLIS_FILEURL, - URLIS_APPLIABLE, - URLIS_DIRECTORY, - URLIS_HASQUERY -} - -alias HANDLE HUSKEY; -alias HUSKEY* PHUSKEY; - -extern (Windows) -{ - alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC; -} - - -BOOL IntlStrEqNA(LPCSTR pStr1, LPCSTR pStr2, int nChar) -{ - return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); -} - -BOOL IntlStrEqNW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) -{ - return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); -} - -BOOL IntlStrEqNIA(LPCSTR pStr1, LPCSTR pStr2, int nChar) -{ - return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); -} - -BOOL IntlStrEqNIW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) -{ - return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); -} - -BOOL UrlIsFileUrlA(LPCSTR pszURL) -{ - return UrlIsA(pszURL, URLIS.URLIS_FILEURL); -} - -BOOL UrlIsFileUrlW(LPCWSTR pszURL) -{ - return UrlIsW(pszURL, URLIS.URLIS_FILEURL); -} - -HRESULT UrlUnescapeInPlaceA(LPSTR pszUrl,DWORD dwFlags) -{ - return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); -} -HRESULT UrlUnescapeInPlaceW(LPWSTR pszUrl,DWORD dwFlags) -{ - return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); -} - -extern (Windows): -BOOL ChrCmpIA(WORD,WORD); -BOOL ChrCmpIW(WCHAR,WCHAR); -BOOL IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int); -BOOL IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int); -HRESULT SHStrDupA(LPCSTR,LPWSTR*); -HRESULT SHStrDupW(LPCWSTR,LPWSTR*); -LPSTR StrCatA(LPSTR,LPCSTR); -LPWSTR StrCatW(LPWSTR,LPCWSTR); -LPSTR StrCatBuffA(LPSTR,LPCSTR,int); -LPWSTR StrCatBuffW(LPWSTR,LPCWSTR,int); -DWORD StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR); -LPSTR StrChrA(LPCSTR,WORD); -LPWSTR StrChrW(LPCWSTR,WCHAR); -LPSTR StrChrIA(LPCSTR,WORD); -LPWSTR StrChrIW(LPCWSTR,WCHAR); -int StrCmpIW(LPCWSTR,LPCWSTR); -int StrCmpW(LPCWSTR,LPCWSTR); -LPWSTR StrCpyW(LPWSTR,LPCWSTR); -LPWSTR StrCpyNW(LPWSTR,LPCWSTR,int); -int StrCmpNA(LPCSTR,LPCSTR,int); -int StrCmpNW(LPCWSTR,LPCWSTR,int); -int StrCmpNIA(LPCSTR,LPCSTR,int); -int StrCmpNIW(LPCWSTR,LPCWSTR,int); -int StrCSpnA(LPCSTR,LPCSTR); -int StrCSpnW(LPCWSTR,LPCWSTR); -int StrCSpnIA(LPCSTR,LPCSTR); -int StrCSpnIW(LPCWSTR,LPCWSTR); -LPSTR StrDupA(LPCSTR); -LPWSTR StrDupW(LPCWSTR); -LPSTR StrFormatByteSize64A(LONGLONG,LPSTR,UINT); -LPSTR StrFormatByteSizeA(DWORD,LPSTR,UINT); -LPWSTR StrFormatByteSizeW(LONGLONG,LPWSTR,UINT); -LPSTR StrFormatKBSizeA(LONGLONG,LPSTR,UINT); -LPWSTR StrFormatKBSizeW(LONGLONG,LPWSTR,UINT); -int StrFromTimeIntervalA(LPSTR,UINT,DWORD,int); -int StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int); -BOOL StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int); -BOOL StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int); -LPSTR StrNCatA(LPSTR,LPCSTR,int); -LPWSTR StrNCatW(LPWSTR,LPCWSTR,int); -LPSTR StrPBrkA(LPCSTR,LPCSTR); -LPWSTR StrPBrkW(LPCWSTR,LPCWSTR); -LPSTR StrRChrA(LPCSTR,LPCSTR,WORD); -LPWSTR StrRChrW(LPCWSTR,LPCWSTR,WCHAR); -LPSTR StrRChrIA(LPCSTR,LPCSTR,WORD); -LPWSTR StrRChrIW(LPCWSTR,LPCWSTR,WCHAR); -LPSTR StrRStrIA(LPCSTR,LPCSTR,LPCSTR); -LPWSTR StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR); -int StrSpnA(LPCSTR,LPCSTR); -int StrSpnW(LPCWSTR,LPCWSTR); -LPSTR StrStrA(LPCSTR, LPCSTR); -LPSTR StrStrIA(LPCSTR,LPCSTR); -LPWSTR StrStrIW(LPCWSTR,LPCWSTR); -LPWSTR StrStrW(LPCWSTR,LPCWSTR); -int StrToIntA(LPCSTR); -int StrToIntW(LPCWSTR); -BOOL StrToIntExA(LPCSTR,DWORD,int*); -BOOL StrToIntExW(LPCWSTR,DWORD,int*); -BOOL StrTrimA(LPSTR,LPCSTR); -BOOL StrTrimW(LPWSTR,LPCWSTR); -LPSTR PathAddBackslashA(LPSTR); -LPWSTR PathAddBackslashW(LPWSTR); -BOOL PathAddExtensionA(LPSTR,LPCSTR); -BOOL PathAddExtensionW(LPWSTR,LPCWSTR); -BOOL PathAppendA(LPSTR,LPCSTR); -BOOL PathAppendW(LPWSTR,LPCWSTR); -LPSTR PathBuildRootA(LPSTR,int); -LPWSTR PathBuildRootW(LPWSTR,int); -BOOL PathCanonicalizeA(LPSTR,LPCSTR); -BOOL PathCanonicalizeW(LPWSTR,LPCWSTR); -LPSTR PathCombineA(LPSTR,LPCSTR,LPCSTR); -LPWSTR PathCombineW(LPWSTR,LPCWSTR,LPCWSTR); -int PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR); -int PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR); -BOOL PathCompactPathA(HDC,LPSTR,UINT); -BOOL PathCompactPathW(HDC,LPWSTR,UINT); -BOOL PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD); -BOOL PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD); -HRESULT PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -BOOL PathFileExistsA(LPCSTR); -BOOL PathFileExistsW(LPCWSTR); -LPSTR PathFindExtensionA(LPCSTR); -LPWSTR PathFindExtensionW(LPCWSTR); -LPSTR PathFindFileNameA(LPCSTR); -LPWSTR PathFindFileNameW(LPCWSTR); -LPSTR PathFindNextComponentA(LPCSTR); -LPWSTR PathFindNextComponentW(LPCWSTR); -BOOL PathFindOnPathA(LPSTR,LPCSTR*); -BOOL PathFindOnPathW(LPWSTR,LPCWSTR*); -LPCSTR PathFindSuffixArrayA(LPCSTR,LPCSTR*,int); -LPCWSTR PathFindSuffixArrayW(LPCWSTR,LPCWSTR*,int); -LPSTR PathGetArgsA(LPCSTR); -LPWSTR PathGetArgsW(LPCWSTR); -UINT PathGetCharTypeA(UCHAR); -UINT PathGetCharTypeW(WCHAR); -int PathGetDriveNumberA(LPCSTR); -int PathGetDriveNumberW(LPCWSTR); -BOOL PathIsContentTypeA(LPCSTR,LPCSTR); -BOOL PathIsContentTypeW(LPCWSTR,LPCWSTR); -BOOL PathIsDirectoryA(LPCSTR); -BOOL PathIsDirectoryEmptyA(LPCSTR); -BOOL PathIsDirectoryEmptyW(LPCWSTR); -BOOL PathIsDirectoryW(LPCWSTR); -BOOL PathIsFileSpecA(LPCSTR); -BOOL PathIsFileSpecW(LPCWSTR); -BOOL PathIsLFNFileSpecA(LPCSTR); -BOOL PathIsLFNFileSpecW(LPCWSTR); -BOOL PathIsNetworkPathA(LPCSTR); -BOOL PathIsNetworkPathW(LPCWSTR); -BOOL PathIsPrefixA(LPCSTR,LPCSTR); -BOOL PathIsPrefixW(LPCWSTR,LPCWSTR); -BOOL PathIsRelativeA(LPCSTR); -BOOL PathIsRelativeW(LPCWSTR); -BOOL PathIsRootA(LPCSTR); -BOOL PathIsRootW(LPCWSTR); -BOOL PathIsSameRootA(LPCSTR,LPCSTR); -BOOL PathIsSameRootW(LPCWSTR,LPCWSTR); -BOOL PathIsSystemFolderA(LPCSTR,DWORD); -BOOL PathIsSystemFolderW(LPCWSTR,DWORD); -BOOL PathIsUNCA(LPCSTR); -BOOL PathIsUNCServerA(LPCSTR); -BOOL PathIsUNCServerShareA(LPCSTR); -BOOL PathIsUNCServerShareW(LPCWSTR); -BOOL PathIsUNCServerW(LPCWSTR); -BOOL PathIsUNCW(LPCWSTR); -BOOL PathIsURLA(LPCSTR); -BOOL PathIsURLW(LPCWSTR); -BOOL PathMakePrettyA(LPSTR); -BOOL PathMakePrettyW(LPWSTR); -BOOL PathMakeSystemFolderA(LPSTR); -BOOL PathMakeSystemFolderW(LPWSTR); -BOOL PathMatchSpecA(LPCSTR,LPCSTR); -BOOL PathMatchSpecW(LPCWSTR,LPCWSTR); -int PathParseIconLocationA(LPSTR); -int PathParseIconLocationW(LPWSTR); -void PathQuoteSpacesA(LPSTR); -void PathQuoteSpacesW(LPWSTR); -BOOL PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD); -BOOL PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD); -void PathRemoveArgsA(LPSTR); -void PathRemoveArgsW(LPWSTR); -LPSTR PathRemoveBackslashA(LPSTR); -LPWSTR PathRemoveBackslashW(LPWSTR); -void PathRemoveBlanksA(LPSTR); -void PathRemoveBlanksW(LPWSTR); -void PathRemoveExtensionA(LPSTR); -void PathRemoveExtensionW(LPWSTR); -BOOL PathRemoveFileSpecA(LPSTR); -BOOL PathRemoveFileSpecW(LPWSTR); -BOOL PathRenameExtensionA(LPSTR,LPCSTR); -BOOL PathRenameExtensionW(LPWSTR,LPCWSTR); -BOOL PathSearchAndQualifyA(LPCSTR,LPSTR,UINT); -BOOL PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT); -void PathSetDlgItemPathA(HWND,int,LPCSTR); -void PathSetDlgItemPathW(HWND,int,LPCWSTR); -LPSTR PathSkipRootA(LPCSTR); -LPWSTR PathSkipRootW(LPCWSTR); -void PathStripPathA(LPSTR); -void PathStripPathW(LPWSTR); -BOOL PathStripToRootA(LPSTR); -BOOL PathStripToRootW(LPWSTR); -void PathUndecorateA(LPSTR); -void PathUndecorateW(LPWSTR); -BOOL PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT); -BOOL PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT); -BOOL PathUnmakeSystemFolderA(LPSTR); -BOOL PathUnmakeSystemFolderW(LPWSTR); -void PathUnquoteSpacesA(LPSTR); -void PathUnquoteSpacesW(LPWSTR); -HRESULT SHAutoComplete(HWND,DWORD); -BOOL SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE); -DWORD SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD); -DWORD SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD); -DWORD SHDeleteEmptyKeyA(HKEY,LPCSTR); -DWORD SHDeleteEmptyKeyW(HKEY,LPCWSTR); -DWORD SHDeleteKeyA(HKEY,LPCSTR); -DWORD SHDeleteKeyW(HKEY,LPCWSTR); -DWORD SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD); -DWORD SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD); -DWORD SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); -DWORD SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD); -DWORD SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -DWORD SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -HRESULT SHGetThreadRef(IUnknown**); -HRESULT SHSetThreadRef(IUnknown*); -BOOL SHSkipJunction(IBindCtx*, CPtr!(CLSID)); -DWORD SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -DWORD SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD); -DWORD SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD); -DWORD SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD); -DWORD SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD); -DWORD SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD); -DWORD SHDeleteValueA(HKEY,LPCSTR,LPCSTR); -DWORD SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR); -HRESULT AssocCreate(CLSID, CPtr!(IID) ,CPtr!(LPVOID)); -HRESULT AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,HKEY*); -HRESULT AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,HKEY*); -HRESULT AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,DWORD*); -HRESULT AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,DWORD*); -HRESULT AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,DWORD*); -HRESULT AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD*); -HRESULT UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -HRESULT UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -HRESULT UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD); -int UrlCompareA(LPCSTR,LPCSTR,BOOL); -int UrlCompareW(LPCWSTR,LPCWSTR,BOOL); -HRESULT UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -HRESULT UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD); -HRESULT UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -LPCSTR UrlGetLocationA(LPCSTR); -LPCWSTR UrlGetLocationW(LPCWSTR); -HRESULT UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD); -HRESULT UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD); -HRESULT UrlHashA(LPCSTR,LPBYTE,DWORD); -HRESULT UrlHashW(LPCWSTR,LPBYTE,DWORD); -BOOL UrlIsA(LPCSTR,URLIS); -BOOL UrlIsW(LPCWSTR,URLIS); -BOOL UrlIsNoHistoryA(LPCSTR); -BOOL UrlIsNoHistoryW(LPCWSTR); -BOOL UrlIsOpaqueA(LPCSTR); -BOOL UrlIsOpaqueW(LPCWSTR); -HRESULT UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD); -HRESULT UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD); -DWORD SHRegCloseUSKey(HUSKEY); -LONG SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); -LONG SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); -LONG SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); -LONG SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); -LONG SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS); -LONG SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS); -HKEY SHRegDuplicateHKey(HKEY); -DWORD SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS); -DWORD SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS); -DWORD SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); -DWORD SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS); -BOOL SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL); -BOOL SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL); -DWORD SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD); -DWORD SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD); -LONG SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); -LONG SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); -LONG SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); -LONG SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); -DWORD SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS); -DWORD SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS); -LONG SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); -LONG SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD); -DWORD SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD); -DWORD SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD); -LONG SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD); -LONG SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); -LONG SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD); -LONG SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD); -HRESULT HashData(LPBYTE,DWORD,LPBYTE,DWORD); -HPALETTE SHCreateShellPalette(HDC); -COLORREF ColorHLSToRGB(WORD,WORD,WORD); -COLORREF ColorAdjustLuma(COLORREF,int,BOOL); -void ColorRGBToHLS(COLORREF,WORD*,WORD*,WORD*); -/** Should not be necessary for D? -extern (C): -int wnsprintfA(LPSTR,int,LPCSTR,...); -int wnsprintfW(LPWSTR,int,LPCWSTR,...); -extern (Windows): -int wvnsprintfA(LPSTR,int,LPCSTR,va_list); -int wvnsprintfW(LPWSTR,int,LPCWSTR,va_list); -*/ - -HINSTANCE MLLoadLibraryA(LPCSTR,HANDLE,DWORD,LPCSTR,BOOL); -HINSTANCE MLLoadLibraryW(LPCWSTR,HANDLE,DWORD,LPCWSTR,BOOL); - -HRESULT DllInstall(BOOL,LPCWSTR); - -HRESULT StrRetToBufA(LPSTRRET,LPCITEMIDLIST,LPSTR,UINT); -HRESULT StrRetToBufW(LPSTRRET,LPCITEMIDLIST,LPWSTR,UINT); -HRESULT StrRetToStrA(LPSTRRET,LPCITEMIDLIST,LPSTR*); -HRESULT StrRetToStrW(LPSTRRET,LPCITEMIDLIST,LPWSTR*); -HRESULT SHCreateStreamOnFileA(LPCSTR,DWORD,IStream**); -HRESULT SHCreateStreamOnFileW(LPCWSTR,DWORD,IStream**); -IStream* SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD); -IStream* SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD); -IStream* SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD); -IStream* SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD); - -version(Unicode) { -alias ChrCmpIW ChrCmpI; -alias IntlStrEqNW IntlStrEqN; -alias IntlStrEqNIW IntlStrEqNI; -alias IntlStrEqWorkerW IntlStrEqWorker; -alias SHStrDupW SHStrDup; -alias StrCatW StrCat; -alias StrCatBuffW StrCatBuff; -alias StrChrW StrChr; -alias StrChrIW StrChrI; -alias StrCmpW StrCmp; -alias StrCmpIW StrCmpI; -alias StrCmpNIW StrCmpNI; -alias StrCmpNW StrCmpN; -alias StrCpyNW StrCpyN; -alias StrCpyW StrCpy; -alias StrCSpnIW StrCSpnI; -alias StrCSpnW StrCSpn; -alias StrDupW StrDup; -alias StrFormatByteSizeW StrFormatByteSize; -alias StrFormatKBSizeW StrFormatKBSize; -alias StrFromTimeIntervalW StrFromTimeInterval; -alias StrIsIntlEqualW StrIsIntlEqual; -alias StrNCatW StrNCat; -alias StrPBrkW StrPBrk; -alias StrRChrW StrRChr; -alias StrRChrIW StrRChrI; -alias StrRetToBufW StrRetToBuf; -alias StrRetToStrW StrRetToStr; -alias StrRStrIW StrRStrI; -alias StrSpnW StrSpn; -alias StrStrIW StrStrI; -alias StrStrW StrStr; -alias StrToIntW StrToInt; -alias StrToIntExW StrToIntEx; -alias StrTrimW StrTrim; -alias PathAddBackslashW PathAddBackslash; -alias PathAddExtensionW PathAddExtension; -alias PathAppendW PathAppend; -alias PathBuildRootW PathBuildRoot; -alias PathCanonicalizeW PathCanonicalize; -alias PathCombineW PathCombine; -alias PathCommonPrefixW PathCommonPrefix; -alias PathCompactPathW PathCompactPath; -alias PathCompactPathExW PathCompactPathEx; -alias PathCreateFromUrlW PathCreateFromUrl; -alias PathFileExistsW PathFileExists; -alias PathFindExtensionW PathFindExtension; -alias PathFindFileNameW PathFindFileName; -alias PathFindNextComponentW PathFindNextComponent; -alias PathFindOnPathW PathFindOnPath; -alias PathFindSuffixArrayW PathFindSuffixArray; -alias PathGetArgsW PathGetArgs; -alias PathGetCharTypeW PathGetCharType; -alias PathGetDriveNumberW PathGetDriveNumber; -alias PathIsContentTypeW PathIsContentType; -alias PathIsDirectoryEmptyW PathIsDirectoryEmpty; -alias PathIsDirectoryW PathIsDirectory; -alias PathIsFileSpecW PathIsFileSpec; -alias PathIsLFNFileSpecW PathIsLFNFileSpec; -alias PathIsNetworkPathW PathIsNetworkPath; -alias PathIsPrefixW PathIsPrefix; -alias PathIsRelativeW PathIsRelative; -alias PathIsRootW PathIsRoot; -alias PathIsSameRootW PathIsSameRoot; -alias PathIsSystemFolderW PathIsSystemFolder; -alias PathIsUNCServerShareW PathIsUNCServerShare; -alias PathIsUNCServerW PathIsUNCServer; -alias PathIsUNCW PathIsUNC; -alias PathIsURLW PathIsURL; -alias PathMakePrettyW PathMakePretty; -alias PathMakeSystemFolderW PathMakeSystemFolder; -alias PathMatchSpecW PathMatchSpec; -alias PathParseIconLocationW PathParseIconLocation; -alias PathQuoteSpacesW PathQuoteSpaces; -alias PathRelativePathToW PathRelativePathTo; -alias PathRemoveArgsW PathRemoveArgs; -alias PathRemoveBackslashW PathRemoveBackslash; -alias PathRemoveBlanksW PathRemoveBlanks; -alias PathRemoveExtensionW PathRemoveExtension; -alias PathRemoveFileSpecW PathRemoveFileSpec; -alias PathRenameExtensionW PathRenameExtension; -alias PathSearchAndQualifyW PathSearchAndQualify; -alias PathSetDlgItemPathW PathSetDlgItemPath; -alias PathSkipRootW PathSkipRoot; -alias PathStripPathW PathStripPath; -alias PathStripToRootW PathStripToRoot; -alias PathUndecorateW PathUndecorate; -alias PathUnExpandEnvStringsW PathUnExpandEnvStrings; -alias PathUnmakeSystemFolderW PathUnmakeSystemFolder; -alias PathUnquoteSpacesW PathUnquoteSpaces; -alias SHCreateStreamOnFileW SHCreateStreamOnFile; -alias SHOpenRegStreamW SHOpenRegStream; -alias SHOpenRegStream2W SHOpenRegStream2; -alias SHCopyKeyW SHCopyKey; -alias SHDeleteEmptyKeyW SHDeleteEmptyKey; -alias SHDeleteKeyW SHDeleteKey; -alias SHEnumKeyExW SHEnumKeyEx; -alias SHQueryInfoKeyW SHQueryInfoKey; -alias SHQueryValueExW SHQueryValueEx; -alias SHEnumValueW SHEnumValue; -alias SHGetValueW SHGetValue; -alias SHSetValueW SHSetValue; -alias SHDeleteValueW SHDeleteValue; -alias AssocQueryKeyW AssocQueryKey; -alias AssocQueryStringByKeyW AssocQueryStringByKey; -alias AssocQueryStringW AssocQueryString; -alias UrlApplySchemeW UrlApplyScheme; -alias UrlCanonicalizeW UrlCanonicalize; -alias UrlCombineW UrlCombine; -alias UrlCompareW UrlCompare; -alias UrlCreateFromPathW UrlCreateFromPath; -alias UrlEscapeW UrlEscape; -alias UrlGetLocationW UrlGetLocation; -alias UrlGetPartW UrlGetPart; -alias UrlHashW UrlHash; -alias UrlIsW UrlIs; -alias UrlIsFileUrlW UrlIsFileUrl; -alias UrlIsNoHistoryW UrlIsNoHistory; -alias UrlIsOpaqueW UrlIsOpaque; -alias UrlUnescapeW UrlUnescape; -alias UrlUnescapeInPlaceW UrlUnescapeInPlace; -alias SHRegCreateUSKeyW SHRegCreateUSKey; -alias SHRegDeleteEmptyUSKeyW SHRegDeleteEmptyUSKey; -alias SHRegDeleteUSValueW SHRegDeleteUSValue; -alias SHRegEnumUSKeyW SHRegEnumUSKey; -alias SHRegEnumUSValueW SHRegEnumUSValue; -alias SHRegGetBoolUSValueW SHRegGetBoolUSValue; -alias SHRegGetPathW SHRegGetPath; -alias SHRegGetUSValueW SHRegGetUSValue; -alias SHRegOpenUSKeyW SHRegOpenUSKey; -alias SHRegQueryInfoUSKeyW SHRegQueryInfoUSKey; -alias SHRegQueryUSValueW SHRegQueryUSValue; -alias SHRegSetPathW SHRegSetPath; -alias SHRegSetUSValueW SHRegSetUSValue; -alias SHRegWriteUSValueW SHRegWriteUSValue; -//alias wnsprintfW wnsprintf; -//alias wvnsprintfW wvnsprintf; -} else { -alias ChrCmpIA ChrCmpI; -alias IntlStrEqNA IntlStrEqN; -alias IntlStrEqNIA IntlStrEqNI; -alias IntlStrEqWorkerA IntlStrEqWorker; -alias SHStrDupA SHStrDup; -alias StrCatBuffA StrCatBuff; -alias StrChrA StrChr; -alias StrChrIA StrChrI; -alias StrCmpNIA StrCmpNI; -alias StrCmpNA StrCmpN; -alias StrCSpnIA StrCSpnI; -alias StrCSpnA StrCSpn; -alias StrDupA StrDup; -alias StrFormatByteSizeA StrFormatByteSize; -alias StrFormatKBSizeA StrFormatKBSize; -alias StrFromTimeIntervalA StrFromTimeInterval; -alias StrIsIntlEqualA StrIsIntlEqual; -alias StrNCatA StrNCat; -alias StrPBrkA StrPBrk; -alias StrRChrA StrRChr; -alias StrRChrIA StrRChrI; -alias StrRetToBufA StrRetToBuf; -alias StrRetToStrA StrRetToStr; -alias StrRStrIA StrRStrI; -alias StrSpnA StrSpn; -alias StrStrIA StrStrI; -alias StrStrA StrStr; -alias StrToIntA StrToInt; -alias StrToIntExA StrToIntEx; -alias StrTrimA StrTrim; -alias PathAddBackslashA PathAddBackslash; -alias PathAddExtensionA PathAddExtension; -alias PathAppendA PathAppend; -alias PathBuildRootA PathBuildRoot; -alias PathCanonicalizeA PathCanonicalize; -alias PathCombineA PathCombine; -alias PathCommonPrefixA PathCommonPrefix; -alias PathCompactPathA PathCompactPath; -alias PathCompactPathExA PathCompactPathEx; -alias PathCreateFromUrlA PathCreateFromUrl; -alias PathFileExistsA PathFileExists; -alias PathFindExtensionA PathFindExtension; -alias PathFindFileNameA PathFindFileName; -alias PathFindNextComponentA PathFindNextComponent; -alias PathFindOnPathA PathFindOnPath; -alias PathFindSuffixArrayA PathFindSuffixArray; -alias PathGetArgsA PathGetArgs; -alias PathGetCharTypeA PathGetCharType; -alias PathGetDriveNumberA PathGetDriveNumber; -alias PathIsContentTypeA PathIsContentType; -alias PathIsDirectoryEmptyA PathIsDirectoryEmpty; -alias PathIsDirectoryA PathIsDirectory; -alias PathIsFileSpecA PathIsFileSpec; -alias PathIsLFNFileSpecA PathIsLFNFileSpec; -alias PathIsNetworkPathA PathIsNetworkPath; -alias PathIsPrefixA PathIsPrefix; -alias PathIsRelativeA PathIsRelative; -alias PathIsRootA PathIsRoot; -alias PathIsSameRootA PathIsSameRoot; -alias PathIsSystemFolderA PathIsSystemFolder; -alias PathIsUNCServerShareA PathIsUNCServerShare; -alias PathIsUNCServerA PathIsUNCServer; -alias PathIsUNCA PathIsUNC; -alias PathIsURLA PathIsURL; -alias PathMakePrettyA PathMakePretty; -alias PathMakeSystemFolderA PathMakeSystemFolder; -alias PathMatchSpecA PathMatchSpec; -alias PathParseIconLocationA PathParseIconLocation; -alias PathQuoteSpacesA PathQuoteSpaces; -alias PathRelativePathToA PathRelativePathTo; -alias PathRemoveArgsA PathRemoveArgs; -alias PathRemoveBackslashA PathRemoveBackslash; -alias PathRemoveBlanksA PathRemoveBlanks; -alias PathRemoveExtensionA PathRemoveExtension; -alias PathRemoveFileSpecA PathRemoveFileSpec; -alias PathRenameExtensionA PathRenameExtension; -alias PathSearchAndQualifyA PathSearchAndQualify; -alias PathSetDlgItemPathA PathSetDlgItemPath; -alias PathSkipRootA PathSkipRoot; -alias PathStripPathA PathStripPath; -alias PathStripToRootA PathStripToRoot; -alias PathUndecorateA PathUndecorate; -alias PathUnExpandEnvStringsA PathUnExpandEnvStrings; -alias PathUnmakeSystemFolderA PathUnmakeSystemFolder; -alias PathUnquoteSpacesA PathUnquoteSpaces; -alias SHCreateStreamOnFileA SHCreateStreamOnFile; -alias SHOpenRegStreamA SHOpenRegStream; -alias SHOpenRegStream2A SHOpenRegStream2; -alias SHCopyKeyA SHCopyKey; -alias SHDeleteEmptyKeyA SHDeleteEmptyKey; -alias SHDeleteKeyA SHDeleteKey; -alias SHEnumKeyExA SHEnumKeyEx; -alias SHQueryInfoKeyA SHQueryInfoKey; -alias SHQueryValueExA SHQueryValueEx; -alias SHEnumValueA SHEnumValue; -alias SHGetValueA SHGetValue; -alias SHSetValueA SHSetValue; -alias SHDeleteValueA SHDeleteValue; -alias AssocQueryKeyA AssocQueryKey; -alias AssocQueryStringByKeyA AssocQueryStringByKey; -alias AssocQueryStringA AssocQueryString; -alias UrlApplySchemeA UrlApplyScheme; -alias UrlCanonicalizeA UrlCanonicalize; -alias UrlCombineA UrlCombine; -alias UrlCompareA UrlCompare; -alias UrlCreateFromPathA UrlCreateFromPath; -alias UrlEscapeA UrlEscape; -alias UrlGetLocationA UrlGetLocation; -alias UrlGetPartA UrlGetPart; -alias UrlHashA UrlHash; -alias UrlIsA UrlIs; -alias UrlIsNoHistoryA UrlIsNoHistory; -alias UrlIsOpaqueA UrlIsOpaque; -alias UrlUnescapeA UrlUnescape; -alias UrlUnescapeInPlaceA UrlUnescapeInPlace; -alias SHRegCreateUSKeyA SHRegCreateUSKey; -alias SHRegDeleteEmptyUSKeyA SHRegDeleteEmptyUSKey; -alias SHRegDeleteUSValueA SHRegDeleteUSValue; -alias SHRegEnumUSKeyA SHRegEnumUSKey; -alias SHRegEnumUSValueA SHRegEnumUSValue; -alias SHRegGetBoolUSValueA SHRegGetBoolUSValue; -alias SHRegGetPathA SHRegGetPath; -alias SHRegGetUSValueA SHRegGetUSValue; -alias SHRegOpenUSKeyA SHRegOpenUSKey; -alias SHRegQueryInfoUSKeyA SHRegQueryInfoUSKey; -alias SHRegQueryUSValueA SHRegQueryUSValue; -alias SHRegSetPathA SHRegSetPath; -alias SHRegSetUSValueA SHRegSetUSValue; -alias SHRegWriteUSValueA SHRegWriteUSValue; -//alias wnsprintfA wnsprintf; -//alias wvnsprintfA wvnsprintf; -} - -alias StrToInt StrToLong; +/***********************************************************************\ +* shlwapi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.shlwapi; +pragma(lib, "shlwapi"); + +/* Changes compared to MinGW: +wnsprintf functions are not included. +// Macros unneeded for D +#define StrCmpIA lstrcmpiA; +#define StrCmpA lstrcmpA; +#define StrCpyA lstrcpyA; +#define StrCpyNA lstrcpynA; +#define MAKEDLLVERULL(major, minor, build, qfe) \ + (((ULONGLONG)(major) << 48) | \ + ((ULONGLONG)(minor) << 32) | \ + ((ULONGLONG)(build) << 16) | \ + ((ULONGLONG)( qfe) << 0)) +*/ + +import win32.objbase, win32.shlobj; +private import win32.basetyps, win32.objidl, win32.unknwn, win32.windef, + win32.winbase, win32.winreg; + +const DLLVER_PLATFORM_WINDOWS = 0x00000001; +const DLLVER_PLATFORM_NT = 0x00000002; + +const URL_DONT_ESCAPE_EXTRA_INFO = 0x02000000; +const URL_DONT_SIMPLIFY = 0x08000000; +const URL_ESCAPE_PERCENT = 0x00001000; +const URL_ESCAPE_SEGMENT_ONLY = 0x00002000; +const URL_ESCAPE_SPACES_ONLY = 0x04000000; +const URL_ESCAPE_UNSAFE = 0x20000000; +const URL_INTERNAL_PATH = 0x00800000; +const URL_PARTFLAG_KEEPSCHEME = 0x00000001; +const URL_PLUGGABLE_PROTOCOL = 0x40000000; +const URL_UNESCAPE = 0x10000000; +const URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000; +const URL_UNESCAPE_INPLACE = 0x00100000; + +align(1): +struct DLLVERSIONINFO +{ + DWORD cbSize = this.sizeof; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformID; +} + +struct DLLVERSIONINFO2 +{ + DLLVERSIONINFO info1; + DWORD dwFlags; + ULONGLONG ullVersion; +} + +enum ASSOCSTR { + ASSOCSTR_COMMAND, + ASSOCSTR_EXECUTABLE, + ASSOCSTR_FRIENDLYDOCNAME, + ASSOCSTR_FRIENDLYAPPNAME, + ASSOCSTR_NOOPEN, + ASSOCSTR_SHELLNEWVALUE, + ASSOCSTR_DDECOMMAND, + ASSOCSTR_DDEIFEXEC, + ASSOCSTR_DDEAPPLICATION, + ASSOCSTR_DDETOPIC +} + +enum ASSOCKEY +{ + ASSOCKEY_SHELLEXECCLASS = 1, + ASSOCKEY_APP, + ASSOCKEY_CLASS, + ASSOCKEY_BASECLASS +} + +enum ASSOCDATA +{ + ASSOCDATA_MSIDESCRIPTOR = 1, + ASSOCDATA_NOACTIVATEHANDLER, + ASSOCDATA_QUERYCLASSSTORE +} + +alias DWORD ASSOCF; + +enum SHREGDEL_FLAGS +{ + SHREGDEL_DEFAULT = 0x00000000, + SHREGDEL_HKCU = 0x00000001, + SHREGDEL_HKLM = 0x00000010, + SHREGDEL_BOTH = 0x00000011 +} + +enum SHREGENUM_FLAGS +{ + SHREGENUM_DEFAULT = 0x00000000, + SHREGENUM_HKCU = 0x00000001, + SHREGENUM_HKLM = 0x00000010, + SHREGENUM_BOTH = 0x00000011 +} + +enum URLIS +{ + URLIS_URL, + URLIS_OPAQUE, + URLIS_NOHISTORY, + URLIS_FILEURL, + URLIS_APPLIABLE, + URLIS_DIRECTORY, + URLIS_HASQUERY +} + +mixin DECLARE_HANDLE!("HUSKEY"); +alias HUSKEY* PHUSKEY; + +extern (Windows) +{ + alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC; +} + + +BOOL IntlStrEqNA(LPCSTR pStr1, LPCSTR pStr2, int nChar) +{ + return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) +{ + return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNIA(LPCSTR pStr1, LPCSTR pStr2, int nChar) +{ + return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar); +} + +BOOL IntlStrEqNIW(LPCWSTR pStr1, LPCWSTR pStr2, int nChar) +{ + return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar); +} + +BOOL UrlIsFileUrlA(LPCSTR pszURL) +{ + return UrlIsA(pszURL, URLIS.URLIS_FILEURL); +} + +BOOL UrlIsFileUrlW(LPCWSTR pszURL) +{ + return UrlIsW(pszURL, URLIS.URLIS_FILEURL); +} + +HRESULT UrlUnescapeInPlaceA(LPSTR pszUrl, DWORD dwFlags) +{ + return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); +} +HRESULT UrlUnescapeInPlaceW(LPWSTR pszUrl, DWORD dwFlags) +{ + return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE); +} + +extern (Windows): +BOOL ChrCmpIA(WORD, WORD); +BOOL ChrCmpIW(WCHAR, WCHAR); +BOOL IntlStrEqWorkerA(BOOL, LPCSTR, LPCSTR, int); +BOOL IntlStrEqWorkerW(BOOL, LPCWSTR, LPCWSTR, int); +HRESULT SHStrDupA(LPCSTR, LPWSTR*); +HRESULT SHStrDupW(LPCWSTR, LPWSTR*); +LPSTR StrCatA(LPSTR, LPCSTR); +LPWSTR StrCatW(LPWSTR, LPCWSTR); +LPSTR StrCatBuffA(LPSTR, LPCSTR, int); +LPWSTR StrCatBuffW(LPWSTR, LPCWSTR, int); +DWORD StrCatChainW(LPWSTR, DWORD, DWORD, LPCWSTR); +LPSTR StrChrA(LPCSTR, WORD); +LPWSTR StrChrW(LPCWSTR, WCHAR); +LPSTR StrChrIA(LPCSTR, WORD); +LPWSTR StrChrIW(LPCWSTR, WCHAR); +int StrCmpIW(LPCWSTR, LPCWSTR); +int StrCmpW(LPCWSTR, LPCWSTR); +LPWSTR StrCpyW(LPWSTR, LPCWSTR); +LPWSTR StrCpyNW(LPWSTR, LPCWSTR, int); +int StrCmpNA(LPCSTR, LPCSTR, int); +int StrCmpNW(LPCWSTR, LPCWSTR, int); +int StrCmpNIA(LPCSTR, LPCSTR, int); +int StrCmpNIW(LPCWSTR, LPCWSTR, int); +int StrCSpnA(LPCSTR, LPCSTR); +int StrCSpnW(LPCWSTR, LPCWSTR); +int StrCSpnIA(LPCSTR, LPCSTR); +int StrCSpnIW(LPCWSTR, LPCWSTR); +LPSTR StrDupA(LPCSTR); +LPWSTR StrDupW(LPCWSTR); +LPSTR StrFormatByteSize64A(LONGLONG, LPSTR, UINT); +LPSTR StrFormatByteSizeA(DWORD, LPSTR, UINT); +LPWSTR StrFormatByteSizeW(LONGLONG, LPWSTR, UINT); +LPSTR StrFormatKBSizeA(LONGLONG, LPSTR, UINT); +LPWSTR StrFormatKBSizeW(LONGLONG, LPWSTR, UINT); +int StrFromTimeIntervalA(LPSTR, UINT, DWORD, int); +int StrFromTimeIntervalW(LPWSTR, UINT, DWORD, int); +BOOL StrIsIntlEqualA(BOOL, LPCSTR, LPCSTR, int); +BOOL StrIsIntlEqualW(BOOL, LPCWSTR, LPCWSTR, int); +LPSTR StrNCatA(LPSTR, LPCSTR, int); +LPWSTR StrNCatW(LPWSTR, LPCWSTR, int); +LPSTR StrPBrkA(LPCSTR, LPCSTR); +LPWSTR StrPBrkW(LPCWSTR, LPCWSTR); +LPSTR StrRChrA(LPCSTR, LPCSTR, WORD); +LPWSTR StrRChrW(LPCWSTR, LPCWSTR, WCHAR); +LPSTR StrRChrIA(LPCSTR, LPCSTR, WORD); +LPWSTR StrRChrIW(LPCWSTR, LPCWSTR, WCHAR); +LPSTR StrRStrIA(LPCSTR, LPCSTR, LPCSTR); +LPWSTR StrRStrIW(LPCWSTR, LPCWSTR, LPCWSTR); +int StrSpnA(LPCSTR, LPCSTR); +int StrSpnW(LPCWSTR, LPCWSTR); +LPSTR StrStrA(LPCSTR, LPCSTR); +LPSTR StrStrIA(LPCSTR, LPCSTR); +LPWSTR StrStrIW(LPCWSTR, LPCWSTR); +LPWSTR StrStrW(LPCWSTR, LPCWSTR); +int StrToIntA(LPCSTR); +int StrToIntW(LPCWSTR); +BOOL StrToIntExA(LPCSTR, DWORD, int*); +BOOL StrToIntExW(LPCWSTR, DWORD, int*); +BOOL StrTrimA(LPSTR, LPCSTR); +BOOL StrTrimW(LPWSTR, LPCWSTR); +LPSTR PathAddBackslashA(LPSTR); +LPWSTR PathAddBackslashW(LPWSTR); +BOOL PathAddExtensionA(LPSTR, LPCSTR); +BOOL PathAddExtensionW(LPWSTR, LPCWSTR); +BOOL PathAppendA(LPSTR, LPCSTR); +BOOL PathAppendW(LPWSTR, LPCWSTR); +LPSTR PathBuildRootA(LPSTR, int); +LPWSTR PathBuildRootW(LPWSTR, int); +BOOL PathCanonicalizeA(LPSTR, LPCSTR); +BOOL PathCanonicalizeW(LPWSTR, LPCWSTR); +LPSTR PathCombineA(LPSTR, LPCSTR, LPCSTR); +LPWSTR PathCombineW(LPWSTR, LPCWSTR, LPCWSTR); +int PathCommonPrefixA(LPCSTR, LPCSTR, LPSTR); +int PathCommonPrefixW(LPCWSTR, LPCWSTR, LPWSTR); +BOOL PathCompactPathA(HDC, LPSTR, UINT); +BOOL PathCompactPathW(HDC, LPWSTR, UINT); +BOOL PathCompactPathExA(LPSTR, LPCSTR, UINT, DWORD); +BOOL PathCompactPathExW(LPWSTR, LPCWSTR, UINT, DWORD); +HRESULT PathCreateFromUrlA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT PathCreateFromUrlW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +BOOL PathFileExistsA(LPCSTR); +BOOL PathFileExistsW(LPCWSTR); +LPSTR PathFindExtensionA(LPCSTR); +LPWSTR PathFindExtensionW(LPCWSTR); +LPSTR PathFindFileNameA(LPCSTR); +LPWSTR PathFindFileNameW(LPCWSTR); +LPSTR PathFindNextComponentA(LPCSTR); +LPWSTR PathFindNextComponentW(LPCWSTR); +BOOL PathFindOnPathA(LPSTR, LPCSTR*); +BOOL PathFindOnPathW(LPWSTR, LPCWSTR*); +LPCSTR PathFindSuffixArrayA(LPCSTR, LPCSTR*, int); +LPCWSTR PathFindSuffixArrayW(LPCWSTR, LPCWSTR*, int); +LPSTR PathGetArgsA(LPCSTR); +LPWSTR PathGetArgsW(LPCWSTR); +UINT PathGetCharTypeA(UCHAR); +UINT PathGetCharTypeW(WCHAR); +int PathGetDriveNumberA(LPCSTR); +int PathGetDriveNumberW(LPCWSTR); +BOOL PathIsContentTypeA(LPCSTR, LPCSTR); +BOOL PathIsContentTypeW(LPCWSTR, LPCWSTR); +BOOL PathIsDirectoryA(LPCSTR); +BOOL PathIsDirectoryEmptyA(LPCSTR); +BOOL PathIsDirectoryEmptyW(LPCWSTR); +BOOL PathIsDirectoryW(LPCWSTR); +BOOL PathIsFileSpecA(LPCSTR); +BOOL PathIsFileSpecW(LPCWSTR); +BOOL PathIsLFNFileSpecA(LPCSTR); +BOOL PathIsLFNFileSpecW(LPCWSTR); +BOOL PathIsNetworkPathA(LPCSTR); +BOOL PathIsNetworkPathW(LPCWSTR); +BOOL PathIsPrefixA(LPCSTR, LPCSTR); +BOOL PathIsPrefixW(LPCWSTR, LPCWSTR); +BOOL PathIsRelativeA(LPCSTR); +BOOL PathIsRelativeW(LPCWSTR); +BOOL PathIsRootA(LPCSTR); +BOOL PathIsRootW(LPCWSTR); +BOOL PathIsSameRootA(LPCSTR, LPCSTR); +BOOL PathIsSameRootW(LPCWSTR, LPCWSTR); +BOOL PathIsSystemFolderA(LPCSTR, DWORD); +BOOL PathIsSystemFolderW(LPCWSTR, DWORD); +BOOL PathIsUNCA(LPCSTR); +BOOL PathIsUNCServerA(LPCSTR); +BOOL PathIsUNCServerShareA(LPCSTR); +BOOL PathIsUNCServerShareW(LPCWSTR); +BOOL PathIsUNCServerW(LPCWSTR); +BOOL PathIsUNCW(LPCWSTR); +BOOL PathIsURLA(LPCSTR); +BOOL PathIsURLW(LPCWSTR); +BOOL PathMakePrettyA(LPSTR); +BOOL PathMakePrettyW(LPWSTR); +BOOL PathMakeSystemFolderA(LPSTR); +BOOL PathMakeSystemFolderW(LPWSTR); +BOOL PathMatchSpecA(LPCSTR, LPCSTR); +BOOL PathMatchSpecW(LPCWSTR, LPCWSTR); +int PathParseIconLocationA(LPSTR); +int PathParseIconLocationW(LPWSTR); +void PathQuoteSpacesA(LPSTR); +void PathQuoteSpacesW(LPWSTR); +BOOL PathRelativePathToA(LPSTR, LPCSTR, DWORD, LPCSTR, DWORD); +BOOL PathRelativePathToW(LPWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD); +void PathRemoveArgsA(LPSTR); +void PathRemoveArgsW(LPWSTR); +LPSTR PathRemoveBackslashA(LPSTR); +LPWSTR PathRemoveBackslashW(LPWSTR); +void PathRemoveBlanksA(LPSTR); +void PathRemoveBlanksW(LPWSTR); +void PathRemoveExtensionA(LPSTR); +void PathRemoveExtensionW(LPWSTR); +BOOL PathRemoveFileSpecA(LPSTR); +BOOL PathRemoveFileSpecW(LPWSTR); +BOOL PathRenameExtensionA(LPSTR, LPCSTR); +BOOL PathRenameExtensionW(LPWSTR, LPCWSTR); +BOOL PathSearchAndQualifyA(LPCSTR, LPSTR, UINT); +BOOL PathSearchAndQualifyW(LPCWSTR, LPWSTR, UINT); +void PathSetDlgItemPathA(HWND, int, LPCSTR); +void PathSetDlgItemPathW(HWND, int, LPCWSTR); +LPSTR PathSkipRootA(LPCSTR); +LPWSTR PathSkipRootW(LPCWSTR); +void PathStripPathA(LPSTR); +void PathStripPathW(LPWSTR); +BOOL PathStripToRootA(LPSTR); +BOOL PathStripToRootW(LPWSTR); +void PathUndecorateA(LPSTR); +void PathUndecorateW(LPWSTR); +BOOL PathUnExpandEnvStringsA(LPCSTR, LPSTR, UINT); +BOOL PathUnExpandEnvStringsW(LPCWSTR, LPWSTR, UINT); +BOOL PathUnmakeSystemFolderA(LPSTR); +BOOL PathUnmakeSystemFolderW(LPWSTR); +void PathUnquoteSpacesA(LPSTR); +void PathUnquoteSpacesW(LPWSTR); +HRESULT SHAutoComplete(HWND, DWORD); +BOOL SHCreateThread(LPTHREAD_START_ROUTINE, void*, DWORD, LPTHREAD_START_ROUTINE); +DWORD SHCopyKeyA(HKEY, LPCSTR, HKEY, DWORD); +DWORD SHCopyKeyW(HKEY, LPCWSTR, HKEY, DWORD); +DWORD SHDeleteEmptyKeyA(HKEY, LPCSTR); +DWORD SHDeleteEmptyKeyW(HKEY, LPCWSTR); +DWORD SHDeleteKeyA(HKEY, LPCSTR); +DWORD SHDeleteKeyW(HKEY, LPCWSTR); +DWORD SHEnumKeyExA(HKEY, DWORD, LPSTR, LPDWORD); +DWORD SHEnumKeyExW(HKEY, DWORD, LPWSTR, LPDWORD); +DWORD SHQueryInfoKeyA(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); +DWORD SHQueryInfoKeyW(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD); +DWORD SHQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +HRESULT SHGetThreadRef(IUnknown*); +HRESULT SHSetThreadRef(IUnknown); +BOOL SHSkipJunction(IBindCtx, const(CLSID)*); +DWORD SHEnumValueA(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHEnumValueW(HKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD); +DWORD SHGetValueA(HKEY, LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD); +DWORD SHGetValueW(HKEY, LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD); +DWORD SHSetValueA(HKEY, LPCSTR, LPCSTR, DWORD, LPCVOID, DWORD); +DWORD SHSetValueW(HKEY, LPCWSTR, LPCWSTR, DWORD, LPCVOID, DWORD); +DWORD SHDeleteValueA(HKEY, LPCSTR, LPCSTR); +DWORD SHDeleteValueW(HKEY, LPCWSTR, LPCWSTR); +HRESULT AssocCreate(CLSID, const(IID)* , const(LPVOID)*); +HRESULT AssocQueryKeyA(ASSOCF, ASSOCKEY, LPCSTR, LPCSTR, HKEY*); +HRESULT AssocQueryKeyW(ASSOCF, ASSOCKEY, LPCWSTR, LPCWSTR, HKEY*); +HRESULT AssocQueryStringA(ASSOCF, ASSOCSTR, LPCSTR, LPCSTR, LPSTR, DWORD*); +HRESULT AssocQueryStringByKeyA(ASSOCF, ASSOCSTR, HKEY, LPCSTR, LPSTR, DWORD*); +HRESULT AssocQueryStringByKeyW(ASSOCF, ASSOCSTR, HKEY, LPCWSTR, LPWSTR, DWORD*); +HRESULT AssocQueryStringW(ASSOCF, ASSOCSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD*); +HRESULT UrlApplySchemeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlApplySchemeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlCanonicalizeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCanonicalizeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlCombineA(LPCSTR, LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCombineW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, DWORD); +int UrlCompareA(LPCSTR, LPCSTR, BOOL); +int UrlCompareW(LPCWSTR, LPCWSTR, BOOL); +HRESULT UrlCreateFromPathA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlCreateFromPathW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +HRESULT UrlEscapeA(LPCSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlEscapeW(LPCWSTR, LPWSTR, LPDWORD, DWORD); +LPCSTR UrlGetLocationA(LPCSTR); +LPCWSTR UrlGetLocationW(LPCWSTR); +HRESULT UrlGetPartA(LPCSTR, LPSTR, LPDWORD, DWORD, DWORD); +HRESULT UrlGetPartW(LPCWSTR, LPWSTR, LPDWORD, DWORD, DWORD); +HRESULT UrlHashA(LPCSTR, LPBYTE, DWORD); +HRESULT UrlHashW(LPCWSTR, LPBYTE, DWORD); +BOOL UrlIsA(LPCSTR, URLIS); +BOOL UrlIsW(LPCWSTR, URLIS); +BOOL UrlIsNoHistoryA(LPCSTR); +BOOL UrlIsNoHistoryW(LPCWSTR); +BOOL UrlIsOpaqueA(LPCSTR); +BOOL UrlIsOpaqueW(LPCWSTR); +HRESULT UrlUnescapeA(LPSTR, LPSTR, LPDWORD, DWORD); +HRESULT UrlUnescapeW(LPWSTR, LPWSTR, LPDWORD, DWORD); +DWORD SHRegCloseUSKey(HUSKEY); +LONG SHRegCreateUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); +LONG SHRegCreateUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, DWORD); +LONG SHRegDeleteEmptyUSKeyA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteEmptyUSKeyW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteUSValueA(HUSKEY, LPCSTR, SHREGDEL_FLAGS); +LONG SHRegDeleteUSValueW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS); +HKEY SHRegDuplicateHKey(HKEY); +DWORD SHRegEnumUSKeyA(HUSKEY, DWORD, LPSTR, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSKeyW(HUSKEY, DWORD, LPWSTR, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSValueA(HUSKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegEnumUSValueW(HUSKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS); +BOOL SHRegGetBoolUSValueA(LPCSTR, LPCSTR, BOOL, BOOL); +BOOL SHRegGetBoolUSValueW(LPCWSTR, LPCWSTR, BOOL, BOOL); +DWORD SHRegGetPathA(HKEY, LPCSTR, LPCSTR, LPSTR, DWORD); +DWORD SHRegGetPathW(HKEY, LPCWSTR, LPCWSTR, LPWSTR, DWORD); +LONG SHRegGetUSValueA(LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegGetUSValueW(LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegOpenUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); +LONG SHRegOpenUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, BOOL); +DWORD SHRegQueryInfoUSKeyA(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); +DWORD SHRegQueryInfoUSKeyW(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS); +LONG SHRegQueryUSValueA(HUSKEY, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +LONG SHRegQueryUSValueW(HUSKEY, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD); +DWORD SHRegSetPathA(HKEY, LPCSTR, LPCSTR, LPCSTR, DWORD); +DWORD SHRegSetPathW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR, DWORD); +LONG SHRegSetUSValueA(LPCSTR, LPCSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegSetUSValueW(LPCWSTR, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegWriteUSValueA(HUSKEY, LPCSTR, DWORD, LPVOID, DWORD, DWORD); +LONG SHRegWriteUSValueW(HUSKEY, LPCWSTR, DWORD, LPVOID, DWORD, DWORD); +HRESULT HashData(LPBYTE, DWORD, LPBYTE, DWORD); +HPALETTE SHCreateShellPalette(HDC); +COLORREF ColorHLSToRGB(WORD, WORD, WORD); +COLORREF ColorAdjustLuma(COLORREF, int, BOOL); +void ColorRGBToHLS(COLORREF, WORD*, WORD*, WORD*); +/** Should not be necessary for D? +extern (C): +int wnsprintfA(LPSTR, int, LPCSTR, ...); +int wnsprintfW(LPWSTR, int, LPCWSTR, ...); +extern (Windows): +int wvnsprintfA(LPSTR, int, LPCSTR, va_list); +int wvnsprintfW(LPWSTR, int, LPCWSTR, va_list); +*/ + +HINSTANCE MLLoadLibraryA(LPCSTR, HANDLE, DWORD, LPCSTR, BOOL); +HINSTANCE MLLoadLibraryW(LPCWSTR, HANDLE, DWORD, LPCWSTR, BOOL); + +HRESULT DllInstall(BOOL, LPCWSTR); + +HRESULT StrRetToBufA(LPSTRRET, LPCITEMIDLIST, LPSTR, UINT); +HRESULT StrRetToBufW(LPSTRRET, LPCITEMIDLIST, LPWSTR, UINT); +HRESULT StrRetToStrA(LPSTRRET, LPCITEMIDLIST, LPSTR*); +HRESULT StrRetToStrW(LPSTRRET, LPCITEMIDLIST, LPWSTR*); +HRESULT SHCreateStreamOnFileA(LPCSTR, DWORD, IStream*); +HRESULT SHCreateStreamOnFileW(LPCWSTR, DWORD, IStream*); +IStream SHOpenRegStream2A(HKEY, LPCSTR, LPCSTR, DWORD); +IStream SHOpenRegStream2W(HKEY, LPCWSTR, LPCWSTR, DWORD); +IStream SHOpenRegStreamA(HKEY, LPCSTR, LPCSTR, DWORD); +IStream SHOpenRegStreamW(HKEY, LPCWSTR, LPCWSTR, DWORD); + +version(Unicode) { +alias ChrCmpIW ChrCmpI; +alias IntlStrEqNW IntlStrEqN; +alias IntlStrEqNIW IntlStrEqNI; +alias IntlStrEqWorkerW IntlStrEqWorker; +alias SHStrDupW SHStrDup; +alias StrCatW StrCat; +alias StrCatBuffW StrCatBuff; +alias StrChrW StrChr; +alias StrChrIW StrChrI; +alias StrCmpW StrCmp; +alias StrCmpIW StrCmpI; +alias StrCmpNIW StrCmpNI; +alias StrCmpNW StrCmpN; +alias StrCpyNW StrCpyN; +alias StrCpyW StrCpy; +alias StrCSpnIW StrCSpnI; +alias StrCSpnW StrCSpn; +alias StrDupW StrDup; +alias StrFormatByteSizeW StrFormatByteSize; +alias StrFormatKBSizeW StrFormatKBSize; +alias StrFromTimeIntervalW StrFromTimeInterval; +alias StrIsIntlEqualW StrIsIntlEqual; +alias StrNCatW StrNCat; +alias StrPBrkW StrPBrk; +alias StrRChrW StrRChr; +alias StrRChrIW StrRChrI; +alias StrRetToBufW StrRetToBuf; +alias StrRetToStrW StrRetToStr; +alias StrRStrIW StrRStrI; +alias StrSpnW StrSpn; +alias StrStrIW StrStrI; +alias StrStrW StrStr; +alias StrToIntW StrToInt; +alias StrToIntExW StrToIntEx; +alias StrTrimW StrTrim; +alias PathAddBackslashW PathAddBackslash; +alias PathAddExtensionW PathAddExtension; +alias PathAppendW PathAppend; +alias PathBuildRootW PathBuildRoot; +alias PathCanonicalizeW PathCanonicalize; +alias PathCombineW PathCombine; +alias PathCommonPrefixW PathCommonPrefix; +alias PathCompactPathW PathCompactPath; +alias PathCompactPathExW PathCompactPathEx; +alias PathCreateFromUrlW PathCreateFromUrl; +alias PathFileExistsW PathFileExists; +alias PathFindExtensionW PathFindExtension; +alias PathFindFileNameW PathFindFileName; +alias PathFindNextComponentW PathFindNextComponent; +alias PathFindOnPathW PathFindOnPath; +alias PathFindSuffixArrayW PathFindSuffixArray; +alias PathGetArgsW PathGetArgs; +alias PathGetCharTypeW PathGetCharType; +alias PathGetDriveNumberW PathGetDriveNumber; +alias PathIsContentTypeW PathIsContentType; +alias PathIsDirectoryEmptyW PathIsDirectoryEmpty; +alias PathIsDirectoryW PathIsDirectory; +alias PathIsFileSpecW PathIsFileSpec; +alias PathIsLFNFileSpecW PathIsLFNFileSpec; +alias PathIsNetworkPathW PathIsNetworkPath; +alias PathIsPrefixW PathIsPrefix; +alias PathIsRelativeW PathIsRelative; +alias PathIsRootW PathIsRoot; +alias PathIsSameRootW PathIsSameRoot; +alias PathIsSystemFolderW PathIsSystemFolder; +alias PathIsUNCServerShareW PathIsUNCServerShare; +alias PathIsUNCServerW PathIsUNCServer; +alias PathIsUNCW PathIsUNC; +alias PathIsURLW PathIsURL; +alias PathMakePrettyW PathMakePretty; +alias PathMakeSystemFolderW PathMakeSystemFolder; +alias PathMatchSpecW PathMatchSpec; +alias PathParseIconLocationW PathParseIconLocation; +alias PathQuoteSpacesW PathQuoteSpaces; +alias PathRelativePathToW PathRelativePathTo; +alias PathRemoveArgsW PathRemoveArgs; +alias PathRemoveBackslashW PathRemoveBackslash; +alias PathRemoveBlanksW PathRemoveBlanks; +alias PathRemoveExtensionW PathRemoveExtension; +alias PathRemoveFileSpecW PathRemoveFileSpec; +alias PathRenameExtensionW PathRenameExtension; +alias PathSearchAndQualifyW PathSearchAndQualify; +alias PathSetDlgItemPathW PathSetDlgItemPath; +alias PathSkipRootW PathSkipRoot; +alias PathStripPathW PathStripPath; +alias PathStripToRootW PathStripToRoot; +alias PathUndecorateW PathUndecorate; +alias PathUnExpandEnvStringsW PathUnExpandEnvStrings; +alias PathUnmakeSystemFolderW PathUnmakeSystemFolder; +alias PathUnquoteSpacesW PathUnquoteSpaces; +alias SHCreateStreamOnFileW SHCreateStreamOnFile; +alias SHOpenRegStreamW SHOpenRegStream; +alias SHOpenRegStream2W SHOpenRegStream2; +alias SHCopyKeyW SHCopyKey; +alias SHDeleteEmptyKeyW SHDeleteEmptyKey; +alias SHDeleteKeyW SHDeleteKey; +alias SHEnumKeyExW SHEnumKeyEx; +alias SHQueryInfoKeyW SHQueryInfoKey; +alias SHQueryValueExW SHQueryValueEx; +alias SHEnumValueW SHEnumValue; +alias SHGetValueW SHGetValue; +alias SHSetValueW SHSetValue; +alias SHDeleteValueW SHDeleteValue; +alias AssocQueryKeyW AssocQueryKey; +alias AssocQueryStringByKeyW AssocQueryStringByKey; +alias AssocQueryStringW AssocQueryString; +alias UrlApplySchemeW UrlApplyScheme; +alias UrlCanonicalizeW UrlCanonicalize; +alias UrlCombineW UrlCombine; +alias UrlCompareW UrlCompare; +alias UrlCreateFromPathW UrlCreateFromPath; +alias UrlEscapeW UrlEscape; +alias UrlGetLocationW UrlGetLocation; +alias UrlGetPartW UrlGetPart; +alias UrlHashW UrlHash; +alias UrlIsW UrlIs; +alias UrlIsFileUrlW UrlIsFileUrl; +alias UrlIsNoHistoryW UrlIsNoHistory; +alias UrlIsOpaqueW UrlIsOpaque; +alias UrlUnescapeW UrlUnescape; +alias UrlUnescapeInPlaceW UrlUnescapeInPlace; +alias SHRegCreateUSKeyW SHRegCreateUSKey; +alias SHRegDeleteEmptyUSKeyW SHRegDeleteEmptyUSKey; +alias SHRegDeleteUSValueW SHRegDeleteUSValue; +alias SHRegEnumUSKeyW SHRegEnumUSKey; +alias SHRegEnumUSValueW SHRegEnumUSValue; +alias SHRegGetBoolUSValueW SHRegGetBoolUSValue; +alias SHRegGetPathW SHRegGetPath; +alias SHRegGetUSValueW SHRegGetUSValue; +alias SHRegOpenUSKeyW SHRegOpenUSKey; +alias SHRegQueryInfoUSKeyW SHRegQueryInfoUSKey; +alias SHRegQueryUSValueW SHRegQueryUSValue; +alias SHRegSetPathW SHRegSetPath; +alias SHRegSetUSValueW SHRegSetUSValue; +alias SHRegWriteUSValueW SHRegWriteUSValue; +//alias wnsprintfW wnsprintf; +//alias wvnsprintfW wvnsprintf; +} else { +alias ChrCmpIA ChrCmpI; +alias IntlStrEqNA IntlStrEqN; +alias IntlStrEqNIA IntlStrEqNI; +alias IntlStrEqWorkerA IntlStrEqWorker; +alias SHStrDupA SHStrDup; +alias StrCatBuffA StrCatBuff; +alias StrChrA StrChr; +alias StrChrIA StrChrI; +alias StrCmpNIA StrCmpNI; +alias StrCmpNA StrCmpN; +alias StrCSpnIA StrCSpnI; +alias StrCSpnA StrCSpn; +alias StrDupA StrDup; +alias StrFormatByteSizeA StrFormatByteSize; +alias StrFormatKBSizeA StrFormatKBSize; +alias StrFromTimeIntervalA StrFromTimeInterval; +alias StrIsIntlEqualA StrIsIntlEqual; +alias StrNCatA StrNCat; +alias StrPBrkA StrPBrk; +alias StrRChrA StrRChr; +alias StrRChrIA StrRChrI; +alias StrRetToBufA StrRetToBuf; +alias StrRetToStrA StrRetToStr; +alias StrRStrIA StrRStrI; +alias StrSpnA StrSpn; +alias StrStrIA StrStrI; +alias StrStrA StrStr; +alias StrToIntA StrToInt; +alias StrToIntExA StrToIntEx; +alias StrTrimA StrTrim; +alias PathAddBackslashA PathAddBackslash; +alias PathAddExtensionA PathAddExtension; +alias PathAppendA PathAppend; +alias PathBuildRootA PathBuildRoot; +alias PathCanonicalizeA PathCanonicalize; +alias PathCombineA PathCombine; +alias PathCommonPrefixA PathCommonPrefix; +alias PathCompactPathA PathCompactPath; +alias PathCompactPathExA PathCompactPathEx; +alias PathCreateFromUrlA PathCreateFromUrl; +alias PathFileExistsA PathFileExists; +alias PathFindExtensionA PathFindExtension; +alias PathFindFileNameA PathFindFileName; +alias PathFindNextComponentA PathFindNextComponent; +alias PathFindOnPathA PathFindOnPath; +alias PathFindSuffixArrayA PathFindSuffixArray; +alias PathGetArgsA PathGetArgs; +alias PathGetCharTypeA PathGetCharType; +alias PathGetDriveNumberA PathGetDriveNumber; +alias PathIsContentTypeA PathIsContentType; +alias PathIsDirectoryEmptyA PathIsDirectoryEmpty; +alias PathIsDirectoryA PathIsDirectory; +alias PathIsFileSpecA PathIsFileSpec; +alias PathIsLFNFileSpecA PathIsLFNFileSpec; +alias PathIsNetworkPathA PathIsNetworkPath; +alias PathIsPrefixA PathIsPrefix; +alias PathIsRelativeA PathIsRelative; +alias PathIsRootA PathIsRoot; +alias PathIsSameRootA PathIsSameRoot; +alias PathIsSystemFolderA PathIsSystemFolder; +alias PathIsUNCServerShareA PathIsUNCServerShare; +alias PathIsUNCServerA PathIsUNCServer; +alias PathIsUNCA PathIsUNC; +alias PathIsURLA PathIsURL; +alias PathMakePrettyA PathMakePretty; +alias PathMakeSystemFolderA PathMakeSystemFolder; +alias PathMatchSpecA PathMatchSpec; +alias PathParseIconLocationA PathParseIconLocation; +alias PathQuoteSpacesA PathQuoteSpaces; +alias PathRelativePathToA PathRelativePathTo; +alias PathRemoveArgsA PathRemoveArgs; +alias PathRemoveBackslashA PathRemoveBackslash; +alias PathRemoveBlanksA PathRemoveBlanks; +alias PathRemoveExtensionA PathRemoveExtension; +alias PathRemoveFileSpecA PathRemoveFileSpec; +alias PathRenameExtensionA PathRenameExtension; +alias PathSearchAndQualifyA PathSearchAndQualify; +alias PathSetDlgItemPathA PathSetDlgItemPath; +alias PathSkipRootA PathSkipRoot; +alias PathStripPathA PathStripPath; +alias PathStripToRootA PathStripToRoot; +alias PathUndecorateA PathUndecorate; +alias PathUnExpandEnvStringsA PathUnExpandEnvStrings; +alias PathUnmakeSystemFolderA PathUnmakeSystemFolder; +alias PathUnquoteSpacesA PathUnquoteSpaces; +alias SHCreateStreamOnFileA SHCreateStreamOnFile; +alias SHOpenRegStreamA SHOpenRegStream; +alias SHOpenRegStream2A SHOpenRegStream2; +alias SHCopyKeyA SHCopyKey; +alias SHDeleteEmptyKeyA SHDeleteEmptyKey; +alias SHDeleteKeyA SHDeleteKey; +alias SHEnumKeyExA SHEnumKeyEx; +alias SHQueryInfoKeyA SHQueryInfoKey; +alias SHQueryValueExA SHQueryValueEx; +alias SHEnumValueA SHEnumValue; +alias SHGetValueA SHGetValue; +alias SHSetValueA SHSetValue; +alias SHDeleteValueA SHDeleteValue; +alias AssocQueryKeyA AssocQueryKey; +alias AssocQueryStringByKeyA AssocQueryStringByKey; +alias AssocQueryStringA AssocQueryString; +alias UrlApplySchemeA UrlApplyScheme; +alias UrlCanonicalizeA UrlCanonicalize; +alias UrlCombineA UrlCombine; +alias UrlCompareA UrlCompare; +alias UrlCreateFromPathA UrlCreateFromPath; +alias UrlEscapeA UrlEscape; +alias UrlGetLocationA UrlGetLocation; +alias UrlGetPartA UrlGetPart; +alias UrlHashA UrlHash; +alias UrlIsA UrlIs; +alias UrlIsNoHistoryA UrlIsNoHistory; +alias UrlIsOpaqueA UrlIsOpaque; +alias UrlUnescapeA UrlUnescape; +alias UrlUnescapeInPlaceA UrlUnescapeInPlace; +alias SHRegCreateUSKeyA SHRegCreateUSKey; +alias SHRegDeleteEmptyUSKeyA SHRegDeleteEmptyUSKey; +alias SHRegDeleteUSValueA SHRegDeleteUSValue; +alias SHRegEnumUSKeyA SHRegEnumUSKey; +alias SHRegEnumUSValueA SHRegEnumUSValue; +alias SHRegGetBoolUSValueA SHRegGetBoolUSValue; +alias SHRegGetPathA SHRegGetPath; +alias SHRegGetUSValueA SHRegGetUSValue; +alias SHRegOpenUSKeyA SHRegOpenUSKey; +alias SHRegQueryInfoUSKeyA SHRegQueryInfoUSKey; +alias SHRegQueryUSValueA SHRegQueryUSValue; +alias SHRegSetPathA SHRegSetPath; +alias SHRegSetUSValueA SHRegSetUSValue; +alias SHRegWriteUSValueA SHRegWriteUSValue; +//alias wnsprintfA wnsprintf; +//alias wvnsprintfA wvnsprintf; +} + +alias StrToInt StrToLong; Index: src/win32/snmp.d ================================================================== --- src/win32/snmp.d +++ src/win32/snmp.d @@ -1,269 +1,269 @@ -/***********************************************************************\ -* snmp.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.snmp; - -private import win32.windows; - -// These are not documented on MSDN -enum { - DEFAULT_SNMP_PORT_UDP = 161, - DEFAULT_SNMP_PORT_IPX = 36879, - DEFAULT_SNMPTRAP_PORT_UDP = 162, - DEFAULT_SNMPTRAP_PORT_IPX = 36880 -} - -enum : BYTE { - ASN_UNIVERSAL = 0x00, - ASN_PRIMITIVE = 0x00, - ASN_CONSTRUCTOR = 0x20, - ASN_APPLICATION = 0x40, - ASN_CONTEXT = 0x80, - ASN_PRIVATE = 0xC0, - - SNMP_PDU_GET = ASN_CONTEXT | ASN_CONSTRUCTOR, - SNMP_PDU_GETNEXT, - SNMP_PDU_RESPONSE, - SNMP_PDU_SET, - SNMP_PDU_GETBULK, // = ASN_CONTEXT | ASN_CONSTRUCTOR | 4 - SNMP_PDU_V1TRAP = ASN_CONTEXT | ASN_CONSTRUCTOR | 4, - SNMP_PDU_INFORM = ASN_CONTEXT | ASN_CONSTRUCTOR | 6, - SNMP_PDU_TRAP, - SNMP_PDU_REPORT, - ASN_INTEGER = ASN_UNIVERSAL | ASN_PRIMITIVE | 2, - ASN_BITS, - ASN_OCTETSTRING, - ASN_NULL, - ASN_OBJECTIDENTIFIER, // = ASN_UNIVERSAL | ASN_PRIMITIVE | 6 - ASN_INTEGER32 = ASN_INTEGER, - ASN_SEQUENCE = ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10, - ASN_SEQUENCEOF = ASN_SEQUENCE, - ASN_IPADDRESS = ASN_APPLICATION | ASN_PRIMITIVE, - ASN_COUNTER32, - ASN_GAUGE32, - ASN_TIMETICKS, - ASN_OPAQUE, // = ASN_APPLICATION | ASN_PRIMITIVE | 4 - ASN_COUNTER64 = ASN_APPLICATION | ASN_PRIMITIVE | 6, - ASN_UNSIGNED32, // = ASN_APPLICATION | ASN_PRIMITIVE | 7 - SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT | ASN_PRIMITIVE, - SNMP_EXCEPTION_NOSUCHINSTANCE, - SNMP_EXCEPTION_ENDOFMIBVIEW, - SNMP_EXTENSION_GET = SNMP_PDU_GET, - SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT, - SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK, - SNMP_EXTENSION_SET_TEST = ASN_PRIVATE | ASN_CONSTRUCTOR, - SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET, - SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE | ASN_CONSTRUCTOR | 1, - SNMP_EXTENSION_SET_CLEANUP -} - - -enum : AsnInteger { - SNMP_ERRORSTATUS_NOERROR, - SNMP_ERRORSTATUS_TOOBIG, - SNMP_ERRORSTATUS_NOSUCHNAME, - SNMP_ERRORSTATUS_BADVALUE, - SNMP_ERRORSTATUS_READONLY, - SNMP_ERRORSTATUS_GENERR, - SNMP_ERRORSTATUS_NOACCESS, - SNMP_ERRORSTATUS_WRONGTYPE, - SNMP_ERRORSTATUS_WRONGLENGTH, - SNMP_ERRORSTATUS_WRONGENCODING, - SNMP_ERRORSTATUS_WRONGVALUE, - SNMP_ERRORSTATUS_NOCREATION, - SNMP_ERRORSTATUS_INCONSISTENTVALUE, - SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE, - SNMP_ERRORSTATUS_COMMITFAILED, - SNMP_ERRORSTATUS_UNDOFAILED, - SNMP_ERRORSTATUS_AUTHORIZATIONERROR, - SNMP_ERRORSTATUS_NOTWRITABLE, - SNMP_ERRORSTATUS_INCONSISTENTNAME -} - -enum : AsnInteger { - SNMP_GENERICTRAP_COLDSTART, - SNMP_GENERICTRAP_WARMSTART, - SNMP_GENERICTRAP_LINKDOWN, - SNMP_GENERICTRAP_LINKUP, - SNMP_GENERICTRAP_AUTHFAILURE, - SNMP_GENERICTRAP_EGPNEIGHLOSS, - SNMP_GENERICTRAP_ENTERSPECIFIC -} - -// These are not documented on MSDN -enum { - SNMP_ACCESS_NONE, - SNMP_ACCESS_NOTIFY, - SNMP_ACCESS_READ_ONLY, - SNMP_ACCESS_READ_WRITE, - SNMP_ACCESS_READ_CREATE -} - -enum : BOOL { - SNMPAPI_ERROR = false, - SNMPAPI_NOERROR = true -} - -enum : INT { - SNMP_LOG_SILENT, - SNMP_LOG_FATAL, - SNMP_LOG_ERROR, - SNMP_LOG_WARNING, - SNMP_LOG_TRACE, - SNMP_LOG_VERBOSE -} - -const INT - SNMP_OUTPUT_TO_CONSOLE = 1, - SNMP_OUTPUT_TO_LOGFILE = 2, - SNMP_OUTPUT_TO_EVENTLOG = 4, - SNMP_OUTPUT_TO_DEBUGGER = 8; - -const size_t SNMP_MAX_OID_LEN = 128; - -enum : DWORD { - SNMP_MEM_ALLOC_ERROR = 1, - SNMP_BERAPI_INVALID_LENGTH = 10, - SNMP_BERAPI_INVALID_TAG, - SNMP_BERAPI_OVERFLOW, - SNMP_BERAPI_SHORT_BUFFER, - SNMP_BERAPI_INVALID_OBJELEM, - SNMP_PDUAPI_UNRECOGNIZED_PDU = 20, - SNMP_PDUAPI_INVALID_ES, - SNMP_PDUAPI_INVALID_GT, - SNMP_AUTHAPI_INVALID_VERSION = 30, - SNMP_AUTHAPI_INVALID_MSG_TYPE, - SNMP_AUTHAPI_TRIV_AUTH_FAILED, -} - -alias INT SNMPAPI; -alias LONG AsnInteger32; -alias ULONG AsnUnsigned32, AsnCounter32, AsnGauge32, AsnTimeticks; -alias ULARGE_INTEGER AsnCounter64; - -align (4): - -struct AsnOctetString { - BYTE* stream; - UINT length; - BOOL dynamic; -} -alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence, - AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; - -struct AsnObjectIdentifier { - UINT idLength; - UINT* ids; -} -alias AsnObjectIdentifier AsnObjectName; - -struct AsnAny { - BYTE asnType; - union _asnValue { - AsnInteger32 number; - AsnUnsigned32 unsigned32; - AsnCounter64 counter64; - AsnOctetString string; - AsnBits bits; - AsnObjectIdentifier object; - AsnSequence sequence; - AsnIPAddress address; - AsnCounter32 counter; - AsnGauge32 gauge; - AsnTimeticks ticks; - AsnOpaque arbitrary; - } - _asnValue asnValue; -} -alias AsnAny AsnObjectSyntax; - -struct SnmpVarBind { - AsnObjectName name; - AsnObjectSyntax value; -} - -struct SnmpVarBindList { - SnmpVarBind* list; - UINT len; -} - -extern (Windows) { - VOID SnmpExtensionClose(); - BOOL SnmpExtensionInit(DWORD, HANDLE*, AsnObjectIdentifier*); - BOOL SnmpExtensionInitEx(AsnObjectIdentifier*); - BOOL SnmpExtensionMonitor(LPVOID); - BOOL SnmpExtensionQuery(BYTE, SnmpVarBindList*, AsnInteger32*, - AsnInteger32*); - BOOL SnmpExtensionQueryEx(DWORD, DWORD, SnmpVarBindList*, AsnOctetString*, - AsnInteger32*, AsnInteger32*); - BOOL SnmpExtensionTrap(AsnObjectIdentifier*, AsnInteger32*, AsnInteger32*, - AsnTimeticks*, SnmpVarBindList*); - DWORD SnmpSvcGetUptime(); - VOID SnmpSvcSetLogLevel(INT); - VOID SnmpSvcSetLogType(INT); - SNMPAPI SnmpUtilAsnAnyCpy(AsnAny*, AsnAny*); - VOID SnmpUtilAsnAnyFree(AsnAny*); - VOID SnmpUtilDbgPrint(INT, LPSTR, ...); - LPSTR SnmpUtilIdsToA(UINT*, UINT); - LPVOID SnmpUtilMemAlloc(UINT); - VOID SnmpUtilMemFree(LPVOID); - LPVOID SnmpUtilMemReAlloc(LPVOID, UINT); - SNMPAPI SnmpUtilOctetsCmp(AsnOctetString*, AsnOctetString*); - SNMPAPI SnmpUtilOctetsCpy(AsnOctetString*, AsnOctetString*); - VOID SnmpUtilOctetsFree(AsnOctetString*); - SNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*, AsnOctetString*, UINT); - SNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*, AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*, AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*, AsnObjectIdentifier*); - VOID SnmpUtilOidFree(AsnObjectIdentifier*); - SNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*, AsnObjectIdentifier*, UINT); - LPSTR SnmpUtilOidToA(AsnObjectIdentifier*); - VOID SnmpUtilPrintAsnAny(AsnAny*); - VOID SnmpUtilPrintOid(AsnObjectIdentifier*); - SNMPAPI SnmpUtilVarBindCpy(SnmpVarBind*, SnmpVarBind*); - SNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*, SnmpVarBindList*); - VOID SnmpUtilVarBindFree(SnmpVarBind*); - VOID SnmpUtilVarBindListFree(SnmpVarBindList*); -} - -alias SnmpUtilMemAlloc SNMP_malloc; -alias SnmpUtilMemFree SNMP_free; -alias SnmpUtilMemReAlloc SNMP_realloc; -alias SnmpUtilMemAlloc SNMP_DBG_malloc; -alias SnmpUtilMemFree SNMP_DBG_free; -alias SnmpUtilMemReAlloc SNMP_DBG_realloc; -alias SnmpUtilOidAppend SNMP_oidappend; -alias SnmpUtilOidCmp SNMP_oidcmp; -alias SnmpUtilOidCpy SNMP_oidcpy; -alias SnmpUtilOidFree SNMP_oidfree; -alias SnmpUtilOidNCmp SNMP_oidncmp; -alias SnmpUtilPrintAsnAny SNMP_printany; -alias SnmpUtilVarBindCpy SNMP_CopyVarBind; -alias SnmpUtilVarBindListCpy SNMP_CopyVarBindList; -alias SnmpUtilVarBindFree SNMP_FreeVarBind; -alias SnmpUtilVarBindListFree SNMP_FreeVarBindList; -alias ASN_IPADDRESS ASN_RFC1155_IPADDRESS; -alias ASN_COUNTER32 ASN_RFC1155_COUNTER; -alias ASN_GAUGE32 ASN_RFC1155_GAUGE; -alias ASN_TIMETICKS ASN_RFC1155_TIMETICKS; -alias ASN_OPAQUE ASN_RFC1155_OPAQUE; -alias ASN_OCTETSTRING ASN_RFC1213_DISPSTRING; -alias SNMP_PDU_GET ASN_RFC1157_GETREQUEST; -alias SNMP_PDU_GETNEXT ASN_RFC1157_GETNEXTREQUEST; -alias SNMP_PDU_RESPONSE ASN_RFC1157_GETRESPONSE; -alias SNMP_PDU_SET ASN_RFC1157_SETREQUEST; -alias SNMP_PDU_V1TRAP ASN_RFC1157_TRAP; -alias ASN_CONTEXT ASN_CONTEXTSPECIFIC; -alias ASN_PRIMITIVE ASN_PRIMATIVE; -alias SnmpVarBindList RFC1157VarBindList; -alias SnmpVarBind RFC1157VarBind; -alias AsnInteger32 AsnInteger; -alias AsnCounter32 AsnCounter; -alias AsnGauge32 AsnGauge; +/***********************************************************************\ +* snmp.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.snmp; + +private import win32.windows; + +// These are not documented on MSDN +enum { + DEFAULT_SNMP_PORT_UDP = 161, + DEFAULT_SNMP_PORT_IPX = 36879, + DEFAULT_SNMPTRAP_PORT_UDP = 162, + DEFAULT_SNMPTRAP_PORT_IPX = 36880 +} + +enum : BYTE { + ASN_UNIVERSAL = 0x00, + ASN_PRIMITIVE = 0x00, + ASN_CONSTRUCTOR = 0x20, + ASN_APPLICATION = 0x40, + ASN_CONTEXT = 0x80, + ASN_PRIVATE = 0xC0, + + SNMP_PDU_GET = ASN_CONTEXT | ASN_CONSTRUCTOR, + SNMP_PDU_GETNEXT, + SNMP_PDU_RESPONSE, + SNMP_PDU_SET, + SNMP_PDU_GETBULK, // = ASN_CONTEXT | ASN_CONSTRUCTOR | 4 + SNMP_PDU_V1TRAP = ASN_CONTEXT | ASN_CONSTRUCTOR | 4, + SNMP_PDU_INFORM = ASN_CONTEXT | ASN_CONSTRUCTOR | 6, + SNMP_PDU_TRAP, + SNMP_PDU_REPORT, + ASN_INTEGER = ASN_UNIVERSAL | ASN_PRIMITIVE | 2, + ASN_BITS, + ASN_OCTETSTRING, + ASN_NULL, + ASN_OBJECTIDENTIFIER, // = ASN_UNIVERSAL | ASN_PRIMITIVE | 6 + ASN_INTEGER32 = ASN_INTEGER, + ASN_SEQUENCE = ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10, + ASN_SEQUENCEOF = ASN_SEQUENCE, + ASN_IPADDRESS = ASN_APPLICATION | ASN_PRIMITIVE, + ASN_COUNTER32, + ASN_GAUGE32, + ASN_TIMETICKS, + ASN_OPAQUE, // = ASN_APPLICATION | ASN_PRIMITIVE | 4 + ASN_COUNTER64 = ASN_APPLICATION | ASN_PRIMITIVE | 6, + ASN_UNSIGNED32, // = ASN_APPLICATION | ASN_PRIMITIVE | 7 + SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT | ASN_PRIMITIVE, + SNMP_EXCEPTION_NOSUCHINSTANCE, + SNMP_EXCEPTION_ENDOFMIBVIEW, + SNMP_EXTENSION_GET = SNMP_PDU_GET, + SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT, + SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK, + SNMP_EXTENSION_SET_TEST = ASN_PRIVATE | ASN_CONSTRUCTOR, + SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET, + SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE | ASN_CONSTRUCTOR | 1, + SNMP_EXTENSION_SET_CLEANUP +} + + +enum : AsnInteger { + SNMP_ERRORSTATUS_NOERROR, + SNMP_ERRORSTATUS_TOOBIG, + SNMP_ERRORSTATUS_NOSUCHNAME, + SNMP_ERRORSTATUS_BADVALUE, + SNMP_ERRORSTATUS_READONLY, + SNMP_ERRORSTATUS_GENERR, + SNMP_ERRORSTATUS_NOACCESS, + SNMP_ERRORSTATUS_WRONGTYPE, + SNMP_ERRORSTATUS_WRONGLENGTH, + SNMP_ERRORSTATUS_WRONGENCODING, + SNMP_ERRORSTATUS_WRONGVALUE, + SNMP_ERRORSTATUS_NOCREATION, + SNMP_ERRORSTATUS_INCONSISTENTVALUE, + SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE, + SNMP_ERRORSTATUS_COMMITFAILED, + SNMP_ERRORSTATUS_UNDOFAILED, + SNMP_ERRORSTATUS_AUTHORIZATIONERROR, + SNMP_ERRORSTATUS_NOTWRITABLE, + SNMP_ERRORSTATUS_INCONSISTENTNAME +} + +enum : AsnInteger { + SNMP_GENERICTRAP_COLDSTART, + SNMP_GENERICTRAP_WARMSTART, + SNMP_GENERICTRAP_LINKDOWN, + SNMP_GENERICTRAP_LINKUP, + SNMP_GENERICTRAP_AUTHFAILURE, + SNMP_GENERICTRAP_EGPNEIGHLOSS, + SNMP_GENERICTRAP_ENTERSPECIFIC +} + +// These are not documented on MSDN +enum { + SNMP_ACCESS_NONE, + SNMP_ACCESS_NOTIFY, + SNMP_ACCESS_READ_ONLY, + SNMP_ACCESS_READ_WRITE, + SNMP_ACCESS_READ_CREATE +} + +enum : BOOL { + SNMPAPI_ERROR = false, + SNMPAPI_NOERROR = true +} + +enum : INT { + SNMP_LOG_SILENT, + SNMP_LOG_FATAL, + SNMP_LOG_ERROR, + SNMP_LOG_WARNING, + SNMP_LOG_TRACE, + SNMP_LOG_VERBOSE +} + +const INT + SNMP_OUTPUT_TO_CONSOLE = 1, + SNMP_OUTPUT_TO_LOGFILE = 2, + SNMP_OUTPUT_TO_EVENTLOG = 4, + SNMP_OUTPUT_TO_DEBUGGER = 8; + +const size_t SNMP_MAX_OID_LEN = 128; + +enum : DWORD { + SNMP_MEM_ALLOC_ERROR = 1, + SNMP_BERAPI_INVALID_LENGTH = 10, + SNMP_BERAPI_INVALID_TAG, + SNMP_BERAPI_OVERFLOW, + SNMP_BERAPI_SHORT_BUFFER, + SNMP_BERAPI_INVALID_OBJELEM, + SNMP_PDUAPI_UNRECOGNIZED_PDU = 20, + SNMP_PDUAPI_INVALID_ES, + SNMP_PDUAPI_INVALID_GT, + SNMP_AUTHAPI_INVALID_VERSION = 30, + SNMP_AUTHAPI_INVALID_MSG_TYPE, + SNMP_AUTHAPI_TRIV_AUTH_FAILED, +} + +alias INT SNMPAPI; +alias LONG AsnInteger32; +alias ULONG AsnUnsigned32, AsnCounter32, AsnGauge32, AsnTimeticks; +alias ULARGE_INTEGER AsnCounter64; + +align (4): + +struct AsnOctetString { + BYTE* stream; + UINT length; + BOOL dynamic; +} +alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence, + AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; + +struct AsnObjectIdentifier { + UINT idLength; + UINT* ids; +} +alias AsnObjectIdentifier AsnObjectName; + +struct AsnAny { + BYTE asnType; + union _asnValue { + AsnInteger32 number; + AsnUnsigned32 unsigned32; + AsnCounter64 counter64; + AsnOctetString string; + AsnBits bits; + AsnObjectIdentifier object; + AsnSequence sequence; + AsnIPAddress address; + AsnCounter32 counter; + AsnGauge32 gauge; + AsnTimeticks ticks; + AsnOpaque arbitrary; + } + _asnValue asnValue; +} +alias AsnAny AsnObjectSyntax; + +struct SnmpVarBind { + AsnObjectName name; + AsnObjectSyntax value; +} + +struct SnmpVarBindList { + SnmpVarBind* list; + UINT len; +} + +extern (Windows) { + VOID SnmpExtensionClose(); + BOOL SnmpExtensionInit(DWORD, HANDLE*, AsnObjectIdentifier*); + BOOL SnmpExtensionInitEx(AsnObjectIdentifier*); + BOOL SnmpExtensionMonitor(LPVOID); + BOOL SnmpExtensionQuery(BYTE, SnmpVarBindList*, AsnInteger32*, + AsnInteger32*); + BOOL SnmpExtensionQueryEx(DWORD, DWORD, SnmpVarBindList*, AsnOctetString*, + AsnInteger32*, AsnInteger32*); + BOOL SnmpExtensionTrap(AsnObjectIdentifier*, AsnInteger32*, AsnInteger32*, + AsnTimeticks*, SnmpVarBindList*); + DWORD SnmpSvcGetUptime(); + VOID SnmpSvcSetLogLevel(INT); + VOID SnmpSvcSetLogType(INT); + SNMPAPI SnmpUtilAsnAnyCpy(AsnAny*, AsnAny*); + VOID SnmpUtilAsnAnyFree(AsnAny*); + VOID SnmpUtilDbgPrint(INT, LPSTR, ...); + LPSTR SnmpUtilIdsToA(UINT*, UINT); + LPVOID SnmpUtilMemAlloc(UINT); + VOID SnmpUtilMemFree(LPVOID); + LPVOID SnmpUtilMemReAlloc(LPVOID, UINT); + SNMPAPI SnmpUtilOctetsCmp(AsnOctetString*, AsnOctetString*); + SNMPAPI SnmpUtilOctetsCpy(AsnOctetString*, AsnOctetString*); + VOID SnmpUtilOctetsFree(AsnOctetString*); + SNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*, AsnOctetString*, UINT); + SNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*, AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*, AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*, AsnObjectIdentifier*); + VOID SnmpUtilOidFree(AsnObjectIdentifier*); + SNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*, AsnObjectIdentifier*, UINT); + LPSTR SnmpUtilOidToA(AsnObjectIdentifier*); + VOID SnmpUtilPrintAsnAny(AsnAny*); + VOID SnmpUtilPrintOid(AsnObjectIdentifier*); + SNMPAPI SnmpUtilVarBindCpy(SnmpVarBind*, SnmpVarBind*); + SNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*, SnmpVarBindList*); + VOID SnmpUtilVarBindFree(SnmpVarBind*); + VOID SnmpUtilVarBindListFree(SnmpVarBindList*); +} + +alias SnmpUtilMemAlloc SNMP_malloc; +alias SnmpUtilMemFree SNMP_free; +alias SnmpUtilMemReAlloc SNMP_realloc; +alias SnmpUtilMemAlloc SNMP_DBG_malloc; +alias SnmpUtilMemFree SNMP_DBG_free; +alias SnmpUtilMemReAlloc SNMP_DBG_realloc; +alias SnmpUtilOidAppend SNMP_oidappend; +alias SnmpUtilOidCmp SNMP_oidcmp; +alias SnmpUtilOidCpy SNMP_oidcpy; +alias SnmpUtilOidFree SNMP_oidfree; +alias SnmpUtilOidNCmp SNMP_oidncmp; +alias SnmpUtilPrintAsnAny SNMP_printany; +alias SnmpUtilVarBindCpy SNMP_CopyVarBind; +alias SnmpUtilVarBindListCpy SNMP_CopyVarBindList; +alias SnmpUtilVarBindFree SNMP_FreeVarBind; +alias SnmpUtilVarBindListFree SNMP_FreeVarBindList; +alias ASN_IPADDRESS ASN_RFC1155_IPADDRESS; +alias ASN_COUNTER32 ASN_RFC1155_COUNTER; +alias ASN_GAUGE32 ASN_RFC1155_GAUGE; +alias ASN_TIMETICKS ASN_RFC1155_TIMETICKS; +alias ASN_OPAQUE ASN_RFC1155_OPAQUE; +alias ASN_OCTETSTRING ASN_RFC1213_DISPSTRING; +alias SNMP_PDU_GET ASN_RFC1157_GETREQUEST; +alias SNMP_PDU_GETNEXT ASN_RFC1157_GETNEXTREQUEST; +alias SNMP_PDU_RESPONSE ASN_RFC1157_GETRESPONSE; +alias SNMP_PDU_SET ASN_RFC1157_SETREQUEST; +alias SNMP_PDU_V1TRAP ASN_RFC1157_TRAP; +alias ASN_CONTEXT ASN_CONTEXTSPECIFIC; +alias ASN_PRIMITIVE ASN_PRIMATIVE; +alias SnmpVarBindList RFC1157VarBindList; +alias SnmpVarBind RFC1157VarBind; +alias AsnInteger32 AsnInteger; +alias AsnCounter32 AsnCounter; +alias AsnGauge32 AsnGauge; Index: src/win32/sql.d ================================================================== --- src/win32/sql.d +++ src/win32/sql.d @@ -1,434 +1,434 @@ -/***********************************************************************\ -* sql.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.sql; - -public import win32.sqltypes; -private import win32.windef; - -const ODBCVER = 0x0351; - -const SQL_ACCESSIBLE_PROCEDURES=20; -const SQL_ACCESSIBLE_TABLES=19; -const SQL_ALL_TYPES=0; -const SQL_ALTER_TABLE=86; -const SQL_API_SQLALLOCCONNECT=1; -const SQL_API_SQLALLOCENV=2; -const SQL_API_SQLALLOCSTMT=3; -const SQL_API_SQLBINDCOL=4; -const SQL_API_SQLCANCEL=5; -const SQL_API_SQLCOLUMNS=40; -const SQL_API_SQLCONNECT=7; -const SQL_API_SQLDATASOURCES=57; -const SQL_API_SQLDESCRIBECOL=8; -const SQL_API_SQLDISCONNECT=9; -const SQL_API_SQLERROR=10; -const SQL_API_SQLEXECDIRECT=11; -const SQL_API_SQLEXECUTE=12; -const SQL_API_SQLFETCH=13; -const SQL_API_SQLFREECONNECT=14; -const SQL_API_SQLFREEENV=15; -const SQL_API_SQLFREESTMT=16; -const SQL_API_SQLGETCONNECTOPTION=42; -const SQL_API_SQLGETCURSORNAME=17; -const SQL_API_SQLGETDATA=43; -const SQL_API_SQLGETFUNCTIONS=44; -const SQL_API_SQLGETINFO=45; -const SQL_API_SQLGETSTMTOPTION=46; -const SQL_API_SQLGETTYPEINFO=47; -const SQL_API_SQLNUMRESULTCOLS=18; -const SQL_API_SQLPARAMDATA=48; -const SQL_API_SQLPREPARE=19; -const SQL_API_SQLPUTDATA=49; -const SQL_API_SQLROWCOUNT=20; -const SQL_API_SQLSETCONNECTOPTION=50; -const SQL_API_SQLSETCURSORNAME=21; -const SQL_API_SQLSETPARAM=22; -const SQL_API_SQLSETSTMTOPTION=51; -const SQL_API_SQLSPECIALCOLUMNS=52; -const SQL_API_SQLSTATISTICS=53; -const SQL_API_SQLTABLES=54; -const SQL_API_SQLTRANSACT=23; - -const SQL_CB_DELETE=0; -const SQL_CB_CLOSE=1; -const SQL_CB_PRESERVE=2; - -const SQL_CHAR=1; -const SQL_CLOSE=0; -const SQL_COMMIT=0; -const SQL_CURSOR_COMMIT_BEHAVIOR=23; -const SQL_DATA_AT_EXEC=-2; -const SQL_DATA_SOURCE_NAME=2; -const SQL_DATA_SOURCE_READ_ONLY=25; -const SQL_DBMS_NAME=17; -const SQL_DBMS_VER=18; -const SQL_DECIMAL=3; -const SQL_DEFAULT_TXN_ISOLATION=26; -const SQL_DOUBLE=8; -const SQL_DROP=1; -const SQL_ERROR=-1; - -const SQL_FD_FETCH_NEXT=1; -const SQL_FD_FETCH_FIRST=2; -const SQL_FD_FETCH_LAST=4; -const SQL_FD_FETCH_PRIOR=8; -const SQL_FD_FETCH_ABSOLUTE=16; -const SQL_FD_FETCH_RELATIVE=32; - -const SQL_FETCH_ABSOLUTE=5; -const SQL_FETCH_DIRECTION=8; -const SQL_FETCH_FIRST=2; -const SQL_FETCH_LAST=3; -const SQL_FETCH_NEXT=1; -const SQL_FETCH_PRIOR=4; -const SQL_FETCH_RELATIVE=6; -const SQL_FLOAT=6; -const SQL_GD_ANY_COLUMN=1; -const SQL_GD_ANY_ORDER=2; -const SQL_GETDATA_EXTENSIONS=81; -const SQL_IC_LOWER=2; -const SQL_IC_MIXED=4; -const SQL_IC_SENSITIVE=3; -const SQL_IC_UPPER=1; -const SQL_IDENTIFIER_CASE=28; -const SQL_IDENTIFIER_QUOTE_CHAR=29; - -const SQL_INDEX_ALL=1; -const SQL_INDEX_CLUSTERED=1; -const SQL_INDEX_HASHED=2; -const SQL_INDEX_OTHER=3; -const SQL_INDEX_UNIQUE=0; - -const SQL_INTEGER=4; -const SQL_INTEGRITY=73; -const SQL_INVALID_HANDLE=-2; - -const SQL_MAX_CATALOG_NAME_LEN=34; -const SQL_MAX_COLUMN_NAME_LEN=30; -const SQL_MAX_COLUMNS_IN_GROUP_BY=97; -const SQL_MAX_COLUMNS_IN_INDEX=98; -const SQL_MAX_COLUMNS_IN_ORDER_BY=99; -const SQL_MAX_COLUMNS_IN_SELECT=100; -const SQL_MAX_COLUMNS_IN_TABLE=101; -const SQL_MAX_CURSOR_NAME_LEN=31; -const SQL_MAX_INDEX_SIZE=102; -const SQL_MAX_MESSAGE_LENGTH=512; -const SQL_MAX_ROW_SIZE=104; -const SQL_MAX_SCHEMA_NAME_LEN=32; -const SQL_MAX_STATEMENT_LEN=105; -const SQL_MAX_TABLE_NAME_LEN=35; -const SQL_MAX_TABLES_IN_SELECT=106; -const SQL_MAX_USER_NAME_LEN=107; - -const SQL_MAXIMUM_CATALOG_NAME_LENGTH=SQL_MAX_CATALOG_NAME_LEN; -const SQL_MAXIMUM_COLUMN_NAME_LENGTH=SQL_MAX_COLUMN_NAME_LEN; -const SQL_MAXIMUM_COLUMNS_IN_GROUP_BY=SQL_MAX_COLUMNS_IN_GROUP_BY; -const SQL_MAXIMUM_COLUMNS_IN_INDEX=SQL_MAX_COLUMNS_IN_INDEX; -const SQL_MAXIMUM_COLUMNS_IN_ORDER_BY=SQL_MAX_COLUMNS_IN_ORDER_BY; -const SQL_MAXIMUM_COLUMNS_IN_SELECT=SQL_MAX_COLUMNS_IN_SELECT; -const SQL_MAXIMUM_CURSOR_NAME_LENGTH=SQL_MAX_CURSOR_NAME_LEN; -const SQL_MAXIMUM_INDEX_SIZE=SQL_MAX_INDEX_SIZE; -const SQL_MAXIMUM_ROW_SIZE=SQL_MAX_ROW_SIZE; -const SQL_MAXIMUM_SCHEMA_NAME_LENGTH=SQL_MAX_SCHEMA_NAME_LEN; -const SQL_MAXIMUM_STATEMENT_LENGTH=SQL_MAX_STATEMENT_LEN; -const SQL_MAXIMUM_TABLES_IN_SELECT=SQL_MAX_TABLES_IN_SELECT; -const SQL_MAXIMUM_USER_NAME_LENGTH=SQL_MAX_USER_NAME_LEN; - -const SQL_NC_HIGH=0; -const SQL_NC_LOW=1; -const SQL_NEED_DATA=99; -const SQL_NO_NULLS=0; -const SQL_NTS=-3; -const LONG SQL_NTSL=-3; -const SQL_NULL_COLLATION=85; -const SQL_NULL_DATA=-1; -const SQL_NULL_HDBC=0; -const SQL_NULL_HENV=0; -const SQL_NULL_HSTMT=0; -const SQL_NULLABLE=1; -const SQL_NULLABLE_UNKNOWN=2; -const SQL_NUMERIC=2; -const SQL_ORDER_BY_COLUMNS_IN_SELECT=90; -const SQL_PC_PSEUDO=2; -const SQL_PC_UNKNOWN=0; -const SQL_REAL=7; -const SQL_RESET_PARAMS=3; -const SQL_ROLLBACK=1; -const SQL_SCCO_LOCK=2; -const SQL_SCCO_OPT_ROWVER=4; -const SQL_SCCO_OPT_VALUES=8; -const SQL_SCCO_READ_ONLY=1; -const SQL_SCOPE_CURROW=0; -const SQL_SCOPE_SESSION=2; -const SQL_SCOPE_TRANSACTION=1; -const SQL_SCROLL_CONCURRENCY=43; -const SQL_SEARCH_PATTERN_ESCAPE=14; -const SQL_SERVER_NAME=13; -const SQL_SMALLINT=5; -const SQL_SPECIAL_CHARACTERS=94; -const SQL_STILL_EXECUTING=2; -//MACRO #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) - -const SQL_SUCCESS=0; -const SQL_SUCCESS_WITH_INFO=1; - -const SQL_TC_ALL=2; -const SQL_TC_DDL_COMMIT=3; -const SQL_TC_DDL_IGNORE=4; -const SQL_TC_DML=1; -const SQL_TC_NONE=0; - - -const SQL_TXN_CAPABLE=46; -const SQL_TXN_ISOLATION_OPTION=72; -const SQL_TXN_READ_COMMITTED=2; -const SQL_TXN_READ_UNCOMMITTED=1; -const SQL_TXN_REPEATABLE_READ=4; -const SQL_TXN_SERIALIZABLE=8; - -const SQL_TRANSACTION_CAPABLE=SQL_TXN_CAPABLE; -const SQL_TRANSACTION_ISOLATION_OPTION=SQL_TXN_ISOLATION_OPTION; -const SQL_TRANSACTION_READ_COMMITTED=SQL_TXN_READ_COMMITTED; -const SQL_TRANSACTION_READ_UNCOMMITTED=SQL_TXN_READ_UNCOMMITTED; -const SQL_TRANSACTION_REPEATABLE_READ=SQL_TXN_REPEATABLE_READ; -const SQL_TRANSACTION_SERIALIZABLE=SQL_TXN_SERIALIZABLE; - -const SQL_UNBIND=2; -const SQL_UNKNOWN_TYPE=0; -const SQL_USER_NAME=47; -const SQL_VARCHAR=12; - -static if (ODBCVER >= 0x0200) { - const SQL_AT_ADD_COLUMN = 1; - const SQL_AT_DROP_COLUMN = 2; -} - -static if (ODBCVER >= 0x0201) { - const SQL_OJ_LEFT = 1; - const SQL_OJ_RIGHT = 2; - const SQL_OJ_FULL = 4; - const SQL_OJ_NESTED = 8; - const SQL_OJ_NOT_ORDERED = 16; - const SQL_OJ_INNER = 32; - const SQL_OJ_ALL_COMPARISON_OPS = 64; -} - -static if (ODBCVER >= 0x0300) { - const SQL_AM_CONNECTION=1; - const SQL_AM_NONE=0; - const SQL_AM_STATEMENT=2; - const SQL_API_SQLALLOCHANDLE=1001; - const SQL_API_SQLBINDPARAM=1002; - const SQL_API_SQLCLOSECURSOR=1003; - const SQL_API_SQLCOLATTRIBUTE=6; - const SQL_API_SQLCOPYDESC=1004; - const SQL_API_SQLENDTRAN=1005; - const SQL_API_SQLFETCHSCROLL=1021; - const SQL_API_SQLFREEHANDLE=1006; - const SQL_API_SQLGETCONNECTATTR=1007; - const SQL_API_SQLGETDESCFIELD=1008; - const SQL_API_SQLGETDESCREC=1009; - const SQL_API_SQLGETDIAGFIELD=1010; - const SQL_API_SQLGETDIAGREC=1011; - const SQL_API_SQLGETENVATTR=1012; - const SQL_API_SQLGETSTMTATTR=1014; - const SQL_API_SQLSETCONNECTATTR=1016; - const SQL_API_SQLSETDESCFIELD=1017; - const SQL_API_SQLSETDESCREC=1018; - const SQL_API_SQLSETENVATTR=1019; - const SQL_API_SQLSETSTMTATTR=1020; - const SQL_ARD_TYPE=-99; - const SQL_AT_ADD_CONSTRAINT=8; - const SQL_ATTR_APP_PARAM_DESC=10011; - const SQL_ATTR_APP_ROW_DESC=10010; - const SQL_ATTR_AUTO_IPD=10001; - const SQL_ATTR_CURSOR_SCROLLABLE=-1; - const SQL_ATTR_CURSOR_SENSITIVITY=-2; - const SQL_ATTR_IMP_PARAM_DESC=10013; - const SQL_ATTR_IMP_ROW_DESC=10012; - const SQL_ATTR_METADATA_ID=10014; - const SQL_ATTR_OUTPUT_NTS=10001; - const SQL_CATALOG_NAME=10003; - const SQL_CODE_DATE=1; - const SQL_CODE_TIME=2; - const SQL_CODE_TIMESTAMP=3; - const SQL_COLLATION_SEQ=10004; - const SQL_CURSOR_SENSITIVITY=10001; - const SQL_DATE_LEN=10; - const SQL_DATETIME=9; - const SQL_DEFAULT=99; - - const SQL_DESC_ALLOC_AUTO=1; - const SQL_DESC_ALLOC_USER=2; - const SQL_DESC_ALLOC_TYPE=1099; - const SQL_DESC_COUNT=1001; - const SQL_DESC_TYPE=1002; - const SQL_DESC_LENGTH=1003; - const SQL_DESC_OCTET_LENGTH_PTR=1004; - const SQL_DESC_PRECISION=1005; - const SQL_DESC_SCALE=1006; - const SQL_DESC_DATETIME_INTERVAL_CODE=1007; - const SQL_DESC_NULLABLE=1008; - const SQL_DESC_INDICATOR_PTR=1009; - const SQL_DESC_DATA_PTR=1010; - const SQL_DESC_NAME=1011; - const SQL_DESC_UNNAMED=1012; - const SQL_DESC_OCTET_LENGTH=1013; - - const SQL_DESCRIBE_PARAMETER=10002; - - const SQL_DIAG_ALTER_DOMAIN=3; - const SQL_DIAG_ALTER_TABLE=4; - const SQL_DIAG_CALL=7; - const SQL_DIAG_CLASS_ORIGIN=8; - const SQL_DIAG_CONNECTION_NAME=10; - const SQL_DIAG_CREATE_ASSERTION=6; - const SQL_DIAG_CREATE_CHARACTER_SET=8; - const SQL_DIAG_CREATE_COLLATION=10; - const SQL_DIAG_CREATE_DOMAIN=23; - const SQL_DIAG_CREATE_INDEX=-1; - const SQL_DIAG_CREATE_SCHEMA=64; - const SQL_DIAG_CREATE_TABLE=77; - const SQL_DIAG_CREATE_TRANSLATION=79; - const SQL_DIAG_CREATE_VIEW=84; - const SQL_DIAG_DELETE_WHERE=19; - const SQL_DIAG_DROP_ASSERTION=24; - const SQL_DIAG_DROP_CHARACTER_SET=25; - const SQL_DIAG_DROP_COLLATION=26; - const SQL_DIAG_DROP_DOMAIN=27; - const SQL_DIAG_DROP_INDEX=(-2); - const SQL_DIAG_DROP_SCHEMA=31; - const SQL_DIAG_DROP_TABLE=32; - const SQL_DIAG_DROP_TRANSLATION=33; - const SQL_DIAG_DROP_VIEW=36; - const SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; - const SQL_DIAG_DYNAMIC_FUNCTION=7; - const SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; - const SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; - const SQL_DIAG_GRANT=48; - const SQL_DIAG_INSERT=50; - const SQL_DIAG_MESSAGE_TEXT=6; - const SQL_DIAG_NATIVE=5; - const SQL_DIAG_NUMBER=2; - const SQL_DIAG_RETURNCODE=1; - const SQL_DIAG_REVOKE=59; - const SQL_DIAG_ROW_COUNT=3; - const SQL_DIAG_SELECT_CURSOR=85; - const SQL_DIAG_SERVER_NAME=11; - const SQL_DIAG_SQLSTATE=4; - const SQL_DIAG_SUBCLASS_ORIGIN=9; - const SQL_DIAG_UNKNOWN_STATEMENT=0; - const SQL_DIAG_UPDATE_WHERE=82; - - const SQL_FALSE=0; - const SQL_HANDLE_DBC=2; - const SQL_HANDLE_DESC=4; - const SQL_HANDLE_ENV=1; - const SQL_HANDLE_STMT=3; - const SQL_INSENSITIVE=1; - const SQL_MAX_CONCURRENT_ACTIVITIES=1; - const SQL_MAX_DRIVER_CONNECTIONS=0; - const SQL_MAX_IDENTIFIER_LEN=10005; - const SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; - const SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; - const SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; - const SQL_NAMED=0; - const SQL_NO_DATA=100; - const SQL_NONSCROLLABLE=0; - const SQL_NULL_HANDLE=0L; - const SQL_NULL_HDESC=0; - const SQL_OJ_CAPABILITIES=115; - const SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; - const SQL_PC_NON_PSEUDO=1; - - const SQL_PRED_NONE=0; - const SQL_PRED_CHAR=1; - const SQL_PRED_BASIC=2; - - const SQL_ROW_IDENTIFIER=1; - const SQL_SCROLLABLE=1; - const SQL_SENSITIVE=2; - const SQL_TIME_LEN=8; - const SQL_TIMESTAMP_LEN=19; - const SQL_TRUE=1; - const SQL_TYPE_DATE=91; - const SQL_TYPE_TIME=92; - const SQL_TYPE_TIMESTAMP=93; - const SQL_UNNAMED=1; - const SQL_UNSPECIFIED=0; - const SQL_XOPEN_CLI_YEAR=10000; -}//#endif /* ODBCVER >= 0x0300 */ - -extern (Windows) { - deprecated { - SQLRETURN SQLAllocConnect(SQLHENV, SQLHDBC*); - SQLRETURN SQLAllocEnv(SQLHENV*); - SQLRETURN SQLAllocStmt(SQLHDBC, SQLHSTMT*); - SQLRETURN SQLError(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLFreeConnect(SQLHDBC); - SQLRETURN SQLFreeEnv(SQLHENV); - SQLRETURN SQLSetParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); - SQLRETURN SQLGetConnectOption(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLSetConnectOption(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLROWCOUNT); - } - SQLRETURN SQLBindCol(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLCancel(SQLHSTMT); - SQLRETURN SQLConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDescribeCol(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDisconnect(SQLHDBC); - SQLRETURN SQLExecDirect(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLExecute(SQLHSTMT); - SQLRETURN SQLFetch(SQLHSTMT); - SQLRETURN SQLFreeStmt(SQLHSTMT, SQLUSMALLINT); - SQLRETURN SQLGetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLNumResultCols(SQLHSTMT, SQLSMALLINT*); - SQLRETURN SQLPrepare(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLRowCount(SQLHSTMT, SQLLEN*); - SQLRETURN SQLSetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTransact(SQLHENV, SQLHDBC, SQLUSMALLINT); - SQLRETURN SQLColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLGetData(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLGetFunctions(SQLHDBC, SQLUSMALLINT, SQLUSMALLINT*); - SQLRETURN SQLGetInfo(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetTypeInfo(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLParamData(SQLHSTMT, SQLPOINTER*); - SQLRETURN SQLPutData(SQLHSTMT, SQLPOINTER, SQLLEN); - SQLRETURN SQLSpecialColumns(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatistics(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTables(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDataSources(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - - static if (ODBCVER >= 0x0300) { - SQLRETURN SQLAllocHandle(SQLSMALLINT, SQLHANDLE, SQLHANDLE*); - SQLRETURN SQLBindParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); - SQLRETURN SQLCloseCursor(SQLHSTMT); - SQLRETURN SQLColAttribute(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLCopyDesc(SQLHDESC, SQLHDESC); - SQLRETURN SQLEndTran(SQLSMALLINT, SQLHANDLE, SQLSMALLINT); - SQLRETURN SQLFetchScroll(SQLHSTMT, SQLSMALLINT, SQLROWOFFSET); - SQLRETURN SQLFreeHandle(SQLSMALLINT, SQLHANDLE); - SQLRETURN SQLGetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescRec(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, - SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDiagField(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRec(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); +/***********************************************************************\ +* sql.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sql; + +public import win32.sqltypes; +private import win32.windef; + +const ODBCVER = 0x0351; + +const SQL_ACCESSIBLE_PROCEDURES=20; +const SQL_ACCESSIBLE_TABLES=19; +const SQL_ALL_TYPES=0; +const SQL_ALTER_TABLE=86; +const SQL_API_SQLALLOCCONNECT=1; +const SQL_API_SQLALLOCENV=2; +const SQL_API_SQLALLOCSTMT=3; +const SQL_API_SQLBINDCOL=4; +const SQL_API_SQLCANCEL=5; +const SQL_API_SQLCOLUMNS=40; +const SQL_API_SQLCONNECT=7; +const SQL_API_SQLDATASOURCES=57; +const SQL_API_SQLDESCRIBECOL=8; +const SQL_API_SQLDISCONNECT=9; +const SQL_API_SQLERROR=10; +const SQL_API_SQLEXECDIRECT=11; +const SQL_API_SQLEXECUTE=12; +const SQL_API_SQLFETCH=13; +const SQL_API_SQLFREECONNECT=14; +const SQL_API_SQLFREEENV=15; +const SQL_API_SQLFREESTMT=16; +const SQL_API_SQLGETCONNECTOPTION=42; +const SQL_API_SQLGETCURSORNAME=17; +const SQL_API_SQLGETDATA=43; +const SQL_API_SQLGETFUNCTIONS=44; +const SQL_API_SQLGETINFO=45; +const SQL_API_SQLGETSTMTOPTION=46; +const SQL_API_SQLGETTYPEINFO=47; +const SQL_API_SQLNUMRESULTCOLS=18; +const SQL_API_SQLPARAMDATA=48; +const SQL_API_SQLPREPARE=19; +const SQL_API_SQLPUTDATA=49; +const SQL_API_SQLROWCOUNT=20; +const SQL_API_SQLSETCONNECTOPTION=50; +const SQL_API_SQLSETCURSORNAME=21; +const SQL_API_SQLSETPARAM=22; +const SQL_API_SQLSETSTMTOPTION=51; +const SQL_API_SQLSPECIALCOLUMNS=52; +const SQL_API_SQLSTATISTICS=53; +const SQL_API_SQLTABLES=54; +const SQL_API_SQLTRANSACT=23; + +const SQL_CB_DELETE=0; +const SQL_CB_CLOSE=1; +const SQL_CB_PRESERVE=2; + +const SQL_CHAR=1; +const SQL_CLOSE=0; +const SQL_COMMIT=0; +const SQL_CURSOR_COMMIT_BEHAVIOR=23; +const SQL_DATA_AT_EXEC=-2; +const SQL_DATA_SOURCE_NAME=2; +const SQL_DATA_SOURCE_READ_ONLY=25; +const SQL_DBMS_NAME=17; +const SQL_DBMS_VER=18; +const SQL_DECIMAL=3; +const SQL_DEFAULT_TXN_ISOLATION=26; +const SQL_DOUBLE=8; +const SQL_DROP=1; +const SQL_ERROR=-1; + +const SQL_FD_FETCH_NEXT=1; +const SQL_FD_FETCH_FIRST=2; +const SQL_FD_FETCH_LAST=4; +const SQL_FD_FETCH_PRIOR=8; +const SQL_FD_FETCH_ABSOLUTE=16; +const SQL_FD_FETCH_RELATIVE=32; + +const SQL_FETCH_ABSOLUTE=5; +const SQL_FETCH_DIRECTION=8; +const SQL_FETCH_FIRST=2; +const SQL_FETCH_LAST=3; +const SQL_FETCH_NEXT=1; +const SQL_FETCH_PRIOR=4; +const SQL_FETCH_RELATIVE=6; +const SQL_FLOAT=6; +const SQL_GD_ANY_COLUMN=1; +const SQL_GD_ANY_ORDER=2; +const SQL_GETDATA_EXTENSIONS=81; +const SQL_IC_LOWER=2; +const SQL_IC_MIXED=4; +const SQL_IC_SENSITIVE=3; +const SQL_IC_UPPER=1; +const SQL_IDENTIFIER_CASE=28; +const SQL_IDENTIFIER_QUOTE_CHAR=29; + +const SQL_INDEX_ALL=1; +const SQL_INDEX_CLUSTERED=1; +const SQL_INDEX_HASHED=2; +const SQL_INDEX_OTHER=3; +const SQL_INDEX_UNIQUE=0; + +const SQL_INTEGER=4; +const SQL_INTEGRITY=73; +const SQL_INVALID_HANDLE=-2; + +const SQL_MAX_CATALOG_NAME_LEN=34; +const SQL_MAX_COLUMN_NAME_LEN=30; +const SQL_MAX_COLUMNS_IN_GROUP_BY=97; +const SQL_MAX_COLUMNS_IN_INDEX=98; +const SQL_MAX_COLUMNS_IN_ORDER_BY=99; +const SQL_MAX_COLUMNS_IN_SELECT=100; +const SQL_MAX_COLUMNS_IN_TABLE=101; +const SQL_MAX_CURSOR_NAME_LEN=31; +const SQL_MAX_INDEX_SIZE=102; +const SQL_MAX_MESSAGE_LENGTH=512; +const SQL_MAX_ROW_SIZE=104; +const SQL_MAX_SCHEMA_NAME_LEN=32; +const SQL_MAX_STATEMENT_LEN=105; +const SQL_MAX_TABLE_NAME_LEN=35; +const SQL_MAX_TABLES_IN_SELECT=106; +const SQL_MAX_USER_NAME_LEN=107; + +const SQL_MAXIMUM_CATALOG_NAME_LENGTH=SQL_MAX_CATALOG_NAME_LEN; +const SQL_MAXIMUM_COLUMN_NAME_LENGTH=SQL_MAX_COLUMN_NAME_LEN; +const SQL_MAXIMUM_COLUMNS_IN_GROUP_BY=SQL_MAX_COLUMNS_IN_GROUP_BY; +const SQL_MAXIMUM_COLUMNS_IN_INDEX=SQL_MAX_COLUMNS_IN_INDEX; +const SQL_MAXIMUM_COLUMNS_IN_ORDER_BY=SQL_MAX_COLUMNS_IN_ORDER_BY; +const SQL_MAXIMUM_COLUMNS_IN_SELECT=SQL_MAX_COLUMNS_IN_SELECT; +const SQL_MAXIMUM_CURSOR_NAME_LENGTH=SQL_MAX_CURSOR_NAME_LEN; +const SQL_MAXIMUM_INDEX_SIZE=SQL_MAX_INDEX_SIZE; +const SQL_MAXIMUM_ROW_SIZE=SQL_MAX_ROW_SIZE; +const SQL_MAXIMUM_SCHEMA_NAME_LENGTH=SQL_MAX_SCHEMA_NAME_LEN; +const SQL_MAXIMUM_STATEMENT_LENGTH=SQL_MAX_STATEMENT_LEN; +const SQL_MAXIMUM_TABLES_IN_SELECT=SQL_MAX_TABLES_IN_SELECT; +const SQL_MAXIMUM_USER_NAME_LENGTH=SQL_MAX_USER_NAME_LEN; + +const SQL_NC_HIGH=0; +const SQL_NC_LOW=1; +const SQL_NEED_DATA=99; +const SQL_NO_NULLS=0; +const SQL_NTS=-3; +const LONG SQL_NTSL=-3; +const SQL_NULL_COLLATION=85; +const SQL_NULL_DATA=-1; +const SQL_NULL_HDBC=0; +const SQL_NULL_HENV=0; +const SQL_NULL_HSTMT=0; +const SQL_NULLABLE=1; +const SQL_NULLABLE_UNKNOWN=2; +const SQL_NUMERIC=2; +const SQL_ORDER_BY_COLUMNS_IN_SELECT=90; +const SQL_PC_PSEUDO=2; +const SQL_PC_UNKNOWN=0; +const SQL_REAL=7; +const SQL_RESET_PARAMS=3; +const SQL_ROLLBACK=1; +const SQL_SCCO_LOCK=2; +const SQL_SCCO_OPT_ROWVER=4; +const SQL_SCCO_OPT_VALUES=8; +const SQL_SCCO_READ_ONLY=1; +const SQL_SCOPE_CURROW=0; +const SQL_SCOPE_SESSION=2; +const SQL_SCOPE_TRANSACTION=1; +const SQL_SCROLL_CONCURRENCY=43; +const SQL_SEARCH_PATTERN_ESCAPE=14; +const SQL_SERVER_NAME=13; +const SQL_SMALLINT=5; +const SQL_SPECIAL_CHARACTERS=94; +const SQL_STILL_EXECUTING=2; +//MACRO #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) + +const SQL_SUCCESS=0; +const SQL_SUCCESS_WITH_INFO=1; + +const SQL_TC_ALL=2; +const SQL_TC_DDL_COMMIT=3; +const SQL_TC_DDL_IGNORE=4; +const SQL_TC_DML=1; +const SQL_TC_NONE=0; + + +const SQL_TXN_CAPABLE=46; +const SQL_TXN_ISOLATION_OPTION=72; +const SQL_TXN_READ_COMMITTED=2; +const SQL_TXN_READ_UNCOMMITTED=1; +const SQL_TXN_REPEATABLE_READ=4; +const SQL_TXN_SERIALIZABLE=8; + +const SQL_TRANSACTION_CAPABLE=SQL_TXN_CAPABLE; +const SQL_TRANSACTION_ISOLATION_OPTION=SQL_TXN_ISOLATION_OPTION; +const SQL_TRANSACTION_READ_COMMITTED=SQL_TXN_READ_COMMITTED; +const SQL_TRANSACTION_READ_UNCOMMITTED=SQL_TXN_READ_UNCOMMITTED; +const SQL_TRANSACTION_REPEATABLE_READ=SQL_TXN_REPEATABLE_READ; +const SQL_TRANSACTION_SERIALIZABLE=SQL_TXN_SERIALIZABLE; + +const SQL_UNBIND=2; +const SQL_UNKNOWN_TYPE=0; +const SQL_USER_NAME=47; +const SQL_VARCHAR=12; + +static if (ODBCVER >= 0x0200) { + const SQL_AT_ADD_COLUMN = 1; + const SQL_AT_DROP_COLUMN = 2; +} + +static if (ODBCVER >= 0x0201) { + const SQL_OJ_LEFT = 1; + const SQL_OJ_RIGHT = 2; + const SQL_OJ_FULL = 4; + const SQL_OJ_NESTED = 8; + const SQL_OJ_NOT_ORDERED = 16; + const SQL_OJ_INNER = 32; + const SQL_OJ_ALL_COMPARISON_OPS = 64; +} + +static if (ODBCVER >= 0x0300) { + const SQL_AM_CONNECTION=1; + const SQL_AM_NONE=0; + const SQL_AM_STATEMENT=2; + const SQL_API_SQLALLOCHANDLE=1001; + const SQL_API_SQLBINDPARAM=1002; + const SQL_API_SQLCLOSECURSOR=1003; + const SQL_API_SQLCOLATTRIBUTE=6; + const SQL_API_SQLCOPYDESC=1004; + const SQL_API_SQLENDTRAN=1005; + const SQL_API_SQLFETCHSCROLL=1021; + const SQL_API_SQLFREEHANDLE=1006; + const SQL_API_SQLGETCONNECTATTR=1007; + const SQL_API_SQLGETDESCFIELD=1008; + const SQL_API_SQLGETDESCREC=1009; + const SQL_API_SQLGETDIAGFIELD=1010; + const SQL_API_SQLGETDIAGREC=1011; + const SQL_API_SQLGETENVATTR=1012; + const SQL_API_SQLGETSTMTATTR=1014; + const SQL_API_SQLSETCONNECTATTR=1016; + const SQL_API_SQLSETDESCFIELD=1017; + const SQL_API_SQLSETDESCREC=1018; + const SQL_API_SQLSETENVATTR=1019; + const SQL_API_SQLSETSTMTATTR=1020; + const SQL_ARD_TYPE=-99; + const SQL_AT_ADD_CONSTRAINT=8; + const SQL_ATTR_APP_PARAM_DESC=10011; + const SQL_ATTR_APP_ROW_DESC=10010; + const SQL_ATTR_AUTO_IPD=10001; + const SQL_ATTR_CURSOR_SCROLLABLE=-1; + const SQL_ATTR_CURSOR_SENSITIVITY=-2; + const SQL_ATTR_IMP_PARAM_DESC=10013; + const SQL_ATTR_IMP_ROW_DESC=10012; + const SQL_ATTR_METADATA_ID=10014; + const SQL_ATTR_OUTPUT_NTS=10001; + const SQL_CATALOG_NAME=10003; + const SQL_CODE_DATE=1; + const SQL_CODE_TIME=2; + const SQL_CODE_TIMESTAMP=3; + const SQL_COLLATION_SEQ=10004; + const SQL_CURSOR_SENSITIVITY=10001; + const SQL_DATE_LEN=10; + const SQL_DATETIME=9; + const SQL_DEFAULT=99; + + const SQL_DESC_ALLOC_AUTO=1; + const SQL_DESC_ALLOC_USER=2; + const SQL_DESC_ALLOC_TYPE=1099; + const SQL_DESC_COUNT=1001; + const SQL_DESC_TYPE=1002; + const SQL_DESC_LENGTH=1003; + const SQL_DESC_OCTET_LENGTH_PTR=1004; + const SQL_DESC_PRECISION=1005; + const SQL_DESC_SCALE=1006; + const SQL_DESC_DATETIME_INTERVAL_CODE=1007; + const SQL_DESC_NULLABLE=1008; + const SQL_DESC_INDICATOR_PTR=1009; + const SQL_DESC_DATA_PTR=1010; + const SQL_DESC_NAME=1011; + const SQL_DESC_UNNAMED=1012; + const SQL_DESC_OCTET_LENGTH=1013; + + const SQL_DESCRIBE_PARAMETER=10002; + + const SQL_DIAG_ALTER_DOMAIN=3; + const SQL_DIAG_ALTER_TABLE=4; + const SQL_DIAG_CALL=7; + const SQL_DIAG_CLASS_ORIGIN=8; + const SQL_DIAG_CONNECTION_NAME=10; + const SQL_DIAG_CREATE_ASSERTION=6; + const SQL_DIAG_CREATE_CHARACTER_SET=8; + const SQL_DIAG_CREATE_COLLATION=10; + const SQL_DIAG_CREATE_DOMAIN=23; + const SQL_DIAG_CREATE_INDEX=-1; + const SQL_DIAG_CREATE_SCHEMA=64; + const SQL_DIAG_CREATE_TABLE=77; + const SQL_DIAG_CREATE_TRANSLATION=79; + const SQL_DIAG_CREATE_VIEW=84; + const SQL_DIAG_DELETE_WHERE=19; + const SQL_DIAG_DROP_ASSERTION=24; + const SQL_DIAG_DROP_CHARACTER_SET=25; + const SQL_DIAG_DROP_COLLATION=26; + const SQL_DIAG_DROP_DOMAIN=27; + const SQL_DIAG_DROP_INDEX=(-2); + const SQL_DIAG_DROP_SCHEMA=31; + const SQL_DIAG_DROP_TABLE=32; + const SQL_DIAG_DROP_TRANSLATION=33; + const SQL_DIAG_DROP_VIEW=36; + const SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; + const SQL_DIAG_DYNAMIC_FUNCTION=7; + const SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; + const SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; + const SQL_DIAG_GRANT=48; + const SQL_DIAG_INSERT=50; + const SQL_DIAG_MESSAGE_TEXT=6; + const SQL_DIAG_NATIVE=5; + const SQL_DIAG_NUMBER=2; + const SQL_DIAG_RETURNCODE=1; + const SQL_DIAG_REVOKE=59; + const SQL_DIAG_ROW_COUNT=3; + const SQL_DIAG_SELECT_CURSOR=85; + const SQL_DIAG_SERVER_NAME=11; + const SQL_DIAG_SQLSTATE=4; + const SQL_DIAG_SUBCLASS_ORIGIN=9; + const SQL_DIAG_UNKNOWN_STATEMENT=0; + const SQL_DIAG_UPDATE_WHERE=82; + + const SQL_FALSE=0; + const SQL_HANDLE_DBC=2; + const SQL_HANDLE_DESC=4; + const SQL_HANDLE_ENV=1; + const SQL_HANDLE_STMT=3; + const SQL_INSENSITIVE=1; + const SQL_MAX_CONCURRENT_ACTIVITIES=1; + const SQL_MAX_DRIVER_CONNECTIONS=0; + const SQL_MAX_IDENTIFIER_LEN=10005; + const SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; + const SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; + const SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; + const SQL_NAMED=0; + const SQL_NO_DATA=100; + const SQL_NONSCROLLABLE=0; + const SQL_NULL_HANDLE=0L; + const SQL_NULL_HDESC=0; + const SQL_OJ_CAPABILITIES=115; + const SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; + const SQL_PC_NON_PSEUDO=1; + + const SQL_PRED_NONE=0; + const SQL_PRED_CHAR=1; + const SQL_PRED_BASIC=2; + + const SQL_ROW_IDENTIFIER=1; + const SQL_SCROLLABLE=1; + const SQL_SENSITIVE=2; + const SQL_TIME_LEN=8; + const SQL_TIMESTAMP_LEN=19; + const SQL_TRUE=1; + const SQL_TYPE_DATE=91; + const SQL_TYPE_TIME=92; + const SQL_TYPE_TIMESTAMP=93; + const SQL_UNNAMED=1; + const SQL_UNSPECIFIED=0; + const SQL_XOPEN_CLI_YEAR=10000; +}//#endif /* ODBCVER >= 0x0300 */ + +extern (Windows) { + deprecated { + SQLRETURN SQLAllocConnect(SQLHENV, SQLHDBC*); + SQLRETURN SQLAllocEnv(SQLHENV*); + SQLRETURN SQLAllocStmt(SQLHDBC, SQLHSTMT*); + SQLRETURN SQLError(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLFreeConnect(SQLHDBC); + SQLRETURN SQLFreeEnv(SQLHENV); + SQLRETURN SQLSetParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLGetConnectOption(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLSetConnectOption(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLROWCOUNT); + } + SQLRETURN SQLBindCol(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLCancel(SQLHSTMT); + SQLRETURN SQLConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDescribeCol(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDisconnect(SQLHDBC); + SQLRETURN SQLExecDirect(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecute(SQLHSTMT); + SQLRETURN SQLFetch(SQLHSTMT); + SQLRETURN SQLFreeStmt(SQLHSTMT, SQLUSMALLINT); + SQLRETURN SQLGetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLNumResultCols(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLPrepare(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLRowCount(SQLHSTMT, SQLLEN*); + SQLRETURN SQLSetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTransact(SQLHENV, SQLHDBC, SQLUSMALLINT); + SQLRETURN SQLColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLGetData(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLGetFunctions(SQLHDBC, SQLUSMALLINT, SQLUSMALLINT*); + SQLRETURN SQLGetInfo(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfo(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLParamData(SQLHSTMT, SQLPOINTER*); + SQLRETURN SQLPutData(SQLHSTMT, SQLPOINTER, SQLLEN); + SQLRETURN SQLSpecialColumns(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatistics(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTables(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSources(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + + static if (ODBCVER >= 0x0300) { + SQLRETURN SQLAllocHandle(SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + SQLRETURN SQLBindParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLCloseCursor(SQLHSTMT); + SQLRETURN SQLColAttribute(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLCopyDesc(SQLHDESC, SQLHDESC); + SQLRETURN SQLEndTran(SQLSMALLINT, SQLHANDLE, SQLSMALLINT); + SQLRETURN SQLFetchScroll(SQLHSTMT, SQLSMALLINT, SQLROWOFFSET); + SQLRETURN SQLFreeHandle(SQLSMALLINT, SQLHANDLE); + SQLRETURN SQLGetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescRec(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, + SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagField(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRec(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, - SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); - SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - }/* (ODBCVER >= 0x0300) */ + SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); + SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + }/* (ODBCVER >= 0x0300) */ } Index: src/win32/sqlext.d ================================================================== --- src/win32/sqlext.d +++ src/win32/sqlext.d @@ -1,1295 +1,1295 @@ -/***********************************************************************\ -* sqlext.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.sqlext; - -/* Conversion notes: - The MinGW file was a horrible mess. All of the #defines were sorted alphabetically, - which is crazy. This file needs a lot of work. - In MinGW, sqlext #includes sqlucode, but sqlucode #includes sqlext, - creating a circular dependency! -*/ - -public import win32.sql; -private import win32.windef; - -const SQL_SPEC_MAJOR = 3; -const SQL_SPEC_MINOR = 51; -const char[] SQL_SPEC_STRING = "03.51"; -const SQL_ACCESS_MODE = 101; -const SQL_ACTIVE_CONNECTIONS = 0; -const SQL_ACTIVE_STATEMENTS = 1; - -const SQL_DATE = 9; -const SQL_TIME = 10; -const SQL_SIGNED_OFFSET = -20; -const SQL_TINYINT = -6; -const SQL_TIMESTAMP = 11; -const SQL_UNSIGNED_OFFSET = -22; - -const SQL_ADD = 4; -const SQL_ALL_EXCEPT_LIKE = 2; - -const SQL_API_ALL_FUNCTIONS = 0; -const SQL_API_SQLCOLATTRIBUTES = 6; -const SQL_API_SQLDRIVERCONNECT = 41; -const SQL_API_SQLBROWSECONNECT = 55; -const SQL_API_SQLCOLUMNPRIVILEGES = 56; -const SQL_API_SQLDESCRIBEPARAM = 58; -const SQL_API_SQLEXTENDEDFETCH = 59; -const SQL_API_SQLFOREIGNKEYS = 60; -const SQL_API_SQLMORERESULTS = 61; -const SQL_API_SQLNATIVESQL = 62; -const SQL_API_SQLNUMPARAMS = 63; -const SQL_API_SQLPARAMOPTIONS = 64; -const SQL_API_SQLPRIMARYKEYS = 65; -const SQL_API_SQLPROCEDURECOLUMNS = 66; -const SQL_API_SQLPROCEDURES = 67; -const SQL_API_SQLSETPOS = 68; -const SQL_API_SQLSETSCROLLOPTIONS = 69; -const SQL_API_SQLTABLEPRIVILEGES = 70; -const SQL_API_SQLDRIVERS = 71; -const SQL_API_SQLBINDPARAMETER = 72; -const SQL_API_LOADBYORDINAL = 199; - -const SQL_ASYNC_ENABLE = 4; -const SQL_ASYNC_ENABLE_OFF = 0UL; -const SQL_ASYNC_ENABLE_ON = 1UL; -const SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; - -const SQL_ATTR_CONNECTION_DEAD = 1209; -const SQL_ATTR_READONLY = 0; -const SQL_ATTR_READWRITE_UNKNOWN = 2; -const SQL_ATTR_WRITE = 1; - -const SQL_AUTOCOMMIT = 102; -const SQL_AUTOCOMMIT_OFF = 0UL; -const SQL_AUTOCOMMIT_ON = 1UL; -const SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; -const SQL_BEST_ROWID = 1; -const SQL_BIGINT = -5; -const SQL_BINARY = -2; -const SQL_BIND_BY_COLUMN = 0UL; -const SQL_BIND_TYPE = 5; -const SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; -const SQL_BIT = -7; - -const SQL_BOOKMARK_PERSISTENCE = 82; - -// for BOOKMARK_PERSISTENCE -const SQL_BP_CLOSE = 1; -const SQL_BP_DELETE = 2; -const SQL_BP_DROP = 4; -const SQL_BP_TRANSACTION = 8; -const SQL_BP_UPDATE = 16; -const SQL_BP_OTHER_HSTMT = 32; -const SQL_BP_SCROLL = 64; - -const SQL_C_BINARY = SQL_BINARY; -const SQL_C_BIT = SQL_BIT; -const SQL_C_CHAR = SQL_CHAR; -const SQL_C_DATE = SQL_DATE; -const SQL_C_DOUBLE = SQL_DOUBLE; -const SQL_C_FLOAT = SQL_REAL; -const SQL_C_LONG = SQL_INTEGER; -const SQL_C_SHORT = SQL_SMALLINT; -const SQL_C_SLONG = SQL_C_LONG+SQL_SIGNED_OFFSET; -const SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; -const SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; -const SQL_C_TIME = SQL_TIME; -const SQL_C_TIMESTAMP = SQL_TIMESTAMP; -const SQL_C_TINYINT = SQL_TINYINT; -const SQL_C_ULONG = SQL_C_LONG+SQL_UNSIGNED_OFFSET; -const SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; -const SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; -const SQL_C_BOOKMARK = SQL_C_ULONG; -const SQL_C_DEFAULT = 99; - -const SQL_CASCADE = 0; -const SQL_CB_NON_NULL = 1; -const SQL_CB_NULL = 0; -deprecated { -const SQL_CC_CLOSE = SQL_CB_CLOSE;/* deprecated */ -const SQL_CC_DELETE = SQL_CB_DELETE;/* deprecated */ -const SQL_CC_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ -} -const SQL_CD_FALSE = 0L; -const SQL_CD_TRUE = 1L; - -const SQL_CN_ANY = 2; -const SQL_CN_DIFFERENT = 1; -const SQL_CN_NONE = 0; - -const SQL_COLUMN_ALIAS = 87; - -const SQL_COLUMN_COUNT = 0; -const SQL_COLUMN_NAME = 1; -const SQL_COLUMN_DISPLAY_SIZE = 6; -const SQL_COLUMN_LABEL = 18; -const SQL_COLUMN_LENGTH = 3; -const SQL_COLUMN_MONEY = 9; -const SQL_COLUMN_NULLABLE = 7; -const SQL_COLUMN_OWNER_NAME = 16; -const SQL_COLUMN_PRECISION = 4; -const SQL_COLUMN_QUALIFIER_NAME = 17; -const SQL_COLUMN_SCALE = 5; -const SQL_COLUMN_UNSIGNED = 8; -const SQL_COLUMN_UPDATABLE = 10; -const SQL_COLUMN_AUTO_INCREMENT = 11; -const SQL_COLUMN_CASE_SENSITIVE = 12; -const SQL_COLUMN_SEARCHABLE = 13; -const SQL_COLUMN_TYPE = 2; -const SQL_COLUMN_TYPE_NAME = 14; -const SQL_COLUMN_TABLE_NAME = 15; - -const SQL_CONCAT_NULL_BEHAVIOR = 22; - -const SQL_CONCUR_READ_ONLY = 1; -const SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; -const SQL_CONCUR_LOCK = 2; -const SQL_CONCUR_ROWVER = 3; -const SQL_CONCUR_TIMESTAMP = SQL_CONCUR_ROWVER;/* deprecated */ -const SQL_CONCUR_VALUES = 4; - -const SQL_CONCURRENCY = 7; -const SQL_CONVERT_BIGINT = 53; -const SQL_CONVERT_BINARY = 54; -const SQL_CONVERT_BIT = 55; -const SQL_CONVERT_CHAR = 56; -const SQL_CONVERT_DATE = 57; -const SQL_CONVERT_DECIMAL = 58; -const SQL_CONVERT_DOUBLE = 59; -const SQL_CONVERT_FLOAT = 60; -const SQL_CONVERT_FUNCTIONS = 48; -const SQL_CONVERT_INTEGER = 61; -const SQL_CONVERT_LONGVARBINARY = 71; -const SQL_CONVERT_LONGVARCHAR = 62; -const SQL_CONVERT_NUMERIC = 63; -const SQL_CONVERT_REAL = 64; -const SQL_CONVERT_SMALLINT = 65; -const SQL_CONVERT_TIME = 66; -const SQL_CONVERT_TIMESTAMP = 67; -const SQL_CONVERT_TINYINT = 68; -const SQL_CONVERT_VARBINARY = 69; -const SQL_CONVERT_VARCHAR = 70; -const SQL_CORRELATION_NAME = 74; -const SQL_CR_CLOSE = SQL_CB_CLOSE;/* deprecated */ -const SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ -const SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ - -enum : ULONG { - SQL_CUR_USE_IF_NEEDED = 0, - SQL_CUR_USE_ODBC, - SQL_CUR_USE_DRIVER, - SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER -} - -const SQL_CURRENT_QUALIFIER = 109; -const SQL_CURSOR_DYNAMIC = 2UL; -const SQL_CURSOR_FORWARD_ONLY = 0UL; -const SQL_CURSOR_KEYSET_DRIVEN = 1UL; -const SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; -const SQL_CURSOR_STATIC = 3UL; -const SQL_CURSOR_TYPE = 6; -const SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; - -const SQL_CV_CASCADED = 0x00000004L; -const SQL_CV_CHECK_OPTION = 0x00000002L; -const SQL_CV_CREATE_VIEW = 0x00000001L; -const SQL_CV_LOCAL = 0x00000008L; -const SQL_CVT_BIGINT = 0x00004000L; -const SQL_CVT_BINARY = 0x00000400L; -const SQL_CVT_BIT = 0x00001000L; -const SQL_CVT_CHAR = 0x00000001L; -const SQL_CVT_DATE = 0x00008000L; -const SQL_CVT_DECIMAL = 0x00000004L; -const SQL_CVT_DOUBLE = 0x00000080L; -const SQL_CVT_FLOAT = 0x00000020L; -const SQL_CVT_INTEGER = 0x00000008L; -const SQL_CVT_LONGVARBINARY = 0x00040000L; -const SQL_CVT_LONGVARCHAR = 0x00000200L; -const SQL_CVT_NUMERIC = 0x00000002L; -const SQL_CVT_REAL = 0x00000040L; -const SQL_CVT_SMALLINT = 0x00000010L; -const SQL_CVT_TIME = 0x00010000L; -const SQL_CVT_TIMESTAMP = 0x00020000L; -const SQL_CVT_TINYINT = 0x00002000L; -const SQL_CVT_VARBINARY = 0x00000800L; -const SQL_CVT_VARCHAR = 0x00000100L; -const SQL_DATABASE_NAME = 16;/* deprecated */ - -const SQL_DEFAULT_PARAM = -5; -const SQL_DELETE = 3; - -const SQL_DRIVER_COMPLETE = 1; -const SQL_DRIVER_COMPLETE_REQUIRED = 3; -const SQL_DRIVER_HDBC = 3; -const SQL_DRIVER_HENV = 4; -const SQL_DRIVER_HLIB = 76; -const SQL_DRIVER_HSTMT = 5; -const SQL_DRIVER_NAME = 6; -const SQL_DRIVER_NOPROMPT = 0; -const SQL_DRIVER_ODBC_VER = 77; -const SQL_DRIVER_PROMPT = 2; -const SQL_DRIVER_VER = 7; - -const SQL_DTC_ENLIST_EXPENSIVE = 1; -const SQL_DTC_UNENLIST_EXPENSIVE = 2; -const SQL_DTC_TRANSITION_COST = 1750; -const SQL_ENSURE = 1; -const SQL_ENTIRE_ROWSET = 0; -const SQL_EXPRESSIONS_IN_ORDERBY = 27; -const SQL_FD_FETCH_BOOKMARK = 128; -const SQL_FD_FETCH_PREV = SQL_FD_FETCH_PRIOR;/* deprecated */ -const SQL_FD_FETCH_RESUME = 64; -const SQL_FETCH_BOOKMARK = 8; -const SQL_FETCH_PREV = SQL_FETCH_PRIOR;/* deprecated */ -const SQL_FETCH_RESUME = 7;/* deprecated */ - -const SQL_FILE_NOT_SUPPORTED = 0x0000; -const SQL_FILE_TABLE = 0x0001; -const SQL_FILE_QUALIFIER = 0x0002; -const SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; -const SQL_FILE_USAGE = 84; - -const SQL_FN_CVT_CONVERT = 0x00000001L; -const SQL_FN_NUM_ABS = 0x00000001L; -const SQL_FN_NUM_ACOS = 0x00000002L; -const SQL_FN_NUM_ASIN = 0x00000004L; -const SQL_FN_NUM_ATAN = 0x00000008L; -const SQL_FN_NUM_ATAN2 = 0x00000010L; -const SQL_FN_NUM_CEILING = 0x00000020L; -const SQL_FN_NUM_COS = 0x00000040L; -const SQL_FN_NUM_COT = 0x00000080L; -const SQL_FN_NUM_DEGREES = 0x00040000L; -const SQL_FN_NUM_EXP = 0x00000100L; -const SQL_FN_NUM_FLOOR = 0x00000200L; -const SQL_FN_NUM_LOG = 0x00000400L; -const SQL_FN_NUM_LOG10 = 0x00080000L; -const SQL_FN_NUM_MOD = 0x00000800L; -const SQL_FN_NUM_PI = 0x00010000L; -const SQL_FN_NUM_POWER = 0x00100000L; -const SQL_FN_NUM_RADIANS = 0x00200000L; -const SQL_FN_NUM_RAND = 0x00020000L; -const SQL_FN_NUM_ROUND = 0x00400000L; -const SQL_FN_NUM_SIGN = 0x00001000L; -const SQL_FN_NUM_SIN = 0x00002000L; -const SQL_FN_NUM_SQRT = 0x00004000L; -const SQL_FN_NUM_TAN = 0x00008000L; -const SQL_FN_NUM_TRUNCATE = 0x00800000L; -const SQL_FN_STR_ASCII = 0x00002000L; -const SQL_FN_STR_CHAR = 0x00004000L; -const SQL_FN_STR_CONCAT = 0x00000001L; -const SQL_FN_STR_DIFFERENCE = 0x00008000L; -const SQL_FN_STR_INSERT = 0x00000002L; -const SQL_FN_STR_LCASE = 0x00000040L; -const SQL_FN_STR_LEFT = 0x00000004L; -const SQL_FN_STR_LENGTH = 0x00000010L; -const SQL_FN_STR_LOCATE = 0x00000020L; -const SQL_FN_STR_LOCATE_2 = 0x00010000L; -const SQL_FN_STR_LTRIM = 0x00000008L; -const SQL_FN_STR_REPEAT = 0x00000080L; -const SQL_FN_STR_REPLACE = 0x00000100L; -const SQL_FN_STR_RIGHT = 0x00000200L; -const SQL_FN_STR_RTRIM = 0x00000400L; -const SQL_FN_STR_SOUNDEX = 0x00020000L; -const SQL_FN_STR_SPACE = 0x00040000L; -const SQL_FN_STR_SUBSTRING = 0x00000800L; -const SQL_FN_STR_UCASE = 0x00001000L; -const SQL_FN_SYS_DBNAME = 0x00000002L; -const SQL_FN_SYS_IFNULL = 0x00000004L; -const SQL_FN_SYS_USERNAME = 0x00000001L; -const SQL_FN_TD_CURDATE = 0x00000002L; -const SQL_FN_TD_CURTIME = 0x00000200L; -const SQL_FN_TD_DAYNAME = 0x00008000L; -const SQL_FN_TD_DAYOFMONTH = 0x00000004L; -const SQL_FN_TD_DAYOFWEEK = 0x00000008L; -const SQL_FN_TD_DAYOFYEAR = 0x00000010L; -const SQL_FN_TD_HOUR = 0x00000400L; -const SQL_FN_TD_MINUTE = 0x00000800L; -const SQL_FN_TD_MONTH = 0x00000020L; -const SQL_FN_TD_MONTHNAME = 0x00010000L; -const SQL_FN_TD_NOW = 0x00000001L; -const SQL_FN_TD_QUARTER = 0x00000040L; -const SQL_FN_TD_SECOND = 0x00001000L; -const SQL_FN_TD_TIMESTAMPADD = 0x00002000L; -const SQL_FN_TD_TIMESTAMPDIFF = 0x00004000L; -const SQL_FN_TD_WEEK = 0x00000080L; -const SQL_FN_TD_YEAR = 0x00000100L; -const SQL_FN_TSI_DAY = 0x00000010L; -const SQL_FN_TSI_FRAC_SECOND = 0x00000001L; -const SQL_FN_TSI_HOUR = 0x00000008L; -const SQL_FN_TSI_MINUTE = 0x00000004L; -const SQL_FN_TSI_MONTH = 0x00000040L; -const SQL_FN_TSI_QUARTER = 0x00000080L; -const SQL_FN_TSI_SECOND = 0x00000002L; -const SQL_FN_TSI_WEEK = 0x00000020L; -const SQL_FN_TSI_YEAR = 0x00000100L; -const SQL_GB_GROUP_BY_CONTAINS_SELECT = 2; -const SQL_GB_GROUP_BY_EQUALS_SELECT = 1; -const SQL_GB_NO_RELATION = 3; -const SQL_GB_NOT_SUPPORTED = 0; -const SQL_GD_BLOCK = 4; -const SQL_GD_BOUND = 8; -const SQL_GET_BOOKMARK = 13; -const SQL_GROUP_BY = 88; -const SQL_IGNORE = -6; -const SQL_INFO_FIRST = 0; -const SQL_KEYSET_SIZE = 8; -const SQL_KEYSET_SIZE_DEFAULT = 0UL; -const SQL_KEYWORDS = 89; -const SQL_LCK_EXCLUSIVE = 2; -const SQL_LCK_NO_CHANGE = 1; -const SQL_LCK_UNLOCK = 4; - -const SQL_LEN_BINARY_ATTR_OFFSET = -100; -const SQL_LEN_DATA_AT_EXEC_OFFSET = -100; -//MACRO #define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET) -//MACRO #define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) - -const SQL_LIKE_ESCAPE_CLAUSE = 113; -const SQL_LIKE_ONLY = 1; -const SQL_LOCK_EXCLUSIVE = 1; -const SQL_LOCK_NO_CHANGE = 0; -const SQL_LOCK_TYPES = 78; -const SQL_LOCK_UNLOCK = 2; -const SQL_LOGIN_TIMEOUT = 103; -const SQL_LOGIN_TIMEOUT_DEFAULT = 15UL; -const SQL_LONGVARBINARY = -4; -const SQL_LONGVARCHAR = -1; -const SQL_MAX_BINARY_LITERAL_LEN = 112; -const SQL_MAX_CHAR_LITERAL_LEN = 108; -const SQL_MAX_DSN_LENGTH = 32; -const SQL_MAX_LENGTH = 3; -const SQL_MAX_LENGTH_DEFAULT = 0UL; -const SQL_MAX_OPTION_STRING_LENGTH = 256; -const SQL_MAX_OWNER_NAME_LEN = 32; -const SQL_MAX_PROCEDURE_NAME_LEN = 33; -const SQL_MAX_QUALIFIER_NAME_LEN = 34; -const SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; -const SQL_MAX_ROWS = 1; -const SQL_MAX_ROWS_DEFAULT = 0UL; - -const SQL_MODE_READ_WRITE = 0UL; -const SQL_MODE_READ_ONLY = 1UL; -const SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; - -const SQL_MULT_RESULT_SETS = 36; -const SQL_MULTIPLE_ACTIVE_TXN = 37; -const SQL_NC_END = 0x0004; -const SQL_NC_START = 0x0002; -const SQL_NEED_LONG_DATA_LEN = 111; -const SQL_NNC_NON_NULL = 0x0001; -const SQL_NNC_NULL = 0x0000; -const SQL_NO_TOTAL = -4; -const SQL_NON_NULLABLE_COLUMNS = 75; - -const SQL_NOSCAN_OFF = 0UL; -const SQL_NOSCAN_ON = 1UL; -const SQL_NOSCAN = 2; -const SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; - -const SQL_NUMERIC_FUNCTIONS = 49; -const SQL_OAC_LEVEL1 = 0x0001; -const SQL_OAC_LEVEL2 = 0x0002; -const SQL_OAC_NONE = 0x0000; -const SQL_ODBC_API_CONFORMANCE = 9; -const SQL_ODBC_CURSORS = 110; -const SQL_ODBC_SAG_CLI_CONFORMANCE = 12; -const SQL_ODBC_SQL_CONFORMANCE = 15; -const SQL_ODBC_SQL_OPT_IEF = 73; -const SQL_ODBC_VER = 10; -const SQL_OPT_TRACE = 104; - -const SQL_OPT_TRACE_FILE_DEFAULT = "\\SQL.LOG"; -const SQL_OPT_TRACE_OFF = 0UL; -const SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; -const SQL_OPT_TRACE_ON = 1UL; - -const SQL_OPT_TRACEFILE = 105; -const SQL_OSC_CORE = 1; -const SQL_OSC_EXTENDED = 2; -const SQL_OSC_MINIMUM = 0; -const SQL_OSCC_COMPLIANT = 1; -const SQL_OSCC_NOT_COMPLIANT = 0; -const SQL_OU_DML_STATEMENTS = 1; -const SQL_OU_INDEX_DEFINITION = 8; -const SQL_OU_PRIVILEGE_DEFINITION = 16; -const SQL_OU_PROCEDURE_INVOCATION = 2; -const SQL_OU_TABLE_DEFINITION = 4; -const SQL_OUTER_JOINS = 38; -const SQL_OWNER_TERM = 39; -const SQL_OWNER_USAGE = 91; -const SQL_PACKET_SIZE = 112; -const SQL_PARAM_INPUT = 1; -const SQL_PARAM_INPUT_OUTPUT = 2; -const SQL_PARAM_OUTPUT = 4; -const SQL_PARAM_TYPE_DEFAULT = SQL_PARAM_INPUT_OUTPUT; -const SQL_PARAM_TYPE_UNKNOWN = 0; -const SQL_PC_NOT_PSEUDO = 1; -const SQL_POS_ADD = 16; -const SQL_POS_DELETE = 8; -const SQL_POS_OPERATIONS = 79; -const SQL_POS_POSITION = 1; -const SQL_POS_REFRESH = 2; -const SQL_POS_UPDATE = 4; -const SQL_POSITION = 0; -const SQL_POSITIONED_STATEMENTS = 80; -const SQL_PROCEDURE_TERM = 40; -const SQL_PROCEDURES = 21; -const SQL_PS_POSITIONED_DELETE = 1; -const SQL_PS_POSITIONED_UPDATE = 2; -const SQL_PS_SELECT_FOR_UPDATE = 4; -const SQL_PT_FUNCTION = 2; -const SQL_PT_PROCEDURE = 1; -const SQL_PT_UNKNOWN = 0; -const SQL_QL_END = 0x0002; -const SQL_QL_START = 0x0001; -const SQL_QU_DML_STATEMENTS = 1; -const SQL_QU_INDEX_DEFINITION = 8; -const SQL_QU_PRIVILEGE_DEFINITION = 16; -const SQL_QU_PROCEDURE_INVOCATION = 2; -const SQL_QU_TABLE_DEFINITION = 4; -const SQL_QUALIFIER_LOCATION = 114; -const SQL_QUALIFIER_NAME_SEPARATOR = 41; -const SQL_QUALIFIER_TERM = 42; -const SQL_QUALIFIER_USAGE = 92; -const SQL_QUERY_TIMEOUT = 0; -const SQL_QUERY_TIMEOUT_DEFAULT = 0UL; -const SQL_QUICK = 0; -const SQL_QUIET_MODE = 111; -const SQL_QUOTED_IDENTIFIER_CASE = 93; - -const SQL_RD_OFF = 0UL; -const SQL_RD_ON = 1UL; -const SQL_RD_DEFAULT = SQL_RD_ON; - -const SQL_REFRESH = 1; -const SQL_RESTRICT = 1; -const SQL_RESULT_COL = 3; -const SQL_RETRIEVE_DATA = 11; -const SQL_RETURN_VALUE = 5; -const SQL_ROW_ADDED = 4; -const SQL_ROW_DELETED = 1; -const SQL_ROW_ERROR = 5; -const SQL_ROW_NOROW = 3; -const SQL_ROW_NUMBER = 14; -const SQL_ROW_SUCCESS = 0; -const SQL_ROW_UPDATED = 2; -const SQL_ROW_UPDATES = 11; -const SQL_ROWSET_SIZE = 9; -const SQL_ROWSET_SIZE_DEFAULT = 1UL; -const SQL_ROWVER = 2; -const SQL_SC_NON_UNIQUE = 0UL; -const SQL_SC_TRY_UNIQUE = 1UL; -const SQL_SC_UNIQUE = 2UL; -const SQL_SCCO_OPT_TIMESTAMP = SQL_SCCO_OPT_ROWVER;/* deprecated */ -const SQL_SCROLL_DYNAMIC = -2L;/* deprecated */ -const SQL_SCROLL_FORWARD_ONLY = 0L;/* deprecated */ -const SQL_SCROLL_KEYSET_DRIVEN = -1L;/* deprecated */ -const SQL_SCROLL_OPTIONS = 44; -const SQL_SCROLL_STATIC = -3L;/* deprecated */ -const SQL_SEARCHABLE = 3; -const SQL_SET_NULL = 2; -const SQL_SETPARAM_VALUE_MAX = -1L; -const SQL_SETPOS_MAX_LOCK_VALUE = SQL_LOCK_UNLOCK; -const SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD; -const SQL_SIMULATE_CURSOR = 10; -const SQL_SO_DYNAMIC = 4; -const SQL_SO_FORWARD_ONLY = 1; -const SQL_SO_KEYSET_DRIVEN = 2; -const SQL_SO_MIXED = 8; -const SQL_SO_STATIC = 16; -const SQL_SQ_COMPARISON = 1; -const SQL_SQ_CORRELATED_SUBQUERIES = 16; -const SQL_SQ_EXISTS = 2; -const SQL_SQ_IN = 4; -const SQL_SQ_QUANTIFIED = 8; -const SQL_SQLSTATE_SIZE = 5; -const SQL_SS_ADDITIONS = 1; -const SQL_SS_DELETIONS = 2; -const SQL_SS_UPDATES = 4; -const SQL_STATIC_SENSITIVITY = 83; -const SQL_STRING_FUNCTIONS = 50; -const SQL_SUBQUERIES = 95; -const SQL_SYSTEM_FUNCTIONS = 51; -const SQL_TABLE_STAT = 0; -const SQL_TABLE_TERM = 45; -const SQL_TIMEDATE_ADD_INTERVALS = 109; -const SQL_TIMEDATE_DIFF_INTERVALS = 110; -const SQL_TIMEDATE_FUNCTIONS = 52; -const SQL_TRANSLATE_DLL = 106; -const SQL_TRANSLATE_OPTION = 107; -const SQL_TXN_ISOLATION = 108; -const SQL_TXN_VERSIONING = 16; -const SQL_TYPE_NULL = 0; -const SQL_U_UNION = 1; -const SQL_U_UNION_ALL = 2; - -const SQL_UB_OFF = 0UL; -const SQL_UB_DEFAULT = SQL_UB_OFF; -const SQL_UB_ON = 01UL; - -const SQL_UNION = 96; -const SQL_UNSEARCHABLE = 0; -const SQL_UPDATE = 2; -const SQL_USE_BOOKMARKS = 12; -const SQL_VARBINARY = -3; - -const SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL; -const SQL_COLATT_OPT_MIN = SQL_COLUMN_COUNT; -const SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; - -//MACRO #define SQL_POSITION_TO(s, r) SQLSetPos(s, r, SQL_POSITION, SQL_LOCK_NO_CHANGE) - -//MACRO #define SQL_LOCK_RECORD(s, r, l) SQLSetPos(s, r, SQL_POSITION, l) - -//MACRO #define SQL_REFRESH_RECORD(s, r, l) SQLSetPos(s, r, SQL_REFRESH, l) - -//MACRO #define SQL_UPDATE_RECORD(s, r) SQLSetPos(s, r, SQL_UPDATE, SQL_LOCK_NO_CHANGE) - -//MACRO #define SQL_DELETE_RECORD(s, r) SQLSetPos(s, r, SQL_DELETE, SQL_LOCK_NO_CHANGE) - -//MACRO #define SQL_ADD_RECORD(s, r) SQLSetPos(s, r, SQL_ADD, SQL_LOCK_NO_CHANGE) - - -static if (ODBCVER < 0x0300) { - const SQL_CONNECT_OPT_DRVR_START = 1000; - const SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; - const SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; - const SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; - const SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; - const SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; - const SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; - const SQL_TYPE_MIN = SQL_BIT; - const SQL_TYPE_MAX = SQL_VARCHAR; -} - -static if (ODBCVER < 0x0300) { - const SQL_NO_DATA_FOUND = 100; - const SQL_INTERVAL_YEAR = -80; - const SQL_INTERVAL_MONTH = -81; - const SQL_INTERVAL_YEAR_TO_MONTH = -82; - const SQL_INTERVAL_DAY = -83; - const SQL_INTERVAL_HOUR = -84; - const SQL_INTERVAL_MINUTE = -85; - const SQL_INTERVAL_SECOND = -86; - const SQL_INTERVAL_DAY_TO_HOUR = -87; - const SQL_INTERVAL_DAY_TO_MINUTE = -88; - const SQL_INTERVAL_DAY_TO_SECOND = -89; - const SQL_INTERVAL_HOUR_TO_MINUTE = -90; - const SQL_INTERVAL_HOUR_TO_SECOND = -91; - const SQL_INTERVAL_MINUTE_TO_SECOND = -92; -} else { - const SQL_NO_DATA_FOUND = SQL_NO_DATA; - const SQL_CODE_YEAR = 1; - const SQL_CODE_MONTH = 2; - const SQL_CODE_DAY = 3; - const SQL_CODE_HOUR = 4; - const SQL_CODE_MINUTE = 5; - const SQL_CODE_SECOND = 6; - const SQL_CODE_YEAR_TO_MONTH = 7; - const SQL_CODE_DAY_TO_HOUR = 8; - const SQL_CODE_DAY_TO_MINUTE = 9; - const SQL_CODE_DAY_TO_SECOND = 10; - const SQL_CODE_HOUR_TO_MINUTE = 11; - const SQL_CODE_HOUR_TO_SECOND = 12; - const SQL_CODE_MINUTE_TO_SECOND = 13; - const SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; - const SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; - const SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; - const SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; - const SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; - const SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; - const SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; - const SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; - const SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; - const SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; - const SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; - const SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; - const SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; -}//[Yes] #endif - - -static if ((ODBCVER >= 0x0201) && (ODBCVER < 0x0300)) { - const SQL_OJ_CAPABILITIES = 65003; -} - -static if (ODBCVER >= 0x0250) { - const SQL_NO_ACTION = 3; - const SQL_SET_DEFAULT = 4; -} - -static if (ODBCVER >= 0x0300) { - const SQL_ACTIVE_ENVIRONMENTS = 116; - const SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; - const SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; - const SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; - const SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; - const SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; - const SQL_AF_ALL = 0x00000040L; - const SQL_AF_AVG = 0x00000001L; - const SQL_AF_COUNT = 0x00000002L; - const SQL_AF_DISTINCT = 0x00000020L; - const SQL_AF_MAX = 0x00000004L; - const SQL_AF_MIN = 0x00000008L; - const SQL_AF_SUM = 0x00000010L; - const SQL_AGGREGATE_FUNCTIONS = 169; - const SQL_ALL_CATALOGS = "%"; - const SQL_ALL_SCHEMAS = "%"; - const SQL_ALL_TABLE_TYPES = "%"; - const SQL_ALTER_DOMAIN = 117; - const SQL_AM_CONNECTION = 1; - const SQL_AM_NONE = 0; - const SQL_AM_STATEMENT = 2; - const SQL_API_ODBC3_ALL_FUNCTIONS = 999; - const SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; - const SQL_API_SQLALLOCHANDLESTD = 73; - const SQL_API_SQLBULKOPERATIONS = 24; - const SQL_ASYNC_MODE = 10021; - const SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; - const SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; - const SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; - const SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; - const SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; - const SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; - const SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; - const SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; - const SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; - const SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; - const SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; - const SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; - const SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; - const SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; - const SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; - const SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; - const SQL_ATTR_ASYNC_ENABLE = 4; - const SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; - const SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; - const SQL_ATTR_CONNECTION_POOLING = 201; - const SQL_ATTR_CONNECTION_TIMEOUT = 113; - const SQL_ATTR_CP_MATCH = 202; - const SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; - const SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; - const SQL_ATTR_DISCONNECT_BEHAVIOR = 114; - const SQL_ATTR_ENABLE_AUTO_IPD = 15; - const SQL_ATTR_ENLIST_IN_DTC = 1207; - const SQL_ATTR_ENLIST_IN_XA = 1208; - const SQL_ATTR_FETCH_BOOKMARK_PTR = 16; - const SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; - const SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; - const SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; - const SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; - const SQL_ATTR_NOSCAN = SQL_NOSCAN; - const SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; - const SQL_ATTR_ODBC_VERSION = 200; - const SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; - const SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; - const SQL_ATTR_PARAM_BIND_TYPE = 18; - const SQL_ATTR_PARAM_OPERATION_PTR = 19; - const SQL_ATTR_PARAM_STATUS_PTR = 20; - const SQL_ATTR_PARAMS_PROCESSED_PTR = 21; - const SQL_ATTR_PARAMSET_SIZE = 22; - const SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; - const SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; - const SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; - const SQL_ATTR_ROW_ARRAY_SIZE = 27; - const SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; - const SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; - const SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; - const SQL_ATTR_ROW_OPERATION_PTR = 24; - const SQL_ATTR_ROW_STATUS_PTR = 25; - const SQL_ATTR_ROWS_FETCHED_PTR = 26; - const SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; - const SQL_ATTR_TRACE = SQL_OPT_TRACE; - const SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; - const SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; - const SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; - const SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; - const SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; - const SQL_BATCH_ROW_COUNT = 120; - const SQL_BATCH_SUPPORT = 121; - const SQL_BRC_EXPLICIT = 0x0000002; - const SQL_BRC_PROCEDURES = 0x0000001; - const SQL_BRC_ROLLED_UP = 0x0000004; - const SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; - const SQL_BS_ROW_COUNT_PROC = 0x00000008L; - const SQL_BS_SELECT_EXPLICIT = 0x00000001L; - const SQL_BS_SELECT_PROC = 0x00000004L; - const SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; - const SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; - const SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; - const SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; - const SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; - const SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; - const SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; - const SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; - const SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; - const SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; - const SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; - const SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; - const SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; - const SQL_C_NUMERIC = SQL_NUMERIC; - const SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; - const SQL_C_TYPE_DATE = SQL_TYPE_DATE; - const SQL_C_TYPE_TIME = SQL_TYPE_TIME; - const SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; - const SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; - const SQL_C_VARBOOKMARK = SQL_C_BINARY; - const SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; - const SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; - const SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; - const SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; - const SQL_CA_CREATE_ASSERTION = 0x00000001L; - const SQL_CA1_ABSOLUTE = 0x00000002L; - const SQL_CA1_BOOKMARK = 0x00000008L; - const SQL_CA1_BULK_ADD = 0x00010000L; - const SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; - const SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; - const SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; - const SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; - const SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; - const SQL_CA1_LOCK_UNLOCK = 0x00000100L; - const SQL_CA1_NEXT = 0x00000001L; - const SQL_CA1_POS_DELETE = 0x00000800L; - const SQL_CA1_POS_POSITION = 0x00000200L; - const SQL_CA1_POS_REFRESH = 0x00001000L; - const SQL_CA1_POS_UPDATE = 0x00000400L; - const SQL_CA1_POSITIONED_DELETE = 0x00004000L; - const SQL_CA1_POSITIONED_UPDATE = 0x00002000L; - const SQL_CA1_RELATIVE = 0x00000004L; - const SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; - const SQL_CA2_CRC_APPROXIMATE = 0x00002000L; - const SQL_CA2_CRC_EXACT = 0x00001000L; - const SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; - - const SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; - const SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; - const SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; - const SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; - const SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; - const SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | - SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; - - const SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; - const SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; - const SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; - const SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; - const SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; - const SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; - const SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; - const SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; - const SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; - const SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; - const SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; - const SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; - const SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; - const SQL_CCOL_CREATE_COLLATION = 0x00000001L; - const SQL_CCS_COLLATE_CLAUSE = 0x00000002L; - const SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; - const SQL_CCS_LIMITED_COLLATION = 0x00000004L; - const SQL_CDO_COLLATION = 0x00000008L; - const SQL_CDO_CONSTRAINT = 0x00000004L; - const SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; - const SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_CDO_CREATE_DOMAIN = 0x00000001L; - const SQL_CDO_DEFAULT = 0x00000002L; - const SQL_CL_END = SQL_QL_END; - const SQL_CL_START = SQL_QL_START; - const SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; - const SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; - const SQL_COLUMN_DRIVER_START = 1000; - const SQL_COLUMN_IGNORE = SQL_IGNORE; - const SQL_COLUMN_NUMBER_UNKNOWN = -2; - const SQL_CONVERT_GUID = 173; - - const SQL_CONVERT_WCHAR = 122; - const SQL_CONVERT_INTERVAL_DAY_TIME = 123; - const SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; - const SQL_CONVERT_WLONGVARCHAR = 125; - const SQL_CONVERT_WVARCHAR = 126; - - const SQL_CREATE_ASSERTION = 127; - const SQL_CREATE_CHARACTER_SET = 128; - const SQL_CREATE_COLLATION = 129; - const SQL_CREATE_DOMAIN = 130; - const SQL_CREATE_SCHEMA = 131; - const SQL_CREATE_TABLE = 132; - const SQL_CREATE_TRANSLATION = 133; - const SQL_CREATE_VIEW = 134; - - - const SQL_CP_OFF = 0UL; - const SQL_CP_DEFAULT = SQL_CP_OFF; - const SQL_CP_ONE_PER_DRIVER = 1UL; - const SQL_CP_ONE_PER_HENV = 2UL; - - const SQL_CP_STRICT_MATCH = 0UL; - const SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; - const SQL_CP_RELAXED_MATCH = 1UL; - - const SQL_CS_CREATE_SCHEMA = 0x00000001L; - const SQL_CS_AUTHORIZATION = 0x00000002L; - const SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; - - const SQL_CT_COLUMN_COLLATION = 0x00000800L; - const SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; - const SQL_CT_COLUMN_DEFAULT = 0x00000400L; - const SQL_CT_COMMIT_DELETE = 0x00000004L; - const SQL_CT_COMMIT_PRESERVE = 0x00000002L; - const SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; - const SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; - const SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; - const SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; - const SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; - const SQL_CT_CREATE_TABLE = 0x00000001L; - const SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; - const SQL_CT_LOCAL_TEMPORARY = 0x00000010L; - const SQL_CT_TABLE_CONSTRAINT = 0x00001000L; - - const SQL_CTR_CREATE_TRANSLATION = 0x00000001L; - - const SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; - const SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; - const SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; - const SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; - const SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; - - const SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; - const SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; - const SQL_CVT_WCHAR = 0x00200000L; - const SQL_CVT_WLONGVARCHAR = 0x00400000L; - const SQL_CVT_WVARCHAR = 0x00800000L; - const SQL_CVT_GUID = 0x01000000L; - - const SQL_DA_DROP_ASSERTION = 0x00000001L; - const SQL_DATETIME_LITERALS = 119; - - const SQL_DB_DISCONNECT = 1UL; - const SQL_DB_RETURN_TO_POOL = 0UL; - const SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; - - const SQL_DC_DROP_COLLATION = 0x00000001L; - const SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; - const SQL_DD_CASCADE = 0x00000004L; - const SQL_DD_DROP_DOMAIN = 0x00000001L; - const SQL_DD_RESTRICT = 0x00000002L; - const SQL_DDL_INDEX = 170; - const SQL_DELETE_BY_BOOKMARK = 6; - const SQL_DESC_ARRAY_SIZE = 20; - const SQL_DESC_ARRAY_STATUS_PTR = 21; - const SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; - const SQL_DESC_BASE_COLUMN_NAME = 22; - const SQL_DESC_BASE_TABLE_NAME = 23; - const SQL_DESC_BIND_OFFSET_PTR = 24; - const SQL_DESC_BIND_TYPE = 25; - const SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; - const SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; - const SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; - const SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; - const SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; - const SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; - const SQL_DESC_LABEL = SQL_COLUMN_LABEL; - const SQL_DESC_LITERAL_PREFIX = 27; - const SQL_DESC_LITERAL_SUFFIX = 28; - const SQL_DESC_LOCAL_TYPE_NAME = 29; - const SQL_DESC_MAXIMUM_SCALE = 30; - const SQL_DESC_MINIMUM_SCALE = 31; - const SQL_DESC_NUM_PREC_RADIX = 32; - const SQL_DESC_PARAMETER_TYPE = 33; - const SQL_DESC_ROWS_PROCESSED_PTR = 34; - const SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; - const SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; - const SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; - const SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; - const SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; - const SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; - const SQL_DI_CREATE_INDEX = 0x00000001L; - const SQL_DI_DROP_INDEX = 0x00000002L; - - const SQL_DIAG_COLUMN_NUMBER = -1247; - const SQL_DIAG_ROW_NUMBER = -1248; - const SQL_DIAG_CURSOR_ROW_COUNT = -1249; - - const SQL_DL_SQL92_DATE = 0x00000001L; - const SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; - const SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; - const SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; - const SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; - const SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; - const SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; - const SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; - const SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; - const SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; - const SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; - const SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; - const SQL_DL_SQL92_TIME = 0x00000002L; - const SQL_DL_SQL92_TIMESTAMP = 0x00000004L; - const SQL_DM_VER = 171; - const SQL_DRIVER_HDESC = 135; - const SQL_DROP_ASSERTION = 136; - const SQL_DROP_CHARACTER_SET = 137; - const SQL_DROP_COLLATION = 138; - const SQL_DROP_DOMAIN = 139; - const SQL_DROP_SCHEMA = 140; - const SQL_DROP_TABLE = 141; - const SQL_DROP_TRANSLATION = 142; - const SQL_DROP_VIEW = 143; - const SQL_DS_CASCADE = 0x00000004L; - const SQL_DS_DROP_SCHEMA = 0x00000001L; - const SQL_DS_RESTRICT = 0x00000002L; - const SQL_DT_CASCADE = 0x00000004L; - const SQL_DT_DROP_TABLE = 0x00000001L; - const SQL_DT_RESTRICT = 0x00000002L; - const SQL_DTC_DONE = 0L; - const SQL_DTR_DROP_TRANSLATION = 0x00000001L; - const SQL_DV_CASCADE = 0x00000004L; - const SQL_DV_DROP_VIEW = 0x00000001L; - const SQL_DV_RESTRICT = 0x00000002L; - const SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; - const SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; - const SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; - const SQL_EXT_API_START = 40; - const SQL_FETCH_BY_BOOKMARK = 7; - const SQL_FETCH_FIRST_SYSTEM = 32; - const SQL_FETCH_FIRST_USER = 31; - const SQL_FN_CVT_CAST = 0x00000002L; - const SQL_FN_STR_BIT_LENGTH = 0x00080000L; - const SQL_FN_STR_CHAR_LENGTH = 0x00100000L; - const SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; - const SQL_FN_STR_OCTET_LENGTH = 0x00400000L; - const SQL_FN_STR_POSITION = 0x00800000L; - const SQL_FN_TD_CURRENT_DATE = 0x00020000L; - const SQL_FN_TD_CURRENT_TIME = 0x00040000L; - const SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; - const SQL_FN_TD_EXTRACT = 0x00100000L; - const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; - const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; - /* #define SQL_FUNC_EXISTS(exists, api) - ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? - SQL_TRUE : SQL_FALSE ) - */ - const SQL_GB_COLLATE = 0x0004; - const SQL_HANDLE_SENV = 5; - - const SQL_IK_NONE = 0; - const SQL_IK_ASC = 1; - const SQL_IK_DESC = 2; - const SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; - - const SQL_INDEX_KEYWORDS = 148; - const SQL_INFO_DRIVER_START = 1000; - const SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; - const SQL_INFO_SCHEMA_VIEWS = 149; - const SQL_INITIALLY_DEFERRED = 5; - const SQL_INITIALLY_IMMEDIATE = 6; - const SQL_INSERT_STATEMENT = 172; - const SQL_INTERVAL = 10; - const SQL_IS_INSERT_LITERALS = 0x00000001L; - const SQL_IS_INSERT_SEARCHED = 0x00000002L; - const SQL_IS_INTEGER = -6; - const SQL_IS_POINTER = -4; - const SQL_IS_SELECT_INTO = 0x00000004L; - const SQL_IS_SMALLINT = -8; - const SQL_IS_UINTEGER = -5; - const SQL_IS_USMALLINT = -7; - const SQL_ISV_ASSERTIONS = 0x00000001L; - const SQL_ISV_CHARACTER_SETS = 0x00000002L; - const SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; - const SQL_ISV_COLLATIONS = 0x00000008L; - const SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; - const SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; - const SQL_ISV_COLUMNS = 0x00000040L; - const SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; - const SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; - const SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; - const SQL_ISV_DOMAINS = 0x00000400L; - const SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; - const SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; - const SQL_ISV_SCHEMATA = 0x00002000L; - const SQL_ISV_SQL_LANGUAGES = 0x00004000L; - const SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; - const SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; - const SQL_ISV_TABLES = 0x00020000L; - const SQL_ISV_TRANSLATIONS = 0x00040000L; - const SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; - const SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; - const SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; - const SQL_ISV_VIEWS = 0x00400000L; - const SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; - const SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; - const SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; - const SQL_NO_COLUMN_NUMBER = -1; - const SQL_NO_ROW_NUMBER = -1; - const SQL_NOT_DEFERRABLE = 7; - const SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; - const SQL_NUM_FUNCTIONS = 23; - const SQL_ODBC_INTERFACE_CONFORMANCE = 152; - - enum : ULONG { - SQL_OIC_CORE = 1, - SQL_OIC_LEVEL1, - SQL_OIC_LEVEL2 - } - enum : ULONG { - SQL_OV_ODBC2 = 2, - SQL_OV_ODBC3 = 3 - } - - const ULONG - SQL_PARAM_BIND_BY_COLUMN = 0, - SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; - - const SQL_PARAM_ARRAY_ROW_COUNTS = 153; - const SQL_PARAM_ARRAY_SELECTS = 154; - const SQL_PARAM_DIAG_UNAVAILABLE = 1; - const SQL_PARAM_ERROR = 5; - const SQL_PARAM_IGNORE = 1; - const SQL_PARAM_PROCEED = 0; - const SQL_PARAM_SUCCESS = 0; - const SQL_PARAM_SUCCESS_WITH_INFO = 6; - const SQL_PARAM_UNUSED = 7; - - const SQL_PARC_BATCH = 1; - const SQL_PARC_NO_BATCH = 2; - const SQL_PAS_BATCH = 1; - const SQL_PAS_NO_BATCH = 2; - const SQL_PAS_NO_SELECT = 3; - - const SQL_ROW_IGNORE = 1; - const SQL_ROW_NUMBER_UNKNOWN = -2; - const SQL_ROW_PROCEED = 0; - const SQL_ROW_SUCCESS_WITH_INFO = 6; - - const SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; - const SQL_SC_SQL92_ENTRY = 0x00000001L; - const SQL_SC_SQL92_FULL = 0x00000008L; - const SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; - - const SQL_SCC_ISO92_CLI = 0x00000002L; - const SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; - - const SQL_SCHEMA_TERM = SQL_OWNER_TERM; - const SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; - const SQL_SDF_CURRENT_DATE = 0x00000001L; - const SQL_SDF_CURRENT_TIME = 0x00000002L; - const SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; - const SQL_SFKD_CASCADE = 0x00000001L; - const SQL_SFKD_NO_ACTION = 0x00000002L; - const SQL_SFKD_SET_DEFAULT = 0x00000004L; - const SQL_SFKD_SET_NULL = 0x00000008L; - const SQL_SFKU_CASCADE = 0x00000001L; - const SQL_SFKU_NO_ACTION = 0x00000002L; - const SQL_SFKU_SET_DEFAULT = 0x00000004L; - const SQL_SFKU_SET_NULL = 0x00000008L; - const SQL_SG_DELETE_TABLE = 0x00000020L; - const SQL_SG_INSERT_COLUMN = 0x00000080L; - const SQL_SG_INSERT_TABLE = 0x00000040L; - const SQL_SG_REFERENCES_COLUMN = 0x00000200L; - const SQL_SG_REFERENCES_TABLE = 0x00000100L; - const SQL_SG_SELECT_TABLE = 0x00000400L; - const SQL_SG_UPDATE_COLUMN = 0x00001000L; - const SQL_SG_UPDATE_TABLE = 0x00000800L; - const SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; - const SQL_SG_USAGE_ON_COLLATION = 0x00000004L; - const SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; - const SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; - const SQL_SG_WITH_GRANT_OPTION = 0x00000010L; - const SQL_SNVF_BIT_LENGTH = 0x00000001L; - const SQL_SNVF_CHAR_LENGTH = 0x00000002L; - const SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; - const SQL_SNVF_EXTRACT = 0x00000008L; - const SQL_SNVF_OCTET_LENGTH = 0x00000010L; - const SQL_SNVF_POSITION = 0x00000020L; - const SQL_SP_BETWEEN = 0x00000800L; - const SQL_SP_COMPARISON = 0x00001000L; - const SQL_SP_EXISTS = 0x00000001L; - const SQL_SP_IN = 0x00000400L; - const SQL_SP_ISNOTNULL = 0x00000002L; - const SQL_SP_ISNULL = 0x00000004L; - const SQL_SP_LIKE = 0x00000200L; - const SQL_SP_MATCH_FULL = 0x00000008L; - const SQL_SP_MATCH_PARTIAL = 0x00000010L; - const SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; - const SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; - const SQL_SP_OVERLAPS = 0x00000080L; - const SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; - const SQL_SP_UNIQUE = 0x00000100L; - const SQL_SQL_CONFORMANCE = 118; - const SQL_SQL92_DATETIME_FUNCTIONS = 155; - const SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; - const SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; - const SQL_SQL92_GRANT = 158; - const SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; - const SQL_SQL92_PREDICATES = 160; - const SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; - const SQL_SQL92_REVOKE = 162; - const SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; - const SQL_SQL92_STRING_FUNCTIONS = 164; - const SQL_SQL92_VALUE_EXPRESSIONS = 165; - const SQL_SR_CASCADE = 0x00000020L; - const SQL_SR_DELETE_TABLE = 0x00000080L; - const SQL_SR_GRANT_OPTION_FOR = 0x00000010L; - const SQL_SR_INSERT_COLUMN = 0x00000200L; - const SQL_SR_INSERT_TABLE = 0x00000100L; - const SQL_SR_REFERENCES_COLUMN = 0x00000800L; - const SQL_SR_REFERENCES_TABLE = 0x00000400L; - const SQL_SR_RESTRICT = 0x00000040L; - const SQL_SR_SELECT_TABLE = 0x00001000L; - const SQL_SR_UPDATE_COLUMN = 0x00004000L; - const SQL_SR_UPDATE_TABLE = 0x00002000L; - const SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; - const SQL_SR_USAGE_ON_COLLATION = 0x00000004L; - const SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; - const SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; - const SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; - const SQL_SRJO_CROSS_JOIN = 0x00000002L; - const SQL_SRJO_EXCEPT_JOIN = 0x00000004L; - const SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; - const SQL_SRJO_INNER_JOIN = 0x00000010L; - const SQL_SRJO_INTERSECT_JOIN = 0x00000020L; - const SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; - const SQL_SRJO_NATURAL_JOIN = 0x00000080L; - const SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; - const SQL_SRJO_UNION_JOIN = 0x00000200L; - const SQL_SRVC_DEFAULT = 0x00000004L; - const SQL_SRVC_NULL = 0x00000002L; - const SQL_SRVC_ROW_SUBQUERY = 0x00000008L; - const SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; - const SQL_SSF_CONVERT = 0x00000001L; - const SQL_SSF_LOWER = 0x00000002L; - const SQL_SSF_SUBSTRING = 0x00000008L; - const SQL_SSF_TRANSLATE = 0x00000010L; - const SQL_SSF_TRIM_BOTH = 0x00000020L; - const SQL_SSF_TRIM_LEADING = 0x00000040L; - const SQL_SSF_TRIM_TRAILING = 0x00000080L; - const SQL_SSF_UPPER = 0x00000004L; - const SQL_STANDARD_CLI_CONFORMANCE = 166; - const SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; - const SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; - const SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; - const SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; - const SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; - const SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; - const SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; - const SQL_SVE_CASE = 0x00000001L; - const SQL_SVE_CAST = 0x00000002L; - const SQL_SVE_COALESCE = 0x00000004L; - const SQL_SVE_NULLIF = 0x00000008L; - const SQL_UB_FIXED = SQL_UB_ON; - const SQL_UB_VARIABLE = 2UL; - const SQL_UNION_STATEMENT = SQL_UNION; - const SQL_UPDATE_BY_BOOKMARK = 5; - const SQL_US_UNION = SQL_U_UNION; - const SQL_US_UNION_ALL = SQL_U_UNION_ALL; -}//[Yes] #endif /* ODBCVER >= 0x300 */ -static if (ODBCVER >= 0x0350) { - const SQL_DESC_ROWVER = 35; - const SQL_GUID = -11; - const SQL_C_GUID = SQL_GUID; - //#ifdef ODBC_STD - //#define SQLAllocHandle SQLAllocHandleStd - //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) - //#define SQL_YEAR SQL_CODE_YEAR - //#define SQL_MONTH SQL_CODE_MONTH - //#define SQL_DAY SQL_CODE_DAY - //#define SQL_HOUR SQL_CODE_HOUR - //#define SQL_MINUTE SQL_CODE_MINUTE - //#define SQL_SECOND SQL_CODE_SECOND - //#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH - //#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR - //#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE - //#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND - //#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE - //#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND - //#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND - //#endif /* ODBC_STD */ -}//#endif /* ODBCVER >= 0x0350 */ - -//static if (ODBCVER >= 0x0351) { -const SQL_ATTR_ANSI_APP=115; -const SQL_AA_TRUE=1L; -const SQL_AA_FALSE=0L; -//}//[Yes] #endif - -const TRACE_VERSION=1000; -const TRACE_ON=1; - -const char [] SQL_ODBC_KEYWORDS = - "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " - ~ "ASC, ASSERTION, AT, AUTHORIZATION, AVG, " - ~ "BEGIN, BETWEEN, BIT, BIT_LENGTH, BOTH, BY, CASCADE, CASCADED, CASE, CAST, CATALOG, " - ~ "CHAR, CHAR_LENGTH, CHARACTER, CHARACTER_LENGTH, CHECK, CLOSE, COALESCE, " - ~ "COLLATE, COLLATION, COLUMN, COMMIT, CONNECT, CONNECTION, CONSTRAINT, " - ~ "CONSTRAINTS, CONTINUE, CONVERT, CORRESPONDING, COUNT, CREATE, CROSS, CURRENT, " - ~ "CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, " - ~ "DATE, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, " - ~ "DEFERRED, DELETE, DESC, DESCRIBE, DESCRIPTOR, DIAGNOSTICS, DISCONNECT, " - ~ "DISTINCT, DOMAIN, DOUBLE, DROP, " - ~ "ELSE, END, END-EXEC, ESCAPE, EXCEPT, EXCEPTION, EXEC, EXECUTE, " - ~ "EXISTS, EXTERNAL, EXTRACT, " - ~ "FALSE, FETCH, FIRST, FLOAT, FOR, FOREIGN, FORTRAN, FOUND, FROM, FULL, " - ~ "GET, GLOBAL, GO, GOTO, GRANT, GROUP, HAVING, HOUR, " - ~ "IDENTITY, IMMEDIATE, IN, INCLUDE, INDEX, INDICATOR, INITIALLY, INNER, " - ~ "INPUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, ISOLATION, " - ~ "JOIN, KEY, LANGUAGE, LAST, LEADING, LEFT, LEVEL, LIKE, LOCAL, LOWER, " - ~ "MATCH, MAX, MIN, MINUTE, MODULE, MONTH, " - ~ "NAMES, NATIONAL, NATURAL, NCHAR, NEXT, NO, NONE, NOT, NULL, NULLIF, NUMERIC, " - ~ "OCTET_LENGTH, OF, ON, ONLY, OPEN, OPTION, OR, ORDER, OUTER, OUTPUT, OVERLAPS, " - ~ "PAD, PARTIAL, PASCAL, PLI, POSITION, PRECISION, PREPARE, PRESERVE, " - ~ "PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, " - ~ "READ, REAL, REFERENCES, RELATIVE, RESTRICT, REVOKE, RIGHT, ROLLBACK, ROWS" - ~ "SCHEMA, SCROLL, SECOND, SECTION, SELECT, SESSION, SESSION_USER, SET, SIZE, " - ~ "SMALLINT, SOME, SPACE, SQL, SQLCA, SQLCODE, SQLERROR, SQLSTATE, SQLWARNING, " - ~ "SUBSTRING, SUM, SYSTEM_USER, " - ~ "TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, " - ~ "TO, TRAILING, TRANSACTION, TRANSLATE, TRANSLATION, TRIM, TRUE, " - ~ "UNION, UNIQUE, UNKNOWN, UPDATE, UPPER, USAGE, USER, USING, " - ~ "VALUE, VALUES, VARCHAR, VARYING, VIEW, WHEN, WHENEVER, WHERE, WITH, WORK, WRITE, " - ~ "YEAR, ZONE"; -extern (Windows) { - SQLRETURN SQLDriverConnect(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLBrowseConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLColumnPrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLColAttributes(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLDescribeParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLExtendedFetch(SQLHSTMT, SQLUSMALLINT, SQLINTEGER, SQLUINTEGER*, SQLUSMALLINT*); - SQLRETURN SQLForeignKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLMoreResults(SQLHSTMT); - SQLRETURN SQLNativeSql(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLNumParams(SQLHSTMT, SQLSMALLINT*); - SQLRETURN SQLParamOptions(SQLHSTMT, SQLUINTEGER, SQLUINTEGER*); - SQLRETURN SQLPrimaryKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedures(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLSetPos(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTablePrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLDrivers(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLBindParameter(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); - SQLRETURN SQLSetScrollOptions(SQLHSTMT, SQLUSMALLINT, SQLLEN, SQLUSMALLINT);/* deprecated */ - DWORD ODBCGetTryWaitValue(); - BOOL ODBCSetTryWaitValue(DWORD); - RETCODE TraceOpenLogFile(LPWSTR, LPWSTR, DWORD); - RETCODE TraceCloseLogFile(); - VOID TraceReturn(RETCODE, RETCODE); - DWORD TraceVersion(); - //static if (ODBCVER >= 0x0300) { - SQLRETURN SQLBulkOperations(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLAllocHandleStd( SQLSMALLINT, SQLHANDLE, SQLHANDLE*); - //} -} +/***********************************************************************\ +* sqlext.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sqlext; + +/* Conversion notes: + The MinGW file was a horrible mess. All of the #defines were sorted alphabetically, + which is crazy. This file needs a lot of work. + In MinGW, sqlext #includes sqlucode, but sqlucode #includes sqlext, + creating a circular dependency! +*/ + +public import win32.sql; +private import win32.windef; + +const SQL_SPEC_MAJOR = 3; +const SQL_SPEC_MINOR = 51; +const char[] SQL_SPEC_STRING = "03.51"; +const SQL_ACCESS_MODE = 101; +const SQL_ACTIVE_CONNECTIONS = 0; +const SQL_ACTIVE_STATEMENTS = 1; + +const SQL_DATE = 9; +const SQL_TIME = 10; +const SQL_SIGNED_OFFSET = -20; +const SQL_TINYINT = -6; +const SQL_TIMESTAMP = 11; +const SQL_UNSIGNED_OFFSET = -22; + +const SQL_ADD = 4; +const SQL_ALL_EXCEPT_LIKE = 2; + +const SQL_API_ALL_FUNCTIONS = 0; +const SQL_API_SQLCOLATTRIBUTES = 6; +const SQL_API_SQLDRIVERCONNECT = 41; +const SQL_API_SQLBROWSECONNECT = 55; +const SQL_API_SQLCOLUMNPRIVILEGES = 56; +const SQL_API_SQLDESCRIBEPARAM = 58; +const SQL_API_SQLEXTENDEDFETCH = 59; +const SQL_API_SQLFOREIGNKEYS = 60; +const SQL_API_SQLMORERESULTS = 61; +const SQL_API_SQLNATIVESQL = 62; +const SQL_API_SQLNUMPARAMS = 63; +const SQL_API_SQLPARAMOPTIONS = 64; +const SQL_API_SQLPRIMARYKEYS = 65; +const SQL_API_SQLPROCEDURECOLUMNS = 66; +const SQL_API_SQLPROCEDURES = 67; +const SQL_API_SQLSETPOS = 68; +const SQL_API_SQLSETSCROLLOPTIONS = 69; +const SQL_API_SQLTABLEPRIVILEGES = 70; +const SQL_API_SQLDRIVERS = 71; +const SQL_API_SQLBINDPARAMETER = 72; +const SQL_API_LOADBYORDINAL = 199; + +const SQL_ASYNC_ENABLE = 4; +const SQL_ASYNC_ENABLE_OFF = 0UL; +const SQL_ASYNC_ENABLE_ON = 1UL; +const SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; + +const SQL_ATTR_CONNECTION_DEAD = 1209; +const SQL_ATTR_READONLY = 0; +const SQL_ATTR_READWRITE_UNKNOWN = 2; +const SQL_ATTR_WRITE = 1; + +const SQL_AUTOCOMMIT = 102; +const SQL_AUTOCOMMIT_OFF = 0UL; +const SQL_AUTOCOMMIT_ON = 1UL; +const SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; +const SQL_BEST_ROWID = 1; +const SQL_BIGINT = -5; +const SQL_BINARY = -2; +const SQL_BIND_BY_COLUMN = 0UL; +const SQL_BIND_TYPE = 5; +const SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; +const SQL_BIT = -7; + +const SQL_BOOKMARK_PERSISTENCE = 82; + +// for BOOKMARK_PERSISTENCE +const SQL_BP_CLOSE = 1; +const SQL_BP_DELETE = 2; +const SQL_BP_DROP = 4; +const SQL_BP_TRANSACTION = 8; +const SQL_BP_UPDATE = 16; +const SQL_BP_OTHER_HSTMT = 32; +const SQL_BP_SCROLL = 64; + +const SQL_C_BINARY = SQL_BINARY; +const SQL_C_BIT = SQL_BIT; +const SQL_C_CHAR = SQL_CHAR; +const SQL_C_DATE = SQL_DATE; +const SQL_C_DOUBLE = SQL_DOUBLE; +const SQL_C_FLOAT = SQL_REAL; +const SQL_C_LONG = SQL_INTEGER; +const SQL_C_SHORT = SQL_SMALLINT; +const SQL_C_SLONG = SQL_C_LONG+SQL_SIGNED_OFFSET; +const SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; +const SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; +const SQL_C_TIME = SQL_TIME; +const SQL_C_TIMESTAMP = SQL_TIMESTAMP; +const SQL_C_TINYINT = SQL_TINYINT; +const SQL_C_ULONG = SQL_C_LONG+SQL_UNSIGNED_OFFSET; +const SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; +const SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; +const SQL_C_BOOKMARK = SQL_C_ULONG; +const SQL_C_DEFAULT = 99; + +const SQL_CASCADE = 0; +const SQL_CB_NON_NULL = 1; +const SQL_CB_NULL = 0; +deprecated { +const SQL_CC_CLOSE = SQL_CB_CLOSE;/* deprecated */ +const SQL_CC_DELETE = SQL_CB_DELETE;/* deprecated */ +const SQL_CC_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ +} +const SQL_CD_FALSE = 0L; +const SQL_CD_TRUE = 1L; + +const SQL_CN_ANY = 2; +const SQL_CN_DIFFERENT = 1; +const SQL_CN_NONE = 0; + +const SQL_COLUMN_ALIAS = 87; + +const SQL_COLUMN_COUNT = 0; +const SQL_COLUMN_NAME = 1; +const SQL_COLUMN_DISPLAY_SIZE = 6; +const SQL_COLUMN_LABEL = 18; +const SQL_COLUMN_LENGTH = 3; +const SQL_COLUMN_MONEY = 9; +const SQL_COLUMN_NULLABLE = 7; +const SQL_COLUMN_OWNER_NAME = 16; +const SQL_COLUMN_PRECISION = 4; +const SQL_COLUMN_QUALIFIER_NAME = 17; +const SQL_COLUMN_SCALE = 5; +const SQL_COLUMN_UNSIGNED = 8; +const SQL_COLUMN_UPDATABLE = 10; +const SQL_COLUMN_AUTO_INCREMENT = 11; +const SQL_COLUMN_CASE_SENSITIVE = 12; +const SQL_COLUMN_SEARCHABLE = 13; +const SQL_COLUMN_TYPE = 2; +const SQL_COLUMN_TYPE_NAME = 14; +const SQL_COLUMN_TABLE_NAME = 15; + +const SQL_CONCAT_NULL_BEHAVIOR = 22; + +const SQL_CONCUR_READ_ONLY = 1; +const SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; +const SQL_CONCUR_LOCK = 2; +const SQL_CONCUR_ROWVER = 3; +const SQL_CONCUR_TIMESTAMP = SQL_CONCUR_ROWVER;/* deprecated */ +const SQL_CONCUR_VALUES = 4; + +const SQL_CONCURRENCY = 7; +const SQL_CONVERT_BIGINT = 53; +const SQL_CONVERT_BINARY = 54; +const SQL_CONVERT_BIT = 55; +const SQL_CONVERT_CHAR = 56; +const SQL_CONVERT_DATE = 57; +const SQL_CONVERT_DECIMAL = 58; +const SQL_CONVERT_DOUBLE = 59; +const SQL_CONVERT_FLOAT = 60; +const SQL_CONVERT_FUNCTIONS = 48; +const SQL_CONVERT_INTEGER = 61; +const SQL_CONVERT_LONGVARBINARY = 71; +const SQL_CONVERT_LONGVARCHAR = 62; +const SQL_CONVERT_NUMERIC = 63; +const SQL_CONVERT_REAL = 64; +const SQL_CONVERT_SMALLINT = 65; +const SQL_CONVERT_TIME = 66; +const SQL_CONVERT_TIMESTAMP = 67; +const SQL_CONVERT_TINYINT = 68; +const SQL_CONVERT_VARBINARY = 69; +const SQL_CONVERT_VARCHAR = 70; +const SQL_CORRELATION_NAME = 74; +const SQL_CR_CLOSE = SQL_CB_CLOSE;/* deprecated */ +const SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ +const SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ + +enum : ULONG { + SQL_CUR_USE_IF_NEEDED = 0, + SQL_CUR_USE_ODBC, + SQL_CUR_USE_DRIVER, + SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER +} + +const SQL_CURRENT_QUALIFIER = 109; +const SQL_CURSOR_DYNAMIC = 2UL; +const SQL_CURSOR_FORWARD_ONLY = 0UL; +const SQL_CURSOR_KEYSET_DRIVEN = 1UL; +const SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; +const SQL_CURSOR_STATIC = 3UL; +const SQL_CURSOR_TYPE = 6; +const SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; + +const SQL_CV_CASCADED = 0x00000004L; +const SQL_CV_CHECK_OPTION = 0x00000002L; +const SQL_CV_CREATE_VIEW = 0x00000001L; +const SQL_CV_LOCAL = 0x00000008L; +const SQL_CVT_BIGINT = 0x00004000L; +const SQL_CVT_BINARY = 0x00000400L; +const SQL_CVT_BIT = 0x00001000L; +const SQL_CVT_CHAR = 0x00000001L; +const SQL_CVT_DATE = 0x00008000L; +const SQL_CVT_DECIMAL = 0x00000004L; +const SQL_CVT_DOUBLE = 0x00000080L; +const SQL_CVT_FLOAT = 0x00000020L; +const SQL_CVT_INTEGER = 0x00000008L; +const SQL_CVT_LONGVARBINARY = 0x00040000L; +const SQL_CVT_LONGVARCHAR = 0x00000200L; +const SQL_CVT_NUMERIC = 0x00000002L; +const SQL_CVT_REAL = 0x00000040L; +const SQL_CVT_SMALLINT = 0x00000010L; +const SQL_CVT_TIME = 0x00010000L; +const SQL_CVT_TIMESTAMP = 0x00020000L; +const SQL_CVT_TINYINT = 0x00002000L; +const SQL_CVT_VARBINARY = 0x00000800L; +const SQL_CVT_VARCHAR = 0x00000100L; +const SQL_DATABASE_NAME = 16;/* deprecated */ + +const SQL_DEFAULT_PARAM = -5; +const SQL_DELETE = 3; + +const SQL_DRIVER_COMPLETE = 1; +const SQL_DRIVER_COMPLETE_REQUIRED = 3; +const SQL_DRIVER_HDBC = 3; +const SQL_DRIVER_HENV = 4; +const SQL_DRIVER_HLIB = 76; +const SQL_DRIVER_HSTMT = 5; +const SQL_DRIVER_NAME = 6; +const SQL_DRIVER_NOPROMPT = 0; +const SQL_DRIVER_ODBC_VER = 77; +const SQL_DRIVER_PROMPT = 2; +const SQL_DRIVER_VER = 7; + +const SQL_DTC_ENLIST_EXPENSIVE = 1; +const SQL_DTC_UNENLIST_EXPENSIVE = 2; +const SQL_DTC_TRANSITION_COST = 1750; +const SQL_ENSURE = 1; +const SQL_ENTIRE_ROWSET = 0; +const SQL_EXPRESSIONS_IN_ORDERBY = 27; +const SQL_FD_FETCH_BOOKMARK = 128; +const SQL_FD_FETCH_PREV = SQL_FD_FETCH_PRIOR;/* deprecated */ +const SQL_FD_FETCH_RESUME = 64; +const SQL_FETCH_BOOKMARK = 8; +const SQL_FETCH_PREV = SQL_FETCH_PRIOR;/* deprecated */ +const SQL_FETCH_RESUME = 7;/* deprecated */ + +const SQL_FILE_NOT_SUPPORTED = 0x0000; +const SQL_FILE_TABLE = 0x0001; +const SQL_FILE_QUALIFIER = 0x0002; +const SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; +const SQL_FILE_USAGE = 84; + +const SQL_FN_CVT_CONVERT = 0x00000001L; +const SQL_FN_NUM_ABS = 0x00000001L; +const SQL_FN_NUM_ACOS = 0x00000002L; +const SQL_FN_NUM_ASIN = 0x00000004L; +const SQL_FN_NUM_ATAN = 0x00000008L; +const SQL_FN_NUM_ATAN2 = 0x00000010L; +const SQL_FN_NUM_CEILING = 0x00000020L; +const SQL_FN_NUM_COS = 0x00000040L; +const SQL_FN_NUM_COT = 0x00000080L; +const SQL_FN_NUM_DEGREES = 0x00040000L; +const SQL_FN_NUM_EXP = 0x00000100L; +const SQL_FN_NUM_FLOOR = 0x00000200L; +const SQL_FN_NUM_LOG = 0x00000400L; +const SQL_FN_NUM_LOG10 = 0x00080000L; +const SQL_FN_NUM_MOD = 0x00000800L; +const SQL_FN_NUM_PI = 0x00010000L; +const SQL_FN_NUM_POWER = 0x00100000L; +const SQL_FN_NUM_RADIANS = 0x00200000L; +const SQL_FN_NUM_RAND = 0x00020000L; +const SQL_FN_NUM_ROUND = 0x00400000L; +const SQL_FN_NUM_SIGN = 0x00001000L; +const SQL_FN_NUM_SIN = 0x00002000L; +const SQL_FN_NUM_SQRT = 0x00004000L; +const SQL_FN_NUM_TAN = 0x00008000L; +const SQL_FN_NUM_TRUNCATE = 0x00800000L; +const SQL_FN_STR_ASCII = 0x00002000L; +const SQL_FN_STR_CHAR = 0x00004000L; +const SQL_FN_STR_CONCAT = 0x00000001L; +const SQL_FN_STR_DIFFERENCE = 0x00008000L; +const SQL_FN_STR_INSERT = 0x00000002L; +const SQL_FN_STR_LCASE = 0x00000040L; +const SQL_FN_STR_LEFT = 0x00000004L; +const SQL_FN_STR_LENGTH = 0x00000010L; +const SQL_FN_STR_LOCATE = 0x00000020L; +const SQL_FN_STR_LOCATE_2 = 0x00010000L; +const SQL_FN_STR_LTRIM = 0x00000008L; +const SQL_FN_STR_REPEAT = 0x00000080L; +const SQL_FN_STR_REPLACE = 0x00000100L; +const SQL_FN_STR_RIGHT = 0x00000200L; +const SQL_FN_STR_RTRIM = 0x00000400L; +const SQL_FN_STR_SOUNDEX = 0x00020000L; +const SQL_FN_STR_SPACE = 0x00040000L; +const SQL_FN_STR_SUBSTRING = 0x00000800L; +const SQL_FN_STR_UCASE = 0x00001000L; +const SQL_FN_SYS_DBNAME = 0x00000002L; +const SQL_FN_SYS_IFNULL = 0x00000004L; +const SQL_FN_SYS_USERNAME = 0x00000001L; +const SQL_FN_TD_CURDATE = 0x00000002L; +const SQL_FN_TD_CURTIME = 0x00000200L; +const SQL_FN_TD_DAYNAME = 0x00008000L; +const SQL_FN_TD_DAYOFMONTH = 0x00000004L; +const SQL_FN_TD_DAYOFWEEK = 0x00000008L; +const SQL_FN_TD_DAYOFYEAR = 0x00000010L; +const SQL_FN_TD_HOUR = 0x00000400L; +const SQL_FN_TD_MINUTE = 0x00000800L; +const SQL_FN_TD_MONTH = 0x00000020L; +const SQL_FN_TD_MONTHNAME = 0x00010000L; +const SQL_FN_TD_NOW = 0x00000001L; +const SQL_FN_TD_QUARTER = 0x00000040L; +const SQL_FN_TD_SECOND = 0x00001000L; +const SQL_FN_TD_TIMESTAMPADD = 0x00002000L; +const SQL_FN_TD_TIMESTAMPDIFF = 0x00004000L; +const SQL_FN_TD_WEEK = 0x00000080L; +const SQL_FN_TD_YEAR = 0x00000100L; +const SQL_FN_TSI_DAY = 0x00000010L; +const SQL_FN_TSI_FRAC_SECOND = 0x00000001L; +const SQL_FN_TSI_HOUR = 0x00000008L; +const SQL_FN_TSI_MINUTE = 0x00000004L; +const SQL_FN_TSI_MONTH = 0x00000040L; +const SQL_FN_TSI_QUARTER = 0x00000080L; +const SQL_FN_TSI_SECOND = 0x00000002L; +const SQL_FN_TSI_WEEK = 0x00000020L; +const SQL_FN_TSI_YEAR = 0x00000100L; +const SQL_GB_GROUP_BY_CONTAINS_SELECT = 2; +const SQL_GB_GROUP_BY_EQUALS_SELECT = 1; +const SQL_GB_NO_RELATION = 3; +const SQL_GB_NOT_SUPPORTED = 0; +const SQL_GD_BLOCK = 4; +const SQL_GD_BOUND = 8; +const SQL_GET_BOOKMARK = 13; +const SQL_GROUP_BY = 88; +const SQL_IGNORE = -6; +const SQL_INFO_FIRST = 0; +const SQL_KEYSET_SIZE = 8; +const SQL_KEYSET_SIZE_DEFAULT = 0UL; +const SQL_KEYWORDS = 89; +const SQL_LCK_EXCLUSIVE = 2; +const SQL_LCK_NO_CHANGE = 1; +const SQL_LCK_UNLOCK = 4; + +const SQL_LEN_BINARY_ATTR_OFFSET = -100; +const SQL_LEN_DATA_AT_EXEC_OFFSET = -100; +//MACRO #define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET) +//MACRO #define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) + +const SQL_LIKE_ESCAPE_CLAUSE = 113; +const SQL_LIKE_ONLY = 1; +const SQL_LOCK_EXCLUSIVE = 1; +const SQL_LOCK_NO_CHANGE = 0; +const SQL_LOCK_TYPES = 78; +const SQL_LOCK_UNLOCK = 2; +const SQL_LOGIN_TIMEOUT = 103; +const SQL_LOGIN_TIMEOUT_DEFAULT = 15UL; +const SQL_LONGVARBINARY = -4; +const SQL_LONGVARCHAR = -1; +const SQL_MAX_BINARY_LITERAL_LEN = 112; +const SQL_MAX_CHAR_LITERAL_LEN = 108; +const SQL_MAX_DSN_LENGTH = 32; +const SQL_MAX_LENGTH = 3; +const SQL_MAX_LENGTH_DEFAULT = 0UL; +const SQL_MAX_OPTION_STRING_LENGTH = 256; +const SQL_MAX_OWNER_NAME_LEN = 32; +const SQL_MAX_PROCEDURE_NAME_LEN = 33; +const SQL_MAX_QUALIFIER_NAME_LEN = 34; +const SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; +const SQL_MAX_ROWS = 1; +const SQL_MAX_ROWS_DEFAULT = 0UL; + +const SQL_MODE_READ_WRITE = 0UL; +const SQL_MODE_READ_ONLY = 1UL; +const SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; + +const SQL_MULT_RESULT_SETS = 36; +const SQL_MULTIPLE_ACTIVE_TXN = 37; +const SQL_NC_END = 0x0004; +const SQL_NC_START = 0x0002; +const SQL_NEED_LONG_DATA_LEN = 111; +const SQL_NNC_NON_NULL = 0x0001; +const SQL_NNC_NULL = 0x0000; +const SQL_NO_TOTAL = -4; +const SQL_NON_NULLABLE_COLUMNS = 75; + +const SQL_NOSCAN_OFF = 0UL; +const SQL_NOSCAN_ON = 1UL; +const SQL_NOSCAN = 2; +const SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; + +const SQL_NUMERIC_FUNCTIONS = 49; +const SQL_OAC_LEVEL1 = 0x0001; +const SQL_OAC_LEVEL2 = 0x0002; +const SQL_OAC_NONE = 0x0000; +const SQL_ODBC_API_CONFORMANCE = 9; +const SQL_ODBC_CURSORS = 110; +const SQL_ODBC_SAG_CLI_CONFORMANCE = 12; +const SQL_ODBC_SQL_CONFORMANCE = 15; +const SQL_ODBC_SQL_OPT_IEF = 73; +const SQL_ODBC_VER = 10; +const SQL_OPT_TRACE = 104; + +const SQL_OPT_TRACE_FILE_DEFAULT = "\\SQL.LOG"; +const SQL_OPT_TRACE_OFF = 0UL; +const SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; +const SQL_OPT_TRACE_ON = 1UL; + +const SQL_OPT_TRACEFILE = 105; +const SQL_OSC_CORE = 1; +const SQL_OSC_EXTENDED = 2; +const SQL_OSC_MINIMUM = 0; +const SQL_OSCC_COMPLIANT = 1; +const SQL_OSCC_NOT_COMPLIANT = 0; +const SQL_OU_DML_STATEMENTS = 1; +const SQL_OU_INDEX_DEFINITION = 8; +const SQL_OU_PRIVILEGE_DEFINITION = 16; +const SQL_OU_PROCEDURE_INVOCATION = 2; +const SQL_OU_TABLE_DEFINITION = 4; +const SQL_OUTER_JOINS = 38; +const SQL_OWNER_TERM = 39; +const SQL_OWNER_USAGE = 91; +const SQL_PACKET_SIZE = 112; +const SQL_PARAM_INPUT = 1; +const SQL_PARAM_INPUT_OUTPUT = 2; +const SQL_PARAM_OUTPUT = 4; +const SQL_PARAM_TYPE_DEFAULT = SQL_PARAM_INPUT_OUTPUT; +const SQL_PARAM_TYPE_UNKNOWN = 0; +const SQL_PC_NOT_PSEUDO = 1; +const SQL_POS_ADD = 16; +const SQL_POS_DELETE = 8; +const SQL_POS_OPERATIONS = 79; +const SQL_POS_POSITION = 1; +const SQL_POS_REFRESH = 2; +const SQL_POS_UPDATE = 4; +const SQL_POSITION = 0; +const SQL_POSITIONED_STATEMENTS = 80; +const SQL_PROCEDURE_TERM = 40; +const SQL_PROCEDURES = 21; +const SQL_PS_POSITIONED_DELETE = 1; +const SQL_PS_POSITIONED_UPDATE = 2; +const SQL_PS_SELECT_FOR_UPDATE = 4; +const SQL_PT_FUNCTION = 2; +const SQL_PT_PROCEDURE = 1; +const SQL_PT_UNKNOWN = 0; +const SQL_QL_END = 0x0002; +const SQL_QL_START = 0x0001; +const SQL_QU_DML_STATEMENTS = 1; +const SQL_QU_INDEX_DEFINITION = 8; +const SQL_QU_PRIVILEGE_DEFINITION = 16; +const SQL_QU_PROCEDURE_INVOCATION = 2; +const SQL_QU_TABLE_DEFINITION = 4; +const SQL_QUALIFIER_LOCATION = 114; +const SQL_QUALIFIER_NAME_SEPARATOR = 41; +const SQL_QUALIFIER_TERM = 42; +const SQL_QUALIFIER_USAGE = 92; +const SQL_QUERY_TIMEOUT = 0; +const SQL_QUERY_TIMEOUT_DEFAULT = 0UL; +const SQL_QUICK = 0; +const SQL_QUIET_MODE = 111; +const SQL_QUOTED_IDENTIFIER_CASE = 93; + +const SQL_RD_OFF = 0UL; +const SQL_RD_ON = 1UL; +const SQL_RD_DEFAULT = SQL_RD_ON; + +const SQL_REFRESH = 1; +const SQL_RESTRICT = 1; +const SQL_RESULT_COL = 3; +const SQL_RETRIEVE_DATA = 11; +const SQL_RETURN_VALUE = 5; +const SQL_ROW_ADDED = 4; +const SQL_ROW_DELETED = 1; +const SQL_ROW_ERROR = 5; +const SQL_ROW_NOROW = 3; +const SQL_ROW_NUMBER = 14; +const SQL_ROW_SUCCESS = 0; +const SQL_ROW_UPDATED = 2; +const SQL_ROW_UPDATES = 11; +const SQL_ROWSET_SIZE = 9; +const SQL_ROWSET_SIZE_DEFAULT = 1UL; +const SQL_ROWVER = 2; +const SQL_SC_NON_UNIQUE = 0UL; +const SQL_SC_TRY_UNIQUE = 1UL; +const SQL_SC_UNIQUE = 2UL; +const SQL_SCCO_OPT_TIMESTAMP = SQL_SCCO_OPT_ROWVER;/* deprecated */ +const SQL_SCROLL_DYNAMIC = -2L;/* deprecated */ +const SQL_SCROLL_FORWARD_ONLY = 0L;/* deprecated */ +const SQL_SCROLL_KEYSET_DRIVEN = -1L;/* deprecated */ +const SQL_SCROLL_OPTIONS = 44; +const SQL_SCROLL_STATIC = -3L;/* deprecated */ +const SQL_SEARCHABLE = 3; +const SQL_SET_NULL = 2; +const SQL_SETPARAM_VALUE_MAX = -1L; +const SQL_SETPOS_MAX_LOCK_VALUE = SQL_LOCK_UNLOCK; +const SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD; +const SQL_SIMULATE_CURSOR = 10; +const SQL_SO_DYNAMIC = 4; +const SQL_SO_FORWARD_ONLY = 1; +const SQL_SO_KEYSET_DRIVEN = 2; +const SQL_SO_MIXED = 8; +const SQL_SO_STATIC = 16; +const SQL_SQ_COMPARISON = 1; +const SQL_SQ_CORRELATED_SUBQUERIES = 16; +const SQL_SQ_EXISTS = 2; +const SQL_SQ_IN = 4; +const SQL_SQ_QUANTIFIED = 8; +const SQL_SQLSTATE_SIZE = 5; +const SQL_SS_ADDITIONS = 1; +const SQL_SS_DELETIONS = 2; +const SQL_SS_UPDATES = 4; +const SQL_STATIC_SENSITIVITY = 83; +const SQL_STRING_FUNCTIONS = 50; +const SQL_SUBQUERIES = 95; +const SQL_SYSTEM_FUNCTIONS = 51; +const SQL_TABLE_STAT = 0; +const SQL_TABLE_TERM = 45; +const SQL_TIMEDATE_ADD_INTERVALS = 109; +const SQL_TIMEDATE_DIFF_INTERVALS = 110; +const SQL_TIMEDATE_FUNCTIONS = 52; +const SQL_TRANSLATE_DLL = 106; +const SQL_TRANSLATE_OPTION = 107; +const SQL_TXN_ISOLATION = 108; +const SQL_TXN_VERSIONING = 16; +const SQL_TYPE_NULL = 0; +const SQL_U_UNION = 1; +const SQL_U_UNION_ALL = 2; + +const SQL_UB_OFF = 0UL; +const SQL_UB_DEFAULT = SQL_UB_OFF; +const SQL_UB_ON = 01UL; + +const SQL_UNION = 96; +const SQL_UNSEARCHABLE = 0; +const SQL_UPDATE = 2; +const SQL_USE_BOOKMARKS = 12; +const SQL_VARBINARY = -3; + +const SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL; +const SQL_COLATT_OPT_MIN = SQL_COLUMN_COUNT; +const SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; + +//MACRO #define SQL_POSITION_TO(s, r) SQLSetPos(s, r, SQL_POSITION, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_LOCK_RECORD(s, r, l) SQLSetPos(s, r, SQL_POSITION, l) + +//MACRO #define SQL_REFRESH_RECORD(s, r, l) SQLSetPos(s, r, SQL_REFRESH, l) + +//MACRO #define SQL_UPDATE_RECORD(s, r) SQLSetPos(s, r, SQL_UPDATE, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_DELETE_RECORD(s, r) SQLSetPos(s, r, SQL_DELETE, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_ADD_RECORD(s, r) SQLSetPos(s, r, SQL_ADD, SQL_LOCK_NO_CHANGE) + + +static if (ODBCVER < 0x0300) { + const SQL_CONNECT_OPT_DRVR_START = 1000; + const SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; + const SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; + const SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; + const SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; + const SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; + const SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; + const SQL_TYPE_MIN = SQL_BIT; + const SQL_TYPE_MAX = SQL_VARCHAR; +} + +static if (ODBCVER < 0x0300) { + const SQL_NO_DATA_FOUND = 100; + const SQL_INTERVAL_YEAR = -80; + const SQL_INTERVAL_MONTH = -81; + const SQL_INTERVAL_YEAR_TO_MONTH = -82; + const SQL_INTERVAL_DAY = -83; + const SQL_INTERVAL_HOUR = -84; + const SQL_INTERVAL_MINUTE = -85; + const SQL_INTERVAL_SECOND = -86; + const SQL_INTERVAL_DAY_TO_HOUR = -87; + const SQL_INTERVAL_DAY_TO_MINUTE = -88; + const SQL_INTERVAL_DAY_TO_SECOND = -89; + const SQL_INTERVAL_HOUR_TO_MINUTE = -90; + const SQL_INTERVAL_HOUR_TO_SECOND = -91; + const SQL_INTERVAL_MINUTE_TO_SECOND = -92; +} else { + const SQL_NO_DATA_FOUND = SQL_NO_DATA; + const SQL_CODE_YEAR = 1; + const SQL_CODE_MONTH = 2; + const SQL_CODE_DAY = 3; + const SQL_CODE_HOUR = 4; + const SQL_CODE_MINUTE = 5; + const SQL_CODE_SECOND = 6; + const SQL_CODE_YEAR_TO_MONTH = 7; + const SQL_CODE_DAY_TO_HOUR = 8; + const SQL_CODE_DAY_TO_MINUTE = 9; + const SQL_CODE_DAY_TO_SECOND = 10; + const SQL_CODE_HOUR_TO_MINUTE = 11; + const SQL_CODE_HOUR_TO_SECOND = 12; + const SQL_CODE_MINUTE_TO_SECOND = 13; + const SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; + const SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; + const SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; + const SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; + const SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; + const SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; + const SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; + const SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; + const SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; + const SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; + const SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; + const SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; + const SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; +}//[Yes] #endif + + +static if ((ODBCVER >= 0x0201) && (ODBCVER < 0x0300)) { + const SQL_OJ_CAPABILITIES = 65003; +} + +static if (ODBCVER >= 0x0250) { + const SQL_NO_ACTION = 3; + const SQL_SET_DEFAULT = 4; +} + +static if (ODBCVER >= 0x0300) { + const SQL_ACTIVE_ENVIRONMENTS = 116; + const SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; + const SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; + const SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; + const SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; + const SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; + const SQL_AF_ALL = 0x00000040L; + const SQL_AF_AVG = 0x00000001L; + const SQL_AF_COUNT = 0x00000002L; + const SQL_AF_DISTINCT = 0x00000020L; + const SQL_AF_MAX = 0x00000004L; + const SQL_AF_MIN = 0x00000008L; + const SQL_AF_SUM = 0x00000010L; + const SQL_AGGREGATE_FUNCTIONS = 169; + const SQL_ALL_CATALOGS = "%"; + const SQL_ALL_SCHEMAS = "%"; + const SQL_ALL_TABLE_TYPES = "%"; + const SQL_ALTER_DOMAIN = 117; + const SQL_AM_CONNECTION = 1; + const SQL_AM_NONE = 0; + const SQL_AM_STATEMENT = 2; + const SQL_API_ODBC3_ALL_FUNCTIONS = 999; + const SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; + const SQL_API_SQLALLOCHANDLESTD = 73; + const SQL_API_SQLBULKOPERATIONS = 24; + const SQL_ASYNC_MODE = 10021; + const SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; + const SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; + const SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; + const SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; + const SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; + const SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; + const SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; + const SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; + const SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; + const SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; + const SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; + const SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; + const SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; + const SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; + const SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; + const SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; + const SQL_ATTR_ASYNC_ENABLE = 4; + const SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; + const SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; + const SQL_ATTR_CONNECTION_POOLING = 201; + const SQL_ATTR_CONNECTION_TIMEOUT = 113; + const SQL_ATTR_CP_MATCH = 202; + const SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; + const SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; + const SQL_ATTR_DISCONNECT_BEHAVIOR = 114; + const SQL_ATTR_ENABLE_AUTO_IPD = 15; + const SQL_ATTR_ENLIST_IN_DTC = 1207; + const SQL_ATTR_ENLIST_IN_XA = 1208; + const SQL_ATTR_FETCH_BOOKMARK_PTR = 16; + const SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; + const SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; + const SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; + const SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; + const SQL_ATTR_NOSCAN = SQL_NOSCAN; + const SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; + const SQL_ATTR_ODBC_VERSION = 200; + const SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; + const SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; + const SQL_ATTR_PARAM_BIND_TYPE = 18; + const SQL_ATTR_PARAM_OPERATION_PTR = 19; + const SQL_ATTR_PARAM_STATUS_PTR = 20; + const SQL_ATTR_PARAMS_PROCESSED_PTR = 21; + const SQL_ATTR_PARAMSET_SIZE = 22; + const SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; + const SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; + const SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; + const SQL_ATTR_ROW_ARRAY_SIZE = 27; + const SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; + const SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; + const SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; + const SQL_ATTR_ROW_OPERATION_PTR = 24; + const SQL_ATTR_ROW_STATUS_PTR = 25; + const SQL_ATTR_ROWS_FETCHED_PTR = 26; + const SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; + const SQL_ATTR_TRACE = SQL_OPT_TRACE; + const SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; + const SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; + const SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; + const SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; + const SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; + const SQL_BATCH_ROW_COUNT = 120; + const SQL_BATCH_SUPPORT = 121; + const SQL_BRC_EXPLICIT = 0x0000002; + const SQL_BRC_PROCEDURES = 0x0000001; + const SQL_BRC_ROLLED_UP = 0x0000004; + const SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; + const SQL_BS_ROW_COUNT_PROC = 0x00000008L; + const SQL_BS_SELECT_EXPLICIT = 0x00000001L; + const SQL_BS_SELECT_PROC = 0x00000004L; + const SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; + const SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; + const SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; + const SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; + const SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; + const SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; + const SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; + const SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; + const SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; + const SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; + const SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; + const SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; + const SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; + const SQL_C_NUMERIC = SQL_NUMERIC; + const SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; + const SQL_C_TYPE_DATE = SQL_TYPE_DATE; + const SQL_C_TYPE_TIME = SQL_TYPE_TIME; + const SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; + const SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; + const SQL_C_VARBOOKMARK = SQL_C_BINARY; + const SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; + const SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; + const SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; + const SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; + const SQL_CA_CREATE_ASSERTION = 0x00000001L; + const SQL_CA1_ABSOLUTE = 0x00000002L; + const SQL_CA1_BOOKMARK = 0x00000008L; + const SQL_CA1_BULK_ADD = 0x00010000L; + const SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; + const SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; + const SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; + const SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; + const SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; + const SQL_CA1_LOCK_UNLOCK = 0x00000100L; + const SQL_CA1_NEXT = 0x00000001L; + const SQL_CA1_POS_DELETE = 0x00000800L; + const SQL_CA1_POS_POSITION = 0x00000200L; + const SQL_CA1_POS_REFRESH = 0x00001000L; + const SQL_CA1_POS_UPDATE = 0x00000400L; + const SQL_CA1_POSITIONED_DELETE = 0x00004000L; + const SQL_CA1_POSITIONED_UPDATE = 0x00002000L; + const SQL_CA1_RELATIVE = 0x00000004L; + const SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; + const SQL_CA2_CRC_APPROXIMATE = 0x00002000L; + const SQL_CA2_CRC_EXACT = 0x00001000L; + const SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; + + const SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; + const SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; + const SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; + const SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; + const SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; + const SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | + SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; + + const SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; + const SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; + const SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; + const SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; + const SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; + const SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; + const SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; + const SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; + const SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; + const SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; + const SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; + const SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; + const SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; + const SQL_CCOL_CREATE_COLLATION = 0x00000001L; + const SQL_CCS_COLLATE_CLAUSE = 0x00000002L; + const SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; + const SQL_CCS_LIMITED_COLLATION = 0x00000004L; + const SQL_CDO_COLLATION = 0x00000008L; + const SQL_CDO_CONSTRAINT = 0x00000004L; + const SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; + const SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_CDO_CREATE_DOMAIN = 0x00000001L; + const SQL_CDO_DEFAULT = 0x00000002L; + const SQL_CL_END = SQL_QL_END; + const SQL_CL_START = SQL_QL_START; + const SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; + const SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; + const SQL_COLUMN_DRIVER_START = 1000; + const SQL_COLUMN_IGNORE = SQL_IGNORE; + const SQL_COLUMN_NUMBER_UNKNOWN = -2; + const SQL_CONVERT_GUID = 173; + + const SQL_CONVERT_WCHAR = 122; + const SQL_CONVERT_INTERVAL_DAY_TIME = 123; + const SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; + const SQL_CONVERT_WLONGVARCHAR = 125; + const SQL_CONVERT_WVARCHAR = 126; + + const SQL_CREATE_ASSERTION = 127; + const SQL_CREATE_CHARACTER_SET = 128; + const SQL_CREATE_COLLATION = 129; + const SQL_CREATE_DOMAIN = 130; + const SQL_CREATE_SCHEMA = 131; + const SQL_CREATE_TABLE = 132; + const SQL_CREATE_TRANSLATION = 133; + const SQL_CREATE_VIEW = 134; + + + const SQL_CP_OFF = 0UL; + const SQL_CP_DEFAULT = SQL_CP_OFF; + const SQL_CP_ONE_PER_DRIVER = 1UL; + const SQL_CP_ONE_PER_HENV = 2UL; + + const SQL_CP_STRICT_MATCH = 0UL; + const SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; + const SQL_CP_RELAXED_MATCH = 1UL; + + const SQL_CS_CREATE_SCHEMA = 0x00000001L; + const SQL_CS_AUTHORIZATION = 0x00000002L; + const SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; + + const SQL_CT_COLUMN_COLLATION = 0x00000800L; + const SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; + const SQL_CT_COLUMN_DEFAULT = 0x00000400L; + const SQL_CT_COMMIT_DELETE = 0x00000004L; + const SQL_CT_COMMIT_PRESERVE = 0x00000002L; + const SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; + const SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; + const SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; + const SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; + const SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; + const SQL_CT_CREATE_TABLE = 0x00000001L; + const SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; + const SQL_CT_LOCAL_TEMPORARY = 0x00000010L; + const SQL_CT_TABLE_CONSTRAINT = 0x00001000L; + + const SQL_CTR_CREATE_TRANSLATION = 0x00000001L; + + const SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; + const SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; + const SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; + const SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; + const SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; + + const SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; + const SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; + const SQL_CVT_WCHAR = 0x00200000L; + const SQL_CVT_WLONGVARCHAR = 0x00400000L; + const SQL_CVT_WVARCHAR = 0x00800000L; + const SQL_CVT_GUID = 0x01000000L; + + const SQL_DA_DROP_ASSERTION = 0x00000001L; + const SQL_DATETIME_LITERALS = 119; + + const SQL_DB_DISCONNECT = 1UL; + const SQL_DB_RETURN_TO_POOL = 0UL; + const SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; + + const SQL_DC_DROP_COLLATION = 0x00000001L; + const SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; + const SQL_DD_CASCADE = 0x00000004L; + const SQL_DD_DROP_DOMAIN = 0x00000001L; + const SQL_DD_RESTRICT = 0x00000002L; + const SQL_DDL_INDEX = 170; + const SQL_DELETE_BY_BOOKMARK = 6; + const SQL_DESC_ARRAY_SIZE = 20; + const SQL_DESC_ARRAY_STATUS_PTR = 21; + const SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; + const SQL_DESC_BASE_COLUMN_NAME = 22; + const SQL_DESC_BASE_TABLE_NAME = 23; + const SQL_DESC_BIND_OFFSET_PTR = 24; + const SQL_DESC_BIND_TYPE = 25; + const SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; + const SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; + const SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; + const SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; + const SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; + const SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; + const SQL_DESC_LABEL = SQL_COLUMN_LABEL; + const SQL_DESC_LITERAL_PREFIX = 27; + const SQL_DESC_LITERAL_SUFFIX = 28; + const SQL_DESC_LOCAL_TYPE_NAME = 29; + const SQL_DESC_MAXIMUM_SCALE = 30; + const SQL_DESC_MINIMUM_SCALE = 31; + const SQL_DESC_NUM_PREC_RADIX = 32; + const SQL_DESC_PARAMETER_TYPE = 33; + const SQL_DESC_ROWS_PROCESSED_PTR = 34; + const SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; + const SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; + const SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; + const SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; + const SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; + const SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; + const SQL_DI_CREATE_INDEX = 0x00000001L; + const SQL_DI_DROP_INDEX = 0x00000002L; + + const SQL_DIAG_COLUMN_NUMBER = -1247; + const SQL_DIAG_ROW_NUMBER = -1248; + const SQL_DIAG_CURSOR_ROW_COUNT = -1249; + + const SQL_DL_SQL92_DATE = 0x00000001L; + const SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; + const SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; + const SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; + const SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; + const SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; + const SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; + const SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; + const SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; + const SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; + const SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; + const SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; + const SQL_DL_SQL92_TIME = 0x00000002L; + const SQL_DL_SQL92_TIMESTAMP = 0x00000004L; + const SQL_DM_VER = 171; + const SQL_DRIVER_HDESC = 135; + const SQL_DROP_ASSERTION = 136; + const SQL_DROP_CHARACTER_SET = 137; + const SQL_DROP_COLLATION = 138; + const SQL_DROP_DOMAIN = 139; + const SQL_DROP_SCHEMA = 140; + const SQL_DROP_TABLE = 141; + const SQL_DROP_TRANSLATION = 142; + const SQL_DROP_VIEW = 143; + const SQL_DS_CASCADE = 0x00000004L; + const SQL_DS_DROP_SCHEMA = 0x00000001L; + const SQL_DS_RESTRICT = 0x00000002L; + const SQL_DT_CASCADE = 0x00000004L; + const SQL_DT_DROP_TABLE = 0x00000001L; + const SQL_DT_RESTRICT = 0x00000002L; + const SQL_DTC_DONE = 0L; + const SQL_DTR_DROP_TRANSLATION = 0x00000001L; + const SQL_DV_CASCADE = 0x00000004L; + const SQL_DV_DROP_VIEW = 0x00000001L; + const SQL_DV_RESTRICT = 0x00000002L; + const SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; + const SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; + const SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; + const SQL_EXT_API_START = 40; + const SQL_FETCH_BY_BOOKMARK = 7; + const SQL_FETCH_FIRST_SYSTEM = 32; + const SQL_FETCH_FIRST_USER = 31; + const SQL_FN_CVT_CAST = 0x00000002L; + const SQL_FN_STR_BIT_LENGTH = 0x00080000L; + const SQL_FN_STR_CHAR_LENGTH = 0x00100000L; + const SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; + const SQL_FN_STR_OCTET_LENGTH = 0x00400000L; + const SQL_FN_STR_POSITION = 0x00800000L; + const SQL_FN_TD_CURRENT_DATE = 0x00020000L; + const SQL_FN_TD_CURRENT_TIME = 0x00040000L; + const SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; + const SQL_FN_TD_EXTRACT = 0x00100000L; + const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; + const SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; + /* #define SQL_FUNC_EXISTS(exists, api) + ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? + SQL_TRUE : SQL_FALSE ) + */ + const SQL_GB_COLLATE = 0x0004; + const SQL_HANDLE_SENV = 5; + + const SQL_IK_NONE = 0; + const SQL_IK_ASC = 1; + const SQL_IK_DESC = 2; + const SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; + + const SQL_INDEX_KEYWORDS = 148; + const SQL_INFO_DRIVER_START = 1000; + const SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; + const SQL_INFO_SCHEMA_VIEWS = 149; + const SQL_INITIALLY_DEFERRED = 5; + const SQL_INITIALLY_IMMEDIATE = 6; + const SQL_INSERT_STATEMENT = 172; + const SQL_INTERVAL = 10; + const SQL_IS_INSERT_LITERALS = 0x00000001L; + const SQL_IS_INSERT_SEARCHED = 0x00000002L; + const SQL_IS_INTEGER = -6; + const SQL_IS_POINTER = -4; + const SQL_IS_SELECT_INTO = 0x00000004L; + const SQL_IS_SMALLINT = -8; + const SQL_IS_UINTEGER = -5; + const SQL_IS_USMALLINT = -7; + const SQL_ISV_ASSERTIONS = 0x00000001L; + const SQL_ISV_CHARACTER_SETS = 0x00000002L; + const SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; + const SQL_ISV_COLLATIONS = 0x00000008L; + const SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; + const SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; + const SQL_ISV_COLUMNS = 0x00000040L; + const SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; + const SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; + const SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; + const SQL_ISV_DOMAINS = 0x00000400L; + const SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; + const SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; + const SQL_ISV_SCHEMATA = 0x00002000L; + const SQL_ISV_SQL_LANGUAGES = 0x00004000L; + const SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; + const SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; + const SQL_ISV_TABLES = 0x00020000L; + const SQL_ISV_TRANSLATIONS = 0x00040000L; + const SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; + const SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; + const SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; + const SQL_ISV_VIEWS = 0x00400000L; + const SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; + const SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; + const SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; + const SQL_NO_COLUMN_NUMBER = -1; + const SQL_NO_ROW_NUMBER = -1; + const SQL_NOT_DEFERRABLE = 7; + const SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; + const SQL_NUM_FUNCTIONS = 23; + const SQL_ODBC_INTERFACE_CONFORMANCE = 152; + + enum : ULONG { + SQL_OIC_CORE = 1, + SQL_OIC_LEVEL1, + SQL_OIC_LEVEL2 + } + enum : ULONG { + SQL_OV_ODBC2 = 2, + SQL_OV_ODBC3 = 3 + } + + const ULONG + SQL_PARAM_BIND_BY_COLUMN = 0, + SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; + + const SQL_PARAM_ARRAY_ROW_COUNTS = 153; + const SQL_PARAM_ARRAY_SELECTS = 154; + const SQL_PARAM_DIAG_UNAVAILABLE = 1; + const SQL_PARAM_ERROR = 5; + const SQL_PARAM_IGNORE = 1; + const SQL_PARAM_PROCEED = 0; + const SQL_PARAM_SUCCESS = 0; + const SQL_PARAM_SUCCESS_WITH_INFO = 6; + const SQL_PARAM_UNUSED = 7; + + const SQL_PARC_BATCH = 1; + const SQL_PARC_NO_BATCH = 2; + const SQL_PAS_BATCH = 1; + const SQL_PAS_NO_BATCH = 2; + const SQL_PAS_NO_SELECT = 3; + + const SQL_ROW_IGNORE = 1; + const SQL_ROW_NUMBER_UNKNOWN = -2; + const SQL_ROW_PROCEED = 0; + const SQL_ROW_SUCCESS_WITH_INFO = 6; + + const SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; + const SQL_SC_SQL92_ENTRY = 0x00000001L; + const SQL_SC_SQL92_FULL = 0x00000008L; + const SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; + + const SQL_SCC_ISO92_CLI = 0x00000002L; + const SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; + + const SQL_SCHEMA_TERM = SQL_OWNER_TERM; + const SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; + const SQL_SDF_CURRENT_DATE = 0x00000001L; + const SQL_SDF_CURRENT_TIME = 0x00000002L; + const SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; + const SQL_SFKD_CASCADE = 0x00000001L; + const SQL_SFKD_NO_ACTION = 0x00000002L; + const SQL_SFKD_SET_DEFAULT = 0x00000004L; + const SQL_SFKD_SET_NULL = 0x00000008L; + const SQL_SFKU_CASCADE = 0x00000001L; + const SQL_SFKU_NO_ACTION = 0x00000002L; + const SQL_SFKU_SET_DEFAULT = 0x00000004L; + const SQL_SFKU_SET_NULL = 0x00000008L; + const SQL_SG_DELETE_TABLE = 0x00000020L; + const SQL_SG_INSERT_COLUMN = 0x00000080L; + const SQL_SG_INSERT_TABLE = 0x00000040L; + const SQL_SG_REFERENCES_COLUMN = 0x00000200L; + const SQL_SG_REFERENCES_TABLE = 0x00000100L; + const SQL_SG_SELECT_TABLE = 0x00000400L; + const SQL_SG_UPDATE_COLUMN = 0x00001000L; + const SQL_SG_UPDATE_TABLE = 0x00000800L; + const SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; + const SQL_SG_USAGE_ON_COLLATION = 0x00000004L; + const SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; + const SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; + const SQL_SG_WITH_GRANT_OPTION = 0x00000010L; + const SQL_SNVF_BIT_LENGTH = 0x00000001L; + const SQL_SNVF_CHAR_LENGTH = 0x00000002L; + const SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; + const SQL_SNVF_EXTRACT = 0x00000008L; + const SQL_SNVF_OCTET_LENGTH = 0x00000010L; + const SQL_SNVF_POSITION = 0x00000020L; + const SQL_SP_BETWEEN = 0x00000800L; + const SQL_SP_COMPARISON = 0x00001000L; + const SQL_SP_EXISTS = 0x00000001L; + const SQL_SP_IN = 0x00000400L; + const SQL_SP_ISNOTNULL = 0x00000002L; + const SQL_SP_ISNULL = 0x00000004L; + const SQL_SP_LIKE = 0x00000200L; + const SQL_SP_MATCH_FULL = 0x00000008L; + const SQL_SP_MATCH_PARTIAL = 0x00000010L; + const SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; + const SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; + const SQL_SP_OVERLAPS = 0x00000080L; + const SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; + const SQL_SP_UNIQUE = 0x00000100L; + const SQL_SQL_CONFORMANCE = 118; + const SQL_SQL92_DATETIME_FUNCTIONS = 155; + const SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; + const SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; + const SQL_SQL92_GRANT = 158; + const SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; + const SQL_SQL92_PREDICATES = 160; + const SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; + const SQL_SQL92_REVOKE = 162; + const SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; + const SQL_SQL92_STRING_FUNCTIONS = 164; + const SQL_SQL92_VALUE_EXPRESSIONS = 165; + const SQL_SR_CASCADE = 0x00000020L; + const SQL_SR_DELETE_TABLE = 0x00000080L; + const SQL_SR_GRANT_OPTION_FOR = 0x00000010L; + const SQL_SR_INSERT_COLUMN = 0x00000200L; + const SQL_SR_INSERT_TABLE = 0x00000100L; + const SQL_SR_REFERENCES_COLUMN = 0x00000800L; + const SQL_SR_REFERENCES_TABLE = 0x00000400L; + const SQL_SR_RESTRICT = 0x00000040L; + const SQL_SR_SELECT_TABLE = 0x00001000L; + const SQL_SR_UPDATE_COLUMN = 0x00004000L; + const SQL_SR_UPDATE_TABLE = 0x00002000L; + const SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; + const SQL_SR_USAGE_ON_COLLATION = 0x00000004L; + const SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; + const SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; + const SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; + const SQL_SRJO_CROSS_JOIN = 0x00000002L; + const SQL_SRJO_EXCEPT_JOIN = 0x00000004L; + const SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; + const SQL_SRJO_INNER_JOIN = 0x00000010L; + const SQL_SRJO_INTERSECT_JOIN = 0x00000020L; + const SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; + const SQL_SRJO_NATURAL_JOIN = 0x00000080L; + const SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; + const SQL_SRJO_UNION_JOIN = 0x00000200L; + const SQL_SRVC_DEFAULT = 0x00000004L; + const SQL_SRVC_NULL = 0x00000002L; + const SQL_SRVC_ROW_SUBQUERY = 0x00000008L; + const SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; + const SQL_SSF_CONVERT = 0x00000001L; + const SQL_SSF_LOWER = 0x00000002L; + const SQL_SSF_SUBSTRING = 0x00000008L; + const SQL_SSF_TRANSLATE = 0x00000010L; + const SQL_SSF_TRIM_BOTH = 0x00000020L; + const SQL_SSF_TRIM_LEADING = 0x00000040L; + const SQL_SSF_TRIM_TRAILING = 0x00000080L; + const SQL_SSF_UPPER = 0x00000004L; + const SQL_STANDARD_CLI_CONFORMANCE = 166; + const SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; + const SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; + const SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; + const SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; + const SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; + const SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; + const SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; + const SQL_SVE_CASE = 0x00000001L; + const SQL_SVE_CAST = 0x00000002L; + const SQL_SVE_COALESCE = 0x00000004L; + const SQL_SVE_NULLIF = 0x00000008L; + const SQL_UB_FIXED = SQL_UB_ON; + const SQL_UB_VARIABLE = 2UL; + const SQL_UNION_STATEMENT = SQL_UNION; + const SQL_UPDATE_BY_BOOKMARK = 5; + const SQL_US_UNION = SQL_U_UNION; + const SQL_US_UNION_ALL = SQL_U_UNION_ALL; +}//[Yes] #endif /* ODBCVER >= 0x300 */ +static if (ODBCVER >= 0x0350) { + const SQL_DESC_ROWVER = 35; + const SQL_GUID = -11; + const SQL_C_GUID = SQL_GUID; + //#ifdef ODBC_STD + //#define SQLAllocHandle SQLAllocHandleStd + //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) + //#define SQL_YEAR SQL_CODE_YEAR + //#define SQL_MONTH SQL_CODE_MONTH + //#define SQL_DAY SQL_CODE_DAY + //#define SQL_HOUR SQL_CODE_HOUR + //#define SQL_MINUTE SQL_CODE_MINUTE + //#define SQL_SECOND SQL_CODE_SECOND + //#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH + //#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR + //#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE + //#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND + //#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE + //#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND + //#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND + //#endif /* ODBC_STD */ +}//#endif /* ODBCVER >= 0x0350 */ + +//static if (ODBCVER >= 0x0351) { +const SQL_ATTR_ANSI_APP=115; +const SQL_AA_TRUE=1L; +const SQL_AA_FALSE=0L; +//}//[Yes] #endif + +const TRACE_VERSION=1000; +const TRACE_ON=1; + +const char [] SQL_ODBC_KEYWORDS = + "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " + ~ "ASC, ASSERTION, AT, AUTHORIZATION, AVG, " + ~ "BEGIN, BETWEEN, BIT, BIT_LENGTH, BOTH, BY, CASCADE, CASCADED, CASE, CAST, CATALOG, " + ~ "CHAR, CHAR_LENGTH, CHARACTER, CHARACTER_LENGTH, CHECK, CLOSE, COALESCE, " + ~ "COLLATE, COLLATION, COLUMN, COMMIT, CONNECT, CONNECTION, CONSTRAINT, " + ~ "CONSTRAINTS, CONTINUE, CONVERT, CORRESPONDING, COUNT, CREATE, CROSS, CURRENT, " + ~ "CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, " + ~ "DATE, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, " + ~ "DEFERRED, DELETE, DESC, DESCRIBE, DESCRIPTOR, DIAGNOSTICS, DISCONNECT, " + ~ "DISTINCT, DOMAIN, DOUBLE, DROP, " + ~ "ELSE, END, END-EXEC, ESCAPE, EXCEPT, EXCEPTION, EXEC, EXECUTE, " + ~ "EXISTS, EXTERNAL, EXTRACT, " + ~ "FALSE, FETCH, FIRST, FLOAT, FOR, FOREIGN, FORTRAN, FOUND, FROM, FULL, " + ~ "GET, GLOBAL, GO, GOTO, GRANT, GROUP, HAVING, HOUR, " + ~ "IDENTITY, IMMEDIATE, IN, INCLUDE, INDEX, INDICATOR, INITIALLY, INNER, " + ~ "INPUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, ISOLATION, " + ~ "JOIN, KEY, LANGUAGE, LAST, LEADING, LEFT, LEVEL, LIKE, LOCAL, LOWER, " + ~ "MATCH, MAX, MIN, MINUTE, MODULE, MONTH, " + ~ "NAMES, NATIONAL, NATURAL, NCHAR, NEXT, NO, NONE, NOT, NULL, NULLIF, NUMERIC, " + ~ "OCTET_LENGTH, OF, ON, ONLY, OPEN, OPTION, OR, ORDER, OUTER, OUTPUT, OVERLAPS, " + ~ "PAD, PARTIAL, PASCAL, PLI, POSITION, PRECISION, PREPARE, PRESERVE, " + ~ "PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, " + ~ "READ, REAL, REFERENCES, RELATIVE, RESTRICT, REVOKE, RIGHT, ROLLBACK, ROWS" + ~ "SCHEMA, SCROLL, SECOND, SECTION, SELECT, SESSION, SESSION_USER, SET, SIZE, " + ~ "SMALLINT, SOME, SPACE, SQL, SQLCA, SQLCODE, SQLERROR, SQLSTATE, SQLWARNING, " + ~ "SUBSTRING, SUM, SYSTEM_USER, " + ~ "TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, " + ~ "TO, TRAILING, TRANSACTION, TRANSLATE, TRANSLATION, TRIM, TRUE, " + ~ "UNION, UNIQUE, UNKNOWN, UPDATE, UPPER, USAGE, USER, USING, " + ~ "VALUE, VALUES, VARCHAR, VARYING, VIEW, WHEN, WHENEVER, WHERE, WITH, WORK, WRITE, " + ~ "YEAR, ZONE"; +extern (Windows) { + SQLRETURN SQLDriverConnect(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLBrowseConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColumnPrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLColAttributes(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLDescribeParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLExtendedFetch(SQLHSTMT, SQLUSMALLINT, SQLINTEGER, SQLUINTEGER*, SQLUSMALLINT*); + SQLRETURN SQLForeignKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLMoreResults(SQLHSTMT); + SQLRETURN SQLNativeSql(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNumParams(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLParamOptions(SQLHSTMT, SQLUINTEGER, SQLUINTEGER*); + SQLRETURN SQLPrimaryKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedures(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetPos(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDrivers(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBindParameter(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLSetScrollOptions(SQLHSTMT, SQLUSMALLINT, SQLLEN, SQLUSMALLINT);/* deprecated */ + DWORD ODBCGetTryWaitValue(); + BOOL ODBCSetTryWaitValue(DWORD); + RETCODE TraceOpenLogFile(LPWSTR, LPWSTR, DWORD); + RETCODE TraceCloseLogFile(); + VOID TraceReturn(RETCODE, RETCODE); + DWORD TraceVersion(); + //static if (ODBCVER >= 0x0300) { + SQLRETURN SQLBulkOperations(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLAllocHandleStd( SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + //} +} Index: src/win32/sqltypes.d ================================================================== --- src/win32/sqltypes.d +++ src/win32/sqltypes.d @@ -1,142 +1,142 @@ -/***********************************************************************\ -* sqltypes.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.sqltypes; - -/* Conversion notes: - It's assumed that ODBC >= 0x0300. -*/ - -private import win32.windef; -private import win32.basetyps; // for GUID - -alias byte SCHAR, SQLSCHAR; -alias int SDWORD, SLONG, SQLINTEGER; -alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; -alias ULONG UDWORD; -alias USHORT UWORD, SQLUSMALLINT; -alias double SDOUBLE, LDOUBLE; -alias float SFLOAT; -alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; -alias UCHAR SQLCHAR; -// #ifndef _WIN64 -alias UDWORD SQLUINTEGER; -// #endif - -//static if (ODBCVER >= 0x0300) { -alias HANDLE SQLHANDLE; -alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; -/* -} else { -alias void* SQLHENV; -alias void* SQLHDBC; -alias void* SQLHSTMT; -} -*/ -alias SQLSMALLINT SQLRETURN; -alias HWND SQLHWND; -alias ULONG BOOKMARK; - -alias SQLINTEGER SQLLEN, SQLROWOFFSET; -alias SQLUINTEGER SQLROWCOUNT, SQLULEN; -alias DWORD SQLTRANSID; -alias SQLUSMALLINT SQLSETPOSIROW; -alias wchar SQLWCHAR; - -version(Unicode) { - alias SQLWCHAR SQLTCHAR; -} else { - alias SQLCHAR SQLTCHAR; -} -//static if (ODBCVER >= 0x0300) { -alias ubyte SQLDATE, SQLDECIMAL; -alias double SQLDOUBLE, SQLFLOAT; -alias ubyte SQLNUMERIC; -alias float SQLREAL; -alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; -alias long ODBCINT64, SQLBIGINT; -alias ulong SQLUBIGINT; -//} - -struct DATE_STRUCT { - SQLSMALLINT year; - SQLUSMALLINT month; - SQLUSMALLINT day; -} - -struct TIME_STRUCT { - SQLUSMALLINT hour; - SQLUSMALLINT minute; - SQLUSMALLINT second; -} - -struct TIMESTAMP_STRUCT { - SQLSMALLINT year; - SQLUSMALLINT month; - SQLUSMALLINT day; - SQLUSMALLINT hour; - SQLUSMALLINT minute; - SQLUSMALLINT second; - SQLUINTEGER fraction; -} - -//static if (ODBCVER >= 0x0300) { -alias DATE_STRUCT SQL_DATE_STRUCT; -alias TIME_STRUCT SQL_TIME_STRUCT; -alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; - -enum SQLINTERVAL { - SQL_IS_YEAR = 1, - SQL_IS_MONTH, - SQL_IS_DAY, - SQL_IS_HOUR, - SQL_IS_MINUTE, - SQL_IS_SECOND, - SQL_IS_YEAR_TO_MONTH, - SQL_IS_DAY_TO_HOUR, - SQL_IS_DAY_TO_MINUTE, - SQL_IS_DAY_TO_SECOND, - SQL_IS_HOUR_TO_MINUTE, - SQL_IS_HOUR_TO_SECOND, - SQL_IS_MINUTE_TO_SECOND -} - -struct SQL_YEAR_MONTH_STRUCT { - SQLUINTEGER year; - SQLUINTEGER month; -} - -struct SQL_DAY_SECOND_STRUCT { - SQLUINTEGER day; - SQLUINTEGER hour; - SQLUINTEGER minute; - SQLUINTEGER second; - SQLUINTEGER fraction; -} - -struct SQL_INTERVAL_STRUCT { - SQLINTERVAL interval_type; - SQLSMALLINT interval_sign; - union _intval { - SQL_YEAR_MONTH_STRUCT year_month; - SQL_DAY_SECOND_STRUCT day_second; - } - _intval intval; -} - -const SQL_MAX_NUMERIC_LEN = 16; - -struct SQL_NUMERIC_STRUCT { - SQLCHAR precision; - SQLSCHAR scale; - SQLCHAR sign; - SQLCHAR val[SQL_MAX_NUMERIC_LEN]; -} -// } ODBCVER >= 0x0300 -alias GUID SQLGUID; +/***********************************************************************\ +* sqltypes.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sqltypes; + +/* Conversion notes: + It's assumed that ODBC >= 0x0300. +*/ + +private import win32.windef; +private import win32.basetyps; // for GUID + +alias byte SCHAR, SQLSCHAR; +alias int SDWORD, SLONG, SQLINTEGER; +alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; +alias ULONG UDWORD; +alias USHORT UWORD, SQLUSMALLINT; +alias double SDOUBLE, LDOUBLE; +alias float SFLOAT; +alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; +alias UCHAR SQLCHAR; +// #ifndef _WIN64 +alias UDWORD SQLUINTEGER; +// #endif + +//static if (ODBCVER >= 0x0300) { +alias TypeDef!(HANDLE) SQLHANDLE; +alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; +/* +} else { +alias void* SQLHENV; +alias void* SQLHDBC; +alias void* SQLHSTMT; +} +*/ +alias SQLSMALLINT SQLRETURN; +alias HWND SQLHWND; +alias ULONG BOOKMARK; + +alias SQLINTEGER SQLLEN, SQLROWOFFSET; +alias SQLUINTEGER SQLROWCOUNT, SQLULEN; +alias DWORD SQLTRANSID; +alias SQLUSMALLINT SQLSETPOSIROW; +alias wchar SQLWCHAR; + +version(Unicode) { + alias SQLWCHAR SQLTCHAR; +} else { + alias SQLCHAR SQLTCHAR; +} +//static if (ODBCVER >= 0x0300) { +alias ubyte SQLDATE, SQLDECIMAL; +alias double SQLDOUBLE, SQLFLOAT; +alias ubyte SQLNUMERIC; +alias float SQLREAL; +alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; +alias long ODBCINT64, SQLBIGINT; +alias ulong SQLUBIGINT; +//} + +struct DATE_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; +} + +struct TIME_STRUCT { + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; +} + +struct TIMESTAMP_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; + SQLUINTEGER fraction; +} + +//static if (ODBCVER >= 0x0300) { +alias DATE_STRUCT SQL_DATE_STRUCT; +alias TIME_STRUCT SQL_TIME_STRUCT; +alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; + +enum SQLINTERVAL { + SQL_IS_YEAR = 1, + SQL_IS_MONTH, + SQL_IS_DAY, + SQL_IS_HOUR, + SQL_IS_MINUTE, + SQL_IS_SECOND, + SQL_IS_YEAR_TO_MONTH, + SQL_IS_DAY_TO_HOUR, + SQL_IS_DAY_TO_MINUTE, + SQL_IS_DAY_TO_SECOND, + SQL_IS_HOUR_TO_MINUTE, + SQL_IS_HOUR_TO_SECOND, + SQL_IS_MINUTE_TO_SECOND +} + +struct SQL_YEAR_MONTH_STRUCT { + SQLUINTEGER year; + SQLUINTEGER month; +} + +struct SQL_DAY_SECOND_STRUCT { + SQLUINTEGER day; + SQLUINTEGER hour; + SQLUINTEGER minute; + SQLUINTEGER second; + SQLUINTEGER fraction; +} + +struct SQL_INTERVAL_STRUCT { + SQLINTERVAL interval_type; + SQLSMALLINT interval_sign; + union _intval { + SQL_YEAR_MONTH_STRUCT year_month; + SQL_DAY_SECOND_STRUCT day_second; + } + _intval intval; +} + +const SQL_MAX_NUMERIC_LEN = 16; + +struct SQL_NUMERIC_STRUCT { + SQLCHAR precision; + SQLSCHAR scale; + SQLCHAR sign; + SQLCHAR[SQL_MAX_NUMERIC_LEN] val; +} +// } ODBCVER >= 0x0300 +alias GUID SQLGUID; Index: src/win32/sqlucode.d ================================================================== --- src/win32/sqlucode.d +++ src/win32/sqlucode.d @@ -1,156 +1,156 @@ -/***********************************************************************\ -* sqlucode.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.sqlucode; - -private import win32.sqlext; - -const SQL_WCHAR = -8; -const SQL_WVARCHAR = -9; -const SQL_WLONGVARCHAR = -10; -const SQL_C_WCHAR = SQL_WCHAR; - -const SQL_SQLSTATE_SIZEW = 10; -version(Unicode) { - const SQL_C_TCHAR = SQL_C_WCHAR; -} else { - const SQL_C_TCHAR = SQL_C_CHAR; -} - -// Moved from sqlext -static if (ODBCVER <= 0x0300) { - const SQL_UNICODE = -95; - const SQL_UNICODE_VARCHAR = -96; - const SQL_UNICODE_LONGVARCHAR = -97; - const SQL_UNICODE_CHAR = SQL_UNICODE; -} else { - const SQL_UNICODE = SQL_WCHAR; - const SQL_UNICODE_VARCHAR = SQL_WVARCHAR; - const SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; - const SQL_UNICODE_CHAR = SQL_WCHAR; -} - -extern (Windows) { - SQLRETURN SQLBrowseConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLBrowseConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLColAttributeA(SQLHSTMT, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLColAttributeW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); - SQLRETURN SQLColAttributesA(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLColAttributesW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); - SQLRETURN SQLColumnPrivilegesA( SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnPrivilegesW( SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLDataSourcesA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDataSourcesW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDescribeColA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDescribeColW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLDriverConnectA(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLDriverConnectW(SQLHDBC, SQLHWND, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); - SQLRETURN SQLDriversA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLDriversW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLErrorA(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLErrorW(SQLHENV, SQLHDBC, SQLHSTMT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLExecDirectA(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLExecDirectW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); - SQLRETURN SQLForeignKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLForeignKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLGetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLPOINTER); - SQLRETURN SQLGetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetInfoA(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetInfoW(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetTypeInfoA(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLGetTypeInfoW(SQLHSTMT, SQLSMALLINT); - SQLRETURN SQLNativeSqlA(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLNativeSqlW(SQLHDBC, SQLWCHAR*, SQLINTEGER, SQLWCHAR*, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLPrepareA(SQLHSTMT, SQLCHAR*, SQLINTEGER); - SQLRETURN SQLPrepareW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); - SQLRETURN SQLPrimaryKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT ); - SQLRETURN SQLPrimaryKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProcedureColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLProceduresA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLProceduresW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLSetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLULEN); - SQLRETURN SQLSetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLSetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT); - SQLRETURN SQLSpecialColumnsA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLSpecialColumnsW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatisticsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLStatisticsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); - SQLRETURN SQLTablePrivilegesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTablePrivilegesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); - SQLRETURN SQLTablesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); - SQLRETURN SQLTablesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); - static if (ODBCVER >= 0x0300) { - SQLRETURN SQLGetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLGetDescRecA(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDescRecW(SQLHDESC, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); - SQLRETURN SQLGetDiagFieldA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagFieldW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRecA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetDiagRecW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); - SQLRETURN SQLGetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLGetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); - SQLRETURN SQLSetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - SQLRETURN SQLSetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); - } // #endif /* (ODBCVER >= 0x0300) */ -} - -version (Unicode) { - alias SQLBrowseConnectW SQLBrowseConnect; - alias SQLColAttributeW SQLColAttribute; - alias SQLColAttributesW SQLColAttributes; - alias SQLColumnPrivilegesW SQLColumnPrivileges; - alias SQLColumnsW SQLColumns; - alias SQLConnectW SQLConnect; - alias SQLDataSourcesW SQLDataSources; - alias SQLDescribeColW SQLDescribeCol; - alias SQLDriverConnectW SQLDriverConnect; - alias SQLDriversW SQLDrivers; - alias SQLErrorW SQLError; - alias SQLExecDirectW SQLExecDirect; - alias SQLForeignKeysW SQLForeignKeys; - alias SQLGetConnectAttrW SQLGetConnectAttr; - alias SQLGetConnectOptionW SQLGetConnectOption; - alias SQLGetCursorNameW SQLGetCursorName; - alias SQLGetDescFieldW SQLGetDescField; - alias SQLGetDescRecW SQLGetDescRec; - alias SQLGetDiagFieldW SQLGetDiagField; - alias SQLGetDiagRecW SQLGetDiagRec; - alias SQLGetInfoW SQLGetInfo; - alias SQLGetStmtAttrW SQLGetStmtAttr; - alias SQLGetTypeInfoW SQLGetTypeInfo; - alias SQLNativeSqlW SQLNativeSql; - alias SQLPrepareW SQLPrepare; - alias SQLPrimaryKeysW SQLPrimaryKeys; - alias SQLProcedureColumnsW SQLProcedureColumns; - alias SQLProceduresW SQLProcedures; - alias SQLSetConnectAttrW SQLSetConnectAttr; - alias SQLSetConnectOptionW SQLSetConnectOption; - alias SQLSetCursorNameW SQLSetCursorName; - alias SQLSetDescFieldW SQLSetDescField; - alias SQLSetStmtAttrW SQLSetStmtAttr; - alias SQLSpecialColumnsW SQLSpecialColumns; - alias SQLStatisticsW SQLStatistics; - alias SQLTablePrivilegesW SQLTablePrivileges; - alias SQLTablesW SQLTables; -} +/***********************************************************************\ +* sqlucode.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sqlucode; + +private import win32.sqlext; + +const SQL_WCHAR = -8; +const SQL_WVARCHAR = -9; +const SQL_WLONGVARCHAR = -10; +const SQL_C_WCHAR = SQL_WCHAR; + +const SQL_SQLSTATE_SIZEW = 10; +version(Unicode) { + const SQL_C_TCHAR = SQL_C_WCHAR; +} else { + const SQL_C_TCHAR = SQL_C_CHAR; +} + +// Moved from sqlext +static if (ODBCVER <= 0x0300) { + const SQL_UNICODE = -95; + const SQL_UNICODE_VARCHAR = -96; + const SQL_UNICODE_LONGVARCHAR = -97; + const SQL_UNICODE_CHAR = SQL_UNICODE; +} else { + const SQL_UNICODE = SQL_WCHAR; + const SQL_UNICODE_VARCHAR = SQL_WVARCHAR; + const SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; + const SQL_UNICODE_CHAR = SQL_WCHAR; +} + +extern (Windows) { + SQLRETURN SQLBrowseConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBrowseConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColAttributeA(SQLHSTMT, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributeW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributesA(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColAttributesW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColumnPrivilegesA( SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnPrivilegesW( SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSourcesA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDataSourcesW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDescribeColA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDescribeColW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDriverConnectA(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriverConnectW(SQLHDBC, SQLHWND, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriversA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDriversW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorA(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorW(SQLHENV, SQLHDBC, SQLHSTMT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLExecDirectA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecDirectW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLForeignKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLForeignKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLGetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoA(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoW(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfoA(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLGetTypeInfoW(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLNativeSqlA(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNativeSqlW(SQLHDBC, SQLWCHAR*, SQLINTEGER, SQLWCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLPrepareA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLPrepareW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLPrimaryKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLPrimaryKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSpecialColumnsA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLSpecialColumnsW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivilegesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablePrivilegesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLTablesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + static if (ODBCVER >= 0x0300) { + SQLRETURN SQLGetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLGetDescRecA(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDescRecW(SQLHDESC, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + } // #endif /* (ODBCVER >= 0x0300) */ +} + +version (Unicode) { + alias SQLBrowseConnectW SQLBrowseConnect; + alias SQLColAttributeW SQLColAttribute; + alias SQLColAttributesW SQLColAttributes; + alias SQLColumnPrivilegesW SQLColumnPrivileges; + alias SQLColumnsW SQLColumns; + alias SQLConnectW SQLConnect; + alias SQLDataSourcesW SQLDataSources; + alias SQLDescribeColW SQLDescribeCol; + alias SQLDriverConnectW SQLDriverConnect; + alias SQLDriversW SQLDrivers; + alias SQLErrorW SQLError; + alias SQLExecDirectW SQLExecDirect; + alias SQLForeignKeysW SQLForeignKeys; + alias SQLGetConnectAttrW SQLGetConnectAttr; + alias SQLGetConnectOptionW SQLGetConnectOption; + alias SQLGetCursorNameW SQLGetCursorName; + alias SQLGetDescFieldW SQLGetDescField; + alias SQLGetDescRecW SQLGetDescRec; + alias SQLGetDiagFieldW SQLGetDiagField; + alias SQLGetDiagRecW SQLGetDiagRec; + alias SQLGetInfoW SQLGetInfo; + alias SQLGetStmtAttrW SQLGetStmtAttr; + alias SQLGetTypeInfoW SQLGetTypeInfo; + alias SQLNativeSqlW SQLNativeSql; + alias SQLPrepareW SQLPrepare; + alias SQLPrimaryKeysW SQLPrimaryKeys; + alias SQLProcedureColumnsW SQLProcedureColumns; + alias SQLProceduresW SQLProcedures; + alias SQLSetConnectAttrW SQLSetConnectAttr; + alias SQLSetConnectOptionW SQLSetConnectOption; + alias SQLSetCursorNameW SQLSetCursorName; + alias SQLSetDescFieldW SQLSetDescField; + alias SQLSetStmtAttrW SQLSetStmtAttr; + alias SQLSpecialColumnsW SQLSpecialColumns; + alias SQLStatisticsW SQLStatistics; + alias SQLTablePrivilegesW SQLTablePrivileges; + alias SQLTablesW SQLTables; +} ADDED src/win32/sspi.d Index: src/win32/sspi.d ================================================================== --- src/win32/sspi.d +++ src/win32/sspi.d @@ -0,0 +1,380 @@ +/***********************************************************************\ +* sspi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Ellery Newcomer * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.sspi; + +import win32.windef; +import win32.ntdef; +import win32.w32api; +import win32.security; +import win32.ntsecapi; +import win32.subauth; + +enum :ULONG{ + SECPKG_CRED_INBOUND = 1, + SECPKG_CRED_OUTBOUND = 2, + SECPKG_CRED_BOTH = (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND), + SECPKG_CRED_ATTR_NAMES = 1, +} + +enum :ULONG{ + SECPKG_FLAG_INTEGRITY = 1, + SECPKG_FLAG_PRIVACY = 2, + SECPKG_FLAG_TOKEN_ONLY = 4, + SECPKG_FLAG_DATAGRAM = 8, + SECPKG_FLAG_CONNECTION = 16, + SECPKG_FLAG_MULTI_REQUIRED = 32, + SECPKG_FLAG_CLIENT_ONLY = 64, + SECPKG_FLAG_EXTENDED_ERROR = 128, + SECPKG_FLAG_IMPERSONATION = 256, + SECPKG_FLAG_ACCEPT_WIN32_NAME = 512, + SECPKG_FLAG_STREAM = 1024, +} + +enum :ULONG{ + SECPKG_ATTR_AUTHORITY = 6, + SECPKG_ATTR_CONNECTION_INFO = 90, + SECPKG_ATTR_ISSUER_LIST = 80, + SECPKG_ATTR_ISSUER_LIST_EX = 89, + SECPKG_ATTR_KEY_INFO = 5, + SECPKG_ATTR_LIFESPAN = 2, + SECPKG_ATTR_LOCAL_CERT_CONTEXT = 84, + SECPKG_ATTR_LOCAL_CRED = 82, + SECPKG_ATTR_NAMES = 1, + SECPKG_ATTR_PROTO_INFO = 7, + SECPKG_ATTR_REMOTE_CERT_CONTEXT = 83, + SECPKG_ATTR_REMOTE_CRED = 81, + SECPKG_ATTR_SIZES = 0, + SECPKG_ATTR_STREAM_SIZES = 4, +} + +enum :ULONG{ + SECBUFFER_EMPTY = 0, + SECBUFFER_DATA = 1, + SECBUFFER_TOKEN = 2, + SECBUFFER_PKG_PARAMS = 3, + SECBUFFER_MISSING = 4, + SECBUFFER_EXTRA = 5, + SECBUFFER_STREAM_TRAILER = 6, + SECBUFFER_STREAM_HEADER = 7, + SECBUFFER_PADDING = 9, + SECBUFFER_STREAM = 10, + SECBUFFER_READONLY = 0x80000000, + SECBUFFER_ATTRMASK = 0xf0000000, +} + +enum UNISP_NAME_A = "Microsoft Unified Security Protocol Provider"; +enum UNISP_NAME_W = "Microsoft Unified Security Protocol Provider"w; +enum SECBUFFER_VERSION = 0; + +alias UNICODE_STRING SECURITY_STRING; +alias UNICODE_STRING* PSECURITY_STRING; + +extern(Windows): + +struct SecHandle { + ULONG_PTR dwLower; + ULONG_PTR dwUpper; +} +alias SecHandle* PSecHandle; +struct SecBuffer { + ULONG cbBuffer; + ULONG BufferType; + PVOID pvBuffer; +} +alias SecBuffer* PSecBuffer; +alias SecHandle CredHandle; +alias PSecHandle PCredHandle; +alias SecHandle CtxtHandle; +alias PSecHandle PCtxtHandle; +struct SECURITY_INTEGER { + uint LowPart; + int HighPart; +} +alias SECURITY_INTEGER TimeStamp; +alias SECURITY_INTEGER* PTimeStamp; +struct SecBufferDesc { + ULONG ulVersion; + ULONG cBuffers; + PSecBuffer pBuffers; +} +alias SecBufferDesc* PSecBufferDesc; +struct SecPkgContext_StreamSizes { + ULONG cbHeader; + ULONG cbTrailer; + ULONG cbMaximumMessage; + ULONG cBuffers; + ULONG cbBlockSize; +} +alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes; +struct SecPkgContext_Sizes { + ULONG cbMaxToken; + ULONG cbMaxSignature; + ULONG cbBlockSize; + ULONG cbSecurityTrailer; +} +alias SecPkgContext_Sizes* PSecPkgContext_Sizes; +struct SecPkgContext_AuthorityW { + SEC_WCHAR* sAuthorityName; +} +alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW; +struct SecPkgContext_AuthorityA { + SEC_CHAR* sAuthorityName; +} +alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA; +struct SecPkgContext_KeyInfoW { + SEC_WCHAR* sSignatureAlgorithmName; + SEC_WCHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} +alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW; +struct SecPkgContext_KeyInfoA { + SEC_CHAR* sSignatureAlgorithmName; + SEC_CHAR* sEncryptAlgorithmName; + ULONG KeySize; + ULONG SignatureAlgorithm; + ULONG EncryptAlgorithm; +} +alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; +struct SecPkgContext_LifeSpan { + TimeStamp tsStart; + TimeStamp tsExpiry; +} +alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; +struct SecPkgContext_NamesW { + SEC_WCHAR* sUserName; +} +alias SecPkgContext_NamesW* PSecPkgContext_NamesW; +struct SecPkgContext_NamesA { + SEC_CHAR* sUserName; +} +alias SecPkgContext_NamesA* PSecPkgContext_NamesA; +struct SecPkgInfoW { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_WCHAR* Name; + SEC_WCHAR* Comment; +} +alias SecPkgInfoW* PSecPkgInfoW; +struct SecPkgInfoA { + ULONG fCapabilities; + USHORT wVersion; + USHORT wRPCID; + ULONG cbMaxToken; + SEC_CHAR* Name; + SEC_CHAR* Comment; +} +alias SecPkgInfoA* PSecPkgInfoA; +/* supported only in win2k+, so it should be a PSecPkgInfoW */ +/* PSDK does not say it has ANSI/Unicode versions */ +struct SecPkgContext_PackageInfo { + PSecPkgInfoW PackageInfo; +} +alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo; +struct SecPkgCredentials_NamesW { + SEC_WCHAR* sUserName; +} +alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW; +struct SecPkgCredentials_NamesA { + SEC_CHAR* sUserName; +} +alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA; + +/* TODO: missing type in SDK */ +alias void function() SEC_GET_KEY_FN; + +alias SECURITY_STATUS function(PULONG,PSecPkgInfoW*) ENUMERATE_SECURITY_PACKAGES_FN_W; +alias SECURITY_STATUS function(PULONG,PSecPkgInfoA*) ENUMERATE_SECURITY_PACKAGES_FN_A; +alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_W; +alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_A; +alias SECURITY_STATUS function(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_W; +alias SECURITY_STATUS function(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_A; +alias SECURITY_STATUS function(PCredHandle) FREE_CREDENTIALS_HANDLE_FN; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_W; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_A; +alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) ACCEPT_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) COMPLETE_AUTH_TOKEN_FN; +alias SECURITY_STATUS function(PCtxtHandle) DELETE_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_W; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_W; +alias SECURITY_STATUS function(PCtxtHandle) IMPERSONATE_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle) REVERT_SECURITY_CONTEXT_FN; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) MAKE_SIGNATURE_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) VERIFY_SIGNATURE_FN; +alias SECURITY_STATUS function(PVOID) FREE_CONTEXT_BUFFER_FN; +alias SECURITY_STATUS function(SEC_CHAR*,PSecPkgInfoA*) QUERY_SECURITY_PACKAGE_INFO_FN_A; +alias SECURITY_STATUS function(PCtxtHandle,HANDLE*) QUERY_SECURITY_CONTEXT_TOKEN_FN; +alias SECURITY_STATUS function(SEC_WCHAR*,PSecPkgInfoW*) QUERY_SECURITY_PACKAGE_INFO_FN_W; +alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) ENCRYPT_MESSAGE_FN; +alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) DECRYPT_MESSAGE_FN; + +/* No, it really is FreeCredentialsHandle, see the thread beginning + * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a + * discovery discussion. */ +struct SecurityFunctionTableW{ + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; + QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; + ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; + QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; + void* Reserved3; + void* Reserved4; + void* Reserved5; + void* Reserved6; + void* Reserved7; + void* Reserved8; + QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} +alias SecurityFunctionTableW* PSecurityFunctionTableW; +struct SecurityFunctionTableA{ + uint dwVersion; + ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; + QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; + ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; + FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; + void* Reserved2; + INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; + ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; + COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; + DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; + APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; + QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; + IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; + REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; + MAKE_SIGNATURE_FN MakeSignature; + VERIFY_SIGNATURE_FN VerifySignature; + FREE_CONTEXT_BUFFER_FN FreeContextBuffer; + QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; + void* Reserved3; + void* Reserved4; + void* Unknown1; + void* Unknown2; + void* Unknown3; + void* Unknown4; + void* Unknown5; + ENCRYPT_MESSAGE_FN EncryptMessage; + DECRYPT_MESSAGE_FN DecryptMessage; +} +alias SecurityFunctionTableA* PSecurityFunctionTableA; +alias PSecurityFunctionTableA function() INIT_SECURITY_INTERFACE_A; +alias PSecurityFunctionTableW function() INIT_SECURITY_INTERFACE_W; + +SECURITY_STATUS FreeCredentialsHandle(PCredHandle); +SECURITY_STATUS EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*); +SECURITY_STATUS EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*); +SECURITY_STATUS AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); +SECURITY_STATUS AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); +SECURITY_STATUS FreeContextBuffer(PVOID); +SECURITY_STATUS QueryContextAttributesA(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS QueryContextAttributesW(PCtxtHandle,ULONG,PVOID); +SECURITY_STATUS QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID); +SECURITY_STATUS QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID); +static if(_WIN32_WINNT >= 0x500){ + SECURITY_STATUS QuerySecurityContextToken(PCtxtHandle,HANDLE*); +} +SECURITY_STATUS DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS DeleteSecurityContext(PCtxtHandle); +SECURITY_STATUS CompleteAuthToken(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ApplyControlTokenA(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ApplyControlTokenW(PCtxtHandle,PSecBufferDesc); +SECURITY_STATUS ImpersonateSecurityContext(PCtxtHandle); +SECURITY_STATUS RevertSecurityContext(PCtxtHandle); +SECURITY_STATUS MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); +SECURITY_STATUS VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); +SECURITY_STATUS QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*); +SECURITY_STATUS QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*); +PSecurityFunctionTableA InitSecurityInterfaceA(); +PSecurityFunctionTableW InitSecurityInterfaceW(); + +version(Unicode) { + alias UNISP_NAME_W UNISP_NAME; + alias SecPkgInfoW SecPkgInfo; + alias PSecPkgInfoW PSecPkgInfo; + alias SecPkgCredentials_NamesW SecPkgCredentials_Names; + alias PSecPkgCredentials_NamesW PSecPkgCredentials_Names; + alias SecPkgContext_AuthorityW SecPkgContext_Authority; + alias PSecPkgContext_AuthorityW PSecPkgContext_Authority; + alias SecPkgContext_KeyInfoW SecPkgContext_KeyInfo; + alias PSecPkgContext_KeyInfoW PSecPkgContext_KeyInfo; + alias SecPkgContext_NamesW SecPkgContext_Names; + alias PSecPkgContext_NamesW PSecPkgContext_Names; + alias SecurityFunctionTableW SecurityFunctionTable; + alias PSecurityFunctionTableW PSecurityFunctionTable; + alias AcquireCredentialsHandleW AcquireCredentialsHandle; + alias EnumerateSecurityPackagesW EnumerateSecurityPackages; + alias InitializeSecurityContextW InitializeSecurityContext; + alias QueryContextAttributesW QueryContextAttributes; + alias QueryCredentialsAttributesW QueryCredentialsAttributes; + alias QuerySecurityPackageInfoW QuerySecurityPackageInfo; + alias ApplyControlTokenW ApplyControlToken; + alias ENUMERATE_SECURITY_PACKAGES_FN_W ENUMERATE_SECURITY_PACKAGES_FN; + alias QUERY_CREDENTIALS_ATTRIBUTES_FN_W QUERY_CREDENTIALS_ATTRIBUTES_FN; + alias ACQUIRE_CREDENTIALS_HANDLE_FN_W ACQUIRE_CREDENTIALS_HANDLE_FN; + alias INITIALIZE_SECURITY_CONTEXT_FN_W INITIALIZE_SECURITY_CONTEXT_FN; + alias APPLY_CONTROL_TOKEN_FN_W APPLY_CONTROL_TOKEN_FN; + alias QUERY_CONTEXT_ATTRIBUTES_FN_W QUERY_CONTEXT_ATTRIBUTES_FN; + alias QUERY_SECURITY_PACKAGE_INFO_FN_W QUERY_SECURITY_PACKAGE_INFO_FN; + alias INIT_SECURITY_INTERFACE_W INIT_SECURITY_INTERFACE; +}else{ + alias UNISP_NAME_A UNISP_NAME; + alias SecPkgInfoA SecPkgInfo; + alias PSecPkgInfoA PSecPkgInfo; + alias SecPkgCredentials_NamesA SecPkgCredentials_Names; + alias PSecPkgCredentials_NamesA PSecPkgCredentials_Names; + alias SecPkgContext_AuthorityA SecPkgContext_Authority; + alias PSecPkgContext_AuthorityA PSecPkgContext_Authority; + alias SecPkgContext_KeyInfoA SecPkgContext_KeyInfo; + alias PSecPkgContext_KeyInfoA PSecPkgContext_KeyInfo; + alias SecPkgContext_NamesA SecPkgContext_Names; + alias PSecPkgContext_NamesA PSecPkgContext_Names; + alias SecurityFunctionTableA SecurityFunctionTable; + alias PSecurityFunctionTableA PSecurityFunctionTable; + alias AcquireCredentialsHandleA AcquireCredentialsHandle; + alias EnumerateSecurityPackagesA EnumerateSecurityPackages; + alias InitializeSecurityContextA InitializeSecurityContext; + alias QueryContextAttributesA QueryContextAttributes; + alias QueryCredentialsAttributesA QueryCredentialsAttributes; + alias QuerySecurityPackageInfoA QuerySecurityPackageInfo; + alias ApplyControlTokenA ApplyControlToken; + alias ENUMERATE_SECURITY_PACKAGES_FN_A ENUMERATE_SECURITY_PACKAGES_FN; + alias QUERY_CREDENTIALS_ATTRIBUTES_FN_A QUERY_CREDENTIALS_ATTRIBUTES_FN; + alias ACQUIRE_CREDENTIALS_HANDLE_FN_A ACQUIRE_CREDENTIALS_HANDLE_FN; + alias INITIALIZE_SECURITY_CONTEXT_FN_A INITIALIZE_SECURITY_CONTEXT_FN; + alias APPLY_CONTROL_TOKEN_FN_A APPLY_CONTROL_TOKEN_FN; + alias QUERY_CONTEXT_ATTRIBUTES_FN_A QUERY_CONTEXT_ATTRIBUTES_FN; + alias QUERY_SECURITY_PACKAGE_INFO_FN_A QUERY_SECURITY_PACKAGE_INFO_FN; + alias INIT_SECURITY_INTERFACE_A INIT_SECURITY_INTERFACE; +} + Index: src/win32/subauth.d ================================================================== --- src/win32/subauth.d +++ src/win32/subauth.d @@ -1,275 +1,275 @@ -/***********************************************************************\ -* subauth.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.subauth; - -private import win32.ntdef, win32.windef; - -/+ -alias LONG NTSTATUS; -alias NTSTATUS* PNTSTATUS; -+/ - -enum : ULONG { - MSV1_0_PASSTHRU = 1, - MSV1_0_GUEST_LOGON = 2 -} - -// USER_ALL_INFORMATION.WhichFields (Undocumented) -const ULONG - MSV1_0_VALIDATION_LOGOFF_TIME = 1, - MSV1_0_VALIDATION_KICKOFF_TIME = 2, - MSV1_0_VALIDATION_LOGON_SERVER = 4, - MSV1_0_VALIDATION_LOGON_DOMAIN = 8, - MSV1_0_VALIDATION_SESSION_KEY = 16, - MSV1_0_VALIDATION_USER_FLAGS = 32, - MSV1_0_VALIDATION_USER_ID = 64; - -// ?ActionsPerformed? (Undocumented) -const MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; -const MSV1_0_SUBAUTH_PASSWORD = 2; -const MSV1_0_SUBAUTH_WORKSTATIONS = 4; -const MSV1_0_SUBAUTH_LOGON_HOURS = 8; -const MSV1_0_SUBAUTH_ACCOUNT_EXPIRY = 16; -const MSV1_0_SUBAUTH_PASSWORD_EXPIRY = 32; -const MSV1_0_SUBAUTH_ACCOUNT_TYPE = 64; -const MSV1_0_SUBAUTH_LOCKOUT = 128; - -const NEXT_FREE_ACCOUNT_CONTROL_BIT = 131072; - -const SAM_DAYS_PER_WEEK = 7; -const SAM_HOURS_PER_WEEK = 168; -const SAM_MINUTES_PER_WEEK = 10080; - -enum : NTSTATUS { - STATUS_SUCCESS = 0, - STATUS_INVALID_INFO_CLASS = 0xC0000003, - STATUS_NO_SUCH_USER = 0xC0000064, - STATUS_WRONG_PASSWORD = 0xC000006A, - STATUS_PASSWORD_RESTRICTION = 0xC000006C, - STATUS_LOGON_FAILURE = 0xC000006D, - STATUS_ACCOUNT_RESTRICTION = 0xC000006E, - STATUS_INVALID_LOGON_HOURS = 0xC000006F, - STATUS_INVALID_WORKSTATION = 0xC0000070, - STATUS_PASSWORD_EXPIRED = 0xC0000071, - STATUS_ACCOUNT_DISABLED = 0xC0000072, - STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, - STATUS_ACCOUNT_EXPIRED = 0xC0000193, - STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, - STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234 -} - -// Note: undocumented in MSDN -// USER_ALL_INFORMATION.UserAccountControl -const ULONG - USER_ACCOUNT_DISABLED = 1, - USER_HOME_DIRECTORY_REQUIRED = 2, - USER_PASSWORD_NOT_REQUIRED = 4, - USER_TEMP_DUPLICATE_ACCOUNT = 8, - USER_NORMAL_ACCOUNT = 16, - USER_MNS_LOGON_ACCOUNT = 32, - USER_INTERDOMAIN_TRUST_ACCOUNT = 64, - USER_WORKSTATION_TRUST_ACCOUNT = 128, - USER_SERVER_TRUST_ACCOUNT = 256, - USER_DONT_EXPIRE_PASSWORD = 512, - USER_ACCOUNT_AUTO_LOCKED = 1024, - USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 2048, - USER_SMARTCARD_REQUIRED = 4096, - USER_TRUSTED_FOR_DELEGATION = 8192, - USER_NOT_DELEGATED = 16384, - USER_USE_DES_KEY_ONLY = 32768, - USER_DONT_REQUIRE_PREAUTH = 65536, - - USER_MACHINE_ACCOUNT_MASK = 448, - USER_ACCOUNT_TYPE_MASK = 472, - USER_ALL_PARAMETERS = 2097152; - -/+ -struct UNICODE_STRING { - USHORT Length; - USHORT MaximumLength; - PWSTR Buffer; -} -alias UNICODE_STRING* PUNICODE_STRING; - -struct STRING { - USHORT Length; - USHORT MaximumLength; - PCHAR Buffer; -} -alias STRING* PSTRING; -+/ - -alias HANDLE SAM_HANDLE; -alias HANDLE* PSAM_HANDLE; - -struct OLD_LARGE_INTEGER { - ULONG LowPart; - LONG HighPart; -} -alias OLD_LARGE_INTEGER* POLD_LARGE_INTEGER; - -enum NETLOGON_LOGON_INFO_CLASS { - NetlogonInteractiveInformation = 1, - NetlogonNetworkInformation, - NetlogonServiceInformation, - NetlogonGenericInformation, - NetlogonInteractiveTransitiveInformation, - NetlogonNetworkTransitiveInformation, - NetlogonServiceTransitiveInformation -} - - -const CYPHER_BLOCK_LENGTH = 8; -const USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; -const CLEAR_BLOCK_LENGTH = 8; - -struct CYPHER_BLOCK { - CHAR data[CYPHER_BLOCK_LENGTH]; -} -alias CYPHER_BLOCK* PCYPHER_BLOCK; - -struct CLEAR_BLOCK { - CHAR data[CLEAR_BLOCK_LENGTH]; -} -alias CLEAR_BLOCK* PCLEAR_BLOCK; - -struct LM_OWF_PASSWORD { - CYPHER_BLOCK data[2]; -} -alias LM_OWF_PASSWORD* PLM_OWF_PASSWORD; - -struct USER_SESSION_KEY { - CYPHER_BLOCK data[2]; -} -alias USER_SESSION_KEY* PUSER_SESSION_KEY; - -alias CLEAR_BLOCK LM_CHALLENGE; -alias LM_CHALLENGE* PLM_CHALLENGE; - -alias LM_OWF_PASSWORD NT_OWF_PASSWORD; -alias NT_OWF_PASSWORD* PNT_OWF_PASSWORD; -alias LM_CHALLENGE NT_CHALLENGE; -alias NT_CHALLENGE* PNT_CHALLENGE; - -struct LOGON_HOURS { - USHORT UnitsPerWeek; - PUCHAR LogonHours; -} -alias LOGON_HOURS* PLOGON_HOURS; - -struct SR_SECURITY_DESCRIPTOR { - ULONG Length; - PUCHAR SecurityDescriptor; -} -alias SR_SECURITY_DESCRIPTOR* PSR_SECURITY_DESCRIPTOR; - -align(4): -struct USER_ALL_INFORMATION { - LARGE_INTEGER LastLogon; - LARGE_INTEGER LastLogoff; - LARGE_INTEGER PasswordLastSet; - LARGE_INTEGER AccountExpires; - LARGE_INTEGER PasswordCanChange; - LARGE_INTEGER PasswordMustChange; - UNICODE_STRING UserName; - UNICODE_STRING FullName; - UNICODE_STRING HomeDirectory; - UNICODE_STRING HomeDirectoryDrive; - UNICODE_STRING ScriptPath; - UNICODE_STRING ProfilePath; - UNICODE_STRING AdminComment; - UNICODE_STRING WorkStations; - UNICODE_STRING UserComment; - UNICODE_STRING Parameters; - UNICODE_STRING LmPassword; - UNICODE_STRING NtPassword; - UNICODE_STRING PrivateData; - SR_SECURITY_DESCRIPTOR SecurityDescriptor; - ULONG UserId; - ULONG PrimaryGroupId; - ULONG UserAccountControl; - ULONG WhichFields; - LOGON_HOURS LogonHours; - USHORT BadPasswordCount; - USHORT LogonCount; - USHORT CountryCode; - USHORT CodePage; - BOOLEAN LmPasswordPresent; - BOOLEAN NtPasswordPresent; - BOOLEAN PasswordExpired; - BOOLEAN PrivateDataSensitive; -} -alias USER_ALL_INFORMATION* PUSER_ALL_INFORMATION; -align: - -struct MSV1_0_VALIDATION_INFO { - LARGE_INTEGER LogoffTime; - LARGE_INTEGER KickoffTime; - UNICODE_STRING LogonServer; - UNICODE_STRING LogonDomainName; - USER_SESSION_KEY SessionKey; - BOOLEAN Authoritative; - ULONG UserFlags; - ULONG WhichFields; - ULONG UserId; -} -alias MSV1_0_VALIDATION_INFO* PMSV1_0_VALIDATION_INFO; - -struct NETLOGON_LOGON_IDENTITY_INFO { - UNICODE_STRING LogonDomainName; - ULONG ParameterControl; - OLD_LARGE_INTEGER LogonId; - UNICODE_STRING UserName; - UNICODE_STRING Workstation; -} -alias NETLOGON_LOGON_IDENTITY_INFO* PNETLOGON_LOGON_IDENTITY_INFO; - -struct NETLOGON_INTERACTIVE_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_OWF_PASSWORD LmOwfPassword; - NT_OWF_PASSWORD NtOwfPassword; -} -alias NETLOGON_INTERACTIVE_INFO* PNETLOGON_INTERACTIVE_INFO; - -struct NETLOGON_GENERIC_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - UNICODE_STRING PackageName; - ULONG DataLength; - PUCHAR LogonData; -} -alias NETLOGON_GENERIC_INFO* PNETLOGON_GENERIC_INFO; - -struct NETLOGON_NETWORK_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_CHALLENGE LmChallenge; - STRING NtChallengeResponse; - STRING LmChallengeResponse; -} -alias NETLOGON_NETWORK_INFO* PNETLOGON_NETWORK_INFO; - -struct NETLOGON_SERVICE_INFO { - NETLOGON_LOGON_IDENTITY_INFO Identity; - LM_OWF_PASSWORD LmOwfPassword; - NT_OWF_PASSWORD NtOwfPassword; -} -alias NETLOGON_SERVICE_INFO* PNETLOGON_SERVICE_INFO; - -extern (Windows) { -NTSTATUS Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, - PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); -NTSTATUS Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, - PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); -NTSTATUS Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); -NTSTATUS Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, - ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, - PMSV1_0_VALIDATION_INFO,PULONG); +/***********************************************************************\ +* subauth.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.subauth; + +private import win32.ntdef, win32.windef; + +/+ +alias LONG NTSTATUS; +alias NTSTATUS* PNTSTATUS; ++/ + +enum : ULONG { + MSV1_0_PASSTHRU = 1, + MSV1_0_GUEST_LOGON = 2 +} + +// USER_ALL_INFORMATION.WhichFields (Undocumented) +const ULONG + MSV1_0_VALIDATION_LOGOFF_TIME = 1, + MSV1_0_VALIDATION_KICKOFF_TIME = 2, + MSV1_0_VALIDATION_LOGON_SERVER = 4, + MSV1_0_VALIDATION_LOGON_DOMAIN = 8, + MSV1_0_VALIDATION_SESSION_KEY = 16, + MSV1_0_VALIDATION_USER_FLAGS = 32, + MSV1_0_VALIDATION_USER_ID = 64; + +// ?ActionsPerformed? (Undocumented) +const MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; +const MSV1_0_SUBAUTH_PASSWORD = 2; +const MSV1_0_SUBAUTH_WORKSTATIONS = 4; +const MSV1_0_SUBAUTH_LOGON_HOURS = 8; +const MSV1_0_SUBAUTH_ACCOUNT_EXPIRY = 16; +const MSV1_0_SUBAUTH_PASSWORD_EXPIRY = 32; +const MSV1_0_SUBAUTH_ACCOUNT_TYPE = 64; +const MSV1_0_SUBAUTH_LOCKOUT = 128; + +const NEXT_FREE_ACCOUNT_CONTROL_BIT = 131072; + +const SAM_DAYS_PER_WEEK = 7; +const SAM_HOURS_PER_WEEK = 168; +const SAM_MINUTES_PER_WEEK = 10080; + +enum : NTSTATUS { + STATUS_SUCCESS = 0, + STATUS_INVALID_INFO_CLASS = 0xC0000003, + STATUS_NO_SUCH_USER = 0xC0000064, + STATUS_WRONG_PASSWORD = 0xC000006A, + STATUS_PASSWORD_RESTRICTION = 0xC000006C, + STATUS_LOGON_FAILURE = 0xC000006D, + STATUS_ACCOUNT_RESTRICTION = 0xC000006E, + STATUS_INVALID_LOGON_HOURS = 0xC000006F, + STATUS_INVALID_WORKSTATION = 0xC0000070, + STATUS_PASSWORD_EXPIRED = 0xC0000071, + STATUS_ACCOUNT_DISABLED = 0xC0000072, + STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, + STATUS_ACCOUNT_EXPIRED = 0xC0000193, + STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, + STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234 +} + +// Note: undocumented in MSDN +// USER_ALL_INFORMATION.UserAccountControl +const ULONG + USER_ACCOUNT_DISABLED = 1, + USER_HOME_DIRECTORY_REQUIRED = 2, + USER_PASSWORD_NOT_REQUIRED = 4, + USER_TEMP_DUPLICATE_ACCOUNT = 8, + USER_NORMAL_ACCOUNT = 16, + USER_MNS_LOGON_ACCOUNT = 32, + USER_INTERDOMAIN_TRUST_ACCOUNT = 64, + USER_WORKSTATION_TRUST_ACCOUNT = 128, + USER_SERVER_TRUST_ACCOUNT = 256, + USER_DONT_EXPIRE_PASSWORD = 512, + USER_ACCOUNT_AUTO_LOCKED = 1024, + USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 2048, + USER_SMARTCARD_REQUIRED = 4096, + USER_TRUSTED_FOR_DELEGATION = 8192, + USER_NOT_DELEGATED = 16384, + USER_USE_DES_KEY_ONLY = 32768, + USER_DONT_REQUIRE_PREAUTH = 65536, + + USER_MACHINE_ACCOUNT_MASK = 448, + USER_ACCOUNT_TYPE_MASK = 472, + USER_ALL_PARAMETERS = 2097152; + +/+ +struct UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} +alias UNICODE_STRING* PUNICODE_STRING; + +struct STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} +alias STRING* PSTRING; ++/ + +mixin DECLARE_HANDLE!("SAM_HANDLE"); +alias SAM_HANDLE* PSAM_HANDLE; + +struct OLD_LARGE_INTEGER { + ULONG LowPart; + LONG HighPart; +} +alias OLD_LARGE_INTEGER* POLD_LARGE_INTEGER; + +enum NETLOGON_LOGON_INFO_CLASS { + NetlogonInteractiveInformation = 1, + NetlogonNetworkInformation, + NetlogonServiceInformation, + NetlogonGenericInformation, + NetlogonInteractiveTransitiveInformation, + NetlogonNetworkTransitiveInformation, + NetlogonServiceTransitiveInformation +} + + +const CYPHER_BLOCK_LENGTH = 8; +const USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; +const CLEAR_BLOCK_LENGTH = 8; + +struct CYPHER_BLOCK { + CHAR[CYPHER_BLOCK_LENGTH] data; +} +alias CYPHER_BLOCK* PCYPHER_BLOCK; + +struct CLEAR_BLOCK { + CHAR[CLEAR_BLOCK_LENGTH] data; +} +alias CLEAR_BLOCK* PCLEAR_BLOCK; + +struct LM_OWF_PASSWORD { + CYPHER_BLOCK[2] data; +} +alias LM_OWF_PASSWORD* PLM_OWF_PASSWORD; + +struct USER_SESSION_KEY { + CYPHER_BLOCK[2] data; +} +alias USER_SESSION_KEY* PUSER_SESSION_KEY; + +alias CLEAR_BLOCK LM_CHALLENGE; +alias LM_CHALLENGE* PLM_CHALLENGE; + +alias LM_OWF_PASSWORD NT_OWF_PASSWORD; +alias NT_OWF_PASSWORD* PNT_OWF_PASSWORD; +alias LM_CHALLENGE NT_CHALLENGE; +alias NT_CHALLENGE* PNT_CHALLENGE; + +struct LOGON_HOURS { + USHORT UnitsPerWeek; + PUCHAR LogonHours; +} +alias LOGON_HOURS* PLOGON_HOURS; + +struct SR_SECURITY_DESCRIPTOR { + ULONG Length; + PUCHAR SecurityDescriptor; +} +alias SR_SECURITY_DESCRIPTOR* PSR_SECURITY_DESCRIPTOR; + +align(4): +struct USER_ALL_INFORMATION { + LARGE_INTEGER LastLogon; + LARGE_INTEGER LastLogoff; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER AccountExpires; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + UNICODE_STRING UserName; + UNICODE_STRING FullName; + UNICODE_STRING HomeDirectory; + UNICODE_STRING HomeDirectoryDrive; + UNICODE_STRING ScriptPath; + UNICODE_STRING ProfilePath; + UNICODE_STRING AdminComment; + UNICODE_STRING WorkStations; + UNICODE_STRING UserComment; + UNICODE_STRING Parameters; + UNICODE_STRING LmPassword; + UNICODE_STRING NtPassword; + UNICODE_STRING PrivateData; + SR_SECURITY_DESCRIPTOR SecurityDescriptor; + ULONG UserId; + ULONG PrimaryGroupId; + ULONG UserAccountControl; + ULONG WhichFields; + LOGON_HOURS LogonHours; + USHORT BadPasswordCount; + USHORT LogonCount; + USHORT CountryCode; + USHORT CodePage; + BOOLEAN LmPasswordPresent; + BOOLEAN NtPasswordPresent; + BOOLEAN PasswordExpired; + BOOLEAN PrivateDataSensitive; +} +alias USER_ALL_INFORMATION* PUSER_ALL_INFORMATION; +align: + +struct MSV1_0_VALIDATION_INFO { + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickoffTime; + UNICODE_STRING LogonServer; + UNICODE_STRING LogonDomainName; + USER_SESSION_KEY SessionKey; + BOOLEAN Authoritative; + ULONG UserFlags; + ULONG WhichFields; + ULONG UserId; +} +alias MSV1_0_VALIDATION_INFO* PMSV1_0_VALIDATION_INFO; + +struct NETLOGON_LOGON_IDENTITY_INFO { + UNICODE_STRING LogonDomainName; + ULONG ParameterControl; + OLD_LARGE_INTEGER LogonId; + UNICODE_STRING UserName; + UNICODE_STRING Workstation; +} +alias NETLOGON_LOGON_IDENTITY_INFO* PNETLOGON_LOGON_IDENTITY_INFO; + +struct NETLOGON_INTERACTIVE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} +alias NETLOGON_INTERACTIVE_INFO* PNETLOGON_INTERACTIVE_INFO; + +struct NETLOGON_GENERIC_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + UNICODE_STRING PackageName; + ULONG DataLength; + PUCHAR LogonData; +} +alias NETLOGON_GENERIC_INFO* PNETLOGON_GENERIC_INFO; + +struct NETLOGON_NETWORK_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_CHALLENGE LmChallenge; + STRING NtChallengeResponse; + STRING LmChallengeResponse; +} +alias NETLOGON_NETWORK_INFO* PNETLOGON_NETWORK_INFO; + +struct NETLOGON_SERVICE_INFO { + NETLOGON_LOGON_IDENTITY_INFO Identity; + LM_OWF_PASSWORD LmOwfPassword; + NT_OWF_PASSWORD NtOwfPassword; +} +alias NETLOGON_SERVICE_INFO* PNETLOGON_SERVICE_INFO; + +extern (Windows) { +NTSTATUS Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, + PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); +NTSTATUS Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); +NTSTATUS Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, + ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, + PMSV1_0_VALIDATION_INFO,PULONG); } ADDED src/win32/testall.d Index: src/win32/testall.d ================================================================== --- src/win32/testall.d +++ src/win32/testall.d @@ -0,0 +1,123 @@ +// Used only for testing -- imports all windows headers. +module win32.testall; + +import win32.core; +import win32.windows; +import win32.commctrl; +import win32.setupapi; + +import win32.directx.dinput8; +import win32.directx.dsound8; + +import win32.directx.d3d9; +import win32.directx.d3dx9; +import win32.directx.dxerr; +import win32.directx.dxerr8; +import win32.directx.dxerr9; + +import win32.directx.d3d10; +import win32.directx.d3d10effect; +import win32.directx.d3d10shader; +import win32.directx.d3dx10; +import win32.directx.dxgi; + +import win32.oleacc; +import win32.comcat; +import win32.cpl; +import win32.cplext; +import win32.custcntl; +import win32.ocidl; +import win32.olectl; +import win32.oledlg; +import win32.objsafe; +import win32.ole; + +import win32.shldisp; +import win32.shlobj; +import win32.shlwapi; +import win32.regstr; +import win32.richole; +import win32.tmschema; +import win32.servprov; +import win32.exdisp; +import win32.exdispid; +import win32.idispids; +import win32.mshtml; + +import win32.lm; +import win32.lmbrowsr; + +import win32.sql; +import win32.sqlext; +import win32.sqlucode; +import win32.odbcinst; + +import win32.imagehlp; +import win32.intshcut; +import win32.iphlpapi; +import win32.isguids; + +import win32.subauth; +import win32.rasdlg; +import win32.rassapi; + +import win32.mapi; +import win32.mciavi; +import win32.mcx; +import win32.mgmtapi; + +import win32.nddeapi; +import win32.msacm; +import win32.nspapi; + +import win32.ntdef; +import win32.ntldap; +import win32.ntsecapi; + +import win32.pbt; +import win32.powrprof; +import win32.rapi; + +import win32.wininet; +import win32.winioctl; +import win32.winldap; + +import win32.dbt; + +import win32.rpcdce2; + +import win32.tlhelp32; + +import win32.httpext; +import win32.lmwksta; +import win32.mswsock; +import win32.objidl; +import win32.ole2ver; +import win32.psapi; +import win32.raserror; +import win32.usp10; +import win32.vfw; + +version (WindowsVista) { + version = WINDOWS_XP_UP; +} else version (Windows2003) { + version = WINDOWS_XP_UP; +} else version (WindowsXP) { + version = WINDOWS_XP_UP; +} + +version (WINDOWS_XP_UP) { + import win32.errorrep; + import win32.lmmsg; + import win32.reason; + import win32.secext; +} +import win32.aclapi; +import win32.aclui; +import win32.dhcpcsdk; +import win32.lmserver; +import win32.ntdll; + +version (Win32_Winsock1) { + import win32.winsock; +} ADDED src/win32/testcompile.bat Index: src/win32/testcompile.bat ================================================================== --- src/win32/testcompile.bat +++ src/win32/testcompile.bat @@ -0,0 +1,23 @@ +@call :testuni +@call :testuni -version=Unicode +@goto :eof + +:testuni +@call :testversion %* +@call :testversion %* -version=Windows2000 +@call :testversion %* -version=WindowsXP +@call :testversion %* -version=Windows2003 +@call :testversion %* -version=WindowsVista +@call :testversion %* -version=Win32_Winsock1 +@call :testversion %* -version=IE7 +@goto :eof + +:testversion +@call :testone -m32 %* +@call :testone -m64 %* +@goto :eof + +:testone +dmd -I.. -c %* testall.d +@if errorlevel 1 exit 1 +@goto :eof Index: src/win32/tlhelp32.d ================================================================== --- src/win32/tlhelp32.d +++ src/win32/tlhelp32.d @@ -32,43 +32,43 @@ TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST|TH32CS_SNAPPROCESS|TH32CS_SNAPTHREAD|TH32CS_SNAPMODULE), TH32CS_INHERIT = 0x80000000 } struct HEAPLIST32 { - DWORD dwSize; + SIZE_T dwSize; DWORD th32ProcessID; - DWORD th32HeapID; + ULONG_PTR th32HeapID; DWORD dwFlags; } alias HEAPLIST32* PHEAPLIST32; alias HEAPLIST32* LPHEAPLIST32; struct HEAPENTRY32 { - DWORD dwSize; + SIZE_T dwSize; HANDLE hHandle; - DWORD dwAddress; - DWORD dwBlockSize; + ULONG_PTR dwAddress; + SIZE_T dwBlockSize; DWORD dwFlags; DWORD dwLockCount; DWORD dwResvd; DWORD th32ProcessID; - DWORD th32HeapID; + ULONG_PTR th32HeapID; } alias HEAPENTRY32* PHEAPENTRY32; alias HEAPENTRY32* LPHEAPENTRY32; struct PROCESSENTRY32W { DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; - DWORD th32DefaultHeapID; + ULONG_PTR th32DefaultHeapID; DWORD th32ModuleID; DWORD cntThreads; DWORD th32ParentProcessID; LONG pcPriClassBase; DWORD dwFlags; - WCHAR szExeFile[MAX_PATH]; + WCHAR[MAX_PATH] szExeFile; } alias PROCESSENTRY32W* PPROCESSENTRY32W; alias PROCESSENTRY32W* LPPROCESSENTRY32W; struct THREADENTRY32 { @@ -90,12 +90,12 @@ DWORD GlblcntUsage; DWORD ProccntUsage; BYTE *modBaseAddr; DWORD modBaseSize; HMODULE hModule; - WCHAR szModule[MAX_MODULE_NAME32 + 1]; - WCHAR szExePath[MAX_PATH]; + WCHAR[MAX_MODULE_NAME32 + 1] szModule; + WCHAR[MAX_PATH] szExePath; } alias MODULEENTRY32W* PMODULEENTRY32W; alias MODULEENTRY32W* LPMODULEENTRY32W; version(Unicode) { @@ -109,17 +109,17 @@ } else { struct PROCESSENTRY32 { DWORD dwSize; DWORD cntUsage; DWORD th32ProcessID; - DWORD th32DefaultHeapID; + ULONG_PTR th32DefaultHeapID; DWORD th32ModuleID; DWORD cntThreads; DWORD th32ParentProcessID; LONG pcPriClassBase; DWORD dwFlags; - CHAR szExeFile[MAX_PATH]; + CHAR[MAX_PATH] szExeFile; } alias PROCESSENTRY32* PPROCESSENTRY32; alias PROCESSENTRY32* LPPROCESSENTRY32; struct MODULEENTRY32 { @@ -129,12 +129,12 @@ DWORD GlblcntUsage; DWORD ProccntUsage; BYTE *modBaseAddr; DWORD modBaseSize; HMODULE hModule; - char szModule[MAX_MODULE_NAME32 + 1]; - char szExePath[MAX_PATH]; + char[MAX_MODULE_NAME32 + 1] szModule; + char[MAX_PATH] szExePath; } alias MODULEENTRY32* PMODULEENTRY32; alias MODULEENTRY32* LPMODULEENTRY32; } Index: src/win32/tmschema.d ================================================================== --- src/win32/tmschema.d +++ src/win32/tmschema.d @@ -1,13 +1,13 @@ -/***********************************************************************\ -* tmschema.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * +/***********************************************************************\ +* tmschema.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * \***********************************************************************/ module win32.tmschema; /* BUTTON parts */ enum { Index: src/win32/unknwn.d ================================================================== --- src/win32/unknwn.d +++ src/win32/unknwn.d @@ -1,55 +1,55 @@ -/***********************************************************************\ -* unknwn.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.unknwn; - -import win32.objfwd, win32.windef, win32.wtypes; -private import win32.basetyps; - -extern (Windows) { - void* MIDL_user_allocate(size_t); - void MIDL_user_free(void*); -} - - -extern (Windows) { - - interface IUnknown { - HRESULT QueryInterface(IID* riid, void** pvObject); - ULONG AddRef(); - ULONG Release(); - } - - alias IUnknown LPUNKNOWN; - - interface IClassFactory : IUnknown { - HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); - HRESULT LockServer(BOOL fLock); - } - alias IClassFactory LPCLASSFACTORY; - - /+ - // These do not seem to be necessary (or desirable) for D. - HRESULT IUnknown_QueryInterface_Proxy(IUnknown*,REFIID,void**); - ULONG IUnknown_AddRef_Proxy(IUnknown*); - ULONG IUnknown_Release_Proxy(IUnknown*); - HRESULT IClassFactory_RemoteCreateInstance_Proxy(IClassFactory*,REFIID,IUnknown**); - HRESULT IClassFactory_RemoteLockServer_Proxy(IClassFactory*,BOOL); - HRESULT IClassFactory_CreateInstance_Proxy(IClassFactory*,IUnknown*,REFIID,void**); - HRESULT IClassFactory_CreateInstance_Stub(IClassFactory*,REFIID,IUnknown**); - HRESULT IClassFactory_LockServer_Proxy(IClassFactory*,BOOL); - HRESULT IClassFactory_LockServer_Stub(IClassFactory*,BOOL); - - void IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - void IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); - +/ -} +/***********************************************************************\ +* unknwn.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.unknwn; + +import win32.objfwd, win32.windef, win32.wtypes; +private import win32.basetyps; + +extern (Windows) { + void* MIDL_user_allocate(size_t); + void MIDL_user_free(void*); +} + + +extern (Windows) { + + interface IUnknown { + HRESULT QueryInterface(IID* riid, void** pvObject); + ULONG AddRef(); + ULONG Release(); + } + + alias IUnknown LPUNKNOWN; + + interface IClassFactory : IUnknown { + HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); + HRESULT LockServer(BOOL fLock); + } + alias IClassFactory LPCLASSFACTORY; + + /+ + // These do not seem to be necessary (or desirable) for D. + HRESULT IUnknown_QueryInterface_Proxy(IUnknown,REFIID,void**); + ULONG IUnknown_AddRef_Proxy(IUnknown); + ULONG IUnknown_Release_Proxy(IUnknown); + HRESULT IClassFactory_RemoteCreateInstance_Proxy(IClassFactory,REFIID,IUnknown*); + HRESULT IClassFactory_RemoteLockServer_Proxy(IClassFactory,BOOL); + HRESULT IClassFactory_CreateInstance_Proxy(IClassFactory,IUnknown,REFIID,void**); + HRESULT IClassFactory_CreateInstance_Stub(IClassFactory,REFIID,IUnknown*); + HRESULT IClassFactory_LockServer_Proxy(IClassFactory,BOOL); + HRESULT IClassFactory_LockServer_Stub(IClassFactory,BOOL); + + void IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + void IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD); + +/ +} Index: src/win32/usp10.d ================================================================== --- src/win32/usp10.d +++ src/win32/usp10.d @@ -1,334 +1,334 @@ -/* USP - Unicode Complex Script processor - * http://msdn2.microsoft.com/library/ms776488 */ - - -module win32.usp10; -import win32.windows; - - - -/* Uniscribe Enumeration Types - * http://msdn2.microsoft.com/library/ms776518 */ - -enum : WORD { - SCRIPT_UNDEFINED = 0, -} - -enum : DWORD { - SGCM_RTL = 0x00000001, -} - -enum : DWORD { - SSA_PASSWORD = 0x00000001, - SSA_TAB = 0x00000002, - SSA_CLIP = 0x00000004, - SSA_FIT = 0x00000008, - SSA_DZWG = 0x00000010, - SSA_FALLBACK = 0x00000020, - SSA_BREAK = 0x00000040, - SSA_GLYPHS = 0x00000080, - SSA_RTL = 0x00000100, - SSA_GCP = 0x00000200, - SSA_HOTKEY = 0x00000400, - SSA_METAFILE = 0x00000800, - SSA_LINK = 0x00001000, - SSA_HIDEHOTKEY = 0x00002000, - SSA_HOTKEYONLY = 0x00002400, - SSA_FULLMEASURE = 0x04000000, - SSA_LPKANSIFALLBACK = 0x08000000, - SSA_PIDX = 0x10000000, - SSA_LAYOUTRTL = 0x20000000, - SSA_DONTGLYPH = 0x40000000, - SSA_NOKASHIDA = 0x80000000, -} - -enum : DWORD { - SIC_COMPLEX = 1, - SIC_ASCIIDIGIT = 2, - SIC_NEUTRAL = 4, -} - -enum : DWORD { - SCRIPT_DIGITSUBSTITUTE_CONTEXT, - SCRIPT_DIGITSUBSTITUTE_NONE, - SCRIPT_DIGITSUBSTITUTE_NATIONAL, - SCRIPT_DIGITSUBSTITUTE_TRADITIONAL, -} - -enum SCRIPT_JUSTIFY : WORD { - SCRIPT_JUSTIFY_NONE, - SCRIPT_JUSTIFY_ARABIC_BLANK, - SCRIPT_JUSTIFY_CHARACTER, - SCRIPT_JUSTIFY_RESERVED1, - SCRIPT_JUSTIFY_BLANK, - SCRIPT_JUSTIFY_RESERVED2, - SCRIPT_JUSTIFY_RESERVED3, - SCRIPT_JUSTIFY_ARABIC_NORMAL, - SCRIPT_JUSTIFY_ARABIC_KASHIDA, - SCRIPT_JUSTIFY_ARABIC_ALEF, - SCRIPT_JUSTIFY_ARABIC_HA, - SCRIPT_JUSTIFY_ARABIC_RA, - SCRIPT_JUSTIFY_ARABIC_BA, - SCRIPT_JUSTIFY_ARABIC_BARA, - SCRIPT_JUSTIFY_ARABIC_SEEN, - SCRIPT_JUSTIFY_ARABIC_SEEN_M, -} - - - -/* Uniscribe Structures - * http://msdn2.microsoft.com/library/ms776479 */ - -alias void* SCRIPT_CACHE; -alias void* SCRIPT_STRING_ANALYSIS; - -extern (C) -{ - struct SCRIPT_CONTROL - { - private DWORD _bitfield; - DWORD uDefaultLanguage() { return (_bitfield >> 0) & 0xFFFF; } - DWORD uDefaultLanguage(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } - DWORD fContextDigits() { return (_bitfield >> 16) & 0x1; } - DWORD fContextDigits(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFEFFFF) | (val << 16)); return val; } - DWORD fInvertPreBoundDir() { return (_bitfield >> 17) & 0x1; } - DWORD fInvertPreBoundDir(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFDFFFF) | (val << 17)); return val; } - DWORD fInvertPostBoundDir() { return (_bitfield >> 18) & 0x1; } - DWORD fInvertPostBoundDir(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFBFFFF) | (val << 18)); return val; } - DWORD fLinkStringBefore() { return (_bitfield >> 19) & 0x1; } - DWORD fLinkStringBefore(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFF7FFFF) | (val << 19)); return val; } - DWORD fLinkStringAfter() { return (_bitfield >> 20) & 0x1; } - DWORD fLinkStringAfter(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFEFFFFF) | (val << 20)); return val; } - DWORD fNeutralOverride() { return (_bitfield >> 21) & 0x1; } - DWORD fNeutralOverride(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFDFFFFF) | (val << 21)); return val; } - DWORD fNumericOverride() { return (_bitfield >> 22) & 0x1; } - DWORD fNumericOverride(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFBFFFFF) | (val << 22)); return val; } - DWORD fLegacyBidiClass() { return (_bitfield >> 23) & 0x1; } - DWORD fLegacyBidiClass(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFF7FFFFF) | (val << 23)); return val; } - DWORD fReserved() { return (_bitfield >> 24) & 0xFF; } - DWORD fReserved(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFF00FFFFFF) | (val << 24)); return val; } - } - - struct SCRIPT_STATE - { - private WORD _bitfield; - WORD uBidiLevel() { return cast(WORD)((_bitfield >> 0) & 0x1F); } - WORD uBidiLevel(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFE0) | (val << 0)); return val; } - WORD fOverrideDirection() { return cast(WORD)((_bitfield >> 5) & 0x1); } - WORD fOverrideDirection(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFDF) | (val << 5)); return val; } - WORD fInhibitSymSwap() { return cast(WORD)((_bitfield >> 6) & 0x1); } - WORD fInhibitSymSwap(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFBF) | (val << 6)); return val; } - WORD fCharShape() { return cast(WORD)((_bitfield >> 7) & 0x1); } - WORD fCharShape(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFF7F) | (val << 7)); return val; } - WORD fDigitSubstitute() { return cast(WORD)((_bitfield >> 8) & 0x1); } - WORD fDigitSubstitute(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFEFF) | (val << 8)); return val; } - WORD fInhibitLigate() { return cast(WORD)((_bitfield >> 9) & 0x1); } - WORD fInhibitLigate(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFDFF) | (val << 9)); return val; } - WORD fDisplayZWG() { return cast(WORD)((_bitfield >> 10) & 0x1); } - WORD fDisplayZWG(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFBFF) | (val << 10)); return val; } - WORD fArabicNumContext() { return cast(WORD)((_bitfield >> 11) & 0x1); } - WORD fArabicNumContext(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFF7FF) | (val << 11)); return val; } - WORD fGcpClusters() { return cast(WORD)((_bitfield >> 12) & 0x1); } - WORD fGcpClusters(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFEFFF) | (val << 12)); return val; } - WORD fReserved() { return cast(WORD)((_bitfield >> 13) & 0x1); } - WORD fReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFDFFF) | (val << 13)); return val; } - WORD fEngineReserved() { return cast(WORD)((_bitfield >> 14) & 0x3); } - WORD fEngineReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF3FFF) | (val << 14)); return val; } - } - - - struct SCRIPT_ANALYSIS - { - private WORD _bitfield; - WORD eScript() { return cast(WORD)((_bitfield >> 0) & 0x3FF); } - WORD eScript(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFC00) | (val << 0)); return val; } - WORD fRTL() { return cast(WORD)((_bitfield >> 10) & 0x1); } - WORD fRTL(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFBFF) | (val << 10)); return val; } - WORD fLayoutRTL() { return cast(WORD)((_bitfield >> 11) & 0x1); } - WORD fLayoutRTL(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFF7FF) | (val << 11)); return val; } - WORD fLinkBefore() { return cast(WORD)((_bitfield >> 12) & 0x1); } - WORD fLinkBefore(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFEFFF) | (val << 12)); return val; } - WORD fLinkAfter() { return cast(WORD)((_bitfield >> 13) & 0x1); } - WORD fLinkAfter(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFDFFF) | (val << 13)); return val; } - WORD fLogicalOrder() { return cast(WORD)((_bitfield >> 14) & 0x1); } - WORD fLogicalOrder(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFBFFF) | (val << 14)); return val; } - WORD fNoGlyphIndex() { return cast(WORD)((_bitfield >> 15) & 0x1); } - WORD fNoGlyphIndex(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF7FFF) | (val << 15)); return val; } - SCRIPT_STATE s; - } - - - struct SCRIPT_ITEM - { - int iCharPos; - SCRIPT_ANALYSIS a; - } - - struct SCRIPT_VISATTR - { - private WORD _bitfield; - WORD uJustification() { return cast(WORD)((_bitfield >> 0) & 0xF); } - WORD uJustification(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFF0) | (val << 0)); return val; } - WORD fClusterStart() { return cast(WORD)((_bitfield >> 4) & 0x1); } - WORD fClusterStart(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } - WORD fDiacritic() { return cast(WORD)((_bitfield >> 5) & 0x1); } - WORD fDiacritic(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFDF) | (val << 5)); return val; } - WORD fZeroWidth() { return cast(WORD)((_bitfield >> 6) & 0x1); } - WORD fZeroWidth(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFBF) | (val << 6)); return val; } - WORD fReserved() { return cast(WORD)((_bitfield >> 7) & 0x1); } - WORD fReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFF7F) | (val << 7)); return val; } - WORD fShapeReserved() { return cast(WORD)((_bitfield >> 8) & 0xFF); } - WORD fShapeReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF00FF) | (val << 8)); return val; } - } - - struct GOFFSET - { - LONG du; - LONG dv; - } - - struct SCRIPT_LOGATTR - { - BYTE _bitfield; - BYTE fSoftBreak() { return cast(BYTE)((_bitfield >> 0) & 0x1); } - BYTE fSoftBreak(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFE) | (val << 0)); return val; } - BYTE fWhiteSpace() { return cast(BYTE)((_bitfield >> 1) & 0x1); } - BYTE fWhiteSpace(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFD) | (val << 1)); return val; } - BYTE fCharStop() { return cast(BYTE)((_bitfield >> 2) & 0x1); } - BYTE fCharStop(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFB) | (val << 2)); return val; } - BYTE fWordStop() { return cast(BYTE)((_bitfield >> 3) & 0x1); } - BYTE fWordStop(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFF7) | (val << 3)); return val; } - BYTE fInvalid() { return cast(BYTE)((_bitfield >> 4) & 0x1); } - BYTE fInvalid(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } - BYTE fReserved() { return cast(BYTE)((_bitfield >> 5) & 0x7); } - BYTE fReserved(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFF1F) | (val << 5)); return val; } - } - - struct SCRIPT_PROPERTIES - { - private DWORD _bitfield1; - DWORD langid() { return (_bitfield1 >> 0) & 0xFFFF; } - DWORD langid(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } - DWORD fNumeric() { return (_bitfield1 >> 16) & 0x1; } - DWORD fNumeric(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFEFFFF) | (val << 16)); return val; } - DWORD fComplex() { return (_bitfield1 >> 17) & 0x1; } - DWORD fComplex(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFDFFFF) | (val << 17)); return val; } - DWORD fNeedsWordBreaking() { return (_bitfield1 >> 18) & 0x1; } - DWORD fNeedsWordBreaking(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFBFFFF) | (val << 18)); return val; } - DWORD fNeedsCaretInfo() { return (_bitfield1 >> 19) & 0x1; } - DWORD fNeedsCaretInfo(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFF7FFFF) | (val << 19)); return val; } - DWORD bCharSet() { return (_bitfield1 >> 20) & 0xFF; } - DWORD bCharSet(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFF00FFFFF) | (val << 20)); return val; } - DWORD fControl() { return (_bitfield1 >> 28) & 0x1; } - DWORD fControl(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFEFFFFFFF) | (val << 28)); return val; } - DWORD fPrivateUseArea() { return (_bitfield1 >> 29) & 0x1; } - DWORD fPrivateUseArea(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFDFFFFFFF) | (val << 29)); return val; } - DWORD fNeedsCharacterJustify() { return (_bitfield1 >> 30) & 0x1; } - DWORD fNeedsCharacterJustify(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFBFFFFFFF) | (val << 30)); return val; } - DWORD fInvalidGlyph() { return (_bitfield1 >> 31) & 0x1; } - DWORD fInvalidGlyph(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFF7FFFFFFF) | (val << 31)); return val; } - private DWORD _bitfield2; - DWORD fInvalidLogAttr() { return (_bitfield2 >> 0) & 0x1; } - DWORD fInvalidLogAttr(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFE) | (val << 0)); return val; } - DWORD fCDM() { return (_bitfield2 >> 1) & 0x1; } - DWORD fCDM(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFD) | (val << 1)); return val; } - DWORD fAmbiguousCharSet() { return (_bitfield2 >> 2) & 0x1; } - DWORD fAmbiguousCharSet(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFB) | (val << 2)); return val; } - DWORD fClusterSizeVaries() { return (_bitfield2 >> 3) & 0x1; } - DWORD fClusterSizeVaries(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFF7) | (val << 3)); return val; } - DWORD fRejectInvalid() { return (_bitfield2 >> 4) & 0x1; } - DWORD fRejectInvalid(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } - } - - struct SCRIPT_FONTPROPERTIES - { - int cBytes = SCRIPT_FONTPROPERTIES.sizeof; - WORD wgBlank; - WORD wgDefault; - WORD wgInvalid; - WORD wgKashida; - int iKashidaWidth; - } - - struct SCRIPT_TABDEF - { - int cTabStops; - int iScale; - int* pTabStops; - int iTabOrigin; - } - - struct SCRIPT_DIGITSUBSTITUTE - { - private DWORD _bitfield1; - DWORD NationalDigitLanguage() { return (_bitfield1 >> 0) & 0xFFFF; } - DWORD NationalDigitLanguage(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } - DWORD TraditionalDigitLanguage() { return (_bitfield1 >> 16) & 0xFFFF; } - DWORD TraditionalDigitLanguage(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFF0000FFFF) | (val << 16)); return val; } - private DWORD _bitfield2; - DWORD DigitSubstitute() { return (_bitfield2 >> 0) & 0xFF; } - DWORD DigitSubstitute(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFF00) | (val << 0)); return val; } - DWORD dwReserved; - } - - /* TODO: Windows Vista fearured structs - OPENTYPE_FEATURE_RECORD - OPENTYPE_TAG - SCRIPT_CHARPROP - SCRIPT_GLYPHPROP - TEXTRANGE_PROPERTIES - */ -} - - -/* Uniscribe Functions - * http://msdn2.microsoft.com/library/ms776469 */ -extern (Windows) -{ - HRESULT ScriptFreeCache(SCRIPT_CACHE*); - HRESULT ScriptItemize(CPtr!(WCHAR), int, int, CPtr!(SCRIPT_CONTROL), CPtr!(SCRIPT_STATE), SCRIPT_ITEM*, int*); - HRESULT ScriptLayout(int, CPtr!(BYTE), int*, int*); - HRESULT ScriptShape(HDC, SCRIPT_CACHE*, CPtr!(WCHAR), int, int, SCRIPT_ANALYSIS*, WORD*, WORD*, SCRIPT_VISATTR*, int*); - HRESULT ScriptPlace(HDC, SCRIPT_CACHE*, CPtr!(WORD), int, CPtr!(SCRIPT_VISATTR), SCRIPT_ANALYSIS*, int*, GOFFSET*, ABC*); - HRESULT ScriptTextOut(HDC, SCRIPT_CACHE*, int, int, UINT, CPtr!(RECT), CPtr!(SCRIPT_ANALYSIS), CPtr!(WCHAR), int, CPtr!(WORD), int, CPtr!(int), int*, CPtr!(GOFFSET)); - HRESULT ScriptJustify(CPtr!(SCRIPT_VISATTR), CPtr!(int), int, int, int, int*); - HRESULT ScriptBreak(CPtr!(WCHAR), int, CPtr!(SCRIPT_ANALYSIS), CPtr!(SCRIPT_LOGATTR)); - HRESULT ScriptCPtoX(int, BOOL, int, int, CPtr!(WORD), CPtr!(SCRIPT_VISATTR), CPtr!(int), CPtr!(SCRIPT_ANALYSIS), int*); - HRESULT ScriptXtoCP(int, int, int, CPtr!(WORD), CPtr!(SCRIPT_VISATTR), CPtr!(int), CPtr!(SCRIPT_ANALYSIS), int*, int*); - HRESULT ScriptGetLogicalWidths(CPtr!(SCRIPT_ANALYSIS), int, int, CPtr!(int), CPtr!(WORD), CPtr!(SCRIPT_VISATTR), int*); - HRESULT ScriptApplyLogicalWidth(CPtr!(int), int, int, CPtr!(WORD), CPtr!(SCRIPT_VISATTR), CPtr!(int), CPtr!(SCRIPT_ANALYSIS), ABC*, int*); - HRESULT ScriptGetCMap(HDC, SCRIPT_CACHE*, CPtr!(WCHAR), int, DWORD, WORD*); - HRESULT ScriptGetGlyphABCWidth(HDC, SCRIPT_CACHE*, WORD, ABC*); - HRESULT ScriptGetProperties(CPtr!(SCRIPT_PROPERTIES**), int*); - HRESULT ScriptGetFontProperties(HDC, SCRIPT_CACHE*, SCRIPT_FONTPROPERTIES*); - HRESULT ScriptCacheGetHeight(HDC, SCRIPT_CACHE*, int*); - HRESULT ScriptIsComplex(CPtr!(WCHAR), int, DWORD); - HRESULT ScriptRecordDigitSubstitution(LCID, SCRIPT_DIGITSUBSTITUTE*); - HRESULT ScriptApplyDigitSubstitution(CPtr!(SCRIPT_DIGITSUBSTITUTE), SCRIPT_CONTROL*, SCRIPT_STATE*); - - /* ScriptString Functions - * http://msdn2.microsoft.com/library/ms776485 */ - HRESULT ScriptStringAnalyse(HDC, CPtr!(void), int, int, int, DWORD, int, SCRIPT_CONTROL*, SCRIPT_STATE*, CPtr!(int), SCRIPT_TABDEF*, CPtr!(BYTE), SCRIPT_STRING_ANALYSIS*); - HRESULT ScriptStringFree(SCRIPT_STRING_ANALYSIS*); - CPtr!(SIZE) ScriptString_pSize(SCRIPT_STRING_ANALYSIS); - CPtr!(int) ScriptString_pcOutChars(SCRIPT_STRING_ANALYSIS); - CPtr!(SCRIPT_LOGATTR) ScriptString_pLogAttr(SCRIPT_STRING_ANALYSIS); - HRESULT ScriptStringGetOrder(SCRIPT_STRING_ANALYSIS, UINT*); - HRESULT ScriptStringCPtoX(SCRIPT_STRING_ANALYSIS, int, BOOL, int*); - HRESULT ScriptStringXtoCP(SCRIPT_STRING_ANALYSIS, int, int*, int*); - HRESULT ScriptStringGetLogicalWidths(SCRIPT_STRING_ANALYSIS, int*); - HRESULT ScriptStringValidate(SCRIPT_STRING_ANALYSIS); - HRESULT ScriptStringOut(SCRIPT_STRING_ANALYSIS, int, int, UINT, CPtr!(RECT), int, int, BOOL); - - /* TODO: Windows Vista fearured functions - ScriptGetFontAlternateGlyphs() - ScriptGetFontFeatureTags() - ScriptGetFontLanguageTags() - ScriptGetFontScriptTags() - ScriptItemizeOpenType() - ScriptPlaceOpenType() - ScriptPositionSingleGlyph() - ScriptShapeOpenType() - ScriptSubstituteSingleGlyph() - */ -} +/* USP - Unicode Complex Script processor + * http://msdn2.microsoft.com/library/ms776488 */ + + +module win32.usp10; +import win32.windows; + + + +/* Uniscribe Enumeration Types + * http://msdn2.microsoft.com/library/ms776518 */ + +enum : WORD { + SCRIPT_UNDEFINED = 0, +} + +enum : DWORD { + SGCM_RTL = 0x00000001, +} + +enum : DWORD { + SSA_PASSWORD = 0x00000001, + SSA_TAB = 0x00000002, + SSA_CLIP = 0x00000004, + SSA_FIT = 0x00000008, + SSA_DZWG = 0x00000010, + SSA_FALLBACK = 0x00000020, + SSA_BREAK = 0x00000040, + SSA_GLYPHS = 0x00000080, + SSA_RTL = 0x00000100, + SSA_GCP = 0x00000200, + SSA_HOTKEY = 0x00000400, + SSA_METAFILE = 0x00000800, + SSA_LINK = 0x00001000, + SSA_HIDEHOTKEY = 0x00002000, + SSA_HOTKEYONLY = 0x00002400, + SSA_FULLMEASURE = 0x04000000, + SSA_LPKANSIFALLBACK = 0x08000000, + SSA_PIDX = 0x10000000, + SSA_LAYOUTRTL = 0x20000000, + SSA_DONTGLYPH = 0x40000000, + SSA_NOKASHIDA = 0x80000000, +} + +enum : DWORD { + SIC_COMPLEX = 1, + SIC_ASCIIDIGIT = 2, + SIC_NEUTRAL = 4, +} + +enum : DWORD { + SCRIPT_DIGITSUBSTITUTE_CONTEXT, + SCRIPT_DIGITSUBSTITUTE_NONE, + SCRIPT_DIGITSUBSTITUTE_NATIONAL, + SCRIPT_DIGITSUBSTITUTE_TRADITIONAL, +} + +enum SCRIPT_JUSTIFY : WORD { + SCRIPT_JUSTIFY_NONE, + SCRIPT_JUSTIFY_ARABIC_BLANK, + SCRIPT_JUSTIFY_CHARACTER, + SCRIPT_JUSTIFY_RESERVED1, + SCRIPT_JUSTIFY_BLANK, + SCRIPT_JUSTIFY_RESERVED2, + SCRIPT_JUSTIFY_RESERVED3, + SCRIPT_JUSTIFY_ARABIC_NORMAL, + SCRIPT_JUSTIFY_ARABIC_KASHIDA, + SCRIPT_JUSTIFY_ARABIC_ALEF, + SCRIPT_JUSTIFY_ARABIC_HA, + SCRIPT_JUSTIFY_ARABIC_RA, + SCRIPT_JUSTIFY_ARABIC_BA, + SCRIPT_JUSTIFY_ARABIC_BARA, + SCRIPT_JUSTIFY_ARABIC_SEEN, + SCRIPT_JUSTIFY_ARABIC_SEEN_M, +} + + + +/* Uniscribe Structures + * http://msdn2.microsoft.com/library/ms776479 */ + +alias void* SCRIPT_CACHE; +alias void* SCRIPT_STRING_ANALYSIS; + +extern (C) +{ + struct SCRIPT_CONTROL + { + private DWORD _bitfield; + DWORD uDefaultLanguage() { return (_bitfield >> 0) & 0xFFFF; } + DWORD uDefaultLanguage(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } + DWORD fContextDigits() { return (_bitfield >> 16) & 0x1; } + DWORD fContextDigits(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFEFFFF) | (val << 16)); return val; } + DWORD fInvertPreBoundDir() { return (_bitfield >> 17) & 0x1; } + DWORD fInvertPreBoundDir(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFDFFFF) | (val << 17)); return val; } + DWORD fInvertPostBoundDir() { return (_bitfield >> 18) & 0x1; } + DWORD fInvertPostBoundDir(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFBFFFF) | (val << 18)); return val; } + DWORD fLinkStringBefore() { return (_bitfield >> 19) & 0x1; } + DWORD fLinkStringBefore(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFF7FFFF) | (val << 19)); return val; } + DWORD fLinkStringAfter() { return (_bitfield >> 20) & 0x1; } + DWORD fLinkStringAfter(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFEFFFFF) | (val << 20)); return val; } + DWORD fNeutralOverride() { return (_bitfield >> 21) & 0x1; } + DWORD fNeutralOverride(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFDFFFFF) | (val << 21)); return val; } + DWORD fNumericOverride() { return (_bitfield >> 22) & 0x1; } + DWORD fNumericOverride(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFBFFFFF) | (val << 22)); return val; } + DWORD fLegacyBidiClass() { return (_bitfield >> 23) & 0x1; } + DWORD fLegacyBidiClass(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFF7FFFFF) | (val << 23)); return val; } + DWORD fReserved() { return (_bitfield >> 24) & 0xFF; } + DWORD fReserved(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFF00FFFFFF) | (val << 24)); return val; } + } + + struct SCRIPT_STATE + { + private WORD _bitfield; + WORD uBidiLevel() { return cast(WORD)((_bitfield >> 0) & 0x1F); } + WORD uBidiLevel(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFE0) | (val << 0)); return val; } + WORD fOverrideDirection() { return cast(WORD)((_bitfield >> 5) & 0x1); } + WORD fOverrideDirection(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFDF) | (val << 5)); return val; } + WORD fInhibitSymSwap() { return cast(WORD)((_bitfield >> 6) & 0x1); } + WORD fInhibitSymSwap(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFBF) | (val << 6)); return val; } + WORD fCharShape() { return cast(WORD)((_bitfield >> 7) & 0x1); } + WORD fCharShape(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFF7F) | (val << 7)); return val; } + WORD fDigitSubstitute() { return cast(WORD)((_bitfield >> 8) & 0x1); } + WORD fDigitSubstitute(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFEFF) | (val << 8)); return val; } + WORD fInhibitLigate() { return cast(WORD)((_bitfield >> 9) & 0x1); } + WORD fInhibitLigate(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFDFF) | (val << 9)); return val; } + WORD fDisplayZWG() { return cast(WORD)((_bitfield >> 10) & 0x1); } + WORD fDisplayZWG(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFBFF) | (val << 10)); return val; } + WORD fArabicNumContext() { return cast(WORD)((_bitfield >> 11) & 0x1); } + WORD fArabicNumContext(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFF7FF) | (val << 11)); return val; } + WORD fGcpClusters() { return cast(WORD)((_bitfield >> 12) & 0x1); } + WORD fGcpClusters(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFEFFF) | (val << 12)); return val; } + WORD fReserved() { return cast(WORD)((_bitfield >> 13) & 0x1); } + WORD fReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFDFFF) | (val << 13)); return val; } + WORD fEngineReserved() { return cast(WORD)((_bitfield >> 14) & 0x3); } + WORD fEngineReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF3FFF) | (val << 14)); return val; } + } + + + struct SCRIPT_ANALYSIS + { + private WORD _bitfield; + WORD eScript() { return cast(WORD)((_bitfield >> 0) & 0x3FF); } + WORD eScript(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFC00) | (val << 0)); return val; } + WORD fRTL() { return cast(WORD)((_bitfield >> 10) & 0x1); } + WORD fRTL(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFBFF) | (val << 10)); return val; } + WORD fLayoutRTL() { return cast(WORD)((_bitfield >> 11) & 0x1); } + WORD fLayoutRTL(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFF7FF) | (val << 11)); return val; } + WORD fLinkBefore() { return cast(WORD)((_bitfield >> 12) & 0x1); } + WORD fLinkBefore(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFEFFF) | (val << 12)); return val; } + WORD fLinkAfter() { return cast(WORD)((_bitfield >> 13) & 0x1); } + WORD fLinkAfter(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFDFFF) | (val << 13)); return val; } + WORD fLogicalOrder() { return cast(WORD)((_bitfield >> 14) & 0x1); } + WORD fLogicalOrder(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFBFFF) | (val << 14)); return val; } + WORD fNoGlyphIndex() { return cast(WORD)((_bitfield >> 15) & 0x1); } + WORD fNoGlyphIndex(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF7FFF) | (val << 15)); return val; } + SCRIPT_STATE s; + } + + + struct SCRIPT_ITEM + { + int iCharPos; + SCRIPT_ANALYSIS a; + } + + struct SCRIPT_VISATTR + { + private WORD _bitfield; + WORD uJustification() { return cast(WORD)((_bitfield >> 0) & 0xF); } + WORD uJustification(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFF0) | (val << 0)); return val; } + WORD fClusterStart() { return cast(WORD)((_bitfield >> 4) & 0x1); } + WORD fClusterStart(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } + WORD fDiacritic() { return cast(WORD)((_bitfield >> 5) & 0x1); } + WORD fDiacritic(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFDF) | (val << 5)); return val; } + WORD fZeroWidth() { return cast(WORD)((_bitfield >> 6) & 0x1); } + WORD fZeroWidth(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFBF) | (val << 6)); return val; } + WORD fReserved() { return cast(WORD)((_bitfield >> 7) & 0x1); } + WORD fReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFF7F) | (val << 7)); return val; } + WORD fShapeReserved() { return cast(WORD)((_bitfield >> 8) & 0xFF); } + WORD fShapeReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF00FF) | (val << 8)); return val; } + } + + struct GOFFSET + { + LONG du; + LONG dv; + } + + struct SCRIPT_LOGATTR + { + BYTE _bitfield; + BYTE fSoftBreak() { return cast(BYTE)((_bitfield >> 0) & 0x1); } + BYTE fSoftBreak(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFE) | (val << 0)); return val; } + BYTE fWhiteSpace() { return cast(BYTE)((_bitfield >> 1) & 0x1); } + BYTE fWhiteSpace(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFD) | (val << 1)); return val; } + BYTE fCharStop() { return cast(BYTE)((_bitfield >> 2) & 0x1); } + BYTE fCharStop(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFB) | (val << 2)); return val; } + BYTE fWordStop() { return cast(BYTE)((_bitfield >> 3) & 0x1); } + BYTE fWordStop(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFF7) | (val << 3)); return val; } + BYTE fInvalid() { return cast(BYTE)((_bitfield >> 4) & 0x1); } + BYTE fInvalid(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } + BYTE fReserved() { return cast(BYTE)((_bitfield >> 5) & 0x7); } + BYTE fReserved(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFF1F) | (val << 5)); return val; } + } + + struct SCRIPT_PROPERTIES + { + private DWORD _bitfield1; + DWORD langid() { return (_bitfield1 >> 0) & 0xFFFF; } + DWORD langid(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } + DWORD fNumeric() { return (_bitfield1 >> 16) & 0x1; } + DWORD fNumeric(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFEFFFF) | (val << 16)); return val; } + DWORD fComplex() { return (_bitfield1 >> 17) & 0x1; } + DWORD fComplex(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFDFFFF) | (val << 17)); return val; } + DWORD fNeedsWordBreaking() { return (_bitfield1 >> 18) & 0x1; } + DWORD fNeedsWordBreaking(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFBFFFF) | (val << 18)); return val; } + DWORD fNeedsCaretInfo() { return (_bitfield1 >> 19) & 0x1; } + DWORD fNeedsCaretInfo(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFF7FFFF) | (val << 19)); return val; } + DWORD bCharSet() { return (_bitfield1 >> 20) & 0xFF; } + DWORD bCharSet(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFF00FFFFF) | (val << 20)); return val; } + DWORD fControl() { return (_bitfield1 >> 28) & 0x1; } + DWORD fControl(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFEFFFFFFF) | (val << 28)); return val; } + DWORD fPrivateUseArea() { return (_bitfield1 >> 29) & 0x1; } + DWORD fPrivateUseArea(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFDFFFFFFF) | (val << 29)); return val; } + DWORD fNeedsCharacterJustify() { return (_bitfield1 >> 30) & 0x1; } + DWORD fNeedsCharacterJustify(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFBFFFFFFF) | (val << 30)); return val; } + DWORD fInvalidGlyph() { return (_bitfield1 >> 31) & 0x1; } + DWORD fInvalidGlyph(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFF7FFFFFFF) | (val << 31)); return val; } + private DWORD _bitfield2; + DWORD fInvalidLogAttr() { return (_bitfield2 >> 0) & 0x1; } + DWORD fInvalidLogAttr(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFE) | (val << 0)); return val; } + DWORD fCDM() { return (_bitfield2 >> 1) & 0x1; } + DWORD fCDM(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFD) | (val << 1)); return val; } + DWORD fAmbiguousCharSet() { return (_bitfield2 >> 2) & 0x1; } + DWORD fAmbiguousCharSet(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFB) | (val << 2)); return val; } + DWORD fClusterSizeVaries() { return (_bitfield2 >> 3) & 0x1; } + DWORD fClusterSizeVaries(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFF7) | (val << 3)); return val; } + DWORD fRejectInvalid() { return (_bitfield2 >> 4) & 0x1; } + DWORD fRejectInvalid(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; } + } + + struct SCRIPT_FONTPROPERTIES + { + int cBytes = SCRIPT_FONTPROPERTIES.sizeof; + WORD wgBlank; + WORD wgDefault; + WORD wgInvalid; + WORD wgKashida; + int iKashidaWidth; + } + + struct SCRIPT_TABDEF + { + int cTabStops; + int iScale; + int* pTabStops; + int iTabOrigin; + } + + struct SCRIPT_DIGITSUBSTITUTE + { + private DWORD _bitfield1; + DWORD NationalDigitLanguage() { return (_bitfield1 >> 0) & 0xFFFF; } + DWORD NationalDigitLanguage(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; } + DWORD TraditionalDigitLanguage() { return (_bitfield1 >> 16) & 0xFFFF; } + DWORD TraditionalDigitLanguage(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFF0000FFFF) | (val << 16)); return val; } + private DWORD _bitfield2; + DWORD DigitSubstitute() { return (_bitfield2 >> 0) & 0xFF; } + DWORD DigitSubstitute(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFF00) | (val << 0)); return val; } + DWORD dwReserved; + } + + /* TODO: Windows Vista fearured structs + OPENTYPE_FEATURE_RECORD + OPENTYPE_TAG + SCRIPT_CHARPROP + SCRIPT_GLYPHPROP + TEXTRANGE_PROPERTIES + */ +} + + +/* Uniscribe Functions + * http://msdn2.microsoft.com/library/ms776469 */ +extern (Windows) +{ + HRESULT ScriptFreeCache(SCRIPT_CACHE*); + HRESULT ScriptItemize(const(WCHAR)*, int, int, const(SCRIPT_CONTROL)*, const(SCRIPT_STATE)*, SCRIPT_ITEM*, int*); + HRESULT ScriptLayout(int, const(BYTE)*, int*, int*); + HRESULT ScriptShape(HDC, SCRIPT_CACHE*, const(WCHAR)*, int, int, SCRIPT_ANALYSIS*, WORD*, WORD*, SCRIPT_VISATTR*, int*); + HRESULT ScriptPlace(HDC, SCRIPT_CACHE*, const(WORD)*, int, const(SCRIPT_VISATTR)*, SCRIPT_ANALYSIS*, int*, GOFFSET*, ABC*); + HRESULT ScriptTextOut(HDC, SCRIPT_CACHE*, int, int, UINT, const(RECT)*, const(SCRIPT_ANALYSIS)*, const(WCHAR)*, int, const(WORD)*, int, const(int)*, int*, const(GOFFSET)*); + HRESULT ScriptJustify(const(SCRIPT_VISATTR)*, const(int)*, int, int, int, int*); + HRESULT ScriptBreak(const(WCHAR)*, int, const(SCRIPT_ANALYSIS)*, const(SCRIPT_LOGATTR)*); + HRESULT ScriptCPtoX(int, BOOL, int, int, const(WORD)*, const(SCRIPT_VISATTR)*, const(int)*, const(SCRIPT_ANALYSIS)*, int*); + HRESULT ScriptXtoCP(int, int, int, const(WORD)*, const(SCRIPT_VISATTR)*, const(int)*, const(SCRIPT_ANALYSIS)*, int*, int*); + HRESULT ScriptGetLogicalWidths(const(SCRIPT_ANALYSIS)*, int, int, const(int)*, const(WORD)*, const(SCRIPT_VISATTR)*, int*); + HRESULT ScriptApplyLogicalWidth(const(int)*, int, int, const(WORD)*, const(SCRIPT_VISATTR)*, const(int)*, const(SCRIPT_ANALYSIS)*, ABC*, int*); + HRESULT ScriptGetCMap(HDC, SCRIPT_CACHE*, const(WCHAR)*, int, DWORD, WORD*); + HRESULT ScriptGetGlyphABCWidth(HDC, SCRIPT_CACHE*, WORD, ABC*); + HRESULT ScriptGetProperties(const(SCRIPT_PROPERTIES**)*, int*); + HRESULT ScriptGetFontProperties(HDC, SCRIPT_CACHE*, SCRIPT_FONTPROPERTIES*); + HRESULT ScriptCacheGetHeight(HDC, SCRIPT_CACHE*, int*); + HRESULT ScriptIsComplex(const(WCHAR)*, int, DWORD); + HRESULT ScriptRecordDigitSubstitution(LCID, SCRIPT_DIGITSUBSTITUTE*); + HRESULT ScriptApplyDigitSubstitution(const(SCRIPT_DIGITSUBSTITUTE)*, SCRIPT_CONTROL*, SCRIPT_STATE*); + + /* ScriptString Functions + * http://msdn2.microsoft.com/library/ms776485 */ + HRESULT ScriptStringAnalyse(HDC, const(void)*, int, int, int, DWORD, int, SCRIPT_CONTROL*, SCRIPT_STATE*, const(int)*, SCRIPT_TABDEF*, const(BYTE)*, SCRIPT_STRING_ANALYSIS*); + HRESULT ScriptStringFree(SCRIPT_STRING_ANALYSIS*); + const(SIZE)* ScriptString_pSize(SCRIPT_STRING_ANALYSIS); + const(int)* ScriptString_pcOutChars(SCRIPT_STRING_ANALYSIS); + const(SCRIPT_LOGATTR)* ScriptString_pLogAttr(SCRIPT_STRING_ANALYSIS); + HRESULT ScriptStringGetOrder(SCRIPT_STRING_ANALYSIS, UINT*); + HRESULT ScriptStringCPtoX(SCRIPT_STRING_ANALYSIS, int, BOOL, int*); + HRESULT ScriptStringXtoCP(SCRIPT_STRING_ANALYSIS, int, int*, int*); + HRESULT ScriptStringGetLogicalWidths(SCRIPT_STRING_ANALYSIS, int*); + HRESULT ScriptStringValidate(SCRIPT_STRING_ANALYSIS); + HRESULT ScriptStringOut(SCRIPT_STRING_ANALYSIS, int, int, UINT, const(RECT)*, int, int, BOOL); + + /* TODO: Windows Vista fearured functions + ScriptGetFontAlternateGlyphs() + ScriptGetFontFeatureTags() + ScriptGetFontLanguageTags() + ScriptGetFontScriptTags() + ScriptItemizeOpenType() + ScriptPlaceOpenType() + ScriptPositionSingleGlyph() + ScriptShapeOpenType() + ScriptSubstituteSingleGlyph() + */ +} Index: src/win32/uuid.d ================================================================== --- src/win32/uuid.d +++ src/win32/uuid.d @@ -1,9 +1,10 @@ module win32.uuid; import win32.basetyps; +export extern(C) { const IID _DBBMKGUID = {0xF6304BB0, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; const IID _DBCIDGUID = {0xFE284700, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; const IID _GUID_NAMEONLY = {0xE8BF1170, 0xD188, 0x11CD, [0xAD, 0x48, 0x00, 0xAA, 0x00, 0x3C, 0x9C, 0xB6]}; const IID ARRAYID_PathProperties = {0x7ECBBA04, 0x2D97, 0x11CF, [0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52]}; Index: src/win32/vfw.d ================================================================== --- src/win32/vfw.d +++ src/win32/vfw.d @@ -1,2394 +1,2395 @@ -/***********************************************************************\ -* vfw.d * -* * -* Windows API header module * -* written in the D programming language * -* * -* Placed into public domain * -\***********************************************************************/ - -module win32.vfw; -pragma(lib, "vfw32.lib"); - -private import - win32.commdlg, - win32.wingdi, - win32.mmsystem, - win32.unknwn, - win32.w32api, - win32.windef, - win32.winuser; - -extern(Windows) { - DWORD VideoForWindowsVersion(); - LONG InitVFW(); - LONG TermVFW(); -} - -DWORD MKFOURCC(char ch0, char ch1, char ch2, char ch3) { - return (cast(DWORD)ch0) | ((cast(DWORD)ch1) << 8) | ((cast(DWORD)ch2) << 16) | ((cast(DWORD)ch3) << 24); -} - -/** - * COMPMAN - Installable Compression Manager. - */ - -const ICVERSION = 0x0104; - -alias HANDLE HIC; - -const BI_1632 = 0x32333631; - -template aviTWOCC(char c0, char c1) { - const WORD aviTWOCC = c0 | (c1 << 8); -} - -const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); -const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); - -enum { - ICERR_OK = 0, - ICERR_DONTDRAW = 1, - ICERR_NEWPALETTE = 2, - ICERR_GOTOKEYFRAME = 3, - ICERR_STOPDRAWING = 4, -} - -const ICERR_UNSUPPORTED = -1; -const ICERR_BADFORMAT = -2; -const ICERR_MEMORY = -3; -const ICERR_INTERNAL = -4; -const ICERR_BADFLAGS = -5; -const ICERR_BADPARAM = -6; -const ICERR_BADSIZE = -7; -const ICERR_BADHANDLE = -8; -const ICERR_CANTUPDATE = -9; -const ICERR_ABORT = -10; -const ICERR_ERROR = -100; -const ICERR_BADBITDEPTH = -200; -const ICERR_BADIMAGESIZE = -201; - -const ICERR_CUSTOM = -400; - -enum { - ICMODE_COMPRESS = 1, - ICMODE_DECOMPRESS, - ICMODE_FASTDECOMPRESS, - ICMODE_QUERY, - ICMODE_FASTCOMPRESS, - ICMODE_DRAW = 8, -} - -const ICMODE_INTERNALF_FUNCTION32 = 0x8000; -const ICMODE_INTERNALF_MASK = 0x8000; - -enum { - AVIIF_LIST = 0x00000001, - AVIIF_TWOCC = 0x00000002, - AVIIF_KEYFRAME = 0x00000010, -} - -const ICQUALITY_LOW = 0; -const ICQUALITY_HIGH = 10000; -const ICQUALITY_DEFAULT = -1; - -enum { - ICM_USER = DRV_USER + 0x0000, - ICM_RESERVED_LOW = DRV_USER + 0x1000, - ICM_RESERVED_HIGH = DRV_USER + 0x2000, - ICM_RESERVED = ICM_RESERVED_LOW, -} - -// messages - -enum { - ICM_GETSTATE = ICM_RESERVED + 0, - ICM_SETSTATE = ICM_RESERVED + 1, - ICM_GETINFO = ICM_RESERVED + 2, - ICM_CONFIGURE = ICM_RESERVED + 10, - ICM_ABOUT = ICM_RESERVED + 11, - ICM_GETERRORTEXT = ICM_RESERVED + 12, - ICM_GETFORMATNAME = ICM_RESERVED + 20, - ICM_ENUMFORMATS = ICM_RESERVED + 21, - ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, - ICM_GETQUALITY = ICM_RESERVED + 31, - ICM_SETQUALITY = ICM_RESERVED + 32, - ICM_SET = ICM_RESERVED + 40, - ICM_GET = ICM_RESERVED + 41, -} - -const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); -const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); - -// ICM specific messages. - -enum { - ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, - ICM_COMPRESS_GET_SIZE = ICM_USER + 5, - ICM_COMPRESS_QUERY = ICM_USER + 6, - ICM_COMPRESS_BEGIN = ICM_USER + 7, - ICM_COMPRESS = ICM_USER + 8, - ICM_COMPRESS_END = ICM_USER + 9, - ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, - ICM_DECOMPRESS_QUERY = ICM_USER + 11, - ICM_DECOMPRESS_BEGIN = ICM_USER + 12, - ICM_DECOMPRESS = ICM_USER + 13, - ICM_DECOMPRESS_END = ICM_USER + 14, - ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, - ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, - ICM_DRAW_QUERY = ICM_USER + 31, - ICM_DRAW_BEGIN = ICM_USER + 15, - ICM_DRAW_GET_PALETTE = ICM_USER + 16, - ICM_DRAW_UPDATE = ICM_USER + 17, - ICM_DRAW_START = ICM_USER + 18, - ICM_DRAW_STOP = ICM_USER + 19, - ICM_DRAW_BITS = ICM_USER + 20, - ICM_DRAW_END = ICM_USER + 21, - ICM_DRAW_GETTIME = ICM_USER + 32, - ICM_DRAW = ICM_USER + 33, - ICM_DRAW_WINDOW = ICM_USER + 34, - ICM_DRAW_SETTIME = ICM_USER + 35, - ICM_DRAW_REALIZE = ICM_USER + 36, - ICM_DRAW_FLUSH = ICM_USER + 37, - ICM_DRAW_RENDERBUFFER = ICM_USER + 38, - ICM_DRAW_START_PLAY = ICM_USER + 39, - ICM_DRAW_STOP_PLAY = ICM_USER + 40, - ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, - ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, - ICM_DRAW_IDLE = ICM_USER + 52, - ICM_GETBUFFERSWANTED = ICM_USER + 41, - ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, - ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, - ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, - ICM_DECOMPRESSEX = ICM_USER + 62, - ICM_DECOMPRESSEX_END = ICM_USER + 63, - ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, - ICM_COMPRESS_FRAMES = ICM_USER + 71, - ICM_SET_STATUS_PROC = ICM_USER + 72, -} - -struct ICOPEN { - DWORD dwSize; - DWORD fccType; - DWORD fccHandler; - DWORD dwVersion; - DWORD dwFlags; - LRESULT dwError; - LPVOID pV1Reserved; - LPVOID pV2Reserved; - DWORD dnDevNode; -} - -struct ICINFO { - DWORD dwSize; - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwVersion; - DWORD dwVersionICM; - WCHAR szName[16]; - WCHAR szDescription[128]; - WCHAR szDriver[128]; -} - -enum { - VIDCF_QUALITY = 0x0001, - VIDCF_CRUNCH = 0x0002, - VIDCF_TEMPORAL = 0x0004, - VIDCF_COMPRESSFRAMES = 0x0008, - VIDCF_DRAW = 0x0010, - VIDCF_FASTTEMPORALC = 0x0020, - VIDCF_FASTTEMPORALD = 0x0080, -} - -const ICCOMPRESS_KEYFRAME = 0x00000001L; - -struct ICCOMPRESS { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiOutput; - LPVOID lpOutput; - LPBITMAPINFOHEADER lpbiInput; - LPVOID lpInput; - LPDWORD lpckid; - LPDWORD lpdwFlags; - LONG lFrameNum; - DWORD dwFrameSize; - DWORD dwQuality; - LPBITMAPINFOHEADER lpbiPrev; - LPVOID lpPrev; -} - -const ICCOMPRESSFRAMES_PADDING = 0x00000001; - -struct ICCOMPRESSFRAMES { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiOutput; - LPARAM lOutput; - LPBITMAPINFOHEADER lpbiInput; - LPARAM lInput; - LONG lStartFrame; - LONG lFrameCount; - LONG lQuality; - LONG lDataRate; - LONG lKeyRate; - DWORD dwRate; - DWORD dwScale; DWORD dwOverheadPerFrame; - DWORD dwReserved2; - - LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; - LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; -} - -enum { - ICSTATUS_START = 0, - ICSTATUS_STATUS = 1, - ICSTATUS_END = 2, - ICSTATUS_ERROR = 3, - ICSTATUS_YIELD = 4, -} - -struct ICSETSTATUSPROC { - DWORD dwFlags; - LPARAM lParam; - LONG function(LPARAM lParam, UINT message, LONG l) Status; -} - -enum { - ICDECOMPRESS_NOTKEYFRAME = 0x08000000, - ICDECOMPRESS_NULLFRAME = 0x10000000, - ICDECOMPRESS_PREROLL = 0x20000000, - ICDECOMPRESS_UPDATE = 0x40000000, - ICDECOMPRESS_HURRYUP = 0x80000000, -} - -struct ICDECOMPRESS { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiInput; - LPVOID lpInput; - LPBITMAPINFOHEADER lpbiOutput; - LPVOID lpOutput; - DWORD ckid; -} - -struct ICDECOMPRESSEX { - DWORD dwFlags; - LPBITMAPINFOHEADER lpbiSrc; - LPVOID lpSrc; - LPBITMAPINFOHEADER lpbiDst; - LPVOID lpDst; - int xDst; - int yDst; - int dxDst; - int dyDst; - int xSrc; - int ySrc; - int dxSrc; - int dySrc; -} - -enum { - ICDRAW_QUERY = 0x00000001, - ICDRAW_FULLSCREEN = 0x00000002, - ICDRAW_HDC = 0x00000004, - ICDRAW_ANIMATE = 0x00000008, - ICDRAW_CONTINUE = 0x00000010, - ICDRAW_MEMORYDC = 0x00000020, - ICDRAW_UPDATING = 0x00000040, - ICDRAW_RENDER = 0x00000080, - ICDRAW_BUFFER = 0x00000100, -} - -struct ICDRAWBEGIN { - DWORD dwFlags; - HPALETTE hpal; - HWND hwnd; - HDC hdc; - int xDst; - int yDst; - int dxDst; - int dyDst; - LPBITMAPINFOHEADER lpbi; - int xSrc; - int ySrc; - int dxSrc; - int dySrc; - DWORD dwRate; - DWORD dwScale; -} - -enum { - ICDRAW_NOTKEYFRAME = 0x08000000, - ICDRAW_NULLFRAME = 0x10000000, - ICDRAW_PREROLL = 0x20000000, - ICDRAW_UPDATE = 0x40000000, - ICDRAW_HURRYUP = 0x80000000, -} - -struct ICDRAW { - DWORD dwFlags; - LPVOID lpFormat; - LPVOID lpData; - DWORD cbData; - LONG lTime; -} - -struct ICDRAWSUGGEST { - LPBITMAPINFOHEADER lpbiIn; - LPBITMAPINFOHEADER lpbiSuggest; - int dxSrc; - int dySrc; - int dxDst; - int dyDst; - HIC hicDecompressor; -} - -struct ICPALETTE { - DWORD dwFlags; - int iStart; - int iLen; - LPPALETTEENTRY lppe; -} - - -/** - * ICM function declarations - */ - -extern (Windows) { - BOOL ICInfo(DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo); - BOOL ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags); - BOOL ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags); - LRESULT ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb); - HIC ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode); - HIC ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler); - LRESULT ICClose(HIC hic); - LRESULT ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2); -} - -enum { - ICINSTALL_FUNCTION = 0x0001, - ICINSTALL_DRIVER = 0x0002, - ICINSTALL_HDRV = 0x0004, - ICINSTALL_UNICODE = 0x8000, - ICINSTALL_DRIVERW = 0x8002, -} - -// query macros - -const ICMF_CONFIGURE_QUERY = 0x00000001; -const ICMF_ABOUT_QUERY = 0x00000001; - -DWORD ICQueryAbout(HIC hic) { - return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; -} - -DWORD ICAbout(HIC hic, HWND hwnd) { - return ICSendMessage(hic, ICM_ABOUT, cast(UINT)hwnd, 0); -} - -DWORD ICQueryConfigure(HIC hic) { - return (ICSendMessage(hic, ICM_CONFIGURE, -1, ICMF_CONFIGURE_QUERY) == ICERR_OK); -} - -DWORD ICConfigure(HIC hic, HWND hwnd) { - return ICSendMessage(hic, ICM_CONFIGURE, cast(UINT)hwnd, 0); -} - -DWORD ICGetState(HIC hic, LPVOID pv, DWORD_PTR cb) { - return ICSendMessage(hic, ICM_GETSTATE, cast(DWORD)pv, cast(DWORD)cb); -} - -DWORD ICSetState(HIC hic, LPVOID pv, DWORD_PTR cb) { - return ICSendMessage(hic, ICM_SETSTATE, cast(DWORD)pv, cast(DWORD)cb); -} - -DWORD ICGetStateSize(HIC hic) { - return ICGetState(hic, null, 0); -} - -DWORD dwICValue; - -DWORD ICGetDefaultQuality(HIC hic) { - ICSendMessage(hic, ICM_GETDEFAULTQUALITY, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); - return dwICValue; -} - -DWORD ICGetDefaultKeyFrameRate(HIC hic) { - ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); - return dwICValue; -} - -DWORD ICDrawWindow(HIC hic, LPVOID prc) { - return ICSendMessage(hic, ICM_DRAW_WINDOW, cast(DWORD)prc, RECT.sizeof); -} - -extern (Windows) { - DWORD ICCompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiOutput, LPVOID lpData, - LPBITMAPINFOHEADER lpbiInput, LPVOID lpBits, LPDWORD lpckid, LPDWORD lpdwFlags, - LONG lFrameNum, DWORD dwFrameSize, DWORD dwQuality, LPBITMAPINFOHEADER lpbiPrev, LPVOID lpPrev); -} - -LRESULT ICCompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICCompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICCompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -DWORD ICCompressGetFormatSize(HIC hic, LPVOID lpbi) { - return cast(DWORD)ICCompressGetFormat(hic, lpbi, null); -} -DWORD ICCompressGetSize(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return cast(DWORD)ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICCompressEnd(HIC hic) { - return ICSendMessage(hic, ICM_COMPRESS_END, 0, 0); -} - -extern (Windows) { - DWORD ICDecompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiFormat, LPVOID lpData, LPBITMAPINFOHEADER lpbi, LPVOID lpBits); -} - -LRESULT ICDecompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICDecompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LONG ICDecompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return cast(LONG)ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LONG ICDecompressGetFormatSize(HIC hic, LPVOID lpbi) { - return ICDecompressGetFormat(hic, lpbi, null); -} -LRESULT ICDecompressGetPalette(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { - return ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); -} -LRESULT ICDecompressSetPalette(HIC hic, LPVOID lpbiPalette) { - return ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, cast(DWORD_PTR)lpbiPalette, 0); -} -LRESULT ICDecompressEnd(HIC hic) { - return ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0); -} - -LRESULT ICDecompressEx(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX, cast(DWORD_PTR)&ic, ic.sizeof); -} - -LRESULT ICDecompressExBegin(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, cast(DWORD_PTR)&ic, ic.sizeof); -} - -LRESULT ICDecompressExQuery(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, - LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, - LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { - ICDECOMPRESSEX ic; - - ic.dwFlags = dwFlags; - ic.lpbiSrc = lpbiSrc; - ic.lpSrc = lpSrc; - ic.xSrc = xSrc; - ic.ySrc = ySrc; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.lpbiDst = lpbiDst; - ic.lpDst = lpDst; - ic.xDst = xDst; - ic.yDst = yDst; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - - return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, cast(DWORD_PTR)&ic, ic.sizeof); -} - -LRESULT ICDecompressExEnd(HIC hic) { - return ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0); -} - -extern (Windows) { - DWORD ICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, - int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, - int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale); -} - -extern (Windows) { - DWORD ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWORD cbData, LONG lTime); -} - -LRESULT ICDrawSuggestFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, - int dxSrc, int dySrc, int dxDst, int dyDst, HIC hicDecomp) { - ICDRAWSUGGEST ic; - - ic.lpbiIn = lpbiIn; - ic.lpbiSuggest = lpbiOut; - ic.dxSrc = dxSrc; - ic.dySrc = dySrc; - ic.dxDst = dxDst; - ic.dyDst = dyDst; - ic.hicDecompressor = hicDecomp; - - return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, cast(DWORD_PTR)&ic, ic.sizeof); -} - -LRESULT ICDrawQuery(HIC hic, LPVOID lpbiInput) { - return ICSendMessage(hic, ICM_DRAW_QUERY, cast(DWORD_PTR)lpbiInput, 0L); -} -LRESULT ICDrawChangePalette(HIC hic, LPVOID lpbiInput) { - return ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast(DWORD_PTR)lpbiInput, 0L); -} -LRESULT ICGetBuffersWanted(HIC hic, LPVOID lpdwBuffers) { - return ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast(DWORD_PTR)lpdwBuffers, 0); -} -LRESULT ICDrawEnd(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_END, 0, 0); -} -LRESULT ICDrawStart(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_START, 0, 0); -} -LRESULT ICDrawStartPlay(HIC hic, DWORD lFrom, DWORD lTo) { - return ICSendMessage(hic, ICM_DRAW_START_PLAY, cast(DWORD_PTR)lFrom, cast(DWORD_PTR)lTo); -} -LRESULT ICDrawStop(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_STOP, 0, 0); -} -LRESULT ICDrawStopPlay(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0); -} -LRESULT ICDrawGetTime(HIC hic, LPVOID lplTime) { - return ICSendMessage(hic, ICM_DRAW_GETTIME, cast(DWORD_PTR)lplTime, 0); -} -LRESULT ICDrawSetTime(HIC hic, DWORD lTime) { - return ICSendMessage(hic, ICM_DRAW_SETTIME, cast(DWORD_PTR)lTime, 0); -} -LRESULT ICDrawRealize(HIC hic, HDC hdc, BOOL fBackground) { - return ICSendMessage(hic, ICM_DRAW_REALIZE, cast(DWORD_PTR)hdc, cast(DWORD_PTR)fBackground); -} -LRESULT ICDrawFlush(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0); -} -LRESULT ICDrawRenderBuffer(HIC hic) { - return ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0); -} - -LRESULT ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam, LONG function(LPARAM, UINT, LONG) fpfnStatus) { - ICSETSTATUSPROC ic; - - ic.dwFlags = dwFlags; - ic.lParam = lParam; - ic.Status = fpfnStatus; - - return ICSendMessage(hic, ICM_SET_STATUS_PROC, cast(DWORD_PTR)&ic, ic.sizeof); -} - -HIC ICDecompressOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut) { - return ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS); -} - -HIC ICDrawOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn) { - return ICLocate(fccType, fccHandler, lpbiIn, null, ICMODE_DRAW); -} - -extern (Windows) { - HIC ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags); - HIC ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy); - HANDLE ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality, LONG* plSize); - HANDLE ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut); -} - -struct COMPVARS { - LONG cbSize = this.sizeof; - DWORD dwFlags; - HIC hic; - DWORD fccType; - DWORD fccHandler; - LPBITMAPINFO lpbiIn; - LPBITMAPINFO lpbiOut; - LPVOID lpBitsOut; - LPVOID lpBitsPrev; - LONG lFrame; - LONG lKey; - LONG lDataRate; - LONG lQ; - LONG lKeyCount; - LPVOID lpState; - LONG cbState; -} -alias COMPVARS* PCOMPVARS; - -const ICMF_COMPVARS_VALID = 0x00000001; - -extern (Windows) { - BOOL ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle); -} - -enum { - ICMF_CHOOSE_KEYFRAME = 0x0001, - ICMF_CHOOSE_DATARATE = 0x0002, - ICMF_CHOOSE_PREVIEW = 0x0004, - ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, -} - -extern (Windows) { - BOOL ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn); - void ICSeqCompressFrameEnd(PCOMPVARS pc); - LPVOID ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL* pfKey, LONG* plSize); - void ICCompressorFree(PCOMPVARS pc); -} - -alias HANDLE HDRAWDIB; - -enum { - DDF_0001 = 0x0001, - DDF_UPDATE = 0x0002, - DDF_SAME_HDC = 0x0004, - DDF_SAME_DRAW = 0x0008, - DDF_DONTDRAW = 0x0010, - DDF_ANIMATE = 0x0020, - DDF_BUFFER = 0x0040, - DDF_JUSTDRAWIT = 0x0080, - DDF_FULLSCREEN = 0x0100, - DDF_BACKGROUNDPAL = 0x0200, - DDF_NOTKEYFRAME = 0x0400, - DDF_HURRYUP = 0x0800, - DDF_HALFTONE = 0x1000, - DDF_2000 = 0x2000, - DDF_PREROLL = DDF_DONTDRAW, - DDF_SAME_DIB = DDF_SAME_DRAW, - DDF_SAME_SIZE = DDF_SAME_DRAW, -} - -extern (Windows) { - BOOL DrawDibInit(); - HDRAWDIB DrawDibOpen(); - BOOL DrawDibClose(HDRAWDIB hdd); - LPVOID DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags); - UINT DrawDibError(HDRAWDIB hdd); - HPALETTE DrawDibGetPalette(HDRAWDIB hdd); - BOOL DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal); - BOOL DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe); - UINT DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground); - BOOL DrawDibStart(HDRAWDIB hdd, DWORD rate); - BOOL DrawDibStop(HDRAWDIB hdd); - BOOL DrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags); - BOOL DrawDibDraw(HDRAWDIB hdd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, - LPVOID lpBits, int xSrc, int ySrc, int dxSrc, int dySrc, UINT wFlags); -} - -BOOL DrawDibUpdate(HDRAWDIB hdd, HDC hdc, int x, int y) { - return DrawDibDraw(hdd, hdc, x, y, 0, 0, null, null, 0, 0, 0, 0, DDF_UPDATE); -} - -extern (Windows) { - BOOL DrawDibEnd(HDRAWDIB hdd); -} - -struct DRAWDIBTIME { - LONG timeCount; - LONG timeDraw; - LONG timeDecompress; - LONG timeDither; - LONG timeStretch; - LONG timeBlt; - LONG timeSetDIBits; -} -alias DRAWDIBTIME* LPDRAWDIBTIME; - -extern (Windows) { - BOOL DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime); -} - -enum { - PD_CAN_DRAW_DIB = 0x0001, - PD_CAN_STRETCHDIB = 0x0002, - PD_STRETCHDIB_1_1_OK = 0x0004, - PD_STRETCHDIB_1_2_OK = 0x0008, - PD_STRETCHDIB_1_N_OK = 0x0010, -} - -extern (Windows) { - LRESULT DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); - void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, - int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, - int SrcX, int SrcY, int SrcXE, int SrcYE); -} - -alias DWORD FOURCC; - -alias WORD TWOCC; - -const formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); -const listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); -const ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); -const listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); -const ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); -const ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); -const ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); -const ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); -const listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); -const listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); -const ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); -const streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); -const streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); -const streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); -const streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); - -const cktypeDIBbits = aviTWOCC!('d', 'b'); -const cktypeDIBcompressed = aviTWOCC!('d', 'c'); -const cktypePALchange = aviTWOCC!('p', 'c'); -const cktypeWAVEbytes = aviTWOCC!('w', 'b'); - -const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); - -DWORD FromHex(char n) { - return (n >= 'A') ? n + 10 - 'A' : n - '0'; -} - -WORD StreamFromFOURCC(DWORD fcc) { - return cast(WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))); -} - -WORD TWOCCFromFOURCC(DWORD fcc) { - return HIWORD(fcc); -} - -BYTE ToHex(DWORD n) { - return cast(BYTE)((n > 9) ? n - 10 + 'A' : n + '0'); -} - -DWORD MAKEAVICKID(WORD tcc, WORD stream) { - return MAKELONG(cast(WORD)((ToHex(stream & 0x0f) << 8) | (ToHex((stream & 0xf0) >> 4))), tcc); -} - -enum { - AVIF_HASINDEX = 0x00000010, - AVIF_MUSTUSEINDEX = 0x00000020, - AVIF_ISINTERLEAVED = 0x00000100, - AVIF_WASCAPTUREFILE = 0x00010000, - AVIF_COPYRIGHTED = 0x00020000, -} - -const AVI_HEADERSIZE = 2048; - -struct MainAVIHeader { - DWORD dwMicroSecPerFrame; - DWORD dwMaxBytesPerSec; - DWORD dwPaddingGranularity; - DWORD dwFlags; - DWORD dwTotalFrames; - DWORD dwInitialFrames; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwReserved[4]; -} - -const AVISF_DISABLED = 0x00000001; - -const AVISF_VIDEO_PALCHANGES = 0x00010000; - -struct AVIStreamHeader { - FOURCC fccType; - FOURCC fccHandler; - DWORD dwFlags; - WORD wPriority; - WORD wLanguage; - DWORD dwInitialFrames; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; -} - -enum { - AVIIF_FIRSTPART = 0x00000020L, - AVIIF_LASTPART = 0x00000040L, - AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), - AVIIF_NOTIME = 0x00000100L, - AVIIF_COMPUSE = 0x0FFF0000L, -} - -struct AVIINDEXENTRY { - DWORD ckid; - DWORD dwFlags; - DWORD dwChunkOffset; - DWORD dwChunkLength; -} - -struct AVIPALCHANGE { - BYTE bFirstEntry; - BYTE bNumEntries; - WORD wFlags; - PALETTEENTRY peNew[]; -} - -const AVIGETFRAMEF_BESTDISPLAYFMT = 1; - -struct AVISTREAMINFOW { - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwCaps; - WORD wPriority; - WORD wLanguage; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwInitialFrames; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; - DWORD dwEditCount; - DWORD dwFormatChangeCount; - WCHAR szName[64]; -} -alias AVISTREAMINFOW* LPAVISTREAMINFOW; - -struct AVISTREAMINFOA { - DWORD fccType; - DWORD fccHandler; - DWORD dwFlags; - DWORD dwCaps; - WORD wPriority; - WORD wLanguage; - DWORD dwScale; - DWORD dwRate; - DWORD dwStart; - DWORD dwLength; - DWORD dwInitialFrames; - DWORD dwSuggestedBufferSize; - DWORD dwQuality; - DWORD dwSampleSize; - RECT rcFrame; - DWORD dwEditCount; - DWORD dwFormatChangeCount; - char szName[64]; -} -alias AVISTREAMINFOA* LPAVISTREAMINFOA; - -version(Unicode) { - alias AVISTREAMINFOW AVISTREAMINFO; - alias LPAVISTREAMINFOW LPAVISTREAMINFO; -} else { // Unicode - alias AVISTREAMINFOA AVISTREAMINFO; - alias LPAVISTREAMINFOA LPAVISTREAMINFO; -} - -const AVISTREAMINFO_DISABLED = 0x00000001; -const AVISTREAMINFO_FORMATCHANGES = 0x00010000; - -struct AVIFILEINFOW { - DWORD dwMaxBytesPerSec; - DWORD dwFlags; - DWORD dwCaps; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwScale; - DWORD dwRate; - DWORD dwLength; - DWORD dwEditCount; - WCHAR szFileType[64]; -} -alias AVIFILEINFOW* LPAVIFILEINFOW; - -struct AVIFILEINFOA { - DWORD dwMaxBytesPerSec; - DWORD dwFlags; - DWORD dwCaps; - DWORD dwStreams; - DWORD dwSuggestedBufferSize; - DWORD dwWidth; - DWORD dwHeight; - DWORD dwScale; - DWORD dwRate; - DWORD dwLength; - DWORD dwEditCount; - char szFileType[64]; -} -alias AVIFILEINFOA* LPAVIFILEINFOA; - -version(Unicode) { - alias AVIFILEINFOW AVIFILEINFO; - alias LPAVIFILEINFOW LPAVIFILEINFO; -} else { // Unicode - alias AVIFILEINFOA AVIFILEINFO; - alias LPAVIFILEINFOA LPAVIFILEINFO; -} - -enum { - AVIFILEINFO_HASINDEX = 0x00000010, - AVIFILEINFO_MUSTUSEINDEX = 0x00000020, - AVIFILEINFO_ISINTERLEAVED = 0x00000100, - AVIFILEINFO_WASCAPTUREFILE = 0x00010000, - AVIFILEINFO_COPYRIGHTED = 0x00020000, -} - -enum { - AVIFILECAPS_CANREAD = 0x00000001, - AVIFILECAPS_CANWRITE = 0x00000002, - AVIFILECAPS_ALLKEYFRAMES = 0x00000010, - AVIFILECAPS_NOCOMPRESSION = 0x00000020, -} - -extern (Windows) { - alias BOOL function(int) AVISAVECALLBACK; -} - -struct AVICOMPRESSOPTIONS { - DWORD fccType; - DWORD fccHandler; - DWORD dwKeyFrameEvery; - DWORD dwQuality; - DWORD dwBytesPerSecond; - DWORD dwFlags; - LPVOID lpFormat; - DWORD cbFormat; - LPVOID lpParms; - DWORD cbParms; - DWORD dwInterleaveEvery; -} -alias AVICOMPRESSOPTIONS* LPAVICOMPRESSOPTIONS; - -enum { - AVICOMPRESSF_INTERLEAVE = 0x00000001, - AVICOMPRESSF_DATARATE = 0x00000002, - AVICOMPRESSF_KEYFRAMES = 0x00000004, - AVICOMPRESSF_VALID = 0x00000008, -} - -/+ TODO: -DECLARE_INTERFACE_(IAVIStream, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD(Create) (THIS_ LPARAM lParam1, LPARAM lParam2) PURE ; - STDMETHOD(Info) (THIS_ AVISTREAMINFOW FAR * psi, LONG lSize) PURE ; - STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ; - STDMETHOD(ReadFormat) (THIS_ LONG lPos, - LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ; - STDMETHOD(SetFormat) (THIS_ LONG lPos, - LPVOID lpFormat, LONG cbFormat) PURE ; - STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, - LONG FAR * plBytes, LONG FAR * plSamples) PURE ; - STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, - DWORD dwFlags, - LONG FAR *plSampWritten, - LONG FAR *plBytesWritten) PURE ; - STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE; - STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ; - STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ; -#ifdef _WIN32 - STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, - LONG cbInfo) PURE; -#else - STDMETHOD(Reserved1) (THIS) PURE; - STDMETHOD(Reserved2) (THIS) PURE; - STDMETHOD(Reserved3) (THIS) PURE; - STDMETHOD(Reserved4) (THIS) PURE; - STDMETHOD(Reserved5) (THIS) PURE; -#endif -}; - -typedef IAVIStream FAR* PAVISTREAM; - -#undef INTERFACE -#define INTERFACE IAVIStreaming - -DECLARE_INTERFACE_(IAVIStreaming, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD(Begin) (THIS_ - LONG lStart, - LONG lEnd, - LONG lRate) PURE; - STDMETHOD(End) (THIS) PURE; -}; - -typedef IAVIStreaming FAR* PAVISTREAMING; - - -#undef INTERFACE -#define INTERFACE IAVIEditStream - -DECLARE_INTERFACE_(IAVIEditStream, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD(Cut) (THIS_ LONG FAR *plStart, - LONG FAR *plLength, - PAVISTREAM FAR * ppResult) PURE; - STDMETHOD(Copy) (THIS_ LONG FAR *plStart, - LONG FAR *plLength, - PAVISTREAM FAR * ppResult) PURE; - STDMETHOD(Paste) (THIS_ LONG FAR *plPos, - LONG FAR *plLength, - PAVISTREAM pstream, - LONG lStart, - LONG lEnd) PURE; - STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE; - STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, - LONG cbInfo) PURE; -}; - -typedef IAVIEditStream FAR* PAVIEDITSTREAM; - -#undef INTERFACE -#define INTERFACE IAVIPersistFile - -DECLARE_INTERFACE_(IAVIPersistFile, IPersistFile) -{ - STDMETHOD(Reserved1)(THIS) PURE; -}; - -typedef IAVIPersistFile FAR* PAVIPERSISTFILE; - -#undef INTERFACE -#define INTERFACE IAVIFile -#define PAVIFILE IAVIFile FAR* - -DECLARE_INTERFACE_(IAVIFile, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD(Info) (THIS_ - AVIFILEINFOW FAR * pfi, - LONG lSize) PURE; - STDMETHOD(GetStream) (THIS_ - PAVISTREAM FAR * ppStream, - DWORD fccType, - LONG lParam) PURE; - STDMETHOD(CreateStream) (THIS_ - PAVISTREAM FAR * ppStream, - AVISTREAMINFOW FAR * psi) PURE; - STDMETHOD(WriteData) (THIS_ - DWORD ckid, - LPVOID lpData, - LONG cbData) PURE; - STDMETHOD(ReadData) (THIS_ - DWORD ckid, - LPVOID lpData, - LONG FAR *lpcbData) PURE; - STDMETHOD(EndRecord) (THIS) PURE; - STDMETHOD(DeleteStream) (THIS_ - DWORD fccType, - LONG lParam) PURE; -}; - -#undef PAVIFILE -typedef IAVIFile FAR* PAVIFILE; - -#undef INTERFACE -#define INTERFACE IGetFrame -#define PGETFRAME IGetFrame FAR* - -DECLARE_INTERFACE_(IGetFrame, IUnknown) -{ - STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; - STDMETHOD_(ULONG,AddRef) (THIS) PURE; - STDMETHOD_(ULONG,Release) (THIS) PURE; - - STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE; - - STDMETHOD(Begin) (THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE; - STDMETHOD(End) (THIS) PURE; - - STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, int x, int y, int dx, int dy) PURE; -}; - -#undef PGETFRAME -typedef IGetFrame FAR* PGETFRAME; - -#define DEFINE_AVIGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) - -DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0); -DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0); -DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0); -DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0); -DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0); -DEFINE_AVIGUID(IID_IAVIPersistFile, 0x00020025, 0, 0); -#ifndef UNICODE -DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal, 0x00020009, 0, 0); -#endif - -DEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0); - -#define AVIFILEHANDLER_CANREAD 0x0001 -#define AVIFILEHANDLER_CANWRITE 0x0002 -#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004 - -STDAPI_(void) AVIFileInit(void); -STDAPI_(void) AVIFileExit(void); - -STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile); -STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile); - -#ifdef _WIN32 -STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile, - UINT uMode, LPCLSID lpHandler); -STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, - UINT uMode, LPCLSID lpHandler); -#ifdef UNICODE -#define AVIFileOpen AVIFileOpenW -#else -#define AVIFileOpen AVIFileOpenA -#endif -#else -STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile, - UINT uMode, LPCLSID lpHandler); -#define AVIFileOpenW AVIFileOpen -#endif - -#ifdef _WIN32 -STDAPI AVIFileInfoW (PAVIFILE pfile, LPAVIFILEINFOW pfi, LONG lSize); -STDAPI AVIFileInfoA (PAVIFILE pfile, LPAVIFILEINFOA pfi, LONG lSize); -#ifdef UNICODE -#define AVIFileInfo AVIFileInfoW -#else -#define AVIFileInfo AVIFileInfoA -#endif -#else -STDAPI AVIFileInfo (PAVIFILE pfile, LPAVIFILEINFO pfi, LONG lSize); -#define AVIFileInfoW AVIFileInfo -#endif - - -STDAPI AVIFileGetStream (PAVIFILE pfile, PAVISTREAM FAR * ppavi, DWORD fccType, LONG lParam); - - -#ifdef _WIN32 -STDAPI AVIFileCreateStreamW (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOW FAR * psi); -STDAPI AVIFileCreateStreamA (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOA FAR * psi); -#ifdef UNICODE -#define AVIFileCreateStream AVIFileCreateStreamW -#else -#define AVIFileCreateStream AVIFileCreateStreamA -#endif -#else -STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFO FAR * psi); -#define AVIFileCreateStreamW AVIFileCreateStream -#endif - -STDAPI AVIFileWriteData (PAVIFILE pfile, - DWORD ckid, - LPVOID lpData, - LONG cbData); -STDAPI AVIFileReadData (PAVIFILE pfile, - DWORD ckid, - LPVOID lpData, - LONG FAR *lpcbData); -STDAPI AVIFileEndRecord (PAVIFILE pfile); - -STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi); -STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi); - -STDAPI AVIStreamInfoW (PAVISTREAM pavi, LPAVISTREAMINFOW psi, LONG lSize); -STDAPI AVIStreamInfoA (PAVISTREAM pavi, LPAVISTREAMINFOA psi, LONG lSize); -#ifdef UNICODE -#define AVIStreamInfo AVIStreamInfoW -#else -#define AVIStreamInfo AVIStreamInfoA -#endif - -STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi, LONG lPos, LONG lFlags); -STDAPI AVIStreamReadFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG FAR *lpcbFormat); -STDAPI AVIStreamSetFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG cbFormat); -STDAPI AVIStreamReadData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG FAR *lpcb); -STDAPI AVIStreamWriteData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG cb); - -STDAPI AVIStreamRead (PAVISTREAM pavi, - LONG lStart, - LONG lSamples, - LPVOID lpBuffer, - LONG cbBuffer, - LONG FAR * plBytes, - LONG FAR * plSamples); -#define AVISTREAMREAD_CONVENIENT (-1L) - -STDAPI AVIStreamWrite (PAVISTREAM pavi, - LONG lStart, LONG lSamples, - LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, - LONG FAR *plSampWritten, - LONG FAR *plBytesWritten); - -STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi); -STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi); -STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi, LONG lTime); -STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi, LONG lSample); - - -STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate); -STDAPI AVIStreamEndStreaming(PAVISTREAM pavi); - -STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi, - LPBITMAPINFOHEADER lpbiWanted); -STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg, LONG lPos); -STDAPI AVIStreamGetFrameClose(PGETFRAME pg); - -STDAPI AVIStreamOpenFromFileA(PAVISTREAM FAR *ppavi, LPCSTR szFile, - DWORD fccType, LONG lParam, - UINT mode, CLSID FAR *pclsidHandler); -STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile, - DWORD fccType, LONG lParam, - UINT mode, CLSID FAR *pclsidHandler); -#ifdef UNICODE -#define AVIStreamOpenFromFile AVIStreamOpenFromFileW -#else -#define AVIStreamOpenFromFile AVIStreamOpenFromFileA -#endif - -STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, - CLSID FAR *pclsidHandler); - - - -#define FIND_DIR 0x0000000FL -#define FIND_NEXT 0x00000001L -#define FIND_PREV 0x00000004L -#define FIND_FROM_START 0x00000008L - -#define FIND_TYPE 0x000000F0L -#define FIND_KEY 0x00000010L -#define FIND_ANY 0x00000020L -#define FIND_FORMAT 0x00000040L - -#define FIND_RET 0x0000F000L -#define FIND_POS 0x00000000L -#define FIND_LENGTH 0x00001000L -#define FIND_OFFSET 0x00002000L -#define FIND_SIZE 0x00003000L -#define FIND_INDEX 0x00004000L - -#define AVIStreamFindKeyFrame AVIStreamFindSample -#define FindKeyFrame FindSample - -#define AVIStreamClose AVIStreamRelease -#define AVIFileClose AVIFileRelease -#define AVIStreamInit AVIFileInit -#define AVIStreamExit AVIFileExit - -#define SEARCH_NEAREST FIND_PREV -#define SEARCH_BACKWARD FIND_PREV -#define SEARCH_FORWARD FIND_NEXT -#define SEARCH_KEY FIND_KEY -#define SEARCH_ANY FIND_ANY - -#define AVIStreamSampleToSample(pavi1, pavi2, l) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2, l)) - -#define AVIStreamNextSample(pavi, l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY) - -#define AVIStreamPrevSample(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY) - -#define AVIStreamNearestSample(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY) - -#define AVIStreamNextKeyFrame(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY) - -#define AVIStreamPrevKeyFrame(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY) - -#define AVIStreamNearestKeyFrame(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY) - -#define AVIStreamIsKeyFrame(pavi, l) (AVIStreamNearestKeyFrame(pavi,l) == l) - -#define AVIStreamPrevSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t))) - -#define AVIStreamNextSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t))) - -#define AVIStreamNearestSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t))) - -#define AVIStreamNextKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) - -#define AVIStreamPrevKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) - -#define AVIStreamNearestKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) - -#define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamStart(pavi)) - -#define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamLength(pavi)) - -#define AVIStreamEnd(pavi) (AVIStreamStart(pavi) + AVIStreamLength(pavi)) - -#define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi)) - -#define AVIStreamSampleSize(pavi, lPos, plSize) AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL) - -#define AVIStreamFormatSize(pavi, lPos, plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize) - -#define AVIStreamDataSize(pavi, fcc, plSize) AVIStreamReadData(pavi,fcc,NULL,plSize) - -#ifndef comptypeDIB -#define comptypeDIB mmioFOURCC('D', 'I', 'B', ' ') -#endif - -STDAPI AVIMakeCompressedStream( - PAVISTREAM FAR * ppsCompressed, - PAVISTREAM ppsSource, - AVICOMPRESSOPTIONS FAR * lpOptions, - CLSID FAR *pclsidHandler); - -EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM pfile, - LPAVICOMPRESSOPTIONS lpOptions, - ...); - -STDAPI AVISaveVA(LPCSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM FAR * ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); -EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM pfile, - LPAVICOMPRESSOPTIONS lpOptions, - ...); - -STDAPI AVISaveVW(LPCWSTR szFile, - CLSID FAR *pclsidHandler, - AVISAVECALLBACK lpfnCallback, - int nStreams, - PAVISTREAM FAR * ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); -#ifdef UNICODE -#define AVISave AVISaveW -#define AVISaveV AVISaveVW -#else -#define AVISave AVISaveA -#define AVISaveV AVISaveVA -#endif - - - -STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd, - UINT uiFlags, - int nStreams, - PAVISTREAM FAR *ppavi, - LPAVICOMPRESSOPTIONS FAR *plpOptions); - -STDAPI AVISaveOptionsFree(int nStreams, - LPAVICOMPRESSOPTIONS FAR *plpOptions); - -STDAPI AVIBuildFilterW(LPWSTR lpszFilter, LONG cbFilter, BOOL fSaving); -STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving); -#ifdef UNICODE -#define AVIBuildFilter AVIBuildFilterW -#else -#define AVIBuildFilter AVIBuildFilterA -#endif -STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile, - int nStreams, - PAVISTREAM FAR * papStreams); - -STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM FAR *ppstream); - -STDAPI AVIPutFileOnClipboard(PAVIFILE pf); - -STDAPI AVIGetFromClipboard(PAVIFILE FAR * lppf); - -STDAPI AVIClearClipboard(void); - -STDAPI CreateEditableStream( - PAVISTREAM FAR * ppsEditable, - PAVISTREAM psSource); - -STDAPI EditStreamCut(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); - -STDAPI EditStreamCopy(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); - -STDAPI EditStreamPaste(PAVISTREAM pavi, LONG FAR *plPos, LONG FAR *plLength, PAVISTREAM pstream, LONG lStart, LONG lEnd); - -STDAPI EditStreamClone(PAVISTREAM pavi, PAVISTREAM FAR *ppResult); - - -STDAPI EditStreamSetNameA(PAVISTREAM pavi, LPCSTR lpszName); -STDAPI EditStreamSetNameW(PAVISTREAM pavi, LPCWSTR lpszName); -STDAPI EditStreamSetInfoW(PAVISTREAM pavi, LPAVISTREAMINFOW lpInfo, LONG cbInfo); -STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo); -#ifdef UNICODE -#define EditStreamSetInfo EditStreamSetInfoW -#define EditStreamSetName EditStreamSetNameW -#else -#define EditStreamSetInfo EditStreamSetInfoA -#define EditStreamSetName EditStreamSetNameA -#endif -+/ -const AVIERR_OK = 0L; - -SCODE MAKE_AVIERR(DWORD error) { - return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); -} - -const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); -const AVIERR_BADFORMAT = MAKE_AVIERR(102); -const AVIERR_MEMORY = MAKE_AVIERR(103); -const AVIERR_INTERNAL = MAKE_AVIERR(104); -const AVIERR_BADFLAGS = MAKE_AVIERR(105); -const AVIERR_BADPARAM = MAKE_AVIERR(106); -const AVIERR_BADSIZE = MAKE_AVIERR(107); -const AVIERR_BADHANDLE = MAKE_AVIERR(108); -const AVIERR_FILEREAD = MAKE_AVIERR(109); -const AVIERR_FILEWRITE = MAKE_AVIERR(110); -const AVIERR_FILEOPEN = MAKE_AVIERR(111); -const AVIERR_COMPRESSOR = MAKE_AVIERR(112); -const AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); -const AVIERR_READONLY = MAKE_AVIERR(114); -const AVIERR_NODATA = MAKE_AVIERR(115); -const AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); -const AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); -const AVIERR_USERABORT = MAKE_AVIERR(198); -const AVIERR_ERROR = MAKE_AVIERR(199); - -const TCHAR[] MCIWND_WINDOW_CLASS = "MCIWndClass"; - -extern (Windows) { - HWND MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCSTR szFile); - HWND MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCWSTR szFile); -} - -version(Unicode) { - alias MCIWndCreateW MCIWndCreate; -} else { // Unicode - alias MCIWndCreateA MCIWndCreate; -} - -extern(Windows) { - BOOL MCIWndRegisterClass(); -} - -enum { - MCIWNDOPENF_NEW = 0x0001, - MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, - MCIWNDF_NOPLAYBAR = 0x0002, - MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, - MCIWNDF_NOMENU = 0x0008, - MCIWNDF_SHOWNAME = 0x0010, - MCIWNDF_SHOWPOS = 0x0020, - MCIWNDF_SHOWMODE = 0x0040, - MCIWNDF_SHOWALL = 0x0070, - MCIWNDF_NOTIFYMODE = 0x0100, - MCIWNDF_NOTIFYPOS = 0x0200, - MCIWNDF_NOTIFYSIZE = 0x0400, - MCIWNDF_NOTIFYERROR = 0x1000, - MCIWNDF_NOTIFYALL = 0x1F00, - MCIWNDF_NOTIFYANSI = 0x0080, - MCIWNDF_NOTIFYMEDIAA = 0x0880, - MCIWNDF_NOTIFYMEDIAW = 0x0800, -} - -version(Unicode) { - alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; -} else { // Unicode - alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; -} - -enum { - MCIWNDF_RECORD = 0x2000, - MCIWNDF_NOERRORDLG = 0x4000, - MCIWNDF_NOOPEN = 0x8000, -} - -// can macros - -BOOL MCIWndCanPlay(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0); } -BOOL MCIWndCanRecord(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0); } -BOOL MCIWndCanSave(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0); } -BOOL MCIWndCanWindow(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0); } -BOOL MCIWndCanEject(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0); } -BOOL MCIWndCanConfig(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0); } -BOOL MCIWndPaletteKick(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0); } -LONG MCIWndSave(HWND hwnd, LPVOID szFile) - { return cast(LONG)SendMessage(hwnd, MCI_SAVE, 0, cast(LPARAM)szFile); } -LONG MCIWndSaveDialog(HWND hwnd) - { return MCIWndSave(hwnd, cast(LPVOID)-1); } -LONG MCIWndNew(HWND hwnd, LPVOID lp) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_NEW, 0, cast(LPARAM)lp); } -LONG MCIWndRecord(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_RECORD, 0, 0); } -LONG MCIWndOpen(HWND hwnd, LPVOID sz, UINT f) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_OPEN, cast(WPARAM)f, cast(LPARAM)sz); } -LONG MCIWndOpenDialog(HWND hwnd) - { return MCIWndOpen(hwnd, cast(LPVOID)-1, 0); } -LONG MCIWndClose(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_CLOSE, 0, 0); } -LONG MCIWndPlay(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_PLAY, 0, 0); } -LONG MCIWndStop(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_STOP, 0, 0); } -LONG MCIWndPause(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_PAUSE, 0, 0); } -LONG MCIWndResume(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCI_RESUME, 0, 0); } -LONG MCIWndSeek(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCI_SEEK, 0, cast(LPARAM)lPos); } -LONG MCIWndHome(HWND hwnd) - { return MCIWndSeek(hwnd, MCIWND_START); } -LONG MCIWndEnd(HWND hwnd) - { return MCIWndSeek(hwnd, MCIWND_END); } -LONG MCIWndEject(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_EJECT, 0, 0); } -LONG MCIWndGetSource(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast(LPARAM)prc); } -LONG MCIWndPutSource(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast(LPARAM)prc); } -LONG MCIWndGetDest(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast(LPARAM)prc); } -LONG MCIWndPutDest(HWND hwnd, LPRECT prc) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast(LPARAM)prc); } -LONG MCIWndPlayReverse(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0); } -LONG MCIWndPlayFrom(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast(LPARAM)lPos); } -LONG MCIWndPlayTo(HWND hwnd, LONG lPos) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast(LPARAM)lPos); } -LONG MCIWndPlayFromTo(HWND hwnd, LONG lStart, LONG lEnd) - { MCIWndSeek(hwnd, lStart); return MCIWndPlayTo(hwnd, lEnd); } -UINT MCIWndGetDeviceID(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0); } -UINT MCIWndGetAlias(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0); } -LONG MCIWndGetMode(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETMODE, cast(WPARAM)len, cast(LPARAM)lp); } -LONG MCIWndGetPosition(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0); } -LONG MCIWndGetPositionString(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, cast(WPARAM)len, cast(LPARAM)lp); } -LONG MCIWndGetStart(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0); } -LONG MCIWndGetLength(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0); } -LONG MCIWndGetEnd(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETEND, 0, 0); } -LONG MCIWndStep(HWND hwnd, LONG n) - { return cast(LONG)SendMessage(hwnd, MCI_STEP, 0, cast(LPARAM)n); } -void MCIWndDestroy(HWND hwnd) - { SendMessage(hwnd, WM_CLOSE, 0, 0); } -void MCIWndSetZoom(HWND hwnd, UINT iZoom) - { SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast(LPARAM)iZoom); } -UINT MCIWndGetZoom(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0); } -LONG MCIWndSetVolume(HWND hwnd, UINT iVol) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast(LPARAM)iVol); } -LONG MCIWndGetVolume(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0); } -LONG MCIWndSetSpeed(HWND hwnd, UINT iSpeed) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast(LPARAM)iSpeed); } -LONG MCIWndGetSpeed(HWND hwnd) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0); } -LONG MCIWndSetTimeFormat(HWND hwnd, LPTSTR lp) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast(LPARAM)lp); } -LONG MCIWndUseFrames(HWND hwnd) - { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"frames").ptr); } -LONG MCIWndUseTime(HWND hwnd) - { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"ms").ptr); } -LONG MCIWndGetTimeFormat(HWND hwnd, LPTSTR lp, UINT len) - { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, cast(WPARAM)len, cast(LPARAM)lp); } -void MCIWndValidateMedia(HWND hwnd) - { SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0); } -void MCIWndSetRepeat(HWND hwnd, BOOL f) - { SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast(LPARAM)f); } -BOOL MCIWndGetRepeat(HWND hwnd) - { return cast(BOOL)SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0); } -void MCIWndSetActiveTimer(HWND hwnd, UINT active) - { SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast(WPARAM)active, 0); } -void MCIWndSetInactiveTimer(HWND hwnd, UINT inactive) - { SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast(WPARAM)inactive, 0); } -void MCIWndSetTimers(HWND hwnd, UINT active, UINT inactive) - { SendMessage(hwnd, MCIWNDM_SETTIMERS, cast(WPARAM)active, cast(LPARAM)inactive); } -UINT MCIWndGetActiveTimer(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0); } -UINT MCIWndGetInactiveTimer(HWND hwnd) - { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0); } -LONG MCIWndRealize(HWND hwnd, BOOL fBkgnd) - { return SendMessage(hwnd, MCIWNDM_REALIZE, cast(WPARAM)fBkgnd, 0); } -LONG MCIWndSendString(HWND hwnd, LPTSTR sz) - { return SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast(LPARAM)sz); } -LONG MCIWndReturnString(HWND hwnd, LPVOID lp, UINT len) - { return SendMessage(hwnd, MCIWNDM_RETURNSTRING, cast(WPARAM)len, cast(LPARAM)lp); } -LONG MCIWndGetError(HWND hwnd, LPVOID lp, UINT len) - { return SendMessage(hwnd, MCIWNDM_GETERROR, cast(WPARAM)len, cast(LPARAM)lp); } -HPALETTE MCIWndGetPalette(HWND hwnd) - { return cast(HPALETTE)SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0); } -LONG MCIWndSetPalette(HWND hwnd, HPALETTE hpal) - { return SendMessage(hwnd, MCIWNDM_SETPALETTE, cast(WPARAM)hpal, 0); } -LONG MCIWndGetFileName(HWND hwnd, LPVOID lp, UINT len) - { return SendMessage(hwnd, MCIWNDM_GETFILENAME, cast(WPARAM)len, cast(LPARAM)lp); } -LONG MCIWndGetDevice(HWND hwnd, LPVOID lp, UINT len) - { return SendMessage(hwnd, MCIWNDM_GETDEVICE, cast(WPARAM)len, cast(LPARAM)lp); } -UINT MCIWndGetStyles(HWND hwnd) - { return SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0); } -LONG MCIWndChangeStyles(HWND hwnd, UINT mask, LONG value) - { return SendMessage(hwnd, MCIWNDM_CHANGESTYLES, cast(WPARAM)mask, cast(LPARAM)value); } -LONG MCIWndOpenInterface(HWND hwnd, LPUNKNOWN pUnk) - { return SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast(LPARAM)cast(void*)pUnk); } -LONG MCIWndSetOwner(HWND hwnd, HWND hwndP) - { return SendMessage(hwnd, MCIWNDM_SETOWNER, cast(WPARAM)hwndP, 0); } - -enum { - MCIWNDM_GETDEVICEID = WM_USER + 100, - MCIWNDM_SENDSTRINGA = WM_USER + 101, - MCIWNDM_GETPOSITIONA = WM_USER + 102, - MCIWNDM_GETSTART = WM_USER + 103, - MCIWNDM_GETLENGTH = WM_USER + 104, - MCIWNDM_GETEND = WM_USER + 105, - MCIWNDM_GETMODEA = WM_USER + 106, - MCIWNDM_EJECT = WM_USER + 107, - MCIWNDM_SETZOOM = WM_USER + 108, - MCIWNDM_GETZOOM = WM_USER + 109, - MCIWNDM_SETVOLUME = WM_USER + 110, - MCIWNDM_GETVOLUME = WM_USER + 111, - MCIWNDM_SETSPEED = WM_USER + 112, - MCIWNDM_GETSPEED = WM_USER + 113, - MCIWNDM_SETREPEAT = WM_USER + 114, - MCIWNDM_GETREPEAT = WM_USER + 115, - MCIWNDM_REALIZE = WM_USER + 118, - MCIWNDM_SETTIMEFORMATA = WM_USER + 119, - MCIWNDM_GETTIMEFORMATA = WM_USER + 120, - MCIWNDM_VALIDATEMEDIA = WM_USER + 121, - MCIWNDM_PLAYFROM = WM_USER + 122, - MCIWNDM_PLAYTO = WM_USER + 123, - MCIWNDM_GETFILENAMEA = WM_USER + 124, - MCIWNDM_GETDEVICEA = WM_USER + 125, - MCIWNDM_GETPALETTE = WM_USER + 126, - MCIWNDM_SETPALETTE = WM_USER + 127, - MCIWNDM_GETERRORA = WM_USER + 128, - MCIWNDM_SETTIMERS = WM_USER + 129, - MCIWNDM_SETACTIVETIMER = WM_USER + 130, - MCIWNDM_SETINACTIVETIMER = WM_USER + 131, - MCIWNDM_GETACTIVETIMER = WM_USER + 132, - MCIWNDM_GETINACTIVETIMER = WM_USER + 133, - MCIWNDM_NEWA = WM_USER + 134, - MCIWNDM_CHANGESTYLES = WM_USER + 135, - MCIWNDM_GETSTYLES = WM_USER + 136, - MCIWNDM_GETALIAS = WM_USER + 137, - MCIWNDM_RETURNSTRINGA = WM_USER + 138, - MCIWNDM_PLAYREVERSE = WM_USER + 139, - MCIWNDM_GET_SOURCE = WM_USER + 140, - MCIWNDM_PUT_SOURCE = WM_USER + 141, - MCIWNDM_GET_DEST = WM_USER + 142, - MCIWNDM_PUT_DEST = WM_USER + 143, - MCIWNDM_CAN_PLAY = WM_USER + 144, - MCIWNDM_CAN_WINDOW = WM_USER + 145, - MCIWNDM_CAN_RECORD = WM_USER + 146, - MCIWNDM_CAN_SAVE = WM_USER + 147, - MCIWNDM_CAN_EJECT = WM_USER + 148, - MCIWNDM_CAN_CONFIG = WM_USER + 149, - MCIWNDM_PALETTEKICK = WM_USER + 150, - MCIWNDM_OPENINTERFACE = WM_USER + 151, - MCIWNDM_SETOWNER = WM_USER + 152, - MCIWNDM_OPENA = WM_USER + 153, - MCIWNDM_SENDSTRINGW = WM_USER + 201, - MCIWNDM_GETPOSITIONW = WM_USER + 202, - MCIWNDM_GETMODEW = WM_USER + 206, - MCIWNDM_SETTIMEFORMATW = WM_USER + 219, - MCIWNDM_GETTIMEFORMATW = WM_USER + 220, - MCIWNDM_GETFILENAMEW = WM_USER + 224, - MCIWNDM_GETDEVICEW = WM_USER + 225, - MCIWNDM_GETERRORW = WM_USER + 228, - MCIWNDM_NEWW = WM_USER + 234, - MCIWNDM_RETURNSTRINGW = WM_USER + 238, - MCIWNDM_OPENW = WM_USER + 252, -} - -version(Unicode) { - alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; - alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; - alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; - alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; - alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; - alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; - alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; - alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; - alias MCIWNDM_NEWW MCIWNDM_NEW; - alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; - alias MCIWNDM_OPENW MCIWNDM_OPEN; -} else { // Unicode - alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; - alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; - alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; - alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; - alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; - alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; - alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; - alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; - alias MCIWNDM_NEWA MCIWNDM_NEW; - alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; - alias MCIWNDM_OPENA MCIWNDM_OPEN; -} - -enum { - MCIWNDM_NOTIFYMODE = WM_USER + 200, - MCIWNDM_NOTIFYPOS = WM_USER + 201, - MCIWNDM_NOTIFYSIZE = WM_USER + 202, - MCIWNDM_NOTIFYMEDIA = WM_USER + 203, - MCIWNDM_NOTIFYERROR = WM_USER + 205, -} - -const MCIWND_START = -1; -const MCIWND_END = -2; - -enum { - MCI_CLOSE = 0x0804, - MCI_PLAY = 0x0806, - MCI_SEEK = 0x0807, - MCI_STOP = 0x0808, - MCI_PAUSE = 0x0809, - MCI_STEP = 0x080E, - MCI_RECORD = 0x080F, - MCI_SAVE = 0x0813, - MCI_CUT = 0x0851, - MCI_COPY = 0x0852, - MCI_PASTE = 0x0853, - MCI_RESUME = 0x0855, - MCI_DELETE = 0x0856, -} - -enum { - MCI_MODE_NOT_READY = 524, - MCI_MODE_STOP, - MCI_MODE_PLAY, - MCI_MODE_RECORD, - MCI_MODE_SEEK, - MCI_MODE_PAUSE, - MCI_MODE_OPEN, -} - -alias HANDLE HVIDEO; -alias HVIDEO* LPHVIDEO; - -// Error Return Values - -enum { - DV_ERR_OK = 0, - DV_ERR_BASE = 1, - DV_ERR_NONSPECIFIC = DV_ERR_BASE, - DV_ERR_BADFORMAT = DV_ERR_BASE + 1, - DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, - DV_ERR_UNPREPARED = DV_ERR_BASE + 3, - DV_ERR_SYNC = DV_ERR_BASE + 4, - DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, - DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, - DV_ERR_BADINSTALL = DV_ERR_BASE + 7, - DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, - DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, - DV_ERR_PARAM1 = DV_ERR_BASE + 10, - DV_ERR_PARAM2 = DV_ERR_BASE + 11, - DV_ERR_CONFIG1 = DV_ERR_BASE + 12, - DV_ERR_CONFIG2 = DV_ERR_BASE + 13, - DV_ERR_FLAGS = DV_ERR_BASE + 14, - DV_ERR_13 = DV_ERR_BASE + 15, - DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, - DV_ERR_NOMEM = DV_ERR_BASE + 17, - DV_ERR_ALLOCATED = DV_ERR_BASE + 18, - DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, - DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, - DV_ERR_BADERRNUM = DV_ERR_BASE + 21, - DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, - DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, - DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, - DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, - DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, - DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, - DV_ERR_LASTERROR = DV_ERR_BASE + 27, - DV_ERR_USER_MSG = DV_ERR_BASE + 1000, -} - -// Callback Messages - -enum { - MM_DRVM_OPEN = 0x3D0, - MM_DRVM_CLOSE, - MM_DRVM_DATA, - MM_DRVM_ERROR, -} - -enum { - DV_VM_OPEN = MM_DRVM_OPEN, - DV_VM_CLOSE = MM_DRVM_CLOSE, - DV_VM_DATA = MM_DRVM_DATA, - DV_VM_ERROR = MM_DRVM_ERROR, -} - -/** - * Structures - */ - -struct VIDEOHDR { - LPBYTE lpData; - DWORD dwBufferLength; - DWORD dwBytesUsed; - DWORD dwTimeCaptured; - DWORD_PTR dwUser; - DWORD dwFlags; - DWORD_PTR dwReserved[4]; -} -alias VIDEOHDR* PVIDEOHDR, LPVIDEOHDR; - -enum { - VHDR_DONE = 0x00000001, - VHDR_PREPARED = 0x00000002, - VHDR_INQUEUE = 0x00000004, - VHDR_KEYFRAME = 0x00000008, - VHDR_VALID = 0x0000000F, -} - -struct CHANNEL_CAPS { - DWORD dwFlags; - DWORD dwSrcRectXMod; - DWORD dwSrcRectYMod; - DWORD dwSrcRectWidthMod; - DWORD dwSrcRectHeightMod; - DWORD dwDstRectXMod; - DWORD dwDstRectYMod; - DWORD dwDstRectWidthMod; - DWORD dwDstRectHeightMod; -} -alias CHANNEL_CAPS* PCHANNEL_CAPS, LPCHANNEL_CAPS; - -enum { - VCAPS_OVERLAY = 0x00000001, - VCAPS_SRC_CAN_CLIP = 0x00000002, - VCAPS_DST_CAN_CLIP = 0x00000004, - VCAPS_CAN_SCALE = 0x00000008, -} - -/** - * API Flags - */ - -enum { - VIDEO_EXTERNALIN = 0x0001, - VIDEO_EXTERNALOUT = 0x0002, - VIDEO_IN = 0x0004, - VIDEO_OUT = 0x0008, - VIDEO_DLG_QUERY = 0x0010, -} - -enum { - VIDEO_CONFIGURE_QUERYSIZE = 0x0001, - VIDEO_CONFIGURE_CURRENT = 0x0010, - VIDEO_CONFIGURE_NOMINAL = 0x0020, - VIDEO_CONFIGURE_MIN = 0x0040, - VIDEO_CONFIGURE_MAX = 0x0080, - VIDEO_CONFIGURE_SET = 0x1000, - VIDEO_CONFIGURE_GET = 0x2000, - VIDEO_CONFIGURE_QUERY = 0x8000, -} - -/** - * CONFIGURE MESSAGES - */ - -enum { - DVM_USER = 0x4000, - DVM_CONFIGURE_START = 0x1000, - DVM_CONFIGURE_END = 0x1FFF, - DVM_PALETTE = DVM_CONFIGURE_START + 1, - DVM_FORMAT = DVM_CONFIGURE_START + 2, - DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, - DVM_SRC_RECT = DVM_CONFIGURE_START + 4, - DVM_DST_RECT = DVM_CONFIGURE_START + 5, -} - -/** - * AVICap window class - */ - -LRESULT AVICapSM(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { - if (IsWindow(hWnd)) { - return SendMessage(hWnd, msg, wParam, lParam); - } - return 0; -} - -enum { - WM_CAP_START = WM_USER, - WM_CAP_UNICODE_START = WM_USER + 100, - - WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, - WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, - WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, - - WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, - WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, -} - -version(Unicode) { - alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; - alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; -} else { // Unicode - alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; - alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; -} - -enum { - WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, - WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, - WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, - WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, - WM_CAP_GET_USER_DATA = WM_CAP_START + 8, - WM_CAP_SET_USER_DATA = WM_CAP_START + 9, - WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, - WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, - WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, - WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, - - WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, - WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, -} - -version(Unicode) { - alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; - alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; -} else { // Unicode - alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; - alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; -} - -enum { - WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, - WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, - WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, - WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, - WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, - - WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, - WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, - WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, - WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, -} - -version(Unicode) { - alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; - alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; - alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; - alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; -} else { // Unicode - alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; - alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; - alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; - alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; -} - -enum { - WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, - WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, - WM_CAP_EDIT_COPY = WM_CAP_START + 30, - WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, - WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, - WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, - WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, - WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, - WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, - WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, - WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, - WM_CAP_SET_PREVIEW = WM_CAP_START + 50, - WM_CAP_SET_OVERLAY = WM_CAP_START + 51, - WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, - WM_CAP_SET_SCALE = WM_CAP_START + 53, - WM_CAP_GET_STATUS = WM_CAP_START + 54, - WM_CAP_SET_SCROLL = WM_CAP_START + 55, - WM_CAP_GRAB_FRAME = WM_CAP_START + 60, - WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, - WM_CAP_SEQUENCE = WM_CAP_START + 62, - WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, - WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, - WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, - WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, - WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, - - WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, - WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, -} - -version(Unicode) { - alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; - alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; -} else { // Unicode - alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; - alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; -} - -enum { - WM_CAP_STOP = WM_CAP_START + 68, - WM_CAP_ABORT = WM_CAP_START + 69, - WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, - WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, - WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, - WM_CAP_PAL_OPENA = WM_CAP_START + 80, - WM_CAP_PAL_SAVEA = WM_CAP_START + 81, - - WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, - WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, -} - -version(Unicode) { - alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; - alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; -} else { // Unicode - alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; - alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; -} - -enum { - WM_CAP_PAL_PASTE = WM_CAP_START + 82, - WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, - WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, - WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, - WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, - WM_CAP_END = WM_CAP_UNICODE_END, -} - -/** - * message wrapper - */ - -BOOL capSetCallbackOnError(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_ERROR, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnStatus(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_STATUS, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnYield(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_YIELD, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnFrame(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_FRAME, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnVideoStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnWaveStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, cast(LPARAM)fpProc); } -BOOL capSetCallbackOnCapControl(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, cast(LPARAM)fpProc); } - -BOOL capSetUserData(HWND hWnd, LPARAM lUser) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_USER_DATA, 0, lUser); } -BOOL capGetUserData(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_USER_DATA, 0, 0); } - -BOOL capDriverConnect(HWND hWnd, WPARAM i) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_CONNECT, i, 0); } -BOOL capDriverDisconnect(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); } -BOOL capDriverGetName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_NAME, wSize, cast(LPARAM)szName); } -BOOL capDriverGetVersion(HWND hWnd, LPTSTR szVer, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_VERSION, wSize, cast(LPARAM)szVer); } -BOOL capDriverGetCaps(HWND hWnd, LPCAPDRIVERCAPS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_CAPS, wSize, cast(LPARAM)s); } - -BOOL capFileSetCaptureFile(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, cast(LPARAM)szName); } -BOOL capFileGetCaptureFile(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, cast(LPARAM)szName); } -BOOL capFileAlloc(HWND hWnd, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_ALLOCATE, wSize, 0); } -BOOL capFileSaveAs(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEAS, 0, cast(LPARAM)szName); } -BOOL capFileSetInfoChunk(HWND hWnd, LPCAPINFOCHUNK lpInfoChunk) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_INFOCHUNK, 0, cast(LPARAM)lpInfoChunk); } -BOOL capFileSaveDIB(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEDIB, 0, cast(LPARAM)szName); } - -BOOL capEditCopy(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_EDIT_COPY, 0, 0); } - -BOOL capSetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_AUDIOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetAudioFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, 0, 0); } - -BOOL capDlgVideoFormat(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0); } -BOOL capDlgVideoSource(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0); } -BOOL capDlgVideoDisplay(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0); } -BOOL capDlgVideoCompression(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); } - -DWORD capGetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, wSize, cast(LPARAM)s); } -DWORD capGetVideoFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, 0, 0); } -BOOL capSetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_VIDEOFORMAT, wSize, cast(LPARAM)s); } - -BOOL capPreview(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEW, cast(WPARAM)f, 0); } -BOOL capPreviewRate(HWND hWnd, WPARAM wMS) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEWRATE, wMS, 0); } -BOOL capOverlay(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_OVERLAY, cast(WPARAM)f, 0); } -BOOL capPreviewScale(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCALE, cast(WPARAM)f, 0); } -BOOL capGetStatus(HWND hWnd, LPCAPSTATUS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_STATUS, wSize, cast(LPARAM)s); } -BOOL capSetScrollPos(HWND hWnd, LPPOINT lpP) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCROLL, 0, cast(LPARAM)lpP); } - -BOOL capGrabFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME, 0, 0); } -BOOL capGrabFrameNoStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0); } - -BOOL capCaptureSequence(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE, 0, 0); } -BOOL capCaptureSequenceNoFile(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE_NOFILE, 0, 0); } -BOOL capCaptureStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_STOP, 0, 0); } -BOOL capCaptureAbort(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_ABORT, 0, 0); } - -BOOL capCaptureSingleFrameOpen(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0); } -BOOL capCaptureSingleFrameClose(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0); } -BOOL capCaptureSingleFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME, 0, 0); } - -BOOL capCaptureGetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } -BOOL capCaptureSetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } - -BOOL capSetMCIDeviceName(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_MCI_DEVICE, 0, cast(LPARAM)szName); } -BOOL capGetMCIDeviceName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_MCI_DEVICE, wSize, cast(LPARAM)szName); } - -BOOL capPaletteOpen(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_OPEN, 0, cast(LPARAM)szName); } -BOOL capPaletteSave(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_SAVE, 0, cast(LPARAM)szName); } -BOOL capPalettePaste(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_PASTE, 0, 0); } -BOOL capPaletteAuto(HWND hWnd, WPARAM iFrames, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors); } -BOOL capPaletteManual(HWND hWnd, WPARAM fGrab, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors); } - -/** - * structs - */ - -struct CAPDRIVERCAPS { - UINT wDeviceIndex; - BOOL fHasOverlay; - BOOL fHasDlgVideoSource; - BOOL fHasDlgVideoFormat; - BOOL fHasDlgVideoDisplay; - BOOL fCaptureInitialized; - BOOL fDriverSuppliesPalettes; - HANDLE hVideoIn; - HANDLE hVideoOut; - HANDLE hVideoExtIn; - HANDLE hVideoExtOut; -} -alias CAPDRIVERCAPS* PCAPDRIVERCAPS, LPCAPDRIVERCAPS; - -struct CAPSTATUS { - UINT uiImageWidth; - UINT uiImageHeight; - BOOL fLiveWindow; - BOOL fOverlayWindow; - BOOL fScale; - POINT ptScroll; - BOOL fUsingDefaultPalette; - BOOL fAudioHardware; - BOOL fCapFileExists; - DWORD dwCurrentVideoFrame; - DWORD dwCurrentVideoFramesDropped; - DWORD dwCurrentWaveSamples; - DWORD dwCurrentTimeElapsedMS; - HPALETTE hPalCurrent; - BOOL fCapturingNow; - DWORD dwReturn; - UINT wNumVideoAllocated; - UINT wNumAudioAllocated; -} -alias CAPSTATUS* PCAPSTATUS, LPCAPSTATUS; - -struct CAPTUREPARMS { - DWORD dwRequestMicroSecPerFrame; - BOOL fMakeUserHitOKToCapture; - UINT wPercentDropForError; - BOOL fYield; - DWORD dwIndexSize; - UINT wChunkGranularity; - BOOL fUsingDOSMemory; - UINT wNumVideoRequested; - BOOL fCaptureAudio; - UINT wNumAudioRequested; - UINT vKeyAbort; - BOOL fAbortLeftMouse; - BOOL fAbortRightMouse; - BOOL fLimitEnabled; - UINT wTimeLimit; - BOOL fMCIControl; - BOOL fStepMCIDevice; - DWORD dwMCIStartTime; - DWORD dwMCIStopTime; - BOOL fStepCaptureAt2x; - UINT wStepCaptureAverageFrames; - DWORD dwAudioBufferSize; - BOOL fDisableWriteCache; - UINT AVStreamMaster; -} -alias CAPTUREPARMS* PCAPTUREPARMS, LPCAPTUREPARMS; - -const AVSTREAMMASTER_AUDIO = 0; -const AVSTREAMMASTER_NONE = 1; - -struct CAPINFOCHUNK { - FOURCC fccInfoID; - LPVOID lpData; - LONG cbData; -} -alias CAPINFOCHUNK* PCAPINFOCHUNK, LPCAPINFOCHUNK; - -// Callback Definitions - -extern (Windows) { - alias LRESULT function(HWND hWnd) CAPYIELDCALLBACK; - alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPSTATUSCALLBACKW; - alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPERRORCALLBACKW; - alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPSTATUSCALLBACKA; - alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPERRORCALLBACKA; -} - -version(Unicode) { - alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; - alias CAPERRORCALLBACKW CAPERRORCALLBACK; -} else { // Unicode - alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; - alias CAPERRORCALLBACKA CAPERRORCALLBACK; -} - -extern (Windows) { - alias LRESULT function(HWND hWnd, LPVIDEOHDR lpVHdr) CAPVIDEOCALLBACK; - alias LRESULT function(HWND hWnd, LPWAVEHDR lpWHdr) CAPWAVECALLBACK; - alias LRESULT function(HWND hWnd, int nState) CAPCONTROLCALLBACK; -} - -// CapControlCallback states -const CONTROLCALLBACK_PREROLL = 1; -const CONTROLCALLBACK_CAPTURING = 2; - -extern (Windows) { - HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); - BOOL capGetDriverDescriptionA(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer); - HWND capCreateCaptureWindowW(LPCWSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); - BOOL capGetDriverDescriptionW(UINT wDriverIndex, LPWSTR lpszName, int cbName, LPWSTR lpszVer, int cbVer); -} - -version(Unicode) { - alias capCreateCaptureWindowW capCreateCaptureWindow; - alias capGetDriverDescriptionW capGetDriverDescription; -} else { // Unicode - alias capCreateCaptureWindowA capCreateCaptureWindow; - alias capGetDriverDescriptionA capGetDriverDescription; -} - -// New Information chunk IDs -const infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); -const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); - -// status and error callbacks -enum { - IDS_CAP_BEGIN = 300, - IDS_CAP_END = 301, - - IDS_CAP_INFO = 401, - IDS_CAP_OUTOFMEM = 402, - IDS_CAP_FILEEXISTS = 403, - IDS_CAP_ERRORPALOPEN = 404, - IDS_CAP_ERRORPALSAVE = 405, - IDS_CAP_ERRORDIBSAVE = 406, - IDS_CAP_DEFAVIEXT = 407, - IDS_CAP_DEFPALEXT = 408, - IDS_CAP_CANTOPEN = 409, - IDS_CAP_SEQ_MSGSTART = 410, - IDS_CAP_SEQ_MSGSTOP = 411, - - IDS_CAP_VIDEDITERR = 412, - IDS_CAP_READONLYFILE = 413, - IDS_CAP_WRITEERROR = 414, - IDS_CAP_NODISKSPACE = 415, - IDS_CAP_SETFILESIZE = 416, - IDS_CAP_SAVEASPERCENT = 417, - - IDS_CAP_DRIVER_ERROR = 418, - - IDS_CAP_WAVE_OPEN_ERROR = 419, - IDS_CAP_WAVE_ALLOC_ERROR = 420, - IDS_CAP_WAVE_PREPARE_ERROR = 421, - IDS_CAP_WAVE_ADD_ERROR = 422, - IDS_CAP_WAVE_SIZE_ERROR = 423, - - IDS_CAP_VIDEO_OPEN_ERROR = 424, - IDS_CAP_VIDEO_ALLOC_ERROR = 425, - IDS_CAP_VIDEO_PREPARE_ERROR = 426, - IDS_CAP_VIDEO_ADD_ERROR = 427, - IDS_CAP_VIDEO_SIZE_ERROR = 428, - - IDS_CAP_FILE_OPEN_ERROR = 429, - IDS_CAP_FILE_WRITE_ERROR = 430, - IDS_CAP_RECORDING_ERROR = 431, - IDS_CAP_RECORDING_ERROR2 = 432, - IDS_CAP_AVI_INIT_ERROR = 433, - IDS_CAP_NO_FRAME_CAP_ERROR = 434, - IDS_CAP_NO_PALETTE_WARN = 435, - IDS_CAP_MCI_CONTROL_ERROR = 436, - IDS_CAP_MCI_CANT_STEP_ERROR = 437, - IDS_CAP_NO_AUDIO_CAP_ERROR = 438, - IDS_CAP_AVI_DRAWDIB_ERROR = 439, - IDS_CAP_COMPRESSOR_ERROR = 440, - IDS_CAP_AUDIO_DROP_ERROR = 441, - IDS_CAP_AUDIO_DROP_COMPERROR = 442, - - IDS_CAP_STAT_LIVE_MODE = 500, - IDS_CAP_STAT_OVERLAY_MODE = 501, - IDS_CAP_STAT_CAP_INIT = 502, - IDS_CAP_STAT_CAP_FINI = 503, - IDS_CAP_STAT_PALETTE_BUILD = 504, - IDS_CAP_STAT_OPTPAL_BUILD = 505, - IDS_CAP_STAT_I_FRAMES = 506, - IDS_CAP_STAT_L_FRAMES = 507, - IDS_CAP_STAT_CAP_L_FRAMES = 508, - IDS_CAP_STAT_CAP_AUDIO = 509, - IDS_CAP_STAT_VIDEOCURRENT = 510, - IDS_CAP_STAT_VIDEOAUDIO = 511, - IDS_CAP_STAT_VIDEOONLY = 512, - IDS_CAP_STAT_FRAMESDROPPED = 513, -} - -/** - * FilePreview dialog. - */ - -extern (Windows) { - BOOL GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn); - BOOL GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn); - BOOL GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn); - BOOL GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn); -} - -version(Unicode) { - alias GetOpenFileNamePreviewW GetOpenFileNamePreview; - alias GetSaveFileNamePreviewW GetSaveFileNamePreview; -} else { // Unicode - alias GetOpenFileNamePreviewA GetOpenFileNamePreview; - alias GetSaveFileNamePreviewA GetSaveFileNamePreview; +/***********************************************************************\ +* vfw.d * +* * +* Windows API header module * +* written in the D programming language * +* * +* Placed into public domain * +\***********************************************************************/ + +module win32.vfw; +pragma(lib, "vfw32"); + +private import + win32.commdlg, + win32.wingdi, + win32.mmsystem, + win32.unknwn, + win32.w32api, + win32.windef, + win32.winuser; + +extern(Windows) { + DWORD VideoForWindowsVersion(); + LONG InitVFW(); + LONG TermVFW(); +} + +DWORD MKFOURCC(char ch0, char ch1, char ch2, char ch3) { + return (cast(DWORD)ch0) | ((cast(DWORD)ch1) << 8) | ((cast(DWORD)ch2) << 16) | ((cast(DWORD)ch3) << 24); +} + +/** + * COMPMAN - Installable Compression Manager. + */ + +const ICVERSION = 0x0104; + +alias TypeDef!(HANDLE) HIC; + +const BI_1632 = 0x32333631; + +template aviTWOCC(char c0, char c1) { + const WORD aviTWOCC = c0 | (c1 << 8); +} + +const ICTYPE_VIDEO = mmioFOURCC!('v', 'i', 'd', 'c'); +const ICTYPE_AUDIO = mmioFOURCC!('a', 'u', 'd', 'c'); + +enum { + ICERR_OK = 0, + ICERR_DONTDRAW = 1, + ICERR_NEWPALETTE = 2, + ICERR_GOTOKEYFRAME = 3, + ICERR_STOPDRAWING = 4, +} + +const ICERR_UNSUPPORTED = -1; +const ICERR_BADFORMAT = -2; +const ICERR_MEMORY = -3; +const ICERR_INTERNAL = -4; +const ICERR_BADFLAGS = -5; +const ICERR_BADPARAM = -6; +const ICERR_BADSIZE = -7; +const ICERR_BADHANDLE = -8; +const ICERR_CANTUPDATE = -9; +const ICERR_ABORT = -10; +const ICERR_ERROR = -100; +const ICERR_BADBITDEPTH = -200; +const ICERR_BADIMAGESIZE = -201; + +const ICERR_CUSTOM = -400; + +enum { + ICMODE_COMPRESS = 1, + ICMODE_DECOMPRESS, + ICMODE_FASTDECOMPRESS, + ICMODE_QUERY, + ICMODE_FASTCOMPRESS, + ICMODE_DRAW = 8, +} + +const ICMODE_INTERNALF_FUNCTION32 = 0x8000; +const ICMODE_INTERNALF_MASK = 0x8000; + +enum { + AVIIF_LIST = 0x00000001, + AVIIF_TWOCC = 0x00000002, + AVIIF_KEYFRAME = 0x00000010, +} + +const ICQUALITY_LOW = 0; +const ICQUALITY_HIGH = 10000; +const ICQUALITY_DEFAULT = -1; + +enum { + ICM_USER = DRV_USER + 0x0000, + ICM_RESERVED_LOW = DRV_USER + 0x1000, + ICM_RESERVED_HIGH = DRV_USER + 0x2000, + ICM_RESERVED = ICM_RESERVED_LOW, +} + +// messages + +enum { + ICM_GETSTATE = ICM_RESERVED + 0, + ICM_SETSTATE = ICM_RESERVED + 1, + ICM_GETINFO = ICM_RESERVED + 2, + ICM_CONFIGURE = ICM_RESERVED + 10, + ICM_ABOUT = ICM_RESERVED + 11, + ICM_GETERRORTEXT = ICM_RESERVED + 12, + ICM_GETFORMATNAME = ICM_RESERVED + 20, + ICM_ENUMFORMATS = ICM_RESERVED + 21, + ICM_GETDEFAULTQUALITY = ICM_RESERVED + 30, + ICM_GETQUALITY = ICM_RESERVED + 31, + ICM_SETQUALITY = ICM_RESERVED + 32, + ICM_SET = ICM_RESERVED + 40, + ICM_GET = ICM_RESERVED + 41, +} + +const ICM_FRAMERATE = mmioFOURCC!('F','r','m','R'); +const ICM_KEYFRAMERATE = mmioFOURCC!('K','e','y','R'); + +// ICM specific messages. + +enum { + ICM_COMPRESS_GET_FORMAT = ICM_USER + 4, + ICM_COMPRESS_GET_SIZE = ICM_USER + 5, + ICM_COMPRESS_QUERY = ICM_USER + 6, + ICM_COMPRESS_BEGIN = ICM_USER + 7, + ICM_COMPRESS = ICM_USER + 8, + ICM_COMPRESS_END = ICM_USER + 9, + ICM_DECOMPRESS_GET_FORMAT = ICM_USER + 10, + ICM_DECOMPRESS_QUERY = ICM_USER + 11, + ICM_DECOMPRESS_BEGIN = ICM_USER + 12, + ICM_DECOMPRESS = ICM_USER + 13, + ICM_DECOMPRESS_END = ICM_USER + 14, + ICM_DECOMPRESS_SET_PALETTE = ICM_USER + 29, + ICM_DECOMPRESS_GET_PALETTE = ICM_USER + 30, + ICM_DRAW_QUERY = ICM_USER + 31, + ICM_DRAW_BEGIN = ICM_USER + 15, + ICM_DRAW_GET_PALETTE = ICM_USER + 16, + ICM_DRAW_UPDATE = ICM_USER + 17, + ICM_DRAW_START = ICM_USER + 18, + ICM_DRAW_STOP = ICM_USER + 19, + ICM_DRAW_BITS = ICM_USER + 20, + ICM_DRAW_END = ICM_USER + 21, + ICM_DRAW_GETTIME = ICM_USER + 32, + ICM_DRAW = ICM_USER + 33, + ICM_DRAW_WINDOW = ICM_USER + 34, + ICM_DRAW_SETTIME = ICM_USER + 35, + ICM_DRAW_REALIZE = ICM_USER + 36, + ICM_DRAW_FLUSH = ICM_USER + 37, + ICM_DRAW_RENDERBUFFER = ICM_USER + 38, + ICM_DRAW_START_PLAY = ICM_USER + 39, + ICM_DRAW_STOP_PLAY = ICM_USER + 40, + ICM_DRAW_SUGGESTFORMAT = ICM_USER + 50, + ICM_DRAW_CHANGEPALETTE = ICM_USER + 51, + ICM_DRAW_IDLE = ICM_USER + 52, + ICM_GETBUFFERSWANTED = ICM_USER + 41, + ICM_GETDEFAULTKEYFRAMERATE = ICM_USER + 42, + ICM_DECOMPRESSEX_BEGIN = ICM_USER + 60, + ICM_DECOMPRESSEX_QUERY = ICM_USER + 61, + ICM_DECOMPRESSEX = ICM_USER + 62, + ICM_DECOMPRESSEX_END = ICM_USER + 63, + ICM_COMPRESS_FRAMES_INFO = ICM_USER + 70, + ICM_COMPRESS_FRAMES = ICM_USER + 71, + ICM_SET_STATUS_PROC = ICM_USER + 72, +} + +struct ICOPEN { + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwVersion; + DWORD dwFlags; + LRESULT dwError; + LPVOID pV1Reserved; + LPVOID pV2Reserved; + DWORD dnDevNode; +} + +struct ICINFO { + DWORD dwSize; + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwVersion; + DWORD dwVersionICM; + WCHAR[16] szName; + WCHAR[128] szDescription; + WCHAR[128] szDriver; +} + +enum { + VIDCF_QUALITY = 0x0001, + VIDCF_CRUNCH = 0x0002, + VIDCF_TEMPORAL = 0x0004, + VIDCF_COMPRESSFRAMES = 0x0008, + VIDCF_DRAW = 0x0010, + VIDCF_FASTTEMPORALC = 0x0020, + VIDCF_FASTTEMPORALD = 0x0080, +} + +const ICCOMPRESS_KEYFRAME = 0x00000001L; + +struct ICCOMPRESS { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPDWORD lpckid; + LPDWORD lpdwFlags; + LONG lFrameNum; + DWORD dwFrameSize; + DWORD dwQuality; + LPBITMAPINFOHEADER lpbiPrev; + LPVOID lpPrev; +} + +const ICCOMPRESSFRAMES_PADDING = 0x00000001; + +struct ICCOMPRESSFRAMES { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiOutput; + LPARAM lOutput; + LPBITMAPINFOHEADER lpbiInput; + LPARAM lInput; + LONG lStartFrame; + LONG lFrameCount; + LONG lQuality; + LONG lDataRate; + LONG lKeyRate; + DWORD dwRate; + DWORD dwScale; DWORD dwOverheadPerFrame; + DWORD dwReserved2; + + LONG function(LPARAM lInput, LONG lFrame, LPVOID lpBits, LONG len) GetData; + LONG function(LPARAM lOutput, LONG lFrame, LPVOID lpBits, LONG len) PutData; +} + +enum { + ICSTATUS_START = 0, + ICSTATUS_STATUS = 1, + ICSTATUS_END = 2, + ICSTATUS_ERROR = 3, + ICSTATUS_YIELD = 4, +} + +struct ICSETSTATUSPROC { + DWORD dwFlags; + LPARAM lParam; + LONG function(LPARAM lParam, UINT message, LONG l) Status; +} + +enum { + ICDECOMPRESS_NOTKEYFRAME = 0x08000000, + ICDECOMPRESS_NULLFRAME = 0x10000000, + ICDECOMPRESS_PREROLL = 0x20000000, + ICDECOMPRESS_UPDATE = 0x40000000, + ICDECOMPRESS_HURRYUP = 0x80000000, +} + +struct ICDECOMPRESS { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiInput; + LPVOID lpInput; + LPBITMAPINFOHEADER lpbiOutput; + LPVOID lpOutput; + DWORD ckid; +} + +struct ICDECOMPRESSEX { + DWORD dwFlags; + LPBITMAPINFOHEADER lpbiSrc; + LPVOID lpSrc; + LPBITMAPINFOHEADER lpbiDst; + LPVOID lpDst; + int xDst; + int yDst; + int dxDst; + int dyDst; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; +} + +enum { + ICDRAW_QUERY = 0x00000001, + ICDRAW_FULLSCREEN = 0x00000002, + ICDRAW_HDC = 0x00000004, + ICDRAW_ANIMATE = 0x00000008, + ICDRAW_CONTINUE = 0x00000010, + ICDRAW_MEMORYDC = 0x00000020, + ICDRAW_UPDATING = 0x00000040, + ICDRAW_RENDER = 0x00000080, + ICDRAW_BUFFER = 0x00000100, +} + +struct ICDRAWBEGIN { + DWORD dwFlags; + HPALETTE hpal; + HWND hwnd; + HDC hdc; + int xDst; + int yDst; + int dxDst; + int dyDst; + LPBITMAPINFOHEADER lpbi; + int xSrc; + int ySrc; + int dxSrc; + int dySrc; + DWORD dwRate; + DWORD dwScale; +} + +enum { + ICDRAW_NOTKEYFRAME = 0x08000000, + ICDRAW_NULLFRAME = 0x10000000, + ICDRAW_PREROLL = 0x20000000, + ICDRAW_UPDATE = 0x40000000, + ICDRAW_HURRYUP = 0x80000000, +} + +struct ICDRAW { + DWORD dwFlags; + LPVOID lpFormat; + LPVOID lpData; + DWORD cbData; + LONG lTime; +} + +struct ICDRAWSUGGEST { + LPBITMAPINFOHEADER lpbiIn; + LPBITMAPINFOHEADER lpbiSuggest; + int dxSrc; + int dySrc; + int dxDst; + int dyDst; + HIC hicDecompressor; +} + +struct ICPALETTE { + DWORD dwFlags; + int iStart; + int iLen; + LPPALETTEENTRY lppe; +} + + +/** + * ICM function declarations + */ + +extern (Windows) { + BOOL ICInfo(DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo); + BOOL ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags); + BOOL ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags); + LRESULT ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb); + HIC ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode); + HIC ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, FARPROC lpfnHandler); + LRESULT ICClose(HIC hic); + LRESULT ICSendMessage(HIC hic, UINT msg, DWORD_PTR dw1, DWORD_PTR dw2); +} + +enum { + ICINSTALL_FUNCTION = 0x0001, + ICINSTALL_DRIVER = 0x0002, + ICINSTALL_HDRV = 0x0004, + ICINSTALL_UNICODE = 0x8000, + ICINSTALL_DRIVERW = 0x8002, +} + +// query macros + +const ICMF_CONFIGURE_QUERY = 0x00000001; +const ICMF_ABOUT_QUERY = 0x00000001; + +DWORD ICQueryAbout(HIC hic) { + return ICSendMessage(hic, ICM_ABOUT, -1, ICMF_ABOUT_QUERY) == ICERR_OK; +} + +DWORD ICAbout(HIC hic, HWND hwnd) { + return cast(DWORD) ICSendMessage(hic, ICM_ABOUT, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); +} + +DWORD ICQueryConfigure(HIC hic) { + return (ICSendMessage(hic, ICM_CONFIGURE, -1, ICMF_CONFIGURE_QUERY) == ICERR_OK); +} + +DWORD ICConfigure(HIC hic, HWND hwnd) { + return cast(DWORD) ICSendMessage(hic, ICM_CONFIGURE, cast(DWORD_PTR) cast(UINT_PTR) hwnd, 0); +} + +DWORD ICGetState(HIC hic, LPVOID pv, DWORD_PTR cb) { + return cast(DWORD) ICSendMessage(hic, ICM_GETSTATE, cast(DWORD_PTR) pv, cb); +} + +DWORD ICSetState(HIC hic, LPVOID pv, DWORD_PTR cb) { + return cast(DWORD) ICSendMessage(hic, ICM_SETSTATE, cast(DWORD_PTR) pv, cb); +} + +DWORD ICGetStateSize(HIC hic) { + return ICGetState(hic, null, 0); +} + +DWORD dwICValue; + +DWORD ICGetDefaultQuality(HIC hic) { + ICSendMessage(hic, ICM_GETDEFAULTQUALITY, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); + return dwICValue; +} + +DWORD ICGetDefaultKeyFrameRate(HIC hic) { + ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, cast(DWORD_PTR)&dwICValue, DWORD.sizeof); + return dwICValue; +} + +DWORD ICDrawWindow(HIC hic, LPVOID prc) { + return cast(DWORD) ICSendMessage(hic, ICM_DRAW_WINDOW, cast(DWORD_PTR) prc, RECT.sizeof); +} + +extern (Windows) { + DWORD ICCompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiOutput, LPVOID lpData, + LPBITMAPINFOHEADER lpbiInput, LPVOID lpBits, LPDWORD lpckid, LPDWORD lpdwFlags, + LONG lFrameNum, DWORD dwFrameSize, DWORD dwQuality, LPBITMAPINFOHEADER lpbiPrev, LPVOID lpPrev); +} + +LRESULT ICCompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_COMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +DWORD ICCompressGetFormatSize(HIC hic, LPVOID lpbi) { + return cast(DWORD)ICCompressGetFormat(hic, lpbi, null); +} +DWORD ICCompressGetSize(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return cast(DWORD)ICSendMessage(hic, ICM_COMPRESS_GET_SIZE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICCompressEnd(HIC hic) { + return ICSendMessage(hic, ICM_COMPRESS_END, 0, 0); +} + +extern (Windows) { + DWORD ICDecompress(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiFormat, LPVOID lpData, LPBITMAPINFOHEADER lpbi, LPVOID lpBits); +} + +LRESULT ICDecompressBegin(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_BEGIN, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICDecompressQuery(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_QUERY, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LONG ICDecompressGetFormat(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return cast(LONG)ICSendMessage(hic, ICM_DECOMPRESS_GET_FORMAT, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LONG ICDecompressGetFormatSize(HIC hic, LPVOID lpbi) { + return ICDecompressGetFormat(hic, lpbi, null); +} +LRESULT ICDecompressGetPalette(HIC hic, LPVOID lpbiInput, LPVOID lpbiOutput) { + return ICSendMessage(hic, ICM_DECOMPRESS_GET_PALETTE, cast(DWORD_PTR)lpbiInput, cast(DWORD_PTR)lpbiOutput); +} +LRESULT ICDecompressSetPalette(HIC hic, LPVOID lpbiPalette) { + return ICSendMessage(hic, ICM_DECOMPRESS_SET_PALETTE, cast(DWORD_PTR)lpbiPalette, 0); +} +LRESULT ICDecompressEnd(HIC hic) { + return ICSendMessage(hic, ICM_DECOMPRESS_END, 0, 0); +} + +LRESULT ICDecompressEx(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExBegin(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX_BEGIN, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExQuery(HIC hic, DWORD dwFlags, LPBITMAPINFOHEADER lpbiSrc, + LPVOID lpSrc, int xSrc, int ySrc, int dxSrc, int dySrc, LPBITMAPINFOHEADER lpbiDst, + LPVOID lpDst, int xDst, int yDst, int dxDst, int dyDst) { + ICDECOMPRESSEX ic; + + ic.dwFlags = dwFlags; + ic.lpbiSrc = lpbiSrc; + ic.lpSrc = lpSrc; + ic.xSrc = xSrc; + ic.ySrc = ySrc; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.lpbiDst = lpbiDst; + ic.lpDst = lpDst; + ic.xDst = xDst; + ic.yDst = yDst; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + + return ICSendMessage(hic, ICM_DECOMPRESSEX_QUERY, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDecompressExEnd(HIC hic) { + return ICSendMessage(hic, ICM_DECOMPRESSEX_END, 0, 0); +} + +extern (Windows) { + DWORD ICDrawBegin(HIC hic, DWORD dwFlags, HPALETTE hpal, HWND hwnd, HDC hdc, + int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, + int xSrc, int ySrc, int dxSrc, int dySrc, DWORD dwRate, DWORD dwScale); +} + +extern (Windows) { + DWORD ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWORD cbData, LONG lTime); +} + +LRESULT ICDrawSuggestFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, + int dxSrc, int dySrc, int dxDst, int dyDst, HIC hicDecomp) { + ICDRAWSUGGEST ic; + + ic.lpbiIn = lpbiIn; + ic.lpbiSuggest = lpbiOut; + ic.dxSrc = dxSrc; + ic.dySrc = dySrc; + ic.dxDst = dxDst; + ic.dyDst = dyDst; + ic.hicDecompressor = hicDecomp; + + return ICSendMessage(hic, ICM_DRAW_SUGGESTFORMAT, cast(DWORD_PTR)&ic, ic.sizeof); +} + +LRESULT ICDrawQuery(HIC hic, LPVOID lpbiInput) { + return ICSendMessage(hic, ICM_DRAW_QUERY, cast(DWORD_PTR)lpbiInput, 0L); +} +LRESULT ICDrawChangePalette(HIC hic, LPVOID lpbiInput) { + return ICSendMessage(hic, ICM_DRAW_CHANGEPALETTE, cast(DWORD_PTR)lpbiInput, 0L); +} +LRESULT ICGetBuffersWanted(HIC hic, LPVOID lpdwBuffers) { + return ICSendMessage(hic, ICM_GETBUFFERSWANTED, cast(DWORD_PTR)lpdwBuffers, 0); +} +LRESULT ICDrawEnd(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_END, 0, 0); +} +LRESULT ICDrawStart(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_START, 0, 0); +} +LRESULT ICDrawStartPlay(HIC hic, DWORD lFrom, DWORD lTo) { + return ICSendMessage(hic, ICM_DRAW_START_PLAY, cast(DWORD_PTR)lFrom, cast(DWORD_PTR)lTo); +} +LRESULT ICDrawStop(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_STOP, 0, 0); +} +LRESULT ICDrawStopPlay(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_STOP_PLAY, 0, 0); +} +LRESULT ICDrawGetTime(HIC hic, LPVOID lplTime) { + return ICSendMessage(hic, ICM_DRAW_GETTIME, cast(DWORD_PTR)lplTime, 0); +} +LRESULT ICDrawSetTime(HIC hic, DWORD lTime) { + return ICSendMessage(hic, ICM_DRAW_SETTIME, cast(DWORD_PTR)lTime, 0); +} +LRESULT ICDrawRealize(HIC hic, HDC hdc, BOOL fBackground) { + return ICSendMessage(hic, ICM_DRAW_REALIZE, cast(DWORD_PTR)hdc, cast(DWORD_PTR)fBackground); +} +LRESULT ICDrawFlush(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_FLUSH, 0, 0); +} +LRESULT ICDrawRenderBuffer(HIC hic) { + return ICSendMessage(hic, ICM_DRAW_RENDERBUFFER, 0, 0); +} + +LRESULT ICSetStatusProc(HIC hic, DWORD dwFlags, LRESULT lParam, LONG function(LPARAM, UINT, LONG) fpfnStatus) { + ICSETSTATUSPROC ic; + + ic.dwFlags = dwFlags; + ic.lParam = lParam; + ic.Status = fpfnStatus; + + return ICSendMessage(hic, ICM_SET_STATUS_PROC, cast(DWORD_PTR)&ic, ic.sizeof); +} + +HIC ICDecompressOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut) { + return ICLocate(fccType, fccHandler, lpbiIn, lpbiOut, ICMODE_DECOMPRESS); +} + +HIC ICDrawOpen(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn) { + return ICLocate(fccType, fccHandler, lpbiIn, null, ICMODE_DRAW); +} + +extern (Windows) { + HIC ICLocate(DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, WORD wFlags); + HIC ICGetDisplayFormat(HIC hic, LPBITMAPINFOHEADER lpbiIn, LPBITMAPINFOHEADER lpbiOut, int BitDepth, int dx, int dy); + HANDLE ICImageCompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut, LONG lQuality, LONG* plSize); + HANDLE ICImageDecompress(HIC hic, UINT uiFlags, LPBITMAPINFO lpbiIn, LPVOID lpBits, LPBITMAPINFO lpbiOut); +} + +struct COMPVARS { + LONG cbSize = this.sizeof; + DWORD dwFlags; + HIC hic; + DWORD fccType; + DWORD fccHandler; + LPBITMAPINFO lpbiIn; + LPBITMAPINFO lpbiOut; + LPVOID lpBitsOut; + LPVOID lpBitsPrev; + LONG lFrame; + LONG lKey; + LONG lDataRate; + LONG lQ; + LONG lKeyCount; + LPVOID lpState; + LONG cbState; +} +alias COMPVARS* PCOMPVARS; + +const ICMF_COMPVARS_VALID = 0x00000001; + +extern (Windows) { + BOOL ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle); +} + +enum { + ICMF_CHOOSE_KEYFRAME = 0x0001, + ICMF_CHOOSE_DATARATE = 0x0002, + ICMF_CHOOSE_PREVIEW = 0x0004, + ICMF_CHOOSE_ALLCOMPRESSORS = 0x0008, +} + +extern (Windows) { + BOOL ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn); + void ICSeqCompressFrameEnd(PCOMPVARS pc); + LPVOID ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL* pfKey, LONG* plSize); + void ICCompressorFree(PCOMPVARS pc); +} + +mixin DECLARE_HANDLE!("HDRAWDIB"); + +enum { + DDF_0001 = 0x0001, + DDF_UPDATE = 0x0002, + DDF_SAME_HDC = 0x0004, + DDF_SAME_DRAW = 0x0008, + DDF_DONTDRAW = 0x0010, + DDF_ANIMATE = 0x0020, + DDF_BUFFER = 0x0040, + DDF_JUSTDRAWIT = 0x0080, + DDF_FULLSCREEN = 0x0100, + DDF_BACKGROUNDPAL = 0x0200, + DDF_NOTKEYFRAME = 0x0400, + DDF_HURRYUP = 0x0800, + DDF_HALFTONE = 0x1000, + DDF_2000 = 0x2000, + DDF_PREROLL = DDF_DONTDRAW, + DDF_SAME_DIB = DDF_SAME_DRAW, + DDF_SAME_SIZE = DDF_SAME_DRAW, +} + +extern (Windows) { + BOOL DrawDibInit(); + HDRAWDIB DrawDibOpen(); + BOOL DrawDibClose(HDRAWDIB hdd); + LPVOID DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags); + UINT DrawDibError(HDRAWDIB hdd); + HPALETTE DrawDibGetPalette(HDRAWDIB hdd); + BOOL DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal); + BOOL DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe); + UINT DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground); + BOOL DrawDibStart(HDRAWDIB hdd, DWORD rate); + BOOL DrawDibStop(HDRAWDIB hdd); + BOOL DrawDibBegin(HDRAWDIB hdd, HDC hdc, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, int dxSrc, int dySrc, UINT wFlags); + BOOL DrawDibDraw(HDRAWDIB hdd, HDC hdc, int xDst, int yDst, int dxDst, int dyDst, LPBITMAPINFOHEADER lpbi, + LPVOID lpBits, int xSrc, int ySrc, int dxSrc, int dySrc, UINT wFlags); +} + +BOOL DrawDibUpdate(HDRAWDIB hdd, HDC hdc, int x, int y) { + return DrawDibDraw(hdd, hdc, x, y, 0, 0, null, null, 0, 0, 0, 0, DDF_UPDATE); +} + +extern (Windows) { + BOOL DrawDibEnd(HDRAWDIB hdd); +} + +struct DRAWDIBTIME { + LONG timeCount; + LONG timeDraw; + LONG timeDecompress; + LONG timeDither; + LONG timeStretch; + LONG timeBlt; + LONG timeSetDIBits; +} +alias DRAWDIBTIME* LPDRAWDIBTIME; + +extern (Windows) { + BOOL DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime); +} + +enum { + PD_CAN_DRAW_DIB = 0x0001, + PD_CAN_STRETCHDIB = 0x0002, + PD_STRETCHDIB_1_1_OK = 0x0004, + PD_STRETCHDIB_1_2_OK = 0x0008, + PD_STRETCHDIB_1_N_OK = 0x0010, +} + +extern (Windows) { + LRESULT DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi); + void StretchDIB(LPBITMAPINFOHEADER biDst, LPVOID lpDst, int DstX, int DstY, + int DstXE, int DstYE, LPBITMAPINFOHEADER biSrc, LPVOID lpSrc, + int SrcX, int SrcY, int SrcXE, int SrcYE); +} + +alias DWORD FOURCC; + +alias WORD TWOCC; + +const formtypeAVI = mmioFOURCC!('A', 'V', 'I', ' '); +const listtypeAVIHEADER = mmioFOURCC!('h', 'd', 'r', 'l'); +const ckidAVIMAINHDR = mmioFOURCC!('a', 'v', 'i', 'h'); +const listtypeSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'l'); +const ckidSTREAMHEADER = mmioFOURCC!('s', 't', 'r', 'h'); +const ckidSTREAMFORMAT = mmioFOURCC!('s', 't', 'r', 'f'); +const ckidSTREAMHANDLERDATA = mmioFOURCC!('s', 't', 'r', 'd'); +const ckidSTREAMNAME = mmioFOURCC!('s', 't', 'r', 'n'); +const listtypeAVIMOVIE = mmioFOURCC!('m', 'o', 'v', 'i'); +const listtypeAVIRECORD = mmioFOURCC!('r', 'e', 'c', ' '); +const ckidAVINEWINDEX = mmioFOURCC!('i', 'd', 'x', '1'); +const streamtypeVIDEO = mmioFOURCC!('v', 'i', 'd', 's'); +const streamtypeAUDIO = mmioFOURCC!('a', 'u', 'd', 's'); +const streamtypeMIDI = mmioFOURCC!('m', 'i', 'd', 's'); +const streamtypeTEXT = mmioFOURCC!('t', 'x', 't', 's'); + +const cktypeDIBbits = aviTWOCC!('d', 'b'); +const cktypeDIBcompressed = aviTWOCC!('d', 'c'); +const cktypePALchange = aviTWOCC!('p', 'c'); +const cktypeWAVEbytes = aviTWOCC!('w', 'b'); + +const ckidAVIPADDING = mmioFOURCC!('J', 'U', 'N', 'K'); + +DWORD FromHex(char n) { + return (n >= 'A') ? n + 10 - 'A' : n - '0'; +} + +WORD StreamFromFOURCC(DWORD fcc) { + return cast(WORD)((FromHex(LOBYTE(LOWORD(fcc))) << 4) + (FromHex(HIBYTE(LOWORD(fcc))))); +} + +WORD TWOCCFromFOURCC(DWORD fcc) { + return HIWORD(fcc); +} + +BYTE ToHex(DWORD n) { + return cast(BYTE)((n > 9) ? n - 10 + 'A' : n + '0'); +} + +DWORD MAKEAVICKID(WORD tcc, WORD stream) { + return MAKELONG(cast(WORD)((ToHex(stream & 0x0f) << 8) | (ToHex((stream & 0xf0) >> 4))), tcc); +} + +enum { + AVIF_HASINDEX = 0x00000010, + AVIF_MUSTUSEINDEX = 0x00000020, + AVIF_ISINTERLEAVED = 0x00000100, + AVIF_WASCAPTUREFILE = 0x00010000, + AVIF_COPYRIGHTED = 0x00020000, +} + +const AVI_HEADERSIZE = 2048; + +struct MainAVIHeader { + DWORD dwMicroSecPerFrame; + DWORD dwMaxBytesPerSec; + DWORD dwPaddingGranularity; + DWORD dwFlags; + DWORD dwTotalFrames; + DWORD dwInitialFrames; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD[4] dwReserved; +} + +const AVISF_DISABLED = 0x00000001; + +const AVISF_VIDEO_PALCHANGES = 0x00010000; + +struct AVIStreamHeader { + FOURCC fccType; + FOURCC fccHandler; + DWORD dwFlags; + WORD wPriority; + WORD wLanguage; + DWORD dwInitialFrames; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; +} + +enum { + AVIIF_FIRSTPART = 0x00000020L, + AVIIF_LASTPART = 0x00000040L, + AVIIF_MIDPART = (AVIIF_LASTPART|AVIIF_FIRSTPART), + AVIIF_NOTIME = 0x00000100L, + AVIIF_COMPUSE = 0x0FFF0000L, +} + +struct AVIINDEXENTRY { + DWORD ckid; + DWORD dwFlags; + DWORD dwChunkOffset; + DWORD dwChunkLength; +} + +struct AVIPALCHANGE { + BYTE bFirstEntry; + BYTE bNumEntries; + WORD wFlags; + PALETTEENTRY[1] _peNew; + PALETTEENTRY* peNew() { return _peNew.ptr; } +} + +const AVIGETFRAMEF_BESTDISPLAYFMT = 1; + +struct AVISTREAMINFOW { + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + WCHAR[64] szName; +} +alias AVISTREAMINFOW* LPAVISTREAMINFOW; + +struct AVISTREAMINFOA { + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + char[64] szName; +} +alias AVISTREAMINFOA* LPAVISTREAMINFOA; + +version(Unicode) { + alias AVISTREAMINFOW AVISTREAMINFO; + alias LPAVISTREAMINFOW LPAVISTREAMINFO; +} else { // Unicode + alias AVISTREAMINFOA AVISTREAMINFO; + alias LPAVISTREAMINFOA LPAVISTREAMINFO; +} + +const AVISTREAMINFO_DISABLED = 0x00000001; +const AVISTREAMINFO_FORMATCHANGES = 0x00010000; + +struct AVIFILEINFOW { + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + WCHAR[64] szFileType; +} +alias AVIFILEINFOW* LPAVIFILEINFOW; + +struct AVIFILEINFOA { + DWORD dwMaxBytesPerSec; + DWORD dwFlags; + DWORD dwCaps; + DWORD dwStreams; + DWORD dwSuggestedBufferSize; + DWORD dwWidth; + DWORD dwHeight; + DWORD dwScale; + DWORD dwRate; + DWORD dwLength; + DWORD dwEditCount; + char[64] szFileType; +} +alias AVIFILEINFOA* LPAVIFILEINFOA; + +version(Unicode) { + alias AVIFILEINFOW AVIFILEINFO; + alias LPAVIFILEINFOW LPAVIFILEINFO; +} else { // Unicode + alias AVIFILEINFOA AVIFILEINFO; + alias LPAVIFILEINFOA LPAVIFILEINFO; +} + +enum { + AVIFILEINFO_HASINDEX = 0x00000010, + AVIFILEINFO_MUSTUSEINDEX = 0x00000020, + AVIFILEINFO_ISINTERLEAVED = 0x00000100, + AVIFILEINFO_WASCAPTUREFILE = 0x00010000, + AVIFILEINFO_COPYRIGHTED = 0x00020000, +} + +enum { + AVIFILECAPS_CANREAD = 0x00000001, + AVIFILECAPS_CANWRITE = 0x00000002, + AVIFILECAPS_ALLKEYFRAMES = 0x00000010, + AVIFILECAPS_NOCOMPRESSION = 0x00000020, +} + +extern (Windows) { + alias BOOL function(int) AVISAVECALLBACK; +} + +struct AVICOMPRESSOPTIONS { + DWORD fccType; + DWORD fccHandler; + DWORD dwKeyFrameEvery; + DWORD dwQuality; + DWORD dwBytesPerSecond; + DWORD dwFlags; + LPVOID lpFormat; + DWORD cbFormat; + LPVOID lpParms; + DWORD cbParms; + DWORD dwInterleaveEvery; +} +alias AVICOMPRESSOPTIONS* LPAVICOMPRESSOPTIONS; + +enum { + AVICOMPRESSF_INTERLEAVE = 0x00000001, + AVICOMPRESSF_DATARATE = 0x00000002, + AVICOMPRESSF_KEYFRAMES = 0x00000004, + AVICOMPRESSF_VALID = 0x00000008, +} + +/+ TODO: +DECLARE_INTERFACE_(IAVIStream, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Create) (THIS_ LPARAM lParam1, LPARAM lParam2) PURE ; + STDMETHOD(Info) (THIS_ AVISTREAMINFOW FAR * psi, LONG lSize) PURE ; + STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ; + STDMETHOD(ReadFormat) (THIS_ LONG lPos, + LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ; + STDMETHOD(SetFormat) (THIS_ LONG lPos, + LPVOID lpFormat, LONG cbFormat) PURE ; + STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, + LONG FAR * plBytes, LONG FAR * plSamples) PURE ; + STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, + DWORD dwFlags, + LONG FAR *plSampWritten, + LONG FAR *plBytesWritten) PURE ; + STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE; + STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ; + STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ; +#ifdef _WIN32 + STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, + LONG cbInfo) PURE; +#else + STDMETHOD(Reserved1) (THIS) PURE; + STDMETHOD(Reserved2) (THIS) PURE; + STDMETHOD(Reserved3) (THIS) PURE; + STDMETHOD(Reserved4) (THIS) PURE; + STDMETHOD(Reserved5) (THIS) PURE; +#endif +}; + +alias TypeDef!(IAVIStream FAR*) PAVISTREAM; + +#undef INTERFACE +#define INTERFACE IAVIStreaming + +DECLARE_INTERFACE_(IAVIStreaming, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Begin) (THIS_ + LONG lStart, + LONG lEnd, + LONG lRate) PURE; + STDMETHOD(End) (THIS) PURE; +}; + +alias TypeDef!(IAVIStreaming FAR*) PAVISTREAMING; + + +#undef INTERFACE +#define INTERFACE IAVIEditStream + +DECLARE_INTERFACE_(IAVIEditStream, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Cut) (THIS_ LONG FAR *plStart, + LONG FAR *plLength, + PAVISTREAM FAR * ppResult) PURE; + STDMETHOD(Copy) (THIS_ LONG FAR *plStart, + LONG FAR *plLength, + PAVISTREAM FAR * ppResult) PURE; + STDMETHOD(Paste) (THIS_ LONG FAR *plPos, + LONG FAR *plLength, + PAVISTREAM pstream, + LONG lStart, + LONG lEnd) PURE; + STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE; + STDMETHOD(SetInfo) (THIS_ AVISTREAMINFOW FAR * lpInfo, + LONG cbInfo) PURE; +}; + +alias TypeDef!(IAVIEditStream FAR*) PAVIEDITSTREAM; + +#undef INTERFACE +#define INTERFACE IAVIPersistFile + +DECLARE_INTERFACE_(IAVIPersistFile, IPersistFile) +{ + STDMETHOD(Reserved1)(THIS) PURE; +}; + +alias TypeDef!(IAVIPersistFile FAR*) PAVIPERSISTFILE; + +#undef INTERFACE +#define INTERFACE IAVIFile +#define PAVIFILE IAVIFile FAR* + +DECLARE_INTERFACE_(IAVIFile, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD(Info) (THIS_ + AVIFILEINFOW FAR * pfi, + LONG lSize) PURE; + STDMETHOD(GetStream) (THIS_ + PAVISTREAM FAR * ppStream, + DWORD fccType, + LONG lParam) PURE; + STDMETHOD(CreateStream) (THIS_ + PAVISTREAM FAR * ppStream, + AVISTREAMINFOW FAR * psi) PURE; + STDMETHOD(WriteData) (THIS_ + DWORD ckid, + LPVOID lpData, + LONG cbData) PURE; + STDMETHOD(ReadData) (THIS_ + DWORD ckid, + LPVOID lpData, + LONG FAR *lpcbData) PURE; + STDMETHOD(EndRecord) (THIS) PURE; + STDMETHOD(DeleteStream) (THIS_ + DWORD fccType, + LONG lParam) PURE; +}; + +#undef PAVIFILE +alias TypeDef!(IAVIFile FAR*) PAVIFILE; + +#undef INTERFACE +#define INTERFACE IGetFrame +#define PGETFRAME IGetFrame FAR* + +DECLARE_INTERFACE_(IGetFrame, IUnknown) +{ + STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; + STDMETHOD_(ULONG,AddRef) (THIS) PURE; + STDMETHOD_(ULONG,Release) (THIS) PURE; + + STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE; + + STDMETHOD(Begin) (THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE; + STDMETHOD(End) (THIS) PURE; + + STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, int x, int y, int dx, int dy) PURE; +}; + +#undef PGETFRAME +alias TypeDef!(IGetFrame FAR*) PGETFRAME; + +#define DEFINE_AVIGUID(name, l, w1, w2) DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46) + +DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0); +DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0); +DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0); +DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0); +DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0); +DEFINE_AVIGUID(IID_IAVIPersistFile, 0x00020025, 0, 0); +#ifndef UNICODE +DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal, 0x00020009, 0, 0); +#endif + +DEFINE_AVIGUID(CLSID_AVIFile, 0x00020000, 0, 0); + +#define AVIFILEHANDLER_CANREAD 0x0001 +#define AVIFILEHANDLER_CANWRITE 0x0002 +#define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004 + +STDAPI_(void) AVIFileInit(void); +STDAPI_(void) AVIFileExit(void); + +STDAPI_(ULONG) AVIFileAddRef (PAVIFILE pfile); +STDAPI_(ULONG) AVIFileRelease (PAVIFILE pfile); + +#ifdef _WIN32 +STDAPI AVIFileOpenA (PAVIFILE FAR * ppfile, LPCSTR szFile, + UINT uMode, LPCLSID lpHandler); +STDAPI AVIFileOpenW (PAVIFILE FAR * ppfile, LPCWSTR szFile, + UINT uMode, LPCLSID lpHandler); +#ifdef UNICODE +#define AVIFileOpen AVIFileOpenW +#else +#define AVIFileOpen AVIFileOpenA +#endif +#else +STDAPI AVIFileOpen (PAVIFILE FAR * ppfile, LPCSTR szFile, + UINT uMode, LPCLSID lpHandler); +#define AVIFileOpenW AVIFileOpen +#endif + +#ifdef _WIN32 +STDAPI AVIFileInfoW (PAVIFILE pfile, LPAVIFILEINFOW pfi, LONG lSize); +STDAPI AVIFileInfoA (PAVIFILE pfile, LPAVIFILEINFOA pfi, LONG lSize); +#ifdef UNICODE +#define AVIFileInfo AVIFileInfoW +#else +#define AVIFileInfo AVIFileInfoA +#endif +#else +STDAPI AVIFileInfo (PAVIFILE pfile, LPAVIFILEINFO pfi, LONG lSize); +#define AVIFileInfoW AVIFileInfo +#endif + + +STDAPI AVIFileGetStream (PAVIFILE pfile, PAVISTREAM FAR * ppavi, DWORD fccType, LONG lParam); + + +#ifdef _WIN32 +STDAPI AVIFileCreateStreamW (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOW FAR * psi); +STDAPI AVIFileCreateStreamA (PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFOA FAR * psi); +#ifdef UNICODE +#define AVIFileCreateStream AVIFileCreateStreamW +#else +#define AVIFileCreateStream AVIFileCreateStreamA +#endif +#else +STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi, AVISTREAMINFO FAR * psi); +#define AVIFileCreateStreamW AVIFileCreateStream +#endif + +STDAPI AVIFileWriteData (PAVIFILE pfile, + DWORD ckid, + LPVOID lpData, + LONG cbData); +STDAPI AVIFileReadData (PAVIFILE pfile, + DWORD ckid, + LPVOID lpData, + LONG FAR *lpcbData); +STDAPI AVIFileEndRecord (PAVIFILE pfile); + +STDAPI_(ULONG) AVIStreamAddRef (PAVISTREAM pavi); +STDAPI_(ULONG) AVIStreamRelease (PAVISTREAM pavi); + +STDAPI AVIStreamInfoW (PAVISTREAM pavi, LPAVISTREAMINFOW psi, LONG lSize); +STDAPI AVIStreamInfoA (PAVISTREAM pavi, LPAVISTREAMINFOA psi, LONG lSize); +#ifdef UNICODE +#define AVIStreamInfo AVIStreamInfoW +#else +#define AVIStreamInfo AVIStreamInfoA +#endif + +STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi, LONG lPos, LONG lFlags); +STDAPI AVIStreamReadFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG FAR *lpcbFormat); +STDAPI AVIStreamSetFormat (PAVISTREAM pavi, LONG lPos,LPVOID lpFormat,LONG cbFormat); +STDAPI AVIStreamReadData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG FAR *lpcb); +STDAPI AVIStreamWriteData (PAVISTREAM pavi, DWORD fcc, LPVOID lp, LONG cb); + +STDAPI AVIStreamRead (PAVISTREAM pavi, + LONG lStart, + LONG lSamples, + LPVOID lpBuffer, + LONG cbBuffer, + LONG FAR * plBytes, + LONG FAR * plSamples); +#define AVISTREAMREAD_CONVENIENT (-1L) + +STDAPI AVIStreamWrite (PAVISTREAM pavi, + LONG lStart, LONG lSamples, + LPVOID lpBuffer, LONG cbBuffer, DWORD dwFlags, + LONG FAR *plSampWritten, + LONG FAR *plBytesWritten); + +STDAPI_(LONG) AVIStreamStart (PAVISTREAM pavi); +STDAPI_(LONG) AVIStreamLength (PAVISTREAM pavi); +STDAPI_(LONG) AVIStreamTimeToSample (PAVISTREAM pavi, LONG lTime); +STDAPI_(LONG) AVIStreamSampleToTime (PAVISTREAM pavi, LONG lSample); + + +STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart, LONG lEnd, LONG lRate); +STDAPI AVIStreamEndStreaming(PAVISTREAM pavi); + +STDAPI_(PGETFRAME) AVIStreamGetFrameOpen(PAVISTREAM pavi, + LPBITMAPINFOHEADER lpbiWanted); +STDAPI_(LPVOID) AVIStreamGetFrame(PGETFRAME pg, LONG lPos); +STDAPI AVIStreamGetFrameClose(PGETFRAME pg); + +STDAPI AVIStreamOpenFromFileA(PAVISTREAM FAR *ppavi, LPCSTR szFile, + DWORD fccType, LONG lParam, + UINT mode, CLSID FAR *pclsidHandler); +STDAPI AVIStreamOpenFromFileW(PAVISTREAM FAR *ppavi, LPCWSTR szFile, + DWORD fccType, LONG lParam, + UINT mode, CLSID FAR *pclsidHandler); +#ifdef UNICODE +#define AVIStreamOpenFromFile AVIStreamOpenFromFileW +#else +#define AVIStreamOpenFromFile AVIStreamOpenFromFileA +#endif + +STDAPI AVIStreamCreate(PAVISTREAM FAR *ppavi, LONG lParam1, LONG lParam2, + CLSID FAR *pclsidHandler); + + + +#define FIND_DIR 0x0000000FL +#define FIND_NEXT 0x00000001L +#define FIND_PREV 0x00000004L +#define FIND_FROM_START 0x00000008L + +#define FIND_TYPE 0x000000F0L +#define FIND_KEY 0x00000010L +#define FIND_ANY 0x00000020L +#define FIND_FORMAT 0x00000040L + +#define FIND_RET 0x0000F000L +#define FIND_POS 0x00000000L +#define FIND_LENGTH 0x00001000L +#define FIND_OFFSET 0x00002000L +#define FIND_SIZE 0x00003000L +#define FIND_INDEX 0x00004000L + +#define AVIStreamFindKeyFrame AVIStreamFindSample +#define FindKeyFrame FindSample + +#define AVIStreamClose AVIStreamRelease +#define AVIFileClose AVIFileRelease +#define AVIStreamInit AVIFileInit +#define AVIStreamExit AVIFileExit + +#define SEARCH_NEAREST FIND_PREV +#define SEARCH_BACKWARD FIND_PREV +#define SEARCH_FORWARD FIND_NEXT +#define SEARCH_KEY FIND_KEY +#define SEARCH_ANY FIND_ANY + +#define AVIStreamSampleToSample(pavi1, pavi2, l) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2, l)) + +#define AVIStreamNextSample(pavi, l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_ANY) + +#define AVIStreamPrevSample(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_ANY) + +#define AVIStreamNearestSample(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_ANY) + +#define AVIStreamNextKeyFrame(pavi,l) AVIStreamFindSample(pavi,l+1,FIND_NEXT|FIND_KEY) + +#define AVIStreamPrevKeyFrame(pavi, l) AVIStreamFindSample(pavi,l-1,FIND_PREV|FIND_KEY) + +#define AVIStreamNearestKeyFrame(pavi, l) AVIStreamFindSample(pavi,l,FIND_PREV|FIND_KEY) + +#define AVIStreamIsKeyFrame(pavi, l) (AVIStreamNearestKeyFrame(pavi,l) == l) + +#define AVIStreamPrevSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNextSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNearestSampleTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestSample(pavi,AVIStreamTimeToSample(pavi,t))) + +#define AVIStreamNextKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNextKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamPrevKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamPrevKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamNearestKeyFrameTime(pavi, t) AVIStreamSampleToTime(pavi, AVIStreamNearestKeyFrame(pavi,AVIStreamTimeToSample(pavi, t))) + +#define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamStart(pavi)) + +#define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamLength(pavi)) + +#define AVIStreamEnd(pavi) (AVIStreamStart(pavi) + AVIStreamLength(pavi)) + +#define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi)) + +#define AVIStreamSampleSize(pavi, lPos, plSize) AVIStreamRead(pavi,lPos,1,NULL,0,plSize,NULL) + +#define AVIStreamFormatSize(pavi, lPos, plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize) + +#define AVIStreamDataSize(pavi, fcc, plSize) AVIStreamReadData(pavi,fcc,NULL,plSize) + +#ifndef comptypeDIB +#define comptypeDIB mmioFOURCC('D', 'I', 'B', ' ') +#endif + +STDAPI AVIMakeCompressedStream( + PAVISTREAM FAR * ppsCompressed, + PAVISTREAM ppsSource, + AVICOMPRESSOPTIONS FAR * lpOptions, + CLSID FAR *pclsidHandler); + +EXTERN_C HRESULT CDECL AVISaveA (LPCSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM pfile, + LPAVICOMPRESSOPTIONS lpOptions, + ...); + +STDAPI AVISaveVA(LPCSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM FAR * ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); +EXTERN_C HRESULT CDECL AVISaveW (LPCWSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM pfile, + LPAVICOMPRESSOPTIONS lpOptions, + ...); + +STDAPI AVISaveVW(LPCWSTR szFile, + CLSID FAR *pclsidHandler, + AVISAVECALLBACK lpfnCallback, + int nStreams, + PAVISTREAM FAR * ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); +#ifdef UNICODE +#define AVISave AVISaveW +#define AVISaveV AVISaveVW +#else +#define AVISave AVISaveA +#define AVISaveV AVISaveVA +#endif + + + +STDAPI_(INT_PTR) AVISaveOptions(HWND hwnd, + UINT uiFlags, + int nStreams, + PAVISTREAM FAR *ppavi, + LPAVICOMPRESSOPTIONS FAR *plpOptions); + +STDAPI AVISaveOptionsFree(int nStreams, + LPAVICOMPRESSOPTIONS FAR *plpOptions); + +STDAPI AVIBuildFilterW(LPWSTR lpszFilter, LONG cbFilter, BOOL fSaving); +STDAPI AVIBuildFilterA(LPSTR lpszFilter, LONG cbFilter, BOOL fSaving); +#ifdef UNICODE +#define AVIBuildFilter AVIBuildFilterW +#else +#define AVIBuildFilter AVIBuildFilterA +#endif +STDAPI AVIMakeFileFromStreams(PAVIFILE FAR * ppfile, + int nStreams, + PAVISTREAM FAR * papStreams); + +STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal, PAVISTREAM FAR *ppstream); + +STDAPI AVIPutFileOnClipboard(PAVIFILE pf); + +STDAPI AVIGetFromClipboard(PAVIFILE FAR * lppf); + +STDAPI AVIClearClipboard(void); + +STDAPI CreateEditableStream( + PAVISTREAM FAR * ppsEditable, + PAVISTREAM psSource); + +STDAPI EditStreamCut(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); + +STDAPI EditStreamCopy(PAVISTREAM pavi, LONG FAR *plStart, LONG FAR *plLength, PAVISTREAM FAR * ppResult); + +STDAPI EditStreamPaste(PAVISTREAM pavi, LONG FAR *plPos, LONG FAR *plLength, PAVISTREAM pstream, LONG lStart, LONG lEnd); + +STDAPI EditStreamClone(PAVISTREAM pavi, PAVISTREAM FAR *ppResult); + + +STDAPI EditStreamSetNameA(PAVISTREAM pavi, LPCSTR lpszName); +STDAPI EditStreamSetNameW(PAVISTREAM pavi, LPCWSTR lpszName); +STDAPI EditStreamSetInfoW(PAVISTREAM pavi, LPAVISTREAMINFOW lpInfo, LONG cbInfo); +STDAPI EditStreamSetInfoA(PAVISTREAM pavi, LPAVISTREAMINFOA lpInfo, LONG cbInfo); +#ifdef UNICODE +#define EditStreamSetInfo EditStreamSetInfoW +#define EditStreamSetName EditStreamSetNameW +#else +#define EditStreamSetInfo EditStreamSetInfoA +#define EditStreamSetName EditStreamSetNameA +#endif ++/ +const AVIERR_OK = 0L; + +SCODE MAKE_AVIERR(DWORD error) { + return MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x4000 + error); +} + +const AVIERR_UNSUPPORTED = MAKE_AVIERR(101); +const AVIERR_BADFORMAT = MAKE_AVIERR(102); +const AVIERR_MEMORY = MAKE_AVIERR(103); +const AVIERR_INTERNAL = MAKE_AVIERR(104); +const AVIERR_BADFLAGS = MAKE_AVIERR(105); +const AVIERR_BADPARAM = MAKE_AVIERR(106); +const AVIERR_BADSIZE = MAKE_AVIERR(107); +const AVIERR_BADHANDLE = MAKE_AVIERR(108); +const AVIERR_FILEREAD = MAKE_AVIERR(109); +const AVIERR_FILEWRITE = MAKE_AVIERR(110); +const AVIERR_FILEOPEN = MAKE_AVIERR(111); +const AVIERR_COMPRESSOR = MAKE_AVIERR(112); +const AVIERR_NOCOMPRESSOR = MAKE_AVIERR(113); +const AVIERR_READONLY = MAKE_AVIERR(114); +const AVIERR_NODATA = MAKE_AVIERR(115); +const AVIERR_BUFFERTOOSMALL = MAKE_AVIERR(116); +const AVIERR_CANTCOMPRESS = MAKE_AVIERR(117); +const AVIERR_USERABORT = MAKE_AVIERR(198); +const AVIERR_ERROR = MAKE_AVIERR(199); + +const TCHAR[] MCIWND_WINDOW_CLASS = "MCIWndClass"; + +extern (Windows) { + HWND MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCSTR szFile); + HWND MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCWSTR szFile); +} + +version(Unicode) { + alias MCIWndCreateW MCIWndCreate; +} else { // Unicode + alias MCIWndCreateA MCIWndCreate; +} + +extern(Windows) { + BOOL MCIWndRegisterClass(); +} + +enum { + MCIWNDOPENF_NEW = 0x0001, + MCIWNDF_NOAUTOSIZEWINDOW = 0x0001, + MCIWNDF_NOPLAYBAR = 0x0002, + MCIWNDF_NOAUTOSIZEMOVIE = 0x0004, + MCIWNDF_NOMENU = 0x0008, + MCIWNDF_SHOWNAME = 0x0010, + MCIWNDF_SHOWPOS = 0x0020, + MCIWNDF_SHOWMODE = 0x0040, + MCIWNDF_SHOWALL = 0x0070, + MCIWNDF_NOTIFYMODE = 0x0100, + MCIWNDF_NOTIFYPOS = 0x0200, + MCIWNDF_NOTIFYSIZE = 0x0400, + MCIWNDF_NOTIFYERROR = 0x1000, + MCIWNDF_NOTIFYALL = 0x1F00, + MCIWNDF_NOTIFYANSI = 0x0080, + MCIWNDF_NOTIFYMEDIAA = 0x0880, + MCIWNDF_NOTIFYMEDIAW = 0x0800, +} + +version(Unicode) { + alias MCIWNDF_NOTIFYMEDIAW MCIWNDF_NOTIFYMEDIA; +} else { // Unicode + alias MCIWNDF_NOTIFYMEDIAA MCIWNDF_NOTIFYMEDIA; +} + +enum { + MCIWNDF_RECORD = 0x2000, + MCIWNDF_NOERRORDLG = 0x4000, + MCIWNDF_NOOPEN = 0x8000, +} + +// can macros + +BOOL MCIWndCanPlay(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_PLAY, 0, 0); } +BOOL MCIWndCanRecord(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_RECORD, 0, 0); } +BOOL MCIWndCanSave(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_SAVE, 0, 0); } +BOOL MCIWndCanWindow(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_WINDOW, 0, 0); } +BOOL MCIWndCanEject(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_EJECT, 0, 0); } +BOOL MCIWndCanConfig(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_CAN_CONFIG, 0, 0); } +BOOL MCIWndPaletteKick(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_PALETTEKICK, 0, 0); } +LONG MCIWndSave(HWND hwnd, LPVOID szFile) + { return cast(LONG)SendMessage(hwnd, MCI_SAVE, 0, cast(LPARAM)szFile); } +LONG MCIWndSaveDialog(HWND hwnd) + { return MCIWndSave(hwnd, cast(LPVOID)-1); } +LONG MCIWndNew(HWND hwnd, LPVOID lp) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_NEW, 0, cast(LPARAM)lp); } +LONG MCIWndRecord(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_RECORD, 0, 0); } +LONG MCIWndOpen(HWND hwnd, LPVOID sz, UINT f) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_OPEN, cast(WPARAM)f, cast(LPARAM)sz); } +LONG MCIWndOpenDialog(HWND hwnd) + { return MCIWndOpen(hwnd, cast(LPVOID)-1, 0); } +LONG MCIWndClose(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_CLOSE, 0, 0); } +LONG MCIWndPlay(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_PLAY, 0, 0); } +LONG MCIWndStop(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_STOP, 0, 0); } +LONG MCIWndPause(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_PAUSE, 0, 0); } +LONG MCIWndResume(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCI_RESUME, 0, 0); } +LONG MCIWndSeek(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCI_SEEK, 0, cast(LPARAM)lPos); } +LONG MCIWndHome(HWND hwnd) + { return MCIWndSeek(hwnd, MCIWND_START); } +LONG MCIWndEnd(HWND hwnd) + { return MCIWndSeek(hwnd, MCIWND_END); } +LONG MCIWndEject(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_EJECT, 0, 0); } +LONG MCIWndGetSource(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_SOURCE, 0, cast(LPARAM)prc); } +LONG MCIWndPutSource(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_SOURCE, 0, cast(LPARAM)prc); } +LONG MCIWndGetDest(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GET_DEST, 0, cast(LPARAM)prc); } +LONG MCIWndPutDest(HWND hwnd, LPRECT prc) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PUT_DEST, 0, cast(LPARAM)prc); } +LONG MCIWndPlayReverse(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYREVERSE, 0, 0); } +LONG MCIWndPlayFrom(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, cast(LPARAM)lPos); } +LONG MCIWndPlayTo(HWND hwnd, LONG lPos) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_PLAYTO, 0, cast(LPARAM)lPos); } +LONG MCIWndPlayFromTo(HWND hwnd, LONG lStart, LONG lEnd) + { MCIWndSeek(hwnd, lStart); return MCIWndPlayTo(hwnd, lEnd); } +UINT MCIWndGetDeviceID(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0); } +UINT MCIWndGetAlias(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETALIAS, 0, 0); } +LONG MCIWndGetMode(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETMODE, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetPosition(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0); } +LONG MCIWndGetPositionString(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetStart(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0); } +LONG MCIWndGetLength(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0); } +LONG MCIWndGetEnd(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETEND, 0, 0); } +LONG MCIWndStep(HWND hwnd, LONG n) + { return cast(LONG)SendMessage(hwnd, MCI_STEP, 0, cast(LPARAM)n); } +void MCIWndDestroy(HWND hwnd) + { SendMessage(hwnd, WM_CLOSE, 0, 0); } +void MCIWndSetZoom(HWND hwnd, UINT iZoom) + { SendMessage(hwnd, MCIWNDM_SETZOOM, 0, cast(LPARAM)iZoom); } +UINT MCIWndGetZoom(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETZOOM, 0, 0); } +LONG MCIWndSetVolume(HWND hwnd, UINT iVol) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, cast(LPARAM)iVol); } +LONG MCIWndGetVolume(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0); } +LONG MCIWndSetSpeed(HWND hwnd, UINT iSpeed) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETSPEED, 0, cast(LPARAM)iSpeed); } +LONG MCIWndGetSpeed(HWND hwnd) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0); } +LONG MCIWndSetTimeFormat(HWND hwnd, LPTSTR lp) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, cast(LPARAM)lp); } +LONG MCIWndUseFrames(HWND hwnd) + { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"frames").ptr); } +LONG MCIWndUseTime(HWND hwnd) + { return MCIWndSetTimeFormat(hwnd, (cast(TCHAR[])"ms").ptr); } +LONG MCIWndGetTimeFormat(HWND hwnd, LPTSTR lp, UINT len) + { return cast(LONG)SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, cast(WPARAM)len, cast(LPARAM)lp); } +void MCIWndValidateMedia(HWND hwnd) + { SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0); } +void MCIWndSetRepeat(HWND hwnd, BOOL f) + { SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, cast(LPARAM)f); } +BOOL MCIWndGetRepeat(HWND hwnd) + { return cast(BOOL)SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0); } +void MCIWndSetActiveTimer(HWND hwnd, UINT active) + { SendMessage(hwnd, MCIWNDM_SETACTIVETIMER, cast(WPARAM)active, 0); } +void MCIWndSetInactiveTimer(HWND hwnd, UINT inactive) + { SendMessage(hwnd, MCIWNDM_SETINACTIVETIMER, cast(WPARAM)inactive, 0); } +void MCIWndSetTimers(HWND hwnd, UINT active, UINT inactive) + { SendMessage(hwnd, MCIWNDM_SETTIMERS, cast(WPARAM)active, cast(LPARAM)inactive); } +UINT MCIWndGetActiveTimer(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETACTIVETIMER, 0, 0); } +UINT MCIWndGetInactiveTimer(HWND hwnd) + { return cast(UINT)SendMessage(hwnd, MCIWNDM_GETINACTIVETIMER, 0, 0); } +LONG MCIWndRealize(HWND hwnd, BOOL fBkgnd) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_REALIZE, cast(WPARAM)fBkgnd, 0); } +LONG MCIWndSendString(HWND hwnd, LPTSTR sz) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, cast(LPARAM)sz); } +LONG MCIWndReturnString(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_RETURNSTRING, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetError(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETERROR, cast(WPARAM)len, cast(LPARAM)lp); } +HPALETTE MCIWndGetPalette(HWND hwnd) + { return cast(HPALETTE)SendMessage(hwnd, MCIWNDM_GETPALETTE, 0, 0); } +LONG MCIWndSetPalette(HWND hwnd, HPALETTE hpal) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETPALETTE, cast(WPARAM)hpal, 0); } +LONG MCIWndGetFileName(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETFILENAME, cast(WPARAM)len, cast(LPARAM)lp); } +LONG MCIWndGetDevice(HWND hwnd, LPVOID lp, UINT len) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_GETDEVICE, cast(WPARAM)len, cast(LPARAM)lp); } +UINT MCIWndGetStyles(HWND hwnd) + { return cast(UINT) SendMessage(hwnd, MCIWNDM_GETSTYLES, 0, 0); } +LONG MCIWndChangeStyles(HWND hwnd, UINT mask, LONG value) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_CHANGESTYLES, cast(WPARAM)mask, cast(LPARAM)value); } +LONG MCIWndOpenInterface(HWND hwnd, LPUNKNOWN pUnk) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_OPENINTERFACE, 0, cast(LPARAM)cast(void*)pUnk); } +LONG MCIWndSetOwner(HWND hwnd, HWND hwndP) + { return cast(LONG) SendMessage(hwnd, MCIWNDM_SETOWNER, cast(WPARAM)hwndP, 0); } + +enum { + MCIWNDM_GETDEVICEID = WM_USER + 100, + MCIWNDM_SENDSTRINGA = WM_USER + 101, + MCIWNDM_GETPOSITIONA = WM_USER + 102, + MCIWNDM_GETSTART = WM_USER + 103, + MCIWNDM_GETLENGTH = WM_USER + 104, + MCIWNDM_GETEND = WM_USER + 105, + MCIWNDM_GETMODEA = WM_USER + 106, + MCIWNDM_EJECT = WM_USER + 107, + MCIWNDM_SETZOOM = WM_USER + 108, + MCIWNDM_GETZOOM = WM_USER + 109, + MCIWNDM_SETVOLUME = WM_USER + 110, + MCIWNDM_GETVOLUME = WM_USER + 111, + MCIWNDM_SETSPEED = WM_USER + 112, + MCIWNDM_GETSPEED = WM_USER + 113, + MCIWNDM_SETREPEAT = WM_USER + 114, + MCIWNDM_GETREPEAT = WM_USER + 115, + MCIWNDM_REALIZE = WM_USER + 118, + MCIWNDM_SETTIMEFORMATA = WM_USER + 119, + MCIWNDM_GETTIMEFORMATA = WM_USER + 120, + MCIWNDM_VALIDATEMEDIA = WM_USER + 121, + MCIWNDM_PLAYFROM = WM_USER + 122, + MCIWNDM_PLAYTO = WM_USER + 123, + MCIWNDM_GETFILENAMEA = WM_USER + 124, + MCIWNDM_GETDEVICEA = WM_USER + 125, + MCIWNDM_GETPALETTE = WM_USER + 126, + MCIWNDM_SETPALETTE = WM_USER + 127, + MCIWNDM_GETERRORA = WM_USER + 128, + MCIWNDM_SETTIMERS = WM_USER + 129, + MCIWNDM_SETACTIVETIMER = WM_USER + 130, + MCIWNDM_SETINACTIVETIMER = WM_USER + 131, + MCIWNDM_GETACTIVETIMER = WM_USER + 132, + MCIWNDM_GETINACTIVETIMER = WM_USER + 133, + MCIWNDM_NEWA = WM_USER + 134, + MCIWNDM_CHANGESTYLES = WM_USER + 135, + MCIWNDM_GETSTYLES = WM_USER + 136, + MCIWNDM_GETALIAS = WM_USER + 137, + MCIWNDM_RETURNSTRINGA = WM_USER + 138, + MCIWNDM_PLAYREVERSE = WM_USER + 139, + MCIWNDM_GET_SOURCE = WM_USER + 140, + MCIWNDM_PUT_SOURCE = WM_USER + 141, + MCIWNDM_GET_DEST = WM_USER + 142, + MCIWNDM_PUT_DEST = WM_USER + 143, + MCIWNDM_CAN_PLAY = WM_USER + 144, + MCIWNDM_CAN_WINDOW = WM_USER + 145, + MCIWNDM_CAN_RECORD = WM_USER + 146, + MCIWNDM_CAN_SAVE = WM_USER + 147, + MCIWNDM_CAN_EJECT = WM_USER + 148, + MCIWNDM_CAN_CONFIG = WM_USER + 149, + MCIWNDM_PALETTEKICK = WM_USER + 150, + MCIWNDM_OPENINTERFACE = WM_USER + 151, + MCIWNDM_SETOWNER = WM_USER + 152, + MCIWNDM_OPENA = WM_USER + 153, + MCIWNDM_SENDSTRINGW = WM_USER + 201, + MCIWNDM_GETPOSITIONW = WM_USER + 202, + MCIWNDM_GETMODEW = WM_USER + 206, + MCIWNDM_SETTIMEFORMATW = WM_USER + 219, + MCIWNDM_GETTIMEFORMATW = WM_USER + 220, + MCIWNDM_GETFILENAMEW = WM_USER + 224, + MCIWNDM_GETDEVICEW = WM_USER + 225, + MCIWNDM_GETERRORW = WM_USER + 228, + MCIWNDM_NEWW = WM_USER + 234, + MCIWNDM_RETURNSTRINGW = WM_USER + 238, + MCIWNDM_OPENW = WM_USER + 252, +} + +version(Unicode) { + alias MCIWNDM_SENDSTRINGW MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONW MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEW MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATW MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATW MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEW MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEW MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORW MCIWNDM_GETERROR; + alias MCIWNDM_NEWW MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGW MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENW MCIWNDM_OPEN; +} else { // Unicode + alias MCIWNDM_SENDSTRINGA MCIWNDM_SENDSTRING; + alias MCIWNDM_GETPOSITIONA MCIWNDM_GETPOSITION; + alias MCIWNDM_GETMODEA MCIWNDM_GETMODE; + alias MCIWNDM_SETTIMEFORMATA MCIWNDM_SETTIMEFORMAT; + alias MCIWNDM_GETTIMEFORMATA MCIWNDM_GETTIMEFORMAT; + alias MCIWNDM_GETFILENAMEA MCIWNDM_GETFILENAME; + alias MCIWNDM_GETDEVICEA MCIWNDM_GETDEVICE; + alias MCIWNDM_GETERRORA MCIWNDM_GETERROR; + alias MCIWNDM_NEWA MCIWNDM_NEW; + alias MCIWNDM_RETURNSTRINGA MCIWNDM_RETURNSTRING; + alias MCIWNDM_OPENA MCIWNDM_OPEN; +} + +enum { + MCIWNDM_NOTIFYMODE = WM_USER + 200, + MCIWNDM_NOTIFYPOS = WM_USER + 201, + MCIWNDM_NOTIFYSIZE = WM_USER + 202, + MCIWNDM_NOTIFYMEDIA = WM_USER + 203, + MCIWNDM_NOTIFYERROR = WM_USER + 205, +} + +const MCIWND_START = -1; +const MCIWND_END = -2; + +enum { + MCI_CLOSE = 0x0804, + MCI_PLAY = 0x0806, + MCI_SEEK = 0x0807, + MCI_STOP = 0x0808, + MCI_PAUSE = 0x0809, + MCI_STEP = 0x080E, + MCI_RECORD = 0x080F, + MCI_SAVE = 0x0813, + MCI_CUT = 0x0851, + MCI_COPY = 0x0852, + MCI_PASTE = 0x0853, + MCI_RESUME = 0x0855, + MCI_DELETE = 0x0856, +} + +enum { + MCI_MODE_NOT_READY = 524, + MCI_MODE_STOP, + MCI_MODE_PLAY, + MCI_MODE_RECORD, + MCI_MODE_SEEK, + MCI_MODE_PAUSE, + MCI_MODE_OPEN, +} + +alias TypeDef!(HANDLE) HVIDEO; +alias HVIDEO* LPHVIDEO; + +// Error Return Values + +enum { + DV_ERR_OK = 0, + DV_ERR_BASE = 1, + DV_ERR_NONSPECIFIC = DV_ERR_BASE, + DV_ERR_BADFORMAT = DV_ERR_BASE + 1, + DV_ERR_STILLPLAYING = DV_ERR_BASE + 2, + DV_ERR_UNPREPARED = DV_ERR_BASE + 3, + DV_ERR_SYNC = DV_ERR_BASE + 4, + DV_ERR_TOOMANYCHANNELS = DV_ERR_BASE + 5, + DV_ERR_NOTDETECTED = DV_ERR_BASE + 6, + DV_ERR_BADINSTALL = DV_ERR_BASE + 7, + DV_ERR_CREATEPALETTE = DV_ERR_BASE + 8, + DV_ERR_SIZEFIELD = DV_ERR_BASE + 9, + DV_ERR_PARAM1 = DV_ERR_BASE + 10, + DV_ERR_PARAM2 = DV_ERR_BASE + 11, + DV_ERR_CONFIG1 = DV_ERR_BASE + 12, + DV_ERR_CONFIG2 = DV_ERR_BASE + 13, + DV_ERR_FLAGS = DV_ERR_BASE + 14, + DV_ERR_13 = DV_ERR_BASE + 15, + DV_ERR_NOTSUPPORTED = DV_ERR_BASE + 16, + DV_ERR_NOMEM = DV_ERR_BASE + 17, + DV_ERR_ALLOCATED = DV_ERR_BASE + 18, + DV_ERR_BADDEVICEID = DV_ERR_BASE + 19, + DV_ERR_INVALHANDLE = DV_ERR_BASE + 20, + DV_ERR_BADERRNUM = DV_ERR_BASE + 21, + DV_ERR_NO_BUFFERS = DV_ERR_BASE + 22, + DV_ERR_MEM_CONFLICT = DV_ERR_BASE + 23, + DV_ERR_IO_CONFLICT = DV_ERR_BASE + 24, + DV_ERR_DMA_CONFLICT = DV_ERR_BASE + 25, + DV_ERR_INT_CONFLICT = DV_ERR_BASE + 26, + DV_ERR_PROTECT_ONLY = DV_ERR_BASE + 27, + DV_ERR_LASTERROR = DV_ERR_BASE + 27, + DV_ERR_USER_MSG = DV_ERR_BASE + 1000, +} + +// Callback Messages + +enum { + MM_DRVM_OPEN = 0x3D0, + MM_DRVM_CLOSE, + MM_DRVM_DATA, + MM_DRVM_ERROR, +} + +enum { + DV_VM_OPEN = MM_DRVM_OPEN, + DV_VM_CLOSE = MM_DRVM_CLOSE, + DV_VM_DATA = MM_DRVM_DATA, + DV_VM_ERROR = MM_DRVM_ERROR, +} + +/** + * Structures + */ + +struct VIDEOHDR { + LPBYTE lpData; + DWORD dwBufferLength; + DWORD dwBytesUsed; + DWORD dwTimeCaptured; + DWORD_PTR dwUser; + DWORD dwFlags; + DWORD_PTR[4]dwReserved; +} +alias VIDEOHDR* PVIDEOHDR, LPVIDEOHDR; + +enum { + VHDR_DONE = 0x00000001, + VHDR_PREPARED = 0x00000002, + VHDR_INQUEUE = 0x00000004, + VHDR_KEYFRAME = 0x00000008, + VHDR_VALID = 0x0000000F, +} + +struct CHANNEL_CAPS { + DWORD dwFlags; + DWORD dwSrcRectXMod; + DWORD dwSrcRectYMod; + DWORD dwSrcRectWidthMod; + DWORD dwSrcRectHeightMod; + DWORD dwDstRectXMod; + DWORD dwDstRectYMod; + DWORD dwDstRectWidthMod; + DWORD dwDstRectHeightMod; +} +alias CHANNEL_CAPS* PCHANNEL_CAPS, LPCHANNEL_CAPS; + +enum { + VCAPS_OVERLAY = 0x00000001, + VCAPS_SRC_CAN_CLIP = 0x00000002, + VCAPS_DST_CAN_CLIP = 0x00000004, + VCAPS_CAN_SCALE = 0x00000008, +} + +/** + * API Flags + */ + +enum { + VIDEO_EXTERNALIN = 0x0001, + VIDEO_EXTERNALOUT = 0x0002, + VIDEO_IN = 0x0004, + VIDEO_OUT = 0x0008, + VIDEO_DLG_QUERY = 0x0010, +} + +enum { + VIDEO_CONFIGURE_QUERYSIZE = 0x0001, + VIDEO_CONFIGURE_CURRENT = 0x0010, + VIDEO_CONFIGURE_NOMINAL = 0x0020, + VIDEO_CONFIGURE_MIN = 0x0040, + VIDEO_CONFIGURE_MAX = 0x0080, + VIDEO_CONFIGURE_SET = 0x1000, + VIDEO_CONFIGURE_GET = 0x2000, + VIDEO_CONFIGURE_QUERY = 0x8000, +} + +/** + * CONFIGURE MESSAGES + */ + +enum { + DVM_USER = 0x4000, + DVM_CONFIGURE_START = 0x1000, + DVM_CONFIGURE_END = 0x1FFF, + DVM_PALETTE = DVM_CONFIGURE_START + 1, + DVM_FORMAT = DVM_CONFIGURE_START + 2, + DVM_PALETTERGB555 = DVM_CONFIGURE_START + 3, + DVM_SRC_RECT = DVM_CONFIGURE_START + 4, + DVM_DST_RECT = DVM_CONFIGURE_START + 5, +} + +/** + * AVICap window class + */ + +LRESULT AVICapSM(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { + if (IsWindow(hWnd)) { + return SendMessage(hWnd, msg, wParam, lParam); + } + return 0; +} + +enum { + WM_CAP_START = WM_USER, + WM_CAP_UNICODE_START = WM_USER + 100, + + WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1, + WM_CAP_SET_CALLBACK_ERRORA = WM_CAP_START + 2, + WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3, + + WM_CAP_SET_CALLBACK_ERRORW = WM_CAP_UNICODE_START + 2, + WM_CAP_SET_CALLBACK_STATUSW = WM_CAP_UNICODE_START + 3, +} + +version(Unicode) { + alias WM_CAP_SET_CALLBACK_ERRORW WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSW WM_CAP_SET_CALLBACK_STATUS; +} else { // Unicode + alias WM_CAP_SET_CALLBACK_ERRORA WM_CAP_SET_CALLBACK_ERROR; + alias WM_CAP_SET_CALLBACK_STATUSA WM_CAP_SET_CALLBACK_STATUS; +} + +enum { + WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4, + WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5, + WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6, + WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7, + WM_CAP_GET_USER_DATA = WM_CAP_START + 8, + WM_CAP_SET_USER_DATA = WM_CAP_START + 9, + WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10, + WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11, + WM_CAP_DRIVER_GET_NAMEA = WM_CAP_START + 12, + WM_CAP_DRIVER_GET_VERSIONA = WM_CAP_START + 13, + + WM_CAP_DRIVER_GET_NAMEW = WM_CAP_UNICODE_START + 12, + WM_CAP_DRIVER_GET_VERSIONW = WM_CAP_UNICODE_START + 13, +} + +version(Unicode) { + alias WM_CAP_DRIVER_GET_NAMEW WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONW WM_CAP_DRIVER_GET_VERSION; +} else { // Unicode + alias WM_CAP_DRIVER_GET_NAMEA WM_CAP_DRIVER_GET_NAME; + alias WM_CAP_DRIVER_GET_VERSIONA WM_CAP_DRIVER_GET_VERSION; +} + +enum { + WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14, + WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEA = WM_CAP_START + 21, + WM_CAP_FILE_SAVEASA = WM_CAP_START + 23, + WM_CAP_FILE_SAVEDIBA = WM_CAP_START + 25, + + WM_CAP_FILE_SET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 20, + WM_CAP_FILE_GET_CAPTURE_FILEW = WM_CAP_UNICODE_START + 21, + WM_CAP_FILE_SAVEASW = WM_CAP_UNICODE_START + 23, + WM_CAP_FILE_SAVEDIBW = WM_CAP_UNICODE_START + 25, +} + +version(Unicode) { + alias WM_CAP_FILE_SET_CAPTURE_FILEW WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEW WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASW WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBW WM_CAP_FILE_SAVEDIB; +} else { // Unicode + alias WM_CAP_FILE_SET_CAPTURE_FILEA WM_CAP_FILE_SET_CAPTURE_FILE; + alias WM_CAP_FILE_GET_CAPTURE_FILEA WM_CAP_FILE_GET_CAPTURE_FILE; + alias WM_CAP_FILE_SAVEASA WM_CAP_FILE_SAVEAS; + alias WM_CAP_FILE_SAVEDIBA WM_CAP_FILE_SAVEDIB; +} + +enum { + WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22, + WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24, + WM_CAP_EDIT_COPY = WM_CAP_START + 30, + WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35, + WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36, + WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41, + WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42, + WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43, + WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44, + WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45, + WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46, + WM_CAP_SET_PREVIEW = WM_CAP_START + 50, + WM_CAP_SET_OVERLAY = WM_CAP_START + 51, + WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52, + WM_CAP_SET_SCALE = WM_CAP_START + 53, + WM_CAP_GET_STATUS = WM_CAP_START + 54, + WM_CAP_SET_SCROLL = WM_CAP_START + 55, + WM_CAP_GRAB_FRAME = WM_CAP_START + 60, + WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61, + WM_CAP_SEQUENCE = WM_CAP_START + 62, + WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63, + WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64, + WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65, + WM_CAP_SET_MCI_DEVICEA = WM_CAP_START + 66, + WM_CAP_GET_MCI_DEVICEA = WM_CAP_START + 67, + + WM_CAP_SET_MCI_DEVICEW = WM_CAP_UNICODE_START + 66, + WM_CAP_GET_MCI_DEVICEW = WM_CAP_UNICODE_START + 67, +} + +version(Unicode) { + alias WM_CAP_SET_MCI_DEVICEW WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEW WM_CAP_GET_MCI_DEVICE; +} else { // Unicode + alias WM_CAP_SET_MCI_DEVICEA WM_CAP_SET_MCI_DEVICE; + alias WM_CAP_GET_MCI_DEVICEA WM_CAP_GET_MCI_DEVICE; +} + +enum { + WM_CAP_STOP = WM_CAP_START + 68, + WM_CAP_ABORT = WM_CAP_START + 69, + WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70, + WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71, + WM_CAP_SINGLE_FRAME = WM_CAP_START + 72, + WM_CAP_PAL_OPENA = WM_CAP_START + 80, + WM_CAP_PAL_SAVEA = WM_CAP_START + 81, + + WM_CAP_PAL_OPENW = WM_CAP_UNICODE_START + 80, + WM_CAP_PAL_SAVEW = WM_CAP_UNICODE_START + 81, +} + +version(Unicode) { + alias WM_CAP_PAL_OPENW WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEW WM_CAP_PAL_SAVE; +} else { // Unicode + alias WM_CAP_PAL_OPENA WM_CAP_PAL_OPEN; + alias WM_CAP_PAL_SAVEA WM_CAP_PAL_SAVE; +} + +enum { + WM_CAP_PAL_PASTE = WM_CAP_START + 82, + WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83, + WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84, + WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85, + WM_CAP_UNICODE_END = WM_CAP_PAL_SAVEW, + WM_CAP_END = WM_CAP_UNICODE_END, +} + +/** + * message wrapper + */ + +BOOL capSetCallbackOnError(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_ERROR, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnStatus(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_STATUS, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnYield(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_YIELD, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnFrame(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_FRAME, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnVideoStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnWaveStream(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, cast(LPARAM)fpProc); } +BOOL capSetCallbackOnCapControl(HWND hWnd, LPVOID fpProc) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, cast(LPARAM)fpProc); } + +BOOL capSetUserData(HWND hWnd, LPARAM lUser) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_USER_DATA, 0, lUser); } +BOOL capGetUserData(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_USER_DATA, 0, 0); } + +BOOL capDriverConnect(HWND hWnd, WPARAM i) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_CONNECT, i, 0); } +BOOL capDriverDisconnect(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_DISCONNECT, 0, 0); } +BOOL capDriverGetName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_NAME, wSize, cast(LPARAM)szName); } +BOOL capDriverGetVersion(HWND hWnd, LPTSTR szVer, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_VERSION, wSize, cast(LPARAM)szVer); } +BOOL capDriverGetCaps(HWND hWnd, LPCAPDRIVERCAPS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DRIVER_GET_CAPS, wSize, cast(LPARAM)s); } + +BOOL capFileSetCaptureFile(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, cast(LPARAM)szName); } +BOOL capFileGetCaptureFile(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_GET_CAPTURE_FILE, wSize, cast(LPARAM)szName); } +BOOL capFileAlloc(HWND hWnd, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_ALLOCATE, wSize, 0); } +BOOL capFileSaveAs(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEAS, 0, cast(LPARAM)szName); } +BOOL capFileSetInfoChunk(HWND hWnd, LPCAPINFOCHUNK lpInfoChunk) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SET_INFOCHUNK, 0, cast(LPARAM)lpInfoChunk); } +BOOL capFileSaveDIB(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_FILE_SAVEDIB, 0, cast(LPARAM)szName); } + +BOOL capEditCopy(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_EDIT_COPY, 0, 0); } + +BOOL capSetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_AUDIOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetAudioFormat(HWND hWnd, LPWAVEFORMATEX s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetAudioFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_AUDIOFORMAT, 0, 0); } + +BOOL capDlgVideoFormat(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0); } +BOOL capDlgVideoSource(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0); } +BOOL capDlgVideoDisplay(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0); } +BOOL capDlgVideoCompression(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0); } + +DWORD capGetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, wSize, cast(LPARAM)s); } +DWORD capGetVideoFormatSize(HWND hWnd) { return cast(DWORD)AVICapSM(hWnd, WM_CAP_GET_VIDEOFORMAT, 0, 0); } +BOOL capSetVideoFormat(HWND hWnd, void* s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_VIDEOFORMAT, wSize, cast(LPARAM)s); } + +BOOL capPreview(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEW, cast(WPARAM)f, 0); } +BOOL capPreviewRate(HWND hWnd, WPARAM wMS) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_PREVIEWRATE, wMS, 0); } +BOOL capOverlay(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_OVERLAY, cast(WPARAM)f, 0); } +BOOL capPreviewScale(HWND hWnd, BOOL f) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCALE, cast(WPARAM)f, 0); } +BOOL capGetStatus(HWND hWnd, LPCAPSTATUS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_STATUS, wSize, cast(LPARAM)s); } +BOOL capSetScrollPos(HWND hWnd, LPPOINT lpP) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SCROLL, 0, cast(LPARAM)lpP); } + +BOOL capGrabFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME, 0, 0); } +BOOL capGrabFrameNoStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0); } + +BOOL capCaptureSequence(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE, 0, 0); } +BOOL capCaptureSequenceNoFile(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SEQUENCE_NOFILE, 0, 0); } +BOOL capCaptureStop(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_STOP, 0, 0); } +BOOL capCaptureAbort(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_ABORT, 0, 0); } + +BOOL capCaptureSingleFrameOpen(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0); } +BOOL capCaptureSingleFrameClose(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0); } +BOOL capCaptureSingleFrame(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SINGLE_FRAME, 0, 0); } + +BOOL capCaptureGetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } +BOOL capCaptureSetSetup(HWND hWnd, LPCAPTUREPARMS s, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, cast(LPARAM)s); } + +BOOL capSetMCIDeviceName(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_SET_MCI_DEVICE, 0, cast(LPARAM)szName); } +BOOL capGetMCIDeviceName(HWND hWnd, LPTSTR szName, WPARAM wSize) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_GET_MCI_DEVICE, wSize, cast(LPARAM)szName); } + +BOOL capPaletteOpen(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_OPEN, 0, cast(LPARAM)szName); } +BOOL capPaletteSave(HWND hWnd, LPTSTR szName) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_SAVE, 0, cast(LPARAM)szName); } +BOOL capPalettePaste(HWND hWnd) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_PASTE, 0, 0); } +BOOL capPaletteAuto(HWND hWnd, WPARAM iFrames, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors); } +BOOL capPaletteManual(HWND hWnd, WPARAM fGrab, LPARAM iColors) { return cast(BOOL)AVICapSM(hWnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors); } + +/** + * structs + */ + +struct CAPDRIVERCAPS { + UINT wDeviceIndex; + BOOL fHasOverlay; + BOOL fHasDlgVideoSource; + BOOL fHasDlgVideoFormat; + BOOL fHasDlgVideoDisplay; + BOOL fCaptureInitialized; + BOOL fDriverSuppliesPalettes; + HANDLE hVideoIn; + HANDLE hVideoOut; + HANDLE hVideoExtIn; + HANDLE hVideoExtOut; +} +alias CAPDRIVERCAPS* PCAPDRIVERCAPS, LPCAPDRIVERCAPS; + +struct CAPSTATUS { + UINT uiImageWidth; + UINT uiImageHeight; + BOOL fLiveWindow; + BOOL fOverlayWindow; + BOOL fScale; + POINT ptScroll; + BOOL fUsingDefaultPalette; + BOOL fAudioHardware; + BOOL fCapFileExists; + DWORD dwCurrentVideoFrame; + DWORD dwCurrentVideoFramesDropped; + DWORD dwCurrentWaveSamples; + DWORD dwCurrentTimeElapsedMS; + HPALETTE hPalCurrent; + BOOL fCapturingNow; + DWORD dwReturn; + UINT wNumVideoAllocated; + UINT wNumAudioAllocated; +} +alias CAPSTATUS* PCAPSTATUS, LPCAPSTATUS; + +struct CAPTUREPARMS { + DWORD dwRequestMicroSecPerFrame; + BOOL fMakeUserHitOKToCapture; + UINT wPercentDropForError; + BOOL fYield; + DWORD dwIndexSize; + UINT wChunkGranularity; + BOOL fUsingDOSMemory; + UINT wNumVideoRequested; + BOOL fCaptureAudio; + UINT wNumAudioRequested; + UINT vKeyAbort; + BOOL fAbortLeftMouse; + BOOL fAbortRightMouse; + BOOL fLimitEnabled; + UINT wTimeLimit; + BOOL fMCIControl; + BOOL fStepMCIDevice; + DWORD dwMCIStartTime; + DWORD dwMCIStopTime; + BOOL fStepCaptureAt2x; + UINT wStepCaptureAverageFrames; + DWORD dwAudioBufferSize; + BOOL fDisableWriteCache; + UINT AVStreamMaster; +} +alias CAPTUREPARMS* PCAPTUREPARMS, LPCAPTUREPARMS; + +const AVSTREAMMASTER_AUDIO = 0; +const AVSTREAMMASTER_NONE = 1; + +struct CAPINFOCHUNK { + FOURCC fccInfoID; + LPVOID lpData; + LONG cbData; +} +alias CAPINFOCHUNK* PCAPINFOCHUNK, LPCAPINFOCHUNK; + +// Callback Definitions + +extern (Windows) { + alias LRESULT function(HWND hWnd) CAPYIELDCALLBACK; + alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPSTATUSCALLBACKW; + alias LRESULT function(HWND hWnd, int nID, LPCWSTR lpsz) CAPERRORCALLBACKW; + alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPSTATUSCALLBACKA; + alias LRESULT function(HWND hWnd, int nID, LPCSTR lpsz) CAPERRORCALLBACKA; +} + +version(Unicode) { + alias CAPSTATUSCALLBACKW CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKW CAPERRORCALLBACK; +} else { // Unicode + alias CAPSTATUSCALLBACKA CAPSTATUSCALLBACK; + alias CAPERRORCALLBACKA CAPERRORCALLBACK; +} + +extern (Windows) { + alias LRESULT function(HWND hWnd, LPVIDEOHDR lpVHdr) CAPVIDEOCALLBACK; + alias LRESULT function(HWND hWnd, LPWAVEHDR lpWHdr) CAPWAVECALLBACK; + alias LRESULT function(HWND hWnd, int nState) CAPCONTROLCALLBACK; +} + +// CapControlCallback states +const CONTROLCALLBACK_PREROLL = 1; +const CONTROLCALLBACK_CAPTURING = 2; + +extern (Windows) { + HWND capCreateCaptureWindowA(LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); + BOOL capGetDriverDescriptionA(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer); + HWND capCreateCaptureWindowW(LPCWSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID); + BOOL capGetDriverDescriptionW(UINT wDriverIndex, LPWSTR lpszName, int cbName, LPWSTR lpszVer, int cbVer); +} + +version(Unicode) { + alias capCreateCaptureWindowW capCreateCaptureWindow; + alias capGetDriverDescriptionW capGetDriverDescription; +} else { // Unicode + alias capCreateCaptureWindowA capCreateCaptureWindow; + alias capGetDriverDescriptionA capGetDriverDescription; +} + +// New Information chunk IDs +const infotypeDIGITIZATION_TIME = mmioFOURCC!('I', 'D', 'I', 'T'); +const infotypeSMPTE_TIME = mmioFOURCC!('I', 'S', 'M', 'P'); + +// status and error callbacks +enum { + IDS_CAP_BEGIN = 300, + IDS_CAP_END = 301, + + IDS_CAP_INFO = 401, + IDS_CAP_OUTOFMEM = 402, + IDS_CAP_FILEEXISTS = 403, + IDS_CAP_ERRORPALOPEN = 404, + IDS_CAP_ERRORPALSAVE = 405, + IDS_CAP_ERRORDIBSAVE = 406, + IDS_CAP_DEFAVIEXT = 407, + IDS_CAP_DEFPALEXT = 408, + IDS_CAP_CANTOPEN = 409, + IDS_CAP_SEQ_MSGSTART = 410, + IDS_CAP_SEQ_MSGSTOP = 411, + + IDS_CAP_VIDEDITERR = 412, + IDS_CAP_READONLYFILE = 413, + IDS_CAP_WRITEERROR = 414, + IDS_CAP_NODISKSPACE = 415, + IDS_CAP_SETFILESIZE = 416, + IDS_CAP_SAVEASPERCENT = 417, + + IDS_CAP_DRIVER_ERROR = 418, + + IDS_CAP_WAVE_OPEN_ERROR = 419, + IDS_CAP_WAVE_ALLOC_ERROR = 420, + IDS_CAP_WAVE_PREPARE_ERROR = 421, + IDS_CAP_WAVE_ADD_ERROR = 422, + IDS_CAP_WAVE_SIZE_ERROR = 423, + + IDS_CAP_VIDEO_OPEN_ERROR = 424, + IDS_CAP_VIDEO_ALLOC_ERROR = 425, + IDS_CAP_VIDEO_PREPARE_ERROR = 426, + IDS_CAP_VIDEO_ADD_ERROR = 427, + IDS_CAP_VIDEO_SIZE_ERROR = 428, + + IDS_CAP_FILE_OPEN_ERROR = 429, + IDS_CAP_FILE_WRITE_ERROR = 430, + IDS_CAP_RECORDING_ERROR = 431, + IDS_CAP_RECORDING_ERROR2 = 432, + IDS_CAP_AVI_INIT_ERROR = 433, + IDS_CAP_NO_FRAME_CAP_ERROR = 434, + IDS_CAP_NO_PALETTE_WARN = 435, + IDS_CAP_MCI_CONTROL_ERROR = 436, + IDS_CAP_MCI_CANT_STEP_ERROR = 437, + IDS_CAP_NO_AUDIO_CAP_ERROR = 438, + IDS_CAP_AVI_DRAWDIB_ERROR = 439, + IDS_CAP_COMPRESSOR_ERROR = 440, + IDS_CAP_AUDIO_DROP_ERROR = 441, + IDS_CAP_AUDIO_DROP_COMPERROR = 442, + + IDS_CAP_STAT_LIVE_MODE = 500, + IDS_CAP_STAT_OVERLAY_MODE = 501, + IDS_CAP_STAT_CAP_INIT = 502, + IDS_CAP_STAT_CAP_FINI = 503, + IDS_CAP_STAT_PALETTE_BUILD = 504, + IDS_CAP_STAT_OPTPAL_BUILD = 505, + IDS_CAP_STAT_I_FRAMES = 506, + IDS_CAP_STAT_L_FRAMES = 507, + IDS_CAP_STAT_CAP_L_FRAMES = 508, + IDS_CAP_STAT_CAP_AUDIO = 509, + IDS_CAP_STAT_VIDEOCURRENT = 510, + IDS_CAP_STAT_VIDEOAUDIO = 511, + IDS_CAP_STAT_VIDEOONLY = 512, + IDS_CAP_STAT_FRAMESDROPPED = 513, +} + +/** + * FilePreview dialog. + */ + +extern (Windows) { + BOOL GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn); + BOOL GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn); + BOOL GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn); + BOOL GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn); +} + +version(Unicode) { + alias GetOpenFileNamePreviewW GetOpenFileNamePreview; + alias GetSaveFileNamePreviewW GetSaveFileNamePreview; +} else { // Unicode + alias GetOpenFileNamePreviewA GetOpenFileNamePreview; + alias GetSaveFileNamePreviewA GetSaveFileNamePreview; } Index: src/win32/w32api.d ================================================================== --- src/win32/w32api.d +++ src/win32/w32api.d @@ -1,106 +1,93 @@ /***********************************************************************\ * w32api.d * * * * Windows API header module * * * -* Translated from MinGW API for MS-Windows 3.12 * +* Translated from MinGW API for MS-Windows 4.0 * * by Stewart Gordon * * * * Placed into public domain * \***********************************************************************/ module win32.w32api; -const __W32API_VERSION = 3.12; -const __W32API_MAJOR_VERSION = 3; -const __W32API_MINOR_VERSION = 12; +enum __W32API_VERSION = 3.17; +enum __W32API_MAJOR_VERSION = 3; +enum __W32API_MINOR_VERSION = 17; -/* These version identifiers are used to specify the minimum version of - * Windows that an application will support. +/* These version identifiers are used to specify the minimum version of Windows that an + * application will support. * - * The programmer should set two version identifiers: one for the - * minimum Windows NT version and one for the minimum Windows 9x - * version. If no Windows NT version is specified, Windows NT 4 is - * assumed. If no Windows 9x version is specified, Windows 95 is - * assumed, unless WindowsNTonly, WindowsXP, Windows2003 or WindowsVista - * is specified, implying that the application supports only the NT line of - * versions. + * Previously the minimum Windows 9x and Windows NT versions could be specified. However, since + * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been + * removed in order to simplify the bindings. */ - -/* For Windows XP and later, assume no Windows 9x support. - * API features new to Windows Vista are not yet included in this - * translation or in MinGW, but this is here ready to start adding them. - */ -version (WindowsVista) { - const uint - _WIN32_WINNT = 0x600, - _WIN32_WINDOWS = uint.max; - -} else version (Windows2003) { - const uint - _WIN32_WINNT = 0x502, - _WIN32_WINDOWS = uint.max; - + version (Windows10) { + enum uint _WIN32_WINNT = 0x604; +} else version (Windows8_1) { // also Windows2012R2 + enum uint _WIN32_WINNT = 0x603; +} else version (Windows8) { // also Windows2012 + enum uint _WIN32_WINNT = 0x602; +} else version (Windows7) { // also Windows2008R2 + enum uint _WIN32_WINNT = 0x601; +} else version (WindowsVista) { // also Windows2008 + enum uint _WIN32_WINNT = 0x600; +} else version (Windows2003) { // also WindowsHomeServer, WindowsXP64 + enum uint _WIN32_WINNT = 0x502; } else version (WindowsXP) { - const uint - _WIN32_WINNT = 0x501, - _WIN32_WINDOWS = uint.max; + enum uint _WIN32_WINNT = 0x501; +} else version (Windows2000) { + enum uint _WIN32_WINNT = 0x500; +} else { + enum uint _WIN32_WINNT = 0x501; +} +version (IE10) { + enum uint _WIN32_IE = 0xA00; +} else version (IE9) { + enum uint _WIN32_IE = 0x900; +} else version (IE8) { + enum uint _WIN32_IE = 0x800; +} else version (IE7) { + enum uint _WIN32_IE = 0x700; +} else version (IE602) { + enum uint _WIN32_IE = 0x603; +} else version (IE601) { + enum uint _WIN32_IE = 0x601; +} else version (IE6) { + enum uint _WIN32_IE = 0x600; +} else version (IE56) { + enum uint _WIN32_IE = 0x560; +} else version (IE501) { + enum uint _WIN32_IE = 0x501; +} else version (IE5) { + enum uint _WIN32_IE = 0x500; +} else version (IE401) { + enum uint _WIN32_IE = 0x401; +} else version (IE4) { + enum uint _WIN32_IE = 0x400; +} else version (IE3) { + enum uint _WIN32_IE = 0x300; +} else static if (_WIN32_WINNT >= 0x410) { + enum uint _WIN32_IE = 0x400; } else { - /* for earlier Windows versions, separate version identifiers into - * the NT and 9x lines - */ - version (Windows2000) { - const uint _WIN32_WINNT = 0x500; - } else { - const uint _WIN32_WINNT = 0x400; - } + enum uint _WIN32_IE = 0; +} - version (WindowsNTonly) { - const uint _WIN32_WINDOWS = uint.max; - } else version (WindowsME) { - const uint _WIN32_WINDOWS = 0x500; - } else version (Windows98) { - const uint _WIN32_WINDOWS = 0x410; - } else { - const uint _WIN32_WINDOWS = 0x400; +debug (WindowsUnitTest) { + unittest { + printf("Windows NT version: %03x\n", _WIN32_WINNT); + printf("IE version: %03x\n", _WIN32_IE); } } -// Just a bit of syntactic sugar for the static ifs -const uint WINVER = _WIN32_WINDOWS < _WIN32_WINNT ? - _WIN32_WINDOWS : _WIN32_WINNT; -const bool _WIN32_WINNT_ONLY = _WIN32_WINDOWS == uint.max; - -version (IE7) { - const uint _WIN32_IE = 0x700; -} else version (IE602) { - const uint _WIN32_IE = 0x603; -} else version (IE601) { - const uint _WIN32_IE = 0x601; -} else version (IE6) { - const uint _WIN32_IE = 0x600; -} else version (IE56) { - const uint _WIN32_IE = 0x560; -} else version (IE501) { - const uint _WIN32_IE = 0x501; -} else version (IE5) { - const uint _WIN32_IE = 0x500; -} else version (IE401) { - const uint _WIN32_IE = 0x401; -} else version (IE4) { - const uint _WIN32_IE = 0x400; -} else version (IE3) { - const uint _WIN32_IE = 0x300; -} else static if (WINVER >= 0x410) { - const uint _WIN32_IE = 0x400; +version (Unicode) { + enum bool _WIN32_UNICODE = true; + package template DECLARE_AW(string name) { + mixin("alias " ~ name ~ "W " ~ name ~ ";"); + } } else { - const uint _WIN32_IE = 0; -} - -debug (WindowsUnitTest) { - unittest { - printf("Windows NT version: %03x\n", _WIN32_WINNT); - printf("Windows 9x version: %03x\n", _WIN32_WINDOWS); - printf("IE version: %03x\n", _WIN32_IE); + enum bool _WIN32_UNICODE = false; + package template DECLARE_AW(string name) { + mixin("alias " ~ name ~ "A " ~ name ~ ";"); } } Index: src/win32/winbase.d ================================================================== --- src/win32/winbase.d +++ src/win32/winbase.d @@ -1,2820 +1,2799 @@ -/***********************************************************************\ -* winbase.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winbase; -pragma(lib, "kernel32.lib"); - -/** -Translation Notes: -The following macros are obsolete, and have no effect. - -LockSegment(w), MakeProcInstance(p, i), UnlockResource(h), UnlockSegment(w) -FreeModule(m), FreeProcInstance(p), GetFreeSpace(w), DefineHandleTable(w) -SetSwapAreaSize(w), LimitEmsPages(n), Yield() - -// The following Win16 functions are obselete in Win32. - - int _hread(HFILE, LPVOID, int); - int _hwrite(HFILE, LPCSTR, int); - HFILE _lclose(HFILE); - HFILE _lcreat(LPCSTR, int); - LONG _llseek(HFILE, LONG, int); - HFILE _lopen(LPCSTR, int); - UINT _lread(HFILE, LPVOID, UINT); - UINT _lwrite(HFILE, LPCSTR, UINT); - SIZE_T GlobalCompact(DWORD); - VOID GlobalFix(HGLOBAL); -* MSDN contradicts itself on GlobalFlags: -* "This function is provided only for compatibility with 16-bit versions of Windows." -* but also requires Windows 2000 or above - UINT GlobalFlags(HGLOBAL); - VOID GlobalUnfix(HGLOBAL); - BOOL GlobalUnWire(HGLOBAL); - PVOID GlobalWire(HGLOBAL); - SIZE_T LocalCompact(UINT); - UINT LocalFlags(HLOCAL); - SIZE_T LocalShrink(HLOCAL, UINT); - -// These are not required for DMD. - -//FIXME: -// #ifndef UNDER_CE - int WinMain(HINSTANCE, HINSTANCE, LPSTR, int); -#else - int WinMain(HINSTANCE, HINSTANCE, LPWSTR, int); -#endif -int wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); - -*/ - -import win32.windef, win32.winver; -private import win32.basetyps, win32.w32api, win32.winnt; - -// FIXME: -alias void va_list; - - -/+ -//-------------------------------------- -// These functions are problematic - -version(UseNtoSKernel) {}else { - /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h - as __fastcall functions, but are exported from kernel32.dll as __stdcall */ - static if (_WIN32_WINNT >= 0x0501) { - VOID InitializeSListHead(PSLIST_HEADER); - } - LONG InterlockedCompareExchange(LPLONG, LONG, LONG); - // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); - (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) - LONG InterlockedDecrement(LPLONG); - LONG InterlockedExchange(LPLONG, LONG); - // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); - (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) - LONG InterlockedExchangeAdd(LPLONG, LONG); - - static if (_WIN32_WINNT >= 0x0501) { - PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); - } - LONG InterlockedIncrement(LPLONG); - static if (_WIN32_WINNT >= 0x0501) { - PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); - PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); - } -} // #endif // __USE_NTOSKRNL__ -//-------------------------------------- -+/ - -// COMMPROP structure, used by GetCommProperties() -// ----------------------------------------------- - -// Communications provider type -enum : DWORD { - PST_UNSPECIFIED, - PST_RS232, - PST_PARALLELPORT, - PST_RS422, - PST_RS423, - PST_RS449, - PST_MODEM, // = 6 - PST_FAX = 0x0021, - PST_SCANNER = 0x0022, - PST_NETWORK_BRIDGE = 0x0100, - PST_LAT = 0x0101, - PST_TCPIP_TELNET = 0x0102, - PST_X25 = 0x0103 -} - -// Max baud rate -enum : DWORD { - BAUD_075 = 0x00000001, - BAUD_110 = 0x00000002, - BAUD_134_5 = 0x00000004, - BAUD_150 = 0x00000008, - BAUD_300 = 0x00000010, - BAUD_600 = 0x00000020, - BAUD_1200 = 0x00000040, - BAUD_1800 = 0x00000080, - BAUD_2400 = 0x00000100, - BAUD_4800 = 0x00000200, - BAUD_7200 = 0x00000400, - BAUD_9600 = 0x00000800, - BAUD_14400 = 0x00001000, - BAUD_19200 = 0x00002000, - BAUD_38400 = 0x00004000, - BAUD_56K = 0x00008000, - BAUD_128K = 0x00010000, - BAUD_115200 = 0x00020000, - BAUD_57600 = 0x00040000, - BAUD_USER = 0x10000000 -} - -// Comm capabilities -enum : DWORD { - PCF_DTRDSR = 0x0001, - PCF_RTSCTS = 0x0002, - PCF_RLSD = 0x0004, - PCF_PARITY_CHECK = 0x0008, - PCF_XONXOFF = 0x0010, - PCF_SETXCHAR = 0x0020, - PCF_TOTALTIMEOUTS = 0x0040, - PCF_INTTIMEOUTS = 0x0080, - PCF_SPECIALCHARS = 0x0100, - PCF_16BITMODE = 0x0200 -} - -enum : DWORD { - SP_PARITY = 1, - SP_BAUD = 2, - SP_DATABITS = 4, - SP_STOPBITS = 8, - SP_HANDSHAKING = 16, - SP_PARITY_CHECK = 32, - SP_RLSD = 64 -} - -enum : DWORD { - DATABITS_5 = 1, - DATABITS_6 = 2, - DATABITS_7 = 4, - DATABITS_8 = 8, - DATABITS_16 = 16, - DATABITS_16X = 32 -} - -enum : WORD { - STOPBITS_10 = 0x0001, - STOPBITS_15 = 0x0002, - STOPBITS_20 = 0x0004, - PARITY_NONE = 0x0100, - PARITY_ODD = 0x0200, - PARITY_EVEN = 0x0400, - PARITY_MARK = 0x0800, - PARITY_SPACE = 0x1000 -} - -// used by dwServiceMask -const SP_SERIALCOMM = 1; - -struct COMMPROP { - WORD wPacketLength; - WORD wPacketVersion; - DWORD dwServiceMask; - DWORD dwReserved1; - DWORD dwMaxTxQueue; - DWORD dwMaxRxQueue; - DWORD dwMaxBaud; - DWORD dwProvSubType; - DWORD dwProvCapabilities; - DWORD dwSettableParams; - DWORD dwSettableBaud; - WORD wSettableData; - WORD wSettableStopParity; - DWORD dwCurrentTxQueue; - DWORD dwCurrentRxQueue; - DWORD dwProvSpec1; - DWORD dwProvSpec2; - WCHAR _wcProvChar; - - WCHAR* wcProvChar() { return &_wcProvChar; } -} -alias COMMPROP* LPCOMMPROP; - -// ---------- - -// for DEBUG_EVENT -enum : DWORD { - EXCEPTION_DEBUG_EVENT = 1, - CREATE_THREAD_DEBUG_EVENT, - CREATE_PROCESS_DEBUG_EVENT, - EXIT_THREAD_DEBUG_EVENT, - EXIT_PROCESS_DEBUG_EVENT, - LOAD_DLL_DEBUG_EVENT, - UNLOAD_DLL_DEBUG_EVENT, - OUTPUT_DEBUG_STRING_EVENT, - RIP_EVENT -} - -const HFILE HFILE_ERROR = cast(HFILE) (-1); - -// for SetFilePointer() -enum : DWORD { - FILE_BEGIN = 0, - FILE_CURRENT = 1, - FILE_END = 2 -} -const DWORD INVALID_SET_FILE_POINTER = -1; - - -// for OpenFile() -deprecated enum : UINT { - OF_READ = 0, - OF_WRITE = 0x0001, - OF_READWRITE = 0x0002, - OF_SHARE_COMPAT = 0, - OF_SHARE_EXCLUSIVE = 0x0010, - OF_SHARE_DENY_WRITE = 0x0020, - OF_SHARE_DENY_READ = 0x0030, - OF_SHARE_DENY_NONE = 0x0040, - OF_PARSE = 0x0100, - OF_DELETE = 0x0200, - OF_VERIFY = 0x0400, - OF_CANCEL = 0x0800, - OF_CREATE = 0x1000, - OF_PROMPT = 0x2000, - OF_EXIST = 0x4000, - OF_REOPEN = 0x8000 -} - -enum : DWORD { - NMPWAIT_NOWAIT = 1, - NMPWAIT_WAIT_FOREVER = -1, - NMPWAIT_USE_DEFAULT_WAIT = 0 -} - -// for ClearCommError() -const DWORD - CE_RXOVER = 0x0001, - CE_OVERRUN = 0x0002, - CE_RXPARITY = 0x0004, - CE_FRAME = 0x0008, - CE_BREAK = 0x0010, - CE_TXFULL = 0x0100, - CE_PTO = 0x0200, - CE_IOE = 0x0400, - CE_DNS = 0x0800, - CE_OOP = 0x1000, - CE_MODE = 0x8000; - -// for CopyProgressRoutine callback. -enum : DWORD { - PROGRESS_CONTINUE = 0, - PROGRESS_CANCEL = 1, - PROGRESS_STOP = 2, - PROGRESS_QUIET = 3 -} - -enum : DWORD { - CALLBACK_CHUNK_FINISHED = 0, - CALLBACK_STREAM_SWITCH = 1 -} - -// CopyFileEx() -enum : DWORD { - COPY_FILE_FAIL_IF_EXISTS = 1, - COPY_FILE_RESTARTABLE = 2 -} - -enum : DWORD { - FILE_MAP_COPY = 1, - FILE_MAP_WRITE = 2, - FILE_MAP_READ = 4, - FILE_MAP_ALL_ACCESS = 0x000F001F -} - -enum : DWORD { - MUTEX_ALL_ACCESS = 0x001f0001, - MUTEX_MODIFY_STATE = 0x00000001, - SEMAPHORE_ALL_ACCESS = 0x001f0003, - SEMAPHORE_MODIFY_STATE = 0x00000002, - EVENT_ALL_ACCESS = 0x001f0003, - EVENT_MODIFY_STATE = 0x00000002 -} - -// CreateNamedPipe() -enum : DWORD { - PIPE_ACCESS_INBOUND = 1, - PIPE_ACCESS_OUTBOUND = 2, - PIPE_ACCESS_DUPLEX = 3 -} - -const DWORD - PIPE_TYPE_BYTE = 0, - PIPE_TYPE_MESSAGE = 4, - PIPE_READMODE_BYTE = 0, - PIPE_READMODE_MESSAGE = 2, - PIPE_WAIT = 0, - PIPE_NOWAIT = 1; - -// GetNamedPipeInfo() -const DWORD - PIPE_CLIENT_END = 0, - PIPE_SERVER_END = 1; - -const DWORD PIPE_UNLIMITED_INSTANCES = 255; - -// dwCreationFlags for CreateProcess() and CreateProcessAsUser() -enum : DWORD { - DEBUG_PROCESS = 0x00000001, - DEBUG_ONLY_THIS_PROCESS = 0x00000002, - CREATE_SUSPENDED = 0x00000004, - DETACHED_PROCESS = 0x00000008, - CREATE_NEW_CONSOLE = 0x00000010, - NORMAL_PRIORITY_CLASS = 0x00000020, - IDLE_PRIORITY_CLASS = 0x00000040, - HIGH_PRIORITY_CLASS = 0x00000080, - REALTIME_PRIORITY_CLASS = 0x00000100, - CREATE_NEW_PROCESS_GROUP = 0x00000200, - CREATE_UNICODE_ENVIRONMENT = 0x00000400, - CREATE_SEPARATE_WOW_VDM = 0x00000800, - CREATE_SHARED_WOW_VDM = 0x00001000, - CREATE_FORCEDOS = 0x00002000, - BELOW_NORMAL_PRIORITY_CLASS = 0x00004000, - ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000, - CREATE_BREAKAWAY_FROM_JOB = 0x01000000, - CREATE_WITH_USERPROFILE = 0x02000000, - CREATE_DEFAULT_ERROR_MODE = 0x04000000, - CREATE_NO_WINDOW = 0x08000000, - PROFILE_USER = 0x10000000, - PROFILE_KERNEL = 0x20000000, - PROFILE_SERVER = 0x40000000 -} - -const DWORD CONSOLE_TEXTMODE_BUFFER = 1; - -// CreateFile() -enum : DWORD { - CREATE_NEW = 1, - CREATE_ALWAYS, - OPEN_EXISTING, - OPEN_ALWAYS, - TRUNCATE_EXISTING -} - -// CreateFile() -const DWORD - FILE_FLAG_WRITE_THROUGH = 0x80000000, - FILE_FLAG_OVERLAPPED = 0x40000000, - FILE_FLAG_NO_BUFFERING = 0x20000000, - FILE_FLAG_RANDOM_ACCESS = 0x10000000, - FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, - FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, - FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, - FILE_FLAG_POSIX_SEMANTICS = 0x01000000, - FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, - FILE_FLAG_OPEN_NO_RECALL = 0x00100000; - -static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; -} - -// for CreateFile() -const DWORD - SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, - SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, - SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, - SECURITY_DELEGATION = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, - SECURITY_CONTEXT_TRACKING = 0x00040000, - SECURITY_EFFECTIVE_ONLY = 0x00080000, - SECURITY_SQOS_PRESENT = 0x00100000, - SECURITY_VALID_SQOS_FLAGS = 0x001F0000; - - -// Thread exit code -const DWORD STILL_ACTIVE = 0x103; - -/* ??? The only documentation of this seems to be about Windows CE and to - * state what _doesn't_ support it. - */ -const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; - -// GetBinaryType() -enum : DWORD { - SCS_32BIT_BINARY = 0, - SCS_DOS_BINARY, - SCS_WOW_BINARY, - SCS_PIF_BINARY, - SCS_POSIX_BINARY, - SCS_OS216_BINARY -} - -const size_t - MAX_COMPUTERNAME_LENGTH = 15, - HW_PROFILE_GUIDLEN = 39, - MAX_PROFILE_LEN = 80; - -// HW_PROFILE_INFO -const DWORD - DOCKINFO_UNDOCKED = 1, - DOCKINFO_DOCKED = 2, - DOCKINFO_USER_SUPPLIED = 4, - DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, - DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; - -// DriveType(), RealDriveType() -enum : int { - DRIVE_UNKNOWN = 0, - DRIVE_NO_ROOT_DIR, - DRIVE_REMOVABLE, - DRIVE_FIXED, - DRIVE_REMOTE, - DRIVE_CDROM, - DRIVE_RAMDISK -} - -// GetFileType() -enum : DWORD { - FILE_TYPE_UNKNOWN = 0, - FILE_TYPE_DISK, - FILE_TYPE_CHAR, - FILE_TYPE_PIPE, - FILE_TYPE_REMOTE = 0x8000 -} - -// Get/SetHandleInformation() -const DWORD - HANDLE_FLAG_INHERIT = 0x01, - HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; - -enum : DWORD { - STD_INPUT_HANDLE = 0xFFFFFFF6, - STD_OUTPUT_HANDLE = 0xFFFFFFF5, - STD_ERROR_HANDLE = 0xFFFFFFF4 -} - -const HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) (-1); - -enum : DWORD { - GET_TAPE_MEDIA_INFORMATION = 0, - GET_TAPE_DRIVE_INFORMATION = 1 -} - -enum : DWORD { - SET_TAPE_MEDIA_INFORMATION = 0, - SET_TAPE_DRIVE_INFORMATION = 1 -} - -// SetThreadPriority()/GetThreadPriority() -enum : int { - THREAD_PRIORITY_IDLE = -15, - THREAD_PRIORITY_LOWEST = -2, - THREAD_PRIORITY_BELOW_NORMAL = -1, - THREAD_PRIORITY_NORMAL = 0, - THREAD_PRIORITY_ABOVE_NORMAL = 1, - THREAD_PRIORITY_HIGHEST = 2, - THREAD_PRIORITY_TIME_CRITICAL = 15, - THREAD_PRIORITY_ERROR_RETURN = 2147483647 -} - -enum : DWORD { - TIME_ZONE_ID_UNKNOWN, - TIME_ZONE_ID_STANDARD, - TIME_ZONE_ID_DAYLIGHT, - TIME_ZONE_ID_INVALID = 0xFFFFFFFF -} - -const DWORD - FS_CASE_SENSITIVE = 1, - FS_CASE_IS_PRESERVED = 2, - FS_UNICODE_STORED_ON_DISK = 4, - FS_PERSISTENT_ACLS = 8, - FS_FILE_COMPRESSION = 16, - FS_VOL_IS_COMPRESSED = 32768; - -// Flags for GlobalAlloc -const UINT - GMEM_FIXED = 0, - GMEM_MOVEABLE = 0x0002, - GMEM_ZEROINIT = 0x0040, - GPTR = 0x0040, - GHND = 0x0042, - GMEM_MODIFY = 0x0080, // used only for GlobalRealloc - GMEM_VALID_FLAGS = 0x7F72; - -/+ // Obselete flags (Win16 only) - GMEM_NOCOMPACT=16; - GMEM_NODISCARD=32; - GMEM_DISCARDABLE=256; - GMEM_NOT_BANKED=4096; - GMEM_LOWER=4096; - GMEM_SHARE=8192; - GMEM_DDESHARE=8192; - - GMEM_LOCKCOUNT=255; - -// for GlobalFlags() - GMEM_DISCARDED = 16384; - GMEM_INVALID_HANDLE = 32768; - - GMEM_NOTIFY = 16384; -+/ - -const UINT - LMEM_FIXED = 0, - LMEM_MOVEABLE = 0x0002, - LMEM_NONZEROLPTR = 0, - NONZEROLPTR = 0, - LMEM_NONZEROLHND = 0x0002, - NONZEROLHND = 0x0002, - LMEM_DISCARDABLE = 0x0F00, - LMEM_NOCOMPACT = 0x0010, - LMEM_NODISCARD = 0x0020, - LMEM_ZEROINIT = 0x0040, - LPTR = 0x0040, - LHND = 0x0042, - LMEM_MODIFY = 0x0080, - LMEM_LOCKCOUNT = 0x00FF, - LMEM_DISCARDED = 0x4000, - LMEM_INVALID_HANDLE = 0x8000; - - - -// used in EXCEPTION_RECORD -enum : DWORD { - STATUS_WAIT_0 = 0, - STATUS_ABANDONED_WAIT_0 = 0x00000080, - STATUS_USER_APC = 0x000000C0, - STATUS_TIMEOUT = 0x00000102, - STATUS_PENDING = 0x00000103, - - STATUS_SEGMENT_NOTIFICATION = 0x40000005, - STATUS_GUARD_PAGE_VIOLATION = 0x80000001, - STATUS_DATATYPE_MISALIGNMENT = 0x80000002, - STATUS_BREAKPOINT = 0x80000003, - STATUS_SINGLE_STEP = 0x80000004, - - STATUS_ACCESS_VIOLATION = 0xC0000005, - STATUS_IN_PAGE_ERROR = 0xC0000006, - STATUS_INVALID_HANDLE = 0xC0000008, - - STATUS_NO_MEMORY = 0xC0000017, - 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, - STATUS_DLL_INIT_FAILED = 0xC0000142, - STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, - - CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT, - - EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION, - EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT, - EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT, - EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP, - EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED, - EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND, - EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO, - EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT, - EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION, - EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW, - EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK, - EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW, - EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO, - EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW, - EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION, - EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR, - EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION, - EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION, - EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW, - EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION, - EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION, - EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE -} - -// for PROCESS_HEAP_ENTRY -const WORD - PROCESS_HEAP_REGION = 1, - PROCESS_HEAP_UNCOMMITTED_RANGE = 2, - PROCESS_HEAP_ENTRY_BUSY = 4, - PROCESS_HEAP_ENTRY_MOVEABLE = 16, - PROCESS_HEAP_ENTRY_DDESHARE = 32; - -// for LoadLibraryEx() -const DWORD - DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier - LOAD_LIBRARY_AS_DATAFILE = 0x02, - LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, - LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later - -// for LockFile() -const DWORD - LOCKFILE_FAIL_IMMEDIATELY = 1, - LOCKFILE_EXCLUSIVE_LOCK = 2; - -const MAXIMUM_WAIT_OBJECTS = 64; -const MAXIMUM_SUSPEND_COUNT = 0x7F; - -const WAIT_OBJECT_0 = 0; -const WAIT_ABANDONED_0 = 128; - -//const WAIT_TIMEOUT=258; // also in winerror.h - -enum : DWORD { - WAIT_IO_COMPLETION = 0x000000C0, - WAIT_ABANDONED = 0x00000080, - WAIT_FAILED = 0xFFFFFFFF -} - -// PurgeComm() -const DWORD - PURGE_TXABORT = 1, - PURGE_RXABORT = 2, - PURGE_TXCLEAR = 4, - PURGE_RXCLEAR = 8; - -// ReadEventLog() -const DWORD - EVENTLOG_SEQUENTIAL_READ = 1, - EVENTLOG_SEEK_READ = 2, - EVENTLOG_FORWARDS_READ = 4, - EVENTLOG_BACKWARDS_READ = 8; - -// ReportEvent() -enum : WORD { - EVENTLOG_SUCCESS = 0, - EVENTLOG_ERROR_TYPE = 1, - EVENTLOG_WARNING_TYPE = 2, - EVENTLOG_INFORMATION_TYPE = 4, - EVENTLOG_AUDIT_SUCCESS = 8, - EVENTLOG_AUDIT_FAILURE = 16 -} - -// FormatMessage() -const DWORD - FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, - FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, - FORMAT_MESSAGE_FROM_STRING = 0x0400, - FORMAT_MESSAGE_FROM_HMODULE = 0x0800, - FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, - FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; - -const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; - -// also in ddk/ntapi.h -// To restore default error mode, call SetErrorMode(0) -enum { - SEM_FAILCRITICALERRORS = 0x0001, - SEM_NOGPFAULTERRORBOX = 0x0002, - SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, - SEM_NOOPENFILEERRORBOX = 0x8000 -} -// end ntapi.h - -enum { - SLE_ERROR = 1, - SLE_MINORERROR, - SLE_WARNING -} - -const SHUTDOWN_NORETRY = 1; - -// Return type for exception filters. -enum : LONG { - EXCEPTION_EXECUTE_HANDLER = 1, - EXCEPTION_CONTINUE_EXECUTION = -1, - EXCEPTION_CONTINUE_SEARCH = 0 -} - -enum : ATOM { - MAXINTATOM = 0xC000, - INVALID_ATOM = 0 -} - -const IGNORE = 0; -const INFINITE = 0xFFFFFFFF; - -// EscapeCommFunction() -enum { - SETXOFF = 1, - SETXON, - SETRTS, - CLRRTS, - SETDTR, - CLRDTR, // = 6 - SETBREAK = 8, - CLRBREAK = 9 -} - - -// for SetCommMask() -const DWORD - EV_RXCHAR = 0x0001, - EV_RXFLAG = 0x0002, - EV_TXEMPTY = 0x0004, - EV_CTS = 0x0008, - EV_DSR = 0x0010, - EV_RLSD = 0x0020, - EV_BREAK = 0x0040, - EV_ERR = 0x0080, - EV_RING = 0x0100, - EV_PERR = 0x0200, - EV_RX80FULL = 0x0400, - EV_EVENT1 = 0x0800, - EV_EVENT2 = 0x1000; - -// GetCommModemStatus() -const DWORD - MS_CTS_ON = 0x0010, - MS_DSR_ON = 0x0020, - MS_RING_ON = 0x0040, - MS_RLSD_ON = 0x0080; - - -// DCB -enum : BYTE { - NOPARITY = 0, - ODDPARITY, - EVENPARITY, - MARKPARITY, - SPACEPARITY -} -// DCB -enum : BYTE { - ONESTOPBIT = 0, - ONE5STOPBITS, - TWOSTOPBITS -} -// DCB -enum : DWORD { - 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 -} -// DCB, 2-bit bitfield -enum { - DTR_CONTROL_DISABLE = 0, - DTR_CONTROL_ENABLE, - DTR_CONTROL_HANDSHAKE -} - -// DCB, 2-bit bitfield -enum { - RTS_CONTROL_DISABLE = 0, - RTS_CONTROL_ENABLE, - RTS_CONTROL_HANDSHAKE, - RTS_CONTROL_TOGGLE, -} - -// WIN32_STREAM_ID -enum : DWORD { - BACKUP_INVALID = 0, - BACKUP_DATA, - BACKUP_EA_DATA, - BACKUP_SECURITY_DATA, - BACKUP_ALTERNATE_DATA, - BACKUP_LINK, - BACKUP_PROPERTY_DATA, - BACKUP_OBJECT_ID, - BACKUP_REPARSE_DATA, - BACKUP_SPARSE_BLOCK -} - -// WIN32_STREAM_ID -enum : DWORD { - STREAM_NORMAL_ATTRIBUTE = 0, - STREAM_MODIFIED_WHEN_READ = 1, - STREAM_CONTAINS_SECURITY = 2, - STREAM_CONTAINS_PROPERTIES = 4 -} - -// STARTUPINFO -const DWORD - STARTF_USESHOWWINDOW = 0x0001, - STARTF_USESIZE = 0x0002, - STARTF_USEPOSITION = 0x0004, - STARTF_USECOUNTCHARS = 0x0008, - STARTF_USEFILLATTRIBUTE = 0x0010, - STARTF_RUNFULLSCREEN = 0x0020, - STARTF_FORCEONFEEDBACK = 0x0040, - STARTF_FORCEOFFFEEDBACK = 0x0080, - STARTF_USESTDHANDLES = 0x0100, - STARTF_USEHOTKEY = 0x0200; - -// ??? -enum { - TC_NORMAL = 0, - TC_HARDERR = 1, - TC_GP_TRAP = 2, - TC_SIGNAL = 3 -} - -/+ These seem to be Windows CE-specific -enum { - AC_LINE_OFFLINE = 0, - AC_LINE_ONLINE = 1, - AC_LINE_BACKUP_POWER = 2, - AC_LINE_UNKNOWN = 255 -} - -enum { - BATTERY_FLAG_HIGH = 1, - BATTERY_FLAG_LOW = 2, - BATTERY_FLAG_CRITICAL = 4, - BATTERY_FLAG_CHARGING = 8, - BATTERY_FLAG_NO_BATTERY = 128, - BATTERY_FLAG_UNKNOWN = 255, - BATTERY_PERCENTAGE_UNKNOWN = 255, - BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF -} -+/ - -// ??? -const HINSTANCE_ERROR = 32; - -// returned from GetFileSize() -const DWORD INVALID_FILE_SIZE = 0xFFFFFFFF; - -const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; - -// GetWriteWatch() -const DWORD WRITE_WATCH_FLAG_RESET = 1; - -static if (_WIN32_WINNT_ONLY) { - // for LogonUser() - enum : DWORD { - LOGON32_LOGON_INTERACTIVE = 2, - LOGON32_LOGON_NETWORK = 3, - LOGON32_LOGON_BATCH = 4, - LOGON32_LOGON_SERVICE = 5, - LOGON32_LOGON_UNLOCK = 7 - } - - // for LogonUser() - enum : DWORD { - LOGON32_PROVIDER_DEFAULT, - LOGON32_PROVIDER_WINNT35, - LOGON32_PROVIDER_WINNT40, - LOGON32_PROVIDER_WINNT50 - } - - // for MoveFileEx() - const DWORD - MOVEFILE_REPLACE_EXISTING = 1, - MOVEFILE_COPY_ALLOWED = 2, - MOVEFILE_DELAY_UNTIL_REBOOT = 4, - MOVEFILE_WRITE_THROUGH = 8; - - // DefineDosDevice() - const DWORD - DDD_RAW_TARGET_PATH = 1, - DDD_REMOVE_DEFINITION = 2, - DDD_EXACT_MATCH_ON_REMOVE = 4; - - static if (_WIN32_WINNT >= 0x500) { - enum : DWORD { - LOGON32_LOGON_NETWORK_CLEARTEXT = 8, - LOGON32_LOGON_NEW_CREDENTIALS = 9 - } - - // ReplaceFile() - const DWORD - REPLACEFILE_WRITE_THROUGH = 1, - REPLACEFILE_IGNORE_MERGE_ERRORS = 2; - } - - static if (_WIN32_WINNT >= 0x501) { - const DWORD - GET_MODULE_HANDLE_EX_FLAG_PIN = 1, - GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, - GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; - - // for ACTCTX - const DWORD - ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, - ACTCTX_FLAG_LANGID_VALID = 0x02, - ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, - ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x08, - ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x10, - ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x20, - ACTCTX_FLAG_HMODULE_VALID = 0x80; - - // DeactivateActCtx() - const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; - // FindActCtxSectionString() - const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; - // QueryActCtxW() - const DWORD - QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, - QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, - QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; - - enum { - LOGON_WITH_PROFILE = 1, - LOGON_NETCREDENTIALS_ONLY - } - } -} - -// ---- - -struct FILETIME { - DWORD dwLowDateTime; - DWORD dwHighDateTime; -} -alias FILETIME* PFILETIME, LPFILETIME; - -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; - -struct DCB { - DWORD DCBlength = DCB.sizeof; - DWORD BaudRate; -/+ - DWORD fBinary:1; // Binary Mode (skip EOF check) - DWORD fParity:1; // Enable parity checking - DWORD fOutxCtsFlow:1; // CTS handshaking on output - DWORD fOutxDsrFlow:1; // DSR handshaking on output - DWORD fDtrControl:2; // DTR Flow control - DWORD fDsrSensitivity:1; // DSR Sensitivity - DWORD fTXContinueOnXoff:1; // Continue TX when Xoff sent - DWORD fOutX:1; // Enable output X-ON/X-OFF - DWORD fInX:1; // Enable input X-ON/X-OFF - DWORD fErrorChar:1; // Enable Err Replacement - DWORD fNull:1; // Enable Null stripping - DWORD fRtsControl:2; // Rts Flow control - DWORD fAbortOnError:1; // Abort all reads and writes on Error - DWORD fDummy2:17; // Reserved -+/ - uint _bf; - bool fBinary(bool f) { _bf = (_bf & ~0x0001) | f; return f; } - bool fParity(bool f) { _bf = (_bf & ~0x0002) | (f<<1); return f; } - bool fOutxCtsFlow(bool f) { _bf = (_bf & ~0x0004) | (f<<2); return f; } - bool fOutxDsrFlow(bool f) { _bf = (_bf & ~0x0008) | (f<<3); return f; } - byte fDtrControl(byte x) { _bf = (_bf & ~0x0030) | (x<<4); return cast(byte)(x & 3); } - bool fDsrSensitivity(bool f) { _bf = (_bf & ~0x0040) | (f<<6); return f; } - bool fTXContinueOnXoff(bool f) { _bf = (_bf & ~0x0080) | (f<<7); return f; } - bool fOutX(bool f) { _bf = (_bf & ~0x0100) | (f<<8); return f; } - bool fInX(bool f) { _bf = (_bf & ~0x0200) | (f<<9); return f; } - bool fErrorChar(bool f) { _bf = (_bf & ~0x0400) | (f<<10); return f; } - bool fNull(bool f) { _bf = (_bf & ~0x0800) | (f<<11); return f; } - byte fRtsControl(byte x) { _bf = (_bf & ~0x3000) | (x<<12); return cast(byte)(x & 3); } - bool fAbortOnError(bool f) { _bf = (_bf & ~0x4000) | (f<<14); return f; } - - bool fBinary() { return cast(bool) (_bf & 1); } - bool fParity() { return cast(bool) (_bf & 2); } - bool fOutxCtsFlow() { return cast(bool) (_bf & 4); } - bool fOutxDsrFlow() { return cast(bool) (_bf & 8); } - byte fDtrControl() { return cast(byte) ((_bf & (32+16))>>4); } - bool fDsrSensitivity() { return cast(bool) (_bf & 64); } - bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } - bool fOutX() { return cast(bool) (_bf & 256); } - bool fInX() { return cast(bool) (_bf & 512); } - bool fErrorChar() { return cast(bool) (_bf & 1024); } - bool fNull() { return cast(bool) (_bf & 2048); } - byte fRtsControl() { return cast(byte) ((_bf & (4096+8192))>>12); } - bool fAbortOnError() { return cast(bool) (_bf & 16384); } - - WORD wReserved; - WORD XonLim; - WORD XoffLim; - BYTE ByteSize; - BYTE Parity; - BYTE StopBits; - char XonChar; - char XoffChar; - char ErrorChar; - char EofChar; - char EvtChar; - WORD wReserved1; -} -alias DCB* LPDCB; - -struct COMMCONFIG { - DWORD dwSize = COMMCONFIG.sizeof; - WORD wVersion; - WORD wReserved; - DCB dcb; - DWORD dwProviderSubType; - DWORD dwProviderOffset; - DWORD dwProviderSize; - WCHAR _wcProviderData; - - WCHAR* wcProviderData() { return &_wcProviderData; } -} -alias COMMCONFIG* LPCOMMCONFIG; - -struct COMMTIMEOUTS { - DWORD ReadIntervalTimeout; - DWORD ReadTotalTimeoutMultiplier; - DWORD ReadTotalTimeoutConstant; - DWORD WriteTotalTimeoutMultiplier; - DWORD WriteTotalTimeoutConstant; -} -alias COMMTIMEOUTS* LPCOMMTIMEOUTS; - -struct COMSTAT { -/+ - DWORD fCtsHold:1; - DWORD fDsrHold:1; - DWORD fRlsdHold:1; - DWORD fXoffHold:1; - DWORD fXoffSent:1; - DWORD fEof:1; - DWORD fTxim:1; - DWORD fReserved:25; -+/ - DWORD _bf; - bool fCtsHold(bool f) { _bf = (_bf & ~1) | f; return f; } - bool fDsrHold(bool f) { _bf = (_bf & ~2) | (f<<1); return f; } - bool fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); return f; } - bool fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); return f; } - bool fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); return f; } - bool fEof(bool f) { _bf = (_bf & ~32) | (f<<5); return f; } - bool fTxim(bool f) { _bf = (_bf & ~64) | (f<<6); return f; } - - bool fCtsHold() { return cast(bool) (_bf & 1); } - bool fDsrHold() { return cast(bool) (_bf & 2); } - bool fRlsdHold() { return cast(bool) (_bf & 4); } - bool fXoffHold() { return cast(bool) (_bf & 8); } - bool fXoffSent() { return cast(bool) (_bf & 16); } - bool fEof() { return cast(bool) (_bf & 32); } - bool fTxim() { return cast(bool) (_bf & 64); } - - DWORD cbInQue; - DWORD cbOutQue; -} -alias COMSTAT* LPCOMSTAT; - -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; - WORD fUnicode; -} -alias CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; - -struct CREATE_THREAD_DEBUG_INFO { - HANDLE hThread; - LPVOID lpThreadLocalBase; - LPTHREAD_START_ROUTINE lpStartAddress; -} -alias CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; - -struct EXCEPTION_DEBUG_INFO { - EXCEPTION_RECORD ExceptionRecord; - DWORD dwFirstChance; -} -alias EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; - -struct EXIT_THREAD_DEBUG_INFO { - DWORD dwExitCode; -} -alias EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; - -struct EXIT_PROCESS_DEBUG_INFO { - DWORD dwExitCode; -} -alias EXIT_PROCESS_DEBUG_INFO* LPEXIT_PROCESS_DEBUG_INFO; - -struct LOAD_DLL_DEBUG_INFO { - HANDLE hFile; - LPVOID lpBaseOfDll; - DWORD dwDebugInfoFileOffset; - DWORD nDebugInfoSize; - LPVOID lpImageName; - WORD fUnicode; -} -alias LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; - -struct UNLOAD_DLL_DEBUG_INFO { - LPVOID lpBaseOfDll; -} -alias UNLOAD_DLL_DEBUG_INFO* LPUNLOAD_DLL_DEBUG_INFO; - -struct OUTPUT_DEBUG_STRING_INFO { - LPSTR lpDebugStringData; - WORD fUnicode; - WORD nDebugStringLength; -} -alias OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; - -struct RIP_INFO { - DWORD dwError; - DWORD dwType; -} -alias RIP_INFO* LPRIP_INFO; - -struct DEBUG_EVENT { - DWORD dwDebugEventCode; - DWORD dwProcessId; - DWORD dwThreadId; - union { - EXCEPTION_DEBUG_INFO Exception; - CREATE_THREAD_DEBUG_INFO CreateThread; - CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; - EXIT_THREAD_DEBUG_INFO ExitThread; - EXIT_PROCESS_DEBUG_INFO ExitProcess; - LOAD_DLL_DEBUG_INFO LoadDll; - UNLOAD_DLL_DEBUG_INFO UnloadDll; - OUTPUT_DEBUG_STRING_INFO DebugString; - RIP_INFO RipInfo; - } -} -alias DEBUG_EVENT* LPDEBUG_EVENT; - -struct OVERLAPPED { - ULONG_PTR Internal; - ULONG_PTR InternalHigh; - union { - struct { - DWORD Offset; - DWORD OffsetHigh; - } - PVOID Pointer; - } - HANDLE hEvent; -} -alias OVERLAPPED* POVERLAPPED, LPOVERLAPPED; - -struct STARTUPINFOA { - DWORD cb = STARTUPINFOA.sizeof; - LPSTR lpReserved; - LPSTR lpDesktop; - LPSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - PBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; -} -alias STARTUPINFOA* LPSTARTUPINFOA; - -struct STARTUPINFOW { - DWORD cb = STARTUPINFOW.sizeof; - LPWSTR lpReserved; - LPWSTR lpDesktop; - LPWSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - PBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; -} -alias STARTUPINFOW* LPSTARTUPINFOW; - -struct PROCESS_INFORMATION { - HANDLE hProcess; - HANDLE hThread; - DWORD dwProcessId; - DWORD dwThreadId; -} -alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; - -struct CRITICAL_SECTION_DEBUG { - WORD Type; - WORD CreatorBackTraceIndex; - CRITICAL_SECTION* CriticalSection; - LIST_ENTRY ProcessLocksList; - DWORD EntryCount; - DWORD ContentionCount; - DWORD[2] Spare; -} -alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; - -struct CRITICAL_SECTION { - PCRITICAL_SECTION_DEBUG DebugInfo; - LONG LockCount; - LONG RecursionCount; - HANDLE OwningThread; - HANDLE LockSemaphore; - DWORD SpinCount; -} -alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; - -struct SYSTEMTIME { - WORD wYear; - WORD wMonth; - WORD wDayOfWeek; - WORD wDay; - WORD wHour; - WORD wMinute; - WORD wSecond; - WORD wMilliseconds; -} -alias SYSTEMTIME* LPSYSTEMTIME; - -static if (_WIN32_WINDOWS >= 0x410) { - struct WIN32_FILE_ATTRIBUTE_DATA { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; - } - alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; -} - -struct WIN32_FIND_DATAA { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; -// #ifdef _WIN32_WCE -// DWORD dwOID; -// #else - DWORD dwReserved0; - DWORD dwReserved1; -// #endif - CHAR[MAX_PATH] cFileName; -// #ifndef _WIN32_WCE - CHAR[14] cAlternateFileName; -// #endif -} -alias WIN32_FIND_DATAA* PWIN32_FIND_DATAA, LPWIN32_FIND_DATAA; - -struct WIN32_FIND_DATAW { - DWORD dwFileAttributes; - FILETIME ftCreationTime; - FILETIME ftLastAccessTime; - FILETIME ftLastWriteTime; - DWORD nFileSizeHigh; - DWORD nFileSizeLow; -// #ifdef _WIN32_WCE -// DWORD dwOID; -// #else - DWORD dwReserved0; - DWORD dwReserved1; -// #endif - WCHAR[MAX_PATH] cFileName; -// #ifndef _WIN32_WCE - WCHAR[14] cAlternateFileName; -// #endif -} -alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW, LPWIN32_FIND_DATAW; - -static if (_WIN32_WINNT_ONLY) { - struct WIN32_STREAM_ID { - DWORD dwStreamId; - DWORD dwStreamAttributes; - LARGE_INTEGER Size; - DWORD dwStreamNameSize; - WCHAR _cStreamName; - - WCHAR* cStreamName() { return &_cStreamName; } - } - alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; - - enum FINDEX_INFO_LEVELS { - FindExInfoStandard, - FindExInfoMaxInfoLevel - } - - enum FINDEX_SEARCH_OPS { - FindExSearchNameMatch, - FindExSearchLimitToDirectories, - FindExSearchLimitToDevices, - FindExSearchMaxSearchOp - } - - enum ACL_INFORMATION_CLASS { - AclRevisionInformation = 1, - AclSizeInformation - } - - struct HW_PROFILE_INFOA { - DWORD dwDockInfo; - CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; - CHAR[MAX_PROFILE_LEN] szHwProfileName; - } - alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; - - struct HW_PROFILE_INFOW { - DWORD dwDockInfo; - WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; - WCHAR[MAX_PROFILE_LEN] szHwProfileName; - } - alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; -} - -/* ??? MSDN documents this only for Windows CE/Mobile, but it's used by - * GetFileAttributesEx, which is in desktop Windows. - */ -enum GET_FILEEX_INFO_LEVELS { - GetFileExInfoStandard, - GetFileExMaxInfoLevel -} - -struct SYSTEM_INFO { - union { - DWORD dwOemId; - struct { - WORD wProcessorArchitecture; - WORD wReserved; - } - } - DWORD dwPageSize; - PVOID lpMinimumApplicationAddress; - PVOID lpMaximumApplicationAddress; - DWORD dwActiveProcessorMask; - DWORD dwNumberOfProcessors; - DWORD dwProcessorType; - DWORD dwAllocationGranularity; - WORD wProcessorLevel; - WORD wProcessorRevision; -} -alias SYSTEM_INFO* LPSYSTEM_INFO; - -static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - struct SYSTEM_POWER_STATUS { - BYTE ACLineStatus; - BYTE BatteryFlag; - BYTE BatteryLifePercent; - BYTE Reserved1; - DWORD BatteryLifeTime; - DWORD BatteryFullLifeTime; - } - alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; -} - -struct TIME_ZONE_INFORMATION { - LONG Bias; - WCHAR[32] StandardName; - SYSTEMTIME StandardDate; - LONG StandardBias; - WCHAR[32] DaylightName; - SYSTEMTIME DaylightDate; - LONG DaylightBias; -} -alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; - -// MSDN documents this, possibly erroneously, as Win2000+. -struct MEMORYSTATUS { - DWORD dwLength; - DWORD dwMemoryLoad; - DWORD dwTotalPhys; - DWORD dwAvailPhys; - DWORD dwTotalPageFile; - DWORD dwAvailPageFile; - DWORD dwTotalVirtual; - DWORD dwAvailVirtual; -} -alias MEMORYSTATUS* LPMEMORYSTATUS; - -static if (_WIN32_WINNT >= 0x500) { - struct MEMORYSTATUSEX { - DWORD dwLength; - DWORD dwMemoryLoad; - DWORDLONG ullTotalPhys; - DWORDLONG ullAvailPhys; - DWORDLONG ullTotalPageFile; - DWORDLONG ullAvailPageFile; - DWORDLONG ullTotalVirtual; - DWORDLONG ullAvailVirtual; - DWORDLONG ullAvailExtendedVirtual; - } - alias MEMORYSTATUSEX* LPMEMORYSTATUSEX; -} - -struct LDT_ENTRY { - WORD LimitLow; - WORD BaseLow; - struct { - BYTE BaseMid; - BYTE Flags1; - BYTE Flags2; - BYTE BaseHi; - - byte Type(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return cast(byte)(f & 0x1F); } - byte Dpl(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return cast(byte)(f & 3); } - bool Pres(bool f) { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } - - byte LimitHi(byte f) { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return cast(byte)(f & 0x0F); } - bool Sys(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } - // Next bit is reserved - bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } - bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } - - byte Type() { return cast(byte) (Flags1 & 0x1F); } - byte Dpl() { return cast(byte) ((Flags1 & 0x60)>>5); } - bool Pres() { return cast(bool) (Flags1 & 0x80); } - - byte LimitHi() { return cast(byte) (Flags2 & 0x0F); } - bool Sys() { return cast(bool) (Flags2 & 0x10); } - bool Default_Big() { return cast(bool) (Flags2 & 0x40); } - bool Granularity() { return cast(bool) (Flags2 & 0x80); } - } -/+ - union HighWord { - struct Bytes { - BYTE BaseMid; - BYTE Flags1; - BYTE Flags2; - BYTE BaseHi; - } - struct Bits { - DWORD BaseMid:8; - DWORD Type:5; - DWORD Dpl:2; - DWORD Pres:1; - DWORD LimitHi:4; - DWORD Sys:1; - DWORD Reserved_0:1; - DWORD Default_Big:1; - DWORD Granularity:1; - DWORD BaseHi:8; - } - } -+/ -} -alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; - -/* As with the other memory management functions and structures, MSDN's - * Windows version info shall be taken with a cup of salt. - */ -struct PROCESS_HEAP_ENTRY { - PVOID lpData; - DWORD cbData; - BYTE cbOverhead; - BYTE iRegionIndex; - WORD wFlags; - union { - struct Block { - HANDLE hMem; - DWORD[3] dwReserved; - } - struct Region { - DWORD dwCommittedSize; - DWORD dwUnCommittedSize; - LPVOID lpFirstBlock; - LPVOID lpLastBlock; - } - } -} -alias PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; - -struct OFSTRUCT { - BYTE cBytes = OFSTRUCT.sizeof; - BYTE fFixedDisk; - WORD nErrCode; - WORD Reserved1; - WORD Reserved2; - CHAR[128] szPathName; // const OFS_MAXPATHNAME = 128; -} -alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; - -/* ??? MSDN documents this only for Windows CE, but it's used by - * ImageGetCertificateData, which is in desktop Windows. - */ -struct WIN_CERTIFICATE { - DWORD dwLength; - WORD wRevision; - WORD wCertificateType; - BYTE _bCertificate; - - BYTE* bCertificate() { return &_bCertificate; } -} -alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; - -static if (_WIN32_WINNT >= 0x500) { - enum COMPUTER_NAME_FORMAT { - ComputerNameNetBIOS, - ComputerNameDnsHostname, - ComputerNameDnsDomain, - ComputerNameDnsFullyQualified, - ComputerNamePhysicalNetBIOS, - ComputerNamePhysicalDnsHostname, - ComputerNamePhysicalDnsDomain, - ComputerNamePhysicalDnsFullyQualified, - ComputerNameMax - } -} - -static if (_WIN32_WINNT >= 0x501) { - struct ACTCTXA { - ULONG cbSize = this.sizeof; - DWORD dwFlags; - LPCSTR lpSource; - USHORT wProcessorArchitecture; - LANGID wLangId; - LPCSTR lpAssemblyDirectory; - LPCSTR lpResourceName; - LPCSTR lpApplicationName; - HMODULE hModule; - } - alias ACTCTXA* PACTCTXA; - alias CPtr!(ACTCTXA) PCACTCTXA; - - struct ACTCTXW { - ULONG cbSize = this.sizeof; - DWORD dwFlags; - LPCWSTR lpSource; - USHORT wProcessorArchitecture; - LANGID wLangId; - LPCWSTR lpAssemblyDirectory; - LPCWSTR lpResourceName; - LPCWSTR lpApplicationName; - HMODULE hModule; - } - alias ACTCTXW* PACTCTXW; - alias CPtr!(ACTCTXW) PCACTCTXW; - - struct ACTCTX_SECTION_KEYED_DATA { - ULONG cbSize = this.sizeof; - ULONG ulDataFormatVersion; - PVOID lpData; - ULONG ulLength; - PVOID lpSectionGlobalData; - ULONG ulSectionGlobalDataLength; - PVOID lpSectionBase; - ULONG ulSectionTotalLength; - HANDLE hActCtx; - HANDLE ulAssemblyRosterIndex; - } - alias ACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; - alias CPtr!(ACTCTX_SECTION_KEYED_DATA) PCACTCTX_SECTION_KEYED_DATA; - - enum MEMORY_RESOURCE_NOTIFICATION_TYPE { - LowMemoryResourceNotification, - HighMemoryResourceNotification - } - -} // (_WIN32_WINNT >= 0x0501) - -static if (WINVER >= 0x410) { - /* apparently used only by SetThreadExecutionState (Win2000+) - * and DDK functions (version compatibility not established) - */ - alias DWORD EXECUTION_STATE; -} - -// Callbacks -extern (Windows) { - alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; - alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, - DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; - alias void function(PVOID) LPFIBER_START_ROUTINE; - - alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; - alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; - alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; - alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; - alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; - alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; - alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; - alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; - alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; - - alias void function(ULONG_PTR) PAPCFUNC; - alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; - - static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; - } -} - -LPTSTR MAKEINTATOM(short i) { - return cast(LPTSTR) i; -} - -extern (Windows) { - ATOM AddAtomA(LPCSTR); - ATOM AddAtomW(LPCWSTR); - BOOL AreFileApisANSI(); - BOOL Beep(DWORD, DWORD); - HANDLE BeginUpdateResourceA(LPCSTR, BOOL); - HANDLE BeginUpdateResourceW(LPCWSTR, BOOL); - BOOL BuildCommDCBA(LPCSTR, LPDCB); - BOOL BuildCommDCBW(LPCWSTR, LPDCB); - BOOL BuildCommDCBAndTimeoutsA(LPCSTR, LPDCB, LPCOMMTIMEOUTS); - BOOL BuildCommDCBAndTimeoutsW(LPCWSTR, LPDCB, LPCOMMTIMEOUTS); - BOOL CallNamedPipeA(LPCSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); - BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); - BOOL CancelDeviceWakeupRequest(HANDLE); - BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); - BOOL ClearCommBreak(HANDLE); - BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); - BOOL CloseHandle(HANDLE); - BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); - BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); - LONG CompareFileTime(CPtr!(FILETIME), CPtr!(FILETIME)); - BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); - BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); - BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); - BOOL CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); - BOOL CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); - - /+ FIXME - alias memmove RtlMoveMemory; - alias memcpy RtlCopyMemory; - - void RtlFillMemory(PVOID dest, SIZE_T len, BYTE fill) { - memset(dest, fill, len); - } - - void RtlZeroMemory(PVOID dest, SIZE_T len) { - RtlFillMemory(dest, len , 0); - } - - alias RtlMoveMemory MoveMemory; - alias RtlCopyMemory CopyMemory; - alias RtlFillMemory FillMemory; - alias RtlZeroMemory ZeroMemory; - +/ - BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryExA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateDirectoryExW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); - HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); - HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); - HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); - HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); - HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); - HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateMailslotW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); - HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); - BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); - BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); - BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); - HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); - HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); - BOOL DebugActiveProcess(DWORD); - void DebugBreak(); - ATOM DeleteAtom(ATOM); - void DeleteCriticalSection(PCRITICAL_SECTION); - BOOL DeleteFileA(LPCSTR); - BOOL DeleteFileW(LPCWSTR); - BOOL DisableThreadLibraryCalls(HMODULE); - BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); - BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); - BOOL EndUpdateResourceA(HANDLE, BOOL); - BOOL EndUpdateResourceW(HANDLE, BOOL); - void EnterCriticalSection(LPCRITICAL_SECTION); - BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); - BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); - BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); - BOOL EnumResourceNamesW(HMODULE, LPCWSTR, ENUMRESNAMEPROC, LONG_PTR); - BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); - BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); - BOOL EscapeCommFunction(HANDLE, DWORD); - void ExitProcess(UINT); // Never returns - void ExitThread(DWORD); // Never returns - DWORD ExpandEnvironmentStringsA(LPCSTR, LPSTR, DWORD); - DWORD ExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD); - void FatalAppExitA(UINT, LPCSTR); - void FatalAppExitW(UINT, LPCWSTR); - void FatalExit(int); - BOOL FileTimeToDosDateTime(CPtr!(FILETIME) , LPWORD, LPWORD); - BOOL FileTimeToLocalFileTime(CPtr!(FILETIME) , LPFILETIME); - BOOL FileTimeToSystemTime(CPtr!(FILETIME) , LPSYSTEMTIME); - ATOM FindAtomA(LPCSTR); - ATOM FindAtomW(LPCWSTR); - BOOL FindClose(HANDLE); - BOOL FindCloseChangeNotification(HANDLE); - HANDLE FindFirstChangeNotificationA(LPCSTR, BOOL, DWORD); - HANDLE FindFirstChangeNotificationW(LPCWSTR, BOOL, DWORD); - HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); - HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); - BOOL FindNextChangeNotification(HANDLE); - BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); - BOOL FindNextFileW(HANDLE, LPWIN32_FIND_DATAW); - HRSRC FindResourceA(HMODULE, LPCSTR, LPCSTR); - HRSRC FindResourceW(HINSTANCE, LPCWSTR, LPCWSTR); - HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); - HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); - BOOL FlushFileBuffers(HANDLE); - BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); - DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); - DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); - BOOL FreeEnvironmentStringsA(LPSTR); - BOOL FreeEnvironmentStringsW(LPWSTR); - BOOL FreeLibrary(HMODULE); - void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns - BOOL FreeResource(HGLOBAL); - UINT GetAtomNameA(ATOM, LPSTR, int); - UINT GetAtomNameW(ATOM, LPWSTR, int); - LPSTR GetCommandLineA(); - LPWSTR GetCommandLineW(); - BOOL GetCommConfig(HANDLE, LPCOMMCONFIG, PDWORD); - BOOL GetCommMask(HANDLE, PDWORD); - BOOL GetCommModemStatus(HANDLE, PDWORD); - BOOL GetCommProperties(HANDLE, LPCOMMPROP); - BOOL GetCommState(HANDLE, LPDCB); - BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); - BOOL GetComputerNameA(LPSTR, PDWORD); - BOOL GetComputerNameW(LPWSTR, PDWORD); - DWORD GetCurrentDirectoryA(DWORD, LPSTR); - DWORD GetCurrentDirectoryW(DWORD, LPWSTR); - HANDLE GetCurrentProcess(); - DWORD GetCurrentProcessId(); - HANDLE GetCurrentThread(); -/* In MinGW: -#ifdef _WIN32_WCE -extern DWORD GetCurrentThreadId(void); -#else -WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); -#endif -*/ - DWORD GetCurrentThreadId(); - - alias GetTickCount GetCurrentTime; - - BOOL GetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, PDWORD); - BOOL GetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, PDWORD); - BOOL GetDiskFreeSpaceA(LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetDiskFreeSpaceW(LPCWSTR, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetDiskFreeSpaceExA(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); - BOOL GetDiskFreeSpaceExW(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); - UINT GetDriveTypeA(LPCSTR); - UINT GetDriveTypeW(LPCWSTR); - LPSTR GetEnvironmentStrings(); // ??? - LPSTR GetEnvironmentStringsA(); - LPWSTR GetEnvironmentStringsW(); - DWORD GetEnvironmentVariableA(LPCSTR, LPSTR, DWORD); - DWORD GetEnvironmentVariableW(LPCWSTR, LPWSTR, DWORD); - BOOL GetExitCodeProcess(HANDLE, PDWORD); - BOOL GetExitCodeThread(HANDLE, PDWORD); - DWORD GetFileAttributesA(LPCSTR); - DWORD GetFileAttributesW(LPCWSTR); - BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); - DWORD GetFileSize(HANDLE, PDWORD); - BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); - DWORD GetFileType(HANDLE); - DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); - DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); - DWORD GetLastError(); - void GetLocalTime(LPSYSTEMTIME); - DWORD GetLogicalDrives(); - DWORD GetLogicalDriveStringsA(DWORD, LPSTR); - DWORD GetLogicalDriveStringsW(DWORD, LPWSTR); - BOOL GetMailslotInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); - DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD); - DWORD GetModuleFileNameW(HINSTANCE, LPWSTR, DWORD); - HMODULE GetModuleHandleA(LPCSTR); - HMODULE GetModuleHandleW(LPCWSTR); - BOOL GetNamedPipeHandleStateA(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); - BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); - BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); - BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); - DWORD GetPriorityClass(HANDLE); - UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); - UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); - DWORD GetPrivateProfileSectionA(LPCSTR, LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileSectionW(LPCWSTR, LPWSTR, DWORD, LPCWSTR); - DWORD GetPrivateProfileSectionNamesA(LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileSectionNamesW(LPWSTR, DWORD, LPCWSTR); - DWORD GetPrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR); - DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); - BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); - BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); - FARPROC GetProcAddress(HINSTANCE, LPCSTR); - BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); - DWORD GetProcessVersion(DWORD); - UINT GetProfileIntA(LPCSTR, LPCSTR, INT); - UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); - DWORD GetProfileSectionA(LPCSTR, LPSTR, DWORD); - DWORD GetProfileSectionW(LPCWSTR, LPWSTR, DWORD); - DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); - DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); - DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); - DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); - VOID GetStartupInfoA(LPSTARTUPINFOA); - VOID GetStartupInfoW(LPSTARTUPINFOW); - HANDLE GetStdHandle(DWORD); - UINT GetSystemDirectoryA(LPSTR, UINT); - UINT GetSystemDirectoryW(LPWSTR, UINT); - VOID GetSystemInfo(LPSYSTEM_INFO); - VOID GetSystemTime(LPSYSTEMTIME); - BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); - void GetSystemTimeAsFileTime(LPFILETIME); - UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); - UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); - DWORD GetTempPathA(DWORD, LPSTR); - DWORD GetTempPathW(DWORD, LPWSTR); - BOOL GetThreadContext(HANDLE, LPCONTEXT); - int GetThreadPriority(HANDLE); - BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); - DWORD GetTickCount(); - DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); - BOOL GetUserNameA (LPSTR, PDWORD); - BOOL GetUserNameW(LPWSTR, PDWORD); - DWORD GetVersion(); - BOOL GetVersionExA(LPOSVERSIONINFOA); - BOOL GetVersionExW(LPOSVERSIONINFOW); - BOOL GetVolumeInformationA(LPCSTR, LPSTR, DWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); - BOOL GetVolumeInformationW(LPCWSTR, LPWSTR, DWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); - UINT GetWindowsDirectoryA(LPSTR, UINT); - UINT GetWindowsDirectoryW(LPWSTR, UINT); - DWORD GetWindowThreadProcessId(HWND, PDWORD); - ATOM GlobalAddAtomA(LPCSTR); - ATOM GlobalAddAtomW(LPCWSTR); - ATOM GlobalDeleteAtom(ATOM); - ATOM GlobalFindAtomA(LPCSTR); - ATOM GlobalFindAtomW(LPCWSTR); - UINT GlobalGetAtomNameA(ATOM, LPSTR, int); - UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); - - bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { - return lpOverlapped.Internal != STATUS_PENDING; - } - - BOOL InitAtomTable(DWORD); - VOID InitializeCriticalSection(LPCRITICAL_SECTION); - /* ??? The next two are allegedly obsolete and "supported only for - * backward compatibility with the 16-bit Windows API". Yet the - * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ - * only. Where's the mistake? - */ - BOOL IsBadHugeReadPtr(PCVOID, UINT); - BOOL IsBadHugeWritePtr(PVOID, UINT); - BOOL IsBadReadPtr(PCVOID, UINT); - BOOL IsBadStringPtrA(LPCSTR, UINT); - BOOL IsBadStringPtrW(LPCWSTR, UINT); - BOOL IsBadWritePtr(PVOID, UINT); - void LeaveCriticalSection(LPCRITICAL_SECTION); - HINSTANCE LoadLibraryA(LPCSTR); - HINSTANCE LoadLibraryW(LPCWSTR); - HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); - HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); - DWORD LoadModule(LPCSTR, PVOID); - HGLOBAL LoadResource(HINSTANCE, HRSRC); - BOOL LocalFileTimeToFileTime(CPtr!(FILETIME) , LPFILETIME); - BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - PVOID LockResource(HGLOBAL); - - LPSTR lstrcatA(LPSTR, LPCSTR); - LPWSTR lstrcatW(LPWSTR, LPCWSTR); - int lstrcmpA(LPCSTR, LPCSTR); - int lstrcmpiA(LPCSTR, LPCSTR); - int lstrcmpiW(LPCWSTR, LPCWSTR); - int lstrcmpW(LPCWSTR, LPCWSTR); - LPSTR lstrcpyA(LPSTR, LPCSTR); - LPSTR lstrcpynA(LPSTR, LPCSTR, int); - LPWSTR lstrcpynW(LPWSTR, LPCWSTR, int); - LPWSTR lstrcpyW(LPWSTR, LPCWSTR); - int lstrlenA(LPCSTR); - int lstrlenW(LPCWSTR); - - BOOL MoveFileA(LPCSTR, LPCSTR); - BOOL MoveFileW(LPCWSTR, LPCWSTR); - int MulDiv(int, int, int); - HANDLE OpenEventA(DWORD, BOOL, LPCSTR); - HANDLE OpenEventW(DWORD, BOOL, LPCWSTR); - deprecated HFILE OpenFile(LPCSTR, LPOFSTRUCT, UINT); - HANDLE OpenMutexA(DWORD, BOOL, LPCSTR); - HANDLE OpenMutexW(DWORD, BOOL, LPCWSTR); - HANDLE OpenProcess(DWORD, BOOL, DWORD); - HANDLE OpenSemaphoreA(DWORD, BOOL, LPCSTR); - HANDLE OpenSemaphoreW(DWORD, BOOL, LPCWSTR); - void OutputDebugStringA(LPCSTR); - void OutputDebugStringW(LPCWSTR); - BOOL PeekNamedPipe(HANDLE, PVOID, DWORD, PDWORD, PDWORD, PDWORD); - BOOL PulseEvent(HANDLE); - BOOL PurgeComm(HANDLE, DWORD); - BOOL QueryPerformanceCounter(PLARGE_INTEGER); - BOOL QueryPerformanceFrequency(PLARGE_INTEGER); - DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); - void RaiseException(DWORD, DWORD, DWORD, CPtr!(DWORD)); - BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, DWORD, PDWORD); - BOOL ReleaseMutex(HANDLE); - BOOL ReleaseSemaphore(HANDLE, LONG, LPLONG); - BOOL RemoveDirectoryA(LPCSTR); - BOOL RemoveDirectoryW(LPCWSTR); -/* In MinGW: -#ifdef _WIN32_WCE -extern BOOL ResetEvent(HANDLE); -#else -WINBASEAPI BOOL WINAPI ResetEvent(HANDLE); -#endif -*/ - BOOL ResetEvent(HANDLE); - DWORD ResumeThread(HANDLE); - DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); - DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); - BOOL SetCommBreak(HANDLE); - BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); - BOOL SetCommMask(HANDLE, DWORD); - BOOL SetCommState(HANDLE, LPDCB); - BOOL SetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); - BOOL SetComputerNameA(LPCSTR); - BOOL SetComputerNameW(LPCWSTR); - BOOL SetCurrentDirectoryA(LPCSTR); - BOOL SetCurrentDirectoryW(LPCWSTR); - BOOL SetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, DWORD); - BOOL SetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, DWORD); - BOOL SetEndOfFile(HANDLE); - BOOL SetEnvironmentVariableA(LPCSTR, LPCSTR); - BOOL SetEnvironmentVariableW(LPCWSTR, LPCWSTR); - UINT SetErrorMode(UINT); -/* In MinGW: -#ifdef _WIN32_WCE -extern BOOL SetEvent(HANDLE); -#else -WINBASEAPI BOOL WINAPI SetEvent(HANDLE); -#endif -*/ - BOOL SetEvent(HANDLE); - VOID SetFileApisToANSI(); - VOID SetFileApisToOEM(); - BOOL SetFileAttributesA(LPCSTR, DWORD); - BOOL SetFileAttributesW(LPCWSTR, DWORD); - DWORD SetFilePointer(HANDLE, LONG, PLONG, DWORD); - BOOL SetFileTime(HANDLE, CPtr!(FILETIME), CPtr!(FILETIME), CPtr!(FILETIME)); - deprecated UINT SetHandleCount(UINT); - void SetLastError(DWORD); - void SetLastErrorEx(DWORD, DWORD); - BOOL SetLocalTime(CPtr!(SYSTEMTIME)); - BOOL SetMailslotInfo(HANDLE, DWORD); - BOOL SetNamedPipeHandleState(HANDLE, PDWORD, PDWORD, PDWORD); - BOOL SetPriorityClass(HANDLE, DWORD); - BOOL SetStdHandle(DWORD, HANDLE); - BOOL SetSystemTime(CPtr!(SYSTEMTIME)); - DWORD SetThreadAffinityMask(HANDLE, DWORD); - BOOL SetThreadContext(HANDLE, CPtr!(CONTEXT)); - BOOL SetThreadPriority(HANDLE, int); - BOOL SetTimeZoneInformation(CPtr!(TIME_ZONE_INFORMATION)); - LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); - BOOL SetupComm(HANDLE, DWORD, DWORD); - BOOL SetVolumeLabelA(LPCSTR, LPCSTR); - BOOL SetVolumeLabelW(LPCWSTR, LPCWSTR); - - DWORD SizeofResource(HINSTANCE, HRSRC); - void Sleep(DWORD); - DWORD SleepEx(DWORD, BOOL); - DWORD SuspendThread(HANDLE); - BOOL SystemTimeToFileTime(CPtr!(SYSTEMTIME), LPFILETIME); - BOOL TerminateProcess(HANDLE, UINT); - BOOL TerminateThread(HANDLE, DWORD); - DWORD TlsAlloc(); - BOOL TlsFree(DWORD); - PVOID TlsGetValue(DWORD); - BOOL TlsSetValue(DWORD, PVOID); - BOOL TransactNamedPipe(HANDLE, PVOID, DWORD, PVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL TransmitCommChar(HANDLE, char); - LONG UnhandledExceptionFilter(LPEXCEPTION_POINTERS); - BOOL UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - BOOL WaitCommEvent(HANDLE, PDWORD, LPOVERLAPPED); - BOOL WaitForDebugEvent(LPDEBUG_EVENT, DWORD); - DWORD WaitForMultipleObjects(DWORD, CPtr!(HANDLE), BOOL, DWORD); - DWORD WaitForMultipleObjectsEx(DWORD, CPtr!(HANDLE), BOOL, DWORD, BOOL); - DWORD WaitForSingleObject(HANDLE, DWORD); - DWORD WaitForSingleObjectEx(HANDLE, DWORD, BOOL); - BOOL WaitNamedPipeA(LPCSTR, DWORD); - BOOL WaitNamedPipeW(LPCWSTR, DWORD); - // undocumented on MSDN - BOOL WinLoadTrustProvider(GUID*); - BOOL WriteFile(HANDLE, PCVOID, DWORD, PDWORD, LPOVERLAPPED); - BOOL WriteFileEx(HANDLE, PCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL WritePrivateProfileSectionA(LPCSTR, LPCSTR, LPCSTR); - BOOL WritePrivateProfileSectionW(LPCWSTR, LPCWSTR, LPCWSTR); - BOOL WritePrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPCSTR); - BOOL WritePrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL WritePrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); - BOOL WritePrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); - BOOL WriteProcessMemory(HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T*); - BOOL WriteProfileSectionA(LPCSTR, LPCSTR); - BOOL WriteProfileSectionW(LPCWSTR, LPCWSTR); - BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); - BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); - - /* Memory allocation functions. - * MSDN documents these erroneously as Win2000+; thus it is uncertain what - * version compatibility they really have. - */ - HGLOBAL GlobalAlloc(UINT, DWORD); - HGLOBAL GlobalDiscard(HGLOBAL); - HGLOBAL GlobalFree(HGLOBAL); - HGLOBAL GlobalHandle(PCVOID); - LPVOID GlobalLock(HGLOBAL); - VOID GlobalMemoryStatus(LPMEMORYSTATUS); - HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); - DWORD GlobalSize(HGLOBAL); - BOOL GlobalUnlock(HGLOBAL); - PVOID HeapAlloc(HANDLE, DWORD, DWORD); - SIZE_T HeapCompact(HANDLE, DWORD); - HANDLE HeapCreate(DWORD, DWORD, DWORD); - BOOL HeapDestroy(HANDLE); - BOOL HeapFree(HANDLE, DWORD, PVOID); - BOOL HeapLock(HANDLE); - PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); - DWORD HeapSize(HANDLE, DWORD, PCVOID); - BOOL HeapUnlock(HANDLE); - BOOL HeapValidate(HANDLE, DWORD, PCVOID); - BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); - HLOCAL LocalAlloc(UINT, SIZE_T); - HLOCAL LocalDiscard(HLOCAL); - HLOCAL LocalFree(HLOCAL); - HLOCAL LocalHandle(LPCVOID); - PVOID LocalLock(HLOCAL); - HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); - UINT LocalSize(HLOCAL); - BOOL LocalUnlock(HLOCAL); - PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); - PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); - BOOL VirtualFree(PVOID, DWORD, DWORD); - BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); - BOOL VirtualLock(PVOID, DWORD); - BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); - BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); - DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); - DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); - BOOL VirtualUnlock(PVOID, DWORD); - - static if (_WIN32_WINDOWS >= 0x600) { - BOOL CancelIoEx(HANDLE, LPOVERLAPPED); - } - - static if (_WIN32_WINDOWS >= 0x410) { - BOOL CancelIo(HANDLE); - BOOL CancelWaitableTimer(HANDLE); - PVOID ConvertThreadToFiber(PVOID); - LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); - HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); - HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); - void DeleteFiber(PVOID); - BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); - BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); - DWORD GetLongPathNameA(LPCSTR, LPSTR, DWORD); - DWORD GetLongPathNameW(LPCWSTR, LPWSTR, DWORD); - BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); - BOOL IsDebuggerPresent(); - HANDLE OpenWaitableTimerA(DWORD, BOOL, LPCSTR); - HANDLE OpenWaitableTimerW(DWORD, BOOL, LPCWSTR); - DWORD QueryDosDeviceA(LPCSTR, LPSTR, DWORD); - DWORD QueryDosDeviceW(LPCWSTR, LPWSTR, DWORD); - BOOL SetWaitableTimer(HANDLE, CPtr!(LARGE_INTEGER), LONG, PTIMERAPCROUTINE, PVOID, BOOL); - void SwitchToFiber(PVOID); - } - - static if (WINVER >= 0x500) { - HANDLE OpenThread(DWORD, BOOL, DWORD); - } - - static if (_WIN32_WINNT_ONLY) { - BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); - BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); - BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); - BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); - BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); - BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); - BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); - BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); - BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); - BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); - BOOL AllocateLocallyUniqueId(PLUID); - BOOL AreAllAccessesGranted(DWORD, DWORD); - BOOL AreAnyAccessesGranted(DWORD, DWORD); - BOOL BackupEventLogA(HANDLE, LPCSTR); - BOOL BackupEventLogW(HANDLE, LPCWSTR); - BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); - BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); - BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); - BOOL ClearEventLogA(HANDLE, LPCSTR); - BOOL ClearEventLogW(HANDLE, LPCWSTR); - BOOL CloseEventLog(HANDLE); - BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); - BOOL CopySid(DWORD, PSID, PSID); - HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); - BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); - BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); - BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); - DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); - BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); - BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); - BOOL DeleteAce(PACL, DWORD); - BOOL DeregisterEventSource(HANDLE); - BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); - BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); - BOOL DisconnectNamedPipe(HANDLE); - BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); - BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); - BOOL EqualPrefixSid(PSID, PSID); - BOOL EqualSid(PSID, PSID); - DWORD EraseTape(HANDLE, DWORD, BOOL); - HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); - HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); - BOOL FindFirstFreeAce(PACL, PVOID*); - PVOID FreeSid(PSID); - BOOL GetAce(PACL, DWORD, LPVOID*); - BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); - BOOL GetBinaryTypeA(LPCSTR, PDWORD); - BOOL GetBinaryTypeW(LPCWSTR, PDWORD); - DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); - DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); - BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); - BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); - BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetHandleInformation(HANDLE, PDWORD); - BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - DWORD GetLengthSid(PSID); - BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); - BOOL GetOldestEventLogRecord(HANDLE, PDWORD); - BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); - BOOL GetProcessPriorityBoost(HANDLE, PBOOL); - BOOL GetProcessShutdownParameters(PDWORD, PDWORD); - BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); - HWINSTA GetProcessWindowStation(); - BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); - BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); - BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); - BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); - BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); - DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); - BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); - BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); - PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); - DWORD GetSidLengthRequired(UCHAR); - PDWORD GetSidSubAuthority(PSID, DWORD); - PUCHAR GetSidSubAuthorityCount(PSID); - DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); - DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); - DWORD GetTapeStatus(HANDLE); - BOOL GetThreadPriorityBoost(HANDLE, PBOOL); - BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); - BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); - BOOL ImpersonateLoggedOnUser(HANDLE); - BOOL ImpersonateNamedPipeClient(HANDLE); - BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); - BOOL InitializeAcl(PACL, DWORD, DWORD); - DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); - BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); - BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); - BOOL IsProcessorFeaturePresent(DWORD); - BOOL IsTextUnicode(PCVOID, int, LPINT); - BOOL IsValidAcl(PACL); - BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); - BOOL IsValidSid(PSID); - BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); - BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); - BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); - BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); - BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); - BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); - BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); - BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); - BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); - BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); - BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); - BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); - BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); - VOID MapGenericMask(PDWORD, PGENERIC_MAPPING); - BOOL MoveFileExA(LPCSTR, LPCSTR, DWORD); - BOOL MoveFileExW(LPCWSTR, LPCWSTR, DWORD); - BOOL NotifyChangeEventLog(HANDLE, HANDLE); - BOOL ObjectCloseAuditAlarmA(LPCSTR, PVOID, BOOL); - BOOL ObjectCloseAuditAlarmW(LPCWSTR, PVOID, BOOL); - BOOL ObjectDeleteAuditAlarmA(LPCSTR, PVOID, BOOL); - BOOL ObjectDeleteAuditAlarmW(LPCWSTR, PVOID, BOOL); - BOOL ObjectOpenAuditAlarmA(LPCSTR, PVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); - BOOL ObjectOpenAuditAlarmW(LPCWSTR, PVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); - BOOL ObjectPrivilegeAuditAlarmA(LPCSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); - BOOL ObjectPrivilegeAuditAlarmW(LPCWSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); - HANDLE OpenBackupEventLogA(LPCSTR, LPCSTR); - HANDLE OpenBackupEventLogW(LPCWSTR, LPCWSTR); - HANDLE OpenEventLogA(LPCSTR, LPCSTR); - HANDLE OpenEventLogW(LPCWSTR, LPCWSTR); - BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); - BOOL OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE); - BOOL PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED); - DWORD PrepareTape(HANDLE, DWORD, BOOL); - BOOL PrivilegeCheck(HANDLE, PPRIVILEGE_SET, PBOOL); - BOOL PrivilegedServiceAuditAlarmA(LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL); - BOOL PrivilegedServiceAuditAlarmW(LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL); - BOOL ReadDirectoryChangesW(HANDLE, PVOID, DWORD, BOOL, DWORD, PDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); - BOOL ReadEventLogA(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); - BOOL ReadEventLogW(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); - BOOL ReadFileScatter(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); - HANDLE RegisterEventSourceA (LPCSTR, LPCSTR); - HANDLE RegisterEventSourceW(LPCWSTR, LPCWSTR); - BOOL ReportEventA(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR*, PVOID); - BOOL ReportEventW(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR*, PVOID); - BOOL RevertToSelf(); - BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); - BOOL SetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetHandleInformation(HANDLE, DWORD, DWORD); - BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR* , PGENERIC_MAPPING, HANDLE); - BOOL SetProcessAffinityMask(HANDLE, DWORD); - BOOL SetProcessPriorityBoost(HANDLE, BOOL); - BOOL SetProcessShutdownParameters(DWORD, DWORD); - BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); - BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); - BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); - BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); - BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); - BOOL SetSystemTimeAdjustment(DWORD, BOOL); - DWORD SetTapeParameters(HANDLE, DWORD, PVOID); - DWORD SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL); - BOOL SetThreadPriorityBoost(HANDLE, BOOL); - BOOL SetThreadToken(PHANDLE, HANDLE); - BOOL SetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD); - DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); - BOOL SwitchToThread(); - BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); - BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); - BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); - BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); - BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); - BOOL WriteFileGather(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); - DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); - - static if (_WIN32_WINNT >= 0x500) { - BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); - BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); - PVOID AddVectoredExceptionHandler(ULONG, PVECTORED_EXCEPTION_HANDLER); - BOOL AllocateUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); - BOOL AssignProcessToJobObject(HANDLE, HANDLE); - BOOL ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG); - LPVOID CreateFiberEx(SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID); - HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); - HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); - BOOL CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); - BOOL CreateHardLinkW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); - HANDLE CreateJobObjectA(LPSECURITY_ATTRIBUTES, LPCSTR); - HANDLE CreateJobObjectW(LPSECURITY_ATTRIBUTES, LPCWSTR); - BOOL CreateProcessWithLogonW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); - HANDLE CreateTimerQueue(); - BOOL CreateTimerQueueTimer(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG); - BOOL DeleteTimerQueue(HANDLE); - BOOL DeleteTimerQueueEx(HANDLE, HANDLE); - BOOL DeleteTimerQueueTimer(HANDLE, HANDLE, HANDLE); - BOOL DeleteVolumeMountPointA(LPCSTR); - BOOL DeleteVolumeMountPointW(LPCWSTR); - BOOL DnsHostnameToComputerNameA(LPCSTR, LPSTR, LPDWORD); - BOOL DnsHostnameToComputerNameW(LPCWSTR, LPWSTR, LPDWORD); - BOOL EncryptFileA(LPCSTR); - BOOL EncryptFileW(LPCWSTR); - BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); - BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); - HANDLE FindFirstVolumeA(LPCSTR, DWORD); - HANDLE FindFirstVolumeMountPointA(LPSTR, LPSTR, DWORD); - HANDLE FindFirstVolumeMountPointW(LPWSTR, LPWSTR, DWORD); - HANDLE FindFirstVolumeW(LPCWSTR, DWORD); - BOOL FindNextVolumeA(HANDLE, LPCSTR, DWORD); - BOOL FindNextVolumeW(HANDLE, LPWSTR, DWORD); - BOOL FindNextVolumeMountPointA(HANDLE, LPSTR, DWORD); - BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); - BOOL FindVolumeClose(HANDLE); - BOOL FindVolumeMountPointClose(HANDLE); - BOOL FlushViewOfFile(PCVOID, DWORD); - BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); - BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); - BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); - BOOL GetFileSizeEx(HANDLE, PLARGE_INTEGER); - BOOL GetModuleHandleExA(DWORD, LPCSTR, HMODULE*); - BOOL GetModuleHandleExW(DWORD, LPCWSTR, HMODULE*); - HANDLE GetProcessHeap(); - DWORD GetProcessHeaps(DWORD, PHANDLE); - BOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS); - BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); - UINT GetSystemWindowsDirectoryA(LPSTR, UINT); - UINT GetSystemWindowsDirectoryW(LPWSTR, UINT); - BOOL GetVolumeNameForVolumeMountPointA(LPCSTR, LPSTR, DWORD); - BOOL GetVolumeNameForVolumeMountPointW(LPCWSTR, LPWSTR, DWORD); - BOOL GetVolumePathNameA(LPCSTR, LPSTR, DWORD); - BOOL GetVolumePathNameW(LPCWSTR, LPWSTR, DWORD); - BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX); - BOOL IsBadCodePtr(FARPROC); - BOOL IsSystemResumeAutomatic(); - BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); - BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); - PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); - PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); - HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); - HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); - BOOL ProcessIdToSessionId(DWORD, DWORD*); - BOOL QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); - ULONG RemoveVectoredExceptionHandler(PVOID); - BOOL ReplaceFileA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); - BOOL ReplaceFileW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); - BOOL SetComputerNameExA(COMPUTER_NAME_FORMAT, LPCSTR); - BOOL SetComputerNameExW(COMPUTER_NAME_FORMAT, LPCWSTR); - BOOL SetFilePointerEx(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); - BOOL SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD); - BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); - BOOL SetSystemPowerState(BOOL, BOOL); - EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE); - DWORD SetThreadIdealProcessor(HANDLE, DWORD); - BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); - BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); - BOOL TerminateJobObject(HANDLE, UINT); - BOOL UnmapViewOfFile(PVOID); - BOOL UnregisterWait(HANDLE); - BOOL UnregisterWaitEx(HANDLE, HANDLE); - BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); - BOOL VerifyVersionInfoW(LPOSVERSIONINFOEXW, DWORD, DWORDLONG); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL ActivateActCtx(HANDLE, ULONG_PTR*); - void AddRefActCtx(HANDLE); - BOOL CheckNameLegalDOS8Dot3A(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL); - BOOL CheckNameLegalDOS8Dot3W(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL); - BOOL CheckRemoteDebuggerPresent(HANDLE, PBOOL); - BOOL ConvertFiberToThread(); - HANDLE CreateActCtxA(PCACTCTXA); - HANDLE CreateActCtxW(PCACTCTXW); - HANDLE CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); - BOOL DeactivateActCtx(DWORD, ULONG_PTR); - BOOL DebugActiveProcessStop(DWORD); - BOOL DebugBreakProcess(HANDLE); - BOOL DebugSetProcessKillOnExit(BOOL); - BOOL FindActCtxSectionGuid(DWORD, CPtr!(GUID), ULONG, CPtr!(GUID), - PACTCTX_SECTION_KEYED_DATA); - BOOL FindActCtxSectionStringA(DWORD, CPtr!(GUID), ULONG, LPCSTR, - PACTCTX_SECTION_KEYED_DATA); - BOOL FindActCtxSectionStringW(DWORD, CPtr!(GUID), ULONG, LPCWSTR, - PACTCTX_SECTION_KEYED_DATA); - BOOL GetCurrentActCtx(HANDLE*); - VOID GetNativeSystemInfo(LPSYSTEM_INFO); - BOOL GetProcessHandleCount(HANDLE, PDWORD); - BOOL GetSystemRegistryQuota(PDWORD, PDWORD); - BOOL GetSystemTimes(LPFILETIME, LPFILETIME, LPFILETIME); - UINT GetSystemWow64DirectoryA(LPSTR, UINT); - UINT GetSystemWow64DirectoryW(LPWSTR, UINT); - BOOL GetThreadIOPendingFlag(HANDLE, PBOOL); - BOOL GetVolumePathNamesForVolumeNameA(LPCSTR, LPSTR, DWORD, PDWORD); - BOOL GetVolumePathNamesForVolumeNameW(LPCWSTR, LPWSTR, DWORD, PDWORD); - UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); - BOOL HeapQueryInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); - BOOL HeapSetInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T); - BOOL IsProcessInJob(HANDLE, HANDLE, PBOOL); - BOOL IsWow64Process(HANDLE, PBOOL); - BOOL QueryActCtxW(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T*); - BOOL QueryMemoryResourceNotification(HANDLE, PBOOL); - void ReleaseActCtx(HANDLE); - UINT ResetWriteWatch(LPVOID, SIZE_T); - BOOL SetFileShortNameA(HANDLE, LPCSTR); - BOOL SetFileShortNameW(HANDLE, LPCWSTR); - BOOL SetFileValidData(HANDLE, LONGLONG); - BOOL ZombifyActCtx(HANDLE); - } - - static if (_WIN32_WINNT >= 0x502) { - DWORD GetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); - DWORD GetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); - DWORD GetDllDirectoryA(DWORD, LPSTR); - DWORD GetDllDirectoryW(DWORD, LPWSTR); - DWORD GetProcessId(HANDLE); - HANDLE ReOpenFile(HANDLE, DWORD, DWORD, DWORD); - BOOL SetDllDirectoryA(LPCSTR); - BOOL SetDllDirectoryW(LPCWSTR); - BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); - BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); - } - } - - // ??? - static if (_WIN32_WINNT >= 0x510) { - VOID RestoreLastError(DWORD); - } -} - - -version (Unicode) { - alias STARTUPINFOW STARTUPINFO; - alias WIN32_FIND_DATAW WIN32_FIND_DATA; - alias ENUMRESLANGPROCW ENUMRESLANGPROC; - alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; - alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; - alias AddAtomW AddAtom; - alias BeginUpdateResourceW BeginUpdateResource; - alias BuildCommDCBW BuildCommDCB; - alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; - alias CallNamedPipeW CallNamedPipe; - alias CommConfigDialogW CommConfigDialog; - alias CopyFileW CopyFile; - alias CopyFileExW CopyFileEx; - alias CreateDirectoryW CreateDirectory; - alias CreateDirectoryExW CreateDirectoryEx; - alias CreateEventW CreateEvent; - alias CreateFileW CreateFile; - alias CreateMailslotW CreateMailslot; - alias CreateMutexW CreateMutex; - alias CreateProcessW CreateProcess; - alias CreateSemaphoreW CreateSemaphore; - alias DeleteFileW DeleteFile; - alias EndUpdateResourceW EndUpdateResource; - alias EnumResourceLanguagesW EnumResourceLanguages; - alias EnumResourceNamesW EnumResourceNames; - alias EnumResourceTypesW EnumResourceTypes; - alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; - alias FatalAppExitW FatalAppExit; - alias FindAtomW FindAtom; - alias FindFirstChangeNotificationW FindFirstChangeNotification; - alias FindFirstFileW FindFirstFile; - alias FindNextFileW FindNextFile; - alias FindResourceW FindResource; - alias FindResourceExW FindResourceEx; - alias FormatMessageW FormatMessage; - alias FreeEnvironmentStringsW FreeEnvironmentStrings; - alias GetAtomNameW GetAtomName; - alias GetCommandLineW GetCommandLine; - alias GetComputerNameW GetComputerName; - alias GetCurrentDirectoryW GetCurrentDirectory; - alias GetDefaultCommConfigW GetDefaultCommConfig; - alias GetDiskFreeSpaceW GetDiskFreeSpace; - alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; - alias GetDriveTypeW GetDriveType; - alias GetEnvironmentStringsW GetEnvironmentStrings; - alias GetEnvironmentVariableW GetEnvironmentVariable; - alias GetFileAttributesW GetFileAttributes; - alias GetFullPathNameW GetFullPathName; - alias GetLogicalDriveStringsW GetLogicalDriveStrings; - alias GetModuleFileNameW GetModuleFileName; - alias GetModuleHandleW GetModuleHandle; - alias GetNamedPipeHandleStateW GetNamedPipeHandleState; - alias GetPrivateProfileIntW GetPrivateProfileInt; - alias GetPrivateProfileSectionW GetPrivateProfileSection; - alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; - alias GetPrivateProfileStringW GetPrivateProfileString; - alias GetPrivateProfileStructW GetPrivateProfileStruct; - alias GetProfileIntW GetProfileInt; - alias GetProfileSectionW GetProfileSection; - alias GetProfileStringW GetProfileString; - alias GetShortPathNameW GetShortPathName; - alias GetStartupInfoW GetStartupInfo; - alias GetSystemDirectoryW GetSystemDirectory; - alias GetTempFileNameW GetTempFileName; - alias GetTempPathW GetTempPath; - alias GetUserNameW GetUserName; - alias GetVersionExW GetVersionEx; - alias GetVolumeInformationW GetVolumeInformation; - alias GetWindowsDirectoryW GetWindowsDirectory; - alias GlobalAddAtomW GlobalAddAtom; - alias GlobalFindAtomW GlobalFindAtom; - alias GlobalGetAtomNameW GlobalGetAtomName; - alias IsBadStringPtrW IsBadStringPtr; - alias LoadLibraryW LoadLibrary; - alias LoadLibraryExW LoadLibraryEx; - alias lstrcatW lstrcat; - alias lstrcmpW lstrcmp; - alias lstrcmpiW lstrcmpi; - alias lstrcpyW lstrcpy; - alias lstrcpynW lstrcpyn; - alias lstrlenW lstrlen; - alias MoveFileW MoveFile; - alias OpenEventW OpenEvent; - alias OpenMutexW OpenMutex; - alias OpenSemaphoreW OpenSemaphore; - alias OutputDebugStringW OutputDebugString; - alias RemoveDirectoryW RemoveDirectory; - alias SearchPathW SearchPath; - alias SetComputerNameW SetComputerName; - alias SetCurrentDirectoryW SetCurrentDirectory; - alias SetDefaultCommConfigW SetDefaultCommConfig; - alias SetEnvironmentVariableW SetEnvironmentVariable; - alias SetFileAttributesW SetFileAttributes; - alias SetVolumeLabelW SetVolumeLabel; - alias WaitNamedPipeW WaitNamedPipe; - alias WritePrivateProfileSectionW WritePrivateProfileSection; - alias WritePrivateProfileStringW WritePrivateProfileString; - alias WritePrivateProfileStructW WritePrivateProfileStruct; - alias WriteProfileSectionW WriteProfileSection; - alias WriteProfileStringW WriteProfileString; - - static if (_WIN32_WINDOWS >= 0x410) { - alias CreateWaitableTimerW CreateWaitableTimer; - alias GetFileAttributesExW GetFileAttributesEx; - alias GetLongPathNameW GetLongPathName; - alias QueryDosDeviceW QueryDosDevice; - } - - static if (_WIN32_WINNT_ONLY) { - alias HW_PROFILE_INFOW HW_PROFILE_INFO; - alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; - alias BackupEventLogW BackupEventLog; - alias ClearEventLogW ClearEventLog; - alias CreateNamedPipeW CreateNamedPipe; - alias CreateProcessAsUserW CreateProcessAsUser; - alias DefineDosDeviceW DefineDosDevice; - alias FindFirstFileExW FindFirstFileEx; - alias GetBinaryTypeW GetBinaryType; - alias GetCompressedFileSizeW GetCompressedFileSize; - alias GetFileSecurityW GetFileSecurity; - alias LogonUserW LogonUser; - alias LookupAccountNameW LookupAccountName; - alias LookupAccountSidW LookupAccountSid; - alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; - alias LookupPrivilegeNameW LookupPrivilegeName; - alias LookupPrivilegeValueW LookupPrivilegeValue; - alias MoveFileExW MoveFileEx; - alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; - alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; - alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; - alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; - alias OpenBackupEventLogW OpenBackupEventLog; - alias OpenEventLogW OpenEventLog; - alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; - alias ReadEventLogW ReadEventLog; - alias RegisterEventSourceW RegisterEventSource; - alias ReportEventW ReportEvent; - alias SetFileSecurityW SetFileSecurity; - alias UpdateResourceW UpdateResource; - - static if (_WIN32_WINNT >= 0x500) { - alias CreateFileMappingW CreateFileMapping; - alias CreateHardLinkW CreateHardLink; - alias CreateJobObjectW CreateJobObject; - alias DeleteVolumeMountPointW DeleteVolumeMountPoint; - alias DnsHostnameToComputerNameW DnsHostnameToComputerName; - alias EncryptFileW EncryptFile; - alias FileEncryptionStatusW FileEncryptionStatus; - alias FindFirstVolumeW FindFirstVolume; - alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; - alias FindNextVolumeW FindNextVolume; - alias FindNextVolumeMountPointW FindNextVolumeMountPoint; - alias GetModuleHandleExW GetModuleHandleEx; - alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; - alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; - alias GetVolumePathNameW GetVolumePathName; - alias OpenFileMappingW OpenFileMapping; - alias ReplaceFileW ReplaceFile; - alias SetVolumeMountPointW SetVolumeMountPoint; - alias VerifyVersionInfoW VerifyVersionInfo; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ACTCTXW ACTCTX; - alias CheckNameLegalDOS8Dot3W CheckNameLegalDOS8Dot3; - alias CreateActCtxW CreateActCtx; - alias FindActCtxSectionStringW FindActCtxSectionString; - alias GetSystemWow64DirectoryW GetSystemWow64Directory; - alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; - alias SetFileShortNameW SetFileShortName; - } - - static if (_WIN32_WINNT >= 0x502) { - alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; - alias SetDllDirectoryW SetDllDirectory; - alias GetDllDirectoryW GetDllDirectory; - } - } - -} else { - alias STARTUPINFOA STARTUPINFO; - alias WIN32_FIND_DATAA WIN32_FIND_DATA; - alias ENUMRESLANGPROCW ENUMRESLANGPROC; - alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; - alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; - alias AddAtomA AddAtom; - alias BeginUpdateResourceA BeginUpdateResource; - alias BuildCommDCBA BuildCommDCB; - alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; - alias CallNamedPipeA CallNamedPipe; - alias CommConfigDialogA CommConfigDialog; - alias CopyFileA CopyFile; - alias CopyFileExA CopyFileEx; - alias CreateDirectoryA CreateDirectory; - alias CreateDirectoryExA CreateDirectoryEx; - alias CreateEventA CreateEvent; - alias CreateFileA CreateFile; - alias CreateMailslotA CreateMailslot; - alias CreateMutexA CreateMutex; - alias CreateProcessA CreateProcess; - alias CreateSemaphoreA CreateSemaphore; - alias DeleteFileA DeleteFile; - alias EndUpdateResourceA EndUpdateResource; - alias EnumResourceLanguagesA EnumResourceLanguages; - alias EnumResourceNamesA EnumResourceNames; - alias EnumResourceTypesA EnumResourceTypes; - alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; - alias FatalAppExitA FatalAppExit; - alias FindAtomA FindAtom; - alias FindFirstChangeNotificationA FindFirstChangeNotification; - alias FindFirstFileA FindFirstFile; - alias FindNextFileA FindNextFile; - alias FindResourceA FindResource; - alias FindResourceExA FindResourceEx; - alias FormatMessageA FormatMessage; - alias FreeEnvironmentStringsA FreeEnvironmentStrings; - alias GetAtomNameA GetAtomName; - alias GetCommandLineA GetCommandLine; - alias GetComputerNameA GetComputerName; - alias GetCurrentDirectoryA GetCurrentDirectory; - alias GetDefaultCommConfigA GetDefaultCommConfig; - alias GetDiskFreeSpaceA GetDiskFreeSpace; - alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; - alias GetDriveTypeA GetDriveType; - alias GetEnvironmentVariableA GetEnvironmentVariable; - alias GetFileAttributesA GetFileAttributes; - alias GetFullPathNameA GetFullPathName; - alias GetLogicalDriveStringsA GetLogicalDriveStrings; - alias GetNamedPipeHandleStateA GetNamedPipeHandleState; - alias GetModuleHandleA GetModuleHandle; - alias GetModuleFileNameA GetModuleFileName; - alias GetPrivateProfileIntA GetPrivateProfileInt; - alias GetPrivateProfileSectionA GetPrivateProfileSection; - alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; - alias GetPrivateProfileStringA GetPrivateProfileString; - alias GetPrivateProfileStructA GetPrivateProfileStruct; - alias GetProfileIntA GetProfileInt; - alias GetProfileSectionA GetProfileSection; - alias GetProfileStringA GetProfileString; - alias GetShortPathNameA GetShortPathName; - alias GetStartupInfoA GetStartupInfo; - alias GetSystemDirectoryA GetSystemDirectory; - alias GetTempFileNameA GetTempFileName; - alias GetTempPathA GetTempPath; - alias GetUserNameA GetUserName; - alias GetVersionExA GetVersionEx; - alias GetVolumeInformationA GetVolumeInformation; - alias GetWindowsDirectoryA GetWindowsDirectory; - alias GlobalAddAtomA GlobalAddAtom; - alias GlobalFindAtomA GlobalFindAtom; - alias GlobalGetAtomNameA GlobalGetAtomName; - alias IsBadStringPtrA IsBadStringPtr; - alias LoadLibraryA LoadLibrary; - alias LoadLibraryExA LoadLibraryEx; - alias lstrcatA lstrcat; - alias lstrcmpA lstrcmp; - alias lstrcmpiA lstrcmpi; - alias lstrcpyA lstrcpy; - alias lstrcpynA lstrcpyn; - alias lstrlenA lstrlen; - alias MoveFileA MoveFile; - alias OpenEventA OpenEvent; - alias OpenMutexA OpenMutex; - alias OpenSemaphoreA OpenSemaphore; - alias OutputDebugStringA OutputDebugString; - alias RemoveDirectoryA RemoveDirectory; - alias SearchPathA SearchPath; - alias SetComputerNameA SetComputerName; - alias SetCurrentDirectoryA SetCurrentDirectory; - alias SetDefaultCommConfigA SetDefaultCommConfig; - alias SetEnvironmentVariableA SetEnvironmentVariable; - alias SetFileAttributesA SetFileAttributes; - alias SetVolumeLabelA SetVolumeLabel; - alias WaitNamedPipeA WaitNamedPipe; - alias WritePrivateProfileSectionA WritePrivateProfileSection; - alias WritePrivateProfileStringA WritePrivateProfileString; - alias WritePrivateProfileStructA WritePrivateProfileStruct; - alias WriteProfileSectionA WriteProfileSection; - alias WriteProfileStringA WriteProfileString; - - static if (_WIN32_WINDOWS >= 0x410) { - alias CreateWaitableTimerA CreateWaitableTimer; - alias GetFileAttributesExA GetFileAttributesEx; - alias GetLongPathNameA GetLongPathName; - alias QueryDosDeviceA QueryDosDevice; - } - - static if (_WIN32_WINNT_ONLY) { - alias HW_PROFILE_INFOA HW_PROFILE_INFO; - alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; - alias BackupEventLogA BackupEventLog; - alias ClearEventLogA ClearEventLog; - alias CreateNamedPipeA CreateNamedPipe; - alias CreateProcessAsUserA CreateProcessAsUser; - alias DefineDosDeviceA DefineDosDevice; - alias FindFirstFileExA FindFirstFileEx; - alias GetBinaryTypeA GetBinaryType; - alias GetCompressedFileSizeA GetCompressedFileSize; - alias GetFileSecurityA GetFileSecurity; - alias LogonUserA LogonUser; - alias LookupAccountNameA LookupAccountName; - alias LookupAccountSidA LookupAccountSid; - alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; - alias LookupPrivilegeNameA LookupPrivilegeName; - alias LookupPrivilegeValueA LookupPrivilegeValue; - alias MoveFileExA MoveFileEx; - alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; - alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; - alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; - alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; - alias OpenBackupEventLogA OpenBackupEventLog; - alias OpenEventLogA OpenEventLog; - alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; - alias ReadEventLogA ReadEventLog; - alias RegisterEventSourceA RegisterEventSource; - alias ReportEventA ReportEvent; - alias SetFileSecurityA SetFileSecurity; - alias UpdateResourceA UpdateResource; - - static if (_WIN32_WINNT >= 0x500) { - alias CreateFileMappingA CreateFileMapping; - alias CreateHardLinkA CreateHardLink; - alias CreateJobObjectA CreateJobObject; - alias DeleteVolumeMountPointA DeleteVolumeMountPoint; - alias DnsHostnameToComputerNameA DnsHostnameToComputerName; - alias EncryptFileA EncryptFile; - alias FileEncryptionStatusA FileEncryptionStatus; - alias FindFirstVolumeA FindFirstVolume; - alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; - alias FindNextVolumeA FindNextVolume; - alias FindNextVolumeMountPointA FindNextVolumeMountPoint; - alias GetModuleHandleExA GetModuleHandleEx; - alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; - alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; - alias GetVolumePathNameA GetVolumePathName; - alias OpenFileMappingA OpenFileMapping; - alias ReplaceFileA ReplaceFile; - alias SetVolumeMountPointA SetVolumeMountPoint; - alias VerifyVersionInfoA VerifyVersionInfo; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ACTCTXA ACTCTX; - alias CheckNameLegalDOS8Dot3A CheckNameLegalDOS8Dot3; - alias CreateActCtxA CreateActCtx; - alias FindActCtxSectionStringA FindActCtxSectionString; - alias GetSystemWow64DirectoryA GetSystemWow64Directory; - alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; - alias SetFileShortNameA SetFileShortName; - } - - static if (_WIN32_WINNT >= 0x502) { - alias GetDllDirectoryA GetDllDirectory; - alias SetDllDirectoryA SetDllDirectory; - alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; - } - } -} - -alias STARTUPINFO* LPSTARTUPINFO; -alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; - -static if (_WIN32_WINNT_ONLY) { - alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; - - static if (_WIN32_WINNT >= 0x501) { - alias ACTCTX* PACTCTX, PCACTCTX; - } -} +/***********************************************************************\ +* winbase.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.10 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winbase; +pragma(lib, "kernel32"); + +/** +Translation Notes: +The following macros are obsolete, and have no effect. + +LockSegment(w), MakeProcInstance(p, i), UnlockResource(h), UnlockSegment(w) +FreeModule(m), FreeProcInstance(p), GetFreeSpace(w), DefineHandleTable(w) +SetSwapAreaSize(w), LimitEmsPages(n), Yield() + +// The following Win16 functions are obselete in Win32. + + int _hread(HFILE, LPVOID, int); + int _hwrite(HFILE, LPCSTR, int); + HFILE _lclose(HFILE); + HFILE _lcreat(LPCSTR, int); + LONG _llseek(HFILE, LONG, int); + HFILE _lopen(LPCSTR, int); + UINT _lread(HFILE, LPVOID, UINT); + UINT _lwrite(HFILE, LPCSTR, UINT); + SIZE_T GlobalCompact(DWORD); + VOID GlobalFix(HGLOBAL); +* MSDN contradicts itself on GlobalFlags: +* "This function is provided only for compatibility with 16-bit versions of Windows." +* but also requires Windows 2000 or above + UINT GlobalFlags(HGLOBAL); + VOID GlobalUnfix(HGLOBAL); + BOOL GlobalUnWire(HGLOBAL); + PVOID GlobalWire(HGLOBAL); + SIZE_T LocalCompact(UINT); + UINT LocalFlags(HLOCAL); + SIZE_T LocalShrink(HLOCAL, UINT); + +// These are not required for DMD. + +//FIXME: +// #ifndef UNDER_CE + int WinMain(HINSTANCE, HINSTANCE, LPSTR, int); +#else + int WinMain(HINSTANCE, HINSTANCE, LPWSTR, int); +#endif +int wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); + +*/ + +import win32.windef, win32.winver; +private import win32.basetyps, win32.w32api, win32.winnt; + +// FIXME: +alias void va_list; + + +/+ +//-------------------------------------- +// These functions are problematic + +version(UseNtoSKernel) {}else { + /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h + as __fastcall functions, but are exported from kernel32.dll as __stdcall */ + static if (_WIN32_WINNT >= 0x501) { + VOID InitializeSListHead(PSLIST_HEADER); + } + LONG InterlockedCompareExchange(LPLONG, LONG, LONG); + // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); + (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) + LONG InterlockedDecrement(LPLONG); + LONG InterlockedExchange(LPLONG, LONG); + // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); + (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) + LONG InterlockedExchangeAdd(LPLONG, LONG); + + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); + } + LONG InterlockedIncrement(LPLONG); + static if (_WIN32_WINNT >= 0x501) { + PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); + PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); + } +} // #endif // __USE_NTOSKRNL__ +//-------------------------------------- ++/ + +// COMMPROP structure, used by GetCommProperties() +// ----------------------------------------------- + +// Communications provider type +enum : DWORD { + PST_UNSPECIFIED, + PST_RS232, + PST_PARALLELPORT, + PST_RS422, + PST_RS423, + PST_RS449, + PST_MODEM, // = 6 + PST_FAX = 0x0021, + PST_SCANNER = 0x0022, + PST_NETWORK_BRIDGE = 0x0100, + PST_LAT = 0x0101, + PST_TCPIP_TELNET = 0x0102, + PST_X25 = 0x0103 +} + +// Max baud rate +enum : DWORD { + BAUD_075 = 0x00000001, + BAUD_110 = 0x00000002, + BAUD_134_5 = 0x00000004, + BAUD_150 = 0x00000008, + BAUD_300 = 0x00000010, + BAUD_600 = 0x00000020, + BAUD_1200 = 0x00000040, + BAUD_1800 = 0x00000080, + BAUD_2400 = 0x00000100, + BAUD_4800 = 0x00000200, + BAUD_7200 = 0x00000400, + BAUD_9600 = 0x00000800, + BAUD_14400 = 0x00001000, + BAUD_19200 = 0x00002000, + BAUD_38400 = 0x00004000, + BAUD_56K = 0x00008000, + BAUD_128K = 0x00010000, + BAUD_115200 = 0x00020000, + BAUD_57600 = 0x00040000, + BAUD_USER = 0x10000000 +} + +// Comm capabilities +enum : DWORD { + PCF_DTRDSR = 0x0001, + PCF_RTSCTS = 0x0002, + PCF_RLSD = 0x0004, + PCF_PARITY_CHECK = 0x0008, + PCF_XONXOFF = 0x0010, + PCF_SETXCHAR = 0x0020, + PCF_TOTALTIMEOUTS = 0x0040, + PCF_INTTIMEOUTS = 0x0080, + PCF_SPECIALCHARS = 0x0100, + PCF_16BITMODE = 0x0200 +} + +enum : DWORD { + SP_PARITY = 1, + SP_BAUD = 2, + SP_DATABITS = 4, + SP_STOPBITS = 8, + SP_HANDSHAKING = 16, + SP_PARITY_CHECK = 32, + SP_RLSD = 64 +} + +enum : DWORD { + DATABITS_5 = 1, + DATABITS_6 = 2, + DATABITS_7 = 4, + DATABITS_8 = 8, + DATABITS_16 = 16, + DATABITS_16X = 32 +} + +enum : WORD { + STOPBITS_10 = 0x0001, + STOPBITS_15 = 0x0002, + STOPBITS_20 = 0x0004, + PARITY_NONE = 0x0100, + PARITY_ODD = 0x0200, + PARITY_EVEN = 0x0400, + PARITY_MARK = 0x0800, + PARITY_SPACE = 0x1000 +} + +// used by dwServiceMask +enum SP_SERIALCOMM = 1; + +struct COMMPROP { + WORD wPacketLength; + WORD wPacketVersion; + DWORD dwServiceMask; + DWORD dwReserved1; + DWORD dwMaxTxQueue; + DWORD dwMaxRxQueue; + DWORD dwMaxBaud; + DWORD dwProvSubType; + DWORD dwProvCapabilities; + DWORD dwSettableParams; + DWORD dwSettableBaud; + WORD wSettableData; + WORD wSettableStopParity; + DWORD dwCurrentTxQueue; + DWORD dwCurrentRxQueue; + DWORD dwProvSpec1; + DWORD dwProvSpec2; + WCHAR _wcProvChar; + + WCHAR* wcProvChar() { return &_wcProvChar; } +} +alias COMMPROP* LPCOMMPROP; + +// ---------- + +// for DEBUG_EVENT +enum : DWORD { + EXCEPTION_DEBUG_EVENT = 1, + CREATE_THREAD_DEBUG_EVENT, + CREATE_PROCESS_DEBUG_EVENT, + EXIT_THREAD_DEBUG_EVENT, + EXIT_PROCESS_DEBUG_EVENT, + LOAD_DLL_DEBUG_EVENT, + UNLOAD_DLL_DEBUG_EVENT, + OUTPUT_DEBUG_STRING_EVENT, + RIP_EVENT +} + +const HFILE HFILE_ERROR = cast(HFILE) (-1); + +// for SetFilePointer() +enum : DWORD { + FILE_BEGIN = 0, + FILE_CURRENT = 1, + FILE_END = 2 +} +const DWORD INVALID_SET_FILE_POINTER = -1; + + +// for OpenFile() +deprecated enum : UINT { + OF_READ = 0, + OF_WRITE = 0x0001, + OF_READWRITE = 0x0002, + OF_SHARE_COMPAT = 0, + OF_SHARE_EXCLUSIVE = 0x0010, + OF_SHARE_DENY_WRITE = 0x0020, + OF_SHARE_DENY_READ = 0x0030, + OF_SHARE_DENY_NONE = 0x0040, + OF_PARSE = 0x0100, + OF_DELETE = 0x0200, + OF_VERIFY = 0x0400, + OF_CANCEL = 0x0800, + OF_CREATE = 0x1000, + OF_PROMPT = 0x2000, + OF_EXIST = 0x4000, + OF_REOPEN = 0x8000 +} + +enum : DWORD { + NMPWAIT_NOWAIT = 1, + NMPWAIT_WAIT_FOREVER = -1, + NMPWAIT_USE_DEFAULT_WAIT = 0 +} + +// for ClearCommError() +const DWORD + CE_RXOVER = 0x0001, + CE_OVERRUN = 0x0002, + CE_RXPARITY = 0x0004, + CE_FRAME = 0x0008, + CE_BREAK = 0x0010, + CE_TXFULL = 0x0100, + CE_PTO = 0x0200, + CE_IOE = 0x0400, + CE_DNS = 0x0800, + CE_OOP = 0x1000, + CE_MODE = 0x8000; + +// for CopyProgressRoutine callback. +enum : DWORD { + PROGRESS_CONTINUE = 0, + PROGRESS_CANCEL = 1, + PROGRESS_STOP = 2, + PROGRESS_QUIET = 3 +} + +enum : DWORD { + CALLBACK_CHUNK_FINISHED = 0, + CALLBACK_STREAM_SWITCH = 1 +} + +// CopyFileEx() +enum : DWORD { + COPY_FILE_FAIL_IF_EXISTS = 1, + COPY_FILE_RESTARTABLE = 2 +} + +enum : DWORD { + FILE_MAP_COPY = 1, + FILE_MAP_WRITE = 2, + FILE_MAP_READ = 4, + FILE_MAP_ALL_ACCESS = 0x000F001F +} + +enum : DWORD { + MUTEX_ALL_ACCESS = 0x001f0001, + MUTEX_MODIFY_STATE = 0x00000001, + SEMAPHORE_ALL_ACCESS = 0x001f0003, + SEMAPHORE_MODIFY_STATE = 0x00000002, + EVENT_ALL_ACCESS = 0x001f0003, + EVENT_MODIFY_STATE = 0x00000002 +} + +// CreateNamedPipe() +enum : DWORD { + PIPE_ACCESS_INBOUND = 1, + PIPE_ACCESS_OUTBOUND = 2, + PIPE_ACCESS_DUPLEX = 3 +} + +const DWORD + PIPE_TYPE_BYTE = 0, + PIPE_TYPE_MESSAGE = 4, + PIPE_READMODE_BYTE = 0, + PIPE_READMODE_MESSAGE = 2, + PIPE_WAIT = 0, + PIPE_NOWAIT = 1; + +// GetNamedPipeInfo() +const DWORD + PIPE_CLIENT_END = 0, + PIPE_SERVER_END = 1; + +const DWORD PIPE_UNLIMITED_INSTANCES = 255; + +// dwCreationFlags for CreateProcess() and CreateProcessAsUser() +enum : DWORD { + DEBUG_PROCESS = 0x00000001, + DEBUG_ONLY_THIS_PROCESS = 0x00000002, + CREATE_SUSPENDED = 0x00000004, + DETACHED_PROCESS = 0x00000008, + CREATE_NEW_CONSOLE = 0x00000010, + NORMAL_PRIORITY_CLASS = 0x00000020, + IDLE_PRIORITY_CLASS = 0x00000040, + HIGH_PRIORITY_CLASS = 0x00000080, + REALTIME_PRIORITY_CLASS = 0x00000100, + CREATE_NEW_PROCESS_GROUP = 0x00000200, + CREATE_UNICODE_ENVIRONMENT = 0x00000400, + CREATE_SEPARATE_WOW_VDM = 0x00000800, + CREATE_SHARED_WOW_VDM = 0x00001000, + CREATE_FORCEDOS = 0x00002000, + BELOW_NORMAL_PRIORITY_CLASS = 0x00004000, + ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000, + CREATE_BREAKAWAY_FROM_JOB = 0x01000000, + CREATE_WITH_USERPROFILE = 0x02000000, + CREATE_DEFAULT_ERROR_MODE = 0x04000000, + CREATE_NO_WINDOW = 0x08000000, + PROFILE_USER = 0x10000000, + PROFILE_KERNEL = 0x20000000, + PROFILE_SERVER = 0x40000000 +} + +const DWORD CONSOLE_TEXTMODE_BUFFER = 1; + +// CreateFile() +enum : DWORD { + CREATE_NEW = 1, + CREATE_ALWAYS, + OPEN_EXISTING, + OPEN_ALWAYS, + TRUNCATE_EXISTING +} + +// CreateFile() +const DWORD + FILE_FLAG_WRITE_THROUGH = 0x80000000, + FILE_FLAG_OVERLAPPED = 0x40000000, + FILE_FLAG_NO_BUFFERING = 0x20000000, + FILE_FLAG_RANDOM_ACCESS = 0x10000000, + FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, + FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, + FILE_FLAG_POSIX_SEMANTICS = 0x01000000, + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, + FILE_FLAG_OPEN_NO_RECALL = 0x00100000; + +static if (_WIN32_WINNT >= 0x500) { + const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; +} + +// for CreateFile() +const DWORD + SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, + SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, + SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, + SECURITY_DELEGATION = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, + SECURITY_CONTEXT_TRACKING = 0x00040000, + SECURITY_EFFECTIVE_ONLY = 0x00080000, + SECURITY_SQOS_PRESENT = 0x00100000, + SECURITY_VALID_SQOS_FLAGS = 0x001F0000; + + +// Thread exit code +const DWORD STILL_ACTIVE = 0x103; + +/* ??? The only documentation of this seems to be about Windows CE and to + * state what _doesn't_ support it. + */ +const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; + +// GetBinaryType() +enum : DWORD { + SCS_32BIT_BINARY = 0, + SCS_DOS_BINARY, + SCS_WOW_BINARY, + SCS_PIF_BINARY, + SCS_POSIX_BINARY, + SCS_OS216_BINARY +} + +const size_t + MAX_COMPUTERNAME_LENGTH = 15, + HW_PROFILE_GUIDLEN = 39, + MAX_PROFILE_LEN = 80; + +// HW_PROFILE_INFO +const DWORD + DOCKINFO_UNDOCKED = 1, + DOCKINFO_DOCKED = 2, + DOCKINFO_USER_SUPPLIED = 4, + DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, + DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; + +// DriveType(), RealDriveType() +enum : int { + DRIVE_UNKNOWN = 0, + DRIVE_NO_ROOT_DIR, + DRIVE_REMOVABLE, + DRIVE_FIXED, + DRIVE_REMOTE, + DRIVE_CDROM, + DRIVE_RAMDISK +} + +// GetFileType() +enum : DWORD { + FILE_TYPE_UNKNOWN = 0, + FILE_TYPE_DISK, + FILE_TYPE_CHAR, + FILE_TYPE_PIPE, + FILE_TYPE_REMOTE = 0x8000 +} + +// Get/SetHandleInformation() +const DWORD + HANDLE_FLAG_INHERIT = 0x01, + HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; + +enum : DWORD { + STD_INPUT_HANDLE = 0xFFFFFFF6, + STD_OUTPUT_HANDLE = 0xFFFFFFF5, + STD_ERROR_HANDLE = 0xFFFFFFF4 +} + +enum HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) (-1); + +enum : DWORD { + GET_TAPE_MEDIA_INFORMATION = 0, + GET_TAPE_DRIVE_INFORMATION = 1 +} + +enum : DWORD { + SET_TAPE_MEDIA_INFORMATION = 0, + SET_TAPE_DRIVE_INFORMATION = 1 +} + +// SetThreadPriority()/GetThreadPriority() +enum : int { + THREAD_PRIORITY_IDLE = -15, + THREAD_PRIORITY_LOWEST = -2, + THREAD_PRIORITY_BELOW_NORMAL = -1, + THREAD_PRIORITY_NORMAL = 0, + THREAD_PRIORITY_ABOVE_NORMAL = 1, + THREAD_PRIORITY_HIGHEST = 2, + THREAD_PRIORITY_TIME_CRITICAL = 15, + THREAD_PRIORITY_ERROR_RETURN = 2147483647 +} + +enum : DWORD { + TIME_ZONE_ID_UNKNOWN, + TIME_ZONE_ID_STANDARD, + TIME_ZONE_ID_DAYLIGHT, + TIME_ZONE_ID_INVALID = 0xFFFFFFFF +} + +const DWORD + FS_CASE_SENSITIVE = 1, + FS_CASE_IS_PRESERVED = 2, + FS_UNICODE_STORED_ON_DISK = 4, + FS_PERSISTENT_ACLS = 8, + FS_FILE_COMPRESSION = 16, + FS_VOL_IS_COMPRESSED = 32768; + +// Flags for GlobalAlloc +const UINT + GMEM_FIXED = 0, + GMEM_MOVEABLE = 0x0002, + GMEM_ZEROINIT = 0x0040, + GPTR = 0x0040, + GHND = 0x0042, + GMEM_MODIFY = 0x0080, // used only for GlobalRealloc + GMEM_VALID_FLAGS = 0x7F72; + +/+ // Obselete flags (Win16 only) + GMEM_NOCOMPACT=16; + GMEM_NODISCARD=32; + GMEM_DISCARDABLE=256; + GMEM_NOT_BANKED=4096; + GMEM_LOWER=4096; + GMEM_SHARE=8192; + GMEM_DDESHARE=8192; + + GMEM_LOCKCOUNT=255; + +// for GlobalFlags() + GMEM_DISCARDED = 16384; + GMEM_INVALID_HANDLE = 32768; + + GMEM_NOTIFY = 16384; ++/ + +const UINT + LMEM_FIXED = 0, + LMEM_MOVEABLE = 0x0002, + LMEM_NONZEROLPTR = 0, + NONZEROLPTR = 0, + LMEM_NONZEROLHND = 0x0002, + NONZEROLHND = 0x0002, + LMEM_DISCARDABLE = 0x0F00, + LMEM_NOCOMPACT = 0x0010, + LMEM_NODISCARD = 0x0020, + LMEM_ZEROINIT = 0x0040, + LPTR = 0x0040, + LHND = 0x0042, + LMEM_MODIFY = 0x0080, + LMEM_LOCKCOUNT = 0x00FF, + LMEM_DISCARDED = 0x4000, + LMEM_INVALID_HANDLE = 0x8000; + + + +// used in EXCEPTION_RECORD +enum : DWORD { + STATUS_WAIT_0 = 0, + STATUS_ABANDONED_WAIT_0 = 0x00000080, + STATUS_USER_APC = 0x000000C0, + STATUS_TIMEOUT = 0x00000102, + STATUS_PENDING = 0x00000103, + + STATUS_SEGMENT_NOTIFICATION = 0x40000005, + STATUS_GUARD_PAGE_VIOLATION = 0x80000001, + STATUS_DATATYPE_MISALIGNMENT = 0x80000002, + STATUS_BREAKPOINT = 0x80000003, + STATUS_SINGLE_STEP = 0x80000004, + + STATUS_ACCESS_VIOLATION = 0xC0000005, + STATUS_IN_PAGE_ERROR = 0xC0000006, + STATUS_INVALID_HANDLE = 0xC0000008, + + STATUS_NO_MEMORY = 0xC0000017, + 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, + STATUS_DLL_INIT_FAILED = 0xC0000142, + STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, + + CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT, + + EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION, + EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT, + EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT, + EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP, + EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED, + EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND, + EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO, + EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT, + EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION, + EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW, + EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK, + EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW, + EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO, + EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW, + EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION, + EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR, + EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION, + EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION, + EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW, + EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION, + EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION, + EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE +} + +// for PROCESS_HEAP_ENTRY +const WORD + PROCESS_HEAP_REGION = 1, + PROCESS_HEAP_UNCOMMITTED_RANGE = 2, + PROCESS_HEAP_ENTRY_BUSY = 4, + PROCESS_HEAP_ENTRY_MOVEABLE = 16, + PROCESS_HEAP_ENTRY_DDESHARE = 32; + +// for LoadLibraryEx() +const DWORD + DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier + LOAD_LIBRARY_AS_DATAFILE = 0x02, + LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, + LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later + +// for LockFile() +const DWORD + LOCKFILE_FAIL_IMMEDIATELY = 1, + LOCKFILE_EXCLUSIVE_LOCK = 2; + +const MAXIMUM_WAIT_OBJECTS = 64; +const MAXIMUM_SUSPEND_COUNT = 0x7F; + +const WAIT_OBJECT_0 = 0; +const WAIT_ABANDONED_0 = 128; + +//const WAIT_TIMEOUT=258; // also in winerror.h + +enum : DWORD { + WAIT_IO_COMPLETION = 0x000000C0, + WAIT_ABANDONED = 0x00000080, + WAIT_FAILED = 0xFFFFFFFF +} + +// PurgeComm() +const DWORD + PURGE_TXABORT = 1, + PURGE_RXABORT = 2, + PURGE_TXCLEAR = 4, + PURGE_RXCLEAR = 8; + +// ReadEventLog() +const DWORD + EVENTLOG_SEQUENTIAL_READ = 1, + EVENTLOG_SEEK_READ = 2, + EVENTLOG_FORWARDS_READ = 4, + EVENTLOG_BACKWARDS_READ = 8; + +// ReportEvent() +enum : WORD { + EVENTLOG_SUCCESS = 0, + EVENTLOG_ERROR_TYPE = 1, + EVENTLOG_WARNING_TYPE = 2, + EVENTLOG_INFORMATION_TYPE = 4, + EVENTLOG_AUDIT_SUCCESS = 8, + EVENTLOG_AUDIT_FAILURE = 16 +} + +// FormatMessage() +const DWORD + FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, + FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, + FORMAT_MESSAGE_FROM_STRING = 0x0400, + FORMAT_MESSAGE_FROM_HMODULE = 0x0800, + FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, + FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; + +const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; + +// also in ddk/ntapi.h +// To restore default error mode, call SetErrorMode(0) +enum { + SEM_FAILCRITICALERRORS = 0x0001, + SEM_NOGPFAULTERRORBOX = 0x0002, + SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, + SEM_NOOPENFILEERRORBOX = 0x8000 +} +// end ntapi.h + +enum { + SLE_ERROR = 1, + SLE_MINORERROR, + SLE_WARNING +} + +const SHUTDOWN_NORETRY = 1; + +// Return type for exception filters. +enum : LONG { + EXCEPTION_EXECUTE_HANDLER = 1, + EXCEPTION_CONTINUE_EXECUTION = -1, + EXCEPTION_CONTINUE_SEARCH = 0 +} + +enum : ATOM { + MAXINTATOM = 0xC000, + INVALID_ATOM = 0 +} + +const IGNORE = 0; +const INFINITE = 0xFFFFFFFF; + +// EscapeCommFunction() +enum { + SETXOFF = 1, + SETXON, + SETRTS, + CLRRTS, + SETDTR, + CLRDTR, // = 6 + SETBREAK = 8, + CLRBREAK = 9 +} + + +// for SetCommMask() +const DWORD + EV_RXCHAR = 0x0001, + EV_RXFLAG = 0x0002, + EV_TXEMPTY = 0x0004, + EV_CTS = 0x0008, + EV_DSR = 0x0010, + EV_RLSD = 0x0020, + EV_BREAK = 0x0040, + EV_ERR = 0x0080, + EV_RING = 0x0100, + EV_PERR = 0x0200, + EV_RX80FULL = 0x0400, + EV_EVENT1 = 0x0800, + EV_EVENT2 = 0x1000; + +// GetCommModemStatus() +const DWORD + MS_CTS_ON = 0x0010, + MS_DSR_ON = 0x0020, + MS_RING_ON = 0x0040, + MS_RLSD_ON = 0x0080; + + +// DCB +enum : BYTE { + NOPARITY = 0, + ODDPARITY, + EVENPARITY, + MARKPARITY, + SPACEPARITY +} +// DCB +enum : BYTE { + ONESTOPBIT = 0, + ONE5STOPBITS, + TWOSTOPBITS +} +// DCB +enum : DWORD { + 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 +} +// DCB, 2-bit bitfield +enum { + DTR_CONTROL_DISABLE = 0, + DTR_CONTROL_ENABLE, + DTR_CONTROL_HANDSHAKE +} + +// DCB, 2-bit bitfield +enum { + RTS_CONTROL_DISABLE = 0, + RTS_CONTROL_ENABLE, + RTS_CONTROL_HANDSHAKE, + RTS_CONTROL_TOGGLE, +} + +// WIN32_STREAM_ID +enum : DWORD { + BACKUP_INVALID = 0, + BACKUP_DATA, + BACKUP_EA_DATA, + BACKUP_SECURITY_DATA, + BACKUP_ALTERNATE_DATA, + BACKUP_LINK, + BACKUP_PROPERTY_DATA, + BACKUP_OBJECT_ID, + BACKUP_REPARSE_DATA, + BACKUP_SPARSE_BLOCK +} + +// WIN32_STREAM_ID +enum : DWORD { + STREAM_NORMAL_ATTRIBUTE = 0, + STREAM_MODIFIED_WHEN_READ = 1, + STREAM_CONTAINS_SECURITY = 2, + STREAM_CONTAINS_PROPERTIES = 4 +} + +// STARTUPINFO +const DWORD + STARTF_USESHOWWINDOW = 0x0001, + STARTF_USESIZE = 0x0002, + STARTF_USEPOSITION = 0x0004, + STARTF_USECOUNTCHARS = 0x0008, + STARTF_USEFILLATTRIBUTE = 0x0010, + STARTF_RUNFULLSCREEN = 0x0020, + STARTF_FORCEONFEEDBACK = 0x0040, + STARTF_FORCEOFFFEEDBACK = 0x0080, + STARTF_USESTDHANDLES = 0x0100, + STARTF_USEHOTKEY = 0x0200; + +// ??? +enum { + TC_NORMAL = 0, + TC_HARDERR = 1, + TC_GP_TRAP = 2, + TC_SIGNAL = 3 +} + +/+ These seem to be Windows CE-specific +enum { + AC_LINE_OFFLINE = 0, + AC_LINE_ONLINE = 1, + AC_LINE_BACKUP_POWER = 2, + AC_LINE_UNKNOWN = 255 +} + +enum { + BATTERY_FLAG_HIGH = 1, + BATTERY_FLAG_LOW = 2, + BATTERY_FLAG_CRITICAL = 4, + BATTERY_FLAG_CHARGING = 8, + BATTERY_FLAG_NO_BATTERY = 128, + BATTERY_FLAG_UNKNOWN = 255, + BATTERY_PERCENTAGE_UNKNOWN = 255, + BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF +} ++/ + +// ??? +const HINSTANCE_ERROR = 32; + +// returned from GetFileSize() +const DWORD INVALID_FILE_SIZE = 0xFFFFFFFF; + +const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; + +// GetWriteWatch() +const DWORD WRITE_WATCH_FLAG_RESET = 1; + +// for LogonUser() +enum : DWORD { + LOGON32_LOGON_INTERACTIVE = 2, + LOGON32_LOGON_NETWORK = 3, + LOGON32_LOGON_BATCH = 4, + LOGON32_LOGON_SERVICE = 5, + LOGON32_LOGON_UNLOCK = 7 +} + +// for LogonUser() +enum : DWORD { + LOGON32_PROVIDER_DEFAULT, + LOGON32_PROVIDER_WINNT35, + LOGON32_PROVIDER_WINNT40, + LOGON32_PROVIDER_WINNT50 +} + +// for MoveFileEx() +const DWORD + MOVEFILE_REPLACE_EXISTING = 1, + MOVEFILE_COPY_ALLOWED = 2, + MOVEFILE_DELAY_UNTIL_REBOOT = 4, + MOVEFILE_WRITE_THROUGH = 8; + +// DefineDosDevice() +const DWORD + DDD_RAW_TARGET_PATH = 1, + DDD_REMOVE_DEFINITION = 2, + DDD_EXACT_MATCH_ON_REMOVE = 4; + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + LOGON32_LOGON_NETWORK_CLEARTEXT = 8, + LOGON32_LOGON_NEW_CREDENTIALS = 9 + } + + // ReplaceFile() + const DWORD + REPLACEFILE_WRITE_THROUGH = 1, + REPLACEFILE_IGNORE_MERGE_ERRORS = 2; +} + +static if (_WIN32_WINNT >= 0x501) { + const DWORD + GET_MODULE_HANDLE_EX_FLAG_PIN = 1, + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, + GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; + + // for ACTCTX + const DWORD + ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, + ACTCTX_FLAG_LANGID_VALID = 0x02, + ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, + ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x08, + ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x10, + ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x20, + ACTCTX_FLAG_HMODULE_VALID = 0x80; + + // DeactivateActCtx() + const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; + // FindActCtxSectionString() + const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; + // QueryActCtxW() + const DWORD + QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, + QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, + QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; + + enum { + LOGON_WITH_PROFILE = 1, + LOGON_NETCREDENTIALS_ONLY + } +} + +// ---- + +struct FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} +alias FILETIME* PFILETIME, LPFILETIME; + +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; + +struct DCB { + DWORD DCBlength = DCB.sizeof; + DWORD BaudRate; +/+ + DWORD fBinary:1; // Binary Mode (skip EOF check) + DWORD fParity:1; // Enable parity checking + DWORD fOutxCtsFlow:1; // CTS handshaking on output + DWORD fOutxDsrFlow:1; // DSR handshaking on output + DWORD fDtrControl:2; // DTR Flow control + DWORD fDsrSensitivity:1; // DSR Sensitivity + DWORD fTXContinueOnXoff:1; // Continue TX when Xoff sent + DWORD fOutX:1; // Enable output X-ON/X-OFF + DWORD fInX:1; // Enable input X-ON/X-OFF + DWORD fErrorChar:1; // Enable Err Replacement + DWORD fNull:1; // Enable Null stripping + DWORD fRtsControl:2; // Rts Flow control + DWORD fAbortOnError:1; // Abort all reads and writes on Error + DWORD fDummy2:17; // Reserved ++/ + uint _bf; + bool fBinary(bool f) { _bf = (_bf & ~0x0001) | f; return f; } + bool fParity(bool f) { _bf = (_bf & ~0x0002) | (f<<1); return f; } + bool fOutxCtsFlow(bool f) { _bf = (_bf & ~0x0004) | (f<<2); return f; } + bool fOutxDsrFlow(bool f) { _bf = (_bf & ~0x0008) | (f<<3); return f; } + byte fDtrControl(byte x) { _bf = (_bf & ~0x0030) | (x<<4); return cast(byte)(x & 3); } + bool fDsrSensitivity(bool f) { _bf = (_bf & ~0x0040) | (f<<6); return f; } + bool fTXContinueOnXoff(bool f) { _bf = (_bf & ~0x0080) | (f<<7); return f; } + bool fOutX(bool f) { _bf = (_bf & ~0x0100) | (f<<8); return f; } + bool fInX(bool f) { _bf = (_bf & ~0x0200) | (f<<9); return f; } + bool fErrorChar(bool f) { _bf = (_bf & ~0x0400) | (f<<10); return f; } + bool fNull(bool f) { _bf = (_bf & ~0x0800) | (f<<11); return f; } + byte fRtsControl(byte x) { _bf = (_bf & ~0x3000) | (x<<12); return cast(byte)(x & 3); } + bool fAbortOnError(bool f) { _bf = (_bf & ~0x4000) | (f<<14); return f; } + + bool fBinary() { return cast(bool) (_bf & 1); } + bool fParity() { return cast(bool) (_bf & 2); } + bool fOutxCtsFlow() { return cast(bool) (_bf & 4); } + bool fOutxDsrFlow() { return cast(bool) (_bf & 8); } + byte fDtrControl() { return cast(byte) ((_bf & (32+16))>>4); } + bool fDsrSensitivity() { return cast(bool) (_bf & 64); } + bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } + bool fOutX() { return cast(bool) (_bf & 256); } + bool fInX() { return cast(bool) (_bf & 512); } + bool fErrorChar() { return cast(bool) (_bf & 1024); } + bool fNull() { return cast(bool) (_bf & 2048); } + byte fRtsControl() { return cast(byte) ((_bf & (4096+8192))>>12); } + bool fAbortOnError() { return cast(bool) (_bf & 16384); } + + WORD wReserved; + WORD XonLim; + WORD XoffLim; + BYTE ByteSize; + BYTE Parity; + BYTE StopBits; + char XonChar; + char XoffChar; + char ErrorChar; + char EofChar; + char EvtChar; + WORD wReserved1; +} +alias DCB* LPDCB; + +struct COMMCONFIG { + DWORD dwSize = COMMCONFIG.sizeof; + WORD wVersion; + WORD wReserved; + DCB dcb; + DWORD dwProviderSubType; + DWORD dwProviderOffset; + DWORD dwProviderSize; + WCHAR _wcProviderData; + + WCHAR* wcProviderData() { return &_wcProviderData; } +} +alias COMMCONFIG* LPCOMMCONFIG; + +struct COMMTIMEOUTS { + DWORD ReadIntervalTimeout; + DWORD ReadTotalTimeoutMultiplier; + DWORD ReadTotalTimeoutConstant; + DWORD WriteTotalTimeoutMultiplier; + DWORD WriteTotalTimeoutConstant; +} +alias COMMTIMEOUTS* LPCOMMTIMEOUTS; + +struct COMSTAT { +/+ + DWORD fCtsHold:1; + DWORD fDsrHold:1; + DWORD fRlsdHold:1; + DWORD fXoffHold:1; + DWORD fXoffSent:1; + DWORD fEof:1; + DWORD fTxim:1; + DWORD fReserved:25; ++/ + DWORD _bf; + bool fCtsHold(bool f) { _bf = (_bf & ~1) | f; return f; } + bool fDsrHold(bool f) { _bf = (_bf & ~2) | (f<<1); return f; } + bool fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); return f; } + bool fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); return f; } + bool fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); return f; } + bool fEof(bool f) { _bf = (_bf & ~32) | (f<<5); return f; } + bool fTxim(bool f) { _bf = (_bf & ~64) | (f<<6); return f; } + + bool fCtsHold() { return cast(bool) (_bf & 1); } + bool fDsrHold() { return cast(bool) (_bf & 2); } + bool fRlsdHold() { return cast(bool) (_bf & 4); } + bool fXoffHold() { return cast(bool) (_bf & 8); } + bool fXoffSent() { return cast(bool) (_bf & 16); } + bool fEof() { return cast(bool) (_bf & 32); } + bool fTxim() { return cast(bool) (_bf & 64); } + + DWORD cbInQue; + DWORD cbOutQue; +} +alias COMSTAT* LPCOMSTAT; + +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; + WORD fUnicode; +} +alias CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; + +struct CREATE_THREAD_DEBUG_INFO { + HANDLE hThread; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; +} +alias CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; + +struct EXCEPTION_DEBUG_INFO { + EXCEPTION_RECORD ExceptionRecord; + DWORD dwFirstChance; +} +alias EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; + +struct EXIT_THREAD_DEBUG_INFO { + DWORD dwExitCode; +} +alias EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; + +struct EXIT_PROCESS_DEBUG_INFO { + DWORD dwExitCode; +} +alias EXIT_PROCESS_DEBUG_INFO* LPEXIT_PROCESS_DEBUG_INFO; + +struct LOAD_DLL_DEBUG_INFO { + HANDLE hFile; + LPVOID lpBaseOfDll; + DWORD dwDebugInfoFileOffset; + DWORD nDebugInfoSize; + LPVOID lpImageName; + WORD fUnicode; +} +alias LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; + +struct UNLOAD_DLL_DEBUG_INFO { + LPVOID lpBaseOfDll; +} +alias UNLOAD_DLL_DEBUG_INFO* LPUNLOAD_DLL_DEBUG_INFO; + +struct OUTPUT_DEBUG_STRING_INFO { + LPSTR lpDebugStringData; + WORD fUnicode; + WORD nDebugStringLength; +} +alias OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; + +struct RIP_INFO { + DWORD dwError; + DWORD dwType; +} +alias RIP_INFO* LPRIP_INFO; + +struct DEBUG_EVENT { + DWORD dwDebugEventCode; + DWORD dwProcessId; + DWORD dwThreadId; + union { + EXCEPTION_DEBUG_INFO Exception; + CREATE_THREAD_DEBUG_INFO CreateThread; + CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; + EXIT_THREAD_DEBUG_INFO ExitThread; + EXIT_PROCESS_DEBUG_INFO ExitProcess; + LOAD_DLL_DEBUG_INFO LoadDll; + UNLOAD_DLL_DEBUG_INFO UnloadDll; + OUTPUT_DEBUG_STRING_INFO DebugString; + RIP_INFO RipInfo; + } +} +alias DEBUG_EVENT* LPDEBUG_EVENT; + +struct OVERLAPPED { + ULONG_PTR Internal; + ULONG_PTR InternalHigh; + union { + struct { + DWORD Offset; + DWORD OffsetHigh; + } + PVOID Pointer; + } + HANDLE hEvent; +} +alias OVERLAPPED* POVERLAPPED, LPOVERLAPPED; + +struct STARTUPINFOA { + DWORD cb = STARTUPINFOA.sizeof; + LPSTR lpReserved; + LPSTR lpDesktop; + LPSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias STARTUPINFOA* LPSTARTUPINFOA; + +struct STARTUPINFOW { + DWORD cb = STARTUPINFOW.sizeof; + LPWSTR lpReserved; + LPWSTR lpDesktop; + LPWSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias STARTUPINFOW* LPSTARTUPINFOW; + +struct PROCESS_INFORMATION { + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; +} +alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; + +struct CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + CRITICAL_SECTION* CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD[2] Spare; +} +alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; + +struct CRITICAL_SECTION { + PCRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD SpinCount; +} +alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; + +struct SYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; +} +alias SYSTEMTIME* LPSYSTEMTIME; + +struct WIN32_FILE_ATTRIBUTE_DATA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +} +alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; + +struct WIN32_FIND_DATAA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +// #ifdef _WIN32_WCE +// DWORD dwOID; +// #else + DWORD dwReserved0; + DWORD dwReserved1; +// #endif + CHAR[MAX_PATH] cFileName; +// #ifndef _WIN32_WCE + CHAR[14] cAlternateFileName; +// #endif +} +alias WIN32_FIND_DATAA* PWIN32_FIND_DATAA, LPWIN32_FIND_DATAA; + +struct WIN32_FIND_DATAW { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +// #ifdef _WIN32_WCE +// DWORD dwOID; +// #else + DWORD dwReserved0; + DWORD dwReserved1; +// #endif + WCHAR[MAX_PATH] cFileName; +// #ifndef _WIN32_WCE + WCHAR[14] cAlternateFileName; +// #endif +} +alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW, LPWIN32_FIND_DATAW; + +struct WIN32_STREAM_ID { + DWORD dwStreamId; + DWORD dwStreamAttributes; + LARGE_INTEGER Size; + DWORD dwStreamNameSize; + WCHAR _cStreamName; + + WCHAR* cStreamName() { return &_cStreamName; } +} +alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; + +enum FINDEX_INFO_LEVELS { + FindExInfoStandard, + FindExInfoMaxInfoLevel +} + +enum FINDEX_SEARCH_OPS { + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp +} + +enum ACL_INFORMATION_CLASS { + AclRevisionInformation = 1, + AclSizeInformation +} + +struct HW_PROFILE_INFOA { + DWORD dwDockInfo; + CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; + CHAR[MAX_PROFILE_LEN] szHwProfileName; +} +alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; + +struct HW_PROFILE_INFOW { + DWORD dwDockInfo; + WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; + WCHAR[MAX_PROFILE_LEN] szHwProfileName; +} +alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; + +/* ??? MSDN documents this only for Windows CE/Mobile, but it's used by + * GetFileAttributesEx, which is in desktop Windows. + */ +enum GET_FILEEX_INFO_LEVELS { + GetFileExInfoStandard, + GetFileExMaxInfoLevel +} + +struct SYSTEM_INFO { + union { + DWORD dwOemId; + struct { + WORD wProcessorArchitecture; + WORD wReserved; + } + } + DWORD dwPageSize; + PVOID lpMinimumApplicationAddress; + PVOID lpMaximumApplicationAddress; + DWORD_PTR dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; +} +alias SYSTEM_INFO* LPSYSTEM_INFO; + +static if (_WIN32_WINNT >= 0x500) { + struct SYSTEM_POWER_STATUS { + BYTE ACLineStatus; + BYTE BatteryFlag; + BYTE BatteryLifePercent; + BYTE Reserved1; + DWORD BatteryLifeTime; + DWORD BatteryFullLifeTime; + } + alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; +} + +struct TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR[32] StandardName; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR[32] DaylightName; + SYSTEMTIME DaylightDate; + LONG DaylightBias; +} +alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; + +// MSDN documents this, possibly erroneously, as Win2000+. +struct MEMORYSTATUS { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORD dwTotalPhys; + DWORD dwAvailPhys; + DWORD dwTotalPageFile; + DWORD dwAvailPageFile; + DWORD dwTotalVirtual; + DWORD dwAvailVirtual; +} +alias MEMORYSTATUS* LPMEMORYSTATUS; + +static if (_WIN32_WINNT >= 0x500) { + struct MEMORYSTATUSEX { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; + } + alias MEMORYSTATUSEX* LPMEMORYSTATUSEX; +} + +struct LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; + struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + + byte Type(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return cast(byte)(f & 0x1F); } + byte Dpl(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return cast(byte)(f & 3); } + bool Pres(bool f) { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } + + byte LimitHi(byte f) { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return cast(byte)(f & 0x0F); } + bool Sys(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } + // Next bit is reserved + bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } + bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } + + byte Type() { return cast(byte) (Flags1 & 0x1F); } + byte Dpl() { return cast(byte) ((Flags1 & 0x60)>>5); } + bool Pres() { return cast(bool) (Flags1 & 0x80); } + + byte LimitHi() { return cast(byte) (Flags2 & 0x0F); } + bool Sys() { return cast(bool) (Flags2 & 0x10); } + bool Default_Big() { return cast(bool) (Flags2 & 0x40); } + bool Granularity() { return cast(bool) (Flags2 & 0x80); } + } +/+ + union HighWord { + struct Bytes { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; + } + struct Bits { + DWORD BaseMid:8; + DWORD Type:5; + DWORD Dpl:2; + DWORD Pres:1; + DWORD LimitHi:4; + DWORD Sys:1; + DWORD Reserved_0:1; + DWORD Default_Big:1; + DWORD Granularity:1; + DWORD BaseHi:8; + } + } ++/ +} +alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; + +/* As with the other memory management functions and structures, MSDN's + * Windows version info shall be taken with a cup of salt. + */ +struct PROCESS_HEAP_ENTRY { + PVOID lpData; + DWORD cbData; + BYTE cbOverhead; + BYTE iRegionIndex; + WORD wFlags; + union { + struct Block { + HANDLE hMem; + DWORD[3] dwReserved; + } + struct Region { + DWORD dwCommittedSize; + DWORD dwUnCommittedSize; + LPVOID lpFirstBlock; + LPVOID lpLastBlock; + } + } +} +alias PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; + +struct OFSTRUCT { + BYTE cBytes = OFSTRUCT.sizeof; + BYTE fFixedDisk; + WORD nErrCode; + WORD Reserved1; + WORD Reserved2; + CHAR[128] szPathName; // const OFS_MAXPATHNAME = 128; +} +alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; + +/* ??? MSDN documents this only for Windows CE, but it's used by + * ImageGetCertificateData, which is in desktop Windows. + */ +struct WIN_CERTIFICATE { + DWORD dwLength; + WORD wRevision; + WORD wCertificateType; + BYTE _bCertificate; + + BYTE* bCertificate() { return &_bCertificate; } +} +alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; + +static if (_WIN32_WINNT >= 0x500) { + enum COMPUTER_NAME_FORMAT { + ComputerNameNetBIOS, + ComputerNameDnsHostname, + ComputerNameDnsDomain, + ComputerNameDnsFullyQualified, + ComputerNamePhysicalNetBIOS, + ComputerNamePhysicalDnsHostname, + ComputerNamePhysicalDnsDomain, + ComputerNamePhysicalDnsFullyQualified, + ComputerNameMax + } +} + +static if (_WIN32_WINNT >= 0x501) { + struct ACTCTXA { + ULONG cbSize = this.sizeof; + DWORD dwFlags; + LPCSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCSTR lpAssemblyDirectory; + LPCSTR lpResourceName; + LPCSTR lpApplicationName; + HMODULE hModule; + } + alias ACTCTXA* PACTCTXA; + alias const(ACTCTXA)* PCACTCTXA; + + struct ACTCTXW { + ULONG cbSize = this.sizeof; + DWORD dwFlags; + LPCWSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCWSTR lpAssemblyDirectory; + LPCWSTR lpResourceName; + LPCWSTR lpApplicationName; + HMODULE hModule; + } + alias ACTCTXW* PACTCTXW; + alias const(ACTCTXW)* PCACTCTXW; + + struct ACTCTX_SECTION_KEYED_DATA { + ULONG cbSize = this.sizeof; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + HANDLE ulAssemblyRosterIndex; + } + alias ACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; + alias const(ACTCTX_SECTION_KEYED_DATA)* PCACTCTX_SECTION_KEYED_DATA; + + enum MEMORY_RESOURCE_NOTIFICATION_TYPE { + LowMemoryResourceNotification, + HighMemoryResourceNotification + } + +} // (_WIN32_WINNT >= 0x501) + +static if (_WIN32_WINNT >= 0x410) { + /* apparently used only by SetThreadExecutionState (Win2000+) + * and DDK functions (version compatibility not established) + */ + alias DWORD EXECUTION_STATE; +} + +// Callbacks +extern (Windows) { + alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; + alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, + DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; + alias void function(PVOID) LPFIBER_START_ROUTINE; + + alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; + alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; + alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; + alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; + alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; + alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; + alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; + alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; + + alias void function(ULONG_PTR) PAPCFUNC; + alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; + + static if (_WIN32_WINNT >= 0x500) { + alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; + } +} + +LPTSTR MAKEINTATOM()(ushort i) { + return cast(LPTSTR) cast(size_t) i; +} + +extern (Windows) { + ATOM AddAtomA(LPCSTR); + ATOM AddAtomW(LPCWSTR); + BOOL AreFileApisANSI(); + BOOL Beep(DWORD, DWORD); + HANDLE BeginUpdateResourceA(LPCSTR, BOOL); + HANDLE BeginUpdateResourceW(LPCWSTR, BOOL); + BOOL BuildCommDCBA(LPCSTR, LPDCB); + BOOL BuildCommDCBW(LPCWSTR, LPDCB); + BOOL BuildCommDCBAndTimeoutsA(LPCSTR, LPDCB, LPCOMMTIMEOUTS); + BOOL BuildCommDCBAndTimeoutsW(LPCWSTR, LPDCB, LPCOMMTIMEOUTS); + BOOL CallNamedPipeA(LPCSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); + BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); + BOOL CancelDeviceWakeupRequest(HANDLE); + BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); + BOOL ClearCommBreak(HANDLE); + BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); + BOOL CloseHandle(HANDLE); + BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); + BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); + LONG CompareFileTime(const(FILETIME)*, const(FILETIME)*); + BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); + BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); + BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); + BOOL CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); + BOOL CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); + + /+ FIXME + alias memmove RtlMoveMemory; + alias memcpy RtlCopyMemory; + + void RtlFillMemory(PVOID dest, SIZE_T len, BYTE fill) { + memset(dest, fill, len); + } + + void RtlZeroMemory(PVOID dest, SIZE_T len) { + RtlFillMemory(dest, len, 0); + } + + alias RtlMoveMemory MoveMemory; + alias RtlCopyMemory CopyMemory; + alias RtlFillMemory FillMemory; + alias RtlZeroMemory ZeroMemory; + +/ + BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryExA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateDirectoryExW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); + HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); + HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); + HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); + HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); + HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); + HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateMailslotW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); + HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); + BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); + BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); + BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); + HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); + HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); + BOOL DebugActiveProcess(DWORD); + void DebugBreak(); + ATOM DeleteAtom(ATOM); + void DeleteCriticalSection(PCRITICAL_SECTION); + BOOL DeleteFileA(LPCSTR); + BOOL DeleteFileW(LPCWSTR); + BOOL DisableThreadLibraryCalls(HMODULE); + BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); + BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); + BOOL EndUpdateResourceA(HANDLE, BOOL); + BOOL EndUpdateResourceW(HANDLE, BOOL); + void EnterCriticalSection(LPCRITICAL_SECTION); + BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); + BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); + BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); + BOOL EnumResourceNamesW(HMODULE, LPCWSTR, ENUMRESNAMEPROC, LONG_PTR); + BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); + BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); + BOOL EscapeCommFunction(HANDLE, DWORD); + void ExitProcess(UINT); // Never returns + void ExitThread(DWORD); // Never returns + DWORD ExpandEnvironmentStringsA(LPCSTR, LPSTR, DWORD); + DWORD ExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD); + void FatalAppExitA(UINT, LPCSTR); + void FatalAppExitW(UINT, LPCWSTR); + void FatalExit(int); + BOOL FileTimeToDosDateTime(const(FILETIME)*, LPWORD, LPWORD); + BOOL FileTimeToLocalFileTime(const(FILETIME)*, LPFILETIME); + BOOL FileTimeToSystemTime(const(FILETIME)*, LPSYSTEMTIME); + ATOM FindAtomA(LPCSTR); + ATOM FindAtomW(LPCWSTR); + BOOL FindClose(HANDLE); + BOOL FindCloseChangeNotification(HANDLE); + HANDLE FindFirstChangeNotificationA(LPCSTR, BOOL, DWORD); + HANDLE FindFirstChangeNotificationW(LPCWSTR, BOOL, DWORD); + HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); + HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); + BOOL FindNextChangeNotification(HANDLE); + BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); + BOOL FindNextFileW(HANDLE, LPWIN32_FIND_DATAW); + HRSRC FindResourceA(HMODULE, LPCSTR, LPCSTR); + HRSRC FindResourceW(HINSTANCE, LPCWSTR, LPCWSTR); + HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); + HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); + BOOL FlushFileBuffers(HANDLE); + BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); + DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); + DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); + BOOL FreeEnvironmentStringsA(LPSTR); + BOOL FreeEnvironmentStringsW(LPWSTR); + BOOL FreeLibrary(HMODULE); + void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns + BOOL FreeResource(HGLOBAL); + UINT GetAtomNameA(ATOM, LPSTR, int); + UINT GetAtomNameW(ATOM, LPWSTR, int); + LPSTR GetCommandLineA(); + LPWSTR GetCommandLineW(); + BOOL GetCommConfig(HANDLE, LPCOMMCONFIG, PDWORD); + BOOL GetCommMask(HANDLE, PDWORD); + BOOL GetCommModemStatus(HANDLE, PDWORD); + BOOL GetCommProperties(HANDLE, LPCOMMPROP); + BOOL GetCommState(HANDLE, LPDCB); + BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); + BOOL GetComputerNameA(LPSTR, PDWORD); + BOOL GetComputerNameW(LPWSTR, PDWORD); + DWORD GetCurrentDirectoryA(DWORD, LPSTR); + DWORD GetCurrentDirectoryW(DWORD, LPWSTR); + HANDLE GetCurrentProcess(); + DWORD GetCurrentProcessId(); + HANDLE GetCurrentThread(); +/* In MinGW: +#ifdef _WIN32_WCE +extern DWORD GetCurrentThreadId(void); +#else +WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); +#endif +*/ + DWORD GetCurrentThreadId(); + + alias GetTickCount GetCurrentTime; + + BOOL GetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, PDWORD); + BOOL GetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, PDWORD); + BOOL GetDiskFreeSpaceA(LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetDiskFreeSpaceW(LPCWSTR, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetDiskFreeSpaceExA(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); + BOOL GetDiskFreeSpaceExW(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); + UINT GetDriveTypeA(LPCSTR); + UINT GetDriveTypeW(LPCWSTR); + LPSTR GetEnvironmentStrings(); // ??? + LPSTR GetEnvironmentStringsA(); + LPWSTR GetEnvironmentStringsW(); + DWORD GetEnvironmentVariableA(LPCSTR, LPSTR, DWORD); + DWORD GetEnvironmentVariableW(LPCWSTR, LPWSTR, DWORD); + BOOL GetExitCodeProcess(HANDLE, PDWORD); + BOOL GetExitCodeThread(HANDLE, PDWORD); + DWORD GetFileAttributesA(LPCSTR); + DWORD GetFileAttributesW(LPCWSTR); + BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); + DWORD GetFileSize(HANDLE, PDWORD); + BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); + DWORD GetFileType(HANDLE); + DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); + DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); + DWORD GetLastError(); + void GetLocalTime(LPSYSTEMTIME); + DWORD GetLogicalDrives(); + DWORD GetLogicalDriveStringsA(DWORD, LPSTR); + DWORD GetLogicalDriveStringsW(DWORD, LPWSTR); + BOOL GetMailslotInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); + DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD); + DWORD GetModuleFileNameW(HINSTANCE, LPWSTR, DWORD); + HMODULE GetModuleHandleA(LPCSTR); + HMODULE GetModuleHandleW(LPCWSTR); + BOOL GetNamedPipeHandleStateA(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); + BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); + BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); + BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); + DWORD GetPriorityClass(HANDLE); + UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); + UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); + DWORD GetPrivateProfileSectionA(LPCSTR, LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileSectionW(LPCWSTR, LPWSTR, DWORD, LPCWSTR); + DWORD GetPrivateProfileSectionNamesA(LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileSectionNamesW(LPWSTR, DWORD, LPCWSTR); + DWORD GetPrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR); + DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); + BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); + BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); + FARPROC GetProcAddress(HINSTANCE, LPCSTR); + BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); + DWORD GetProcessVersion(DWORD); + UINT GetProfileIntA(LPCSTR, LPCSTR, INT); + UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); + DWORD GetProfileSectionA(LPCSTR, LPSTR, DWORD); + DWORD GetProfileSectionW(LPCWSTR, LPWSTR, DWORD); + DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); + DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); + DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); + DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); + VOID GetStartupInfoA(LPSTARTUPINFOA); + VOID GetStartupInfoW(LPSTARTUPINFOW); + HANDLE GetStdHandle(DWORD); + UINT GetSystemDirectoryA(LPSTR, UINT); + UINT GetSystemDirectoryW(LPWSTR, UINT); + VOID GetSystemInfo(LPSYSTEM_INFO); + VOID GetSystemTime(LPSYSTEMTIME); + BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); + void GetSystemTimeAsFileTime(LPFILETIME); + UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); + UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); + DWORD GetTempPathA(DWORD, LPSTR); + DWORD GetTempPathW(DWORD, LPWSTR); + BOOL GetThreadContext(HANDLE, LPCONTEXT); + int GetThreadPriority(HANDLE); + BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); + DWORD GetTickCount(); + DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); + BOOL GetUserNameA (LPSTR, PDWORD); + BOOL GetUserNameW(LPWSTR, PDWORD); + DWORD GetVersion(); + BOOL GetVersionExA(LPOSVERSIONINFOA); + BOOL GetVersionExW(LPOSVERSIONINFOW); + BOOL GetVolumeInformationA(LPCSTR, LPSTR, DWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); + BOOL GetVolumeInformationW(LPCWSTR, LPWSTR, DWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); + UINT GetWindowsDirectoryA(LPSTR, UINT); + UINT GetWindowsDirectoryW(LPWSTR, UINT); + DWORD GetWindowThreadProcessId(HWND, PDWORD); + ATOM GlobalAddAtomA(LPCSTR); + ATOM GlobalAddAtomW(LPCWSTR); + ATOM GlobalDeleteAtom(ATOM); + ATOM GlobalFindAtomA(LPCSTR); + ATOM GlobalFindAtomW(LPCWSTR); + UINT GlobalGetAtomNameA(ATOM, LPSTR, int); + UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); + + bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { + return lpOverlapped.Internal != STATUS_PENDING; + } + + BOOL InitAtomTable(DWORD); + VOID InitializeCriticalSection(LPCRITICAL_SECTION); + /* ??? The next two are allegedly obsolete and "supported only for + * backward compatibility with the 16-bit Windows API". Yet the + * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ + * only. Where's the mistake? + */ + BOOL IsBadHugeReadPtr(PCVOID, UINT_PTR); + BOOL IsBadHugeWritePtr(PVOID, UINT_PTR); + BOOL IsBadReadPtr(PCVOID, UINT_PTR); + BOOL IsBadStringPtrA(LPCSTR, UINT_PTR); + BOOL IsBadStringPtrW(LPCWSTR, UINT_PTR); + BOOL IsBadWritePtr(PVOID, UINT_PTR); + void LeaveCriticalSection(LPCRITICAL_SECTION); + HINSTANCE LoadLibraryA(LPCSTR); + HINSTANCE LoadLibraryW(LPCWSTR); + HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); + HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); + DWORD LoadModule(LPCSTR, PVOID); + HGLOBAL LoadResource(HINSTANCE, HRSRC); + BOOL LocalFileTimeToFileTime(const(FILETIME)*, LPFILETIME); + BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + PVOID LockResource(HGLOBAL); + + LPSTR lstrcatA(LPSTR, LPCSTR); + LPWSTR lstrcatW(LPWSTR, LPCWSTR); + int lstrcmpA(LPCSTR, LPCSTR); + int lstrcmpiA(LPCSTR, LPCSTR); + int lstrcmpiW(LPCWSTR, LPCWSTR); + int lstrcmpW(LPCWSTR, LPCWSTR); + LPSTR lstrcpyA(LPSTR, LPCSTR); + LPSTR lstrcpynA(LPSTR, LPCSTR, int); + LPWSTR lstrcpynW(LPWSTR, LPCWSTR, int); + LPWSTR lstrcpyW(LPWSTR, LPCWSTR); + int lstrlenA(LPCSTR); + int lstrlenW(LPCWSTR); + + BOOL MoveFileA(LPCSTR, LPCSTR); + BOOL MoveFileW(LPCWSTR, LPCWSTR); + int MulDiv(int, int, int); + HANDLE OpenEventA(DWORD, BOOL, LPCSTR); + HANDLE OpenEventW(DWORD, BOOL, LPCWSTR); + deprecated HFILE OpenFile(LPCSTR, LPOFSTRUCT, UINT); + HANDLE OpenMutexA(DWORD, BOOL, LPCSTR); + HANDLE OpenMutexW(DWORD, BOOL, LPCWSTR); + HANDLE OpenProcess(DWORD, BOOL, DWORD); + HANDLE OpenSemaphoreA(DWORD, BOOL, LPCSTR); + HANDLE OpenSemaphoreW(DWORD, BOOL, LPCWSTR); + void OutputDebugStringA(LPCSTR); + void OutputDebugStringW(LPCWSTR); + BOOL PeekNamedPipe(HANDLE, PVOID, DWORD, PDWORD, PDWORD, PDWORD); + BOOL PulseEvent(HANDLE); + BOOL PurgeComm(HANDLE, DWORD); + BOOL QueryPerformanceCounter(PLARGE_INTEGER); + BOOL QueryPerformanceFrequency(PLARGE_INTEGER); + DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); + void RaiseException(DWORD, DWORD, DWORD, const(DWORD)*); + BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, SIZE_T, SIZE_T*); + BOOL ReleaseMutex(HANDLE); + BOOL ReleaseSemaphore(HANDLE, LONG, LPLONG); + BOOL RemoveDirectoryA(LPCSTR); + BOOL RemoveDirectoryW(LPCWSTR); +/* In MinGW: +#ifdef _WIN32_WCE +extern BOOL ResetEvent(HANDLE); +#else +WINBASEAPI BOOL WINAPI ResetEvent(HANDLE); +#endif +*/ + BOOL ResetEvent(HANDLE); + DWORD ResumeThread(HANDLE); + DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); + DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); + BOOL SetCommBreak(HANDLE); + BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); + BOOL SetCommMask(HANDLE, DWORD); + BOOL SetCommState(HANDLE, LPDCB); + BOOL SetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); + BOOL SetComputerNameA(LPCSTR); + BOOL SetComputerNameW(LPCWSTR); + BOOL SetCurrentDirectoryA(LPCSTR); + BOOL SetCurrentDirectoryW(LPCWSTR); + BOOL SetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, DWORD); + BOOL SetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, DWORD); + BOOL SetEndOfFile(HANDLE); + BOOL SetEnvironmentVariableA(LPCSTR, LPCSTR); + BOOL SetEnvironmentVariableW(LPCWSTR, LPCWSTR); + UINT SetErrorMode(UINT); +/* In MinGW: +#ifdef _WIN32_WCE +extern BOOL SetEvent(HANDLE); +#else +WINBASEAPI BOOL WINAPI SetEvent(HANDLE); +#endif +*/ + BOOL SetEvent(HANDLE); + VOID SetFileApisToANSI(); + VOID SetFileApisToOEM(); + BOOL SetFileAttributesA(LPCSTR, DWORD); + BOOL SetFileAttributesW(LPCWSTR, DWORD); + DWORD SetFilePointer(HANDLE, LONG, PLONG, DWORD); + BOOL SetFileTime(HANDLE, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); + deprecated UINT SetHandleCount(UINT); + void SetLastError(DWORD); + void SetLastErrorEx(DWORD, DWORD); + BOOL SetLocalTime(const(SYSTEMTIME)*); + BOOL SetMailslotInfo(HANDLE, DWORD); + BOOL SetNamedPipeHandleState(HANDLE, PDWORD, PDWORD, PDWORD); + BOOL SetPriorityClass(HANDLE, DWORD); + BOOL SetStdHandle(DWORD, HANDLE); + BOOL SetSystemTime(const(SYSTEMTIME)*); + DWORD SetThreadAffinityMask(HANDLE, DWORD); + BOOL SetThreadContext(HANDLE, const(CONTEXT)*); + BOOL SetThreadPriority(HANDLE, int); + BOOL SetTimeZoneInformation(const(TIME_ZONE_INFORMATION)*); + LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); + BOOL SetupComm(HANDLE, DWORD, DWORD); + BOOL SetVolumeLabelA(LPCSTR, LPCSTR); + BOOL SetVolumeLabelW(LPCWSTR, LPCWSTR); + + DWORD SizeofResource(HINSTANCE, HRSRC); + void Sleep(DWORD); + DWORD SleepEx(DWORD, BOOL); + DWORD SuspendThread(HANDLE); + BOOL SystemTimeToFileTime(const(SYSTEMTIME)*, LPFILETIME); + BOOL TerminateProcess(HANDLE, UINT); + BOOL TerminateThread(HANDLE, DWORD); + DWORD TlsAlloc(); + BOOL TlsFree(DWORD); + PVOID TlsGetValue(DWORD); + BOOL TlsSetValue(DWORD, PVOID); + BOOL TransactNamedPipe(HANDLE, PVOID, DWORD, PVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL TransmitCommChar(HANDLE, char); + LONG UnhandledExceptionFilter(LPEXCEPTION_POINTERS); + BOOL UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + BOOL WaitCommEvent(HANDLE, PDWORD, LPOVERLAPPED); + BOOL WaitForDebugEvent(LPDEBUG_EVENT, DWORD); + DWORD WaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD); + DWORD WaitForMultipleObjectsEx(DWORD, const(HANDLE)*, BOOL, DWORD, BOOL); + DWORD WaitForSingleObject(HANDLE, DWORD); + DWORD WaitForSingleObjectEx(HANDLE, DWORD, BOOL); + BOOL WaitNamedPipeA(LPCSTR, DWORD); + BOOL WaitNamedPipeW(LPCWSTR, DWORD); + // undocumented on MSDN + BOOL WinLoadTrustProvider(GUID*); + BOOL WriteFile(HANDLE, PCVOID, DWORD, PDWORD, LPOVERLAPPED); + BOOL WriteFileEx(HANDLE, PCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL WritePrivateProfileSectionA(LPCSTR, LPCSTR, LPCSTR); + BOOL WritePrivateProfileSectionW(LPCWSTR, LPCWSTR, LPCWSTR); + BOOL WritePrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPCSTR); + BOOL WritePrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL WritePrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); + BOOL WritePrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); + BOOL WriteProcessMemory(HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T*); + BOOL WriteProfileSectionA(LPCSTR, LPCSTR); + BOOL WriteProfileSectionW(LPCWSTR, LPCWSTR); + BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); + BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); + + /* Memory allocation functions. + * MSDN documents these erroneously as Win2000+; thus it is uncertain what + * version compatibility they really have. + */ + HGLOBAL GlobalAlloc(UINT, DWORD); + HGLOBAL GlobalDiscard(HGLOBAL); + HGLOBAL GlobalFree(HGLOBAL); + HGLOBAL GlobalHandle(PCVOID); + LPVOID GlobalLock(HGLOBAL); + VOID GlobalMemoryStatus(LPMEMORYSTATUS); + HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); + DWORD GlobalSize(HGLOBAL); + BOOL GlobalUnlock(HGLOBAL); + PVOID HeapAlloc(HANDLE, DWORD, DWORD); + SIZE_T HeapCompact(HANDLE, DWORD); + HANDLE HeapCreate(DWORD, DWORD, DWORD); + BOOL HeapDestroy(HANDLE); + BOOL HeapFree(HANDLE, DWORD, PVOID); + BOOL HeapLock(HANDLE); + PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); + DWORD HeapSize(HANDLE, DWORD, PCVOID); + BOOL HeapUnlock(HANDLE); + BOOL HeapValidate(HANDLE, DWORD, PCVOID); + BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); + HLOCAL LocalAlloc(UINT, SIZE_T); + HLOCAL LocalDiscard(HLOCAL); + HLOCAL LocalFree(HLOCAL); + HLOCAL LocalHandle(LPCVOID); + PVOID LocalLock(HLOCAL); + HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); + UINT LocalSize(HLOCAL); + BOOL LocalUnlock(HLOCAL); + PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); + PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); + BOOL VirtualFree(PVOID, DWORD, DWORD); + BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); + BOOL VirtualLock(PVOID, DWORD); + BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); + BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); + DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); + DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); + BOOL VirtualUnlock(PVOID, DWORD); +// not in MinGW 4.0 - ??? + static if (_WIN32_WINNT >= 0x600) { + BOOL CancelIoEx(HANDLE, LPOVERLAPPED); + } + + BOOL CancelIo(HANDLE); + BOOL CancelWaitableTimer(HANDLE); + PVOID ConvertThreadToFiber(PVOID); + LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); + HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); + HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); + void DeleteFiber(PVOID); + BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); + BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); + DWORD GetLongPathNameA(LPCSTR, LPSTR, DWORD); + DWORD GetLongPathNameW(LPCWSTR, LPWSTR, DWORD); + BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); + BOOL IsDebuggerPresent(); + HANDLE OpenWaitableTimerA(DWORD, BOOL, LPCSTR); + HANDLE OpenWaitableTimerW(DWORD, BOOL, LPCWSTR); + DWORD QueryDosDeviceA(LPCSTR, LPSTR, DWORD); + DWORD QueryDosDeviceW(LPCWSTR, LPWSTR, DWORD); + BOOL SetWaitableTimer(HANDLE, const(LARGE_INTEGER)*, LONG, PTIMERAPCROUTINE, PVOID, BOOL); + void SwitchToFiber(PVOID); + + static if (_WIN32_WINNT >= 0x500) { + HANDLE OpenThread(DWORD, BOOL, DWORD); + } + + BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); + BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); + BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); + BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); + BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); + BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); + BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); + BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); + BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); + BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); + BOOL AllocateLocallyUniqueId(PLUID); + BOOL AreAllAccessesGranted(DWORD, DWORD); + BOOL AreAnyAccessesGranted(DWORD, DWORD); + BOOL BackupEventLogA(HANDLE, LPCSTR); + BOOL BackupEventLogW(HANDLE, LPCWSTR); + BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); + BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); + BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); + BOOL ClearEventLogA(HANDLE, LPCSTR); + BOOL ClearEventLogW(HANDLE, LPCWSTR); + BOOL CloseEventLog(HANDLE); + BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); + BOOL CopySid(DWORD, PSID, PSID); + HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); + BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); + BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); + DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); + BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); + BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); + BOOL DeleteAce(PACL, DWORD); + BOOL DeregisterEventSource(HANDLE); + BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); + BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); + BOOL DisconnectNamedPipe(HANDLE); + BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); + BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); + BOOL EqualPrefixSid(PSID, PSID); + BOOL EqualSid(PSID, PSID); + DWORD EraseTape(HANDLE, DWORD, BOOL); + HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); + HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); + BOOL FindFirstFreeAce(PACL, PVOID*); + PVOID FreeSid(PSID); + BOOL GetAce(PACL, DWORD, LPVOID*); + BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); + BOOL GetBinaryTypeA(LPCSTR, PDWORD); + BOOL GetBinaryTypeW(LPCWSTR, PDWORD); + DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); + DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); + BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); + BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); + BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetHandleInformation(HANDLE, PDWORD); + BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + DWORD GetLengthSid(PSID); + BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); + BOOL GetOldestEventLogRecord(HANDLE, PDWORD); + BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); + BOOL GetProcessPriorityBoost(HANDLE, PBOOL); + BOOL GetProcessShutdownParameters(PDWORD, PDWORD); + BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); + HWINSTA GetProcessWindowStation(); + BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); + BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); + BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); + BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); + BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); + DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); + BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); + BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); + PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); + DWORD GetSidLengthRequired(UCHAR); + PDWORD GetSidSubAuthority(PSID, DWORD); + PUCHAR GetSidSubAuthorityCount(PSID); + DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); + DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); + DWORD GetTapeStatus(HANDLE); + BOOL GetThreadPriorityBoost(HANDLE, PBOOL); + BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); + BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); + BOOL ImpersonateLoggedOnUser(HANDLE); + BOOL ImpersonateNamedPipeClient(HANDLE); + BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); + BOOL InitializeAcl(PACL, DWORD, DWORD); + DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); + BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); + BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); + BOOL IsProcessorFeaturePresent(DWORD); + BOOL IsTextUnicode(PCVOID, int, LPINT); + BOOL IsValidAcl(PACL); + BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); + BOOL IsValidSid(PSID); + BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); + BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); + BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); + BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); + BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); + BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); + BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); + BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); + BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); + BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); + BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); + BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); + BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); + VOID MapGenericMask(PDWORD, PGENERIC_MAPPING); + BOOL MoveFileExA(LPCSTR, LPCSTR, DWORD); + BOOL MoveFileExW(LPCWSTR, LPCWSTR, DWORD); + BOOL NotifyChangeEventLog(HANDLE, HANDLE); + BOOL ObjectCloseAuditAlarmA(LPCSTR, PVOID, BOOL); + BOOL ObjectCloseAuditAlarmW(LPCWSTR, PVOID, BOOL); + BOOL ObjectDeleteAuditAlarmA(LPCSTR, PVOID, BOOL); + BOOL ObjectDeleteAuditAlarmW(LPCWSTR, PVOID, BOOL); + BOOL ObjectOpenAuditAlarmA(LPCSTR, PVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); + BOOL ObjectOpenAuditAlarmW(LPCWSTR, PVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); + BOOL ObjectPrivilegeAuditAlarmA(LPCSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); + BOOL ObjectPrivilegeAuditAlarmW(LPCWSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); + HANDLE OpenBackupEventLogA(LPCSTR, LPCSTR); + HANDLE OpenBackupEventLogW(LPCWSTR, LPCWSTR); + HANDLE OpenEventLogA(LPCSTR, LPCSTR); + HANDLE OpenEventLogW(LPCWSTR, LPCWSTR); + BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); + BOOL OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE); + BOOL PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED); + DWORD PrepareTape(HANDLE, DWORD, BOOL); + BOOL PrivilegeCheck(HANDLE, PPRIVILEGE_SET, PBOOL); + BOOL PrivilegedServiceAuditAlarmA(LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL); + BOOL PrivilegedServiceAuditAlarmW(LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL); + BOOL ReadDirectoryChangesW(HANDLE, PVOID, DWORD, BOOL, DWORD, PDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); + BOOL ReadEventLogA(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); + BOOL ReadEventLogW(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); + BOOL ReadFileScatter(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); + HANDLE RegisterEventSourceA (LPCSTR, LPCSTR); + HANDLE RegisterEventSourceW(LPCWSTR, LPCWSTR); + BOOL ReportEventA(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR*, PVOID); + BOOL ReportEventW(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR*, PVOID); + BOOL RevertToSelf(); + BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); + BOOL SetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetHandleInformation(HANDLE, DWORD, DWORD); + BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, PGENERIC_MAPPING, HANDLE); + BOOL SetProcessAffinityMask(HANDLE, DWORD); + BOOL SetProcessPriorityBoost(HANDLE, BOOL); + BOOL SetProcessShutdownParameters(DWORD, DWORD); + BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); + BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); + BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); + BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); + BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); + BOOL SetSystemTimeAdjustment(DWORD, BOOL); + DWORD SetTapeParameters(HANDLE, DWORD, PVOID); + DWORD SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL); + BOOL SetThreadPriorityBoost(HANDLE, BOOL); + BOOL SetThreadToken(PHANDLE, HANDLE); + BOOL SetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD); + DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); + BOOL SwitchToThread(); + BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); + BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); + BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); + BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); + BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); + BOOL WriteFileGather(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); + DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); + + static if (_WIN32_WINNT >= 0x500) { + BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); + BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); + PVOID AddVectoredExceptionHandler(ULONG, PVECTORED_EXCEPTION_HANDLER); + BOOL AllocateUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); + BOOL AssignProcessToJobObject(HANDLE, HANDLE); + BOOL ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG); + LPVOID CreateFiberEx(SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID); + HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); + HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); + BOOL CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + BOOL CreateHardLinkW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); + HANDLE CreateJobObjectA(LPSECURITY_ATTRIBUTES, LPCSTR); + HANDLE CreateJobObjectW(LPSECURITY_ATTRIBUTES, LPCWSTR); + BOOL CreateProcessWithLogonW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); + HANDLE CreateTimerQueue(); + BOOL CreateTimerQueueTimer(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG); + BOOL DeleteTimerQueue(HANDLE); + BOOL DeleteTimerQueueEx(HANDLE, HANDLE); + BOOL DeleteTimerQueueTimer(HANDLE, HANDLE, HANDLE); + BOOL DeleteVolumeMountPointA(LPCSTR); + BOOL DeleteVolumeMountPointW(LPCWSTR); + BOOL DnsHostnameToComputerNameA(LPCSTR, LPSTR, LPDWORD); + BOOL DnsHostnameToComputerNameW(LPCWSTR, LPWSTR, LPDWORD); + BOOL EncryptFileA(LPCSTR); + BOOL EncryptFileW(LPCWSTR); + BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); + BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); + HANDLE FindFirstVolumeA(LPCSTR, DWORD); + HANDLE FindFirstVolumeMountPointA(LPSTR, LPSTR, DWORD); + HANDLE FindFirstVolumeMountPointW(LPWSTR, LPWSTR, DWORD); + HANDLE FindFirstVolumeW(LPCWSTR, DWORD); + BOOL FindNextVolumeA(HANDLE, LPCSTR, DWORD); + BOOL FindNextVolumeW(HANDLE, LPWSTR, DWORD); + BOOL FindNextVolumeMountPointA(HANDLE, LPSTR, DWORD); + BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); + BOOL FindVolumeClose(HANDLE); + BOOL FindVolumeMountPointClose(HANDLE); + BOOL FlushViewOfFile(PCVOID, DWORD); + BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); + BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); + BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); + BOOL GetFileSizeEx(HANDLE, PLARGE_INTEGER); + BOOL GetModuleHandleExA(DWORD, LPCSTR, HMODULE*); + BOOL GetModuleHandleExW(DWORD, LPCWSTR, HMODULE*); + HANDLE GetProcessHeap(); + DWORD GetProcessHeaps(DWORD, PHANDLE); + BOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS); + BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); + UINT GetSystemWindowsDirectoryA(LPSTR, UINT); + UINT GetSystemWindowsDirectoryW(LPWSTR, UINT); + BOOL GetVolumeNameForVolumeMountPointA(LPCSTR, LPSTR, DWORD); + BOOL GetVolumeNameForVolumeMountPointW(LPCWSTR, LPWSTR, DWORD); + BOOL GetVolumePathNameA(LPCSTR, LPSTR, DWORD); + BOOL GetVolumePathNameW(LPCWSTR, LPWSTR, DWORD); + BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX); + BOOL IsBadCodePtr(FARPROC); + BOOL IsSystemResumeAutomatic(); + BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); + BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); + PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); + PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); + HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); + HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); + BOOL ProcessIdToSessionId(DWORD, DWORD*); + BOOL QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); + ULONG RemoveVectoredExceptionHandler(PVOID); + BOOL ReplaceFileA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); + BOOL ReplaceFileW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); + BOOL SetComputerNameExA(COMPUTER_NAME_FORMAT, LPCSTR); + BOOL SetComputerNameExW(COMPUTER_NAME_FORMAT, LPCWSTR); + BOOL SetFilePointerEx(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); + BOOL SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD); + BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); + BOOL SetSystemPowerState(BOOL, BOOL); + EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE); + DWORD SetThreadIdealProcessor(HANDLE, DWORD); + BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); + BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); + BOOL TerminateJobObject(HANDLE, UINT); + BOOL UnmapViewOfFile(PVOID); + BOOL UnregisterWait(HANDLE); + BOOL UnregisterWaitEx(HANDLE, HANDLE); + BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); + BOOL VerifyVersionInfoW(LPOSVERSIONINFOEXW, DWORD, DWORDLONG); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL ActivateActCtx(HANDLE, ULONG_PTR*); + void AddRefActCtx(HANDLE); + BOOL CheckNameLegalDOS8Dot3A(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL); + BOOL CheckNameLegalDOS8Dot3W(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL); + BOOL CheckRemoteDebuggerPresent(HANDLE, PBOOL); + BOOL ConvertFiberToThread(); + HANDLE CreateActCtxA(PCACTCTXA); + HANDLE CreateActCtxW(PCACTCTXW); + HANDLE CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); + BOOL DeactivateActCtx(DWORD, ULONG_PTR); + BOOL DebugActiveProcessStop(DWORD); + BOOL DebugBreakProcess(HANDLE); + BOOL DebugSetProcessKillOnExit(BOOL); + BOOL FindActCtxSectionGuid(DWORD, const(GUID)*, ULONG, const(GUID)*, + PACTCTX_SECTION_KEYED_DATA); + BOOL FindActCtxSectionStringA(DWORD, const(GUID)*, ULONG, LPCSTR, + PACTCTX_SECTION_KEYED_DATA); + BOOL FindActCtxSectionStringW(DWORD, const(GUID)*, ULONG, LPCWSTR, + PACTCTX_SECTION_KEYED_DATA); + BOOL GetCurrentActCtx(HANDLE*); + VOID GetNativeSystemInfo(LPSYSTEM_INFO); + BOOL GetProcessHandleCount(HANDLE, PDWORD); + BOOL GetSystemRegistryQuota(PDWORD, PDWORD); + BOOL GetSystemTimes(LPFILETIME, LPFILETIME, LPFILETIME); + UINT GetSystemWow64DirectoryA(LPSTR, UINT); + UINT GetSystemWow64DirectoryW(LPWSTR, UINT); + BOOL GetThreadIOPendingFlag(HANDLE, PBOOL); + BOOL GetVolumePathNamesForVolumeNameA(LPCSTR, LPSTR, DWORD, PDWORD); + BOOL GetVolumePathNamesForVolumeNameW(LPCWSTR, LPWSTR, DWORD, PDWORD); + UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); + BOOL HeapQueryInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); + BOOL HeapSetInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T); + BOOL IsProcessInJob(HANDLE, HANDLE, PBOOL); + BOOL IsWow64Process(HANDLE, PBOOL); + BOOL QueryActCtxW(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T*); + BOOL QueryMemoryResourceNotification(HANDLE, PBOOL); + void ReleaseActCtx(HANDLE); + UINT ResetWriteWatch(LPVOID, SIZE_T); + BOOL SetFileShortNameA(HANDLE, LPCSTR); + BOOL SetFileShortNameW(HANDLE, LPCWSTR); + BOOL SetFileValidData(HANDLE, LONGLONG); + BOOL ZombifyActCtx(HANDLE); + } + + static if (_WIN32_WINNT >= 0x502) { + DWORD GetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); + DWORD GetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); + DWORD GetDllDirectoryA(DWORD, LPSTR); + DWORD GetDllDirectoryW(DWORD, LPWSTR); + DWORD GetThreadId(HANDLE); + DWORD GetProcessId(HANDLE); + HANDLE ReOpenFile(HANDLE, DWORD, DWORD, DWORD); + BOOL SetDllDirectoryA(LPCSTR); + BOOL SetDllDirectoryW(LPCWSTR); + BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); + BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); + } + + // ??? + static if (_WIN32_WINNT >= 0x510) { + VOID RestoreLastError(DWORD); + } +} + +mixin DECLARE_AW!("STARTUPINFO"); +version (Unicode) { + //alias STARTUPINFOW STARTUPINFO; + alias WIN32_FIND_DATAW WIN32_FIND_DATA; + alias ENUMRESLANGPROCW ENUMRESLANGPROC; + alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; + alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; + alias AddAtomW AddAtom; + alias BeginUpdateResourceW BeginUpdateResource; + alias BuildCommDCBW BuildCommDCB; + alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; + alias CallNamedPipeW CallNamedPipe; + alias CommConfigDialogW CommConfigDialog; + alias CopyFileW CopyFile; + alias CopyFileExW CopyFileEx; + alias CreateDirectoryW CreateDirectory; + alias CreateDirectoryExW CreateDirectoryEx; + alias CreateEventW CreateEvent; + alias CreateFileW CreateFile; + alias CreateMailslotW CreateMailslot; + alias CreateMutexW CreateMutex; + alias CreateProcessW CreateProcess; + alias CreateSemaphoreW CreateSemaphore; + alias DeleteFileW DeleteFile; + alias EndUpdateResourceW EndUpdateResource; + alias EnumResourceLanguagesW EnumResourceLanguages; + alias EnumResourceNamesW EnumResourceNames; + alias EnumResourceTypesW EnumResourceTypes; + alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; + alias FatalAppExitW FatalAppExit; + alias FindAtomW FindAtom; + alias FindFirstChangeNotificationW FindFirstChangeNotification; + alias FindFirstFileW FindFirstFile; + alias FindNextFileW FindNextFile; + alias FindResourceW FindResource; + alias FindResourceExW FindResourceEx; + alias FormatMessageW FormatMessage; + alias FreeEnvironmentStringsW FreeEnvironmentStrings; + alias GetAtomNameW GetAtomName; + alias GetCommandLineW GetCommandLine; + alias GetComputerNameW GetComputerName; + alias GetCurrentDirectoryW GetCurrentDirectory; + alias GetDefaultCommConfigW GetDefaultCommConfig; + alias GetDiskFreeSpaceW GetDiskFreeSpace; + alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; + alias GetDriveTypeW GetDriveType; + alias GetEnvironmentStringsW GetEnvironmentStrings; + alias GetEnvironmentVariableW GetEnvironmentVariable; + alias GetFileAttributesW GetFileAttributes; + alias GetFullPathNameW GetFullPathName; + alias GetLogicalDriveStringsW GetLogicalDriveStrings; + alias GetModuleFileNameW GetModuleFileName; + alias GetModuleHandleW GetModuleHandle; + alias GetNamedPipeHandleStateW GetNamedPipeHandleState; + alias GetPrivateProfileIntW GetPrivateProfileInt; + alias GetPrivateProfileSectionW GetPrivateProfileSection; + alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; + alias GetPrivateProfileStringW GetPrivateProfileString; + alias GetPrivateProfileStructW GetPrivateProfileStruct; + alias GetProfileIntW GetProfileInt; + alias GetProfileSectionW GetProfileSection; + alias GetProfileStringW GetProfileString; + alias GetShortPathNameW GetShortPathName; + alias GetStartupInfoW GetStartupInfo; + alias GetSystemDirectoryW GetSystemDirectory; + alias GetTempFileNameW GetTempFileName; + alias GetTempPathW GetTempPath; + alias GetUserNameW GetUserName; + alias GetVersionExW GetVersionEx; + alias GetVolumeInformationW GetVolumeInformation; + alias GetWindowsDirectoryW GetWindowsDirectory; + alias GlobalAddAtomW GlobalAddAtom; + alias GlobalFindAtomW GlobalFindAtom; + alias GlobalGetAtomNameW GlobalGetAtomName; + alias IsBadStringPtrW IsBadStringPtr; + alias LoadLibraryW LoadLibrary; + alias LoadLibraryExW LoadLibraryEx; + alias lstrcatW lstrcat; + alias lstrcmpW lstrcmp; + alias lstrcmpiW lstrcmpi; + alias lstrcpyW lstrcpy; + alias lstrcpynW lstrcpyn; + alias lstrlenW lstrlen; + alias MoveFileW MoveFile; + alias OpenEventW OpenEvent; + alias OpenMutexW OpenMutex; + alias OpenSemaphoreW OpenSemaphore; + alias OutputDebugStringW OutputDebugString; + alias RemoveDirectoryW RemoveDirectory; + alias SearchPathW SearchPath; + alias SetComputerNameW SetComputerName; + alias SetCurrentDirectoryW SetCurrentDirectory; + alias SetDefaultCommConfigW SetDefaultCommConfig; + alias SetEnvironmentVariableW SetEnvironmentVariable; + alias SetFileAttributesW SetFileAttributes; + alias SetVolumeLabelW SetVolumeLabel; + alias WaitNamedPipeW WaitNamedPipe; + alias WritePrivateProfileSectionW WritePrivateProfileSection; + alias WritePrivateProfileStringW WritePrivateProfileString; + alias WritePrivateProfileStructW WritePrivateProfileStruct; + alias WriteProfileSectionW WriteProfileSection; + alias WriteProfileStringW WriteProfileString; + alias CreateWaitableTimerW CreateWaitableTimer; + alias GetFileAttributesExW GetFileAttributesEx; + alias GetLongPathNameW GetLongPathName; + alias QueryDosDeviceW QueryDosDevice; + + alias HW_PROFILE_INFOW HW_PROFILE_INFO; + alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; + alias BackupEventLogW BackupEventLog; + alias ClearEventLogW ClearEventLog; + alias CreateNamedPipeW CreateNamedPipe; + alias CreateProcessAsUserW CreateProcessAsUser; + alias DefineDosDeviceW DefineDosDevice; + alias FindFirstFileExW FindFirstFileEx; + alias GetBinaryTypeW GetBinaryType; + alias GetCompressedFileSizeW GetCompressedFileSize; + alias GetFileSecurityW GetFileSecurity; + alias LogonUserW LogonUser; + alias LookupAccountNameW LookupAccountName; + alias LookupAccountSidW LookupAccountSid; + alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; + alias LookupPrivilegeNameW LookupPrivilegeName; + alias LookupPrivilegeValueW LookupPrivilegeValue; + alias MoveFileExW MoveFileEx; + alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; + alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; + alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; + alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; + alias OpenBackupEventLogW OpenBackupEventLog; + alias OpenEventLogW OpenEventLog; + alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; + alias ReadEventLogW ReadEventLog; + alias RegisterEventSourceW RegisterEventSource; + alias ReportEventW ReportEvent; + alias SetFileSecurityW SetFileSecurity; + alias UpdateResourceW UpdateResource; + + static if (_WIN32_WINNT >= 0x500) { + alias CreateFileMappingW CreateFileMapping; + alias CreateHardLinkW CreateHardLink; + alias CreateJobObjectW CreateJobObject; + alias DeleteVolumeMountPointW DeleteVolumeMountPoint; + alias DnsHostnameToComputerNameW DnsHostnameToComputerName; + alias EncryptFileW EncryptFile; + alias FileEncryptionStatusW FileEncryptionStatus; + alias FindFirstVolumeW FindFirstVolume; + alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; + alias FindNextVolumeW FindNextVolume; + alias FindNextVolumeMountPointW FindNextVolumeMountPoint; + alias GetModuleHandleExW GetModuleHandleEx; + alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; + alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; + alias GetVolumePathNameW GetVolumePathName; + alias OpenFileMappingW OpenFileMapping; + alias ReplaceFileW ReplaceFile; + alias SetVolumeMountPointW SetVolumeMountPoint; + alias VerifyVersionInfoW VerifyVersionInfo; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ACTCTXW ACTCTX; + alias CheckNameLegalDOS8Dot3W CheckNameLegalDOS8Dot3; + alias CreateActCtxW CreateActCtx; + alias FindActCtxSectionStringW FindActCtxSectionString; + alias GetSystemWow64DirectoryW GetSystemWow64Directory; + alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; + alias SetFileShortNameW SetFileShortName; + } + + static if (_WIN32_WINNT >= 0x502) { + alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; + alias SetDllDirectoryW SetDllDirectory; + alias GetDllDirectoryW GetDllDirectory; + } + +} else { + //alias STARTUPINFOA STARTUPINFO; + alias WIN32_FIND_DATAA WIN32_FIND_DATA; + alias ENUMRESLANGPROCW ENUMRESLANGPROC; + alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; + alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; + alias AddAtomA AddAtom; + alias BeginUpdateResourceA BeginUpdateResource; + alias BuildCommDCBA BuildCommDCB; + alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; + alias CallNamedPipeA CallNamedPipe; + alias CommConfigDialogA CommConfigDialog; + alias CopyFileA CopyFile; + alias CopyFileExA CopyFileEx; + alias CreateDirectoryA CreateDirectory; + alias CreateDirectoryExA CreateDirectoryEx; + alias CreateEventA CreateEvent; + alias CreateFileA CreateFile; + alias CreateMailslotA CreateMailslot; + alias CreateMutexA CreateMutex; + alias CreateProcessA CreateProcess; + alias CreateSemaphoreA CreateSemaphore; + alias DeleteFileA DeleteFile; + alias EndUpdateResourceA EndUpdateResource; + alias EnumResourceLanguagesA EnumResourceLanguages; + alias EnumResourceNamesA EnumResourceNames; + alias EnumResourceTypesA EnumResourceTypes; + alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; + alias FatalAppExitA FatalAppExit; + alias FindAtomA FindAtom; + alias FindFirstChangeNotificationA FindFirstChangeNotification; + alias FindFirstFileA FindFirstFile; + alias FindNextFileA FindNextFile; + alias FindResourceA FindResource; + alias FindResourceExA FindResourceEx; + alias FormatMessageA FormatMessage; + alias FreeEnvironmentStringsA FreeEnvironmentStrings; + alias GetAtomNameA GetAtomName; + alias GetCommandLineA GetCommandLine; + alias GetComputerNameA GetComputerName; + alias GetCurrentDirectoryA GetCurrentDirectory; + alias GetDefaultCommConfigA GetDefaultCommConfig; + alias GetDiskFreeSpaceA GetDiskFreeSpace; + alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; + alias GetDriveTypeA GetDriveType; + alias GetEnvironmentVariableA GetEnvironmentVariable; + alias GetFileAttributesA GetFileAttributes; + alias GetFullPathNameA GetFullPathName; + alias GetLogicalDriveStringsA GetLogicalDriveStrings; + alias GetNamedPipeHandleStateA GetNamedPipeHandleState; + alias GetModuleHandleA GetModuleHandle; + alias GetModuleFileNameA GetModuleFileName; + alias GetPrivateProfileIntA GetPrivateProfileInt; + alias GetPrivateProfileSectionA GetPrivateProfileSection; + alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; + alias GetPrivateProfileStringA GetPrivateProfileString; + alias GetPrivateProfileStructA GetPrivateProfileStruct; + alias GetProfileIntA GetProfileInt; + alias GetProfileSectionA GetProfileSection; + alias GetProfileStringA GetProfileString; + alias GetShortPathNameA GetShortPathName; + alias GetStartupInfoA GetStartupInfo; + alias GetSystemDirectoryA GetSystemDirectory; + alias GetTempFileNameA GetTempFileName; + alias GetTempPathA GetTempPath; + alias GetUserNameA GetUserName; + alias GetVersionExA GetVersionEx; + alias GetVolumeInformationA GetVolumeInformation; + alias GetWindowsDirectoryA GetWindowsDirectory; + alias GlobalAddAtomA GlobalAddAtom; + alias GlobalFindAtomA GlobalFindAtom; + alias GlobalGetAtomNameA GlobalGetAtomName; + alias IsBadStringPtrA IsBadStringPtr; + alias LoadLibraryA LoadLibrary; + alias LoadLibraryExA LoadLibraryEx; + alias lstrcatA lstrcat; + alias lstrcmpA lstrcmp; + alias lstrcmpiA lstrcmpi; + alias lstrcpyA lstrcpy; + alias lstrcpynA lstrcpyn; + alias lstrlenA lstrlen; + alias MoveFileA MoveFile; + alias OpenEventA OpenEvent; + alias OpenMutexA OpenMutex; + alias OpenSemaphoreA OpenSemaphore; + alias OutputDebugStringA OutputDebugString; + alias RemoveDirectoryA RemoveDirectory; + alias SearchPathA SearchPath; + alias SetComputerNameA SetComputerName; + alias SetCurrentDirectoryA SetCurrentDirectory; + alias SetDefaultCommConfigA SetDefaultCommConfig; + alias SetEnvironmentVariableA SetEnvironmentVariable; + alias SetFileAttributesA SetFileAttributes; + alias SetVolumeLabelA SetVolumeLabel; + alias WaitNamedPipeA WaitNamedPipe; + alias WritePrivateProfileSectionA WritePrivateProfileSection; + alias WritePrivateProfileStringA WritePrivateProfileString; + alias WritePrivateProfileStructA WritePrivateProfileStruct; + alias WriteProfileSectionA WriteProfileSection; + alias WriteProfileStringA WriteProfileString; + alias CreateWaitableTimerA CreateWaitableTimer; + alias GetFileAttributesExA GetFileAttributesEx; + alias GetLongPathNameA GetLongPathName; + alias QueryDosDeviceA QueryDosDevice; + + alias HW_PROFILE_INFOA HW_PROFILE_INFO; + alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; + alias BackupEventLogA BackupEventLog; + alias ClearEventLogA ClearEventLog; + alias CreateNamedPipeA CreateNamedPipe; + alias CreateProcessAsUserA CreateProcessAsUser; + alias DefineDosDeviceA DefineDosDevice; + alias FindFirstFileExA FindFirstFileEx; + alias GetBinaryTypeA GetBinaryType; + alias GetCompressedFileSizeA GetCompressedFileSize; + alias GetFileSecurityA GetFileSecurity; + alias LogonUserA LogonUser; + alias LookupAccountNameA LookupAccountName; + alias LookupAccountSidA LookupAccountSid; + alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; + alias LookupPrivilegeNameA LookupPrivilegeName; + alias LookupPrivilegeValueA LookupPrivilegeValue; + alias MoveFileExA MoveFileEx; + alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; + alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; + alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; + alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; + alias OpenBackupEventLogA OpenBackupEventLog; + alias OpenEventLogA OpenEventLog; + alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; + alias ReadEventLogA ReadEventLog; + alias RegisterEventSourceA RegisterEventSource; + alias ReportEventA ReportEvent; + alias SetFileSecurityA SetFileSecurity; + alias UpdateResourceA UpdateResource; + + static if (_WIN32_WINNT >= 0x500) { + alias CreateFileMappingA CreateFileMapping; + alias CreateHardLinkA CreateHardLink; + alias CreateJobObjectA CreateJobObject; + alias DeleteVolumeMountPointA DeleteVolumeMountPoint; + alias DnsHostnameToComputerNameA DnsHostnameToComputerName; + alias EncryptFileA EncryptFile; + alias FileEncryptionStatusA FileEncryptionStatus; + alias FindFirstVolumeA FindFirstVolume; + alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; + alias FindNextVolumeA FindNextVolume; + alias FindNextVolumeMountPointA FindNextVolumeMountPoint; + alias GetModuleHandleExA GetModuleHandleEx; + alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; + alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; + alias GetVolumePathNameA GetVolumePathName; + alias OpenFileMappingA OpenFileMapping; + alias ReplaceFileA ReplaceFile; + alias SetVolumeMountPointA SetVolumeMountPoint; + alias VerifyVersionInfoA VerifyVersionInfo; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ACTCTXA ACTCTX; + alias CheckNameLegalDOS8Dot3A CheckNameLegalDOS8Dot3; + alias CreateActCtxA CreateActCtx; + alias FindActCtxSectionStringA FindActCtxSectionString; + alias GetSystemWow64DirectoryA GetSystemWow64Directory; + alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; + alias SetFileShortNameA SetFileShortName; + } + + static if (_WIN32_WINNT >= 0x502) { + alias GetDllDirectoryA GetDllDirectory; + alias SetDllDirectoryA SetDllDirectory; + alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; + } +} + +alias STARTUPINFO* LPSTARTUPINFO; +alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; + +alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; + +static if (_WIN32_WINNT >= 0x501) { + alias ACTCTX* PACTCTX, PCACTCTX; +} Index: src/win32/winber.d ================================================================== --- src/win32/winber.d +++ src/win32/winber.d @@ -1,70 +1,70 @@ -/***********************************************************************\ -* winber.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winber; - -/* Comment from MinGW - winber.h - Header file for the Windows LDAP Basic Encoding Rules API - - Written by Filip Navara - - References: - The C LDAP Application Program Interface - http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt - - Lightweight Directory Access Protocol Reference - http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ - - import win32.basetsd; - -/* Opaque structure - * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp - */ -struct BerElement; - -alias int ber_int_t, ber_slen_t; -alias uint ber_uint_t, ber_len_t, ber_tag_t; - -align(4): -struct BerValue { - ber_len_t bv_len; - char* bv_val; -} -alias BerValue LDAP_BERVAL, BERVAL; -alias BerValue* PLDAP_BERVAL, PBERVAL; - -const ber_tag_t - LBER_ERROR = -1, - LBER_DEFAULT = -1, - LBER_USE_DER = 1; - -/* FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT. Linkage - * attribute? - */ -extern (C) { - BerElement* ber_init(CPtr!(BerValue)); - int ber_printf(BerElement*, CPtr!(char), ...); - int ber_flatten(BerElement*, BerValue**); - ber_tag_t ber_scanf(BerElement*, CPtr!(char), ...); - ber_tag_t ber_peek_tag(BerElement*, ber_len_t*); - ber_tag_t ber_skip_tag(BerElement*, ber_len_t*); - ber_tag_t ber_first_element(BerElement*, ber_len_t*, char**); - ber_tag_t ber_next_element(BerElement*, ber_len_t*, char*); - void ber_bvfree(BerValue*); - void ber_bvecfree(BerValue**); - void ber_free(BerElement*, int); - BerValue* ber_bvdup(BerValue*); - BerElement* ber_alloc_t(int); -} +/***********************************************************************\ +* winber.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winber; + +/* Comment from MinGW + winber.h - Header file for the Windows LDAP Basic Encoding Rules API + + Written by Filip Navara + + References: + The C LDAP Application Program Interface + http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt + + Lightweight Directory Access Protocol Reference + http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + + import win32.basetsd; + +/* Opaque structure + * http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp + */ +struct BerElement; + +alias int ber_int_t, ber_slen_t; +alias uint ber_uint_t, ber_len_t, ber_tag_t; + +align(4): +struct BerValue { + ber_len_t bv_len; + char* bv_val; +} +alias BerValue LDAP_BERVAL, BERVAL; +alias BerValue* PLDAP_BERVAL, PBERVAL; + +const ber_tag_t + LBER_ERROR = -1, + LBER_DEFAULT = -1, + LBER_USE_DER = 1; + +/* FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT. Linkage + * attribute? + */ +extern (C) { + BerElement* ber_init(const(BerValue)*); + int ber_printf(BerElement*, const(char)*, ...); + int ber_flatten(BerElement*, BerValue**); + ber_tag_t ber_scanf(BerElement*, const(char)*, ...); + ber_tag_t ber_peek_tag(BerElement*, ber_len_t*); + ber_tag_t ber_skip_tag(BerElement*, ber_len_t*); + ber_tag_t ber_first_element(BerElement*, ber_len_t*, char**); + ber_tag_t ber_next_element(BerElement*, ber_len_t*, char*); + void ber_bvfree(BerValue*); + void ber_bvecfree(BerValue**); + void ber_free(BerElement*, int); + BerValue* ber_bvdup(BerValue*); + BerElement* ber_alloc_t(int); +} Index: src/win32/wincon.d ================================================================== --- src/win32/wincon.d +++ src/win32/wincon.d @@ -1,277 +1,277 @@ -/***********************************************************************\ -* wincon.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.wincon; -pragma(lib, "kernel32.lib"); - -private import win32.w32api, win32.windef; - -// FIXME: clean up Windows version support - -enum { - FOREGROUND_BLUE = 1, - FOREGROUND_GREEN = 2, - FOREGROUND_RED = 4, - FOREGROUND_INTENSITY = 8, - BACKGROUND_BLUE = 16, - BACKGROUND_GREEN = 32, - BACKGROUND_RED = 64, - BACKGROUND_INTENSITY = 128 -} - -static if (_WIN32_WINNT >= 0x0501) { - enum { - CONSOLE_FULLSCREEN_MODE = 1, - CONSOLE_WINDOWED_MODE = 0 - } -} - -enum { - CTRL_C_EVENT = 0, - CTRL_BREAK_EVENT = 1, - CTRL_CLOSE_EVENT = 2, - CTRL_LOGOFF_EVENT = 5, - CTRL_SHUTDOWN_EVENT = 6 -} - -enum { - ENABLE_PROCESSED_INPUT = 1, - ENABLE_LINE_INPUT = 2, - ENABLE_ECHO_INPUT = 4, - ENABLE_WINDOW_INPUT = 8, - ENABLE_MOUSE_INPUT = 16 -} - -enum { - ENABLE_PROCESSED_OUTPUT = 1, - ENABLE_WRAP_AT_EOL_OUTPUT = 2 -} - -enum { - KEY_EVENT = 1, - MOUSE_EVENT = 2, - WINDOW_BUFFER_SIZE_EVENT = 4, - MENU_EVENT = 8, - FOCUS_EVENT = 16 -} -enum { - RIGHT_ALT_PRESSED = 1, - LEFT_ALT_PRESSED = 2, - RIGHT_CTRL_PRESSED = 4, - LEFT_CTRL_PRESSED = 8, - SHIFT_PRESSED = 16, - NUMLOCK_ON = 32, - SCROLLLOCK_ON = 64, - CAPSLOCK_ON = 128, - ENHANCED_KEY = 256 -} -enum { - 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 -} - -enum { - MOUSE_MOVED = 1, - DOUBLE_CLICK = 2, - MOUSE_WHEELED = 4 -} - -struct CHAR_INFO { - union _Char { - WCHAR UnicodeChar; - CHAR AsciiChar; - } - _Char Char; - WORD Attributes; -} -alias CHAR_INFO* PCHAR_INFO; - -struct SMALL_RECT { - SHORT Left; - SHORT Top; - SHORT Right; - SHORT Bottom; -} -alias SMALL_RECT* PSMALL_RECT; - -struct CONSOLE_CURSOR_INFO { - DWORD dwSize; - BOOL bVisible; -} -alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO; - -struct COORD { - SHORT X; - SHORT Y; -} -alias COORD* PCOORD; - -struct CONSOLE_FONT_INFO { - DWORD nFont; - COORD dwFontSize; -} -alias CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO; - -struct CONSOLE_SCREEN_BUFFER_INFO { - COORD dwSize; - COORD dwCursorPosition; - WORD wAttributes; - SMALL_RECT srWindow; - COORD dwMaximumWindowSize; -} -alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; - -alias BOOL function(DWORD) PHANDLER_ROUTINE; - -struct KEY_EVENT_RECORD { - BOOL bKeyDown; - WORD wRepeatCount; - WORD wVirtualKeyCode; - WORD wVirtualScanCode; - union _uChar { - WCHAR UnicodeChar; - CHAR AsciiChar; - } - _uChar uChar; - DWORD dwControlKeyState; -} - -struct MOUSE_EVENT_RECORD { - COORD dwMousePosition; - DWORD dwButtonState; - DWORD dwControlKeyState; - DWORD dwEventFlags; -} - -struct WINDOW_BUFFER_SIZE_RECORD { - COORD dwSize; -} - -struct MENU_EVENT_RECORD { - UINT dwCommandId; -} -alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD; - -struct FOCUS_EVENT_RECORD { - BOOL bSetFocus; -} - -struct INPUT_RECORD { - WORD EventType; - union _Event { - KEY_EVENT_RECORD KeyEvent; - MOUSE_EVENT_RECORD MouseEvent; - WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; - MENU_EVENT_RECORD MenuEvent; - FOCUS_EVENT_RECORD FocusEvent; - } - _Event Event; -} -alias INPUT_RECORD* PINPUT_RECORD; - -extern (Windows): - -BOOL AllocConsole(); -HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, SECURITY_ATTRIBUTES*, DWORD, LPVOID); -BOOL FillConsoleOutputAttribute(HANDLE, WORD, DWORD, COORD, PDWORD); -BOOL FillConsoleOutputCharacterA(HANDLE, CHAR, DWORD, COORD, PDWORD); -BOOL FillConsoleOutputCharacterW(HANDLE, WCHAR, DWORD, COORD, PDWORD); -BOOL FlushConsoleInputBuffer(HANDLE); -BOOL FreeConsole(); -BOOL GenerateConsoleCtrlEvent(DWORD, DWORD); -UINT GetConsoleCP(); -BOOL GetConsoleCursorInfo(HANDLE, PCONSOLE_CURSOR_INFO); -BOOL GetConsoleMode(HANDLE,PDWORD); -UINT GetConsoleOutputCP(); -BOOL GetConsoleScreenBufferInfo(HANDLE, PCONSOLE_SCREEN_BUFFER_INFO); -DWORD GetConsoleTitleA(LPSTR, DWORD); -DWORD GetConsoleTitleW(LPWSTR, DWORD); -COORD GetLargestConsoleWindowSize(HANDLE); -BOOL GetNumberOfConsoleInputEvents(HANDLE, PDWORD); -BOOL GetNumberOfConsoleMouseButtons(PDWORD); -BOOL PeekConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); -BOOL PeekConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); -BOOL ReadConsoleA(HANDLE, PVOID, DWORD, PDWORD, PVOID); -BOOL ReadConsoleW(HANDLE, PVOID, DWORD, PDWORD, PVOID); -BOOL ReadConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); -BOOL ReadConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); -BOOL ReadConsoleOutputAttribute(HANDLE, LPWORD, DWORD, COORD, LPDWORD); -BOOL ReadConsoleOutputCharacterA(HANDLE, LPSTR, DWORD, COORD, PDWORD); -BOOL ReadConsoleOutputCharacterW(HANDLE, LPWSTR, DWORD, COORD, PDWORD); -BOOL ReadConsoleOutputA(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); -BOOL ReadConsoleOutputW(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); -BOOL ScrollConsoleScreenBufferA(HANDLE, CPtr!(SMALL_RECT), CPtr!(SMALL_RECT), COORD, CPtr!(CHAR_INFO)); -BOOL ScrollConsoleScreenBufferW(HANDLE, CPtr!(SMALL_RECT), CPtr!(SMALL_RECT), COORD, CPtr!(CHAR_INFO)); -BOOL SetConsoleActiveScreenBuffer(HANDLE); -BOOL SetConsoleCP(UINT); -BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE, BOOL); -BOOL SetConsoleCursorInfo(HANDLE, CPtr!(CONSOLE_CURSOR_INFO)); -BOOL SetConsoleCursorPosition(HANDLE, COORD); - - -static if (_WIN32_WINNT >= 0x0500) { -BOOL GetConsoleDisplayMode(LPDWORD); -HWND GetConsoleWindow(); -} - -static if (_WIN32_WINNT >= 0x0501) { -BOOL AttachConsole(DWORD); -BOOL SetConsoleDisplayMode(HANDLE, DWORD, PCOORD); -const DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1; -} - -BOOL SetConsoleMode(HANDLE, DWORD); -BOOL SetConsoleOutputCP(UINT); -BOOL SetConsoleScreenBufferSize(HANDLE, COORD); -BOOL SetConsoleTextAttribute(HANDLE, WORD); -BOOL SetConsoleTitleA(LPCSTR); -BOOL SetConsoleTitleW(LPCWSTR); -BOOL SetConsoleWindowInfo(HANDLE, BOOL, CPtr!(SMALL_RECT)); -BOOL WriteConsoleA(HANDLE, PCVOID, DWORD, PDWORD, PVOID); -BOOL WriteConsoleW(HANDLE, PCVOID, DWORD, PDWORD, PVOID); -BOOL WriteConsoleInputA(HANDLE, CPtr!(INPUT_RECORD), DWORD, PDWORD); -BOOL WriteConsoleInputW(HANDLE, CPtr!(INPUT_RECORD), DWORD, PDWORD); -BOOL WriteConsoleOutputA(HANDLE, CPtr!(CHAR_INFO), COORD, COORD, PSMALL_RECT); -BOOL WriteConsoleOutputW(HANDLE, CPtr!(CHAR_INFO), COORD, COORD, PSMALL_RECT); -BOOL WriteConsoleOutputAttribute(HANDLE, CPtr!(WORD), DWORD, COORD, PDWORD); -BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD); -BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD); - -version (Unicode) { - alias FillConsoleOutputCharacterW FillConsoleOutputCharacter; - alias GetConsoleTitleW GetConsoleTitle; - alias PeekConsoleInputW PeekConsoleInput; - alias ReadConsoleW ReadConsole; - alias ReadConsoleInputW ReadConsoleInput; - alias ReadConsoleOutputW ReadConsoleOutput; - alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter; - alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer; - alias SetConsoleTitleW SetConsoleTitle; - alias WriteConsoleW WriteConsole; - alias WriteConsoleInputW WriteConsoleInput; - alias WriteConsoleOutputW WriteConsoleOutput; - alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter; -} else { - alias FillConsoleOutputCharacterA FillConsoleOutputCharacter; - alias GetConsoleTitleA GetConsoleTitle; - alias PeekConsoleInputA PeekConsoleInput; - alias ReadConsoleA ReadConsole; - alias ReadConsoleInputA ReadConsoleInput; - alias ReadConsoleOutputA ReadConsoleOutput; - alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter; - alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer; - alias SetConsoleTitleA SetConsoleTitle; - alias WriteConsoleA WriteConsole; - alias WriteConsoleInputA WriteConsoleInput; - alias WriteConsoleOutputA WriteConsoleOutput; - alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter; -} +/***********************************************************************\ +* wincon.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wincon; +pragma(lib, "kernel32"); + +private import win32.w32api, win32.windef; + +// FIXME: clean up Windows version support + +enum { + FOREGROUND_BLUE = 1, + FOREGROUND_GREEN = 2, + FOREGROUND_RED = 4, + FOREGROUND_INTENSITY = 8, + BACKGROUND_BLUE = 16, + BACKGROUND_GREEN = 32, + BACKGROUND_RED = 64, + BACKGROUND_INTENSITY = 128 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + CONSOLE_FULLSCREEN_MODE = 1, + CONSOLE_WINDOWED_MODE = 0 + } +} + +enum { + CTRL_C_EVENT = 0, + CTRL_BREAK_EVENT = 1, + CTRL_CLOSE_EVENT = 2, + CTRL_LOGOFF_EVENT = 5, + CTRL_SHUTDOWN_EVENT = 6 +} + +enum { + ENABLE_PROCESSED_INPUT = 1, + ENABLE_LINE_INPUT = 2, + ENABLE_ECHO_INPUT = 4, + ENABLE_WINDOW_INPUT = 8, + ENABLE_MOUSE_INPUT = 16 +} + +enum { + ENABLE_PROCESSED_OUTPUT = 1, + ENABLE_WRAP_AT_EOL_OUTPUT = 2 +} + +enum { + KEY_EVENT = 1, + MOUSE_EVENT = 2, + WINDOW_BUFFER_SIZE_EVENT = 4, + MENU_EVENT = 8, + FOCUS_EVENT = 16 +} +enum { + RIGHT_ALT_PRESSED = 1, + LEFT_ALT_PRESSED = 2, + RIGHT_CTRL_PRESSED = 4, + LEFT_CTRL_PRESSED = 8, + SHIFT_PRESSED = 16, + NUMLOCK_ON = 32, + SCROLLLOCK_ON = 64, + CAPSLOCK_ON = 128, + ENHANCED_KEY = 256 +} +enum { + 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 +} + +enum { + MOUSE_MOVED = 1, + DOUBLE_CLICK = 2, + MOUSE_WHEELED = 4 +} + +struct CHAR_INFO { + union _Char { + WCHAR UnicodeChar; + CHAR AsciiChar; + } + _Char Char; + WORD Attributes; +} +alias CHAR_INFO* PCHAR_INFO; + +struct SMALL_RECT { + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; +} +alias SMALL_RECT* PSMALL_RECT; + +struct CONSOLE_CURSOR_INFO { + DWORD dwSize; + BOOL bVisible; +} +alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO; + +struct COORD { + SHORT X; + SHORT Y; +} +alias COORD* PCOORD; + +struct CONSOLE_FONT_INFO { + DWORD nFont; + COORD dwFontSize; +} +alias CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO; + +struct CONSOLE_SCREEN_BUFFER_INFO { + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; +} +alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; + +alias BOOL function(DWORD) PHANDLER_ROUTINE; + +struct KEY_EVENT_RECORD { + BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; + union _uChar { + WCHAR UnicodeChar; + CHAR AsciiChar; + } + _uChar uChar; + DWORD dwControlKeyState; +} + +struct MOUSE_EVENT_RECORD { + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} + +struct WINDOW_BUFFER_SIZE_RECORD { + COORD dwSize; +} + +struct MENU_EVENT_RECORD { + UINT dwCommandId; +} +alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD; + +struct FOCUS_EVENT_RECORD { + BOOL bSetFocus; +} + +struct INPUT_RECORD { + WORD EventType; + union _Event { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + } + _Event Event; +} +alias INPUT_RECORD* PINPUT_RECORD; + +extern (Windows): + +BOOL AllocConsole(); +HANDLE CreateConsoleScreenBuffer(DWORD, DWORD, SECURITY_ATTRIBUTES*, DWORD, LPVOID); +BOOL FillConsoleOutputAttribute(HANDLE, WORD, DWORD, COORD, PDWORD); +BOOL FillConsoleOutputCharacterA(HANDLE, CHAR, DWORD, COORD, PDWORD); +BOOL FillConsoleOutputCharacterW(HANDLE, WCHAR, DWORD, COORD, PDWORD); +BOOL FlushConsoleInputBuffer(HANDLE); +BOOL FreeConsole(); +BOOL GenerateConsoleCtrlEvent(DWORD, DWORD); +UINT GetConsoleCP(); +BOOL GetConsoleCursorInfo(HANDLE, PCONSOLE_CURSOR_INFO); +BOOL GetConsoleMode(HANDLE,PDWORD); +UINT GetConsoleOutputCP(); +BOOL GetConsoleScreenBufferInfo(HANDLE, PCONSOLE_SCREEN_BUFFER_INFO); +DWORD GetConsoleTitleA(LPSTR, DWORD); +DWORD GetConsoleTitleW(LPWSTR, DWORD); +COORD GetLargestConsoleWindowSize(HANDLE); +BOOL GetNumberOfConsoleInputEvents(HANDLE, PDWORD); +BOOL GetNumberOfConsoleMouseButtons(PDWORD); +BOOL PeekConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL PeekConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleA(HANDLE, PVOID, DWORD, PDWORD, PVOID); +BOOL ReadConsoleW(HANDLE, PVOID, DWORD, PDWORD, PVOID); +BOOL ReadConsoleInputA(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleInputW(HANDLE, PINPUT_RECORD, DWORD, PDWORD); +BOOL ReadConsoleOutputAttribute(HANDLE, LPWORD, DWORD, COORD, LPDWORD); +BOOL ReadConsoleOutputCharacterA(HANDLE, LPSTR, DWORD, COORD, PDWORD); +BOOL ReadConsoleOutputCharacterW(HANDLE, LPWSTR, DWORD, COORD, PDWORD); +BOOL ReadConsoleOutputA(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); +BOOL ReadConsoleOutputW(HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); +BOOL ScrollConsoleScreenBufferA(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*); +BOOL ScrollConsoleScreenBufferW(HANDLE, const(SMALL_RECT)*, const(SMALL_RECT)*, COORD, const(CHAR_INFO)*); +BOOL SetConsoleActiveScreenBuffer(HANDLE); +BOOL SetConsoleCP(UINT); +BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE, BOOL); +BOOL SetConsoleCursorInfo(HANDLE, const(CONSOLE_CURSOR_INFO)*); +BOOL SetConsoleCursorPosition(HANDLE, COORD); + + +static if (_WIN32_WINNT >= 0x500) { +BOOL GetConsoleDisplayMode(LPDWORD); +HWND GetConsoleWindow(); +} + +static if (_WIN32_WINNT >= 0x501) { +BOOL AttachConsole(DWORD); +BOOL SetConsoleDisplayMode(HANDLE, DWORD, PCOORD); +const DWORD ATTACH_PARENT_PROCESS = cast(DWORD)-1; +} + +BOOL SetConsoleMode(HANDLE, DWORD); +BOOL SetConsoleOutputCP(UINT); +BOOL SetConsoleScreenBufferSize(HANDLE, COORD); +BOOL SetConsoleTextAttribute(HANDLE, WORD); +BOOL SetConsoleTitleA(LPCSTR); +BOOL SetConsoleTitleW(LPCWSTR); +BOOL SetConsoleWindowInfo(HANDLE, BOOL, const(SMALL_RECT)*); +BOOL WriteConsoleA(HANDLE, PCVOID, DWORD, PDWORD, PVOID); +BOOL WriteConsoleW(HANDLE, PCVOID, DWORD, PDWORD, PVOID); +BOOL WriteConsoleInputA(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD); +BOOL WriteConsoleInputW(HANDLE, const(INPUT_RECORD)*, DWORD, PDWORD); +BOOL WriteConsoleOutputA(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT); +BOOL WriteConsoleOutputW(HANDLE, const(CHAR_INFO)*, COORD, COORD, PSMALL_RECT); +BOOL WriteConsoleOutputAttribute(HANDLE, const(WORD)*, DWORD, COORD, PDWORD); +BOOL WriteConsoleOutputCharacterA(HANDLE, LPCSTR, DWORD, COORD, PDWORD); +BOOL WriteConsoleOutputCharacterW(HANDLE, LPCWSTR, DWORD, COORD, PDWORD); + +version (Unicode) { + alias FillConsoleOutputCharacterW FillConsoleOutputCharacter; + alias GetConsoleTitleW GetConsoleTitle; + alias PeekConsoleInputW PeekConsoleInput; + alias ReadConsoleW ReadConsole; + alias ReadConsoleInputW ReadConsoleInput; + alias ReadConsoleOutputW ReadConsoleOutput; + alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter; + alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer; + alias SetConsoleTitleW SetConsoleTitle; + alias WriteConsoleW WriteConsole; + alias WriteConsoleInputW WriteConsoleInput; + alias WriteConsoleOutputW WriteConsoleOutput; + alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter; +} else { + alias FillConsoleOutputCharacterA FillConsoleOutputCharacter; + alias GetConsoleTitleA GetConsoleTitle; + alias PeekConsoleInputA PeekConsoleInput; + alias ReadConsoleA ReadConsole; + alias ReadConsoleInputA ReadConsoleInput; + alias ReadConsoleOutputA ReadConsoleOutput; + alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter; + alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer; + alias SetConsoleTitleA SetConsoleTitle; + alias WriteConsoleA WriteConsole; + alias WriteConsoleInputA WriteConsoleInput; + alias WriteConsoleOutputA WriteConsoleOutput; + alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter; +} Index: src/win32/wincrypt.d ================================================================== --- src/win32/wincrypt.d +++ src/win32/wincrypt.d @@ -1,790 +1,899 @@ -/***********************************************************************\ -* wincrypt.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.wincrypt; - -private import win32.w32api, win32.winbase, win32.windef; - -/* FIXME: - * Types of some constants - * Types of macros - * Inits of various "size" and "version" members - * Why are some #ifdefs commented out? - */ - -const TCHAR[] - MS_DEF_PROV = "Microsoft Base Cryptographic Provider v1.0", - MS_ENHANCED_PROV = "Microsoft Enhanced Cryptographic Provider v1.0", - MS_STRONG_PROV = "Microsoft Strong Cryptographic Provider", - MS_DEF_RSA_SIG_PROV = "Microsoft RSA Signature Cryptographic Provider", - MS_DEF_RSA_SCHANNEL_PROV = "Microsoft RSA SChannel Cryptographic Provider", - MS_DEF_DSS_PROV = "Microsoft Base DSS Cryptographic Provider", - MS_DEF_DSS_DH_PROV - = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", - MS_ENH_DSS_DH_PROV - = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", - MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider", - MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; - -static if (WINVER > 0x501) { - const TCHAR[] MS_ENH_RSA_AES_PROV - = "Microsoft Enhanced RSA and AES Cryptographic Provider"; -} else static if (WINVER == 0x501) { - const TCHAR[] MS_ENH_RSA_AES_PROV - = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; -} - -ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; } -ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; } -ALG_ID GET_ALG_SID (ALG_ID x) { return x & 0x01FF; } - -enum : ALG_ID { - ALG_CLASS_ANY = 0, - ALG_CLASS_SIGNATURE = 0x2000, - ALG_CLASS_MSG_ENCRYPT = 0x4000, - ALG_CLASS_DATA_ENCRYPT = 0x6000, - ALG_CLASS_HASH = 0x8000, - ALG_CLASS_KEY_EXCHANGE = 0xA000, - ALG_CLASS_ALL = 0xE000 -} - -enum : ALG_ID { - ALG_TYPE_ANY = 0, - ALG_TYPE_DSS = 0x0200, - ALG_TYPE_RSA = 0x0400, - ALG_TYPE_BLOCK = 0x0600, - ALG_TYPE_STREAM = 0x0800, - ALG_TYPE_DH = 0x0A00, - ALG_TYPE_SECURECHANNEL = 0x0C00 -} - -enum : ALG_ID { - ALG_SID_ANY = 0, - ALG_SID_RSA_ANY = 0, - ALG_SID_RSA_PKCS, - ALG_SID_RSA_MSATWORK, - ALG_SID_RSA_ENTRUST, - ALG_SID_RSA_PGP, // = 4 - ALG_SID_DSS_ANY = 0, - ALG_SID_DSS_PKCS, - ALG_SID_DSS_DMS, // = 2 - ALG_SID_DES = 1, - ALG_SID_3DES = 3, - ALG_SID_DESX, - ALG_SID_IDEA, - ALG_SID_CAST, - ALG_SID_SAFERSK64, - ALG_SID_SAFERSK128, - ALG_SID_3DES_112, - ALG_SID_SKIPJACK, - ALG_SID_TEK, - ALG_SID_CYLINK_MEK, - ALG_SID_RC5, // = 13 - ALG_SID_RC2 = 2, - ALG_SID_RC4 = 1, - ALG_SID_SEAL = 2, - ALG_SID_MD2 = 1, - ALG_SID_MD4, - ALG_SID_MD5, - ALG_SID_SHA, - ALG_SID_MAC, - ALG_SID_RIPEMD, - ALG_SID_RIPEMD160, - ALG_SID_SSL3SHAMD5, - ALG_SID_HMAC, - ALG_SID_TLS1PRF, // = 10 - ALG_SID_AES_128 = 14, - ALG_SID_AES_192, - ALG_SID_AES_256, - ALG_SID_AES, // = 17 - ALG_SID_EXAMPLE = 80 -} - -enum : ALG_ID { - CALG_MD2 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2, - CALG_MD4 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4, - CALG_MD5 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5, - CALG_SHA = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA, - CALG_SHA1 = CALG_SHA, - CALG_MAC = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC, - CALG_3DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3, - CALG_CYLINK_MEK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12, - CALG_SKIPJACK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10, - CALG_KEA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4, - CALG_RSA_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, - CALG_DSS_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY, - CALG_RSA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, - CALG_DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES, - CALG_RC2 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2, - CALG_RC4 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4, - CALG_SEAL = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL, - CALG_DH_EPHEM = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS - | ALG_SID_DSS_DMS, - CALG_DESX = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX, -// is undefined ALG_CLASS_DHASH in MinGW - presuming typo - CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, - CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128, - CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192, - CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256, - CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, -} - -/+ -#define CRYPT_VERIFYCONTEXT 0xF0000000 -#define CRYPT_NEWKEYSET 8 -#define CRYPT_DELETEKEYSET 16 -#define CRYPT_MACHINE_KEYSET 32 -#define CRYPT_SILENT 64 -#define CRYPT_EXPORTABLE 1 -#define CRYPT_USER_PROTECTED 2 -#define CRYPT_CREATE_SALT 4 -#define CRYPT_UPDATE_KEY 8 -#define SIMPLEBLOB 1 -#define PUBLICKEYBLOB 6 -#define PRIVATEKEYBLOB 7 -#define PLAINTEXTKEYBLOB 8 -#define OPAQUEKEYBLOB 9 -#define PUBLICKEYBLOBEX 10 -#define SYMMETRICWRAPKEYBLOB 11 -#define AT_KEYEXCHANGE 1 -#define AT_SIGNATURE 2 -#define CRYPT_USERDATA 1 -#define PKCS5_PADDING 1 -#define CRYPT_MODE_CBC 1 -#define CRYPT_MODE_ECB 2 -#define CRYPT_MODE_OFB 3 -#define CRYPT_MODE_CFB 4 -#define CRYPT_MODE_CTS 5 -#define CRYPT_MODE_CBCI 6 -#define CRYPT_MODE_CFBP 7 -#define CRYPT_MODE_OFBP 8 -#define CRYPT_MODE_CBCOFM 9 -#define CRYPT_MODE_CBCOFMI 10 -#define CRYPT_ENCRYPT 1 -#define CRYPT_DECRYPT 2 -#define CRYPT_EXPORT 4 -#define CRYPT_READ 8 -#define CRYPT_WRITE 16 -#define CRYPT_MAC 32 -#define HP_ALGID 1 -#define HP_HASHVAL 2 -#define HP_HASHSIZE 4 -#define HP_HMAC_INFO 5 -#define CRYPT_FAILED FALSE -#define CRYPT_SUCCEED TRUE -#define RCRYPT_SUCCEEDED(r) ((r)==CRYPT_SUCCEED) -#define RCRYPT_FAILED(r) ((r)==CRYPT_FAILED) -#define PP_ENUMALGS 1 -#define PP_ENUMCONTAINERS 2 -#define PP_IMPTYPE 3 -#define PP_NAME 4 -#define PP_VERSION 5 -#define PP_CONTAINER 6 -#define PP_CHANGE_PASSWORD 7 -#define PP_KEYSET_SEC_DESCR 8 -#define PP_CERTCHAIN 9 -#define PP_KEY_TYPE_SUBTYPE 10 -#define PP_PROVTYPE 16 -#define PP_KEYSTORAGE 17 -#define PP_APPLI_CERT 18 -#define PP_SYM_KEYSIZE 19 -#define PP_SESSION_KEYSIZE 20 -#define PP_UI_PROMPT 21 -#define PP_ENUMALGS_EX 22 -#define PP_ENUMMANDROOTS 25 -#define PP_ENUMELECTROOTS 26 -#define PP_KEYSET_TYPE 27 -#define PP_ADMIN_PIN 31 -#define PP_KEYEXCHANGE_PIN 32 -#define PP_SIGNATURE_PIN 33 -#define PP_SIG_KEYSIZE_INC 34 -#define PP_KEYX_KEYSIZE_INC 35 -#define PP_UNIQUE_CONTAINER 36 -#define PP_SGC_INFO 37 -#define PP_USE_HARDWARE_RNG 38 -#define PP_KEYSPEC 39 -#define PP_ENUMEX_SIGNING_PROT 40 -#define CRYPT_FIRST 1 -#define CRYPT_NEXT 2 -#define CRYPT_IMPL_HARDWARE 1 -#define CRYPT_IMPL_SOFTWARE 2 -#define CRYPT_IMPL_MIXED 3 -#define CRYPT_IMPL_UNKNOWN 4 -#define PROV_RSA_FULL 1 -#define PROV_RSA_SIG 2 -#define PROV_DSS 3 -#define PROV_FORTEZZA 4 -#define PROV_MS_MAIL 5 -#define PROV_SSL 6 -#define PROV_STT_MER 7 -#define PROV_STT_ACQ 8 -#define PROV_STT_BRND 9 -#define PROV_STT_ROOT 10 -#define PROV_STT_ISS 11 -#define PROV_RSA_SCHANNEL 12 -#define PROV_DSS_DH 13 -#define PROV_EC_ECDSA_SIG 14 -#define PROV_EC_ECNRA_SIG 15 -#define PROV_EC_ECDSA_FULL 16 -#define PROV_EC_ECNRA_FULL 17 -#define PROV_DH_SCHANNEL 18 -#define PROV_SPYRUS_LYNKS 20 -#define PROV_RNG 21 -#define PROV_INTEL_SEC 22 -#define PROV_RSA_AES 24 -#define MAXUIDLEN 64 -#define CUR_BLOB_VERSION 2 -#define X509_ASN_ENCODING 1 -#define PKCS_7_ASN_ENCODING 65536 -#define CERT_V1 0 -#define CERT_V2 1 -#define CERT_V3 2 -#define CERT_E_CHAINING (-2146762486) -#define CERT_E_CN_NO_MATCH (-2146762481) -#define CERT_E_EXPIRED (-2146762495) -#define CERT_E_PURPOSE (-2146762490) -#define CERT_E_REVOCATION_FAILURE (-2146762482) -#define CERT_E_REVOKED (-2146762484) -#define CERT_E_ROLE (-2146762493) -#define CERT_E_UNTRUSTEDROOT (-2146762487) -#define CERT_E_UNTRUSTEDTESTROOT (-2146762483) -#define CERT_E_VALIDITYPERIODNESTING (-2146762494) -#define CERT_E_WRONG_USAGE (-2146762480) -#define CERT_E_PATHLENCONST (-2146762492) -#define CERT_E_CRITICAL (-2146762491) -#define CERT_E_ISSUERCHAINING (-2146762489) -#define CERT_E_MALFORMED (-2146762488) -#define CRYPT_E_REVOCATION_OFFLINE (-2146885613) -#define CRYPT_E_REVOKED (-2146885616) -#define TRUST_E_BASIC_CONSTRAINTS (-2146869223) -#define TRUST_E_CERT_SIGNATURE (-2146869244) -#define TRUST_E_FAIL (-2146762485) -#define CERT_TRUST_NO_ERROR 0 -#define CERT_TRUST_IS_NOT_TIME_VALID 1 -#define CERT_TRUST_IS_NOT_TIME_NESTED 2 -#define CERT_TRUST_IS_REVOKED 4 -#define CERT_TRUST_IS_NOT_SIGNATURE_VALID 8 -#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 16 -#define CERT_TRUST_IS_UNTRUSTED_ROOT 32 -#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 64 -#define CERT_TRUST_IS_CYCLIC 128 -#define CERT_TRUST_IS_PARTIAL_CHAIN 65536 -#define CERT_TRUST_CTL_IS_NOT_TIME_VALID 131072 -#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 262144 -#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 524288 -#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 1 -#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 2 -#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 4 -#define CERT_TRUST_IS_SELF_SIGNED 8 -#define CERT_TRUST_IS_COMPLEX_CHAIN 65536 -#define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1) -#define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR) 2) -#define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR) 3) -#define CERT_CHAIN_POLICY_SSL ((LPCSTR) 4) -#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5) -#define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6) -#define USAGE_MATCH_TYPE_AND 0 -#define USAGE_MATCH_TYPE_OR 1 -#define CERT_SIMPLE_NAME_STR 1 -#define CERT_OID_NAME_STR 2 -#define CERT_X500_NAME_STR 3 -#define CERT_NAME_STR_SEMICOLON_FLAG 1073741824 -#define CERT_NAME_STR_CRLF_FLAG 134217728 -#define CERT_NAME_STR_NO_PLUS_FLAG 536870912 -#define CERT_NAME_STR_NO_QUOTING_FLAG 268435456 -#define CERT_NAME_STR_REVERSE_FLAG 33554432 -#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 131072 -#define CERT_FIND_ANY 0 -#define CERT_FIND_CERT_ID 1048576 -#define CERT_FIND_CTL_USAGE 655360 -#define CERT_FIND_ENHKEY_USAGE 655360 -#define CERT_FIND_EXISTING 851968 -#define CERT_FIND_HASH 65536 -#define CERT_FIND_ISSUER_ATTR 196612 -#define CERT_FIND_ISSUER_NAME 131076 -#define CERT_FIND_ISSUER_OF 786432 -#define CERT_FIND_KEY_IDENTIFIER 983040 -#define CERT_FIND_KEY_SPEC 589824 -#define CERT_FIND_MD5_HASH 262144 -#define CERT_FIND_PROPERTY 327680 -#define CERT_FIND_PUBLIC_KEY 393216 -#define CERT_FIND_SHA1_HASH 65536 -#define CERT_FIND_SIGNATURE_HASH 917504 -#define CERT_FIND_SUBJECT_ATTR 196615 -#define CERT_FIND_SUBJECT_CERT 720896 -#define CERT_FIND_SUBJECT_NAME 131079 -#define CERT_FIND_SUBJECT_STR_A 458759 -#define CERT_FIND_SUBJECT_STR_W 524295 -#define CERT_FIND_ISSUER_STR_A 458756 -#define CERT_FIND_ISSUER_STR_W 524292 -#define CERT_FIND_OR_ENHKEY_USAGE_FLAG 16 -#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 1 -#define CERT_FIND_NO_ENHKEY_USAGE_FLAG 8 -#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 32 -#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 2 -#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 2 -#define CERT_UNICODE_IS_RDN_ATTRS_FLAG 1 -#define CERT_CHAIN_FIND_BY_ISSUER 1 -#define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 1 -#define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 2 -#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 32768 -#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 4 -#define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 8 -#define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 16384 -#define CERT_STORE_PROV_SYSTEM 10 -#define CERT_SYSTEM_STORE_LOCAL_MACHINE 131072 -#define szOID_PKIX_KP_SERVER_AUTH "4235600" -#define szOID_SERVER_GATED_CRYPTO "4235658" -#define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1" -#define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2" -#define CRYPT_NOHASHOID 0x00000001 -#define CRYPT_NO_SALT 0x10 -#define CRYPT_PREGEN 0x40 -#define CRYPT_RECIPIENT 0x10 -#define CRYPT_INITIATOR 0x40 -#define CRYPT_ONLINE 0x80 -#define CRYPT_SF 0x100 -#define CRYPT_CREATE_IV 0x200 -#define CRYPT_KEK 0x400 -#define CRYPT_DATA_KEY 0x800 -#define CRYPT_VOLATILE 0x1000 -#define CRYPT_SGCKEY 0x2000 -#define KP_IV 0x00000001 -#define KP_SALT 0x00000002 -#define KP_PADDING 0x00000003 -#define KP_MODE 0x00000004 -#define KP_MODE_BITS 0x00000005 -#define KP_PERMISSIONS 0x00000006 -#define KP_ALGID 0x00000007 -#define KP_BLOCKLEN 0x00000008 -#define KP_KEYLEN 0x00000009 -#define KP_SALT_EX 0x0000000a -#define KP_P 0x0000000b -#define KP_G 0x0000000c -#define KP_Q 0x0000000d -#define KP_X 0x0000000e -#define KP_Y 0x0000000f -#define KP_RA 0x00000010 -#define KP_RB 0x00000011 -#define KP_INFO 0x00000012 -#define KP_EFFECTIVE_KEYLEN 0x00000013 -#define KP_SCHANNEL_ALG 0x00000014 -#define KP_PUB_PARAMS 0x00000027 -#define CRYPT_FLAG_PCT1 0x0001 -#define CRYPT_FLAG_SSL2 0x0002 -#define CRYPT_FLAG_SSL3 0x0004 -#define CRYPT_FLAG_TLS1 0x0008 -#define CRYPT_FLAG_IPSEC 0x0010 -#define CRYPT_FLAG_SIGNING 0x0020 -#define SCHANNEL_MAC_KEY 0x00000000 -#define SCHANNEL_ENC_KEY 0x00000001 -#define INTERNATIONAL_USAGE 0x00000001 -+/ - -alias UINT ALG_ID; -alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; -alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; - -struct VTableProvStruc { - FARPROC FuncVerifyImage; -} -alias VTableProvStruc* PVTableProvStruc; - -struct _CRYPTOAPI_BLOB { - DWORD cbData; - BYTE* pbData; -} -alias _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB, CRYPT_UINT_BLOB, - CRYPT_OBJID_BLOB, CERT_NAME_BLOB, CERT_RDN_VALUE_BLOB, CERT_BLOB, - CRL_BLOB, DATA_BLOB, CRYPT_DATA_BLOB, CRYPT_HASH_BLOB, - CRYPT_DIGEST_BLOB, CRYPT_DER_BLOB, CRYPT_ATTR_BLOB; -alias _CRYPTOAPI_BLOB* PCRYPT_INTEGER_BLOB, PCRYPT_UINT_BLOB, - PCRYPT_OBJID_BLOB, PCERT_NAME_BLOB, PCERT_RDN_VALUE_BLOB, PCERT_BLOB, - PCRL_BLOB, PDATA_BLOB, PCRYPT_DATA_BLOB, PCRYPT_HASH_BLOB, - PCRYPT_DIGEST_BLOB, PCRYPT_DER_BLOB, PCRYPT_ATTR_BLOB; - -// not described in SDK; has the same layout as HTTPSPolicyCallbackData -struct SSL_EXTRA_CERT_CHAIN_POLICY_PARA { - DWORD cbStruct; - DWORD dwAuthType; - DWORD fdwChecks; - LPWSTR pwszServerName; -} -alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA HTTPSPolicyCallbackData; -alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA* PSSL_EXTRA_CERT_CHAIN_POLICY_PARA, - PHTTPSPolicyCallbackData; - -/* #if (_WIN32_WINNT>=0x500) */ -struct CERT_CHAIN_POLICY_PARA { - DWORD cbSize = CERT_CHAIN_POLICY_PARA.sizeof; - DWORD dwFlags; - void* pvExtraPolicyPara; -} -alias CERT_CHAIN_POLICY_PARA* PCERT_CHAIN_POLICY_PARA; - -struct CERT_CHAIN_POLICY_STATUS { - DWORD cbSize = CERT_CHAIN_POLICY_STATUS.sizeof; - DWORD dwError; - LONG lChainIndex; - LONG lElementIndex; - void* pvExtraPolicyStatus; -} -alias CERT_CHAIN_POLICY_STATUS* PCERT_CHAIN_POLICY_STATUS; -/* #endif */ - -struct CRYPT_ALGORITHM_IDENTIFIER { - LPSTR pszObjId; - CRYPT_OBJID_BLOB Parameters; -} -alias CRYPT_ALGORITHM_IDENTIFIER* PCRYPT_ALGORITHM_IDENTIFIER; - -struct CRYPT_BIT_BLOB { - DWORD cbData; - BYTE* pbData; - DWORD cUnusedBits; -} -alias CRYPT_BIT_BLOB* PCRYPT_BIT_BLOB; - -struct CERT_PUBLIC_KEY_INFO { - CRYPT_ALGORITHM_IDENTIFIER Algorithm; - CRYPT_BIT_BLOB PublicKey; -} -alias CERT_PUBLIC_KEY_INFO* PCERT_PUBLIC_KEY_INFO; - -struct CERT_EXTENSION { - LPSTR pszObjId; - BOOL fCritical; - CRYPT_OBJID_BLOB Value; -} -alias CERT_EXTENSION* PCERT_EXTENSION; - -struct CERT_INFO { - DWORD dwVersion; - CRYPT_INTEGER_BLOB SerialNumber; - CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; - CERT_NAME_BLOB Issuer; - FILETIME NotBefore; - FILETIME NotAfter; - CERT_NAME_BLOB Subject; - CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; - CRYPT_BIT_BLOB IssuerUniqueId; - CRYPT_BIT_BLOB SubjectUniqueId; - DWORD cExtension; - PCERT_EXTENSION rgExtension; -} -alias CERT_INFO* PCERT_INFO; - -struct CERT_CONTEXT { - DWORD dwCertEncodingType; - BYTE* pbCertEncoded; - DWORD cbCertEncoded; - PCERT_INFO pCertInfo; - HCERTSTORE hCertStore; -} -alias CERT_CONTEXT* PCERT_CONTEXT; -alias CPtr!(CERT_CONTEXT) PCCERT_CONTEXT; - -struct CTL_USAGE { - DWORD cUsageIdentifier; - LPSTR* rgpszUsageIdentifier; -} -alias CTL_USAGE CERT_ENHKEY_USAGE; -alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE; - -struct CERT_USAGE_MATCH { - DWORD dwType; - CERT_ENHKEY_USAGE Usage; -} -alias CERT_USAGE_MATCH* PCERT_USAGE_MATCH; -/* #if (_WIN32_WINNT>=0x500) */ - -struct CERT_CHAIN_PARA { - DWORD cbSize = CERT_CHAIN_PARA.sizeof; - CERT_USAGE_MATCH RequestedUsage; -//#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS - CERT_USAGE_MATCH RequestedIssuancePolicy; - DWORD dwUrlRetrievalTimeout; - BOOL fCheckRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; -//#endif -} -alias CERT_CHAIN_PARA* PCERT_CHAIN_PARA; - -extern (Windows) alias BOOL function(PCCERT_CONTEXT, void*) - PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK; - -struct CERT_CHAIN_FIND_BY_ISSUER_PARA { - DWORD cbSize = CERT_CHAIN_FIND_BY_ISSUER_PARA.sizeof; - LPCSTR pszUsageIdentifier; - DWORD dwKeySpec; - DWORD dwAcquirePrivateKeyFlags; - DWORD cIssuer; - CERT_NAME_BLOB* rgIssuer; - PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback; - void* pvFindArg; - DWORD* pdwIssuerChainIndex; - DWORD* pdwIssuerElementIndex; -} -alias CERT_CHAIN_FIND_BY_ISSUER_PARA* PCERT_CHAIN_FIND_BY_ISSUER_PARA; -/* #endif */ - -struct CERT_TRUST_STATUS { - DWORD dwErrorStatus; - DWORD dwInfoStatus; -} -alias CERT_TRUST_STATUS* PCERT_TRUST_STATUS; - -struct CRL_ENTRY { - CRYPT_INTEGER_BLOB SerialNumber; - FILETIME RevocationDate; - DWORD cExtension; - PCERT_EXTENSION rgExtension; -} -alias CRL_ENTRY* PCRL_ENTRY; - -struct CRL_INFO { - DWORD dwVersion; - CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; - CERT_NAME_BLOB Issuer; - FILETIME ThisUpdate; - FILETIME NextUpdate; - DWORD cCRLEntry; - PCRL_ENTRY rgCRLEntry; - DWORD cExtension; - PCERT_EXTENSION rgExtension; -} -alias CRL_INFO* PCRL_INFO; - -struct CRL_CONTEXT { - DWORD dwCertEncodingType; - BYTE* pbCrlEncoded; - DWORD cbCrlEncoded; - PCRL_INFO pCrlInfo; - HCERTSTORE hCertStore; -} -alias CRL_CONTEXT* PCRL_CONTEXT; -alias CPtr!(CRL_CONTEXT) PCCRL_CONTEXT; - -struct CERT_REVOCATION_CRL_INFO { - DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; - PCCRL_CONTEXT pBaseCRLContext; - PCCRL_CONTEXT pDeltaCRLContext; - PCRL_ENTRY pCrlEntry; - BOOL fDeltaCrlEntry; -} -alias CERT_REVOCATION_CRL_INFO* PCERT_REVOCATION_CRL_INFO; - -struct CERT_REVOCATION_INFO { - DWORD cbSize = CERT_REVOCATION_INFO.sizeof; - DWORD dwRevocationResult; - LPCSTR pszRevocationOid; - LPVOID pvOidSpecificInfo; - BOOL fHasFreshnessTime; - DWORD dwFreshnessTime; - PCERT_REVOCATION_CRL_INFO pCrlInfo; -} -alias CERT_REVOCATION_INFO* PCERT_REVOCATION_INFO; - -/* #if (_WIN32_WINNT>=0x500) */ -struct CERT_CHAIN_ELEMENT { - DWORD cbSize = CERT_CHAIN_ELEMENT.sizeof; - PCCERT_CONTEXT pCertContext; - CERT_TRUST_STATUS TrustStatus; - PCERT_REVOCATION_INFO pRevocationInfo; - PCERT_ENHKEY_USAGE pIssuanceUsage; - PCERT_ENHKEY_USAGE pApplicationUsage; -} -alias CERT_CHAIN_ELEMENT* PCERT_CHAIN_ELEMENT; -/* #endif */ - -struct CRYPT_ATTRIBUTE { - LPSTR pszObjId; - DWORD cValue; - PCRYPT_ATTR_BLOB rgValue; -} -alias CRYPT_ATTRIBUTE* PCRYPT_ATTRIBUTE; - -struct CTL_ENTRY { - CRYPT_DATA_BLOB SubjectIdentifier; - DWORD cAttribute; - PCRYPT_ATTRIBUTE rgAttribute; -} -alias CTL_ENTRY* PCTL_ENTRY; - -struct CTL_INFO { - DWORD dwVersion; - CTL_USAGE SubjectUsage; - CRYPT_DATA_BLOB ListIdentifier; - CRYPT_INTEGER_BLOB SequenceNumber; - FILETIME ThisUpdate; - FILETIME NextUpdate; - CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; - DWORD cCTLEntry; - PCTL_ENTRY rgCTLEntry; - DWORD cExtension; - PCERT_EXTENSION rgExtension; -} -alias CTL_INFO* PCTL_INFO; - -struct CTL_CONTEXT { - DWORD dwMsgAndCertEncodingType; - BYTE* pbCtlEncoded; - DWORD cbCtlEncoded; - PCTL_INFO pCtlInfo; - HCERTSTORE hCertStore; - HCRYPTMSG hCryptMsg; - BYTE* pbCtlContent; - DWORD cbCtlContent; -} -alias CTL_CONTEXT* PCTL_CONTEXT; -alias CPtr!(CTL_CONTEXT) PCCTL_CONTEXT; - -struct CERT_TRUST_LIST_INFO { - DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; - PCTL_ENTRY pCtlEntry; - PCCTL_CONTEXT pCtlContext; -} -alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO; - -struct CERT_SIMPLE_CHAIN { - DWORD cbSize = CERT_SIMPLE_CHAIN.sizeof; - CERT_TRUST_STATUS TrustStatus; - DWORD cElement; - PCERT_CHAIN_ELEMENT* rgpElement; - PCERT_TRUST_LIST_INFO pTrustListInfo; - BOOL fHasRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; -} -alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN; - -/* #if (_WIN32_WINNT>=0x500) */ -alias CPtr!(CERT_CHAIN_CONTEXT) PCCERT_CHAIN_CONTEXT; -struct CERT_CHAIN_CONTEXT { - DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; - CERT_TRUST_STATUS TrustStatus; - DWORD cChain; - PCERT_SIMPLE_CHAIN* rgpChain; - DWORD cLowerQualityChainContext; - PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; - BOOL fHasRevocationFreshnessTime; - DWORD dwRevocationFreshnessTime; -} -alias CERT_CHAIN_CONTEXT* PCERT_CHAIN_CONTEXT; -/* #endif */ - -struct PROV_ENUMALGS { - ALG_ID aiAlgid; - DWORD dwBitLen; - DWORD dwNameLen; - CHAR[20] szName; -} - -struct PUBLICKEYSTRUC { - BYTE bType; - BYTE bVersion; - WORD reserved; - ALG_ID aiKeyAlg; -} -alias PUBLICKEYSTRUC BLOBHEADER; - -struct RSAPUBKEY { - DWORD magic; - DWORD bitlen; - DWORD pubexp; -} - -struct HMAC_INFO { - ALG_ID HashAlgid; - BYTE* pbInnerString; - DWORD cbInnerString; - BYTE* pbOuterString; - DWORD cbOuterString; -} -alias HMAC_INFO* PHMAC_INFO; - -extern (Windows) { - BOOL CertCloseStore(HCERTSTORE, DWORD); - BOOL CertGetCertificateChain(HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME, - HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT*); - BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, - PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); - void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); - DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); - DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); - HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); - HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); - HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, CPtr!(void)); - PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD, - CPtr!(void), PCCERT_CONTEXT); - BOOL CertFreeCertificateContext(PCCERT_CONTEXT); - PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, - PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); - PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD, - CPtr!(void), PCCERT_CHAIN_CONTEXT); - - BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); - BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); - BOOL CryptReleaseContext(HCRYPTPROV, DWORD); - BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); - BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); - BOOL CryptDestroyKey(HCRYPTKEY); - static if (WINVER >= 0x0500) { - BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); - BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); - } - BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); - BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); - BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptSetProvParam(HCRYPTPROV, DWORD, PBYTE, DWORD); - BOOL CryptGetProvParam(HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD); - BOOL CryptGenRandom(HCRYPTPROV, DWORD, PBYTE); - BOOL CryptGetUserKey(HCRYPTPROV, DWORD, HCRYPTKEY*); - BOOL CryptExportKey(HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD); - BOOL CryptImportKey(HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD, - HCRYPTKEY*); - BOOL CryptEncrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD, - DWORD); - BOOL CryptDecrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD); - BOOL CryptCreateHash(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH*); - BOOL CryptHashData(HCRYPTHASH, PBYTE, DWORD, DWORD); - BOOL CryptHashSessionKey(HCRYPTHASH, HCRYPTKEY, DWORD); - BOOL CryptGetHashValue(HCRYPTHASH, DWORD, PBYTE, PDWORD); - BOOL CryptDestroyHash(HCRYPTHASH); - BOOL CryptSignHashA(HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD); - BOOL CryptSignHashW(HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD); - BOOL CryptVerifySignatureA(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR, - DWORD); - BOOL CryptVerifySignatureW(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR, - DWORD); - BOOL CryptSetProviderA(LPCSTR, DWORD); - BOOL CryptSetProviderW(LPCWSTR, DWORD); -} - -version (Unicode) { - alias CertNameToStrW CertNameToStr; - alias CryptAcquireContextW CryptAcquireContext; - alias CryptSignHashW CryptSignHash; - alias CryptVerifySignatureW CryptVerifySignature; - alias CryptSetProviderW CryptSetProvider; - alias CertOpenSystemStoreW CertOpenSystemStore; - /+alias CERT_FIND_SUBJECT_STR_W CERT_FIND_SUBJECT_STR; - alias CERT_FIND_ISSUER_STR_W CERT_FIND_ISSUER_STR;+/ -} else { - alias CertNameToStrA CertNameToStr; - alias CryptAcquireContextA CryptAcquireContext; - alias CryptSignHashA CryptSignHash; - alias CryptVerifySignatureA CryptVerifySignature; - alias CryptSetProviderA CryptSetProvider; - alias CertOpenSystemStoreA CertOpenSystemStore; - /+alias CERT_FIND_SUBJECT_STR_A CERT_FIND_SUBJECT_STR; - alias CERT_FIND_ISSUER_STR_A CERT_FIND_ISSUER_STR;+/ -} +/***********************************************************************\ +* wincrypt.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wincrypt; + +private import win32.w32api, win32.winbase, win32.windef; + +/* FIXME: + * Types of some constants + * Types of macros + * Inits of various "size" and "version" members + * Why are some #ifdefs commented out? + */ + +const TCHAR[] + MS_DEF_PROV = "Microsoft Base Cryptographic Provider v1.0", + MS_ENHANCED_PROV = "Microsoft Enhanced Cryptographic Provider v1.0", + MS_STRONG_PROV = "Microsoft Strong Cryptographic Provider", + MS_DEF_RSA_SIG_PROV = "Microsoft RSA Signature Cryptographic Provider", + MS_DEF_RSA_SCHANNEL_PROV = "Microsoft RSA SChannel Cryptographic Provider", + MS_DEF_DSS_PROV = "Microsoft Base DSS Cryptographic Provider", + MS_DEF_DSS_DH_PROV + = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", + MS_ENH_DSS_DH_PROV + = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", + MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider", + MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; + +static if (_WIN32_WINNT > 0x501) { + const TCHAR[] MS_ENH_RSA_AES_PROV + = "Microsoft Enhanced RSA and AES Cryptographic Provider"; +} else static if (_WIN32_WINNT == 0x501) { + const TCHAR[] MS_ENH_RSA_AES_PROV + = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; +} + +ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; } +ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; } +ALG_ID GET_ALG_SID (ALG_ID x) { return x & 0x01FF; } + +enum : ALG_ID { + ALG_CLASS_ANY = 0, + ALG_CLASS_SIGNATURE = 0x2000, + ALG_CLASS_MSG_ENCRYPT = 0x4000, + ALG_CLASS_DATA_ENCRYPT = 0x6000, + ALG_CLASS_HASH = 0x8000, + ALG_CLASS_KEY_EXCHANGE = 0xA000, + ALG_CLASS_ALL = 0xE000 +} + +enum : ALG_ID { + ALG_TYPE_ANY = 0, + ALG_TYPE_DSS = 0x0200, + ALG_TYPE_RSA = 0x0400, + ALG_TYPE_BLOCK = 0x0600, + ALG_TYPE_STREAM = 0x0800, + ALG_TYPE_DH = 0x0A00, + ALG_TYPE_SECURECHANNEL = 0x0C00 +} + +enum : ALG_ID { + ALG_SID_ANY = 0, + ALG_SID_RSA_ANY = 0, + ALG_SID_RSA_PKCS, + ALG_SID_RSA_MSATWORK, + ALG_SID_RSA_ENTRUST, + ALG_SID_RSA_PGP, // = 4 + ALG_SID_DSS_ANY = 0, + ALG_SID_DSS_PKCS, + ALG_SID_DSS_DMS, // = 2 + ALG_SID_DES = 1, + ALG_SID_3DES = 3, + ALG_SID_DESX, + ALG_SID_IDEA, + ALG_SID_CAST, + ALG_SID_SAFERSK64, + ALG_SID_SAFERSK128, + ALG_SID_3DES_112, + ALG_SID_SKIPJACK, + ALG_SID_TEK, + ALG_SID_CYLINK_MEK, + ALG_SID_RC5, // = 13 + ALG_SID_RC2 = 2, + ALG_SID_RC4 = 1, + ALG_SID_SEAL = 2, + ALG_SID_MD2 = 1, + ALG_SID_MD4, + ALG_SID_MD5, + ALG_SID_SHA, + ALG_SID_MAC, + ALG_SID_RIPEMD, + ALG_SID_RIPEMD160, + ALG_SID_SSL3SHAMD5, + ALG_SID_HMAC, + ALG_SID_TLS1PRF, // = 10 + ALG_SID_AES_128 = 14, + ALG_SID_AES_192, + ALG_SID_AES_256, + ALG_SID_AES, // = 17 + ALG_SID_EXAMPLE = 80 +} + +enum : ALG_ID { + CALG_MD2 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2, + CALG_MD4 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4, + CALG_MD5 = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5, + CALG_SHA = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA, + CALG_SHA1 = CALG_SHA, + CALG_MAC = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC, + CALG_3DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3, + CALG_CYLINK_MEK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12, + CALG_SKIPJACK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10, + CALG_KEA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4, + CALG_RSA_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, + CALG_DSS_SIGN = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY, + CALG_RSA_KEYX = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY, + CALG_DES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES, + CALG_RC2 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2, + CALG_RC4 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4, + CALG_SEAL = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL, + CALG_DH_EPHEM = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS + | ALG_SID_DSS_DMS, + CALG_DESX = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX, +// is undefined ALG_CLASS_DHASH in MinGW - presuming typo + CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, + CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128, + CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192, + CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256, + CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, +} + +enum { + CRYPT_VERIFYCONTEXT = 0xF0000000, +} + +enum { + CRYPT_NEWKEYSET = 8, + CRYPT_DELETEKEYSET = 16, + CRYPT_MACHINE_KEYSET = 32, + CRYPT_SILENT = 64, +} + +enum { + CRYPT_EXPORTABLE = 1, + CRYPT_USER_PROTECTED = 2, + CRYPT_CREATE_SALT = 4, + CRYPT_UPDATE_KEY = 8, +} + +enum { + SIMPLEBLOB = 1, + PUBLICKEYBLOB = 6, + PRIVATEKEYBLOB = 7, + PLAINTEXTKEYBLOB = 8, + OPAQUEKEYBLOB = 9, + PUBLICKEYBLOBEX = 10, + SYMMETRICWRAPKEYBLOB = 11, +} + +enum { + AT_KEYEXCHANGE = 1, + AT_SIGNATURE = 2, +} + +enum { + CRYPT_USERDATA = 1, +} + +enum { + PKCS5_PADDING = 1, +} + +enum { + CRYPT_MODE_CBC = 1, + CRYPT_MODE_ECB = 2, + CRYPT_MODE_OFB = 3, + CRYPT_MODE_CFB = 4, + CRYPT_MODE_CTS = 5, + CRYPT_MODE_CBCI = 6, + CRYPT_MODE_CFBP = 7, + CRYPT_MODE_OFBP = 8, + CRYPT_MODE_CBCOFM = 9, + CRYPT_MODE_CBCOFMI = 10, +} + +enum { + CRYPT_ENCRYPT = 1, + CRYPT_DECRYPT = 2, + CRYPT_EXPORT = 4, + CRYPT_READ = 8, + CRYPT_WRITE = 16, + CRYPT_MAC = 32, +} + +enum { + HP_ALGID = 1, + HP_HASHVAL = 2, + HP_HASHSIZE = 4, + HP_HMAC_INFO = 5, +} + +enum { + CRYPT_FAILED = FALSE, + CRYPT_SUCCEED = TRUE, +} + +bool RCRYPT_SUCCEEDED(BOOL r) { return r==CRYPT_SUCCEED; } +bool RCRYPT_FAILED(BOOL r) { return r==CRYPT_FAILED; } + +enum { + PP_ENUMALGS = 1, + PP_ENUMCONTAINERS = 2, + PP_IMPTYPE = 3, + PP_NAME = 4, + PP_VERSION = 5, + PP_CONTAINER = 6, + PP_CHANGE_PASSWORD = 7, + PP_KEYSET_SEC_DESCR = 8, + PP_CERTCHAIN = 9, + PP_KEY_TYPE_SUBTYPE = 10, + PP_PROVTYPE = 16, + PP_KEYSTORAGE = 17, + PP_APPLI_CERT = 18, + PP_SYM_KEYSIZE = 19, + PP_SESSION_KEYSIZE = 20, + PP_UI_PROMPT = 21, + PP_ENUMALGS_EX = 22, + PP_ENUMMANDROOTS = 25, + PP_ENUMELECTROOTS = 26, + PP_KEYSET_TYPE = 27, + PP_ADMIN_PIN = 31, + PP_KEYEXCHANGE_PIN = 32, + PP_SIGNATURE_PIN = 33, + PP_SIG_KEYSIZE_INC = 34, + PP_KEYX_KEYSIZE_INC = 35, + PP_UNIQUE_CONTAINER = 36, + PP_SGC_INFO = 37, + PP_USE_HARDWARE_RNG = 38, + PP_KEYSPEC = 39, + PP_ENUMEX_SIGNING_PROT = 40, +} + +enum { + CRYPT_FIRST = 1, + CRYPT_NEXT = 2, +} + +enum { + CRYPT_IMPL_HARDWARE = 1, + CRYPT_IMPL_SOFTWARE = 2, + CRYPT_IMPL_MIXED = 3, + CRYPT_IMPL_UNKNOWN = 4, +} + +enum { + PROV_RSA_FULL = 1, + PROV_RSA_SIG = 2, + PROV_DSS = 3, + PROV_FORTEZZA = 4, + PROV_MS_MAIL = 5, + PROV_SSL = 6, + PROV_STT_MER = 7, + PROV_STT_ACQ = 8, + PROV_STT_BRND = 9, + PROV_STT_ROOT = 10, + PROV_STT_ISS = 11, + PROV_RSA_SCHANNEL = 12, + PROV_DSS_DH = 13, + PROV_EC_ECDSA_SIG = 14, + PROV_EC_ECNRA_SIG = 15, + PROV_EC_ECDSA_FULL = 16, + PROV_EC_ECNRA_FULL = 17, + PROV_DH_SCHANNEL = 18, + PROV_SPYRUS_LYNKS = 20, + PROV_RNG = 21, + PROV_INTEL_SEC = 22, + PROV_RSA_AES = 24, + MAXUIDLEN = 64, +} + +enum { + CUR_BLOB_VERSION = 2, +} + +enum { + X509_ASN_ENCODING = 1, + PKCS_7_ASN_ENCODING = 65536, +} + +enum { + CERT_V1 = 0, + CERT_V2 = 1, + CERT_V3 = 2, +} + +enum { + CERT_E_CHAINING = (-2146762486), + CERT_E_CN_NO_MATCH = (-2146762481), + CERT_E_EXPIRED = (-2146762495), + CERT_E_PURPOSE = (-2146762490), + CERT_E_REVOCATION_FAILURE = (-2146762482), + CERT_E_REVOKED = (-2146762484), + CERT_E_ROLE = (-2146762493), + CERT_E_UNTRUSTEDROOT = (-2146762487), + CERT_E_UNTRUSTEDTESTROOT = (-2146762483), + CERT_E_VALIDITYPERIODNESTING = (-2146762494), + CERT_E_WRONG_USAGE = (-2146762480), + CERT_E_PATHLENCONST = (-2146762492), + CERT_E_CRITICAL = (-2146762491), + CERT_E_ISSUERCHAINING = (-2146762489), + CERT_E_MALFORMED = (-2146762488), + CRYPT_E_REVOCATION_OFFLINE = (-2146885613), + CRYPT_E_REVOKED = (-2146885616), + TRUST_E_BASIC_CONSTRAINTS = (-2146869223), + TRUST_E_CERT_SIGNATURE = (-2146869244), + TRUST_E_FAIL = (-2146762485), +} + +enum { + CERT_TRUST_NO_ERROR = 0, + CERT_TRUST_IS_NOT_TIME_VALID = 1, + CERT_TRUST_IS_NOT_TIME_NESTED = 2, + CERT_TRUST_IS_REVOKED = 4, + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8, + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16, + CERT_TRUST_IS_UNTRUSTED_ROOT = 32, + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64, + CERT_TRUST_IS_CYCLIC = 128, + CERT_TRUST_IS_PARTIAL_CHAIN = 65536, + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 131072, + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144, + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288, +} + +enum { + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 1, + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 2, + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 4, + CERT_TRUST_IS_SELF_SIGNED = 8, + CERT_TRUST_IS_COMPLEX_CHAIN = 65536, +} + +enum { + CERT_CHAIN_POLICY_BASE = cast(LPCSTR) 1, + CERT_CHAIN_POLICY_AUTHENTICODE = cast(LPCSTR) 2, + CERT_CHAIN_POLICY_AUTHENTICODE_TS = cast(LPCSTR) 3, + CERT_CHAIN_POLICY_SSL = cast(LPCSTR) 4, + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = cast(LPCSTR) 5, + CERT_CHAIN_POLICY_NT_AUTH = cast(LPCSTR) 6, +} + +enum { + USAGE_MATCH_TYPE_AND = 0, + USAGE_MATCH_TYPE_OR = 1, +} + +enum { + CERT_SIMPLE_NAME_STR = 1, + CERT_OID_NAME_STR = 2, + CERT_X500_NAME_STR = 3, +} +enum { + CERT_NAME_STR_SEMICOLON_FLAG = 1073741824, + CERT_NAME_STR_CRLF_FLAG = 134217728, + CERT_NAME_STR_NO_PLUS_FLAG = 536870912, + CERT_NAME_STR_NO_QUOTING_FLAG = 268435456, + CERT_NAME_STR_REVERSE_FLAG = 33554432, + CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = 131072, +} + +enum { + CERT_FIND_ANY = 0, + CERT_FIND_CERT_ID = 1048576, + CERT_FIND_CTL_USAGE = 655360, + CERT_FIND_ENHKEY_USAGE = 655360, + CERT_FIND_EXISTING = 851968, + CERT_FIND_HASH = 65536, + CERT_FIND_ISSUER_ATTR = 196612, + CERT_FIND_ISSUER_NAME = 131076, + CERT_FIND_ISSUER_OF = 786432, + CERT_FIND_KEY_IDENTIFIER = 983040, + CERT_FIND_KEY_SPEC = 589824, + CERT_FIND_MD5_HASH = 262144, + CERT_FIND_PROPERTY = 327680, + CERT_FIND_PUBLIC_KEY = 393216, + CERT_FIND_SHA1_HASH = 65536, + CERT_FIND_SIGNATURE_HASH = 917504, + CERT_FIND_SUBJECT_ATTR = 196615, + CERT_FIND_SUBJECT_CERT = 720896, + CERT_FIND_SUBJECT_NAME = 131079, + CERT_FIND_SUBJECT_STR_A = 458759, + CERT_FIND_SUBJECT_STR_W = 524295, + CERT_FIND_ISSUER_STR_A = 458756, + CERT_FIND_ISSUER_STR_W = 524292, +} + +enum { + CERT_FIND_OR_ENHKEY_USAGE_FLAG = 16, + CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 1, + CERT_FIND_NO_ENHKEY_USAGE_FLAG = 8, + CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 32, + CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 2, +} + +enum { + CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG = 2, + CERT_UNICODE_IS_RDN_ATTRS_FLAG = 1, + CERT_CHAIN_FIND_BY_ISSUER = 1, +} + +enum { + CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 1, + CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 2, + CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 4, + CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 8, + CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 16384, + CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 32768, +} + +enum { + CERT_STORE_PROV_SYSTEM = 10, + CERT_SYSTEM_STORE_LOCAL_MACHINE = 131072, +} + +enum { + szOID_PKIX_KP_SERVER_AUTH = "4235600", + szOID_SERVER_GATED_CRYPTO = "4235658", + szOID_SGC_NETSCAPE = "2.16.840.1.113730.4.1", + szOID_PKIX_KP_CLIENT_AUTH = "1.3.6.1.5.5.7.3.2", +} + +enum { + CRYPT_NOHASHOID = 0x00000001, + CRYPT_NO_SALT = 0x10, + CRYPT_PREGEN = 0x40, +} + +enum { + CRYPT_RECIPIENT = 0x10, + CRYPT_INITIATOR = 0x40, + CRYPT_ONLINE = 0x80, + CRYPT_SF = 0x100, + CRYPT_CREATE_IV = 0x200, + CRYPT_KEK = 0x400, + CRYPT_DATA_KEY = 0x800, + CRYPT_VOLATILE = 0x1000, + CRYPT_SGCKEY = 0x2000, +} + +enum { + KP_IV = 0x00000001, + KP_SALT = 0x00000002, + KP_PADDING = 0x00000003, + KP_MODE = 0x00000004, + KP_MODE_BITS = 0x00000005, + KP_PERMISSIONS = 0x00000006, + KP_ALGID = 0x00000007, + KP_BLOCKLEN = 0x00000008, + KP_KEYLEN = 0x00000009, + KP_SALT_EX = 0x0000000a, + KP_P = 0x0000000b, + KP_G = 0x0000000c, + KP_Q = 0x0000000d, + KP_X = 0x0000000e, + KP_Y = 0x0000000f, + KP_RA = 0x00000010, + KP_RB = 0x00000011, + KP_INFO = 0x00000012, + KP_EFFECTIVE_KEYLEN = 0x00000013, + KP_SCHANNEL_ALG = 0x00000014, + KP_PUB_PARAMS = 0x00000027, +} + +enum { + CRYPT_FLAG_PCT1 = 0x0001, + CRYPT_FLAG_SSL2 = 0x0002, + CRYPT_FLAG_SSL3 = 0x0004, + CRYPT_FLAG_TLS1 = 0x0008, + CRYPT_FLAG_IPSEC = 0x0010, + CRYPT_FLAG_SIGNING = 0x0020, +} + +enum { + SCHANNEL_MAC_KEY = 0x00000000, + SCHANNEL_ENC_KEY = 0x00000001, +} + +enum { + INTERNATIONAL_USAGE = 0x00000001, +} + + +alias UINT ALG_ID; +alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; +alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; + +struct VTableProvStruc { + FARPROC FuncVerifyImage; +} +alias VTableProvStruc* PVTableProvStruc; + +struct _CRYPTOAPI_BLOB { + DWORD cbData; + BYTE* pbData; +} +alias _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB, CRYPT_UINT_BLOB, + CRYPT_OBJID_BLOB, CERT_NAME_BLOB, CERT_RDN_VALUE_BLOB, CERT_BLOB, + CRL_BLOB, DATA_BLOB, CRYPT_DATA_BLOB, CRYPT_HASH_BLOB, + CRYPT_DIGEST_BLOB, CRYPT_DER_BLOB, CRYPT_ATTR_BLOB; +alias _CRYPTOAPI_BLOB* PCRYPT_INTEGER_BLOB, PCRYPT_UINT_BLOB, + PCRYPT_OBJID_BLOB, PCERT_NAME_BLOB, PCERT_RDN_VALUE_BLOB, PCERT_BLOB, + PCRL_BLOB, PDATA_BLOB, PCRYPT_DATA_BLOB, PCRYPT_HASH_BLOB, + PCRYPT_DIGEST_BLOB, PCRYPT_DER_BLOB, PCRYPT_ATTR_BLOB; + +// not described in SDK; has the same layout as HTTPSPolicyCallbackData +struct SSL_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbStruct; + DWORD dwAuthType; + DWORD fdwChecks; + LPWSTR pwszServerName; +} +alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA HTTPSPolicyCallbackData; +alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA* PSSL_EXTRA_CERT_CHAIN_POLICY_PARA, + PHTTPSPolicyCallbackData; + +/* #if (_WIN32_WINNT>=0x500) */ +struct CERT_CHAIN_POLICY_PARA { + DWORD cbSize = CERT_CHAIN_POLICY_PARA.sizeof; + DWORD dwFlags; + void* pvExtraPolicyPara; +} +alias CERT_CHAIN_POLICY_PARA* PCERT_CHAIN_POLICY_PARA; + +struct CERT_CHAIN_POLICY_STATUS { + DWORD cbSize = CERT_CHAIN_POLICY_STATUS.sizeof; + DWORD dwError; + LONG lChainIndex; + LONG lElementIndex; + void* pvExtraPolicyStatus; +} +alias CERT_CHAIN_POLICY_STATUS* PCERT_CHAIN_POLICY_STATUS; +/* #endif */ + +struct CRYPT_ALGORITHM_IDENTIFIER { + LPSTR pszObjId; + CRYPT_OBJID_BLOB Parameters; +} +alias CRYPT_ALGORITHM_IDENTIFIER* PCRYPT_ALGORITHM_IDENTIFIER; + +struct CRYPT_BIT_BLOB { + DWORD cbData; + BYTE* pbData; + DWORD cUnusedBits; +} +alias CRYPT_BIT_BLOB* PCRYPT_BIT_BLOB; + +struct CERT_PUBLIC_KEY_INFO { + CRYPT_ALGORITHM_IDENTIFIER Algorithm; + CRYPT_BIT_BLOB PublicKey; +} +alias CERT_PUBLIC_KEY_INFO* PCERT_PUBLIC_KEY_INFO; + +struct CERT_EXTENSION { + LPSTR pszObjId; + BOOL fCritical; + CRYPT_OBJID_BLOB Value; +} +alias CERT_EXTENSION* PCERT_EXTENSION; + +struct CERT_INFO { + DWORD dwVersion; + CRYPT_INTEGER_BLOB SerialNumber; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME NotBefore; + FILETIME NotAfter; + CERT_NAME_BLOB Subject; + CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; + CRYPT_BIT_BLOB IssuerUniqueId; + CRYPT_BIT_BLOB SubjectUniqueId; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CERT_INFO* PCERT_INFO; + +struct CERT_CONTEXT { + DWORD dwCertEncodingType; + BYTE* pbCertEncoded; + DWORD cbCertEncoded; + PCERT_INFO pCertInfo; + HCERTSTORE hCertStore; +} +alias CERT_CONTEXT* PCERT_CONTEXT; +alias const(CERT_CONTEXT)* PCCERT_CONTEXT; + +struct CTL_USAGE { + DWORD cUsageIdentifier; + LPSTR* rgpszUsageIdentifier; +} +alias CTL_USAGE CERT_ENHKEY_USAGE; +alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE; + +struct CERT_USAGE_MATCH { + DWORD dwType; + CERT_ENHKEY_USAGE Usage; +} +alias CERT_USAGE_MATCH* PCERT_USAGE_MATCH; +/* #if (_WIN32_WINNT>=0x500) */ + +struct CERT_CHAIN_PARA { + DWORD cbSize = CERT_CHAIN_PARA.sizeof; + CERT_USAGE_MATCH RequestedUsage; +//#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS + CERT_USAGE_MATCH RequestedIssuancePolicy; + DWORD dwUrlRetrievalTimeout; + BOOL fCheckRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +//#endif +} +alias CERT_CHAIN_PARA* PCERT_CHAIN_PARA; + +extern (Windows) alias BOOL function(PCCERT_CONTEXT, void*) + PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK; + +struct CERT_CHAIN_FIND_BY_ISSUER_PARA { + DWORD cbSize = CERT_CHAIN_FIND_BY_ISSUER_PARA.sizeof; + LPCSTR pszUsageIdentifier; + DWORD dwKeySpec; + DWORD dwAcquirePrivateKeyFlags; + DWORD cIssuer; + CERT_NAME_BLOB* rgIssuer; + PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback; + void* pvFindArg; + DWORD* pdwIssuerChainIndex; + DWORD* pdwIssuerElementIndex; +} +alias CERT_CHAIN_FIND_BY_ISSUER_PARA* PCERT_CHAIN_FIND_BY_ISSUER_PARA; +/* #endif */ + +struct CERT_TRUST_STATUS { + DWORD dwErrorStatus; + DWORD dwInfoStatus; +} +alias CERT_TRUST_STATUS* PCERT_TRUST_STATUS; + +struct CRL_ENTRY { + CRYPT_INTEGER_BLOB SerialNumber; + FILETIME RevocationDate; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CRL_ENTRY* PCRL_ENTRY; + +struct CRL_INFO { + DWORD dwVersion; + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CERT_NAME_BLOB Issuer; + FILETIME ThisUpdate; + FILETIME NextUpdate; + DWORD cCRLEntry; + PCRL_ENTRY rgCRLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CRL_INFO* PCRL_INFO; + +struct CRL_CONTEXT { + DWORD dwCertEncodingType; + BYTE* pbCrlEncoded; + DWORD cbCrlEncoded; + PCRL_INFO pCrlInfo; + HCERTSTORE hCertStore; +} +alias CRL_CONTEXT* PCRL_CONTEXT; +alias const(CRL_CONTEXT)* PCCRL_CONTEXT; + +struct CERT_REVOCATION_CRL_INFO { + DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; + PCCRL_CONTEXT pBaseCRLContext; + PCCRL_CONTEXT pDeltaCRLContext; + PCRL_ENTRY pCrlEntry; + BOOL fDeltaCrlEntry; +} +alias CERT_REVOCATION_CRL_INFO* PCERT_REVOCATION_CRL_INFO; + +struct CERT_REVOCATION_INFO { + DWORD cbSize = CERT_REVOCATION_INFO.sizeof; + DWORD dwRevocationResult; + LPCSTR pszRevocationOid; + LPVOID pvOidSpecificInfo; + BOOL fHasFreshnessTime; + DWORD dwFreshnessTime; + PCERT_REVOCATION_CRL_INFO pCrlInfo; +} +alias CERT_REVOCATION_INFO* PCERT_REVOCATION_INFO; + +/* #if (_WIN32_WINNT>=0x500) */ +struct CERT_CHAIN_ELEMENT { + DWORD cbSize = CERT_CHAIN_ELEMENT.sizeof; + PCCERT_CONTEXT pCertContext; + CERT_TRUST_STATUS TrustStatus; + PCERT_REVOCATION_INFO pRevocationInfo; + PCERT_ENHKEY_USAGE pIssuanceUsage; + PCERT_ENHKEY_USAGE pApplicationUsage; +} +alias CERT_CHAIN_ELEMENT* PCERT_CHAIN_ELEMENT; +/* #endif */ + +struct CRYPT_ATTRIBUTE { + LPSTR pszObjId; + DWORD cValue; + PCRYPT_ATTR_BLOB rgValue; +} +alias CRYPT_ATTRIBUTE* PCRYPT_ATTRIBUTE; + +struct CTL_ENTRY { + CRYPT_DATA_BLOB SubjectIdentifier; + DWORD cAttribute; + PCRYPT_ATTRIBUTE rgAttribute; +} +alias CTL_ENTRY* PCTL_ENTRY; + +struct CTL_INFO { + DWORD dwVersion; + CTL_USAGE SubjectUsage; + CRYPT_DATA_BLOB ListIdentifier; + CRYPT_INTEGER_BLOB SequenceNumber; + FILETIME ThisUpdate; + FILETIME NextUpdate; + CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; + DWORD cCTLEntry; + PCTL_ENTRY rgCTLEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} +alias CTL_INFO* PCTL_INFO; + +struct CTL_CONTEXT { + DWORD dwMsgAndCertEncodingType; + BYTE* pbCtlEncoded; + DWORD cbCtlEncoded; + PCTL_INFO pCtlInfo; + HCERTSTORE hCertStore; + HCRYPTMSG hCryptMsg; + BYTE* pbCtlContent; + DWORD cbCtlContent; +} +alias CTL_CONTEXT* PCTL_CONTEXT; +alias const(CTL_CONTEXT)* PCCTL_CONTEXT; + +struct CERT_TRUST_LIST_INFO { + DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; + PCTL_ENTRY pCtlEntry; + PCCTL_CONTEXT pCtlContext; +} +alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO; + +struct CERT_SIMPLE_CHAIN { + DWORD cbSize = CERT_SIMPLE_CHAIN.sizeof; + CERT_TRUST_STATUS TrustStatus; + DWORD cElement; + PCERT_CHAIN_ELEMENT* rgpElement; + PCERT_TRUST_LIST_INFO pTrustListInfo; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +} +alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN; + +/* #if (_WIN32_WINNT>=0x500) */ +alias const(CERT_CHAIN_CONTEXT)* PCCERT_CHAIN_CONTEXT; +struct CERT_CHAIN_CONTEXT { + DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; + CERT_TRUST_STATUS TrustStatus; + DWORD cChain; + PCERT_SIMPLE_CHAIN* rgpChain; + DWORD cLowerQualityChainContext; + PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; + BOOL fHasRevocationFreshnessTime; + DWORD dwRevocationFreshnessTime; +} +alias CERT_CHAIN_CONTEXT* PCERT_CHAIN_CONTEXT; +/* #endif */ + +struct PROV_ENUMALGS { + ALG_ID aiAlgid; + DWORD dwBitLen; + DWORD dwNameLen; + CHAR[20] szName; +} + +struct PUBLICKEYSTRUC { + BYTE bType; + BYTE bVersion; + WORD reserved; + ALG_ID aiKeyAlg; +} +alias PUBLICKEYSTRUC BLOBHEADER; + +struct RSAPUBKEY { + DWORD magic; + DWORD bitlen; + DWORD pubexp; +} + +struct HMAC_INFO { + ALG_ID HashAlgid; + BYTE* pbInnerString; + DWORD cbInnerString; + BYTE* pbOuterString; + DWORD cbOuterString; +} +alias HMAC_INFO* PHMAC_INFO; + +extern (Windows) { + BOOL CertCloseStore(HCERTSTORE, DWORD); + BOOL CertGetCertificateChain(HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME, + HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT*); + BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, + PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); + void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); + DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); + DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); + HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); + HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); + HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, const(void)*); + PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD, + const(void)*, PCCERT_CONTEXT); + BOOL CertFreeCertificateContext(PCCERT_CONTEXT); + PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, + PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); + PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD, + const(void)*, PCCERT_CHAIN_CONTEXT); + + BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); + BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); + BOOL CryptReleaseContext(HCRYPTPROV, DWORD); + BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); + BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); + BOOL CryptDestroyKey(HCRYPTKEY); + static if (_WIN32_WINNT >= 0x500) { + BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); + BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); + } + BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); + BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); + BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptSetProvParam(HCRYPTPROV, DWORD, PBYTE, DWORD); + BOOL CryptGetProvParam(HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD); + BOOL CryptGenRandom(HCRYPTPROV, DWORD, PBYTE); + BOOL CryptGetUserKey(HCRYPTPROV, DWORD, HCRYPTKEY*); + BOOL CryptExportKey(HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD); + BOOL CryptImportKey(HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD, + HCRYPTKEY*); + BOOL CryptEncrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD, + DWORD); + BOOL CryptDecrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD); + BOOL CryptCreateHash(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH*); + BOOL CryptHashData(HCRYPTHASH, PBYTE, DWORD, DWORD); + BOOL CryptHashSessionKey(HCRYPTHASH, HCRYPTKEY, DWORD); + BOOL CryptGetHashValue(HCRYPTHASH, DWORD, PBYTE, PDWORD); + BOOL CryptDestroyHash(HCRYPTHASH); + BOOL CryptSignHashA(HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD); + BOOL CryptSignHashW(HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD); + BOOL CryptVerifySignatureA(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR, + DWORD); + BOOL CryptVerifySignatureW(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR, + DWORD); + BOOL CryptSetProviderA(LPCSTR, DWORD); + BOOL CryptSetProviderW(LPCWSTR, DWORD); +} + +version (Unicode) { + alias CertNameToStrW CertNameToStr; + alias CryptAcquireContextW CryptAcquireContext; + alias CryptSignHashW CryptSignHash; + alias CryptVerifySignatureW CryptVerifySignature; + alias CryptSetProviderW CryptSetProvider; + alias CertOpenSystemStoreW CertOpenSystemStore; + /+alias CERT_FIND_SUBJECT_STR_W CERT_FIND_SUBJECT_STR; + alias CERT_FIND_ISSUER_STR_W CERT_FIND_ISSUER_STR;+/ +} else { + alias CertNameToStrA CertNameToStr; + alias CryptAcquireContextA CryptAcquireContext; + alias CryptSignHashA CryptSignHash; + alias CryptVerifySignatureA CryptVerifySignature; + alias CryptSetProviderA CryptSetProvider; + alias CertOpenSystemStoreA CertOpenSystemStore; + /+alias CERT_FIND_SUBJECT_STR_A CERT_FIND_SUBJECT_STR; + alias CERT_FIND_ISSUER_STR_A CERT_FIND_ISSUER_STR;+/ +} Index: src/win32/windef.d ================================================================== --- src/win32/windef.d +++ src/win32/windef.d @@ -1,141 +1,155 @@ - -/***********************************************************************\ -* windef.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.windef; - -public import win32.winnt; -private import win32.w32api; - -const size_t MAX_PATH = 260; - -ushort MAKEWORD(ubyte a, ubyte b) -{ - return cast(ushort) ((b << 8) | a); -} - - -uint MAKELONG(ushort a, ushort b) -{ - return cast(uint) ((b << 16) | a); -} - - -ushort LOWORD(uint l) -{ - return cast(ushort) l; -} - - -ushort HIWORD(uint l) -{ - return cast(ushort) (l >>> 16); -} - - -ubyte LOBYTE(ushort w) -{ - return cast(ubyte) w; -} - - -ubyte HIBYTE(ushort w) -{ - return cast(ubyte) (w >>> 8); -} - - -/+ template max(T) { - T max(T a, T b) - { - return a > b ? a : b; - } -} - -template min(T) { - T min(T a, T b) - { - return a < b ? a : b; - } -} +/ - -enum NULL = null; -//~ alias null NULL; -//~ const void *NULL = null; -alias ubyte BYTE; -alias ubyte *PBYTE, LPBYTE; -alias ushort USHORT, WORD, ATOM; -alias ushort*PUSHORT, PWORD, LPWORD; -alias uint ULONG, DWORD, UINT, COLORREF; -alias uint *PULONG, PDWORD, LPDWORD, PUINT, LPUINT; -alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; -alias int*PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; -alias float FLOAT; -alias float*PFLOAT; -alias CPtr!(void) PCVOID, LPCVOID; - -alias UINT_PTR WPARAM; -alias LONG_PTR LPARAM, LRESULT; - -alias HANDLE HGLOBAL, HLOCAL, GLOBALHANDLE, LOCALHANDLE, HGDIOBJ, HACCEL, - HBITMAP, HBRUSH, HCOLORSPACE, HDC, HGLRC, HDESK, HENHMETAFILE, HFONT, - HICON, HINSTANCE, HKEY, HMENU, HMETAFILE, HMODULE, HMONITOR, HPALETTE, HPEN, - HRGN, HRSRC, HSTR, HTASK, HWND, HWINSTA, HKL, HCURSOR; -alias HANDLE*PHKEY; - -static - -if (WINVER >= 0x500) -{ - alias HANDLE HTERMINAL, HWINEVENTHOOK; -} - -alias extern (Windows) int function() FARPROC, NEARPROC, PROC; - -struct RECT -{ - LONG left; - LONG top; - LONG right; - LONG bottom; -} -alias RECT RECTL; -alias RECT*PRECT, LPRECT, PRECTL, LPRECTL; -alias CPtr!(RECT) LPCRECT, LPCRECTL; - -struct POINT -{ - LONG x; - LONG y; - alias x e1; - alias y e2; -} -alias POINT POINTL; -alias POINT*PPOINT, LPPOINT, PPOINTL, LPPOINTL; - -struct SIZE -{ - LONG cx; - LONG cy; -} -alias SIZE SIZEL; -alias SIZE*PSIZE, LPSIZE, PSIZEL, LPSIZEL; - -struct POINTS -{ - SHORT x; - SHORT y; -} -alias POINTS*PPOINTS, LPPOINTS; - -enum : BOOL { - FALSE = 0, - TRUE = 1 -} +/***********************************************************************\ +* windef.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.windef; + +public import win32.winnt; +private import win32.w32api; + +const size_t MAX_PATH = 260; + +ushort MAKEWORD(ubyte a, ubyte b) { + return cast(ushort) ((b << 8) | a); +} + +ushort MAKEWORD(ushort a, ushort b) { + assert((a & 0xFF00) == 0); + assert((b & 0xFF00) == 0); + return MAKEWORD(cast(ubyte)a, cast(ubyte)b); +} + +uint MAKELONG(ushort a, ushort b) { + return cast(uint) ((b << 16) | a); +} + +uint MAKELONG(uint a, uint b) { + assert((a & 0xFFFF0000) == 0); + assert((b & 0xFFFF0000) == 0); + return MAKELONG(cast(ushort)a, cast(ushort)b); +} + +ushort LOWORD(ulong l) { + return cast(ushort) l; +} + +ushort HIWORD(ulong l) { + return cast(ushort) (l >>> 16); +} + +ubyte LOBYTE(ushort w) { + return cast(ubyte) w; +} + +ubyte HIBYTE(ushort w) { + return cast(ubyte) (w >>> 8); +} + +template max(T) { + T max(T a, T b) { + return a > b ? a : b; + } +} + +template min(T) { + T min(T a, T b) { + return a < b ? a : b; + } +} + +enum void* NULL = null; +alias ubyte BYTE; +alias ubyte* PBYTE, LPBYTE; +alias ushort USHORT, WORD, ATOM; +alias ushort* PUSHORT, PWORD, LPWORD; +alias uint ULONG, DWORD, UINT, COLORREF; +alias uint* PULONG, PDWORD, LPDWORD, PUINT, LPUINT; +alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT; +alias int* PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG; +alias float FLOAT; +alias float* PFLOAT; +alias const(void)* PCVOID, LPCVOID; + +alias UINT_PTR WPARAM; +alias LONG_PTR LPARAM, LRESULT; + +mixin DECLARE_HANDLE!("HGLOBAL"); +mixin DECLARE_HANDLE!("HLOCAL"); +mixin DECLARE_HANDLE!("GLOBALHANDLE"); +mixin DECLARE_HANDLE!("LOCALHANDLE"); +mixin DECLARE_HANDLE!("HGDIOBJ"); +mixin DECLARE_HANDLE!("HACCEL"); +mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ); +mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ); +mixin DECLARE_HANDLE!("HCOLORSPACE"); +mixin DECLARE_HANDLE!("HDC"); +mixin DECLARE_HANDLE!("HGLRC"); +mixin DECLARE_HANDLE!("HDESK"); +mixin DECLARE_HANDLE!("HENHMETAFILE"); +mixin DECLARE_HANDLE!("HFONT", HGDIOBJ); +mixin DECLARE_HANDLE!("HICON"); +mixin DECLARE_HANDLE!("HINSTANCE"); +mixin DECLARE_HANDLE!("HKEY"); +mixin DECLARE_HANDLE!("HMENU"); +mixin DECLARE_HANDLE!("HMETAFILE"); +mixin DECLARE_HANDLE!("HMODULE"); +mixin DECLARE_HANDLE!("HMONITOR"); +mixin DECLARE_HANDLE!("HPALETTE"); +mixin DECLARE_HANDLE!("HPEN", HGDIOBJ); +mixin DECLARE_HANDLE!("HRGN", HGDIOBJ); +mixin DECLARE_HANDLE!("HRSRC"); +mixin DECLARE_HANDLE!("HSTR"); +mixin DECLARE_HANDLE!("HTASK"); +mixin DECLARE_HANDLE!("HWND"); +mixin DECLARE_HANDLE!("HWINSTA"); +mixin DECLARE_HANDLE!("HKL"); +mixin DECLARE_HANDLE!("HCURSOR"); +alias HKEY* PHKEY; + +static if (_WIN32_WINNT >= 0x500) { + mixin DECLARE_HANDLE!("HTERMINAL"); + mixin DECLARE_HANDLE!("HWINEVENTHOOK"); +} + +alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC; + +struct RECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} +alias RECT RECTL; +alias RECT* PRECT, LPRECT, PRECTL, LPRECTL; +alias const(RECT)* LPCRECT, LPCRECTL; + +struct POINT { + LONG x; + LONG y; +} +alias POINT POINTL; +alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL; + +struct SIZE { + LONG cx; + LONG cy; +} +alias SIZE SIZEL; +alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL; + +struct POINTS { + SHORT x; + SHORT y; +} +alias POINTS* PPOINTS, LPPOINTS; + +enum : BOOL { + FALSE = 0, + TRUE = 1 +} Index: src/win32/windows.d ================================================================== --- src/win32/windows.d +++ src/win32/windows.d @@ -1,77 +1,65 @@ -/***********************************************************************\ -* windows.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.10 * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.windows; - -/* - windows.h - main header file for the Win32 API - - Written by Anders Norlander - - This file is part of a free library for the Win32 API. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -*/ - -public import win32.w32api; -public import win32.core; - -// We can't use static if for imports, build gets confused. -version (WindowsVista) { - public import win32.winsvc; -} else version (Windows2003) { - public import win32.winsvc; -} else version (WindowsXP) { - public import win32.winsvc; -} else version (WindowsNTonly) { - public import win32.winsvc; -} - -public import win32.cderr; -public import win32.dde; -public import win32.ddeml; -public import win32.dlgs; -public import win32.imm; -public import win32.lzexpand; -public import win32.mmsystem; -public import win32.nb30; - - - -public import win32.rpc; -public import win32.shellapi; -public import win32.winperf; -public import win32.commdlg; -public import win32.winspool; -public import win32.ole2; - -// Select correct version of winsock. Importing the incorrect -// module will cause a static assert to prevent problems later on. -version (Win32_Winsock1) { - public import win32.winsock; -} else { - public import win32.winsock2; - public import win32.ws2tcpip; -} - -/+ -#if (_WIN32_WINNT >= 0x0400) -#include -/* - * MS likes to include mswsock.h here as well, - * but that can cause undefined symbols if - * winsock2.h is included before windows.h - */ -#else -#include -#endif /* (_WIN32_WINNT >= 0x0400) */ -+/ +/***********************************************************************\ +* windows.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 4.0 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.windows; + +/* + windows.h - main header file for the Win32 API + + Written by Anders Norlander + + This file is part of a free library for the Win32 API. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +*/ + +public import win32.w32api; +public import win32.core; + +public import win32.cderr; +public import win32.dde; +public import win32.ddeml; +public import win32.dlgs; +public import win32.imm; +public import win32.lzexpand; +public import win32.mmsystem; +public import win32.nb30; +public import win32.winsvc; + +public import win32.rpc; +public import win32.shellapi; +public import win32.winperf; +public import win32.commdlg; +public import win32.winspool; +public import win32.ole2; + +// Select correct version of winsock. Importing the incorrect +// module will cause a static assert to prevent problems later on. +version (Win32_Winsock1) { + public import win32.winsock; +} else { + public import win32.winsock2; + public import win32.ws2tcpip; +} + +/+ +#if (_WIN32_WINNT >= 0x400) +#include +/* + * MS likes to include mswsock.h here as well, + * but that can cause undefined symbols if + * winsock2.h is included before windows.h + */ +#else +#include +#endif /* (_WIN32_WINNT >= 0x400) */ ++/ Index: src/win32/winerror.d ================================================================== --- src/win32/winerror.d +++ src/win32/winerror.d @@ -1,2310 +1,2310 @@ -/***********************************************************************\ -* winerror.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winerror; - -/* Comments from the Mingw header: - * WAIT_TIMEOUT is also defined in winbase.h - */ - -private import win32.windef; - -alias int SCODE; // was in win32.wtypes. - -enum : uint { - ERROR_SUCCESS = 0, - NO_ERROR = 0, - ERROR_INVALID_FUNCTION, - ERROR_FILE_NOT_FOUND, - ERROR_PATH_NOT_FOUND, - ERROR_TOO_MANY_OPEN_FILES, - ERROR_ACCESS_DENIED, - ERROR_INVALID_HANDLE, - ERROR_ARENA_TRASHED, - ERROR_NOT_ENOUGH_MEMORY, - ERROR_INVALID_BLOCK, - ERROR_BAD_ENVIRONMENT, - ERROR_BAD_FORMAT, - ERROR_INVALID_ACCESS, - ERROR_INVALID_DATA, - ERROR_OUTOFMEMORY, - ERROR_INVALID_DRIVE, - ERROR_CURRENT_DIRECTORY, - ERROR_NOT_SAME_DEVICE, - ERROR_NO_MORE_FILES, - ERROR_WRITE_PROTECT, - ERROR_BAD_UNIT, - ERROR_NOT_READY, - ERROR_BAD_COMMAND, - ERROR_CRC, - ERROR_BAD_LENGTH, - ERROR_SEEK, - ERROR_NOT_DOS_DISK, - ERROR_SECTOR_NOT_FOUND, - ERROR_OUT_OF_PAPER, - ERROR_WRITE_FAULT, - ERROR_READ_FAULT, - ERROR_GEN_FAILURE, - ERROR_SHARING_VIOLATION, - ERROR_LOCK_VIOLATION, - 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, - ERROR_DUP_NAME, - ERROR_BAD_NETPATH, - ERROR_NETWORK_BUSY, - ERROR_DEV_NOT_EXIST, - ERROR_TOO_MANY_CMDS, - ERROR_ADAP_HDW_ERR, - ERROR_BAD_NET_RESP, - ERROR_UNEXP_NET_ERR, - ERROR_BAD_REM_ADAP, - ERROR_PRINTQ_FULL, - ERROR_NO_SPOOL_SPACE, - ERROR_PRINT_CANCELLED, - ERROR_NETNAME_DELETED, - ERROR_NETWORK_ACCESS_DENIED, - ERROR_BAD_DEV_TYPE, - ERROR_BAD_NET_NAME, - ERROR_TOO_MANY_NAMES, - ERROR_TOO_MANY_SESS, - ERROR_SHARING_PAUSED, - ERROR_REQ_NOT_ACCEP, - ERROR_REDIR_PAUSED, // = 72 - ERROR_FILE_EXISTS = 80, - ERROR_CANNOT_MAKE = 82, - ERROR_FAIL_I24, - ERROR_OUT_OF_STRUCTURES, - ERROR_ALREADY_ASSIGNED, - ERROR_INVALID_PASSWORD, - ERROR_INVALID_PARAMETER, - ERROR_NET_WRITE_FAULT, - ERROR_NO_PROC_SLOTS, // = 89 - ERROR_TOO_MANY_SEMAPHORES = 100, - ERROR_EXCL_SEM_ALREADY_OWNED, - ERROR_SEM_IS_SET, - ERROR_TOO_MANY_SEM_REQUESTS, - ERROR_INVALID_AT_INTERRUPT_TIME, - ERROR_SEM_OWNER_DIED, - ERROR_SEM_USER_LIMIT, - ERROR_DISK_CHANGE, - ERROR_DRIVE_LOCKED, - ERROR_BROKEN_PIPE, - ERROR_OPEN_FAILED, - ERROR_BUFFER_OVERFLOW, - ERROR_DISK_FULL, - ERROR_NO_MORE_SEARCH_HANDLES, - ERROR_INVALID_TARGET_HANDLE, // = 114 - ERROR_INVALID_CATEGORY = 117, - ERROR_INVALID_VERIFY_SWITCH, - ERROR_BAD_DRIVER_LEVEL, - ERROR_CALL_NOT_IMPLEMENTED, - ERROR_SEM_TIMEOUT, - ERROR_INSUFFICIENT_BUFFER, - ERROR_INVALID_NAME, - ERROR_INVALID_LEVEL, - ERROR_NO_VOLUME_LABEL, - ERROR_MOD_NOT_FOUND, - ERROR_PROC_NOT_FOUND, - ERROR_WAIT_NO_CHILDREN, - ERROR_CHILD_NOT_COMPLETE, - ERROR_DIRECT_ACCESS_HANDLE, - ERROR_NEGATIVE_SEEK, - ERROR_SEEK_ON_DEVICE, - ERROR_IS_JOIN_TARGET, - ERROR_IS_JOINED, - ERROR_IS_SUBSTED, - ERROR_NOT_JOINED, - ERROR_NOT_SUBSTED, - ERROR_JOIN_TO_JOIN, - ERROR_SUBST_TO_SUBST, - ERROR_JOIN_TO_SUBST, - ERROR_SUBST_TO_JOIN, - ERROR_BUSY_DRIVE, - ERROR_SAME_DRIVE, - ERROR_DIR_NOT_ROOT, - ERROR_DIR_NOT_EMPTY, - ERROR_IS_SUBST_PATH, - ERROR_IS_JOIN_PATH, - ERROR_PATH_BUSY, - ERROR_IS_SUBST_TARGET, - ERROR_SYSTEM_TRACE, - ERROR_INVALID_EVENT_COUNT, - ERROR_TOO_MANY_MUXWAITERS, - ERROR_INVALID_LIST_FORMAT, - ERROR_LABEL_TOO_LONG, - ERROR_TOO_MANY_TCBS, - ERROR_SIGNAL_REFUSED, - ERROR_DISCARDED, - ERROR_NOT_LOCKED, - ERROR_BAD_THREADID_ADDR, - ERROR_BAD_ARGUMENTS, - ERROR_BAD_PATHNAME, - 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, - ERROR_INVALID_STARTING_CODESEG, - ERROR_INVALID_STACKSEG, - ERROR_INVALID_MODULETYPE, - ERROR_INVALID_EXE_SIGNATURE, - ERROR_EXE_MARKED_INVALID, - ERROR_BAD_EXE_FORMAT, - ERROR_ITERATED_DATA_EXCEEDS_64k, - ERROR_INVALID_MINALLOCSIZE, - ERROR_DYNLINK_FROM_INVALID_RING, - ERROR_IOPL_NOT_ENABLED, - ERROR_INVALID_SEGDPL, - ERROR_AUTODATASEG_EXCEEDS_64k, - ERROR_RING2SEG_MUST_BE_MOVABLE, - ERROR_RELOC_CHAIN_XEEDS_SEGLIM, - ERROR_INFLOOP_IN_RELOC_CHAIN, - ERROR_ENVVAR_NOT_FOUND, // = 203 - ERROR_NO_SIGNAL_SENT = 205, - ERROR_FILENAME_EXCED_RANGE, - ERROR_RING2_STACK_IN_USE, - ERROR_META_EXPANSION_TOO_LONG, - ERROR_INVALID_SIGNAL_NUMBER, - ERROR_THREAD_1_INACTIVE, // = 210 - ERROR_LOCKED = 212, - ERROR_TOO_MANY_MODULES = 214, - ERROR_NESTING_NOT_ALLOWED, - ERROR_EXE_MACHINE_TYPE_MISMATCH, - ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY, - ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY, // = 218 - ERROR_BAD_PIPE = 230, - ERROR_PIPE_BUSY, - ERROR_NO_DATA, - ERROR_PIPE_NOT_CONNECTED, - ERROR_MORE_DATA, // = 234 - ERROR_VC_DISCONNECTED = 240, - ERROR_INVALID_EA_NAME = 254, - ERROR_EA_LIST_INCONSISTENT, // = 255 - WAIT_TIMEOUT = 258, - ERROR_NO_MORE_ITEMS, // = 259 - ERROR_CANNOT_COPY = 266, - ERROR_DIRECTORY, // = 267 - ERROR_EAS_DIDNT_FIT = 275, - ERROR_EA_FILE_CORRUPT, - ERROR_EA_TABLE_FULL, - ERROR_INVALID_EA_HANDLE, // = 278 - ERROR_EAS_NOT_SUPPORTED = 282, - ERROR_NOT_OWNER = 288, - ERROR_TOO_MANY_POSTS = 298, - ERROR_PARTIAL_COPY, - ERROR_OPLOCK_NOT_GRANTED, - ERROR_INVALID_OPLOCK_PROTOCOL, - ERROR_DISK_TOO_FRAGMENTED, - ERROR_DELETE_PENDING, // = 303 - ERROR_MR_MID_NOT_FOUND = 317, - ERROR_SCOPE_NOT_FOUND, // = 318 - ERROR_INVALID_ADDRESS = 487, - ERROR_ARITHMETIC_OVERFLOW = 534, - ERROR_PIPE_CONNECTED, - ERROR_PIPE_LISTENING, // = 536 - ERROR_EA_ACCESS_DENIED = 994, - ERROR_OPERATION_ABORTED, - ERROR_IO_INCOMPLETE, - ERROR_IO_PENDING, - ERROR_NOACCESS, - ERROR_SWAPERROR, // = 999 - ERROR_STACK_OVERFLOW = 1001, - ERROR_INVALID_MESSAGE, - ERROR_CAN_NOT_COMPLETE, - ERROR_INVALID_FLAGS, - ERROR_UNRECOGNIZED_VOLUME, - ERROR_FILE_INVALID, - ERROR_FULLSCREEN_MODE, - ERROR_NO_TOKEN, - ERROR_BADDB, - ERROR_BADKEY, - ERROR_CANTOPEN, - ERROR_CANTREAD, - ERROR_CANTWRITE, - ERROR_REGISTRY_RECOVERED, - ERROR_REGISTRY_CORRUPT, - ERROR_REGISTRY_IO_FAILED, - ERROR_NOT_REGISTRY_FILE, - ERROR_KEY_DELETED, - ERROR_NO_LOG_SPACE, - ERROR_KEY_HAS_CHILDREN, - ERROR_CHILD_MUST_BE_VOLATILE, - ERROR_NOTIFY_ENUM_DIR, // = 1022 - ERROR_DEPENDENT_SERVICES_RUNNING = 1051, - ERROR_INVALID_SERVICE_CONTROL, - ERROR_SERVICE_REQUEST_TIMEOUT, - ERROR_SERVICE_NO_THREAD, - ERROR_SERVICE_DATABASE_LOCKED, - ERROR_SERVICE_ALREADY_RUNNING, - ERROR_INVALID_SERVICE_ACCOUNT, - ERROR_SERVICE_DISABLED, - ERROR_CIRCULAR_DEPENDENCY, - ERROR_SERVICE_DOES_NOT_EXIST, - ERROR_SERVICE_CANNOT_ACCEPT_CTRL, - ERROR_SERVICE_NOT_ACTIVE, - ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, - ERROR_EXCEPTION_IN_SERVICE, - ERROR_DATABASE_DOES_NOT_EXIST, - ERROR_SERVICE_SPECIFIC_ERROR, - ERROR_PROCESS_ABORTED, - ERROR_SERVICE_DEPENDENCY_FAIL, - ERROR_SERVICE_LOGON_FAILED, - ERROR_SERVICE_START_HANG, - ERROR_INVALID_SERVICE_LOCK, - ERROR_SERVICE_MARKED_FOR_DELETE, - ERROR_SERVICE_EXISTS, - ERROR_ALREADY_RUNNING_LKG, - ERROR_SERVICE_DEPENDENCY_DELETED, - ERROR_BOOT_ALREADY_ACCEPTED, - ERROR_SERVICE_NEVER_STARTED, - ERROR_DUPLICATE_SERVICE_NAME, - ERROR_DIFFERENT_SERVICE_ACCOUNT, - ERROR_CANNOT_DETECT_DRIVER_FAILURE, - ERROR_CANNOT_DETECT_PROCESS_ABORT, - ERROR_NO_RECOVERY_PROGRAM, - ERROR_SERVICE_NOT_IN_EXE, - ERROR_NOT_SAFEBOOT_SERVICE, // = 1084 - ERROR_END_OF_MEDIA = 1100, - ERROR_FILEMARK_DETECTED, - ERROR_BEGINNING_OF_MEDIA, - ERROR_SETMARK_DETECTED, - ERROR_NO_DATA_DETECTED, - ERROR_PARTITION_FAILURE, - ERROR_INVALID_BLOCK_LENGTH, - ERROR_DEVICE_NOT_PARTITIONED, - ERROR_UNABLE_TO_LOCK_MEDIA, - ERROR_UNABLE_TO_UNLOAD_MEDIA, - ERROR_MEDIA_CHANGED, - ERROR_BUS_RESET, - ERROR_NO_MEDIA_IN_DRIVE, - ERROR_NO_UNICODE_TRANSLATION, - ERROR_DLL_INIT_FAILED, - ERROR_SHUTDOWN_IN_PROGRESS, - ERROR_NO_SHUTDOWN_IN_PROGRESS, - ERROR_IO_DEVICE, - ERROR_SERIAL_NO_DEVICE, - ERROR_IRQ_BUSY, - ERROR_MORE_WRITES, - ERROR_COUNTER_TIMEOUT, - ERROR_FLOPPY_ID_MARK_NOT_FOUND, - ERROR_FLOPPY_WRONG_CYLINDER, - ERROR_FLOPPY_UNKNOWN_ERROR, - ERROR_FLOPPY_BAD_REGISTERS, - ERROR_DISK_RECALIBRATE_FAILED, - ERROR_DISK_OPERATION_FAILED, - ERROR_DISK_RESET_FAILED, - ERROR_EOM_OVERFLOW, - ERROR_NOT_ENOUGH_SERVER_MEMORY, - ERROR_POSSIBLE_DEADLOCK, - ERROR_MAPPED_ALIGNMENT, // = 1132 - ERROR_SET_POWER_STATE_VETOED = 1140, - ERROR_SET_POWER_STATE_FAILED, - ERROR_TOO_MANY_LINKS, // = 1142 - ERROR_OLD_WIN_VERSION = 1150, - ERROR_APP_WRONG_OS, - ERROR_SINGLE_INSTANCE_APP, - ERROR_RMODE_APP, - ERROR_INVALID_DLL, - ERROR_NO_ASSOCIATION, - ERROR_DDE_FAIL, - ERROR_DLL_NOT_FOUND, - ERROR_NO_MORE_USER_HANDLES, - ERROR_MESSAGE_SYNC_ONLY, - ERROR_SOURCE_ELEMENT_EMPTY, - ERROR_DESTINATION_ELEMENT_FULL, - ERROR_ILLEGAL_ELEMENT_ADDRESS, - ERROR_MAGAZINE_NOT_PRESENT, - ERROR_DEVICE_REINITIALIZATION_NEEDED, - ERROR_DEVICE_REQUIRES_CLEANING, - ERROR_DEVICE_DOOR_OPEN, - ERROR_DEVICE_NOT_CONNECTED, - ERROR_NOT_FOUND, - ERROR_NO_MATCH, - ERROR_SET_NOT_FOUND, - ERROR_POINT_NOT_FOUND, - ERROR_NO_TRACKING_SERVICE, - ERROR_NO_VOLUME_ID, // = 1173 - ERROR_UNABLE_TO_REMOVE_REPLACED = 1175, - ERROR_UNABLE_TO_MOVE_REPLACEMENT, - ERROR_UNABLE_TO_MOVE_REPLACEMENT_2, - ERROR_JOURNAL_DELETE_IN_PROGRESS, - ERROR_JOURNAL_NOT_ACTIVE, - ERROR_POTENTIAL_FILE_FOUND, - ERROR_JOURNAL_ENTRY_DELETED, // = 1181 - ERROR_BAD_DEVICE = 1200, - ERROR_CONNECTION_UNAVAIL, - ERROR_DEVICE_ALREADY_REMEMBERED, - ERROR_NO_NET_OR_BAD_PATH, - ERROR_BAD_PROVIDER, - ERROR_CANNOT_OPEN_PROFILE, - ERROR_BAD_PROFILE, - ERROR_NOT_CONTAINER, - ERROR_EXTENDED_ERROR, - ERROR_INVALID_GROUPNAME, - ERROR_INVALID_COMPUTERNAME, - ERROR_INVALID_EVENTNAME, - ERROR_INVALID_DOMAINNAME, - ERROR_INVALID_SERVICENAME, - ERROR_INVALID_NETNAME, - ERROR_INVALID_SHARENAME, - ERROR_INVALID_PASSWORDNAME, - ERROR_INVALID_MESSAGENAME, - ERROR_INVALID_MESSAGEDEST, - ERROR_SESSION_CREDENTIAL_CONFLICT, - ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, - ERROR_DUP_DOMAINNAME, - ERROR_NO_NETWORK, - ERROR_CANCELLED, - ERROR_USER_MAPPED_FILE, - ERROR_CONNECTION_REFUSED, - ERROR_GRACEFUL_DISCONNECT, - ERROR_ADDRESS_ALREADY_ASSOCIATED, - ERROR_ADDRESS_NOT_ASSOCIATED, - ERROR_CONNECTION_INVALID, - ERROR_CONNECTION_ACTIVE, - ERROR_NETWORK_UNREACHABLE, - ERROR_HOST_UNREACHABLE, - ERROR_PROTOCOL_UNREACHABLE, - ERROR_PORT_UNREACHABLE, - ERROR_REQUEST_ABORTED, - ERROR_CONNECTION_ABORTED, - ERROR_RETRY, - ERROR_CONNECTION_COUNT_LIMIT, - ERROR_LOGIN_TIME_RESTRICTION, - ERROR_LOGIN_WKSTA_RESTRICTION, - ERROR_INCORRECT_ADDRESS, - ERROR_ALREADY_REGISTERED, - ERROR_SERVICE_NOT_FOUND, - ERROR_NOT_AUTHENTICATED, - ERROR_NOT_LOGGED_ON, - ERROR_CONTINUE, - ERROR_ALREADY_INITIALIZED, - ERROR_NO_MORE_DEVICES, - ERROR_NO_SUCH_SITE, - ERROR_DOMAIN_CONTROLLER_EXISTS, - ERROR_ONLY_IF_CONNECTED, - ERROR_OVERRIDE_NOCHANGES, - ERROR_BAD_USER_PROFILE, - ERROR_NOT_SUPPORTED_ON_SBS, - ERROR_SERVER_SHUTDOWN_IN_PROGRESS, - ERROR_HOST_DOWN, - ERROR_NON_ACCOUNT_SID, - ERROR_NON_DOMAIN_SID, - ERROR_APPHELP_BLOCK, - ERROR_ACCESS_DISABLED_BY_POLICY, - ERROR_REG_NAT_CONSUMPTION, - ERROR_CSCSHARE_OFFLINE, - ERROR_PKINIT_FAILURE, - ERROR_SMARTCARD_SUBSYSTEM_FAILURE, - ERROR_DOWNGRADE_DETECTED, - SEC_E_SMARTCARD_CERT_REVOKED, - SEC_E_ISSUING_CA_UNTRUSTED, - SEC_E_REVOCATION_OFFLINE_C, - SEC_E_PKINIT_CLIENT_FAILUR, - SEC_E_SMARTCARD_CERT_EXPIRED, - ERROR_MACHINE_LOCKED, // = 1271 - ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273, - ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED, - ERROR_DRIVER_BLOCKED, - ERROR_INVALID_IMPORT_OF_NON_DLL, - ERROR_ACCESS_DISABLED_WEBBLADE, - ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER, - ERROR_RECOVERY_FAILURE, - ERROR_ALREADY_FIBER, - ERROR_ALREADY_THREAD, - ERROR_STACK_BUFFER_OVERRUN, - ERROR_PARAMETER_QUOTA_EXCEEDED, - ERROR_DEBUGGER_INACTIVE, // = 1284 - ERROR_NOT_ALL_ASSIGNED = 1300, - ERROR_SOME_NOT_MAPPED, - ERROR_NO_QUOTAS_FOR_ACCOUNT, - ERROR_LOCAL_USER_SESSION_KEY, - ERROR_NULL_LM_PASSWORD, - ERROR_UNKNOWN_REVISION, - ERROR_REVISION_MISMATCH, - ERROR_INVALID_OWNER, - ERROR_INVALID_PRIMARY_GROUP, - ERROR_NO_IMPERSONATION_TOKEN, - ERROR_CANT_DISABLE_MANDATORY, - ERROR_NO_LOGON_SERVERS, - ERROR_NO_SUCH_LOGON_SESSION, - ERROR_NO_SUCH_PRIVILEGE, - ERROR_PRIVILEGE_NOT_HELD, - ERROR_INVALID_ACCOUNT_NAME, - ERROR_USER_EXISTS, - ERROR_NO_SUCH_USER, - ERROR_GROUP_EXISTS, - ERROR_NO_SUCH_GROUP, - ERROR_MEMBER_IN_GROUP, - ERROR_MEMBER_NOT_IN_GROUP, - ERROR_LAST_ADMIN, - ERROR_WRONG_PASSWORD, - ERROR_ILL_FORMED_PASSWORD, - ERROR_PASSWORD_RESTRICTION, - ERROR_LOGON_FAILURE, - ERROR_ACCOUNT_RESTRICTION, - ERROR_INVALID_LOGON_HOURS, - ERROR_INVALID_WORKSTATION, - ERROR_PASSWORD_EXPIRED, - ERROR_ACCOUNT_DISABLED, - ERROR_NONE_MAPPED, - ERROR_TOO_MANY_LUIDS_REQUESTED, - ERROR_LUIDS_EXHAUSTED, - ERROR_INVALID_SUB_AUTHORITY, - ERROR_INVALID_ACL, - ERROR_INVALID_SID, - ERROR_INVALID_SECURITY_DESCR, // = 1338 - ERROR_BAD_INHERITANCE_ACL = 1340, - ERROR_SERVER_DISABLED, - ERROR_SERVER_NOT_DISABLED, - ERROR_INVALID_ID_AUTHORITY, - ERROR_ALLOTTED_SPACE_EXCEEDED, - ERROR_INVALID_GROUP_ATTRIBUTES, - ERROR_BAD_IMPERSONATION_LEVEL, - ERROR_CANT_OPEN_ANONYMOUS, - ERROR_BAD_VALIDATION_CLASS, - ERROR_BAD_TOKEN_TYPE, - ERROR_NO_SECURITY_ON_OBJECT, - ERROR_CANT_ACCESS_DOMAIN_INFO, - ERROR_INVALID_SERVER_STATE, - ERROR_INVALID_DOMAIN_STATE, - ERROR_INVALID_DOMAIN_ROLE, - ERROR_NO_SUCH_DOMAIN, - ERROR_DOMAIN_EXISTS, - ERROR_DOMAIN_LIMIT_EXCEEDED, - ERROR_INTERNAL_DB_CORRUPTION, - ERROR_INTERNAL_ERROR, - ERROR_GENERIC_NOT_MAPPED, - ERROR_BAD_DESCRIPTOR_FORMAT, - ERROR_NOT_LOGON_PROCESS, - ERROR_LOGON_SESSION_EXISTS, - ERROR_NO_SUCH_PACKAGE, - ERROR_BAD_LOGON_SESSION_STATE, - ERROR_LOGON_SESSION_COLLISION, - ERROR_INVALID_LOGON_TYPE, - ERROR_CANNOT_IMPERSONATE, - ERROR_RXACT_INVALID_STATE, - ERROR_RXACT_COMMIT_FAILURE, - ERROR_SPECIAL_ACCOUNT, - ERROR_SPECIAL_GROUP, - ERROR_SPECIAL_USER, - ERROR_MEMBERS_PRIMARY_GROUP, - ERROR_TOKEN_ALREADY_IN_USE, - ERROR_NO_SUCH_ALIAS, - ERROR_MEMBER_NOT_IN_ALIAS, - ERROR_MEMBER_IN_ALIAS, - ERROR_ALIAS_EXISTS, - ERROR_LOGON_NOT_GRANTED, - ERROR_TOO_MANY_SECRETS, - ERROR_SECRET_TOO_LONG, - ERROR_INTERNAL_DB_ERROR, - ERROR_TOO_MANY_CONTEXT_IDS, - ERROR_LOGON_TYPE_NOT_GRANTED, - ERROR_NT_CROSS_ENCRYPTION_REQUIRED, - ERROR_NO_SUCH_MEMBER, - ERROR_INVALID_MEMBER, - ERROR_TOO_MANY_SIDS, - ERROR_LM_CROSS_ENCRYPTION_REQUIRED, - ERROR_NO_INHERITANCE, - ERROR_FILE_CORRUPT, - ERROR_DISK_CORRUPT, - ERROR_NO_USER_SESSION_KEY, - ERROR_LICENSE_QUOTA_EXCEEDED, - ERROR_WRONG_TARGET_NAME, - ERROR_MUTUAL_AUTH_FAILED, - ERROR_TIME_SKEW, - ERROR_CURRENT_DOMAIN_NOT_ALLOWED, - ERROR_INVALID_WINDOW_HANDLE, - ERROR_INVALID_MENU_HANDLE, - ERROR_INVALID_CURSOR_HANDLE, - ERROR_INVALID_ACCEL_HANDLE, - ERROR_INVALID_HOOK_HANDLE, - ERROR_INVALID_DWP_HANDLE, - ERROR_TLW_WITH_WSCHILD, - ERROR_CANNOT_FIND_WND_CLASS, - ERROR_WINDOW_OF_OTHER_THREAD, - ERROR_HOTKEY_ALREADY_REGISTERED, - ERROR_CLASS_ALREADY_EXISTS, - ERROR_CLASS_DOES_NOT_EXIST, - ERROR_CLASS_HAS_WINDOWS, - ERROR_INVALID_INDEX, - ERROR_INVALID_ICON_HANDLE, - ERROR_PRIVATE_DIALOG_INDEX, - ERROR_LISTBOX_ID_NOT_FOUND, - ERROR_NO_WILDCARD_CHARACTERS, - ERROR_CLIPBOARD_NOT_OPEN, - ERROR_HOTKEY_NOT_REGISTERED, - ERROR_WINDOW_NOT_DIALOG, - ERROR_CONTROL_ID_NOT_FOUND, - ERROR_INVALID_COMBOBOX_MESSAGE, - ERROR_WINDOW_NOT_COMBOBOX, - ERROR_INVALID_EDIT_HEIGHT, - ERROR_DC_NOT_FOUND, - ERROR_INVALID_HOOK_FILTER, - ERROR_INVALID_FILTER_PROC, - ERROR_HOOK_NEEDS_HMOD, - ERROR_GLOBAL_ONLY_HOOK, - ERROR_JOURNAL_HOOK_SET, - ERROR_HOOK_NOT_INSTALLED, - ERROR_INVALID_LB_MESSAGE, - ERROR_SETCOUNT_ON_BAD_LB, - ERROR_LB_WITHOUT_TABSTOPS, - ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, - ERROR_CHILD_WINDOW_MENU, - ERROR_NO_SYSTEM_MENU, - ERROR_INVALID_MSGBOX_STYLE, - ERROR_INVALID_SPI_VALUE, - ERROR_SCREEN_ALREADY_LOCKED, - ERROR_HWNDS_HAVE_DIFF_PARENT, - ERROR_NOT_CHILD_WINDOW, - ERROR_INVALID_GW_COMMAND, - ERROR_INVALID_THREAD_ID, - ERROR_NON_MDICHILD_WINDOW, - ERROR_POPUP_ALREADY_ACTIVE, - ERROR_NO_SCROLLBARS, - ERROR_INVALID_SCROLLBAR_RANGE, - ERROR_INVALID_SHOWWIN_COMMAND, - ERROR_NO_SYSTEM_RESOURCES, - ERROR_NONPAGED_SYSTEM_RESOURCES, - ERROR_PAGED_SYSTEM_RESOURCES, - ERROR_WORKING_SET_QUOTA, - ERROR_PAGEFILE_QUOTA, - ERROR_COMMITMENT_LIMIT, - ERROR_MENU_ITEM_NOT_FOUND, - ERROR_INVALID_KEYBOARD_HANDLE, - ERROR_HOOK_TYPE_NOT_ALLOWED, - ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, - ERROR_TIMEOUT, - ERROR_INVALID_MONITOR_HANDLE, // = 1461 - ERROR_EVENTLOG_FILE_CORRUPT = 1500, - ERROR_EVENTLOG_CANT_START, - ERROR_LOG_FILE_FULL, - ERROR_EVENTLOG_FILE_CHANGED, // = 1503 - ERROR_INSTALL_SERVICE_FAILURE = 1601, - ERROR_INSTALL_USEREXIT, - ERROR_INSTALL_FAILURE, - ERROR_INSTALL_SUSPEND, - ERROR_UNKNOWN_PRODUCT, - ERROR_UNKNOWN_FEATURE, - ERROR_UNKNOWN_COMPONENT, - ERROR_UNKNOWN_PROPERTY, - ERROR_INVALID_HANDLE_STATE, - ERROR_BAD_CONFIGURATION, - ERROR_INDEX_ABSENT, - ERROR_INSTALL_SOURCE_ABSENT, - ERROR_INSTALL_PACKAGE_VERSION, - ERROR_PRODUCT_UNINSTALLED, - ERROR_BAD_QUERY_SYNTAX, - ERROR_INVALID_FIELD, - ERROR_DEVICE_REMOVED, - ERROR_INSTALL_ALREADY_RUNNING, - ERROR_INSTALL_PACKAGE_OPEN_FAILED, - ERROR_INSTALL_PACKAGE_INVALID, - ERROR_INSTALL_UI_FAILURE, - ERROR_INSTALL_LOG_FAILURE, - ERROR_INSTALL_LANGUAGE_UNSUPPORTED, - ERROR_INSTALL_TRANSFORM_FAILURE, - ERROR_INSTALL_PACKAGE_REJECTED, - ERROR_FUNCTION_NOT_CALLED, - ERROR_FUNCTION_FAILED, - ERROR_INVALID_TABLE, - ERROR_DATATYPE_MISMATCH, - ERROR_UNSUPPORTED_TYPE, - ERROR_CREATE_FAILED, - ERROR_INSTALL_TEMP_UNWRITABLE, - ERROR_INSTALL_PLATFORM_UNSUPPORTED, - ERROR_INSTALL_NOTUSED, - ERROR_PATCH_PACKAGE_OPEN_FAILED, - ERROR_PATCH_PACKAGE_INVALID, - ERROR_PATCH_PACKAGE_UNSUPPORTED, - ERROR_PRODUCT_VERSION, - ERROR_INVALID_COMMAND_LINE, - ERROR_INSTALL_REMOTE_DISALLOWED, - ERROR_SUCCESS_REBOOT_INITIATED, - ERROR_PATCH_TARGET_NOT_FOUND, - ERROR_PATCH_PACKAGE_REJECTED, - ERROR_INSTALL_TRANSFORM_REJECTED, - ERROR_INSTALL_REMOTE_PROHIBITED, // = 1645 - RPC_S_INVALID_STRING_BINDING = 1700, - RPC_S_WRONG_KIND_OF_BINDING, - RPC_S_INVALID_BINDING, - RPC_S_PROTSEQ_NOT_SUPPORTED, - RPC_S_INVALID_RPC_PROTSEQ, - RPC_S_INVALID_STRING_UUID, - RPC_S_INVALID_ENDPOINT_FORMAT, - RPC_S_INVALID_NET_ADDR, - RPC_S_NO_ENDPOINT_FOUND, - RPC_S_INVALID_TIMEOUT, - RPC_S_OBJECT_NOT_FOUND, - RPC_S_ALREADY_REGISTERED, - RPC_S_TYPE_ALREADY_REGISTERED, - RPC_S_ALREADY_LISTENING, - RPC_S_NO_PROTSEQS_REGISTERED, - RPC_S_NOT_LISTENING, - RPC_S_UNKNOWN_MGR_TYPE, - RPC_S_UNKNOWN_IF, - RPC_S_NO_BINDINGS, - RPC_S_NO_PROTSEQS, - RPC_S_CANT_CREATE_ENDPOINT, - RPC_S_OUT_OF_RESOURCES, - RPC_S_SERVER_UNAVAILABLE, - RPC_S_SERVER_TOO_BUSY, - RPC_S_INVALID_NETWORK_OPTIONS, - RPC_S_NO_CALL_ACTIVE, - RPC_S_CALL_FAILED, - RPC_S_CALL_FAILED_DNE, - RPC_S_PROTOCOL_ERROR, // = 1728 - RPC_S_UNSUPPORTED_TRANS_SYN = 1730, - RPC_S_UNSUPPORTED_TYPE = 1732, - RPC_S_INVALID_TAG, - RPC_S_INVALID_BOUND, - RPC_S_NO_ENTRY_NAME, - RPC_S_INVALID_NAME_SYNTAX, - RPC_S_UNSUPPORTED_NAME_SYNTAX, // = 1737 - RPC_S_UUID_NO_ADDRESS = 1739, - RPC_S_DUPLICATE_ENDPOINT, - RPC_S_UNKNOWN_AUTHN_TYPE, - RPC_S_MAX_CALLS_TOO_SMALL, - RPC_S_STRING_TOO_LONG, - RPC_S_PROTSEQ_NOT_FOUND, - RPC_S_PROCNUM_OUT_OF_RANGE, - RPC_S_BINDING_HAS_NO_AUTH, - RPC_S_UNKNOWN_AUTHN_SERVICE, - RPC_S_UNKNOWN_AUTHN_LEVEL, - RPC_S_INVALID_AUTH_IDENTITY, - RPC_S_UNKNOWN_AUTHZ_SERVICE, - EPT_S_INVALID_ENTRY, - EPT_S_CANT_PERFORM_OP, - EPT_S_NOT_REGISTERED, - RPC_S_NOTHING_TO_EXPORT, - RPC_S_INCOMPLETE_NAME, - RPC_S_INVALID_VERS_OPTION, - RPC_S_NO_MORE_MEMBERS, - RPC_S_NOT_ALL_OBJS_UNEXPORTED, - RPC_S_INTERFACE_NOT_FOUND, - RPC_S_ENTRY_ALREADY_EXISTS, - RPC_S_ENTRY_NOT_FOUND, - RPC_S_NAME_SERVICE_UNAVAILABLE, - RPC_S_INVALID_NAF_ID, - RPC_S_CANNOT_SUPPORT, - RPC_S_NO_CONTEXT_AVAILABLE, - RPC_S_INTERNAL_ERROR, - RPC_S_ZERO_DIVIDE, - RPC_S_ADDRESS_ERROR, - RPC_S_FP_DIV_ZERO, - RPC_S_FP_UNDERFLOW, - RPC_S_FP_OVERFLOW, - RPC_X_NO_MORE_ENTRIES, - RPC_X_SS_CHAR_TRANS_OPEN_FAIL, - RPC_X_SS_CHAR_TRANS_SHORT_FILE, - RPC_X_SS_IN_NULL_CONTEXT, // = 1775 - RPC_X_SS_CONTEXT_DAMAGED = 1777, - RPC_X_SS_HANDLES_MISMATCH, - RPC_X_SS_CANNOT_GET_CALL_HANDLE, - RPC_X_NULL_REF_POINTER, - RPC_X_ENUM_VALUE_OUT_OF_RANGE, - RPC_X_BYTE_COUNT_TOO_SMALL, - RPC_X_BAD_STUB_DATA, - ERROR_INVALID_USER_BUFFER, - ERROR_UNRECOGNIZED_MEDIA, - ERROR_NO_TRUST_LSA_SECRET, - ERROR_NO_TRUST_SAM_ACCOUNT, - ERROR_TRUSTED_DOMAIN_FAILURE, - ERROR_TRUSTED_RELATIONSHIP_FAILURE, - ERROR_TRUST_FAILURE, - RPC_S_CALL_IN_PROGRESS, - ERROR_NETLOGON_NOT_STARTED, - ERROR_ACCOUNT_EXPIRED, - ERROR_REDIRECTOR_HAS_OPEN_HANDLES, - ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, - ERROR_UNKNOWN_PORT, - ERROR_UNKNOWN_PRINTER_DRIVER, - ERROR_UNKNOWN_PRINTPROCESSOR, - ERROR_INVALID_SEPARATOR_FILE, - ERROR_INVALID_PRIORITY, - ERROR_INVALID_PRINTER_NAME, - ERROR_PRINTER_ALREADY_EXISTS, - ERROR_INVALID_PRINTER_COMMAND, - ERROR_INVALID_DATATYPE, - ERROR_INVALID_ENVIRONMENT, - RPC_S_NO_MORE_BINDINGS, - ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, - ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, - ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, - ERROR_DOMAIN_TRUST_INCONSISTENT, - ERROR_SERVER_HAS_OPEN_HANDLES, - ERROR_RESOURCE_DATA_NOT_FOUND, - ERROR_RESOURCE_TYPE_NOT_FOUND, - ERROR_RESOURCE_NAME_NOT_FOUND, - ERROR_RESOURCE_LANG_NOT_FOUND, - ERROR_NOT_ENOUGH_QUOTA, - RPC_S_NO_INTERFACES, - RPC_S_CALL_CANCELLED, - RPC_S_BINDING_INCOMPLETE, - RPC_S_COMM_FAILURE, - RPC_S_UNSUPPORTED_AUTHN_LEVEL, - RPC_S_NO_PRINC_NAME, - RPC_S_NOT_RPC_ERROR, - RPC_S_UUID_LOCAL_ONLY, - RPC_S_SEC_PKG_ERROR, - RPC_S_NOT_CANCELLED, - RPC_X_INVALID_ES_ACTION, - RPC_X_WRONG_ES_VERSION, - RPC_X_WRONG_STUB_VERSION, - RPC_X_INVALID_PIPE_OBJECT, - RPC_X_WRONG_PIPE_ORDER, - RPC_X_WRONG_PIPE_VERSION, // = 1832 - RPC_S_GROUP_MEMBER_NOT_FOUND = 1898, - EPT_S_CANT_CREATE, - RPC_S_INVALID_OBJECT, - ERROR_INVALID_TIME, - ERROR_INVALID_FORM_NAME, - ERROR_INVALID_FORM_SIZE, - ERROR_ALREADY_WAITING, - ERROR_PRINTER_DELETED, - ERROR_INVALID_PRINTER_STATE, - ERROR_PASSWORD_MUST_CHANGE, - ERROR_DOMAIN_CONTROLLER_NOT_FOUND, - ERROR_ACCOUNT_LOCKED_OUT, - OR_INVALID_OXID, - OR_INVALID_OID, - OR_INVALID_SET, - RPC_S_SEND_INCOMPLETE, - RPC_S_INVALID_ASYNC_HANDLE, - RPC_S_INVALID_ASYNC_CALL, - RPC_X_PIPE_CLOSED, - RPC_X_PIPE_DISCIPLINE_ERROR, - RPC_X_PIPE_EMPTY, - ERROR_NO_SITENAME, - ERROR_CANT_ACCESS_FILE, - ERROR_CANT_RESOLVE_FILENAME, - RPC_S_ENTRY_TYPE_MISMATCH, - RPC_S_NOT_ALL_OBJS_EXPORTED, - RPC_S_INTERFACE_NOT_EXPORTED, - RPC_S_PROFILE_NOT_ADDED, - RPC_S_PRF_ELT_NOT_ADDED, - RPC_S_PRF_ELT_NOT_REMOVED, - RPC_S_GRP_ELT_NOT_ADDED, - RPC_S_GRP_ELT_NOT_REMOVED, - ERROR_KM_DRIVER_BLOCKED, - ERROR_CONTEXT_EXPIRED, - ERROR_PER_USER_TRUST_QUOTA_EXCEEDED, - ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED, - ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED, // = 1934 - ERROR_INVALID_PIXEL_FORMAT = 2000, - ERROR_BAD_DRIVER, - ERROR_INVALID_WINDOW_STYLE, - ERROR_METAFILE_NOT_SUPPORTED, - ERROR_TRANSFORM_NOT_SUPPORTED, - ERROR_CLIPPING_NOT_SUPPORTED, // = 2005 - ERROR_INVALID_CMM = 2010, - ERROR_INVALID_PROFILE, - ERROR_TAG_NOT_FOUND, - ERROR_TAG_NOT_PRESENT, - ERROR_DUPLICATE_TAG, - ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE, - ERROR_PROFILE_NOT_FOUND, - ERROR_INVALID_COLORSPACE, - ERROR_ICM_NOT_ENABLED, - ERROR_DELETING_ICM_XFORM, - ERROR_INVALID_TRANSFORM, - ERROR_COLORSPACE_MISMATCH, - ERROR_INVALID_COLORINDEX, // = 2022 - ERROR_CONNECTED_OTHER_PASSWORD = 2108, - ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT, // = 2109 - ERROR_BAD_USERNAME = 2202, - ERROR_NOT_CONNECTED = 2250, - ERROR_OPEN_FILES = 2401, - ERROR_ACTIVE_CONNECTIONS, // = 2402 - ERROR_DEVICE_IN_USE = 2404, - ERROR_UNKNOWN_PRINT_MONITOR = 3000, - ERROR_PRINTER_DRIVER_IN_USE, - ERROR_SPOOL_FILE_NOT_FOUND, - ERROR_SPL_NO_STARTDOC, - ERROR_SPL_NO_ADDJOB, - ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, - ERROR_PRINT_MONITOR_ALREADY_INSTALLED, - ERROR_INVALID_PRINT_MONITOR, - ERROR_PRINT_MONITOR_IN_USE, - ERROR_PRINTER_HAS_JOBS_QUEUED, - ERROR_SUCCESS_REBOOT_REQUIRED, - ERROR_SUCCESS_RESTART_REQUIRED, - ERROR_PRINTER_NOT_FOUND, - ERROR_PRINTER_DRIVER_WARNED, - ERROR_PRINTER_DRIVER_BLOCKED, // = 3014 - ERROR_WINS_INTERNAL = 4000, - ERROR_CAN_NOT_DEL_LOCAL_WINS, - ERROR_STATIC_INIT, - ERROR_INC_BACKUP, - ERROR_FULL_BACKUP, - ERROR_REC_NON_EXISTENT, - ERROR_RPL_NOT_ALLOWED, // = 4006 - ERROR_DHCP_ADDRESS_CONFLICT = 4100, - ERROR_WMI_GUID_NOT_FOUND = 4200, - ERROR_WMI_INSTANCE_NOT_FOUND, - ERROR_WMI_ITEMID_NOT_FOUND, - ERROR_WMI_TRY_AGAIN, - ERROR_WMI_DP_NOT_FOUND, - ERROR_WMI_UNRESOLVED_INSTANCE_REF, - ERROR_WMI_ALREADY_ENABLED, - ERROR_WMI_GUID_DISCONNECTED, - ERROR_WMI_SERVER_UNAVAILABLE, - ERROR_WMI_DP_FAILED, - ERROR_WMI_INVALID_MOF, - ERROR_WMI_INVALID_REGINFO, - ERROR_WMI_ALREADY_DISABLED, - ERROR_WMI_READ_ONLY, - ERROR_WMI_SET_FAILURE, // = 4214 - ERROR_INVALID_MEDIA = 4300, - ERROR_INVALID_LIBRARY, - ERROR_INVALID_MEDIA_POOL, - ERROR_DRIVE_MEDIA_MISMATCH, - ERROR_MEDIA_OFFLINE, - ERROR_LIBRARY_OFFLINE, - ERROR_EMPTY, - ERROR_NOT_EMPTY, - ERROR_MEDIA_UNAVAILABLE, - ERROR_RESOURCE_DISABLED, - ERROR_INVALID_CLEANER, - ERROR_UNABLE_TO_CLEAN, - ERROR_OBJECT_NOT_FOUND, - ERROR_DATABASE_FAILURE, - ERROR_DATABASE_FULL, - ERROR_MEDIA_INCOMPATIBLE, - ERROR_RESOURCE_NOT_PRESENT, - ERROR_INVALID_OPERATION, - ERROR_MEDIA_NOT_AVAILABLE, - ERROR_DEVICE_NOT_AVAILABLE, - ERROR_REQUEST_REFUSED, - ERROR_INVALID_DRIVE_OBJECT, - ERROR_LIBRARY_FULL, - ERROR_MEDIUM_NOT_ACCESSIBLE, - ERROR_UNABLE_TO_LOAD_MEDIUM, - ERROR_UNABLE_TO_INVENTORY_DRIVE, - ERROR_UNABLE_TO_INVENTORY_SLOT, - ERROR_UNABLE_TO_INVENTORY_TRANSPORT, - ERROR_TRANSPORT_FULL, - ERROR_CONTROLLING_IEPORT, - ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA, - ERROR_CLEANER_SLOT_SET, - ERROR_CLEANER_SLOT_NOT_SET, - ERROR_CLEANER_CARTRIDGE_SPENT, - ERROR_UNEXPECTED_OMID, - ERROR_CANT_DELETE_LAST_ITEM, - ERROR_MESSAGE_EXCEEDS_MAX_SIZE, - ERROR_VOLUME_CONTAINS_SYS_FILES, - ERROR_INDIGENOUS_TYPE, - ERROR_NO_SUPPORTING_DRIVES, - ERROR_CLEANER_CARTRIDGE_INSTALLED, // = 4340 - ERROR_FILE_OFFLINE = 4350, - ERROR_REMOTE_STORAGE_NOT_ACTIVE, - ERROR_REMOTE_STORAGE_MEDIA_ERROR, // = 4352 - ERROR_NOT_A_REPARSE_POINT = 4390, - ERROR_REPARSE_ATTRIBUTE_CONFLICT, - ERROR_INVALID_REPARSE_DATA, - ERROR_REPARSE_TAG_INVALID, - ERROR_REPARSE_TAG_MISMATCH, // = 4394 - ERROR_VOLUME_NOT_SIS_ENABLED = 4500, - ERROR_DEPENDENT_RESOURCE_EXISTS = 5001, - ERROR_DEPENDENCY_NOT_FOUND, - ERROR_DEPENDENCY_ALREADY_EXISTS, - ERROR_RESOURCE_NOT_ONLINE, - ERROR_HOST_NODE_NOT_AVAILABLE, - ERROR_RESOURCE_NOT_AVAILABLE, - ERROR_RESOURCE_NOT_FOUND, - ERROR_SHUTDOWN_CLUSTER, - ERROR_CANT_EVICT_ACTIVE_NODE, - ERROR_OBJECT_ALREADY_EXISTS, - ERROR_OBJECT_IN_LIST, - ERROR_GROUP_NOT_AVAILABLE, - ERROR_GROUP_NOT_FOUND, - ERROR_GROUP_NOT_ONLINE, - ERROR_HOST_NODE_NOT_RESOURCE_OWNER, - ERROR_HOST_NODE_NOT_GROUP_OWNER, - ERROR_RESMON_CREATE_FAILED, - ERROR_RESMON_ONLINE_FAILED, - ERROR_RESOURCE_ONLINE, - ERROR_QUORUM_RESOURCE, - ERROR_NOT_QUORUM_CAPABLE, - ERROR_CLUSTER_SHUTTING_DOWN, - ERROR_INVALID_STATE, - ERROR_RESOURCE_PROPERTIES_STORED, - ERROR_NOT_QUORUM_CLASS, - ERROR_CORE_RESOURCE, - ERROR_QUORUM_RESOURCE_ONLINE_FAILED, - ERROR_QUORUMLOG_OPEN_FAILED, - ERROR_CLUSTERLOG_CORRUPT, - ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE, - ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE, - ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND, - ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE, - ERROR_QUORUM_OWNER_ALIVE, - ERROR_NETWORK_NOT_AVAILABLE, - ERROR_NODE_NOT_AVAILABLE, - ERROR_ALL_NODES_NOT_AVAILABLE, - ERROR_RESOURCE_FAILED, - ERROR_CLUSTER_INVALID_NODE, - ERROR_CLUSTER_NODE_EXISTS, - ERROR_CLUSTER_JOIN_IN_PROGRESS, - ERROR_CLUSTER_NODE_NOT_FOUND, - ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND, - ERROR_CLUSTER_NETWORK_EXISTS, - ERROR_CLUSTER_NETWORK_NOT_FOUND, - ERROR_CLUSTER_NETINTERFACE_EXISTS, - ERROR_CLUSTER_NETINTERFACE_NOT_FOUND, - ERROR_CLUSTER_INVALID_REQUEST, - ERROR_CLUSTER_INVALID_NETWORK_PROVIDER, - ERROR_CLUSTER_NODE_DOWN, - ERROR_CLUSTER_NODE_UNREACHABLE, - ERROR_CLUSTER_NODE_NOT_MEMBER, - ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS, - ERROR_CLUSTER_INVALID_NETWORK, // = 5054 - ERROR_CLUSTER_NODE_UP = 5056, - ERROR_CLUSTER_IPADDR_IN_USE, - ERROR_CLUSTER_NODE_NOT_PAUSED, - ERROR_CLUSTER_NO_SECURITY_CONTEXT, - ERROR_CLUSTER_NETWORK_NOT_INTERNAL, - ERROR_CLUSTER_NODE_ALREADY_UP, - ERROR_CLUSTER_NODE_ALREADY_DOWN, - ERROR_CLUSTER_NETWORK_ALREADY_ONLINE, - ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE, - ERROR_CLUSTER_NODE_ALREADY_MEMBER, - ERROR_CLUSTER_LAST_INTERNAL_NETWORK, - ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS, - ERROR_INVALID_OPERATION_ON_QUORUM, - ERROR_DEPENDENCY_NOT_ALLOWED, - ERROR_CLUSTER_NODE_PAUSED, - ERROR_NODE_CANT_HOST_RESOURCE, - ERROR_CLUSTER_NODE_NOT_READY, - ERROR_CLUSTER_NODE_SHUTTING_DOWN, - ERROR_CLUSTER_JOIN_ABORTED, - ERROR_CLUSTER_INCOMPATIBLE_VERSIONS, - ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED, - ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED, - ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND, - ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED, - ERROR_CLUSTER_RESNAME_NOT_FOUND, - ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED, - ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST, - ERROR_CLUSTER_DATABASE_SEQMISMATCH, - ERROR_RESMON_INVALID_STATE, - ERROR_CLUSTER_GUM_NOT_LOCKER, - ERROR_QUORUM_DISK_NOT_FOUND, - ERROR_DATABASE_BACKUP_CORRUPT, - ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT, - ERROR_RESOURCE_PROPERTY_UNCHANGEABLE, // = 5089 - ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890, - ERROR_CLUSTER_QUORUMLOG_NOT_FOUND, - ERROR_CLUSTER_MEMBERSHIP_HALT, - ERROR_CLUSTER_INSTANCE_ID_MISMATCH, - ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP, - ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH, - ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP, - ERROR_CLUSTER_PARAMETER_MISMATCH, - ERROR_NODE_CANNOT_BE_CLUSTERED, - ERROR_CLUSTER_WRONG_OS_VERSION, - ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME, - ERROR_CLUSCFG_ALREADY_COMMITTED, - ERROR_CLUSCFG_ROLLBACK_FAILED, - ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT, - ERROR_CLUSTER_OLD_VERSION, - ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME, // = 5905 - ERROR_ENCRYPTION_FAILED = 6000, - ERROR_DECRYPTION_FAILED, - ERROR_FILE_ENCRYPTED, - ERROR_NO_RECOVERY_POLICY, - ERROR_NO_EFS, - ERROR_WRONG_EFS, - ERROR_NO_USER_KEYS, - ERROR_FILE_NOT_ENCRYPTED, - ERROR_NOT_EXPORT_FORMAT, - ERROR_FILE_READ_ONLY, - ERROR_DIR_EFS_DISALLOWED, - ERROR_EFS_SERVER_NOT_TRUSTED, - ERROR_BAD_RECOVERY_POLICY, - ERROR_EFS_ALG_BLOB_TOO_BIG, - ERROR_VOLUME_NOT_SUPPORT_EFS, - ERROR_EFS_DISABLED, - ERROR_EFS_VERSION_NOT_SUPPORT, // = 6016 - ERROR_NO_BROWSER_SERVERS_FOUND = 6118, - SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200, - - ERROR_CTX_WINSTATION_NAME_INVALID = 7001, - ERROR_CTX_INVALID_PD, - ERROR_CTX_PD_NOT_FOUND, - ERROR_CTX_WD_NOT_FOUND, - ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY, - ERROR_CTX_SERVICE_NAME_COLLISION, - ERROR_CTX_CLOSE_PENDING, - ERROR_CTX_NO_OUTBUF, - ERROR_CTX_MODEM_INF_NOT_FOUND, - ERROR_CTX_INVALID_MODEMNAME, - ERROR_CTX_MODEM_RESPONSE_ERROR, - ERROR_CTX_MODEM_RESPONSE_TIMEOUT, - ERROR_CTX_MODEM_RESPONSE_NO_CARRIER, - ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE, - ERROR_CTX_MODEM_RESPONSE_BUSY, - ERROR_CTX_MODEM_RESPONSE_VOICE, - ERROR_CTX_TD_ERROR, // = 7017 - ERROR_CTX_WINSTATION_NOT_FOUND = 7022, - ERROR_CTX_WINSTATION_ALREADY_EXISTS, - ERROR_CTX_WINSTATION_BUSY, - ERROR_CTX_BAD_VIDEO_MODE, // = 7025 - ERROR_CTX_GRAPHICS_INVALID = 7035, - ERROR_CTX_LOGON_DISABLED = 7037, - ERROR_CTX_NOT_CONSOLE, // = 7038 - ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040, - ERROR_CTX_CONSOLE_DISCONNECT, - ERROR_CTX_CONSOLE_CONNECT, // = 7042 - ERROR_CTX_SHADOW_DENIED = 7044, - ERROR_CTX_WINSTATION_ACCESS_DENIED, // = 7045 - ERROR_CTX_INVALID_WD = 7049, - ERROR_CTX_SHADOW_INVALID, - ERROR_CTX_SHADOW_DISABLED, - ERROR_CTX_CLIENT_LICENSE_IN_USE, - ERROR_CTX_CLIENT_LICENSE_NOT_SET, - ERROR_CTX_LICENSE_NOT_AVAILABLE, - ERROR_CTX_LICENSE_CLIENT_INVALID, - ERROR_CTX_LICENSE_EXPIRED, - ERROR_CTX_SHADOW_NOT_RUNNING, - ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE, - ERROR_ACTIVATION_COUNT_EXCEEDED, // = 7059 - - FRS_ERR_INVALID_API_SEQUENCE = 8001, - FRS_ERR_STARTING_SERVICE, - FRS_ERR_STOPPING_SERVICE, - FRS_ERR_INTERNAL_API, - FRS_ERR_INTERNAL, - FRS_ERR_SERVICE_COMM, - FRS_ERR_INSUFFICIENT_PRIV, - FRS_ERR_AUTHENTICATION, - FRS_ERR_PARENT_INSUFFICIENT_PRIV, - FRS_ERR_PARENT_AUTHENTICATION, - FRS_ERR_CHILD_TO_PARENT_COMM, - FRS_ERR_PARENT_TO_CHILD_COMM, - FRS_ERR_SYSVOL_POPULATE, - FRS_ERR_SYSVOL_POPULATE_TIMEOUT, - FRS_ERR_SYSVOL_IS_BUSY, - FRS_ERR_SYSVOL_DEMOTE, - FRS_ERR_INVALID_SERVICE_PARAMETER, // = 8017 - ERROR_DS_NOT_INSTALLED = 8200, - ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY, - ERROR_DS_NO_ATTRIBUTE_OR_VALUE, - ERROR_DS_INVALID_ATTRIBUTE_SYNTAX, - ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED, - ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS, - ERROR_DS_BUSY, - ERROR_DS_UNAVAILABLE, - ERROR_DS_NO_RIDS_ALLOCATED, - ERROR_DS_NO_MORE_RIDS, - ERROR_DS_INCORRECT_ROLE_OWNER, - ERROR_DS_RIDMGR_INIT_ERROR, - ERROR_DS_OBJ_CLASS_VIOLATION, - ERROR_DS_CANT_ON_NON_LEAF, - ERROR_DS_CANT_ON_RDN, - ERROR_DS_CANT_MOD_OBJ_CLASS, - ERROR_DS_CROSS_DOM_MOVE_ERROR, - ERROR_DS_GC_NOT_AVAILABLE, - ERROR_SHARED_POLICY, - ERROR_POLICY_OBJECT_NOT_FOUND, - ERROR_POLICY_ONLY_IN_DS, - ERROR_PROMOTION_ACTIVE, - ERROR_NO_PROMOTION_ACTIVE, // = 8222 - ERROR_DS_OPERATIONS_ERROR = 8224, - ERROR_DS_PROTOCOL_ERROR, - ERROR_DS_TIMELIMIT_EXCEEDED, - ERROR_DS_SIZELIMIT_EXCEEDED, - ERROR_DS_ADMIN_LIMIT_EXCEEDED, - ERROR_DS_COMPARE_FALSE, - ERROR_DS_COMPARE_TRUE, - ERROR_DS_AUTH_METHOD_NOT_SUPPORTED, - ERROR_DS_STRONG_AUTH_REQUIRED, - ERROR_DS_INAPPROPRIATE_AUTH, - ERROR_DS_AUTH_UNKNOWN, - ERROR_DS_REFERRAL, - ERROR_DS_UNAVAILABLE_CRIT_EXTENSION, - ERROR_DS_CONFIDENTIALITY_REQUIRED, - ERROR_DS_INAPPROPRIATE_MATCHING, - ERROR_DS_CONSTRAINT_VIOLATION, - ERROR_DS_NO_SUCH_OBJECT, - ERROR_DS_ALIAS_PROBLEM, - ERROR_DS_INVALID_DN_SYNTAX, - ERROR_DS_IS_LEAF, - ERROR_DS_ALIAS_DEREF_PROBLEM, - ERROR_DS_UNWILLING_TO_PERFORM, - ERROR_DS_LOOP_DETECT, - ERROR_DS_NAMING_VIOLATION, - ERROR_DS_OBJECT_RESULTS_TOO_LARGE, - ERROR_DS_AFFECTS_MULTIPLE_DSAS, - ERROR_DS_SERVER_DOWN, - ERROR_DS_LOCAL_ERROR, - ERROR_DS_ENCODING_ERROR, - ERROR_DS_DECODING_ERROR, - ERROR_DS_FILTER_UNKNOWN, - ERROR_DS_PARAM_ERROR, - ERROR_DS_NOT_SUPPORTED, - ERROR_DS_NO_RESULTS_RETURNED, - ERROR_DS_CONTROL_NOT_FOUND, - ERROR_DS_CLIENT_LOOP, - ERROR_DS_REFERRAL_LIMIT_EXCEEDED, - ERROR_DS_SORT_CONTROL_MISSING, - ERROR_DS_OFFSET_RANGE_ERROR, // = 8262 - ERROR_DS_ROOT_MUST_BE_NC = 8301, - ERROR_DS_ADD_REPLICA_INHIBITED, - ERROR_DS_ATT_NOT_DEF_IN_SCHEMA, - ERROR_DS_MAX_OBJ_SIZE_EXCEEDED, - ERROR_DS_OBJ_STRING_NAME_EXISTS, - ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA, - ERROR_DS_RDN_DOESNT_MATCH_SCHEMA, - ERROR_DS_NO_REQUESTED_ATTS_FOUND, - ERROR_DS_USER_BUFFER_TO_SMALL, - ERROR_DS_ATT_IS_NOT_ON_OBJ, - ERROR_DS_ILLEGAL_MOD_OPERATION, - ERROR_DS_OBJ_TOO_LARGE, - ERROR_DS_BAD_INSTANCE_TYPE, - ERROR_DS_MASTERDSA_REQUIRED, - ERROR_DS_OBJECT_CLASS_REQUIRED, - ERROR_DS_MISSING_REQUIRED_ATT, - ERROR_DS_ATT_NOT_DEF_FOR_CLASS, - ERROR_DS_ATT_ALREADY_EXISTS, // = 8318 - ERROR_DS_CANT_ADD_ATT_VALUES = 8320, - ERROR_DS_SINGLE_VALUE_CONSTRAINT, - ERROR_DS_RANGE_CONSTRAINT, - ERROR_DS_ATT_VAL_ALREADY_EXISTS, - ERROR_DS_CANT_REM_MISSING_ATT, - ERROR_DS_CANT_REM_MISSING_ATT_VAL, - ERROR_DS_ROOT_CANT_BE_SUBREF, - ERROR_DS_NO_CHAINING, - ERROR_DS_NO_CHAINED_EVAL, - ERROR_DS_NO_PARENT_OBJECT, - ERROR_DS_PARENT_IS_AN_ALIAS, - ERROR_DS_CANT_MIX_MASTER_AND_REPS, - ERROR_DS_CHILDREN_EXIST, - ERROR_DS_OBJ_NOT_FOUND, - ERROR_DS_ALIASED_OBJ_MISSING, - ERROR_DS_BAD_NAME_SYNTAX, - ERROR_DS_ALIAS_POINTS_TO_ALIAS, - ERROR_DS_CANT_DEREF_ALIAS, - ERROR_DS_OUT_OF_SCOPE, - ERROR_DS_OBJECT_BEING_REMOVED, - ERROR_DS_CANT_DELETE_DSA_OBJ, - ERROR_DS_GENERIC_ERROR, - ERROR_DS_DSA_MUST_BE_INT_MASTER, - ERROR_DS_CLASS_NOT_DSA, - ERROR_DS_INSUFF_ACCESS_RIGHTS, - ERROR_DS_ILLEGAL_SUPERIOR, - ERROR_DS_ATTRIBUTE_OWNED_BY_SAM, - ERROR_DS_NAME_TOO_MANY_PARTS, - ERROR_DS_NAME_TOO_LONG, - ERROR_DS_NAME_VALUE_TOO_LONG, - ERROR_DS_NAME_UNPARSEABLE, - ERROR_DS_NAME_TYPE_UNKNOWN, - ERROR_DS_NOT_AN_OBJECT, - ERROR_DS_SEC_DESC_TOO_SHORT, - ERROR_DS_SEC_DESC_INVALID, - ERROR_DS_NO_DELETED_NAME, - ERROR_DS_SUBREF_MUST_HAVE_PARENT, - ERROR_DS_NCNAME_MUST_BE_NC, - ERROR_DS_CANT_ADD_SYSTEM_ONLY, - ERROR_DS_CLASS_MUST_BE_CONCRETE, - ERROR_DS_INVALID_DMD, - ERROR_DS_OBJ_GUID_EXISTS, - ERROR_DS_NOT_ON_BACKLINK, - ERROR_DS_NO_CROSSREF_FOR_NC, - ERROR_DS_SHUTTING_DOWN, - ERROR_DS_UNKNOWN_OPERATION, - ERROR_DS_INVALID_ROLE_OWNER, - ERROR_DS_COULDNT_CONTACT_FSMO, - ERROR_DS_CROSS_NC_DN_RENAME, - ERROR_DS_CANT_MOD_SYSTEM_ONLY, - ERROR_DS_REPLICATOR_ONLY, - ERROR_DS_OBJ_CLASS_NOT_DEFINED, - ERROR_DS_OBJ_CLASS_NOT_SUBCLASS, - ERROR_DS_NAME_REFERENCE_INVALID, - ERROR_DS_CROSS_REF_EXISTS, - ERROR_DS_CANT_DEL_MASTER_CROSSREF, - ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD, - ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX, - ERROR_DS_DUP_RDN, - ERROR_DS_DUP_OID, - ERROR_DS_DUP_MAPI_ID, - ERROR_DS_DUP_SCHEMA_ID_GUID, - ERROR_DS_DUP_LDAP_DISPLAY_NAME, - ERROR_DS_SEMANTIC_ATT_TEST, - ERROR_DS_SYNTAX_MISMATCH, - ERROR_DS_EXISTS_IN_MUST_HAVE, - ERROR_DS_EXISTS_IN_MAY_HAVE, - ERROR_DS_NONEXISTENT_MAY_HAVE, - ERROR_DS_NONEXISTENT_MUST_HAVE, - ERROR_DS_AUX_CLS_TEST_FAIL, - ERROR_DS_NONEXISTENT_POSS_SUP, - ERROR_DS_SUB_CLS_TEST_FAIL, - ERROR_DS_BAD_RDN_ATT_ID_SYNTAX, - ERROR_DS_EXISTS_IN_AUX_CLS, - ERROR_DS_EXISTS_IN_SUB_CLS, - ERROR_DS_EXISTS_IN_POSS_SUP, - ERROR_DS_RECALCSCHEMA_FAILED, - ERROR_DS_TREE_DELETE_NOT_FINISHED, - ERROR_DS_CANT_DELETE, - ERROR_DS_ATT_SCHEMA_REQ_ID, - ERROR_DS_BAD_ATT_SCHEMA_SYNTAX, - ERROR_DS_CANT_CACHE_ATT, - ERROR_DS_CANT_CACHE_CLASS, - ERROR_DS_CANT_REMOVE_ATT_CACHE, - ERROR_DS_CANT_REMOVE_CLASS_CACHE, - ERROR_DS_CANT_RETRIEVE_DN, - ERROR_DS_MISSING_SUPREF, - ERROR_DS_CANT_RETRIEVE_INSTANCE, - ERROR_DS_CODE_INCONSISTENCY, - ERROR_DS_DATABASE_ERROR, - ERROR_DS_GOVERNSID_MISSING, - ERROR_DS_MISSING_EXPECTED_ATT, - ERROR_DS_NCNAME_MISSING_CR_REF, - ERROR_DS_SECURITY_CHECKING_ERROR, - ERROR_DS_SCHEMA_NOT_LOADED, - ERROR_DS_SCHEMA_ALLOC_FAILED, - ERROR_DS_ATT_SCHEMA_REQ_SYNTAX, - ERROR_DS_GCVERIFY_ERROR, - ERROR_DS_DRA_SCHEMA_MISMATCH, - ERROR_DS_CANT_FIND_DSA_OBJ, - ERROR_DS_CANT_FIND_EXPECTED_NC, - ERROR_DS_CANT_FIND_NC_IN_CACHE, - ERROR_DS_CANT_RETRIEVE_CHILD, - ERROR_DS_SECURITY_ILLEGAL_MODIFY, - ERROR_DS_CANT_REPLACE_HIDDEN_REC, - ERROR_DS_BAD_HIERARCHY_FILE, - ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED, - ERROR_DS_CONFIG_PARAM_MISSING, - ERROR_DS_COUNTING_AB_INDICES_FAILED, - ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED, - ERROR_DS_INTERNAL_FAILURE, - ERROR_DS_UNKNOWN_ERROR, - ERROR_DS_ROOT_REQUIRES_CLASS_TOP, - ERROR_DS_REFUSING_FSMO_ROLES, - ERROR_DS_MISSING_FSMO_SETTINGS, - ERROR_DS_UNABLE_TO_SURRENDER_ROLES, - ERROR_DS_DRA_GENERIC, - ERROR_DS_DRA_INVALID_PARAMETER, - ERROR_DS_DRA_BUSY, - ERROR_DS_DRA_BAD_DN, - ERROR_DS_DRA_BAD_NC, - ERROR_DS_DRA_DN_EXISTS, - ERROR_DS_DRA_INTERNAL_ERROR, - ERROR_DS_DRA_INCONSISTENT_DIT, - ERROR_DS_DRA_CONNECTION_FAILED, - ERROR_DS_DRA_BAD_INSTANCE_TYPE, - ERROR_DS_DRA_OUT_OF_MEM, - ERROR_DS_DRA_MAIL_PROBLEM, - ERROR_DS_DRA_REF_ALREADY_EXISTS, - ERROR_DS_DRA_REF_NOT_FOUND, - ERROR_DS_DRA_OBJ_IS_REP_SOURCE, - ERROR_DS_DRA_DB_ERROR, - ERROR_DS_DRA_NO_REPLICA, - ERROR_DS_DRA_ACCESS_DENIED, - ERROR_DS_DRA_NOT_SUPPORTED, - ERROR_DS_DRA_RPC_CANCELLED, - ERROR_DS_DRA_SOURCE_DISABLED, - ERROR_DS_DRA_SINK_DISABLED, - ERROR_DS_DRA_NAME_COLLISION, - ERROR_DS_DRA_SOURCE_REINSTALLED, - ERROR_DS_DRA_MISSING_PARENT, - ERROR_DS_DRA_PREEMPTED, - ERROR_DS_DRA_ABANDON_SYNC, - ERROR_DS_DRA_SHUTDOWN, - ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET, - ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA, - ERROR_DS_DRA_EXTN_CONNECTION_FAILED, - ERROR_DS_INSTALL_SCHEMA_MISMATCH, - ERROR_DS_DUP_LINK_ID, - ERROR_DS_NAME_ERROR_RESOLVING, - ERROR_DS_NAME_ERROR_NOT_FOUND, - ERROR_DS_NAME_ERROR_NOT_UNIQUE, - ERROR_DS_NAME_ERROR_NO_MAPPING, - ERROR_DS_NAME_ERROR_DOMAIN_ONLY, - ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING, - ERROR_DS_CONSTRUCTED_ATT_MOD, - ERROR_DS_WRONG_OM_OBJ_CLASS, - ERROR_DS_DRA_REPL_PENDING, - ERROR_DS_DS_REQUIRED, - ERROR_DS_INVALID_LDAP_DISPLAY_NAME, - ERROR_DS_NON_BASE_SEARCH, - ERROR_DS_CANT_RETRIEVE_ATTS, - ERROR_DS_BACKLINK_WITHOUT_LINK, - ERROR_DS_EPOCH_MISMATCH, - ERROR_DS_SRC_NAME_MISMATCH, - ERROR_DS_SRC_AND_DST_NC_IDENTICAL, - ERROR_DS_DST_NC_MISMATCH, - ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC, - ERROR_DS_SRC_GUID_MISMATCH, - ERROR_DS_CANT_MOVE_DELETED_OBJECT, - ERROR_DS_PDC_OPERATION_IN_PROGRESS, - ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD, - ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION, - ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS, - ERROR_DS_NC_MUST_HAVE_NC_PARENT, - ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE, - ERROR_DS_DST_DOMAIN_NOT_NATIVE, - ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER, - ERROR_DS_CANT_MOVE_ACCOUNT_GROUP, - ERROR_DS_CANT_MOVE_RESOURCE_GROUP, - ERROR_DS_INVALID_SEARCH_FLAG, - ERROR_DS_NO_TREE_DELETE_ABOVE_NC, - ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE, - ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE, - ERROR_DS_SAM_INIT_FAILURE, - ERROR_DS_SENSITIVE_GROUP_VIOLATION, - ERROR_DS_CANT_MOD_PRIMARYGROUPID, - ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD, - ERROR_DS_NONSAFE_SCHEMA_CHANGE, - ERROR_DS_SCHEMA_UPDATE_DISALLOWED, - ERROR_DS_CANT_CREATE_UNDER_SCHEMA, - ERROR_DS_INSTALL_NO_SRC_SCH_VERSION, - ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE, - ERROR_DS_INVALID_GROUP_TYPE, - ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN, - ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN, - ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER, - ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER, - ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER, - ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER, - ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER, - ERROR_DS_HAVE_PRIMARY_MEMBERS, - ERROR_DS_STRING_SD_CONVERSION_FAILED, - ERROR_DS_NAMING_MASTER_GC, - ERROR_DS_LOOKUP_FAILURE, - ERROR_DS_COULDNT_UPDATE_SPNS, - ERROR_DS_CANT_RETRIEVE_SD, - ERROR_DS_KEY_NOT_UNIQUE, - ERROR_DS_WRONG_LINKED_ATT_SYNTAX, - ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD, - ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY, - ERROR_DS_CANT_START, - ERROR_DS_INIT_FAILURE, - ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION, - ERROR_DS_SOURCE_DOMAIN_IN_FOREST, - ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST, - ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED, - ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN, - ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER, - ERROR_DS_SRC_SID_EXISTS_IN_FOREST, - ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH, - ERROR_SAM_INIT_FAILURE, - ERROR_DS_DRA_SCHEMA_INFO_SHIP, - ERROR_DS_DRA_SCHEMA_CONFLICT, - ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT, - ERROR_DS_DRA_OBJ_NC_MISMATCH, - ERROR_DS_NC_STILL_HAS_DSAS, - ERROR_DS_GC_REQUIRED, - ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY, - ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS, - ERROR_DS_CANT_ADD_TO_GC, - ERROR_DS_NO_CHECKPOINT_WITH_PDC, - ERROR_DS_SOURCE_AUDITING_NOT_ENABLED, - ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC, - ERROR_DS_INVALID_NAME_FOR_SPN, - ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS, - ERROR_DS_UNICODEPWD_NOT_IN_QUOTES, - ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED, - ERROR_DS_MUST_BE_RUN_ON_DST_DC, - ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER, - ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ, - ERROR_DS_INIT_FAILURE_CONSOLE, - ERROR_DS_SAM_INIT_FAILURE_CONSOLE, - ERROR_DS_FOREST_VERSION_TOO_HIGH, - ERROR_DS_DOMAIN_VERSION_TOO_HIGH, - ERROR_DS_FOREST_VERSION_TOO_LOW, - ERROR_DS_DOMAIN_VERSION_TOO_LOW, - ERROR_DS_INCOMPATIBLE_VERSION, - ERROR_DS_LOW_DSA_VERSION, - ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN, - ERROR_DS_NOT_SUPPORTED_SORT_ORDER, - ERROR_DS_NAME_NOT_UNIQUE, - ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4, - ERROR_DS_OUT_OF_VERSION_STORE, - ERROR_DS_INCOMPATIBLE_CONTROLS_USED, - ERROR_DS_NO_REF_DOMAIN, - ERROR_DS_RESERVED_LINK_ID, - ERROR_DS_LINK_ID_NOT_AVAILABLE, - ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER, - ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE, - ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC, - ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG, - ERROR_DS_MODIFYDN_WRONG_GRANDPARENT, - ERROR_DS_NAME_ERROR_TRUST_REFERRAL, - ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER, - ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD, - ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2, - ERROR_DS_THREAD_LIMIT_EXCEEDED, - ERROR_DS_NOT_CLOSEST, - ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF, - ERROR_DS_SINGLE_USER_MODE_FAILED, - ERROR_DS_NTDSCRIPT_SYNTAX_ERROR, - ERROR_DS_NTDSCRIPT_PROCESS_ERROR, - ERROR_DS_DIFFERENT_REPL_EPOCHS, - ERROR_DS_DRS_EXTENSIONS_CHANGED, - ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR, - ERROR_DS_NO_MSDS_INTID, - ERROR_DS_DUP_MSDS_INTID, - ERROR_DS_EXISTS_IN_RDNATTID, - ERROR_DS_AUTHORIZATION_FAILED, - ERROR_DS_INVALID_SCRIPT, - ERROR_DS_REMOTE_CROSSREF_OP_FAILED, - ERROR_DS_CROSS_REF_BUSY, - ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN, - ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC, - ERROR_DS_DUPLICATE_ID_FOUND, - ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT, - ERROR_DS_GROUP_CONVERSION_ERROR, - ERROR_DS_CANT_MOVE_APP_BASIC_GROUP, - ERROR_DS_CANT_MOVE_APP_QUERY_GROUP, - ERROR_DS_ROLE_NOT_VERIFIED, - ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL, - ERROR_DS_DOMAIN_RENAME_IN_PROGRESS, - ERROR_DS_EXISTING_AD_CHILD_NC, // = 8613 - DNS_ERROR_RCODE_FORMAT_ERROR = 9001, - DNS_ERROR_RCODE_SERVER_FAILURE, - DNS_ERROR_RCODE_NAME_ERROR, - DNS_ERROR_RCODE_NOT_IMPLEMENTED, - DNS_ERROR_RCODE_REFUSED, - DNS_ERROR_RCODE_YXDOMAIN, - DNS_ERROR_RCODE_YXRRSET, - DNS_ERROR_RCODE_NXRRSET, - DNS_ERROR_RCODE_NOTAUTH, - DNS_ERROR_RCODE_NOTZONE, // = 9010 - DNS_ERROR_RCODE_BADSIG = 9016, - DNS_ERROR_RCODE_BADKEY, - DNS_ERROR_RCODE_BADTIME, // = 9018 - DNS_INFO_NO_RECORDS = 9501, - DNS_ERROR_BAD_PACKET, - DNS_ERROR_NO_PACKET, - DNS_ERROR_RCODE, - DNS_ERROR_UNSECURE_PACKET, // = 9505 - DNS_ERROR_INVALID_TYPE = 9551, - DNS_ERROR_INVALID_IP_ADDRESS, - DNS_ERROR_INVALID_PROPERTY, - DNS_ERROR_TRY_AGAIN_LATER, - DNS_ERROR_NOT_UNIQUE, - DNS_ERROR_NON_RFC_NAME, - DNS_STATUS_FQDN, - DNS_STATUS_DOTTED_NAME, - DNS_STATUS_SINGLE_PART_NAME, - DNS_ERROR_INVALID_NAME_CHAR, - DNS_ERROR_NUMERIC_NAME, - DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER, - DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION, - DNS_ERROR_CANNOT_FIND_ROOT_HINTS, - DNS_ERROR_INCONSISTENT_ROOT_HINTS, // = 9565 - DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601, - DNS_ERROR_NO_ZONE_INFO, - DNS_ERROR_INVALID_ZONE_OPERATION, - DNS_ERROR_ZONE_CONFIGURATION_ERROR, - DNS_ERROR_ZONE_HAS_NO_SOA_RECORD, - DNS_ERROR_ZONE_HAS_NO_NS_RECORDS, - DNS_ERROR_ZONE_LOCKED, - DNS_ERROR_ZONE_CREATION_FAILED, - DNS_ERROR_ZONE_ALREADY_EXISTS, - DNS_ERROR_AUTOZONE_ALREADY_EXISTS, - DNS_ERROR_INVALID_ZONE_TYPE, - DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP, - DNS_ERROR_ZONE_NOT_SECONDARY, - DNS_ERROR_NEED_SECONDARY_ADDRESSES, - DNS_ERROR_WINS_INIT_FAILED, - DNS_ERROR_NEED_WINS_SERVERS, - DNS_ERROR_NBSTAT_INIT_FAILED, - DNS_ERROR_SOA_DELETE_INVALID, - DNS_ERROR_FORWARDER_ALREADY_EXISTS, - DNS_ERROR_ZONE_REQUIRES_MASTER_IP, - DNS_ERROR_ZONE_IS_SHUTDOWN, // = 9621 - DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651, - DNS_ERROR_INVALID_DATAFILE_NAME, - DNS_ERROR_DATAFILE_OPEN_FAILURE, - DNS_ERROR_FILE_WRITEBACK_FAILED, - DNS_ERROR_DATAFILE_PARSING, // = 9655 - DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701, - DNS_ERROR_RECORD_FORMAT, - DNS_ERROR_NODE_CREATION_FAILED, - DNS_ERROR_UNKNOWN_RECORD_TYPE, - DNS_ERROR_RECORD_TIMED_OUT, - DNS_ERROR_NAME_NOT_IN_ZONE, - DNS_ERROR_CNAME_LOOP, - DNS_ERROR_NODE_IS_CNAME, - DNS_ERROR_CNAME_COLLISION, - DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT, - DNS_ERROR_RECORD_ALREADY_EXISTS, - DNS_ERROR_SECONDARY_DATA, - DNS_ERROR_NO_CREATE_CACHE_DATA, - DNS_ERROR_NAME_DOES_NOT_EXIST, - DNS_WARNING_PTR_CREATE_FAILED, - DNS_WARNING_DOMAIN_UNDELETED, - DNS_ERROR_DS_UNAVAILABLE, - DNS_ERROR_DS_ZONE_ALREADY_EXISTS, - DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE, // = 9719 - DNS_INFO_AXFR_COMPLETE = 9751, - DNS_ERROR_AXFR, - DNS_INFO_ADDED_LOCAL_WINS, // = 9753 - DNS_STATUS_CONTINUE_NEEDED = 9801, - DNS_ERROR_NO_TCPIP = 9851, - DNS_ERROR_NO_DNS_SERVERS, // = 9852 - DNS_ERROR_DP_DOES_NOT_EXIST = 9901, - DNS_ERROR_DP_ALREADY_EXISTS, - DNS_ERROR_DP_NOT_ENLISTED, - DNS_ERROR_DP_ALREADY_ENLISTED, - DNS_ERROR_DP_NOT_AVAILABLE, // = 9905 - -/+ already in winsock2.d defined! - - WSABASEERR = 10000, - WSAEINTR = 10004, - WSAEBADF = 10009, - WSAEACCES = 10013, - WSAEFAULT, // = 10014 - WSAEINVAL = 10022, - WSAEMFILE = 10024, - WSAEWOULDBLOCK = 10035, - WSAEINPROGRESS, - WSAEALREADY, - WSAENOTSOCK, - WSAEDESTADDRREQ, - WSAEMSGSIZE, - WSAEPROTOTYPE, - WSAENOPROTOOPT, - WSAEPROTONOSUPPORT, - WSAESOCKTNOSUPPORT, - WSAEOPNOTSUPP, - WSAEPFNOSUPPORT, - WSAEAFNOSUPPORT, - WSAEADDRINUSE, - WSAEADDRNOTAVAIL, - WSAENETDOWN, - WSAENETUNREACH, - WSAENETRESET, - WSAECONNABORTED, - WSAECONNRESET, - WSAENOBUFS, - WSAEISCONN, - WSAENOTCONN, - WSAESHUTDOWN, - WSAETOOMANYREFS, - WSAETIMEDOUT, - WSAECONNREFUSED, - WSAELOOP, - WSAENAMETOOLONG, - WSAEHOSTDOWN, - WSAEHOSTUNREACH, - WSAENOTEMPTY, - WSAEPROCLIM, - WSAEUSERS, - WSAEDQUOT, - WSAESTALE, - WSAEREMOTE, // = 10071 - WSASYSNOTREADY = 10091, - WSAVERNOTSUPPORTED, - WSANOTINITIALISED, // = 10093 - WSAEDISCON = 10101, - WSAENOMORE, - WSAECANCELLED, - WSAEINVALIDPROCTABLE, - WSAEINVALIDPROVIDER, - WSAEPROVIDERFAILEDINIT, - WSASYSCALLFAILURE, - WSASERVICE_NOT_FOUND, - WSATYPE_NOT_FOUND, - WSA_E_NO_MORE, - WSA_E_CANCELLED, - WSAEREFUSED, // = 10112 - WSAHOST_NOT_FOUND = 11001, - WSATRY_AGAIN, - WSANO_RECOVERY, - WSANO_DATA, - WSA_QOS_RECEIVERS, - WSA_QOS_SENDERS, - WSA_QOS_NO_SENDERS, - WSA_QOS_NO_RECEIVERS, - WSA_QOS_REQUEST_CONFIRMED, - WSA_QOS_ADMISSION_FAILURE, - WSA_QOS_POLICY_FAILURE, - WSA_QOS_BAD_STYLE, - WSA_QOS_BAD_OBJECT, - WSA_QOS_TRAFFIC_CTRL_ERROR, - WSA_QOS_GENERIC_ERROR, - WSA_QOS_ESERVICETYPE, - WSA_QOS_EFLOWSPEC, - WSA_QOS_EPROVSPECBUF, - WSA_QOS_EFILTERSTYLE, - WSA_QOS_EFILTERTYPE, - WSA_QOS_EFILTERCOUNT, - WSA_QOS_EOBJLENGTH, - WSA_QOS_EFLOWCOUNT, - WSA_QOS_EUNKNOWNPSOBJ, - WSA_QOS_EPOLICYOBJ, - WSA_QOS_EFLOWDESC, - WSA_QOS_EPSFLOWSPEC, - WSA_QOS_EPSFILTERSPEC, - WSA_QOS_ESDMODEOBJ, - WSA_QOS_ESHAPERATEOBJ, - WSA_QOS_RESERVED_PETYPE, // = 11031 - -+/ - - ERROR_IPSEC_QM_POLICY_EXISTS = 13000, - ERROR_IPSEC_QM_POLICY_NOT_FOUND, - ERROR_IPSEC_QM_POLICY_IN_USE, - ERROR_IPSEC_MM_POLICY_EXISTS, - ERROR_IPSEC_MM_POLICY_NOT_FOUND, - ERROR_IPSEC_MM_POLICY_IN_USE, - ERROR_IPSEC_MM_FILTER_EXISTS, - ERROR_IPSEC_MM_FILTER_NOT_FOUND, - ERROR_IPSEC_TRANSPORT_FILTER_EXISTS, - ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND, - ERROR_IPSEC_MM_AUTH_EXISTS, - ERROR_IPSEC_MM_AUTH_NOT_FOUND, - ERROR_IPSEC_MM_AUTH_IN_USE, - ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND, - ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND, - ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND, - ERROR_IPSEC_TUNNEL_FILTER_EXISTS, - ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND, - ERROR_IPSEC_MM_FILTER_PENDING_DELETION, - ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION, - ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION, - ERROR_IPSEC_MM_POLICY_PENDING_DELETION, - ERROR_IPSEC_MM_AUTH_PENDING_DELETION, - ERROR_IPSEC_QM_POLICY_PENDING_DELETION, - WARNING_IPSEC_MM_POLICY_PRUNED, - WARNING_IPSEC_QM_POLICY_PRUNED, // = 13025 - ERROR_IPSEC_IKE_AUTH_FAIL = 13801, - ERROR_IPSEC_IKE_ATTRIB_FAIL, - ERROR_IPSEC_IKE_NEGOTIATION_PENDING, - ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR, - ERROR_IPSEC_IKE_TIMED_OUT, - ERROR_IPSEC_IKE_NO_CERT, - ERROR_IPSEC_IKE_SA_DELETED, - ERROR_IPSEC_IKE_SA_REAPED, - ERROR_IPSEC_IKE_MM_ACQUIRE_DROP, - ERROR_IPSEC_IKE_QM_ACQUIRE_DROP, - ERROR_IPSEC_IKE_QUEUE_DROP_MM, - ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM, - ERROR_IPSEC_IKE_DROP_NO_RESPONSE, - ERROR_IPSEC_IKE_MM_DELAY_DROP, - ERROR_IPSEC_IKE_QM_DELAY_DROP, - ERROR_IPSEC_IKE_ERROR, - ERROR_IPSEC_IKE_CRL_FAILED, - ERROR_IPSEC_IKE_INVALID_KEY_USAGE, - ERROR_IPSEC_IKE_INVALID_CERT_TYPE, - ERROR_IPSEC_IKE_NO_PRIVATE_KEY, // = 13820 - ERROR_IPSEC_IKE_DH_FAIL = 13822, - ERROR_IPSEC_IKE_INVALID_HEADER = 13824, - ERROR_IPSEC_IKE_NO_POLICY, - ERROR_IPSEC_IKE_INVALID_SIGNATURE, - ERROR_IPSEC_IKE_KERBEROS_ERROR, - ERROR_IPSEC_IKE_NO_PUBLIC_KEY, - ERROR_IPSEC_IKE_PROCESS_ERR, - ERROR_IPSEC_IKE_PROCESS_ERR_SA, - ERROR_IPSEC_IKE_PROCESS_ERR_PROP, - ERROR_IPSEC_IKE_PROCESS_ERR_TRANS, - ERROR_IPSEC_IKE_PROCESS_ERR_KE, - ERROR_IPSEC_IKE_PROCESS_ERR_ID, - ERROR_IPSEC_IKE_PROCESS_ERR_CERT, - ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ, - ERROR_IPSEC_IKE_PROCESS_ERR_HASH, - ERROR_IPSEC_IKE_PROCESS_ERR_SIG, - ERROR_IPSEC_IKE_PROCESS_ERR_NONCE, - ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY, - ERROR_IPSEC_IKE_PROCESS_ERR_DELETE, - ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR, - ERROR_IPSEC_IKE_INVALID_PAYLOAD, - ERROR_IPSEC_IKE_LOAD_SOFT_SA, - ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN, - ERROR_IPSEC_IKE_INVALID_COOKIE, - ERROR_IPSEC_IKE_NO_PEER_CERT, - ERROR_IPSEC_IKE_PEER_CRL_FAILED, - ERROR_IPSEC_IKE_POLICY_CHANGE, - ERROR_IPSEC_IKE_NO_MM_POLICY, - ERROR_IPSEC_IKE_NOTCBPRIV, - ERROR_IPSEC_IKE_SECLOADFAIL, - ERROR_IPSEC_IKE_FAILSSPINIT, - ERROR_IPSEC_IKE_FAILQUERYSSP, - ERROR_IPSEC_IKE_SRVACQFAIL, - ERROR_IPSEC_IKE_SRVQUERYCRED, - ERROR_IPSEC_IKE_GETSPIFAIL, - ERROR_IPSEC_IKE_INVALID_FILTER, - ERROR_IPSEC_IKE_OUT_OF_MEMORY, - ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED, - ERROR_IPSEC_IKE_INVALID_POLICY, - ERROR_IPSEC_IKE_UNKNOWN_DOI, - ERROR_IPSEC_IKE_INVALID_SITUATION, - ERROR_IPSEC_IKE_DH_FAILURE, - ERROR_IPSEC_IKE_INVALID_GROUP, - ERROR_IPSEC_IKE_ENCRYPT, - ERROR_IPSEC_IKE_DECRYPT, - ERROR_IPSEC_IKE_POLICY_MATCH, - ERROR_IPSEC_IKE_UNSUPPORTED_ID, - ERROR_IPSEC_IKE_INVALID_HASH, - ERROR_IPSEC_IKE_INVALID_HASH_ALG, - ERROR_IPSEC_IKE_INVALID_HASH_SIZE, - ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG, - ERROR_IPSEC_IKE_INVALID_AUTH_ALG, - ERROR_IPSEC_IKE_INVALID_SIG, - ERROR_IPSEC_IKE_LOAD_FAILED, - ERROR_IPSEC_IKE_RPC_DELETE, - ERROR_IPSEC_IKE_BENIGN_REINIT, - ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY, // = 13879 - ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881, - ERROR_IPSEC_IKE_MM_LIMIT, - ERROR_IPSEC_IKE_NEGOTIATION_DISABLED, - ERROR_IPSEC_IKE_NEG_STATUS_END, - ERROR_SXS_SECTION_NOT_FOUND, - ERROR_SXS_CANT_GEN_ACTCTX, - ERROR_SXS_INVALID_ACTCTXDATA_FORMAT, - ERROR_SXS_ASSEMBLY_NOT_FOUND, - ERROR_SXS_MANIFEST_FORMAT_ERROR, - ERROR_SXS_MANIFEST_PARSE_ERROR, - ERROR_SXS_ACTIVATION_CONTEXT_DISABLED, - ERROR_SXS_KEY_NOT_FOUND, - ERROR_SXS_VERSION_CONFLICT, - ERROR_SXS_WRONG_SECTION_TYPE, - ERROR_SXS_THREAD_QUERIES_DISABLED, - ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET, - ERROR_SXS_UNKNOWN_ENCODING_GROUP, - ERROR_SXS_UNKNOWN_ENCODING, - ERROR_SXS_INVALID_XML_NAMESPACE_URI, - ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED, - ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED, - ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE, - ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE, - ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE, - ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT, - ERROR_SXS_DUPLICATE_DLL_NAME, - ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME, - ERROR_SXS_DUPLICATE_CLSID, - ERROR_SXS_DUPLICATE_IID, - ERROR_SXS_DUPLICATE_TLBID, - ERROR_SXS_DUPLICATE_PROGID, - ERROR_SXS_DUPLICATE_ASSEMBLY_NAME, - ERROR_SXS_FILE_HASH_MISMATCH, - ERROR_SXS_POLICY_PARSE_ERROR, - ERROR_SXS_XML_E_MISSINGQUOTE, - ERROR_SXS_XML_E_COMMENTSYNTAX, - ERROR_SXS_XML_E_BADSTARTNAMECHAR, - ERROR_SXS_XML_E_BADNAMECHAR, - ERROR_SXS_XML_E_BADCHARINSTRING, - ERROR_SXS_XML_E_XMLDECLSYNTAX, - ERROR_SXS_XML_E_BADCHARDATA, - ERROR_SXS_XML_E_MISSINGWHITESPACE, - ERROR_SXS_XML_E_EXPECTINGTAGEND, - ERROR_SXS_XML_E_MISSINGSEMICOLON, - ERROR_SXS_XML_E_UNBALANCEDPAREN, - ERROR_SXS_XML_E_INTERNALERROR, - ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE, - ERROR_SXS_XML_E_INCOMPLETE_ENCODING, - ERROR_SXS_XML_E_MISSING_PAREN, - ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE, - ERROR_SXS_XML_E_MULTIPLE_COLONS, - ERROR_SXS_XML_E_INVALID_DECIMAL, - ERROR_SXS_XML_E_INVALID_HEXIDECIMAL, - ERROR_SXS_XML_E_INVALID_UNICODE, - ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK, - ERROR_SXS_XML_E_UNEXPECTEDENDTAG, - ERROR_SXS_XML_E_UNCLOSEDTAG, - ERROR_SXS_XML_E_DUPLICATEATTRIBUTE, - ERROR_SXS_XML_E_MULTIPLEROOTS, - ERROR_SXS_XML_E_INVALIDATROOTLEVEL, - ERROR_SXS_XML_E_BADXMLDECL, - ERROR_SXS_XML_E_MISSINGROOT, - ERROR_SXS_XML_E_UNEXPECTEDEOF, - ERROR_SXS_XML_E_BADPEREFINSUBSET, - ERROR_SXS_XML_E_UNCLOSEDSTARTTAG, - ERROR_SXS_XML_E_UNCLOSEDENDTAG, - ERROR_SXS_XML_E_UNCLOSEDSTRING, - ERROR_SXS_XML_E_UNCLOSEDCOMMENT, - ERROR_SXS_XML_E_UNCLOSEDDECL, - ERROR_SXS_XML_E_UNCLOSEDCDATA, - ERROR_SXS_XML_E_RESERVEDNAMESPACE, - ERROR_SXS_XML_E_INVALIDENCODING, - ERROR_SXS_XML_E_INVALIDSWITCH, - ERROR_SXS_XML_E_BADXMLCASE, - ERROR_SXS_XML_E_INVALID_STANDALONE, - ERROR_SXS_XML_E_UNEXPECTED_STANDALONE, - ERROR_SXS_XML_E_INVALID_VERSION, - ERROR_SXS_XML_E_MISSINGEQUALS, - ERROR_SXS_PROTECTION_RECOVERY_FAILED, - ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT, - ERROR_SXS_PROTECTION_CATALOG_NOT_VALID, - ERROR_SXS_UNTRANSLATABLE_HRESULT, - ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING, - ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE, - ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME // = 14080 -} - -enum : HRESULT { - S_OK = 0x00000000, - S_FALSE = 0x00000001, - - NOERROR = 0x00000000, - - E_PENDING = 0x8000000A, - E_NOTIMPL = 0x80004001, - E_NOINTERFACE = 0x80004002, - E_POINTER = 0x80004003, - E_ABORT = 0x80004004, - E_FAIL = 0x80004005, - E_ACCESSDENIED = 0x80070005, - E_HANDLE = 0x80070006, - E_OUTOFMEMORY = 0x8007000E, - E_INVALIDARG = 0x80070057, - E_UNEXPECTED = 0x8000FFFF, - - CO_E_INIT_TLS = 0x80004006, - CO_E_INIT_SHARED_ALLOCATOR = 0x80004007, - CO_E_INIT_MEMORY_ALLOCATOR = 0x80004008, - CO_E_INIT_CLASS_CACHE = 0x80004009, - CO_E_INIT_RPC_CHANNEL = 0x8000400A, - CO_E_INIT_TLS_SET_CHANNEL_CONTROL = 0x8000400B, - CO_E_INIT_TLS_CHANNEL_CONTROL = 0x8000400C, - CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = 0x8000400D, - CO_E_INIT_SCM_MUTEX_EXISTS = 0x8000400E, - CO_E_INIT_SCM_FILE_MAPPING_EXISTS = 0x8000400F, - CO_E_INIT_SCM_MAP_VIEW_OF_FILE = 0x80004010, - CO_E_INIT_SCM_EXEC_FAILURE = 0x80004011, - CO_E_INIT_ONLY_SINGLE_THREADED = 0x80004012, - - RPC_E_CALL_REJECTED = 0x80010001, - RPC_E_CALL_CANCELED = 0x80010002, - RPC_E_CANTPOST_INSENDCALL = 0x80010003, - RPC_E_CANTCALLOUT_INASYNCCALL = 0x80010004, - RPC_E_CANTCALLOUT_INEXTERNALCALL = 0x80010005, - RPC_E_CONNECTION_TERMINATED = 0x80010006, - RPC_E_SERVER_DIED = 0x80010007, - RPC_E_CLIENT_DIED = 0x80010008, - RPC_E_INVALID_DATAPACKET = 0x80010009, - RPC_E_CANTTRANSMIT_CALL = 0x8001000A, - RPC_E_CLIENT_CANTMARSHAL_DATA = 0x8001000B, - RPC_E_CLIENT_CANTUNMARSHAL_DATA = 0x8001000C, - RPC_E_SERVER_CANTMARSHAL_DATA = 0x8001000D, - RPC_E_SERVER_CANTUNMARSHAL_DATA = 0x8001000E, - RPC_E_INVALID_DATA = 0x8001000F, - RPC_E_INVALID_PARAMETER = 0x80010010, - RPC_E_CANTCALLOUT_AGAIN = 0x80010011, - RPC_E_SERVER_DIED_DNE = 0x80010012, - RPC_E_SYS_CALL_FAILED = 0x80010100, - RPC_E_OUT_OF_RESOURCES = 0x80010101, - RPC_E_ATTEMPTED_MULTITHREAD = 0x80010102, - RPC_E_NOT_REGISTERED = 0x80010103, - RPC_E_FAULT = 0x80010104, - RPC_E_SERVERFAULT = 0x80010105, - RPC_E_CHANGED_MODE = 0x80010106, - RPC_E_INVALIDMETHOD = 0x80010107, - RPC_E_DISCONNECTED = 0x80010108, - RPC_E_RETRY = 0x80010109, - RPC_E_SERVERCALL_RETRYLATER = 0x8001010A, - RPC_E_SERVERCALL_REJECTED = 0x8001010B, - RPC_E_INVALID_CALLDATA = 0x8001010C, - RPC_E_CANTCALLOUT_ININPUTSYNCCALL = 0x8001010D, - RPC_E_WRONG_THREAD = 0x8001010E, - RPC_E_THREAD_NOT_INIT = 0x8001010F, - RPC_E_UNEXPECTED = 0x8001FFFF, - - DISP_E_UNKNOWNINTERFACE = 0x80020001, - DISP_E_MEMBERNOTFOUND = 0x80020003, - DISP_E_PARAMNOTFOUND = 0x80020004, - DISP_E_TYPEMISMATCH = 0x80020005, - DISP_E_UNKNOWNNAME = 0x80020006, - DISP_E_NONAMEDARGS = 0x80020007, - DISP_E_BADVARTYPE = 0x80020008, - DISP_E_EXCEPTION = 0x80020009, - DISP_E_OVERFLOW = 0x8002000A, - DISP_E_BADINDEX = 0x8002000B, - DISP_E_UNKNOWNLCID = 0x8002000C, - DISP_E_ARRAYISLOCKED = 0x8002000D, - DISP_E_BADPARAMCOUNT = 0x8002000E, - DISP_E_PARAMNOTOPTIONAL = 0x8002000F, - DISP_E_BADCALLEE = 0x80020010, - DISP_E_NOTACOLLECTION = 0x80020011, - DISP_E_DIVBYZERO = 0x80020012, - - TYPE_E_BUFFERTOOSMALL = 0x80028016, - TYPE_E_INVDATAREAD = 0x80028018, - TYPE_E_UNSUPFORMAT = 0x80028019, - TYPE_E_REGISTRYACCESS = 0x8002801C, - TYPE_E_LIBNOTREGISTERED = 0x8002801D, - TYPE_E_UNDEFINEDTYPE = 0x80028027, - TYPE_E_QUALIFIEDNAMEDISALLOWED = 0x80028028, - TYPE_E_INVALIDSTATE = 0x80028029, - TYPE_E_WRONGTYPEKIND = 0x8002802A, - TYPE_E_ELEMENTNOTFOUND = 0x8002802B, - TYPE_E_AMBIGUOUSNAME = 0x8002802C, - TYPE_E_NAMECONFLICT = 0x8002802D, - TYPE_E_UNKNOWNLCID = 0x8002802E, - TYPE_E_DLLFUNCTIONNOTFOUND = 0x8002802F, - TYPE_E_BADMODULEKIND = 0x800288BD, - TYPE_E_SIZETOOBIG = 0x800288C5, - TYPE_E_DUPLICATEID = 0x800288C6, - TYPE_E_INVALIDID = 0x800288CF, - TYPE_E_TYPEMISMATCH = 0x80028CA0, - TYPE_E_OUTOFBOUNDS = 0x80028CA1, - TYPE_E_IOERROR = 0x80028CA2, - TYPE_E_CANTCREATETMPFILE = 0x80028CA3, - TYPE_E_CANTLOADLIBRARY = 0x80029C4A, - TYPE_E_INCONSISTENTPROPFUNCS = 0x80029C83, - TYPE_E_CIRCULARTYPE = 0x80029C84, - - STG_E_INVALIDFUNCTION = 0x80030001, - STG_E_FILENOTFOUND = 0x80030002, - STG_E_PATHNOTFOUND = 0x80030003, - STG_E_TOOMANYOPENFILES = 0x80030004, - STG_E_ACCESSDENIED = 0x80030005, - STG_E_INVALIDHANDLE = 0x80030006, - STG_E_INSUFFICIENTMEMORY = 0x80030008, - STG_E_INVALIDPOINTER = 0x80030009, - STG_E_NOMOREFILES = 0x80030012, - STG_E_DISKISWRITEPROTECTED = 0x80030013, - STG_E_SEEKERROR = 0x80030019, - STG_E_WRITEFAULT = 0x8003001D, - STG_E_READFAULT = 0x8003001E, - STG_E_SHAREVIOLATION = 0x80030020, - STG_E_LOCKVIOLATION = 0x80030021, - STG_E_FILEALREADYEXISTS = 0x80030050, - STG_E_INVALIDPARAMETER = 0x80030057, - STG_E_MEDIUMFULL = 0x80030070, - STG_E_ABNORMALAPIEXIT = 0x800300FA, - STG_E_INVALIDHEADER = 0x800300FB, - STG_E_INVALIDNAME = 0x800300FC, - STG_E_UNKNOWN = 0x800300FD, - STG_E_UNIMPLEMENTEDFUNCTION = 0x800300FE, - STG_E_INVALIDFLAG = 0x800300FF, - STG_E_INUSE = 0x80030100, - STG_E_NOTCURRENT = 0x80030101, - STG_E_REVERTED = 0x80030102, - STG_E_CANTSAVE = 0x80030103, - STG_E_OLDFORMAT = 0x80030104, - STG_E_OLDDLL = 0x80030105, - STG_E_SHAREREQUIRED = 0x80030106, - STG_E_NOTFILEBASEDSTORAGE = 0x80030107, - STG_E_EXTANTMARSHALLINGS = 0x80030108, - STG_S_CONVERTED = 0x00030200, - - OLE_E_FIRST = 0x80040000, - OLE_S_FIRST = 0x00040000, - OLE_E_OLEVERB = 0x80040000, - OLE_S_USEREG = 0x00040000, - OLE_E_ADVF = 0x80040001, - OLE_S_STATIC = 0x00040001, - OLE_E_ENUM_NOMORE = 0x80040002, - OLE_S_MAC_CLIPFORMAT = 0x00040002, - OLE_E_ADVISENOTSUPPORTED = 0x80040003, - OLE_E_NOCONNECTION = 0x80040004, - OLE_E_NOTRUNNING = 0x80040005, - OLE_E_NOCACHE = 0x80040006, - OLE_E_BLANK = 0x80040007, - OLE_E_CLASSDIFF = 0x80040008, - OLE_E_CANT_GETMONIKER = 0x80040009, - OLE_E_CANT_BINDTOSOURCE = 0x8004000A, - OLE_E_STATIC = 0x8004000B, - OLE_E_PROMPTSAVECANCELLED = 0x8004000C, - OLE_E_INVALIDRECT = 0x8004000D, - OLE_E_WRONGCOMPOBJ = 0x8004000E, - OLE_E_INVALIDHWND = 0x8004000F, - OLE_E_NOT_INPLACEACTIVE = 0x80040010, - OLE_E_CANTCONVERT = 0x80040011, - OLE_E_NOSTORAGE = 0x80040012, - - DV_E_FORMATETC = 0x80040064, - DV_E_DVTARGETDEVICE = 0x80040065, - DV_E_STGMEDIUM = 0x80040066, - DV_E_STATDATA = 0x80040067, - DV_E_LINDEX = 0x80040068, - DV_E_TYMED = 0x80040069, - DV_E_CLIPFORMAT = 0x8004006A, - DV_E_DVASPECT = 0x8004006B, - DV_E_DVTARGETDEVICE_SIZE = 0x8004006C, - DV_E_NOIVIEWOBJECT = 0x8004006D, - - OLE_E_LAST = 0x800400FF, - OLE_S_LAST = 0x000400FF, - DRAGDROP_E_FIRST = 0x80040100, - DRAGDROP_S_FIRST = 0x00040100, - DRAGDROP_E_NOTREGISTERED = 0x80040100, - DRAGDROP_S_DROP = 0x00040100, - DRAGDROP_E_ALREADYREGISTERED = 0x80040101, - DRAGDROP_S_CANCEL = 0x00040101, - DRAGDROP_E_INVALIDHWND = 0x80040102, - DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102, - DRAGDROP_E_LAST = 0x8004010F, - DRAGDROP_S_LAST = 0x0004010F, - CLASSFACTORY_E_FIRST = 0x80040110, - CLASSFACTORY_S_FIRST = 0x00040110, - CLASS_E_NOAGGREGATION = 0x80040110, - CLASS_E_CLASSNOTAVAILABLE = 0x80040111, - CLASSFACTORY_E_LAST = 0x8004011F, - CLASSFACTORY_S_LAST = 0x0004011F, - MARSHAL_E_FIRST = 0x80040120, - MARSHAL_S_FIRST = 0x00040120, - MARSHAL_E_LAST = 0x8004012F, - MARSHAL_S_LAST = 0x0004012F, - DATA_E_FIRST = 0x80040130, - DATA_S_FIRST = 0x00040130, - DATA_S_SAMEFORMATETC = 0x00040130, - DATA_E_LAST = 0x8004013F, - DATA_S_LAST = 0x0004013F, - VIEW_E_FIRST = 0x80040140, - VIEW_S_FIRST = 0x00040140, - VIEW_E_DRAW = 0x80040140, - VIEW_S_ALREADY_FROZEN = 0x00040140, - VIEW_E_LAST = 0x8004014F, - VIEW_S_LAST = 0x0004014F, - REGDB_E_FIRST = 0x80040150, - REGDB_S_FIRST = 0x00040150, - REGDB_E_READREGDB = 0x80040150, - REGDB_E_WRITEREGDB = 0x80040151, - REGDB_E_KEYMISSING = 0x80040152, - REGDB_E_INVALIDVALUE = 0x80040153, - REGDB_E_CLASSNOTREG = 0x80040154, - REGDB_E_IIDNOTREG = 0x80040155, - REGDB_E_LAST = 0x8004015F, - REGDB_S_LAST = 0x0004015F, - CACHE_E_FIRST = 0x80040170, - CACHE_S_FIRST = 0x00040170, - CACHE_E_NOCACHE_UPDATED = 0x80040170, - CACHE_S_FORMATETC_NOTSUPPORTED = 0x00040170, - CACHE_S_SAMECACHE = 0x00040171, - CACHE_S_SOMECACHES_NOTUPDATED = 0x00040172, - CACHE_E_LAST = 0x8004017F, - CACHE_S_LAST = 0x0004017F, - OLEOBJ_E_FIRST = 0x80040180, - OLEOBJ_S_FIRST = 0x00040180, - OLEOBJ_E_NOVERBS = 0x80040180, - OLEOBJ_S_INVALIDVERB = 0x00040180, - OLEOBJ_E_INVALIDVERB = 0x80040181, - OLEOBJ_S_CANNOT_DOVERB_NOW = 0x00040181, - OLEOBJ_S_INVALIDHWND = 0x00040182, - OLEOBJ_E_LAST = 0x8004018F, - OLEOBJ_S_LAST = 0x0004018F, - CLIENTSITE_E_FIRST = 0x80040190, - CLIENTSITE_S_FIRST = 0x00040190, - CLIENTSITE_E_LAST = 0x8004019F, - CLIENTSITE_S_LAST = 0x0004019F, - INPLACE_E_NOTUNDOABLE = 0x800401A0, - INPLACE_E_FIRST = 0x800401A0, - INPLACE_S_FIRST = 0x000401A0, - INPLACE_S_TRUNCATED = 0x000401A0, - INPLACE_E_NOTOOLSPACE = 0x800401A1, - INPLACE_E_LAST = 0x800401AF, - INPLACE_S_LAST = 0x000401AF, - ENUM_E_FIRST = 0x800401B0, - ENUM_S_FIRST = 0x000401B0, - ENUM_E_LAST = 0x800401BF, - ENUM_S_LAST = 0x000401BF, - CONVERT10_E_FIRST = 0x800401C0, - CONVERT10_S_FIRST = 0x000401C0, - CONVERT10_E_OLESTREAM_GET = 0x800401C0, - CONVERT10_S_NO_PRESENTATION = 0x000401C0, - CONVERT10_E_OLESTREAM_PUT = 0x800401C1, - CONVERT10_E_OLESTREAM_FMT = 0x800401C2, - CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = 0x800401C3, - CONVERT10_E_STG_FMT = 0x800401C4, - CONVERT10_E_STG_NO_STD_STREAM = 0x800401C5, - CONVERT10_E_STG_DIB_TO_BITMAP = 0x800401C6, - CONVERT10_E_LAST = 0x800401CF, - CONVERT10_S_LAST = 0x000401CF, - CLIPBRD_E_FIRST = 0x800401D0, - CLIPBRD_S_FIRST = 0x000401D0, - CLIPBRD_E_CANT_OPEN = 0x800401D0, - CLIPBRD_E_CANT_EMPTY = 0x800401D1, - CLIPBRD_E_CANT_SET = 0x800401D2, - CLIPBRD_E_BAD_DATA = 0x800401D3, - CLIPBRD_E_CANT_CLOSE = 0x800401D4, - CLIPBRD_E_LAST = 0x800401DF, - CLIPBRD_S_LAST = 0x000401DF, - MK_E_FIRST = 0x800401E0, - MK_S_FIRST = 0x000401E0, - MK_E_CONNECTMANUALLY = 0x800401E0, - MK_E_EXCEEDEDDEADLINE = 0x800401E1, - MK_E_NEEDGENERIC = 0x800401E2, - MK_S_REDUCED_TO_SELF = 0x000401E2, - MK_E_UNAVAILABLE = 0x800401E3, - MK_E_SYNTAX = 0x800401E4, - MK_S_ME = 0x000401E4, - MK_E_NOOBJECT = 0x800401E5, - MK_S_HIM = 0x000401E5, - MK_E_INVALIDEXTENSION = 0x800401E6, - MK_S_US = 0x000401E6, - MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = 0x800401E7, - MK_S_MONIKERALREADYREGISTERED = 0x000401E7, - MK_E_NOTBINDABLE = 0x800401E8, - MK_E_NOTBOUND = 0x800401E9, - MK_E_CANTOPENFILE = 0x800401EA, - MK_E_MUSTBOTHERUSER = 0x800401EB, - MK_E_NOINVERSE = 0x800401EC, - MK_E_NOSTORAGE = 0x800401ED, - MK_E_NOPREFIX = 0x800401EE, - MK_E_LAST = 0x800401EF, - MK_S_LAST = 0x000401EF, - MK_E_ENUMERATION_FAILED = 0x800401EF, - CO_E_FIRST = 0x800401F0, - CO_S_FIRST = 0x000401F0, - CO_E_NOTINITIALIZED = 0x800401F0, - CO_E_ALREADYINITIALIZED = 0x800401F1, - CO_E_CANTDETERMINECLASS = 0x800401F2, - CO_E_CLASSSTRING = 0x800401F3, - CO_E_IIDSTRING = 0x800401F4, - CO_E_APPNOTFOUND = 0x800401F5, - CO_E_APPSINGLEUSE = 0x800401F6, - CO_E_ERRORINAPP = 0x800401F7, - CO_E_DLLNOTFOUND = 0x800401F8, - CO_E_ERRORINDLL = 0x800401F9, - CO_E_WRONGOSFORAPP = 0x800401FA, - CO_E_OBJNOTREG = 0x800401FB, - CO_E_OBJISREG = 0x800401FC, - CO_E_OBJNOTCONNECTED = 0x800401FD, - CO_E_APPDIDNTREG = 0x800401FE, - CO_E_LAST = 0x800401FF, - CO_S_LAST = 0x000401FF, - CO_E_RELEASED = 0x800401FF, - - CO_E_CLASS_CREATE_FAILED = 0x80080001, - CO_E_SCM_ERROR = 0x80080002, - CO_E_SCM_RPC_FAILURE = 0x80080003, - CO_E_BAD_PATH = 0x80080004, - CO_E_SERVER_EXEC_FAILURE = 0x80080005, - CO_E_OBJSRV_RPC_FAILURE = 0x80080006, - MK_E_NO_NORMALIZED = 0x80080007, - CO_E_SERVER_STOPPING = 0x80080008, - MEM_E_INVALID_ROOT = 0x80080009, - MEM_E_INVALID_LINK = 0x80080010, - MEM_E_INVALID_SIZE = 0x80080011, - CO_S_NOTALLINTERFACES = 0x00080012, - - NTE_BAD_UID = 0x80090001, - NTE_BAD_HASH = 0x80090002, - NTE_BAD_KEY = 0x80090003, - NTE_BAD_LEN = 0x80090004, - NTE_BAD_DATA = 0x80090005, - NTE_BAD_SIGNATURE = 0x80090006, - NTE_BAD_VER = 0x80090007, - NTE_BAD_ALGID = 0x80090008, - NTE_BAD_FLAGS = 0x80090009, - NTE_BAD_TYPE = 0x8009000A, - NTE_BAD_KEY_STATE = 0x8009000B, - NTE_BAD_HASH_STATE = 0x8009000C, - NTE_NO_KEY = 0x8009000D, - NTE_NO_MEMORY = 0x8009000E, - NTE_EXISTS = 0x8009000F, - NTE_PERM = 0x80090010, - NTE_NOT_FOUND = 0x80090011, - NTE_DOUBLE_ENCRYPT = 0x80090012, - NTE_BAD_PROVIDER = 0x80090013, - NTE_BAD_PROV_TYPE = 0x80090014, - NTE_BAD_PUBLIC_KEY = 0x80090015, - NTE_BAD_KEYSET = 0x80090016, - NTE_PROV_TYPE_NOT_DEF = 0x80090017, - NTE_PROV_TYPE_ENTRY_BAD = 0x80090018, - NTE_KEYSET_NOT_DEF = 0x80090019, - NTE_KEYSET_ENTRY_BAD = 0x8009001A, - NTE_PROV_TYPE_NO_MATCH = 0x8009001B, - NTE_SIGNATURE_FILE_BAD = 0x8009001C, - NTE_PROVIDER_DLL_FAIL = 0x8009001D, - NTE_PROV_DLL_NOT_FOUND = 0x8009001E, - NTE_BAD_KEYSET_PARAM = 0x8009001F, - NTE_FAIL = 0x80090020, - NTE_SYS_ERR = 0x80090021 -} - - -enum : bool { - SEVERITY_SUCCESS = 0, - SEVERITY_ERROR = 1 -} - -enum : uint { - FACILITY_NULL = 0, - FACILITY_RPC, - FACILITY_DISPATCH, - FACILITY_STORAGE, - FACILITY_ITF, // = 4 - FACILITY_WIN32 = 7, - FACILITY_WINDOWS = 8, - FACILITY_CONTROL = 10, - FACILITY_NT_BIT = 0x10000000 -} - -// C Macros - -bool SUCCEEDED(HRESULT Status) { - return Status >= 0; -} - -bool FAILED(HRESULT Status) { - return Status < 0; -} - -bool IS_ERROR(HRESULT Status) { - return (Status >>> 31) == SEVERITY_ERROR; -} - -ushort HRESULT_CODE(HRESULT r) { - return cast(ushort) (r & 0xFFFF); -} - -ushort SCODE_CODE(SCODE r) { - return cast(ushort) (r & 0xFFFF); -} - -ushort HRESULT_FACILITY(HRESULT r) { - return cast(ushort) ((r>>16) & 0x1fff); -} - -ushort SCODE_FACILITY(SCODE r) { - return cast(ushort) ((r>>16) & 0x1fff); -} - -ushort HRESULT_SEVERITY(HRESULT r) { - return cast(ushort) ((r>>31) & 0x1); -} - -ushort SCODE_SEVERITY(SCODE r) { - return cast(ushort) ((r>>31) & 0x1); -} - -HRESULT MAKE_HRESULT(bool s, uint f, uint c) { - return (s << 31) | (f << 16) | c; -} - -SCODE MAKE_SCODE(bool s, uint f, uint c) { - return (s << 31) | (f << 16) | c; -} - -SCODE GetScode(HRESULT hr) { - return hr; -} - -HRESULT ResultFromScode(SCODE c) { - return c; -} - -HRESULT HRESULT_FROM_NT(HRESULT x) { - return x | FACILITY_NT_BIT; -} - -HRESULT HRESULT_FROM_WIN32(HRESULT x) { - return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; -} - -HRESULT PropagateResult(HRESULT hrPrevious, SCODE scBase) { - return scBase; -} +/***********************************************************************\ +* winerror.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winerror; + +/* Comments from the Mingw header: + * WAIT_TIMEOUT is also defined in winbase.h + */ + +private import win32.windef; + +alias int SCODE; // was in win32.wtypes. + +enum : uint { + ERROR_SUCCESS = 0, + NO_ERROR = 0, + ERROR_INVALID_FUNCTION, + ERROR_FILE_NOT_FOUND, + ERROR_PATH_NOT_FOUND, + ERROR_TOO_MANY_OPEN_FILES, + ERROR_ACCESS_DENIED, + ERROR_INVALID_HANDLE, + ERROR_ARENA_TRASHED, + ERROR_NOT_ENOUGH_MEMORY, + ERROR_INVALID_BLOCK, + ERROR_BAD_ENVIRONMENT, + ERROR_BAD_FORMAT, + ERROR_INVALID_ACCESS, + ERROR_INVALID_DATA, + ERROR_OUTOFMEMORY, + ERROR_INVALID_DRIVE, + ERROR_CURRENT_DIRECTORY, + ERROR_NOT_SAME_DEVICE, + ERROR_NO_MORE_FILES, + ERROR_WRITE_PROTECT, + ERROR_BAD_UNIT, + ERROR_NOT_READY, + ERROR_BAD_COMMAND, + ERROR_CRC, + ERROR_BAD_LENGTH, + ERROR_SEEK, + ERROR_NOT_DOS_DISK, + ERROR_SECTOR_NOT_FOUND, + ERROR_OUT_OF_PAPER, + ERROR_WRITE_FAULT, + ERROR_READ_FAULT, + ERROR_GEN_FAILURE, + ERROR_SHARING_VIOLATION, + ERROR_LOCK_VIOLATION, + 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, + ERROR_DUP_NAME, + ERROR_BAD_NETPATH, + ERROR_NETWORK_BUSY, + ERROR_DEV_NOT_EXIST, + ERROR_TOO_MANY_CMDS, + ERROR_ADAP_HDW_ERR, + ERROR_BAD_NET_RESP, + ERROR_UNEXP_NET_ERR, + ERROR_BAD_REM_ADAP, + ERROR_PRINTQ_FULL, + ERROR_NO_SPOOL_SPACE, + ERROR_PRINT_CANCELLED, + ERROR_NETNAME_DELETED, + ERROR_NETWORK_ACCESS_DENIED, + ERROR_BAD_DEV_TYPE, + ERROR_BAD_NET_NAME, + ERROR_TOO_MANY_NAMES, + ERROR_TOO_MANY_SESS, + ERROR_SHARING_PAUSED, + ERROR_REQ_NOT_ACCEP, + ERROR_REDIR_PAUSED, // = 72 + ERROR_FILE_EXISTS = 80, + ERROR_CANNOT_MAKE = 82, + ERROR_FAIL_I24, + ERROR_OUT_OF_STRUCTURES, + ERROR_ALREADY_ASSIGNED, + ERROR_INVALID_PASSWORD, + ERROR_INVALID_PARAMETER, + ERROR_NET_WRITE_FAULT, + ERROR_NO_PROC_SLOTS, // = 89 + ERROR_TOO_MANY_SEMAPHORES = 100, + ERROR_EXCL_SEM_ALREADY_OWNED, + ERROR_SEM_IS_SET, + ERROR_TOO_MANY_SEM_REQUESTS, + ERROR_INVALID_AT_INTERRUPT_TIME, + ERROR_SEM_OWNER_DIED, + ERROR_SEM_USER_LIMIT, + ERROR_DISK_CHANGE, + ERROR_DRIVE_LOCKED, + ERROR_BROKEN_PIPE, + ERROR_OPEN_FAILED, + ERROR_BUFFER_OVERFLOW, + ERROR_DISK_FULL, + ERROR_NO_MORE_SEARCH_HANDLES, + ERROR_INVALID_TARGET_HANDLE, // = 114 + ERROR_INVALID_CATEGORY = 117, + ERROR_INVALID_VERIFY_SWITCH, + ERROR_BAD_DRIVER_LEVEL, + ERROR_CALL_NOT_IMPLEMENTED, + ERROR_SEM_TIMEOUT, + ERROR_INSUFFICIENT_BUFFER, + ERROR_INVALID_NAME, + ERROR_INVALID_LEVEL, + ERROR_NO_VOLUME_LABEL, + ERROR_MOD_NOT_FOUND, + ERROR_PROC_NOT_FOUND, + ERROR_WAIT_NO_CHILDREN, + ERROR_CHILD_NOT_COMPLETE, + ERROR_DIRECT_ACCESS_HANDLE, + ERROR_NEGATIVE_SEEK, + ERROR_SEEK_ON_DEVICE, + ERROR_IS_JOIN_TARGET, + ERROR_IS_JOINED, + ERROR_IS_SUBSTED, + ERROR_NOT_JOINED, + ERROR_NOT_SUBSTED, + ERROR_JOIN_TO_JOIN, + ERROR_SUBST_TO_SUBST, + ERROR_JOIN_TO_SUBST, + ERROR_SUBST_TO_JOIN, + ERROR_BUSY_DRIVE, + ERROR_SAME_DRIVE, + ERROR_DIR_NOT_ROOT, + ERROR_DIR_NOT_EMPTY, + ERROR_IS_SUBST_PATH, + ERROR_IS_JOIN_PATH, + ERROR_PATH_BUSY, + ERROR_IS_SUBST_TARGET, + ERROR_SYSTEM_TRACE, + ERROR_INVALID_EVENT_COUNT, + ERROR_TOO_MANY_MUXWAITERS, + ERROR_INVALID_LIST_FORMAT, + ERROR_LABEL_TOO_LONG, + ERROR_TOO_MANY_TCBS, + ERROR_SIGNAL_REFUSED, + ERROR_DISCARDED, + ERROR_NOT_LOCKED, + ERROR_BAD_THREADID_ADDR, + ERROR_BAD_ARGUMENTS, + ERROR_BAD_PATHNAME, + 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, + ERROR_INVALID_STARTING_CODESEG, + ERROR_INVALID_STACKSEG, + ERROR_INVALID_MODULETYPE, + ERROR_INVALID_EXE_SIGNATURE, + ERROR_EXE_MARKED_INVALID, + ERROR_BAD_EXE_FORMAT, + ERROR_ITERATED_DATA_EXCEEDS_64k, + ERROR_INVALID_MINALLOCSIZE, + ERROR_DYNLINK_FROM_INVALID_RING, + ERROR_IOPL_NOT_ENABLED, + ERROR_INVALID_SEGDPL, + ERROR_AUTODATASEG_EXCEEDS_64k, + ERROR_RING2SEG_MUST_BE_MOVABLE, + ERROR_RELOC_CHAIN_XEEDS_SEGLIM, + ERROR_INFLOOP_IN_RELOC_CHAIN, + ERROR_ENVVAR_NOT_FOUND, // = 203 + ERROR_NO_SIGNAL_SENT = 205, + ERROR_FILENAME_EXCED_RANGE, + ERROR_RING2_STACK_IN_USE, + ERROR_META_EXPANSION_TOO_LONG, + ERROR_INVALID_SIGNAL_NUMBER, + ERROR_THREAD_1_INACTIVE, // = 210 + ERROR_LOCKED = 212, + ERROR_TOO_MANY_MODULES = 214, + ERROR_NESTING_NOT_ALLOWED, + ERROR_EXE_MACHINE_TYPE_MISMATCH, + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY, + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY, // = 218 + ERROR_BAD_PIPE = 230, + ERROR_PIPE_BUSY, + ERROR_NO_DATA, + ERROR_PIPE_NOT_CONNECTED, + ERROR_MORE_DATA, // = 234 + ERROR_VC_DISCONNECTED = 240, + ERROR_INVALID_EA_NAME = 254, + ERROR_EA_LIST_INCONSISTENT, // = 255 + WAIT_TIMEOUT = 258, + ERROR_NO_MORE_ITEMS, // = 259 + ERROR_CANNOT_COPY = 266, + ERROR_DIRECTORY, // = 267 + ERROR_EAS_DIDNT_FIT = 275, + ERROR_EA_FILE_CORRUPT, + ERROR_EA_TABLE_FULL, + ERROR_INVALID_EA_HANDLE, // = 278 + ERROR_EAS_NOT_SUPPORTED = 282, + ERROR_NOT_OWNER = 288, + ERROR_TOO_MANY_POSTS = 298, + ERROR_PARTIAL_COPY, + ERROR_OPLOCK_NOT_GRANTED, + ERROR_INVALID_OPLOCK_PROTOCOL, + ERROR_DISK_TOO_FRAGMENTED, + ERROR_DELETE_PENDING, // = 303 + ERROR_MR_MID_NOT_FOUND = 317, + ERROR_SCOPE_NOT_FOUND, // = 318 + ERROR_INVALID_ADDRESS = 487, + ERROR_ARITHMETIC_OVERFLOW = 534, + ERROR_PIPE_CONNECTED, + ERROR_PIPE_LISTENING, // = 536 + ERROR_EA_ACCESS_DENIED = 994, + ERROR_OPERATION_ABORTED, + ERROR_IO_INCOMPLETE, + ERROR_IO_PENDING, + ERROR_NOACCESS, + ERROR_SWAPERROR, // = 999 + ERROR_STACK_OVERFLOW = 1001, + ERROR_INVALID_MESSAGE, + ERROR_CAN_NOT_COMPLETE, + ERROR_INVALID_FLAGS, + ERROR_UNRECOGNIZED_VOLUME, + ERROR_FILE_INVALID, + ERROR_FULLSCREEN_MODE, + ERROR_NO_TOKEN, + ERROR_BADDB, + ERROR_BADKEY, + ERROR_CANTOPEN, + ERROR_CANTREAD, + ERROR_CANTWRITE, + ERROR_REGISTRY_RECOVERED, + ERROR_REGISTRY_CORRUPT, + ERROR_REGISTRY_IO_FAILED, + ERROR_NOT_REGISTRY_FILE, + ERROR_KEY_DELETED, + ERROR_NO_LOG_SPACE, + ERROR_KEY_HAS_CHILDREN, + ERROR_CHILD_MUST_BE_VOLATILE, + ERROR_NOTIFY_ENUM_DIR, // = 1022 + ERROR_DEPENDENT_SERVICES_RUNNING = 1051, + ERROR_INVALID_SERVICE_CONTROL, + ERROR_SERVICE_REQUEST_TIMEOUT, + ERROR_SERVICE_NO_THREAD, + ERROR_SERVICE_DATABASE_LOCKED, + ERROR_SERVICE_ALREADY_RUNNING, + ERROR_INVALID_SERVICE_ACCOUNT, + ERROR_SERVICE_DISABLED, + ERROR_CIRCULAR_DEPENDENCY, + ERROR_SERVICE_DOES_NOT_EXIST, + ERROR_SERVICE_CANNOT_ACCEPT_CTRL, + ERROR_SERVICE_NOT_ACTIVE, + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, + ERROR_EXCEPTION_IN_SERVICE, + ERROR_DATABASE_DOES_NOT_EXIST, + ERROR_SERVICE_SPECIFIC_ERROR, + ERROR_PROCESS_ABORTED, + ERROR_SERVICE_DEPENDENCY_FAIL, + ERROR_SERVICE_LOGON_FAILED, + ERROR_SERVICE_START_HANG, + ERROR_INVALID_SERVICE_LOCK, + ERROR_SERVICE_MARKED_FOR_DELETE, + ERROR_SERVICE_EXISTS, + ERROR_ALREADY_RUNNING_LKG, + ERROR_SERVICE_DEPENDENCY_DELETED, + ERROR_BOOT_ALREADY_ACCEPTED, + ERROR_SERVICE_NEVER_STARTED, + ERROR_DUPLICATE_SERVICE_NAME, + ERROR_DIFFERENT_SERVICE_ACCOUNT, + ERROR_CANNOT_DETECT_DRIVER_FAILURE, + ERROR_CANNOT_DETECT_PROCESS_ABORT, + ERROR_NO_RECOVERY_PROGRAM, + ERROR_SERVICE_NOT_IN_EXE, + ERROR_NOT_SAFEBOOT_SERVICE, // = 1084 + ERROR_END_OF_MEDIA = 1100, + ERROR_FILEMARK_DETECTED, + ERROR_BEGINNING_OF_MEDIA, + ERROR_SETMARK_DETECTED, + ERROR_NO_DATA_DETECTED, + ERROR_PARTITION_FAILURE, + ERROR_INVALID_BLOCK_LENGTH, + ERROR_DEVICE_NOT_PARTITIONED, + ERROR_UNABLE_TO_LOCK_MEDIA, + ERROR_UNABLE_TO_UNLOAD_MEDIA, + ERROR_MEDIA_CHANGED, + ERROR_BUS_RESET, + ERROR_NO_MEDIA_IN_DRIVE, + ERROR_NO_UNICODE_TRANSLATION, + ERROR_DLL_INIT_FAILED, + ERROR_SHUTDOWN_IN_PROGRESS, + ERROR_NO_SHUTDOWN_IN_PROGRESS, + ERROR_IO_DEVICE, + ERROR_SERIAL_NO_DEVICE, + ERROR_IRQ_BUSY, + ERROR_MORE_WRITES, + ERROR_COUNTER_TIMEOUT, + ERROR_FLOPPY_ID_MARK_NOT_FOUND, + ERROR_FLOPPY_WRONG_CYLINDER, + ERROR_FLOPPY_UNKNOWN_ERROR, + ERROR_FLOPPY_BAD_REGISTERS, + ERROR_DISK_RECALIBRATE_FAILED, + ERROR_DISK_OPERATION_FAILED, + ERROR_DISK_RESET_FAILED, + ERROR_EOM_OVERFLOW, + ERROR_NOT_ENOUGH_SERVER_MEMORY, + ERROR_POSSIBLE_DEADLOCK, + ERROR_MAPPED_ALIGNMENT, // = 1132 + ERROR_SET_POWER_STATE_VETOED = 1140, + ERROR_SET_POWER_STATE_FAILED, + ERROR_TOO_MANY_LINKS, // = 1142 + ERROR_OLD_WIN_VERSION = 1150, + ERROR_APP_WRONG_OS, + ERROR_SINGLE_INSTANCE_APP, + ERROR_RMODE_APP, + ERROR_INVALID_DLL, + ERROR_NO_ASSOCIATION, + ERROR_DDE_FAIL, + ERROR_DLL_NOT_FOUND, + ERROR_NO_MORE_USER_HANDLES, + ERROR_MESSAGE_SYNC_ONLY, + ERROR_SOURCE_ELEMENT_EMPTY, + ERROR_DESTINATION_ELEMENT_FULL, + ERROR_ILLEGAL_ELEMENT_ADDRESS, + ERROR_MAGAZINE_NOT_PRESENT, + ERROR_DEVICE_REINITIALIZATION_NEEDED, + ERROR_DEVICE_REQUIRES_CLEANING, + ERROR_DEVICE_DOOR_OPEN, + ERROR_DEVICE_NOT_CONNECTED, + ERROR_NOT_FOUND, + ERROR_NO_MATCH, + ERROR_SET_NOT_FOUND, + ERROR_POINT_NOT_FOUND, + ERROR_NO_TRACKING_SERVICE, + ERROR_NO_VOLUME_ID, // = 1173 + ERROR_UNABLE_TO_REMOVE_REPLACED = 1175, + ERROR_UNABLE_TO_MOVE_REPLACEMENT, + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2, + ERROR_JOURNAL_DELETE_IN_PROGRESS, + ERROR_JOURNAL_NOT_ACTIVE, + ERROR_POTENTIAL_FILE_FOUND, + ERROR_JOURNAL_ENTRY_DELETED, // = 1181 + ERROR_BAD_DEVICE = 1200, + ERROR_CONNECTION_UNAVAIL, + ERROR_DEVICE_ALREADY_REMEMBERED, + ERROR_NO_NET_OR_BAD_PATH, + ERROR_BAD_PROVIDER, + ERROR_CANNOT_OPEN_PROFILE, + ERROR_BAD_PROFILE, + ERROR_NOT_CONTAINER, + ERROR_EXTENDED_ERROR, + ERROR_INVALID_GROUPNAME, + ERROR_INVALID_COMPUTERNAME, + ERROR_INVALID_EVENTNAME, + ERROR_INVALID_DOMAINNAME, + ERROR_INVALID_SERVICENAME, + ERROR_INVALID_NETNAME, + ERROR_INVALID_SHARENAME, + ERROR_INVALID_PASSWORDNAME, + ERROR_INVALID_MESSAGENAME, + ERROR_INVALID_MESSAGEDEST, + ERROR_SESSION_CREDENTIAL_CONFLICT, + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED, + ERROR_DUP_DOMAINNAME, + ERROR_NO_NETWORK, + ERROR_CANCELLED, + ERROR_USER_MAPPED_FILE, + ERROR_CONNECTION_REFUSED, + ERROR_GRACEFUL_DISCONNECT, + ERROR_ADDRESS_ALREADY_ASSOCIATED, + ERROR_ADDRESS_NOT_ASSOCIATED, + ERROR_CONNECTION_INVALID, + ERROR_CONNECTION_ACTIVE, + ERROR_NETWORK_UNREACHABLE, + ERROR_HOST_UNREACHABLE, + ERROR_PROTOCOL_UNREACHABLE, + ERROR_PORT_UNREACHABLE, + ERROR_REQUEST_ABORTED, + ERROR_CONNECTION_ABORTED, + ERROR_RETRY, + ERROR_CONNECTION_COUNT_LIMIT, + ERROR_LOGIN_TIME_RESTRICTION, + ERROR_LOGIN_WKSTA_RESTRICTION, + ERROR_INCORRECT_ADDRESS, + ERROR_ALREADY_REGISTERED, + ERROR_SERVICE_NOT_FOUND, + ERROR_NOT_AUTHENTICATED, + ERROR_NOT_LOGGED_ON, + ERROR_CONTINUE, + ERROR_ALREADY_INITIALIZED, + ERROR_NO_MORE_DEVICES, + ERROR_NO_SUCH_SITE, + ERROR_DOMAIN_CONTROLLER_EXISTS, + ERROR_ONLY_IF_CONNECTED, + ERROR_OVERRIDE_NOCHANGES, + ERROR_BAD_USER_PROFILE, + ERROR_NOT_SUPPORTED_ON_SBS, + ERROR_SERVER_SHUTDOWN_IN_PROGRESS, + ERROR_HOST_DOWN, + ERROR_NON_ACCOUNT_SID, + ERROR_NON_DOMAIN_SID, + ERROR_APPHELP_BLOCK, + ERROR_ACCESS_DISABLED_BY_POLICY, + ERROR_REG_NAT_CONSUMPTION, + ERROR_CSCSHARE_OFFLINE, + ERROR_PKINIT_FAILURE, + ERROR_SMARTCARD_SUBSYSTEM_FAILURE, + ERROR_DOWNGRADE_DETECTED, + SEC_E_SMARTCARD_CERT_REVOKED, + SEC_E_ISSUING_CA_UNTRUSTED, + SEC_E_REVOCATION_OFFLINE_C, + SEC_E_PKINIT_CLIENT_FAILUR, + SEC_E_SMARTCARD_CERT_EXPIRED, + ERROR_MACHINE_LOCKED, // = 1271 + ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273, + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED, + ERROR_DRIVER_BLOCKED, + ERROR_INVALID_IMPORT_OF_NON_DLL, + ERROR_ACCESS_DISABLED_WEBBLADE, + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER, + ERROR_RECOVERY_FAILURE, + ERROR_ALREADY_FIBER, + ERROR_ALREADY_THREAD, + ERROR_STACK_BUFFER_OVERRUN, + ERROR_PARAMETER_QUOTA_EXCEEDED, + ERROR_DEBUGGER_INACTIVE, // = 1284 + ERROR_NOT_ALL_ASSIGNED = 1300, + ERROR_SOME_NOT_MAPPED, + ERROR_NO_QUOTAS_FOR_ACCOUNT, + ERROR_LOCAL_USER_SESSION_KEY, + ERROR_NULL_LM_PASSWORD, + ERROR_UNKNOWN_REVISION, + ERROR_REVISION_MISMATCH, + ERROR_INVALID_OWNER, + ERROR_INVALID_PRIMARY_GROUP, + ERROR_NO_IMPERSONATION_TOKEN, + ERROR_CANT_DISABLE_MANDATORY, + ERROR_NO_LOGON_SERVERS, + ERROR_NO_SUCH_LOGON_SESSION, + ERROR_NO_SUCH_PRIVILEGE, + ERROR_PRIVILEGE_NOT_HELD, + ERROR_INVALID_ACCOUNT_NAME, + ERROR_USER_EXISTS, + ERROR_NO_SUCH_USER, + ERROR_GROUP_EXISTS, + ERROR_NO_SUCH_GROUP, + ERROR_MEMBER_IN_GROUP, + ERROR_MEMBER_NOT_IN_GROUP, + ERROR_LAST_ADMIN, + ERROR_WRONG_PASSWORD, + ERROR_ILL_FORMED_PASSWORD, + ERROR_PASSWORD_RESTRICTION, + ERROR_LOGON_FAILURE, + ERROR_ACCOUNT_RESTRICTION, + ERROR_INVALID_LOGON_HOURS, + ERROR_INVALID_WORKSTATION, + ERROR_PASSWORD_EXPIRED, + ERROR_ACCOUNT_DISABLED, + ERROR_NONE_MAPPED, + ERROR_TOO_MANY_LUIDS_REQUESTED, + ERROR_LUIDS_EXHAUSTED, + ERROR_INVALID_SUB_AUTHORITY, + ERROR_INVALID_ACL, + ERROR_INVALID_SID, + ERROR_INVALID_SECURITY_DESCR, // = 1338 + ERROR_BAD_INHERITANCE_ACL = 1340, + ERROR_SERVER_DISABLED, + ERROR_SERVER_NOT_DISABLED, + ERROR_INVALID_ID_AUTHORITY, + ERROR_ALLOTTED_SPACE_EXCEEDED, + ERROR_INVALID_GROUP_ATTRIBUTES, + ERROR_BAD_IMPERSONATION_LEVEL, + ERROR_CANT_OPEN_ANONYMOUS, + ERROR_BAD_VALIDATION_CLASS, + ERROR_BAD_TOKEN_TYPE, + ERROR_NO_SECURITY_ON_OBJECT, + ERROR_CANT_ACCESS_DOMAIN_INFO, + ERROR_INVALID_SERVER_STATE, + ERROR_INVALID_DOMAIN_STATE, + ERROR_INVALID_DOMAIN_ROLE, + ERROR_NO_SUCH_DOMAIN, + ERROR_DOMAIN_EXISTS, + ERROR_DOMAIN_LIMIT_EXCEEDED, + ERROR_INTERNAL_DB_CORRUPTION, + ERROR_INTERNAL_ERROR, + ERROR_GENERIC_NOT_MAPPED, + ERROR_BAD_DESCRIPTOR_FORMAT, + ERROR_NOT_LOGON_PROCESS, + ERROR_LOGON_SESSION_EXISTS, + ERROR_NO_SUCH_PACKAGE, + ERROR_BAD_LOGON_SESSION_STATE, + ERROR_LOGON_SESSION_COLLISION, + ERROR_INVALID_LOGON_TYPE, + ERROR_CANNOT_IMPERSONATE, + ERROR_RXACT_INVALID_STATE, + ERROR_RXACT_COMMIT_FAILURE, + ERROR_SPECIAL_ACCOUNT, + ERROR_SPECIAL_GROUP, + ERROR_SPECIAL_USER, + ERROR_MEMBERS_PRIMARY_GROUP, + ERROR_TOKEN_ALREADY_IN_USE, + ERROR_NO_SUCH_ALIAS, + ERROR_MEMBER_NOT_IN_ALIAS, + ERROR_MEMBER_IN_ALIAS, + ERROR_ALIAS_EXISTS, + ERROR_LOGON_NOT_GRANTED, + ERROR_TOO_MANY_SECRETS, + ERROR_SECRET_TOO_LONG, + ERROR_INTERNAL_DB_ERROR, + ERROR_TOO_MANY_CONTEXT_IDS, + ERROR_LOGON_TYPE_NOT_GRANTED, + ERROR_NT_CROSS_ENCRYPTION_REQUIRED, + ERROR_NO_SUCH_MEMBER, + ERROR_INVALID_MEMBER, + ERROR_TOO_MANY_SIDS, + ERROR_LM_CROSS_ENCRYPTION_REQUIRED, + ERROR_NO_INHERITANCE, + ERROR_FILE_CORRUPT, + ERROR_DISK_CORRUPT, + ERROR_NO_USER_SESSION_KEY, + ERROR_LICENSE_QUOTA_EXCEEDED, + ERROR_WRONG_TARGET_NAME, + ERROR_MUTUAL_AUTH_FAILED, + ERROR_TIME_SKEW, + ERROR_CURRENT_DOMAIN_NOT_ALLOWED, + ERROR_INVALID_WINDOW_HANDLE, + ERROR_INVALID_MENU_HANDLE, + ERROR_INVALID_CURSOR_HANDLE, + ERROR_INVALID_ACCEL_HANDLE, + ERROR_INVALID_HOOK_HANDLE, + ERROR_INVALID_DWP_HANDLE, + ERROR_TLW_WITH_WSCHILD, + ERROR_CANNOT_FIND_WND_CLASS, + ERROR_WINDOW_OF_OTHER_THREAD, + ERROR_HOTKEY_ALREADY_REGISTERED, + ERROR_CLASS_ALREADY_EXISTS, + ERROR_CLASS_DOES_NOT_EXIST, + ERROR_CLASS_HAS_WINDOWS, + ERROR_INVALID_INDEX, + ERROR_INVALID_ICON_HANDLE, + ERROR_PRIVATE_DIALOG_INDEX, + ERROR_LISTBOX_ID_NOT_FOUND, + ERROR_NO_WILDCARD_CHARACTERS, + ERROR_CLIPBOARD_NOT_OPEN, + ERROR_HOTKEY_NOT_REGISTERED, + ERROR_WINDOW_NOT_DIALOG, + ERROR_CONTROL_ID_NOT_FOUND, + ERROR_INVALID_COMBOBOX_MESSAGE, + ERROR_WINDOW_NOT_COMBOBOX, + ERROR_INVALID_EDIT_HEIGHT, + ERROR_DC_NOT_FOUND, + ERROR_INVALID_HOOK_FILTER, + ERROR_INVALID_FILTER_PROC, + ERROR_HOOK_NEEDS_HMOD, + ERROR_GLOBAL_ONLY_HOOK, + ERROR_JOURNAL_HOOK_SET, + ERROR_HOOK_NOT_INSTALLED, + ERROR_INVALID_LB_MESSAGE, + ERROR_SETCOUNT_ON_BAD_LB, + ERROR_LB_WITHOUT_TABSTOPS, + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD, + ERROR_CHILD_WINDOW_MENU, + ERROR_NO_SYSTEM_MENU, + ERROR_INVALID_MSGBOX_STYLE, + ERROR_INVALID_SPI_VALUE, + ERROR_SCREEN_ALREADY_LOCKED, + ERROR_HWNDS_HAVE_DIFF_PARENT, + ERROR_NOT_CHILD_WINDOW, + ERROR_INVALID_GW_COMMAND, + ERROR_INVALID_THREAD_ID, + ERROR_NON_MDICHILD_WINDOW, + ERROR_POPUP_ALREADY_ACTIVE, + ERROR_NO_SCROLLBARS, + ERROR_INVALID_SCROLLBAR_RANGE, + ERROR_INVALID_SHOWWIN_COMMAND, + ERROR_NO_SYSTEM_RESOURCES, + ERROR_NONPAGED_SYSTEM_RESOURCES, + ERROR_PAGED_SYSTEM_RESOURCES, + ERROR_WORKING_SET_QUOTA, + ERROR_PAGEFILE_QUOTA, + ERROR_COMMITMENT_LIMIT, + ERROR_MENU_ITEM_NOT_FOUND, + ERROR_INVALID_KEYBOARD_HANDLE, + ERROR_HOOK_TYPE_NOT_ALLOWED, + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, + ERROR_TIMEOUT, + ERROR_INVALID_MONITOR_HANDLE, // = 1461 + ERROR_EVENTLOG_FILE_CORRUPT = 1500, + ERROR_EVENTLOG_CANT_START, + ERROR_LOG_FILE_FULL, + ERROR_EVENTLOG_FILE_CHANGED, // = 1503 + ERROR_INSTALL_SERVICE_FAILURE = 1601, + ERROR_INSTALL_USEREXIT, + ERROR_INSTALL_FAILURE, + ERROR_INSTALL_SUSPEND, + ERROR_UNKNOWN_PRODUCT, + ERROR_UNKNOWN_FEATURE, + ERROR_UNKNOWN_COMPONENT, + ERROR_UNKNOWN_PROPERTY, + ERROR_INVALID_HANDLE_STATE, + ERROR_BAD_CONFIGURATION, + ERROR_INDEX_ABSENT, + ERROR_INSTALL_SOURCE_ABSENT, + ERROR_INSTALL_PACKAGE_VERSION, + ERROR_PRODUCT_UNINSTALLED, + ERROR_BAD_QUERY_SYNTAX, + ERROR_INVALID_FIELD, + ERROR_DEVICE_REMOVED, + ERROR_INSTALL_ALREADY_RUNNING, + ERROR_INSTALL_PACKAGE_OPEN_FAILED, + ERROR_INSTALL_PACKAGE_INVALID, + ERROR_INSTALL_UI_FAILURE, + ERROR_INSTALL_LOG_FAILURE, + ERROR_INSTALL_LANGUAGE_UNSUPPORTED, + ERROR_INSTALL_TRANSFORM_FAILURE, + ERROR_INSTALL_PACKAGE_REJECTED, + ERROR_FUNCTION_NOT_CALLED, + ERROR_FUNCTION_FAILED, + ERROR_INVALID_TABLE, + ERROR_DATATYPE_MISMATCH, + ERROR_UNSUPPORTED_TYPE, + ERROR_CREATE_FAILED, + ERROR_INSTALL_TEMP_UNWRITABLE, + ERROR_INSTALL_PLATFORM_UNSUPPORTED, + ERROR_INSTALL_NOTUSED, + ERROR_PATCH_PACKAGE_OPEN_FAILED, + ERROR_PATCH_PACKAGE_INVALID, + ERROR_PATCH_PACKAGE_UNSUPPORTED, + ERROR_PRODUCT_VERSION, + ERROR_INVALID_COMMAND_LINE, + ERROR_INSTALL_REMOTE_DISALLOWED, + ERROR_SUCCESS_REBOOT_INITIATED, + ERROR_PATCH_TARGET_NOT_FOUND, + ERROR_PATCH_PACKAGE_REJECTED, + ERROR_INSTALL_TRANSFORM_REJECTED, + ERROR_INSTALL_REMOTE_PROHIBITED, // = 1645 + RPC_S_INVALID_STRING_BINDING = 1700, + RPC_S_WRONG_KIND_OF_BINDING, + RPC_S_INVALID_BINDING, + RPC_S_PROTSEQ_NOT_SUPPORTED, + RPC_S_INVALID_RPC_PROTSEQ, + RPC_S_INVALID_STRING_UUID, + RPC_S_INVALID_ENDPOINT_FORMAT, + RPC_S_INVALID_NET_ADDR, + RPC_S_NO_ENDPOINT_FOUND, + RPC_S_INVALID_TIMEOUT, + RPC_S_OBJECT_NOT_FOUND, + RPC_S_ALREADY_REGISTERED, + RPC_S_TYPE_ALREADY_REGISTERED, + RPC_S_ALREADY_LISTENING, + RPC_S_NO_PROTSEQS_REGISTERED, + RPC_S_NOT_LISTENING, + RPC_S_UNKNOWN_MGR_TYPE, + RPC_S_UNKNOWN_IF, + RPC_S_NO_BINDINGS, + RPC_S_NO_PROTSEQS, + RPC_S_CANT_CREATE_ENDPOINT, + RPC_S_OUT_OF_RESOURCES, + RPC_S_SERVER_UNAVAILABLE, + RPC_S_SERVER_TOO_BUSY, + RPC_S_INVALID_NETWORK_OPTIONS, + RPC_S_NO_CALL_ACTIVE, + RPC_S_CALL_FAILED, + RPC_S_CALL_FAILED_DNE, + RPC_S_PROTOCOL_ERROR, // = 1728 + RPC_S_UNSUPPORTED_TRANS_SYN = 1730, + RPC_S_UNSUPPORTED_TYPE = 1732, + RPC_S_INVALID_TAG, + RPC_S_INVALID_BOUND, + RPC_S_NO_ENTRY_NAME, + RPC_S_INVALID_NAME_SYNTAX, + RPC_S_UNSUPPORTED_NAME_SYNTAX, // = 1737 + RPC_S_UUID_NO_ADDRESS = 1739, + RPC_S_DUPLICATE_ENDPOINT, + RPC_S_UNKNOWN_AUTHN_TYPE, + RPC_S_MAX_CALLS_TOO_SMALL, + RPC_S_STRING_TOO_LONG, + RPC_S_PROTSEQ_NOT_FOUND, + RPC_S_PROCNUM_OUT_OF_RANGE, + RPC_S_BINDING_HAS_NO_AUTH, + RPC_S_UNKNOWN_AUTHN_SERVICE, + RPC_S_UNKNOWN_AUTHN_LEVEL, + RPC_S_INVALID_AUTH_IDENTITY, + RPC_S_UNKNOWN_AUTHZ_SERVICE, + EPT_S_INVALID_ENTRY, + EPT_S_CANT_PERFORM_OP, + EPT_S_NOT_REGISTERED, + RPC_S_NOTHING_TO_EXPORT, + RPC_S_INCOMPLETE_NAME, + RPC_S_INVALID_VERS_OPTION, + RPC_S_NO_MORE_MEMBERS, + RPC_S_NOT_ALL_OBJS_UNEXPORTED, + RPC_S_INTERFACE_NOT_FOUND, + RPC_S_ENTRY_ALREADY_EXISTS, + RPC_S_ENTRY_NOT_FOUND, + RPC_S_NAME_SERVICE_UNAVAILABLE, + RPC_S_INVALID_NAF_ID, + RPC_S_CANNOT_SUPPORT, + RPC_S_NO_CONTEXT_AVAILABLE, + RPC_S_INTERNAL_ERROR, + RPC_S_ZERO_DIVIDE, + RPC_S_ADDRESS_ERROR, + RPC_S_FP_DIV_ZERO, + RPC_S_FP_UNDERFLOW, + RPC_S_FP_OVERFLOW, + RPC_X_NO_MORE_ENTRIES, + RPC_X_SS_CHAR_TRANS_OPEN_FAIL, + RPC_X_SS_CHAR_TRANS_SHORT_FILE, + RPC_X_SS_IN_NULL_CONTEXT, // = 1775 + RPC_X_SS_CONTEXT_DAMAGED = 1777, + RPC_X_SS_HANDLES_MISMATCH, + RPC_X_SS_CANNOT_GET_CALL_HANDLE, + RPC_X_NULL_REF_POINTER, + RPC_X_ENUM_VALUE_OUT_OF_RANGE, + RPC_X_BYTE_COUNT_TOO_SMALL, + RPC_X_BAD_STUB_DATA, + ERROR_INVALID_USER_BUFFER, + ERROR_UNRECOGNIZED_MEDIA, + ERROR_NO_TRUST_LSA_SECRET, + ERROR_NO_TRUST_SAM_ACCOUNT, + ERROR_TRUSTED_DOMAIN_FAILURE, + ERROR_TRUSTED_RELATIONSHIP_FAILURE, + ERROR_TRUST_FAILURE, + RPC_S_CALL_IN_PROGRESS, + ERROR_NETLOGON_NOT_STARTED, + ERROR_ACCOUNT_EXPIRED, + ERROR_REDIRECTOR_HAS_OPEN_HANDLES, + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED, + ERROR_UNKNOWN_PORT, + ERROR_UNKNOWN_PRINTER_DRIVER, + ERROR_UNKNOWN_PRINTPROCESSOR, + ERROR_INVALID_SEPARATOR_FILE, + ERROR_INVALID_PRIORITY, + ERROR_INVALID_PRINTER_NAME, + ERROR_PRINTER_ALREADY_EXISTS, + ERROR_INVALID_PRINTER_COMMAND, + ERROR_INVALID_DATATYPE, + ERROR_INVALID_ENVIRONMENT, + RPC_S_NO_MORE_BINDINGS, + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT, + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT, + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT, + ERROR_DOMAIN_TRUST_INCONSISTENT, + ERROR_SERVER_HAS_OPEN_HANDLES, + ERROR_RESOURCE_DATA_NOT_FOUND, + ERROR_RESOURCE_TYPE_NOT_FOUND, + ERROR_RESOURCE_NAME_NOT_FOUND, + ERROR_RESOURCE_LANG_NOT_FOUND, + ERROR_NOT_ENOUGH_QUOTA, + RPC_S_NO_INTERFACES, + RPC_S_CALL_CANCELLED, + RPC_S_BINDING_INCOMPLETE, + RPC_S_COMM_FAILURE, + RPC_S_UNSUPPORTED_AUTHN_LEVEL, + RPC_S_NO_PRINC_NAME, + RPC_S_NOT_RPC_ERROR, + RPC_S_UUID_LOCAL_ONLY, + RPC_S_SEC_PKG_ERROR, + RPC_S_NOT_CANCELLED, + RPC_X_INVALID_ES_ACTION, + RPC_X_WRONG_ES_VERSION, + RPC_X_WRONG_STUB_VERSION, + RPC_X_INVALID_PIPE_OBJECT, + RPC_X_WRONG_PIPE_ORDER, + RPC_X_WRONG_PIPE_VERSION, // = 1832 + RPC_S_GROUP_MEMBER_NOT_FOUND = 1898, + EPT_S_CANT_CREATE, + RPC_S_INVALID_OBJECT, + ERROR_INVALID_TIME, + ERROR_INVALID_FORM_NAME, + ERROR_INVALID_FORM_SIZE, + ERROR_ALREADY_WAITING, + ERROR_PRINTER_DELETED, + ERROR_INVALID_PRINTER_STATE, + ERROR_PASSWORD_MUST_CHANGE, + ERROR_DOMAIN_CONTROLLER_NOT_FOUND, + ERROR_ACCOUNT_LOCKED_OUT, + OR_INVALID_OXID, + OR_INVALID_OID, + OR_INVALID_SET, + RPC_S_SEND_INCOMPLETE, + RPC_S_INVALID_ASYNC_HANDLE, + RPC_S_INVALID_ASYNC_CALL, + RPC_X_PIPE_CLOSED, + RPC_X_PIPE_DISCIPLINE_ERROR, + RPC_X_PIPE_EMPTY, + ERROR_NO_SITENAME, + ERROR_CANT_ACCESS_FILE, + ERROR_CANT_RESOLVE_FILENAME, + RPC_S_ENTRY_TYPE_MISMATCH, + RPC_S_NOT_ALL_OBJS_EXPORTED, + RPC_S_INTERFACE_NOT_EXPORTED, + RPC_S_PROFILE_NOT_ADDED, + RPC_S_PRF_ELT_NOT_ADDED, + RPC_S_PRF_ELT_NOT_REMOVED, + RPC_S_GRP_ELT_NOT_ADDED, + RPC_S_GRP_ELT_NOT_REMOVED, + ERROR_KM_DRIVER_BLOCKED, + ERROR_CONTEXT_EXPIRED, + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED, + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED, + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED, // = 1934 + ERROR_INVALID_PIXEL_FORMAT = 2000, + ERROR_BAD_DRIVER, + ERROR_INVALID_WINDOW_STYLE, + ERROR_METAFILE_NOT_SUPPORTED, + ERROR_TRANSFORM_NOT_SUPPORTED, + ERROR_CLIPPING_NOT_SUPPORTED, // = 2005 + ERROR_INVALID_CMM = 2010, + ERROR_INVALID_PROFILE, + ERROR_TAG_NOT_FOUND, + ERROR_TAG_NOT_PRESENT, + ERROR_DUPLICATE_TAG, + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE, + ERROR_PROFILE_NOT_FOUND, + ERROR_INVALID_COLORSPACE, + ERROR_ICM_NOT_ENABLED, + ERROR_DELETING_ICM_XFORM, + ERROR_INVALID_TRANSFORM, + ERROR_COLORSPACE_MISMATCH, + ERROR_INVALID_COLORINDEX, // = 2022 + ERROR_CONNECTED_OTHER_PASSWORD = 2108, + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT, // = 2109 + ERROR_BAD_USERNAME = 2202, + ERROR_NOT_CONNECTED = 2250, + ERROR_OPEN_FILES = 2401, + ERROR_ACTIVE_CONNECTIONS, // = 2402 + ERROR_DEVICE_IN_USE = 2404, + ERROR_UNKNOWN_PRINT_MONITOR = 3000, + ERROR_PRINTER_DRIVER_IN_USE, + ERROR_SPOOL_FILE_NOT_FOUND, + ERROR_SPL_NO_STARTDOC, + ERROR_SPL_NO_ADDJOB, + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED, + ERROR_PRINT_MONITOR_ALREADY_INSTALLED, + ERROR_INVALID_PRINT_MONITOR, + ERROR_PRINT_MONITOR_IN_USE, + ERROR_PRINTER_HAS_JOBS_QUEUED, + ERROR_SUCCESS_REBOOT_REQUIRED, + ERROR_SUCCESS_RESTART_REQUIRED, + ERROR_PRINTER_NOT_FOUND, + ERROR_PRINTER_DRIVER_WARNED, + ERROR_PRINTER_DRIVER_BLOCKED, // = 3014 + ERROR_WINS_INTERNAL = 4000, + ERROR_CAN_NOT_DEL_LOCAL_WINS, + ERROR_STATIC_INIT, + ERROR_INC_BACKUP, + ERROR_FULL_BACKUP, + ERROR_REC_NON_EXISTENT, + ERROR_RPL_NOT_ALLOWED, // = 4006 + ERROR_DHCP_ADDRESS_CONFLICT = 4100, + ERROR_WMI_GUID_NOT_FOUND = 4200, + ERROR_WMI_INSTANCE_NOT_FOUND, + ERROR_WMI_ITEMID_NOT_FOUND, + ERROR_WMI_TRY_AGAIN, + ERROR_WMI_DP_NOT_FOUND, + ERROR_WMI_UNRESOLVED_INSTANCE_REF, + ERROR_WMI_ALREADY_ENABLED, + ERROR_WMI_GUID_DISCONNECTED, + ERROR_WMI_SERVER_UNAVAILABLE, + ERROR_WMI_DP_FAILED, + ERROR_WMI_INVALID_MOF, + ERROR_WMI_INVALID_REGINFO, + ERROR_WMI_ALREADY_DISABLED, + ERROR_WMI_READ_ONLY, + ERROR_WMI_SET_FAILURE, // = 4214 + ERROR_INVALID_MEDIA = 4300, + ERROR_INVALID_LIBRARY, + ERROR_INVALID_MEDIA_POOL, + ERROR_DRIVE_MEDIA_MISMATCH, + ERROR_MEDIA_OFFLINE, + ERROR_LIBRARY_OFFLINE, + ERROR_EMPTY, + ERROR_NOT_EMPTY, + ERROR_MEDIA_UNAVAILABLE, + ERROR_RESOURCE_DISABLED, + ERROR_INVALID_CLEANER, + ERROR_UNABLE_TO_CLEAN, + ERROR_OBJECT_NOT_FOUND, + ERROR_DATABASE_FAILURE, + ERROR_DATABASE_FULL, + ERROR_MEDIA_INCOMPATIBLE, + ERROR_RESOURCE_NOT_PRESENT, + ERROR_INVALID_OPERATION, + ERROR_MEDIA_NOT_AVAILABLE, + ERROR_DEVICE_NOT_AVAILABLE, + ERROR_REQUEST_REFUSED, + ERROR_INVALID_DRIVE_OBJECT, + ERROR_LIBRARY_FULL, + ERROR_MEDIUM_NOT_ACCESSIBLE, + ERROR_UNABLE_TO_LOAD_MEDIUM, + ERROR_UNABLE_TO_INVENTORY_DRIVE, + ERROR_UNABLE_TO_INVENTORY_SLOT, + ERROR_UNABLE_TO_INVENTORY_TRANSPORT, + ERROR_TRANSPORT_FULL, + ERROR_CONTROLLING_IEPORT, + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA, + ERROR_CLEANER_SLOT_SET, + ERROR_CLEANER_SLOT_NOT_SET, + ERROR_CLEANER_CARTRIDGE_SPENT, + ERROR_UNEXPECTED_OMID, + ERROR_CANT_DELETE_LAST_ITEM, + ERROR_MESSAGE_EXCEEDS_MAX_SIZE, + ERROR_VOLUME_CONTAINS_SYS_FILES, + ERROR_INDIGENOUS_TYPE, + ERROR_NO_SUPPORTING_DRIVES, + ERROR_CLEANER_CARTRIDGE_INSTALLED, // = 4340 + ERROR_FILE_OFFLINE = 4350, + ERROR_REMOTE_STORAGE_NOT_ACTIVE, + ERROR_REMOTE_STORAGE_MEDIA_ERROR, // = 4352 + ERROR_NOT_A_REPARSE_POINT = 4390, + ERROR_REPARSE_ATTRIBUTE_CONFLICT, + ERROR_INVALID_REPARSE_DATA, + ERROR_REPARSE_TAG_INVALID, + ERROR_REPARSE_TAG_MISMATCH, // = 4394 + ERROR_VOLUME_NOT_SIS_ENABLED = 4500, + ERROR_DEPENDENT_RESOURCE_EXISTS = 5001, + ERROR_DEPENDENCY_NOT_FOUND, + ERROR_DEPENDENCY_ALREADY_EXISTS, + ERROR_RESOURCE_NOT_ONLINE, + ERROR_HOST_NODE_NOT_AVAILABLE, + ERROR_RESOURCE_NOT_AVAILABLE, + ERROR_RESOURCE_NOT_FOUND, + ERROR_SHUTDOWN_CLUSTER, + ERROR_CANT_EVICT_ACTIVE_NODE, + ERROR_OBJECT_ALREADY_EXISTS, + ERROR_OBJECT_IN_LIST, + ERROR_GROUP_NOT_AVAILABLE, + ERROR_GROUP_NOT_FOUND, + ERROR_GROUP_NOT_ONLINE, + ERROR_HOST_NODE_NOT_RESOURCE_OWNER, + ERROR_HOST_NODE_NOT_GROUP_OWNER, + ERROR_RESMON_CREATE_FAILED, + ERROR_RESMON_ONLINE_FAILED, + ERROR_RESOURCE_ONLINE, + ERROR_QUORUM_RESOURCE, + ERROR_NOT_QUORUM_CAPABLE, + ERROR_CLUSTER_SHUTTING_DOWN, + ERROR_INVALID_STATE, + ERROR_RESOURCE_PROPERTIES_STORED, + ERROR_NOT_QUORUM_CLASS, + ERROR_CORE_RESOURCE, + ERROR_QUORUM_RESOURCE_ONLINE_FAILED, + ERROR_QUORUMLOG_OPEN_FAILED, + ERROR_CLUSTERLOG_CORRUPT, + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE, + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE, + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND, + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE, + ERROR_QUORUM_OWNER_ALIVE, + ERROR_NETWORK_NOT_AVAILABLE, + ERROR_NODE_NOT_AVAILABLE, + ERROR_ALL_NODES_NOT_AVAILABLE, + ERROR_RESOURCE_FAILED, + ERROR_CLUSTER_INVALID_NODE, + ERROR_CLUSTER_NODE_EXISTS, + ERROR_CLUSTER_JOIN_IN_PROGRESS, + ERROR_CLUSTER_NODE_NOT_FOUND, + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND, + ERROR_CLUSTER_NETWORK_EXISTS, + ERROR_CLUSTER_NETWORK_NOT_FOUND, + ERROR_CLUSTER_NETINTERFACE_EXISTS, + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND, + ERROR_CLUSTER_INVALID_REQUEST, + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER, + ERROR_CLUSTER_NODE_DOWN, + ERROR_CLUSTER_NODE_UNREACHABLE, + ERROR_CLUSTER_NODE_NOT_MEMBER, + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS, + ERROR_CLUSTER_INVALID_NETWORK, // = 5054 + ERROR_CLUSTER_NODE_UP = 5056, + ERROR_CLUSTER_IPADDR_IN_USE, + ERROR_CLUSTER_NODE_NOT_PAUSED, + ERROR_CLUSTER_NO_SECURITY_CONTEXT, + ERROR_CLUSTER_NETWORK_NOT_INTERNAL, + ERROR_CLUSTER_NODE_ALREADY_UP, + ERROR_CLUSTER_NODE_ALREADY_DOWN, + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE, + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE, + ERROR_CLUSTER_NODE_ALREADY_MEMBER, + ERROR_CLUSTER_LAST_INTERNAL_NETWORK, + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS, + ERROR_INVALID_OPERATION_ON_QUORUM, + ERROR_DEPENDENCY_NOT_ALLOWED, + ERROR_CLUSTER_NODE_PAUSED, + ERROR_NODE_CANT_HOST_RESOURCE, + ERROR_CLUSTER_NODE_NOT_READY, + ERROR_CLUSTER_NODE_SHUTTING_DOWN, + ERROR_CLUSTER_JOIN_ABORTED, + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS, + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED, + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED, + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND, + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED, + ERROR_CLUSTER_RESNAME_NOT_FOUND, + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED, + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST, + ERROR_CLUSTER_DATABASE_SEQMISMATCH, + ERROR_RESMON_INVALID_STATE, + ERROR_CLUSTER_GUM_NOT_LOCKER, + ERROR_QUORUM_DISK_NOT_FOUND, + ERROR_DATABASE_BACKUP_CORRUPT, + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT, + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE, // = 5089 + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890, + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND, + ERROR_CLUSTER_MEMBERSHIP_HALT, + ERROR_CLUSTER_INSTANCE_ID_MISMATCH, + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP, + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH, + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP, + ERROR_CLUSTER_PARAMETER_MISMATCH, + ERROR_NODE_CANNOT_BE_CLUSTERED, + ERROR_CLUSTER_WRONG_OS_VERSION, + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME, + ERROR_CLUSCFG_ALREADY_COMMITTED, + ERROR_CLUSCFG_ROLLBACK_FAILED, + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT, + ERROR_CLUSTER_OLD_VERSION, + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME, // = 5905 + ERROR_ENCRYPTION_FAILED = 6000, + ERROR_DECRYPTION_FAILED, + ERROR_FILE_ENCRYPTED, + ERROR_NO_RECOVERY_POLICY, + ERROR_NO_EFS, + ERROR_WRONG_EFS, + ERROR_NO_USER_KEYS, + ERROR_FILE_NOT_ENCRYPTED, + ERROR_NOT_EXPORT_FORMAT, + ERROR_FILE_READ_ONLY, + ERROR_DIR_EFS_DISALLOWED, + ERROR_EFS_SERVER_NOT_TRUSTED, + ERROR_BAD_RECOVERY_POLICY, + ERROR_EFS_ALG_BLOB_TOO_BIG, + ERROR_VOLUME_NOT_SUPPORT_EFS, + ERROR_EFS_DISABLED, + ERROR_EFS_VERSION_NOT_SUPPORT, // = 6016 + ERROR_NO_BROWSER_SERVERS_FOUND = 6118, + SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200, + + ERROR_CTX_WINSTATION_NAME_INVALID = 7001, + ERROR_CTX_INVALID_PD, + ERROR_CTX_PD_NOT_FOUND, + ERROR_CTX_WD_NOT_FOUND, + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY, + ERROR_CTX_SERVICE_NAME_COLLISION, + ERROR_CTX_CLOSE_PENDING, + ERROR_CTX_NO_OUTBUF, + ERROR_CTX_MODEM_INF_NOT_FOUND, + ERROR_CTX_INVALID_MODEMNAME, + ERROR_CTX_MODEM_RESPONSE_ERROR, + ERROR_CTX_MODEM_RESPONSE_TIMEOUT, + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER, + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE, + ERROR_CTX_MODEM_RESPONSE_BUSY, + ERROR_CTX_MODEM_RESPONSE_VOICE, + ERROR_CTX_TD_ERROR, // = 7017 + ERROR_CTX_WINSTATION_NOT_FOUND = 7022, + ERROR_CTX_WINSTATION_ALREADY_EXISTS, + ERROR_CTX_WINSTATION_BUSY, + ERROR_CTX_BAD_VIDEO_MODE, // = 7025 + ERROR_CTX_GRAPHICS_INVALID = 7035, + ERROR_CTX_LOGON_DISABLED = 7037, + ERROR_CTX_NOT_CONSOLE, // = 7038 + ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040, + ERROR_CTX_CONSOLE_DISCONNECT, + ERROR_CTX_CONSOLE_CONNECT, // = 7042 + ERROR_CTX_SHADOW_DENIED = 7044, + ERROR_CTX_WINSTATION_ACCESS_DENIED, // = 7045 + ERROR_CTX_INVALID_WD = 7049, + ERROR_CTX_SHADOW_INVALID, + ERROR_CTX_SHADOW_DISABLED, + ERROR_CTX_CLIENT_LICENSE_IN_USE, + ERROR_CTX_CLIENT_LICENSE_NOT_SET, + ERROR_CTX_LICENSE_NOT_AVAILABLE, + ERROR_CTX_LICENSE_CLIENT_INVALID, + ERROR_CTX_LICENSE_EXPIRED, + ERROR_CTX_SHADOW_NOT_RUNNING, + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE, + ERROR_ACTIVATION_COUNT_EXCEEDED, // = 7059 + + FRS_ERR_INVALID_API_SEQUENCE = 8001, + FRS_ERR_STARTING_SERVICE, + FRS_ERR_STOPPING_SERVICE, + FRS_ERR_INTERNAL_API, + FRS_ERR_INTERNAL, + FRS_ERR_SERVICE_COMM, + FRS_ERR_INSUFFICIENT_PRIV, + FRS_ERR_AUTHENTICATION, + FRS_ERR_PARENT_INSUFFICIENT_PRIV, + FRS_ERR_PARENT_AUTHENTICATION, + FRS_ERR_CHILD_TO_PARENT_COMM, + FRS_ERR_PARENT_TO_CHILD_COMM, + FRS_ERR_SYSVOL_POPULATE, + FRS_ERR_SYSVOL_POPULATE_TIMEOUT, + FRS_ERR_SYSVOL_IS_BUSY, + FRS_ERR_SYSVOL_DEMOTE, + FRS_ERR_INVALID_SERVICE_PARAMETER, // = 8017 + ERROR_DS_NOT_INSTALLED = 8200, + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY, + ERROR_DS_NO_ATTRIBUTE_OR_VALUE, + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX, + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED, + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS, + ERROR_DS_BUSY, + ERROR_DS_UNAVAILABLE, + ERROR_DS_NO_RIDS_ALLOCATED, + ERROR_DS_NO_MORE_RIDS, + ERROR_DS_INCORRECT_ROLE_OWNER, + ERROR_DS_RIDMGR_INIT_ERROR, + ERROR_DS_OBJ_CLASS_VIOLATION, + ERROR_DS_CANT_ON_NON_LEAF, + ERROR_DS_CANT_ON_RDN, + ERROR_DS_CANT_MOD_OBJ_CLASS, + ERROR_DS_CROSS_DOM_MOVE_ERROR, + ERROR_DS_GC_NOT_AVAILABLE, + ERROR_SHARED_POLICY, + ERROR_POLICY_OBJECT_NOT_FOUND, + ERROR_POLICY_ONLY_IN_DS, + ERROR_PROMOTION_ACTIVE, + ERROR_NO_PROMOTION_ACTIVE, // = 8222 + ERROR_DS_OPERATIONS_ERROR = 8224, + ERROR_DS_PROTOCOL_ERROR, + ERROR_DS_TIMELIMIT_EXCEEDED, + ERROR_DS_SIZELIMIT_EXCEEDED, + ERROR_DS_ADMIN_LIMIT_EXCEEDED, + ERROR_DS_COMPARE_FALSE, + ERROR_DS_COMPARE_TRUE, + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED, + ERROR_DS_STRONG_AUTH_REQUIRED, + ERROR_DS_INAPPROPRIATE_AUTH, + ERROR_DS_AUTH_UNKNOWN, + ERROR_DS_REFERRAL, + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION, + ERROR_DS_CONFIDENTIALITY_REQUIRED, + ERROR_DS_INAPPROPRIATE_MATCHING, + ERROR_DS_CONSTRAINT_VIOLATION, + ERROR_DS_NO_SUCH_OBJECT, + ERROR_DS_ALIAS_PROBLEM, + ERROR_DS_INVALID_DN_SYNTAX, + ERROR_DS_IS_LEAF, + ERROR_DS_ALIAS_DEREF_PROBLEM, + ERROR_DS_UNWILLING_TO_PERFORM, + ERROR_DS_LOOP_DETECT, + ERROR_DS_NAMING_VIOLATION, + ERROR_DS_OBJECT_RESULTS_TOO_LARGE, + ERROR_DS_AFFECTS_MULTIPLE_DSAS, + ERROR_DS_SERVER_DOWN, + ERROR_DS_LOCAL_ERROR, + ERROR_DS_ENCODING_ERROR, + ERROR_DS_DECODING_ERROR, + ERROR_DS_FILTER_UNKNOWN, + ERROR_DS_PARAM_ERROR, + ERROR_DS_NOT_SUPPORTED, + ERROR_DS_NO_RESULTS_RETURNED, + ERROR_DS_CONTROL_NOT_FOUND, + ERROR_DS_CLIENT_LOOP, + ERROR_DS_REFERRAL_LIMIT_EXCEEDED, + ERROR_DS_SORT_CONTROL_MISSING, + ERROR_DS_OFFSET_RANGE_ERROR, // = 8262 + ERROR_DS_ROOT_MUST_BE_NC = 8301, + ERROR_DS_ADD_REPLICA_INHIBITED, + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA, + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED, + ERROR_DS_OBJ_STRING_NAME_EXISTS, + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA, + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA, + ERROR_DS_NO_REQUESTED_ATTS_FOUND, + ERROR_DS_USER_BUFFER_TO_SMALL, + ERROR_DS_ATT_IS_NOT_ON_OBJ, + ERROR_DS_ILLEGAL_MOD_OPERATION, + ERROR_DS_OBJ_TOO_LARGE, + ERROR_DS_BAD_INSTANCE_TYPE, + ERROR_DS_MASTERDSA_REQUIRED, + ERROR_DS_OBJECT_CLASS_REQUIRED, + ERROR_DS_MISSING_REQUIRED_ATT, + ERROR_DS_ATT_NOT_DEF_FOR_CLASS, + ERROR_DS_ATT_ALREADY_EXISTS, // = 8318 + ERROR_DS_CANT_ADD_ATT_VALUES = 8320, + ERROR_DS_SINGLE_VALUE_CONSTRAINT, + ERROR_DS_RANGE_CONSTRAINT, + ERROR_DS_ATT_VAL_ALREADY_EXISTS, + ERROR_DS_CANT_REM_MISSING_ATT, + ERROR_DS_CANT_REM_MISSING_ATT_VAL, + ERROR_DS_ROOT_CANT_BE_SUBREF, + ERROR_DS_NO_CHAINING, + ERROR_DS_NO_CHAINED_EVAL, + ERROR_DS_NO_PARENT_OBJECT, + ERROR_DS_PARENT_IS_AN_ALIAS, + ERROR_DS_CANT_MIX_MASTER_AND_REPS, + ERROR_DS_CHILDREN_EXIST, + ERROR_DS_OBJ_NOT_FOUND, + ERROR_DS_ALIASED_OBJ_MISSING, + ERROR_DS_BAD_NAME_SYNTAX, + ERROR_DS_ALIAS_POINTS_TO_ALIAS, + ERROR_DS_CANT_DEREF_ALIAS, + ERROR_DS_OUT_OF_SCOPE, + ERROR_DS_OBJECT_BEING_REMOVED, + ERROR_DS_CANT_DELETE_DSA_OBJ, + ERROR_DS_GENERIC_ERROR, + ERROR_DS_DSA_MUST_BE_INT_MASTER, + ERROR_DS_CLASS_NOT_DSA, + ERROR_DS_INSUFF_ACCESS_RIGHTS, + ERROR_DS_ILLEGAL_SUPERIOR, + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM, + ERROR_DS_NAME_TOO_MANY_PARTS, + ERROR_DS_NAME_TOO_LONG, + ERROR_DS_NAME_VALUE_TOO_LONG, + ERROR_DS_NAME_UNPARSEABLE, + ERROR_DS_NAME_TYPE_UNKNOWN, + ERROR_DS_NOT_AN_OBJECT, + ERROR_DS_SEC_DESC_TOO_SHORT, + ERROR_DS_SEC_DESC_INVALID, + ERROR_DS_NO_DELETED_NAME, + ERROR_DS_SUBREF_MUST_HAVE_PARENT, + ERROR_DS_NCNAME_MUST_BE_NC, + ERROR_DS_CANT_ADD_SYSTEM_ONLY, + ERROR_DS_CLASS_MUST_BE_CONCRETE, + ERROR_DS_INVALID_DMD, + ERROR_DS_OBJ_GUID_EXISTS, + ERROR_DS_NOT_ON_BACKLINK, + ERROR_DS_NO_CROSSREF_FOR_NC, + ERROR_DS_SHUTTING_DOWN, + ERROR_DS_UNKNOWN_OPERATION, + ERROR_DS_INVALID_ROLE_OWNER, + ERROR_DS_COULDNT_CONTACT_FSMO, + ERROR_DS_CROSS_NC_DN_RENAME, + ERROR_DS_CANT_MOD_SYSTEM_ONLY, + ERROR_DS_REPLICATOR_ONLY, + ERROR_DS_OBJ_CLASS_NOT_DEFINED, + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS, + ERROR_DS_NAME_REFERENCE_INVALID, + ERROR_DS_CROSS_REF_EXISTS, + ERROR_DS_CANT_DEL_MASTER_CROSSREF, + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD, + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX, + ERROR_DS_DUP_RDN, + ERROR_DS_DUP_OID, + ERROR_DS_DUP_MAPI_ID, + ERROR_DS_DUP_SCHEMA_ID_GUID, + ERROR_DS_DUP_LDAP_DISPLAY_NAME, + ERROR_DS_SEMANTIC_ATT_TEST, + ERROR_DS_SYNTAX_MISMATCH, + ERROR_DS_EXISTS_IN_MUST_HAVE, + ERROR_DS_EXISTS_IN_MAY_HAVE, + ERROR_DS_NONEXISTENT_MAY_HAVE, + ERROR_DS_NONEXISTENT_MUST_HAVE, + ERROR_DS_AUX_CLS_TEST_FAIL, + ERROR_DS_NONEXISTENT_POSS_SUP, + ERROR_DS_SUB_CLS_TEST_FAIL, + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX, + ERROR_DS_EXISTS_IN_AUX_CLS, + ERROR_DS_EXISTS_IN_SUB_CLS, + ERROR_DS_EXISTS_IN_POSS_SUP, + ERROR_DS_RECALCSCHEMA_FAILED, + ERROR_DS_TREE_DELETE_NOT_FINISHED, + ERROR_DS_CANT_DELETE, + ERROR_DS_ATT_SCHEMA_REQ_ID, + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX, + ERROR_DS_CANT_CACHE_ATT, + ERROR_DS_CANT_CACHE_CLASS, + ERROR_DS_CANT_REMOVE_ATT_CACHE, + ERROR_DS_CANT_REMOVE_CLASS_CACHE, + ERROR_DS_CANT_RETRIEVE_DN, + ERROR_DS_MISSING_SUPREF, + ERROR_DS_CANT_RETRIEVE_INSTANCE, + ERROR_DS_CODE_INCONSISTENCY, + ERROR_DS_DATABASE_ERROR, + ERROR_DS_GOVERNSID_MISSING, + ERROR_DS_MISSING_EXPECTED_ATT, + ERROR_DS_NCNAME_MISSING_CR_REF, + ERROR_DS_SECURITY_CHECKING_ERROR, + ERROR_DS_SCHEMA_NOT_LOADED, + ERROR_DS_SCHEMA_ALLOC_FAILED, + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX, + ERROR_DS_GCVERIFY_ERROR, + ERROR_DS_DRA_SCHEMA_MISMATCH, + ERROR_DS_CANT_FIND_DSA_OBJ, + ERROR_DS_CANT_FIND_EXPECTED_NC, + ERROR_DS_CANT_FIND_NC_IN_CACHE, + ERROR_DS_CANT_RETRIEVE_CHILD, + ERROR_DS_SECURITY_ILLEGAL_MODIFY, + ERROR_DS_CANT_REPLACE_HIDDEN_REC, + ERROR_DS_BAD_HIERARCHY_FILE, + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED, + ERROR_DS_CONFIG_PARAM_MISSING, + ERROR_DS_COUNTING_AB_INDICES_FAILED, + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED, + ERROR_DS_INTERNAL_FAILURE, + ERROR_DS_UNKNOWN_ERROR, + ERROR_DS_ROOT_REQUIRES_CLASS_TOP, + ERROR_DS_REFUSING_FSMO_ROLES, + ERROR_DS_MISSING_FSMO_SETTINGS, + ERROR_DS_UNABLE_TO_SURRENDER_ROLES, + ERROR_DS_DRA_GENERIC, + ERROR_DS_DRA_INVALID_PARAMETER, + ERROR_DS_DRA_BUSY, + ERROR_DS_DRA_BAD_DN, + ERROR_DS_DRA_BAD_NC, + ERROR_DS_DRA_DN_EXISTS, + ERROR_DS_DRA_INTERNAL_ERROR, + ERROR_DS_DRA_INCONSISTENT_DIT, + ERROR_DS_DRA_CONNECTION_FAILED, + ERROR_DS_DRA_BAD_INSTANCE_TYPE, + ERROR_DS_DRA_OUT_OF_MEM, + ERROR_DS_DRA_MAIL_PROBLEM, + ERROR_DS_DRA_REF_ALREADY_EXISTS, + ERROR_DS_DRA_REF_NOT_FOUND, + ERROR_DS_DRA_OBJ_IS_REP_SOURCE, + ERROR_DS_DRA_DB_ERROR, + ERROR_DS_DRA_NO_REPLICA, + ERROR_DS_DRA_ACCESS_DENIED, + ERROR_DS_DRA_NOT_SUPPORTED, + ERROR_DS_DRA_RPC_CANCELLED, + ERROR_DS_DRA_SOURCE_DISABLED, + ERROR_DS_DRA_SINK_DISABLED, + ERROR_DS_DRA_NAME_COLLISION, + ERROR_DS_DRA_SOURCE_REINSTALLED, + ERROR_DS_DRA_MISSING_PARENT, + ERROR_DS_DRA_PREEMPTED, + ERROR_DS_DRA_ABANDON_SYNC, + ERROR_DS_DRA_SHUTDOWN, + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET, + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA, + ERROR_DS_DRA_EXTN_CONNECTION_FAILED, + ERROR_DS_INSTALL_SCHEMA_MISMATCH, + ERROR_DS_DUP_LINK_ID, + ERROR_DS_NAME_ERROR_RESOLVING, + ERROR_DS_NAME_ERROR_NOT_FOUND, + ERROR_DS_NAME_ERROR_NOT_UNIQUE, + ERROR_DS_NAME_ERROR_NO_MAPPING, + ERROR_DS_NAME_ERROR_DOMAIN_ONLY, + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING, + ERROR_DS_CONSTRUCTED_ATT_MOD, + ERROR_DS_WRONG_OM_OBJ_CLASS, + ERROR_DS_DRA_REPL_PENDING, + ERROR_DS_DS_REQUIRED, + ERROR_DS_INVALID_LDAP_DISPLAY_NAME, + ERROR_DS_NON_BASE_SEARCH, + ERROR_DS_CANT_RETRIEVE_ATTS, + ERROR_DS_BACKLINK_WITHOUT_LINK, + ERROR_DS_EPOCH_MISMATCH, + ERROR_DS_SRC_NAME_MISMATCH, + ERROR_DS_SRC_AND_DST_NC_IDENTICAL, + ERROR_DS_DST_NC_MISMATCH, + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC, + ERROR_DS_SRC_GUID_MISMATCH, + ERROR_DS_CANT_MOVE_DELETED_OBJECT, + ERROR_DS_PDC_OPERATION_IN_PROGRESS, + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD, + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION, + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS, + ERROR_DS_NC_MUST_HAVE_NC_PARENT, + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE, + ERROR_DS_DST_DOMAIN_NOT_NATIVE, + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER, + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP, + ERROR_DS_CANT_MOVE_RESOURCE_GROUP, + ERROR_DS_INVALID_SEARCH_FLAG, + ERROR_DS_NO_TREE_DELETE_ABOVE_NC, + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE, + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE, + ERROR_DS_SAM_INIT_FAILURE, + ERROR_DS_SENSITIVE_GROUP_VIOLATION, + ERROR_DS_CANT_MOD_PRIMARYGROUPID, + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD, + ERROR_DS_NONSAFE_SCHEMA_CHANGE, + ERROR_DS_SCHEMA_UPDATE_DISALLOWED, + ERROR_DS_CANT_CREATE_UNDER_SCHEMA, + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION, + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE, + ERROR_DS_INVALID_GROUP_TYPE, + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN, + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN, + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER, + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER, + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER, + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER, + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER, + ERROR_DS_HAVE_PRIMARY_MEMBERS, + ERROR_DS_STRING_SD_CONVERSION_FAILED, + ERROR_DS_NAMING_MASTER_GC, + ERROR_DS_LOOKUP_FAILURE, + ERROR_DS_COULDNT_UPDATE_SPNS, + ERROR_DS_CANT_RETRIEVE_SD, + ERROR_DS_KEY_NOT_UNIQUE, + ERROR_DS_WRONG_LINKED_ATT_SYNTAX, + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD, + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY, + ERROR_DS_CANT_START, + ERROR_DS_INIT_FAILURE, + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION, + ERROR_DS_SOURCE_DOMAIN_IN_FOREST, + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST, + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED, + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN, + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER, + ERROR_DS_SRC_SID_EXISTS_IN_FOREST, + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH, + ERROR_SAM_INIT_FAILURE, + ERROR_DS_DRA_SCHEMA_INFO_SHIP, + ERROR_DS_DRA_SCHEMA_CONFLICT, + ERROR_DS_DRA_EARLIER_SCHEMA_CONLICT, + ERROR_DS_DRA_OBJ_NC_MISMATCH, + ERROR_DS_NC_STILL_HAS_DSAS, + ERROR_DS_GC_REQUIRED, + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY, + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS, + ERROR_DS_CANT_ADD_TO_GC, + ERROR_DS_NO_CHECKPOINT_WITH_PDC, + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED, + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC, + ERROR_DS_INVALID_NAME_FOR_SPN, + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS, + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES, + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED, + ERROR_DS_MUST_BE_RUN_ON_DST_DC, + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER, + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ, + ERROR_DS_INIT_FAILURE_CONSOLE, + ERROR_DS_SAM_INIT_FAILURE_CONSOLE, + ERROR_DS_FOREST_VERSION_TOO_HIGH, + ERROR_DS_DOMAIN_VERSION_TOO_HIGH, + ERROR_DS_FOREST_VERSION_TOO_LOW, + ERROR_DS_DOMAIN_VERSION_TOO_LOW, + ERROR_DS_INCOMPATIBLE_VERSION, + ERROR_DS_LOW_DSA_VERSION, + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN, + ERROR_DS_NOT_SUPPORTED_SORT_ORDER, + ERROR_DS_NAME_NOT_UNIQUE, + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4, + ERROR_DS_OUT_OF_VERSION_STORE, + ERROR_DS_INCOMPATIBLE_CONTROLS_USED, + ERROR_DS_NO_REF_DOMAIN, + ERROR_DS_RESERVED_LINK_ID, + ERROR_DS_LINK_ID_NOT_AVAILABLE, + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER, + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE, + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC, + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG, + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT, + ERROR_DS_NAME_ERROR_TRUST_REFERRAL, + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER, + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD, + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2, + ERROR_DS_THREAD_LIMIT_EXCEEDED, + ERROR_DS_NOT_CLOSEST, + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF, + ERROR_DS_SINGLE_USER_MODE_FAILED, + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR, + ERROR_DS_NTDSCRIPT_PROCESS_ERROR, + ERROR_DS_DIFFERENT_REPL_EPOCHS, + ERROR_DS_DRS_EXTENSIONS_CHANGED, + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR, + ERROR_DS_NO_MSDS_INTID, + ERROR_DS_DUP_MSDS_INTID, + ERROR_DS_EXISTS_IN_RDNATTID, + ERROR_DS_AUTHORIZATION_FAILED, + ERROR_DS_INVALID_SCRIPT, + ERROR_DS_REMOTE_CROSSREF_OP_FAILED, + ERROR_DS_CROSS_REF_BUSY, + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN, + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC, + ERROR_DS_DUPLICATE_ID_FOUND, + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT, + ERROR_DS_GROUP_CONVERSION_ERROR, + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP, + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP, + ERROR_DS_ROLE_NOT_VERIFIED, + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL, + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS, + ERROR_DS_EXISTING_AD_CHILD_NC, // = 8613 + DNS_ERROR_RCODE_FORMAT_ERROR = 9001, + DNS_ERROR_RCODE_SERVER_FAILURE, + DNS_ERROR_RCODE_NAME_ERROR, + DNS_ERROR_RCODE_NOT_IMPLEMENTED, + DNS_ERROR_RCODE_REFUSED, + DNS_ERROR_RCODE_YXDOMAIN, + DNS_ERROR_RCODE_YXRRSET, + DNS_ERROR_RCODE_NXRRSET, + DNS_ERROR_RCODE_NOTAUTH, + DNS_ERROR_RCODE_NOTZONE, // = 9010 + DNS_ERROR_RCODE_BADSIG = 9016, + DNS_ERROR_RCODE_BADKEY, + DNS_ERROR_RCODE_BADTIME, // = 9018 + DNS_INFO_NO_RECORDS = 9501, + DNS_ERROR_BAD_PACKET, + DNS_ERROR_NO_PACKET, + DNS_ERROR_RCODE, + DNS_ERROR_UNSECURE_PACKET, // = 9505 + DNS_ERROR_INVALID_TYPE = 9551, + DNS_ERROR_INVALID_IP_ADDRESS, + DNS_ERROR_INVALID_PROPERTY, + DNS_ERROR_TRY_AGAIN_LATER, + DNS_ERROR_NOT_UNIQUE, + DNS_ERROR_NON_RFC_NAME, + DNS_STATUS_FQDN, + DNS_STATUS_DOTTED_NAME, + DNS_STATUS_SINGLE_PART_NAME, + DNS_ERROR_INVALID_NAME_CHAR, + DNS_ERROR_NUMERIC_NAME, + DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER, + DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION, + DNS_ERROR_CANNOT_FIND_ROOT_HINTS, + DNS_ERROR_INCONSISTENT_ROOT_HINTS, // = 9565 + DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601, + DNS_ERROR_NO_ZONE_INFO, + DNS_ERROR_INVALID_ZONE_OPERATION, + DNS_ERROR_ZONE_CONFIGURATION_ERROR, + DNS_ERROR_ZONE_HAS_NO_SOA_RECORD, + DNS_ERROR_ZONE_HAS_NO_NS_RECORDS, + DNS_ERROR_ZONE_LOCKED, + DNS_ERROR_ZONE_CREATION_FAILED, + DNS_ERROR_ZONE_ALREADY_EXISTS, + DNS_ERROR_AUTOZONE_ALREADY_EXISTS, + DNS_ERROR_INVALID_ZONE_TYPE, + DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP, + DNS_ERROR_ZONE_NOT_SECONDARY, + DNS_ERROR_NEED_SECONDARY_ADDRESSES, + DNS_ERROR_WINS_INIT_FAILED, + DNS_ERROR_NEED_WINS_SERVERS, + DNS_ERROR_NBSTAT_INIT_FAILED, + DNS_ERROR_SOA_DELETE_INVALID, + DNS_ERROR_FORWARDER_ALREADY_EXISTS, + DNS_ERROR_ZONE_REQUIRES_MASTER_IP, + DNS_ERROR_ZONE_IS_SHUTDOWN, // = 9621 + DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651, + DNS_ERROR_INVALID_DATAFILE_NAME, + DNS_ERROR_DATAFILE_OPEN_FAILURE, + DNS_ERROR_FILE_WRITEBACK_FAILED, + DNS_ERROR_DATAFILE_PARSING, // = 9655 + DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701, + DNS_ERROR_RECORD_FORMAT, + DNS_ERROR_NODE_CREATION_FAILED, + DNS_ERROR_UNKNOWN_RECORD_TYPE, + DNS_ERROR_RECORD_TIMED_OUT, + DNS_ERROR_NAME_NOT_IN_ZONE, + DNS_ERROR_CNAME_LOOP, + DNS_ERROR_NODE_IS_CNAME, + DNS_ERROR_CNAME_COLLISION, + DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT, + DNS_ERROR_RECORD_ALREADY_EXISTS, + DNS_ERROR_SECONDARY_DATA, + DNS_ERROR_NO_CREATE_CACHE_DATA, + DNS_ERROR_NAME_DOES_NOT_EXIST, + DNS_WARNING_PTR_CREATE_FAILED, + DNS_WARNING_DOMAIN_UNDELETED, + DNS_ERROR_DS_UNAVAILABLE, + DNS_ERROR_DS_ZONE_ALREADY_EXISTS, + DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE, // = 9719 + DNS_INFO_AXFR_COMPLETE = 9751, + DNS_ERROR_AXFR, + DNS_INFO_ADDED_LOCAL_WINS, // = 9753 + DNS_STATUS_CONTINUE_NEEDED = 9801, + DNS_ERROR_NO_TCPIP = 9851, + DNS_ERROR_NO_DNS_SERVERS, // = 9852 + DNS_ERROR_DP_DOES_NOT_EXIST = 9901, + DNS_ERROR_DP_ALREADY_EXISTS, + DNS_ERROR_DP_NOT_ENLISTED, + DNS_ERROR_DP_ALREADY_ENLISTED, + DNS_ERROR_DP_NOT_AVAILABLE, // = 9905 + +/+ already in winsock2.d defined! + + WSABASEERR = 10000, + WSAEINTR = 10004, + WSAEBADF = 10009, + WSAEACCES = 10013, + WSAEFAULT, // = 10014 + WSAEINVAL = 10022, + WSAEMFILE = 10024, + WSAEWOULDBLOCK = 10035, + WSAEINPROGRESS, + WSAEALREADY, + WSAENOTSOCK, + WSAEDESTADDRREQ, + WSAEMSGSIZE, + WSAEPROTOTYPE, + WSAENOPROTOOPT, + WSAEPROTONOSUPPORT, + WSAESOCKTNOSUPPORT, + WSAEOPNOTSUPP, + WSAEPFNOSUPPORT, + WSAEAFNOSUPPORT, + WSAEADDRINUSE, + WSAEADDRNOTAVAIL, + WSAENETDOWN, + WSAENETUNREACH, + WSAENETRESET, + WSAECONNABORTED, + WSAECONNRESET, + WSAENOBUFS, + WSAEISCONN, + WSAENOTCONN, + WSAESHUTDOWN, + WSAETOOMANYREFS, + WSAETIMEDOUT, + WSAECONNREFUSED, + WSAELOOP, + WSAENAMETOOLONG, + WSAEHOSTDOWN, + WSAEHOSTUNREACH, + WSAENOTEMPTY, + WSAEPROCLIM, + WSAEUSERS, + WSAEDQUOT, + WSAESTALE, + WSAEREMOTE, // = 10071 + WSASYSNOTREADY = 10091, + WSAVERNOTSUPPORTED, + WSANOTINITIALISED, // = 10093 + WSAEDISCON = 10101, + WSAENOMORE, + WSAECANCELLED, + WSAEINVALIDPROCTABLE, + WSAEINVALIDPROVIDER, + WSAEPROVIDERFAILEDINIT, + WSASYSCALLFAILURE, + WSASERVICE_NOT_FOUND, + WSATYPE_NOT_FOUND, + WSA_E_NO_MORE, + WSA_E_CANCELLED, + WSAEREFUSED, // = 10112 + WSAHOST_NOT_FOUND = 11001, + WSATRY_AGAIN, + WSANO_RECOVERY, + WSANO_DATA, + WSA_QOS_RECEIVERS, + WSA_QOS_SENDERS, + WSA_QOS_NO_SENDERS, + WSA_QOS_NO_RECEIVERS, + WSA_QOS_REQUEST_CONFIRMED, + WSA_QOS_ADMISSION_FAILURE, + WSA_QOS_POLICY_FAILURE, + WSA_QOS_BAD_STYLE, + WSA_QOS_BAD_OBJECT, + WSA_QOS_TRAFFIC_CTRL_ERROR, + WSA_QOS_GENERIC_ERROR, + WSA_QOS_ESERVICETYPE, + WSA_QOS_EFLOWSPEC, + WSA_QOS_EPROVSPECBUF, + WSA_QOS_EFILTERSTYLE, + WSA_QOS_EFILTERTYPE, + WSA_QOS_EFILTERCOUNT, + WSA_QOS_EOBJLENGTH, + WSA_QOS_EFLOWCOUNT, + WSA_QOS_EUNKNOWNPSOBJ, + WSA_QOS_EPOLICYOBJ, + WSA_QOS_EFLOWDESC, + WSA_QOS_EPSFLOWSPEC, + WSA_QOS_EPSFILTERSPEC, + WSA_QOS_ESDMODEOBJ, + WSA_QOS_ESHAPERATEOBJ, + WSA_QOS_RESERVED_PETYPE, // = 11031 + ++/ + + ERROR_IPSEC_QM_POLICY_EXISTS = 13000, + ERROR_IPSEC_QM_POLICY_NOT_FOUND, + ERROR_IPSEC_QM_POLICY_IN_USE, + ERROR_IPSEC_MM_POLICY_EXISTS, + ERROR_IPSEC_MM_POLICY_NOT_FOUND, + ERROR_IPSEC_MM_POLICY_IN_USE, + ERROR_IPSEC_MM_FILTER_EXISTS, + ERROR_IPSEC_MM_FILTER_NOT_FOUND, + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS, + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND, + ERROR_IPSEC_MM_AUTH_EXISTS, + ERROR_IPSEC_MM_AUTH_NOT_FOUND, + ERROR_IPSEC_MM_AUTH_IN_USE, + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND, + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND, + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND, + ERROR_IPSEC_TUNNEL_FILTER_EXISTS, + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND, + ERROR_IPSEC_MM_FILTER_PENDING_DELETION, + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION, + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION, + ERROR_IPSEC_MM_POLICY_PENDING_DELETION, + ERROR_IPSEC_MM_AUTH_PENDING_DELETION, + ERROR_IPSEC_QM_POLICY_PENDING_DELETION, + WARNING_IPSEC_MM_POLICY_PRUNED, + WARNING_IPSEC_QM_POLICY_PRUNED, // = 13025 + ERROR_IPSEC_IKE_AUTH_FAIL = 13801, + ERROR_IPSEC_IKE_ATTRIB_FAIL, + ERROR_IPSEC_IKE_NEGOTIATION_PENDING, + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR, + ERROR_IPSEC_IKE_TIMED_OUT, + ERROR_IPSEC_IKE_NO_CERT, + ERROR_IPSEC_IKE_SA_DELETED, + ERROR_IPSEC_IKE_SA_REAPED, + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP, + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP, + ERROR_IPSEC_IKE_QUEUE_DROP_MM, + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM, + ERROR_IPSEC_IKE_DROP_NO_RESPONSE, + ERROR_IPSEC_IKE_MM_DELAY_DROP, + ERROR_IPSEC_IKE_QM_DELAY_DROP, + ERROR_IPSEC_IKE_ERROR, + ERROR_IPSEC_IKE_CRL_FAILED, + ERROR_IPSEC_IKE_INVALID_KEY_USAGE, + ERROR_IPSEC_IKE_INVALID_CERT_TYPE, + ERROR_IPSEC_IKE_NO_PRIVATE_KEY, // = 13820 + ERROR_IPSEC_IKE_DH_FAIL = 13822, + ERROR_IPSEC_IKE_INVALID_HEADER = 13824, + ERROR_IPSEC_IKE_NO_POLICY, + ERROR_IPSEC_IKE_INVALID_SIGNATURE, + ERROR_IPSEC_IKE_KERBEROS_ERROR, + ERROR_IPSEC_IKE_NO_PUBLIC_KEY, + ERROR_IPSEC_IKE_PROCESS_ERR, + ERROR_IPSEC_IKE_PROCESS_ERR_SA, + ERROR_IPSEC_IKE_PROCESS_ERR_PROP, + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS, + ERROR_IPSEC_IKE_PROCESS_ERR_KE, + ERROR_IPSEC_IKE_PROCESS_ERR_ID, + ERROR_IPSEC_IKE_PROCESS_ERR_CERT, + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ, + ERROR_IPSEC_IKE_PROCESS_ERR_HASH, + ERROR_IPSEC_IKE_PROCESS_ERR_SIG, + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE, + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY, + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE, + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR, + ERROR_IPSEC_IKE_INVALID_PAYLOAD, + ERROR_IPSEC_IKE_LOAD_SOFT_SA, + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN, + ERROR_IPSEC_IKE_INVALID_COOKIE, + ERROR_IPSEC_IKE_NO_PEER_CERT, + ERROR_IPSEC_IKE_PEER_CRL_FAILED, + ERROR_IPSEC_IKE_POLICY_CHANGE, + ERROR_IPSEC_IKE_NO_MM_POLICY, + ERROR_IPSEC_IKE_NOTCBPRIV, + ERROR_IPSEC_IKE_SECLOADFAIL, + ERROR_IPSEC_IKE_FAILSSPINIT, + ERROR_IPSEC_IKE_FAILQUERYSSP, + ERROR_IPSEC_IKE_SRVACQFAIL, + ERROR_IPSEC_IKE_SRVQUERYCRED, + ERROR_IPSEC_IKE_GETSPIFAIL, + ERROR_IPSEC_IKE_INVALID_FILTER, + ERROR_IPSEC_IKE_OUT_OF_MEMORY, + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED, + ERROR_IPSEC_IKE_INVALID_POLICY, + ERROR_IPSEC_IKE_UNKNOWN_DOI, + ERROR_IPSEC_IKE_INVALID_SITUATION, + ERROR_IPSEC_IKE_DH_FAILURE, + ERROR_IPSEC_IKE_INVALID_GROUP, + ERROR_IPSEC_IKE_ENCRYPT, + ERROR_IPSEC_IKE_DECRYPT, + ERROR_IPSEC_IKE_POLICY_MATCH, + ERROR_IPSEC_IKE_UNSUPPORTED_ID, + ERROR_IPSEC_IKE_INVALID_HASH, + ERROR_IPSEC_IKE_INVALID_HASH_ALG, + ERROR_IPSEC_IKE_INVALID_HASH_SIZE, + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG, + ERROR_IPSEC_IKE_INVALID_AUTH_ALG, + ERROR_IPSEC_IKE_INVALID_SIG, + ERROR_IPSEC_IKE_LOAD_FAILED, + ERROR_IPSEC_IKE_RPC_DELETE, + ERROR_IPSEC_IKE_BENIGN_REINIT, + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY, // = 13879 + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881, + ERROR_IPSEC_IKE_MM_LIMIT, + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED, + ERROR_IPSEC_IKE_NEG_STATUS_END, + ERROR_SXS_SECTION_NOT_FOUND, + ERROR_SXS_CANT_GEN_ACTCTX, + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT, + ERROR_SXS_ASSEMBLY_NOT_FOUND, + ERROR_SXS_MANIFEST_FORMAT_ERROR, + ERROR_SXS_MANIFEST_PARSE_ERROR, + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED, + ERROR_SXS_KEY_NOT_FOUND, + ERROR_SXS_VERSION_CONFLICT, + ERROR_SXS_WRONG_SECTION_TYPE, + ERROR_SXS_THREAD_QUERIES_DISABLED, + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET, + ERROR_SXS_UNKNOWN_ENCODING_GROUP, + ERROR_SXS_UNKNOWN_ENCODING, + ERROR_SXS_INVALID_XML_NAMESPACE_URI, + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED, + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED, + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE, + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE, + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE, + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT, + ERROR_SXS_DUPLICATE_DLL_NAME, + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME, + ERROR_SXS_DUPLICATE_CLSID, + ERROR_SXS_DUPLICATE_IID, + ERROR_SXS_DUPLICATE_TLBID, + ERROR_SXS_DUPLICATE_PROGID, + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME, + ERROR_SXS_FILE_HASH_MISMATCH, + ERROR_SXS_POLICY_PARSE_ERROR, + ERROR_SXS_XML_E_MISSINGQUOTE, + ERROR_SXS_XML_E_COMMENTSYNTAX, + ERROR_SXS_XML_E_BADSTARTNAMECHAR, + ERROR_SXS_XML_E_BADNAMECHAR, + ERROR_SXS_XML_E_BADCHARINSTRING, + ERROR_SXS_XML_E_XMLDECLSYNTAX, + ERROR_SXS_XML_E_BADCHARDATA, + ERROR_SXS_XML_E_MISSINGWHITESPACE, + ERROR_SXS_XML_E_EXPECTINGTAGEND, + ERROR_SXS_XML_E_MISSINGSEMICOLON, + ERROR_SXS_XML_E_UNBALANCEDPAREN, + ERROR_SXS_XML_E_INTERNALERROR, + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE, + ERROR_SXS_XML_E_INCOMPLETE_ENCODING, + ERROR_SXS_XML_E_MISSING_PAREN, + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE, + ERROR_SXS_XML_E_MULTIPLE_COLONS, + ERROR_SXS_XML_E_INVALID_DECIMAL, + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL, + ERROR_SXS_XML_E_INVALID_UNICODE, + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK, + ERROR_SXS_XML_E_UNEXPECTEDENDTAG, + ERROR_SXS_XML_E_UNCLOSEDTAG, + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE, + ERROR_SXS_XML_E_MULTIPLEROOTS, + ERROR_SXS_XML_E_INVALIDATROOTLEVEL, + ERROR_SXS_XML_E_BADXMLDECL, + ERROR_SXS_XML_E_MISSINGROOT, + ERROR_SXS_XML_E_UNEXPECTEDEOF, + ERROR_SXS_XML_E_BADPEREFINSUBSET, + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG, + ERROR_SXS_XML_E_UNCLOSEDENDTAG, + ERROR_SXS_XML_E_UNCLOSEDSTRING, + ERROR_SXS_XML_E_UNCLOSEDCOMMENT, + ERROR_SXS_XML_E_UNCLOSEDDECL, + ERROR_SXS_XML_E_UNCLOSEDCDATA, + ERROR_SXS_XML_E_RESERVEDNAMESPACE, + ERROR_SXS_XML_E_INVALIDENCODING, + ERROR_SXS_XML_E_INVALIDSWITCH, + ERROR_SXS_XML_E_BADXMLCASE, + ERROR_SXS_XML_E_INVALID_STANDALONE, + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE, + ERROR_SXS_XML_E_INVALID_VERSION, + ERROR_SXS_XML_E_MISSINGEQUALS, + ERROR_SXS_PROTECTION_RECOVERY_FAILED, + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT, + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID, + ERROR_SXS_UNTRANSLATABLE_HRESULT, + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING, + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE, + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME // = 14080 +} + +enum : HRESULT { + S_OK = 0x00000000, + S_FALSE = 0x00000001, + + NOERROR = 0x00000000, + + E_PENDING = 0x8000000A, + E_NOTIMPL = 0x80004001, + E_NOINTERFACE = 0x80004002, + E_POINTER = 0x80004003, + E_ABORT = 0x80004004, + E_FAIL = 0x80004005, + E_ACCESSDENIED = 0x80070005, + E_HANDLE = 0x80070006, + E_OUTOFMEMORY = 0x8007000E, + E_INVALIDARG = 0x80070057, + E_UNEXPECTED = 0x8000FFFF, + + CO_E_INIT_TLS = 0x80004006, + CO_E_INIT_SHARED_ALLOCATOR = 0x80004007, + CO_E_INIT_MEMORY_ALLOCATOR = 0x80004008, + CO_E_INIT_CLASS_CACHE = 0x80004009, + CO_E_INIT_RPC_CHANNEL = 0x8000400A, + CO_E_INIT_TLS_SET_CHANNEL_CONTROL = 0x8000400B, + CO_E_INIT_TLS_CHANNEL_CONTROL = 0x8000400C, + CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = 0x8000400D, + CO_E_INIT_SCM_MUTEX_EXISTS = 0x8000400E, + CO_E_INIT_SCM_FILE_MAPPING_EXISTS = 0x8000400F, + CO_E_INIT_SCM_MAP_VIEW_OF_FILE = 0x80004010, + CO_E_INIT_SCM_EXEC_FAILURE = 0x80004011, + CO_E_INIT_ONLY_SINGLE_THREADED = 0x80004012, + + RPC_E_CALL_REJECTED = 0x80010001, + RPC_E_CALL_CANCELED = 0x80010002, + RPC_E_CANTPOST_INSENDCALL = 0x80010003, + RPC_E_CANTCALLOUT_INASYNCCALL = 0x80010004, + RPC_E_CANTCALLOUT_INEXTERNALCALL = 0x80010005, + RPC_E_CONNECTION_TERMINATED = 0x80010006, + RPC_E_SERVER_DIED = 0x80010007, + RPC_E_CLIENT_DIED = 0x80010008, + RPC_E_INVALID_DATAPACKET = 0x80010009, + RPC_E_CANTTRANSMIT_CALL = 0x8001000A, + RPC_E_CLIENT_CANTMARSHAL_DATA = 0x8001000B, + RPC_E_CLIENT_CANTUNMARSHAL_DATA = 0x8001000C, + RPC_E_SERVER_CANTMARSHAL_DATA = 0x8001000D, + RPC_E_SERVER_CANTUNMARSHAL_DATA = 0x8001000E, + RPC_E_INVALID_DATA = 0x8001000F, + RPC_E_INVALID_PARAMETER = 0x80010010, + RPC_E_CANTCALLOUT_AGAIN = 0x80010011, + RPC_E_SERVER_DIED_DNE = 0x80010012, + RPC_E_SYS_CALL_FAILED = 0x80010100, + RPC_E_OUT_OF_RESOURCES = 0x80010101, + RPC_E_ATTEMPTED_MULTITHREAD = 0x80010102, + RPC_E_NOT_REGISTERED = 0x80010103, + RPC_E_FAULT = 0x80010104, + RPC_E_SERVERFAULT = 0x80010105, + RPC_E_CHANGED_MODE = 0x80010106, + RPC_E_INVALIDMETHOD = 0x80010107, + RPC_E_DISCONNECTED = 0x80010108, + RPC_E_RETRY = 0x80010109, + RPC_E_SERVERCALL_RETRYLATER = 0x8001010A, + RPC_E_SERVERCALL_REJECTED = 0x8001010B, + RPC_E_INVALID_CALLDATA = 0x8001010C, + RPC_E_CANTCALLOUT_ININPUTSYNCCALL = 0x8001010D, + RPC_E_WRONG_THREAD = 0x8001010E, + RPC_E_THREAD_NOT_INIT = 0x8001010F, + RPC_E_UNEXPECTED = 0x8001FFFF, + + DISP_E_UNKNOWNINTERFACE = 0x80020001, + DISP_E_MEMBERNOTFOUND = 0x80020003, + DISP_E_PARAMNOTFOUND = 0x80020004, + DISP_E_TYPEMISMATCH = 0x80020005, + DISP_E_UNKNOWNNAME = 0x80020006, + DISP_E_NONAMEDARGS = 0x80020007, + DISP_E_BADVARTYPE = 0x80020008, + DISP_E_EXCEPTION = 0x80020009, + DISP_E_OVERFLOW = 0x8002000A, + DISP_E_BADINDEX = 0x8002000B, + DISP_E_UNKNOWNLCID = 0x8002000C, + DISP_E_ARRAYISLOCKED = 0x8002000D, + DISP_E_BADPARAMCOUNT = 0x8002000E, + DISP_E_PARAMNOTOPTIONAL = 0x8002000F, + DISP_E_BADCALLEE = 0x80020010, + DISP_E_NOTACOLLECTION = 0x80020011, + DISP_E_DIVBYZERO = 0x80020012, + + TYPE_E_BUFFERTOOSMALL = 0x80028016, + TYPE_E_INVDATAREAD = 0x80028018, + TYPE_E_UNSUPFORMAT = 0x80028019, + TYPE_E_REGISTRYACCESS = 0x8002801C, + TYPE_E_LIBNOTREGISTERED = 0x8002801D, + TYPE_E_UNDEFINEDTYPE = 0x80028027, + TYPE_E_QUALIFIEDNAMEDISALLOWED = 0x80028028, + TYPE_E_INVALIDSTATE = 0x80028029, + TYPE_E_WRONGTYPEKIND = 0x8002802A, + TYPE_E_ELEMENTNOTFOUND = 0x8002802B, + TYPE_E_AMBIGUOUSNAME = 0x8002802C, + TYPE_E_NAMECONFLICT = 0x8002802D, + TYPE_E_UNKNOWNLCID = 0x8002802E, + TYPE_E_DLLFUNCTIONNOTFOUND = 0x8002802F, + TYPE_E_BADMODULEKIND = 0x800288BD, + TYPE_E_SIZETOOBIG = 0x800288C5, + TYPE_E_DUPLICATEID = 0x800288C6, + TYPE_E_INVALIDID = 0x800288CF, + TYPE_E_TYPEMISMATCH = 0x80028CA0, + TYPE_E_OUTOFBOUNDS = 0x80028CA1, + TYPE_E_IOERROR = 0x80028CA2, + TYPE_E_CANTCREATETMPFILE = 0x80028CA3, + TYPE_E_CANTLOADLIBRARY = 0x80029C4A, + TYPE_E_INCONSISTENTPROPFUNCS = 0x80029C83, + TYPE_E_CIRCULARTYPE = 0x80029C84, + + STG_E_INVALIDFUNCTION = 0x80030001, + STG_E_FILENOTFOUND = 0x80030002, + STG_E_PATHNOTFOUND = 0x80030003, + STG_E_TOOMANYOPENFILES = 0x80030004, + STG_E_ACCESSDENIED = 0x80030005, + STG_E_INVALIDHANDLE = 0x80030006, + STG_E_INSUFFICIENTMEMORY = 0x80030008, + STG_E_INVALIDPOINTER = 0x80030009, + STG_E_NOMOREFILES = 0x80030012, + STG_E_DISKISWRITEPROTECTED = 0x80030013, + STG_E_SEEKERROR = 0x80030019, + STG_E_WRITEFAULT = 0x8003001D, + STG_E_READFAULT = 0x8003001E, + STG_E_SHAREVIOLATION = 0x80030020, + STG_E_LOCKVIOLATION = 0x80030021, + STG_E_FILEALREADYEXISTS = 0x80030050, + STG_E_INVALIDPARAMETER = 0x80030057, + STG_E_MEDIUMFULL = 0x80030070, + STG_E_ABNORMALAPIEXIT = 0x800300FA, + STG_E_INVALIDHEADER = 0x800300FB, + STG_E_INVALIDNAME = 0x800300FC, + STG_E_UNKNOWN = 0x800300FD, + STG_E_UNIMPLEMENTEDFUNCTION = 0x800300FE, + STG_E_INVALIDFLAG = 0x800300FF, + STG_E_INUSE = 0x80030100, + STG_E_NOTCURRENT = 0x80030101, + STG_E_REVERTED = 0x80030102, + STG_E_CANTSAVE = 0x80030103, + STG_E_OLDFORMAT = 0x80030104, + STG_E_OLDDLL = 0x80030105, + STG_E_SHAREREQUIRED = 0x80030106, + STG_E_NOTFILEBASEDSTORAGE = 0x80030107, + STG_E_EXTANTMARSHALLINGS = 0x80030108, + STG_S_CONVERTED = 0x00030200, + + OLE_E_FIRST = 0x80040000, + OLE_S_FIRST = 0x00040000, + OLE_E_OLEVERB = 0x80040000, + OLE_S_USEREG = 0x00040000, + OLE_E_ADVF = 0x80040001, + OLE_S_STATIC = 0x00040001, + OLE_E_ENUM_NOMORE = 0x80040002, + OLE_S_MAC_CLIPFORMAT = 0x00040002, + OLE_E_ADVISENOTSUPPORTED = 0x80040003, + OLE_E_NOCONNECTION = 0x80040004, + OLE_E_NOTRUNNING = 0x80040005, + OLE_E_NOCACHE = 0x80040006, + OLE_E_BLANK = 0x80040007, + OLE_E_CLASSDIFF = 0x80040008, + OLE_E_CANT_GETMONIKER = 0x80040009, + OLE_E_CANT_BINDTOSOURCE = 0x8004000A, + OLE_E_STATIC = 0x8004000B, + OLE_E_PROMPTSAVECANCELLED = 0x8004000C, + OLE_E_INVALIDRECT = 0x8004000D, + OLE_E_WRONGCOMPOBJ = 0x8004000E, + OLE_E_INVALIDHWND = 0x8004000F, + OLE_E_NOT_INPLACEACTIVE = 0x80040010, + OLE_E_CANTCONVERT = 0x80040011, + OLE_E_NOSTORAGE = 0x80040012, + + DV_E_FORMATETC = 0x80040064, + DV_E_DVTARGETDEVICE = 0x80040065, + DV_E_STGMEDIUM = 0x80040066, + DV_E_STATDATA = 0x80040067, + DV_E_LINDEX = 0x80040068, + DV_E_TYMED = 0x80040069, + DV_E_CLIPFORMAT = 0x8004006A, + DV_E_DVASPECT = 0x8004006B, + DV_E_DVTARGETDEVICE_SIZE = 0x8004006C, + DV_E_NOIVIEWOBJECT = 0x8004006D, + + OLE_E_LAST = 0x800400FF, + OLE_S_LAST = 0x000400FF, + DRAGDROP_E_FIRST = 0x80040100, + DRAGDROP_S_FIRST = 0x00040100, + DRAGDROP_E_NOTREGISTERED = 0x80040100, + DRAGDROP_S_DROP = 0x00040100, + DRAGDROP_E_ALREADYREGISTERED = 0x80040101, + DRAGDROP_S_CANCEL = 0x00040101, + DRAGDROP_E_INVALIDHWND = 0x80040102, + DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102, + DRAGDROP_E_LAST = 0x8004010F, + DRAGDROP_S_LAST = 0x0004010F, + CLASSFACTORY_E_FIRST = 0x80040110, + CLASSFACTORY_S_FIRST = 0x00040110, + CLASS_E_NOAGGREGATION = 0x80040110, + CLASS_E_CLASSNOTAVAILABLE = 0x80040111, + CLASSFACTORY_E_LAST = 0x8004011F, + CLASSFACTORY_S_LAST = 0x0004011F, + MARSHAL_E_FIRST = 0x80040120, + MARSHAL_S_FIRST = 0x00040120, + MARSHAL_E_LAST = 0x8004012F, + MARSHAL_S_LAST = 0x0004012F, + DATA_E_FIRST = 0x80040130, + DATA_S_FIRST = 0x00040130, + DATA_S_SAMEFORMATETC = 0x00040130, + DATA_E_LAST = 0x8004013F, + DATA_S_LAST = 0x0004013F, + VIEW_E_FIRST = 0x80040140, + VIEW_S_FIRST = 0x00040140, + VIEW_E_DRAW = 0x80040140, + VIEW_S_ALREADY_FROZEN = 0x00040140, + VIEW_E_LAST = 0x8004014F, + VIEW_S_LAST = 0x0004014F, + REGDB_E_FIRST = 0x80040150, + REGDB_S_FIRST = 0x00040150, + REGDB_E_READREGDB = 0x80040150, + REGDB_E_WRITEREGDB = 0x80040151, + REGDB_E_KEYMISSING = 0x80040152, + REGDB_E_INVALIDVALUE = 0x80040153, + REGDB_E_CLASSNOTREG = 0x80040154, + REGDB_E_IIDNOTREG = 0x80040155, + REGDB_E_LAST = 0x8004015F, + REGDB_S_LAST = 0x0004015F, + CACHE_E_FIRST = 0x80040170, + CACHE_S_FIRST = 0x00040170, + CACHE_E_NOCACHE_UPDATED = 0x80040170, + CACHE_S_FORMATETC_NOTSUPPORTED = 0x00040170, + CACHE_S_SAMECACHE = 0x00040171, + CACHE_S_SOMECACHES_NOTUPDATED = 0x00040172, + CACHE_E_LAST = 0x8004017F, + CACHE_S_LAST = 0x0004017F, + OLEOBJ_E_FIRST = 0x80040180, + OLEOBJ_S_FIRST = 0x00040180, + OLEOBJ_E_NOVERBS = 0x80040180, + OLEOBJ_S_INVALIDVERB = 0x00040180, + OLEOBJ_E_INVALIDVERB = 0x80040181, + OLEOBJ_S_CANNOT_DOVERB_NOW = 0x00040181, + OLEOBJ_S_INVALIDHWND = 0x00040182, + OLEOBJ_E_LAST = 0x8004018F, + OLEOBJ_S_LAST = 0x0004018F, + CLIENTSITE_E_FIRST = 0x80040190, + CLIENTSITE_S_FIRST = 0x00040190, + CLIENTSITE_E_LAST = 0x8004019F, + CLIENTSITE_S_LAST = 0x0004019F, + INPLACE_E_NOTUNDOABLE = 0x800401A0, + INPLACE_E_FIRST = 0x800401A0, + INPLACE_S_FIRST = 0x000401A0, + INPLACE_S_TRUNCATED = 0x000401A0, + INPLACE_E_NOTOOLSPACE = 0x800401A1, + INPLACE_E_LAST = 0x800401AF, + INPLACE_S_LAST = 0x000401AF, + ENUM_E_FIRST = 0x800401B0, + ENUM_S_FIRST = 0x000401B0, + ENUM_E_LAST = 0x800401BF, + ENUM_S_LAST = 0x000401BF, + CONVERT10_E_FIRST = 0x800401C0, + CONVERT10_S_FIRST = 0x000401C0, + CONVERT10_E_OLESTREAM_GET = 0x800401C0, + CONVERT10_S_NO_PRESENTATION = 0x000401C0, + CONVERT10_E_OLESTREAM_PUT = 0x800401C1, + CONVERT10_E_OLESTREAM_FMT = 0x800401C2, + CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = 0x800401C3, + CONVERT10_E_STG_FMT = 0x800401C4, + CONVERT10_E_STG_NO_STD_STREAM = 0x800401C5, + CONVERT10_E_STG_DIB_TO_BITMAP = 0x800401C6, + CONVERT10_E_LAST = 0x800401CF, + CONVERT10_S_LAST = 0x000401CF, + CLIPBRD_E_FIRST = 0x800401D0, + CLIPBRD_S_FIRST = 0x000401D0, + CLIPBRD_E_CANT_OPEN = 0x800401D0, + CLIPBRD_E_CANT_EMPTY = 0x800401D1, + CLIPBRD_E_CANT_SET = 0x800401D2, + CLIPBRD_E_BAD_DATA = 0x800401D3, + CLIPBRD_E_CANT_CLOSE = 0x800401D4, + CLIPBRD_E_LAST = 0x800401DF, + CLIPBRD_S_LAST = 0x000401DF, + MK_E_FIRST = 0x800401E0, + MK_S_FIRST = 0x000401E0, + MK_E_CONNECTMANUALLY = 0x800401E0, + MK_E_EXCEEDEDDEADLINE = 0x800401E1, + MK_E_NEEDGENERIC = 0x800401E2, + MK_S_REDUCED_TO_SELF = 0x000401E2, + MK_E_UNAVAILABLE = 0x800401E3, + MK_E_SYNTAX = 0x800401E4, + MK_S_ME = 0x000401E4, + MK_E_NOOBJECT = 0x800401E5, + MK_S_HIM = 0x000401E5, + MK_E_INVALIDEXTENSION = 0x800401E6, + MK_S_US = 0x000401E6, + MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = 0x800401E7, + MK_S_MONIKERALREADYREGISTERED = 0x000401E7, + MK_E_NOTBINDABLE = 0x800401E8, + MK_E_NOTBOUND = 0x800401E9, + MK_E_CANTOPENFILE = 0x800401EA, + MK_E_MUSTBOTHERUSER = 0x800401EB, + MK_E_NOINVERSE = 0x800401EC, + MK_E_NOSTORAGE = 0x800401ED, + MK_E_NOPREFIX = 0x800401EE, + MK_E_LAST = 0x800401EF, + MK_S_LAST = 0x000401EF, + MK_E_ENUMERATION_FAILED = 0x800401EF, + CO_E_FIRST = 0x800401F0, + CO_S_FIRST = 0x000401F0, + CO_E_NOTINITIALIZED = 0x800401F0, + CO_E_ALREADYINITIALIZED = 0x800401F1, + CO_E_CANTDETERMINECLASS = 0x800401F2, + CO_E_CLASSSTRING = 0x800401F3, + CO_E_IIDSTRING = 0x800401F4, + CO_E_APPNOTFOUND = 0x800401F5, + CO_E_APPSINGLEUSE = 0x800401F6, + CO_E_ERRORINAPP = 0x800401F7, + CO_E_DLLNOTFOUND = 0x800401F8, + CO_E_ERRORINDLL = 0x800401F9, + CO_E_WRONGOSFORAPP = 0x800401FA, + CO_E_OBJNOTREG = 0x800401FB, + CO_E_OBJISREG = 0x800401FC, + CO_E_OBJNOTCONNECTED = 0x800401FD, + CO_E_APPDIDNTREG = 0x800401FE, + CO_E_LAST = 0x800401FF, + CO_S_LAST = 0x000401FF, + CO_E_RELEASED = 0x800401FF, + + CO_E_CLASS_CREATE_FAILED = 0x80080001, + CO_E_SCM_ERROR = 0x80080002, + CO_E_SCM_RPC_FAILURE = 0x80080003, + CO_E_BAD_PATH = 0x80080004, + CO_E_SERVER_EXEC_FAILURE = 0x80080005, + CO_E_OBJSRV_RPC_FAILURE = 0x80080006, + MK_E_NO_NORMALIZED = 0x80080007, + CO_E_SERVER_STOPPING = 0x80080008, + MEM_E_INVALID_ROOT = 0x80080009, + MEM_E_INVALID_LINK = 0x80080010, + MEM_E_INVALID_SIZE = 0x80080011, + CO_S_NOTALLINTERFACES = 0x00080012, + + NTE_BAD_UID = 0x80090001, + NTE_BAD_HASH = 0x80090002, + NTE_BAD_KEY = 0x80090003, + NTE_BAD_LEN = 0x80090004, + NTE_BAD_DATA = 0x80090005, + NTE_BAD_SIGNATURE = 0x80090006, + NTE_BAD_VER = 0x80090007, + NTE_BAD_ALGID = 0x80090008, + NTE_BAD_FLAGS = 0x80090009, + NTE_BAD_TYPE = 0x8009000A, + NTE_BAD_KEY_STATE = 0x8009000B, + NTE_BAD_HASH_STATE = 0x8009000C, + NTE_NO_KEY = 0x8009000D, + NTE_NO_MEMORY = 0x8009000E, + NTE_EXISTS = 0x8009000F, + NTE_PERM = 0x80090010, + NTE_NOT_FOUND = 0x80090011, + NTE_DOUBLE_ENCRYPT = 0x80090012, + NTE_BAD_PROVIDER = 0x80090013, + NTE_BAD_PROV_TYPE = 0x80090014, + NTE_BAD_PUBLIC_KEY = 0x80090015, + NTE_BAD_KEYSET = 0x80090016, + NTE_PROV_TYPE_NOT_DEF = 0x80090017, + NTE_PROV_TYPE_ENTRY_BAD = 0x80090018, + NTE_KEYSET_NOT_DEF = 0x80090019, + NTE_KEYSET_ENTRY_BAD = 0x8009001A, + NTE_PROV_TYPE_NO_MATCH = 0x8009001B, + NTE_SIGNATURE_FILE_BAD = 0x8009001C, + NTE_PROVIDER_DLL_FAIL = 0x8009001D, + NTE_PROV_DLL_NOT_FOUND = 0x8009001E, + NTE_BAD_KEYSET_PARAM = 0x8009001F, + NTE_FAIL = 0x80090020, + NTE_SYS_ERR = 0x80090021 +} + + +enum : bool { + SEVERITY_SUCCESS = 0, + SEVERITY_ERROR = 1 +} + +enum : uint { + FACILITY_NULL = 0, + FACILITY_RPC, + FACILITY_DISPATCH, + FACILITY_STORAGE, + FACILITY_ITF, // = 4 + FACILITY_WIN32 = 7, + FACILITY_WINDOWS = 8, + FACILITY_CONTROL = 10, + FACILITY_NT_BIT = 0x10000000 +} + +// C Macros + +bool SUCCEEDED(HRESULT Status) { + return Status >= 0; +} + +bool FAILED(HRESULT Status) { + return Status < 0; +} + +bool IS_ERROR(HRESULT Status) { + return (Status >>> 31) == SEVERITY_ERROR; +} + +ushort HRESULT_CODE(HRESULT r) { + return cast(ushort) (r & 0xFFFF); +} + +ushort SCODE_CODE(SCODE r) { + return cast(ushort) (r & 0xFFFF); +} + +ushort HRESULT_FACILITY(HRESULT r) { + return cast(ushort) ((r>>16) & 0x1fff); +} + +ushort SCODE_FACILITY(SCODE r) { + return cast(ushort) ((r>>16) & 0x1fff); +} + +ushort HRESULT_SEVERITY(HRESULT r) { + return cast(ushort) ((r>>31) & 0x1); +} + +ushort SCODE_SEVERITY(SCODE r) { + return cast(ushort) ((r>>31) & 0x1); +} + +HRESULT MAKE_HRESULT(bool s, uint f, uint c) { + return (s << 31) | (f << 16) | c; +} + +SCODE MAKE_SCODE(bool s, uint f, uint c) { + return (s << 31) | (f << 16) | c; +} + +SCODE GetScode(HRESULT hr) { + return hr; +} + +HRESULT ResultFromScode(SCODE c) { + return c; +} + +HRESULT HRESULT_FROM_NT(HRESULT x) { + return x | FACILITY_NT_BIT; +} + +HRESULT HRESULT_FROM_WIN32(HRESULT x) { + return x ? (x & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000 : 0; +} + +HRESULT PropagateResult(HRESULT hrPrevious, SCODE scBase) { + return scBase; +} Index: src/win32/wingdi.d ================================================================== --- src/win32/wingdi.d +++ src/win32/wingdi.d @@ -1,5295 +1,4560 @@ - -/***********************************************************************\ -* wingdi.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.wingdi; -pragma(lib, "gdi32.lib"); - -// FIXME: clean up Windows version support - -private import win32.w32api, win32.windef, win32.winver; - -// BITMAPINFOHEADER.biCompression -enum : DWORD { - BI_RGB = 0, - BI_RLE8, - BI_RLE4, - BI_BITFIELDS, - BI_JPEG, - BI_PNG -} - -// --- -// COLORADJUSTMENT -- only for NT 3.1+, Win2000+ -const WORD -CA_NEGATIVE = 1, -CA_LOG_FILTER = 2; - -// COLORADJUSTMENT -enum : WORD { - ILLUMINANT_DEVICE_DEFAULT = 0, - ILLUMINANT_A, - ILLUMINANT_B, - ILLUMINANT_C, - ILLUMINANT_D50, - ILLUMINANT_D55, - ILLUMINANT_D65, - ILLUMINANT_D75, - ILLUMINANT_F2, - ILLUMINANT_MAX_INDEX = ILLUMINANT_F2, - ILLUMINANT_TUNGSTEN = ILLUMINANT_A, - ILLUMINANT_DAYLIGHT = ILLUMINANT_C, - ILLUMINANT_FLUORESCENT = ILLUMINANT_F2, - ILLUMINANT_NTSC = ILLUMINANT_C -} - -enum { - RGB_GAMMA_MIN = 2500, - RGB_GAMMA_MAX = 65000, - REFERENCE_WHITE_MIN = 6000, - REFERENCE_WHITE_MAX = 10000, - REFERENCE_BLACK_MIN = 0, - REFERENCE_BLACK_MAX = 4000, - COLOR_ADJ_MIN = -100, - COLOR_ADJ_MAX = 100, -} - -// --- - -/* FIXME: move to win32.winuser ? */ - -// DrawIconEx() -enum : UINT { - DI_MASK = 1, - DI_IMAGE = 2, - DI_NORMAL = 3, - DI_COMPAT = 4, - DI_DEFAULTSIZE = 8 -} - -// DOCINFO -enum : DWORD { - DI_APPBANDING = 1, - DI_ROPS_READ_DESTINATION = 2, -} - -// ENHMETAHEADER -enum : DWORD { - EMR_HEADER = 1, - EMR_POLYBEZIER, - EMR_POLYGON, - EMR_POLYLINE, - EMR_POLYBEZIERTO, - EMR_POLYLINETO, - EMR_POLYPOLYLINE, - EMR_POLYPOLYGON, - EMR_SETWINDOWEXTEX, - EMR_SETWINDOWORGEX, - EMR_SETVIEWPORTEXTEX, - EMR_SETVIEWPORTORGEX, - EMR_SETBRUSHORGEX, - EMR_EOF, - EMR_SETPIXELV, - EMR_SETMAPPERFLAGS, - EMR_SETMAPMODE, - EMR_SETBKMODE, - EMR_SETPOLYFILLMODE, - EMR_SETROP2, - EMR_SETSTRETCHBLTMODE, - EMR_SETTEXTALIGN, - EMR_SETCOLORADJUSTMENT, - EMR_SETTEXTCOLOR, - EMR_SETBKCOLOR, - EMR_OFFSETCLIPRGN, - EMR_MOVETOEX, - EMR_SETMETARGN, - EMR_EXCLUDECLIPRECT, - EMR_INTERSECTCLIPRECT, - EMR_SCALEVIEWPORTEXTEX, - EMR_SCALEWINDOWEXTEX, - EMR_SAVEDC, - EMR_RESTOREDC, - EMR_SETWORLDTRANSFORM, - EMR_MODIFYWORLDTRANSFORM, - EMR_SELECTOBJECT, - EMR_CREATEPEN, - EMR_CREATEBRUSHINDIRECT, - EMR_DELETEOBJECT, - EMR_ANGLEARC, - EMR_ELLIPSE, - EMR_RECTANGLE, - EMR_ROUNDRECT, - EMR_ARC, - EMR_CHORD, - EMR_PIE, - EMR_SELECTPALETTE, - EMR_CREATEPALETTE, - EMR_SETPALETTEENTRIES, - EMR_RESIZEPALETTE, - EMR_REALIZEPALETTE, - EMR_EXTFLOODFILL, - EMR_LINETO, - EMR_ARCTO, - EMR_POLYDRAW, - EMR_SETARCDIRECTION, - EMR_SETMITERLIMIT, - EMR_BEGINPATH, - EMR_ENDPATH, - EMR_CLOSEFIGURE, - EMR_FILLPATH, - EMR_STROKEANDFILLPATH, - EMR_STROKEPATH, - EMR_FLATTENPATH, - EMR_WIDENPATH, - EMR_SELECTCLIPPATH, - EMR_ABORTPATH, // 68 - // reserved 69 - EMR_GDICOMMENT = 70, - EMR_FILLRGN, - EMR_FRAMERGN, - EMR_INVERTRGN, - EMR_PAINTRGN, - EMR_EXTSELECTCLIPRGN, - EMR_BITBLT, - EMR_STRETCHBLT, - EMR_MASKBLT, - EMR_PLGBLT, - EMR_SETDIBITSTODEVICE, - EMR_STRETCHDIBITS, - EMR_EXTCREATEFONTINDIRECTW, - EMR_EXTTEXTOUTA, - EMR_EXTTEXTOUTW, - EMR_POLYBEZIER16, - EMR_POLYGON16, - EMR_POLYLINE16, - EMR_POLYBEZIERTO16, - EMR_POLYLINETO16, - EMR_POLYPOLYLINE16, - EMR_POLYPOLYGON16, - EMR_POLYDRAW16, - EMR_CREATEMONOBRUSH, - EMR_CREATEDIBPATTERNBRUSHPT, - EMR_EXTCREATEPEN, - EMR_POLYTEXTOUTA, - EMR_POLYTEXTOUTW, // 97 - EMR_SETICMMODE, - EMR_CREATECOLORSPACE, - EMR_SETCOLORSPACE, - EMR_DELETECOLORSPACE, - EMR_GLSRECORD, - EMR_GLSBOUNDEDRECORD, - EMR_PIXELFORMAT, // = 104 - // reserved 105 - 110 - EMR_COLORCORRECTPALETTE = 111, - EMR_SETICMPROFILEA, - EMR_SETICMPROFILEW, - EMR_ALPHABLEND, - EMR_SETLAYOUT, - EMR_TRANSPARENTBLT, // 116 - // reserved 117 - EMR_GRADIENTFILL = 118, - - // reserved 119, 120 - EMR_COLORMATCHTOTARGETW = 121, - EMR_CREATECOLORSPACEW // 122 -} - -const EMR_MIN = EMR_HEADER; - -static - -if (WINVER >= 0x0500) - const EMR_MAX = EMR_CREATECOLORSPACEW; -else static - - if (WINVER >= 0x0400) - const EMR_MAX = EMR_PIXELFORMAT; - else - const EMR_MAX = EMR_POLYTEXTOUTW; - -// ENHMETAHEADER.dSignature, ENHMETAHEADER3.dSignature, -// EMRFORMAT.dSignature -enum : DWORD { - ENHMETA_SIGNATURE = 1179469088, - EPS_SIGNATURE = 0x46535045 -} - -static - -if (_WIN32_WINNT >= 0x0500) -{ - // AddFontResourceEx() - enum : DWORD { - FR_PRIVATE = 0x10, - FR_NOT_ENUM = 0x20 - } -} - -enum { - META_SAVEDC = 0x1E, - META_REALIZEPALETTE = 0x35, - META_SETPALENTRIES = 0x37, - META_CREATEPALETTE = 0xf7, - META_SETBKMODE = 0x102, - META_SETMAPMODE = 0x103, - META_SETROP2 = 0x104, - META_SETRELABS = 0x105, - META_SETPOLYFILLMODE = 0x106, - META_SETSTRETCHBLTMODE = 0x107, - META_SETTEXTCHAREXTRA = 0x108, - META_RESTOREDC = 0x127, - META_INVERTREGION = 0x12A, - META_PAINTREGION = 0x12B, - META_SELECTCLIPREGION = 0x12C, - META_SELECTOBJECT = 0x12D, - META_SETTEXTALIGN = 0x12E, - META_RESIZEPALETTE = 0x139, - META_DIBCREATEPATTERNBRUSH = 0x142, - META_SETLAYOUT = 0x149, - META_DELETEOBJECT = 0x1F0, - META_CREATEPATTERNBRUSH = 0x1F9, - META_SETBKCOLOR = 0x201, - META_SETTEXTCOLOR = 0x209, - META_SETTEXTJUSTIFICATION = 0x20A, - META_SETWINDOWORG = 0x20B, - META_SETWINDOWEXT = 0x20C, - META_SETVIEWPORTORG = 0x20D, - META_SETVIEWPORTEXT = 0x20E, - META_OFFSETWINDOWORG = 0x20F, - META_OFFSETVIEWPORTORG = 0x211, - META_LINETO = 0x213, - META_MOVETO = 0x214, - META_OFFSETCLIPRGN = 0x220, - META_FILLREGION = 0x228, - META_SETMAPPERFLAGS = 0x231, - META_SELECTPALETTE = 0x234, - META_CREATEPENINDIRECT = 0x2FA, - META_CREATEFONTINDIRECT = 0x2FB, - META_CREATEBRUSHINDIRECT = 0x2FC, - META_POLYGON = 0x324, - META_POLYLINE = 0x325, - META_SCALEWINDOWEXT = 0x410, - META_SCALEVIEWPORTEXT = 0x412, - META_EXCLUDECLIPRECT = 0x415, - META_INTERSECTCLIPRECT = 0x416, - META_ELLIPSE = 0x418, - META_FLOODFILL = 0x419, - META_RECTANGLE = 0x41B, - META_SETPIXEL = 0x41F, - META_FRAMEREGION = 0x429, - META_ANIMATEPALETTE = 0x436, - META_TEXTOUT = 0x521, - META_POLYPOLYGON = 0x538, - META_EXTFLOODFILL = 0x548, - META_ROUNDRECT = 0x61C, - META_PATBLT = 0x61D, - META_ESCAPE = 0x626, - META_CREATEREGION = 0x6FF, - META_ARC = 0x817, - META_PIE = 0x81A, - META_CHORD = 0x830, - META_BITBLT = 0x922, - META_DIBBITBLT = 0x940, - META_EXTTEXTOUT = 0xA32, - META_STRETCHBLT = 0xB23, - META_DIBSTRETCHBLT = 0xB41, - META_SETDIBTODEV = 0xD33, - META_STRETCHDIB = 0xF43 -} - -// EMRPOLYDRAW -enum : BYTE { - PT_CLOSEFIGURE = 1, - PT_LINETO = 2, - PT_BEZIERTO = 4, - PT_MOVETO = 6 -} - -// ---- -// PIXELFORMATDESCRIPTOR.iPixelType -enum : BYTE { - PFD_TYPE_RGBA = 0, - PFD_TYPE_COLORINDEX = 1 -} - -deprecated { - // PIXELFORMATDESCRIPTOR. - const byte - PFD_MAIN_PLANE = 0, - PFD_OVERLAY_PLANE = 1, - PFD_UNDERLAY_PLANE = -1; -} - -// PIXELFORMATDESCRIPTOR.dwFlags -const DWORD -PFD_DOUBLEBUFFER = 0x00000001, -PFD_STEREO = 0x00000002, -PFD_DRAW_TO_WINDOW = 0x00000004, -PFD_DRAW_TO_BITMAP = 0x00000008, -PFD_SUPPORT_GDI = 0x00000010, -PFD_SUPPORT_OPENGL = 0x00000020, -PFD_GENERIC_FORMAT = 0x00000040, -PFD_NEED_PALETTE = 0x00000080, -PFD_NEED_SYSTEM_PALETTE = 0x00000100, -PFD_SWAP_EXCHANGE = 0x00000200, -PFD_SWAP_COPY = 0x00000400, -PFD_SWAP_LAYER_BUFFERS = 0x00000800, -PFD_GENERIC_ACCELERATED = 0x00001000, -PFD_SUPPORT_DIRECTDRAW = 0x00002000, - -/* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ -PFD_DEPTH_DONTCARE = 0x20000000, -PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, -PFD_STEREO_DONTCARE = 0x80000000; - -// ---- - -const DWORD -BLACKNESS = 0x000042, -NOTSRCERASE = 0x1100A6, -NOTSRCCOPY = 0x330008, -SRCERASE = 0x440328, -DSTINVERT = 0x550009, -PATINVERT = 0x5A0049, -SRCINVERT = 0x660046, -SRCAND = 0x8800C6, -MERGEPAINT = 0xBB0226, -MERGECOPY = 0xC000CA, -SRCCOPY = 0xCC0020, -SRCPAINT = 0xEE0086, -PATCOPY = 0xF00021, -PATPAINT = 0xFB0A09, -WHITENESS = 0xFF0062; -static - -if (WINVER >= 0x0500) -{ - const DWORD - NOMIRRORBITMAP = 0x80000000, - CAPTUREBLT = 0x40000000; -} - -// GetROP2(), SetROP2() -enum : int { - R2_BLACK = 1, - R2_NOTMERGEPEN = 2, - R2_MASKNOTPEN = 3, - R2_NOTCOPYPEN = 4, - R2_MASKPENNOT = 5, - R2_NOT = 6, - R2_XORPEN = 7, - R2_NOTMASKPEN = 8, - R2_MASKPEN = 9, - R2_NOTXORPEN = 10, - R2_NOP = 11, - R2_MERGENOTPEN = 12, - R2_COPYPEN = 13, - R2_MERGEPENNOT = 14, - R2_MERGEPEN = 15, - R2_WHITE = 16 -} - -const R2_LAST = R2_WHITE; - -// CheckColorsInGamut() -const ubyte -CM_IN_GAMUT = 0, -CM_OUT_OF_GAMUT = 255; - -/* UpdateICMRegKey Constants */ -const int -ICM_ADDPROFILE = 1, -ICM_DELETEPROFILE = 2, -ICM_QUERYPROFILE = 3, -ICM_SETDEFAULTPROFILE = 4, -ICM_REGISTERICMATCHER = 5, -ICM_UNREGISTERICMATCHER = 6, -ICM_QUERYMATCH = 7; - -enum : int { - RGN_AND = 1, - RGN_OR = 2, - RGN_XOR = 3, - RGN_DIFF = 4, - RGN_COPY = 5 -} - -const RGN_MIN = RGN_AND; -const RGN_MAX = RGN_COPY; - -// Return values for CombineRgn() -enum { - NULLREGION = 1, - SIMPLEREGION = 2, - COMPLEXREGION = 3 -} - -const ERROR = 0; -alias ERROR RGN_ERROR; - -// CreateDIBitmap() -const DWORD CBM_INIT = 4; - -// CreateDIBitmap() -enum : UINT { - DIB_RGB_COLORS = 0, - DIB_PAL_COLORS = 1 -} - -// --- -// Values for LOGFONT and CreateFont() - -// FIXME: For D, replace with lfFaceName.length() -const LF_FACESIZE = 32; -const LF_FULLFACESIZE = 64; - -// FIXME: Not needed for D, only EXTLOGFONT -const ELF_VENDOR_SIZE = 4; - -// ??? -const ELF_VERSION = 0; -const ELF_CULTURE_LATIN = 0; - -// LOGFONT.lfWeight -const LONG -FW_DONTCARE = 0, -FW_THIN = 100, -FW_EXTRALIGHT = 200, -FW_ULTRALIGHT = FW_EXTRALIGHT, -FW_LIGHT = 300, -FW_NORMAL = 400, -FW_REGULAR = FW_NORMAL, -FW_MEDIUM = 500, -FW_SEMIBOLD = 600, -FW_DEMIBOLD = FW_SEMIBOLD, -FW_BOLD = 700, -FW_EXTRABOLD = 800, -FW_ULTRABOLD = FW_EXTRABOLD, -FW_HEAVY = 900, -FW_BLACK = FW_HEAVY; - -// LOGFONT.lfCharSet -enum : DWORD { - ANSI_CHARSET = 0, - DEFAULT_CHARSET = 1, - SYMBOL_CHARSET = 2, - MAC_CHARSET = 77, - SHIFTJIS_CHARSET = 128, - HANGEUL_CHARSET = 129, - HANGUL_CHARSET = 129, - JOHAB_CHARSET = 130, - GB2312_CHARSET = 134, - CHINESEBIG5_CHARSET = 136, - GREEK_CHARSET = 161, - TURKISH_CHARSET = 162, - VIETNAMESE_CHARSET = 163, - HEBREW_CHARSET = 177, - ARABIC_CHARSET = 178, - BALTIC_CHARSET = 186, - RUSSIAN_CHARSET = 204, - THAI_CHARSET = 222, - EASTEUROPE_CHARSET = 238, - OEM_CHARSET = 255 -} - -// LOGFONT.lfOutPrecision -enum : BYTE { - OUT_DEFAULT_PRECIS = 0, - OUT_STRING_PRECIS, - OUT_CHARACTER_PRECIS, - OUT_STROKE_PRECIS, - OUT_TT_PRECIS, - OUT_DEVICE_PRECIS, - OUT_RASTER_PRECIS, - OUT_TT_ONLY_PRECIS, - OUT_OUTLINE_PRECIS, - OUT_SCREEN_OUTLINE_PRECIS, - OUT_PS_ONLY_PRECIS, // 10 -} - -// LOGFONT.lfClipPrecision -enum : BYTE { - CLIP_DEFAULT_PRECIS = 0, - CLIP_CHARACTER_PRECIS = 1, - CLIP_STROKE_PRECIS = 2, - CLIP_MASK = 15, - CLIP_LH_ANGLES = 16, - CLIP_TT_ALWAYS = 32, - CLIP_DFA_DISABLE = 64, - CLIP_EMBEDDED = 128 -} - -// LOGFONT.lfQuality -enum : BYTE { - DEFAULT_QUALITY = 0, - DRAFT_QUALITY, - PROOF_QUALITY, - NONANTIALIASED_QUALITY, - ANTIALIASED_QUALITY -} - -// LOGFONT.lfPitchAndFamily - -const BYTE -DEFAULT_PITCH = 0, -FIXED_PITCH = 1, -VARIABLE_PITCH = 2, -MONO_FONT = 8, -FF_DONTCARE = 0, -FF_ROMAN = 16, -FF_SWISS = 32, -FF_SCRIPT = 64, -FF_MODERN = 48, -FF_DECORATIVE = 80; - -// ---- -// Enums for the PANOSE struct - -const PANOSE_COUNT=10; - -enum { - PAN_FAMILYTYPE_INDEX = 0, - PAN_SERIFSTYLE_INDEX, - PAN_WEIGHT_INDEX, - PAN_PROPORTION_INDEX, - PAN_CONTRAST_INDEX, - PAN_STROKEVARIATION_INDEX, - PAN_ARMSTYLE_INDEX, - PAN_LETTERFORM_INDEX, - PAN_MIDLINE_INDEX, - PAN_XHEIGHT_INDEX -} - -const PAN_CULTURE_LATIN=0; - -// NOTE: the first two values (PAN_ANY and PAN_NO_FIT) apply to all these enums! -enum : BYTE { - PAN_ANY = 0, - PAN_NO_FIT = 1, -} - -enum : BYTE { - PAN_FAMILY_TEXT_DISPLAY = 2, - PAN_FAMILY_SCRIPT, - PAN_FAMILY_DECORATIVE, - PAN_FAMILY_PICTORIAL -} -enum : BYTE { - PAN_SERIF_COVE = 2, - PAN_SERIF_OBTUSE_COVE, - PAN_SERIF_SQUARE_COVE, - PAN_SERIF_OBTUSE_SQUARE_COVE, - PAN_SERIF_SQUARE, - PAN_SERIF_THIN, - PAN_SERIF_BONE, - PAN_SERIF_EXAGGERATED, - PAN_SERIF_TRIANGLE, - PAN_SERIF_NORMAL_SANS, - PAN_SERIF_OBTUSE_SANS, - PAN_SERIF_PERP_SANS, - PAN_SERIF_FLARED, - PAN_SERIF_ROUNDED -} - -enum : BYTE { - PAN_WEIGHT_VERY_LIGHT = 2, - PAN_WEIGHT_LIGHT, - PAN_WEIGHT_THIN, - PAN_WEIGHT_BOOK, - PAN_WEIGHT_MEDIUM, - PAN_WEIGHT_DEMI, - PAN_WEIGHT_BOLD, - PAN_WEIGHT_HEAVY, - PAN_WEIGHT_BLACK, - PAN_WEIGHT_NORD -} - -enum : BYTE { - PAN_PROP_OLD_STYLE = 2, - PAN_PROP_MODERN, - PAN_PROP_EVEN_WIDTH, - PAN_PROP_EXPANDED, - PAN_PROP_CONDENSED, - PAN_PROP_VERY_EXPANDED, - PAN_PROP_VERY_CONDENSED, - PAN_PROP_MONOSPACED -} - -enum : BYTE { - PAN_CONTRAST_NONE = 2, - PAN_CONTRAST_VERY_LOW, - PAN_CONTRAST_LOW, - PAN_CONTRAST_MEDIUM_LOW, - PAN_CONTRAST_MEDIUM, - PAN_CONTRAST_MEDIUM_HIGH, - PAN_CONTRAST_HIGH, - PAN_CONTRAST_VERY_HIGH -} - -// PANOSE.bStrokeVariation -enum : BYTE { - PAN_STROKE_GRADUAL_DIAG = 2, - PAN_STROKE_GRADUAL_TRAN, - PAN_STROKE_GRADUAL_VERT, - PAN_STROKE_GRADUAL_HORZ, - PAN_STROKE_RAPID_VERT, - PAN_STROKE_RAPID_HORZ, - PAN_STROKE_INSTANT_VERT -} - -// PANOSE.bArmStyle -enum : BYTE { - PAN_STRAIGHT_ARMS_HORZ = 2, - PAN_STRAIGHT_ARMS_WEDGE, - PAN_STRAIGHT_ARMS_VERT, - PAN_STRAIGHT_ARMS_SINGLE_SERIF, - PAN_STRAIGHT_ARMS_DOUBLE_SERIF, - PAN_BENT_ARMS_HORZ, - PAN_BENT_ARMS_WEDGE, - PAN_BENT_ARMS_VERT, - PAN_BENT_ARMS_SINGLE_SERIF, - PAN_BENT_ARMS_DOUBLE_SERIF -} - -// PANOSE.bLetterForm -enum : BYTE { - PAN_LETT_NORMAL_CONTACT = 2, - PAN_LETT_NORMAL_WEIGHTED, - PAN_LETT_NORMAL_BOXED, - PAN_LETT_NORMAL_FLATTENED, - PAN_LETT_NORMAL_ROUNDED, - PAN_LETT_NORMAL_OFF_CENTER, - PAN_LETT_NORMAL_SQUARE, - PAN_LETT_OBLIQUE_CONTACT, - PAN_LETT_OBLIQUE_WEIGHTED, - PAN_LETT_OBLIQUE_BOXED, - PAN_LETT_OBLIQUE_FLATTENED, - PAN_LETT_OBLIQUE_ROUNDED, - PAN_LETT_OBLIQUE_OFF_CENTER, - PAN_LETT_OBLIQUE_SQUARE -} - -// PANOSE.bMidLine -enum : BYTE { - PAN_MIDLINE_STANDARD_TRIMMED = 2, - PAN_MIDLINE_STANDARD_POINTED, - PAN_MIDLINE_STANDARD_SERIFED, - PAN_MIDLINE_HIGH_TRIMMED, - PAN_MIDLINE_HIGH_POINTED, - PAN_MIDLINE_HIGH_SERIFED, - PAN_MIDLINE_CONSTANT_TRIMMED, - PAN_MIDLINE_CONSTANT_POINTED, - PAN_MIDLINE_CONSTANT_SERIFED, - PAN_MIDLINE_LOW_TRIMMED, - PAN_MIDLINE_LOW_POINTED, - PAN_MIDLINE_LOW_SERIFED -} - -// PANOSE.bXHeight -enum : BYTE { - PAN_XHEIGHT_CONSTANT_SMALL = 2, - PAN_XHEIGHT_CONSTANT_STD, - PAN_XHEIGHT_CONSTANT_LARGE, - PAN_XHEIGHT_DUCKING_SMALL, - PAN_XHEIGHT_DUCKING_STD, - PAN_XHEIGHT_DUCKING_LARGE -} - -// ---- -// ??? -const FS_LATIN1 = 0x00000001; -const FS_LATIN2 = 0x00000002; -const FS_CYRILLIC = 0x00000004; -const FS_GREEK = 0x00000008; -const FS_TURKISH = 0x00000010; -const FS_HEBREW = 0x00000020; -const FS_ARABIC = 0x00000040; -const FS_BALTIC = 0x00000080; -const FS_VIETNAMESE = 0x00000100; -const FS_THAI = 0x00010000; -const FS_JISJAPAN = 0x00020000; -const FS_CHINESESIMP = 0x00040000; -const FS_WANSUNG = 0x00080000; -const FS_CHINESETRAD = 0x00100000; -const FS_JOHAB = 0x00200000; -const FS_SYMBOL = 0x80000000; - -// ---- -// Poly Fill Mode -enum : int { - ALTERNATE = 1, - WINDING = 2 -} -const int POLYFILL_LAST = WINDING; - -// --- -// LOGBRUSH -enum : LONG { - HS_HORIZONTAL = 0, - HS_VERTICAL, - HS_FDIAGONAL, - HS_BDIAGONAL, - HS_CROSS, - HS_DIAGCROSS -} - -// LOGBRUSH.lbStyle -enum : UINT { - BS_SOLID = 0, - BS_NULL = 1, - BS_HOLLOW = BS_NULL, - BS_HATCHED, - BS_PATTERN, - BS_INDEXED, - BS_DIBPATTERN, - BS_DIBPATTERNPT, - BS_PATTERN8X8, - BS_DIBPATTERN8X8, - BS_MONOPATTERN, -} - -// ----- -// EXTLOGPEN, ExtCreatePen() - -// EXTLOGPEN.elpPenStyle -enum : DWORD { - PS_SOLID = 0, - PS_DASH = 1, - PS_DOT = 2, - PS_DASHDOT = 3, - PS_DASHDOTDOT = 4, - PS_NULL = 5, - PS_INSIDEFRAME = 6, - PS_USERSTYLE = 7, - PS_ALTERNATE = 8, - PS_STYLE_MASK = 15, -} - -enum : DWORD { - PS_COSMETIC = 0x00000000, - PS_GEOMETRIC = 0x00010000, - PS_TYPE_MASK = 0x000F0000, -} -enum : DWORD { - PS_ENDCAP_ROUND = 0x00000000, - PS_ENDCAP_SQUARE = 0x00000100, - PS_ENDCAP_FLAT = 0x00000200, - PS_ENDCAP_MASK = 0x00000F00, -} -enum : DWORD { - PS_JOIN_ROUND = 0x00000000, - PS_JOIN_BEVEL = 0x00001000, - PS_JOIN_MITER = 0x00002000, - PS_JOIN_MASK = 0x0000F000, -} - -// --- -// DeviceCapabilities() - -enum : WORD { - DC_FIELDS = 1, - DC_PAPERS, - DC_PAPERSIZE, - DC_MINEXTENT, - DC_MAXEXTENT, - DC_BINS, - DC_DUPLEX, - DC_SIZE, - DC_EXTRA, - DC_VERSION, - DC_DRIVER, - DC_BINNAMES, - DC_ENUMRESOLUTIONS, - DC_FILEDEPENDENCIES, - DC_TRUETYPE, - DC_PAPERNAMES, - DC_ORIENTATION, - DC_COPIES, - DC_BINADJUST, - DC_EMF_COMPLIANT, - DC_DATATYPE_PRODUCED, - DC_COLLATE, - DC_MANUFACTURER, - DC_MODEL, -} - -static - -if (WINVER >= 0x0500) -{ - enum { - DC_PERSONALITY = 25, - DC_PRINTRATE = 26, - DC_PRINTRATEUNIT = 27, - DC_PRINTERMEM = 28, - DC_MEDIAREADY = 29, - DC_STAPLE = 30, - DC_PRINTRATEPPM = 31, - DC_COLORDEVICE = 32, - DC_NUP = 33, - DC_MEDIATYPENAMES = 34, - DC_MEDIATYPES = 35, - } - enum { - PRINTRATEUNIT_PPM = 1, - PRINTRATEUNIT_CPS = 2, - PRINTRATEUNIT_LPM = 3, - PRINTRATEUNIT_IPM = 4, - } -} - -// return from DC_TRUETYPE -const DWORD -DCTT_BITMAP = 1, -DCTT_DOWNLOAD = 2, -DCTT_SUBDEV = 4, -DCTT_DOWNLOAD_OUTLINE = 8; - -static - -if (WINVER >= 0x0400) -{ - // return from DC_BINADJUST - enum : DWORD { - DCBA_FACEUPNONE = 0x0000, - DCBA_FACEUPCENTER = 0x0001, - DCBA_FACEUPLEFT = 0x0002, - DCBA_FACEUPRIGHT = 0x0003, - DCBA_FACEDOWNNONE = 0x0100, - DCBA_FACEDOWNCENTER = 0x0101, - DCBA_FACEDOWNLEFT = 0x0102, - DCBA_FACEDOWNRIGHT = 0x0103, - } -} - -// --- - -const FLOODFILLBORDER = 0; -const FLOODFILLSURFACE = 1; - -// ExtTextOut() -const UINT -ETO_OPAQUE = 0x0002, -ETO_CLIPPED = 0x0004, -ETO_GLYPH_INDEX = 0x0010, -ETO_RTLREADING = 0x0080, -ETO_NUMERICSLOCAL = 0x0400, -ETO_NUMERICSLATIN = 0x0800, -ETO_IGNORELANGUAGE = 0x1000; -static - -if (_WIN32_WINNT >= 0x0500) -{ - const UINT - ETO_PDY = 0x2000; -} - -// GdiComment() -enum { - GDICOMMENT_BEGINGROUP = 0x00000002, - GDICOMMENT_ENDGROUP = 0x00000003, - GDICOMMENT_UNICODE_STRING = 0x00000040, - GDICOMMENT_UNICODE_END = 0x00000080, - GDICOMMENT_MULTIFORMATS = 0x40000004, - GDICOMMENT_IDENTIFIER = 0x43494447, - GDICOMMENT_WINDOWS_METAFILE = 0x80000001, -} - -// Get/SetArcDirection() -enum : int { - AD_COUNTERCLOCKWISE = 1, - AD_CLOCKWISE = 2 -} - -const RDH_RECTANGLES = 1; - -// GCPRESULTS.lpClass -enum { - GCPCLASS_LATIN = 1, - GCPCLASS_HEBREW = 2, - GCPCLASS_ARABIC = 2, - GCPCLASS_NEUTRAL, - GCPCLASS_LOCALNUMBER, - GCPCLASS_LATINNUMBER, - GCPCLASS_LATINNUMERICTERMINATOR, - GCPCLASS_LATINNUMERICSEPARATOR, - GCPCLASS_NUMERICSEPARATOR, // = 8, - GCPCLASS_POSTBOUNDRTL = 16, - GCPCLASS_POSTBOUNDLTR = 32, - GCPCLASS_PREBOUNDRTL = 64, - GCPCLASS_PREBOUNDLTR = 128, - GCPGLYPH_LINKAFTER = 0x4000, - GCPGLYPH_LINKBEFORE = 0x8000 -} - -// GetBoundsRect(), SetBoundsRect() -const UINT -DCB_RESET = 1, -DCB_ACCUMULATE = 2, -DCB_SET = DCB_RESET | DCB_ACCUMULATE, -DCB_ENABLE = 4, -DCB_DISABLE = 8, -DCB_DIRTY = DCB_ACCUMULATE; - -// --- -// GetObjectType() -enum : DWORD { - OBJ_PEN = 1, - OBJ_BRUSH, - OBJ_DC, - OBJ_METADC, - OBJ_PAL, - OBJ_FONT, - OBJ_BITMAP, - OBJ_REGION, - OBJ_METAFILE, - OBJ_MEMDC, - OBJ_EXTPEN, - OBJ_ENHMETADC, - OBJ_ENHMETAFILE, - OBJ_COLORSPACE, -} - -// --------------------- -// Capabilities for GetDeviceCaps(dc, xxx) - -enum : int { - DRIVERVERSION = 0, - TECHNOLOGY = 2, - HORZSIZE = 4, - VERTSIZE = 6, - HORZRES = 8, - VERTRES = 10, - BITSPIXEL = 12, - PLANES = 14, - NUMBRUSHES = 16, - NUMPENS = 18, - NUMMARKERS = 20, - NUMFONTS = 22, - NUMCOLORS = 24, - PDEVICESIZE = 26, - CURVECAPS = 28, - LINECAPS = 30, - POLYGONALCAPS = 32, - TEXTCAPS = 34, - CLIPCAPS = 36, - RASTERCAPS = 38, - ASPECTX = 40, - ASPECTY = 42, - ASPECTXY = 44, - LOGPIXELSX = 88, - LOGPIXELSY = 90, - SIZEPALETTE = 104, - NUMRESERVED = 106, - COLORRES = 108, - PHYSICALWIDTH = 110, - PHYSICALHEIGHT = 111, - PHYSICALOFFSETX = 112, - PHYSICALOFFSETY = 113, - SCALINGFACTORX = 114, - SCALINGFACTORY = 115, - VREFRESH = 116, - DESKTOPVERTRES = 117, - DESKTOPHORZRES = 118, - BLTALIGNMENT = 119 -} -static - -if (WINVER >= 0x0500) -{ - int - SHADEBLENDCAPS = 120, - COLORMGMTCAPS = 121; -} - -// Return values for GetDeviceCaps(dc, TECHNOLOGY) -enum : int { - DT_PLOTTER = 0, - DT_RASDISPLAY, - DT_RASPRINTER, - DT_RASCAMERA, - DT_CHARSTREAM, - DT_METAFILE, - DT_DISPFILE // = 6 -} - -// Return values for GetDeviceCaps(dc, RASTERCAPS) -const int -RC_NONE = 0, -RC_BITBLT = 1, -RC_BANDING = 2, -RC_SCALING = 4, -RC_BITMAP64 = 8, -RC_GDI20_OUTPUT = 16, -RC_GDI20_STATE = 32, -RC_SAVEBITMAP = 64, -RC_DI_BITMAP = 128, -RC_PALETTE = 256, -RC_DIBTODEV = 512, -RC_BIGFONT = 1024, -RC_STRETCHBLT = 2048, -RC_FLOODFILL = 4096, -RC_STRETCHDIB = 8192, -RC_OP_DX_OUTPUT = 0x4000, -RC_DEVBITS = 0x8000; - -static - -if (WINVER >= 0x0500) -{ - /* Shading and blending caps */ - const SB_NONE = 0x00000000; - const SB_CONST_ALPHA = 0x00000001; - const SB_PIXEL_ALPHA = 0x00000002; - const SB_PREMULT_ALPHA = 0x00000004; - const SB_GRAD_RECT = 0x00000010; - const SB_GRAD_TRI = 0x00000020; - - /* Color Management caps */ - const CM_NONE = 0x00000000; - const CM_DEVICE_ICM = 0x00000001; - const CM_GAMMA_RAMP = 0x00000002; - const CM_CMYK_COLOR = 0x00000004; -} - -// Return values for GetDeviceCaps(dc, CURVECAPS) -const int -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; - -// Return values for GetDeviceCaps(dc, LINECAPS) - -const int -LC_NONE = 0, -LC_POLYLINE = 2, -LC_MARKER = 4, -LC_POLYMARKER = 8, -LC_WIDE = 16, -LC_STYLED = 32, -LC_WIDESTYLED = 64, -LC_INTERIORS = 128; - -// Return values for GetDeviceCaps(dc, POLYGONALCAPS) - -const int -PC_NONE = 0, -PC_POLYGON = 1, -PC_RECTANGLE = 2, -PC_WINDPOLYGON = 4, -PC_TRAPEZOID = 4, -PC_SCANLINE = 8, -PC_WIDE = 16, -PC_STYLED = 32, -PC_WIDESTYLED = 64, -PC_INTERIORS = 128, -PC_POLYPOLYGON = 256, -PC_PATHS = 512; - -/* Clipping Capabilities */ -const int CP_NONE = 0, - CP_RECTANGLE = 1, - CP_REGION = 2; - -// Return values for GetDeviceCaps(dc, TEXTCAPS) - -const int -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; - -// End GetDeviceCaps -// --------------------- -// GetCharacterPlacement(), and GetFontLanguageInfo() -const DWORD -GCP_DBCS = 1, -GCP_REORDER = 2, -GCP_USEKERNING = 8, -GCP_GLYPHSHAPE = 16, -GCP_LIGATE = 32, -GCP_DIACRITIC = 256, -GCP_KASHIDA = 1024, -GCP_ERROR = 0x8000, -GCP_JUSTIFY = 0x10000, -GCP_CLASSIN = 0x80000, -GCP_MAXEXTENT = 0x100000, -GCP_JUSTIFYIN = 0x200000, -GCP_DISPLAYZWG = 0x400000, -GCP_SYMSWAPOFF = 0x800000, -GCP_NUMERICOVERRIDE = 0x1000000, -GCP_NEUTRALOVERRIDE = 0x2000000, -GCP_NUMERICSLATIN = 0x4000000, -GCP_NUMERICSLOCAL = 0x8000000, - -// Only for GetFontLanguageInfo() -FLI_GLYPHS = 0x40000, -FLI_MASK = 0x103b; - -// GetGlyphOutline() -enum : UINT { - GGO_METRICS = 0, - GGO_BITMAP = 1, - GGO_NATIVE = 2, - GGO_BEZIER = 3, - GGO_GRAY2_BITMAP = 4, - GGO_GRAY4_BITMAP = 5, - GGO_GRAY8_BITMAP = 6, - GGO_GLYPH_INDEX = 128, - GGO_UNHINTED = 256 -} - -enum : int { - GM_COMPATIBLE = 1, - GM_ADVANCED -} -const GM_LAST = GM_ADVANCED; - -enum : int { - MM_TEXT = 1, - MM_LOMETRIC, - MM_HIMETRIC, - MM_LOENGLISH, - MM_HIENGLISH, - MM_TWIPS, - MM_ISOTROPIC, - MM_ANISOTROPIC, -} - -const int -MM_MIN = MM_TEXT, -MM_MAX = MM_ANISOTROPIC, -MM_MAX_FIXEDSCALE = MM_TWIPS; - -const ABSOLUTE = 1; -const RELATIVE = 2; - -enum : BYTE { - PC_RESERVED = 1, - PC_EXPLICIT = 2, - PC_NOCOLLAPSE = 4 -} - -/* FIXME: move to win32.commctrl ? */ - -// ImageList -const COLORREF -CLR_NONE = 0xffffffff, -CLR_INVALID = CLR_NONE, -CLR_DEFAULT = 0xff000000; - -// RASTERIZER_STATUS.wFlags -const short -TT_AVAILABLE = 1, -TT_ENABLED = 2; - -// GetStockObject() -enum : int { - WHITE_BRUSH = 0, - LTGRAY_BRUSH, - GRAY_BRUSH, - DKGRAY_BRUSH, - BLACK_BRUSH, - HOLLOW_BRUSH, // = 5 - NULL_BRUSH = HOLLOW_BRUSH, - WHITE_PEN = 6, - BLACK_PEN, - NULL_PEN, // = 8 - OEM_FIXED_FONT = 10, - ANSI_FIXED_FONT, - ANSI_VAR_FONT, - SYSTEM_FONT, - DEVICE_DEFAULT_FONT, - DEFAULT_PALETTE, - SYSTEM_FIXED_FONT, -} -static - -if (WINVER >= 0x0400) -{ - enum : int { - DEFAULT_GUI_FONT = SYSTEM_FIXED_FONT + 1, - } -} - -static - -if (_WIN32_WINNT >= 0x0500) -{ - enum : int { - DC_BRUSH = DEFAULT_GUI_FONT + 1, - DC_PEN, - } -} - -static - -if (_WIN32_WINNT >= 0x0500) -{ - const STOCK_LAST = DC_PEN; -} -else static - - if (WINVER >= 0x0400) - { - const STOCK_LAST = DEFAULT_GUI_FONT; - } - else - { - const STOCK_LAST = SYSTEM_FIXED_FONT; - } - -// Get/SetSystemPaletteUse() -enum : UINT { - SYSPAL_ERROR = 0, - SYSPAL_STATIC = 1, - SYSPAL_NOSTATIC = 2, - SYSPAL_NOSTATIC256 = 3, -} - -// SetTextAlign() -const UINT -TA_TOP = 0, -TA_CENTER = 6, -TA_BOTTOM = 8, -TA_BASELINE = 24, -TA_LEFT = 0, -TA_RIGHT = 2, -TA_RTLREADING = 256, -TA_NOUPDATECP = 0, -TA_UPDATECP = 1, -TA_MASK = TA_BASELINE + TA_CENTER + TA_UPDATECP + TA_RTLREADING, -VTA_BASELINE = TA_BASELINE, -VTA_CENTER = TA_CENTER, -VTA_LEFT = TA_BOTTOM, -VTA_RIGHT = TA_TOP, -VTA_BOTTOM = TA_RIGHT, -VTA_TOP = TA_LEFT; - -// EMRMODIFYWORLDTRANSFORM.iMode -enum : DWORD { - MWT_IDENTITY = 1, - MWT_LEFTMULTIPLY, - MWT_RIGHTMULTIPLY -} - -const DWORD -MWT_MIN = MWT_IDENTITY, -MWT_MAX = MWT_RIGHTMULTIPLY; - -enum { - TRANSPARENT = 1, - OPAQUE = 2 -} - -// Get/SetStretchMode() -enum : int { - BLACKONWHITE = 1, - WHITEONBLACK = 2, - COLORONCOLOR = 3, - HALFTONE = 4, - - STRETCH_ANDSCANS = 1, - STRETCH_ORSCANS = 2, - STRETCH_DELETESCANS = 3, - STRETCH_HALFTONE = 4, - - MAXSTRETCHBLTMODE = 4 -} - -// TranslateCharsetInfo() -enum : DWORD { - TCI_SRCCHARSET = 1, - TCI_SRCCODEPAGE = 2, - TCI_SRCFONTSIG = 3, - TCI_SRCLOCALE = 0x1000, -} - -// SetICMMode() -enum : int { - ICM_OFF = 1, - ICM_ON = 2, - ICM_QUERY = 3, - ICM_DONE_OUTSIDEDC = 4, -} - -// ---- -// Escape() Spooler Error Codes -enum : int { - SP_NOTREPORTED = 0x4000, - SP_ERROR = -1, - SP_APPABORT = -2, - SP_USERABORT = -3, - SP_OUTOFDISK = -4, - SP_OUTOFMEMORY = -5 -} - -// Escape(), ExtEscape() -// Most of the following are deprecated (Win16 only) -enum : int { - NEWFRAME = 1, - ABORTDOC = 2, - NEXTBAND = 3, - SETCOLORTABLE = 4, - GETCOLORTABLE = 5, - FLUSHOUTPUT = 6, - DRAFTMODE = 7, - QUERYESCSUPPORT = 8, - SETABORTPROC = 9, - STARTDOC = 10, - ENDDOC = 11, - GETPHYSPAGESIZE = 12, - GETPRINTINGOFFSET = 13, - GETSCALINGFACTOR = 14, - MFCOMMENT = 15, - GETPENWIDTH = 16, - SETCOPYCOUNT = 17, - SELECTPAPERSOURCE = 18, - DEVICEDATA = 19, - PASSTHROUGH = 19, - GETTECHNOLOGY = 20, - SETLINECAP = 21, - SETLINEJOIN = 22, - SETMITERLIMIT = 23, - BANDINFO = 24, - DRAWPATTERNRECT = 25, - GETVECTORPENSIZE = 26, - GETVECTORBRUSHSIZE = 27, - ENABLEDUPLEX = 28, - GETSETPAPERBINS = 29, - GETSETPRINTORIENT = 30, - ENUMPAPERBINS = 31, - SETDIBSCALING = 32, - EPSPRINTING = 33, - ENUMPAPERMETRICS = 34, - GETSETPAPERMETRICS = 35, - POSTSCRIPT_DATA = 37, - POSTSCRIPT_IGNORE = 38, - MOUSETRAILS = 39, - GETDEVICEUNITS = 42, - GETEXTENDEDTEXTMETRICS = 256, - GETEXTENTTABLE = 257, - GETPAIRKERNTABLE = 258, - GETTRACKKERNTABLE = 259, - EXTTEXTOUT = 512, - GETFACENAME = 513, - DOWNLOADFACE = 514, - ENABLERELATIVEWIDTHS = 768, - ENABLEPAIRKERNING = 769, - SETKERNTRACK = 770, - SETALLJUSTVALUES = 771, - SETCHARSET = 772, - STRETCHBLT = 2048, - METAFILE_DRIVER = 2049, - GETSETSCREENPARAMS = 3072, - QUERYDIBSUPPORT = 3073, - BEGIN_PATH = 4096, - CLIP_TO_PATH = 4097, - END_PATH = 4098, - EXT_DEVICE_CAPS = 4099, - RESTORE_CTM = 4100, - SAVE_CTM = 4101, - SET_ARC_DIRECTION = 4102, - SET_BACKGROUND_COLOR = 4103, - SET_POLY_MODE = 4104, - SET_SCREEN_ANGLE = 4105, - SET_SPREAD = 4106, - TRANSFORM_CTM = 4107, - SET_CLIP_BOX = 4108, - SET_BOUNDS = 4109, - SET_MIRROR_MODE = 4110, - OPENCHANNEL = 4110, - DOWNLOADHEADER = 4111, - CLOSECHANNEL = 4112, - POSTSCRIPT_PASSTHROUGH = 4115, - ENCAPSULATED_POSTSCRIPT = 4116, - POSTSCRIPT_IDENTIFY = 4117, - POSTSCRIPT_INJECTION = 4118, - CHECKJPEGFORMAT = 4119, - CHECKPNGFORMAT = 4120, - GET_PS_FEATURESETTING = 4121, - SPCLPASSTHROUGH2 = 4568, -} - -enum : int { - PSIDENT_GDICENTRIC = 0, - PSIDENT_PSCENTRIC = 1, -} - -/* - * Header structure for the input buffer to POSTSCRIPT_INJECTION escape - */ -struct PSINJECTDATA -{ - DWORD DataBytes; - WORD InjectionPoint; - WORD PageNumber; -} -alias PSINJECTDATA*PPSINJECTDATA; - -/* Constants for PSINJECTDATA.InjectionPoint field */ -enum { - PSINJECT_BEGINSTREAM = 1, - PSINJECT_PSADOBE = 2, - PSINJECT_PAGESATEND = 3, - PSINJECT_PAGES = 4, - PSINJECT_DOCNEEDEDRES = 5, - PSINJECT_DOCSUPPLIEDRES = 6, - PSINJECT_PAGEORDER = 7, - PSINJECT_ORIENTATION = 8, - PSINJECT_BOUNDINGBOX = 9, - PSINJECT_DOCUMENTPROCESSCOLORS = 10, - PSINJECT_COMMENTS = 11, - PSINJECT_BEGINDEFAULTS = 12, - PSINJECT_ENDDEFAULTS = 13, - PSINJECT_BEGINPROLOG = 14, - PSINJECT_ENDPROLOG = 15, - PSINJECT_BEGINSETUP = 16, - PSINJECT_ENDSETUP = 17, - PSINJECT_TRAILER = 18, - PSINJECT_EOF = 19, - PSINJECT_ENDSTREAM = 20, - PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21, - - PSINJECT_PAGENUMBER = 100, - PSINJECT_BEGINPAGESETUP = 101, - PSINJECT_ENDPAGESETUP = 102, - PSINJECT_PAGETRAILER = 103, - PSINJECT_PLATECOLOR = 104, - PSINJECT_SHOWPAGE = 105, - PSINJECT_PAGEBBOX = 106, - PSINJECT_ENDPAGECOMMENTS = 107, - - PSINJECT_VMSAVE = 200, - PSINJECT_VMRESTORE = 201, -} - -/* Parameter for GET_PS_FEATURESETTING escape */ -enum { - FEATURESETTING_NUP = 0, - FEATURESETTING_OUTPUT = 1, - FEATURESETTING_PSLEVEL = 2, - FEATURESETTING_CUSTPAPER = 3, - FEATURESETTING_MIRROR = 4, - FEATURESETTING_NEGATIVE = 5, - FEATURESETTING_PROTOCOL = 6, -} - -enum { - FEATURESETTING_PRIVATE_BEGIN = 0x1000, - FEATURESETTING_PRIVATE_END = 0x1FFF, -} - -/* Value returned for FEATURESETTING_PROTOCOL */ -const PSPROTOCOL_ASCII = 0; -const PSPROTOCOL_BCP = 1; -const PSPROTOCOL_TBCP = 2; -const PSPROTOCOL_BINARY = 3; - -// ---- - -const WPARAM PR_JOBSTATUS = 0; - -// ??? -const QDI_SETDIBITS = 1; -const QDI_GETDIBITS = 2; -const QDI_DIBTOSCREEN = 4; -const QDI_STRETCHDIB = 8; - -const ASPECT_FILTERING = 1; - -// LOGCOLORSPACE.lcsCSType -enum : LCSCSTYPE { - LCS_CALIBRATED_RGB = 0, - LCS_DEVICE_RGB, - LCS_DEVICE_CMYK -} /* What this for? */ - -// LOGCOLORSPACE.lcsIntent -enum : LCSGAMUTMATCH { - LCS_GM_BUSINESS = 1, - LCS_GM_GRAPHICS = 2, - LCS_GM_IMAGES = 4, - LCS_GM_ABS_COLORIMETRIC = 8, -} - -const DWORD -RASTER_FONTTYPE = 1, -DEVICE_FONTTYPE = 2, -TRUETYPE_FONTTYPE = 4; - -// --- -// DEVMODE struct - -// FIXME: Not needed for D (use .length instead) -const CCHDEVICENAME = 32; -const CCHFORMNAME = 32; - -// DEVMODE.dmSpecVersion -// current version of specification -static - -if (WINVER >= 0x0500 || _WIN32_WINNT >= 0x0400) -{ - const WORD DM_SPECVERSION = 0x0401; -} -else static - - if (WINVER >= 0x0400) - { - const WORD DM_SPECVERSION = 0x0400; - } - else - { - const WORD DM_SPECVERSION = 0x0320; - } - -// DEVMODE.dmOrientation -enum : short { - DMORIENT_PORTRAIT = 1, - DMORIENT_LANDSCAPE = 2 -} - -// DEVMODE.dmPaperSize -enum : short { - DMPAPER_LETTER = 1, - DMPAPER_LETTERSMALL, - DMPAPER_TABLOID, - DMPAPER_LEDGER, - DMPAPER_LEGAL, - DMPAPER_STATEMENT, - DMPAPER_EXECUTIVE, - DMPAPER_A3, - DMPAPER_A4, - DMPAPER_A4SMALL, - DMPAPER_A5, - DMPAPER_B4, - DMPAPER_B5, - DMPAPER_FOLIO, - DMPAPER_QUARTO, - DMPAPER_10X14, - DMPAPER_11X17, - DMPAPER_NOTE, - DMPAPER_ENV_9, - DMPAPER_ENV_10, - DMPAPER_ENV_11, - DMPAPER_ENV_12, - DMPAPER_ENV_14, - DMPAPER_CSHEET, - DMPAPER_DSHEET, - DMPAPER_ESHEET, - DMPAPER_ENV_DL, - DMPAPER_ENV_C5, - DMPAPER_ENV_C3, - DMPAPER_ENV_C4, - DMPAPER_ENV_C6, - DMPAPER_ENV_C65, - DMPAPER_ENV_B4, - DMPAPER_ENV_B5, - DMPAPER_ENV_B6, - DMPAPER_ENV_ITALY, - DMPAPER_ENV_MONARCH, - DMPAPER_ENV_PERSONAL, - DMPAPER_FANFOLD_US, - DMPAPER_FANFOLD_STD_GERMAN, - DMPAPER_FANFOLD_LGL_GERMAN, - DMPAPER_ISO_B4, - DMPAPER_JAPANESE_POSTCARD, - DMPAPER_9X11, - DMPAPER_10X11, - DMPAPER_15X11, - DMPAPER_ENV_INVITE, - DMPAPER_RESERVED_48, - DMPAPER_RESERVED_49, - DMPAPER_LETTER_EXTRA, - DMPAPER_LEGAL_EXTRA, - DMPAPER_TABLOID_EXTRA, - DMPAPER_A4_EXTRA, - DMPAPER_LETTER_TRANSVERSE, - DMPAPER_A4_TRANSVERSE, - DMPAPER_LETTER_EXTRA_TRANSVERSE, - DMPAPER_A_PLUS, - DMPAPER_B_PLUS, - DMPAPER_LETTER_PLUS, - DMPAPER_A4_PLUS, - DMPAPER_A5_TRANSVERSE, - DMPAPER_B5_TRANSVERSE, - DMPAPER_A3_EXTRA, - DMPAPER_A5_EXTRA, - DMPAPER_B5_EXTRA, - DMPAPER_A2, - DMPAPER_A3_TRANSVERSE, - DMPAPER_A3_EXTRA_TRANSVERSE // = 68 -} -static - -if (WINVER >= 0x0500) -{ - enum : short { - DMPAPER_DBL_JAPANESE_POSTCARD = 69, - DMPAPER_A6, - DMPAPER_JENV_KAKU2, - DMPAPER_JENV_KAKU3, - DMPAPER_JENV_CHOU3, - DMPAPER_JENV_CHOU4, - DMPAPER_LETTER_ROTATED, - DMPAPER_A3_ROTATED, - DMPAPER_A4_ROTATED, - DMPAPER_A5_ROTATED, - DMPAPER_B4_JIS_ROTATED, - DMPAPER_B5_JIS_ROTATED, - DMPAPER_JAPANESE_POSTCARD_ROTATED, - DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, - DMPAPER_A6_ROTATED, - DMPAPER_JENV_KAKU2_ROTATED, - DMPAPER_JENV_KAKU3_ROTATED, - DMPAPER_JENV_CHOU3_ROTATED, - DMPAPER_JENV_CHOU4_ROTATED, - DMPAPER_B6_JIS, - DMPAPER_B6_JIS_ROTATED, - DMPAPER_12X11, - DMPAPER_JENV_YOU4, - DMPAPER_JENV_YOU4_ROTATED, - DMPAPER_P16K, - DMPAPER_P32K, - DMPAPER_P32KBIG, - DMPAPER_PENV_1, - DMPAPER_PENV_2, - DMPAPER_PENV_3, - DMPAPER_PENV_4, - DMPAPER_PENV_5, - DMPAPER_PENV_6, - DMPAPER_PENV_7, - DMPAPER_PENV_8, - DMPAPER_PENV_9, - DMPAPER_PENV_10, - DMPAPER_P16K_ROTATED, - DMPAPER_P32K_ROTATED, - DMPAPER_P32KBIG_ROTATED, - DMPAPER_PENV_1_ROTATED, - DMPAPER_PENV_2_ROTATED, - DMPAPER_PENV_3_ROTATED, - DMPAPER_PENV_4_ROTATED, - DMPAPER_PENV_5_ROTATED, - DMPAPER_PENV_6_ROTATED, - DMPAPER_PENV_7_ROTATED, - DMPAPER_PENV_8_ROTATED, - DMPAPER_PENV_9_ROTATED, - DMPAPER_PENV_10_ROTATED // 118 - } -} - -const short DMPAPER_FIRST = DMPAPER_LETTER; - -static - -if (WINVER >= 0x0500) - const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; -else - const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; - -const short DMPAPER_USER = 256; - -// DEVMODE.dmDefaultSource -enum : short { - DMBIN_ONLYONE = 1, - DMBIN_UPPER = 1, - DMBIN_LOWER, - DMBIN_MIDDLE, - DMBIN_MANUAL, - DMBIN_ENVELOPE, - DMBIN_ENVMANUAL, - DMBIN_AUTO, - DMBIN_TRACTOR, - DMBIN_SMALLFMT, - DMBIN_LARGEFMT, - DMBIN_LARGECAPACITY, // = 11 - DMBIN_CASSETTE = 14, - DMBIN_FORMSOURCE, -} -short -DMBIN_FIRST = DMBIN_UPPER, -DMBIN_LAST = DMBIN_FORMSOURCE, -DMBIN_USER = 256; - -// DEVMODE.dmPrintQuality -enum : short { - DMRES_DRAFT = -1, - DMRES_LOW = -2, - DMRES_MEDIUM = -3, - DMRES_HIGH = -4 -} - -// DEVMODE.dmColor -enum : short { - DMCOLOR_MONOCHROME = 1, - DMCOLOR_COLOR = 2 -} - -// DEVMODE.dmDuplex -enum : short { - DMDUP_SIMPLEX = 1, - DMDUP_VERTICAL = 2, - DMDUP_HORIZONTAL = 3 -} - -// DEVMODE.dmTTOption -enum : short { - DMTT_BITMAP = 1, - DMTT_DOWNLOAD, - DMTT_SUBDEV, - DMTT_DOWNLOAD_OUTLINE -} - -// DEVMODE.dmCollate -enum : short { - DMCOLLATE_FALSE = 0, - DMCOLLATE_TRUE -} - -static - -if (WINVER >= 0x0501) -{ - /* DEVMODE dmDisplayOrientation specifiations */ - enum : short { - DMDO_DEFAULT = 0, - DMDO_90 = 1, - DMDO_180 = 2, - DMDO_270 = 3, - } - - /* DEVMODE dmDisplayFixedOutput specifiations */ - enum : short { - DMDFO_DEFAULT = 0, - DMDFO_STRETCH = 1, - DMDFO_CENTER = 2, - } -} - -/* FIXME: this flags are deprecated ? */ - -// DEVMODE.dmDisplayFlags -const DWORD -DM_GRAYSCALE = 1, -DM_INTERLACED = 2; - -const DWORD -DMDISPLAYFLAGS_TEXTMODE = 0x00000004; - -/* dmNup , multiple logical page per physical page options */ -const DWORD -DMNUP_SYSTEM = 1, -DMNUP_ONEUP = 2; - -// DEVMODE.dmFields -const DWORD -DM_ORIENTATION = 0x00000001, -DM_PAPERSIZE = 0x00000002, -DM_PAPERLENGTH = 0x00000004, -DM_PAPERWIDTH = 0x00000008, -DM_SCALE = 0x00000010; -static - -if (WINVER >= 0x0500) -{ - const DWORD - DM_POSITION = 0x00000020, - DM_NUP = 0x00000040; -} - -static - -if (WINVER >= 0x0501) -{ - const DWORD - DM_DISPLAYORIENTATION = 0x00000080; -} - -const DWORD -DM_COPIES = 0x00000100, -DM_DEFAULTSOURCE = 0x00000200, -DM_PRINTQUALITY = 0x00000400, -DM_COLOR = 0x00000800, -DM_DUPLEX = 0x00001000, -DM_YRESOLUTION = 0x00002000, -DM_TTOPTION = 0x00004000, -DM_COLLATE = 0x00008000, -DM_FORMNAME = 0x00010000, -DM_LOGPIXELS = 0x00020000, -DM_BITSPERPEL = 0x00040000, -DM_PELSWIDTH = 0x00080000, -DM_PELSHEIGHT = 0x00100000, -DM_DISPLAYFLAGS = 0x00200000, -DM_DISPLAYFREQUENCY = 0x00400000; -static - -if (WINVER >= 0x0400) -{ - const DWORD - DM_ICMMETHOD = 0x00800000, - DM_ICMINTENT = 0x01000000, - DM_MEDIATYPE = 0x02000000, - DM_DITHERTYPE = 0x04000000, - DM_PANNINGWIDTH = 0x08000000, - DM_PANNINGHEIGHT = 0x10000000; -} - -static - -if (WINVER >= 0x0501) -{ - const DWORD - DM_DISPLAYFIXEDOUTPUT = 0x20000000; -} - -// DEVMODE.dmICMMethod -enum : DWORD { - DMICMMETHOD_NONE = 1, - DMICMMETHOD_SYSTEM = 2, - DMICMMETHOD_DRIVER = 3, - DMICMMETHOD_DEVICE = 4, - DMICMMETHOD_USER = 256 -} - -// DEVMODE.dmICMIntent -enum : DWORD { - DMICM_SATURATE = 1, - DMICM_CONTRAST = 2, - DMICM_COLORIMETRIC = 3, - DMICM_ABS_COLORIMETRIC = 4, - DMICM_USER = 256 -} - -// DEVMODE.dmMediaType -enum : DWORD { - DMMEDIA_STANDARD = 1, - DMMEDIA_TRANSPARENCY = 2, - DMMEDIA_GLOSSY = 3, - DMMEDIA_USER = 256 -} - -// DEVMODE.dmDitherType -enum : DWORD { - DMDITHER_NONE = 1, - DMDITHER_COARSE, - DMDITHER_FINE, - DMDITHER_LINEART, - DMDITHER_ERRORDIFFUSION, - DMDITHER_RESERVED6, - DMDITHER_RESERVED7, - DMDITHER_RESERVED8, - DMDITHER_RESERVED9, - DMDITHER_GRAYSCALE, - DMDITHER_USER = 256 -} - -// ---- -// DocumentProperties() -const DWORD -DM_UPDATE = 1, -DM_COPY = 2, -DM_PROMPT = 4, -DM_MODIFY = 8, -DM_IN_BUFFER = DM_MODIFY, -DM_IN_PROMPT = DM_PROMPT, -DM_OUT_BUFFER = DM_COPY, -DM_OUT_DEFAULT = DM_UPDATE; - -// --- - -const GDI_ERROR = 0xFFFFFFFF; -const HGDI_ERROR= cast(HANDLE) GDI_ERROR; - -// TEXTMETRIC.tmPitchAndFamily -const BYTE -TMPF_FIXED_PITCH = 1, -TMPF_VECTOR = 2, -TMPF_TRUETYPE = 4, -TMPF_DEVICE = 8; - -// NEWTEXTMETRIC.ntmFlags -const DWORD -NTM_ITALIC = 0x00000001, -NTM_BOLD = 0x00000020, -NTM_REGULAR = 0x00000040, -NTM_NONNEGATIVE_AC = 0x00010000, -NTM_PS_OPENTYPE = 0x00020000, -NTM_TT_OPENTYPE = 0x00040000, -NTM_MULTIPLEMASTER = 0x00080000, -NTM_TYPE1 = 0x00100000, -NTM_DSIG = 0x00200000; - -// --- -const DWORD TT_POLYGON_TYPE = 24; - -// TTPOLYCURVE -enum : WORD { - TT_PRIM_LINE = 1, - TT_PRIM_QSPLINE = 2, - TT_PRIM_CSPLINE = 3, -} - -// --- -const FONTMAPPER_MAX = 10; -const ENHMETA_STOCK_OBJECT = 0x80000000; -const WGL_FONT_LINES = 0; -const WGL_FONT_POLYGONS = 1; - -// --- -// LAYERPLANEDESCRIPTOR.dwFlags -const DWORD -LPD_DOUBLEBUFFER = 1, -LPD_STEREO = 2, -LPD_SUPPORT_GDI = 16, -LPD_SUPPORT_OPENGL = 32, -LPD_SHARE_DEPTH = 64, -LPD_SHARE_STENCIL = 128, -LPD_SHARE_ACCUM = 256, -LPD_SWAP_EXCHANGE = 512, -LPD_SWAP_COPY = 1024, -LPD_TRANSPARENT = 4096; - -// LAYERPLANEDESCRIPTOR.iPixelType -enum : BYTE { - LPD_TYPE_RGBA = 0, - LPD_TYPE_COLORINDEX = 1 -} - -// --- - -// wglSwapLayerBuffers() -const UINT -WGL_SWAP_MAIN_PLANE = 1, -WGL_SWAP_OVERLAY1 = 2, -WGL_SWAP_OVERLAY2 = 4, -WGL_SWAP_OVERLAY3 = 8, -WGL_SWAP_OVERLAY4 = 16, -WGL_SWAP_OVERLAY5 = 32, -WGL_SWAP_OVERLAY6 = 64, -WGL_SWAP_OVERLAY7 = 128, -WGL_SWAP_OVERLAY8 = 256, -WGL_SWAP_OVERLAY9 = 512, -WGL_SWAP_OVERLAY10 = 1024, -WGL_SWAP_OVERLAY11 = 2048, -WGL_SWAP_OVERLAY12 = 4096, -WGL_SWAP_OVERLAY13 = 8192, -WGL_SWAP_OVERLAY14 = 16384, -WGL_SWAP_OVERLAY15 = 32768, -WGL_SWAP_UNDERLAY1 = 65536, -WGL_SWAP_UNDERLAY2 = 0x20000, -WGL_SWAP_UNDERLAY3 = 0x40000, -WGL_SWAP_UNDERLAY4 = 0x80000, -WGL_SWAP_UNDERLAY5 = 0x100000, -WGL_SWAP_UNDERLAY6 = 0x200000, -WGL_SWAP_UNDERLAY7 = 0x400000, -WGL_SWAP_UNDERLAY8 = 0x800000, -WGL_SWAP_UNDERLAY9 = 0x1000000, -WGL_SWAP_UNDERLAY10 = 0x2000000, -WGL_SWAP_UNDERLAY11 = 0x4000000, -WGL_SWAP_UNDERLAY12 = 0x8000000, -WGL_SWAP_UNDERLAY13 = 0x10000000, -WGL_SWAP_UNDERLAY14 = 0x20000000, -WGL_SWAP_UNDERLAY15 = 0x40000000; - -const AC_SRC_OVER = 0x00; -const AC_SRC_ALPHA = 0x01; - -// ??? -const AC_SRC_NO_PREMULT_ALPHA = 0x01; -const AC_SRC_NO_ALPHA = 0x02; -const AC_DST_NO_PREMULT_ALPHA = 0x10; -const AC_DST_NO_ALPHA = 0x20; - -const LAYOUT_RTL = 1; -const LAYOUT_BTT = 2; -const LAYOUT_VBH = 4; -const LAYOUT_BITMAPORIENTATIONPRESERVED = 8; - -static - -if (WINVER > 0x0400) -{ - const CS_ENABLE = 0x00000001; - const CS_DISABLE = 0x00000002; - const CS_DELETE_TRANSFORM = 0x00000003; -} - -static - -if (WINVER > 0x0500) -{ - const GRADIENT_FILL_RECT_H =0x00; - const GRADIENT_FILL_RECT_V =0x01; - const GRADIENT_FILL_TRIANGLE =0x02; - const GRADIENT_FILL_OP_FLAG =0xff; - const COLORMATCHTOTARGET_EMBEDED=0x00000001; - const CREATECOLORSPACE_EMBEDED =0x00000001; - const SETICMPROFILE_EMBEDED =0x00000001; -} - -// DISPLAY_DEVICE.StateFlags -const DWORD -DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, -DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, -DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, -DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008, -DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010, -DISPLAY_DEVICE_REMOVABLE = 0x00000020, -DISPLAY_DEVICE_DISCONNECT = 0x02000000, -DISPLAY_DEVICE_REMOTE = 0x04000000, -DISPLAY_DEVICE_MODESPRUNED = 0x08000000; - -/* Child device state */ -const DWORD -DISPLAY_DEVICE_ACTIVE = 0x00000001, -DISPLAY_DEVICE_ATTACHED = 0x00000002; - -static - -if (_WIN32_WINNT >= 0x0500) -{ - const GGI_MARK_NONEXISTING_GLYPHS = 1; -} - -// ---------- -// STRUCTS -// ---------- - -struct ABC -{ - int abcA; - UINT abcB; - int abcC; -} -alias ABC*PABC, NPABC, LPABC; - -struct ABCFLOAT -{ - FLOAT abcfA; - FLOAT abcfB; - FLOAT abcfC; -} -alias ABCFLOAT*PABCFLOAT, NPABCFLOAT, LPABCFLOAT; - -struct BITMAP -{ - LONG bmType; - LONG bmWidth; - LONG bmHeight; - LONG bmWidthBytes; - WORD bmPlanes; - WORD bmBitsPixel; - LPVOID bmBits; -} -alias BITMAP*PBITMAP, NPBITMAP, LPBITMAP; - -struct BITMAPCOREHEADER -{ - DWORD bcSize; - WORD bcWidth; - WORD bcHeight; - WORD bcPlanes; - WORD bcBitCount; -} -alias BITMAPCOREHEADER*PBITMAPCOREHEADER, LPBITMAPCOREHEADER; - -align (1) : -struct RGBTRIPLE -{ - BYTE rgbtBlue; - BYTE rgbtGreen; - BYTE rgbtRed; -} -alias RGBTRIPLE*LPRGBTRIPLE; - -align (2) : -struct BITMAPFILEHEADER -{ - WORD bfType; - DWORD bfSize; - WORD bfReserved1; - WORD bfReserved2; - DWORD bfOffBits; -} -alias BITMAPFILEHEADER*LPBITMAPFILEHEADER, PBITMAPFILEHEADER; - -align : - -struct BITMAPCOREINFO -{ - BITMAPCOREHEADER bmciHeader; - RGBTRIPLE[1] bmciColors; -} -alias BITMAPCOREINFO*LPBITMAPCOREINFO, PBITMAPCOREINFO; - -struct BITMAPINFOHEADER -{ - DWORD biSize; - LONG biWidth; - LONG biHeight; - WORD biPlanes; - WORD biBitCount; - DWORD biCompression; - DWORD biSizeImage; - LONG biXPelsPerMeter; - LONG biYPelsPerMeter; - DWORD biClrUsed; - DWORD biClrImportant; -} - -alias BITMAPINFOHEADER*LPBITMAPINFOHEADER, PBITMAPINFOHEADER; - -struct RGBQUAD -{ - BYTE rgbBlue; - BYTE rgbGreen; - BYTE rgbRed; - BYTE rgbReserved; -}; -alias RGBQUAD*LPRGBQUAD; - -struct BITMAPINFO -{ - BITMAPINFOHEADER bmiHeader; - RGBQUAD[1] bmiColors; -}; -alias BITMAPINFO*PBITMAPINFO, LPBITMAPINFO; - -alias int FXPT16DOT16; -alias int*LPFXPT16DOT16; -alias int FXPT2DOT30; -alias int*LPFXPT2DOT30; - -struct CIEXYZ -{ - FXPT2DOT30 ciexyzX; - FXPT2DOT30 ciexyzY; - FXPT2DOT30 ciexyzZ; -} -alias CIEXYZ*LPCIEXYZ; - -struct CIEXYZTRIPLE -{ - CIEXYZ ciexyzRed; - CIEXYZ ciexyzGreen; - CIEXYZ ciexyzBlue; -} -alias CIEXYZTRIPLE*LPCIEXYZTRIPLE; - -struct BITMAPV4HEADER -{ - DWORD bV4Size; - LONG bV4Width; - LONG bV4Height; - WORD bV4Planes; - WORD 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, PBITMAPV4HEADER; - -struct BITMAPV5HEADER -{ - DWORD bV5Size; - LONG bV5Width; - LONG bV5Height; - WORD bV5Planes; - WORD bV5BitCount; - DWORD bV5Compression; - DWORD bV5SizeImage; - LONG bV5XPelsPerMeter; - LONG bV5YPelsPerMeter; - DWORD bV5ClrUsed; - DWORD bV5ClrImportant; - DWORD bV5RedMask; - DWORD bV5GreenMask; - DWORD bV5BlueMask; - DWORD bV5AlphaMask; - DWORD bV5CSType; - CIEXYZTRIPLE bV5Endpoints; - DWORD bV5GammaRed; - DWORD bV5GammaGreen; - DWORD bV5GammaBlue; - DWORD bV5Intent; - DWORD bV5ProfileData; - DWORD bV5ProfileSize; - DWORD bV5Reserved; -} -alias BITMAPV5HEADER*LPBITMAPV5HEADER, PBITMAPV5HEADER; - -struct FONTSIGNATURE -{ - DWORD[4] fsUsb; - DWORD[2] fsCsb; -} -alias FONTSIGNATURE*PFONTSIGNATURE, LPFONTSIGNATURE; - -struct CHARSETINFO -{ - UINT ciCharset; - UINT ciACP; - FONTSIGNATURE fs; -} -alias CHARSETINFO*PCHARSETINFO, NPCHARSETINFO, LPCHARSETINFO; - -struct COLORADJUSTMENT -{ - WORD caSize; - WORD caFlags; - WORD caIlluminantIndex; - WORD caRedGamma; - WORD caGreenGamma; - WORD caBlueGamma; - WORD caReferenceBlack; - WORD caReferenceWhite; - SHORT caContrast; - SHORT caBrightness; - SHORT caColorfulness; - SHORT caRedGreenTint; -} -alias COLORADJUSTMENT*PCOLORADJUSTMENT, LPCOLORADJUSTMENT; - -struct DEVMODEA -{ - BYTE[CCHDEVICENAME] dmDeviceName; - WORD dmSpecVersion; - WORD dmDriverVersion; - WORD dmSize; - WORD dmDriverExtra; - DWORD dmFields; - union { - struct - { - short dmOrientation; - short dmPaperSize; - short dmPaperLength; - short dmPaperWidth; - short dmScale; - short dmCopies; - short dmDefaultSource; - short dmPrintQuality; - } - POINTL dmPosition; - DWORD dmDisplayOrientation; - DWORD dmDisplayFixedOutput; - } - short dmColor; - short dmDuplex; - short dmYResolution; - short dmTTOption; - short dmCollate; - BYTE[CCHFORMNAME] dmFormName; - WORD dmLogPixels; - DWORD dmBitsPerPel; - DWORD dmPelsWidth; - DWORD dmPelsHeight; - union { - DWORD dmDisplayFlags; - DWORD dmNup; - } - DWORD dmDisplayFrequency; - static - - if (WINVER >= 0x0400) - { - DWORD dmICMMethod; - DWORD dmICMIntent; - DWORD dmMediaType; - DWORD dmDitherType; - DWORD dmReserved1; - DWORD dmReserved2; - static - - if ((WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)) - { - DWORD dmPanningWidth; - DWORD dmPanningHeight; - } - } -} -alias DEVMODEA*PDEVMODEA, NPDEVMODEA, LPDEVMODEA; - -struct DEVMODEW -{ - WCHAR[CCHDEVICENAME] dmDeviceName; - WORD dmSpecVersion; - WORD dmDriverVersion; - WORD dmSize; - WORD dmDriverExtra; - DWORD dmFields; - union { - struct - { - short dmOrientation; - short dmPaperSize; - short dmPaperLength; - short dmPaperWidth; - short dmScale; - short dmCopies; - short dmDefaultSource; - short dmPrintQuality; - } - POINTL dmPosition; - DWORD dmDisplayOrientation; - DWORD dmDisplayFixedOutput; - } - - short dmColor; - short dmDuplex; - short dmYResolution; - short dmTTOption; - short dmCollate; - WCHAR[CCHFORMNAME] dmFormName; - WORD dmLogPixels; - DWORD dmBitsPerPel; - DWORD dmPelsWidth; - DWORD dmPelsHeight; - union { - DWORD dmDisplayFlags; - DWORD dmNup; - } - DWORD dmDisplayFrequency; - static - - if (WINVER >= 0x0400) - { - DWORD dmICMMethod; - DWORD dmICMIntent; - DWORD dmMediaType; - DWORD dmDitherType; - DWORD dmReserved1; - DWORD dmReserved2; - static - - if ((WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)) - { - DWORD dmPanningWidth; - DWORD dmPanningHeight; - } - } -} -alias DEVMODEW*PDEVMODEW, NPDEVMODEW, LPDEVMODEW; - -/* - * Information about output options - */ -struct PSFEATURE_OUTPUT -{ - BOOL bPageIndependent; - BOOL bSetPageDevice; -} -alias PSFEATURE_OUTPUT*PPSFEATURE_OUTPUT; - -/* - * Information about custom paper size - */ -struct PSFEATURE_CUSTPAPER -{ - LONG lOrientation; - LONG lWidth; - LONG lHeight; - LONG lWidthOffset; - LONG lHeightOffset; -} -alias PSFEATURE_CUSTPAPER*PPSFEATURE_CUSTPAPER; - -struct DIBSECTION -{ - BITMAP dsBm; - BITMAPINFOHEADER dsBmih; - DWORD[3] dsBitfields; - HANDLE dshSection; - DWORD dsOffset; -} -alias DIBSECTION*PDIBSECTION; - -struct DOCINFOA -{ - int cbSize = DOCINFOA.sizeof; - LPCSTR lpszDocName; - LPCSTR lpszOutput; - LPCSTR lpszDatatype; - DWORD fwType; -} -alias DOCINFOA*LPDOCINFOA; - -struct DOCINFOW -{ - int cbSize = DOCINFOW.sizeof; - LPCWSTR lpszDocName; - LPCWSTR lpszOutput; - LPCWSTR lpszDatatype; - DWORD fwType; -} -alias DOCINFOW*LPDOCINFOW; - -struct PANOSE -{ - BYTE bFamilyType; - BYTE bSerifStyle; - BYTE bWeight; - BYTE bProportion; - BYTE bContrast; - BYTE bStrokeVariation; - BYTE bArmStyle; - BYTE bLetterform; - BYTE bMidline; - BYTE bXHeight; -} -alias PANOSE*LPPANOSE; - -struct LOGFONTA -{ - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - CHAR[LF_FACESIZE] lfFaceName; -} -alias LOGFONTA*PLOGFONTA, NPLOGFONTA, LPLOGFONTA; - -struct LOGFONTW -{ - LONG lfHeight; - LONG lfWidth; - LONG lfEscapement; - LONG lfOrientation; - LONG lfWeight; - BYTE lfItalic; - BYTE lfUnderline; - BYTE lfStrikeOut; - BYTE lfCharSet; - BYTE lfOutPrecision; - BYTE lfClipPrecision; - BYTE lfQuality; - BYTE lfPitchAndFamily; - WCHAR[LF_FACESIZE] lfFaceName; -} -alias LOGFONTW*PLOGFONTW, NPLOGFONTW, LPLOGFONTW; - -struct EXTLOGFONTA -{ - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; - DWORD elfVersion; - DWORD elfStyleSize; - DWORD elfMatch; - DWORD elfReserved; - BYTE[ELF_VENDOR_SIZE] elfVendorId; - DWORD elfCulture; - PANOSE elfPanose; -} -alias EXTLOGFONTA*PEXTLOGFONTA, NPEXTLOGFONTA, LPEXTLOGFONTA; - -struct EXTLOGFONTW -{ - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; - DWORD elfVersion; - DWORD elfStyleSize; - DWORD elfMatch; - DWORD elfReserved; - BYTE[ELF_VENDOR_SIZE] elfVendorId; - DWORD elfCulture; - PANOSE elfPanose; -} -alias EXTLOGFONTW*PEXTLOGFONTW, NPEXTLOGFONTW, LPEXTLOGFONTW; - -struct LOGPEN -{ - UINT lopnStyle; - POINT lopnWidth; - COLORREF lopnColor; -} -alias LOGPEN*PLOGPEN, NPLOGPEN, LPLOGPEN; - -// ---------------------- EMR ------------ - -struct EMR -{ - DWORD iType; - DWORD nSize; -} -alias EMR*PEMR; - -struct EMRANGLEARC -{ - EMR emr; - POINTL ptlCenter; - DWORD nRadius; - FLOAT eStartAngle; - FLOAT eSweepAngle; -} -alias EMRANGLEARC*PEMRANGLEARC; - -struct EMRARC -{ - EMR emr; - RECTL rclBox; - POINTL ptlStart; - POINTL ptlEnd; -} -alias EMRARC*PEMRARC; -alias EMRARC EMRARCTO; -alias EMRARCTO*PEMRARCTO; -alias EMRARC EMRCHORD; -alias EMRCHORD*PEMRCHORD; -alias EMRARC EMRPIE; -alias EMRPIE*PEMRPIE; - -struct XFORM -{ - FLOAT eM11; - FLOAT eM12; - FLOAT eM21; - FLOAT eM22; - FLOAT eDx; - FLOAT eDy; -} -alias XFORM*PXFORM, LPXFORM; - -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 cbBmiSrc; - DWORD offBitsSrc; - DWORD cbBitsSrc; -} -alias EMRBITBLT*PEMRBITBLT; - -struct LOGBRUSH -{ - UINT lbStyle; - COLORREF lbColor; - LONG lbHatch; -} -alias LOGBRUSH PATTERN; -alias LOGBRUSH*PLOGBRUSH, NPLOGBRUSH, LPLOGBRUSH; -alias PATTERN *PPATTERN, NPPATTERN, LPPATTERN; - -struct LOGBRUSH32 -{ - UINT lbStyle; - COLORREF lbColor; - ULONG lbHatch; -} -alias LOGBRUSH32*PLOGBRUSH32, NPLOGBRUSH32, LPLOGBRUSH32; - -struct EMRCREATEBRUSHINDIRECT -{ - EMR emr; - DWORD ihBrush; - LOGBRUSH32 lb; -} -alias EMRCREATEBRUSHINDIRECT*PEMRCREATEBRUSHINDIRECT; - -alias LONG LCSCSTYPE, LCSGAMUTMATCH; - -struct LOGCOLORSPACEA -{ - DWORD lcsSignature; - DWORD lcsVersion; - DWORD lcsSize; - LCSCSTYPE lcsCSType; - LCSGAMUTMATCH lcsIntent; - CIEXYZTRIPLE lcsEndpoints; - DWORD lcsGammaRed; - DWORD lcsGammaGreen; - DWORD lcsGammaBlue; - CHAR[MAX_PATH] lcsFilename; -} -alias LOGCOLORSPACEA*LPLOGCOLORSPACEA; - -struct LOGCOLORSPACEW -{ - DWORD lcsSignature; - DWORD lcsVersion; - DWORD lcsSize; - LCSCSTYPE lcsCSType; - LCSGAMUTMATCH lcsIntent; - CIEXYZTRIPLE lcsEndpoints; - DWORD lcsGammaRed; - DWORD lcsGammaGreen; - DWORD lcsGammaBlue; - WCHAR[MAX_PATH] lcsFilename; -} -alias LOGCOLORSPACEW*LPLOGCOLORSPACEW; - -alias USHORT COLOR16; -struct TRIVERTEX -{ - LONG x; - LONG y; - COLOR16 Red; - COLOR16 Green; - COLOR16 Blue; - COLOR16 Alpha; -} -alias TRIVERTEX*PTRIVERTEX, LPTRIVERTEX; - -static - -if (WINVER >= 0x0400) -{ - struct EMRGLSRECORD - { - EMR emr; - DWORD cbData; - BYTE[1] Data; - } - alias EMRGLSRECORD*PEMRGLSRECORD; - - struct EMRGLSBOUNDEDRECORD - { - EMR emr; - RECTL rclBounds; - DWORD cbData; - BYTE[1] Data; - } - alias EMRGLSBOUNDEDRECORD*PEMRGLSBOUNDEDRECORD; - - struct EMRPIXELFORMAT - { - EMR emr; - PIXELFORMATDESCRIPTOR pfd; - } - alias EMRPIXELFORMAT*PEMRPIXELFORMAT; - - struct EMRCREATECOLORSPACE - { - EMR emr; - DWORD ihCS; - LOGCOLORSPACE lcs; - } - alias EMRCREATECOLORSPACE*PEMRCREATECOLORSPACE; - - struct EMRSETCOLORSPACE - { - EMR emr; - DWORD ihCS; - } - alias EMRSETCOLORSPACE*PEMRSETCOLORSPACE; - alias EMRSETCOLORSPACE EMRSELECTCOLORSPACE; - alias EMRSELECTCOLORSPACE*PEMRSELECTCOLORSPACE; - alias EMRSETCOLORSPACE EMRDELETECOLORSPACE; - alias EMRDELETECOLORSPACE*PEMRDELETECOLORSPACE; -} - -static - -if (WINVER >= 0x0500) -{ - struct EMREXTESCAPE - { - EMR emr; - INT iEscape; - INT cbEscData; - BYTE[1] EscData; - } - alias EMREXTESCAPE*PEMREXTESCAPE; - alias EMREXTESCAPE EMRDRAWESCAPE; - alias EMRDRAWESCAPE*PEMRDRAWESCAPE; - - struct EMRNAMEDESCAPE - { - EMR emr; - INT iEscape; - INT cbDriver; - INT cbEscData; - BYTE[1] EscData; - } - alias EMRNAMEDESCAPE*PEMRNAMEDESCAPE; - - struct EMRSETICMPROFILE - { - EMR emr; - DWORD dwFlags; - DWORD cbName; - DWORD cbData; - BYTE[1] Data; - } - alias EMRSETICMPROFILE*PEMRSETICMPROFILE; - alias EMRSETICMPROFILE EMRSETICMPROFILEA; - alias EMRSETICMPROFILEA*PEMRSETICMPROFILEA; - alias EMRSETICMPROFILE EMRSETICMPROFILEW; - alias EMRSETICMPROFILEW*PEMRSETICMPROFILEW; - - struct EMRCREATECOLORSPACEW - { - EMR emr; - DWORD ihCS; - LOGCOLORSPACEW lcs; - DWORD dwFlags; - DWORD cbData; - BYTE[1] Data; - } - alias EMRCREATECOLORSPACEW*PEMRCREATECOLORSPACEW; - - struct EMRCOLORMATCHTOTARGET - { - EMR emr; - DWORD dwAction; - DWORD dwFlags; - DWORD cbName; - DWORD cbData; - BYTE[1] Data; - } - alias EMRCOLORMATCHTOTARGET*PEMRCOLORMATCHTOTARGET; - - struct EMRCOLORCORRECTPALETTE - { - EMR emr; - DWORD ihPalette; - DWORD nFirstEntry; - DWORD nPalEntries; - DWORD nReserved; - } - alias EMRCOLORCORRECTPALETTE*PEMRCOLORCORRECTPALETTE; - - struct EMRALPHABLEND - { - 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 EMRALPHABLEND*PEMRALPHABLEND; - - struct EMRGRADIENTFILL - { - EMR emr; - RECTL rclBounds; - DWORD nVer; - DWORD nTri; - ULONG ulMode; - TRIVERTEX[1] Ver; - } - alias EMRGRADIENTFILL*PEMRGRADIENTFILL; - - struct EMRTRANSPARENTBLT - { - 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 EMRTRANSPARENTBLT*PEMRTRANSPARENTBLT; -} - -struct EMRCREATEDIBPATTERNBRUSHPT -{ - EMR emr; - DWORD ihBrush; - DWORD iUsage; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; -} -alias EMRCREATEDIBPATTERNBRUSHPT*PEMRCREATEDIBPATTERNBRUSHPT; - -struct EMRCREATEMONOBRUSH -{ - EMR emr; - DWORD ihBrush; - DWORD iUsage; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; -} -alias EMRCREATEMONOBRUSH*PEMRCREATEMONOBRUSH; - -struct PALETTEENTRY -{ - BYTE peRed; - BYTE peGreen; - BYTE peBlue; - BYTE peFlags; -} -alias PALETTEENTRY*PPALETTEENTRY, LPPALETTEENTRY; - -struct LOGPALETTE -{ - WORD palVersion; - WORD palNumEntries; - PALETTEENTRY[1] palPalEntry; -} -alias LOGPALETTE*PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; - -struct EMRCREATEPALETTE -{ - EMR emr; - DWORD ihPal; - LOGPALETTE lgpl; -} -alias EMRCREATEPALETTE*PEMRCREATEPALETTE; - -struct EMRCREATEPEN -{ - EMR emr; - DWORD ihPen; - LOGPEN lopn; -} -alias EMRCREATEPEN*PEMRCREATEPEN; - -struct EMRELLIPSE -{ - EMR emr; - RECTL rclBox; -} -alias EMRELLIPSE*PEMRELLIPSE; - -alias EMRELLIPSE EMRRECTANGLE; -alias EMRRECTANGLE*PEMRRECTANGLE; - -struct EMREOF -{ - EMR emr; - DWORD nPalEntries; - DWORD offPalEntries; - DWORD nSizeLast; -} -alias EMREOF*PEMREOF; - -struct EMREXCLUDECLIPRECT -{ - EMR emr; - RECTL rclClip; -} -alias EMREXCLUDECLIPRECT*PEMREXCLUDECLIPRECT; -alias EMREXCLUDECLIPRECT EMRINTERSECTCLIPRECT; -alias EMRINTERSECTCLIPRECT*PEMRINTERSECTCLIPRECT; - -struct EMREXTCREATEFONTINDIRECTW -{ - EMR emr; - DWORD ihFont; - EXTLOGFONTW elfw; -} -alias EMREXTCREATEFONTINDIRECTW*PEMREXTCREATEFONTINDIRECTW; - -struct EXTLOGPEN -{ - UINT elpPenStyle; - UINT elpWidth; - UINT elpBrushStyle; - COLORREF elpColor; - LONG elpHatch; - DWORD elpNumEntries; - DWORD[1] elpStyleEntry; -} -alias EXTLOGPEN*PEXTLOGPEN, NPEXTLOGPEN, LPEXTLOGPEN; - -struct EMREXTCREATEPEN -{ - EMR emr; - DWORD ihPen; - DWORD offBmi; - DWORD cbBmi; - DWORD offBits; - DWORD cbBits; - EXTLOGPEN elp; -} -alias EMREXTCREATEPEN*PEMREXTCREATEPEN; - -struct EMREXTFLOODFILL -{ - EMR emr; - POINTL ptlStart; - COLORREF crColor; - DWORD iMode; -} -alias EMREXTFLOODFILL*PEMREXTFLOODFILL; - -struct EMREXTSELECTCLIPRGN -{ - EMR emr; - DWORD cbRgnData; - DWORD iMode; - BYTE [1] RgnData; -} -alias EMREXTSELECTCLIPRGN*PEMREXTSELECTCLIPRGN; - -struct EMRTEXT -{ - POINTL ptlReference; - DWORD nChars; - DWORD offString; - DWORD fOptions; - RECTL rcl; - DWORD offDx; -} -alias EMRTEXT*PEMRTEXT; - -struct EMREXTTEXTOUTA -{ - EMR emr; - RECTL rclBounds; - DWORD iGraphicsMode; - FLOAT exScale; - FLOAT eyScale; - EMRTEXT emrtext; -} -alias EMREXTTEXTOUTA*PEMREXTTEXTOUTA; -alias EMREXTTEXTOUTA EMREXTTEXTOUTW; -alias EMREXTTEXTOUTW*PEMREXTTEXTOUTW; - -struct EMRFILLPATH -{ - EMR emr; - RECTL rclBounds; -} -alias EMRFILLPATH*PEMRFILLPATH; - -alias EMRFILLPATH EMRSTROKEANDFILLPATH; -alias EMRSTROKEANDFILLPATH*PEMRSTROKEANDFILLPATH; - -alias EMRFILLPATH EMRSTROKEPATH; -alias EMRSTROKEPATH*PEMRSTROKEPATH; - -struct EMRFILLRGN -{ - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - DWORD ihBrush; - BYTE[1] RgnData; -} -alias EMRFILLRGN*PEMRFILLRGN; - -struct EMRFORMAT -{ - DWORD dSignature; - DWORD nVersion; - DWORD cbData; - DWORD offData; -} -alias EMRFORMAT*PEMRFORMAT; - -struct EMRFRAMERGN -{ - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - DWORD ihBrush; - SIZEL szlStroke; - BYTE[1] RgnData; -} -alias EMRFRAMERGN*PEMRFRAMERGN; - -struct EMRGDICOMMENT -{ - EMR emr; - DWORD cbData; - BYTE[1] Data; -} -alias EMRGDICOMMENT*PEMRGDICOMMENT; - -struct EMRINVERTRGN -{ - EMR emr; - RECTL rclBounds; - DWORD cbRgnData; - BYTE[1] RgnData; -} -alias EMRINVERTRGN*PEMRINVERTRGN; -alias EMRINVERTRGN EMRPAINTRGN; -alias EMRPAINTRGN*PEMRPAINTRGN; - -struct EMRLINETO -{ - EMR emr; - POINTL ptl; -} -alias EMRLINETO*PEMRLINETO; -alias EMRLINETO EMRMOVETOEX; -alias EMRMOVETOEX*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*PEMRMASKBLT; - -struct EMRMODIFYWORLDTRANSFORM -{ - EMR emr; - XFORM xform; - DWORD iMode; -} -alias EMRMODIFYWORLDTRANSFORM*PEMRMODIFYWORLDTRANSFORM; - -struct EMROFFSETCLIPRGN -{ - EMR emr; - POINTL ptlOffset; -} -alias EMROFFSETCLIPRGN*PEMROFFSETCLIPRGN; - -struct EMRPLGBLT -{ - EMR emr; - RECTL rclBounds; - POINTL[3] 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*PEMRPLGBLT; - -struct EMRPOLYDRAW -{ - EMR emr; - RECTL rclBounds; - DWORD cptl; - POINTL[1] aptl; - BYTE[1] abTypes; -} -alias EMRPOLYDRAW*PEMRPOLYDRAW; - -struct EMRPOLYDRAW16 -{ - EMR emr; - RECTL rclBounds; - DWORD cpts; - POINTS[1] apts; - BYTE[1] abTypes; -} -alias EMRPOLYDRAW16*PEMRPOLYDRAW16; - -struct EMRPOLYLINE -{ - EMR emr; - RECTL rclBounds; - DWORD cptl; - POINTL[1] aptl; -} -alias EMRPOLYLINE*PEMRPOLYLINE; -alias EMRPOLYLINE EMRPOLYBEZIER; -alias EMRPOLYBEZIER*PEMRPOLYBEZIER; -alias EMRPOLYLINE EMRPOLYGON; -alias EMRPOLYGON*PEMRPOLYGON; -alias EMRPOLYLINE EMRPOLYBEZIERTO; -alias EMRPOLYBEZIERTO*PEMRPOLYBEZIERTO; -alias EMRPOLYLINE EMRPOLYLINETO; -alias EMRPOLYLINETO*PEMRPOLYLINETO; - -struct EMRPOLYLINE16 -{ - EMR emr; - RECTL rclBounds; - DWORD cpts; - POINTS[1] apts; -} -alias EMRPOLYLINE16*PEMRPOLYLINE16; -alias EMRPOLYLINE16 EMRPOLYBEZIER16; -alias EMRPOLYBEZIER16*PEMRPOLYBEZIER16; -alias EMRPOLYLINE16 EMRPOLYGON16; -alias EMRPOLYGON16*PEMRPOLYGON16; -alias EMRPOLYLINE16 EMRPOLYBEZIERTO16; -alias EMRPOLYBEZIERTO16*PEMRPOLYBEZIERTO16; -alias EMRPOLYLINE16 EMRPOLYLINETO16; -alias EMRPOLYLINETO16*PEMRPOLYLINETO16; - -struct EMRPOLYPOLYLINE -{ - EMR emr; - RECTL rclBounds; - DWORD nPolys; - DWORD cptl; - DWORD[1] aPolyCounts; - POINTL[1] aptl; -} -alias EMRPOLYPOLYLINE*PEMRPOLYPOLYLINE; -alias EMRPOLYPOLYLINE EMRPOLYPOLYGON; -alias EMRPOLYPOLYGON*PEMRPOLYPOLYGON; - -struct EMRPOLYPOLYLINE16 -{ - EMR emr; - RECTL rclBounds; - DWORD nPolys; - DWORD cpts; - DWORD[1] aPolyCounts; - POINTS[1] apts; -} -alias EMRPOLYPOLYLINE16*PEMRPOLYPOLYLINE16; -alias EMRPOLYPOLYLINE16 EMRPOLYPOLYGON16; -alias EMRPOLYPOLYGON16*PEMRPOLYPOLYGON16; - -struct EMRPOLYTEXTOUTA -{ - EMR emr; - RECTL rclBounds; - DWORD iGraphicsMode; - FLOAT exScale; - FLOAT eyScale; - LONG cStrings; - EMRTEXT[1] aemrtext; -} -alias EMRPOLYTEXTOUTA*PEMRPOLYTEXTOUTA; -alias EMRPOLYTEXTOUTA EMRPOLYTEXTOUTW; -alias EMRPOLYTEXTOUTW*PEMRPOLYTEXTOUTW; - -struct EMRRESIZEPALETTE -{ - EMR emr; - DWORD ihPal; - DWORD cEntries; -} -alias EMRRESIZEPALETTE*PEMRRESIZEPALETTE; - -struct EMRRESTOREDC -{ - EMR emr; - LONG iRelative; -} -alias EMRRESTOREDC*PEMRRESTOREDC; - -struct EMRROUNDRECT -{ - EMR emr; - RECTL rclBox; - SIZEL szlCorner; -} -alias EMRROUNDRECT*PEMRROUNDRECT; - -struct EMRSCALEVIEWPORTEXTEX -{ - EMR emr; - LONG xNum; - LONG xDenom; - LONG yNum; - LONG yDenom; -} -alias EMRSCALEVIEWPORTEXTEX*PEMRSCALEVIEWPORTEXTEX; -alias EMRSCALEVIEWPORTEXTEX EMRSCALEWINDOWEXTEX; -alias EMRSCALEWINDOWEXTEX*PEMRSCALEWINDOWEXTEX; - -struct EMRSELECTOBJECT -{ - EMR emr; - DWORD ihObject; -} -alias EMRSELECTOBJECT*PEMRSELECTOBJECT; -alias EMRSELECTOBJECT EMRDELETEOBJECT; -alias EMRDELETEOBJECT*PEMRDELETEOBJECT; - -struct EMRSELECTPALETTE -{ - EMR emr; - DWORD ihPal; -} -alias EMRSELECTPALETTE*PEMRSELECTPALETTE; - -struct EMRSETARCDIRECTION -{ - EMR emr; - DWORD iArcDirection; -} -alias EMRSETARCDIRECTION*PEMRSETARCDIRECTION; - -struct EMRSETTEXTCOLOR -{ - EMR emr; - COLORREF crColor; -} -alias EMRSETTEXTCOLOR*PEMRSETTEXTCOLOR; -alias EMRSETTEXTCOLOR EMRSETBKCOLOR; -alias EMRSETBKCOLOR*PEMRSETBKCOLOR; - -struct EMRSETCOLORADJUSTMENT -{ - EMR emr; - COLORADJUSTMENT ColorAdjustment; -} -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*PEMRSETDIBITSTODEVICE; - -struct EMRSETMAPPERFLAGS -{ - EMR emr; - DWORD dwFlags; -} -alias EMRSETMAPPERFLAGS*PEMRSETMAPPERFLAGS; - -struct EMRSETMITERLIMIT -{ - EMR emr; - FLOAT eMiterLimit; -} -alias EMRSETMITERLIMIT*PEMRSETMITERLIMIT; - -struct EMRSETPALETTEENTRIES -{ - EMR emr; - DWORD ihPal; - DWORD iStart; - DWORD cEntries; - PALETTEENTRY[1] aPalEntries; -} -alias EMRSETPALETTEENTRIES*PEMRSETPALETTEENTRIES; - -struct EMRSETPIXELV -{ - EMR emr; - POINTL ptlPixel; - COLORREF crColor; -} -alias EMRSETPIXELV*PEMRSETPIXELV; - -struct EMRSETVIEWPORTEXTEX -{ - EMR emr; - SIZEL szlExtent; -} -alias EMRSETVIEWPORTEXTEX*PEMRSETVIEWPORTEXTEX; -alias EMRSETVIEWPORTEXTEX EMRSETWINDOWEXTEX; -alias EMRSETWINDOWEXTEX*PEMRSETWINDOWEXTEX; - -struct EMRSETVIEWPORTORGEX -{ - EMR emr; - POINTL ptlOrigin; -} -alias EMRSETVIEWPORTORGEX*PEMRSETVIEWPORTORGEX; -alias EMRSETVIEWPORTORGEX EMRSETWINDOWORGEX; -alias EMRSETWINDOWORGEX*PEMRSETWINDOWORGEX; -alias EMRSETVIEWPORTORGEX EMRSETBRUSHORGEX; -alias EMRSETBRUSHORGEX*PEMRSETBRUSHORGEX; - -struct EMRSETWORLDTRANSFORM -{ - EMR emr; - XFORM xform; -} -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*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*PEMRSTRETCHDIBITS; - -struct EMRABORTPATH -{ - EMR emr; -} -alias EMRABORTPATH*PEMRABORTPATH; -alias EMRABORTPATH EMRBEGINPATH; -alias EMRBEGINPATH*PEMRBEGINPATH; -alias EMRABORTPATH EMRENDPATH; -alias EMRENDPATH*PEMRENDPATH; -alias EMRABORTPATH EMRCLOSEFIGURE; -alias EMRCLOSEFIGURE*PEMRCLOSEFIGURE; -alias EMRABORTPATH EMRFLATTENPATH; -alias EMRFLATTENPATH*PEMRFLATTENPATH; -alias EMRABORTPATH EMRWIDENPATH; -alias EMRWIDENPATH*PEMRWIDENPATH; -alias EMRABORTPATH EMRSETMETARGN; -alias EMRSETMETARGN*PEMRSETMETARGN; -alias EMRABORTPATH EMRSAVEDC; -alias EMRSAVEDC*PEMRSAVEDC; -alias EMRABORTPATH EMRREALIZEPALETTE; -alias EMRREALIZEPALETTE*PEMRREALIZEPALETTE; - -struct EMRSELECTCLIPPATH -{ - EMR emr; - DWORD iMode; -} -alias EMRSELECTCLIPPATH*PEMRSELECTCLIPPATH; -alias EMRSELECTCLIPPATH EMRSETBKMODE; -alias EMRSETBKMODE*PEMRSETBKMODE; -alias EMRSELECTCLIPPATH EMRSETMAPMODE; -alias EMRSETMAPMODE*PEMRSETMAPMODE; -alias EMRSELECTCLIPPATH EMRSETPOLYFILLMODE; -alias EMRSETPOLYFILLMODE*PEMRSETPOLYFILLMODE; -alias EMRSELECTCLIPPATH EMRSETROP2; -alias EMRSETROP2*PEMRSETROP2; -alias EMRSELECTCLIPPATH EMRSETSTRETCHBLTMODE; -alias EMRSETSTRETCHBLTMODE*PEMRSETSTRETCHBLTMODE; -alias EMRSELECTCLIPPATH EMRSETICMMODE; -alias EMRSETICMMODE*PEMRSETICMMODE; -alias EMRSELECTCLIPPATH EMRSETTEXTALIGN; -alias EMRSETTEXTALIGN*PEMRSETTEXTALIGN; -alias EMRSELECTCLIPPATH EMRENABLEICM; -alias EMRENABLEICM*PEMRENABLEICM; -static - -if (WINVER >= 0x0500) -{ - alias EMRSELECTCLIPPATH EMRSETLAYOUT; - alias EMRSETLAYOUT*PEMRSETLAYOUT; -} - -align (2) : -struct METAHEADER -{ - WORD mtType; - WORD mtHeaderSize; - WORD mtVersion; - DWORD mtSize; - WORD mtNoObjects; - DWORD mtMaxRecord; - WORD mtNoParameters; -} -alias METAHEADER*PMETAHEADER; -alias METAHEADER*LPMETAHEADER; - -align : - -struct ENHMETAHEADER -{ - DWORD iType; - DWORD nSize; - RECTL rclBounds; - RECTL rclFrame; - DWORD dSignature = ENHMETA_SIGNATURE; - DWORD nVersion; - DWORD nBytes; - DWORD nRecords; - WORD nHandles; - WORD sReserved; - DWORD nDescription; - DWORD offDescription; - DWORD nPalEntries; - SIZEL szlDevice; - SIZEL szlMillimeters; - static - - if (WINVER >= 0x0400) - { - DWORD cbPixelFormat; - DWORD offPixelFormat; - DWORD bOpenGL; - } - - static - - if (WINVER >= 0x0500) - { - SIZEL szlMicrometers; - } -} -alias ENHMETAHEADER*PENHMETAHEADER, LPENHMETAHEADER; - -struct METARECORD -{ - DWORD rdSize; - WORD rdFunction; - WORD[1] rdParm; -} -alias METARECORD*PMETARECORD; -alias METARECORD*LPMETARECORD; - -struct ENHMETARECORD -{ - DWORD iType; - DWORD nSize; - DWORD[1] dParm; -} -alias ENHMETARECORD*PENHMETARECORD, LPENHMETARECORD; - -// --- - -struct HANDLETABLE -{ - HGDIOBJ[1] objectHandle; -} -alias HANDLETABLE*PHANDLETABLE, LPHANDLETABLE; - -struct TEXTMETRICA -{ - 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; -} -alias TEXTMETRICA*PTEXTMETRICA, NPTEXTMETRICA, LPTEXTMETRICA; - -struct TEXTMETRICW -{ - 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; -} -alias TEXTMETRICW*PTEXTMETRICW, NPTEXTMETRICW, LPTEXTMETRICW; - -struct RGNDATAHEADER -{ - DWORD dwSize; - DWORD iType; - DWORD nCount; - DWORD nRgnSize; - RECT rcBound; -} -alias RGNDATAHEADER*PRGNDATAHEADER; - -struct RGNDATA -{ - RGNDATAHEADER rdh; - char[1] Buffer; -} -alias RGNDATA*PRGNDATA, NPRGNDATA, LPRGNDATA; - -/* for GetRandomRgn */ -const SYSRGN=4; -struct GCP_RESULTSA -{ - DWORD lStructSize; - LPSTR lpOutString; - UINT*lpOrder; - INT*lpDx; - INT*lpCaretPos; - LPSTR lpClass; - LPWSTR lpGlyphs; - UINT nGlyphs; - UINT nMaxFit; -} -alias GCP_RESULTSA*LPGCP_RESULTSA; - -struct GCP_RESULTSW -{ - DWORD lStructSize; - LPWSTR lpOutString; - UINT*lpOrder; - INT*lpDx; - INT*lpCaretPos; - LPWSTR lpClass; - LPWSTR lpGlyphs; - UINT nGlyphs; - UINT nMaxFit; -} -alias GCP_RESULTSW*LPGCP_RESULTSW; - -struct GLYPHMETRICS -{ - UINT gmBlackBoxX; - UINT gmBlackBoxY; - POINT gmptGlyphOrigin; - short gmCellIncX; - short gmCellIncY; -} -alias GLYPHMETRICS*LPGLYPHMETRICS; - -static - -if (_WIN32_WINNT >= 0x0500) -{ - struct WCRANGE - { - WCHAR wcLow; - USHORT cGlyphs; - } - alias WCRANGE*PWCRANGE, LPWCRANGE; - - struct GLYPHSET - { - DWORD cbThis; - DWORD flAccel; - DWORD cGlyphsSupported; - DWORD cRanges; - WCRANGE[1] ranges; - } - alias GLYPHSET*PGLYPHSET, LPGLYPHSET; - - const DWORD GS_8BIT_INDICES = 0x00000001; -} - -struct KERNINGPAIR -{ - WORD wFirst; - WORD wSecond; - int iKernAmount; -} -alias KERNINGPAIR*LPKERNINGPAIR; - -struct FIXED -{ - WORD fract; - short value; -} - -struct MAT2 -{ - FIXED eM11; - FIXED eM12; - FIXED eM21; - FIXED eM22; -} -alias MAT2*LPMAT2; - -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; -} -alias OUTLINETEXTMETRICA*POUTLINETEXTMETRICA, NPOUTLINETEXTMETRICA, LPOUTLINETEXTMETRICA; - -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 OUTLINETEXTMETRICW*POUTLINETEXTMETRICW, NPOUTLINETEXTMETRICW, LPOUTLINETEXTMETRICW; - -struct RASTERIZER_STATUS -{ - short nSize; - short wFlags; - short nLanguageID; -} -alias RASTERIZER_STATUS*LPRASTERIZER_STATUS; - -struct POLYTEXTA -{ - int x; - int y; - UINT n; - LPCSTR lpstr; - UINT uiFlags; - RECT rcl; - int*pdx; -} -alias POLYTEXTA*PPOLYTEXTA, NPPOLYTEXTA, LPPOLYTEXTA; - -struct POLYTEXTW -{ - int x; - int y; - UINT n; - LPCWSTR lpstr; - UINT uiFlags; - RECT rcl; - int*pdx; -} -alias POLYTEXTW*PPOLYTEXTW, NPPOLYTEXTW, LPPOLYTEXTW; - -struct PIXELFORMATDESCRIPTOR -{ - WORD nSize; - WORD nVersion; - DWORD dwFlags; - BYTE iPixelType; - BYTE cColorBits; - BYTE cRedBits; - BYTE cRedShift; - BYTE cGreenBits; - BYTE cGreenShift; - BYTE cBlueBits; - BYTE cBlueShift; - BYTE cAlphaBits; - BYTE cAlphaShift; - BYTE cAccumBits; - BYTE cAccumRedBits; - BYTE cAccumGreenBits; - BYTE cAccumBlueBits; - BYTE cAccumAlphaBits; - BYTE cDepthBits; - BYTE cStencilBits; - BYTE cAuxBuffers; - BYTE iLayerType; - BYTE bReserved; - DWORD dwLayerMask; - DWORD dwVisibleMask; - DWORD dwDamageMask; -} -alias PIXELFORMATDESCRIPTOR*PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; - -struct METAFILEPICT -{ - LONG mm; - LONG xExt; - LONG yExt; - HMETAFILE hMF; -} -alias METAFILEPICT*LPMETAFILEPICT; - -struct LOCALESIGNATURE -{ - DWORD[4] lsUsb; - DWORD[2] lsCsbDefault; - DWORD[2] lsCsbSupported; -} -alias LOCALESIGNATURE*PLOCALESIGNATURE, LPLOCALESIGNATURE; - -alias LONG LCSTYPE; /* What this for? */ - -align (4) : -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; -} -alias NEWTEXTMETRICA*PNEWTEXTMETRICA, NPNEWTEXTMETRICA, LPNEWTEXTMETRICA; - -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; -} -alias NEWTEXTMETRICW*PNEWTEXTMETRICW, NPNEWTEXTMETRICW, LPNEWTEXTMETRICW; - -align : -struct NEWTEXTMETRICEXA -{ - NEWTEXTMETRICA ntmTm; - FONTSIGNATURE ntmFontSig; -} - -struct NEWTEXTMETRICEXW -{ - NEWTEXTMETRICW ntmTm; - FONTSIGNATURE ntmFontSig; -} - -struct PELARRAY -{ - LONG paXCount; - LONG paYCount; - LONG paXExt; - LONG paYExt; - BYTE paRGBs; -} -alias PELARRAY*PPELARRAY, NPPELARRAY, LPPELARRAY; - -struct ENUMLOGFONTA -{ - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; -} -alias ENUMLOGFONTA*LPENUMLOGFONTA; - -struct ENUMLOGFONTW -{ - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; -} -alias ENUMLOGFONTW*LPENUMLOGFONTW; - -struct ENUMLOGFONTEXA -{ - LOGFONTA elfLogFont; - BYTE[LF_FULLFACESIZE] elfFullName; - BYTE[LF_FACESIZE] elfStyle; - BYTE[LF_FACESIZE] elfScript; -} -alias ENUMLOGFONTEXA*LPENUMLOGFONTEXA; - -struct ENUMLOGFONTEXW -{ - LOGFONTW elfLogFont; - WCHAR[LF_FULLFACESIZE] elfFullName; - WCHAR[LF_FACESIZE] elfStyle; - WCHAR[LF_FACESIZE] elfScript; -} -alias ENUMLOGFONTEXW*LPENUMLOGFONTEXW; - -struct POINTFX -{ - FIXED x; - FIXED y; -} -alias POINTFX*LPPOINTFX; - -struct TTPOLYCURVE -{ - WORD wType; - WORD cpfx; - POINTFX[1] apfx; -} -alias TTPOLYCURVE*LPTTPOLYCURVE; - -struct TTPOLYGONHEADER -{ - DWORD cb; - DWORD dwType; - POINTFX pfxStart; -} -alias TTPOLYGONHEADER*LPTTPOLYGONHEADER; - -struct POINTFLOAT -{ - FLOAT x; - FLOAT y; -} -alias POINTFLOAT*PPOINTFLOAT; - -struct GLYPHMETRICSFLOAT -{ - FLOAT gmfBlackBoxX; - FLOAT gmfBlackBoxY; - POINTFLOAT gmfptGlyphOrigin; - FLOAT gmfCellIncX; - FLOAT gmfCellIncY; -} -alias GLYPHMETRICSFLOAT*PGLYPHMETRICSFLOAT, LPGLYPHMETRICSFLOAT; - -struct LAYERPLANEDESCRIPTOR -{ - WORD nSize; - WORD nVersion; - DWORD dwFlags; - BYTE iPixelType; - BYTE cColorBits; - BYTE cRedBits; - BYTE cRedShift; - BYTE cGreenBits; - BYTE cGreenShift; - BYTE cBlueBits; - BYTE cBlueShift; - BYTE cAlphaBits; - BYTE cAlphaShift; - BYTE cAccumBits; - BYTE cAccumRedBits; - BYTE cAccumGreenBits; - BYTE cAccumBlueBits; - BYTE cAccumAlphaBits; - BYTE cDepthBits; - BYTE cStencilBits; - BYTE cAuxBuffers; - BYTE iLayerPlane; - BYTE bReserved; - COLORREF crTransparent; -} -alias LAYERPLANEDESCRIPTOR*PLAYERPLANEDESCRIPTOR, LPLAYERPLANEDESCRIPTOR; - -struct BLENDFUNCTION -{ - BYTE BlendOp; - BYTE BlendFlags; - BYTE SourceConstantAlpha; - BYTE AlphaFormat; -} -alias BLENDFUNCTION*PBLENDFUNCTION, LPBLENDFUNCTION; - -const MM_MAX_NUMAXES = 16; - -struct DESIGNVECTOR -{ - DWORD dvReserved; - DWORD dvNumAxes; - LONG[MM_MAX_NUMAXES] dvValues; -} -alias DESIGNVECTOR*PDESIGNVECTOR, LPDESIGNVECTOR; -const STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); -const STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); - -static - -if (_WIN32_WINNT >= 0x0500) -{ - const MM_MAX_AXES_NAMELEN = 16; - - struct AXISINFOA - { - LONG axMinValue; - LONG axMaxValue; - BYTE[MM_MAX_AXES_NAMELEN] axAxisName; - } - alias AXISINFOA*PAXISINFOA, LPAXISINFOA; - - struct AXISINFOW - { - LONG axMinValue; - LONG axMaxValue; - WCHAR[MM_MAX_AXES_NAMELEN] axAxisName; - } - alias AXISINFOW*PAXISINFOW, LPAXISINFOW; - - version (Unicode) - { - alias AXISINFOW AXISINFO; - alias PAXISINFOW PAXISINFO; - alias LPAXISINFOW LPAXISINFO; - } - else - { - alias AXISINFOA AXISINFO; - alias PAXISINFOA PAXISINFO; - alias LPAXISINFOA LPAXISINFO; - } - - struct AXESLISTA - { - DWORD axlReserved; - DWORD axlNumAxes; - AXISINFOA[MM_MAX_NUMAXES] axlAxisInfo; - } - alias AXESLISTA*PAXESLISTA, LPAXESLISTA; - - struct AXESLISTW - { - DWORD axlReserved; - DWORD axlNumAxes; - AXISINFOW[MM_MAX_NUMAXES] axlAxisInfo; - } - alias AXESLISTW*PAXESLISTW, LPAXESLISTW; - - version (Unicode) - { - alias AXESLISTW AXESLIST; - alias PAXESLISTW PAXESLIST; - alias LPAXESLISTW LPAXESLIST; - } - else - { - alias AXESLISTA AXESLIST; - alias PAXESLISTA PAXESLIST; - alias LPAXESLISTA LPAXESLIST; - } - - struct ENUMLOGFONTEXDVA - { - ENUMLOGFONTEXA elfEnumLogfontEx; - DESIGNVECTOR elfDesignVector; - } - alias ENUMLOGFONTEXDVA*PENUMLOGFONTEXDVA, LPENUMLOGFONTEXDVA; - - struct ENUMLOGFONTEXDVW - { - ENUMLOGFONTEXW elfEnumLogfontEx; - DESIGNVECTOR elfDesignVector; - } - alias ENUMLOGFONTEXDVW*PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; - - HFONT CreateFontIndirectExA(ENUMLOGFONTEXDVA*); - - HFONT CreateFontIndirectExW(ENUMLOGFONTEXDVW*); - - version (Unicode) - alias CreateFontIndirectExW CreateFontIndirectEx; - else - alias CreateFontIndirectExA CreateFontIndirectEx; - - struct ENUMTEXTMETRICA - { - NEWTEXTMETRICEXA etmNewTextMetricEx; - AXESLISTA etmAxesList; - } - alias ENUMTEXTMETRICA*PENUMTEXTMETRICA, LPENUMTEXTMETRICA; - - struct ENUMTEXTMETRICW - { - NEWTEXTMETRICEXW etmNewTextMetricEx; - AXESLISTW etmAxesList; - } - alias ENUMTEXTMETRICW*PENUMTEXTMETRICW, LPENUMTEXTMETRICW; - - version (Unicode) - { - alias ENUMTEXTMETRICW ENUMTEXTMETRIC; - alias PENUMTEXTMETRICW PENUMTEXTMETRIC; - alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; - } - else - { - alias ENUMTEXTMETRICA ENUMTEXTMETRIC; - alias PENUMTEXTMETRICA PENUMTEXTMETRIC; - alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; - } -} /* _WIN32_WINNT >= 0x0500 */ - -struct GRADIENT_TRIANGLE -{ - ULONG Vertex1; - ULONG Vertex2; - ULONG Vertex3; -} -alias GRADIENT_TRIANGLE*PGRADIENT_TRIANGLE, LPGRADIENT_TRIANGLE; - -struct GRADIENT_RECT -{ - ULONG UpperLeft; - ULONG LowerRight; -} -alias GRADIENT_RECT*PGRADIENT_RECT, LPGRADIENT_RECT; - -struct DISPLAY_DEVICEA -{ - DWORD cb; - CHAR[32] DeviceName; - CHAR[128] DeviceString; - DWORD StateFlags; - CHAR[128] DeviceID; - CHAR[128] DeviceKey; -} -alias DISPLAY_DEVICEA*PDISPLAY_DEVICEA, LPDISPLAY_DEVICEA; - -struct DISPLAY_DEVICEW -{ - DWORD cb; - WCHAR[32] DeviceName; - WCHAR[128] DeviceString; - DWORD StateFlags; - WCHAR[128] DeviceID; - WCHAR[128] DeviceKey; -} -alias DISPLAY_DEVICEW*PDISPLAY_DEVICEW, LPDISPLAY_DEVICEW; - -static - -if (WINVER >= 0x0400) -{ - struct DRAWPATRECT - { - POINT ptPosition; - POINT ptSize; - WORD wStyle; - WORD wPattern; - } - alias DRAWPATRECT*PDRAWPATRECT; -} - -// --------- -// Callbacks - -alias BOOL function(HDC, int) ABORTPROC; - -alias int function(HDC, HANDLETABLE*, METARECORD*, int, LPARAM) MFENUMPROC; - -alias int function(HDC, HANDLETABLE*, CPtr!(ENHMETARECORD), int, LPARAM) ENHMFENUMPROC; - -alias int function(CPtr!(LOGFONTA), CPtr!(TEXTMETRICA), DWORD, LPARAM) FONTENUMPROCA, OLDFONTENUMPROCA; - -alias int function(CPtr!(LOGFONTW), CPtr!(TEXTMETRICW), DWORD, LPARAM) FONTENUMPROCW, OLDFONTENUMPROCW; - -alias int function(LPSTR, LPARAM) ICMENUMPROCA; - -alias int function(LPWSTR, LPARAM) ICMENUMPROCW; - -alias void function(LPVOID, LPARAM) GOBJENUMPROC; - -alias void function(int, int, LPARAM) LINEDDAPROC; - -alias UINT function(HWND, HMODULE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, UINT) LPFNDEVMODE; - -alias DWORD function(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; - -// --------- -// C Macros. -// FIXME: -// POINTS MAKEPOINTS(DWORD dwValue) #define MAKEPOINTS(l) (*((POINTS*)&(l))) -DWORD MAKEROP4(DWORD fore, DWORD back) -{ - return ((back << 8) & 0xFF000000) | (fore); -} - - -COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) -{ - return cast(COLORREF) (k | (y << 8) | (m << 16) | (c << 24)); -} - - -BYTE GetCValue(COLORREF cmyk) -{ - return cast(BYTE) (cmyk >> 24); -} - - -BYTE GetMValue(COLORREF cmyk) -{ - return cast(BYTE) (cmyk >> 16); -} - - -BYTE GetYValue(COLORREF cmyk) -{ - return cast(BYTE) (cmyk >> 8); -} - - -BYTE GetKValue(COLORREF cmyk) -{ - return cast(BYTE) cmyk; -} - - -COLORREF RGB(BYTE r, BYTE g, BYTE b) -{ - return cast(COLORREF) (r | (g << 8) | (b << 16)); -} - - -BYTE GetRValue(COLORREF c) -{ - return cast(BYTE) c; -} - - -BYTE GetGValue(COLORREF c) -{ - return cast(BYTE) (c >> 8); -} - - -BYTE GetBValue(COLORREF c) -{ - return cast(BYTE) (c >> 16); -} - - -COLORREF PALETTEINDEX(WORD i) -{ - return 0x01000000 | cast(COLORREF) i; -} - - -COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) -{ - return 0x02000000 | RGB(r, g, b); -} - - -extern (Windows) { -int AbortDoc(HDC); - -BOOL AbortPath(HDC); - -int AddFontResourceA(LPCSTR); - -int AddFontResourceW(LPCWSTR); - -BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); - -BOOL AnimatePalette(HPALETTE, UINT, UINT, CPtr!(PALETTEENTRY)); - -BOOL Arc(HDC, int, int, int, int, int, int, int, int); - -BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); - -BOOL BeginPath(HDC); - -BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); - -BOOL CancelDC(HDC); - -BOOL CheckColorsInGamut(HDC, PVOID, PVOID, DWORD); - -BOOL Chord(HDC, int, int, int, int, int, int, int, int); - -int ChoosePixelFormat(HDC, CPtr!(PIXELFORMATDESCRIPTOR)); - -HENHMETAFILE CloseEnhMetaFile(HDC); - -BOOL CloseFigure(HDC); - -HMETAFILE CloseMetaFile(HDC); - -BOOL ColorMatchToTarget(HDC, HDC, DWORD); - -BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); - -int CombineRgn(HRGN, HRGN, HRGN, int); - -BOOL CombineTransform(LPXFORM, CPtr!(XFORM), CPtr!(XFORM)); - -HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); - -HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); - -HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); - -HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); - -HBITMAP CreateBitmap(int, int, UINT, UINT, PCVOID); - -HBITMAP CreateBitmapIndirect(CPtr!(BITMAP)); - -HBRUSH CreateBrushIndirect(CPtr!(LOGBRUSH)); - -HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); - -HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); - -HBITMAP CreateCompatibleBitmap(HDC, int, int); - -HDC CreateCompatibleDC(HDC); - -HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, CPtr!(DEVMODEA)); - -HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, CPtr!(DEVMODEW)); - -HBITMAP CreateDIBitmap(HDC, CPtr!(BITMAPINFOHEADER), DWORD, PCVOID, CPtr!(BITMAPINFO), UINT); - -HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); - -HBRUSH CreateDIBPatternBrushPt(PCVOID, UINT); - -HBITMAP CreateDIBSection(HDC, CPtr!(BITMAPINFO), UINT, void**, HANDLE, DWORD); - -HBITMAP CreateDiscardableBitmap(HDC, int, int); - -HRGN CreateEllipticRgn(int, int, int, int); - -HRGN CreateEllipticRgnIndirect(LPCRECT); - -HDC CreateEnhMetaFileA(HDC, LPCSTR, LPCRECT, LPCSTR); - -HDC CreateEnhMetaFileW(HDC, LPCWSTR, LPCRECT, LPCWSTR); - -HFONT CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR); - -HFONT CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); - -HFONT CreateFontIndirectA(CPtr!(LOGFONTA)); - -HFONT CreateFontIndirectW(CPtr!(LOGFONTW)); - -HPALETTE CreateHalftonePalette(HDC); - -HBRUSH CreateHatchBrush(int, COLORREF); - -HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, CPtr!(DEVMODEA)); - -HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, CPtr!(DEVMODEW)); - -HDC CreateMetaFileA(LPCSTR); - -HDC CreateMetaFileW(LPCWSTR); - -HPALETTE CreatePalette(CPtr!(LOGPALETTE)); - -HBRUSH CreatePatternBrush(HBITMAP); - -HPEN CreatePen(int, int, COLORREF); - -HPEN CreatePenIndirect(CPtr!(LOGPEN)); - -HRGN CreatePolygonRgn(CPtr!(POINT), int, int); - -HRGN CreatePolyPolygonRgn(CPtr!(POINT), CPtr!(INT), int, int); - -HRGN CreateRectRgn(int, int, int, int); - -HRGN CreateRectRgnIndirect(LPCRECT); - -HRGN CreateRoundRectRgn(int, int, int, int, int, int); - -BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); - -BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); - -HBRUSH CreateSolidBrush(COLORREF); - -BOOL DeleteColorSpace(HCOLORSPACE); - -BOOL DeleteDC(HDC); - -BOOL DeleteEnhMetaFile(HENHMETAFILE); - -BOOL DeleteMetaFile(HMETAFILE); - -BOOL DeleteObject(HGDIOBJ); - -int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); - -DWORD DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, LPSTR, CPtr!(DEVMODEA)); - -DWORD DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, LPWSTR, CPtr!(DEVMODEW)); - -BOOL DPtoLP(HDC, LPPOINT, int); - -int DrawEscape(HDC, int, int, LPCSTR); - -BOOL Ellipse(HDC, int, int, int, int); - -int EndDoc(HDC); - -int EndPage(HDC); - -BOOL EndPath(HDC); - -BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, PVOID, LPCRECT); - -int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); - -int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); - -int EnumFontFamiliesExA(HDC, PLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); - -int EnumFontFamiliesExW(HDC, PLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); - -int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); - -int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); - -int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); - -int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); - -BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); - -int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); - -BOOL EqualRgn(HRGN, HRGN); - -int Escape(HDC, int, int, LPCSTR, PVOID); - -int ExcludeClipRect(HDC, int, int, int, int); - -int ExcludeUpdateRgn(HDC, HWND); - -HPEN ExtCreatePen(DWORD, DWORD, CPtr!(LOGBRUSH), DWORD, CPtr!(DWORD)); - -HRGN ExtCreateRegion(CPtr!(XFORM), DWORD, CPtr!(RGNDATA)); - -int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); - -BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); - -int ExtSelectClipRgn(HDC, HRGN, int); - -BOOL ExtTextOutA(HDC, int, int, UINT, LPCRECT, LPCSTR, UINT, CPtr!(INT)); - -BOOL ExtTextOutW(HDC, int, int, UINT, LPCRECT, LPCWSTR, UINT, CPtr!(INT)); - -BOOL FillPath(HDC); - -int FillRect(HDC, LPCRECT, HBRUSH); - -int FillRgn(HDC, HRGN, HBRUSH); - -BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); - -BOOL FlattenPath(HDC); - -BOOL FloodFill(HDC, int, int, COLORREF); - -BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); - -BOOL GdiComment(HDC, UINT, CPtr!(BYTE)); - -BOOL GdiFlush(); - -DWORD GdiGetBatchLimit(); - -DWORD GdiSetBatchLimit(DWORD); - -int GetArcDirection(HDC); - -BOOL GetAspectRatioFilterEx(HDC, LPSIZE); - -LONG GetBitmapBits(HBITMAP, LONG, PVOID); - -BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); - -COLORREF GetBkColor(HDC); - -int GetBkMode(HDC); - -UINT GetBoundsRect(HDC, LPRECT, UINT); - -BOOL GetBrushOrgEx(HDC, LPPOINT); - -BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); - -BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); - -BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); - -BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); - -DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); - -DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); - -BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); - -BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); - -BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); - -BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); - -BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); - -BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); - -int GetClipBox(HDC, LPRECT); - -int GetClipRgn(HDC, HRGN); - -BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); - -HANDLE GetColorSpace(HDC); - -HGDIOBJ GetCurrentObject(HDC, UINT); - -BOOL GetCurrentPositionEx(HDC, LPPOINT); - -HCURSOR GetCursor(); - -BOOL GetDCOrgEx(HDC, LPPOINT); - -int GetDeviceCaps(HDC, int); - -BOOL GetDeviceGammaRamp(HDC, PVOID); - -UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD*); - -int GetDIBits(HDC, HBITMAP, UINT, UINT, PVOID, LPBITMAPINFO, UINT); - -HENHMETAFILE GetEnhMetaFileA(LPCSTR); - -HENHMETAFILE GetEnhMetaFileW(LPCWSTR); - -UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); - -UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR); - -UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR); - -UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER); - -UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY); - -UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, DWORD, CPtr!(PIXELFORMATDESCRIPTOR)); - -DWORD GetFontData(HDC, DWORD, DWORD, PVOID, DWORD); - -DWORD GetFontLanguageInfo(HDC); - -DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, CPtr!(MAT2)); - -DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, CPtr!(MAT2)); - -int GetGraphicsMode(HDC); - -BOOL GetICMProfileA(HDC, DWORD, LPSTR); - -BOOL GetICMProfileW(HDC, DWORD, LPWSTR); - -DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); - -DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); - -BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); - -BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); - -int GetMapMode(HDC); - -HMETAFILE GetMetaFileA(LPCSTR); - -HMETAFILE GetMetaFileW(LPCWSTR); - -UINT GetMetaFileBitsEx(HMETAFILE, UINT, PVOID); - -int GetMetaRgn(HDC, HRGN); - -BOOL GetMiterLimit(HDC, PFLOAT); - -COLORREF GetNearestColor(HDC, COLORREF); - -UINT GetNearestPaletteIndex(HPALETTE, COLORREF); - -int GetObjectA(HGDIOBJ, int, PVOID); - -int GetObjectW(HGDIOBJ, int, PVOID); - -DWORD GetObjectType(HGDIOBJ); - -UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); - -UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); - -UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); - -int GetPath(HDC, LPPOINT, PBYTE, int); - -COLORREF GetPixel(HDC, int, int); - -int GetPixelFormat(HDC); - -int GetPolyFillMode(HDC); - -BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); - -int GetRandomRgn(HDC, HRGN, INT); - -DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); - -int GetRgnBox(HRGN, LPRECT); - -int GetROP2(HDC); - -HGDIOBJ GetStockObject(int); - -int GetStretchBltMode(HDC); - -UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); - -UINT GetSystemPaletteUse(HDC); - -UINT GetTextAlign(HDC); - -int GetTextCharacterExtra(HDC); - -int GetTextCharset(HDC); - -int GetTextCharsetInfo(HDC, LPFONTSIGNATURE, DWORD); - -COLORREF GetTextColor(HDC); - -BOOL GetTextExtentExPointA(HDC, LPCSTR, int, int, LPINT, LPINT, LPSIZE); - -BOOL GetTextExtentExPointW(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE); - -BOOL GetTextExtentPointA(HDC, LPCSTR, int, LPSIZE); - -BOOL GetTextExtentPointW(HDC, LPCWSTR, int, LPSIZE); - -BOOL GetTextExtentPoint32A(HDC, LPCSTR, int, LPSIZE); - -BOOL GetTextExtentPoint32W(HDC, LPCWSTR, int, LPSIZE); - -int GetTextFaceA(HDC, int, LPSTR); - -int GetTextFaceW(HDC, int, LPWSTR); - -BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); - -BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); - -BOOL GetViewportExtEx(HDC, LPSIZE); - -BOOL GetViewportOrgEx(HDC, LPPOINT); - -BOOL GetWindowExtEx(HDC, LPSIZE); - -BOOL GetWindowOrgEx(HDC, LPPOINT); - -UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); - -BOOL GetWorldTransform(HDC, LPXFORM); - -int IntersectClipRect(HDC, int, int, int, int); - -BOOL InvertRgn(HDC, HRGN); - -BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); - -BOOL LineTo(HDC, int, int); - -BOOL LPtoDP(HDC, LPPOINT, int); - -BOOL MaskBlt(HDC, int, int, int, int, HDC, int, int, HBITMAP, int, int, DWORD); - -BOOL ModifyWorldTransform(HDC, CPtr!(XFORM), DWORD); - -BOOL MoveToEx(HDC, int, int, LPPOINT); - -int OffsetClipRgn(HDC, int, int); - -int OffsetRgn(HRGN, int, int); - -BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); - -BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); - -BOOL PaintRgn(HDC, HRGN); - -BOOL PatBlt(HDC, int, int, int, int, DWORD); - -HRGN PathToRegion(HDC); - -BOOL Pie(HDC, int, int, int, int, int, int, int, int); - -BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, LPCRECT); - -BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, CPtr!(ENHMETARECORD), UINT); - -BOOL PlayMetaFile(HDC, HMETAFILE); - -BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); - -BOOL PlgBlt(HDC, CPtr!(POINT), HDC, int, int, int, int, HBITMAP, int, int); - -BOOL PolyBezier(HDC, CPtr!(POINT), DWORD); - -BOOL PolyBezierTo(HDC, CPtr!(POINT), DWORD); - -BOOL PolyDraw(HDC, CPtr!(POINT), CPtr!(BYTE), int); - -BOOL Polygon(HDC, CPtr!(POINT), int); - -BOOL Polyline(HDC, CPtr!(POINT), int); - -BOOL PolylineTo(HDC, CPtr!(POINT), DWORD); - -BOOL PolyPolygon(HDC, CPtr!(POINT), CPtr!(INT), int); - -BOOL PolyPolyline(HDC, CPtr!(POINT), CPtr!(DWORD), DWORD); - -BOOL PolyTextOutA(HDC, CPtr!(POLYTEXTA), int); - -BOOL PolyTextOutW(HDC, CPtr!(POLYTEXTW), int); - -BOOL PtInRegion(HRGN, int, int); - -BOOL PtVisible(HDC, int, int); - -UINT RealizePalette(HDC); - -BOOL Rectangle(HDC, int, int, int, int); - -BOOL RectInRegion(HRGN, LPCRECT); - -BOOL RectVisible(HDC, LPCRECT); - -BOOL RemoveFontResourceA(LPCSTR); - -BOOL RemoveFontResourceW(LPCWSTR); - -HDC ResetDCA(HDC, CPtr!(DEVMODEA)); - -HDC ResetDCW(HDC, CPtr!(DEVMODEW)); - -BOOL ResizePalette(HPALETTE, UINT); - -BOOL RestoreDC(HDC, int); - -BOOL RoundRect(HDC, int, int, int, int, int, int); - -int SaveDC(HDC); - -BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); - -BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); - -BOOL SelectClipPath(HDC, int); - -int SelectClipRgn(HDC, HRGN); - -HGDIOBJ SelectObject(HDC, HGDIOBJ); - -HPALETTE SelectPalette(HDC, HPALETTE, BOOL); - -int SetAbortProc(HDC, ABORTPROC); - -int SetArcDirection(HDC, int); - -LONG SetBitmapBits(HBITMAP, DWORD, PCVOID); - -BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); - -COLORREF SetBkColor(HDC, COLORREF); - -int SetBkMode(HDC, int); - -UINT SetBoundsRect(HDC, LPCRECT, UINT); - -BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); - -BOOL SetColorAdjustment(HDC, CPtr!(COLORADJUSTMENT)); - -BOOL SetColorSpace(HDC, HCOLORSPACE); - -BOOL SetDeviceGammaRamp(HDC, PVOID); - -UINT SetDIBColorTable(HDC, UINT, UINT, CPtr!(RGBQUAD)); - -int SetDIBits(HDC, HBITMAP, UINT, UINT, PCVOID, CPtr!(BITMAPINFO), UINT); - -int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, PCVOID, CPtr!(BITMAPINFO), UINT); - -HENHMETAFILE SetEnhMetaFileBits(UINT, CPtr!(BYTE)); - -int SetGraphicsMode(HDC, int); - -int SetICMMode(HDC, int); - -BOOL SetICMProfileA(HDC, LPSTR); - -BOOL SetICMProfileW(HDC, LPWSTR); - -int SetMapMode(HDC, int); - -static - -if (WINVER >= 0x0500) -{ - DWORD SetLayout(HDC hdc, DWORD l); - - DWORD GetLayout(HDC hdc); -} - -DWORD SetMapperFlags(HDC, DWORD); - -HMETAFILE SetMetaFileBitsEx(UINT, CPtr!(BYTE)); - -int SetMetaRgn(HDC); - -BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); - -UINT SetPaletteEntries(HPALETTE, UINT, UINT, CPtr!(PALETTEENTRY)); - -COLORREF SetPixel(HDC, int, int, COLORREF); - -BOOL SetPixelFormat(HDC, int, CPtr!(PIXELFORMATDESCRIPTOR)); - -BOOL SetPixelV(HDC, int, int, COLORREF); - -int SetPolyFillMode(HDC, int); - -BOOL SetRectRgn(HRGN, int, int, int, int); - -int SetROP2(HDC, int); - -int SetStretchBltMode(HDC, int); - -UINT SetSystemPaletteUse(HDC, UINT); - -UINT SetTextAlign(HDC, UINT); - -int SetTextCharacterExtra(HDC, int); - -COLORREF SetTextColor(HDC, COLORREF); - -BOOL SetTextJustification(HDC, int, int); - -BOOL SetViewportExtEx(HDC, int, int, LPSIZE); - -BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); - -BOOL SetWindowExtEx(HDC, int, int, LPSIZE); - -BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); - -HENHMETAFILE SetWinMetaFileBits(UINT, CPtr!(BYTE), HDC, CPtr!(METAFILEPICT)); - -BOOL SetWorldTransform(HDC, CPtr!(XFORM)); - -int StartDocA(HDC, CPtr!(DOCINFOA)); - -int StartDocW(HDC, CPtr!(DOCINFOW)); - -int StartPage(HDC); - -BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); - -int StretchDIBits(HDC, int, int, int, int, int, int, int, int, CPtr!(VOID), CPtr!(BITMAPINFO), UINT, DWORD); - -BOOL StrokeAndFillPath(HDC); - -BOOL StrokePath(HDC); - -BOOL SwapBuffers(HDC); - -BOOL TextOutA(HDC, int, int, LPCSTR, int); - -BOOL TextOutW(HDC, int, int, LPCWSTR, int); - -BOOL TranslateCharsetInfo(PDWORD, LPCHARSETINFO, DWORD); - -BOOL UnrealizeObject(HGDIOBJ); - -BOOL UpdateColors(HDC); - -BOOL UpdateICMRegKeyA(DWORD, DWORD, LPSTR, UINT); - -BOOL UpdateICMRegKeyW(DWORD, DWORD, LPWSTR, UINT); - -BOOL WidenPath(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*); - -PROC wglGetProcAddress(LPCSTR); - -BOOL wglMakeCurrent(HDC, HGLRC); - -BOOL wglRealizeLayerPalette(HDC, int, BOOL); - -int wglSetLayerPaletteEntries(HDC, int, int, int, CPtr!(COLORREF)); - -BOOL wglShareLists(HGLRC, HGLRC); - -BOOL wglSwapLayerBuffers(HDC, UINT); - -BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); - -BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); - -BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); - -BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); - -static - -if (WINVER >= 0x0500) -{ - alias WGLSWAP*PWGLSWAP; - struct WGLSWAP - { - HDC hdc; - UINT uiFlags; - } - const WGL_SWAPMULTIPLE_MAX = 16; - DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); -} - -static - -if (WINVER >= 0x0500) -{ - BOOL GdiAlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); - - BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); - - BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); -} - -static - -if (_WIN32_WINNT >= 0x0500) -{ - COLORREF SetDCBrushColor(HDC, COLORREF); - - COLORREF SetDCPenColor(HDC, COLORREF); - - HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD*); - - int AddFontResourceExA(LPCSTR, DWORD, PVOID); - - int AddFontResourceExW(LPCWSTR, DWORD, PVOID); - - BOOL RemoveFontMemResourceEx(HANDLE); - - BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); - - BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); - - DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); - - DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); - - DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); - - BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); - - BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); - - BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); - - BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); -} -} // extern (Windows) - -version (Unicode) -{ - alias WCHAR BCHAR; - alias DOCINFOW DOCINFO; - alias LOGFONTW LOGFONT; - - alias TEXTMETRICW TEXTMETRIC; - alias NPTEXTMETRICW NPTEXTMETRIC; - alias ICMENUMPROCW ICMENUMPROC; - alias FONTENUMPROCW FONTENUMPROC; - alias DEVMODEW DEVMODE; - - alias EXTLOGFONTW EXTLOGFONT; - alias GCP_RESULTSW GCP_RESULTS; - alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; - alias POLYTEXTW POLYTEXT; - alias LOGCOLORSPACEW LOGCOLORSPACE; - alias NEWTEXTMETRICW NEWTEXTMETRIC; - alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; - alias ENUMLOGFONTW ENUMLOGFONT; - alias ENUMLOGFONTEXW ENUMLOGFONTEX; - alias DISPLAY_DEVICEW DISPLAY_DEVICE; - alias AddFontResourceW AddFontResource; - - alias CopyEnhMetaFileW CopyEnhMetaFile; - alias CopyMetaFileW CopyMetaFile; - alias CreateColorSpaceW CreateColorSpace; - alias CreateDCW CreateDC; - alias CreateEnhMetaFileW CreateEnhMetaFile; - alias CreateFontW CreateFont; - alias CreateFontIndirectW CreateFontIndirect; - alias CreateICW CreateIC; - alias CreateMetaFileW CreateMetaFile; - alias CreateScalableFontResourceW CreateScalableFontResource; - alias DeviceCapabilitiesW DeviceCapabilities; - alias EnumFontFamiliesW EnumFontFamilies; - alias EnumFontFamiliesExW EnumFontFamiliesEx; - alias EnumFontsW EnumFonts; - alias EnumICMProfilesW EnumICMProfiles; - alias ExtTextOutW ExtTextOut; - alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; - alias GetCharABCWidthsW GetCharABCWidths; - alias GetCharacterPlacementW GetCharacterPlacement; - alias GetCharWidth32W GetCharWidth32; - alias GetCharWidthFloatW GetCharWidthFloat; - alias GetCharWidthW GetCharWidth; - alias GetEnhMetaFileW GetEnhMetaFile; - alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; - alias GetGlyphOutlineW GetGlyphOutline; - alias GetICMProfileW GetICMProfile; - alias GetKerningPairsW GetKerningPairs; - alias GetLogColorSpaceW GetLogColorSpace; - alias GetMetaFileW GetMetaFile; - alias GetObjectW GetObject; - alias GetOutlineTextMetricsW GetOutlineTextMetrics; - alias GetTextExtentPointW GetTextExtentPoint; - alias GetTextExtentExPointW GetTextExtentExPoint; - alias GetTextExtentPoint32W GetTextExtentPoint32; - alias GetTextFaceW GetTextFace; - alias GetTextMetricsW GetTextMetrics; - alias PolyTextOutW PolyTextOut; - alias RemoveFontResourceW RemoveFontResource; - - alias ResetDCW ResetDC; - alias SetICMProfileW SetICMProfile; - alias StartDocW StartDoc; - alias TextOutW TextOut; - alias UpdateICMRegKeyW UpdateICMRegKey; - alias wglUseFontBitmapsW wglUseFontBitmaps; - alias wglUseFontOutlinesW wglUseFontOutlines; - static - - if (_WIN32_WINNT >= 0x0500) - { - alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; - alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; - alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; - alias AddFontResourceExW AddFontResourceEx; - alias RemoveFontResourceExW RemoveFontResourceEx; - alias GetGlyphIndicesW GetGlyphIndices; - } -} -else /* non-unicode build */ -{ - alias BYTE BCHAR; - alias DOCINFOA DOCINFO; - alias LOGFONTA LOGFONT; - alias TEXTMETRICA TEXTMETRIC; - alias NPTEXTMETRICA NPTEXTMETRIC; - alias ICMENUMPROCA ICMENUMPROC; - alias FONTENUMPROCA FONTENUMPROC; - alias DEVMODEA DEVMODE; - alias EXTLOGFONTA EXTLOGFONT; - alias GCP_RESULTSA GCP_RESULTS; - alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; - alias POLYTEXTA POLYTEXT; - alias LOGCOLORSPACEA LOGCOLORSPACE; - alias NEWTEXTMETRICA NEWTEXTMETRIC; - alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; - alias ENUMLOGFONTA ENUMLOGFONT; - alias ENUMLOGFONTEXA ENUMLOGFONTEX; - alias DISPLAY_DEVICEA DISPLAY_DEVICE; - - alias AddFontResourceA AddFontResource; - alias CopyEnhMetaFileA CopyEnhMetaFile; - alias CopyMetaFileA CopyMetaFile; - alias CreateColorSpaceA CreateColorSpace; - alias CreateDCA CreateDC; - alias CreateEnhMetaFileA CreateEnhMetaFile; - alias CreateFontA CreateFont; - alias CreateFontIndirectA CreateFontIndirect; - alias CreateICA CreateIC; - alias CreateMetaFileA CreateMetaFile; - alias CreateScalableFontResourceA CreateScalableFontResource; - alias DeviceCapabilitiesA DeviceCapabilities; - alias EnumFontFamiliesA EnumFontFamilies; - alias EnumFontFamiliesExA EnumFontFamiliesEx; - alias EnumFontsA EnumFonts; - alias EnumICMProfilesA EnumICMProfiles; - alias ExtTextOutA ExtTextOut; - alias GetCharWidthFloatA GetCharWidthFloat; - alias GetCharWidthA GetCharWidth; - alias GetCharacterPlacementA GetCharacterPlacement; - alias GetCharABCWidthsA GetCharABCWidths; - alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; - alias GetCharWidth32A GetCharWidth32; - alias GetEnhMetaFileA GetEnhMetaFile; - alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; - alias GetGlyphOutlineA GetGlyphOutline; - alias GetICMProfileA GetICMProfile; - alias GetKerningPairsA GetKerningPairs; - alias GetLogColorSpaceA GetLogColorSpace; - alias GetMetaFileA GetMetaFile; - alias GetObjectA GetObject; - alias GetOutlineTextMetricsA GetOutlineTextMetrics; - alias GetTextExtentPointA GetTextExtentPoint; - alias GetTextExtentExPointA GetTextExtentExPoint; - alias GetTextExtentPoint32A GetTextExtentPoint32; - alias GetTextFaceA GetTextFace; - alias GetTextMetricsA GetTextMetrics; - alias PolyTextOutA PolyTextOut; - alias RemoveFontResourceA RemoveFontResource; - alias ResetDCA ResetDC; - alias SetICMProfileA SetICMProfile; - alias StartDocA StartDoc; - alias TextOutA TextOut; - alias UpdateICMRegKeyA UpdateICMRegKey; - alias wglUseFontBitmapsA wglUseFontBitmaps; - alias wglUseFontOutlinesA wglUseFontOutlines; - static - - if (_WIN32_WINNT >= 0x0500) - { - alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; - alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; - alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; - alias AddFontResourceExA AddFontResourceEx; - alias RemoveFontResourceExA RemoveFontResourceEx; - alias GetGlyphIndicesA GetGlyphIndices; - } -} - -// Common to both ASCII & UNICODE -alias DOCINFO*LPDOCINFO; -alias LOGFONT*PLOGFONT, NPLOGFONT, LPLOGFONT; -alias TEXTMETRIC*PTEXTMETRIC, LPTEXTMETRIC; -alias DEVMODE*PDEVMODE, NPDEVMODE, LPDEVMODE; -alias EXTLOGFONT *PEXTLOGFONT, NPEXTLOGFONT, LPEXTLOGFONT; -alias GCP_RESULTS*LPGCP_RESULTS; -alias OUTLINETEXTMETRIC*POUTLINETEXTMETRIC, NPOUTLINETEXTMETRIC, LPOUTLINETEXTMETRIC; -alias POLYTEXT*PPOLYTEXT, NPPOLYTEXT, LPPOLYTEXT; -alias LOGCOLORSPACE*LPLOGCOLORSPACE; -alias NEWTEXTMETRIC*PNEWTEXTMETRIC, NPNEWTEXTMETRIC, LPNEWTEXTMETRIC; -alias ENUMLOGFONT*LPENUMLOGFONT; -alias ENUMLOGFONTEX *LPENUMLOGFONTEX; -alias DISPLAY_DEVICE*PDISPLAY_DEVICE, LPDISPLAY_DEVICE; +/***********************************************************************\ +* wingdi.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wingdi; +pragma(lib, "gdi32"); + +// FIXME: clean up Windows version support + +private import win32.w32api, win32.windef, win32.winver; + +// BITMAPINFOHEADER.biCompression +enum : DWORD { + BI_RGB = 0, + BI_RLE8, + BI_RLE4, + BI_BITFIELDS, + BI_JPEG, + BI_PNG +} + +// --- +// COLORADJUSTMENT -- only for NT 3.1+, Win2000+ +const WORD + CA_NEGATIVE = 1, + CA_LOG_FILTER = 2; + +// COLORADJUSTMENT +enum : WORD { + ILLUMINANT_DEVICE_DEFAULT = 0, + ILLUMINANT_A, + ILLUMINANT_B, + ILLUMINANT_C, + ILLUMINANT_D50, + ILLUMINANT_D55, + ILLUMINANT_D65, + ILLUMINANT_D75, + ILLUMINANT_F2, + ILLUMINANT_MAX_INDEX = ILLUMINANT_F2, + ILLUMINANT_TUNGSTEN = ILLUMINANT_A, + ILLUMINANT_DAYLIGHT = ILLUMINANT_C, + ILLUMINANT_FLUORESCENT = ILLUMINANT_F2, + ILLUMINANT_NTSC = ILLUMINANT_C +} + +enum { + RGB_GAMMA_MIN = 2500, + RGB_GAMMA_MAX = 65000, + REFERENCE_WHITE_MIN = 6000, + REFERENCE_WHITE_MAX = 10000, + REFERENCE_BLACK_MIN = 0, + REFERENCE_BLACK_MAX = 4000, + COLOR_ADJ_MIN = -100, + COLOR_ADJ_MAX = 100, +} +//--- + +/* FIXME: move to win32.winuser ? */ +// DrawIconEx() +enum : UINT { + DI_MASK = 1, + DI_IMAGE = 2, + DI_NORMAL = 3, + DI_COMPAT = 4, + DI_DEFAULTSIZE = 8 +} + +// DOCINFO +enum : DWORD { + DI_APPBANDING = 1, + DI_ROPS_READ_DESTINATION = 2, +} + +// ENHMETAHEADER +enum : DWORD { + EMR_HEADER = 1, + EMR_POLYBEZIER, + EMR_POLYGON, + EMR_POLYLINE, + EMR_POLYBEZIERTO, + EMR_POLYLINETO, + EMR_POLYPOLYLINE, + EMR_POLYPOLYGON, + EMR_SETWINDOWEXTEX, + EMR_SETWINDOWORGEX, + EMR_SETVIEWPORTEXTEX, + EMR_SETVIEWPORTORGEX, + EMR_SETBRUSHORGEX, + EMR_EOF, + EMR_SETPIXELV, + EMR_SETMAPPERFLAGS, + EMR_SETMAPMODE, + EMR_SETBKMODE, + EMR_SETPOLYFILLMODE, + EMR_SETROP2, + EMR_SETSTRETCHBLTMODE, + EMR_SETTEXTALIGN, + EMR_SETCOLORADJUSTMENT, + EMR_SETTEXTCOLOR, + EMR_SETBKCOLOR, + EMR_OFFSETCLIPRGN, + EMR_MOVETOEX, + EMR_SETMETARGN, + EMR_EXCLUDECLIPRECT, + EMR_INTERSECTCLIPRECT, + EMR_SCALEVIEWPORTEXTEX, + EMR_SCALEWINDOWEXTEX, + EMR_SAVEDC, + EMR_RESTOREDC, + EMR_SETWORLDTRANSFORM, + EMR_MODIFYWORLDTRANSFORM, + EMR_SELECTOBJECT, + EMR_CREATEPEN, + EMR_CREATEBRUSHINDIRECT, + EMR_DELETEOBJECT, + EMR_ANGLEARC, + EMR_ELLIPSE, + EMR_RECTANGLE, + EMR_ROUNDRECT, + EMR_ARC, + EMR_CHORD, + EMR_PIE, + EMR_SELECTPALETTE, + EMR_CREATEPALETTE, + EMR_SETPALETTEENTRIES, + EMR_RESIZEPALETTE, + EMR_REALIZEPALETTE, + EMR_EXTFLOODFILL, + EMR_LINETO, + EMR_ARCTO, + EMR_POLYDRAW, + EMR_SETARCDIRECTION, + EMR_SETMITERLIMIT, + EMR_BEGINPATH, + EMR_ENDPATH, + EMR_CLOSEFIGURE, + EMR_FILLPATH, + EMR_STROKEANDFILLPATH, + EMR_STROKEPATH, + EMR_FLATTENPATH, + EMR_WIDENPATH, + EMR_SELECTCLIPPATH, + EMR_ABORTPATH, // 68 + // reserved 69 + EMR_GDICOMMENT = 70, + EMR_FILLRGN, + EMR_FRAMERGN, + EMR_INVERTRGN, + EMR_PAINTRGN, + EMR_EXTSELECTCLIPRGN, + EMR_BITBLT, + EMR_STRETCHBLT, + EMR_MASKBLT, + EMR_PLGBLT, + EMR_SETDIBITSTODEVICE, + EMR_STRETCHDIBITS, + EMR_EXTCREATEFONTINDIRECTW, + EMR_EXTTEXTOUTA, + EMR_EXTTEXTOUTW, + EMR_POLYBEZIER16, + EMR_POLYGON16, + EMR_POLYLINE16, + EMR_POLYBEZIERTO16, + EMR_POLYLINETO16, + EMR_POLYPOLYLINE16, + EMR_POLYPOLYGON16, + EMR_POLYDRAW16, + EMR_CREATEMONOBRUSH, + EMR_CREATEDIBPATTERNBRUSHPT, + EMR_EXTCREATEPEN, + EMR_POLYTEXTOUTA, + EMR_POLYTEXTOUTW, // 97 + EMR_SETICMMODE, + EMR_CREATECOLORSPACE, + EMR_SETCOLORSPACE, + EMR_DELETECOLORSPACE, + EMR_GLSRECORD, + EMR_GLSBOUNDEDRECORD, + EMR_PIXELFORMAT, // = 104 + // reserved 105 - 110 + EMR_COLORCORRECTPALETTE = 111, + EMR_SETICMPROFILEA, + EMR_SETICMPROFILEW, + EMR_ALPHABLEND, + EMR_SETLAYOUT, + EMR_TRANSPARENTBLT, // 116 + // reserved 117 + EMR_GRADIENTFILL = 118, + // reserved 119, 120 + EMR_COLORMATCHTOTARGETW = 121, + EMR_CREATECOLORSPACEW // 122 +} + +const EMR_MIN = EMR_HEADER; + +static if (_WIN32_WINNT >= 0x500) { + const EMR_MAX = EMR_CREATECOLORSPACEW; +} else { + const EMR_MAX = EMR_PIXELFORMAT; +} + +// ENHMETAHEADER.dSignature, ENHMETAHEADER3.dSignature, +// EMRFORMAT.dSignature +enum : DWORD { + ENHMETA_SIGNATURE = 1179469088, + EPS_SIGNATURE = 0x46535045 +} + +static if (_WIN32_WINNT >= 0x500) { + // AddFontResourceEx() + enum : DWORD { + FR_PRIVATE = 0x10, + FR_NOT_ENUM = 0x20 + } +} + +enum { + META_SAVEDC = 0x1E, + META_REALIZEPALETTE = 0x35, + META_SETPALENTRIES = 0x37, + META_CREATEPALETTE = 0xf7, + META_SETBKMODE = 0x102, + META_SETMAPMODE = 0x103, + META_SETROP2 = 0x104, + META_SETRELABS = 0x105, + META_SETPOLYFILLMODE = 0x106, + META_SETSTRETCHBLTMODE = 0x107, + META_SETTEXTCHAREXTRA = 0x108, + META_RESTOREDC = 0x127, + META_INVERTREGION = 0x12A, + META_PAINTREGION = 0x12B, + META_SELECTCLIPREGION = 0x12C, + META_SELECTOBJECT = 0x12D, + META_SETTEXTALIGN = 0x12E, + META_RESIZEPALETTE = 0x139, + META_DIBCREATEPATTERNBRUSH = 0x142, + META_SETLAYOUT = 0x149, + META_DELETEOBJECT = 0x1F0, + META_CREATEPATTERNBRUSH = 0x1F9, + META_SETBKCOLOR = 0x201, + META_SETTEXTCOLOR = 0x209, + META_SETTEXTJUSTIFICATION = 0x20A, + META_SETWINDOWORG = 0x20B, + META_SETWINDOWEXT = 0x20C, + META_SETVIEWPORTORG = 0x20D, + META_SETVIEWPORTEXT = 0x20E, + META_OFFSETWINDOWORG = 0x20F, + META_OFFSETVIEWPORTORG = 0x211, + META_LINETO = 0x213, + META_MOVETO = 0x214, + META_OFFSETCLIPRGN = 0x220, + META_FILLREGION = 0x228, + META_SETMAPPERFLAGS = 0x231, + META_SELECTPALETTE = 0x234, + META_CREATEPENINDIRECT = 0x2FA, + META_CREATEFONTINDIRECT = 0x2FB, + META_CREATEBRUSHINDIRECT = 0x2FC, + META_POLYGON = 0x324, + META_POLYLINE = 0x325, + META_SCALEWINDOWEXT = 0x410, + META_SCALEVIEWPORTEXT = 0x412, + META_EXCLUDECLIPRECT = 0x415, + META_INTERSECTCLIPRECT = 0x416, + META_ELLIPSE = 0x418, + META_FLOODFILL = 0x419, + META_RECTANGLE = 0x41B, + META_SETPIXEL = 0x41F, + META_FRAMEREGION = 0x429, + META_ANIMATEPALETTE = 0x436, + META_TEXTOUT = 0x521, + META_POLYPOLYGON = 0x538, + META_EXTFLOODFILL = 0x548, + META_ROUNDRECT = 0x61C, + META_PATBLT = 0x61D, + META_ESCAPE = 0x626, + META_CREATEREGION = 0x6FF, + META_ARC = 0x817, + META_PIE = 0x81A, + META_CHORD = 0x830, + META_BITBLT = 0x922, + META_DIBBITBLT = 0x940, + META_EXTTEXTOUT = 0xA32, + META_STRETCHBLT = 0xB23, + META_DIBSTRETCHBLT = 0xB41, + META_SETDIBTODEV = 0xD33, + META_STRETCHDIB = 0xF43 +} + +// EMRPOLYDRAW +enum : BYTE { + PT_CLOSEFIGURE = 1, + PT_LINETO = 2, + PT_BEZIERTO = 4, + PT_MOVETO = 6 +} + +// ---- +// PIXELFORMATDESCRIPTOR.iPixelType +enum : BYTE { + PFD_TYPE_RGBA = 0, + PFD_TYPE_COLORINDEX = 1 +} + +deprecated { +// PIXELFORMATDESCRIPTOR. +const byte + PFD_MAIN_PLANE = 0, + PFD_OVERLAY_PLANE = 1, + PFD_UNDERLAY_PLANE = -1; +} +// PIXELFORMATDESCRIPTOR.dwFlags +const DWORD + PFD_DOUBLEBUFFER = 0x00000001, + PFD_STEREO = 0x00000002, + PFD_DRAW_TO_WINDOW = 0x00000004, + PFD_DRAW_TO_BITMAP = 0x00000008, + PFD_SUPPORT_GDI = 0x00000010, + PFD_SUPPORT_OPENGL = 0x00000020, + PFD_GENERIC_FORMAT = 0x00000040, + PFD_NEED_PALETTE = 0x00000080, + PFD_NEED_SYSTEM_PALETTE = 0x00000100, + PFD_SWAP_EXCHANGE = 0x00000200, + PFD_SWAP_COPY = 0x00000400, + PFD_SWAP_LAYER_BUFFERS = 0x00000800, + PFD_GENERIC_ACCELERATED = 0x00001000, + PFD_SUPPORT_DIRECTDRAW = 0x00002000, + /* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */ + PFD_DEPTH_DONTCARE = 0x20000000, + PFD_DOUBLEBUFFER_DONTCARE = 0x40000000, + PFD_STEREO_DONTCARE = 0x80000000; + +// ---- + +const DWORD + BLACKNESS = 0x000042, + NOTSRCERASE = 0x1100A6, + NOTSRCCOPY = 0x330008, + SRCERASE = 0x440328, + DSTINVERT = 0x550009, + PATINVERT = 0x5A0049, + SRCINVERT = 0x660046, + SRCAND = 0x8800C6, + MERGEPAINT = 0xBB0226, + MERGECOPY = 0xC000CA, + SRCCOPY = 0xCC0020, + SRCPAINT = 0xEE0086, + PATCOPY = 0xF00021, + PATPAINT = 0xFB0A09, + WHITENESS = 0xFF0062; +static if (_WIN32_WINNT >= 0x500) { + const DWORD + NOMIRRORBITMAP = 0x80000000, + CAPTUREBLT = 0x40000000; +} + +// GetROP2(), SetROP2() +enum : int { + R2_BLACK = 1, + R2_NOTMERGEPEN = 2, + R2_MASKNOTPEN = 3, + R2_NOTCOPYPEN = 4, + R2_MASKPENNOT = 5, + R2_NOT = 6, + R2_XORPEN = 7, + R2_NOTMASKPEN = 8, + R2_MASKPEN = 9, + R2_NOTXORPEN = 10, + R2_NOP = 11, + R2_MERGENOTPEN = 12, + R2_COPYPEN = 13, + R2_MERGEPENNOT = 14, + R2_MERGEPEN = 15, + R2_WHITE = 16 +} + +const R2_LAST = R2_WHITE; + +// CheckColorsInGamut() +const ubyte + CM_IN_GAMUT = 0, + CM_OUT_OF_GAMUT = 255; + +/* UpdateICMRegKey Constants */ +const int + ICM_ADDPROFILE = 1, + ICM_DELETEPROFILE = 2, + ICM_QUERYPROFILE = 3, + ICM_SETDEFAULTPROFILE = 4, + ICM_REGISTERICMATCHER = 5, + ICM_UNREGISTERICMATCHER = 6, + ICM_QUERYMATCH = 7; + +enum : int { + RGN_AND = 1, + RGN_OR = 2, + RGN_XOR = 3, + RGN_DIFF = 4, + RGN_COPY = 5 +} + +const RGN_MIN = RGN_AND; +const RGN_MAX = RGN_COPY; + +// Return values for CombineRgn() +enum { + NULLREGION = 1, + SIMPLEREGION = 2, + COMPLEXREGION = 3 +} + +const ERROR = 0; +alias ERROR RGN_ERROR; + +// CreateDIBitmap() +const DWORD CBM_INIT = 4; + +// CreateDIBitmap() +enum : UINT { + DIB_RGB_COLORS = 0, + DIB_PAL_COLORS = 1 +} + +// --- +// Values for LOGFONT and CreateFont() + +// FIXME: For D, replace with lfFaceName.length() +const LF_FACESIZE = 32; +const LF_FULLFACESIZE = 64; + +// FIXME: Not needed for D, only EXTLOGFONT +const ELF_VENDOR_SIZE = 4; + +// ??? +const ELF_VERSION = 0; +const ELF_CULTURE_LATIN = 0; + +// LOGFONT.lfWeight +const LONG + FW_DONTCARE = 0, + FW_THIN = 100, + FW_EXTRALIGHT = 200, + FW_ULTRALIGHT = FW_EXTRALIGHT, + FW_LIGHT = 300, + FW_NORMAL = 400, + FW_REGULAR = FW_NORMAL, + FW_MEDIUM = 500, + FW_SEMIBOLD = 600, + FW_DEMIBOLD = FW_SEMIBOLD, + FW_BOLD = 700, + FW_EXTRABOLD = 800, + FW_ULTRABOLD = FW_EXTRABOLD, + FW_HEAVY = 900, + FW_BLACK = FW_HEAVY; + +// LOGFONT.lfCharSet +enum : DWORD { + ANSI_CHARSET = 0, + DEFAULT_CHARSET = 1, + SYMBOL_CHARSET = 2, + MAC_CHARSET = 77, + SHIFTJIS_CHARSET = 128, + HANGEUL_CHARSET = 129, + HANGUL_CHARSET = 129, + JOHAB_CHARSET = 130, + GB2312_CHARSET = 134, + CHINESEBIG5_CHARSET = 136, + GREEK_CHARSET = 161, + TURKISH_CHARSET = 162, + VIETNAMESE_CHARSET = 163, + HEBREW_CHARSET = 177, + ARABIC_CHARSET = 178, + BALTIC_CHARSET = 186, + RUSSIAN_CHARSET = 204, + THAI_CHARSET = 222, + EASTEUROPE_CHARSET = 238, + OEM_CHARSET = 255 +} + +// LOGFONT.lfOutPrecision +enum : BYTE { + OUT_DEFAULT_PRECIS = 0, + OUT_STRING_PRECIS, + OUT_CHARACTER_PRECIS, + OUT_STROKE_PRECIS, + OUT_TT_PRECIS, + OUT_DEVICE_PRECIS, + OUT_RASTER_PRECIS, + OUT_TT_ONLY_PRECIS, + OUT_OUTLINE_PRECIS, + OUT_SCREEN_OUTLINE_PRECIS, + OUT_PS_ONLY_PRECIS, // 10 +} + +// LOGFONT.lfClipPrecision +enum : BYTE { + CLIP_DEFAULT_PRECIS = 0, + CLIP_CHARACTER_PRECIS = 1, + CLIP_STROKE_PRECIS = 2, + CLIP_MASK = 15, + CLIP_LH_ANGLES = 16, + CLIP_TT_ALWAYS = 32, + CLIP_DFA_DISABLE = 64, + CLIP_EMBEDDED = 128 +} + +// LOGFONT.lfQuality +enum : BYTE { + DEFAULT_QUALITY = 0, + DRAFT_QUALITY, + PROOF_QUALITY, + NONANTIALIASED_QUALITY, + ANTIALIASED_QUALITY +} + +// LOGFONT.lfPitchAndFamily + +const BYTE + DEFAULT_PITCH = 0, + FIXED_PITCH = 1, + VARIABLE_PITCH = 2, + MONO_FONT = 8, + FF_DONTCARE = 0, + FF_ROMAN = 16, + FF_SWISS = 32, + FF_SCRIPT = 64, + FF_MODERN = 48, + FF_DECORATIVE = 80; + +// ---- +// Enums for the PANOSE struct + +const PANOSE_COUNT=10; + +enum { + PAN_FAMILYTYPE_INDEX = 0, + PAN_SERIFSTYLE_INDEX, + PAN_WEIGHT_INDEX, + PAN_PROPORTION_INDEX, + PAN_CONTRAST_INDEX, + PAN_STROKEVARIATION_INDEX, + PAN_ARMSTYLE_INDEX, + PAN_LETTERFORM_INDEX, + PAN_MIDLINE_INDEX, + PAN_XHEIGHT_INDEX +} + +const PAN_CULTURE_LATIN=0; + +// NOTE: the first two values (PAN_ANY and PAN_NO_FIT) apply to all these enums! +enum : BYTE { + PAN_ANY = 0, + PAN_NO_FIT = 1, +} + +enum : BYTE { + PAN_FAMILY_TEXT_DISPLAY = 2, + PAN_FAMILY_SCRIPT, + PAN_FAMILY_DECORATIVE, + PAN_FAMILY_PICTORIAL +} +enum : BYTE { + PAN_SERIF_COVE = 2, + PAN_SERIF_OBTUSE_COVE, + PAN_SERIF_SQUARE_COVE, + PAN_SERIF_OBTUSE_SQUARE_COVE, + PAN_SERIF_SQUARE, + PAN_SERIF_THIN, + PAN_SERIF_BONE, + PAN_SERIF_EXAGGERATED, + PAN_SERIF_TRIANGLE, + PAN_SERIF_NORMAL_SANS, + PAN_SERIF_OBTUSE_SANS, + PAN_SERIF_PERP_SANS, + PAN_SERIF_FLARED, + PAN_SERIF_ROUNDED +} + +enum : BYTE { + PAN_WEIGHT_VERY_LIGHT = 2, + PAN_WEIGHT_LIGHT, + PAN_WEIGHT_THIN, + PAN_WEIGHT_BOOK, + PAN_WEIGHT_MEDIUM, + PAN_WEIGHT_DEMI, + PAN_WEIGHT_BOLD, + PAN_WEIGHT_HEAVY, + PAN_WEIGHT_BLACK, + PAN_WEIGHT_NORD +} + +enum : BYTE { + PAN_PROP_OLD_STYLE = 2, + PAN_PROP_MODERN, + PAN_PROP_EVEN_WIDTH, + PAN_PROP_EXPANDED, + PAN_PROP_CONDENSED, + PAN_PROP_VERY_EXPANDED, + PAN_PROP_VERY_CONDENSED, + PAN_PROP_MONOSPACED +} + +enum : BYTE { + PAN_CONTRAST_NONE = 2, + PAN_CONTRAST_VERY_LOW, + PAN_CONTRAST_LOW, + PAN_CONTRAST_MEDIUM_LOW, + PAN_CONTRAST_MEDIUM, + PAN_CONTRAST_MEDIUM_HIGH, + PAN_CONTRAST_HIGH, + PAN_CONTRAST_VERY_HIGH +} + +// PANOSE.bStrokeVariation +enum : BYTE { + PAN_STROKE_GRADUAL_DIAG = 2, + PAN_STROKE_GRADUAL_TRAN, + PAN_STROKE_GRADUAL_VERT, + PAN_STROKE_GRADUAL_HORZ, + PAN_STROKE_RAPID_VERT, + PAN_STROKE_RAPID_HORZ, + PAN_STROKE_INSTANT_VERT +} + +// PANOSE.bArmStyle +enum : BYTE { + PAN_STRAIGHT_ARMS_HORZ = 2, + PAN_STRAIGHT_ARMS_WEDGE, + PAN_STRAIGHT_ARMS_VERT, + PAN_STRAIGHT_ARMS_SINGLE_SERIF, + PAN_STRAIGHT_ARMS_DOUBLE_SERIF, + PAN_BENT_ARMS_HORZ, + PAN_BENT_ARMS_WEDGE, + PAN_BENT_ARMS_VERT, + PAN_BENT_ARMS_SINGLE_SERIF, + PAN_BENT_ARMS_DOUBLE_SERIF +} + +// PANOSE.bLetterForm +enum : BYTE { + PAN_LETT_NORMAL_CONTACT = 2, + PAN_LETT_NORMAL_WEIGHTED, + PAN_LETT_NORMAL_BOXED, + PAN_LETT_NORMAL_FLATTENED, + PAN_LETT_NORMAL_ROUNDED, + PAN_LETT_NORMAL_OFF_CENTER, + PAN_LETT_NORMAL_SQUARE, + PAN_LETT_OBLIQUE_CONTACT, + PAN_LETT_OBLIQUE_WEIGHTED, + PAN_LETT_OBLIQUE_BOXED, + PAN_LETT_OBLIQUE_FLATTENED, + PAN_LETT_OBLIQUE_ROUNDED, + PAN_LETT_OBLIQUE_OFF_CENTER, + PAN_LETT_OBLIQUE_SQUARE +} + +// PANOSE.bMidLine +enum : BYTE { + PAN_MIDLINE_STANDARD_TRIMMED = 2, + PAN_MIDLINE_STANDARD_POINTED, + PAN_MIDLINE_STANDARD_SERIFED, + PAN_MIDLINE_HIGH_TRIMMED, + PAN_MIDLINE_HIGH_POINTED, + PAN_MIDLINE_HIGH_SERIFED, + PAN_MIDLINE_CONSTANT_TRIMMED, + PAN_MIDLINE_CONSTANT_POINTED, + PAN_MIDLINE_CONSTANT_SERIFED, + PAN_MIDLINE_LOW_TRIMMED, + PAN_MIDLINE_LOW_POINTED, + PAN_MIDLINE_LOW_SERIFED +} + +// PANOSE.bXHeight +enum : BYTE { + PAN_XHEIGHT_CONSTANT_SMALL = 2, + PAN_XHEIGHT_CONSTANT_STD, + PAN_XHEIGHT_CONSTANT_LARGE, + PAN_XHEIGHT_DUCKING_SMALL, + PAN_XHEIGHT_DUCKING_STD, + PAN_XHEIGHT_DUCKING_LARGE +} + +// ---- +// ??? +const FS_LATIN1 = 0x00000001; +const FS_LATIN2 = 0x00000002; +const FS_CYRILLIC = 0x00000004; +const FS_GREEK = 0x00000008; +const FS_TURKISH = 0x00000010; +const FS_HEBREW = 0x00000020; +const FS_ARABIC = 0x00000040; +const FS_BALTIC = 0x00000080; +const FS_VIETNAMESE = 0x00000100; +const FS_THAI = 0x00010000; +const FS_JISJAPAN = 0x00020000; +const FS_CHINESESIMP = 0x00040000; +const FS_WANSUNG = 0x00080000; +const FS_CHINESETRAD = 0x00100000; +const FS_JOHAB = 0x00200000; +const FS_SYMBOL = 0x80000000; + +// ---- +// Poly Fill Mode +enum : int { + ALTERNATE = 1, + WINDING = 2 +} +const int POLYFILL_LAST = WINDING; + +//--- +// LOGBRUSH +enum : LONG { + HS_HORIZONTAL = 0, + HS_VERTICAL, + HS_FDIAGONAL, + HS_BDIAGONAL, + HS_CROSS, + HS_DIAGCROSS +} + +//LOGBRUSH.lbStyle +enum : UINT { + BS_SOLID = 0, + BS_NULL = 1, + BS_HOLLOW = BS_NULL, + BS_HATCHED, + BS_PATTERN, + BS_INDEXED, + BS_DIBPATTERN, + BS_DIBPATTERNPT, + BS_PATTERN8X8, + BS_DIBPATTERN8X8, + BS_MONOPATTERN, +} +//----- +// EXTLOGPEN, ExtCreatePen() + +// EXTLOGPEN.elpPenStyle +enum : DWORD { + PS_SOLID = 0, + PS_DASH = 1, + PS_DOT = 2, + PS_DASHDOT = 3, + PS_DASHDOTDOT = 4, + PS_NULL = 5, + PS_INSIDEFRAME = 6, + PS_USERSTYLE = 7, + PS_ALTERNATE = 8, + PS_STYLE_MASK = 15, +} + +enum : DWORD { + PS_COSMETIC = 0x00000000, + PS_GEOMETRIC = 0x00010000, + PS_TYPE_MASK = 0x000F0000, +} +enum : DWORD { + PS_ENDCAP_ROUND = 0x00000000, + PS_ENDCAP_SQUARE = 0x00000100, + PS_ENDCAP_FLAT = 0x00000200, + PS_ENDCAP_MASK = 0x00000F00, +} +enum : DWORD { + PS_JOIN_ROUND = 0x00000000, + PS_JOIN_BEVEL = 0x00001000, + PS_JOIN_MITER = 0x00002000, + PS_JOIN_MASK = 0x0000F000, +} + +// --- +// DeviceCapabilities() + +enum : WORD { + DC_FIELDS = 1, + DC_PAPERS, + DC_PAPERSIZE, + DC_MINEXTENT, + DC_MAXEXTENT, + DC_BINS, + DC_DUPLEX, + DC_SIZE, + DC_EXTRA, + DC_VERSION, + DC_DRIVER, + DC_BINNAMES, + DC_ENUMRESOLUTIONS, + DC_FILEDEPENDENCIES, + DC_TRUETYPE, + DC_PAPERNAMES, + DC_ORIENTATION, + DC_COPIES, + DC_BINADJUST, + DC_EMF_COMPLIANT, + DC_DATATYPE_PRODUCED, + DC_COLLATE, + DC_MANUFACTURER, + DC_MODEL, +} + +static if (_WIN32_WINNT >= 0x500) { + enum { + DC_PERSONALITY = 25, + DC_PRINTRATE = 26, + DC_PRINTRATEUNIT = 27, + DC_PRINTERMEM = 28, + DC_MEDIAREADY = 29, + DC_STAPLE = 30, + DC_PRINTRATEPPM = 31, + DC_COLORDEVICE = 32, + DC_NUP = 33, + DC_MEDIATYPENAMES = 34, + DC_MEDIATYPES = 35, + } + enum { + PRINTRATEUNIT_PPM = 1, + PRINTRATEUNIT_CPS = 2, + PRINTRATEUNIT_LPM = 3, + PRINTRATEUNIT_IPM = 4, + } +} + + +// return from DC_TRUETYPE +const DWORD + DCTT_BITMAP = 1, + DCTT_DOWNLOAD = 2, + DCTT_SUBDEV = 4, + DCTT_DOWNLOAD_OUTLINE = 8; + +// return from DC_BINADJUST +enum : DWORD { + DCBA_FACEUPNONE = 0x0000, + DCBA_FACEUPCENTER = 0x0001, + DCBA_FACEUPLEFT = 0x0002, + DCBA_FACEUPRIGHT = 0x0003, + DCBA_FACEDOWNNONE = 0x0100, + DCBA_FACEDOWNCENTER = 0x0101, + DCBA_FACEDOWNLEFT = 0x0102, + DCBA_FACEDOWNRIGHT = 0x0103, +} +//--- + +const FLOODFILLBORDER = 0; +const FLOODFILLSURFACE = 1; + +// ExtTextOut() +const UINT + ETO_OPAQUE = 0x0002, + ETO_CLIPPED = 0x0004, + ETO_GLYPH_INDEX = 0x0010, + ETO_RTLREADING = 0x0080, + ETO_NUMERICSLOCAL = 0x0400, + ETO_NUMERICSLATIN = 0x0800, + ETO_IGNORELANGUAGE = 0x1000; +static if (_WIN32_WINNT >= 0x500) { + const UINT + ETO_PDY = 0x2000; +} + +// GdiComment() +enum { + GDICOMMENT_BEGINGROUP = 0x00000002, + GDICOMMENT_ENDGROUP = 0x00000003, + GDICOMMENT_UNICODE_STRING = 0x00000040, + GDICOMMENT_UNICODE_END = 0x00000080, + GDICOMMENT_MULTIFORMATS = 0x40000004, + GDICOMMENT_IDENTIFIER = 0x43494447, + GDICOMMENT_WINDOWS_METAFILE = 0x80000001, +} + +// Get/SetArcDirection() +enum : int { + AD_COUNTERCLOCKWISE = 1, + AD_CLOCKWISE = 2 +} + +const RDH_RECTANGLES = 1; + +// GCPRESULTS.lpClass +enum { + GCPCLASS_LATIN = 1, + GCPCLASS_HEBREW = 2, + GCPCLASS_ARABIC = 2, + GCPCLASS_NEUTRAL, + GCPCLASS_LOCALNUMBER, + GCPCLASS_LATINNUMBER, + GCPCLASS_LATINNUMERICTERMINATOR, + GCPCLASS_LATINNUMERICSEPARATOR, + GCPCLASS_NUMERICSEPARATOR, // = 8, + GCPCLASS_POSTBOUNDRTL = 16, + GCPCLASS_POSTBOUNDLTR = 32, + GCPCLASS_PREBOUNDRTL = 64, + GCPCLASS_PREBOUNDLTR = 128, + GCPGLYPH_LINKAFTER = 0x4000, + GCPGLYPH_LINKBEFORE = 0x8000 +} + +// GetBoundsRect(), SetBoundsRect() +const UINT + DCB_RESET = 1, + DCB_ACCUMULATE = 2, + DCB_SET = DCB_RESET | DCB_ACCUMULATE, + DCB_ENABLE = 4, + DCB_DISABLE = 8, + DCB_DIRTY = DCB_ACCUMULATE; + +//--- +// GetObjectType() +enum : DWORD { + OBJ_PEN = 1, + OBJ_BRUSH, + OBJ_DC, + OBJ_METADC, + OBJ_PAL, + OBJ_FONT, + OBJ_BITMAP, + OBJ_REGION, + OBJ_METAFILE, + OBJ_MEMDC, + OBJ_EXTPEN, + OBJ_ENHMETADC, + OBJ_ENHMETAFILE, + OBJ_COLORSPACE, +} + +//--------------------- +// Capabilities for GetDeviceCaps(dc, xxx) + +enum : int { + DRIVERVERSION = 0, + TECHNOLOGY = 2, + HORZSIZE = 4, + VERTSIZE = 6, + HORZRES = 8, + VERTRES = 10, + BITSPIXEL = 12, + PLANES = 14, + NUMBRUSHES = 16, + NUMPENS = 18, + NUMMARKERS = 20, + NUMFONTS = 22, + NUMCOLORS = 24, + PDEVICESIZE = 26, + CURVECAPS = 28, + LINECAPS = 30, + POLYGONALCAPS = 32, + TEXTCAPS = 34, + CLIPCAPS = 36, + RASTERCAPS = 38, + ASPECTX = 40, + ASPECTY = 42, + ASPECTXY = 44, + LOGPIXELSX = 88, + LOGPIXELSY = 90, + SIZEPALETTE = 104, + NUMRESERVED = 106, + COLORRES = 108, + PHYSICALWIDTH = 110, + PHYSICALHEIGHT = 111, + PHYSICALOFFSETX = 112, + PHYSICALOFFSETY = 113, + SCALINGFACTORX = 114, + SCALINGFACTORY = 115, + VREFRESH = 116, + DESKTOPVERTRES = 117, + DESKTOPHORZRES = 118, + BLTALIGNMENT = 119 +} +static if (_WIN32_WINNT >= 0x500) { +enum : int { + SHADEBLENDCAPS = 120, + COLORMGMTCAPS = 121, +} +} + +// Return values for GetDeviceCaps(dc, TECHNOLOGY) +enum : int { + DT_PLOTTER = 0, + DT_RASDISPLAY, + DT_RASPRINTER, + DT_RASCAMERA, + DT_CHARSTREAM, + DT_METAFILE, + DT_DISPFILE // = 6 +} + +// Return values for GetDeviceCaps(dc, RASTERCAPS) +const int + RC_NONE = 0, + RC_BITBLT = 1, + RC_BANDING = 2, + RC_SCALING = 4, + RC_BITMAP64 = 8, + RC_GDI20_OUTPUT = 16, + RC_GDI20_STATE = 32, + RC_SAVEBITMAP = 64, + RC_DI_BITMAP = 128, + RC_PALETTE = 256, + RC_DIBTODEV = 512, + RC_BIGFONT = 1024, + RC_STRETCHBLT = 2048, + RC_FLOODFILL = 4096, + RC_STRETCHDIB = 8192, + RC_OP_DX_OUTPUT = 0x4000, + RC_DEVBITS = 0x8000; + +static if (_WIN32_WINNT >= 0x500) { + /* Shading and blending caps */ + const SB_NONE = 0x00000000; + const SB_CONST_ALPHA = 0x00000001; + const SB_PIXEL_ALPHA = 0x00000002; + const SB_PREMULT_ALPHA = 0x00000004; + const SB_GRAD_RECT = 0x00000010; + const SB_GRAD_TRI = 0x00000020; + /* Color Management caps */ + const CM_NONE = 0x00000000; + const CM_DEVICE_ICM = 0x00000001; + const CM_GAMMA_RAMP = 0x00000002; + const CM_CMYK_COLOR = 0x00000004; +} + +// Return values for GetDeviceCaps(dc, CURVECAPS) +const int + 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; + +// Return values for GetDeviceCaps(dc, LINECAPS) + +const int + LC_NONE = 0, + LC_POLYLINE = 2, + LC_MARKER = 4, + LC_POLYMARKER = 8, + LC_WIDE = 16, + LC_STYLED = 32, + LC_WIDESTYLED = 64, + LC_INTERIORS = 128; + +// Return values for GetDeviceCaps(dc, POLYGONALCAPS) + +const int + PC_NONE = 0, + PC_POLYGON = 1, + PC_RECTANGLE = 2, + PC_WINDPOLYGON = 4, + PC_TRAPEZOID = 4, + PC_SCANLINE = 8, + PC_WIDE = 16, + PC_STYLED = 32, + PC_WIDESTYLED = 64, + PC_INTERIORS = 128, + PC_POLYPOLYGON = 256, + PC_PATHS = 512; + +/* Clipping Capabilities */ +const int CP_NONE = 0, + CP_RECTANGLE = 1, + CP_REGION = 2; + +// Return values for GetDeviceCaps(dc, TEXTCAPS) + +const int + 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; + +// End GetDeviceCaps +//--------------------- +// GetCharacterPlacement(), and GetFontLanguageInfo() +const DWORD + GCP_DBCS = 1, + GCP_REORDER = 2, + GCP_USEKERNING = 8, + GCP_GLYPHSHAPE = 16, + GCP_LIGATE = 32, + GCP_DIACRITIC = 256, + GCP_KASHIDA = 1024, + GCP_ERROR = 0x8000, + GCP_JUSTIFY = 0x10000, + GCP_CLASSIN = 0x80000, + GCP_MAXEXTENT = 0x100000, + GCP_JUSTIFYIN = 0x200000, + GCP_DISPLAYZWG = 0x400000, + GCP_SYMSWAPOFF = 0x800000, + GCP_NUMERICOVERRIDE = 0x1000000, + GCP_NEUTRALOVERRIDE = 0x2000000, + GCP_NUMERICSLATIN = 0x4000000, + GCP_NUMERICSLOCAL = 0x8000000, + // Only for GetFontLanguageInfo() + FLI_GLYPHS = 0x40000, + FLI_MASK = 0x103b; + +// GetGlyphOutline() +enum : UINT { + GGO_METRICS = 0, + GGO_BITMAP = 1, + GGO_NATIVE = 2, + GGO_BEZIER = 3, + GGO_GRAY2_BITMAP = 4, + GGO_GRAY4_BITMAP = 5, + GGO_GRAY8_BITMAP = 6, + GGO_GLYPH_INDEX = 128, + GGO_UNHINTED = 256 +} + +enum : int { + GM_COMPATIBLE = 1, + GM_ADVANCED +} +const GM_LAST = GM_ADVANCED; + +enum : int { + MM_TEXT = 1, + MM_LOMETRIC, + MM_HIMETRIC, + MM_LOENGLISH, + MM_HIENGLISH, + MM_TWIPS, + MM_ISOTROPIC, + MM_ANISOTROPIC, +} + +const int + MM_MIN = MM_TEXT, + MM_MAX = MM_ANISOTROPIC, + MM_MAX_FIXEDSCALE = MM_TWIPS; + +const ABSOLUTE = 1; +const RELATIVE = 2; + +enum : BYTE { + PC_RESERVED = 1, + PC_EXPLICIT = 2, + PC_NOCOLLAPSE = 4 +} + +/* FIXME: move to win32.commctrl ? */ +// ImageList +const COLORREF + CLR_NONE = 0xffffffff, + CLR_INVALID = CLR_NONE, + CLR_DEFAULT = 0xff000000; + +// RASTERIZER_STATUS.wFlags +const short + TT_AVAILABLE = 1, + TT_ENABLED = 2; + +// GetStockObject() +enum : int { + WHITE_BRUSH = 0, + LTGRAY_BRUSH, + GRAY_BRUSH, + DKGRAY_BRUSH, + BLACK_BRUSH, + HOLLOW_BRUSH, // = 5 + NULL_BRUSH = HOLLOW_BRUSH, + WHITE_PEN = 6, + BLACK_PEN, + NULL_PEN, // = 8 + OEM_FIXED_FONT = 10, + ANSI_FIXED_FONT, + ANSI_VAR_FONT, + SYSTEM_FONT, + DEVICE_DEFAULT_FONT, + DEFAULT_PALETTE, + SYSTEM_FIXED_FONT, + DEFAULT_GUI_FONT = SYSTEM_FIXED_FONT + 1, +} +static if (_WIN32_WINNT >= 0x500) { + enum : int { + DC_BRUSH = DEFAULT_GUI_FONT + 1, + DC_PEN, + } +} + +static if (_WIN32_WINNT >= 0x500) { + const STOCK_LAST = DC_PEN; +} else { + const STOCK_LAST = DEFAULT_GUI_FONT; +} + +// Get/SetSystemPaletteUse() +enum : UINT { + SYSPAL_ERROR = 0, + SYSPAL_STATIC = 1, + SYSPAL_NOSTATIC = 2, + SYSPAL_NOSTATIC256 = 3, +} + +// SetTextAlign() +const UINT + TA_TOP = 0, + TA_CENTER = 6, + TA_BOTTOM = 8, + TA_BASELINE = 24, + TA_LEFT = 0, + TA_RIGHT = 2, + TA_RTLREADING = 256, + TA_NOUPDATECP = 0, + TA_UPDATECP = 1, + TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING, + VTA_BASELINE = TA_BASELINE, + VTA_CENTER = TA_CENTER, + VTA_LEFT = TA_BOTTOM, + VTA_RIGHT = TA_TOP, + VTA_BOTTOM = TA_RIGHT, + VTA_TOP = TA_LEFT; + +// EMRMODIFYWORLDTRANSFORM.iMode +enum : DWORD { + MWT_IDENTITY = 1, + MWT_LEFTMULTIPLY, + MWT_RIGHTMULTIPLY +} + +const DWORD + MWT_MIN = MWT_IDENTITY, + MWT_MAX = MWT_RIGHTMULTIPLY; + +enum { + TRANSPARENT = 1, + OPAQUE = 2 +} + +// Get/SetStretchMode() +enum : int { + BLACKONWHITE = 1, + WHITEONBLACK = 2, + COLORONCOLOR = 3, + HALFTONE = 4, + + STRETCH_ANDSCANS = 1, + STRETCH_ORSCANS = 2, + STRETCH_DELETESCANS = 3, + STRETCH_HALFTONE = 4, + + MAXSTRETCHBLTMODE = 4 +} + +// TranslateCharsetInfo() +enum : DWORD { + TCI_SRCCHARSET = 1, + TCI_SRCCODEPAGE = 2, + TCI_SRCFONTSIG = 3, + TCI_SRCLOCALE = 0x1000, +} + +// SetICMMode() +enum : int { + ICM_OFF = 1, + ICM_ON = 2, + ICM_QUERY = 3, + ICM_DONE_OUTSIDEDC = 4, +} + +// ---- +// Escape() Spooler Error Codes +enum : int { + SP_NOTREPORTED = 0x4000, + SP_ERROR = -1, + SP_APPABORT = -2, + SP_USERABORT = -3, + SP_OUTOFDISK = -4, + SP_OUTOFMEMORY = -5 +} + +// Escape(), ExtEscape() +// Most of the following are deprecated (Win16 only) +enum : int { + NEWFRAME = 1, + ABORTDOC = 2, + NEXTBAND = 3, + SETCOLORTABLE = 4, + GETCOLORTABLE = 5, + FLUSHOUTPUT = 6, + DRAFTMODE = 7, + QUERYESCSUPPORT = 8, + SETABORTPROC = 9, + STARTDOC = 10, + ENDDOC = 11, + GETPHYSPAGESIZE = 12, + GETPRINTINGOFFSET = 13, + GETSCALINGFACTOR = 14, + MFCOMMENT = 15, + GETPENWIDTH = 16, + SETCOPYCOUNT = 17, + SELECTPAPERSOURCE = 18, + DEVICEDATA = 19, + PASSTHROUGH = 19, + GETTECHNOLOGY = 20, + SETLINECAP = 21, + SETLINEJOIN = 22, + SETMITERLIMIT = 23, + BANDINFO = 24, + DRAWPATTERNRECT = 25, + GETVECTORPENSIZE = 26, + GETVECTORBRUSHSIZE = 27, + ENABLEDUPLEX = 28, + GETSETPAPERBINS = 29, + GETSETPRINTORIENT = 30, + ENUMPAPERBINS = 31, + SETDIBSCALING = 32, + EPSPRINTING = 33, + ENUMPAPERMETRICS = 34, + GETSETPAPERMETRICS = 35, + POSTSCRIPT_DATA = 37, + POSTSCRIPT_IGNORE = 38, + MOUSETRAILS = 39, + GETDEVICEUNITS = 42, + GETEXTENDEDTEXTMETRICS = 256, + GETEXTENTTABLE = 257, + GETPAIRKERNTABLE = 258, + GETTRACKKERNTABLE = 259, + EXTTEXTOUT = 512, + GETFACENAME = 513, + DOWNLOADFACE = 514, + ENABLERELATIVEWIDTHS = 768, + ENABLEPAIRKERNING = 769, + SETKERNTRACK = 770, + SETALLJUSTVALUES = 771, + SETCHARSET = 772, + STRETCHBLT = 2048, + METAFILE_DRIVER = 2049, + GETSETSCREENPARAMS = 3072, + QUERYDIBSUPPORT = 3073, + BEGIN_PATH = 4096, + CLIP_TO_PATH = 4097, + END_PATH = 4098, + EXT_DEVICE_CAPS = 4099, + RESTORE_CTM = 4100, + SAVE_CTM = 4101, + SET_ARC_DIRECTION = 4102, + SET_BACKGROUND_COLOR = 4103, + SET_POLY_MODE = 4104, + SET_SCREEN_ANGLE = 4105, + SET_SPREAD = 4106, + TRANSFORM_CTM = 4107, + SET_CLIP_BOX = 4108, + SET_BOUNDS = 4109, + SET_MIRROR_MODE = 4110, + OPENCHANNEL = 4110, + DOWNLOADHEADER = 4111, + CLOSECHANNEL = 4112, + POSTSCRIPT_PASSTHROUGH = 4115, + ENCAPSULATED_POSTSCRIPT = 4116, + POSTSCRIPT_IDENTIFY = 4117, + POSTSCRIPT_INJECTION = 4118, + CHECKJPEGFORMAT = 4119, + CHECKPNGFORMAT = 4120, + GET_PS_FEATURESETTING = 4121, + SPCLPASSTHROUGH2 = 4568, +} + +enum : int { + PSIDENT_GDICENTRIC = 0, + PSIDENT_PSCENTRIC = 1, +} + +/* + * Header structure for the input buffer to POSTSCRIPT_INJECTION escape + */ +struct PSINJECTDATA { + DWORD DataBytes; + WORD InjectionPoint; + WORD PageNumber; +} +alias PSINJECTDATA* PPSINJECTDATA; + +/* Constants for PSINJECTDATA.InjectionPoint field */ +enum { + PSINJECT_BEGINSTREAM = 1, + PSINJECT_PSADOBE = 2, + PSINJECT_PAGESATEND = 3, + PSINJECT_PAGES = 4, + PSINJECT_DOCNEEDEDRES = 5, + PSINJECT_DOCSUPPLIEDRES = 6, + PSINJECT_PAGEORDER = 7, + PSINJECT_ORIENTATION = 8, + PSINJECT_BOUNDINGBOX = 9, + PSINJECT_DOCUMENTPROCESSCOLORS = 10, + PSINJECT_COMMENTS = 11, + PSINJECT_BEGINDEFAULTS = 12, + PSINJECT_ENDDEFAULTS = 13, + PSINJECT_BEGINPROLOG = 14, + PSINJECT_ENDPROLOG = 15, + PSINJECT_BEGINSETUP = 16, + PSINJECT_ENDSETUP = 17, + PSINJECT_TRAILER = 18, + PSINJECT_EOF = 19, + PSINJECT_ENDSTREAM = 20, + PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21, + + PSINJECT_PAGENUMBER = 100, + PSINJECT_BEGINPAGESETUP = 101, + PSINJECT_ENDPAGESETUP = 102, + PSINJECT_PAGETRAILER = 103, + PSINJECT_PLATECOLOR = 104, + PSINJECT_SHOWPAGE = 105, + PSINJECT_PAGEBBOX = 106, + PSINJECT_ENDPAGECOMMENTS = 107, + + PSINJECT_VMSAVE = 200, + PSINJECT_VMRESTORE = 201, +} + +/* Parameter for GET_PS_FEATURESETTING escape */ +enum { + FEATURESETTING_NUP = 0, + FEATURESETTING_OUTPUT = 1, + FEATURESETTING_PSLEVEL = 2, + FEATURESETTING_CUSTPAPER = 3, + FEATURESETTING_MIRROR = 4, + FEATURESETTING_NEGATIVE = 5, + FEATURESETTING_PROTOCOL = 6, +} + +enum { + FEATURESETTING_PRIVATE_BEGIN = 0x1000, + FEATURESETTING_PRIVATE_END = 0x1FFF, +} + +/* Value returned for FEATURESETTING_PROTOCOL */ +const PSPROTOCOL_ASCII = 0; +const PSPROTOCOL_BCP = 1; +const PSPROTOCOL_TBCP = 2; +const PSPROTOCOL_BINARY = 3; + +// ---- + +const WPARAM PR_JOBSTATUS = 0; + +// ??? +const QDI_SETDIBITS = 1; +const QDI_GETDIBITS = 2; +const QDI_DIBTOSCREEN = 4; +const QDI_STRETCHDIB = 8; + +const ASPECT_FILTERING = 1; + +// LOGCOLORSPACE.lcsCSType +enum : LCSCSTYPE { + LCS_CALIBRATED_RGB = 0, + LCS_DEVICE_RGB, + LCS_DEVICE_CMYK +} /* What this for? */ + +// LOGCOLORSPACE.lcsIntent +enum : LCSGAMUTMATCH { + LCS_GM_BUSINESS = 1, + LCS_GM_GRAPHICS = 2, + LCS_GM_IMAGES = 4, + LCS_GM_ABS_COLORIMETRIC = 8, +} + +const DWORD + RASTER_FONTTYPE = 1, + DEVICE_FONTTYPE = 2, + TRUETYPE_FONTTYPE = 4; + +// --- +// DEVMODE struct + +// FIXME: Not needed for D (use .length instead) +const CCHDEVICENAME = 32; +const CCHFORMNAME = 32; + +// DEVMODE.dmSpecVersion +// current version of specification +const WORD DM_SPECVERSION = 0x0401; + +// DEVMODE.dmOrientation +enum : short { + DMORIENT_PORTRAIT = 1, + DMORIENT_LANDSCAPE = 2 +} + +// DEVMODE.dmPaperSize +enum : short { + DMPAPER_LETTER = 1, + DMPAPER_LETTERSMALL, + DMPAPER_TABLOID, + DMPAPER_LEDGER, + DMPAPER_LEGAL, + DMPAPER_STATEMENT, + DMPAPER_EXECUTIVE, + DMPAPER_A3, + DMPAPER_A4, + DMPAPER_A4SMALL, + DMPAPER_A5, + DMPAPER_B4, + DMPAPER_B5, + DMPAPER_FOLIO, + DMPAPER_QUARTO, + DMPAPER_10X14, + DMPAPER_11X17, + DMPAPER_NOTE, + DMPAPER_ENV_9, + DMPAPER_ENV_10, + DMPAPER_ENV_11, + DMPAPER_ENV_12, + DMPAPER_ENV_14, + DMPAPER_CSHEET, + DMPAPER_DSHEET, + DMPAPER_ESHEET, + DMPAPER_ENV_DL, + DMPAPER_ENV_C5, + DMPAPER_ENV_C3, + DMPAPER_ENV_C4, + DMPAPER_ENV_C6, + DMPAPER_ENV_C65, + DMPAPER_ENV_B4, + DMPAPER_ENV_B5, + DMPAPER_ENV_B6, + DMPAPER_ENV_ITALY, + DMPAPER_ENV_MONARCH, + DMPAPER_ENV_PERSONAL, + DMPAPER_FANFOLD_US, + DMPAPER_FANFOLD_STD_GERMAN, + DMPAPER_FANFOLD_LGL_GERMAN, + DMPAPER_ISO_B4, + DMPAPER_JAPANESE_POSTCARD, + DMPAPER_9X11, + DMPAPER_10X11, + DMPAPER_15X11, + DMPAPER_ENV_INVITE, + DMPAPER_RESERVED_48, + DMPAPER_RESERVED_49, + DMPAPER_LETTER_EXTRA, + DMPAPER_LEGAL_EXTRA, + DMPAPER_TABLOID_EXTRA, + DMPAPER_A4_EXTRA, + DMPAPER_LETTER_TRANSVERSE, + DMPAPER_A4_TRANSVERSE, + DMPAPER_LETTER_EXTRA_TRANSVERSE, + DMPAPER_A_PLUS, + DMPAPER_B_PLUS, + DMPAPER_LETTER_PLUS, + DMPAPER_A4_PLUS, + DMPAPER_A5_TRANSVERSE, + DMPAPER_B5_TRANSVERSE, + DMPAPER_A3_EXTRA, + DMPAPER_A5_EXTRA, + DMPAPER_B5_EXTRA, + DMPAPER_A2, + DMPAPER_A3_TRANSVERSE, + DMPAPER_A3_EXTRA_TRANSVERSE // = 68 +} +static if (_WIN32_WINNT >= 0x500) { + enum : short { + DMPAPER_DBL_JAPANESE_POSTCARD = 69, + DMPAPER_A6, + DMPAPER_JENV_KAKU2, + DMPAPER_JENV_KAKU3, + DMPAPER_JENV_CHOU3, + DMPAPER_JENV_CHOU4, + DMPAPER_LETTER_ROTATED, + DMPAPER_A3_ROTATED, + DMPAPER_A4_ROTATED, + DMPAPER_A5_ROTATED, + DMPAPER_B4_JIS_ROTATED, + DMPAPER_B5_JIS_ROTATED, + DMPAPER_JAPANESE_POSTCARD_ROTATED, + DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED, + DMPAPER_A6_ROTATED, + DMPAPER_JENV_KAKU2_ROTATED, + DMPAPER_JENV_KAKU3_ROTATED, + DMPAPER_JENV_CHOU3_ROTATED, + DMPAPER_JENV_CHOU4_ROTATED, + DMPAPER_B6_JIS, + DMPAPER_B6_JIS_ROTATED, + DMPAPER_12X11, + DMPAPER_JENV_YOU4, + DMPAPER_JENV_YOU4_ROTATED, + DMPAPER_P16K, + DMPAPER_P32K, + DMPAPER_P32KBIG, + DMPAPER_PENV_1, + DMPAPER_PENV_2, + DMPAPER_PENV_3, + DMPAPER_PENV_4, + DMPAPER_PENV_5, + DMPAPER_PENV_6, + DMPAPER_PENV_7, + DMPAPER_PENV_8, + DMPAPER_PENV_9, + DMPAPER_PENV_10, + DMPAPER_P16K_ROTATED, + DMPAPER_P32K_ROTATED, + DMPAPER_P32KBIG_ROTATED, + DMPAPER_PENV_1_ROTATED, + DMPAPER_PENV_2_ROTATED, + DMPAPER_PENV_3_ROTATED, + DMPAPER_PENV_4_ROTATED, + DMPAPER_PENV_5_ROTATED, + DMPAPER_PENV_6_ROTATED, + DMPAPER_PENV_7_ROTATED, + DMPAPER_PENV_8_ROTATED, + DMPAPER_PENV_9_ROTATED, + DMPAPER_PENV_10_ROTATED // 118 + } +} + +const short DMPAPER_FIRST = DMPAPER_LETTER; + +static if (_WIN32_WINNT >= 0x500) { + const short DMPAPER_LAST = DMPAPER_PENV_10_ROTATED; +} else { + const short DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE; +} + +const short DMPAPER_USER = 256; + + +// DEVMODE.dmDefaultSource +enum : short { + DMBIN_ONLYONE = 1, + DMBIN_UPPER = 1, + DMBIN_LOWER, + DMBIN_MIDDLE, + DMBIN_MANUAL, + DMBIN_ENVELOPE, + DMBIN_ENVMANUAL, + DMBIN_AUTO, + DMBIN_TRACTOR, + DMBIN_SMALLFMT, + DMBIN_LARGEFMT, + DMBIN_LARGECAPACITY, // = 11 + DMBIN_CASSETTE = 14, + DMBIN_FORMSOURCE, +} +enum : short { + DMBIN_FIRST = DMBIN_UPPER, + DMBIN_LAST = DMBIN_FORMSOURCE, + DMBIN_USER = 256, +} + +// DEVMODE.dmPrintQuality +enum : short { + DMRES_DRAFT = -1, + DMRES_LOW = -2, + DMRES_MEDIUM = -3, + DMRES_HIGH = -4 +} + +// DEVMODE.dmColor +enum : short { + DMCOLOR_MONOCHROME = 1, + DMCOLOR_COLOR = 2 +} + +// DEVMODE.dmDuplex +enum : short { + DMDUP_SIMPLEX = 1, + DMDUP_VERTICAL = 2, + DMDUP_HORIZONTAL = 3 +} + +// DEVMODE.dmTTOption +enum : short { + DMTT_BITMAP = 1, + DMTT_DOWNLOAD, + DMTT_SUBDEV, + DMTT_DOWNLOAD_OUTLINE +} + +// DEVMODE.dmCollate +enum : short { + DMCOLLATE_FALSE = 0, + DMCOLLATE_TRUE +} + +static if (_WIN32_WINNT >= 0x501) { + /* DEVMODE dmDisplayOrientation specifiations */ + enum : short { + DMDO_DEFAULT = 0, + DMDO_90 = 1, + DMDO_180 = 2, + DMDO_270 = 3, + } + + /* DEVMODE dmDisplayFixedOutput specifiations */ + enum : short { + DMDFO_DEFAULT = 0, + DMDFO_STRETCH = 1, + DMDFO_CENTER = 2, + } +} + + +/* FIXME: this flags are deprecated ? */ +// DEVMODE.dmDisplayFlags +const DWORD + DM_GRAYSCALE = 1, + DM_INTERLACED = 2; + +const DWORD + DMDISPLAYFLAGS_TEXTMODE = 0x00000004; + +/* dmNup , multiple logical page per physical page options */ +const DWORD + DMNUP_SYSTEM = 1, + DMNUP_ONEUP = 2; + +// DEVMODE.dmFields +const DWORD + DM_ORIENTATION = 0x00000001, + DM_PAPERSIZE = 0x00000002, + DM_PAPERLENGTH = 0x00000004, + DM_PAPERWIDTH = 0x00000008, + DM_SCALE = 0x00000010; +static if (_WIN32_WINNT >= 0x500) { + const DWORD + DM_POSITION = 0x00000020, + DM_NUP = 0x00000040; +} +static if (_WIN32_WINNT >= 0x501) { + const DWORD + DM_DISPLAYORIENTATION = 0x00000080; +} +const DWORD + DM_COPIES = 0x00000100, + DM_DEFAULTSOURCE = 0x00000200, + DM_PRINTQUALITY = 0x00000400, + DM_COLOR = 0x00000800, + DM_DUPLEX = 0x00001000, + DM_YRESOLUTION = 0x00002000, + DM_TTOPTION = 0x00004000, + DM_COLLATE = 0x00008000, + DM_FORMNAME = 0x00010000, + DM_LOGPIXELS = 0x00020000, + DM_BITSPERPEL = 0x00040000, + DM_PELSWIDTH = 0x00080000, + DM_PELSHEIGHT = 0x00100000, + DM_DISPLAYFLAGS = 0x00200000, + DM_DISPLAYFREQUENCY = 0x00400000, + DM_ICMMETHOD = 0x00800000, + DM_ICMINTENT = 0x01000000, + DM_MEDIATYPE = 0x02000000, + DM_DITHERTYPE = 0x04000000, + DM_PANNINGWIDTH = 0x08000000, + DM_PANNINGHEIGHT = 0x10000000; +static if (_WIN32_WINNT >= 0x501) { + const DWORD + DM_DISPLAYFIXEDOUTPUT = 0x20000000; +} + +// DEVMODE.dmICMMethod +enum : DWORD { + DMICMMETHOD_NONE = 1, + DMICMMETHOD_SYSTEM = 2, + DMICMMETHOD_DRIVER = 3, + DMICMMETHOD_DEVICE = 4, + DMICMMETHOD_USER = 256 +} + +// DEVMODE.dmICMIntent +enum : DWORD { + DMICM_SATURATE = 1, + DMICM_CONTRAST = 2, + DMICM_COLORIMETRIC = 3, + DMICM_ABS_COLORIMETRIC = 4, + DMICM_USER = 256 +} + +// DEVMODE.dmMediaType +enum : DWORD { + DMMEDIA_STANDARD = 1, + DMMEDIA_TRANSPARENCY = 2, + DMMEDIA_GLOSSY = 3, + DMMEDIA_USER = 256 +} + +// DEVMODE.dmDitherType +enum : DWORD { + DMDITHER_NONE = 1, + DMDITHER_COARSE, + DMDITHER_FINE, + DMDITHER_LINEART, + DMDITHER_ERRORDIFFUSION, + DMDITHER_RESERVED6, + DMDITHER_RESERVED7, + DMDITHER_RESERVED8, + DMDITHER_RESERVED9, + DMDITHER_GRAYSCALE, + DMDITHER_USER = 256 +} + +// ---- +// DocumentProperties() +const DWORD + DM_UPDATE = 1, + DM_COPY = 2, + DM_PROMPT = 4, + DM_MODIFY = 8, + DM_IN_BUFFER = DM_MODIFY, + DM_IN_PROMPT = DM_PROMPT, + DM_OUT_BUFFER = DM_COPY, + DM_OUT_DEFAULT = DM_UPDATE; +// --- + +const GDI_ERROR = 0xFFFFFFFF; +const HGDI_ERROR= cast(HANDLE)GDI_ERROR; + +// TEXTMETRIC.tmPitchAndFamily +const BYTE + TMPF_FIXED_PITCH = 1, + TMPF_VECTOR = 2, + TMPF_TRUETYPE = 4, + TMPF_DEVICE = 8; + +// NEWTEXTMETRIC.ntmFlags +const DWORD + NTM_ITALIC = 0x00000001, + NTM_BOLD = 0x00000020, + NTM_REGULAR = 0x00000040, + NTM_NONNEGATIVE_AC = 0x00010000, + NTM_PS_OPENTYPE = 0x00020000, + NTM_TT_OPENTYPE = 0x00040000, + NTM_MULTIPLEMASTER = 0x00080000, + NTM_TYPE1 = 0x00100000, + NTM_DSIG = 0x00200000; + +// --- +const DWORD TT_POLYGON_TYPE = 24; + +// TTPOLYCURVE +enum : WORD { + TT_PRIM_LINE = 1, + TT_PRIM_QSPLINE = 2, + TT_PRIM_CSPLINE = 3, +} +// --- +const FONTMAPPER_MAX = 10; +const ENHMETA_STOCK_OBJECT = 0x80000000; +const WGL_FONT_LINES = 0; +const WGL_FONT_POLYGONS = 1; + +// --- +// LAYERPLANEDESCRIPTOR.dwFlags +const DWORD + LPD_DOUBLEBUFFER = 1, + LPD_STEREO = 2, + LPD_SUPPORT_GDI = 16, + LPD_SUPPORT_OPENGL = 32, + LPD_SHARE_DEPTH = 64, + LPD_SHARE_STENCIL = 128, + LPD_SHARE_ACCUM = 256, + LPD_SWAP_EXCHANGE = 512, + LPD_SWAP_COPY = 1024, + LPD_TRANSPARENT = 4096; + +// LAYERPLANEDESCRIPTOR.iPixelType +enum : BYTE { + LPD_TYPE_RGBA = 0, + LPD_TYPE_COLORINDEX = 1 +} + +// --- + +// wglSwapLayerBuffers() +const UINT + WGL_SWAP_MAIN_PLANE = 1, + WGL_SWAP_OVERLAY1 = 2, + WGL_SWAP_OVERLAY2 = 4, + WGL_SWAP_OVERLAY3 = 8, + WGL_SWAP_OVERLAY4 = 16, + WGL_SWAP_OVERLAY5 = 32, + WGL_SWAP_OVERLAY6 = 64, + WGL_SWAP_OVERLAY7 = 128, + WGL_SWAP_OVERLAY8 = 256, + WGL_SWAP_OVERLAY9 = 512, + WGL_SWAP_OVERLAY10 = 1024, + WGL_SWAP_OVERLAY11 = 2048, + WGL_SWAP_OVERLAY12 = 4096, + WGL_SWAP_OVERLAY13 = 8192, + WGL_SWAP_OVERLAY14 = 16384, + WGL_SWAP_OVERLAY15 = 32768, + WGL_SWAP_UNDERLAY1 = 65536, + WGL_SWAP_UNDERLAY2 = 0x20000, + WGL_SWAP_UNDERLAY3 = 0x40000, + WGL_SWAP_UNDERLAY4 = 0x80000, + WGL_SWAP_UNDERLAY5 = 0x100000, + WGL_SWAP_UNDERLAY6 = 0x200000, + WGL_SWAP_UNDERLAY7 = 0x400000, + WGL_SWAP_UNDERLAY8 = 0x800000, + WGL_SWAP_UNDERLAY9 = 0x1000000, + WGL_SWAP_UNDERLAY10 = 0x2000000, + WGL_SWAP_UNDERLAY11 = 0x4000000, + WGL_SWAP_UNDERLAY12 = 0x8000000, + WGL_SWAP_UNDERLAY13 = 0x10000000, + WGL_SWAP_UNDERLAY14 = 0x20000000, + WGL_SWAP_UNDERLAY15 = 0x40000000; + +const AC_SRC_OVER = 0x00; +const AC_SRC_ALPHA = 0x01; + +// ??? +const AC_SRC_NO_PREMULT_ALPHA = 0x01; +const AC_SRC_NO_ALPHA = 0x02; +const AC_DST_NO_PREMULT_ALPHA = 0x10; +const AC_DST_NO_ALPHA = 0x20; + +const LAYOUT_RTL = 1; +const LAYOUT_BTT = 2; +const LAYOUT_VBH = 4; +const LAYOUT_BITMAPORIENTATIONPRESERVED = 8; + +const CS_ENABLE = 0x00000001; +const CS_DISABLE = 0x00000002; +const CS_DELETE_TRANSFORM = 0x00000003; + +static if (_WIN32_WINNT > 0x500) { + const GRADIENT_FILL_RECT_H=0x00; + const GRADIENT_FILL_RECT_V=0x01; + const GRADIENT_FILL_TRIANGLE=0x02; + const GRADIENT_FILL_OP_FLAG=0xff; + const COLORMATCHTOTARGET_EMBEDED=0x00000001; + const CREATECOLORSPACE_EMBEDED=0x00000001; + const SETICMPROFILE_EMBEDED=0x00000001; +} + +// DISPLAY_DEVICE.StateFlags +const DWORD + DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001, + DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002, + DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004, + DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008, + DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010, + DISPLAY_DEVICE_REMOVABLE = 0x00000020, + DISPLAY_DEVICE_DISCONNECT = 0x02000000, + DISPLAY_DEVICE_REMOTE = 0x04000000, + DISPLAY_DEVICE_MODESPRUNED = 0x08000000; + +/* Child device state */ +const DWORD + DISPLAY_DEVICE_ACTIVE = 0x00000001, + DISPLAY_DEVICE_ATTACHED = 0x00000002; + +static if (_WIN32_WINNT >= 0x500) { + const GGI_MARK_NONEXISTING_GLYPHS = 1; +} + +// ---------- +// STRUCTS +// ---------- + +struct ABC { + int abcA; + UINT abcB; + int abcC; +} +alias ABC* PABC, NPABC, LPABC; + +struct ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; +} +alias ABCFLOAT* PABCFLOAT, NPABCFLOAT, LPABCFLOAT; + +struct BITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; +} +alias BITMAP* PBITMAP, NPBITMAP, LPBITMAP; + +struct BITMAPCOREHEADER { + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} +alias BITMAPCOREHEADER* PBITMAPCOREHEADER, LPBITMAPCOREHEADER; + +align(1): +struct RGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} +alias RGBTRIPLE* LPRGBTRIPLE; + +align(2): +struct BITMAPFILEHEADER { + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} +alias BITMAPFILEHEADER* LPBITMAPFILEHEADER, PBITMAPFILEHEADER; + +align: + +struct BITMAPCOREINFO { + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE[1] bmciColors; +} +alias BITMAPCOREINFO* LPBITMAPCOREINFO, PBITMAPCOREINFO; + +struct BITMAPINFOHEADER { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} + +alias BITMAPINFOHEADER* LPBITMAPINFOHEADER, PBITMAPINFOHEADER; + +struct RGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +}; +alias RGBQUAD* LPRGBQUAD; + +struct BITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD[1] bmiColors; +}; +alias BITMAPINFO* PBITMAPINFO, LPBITMAPINFO; + +alias int FXPT16DOT16; +alias int* LPFXPT16DOT16; +alias int FXPT2DOT30; +alias int* LPFXPT2DOT30; + +struct CIEXYZ { + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; +} +alias CIEXYZ* LPCIEXYZ; + +struct CIEXYZTRIPLE { + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; +} +alias CIEXYZTRIPLE* LPCIEXYZTRIPLE; + +struct BITMAPV4HEADER { + DWORD bV4Size; + LONG bV4Width; + LONG bV4Height; + WORD bV4Planes; + WORD 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, PBITMAPV4HEADER; + +struct BITMAPV5HEADER { + DWORD bV5Size; + LONG bV5Width; + LONG bV5Height; + WORD bV5Planes; + WORD bV5BitCount; + DWORD bV5Compression; + DWORD bV5SizeImage; + LONG bV5XPelsPerMeter; + LONG bV5YPelsPerMeter; + DWORD bV5ClrUsed; + DWORD bV5ClrImportant; + DWORD bV5RedMask; + DWORD bV5GreenMask; + DWORD bV5BlueMask; + DWORD bV5AlphaMask; + DWORD bV5CSType; + CIEXYZTRIPLE bV5Endpoints; + DWORD bV5GammaRed; + DWORD bV5GammaGreen; + DWORD bV5GammaBlue; + DWORD bV5Intent; + DWORD bV5ProfileData; + DWORD bV5ProfileSize; + DWORD bV5Reserved; +} +alias BITMAPV5HEADER* LPBITMAPV5HEADER, PBITMAPV5HEADER; + +struct FONTSIGNATURE { + DWORD[4] fsUsb; + DWORD[2] fsCsb; +} +alias FONTSIGNATURE* PFONTSIGNATURE, LPFONTSIGNATURE; + +struct CHARSETINFO { + UINT ciCharset; + UINT ciACP; + FONTSIGNATURE fs; +} +alias CHARSETINFO* PCHARSETINFO, NPCHARSETINFO, LPCHARSETINFO; + +struct COLORADJUSTMENT { + WORD caSize; + WORD caFlags; + WORD caIlluminantIndex; + WORD caRedGamma; + WORD caGreenGamma; + WORD caBlueGamma; + WORD caReferenceBlack; + WORD caReferenceWhite; + SHORT caContrast; + SHORT caBrightness; + SHORT caColorfulness; + SHORT caRedGreenTint; +} +alias COLORADJUSTMENT* PCOLORADJUSTMENT, LPCOLORADJUSTMENT; + +struct DEVMODEA { + BYTE[CCHDEVICENAME] dmDeviceName; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE[CCHFORMNAME] dmFormName; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} +alias DEVMODEA* PDEVMODEA, NPDEVMODEA, LPDEVMODEA; + +struct DEVMODEW { + WCHAR[CCHDEVICENAME] dmDeviceName; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; + union { + struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + } + POINTL dmPosition; + DWORD dmDisplayOrientation; + DWORD dmDisplayFixedOutput; + } + + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR[CCHFORMNAME] dmFormName; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; + union { + DWORD dmDisplayFlags; + DWORD dmNup; + } + DWORD dmDisplayFrequency; + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; + DWORD dmPanningWidth; + DWORD dmPanningHeight; +} +alias DEVMODEW* PDEVMODEW, NPDEVMODEW, LPDEVMODEW; + +/* + * Information about output options + */ +struct PSFEATURE_OUTPUT { + BOOL bPageIndependent; + BOOL bSetPageDevice; +} +alias PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; + +/* + * Information about custom paper size + */ +struct PSFEATURE_CUSTPAPER { + LONG lOrientation; + LONG lWidth; + LONG lHeight; + LONG lWidthOffset; + LONG lHeightOffset; +} +alias PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER; + +struct DIBSECTION { + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD[3] dsBitfields; + HANDLE dshSection; + DWORD dsOffset; +} +alias DIBSECTION* PDIBSECTION; + +struct DOCINFOA { + int cbSize = DOCINFOA.sizeof; + LPCSTR lpszDocName; + LPCSTR lpszOutput; + LPCSTR lpszDatatype; + DWORD fwType; +} +alias DOCINFOA* LPDOCINFOA; + +struct DOCINFOW { + int cbSize = DOCINFOW.sizeof; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; + LPCWSTR lpszDatatype; + DWORD fwType; +} +alias DOCINFOW* LPDOCINFOW; + + +struct PANOSE { + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; +} +alias PANOSE* LPPANOSE; + +struct LOGFONTA { + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + CHAR[LF_FACESIZE] lfFaceName; +} +alias LOGFONTA* PLOGFONTA, NPLOGFONTA, LPLOGFONTA; + +struct LOGFONTW { + LONG lfHeight; + LONG lfWidth; + LONG lfEscapement; + LONG lfOrientation; + LONG lfWeight; + BYTE lfItalic; + BYTE lfUnderline; + BYTE lfStrikeOut; + BYTE lfCharSet; + BYTE lfOutPrecision; + BYTE lfClipPrecision; + BYTE lfQuality; + BYTE lfPitchAndFamily; + WCHAR[LF_FACESIZE] lfFaceName; +} +alias LOGFONTW* PLOGFONTW, NPLOGFONTW, LPLOGFONTW; + +struct EXTLOGFONTA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE[ELF_VENDOR_SIZE] elfVendorId; + DWORD elfCulture; + PANOSE elfPanose; +} +alias EXTLOGFONTA* PEXTLOGFONTA, NPEXTLOGFONTA, LPEXTLOGFONTA; + +struct EXTLOGFONTW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE[ELF_VENDOR_SIZE] elfVendorId; + DWORD elfCulture; + PANOSE elfPanose; +} +alias EXTLOGFONTW* PEXTLOGFONTW, NPEXTLOGFONTW, LPEXTLOGFONTW; + +struct LOGPEN { + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; +} +alias LOGPEN* PLOGPEN, NPLOGPEN, LPLOGPEN; + +// ---------------------- EMR ------------ + +struct EMR { + DWORD iType; + DWORD nSize; +} +alias EMR* PEMR; + +struct EMRANGLEARC { + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; +} +alias EMRANGLEARC* PEMRANGLEARC; + +struct EMRARC { + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; +} +alias EMRARC* PEMRARC; +alias TypeDef!(EMRARC) EMRARCTO; +alias EMRARCTO* PEMRARCTO; +alias TypeDef!(EMRARC) EMRCHORD; +alias EMRCHORD* PEMRCHORD; +alias TypeDef!(EMRARC) EMRPIE; +alias EMRPIE* PEMRPIE; + +struct XFORM { + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; +} +alias XFORM* PXFORM, LPXFORM; + +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 cbBmiSrc; + DWORD offBitsSrc; + DWORD cbBitsSrc; +} +alias EMRBITBLT* PEMRBITBLT; + +struct LOGBRUSH { + UINT lbStyle; + COLORREF lbColor; + LONG lbHatch; +} +alias TypeDef!(LOGBRUSH) PATTERN; +alias LOGBRUSH* PLOGBRUSH, NPLOGBRUSH, LPLOGBRUSH; +alias PATTERN* PPATTERN, NPPATTERN, LPPATTERN; + +struct LOGBRUSH32 { + UINT lbStyle; + COLORREF lbColor; + ULONG lbHatch; +} +alias LOGBRUSH32* PLOGBRUSH32, NPLOGBRUSH32, LPLOGBRUSH32; + +struct EMRCREATEBRUSHINDIRECT { + EMR emr; + DWORD ihBrush; + LOGBRUSH32 lb; +} +alias EMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT; + +alias LONG LCSCSTYPE, LCSGAMUTMATCH; + +struct LOGCOLORSPACEA { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR[MAX_PATH] lcsFilename; +} +alias LOGCOLORSPACEA* LPLOGCOLORSPACEA; + +struct LOGCOLORSPACEW { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR[MAX_PATH] lcsFilename; +} +alias LOGCOLORSPACEW* LPLOGCOLORSPACEW; + +alias USHORT COLOR16; +struct TRIVERTEX { + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; +} +alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX; + +struct EMRGLSRECORD { + EMR emr; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGLSRECORD* PEMRGLSRECORD; + +struct EMRGLSBOUNDEDRECORD { + EMR emr; + RECTL rclBounds; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD; + +struct EMRPIXELFORMAT { + EMR emr; + PIXELFORMATDESCRIPTOR pfd; +} +alias EMRPIXELFORMAT* PEMRPIXELFORMAT; + +struct EMRCREATECOLORSPACE { + EMR emr; + DWORD ihCS; + LOGCOLORSPACE lcs; +} +alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; + +struct EMRSETCOLORSPACE { + EMR emr; + DWORD ihCS; +} +alias EMRSETCOLORSPACE* PEMRSETCOLORSPACE; +alias TypeDef!(EMRSETCOLORSPACE) EMRSELECTCOLORSPACE; +alias EMRSELECTCOLORSPACE* PEMRSELECTCOLORSPACE; +alias TypeDef!(EMRSETCOLORSPACE) EMRDELETECOLORSPACE; +alias EMRDELETECOLORSPACE* PEMRDELETECOLORSPACE; + +static if (_WIN32_WINNT >= 0x500) { + + struct EMREXTESCAPE { + EMR emr; + INT iEscape; + INT cbEscData; + BYTE[1] EscData; + } + alias EMREXTESCAPE* PEMREXTESCAPE; + alias TypeDef!(EMREXTESCAPE) EMRDRAWESCAPE; + alias EMRDRAWESCAPE* PEMRDRAWESCAPE; + + struct EMRNAMEDESCAPE { + EMR emr; + INT iEscape; + INT cbDriver; + INT cbEscData; + BYTE[1] EscData; + } + alias EMRNAMEDESCAPE* PEMRNAMEDESCAPE; + + struct EMRSETICMPROFILE { + EMR emr; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE[1] Data; + } + alias EMRSETICMPROFILE* PEMRSETICMPROFILE; + alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEA; + alias EMRSETICMPROFILEA* PEMRSETICMPROFILEA; + alias TypeDef!(EMRSETICMPROFILE) EMRSETICMPROFILEW; + alias EMRSETICMPROFILEW* PEMRSETICMPROFILEW; + + struct EMRCREATECOLORSPACEW { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; + DWORD dwFlags; + DWORD cbData; + BYTE[1] Data; + } + alias EMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; + + struct EMRCOLORMATCHTOTARGET { + EMR emr; + DWORD dwAction; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE[1] Data; + } + alias EMRCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; + + struct EMRCOLORCORRECTPALETTE { + EMR emr; + DWORD ihPalette; + DWORD nFirstEntry; + DWORD nPalEntries; + DWORD nReserved; + } + alias EMRCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; + + struct EMRALPHABLEND { + 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 EMRALPHABLEND* PEMRALPHABLEND; + + struct EMRGRADIENTFILL { + EMR emr; + RECTL rclBounds; + DWORD nVer; + DWORD nTri; + ULONG ulMode; + TRIVERTEX[1] Ver; + } + alias EMRGRADIENTFILL* PEMRGRADIENTFILL; + + struct EMRTRANSPARENTBLT { + 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 EMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; +} + +struct EMRCREATEDIBPATTERNBRUSHPT { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} +alias EMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT; + +struct EMRCREATEMONOBRUSH { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} +alias EMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH; + +struct PALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} +alias PALETTEENTRY* PPALETTEENTRY, LPPALETTEENTRY; + +struct LOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY[1] palPalEntry; +} +alias LOGPALETTE* PLOGPALETTE, NPLOGPALETTE, LPLOGPALETTE; + +struct EMRCREATEPALETTE { + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; +} +alias EMRCREATEPALETTE* PEMRCREATEPALETTE; + +struct EMRCREATEPEN { + EMR emr; + DWORD ihPen; + LOGPEN lopn; +} +alias EMRCREATEPEN* PEMRCREATEPEN; + +struct EMRELLIPSE { + EMR emr; + RECTL rclBox; +} +alias EMRELLIPSE* PEMRELLIPSE; + +alias TypeDef!(EMRELLIPSE) EMRRECTANGLE; +alias EMRRECTANGLE* PEMRRECTANGLE; + +struct EMREOF { + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; +} +alias EMREOF* PEMREOF; + +struct EMREXCLUDECLIPRECT { + EMR emr; + RECTL rclClip; +} +alias EMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT; +alias TypeDef!(EMREXCLUDECLIPRECT) EMRINTERSECTCLIPRECT; +alias EMRINTERSECTCLIPRECT* PEMRINTERSECTCLIPRECT; + +struct EMREXTCREATEFONTINDIRECTW { + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; +} +alias EMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW; + +struct EXTLOGPEN { + UINT elpPenStyle; + UINT elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + LONG elpHatch; + DWORD elpNumEntries; + DWORD[1] elpStyleEntry; +} +alias EXTLOGPEN* PEXTLOGPEN, NPEXTLOGPEN, LPEXTLOGPEN; + +struct EMREXTCREATEPEN { + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; +} +alias EMREXTCREATEPEN* PEMREXTCREATEPEN; + +struct EMREXTFLOODFILL { + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; +} +alias EMREXTFLOODFILL* PEMREXTFLOODFILL; + +struct EMREXTSELECTCLIPRGN { + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE [1]RgnData; +} +alias EMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN; + +struct EMRTEXT { + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; +} +alias EMRTEXT* PEMRTEXT; + +struct EMREXTTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; +} +alias EMREXTTEXTOUTA* PEMREXTTEXTOUTA; +alias TypeDef!(EMREXTTEXTOUTA) EMREXTTEXTOUTW; +alias EMREXTTEXTOUTW* PEMREXTTEXTOUTW; + +struct EMRFILLPATH { + EMR emr; + RECTL rclBounds; +} +alias EMRFILLPATH* PEMRFILLPATH; + +alias TypeDef!(EMRFILLPATH) EMRSTROKEANDFILLPATH; +alias EMRSTROKEANDFILLPATH* PEMRSTROKEANDFILLPATH; + +alias TypeDef!(EMRFILLPATH) EMRSTROKEPATH; +alias EMRSTROKEPATH* PEMRSTROKEPATH; + +struct EMRFILLRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE[1] RgnData; +} +alias EMRFILLRGN* PEMRFILLRGN; + +struct EMRFORMAT { + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; +} +alias EMRFORMAT* PEMRFORMAT; + +struct EMRFRAMERGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE[1] RgnData; +} +alias EMRFRAMERGN* PEMRFRAMERGN; + +struct EMRGDICOMMENT { + EMR emr; + DWORD cbData; + BYTE[1] Data; +} +alias EMRGDICOMMENT* PEMRGDICOMMENT; + +struct EMRINVERTRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE[1] RgnData; +} +alias EMRINVERTRGN* PEMRINVERTRGN; +alias TypeDef!(EMRINVERTRGN) EMRPAINTRGN; +alias EMRPAINTRGN* PEMRPAINTRGN; + +struct EMRLINETO { + EMR emr; + POINTL ptl; +} +alias EMRLINETO* PEMRLINETO; +alias TypeDef!(EMRLINETO) EMRMOVETOEX; +alias EMRMOVETOEX* 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* PEMRMASKBLT; + +struct EMRMODIFYWORLDTRANSFORM { + EMR emr; + XFORM xform; + DWORD iMode; +} +alias EMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM; + +struct EMROFFSETCLIPRGN { + EMR emr; + POINTL ptlOffset; +} +alias EMROFFSETCLIPRGN* PEMROFFSETCLIPRGN; + +struct EMRPLGBLT { + EMR emr; + RECTL rclBounds; + POINTL[3] 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* PEMRPLGBLT; + +struct EMRPOLYDRAW { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL[1] aptl; + BYTE[1] abTypes; +} +alias EMRPOLYDRAW* PEMRPOLYDRAW; + +struct EMRPOLYDRAW16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS[1] apts; + BYTE[1] abTypes; +} +alias EMRPOLYDRAW16* PEMRPOLYDRAW16; + +struct EMRPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL[1] aptl; +} +alias EMRPOLYLINE* PEMRPOLYLINE; +alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIER; +alias EMRPOLYBEZIER* PEMRPOLYBEZIER; +alias TypeDef!(EMRPOLYLINE) EMRPOLYGON; +alias EMRPOLYGON* PEMRPOLYGON; +alias TypeDef!(EMRPOLYLINE) EMRPOLYBEZIERTO; +alias EMRPOLYBEZIERTO* PEMRPOLYBEZIERTO; +alias TypeDef!(EMRPOLYLINE) EMRPOLYLINETO; +alias EMRPOLYLINETO* PEMRPOLYLINETO; + +struct EMRPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS[1] apts; +} +alias EMRPOLYLINE16* PEMRPOLYLINE16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIER16; +alias EMRPOLYBEZIER16* PEMRPOLYBEZIER16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYGON16; +alias EMRPOLYGON16* PEMRPOLYGON16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYBEZIERTO16; +alias EMRPOLYBEZIERTO16* PEMRPOLYBEZIERTO16; +alias TypeDef!(EMRPOLYLINE16) EMRPOLYLINETO16; +alias EMRPOLYLINETO16* PEMRPOLYLINETO16; + +struct EMRPOLYPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD[1] aPolyCounts; + POINTL[1] aptl; +} +alias EMRPOLYPOLYLINE* PEMRPOLYPOLYLINE; +alias TypeDef!(EMRPOLYPOLYLINE) EMRPOLYPOLYGON; +alias EMRPOLYPOLYGON* PEMRPOLYPOLYGON; + +struct EMRPOLYPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD[1] aPolyCounts; + POINTS[1] apts; +} +alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16; +alias TypeDef!(EMRPOLYPOLYLINE16) EMRPOLYPOLYGON16; +alias EMRPOLYPOLYGON16* PEMRPOLYPOLYGON16; + +struct EMRPOLYTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT[1] aemrtext; +} +alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA; +alias TypeDef!(EMRPOLYTEXTOUTA) EMRPOLYTEXTOUTW; +alias EMRPOLYTEXTOUTW* PEMRPOLYTEXTOUTW; + +struct EMRRESIZEPALETTE { + EMR emr; + DWORD ihPal; + DWORD cEntries; +} +alias EMRRESIZEPALETTE* PEMRRESIZEPALETTE; + +struct EMRRESTOREDC { + EMR emr; + LONG iRelative; +} +alias EMRRESTOREDC* PEMRRESTOREDC; + +struct EMRROUNDRECT { + EMR emr; + RECTL rclBox; + SIZEL szlCorner; +} +alias EMRROUNDRECT* PEMRROUNDRECT; + +struct EMRSCALEVIEWPORTEXTEX { + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; +} +alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX; +alias TypeDef!(EMRSCALEVIEWPORTEXTEX) EMRSCALEWINDOWEXTEX; +alias EMRSCALEWINDOWEXTEX* PEMRSCALEWINDOWEXTEX; + +struct EMRSELECTOBJECT { + EMR emr; + DWORD ihObject; +} +alias EMRSELECTOBJECT* PEMRSELECTOBJECT; +alias TypeDef!(EMRSELECTOBJECT) EMRDELETEOBJECT; +alias EMRDELETEOBJECT* PEMRDELETEOBJECT; + +struct EMRSELECTPALETTE { + EMR emr; + DWORD ihPal; +} +alias EMRSELECTPALETTE* PEMRSELECTPALETTE; + +struct EMRSETARCDIRECTION { + EMR emr; + DWORD iArcDirection; +} +alias EMRSETARCDIRECTION* PEMRSETARCDIRECTION; + +struct EMRSETTEXTCOLOR { + EMR emr; + COLORREF crColor; +} +alias EMRSETTEXTCOLOR* PEMRSETTEXTCOLOR; +alias TypeDef!(EMRSETTEXTCOLOR) EMRSETBKCOLOR; +alias EMRSETBKCOLOR* PEMRSETBKCOLOR; + +struct EMRSETCOLORADJUSTMENT { + EMR emr; + COLORADJUSTMENT ColorAdjustment; +} +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* PEMRSETDIBITSTODEVICE; + +struct EMRSETMAPPERFLAGS { + EMR emr; + DWORD dwFlags; +} +alias EMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS; + +struct EMRSETMITERLIMIT { + EMR emr; + FLOAT eMiterLimit; +} +alias EMRSETMITERLIMIT* PEMRSETMITERLIMIT; + +struct EMRSETPALETTEENTRIES { + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY[1] aPalEntries; +} +alias EMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES; + +struct EMRSETPIXELV { + EMR emr; + POINTL ptlPixel; + COLORREF crColor; +} +alias EMRSETPIXELV* PEMRSETPIXELV; + +struct EMRSETVIEWPORTEXTEX { + EMR emr; + SIZEL szlExtent; +} +alias EMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX; +alias TypeDef!(EMRSETVIEWPORTEXTEX) EMRSETWINDOWEXTEX; +alias EMRSETWINDOWEXTEX* PEMRSETWINDOWEXTEX; + +struct EMRSETVIEWPORTORGEX { + EMR emr; + POINTL ptlOrigin; +} +alias EMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX; +alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETWINDOWORGEX; +alias EMRSETWINDOWORGEX* PEMRSETWINDOWORGEX; +alias TypeDef!(EMRSETVIEWPORTORGEX) EMRSETBRUSHORGEX; +alias EMRSETBRUSHORGEX* PEMRSETBRUSHORGEX; + +struct EMRSETWORLDTRANSFORM { + EMR emr; + XFORM xform; +} +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* 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* PEMRSTRETCHDIBITS; + +struct EMRABORTPATH { + EMR emr; +} +alias EMRABORTPATH* PEMRABORTPATH; +alias TypeDef!(EMRABORTPATH) EMRBEGINPATH; +alias EMRBEGINPATH* PEMRBEGINPATH; +alias TypeDef!(EMRABORTPATH) EMRENDPATH; +alias EMRENDPATH* PEMRENDPATH; +alias TypeDef!(EMRABORTPATH) EMRCLOSEFIGURE; +alias EMRCLOSEFIGURE* PEMRCLOSEFIGURE; +alias TypeDef!(EMRABORTPATH) EMRFLATTENPATH; +alias EMRFLATTENPATH* PEMRFLATTENPATH; +alias TypeDef!(EMRABORTPATH) EMRWIDENPATH; +alias EMRWIDENPATH* PEMRWIDENPATH; +alias TypeDef!(EMRABORTPATH) EMRSETMETARGN; +alias EMRSETMETARGN* PEMRSETMETARGN; +alias TypeDef!(EMRABORTPATH) EMRSAVEDC; +alias EMRSAVEDC* PEMRSAVEDC; +alias TypeDef!(EMRABORTPATH) EMRREALIZEPALETTE; +alias EMRREALIZEPALETTE* PEMRREALIZEPALETTE; + +struct EMRSELECTCLIPPATH { + EMR emr; + DWORD iMode; +} +alias EMRSELECTCLIPPATH* PEMRSELECTCLIPPATH; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETBKMODE; +alias EMRSETBKMODE* PEMRSETBKMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETMAPMODE; +alias EMRSETMAPMODE* PEMRSETMAPMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETPOLYFILLMODE; +alias EMRSETPOLYFILLMODE* PEMRSETPOLYFILLMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETROP2; +alias EMRSETROP2* PEMRSETROP2; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETSTRETCHBLTMODE; +alias EMRSETSTRETCHBLTMODE* PEMRSETSTRETCHBLTMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETICMMODE; +alias EMRSETICMMODE* PEMRSETICMMODE; +alias TypeDef!(EMRSELECTCLIPPATH) EMRSETTEXTALIGN; +alias EMRSETTEXTALIGN* PEMRSETTEXTALIGN; +alias TypeDef!(EMRSELECTCLIPPATH) EMRENABLEICM; +alias EMRENABLEICM* PEMRENABLEICM; +static if (_WIN32_WINNT >= 0x500) { + alias TypeDef!(EMRSELECTCLIPPATH) EMRSETLAYOUT; + alias EMRSETLAYOUT* PEMRSETLAYOUT; +} + +align(2): +struct METAHEADER { + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; +} +alias METAHEADER* PMETAHEADER; +alias METAHEADER* LPMETAHEADER; + +align: + +struct ENHMETAHEADER { + DWORD iType = EMR_HEADER; + DWORD nSize = ENHMETAHEADER.sizeof; + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature = ENHMETA_SIGNATURE; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + WORD sReserved; + DWORD nDescription; + DWORD offDescription; + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; + DWORD cbPixelFormat; + DWORD offPixelFormat; + DWORD bOpenGL; + static if (_WIN32_WINNT >= 0x500) { + SIZEL szlMicrometers; + } +} +alias ENHMETAHEADER* PENHMETAHEADER, LPENHMETAHEADER; + +struct METARECORD { + DWORD rdSize; + WORD rdFunction; + WORD[1] rdParm; +} +alias METARECORD* PMETARECORD; +alias METARECORD* LPMETARECORD; + +struct ENHMETARECORD { + DWORD iType; + DWORD nSize; + DWORD[1] dParm; +} +alias ENHMETARECORD* PENHMETARECORD, LPENHMETARECORD; + +// --- + +struct HANDLETABLE { + HGDIOBJ[1] objectHandle; +} +alias HANDLETABLE* PHANDLETABLE, LPHANDLETABLE; + +struct TEXTMETRICA { + 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; +} +alias TEXTMETRICA* PTEXTMETRICA, NPTEXTMETRICA, LPTEXTMETRICA; + +struct TEXTMETRICW { + 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; +} +alias TEXTMETRICW* PTEXTMETRICW, NPTEXTMETRICW, LPTEXTMETRICW; + +struct RGNDATAHEADER { + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; +} +alias RGNDATAHEADER* PRGNDATAHEADER; + +struct RGNDATA { + RGNDATAHEADER rdh; + char[1] Buffer; +} +alias RGNDATA* PRGNDATA, NPRGNDATA, LPRGNDATA; + +/* for GetRandomRgn */ +const SYSRGN=4; +struct GCP_RESULTSA { + DWORD lStructSize; + LPSTR lpOutString; + UINT* lpOrder; + INT* lpDx; + INT* lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} +alias GCP_RESULTSA* LPGCP_RESULTSA; + +struct GCP_RESULTSW { + DWORD lStructSize; + LPWSTR lpOutString; + UINT* lpOrder; + INT* lpDx; + INT* lpCaretPos; + LPWSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + UINT nMaxFit; +} +alias GCP_RESULTSW* LPGCP_RESULTSW; + +struct GLYPHMETRICS { + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; +} +alias GLYPHMETRICS* LPGLYPHMETRICS; + +static if (_WIN32_WINNT >= 0x500) { + struct WCRANGE { + WCHAR wcLow; + USHORT cGlyphs; + } + alias WCRANGE* PWCRANGE, LPWCRANGE; + + struct GLYPHSET { + DWORD cbThis; + DWORD flAccel; + DWORD cGlyphsSupported; + DWORD cRanges; + WCRANGE[1] ranges; + } + alias GLYPHSET* PGLYPHSET, LPGLYPHSET; + + const DWORD GS_8BIT_INDICES = 0x00000001; +} + +struct KERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; +} +alias KERNINGPAIR* LPKERNINGPAIR; + +struct FIXED { + WORD fract; + short value; +} + +struct MAT2 { + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; +} +alias MAT2* LPMAT2; + +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; +} +alias OUTLINETEXTMETRICA* POUTLINETEXTMETRICA, NPOUTLINETEXTMETRICA, LPOUTLINETEXTMETRICA; + +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 OUTLINETEXTMETRICW* POUTLINETEXTMETRICW, NPOUTLINETEXTMETRICW, LPOUTLINETEXTMETRICW; + +struct RASTERIZER_STATUS { + short nSize; + short wFlags; + short nLanguageID; +} +alias RASTERIZER_STATUS* LPRASTERIZER_STATUS; + +struct POLYTEXTA { + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int* pdx; +} +alias POLYTEXTA* PPOLYTEXTA, NPPOLYTEXTA, LPPOLYTEXTA; + +struct POLYTEXTW { + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int* pdx; +} +alias POLYTEXTW* PPOLYTEXTW, NPPOLYTEXTW, LPPOLYTEXTW; + +struct PIXELFORMATDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerType; + BYTE bReserved; + DWORD dwLayerMask; + DWORD dwVisibleMask; + DWORD dwDamageMask; +} +alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR, LPPIXELFORMATDESCRIPTOR; + +struct METAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; +} +alias METAFILEPICT* LPMETAFILEPICT; + +struct LOCALESIGNATURE { + DWORD[4] lsUsb; + DWORD[2] lsCsbDefault; + DWORD[2] lsCsbSupported; +} +alias LOCALESIGNATURE* PLOCALESIGNATURE, LPLOCALESIGNATURE; + +alias LONG LCSTYPE; /* What this for? */ + +align(4): +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; +} +alias NEWTEXTMETRICA* PNEWTEXTMETRICA, NPNEWTEXTMETRICA, LPNEWTEXTMETRICA; + +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; +} +alias NEWTEXTMETRICW* PNEWTEXTMETRICW, NPNEWTEXTMETRICW, LPNEWTEXTMETRICW; + +align: +struct NEWTEXTMETRICEXA { + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; +} + +struct NEWTEXTMETRICEXW { + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; +} + +struct PELARRAY { + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; +} +alias PELARRAY* PPELARRAY, NPPELARRAY, LPPELARRAY; + +struct ENUMLOGFONTA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; +} +alias ENUMLOGFONTA* LPENUMLOGFONTA; + +struct ENUMLOGFONTW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; +} +alias ENUMLOGFONTW* LPENUMLOGFONTW; + +struct ENUMLOGFONTEXA { + LOGFONTA elfLogFont; + BYTE[LF_FULLFACESIZE] elfFullName; + BYTE[LF_FACESIZE] elfStyle; + BYTE[LF_FACESIZE] elfScript; +} +alias ENUMLOGFONTEXA* LPENUMLOGFONTEXA; + +struct ENUMLOGFONTEXW { + LOGFONTW elfLogFont; + WCHAR[LF_FULLFACESIZE] elfFullName; + WCHAR[LF_FACESIZE] elfStyle; + WCHAR[LF_FACESIZE] elfScript; +} +alias ENUMLOGFONTEXW* LPENUMLOGFONTEXW; + +struct POINTFX { + FIXED x; + FIXED y; +} +alias POINTFX* LPPOINTFX; + +struct TTPOLYCURVE { + WORD wType; + WORD cpfx; + POINTFX[1] apfx; +} +alias TTPOLYCURVE* LPTTPOLYCURVE; + +struct TTPOLYGONHEADER { + DWORD cb; + DWORD dwType; + POINTFX pfxStart; +} +alias TTPOLYGONHEADER* LPTTPOLYGONHEADER; + +struct POINTFLOAT { + FLOAT x; + FLOAT y; +} +alias POINTFLOAT* PPOINTFLOAT; + +struct GLYPHMETRICSFLOAT { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; +} +alias GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT, LPGLYPHMETRICSFLOAT; + +struct LAYERPLANEDESCRIPTOR { + WORD nSize; + WORD nVersion; + DWORD dwFlags; + BYTE iPixelType; + BYTE cColorBits; + BYTE cRedBits; + BYTE cRedShift; + BYTE cGreenBits; + BYTE cGreenShift; + BYTE cBlueBits; + BYTE cBlueShift; + BYTE cAlphaBits; + BYTE cAlphaShift; + BYTE cAccumBits; + BYTE cAccumRedBits; + BYTE cAccumGreenBits; + BYTE cAccumBlueBits; + BYTE cAccumAlphaBits; + BYTE cDepthBits; + BYTE cStencilBits; + BYTE cAuxBuffers; + BYTE iLayerPlane; + BYTE bReserved; + COLORREF crTransparent; +} +alias LAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR, LPLAYERPLANEDESCRIPTOR; + +struct BLENDFUNCTION { + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; +} +alias BLENDFUNCTION* PBLENDFUNCTION, LPBLENDFUNCTION; + +const MM_MAX_NUMAXES = 16; + +struct DESIGNVECTOR { + DWORD dvReserved; + DWORD dvNumAxes; + LONG[MM_MAX_NUMAXES] dvValues; +} +alias DESIGNVECTOR* PDESIGNVECTOR, LPDESIGNVECTOR; +const STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8); +const STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8); + +static if (_WIN32_WINNT >= 0x500) { + + const MM_MAX_AXES_NAMELEN = 16; + + struct AXISINFOA { + LONG axMinValue; + LONG axMaxValue; + BYTE[MM_MAX_AXES_NAMELEN] axAxisName; + } + alias AXISINFOA* PAXISINFOA, LPAXISINFOA; + + struct AXISINFOW { + LONG axMinValue; + LONG axMaxValue; + WCHAR[MM_MAX_AXES_NAMELEN] axAxisName; + } + alias AXISINFOW* PAXISINFOW, LPAXISINFOW; + + version (Unicode) { + alias AXISINFOW AXISINFO; + alias PAXISINFOW PAXISINFO; + alias LPAXISINFOW LPAXISINFO; + } + else { + alias AXISINFOA AXISINFO; + alias PAXISINFOA PAXISINFO; + alias LPAXISINFOA LPAXISINFO; + } + + struct AXESLISTA { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOA[MM_MAX_NUMAXES] axlAxisInfo; + } + alias AXESLISTA* PAXESLISTA, LPAXESLISTA; + + struct AXESLISTW { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOW[MM_MAX_NUMAXES] axlAxisInfo; + } + alias AXESLISTW* PAXESLISTW, LPAXESLISTW; + + version (Unicode) { + alias AXESLISTW AXESLIST; + alias PAXESLISTW PAXESLIST; + alias LPAXESLISTW LPAXESLIST; + } + else { + alias AXESLISTA AXESLIST; + alias PAXESLISTA PAXESLIST; + alias LPAXESLISTA LPAXESLIST; + } + + struct ENUMLOGFONTEXDVA { + ENUMLOGFONTEXA elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } + alias ENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA, LPENUMLOGFONTEXDVA; + + struct ENUMLOGFONTEXDVW { + ENUMLOGFONTEXW elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; + } + alias ENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW, LPENUMLOGFONTEXDVW; + + HFONT CreateFontIndirectExA(const(ENUMLOGFONTEXDVA)*); + HFONT CreateFontIndirectExW(const(ENUMLOGFONTEXDVW)*); + version (Unicode) + alias CreateFontIndirectExW CreateFontIndirectEx; + else + alias CreateFontIndirectExA CreateFontIndirectEx; + + struct ENUMTEXTMETRICA { + NEWTEXTMETRICEXA etmNewTextMetricEx; + AXESLISTA etmAxesList; + } + alias ENUMTEXTMETRICA* PENUMTEXTMETRICA, LPENUMTEXTMETRICA; + + struct ENUMTEXTMETRICW { + NEWTEXTMETRICEXW etmNewTextMetricEx; + AXESLISTW etmAxesList; + } + alias ENUMTEXTMETRICW* PENUMTEXTMETRICW, LPENUMTEXTMETRICW; + + version (Unicode) { + alias ENUMTEXTMETRICW ENUMTEXTMETRIC; + alias PENUMTEXTMETRICW PENUMTEXTMETRIC; + alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; + } + else { + alias ENUMTEXTMETRICA ENUMTEXTMETRIC; + alias PENUMTEXTMETRICA PENUMTEXTMETRIC; + alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; + } +} /* _WIN32_WINNT >= 0x500 */ + +struct GRADIENT_TRIANGLE { + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; +} +alias GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE, LPGRADIENT_TRIANGLE; + +struct GRADIENT_RECT { + ULONG UpperLeft; + ULONG LowerRight; +} +alias GRADIENT_RECT* PGRADIENT_RECT, LPGRADIENT_RECT; + +struct DISPLAY_DEVICEA { + DWORD cb; + CHAR[32] DeviceName; + CHAR[128] DeviceString; + DWORD StateFlags; + CHAR[128] DeviceID; + CHAR[128] DeviceKey; +} +alias DISPLAY_DEVICEA* PDISPLAY_DEVICEA, LPDISPLAY_DEVICEA; + +struct DISPLAY_DEVICEW { + DWORD cb; + WCHAR[32] DeviceName; + WCHAR[128] DeviceString; + DWORD StateFlags; + WCHAR[128] DeviceID; + WCHAR[128] DeviceKey; +} +alias DISPLAY_DEVICEW* PDISPLAY_DEVICEW, LPDISPLAY_DEVICEW; + +struct DRAWPATRECT { + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; +} +alias DRAWPATRECT* PDRAWPATRECT; + +// --------- +// Callbacks + +alias BOOL function (HDC, int) ABORTPROC; +alias int function (HDC, HANDLETABLE*, METARECORD*, int, LPARAM) MFENUMPROC; +alias int function (HDC, HANDLETABLE*, const(ENHMETARECORD)*, int, LPARAM) ENHMFENUMPROC; +alias int function (const(LOGFONTA)*, const(TEXTMETRICA)*, DWORD, LPARAM) FONTENUMPROCA, OLDFONTENUMPROCA; +alias int function (const(LOGFONTW)*, const(TEXTMETRICW)*, DWORD, LPARAM) FONTENUMPROCW, OLDFONTENUMPROCW; +alias int function (LPSTR, LPARAM) ICMENUMPROCA; +alias int function (LPWSTR, LPARAM) ICMENUMPROCW; +alias void function (LPVOID, LPARAM) GOBJENUMPROC; +alias void function (int, int, LPARAM) LINEDDAPROC; +alias UINT function (HWND, HMODULE, LPDEVMODEA, LPSTR, LPSTR, LPDEVMODEA, LPSTR, UINT) LPFNDEVMODE; +alias DWORD function (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODEA) LPFNDEVCAPS; + + +// --------- +// C Macros. +// FIXME: +//POINTS MAKEPOINTS(DWORD dwValue) #define MAKEPOINTS(l) (*((POINTS*)&(l))) + +DWORD MAKEROP4(DWORD fore, DWORD back) { + return ((back<<8) & 0xFF000000) | (fore); +} + +COLORREF CMYK(BYTE c, BYTE m, BYTE y, BYTE k) { + return cast(COLORREF)(k | (y << 8) | (m << 16) | (c << 24)); +} + +BYTE GetCValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 24); +} + +BYTE GetMValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 16); +} + +BYTE GetYValue(COLORREF cmyk) { + return cast(BYTE)(cmyk >> 8); +} + +BYTE GetKValue(COLORREF cmyk) { + return cast(BYTE)cmyk; +} + +COLORREF RGB(BYTE r, BYTE g, BYTE b) { + return cast(COLORREF)(r | (g << 8) | (b << 16)); +} + +BYTE GetRValue(COLORREF c) { + return cast(BYTE)c; +} + +BYTE GetGValue(COLORREF c) { + return cast(BYTE)(c >> 8); +} + +BYTE GetBValue(COLORREF c) { + return cast(BYTE)(c >> 16); +} + +COLORREF PALETTEINDEX(WORD i) { + return 0x01000000 | cast(COLORREF) i; +} + +COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b) { + return 0x02000000|RGB(r, g, b); +} + +extern(Windows) { + int AbortDoc(HDC); + BOOL AbortPath(HDC); + int AddFontResourceA(LPCSTR); + int AddFontResourceW(LPCWSTR); + BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); + BOOL AnimatePalette(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); + BOOL Arc(HDC, int, int, int, int, int, int, int, int); + BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); + BOOL BeginPath(HDC); + BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); + BOOL CancelDC(HDC); + BOOL CheckColorsInGamut(HDC, PVOID, PVOID, DWORD); + BOOL Chord(HDC, int, int, int, int, int, int, int, int); + int ChoosePixelFormat(HDC, const(PIXELFORMATDESCRIPTOR)*); + HENHMETAFILE CloseEnhMetaFile(HDC); + BOOL CloseFigure(HDC); + HMETAFILE CloseMetaFile(HDC); + BOOL ColorMatchToTarget(HDC, HDC, DWORD); + BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); + int CombineRgn(HRGN, HRGN, HRGN, int); + BOOL CombineTransform(LPXFORM, const(XFORM)*, const(XFORM)*); + HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); + HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); + HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); + HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); + HBITMAP CreateBitmap(int, int, UINT, UINT, PCVOID); + HBITMAP CreateBitmapIndirect(const(BITMAP)*); + HBRUSH CreateBrushIndirect(const(LOGBRUSH)*); + HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); + HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); + HBITMAP CreateCompatibleBitmap(HDC, int, int); + HDC CreateCompatibleDC(HDC); + HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); + HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); + HBITMAP CreateDIBitmap(HDC, const(BITMAPINFOHEADER)*, DWORD, PCVOID, const(BITMAPINFO)*, UINT); + HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); + HBRUSH CreateDIBPatternBrushPt(PCVOID, UINT); + HBITMAP CreateDIBSection(HDC, const(BITMAPINFO)*, UINT, void**, HANDLE, DWORD); + HBITMAP CreateDiscardableBitmap(HDC, int, int); + HRGN CreateEllipticRgn(int, int, int, int); + HRGN CreateEllipticRgnIndirect(LPCRECT); + HDC CreateEnhMetaFileA(HDC, LPCSTR, LPCRECT, LPCSTR); + HDC CreateEnhMetaFileW(HDC, LPCWSTR, LPCRECT, LPCWSTR); + HFONT CreateFontA(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR); + HFONT CreateFontW(int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCWSTR); + HFONT CreateFontIndirectA(const(LOGFONTA)*); + HFONT CreateFontIndirectW(const(LOGFONTW)*); + HPALETTE CreateHalftonePalette(HDC); + HBRUSH CreateHatchBrush(int, COLORREF); + HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, const(DEVMODEA)*); + HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, const(DEVMODEW)*); + HDC CreateMetaFileA(LPCSTR); + HDC CreateMetaFileW(LPCWSTR); + HPALETTE CreatePalette(const(LOGPALETTE)*); + HBRUSH CreatePatternBrush(HBITMAP); + HPEN CreatePen(int, int, COLORREF); + HPEN CreatePenIndirect(const(LOGPEN)*); + HRGN CreatePolygonRgn(const(POINT)*, int, int); + HRGN CreatePolyPolygonRgn(const(POINT)*, const(INT)*, int, int); + HRGN CreateRectRgn(int, int, int, int); + HRGN CreateRectRgnIndirect(LPCRECT); + HRGN CreateRoundRectRgn(int, int, int, int, int, int); + BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); + BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); + HBRUSH CreateSolidBrush(COLORREF); + BOOL DeleteColorSpace(HCOLORSPACE); + BOOL DeleteDC(HDC); + BOOL DeleteEnhMetaFile(HENHMETAFILE); + BOOL DeleteMetaFile(HMETAFILE); + BOOL DeleteObject(HGDIOBJ); + int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); + DWORD DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, LPSTR, const(DEVMODEA)*); + DWORD DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, LPWSTR, const(DEVMODEW)*); + BOOL DPtoLP(HDC, LPPOINT, int); + int DrawEscape(HDC, int, int, LPCSTR); + BOOL Ellipse(HDC, int, int, int, int); + int EndDoc(HDC); + int EndPage(HDC); + BOOL EndPath(HDC); + BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, PVOID, LPCRECT); + int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); + int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); + int EnumFontFamiliesExA(HDC, PLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); + int EnumFontFamiliesExW(HDC, PLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); + int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); + int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); + int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); + int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); + BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); + int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); + BOOL EqualRgn(HRGN, HRGN); + int Escape(HDC, int, int, LPCSTR, PVOID); + int ExcludeClipRect(HDC, int, int, int, int); + int ExcludeUpdateRgn(HDC, HWND); + HPEN ExtCreatePen(DWORD, DWORD, const(LOGBRUSH)*, DWORD, const(DWORD)*); + HRGN ExtCreateRegion(const(XFORM)*, DWORD, const(RGNDATA)*); + int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); + BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); + int ExtSelectClipRgn(HDC, HRGN, int); + BOOL ExtTextOutA(HDC, int, int, UINT, LPCRECT, LPCSTR, UINT, const(INT)*); + BOOL ExtTextOutW(HDC, int, int, UINT, LPCRECT, LPCWSTR, UINT, const(INT)*); + BOOL FillPath(HDC); + int FillRect(HDC, LPCRECT, HBRUSH); + int FillRgn(HDC, HRGN, HBRUSH); + BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); + BOOL FlattenPath(HDC); + BOOL FloodFill(HDC, int, int, COLORREF); + BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); + BOOL GdiComment(HDC, UINT, const(BYTE)*); + BOOL GdiFlush(); + DWORD GdiGetBatchLimit(); + DWORD GdiSetBatchLimit(DWORD); + int GetArcDirection(HDC); + BOOL GetAspectRatioFilterEx(HDC, LPSIZE); + LONG GetBitmapBits(HBITMAP, LONG, PVOID); + BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); + COLORREF GetBkColor(HDC); + int GetBkMode(HDC); + UINT GetBoundsRect(HDC, LPRECT, UINT); + BOOL GetBrushOrgEx(HDC, LPPOINT); + BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); + BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); + BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); + BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); + DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); + DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); + BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); + BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); + BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); + BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); + int GetClipBox(HDC, LPRECT); + int GetClipRgn(HDC, HRGN); + BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); + HANDLE GetColorSpace(HDC); + HGDIOBJ GetCurrentObject(HDC, UINT); + BOOL GetCurrentPositionEx(HDC, LPPOINT); + HCURSOR GetCursor(); + BOOL GetDCOrgEx(HDC, LPPOINT); + static if (_WIN32_WINNT >= 0x500) + { + DWORD GetDCPenColor(HGDIOBJ); + COLORREF GetDCBrushColor(HGDIOBJ); + } + int GetDeviceCaps(HDC, int); + BOOL GetDeviceGammaRamp(HDC, PVOID); + UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD*); + int GetDIBits(HDC, HBITMAP, UINT, UINT, PVOID, LPBITMAPINFO, UINT); + HENHMETAFILE GetEnhMetaFileA(LPCSTR); + HENHMETAFILE GetEnhMetaFileW(LPCWSTR); + UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); + UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR); + UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR); + UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER); + UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY); + UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, DWORD, const(PIXELFORMATDESCRIPTOR)*); + DWORD GetFontData(HDC, DWORD, DWORD, PVOID, DWORD); + DWORD GetFontLanguageInfo(HDC); + DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); + DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, PVOID, const(MAT2)*); + int GetGraphicsMode(HDC); + BOOL GetICMProfileA(HDC, DWORD, LPSTR); + BOOL GetICMProfileW(HDC, DWORD, LPWSTR); + DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); + DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); + BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); + BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); + int GetMapMode(HDC); + HMETAFILE GetMetaFileA(LPCSTR); + HMETAFILE GetMetaFileW(LPCWSTR); + UINT GetMetaFileBitsEx(HMETAFILE, UINT, PVOID); + int GetMetaRgn(HDC, HRGN); + BOOL GetMiterLimit(HDC, PFLOAT); + COLORREF GetNearestColor(HDC, COLORREF); + UINT GetNearestPaletteIndex(HPALETTE, COLORREF); + int GetObjectA(HGDIOBJ, int, PVOID); + int GetObjectW(HGDIOBJ, int, PVOID); + DWORD GetObjectType(HGDIOBJ); + UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); + UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); + UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); + int GetPath(HDC, LPPOINT, PBYTE, int); + COLORREF GetPixel(HDC, int, int); + int GetPixelFormat(HDC); + int GetPolyFillMode(HDC); + BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); + int GetRandomRgn (HDC, HRGN, INT); + DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); + int GetRgnBox(HRGN, LPRECT); + int GetROP2(HDC); + HGDIOBJ GetStockObject(int); + int GetStretchBltMode(HDC); + UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); + UINT GetSystemPaletteUse(HDC); + UINT GetTextAlign(HDC); + int GetTextCharacterExtra(HDC); + int GetTextCharset(HDC); + int GetTextCharsetInfo(HDC, LPFONTSIGNATURE, DWORD); + COLORREF GetTextColor(HDC); + BOOL GetTextExtentExPointA(HDC, LPCSTR, int, int, LPINT, LPINT, LPSIZE); + BOOL GetTextExtentExPointW(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE); + BOOL GetTextExtentPointA(HDC, LPCSTR, int, LPSIZE); + BOOL GetTextExtentPointW(HDC, LPCWSTR, int, LPSIZE); + BOOL GetTextExtentPoint32A(HDC, LPCSTR, int, LPSIZE); + BOOL GetTextExtentPoint32W(HDC, LPCWSTR, int, LPSIZE); + int GetTextFaceA(HDC, int, LPSTR); + int GetTextFaceW(HDC, int, LPWSTR); + BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); + BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); + BOOL GetViewportExtEx(HDC, LPSIZE); + BOOL GetViewportOrgEx(HDC, LPPOINT); + BOOL GetWindowExtEx(HDC, LPSIZE); + BOOL GetWindowOrgEx(HDC, LPPOINT); + UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); + BOOL GetWorldTransform(HDC, LPXFORM); + int IntersectClipRect(HDC, int, int, int, int); + BOOL InvertRgn(HDC, HRGN); + BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); + BOOL LineTo(HDC, int, int); + BOOL LPtoDP(HDC, LPPOINT, int); + BOOL MaskBlt(HDC, int, int, int, int, HDC, int, int, HBITMAP, int, int, DWORD); + BOOL ModifyWorldTransform(HDC, const(XFORM)*, DWORD); + BOOL MoveToEx(HDC, int, int, LPPOINT); + int OffsetClipRgn(HDC, int, int); + int OffsetRgn(HRGN, int, int); + BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); + BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); + BOOL PaintRgn(HDC, HRGN); + BOOL PatBlt(HDC, int, int, int, int, DWORD); + HRGN PathToRegion(HDC); + BOOL Pie(HDC, int, int, int, int, int, int, int, int); + BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, LPCRECT); + BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, const(ENHMETARECORD)*, UINT); + BOOL PlayMetaFile(HDC, HMETAFILE); + BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); + BOOL PlgBlt(HDC, const(POINT)*, HDC, int, int, int, int, HBITMAP, int, int); + BOOL PolyBezier(HDC, const(POINT)*, DWORD); + BOOL PolyBezierTo(HDC, const(POINT)*, DWORD); + BOOL PolyDraw(HDC, const(POINT)*, const(BYTE)*, int); + BOOL Polygon(HDC, const(POINT)*, int); + BOOL Polyline(HDC, const(POINT)*, int); + BOOL PolylineTo(HDC, const(POINT)*, DWORD); + BOOL PolyPolygon(HDC, const(POINT)*, const(INT)*, int); + BOOL PolyPolyline(HDC, const(POINT)*, const(DWORD)*, DWORD); + BOOL PolyTextOutA(HDC, const(POLYTEXTA)*, int); + BOOL PolyTextOutW(HDC, const(POLYTEXTW)*, int); + BOOL PtInRegion(HRGN, int, int); + BOOL PtVisible(HDC, int, int); + UINT RealizePalette(HDC); + BOOL Rectangle(HDC, int, int, int, int); + BOOL RectInRegion(HRGN, LPCRECT); + BOOL RectVisible(HDC, LPCRECT); + BOOL RemoveFontResourceA(LPCSTR); + BOOL RemoveFontResourceW(LPCWSTR); + + HDC ResetDCA(HDC, const(DEVMODEA)*); + HDC ResetDCW(HDC, const(DEVMODEW)*); + BOOL ResizePalette(HPALETTE, UINT); + BOOL RestoreDC(HDC, int); + BOOL RoundRect(HDC, int, int, int, int, int, int); + int SaveDC(HDC); + BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); + BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); + BOOL SelectClipPath(HDC, int); + int SelectClipRgn(HDC, HRGN); + HGDIOBJ SelectObject(HDC, HGDIOBJ); + HPALETTE SelectPalette(HDC, HPALETTE, BOOL); + int SetAbortProc(HDC, ABORTPROC); + int SetArcDirection(HDC, int); + LONG SetBitmapBits(HBITMAP, DWORD, PCVOID); + BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); + COLORREF SetBkColor(HDC, COLORREF); + int SetBkMode(HDC, int); + UINT SetBoundsRect(HDC, LPCRECT, UINT); + BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); + BOOL SetColorAdjustment(HDC, const(COLORADJUSTMENT)*); + BOOL SetColorSpace(HDC, HCOLORSPACE); + + BOOL SetDeviceGammaRamp(HDC, PVOID); + UINT SetDIBColorTable(HDC, UINT, UINT, const(RGBQUAD)*); + int SetDIBits(HDC, HBITMAP, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); + int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, UINT, UINT, PCVOID, const(BITMAPINFO)*, UINT); + HENHMETAFILE SetEnhMetaFileBits(UINT, const(BYTE)*); + int SetGraphicsMode(HDC, int); + int SetICMMode(HDC, int); + BOOL SetICMProfileA(HDC, LPSTR); + BOOL SetICMProfileW(HDC, LPWSTR); + int SetMapMode(HDC, int); + + static if (_WIN32_WINNT >= 0x500) { + DWORD SetLayout(HDC hdc, DWORD l); + DWORD GetLayout(HDC hdc); + } + + DWORD SetMapperFlags(HDC, DWORD); + HMETAFILE SetMetaFileBitsEx(UINT, const(BYTE)*); + int SetMetaRgn(HDC); + BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); + UINT SetPaletteEntries(HPALETTE, UINT, UINT, const(PALETTEENTRY)*); + COLORREF SetPixel(HDC, int, int, COLORREF); + BOOL SetPixelFormat(HDC, int, const(PIXELFORMATDESCRIPTOR)*); + BOOL SetPixelV(HDC, int, int, COLORREF); + int SetPolyFillMode(HDC, int); + BOOL SetRectRgn(HRGN, int, int, int, int); + int SetROP2(HDC, int); + int SetStretchBltMode(HDC, int); + UINT SetSystemPaletteUse(HDC, UINT); + UINT SetTextAlign(HDC, UINT); + int SetTextCharacterExtra(HDC, int); + COLORREF SetTextColor(HDC, COLORREF); + BOOL SetTextJustification(HDC, int, int); + BOOL SetViewportExtEx(HDC, int, int, LPSIZE); + BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); + BOOL SetWindowExtEx(HDC, int, int, LPSIZE); + BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); + HENHMETAFILE SetWinMetaFileBits(UINT, const(BYTE)*, HDC, const(METAFILEPICT)*); + BOOL SetWorldTransform(HDC, const(XFORM)*); + int StartDocA(HDC, const(DOCINFOA)*); + int StartDocW(HDC, const(DOCINFOW)*); + int StartPage(HDC); + BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); + int StretchDIBits(HDC, int, int, int, int, int, int, int, int, const(VOID)* , const(BITMAPINFO)* , UINT, DWORD); + BOOL StrokeAndFillPath(HDC); + BOOL StrokePath(HDC); + BOOL SwapBuffers(HDC); + BOOL TextOutA(HDC, int, int, LPCSTR, int); + BOOL TextOutW(HDC, int, int, LPCWSTR, int); + BOOL TranslateCharsetInfo(PDWORD, LPCHARSETINFO, DWORD); + BOOL UnrealizeObject(HGDIOBJ); + BOOL UpdateColors(HDC); + BOOL UpdateICMRegKeyA(DWORD, DWORD, LPSTR, UINT); + BOOL UpdateICMRegKeyW(DWORD, DWORD, LPWSTR, UINT); + BOOL WidenPath(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*); + PROC wglGetProcAddress(LPCSTR); + BOOL wglMakeCurrent(HDC, HGLRC); + BOOL wglRealizeLayerPalette(HDC, int, BOOL); + int wglSetLayerPaletteEntries(HDC, int, int, int, const(COLORREF)*); + BOOL wglShareLists(HGLRC, HGLRC); + BOOL wglSwapLayerBuffers(HDC, UINT); + BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); + BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); + BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); + BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT); + + static if (_WIN32_WINNT >= 0x500) { + alias WGLSWAP* PWGLSWAP; + struct WGLSWAP { + HDC hdc; + UINT uiFlags; + } + const WGL_SWAPMULTIPLE_MAX = 16; + DWORD wglSwapMultipleBuffers(UINT, WGLSWAP*); +} + +static if (_WIN32_WINNT >= 0x500) { + BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); + BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); + BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); + } + + static if (_WIN32_WINNT >= 0x500) { + COLORREF SetDCBrushColor(HDC, COLORREF); + COLORREF SetDCPenColor(HDC, COLORREF); + HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID, DWORD*); + int AddFontResourceExA(LPCSTR, DWORD, PVOID); + int AddFontResourceExW(LPCWSTR, DWORD, PVOID); + BOOL RemoveFontMemResourceEx(HANDLE); + BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); + BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); + DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); + DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); + DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); + BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); + BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); + BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); + BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); + } +} // extern (Windows) + +version(Unicode) { + alias WCHAR BCHAR; + alias DOCINFOW DOCINFO; + alias LOGFONTW LOGFONT; + + alias TEXTMETRICW TEXTMETRIC; + alias NPTEXTMETRICW NPTEXTMETRIC; + alias ICMENUMPROCW ICMENUMPROC; + alias FONTENUMPROCW FONTENUMPROC; + alias DEVMODEW DEVMODE; + + alias EXTLOGFONTW EXTLOGFONT; + alias GCP_RESULTSW GCP_RESULTS; + alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; + alias POLYTEXTW POLYTEXT; + alias LOGCOLORSPACEW LOGCOLORSPACE; + alias NEWTEXTMETRICW NEWTEXTMETRIC; + alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; + alias ENUMLOGFONTW ENUMLOGFONT; + alias ENUMLOGFONTEXW ENUMLOGFONTEX; + alias DISPLAY_DEVICEW DISPLAY_DEVICE; + alias AddFontResourceW AddFontResource; + + alias CopyEnhMetaFileW CopyEnhMetaFile; + alias CopyMetaFileW CopyMetaFile; + alias CreateColorSpaceW CreateColorSpace; + alias CreateDCW CreateDC; + alias CreateEnhMetaFileW CreateEnhMetaFile; + alias CreateFontW CreateFont; + alias CreateFontIndirectW CreateFontIndirect; + alias CreateICW CreateIC; + alias CreateMetaFileW CreateMetaFile; + alias CreateScalableFontResourceW CreateScalableFontResource; + alias DeviceCapabilitiesW DeviceCapabilities; + alias EnumFontFamiliesW EnumFontFamilies; + alias EnumFontFamiliesExW EnumFontFamiliesEx; + alias EnumFontsW EnumFonts; + alias EnumICMProfilesW EnumICMProfiles; + alias ExtTextOutW ExtTextOut; + alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; + alias GetCharABCWidthsW GetCharABCWidths; + alias GetCharacterPlacementW GetCharacterPlacement; + alias GetCharWidth32W GetCharWidth32; + alias GetCharWidthFloatW GetCharWidthFloat; + alias GetCharWidthW GetCharWidth; + alias GetEnhMetaFileW GetEnhMetaFile; + alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; + alias GetGlyphOutlineW GetGlyphOutline; + alias GetICMProfileW GetICMProfile; + alias GetKerningPairsW GetKerningPairs; + alias GetLogColorSpaceW GetLogColorSpace; + alias GetMetaFileW GetMetaFile; + alias GetObjectW GetObject; + alias GetOutlineTextMetricsW GetOutlineTextMetrics; + alias GetTextExtentPointW GetTextExtentPoint; + alias GetTextExtentExPointW GetTextExtentExPoint; + alias GetTextExtentPoint32W GetTextExtentPoint32; + alias GetTextFaceW GetTextFace; + alias GetTextMetricsW GetTextMetrics; + alias PolyTextOutW PolyTextOut; + alias RemoveFontResourceW RemoveFontResource; + + alias ResetDCW ResetDC; + alias SetICMProfileW SetICMProfile; + alias StartDocW StartDoc; + alias TextOutW TextOut; + alias UpdateICMRegKeyW UpdateICMRegKey; + alias wglUseFontBitmapsW wglUseFontBitmaps; + alias wglUseFontOutlinesW wglUseFontOutlines; + static if (_WIN32_WINNT >= 0x500) { + alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; + alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; + alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; + alias AddFontResourceExW AddFontResourceEx; + alias RemoveFontResourceExW RemoveFontResourceEx; + alias GetGlyphIndicesW GetGlyphIndices; + } +} else { /* non-unicode build */ + alias BYTE BCHAR; + alias DOCINFOA DOCINFO; + alias LOGFONTA LOGFONT; + alias TEXTMETRICA TEXTMETRIC; + alias NPTEXTMETRICA NPTEXTMETRIC; + alias ICMENUMPROCA ICMENUMPROC; + alias FONTENUMPROCA FONTENUMPROC; + alias DEVMODEA DEVMODE; + alias EXTLOGFONTA EXTLOGFONT; + alias GCP_RESULTSA GCP_RESULTS; + alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; + alias POLYTEXTA POLYTEXT; + alias LOGCOLORSPACEA LOGCOLORSPACE; + alias NEWTEXTMETRICA NEWTEXTMETRIC; + alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; + alias ENUMLOGFONTA ENUMLOGFONT; + alias ENUMLOGFONTEXA ENUMLOGFONTEX; + alias DISPLAY_DEVICEA DISPLAY_DEVICE; + + alias AddFontResourceA AddFontResource; + alias CopyEnhMetaFileA CopyEnhMetaFile; + alias CopyMetaFileA CopyMetaFile; + alias CreateColorSpaceA CreateColorSpace; + alias CreateDCA CreateDC; + alias CreateEnhMetaFileA CreateEnhMetaFile; + alias CreateFontA CreateFont; + alias CreateFontIndirectA CreateFontIndirect; + alias CreateICA CreateIC; + alias CreateMetaFileA CreateMetaFile; + alias CreateScalableFontResourceA CreateScalableFontResource; + alias DeviceCapabilitiesA DeviceCapabilities; + alias EnumFontFamiliesA EnumFontFamilies; + alias EnumFontFamiliesExA EnumFontFamiliesEx; + alias EnumFontsA EnumFonts; + alias EnumICMProfilesA EnumICMProfiles; + alias ExtTextOutA ExtTextOut; + alias GetCharWidthFloatA GetCharWidthFloat; + alias GetCharWidthA GetCharWidth; + alias GetCharacterPlacementA GetCharacterPlacement; + alias GetCharABCWidthsA GetCharABCWidths; + alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; + alias GetCharWidth32A GetCharWidth32; + alias GetEnhMetaFileA GetEnhMetaFile; + alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; + alias GetGlyphOutlineA GetGlyphOutline; + alias GetICMProfileA GetICMProfile; + alias GetKerningPairsA GetKerningPairs; + alias GetLogColorSpaceA GetLogColorSpace; + alias GetMetaFileA GetMetaFile; + alias GetObjectA GetObject; + alias GetOutlineTextMetricsA GetOutlineTextMetrics; + alias GetTextExtentPointA GetTextExtentPoint; + alias GetTextExtentExPointA GetTextExtentExPoint; + alias GetTextExtentPoint32A GetTextExtentPoint32; + alias GetTextFaceA GetTextFace; + alias GetTextMetricsA GetTextMetrics; + alias PolyTextOutA PolyTextOut; + alias RemoveFontResourceA RemoveFontResource; + alias ResetDCA ResetDC; + alias SetICMProfileA SetICMProfile; + alias StartDocA StartDoc; + alias TextOutA TextOut; + alias UpdateICMRegKeyA UpdateICMRegKey; + alias wglUseFontBitmapsA wglUseFontBitmaps; + alias wglUseFontOutlinesA wglUseFontOutlines; + static if (_WIN32_WINNT >= 0x500) { + alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; + alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; + alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; + alias AddFontResourceExA AddFontResourceEx; + alias RemoveFontResourceExA RemoveFontResourceEx; + alias GetGlyphIndicesA GetGlyphIndices; + } +} + +// Common to both ASCII & UNICODE +alias DOCINFO* LPDOCINFO; +alias LOGFONT* PLOGFONT, NPLOGFONT, LPLOGFONT; +alias TEXTMETRIC* PTEXTMETRIC, LPTEXTMETRIC; +alias DEVMODE* PDEVMODE, NPDEVMODE, LPDEVMODE; +alias EXTLOGFONT* PEXTLOGFONT, NPEXTLOGFONT, LPEXTLOGFONT; +alias GCP_RESULTS* LPGCP_RESULTS; +alias OUTLINETEXTMETRIC* POUTLINETEXTMETRIC, NPOUTLINETEXTMETRIC, LPOUTLINETEXTMETRIC; +alias POLYTEXT* PPOLYTEXT, NPPOLYTEXT, LPPOLYTEXT; +alias LOGCOLORSPACE* LPLOGCOLORSPACE; +alias NEWTEXTMETRIC* PNEWTEXTMETRIC, NPNEWTEXTMETRIC, LPNEWTEXTMETRIC; +alias ENUMLOGFONT* LPENUMLOGFONT; +alias ENUMLOGFONTEX* LPENUMLOGFONTEX; +alias DISPLAY_DEVICE* PDISPLAY_DEVICE, LPDISPLAY_DEVICE; ADDED src/win32/winhttp.d Index: src/win32/winhttp.d ================================================================== --- src/win32/winhttp.d +++ src/win32/winhttp.d @@ -0,0 +1,844 @@ +/***********************************************************************\ +* winhttp.d * +* * +* Windows API header module * +* * +* Translated from Windows SDK Headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winhttp; +pragma(lib, "winhttp"); +// FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear +// FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly + +import win32.w32api; +import win32.winbase; +import win32.windef; +import win32.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) + +alias HINTERNET = void*; +alias LPHINTERNET = HINTERNET*; +alias INTERNET_PORT = WORD; +alias LPINTERNET_PORT = INTERNET_PORT*; +alias INTERNET_SCHEME = int; +alias LPINTERNET_SCHEME = INTERNET_SCHEME*; + +// Protocol 'Manifests' +enum : DWORD { + INTERNET_DEFAULT_PORT = 0, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443 +} + +// WinHttpOpen() Flags: +enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; + +// WinHttpOpenRequest() Flags: +enum : DWORD { + WINHTTP_FLAG_SECURE = 0x00800000, + WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, + WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, + WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, + WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, + WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, + WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, + + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 +} + +struct WINHTTP_ASYNC_RESULT { + DWORD_PTR dwResult; + DWORD dwError; +} +alias LPWINHTTP_ASYNC_RESULT = WINHTTP_ASYNC_RESULT*; + +struct HTTP_VERSION_INFO { + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} +alias LPHTTP_VERSION_INFO = HTTP_VERSION_INFO*; + +// URL Scheme +enum : DWORD { + INTERNET_SCHEME_HTTP = 1, + INTERNET_SCHEME_HTTPS = 2, + INTERNET_SCHEME_FTP = 3, + INTERNET_SCHEME_SOCKS = 4 +} + +struct URL_COMPONENTS { + DWORD dwStructSize; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias LPURL_COMPONENTS = URL_COMPONENTS*; +alias URL_COMPONENTSW = URL_COMPONENTS; +alias LPURL_COMPONENTSW = URL_COMPONENTS*; + +struct WINHTTP_PROXY_INFO { + DWORD dwAccessType; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; +} +alias LPWINHTTP_PROXY_INFO = WINHTTP_PROXY_INFO*; +alias WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO; +alias LPWINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO*; + +struct WINHTTP_AUTOPROXY_OPTIONS { + DWORD dwFlags; + DWORD dwAutoDetectFlags; + LPCWSTR lpszAutoConfigUrl; + LPVOID lpvReserved; + DWORD dwReserved; + BOOL fAutoLogonIfChallenged; +} + +enum : DWORD { + WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, + WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, + WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, + WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, + WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, + WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, + WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, + WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, + WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, + + WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 +} + +// dwAutoDetectFlags +enum : DWORD { + WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, + WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 +} + +struct WINHTTP_CERTIFICATE_INFO { + FILETIME ftExpiry; + FILETIME ftStart; + LPWSTR lpszSubjectInfo; + LPWSTR lpszIssuerInfo; + LPWSTR lpszProtocolName; + LPWSTR lpszSignatureAlgName; + LPWSTR lpszEncryptionAlgName; + DWORD dwKeySize; +} + +// This structure is only defined #if _WS2DEF_ defined (from ) - per Windows SDK +struct WINHTTP_CONNECTION_INFO { + DWORD cbSize; + SOCKADDR_STORAGE LocalAddress; + SOCKADDR_STORAGE RemoteAddress; +} + +// WinHttpTimeFromSystemTime +enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; + +// CrackUrl, CombineUrl +enum : DWORD { + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000, + ICU_ENCODE_PERCENT = 0x00001000 +} +// WinHttpCrackUrl, WinHttpCreateUrl +enum : DWORD { + ICU_ESCAPE = 0x80000000, + ICU_ESCAPE_AUTHORITY = 0x00002000, + ICU_REJECT_USERPWD = 0x00004000 +} +enum : DWORD { + WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, + WINHTTP_ACCESS_TYPE_NO_PROXY = 1, + WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, + WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 +} +// WinHttpOpen 'prettifiers' +enum LPCWSTR WINHTTP_NO_PROXY_NAME = null; +enum LPCWSTR WINHTTP_NO_PROXY_BYPASS = null; + +enum LPVOID WINHTTP_NO_CLIENT_CERT_CONTEXT = null; + +// WinHttp{Query|Set}Option +enum : DWORD { + WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, + + WINHTTP_OPTION_CALLBACK = 1, + WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, + WINHTTP_OPTION_CONNECT_TIMEOUT = 3, + WINHTTP_OPTION_CONNECT_RETRIES = 4, + WINHTTP_OPTION_SEND_TIMEOUT = 5, + WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, + WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, + WINHTTP_OPTION_HANDLE_TYPE = 9, + WINHTTP_OPTION_READ_BUFFER_SIZE = 12, + WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, + WINHTTP_OPTION_PARENT_HANDLE = 21, + WINHTTP_OPTION_EXTENDED_ERROR = 24, + WINHTTP_OPTION_SECURITY_FLAGS = 31, + WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, + WINHTTP_OPTION_URL = 34, + WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, + WINHTTP_OPTION_PROXY = 38, + WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, + + WINHTTP_OPTION_USER_AGENT = 41, + WINHTTP_OPTION_CONTEXT_VALUE = 45, + WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, + WINHTTP_OPTION_REQUEST_PRIORITY = 58, + WINHTTP_OPTION_HTTP_VERSION = 59, + WINHTTP_OPTION_DISABLE_FEATURE = 63, + + WINHTTP_OPTION_CODEPAGE = 68, + WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, + WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, + WINHTTP_OPTION_AUTOLOGON_POLICY = 77, + WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, + WINHTTP_OPTION_ENABLE_FEATURE = 79, + WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, + WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, + WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, + WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, + WINHTTP_OPTION_SECURE_PROTOCOLS = 84, + WINHTTP_OPTION_ENABLETRACING = 85, + WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, + WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, + WINHTTP_OPTION_REDIRECT_POLICY = 88, + WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, + WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, + WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, + WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, + WINHTTP_OPTION_CONNECTION_INFO = 93, + WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, + WINHTTP_OPTION_SPN = 96, + + WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, + WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, + + WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, + WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, + WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, + + WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, + WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, + + WINHTTP_OPTION_SERVER_SPN_USED = 106, + WINHTTP_OPTION_PROXY_SPN_USED = 107, + + WINHTTP_OPTION_SERVER_CBT = 108, + + WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, + WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, + + WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, + WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, + WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, + + WINHTTP_OPTION_DECOMPRESSION = 118, + + WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, + WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, + + //WINHTTP_LAST_OPTION => Moved outside of enum - static if() constraints within enums + + WINHTTP_OPTION_USERNAME = 0x1000, + WINHTTP_OPTION_PASSWORD = 0x1001, + WINHTTP_OPTION_PROXY_USERNAME = 0x1002, + WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, + + WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, + WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, + + WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, + + WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, + WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, + WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, + + WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, + WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, + + WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, + WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, + WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, + WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, + + WINHTTP_DISABLE_COOKIES = 0x00000001, + WINHTTP_DISABLE_REDIRECTS = 0x00000002, + WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, + WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, + + WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, + WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, + + WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, + WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, + WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT +} + +// Windows 8.1 SDK: +static if (_WIN32_WINNT >= 0x602) { + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; +} else { // Windows 7.0A SDK: + enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; +} + +enum : DWORD { + WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, + WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, + WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) +} + +struct WINHTTP_CREDS { + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; + DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; +} +alias PWINHTTP_CREDS = WINHTTP_CREDS*; + +struct WINHTTP_CREDS_EX { + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; + DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; + LPSTR lpszUrl; +} +alias PWINHTTP_CREDS_EX = WINHTTP_CREDS_EX*; + +enum : DWORD { + WINHTTP_HANDLE_TYPE_SESSION = 1, + WINHTTP_HANDLE_TYPE_CONNECT = 2, + WINHTTP_HANDLE_TYPE_REQUEST = 3, + + WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, + WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, + WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, + WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, + WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, + + WINHTTP_AUTH_TARGET_SERVER = 0x00000000, + WINHTTP_AUTH_TARGET_PROXY = 0x00000001, + + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, + SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, + SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, + + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, + WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, + WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, + WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, + + WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, + WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | + WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | + WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) +} + +alias extern(Windows) int fnWINHTTP_STATUS_CALLBACK(HINTERNET hInternet, DWORD_PTR dwContext, + DWORD dwInternetStatus, LPVOID lpvStatusInformation,DWORD dwStatusInformationLength); +alias WINHTTP_STATUS_CALLBACK = fnWINHTTP_STATUS_CALLBACK*; +alias LPWINHTTP_STATUS_CALLBACK = WINHTTP_STATUS_CALLBACK*; + +enum : DWORD { + WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, + WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, + WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, + WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, + WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, + WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, + WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, + WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, + WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, + WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, + WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, + WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, + WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, + WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, + WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, + WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, + WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, + WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, + WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, + WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, + WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, + WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 +} + +enum : DWORD { + WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, + WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, + WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 +} + +enum : DWORD { + API_RECEIVE_RESPONSE = 1, + API_QUERY_DATA_AVAILABLE = 2, + API_READ_DATA = 3, + API_WRITE_DATA = 4, + API_SEND_REQUEST = 5 +} + +enum : DWORD { + WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), + WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), + WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), + WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), + WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), + WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), + WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, + WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, + WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, + WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, + WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, + WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, + WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, + WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, + WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, + WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR +} + +enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; + +// Windows 8+/2012+ +static if (_WIN32_WINNT >= 0x602) { + enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE + | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE + | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE + | WINHTTP_CALLBACK_STATUS_READ_COMPLETE + | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR); +} else { + enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE + | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE + | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE + | WINHTTP_CALLBACK_STATUS_READ_COMPLETE + | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE + | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR + | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE); +} + +enum DWORD WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = 0xffffffff; + +enum WINHTTP_INVALID_STATUS_CALLBACK = (cast(WINHTTP_STATUS_CALLBACK)(-1L)); + +enum : DWORD { + WINHTTP_QUERY_MIME_VERSION = 0, + WINHTTP_QUERY_CONTENT_TYPE = 1, + WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, + WINHTTP_QUERY_CONTENT_ID = 3, + WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, + WINHTTP_QUERY_CONTENT_LENGTH = 5, + WINHTTP_QUERY_CONTENT_LANGUAGE = 6, + WINHTTP_QUERY_ALLOW = 7, + WINHTTP_QUERY_PUBLIC = 8, + WINHTTP_QUERY_DATE = 9, + WINHTTP_QUERY_EXPIRES = 10, + WINHTTP_QUERY_LAST_MODIFIED = 11, + WINHTTP_QUERY_MESSAGE_ID = 12, + WINHTTP_QUERY_URI = 13, + WINHTTP_QUERY_DERIVED_FROM = 14, + WINHTTP_QUERY_COST = 15, + WINHTTP_QUERY_LINK = 16, + WINHTTP_QUERY_PRAGMA = 17, + WINHTTP_QUERY_VERSION = 18, + WINHTTP_QUERY_STATUS_CODE = 19, + WINHTTP_QUERY_STATUS_TEXT = 20, + WINHTTP_QUERY_RAW_HEADERS = 21, + WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, + WINHTTP_QUERY_CONNECTION = 23, + WINHTTP_QUERY_ACCEPT = 24, + WINHTTP_QUERY_ACCEPT_CHARSET = 25, + WINHTTP_QUERY_ACCEPT_ENCODING = 26, + WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, + WINHTTP_QUERY_AUTHORIZATION = 28, + WINHTTP_QUERY_CONTENT_ENCODING = 29, + WINHTTP_QUERY_FORWARDED = 30, + WINHTTP_QUERY_FROM = 31, + WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, + WINHTTP_QUERY_LOCATION = 33, + WINHTTP_QUERY_ORIG_URI = 34, + WINHTTP_QUERY_REFERER = 35, + WINHTTP_QUERY_RETRY_AFTER = 36, + WINHTTP_QUERY_SERVER = 37, + WINHTTP_QUERY_TITLE = 38, + WINHTTP_QUERY_USER_AGENT = 39, + WINHTTP_QUERY_WWW_AUTHENTICATE = 40, + WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, + WINHTTP_QUERY_ACCEPT_RANGES = 42, + WINHTTP_QUERY_SET_COOKIE = 43, + WINHTTP_QUERY_COOKIE = 44, + WINHTTP_QUERY_REQUEST_METHOD = 45, + WINHTTP_QUERY_REFRESH = 46, + WINHTTP_QUERY_CONTENT_DISPOSITION = 47, + + // HTTP 1.1 defined headers + + WINHTTP_QUERY_AGE = 48, + WINHTTP_QUERY_CACHE_CONTROL = 49, + WINHTTP_QUERY_CONTENT_BASE = 50, + WINHTTP_QUERY_CONTENT_LOCATION = 51, + WINHTTP_QUERY_CONTENT_MD5 = 52, + WINHTTP_QUERY_CONTENT_RANGE = 53, + WINHTTP_QUERY_ETAG = 54, + WINHTTP_QUERY_HOST = 55, + WINHTTP_QUERY_IF_MATCH = 56, + WINHTTP_QUERY_IF_NONE_MATCH = 57, + WINHTTP_QUERY_IF_RANGE = 58, + WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, + WINHTTP_QUERY_MAX_FORWARDS = 60, + WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, + WINHTTP_QUERY_RANGE = 62, + WINHTTP_QUERY_TRANSFER_ENCODING = 63, + WINHTTP_QUERY_UPGRADE = 64, + WINHTTP_QUERY_VARY = 65, + WINHTTP_QUERY_VIA = 66, + WINHTTP_QUERY_WARNING = 67, + WINHTTP_QUERY_EXPECT = 68, + WINHTTP_QUERY_PROXY_CONNECTION = 69, + WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, + + WINHTTP_QUERY_PROXY_SUPPORT = 75, + WINHTTP_QUERY_AUTHENTICATION_INFO = 76, + WINHTTP_QUERY_PASSPORT_URLS = 77, + WINHTTP_QUERY_PASSPORT_CONFIG = 78, + + WINHTTP_QUERY_MAX = 78, + + WINHTTP_QUERY_CUSTOM = 65535, + + WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + + WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + + WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 +} + +enum : DWORD { + HTTP_STATUS_CONTINUE = 100, + HTTP_STATUS_SWITCH_PROTOCOLS = 101, + + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED = 201, + HTTP_STATUS_ACCEPTED = 202, + HTTP_STATUS_PARTIAL = 203, + HTTP_STATUS_NO_CONTENT = 204, + HTTP_STATUS_RESET_CONTENT = 205, + HTTP_STATUS_PARTIAL_CONTENT = 206, + HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, + + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED = 301, + HTTP_STATUS_REDIRECT = 302, + HTTP_STATUS_REDIRECT_METHOD = 303, + HTTP_STATUS_NOT_MODIFIED = 304, + HTTP_STATUS_USE_PROXY = 305, + HTTP_STATUS_REDIRECT_KEEP_VERB = 307, + + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED = 401, + HTTP_STATUS_PAYMENT_REQ = 402, + HTTP_STATUS_FORBIDDEN = 403, + HTTP_STATUS_NOT_FOUND = 404, + HTTP_STATUS_BAD_METHOD = 405, + HTTP_STATUS_NONE_ACCEPTABLE = 406, + HTTP_STATUS_PROXY_AUTH_REQ = 407, + HTTP_STATUS_REQUEST_TIMEOUT = 408, + HTTP_STATUS_CONFLICT = 409, + HTTP_STATUS_GONE = 410, + HTTP_STATUS_LENGTH_REQUIRED = 411, + HTTP_STATUS_PRECOND_FAILED = 412, + HTTP_STATUS_REQUEST_TOO_LARGE = 413, + HTTP_STATUS_URI_TOO_LONG = 414, + HTTP_STATUS_UNSUPPORTED_MEDIA = 415, + HTTP_STATUS_RETRY_WITH = 449, + + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED = 501, + HTTP_STATUS_BAD_GATEWAY = 502, + HTTP_STATUS_SERVICE_UNAVAIL = 503, + HTTP_STATUS_GATEWAY_TIMEOUT = 504, + HTTP_STATUS_VERSION_NOT_SUP = 505, + + HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, + HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP +} + +enum LPCWSTR WINHTTP_NO_REFERER = null; +enum LPCWSTR * WINHTTP_DEFAULT_ACCEPT_TYPES = null; + +enum : DWORD { + WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + + WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + + WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, + + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + + WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, + + WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 +} + +enum LPCWSTR WINHTTP_NO_ADDITIONAL_HEADERS = null; +enum LPVOID WINHTTP_NO_REQUEST_DATA = null; + +enum LPCWSTR WINHTTP_HEADER_NAME_BY_INDEX = null; +enum LPVOID WINHTTP_NO_OUTPUT_BUFFER = null; +enum LPDWORD WINHTTP_NO_HEADER_INDEX = null; + +struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { + BOOL fAutoDetect; + LPWSTR lpszAutoConfigUrl; + LPWSTR lpszProxy; + LPWSTR lpszProxyBypass; +} + +// WinHttp API error returns +enum : DWORD { + WINHTTP_ERROR_BASE = 12000, + + ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), + ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), + ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), + ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), + ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), + ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), + ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), + ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), + ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), + + ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), + ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), + ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), + ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), + ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), + ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), + ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), + + ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE, + 44), + + ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), + ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), + ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), + ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), + + ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), + ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), + ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), + ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), + ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), + ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), + + ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), + ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), + ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), + ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), + ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), + + ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), + ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), + + ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), + ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), + ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), + ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), + ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), + ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), + ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), + ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), + + ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), + ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), + ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), + ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), + ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), + ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), + ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), + + WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) +} + +enum : DWORD { + WINHTTP_RESET_STATE = 0x00000001, + WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, + WINHTTP_RESET_SWPAD_ALL = 0x00000004, + WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, + WINHTTP_RESET_ALL = 0x0000FFFF, + WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, + WINHTTP_RESET_OUT_OF_PROC = 0x00020000 +} + +enum : DWORD { + WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, + WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 +} + +// Version(Windows8) || Version(Windows2012): +static if (_WIN32_WINNT >= 0x602) +{ + enum WINHTTP_WEB_SOCKET_OPERATION : DWORD + { + WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, + WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, + WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, + WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 + } + enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD + { + WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, + WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, + WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, + WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, + WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 + } + enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD + { + WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, + WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, + WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, + WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, + WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, + WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, + WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, + WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, + WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, + WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, + WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, + WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 + } + struct WINHTTP_PROXY_RESULT_ENTRY { + BOOL fProxy; + BOOL fBypass; + INTERNET_SCHEME ProxyScheme; + PWSTR pwszProxy; + INTERNET_PORT ProxyPort; + } + struct WINHTTP_PROXY_RESULT { + DWORD cEntries; + WINHTTP_PROXY_RESULT_ENTRY *pEntries; + } + struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { + WINHTTP_ASYNC_RESULT AsyncResult; + WINHTTP_WEB_SOCKET_OPERATION Operation; + } + struct WINHTTP_WEB_SOCKET_STATUS { + DWORD dwBytesTransferred; + WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; + } +} + + +extern (Windows) { + BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); + + BOOL WinHttpCheckPlatform(); + + BOOL WinHttpCloseHandle(HINTERNET hInternet); + + HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); + + BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); + + BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); + BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); + + BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); + BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); + + HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, + LPCWSTR pwszProxyBypass, DWORD dwFlags); + HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, + LPCWSTR pwszVersion, LPCWSTR pwszReferrer, + LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); + + BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, + LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); + BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); + BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, + LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); + BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, + LPDWORD lpdwBufferLength); + + BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, + LPDWORD lpdwNumberOfBytesRead); + BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); + + BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, + LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); + + BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, + LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams); + BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); + BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); + WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, + WINHTTP_STATUS_CALLBACK lpfnInternetCallback, + DWORD dwNotificationFlags, DWORD_PTR dwReserved); + BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, + int dwSendTimeout, int dwReceiveTimeout); + + BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); + BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); + + BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, + LPDWORD lpdwNumberOfBytesWritten); + + // Version(Windows8) || Version(Windows2012): + static if (_WIN32_WINNT >= 0x602) { + DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); + void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, + WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); + DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); + DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); + DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); + DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, + DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); + DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, + DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); + DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, + PVOID pvBuffer, DWORD dwBufferLength); + DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); + } +} Index: src/win32/wininet.d ================================================================== --- src/win32/wininet.d +++ src/win32/wininet.d @@ -1,1241 +1,1246 @@ -/***********************************************************************\ -* wininet.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.wininet; - -// FIXME: check types and grouping of constants - -import win32.windows; - -enum { - INTERNET_INVALID_PORT_NUMBER = 0, - INTERNET_DEFAULT_FTP_PORT = 21, - INTERNET_DEFAULT_GOPHER_PORT = 70, - INTERNET_DEFAULT_HTTP_PORT = 80, - INTERNET_DEFAULT_HTTPS_PORT = 443, - INTERNET_DEFAULT_SOCKS_PORT = 1080 -} - -const size_t - MAX_CACHE_ENTRY_INFO_SIZE = 4096, - INTERNET_MAX_HOST_NAME_LENGTH = 256, - INTERNET_MAX_USER_NAME_LENGTH = 128, - INTERNET_MAX_PASSWORD_LENGTH = 128, - INTERNET_MAX_PORT_NUMBER_LENGTH = 5, - INTERNET_MAX_PORT_NUMBER_VALUE = 65535, - INTERNET_MAX_PATH_LENGTH = 2048, - INTERNET_MAX_SCHEME_LENGTH = 32, - INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH - + "://".length - + INTERNET_MAX_PATH_LENGTH; - -enum : DWORD { - INTERNET_KEEP_ALIVE_UNKNOWN = DWORD.max, - INTERNET_KEEP_ALIVE_DISABLED = 0, - INTERNET_KEEP_ALIVE_ENABLED -} - -enum { - INTERNET_REQFLAG_FROM_CACHE = 1, - INTERNET_REQFLAG_ASYNC = 2 -} - -const DWORD - INTERNET_FLAG_RELOAD = 0x80000000, - INTERNET_FLAG_RAW_DATA = 0x40000000, - INTERNET_FLAG_EXISTING_CONNECT = 0x20000000, - INTERNET_FLAG_ASYNC = 0x10000000, - INTERNET_FLAG_PASSIVE = 0x08000000, - INTERNET_FLAG_NO_CACHE_WRITE = 0x04000000, - INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE, - INTERNET_FLAG_MAKE_PERSISTENT = 0x02000000, - INTERNET_FLAG_OFFLINE = 0x01000000, - INTERNET_FLAG_SECURE = 0x00800000, - INTERNET_FLAG_KEEP_CONNECTION = 0x00400000, - INTERNET_FLAG_NO_AUTO_REDIRECT = 0x00200000, - INTERNET_FLAG_READ_PREFETCH = 0x00100000, - INTERNET_FLAG_NO_COOKIES = 0x00080000, - INTERNET_FLAG_NO_AUTH = 0x00040000, - INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = 0x00008000, - INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000, - INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, - INTERNET_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, - INTERNET_FLAG_RESYNCHRONIZE = 0x00000800, - INTERNET_FLAG_HYPERLINK = 0x00000400, - INTERNET_FLAG_NO_UI = 0x00000200, - INTERNET_FLAG_PRAGMA_NOCACHE = 0x00000100, - INTERNET_FLAG_MUST_CACHE_REQUEST = 0x00000010, - INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII, - INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY, - - SECURITY_INTERNET_MASK = 0x0000F000, - SECURITY_SET_MASK = SECURITY_INTERNET_MASK, - - INTERNET_FLAGS_MASK = 0xFFFCFE13, - INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK; - -const INTERNET_NO_CALLBACK = 0; -const INTERNET_RFC1123_FORMAT = 0; -const size_t INTERNET_RFC1123_BUFSIZE = 30; - -const DWORD - ICU_ESCAPE = 0x80000000, - ICU_USERNAME = 0x40000000, - ICU_NO_ENCODE = 0x20000000, - ICU_DECODE = 0x10000000, - ICU_NO_META = 0x08000000, - ICU_ENCODE_SPACES_ONLY = 0x04000000, - ICU_BROWSER_MODE = 0x02000000; - -enum { - INTERNET_OPEN_TYPE_PRECONFIG = 0, - INTERNET_OPEN_TYPE_DIRECT = 1, - INTERNET_OPEN_TYPE_PROXY = 3, - PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG, - LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT, - GATEWAY_INTERNET_ACCESS = 2, - CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY, -} - -const ISO_GLOBAL = 1; -const ISO_REGISTRY = 2; -const ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY; - -enum { - INTERNET_OPTION_CALLBACK = 1, - INTERNET_OPTION_CONNECT_TIMEOUT, - INTERNET_OPTION_CONNECT_RETRIES, - INTERNET_OPTION_CONNECT_BACKOFF, - INTERNET_OPTION_SEND_TIMEOUT, - INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT, - INTERNET_OPTION_RECEIVE_TIMEOUT, - INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT, - INTERNET_OPTION_DATA_SEND_TIMEOUT, - INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, - INTERNET_OPTION_HANDLE_TYPE, - INTERNET_OPTION_CONTEXT_VALUE, - INTERNET_OPTION_LISTEN_TIMEOUT, - INTERNET_OPTION_READ_BUFFER_SIZE, - INTERNET_OPTION_WRITE_BUFFER_SIZE, // = 13 - INTERNET_OPTION_ASYNC_ID = 15, - INTERNET_OPTION_ASYNC_PRIORITY, // = 16 - INTERNET_OPTION_PARENT_HANDLE = 21, - INTERNET_OPTION_KEEP_CONNECTION, - INTERNET_OPTION_REQUEST_FLAGS, - INTERNET_OPTION_EXTENDED_ERROR, // = 24 - INTERNET_OPTION_OFFLINE_MODE = 26, - INTERNET_OPTION_CACHE_STREAM_HANDLE, - INTERNET_OPTION_USERNAME, - INTERNET_OPTION_PASSWORD, - INTERNET_OPTION_ASYNC, - INTERNET_OPTION_SECURITY_FLAGS, - INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, - INTERNET_OPTION_DATAFILE_NAME, - INTERNET_OPTION_URL, - INTERNET_OPTION_SECURITY_CERTIFICATE, - INTERNET_OPTION_SECURITY_KEY_BITNESS, - INTERNET_OPTION_REFRESH, - INTERNET_OPTION_PROXY, - INTERNET_OPTION_SETTINGS_CHANGED, - INTERNET_OPTION_VERSION, - INTERNET_OPTION_USER_AGENT, - INTERNET_OPTION_END_BROWSER_SESSION, - INTERNET_OPTION_PROXY_USERNAME, - INTERNET_OPTION_PROXY_PASSWORD, // = 44 - INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK, - // why? - INTERNET_LAST_OPTION = INTERNET_OPTION_USER_AGENT -} - -const INTERNET_PRIORITY_FOREGROUND = 1000; - -enum { - INTERNET_HANDLE_TYPE_INTERNET = 1, - INTERNET_HANDLE_TYPE_CONNECT_FTP, - INTERNET_HANDLE_TYPE_CONNECT_GOPHER, - INTERNET_HANDLE_TYPE_CONNECT_HTTP, - INTERNET_HANDLE_TYPE_FTP_FIND, - INTERNET_HANDLE_TYPE_FTP_FIND_HTML, - INTERNET_HANDLE_TYPE_FTP_FILE, - INTERNET_HANDLE_TYPE_FTP_FILE_HTML, - INTERNET_HANDLE_TYPE_GOPHER_FIND, - INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML, - INTERNET_HANDLE_TYPE_GOPHER_FILE, - INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML, - INTERNET_HANDLE_TYPE_HTTP_REQUEST -} - -const DWORD - SECURITY_FLAG_SECURE = 0x00000001, - SECURITY_FLAG_SSL = 0x00000002, - SECURITY_FLAG_SSL3 = 0x00000004, - SECURITY_FLAG_PCT = 0x00000008, - SECURITY_FLAG_PCT4 = 0x00000010, - SECURITY_FLAG_IETFSSL4 = 0x00000020, - SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080, - SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, - SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200, - SECURITY_FLAG_40BIT = 0x10000000, - SECURITY_FLAG_128BIT = 0x20000000, - SECURITY_FLAG_56BIT = 0x40000000, - SECURITY_FLAG_UNKNOWNBIT = 0x80000000, - SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT, - SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID, - SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, - SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS, - SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; - -enum { - INTERNET_SERVICE_FTP = 1, - INTERNET_SERVICE_GOPHER, - INTERNET_SERVICE_HTTP -} - -enum { - INTERNET_STATUS_RESOLVING_NAME = 10, - INTERNET_STATUS_NAME_RESOLVED = 11, - INTERNET_STATUS_CONNECTING_TO_SERVER = 20, - INTERNET_STATUS_CONNECTED_TO_SERVER = 21, - INTERNET_STATUS_SENDING_REQUEST = 30, - INTERNET_STATUS_REQUEST_SENT = 31, - INTERNET_STATUS_RECEIVING_RESPONSE = 40, - INTERNET_STATUS_RESPONSE_RECEIVED = 41, - INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42, - INTERNET_STATUS_PREFETCH = 43, - INTERNET_STATUS_CLOSING_CONNECTION = 50, - INTERNET_STATUS_CONNECTION_CLOSED = 51, - INTERNET_STATUS_HANDLE_CREATED = 60, - INTERNET_STATUS_HANDLE_CLOSING = 70, - INTERNET_STATUS_REQUEST_COMPLETE = 100, - INTERNET_STATUS_REDIRECT = 110 -} - -const INTERNET_INVALID_STATUS_CALLBACK - = cast(INTERNET_STATUS_CALLBACK) -1; - -enum { - FTP_TRANSFER_TYPE_UNKNOWN = 0, - FTP_TRANSFER_TYPE_ASCII = 1, - FTP_TRANSFER_TYPE_BINARY = 2, - FTP_TRANSFER_TYPE_MASK = 3 -} - -const size_t - MAX_GOPHER_DISPLAY_TEXT = 128, - MAX_GOPHER_SELECTOR_TEXT = 256, - MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH, - MAX_GOPHER_LOCATOR_LENGTH - = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 - + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4; - -const DWORD - GOPHER_TYPE_TEXT_FILE = 0x00000001, - GOPHER_TYPE_DIRECTORY = 0x00000002, - GOPHER_TYPE_CSO = 0x00000004, - GOPHER_TYPE_ERROR = 0x00000008, - GOPHER_TYPE_MAC_BINHEX = 0x00000010, - GOPHER_TYPE_DOS_ARCHIVE = 0x00000020, - GOPHER_TYPE_UNIX_UUENCODED = 0x00000040, - GOPHER_TYPE_INDEX_SERVER = 0x00000080, - GOPHER_TYPE_TELNET = 0x00000100, - GOPHER_TYPE_BINARY = 0x00000200, - GOPHER_TYPE_REDUNDANT = 0x00000400, - GOPHER_TYPE_TN3270 = 0x00000800, - GOPHER_TYPE_GIF = 0x00001000, - GOPHER_TYPE_IMAGE = 0x00002000, - GOPHER_TYPE_BITMAP = 0x00004000, - GOPHER_TYPE_MOVIE = 0x00008000, - GOPHER_TYPE_SOUND = 0x00010000, - GOPHER_TYPE_HTML = 0x00020000, - GOPHER_TYPE_PDF = 0x00040000, - GOPHER_TYPE_CALENDAR = 0x00080000, - GOPHER_TYPE_INLINE = 0x00100000, - GOPHER_TYPE_UNKNOWN = 0x20000000, - GOPHER_TYPE_ASK = 0x40000000, - GOPHER_TYPE_GOPHER_PLUS = 0x80000000, - GOPHER_TYPE_FILE_MASK = 0x001FF271; - -BOOL IS_GOPHER_FILE(DWORD t) { - return !!(t & GOPHER_TYPE_FILE_MASK); -} - -BOOL IS_GOPHER_DIRECTORY(DWORD t) { - return !!(t & GOPHER_TYPE_DIRECTORY); -} - -BOOL IS_GOPHER_PHONE_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_CSO); -} - -BOOL IS_GOPHER_ERROR(DWORD t) { - return !!(t & GOPHER_TYPE_ERROR); -} - -BOOL IS_GOPHER_INDEX_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_INDEX_SERVER); -} - -BOOL IS_GOPHER_TELNET_SESSION(DWORD t) { - return !!(t & GOPHER_TYPE_TELNET); -} - -BOOL IS_GOPHER_BACKUP_SERVER(DWORD t) { - return !!(t & GOPHER_TYPE_REDUNDANT); -} - -BOOL IS_GOPHER_TN3270_SESSION(DWORD t) { - return !!(t & GOPHER_TYPE_TN3270); -} - -BOOL IS_GOPHER_ASK(DWORD t) { - return !!(t & GOPHER_TYPE_ASK); -} - -BOOL IS_GOPHER_PLUS(DWORD t) { - return !!(t & GOPHER_TYPE_GOPHER_PLUS); -} - -BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) { - return !(t & GOPHER_TYPE_UNKNOWN); -} - -const size_t - MAX_GOPHER_CATEGORY_NAME = 128, - MAX_GOPHER_ATTRIBUTE_NAME = 128, - MIN_GOPHER_ATTRIBUTE_LENGTH = 256; - -const TCHAR[] - GOPHER_INFO_CATEGORY = "+INFO", - GOPHER_ADMIN_CATEGORY = "+ADMIN", - GOPHER_VIEWS_CATEGORY = "+VIEWS", - GOPHER_ABSTRACT_CATEGORY = "+ABSTRACT", - GOPHER_VERONICA_CATEGORY = "+VERONICA", - GOPHER_ADMIN_ATTRIBUTE = "Admin", - GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date", - GOPHER_TTL_ATTRIBUTE = "TTL", - GOPHER_SCORE_ATTRIBUTE = "Score", - GOPHER_RANGE_ATTRIBUTE = "Score-range", - GOPHER_SITE_ATTRIBUTE = "Site", - GOPHER_ORG_ATTRIBUTE = "Org", - GOPHER_LOCATION_ATTRIBUTE = "Loc", - GOPHER_GEOG_ATTRIBUTE = "Geog", - GOPHER_TIMEZONE_ATTRIBUTE = "TZ", - GOPHER_PROVIDER_ATTRIBUTE = "Provider", - GOPHER_VERSION_ATTRIBUTE = "Version", - GOPHER_ABSTRACT_ATTRIBUTE = "Abstract", - GOPHER_VIEW_ATTRIBUTE = "View", - GOPHER_TREEWALK_ATTRIBUTE = "treewalk"; - -enum : DWORD { - GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00, - GOPHER_CATEGORY_ID_ALL, - GOPHER_CATEGORY_ID_INFO, - GOPHER_CATEGORY_ID_ADMIN, - GOPHER_CATEGORY_ID_VIEWS, - GOPHER_CATEGORY_ID_ABSTRACT, - GOPHER_CATEGORY_ID_VERONICA, - GOPHER_CATEGORY_ID_ASK, - GOPHER_CATEGORY_ID_UNKNOWN, - GOPHER_ATTRIBUTE_ID_ALL, - GOPHER_ATTRIBUTE_ID_ADMIN, - GOPHER_ATTRIBUTE_ID_MOD_DATE, - GOPHER_ATTRIBUTE_ID_TTL, - GOPHER_ATTRIBUTE_ID_SCORE, - GOPHER_ATTRIBUTE_ID_RANGE, - GOPHER_ATTRIBUTE_ID_SITE, - GOPHER_ATTRIBUTE_ID_ORG, - GOPHER_ATTRIBUTE_ID_LOCATION, - GOPHER_ATTRIBUTE_ID_GEOG, - GOPHER_ATTRIBUTE_ID_TIMEZONE, - GOPHER_ATTRIBUTE_ID_PROVIDER, - GOPHER_ATTRIBUTE_ID_VERSION, - GOPHER_ATTRIBUTE_ID_ABSTRACT, - GOPHER_ATTRIBUTE_ID_VIEW, - GOPHER_ATTRIBUTE_ID_TREEWALK, - GOPHER_ATTRIBUTE_ID_UNKNOWN -} - -const HTTP_MAJOR_VERSION = 1; -const HTTP_MINOR_VERSION = 0; -const TCHAR[] HTTP_VERSION = "HTTP/1.0"; - -enum : DWORD { - HTTP_QUERY_MIME_VERSION, - HTTP_QUERY_CONTENT_TYPE, - HTTP_QUERY_CONTENT_TRANSFER_ENCODING, - HTTP_QUERY_CONTENT_ID, - HTTP_QUERY_CONTENT_DESCRIPTION, - HTTP_QUERY_CONTENT_LENGTH, - HTTP_QUERY_CONTENT_LANGUAGE, - HTTP_QUERY_ALLOW, - HTTP_QUERY_PUBLIC, - HTTP_QUERY_DATE, - HTTP_QUERY_EXPIRES, - HTTP_QUERY_LAST_MODIFIED, - HTTP_QUERY_MESSAGE_ID, - HTTP_QUERY_URI, - HTTP_QUERY_DERIVED_FROM, - HTTP_QUERY_COST, - HTTP_QUERY_LINK, - HTTP_QUERY_PRAGMA, - HTTP_QUERY_VERSION, - HTTP_QUERY_STATUS_CODE, - HTTP_QUERY_STATUS_TEXT, - HTTP_QUERY_RAW_HEADERS, - HTTP_QUERY_RAW_HEADERS_CRLF, - HTTP_QUERY_CONNECTION, - HTTP_QUERY_ACCEPT, - HTTP_QUERY_ACCEPT_CHARSET, - HTTP_QUERY_ACCEPT_ENCODING, - HTTP_QUERY_ACCEPT_LANGUAGE, - HTTP_QUERY_AUTHORIZATION, - HTTP_QUERY_CONTENT_ENCODING, - HTTP_QUERY_FORWARDED, - HTTP_QUERY_FROM, - HTTP_QUERY_IF_MODIFIED_SINCE, - HTTP_QUERY_LOCATION, - HTTP_QUERY_ORIG_URI, - HTTP_QUERY_REFERER, - HTTP_QUERY_RETRY_AFTER, - HTTP_QUERY_SERVER, - HTTP_QUERY_TITLE, - HTTP_QUERY_USER_AGENT, - HTTP_QUERY_WWW_AUTHENTICATE, - HTTP_QUERY_PROXY_AUTHENTICATE, - HTTP_QUERY_ACCEPT_RANGES, - HTTP_QUERY_SET_COOKIE, - HTTP_QUERY_COOKIE, - HTTP_QUERY_REQUEST_METHOD, - HTTP_QUERY_MAX = 45, - HTTP_QUERY_CUSTOM = 65535 -} - -const DWORD - HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, - HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, - HTTP_QUERY_FLAG_NUMBER = 0x20000000, - HTTP_QUERY_FLAG_COALESCE = 0x10000000, - HTTP_QUERY_MODIFIER_FLAGS_MASK = 0xF0000000, - HTTP_QUERY_HEADER_MASK = ~HTTP_QUERY_MODIFIER_FLAGS_MASK; - -enum { - HTTP_STATUS_OK = 200, - HTTP_STATUS_CREATED, - HTTP_STATUS_ACCEPTED, - HTTP_STATUS_PARTIAL, - HTTP_STATUS_NO_CONTENT, // = 204 - HTTP_STATUS_AMBIGUOUS = 300, - HTTP_STATUS_MOVED, - HTTP_STATUS_REDIRECT, - HTTP_STATUS_REDIRECT_METHOD, - HTTP_STATUS_NOT_MODIFIED, // = 304 - HTTP_STATUS_BAD_REQUEST = 400, - HTTP_STATUS_DENIED, - HTTP_STATUS_PAYMENT_REQ, - HTTP_STATUS_FORBIDDEN, - HTTP_STATUS_NOT_FOUND, - HTTP_STATUS_BAD_METHOD, - HTTP_STATUS_NONE_ACCEPTABLE, - HTTP_STATUS_PROXY_AUTH_REQ, - HTTP_STATUS_REQUEST_TIMEOUT, - HTTP_STATUS_CONFLICT, - HTTP_STATUS_GONE, - HTTP_STATUS_AUTH_REFUSED, // = 411 - HTTP_STATUS_SERVER_ERROR = 500, - HTTP_STATUS_NOT_SUPPORTED, - HTTP_STATUS_BAD_GATEWAY, - HTTP_STATUS_SERVICE_UNAVAIL, - HTTP_STATUS_GATEWAY_TIMEOUT // = 504 -} - -enum { - INTERNET_PREFETCH_PROGRESS, - INTERNET_PREFETCH_COMPLETE, - INTERNET_PREFETCH_ABORTED -} - -const FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01; -const FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02; -const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04; -const FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08; - -const DWORD - HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, - HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, - HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, - HTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, - HTTP_ADDREQ_FLAG_ADD = 0x20000000, - HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, - HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, - HTTP_ADDREQ_FLAG_REPLACE = 0x80000000; - -enum { - INTERNET_ERROR_BASE = 12000, - ERROR_INTERNET_OUT_OF_HANDLES, - ERROR_INTERNET_TIMEOUT, - ERROR_INTERNET_EXTENDED_ERROR, - ERROR_INTERNET_INTERNAL_ERROR, - ERROR_INTERNET_INVALID_URL, - ERROR_INTERNET_UNRECOGNIZED_SCHEME, - ERROR_INTERNET_NAME_NOT_RESOLVED, - ERROR_INTERNET_PROTOCOL_NOT_FOUND, - ERROR_INTERNET_INVALID_OPTION, - ERROR_INTERNET_BAD_OPTION_LENGTH, - ERROR_INTERNET_OPTION_NOT_SETTABLE, - ERROR_INTERNET_SHUTDOWN, - ERROR_INTERNET_INCORRECT_USER_NAME, - ERROR_INTERNET_INCORRECT_PASSWORD, - ERROR_INTERNET_LOGIN_FAILURE, - ERROR_INTERNET_INVALID_OPERATION, - ERROR_INTERNET_OPERATION_CANCELLED, - ERROR_INTERNET_INCORRECT_HANDLE_TYPE, - ERROR_INTERNET_INCORRECT_HANDLE_STATE, - ERROR_INTERNET_NOT_PROXY_REQUEST, - ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND, - ERROR_INTERNET_BAD_REGISTRY_PARAMETER, - ERROR_INTERNET_NO_DIRECT_ACCESS, - ERROR_INTERNET_NO_CONTEXT, - ERROR_INTERNET_NO_CALLBACK, - ERROR_INTERNET_REQUEST_PENDING, - ERROR_INTERNET_INCORRECT_FORMAT, - ERROR_INTERNET_ITEM_NOT_FOUND, - ERROR_INTERNET_CANNOT_CONNECT, - ERROR_INTERNET_CONNECTION_ABORTED, - ERROR_INTERNET_CONNECTION_RESET, - ERROR_INTERNET_FORCE_RETRY, - ERROR_INTERNET_INVALID_PROXY_REQUEST, - ERROR_INTERNET_NEED_UI, // = INTERNET_ERROR_BASE + 34 - ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36, - ERROR_INTERNET_SEC_CERT_DATE_INVALID, - ERROR_INTERNET_SEC_CERT_CN_INVALID, - ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, - ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR, - ERROR_INTERNET_MIXED_SECURITY, - ERROR_INTERNET_CHG_POST_IS_NON_SECURE, - ERROR_INTERNET_POST_IS_NON_SECURE, - ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED, - ERROR_INTERNET_INVALID_CA, - ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP, - ERROR_INTERNET_ASYNC_THREAD_FAILED, - ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE + 48 - - ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110, - ERROR_FTP_DROPPED, // = INTERNET_ERROR_BASE + 111 - ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130, - ERROR_GOPHER_NOT_FILE, - ERROR_GOPHER_DATA_ERROR, - ERROR_GOPHER_END_OF_DATA, - ERROR_GOPHER_INVALID_LOCATOR, - ERROR_GOPHER_INCORRECT_LOCATOR_TYPE, - ERROR_GOPHER_NOT_GOPHER_PLUS, - ERROR_GOPHER_ATTRIBUTE_NOT_FOUND, - ERROR_GOPHER_UNKNOWN_LOCATOR, // = INTERNET_ERROR_BASE + 138, - ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150, - ERROR_HTTP_DOWNLEVEL_SERVER, - ERROR_HTTP_INVALID_SERVER_RESPONSE, - ERROR_HTTP_INVALID_HEADER, - ERROR_HTTP_INVALID_QUERY_REQUEST, - ERROR_HTTP_HEADER_ALREADY_EXISTS, - ERROR_HTTP_REDIRECT_FAILED, - ERROR_INTERNET_SECURITY_CHANNEL_ERROR, - ERROR_INTERNET_UNABLE_TO_CACHE_FILE, - ERROR_INTERNET_TCPIP_NOT_INSTALLED, - ERROR_HTTP_NOT_REDIRECTED, // = INTERNET_ERROR_BASE + 160 - // why? - INTERNET_ERROR_LAST = ERROR_INTERNET_TCPIP_NOT_INSTALLED -} - - -const NORMAL_CACHE_ENTRY = 0x000001; -const STABLE_CACHE_ENTRY = 0x000002; -const STICKY_CACHE_ENTRY = 0x000004; -const SPARSE_CACHE_ENTRY = 0x010000; -const OCX_CACHE_ENTRY = 0x020000; -const COOKIE_CACHE_ENTRY = 0x100000; -const URLHISTORY_CACHE_ENTRY = 0x200000; - -const CACHE_ENTRY_ATTRIBUTE_FC = 0x0004; -const CACHE_ENTRY_HITRATE_FC = 0x0010; -const CACHE_ENTRY_MODTIME_FC = 0x0040; -const CACHE_ENTRY_EXPTIME_FC = 0x0080; -const CACHE_ENTRY_ACCTIME_FC = 0x0100; -const CACHE_ENTRY_SYNCTIME_FC = 0x0200; -const CACHE_ENTRY_HEADERINFO_FC = 0x0400; - -enum { - WININET_API_FLAG_ASYNC = 1, - WININET_API_FLAG_SYNC = 4, - WININET_API_FLAG_USE_CONTEXT = 8 -} - -// FIXME: how should these really be grouped? -enum { - IRF_ASYNC = WININET_API_FLAG_ASYNC, - IRF_SYNC = WININET_API_FLAG_SYNC, - IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, -} -const IRF_NO_WAIT = 8; - -enum { - HSR_ASYNC = WININET_API_FLAG_ASYNC, - HSR_SYNC = WININET_API_FLAG_SYNC, - HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, -} - -const HSR_INITIATE = 8; -const HSR_DOWNLOAD = 16; -const HSR_CHUNKED = 32; - -const INTERNET_DIAL_UNATTENDED = 0x8000; -const INTERNET_DIALSTATE_DISCONNECTED = 1; -const INTERENT_GOONLINE_REFRESH = 1; -const INTERENT_GOONLINE_MASK = 1; -const INTERNET_AUTODIAL_FORCE_ONLINE = 1; -const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2; -const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4; -const INTERNET_CONNECTION_MODEM = 0x01; -const INTERNET_CONNECTION_LAN = 0x02; -const INTERNET_CONNECTION_PROXY = 0x04; -const INTERNET_CONNECTION_MODEM_BUSY = 0x08; -const INTERNET_RAS_INSTALLED = 0x10; -const INTERNET_CONNECTION_OFFLINE = 0x20; -const INTERNET_CONNECTION_CONFIGURED = 0x40; - -enum { - CACHEGROUP_SEARCH_ALL = 0, - CACHEGROUP_SEARCH_BYURL = 1 -} - -enum { - INTERNET_CACHE_GROUP_ADD = 0, - INTERNET_CACHE_GROUP_REMOVE = 1 -} - -alias HANDLE HINTERNET; -alias HANDLE* LPHINTERNET; - -alias LONGLONG GROUPID; -alias WORD INTERNET_PORT; -alias WORD* LPINTERNET_PORT; - -enum INTERNET_SCHEME { - INTERNET_SCHEME_PARTIAL = -2, - INTERNET_SCHEME_UNKNOWN, - INTERNET_SCHEME_DEFAULT, - INTERNET_SCHEME_FTP, - INTERNET_SCHEME_GOPHER, - INTERNET_SCHEME_HTTP, - INTERNET_SCHEME_HTTPS, - INTERNET_SCHEME_FILE, - INTERNET_SCHEME_NEWS, - INTERNET_SCHEME_MAILTO, - INTERNET_SCHEME_SOCKS, - INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, - INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS -} -alias INTERNET_SCHEME* LPINTERNET_SCHEME; - -struct INTERNET_ASYNC_RESULT { - DWORD dwResult; - DWORD dwError; -} -alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT; - -struct INTERNET_PREFETCH_STATUS { - DWORD dwStatus; - DWORD dwSize; -} -alias INTERNET_PREFETCH_STATUS* LPINTERNET_PREFETCH_STATUS; - -struct INTERNET_PROXY_INFO { - DWORD dwAccessType; - LPCTSTR lpszProxy; - LPCTSTR lpszProxyBypass; -} -alias INTERNET_PROXY_INFO* LPINTERNET_PROXY_INFO; - -struct INTERNET_VERSION_INFO { - DWORD dwMajorVersion; - DWORD dwMinorVersion; -} -alias INTERNET_VERSION_INFO* LPINTERNET_VERSION_INFO; - -struct URL_COMPONENTSA { - DWORD dwStructSize = URL_COMPONENTSA.sizeof; - LPSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPSTR lpszUserName; - DWORD dwUserNameLength; - LPSTR lpszPassword; - DWORD dwPasswordLength; - LPSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPSTR lpszExtraInfo; - DWORD dwExtraInfoLength; -} -alias URL_COMPONENTSA* LPURL_COMPONENTSA; - -struct URL_COMPONENTSW { - DWORD dwStructSize = URL_COMPONENTSW.sizeof; - LPWSTR lpszScheme; - DWORD dwSchemeLength; - INTERNET_SCHEME nScheme; - LPWSTR lpszHostName; - DWORD dwHostNameLength; - INTERNET_PORT nPort; - LPWSTR lpszUserName; - DWORD dwUserNameLength; - LPWSTR lpszPassword; - DWORD dwPasswordLength; - LPWSTR lpszUrlPath; - DWORD dwUrlPathLength; - LPWSTR lpszExtraInfo; - DWORD dwExtraInfoLength; -} -alias URL_COMPONENTSW* LPURL_COMPONENTSW; - -struct INTERNET_CERTIFICATE_INFO { - FILETIME ftExpiry; - FILETIME ftStart; - LPTSTR lpszSubjectInfo; - LPTSTR lpszIssuerInfo; - LPTSTR lpszProtocolName; - LPTSTR lpszSignatureAlgName; - LPTSTR lpszEncryptionAlgName; - DWORD dwKeySize; -} -alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO; - -extern (Windows) alias void function(HINTERNET, DWORD, DWORD, PVOID, DWORD) - INTERNET_STATUS_CALLBACK; -alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK; - -struct GOPHER_FIND_DATAA { - CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; - DWORD GopherType; - DWORD SizeLow; - DWORD SizeHigh; - FILETIME LastModificationTime; - CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; -} -alias GOPHER_FIND_DATAA* LPGOPHER_FIND_DATAA; - -struct GOPHER_FIND_DATAW { - WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; - DWORD GopherType; - DWORD SizeLow; - DWORD SizeHigh; - FILETIME LastModificationTime; - WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; -} -alias GOPHER_FIND_DATAW* LPGOPHER_FIND_DATAW; - -struct GOPHER_ADMIN_ATTRIBUTE_TYPE { - LPCTSTR Comment; - LPCTSTR EmailAddress; -} -alias GOPHER_ADMIN_ATTRIBUTE_TYPE* LPGOPHER_ADMIN_ATTRIBUTE_TYPE; - -struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE { - FILETIME DateAndTime; -} -alias GOPHER_MOD_DATE_ATTRIBUTE_TYPE* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE; - -struct GOPHER_TTL_ATTRIBUTE_TYPE { - DWORD Ttl; -} -alias GOPHER_TTL_ATTRIBUTE_TYPE* LPGOPHER_TTL_ATTRIBUTE_TYPE; - -struct GOPHER_SCORE_ATTRIBUTE_TYPE { - INT Score; -} -alias GOPHER_SCORE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_ATTRIBUTE_TYPE; - -struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE { - INT LowerBound; - INT UpperBound; -} -alias GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; - -struct GOPHER_SITE_ATTRIBUTE_TYPE { - LPCTSTR Site; -} -alias GOPHER_SITE_ATTRIBUTE_TYPE* LPGOPHER_SITE_ATTRIBUTE_TYPE; - -struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE { - LPCTSTR Organization; -} -alias GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE; - -struct GOPHER_LOCATION_ATTRIBUTE_TYPE { - LPCTSTR Location; -} -alias GOPHER_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_LOCATION_ATTRIBUTE_TYPE; - -struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE { - INT DegreesNorth; - INT MinutesNorth; - INT SecondsNorth; - INT DegreesEast; - INT MinutesEast; - INT SecondsEast; -} -alias GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* - LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; - -struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE { - INT Zone; -} -alias GOPHER_TIMEZONE_ATTRIBUTE_TYPE* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE; - -struct GOPHER_PROVIDER_ATTRIBUTE_TYPE { - LPCTSTR Provider; -} -alias GOPHER_PROVIDER_ATTRIBUTE_TYPE* LPGOPHER_PROVIDER_ATTRIBUTE_TYPE; - -struct GOPHER_VERSION_ATTRIBUTE_TYPE { - LPCTSTR Version; -} -alias GOPHER_VERSION_ATTRIBUTE_TYPE* LPGOPHER_VERSION_ATTRIBUTE_TYPE; - -struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE { - LPCTSTR ShortAbstract; - LPCTSTR AbstractFile; -} -alias GOPHER_ABSTRACT_ATTRIBUTE_TYPE* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE; - -struct GOPHER_VIEW_ATTRIBUTE_TYPE { - LPCTSTR ContentType; - LPCTSTR Language; - DWORD Size; -} -alias GOPHER_VIEW_ATTRIBUTE_TYPE* LPGOPHER_VIEW_ATTRIBUTE_TYPE; - -struct GOPHER_VERONICA_ATTRIBUTE_TYPE { - BOOL TreeWalk; -} -alias GOPHER_VERONICA_ATTRIBUTE_TYPE* LPGOPHER_VERONICA_ATTRIBUTE_TYPE; - -struct GOPHER_ASK_ATTRIBUTE_TYPE { - LPCTSTR QuestionType; - LPCTSTR QuestionText; -} -alias GOPHER_ASK_ATTRIBUTE_TYPE* LPGOPHER_ASK_ATTRIBUTE_TYPE; - -struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE { - LPCTSTR Text; -} -alias GOPHER_UNKNOWN_ATTRIBUTE_TYPE* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE; - -struct GOPHER_ATTRIBUTE_TYPE { - DWORD CategoryId; - DWORD AttributeId; - union { - GOPHER_ADMIN_ATTRIBUTE_TYPE Admin; - GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate; - GOPHER_TTL_ATTRIBUTE_TYPE Ttl; - GOPHER_SCORE_ATTRIBUTE_TYPE Score; - GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange; - GOPHER_SITE_ATTRIBUTE_TYPE Site; - GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization; - GOPHER_LOCATION_ATTRIBUTE_TYPE Location; - GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation; - GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone; - GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider; - GOPHER_VERSION_ATTRIBUTE_TYPE Version; - GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract; - GOPHER_VIEW_ATTRIBUTE_TYPE View; - GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica; - GOPHER_ASK_ATTRIBUTE_TYPE Ask; - GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown; - } /+AttributeType;+/ -} -alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE; - -alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD) - GOPHER_ATTRIBUTE_ENUMERATOR; - -struct INTERNET_CACHE_ENTRY_INFOA { - DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof; - LPSTR lpszSourceUrlName; - LPSTR lpszLocalFileName; - DWORD CacheEntryType; - DWORD dwUseCount; - DWORD dwHitRate; - DWORD dwSizeLow; - DWORD dwSizeHigh; - FILETIME LastModifiedTime; - FILETIME ExpireTime; - FILETIME LastAccessTime; - FILETIME LastSyncTime; - PBYTE lpHeaderInfo; - DWORD dwHeaderInfoSize; - LPSTR lpszFileExtension; - DWORD dwReserved; -} -alias INTERNET_CACHE_ENTRY_INFOA* LPINTERNET_CACHE_ENTRY_INFOA; - -struct INTERNET_CACHE_ENTRY_INFOW { - DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof; - LPWSTR lpszSourceUrlName; - LPWSTR lpszLocalFileName; - DWORD CacheEntryType; - DWORD dwUseCount; - DWORD dwHitRate; - DWORD dwSizeLow; - DWORD dwSizeHigh; - FILETIME LastModifiedTime; - FILETIME ExpireTime; - FILETIME LastAccessTime; - FILETIME LastSyncTime; - PBYTE lpHeaderInfo; - DWORD dwHeaderInfoSize; - LPWSTR lpszFileExtension; - DWORD dwReserved; -} -alias INTERNET_CACHE_ENTRY_INFOW* LPINTERNET_CACHE_ENTRY_INFOW; - -struct INTERNET_BUFFERSA { - DWORD dwStructSize = INTERNET_BUFFERSA.sizeof; - INTERNET_BUFFERSA* Next; - LPCSTR lpcszHeader; - DWORD dwHeadersLength; - DWORD dwHeadersTotal; - LPVOID lpvBuffer; - DWORD dwBufferLength; - DWORD dwBufferTotal; - DWORD dwOffsetLow; - DWORD dwOffsetHigh; -} -alias INTERNET_BUFFERSA* LPINTERNET_BUFFERSA; - -struct INTERNET_BUFFERSW { - DWORD dwStructSize = INTERNET_BUFFERSW.sizeof; - INTERNET_BUFFERSW* Next; - LPCWSTR lpcszHeader; - DWORD dwHeadersLength; - DWORD dwHeadersTotal; - LPVOID lpvBuffer; - DWORD dwBufferLength; - DWORD dwBufferTotal; - DWORD dwOffsetLow; - DWORD dwOffsetHigh; -} -alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW; - -const size_t - GROUP_OWNER_STORAGE_SIZE = 4, - GROUPNAME_MAX_LENGTH = 120; - -struct INTERNET_CACHE_GROUP_INFOA { - DWORD dwGroupSize; - DWORD dwGroupFlags; - DWORD dwGroupType; - DWORD dwDiskUsage; - DWORD dwDiskQuota; - DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; - CHAR[GROUPNAME_MAX_LENGTH] szGroupName; -} -alias INTERNET_CACHE_GROUP_INFOA* LPINTERNET_CACHE_GROUP_INFOA; - -struct INTERNET_CACHE_GROUP_INFOW { - DWORD dwGroupSize; - DWORD dwGroupFlags; - DWORD dwGroupType; - DWORD dwDiskUsage; - DWORD dwDiskQuota; - DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; - WCHAR[GROUPNAME_MAX_LENGTH] szGroupName; -} -alias INTERNET_CACHE_GROUP_INFOW* LPINTERNET_CACHE_GROUP_INFOW; - -extern (Windows) { - BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD); - BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD); - BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD); - BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA); - BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW); - BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD); - BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD); - BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD); - BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD); - BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD); - BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD); - BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD); - BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD); - HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD); - HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD); - BOOL InternetCloseHandle(HINTERNET); - HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR, - LPCSTR, DWORD, DWORD, DWORD); - HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR, - LPCWSTR, DWORD, DWORD, DWORD); - HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, - DWORD); - HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD, - DWORD); - BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD); - DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD); - BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD); - BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD); - BOOL InternetFindNextFileA(HINTERNET, PVOID); - BOOL InternetFindNextFileW(HINTERNET, PVOID); - BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD); - BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD); - BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD); - BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD); - BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD); - BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD); - BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD); - BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD); - INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET, - INTERNET_STATUS_CALLBACK); - DWORD FtpGetFileSize(HINTERNET, LPDWORD); - HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD, - DWORD); - HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD, - DWORD); - BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD); - BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD); - BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); - BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL FtpDeleteFileA(HINTERNET, LPCSTR); - BOOL FtpDeleteFileW(HINTERNET, LPCWSTR); - BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR); - BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR); - HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD); - HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD); - BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR); - BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR); - BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR); - BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR); - BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD); - BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD); - BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*); - BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*); - BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD, - LPSTR, PDWORD); - BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD, - LPWSTR, PDWORD); - BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD); - BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD); - HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR, - LPGOPHER_FIND_DATAA, DWORD, DWORD); - HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR, - LPGOPHER_FIND_DATAW, DWORD, DWORD); - HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); - HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); - BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD, - PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); - BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD, - PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); - HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR, - LPCSTR*, DWORD, DWORD); - HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, - LPCWSTR*, DWORD, DWORD); - BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD); - BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD); - BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD); - BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD); - BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); - BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); - BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR); - BOOL InternetSetCookieW(LPCWSTR, LPCWSTR, LPCWSTR); - BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD); - BOOL InternetGetCookieW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD); - DWORD InternetAttemptConnect(DWORD); - DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*); - DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL); - BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD); - BOOL CreateUrlCacheEntryW(LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD); - BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD, - LPBYTE, DWORD, LPCSTR, DWORD); - BOOL CommitUrlCacheEntryW(LPCWSTR, LPCWSTR, FILETIME, FILETIME, DWORD, - LPBYTE, DWORD, LPCWSTR, DWORD); - BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD, DWORD); - BOOL RetrieveUrlCacheEntryFileW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD, DWORD); - BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD); - HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD, BOOL, DWORD); - HANDLE RetrieveUrlCacheEntryStreamW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD, BOOL, DWORD); - BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD); - BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD); - BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); - BOOL GetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); - BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD); - BOOL SetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD); - HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, - PDWORD); - HANDLE FindFirstUrlCacheEntryW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, - PDWORD); - BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); - BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); - BOOL FindCloseUrlCache(HANDLE); - BOOL DeleteUrlCacheEntry(LPCSTR); - DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR, - LPSTR); - BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA, - LPINTERNET_BUFFERSA, DWORD, DWORD); - BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW, - LPINTERNET_BUFFERSW, DWORD, DWORD); - BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD); - BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD); - DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD); - DWORD InternetHangUp(DWORD, DWORD); - BOOL InternetGoOnline(LPTSTR, HWND, DWORD); - BOOL InternetAutodial(DWORD, DWORD); - BOOL InternetAutodialHangup(DWORD); - BOOL InternetGetConnectedState(LPDWORD, DWORD); - BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD); - BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); - BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); - GROUPID CreateUrlCacheGroup(DWORD, LPVOID); - BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID); - HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*, - LPVOID); - BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID); - BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID); - BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID); - BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOA, LPVOID); - BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, - LPINTERNET_CACHE_GROUP_INFOW, LPVOID); -} - -version (Unicode) { - alias URL_COMPONENTSW URL_COMPONENTS; - alias LPURL_COMPONENTSW LPURL_COMPONENTS; - alias GOPHER_FIND_DATAW GOPHER_FIND_DATA; - alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA; - alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO; - alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO; - alias INTERNET_BUFFERSW INTERNET_BUFFERS; - alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO; - alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO; - alias InternetCrackUrlW InternetCrackUrl; - alias InternetCreateUrlW InternetCreateUrl; - alias InternetCanonicalizeUrlW InternetCanonicalizeUrl; - alias InternetCheckConnectionW InternetCheckConnection; - alias InternetCombineUrlW InternetCombineUrl; - alias InternetOpenW InternetOpen; - alias InternetConnectW InternetConnect; - alias InternetOpenUrlW InternetOpenUrl; - alias InternetFindNextFileW InternetFindNextFile; - alias InternetQueryOptionW InternetQueryOption; - alias InternetSetOptionW InternetSetOption; - alias InternetSetOptionExW InternetSetOptionEx; - alias InternetGetLastResponseInfoW InternetGetLastResponseInfo; - alias InternetReadFileExW InternetReadFileEx; - alias FtpFindFirstFileW FtpFindFirstFile; - alias FtpGetFileW FtpGetFile; - alias FtpPutFileW FtpPutFile; - alias FtpDeleteFileW FtpDeleteFile; - alias FtpRenameFileW FtpRenameFile; - alias FtpOpenFileW FtpOpenFile; - alias FtpCreateDirectoryW FtpCreateDirectory; - alias FtpRemoveDirectoryW FtpRemoveDirectory; - alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory; - alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory; - alias FtpCommandW FtpCommand; - alias GopherGetLocatorTypeW GopherGetLocatorType; - alias GopherCreateLocatorW GopherCreateLocator; - alias GopherFindFirstFileW GopherFindFirstFile; - alias GopherOpenFileW GopherOpenFile; - alias GopherGetAttributeW GopherGetAttribute; - alias HttpSendRequestW HttpSendRequest; - alias HttpOpenRequestW HttpOpenRequest; - alias HttpAddRequestHeadersW HttpAddRequestHeaders; - alias HttpQueryInfoW HttpQueryInfo; - alias InternetSetCookieW InternetSetCookie; - alias InternetGetCookieW InternetGetCookie; - alias CreateUrlCacheEntryW CreateUrlCacheEntry; - alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream; - alias FindNextUrlCacheEntryW FindNextUrlCacheEntry; - alias CommitUrlCacheEntryW CommitUrlCacheEntry; - alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo; - alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo; - alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry; - alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile; - alias HttpSendRequestExW HttpSendRequestEx; - alias HttpEndRequestW HttpEndRequest; - alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute; - alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute; -} else { - alias URL_COMPONENTSA URL_COMPONENTS; - alias LPURL_COMPONENTSA LPURL_COMPONENTS; - alias GOPHER_FIND_DATAA GOPHER_FIND_DATA; - alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA; - alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO; - alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO; - alias INTERNET_BUFFERSA INTERNET_BUFFERS; - alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO; - alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO; - alias GopherGetAttributeA GopherGetAttribute; - alias InternetCrackUrlA InternetCrackUrl; - alias InternetCreateUrlA InternetCreateUrl; - alias InternetCanonicalizeUrlA InternetCanonicalizeUrl; - alias InternetCheckConnectionA InternetCheckConnection; - alias InternetCombineUrlA InternetCombineUrl; - alias InternetOpenA InternetOpen; - alias InternetConnectA InternetConnect; - alias InternetOpenUrlA InternetOpenUrl; - alias InternetFindNextFileA InternetFindNextFile; - alias InternetQueryOptionA InternetQueryOption; - alias InternetSetOptionA InternetSetOption; - alias InternetSetOptionExA InternetSetOptionEx; - alias InternetGetLastResponseInfoA InternetGetLastResponseInfo; - alias InternetReadFileExA InternetReadFileEx; - alias FtpFindFirstFileA FtpFindFirstFile; - alias FtpGetFileA FtpGetFile; - alias FtpPutFileA FtpPutFile; - alias FtpDeleteFileA FtpDeleteFile; - alias FtpRenameFileA FtpRenameFile; - alias FtpOpenFileA FtpOpenFile; - alias FtpCreateDirectoryA FtpCreateDirectory; - alias FtpRemoveDirectoryA FtpRemoveDirectory; - alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory; - alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory; - alias FtpCommandA FtpCommand; - alias GopherGetLocatorTypeA GopherGetLocatorType; - alias GopherCreateLocatorA GopherCreateLocator; - alias GopherFindFirstFileA GopherFindFirstFile; - alias GopherOpenFileA GopherOpenFile; - alias HttpSendRequestA HttpSendRequest; - alias HttpOpenRequestA HttpOpenRequest; - alias HttpAddRequestHeadersA HttpAddRequestHeaders; - alias HttpQueryInfoA HttpQueryInfo; - alias InternetSetCookieA InternetSetCookie; - alias InternetGetCookieA InternetGetCookie; - alias CreateUrlCacheEntryA CreateUrlCacheEntry; - alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream; - alias FindNextUrlCacheEntryA FindNextUrlCacheEntry; - alias CommitUrlCacheEntryA CommitUrlCacheEntry; - alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo; - alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo; - alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry; - alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile; - alias HttpSendRequestExA HttpSendRequestEx; - alias HttpEndRequestA HttpEndRequest; - alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute; - alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute; -} - -alias INTERNET_BUFFERS* LPINTERNET_BUFFERS; +/***********************************************************************\ +* wininet.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wininet; +pragma(lib, "wininet"); + +// FIXME: check types and grouping of constants + +import win32.windows; + +enum { + INTERNET_INVALID_PORT_NUMBER = 0, + INTERNET_DEFAULT_FTP_PORT = 21, + INTERNET_DEFAULT_GOPHER_PORT = 70, + INTERNET_DEFAULT_HTTP_PORT = 80, + INTERNET_DEFAULT_HTTPS_PORT = 443, + INTERNET_DEFAULT_SOCKS_PORT = 1080 +} + +const size_t + MAX_CACHE_ENTRY_INFO_SIZE = 4096, + INTERNET_MAX_HOST_NAME_LENGTH = 256, + INTERNET_MAX_USER_NAME_LENGTH = 128, + INTERNET_MAX_PASSWORD_LENGTH = 128, + INTERNET_MAX_PORT_NUMBER_LENGTH = 5, + INTERNET_MAX_PORT_NUMBER_VALUE = 65535, + INTERNET_MAX_PATH_LENGTH = 2048, + INTERNET_MAX_SCHEME_LENGTH = 32, + INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH + + "://".length + + INTERNET_MAX_PATH_LENGTH; + +enum : DWORD { + INTERNET_KEEP_ALIVE_UNKNOWN = DWORD.max, + INTERNET_KEEP_ALIVE_DISABLED = 0, + INTERNET_KEEP_ALIVE_ENABLED +} + +enum { + INTERNET_REQFLAG_FROM_CACHE = 1, + INTERNET_REQFLAG_ASYNC = 2 +} + +const DWORD + INTERNET_FLAG_RELOAD = 0x80000000, + INTERNET_FLAG_RAW_DATA = 0x40000000, + INTERNET_FLAG_EXISTING_CONNECT = 0x20000000, + INTERNET_FLAG_ASYNC = 0x10000000, + INTERNET_FLAG_PASSIVE = 0x08000000, + INTERNET_FLAG_NO_CACHE_WRITE = 0x04000000, + INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE, + INTERNET_FLAG_MAKE_PERSISTENT = 0x02000000, + INTERNET_FLAG_OFFLINE = 0x01000000, + INTERNET_FLAG_SECURE = 0x00800000, + INTERNET_FLAG_KEEP_CONNECTION = 0x00400000, + INTERNET_FLAG_NO_AUTO_REDIRECT = 0x00200000, + INTERNET_FLAG_READ_PREFETCH = 0x00100000, + INTERNET_FLAG_NO_COOKIES = 0x00080000, + INTERNET_FLAG_NO_AUTH = 0x00040000, + INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = 0x00008000, + INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000, + INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, + INTERNET_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, + INTERNET_FLAG_RESYNCHRONIZE = 0x00000800, + INTERNET_FLAG_HYPERLINK = 0x00000400, + INTERNET_FLAG_NO_UI = 0x00000200, + INTERNET_FLAG_PRAGMA_NOCACHE = 0x00000100, + INTERNET_FLAG_MUST_CACHE_REQUEST = 0x00000010, + INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII, + INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY, + + SECURITY_INTERNET_MASK = 0x0000F000, + SECURITY_SET_MASK = SECURITY_INTERNET_MASK, + + INTERNET_FLAGS_MASK = 0xFFFCFE13, + INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK; + +const INTERNET_NO_CALLBACK = 0; +const INTERNET_RFC1123_FORMAT = 0; +const size_t INTERNET_RFC1123_BUFSIZE = 30; + +const DWORD + ICU_ESCAPE = 0x80000000, + ICU_USERNAME = 0x40000000, + ICU_NO_ENCODE = 0x20000000, + ICU_DECODE = 0x10000000, + ICU_NO_META = 0x08000000, + ICU_ENCODE_SPACES_ONLY = 0x04000000, + ICU_BROWSER_MODE = 0x02000000; + +enum { + INTERNET_OPEN_TYPE_PRECONFIG = 0, + INTERNET_OPEN_TYPE_DIRECT = 1, + INTERNET_OPEN_TYPE_PROXY = 3, + PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG, + LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT, + GATEWAY_INTERNET_ACCESS = 2, + CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY, +} + +const ISO_GLOBAL = 1; +const ISO_REGISTRY = 2; +const ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY; + +enum { + INTERNET_OPTION_CALLBACK = 1, + INTERNET_OPTION_CONNECT_TIMEOUT, + INTERNET_OPTION_CONNECT_RETRIES, + INTERNET_OPTION_CONNECT_BACKOFF, + INTERNET_OPTION_SEND_TIMEOUT, + INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT, + INTERNET_OPTION_RECEIVE_TIMEOUT, + INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT, + INTERNET_OPTION_DATA_SEND_TIMEOUT, + INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, + INTERNET_OPTION_HANDLE_TYPE, + INTERNET_OPTION_CONTEXT_VALUE, + INTERNET_OPTION_LISTEN_TIMEOUT, + INTERNET_OPTION_READ_BUFFER_SIZE, + INTERNET_OPTION_WRITE_BUFFER_SIZE, // = 13 + INTERNET_OPTION_ASYNC_ID = 15, + INTERNET_OPTION_ASYNC_PRIORITY, // = 16 + INTERNET_OPTION_PARENT_HANDLE = 21, + INTERNET_OPTION_KEEP_CONNECTION, + INTERNET_OPTION_REQUEST_FLAGS, + INTERNET_OPTION_EXTENDED_ERROR, // = 24 + INTERNET_OPTION_OFFLINE_MODE = 26, + INTERNET_OPTION_CACHE_STREAM_HANDLE, + INTERNET_OPTION_USERNAME, + INTERNET_OPTION_PASSWORD, + INTERNET_OPTION_ASYNC, + INTERNET_OPTION_SECURITY_FLAGS, + INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, + INTERNET_OPTION_DATAFILE_NAME, + INTERNET_OPTION_URL, + INTERNET_OPTION_SECURITY_CERTIFICATE, + INTERNET_OPTION_SECURITY_KEY_BITNESS, + INTERNET_OPTION_REFRESH, + INTERNET_OPTION_PROXY, + INTERNET_OPTION_SETTINGS_CHANGED, + INTERNET_OPTION_VERSION, + INTERNET_OPTION_USER_AGENT, + INTERNET_OPTION_END_BROWSER_SESSION, + INTERNET_OPTION_PROXY_USERNAME, + INTERNET_OPTION_PROXY_PASSWORD, // = 44 + INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK, + // why? + INTERNET_LAST_OPTION = INTERNET_OPTION_USER_AGENT +} + +const INTERNET_PRIORITY_FOREGROUND = 1000; + +enum { + INTERNET_HANDLE_TYPE_INTERNET = 1, + INTERNET_HANDLE_TYPE_CONNECT_FTP, + INTERNET_HANDLE_TYPE_CONNECT_GOPHER, + INTERNET_HANDLE_TYPE_CONNECT_HTTP, + INTERNET_HANDLE_TYPE_FTP_FIND, + INTERNET_HANDLE_TYPE_FTP_FIND_HTML, + INTERNET_HANDLE_TYPE_FTP_FILE, + INTERNET_HANDLE_TYPE_FTP_FILE_HTML, + INTERNET_HANDLE_TYPE_GOPHER_FIND, + INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML, + INTERNET_HANDLE_TYPE_GOPHER_FILE, + INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML, + INTERNET_HANDLE_TYPE_HTTP_REQUEST +} + +const DWORD + SECURITY_FLAG_SECURE = 0x00000001, + SECURITY_FLAG_SSL = 0x00000002, + SECURITY_FLAG_SSL3 = 0x00000004, + SECURITY_FLAG_PCT = 0x00000008, + SECURITY_FLAG_PCT4 = 0x00000010, + SECURITY_FLAG_IETFSSL4 = 0x00000020, + SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080, + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, + SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200, + SECURITY_FLAG_40BIT = 0x10000000, + SECURITY_FLAG_128BIT = 0x20000000, + SECURITY_FLAG_56BIT = 0x40000000, + SECURITY_FLAG_UNKNOWNBIT = 0x80000000, + SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT, + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID, + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID, + SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS, + SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP; + +enum { + INTERNET_SERVICE_FTP = 1, + INTERNET_SERVICE_GOPHER, + INTERNET_SERVICE_HTTP +} + +enum { + INTERNET_STATUS_RESOLVING_NAME = 10, + INTERNET_STATUS_NAME_RESOLVED = 11, + INTERNET_STATUS_CONNECTING_TO_SERVER = 20, + INTERNET_STATUS_CONNECTED_TO_SERVER = 21, + INTERNET_STATUS_SENDING_REQUEST = 30, + INTERNET_STATUS_REQUEST_SENT = 31, + INTERNET_STATUS_RECEIVING_RESPONSE = 40, + INTERNET_STATUS_RESPONSE_RECEIVED = 41, + INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42, + INTERNET_STATUS_PREFETCH = 43, + INTERNET_STATUS_CLOSING_CONNECTION = 50, + INTERNET_STATUS_CONNECTION_CLOSED = 51, + INTERNET_STATUS_HANDLE_CREATED = 60, + INTERNET_STATUS_HANDLE_CLOSING = 70, + INTERNET_STATUS_REQUEST_COMPLETE = 100, + INTERNET_STATUS_REDIRECT = 110 +} + +enum { + FTP_TRANSFER_TYPE_UNKNOWN = 0, + FTP_TRANSFER_TYPE_ASCII = 1, + FTP_TRANSFER_TYPE_BINARY = 2, + FTP_TRANSFER_TYPE_MASK = 3 +} + +const size_t + MAX_GOPHER_DISPLAY_TEXT = 128, + MAX_GOPHER_SELECTOR_TEXT = 256, + MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH, + MAX_GOPHER_LOCATOR_LENGTH + = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1 + + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4; + +const DWORD + GOPHER_TYPE_TEXT_FILE = 0x00000001, + GOPHER_TYPE_DIRECTORY = 0x00000002, + GOPHER_TYPE_CSO = 0x00000004, + GOPHER_TYPE_ERROR = 0x00000008, + GOPHER_TYPE_MAC_BINHEX = 0x00000010, + GOPHER_TYPE_DOS_ARCHIVE = 0x00000020, + GOPHER_TYPE_UNIX_UUENCODED = 0x00000040, + GOPHER_TYPE_INDEX_SERVER = 0x00000080, + GOPHER_TYPE_TELNET = 0x00000100, + GOPHER_TYPE_BINARY = 0x00000200, + GOPHER_TYPE_REDUNDANT = 0x00000400, + GOPHER_TYPE_TN3270 = 0x00000800, + GOPHER_TYPE_GIF = 0x00001000, + GOPHER_TYPE_IMAGE = 0x00002000, + GOPHER_TYPE_BITMAP = 0x00004000, + GOPHER_TYPE_MOVIE = 0x00008000, + GOPHER_TYPE_SOUND = 0x00010000, + GOPHER_TYPE_HTML = 0x00020000, + GOPHER_TYPE_PDF = 0x00040000, + GOPHER_TYPE_CALENDAR = 0x00080000, + GOPHER_TYPE_INLINE = 0x00100000, + GOPHER_TYPE_UNKNOWN = 0x20000000, + GOPHER_TYPE_ASK = 0x40000000, + GOPHER_TYPE_GOPHER_PLUS = 0x80000000, + GOPHER_TYPE_FILE_MASK = 0x001FF271; + +BOOL IS_GOPHER_FILE(DWORD t) { + return !!(t & GOPHER_TYPE_FILE_MASK); +} + +BOOL IS_GOPHER_DIRECTORY(DWORD t) { + return !!(t & GOPHER_TYPE_DIRECTORY); +} + +BOOL IS_GOPHER_PHONE_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_CSO); +} + +BOOL IS_GOPHER_ERROR(DWORD t) { + return !!(t & GOPHER_TYPE_ERROR); +} + +BOOL IS_GOPHER_INDEX_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_INDEX_SERVER); +} + +BOOL IS_GOPHER_TELNET_SESSION(DWORD t) { + return !!(t & GOPHER_TYPE_TELNET); +} + +BOOL IS_GOPHER_BACKUP_SERVER(DWORD t) { + return !!(t & GOPHER_TYPE_REDUNDANT); +} + +BOOL IS_GOPHER_TN3270_SESSION(DWORD t) { + return !!(t & GOPHER_TYPE_TN3270); +} + +BOOL IS_GOPHER_ASK(DWORD t) { + return !!(t & GOPHER_TYPE_ASK); +} + +BOOL IS_GOPHER_PLUS(DWORD t) { + return !!(t & GOPHER_TYPE_GOPHER_PLUS); +} + +BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) { + return !(t & GOPHER_TYPE_UNKNOWN); +} + +const size_t + MAX_GOPHER_CATEGORY_NAME = 128, + MAX_GOPHER_ATTRIBUTE_NAME = 128, + MIN_GOPHER_ATTRIBUTE_LENGTH = 256; + +const TCHAR[] + GOPHER_INFO_CATEGORY = "+INFO", + GOPHER_ADMIN_CATEGORY = "+ADMIN", + GOPHER_VIEWS_CATEGORY = "+VIEWS", + GOPHER_ABSTRACT_CATEGORY = "+ABSTRACT", + GOPHER_VERONICA_CATEGORY = "+VERONICA", + GOPHER_ADMIN_ATTRIBUTE = "Admin", + GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date", + GOPHER_TTL_ATTRIBUTE = "TTL", + GOPHER_SCORE_ATTRIBUTE = "Score", + GOPHER_RANGE_ATTRIBUTE = "Score-range", + GOPHER_SITE_ATTRIBUTE = "Site", + GOPHER_ORG_ATTRIBUTE = "Org", + GOPHER_LOCATION_ATTRIBUTE = "Loc", + GOPHER_GEOG_ATTRIBUTE = "Geog", + GOPHER_TIMEZONE_ATTRIBUTE = "TZ", + GOPHER_PROVIDER_ATTRIBUTE = "Provider", + GOPHER_VERSION_ATTRIBUTE = "Version", + GOPHER_ABSTRACT_ATTRIBUTE = "Abstract", + GOPHER_VIEW_ATTRIBUTE = "View", + GOPHER_TREEWALK_ATTRIBUTE = "treewalk"; + +enum : DWORD { + GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00, + GOPHER_CATEGORY_ID_ALL, + GOPHER_CATEGORY_ID_INFO, + GOPHER_CATEGORY_ID_ADMIN, + GOPHER_CATEGORY_ID_VIEWS, + GOPHER_CATEGORY_ID_ABSTRACT, + GOPHER_CATEGORY_ID_VERONICA, + GOPHER_CATEGORY_ID_ASK, + GOPHER_CATEGORY_ID_UNKNOWN, + GOPHER_ATTRIBUTE_ID_ALL, + GOPHER_ATTRIBUTE_ID_ADMIN, + GOPHER_ATTRIBUTE_ID_MOD_DATE, + GOPHER_ATTRIBUTE_ID_TTL, + GOPHER_ATTRIBUTE_ID_SCORE, + GOPHER_ATTRIBUTE_ID_RANGE, + GOPHER_ATTRIBUTE_ID_SITE, + GOPHER_ATTRIBUTE_ID_ORG, + GOPHER_ATTRIBUTE_ID_LOCATION, + GOPHER_ATTRIBUTE_ID_GEOG, + GOPHER_ATTRIBUTE_ID_TIMEZONE, + GOPHER_ATTRIBUTE_ID_PROVIDER, + GOPHER_ATTRIBUTE_ID_VERSION, + GOPHER_ATTRIBUTE_ID_ABSTRACT, + GOPHER_ATTRIBUTE_ID_VIEW, + GOPHER_ATTRIBUTE_ID_TREEWALK, + GOPHER_ATTRIBUTE_ID_UNKNOWN +} + +const HTTP_MAJOR_VERSION = 1; +const HTTP_MINOR_VERSION = 0; +const TCHAR[] HTTP_VERSION = "HTTP/1.0"; + +enum : DWORD { + HTTP_QUERY_MIME_VERSION, + HTTP_QUERY_CONTENT_TYPE, + HTTP_QUERY_CONTENT_TRANSFER_ENCODING, + HTTP_QUERY_CONTENT_ID, + HTTP_QUERY_CONTENT_DESCRIPTION, + HTTP_QUERY_CONTENT_LENGTH, + HTTP_QUERY_CONTENT_LANGUAGE, + HTTP_QUERY_ALLOW, + HTTP_QUERY_PUBLIC, + HTTP_QUERY_DATE, + HTTP_QUERY_EXPIRES, + HTTP_QUERY_LAST_MODIFIED, + HTTP_QUERY_MESSAGE_ID, + HTTP_QUERY_URI, + HTTP_QUERY_DERIVED_FROM, + HTTP_QUERY_COST, + HTTP_QUERY_LINK, + HTTP_QUERY_PRAGMA, + HTTP_QUERY_VERSION, + HTTP_QUERY_STATUS_CODE, + HTTP_QUERY_STATUS_TEXT, + HTTP_QUERY_RAW_HEADERS, + HTTP_QUERY_RAW_HEADERS_CRLF, + HTTP_QUERY_CONNECTION, + HTTP_QUERY_ACCEPT, + HTTP_QUERY_ACCEPT_CHARSET, + HTTP_QUERY_ACCEPT_ENCODING, + HTTP_QUERY_ACCEPT_LANGUAGE, + HTTP_QUERY_AUTHORIZATION, + HTTP_QUERY_CONTENT_ENCODING, + HTTP_QUERY_FORWARDED, + HTTP_QUERY_FROM, + HTTP_QUERY_IF_MODIFIED_SINCE, + HTTP_QUERY_LOCATION, + HTTP_QUERY_ORIG_URI, + HTTP_QUERY_REFERER, + HTTP_QUERY_RETRY_AFTER, + HTTP_QUERY_SERVER, + HTTP_QUERY_TITLE, + HTTP_QUERY_USER_AGENT, + HTTP_QUERY_WWW_AUTHENTICATE, + HTTP_QUERY_PROXY_AUTHENTICATE, + HTTP_QUERY_ACCEPT_RANGES, + HTTP_QUERY_SET_COOKIE, + HTTP_QUERY_COOKIE, + HTTP_QUERY_REQUEST_METHOD, + HTTP_QUERY_MAX = 45, + HTTP_QUERY_CUSTOM = 65535 +} + +const DWORD + HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, + HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, + HTTP_QUERY_FLAG_NUMBER = 0x20000000, + HTTP_QUERY_FLAG_COALESCE = 0x10000000, + HTTP_QUERY_MODIFIER_FLAGS_MASK = 0xF0000000, + HTTP_QUERY_HEADER_MASK = ~HTTP_QUERY_MODIFIER_FLAGS_MASK; + +enum { + HTTP_STATUS_OK = 200, + HTTP_STATUS_CREATED, + HTTP_STATUS_ACCEPTED, + HTTP_STATUS_PARTIAL, + HTTP_STATUS_NO_CONTENT, // = 204 + HTTP_STATUS_AMBIGUOUS = 300, + HTTP_STATUS_MOVED, + HTTP_STATUS_REDIRECT, + HTTP_STATUS_REDIRECT_METHOD, + HTTP_STATUS_NOT_MODIFIED, // = 304 + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_DENIED, + HTTP_STATUS_PAYMENT_REQ, + HTTP_STATUS_FORBIDDEN, + HTTP_STATUS_NOT_FOUND, + HTTP_STATUS_BAD_METHOD, + HTTP_STATUS_NONE_ACCEPTABLE, + HTTP_STATUS_PROXY_AUTH_REQ, + HTTP_STATUS_REQUEST_TIMEOUT, + HTTP_STATUS_CONFLICT, + HTTP_STATUS_GONE, + HTTP_STATUS_AUTH_REFUSED, // = 411 + HTTP_STATUS_SERVER_ERROR = 500, + HTTP_STATUS_NOT_SUPPORTED, + HTTP_STATUS_BAD_GATEWAY, + HTTP_STATUS_SERVICE_UNAVAIL, + HTTP_STATUS_GATEWAY_TIMEOUT // = 504 +} + +enum { + INTERNET_PREFETCH_PROGRESS, + INTERNET_PREFETCH_COMPLETE, + INTERNET_PREFETCH_ABORTED +} + +const FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01; +const FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02; +const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04; +const FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08; + +const DWORD + HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, + HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, + HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, + HTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, + HTTP_ADDREQ_FLAG_ADD = 0x20000000, + HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, + HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, + HTTP_ADDREQ_FLAG_REPLACE = 0x80000000; + +enum { + INTERNET_ERROR_BASE = 12000, + ERROR_INTERNET_OUT_OF_HANDLES, + ERROR_INTERNET_TIMEOUT, + ERROR_INTERNET_EXTENDED_ERROR, + ERROR_INTERNET_INTERNAL_ERROR, + ERROR_INTERNET_INVALID_URL, + ERROR_INTERNET_UNRECOGNIZED_SCHEME, + ERROR_INTERNET_NAME_NOT_RESOLVED, + ERROR_INTERNET_PROTOCOL_NOT_FOUND, + ERROR_INTERNET_INVALID_OPTION, + ERROR_INTERNET_BAD_OPTION_LENGTH, + ERROR_INTERNET_OPTION_NOT_SETTABLE, + ERROR_INTERNET_SHUTDOWN, + ERROR_INTERNET_INCORRECT_USER_NAME, + ERROR_INTERNET_INCORRECT_PASSWORD, + ERROR_INTERNET_LOGIN_FAILURE, + ERROR_INTERNET_INVALID_OPERATION, + ERROR_INTERNET_OPERATION_CANCELLED, + ERROR_INTERNET_INCORRECT_HANDLE_TYPE, + ERROR_INTERNET_INCORRECT_HANDLE_STATE, + ERROR_INTERNET_NOT_PROXY_REQUEST, + ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND, + ERROR_INTERNET_BAD_REGISTRY_PARAMETER, + ERROR_INTERNET_NO_DIRECT_ACCESS, + ERROR_INTERNET_NO_CONTEXT, + ERROR_INTERNET_NO_CALLBACK, + ERROR_INTERNET_REQUEST_PENDING, + ERROR_INTERNET_INCORRECT_FORMAT, + ERROR_INTERNET_ITEM_NOT_FOUND, + ERROR_INTERNET_CANNOT_CONNECT, + ERROR_INTERNET_CONNECTION_ABORTED, + ERROR_INTERNET_CONNECTION_RESET, + ERROR_INTERNET_FORCE_RETRY, + ERROR_INTERNET_INVALID_PROXY_REQUEST, + ERROR_INTERNET_NEED_UI, // = INTERNET_ERROR_BASE + 34 + ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36, + ERROR_INTERNET_SEC_CERT_DATE_INVALID, + ERROR_INTERNET_SEC_CERT_CN_INVALID, + ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, + ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR, + ERROR_INTERNET_MIXED_SECURITY, + ERROR_INTERNET_CHG_POST_IS_NON_SECURE, + ERROR_INTERNET_POST_IS_NON_SECURE, + ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED, + ERROR_INTERNET_INVALID_CA, + ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP, + ERROR_INTERNET_ASYNC_THREAD_FAILED, + ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE + 48 + + ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110, + ERROR_FTP_DROPPED, // = INTERNET_ERROR_BASE + 111 + ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130, + ERROR_GOPHER_NOT_FILE, + ERROR_GOPHER_DATA_ERROR, + ERROR_GOPHER_END_OF_DATA, + ERROR_GOPHER_INVALID_LOCATOR, + ERROR_GOPHER_INCORRECT_LOCATOR_TYPE, + ERROR_GOPHER_NOT_GOPHER_PLUS, + ERROR_GOPHER_ATTRIBUTE_NOT_FOUND, + ERROR_GOPHER_UNKNOWN_LOCATOR, // = INTERNET_ERROR_BASE + 138, + ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150, + ERROR_HTTP_DOWNLEVEL_SERVER, + ERROR_HTTP_INVALID_SERVER_RESPONSE, + ERROR_HTTP_INVALID_HEADER, + ERROR_HTTP_INVALID_QUERY_REQUEST, + ERROR_HTTP_HEADER_ALREADY_EXISTS, + ERROR_HTTP_REDIRECT_FAILED, + ERROR_INTERNET_SECURITY_CHANNEL_ERROR, + ERROR_INTERNET_UNABLE_TO_CACHE_FILE, + ERROR_INTERNET_TCPIP_NOT_INSTALLED, + ERROR_HTTP_NOT_REDIRECTED, // = INTERNET_ERROR_BASE + 160 + // why? + INTERNET_ERROR_LAST = ERROR_INTERNET_TCPIP_NOT_INSTALLED +} + + +const NORMAL_CACHE_ENTRY = 0x000001; +const STABLE_CACHE_ENTRY = 0x000002; +const STICKY_CACHE_ENTRY = 0x000004; +const SPARSE_CACHE_ENTRY = 0x010000; +const OCX_CACHE_ENTRY = 0x020000; +const COOKIE_CACHE_ENTRY = 0x100000; +const URLHISTORY_CACHE_ENTRY = 0x200000; + +const CACHE_ENTRY_ATTRIBUTE_FC = 0x0004; +const CACHE_ENTRY_HITRATE_FC = 0x0010; +const CACHE_ENTRY_MODTIME_FC = 0x0040; +const CACHE_ENTRY_EXPTIME_FC = 0x0080; +const CACHE_ENTRY_ACCTIME_FC = 0x0100; +const CACHE_ENTRY_SYNCTIME_FC = 0x0200; +const CACHE_ENTRY_HEADERINFO_FC = 0x0400; + +enum { + WININET_API_FLAG_ASYNC = 1, + WININET_API_FLAG_SYNC = 4, + WININET_API_FLAG_USE_CONTEXT = 8 +} + +// FIXME: how should these really be grouped? +enum { + IRF_ASYNC = WININET_API_FLAG_ASYNC, + IRF_SYNC = WININET_API_FLAG_SYNC, + IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, +} +const IRF_NO_WAIT = 8; + +enum { + HSR_ASYNC = WININET_API_FLAG_ASYNC, + HSR_SYNC = WININET_API_FLAG_SYNC, + HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT, +} + +const HSR_INITIATE = 8; +const HSR_DOWNLOAD = 16; +const HSR_CHUNKED = 32; + +const INTERNET_DIAL_UNATTENDED = 0x8000; +const INTERNET_DIALSTATE_DISCONNECTED = 1; +const INTERENT_GOONLINE_REFRESH = 1; +const INTERENT_GOONLINE_MASK = 1; +const INTERNET_AUTODIAL_FORCE_ONLINE = 1; +const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2; +const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4; +const INTERNET_CONNECTION_MODEM = 0x01; +const INTERNET_CONNECTION_LAN = 0x02; +const INTERNET_CONNECTION_PROXY = 0x04; +const INTERNET_CONNECTION_MODEM_BUSY = 0x08; +const INTERNET_RAS_INSTALLED = 0x10; +const INTERNET_CONNECTION_OFFLINE = 0x20; +const INTERNET_CONNECTION_CONFIGURED = 0x40; + +enum { + CACHEGROUP_SEARCH_ALL = 0, + CACHEGROUP_SEARCH_BYURL = 1 +} + +enum { + INTERNET_CACHE_GROUP_ADD = 0, + INTERNET_CACHE_GROUP_REMOVE = 1 +} + +mixin DECLARE_HANDLE!("HINTERNET"); // doesn't work - bug +/*struct HINTERNET { + HANDLE h; + alias h this; +}*/ +alias HINTERNET* LPHINTERNET; + +alias LONGLONG GROUPID; +alias WORD INTERNET_PORT; +alias WORD* LPINTERNET_PORT; + +enum INTERNET_SCHEME { + INTERNET_SCHEME_PARTIAL = -2, + INTERNET_SCHEME_UNKNOWN, + INTERNET_SCHEME_DEFAULT, + INTERNET_SCHEME_FTP, + INTERNET_SCHEME_GOPHER, + INTERNET_SCHEME_HTTP, + INTERNET_SCHEME_HTTPS, + INTERNET_SCHEME_FILE, + INTERNET_SCHEME_NEWS, + INTERNET_SCHEME_MAILTO, + INTERNET_SCHEME_SOCKS, + INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, + INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS +} +alias INTERNET_SCHEME* LPINTERNET_SCHEME; + +struct INTERNET_ASYNC_RESULT { + DWORD dwResult; + DWORD dwError; +} +alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT; + +struct INTERNET_PREFETCH_STATUS { + DWORD dwStatus; + DWORD dwSize; +} +alias INTERNET_PREFETCH_STATUS* LPINTERNET_PREFETCH_STATUS; + +struct INTERNET_PROXY_INFO { + DWORD dwAccessType; + LPCTSTR lpszProxy; + LPCTSTR lpszProxyBypass; +} +alias INTERNET_PROXY_INFO* LPINTERNET_PROXY_INFO; + +struct INTERNET_VERSION_INFO { + DWORD dwMajorVersion; + DWORD dwMinorVersion; +} +alias INTERNET_VERSION_INFO* LPINTERNET_VERSION_INFO; + +struct URL_COMPONENTSA { + DWORD dwStructSize = URL_COMPONENTSA.sizeof; + LPSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPSTR lpszUserName; + DWORD dwUserNameLength; + LPSTR lpszPassword; + DWORD dwPasswordLength; + LPSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias URL_COMPONENTSA* LPURL_COMPONENTSA; + +struct URL_COMPONENTSW { + DWORD dwStructSize = URL_COMPONENTSW.sizeof; + LPWSTR lpszScheme; + DWORD dwSchemeLength; + INTERNET_SCHEME nScheme; + LPWSTR lpszHostName; + DWORD dwHostNameLength; + INTERNET_PORT nPort; + LPWSTR lpszUserName; + DWORD dwUserNameLength; + LPWSTR lpszPassword; + DWORD dwPasswordLength; + LPWSTR lpszUrlPath; + DWORD dwUrlPathLength; + LPWSTR lpszExtraInfo; + DWORD dwExtraInfoLength; +} +alias URL_COMPONENTSW* LPURL_COMPONENTSW; + +struct INTERNET_CERTIFICATE_INFO { + FILETIME ftExpiry; + FILETIME ftStart; + LPTSTR lpszSubjectInfo; + LPTSTR lpszIssuerInfo; + LPTSTR lpszProtocolName; + LPTSTR lpszSignatureAlgName; + LPTSTR lpszEncryptionAlgName; + DWORD dwKeySize; +} +alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO; + +extern (Windows) alias void function(HINTERNET, DWORD, DWORD, PVOID, DWORD) + INTERNET_STATUS_CALLBACK; +alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK; + +const INTERNET_INVALID_STATUS_CALLBACK + = cast(INTERNET_STATUS_CALLBACK) -1; + +struct GOPHER_FIND_DATAA { + CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; +} +alias GOPHER_FIND_DATAA* LPGOPHER_FIND_DATAA; + +struct GOPHER_FIND_DATAW { + WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString; + DWORD GopherType; + DWORD SizeLow; + DWORD SizeHigh; + FILETIME LastModificationTime; + WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator; +} +alias GOPHER_FIND_DATAW* LPGOPHER_FIND_DATAW; + +struct GOPHER_ADMIN_ATTRIBUTE_TYPE { + LPCTSTR Comment; + LPCTSTR EmailAddress; +} +alias GOPHER_ADMIN_ATTRIBUTE_TYPE* LPGOPHER_ADMIN_ATTRIBUTE_TYPE; + +struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE { + FILETIME DateAndTime; +} +alias GOPHER_MOD_DATE_ATTRIBUTE_TYPE* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE; + +struct GOPHER_TTL_ATTRIBUTE_TYPE { + DWORD Ttl; +} +alias GOPHER_TTL_ATTRIBUTE_TYPE* LPGOPHER_TTL_ATTRIBUTE_TYPE; + +struct GOPHER_SCORE_ATTRIBUTE_TYPE { + INT Score; +} +alias GOPHER_SCORE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_ATTRIBUTE_TYPE; + +struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE { + INT LowerBound; + INT UpperBound; +} +alias GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE; + +struct GOPHER_SITE_ATTRIBUTE_TYPE { + LPCTSTR Site; +} +alias GOPHER_SITE_ATTRIBUTE_TYPE* LPGOPHER_SITE_ATTRIBUTE_TYPE; + +struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE { + LPCTSTR Organization; +} +alias GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE; + +struct GOPHER_LOCATION_ATTRIBUTE_TYPE { + LPCTSTR Location; +} +alias GOPHER_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_LOCATION_ATTRIBUTE_TYPE; + +struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE { + INT DegreesNorth; + INT MinutesNorth; + INT SecondsNorth; + INT DegreesEast; + INT MinutesEast; + INT SecondsEast; +} +alias GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE* + LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE; + +struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE { + INT Zone; +} +alias GOPHER_TIMEZONE_ATTRIBUTE_TYPE* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE; + +struct GOPHER_PROVIDER_ATTRIBUTE_TYPE { + LPCTSTR Provider; +} +alias GOPHER_PROVIDER_ATTRIBUTE_TYPE* LPGOPHER_PROVIDER_ATTRIBUTE_TYPE; + +struct GOPHER_VERSION_ATTRIBUTE_TYPE { + LPCTSTR Version; +} +alias GOPHER_VERSION_ATTRIBUTE_TYPE* LPGOPHER_VERSION_ATTRIBUTE_TYPE; + +struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE { + LPCTSTR ShortAbstract; + LPCTSTR AbstractFile; +} +alias GOPHER_ABSTRACT_ATTRIBUTE_TYPE* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE; + +struct GOPHER_VIEW_ATTRIBUTE_TYPE { + LPCTSTR ContentType; + LPCTSTR Language; + DWORD Size; +} +alias GOPHER_VIEW_ATTRIBUTE_TYPE* LPGOPHER_VIEW_ATTRIBUTE_TYPE; + +struct GOPHER_VERONICA_ATTRIBUTE_TYPE { + BOOL TreeWalk; +} +alias GOPHER_VERONICA_ATTRIBUTE_TYPE* LPGOPHER_VERONICA_ATTRIBUTE_TYPE; + +struct GOPHER_ASK_ATTRIBUTE_TYPE { + LPCTSTR QuestionType; + LPCTSTR QuestionText; +} +alias GOPHER_ASK_ATTRIBUTE_TYPE* LPGOPHER_ASK_ATTRIBUTE_TYPE; + +struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE { + LPCTSTR Text; +} +alias GOPHER_UNKNOWN_ATTRIBUTE_TYPE* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE; + +struct GOPHER_ATTRIBUTE_TYPE { + DWORD CategoryId; + DWORD AttributeId; + union { + GOPHER_ADMIN_ATTRIBUTE_TYPE Admin; + GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate; + GOPHER_TTL_ATTRIBUTE_TYPE Ttl; + GOPHER_SCORE_ATTRIBUTE_TYPE Score; + GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange; + GOPHER_SITE_ATTRIBUTE_TYPE Site; + GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization; + GOPHER_LOCATION_ATTRIBUTE_TYPE Location; + GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation; + GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone; + GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider; + GOPHER_VERSION_ATTRIBUTE_TYPE Version; + GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract; + GOPHER_VIEW_ATTRIBUTE_TYPE View; + GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica; + GOPHER_ASK_ATTRIBUTE_TYPE Ask; + GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown; + } /+AttributeType;+/ +} +alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE; + +alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD) + GOPHER_ATTRIBUTE_ENUMERATOR; + +struct INTERNET_CACHE_ENTRY_INFOA { + DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof; + LPSTR lpszSourceUrlName; + LPSTR lpszLocalFileName; + DWORD CacheEntryType; + DWORD dwUseCount; + DWORD dwHitRate; + DWORD dwSizeLow; + DWORD dwSizeHigh; + FILETIME LastModifiedTime; + FILETIME ExpireTime; + FILETIME LastAccessTime; + FILETIME LastSyncTime; + PBYTE lpHeaderInfo; + DWORD dwHeaderInfoSize; + LPSTR lpszFileExtension; + DWORD dwReserved; +} +alias INTERNET_CACHE_ENTRY_INFOA* LPINTERNET_CACHE_ENTRY_INFOA; + +struct INTERNET_CACHE_ENTRY_INFOW { + DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof; + LPWSTR lpszSourceUrlName; + LPWSTR lpszLocalFileName; + DWORD CacheEntryType; + DWORD dwUseCount; + DWORD dwHitRate; + DWORD dwSizeLow; + DWORD dwSizeHigh; + FILETIME LastModifiedTime; + FILETIME ExpireTime; + FILETIME LastAccessTime; + FILETIME LastSyncTime; + PBYTE lpHeaderInfo; + DWORD dwHeaderInfoSize; + LPWSTR lpszFileExtension; + DWORD dwReserved; +} +alias INTERNET_CACHE_ENTRY_INFOW* LPINTERNET_CACHE_ENTRY_INFOW; + +struct INTERNET_BUFFERSA { + DWORD dwStructSize = INTERNET_BUFFERSA.sizeof; + INTERNET_BUFFERSA* Next; + LPCSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; +} +alias INTERNET_BUFFERSA* LPINTERNET_BUFFERSA; + +struct INTERNET_BUFFERSW { + DWORD dwStructSize = INTERNET_BUFFERSW.sizeof; + INTERNET_BUFFERSW* Next; + LPCWSTR lpcszHeader; + DWORD dwHeadersLength; + DWORD dwHeadersTotal; + LPVOID lpvBuffer; + DWORD dwBufferLength; + DWORD dwBufferTotal; + DWORD dwOffsetLow; + DWORD dwOffsetHigh; +} +alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW; + +const size_t + GROUP_OWNER_STORAGE_SIZE = 4, + GROUPNAME_MAX_LENGTH = 120; + +struct INTERNET_CACHE_GROUP_INFOA { + DWORD dwGroupSize; + DWORD dwGroupFlags; + DWORD dwGroupType; + DWORD dwDiskUsage; + DWORD dwDiskQuota; + DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; + CHAR[GROUPNAME_MAX_LENGTH] szGroupName; +} +alias INTERNET_CACHE_GROUP_INFOA* LPINTERNET_CACHE_GROUP_INFOA; + +struct INTERNET_CACHE_GROUP_INFOW { + DWORD dwGroupSize; + DWORD dwGroupFlags; + DWORD dwGroupType; + DWORD dwDiskUsage; + DWORD dwDiskQuota; + DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage; + WCHAR[GROUPNAME_MAX_LENGTH] szGroupName; +} +alias INTERNET_CACHE_GROUP_INFOW* LPINTERNET_CACHE_GROUP_INFOW; + +extern (Windows) { + BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD); + BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD); + BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD); + BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA); + BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW); + BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD); + BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD); + BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD); + BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD); + BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD); + BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD); + BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD); + BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD); + HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD); + HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD); + BOOL InternetCloseHandle(HINTERNET); + HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR, + LPCSTR, DWORD, DWORD, DWORD); + HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR, + LPCWSTR, DWORD, DWORD, DWORD); + HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD, + DWORD); + HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD, + DWORD); + BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD); + DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD); + BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD); + BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD); + BOOL InternetFindNextFileA(HINTERNET, PVOID); + BOOL InternetFindNextFileW(HINTERNET, PVOID); + BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD); + BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD); + BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD); + BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD); + BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD); + BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD); + BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD); + BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD); + INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET, + INTERNET_STATUS_CALLBACK); + DWORD FtpGetFileSize(HINTERNET, LPDWORD); + HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD, + DWORD); + HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD, + DWORD); + BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD); + BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD); + BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); + BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL FtpDeleteFileA(HINTERNET, LPCSTR); + BOOL FtpDeleteFileW(HINTERNET, LPCWSTR); + BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR); + BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR); + HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD); + HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD); + BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR); + BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR); + BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR); + BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR); + BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD); + BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD); + BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*); + BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*); + BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD, + LPSTR, PDWORD); + BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD, + LPWSTR, PDWORD); + BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD); + BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD); + HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR, + LPGOPHER_FIND_DATAA, DWORD, DWORD); + HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR, + LPGOPHER_FIND_DATAW, DWORD, DWORD); + HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD); + HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD); + BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD, + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD, + PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD); + HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR, + LPCSTR*, DWORD, DWORD); + HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, + LPCWSTR*, DWORD, DWORD); + BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD); + BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD); + BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD); + BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD); + BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); + BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD); + BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR); + BOOL InternetSetCookieW(LPCWSTR, LPCWSTR, LPCWSTR); + BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD); + BOOL InternetGetCookieW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD); + DWORD InternetAttemptConnect(DWORD); + DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*); + DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL); + BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD); + BOOL CreateUrlCacheEntryW(LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD); + BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD, + LPBYTE, DWORD, LPCSTR, DWORD); + BOOL CommitUrlCacheEntryW(LPCWSTR, LPCWSTR, FILETIME, FILETIME, DWORD, + LPBYTE, DWORD, LPCWSTR, DWORD); + BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD, DWORD); + BOOL RetrieveUrlCacheEntryFileW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD, DWORD); + BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD); + HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD, BOOL, DWORD); + HANDLE RetrieveUrlCacheEntryStreamW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD, BOOL, DWORD); + BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD); + BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD); + BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); + BOOL GetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); + BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD); + BOOL SetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD); + HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, + PDWORD); + HANDLE FindFirstUrlCacheEntryW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, + PDWORD); + BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD); + BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD); + BOOL FindCloseUrlCache(HANDLE); + BOOL DeleteUrlCacheEntry(LPCSTR); + DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR, + LPSTR); + BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA, + LPINTERNET_BUFFERSA, DWORD, DWORD); + BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW, + LPINTERNET_BUFFERSW, DWORD, DWORD); + BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD); + BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD); + DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD); + DWORD InternetHangUp(DWORD, DWORD); + BOOL InternetGoOnline(LPTSTR, HWND, DWORD); + BOOL InternetAutodial(DWORD, DWORD); + BOOL InternetAutodialHangup(DWORD); + BOOL InternetGetConnectedState(LPDWORD, DWORD); + BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD); + BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR); + BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR); + GROUPID CreateUrlCacheGroup(DWORD, LPVOID); + BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID); + HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*, + LPVOID); + BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID); + BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID); + BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID); + BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOA, LPVOID); + BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD, + LPINTERNET_CACHE_GROUP_INFOW, LPVOID); +} + +version (Unicode) { + alias URL_COMPONENTSW URL_COMPONENTS; + alias LPURL_COMPONENTSW LPURL_COMPONENTS; + alias GOPHER_FIND_DATAW GOPHER_FIND_DATA; + alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA; + alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO; + alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO; + alias INTERNET_BUFFERSW INTERNET_BUFFERS; + alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO; + alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO; + alias InternetCrackUrlW InternetCrackUrl; + alias InternetCreateUrlW InternetCreateUrl; + alias InternetCanonicalizeUrlW InternetCanonicalizeUrl; + alias InternetCheckConnectionW InternetCheckConnection; + alias InternetCombineUrlW InternetCombineUrl; + alias InternetOpenW InternetOpen; + alias InternetConnectW InternetConnect; + alias InternetOpenUrlW InternetOpenUrl; + alias InternetFindNextFileW InternetFindNextFile; + alias InternetQueryOptionW InternetQueryOption; + alias InternetSetOptionW InternetSetOption; + alias InternetSetOptionExW InternetSetOptionEx; + alias InternetGetLastResponseInfoW InternetGetLastResponseInfo; + alias InternetReadFileExW InternetReadFileEx; + alias FtpFindFirstFileW FtpFindFirstFile; + alias FtpGetFileW FtpGetFile; + alias FtpPutFileW FtpPutFile; + alias FtpDeleteFileW FtpDeleteFile; + alias FtpRenameFileW FtpRenameFile; + alias FtpOpenFileW FtpOpenFile; + alias FtpCreateDirectoryW FtpCreateDirectory; + alias FtpRemoveDirectoryW FtpRemoveDirectory; + alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory; + alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory; + alias FtpCommandW FtpCommand; + alias GopherGetLocatorTypeW GopherGetLocatorType; + alias GopherCreateLocatorW GopherCreateLocator; + alias GopherFindFirstFileW GopherFindFirstFile; + alias GopherOpenFileW GopherOpenFile; + alias GopherGetAttributeW GopherGetAttribute; + alias HttpSendRequestW HttpSendRequest; + alias HttpOpenRequestW HttpOpenRequest; + alias HttpAddRequestHeadersW HttpAddRequestHeaders; + alias HttpQueryInfoW HttpQueryInfo; + alias InternetSetCookieW InternetSetCookie; + alias InternetGetCookieW InternetGetCookie; + alias CreateUrlCacheEntryW CreateUrlCacheEntry; + alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream; + alias FindNextUrlCacheEntryW FindNextUrlCacheEntry; + alias CommitUrlCacheEntryW CommitUrlCacheEntry; + alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo; + alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo; + alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry; + alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile; + alias HttpSendRequestExW HttpSendRequestEx; + alias HttpEndRequestW HttpEndRequest; + alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute; + alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute; +} else { + alias URL_COMPONENTSA URL_COMPONENTS; + alias LPURL_COMPONENTSA LPURL_COMPONENTS; + alias GOPHER_FIND_DATAA GOPHER_FIND_DATA; + alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA; + alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO; + alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO; + alias INTERNET_BUFFERSA INTERNET_BUFFERS; + alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO; + alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO; + alias GopherGetAttributeA GopherGetAttribute; + alias InternetCrackUrlA InternetCrackUrl; + alias InternetCreateUrlA InternetCreateUrl; + alias InternetCanonicalizeUrlA InternetCanonicalizeUrl; + alias InternetCheckConnectionA InternetCheckConnection; + alias InternetCombineUrlA InternetCombineUrl; + alias InternetOpenA InternetOpen; + alias InternetConnectA InternetConnect; + alias InternetOpenUrlA InternetOpenUrl; + alias InternetFindNextFileA InternetFindNextFile; + alias InternetQueryOptionA InternetQueryOption; + alias InternetSetOptionA InternetSetOption; + alias InternetSetOptionExA InternetSetOptionEx; + alias InternetGetLastResponseInfoA InternetGetLastResponseInfo; + alias InternetReadFileExA InternetReadFileEx; + alias FtpFindFirstFileA FtpFindFirstFile; + alias FtpGetFileA FtpGetFile; + alias FtpPutFileA FtpPutFile; + alias FtpDeleteFileA FtpDeleteFile; + alias FtpRenameFileA FtpRenameFile; + alias FtpOpenFileA FtpOpenFile; + alias FtpCreateDirectoryA FtpCreateDirectory; + alias FtpRemoveDirectoryA FtpRemoveDirectory; + alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory; + alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory; + alias FtpCommandA FtpCommand; + alias GopherGetLocatorTypeA GopherGetLocatorType; + alias GopherCreateLocatorA GopherCreateLocator; + alias GopherFindFirstFileA GopherFindFirstFile; + alias GopherOpenFileA GopherOpenFile; + alias HttpSendRequestA HttpSendRequest; + alias HttpOpenRequestA HttpOpenRequest; + alias HttpAddRequestHeadersA HttpAddRequestHeaders; + alias HttpQueryInfoA HttpQueryInfo; + alias InternetSetCookieA InternetSetCookie; + alias InternetGetCookieA InternetGetCookie; + alias CreateUrlCacheEntryA CreateUrlCacheEntry; + alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream; + alias FindNextUrlCacheEntryA FindNextUrlCacheEntry; + alias CommitUrlCacheEntryA CommitUrlCacheEntry; + alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo; + alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo; + alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry; + alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile; + alias HttpSendRequestExA HttpSendRequestEx; + alias HttpEndRequestA HttpEndRequest; + alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute; + alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute; +} + +alias INTERNET_BUFFERS* LPINTERNET_BUFFERS; Index: src/win32/winioctl.d ================================================================== --- src/win32/winioctl.d +++ src/win32/winioctl.d @@ -1,712 +1,712 @@ -/***********************************************************************\ -* winioctl.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winioctl; - -// FIXME: check types of some constants - -private import win32.basetyps, win32.windef; - -const size_t - HIST_NO_OF_BUCKETS = 24, - HISTOGRAM_BUCKET_SIZE = HISTOGRAM_BUCKET.sizeof, - DISK_HISTOGRAM_SIZE = DISK_HISTOGRAM.sizeof; - -alias DWORD DEVICE_TYPE; - -enum : DEVICE_TYPE { - FILE_DEVICE_BEEP = 1, - FILE_DEVICE_CD_ROM, - FILE_DEVICE_CD_ROM_FILE_SYSTEM, - FILE_DEVICE_CONTROLLER, - FILE_DEVICE_DATALINK, - FILE_DEVICE_DFS, - FILE_DEVICE_DISK, - FILE_DEVICE_DISK_FILE_SYSTEM, - FILE_DEVICE_FILE_SYSTEM, - FILE_DEVICE_INPORT_PORT, - FILE_DEVICE_KEYBOARD, - FILE_DEVICE_MAILSLOT, - FILE_DEVICE_MIDI_IN, - FILE_DEVICE_MIDI_OUT, - FILE_DEVICE_MOUSE, - FILE_DEVICE_MULTI_UNC_PROVIDER, - FILE_DEVICE_NAMED_PIPE, - FILE_DEVICE_NETWORK, - FILE_DEVICE_NETWORK_BROWSER, - FILE_DEVICE_NETWORK_FILE_SYSTEM, - FILE_DEVICE_NULL, - FILE_DEVICE_PARALLEL_PORT, - FILE_DEVICE_PHYSICAL_NETCARD, - FILE_DEVICE_PRINTER, - FILE_DEVICE_SCANNER, - FILE_DEVICE_SERIAL_MOUSE_PORT, - FILE_DEVICE_SERIAL_PORT, - FILE_DEVICE_SCREEN, - FILE_DEVICE_SOUND, - FILE_DEVICE_STREAMS, - FILE_DEVICE_TAPE, - FILE_DEVICE_TAPE_FILE_SYSTEM, - FILE_DEVICE_TRANSPORT, - FILE_DEVICE_UNKNOWN, - FILE_DEVICE_VIDEO, - FILE_DEVICE_VIRTUAL_DISK, - FILE_DEVICE_WAVE_IN, - FILE_DEVICE_WAVE_OUT, - FILE_DEVICE_8042_PORT, - FILE_DEVICE_NETWORK_REDIRECTOR, - FILE_DEVICE_BATTERY, - FILE_DEVICE_BUS_EXTENDER, - FILE_DEVICE_MODEM, - FILE_DEVICE_VDM, - FILE_DEVICE_MASS_STORAGE, - FILE_DEVICE_SMB, - FILE_DEVICE_KS, - FILE_DEVICE_CHANGER, - FILE_DEVICE_SMARTCARD, - FILE_DEVICE_ACPI, - FILE_DEVICE_DVD, - FILE_DEVICE_FULLSCREEN_VIDEO, - FILE_DEVICE_DFS_FILE_SYSTEM, - FILE_DEVICE_DFS_VOLUME, - FILE_DEVICE_SERENUM, - FILE_DEVICE_TERMSRV, - FILE_DEVICE_KSEC // = 57 -} - -enum { - METHOD_BUFFERED, - METHOD_IN_DIRECT, - METHOD_OUT_DIRECT, - METHOD_NEITHER -} - -enum { - FILE_ANY_ACCESS, - FILE_SPECIAL_ACCESS = 0, - FILE_READ_ACCESS, - FILE_WRITE_ACCESS -} - -/* Bit pattern: - * tttttttt tttttttt aaffffff ffffffmm - */ -/+ -#define CTL_CODE(t, f, m, a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) -+/ - -template CTL_CODE_T(DEVICE_TYPE t, uint f, uint m, uint a) { - const DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; -} - -DEVICE_TYPE DEVICE_TYPE_FROM_CTL_CODE(DWORD c) { - return (c & 0xFFFF0000) >> 16; -} - -const DEVICE_TYPE - IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE, - IOCTL_DISK_BASE = FILE_DEVICE_DISK, - IOCTL_VOLUME_BASE = 'V'; - -enum : DWORD { - IOCTL_STORAGE_CHECK_VERIFY = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_CHECK_VERIFY2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_EJECT_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_LOAD_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_LOAD_MEDIA2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_RESERVE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_RELEASE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_EJECTION_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_MCN_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_GET_MEDIA_TYPES_EX = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_RESET_BUS = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_RESET_DEVICE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_STORAGE_GET_DEVICE_NUMBER = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_STORAGE_PREDICT_FAILURE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS), - - IOCTL_DISK_GET_DRIVE_GEOMETRY = CTL_CODE_T!(IOCTL_DISK_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 1, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_GET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 4, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_FORMAT_TRACKS = CTL_CODE_T!(IOCTL_DISK_BASE, 6, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_REASSIGN_BLOCKS = CTL_CODE_T!(IOCTL_DISK_BASE, 7, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_PERFORMANCE = CTL_CODE_T!(IOCTL_DISK_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_IS_WRITABLE = CTL_CODE_T!(IOCTL_DISK_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_LOGGING = CTL_CODE_T!(IOCTL_DISK_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_FORMAT_TRACKS_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 11, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), - IOCTL_DISK_HISTOGRAM_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_HISTOGRAM_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_HISTOGRAM_RESET = CTL_CODE_T!(IOCTL_DISK_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_REQUEST_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_REQUEST_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_SET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_SET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x15, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_CREATE_DISK = CTL_CODE_T!(IOCTL_DISK_BASE, 0x16, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_LENGTH_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 0x17, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_PERFORMANCE_OFF = CTL_CODE_T!(IOCTL_DISK_BASE, 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GET_DRIVE_GEOMETRY_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_GROW_PARTITION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x34, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_GET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x35, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_SET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x36, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_DELETE_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_DISK_UPDATE_PROPERTIES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x50, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_CHECK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_DISK_BASE, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_EJECT_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x202, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_LOAD_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x203, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_RESERVE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x204, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_RELEASE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x205, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x206, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_REMOVE_DEVICE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x207, METHOD_BUFFERED, FILE_READ_ACCESS), - IOCTL_DISK_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x300, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_DISK_UPDATE_DRIVE_SIZE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), - IOCTL_SERIAL_LSRMST_INSERT = CTL_CODE_T!(FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS), - - IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = CTL_CODE_T!(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), - IOCTL_VOLUME_IS_CLUSTERED = CTL_CODE_T!(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), - - FSCTL_LOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_UNLOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_DISMOUNT_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_MOUNT_DBLS_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA|FILE_WRITE_DATA), - FSCTL_READ_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 17, METHOD_NEITHER, FILE_READ_DATA), - FSCTL_WRITE_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 18, METHOD_NEITHER, FILE_WRITE_DATA), - FSCTL_GET_NTFS_VOLUME_DATA = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_VOLUME_BITMAP = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS), - FSCTL_GET_RETRIEVAL_POINTERS = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS), - FSCTL_MOVE_FILE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_GET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_DELETE_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS), - FSCTL_SET_SPARSE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS), -} - -enum : BYTE { - PARTITION_ENTRY_UNUSED, - PARTITION_FAT_12, - PARTITION_XENIX_1, - PARTITION_XENIX_2, - PARTITION_FAT_16, - PARTITION_EXTENDED, - PARTITION_HUGE, - PARTITION_IFS, // = 0x07 - PARTITION_FAT32 = 0x0B, - PARTITION_FAT32_XINT13 = 0x0C, - PARTITION_XINT13 = 0x0E, - PARTITION_XINT13_EXTENDED = 0x0F, - PARTITION_PREP = 0x41, - PARTITION_LDM = 0x42, - PARTITION_UNIX = 0x63 -} - -const BYTE - PARTITION_NTFT = 0x80, - VALID_NTFT = 0xC0; - -enum { - SERIAL_LSRMST_ESCAPE, - SERIAL_LSRMST_LSR_DATA, - SERIAL_LSRMST_LSR_NODATA, - SERIAL_LSRMST_MST -} - -enum { - DISK_LOGGING_START, - DISK_LOGGING_STOP, - DISK_LOGGING_DUMP, - DISK_BINNING -} - -alias WORD BAD_TRACK_NUMBER; -alias WORD* PBAD_TRACK_NUMBER; - -enum BIN_TYPES { - RequestSize, RequestLocation -} - -struct BIN_RANGE { - LARGE_INTEGER StartValue; - LARGE_INTEGER Length; -} -alias BIN_RANGE* PBIN_RANGE; - -struct BIN_COUNT { - BIN_RANGE BinRange; - DWORD BinCount; -} -alias BIN_COUNT* PBIN_COUNT; - -struct BIN_RESULTS { - DWORD NumberOfBins; - BIN_COUNT _BinCounts; - - BIN_COUNT* BinCounts() { return &_BinCounts; } -} -alias BIN_RESULTS* PBIN_RESULTS; - -enum PARTITION_STYLE { - PARTITION_STYLE_MBR, - PARTITION_STYLE_GPT, - PARTITION_STYLE_RAW -} - -struct CREATE_DISK_GPT { - GUID DiskId; - DWORD MaxPartitionCount; -} -alias CREATE_DISK_GPT* PCREATE_DISK_GPT; - -struct CREATE_DISK_MBR { - DWORD Signature; -} -alias CREATE_DISK_MBR* PCREATE_DISK_MBR; - -struct CREATE_DISK { - PARTITION_STYLE PartitionStyle; - union { - CREATE_DISK_MBR Mbr; - CREATE_DISK_GPT Gpt; - } -} -alias CREATE_DISK* PCREATE_DISK; - -enum DISK_CACHE_RETENTION_PRIORITY { - EqualPriority, - KeepPrefetchedData, - KeepReadData -} - -struct DISK_CACHE_INFORMATION { - BOOLEAN ParametersSavable; - BOOLEAN ReadCacheEnabled; - BOOLEAN WriteCacheEnabled; - DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; - DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; - WORD DisablePrefetchTransferLength; - BOOLEAN PrefetchScalar; - union { - struct _ScalarPrefetch { - WORD Minimum; - WORD Maximum; - WORD MaximumBlocks; - } - _ScalarPrefetch ScalarPrefetch; - struct _BlockPrefetch { - WORD Minimum; - WORD Maximum; - } - _BlockPrefetch BlockPrefetch; - } -} -alias DISK_CACHE_INFORMATION* PDISK_CACHE_INFORMATION; - -enum DETECTION_TYPE { - DetectNone, - DetectInt13, - DetectExInt13 -} - -struct DISK_INT13_INFO { - WORD DriveSelect; - DWORD MaxCylinders; - WORD SectorsPerTrack; - WORD MaxHeads; - WORD NumberDrives; - } -alias DISK_INT13_INFO* PDISK_INT13_INFO; - -struct DISK_EX_INT13_INFO { - WORD ExBufferSize; - WORD ExFlags; - DWORD ExCylinders; - DWORD ExHeads; - DWORD ExSectorsPerTrack; - DWORD64 ExSectorsPerDrive; - WORD ExSectorSize; - WORD ExReserved; -} -alias DISK_EX_INT13_INFO* PDISK_EX_INT13_INFO; - -struct DISK_DETECTION_INFO { - DWORD SizeOfDetectInfo; - DETECTION_TYPE DetectionType; - DISK_INT13_INFO Int13; - DISK_EX_INT13_INFO ExInt13; -} -alias DISK_DETECTION_INFO* PDISK_DETECTION_INFO; - -enum MEDIA_TYPE { - 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, - F3_120M_512, - F3_640_512, - F5_640_512, - F5_720_512, - F3_1Pt2_512, - F3_1Pt23_1024, - F5_1Pt23_1024, - F3_128Mb_512, - F3_230Mb_512, - F8_256_128, - F3_200Mb_512, - F3_240M_512, - F3_32M_512 -} -alias MEDIA_TYPE* PMEDIA_TYPE; - -struct DISK_GEOMETRY { - LARGE_INTEGER Cylinders; - MEDIA_TYPE MediaType; - DWORD TracksPerCylinder; - DWORD SectorsPerTrack; - DWORD BytesPerSector; -} -alias DISK_GEOMETRY* PDISK_GEOMETRY; - -struct DISK_GEOMETRY_EX { - DISK_GEOMETRY Geometry; - LARGE_INTEGER DiskSize; - BYTE _Data; - - BYTE* Data() { return &_Data; } -} -alias DISK_GEOMETRY_EX* PDISK_GEOMETRY_EX; - -struct DISK_GROW_PARTITION { - DWORD PartitionNumber; - LARGE_INTEGER BytesToGrow; -} -alias DISK_GROW_PARTITION* PDISK_GROW_PARTITION; - -struct DISK_PARTITION_INFO { - DWORD SizeOfPartitionInfo; - PARTITION_STYLE PartitionStyle; - union { - //struct { - DWORD Signature; - //} Mbr; - //struct { - GUID DiskId; - //} Gpt; - } -} -alias DISK_PARTITION_INFO* PDISK_PARTITION_INFO; - -struct DISK_PERFORMANCE { - LARGE_INTEGER BytesRead; - LARGE_INTEGER BytesWritten; - LARGE_INTEGER ReadTime; - LARGE_INTEGER WriteTime; - DWORD ReadCount; - DWORD WriteCount; - DWORD QueueDepth; -} -alias DISK_PERFORMANCE* PDISK_PERFORMANCE; - -struct DISK_RECORD { - LARGE_INTEGER ByteOffset; - LARGE_INTEGER StartTime; - LARGE_INTEGER EndTime; - PVOID VirtualAddress; - DWORD NumberOfBytes; - BYTE DeviceNumber; - BOOLEAN ReadRequest; -} -alias DISK_RECORD* PDISK_RECORD; - -struct DISK_LOGGING { - BYTE Function; - PVOID BufferAddress; - DWORD BufferSize; -} -alias DISK_LOGGING* PDISK_LOGGING; - -struct DISKQUOTA_USER_INFORMATION { - LONGLONG QuotaUsed; - LONGLONG QuotaThreshold; - LONGLONG QuotaLimit; -} -alias DISKQUOTA_USER_INFORMATION* PDISKQUOTA_USER_INFORMATION; - -struct FORMAT_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; -} -alias FORMAT_PARAMETERS* PFORMAT_PARAMETERS; - -struct FORMAT_EX_PARAMETERS { - MEDIA_TYPE MediaType; - DWORD StartCylinderNumber; - DWORD EndCylinderNumber; - DWORD StartHeadNumber; - DWORD EndHeadNumber; - WORD FormatGapLength; - WORD SectorsPerTrack; - WORD _SectorNumber; - - WORD* SectorNumber() { return &_SectorNumber; } -} -alias FORMAT_EX_PARAMETERS* PFORMAT_EX_PARAMETERS; - -struct GET_LENGTH_INFORMATION { - LARGE_INTEGER Length; -} - -struct HISTOGRAM_BUCKET { - DWORD Reads; - DWORD Writes; -} -alias HISTOGRAM_BUCKET* PHISTOGRAM_BUCKET; - -struct DISK_HISTOGRAM { - LARGE_INTEGER DiskSize; - LARGE_INTEGER Start; - LARGE_INTEGER End; - LARGE_INTEGER Average; - LARGE_INTEGER AverageRead; - LARGE_INTEGER AverageWrite; - DWORD Granularity; - DWORD Size; - DWORD ReadCount; - DWORD WriteCount; - PHISTOGRAM_BUCKET Histogram; -} -alias DISK_HISTOGRAM* PDISK_HISTOGRAM; - -struct DISK_EXTENT { - DWORD DiskNumber; - LARGE_INTEGER StartingOffset; - LARGE_INTEGER ExtentLength; -} -alias DISK_EXTENT* PDISK_EXTENT; - -struct VOLUME_DISK_EXTENTS { - DWORD NumberOfDiskExtents; - DISK_EXTENT _Extents; - - DISK_EXTENT* Extents() { return &_Extents; } -} -alias VOLUME_DISK_EXTENTS* PVOLUME_DISK_EXTENTS; - -struct PARTITION_INFORMATION { - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - DWORD HiddenSectors; - DWORD PartitionNumber; - BYTE PartitionType; - BOOLEAN BootIndicator; - BOOLEAN RecognizedPartition; - BOOLEAN RewritePartition; -} -alias PARTITION_INFORMATION* PPARTITION_INFORMATION; - -struct DRIVE_LAYOUT_INFORMATION { - DWORD PartitionCount; - DWORD Signature; - PARTITION_INFORMATION _PartitionEntry; - - PARTITION_INFORMATION* PartitionEntry() { return &_PartitionEntry; } -} -alias DRIVE_LAYOUT_INFORMATION* PDRIVE_LAYOUT_INFORMATION; - -struct DRIVE_LAYOUT_INFORMATION_GPT { - GUID DiskId; - LARGE_INTEGER StartingUsableOffset; - LARGE_INTEGER UsableLength; - ULONG MaxPartitionCount; -} -alias DRIVE_LAYOUT_INFORMATION_GPT* PDRIVE_LAYOUT_INFORMATION_GPT; - -struct DRIVE_LAYOUT_INFORMATION_MBR { - ULONG Signature; -} -alias DRIVE_LAYOUT_INFORMATION_MBR* PDRIVE_LAYOUT_INFORMATION_MBR; - -struct PARTITION_INFORMATION_MBR { - BYTE PartitionType; - BOOLEAN BootIndicator; - BOOLEAN RecognizedPartition; - DWORD HiddenSectors; -} - -struct PARTITION_INFORMATION_GPT { - GUID PartitionType; - GUID PartitionId; - DWORD64 Attributes; - WCHAR[36] Name; -} - -struct PARTITION_INFORMATION_EX { - PARTITION_STYLE PartitionStyle; - LARGE_INTEGER StartingOffset; - LARGE_INTEGER PartitionLength; - DWORD PartitionNumber; - BOOLEAN RewritePartition; - union { - PARTITION_INFORMATION_MBR Mbr; - PARTITION_INFORMATION_GPT Gpt; - } -} - -struct DRIVE_LAYOUT_INFORMATION_EX { - DWORD PartitionStyle; - DWORD PartitionCount; - union { - DRIVE_LAYOUT_INFORMATION_MBR Mbr; - DRIVE_LAYOUT_INFORMATION_GPT Gpt; - } - PARTITION_INFORMATION_EX _PartitionEntry; - - PARTITION_INFORMATION_EX* PartitionEntry() { return &_PartitionEntry; } -} -alias DRIVE_LAYOUT_INFORMATION_EX* PDRIVE_LAYOUT_INFORMATION_EX; - -struct MOVE_FILE_DATA { - HANDLE FileHandle; - LARGE_INTEGER StartingVcn; - LARGE_INTEGER StartingLcn; - DWORD ClusterCount; -} -alias MOVE_FILE_DATA* PMOVE_FILE_DATA; - -struct PERF_BIN { - DWORD NumberOfBins; - DWORD TypeOfBin; - BIN_RANGE _BinsRanges; - - BIN_RANGE* BinsRanges() { return &_BinsRanges; } -} -alias PERF_BIN* PPERF_BIN; - -struct PREVENT_MEDIA_REMOVAL { - BOOLEAN PreventMediaRemoval; -} -alias PREVENT_MEDIA_REMOVAL* PPREVENT_MEDIA_REMOVAL; - -struct RETRIEVAL_POINTERS_BUFFER { - DWORD ExtentCount; - LARGE_INTEGER StartingVcn; - // In MinGW, this is declared as struct { ... } Extents[1]; - struct Extent { - LARGE_INTEGER NextVcn; - LARGE_INTEGER Lcn; - } - Extent _Extents; - - Extent* Extents() { return &_Extents; } -} -alias RETRIEVAL_POINTERS_BUFFER* PRETRIEVAL_POINTERS_BUFFER; - -struct REASSIGN_BLOCKS { - WORD Reserved; - WORD Count; - DWORD _BlockNumber; - - DWORD* BlockNumber() { return &_BlockNumber; } -} -alias REASSIGN_BLOCKS* PREASSIGN_BLOCKS; - -struct SET_PARTITION_INFORMATION { - BYTE PartitionType; -} -alias SET_PARTITION_INFORMATION* PSET_PARTITION_INFORMATION; - -struct STARTING_LCN_INPUT_BUFFER { - LARGE_INTEGER StartingLcn; -} -alias STARTING_LCN_INPUT_BUFFER* PSTARTING_LCN_INPUT_BUFFER; - -struct STARTING_VCN_INPUT_BUFFER { - LARGE_INTEGER StartingVcn; -} -alias STARTING_VCN_INPUT_BUFFER* PSTARTING_VCN_INPUT_BUFFER; - -struct VERIFY_INFORMATION { - LARGE_INTEGER StartingOffset; - DWORD Length; -} -alias VERIFY_INFORMATION* PVERIFY_INFORMATION; - -struct VOLUME_BITMAP_BUFFER { - LARGE_INTEGER StartingLcn; - LARGE_INTEGER BitmapSize; - BYTE _Buffer; - - BYTE* Buffer() { return &_Buffer; } -} -alias VOLUME_BITMAP_BUFFER* PVOLUME_BITMAP_BUFFER; - -struct NTFS_VOLUME_DATA_BUFFER { - LARGE_INTEGER VolumeSerialNumber; - LARGE_INTEGER NumberSectors; - LARGE_INTEGER TotalClusters; - LARGE_INTEGER FreeClusters; - LARGE_INTEGER TotalReserved; - DWORD BytesPerSector; - DWORD BytesPerCluster; - DWORD BytesPerFileRecordSegment; - DWORD ClustersPerFileRecordSegment; - LARGE_INTEGER MftValidDataLength; - LARGE_INTEGER MftStartLcn; - LARGE_INTEGER Mft2StartLcn; - LARGE_INTEGER MftZoneStart; - LARGE_INTEGER MftZoneEnd; -} -alias NTFS_VOLUME_DATA_BUFFER* PNTFS_VOLUME_DATA_BUFFER; - - -bool IsRecognizedPartition(BYTE t) { - return ((t & PARTITION_NTFT) - && ((t & ~VALID_NTFT) == PARTITION_FAT_12 - || (t & ~VALID_NTFT) == PARTITION_FAT_16 - || (t & ~VALID_NTFT) == PARTITION_IFS - || (t & ~VALID_NTFT) == PARTITION_HUGE - || (t & ~VALID_NTFT) == PARTITION_FAT32 - || (t & ~VALID_NTFT) == PARTITION_FAT32_XINT13 - || (t & ~VALID_NTFT) == PARTITION_XINT13)) - || (t & ~PARTITION_NTFT) == PARTITION_FAT_12 - || (t & ~PARTITION_NTFT) == PARTITION_FAT_16 - || (t & ~PARTITION_NTFT) == PARTITION_IFS - || (t & ~PARTITION_NTFT) == PARTITION_HUGE - || (t & ~PARTITION_NTFT) == PARTITION_FAT32 - || (t & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13 - || (t & ~PARTITION_NTFT) == PARTITION_XINT13; -} - -bool IsContainerPartition(BYTE t) { - return ((t & PARTITION_NTFT) - && ((t & ~VALID_NTFT) == PARTITION_EXTENDED - || (t & ~VALID_NTFT) == PARTITION_XINT13_EXTENDED)) - || (t & ~PARTITION_NTFT) == PARTITION_EXTENDED - || (t & ~PARTITION_NTFT) == PARTITION_XINT13_EXTENDED; -} +/***********************************************************************\ +* winioctl.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winioctl; + +// FIXME: check types of some constants + +private import win32.basetyps, win32.windef; + +const size_t + HIST_NO_OF_BUCKETS = 24, + HISTOGRAM_BUCKET_SIZE = HISTOGRAM_BUCKET.sizeof, + DISK_HISTOGRAM_SIZE = DISK_HISTOGRAM.sizeof; + +alias DWORD DEVICE_TYPE; + +enum : DEVICE_TYPE { + FILE_DEVICE_BEEP = 1, + FILE_DEVICE_CD_ROM, + FILE_DEVICE_CD_ROM_FILE_SYSTEM, + FILE_DEVICE_CONTROLLER, + FILE_DEVICE_DATALINK, + FILE_DEVICE_DFS, + FILE_DEVICE_DISK, + FILE_DEVICE_DISK_FILE_SYSTEM, + FILE_DEVICE_FILE_SYSTEM, + FILE_DEVICE_INPORT_PORT, + FILE_DEVICE_KEYBOARD, + FILE_DEVICE_MAILSLOT, + FILE_DEVICE_MIDI_IN, + FILE_DEVICE_MIDI_OUT, + FILE_DEVICE_MOUSE, + FILE_DEVICE_MULTI_UNC_PROVIDER, + FILE_DEVICE_NAMED_PIPE, + FILE_DEVICE_NETWORK, + FILE_DEVICE_NETWORK_BROWSER, + FILE_DEVICE_NETWORK_FILE_SYSTEM, + FILE_DEVICE_NULL, + FILE_DEVICE_PARALLEL_PORT, + FILE_DEVICE_PHYSICAL_NETCARD, + FILE_DEVICE_PRINTER, + FILE_DEVICE_SCANNER, + FILE_DEVICE_SERIAL_MOUSE_PORT, + FILE_DEVICE_SERIAL_PORT, + FILE_DEVICE_SCREEN, + FILE_DEVICE_SOUND, + FILE_DEVICE_STREAMS, + FILE_DEVICE_TAPE, + FILE_DEVICE_TAPE_FILE_SYSTEM, + FILE_DEVICE_TRANSPORT, + FILE_DEVICE_UNKNOWN, + FILE_DEVICE_VIDEO, + FILE_DEVICE_VIRTUAL_DISK, + FILE_DEVICE_WAVE_IN, + FILE_DEVICE_WAVE_OUT, + FILE_DEVICE_8042_PORT, + FILE_DEVICE_NETWORK_REDIRECTOR, + FILE_DEVICE_BATTERY, + FILE_DEVICE_BUS_EXTENDER, + FILE_DEVICE_MODEM, + FILE_DEVICE_VDM, + FILE_DEVICE_MASS_STORAGE, + FILE_DEVICE_SMB, + FILE_DEVICE_KS, + FILE_DEVICE_CHANGER, + FILE_DEVICE_SMARTCARD, + FILE_DEVICE_ACPI, + FILE_DEVICE_DVD, + FILE_DEVICE_FULLSCREEN_VIDEO, + FILE_DEVICE_DFS_FILE_SYSTEM, + FILE_DEVICE_DFS_VOLUME, + FILE_DEVICE_SERENUM, + FILE_DEVICE_TERMSRV, + FILE_DEVICE_KSEC // = 57 +} + +enum { + METHOD_BUFFERED, + METHOD_IN_DIRECT, + METHOD_OUT_DIRECT, + METHOD_NEITHER +} + +enum { + FILE_ANY_ACCESS, + FILE_SPECIAL_ACCESS = 0, + FILE_READ_ACCESS, + FILE_WRITE_ACCESS +} + +/* Bit pattern: + * tttttttt tttttttt aaffffff ffffffmm + */ +/+ +#define CTL_CODE(t, f, m, a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) ++/ + +template CTL_CODE_T(DEVICE_TYPE t, uint f, uint m, uint a) { + const DWORD CTL_CODE_T = (t << 16) | (a << 14) | (f << 2) | m; +} + +DEVICE_TYPE DEVICE_TYPE_FROM_CTL_CODE(DWORD c) { + return (c & 0xFFFF0000) >> 16; +} + +const DEVICE_TYPE + IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE, + IOCTL_DISK_BASE = FILE_DEVICE_DISK, + IOCTL_VOLUME_BASE = 'V'; + +enum : DWORD { + IOCTL_STORAGE_CHECK_VERIFY = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_CHECK_VERIFY2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_EJECT_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_LOAD_MEDIA = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_LOAD_MEDIA2 = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_RESERVE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_RELEASE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_EJECTION_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_MCN_CONTROL = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_GET_MEDIA_TYPES_EX = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_RESET_BUS = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_RESET_DEVICE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_STORAGE_GET_DEVICE_NUMBER = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_STORAGE_PREDICT_FAILURE = CTL_CODE_T!(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS), + + IOCTL_DISK_GET_DRIVE_GEOMETRY = CTL_CODE_T!(IOCTL_DISK_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 1, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_PARTITION_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_GET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 4, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_FORMAT_TRACKS = CTL_CODE_T!(IOCTL_DISK_BASE, 6, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_REASSIGN_BLOCKS = CTL_CODE_T!(IOCTL_DISK_BASE, 7, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_PERFORMANCE = CTL_CODE_T!(IOCTL_DISK_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_IS_WRITABLE = CTL_CODE_T!(IOCTL_DISK_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_LOGGING = CTL_CODE_T!(IOCTL_DISK_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_FORMAT_TRACKS_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 11, METHOD_BUFFERED, FILE_READ_ACCESS|FILE_WRITE_ACCESS), + IOCTL_DISK_HISTOGRAM_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_HISTOGRAM_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_HISTOGRAM_RESET = CTL_CODE_T!(IOCTL_DISK_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_REQUEST_STRUCTURE = CTL_CODE_T!(IOCTL_DISK_BASE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_REQUEST_DATA = CTL_CODE_T!(IOCTL_DISK_BASE, 16, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x12, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_SET_PARTITION_INFO_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x14, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_SET_DRIVE_LAYOUT_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x15, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_CREATE_DISK = CTL_CODE_T!(IOCTL_DISK_BASE, 0x16, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_LENGTH_INFO = CTL_CODE_T!(IOCTL_DISK_BASE, 0x17, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_PERFORMANCE_OFF = CTL_CODE_T!(IOCTL_DISK_BASE, 0x18, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GET_DRIVE_GEOMETRY_EX = CTL_CODE_T!(IOCTL_DISK_BASE, 0x28, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_GROW_PARTITION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x34, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_GET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x35, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_SET_CACHE_INFORMATION = CTL_CODE_T!(IOCTL_DISK_BASE, 0x36, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_DELETE_DRIVE_LAYOUT = CTL_CODE_T!(IOCTL_DISK_BASE, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_DISK_UPDATE_PROPERTIES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x50, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_CHECK_VERIFY = CTL_CODE_T!(IOCTL_DISK_BASE, 0x200, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_MEDIA_REMOVAL = CTL_CODE_T!(IOCTL_DISK_BASE, 0x201, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_EJECT_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x202, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_LOAD_MEDIA = CTL_CODE_T!(IOCTL_DISK_BASE, 0x203, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_RESERVE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x204, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_RELEASE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x205, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_FIND_NEW_DEVICES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x206, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_REMOVE_DEVICE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x207, METHOD_BUFFERED, FILE_READ_ACCESS), + IOCTL_DISK_GET_MEDIA_TYPES = CTL_CODE_T!(IOCTL_DISK_BASE, 0x300, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_DISK_UPDATE_DRIVE_SIZE = CTL_CODE_T!(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS), + IOCTL_SERIAL_LSRMST_INSERT = CTL_CODE_T!(FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS), + + IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = CTL_CODE_T!(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS), + IOCTL_VOLUME_IS_CLUSTERED = CTL_CODE_T!(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS), + + FSCTL_LOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_UNLOCK_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_DISMOUNT_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_MOUNT_DBLS_VOLUME = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 13, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA|FILE_WRITE_DATA), + FSCTL_READ_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 17, METHOD_NEITHER, FILE_READ_DATA), + FSCTL_WRITE_COMPRESSION = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 18, METHOD_NEITHER, FILE_WRITE_DATA), + FSCTL_GET_NTFS_VOLUME_DATA = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_VOLUME_BITMAP = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS), + FSCTL_GET_RETRIEVAL_POINTERS = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS), + FSCTL_MOVE_FILE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_GET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_DELETE_REPARSE_POINT = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS), + FSCTL_SET_SPARSE = CTL_CODE_T!(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS), +} + +enum : BYTE { + PARTITION_ENTRY_UNUSED, + PARTITION_FAT_12, + PARTITION_XENIX_1, + PARTITION_XENIX_2, + PARTITION_FAT_16, + PARTITION_EXTENDED, + PARTITION_HUGE, + PARTITION_IFS, // = 0x07 + PARTITION_FAT32 = 0x0B, + PARTITION_FAT32_XINT13 = 0x0C, + PARTITION_XINT13 = 0x0E, + PARTITION_XINT13_EXTENDED = 0x0F, + PARTITION_PREP = 0x41, + PARTITION_LDM = 0x42, + PARTITION_UNIX = 0x63 +} + +const BYTE + PARTITION_NTFT = 0x80, + VALID_NTFT = 0xC0; + +enum { + SERIAL_LSRMST_ESCAPE, + SERIAL_LSRMST_LSR_DATA, + SERIAL_LSRMST_LSR_NODATA, + SERIAL_LSRMST_MST +} + +enum { + DISK_LOGGING_START, + DISK_LOGGING_STOP, + DISK_LOGGING_DUMP, + DISK_BINNING +} + +alias WORD BAD_TRACK_NUMBER; +alias WORD* PBAD_TRACK_NUMBER; + +enum BIN_TYPES { + RequestSize, RequestLocation +} + +struct BIN_RANGE { + LARGE_INTEGER StartValue; + LARGE_INTEGER Length; +} +alias BIN_RANGE* PBIN_RANGE; + +struct BIN_COUNT { + BIN_RANGE BinRange; + DWORD BinCount; +} +alias BIN_COUNT* PBIN_COUNT; + +struct BIN_RESULTS { + DWORD NumberOfBins; + BIN_COUNT _BinCounts; + + BIN_COUNT* BinCounts() { return &_BinCounts; } +} +alias BIN_RESULTS* PBIN_RESULTS; + +enum PARTITION_STYLE { + PARTITION_STYLE_MBR, + PARTITION_STYLE_GPT, + PARTITION_STYLE_RAW +} + +struct CREATE_DISK_GPT { + GUID DiskId; + DWORD MaxPartitionCount; +} +alias CREATE_DISK_GPT* PCREATE_DISK_GPT; + +struct CREATE_DISK_MBR { + DWORD Signature; +} +alias CREATE_DISK_MBR* PCREATE_DISK_MBR; + +struct CREATE_DISK { + PARTITION_STYLE PartitionStyle; + union { + CREATE_DISK_MBR Mbr; + CREATE_DISK_GPT Gpt; + } +} +alias CREATE_DISK* PCREATE_DISK; + +enum DISK_CACHE_RETENTION_PRIORITY { + EqualPriority, + KeepPrefetchedData, + KeepReadData +} + +struct DISK_CACHE_INFORMATION { + BOOLEAN ParametersSavable; + BOOLEAN ReadCacheEnabled; + BOOLEAN WriteCacheEnabled; + DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; + DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; + WORD DisablePrefetchTransferLength; + BOOLEAN PrefetchScalar; + union { + struct _ScalarPrefetch { + WORD Minimum; + WORD Maximum; + WORD MaximumBlocks; + } + _ScalarPrefetch ScalarPrefetch; + struct _BlockPrefetch { + WORD Minimum; + WORD Maximum; + } + _BlockPrefetch BlockPrefetch; + } +} +alias DISK_CACHE_INFORMATION* PDISK_CACHE_INFORMATION; + +enum DETECTION_TYPE { + DetectNone, + DetectInt13, + DetectExInt13 +} + +struct DISK_INT13_INFO { + WORD DriveSelect; + DWORD MaxCylinders; + WORD SectorsPerTrack; + WORD MaxHeads; + WORD NumberDrives; + } +alias DISK_INT13_INFO* PDISK_INT13_INFO; + +struct DISK_EX_INT13_INFO { + WORD ExBufferSize; + WORD ExFlags; + DWORD ExCylinders; + DWORD ExHeads; + DWORD ExSectorsPerTrack; + DWORD64 ExSectorsPerDrive; + WORD ExSectorSize; + WORD ExReserved; +} +alias DISK_EX_INT13_INFO* PDISK_EX_INT13_INFO; + +struct DISK_DETECTION_INFO { + DWORD SizeOfDetectInfo; + DETECTION_TYPE DetectionType; + DISK_INT13_INFO Int13; + DISK_EX_INT13_INFO ExInt13; +} +alias DISK_DETECTION_INFO* PDISK_DETECTION_INFO; + +enum MEDIA_TYPE { + 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, + F3_120M_512, + F3_640_512, + F5_640_512, + F5_720_512, + F3_1Pt2_512, + F3_1Pt23_1024, + F5_1Pt23_1024, + F3_128Mb_512, + F3_230Mb_512, + F8_256_128, + F3_200Mb_512, + F3_240M_512, + F3_32M_512 +} +alias MEDIA_TYPE* PMEDIA_TYPE; + +struct DISK_GEOMETRY { + LARGE_INTEGER Cylinders; + MEDIA_TYPE MediaType; + DWORD TracksPerCylinder; + DWORD SectorsPerTrack; + DWORD BytesPerSector; +} +alias DISK_GEOMETRY* PDISK_GEOMETRY; + +struct DISK_GEOMETRY_EX { + DISK_GEOMETRY Geometry; + LARGE_INTEGER DiskSize; + BYTE _Data; + + BYTE* Data() { return &_Data; } +} +alias DISK_GEOMETRY_EX* PDISK_GEOMETRY_EX; + +struct DISK_GROW_PARTITION { + DWORD PartitionNumber; + LARGE_INTEGER BytesToGrow; +} +alias DISK_GROW_PARTITION* PDISK_GROW_PARTITION; + +struct DISK_PARTITION_INFO { + DWORD SizeOfPartitionInfo; + PARTITION_STYLE PartitionStyle; + union { + //struct { + DWORD Signature; + //} Mbr; + //struct { + GUID DiskId; + //} Gpt; + } +} +alias DISK_PARTITION_INFO* PDISK_PARTITION_INFO; + +struct DISK_PERFORMANCE { + LARGE_INTEGER BytesRead; + LARGE_INTEGER BytesWritten; + LARGE_INTEGER ReadTime; + LARGE_INTEGER WriteTime; + DWORD ReadCount; + DWORD WriteCount; + DWORD QueueDepth; +} +alias DISK_PERFORMANCE* PDISK_PERFORMANCE; + +struct DISK_RECORD { + LARGE_INTEGER ByteOffset; + LARGE_INTEGER StartTime; + LARGE_INTEGER EndTime; + PVOID VirtualAddress; + DWORD NumberOfBytes; + BYTE DeviceNumber; + BOOLEAN ReadRequest; +} +alias DISK_RECORD* PDISK_RECORD; + +struct DISK_LOGGING { + BYTE Function; + PVOID BufferAddress; + DWORD BufferSize; +} +alias DISK_LOGGING* PDISK_LOGGING; + +struct DISKQUOTA_USER_INFORMATION { + LONGLONG QuotaUsed; + LONGLONG QuotaThreshold; + LONGLONG QuotaLimit; +} +alias DISKQUOTA_USER_INFORMATION* PDISKQUOTA_USER_INFORMATION; + +struct FORMAT_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; +} +alias FORMAT_PARAMETERS* PFORMAT_PARAMETERS; + +struct FORMAT_EX_PARAMETERS { + MEDIA_TYPE MediaType; + DWORD StartCylinderNumber; + DWORD EndCylinderNumber; + DWORD StartHeadNumber; + DWORD EndHeadNumber; + WORD FormatGapLength; + WORD SectorsPerTrack; + WORD _SectorNumber; + + WORD* SectorNumber() { return &_SectorNumber; } +} +alias FORMAT_EX_PARAMETERS* PFORMAT_EX_PARAMETERS; + +struct GET_LENGTH_INFORMATION { + LARGE_INTEGER Length; +} + +struct HISTOGRAM_BUCKET { + DWORD Reads; + DWORD Writes; +} +alias HISTOGRAM_BUCKET* PHISTOGRAM_BUCKET; + +struct DISK_HISTOGRAM { + LARGE_INTEGER DiskSize; + LARGE_INTEGER Start; + LARGE_INTEGER End; + LARGE_INTEGER Average; + LARGE_INTEGER AverageRead; + LARGE_INTEGER AverageWrite; + DWORD Granularity; + DWORD Size; + DWORD ReadCount; + DWORD WriteCount; + PHISTOGRAM_BUCKET Histogram; +} +alias DISK_HISTOGRAM* PDISK_HISTOGRAM; + +struct DISK_EXTENT { + DWORD DiskNumber; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER ExtentLength; +} +alias DISK_EXTENT* PDISK_EXTENT; + +struct VOLUME_DISK_EXTENTS { + DWORD NumberOfDiskExtents; + DISK_EXTENT _Extents; + + DISK_EXTENT* Extents() { return &_Extents; } +} +alias VOLUME_DISK_EXTENTS* PVOLUME_DISK_EXTENTS; + +struct PARTITION_INFORMATION { + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD HiddenSectors; + DWORD PartitionNumber; + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + BOOLEAN RewritePartition; +} +alias PARTITION_INFORMATION* PPARTITION_INFORMATION; + +struct DRIVE_LAYOUT_INFORMATION { + DWORD PartitionCount; + DWORD Signature; + PARTITION_INFORMATION _PartitionEntry; + + PARTITION_INFORMATION* PartitionEntry() { return &_PartitionEntry; } +} +alias DRIVE_LAYOUT_INFORMATION* PDRIVE_LAYOUT_INFORMATION; + +struct DRIVE_LAYOUT_INFORMATION_GPT { + GUID DiskId; + LARGE_INTEGER StartingUsableOffset; + LARGE_INTEGER UsableLength; + ULONG MaxPartitionCount; +} +alias DRIVE_LAYOUT_INFORMATION_GPT* PDRIVE_LAYOUT_INFORMATION_GPT; + +struct DRIVE_LAYOUT_INFORMATION_MBR { + ULONG Signature; +} +alias DRIVE_LAYOUT_INFORMATION_MBR* PDRIVE_LAYOUT_INFORMATION_MBR; + +struct PARTITION_INFORMATION_MBR { + BYTE PartitionType; + BOOLEAN BootIndicator; + BOOLEAN RecognizedPartition; + DWORD HiddenSectors; +} + +struct PARTITION_INFORMATION_GPT { + GUID PartitionType; + GUID PartitionId; + DWORD64 Attributes; + WCHAR[36] Name; +} + +struct PARTITION_INFORMATION_EX { + PARTITION_STYLE PartitionStyle; + LARGE_INTEGER StartingOffset; + LARGE_INTEGER PartitionLength; + DWORD PartitionNumber; + BOOLEAN RewritePartition; + union { + PARTITION_INFORMATION_MBR Mbr; + PARTITION_INFORMATION_GPT Gpt; + } +} + +struct DRIVE_LAYOUT_INFORMATION_EX { + DWORD PartitionStyle; + DWORD PartitionCount; + union { + DRIVE_LAYOUT_INFORMATION_MBR Mbr; + DRIVE_LAYOUT_INFORMATION_GPT Gpt; + } + PARTITION_INFORMATION_EX _PartitionEntry; + + PARTITION_INFORMATION_EX* PartitionEntry() { return &_PartitionEntry; } +} +alias DRIVE_LAYOUT_INFORMATION_EX* PDRIVE_LAYOUT_INFORMATION_EX; + +struct MOVE_FILE_DATA { + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + DWORD ClusterCount; +} +alias MOVE_FILE_DATA* PMOVE_FILE_DATA; + +struct PERF_BIN { + DWORD NumberOfBins; + DWORD TypeOfBin; + BIN_RANGE _BinsRanges; + + BIN_RANGE* BinsRanges() { return &_BinsRanges; } +} +alias PERF_BIN* PPERF_BIN; + +struct PREVENT_MEDIA_REMOVAL { + BOOLEAN PreventMediaRemoval; +} +alias PREVENT_MEDIA_REMOVAL* PPREVENT_MEDIA_REMOVAL; + +struct RETRIEVAL_POINTERS_BUFFER { + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + // In MinGW, this is declared as struct { ... } Extents[1]; + struct Extent { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } + Extent _Extents; + + Extent* Extents() { return &_Extents; } +} +alias RETRIEVAL_POINTERS_BUFFER* PRETRIEVAL_POINTERS_BUFFER; + +struct REASSIGN_BLOCKS { + WORD Reserved; + WORD Count; + DWORD _BlockNumber; + + DWORD* BlockNumber() { return &_BlockNumber; } +} +alias REASSIGN_BLOCKS* PREASSIGN_BLOCKS; + +struct SET_PARTITION_INFORMATION { + BYTE PartitionType; +} +alias SET_PARTITION_INFORMATION* PSET_PARTITION_INFORMATION; + +struct STARTING_LCN_INPUT_BUFFER { + LARGE_INTEGER StartingLcn; +} +alias STARTING_LCN_INPUT_BUFFER* PSTARTING_LCN_INPUT_BUFFER; + +struct STARTING_VCN_INPUT_BUFFER { + LARGE_INTEGER StartingVcn; +} +alias STARTING_VCN_INPUT_BUFFER* PSTARTING_VCN_INPUT_BUFFER; + +struct VERIFY_INFORMATION { + LARGE_INTEGER StartingOffset; + DWORD Length; +} +alias VERIFY_INFORMATION* PVERIFY_INFORMATION; + +struct VOLUME_BITMAP_BUFFER { + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + BYTE _Buffer; + + BYTE* Buffer() { return &_Buffer; } +} +alias VOLUME_BITMAP_BUFFER* PVOLUME_BITMAP_BUFFER; + +struct NTFS_VOLUME_DATA_BUFFER { + LARGE_INTEGER VolumeSerialNumber; + LARGE_INTEGER NumberSectors; + LARGE_INTEGER TotalClusters; + LARGE_INTEGER FreeClusters; + LARGE_INTEGER TotalReserved; + DWORD BytesPerSector; + DWORD BytesPerCluster; + DWORD BytesPerFileRecordSegment; + DWORD ClustersPerFileRecordSegment; + LARGE_INTEGER MftValidDataLength; + LARGE_INTEGER MftStartLcn; + LARGE_INTEGER Mft2StartLcn; + LARGE_INTEGER MftZoneStart; + LARGE_INTEGER MftZoneEnd; +} +alias NTFS_VOLUME_DATA_BUFFER* PNTFS_VOLUME_DATA_BUFFER; + + +bool IsRecognizedPartition(BYTE t) { + return ((t & PARTITION_NTFT) + && ((t & ~VALID_NTFT) == PARTITION_FAT_12 + || (t & ~VALID_NTFT) == PARTITION_FAT_16 + || (t & ~VALID_NTFT) == PARTITION_IFS + || (t & ~VALID_NTFT) == PARTITION_HUGE + || (t & ~VALID_NTFT) == PARTITION_FAT32 + || (t & ~VALID_NTFT) == PARTITION_FAT32_XINT13 + || (t & ~VALID_NTFT) == PARTITION_XINT13)) + || (t & ~PARTITION_NTFT) == PARTITION_FAT_12 + || (t & ~PARTITION_NTFT) == PARTITION_FAT_16 + || (t & ~PARTITION_NTFT) == PARTITION_IFS + || (t & ~PARTITION_NTFT) == PARTITION_HUGE + || (t & ~PARTITION_NTFT) == PARTITION_FAT32 + || (t & ~PARTITION_NTFT) == PARTITION_FAT32_XINT13 + || (t & ~PARTITION_NTFT) == PARTITION_XINT13; +} + +bool IsContainerPartition(BYTE t) { + return ((t & PARTITION_NTFT) + && ((t & ~VALID_NTFT) == PARTITION_EXTENDED + || (t & ~VALID_NTFT) == PARTITION_XINT13_EXTENDED)) + || (t & ~PARTITION_NTFT) == PARTITION_EXTENDED + || (t & ~PARTITION_NTFT) == PARTITION_XINT13_EXTENDED; +} Index: src/win32/winldap.d ================================================================== --- src/win32/winldap.d +++ src/win32/winldap.d @@ -1,854 +1,854 @@ -/***********************************************************************\ -* winldap.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winldap; - -/* Comment from MinGW - winldap.h - Header file for the Windows LDAP API - - Written by Filip Navara - - References: - The C LDAP Application Program Interface - http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt - - Lightweight Directory Access Protocol Reference - http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -*/ - -import win32.schannel, win32.winber; -private import win32.wincrypt, win32.windef; -version(Tango){ - private import tango.stdc.stdio; -} - -align(4): - -enum { - LDAP_VERSION1 = 1, - LDAP_VERSION2 = 2, - LDAP_VERSION3 = 3, - LDAP_VERSION = LDAP_VERSION2, - LDAP_VERSION_MIN = LDAP_VERSION2, - LDAP_VERSION_MAX = LDAP_VERSION3 -} - -/* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and - * LDAP_VENDOR_NAME_W respectively; similarly with other string constants - * defined in this module. - */ -const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation."; - -const LDAP_API_VERSION = 2004; -const LDAP_VENDOR_VERSION = 510; -const LDAP_API_INFO_VERSION = 1; -const LDAP_FEATURE_INFO_VERSION = 1; - -enum { - LDAP_SUCCESS = 0x00, - LDAP_OPT_SUCCESS = LDAP_SUCCESS, - LDAP_OPERATIONS_ERROR, - LDAP_PROTOCOL_ERROR, - LDAP_TIMELIMIT_EXCEEDED, - LDAP_SIZELIMIT_EXCEEDED, - LDAP_COMPARE_FALSE, - LDAP_COMPARE_TRUE, - LDAP_STRONG_AUTH_NOT_SUPPORTED, - LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED, - LDAP_STRONG_AUTH_REQUIRED, - LDAP_REFERRAL_V2, - LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2, - LDAP_REFERRAL, - LDAP_ADMIN_LIMIT_EXCEEDED, - LDAP_UNAVAILABLE_CRIT_EXTENSION, - LDAP_CONFIDENTIALITY_REQUIRED, - LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e - LDAP_NO_SUCH_ATTRIBUTE = 0x10, - LDAP_UNDEFINED_TYPE, - LDAP_INAPPROPRIATE_MATCHING, - LDAP_CONSTRAINT_VIOLATION, - LDAP_TYPE_OR_VALUE_EXISTS, - LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS, - LDAP_INVALID_SYNTAX, // = 0x15 - LDAP_NO_SUCH_OBJECT = 0x20, - LDAP_ALIAS_PROBLEM, - LDAP_INVALID_DN_SYNTAX, - LDAP_IS_LEAF, - LDAP_ALIAS_DEREF_PROBLEM, // = 0x24 - LDAP_INAPPROPRIATE_AUTH = 0x30, - LDAP_INVALID_CREDENTIALS, - LDAP_INSUFFICIENT_ACCESS, - LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS, - LDAP_BUSY, - LDAP_UNAVAILABLE, - LDAP_UNWILLING_TO_PERFORM, - LDAP_LOOP_DETECT, // = 0x36 - LDAP_NAMING_VIOLATION = 0x40, - LDAP_OBJECT_CLASS_VIOLATION, - LDAP_NOT_ALLOWED_ON_NONLEAF, - LDAP_NOT_ALLOWED_ON_RDN, - LDAP_ALREADY_EXISTS, - LDAP_NO_OBJECT_CLASS_MODS, - LDAP_RESULTS_TOO_LARGE, - LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47 - LDAP_OTHER = 0x50, - LDAP_SERVER_DOWN, - LDAP_LOCAL_ERROR, - LDAP_ENCODING_ERROR, - LDAP_DECODING_ERROR, - LDAP_TIMEOUT, - LDAP_AUTH_UNKNOWN, - LDAP_FILTER_ERROR, - LDAP_USER_CANCELLED, - LDAP_PARAM_ERROR, - LDAP_NO_MEMORY, - LDAP_CONNECT_ERROR, - LDAP_NOT_SUPPORTED, - LDAP_CONTROL_NOT_FOUND, - LDAP_NO_RESULTS_RETURNED, - LDAP_MORE_RESULTS_TO_RETURN, - LDAP_CLIENT_LOOP, - LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61 -} - -enum { - LDAP_PORT = 389, - LDAP_SSL_PORT = 636, - LDAP_GC_PORT = 3268, - LDAP_SSL_GC_PORT = 3269 -} - -const void* - LDAP_OPT_OFF = null, - LDAP_OPT_ON = cast(void*) 1; - -enum { - LDAP_OPT_API_INFO = 0x00, - LDAP_OPT_DESC, - LDAP_OPT_DEREF, - LDAP_OPT_SIZELIMIT, - LDAP_OPT_TIMELIMIT, - LDAP_OPT_THREAD_FN_PTRS, - LDAP_OPT_REBIND_FN, - LDAP_OPT_REBIND_ARG, - LDAP_OPT_REFERRALS, - LDAP_OPT_RESTART, - LDAP_OPT_SSL, - LDAP_OPT_TLS = LDAP_OPT_SSL, - LDAP_OPT_IO_FN_PTRS, // = 0x0b - LDAP_OPT_CACHE_FN_PTRS = 0x0d, - LDAP_OPT_CACHE_STRATEGY, - LDAP_OPT_CACHE_ENABLE, - LDAP_OPT_REFERRAL_HOP_LIMIT, - LDAP_OPT_PROTOCOL_VERSION, - LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION, - LDAP_OPT_SERVER_CONTROLS, - LDAP_OPT_CLIENT_CONTROLS, // = 0x13 - LDAP_OPT_API_FEATURE_INFO = 0x15, - LDAP_OPT_HOST_NAME = 0x30, - LDAP_OPT_ERROR_NUMBER, - LDAP_OPT_ERROR_STRING, - LDAP_OPT_SERVER_ERROR, - LDAP_OPT_SERVER_EXT_ERROR, // = 0x34 - LDAP_OPT_PING_KEEP_ALIVE = 0x36, - LDAP_OPT_PING_WAIT_TIME, - LDAP_OPT_PING_LIMIT, // = 0x38 - LDAP_OPT_DNSDOMAIN_NAME = 0x3b, - LDAP_OPT_GETDSNAME_FLAGS = 0x3d, - LDAP_OPT_HOST_REACHABLE, - LDAP_OPT_PROMPT_CREDENTIALS, - LDAP_OPT_TCP_KEEPALIVE, // = 0x40 - LDAP_OPT_REFERRAL_CALLBACK = 0x70, - LDAP_OPT_CLIENT_CERTIFICATE = 0x80, - LDAP_OPT_SERVER_CERTIFICATE, // = 0x81 - LDAP_OPT_AUTO_RECONNECT = 0x91, - LDAP_OPT_SSPI_FLAGS, - LDAP_OPT_SSL_INFO, - LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO, - LDAP_OPT_REF_DEREF_CONN_PER_MSG, - LDAP_OPT_SIGN, - LDAP_OPT_ENCRYPT, - LDAP_OPT_SASL_METHOD, - LDAP_OPT_AREC_EXCLUSIVE, - LDAP_OPT_SECURITY_CONTEXT, - LDAP_OPT_ROOTDSE_CACHE // = 0x9a -} - -enum { - LDAP_DEREF_NEVER, - LDAP_DEREF_SEARCHING, - LDAP_DEREF_FINDING, - LDAP_DEREF_ALWAYS -} - -const LDAP_NO_LIMIT = 0; - -const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616"; - -// FIXME: check type (declared with U suffix in MinGW) -enum : uint { - LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20, - LDAP_CHASE_EXTERNAL_REFERRALS = 0x40 -} - -enum { - LDAP_SCOPE_DEFAULT = -1, - LDAP_SCOPE_BASE, - LDAP_SCOPE_ONELEVEL, - LDAP_SCOPE_SUBTREE -} - -enum { - LDAP_MOD_ADD, - LDAP_MOD_DELETE, - LDAP_MOD_REPLACE, - LDAP_MOD_BVALUES = 0x80 -} - -enum : int { - LDAP_RES_BIND = 0x61, - LDAP_RES_SEARCH_ENTRY = 0x64, - LDAP_RES_SEARCH_RESULT = 0x65, - LDAP_RES_MODIFY = 0x67, - LDAP_RES_ADD = 0x69, - LDAP_RES_DELETE = 0x6b, - LDAP_RES_MODRDN = 0x6d, - LDAP_RES_COMPARE = 0x6f, - LDAP_RES_SEARCH_REFERENCE = 0x73, - LDAP_RES_EXTENDED = 0x78, - LDAP_RES_ANY = -1 -} - -enum { - LDAP_MSG_ONE, - LDAP_MSG_ALL, - LDAP_MSG_RECEIVED -} - -const TCHAR[] - LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473", - LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474", - LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319", - LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9", - LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10", - LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037", - LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1"; - -enum { - LDAP_AUTH_NONE = 0x00U, - LDAP_AUTH_SIMPLE = 0x80U, - LDAP_AUTH_SASL = 0x83U, - LDAP_AUTH_OTHERKIND = 0x86U, - LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U, - LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U, - LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U, - LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U, - LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U, - LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U, - LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U, - LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE -} - -enum { - LDAP_FILTER_AND = 0xa0, - LDAP_FILTER_OR, - LDAP_FILTER_NOT, - LDAP_FILTER_EQUALITY, - LDAP_FILTER_SUBSTRINGS, - LDAP_FILTER_GE, - LDAP_FILTER_LE, // = 0xa6 - LDAP_FILTER_APPROX = 0xa8, - LDAP_FILTER_EXTENSIBLE, - LDAP_FILTER_PRESENT = 0x87 -} - -enum { - LDAP_SUBSTRING_INITIAL = 0x80, - LDAP_SUBSTRING_ANY, - LDAP_SUBSTRING_FINAL -} - -struct LDAP { - char[76] Reserved; - PCHAR ld_host; - ULONG ld_version; - UCHAR ld_lberoptions; - int ld_deref; - int ld_timelimit; - int ld_sizelimit; - int ld_errno; - PCHAR ld_matched; - PCHAR ld_error; -} -alias LDAP* PLDAP; - -struct LDAPMessage { - ULONG lm_msgid; - ULONG lm_msgtype; - BerElement* lm_ber; - LDAPMessage* lm_chain; - LDAPMessage* lm_next; - ULONG lm_time; -} -alias LDAPMessage* PLDAPMessage; - -struct LDAP_TIMEVAL { - LONG tv_sec; - LONG tv_usec; -} -alias LDAP_TIMEVAL* PLDAP_TIMEVAL; - -struct LDAPAPIInfoA { - int ldapai_info_version; - int ldapai_api_version; - int ldapai_protocol_version; - char** ldapai_extensions; - char* ldapai_vendor_name; - int ldapai_vendor_version; -} -alias LDAPAPIInfoA* PLDAPAPIInfoA; - -struct LDAPAPIInfoW { - int ldapai_info_version; - int ldapai_api_version; - int ldapai_protocol_version; - PWCHAR* ldapai_extensions; - PWCHAR ldapai_vendor_name; - int ldapai_vendor_version; -} -alias LDAPAPIInfoW* PLDAPAPIInfoW; - -struct LDAPAPIFeatureInfoA { - int ldapaif_info_version; - char* ldapaif_name; - int ldapaif_version; -} -alias LDAPAPIFeatureInfoA* PLDAPAPIFeatureInfoA; - -struct LDAPAPIFeatureInfoW { - int ldapaif_info_version; - PWCHAR ldapaif_name; - int ldapaif_version; -} -alias LDAPAPIFeatureInfoW* PLDAPAPIFeatureInfoW; - -struct LDAPControlA { - PCHAR ldctl_oid; - BerValue ldctl_value; - BOOLEAN ldctl_iscritical; -} -alias LDAPControlA* PLDAPControlA; - -struct LDAPControlW { - PWCHAR ldctl_oid; - BerValue ldctl_value; - BOOLEAN ldctl_iscritical; -} -alias LDAPControlW* PLDAPControlW; - -/* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type - * and mod_vals, and macros are used to simulate anonymous unions in those - * structures. - */ -union mod_vals_u_tA { - PCHAR* modv_strvals; - BerValue** modv_bvals; -} - -union mod_vals_u_tW { - PWCHAR* modv_strvals; - BerValue** modv_bvals; -} - -struct LDAPModA { - ULONG mod_op; - PCHAR mod_type; - - union { - mod_vals_u_tA mod_vals; - // The following members are defined as macros in MinGW. - PCHAR* mod_values; - BerValue** mod_bvalues; - } -} -alias LDAPModA* PLDAPModA; - -struct LDAPModW { - ULONG mod_op; - PWCHAR mod_type; - - union { - mod_vals_u_tW mod_vals; - // The following members are defined as macros in MinGW. - PWCHAR* mod_values; - BerValue** mod_bvalues; - } -} -alias LDAPModW* PLDAPModW; - -/* Opaque structure - * http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp - */ -struct LDAPSearch; -alias LDAPSearch* PLDAPSearch; - -struct LDAPSortKeyA { - PCHAR sk_attrtype; - PCHAR sk_matchruleoid; - BOOLEAN sk_reverseorder; -} -alias LDAPSortKeyA* PLDAPSortKeyA; - -struct LDAPSortKeyW { - PWCHAR sk_attrtype; - PWCHAR sk_matchruleoid; - BOOLEAN sk_reverseorder; -} -alias LDAPSortKeyW* PLDAPSortKeyW; - -/* MinGW defines these as immediate function typedefs, which don't translate - * well into D. - */ -extern (C) { - alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, - PLDAP*) QUERYFORCONNECTION; - alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID, - PVOID, ULONG) NOTIFYOFNEWCONNECTION; - alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION; - alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx, - PCCERT_CONTEXT*) QUERYCLIENTCERT; -} - -struct LDAP_REFERRAL_CALLBACK { - ULONG SizeOfCallbacks; - QUERYFORCONNECTION* QueryForConnection; - NOTIFYOFNEWCONNECTION* NotifyRoutine; - DEREFERENCECONNECTION* DereferenceRoutine; -} -alias LDAP_REFERRAL_CALLBACK* PLDAP_REFERRAL_CALLBACK; - -struct LDAPVLVInfo { - int ldvlv_version; - uint ldvlv_before_count; - uint ldvlv_after_count; - uint ldvlv_offset; - uint ldvlv_count; - BerValue* ldvlv_attrvalue; - BerValue* ldvlv_context; - void* ldvlv_extradata; -} - -/* - * Under Microsoft WinLDAP the function ldap_error is only stub. - * This macro uses LDAP structure to get error string and pass it to the user. - */ -private extern (C) int printf(in char* format, ...); -int ldap_perror(LDAP* handle, char* message) { - return printf("%s: %s\n", message, handle.ld_error); -} - -/* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage - * attribute? - */ -extern (C) { - PLDAP ldap_initA(PCHAR, ULONG); - PLDAP ldap_initW(PWCHAR, ULONG); - PLDAP ldap_openA(PCHAR, ULONG); - PLDAP ldap_openW(PWCHAR, ULONG); - PLDAP cldap_openA(PCHAR, ULONG); - PLDAP cldap_openW(PWCHAR, ULONG); - ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*); - PLDAP ldap_sslinitA(PCHAR, ULONG, int); - PLDAP ldap_sslinitW(PWCHAR, ULONG, int); - ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*); - ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*); - BOOLEAN ldap_stop_tls_s(LDAP*); - ULONG ldap_get_optionA(LDAP*, int, void*); - ULONG ldap_get_optionW(LDAP*, int, void*); - ULONG ldap_set_optionA(LDAP*, int, void*); - ULONG ldap_set_optionW(LDAP*, int, void*); - ULONG ldap_control_freeA(LDAPControlA*); - ULONG ldap_control_freeW(LDAPControlW*); - ULONG ldap_controls_freeA(LDAPControlA**); - ULONG ldap_controls_freeW(LDAPControlW**); - ULONG ldap_free_controlsA(LDAPControlA**); - ULONG ldap_free_controlsW(LDAPControlW**); - ULONG ldap_sasl_bindA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, - PLDAPControlA*, int*); - ULONG ldap_sasl_bindW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, - PLDAPControlW*, int*); - ULONG ldap_sasl_bind_sA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, - PLDAPControlA*, PBERVAL*); - ULONG ldap_sasl_bind_sW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, - PLDAPControlW*, PBERVAL*); - ULONG ldap_simple_bindA(LDAP*, PCHAR, PCHAR); - ULONG ldap_simple_bindW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_simple_bind_sA(LDAP*, PCHAR, PCHAR); - ULONG ldap_simple_bind_sW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_unbind(LDAP*); - ULONG ldap_unbind_s(LDAP*); - ULONG ldap_search_extA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); - ULONG ldap_search_extW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); - ULONG ldap_search_ext_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); - ULONG ldap_search_ext_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); - ULONG ldap_searchA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG); - ULONG ldap_searchW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG); - ULONG ldap_search_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - LDAPMessage**); - ULONG ldap_search_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - LDAPMessage**); - ULONG ldap_search_stA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, - LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_search_stW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, - LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_compare_extA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, - PLDAPControlA*, PLDAPControlA*, ULONG*); - ULONG ldap_compare_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, - PLDAPControlW*, PLDAPControlW*, ULONG*); - ULONG ldap_compare_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, - PLDAPControlA*, PLDAPControlA*); - ULONG ldap_compare_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, - PLDAPControlW*, PLDAPControlW*); - ULONG ldap_compareA(LDAP*, PCHAR, PCHAR, PCHAR); - ULONG ldap_compareW(LDAP*, PWCHAR, PWCHAR, PWCHAR); - ULONG ldap_compare_sA(LDAP*, PCHAR, PCHAR, PCHAR); - ULONG ldap_compare_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR); - ULONG ldap_modify_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_modify_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_modify_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*); - ULONG ldap_modify_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*); - ULONG ldap_modifyA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_modifyW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_modify_sA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_modify_sW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_rename_extA(LDAP*, PCHAR, PCHAR, PCHAR, INT, PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_rename_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_rename_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, INT, - PLDAPControlA*, PLDAPControlA*); - ULONG ldap_rename_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, - PLDAPControlW*, PLDAPControlW*); - ULONG ldap_add_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_add_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_add_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, - PLDAPControlA*); - ULONG ldap_add_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, - PLDAPControlW*); - ULONG ldap_addA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_addW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_add_sA(LDAP*, PCHAR, LDAPModA*[]); - ULONG ldap_add_sW(LDAP*, PWCHAR, LDAPModW*[]); - ULONG ldap_delete_extA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*, - ULONG*); - ULONG ldap_delete_extW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*, - ULONG*); - ULONG ldap_delete_ext_sA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*); - ULONG ldap_delete_ext_sW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*); - ULONG ldap_deleteA(LDAP*, PCHAR); - ULONG ldap_deleteW(LDAP*, PWCHAR); - ULONG ldap_delete_sA(LDAP*, PCHAR); - ULONG ldap_delete_sW(LDAP*, PWCHAR); - ULONG ldap_extended_operationA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, - PLDAPControlA*, ULONG*); - ULONG ldap_extended_operationW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, - PLDAPControlW*, ULONG*); - ULONG ldap_extended_operation_sA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, - PLDAPControlA*, PCHAR*, BerValue**); - ULONG ldap_extended_operation_sW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, - PLDAPControlW*, PWCHAR*, BerValue**); - ULONG ldap_close_extended_op(LDAP*, ULONG); - ULONG ldap_abandon(LDAP*, ULONG); - ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**); - ULONG ldap_msgfree(LDAPMessage*); - ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PCHAR*, PCHAR*, - PCHAR**, PLDAPControlA**, BOOLEAN); - ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWCHAR*, PWCHAR*, - PWCHAR**, PLDAPControlW**, BOOLEAN); - ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PCHAR*, BerValue**, - BOOLEAN); - ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWCHAR*, BerValue**, - BOOLEAN); - PCHAR ldap_err2stringA(ULONG); - PWCHAR ldap_err2stringW(ULONG); - ULONG LdapGetLastError(); - ULONG LdapMapErrorToWin32(ULONG); - ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG); - PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*); - PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*); - PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*); - PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*); - ULONG ldap_count_entries(LDAP*, LDAPMessage*); - ULONG ldap_count_references(LDAP*, LDAPMessage*); - PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**); - PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**); - PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*); - PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*); - VOID ldap_memfreeA(PCHAR); - VOID ldap_memfreeW(PWCHAR); - PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCHAR); - PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PWCHAR); - BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCHAR); - BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PWCHAR); - ULONG ldap_count_valuesA(PCHAR*); - ULONG ldap_count_valuesW(PWCHAR*); - ULONG ldap_count_values_len(BerValue**); - ULONG ldap_value_freeA(PCHAR*); - ULONG ldap_value_freeW(PWCHAR*); - ULONG ldap_value_free_len(BerValue**); - PCHAR ldap_get_dnA(LDAP*, LDAPMessage*); - PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*); - PCHAR ldap_explode_dnA(PCHAR, ULONG); - PWCHAR ldap_explode_dnW(PWCHAR, ULONG); - PCHAR ldap_dn2ufnA(PCHAR); - PWCHAR ldap_dn2ufnW(PWCHAR); - ULONG ldap_ufn2dnA(PCHAR, PCHAR*); - ULONG ldap_ufn2dnW(PWCHAR, PWCHAR*); - ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**); - ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**); - ULONG ldap_check_filterA(LDAP*, PCHAR); - ULONG ldap_check_filterW(LDAP*, PWCHAR); - ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR, - PLDAPControlA*); - ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR, - PLDAPControlW*); - ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR, - PLDAPControlA*); - ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR, - PLDAPControlW*); - INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlA**); - INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlW**); - ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA, - BOOLEAN); - ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW, - BOOLEAN); - ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG); - ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG); - ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*); - ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG, - ULONG*, LDAPMessage**); - ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage); - ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**); - ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**); - ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*); - ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*); - INT ldap_parse_vlv_controlA(LDAP*, LDAPControlA**, uint*, uint*, - BerValue**, int*); - INT ldap_parse_vlv_controlW(LDAP*, LDAPControlW**, uint*, uint*, - BerValue**, int*); - PLDAPSearch ldap_search_init_pageA(PLDAP, PCHAR, ULONG, PCHAR, PCHAR[], - ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*); - PLDAPSearch ldap_search_init_pageW(PLDAP, PWCHAR, ULONG, PWCHAR, PWCHAR[], - ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*); - ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch); - LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*); - INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int); - INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int); - deprecated { - ULONG ldap_bindA(LDAP*, PCHAR, PCHAR, ULONG); - ULONG ldap_bindW(LDAP*, PWCHAR, PWCHAR, ULONG); - ULONG ldap_bind_sA(LDAP*, PCHAR, PCHAR, ULONG); - ULONG ldap_bind_sW(LDAP*, PWCHAR, PWCHAR, ULONG); - ULONG ldap_modrdnA(LDAP*, PCHAR, PCHAR); - ULONG ldap_modrdnW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_modrdn_sA(LDAP*, PCHAR, PCHAR); - ULONG ldap_modrdn_sW(LDAP*, PWCHAR, PWCHAR); - ULONG ldap_modrdn2A(LDAP*, PCHAR, PCHAR, INT); - ULONG ldap_modrdn2W(LDAP*, PWCHAR, PWCHAR, INT); - ULONG ldap_modrdn2_sA(LDAP*, PCHAR, PCHAR, INT); - ULONG ldap_modrdn2_sW(LDAP*, PWCHAR, PWCHAR, INT); - } -} - -version (Unicode) { - alias LDAPControlW LDAPControl; - alias PLDAPControlW PLDAPControl; - alias LDAPModW LDAPMod; - alias LDAPModW PLDAPMod; - alias LDAPSortKeyW LDAPSortKey; - alias PLDAPSortKeyW PLDAPSortKey; - alias LDAPAPIInfoW LDAPAPIInfo; - alias PLDAPAPIInfoW PLDAPAPIInfo; - alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo; - alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo; - alias cldap_openW cldap_open; - alias ldap_openW ldap_open; - alias ldap_simple_bindW ldap_simple_bind; - alias ldap_simple_bind_sW ldap_simple_bind_s; - alias ldap_sasl_bindW ldap_sasl_bind; - alias ldap_sasl_bind_sW ldap_sasl_bind_s; - alias ldap_initW ldap_init; - alias ldap_sslinitW ldap_sslinit; - alias ldap_get_optionW ldap_get_option; - alias ldap_set_optionW ldap_set_option; - alias ldap_start_tls_sW ldap_start_tls_s; - alias ldap_addW ldap_add; - alias ldap_add_extW ldap_add_ext; - alias ldap_add_sW ldap_add_s; - alias ldap_add_ext_sW ldap_add_ext_s; - alias ldap_compareW ldap_compare; - alias ldap_compare_extW ldap_compare_ext; - alias ldap_compare_sW ldap_compare_s; - alias ldap_compare_ext_sW ldap_compare_ext_s; - alias ldap_deleteW ldap_delete; - alias ldap_delete_extW ldap_delete_ext; - alias ldap_delete_sW ldap_delete_s; - alias ldap_delete_ext_sW ldap_delete_ext_s; - alias ldap_extended_operation_sW ldap_extended_operation_s; - alias ldap_extended_operationW ldap_extended_operation; - alias ldap_modifyW ldap_modify; - alias ldap_modify_extW ldap_modify_ext; - alias ldap_modify_sW ldap_modify_s; - alias ldap_modify_ext_sW ldap_modify_ext_s; - alias ldap_check_filterW ldap_check_filter; - alias ldap_count_valuesW ldap_count_values; - alias ldap_create_page_controlW ldap_create_page_control; - alias ldap_create_sort_controlW ldap_create_sort_control; - alias ldap_create_vlv_controlW ldap_create_vlv_control; - alias ldap_encode_sort_controlW ldap_encode_sort_control; - alias ldap_escape_filter_elementW ldap_escape_filter_element; - alias ldap_first_attributeW ldap_first_attribute; - alias ldap_next_attributeW ldap_next_attribute; - alias ldap_get_valuesW ldap_get_values; - alias ldap_get_values_lenW ldap_get_values_len; - alias ldap_parse_extended_resultW ldap_parse_extended_result; - alias ldap_parse_page_controlW ldap_parse_page_control; - alias ldap_parse_referenceW ldap_parse_reference; - alias ldap_parse_resultW ldap_parse_result; - alias ldap_parse_sort_controlW ldap_parse_sort_control; - alias ldap_parse_vlv_controlW ldap_parse_vlv_control; - alias ldap_searchW ldap_search; - alias ldap_search_sW ldap_search_s; - alias ldap_search_stW ldap_search_st; - alias ldap_search_extW ldap_search_ext; - alias ldap_search_ext_sW ldap_search_ext_s; - alias ldap_search_init_pageW ldap_search_init_page; - alias ldap_err2stringW ldap_err2string; - alias ldap_control_freeW ldap_control_free; - alias ldap_controls_freeW ldap_controls_free; - alias ldap_free_controlsW ldap_free_controls; - alias ldap_memfreeW ldap_memfree; - alias ldap_value_freeW ldap_value_free; - alias ldap_dn2ufnW ldap_dn2ufn; - alias ldap_ufn2dnW ldap_ufn2dn; - alias ldap_explode_dnW ldap_explode_dn; - alias ldap_get_dnW ldap_get_dn; - alias ldap_rename_extW ldap_rename; - alias ldap_rename_ext_sW ldap_rename_s; - alias ldap_rename_extW ldap_rename_ext; - alias ldap_rename_ext_sW ldap_rename_ext_s; - deprecated { - alias ldap_bindW ldap_bind; - alias ldap_bind_sW ldap_bind_s; - alias ldap_modrdnW ldap_modrdn; - alias ldap_modrdn_sW ldap_modrdn_s; - alias ldap_modrdn2W ldap_modrdn2; - alias ldap_modrdn2_sW ldap_modrdn2_s; - } -} else { - alias LDAPControlA LDAPControl; - alias PLDAPControlA PLDAPControl; - alias LDAPModA LDAPMod; - alias LDAPModA PLDAPMod; - alias LDAPSortKeyA LDAPSortKey; - alias PLDAPSortKeyA PLDAPSortKey; - alias LDAPAPIInfoA LDAPAPIInfo; - alias PLDAPAPIInfoA PLDAPAPIInfo; - alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo; - alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo; - alias cldap_openA cldap_open; - alias ldap_openA ldap_open; - alias ldap_simple_bindA ldap_simple_bind; - alias ldap_simple_bind_sA ldap_simple_bind_s; - alias ldap_sasl_bindA ldap_sasl_bind; - alias ldap_sasl_bind_sA ldap_sasl_bind_s; - alias ldap_initA ldap_init; - alias ldap_sslinitA ldap_sslinit; - alias ldap_get_optionA ldap_get_option; - alias ldap_set_optionA ldap_set_option; - alias ldap_start_tls_sA ldap_start_tls_s; - alias ldap_addA ldap_add; - alias ldap_add_extA ldap_add_ext; - alias ldap_add_sA ldap_add_s; - alias ldap_add_ext_sA ldap_add_ext_s; - alias ldap_compareA ldap_compare; - alias ldap_compare_extA ldap_compare_ext; - alias ldap_compare_sA ldap_compare_s; - alias ldap_compare_ext_sA ldap_compare_ext_s; - alias ldap_deleteA ldap_delete; - alias ldap_delete_extA ldap_delete_ext; - alias ldap_delete_sA ldap_delete_s; - alias ldap_delete_ext_sA ldap_delete_ext_s; - alias ldap_extended_operation_sA ldap_extended_operation_s; - alias ldap_extended_operationA ldap_extended_operation; - alias ldap_modifyA ldap_modify; - alias ldap_modify_extA ldap_modify_ext; - alias ldap_modify_sA ldap_modify_s; - alias ldap_modify_ext_sA ldap_modify_ext_s; - alias ldap_check_filterA ldap_check_filter; - alias ldap_count_valuesA ldap_count_values; - alias ldap_create_page_controlA ldap_create_page_control; - alias ldap_create_sort_controlA ldap_create_sort_control; - alias ldap_create_vlv_controlA ldap_create_vlv_control; - alias ldap_encode_sort_controlA ldap_encode_sort_control; - alias ldap_escape_filter_elementA ldap_escape_filter_element; - alias ldap_first_attributeA ldap_first_attribute; - alias ldap_next_attributeA ldap_next_attribute; - alias ldap_get_valuesA ldap_get_values; - alias ldap_get_values_lenA ldap_get_values_len; - alias ldap_parse_extended_resultA ldap_parse_extended_result; - alias ldap_parse_page_controlA ldap_parse_page_control; - alias ldap_parse_referenceA ldap_parse_reference; - alias ldap_parse_resultA ldap_parse_result; - alias ldap_parse_sort_controlA ldap_parse_sort_control; - alias ldap_parse_vlv_controlA ldap_parse_vlv_control; - alias ldap_searchA ldap_search; - alias ldap_search_sA ldap_search_s; - alias ldap_search_stA ldap_search_st; - alias ldap_search_extA ldap_search_ext; - alias ldap_search_ext_sA ldap_search_ext_s; - alias ldap_search_init_pageA ldap_search_init_page; - alias ldap_err2stringA ldap_err2string; - alias ldap_control_freeA ldap_control_free; - alias ldap_controls_freeA ldap_controls_free; - alias ldap_free_controlsA ldap_free_controls; - alias ldap_memfreeA ldap_memfree; - alias ldap_value_freeA ldap_value_free; - alias ldap_dn2ufnA ldap_dn2ufn; - alias ldap_ufn2dnA ldap_ufn2dn; - alias ldap_explode_dnA ldap_explode_dn; - alias ldap_get_dnA ldap_get_dn; - alias ldap_rename_extA ldap_rename; - alias ldap_rename_ext_sA ldap_rename_s; - alias ldap_rename_extA ldap_rename_ext; - alias ldap_rename_ext_sA ldap_rename_ext_s; - deprecated { - alias ldap_bindA ldap_bind; - alias ldap_bind_sA ldap_bind_s; - alias ldap_modrdnA ldap_modrdn; - alias ldap_modrdn_sA ldap_modrdn_s; - alias ldap_modrdn2A ldap_modrdn2; - alias ldap_modrdn2_sA ldap_modrdn2_s; - } -} +/***********************************************************************\ +* winldap.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winldap; + +/* Comment from MinGW + winldap.h - Header file for the Windows LDAP API + + Written by Filip Navara + + References: + The C LDAP Application Program Interface + http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt + + Lightweight Directory Access Protocol Reference + http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +import win32.schannel, win32.winber; +private import win32.wincrypt, win32.windef; +version(Tango){ + private import tango.stdc.stdio; +} + +align(4): + +enum { + LDAP_VERSION1 = 1, + LDAP_VERSION2 = 2, + LDAP_VERSION3 = 3, + LDAP_VERSION = LDAP_VERSION2, + LDAP_VERSION_MIN = LDAP_VERSION2, + LDAP_VERSION_MAX = LDAP_VERSION3 +} + +/* MinGW defines ANSI and Unicode versions as LDAP_VENDOR_NAME and + * LDAP_VENDOR_NAME_W respectively; similarly with other string constants + * defined in this module. + */ +const TCHAR[] LDAP_VENDOR_NAME = "Microsoft Corporation."; + +const LDAP_API_VERSION = 2004; +const LDAP_VENDOR_VERSION = 510; +const LDAP_API_INFO_VERSION = 1; +const LDAP_FEATURE_INFO_VERSION = 1; + +enum { + LDAP_SUCCESS = 0x00, + LDAP_OPT_SUCCESS = LDAP_SUCCESS, + LDAP_OPERATIONS_ERROR, + LDAP_PROTOCOL_ERROR, + LDAP_TIMELIMIT_EXCEEDED, + LDAP_SIZELIMIT_EXCEEDED, + LDAP_COMPARE_FALSE, + LDAP_COMPARE_TRUE, + LDAP_STRONG_AUTH_NOT_SUPPORTED, + LDAP_AUTH_METHOD_NOT_SUPPORTED = LDAP_STRONG_AUTH_NOT_SUPPORTED, + LDAP_STRONG_AUTH_REQUIRED, + LDAP_REFERRAL_V2, + LDAP_PARTIAL_RESULTS = LDAP_REFERRAL_V2, + LDAP_REFERRAL, + LDAP_ADMIN_LIMIT_EXCEEDED, + LDAP_UNAVAILABLE_CRIT_EXTENSION, + LDAP_CONFIDENTIALITY_REQUIRED, + LDAP_SASL_BIND_IN_PROGRESS, // = 0x0e + LDAP_NO_SUCH_ATTRIBUTE = 0x10, + LDAP_UNDEFINED_TYPE, + LDAP_INAPPROPRIATE_MATCHING, + LDAP_CONSTRAINT_VIOLATION, + LDAP_TYPE_OR_VALUE_EXISTS, + LDAP_ATTRIBUTE_OR_VALUE_EXISTS = LDAP_TYPE_OR_VALUE_EXISTS, + LDAP_INVALID_SYNTAX, // = 0x15 + LDAP_NO_SUCH_OBJECT = 0x20, + LDAP_ALIAS_PROBLEM, + LDAP_INVALID_DN_SYNTAX, + LDAP_IS_LEAF, + LDAP_ALIAS_DEREF_PROBLEM, // = 0x24 + LDAP_INAPPROPRIATE_AUTH = 0x30, + LDAP_INVALID_CREDENTIALS, + LDAP_INSUFFICIENT_ACCESS, + LDAP_INSUFFICIENT_RIGHTS = LDAP_INSUFFICIENT_ACCESS, + LDAP_BUSY, + LDAP_UNAVAILABLE, + LDAP_UNWILLING_TO_PERFORM, + LDAP_LOOP_DETECT, // = 0x36 + LDAP_NAMING_VIOLATION = 0x40, + LDAP_OBJECT_CLASS_VIOLATION, + LDAP_NOT_ALLOWED_ON_NONLEAF, + LDAP_NOT_ALLOWED_ON_RDN, + LDAP_ALREADY_EXISTS, + LDAP_NO_OBJECT_CLASS_MODS, + LDAP_RESULTS_TOO_LARGE, + LDAP_AFFECTS_MULTIPLE_DSAS, // = 0x47 + LDAP_OTHER = 0x50, + LDAP_SERVER_DOWN, + LDAP_LOCAL_ERROR, + LDAP_ENCODING_ERROR, + LDAP_DECODING_ERROR, + LDAP_TIMEOUT, + LDAP_AUTH_UNKNOWN, + LDAP_FILTER_ERROR, + LDAP_USER_CANCELLED, + LDAP_PARAM_ERROR, + LDAP_NO_MEMORY, + LDAP_CONNECT_ERROR, + LDAP_NOT_SUPPORTED, + LDAP_CONTROL_NOT_FOUND, + LDAP_NO_RESULTS_RETURNED, + LDAP_MORE_RESULTS_TO_RETURN, + LDAP_CLIENT_LOOP, + LDAP_REFERRAL_LIMIT_EXCEEDED // = 0x61 +} + +enum { + LDAP_PORT = 389, + LDAP_SSL_PORT = 636, + LDAP_GC_PORT = 3268, + LDAP_SSL_GC_PORT = 3269 +} + +const void* + LDAP_OPT_OFF = null, + LDAP_OPT_ON = cast(void*) 1; + +enum { + LDAP_OPT_API_INFO = 0x00, + LDAP_OPT_DESC, + LDAP_OPT_DEREF, + LDAP_OPT_SIZELIMIT, + LDAP_OPT_TIMELIMIT, + LDAP_OPT_THREAD_FN_PTRS, + LDAP_OPT_REBIND_FN, + LDAP_OPT_REBIND_ARG, + LDAP_OPT_REFERRALS, + LDAP_OPT_RESTART, + LDAP_OPT_SSL, + LDAP_OPT_TLS = LDAP_OPT_SSL, + LDAP_OPT_IO_FN_PTRS, // = 0x0b + LDAP_OPT_CACHE_FN_PTRS = 0x0d, + LDAP_OPT_CACHE_STRATEGY, + LDAP_OPT_CACHE_ENABLE, + LDAP_OPT_REFERRAL_HOP_LIMIT, + LDAP_OPT_PROTOCOL_VERSION, + LDAP_OPT_VERSION = LDAP_OPT_PROTOCOL_VERSION, + LDAP_OPT_SERVER_CONTROLS, + LDAP_OPT_CLIENT_CONTROLS, // = 0x13 + LDAP_OPT_API_FEATURE_INFO = 0x15, + LDAP_OPT_HOST_NAME = 0x30, + LDAP_OPT_ERROR_NUMBER, + LDAP_OPT_ERROR_STRING, + LDAP_OPT_SERVER_ERROR, + LDAP_OPT_SERVER_EXT_ERROR, // = 0x34 + LDAP_OPT_PING_KEEP_ALIVE = 0x36, + LDAP_OPT_PING_WAIT_TIME, + LDAP_OPT_PING_LIMIT, // = 0x38 + LDAP_OPT_DNSDOMAIN_NAME = 0x3b, + LDAP_OPT_GETDSNAME_FLAGS = 0x3d, + LDAP_OPT_HOST_REACHABLE, + LDAP_OPT_PROMPT_CREDENTIALS, + LDAP_OPT_TCP_KEEPALIVE, // = 0x40 + LDAP_OPT_REFERRAL_CALLBACK = 0x70, + LDAP_OPT_CLIENT_CERTIFICATE = 0x80, + LDAP_OPT_SERVER_CERTIFICATE, // = 0x81 + LDAP_OPT_AUTO_RECONNECT = 0x91, + LDAP_OPT_SSPI_FLAGS, + LDAP_OPT_SSL_INFO, + LDAP_OPT_TLS_INFO = LDAP_OPT_SSL_INFO, + LDAP_OPT_REF_DEREF_CONN_PER_MSG, + LDAP_OPT_SIGN, + LDAP_OPT_ENCRYPT, + LDAP_OPT_SASL_METHOD, + LDAP_OPT_AREC_EXCLUSIVE, + LDAP_OPT_SECURITY_CONTEXT, + LDAP_OPT_ROOTDSE_CACHE // = 0x9a +} + +enum { + LDAP_DEREF_NEVER, + LDAP_DEREF_SEARCHING, + LDAP_DEREF_FINDING, + LDAP_DEREF_ALWAYS +} + +const LDAP_NO_LIMIT = 0; + +const TCHAR[] LDAP_CONTROL_REFERRALS = "1.2.840.113556.1.4.616"; + +// FIXME: check type (declared with U suffix in MinGW) +enum : uint { + LDAP_CHASE_SUBORDINATE_REFERRALS = 0x20, + LDAP_CHASE_EXTERNAL_REFERRALS = 0x40 +} + +enum { + LDAP_SCOPE_DEFAULT = -1, + LDAP_SCOPE_BASE, + LDAP_SCOPE_ONELEVEL, + LDAP_SCOPE_SUBTREE +} + +enum { + LDAP_MOD_ADD, + LDAP_MOD_DELETE, + LDAP_MOD_REPLACE, + LDAP_MOD_BVALUES = 0x80 +} + +enum : int { + LDAP_RES_BIND = 0x61, + LDAP_RES_SEARCH_ENTRY = 0x64, + LDAP_RES_SEARCH_RESULT = 0x65, + LDAP_RES_MODIFY = 0x67, + LDAP_RES_ADD = 0x69, + LDAP_RES_DELETE = 0x6b, + LDAP_RES_MODRDN = 0x6d, + LDAP_RES_COMPARE = 0x6f, + LDAP_RES_SEARCH_REFERENCE = 0x73, + LDAP_RES_EXTENDED = 0x78, + LDAP_RES_ANY = -1 +} + +enum { + LDAP_MSG_ONE, + LDAP_MSG_ALL, + LDAP_MSG_RECEIVED +} + +const TCHAR[] + LDAP_SERVER_SORT_OID = "1.2.840.113556.1.4.473", + LDAP_SERVER_RESP_SORT_OID = "1.2.840.113556.1.4.474", + LDAP_PAGED_RESULT_OID_STRING = "1.2.840.113556.1.4.319", + LDAP_CONTROL_VLVREQUEST = "2.16.840.1.113730.3.4.9", + LDAP_CONTROL_VLVRESPONSE = "2.16.840.1.113730.3.4.10", + LDAP_START_TLS_OID = "1.3.6.1.4.1.1466.20037", + LDAP_TTL_EXTENDED_OP_OID = "1.3.6.1.4.1.1466.101.119.1"; + +enum { + LDAP_AUTH_NONE = 0x00U, + LDAP_AUTH_SIMPLE = 0x80U, + LDAP_AUTH_SASL = 0x83U, + LDAP_AUTH_OTHERKIND = 0x86U, + LDAP_AUTH_EXTERNAL = LDAP_AUTH_OTHERKIND | 0x0020U, + LDAP_AUTH_SICILY = LDAP_AUTH_OTHERKIND | 0x0200U, + LDAP_AUTH_NEGOTIATE = LDAP_AUTH_OTHERKIND | 0x0400U, + LDAP_AUTH_MSN = LDAP_AUTH_OTHERKIND | 0x0800U, + LDAP_AUTH_NTLM = LDAP_AUTH_OTHERKIND | 0x1000U, + LDAP_AUTH_DIGEST = LDAP_AUTH_OTHERKIND | 0x4000U, + LDAP_AUTH_DPA = LDAP_AUTH_OTHERKIND | 0x2000U, + LDAP_AUTH_SSPI = LDAP_AUTH_NEGOTIATE +} + +enum { + LDAP_FILTER_AND = 0xa0, + LDAP_FILTER_OR, + LDAP_FILTER_NOT, + LDAP_FILTER_EQUALITY, + LDAP_FILTER_SUBSTRINGS, + LDAP_FILTER_GE, + LDAP_FILTER_LE, // = 0xa6 + LDAP_FILTER_APPROX = 0xa8, + LDAP_FILTER_EXTENSIBLE, + LDAP_FILTER_PRESENT = 0x87 +} + +enum { + LDAP_SUBSTRING_INITIAL = 0x80, + LDAP_SUBSTRING_ANY, + LDAP_SUBSTRING_FINAL +} + +struct LDAP { + char[76] Reserved; + PCHAR ld_host; + ULONG ld_version; + UCHAR ld_lberoptions; + int ld_deref; + int ld_timelimit; + int ld_sizelimit; + int ld_errno; + PCHAR ld_matched; + PCHAR ld_error; +} +alias LDAP* PLDAP; + +struct LDAPMessage { + ULONG lm_msgid; + ULONG lm_msgtype; + BerElement* lm_ber; + LDAPMessage* lm_chain; + LDAPMessage* lm_next; + ULONG lm_time; +} +alias LDAPMessage* PLDAPMessage; + +struct LDAP_TIMEVAL { + LONG tv_sec; + LONG tv_usec; +} +alias LDAP_TIMEVAL* PLDAP_TIMEVAL; + +struct LDAPAPIInfoA { + int ldapai_info_version; + int ldapai_api_version; + int ldapai_protocol_version; + char** ldapai_extensions; + char* ldapai_vendor_name; + int ldapai_vendor_version; +} +alias LDAPAPIInfoA* PLDAPAPIInfoA; + +struct LDAPAPIInfoW { + int ldapai_info_version; + int ldapai_api_version; + int ldapai_protocol_version; + PWCHAR* ldapai_extensions; + PWCHAR ldapai_vendor_name; + int ldapai_vendor_version; +} +alias LDAPAPIInfoW* PLDAPAPIInfoW; + +struct LDAPAPIFeatureInfoA { + int ldapaif_info_version; + char* ldapaif_name; + int ldapaif_version; +} +alias LDAPAPIFeatureInfoA* PLDAPAPIFeatureInfoA; + +struct LDAPAPIFeatureInfoW { + int ldapaif_info_version; + PWCHAR ldapaif_name; + int ldapaif_version; +} +alias LDAPAPIFeatureInfoW* PLDAPAPIFeatureInfoW; + +struct LDAPControlA { + PCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; +} +alias LDAPControlA* PLDAPControlA; + +struct LDAPControlW { + PWCHAR ldctl_oid; + BerValue ldctl_value; + BOOLEAN ldctl_iscritical; +} +alias LDAPControlW* PLDAPControlW; + +/* Do we really need these? In MinGW, LDAPModA/W have only mod_op, mod_type + * and mod_vals, and macros are used to simulate anonymous unions in those + * structures. + */ +union mod_vals_u_tA { + PCHAR* modv_strvals; + BerValue** modv_bvals; +} + +union mod_vals_u_tW { + PWCHAR* modv_strvals; + BerValue** modv_bvals; +} + +struct LDAPModA { + ULONG mod_op; + PCHAR mod_type; + + union { + mod_vals_u_tA mod_vals; + // The following members are defined as macros in MinGW. + PCHAR* mod_values; + BerValue** mod_bvalues; + } +} +alias LDAPModA* PLDAPModA; + +struct LDAPModW { + ULONG mod_op; + PWCHAR mod_type; + + union { + mod_vals_u_tW mod_vals; + // The following members are defined as macros in MinGW. + PWCHAR* mod_values; + BerValue** mod_bvalues; + } +} +alias LDAPModW* PLDAPModW; + +/* Opaque structure + * http://msdn.microsoft.com/library/en-us/ldap/ldap/ldapsearch.asp + */ +struct LDAPSearch; +alias LDAPSearch* PLDAPSearch; + +struct LDAPSortKeyA { + PCHAR sk_attrtype; + PCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; +} +alias LDAPSortKeyA* PLDAPSortKeyA; + +struct LDAPSortKeyW { + PWCHAR sk_attrtype; + PWCHAR sk_matchruleoid; + BOOLEAN sk_reverseorder; +} +alias LDAPSortKeyW* PLDAPSortKeyW; + +/* MinGW defines these as immediate function typedefs, which don't translate + * well into D. + */ +extern (C) { + alias ULONG function(PLDAP, PLDAP, PWCHAR, PCHAR, ULONG, PVOID, PVOID, + PLDAP*) QUERYFORCONNECTION; + alias BOOLEAN function(PLDAP, PLDAP, PWCHAR, PCHAR, PLDAP, ULONG, PVOID, + PVOID, ULONG) NOTIFYOFNEWCONNECTION; + alias ULONG function(PLDAP, PLDAP) DEREFERENCECONNECTION; + alias BOOLEAN function(PLDAP, PSecPkgContext_IssuerListInfoEx, + PCCERT_CONTEXT*) QUERYCLIENTCERT; +} + +struct LDAP_REFERRAL_CALLBACK { + ULONG SizeOfCallbacks; + QUERYFORCONNECTION* QueryForConnection; + NOTIFYOFNEWCONNECTION* NotifyRoutine; + DEREFERENCECONNECTION* DereferenceRoutine; +} +alias LDAP_REFERRAL_CALLBACK* PLDAP_REFERRAL_CALLBACK; + +struct LDAPVLVInfo { + int ldvlv_version; + uint ldvlv_before_count; + uint ldvlv_after_count; + uint ldvlv_offset; + uint ldvlv_count; + BerValue* ldvlv_attrvalue; + BerValue* ldvlv_context; + void* ldvlv_extradata; +} + +/* + * Under Microsoft WinLDAP the function ldap_error is only stub. + * This macro uses LDAP structure to get error string and pass it to the user. + */ +private extern (C) int printf(in char* format, ...); +int ldap_perror(LDAP* handle, char* message) { + return printf("%s: %s\n", message, handle.ld_error); +} + +/* FIXME: In MinGW, these are WINLDAPAPI == DECLSPEC_IMPORT. Linkage + * attribute? + */ +extern (C) { + PLDAP ldap_initA(PCHAR, ULONG); + PLDAP ldap_initW(PWCHAR, ULONG); + PLDAP ldap_openA(PCHAR, ULONG); + PLDAP ldap_openW(PWCHAR, ULONG); + PLDAP cldap_openA(PCHAR, ULONG); + PLDAP cldap_openW(PWCHAR, ULONG); + ULONG ldap_connect(LDAP*, LDAP_TIMEVAL*); + PLDAP ldap_sslinitA(PCHAR, ULONG, int); + PLDAP ldap_sslinitW(PWCHAR, ULONG, int); + ULONG ldap_start_tls_sA(LDAP*, PLDAPControlA*, PLDAPControlA*); + ULONG ldap_start_tls_sW(LDAP*, PLDAPControlW*, PLDAPControlW*); + BOOLEAN ldap_stop_tls_s(LDAP*); + ULONG ldap_get_optionA(LDAP*, int, void*); + ULONG ldap_get_optionW(LDAP*, int, void*); + ULONG ldap_set_optionA(LDAP*, int, void*); + ULONG ldap_set_optionW(LDAP*, int, void*); + ULONG ldap_control_freeA(LDAPControlA*); + ULONG ldap_control_freeW(LDAPControlW*); + ULONG ldap_controls_freeA(LDAPControlA**); + ULONG ldap_controls_freeW(LDAPControlW**); + ULONG ldap_free_controlsA(LDAPControlA**); + ULONG ldap_free_controlsW(LDAPControlW**); + ULONG ldap_sasl_bindA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, + PLDAPControlA*, int*); + ULONG ldap_sasl_bindW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, + PLDAPControlW*, int*); + ULONG ldap_sasl_bind_sA(LDAP*, PCHAR, PCHAR, BERVAL*, PLDAPControlA*, + PLDAPControlA*, PBERVAL*); + ULONG ldap_sasl_bind_sW(LDAP*, PWCHAR, PWCHAR, BERVAL*, PLDAPControlW*, + PLDAPControlW*, PBERVAL*); + ULONG ldap_simple_bindA(LDAP*, PCHAR, PCHAR); + ULONG ldap_simple_bindW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_simple_bind_sA(LDAP*, PCHAR, PCHAR); + ULONG ldap_simple_bind_sW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_unbind(LDAP*); + ULONG ldap_unbind_s(LDAP*); + ULONG ldap_search_extA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); + ULONG ldap_search_extW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, ULONG*); + ULONG ldap_search_ext_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + PLDAPControlA*, PLDAPControlA*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); + ULONG ldap_search_ext_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + PLDAPControlW*, PLDAPControlW*, LDAP_TIMEVAL*, ULONG, LDAPMessage**); + ULONG ldap_searchA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG); + ULONG ldap_searchW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG); + ULONG ldap_search_sA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + LDAPMessage**); + ULONG ldap_search_sW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + LDAPMessage**); + ULONG ldap_search_stA(LDAP*, PCHAR, ULONG, PCHAR, PCHAR[], ULONG, + LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_search_stW(LDAP*, PWCHAR, ULONG, PWCHAR, PWCHAR[], ULONG, + LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_compare_extA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, + PLDAPControlA*, PLDAPControlA*, ULONG*); + ULONG ldap_compare_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, + PLDAPControlW*, PLDAPControlW*, ULONG*); + ULONG ldap_compare_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, BerValue*, + PLDAPControlA*, PLDAPControlA*); + ULONG ldap_compare_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, BerValue*, + PLDAPControlW*, PLDAPControlW*); + ULONG ldap_compareA(LDAP*, PCHAR, PCHAR, PCHAR); + ULONG ldap_compareW(LDAP*, PWCHAR, PWCHAR, PWCHAR); + ULONG ldap_compare_sA(LDAP*, PCHAR, PCHAR, PCHAR); + ULONG ldap_compare_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR); + ULONG ldap_modify_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_modify_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_modify_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*); + ULONG ldap_modify_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*); + ULONG ldap_modifyA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_modifyW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_modify_sA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_modify_sW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_rename_extA(LDAP*, PCHAR, PCHAR, PCHAR, INT, PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_rename_extW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_rename_ext_sA(LDAP*, PCHAR, PCHAR, PCHAR, INT, + PLDAPControlA*, PLDAPControlA*); + ULONG ldap_rename_ext_sW(LDAP*, PWCHAR, PWCHAR, PWCHAR, INT, + PLDAPControlW*, PLDAPControlW*); + ULONG ldap_add_extA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_add_extW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_add_ext_sA(LDAP*, PCHAR, LDAPModA*[], PLDAPControlA*, + PLDAPControlA*); + ULONG ldap_add_ext_sW(LDAP*, PWCHAR, LDAPModW*[], PLDAPControlW*, + PLDAPControlW*); + ULONG ldap_addA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_addW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_add_sA(LDAP*, PCHAR, LDAPModA*[]); + ULONG ldap_add_sW(LDAP*, PWCHAR, LDAPModW*[]); + ULONG ldap_delete_extA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*, + ULONG*); + ULONG ldap_delete_extW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*, + ULONG*); + ULONG ldap_delete_ext_sA(LDAP*, PCHAR, PLDAPControlA*, PLDAPControlA*); + ULONG ldap_delete_ext_sW(LDAP*, PWCHAR, PLDAPControlW*, PLDAPControlW*); + ULONG ldap_deleteA(LDAP*, PCHAR); + ULONG ldap_deleteW(LDAP*, PWCHAR); + ULONG ldap_delete_sA(LDAP*, PCHAR); + ULONG ldap_delete_sW(LDAP*, PWCHAR); + ULONG ldap_extended_operationA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, + PLDAPControlA*, ULONG*); + ULONG ldap_extended_operationW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, + PLDAPControlW*, ULONG*); + ULONG ldap_extended_operation_sA(LDAP*, PCHAR, BerValue*, PLDAPControlA*, + PLDAPControlA*, PCHAR*, BerValue**); + ULONG ldap_extended_operation_sW(LDAP*, PWCHAR, BerValue*, PLDAPControlW*, + PLDAPControlW*, PWCHAR*, BerValue**); + ULONG ldap_close_extended_op(LDAP*, ULONG); + ULONG ldap_abandon(LDAP*, ULONG); + ULONG ldap_result(LDAP*, ULONG, ULONG, LDAP_TIMEVAL*, LDAPMessage**); + ULONG ldap_msgfree(LDAPMessage*); + ULONG ldap_parse_resultA(LDAP*, LDAPMessage*, ULONG*, PCHAR*, PCHAR*, + PCHAR**, PLDAPControlA**, BOOLEAN); + ULONG ldap_parse_resultW(LDAP*, LDAPMessage*, ULONG*, PWCHAR*, PWCHAR*, + PWCHAR**, PLDAPControlW**, BOOLEAN); + ULONG ldap_parse_extended_resultA(LDAP, LDAPMessage*, PCHAR*, BerValue**, + BOOLEAN); + ULONG ldap_parse_extended_resultW(LDAP, LDAPMessage*, PWCHAR*, BerValue**, + BOOLEAN); + PCHAR ldap_err2stringA(ULONG); + PWCHAR ldap_err2stringW(ULONG); + ULONG LdapGetLastError(); + ULONG LdapMapErrorToWin32(ULONG); + ULONG ldap_result2error(LDAP*, LDAPMessage*, ULONG); + PLDAPMessage ldap_first_entry(LDAP*, LDAPMessage*); + PLDAPMessage ldap_next_entry(LDAP*, LDAPMessage*); + PLDAPMessage ldap_first_reference(LDAP*, LDAPMessage*); + PLDAPMessage ldap_next_reference(LDAP*, LDAPMessage*); + ULONG ldap_count_entries(LDAP*, LDAPMessage*); + ULONG ldap_count_references(LDAP*, LDAPMessage*); + PCHAR ldap_first_attributeA(LDAP*, LDAPMessage*, BerElement**); + PWCHAR ldap_first_attributeW(LDAP*, LDAPMessage*, BerElement**); + PCHAR ldap_next_attributeA(LDAP*, LDAPMessage*, BerElement*); + PWCHAR ldap_next_attributeW(LDAP*, LDAPMessage*, BerElement*); + VOID ldap_memfreeA(PCHAR); + VOID ldap_memfreeW(PWCHAR); + PCHAR* ldap_get_valuesA(LDAP*, LDAPMessage*, PCHAR); + PWCHAR* ldap_get_valuesW(LDAP*, LDAPMessage*, PWCHAR); + BerValue** ldap_get_values_lenA(LDAP*, LDAPMessage*, PCHAR); + BerValue** ldap_get_values_lenW(LDAP*, LDAPMessage*, PWCHAR); + ULONG ldap_count_valuesA(PCHAR*); + ULONG ldap_count_valuesW(PWCHAR*); + ULONG ldap_count_values_len(BerValue**); + ULONG ldap_value_freeA(PCHAR*); + ULONG ldap_value_freeW(PWCHAR*); + ULONG ldap_value_free_len(BerValue**); + PCHAR ldap_get_dnA(LDAP*, LDAPMessage*); + PWCHAR ldap_get_dnW(LDAP*, LDAPMessage*); + PCHAR ldap_explode_dnA(PCHAR, ULONG); + PWCHAR ldap_explode_dnW(PWCHAR, ULONG); + PCHAR ldap_dn2ufnA(PCHAR); + PWCHAR ldap_dn2ufnW(PWCHAR); + ULONG ldap_ufn2dnA(PCHAR, PCHAR*); + ULONG ldap_ufn2dnW(PWCHAR, PWCHAR*); + ULONG ldap_parse_referenceA(LDAP*, LDAPMessage*, PCHAR**); + ULONG ldap_parse_referenceW(LDAP*, LDAPMessage*, PWCHAR**); + ULONG ldap_check_filterA(LDAP*, PCHAR); + ULONG ldap_check_filterW(LDAP*, PWCHAR); + ULONG ldap_create_page_controlA(PLDAP, ULONG, BerValue*, UCHAR, + PLDAPControlA*); + ULONG ldap_create_page_controlW(PLDAP, ULONG, BerValue*, UCHAR, + PLDAPControlW*); + ULONG ldap_create_sort_controlA(PLDAP, PLDAPSortKeyA*, UCHAR, + PLDAPControlA*); + ULONG ldap_create_sort_controlW(PLDAP, PLDAPSortKeyW*, UCHAR, + PLDAPControlW*); + INT ldap_create_vlv_controlA(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlA**); + INT ldap_create_vlv_controlW(LDAP*, LDAPVLVInfo*, UCHAR, LDAPControlW**); + ULONG ldap_encode_sort_controlA(PLDAP, PLDAPSortKeyA*, PLDAPControlA, + BOOLEAN); + ULONG ldap_encode_sort_controlW(PLDAP, PLDAPSortKeyW*, PLDAPControlW, + BOOLEAN); + ULONG ldap_escape_filter_elementA(PCHAR, ULONG, PCHAR, ULONG); + ULONG ldap_escape_filter_elementW(PWCHAR, ULONG, PWCHAR, ULONG); + ULONG ldap_get_next_page(PLDAP, PLDAPSearch, ULONG, ULONG*); + ULONG ldap_get_next_page_s(PLDAP, PLDAPSearch, LDAP_TIMEVAL*, ULONG, + ULONG*, LDAPMessage**); + ULONG ldap_get_paged_count(PLDAP, PLDAPSearch, ULONG*, PLDAPMessage); + ULONG ldap_parse_page_controlA(PLDAP, PLDAPControlA*, ULONG*, BerValue**); + ULONG ldap_parse_page_controlW(PLDAP, PLDAPControlW*, ULONG*, BerValue**); + ULONG ldap_parse_sort_controlA(PLDAP, PLDAPControlA*, ULONG*, PCHAR*); + ULONG ldap_parse_sort_controlW(PLDAP, PLDAPControlW*, ULONG*, PWCHAR*); + INT ldap_parse_vlv_controlA(LDAP*, LDAPControlA**, uint*, uint*, + BerValue**, int*); + INT ldap_parse_vlv_controlW(LDAP*, LDAPControlW**, uint*, uint*, + BerValue**, int*); + PLDAPSearch ldap_search_init_pageA(PLDAP, PCHAR, ULONG, PCHAR, PCHAR[], + ULONG, PLDAPControlA*, PLDAPControlA*, ULONG, ULONG, PLDAPSortKeyA*); + PLDAPSearch ldap_search_init_pageW(PLDAP, PWCHAR, ULONG, PWCHAR, PWCHAR[], + ULONG, PLDAPControlW*, PLDAPControlW*, ULONG, ULONG, PLDAPSortKeyW*); + ULONG ldap_search_abandon_page(PLDAP, PLDAPSearch); + LDAP ldap_conn_from_msg(LDAP*, LDAPMessage*); + INT LdapUnicodeToUTF8(LPCWSTR, int, LPSTR, int); + INT LdapUTF8ToUnicode(LPCSTR, int, LPWSTR, int); + deprecated { + ULONG ldap_bindA(LDAP*, PCHAR, PCHAR, ULONG); + ULONG ldap_bindW(LDAP*, PWCHAR, PWCHAR, ULONG); + ULONG ldap_bind_sA(LDAP*, PCHAR, PCHAR, ULONG); + ULONG ldap_bind_sW(LDAP*, PWCHAR, PWCHAR, ULONG); + ULONG ldap_modrdnA(LDAP*, PCHAR, PCHAR); + ULONG ldap_modrdnW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_modrdn_sA(LDAP*, PCHAR, PCHAR); + ULONG ldap_modrdn_sW(LDAP*, PWCHAR, PWCHAR); + ULONG ldap_modrdn2A(LDAP*, PCHAR, PCHAR, INT); + ULONG ldap_modrdn2W(LDAP*, PWCHAR, PWCHAR, INT); + ULONG ldap_modrdn2_sA(LDAP*, PCHAR, PCHAR, INT); + ULONG ldap_modrdn2_sW(LDAP*, PWCHAR, PWCHAR, INT); + } +} + +version (Unicode) { + alias LDAPControlW LDAPControl; + alias PLDAPControlW PLDAPControl; + alias LDAPModW LDAPMod; + alias LDAPModW PLDAPMod; + alias LDAPSortKeyW LDAPSortKey; + alias PLDAPSortKeyW PLDAPSortKey; + alias LDAPAPIInfoW LDAPAPIInfo; + alias PLDAPAPIInfoW PLDAPAPIInfo; + alias LDAPAPIFeatureInfoW LDAPAPIFeatureInfo; + alias PLDAPAPIFeatureInfoW PLDAPAPIFeatureInfo; + alias cldap_openW cldap_open; + alias ldap_openW ldap_open; + alias ldap_simple_bindW ldap_simple_bind; + alias ldap_simple_bind_sW ldap_simple_bind_s; + alias ldap_sasl_bindW ldap_sasl_bind; + alias ldap_sasl_bind_sW ldap_sasl_bind_s; + alias ldap_initW ldap_init; + alias ldap_sslinitW ldap_sslinit; + alias ldap_get_optionW ldap_get_option; + alias ldap_set_optionW ldap_set_option; + alias ldap_start_tls_sW ldap_start_tls_s; + alias ldap_addW ldap_add; + alias ldap_add_extW ldap_add_ext; + alias ldap_add_sW ldap_add_s; + alias ldap_add_ext_sW ldap_add_ext_s; + alias ldap_compareW ldap_compare; + alias ldap_compare_extW ldap_compare_ext; + alias ldap_compare_sW ldap_compare_s; + alias ldap_compare_ext_sW ldap_compare_ext_s; + alias ldap_deleteW ldap_delete; + alias ldap_delete_extW ldap_delete_ext; + alias ldap_delete_sW ldap_delete_s; + alias ldap_delete_ext_sW ldap_delete_ext_s; + alias ldap_extended_operation_sW ldap_extended_operation_s; + alias ldap_extended_operationW ldap_extended_operation; + alias ldap_modifyW ldap_modify; + alias ldap_modify_extW ldap_modify_ext; + alias ldap_modify_sW ldap_modify_s; + alias ldap_modify_ext_sW ldap_modify_ext_s; + alias ldap_check_filterW ldap_check_filter; + alias ldap_count_valuesW ldap_count_values; + alias ldap_create_page_controlW ldap_create_page_control; + alias ldap_create_sort_controlW ldap_create_sort_control; + alias ldap_create_vlv_controlW ldap_create_vlv_control; + alias ldap_encode_sort_controlW ldap_encode_sort_control; + alias ldap_escape_filter_elementW ldap_escape_filter_element; + alias ldap_first_attributeW ldap_first_attribute; + alias ldap_next_attributeW ldap_next_attribute; + alias ldap_get_valuesW ldap_get_values; + alias ldap_get_values_lenW ldap_get_values_len; + alias ldap_parse_extended_resultW ldap_parse_extended_result; + alias ldap_parse_page_controlW ldap_parse_page_control; + alias ldap_parse_referenceW ldap_parse_reference; + alias ldap_parse_resultW ldap_parse_result; + alias ldap_parse_sort_controlW ldap_parse_sort_control; + alias ldap_parse_vlv_controlW ldap_parse_vlv_control; + alias ldap_searchW ldap_search; + alias ldap_search_sW ldap_search_s; + alias ldap_search_stW ldap_search_st; + alias ldap_search_extW ldap_search_ext; + alias ldap_search_ext_sW ldap_search_ext_s; + alias ldap_search_init_pageW ldap_search_init_page; + alias ldap_err2stringW ldap_err2string; + alias ldap_control_freeW ldap_control_free; + alias ldap_controls_freeW ldap_controls_free; + alias ldap_free_controlsW ldap_free_controls; + alias ldap_memfreeW ldap_memfree; + alias ldap_value_freeW ldap_value_free; + alias ldap_dn2ufnW ldap_dn2ufn; + alias ldap_ufn2dnW ldap_ufn2dn; + alias ldap_explode_dnW ldap_explode_dn; + alias ldap_get_dnW ldap_get_dn; + alias ldap_rename_extW ldap_rename; + alias ldap_rename_ext_sW ldap_rename_s; + alias ldap_rename_extW ldap_rename_ext; + alias ldap_rename_ext_sW ldap_rename_ext_s; + deprecated { + alias ldap_bindW ldap_bind; + alias ldap_bind_sW ldap_bind_s; + alias ldap_modrdnW ldap_modrdn; + alias ldap_modrdn_sW ldap_modrdn_s; + alias ldap_modrdn2W ldap_modrdn2; + alias ldap_modrdn2_sW ldap_modrdn2_s; + } +} else { + alias LDAPControlA LDAPControl; + alias PLDAPControlA PLDAPControl; + alias LDAPModA LDAPMod; + alias LDAPModA PLDAPMod; + alias LDAPSortKeyA LDAPSortKey; + alias PLDAPSortKeyA PLDAPSortKey; + alias LDAPAPIInfoA LDAPAPIInfo; + alias PLDAPAPIInfoA PLDAPAPIInfo; + alias LDAPAPIFeatureInfoA LDAPAPIFeatureInfo; + alias PLDAPAPIFeatureInfoA PLDAPAPIFeatureInfo; + alias cldap_openA cldap_open; + alias ldap_openA ldap_open; + alias ldap_simple_bindA ldap_simple_bind; + alias ldap_simple_bind_sA ldap_simple_bind_s; + alias ldap_sasl_bindA ldap_sasl_bind; + alias ldap_sasl_bind_sA ldap_sasl_bind_s; + alias ldap_initA ldap_init; + alias ldap_sslinitA ldap_sslinit; + alias ldap_get_optionA ldap_get_option; + alias ldap_set_optionA ldap_set_option; + alias ldap_start_tls_sA ldap_start_tls_s; + alias ldap_addA ldap_add; + alias ldap_add_extA ldap_add_ext; + alias ldap_add_sA ldap_add_s; + alias ldap_add_ext_sA ldap_add_ext_s; + alias ldap_compareA ldap_compare; + alias ldap_compare_extA ldap_compare_ext; + alias ldap_compare_sA ldap_compare_s; + alias ldap_compare_ext_sA ldap_compare_ext_s; + alias ldap_deleteA ldap_delete; + alias ldap_delete_extA ldap_delete_ext; + alias ldap_delete_sA ldap_delete_s; + alias ldap_delete_ext_sA ldap_delete_ext_s; + alias ldap_extended_operation_sA ldap_extended_operation_s; + alias ldap_extended_operationA ldap_extended_operation; + alias ldap_modifyA ldap_modify; + alias ldap_modify_extA ldap_modify_ext; + alias ldap_modify_sA ldap_modify_s; + alias ldap_modify_ext_sA ldap_modify_ext_s; + alias ldap_check_filterA ldap_check_filter; + alias ldap_count_valuesA ldap_count_values; + alias ldap_create_page_controlA ldap_create_page_control; + alias ldap_create_sort_controlA ldap_create_sort_control; + alias ldap_create_vlv_controlA ldap_create_vlv_control; + alias ldap_encode_sort_controlA ldap_encode_sort_control; + alias ldap_escape_filter_elementA ldap_escape_filter_element; + alias ldap_first_attributeA ldap_first_attribute; + alias ldap_next_attributeA ldap_next_attribute; + alias ldap_get_valuesA ldap_get_values; + alias ldap_get_values_lenA ldap_get_values_len; + alias ldap_parse_extended_resultA ldap_parse_extended_result; + alias ldap_parse_page_controlA ldap_parse_page_control; + alias ldap_parse_referenceA ldap_parse_reference; + alias ldap_parse_resultA ldap_parse_result; + alias ldap_parse_sort_controlA ldap_parse_sort_control; + alias ldap_parse_vlv_controlA ldap_parse_vlv_control; + alias ldap_searchA ldap_search; + alias ldap_search_sA ldap_search_s; + alias ldap_search_stA ldap_search_st; + alias ldap_search_extA ldap_search_ext; + alias ldap_search_ext_sA ldap_search_ext_s; + alias ldap_search_init_pageA ldap_search_init_page; + alias ldap_err2stringA ldap_err2string; + alias ldap_control_freeA ldap_control_free; + alias ldap_controls_freeA ldap_controls_free; + alias ldap_free_controlsA ldap_free_controls; + alias ldap_memfreeA ldap_memfree; + alias ldap_value_freeA ldap_value_free; + alias ldap_dn2ufnA ldap_dn2ufn; + alias ldap_ufn2dnA ldap_ufn2dn; + alias ldap_explode_dnA ldap_explode_dn; + alias ldap_get_dnA ldap_get_dn; + alias ldap_rename_extA ldap_rename; + alias ldap_rename_ext_sA ldap_rename_s; + alias ldap_rename_extA ldap_rename_ext; + alias ldap_rename_ext_sA ldap_rename_ext_s; + deprecated { + alias ldap_bindA ldap_bind; + alias ldap_bind_sA ldap_bind_s; + alias ldap_modrdnA ldap_modrdn; + alias ldap_modrdn_sA ldap_modrdn_s; + alias ldap_modrdn2A ldap_modrdn2; + alias ldap_modrdn2_sA ldap_modrdn2_s; + } +} Index: src/win32/winnetwk.d ================================================================== --- src/win32/winnetwk.d +++ src/win32/winnetwk.d @@ -1,438 +1,438 @@ -/***********************************************************************\ -* winnetwk.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winnetwk; -pragma(lib, "mpr.lib"); - -private import win32.winbase, win32.winerror, win32.winnt; - -enum : DWORD { - WNNC_NET_MSNET = 0x00010000, - WNNC_NET_LANMAN = 0x00020000, - WNNC_NET_NETWARE = 0x00030000, - WNNC_NET_VINES = 0x00040000, - WNNC_NET_10NET = 0x00050000, - WNNC_NET_LOCUS = 0x00060000, - WNNC_NET_SUN_PC_NFS = 0x00070000, - WNNC_NET_LANSTEP = 0x00080000, - WNNC_NET_9TILES = 0x00090000, - WNNC_NET_LANTASTIC = 0x000A0000, - WNNC_NET_AS400 = 0x000B0000, - WNNC_NET_FTP_NFS = 0x000C0000, - WNNC_NET_PATHWORKS = 0x000D0000, - WNNC_NET_LIFENET = 0x000E0000, - WNNC_NET_POWERLAN = 0x000F0000, - WNNC_NET_BWNFS = 0x00100000, - WNNC_NET_COGENT = 0x00110000, - WNNC_NET_FARALLON = 0x00120000, - WNNC_NET_APPLETALK = 0x00130000, - WNNC_NET_INTERGRAPH = 0x00140000, - WNNC_NET_SYMFONET = 0x00150000, - WNNC_NET_CLEARCASE = 0x00160000, - WNNC_NET_FRONTIER = 0x00170000, - WNNC_NET_BMC = 0x00180000, - WNNC_NET_DCE = 0x00190000, - WNNC_NET_AVID = 0x001A0000, - WNNC_NET_DOCUSPACE = 0x001B0000, - WNNC_NET_MANGOSOFT = 0x001C0000, - WNNC_NET_SERNET = 0x001D0000, - WNNC_NET_DECORB = 0x00200000, - WNNC_NET_PROTSTOR = 0x00210000, - WNNC_NET_FJ_REDIR = 0x00220000, - WNNC_NET_DISTINCT = 0x00230000, - WNNC_NET_TWINS = 0x00240000, - WNNC_NET_RDR2SAMPLE = 0x00250000, - WNNC_NET_CSC = 0x00260000, - WNNC_NET_3IN1 = 0x00270000, - WNNC_NET_EXTENDNET = 0x00290000, - WNNC_NET_OBJECT_DIRE = 0x00300000, - WNNC_NET_MASFAX = 0x00310000, - WNNC_NET_HOB_NFS = 0x00320000, - WNNC_NET_SHIVA = 0x00330000, - WNNC_NET_IBMAL = 0x00340000, - WNNC_CRED_MANAGER = 0xFFFF0000 -} - -enum : DWORD { - RESOURCE_CONNECTED = 1, - RESOURCE_GLOBALNET = 2, - RESOURCE_REMEMBERED = 3, - RESOURCE_RECENT = 4, - RESOURCE_CONTEXT = 5 -} - -const DWORD - RESOURCETYPE_ANY = 0, - RESOURCETYPE_DISK = 1, - RESOURCETYPE_PRINT = 2, - RESOURCETYPE_RESERVED = 8, - RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; - -const DWORD - RESOURCEUSAGE_CONNECTABLE = 0x00000001, - RESOURCEUSAGE_CONTAINER = 0x00000002, - RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, - RESOURCEUSAGE_SIBLING = 0x00000008, - RESOURCEUSAGE_ATTACHED = 0x00000010, - RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE - | RESOURCEUSAGE_CONTAINER - | RESOURCEUSAGE_ATTACHED), - RESOURCEUSAGE_RESERVED = 0x80000000; - -enum : DWORD { - RESOURCEDISPLAYTYPE_GENERIC, - RESOURCEDISPLAYTYPE_DOMAIN, - RESOURCEDISPLAYTYPE_SERVER, - RESOURCEDISPLAYTYPE_SHARE, - RESOURCEDISPLAYTYPE_FILE, - RESOURCEDISPLAYTYPE_GROUP, - RESOURCEDISPLAYTYPE_NETWORK, - RESOURCEDISPLAYTYPE_ROOT, - RESOURCEDISPLAYTYPE_SHAREADMIN, - RESOURCEDISPLAYTYPE_DIRECTORY, - RESOURCEDISPLAYTYPE_TREE // = 10 -} - -const NETPROPERTY_PERSISTENT = 1; - -const DWORD - CONNECT_UPDATE_PROFILE = 1, - CONNECT_UPDATE_RECENT = 2, - CONNECT_TEMPORARY = 4, - CONNECT_INTERACTIVE = 8, - CONNECT_PROMPT = 16, - CONNECT_NEED_DRIVE = 32, - CONNECT_REFCOUNT = 64, - CONNECT_REDIRECT = 128, - CONNECT_LOCALDRIVE = 256, - CONNECT_CURRENT_MEDIA = 512; - -const DWORD - CONNDLG_RO_PATH = 1, - CONNDLG_CONN_POINT = 2, - CONNDLG_USE_MRU = 4, - CONNDLG_HIDE_BOX = 8, - CONNDLG_PERSIST = 16, - CONNDLG_NOT_PERSIST = 32; - -const DWORD - DISC_UPDATE_PROFILE = 1, - DISC_NO_FORCE = 64; - -const DWORD - WNFMT_MULTILINE = 1, - WNFMT_ABBREVIATED = 2, - WNFMT_INENUM = 16, - WNFMT_CONNECTION = 32; - -enum : DWORD { - WN_SUCCESS = NO_ERROR, - WN_NO_ERROR = NO_ERROR, - WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED, - WN_CANCEL = ERROR_CANCELLED, - WN_RETRY = ERROR_RETRY, - WN_NET_ERROR = ERROR_UNEXP_NET_ERR, - WN_MORE_DATA = ERROR_MORE_DATA, - WN_BAD_POINTER = ERROR_INVALID_ADDRESS, - WN_BAD_VALUE = ERROR_INVALID_PARAMETER, - WN_BAD_USER = ERROR_BAD_USERNAME, - WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD, - WN_ACCESS_DENIED = ERROR_ACCESS_DENIED, - WN_FUNCTION_BUSY = ERROR_BUSY, - WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR, - WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY, - WN_NO_NETWORK = ERROR_NO_NETWORK, - WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR, - WN_BAD_LEVEL = ERROR_INVALID_LEVEL, - WN_BAD_HANDLE = ERROR_INVALID_HANDLE, - WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED, - WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES, - WN_NOT_CONNECTED = ERROR_NOT_CONNECTED, - WN_OPEN_FILES = ERROR_OPEN_FILES, - WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE, - WN_BAD_NETNAME = ERROR_BAD_NET_NAME, - WN_BAD_LOCALNAME = ERROR_BAD_DEVICE, - WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED, - WN_DEVICE_ERROR = ERROR_GEN_FAILURE, - WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL, - WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH, - WN_BAD_PROVIDER = ERROR_BAD_PROVIDER, - WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE, - WN_BAD_PROFILE = ERROR_BAD_PROFILE, - WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE, - WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED, - WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS, - WN_NOT_CONTAINER = ERROR_NOT_CONTAINER, - WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED, - WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON, - WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS -} - -enum : DWORD { - UNIVERSAL_NAME_INFO_LEVEL = 1, - REMOTE_NAME_INFO_LEVEL -} - -const DWORD - NETINFO_DLL16 = 1, - NETINFO_DISKRED = 4, - NETINFO_PRINTERRED = 8; - -const DWORD - RP_LOGON = 1, - RP_INIFILE = 2; - -const DWORD PP_DISPLAYERRORS = 1; - -const DWORD - WNCON_FORNETCARD = 1, - WNCON_NOTROUTED = 2, - WNCON_SLOWLINK = 4, - WNCON_DYNAMIC = 8; - -struct NETRESOURCEA { - DWORD dwScope; - DWORD dwType; - DWORD dwDisplayType; - DWORD dwUsage; - LPSTR lpLocalName; - LPSTR lpRemoteName; - LPSTR lpComment; - LPSTR lpProvider; -} -alias NETRESOURCEA* LPNETRESOURCEA; - -struct NETRESOURCEW { - DWORD dwScope; - DWORD dwType; - DWORD dwDisplayType; - DWORD dwUsage; - LPWSTR lpLocalName; - LPWSTR lpRemoteName; - LPWSTR lpComment ; - LPWSTR lpProvider; -} -alias NETRESOURCEW* LPNETRESOURCEW; - -struct CONNECTDLGSTRUCTA { - DWORD cbStructure; - HWND hwndOwner; - LPNETRESOURCEA lpConnRes; - DWORD dwFlags; - DWORD dwDevNum; -} -alias CONNECTDLGSTRUCTA* LPCONNECTDLGSTRUCTA; - -struct CONNECTDLGSTRUCTW { - DWORD cbStructure; - HWND hwndOwner; - LPNETRESOURCEW lpConnRes; - DWORD dwFlags; - DWORD dwDevNum; -} -alias CONNECTDLGSTRUCTW* LPCONNECTDLGSTRUCTW; - -struct DISCDLGSTRUCTA { - DWORD cbStructure; - HWND hwndOwner; - LPSTR lpLocalName; - LPSTR lpRemoteName; - DWORD dwFlags; -} -alias DISCDLGSTRUCTA* LPDISCDLGSTRUCTA; - -struct DISCDLGSTRUCTW { - DWORD cbStructure; - HWND hwndOwner; - LPWSTR lpLocalName; - LPWSTR lpRemoteName; - DWORD dwFlags; -} -alias DISCDLGSTRUCTW* LPDISCDLGSTRUCTW; - -struct UNIVERSAL_NAME_INFOA { - LPSTR lpUniversalName; -} -alias UNIVERSAL_NAME_INFOA* LPUNIVERSAL_NAME_INFOA; - -struct UNIVERSAL_NAME_INFOW { - LPWSTR lpUniversalName; -} -alias UNIVERSAL_NAME_INFOW* LPUNIVERSAL_NAME_INFOW; - -struct REMOTE_NAME_INFOA { - LPSTR lpUniversalName; - LPSTR lpConnectionName; - LPSTR lpRemainingPath; -} -alias REMOTE_NAME_INFOA* LPREMOTE_NAME_INFOA; - -struct REMOTE_NAME_INFOW { - LPWSTR lpUniversalName; - LPWSTR lpConnectionName; - LPWSTR lpRemainingPath; -} -alias REMOTE_NAME_INFOW* LPREMOTE_NAME_INFOW; - -struct NETINFOSTRUCT { - DWORD cbStructure; - DWORD dwProviderVersion; - DWORD dwStatus; - DWORD dwCharacteristics; - DWORD dwHandle; - WORD wNetType; - DWORD dwPrinters; - DWORD dwDrives; -} -alias NETINFOSTRUCT* LPNETINFOSTRUCT; - -extern (Pascal) { - alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA; - alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW; - alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA; - alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW; - alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD) - PFNPROCESSPOLICIESA; - alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD) - PFNPROCESSPOLICIESW; -} - -struct NETCONNECTINFOSTRUCT { - DWORD cbStructure; - DWORD dwFlags; - DWORD dwSpeed; - DWORD dwDelay; - DWORD dwOptDataSize; -} -alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT; - -extern (Windows) { - DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); - DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); - DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); - DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); - DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL); - DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL); - DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD); - DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD); - DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD, - LPSTR, PDWORD, PDWORD); - DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD, - LPWSTR, PDWORD, PDWORD); - DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID); - DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID); - DWORD WNetConnectionDialog(HWND, DWORD); - DWORD WNetDisconnectDialog(HWND, DWORD); - DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); - DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); - DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); - DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); - DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE); - DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE); - DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD); - DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD); - DWORD WNetCloseEnum(HANDLE); - DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD); - DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD); - DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD); - DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD); - DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD); - DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD); - DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT); - DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT); - DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD, - LPSTR*); - DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD, - LPWSTR*); - DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD); - DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD); - DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD); - DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD); - DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA, - LPNETCONNECTINFOSTRUCT); - DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW, - LPNETCONNECTINFOSTRUCT); - deprecated { - DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR); - DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR); - DWORD WNetCancelConnectionA(LPCSTR, BOOL); - DWORD WNetCancelConnectionW(LPCWSTR, BOOL); - } -} - -version (Unicode) { - alias PFNGETPROFILEPATHW PFNGETPROFILEPATH; - alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE; - alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES; - alias NETRESOURCEW NETRESOURCE; - alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT; - alias DISCDLGSTRUCTW DISCDLGSTRUCT; - alias REMOTE_NAME_INFOW REMOTE_NAME_INFO; - alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO; - alias WNetAddConnection2W WNetAddConnection2; - alias WNetAddConnection3W WNetAddConnection3; - alias WNetCancelConnection2W WNetCancelConnection2; - alias WNetGetConnectionW WNetGetConnection; - alias WNetUseConnectionW WNetUseConnection; - alias WNetSetConnectionW WNetSetConnection; - alias WNetConnectionDialog1W WNetConnectionDialog1; - alias WNetDisconnectDialog1W WNetDisconnectDialog1; - alias WNetOpenEnumW WNetOpenEnum; - alias WNetEnumResourceW WNetEnumResource; - alias WNetGetUniversalNameW WNetGetUniversalName; - alias WNetGetUserW WNetGetUser; - alias WNetGetProviderNameW WNetGetProviderName; - alias WNetGetNetworkInformationW WNetGetNetworkInformation; - alias WNetGetResourceInformationW WNetGetResourceInformation; - alias WNetGetResourceParentW WNetGetResourceParent; - alias WNetGetLastErrorW WNetGetLastError; - alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance; - deprecated { - alias WNetAddConnectionW WNetAddConnection; - alias WNetCancelConnectionW WNetCancelConnection; - } -} else { - alias PFNGETPROFILEPATHA PFNGETPROFILEPATH; - alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE; - alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES; - alias NETRESOURCEA NETRESOURCE; - alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; - alias DISCDLGSTRUCTA DISCDLGSTRUCT; - alias REMOTE_NAME_INFOA REMOTE_NAME_INFO; - alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; - alias WNetAddConnection2A WNetAddConnection2; - alias WNetAddConnection3A WNetAddConnection3; - alias WNetCancelConnection2A WNetCancelConnection2; - alias WNetGetConnectionA WNetGetConnection; - alias WNetUseConnectionA WNetUseConnection; - alias WNetSetConnectionA WNetSetConnection; - alias WNetConnectionDialog1A WNetConnectionDialog1; - alias WNetDisconnectDialog1A WNetDisconnectDialog1; - alias WNetOpenEnumA WNetOpenEnum; - alias WNetEnumResourceA WNetEnumResource; - alias WNetGetUniversalNameA WNetGetUniversalName; - alias WNetGetUserA WNetGetUser; - alias WNetGetProviderNameA WNetGetProviderName; - alias WNetGetNetworkInformationA WNetGetNetworkInformation; - alias WNetGetResourceInformationA WNetGetResourceInformation; - alias WNetGetResourceParentA WNetGetResourceParent; - alias WNetGetLastErrorA WNetGetLastError; - alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance; - deprecated { - alias WNetAddConnectionA WNetAddConnection; - alias WNetCancelConnectionA WNetCancelConnection; - } -} - -alias NETRESOURCE* LPNETRESOURCE; -alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT; -alias DISCDLGSTRUCT* LPDISCDLGSTRUCT; -alias REMOTE_NAME_INFO* LPREMOTE_NAME_INFO; -alias UNIVERSAL_NAME_INFO* LPUNIVERSAL_NAME_INFO; +/***********************************************************************\ +* winnetwk.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winnetwk; +pragma(lib, "mpr"); + +private import win32.winbase, win32.winerror, win32.winnt; + +enum : DWORD { + WNNC_NET_MSNET = 0x00010000, + WNNC_NET_LANMAN = 0x00020000, + WNNC_NET_NETWARE = 0x00030000, + WNNC_NET_VINES = 0x00040000, + WNNC_NET_10NET = 0x00050000, + WNNC_NET_LOCUS = 0x00060000, + WNNC_NET_SUN_PC_NFS = 0x00070000, + WNNC_NET_LANSTEP = 0x00080000, + WNNC_NET_9TILES = 0x00090000, + WNNC_NET_LANTASTIC = 0x000A0000, + WNNC_NET_AS400 = 0x000B0000, + WNNC_NET_FTP_NFS = 0x000C0000, + WNNC_NET_PATHWORKS = 0x000D0000, + WNNC_NET_LIFENET = 0x000E0000, + WNNC_NET_POWERLAN = 0x000F0000, + WNNC_NET_BWNFS = 0x00100000, + WNNC_NET_COGENT = 0x00110000, + WNNC_NET_FARALLON = 0x00120000, + WNNC_NET_APPLETALK = 0x00130000, + WNNC_NET_INTERGRAPH = 0x00140000, + WNNC_NET_SYMFONET = 0x00150000, + WNNC_NET_CLEARCASE = 0x00160000, + WNNC_NET_FRONTIER = 0x00170000, + WNNC_NET_BMC = 0x00180000, + WNNC_NET_DCE = 0x00190000, + WNNC_NET_AVID = 0x001A0000, + WNNC_NET_DOCUSPACE = 0x001B0000, + WNNC_NET_MANGOSOFT = 0x001C0000, + WNNC_NET_SERNET = 0x001D0000, + WNNC_NET_DECORB = 0x00200000, + WNNC_NET_PROTSTOR = 0x00210000, + WNNC_NET_FJ_REDIR = 0x00220000, + WNNC_NET_DISTINCT = 0x00230000, + WNNC_NET_TWINS = 0x00240000, + WNNC_NET_RDR2SAMPLE = 0x00250000, + WNNC_NET_CSC = 0x00260000, + WNNC_NET_3IN1 = 0x00270000, + WNNC_NET_EXTENDNET = 0x00290000, + WNNC_NET_OBJECT_DIRE = 0x00300000, + WNNC_NET_MASFAX = 0x00310000, + WNNC_NET_HOB_NFS = 0x00320000, + WNNC_NET_SHIVA = 0x00330000, + WNNC_NET_IBMAL = 0x00340000, + WNNC_CRED_MANAGER = 0xFFFF0000 +} + +enum : DWORD { + RESOURCE_CONNECTED = 1, + RESOURCE_GLOBALNET = 2, + RESOURCE_REMEMBERED = 3, + RESOURCE_RECENT = 4, + RESOURCE_CONTEXT = 5 +} + +const DWORD + RESOURCETYPE_ANY = 0, + RESOURCETYPE_DISK = 1, + RESOURCETYPE_PRINT = 2, + RESOURCETYPE_RESERVED = 8, + RESOURCETYPE_UNKNOWN = 0xFFFFFFFF; + +const DWORD + RESOURCEUSAGE_CONNECTABLE = 0x00000001, + RESOURCEUSAGE_CONTAINER = 0x00000002, + RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004, + RESOURCEUSAGE_SIBLING = 0x00000008, + RESOURCEUSAGE_ATTACHED = 0x00000010, + RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE + | RESOURCEUSAGE_CONTAINER + | RESOURCEUSAGE_ATTACHED), + RESOURCEUSAGE_RESERVED = 0x80000000; + +enum : DWORD { + RESOURCEDISPLAYTYPE_GENERIC, + RESOURCEDISPLAYTYPE_DOMAIN, + RESOURCEDISPLAYTYPE_SERVER, + RESOURCEDISPLAYTYPE_SHARE, + RESOURCEDISPLAYTYPE_FILE, + RESOURCEDISPLAYTYPE_GROUP, + RESOURCEDISPLAYTYPE_NETWORK, + RESOURCEDISPLAYTYPE_ROOT, + RESOURCEDISPLAYTYPE_SHAREADMIN, + RESOURCEDISPLAYTYPE_DIRECTORY, + RESOURCEDISPLAYTYPE_TREE // = 10 +} + +const NETPROPERTY_PERSISTENT = 1; + +const DWORD + CONNECT_UPDATE_PROFILE = 1, + CONNECT_UPDATE_RECENT = 2, + CONNECT_TEMPORARY = 4, + CONNECT_INTERACTIVE = 8, + CONNECT_PROMPT = 16, + CONNECT_NEED_DRIVE = 32, + CONNECT_REFCOUNT = 64, + CONNECT_REDIRECT = 128, + CONNECT_LOCALDRIVE = 256, + CONNECT_CURRENT_MEDIA = 512; + +const DWORD + CONNDLG_RO_PATH = 1, + CONNDLG_CONN_POINT = 2, + CONNDLG_USE_MRU = 4, + CONNDLG_HIDE_BOX = 8, + CONNDLG_PERSIST = 16, + CONNDLG_NOT_PERSIST = 32; + +const DWORD + DISC_UPDATE_PROFILE = 1, + DISC_NO_FORCE = 64; + +const DWORD + WNFMT_MULTILINE = 1, + WNFMT_ABBREVIATED = 2, + WNFMT_INENUM = 16, + WNFMT_CONNECTION = 32; + +enum : DWORD { + WN_SUCCESS = NO_ERROR, + WN_NO_ERROR = NO_ERROR, + WN_NOT_SUPPORTED = ERROR_NOT_SUPPORTED, + WN_CANCEL = ERROR_CANCELLED, + WN_RETRY = ERROR_RETRY, + WN_NET_ERROR = ERROR_UNEXP_NET_ERR, + WN_MORE_DATA = ERROR_MORE_DATA, + WN_BAD_POINTER = ERROR_INVALID_ADDRESS, + WN_BAD_VALUE = ERROR_INVALID_PARAMETER, + WN_BAD_USER = ERROR_BAD_USERNAME, + WN_BAD_PASSWORD = ERROR_INVALID_PASSWORD, + WN_ACCESS_DENIED = ERROR_ACCESS_DENIED, + WN_FUNCTION_BUSY = ERROR_BUSY, + WN_WINDOWS_ERROR = ERROR_UNEXP_NET_ERR, + WN_OUT_OF_MEMORY = ERROR_NOT_ENOUGH_MEMORY, + WN_NO_NETWORK = ERROR_NO_NETWORK, + WN_EXTENDED_ERROR = ERROR_EXTENDED_ERROR, + WN_BAD_LEVEL = ERROR_INVALID_LEVEL, + WN_BAD_HANDLE = ERROR_INVALID_HANDLE, + WN_NOT_INITIALIZING = ERROR_ALREADY_INITIALIZED, + WN_NO_MORE_DEVICES = ERROR_NO_MORE_DEVICES, + WN_NOT_CONNECTED = ERROR_NOT_CONNECTED, + WN_OPEN_FILES = ERROR_OPEN_FILES, + WN_DEVICE_IN_USE = ERROR_DEVICE_IN_USE, + WN_BAD_NETNAME = ERROR_BAD_NET_NAME, + WN_BAD_LOCALNAME = ERROR_BAD_DEVICE, + WN_ALREADY_CONNECTED = ERROR_ALREADY_ASSIGNED, + WN_DEVICE_ERROR = ERROR_GEN_FAILURE, + WN_CONNECTION_CLOSED = ERROR_CONNECTION_UNAVAIL, + WN_NO_NET_OR_BAD_PATH = ERROR_NO_NET_OR_BAD_PATH, + WN_BAD_PROVIDER = ERROR_BAD_PROVIDER, + WN_CANNOT_OPEN_PROFILE = ERROR_CANNOT_OPEN_PROFILE, + WN_BAD_PROFILE = ERROR_BAD_PROFILE, + WN_BAD_DEV_TYPE = ERROR_BAD_DEV_TYPE, + WN_DEVICE_ALREADY_REMEMBERED = ERROR_DEVICE_ALREADY_REMEMBERED, + WN_NO_MORE_ENTRIES = ERROR_NO_MORE_ITEMS, + WN_NOT_CONTAINER = ERROR_NOT_CONTAINER, + WN_NOT_AUTHENTICATED = ERROR_NOT_AUTHENTICATED, + WN_NOT_LOGGED_ON = ERROR_NOT_LOGGED_ON, + WN_NOT_VALIDATED = ERROR_NO_LOGON_SERVERS +} + +enum : DWORD { + UNIVERSAL_NAME_INFO_LEVEL = 1, + REMOTE_NAME_INFO_LEVEL +} + +const DWORD + NETINFO_DLL16 = 1, + NETINFO_DISKRED = 4, + NETINFO_PRINTERRED = 8; + +const DWORD + RP_LOGON = 1, + RP_INIFILE = 2; + +const DWORD PP_DISPLAYERRORS = 1; + +const DWORD + WNCON_FORNETCARD = 1, + WNCON_NOTROUTED = 2, + WNCON_SLOWLINK = 4, + WNCON_DYNAMIC = 8; + +struct NETRESOURCEA { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPSTR lpLocalName; + LPSTR lpRemoteName; + LPSTR lpComment; + LPSTR lpProvider; +} +alias NETRESOURCEA* LPNETRESOURCEA; + +struct NETRESOURCEW { + DWORD dwScope; + DWORD dwType; + DWORD dwDisplayType; + DWORD dwUsage; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + LPWSTR lpComment ; + LPWSTR lpProvider; +} +alias NETRESOURCEW* LPNETRESOURCEW; + +struct CONNECTDLGSTRUCTA { + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEA lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; +} +alias CONNECTDLGSTRUCTA* LPCONNECTDLGSTRUCTA; + +struct CONNECTDLGSTRUCTW { + DWORD cbStructure; + HWND hwndOwner; + LPNETRESOURCEW lpConnRes; + DWORD dwFlags; + DWORD dwDevNum; +} +alias CONNECTDLGSTRUCTW* LPCONNECTDLGSTRUCTW; + +struct DISCDLGSTRUCTA { + DWORD cbStructure; + HWND hwndOwner; + LPSTR lpLocalName; + LPSTR lpRemoteName; + DWORD dwFlags; +} +alias DISCDLGSTRUCTA* LPDISCDLGSTRUCTA; + +struct DISCDLGSTRUCTW { + DWORD cbStructure; + HWND hwndOwner; + LPWSTR lpLocalName; + LPWSTR lpRemoteName; + DWORD dwFlags; +} +alias DISCDLGSTRUCTW* LPDISCDLGSTRUCTW; + +struct UNIVERSAL_NAME_INFOA { + LPSTR lpUniversalName; +} +alias UNIVERSAL_NAME_INFOA* LPUNIVERSAL_NAME_INFOA; + +struct UNIVERSAL_NAME_INFOW { + LPWSTR lpUniversalName; +} +alias UNIVERSAL_NAME_INFOW* LPUNIVERSAL_NAME_INFOW; + +struct REMOTE_NAME_INFOA { + LPSTR lpUniversalName; + LPSTR lpConnectionName; + LPSTR lpRemainingPath; +} +alias REMOTE_NAME_INFOA* LPREMOTE_NAME_INFOA; + +struct REMOTE_NAME_INFOW { + LPWSTR lpUniversalName; + LPWSTR lpConnectionName; + LPWSTR lpRemainingPath; +} +alias REMOTE_NAME_INFOW* LPREMOTE_NAME_INFOW; + +struct NETINFOSTRUCT { + DWORD cbStructure; + DWORD dwProviderVersion; + DWORD dwStatus; + DWORD dwCharacteristics; + DWORD dwHandle; + WORD wNetType; + DWORD dwPrinters; + DWORD dwDrives; +} +alias NETINFOSTRUCT* LPNETINFOSTRUCT; + +extern (Pascal) { + alias UINT function(LPCSTR, LPSTR, UINT) PFNGETPROFILEPATHA; + alias UINT function(LPCWSTR, LPWSTR, UINT) PFNGETPROFILEPATHW; + alias UINT function(LPCSTR, LPCSTR, DWORD) PFNRECONCILEPROFILEA; + alias UINT function(LPCWSTR, LPCWSTR, DWORD) PFNRECONCILEPROFILEW; + alias BOOL function(HWND, LPCSTR, LPCSTR, LPCSTR, DWORD) + PFNPROCESSPOLICIESA; + alias BOOL function(HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD) + PFNPROCESSPOLICIESW; +} + +struct NETCONNECTINFOSTRUCT { + DWORD cbStructure; + DWORD dwFlags; + DWORD dwSpeed; + DWORD dwDelay; + DWORD dwOptDataSize; +} +alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT; + +extern (Windows) { + DWORD WNetAddConnection2A(LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); + DWORD WNetAddConnection2W(LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); + DWORD WNetAddConnection3A(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD); + DWORD WNetAddConnection3W(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD); + DWORD WNetCancelConnection2A(LPCSTR, DWORD, BOOL); + DWORD WNetCancelConnection2W(LPCWSTR, DWORD, BOOL); + DWORD WNetGetConnectionA(LPCSTR, LPSTR, PDWORD); + DWORD WNetGetConnectionW(LPCWSTR, LPWSTR, PDWORD); + DWORD WNetUseConnectionA(HWND, LPNETRESOURCEA, LPCSTR, LPCSTR, DWORD, + LPSTR, PDWORD, PDWORD); + DWORD WNetUseConnectionW(HWND, LPNETRESOURCEW, LPCWSTR, LPCWSTR, DWORD, + LPWSTR, PDWORD, PDWORD); + DWORD WNetSetConnectionA(LPCSTR, DWORD, PVOID); + DWORD WNetSetConnectionW(LPCWSTR, DWORD, PVOID); + DWORD WNetConnectionDialog(HWND, DWORD); + DWORD WNetDisconnectDialog(HWND, DWORD); + DWORD WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA); + DWORD WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW); + DWORD WNetDisconnectDialog1A(LPDISCDLGSTRUCTA); + DWORD WNetDisconnectDialog1W(LPDISCDLGSTRUCTW); + DWORD WNetOpenEnumA(DWORD, DWORD, DWORD, LPNETRESOURCEA, LPHANDLE); + DWORD WNetOpenEnumW(DWORD, DWORD, DWORD, LPNETRESOURCEW, LPHANDLE); + DWORD WNetEnumResourceA(HANDLE, PDWORD, PVOID, PDWORD); + DWORD WNetEnumResourceW(HANDLE, PDWORD, PVOID, PDWORD); + DWORD WNetCloseEnum(HANDLE); + DWORD WNetGetUniversalNameA(LPCSTR, DWORD, PVOID, PDWORD); + DWORD WNetGetUniversalNameW(LPCWSTR, DWORD, PVOID, PDWORD); + DWORD WNetGetUserA(LPCSTR, LPSTR, PDWORD); + DWORD WNetGetUserW(LPCWSTR, LPWSTR, PDWORD); + DWORD WNetGetProviderNameA(DWORD, LPSTR, PDWORD); + DWORD WNetGetProviderNameW(DWORD, LPWSTR, PDWORD); + DWORD WNetGetNetworkInformationA(LPCSTR, LPNETINFOSTRUCT); + DWORD WNetGetNetworkInformationW(LPCWSTR, LPNETINFOSTRUCT); + DWORD WNetGetResourceInformationA(LPNETRESOURCEA, LPVOID, LPDWORD, + LPSTR*); + DWORD WNetGetResourceInformationW(LPNETRESOURCEA, LPVOID, LPDWORD, + LPWSTR*); + DWORD WNetGetResourceParentA(LPNETRESOURCEA, LPVOID, LPDWORD); + DWORD WNetGetResourceParentW(LPNETRESOURCEW, LPVOID, LPDWORD); + DWORD WNetGetLastErrorA(PDWORD, LPSTR, DWORD, LPSTR, DWORD); + DWORD WNetGetLastErrorW(PDWORD, LPWSTR, DWORD, LPWSTR, DWORD); + DWORD MultinetGetConnectionPerformanceA(LPNETRESOURCEA, + LPNETCONNECTINFOSTRUCT); + DWORD MultinetGetConnectionPerformanceW(LPNETRESOURCEW, + LPNETCONNECTINFOSTRUCT); + deprecated { + DWORD WNetAddConnectionA(LPCSTR, LPCSTR, LPCSTR); + DWORD WNetAddConnectionW(LPCWSTR, LPCWSTR, LPCWSTR); + DWORD WNetCancelConnectionA(LPCSTR, BOOL); + DWORD WNetCancelConnectionW(LPCWSTR, BOOL); + } +} + +version (Unicode) { + alias PFNGETPROFILEPATHW PFNGETPROFILEPATH; + alias PFNRECONCILEPROFILEW PFNRECONCILEPROFILE; + alias PFNPROCESSPOLICIESW PFNPROCESSPOLICIES; + alias NETRESOURCEW NETRESOURCE; + alias CONNECTDLGSTRUCTW CONNECTDLGSTRUCT; + alias DISCDLGSTRUCTW DISCDLGSTRUCT; + alias REMOTE_NAME_INFOW REMOTE_NAME_INFO; + alias UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO; + alias WNetAddConnection2W WNetAddConnection2; + alias WNetAddConnection3W WNetAddConnection3; + alias WNetCancelConnection2W WNetCancelConnection2; + alias WNetGetConnectionW WNetGetConnection; + alias WNetUseConnectionW WNetUseConnection; + alias WNetSetConnectionW WNetSetConnection; + alias WNetConnectionDialog1W WNetConnectionDialog1; + alias WNetDisconnectDialog1W WNetDisconnectDialog1; + alias WNetOpenEnumW WNetOpenEnum; + alias WNetEnumResourceW WNetEnumResource; + alias WNetGetUniversalNameW WNetGetUniversalName; + alias WNetGetUserW WNetGetUser; + alias WNetGetProviderNameW WNetGetProviderName; + alias WNetGetNetworkInformationW WNetGetNetworkInformation; + alias WNetGetResourceInformationW WNetGetResourceInformation; + alias WNetGetResourceParentW WNetGetResourceParent; + alias WNetGetLastErrorW WNetGetLastError; + alias MultinetGetConnectionPerformanceW MultinetGetConnectionPerformance; + deprecated { + alias WNetAddConnectionW WNetAddConnection; + alias WNetCancelConnectionW WNetCancelConnection; + } +} else { + alias PFNGETPROFILEPATHA PFNGETPROFILEPATH; + alias PFNRECONCILEPROFILEA PFNRECONCILEPROFILE; + alias PFNPROCESSPOLICIESA PFNPROCESSPOLICIES; + alias NETRESOURCEA NETRESOURCE; + alias CONNECTDLGSTRUCTA CONNECTDLGSTRUCT; + alias DISCDLGSTRUCTA DISCDLGSTRUCT; + alias REMOTE_NAME_INFOA REMOTE_NAME_INFO; + alias UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO; + alias WNetAddConnection2A WNetAddConnection2; + alias WNetAddConnection3A WNetAddConnection3; + alias WNetCancelConnection2A WNetCancelConnection2; + alias WNetGetConnectionA WNetGetConnection; + alias WNetUseConnectionA WNetUseConnection; + alias WNetSetConnectionA WNetSetConnection; + alias WNetConnectionDialog1A WNetConnectionDialog1; + alias WNetDisconnectDialog1A WNetDisconnectDialog1; + alias WNetOpenEnumA WNetOpenEnum; + alias WNetEnumResourceA WNetEnumResource; + alias WNetGetUniversalNameA WNetGetUniversalName; + alias WNetGetUserA WNetGetUser; + alias WNetGetProviderNameA WNetGetProviderName; + alias WNetGetNetworkInformationA WNetGetNetworkInformation; + alias WNetGetResourceInformationA WNetGetResourceInformation; + alias WNetGetResourceParentA WNetGetResourceParent; + alias WNetGetLastErrorA WNetGetLastError; + alias MultinetGetConnectionPerformanceA MultinetGetConnectionPerformance; + deprecated { + alias WNetAddConnectionA WNetAddConnection; + alias WNetCancelConnectionA WNetCancelConnection; + } +} + +alias NETRESOURCE* LPNETRESOURCE; +alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT; +alias DISCDLGSTRUCT* LPDISCDLGSTRUCT; +alias REMOTE_NAME_INFO* LPREMOTE_NAME_INFO; +alias UNIVERSAL_NAME_INFO* LPUNIVERSAL_NAME_INFO; Index: src/win32/winnls.d ================================================================== --- src/win32/winnls.d +++ src/win32/winnls.d @@ -1,811 +1,809 @@ -/***********************************************************************\ -* winnls.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winnls; -pragma(lib, "kernel32.lib"); - -private import win32.basetsd, win32.w32api, win32.winbase, win32.windef; - -alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS; - -const size_t - MAX_DEFAULTCHAR = 2, - MAX_LEADBYTES = 12; - -const LCTYPE - LOCALE_USE_CP_ACP = 0x40000000, - LOCALE_RETURN_NUMBER = 0x20000000; - -enum : LCTYPE { - LOCALE_ILANGUAGE = 1, - LOCALE_SLANGUAGE, - LOCALE_SABBREVLANGNAME, - LOCALE_SNATIVELANGNAME, - LOCALE_ICOUNTRY, - LOCALE_SCOUNTRY, - LOCALE_SABBREVCTRYNAME, - LOCALE_SNATIVECTRYNAME, - LOCALE_IDEFAULTLANGUAGE, - LOCALE_IDEFAULTCOUNTRY, - LOCALE_IDEFAULTCODEPAGE, - LOCALE_SLIST, - LOCALE_IMEASURE, - LOCALE_SDECIMAL, - LOCALE_STHOUSAND, - LOCALE_SGROUPING, - LOCALE_IDIGITS, - LOCALE_ILZERO, - LOCALE_SNATIVEDIGITS, - LOCALE_SCURRENCY, - LOCALE_SINTLSYMBOL, - LOCALE_SMONDECIMALSEP, - LOCALE_SMONTHOUSANDSEP, - LOCALE_SMONGROUPING, - LOCALE_ICURRDIGITS, - LOCALE_IINTLCURRDIGITS, - LOCALE_ICURRENCY, - LOCALE_INEGCURR, - LOCALE_SDATE, - LOCALE_STIME, - LOCALE_SSHORTDATE, - LOCALE_SLONGDATE, - LOCALE_IDATE, - LOCALE_ILDATE, - LOCALE_ITIME, - LOCALE_ICENTURY, - LOCALE_ITLZERO, - LOCALE_IDAYLZERO, - LOCALE_IMONLZERO, - LOCALE_S1159, - LOCALE_S2359, - LOCALE_SDAYNAME1, - LOCALE_SDAYNAME2, - LOCALE_SDAYNAME3, - LOCALE_SDAYNAME4, - LOCALE_SDAYNAME5, - LOCALE_SDAYNAME6, - LOCALE_SDAYNAME7, - LOCALE_SABBREVDAYNAME1, - LOCALE_SABBREVDAYNAME2, - LOCALE_SABBREVDAYNAME3, - LOCALE_SABBREVDAYNAME4, - LOCALE_SABBREVDAYNAME5, - LOCALE_SABBREVDAYNAME6, - LOCALE_SABBREVDAYNAME7, - LOCALE_SMONTHNAME1, - LOCALE_SMONTHNAME2, - LOCALE_SMONTHNAME3, - LOCALE_SMONTHNAME4, - LOCALE_SMONTHNAME5, - LOCALE_SMONTHNAME6, - LOCALE_SMONTHNAME7, - LOCALE_SMONTHNAME8, - LOCALE_SMONTHNAME9, - LOCALE_SMONTHNAME10, - LOCALE_SMONTHNAME11, - LOCALE_SMONTHNAME12, - LOCALE_SABBREVMONTHNAME1, - LOCALE_SABBREVMONTHNAME2, - LOCALE_SABBREVMONTHNAME3, - LOCALE_SABBREVMONTHNAME4, - LOCALE_SABBREVMONTHNAME5, - LOCALE_SABBREVMONTHNAME6, - LOCALE_SABBREVMONTHNAME7, - LOCALE_SABBREVMONTHNAME8, - LOCALE_SABBREVMONTHNAME9, - LOCALE_SABBREVMONTHNAME10, - LOCALE_SABBREVMONTHNAME11, - LOCALE_SABBREVMONTHNAME12, - LOCALE_SPOSITIVESIGN, - LOCALE_SNEGATIVESIGN, - LOCALE_IPOSSIGNPOSN, - LOCALE_INEGSIGNPOSN, - LOCALE_IPOSSYMPRECEDES, - LOCALE_IPOSSEPBYSPACE, - LOCALE_INEGSYMPRECEDES, - LOCALE_INEGSEPBYSPACE, - LOCALE_FONTSIGNATURE, - LOCALE_SISO639LANGNAME, - LOCALE_SISO3166CTRYNAME, // = 90 - LOCALE_SENGLANGUAGE = 0x1001, - LOCALE_SENGCOUNTRY = 0x1002, - LOCALE_IDEFAULTANSICODEPAGE = 0x1004, - LOCALE_INEGNUMBER = 0x1010, - LOCALE_STIMEFORMAT = 0x1003, - LOCALE_ITIMEMARKPOSN = 0x1005, - LOCALE_ICALENDARTYPE = 0x1009, - LOCALE_IOPTIONALCALENDAR = 0x100B, - LOCALE_IFIRSTDAYOFWEEK = 0x100C, - LOCALE_IFIRSTWEEKOFYEAR = 0x100D, - LOCALE_SMONTHNAME13 = 0x100E, - LOCALE_SABBREVMONTHNAME13 = 0x100F -} - -enum : LCID { - LOCALE_USER_DEFAULT = 0x400, - LOCALE_SYSTEM_DEFAULT = 0x800 -} - -const DWORD - NORM_IGNORECASE = 1, - NORM_IGNORENONSPACE = 2, - NORM_IGNORESYMBOLS = 4, - SORT_STRINGSORT = 0x01000, - NORM_IGNOREKANATYPE = 0x10000, - NORM_IGNOREWIDTH = 0x20000; - -const DWORD - LCMAP_LOWERCASE = 0x00000100, - LCMAP_UPPERCASE = 0x00000200, - LCMAP_SORTKEY = 0x00000400, - LCMAP_BYTEREV = 0x00000800, - LCMAP_HIRAGANA = 0x00100000, - LCMAP_KATAKANA = 0x00200000, - LCMAP_HALFWIDTH = 0x00400000, - LCMAP_FULLWIDTH = 0x00800000, - LCMAP_LINGUISTIC_CASING = 0x01000000, - LCMAP_SIMPLIFIED_CHINESE = 0x02000000, - LCMAP_TRADITIONAL_CHINESE = 0x04000000; - -const CALID ENUM_ALL_CALENDARS = -1; - -const DWORD - DATE_SHORTDATE = 1, - DATE_LONGDATE = 2, - DATE_USE_ALT_CALENDAR = 4, - LOCALE_NOUSEROVERRIDE = 0x80000000; - -enum : DWORD { - CP_INSTALLED = 1, - CP_SUPPORTED -} - -enum : DWORD { - LCID_INSTALLED = 1, - LCID_SUPPORTED = 2, - LCID_ALTERNATE_SORTS = 4 -} - -const DWORD - MAP_FOLDCZONE = 16, - MAP_PRECOMPOSED = 32, - MAP_COMPOSITE = 64, - MAP_FOLDDIGITS = 128; - -enum : UINT { - CP_ACP, - CP_OEMCP, - CP_MACCP, - CP_THREAD_ACP, // = 3 - CP_SYMBOL = 42, - CP_UTF7 = 65000, - CP_UTF8 = 65001 -} - -enum : DWORD { - CT_CTYPE1 = 1, - CT_CTYPE2 = 2, - CT_CTYPE3 = 4 -} - -const WORD - 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; - -enum : WORD { - C2_NOTAPPLICABLE, - C2_LEFTTORIGHT, - C2_RIGHTTOLEFT, - C2_EUROPENUMBER, - C2_EUROPESEPARATOR, - C2_EUROPETERMINATOR, - C2_ARABICNUMBER, - C2_COMMONSEPARATOR, - C2_BLOCKSEPARATOR, - C2_SEGMENTSEPARATOR, - C2_WHITESPACE, - C2_OTHERNEUTRAL // = 11 -} - -const WORD - C3_NOTAPPLICABLE = 0, - C3_NONSPACING = 1, - C3_DIACRITIC = 2, - C3_VOWELMARK = 4, - C3_SYMBOL = 8, - C3_KATAKANA = 0x0010, - C3_HIRAGANA = 0x0020, - C3_HALFWIDTH = 0x0040, - C3_FULLWIDTH = 0x0080, - C3_IDEOGRAPH = 0x0100, - C3_KASHIDA = 0x0200, - C3_LEXICAL = 0x0400, - C3_ALPHA = 0x8000; - -const DWORD - TIME_NOMINUTESORSECONDS = 1, - TIME_NOSECONDS = 2, - TIME_NOTIMEMARKER = 4, - TIME_FORCE24HOURFORMAT = 8; - -const DWORD - MB_PRECOMPOSED = 1, - MB_COMPOSITE = 2, - MB_USEGLYPHCHARS = 4, - MB_ERR_INVALID_CHARS = 8; - -const DWORD - WC_DISCARDNS = 16, - WC_SEPCHARS = 32, - WC_DEFAULTCHAR = 64, - WC_COMPOSITECHECK = 512; - -enum : LONG { - CTRY_DEFAULT = 0, - CTRY_DOMINICAN_REPUBLIC = 1, - CTRY_PUERTO_RICO = 1, - CTRY_CARIBBEAN = 1, - CTRY_JAMAICA = 1, - CTRY_UNITED_STATES = 1, - CTRY_TRINIDAD_Y_TOBAGO = 1, - CTRY_CANADA = 2, - CTRY_RUSSIA = 7, - CTRY_UZBEKISTAN = 7, - CTRY_KAZAKSTAN = 7, - CTRY_TATARSTAN = 7, - CTRY_EGYPT = 20, - CTRY_SOUTH_AFRICA = 27, - CTRY_GREECE = 30, - CTRY_NETHERLANDS = 31, - CTRY_BELGIUM = 32, - CTRY_FRANCE = 33, - CTRY_MONACO = 33, - CTRY_SPAIN = 34, - CTRY_HUNGARY = 36, - CTRY_ITALY = 39, - CTRY_ROMANIA = 40, - CTRY_SWITZERLAND = 41, - CTRY_LIECHTENSTEIN = 41, - CTRY_AUSTRIA = 43, - CTRY_UNITED_KINGDOM = 44, - CTRY_DENMARK = 45, - CTRY_SWEDEN = 46, - CTRY_NORWAY = 47, - CTRY_POLAND = 48, - CTRY_GERMANY = 49, - CTRY_PERU = 51, - CTRY_MEXICO = 52, - CTRY_ARGENTINA = 54, - CTRY_BRAZIL = 55, - CTRY_CHILE = 56, - CTRY_COLOMBIA = 57, - CTRY_VENEZUELA = 58, - CTRY_MALAYSIA = 60, - CTRY_AUSTRALIA = 61, - CTRY_INDONESIA = 62, - CTRY_PHILIPPINES = 63, - CTRY_NEW_ZEALAND = 64, - CTRY_SINGAPORE = 65, - CTRY_THAILAND = 66, - CTRY_JAPAN = 81, - CTRY_SOUTH_KOREA = 82, - CTRY_VIET_NAM = 84, - CTRY_PRCHINA = 86, - CTRY_TURKEY = 90, - CTRY_INDIA = 91, - CTRY_PAKISTAN = 92, - CTRY_MOROCCO = 212, - CTRY_ALGERIA = 213, - CTRY_TUNISIA = 216, - CTRY_LIBYA = 218, - CTRY_KENYA = 254, - CTRY_ZIMBABWE = 263, - CTRY_FAEROE_ISLANDS = 298, - CTRY_PORTUGAL = 351, - CTRY_LUXEMBOURG = 352, - CTRY_IRELAND = 353, - CTRY_ICELAND = 354, - CTRY_ALBANIA = 355, - CTRY_FINLAND = 358, - CTRY_BULGARIA = 359, - CTRY_LITHUANIA = 370, - CTRY_LATVIA = 371, - CTRY_ESTONIA = 372, - CTRY_ARMENIA = 374, - CTRY_BELARUS = 375, - CTRY_UKRAINE = 380, - CTRY_SERBIA = 381, - CTRY_CROATIA = 385, - CTRY_SLOVENIA = 386, - CTRY_MACEDONIA = 389, - CTRY_CZECH = 420, - CTRY_SLOVAK = 421, - CTRY_BELIZE = 501, - CTRY_GUATEMALA = 502, - CTRY_EL_SALVADOR = 503, - CTRY_HONDURAS = 504, - CTRY_NICARAGUA = 505, - CTRY_COSTA_RICA = 506, - CTRY_PANAMA = 507, - CTRY_BOLIVIA = 591, - CTRY_ECUADOR = 593, - CTRY_PARAGUAY = 595, - CTRY_URUGUAY = 598, - CTRY_BRUNEI_DARUSSALAM = 673, - CTRY_HONG_KONG = 852, - CTRY_MACAU = 853, - CTRY_TAIWAN = 886, - CTRY_MALDIVES = 960, - CTRY_LEBANON = 961, - CTRY_JORDAN = 962, - CTRY_SYRIA = 963, - CTRY_IRAQ = 964, - CTRY_KUWAIT = 965, - CTRY_SAUDI_ARABIA = 966, - CTRY_YEMEN = 967, - CTRY_OMAN = 968, - CTRY_UAE = 971, - CTRY_ISRAEL = 972, - CTRY_BAHRAIN = 973, - CTRY_QATAR = 974, - CTRY_MONGOLIA = 976, - CTRY_IRAN = 981, - CTRY_AZERBAIJAN = 994, - CTRY_GEORGIA = 995, - CTRY_KYRGYZSTAN = 996 -} - -enum : CALTYPE { - CAL_ICALINTVALUE = 1, - CAL_SCALNAME, - CAL_IYEAROFFSETRANGE, - CAL_SERASTRING, - CAL_SSHORTDATE, - CAL_SLONGDATE, - CAL_SDAYNAME1, - CAL_SDAYNAME2, - CAL_SDAYNAME3, - CAL_SDAYNAME4, - CAL_SDAYNAME5, - CAL_SDAYNAME6, - CAL_SDAYNAME7, - CAL_SABBREVDAYNAME1, - CAL_SABBREVDAYNAME2, - CAL_SABBREVDAYNAME3, - CAL_SABBREVDAYNAME4, - CAL_SABBREVDAYNAME5, - CAL_SABBREVDAYNAME6, - CAL_SABBREVDAYNAME7, - CAL_SMONTHNAME1, - CAL_SMONTHNAME2, - CAL_SMONTHNAME3, - CAL_SMONTHNAME4, - CAL_SMONTHNAME5, - CAL_SMONTHNAME6, - CAL_SMONTHNAME7, - CAL_SMONTHNAME8, - CAL_SMONTHNAME9, - CAL_SMONTHNAME10, - CAL_SMONTHNAME11, - CAL_SMONTHNAME12, - CAL_SMONTHNAME13, - CAL_SABBREVMONTHNAME1, - CAL_SABBREVMONTHNAME2, - CAL_SABBREVMONTHNAME3, - CAL_SABBREVMONTHNAME4, - CAL_SABBREVMONTHNAME5, - CAL_SABBREVMONTHNAME6, - CAL_SABBREVMONTHNAME7, - CAL_SABBREVMONTHNAME8, - CAL_SABBREVMONTHNAME9, - CAL_SABBREVMONTHNAME10, - CAL_SABBREVMONTHNAME11, - CAL_SABBREVMONTHNAME12, - CAL_SABBREVMONTHNAME13 // = 46 -} - - -enum : CALTYPE { - CAL_GREGORIAN = 1, - CAL_GREGORIAN_US, - CAL_JAPAN, - CAL_TAIWAN, - CAL_KOREA, - CAL_HIJRI, - CAL_THAI, - CAL_HEBREW, - CAL_GREGORIAN_ME_FRENCH, - CAL_GREGORIAN_ARABIC, - CAL_GREGORIAN_XLIT_ENGLISH, - CAL_GREGORIAN_XLIT_FRENCH // = 12 -} - -enum : int { - CSTR_LESS_THAN = 1, - CSTR_EQUAL, - CSTR_GREATER_THAN -} - -enum : DWORD { - LGRPID_INSTALLED = 1, - LGRPID_SUPPORTED -} - -enum : LGRPID { - LGRPID_WESTERN_EUROPE = 1, - LGRPID_CENTRAL_EUROPE, - LGRPID_BALTIC, - LGRPID_GREEK, - LGRPID_CYRILLIC, - LGRPID_TURKISH, - LGRPID_JAPANESE, - LGRPID_KOREAN, - LGRPID_TRADITIONAL_CHINESE, - LGRPID_SIMPLIFIED_CHINESE, - LGRPID_THAI, - LGRPID_HEBREW, - LGRPID_ARABIC, - LGRPID_VIETNAMESE, - LGRPID_INDIC, - LGRPID_GEORGIAN, - LGRPID_ARMENIAN // = 17 -} - -static if (WINVER >= 0x500) { - enum : LCTYPE { - LOCALE_SYEARMONTH = 0x1006, - LOCALE_SENGCURRNAME = 0x1007, - LOCALE_SNATIVECURRNAME = 0x1008, - LOCALE_IDEFAULTEBCDICCODEPAGE = 0x1012, - LOCALE_SSORTNAME = 0x1013, - LOCALE_IDIGITSUBSTITUTION = 0x1014, - LOCALE_IPAPERSIZE = 0x100A - } - - const DWORD - DATE_YEARMONTH = 8, - DATE_LTRREADING = 16, - DATE_RTLREADING = 32; - - const DWORD MAP_EXPAND_LIGATURES = 0x2000; - const DWORD WC_NO_BEST_FIT_CHARS = 1024; - - enum : CALTYPE { - CAL_SYEARMONTH = 47, - CAL_ITWODIGITYEARMAX = 48, - CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE, - CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER, - CAL_USE_CP_ACP = LOCALE_USE_CP_ACP - } -} // (WINVER >= 0x500) - -extern (Windows) { - alias BOOL function(LPSTR) CALINFO_ENUMPROCA; - alias BOOL function(LPWSTR) CALINFO_ENUMPROCW; - alias BOOL function(LPSTR, CALID) CALINFO_ENUMPROCEXA; - alias BOOL function(LPWSTR, CALID) CALINFO_ENUMPROCEXW; - alias BOOL function(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR) - LANGUAGEGROUP_ENUMPROCA; - alias BOOL function(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR) - LANGUAGEGROUP_ENUMPROCW; - alias BOOL function(LGRPID, LCID, LPSTR, LONG_PTR) - LANGGROUPLOCALE_ENUMPROCA; - alias BOOL function(LGRPID, LCID, LPWSTR, LONG_PTR) - LANGGROUPLOCALE_ENUMPROCW; - alias BOOL function(LPWSTR, LONG_PTR) UILANGUAGE_ENUMPROCW; - alias BOOL function(LPSTR, LONG_PTR) UILANGUAGE_ENUMPROCA; - alias BOOL function(LPSTR) LOCALE_ENUMPROCA; - alias BOOL function(LPWSTR) LOCALE_ENUMPROCW; - alias BOOL function(LPSTR) CODEPAGE_ENUMPROCA; - alias BOOL function(LPWSTR) CODEPAGE_ENUMPROCW; - alias BOOL function(LPSTR) DATEFMT_ENUMPROCA; - alias BOOL function(LPWSTR) DATEFMT_ENUMPROCW; - alias BOOL function(LPSTR, CALID) DATEFMT_ENUMPROCEXA; - alias BOOL function(LPWSTR, CALID) DATEFMT_ENUMPROCEXW; - alias BOOL function(LPSTR) TIMEFMT_ENUMPROCA; - alias BOOL function(LPWSTR) TIMEFMT_ENUMPROCW; - alias BOOL function(GEOID) GEO_ENUMPROC; -} - -enum NLS_FUNCTION { - COMPARE_STRING = 0x0001 -} - -enum SYSGEOCLASS { - GEOCLASS_NATION = 16, - GEOCLASS_REGION = 14 -} - -enum SYSGEOTYPE { - GEO_NATION = 0x0001, - GEO_LATITUDE = 0x0002, - GEO_LONGITUDE = 0x0003, - GEO_ISO2 = 0x0004, - GEO_ISO3 = 0x0005, - GEO_RFC1766 = 0x0006, - GEO_LCID = 0x0007, - GEO_FRIENDLYNAME = 0x0008, - GEO_OFFICIALNAME = 0x0009, - GEO_TIMEZONES = 0x000a, - GEO_OFFICIALLANGUAGES = 0x000a -} - -struct CPINFO { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; -} -alias CPINFO* LPCPINFO; - -struct CPINFOEXA { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; - WCHAR UnicodeDefaultChar; - UINT CodePage; - CHAR[MAX_PATH] CodePageName; -} -alias CPINFOEXA* LPCPINFOEXA; - -struct CPINFOEXW { - UINT MaxCharSize; - BYTE[MAX_DEFAULTCHAR] DefaultChar; - BYTE[MAX_LEADBYTES] LeadByte; - WCHAR UnicodeDefaultChar; - UINT CodePage; - WCHAR[MAX_PATH] CodePageName; -} -alias CPINFOEXW* LPCPINFOEXW; - -struct CURRENCYFMTA { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPSTR lpDecimalSep; - LPSTR lpThousandSep; - UINT NegativeOrder; - UINT PositiveOrder; - LPSTR lpCurrencySymbol; -} -alias CURRENCYFMTA* LPCURRENCYFMTA; - -struct CURRENCYFMTW { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPWSTR lpDecimalSep; - LPWSTR lpThousandSep; - UINT NegativeOrder; - UINT PositiveOrder; - LPWSTR lpCurrencySymbol; -} -alias CURRENCYFMTW* LPCURRENCYFMTW; - -struct NLSVERSIONINFO { - DWORD dwNLSVersionInfoSize; - DWORD dwNLSVersion; - DWORD dwDefinedVersion; -} -alias NLSVERSIONINFO* LPNLSVERSIONINFO; - -struct NUMBERFMTA { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPSTR lpDecimalSep; - LPSTR lpThousandSep; - UINT NegativeOrder; -} -alias NUMBERFMTA* LPNUMBERFMTA; - -struct NUMBERFMTW { - UINT NumDigits; - UINT LeadingZero; - UINT Grouping; - LPWSTR lpDecimalSep; - LPWSTR lpThousandSep; - UINT NegativeOrder; -} -alias NUMBERFMTW* LPNUMBERFMTW; - -extern (Windows) { - int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int); - int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int); - LCID ConvertDefaultLocale(LCID); - BOOL EnumCalendarInfoA(CALINFO_ENUMPROCA, LCID, CALID, CALTYPE); - BOOL EnumCalendarInfoW(CALINFO_ENUMPROCW, LCID, CALID, CALTYPE); - BOOL EnumDateFormatsA(DATEFMT_ENUMPROCA, LCID, DWORD); - BOOL EnumDateFormatsW(DATEFMT_ENUMPROCW, LCID, DWORD); - BOOL EnumSystemCodePagesA(CODEPAGE_ENUMPROCA, DWORD); - BOOL EnumSystemCodePagesW(CODEPAGE_ENUMPROCW, DWORD); - BOOL EnumSystemGeoID(GEOCLASS, GEOID, GEO_ENUMPROC); - BOOL EnumSystemLocalesA(LOCALE_ENUMPROCA, DWORD); - BOOL EnumSystemLocalesW(LOCALE_ENUMPROCW, DWORD); - BOOL EnumTimeFormatsA(TIMEFMT_ENUMPROCA, LCID, DWORD); - BOOL EnumTimeFormatsW(TIMEFMT_ENUMPROCW, LCID, DWORD); - int FoldStringA(DWORD, LPCSTR, int, LPSTR, int); - int FoldStringW(DWORD, LPCWSTR, int, LPWSTR, int); - UINT GetACP(); - int GetCalendarInfoA(LCID, CALID, CALTYPE, LPSTR, int, LPDWORD); - int GetCalendarInfoW(LCID, CALID, CALTYPE, LPWSTR, int, LPDWORD); - BOOL GetCPInfo(UINT, LPCPINFO); - BOOL GetCPInfoExA(UINT, DWORD, LPCPINFOEXA); - BOOL GetCPInfoExW(UINT, DWORD, LPCPINFOEXW); - int GetCurrencyFormatA(LCID, DWORD, LPCSTR, CPtr!(CURRENCYFMTA), LPSTR, int); - int GetCurrencyFormatW(LCID, DWORD, LPCWSTR, CPtr!(CURRENCYFMTW), LPWSTR, - int); - int GetDateFormatA(LCID, DWORD, CPtr!(SYSTEMTIME), LPCSTR, LPSTR, int); - int GetDateFormatW(LCID, DWORD, CPtr!(SYSTEMTIME), LPCWSTR, LPWSTR, int); - int GetGeoInfoA(GEOID, GEOTYPE, LPSTR, int, LANGID); - int GetGeoInfoW(GEOID, GEOTYPE, LPWSTR, int, LANGID); - int GetLocaleInfoA(LCID, LCTYPE, LPSTR, int); - int GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int); - BOOL GetNLSVersion(NLS_FUNCTION, LCID, LPNLSVERSIONINFO); - int GetNumberFormatA(LCID, DWORD, LPCSTR, CPtr!(NUMBERFMTA), LPSTR, int); - int GetNumberFormatW(LCID, DWORD, LPCWSTR, CPtr!(NUMBERFMTW), LPWSTR, int); - UINT GetOEMCP(); - BOOL GetStringTypeA(LCID, DWORD, LPCSTR, int, LPWORD); - BOOL GetStringTypeW(DWORD, LPCWSTR, int, LPWORD); - BOOL GetStringTypeExA(LCID, DWORD, LPCSTR, int, LPWORD); - BOOL GetStringTypeExW(LCID, DWORD, LPCWSTR, int, LPWORD); - LANGID GetSystemDefaultLangID(); - LCID GetSystemDefaultLCID(); - LCID GetThreadLocale(); - int GetTimeFormatA(LCID, DWORD, CPtr!(SYSTEMTIME), LPCSTR, LPSTR, int); - int GetTimeFormatW(LCID, DWORD, CPtr!(SYSTEMTIME), LPCWSTR, LPWSTR, int); - LANGID GetUserDefaultLangID(); - LCID GetUserDefaultLCID(); - GEOID GetUserGeoID(GEOCLASS); - BOOL IsDBCSLeadByte(BYTE); - BOOL IsDBCSLeadByteEx(UINT, BYTE); - BOOL IsNLSDefinedString(NLS_FUNCTION, DWORD, LPNLSVERSIONINFO, LPCWSTR, - int); - BOOL IsValidCodePage(UINT); - BOOL IsValidLocale(LCID, DWORD); - int LCMapStringA(LCID, DWORD, LPCSTR, int, LPSTR, int); - int LCMapStringW(LCID, DWORD, LPCWSTR, int, LPWSTR, int); - int MultiByteToWideChar(UINT, DWORD, LPCSTR, int, LPWSTR, int); - int SetCalendarInfoA(LCID, CALID, CALTYPE, LPCSTR); - int SetCalendarInfoW(LCID, CALID, CALTYPE, LPCWSTR); - BOOL SetLocaleInfoA(LCID, LCTYPE, LPCSTR); - BOOL SetLocaleInfoW(LCID, LCTYPE, LPCWSTR); - BOOL SetThreadLocale(LCID); - BOOL SetUserGeoID(GEOID); - int WideCharToMultiByte(UINT, DWORD, LPCWSTR, int, LPSTR, int, LPCSTR, - LPBOOL); - - static if (WINVER >= 0x410) { - BOOL EnumCalendarInfoExA(CALINFO_ENUMPROCEXA, LCID, CALID, CALTYPE); - BOOL EnumCalendarInfoExW(CALINFO_ENUMPROCEXW, LCID, CALID, CALTYPE); - BOOL EnumDateFormatsExA(DATEFMT_ENUMPROCEXA, LCID, DWORD); - BOOL EnumDateFormatsExW(DATEFMT_ENUMPROCEXW, LCID, DWORD); - BOOL IsValidLanguageGroup(LGRPID, DWORD); - } - - static if (WINVER >= 0x500) { - LANGID GetSystemDefaultUILanguage(); - LANGID GetUserDefaultUILanguage(); - - static if (_WIN32_WINNT_ONLY) { - BOOL EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA, DWORD, - LONG_PTR); - BOOL EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW, DWORD, - LONG_PTR); - BOOL EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA, LGRPID, - DWORD, LONG_PTR); - BOOL EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW, LGRPID, - DWORD, LONG_PTR); - BOOL EnumUILanguagesA(UILANGUAGE_ENUMPROCA, DWORD, LONG_PTR); - BOOL EnumUILanguagesW(UILANGUAGE_ENUMPROCW, DWORD, LONG_PTR); - } - } -} - -version (Unicode) { - alias CALINFO_ENUMPROCW CALINFO_ENUMPROC; - alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX; - alias LOCALE_ENUMPROCW LOCALE_ENUMPROC; - alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC; - alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC; - alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX; - alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC; - alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC; - alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC; - alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC; - alias CPINFOEXW CPINFOEX; - alias LPCPINFOEXW LPCPINFOEX; - alias CURRENCYFMTW CURRENCYFMT; - alias LPCURRENCYFMTW LPCURRENCYFMT; - alias NUMBERFMTW NUMBERFMT; - alias LPNUMBERFMTW LPNUMBERFMT; - alias CompareStringW CompareString; - alias EnumCalendarInfoW EnumCalendarInfo; - alias EnumSystemCodePagesW EnumSystemCodePages; - alias EnumSystemLocalesW EnumSystemLocales; - alias EnumTimeFormatsW EnumTimeFormats; - alias FoldStringW FoldString; - alias GetCalendarInfoW GetCalendarInfo; - alias GetCPInfoExW GetCPInfoEx; - alias GetCurrencyFormatW GetCurrencyFormat; - alias GetDateFormatW GetDateFormat; - alias GetGeoInfoW GetGeoInfo; - alias GetLocaleInfoW GetLocaleInfo; - alias GetNumberFormatW GetNumberFormat; - alias GetStringTypeExW GetStringTypeEx; - alias GetTimeFormatW GetTimeFormat; - alias LCMapStringW LCMapString; - alias SetCalendarInfoW SetCalendarInfo; - alias SetLocaleInfoW SetLocaleInfo; - - static if (WINVER >= 0x410) { - alias EnumCalendarInfoExW EnumCalendarInfoEx; - alias EnumDateFormatsExW EnumDateFormatsEx; - } - - static if (_WIN32_WINNT_ONLY && WINVER >= 0x500) { - alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups; - alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales; - alias EnumUILanguagesW EnumUILanguages; - } - -} else { - alias CALINFO_ENUMPROCA CALINFO_ENUMPROC; - alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX; - alias LOCALE_ENUMPROCA LOCALE_ENUMPROC; - alias CODEPAGE_ENUMPROCA CODEPAGE_ENUMPROC; - alias DATEFMT_ENUMPROCA DATEFMT_ENUMPROC; - alias DATEFMT_ENUMPROCEXA DATEFMT_ENUMPROCEX; - alias TIMEFMT_ENUMPROCA TIMEFMT_ENUMPROC; - alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC; - alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC; - alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC; - alias CPINFOEXA CPINFOEX; - alias LPCPINFOEXA LPCPINFOEX; - alias CURRENCYFMTA CURRENCYFMT; - alias LPCURRENCYFMTA LPCURRENCYFMT; - alias NUMBERFMTA NUMBERFMT; - alias LPNUMBERFMTA LPNUMBERFMT; - alias CompareStringA CompareString; - alias EnumCalendarInfoA EnumCalendarInfo; - alias EnumSystemCodePagesA EnumSystemCodePages; - alias EnumSystemLocalesA EnumSystemLocales; - alias EnumTimeFormatsA EnumTimeFormats; - alias FoldStringA FoldString; - alias GetCalendarInfoA GetCalendarInfo; - alias GetCPInfoExA GetCPInfoEx; - alias GetCurrencyFormatA GetCurrencyFormat; - alias GetDateFormatA GetDateFormat; - alias GetGeoInfoA GetGeoInfo; - alias GetLocaleInfoA GetLocaleInfo; - alias GetNumberFormatA GetNumberFormat; - alias GetStringTypeExA GetStringTypeEx; - alias GetTimeFormatA GetTimeFormat; - alias LCMapStringA LCMapString; - alias SetCalendarInfoA SetCalendarInfo; - alias SetLocaleInfoA SetLocaleInfo; - - static if (WINVER >= 0x410) { - alias EnumCalendarInfoExA EnumCalendarInfoEx; - alias EnumDateFormatsExA EnumDateFormatsEx; - } - - static if (_WIN32_WINNT_ONLY && WINVER >= 0x500) { - alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups; - alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales; - alias EnumUILanguagesA EnumUILanguages; - } -} +/***********************************************************************\ +* winnls.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winnls; +pragma(lib, "kernel32"); + +private import win32.basetsd, win32.w32api, win32.winbase, win32.windef; + +alias DWORD LCTYPE, CALTYPE, CALID, LGRPID, GEOID, GEOTYPE, GEOCLASS; + +const size_t + MAX_DEFAULTCHAR = 2, + MAX_LEADBYTES = 12; + +const LCTYPE + LOCALE_USE_CP_ACP = 0x40000000, + LOCALE_RETURN_NUMBER = 0x20000000; + +enum : LCTYPE { + LOCALE_ILANGUAGE = 1, + LOCALE_SLANGUAGE, + LOCALE_SABBREVLANGNAME, + LOCALE_SNATIVELANGNAME, + LOCALE_ICOUNTRY, + LOCALE_SCOUNTRY, + LOCALE_SABBREVCTRYNAME, + LOCALE_SNATIVECTRYNAME, + LOCALE_IDEFAULTLANGUAGE, + LOCALE_IDEFAULTCOUNTRY, + LOCALE_IDEFAULTCODEPAGE, + LOCALE_SLIST, + LOCALE_IMEASURE, + LOCALE_SDECIMAL, + LOCALE_STHOUSAND, + LOCALE_SGROUPING, + LOCALE_IDIGITS, + LOCALE_ILZERO, + LOCALE_SNATIVEDIGITS, + LOCALE_SCURRENCY, + LOCALE_SINTLSYMBOL, + LOCALE_SMONDECIMALSEP, + LOCALE_SMONTHOUSANDSEP, + LOCALE_SMONGROUPING, + LOCALE_ICURRDIGITS, + LOCALE_IINTLCURRDIGITS, + LOCALE_ICURRENCY, + LOCALE_INEGCURR, + LOCALE_SDATE, + LOCALE_STIME, + LOCALE_SSHORTDATE, + LOCALE_SLONGDATE, + LOCALE_IDATE, + LOCALE_ILDATE, + LOCALE_ITIME, + LOCALE_ICENTURY, + LOCALE_ITLZERO, + LOCALE_IDAYLZERO, + LOCALE_IMONLZERO, + LOCALE_S1159, + LOCALE_S2359, + LOCALE_SDAYNAME1, + LOCALE_SDAYNAME2, + LOCALE_SDAYNAME3, + LOCALE_SDAYNAME4, + LOCALE_SDAYNAME5, + LOCALE_SDAYNAME6, + LOCALE_SDAYNAME7, + LOCALE_SABBREVDAYNAME1, + LOCALE_SABBREVDAYNAME2, + LOCALE_SABBREVDAYNAME3, + LOCALE_SABBREVDAYNAME4, + LOCALE_SABBREVDAYNAME5, + LOCALE_SABBREVDAYNAME6, + LOCALE_SABBREVDAYNAME7, + LOCALE_SMONTHNAME1, + LOCALE_SMONTHNAME2, + LOCALE_SMONTHNAME3, + LOCALE_SMONTHNAME4, + LOCALE_SMONTHNAME5, + LOCALE_SMONTHNAME6, + LOCALE_SMONTHNAME7, + LOCALE_SMONTHNAME8, + LOCALE_SMONTHNAME9, + LOCALE_SMONTHNAME10, + LOCALE_SMONTHNAME11, + LOCALE_SMONTHNAME12, + LOCALE_SABBREVMONTHNAME1, + LOCALE_SABBREVMONTHNAME2, + LOCALE_SABBREVMONTHNAME3, + LOCALE_SABBREVMONTHNAME4, + LOCALE_SABBREVMONTHNAME5, + LOCALE_SABBREVMONTHNAME6, + LOCALE_SABBREVMONTHNAME7, + LOCALE_SABBREVMONTHNAME8, + LOCALE_SABBREVMONTHNAME9, + LOCALE_SABBREVMONTHNAME10, + LOCALE_SABBREVMONTHNAME11, + LOCALE_SABBREVMONTHNAME12, + LOCALE_SPOSITIVESIGN, + LOCALE_SNEGATIVESIGN, + LOCALE_IPOSSIGNPOSN, + LOCALE_INEGSIGNPOSN, + LOCALE_IPOSSYMPRECEDES, + LOCALE_IPOSSEPBYSPACE, + LOCALE_INEGSYMPRECEDES, + LOCALE_INEGSEPBYSPACE, + LOCALE_FONTSIGNATURE, + LOCALE_SISO639LANGNAME, + LOCALE_SISO3166CTRYNAME, // = 90 + LOCALE_SENGLANGUAGE = 0x1001, + LOCALE_SENGCOUNTRY = 0x1002, + LOCALE_IDEFAULTANSICODEPAGE = 0x1004, + LOCALE_INEGNUMBER = 0x1010, + LOCALE_STIMEFORMAT = 0x1003, + LOCALE_ITIMEMARKPOSN = 0x1005, + LOCALE_ICALENDARTYPE = 0x1009, + LOCALE_IOPTIONALCALENDAR = 0x100B, + LOCALE_IFIRSTDAYOFWEEK = 0x100C, + LOCALE_IFIRSTWEEKOFYEAR = 0x100D, + LOCALE_SMONTHNAME13 = 0x100E, + LOCALE_SABBREVMONTHNAME13 = 0x100F +} + +enum : LCID { + LOCALE_USER_DEFAULT = 0x400, + LOCALE_SYSTEM_DEFAULT = 0x800 +} + +const DWORD + NORM_IGNORECASE = 1, + NORM_IGNORENONSPACE = 2, + NORM_IGNORESYMBOLS = 4, + SORT_STRINGSORT = 0x01000, + NORM_IGNOREKANATYPE = 0x10000, + NORM_IGNOREWIDTH = 0x20000; + +const DWORD + LCMAP_LOWERCASE = 0x00000100, + LCMAP_UPPERCASE = 0x00000200, + LCMAP_SORTKEY = 0x00000400, + LCMAP_BYTEREV = 0x00000800, + LCMAP_HIRAGANA = 0x00100000, + LCMAP_KATAKANA = 0x00200000, + LCMAP_HALFWIDTH = 0x00400000, + LCMAP_FULLWIDTH = 0x00800000, + LCMAP_LINGUISTIC_CASING = 0x01000000, + LCMAP_SIMPLIFIED_CHINESE = 0x02000000, + LCMAP_TRADITIONAL_CHINESE = 0x04000000; + +const CALID ENUM_ALL_CALENDARS = -1; + +const DWORD + DATE_SHORTDATE = 1, + DATE_LONGDATE = 2, + DATE_USE_ALT_CALENDAR = 4, + LOCALE_NOUSEROVERRIDE = 0x80000000; + +enum : DWORD { + CP_INSTALLED = 1, + CP_SUPPORTED +} + +enum : DWORD { + LCID_INSTALLED = 1, + LCID_SUPPORTED = 2, + LCID_ALTERNATE_SORTS = 4 +} + +const DWORD + MAP_FOLDCZONE = 16, + MAP_PRECOMPOSED = 32, + MAP_COMPOSITE = 64, + MAP_FOLDDIGITS = 128; + +enum : UINT { + CP_ACP, + CP_OEMCP, + CP_MACCP, + CP_THREAD_ACP, // = 3 + CP_SYMBOL = 42, + CP_UTF7 = 65000, + CP_UTF8 = 65001 +} + +enum : DWORD { + CT_CTYPE1 = 1, + CT_CTYPE2 = 2, + CT_CTYPE3 = 4 +} + +const WORD + 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; + +enum : WORD { + C2_NOTAPPLICABLE, + C2_LEFTTORIGHT, + C2_RIGHTTOLEFT, + C2_EUROPENUMBER, + C2_EUROPESEPARATOR, + C2_EUROPETERMINATOR, + C2_ARABICNUMBER, + C2_COMMONSEPARATOR, + C2_BLOCKSEPARATOR, + C2_SEGMENTSEPARATOR, + C2_WHITESPACE, + C2_OTHERNEUTRAL // = 11 +} + +const WORD + C3_NOTAPPLICABLE = 0, + C3_NONSPACING = 1, + C3_DIACRITIC = 2, + C3_VOWELMARK = 4, + C3_SYMBOL = 8, + C3_KATAKANA = 0x0010, + C3_HIRAGANA = 0x0020, + C3_HALFWIDTH = 0x0040, + C3_FULLWIDTH = 0x0080, + C3_IDEOGRAPH = 0x0100, + C3_KASHIDA = 0x0200, + C3_LEXICAL = 0x0400, + C3_ALPHA = 0x8000; + +const DWORD + TIME_NOMINUTESORSECONDS = 1, + TIME_NOSECONDS = 2, + TIME_NOTIMEMARKER = 4, + TIME_FORCE24HOURFORMAT = 8; + +const DWORD + MB_PRECOMPOSED = 1, + MB_COMPOSITE = 2, + MB_USEGLYPHCHARS = 4, + MB_ERR_INVALID_CHARS = 8; + +const DWORD + WC_DISCARDNS = 16, + WC_SEPCHARS = 32, + WC_DEFAULTCHAR = 64, + WC_COMPOSITECHECK = 512; + +enum : LONG { + CTRY_DEFAULT = 0, + CTRY_DOMINICAN_REPUBLIC = 1, + CTRY_PUERTO_RICO = 1, + CTRY_CARIBBEAN = 1, + CTRY_JAMAICA = 1, + CTRY_UNITED_STATES = 1, + CTRY_TRINIDAD_Y_TOBAGO = 1, + CTRY_CANADA = 2, + CTRY_RUSSIA = 7, + CTRY_UZBEKISTAN = 7, + CTRY_KAZAKSTAN = 7, + CTRY_TATARSTAN = 7, + CTRY_EGYPT = 20, + CTRY_SOUTH_AFRICA = 27, + CTRY_GREECE = 30, + CTRY_NETHERLANDS = 31, + CTRY_BELGIUM = 32, + CTRY_FRANCE = 33, + CTRY_MONACO = 33, + CTRY_SPAIN = 34, + CTRY_HUNGARY = 36, + CTRY_ITALY = 39, + CTRY_ROMANIA = 40, + CTRY_SWITZERLAND = 41, + CTRY_LIECHTENSTEIN = 41, + CTRY_AUSTRIA = 43, + CTRY_UNITED_KINGDOM = 44, + CTRY_DENMARK = 45, + CTRY_SWEDEN = 46, + CTRY_NORWAY = 47, + CTRY_POLAND = 48, + CTRY_GERMANY = 49, + CTRY_PERU = 51, + CTRY_MEXICO = 52, + CTRY_ARGENTINA = 54, + CTRY_BRAZIL = 55, + CTRY_CHILE = 56, + CTRY_COLOMBIA = 57, + CTRY_VENEZUELA = 58, + CTRY_MALAYSIA = 60, + CTRY_AUSTRALIA = 61, + CTRY_INDONESIA = 62, + CTRY_PHILIPPINES = 63, + CTRY_NEW_ZEALAND = 64, + CTRY_SINGAPORE = 65, + CTRY_THAILAND = 66, + CTRY_JAPAN = 81, + CTRY_SOUTH_KOREA = 82, + CTRY_VIET_NAM = 84, + CTRY_PRCHINA = 86, + CTRY_TURKEY = 90, + CTRY_INDIA = 91, + CTRY_PAKISTAN = 92, + CTRY_MOROCCO = 212, + CTRY_ALGERIA = 213, + CTRY_TUNISIA = 216, + CTRY_LIBYA = 218, + CTRY_KENYA = 254, + CTRY_ZIMBABWE = 263, + CTRY_FAEROE_ISLANDS = 298, + CTRY_PORTUGAL = 351, + CTRY_LUXEMBOURG = 352, + CTRY_IRELAND = 353, + CTRY_ICELAND = 354, + CTRY_ALBANIA = 355, + CTRY_FINLAND = 358, + CTRY_BULGARIA = 359, + CTRY_LITHUANIA = 370, + CTRY_LATVIA = 371, + CTRY_ESTONIA = 372, + CTRY_ARMENIA = 374, + CTRY_BELARUS = 375, + CTRY_UKRAINE = 380, + CTRY_SERBIA = 381, + CTRY_CROATIA = 385, + CTRY_SLOVENIA = 386, + CTRY_MACEDONIA = 389, + CTRY_CZECH = 420, + CTRY_SLOVAK = 421, + CTRY_BELIZE = 501, + CTRY_GUATEMALA = 502, + CTRY_EL_SALVADOR = 503, + CTRY_HONDURAS = 504, + CTRY_NICARAGUA = 505, + CTRY_COSTA_RICA = 506, + CTRY_PANAMA = 507, + CTRY_BOLIVIA = 591, + CTRY_ECUADOR = 593, + CTRY_PARAGUAY = 595, + CTRY_URUGUAY = 598, + CTRY_BRUNEI_DARUSSALAM = 673, + CTRY_HONG_KONG = 852, + CTRY_MACAU = 853, + CTRY_TAIWAN = 886, + CTRY_MALDIVES = 960, + CTRY_LEBANON = 961, + CTRY_JORDAN = 962, + CTRY_SYRIA = 963, + CTRY_IRAQ = 964, + CTRY_KUWAIT = 965, + CTRY_SAUDI_ARABIA = 966, + CTRY_YEMEN = 967, + CTRY_OMAN = 968, + CTRY_UAE = 971, + CTRY_ISRAEL = 972, + CTRY_BAHRAIN = 973, + CTRY_QATAR = 974, + CTRY_MONGOLIA = 976, + CTRY_IRAN = 981, + CTRY_AZERBAIJAN = 994, + CTRY_GEORGIA = 995, + CTRY_KYRGYZSTAN = 996 +} + +enum : CALTYPE { + CAL_ICALINTVALUE = 1, + CAL_SCALNAME, + CAL_IYEAROFFSETRANGE, + CAL_SERASTRING, + CAL_SSHORTDATE, + CAL_SLONGDATE, + CAL_SDAYNAME1, + CAL_SDAYNAME2, + CAL_SDAYNAME3, + CAL_SDAYNAME4, + CAL_SDAYNAME5, + CAL_SDAYNAME6, + CAL_SDAYNAME7, + CAL_SABBREVDAYNAME1, + CAL_SABBREVDAYNAME2, + CAL_SABBREVDAYNAME3, + CAL_SABBREVDAYNAME4, + CAL_SABBREVDAYNAME5, + CAL_SABBREVDAYNAME6, + CAL_SABBREVDAYNAME7, + CAL_SMONTHNAME1, + CAL_SMONTHNAME2, + CAL_SMONTHNAME3, + CAL_SMONTHNAME4, + CAL_SMONTHNAME5, + CAL_SMONTHNAME6, + CAL_SMONTHNAME7, + CAL_SMONTHNAME8, + CAL_SMONTHNAME9, + CAL_SMONTHNAME10, + CAL_SMONTHNAME11, + CAL_SMONTHNAME12, + CAL_SMONTHNAME13, + CAL_SABBREVMONTHNAME1, + CAL_SABBREVMONTHNAME2, + CAL_SABBREVMONTHNAME3, + CAL_SABBREVMONTHNAME4, + CAL_SABBREVMONTHNAME5, + CAL_SABBREVMONTHNAME6, + CAL_SABBREVMONTHNAME7, + CAL_SABBREVMONTHNAME8, + CAL_SABBREVMONTHNAME9, + CAL_SABBREVMONTHNAME10, + CAL_SABBREVMONTHNAME11, + CAL_SABBREVMONTHNAME12, + CAL_SABBREVMONTHNAME13 // = 46 +} + + +enum : CALTYPE { + CAL_GREGORIAN = 1, + CAL_GREGORIAN_US, + CAL_JAPAN, + CAL_TAIWAN, + CAL_KOREA, + CAL_HIJRI, + CAL_THAI, + CAL_HEBREW, + CAL_GREGORIAN_ME_FRENCH, + CAL_GREGORIAN_ARABIC, + CAL_GREGORIAN_XLIT_ENGLISH, + CAL_GREGORIAN_XLIT_FRENCH // = 12 +} + +enum : int { + CSTR_LESS_THAN = 1, + CSTR_EQUAL, + CSTR_GREATER_THAN +} + +enum : DWORD { + LGRPID_INSTALLED = 1, + LGRPID_SUPPORTED +} + +enum : LGRPID { + LGRPID_WESTERN_EUROPE = 1, + LGRPID_CENTRAL_EUROPE, + LGRPID_BALTIC, + LGRPID_GREEK, + LGRPID_CYRILLIC, + LGRPID_TURKISH, + LGRPID_JAPANESE, + LGRPID_KOREAN, + LGRPID_TRADITIONAL_CHINESE, + LGRPID_SIMPLIFIED_CHINESE, + LGRPID_THAI, + LGRPID_HEBREW, + LGRPID_ARABIC, + LGRPID_VIETNAMESE, + LGRPID_INDIC, + LGRPID_GEORGIAN, + LGRPID_ARMENIAN // = 17 +} + +static if (_WIN32_WINNT >= 0x500) { + enum : LCTYPE { + LOCALE_SYEARMONTH = 0x1006, + LOCALE_SENGCURRNAME = 0x1007, + LOCALE_SNATIVECURRNAME = 0x1008, + LOCALE_IDEFAULTEBCDICCODEPAGE = 0x1012, + LOCALE_SSORTNAME = 0x1013, + LOCALE_IDIGITSUBSTITUTION = 0x1014, + LOCALE_IPAPERSIZE = 0x100A + } + + const DWORD + DATE_YEARMONTH = 8, + DATE_LTRREADING = 16, + DATE_RTLREADING = 32; + + const DWORD MAP_EXPAND_LIGATURES = 0x2000; + const DWORD WC_NO_BEST_FIT_CHARS = 1024; + + enum : CALTYPE { + CAL_SYEARMONTH = 47, + CAL_ITWODIGITYEARMAX = 48, + CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE, + CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER, + CAL_USE_CP_ACP = LOCALE_USE_CP_ACP + } +} // (_WIN32_WINNT >= 0x500) + +extern (Windows) { + alias BOOL function(LPSTR) CALINFO_ENUMPROCA; + alias BOOL function(LPWSTR) CALINFO_ENUMPROCW; + alias BOOL function(LPSTR, CALID) CALINFO_ENUMPROCEXA; + alias BOOL function(LPWSTR, CALID) CALINFO_ENUMPROCEXW; + alias BOOL function(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR) + LANGUAGEGROUP_ENUMPROCA; + alias BOOL function(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR) + LANGUAGEGROUP_ENUMPROCW; + alias BOOL function(LGRPID, LCID, LPSTR, LONG_PTR) + LANGGROUPLOCALE_ENUMPROCA; + alias BOOL function(LGRPID, LCID, LPWSTR, LONG_PTR) + LANGGROUPLOCALE_ENUMPROCW; + alias BOOL function(LPWSTR, LONG_PTR) UILANGUAGE_ENUMPROCW; + alias BOOL function(LPSTR, LONG_PTR) UILANGUAGE_ENUMPROCA; + alias BOOL function(LPSTR) LOCALE_ENUMPROCA; + alias BOOL function(LPWSTR) LOCALE_ENUMPROCW; + alias BOOL function(LPSTR) CODEPAGE_ENUMPROCA; + alias BOOL function(LPWSTR) CODEPAGE_ENUMPROCW; + alias BOOL function(LPSTR) DATEFMT_ENUMPROCA; + alias BOOL function(LPWSTR) DATEFMT_ENUMPROCW; + alias BOOL function(LPSTR, CALID) DATEFMT_ENUMPROCEXA; + alias BOOL function(LPWSTR, CALID) DATEFMT_ENUMPROCEXW; + alias BOOL function(LPSTR) TIMEFMT_ENUMPROCA; + alias BOOL function(LPWSTR) TIMEFMT_ENUMPROCW; + alias BOOL function(GEOID) GEO_ENUMPROC; +} + +enum NLS_FUNCTION { + COMPARE_STRING = 0x0001 +} + +enum SYSGEOCLASS { + GEOCLASS_NATION = 16, + GEOCLASS_REGION = 14 +} + +enum SYSGEOTYPE { + GEO_NATION = 0x0001, + GEO_LATITUDE = 0x0002, + GEO_LONGITUDE = 0x0003, + GEO_ISO2 = 0x0004, + GEO_ISO3 = 0x0005, + GEO_RFC1766 = 0x0006, + GEO_LCID = 0x0007, + GEO_FRIENDLYNAME = 0x0008, + GEO_OFFICIALNAME = 0x0009, + GEO_TIMEZONES = 0x000a, + GEO_OFFICIALLANGUAGES = 0x000a +} + +struct CPINFO { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; +} +alias CPINFO* LPCPINFO; + +struct CPINFOEXA { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; + WCHAR UnicodeDefaultChar; + UINT CodePage; + CHAR[MAX_PATH] CodePageName; +} +alias CPINFOEXA* LPCPINFOEXA; + +struct CPINFOEXW { + UINT MaxCharSize; + BYTE[MAX_DEFAULTCHAR] DefaultChar; + BYTE[MAX_LEADBYTES] LeadByte; + WCHAR UnicodeDefaultChar; + UINT CodePage; + WCHAR[MAX_PATH] CodePageName; +} +alias CPINFOEXW* LPCPINFOEXW; + +struct CURRENCYFMTA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPSTR lpCurrencySymbol; +} +alias CURRENCYFMTA* LPCURRENCYFMTA; + +struct CURRENCYFMTW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPWSTR lpCurrencySymbol; +} +alias CURRENCYFMTW* LPCURRENCYFMTW; + +struct NLSVERSIONINFO { + DWORD dwNLSVersionInfoSize; + DWORD dwNLSVersion; + DWORD dwDefinedVersion; +} +alias NLSVERSIONINFO* LPNLSVERSIONINFO; + +struct NUMBERFMTA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; +} +alias NUMBERFMTA* LPNUMBERFMTA; + +struct NUMBERFMTW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; +} +alias NUMBERFMTW* LPNUMBERFMTW; + +extern (Windows) { + int CompareStringA(LCID, DWORD, LPCSTR, int, LPCSTR, int); + int CompareStringW(LCID, DWORD, LPCWSTR, int, LPCWSTR, int); + LCID ConvertDefaultLocale(LCID); + BOOL EnumCalendarInfoA(CALINFO_ENUMPROCA, LCID, CALID, CALTYPE); + BOOL EnumCalendarInfoW(CALINFO_ENUMPROCW, LCID, CALID, CALTYPE); + BOOL EnumDateFormatsA(DATEFMT_ENUMPROCA, LCID, DWORD); + BOOL EnumDateFormatsW(DATEFMT_ENUMPROCW, LCID, DWORD); + BOOL EnumSystemCodePagesA(CODEPAGE_ENUMPROCA, DWORD); + BOOL EnumSystemCodePagesW(CODEPAGE_ENUMPROCW, DWORD); + BOOL EnumSystemGeoID(GEOCLASS, GEOID, GEO_ENUMPROC); + BOOL EnumSystemLocalesA(LOCALE_ENUMPROCA, DWORD); + BOOL EnumSystemLocalesW(LOCALE_ENUMPROCW, DWORD); + BOOL EnumTimeFormatsA(TIMEFMT_ENUMPROCA, LCID, DWORD); + BOOL EnumTimeFormatsW(TIMEFMT_ENUMPROCW, LCID, DWORD); + int FoldStringA(DWORD, LPCSTR, int, LPSTR, int); + int FoldStringW(DWORD, LPCWSTR, int, LPWSTR, int); + UINT GetACP(); + int GetCalendarInfoA(LCID, CALID, CALTYPE, LPSTR, int, LPDWORD); + int GetCalendarInfoW(LCID, CALID, CALTYPE, LPWSTR, int, LPDWORD); + BOOL GetCPInfo(UINT, LPCPINFO); + BOOL GetCPInfoExA(UINT, DWORD, LPCPINFOEXA); + BOOL GetCPInfoExW(UINT, DWORD, LPCPINFOEXW); + int GetCurrencyFormatA(LCID, DWORD, LPCSTR, const(CURRENCYFMTA)*, LPSTR, int); + int GetCurrencyFormatW(LCID, DWORD, LPCWSTR, const(CURRENCYFMTW)*, LPWSTR, + int); + int GetDateFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); + int GetDateFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); + int GetGeoInfoA(GEOID, GEOTYPE, LPSTR, int, LANGID); + int GetGeoInfoW(GEOID, GEOTYPE, LPWSTR, int, LANGID); + int GetLocaleInfoA(LCID, LCTYPE, LPSTR, int); + int GetLocaleInfoW(LCID, LCTYPE, LPWSTR, int); + BOOL GetNLSVersion(NLS_FUNCTION, LCID, LPNLSVERSIONINFO); + int GetNumberFormatA(LCID, DWORD, LPCSTR, const(NUMBERFMTA)*, LPSTR, int); + int GetNumberFormatW(LCID, DWORD, LPCWSTR, const(NUMBERFMTW)*, LPWSTR, int); + UINT GetOEMCP(); + BOOL GetStringTypeA(LCID, DWORD, LPCSTR, int, LPWORD); + BOOL GetStringTypeW(DWORD, LPCWSTR, int, LPWORD); + BOOL GetStringTypeExA(LCID, DWORD, LPCSTR, int, LPWORD); + BOOL GetStringTypeExW(LCID, DWORD, LPCWSTR, int, LPWORD); + LANGID GetSystemDefaultLangID(); + LCID GetSystemDefaultLCID(); + LCID GetThreadLocale(); + int GetTimeFormatA(LCID, DWORD, const(SYSTEMTIME)*, LPCSTR, LPSTR, int); + int GetTimeFormatW(LCID, DWORD, const(SYSTEMTIME)*, LPCWSTR, LPWSTR, int); + LANGID GetUserDefaultLangID(); + LCID GetUserDefaultLCID(); + GEOID GetUserGeoID(GEOCLASS); + BOOL IsDBCSLeadByte(BYTE); + BOOL IsDBCSLeadByteEx(UINT, BYTE); + BOOL IsNLSDefinedString(NLS_FUNCTION, DWORD, LPNLSVERSIONINFO, LPCWSTR, + int); + BOOL IsValidCodePage(UINT); + BOOL IsValidLocale(LCID, DWORD); + int LCMapStringA(LCID, DWORD, LPCSTR, int, LPSTR, int); + int LCMapStringW(LCID, DWORD, LPCWSTR, int, LPWSTR, int); + int MultiByteToWideChar(UINT, DWORD, LPCSTR, int, LPWSTR, int); + int SetCalendarInfoA(LCID, CALID, CALTYPE, LPCSTR); + int SetCalendarInfoW(LCID, CALID, CALTYPE, LPCWSTR); + BOOL SetLocaleInfoA(LCID, LCTYPE, LPCSTR); + BOOL SetLocaleInfoW(LCID, LCTYPE, LPCWSTR); + BOOL SetThreadLocale(LCID); + BOOL SetUserGeoID(GEOID); + int WideCharToMultiByte(UINT, DWORD, LPCWSTR, int, LPSTR, int, LPCSTR, + LPBOOL); + + static if (_WIN32_WINNT >= 0x410) { + BOOL EnumCalendarInfoExA(CALINFO_ENUMPROCEXA, LCID, CALID, CALTYPE); + BOOL EnumCalendarInfoExW(CALINFO_ENUMPROCEXW, LCID, CALID, CALTYPE); + BOOL EnumDateFormatsExA(DATEFMT_ENUMPROCEXA, LCID, DWORD); + BOOL EnumDateFormatsExW(DATEFMT_ENUMPROCEXW, LCID, DWORD); + BOOL IsValidLanguageGroup(LGRPID, DWORD); + } + + static if (_WIN32_WINNT >= 0x500) { + LANGID GetSystemDefaultUILanguage(); + LANGID GetUserDefaultUILanguage(); + + BOOL EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA, DWORD, + LONG_PTR); + BOOL EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW, DWORD, + LONG_PTR); + BOOL EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA, LGRPID, + DWORD, LONG_PTR); + BOOL EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW, LGRPID, + DWORD, LONG_PTR); + BOOL EnumUILanguagesA(UILANGUAGE_ENUMPROCA, DWORD, LONG_PTR); + BOOL EnumUILanguagesW(UILANGUAGE_ENUMPROCW, DWORD, LONG_PTR); + } +} + +version (Unicode) { + alias CALINFO_ENUMPROCW CALINFO_ENUMPROC; + alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX; + alias LOCALE_ENUMPROCW LOCALE_ENUMPROC; + alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC; + alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC; + alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX; + alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC; + alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC; + alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC; + alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC; + alias CPINFOEXW CPINFOEX; + alias LPCPINFOEXW LPCPINFOEX; + alias CURRENCYFMTW CURRENCYFMT; + alias LPCURRENCYFMTW LPCURRENCYFMT; + alias NUMBERFMTW NUMBERFMT; + alias LPNUMBERFMTW LPNUMBERFMT; + alias CompareStringW CompareString; + alias EnumCalendarInfoW EnumCalendarInfo; + alias EnumSystemCodePagesW EnumSystemCodePages; + alias EnumSystemLocalesW EnumSystemLocales; + alias EnumTimeFormatsW EnumTimeFormats; + alias FoldStringW FoldString; + alias GetCalendarInfoW GetCalendarInfo; + alias GetCPInfoExW GetCPInfoEx; + alias GetCurrencyFormatW GetCurrencyFormat; + alias GetDateFormatW GetDateFormat; + alias GetGeoInfoW GetGeoInfo; + alias GetLocaleInfoW GetLocaleInfo; + alias GetNumberFormatW GetNumberFormat; + alias GetStringTypeExW GetStringTypeEx; + alias GetTimeFormatW GetTimeFormat; + alias LCMapStringW LCMapString; + alias SetCalendarInfoW SetCalendarInfo; + alias SetLocaleInfoW SetLocaleInfo; + + static if (_WIN32_WINNT >= 0x410) { + alias EnumCalendarInfoExW EnumCalendarInfoEx; + alias EnumDateFormatsExW EnumDateFormatsEx; + } + + static if (_WIN32_WINNT >= 0x500) { + alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups; + alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales; + alias EnumUILanguagesW EnumUILanguages; + } + +} else { + alias CALINFO_ENUMPROCA CALINFO_ENUMPROC; + alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX; + alias LOCALE_ENUMPROCA LOCALE_ENUMPROC; + alias CODEPAGE_ENUMPROCA CODEPAGE_ENUMPROC; + alias DATEFMT_ENUMPROCA DATEFMT_ENUMPROC; + alias DATEFMT_ENUMPROCEXA DATEFMT_ENUMPROCEX; + alias TIMEFMT_ENUMPROCA TIMEFMT_ENUMPROC; + alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC; + alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC; + alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC; + alias CPINFOEXA CPINFOEX; + alias LPCPINFOEXA LPCPINFOEX; + alias CURRENCYFMTA CURRENCYFMT; + alias LPCURRENCYFMTA LPCURRENCYFMT; + alias NUMBERFMTA NUMBERFMT; + alias LPNUMBERFMTA LPNUMBERFMT; + alias CompareStringA CompareString; + alias EnumCalendarInfoA EnumCalendarInfo; + alias EnumSystemCodePagesA EnumSystemCodePages; + alias EnumSystemLocalesA EnumSystemLocales; + alias EnumTimeFormatsA EnumTimeFormats; + alias FoldStringA FoldString; + alias GetCalendarInfoA GetCalendarInfo; + alias GetCPInfoExA GetCPInfoEx; + alias GetCurrencyFormatA GetCurrencyFormat; + alias GetDateFormatA GetDateFormat; + alias GetGeoInfoA GetGeoInfo; + alias GetLocaleInfoA GetLocaleInfo; + alias GetNumberFormatA GetNumberFormat; + alias GetStringTypeExA GetStringTypeEx; + alias GetTimeFormatA GetTimeFormat; + alias LCMapStringA LCMapString; + alias SetCalendarInfoA SetCalendarInfo; + alias SetLocaleInfoA SetLocaleInfo; + + static if (_WIN32_WINNT >= 0x410) { + alias EnumCalendarInfoExA EnumCalendarInfoEx; + alias EnumDateFormatsExA EnumDateFormatsEx; + } + + static if (_WIN32_WINNT >= 0x500) { + alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups; + alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales; + alias EnumUILanguagesA EnumUILanguages; + } +} Index: src/win32/winnt.d ================================================================== --- src/win32/winnt.d +++ src/win32/winnt.d @@ -1,3980 +1,4103 @@ -/***********************************************************************\ -* winnt.d * -* * -* Windows API header module * -* * -* Translated from MinGW API for MS-Windows 3.12 * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winnt; - -public import win32.basetsd, win32.windef, win32.winerror; -private import win32.w32api; - -/* Translation Notes: -The following macros are unneeded for D: -FIELD_OFFSET(t,f), CONTAINING_RECORD(address, type, field) -*/ - -alias void VOID; -alias char CHAR, CCHAR; -alias wchar WCHAR; -alias bool BOOLEAN; -alias byte FCHAR; -alias ubyte UCHAR; -alias short SHORT; -alias ushort LANGID, FSHORT; -alias uint LCID, FLONG, ACCESS_MASK; -alias long LONGLONG, USN; -alias ulong DWORDLONG, ULONGLONG; - -alias void* PVOID, LPVOID; -alias char* PSZ, PCHAR, PCCHAR, LPCH, PCH, LPSTR, PSTR; -alias wchar* PWCHAR, LPWCH, PWCH, LPWSTR, PWSTR; -alias bool* PBOOLEAN; -alias ubyte* PUCHAR; -alias short* PSHORT; -alias int* PLONG; -alias uint* PLCID, PACCESS_MASK; -alias long* PLONGLONG; -alias ulong* PDWORDLONG, PULONGLONG; - -// FIXME(MinGW) for __WIN64 -alias void* PVOID64; - -// const versions -alias CPtr!(char) LPCCH, PCSTR, LPCSTR; -alias CPtr!(wchar) LPCWCH, PCWCH, LPCWSTR, PCWSTR; - -version (Unicode) { - alias WCHAR TCHAR, _TCHAR; -} else { - alias CHAR TCHAR, _TCHAR; -} - -alias TCHAR TBYTE; -alias TCHAR* PTCH, PTBYTE, LPTCH, PTSTR, LPTSTR, LP, PTCHAR; -alias CPtr!(TCHAR) LPCTSTR; - -const char ANSI_NULL = '\0'; -const wchar UNICODE_NULL = '\0'; - -const APPLICATION_ERROR_MASK = 0x20000000; -const ERROR_SEVERITY_SUCCESS = 0x00000000; -const ERROR_SEVERITY_INFORMATIONAL = 0x40000000; -const ERROR_SEVERITY_WARNING = 0x80000000; -const ERROR_SEVERITY_ERROR = 0xC0000000; - -// MinGW: also in ddk/ntifs.h -enum : USHORT { - COMPRESSION_FORMAT_NONE = 0x0000, - COMPRESSION_FORMAT_DEFAULT = 0x0001, - COMPRESSION_FORMAT_LZNT1 = 0x0002, - COMPRESSION_ENGINE_STANDARD = 0x0000, - COMPRESSION_ENGINE_MAXIMUM = 0x0100, - COMPRESSION_ENGINE_HIBER = 0x0200 -} - -// ACCESS_DENIED_OBJECT_ACE, etc -const DWORD - ACE_OBJECT_TYPE_PRESENT = 0x00000001, - ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; - -// ACE_HEADER.AceType -// also in ddk/ntifs.h -enum : BYTE { - ACCESS_ALLOWED_ACE_TYPE, - ACCESS_DENIED_ACE_TYPE, - SYSTEM_AUDIT_ACE_TYPE, - SYSTEM_ALARM_ACE_TYPE -} - -// ACE_HEADER.AceFlags -const BYTE - OBJECT_INHERIT_ACE = 0x01, - CONTAINER_INHERIT_ACE = 0x02, - NO_PROPAGATE_INHERIT_ACE = 0x04, - INHERIT_ONLY_ACE = 0x08, - INHERITED_ACE = 0x10, - VALID_INHERIT_FLAGS = 0x1F, - SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, - FAILED_ACCESS_ACE_FLAG = 0x80; - -// Access Mask Format -const ACCESS_MASK - DELETE = 0x00010000, - READ_CONTROL = 0x00020000, - WRITE_DAC = 0x00040000, - WRITE_OWNER = 0x00080000, - SYNCHRONIZE = 0x00100000, - ACCESS_SYSTEM_SECURITY = 0x01000000, - MAXIMUM_ALLOWED = 0x02000000, - GENERIC_READ = 0x80000000, - GENERIC_WRITE = 0x40000000, - GENERIC_EXECUTE = 0x20000000, - GENERIC_ALL = 0x10000000, - STANDARD_RIGHTS_REQUIRED = 0x000F0000, - STANDARD_RIGHTS_READ = 0x00020000, - STANDARD_RIGHTS_WRITE = 0x00020000, - STANDARD_RIGHTS_EXECUTE = 0x00020000, - STANDARD_RIGHTS_ALL = 0x001F0000, - SPECIFIC_RIGHTS_ALL = 0x0000FFFF; - - -const DWORD INVALID_FILE_ATTRIBUTES = -1; - -// MinGW: Also in ddk/winddk.h -const DWORD - FILE_LIST_DIRECTORY = 0x00000001, - FILE_READ_DATA = 0x00000001, - FILE_ADD_FILE = 0x00000002, - FILE_WRITE_DATA = 0x00000002, - FILE_ADD_SUBDIRECTORY = 0x00000004, - FILE_APPEND_DATA = 0x00000004, - FILE_CREATE_PIPE_INSTANCE = 0x00000004, - FILE_READ_EA = 0x00000008, - FILE_READ_PROPERTIES = 0x00000008, - FILE_WRITE_EA = 0x00000010, - FILE_WRITE_PROPERTIES = 0x00000010, - FILE_EXECUTE = 0x00000020, - FILE_TRAVERSE = 0x00000020, - FILE_DELETE_CHILD = 0x00000040, - FILE_READ_ATTRIBUTES = 0x00000080, - FILE_WRITE_ATTRIBUTES = 0x00000100; - -const DWORD - FILE_SHARE_READ = 0x00000001, - FILE_SHARE_WRITE = 0x00000002, - FILE_SHARE_DELETE = 0x00000004, - FILE_SHARE_VALID_FLAGS = 0x00000007; - -const DWORD - FILE_ATTRIBUTE_READONLY = 0x00000001, - FILE_ATTRIBUTE_HIDDEN = 0x00000002, - FILE_ATTRIBUTE_SYSTEM = 0x00000004, - FILE_ATTRIBUTE_DIRECTORY = 0x00000010, - FILE_ATTRIBUTE_ARCHIVE = 0x00000020, - FILE_ATTRIBUTE_DEVICE = 0x00000040, - FILE_ATTRIBUTE_NORMAL = 0x00000080, - FILE_ATTRIBUTE_TEMPORARY = 0x00000100, - FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200, - FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400, - FILE_ATTRIBUTE_COMPRESSED = 0x00000800, - FILE_ATTRIBUTE_OFFLINE = 0x00001000, - FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, - FILE_ATTRIBUTE_ENCRYPTED = 0x00004000, - FILE_ATTRIBUTE_VALID_FLAGS = 0x00007fb7, - FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; - -// These are not documented on MSDN -const FILE_COPY_STRUCTURED_STORAGE = 0x00000041; -const FILE_STRUCTURED_STORAGE = 0x00000441; - -// Nor are these -const FILE_VALID_OPTION_FLAGS = 0x00ffffff; -const FILE_VALID_PIPE_OPTION_FLAGS = 0x00000032; -const FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; -const FILE_VALID_SET_FLAGS = 0x00000036; - -const ULONG - FILE_SUPERSEDE = 0x00000000, - FILE_OPEN = 0x00000001, - FILE_CREATE = 0x00000002, - FILE_OPEN_IF = 0x00000003, - FILE_OVERWRITE = 0x00000004, - FILE_OVERWRITE_IF = 0x00000005, - FILE_MAXIMUM_DISPOSITION = 0x00000005; - -const ULONG - FILE_DIRECTORY_FILE = 0x00000001, - FILE_WRITE_THROUGH = 0x00000002, - FILE_SEQUENTIAL_ONLY = 0x00000004, - FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, - FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, - FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, - FILE_NON_DIRECTORY_FILE = 0x00000040, - FILE_CREATE_TREE_CONNECTION = 0x00000080, - FILE_COMPLETE_IF_OPLOCKED = 0x00000100, - FILE_NO_EA_KNOWLEDGE = 0x00000200, - FILE_OPEN_FOR_RECOVERY = 0x00000400, - FILE_RANDOM_ACCESS = 0x00000800, - FILE_DELETE_ON_CLOSE = 0x00001000, - FILE_OPEN_BY_FILE_ID = 0x00002000, - FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, - FILE_NO_COMPRESSION = 0x00008000, - FILE_RESERVE_OPFILTER = 0x00100000, - FILE_OPEN_REPARSE_POINT = 0x00200000, - FILE_OPEN_NO_RECALL = 0x00400000, - FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; - - -const ACCESS_MASK - FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, - FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES - | FILE_EXECUTE | SYNCHRONIZE, - FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA - | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, - FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA - | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA - | SYNCHRONIZE; - -// MinGW: end winddk.h -// MinGW: also in ddk/ntifs.h -const DWORD - FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, - FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, - FILE_NOTIFY_CHANGE_NAME = 0x00000003, - FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, - FILE_NOTIFY_CHANGE_SIZE = 0x00000008, - FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, - FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, - FILE_NOTIFY_CHANGE_CREATION = 0x00000040, - FILE_NOTIFY_CHANGE_EA = 0x00000080, - FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, - FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200, - FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400, - FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, - FILE_NOTIFY_VALID_MASK = 0x00000fff; - -const DWORD - FILE_CASE_SENSITIVE_SEARCH = 0x00000001, - FILE_CASE_PRESERVED_NAMES = 0x00000002, - FILE_UNICODE_ON_DISK = 0x00000004, - FILE_PERSISTENT_ACLS = 0x00000008, - FILE_FILE_COMPRESSION = 0x00000010, - FILE_VOLUME_QUOTAS = 0x00000020, - FILE_SUPPORTS_SPARSE_FILES = 0x00000040, - FILE_SUPPORTS_REPARSE_POINTS = 0x00000080, - FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100, - FS_LFN_APIS = 0x00004000, - FILE_VOLUME_IS_COMPRESSED = 0x00008000, - FILE_SUPPORTS_OBJECT_IDS = 0x00010000, - FILE_SUPPORTS_ENCRYPTION = 0x00020000, - FILE_NAMED_STREAMS = 0x00040000, - FILE_READ_ONLY_VOLUME = 0x00080000, - FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000, - FILE_SUPPORTS_TRANSACTIONS = 0x00200000; - -// These are not documented on MSDN -const ACCESS_MASK - IO_COMPLETION_QUERY_STATE = 1, - IO_COMPLETION_MODIFY_STATE = 2, - IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; -// MinGW: end ntifs.h - -// MinGW: also in ddk/winddk.h -const DWORD - DUPLICATE_CLOSE_SOURCE = 1, - DUPLICATE_SAME_ACCESS = 2, - DUPLICATE_SAME_ATTRIBUTES = 4; -// MinGW: end winddk.k - -const DWORD - MAILSLOT_NO_MESSAGE = -1, - MAILSLOT_WAIT_FOREVER = -1; - -const ACCESS_MASK - PROCESS_TERMINATE = 0x0001, - PROCESS_CREATE_THREAD = 0x0002, - PROCESS_SET_SESSIONID = 0x0004, - PROCESS_VM_OPERATION = 0x0008, - PROCESS_VM_READ = 0x0010, - PROCESS_VM_WRITE = 0x0020, - PROCESS_DUP_HANDLE = 0x0040, - PROCESS_CREATE_PROCESS = 0x0080, - PROCESS_SET_QUOTA = 0x0100, - PROCESS_SET_INFORMATION = 0x0200, - PROCESS_QUERY_INFORMATION = 0x0400, - PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; - -const ACCESS_MASK - THREAD_TERMINATE = 0x0001, - THREAD_SUSPEND_RESUME = 0x0002, - THREAD_GET_CONTEXT = 0x0008, - THREAD_SET_CONTEXT = 0x0010, - THREAD_SET_INFORMATION = 0x0020, - THREAD_QUERY_INFORMATION = 0x0040, - THREAD_SET_THREAD_TOKEN = 0x0080, - THREAD_IMPERSONATE = 0x0100, - THREAD_DIRECT_IMPERSONATION = 0x0200, - THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; - -// These are not documented on MSDN -const THREAD_BASE_PRIORITY_LOWRT = 15; -const THREAD_BASE_PRIORITY_MAX = 2; -const THREAD_BASE_PRIORITY_MIN = -2; -const THREAD_BASE_PRIORITY_IDLE = -15; - -const DWORD EXCEPTION_NONCONTINUABLE = 1; -const size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; - -// These are not documented on MSDN -const ACCESS_MASK - MUTANT_QUERY_STATE = 1, - MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; - -const ACCESS_MASK - TIMER_QUERY_STATE = 1, - TIMER_MODIFY_STATE = 2, - TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE - | TIMER_MODIFY_STATE; - -const SID_IDENTIFIER_AUTHORITY - SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, - SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, - SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, - SECURITY_CREATOR_SID_AUTHORITY = {[5: 3]}, - SECURITY_NON_UNIQUE_AUTHORITY = {[5: 4]}, - SECURITY_NT_AUTHORITY = {[5: 5]}, - SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; - -const DWORD - SECURITY_NULL_RID = 0, - SECURITY_WORLD_RID = 0, - SECURITY_LOCAL_RID = 0, - SECURITY_CREATOR_OWNER_RID = 0, - SECURITY_CREATOR_GROUP_RID = 1, - SECURITY_DIALUP_RID = 1, - SECURITY_NETWORK_RID = 2, - SECURITY_BATCH_RID = 3, - SECURITY_INTERACTIVE_RID = 4, - SECURITY_LOGON_IDS_RID = 5, - SECURITY_SERVICE_RID = 6, - SECURITY_LOCAL_SYSTEM_RID = 18, - SECURITY_BUILTIN_DOMAIN_RID = 32, - SECURITY_PRINCIPAL_SELF_RID = 10, - SECURITY_CREATOR_OWNER_SERVER_RID = 2, - SECURITY_CREATOR_GROUP_SERVER_RID = 3, - SECURITY_LOGON_IDS_RID_COUNT = 3, - SECURITY_ANONYMOUS_LOGON_RID = 7, - SECURITY_PROXY_RID = 8, - SECURITY_ENTERPRISE_CONTROLLERS_RID = 9, - SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID, - SECURITY_AUTHENTICATED_USER_RID = 11, - SECURITY_RESTRICTED_CODE_RID = 12, - SECURITY_NT_NON_UNIQUE_RID = 21, - SID_REVISION = 1; - -enum : DWORD { - DOMAIN_USER_RID_ADMIN = 0x01F4, - DOMAIN_USER_RID_GUEST = 0x01F5, - DOMAIN_GROUP_RID_ADMINS = 0x0200, - DOMAIN_GROUP_RID_USERS = 0x0201, - DOMAIN_ALIAS_RID_ADMINS = 0x0220, - DOMAIN_ALIAS_RID_USERS = 0x0221, - DOMAIN_ALIAS_RID_GUESTS = 0x0222, - DOMAIN_ALIAS_RID_POWER_USERS = 0x0223, - DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x0224, - DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x0225, - DOMAIN_ALIAS_RID_PRINT_OPS = 0x0226, - DOMAIN_ALIAS_RID_BACKUP_OPS = 0x0227, - DOMAIN_ALIAS_RID_REPLICATOR = 0x0228 -} - -enum : WORD { - SECURITY_MANDATORY_UNTRUSTED_RID = 0, - SECURITY_MANDATORY_LOW_RID = 0x1000, - SECURITY_MANDATORY_MEDIUM_RID = 0x2000, - SECURITY_MANDATORY_HIGH_RID = 0x3000, - SECURITY_MANDATORY_SYSTEM_RID = 0x4000, - SECURITY_MANDATORY_PROTECTED_PROCESS_RID = 0x5000, - SECURITY_MANDATORY_MAXIMUM_USER_RID = SECURITY_MANDATORY_SYSTEM_RID -} - -const TCHAR[] - SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege", - SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege", - SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege", - SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege", - SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege", - SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege", - SE_TCB_NAME = "SeTcbPrivilege", - SE_SECURITY_NAME = "SeSecurityPrivilege", - SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege", - SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege", - SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege", - SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege", - SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege", - SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege", - SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege", - SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege", - SE_BACKUP_NAME = "SeBackupPrivilege", - SE_RESTORE_NAME = "SeRestorePrivilege", - SE_SHUTDOWN_NAME = "SeShutdownPrivilege", - SE_DEBUG_NAME = "SeDebugPrivilege", - SE_AUDIT_NAME = "SeAuditPrivilege", - SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege", - SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege", - SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege", - SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege", - SE_UNDOCK_NAME = "SeUndockPrivilege", - SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege", - SE_IMPERSONATE_NAME = "SeImpersonatePrivilege", - SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege", - SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege", - SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege", - SE_RELABEL_NAME = "SeRelabelPrivilege", - SE_INCREASE_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege", - SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", - SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; - -const DWORD - SE_GROUP_MANDATORY = 0x00000001, - SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, - SE_GROUP_ENABLED = 0x00000004, - SE_GROUP_OWNER = 0x00000008, - SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010, - SE_GROUP_INTEGRITY = 0x00000020, - SE_GROUP_INTEGRITY_ENABLED = 0x00000040, - SE_GROUP_RESOURCE = 0x20000000, - SE_GROUP_LOGON_ID = 0xC0000000; - -// Primary language identifiers -enum : USHORT { - LANG_NEUTRAL, - LANG_ARABIC, - LANG_BULGARIAN, - LANG_CATALAN, - LANG_CHINESE, - LANG_CZECH, - LANG_DANISH, - LANG_GERMAN, - LANG_GREEK, - LANG_ENGLISH, - LANG_SPANISH, - LANG_FINNISH, - LANG_FRENCH, - LANG_HEBREW, - LANG_HUNGARIAN, - LANG_ICELANDIC, - LANG_ITALIAN, - LANG_JAPANESE, - LANG_KOREAN, - LANG_DUTCH, - LANG_NORWEGIAN, - LANG_POLISH, - LANG_PORTUGUESE, // = 0x16 - LANG_ROMANIAN = 0x18, - LANG_RUSSIAN, - LANG_CROATIAN, // = 0x1A - LANG_SERBIAN = 0x1A, - LANG_BOSNIAN = 0x1A, - LANG_SLOVAK, - LANG_ALBANIAN, - LANG_SWEDISH, - LANG_THAI, - LANG_TURKISH, - LANG_URDU, - LANG_INDONESIAN, - LANG_UKRAINIAN, - LANG_BELARUSIAN, - LANG_SLOVENIAN, - LANG_ESTONIAN, - LANG_LATVIAN, - LANG_LITHUANIAN, // = 0x27 - LANG_FARSI = 0x29, - LANG_PERSIAN = 0x29, - LANG_VIETNAMESE, - LANG_ARMENIAN, - LANG_AZERI, - LANG_BASQUE, - LANG_LOWER_SORBIAN, // = 0x2E - LANG_UPPER_SORBIAN = 0x2E, - LANG_MACEDONIAN, // = 0x2F - LANG_TSWANA = 0x32, - LANG_XHOSA = 0x34, - LANG_ZULU, - LANG_AFRIKAANS, - LANG_GEORGIAN, - LANG_FAEROESE, - LANG_HINDI, - LANG_MALTESE, - LANG_SAMI, - LANG_IRISH, // = 0x3C - LANG_MALAY = 0x3E, - LANG_KAZAK, - LANG_KYRGYZ, - LANG_SWAHILI, // = 0x41 - LANG_UZBEK = 0x43, - LANG_TATAR, - LANG_BENGALI, - LANG_PUNJABI, - LANG_GUJARATI, - LANG_ORIYA, - LANG_TAMIL, - LANG_TELUGU, - LANG_KANNADA, - LANG_MALAYALAM, - LANG_ASSAMESE, - LANG_MARATHI, - LANG_SANSKRIT, - LANG_MONGOLIAN, - LANG_TIBETAN, - LANG_WELSH, - LANG_KHMER, - LANG_LAO, // = 0x54 - LANG_GALICIAN = 0x56, - LANG_KONKANI, - LANG_MANIPURI, - LANG_SINDHI, - LANG_SYRIAC, - LANG_SINHALESE, // = 0x5B - LANG_INUKTITUT = 0x5D, - LANG_AMHARIC, - LANG_TAMAZIGHT, - LANG_KASHMIRI, - LANG_NEPALI, - LANG_FRISIAN, - LANG_PASHTO, - LANG_FILIPINO, - LANG_DIVEHI, // = 0x65 - LANG_HAUSA = 0x68, - LANG_YORUBA = 0x6A, - LANG_QUECHUA, - LANG_SOTHO, - LANG_BASHKIR, - LANG_LUXEMBOURGISH, - LANG_GREENLANDIC, - LANG_IGBO, // = 0x70 - LANG_TIGRIGNA = 0x73, - LANG_YI = 0x78, - LANG_MAPUDUNGUN = 0x7A, - LANG_MOHAWK = 0x7C, - LANG_BRETON = 0x7E, - LANG_UIGHUR = 0x80, - LANG_MAORI, - LANG_OCCITAN, - LANG_CORSICAN, - LANG_ALSATIAN, - LANG_YAKUT, - LANG_KICHE, - LANG_KINYARWANDA, - LANG_WOLOF, // = 0x88 - LANG_DARI = 0x8C, - LANG_MALAGASY, // = 0x8D - - LANG_SERBIAN_NEUTRAL = 0x7C1A, - LANG_BOSNIAN_NEUTRAL = 0x781A, - - LANG_INVARIANT = 0x7F -} - - -// Sublanguage identifiers -enum : USHORT { - SUBLANG_NEUTRAL, - SUBLANG_DEFAULT, - SUBLANG_SYS_DEFAULT, - SUBLANG_CUSTOM_DEFAULT, // = 3 - SUBLANG_UI_CUSTOM_DEFAULT = 3, - SUBLANG_CUSTOM_UNSPECIFIED, // = 4 - - SUBLANG_AFRIKAANS_SOUTH_AFRICA = 1, - SUBLANG_ALBANIAN_ALBANIA = 1, - SUBLANG_ALSATIAN_FRANCE = 1, - SUBLANG_AMHARIC_ETHIOPIA = 1, - - SUBLANG_ARABIC_SAUDI_ARABIA = 1, - SUBLANG_ARABIC_IRAQ, - SUBLANG_ARABIC_EGYPT, - SUBLANG_ARABIC_LIBYA, - SUBLANG_ARABIC_ALGERIA, - SUBLANG_ARABIC_MOROCCO, - SUBLANG_ARABIC_TUNISIA, - SUBLANG_ARABIC_OMAN, - SUBLANG_ARABIC_YEMEN, - SUBLANG_ARABIC_SYRIA, - SUBLANG_ARABIC_JORDAN, - SUBLANG_ARABIC_LEBANON, - SUBLANG_ARABIC_KUWAIT, - SUBLANG_ARABIC_UAE, - SUBLANG_ARABIC_BAHRAIN, - SUBLANG_ARABIC_QATAR, // = 16 - - SUBLANG_ARMENIAN_ARMENIA = 1, - SUBLANG_ASSAMESE_INDIA = 1, - - SUBLANG_AZERI_LATIN = 1, - SUBLANG_AZERI_CYRILLIC, // = 2 - - SUBLANG_BASHKIR_RUSSIA = 1, - SUBLANG_BASQUE_BASQUE = 1, - SUBLANG_BELARUSIAN_BELARUS = 1, - SUBLANG_BENGALI_INDIA = 1, - - SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 5, - SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 8, - - SUBLANG_BRETON_FRANCE = 1, - SUBLANG_BULGARIAN_BULGARIA = 1, - SUBLANG_CATALAN_CATALAN = 1, - - SUBLANG_CHINESE_TRADITIONAL = 1, - SUBLANG_CHINESE_SIMPLIFIED, - SUBLANG_CHINESE_HONGKONG, - SUBLANG_CHINESE_SINGAPORE, - SUBLANG_CHINESE_MACAU, // = 5 - - SUBLANG_CORSICAN_FRANCE = 1, - - SUBLANG_CROATIAN_CROATIA = 1, - SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 4, - - SUBLANG_CZECH_CZECH_REPUBLIC = 1, - SUBLANG_DANISH_DENMARK = 1, - SUBLANG_DIVEHI_MALDIVES = 1, - - SUBLANG_DUTCH = 1, - SUBLANG_DUTCH_BELGIAN, // = 2 - - SUBLANG_ENGLISH_US = 1, - SUBLANG_ENGLISH_UK, - SUBLANG_ENGLISH_AUS, - SUBLANG_ENGLISH_CAN, - SUBLANG_ENGLISH_NZ, - SUBLANG_ENGLISH_EIRE, // = 6 - SUBLANG_ENGLISH_IRELAND = 6, - SUBLANG_ENGLISH_SOUTH_AFRICA, - SUBLANG_ENGLISH_JAMAICA, - SUBLANG_ENGLISH_CARIBBEAN, - SUBLANG_ENGLISH_BELIZE, - SUBLANG_ENGLISH_TRINIDAD, - SUBLANG_ENGLISH_ZIMBABWE, - SUBLANG_ENGLISH_PHILIPPINES, // = 13 - SUBLANG_ENGLISH_INDIA = 16, - SUBLANG_ENGLISH_MALAYSIA, - SUBLANG_ENGLISH_SINGAPORE, // = 18 - - SUBLANG_ESTONIAN_ESTONIA = 1, - SUBLANG_FAEROESE_FAROE_ISLANDS = 1, - SUBLANG_FILIPINO_PHILIPPINES = 1, - SUBLANG_FINNISH_FINLAND = 1, - - SUBLANG_FRENCH = 1, - SUBLANG_FRENCH_BELGIAN, - SUBLANG_FRENCH_CANADIAN, - SUBLANG_FRENCH_SWISS, - SUBLANG_FRENCH_LUXEMBOURG, - SUBLANG_FRENCH_MONACO, // = 6 - - SUBLANG_FRISIAN_NETHERLANDS = 1, - SUBLANG_GALICIAN_GALICIAN = 1, - SUBLANG_GEORGIAN_GEORGIA = 1, - - SUBLANG_GERMAN = 1, - SUBLANG_GERMAN_SWISS, - SUBLANG_GERMAN_AUSTRIAN, - SUBLANG_GERMAN_LUXEMBOURG, - SUBLANG_GERMAN_LIECHTENSTEIN, // = 5 - - SUBLANG_GREEK_GREECE = 1, - SUBLANG_GREENLANDIC_GREENLAND = 1, - SUBLANG_GUJARATI_INDIA = 1, - SUBLANG_HAUSA_NIGERIA = 1, - SUBLANG_HEBREW_ISRAEL = 1, - SUBLANG_HINDI_INDIA = 1, - SUBLANG_HUNGARIAN_HUNGARY = 1, - SUBLANG_ICELANDIC_ICELAND = 1, - SUBLANG_IGBO_NIGERIA = 1, - SUBLANG_INDONESIAN_INDONESIA = 1, - - SUBLANG_INUKTITUT_CANADA = 1, - SUBLANG_INUKTITUT_CANADA_LATIN = 1, - - SUBLANG_IRISH_IRELAND = 1, - - SUBLANG_ITALIAN = 1, - SUBLANG_ITALIAN_SWISS, // = 2 - - SUBLANG_JAPANESE_JAPAN = 1, - - SUBLANG_KASHMIRI_INDIA = 2, - SUBLANG_KASHMIRI_SASIA = 2, - - SUBLANG_KAZAK_KAZAKHSTAN = 1, - SUBLANG_KHMER_CAMBODIA = 1, - SUBLANG_KICHE_GUATEMALA = 1, - SUBLANG_KINYARWANDA_RWANDA = 1, - SUBLANG_KONKANI_INDIA = 1, - SUBLANG_KOREAN = 1, - SUBLANG_KYRGYZ_KYRGYZSTAN = 1, - SUBLANG_LAO_LAO_PDR = 1, - SUBLANG_LATVIAN_LATVIA = 1, - - SUBLANG_LITHUANIAN = 1, - SUBLANG_LITHUANIAN_LITHUANIA = 1, - - SUBLANG_LOWER_SORBIAN_GERMANY = 1, - SUBLANG_LUXEMBOURGISH_LUXEMBOURG = 1, - SUBLANG_MACEDONIAN_MACEDONIA = 1, - SUBLANG_MALAYALAM_INDIA = 1, - SUBLANG_MALTESE_MALTA = 1, - SUBLANG_MAORI_NEW_ZEALAND = 1, - SUBLANG_MAPUDUNGUN_CHILE = 1, - SUBLANG_MARATHI_INDIA = 1, - SUBLANG_MOHAWK_MOHAWK = 1, - - SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA = 1, - SUBLANG_MONGOLIAN_PRC, // = 2 - - SUBLANG_MALAY_MALAYSIA = 1, - SUBLANG_MALAY_BRUNEI_DARUSSALAM, // = 2 - - SUBLANG_NEPALI_NEPAL = 1, - SUBLANG_NEPALI_INDIA, // = 2 - - SUBLANG_NORWEGIAN_BOKMAL = 1, - SUBLANG_NORWEGIAN_NYNORSK, // = 2 - - SUBLANG_OCCITAN_FRANCE = 1, - SUBLANG_ORIYA_INDIA = 1, - SUBLANG_PASHTO_AFGHANISTAN = 1, - SUBLANG_PERSIAN_IRAN = 1, - SUBLANG_POLISH_POLAND = 1, - - SUBLANG_PORTUGUESE_BRAZILIAN = 1, - SUBLANG_PORTUGUESE = 2, - SUBLANG_PORTUGUESE_PORTUGAL, // = 2 - - SUBLANG_PUNJABI_INDIA = 1, - - SUBLANG_QUECHUA_BOLIVIA = 1, - SUBLANG_QUECHUA_ECUADOR, - SUBLANG_QUECHUA_PERU, // = 3 - - SUBLANG_ROMANIAN_ROMANIA = 1, - SUBLANG_ROMANSH_SWITZERLAND = 1, - SUBLANG_RUSSIAN_RUSSIA = 1, - - SUBLANG_SAMI_NORTHERN_NORWAY = 1, - SUBLANG_SAMI_NORTHERN_SWEDEN, - SUBLANG_SAMI_NORTHERN_FINLAND, // = 3 - SUBLANG_SAMI_SKOLT_FINLAND = 3, - SUBLANG_SAMI_INARI_FINLAND = 3, - SUBLANG_SAMI_LULE_NORWAY, - SUBLANG_SAMI_LULE_SWEDEN, - SUBLANG_SAMI_SOUTHERN_NORWAY, - SUBLANG_SAMI_SOUTHERN_SWEDEN, // = 7 - - SUBLANG_SANSKRIT_INDIA = 1, - - SUBLANG_SERBIAN_LATIN = 2, - SUBLANG_SERBIAN_CYRILLIC, // = 3 - SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 6, - SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 7, - - SUBLANG_SINDHI_AFGHANISTAN = 2, - SUBLANG_SINHALESE_SRI_LANKA = 1, - SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 1, - SUBLANG_SLOVAK_SLOVAKIA = 1, - SUBLANG_SLOVENIAN_SLOVENIA = 1, - - SUBLANG_SPANISH = 1, - SUBLANG_SPANISH_MEXICAN, - SUBLANG_SPANISH_MODERN, - SUBLANG_SPANISH_GUATEMALA, - SUBLANG_SPANISH_COSTA_RICA, - SUBLANG_SPANISH_PANAMA, - SUBLANG_SPANISH_DOMINICAN_REPUBLIC, - SUBLANG_SPANISH_VENEZUELA, - SUBLANG_SPANISH_COLOMBIA, - SUBLANG_SPANISH_PERU, - SUBLANG_SPANISH_ARGENTINA, - SUBLANG_SPANISH_ECUADOR, - SUBLANG_SPANISH_CHILE, - SUBLANG_SPANISH_URUGUAY, - SUBLANG_SPANISH_PARAGUAY, - SUBLANG_SPANISH_BOLIVIA, - SUBLANG_SPANISH_EL_SALVADOR, - SUBLANG_SPANISH_HONDURAS, - SUBLANG_SPANISH_NICARAGUA, - SUBLANG_SPANISH_PUERTO_RICO, - SUBLANG_SPANISH_US, // = 21 - - SUBLANG_SWEDISH = 1, - SUBLANG_SWEDISH_SWEDEN = 1, - SUBLANG_SWEDISH_FINLAND, // = 2 - - SUBLANG_SYRIAC = 1, - SUBLANG_TAJIK_TAJIKISTAN = 1, - SUBLANG_TAMAZIGHT_ALGERIA_LATIN = 2, - SUBLANG_TAMIL_INDIA = 1, - SUBLANG_TATAR_RUSSIA = 1, - SUBLANG_TELUGU_INDIA = 1, - SUBLANG_THAI_THAILAND = 1, - SUBLANG_TIBETAN_PRC = 1, - SUBLANG_TIBETAN_BHUTAN = 2, - SUBLANG_TIGRIGNA_ERITREA = 1, - SUBLANG_TSWANA_SOUTH_AFRICA = 1, - SUBLANG_TURKISH_TURKEY = 1, - SUBLANG_TURKMEN_TURKMENISTAN = 1, - SUBLANG_UIGHUR_PRC = 1, - SUBLANG_UKRAINIAN_UKRAINE = 1, - SUBLANG_UPPER_SORBIAN_GERMANY = 1, - - SUBLANG_URDU_PAKISTAN = 1, - SUBLANG_URDU_INDIA, // = 2 - - SUBLANG_UZBEK_LATIN = 1, - SUBLANG_UZBEK_CYRILLIC, // = 2 - - SUBLANG_VIETNAMESE_VIETNAM = 1, - SUBLANG_WELSH_UNITED_KINGDOM = 1, - SUBLANG_WOLOF_SENEGAL = 1, - SUBLANG_YORUBA_NIGERIA = 1, - SUBLANG_XHOSA_SOUTH_AFRICA = 1, - SUBLANG_YAKUT_RUSSIA = 1, - SUBLANG_YI_PRC = 1, - SUBLANG_ZULU_SOUTH_AFRICA = 1 -} - -// This is not documented on MSDN -const NLS_VALID_LOCALE_MASK = 1048575; - -// Sorting identifiers -enum : WORD { - SORT_DEFAULT = 0, - SORT_JAPANESE_XJIS = 0, - SORT_JAPANESE_UNICODE = 1, - SORT_CHINESE_BIG5 = 0, - SORT_CHINESE_PRCP = 0, - SORT_CHINESE_UNICODE = 1, - SORT_CHINESE_PRC = 2, - SORT_CHINESE_BOPOMOFO = 3, - SORT_KOREAN_KSC = 0, - SORT_KOREAN_UNICODE = 1, - SORT_GERMAN_PHONE_BOOK = 1, - SORT_HUNGARIAN_DEFAULT = 0, - SORT_HUNGARIAN_TECHNICAL = 1, - SORT_GEORGIAN_TRADITIONAL = 0, - SORT_GEORGIAN_MODERN = 1 -} - -WORD MAKELANGID(USHORT p, USHORT s) { return cast(WORD)((s << 10) | p); } -WORD PRIMARYLANGID(WORD lgid) { return cast(WORD)(lgid & 0x3FF); } -WORD SUBLANGID(WORD lgid) { return cast(WORD)(lgid >>> 10); } - -DWORD MAKELCID(WORD lgid, WORD srtid) { return (cast(DWORD) srtid << 16) | cast(DWORD) lgid; } -// ??? -//DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); } -WORD LANGIDFROMLCID(LCID lcid) { return cast(WORD) lcid; } -WORD SORTIDFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 16) & 0x0F); } -WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } - -const WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; -const WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; -const DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) - | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL; - -// --- -enum : BYTE { - ACL_REVISION = 2, - ACL_REVISION_DS = 4 -} - -// These are not documented on MSDN -enum : BYTE { - ACL_REVISION1 = 1, - ACL_REVISION2, - ACL_REVISION3, - ACL_REVISION4 // = 4 -} - -const BYTE - MIN_ACL_REVISION = 2, - MAX_ACL_REVISION = 4; - -/+ -// These aren't necessary for D. -const MINCHAR=0x80; -const MAXCHAR=0x7f; -const MINSHORT=0x8000; -const MAXSHORT=0x7fff; -const MINLONG=0x80000000; -const MAXLONG=0x7fffffff; -const MAXBYTE=0xff; -const MAXWORD=0xffff; -const MAXDWORD=0xffffffff; -+/ - -// SYSTEM_INFO.dwProcessorType -enum : DWORD { - PROCESSOR_INTEL_386 = 386, - PROCESSOR_INTEL_486 = 486, - PROCESSOR_INTEL_PENTIUM = 586, - PROCESSOR_MIPS_R4000 = 4000, - PROCESSOR_ALPHA_21064 = 21064, - PROCESSOR_INTEL_IA64 = 2200 -} - -// SYSTEM_INFO.wProcessorArchitecture -enum : WORD { - PROCESSOR_ARCHITECTURE_INTEL, - PROCESSOR_ARCHITECTURE_MIPS, - PROCESSOR_ARCHITECTURE_ALPHA, - PROCESSOR_ARCHITECTURE_PPC, - PROCESSOR_ARCHITECTURE_SHX, - PROCESSOR_ARCHITECTURE_ARM, - PROCESSOR_ARCHITECTURE_IA64, - PROCESSOR_ARCHITECTURE_ALPHA64, - PROCESSOR_ARCHITECTURE_MSIL, - PROCESSOR_ARCHITECTURE_AMD64, - PROCESSOR_ARCHITECTURE_IA32_ON_WIN64, // = 10 - PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF -} - -// IsProcessorFeaturePresent() -enum : DWORD { - PF_FLOATING_POINT_PRECISION_ERRATA, - PF_FLOATING_POINT_EMULATED, - PF_COMPARE_EXCHANGE_DOUBLE, - PF_MMX_INSTRUCTIONS_AVAILABLE, - PF_PPC_MOVEMEM_64BIT_OK, - PF_ALPHA_BYTE_INSTRUCTIONS, - PF_XMMI_INSTRUCTIONS_AVAILABLE, - PF_3DNOW_INSTRUCTIONS_AVAILABLE, - PF_RDTSC_INSTRUCTION_AVAILABLE, - PF_PAE_ENABLED, - PF_XMMI64_INSTRUCTIONS_AVAILABLE -} - -// MinGW: also in ddk/ntifs.h -enum : DWORD { - FILE_ACTION_ADDED = 1, - FILE_ACTION_REMOVED, - FILE_ACTION_MODIFIED, - FILE_ACTION_RENAMED_OLD_NAME, - FILE_ACTION_RENAMED_NEW_NAME, - FILE_ACTION_ADDED_STREAM, - FILE_ACTION_REMOVED_STREAM, - FILE_ACTION_MODIFIED_STREAM, - FILE_ACTION_REMOVED_BY_DELETE, - FILE_ACTION_ID_NOT_TUNNELLED, - FILE_ACTION_TUNNELLED_ID_COLLISION // = 11 -} -// MinGW: end ntifs.h - -const DWORD - HEAP_NO_SERIALIZE = 0x01, - HEAP_GROWABLE = 0x02, - HEAP_GENERATE_EXCEPTIONS = 0x04, - HEAP_ZERO_MEMORY = 0x08, - HEAP_REALLOC_IN_PLACE_ONLY = 0x10, - HEAP_TAIL_CHECKING_ENABLED = 0x20, - HEAP_FREE_CHECKING_ENABLED = 0x40, - HEAP_DISABLE_COALESCE_ON_FREE = 0x80; - -// These are not documented on MSDN -const HEAP_CREATE_ALIGN_16 = 0; -const HEAP_CREATE_ENABLE_TRACING = 0x020000; -const HEAP_MAXIMUM_TAG = 0x000FFF; -const HEAP_PSEUDO_TAG_FLAG = 0x008000; -const HEAP_TAG_SHIFT = 16; -// ??? -//MACRO #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) - -const ACCESS_MASK - KEY_QUERY_VALUE = 0x000001, - KEY_SET_VALUE = 0x000002, - KEY_CREATE_SUB_KEY = 0x000004, - KEY_ENUMERATE_SUB_KEYS = 0x000008, - KEY_NOTIFY = 0x000010, - KEY_CREATE_LINK = 0x000020, - KEY_WRITE = 0x020006, - KEY_EXECUTE = 0x020019, - KEY_READ = 0x020019, - KEY_ALL_ACCESS = 0x0F003F; - -static if (WINVER >= 0x502) { - const ACCESS_MASK - KEY_WOW64_64KEY = 0x000100, - KEY_WOW64_32KEY = 0x000200; -} - -const DWORD - REG_WHOLE_HIVE_VOLATILE = 1, - REG_REFRESH_HIVE = 2, - REG_NO_LAZY_FLUSH = 4; - -const DWORD - REG_OPTION_RESERVED = 0, - REG_OPTION_NON_VOLATILE = 0, - REG_OPTION_VOLATILE = 1, - REG_OPTION_CREATE_LINK = 2, - REG_OPTION_BACKUP_RESTORE = 4, - REG_OPTION_OPEN_LINK = 8, - REG_LEGAL_OPTION = 15; - -const SECURITY_INFORMATION - OWNER_SECURITY_INFORMATION = 0x00000001, - GROUP_SECURITY_INFORMATION = 0x00000002, - DACL_SECURITY_INFORMATION = 0x00000004, - SACL_SECURITY_INFORMATION = 0x00000008, - LABEL_SECURITY_INFORMATION = 0x00000010, - UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000, - UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000, - PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, - PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; - -const DWORD MAXIMUM_PROCESSORS = 32; - -// VirtualAlloc(), etc -// ------------------- - -enum : DWORD { - PAGE_NOACCESS = 0x0001, - PAGE_READONLY = 0x0002, - PAGE_READWRITE = 0x0004, - PAGE_WRITECOPY = 0x0008, - PAGE_EXECUTE = 0x0010, - PAGE_EXECUTE_READ = 0x0020, - PAGE_EXECUTE_READWRITE = 0x0040, - PAGE_EXECUTE_WRITECOPY = 0x0080, - PAGE_GUARD = 0x0100, - PAGE_NOCACHE = 0x0200 -} - -enum : DWORD { - MEM_COMMIT = 0x00001000, - MEM_RESERVE = 0x00002000, - MEM_DECOMMIT = 0x00004000, - MEM_RELEASE = 0x00008000, - MEM_FREE = 0x00010000, - MEM_PRIVATE = 0x00020000, - MEM_MAPPED = 0x00040000, - MEM_RESET = 0x00080000, - MEM_TOP_DOWN = 0x00100000, - MEM_WRITE_WATCH = 0x00200000, // MinGW (???): 98/Me - MEM_PHYSICAL = 0x00400000, - MEM_4MB_PAGES = 0x80000000 -} - -// MinGW: also in ddk/ntifs.h -// CreateFileMapping() -const DWORD - SEC_BASED = 0x00200000, - SEC_NO_CHANGE = 0x00400000, - SEC_FILE = 0x00800000, - SEC_IMAGE = 0x01000000, - SEC_VLM = 0x02000000, - SEC_RESERVE = 0x04000000, - SEC_COMMIT = 0x08000000, - SEC_NOCACHE = 0x10000000, - MEM_IMAGE = SEC_IMAGE; -// MinGW: end ntifs.h - -// ??? -const ACCESS_MASK - SECTION_QUERY = 0x000001, - SECTION_MAP_WRITE = 0x000002, - SECTION_MAP_READ = 0x000004, - SECTION_MAP_EXECUTE = 0x000008, - SECTION_EXTEND_SIZE = 0x000010, - SECTION_ALL_ACCESS = 0x0F001F; - -// These are not documented on MSDN -const MESSAGE_RESOURCE_UNICODE = 1; -const RTL_CRITSECT_TYPE = 0; -const RTL_RESOURCE_TYPE = 1; - -// COFF file format -// ---------------- - -// IMAGE_FILE_HEADER.Characteristics -const WORD - IMAGE_FILE_RELOCS_STRIPPED = 0x0001, - IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, - IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, - IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, - IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010, - IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, - IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, - IMAGE_FILE_32BIT_MACHINE = 0x0100, - IMAGE_FILE_DEBUG_STRIPPED = 0x0200, - IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, - IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, - IMAGE_FILE_SYSTEM = 0x1000, - IMAGE_FILE_DLL = 0x2000, - IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, - IMAGE_FILE_BYTES_REVERSED_HI = 0x8000; - -// IMAGE_FILE_HEADER.Machine -enum : WORD { - IMAGE_FILE_MACHINE_UNKNOWN = 0x0000, - IMAGE_FILE_MACHINE_I386 = 0x014C, - IMAGE_FILE_MACHINE_R3000 = 0x0162, - IMAGE_FILE_MACHINE_R4000 = 0x0166, - IMAGE_FILE_MACHINE_R10000 = 0x0168, - IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169, - IMAGE_FILE_MACHINE_ALPHA = 0x0184, - IMAGE_FILE_MACHINE_SH3 = 0x01A2, - IMAGE_FILE_MACHINE_SH3DSP = 0x01A3, - IMAGE_FILE_MACHINE_SH4 = 0x01A6, - IMAGE_FILE_MACHINE_SH5 = 0x01A8, - IMAGE_FILE_MACHINE_ARM = 0x01C0, - IMAGE_FILE_MACHINE_THUMB = 0x01C2, - IMAGE_FILE_MACHINE_AM33 = 0x01D3, - IMAGE_FILE_MACHINE_POWERPC = 0x01F0, - IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1, - IMAGE_FILE_MACHINE_IA64 = 0x0200, - IMAGE_FILE_MACHINE_MIPS16 = 0x0266, - IMAGE_FILE_MACHINE_MIPSFPU = 0x0366, - IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466, - IMAGE_FILE_MACHINE_EBC = 0x0EBC, - IMAGE_FILE_MACHINE_AMD64 = 0x8664, - IMAGE_FILE_MACHINE_M32R = 0x9041 -} - -// ??? -enum { - IMAGE_DOS_SIGNATURE = 0x5A4D, - IMAGE_OS2_SIGNATURE = 0x454E, - IMAGE_OS2_SIGNATURE_LE = 0x454C, - IMAGE_VXD_SIGNATURE = 0x454C, - IMAGE_NT_SIGNATURE = 0x4550 -} - -// IMAGE_OPTIONAL_HEADER.Magic -enum : WORD { - IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x010B, - IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x0107, - IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x020B -} - -// IMAGE_OPTIONAL_HEADER.Subsystem -enum : WORD { - IMAGE_SUBSYSTEM_UNKNOWN = 0, - IMAGE_SUBSYSTEM_NATIVE, - IMAGE_SUBSYSTEM_WINDOWS_GUI, - IMAGE_SUBSYSTEM_WINDOWS_CUI, // = 3 - IMAGE_SUBSYSTEM_OS2_CUI = 5, - IMAGE_SUBSYSTEM_POSIX_CUI = 7, - IMAGE_SUBSYSTEM_NATIVE_WINDOWS, - IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, - IMAGE_SUBSYSTEM_EFI_APPLICATION, - IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, - IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, - IMAGE_SUBSYSTEM_EFI_ROM, - IMAGE_SUBSYSTEM_XBOX, // = 14 - IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 -} - -// IMAGE_OPTIONAL_HEADER.DllCharacteristics -const WORD - IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, - IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, - IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, - IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, - IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, - IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, - IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, - IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; - -// ??? -const IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; - -const size_t - IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, - IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, - IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, - IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224, - IMAGE_SIZEOF_SHORT_NAME = 8, - IMAGE_SIZEOF_SECTION_HEADER = 40, - IMAGE_SIZEOF_SYMBOL = 18, - IMAGE_SIZEOF_AUX_SYMBOL = 18, - IMAGE_SIZEOF_RELOCATION = 10, - IMAGE_SIZEOF_BASE_RELOCATION = 8, - IMAGE_SIZEOF_LINENUMBER = 6, - IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60, - SIZEOF_RFPO_DATA = 16; - -PIMAGE_SECTION_HEADER IMAGE_FIRST_SECTION(PIMAGE_NT_HEADERS h) { - return cast(PIMAGE_SECTION_HEADER) - (&h.OptionalHeader + h.FileHeader.SizeOfOptionalHeader); -} - -// ImageDirectoryEntryToDataEx() -enum : USHORT { - IMAGE_DIRECTORY_ENTRY_EXPORT = 0, - IMAGE_DIRECTORY_ENTRY_IMPORT, - IMAGE_DIRECTORY_ENTRY_RESOURCE, - IMAGE_DIRECTORY_ENTRY_EXCEPTION, - IMAGE_DIRECTORY_ENTRY_SECURITY, - IMAGE_DIRECTORY_ENTRY_BASERELOC, - IMAGE_DIRECTORY_ENTRY_DEBUG, - IMAGE_DIRECTORY_ENTRY_COPYRIGHT, // = 7 - IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, - IMAGE_DIRECTORY_ENTRY_GLOBALPTR, - IMAGE_DIRECTORY_ENTRY_TLS, - IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, - IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, - IMAGE_DIRECTORY_ENTRY_IAT, - IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, - IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // = 14 -} - -// IMAGE_SECTION_HEADER.Characteristics -const DWORD - IMAGE_SCN_TYPE_REG = 0x00000000, - IMAGE_SCN_TYPE_DSECT = 0x00000001, - IMAGE_SCN_TYPE_NOLOAD = 0x00000002, - IMAGE_SCN_TYPE_GROUP = 0x00000004, - IMAGE_SCN_TYPE_NO_PAD = 0x00000008, - IMAGE_SCN_TYPE_COPY = 0x00000010, - IMAGE_SCN_CNT_CODE = 0x00000020, - IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, - IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, - IMAGE_SCN_LNK_OTHER = 0x00000100, - IMAGE_SCN_LNK_INFO = 0x00000200, - IMAGE_SCN_TYPE_OVER = 0x00000400, - IMAGE_SCN_LNK_REMOVE = 0x00000800, - IMAGE_SCN_LNK_COMDAT = 0x00001000, - IMAGE_SCN_MEM_FARDATA = 0x00008000, - IMAGE_SCN_GPREL = 0x00008000, - IMAGE_SCN_MEM_PURGEABLE = 0x00020000, - IMAGE_SCN_MEM_16BIT = 0x00020000, - IMAGE_SCN_MEM_LOCKED = 0x00040000, - IMAGE_SCN_MEM_PRELOAD = 0x00080000, - IMAGE_SCN_ALIGN_1BYTES = 0x00100000, - IMAGE_SCN_ALIGN_2BYTES = 0x00200000, - IMAGE_SCN_ALIGN_4BYTES = 0x00300000, - IMAGE_SCN_ALIGN_8BYTES = 0x00400000, - IMAGE_SCN_ALIGN_16BYTES = 0x00500000, - IMAGE_SCN_ALIGN_32BYTES = 0x00600000, - IMAGE_SCN_ALIGN_64BYTES = 0x00700000, - IMAGE_SCN_ALIGN_128BYTES = 0x00800000, - IMAGE_SCN_ALIGN_256BYTES = 0x00900000, - IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, - IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, - IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, - IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, - IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, - IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, - IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, - IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, - IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, - IMAGE_SCN_MEM_SHARED = 0x10000000, - IMAGE_SCN_MEM_EXECUTE = 0x20000000, - IMAGE_SCN_MEM_READ = 0x40000000, - IMAGE_SCN_MEM_WRITE = 0x80000000; - -/* The following constants are mostlydocumented at - * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc - * but don't seem to be defined in the HTML docs. - */ -enum : SHORT { - IMAGE_SYM_UNDEFINED = 0, - IMAGE_SYM_ABSOLUTE = -1, - IMAGE_SYM_DEBUG = -2 -} - -enum : ubyte { - IMAGE_SYM_TYPE_NULL, - IMAGE_SYM_TYPE_VOID, - IMAGE_SYM_TYPE_CHAR, - IMAGE_SYM_TYPE_SHORT, - IMAGE_SYM_TYPE_INT, - IMAGE_SYM_TYPE_LONG, - IMAGE_SYM_TYPE_FLOAT, - IMAGE_SYM_TYPE_DOUBLE, - IMAGE_SYM_TYPE_STRUCT, - IMAGE_SYM_TYPE_UNION, - IMAGE_SYM_TYPE_ENUM, - IMAGE_SYM_TYPE_MOE, - IMAGE_SYM_TYPE_BYTE, - IMAGE_SYM_TYPE_WORD, - IMAGE_SYM_TYPE_UINT, - IMAGE_SYM_TYPE_DWORD // = 15 -} -const IMAGE_SYM_TYPE_PCODE = 32768; // ??? - -enum : ubyte { - IMAGE_SYM_DTYPE_NULL, - IMAGE_SYM_DTYPE_POINTER, - IMAGE_SYM_DTYPE_FUNCTION, - IMAGE_SYM_DTYPE_ARRAY -} - -enum : BYTE { - IMAGE_SYM_CLASS_END_OF_FUNCTION = 0xFF, - IMAGE_SYM_CLASS_NULL = 0, - IMAGE_SYM_CLASS_AUTOMATIC, - IMAGE_SYM_CLASS_EXTERNAL, - IMAGE_SYM_CLASS_STATIC, - IMAGE_SYM_CLASS_REGISTER, - IMAGE_SYM_CLASS_EXTERNAL_DEF, - IMAGE_SYM_CLASS_LABEL, - IMAGE_SYM_CLASS_UNDEFINED_LABEL, - IMAGE_SYM_CLASS_MEMBER_OF_STRUCT, - IMAGE_SYM_CLASS_ARGUMENT, - IMAGE_SYM_CLASS_STRUCT_TAG, - IMAGE_SYM_CLASS_MEMBER_OF_UNION, - IMAGE_SYM_CLASS_UNION_TAG, - IMAGE_SYM_CLASS_TYPE_DEFINITION, - IMAGE_SYM_CLASS_UNDEFINED_STATIC, - IMAGE_SYM_CLASS_ENUM_TAG, - IMAGE_SYM_CLASS_MEMBER_OF_ENUM, - IMAGE_SYM_CLASS_REGISTER_PARAM, - IMAGE_SYM_CLASS_BIT_FIELD, // = 18 - IMAGE_SYM_CLASS_FAR_EXTERNAL = 68, - IMAGE_SYM_CLASS_BLOCK = 100, - IMAGE_SYM_CLASS_FUNCTION, - IMAGE_SYM_CLASS_END_OF_STRUCT, - IMAGE_SYM_CLASS_FILE, - IMAGE_SYM_CLASS_SECTION, - IMAGE_SYM_CLASS_WEAK_EXTERNAL,// = 105 - IMAGE_SYM_CLASS_CLR_TOKEN = 107 -} - -enum : BYTE { - IMAGE_COMDAT_SELECT_NODUPLICATES = 1, - IMAGE_COMDAT_SELECT_ANY, - IMAGE_COMDAT_SELECT_SAME_SIZE, - IMAGE_COMDAT_SELECT_EXACT_MATCH, - IMAGE_COMDAT_SELECT_ASSOCIATIVE, - IMAGE_COMDAT_SELECT_LARGEST, - IMAGE_COMDAT_SELECT_NEWEST // = 7 -} - -enum : DWORD { - IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, - IMAGE_WEAK_EXTERN_SEARCH_LIBRARY, - IMAGE_WEAK_EXTERN_SEARCH_ALIAS -} - -enum : WORD { - IMAGE_REL_I386_ABSOLUTE = 0x0000, - IMAGE_REL_I386_DIR16 = 0x0001, - IMAGE_REL_I386_REL16 = 0x0002, - IMAGE_REL_I386_DIR32 = 0x0006, - IMAGE_REL_I386_DIR32NB = 0x0007, - IMAGE_REL_I386_SEG12 = 0x0009, - IMAGE_REL_I386_SECTION = 0x000A, - IMAGE_REL_I386_SECREL = 0x000B, - IMAGE_REL_I386_TOKEN = 0x000C, - IMAGE_REL_I386_SECREL7 = 0x000D, - IMAGE_REL_I386_REL32 = 0x0014 -} - -enum : WORD { - IMAGE_REL_AMD64_ABSOLUTE = 0x0000, - IMAGE_REL_AMD64_ADDR64 = 0x0001, - IMAGE_REL_AMD64_ADDR32 = 0x0002, - IMAGE_REL_AMD64_ADDR32NB = 0x0003, - IMAGE_REL_AMD64_REL32 = 0x0004, - IMAGE_REL_AMD64_REL32_1 = 0x0005, - IMAGE_REL_AMD64_REL32_2 = 0x0006, - IMAGE_REL_AMD64_REL32_3 = 0x0007, - IMAGE_REL_AMD64_REL32_4 = 0x0008, - IMAGE_REL_AMD64_REL32_5 = 0x0009, - IMAGE_REL_AMD64_SECTION = 0x000A, - IMAGE_REL_AMD64_SECREL = 0x000B, - IMAGE_REL_AMD64_SECREL7 = 0x000C, - IMAGE_REL_AMD64_TOKEN = 0x000D, - IMAGE_REL_AMD64_SREL32 = 0x000E, - IMAGE_REL_AMD64_PAIR = 0x000F, - IMAGE_REL_AMD64_SSPAN32 = 0x0010 -} - -enum : WORD { - IMAGE_REL_IA64_ABSOLUTE = 0x0000, - IMAGE_REL_IA64_IMM14 = 0x0001, - IMAGE_REL_IA64_IMM22 = 0x0002, - IMAGE_REL_IA64_IMM64 = 0x0003, - IMAGE_REL_IA64_DIR32 = 0x0004, - IMAGE_REL_IA64_DIR64 = 0x0005, - IMAGE_REL_IA64_PCREL21B = 0x0006, - IMAGE_REL_IA64_PCREL21M = 0x0007, - IMAGE_REL_IA64_PCREL21F = 0x0008, - IMAGE_REL_IA64_GPREL22 = 0x0009, - IMAGE_REL_IA64_LTOFF22 = 0x000A, - IMAGE_REL_IA64_SECTION = 0x000B, - IMAGE_REL_IA64_SECREL22 = 0x000C, - IMAGE_REL_IA64_SECREL64I = 0x000D, - IMAGE_REL_IA64_SECREL32 = 0x000E, - IMAGE_REL_IA64_DIR32NB = 0x0010, - IMAGE_REL_IA64_SREL14 = 0x0011, - IMAGE_REL_IA64_SREL22 = 0x0012, - IMAGE_REL_IA64_SREL32 = 0x0013, - IMAGE_REL_IA64_UREL32 = 0x0014, - IMAGE_REL_IA64_PCREL60X = 0x0015, - IMAGE_REL_IA64_PCREL60B = 0x0016, - IMAGE_REL_IA64_PCREL60F = 0x0017, - IMAGE_REL_IA64_PCREL60I = 0x0018, - IMAGE_REL_IA64_PCREL60M = 0x0019, - IMAGE_REL_IA64_IMMGPREL64 = 0x001A, - IMAGE_REL_IA64_TOKEN = 0x001B, - IMAGE_REL_IA64_GPREL32 = 0x001C, - IMAGE_REL_IA64_ADDEND = 0x001F -} - -enum : WORD { - IMAGE_REL_SH3_ABSOLUTE = 0x0000, - IMAGE_REL_SH3_DIRECT16 = 0x0001, - IMAGE_REL_SH3_DIRECT32 = 0x0002, - IMAGE_REL_SH3_DIRECT8 = 0x0003, - IMAGE_REL_SH3_DIRECT8_WORD = 0x0004, - IMAGE_REL_SH3_DIRECT8_LONG = 0x0005, - IMAGE_REL_SH3_DIRECT4 = 0x0006, - IMAGE_REL_SH3_DIRECT4_WORD = 0x0007, - IMAGE_REL_SH3_DIRECT4_LONG = 0x0008, - IMAGE_REL_SH3_PCREL8_WORD = 0x0009, - IMAGE_REL_SH3_PCREL8_LONG = 0x000A, - IMAGE_REL_SH3_PCREL12_WORD = 0x000B, - IMAGE_REL_SH3_STARTOF_SECTION = 0x000C, - IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D, - IMAGE_REL_SH3_SECTION = 0x000E, - IMAGE_REL_SH3_SECREL = 0x000F, - IMAGE_REL_SH3_DIRECT32_NB = 0x0010, - IMAGE_REL_SH3_GPREL4_LONG = 0x0011, - IMAGE_REL_SH3_TOKEN = 0x0012, - IMAGE_REL_SHM_PCRELPT = 0x0013, - IMAGE_REL_SHM_REFLO = 0x0014, - IMAGE_REL_SHM_REFHALF = 0x0015, - IMAGE_REL_SHM_RELLO = 0x0016, - IMAGE_REL_SHM_RELHALF = 0x0017, - IMAGE_REL_SHM_PAIR = 0x0018, - IMAGE_REL_SHM_NOMODE = 0x8000 -} - -enum : WORD { - IMAGE_REL_M32R_ABSOLUTE = 0x0000, - IMAGE_REL_M32R_ADDR32 = 0x0001, - IMAGE_REL_M32R_ADDR32NB = 0x0002, - IMAGE_REL_M32R_ADDR24 = 0x0003, - IMAGE_REL_M32R_GPREL16 = 0x0004, - IMAGE_REL_M32R_PCREL24 = 0x0005, - IMAGE_REL_M32R_PCREL16 = 0x0006, - IMAGE_REL_M32R_PCREL8 = 0x0007, - IMAGE_REL_M32R_REFHALF = 0x0008, - IMAGE_REL_M32R_REFHI = 0x0009, - IMAGE_REL_M32R_REFLO = 0x000A, - IMAGE_REL_M32R_PAIR = 0x000B, - IMAGE_REL_M32R_SECTION = 0x000C, - IMAGE_REL_M32R_SECREL = 0x000D, - IMAGE_REL_M32R_TOKEN = 0x000E -} - -enum : WORD { - IMAGE_REL_MIPS_ABSOLUTE = 0x0000, - IMAGE_REL_MIPS_REFHALF = 0x0001, - IMAGE_REL_MIPS_REFWORD = 0x0002, - IMAGE_REL_MIPS_JMPADDR = 0x0003, - IMAGE_REL_MIPS_REFHI = 0x0004, - IMAGE_REL_MIPS_REFLO = 0x0005, - IMAGE_REL_MIPS_GPREL = 0x0006, - IMAGE_REL_MIPS_LITERAL = 0x0007, - IMAGE_REL_MIPS_SECTION = 0x000A, - IMAGE_REL_MIPS_SECREL = 0x000B, - IMAGE_REL_MIPS_SECRELLO = 0x000C, - IMAGE_REL_MIPS_SECRELHI = 0x000D, - IMAGE_REL_MIPS_JMPADDR16 = 0x0010, - IMAGE_REL_MIPS_REFWORDNB = 0x0022, - IMAGE_REL_MIPS_PAIR = 0x0025 -} - - -enum : WORD { - IMAGE_REL_ALPHA_ABSOLUTE, - IMAGE_REL_ALPHA_REFLONG, - IMAGE_REL_ALPHA_REFQUAD, - IMAGE_REL_ALPHA_GPREL32, - IMAGE_REL_ALPHA_LITERAL, - IMAGE_REL_ALPHA_LITUSE, - IMAGE_REL_ALPHA_GPDISP, - IMAGE_REL_ALPHA_BRADDR, - IMAGE_REL_ALPHA_HINT, - IMAGE_REL_ALPHA_INLINE_REFLONG, - IMAGE_REL_ALPHA_REFHI, - IMAGE_REL_ALPHA_REFLO, - IMAGE_REL_ALPHA_PAIR, - IMAGE_REL_ALPHA_MATCH, - IMAGE_REL_ALPHA_SECTION, - IMAGE_REL_ALPHA_SECREL, - IMAGE_REL_ALPHA_REFLONGNB, - IMAGE_REL_ALPHA_SECRELLO, - IMAGE_REL_ALPHA_SECRELHI // = 18 -} - -enum : WORD { - IMAGE_REL_PPC_ABSOLUTE, - IMAGE_REL_PPC_ADDR64, - IMAGE_REL_PPC_ADDR32, - IMAGE_REL_PPC_ADDR24, - IMAGE_REL_PPC_ADDR16, - IMAGE_REL_PPC_ADDR14, - IMAGE_REL_PPC_REL24, - IMAGE_REL_PPC_REL14, - IMAGE_REL_PPC_TOCREL16, - IMAGE_REL_PPC_TOCREL14, - IMAGE_REL_PPC_ADDR32NB, - IMAGE_REL_PPC_SECREL, - IMAGE_REL_PPC_SECTION, - IMAGE_REL_PPC_IFGLUE, - IMAGE_REL_PPC_IMGLUE, - IMAGE_REL_PPC_SECREL16, - IMAGE_REL_PPC_REFHI, - IMAGE_REL_PPC_REFLO, - IMAGE_REL_PPC_PAIR // = 18 -} - -// ??? -const IMAGE_REL_PPC_TYPEMASK = 0x00FF; -const IMAGE_REL_PPC_NEG = 0x0100; -const IMAGE_REL_PPC_BRTAKEN = 0x0200; -const IMAGE_REL_PPC_BRNTAKEN = 0x0400; -const IMAGE_REL_PPC_TOCDEFN = 0x0800; - -enum { - IMAGE_REL_BASED_ABSOLUTE, - IMAGE_REL_BASED_HIGH, - IMAGE_REL_BASED_LOW, - IMAGE_REL_BASED_HIGHLOW, - IMAGE_REL_BASED_HIGHADJ, - IMAGE_REL_BASED_MIPS_JMPADDR -} -// End of constants documented in pecoff.doc - -const size_t IMAGE_ARCHIVE_START_SIZE = 8; - -const TCHAR[] - IMAGE_ARCHIVE_START = "!\n", - IMAGE_ARCHIVE_END = "`\n", - IMAGE_ARCHIVE_PAD = "\n", - IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", - IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; - -const IMAGE_ORDINAL_FLAG32 = 0x80000000; - -ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } -uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } - -bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { - return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; -} - -const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; - -bool IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal) { - return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; -} - -// ??? -const IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; -const IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; - -enum : DWORD { - IMAGE_DEBUG_TYPE_UNKNOWN, - IMAGE_DEBUG_TYPE_COFF, - IMAGE_DEBUG_TYPE_CODEVIEW, - IMAGE_DEBUG_TYPE_FPO, - IMAGE_DEBUG_TYPE_MISC, - IMAGE_DEBUG_TYPE_EXCEPTION, - IMAGE_DEBUG_TYPE_FIXUP, - IMAGE_DEBUG_TYPE_OMAP_TO_SRC, - IMAGE_DEBUG_TYPE_OMAP_FROM_SRC, - IMAGE_DEBUG_TYPE_BORLAND // = 9 -} - -enum : ubyte { - FRAME_FPO, - FRAME_TRAP, - FRAME_TSS, - FRAME_NONFPO -} - -// ??? -const IMAGE_DEBUG_MISC_EXENAME = 1; - -// ??? -const N_BTMASK = 0x000F; -const N_TMASK = 0x0030; -const N_TMASK1 = 0x00C0; -const N_TMASK2 = 0x00F0; -const N_BTSHFT = 4; -const N_TSHIFT = 2; - -const int - IS_TEXT_UNICODE_ASCII16 = 0x0001, - IS_TEXT_UNICODE_STATISTICS = 0x0002, - IS_TEXT_UNICODE_CONTROLS = 0x0004, - IS_TEXT_UNICODE_SIGNATURE = 0x0008, - IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010, - IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020, - IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040, - IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080, - IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100, - IS_TEXT_UNICODE_ODD_LENGTH = 0x0200, - IS_TEXT_UNICODE_NULL_BYTES = 0x1000, - IS_TEXT_UNICODE_UNICODE_MASK = 0x000F, - IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0, - IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, - IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; - -const DWORD - SERVICE_KERNEL_DRIVER = 0x0001, - SERVICE_FILE_SYSTEM_DRIVER = 0x0002, - SERVICE_ADAPTER = 0x0004, - SERVICE_RECOGNIZER_DRIVER = 0x0008, - SERVICE_WIN32_OWN_PROCESS = 0x0010, - SERVICE_WIN32_SHARE_PROCESS = 0x0020, - SERVICE_INTERACTIVE_PROCESS = 0x0100, - SERVICE_DRIVER = 0x000B, - SERVICE_WIN32 = 0x0030, - SERVICE_TYPE_ALL = 0x013F; - -enum : DWORD { - SERVICE_BOOT_START = 0, - SERVICE_SYSTEM_START = 1, - SERVICE_AUTO_START = 2, - SERVICE_DEMAND_START = 3, - SERVICE_DISABLED = 4 -} - -enum : DWORD { - SERVICE_ERROR_IGNORE = 0, - SERVICE_ERROR_NORMAL = 1, - SERVICE_ERROR_SEVERE = 2, - SERVICE_ERROR_CRITICAL = 3 -} - - -const uint - SE_OWNER_DEFAULTED = 0x0001, - SE_GROUP_DEFAULTED = 0x0002, - SE_DACL_PRESENT = 0x0004, - SE_DACL_DEFAULTED = 0x0008, - SE_SACL_PRESENT = 0x0010, - SE_SACL_DEFAULTED = 0x0020, - SE_DACL_AUTO_INHERIT_REQ = 0x0100, - SE_SACL_AUTO_INHERIT_REQ = 0x0200, - SE_DACL_AUTO_INHERITED = 0x0400, - SE_SACL_AUTO_INHERITED = 0x0800, - SE_DACL_PROTECTED = 0x1000, - SE_SACL_PROTECTED = 0x2000, - SE_SELF_RELATIVE = 0x8000; - -enum SECURITY_IMPERSONATION_LEVEL { - SecurityAnonymous, - SecurityIdentification, - SecurityImpersonation, - SecurityDelegation -} -alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; - -alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; -alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; - -const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; - -const DWORD - SECURITY_DESCRIPTOR_REVISION = 1, - SECURITY_DESCRIPTOR_REVISION1 = 1; - -const DWORD - SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, - SE_PRIVILEGE_ENABLED = 0x00000002, - SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; - -const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; - -const SECURITY_IMPERSONATION_LEVEL - SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, - DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; - -const BOOLEAN - SECURITY_DYNAMIC_TRACKING = true, - SECURITY_STATIC_TRACKING = false; - -// also in ddk/ntifs.h -const DWORD - TOKEN_ASSIGN_PRIMARY = 0x0001, - TOKEN_DUPLICATE = 0x0002, - TOKEN_IMPERSONATE = 0x0004, - TOKEN_QUERY = 0x0008, - TOKEN_QUERY_SOURCE = 0x0010, - TOKEN_ADJUST_PRIVILEGES = 0x0020, - TOKEN_ADJUST_GROUPS = 0x0040, - TOKEN_ADJUST_DEFAULT = 0x0080, - - TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED - | TOKEN_ASSIGN_PRIMARY - | TOKEN_DUPLICATE - | TOKEN_IMPERSONATE - | TOKEN_QUERY - | TOKEN_QUERY_SOURCE - | TOKEN_ADJUST_PRIVILEGES - | TOKEN_ADJUST_GROUPS - | TOKEN_ADJUST_DEFAULT, - TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY, - TOKEN_WRITE = STANDARD_RIGHTS_WRITE - | TOKEN_ADJUST_PRIVILEGES - | TOKEN_ADJUST_GROUPS - | TOKEN_ADJUST_DEFAULT, - TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; - -const size_t TOKEN_SOURCE_LENGTH = 8; -// end ddk/ntifs.h - -enum : DWORD { - DLL_PROCESS_DETACH, - DLL_PROCESS_ATTACH, - DLL_THREAD_ATTACH, - DLL_THREAD_DETACH -} - -enum : DWORD { - DBG_CONTINUE = 0x00010002, - DBG_TERMINATE_THREAD = 0x40010003, - DBG_TERMINATE_PROCESS = 0x40010004, - DBG_CONTROL_C = 0x40010005, - DBG_CONTROL_BREAK = 0x40010008, - DBG_EXCEPTION_NOT_HANDLED = 0x80010001 -} - -enum : DWORD { - TAPE_ABSOLUTE_POSITION, - TAPE_LOGICAL_POSITION, - TAPE_PSEUDO_LOGICAL_POSITION -} - -enum : DWORD { - TAPE_REWIND, - TAPE_ABSOLUTE_BLOCK, - TAPE_LOGICAL_BLOCK, - TAPE_PSEUDO_LOGICAL_BLOCK, - TAPE_SPACE_END_OF_DATA, - TAPE_SPACE_RELATIVE_BLOCKS, - TAPE_SPACE_FILEMARKS, - TAPE_SPACE_SEQUENTIAL_FMKS, - TAPE_SPACE_SETMARKS, - TAPE_SPACE_SEQUENTIAL_SMKS -} - -const DWORD - TAPE_DRIVE_FIXED = 0x00000001, - TAPE_DRIVE_SELECT = 0x00000002, - TAPE_DRIVE_INITIATOR = 0x00000004, - TAPE_DRIVE_ERASE_SHORT = 0x00000010, - TAPE_DRIVE_ERASE_LONG = 0x00000020, - TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040, - TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080, - TAPE_DRIVE_TAPE_CAPACITY = 0x00000100, - TAPE_DRIVE_TAPE_REMAINING = 0x00000200, - TAPE_DRIVE_FIXED_BLOCK = 0x00000400, - TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800, - TAPE_DRIVE_WRITE_PROTECT = 0x00001000, - TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000, - TAPE_DRIVE_ECC = 0x00010000, - TAPE_DRIVE_COMPRESSION = 0x00020000, - TAPE_DRIVE_PADDING = 0x00040000, - TAPE_DRIVE_REPORT_SMKS = 0x00080000, - TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, - TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000, - TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000, - TAPE_DRIVE_EJECT_MEDIA = 0x01000000, - TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000, - TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, - TAPE_DRIVE_RESERVED_BIT = 0x80000000; - -const DWORD - TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, - TAPE_DRIVE_TENSION = 0x80000002, - TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, - TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, - TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010, - TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020, - TAPE_DRIVE_TENSION_IMMED = 0x80000040, - TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080, - TAPE_DRIVE_SET_ECC = 0x80000100, - TAPE_DRIVE_SET_COMPRESSION = 0x80000200, - TAPE_DRIVE_SET_PADDING = 0x80000400, - TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800, - TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000, - TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000, - TAPE_DRIVE_LOGICAL_BLK = 0x80004000, - TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000, - TAPE_DRIVE_END_OF_DATA = 0x80010000, - TAPE_DRIVE_RELATIVE_BLKS = 0x80020000, - TAPE_DRIVE_FILEMARKS = 0x80040000, - TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000, - TAPE_DRIVE_SETMARKS = 0x80100000, - TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000, - TAPE_DRIVE_REVERSE_POSITION = 0x80400000, - TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000, - TAPE_DRIVE_WRITE_SETMARKS = 0x81000000, - TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000, - TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, - TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000, - TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, - TAPE_DRIVE_FORMAT = 0xA0000000, - TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, - TAPE_DRIVE_HIGH_FEATURES = 0x80000000; - -enum : DWORD { - TAPE_FIXED_PARTITIONS = 0, - TAPE_SELECT_PARTITIONS = 1, - TAPE_INITIATOR_PARTITIONS = 2 -} - -enum : DWORD { - TAPE_SETMARKS, - TAPE_FILEMARKS, - TAPE_SHORT_FILEMARKS, - TAPE_LONG_FILEMARKS -} - -enum : DWORD { - TAPE_ERASE_SHORT, - TAPE_ERASE_LONG -} - -enum : DWORD { - TAPE_LOAD, - TAPE_UNLOAD, - TAPE_TENSION, - TAPE_LOCK, - TAPE_UNLOCK, - TAPE_FORMAT -} - -enum : ULONG32 { - VER_PLATFORM_WIN32s, - VER_PLATFORM_WIN32_WINDOWS, - VER_PLATFORM_WIN32_NT -} - -enum : UCHAR { - VER_NT_WORKSTATION = 1, - VER_NT_DOMAIN_CONTROLLER, - VER_NT_SERVER -} - -const USHORT - VER_SUITE_SMALLBUSINESS = 0x0001, - VER_SUITE_ENTERPRISE = 0x0002, - VER_SUITE_BACKOFFICE = 0x0004, - VER_SUITE_TERMINAL = 0x0010, - VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, - VER_SUITE_EMBEDDEDNT = 0x0040, - VER_SUITE_DATACENTER = 0x0080, - VER_SUITE_SINGLEUSERTS = 0x0100, - VER_SUITE_PERSONAL = 0x0200, - VER_SUITE_BLADE = 0x0400, - VER_SUITE_STORAGE_SERVER = 0x2000, - VER_SUITE_COMPUTE_SERVER = 0x4000; - -const ULONG - WT_EXECUTEDEFAULT = 0x00000000, - WT_EXECUTEINIOTHREAD = 0x00000001, - WT_EXECUTEINWAITTHREAD = 0x00000004, - WT_EXECUTEONLYONCE = 0x00000008, - WT_EXECUTELONGFUNCTION = 0x00000010, - WT_EXECUTEINTIMERTHREAD = 0x00000020, - WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, - WT_TRANSFER_IMPERSONATION = 0x00000100; - -static if (_WIN32_WINNT_ONLY) { - static if (_WIN32_WINNT >= 0x500) { - const DWORD - VER_MINORVERSION = 0x01, - VER_MAJORVERSION = 0x02, - VER_BUILDNUMBER = 0x04, - VER_PLATFORMID = 0x08, - VER_SERVICEPACKMINOR = 0x10, - VER_SERVICEPACKMAJOR = 0x20, - VER_SUITENAME = 0x40, - VER_PRODUCT_TYPE = 0x80; - - enum : DWORD { - VER_EQUAL = 1, - VER_GREATER, - VER_GREATER_EQUAL, - VER_LESS, - VER_LESS_EQUAL, - VER_AND, - VER_OR // = 7 - } - } - - static if (_WIN32_WINNT >= 0x501) { - enum : ULONG { - ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1, - ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, - ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 - ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 - } - } -} - -// Macros -BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); } -bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } -bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } -bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } -bool ISTAG(uint x) { - return x == IMAGE_SYM_CLASS_STRUCT_TAG - || x == IMAGE_SYM_CLASS_UNION_TAG - || x == IMAGE_SYM_CLASS_ENUM_TAG; -} -uint INCREF(uint x) { - return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) - | (x & N_BTMASK); -} -uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } - -const DWORD TLS_MINIMUM_AVAILABLE = 64; - -const ULONG - IO_REPARSE_TAG_RESERVED_ZERO = 0, - IO_REPARSE_TAG_RESERVED_ONE = 1, - IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, - IO_REPARSE_TAG_SYMBOLIC_LINK = IO_REPARSE_TAG_RESERVED_ZERO, - IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003, - IO_REPARSE_TAG_SYMLINK = 0xA000000C, - IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; - -/* Although these are semantically boolean, they are documented and - * implemented to return ULONG; this behaviour is preserved for compatibility - */ -ULONG IsReparseTagMicrosoft(ULONG x) { return x & 0x80000000; } -ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } -ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } - -bool IsReparseTagValid(ULONG x) { - return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); -} - -// Doesn't seem to make sense, but anyway.... -ULONG WT_SET_MAX_THREADPOOL_THREADS(ref ULONG Flags, ushort Limit) { - return Flags |= Limit << 16; -} - -import win32.basetyps; -/* also in win32.basetyps -struct GUID { - uint Data1; - ushort Data2; - ushort Data3; - ubyte Data4[8]; -} -alias GUID* REFGUID, LPGUID; -*/ - -struct GENERIC_MAPPING { - ACCESS_MASK GenericRead; - ACCESS_MASK GenericWrite; - ACCESS_MASK GenericExecute; - ACCESS_MASK GenericAll; -} -alias GENERIC_MAPPING* PGENERIC_MAPPING; - -struct ACE_HEADER { - BYTE AceType; - BYTE AceFlags; - WORD AceSize; -} -alias ACE_HEADER* PACE_HEADER; - -struct ACCESS_ALLOWED_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} -alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; - -struct ACCESS_DENIED_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} -alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; - -struct SYSTEM_AUDIT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} -alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; - -struct SYSTEM_ALARM_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} -alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; - -struct ACCESS_ALLOWED_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} -alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; - -struct ACCESS_DENIED_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} -alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; - -struct SYSTEM_AUDIT_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} -alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; - -struct SYSTEM_ALARM_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} -alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; - -struct ACL { - BYTE AclRevision; - BYTE Sbz1; - WORD AclSize; - WORD AceCount; - WORD Sbz2; -} -alias ACL* PACL; - -struct ACL_REVISION_INFORMATION { - DWORD AclRevision; -} - -struct ACL_SIZE_INFORMATION { - DWORD AceCount; - DWORD AclBytesInUse; - DWORD AclBytesFree; -} - -version (X86) { - // ??? - const SIZE_OF_80387_REGISTERS = 80; - const CONTEXT_i386 = 0x010000; - const CONTEXT_i486 = 0x010000; - const CONTEXT_CONTROL = CONTEXT_i386 | 0x01; - const CONTEXT_INTEGER = CONTEXT_i386 | 0x02; - const CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; - const CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; - const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; - const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; - const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; - const MAXIMUM_SUPPORTED_EXTENSION = 512; - - struct FLOATING_SAVE_AREA { - DWORD ControlWord; - DWORD StatusWord; - DWORD TagWord; - DWORD ErrorOffset; - DWORD ErrorSelector; - DWORD DataOffset; - DWORD DataSelector; - BYTE[80] RegisterArea; - DWORD Cr0NpxState; - } - - 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; - BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; - } - -} else { - static assert(false, "Unsupported CPU"); - // Versions for PowerPC, Alpha, SHX, and MIPS removed. -} - -alias CONTEXT* PCONTEXT, LPCONTEXT; - -struct EXCEPTION_RECORD { - DWORD ExceptionCode; - DWORD ExceptionFlags; - EXCEPTION_RECORD* ExceptionRecord; - PVOID ExceptionAddress; - DWORD NumberParameters; - DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; -} -alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; - -struct EXCEPTION_POINTERS { - PEXCEPTION_RECORD ExceptionRecord; - PCONTEXT ContextRecord; -} -alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; - -union LARGE_INTEGER { - struct { - uint LowPart; - int HighPart; - } - long QuadPart; -} -alias LARGE_INTEGER* PLARGE_INTEGER; - -union ULARGE_INTEGER { - struct { - uint LowPart; - uint HighPart; - } - ulong QuadPart; -} -alias ULARGE_INTEGER* PULARGE_INTEGER; - -alias LARGE_INTEGER LUID; -alias LUID* PLUID; - -const LUID SYSTEM_LUID = { QuadPart:999 }; - -align(4) struct LUID_AND_ATTRIBUTES { - LUID Luid; - DWORD Attributes; -} -alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; - -struct PRIVILEGE_SET { - DWORD PrivilegeCount; - DWORD Control; - LUID_AND_ATTRIBUTES _Privilege; - - LUID_AND_ATTRIBUTES* Privilege() { return &_Privilege; } -} -alias PRIVILEGE_SET* PPRIVILEGE_SET; - -struct SECURITY_ATTRIBUTES { - DWORD nLength; - LPVOID lpSecurityDescriptor; - BOOL bInheritHandle; -} -alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; - -struct SECURITY_QUALITY_OF_SERVICE { - DWORD Length; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; - BOOLEAN EffectiveOnly; -} -alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; - -alias PVOID PACCESS_TOKEN; - -struct SE_IMPERSONATION_STATE { - PACCESS_TOKEN Token; - BOOLEAN CopyOnOpen; - BOOLEAN EffectiveOnly; - SECURITY_IMPERSONATION_LEVEL Level; -} -alias SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; - -struct SID_IDENTIFIER_AUTHORITY { - BYTE[6] Value; -} -alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY, LPSID_IDENTIFIER_AUTHORITY; - -alias PVOID PSID; - -struct SID { - BYTE Revision; - BYTE SubAuthorityCount; - SID_IDENTIFIER_AUTHORITY IdentifierAuthority; - DWORD _SubAuthority; - - DWORD* SubAuthority() { return &_SubAuthority; } -} -alias SID* PISID; - -struct SID_AND_ATTRIBUTES { - PSID Sid; - DWORD Attributes; -} -alias SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; - -struct TOKEN_SOURCE { - CHAR[TOKEN_SOURCE_LENGTH] SourceName; - LUID SourceIdentifier; -} -alias TOKEN_SOURCE* PTOKEN_SOURCE; - -struct TOKEN_CONTROL { - LUID TokenId; - LUID AuthenticationId; - LUID ModifiedId; - TOKEN_SOURCE TokenSource; -} -alias TOKEN_CONTROL* PTOKEN_CONTROL; - -struct TOKEN_DEFAULT_DACL { - PACL DefaultDacl; -} -alias TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; - -struct TOKEN_GROUPS { - DWORD GroupCount; - SID_AND_ATTRIBUTES _Groups; - - SID_AND_ATTRIBUTES* Groups() { return &_Groups; } -} -alias TOKEN_GROUPS* PTOKEN_GROUPS, LPTOKEN_GROUPS; - -struct TOKEN_OWNER { - PSID Owner; -} -alias TOKEN_OWNER* PTOKEN_OWNER; - -struct TOKEN_PRIMARY_GROUP { - PSID PrimaryGroup; -} -alias TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; - -struct TOKEN_PRIVILEGES { - DWORD PrivilegeCount; - LUID_AND_ATTRIBUTES _Privileges; - - LUID_AND_ATTRIBUTES* Privileges() { return &_Privileges; } -} -alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES, LPTOKEN_PRIVILEGES; - -enum TOKEN_TYPE { - TokenPrimary = 1, - TokenImpersonation -} -alias TOKEN_TYPE* PTOKEN_TYPE; - -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* PTOKEN_STATISTICS; - -struct TOKEN_USER { - SID_AND_ATTRIBUTES User; -} -alias TOKEN_USER* PTOKEN_USER; - -alias DWORD SECURITY_INFORMATION; -alias SECURITY_INFORMATION* PSECURITY_INFORMATION; -alias WORD SECURITY_DESCRIPTOR_CONTROL; -alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL; - -struct SECURITY_DESCRIPTOR { - BYTE Revision; - BYTE Sbz1; - SECURITY_DESCRIPTOR_CONTROL Control; - PSID Owner; - PSID Group; - PACL Sacl; - PACL Dacl; -} -alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR, PISECURITY_DESCRIPTOR; - -enum TOKEN_INFORMATION_CLASS { - TokenUser = 1, - TokenGroups, - TokenPrivileges, - TokenOwner, - TokenPrimaryGroup, - TokenDefaultDacl, - TokenSource, - TokenType, - TokenImpersonationLevel, - TokenStatistics, - TokenRestrictedSids, - TokenSessionId, - TokenGroupsAndPrivileges, - TokenSessionReference, - TokenSandBoxInert, - TokenAuditPolicy, - TokenOrigin -} - -enum SID_NAME_USE { - SidTypeUser = 1, - SidTypeGroup, - SidTypeDomain, - SidTypeAlias, - SidTypeWellKnownGroup, - SidTypeDeletedAccount, - SidTypeInvalid, - SidTypeUnknown, - SidTypeComputer -} -alias SID_NAME_USE* PSID_NAME_USE; - -struct QUOTA_LIMITS { - SIZE_T PagedPoolLimit; - SIZE_T NonPagedPoolLimit; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - SIZE_T PagefileLimit; - LARGE_INTEGER TimeLimit; -} -alias QUOTA_LIMITS* PQUOTA_LIMITS; - -struct IO_COUNTERS { - ULONGLONG ReadOperationCount; - ULONGLONG WriteOperationCount; - ULONGLONG OtherOperationCount; - ULONGLONG ReadTransferCount; - ULONGLONG WriteTransferCount; - ULONGLONG OtherTransferCount; -} -alias IO_COUNTERS* PIO_COUNTERS; - -struct FILE_NOTIFY_INFORMATION { - DWORD NextEntryOffset; - DWORD Action; - DWORD FileNameLength; - WCHAR _FileName; - - WCHAR* FileName() { return &_FileName; } -} -alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; - -struct TAPE_ERASE { - DWORD Type; - BOOLEAN Immediate; -} -alias TAPE_ERASE* PTAPE_ERASE; - -struct TAPE_GET_DRIVE_PARAMETERS { - BOOLEAN ECC; - BOOLEAN Compression; - BOOLEAN DataPadding; - BOOLEAN ReportSetmarks; - DWORD DefaultBlockSize; - DWORD MaximumBlockSize; - DWORD MinimumBlockSize; - DWORD MaximumPartitionCount; - DWORD FeaturesLow; - DWORD FeaturesHigh; - DWORD EOTWarningZoneSize; -} -alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; - -struct TAPE_GET_MEDIA_PARAMETERS { - LARGE_INTEGER Capacity; - LARGE_INTEGER Remaining; - DWORD BlockSize; - DWORD PartitionCount; - BOOLEAN WriteProtected; -} -alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; - -struct TAPE_GET_POSITION { - ULONG Type; - ULONG Partition; - ULONG OffsetLow; - ULONG OffsetHigh; -} -alias TAPE_GET_POSITION* PTAPE_GET_POSITION; - -struct TAPE_PREPARE { - DWORD Operation; - BOOLEAN Immediate; -} -alias TAPE_PREPARE* PTAPE_PREPARE; - -struct TAPE_SET_DRIVE_PARAMETERS { - BOOLEAN ECC; - BOOLEAN Compression; - BOOLEAN DataPadding; - BOOLEAN ReportSetmarks; - ULONG EOTWarningZoneSize; -} -alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; - -struct TAPE_SET_MEDIA_PARAMETERS { - ULONG BlockSize; -} -alias TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; - -struct TAPE_SET_POSITION { - DWORD Method; - DWORD Partition; - LARGE_INTEGER Offset; - BOOLEAN Immediate; -} -alias TAPE_SET_POSITION* PTAPE_SET_POSITION; - -struct TAPE_WRITE_MARKS { - DWORD Type; - DWORD Count; - BOOLEAN Immediate; -} -alias TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; - -struct TAPE_CREATE_PARTITION { - DWORD Method; - DWORD Count; - DWORD Size; -} -alias TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; - -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; - -struct MESSAGE_RESOURCE_ENTRY { - WORD Length; - WORD Flags; - BYTE _Text; - - BYTE* Text() { return &_Text; } -} -alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; - -struct MESSAGE_RESOURCE_BLOCK { - DWORD LowId; - DWORD HighId; - DWORD OffsetToEntries; -} -alias MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; - -struct MESSAGE_RESOURCE_DATA { - DWORD NumberOfBlocks; - MESSAGE_RESOURCE_BLOCK _Blocks; - - MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } -} -alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; - -struct LIST_ENTRY { - LIST_ENTRY* Flink; - LIST_ENTRY* Blink; -} -alias LIST_ENTRY* PLIST_ENTRY; - -struct SINGLE_LIST_ENTRY { - SINGLE_LIST_ENTRY* Next; -} -alias SINGLE_LIST_ENTRY SLIST_ENTRY; -alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; - -union SLIST_HEADER { - ULONGLONG Alignment; - struct { - SLIST_ENTRY Next; - WORD Depth; - WORD Sequence; - } -} -alias SLIST_HEADER* PSLIST_HEADER; - -struct RTL_CRITICAL_SECTION_DEBUG { - WORD Type; - WORD CreatorBackTraceIndex; - RTL_CRITICAL_SECTION* CriticalSection; - LIST_ENTRY ProcessLocksList; - DWORD EntryCount; - DWORD ContentionCount; - DWORD[2] Spare; -} -alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; - -struct RTL_CRITICAL_SECTION { - PRTL_CRITICAL_SECTION_DEBUG DebugInfo; - LONG LockCount; - LONG RecursionCount; - HANDLE OwningThread; - HANDLE LockSemaphore; - DWORD Reserved; -} -alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; - -struct EVENTLOGRECORD { - DWORD Length; - DWORD Reserved; - DWORD RecordNumber; - DWORD TimeGenerated; - DWORD TimeWritten; - DWORD EventID; - WORD EventType; - WORD NumStrings; - WORD EventCategory; - WORD ReservedFlags; - DWORD ClosingRecordNumber; - DWORD StringOffset; - DWORD UserSidLength; - DWORD UserSidOffset; - DWORD DataLength; - DWORD DataOffset; -} -alias EVENTLOGRECORD* PEVENTLOGRECORD; - -struct OSVERSIONINFOA { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - CHAR[128] szCSDVersion; -} -alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; - -struct OSVERSIONINFOW { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - WCHAR[128] szCSDVersion; -} -alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; - -struct OSVERSIONINFOEXA { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - CHAR[128] szCSDVersion; - WORD wServicePackMajor; - WORD wServicePackMinor; - WORD wSuiteMask; - BYTE wProductType; - BYTE wReserved; -} -alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; - -struct OSVERSIONINFOEXW { - DWORD dwOSVersionInfoSize; - DWORD dwMajorVersion; - DWORD dwMinorVersion; - DWORD dwBuildNumber; - DWORD dwPlatformId; - WCHAR[128] szCSDVersion; - WORD wServicePackMajor; - WORD wServicePackMinor; - WORD wSuiteMask; - BYTE wProductType; - BYTE wReserved; -} -alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; - -align(2) struct IMAGE_VXD_HEADER { - WORD e32_magic; - BYTE e32_border; - BYTE e32_worder; - DWORD e32_level; - WORD e32_cpu; - WORD e32_os; - DWORD e32_ver; - DWORD e32_mflags; - DWORD e32_mpages; - DWORD e32_startobj; - DWORD e32_eip; - DWORD e32_stackobj; - DWORD e32_esp; - DWORD e32_pagesize; - DWORD e32_lastpagesize; - DWORD e32_fixupsize; - DWORD e32_fixupsum; - DWORD e32_ldrsize; - DWORD e32_ldrsum; - DWORD e32_objtab; - DWORD e32_objcnt; - DWORD e32_objmap; - DWORD e32_itermap; - DWORD e32_rsrctab; - DWORD e32_rsrccnt; - DWORD e32_restab; - DWORD e32_enttab; - DWORD e32_dirtab; - DWORD e32_dircnt; - DWORD e32_fpagetab; - DWORD e32_frectab; - DWORD e32_impmod; - DWORD e32_impmodcnt; - DWORD e32_impproc; - DWORD e32_pagesum; - DWORD e32_datapage; - DWORD e32_preload; - DWORD e32_nrestab; - DWORD e32_cbnrestab; - DWORD e32_nressum; - DWORD e32_autodata; - DWORD e32_debuginfo; - DWORD e32_debuglen; - DWORD e32_instpreload; - DWORD e32_instdemand; - DWORD e32_heapsize; - BYTE[12] e32_res3; - DWORD e32_winresoff; - DWORD e32_winreslen; - WORD e32_devid; - WORD e32_ddkver; -} -alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; - -align(4): -struct IMAGE_FILE_HEADER { - WORD Machine; - WORD NumberOfSections; - DWORD TimeDateStamp; - DWORD PointerToSymbolTable; - DWORD NumberOfSymbols; - WORD SizeOfOptionalHeader; - WORD Characteristics; -} -alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; -// const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; - -struct IMAGE_DATA_DIRECTORY { - DWORD VirtualAddress; - DWORD Size; -} -alias IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; - -struct IMAGE_OPTIONAL_HEADER32 { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - DWORD BaseOfData; - DWORD ImageBase; - DWORD SectionAlignment; - DWORD FileAlignment; - WORD MajorOperatingSystemVersion; - WORD MinorOperatingSystemVersion; - WORD MajorImageVersion; - WORD MinorImageVersion; - WORD MajorSubsystemVersion; - WORD MinorSubsystemVersion; - DWORD Win32VersionValue; - DWORD SizeOfImage; - DWORD SizeOfHeaders; - DWORD CheckSum; - WORD Subsystem; - WORD DllCharacteristics; - DWORD SizeOfStackReserve; - DWORD SizeOfStackCommit; - DWORD SizeOfHeapReserve; - DWORD SizeOfHeapCommit; - DWORD LoaderFlags; - DWORD NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; -} -alias IMAGE_OPTIONAL_HEADER32* PIMAGE_OPTIONAL_HEADER32; - -struct IMAGE_OPTIONAL_HEADER64 { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - ULONGLONG ImageBase; - DWORD SectionAlignment; - DWORD FileAlignment; - WORD MajorOperatingSystemVersion; - WORD MinorOperatingSystemVersion; - WORD MajorImageVersion; - WORD MinorImageVersion; - WORD MajorSubsystemVersion; - WORD MinorSubsystemVersion; - DWORD Win32VersionValue; - DWORD SizeOfImage; - DWORD SizeOfHeaders; - DWORD CheckSum; - WORD Subsystem; - WORD DllCharacteristics; - ULONGLONG SizeOfStackReserve; - ULONGLONG SizeOfStackCommit; - ULONGLONG SizeOfHeapReserve; - ULONGLONG SizeOfHeapCommit; - DWORD LoaderFlags; - DWORD NumberOfRvaAndSizes; - IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; -} -alias IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; - -struct IMAGE_ROM_OPTIONAL_HEADER { - WORD Magic; - BYTE MajorLinkerVersion; - BYTE MinorLinkerVersion; - DWORD SizeOfCode; - DWORD SizeOfInitializedData; - DWORD SizeOfUninitializedData; - DWORD AddressOfEntryPoint; - DWORD BaseOfCode; - DWORD BaseOfData; - DWORD BaseOfBss; - DWORD GprMask; - DWORD[4] CprMask; - DWORD GpValue; -} -alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; - -align(2): -struct IMAGE_DOS_HEADER { - WORD e_magic; - WORD e_cblp; - WORD e_cp; - WORD e_crlc; - WORD e_cparhdr; - WORD e_minalloc; - WORD e_maxalloc; - WORD e_ss; - WORD e_sp; - WORD e_csum; - WORD e_ip; - WORD e_cs; - WORD e_lfarlc; - WORD e_ovno; - WORD[4] e_res; - WORD e_oemid; - WORD e_oeminfo; - WORD[10] e_res2; - LONG e_lfanew; -} -alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; - -struct IMAGE_OS2_HEADER { - WORD ne_magic; - CHAR ne_ver; - CHAR ne_rev; - WORD ne_enttab; - WORD ne_cbenttab; - LONG ne_crc; - WORD ne_flags; - WORD ne_autodata; - WORD ne_heap; - WORD ne_stack; - LONG ne_csip; - LONG ne_sssp; - WORD ne_cseg; - WORD ne_cmod; - WORD ne_cbnrestab; - WORD ne_segtab; - WORD ne_rsrctab; - WORD ne_restab; - WORD ne_modtab; - WORD ne_imptab; - LONG ne_nrestab; - WORD ne_cmovent; - WORD ne_align; - WORD ne_cres; - BYTE ne_exetyp; - BYTE ne_flagsothers; - WORD ne_pretthunks; - WORD ne_psegrefbytes; - WORD ne_swaparea; - WORD ne_expver; -} -alias IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; - -align(4) struct IMAGE_NT_HEADERS32 { - DWORD Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER OptionalHeader; -} -alias IMAGE_NT_HEADERS32* PIMAGE_NT_HEADERS32; - -align(4) struct IMAGE_NT_HEADERS64 { - DWORD Signature; - IMAGE_FILE_HEADER FileHeader; - IMAGE_OPTIONAL_HEADER OptionalHeader; -} -alias IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; - -struct IMAGE_ROM_HEADERS { - IMAGE_FILE_HEADER FileHeader; - IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; -} -alias IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; - -struct IMAGE_SECTION_HEADER { - BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; - union _Misc { - DWORD PhysicalAddress; - DWORD VirtualSize; - } - _Misc Misc; - DWORD VirtualAddress; - DWORD SizeOfRawData; - DWORD PointerToRawData; - DWORD PointerToRelocations; - DWORD PointerToLinenumbers; - WORD NumberOfRelocations; - WORD NumberOfLinenumbers; - DWORD Characteristics; -} -alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; - -struct IMAGE_SYMBOL { - union _N { - BYTE[8] ShortName; - struct Name { - DWORD Short; - DWORD Long; - } - PBYTE[2] LongName; - } - _N N; - DWORD Value; - SHORT SectionNumber; - WORD Type; - BYTE StorageClass; - BYTE NumberOfAuxSymbols; -} -alias IMAGE_SYMBOL* PIMAGE_SYMBOL; - -union IMAGE_AUX_SYMBOL { - struct _Sym { - DWORD TagIndex; - union _Misc { - struct _LnSz { - WORD Linenumber; - WORD Size; - } - _LnSz LnSz; - DWORD TotalSize; - } - _Misc Misc; - union _FcnAry { - struct _Function { - DWORD PointerToLinenumber; - DWORD PointerToNextFunction; - } - _Function Function; - struct _Array { - WORD[4] Dimension; - } - _Array Array; - } - _FcnAry FcnAry; - WORD TvIndex; - } - _Sym Sym; - struct _File { - BYTE[IMAGE_SIZEOF_SYMBOL] Name; - } - _File File; - struct _Section { - DWORD Length; - WORD NumberOfRelocations; - WORD NumberOfLinenumbers; - DWORD CheckSum; - SHORT Number; - BYTE Selection; - } - _Section Section; -} -alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; - -struct IMAGE_COFF_SYMBOLS_HEADER { - DWORD NumberOfSymbols; - DWORD LvaToFirstSymbol; - DWORD NumberOfLinenumbers; - DWORD LvaToFirstLinenumber; - DWORD RvaToFirstByteOfCode; - DWORD RvaToLastByteOfCode; - DWORD RvaToFirstByteOfData; - DWORD RvaToLastByteOfData; -} -alias IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; - -struct IMAGE_RELOCATION { - union { - DWORD VirtualAddress; - DWORD RelocCount; - } - DWORD SymbolTableIndex; - WORD Type; -} -alias IMAGE_RELOCATION* PIMAGE_RELOCATION; - -align(4) struct IMAGE_BASE_RELOCATION { - DWORD VirtualAddress; - DWORD SizeOfBlock; -} -alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; - -align(2) struct IMAGE_LINENUMBER { - union _Type { - DWORD SymbolTableIndex; - DWORD VirtualAddress; - } - _Type Type; - WORD Linenumber; -} -alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; - -align(4): -struct IMAGE_ARCHIVE_MEMBER_HEADER { - BYTE[16] Name; - BYTE[12] Date; - BYTE[6] UserID; - BYTE[6] GroupID; - BYTE[8] Mode; - BYTE[10] Size; - BYTE[2] EndHeader; -} -alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; - -struct IMAGE_EXPORT_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD Name; - DWORD Base; - DWORD NumberOfFunctions; - DWORD NumberOfNames; - DWORD AddressOfFunctions; - DWORD AddressOfNames; - DWORD AddressOfNameOrdinals; -} -alias IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; - -struct IMAGE_IMPORT_BY_NAME { - WORD Hint; - BYTE _Name; - - BYTE* Name() { - return &_Name; - } -} -alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; - -struct IMAGE_THUNK_DATA32 { - union _u1 { - DWORD ForwarderString; - DWORD Function; - DWORD Ordinal; - DWORD AddressOfData; - } - _u1 u1; -} -alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; - -struct IMAGE_THUNK_DATA64 { - union _u1 { - ULONGLONG ForwarderString; - ULONGLONG Function; - ULONGLONG Ordinal; - ULONGLONG AddressOfData; - } - _u1 u1; -} -alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; - -struct IMAGE_IMPORT_DESCRIPTOR { - union { - DWORD Characteristics; - DWORD OriginalFirstThunk; - } - DWORD TimeDateStamp; - DWORD ForwarderChain; - DWORD Name; - DWORD FirstThunk; -} -alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; - -struct IMAGE_BOUND_IMPORT_DESCRIPTOR { - DWORD TimeDateStamp; - WORD OffsetModuleName; - WORD NumberOfModuleForwarderRefs; -} -alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; - -struct IMAGE_BOUND_FORWARDER_REF { - DWORD TimeDateStamp; - WORD OffsetModuleName; - WORD Reserved; -} -alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; - -struct IMAGE_TLS_DIRECTORY32 { - DWORD StartAddressOfRawData; - DWORD EndAddressOfRawData; - DWORD AddressOfIndex; - DWORD AddressOfCallBacks; - DWORD SizeOfZeroFill; - DWORD Characteristics; -} -alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; - -struct IMAGE_TLS_DIRECTORY64 { - ULONGLONG StartAddressOfRawData; - ULONGLONG EndAddressOfRawData; - ULONGLONG AddressOfIndex; - ULONGLONG AddressOfCallBacks; - DWORD SizeOfZeroFill; - DWORD Characteristics; -} -alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; - -struct IMAGE_RESOURCE_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - WORD NumberOfNamedEntries; - WORD NumberOfIdEntries; -} -alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; - -struct IMAGE_RESOURCE_DIRECTORY_ENTRY { - union { - /+struct { - DWORD NameOffset:31; - DWORD NameIsString:1; - }+/ - DWORD Name; - WORD Id; - } - DWORD OffsetToData; - /+struct { - DWORD OffsetToDirectory:31; - DWORD DataIsDirectory:1; - }+/ - - uint NameOffset() { return Name & 0x7FFFFFFF; } - bool NameIsString() { return cast(bool)(Name & 0x80000000); } - uint OffsetToDirectory() { return OffsetToData & 0x7FFFFFFF; } - bool DataIsDirectory() { return cast(bool)(OffsetToData & 0x80000000); } - - uint NameOffset(uint n) { - Name = (Name & 0x80000000) | (n & 0x7FFFFFFF); - return n & 0x7FFFFFFF; - } - - bool NameIsString(bool n) { - Name = (Name & 0x7FFFFFFF) | (n << 31); return n; - } - - uint OffsetToDirectory(uint o) { - OffsetToData = (OffsetToData & 0x80000000) | (o & 0x7FFFFFFF); - return o & 0x7FFFFFFF; - } - - bool DataIsDirectory(bool d) { - OffsetToData = (OffsetToData & 0x7FFFFFFF) | (d << 31); return d; - } -} -alias IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY; - -struct IMAGE_RESOURCE_DIRECTORY_STRING { - WORD Length; - CHAR _NameString; - - CHAR* NameString() { return &_NameString; } -} -alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; - -struct IMAGE_RESOURCE_DIR_STRING_U { - WORD Length; - WCHAR _NameString; - - WCHAR* NameString() { return &_NameString; } -} -alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; - -struct IMAGE_RESOURCE_DATA_ENTRY { - DWORD OffsetToData; - DWORD Size; - DWORD CodePage; - DWORD Reserved; -} -alias IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; - -struct IMAGE_LOAD_CONFIG_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD GlobalFlagsClear; - DWORD GlobalFlagsSet; - DWORD CriticalSectionDefaultTimeout; - DWORD DeCommitFreeBlockThreshold; - DWORD DeCommitTotalFreeThreshold; - PVOID LockPrefixTable; - DWORD MaximumAllocationSize; - DWORD VirtualMemoryThreshold; - DWORD ProcessHeapFlags; - DWORD[4] Reserved; -} -alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; - -struct IMAGE_LOAD_CONFIG_DIRECTORY64 { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD GlobalFlagsClear; - DWORD GlobalFlagsSet; - DWORD CriticalSectionDefaultTimeout; - ULONGLONG DeCommitFreeBlockThreshold; - ULONGLONG DeCommitTotalFreeThreshold; - ULONGLONG LockPrefixTable; - ULONGLONG MaximumAllocationSize; - ULONGLONG VirtualMemoryThreshold; - ULONGLONG ProcessAffinityMask; - DWORD ProcessHeapFlags; - WORD CSDFlags; - WORD Reserved1; - ULONGLONG EditList; - DWORD[2] Reserved; -} -alias IMAGE_LOAD_CONFIG_DIRECTORY64* PIMAGE_LOAD_CONFIG_DIRECTORY64; - -struct IMAGE_RUNTIME_FUNCTION_ENTRY { - DWORD BeginAddress; - DWORD EndAddress; - PVOID ExceptionHandler; - PVOID HandlerData; - DWORD PrologEndAddress; -} -alias IMAGE_RUNTIME_FUNCTION_ENTRY* PIMAGE_RUNTIME_FUNCTION_ENTRY; - -struct IMAGE_CE_RUNTIME_FUNCTION_ENTRY { - uint FuncStart; - union { - ubyte PrologLen; - uint _bf; - } -/+ - unsigned int FuncLen:22; - unsigned int ThirtyTwoBit:1; - unsigned int ExceptionFlag:1; -+/ - uint FuncLen() { return (_bf >> 8) & 0x3FFFFF; } - bool ThirtyTwoBit() { return cast(bool)(_bf & 0x40000000); } - bool ExceptionFlag() { return cast(bool)(_bf & 0x80000000); } - - uint FuncLen(uint f) { - _bf = (_bf & ~0x3FFFFF00) | ((f & 0x3FFFFF) << 8); return f & 0x3FFFFF; - } - - bool ThirtyTwoBit(bool t) { - _bf = (_bf & ~0x40000000) | (t << 30); return t; - } - - bool ExceptionFlag(bool e) { - _bf = (_bf & ~0x80000000) | (e << 31); return e; - } -} -alias IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; - -struct IMAGE_DEBUG_DIRECTORY { - DWORD Characteristics; - DWORD TimeDateStamp; - WORD MajorVersion; - WORD MinorVersion; - DWORD Type; - DWORD SizeOfData; - DWORD AddressOfRawData; - DWORD PointerToRawData; -} -alias IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY; - -struct FPO_DATA { - DWORD ulOffStart; - DWORD cbProcSize; - DWORD cdwLocals; - WORD cdwParams; - ubyte cbProlog; - ubyte _bf; -/+ - WORD cbRegs:3; - WORD fHasSEH:1; - WORD fUseBP:1; - WORD reserved:1; - WORD cbFrame:2; -+/ - ubyte cbRegs() { return cast(ubyte)(_bf & 0x07); } - bool fHasSEH() { return cast(bool)(_bf & 0x08); } - bool fUseBP() { return cast(bool)(_bf & 0x10); } - bool reserved() { return cast(bool)(_bf & 0x20); } - ubyte cbFrame() { return cast(ubyte)(_bf >> 6); } - - ubyte cbRegs(ubyte c) { - _bf = cast(ubyte) ((_bf & ~0x07) | (c & 0x07)); - return cast(ubyte)(c & 0x07); - } - - bool fHasSEH(bool f) { _bf = cast(ubyte)((_bf & ~0x08) | (f << 3)); return f; } - bool fUseBP(bool f) { _bf = cast(ubyte)((_bf & ~0x10) | (f << 4)); return f; } - bool reserved(bool r) { _bf = cast(ubyte)((_bf & ~0x20) | (r << 5)); return r; } - - ubyte cbFrame(ubyte c) { - _bf = cast(ubyte) ((_bf & ~0xC0) | ((c & 0x03) << 6)); - return cast(ubyte)(c & 0x03); - } -} -alias FPO_DATA* PFPO_DATA; - -struct IMAGE_DEBUG_MISC { - DWORD DataType; - DWORD Length; - BOOLEAN Unicode; - BYTE[3] Reserved; - BYTE _Data; - - BYTE* Data() { return &_Data; } -} -alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; - -struct IMAGE_FUNCTION_ENTRY { - DWORD StartingAddress; - DWORD EndingAddress; - DWORD EndOfPrologue; -} -alias IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY; - -struct IMAGE_FUNCTION_ENTRY64 { - ULONGLONG StartingAddress; - ULONGLONG EndingAddress; - union { - ULONGLONG EndOfPrologue; - ULONGLONG UnwindInfoAddress; - } -} -alias IMAGE_FUNCTION_ENTRY64* PIMAGE_FUNCTION_ENTRY64; - -struct IMAGE_SEPARATE_DEBUG_HEADER { - WORD Signature; - WORD Flags; - WORD Machine; - WORD Characteristics; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD ImageBase; - DWORD SizeOfImage; - DWORD NumberOfSections; - DWORD ExportedNamesSize; - DWORD DebugDirectorySize; - DWORD SectionAlignment; - DWORD[2] Reserved; -} -alias IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; - -enum SERVICE_NODE_TYPE { - DriverType = SERVICE_KERNEL_DRIVER, - FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, - Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, - Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, - AdapterType = SERVICE_ADAPTER, - RecognizerType = SERVICE_RECOGNIZER_DRIVER -} - -enum SERVICE_LOAD_TYPE { - BootLoad = SERVICE_BOOT_START, - SystemLoad = SERVICE_SYSTEM_START, - AutoLoad = SERVICE_AUTO_START, - DemandLoad = SERVICE_DEMAND_START, - DisableLoad = SERVICE_DISABLED -} - -enum SERVICE_ERROR_TYPE { - IgnoreError = SERVICE_ERROR_IGNORE, - NormalError = SERVICE_ERROR_NORMAL, - SevereError = SERVICE_ERROR_SEVERE, - CriticalError = SERVICE_ERROR_CRITICAL -} -alias SERVICE_ERROR_TYPE _CM_ERROR_CONTROL_TYPE; - -//DAC: According to MSJ, 'UnderTheHood', May 1996, this -// structure is not documented in any official Microsoft header file. -alias void EXCEPTION_REGISTRATION_RECORD; - -align: -struct NT_TIB { - EXCEPTION_REGISTRATION_RECORD *ExceptionList; - PVOID StackBase; - PVOID StackLimit; - PVOID SubSystemTib; - union { - PVOID FiberData; - DWORD Version; - } - PVOID ArbitraryUserPointer; - NT_TIB *Self; -} -alias NT_TIB* PNT_TIB; - -struct REPARSE_DATA_BUFFER { - DWORD ReparseTag; - WORD ReparseDataLength; - WORD Reserved; - union { - struct _GenericReparseBuffer { - BYTE _DataBuffer; - - BYTE* DataBuffer() { return &_DataBuffer; } - } - _GenericReparseBuffer GenericReparseBuffer; - struct _SymbolicLinkReparseBuffer { - WORD SubstituteNameOffset; - WORD SubstituteNameLength; - WORD PrintNameOffset; - WORD PrintNameLength; - // ??? This is in MinGW, but absent in MSDN docs - ULONG Flags; - WCHAR _PathBuffer; - - WCHAR* PathBuffer() { return &_PathBuffer; } - } - _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; - struct _MountPointReparseBuffer { - WORD SubstituteNameOffset; - WORD SubstituteNameLength; - WORD PrintNameOffset; - WORD PrintNameLength; - WCHAR _PathBuffer; - - WCHAR* PathBuffer() { return &_PathBuffer; } - } - _MountPointReparseBuffer MountPointReparseBuffer; - } -} -alias REPARSE_DATA_BUFFER *PREPARSE_DATA_BUFFER; - -struct REPARSE_GUID_DATA_BUFFER { - DWORD ReparseTag; - WORD ReparseDataLength; - WORD Reserved; - GUID ReparseGuid; - struct _GenericReparseBuffer { - BYTE _DataBuffer; - - BYTE* DataBuffer() { return &_DataBuffer; } - } - _GenericReparseBuffer GenericReparseBuffer; -} -alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; - -const size_t - REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, - REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, - MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; - - -struct REPARSE_POINT_INFORMATION { - WORD ReparseDataLength; - WORD UnparsedNameLength; -} -alias REPARSE_POINT_INFORMATION* PREPARSE_POINT_INFORMATION; - -union FILE_SEGMENT_ELEMENT { - PVOID64 Buffer; - ULONGLONG Alignment; -} -alias FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; - -// JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants -const DWORD - JOB_OBJECT_LIMIT_WORKINGSET = 0x0001, - JOB_OBJECT_LIMIT_PROCESS_TIME = 0x0002, - JOB_OBJECT_LIMIT_JOB_TIME = 0x0004, - JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x0008, - JOB_OBJECT_LIMIT_AFFINITY = 0x0010, - JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x0020, - JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x0040, - JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x0080, - JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x0100, - JOB_OBJECT_LIMIT_JOB_MEMORY = 0x0200, - JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x0400, - JOB_OBJECT_BREAKAWAY_OK = 0x0800, - JOB_OBJECT_SILENT_BREAKAWAY = 0x1000; - -// JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants -const DWORD - JOB_OBJECT_UILIMIT_HANDLES = 0x0001, - JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x0002, - JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x0004, - JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x0008, - JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x0010, - JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x0020, - JOB_OBJECT_UILIMIT_DESKTOP = 0x0040, - JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x0080; - -// JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants -const DWORD - JOB_OBJECT_SECURITY_NO_ADMIN = 0x0001, - JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, - JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x0004, - JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x0008; - -// JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants -enum : DWORD { - JOB_OBJECT_TERMINATE_AT_END_OF_JOB, - JOB_OBJECT_POST_AT_END_OF_JOB -} - -enum : DWORD { - JOB_OBJECT_MSG_END_OF_JOB_TIME = 1, - JOB_OBJECT_MSG_END_OF_PROCESS_TIME, - JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT, - JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, - JOB_OBJECT_MSG_NEW_PROCESS, - JOB_OBJECT_MSG_EXIT_PROCESS, - JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS, - JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT, - JOB_OBJECT_MSG_JOB_MEMORY_LIMIT -} - -enum JOBOBJECTINFOCLASS { - JobObjectBasicAccountingInformation = 1, - JobObjectBasicLimitInformation, - JobObjectBasicProcessIdList, - JobObjectBasicUIRestrictions, - JobObjectSecurityLimitInformation, - JobObjectEndOfJobTimeInformation, - JobObjectAssociateCompletionPortInformation, - JobObjectBasicAndIoAccountingInformation, - JobObjectExtendedLimitInformation, - JobObjectJobSetInformation, - MaxJobObjectInfoClass -} - -struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { - LARGE_INTEGER TotalUserTime; - LARGE_INTEGER TotalKernelTime; - LARGE_INTEGER ThisPeriodTotalUserTime; - LARGE_INTEGER ThisPeriodTotalKernelTime; - DWORD TotalPageFaultCount; - DWORD TotalProcesses; - DWORD ActiveProcesses; - DWORD TotalTerminatedProcesses; -} -alias JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; - -struct JOBOBJECT_BASIC_LIMIT_INFORMATION { - LARGE_INTEGER PerProcessUserTimeLimit; - LARGE_INTEGER PerJobUserTimeLimit; - DWORD LimitFlags; - SIZE_T MinimumWorkingSetSize; - SIZE_T MaximumWorkingSetSize; - DWORD ActiveProcessLimit; - ULONG_PTR Affinity; - DWORD PriorityClass; - DWORD SchedulingClass; -} -alias JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION; - -struct JOBOBJECT_BASIC_PROCESS_ID_LIST { - DWORD NumberOfAssignedProcesses; - DWORD NumberOfProcessIdsInList; - ULONG_PTR _ProcessIdList; - - ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } -} -alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; - -struct JOBOBJECT_BASIC_UI_RESTRICTIONS { - DWORD UIRestrictionsClass; -} -alias JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS; - -struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { - DWORD SecurityLimitFlags; - HANDLE JobToken; - PTOKEN_GROUPS SidsToDisable; - PTOKEN_PRIVILEGES PrivilegesToDelete; - PTOKEN_GROUPS RestrictedSids; -} -alias JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION; - -struct JOBOBJECT_END_OF_JOB_TIME_INFORMATION { - DWORD EndOfJobTimeAction; -} -alias JOBOBJECT_END_OF_JOB_TIME_INFORMATION* PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; - -struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { - PVOID CompletionKey; - HANDLE CompletionPort; -} -alias JOBOBJECT_ASSOCIATE_COMPLETION_PORT* PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; - -struct JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { - JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; - IO_COUNTERS IoInfo; -} -alias JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION *PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; - -struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION { - JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; - IO_COUNTERS IoInfo; - SIZE_T ProcessMemoryLimit; - SIZE_T JobMemoryLimit; - SIZE_T PeakProcessMemoryUsed; - SIZE_T PeakJobMemoryUsed; -} -alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; - -struct JOBOBJECT_JOBSET_INFORMATION { - DWORD MemberLevel; -} -alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; - -// MinGW: Making these defines conditional on WINVER will break ddk includes -//static if (WINVER >= 0x0500) { - -const DWORD - ES_SYSTEM_REQUIRED = 0x00000001, - ES_DISPLAY_REQUIRED = 0x00000002, - ES_USER_PRESENT = 0x00000004, - ES_CONTINUOUS = 0x80000000; - -enum LATENCY_TIME { - LT_DONT_CARE, - LT_LOWEST_LATENCY -} -alias LATENCY_TIME* PLATENCY_TIME; - -enum SYSTEM_POWER_STATE { - PowerSystemUnspecified, - PowerSystemWorking, - PowerSystemSleeping1, - PowerSystemSleeping2, - PowerSystemSleeping3, - PowerSystemHibernate, - PowerSystemShutdown, - PowerSystemMaximum -} -alias SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; - -const POWER_SYSTEM_MAXIMUM = SYSTEM_POWER_STATE.PowerSystemMaximum; - -enum POWER_ACTION { - PowerActionNone, - PowerActionReserved, - PowerActionSleep, - PowerActionHibernate, - PowerActionShutdown, - PowerActionShutdownReset, - PowerActionShutdownOff, - PowerActionWarmEject -} -alias POWER_ACTION* PPOWER_ACTION; - -static if (WINVER >= 0x600) { - enum SYSTEM_POWER_CONDITION { - PoAc, - PoDc, - PoHot, - PoConditionMaximum - } - alias SYSTEM_POWER_CONDITION* PSYSTEM_POWER_CONDITION; -} - -enum DEVICE_POWER_STATE { - PowerDeviceUnspecified, - PowerDeviceD0, - PowerDeviceD1, - PowerDeviceD2, - PowerDeviceD3, - PowerDeviceMaximum -} -alias DEVICE_POWER_STATE* PDEVICE_POWER_STATE; - -align(4): -struct BATTERY_REPORTING_SCALE { - DWORD Granularity; - DWORD Capacity; -} -alias BATTERY_REPORTING_SCALE* PBATTERY_REPORTING_SCALE; - -struct POWER_ACTION_POLICY { - POWER_ACTION Action; - ULONG Flags; - ULONG EventCode; -} -alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; - -// POWER_ACTION_POLICY.Flags constants -const ULONG - POWER_ACTION_QUERY_ALLOWED = 0x00000001, - POWER_ACTION_UI_ALLOWED = 0x00000002, - POWER_ACTION_OVERRIDE_APPS = 0x00000004, - POWER_ACTION_LIGHTEST_FIRST = 0x10000000, - POWER_ACTION_LOCK_CONSOLE = 0x20000000, - POWER_ACTION_DISABLE_WAKES = 0x40000000, - POWER_ACTION_CRITICAL = 0x80000000; - -// POWER_ACTION_POLICY.EventCode constants -const ULONG - POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001, - POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, - POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004, - POWER_USER_NOTIFY_BUTTON = 0x00000008, - POWER_USER_NOTIFY_SHUTDOWN = 0x00000010, - POWER_FORCE_TRIGGER_RESET = 0x80000000; - -const size_t - DISCHARGE_POLICY_CRITICAL = 0, - DISCHARGE_POLICY_LOW = 1, - NUM_DISCHARGE_POLICIES = 4; - -enum : BYTE { - PO_THROTTLE_NONE, - PO_THROTTLE_CONSTANT, - PO_THROTTLE_DEGRADE, - PO_THROTTLE_ADAPTIVE, - PO_THROTTLE_MAXIMUM -} - -struct SYSTEM_POWER_LEVEL { - BOOLEAN Enable; - UCHAR[3] Spare; - ULONG BatteryLevel; - POWER_ACTION_POLICY PowerPolicy; - SYSTEM_POWER_STATE MinSystemState; -} -alias SYSTEM_POWER_LEVEL* PSYSTEM_POWER_LEVEL; - -struct SYSTEM_POWER_POLICY { - ULONG Revision; - POWER_ACTION_POLICY PowerButton; - POWER_ACTION_POLICY SleepButton; - POWER_ACTION_POLICY LidClose; - SYSTEM_POWER_STATE LidOpenWake; - ULONG Reserved; - POWER_ACTION_POLICY Idle; - ULONG IdleTimeout; - UCHAR IdleSensitivity; - UCHAR DynamicThrottle; - UCHAR[2] Spare2; - SYSTEM_POWER_STATE MinSleep; - SYSTEM_POWER_STATE MaxSleep; - SYSTEM_POWER_STATE ReducedLatencySleep; - ULONG WinLogonFlags; - ULONG Spare3; - ULONG DozeS4Timeout; - ULONG BroadcastCapacityResolution; - SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; - ULONG VideoTimeout; - BOOLEAN VideoDimDisplay; - ULONG[3] VideoReserved; - ULONG SpindownTimeout; - BOOLEAN OptimizeForPower; - UCHAR FanThrottleTolerance; - UCHAR ForcedThrottle; - UCHAR MinThrottle; - POWER_ACTION_POLICY OverThrottled; -} -alias SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; - -struct SYSTEM_POWER_CAPABILITIES { - BOOLEAN PowerButtonPresent; - BOOLEAN SleepButtonPresent; - BOOLEAN LidPresent; - BOOLEAN SystemS1; - BOOLEAN SystemS2; - BOOLEAN SystemS3; - BOOLEAN SystemS4; - BOOLEAN SystemS5; - BOOLEAN HiberFilePresent; - BOOLEAN FullWake; - BOOLEAN VideoDimPresent; - BOOLEAN ApmPresent; - BOOLEAN UpsPresent; - BOOLEAN ThermalControl; - BOOLEAN ProcessorThrottle; - UCHAR ProcessorMinThrottle; - UCHAR ProcessorMaxThrottle; - UCHAR[4] spare2; - BOOLEAN DiskSpinDown; - UCHAR[8] spare3; - BOOLEAN SystemBatteriesPresent; - BOOLEAN BatteriesAreShortTerm; - BATTERY_REPORTING_SCALE[3] BatteryScale; - SYSTEM_POWER_STATE AcOnLineWake; - SYSTEM_POWER_STATE SoftLidWake; - SYSTEM_POWER_STATE RtcWake; - SYSTEM_POWER_STATE MinDeviceWakeState; - SYSTEM_POWER_STATE DefaultLowLatencyWake; -} -alias SYSTEM_POWER_CAPABILITIES* PSYSTEM_POWER_CAPABILITIES; - -struct SYSTEM_BATTERY_STATE { - BOOLEAN AcOnLine; - BOOLEAN BatteryPresent; - BOOLEAN Charging; - BOOLEAN Discharging; - BOOLEAN[4] Spare1; - ULONG MaxCapacity; - ULONG RemainingCapacity; - ULONG Rate; - ULONG EstimatedTime; - ULONG DefaultAlert1; - ULONG DefaultAlert2; -} -alias SYSTEM_BATTERY_STATE* PSYSTEM_BATTERY_STATE; - -enum POWER_INFORMATION_LEVEL { - SystemPowerPolicyAc, - SystemPowerPolicyDc, - VerifySystemPolicyAc, - VerifySystemPolicyDc, - SystemPowerCapabilities, - SystemBatteryState, - SystemPowerStateHandler, - ProcessorStateHandler, - SystemPowerPolicyCurrent, - AdministratorPowerPolicy, - SystemReserveHiberFile, - ProcessorInformation, - SystemPowerInformation, - ProcessorStateHandler2, - LastWakeTime, - LastSleepTime, - SystemExecutionState, - SystemPowerStateNotifyHandler, - ProcessorPowerPolicyAc, - ProcessorPowerPolicyDc, - VerifyProcessorPowerPolicyAc, - VerifyProcessorPowerPolicyDc, - ProcessorPowerPolicyCurrent -} - -//#if 1 /* (WIN32_WINNT >= 0x0500) */ -struct SYSTEM_POWER_INFORMATION { - ULONG MaxIdlenessAllowed; - ULONG Idleness; - ULONG TimeRemaining; - UCHAR CoolingMode; -} -alias SYSTEM_POWER_INFORMATION* PSYSTEM_POWER_INFORMATION; -//#endif - -struct PROCESSOR_POWER_POLICY_INFO { - ULONG TimeCheck; - ULONG DemoteLimit; - ULONG PromoteLimit; - UCHAR DemotePercent; - UCHAR PromotePercent; - UCHAR[2] Spare; - uint _bf; - - bool AllowDemotion() { return cast(bool)(_bf & 1); } - bool AllowPromotion() { return cast(bool)(_bf & 2); } - - bool AllowDemotion(bool a) { _bf = (_bf & ~1) | a; return a; } - bool AllowPromotion(bool a) { _bf = (_bf & ~2) | (a << 1); return a; } -/+ - ULONG AllowDemotion : 1; - ULONG AllowPromotion : 1; - ULONG Reserved : 30; -+/ -} -alias PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; - -struct PROCESSOR_POWER_POLICY { - ULONG Revision; - UCHAR DynamicThrottle; - UCHAR[3] Spare; - ULONG Reserved; - ULONG PolicyCount; - PROCESSOR_POWER_POLICY_INFO[3] Policy; -} -alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; - -struct ADMINISTRATOR_POWER_POLICY { - SYSTEM_POWER_STATE MinSleep; - SYSTEM_POWER_STATE MaxSleep; - ULONG MinVideoTimeout; - ULONG MaxVideoTimeout; - ULONG MinSpindownTimeout; - ULONG MaxSpindownTimeout; -} -alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; - -//}//#endif /* WINVER >= 0x0500 */ - -extern (Windows) { - alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK; - - static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER; - alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; - } -} - -static if (WINVER >= 0x501) { - enum HEAP_INFORMATION_CLASS { - HeapCompatibilityInformation - } - - enum ACTIVATION_CONTEXT_INFO_CLASS { - ActivationContextBasicInformation = 1, - ActivationContextDetailedInformation, - AssemblyDetailedInformationInActivationContext, - FileInformationInAssemblyOfAssemblyInActivationContext - } - - struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { - DWORD ulFlags; - DWORD ulEncodedAssemblyIdentityLength; - DWORD ulManifestPathType; - DWORD ulManifestPathLength; - LARGE_INTEGER liManifestLastWriteTime; - DWORD ulPolicyPathType; - DWORD ulPolicyPathLength; - LARGE_INTEGER liPolicyLastWriteTime; - DWORD ulMetadataSatelliteRosterIndex; - DWORD ulManifestVersionMajor; - DWORD ulManifestVersionMinor; - DWORD ulPolicyVersionMajor; - DWORD ulPolicyVersionMinor; - DWORD ulAssemblyDirectoryNameLength; - PCWSTR lpAssemblyEncodedAssemblyIdentity; - PCWSTR lpAssemblyManifestPath; - PCWSTR lpAssemblyPolicyPath; - PCWSTR lpAssemblyDirectoryName; - } - alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* - PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; - alias CPtr!(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION) - PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; - - struct ACTIVATION_CONTEXT_DETAILED_INFORMATION { - DWORD dwFlags; - DWORD ulFormatVersion; - DWORD ulAssemblyCount; - DWORD ulRootManifestPathType; - DWORD ulRootManifestPathChars; - DWORD ulRootConfigurationPathType; - DWORD ulRootConfigurationPathChars; - DWORD ulAppDirPathType; - DWORD ulAppDirPathChars; - PCWSTR lpRootManifestPath; - PCWSTR lpRootConfigurationPath; - PCWSTR lpAppDirPath; - } - alias ACTIVATION_CONTEXT_DETAILED_INFORMATION* - PACTIVATION_CONTEXT_DETAILED_INFORMATION; - alias CPtr!(ACTIVATION_CONTEXT_DETAILED_INFORMATION) - PCACTIVATION_CONTEXT_DETAILED_INFORMATION; - - struct ACTIVATION_CONTEXT_QUERY_INDEX { - ULONG ulAssemblyIndex; - ULONG ulFileIndexInAssembly; - } - alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; - alias CPtr!(ACTIVATION_CONTEXT_QUERY_INDEX) PCACTIVATION_CONTEXT_QUERY_INDEX; - - struct ASSEMBLY_FILE_DETAILED_INFORMATION { - DWORD ulFlags; - DWORD ulFilenameLength; - DWORD ulPathLength; - PCWSTR lpFileName; - PCWSTR lpFilePath; - } - alias ASSEMBLY_FILE_DETAILED_INFORMATION* - PASSEMBLY_FILE_DETAILED_INFORMATION; - alias CPtr!(ASSEMBLY_FILE_DETAILED_INFORMATION) - PCASSEMBLY_FILE_DETAILED_INFORMATION; -} - -version (Unicode) { - alias OSVERSIONINFOW OSVERSIONINFO; - alias OSVERSIONINFOEXW OSVERSIONINFOEX; -} else { - alias OSVERSIONINFOA OSVERSIONINFO; - alias OSVERSIONINFOEXA OSVERSIONINFOEX; -} - -alias OSVERSIONINFO* POSVERSIONINFO, LPOSVERSIONINFO; -alias OSVERSIONINFOEX* POSVERSIONINFOEX, LPOSVERSIONINFOEX; - - -static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { - extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); -} - -version (Win64) { - const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; - - alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG; - alias IMAGE_SNAP_BY_ORDINAL64 IMAGE_SNAP_BY_ORDINAL; - alias IMAGE_ORDINAL64 IMAGE_ORDINAL; - alias IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; - alias IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; - alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; - alias IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; -} else { - const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; - - alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; - alias IMAGE_ORDINAL32 IMAGE_ORDINAL; - alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; - alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; - alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; - alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; - alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; -} - -alias IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER; -alias IMAGE_NT_HEADERS* PIMAGE_NT_HEADERS; -alias IMAGE_THUNK_DATA* PIMAGE_THUNK_DATA; -alias IMAGE_TLS_DIRECTORY* PIMAGE_TLS_DIRECTORY; - -// TODO: MinGW implements these in assembly. How to translate? -PVOID GetCurrentFiber(); -PVOID GetFiberData(); +/***********************************************************************\ +* winnt.d * +* * +* Windows API header module * +* * +* Translated from MinGW API for MS-Windows 3.12 * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winnt; + +public import win32.basetsd, win32.windef, win32.winerror; +private import win32.w32api; + +/* Translation Notes: +The following macros are unneeded for D: +FIELD_OFFSET(t,f), CONTAINING_RECORD(address, type, field) +*/ + +alias void VOID; +alias char CHAR, CCHAR; +alias wchar WCHAR; +alias bool BOOLEAN; +alias byte FCHAR; +alias ubyte UCHAR; +alias short SHORT; +alias ushort LANGID, FSHORT; +alias uint LCID, FLONG, ACCESS_MASK; +alias long LONGLONG, USN; +alias ulong DWORDLONG, ULONGLONG; + +alias void* PVOID, LPVOID; +alias char* PSZ, PCHAR, PCCHAR, LPCH, PCH, LPSTR, PSTR; +alias wchar* PWCHAR, LPWCH, PWCH, LPWSTR, PWSTR; +alias bool* PBOOLEAN; +alias ubyte* PUCHAR; +alias short* PSHORT; +alias int* PLONG; +alias uint* PLCID, PACCESS_MASK; +alias long* PLONGLONG; +alias ulong* PDWORDLONG, PULONGLONG; + +// FIXME(MinGW) for __WIN64 +alias void* PVOID64; + +// const versions +alias const(char)* LPCCH, PCSTR, LPCSTR; +alias const(wchar)* LPCWCH, PCWCH, LPCWSTR, PCWSTR; + +version (Unicode) { + alias WCHAR TCHAR, _TCHAR; +} else { + alias CHAR TCHAR, _TCHAR; +} + +alias TCHAR TBYTE; +alias TCHAR* PTCH, PTBYTE, LPTCH, PTSTR, LPTSTR, LP, PTCHAR; +alias const(TCHAR)* LPCTSTR; + +const char ANSI_NULL = '\0'; +const wchar UNICODE_NULL = '\0'; + +const APPLICATION_ERROR_MASK = 0x20000000; +const ERROR_SEVERITY_SUCCESS = 0x00000000; +const ERROR_SEVERITY_INFORMATIONAL = 0x40000000; +const ERROR_SEVERITY_WARNING = 0x80000000; +const ERROR_SEVERITY_ERROR = 0xC0000000; + +// MinGW: also in ddk/ntifs.h +enum : USHORT { + COMPRESSION_FORMAT_NONE = 0x0000, + COMPRESSION_FORMAT_DEFAULT = 0x0001, + COMPRESSION_FORMAT_LZNT1 = 0x0002, + COMPRESSION_ENGINE_STANDARD = 0x0000, + COMPRESSION_ENGINE_MAXIMUM = 0x0100, + COMPRESSION_ENGINE_HIBER = 0x0200 +} + +// ACCESS_DENIED_OBJECT_ACE, etc +const DWORD + ACE_OBJECT_TYPE_PRESENT = 0x00000001, + ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x00000002; + +// ACE_HEADER.AceType +// also in ddk/ntifs.h +enum : BYTE { + ACCESS_ALLOWED_ACE_TYPE, + ACCESS_DENIED_ACE_TYPE, + SYSTEM_AUDIT_ACE_TYPE, + SYSTEM_ALARM_ACE_TYPE +} + +// ACE_HEADER.AceFlags +const BYTE + OBJECT_INHERIT_ACE = 0x01, + CONTAINER_INHERIT_ACE = 0x02, + NO_PROPAGATE_INHERIT_ACE = 0x04, + INHERIT_ONLY_ACE = 0x08, + INHERITED_ACE = 0x10, + VALID_INHERIT_FLAGS = 0x1F, + SUCCESSFUL_ACCESS_ACE_FLAG = 0x40, + FAILED_ACCESS_ACE_FLAG = 0x80; + +// Access Mask Format +const ACCESS_MASK + DELETE = 0x00010000, + READ_CONTROL = 0x00020000, + WRITE_DAC = 0x00040000, + WRITE_OWNER = 0x00080000, + SYNCHRONIZE = 0x00100000, + ACCESS_SYSTEM_SECURITY = 0x01000000, + MAXIMUM_ALLOWED = 0x02000000, + GENERIC_READ = 0x80000000, + GENERIC_WRITE = 0x40000000, + GENERIC_EXECUTE = 0x20000000, + GENERIC_ALL = 0x10000000, + STANDARD_RIGHTS_REQUIRED = 0x000F0000, + STANDARD_RIGHTS_READ = 0x00020000, + STANDARD_RIGHTS_WRITE = 0x00020000, + STANDARD_RIGHTS_EXECUTE = 0x00020000, + STANDARD_RIGHTS_ALL = 0x001F0000, + SPECIFIC_RIGHTS_ALL = 0x0000FFFF; + + +const DWORD INVALID_FILE_ATTRIBUTES = -1; + +// MinGW: Also in ddk/winddk.h +const DWORD + FILE_LIST_DIRECTORY = 0x00000001, + FILE_READ_DATA = 0x00000001, + FILE_ADD_FILE = 0x00000002, + FILE_WRITE_DATA = 0x00000002, + FILE_ADD_SUBDIRECTORY = 0x00000004, + FILE_APPEND_DATA = 0x00000004, + FILE_CREATE_PIPE_INSTANCE = 0x00000004, + FILE_READ_EA = 0x00000008, + FILE_READ_PROPERTIES = 0x00000008, + FILE_WRITE_EA = 0x00000010, + FILE_WRITE_PROPERTIES = 0x00000010, + FILE_EXECUTE = 0x00000020, + FILE_TRAVERSE = 0x00000020, + FILE_DELETE_CHILD = 0x00000040, + FILE_READ_ATTRIBUTES = 0x00000080, + FILE_WRITE_ATTRIBUTES = 0x00000100; + +const DWORD + FILE_SHARE_READ = 0x00000001, + FILE_SHARE_WRITE = 0x00000002, + FILE_SHARE_DELETE = 0x00000004, + FILE_SHARE_VALID_FLAGS = 0x00000007; + +const DWORD + FILE_ATTRIBUTE_READONLY = 0x00000001, + FILE_ATTRIBUTE_HIDDEN = 0x00000002, + FILE_ATTRIBUTE_SYSTEM = 0x00000004, + FILE_ATTRIBUTE_DIRECTORY = 0x00000010, + FILE_ATTRIBUTE_ARCHIVE = 0x00000020, + FILE_ATTRIBUTE_DEVICE = 0x00000040, + FILE_ATTRIBUTE_NORMAL = 0x00000080, + FILE_ATTRIBUTE_TEMPORARY = 0x00000100, + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200, + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400, + FILE_ATTRIBUTE_COMPRESSED = 0x00000800, + FILE_ATTRIBUTE_OFFLINE = 0x00001000, + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000, + FILE_ATTRIBUTE_VALID_FLAGS = 0x00007fb7, + FILE_ATTRIBUTE_VALID_SET_FLAGS = 0x000031a7; + +// These are not documented on MSDN +const FILE_COPY_STRUCTURED_STORAGE = 0x00000041; +const FILE_STRUCTURED_STORAGE = 0x00000441; + +// Nor are these +const FILE_VALID_OPTION_FLAGS = 0x00ffffff; +const FILE_VALID_PIPE_OPTION_FLAGS = 0x00000032; +const FILE_VALID_MAILSLOT_OPTION_FLAGS = 0x00000032; +const FILE_VALID_SET_FLAGS = 0x00000036; + +const ULONG + FILE_SUPERSEDE = 0x00000000, + FILE_OPEN = 0x00000001, + FILE_CREATE = 0x00000002, + FILE_OPEN_IF = 0x00000003, + FILE_OVERWRITE = 0x00000004, + FILE_OVERWRITE_IF = 0x00000005, + FILE_MAXIMUM_DISPOSITION = 0x00000005; + +const ULONG + FILE_DIRECTORY_FILE = 0x00000001, + FILE_WRITE_THROUGH = 0x00000002, + FILE_SEQUENTIAL_ONLY = 0x00000004, + FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008, + FILE_SYNCHRONOUS_IO_ALERT = 0x00000010, + FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020, + FILE_NON_DIRECTORY_FILE = 0x00000040, + FILE_CREATE_TREE_CONNECTION = 0x00000080, + FILE_COMPLETE_IF_OPLOCKED = 0x00000100, + FILE_NO_EA_KNOWLEDGE = 0x00000200, + FILE_OPEN_FOR_RECOVERY = 0x00000400, + FILE_RANDOM_ACCESS = 0x00000800, + FILE_DELETE_ON_CLOSE = 0x00001000, + FILE_OPEN_BY_FILE_ID = 0x00002000, + FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000, + FILE_NO_COMPRESSION = 0x00008000, + FILE_RESERVE_OPFILTER = 0x00100000, + FILE_OPEN_REPARSE_POINT = 0x00200000, + FILE_OPEN_NO_RECALL = 0x00400000, + FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000; + + +const ACCESS_MASK + FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x01FF, + FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES + | FILE_EXECUTE | SYNCHRONIZE, + FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA + | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE, + FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA + | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA + | SYNCHRONIZE; + +// MinGW: end winddk.h +// MinGW: also in ddk/ntifs.h +const DWORD + FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001, + FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002, + FILE_NOTIFY_CHANGE_NAME = 0x00000003, + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004, + FILE_NOTIFY_CHANGE_SIZE = 0x00000008, + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010, + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020, + FILE_NOTIFY_CHANGE_CREATION = 0x00000040, + FILE_NOTIFY_CHANGE_EA = 0x00000080, + FILE_NOTIFY_CHANGE_SECURITY = 0x00000100, + FILE_NOTIFY_CHANGE_STREAM_NAME = 0x00000200, + FILE_NOTIFY_CHANGE_STREAM_SIZE = 0x00000400, + FILE_NOTIFY_CHANGE_STREAM_WRITE = 0x00000800, + FILE_NOTIFY_VALID_MASK = 0x00000fff; + +const DWORD + FILE_CASE_SENSITIVE_SEARCH = 0x00000001, + FILE_CASE_PRESERVED_NAMES = 0x00000002, + FILE_UNICODE_ON_DISK = 0x00000004, + FILE_PERSISTENT_ACLS = 0x00000008, + FILE_FILE_COMPRESSION = 0x00000010, + FILE_VOLUME_QUOTAS = 0x00000020, + FILE_SUPPORTS_SPARSE_FILES = 0x00000040, + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080, + FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100, + FS_LFN_APIS = 0x00004000, + FILE_VOLUME_IS_COMPRESSED = 0x00008000, + FILE_SUPPORTS_OBJECT_IDS = 0x00010000, + FILE_SUPPORTS_ENCRYPTION = 0x00020000, + FILE_NAMED_STREAMS = 0x00040000, + FILE_READ_ONLY_VOLUME = 0x00080000, + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000, + FILE_SUPPORTS_TRANSACTIONS = 0x00200000; + +// These are not documented on MSDN +const ACCESS_MASK + IO_COMPLETION_QUERY_STATE = 1, + IO_COMPLETION_MODIFY_STATE = 2, + IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 3; +// MinGW: end ntifs.h + +// MinGW: also in ddk/winddk.h +const DWORD + DUPLICATE_CLOSE_SOURCE = 1, + DUPLICATE_SAME_ACCESS = 2, + DUPLICATE_SAME_ATTRIBUTES = 4; +// MinGW: end winddk.k + +const DWORD + MAILSLOT_NO_MESSAGE = -1, + MAILSLOT_WAIT_FOREVER = -1; + +const ACCESS_MASK + PROCESS_TERMINATE = 0x0001, + PROCESS_CREATE_THREAD = 0x0002, + PROCESS_SET_SESSIONID = 0x0004, + PROCESS_VM_OPERATION = 0x0008, + PROCESS_VM_READ = 0x0010, + PROCESS_VM_WRITE = 0x0020, + PROCESS_DUP_HANDLE = 0x0040, + PROCESS_CREATE_PROCESS = 0x0080, + PROCESS_SET_QUOTA = 0x0100, + PROCESS_SET_INFORMATION = 0x0200, + PROCESS_QUERY_INFORMATION = 0x0400, + PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0FFF; + +const ACCESS_MASK + THREAD_TERMINATE = 0x0001, + THREAD_SUSPEND_RESUME = 0x0002, + THREAD_GET_CONTEXT = 0x0008, + THREAD_SET_CONTEXT = 0x0010, + THREAD_SET_INFORMATION = 0x0020, + THREAD_QUERY_INFORMATION = 0x0040, + THREAD_SET_THREAD_TOKEN = 0x0080, + THREAD_IMPERSONATE = 0x0100, + THREAD_DIRECT_IMPERSONATION = 0x0200, + THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF; + +// These are not documented on MSDN +const THREAD_BASE_PRIORITY_LOWRT = 15; +const THREAD_BASE_PRIORITY_MAX = 2; +const THREAD_BASE_PRIORITY_MIN = -2; +const THREAD_BASE_PRIORITY_IDLE = -15; + +const DWORD EXCEPTION_NONCONTINUABLE = 1; +const size_t EXCEPTION_MAXIMUM_PARAMETERS = 15; + +// These are not documented on MSDN +const ACCESS_MASK + MUTANT_QUERY_STATE = 1, + MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE; + +const ACCESS_MASK + TIMER_QUERY_STATE = 1, + TIMER_MODIFY_STATE = 2, + TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE + | TIMER_MODIFY_STATE; + +const SID_IDENTIFIER_AUTHORITY + SECURITY_NULL_SID_AUTHORITY = {[5: 0]}, + SECURITY_WORLD_SID_AUTHORITY = {[5: 1]}, + SECURITY_LOCAL_SID_AUTHORITY = {[5: 2]}, + SECURITY_CREATOR_SID_AUTHORITY = {[5: 3]}, + SECURITY_NON_UNIQUE_AUTHORITY = {[5: 4]}, + SECURITY_NT_AUTHORITY = {[5: 5]}, + SECURITY_MANDATORY_LABEL_AUTHORITY = {[5: 6]}; + +const DWORD + SECURITY_NULL_RID = 0, + SECURITY_WORLD_RID = 0, + SECURITY_LOCAL_RID = 0, + SECURITY_CREATOR_OWNER_RID = 0, + SECURITY_CREATOR_GROUP_RID = 1, + SECURITY_DIALUP_RID = 1, + SECURITY_NETWORK_RID = 2, + SECURITY_BATCH_RID = 3, + SECURITY_INTERACTIVE_RID = 4, + SECURITY_LOGON_IDS_RID = 5, + SECURITY_SERVICE_RID = 6, + SECURITY_LOCAL_SYSTEM_RID = 18, + SECURITY_BUILTIN_DOMAIN_RID = 32, + SECURITY_PRINCIPAL_SELF_RID = 10, + SECURITY_CREATOR_OWNER_SERVER_RID = 2, + SECURITY_CREATOR_GROUP_SERVER_RID = 3, + SECURITY_LOGON_IDS_RID_COUNT = 3, + SECURITY_ANONYMOUS_LOGON_RID = 7, + SECURITY_PROXY_RID = 8, + SECURITY_ENTERPRISE_CONTROLLERS_RID = 9, + SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID, + SECURITY_AUTHENTICATED_USER_RID = 11, + SECURITY_RESTRICTED_CODE_RID = 12, + SECURITY_NT_NON_UNIQUE_RID = 21, + SID_REVISION = 1; + +enum : DWORD { + DOMAIN_USER_RID_ADMIN = 0x01F4, + DOMAIN_USER_RID_GUEST = 0x01F5, + DOMAIN_GROUP_RID_ADMINS = 0x0200, + DOMAIN_GROUP_RID_USERS = 0x0201, + DOMAIN_ALIAS_RID_ADMINS = 0x0220, + DOMAIN_ALIAS_RID_USERS = 0x0221, + DOMAIN_ALIAS_RID_GUESTS = 0x0222, + DOMAIN_ALIAS_RID_POWER_USERS = 0x0223, + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x0224, + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x0225, + DOMAIN_ALIAS_RID_PRINT_OPS = 0x0226, + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x0227, + DOMAIN_ALIAS_RID_REPLICATOR = 0x0228 +} + +enum : WORD { + SECURITY_MANDATORY_UNTRUSTED_RID = 0, + SECURITY_MANDATORY_LOW_RID = 0x1000, + SECURITY_MANDATORY_MEDIUM_RID = 0x2000, + SECURITY_MANDATORY_HIGH_RID = 0x3000, + SECURITY_MANDATORY_SYSTEM_RID = 0x4000, + SECURITY_MANDATORY_PROTECTED_PROCESS_RID = 0x5000, + SECURITY_MANDATORY_MAXIMUM_USER_RID = SECURITY_MANDATORY_SYSTEM_RID +} + +const TCHAR[] + SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege", + SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege", + SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege", + SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege", + SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege", + SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege", + SE_TCB_NAME = "SeTcbPrivilege", + SE_SECURITY_NAME = "SeSecurityPrivilege", + SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege", + SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege", + SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege", + SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege", + SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege", + SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege", + SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege", + SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege", + SE_BACKUP_NAME = "SeBackupPrivilege", + SE_RESTORE_NAME = "SeRestorePrivilege", + SE_SHUTDOWN_NAME = "SeShutdownPrivilege", + SE_DEBUG_NAME = "SeDebugPrivilege", + SE_AUDIT_NAME = "SeAuditPrivilege", + SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege", + SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege", + SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege", + SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege", + SE_UNDOCK_NAME = "SeUndockPrivilege", + SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege", + SE_IMPERSONATE_NAME = "SeImpersonatePrivilege", + SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege", + SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege", + SE_TRUSTED_CREDMAN_ACCESS_NAME = "SeTrustedCredManAccessPrivilege", + SE_RELABEL_NAME = "SeRelabelPrivilege", + SE_INCREASE_WORKING_SET_NAME = "SeIncreaseWorkingSetPrivilege", + SE_TIME_ZONE_NAME = "SeTimeZonePrivilege", + SE_CREATE_SYMBOLIC_LINK_NAME = "SeCreateSymbolicLinkPrivilege"; + +const DWORD + SE_GROUP_MANDATORY = 0x00000001, + SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002, + SE_GROUP_ENABLED = 0x00000004, + SE_GROUP_OWNER = 0x00000008, + SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010, + SE_GROUP_INTEGRITY = 0x00000020, + SE_GROUP_INTEGRITY_ENABLED = 0x00000040, + SE_GROUP_RESOURCE = 0x20000000, + SE_GROUP_LOGON_ID = 0xC0000000; + +// Primary language identifiers +enum : USHORT { + LANG_NEUTRAL, + LANG_ARABIC, + LANG_BULGARIAN, + LANG_CATALAN, + LANG_CHINESE, + LANG_CZECH, + LANG_DANISH, + LANG_GERMAN, + LANG_GREEK, + LANG_ENGLISH, + LANG_SPANISH, + LANG_FINNISH, + LANG_FRENCH, + LANG_HEBREW, + LANG_HUNGARIAN, + LANG_ICELANDIC, + LANG_ITALIAN, + LANG_JAPANESE, + LANG_KOREAN, + LANG_DUTCH, + LANG_NORWEGIAN, + LANG_POLISH, + LANG_PORTUGUESE, // = 0x16 + LANG_ROMANIAN = 0x18, + LANG_RUSSIAN, + LANG_CROATIAN, // = 0x1A + LANG_SERBIAN = 0x1A, + LANG_BOSNIAN = 0x1A, + LANG_SLOVAK, + LANG_ALBANIAN, + LANG_SWEDISH, + LANG_THAI, + LANG_TURKISH, + LANG_URDU, + LANG_INDONESIAN, + LANG_UKRAINIAN, + LANG_BELARUSIAN, + LANG_SLOVENIAN, + LANG_ESTONIAN, + LANG_LATVIAN, + LANG_LITHUANIAN, // = 0x27 + LANG_FARSI = 0x29, + LANG_PERSIAN = 0x29, + LANG_VIETNAMESE, + LANG_ARMENIAN, + LANG_AZERI, + LANG_BASQUE, + LANG_LOWER_SORBIAN, // = 0x2E + LANG_UPPER_SORBIAN = 0x2E, + LANG_MACEDONIAN, // = 0x2F + LANG_TSWANA = 0x32, + LANG_XHOSA = 0x34, + LANG_ZULU, + LANG_AFRIKAANS, + LANG_GEORGIAN, + LANG_FAEROESE, + LANG_HINDI, + LANG_MALTESE, + LANG_SAMI, + LANG_IRISH, // = 0x3C + LANG_MALAY = 0x3E, + LANG_KAZAK, + LANG_KYRGYZ, + LANG_SWAHILI, // = 0x41 + LANG_UZBEK = 0x43, + LANG_TATAR, + LANG_BENGALI, + LANG_PUNJABI, + LANG_GUJARATI, + LANG_ORIYA, + LANG_TAMIL, + LANG_TELUGU, + LANG_KANNADA, + LANG_MALAYALAM, + LANG_ASSAMESE, + LANG_MARATHI, + LANG_SANSKRIT, + LANG_MONGOLIAN, + LANG_TIBETAN, + LANG_WELSH, + LANG_KHMER, + LANG_LAO, // = 0x54 + LANG_GALICIAN = 0x56, + LANG_KONKANI, + LANG_MANIPURI, + LANG_SINDHI, + LANG_SYRIAC, + LANG_SINHALESE, // = 0x5B + LANG_INUKTITUT = 0x5D, + LANG_AMHARIC, + LANG_TAMAZIGHT, + LANG_KASHMIRI, + LANG_NEPALI, + LANG_FRISIAN, + LANG_PASHTO, + LANG_FILIPINO, + LANG_DIVEHI, // = 0x65 + LANG_HAUSA = 0x68, + LANG_YORUBA = 0x6A, + LANG_QUECHUA, + LANG_SOTHO, + LANG_BASHKIR, + LANG_LUXEMBOURGISH, + LANG_GREENLANDIC, + LANG_IGBO, // = 0x70 + LANG_TIGRIGNA = 0x73, + LANG_YI = 0x78, + LANG_MAPUDUNGUN = 0x7A, + LANG_MOHAWK = 0x7C, + LANG_BRETON = 0x7E, + LANG_UIGHUR = 0x80, + LANG_MAORI, + LANG_OCCITAN, + LANG_CORSICAN, + LANG_ALSATIAN, + LANG_YAKUT, + LANG_KICHE, + LANG_KINYARWANDA, + LANG_WOLOF, // = 0x88 + LANG_DARI = 0x8C, + LANG_MALAGASY, // = 0x8D + + LANG_SERBIAN_NEUTRAL = 0x7C1A, + LANG_BOSNIAN_NEUTRAL = 0x781A, + + LANG_INVARIANT = 0x7F +} + + +// Sublanguage identifiers +enum : USHORT { + SUBLANG_NEUTRAL, + SUBLANG_DEFAULT, + SUBLANG_SYS_DEFAULT, + SUBLANG_CUSTOM_DEFAULT, // = 3 + SUBLANG_UI_CUSTOM_DEFAULT = 3, + SUBLANG_CUSTOM_UNSPECIFIED, // = 4 + + SUBLANG_AFRIKAANS_SOUTH_AFRICA = 1, + SUBLANG_ALBANIAN_ALBANIA = 1, + SUBLANG_ALSATIAN_FRANCE = 1, + SUBLANG_AMHARIC_ETHIOPIA = 1, + + SUBLANG_ARABIC_SAUDI_ARABIA = 1, + SUBLANG_ARABIC_IRAQ, + SUBLANG_ARABIC_EGYPT, + SUBLANG_ARABIC_LIBYA, + SUBLANG_ARABIC_ALGERIA, + SUBLANG_ARABIC_MOROCCO, + SUBLANG_ARABIC_TUNISIA, + SUBLANG_ARABIC_OMAN, + SUBLANG_ARABIC_YEMEN, + SUBLANG_ARABIC_SYRIA, + SUBLANG_ARABIC_JORDAN, + SUBLANG_ARABIC_LEBANON, + SUBLANG_ARABIC_KUWAIT, + SUBLANG_ARABIC_UAE, + SUBLANG_ARABIC_BAHRAIN, + SUBLANG_ARABIC_QATAR, // = 16 + + SUBLANG_ARMENIAN_ARMENIA = 1, + SUBLANG_ASSAMESE_INDIA = 1, + + SUBLANG_AZERI_LATIN = 1, + SUBLANG_AZERI_CYRILLIC, // = 2 + + SUBLANG_BASHKIR_RUSSIA = 1, + SUBLANG_BASQUE_BASQUE = 1, + SUBLANG_BELARUSIAN_BELARUS = 1, + SUBLANG_BENGALI_INDIA = 1, + + SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN = 5, + SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 8, + + SUBLANG_BRETON_FRANCE = 1, + SUBLANG_BULGARIAN_BULGARIA = 1, + SUBLANG_CATALAN_CATALAN = 1, + + SUBLANG_CHINESE_TRADITIONAL = 1, + SUBLANG_CHINESE_SIMPLIFIED, + SUBLANG_CHINESE_HONGKONG, + SUBLANG_CHINESE_SINGAPORE, + SUBLANG_CHINESE_MACAU, // = 5 + + SUBLANG_CORSICAN_FRANCE = 1, + + SUBLANG_CROATIAN_CROATIA = 1, + SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN = 4, + + SUBLANG_CZECH_CZECH_REPUBLIC = 1, + SUBLANG_DANISH_DENMARK = 1, + SUBLANG_DIVEHI_MALDIVES = 1, + + SUBLANG_DUTCH = 1, + SUBLANG_DUTCH_BELGIAN, // = 2 + + SUBLANG_ENGLISH_US = 1, + SUBLANG_ENGLISH_UK, + SUBLANG_ENGLISH_AUS, + SUBLANG_ENGLISH_CAN, + SUBLANG_ENGLISH_NZ, + SUBLANG_ENGLISH_EIRE, // = 6 + SUBLANG_ENGLISH_IRELAND = 6, + SUBLANG_ENGLISH_SOUTH_AFRICA, + SUBLANG_ENGLISH_JAMAICA, + SUBLANG_ENGLISH_CARIBBEAN, + SUBLANG_ENGLISH_BELIZE, + SUBLANG_ENGLISH_TRINIDAD, + SUBLANG_ENGLISH_ZIMBABWE, + SUBLANG_ENGLISH_PHILIPPINES, // = 13 + SUBLANG_ENGLISH_INDIA = 16, + SUBLANG_ENGLISH_MALAYSIA, + SUBLANG_ENGLISH_SINGAPORE, // = 18 + + SUBLANG_ESTONIAN_ESTONIA = 1, + SUBLANG_FAEROESE_FAROE_ISLANDS = 1, + SUBLANG_FILIPINO_PHILIPPINES = 1, + SUBLANG_FINNISH_FINLAND = 1, + + SUBLANG_FRENCH = 1, + SUBLANG_FRENCH_BELGIAN, + SUBLANG_FRENCH_CANADIAN, + SUBLANG_FRENCH_SWISS, + SUBLANG_FRENCH_LUXEMBOURG, + SUBLANG_FRENCH_MONACO, // = 6 + + SUBLANG_FRISIAN_NETHERLANDS = 1, + SUBLANG_GALICIAN_GALICIAN = 1, + SUBLANG_GEORGIAN_GEORGIA = 1, + + SUBLANG_GERMAN = 1, + SUBLANG_GERMAN_SWISS, + SUBLANG_GERMAN_AUSTRIAN, + SUBLANG_GERMAN_LUXEMBOURG, + SUBLANG_GERMAN_LIECHTENSTEIN, // = 5 + + SUBLANG_GREEK_GREECE = 1, + SUBLANG_GREENLANDIC_GREENLAND = 1, + SUBLANG_GUJARATI_INDIA = 1, + SUBLANG_HAUSA_NIGERIA = 1, + SUBLANG_HEBREW_ISRAEL = 1, + SUBLANG_HINDI_INDIA = 1, + SUBLANG_HUNGARIAN_HUNGARY = 1, + SUBLANG_ICELANDIC_ICELAND = 1, + SUBLANG_IGBO_NIGERIA = 1, + SUBLANG_INDONESIAN_INDONESIA = 1, + + SUBLANG_INUKTITUT_CANADA = 1, + SUBLANG_INUKTITUT_CANADA_LATIN = 1, + + SUBLANG_IRISH_IRELAND = 1, + + SUBLANG_ITALIAN = 1, + SUBLANG_ITALIAN_SWISS, // = 2 + + SUBLANG_JAPANESE_JAPAN = 1, + + SUBLANG_KASHMIRI_INDIA = 2, + SUBLANG_KASHMIRI_SASIA = 2, + + SUBLANG_KAZAK_KAZAKHSTAN = 1, + SUBLANG_KHMER_CAMBODIA = 1, + SUBLANG_KICHE_GUATEMALA = 1, + SUBLANG_KINYARWANDA_RWANDA = 1, + SUBLANG_KONKANI_INDIA = 1, + SUBLANG_KOREAN = 1, + SUBLANG_KYRGYZ_KYRGYZSTAN = 1, + SUBLANG_LAO_LAO_PDR = 1, + SUBLANG_LATVIAN_LATVIA = 1, + + SUBLANG_LITHUANIAN = 1, + SUBLANG_LITHUANIAN_LITHUANIA = 1, + + SUBLANG_LOWER_SORBIAN_GERMANY = 1, + SUBLANG_LUXEMBOURGISH_LUXEMBOURG = 1, + SUBLANG_MACEDONIAN_MACEDONIA = 1, + SUBLANG_MALAYALAM_INDIA = 1, + SUBLANG_MALTESE_MALTA = 1, + SUBLANG_MAORI_NEW_ZEALAND = 1, + SUBLANG_MAPUDUNGUN_CHILE = 1, + SUBLANG_MARATHI_INDIA = 1, + SUBLANG_MOHAWK_MOHAWK = 1, + + SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA = 1, + SUBLANG_MONGOLIAN_PRC, // = 2 + + SUBLANG_MALAY_MALAYSIA = 1, + SUBLANG_MALAY_BRUNEI_DARUSSALAM, // = 2 + + SUBLANG_NEPALI_NEPAL = 1, + SUBLANG_NEPALI_INDIA, // = 2 + + SUBLANG_NORWEGIAN_BOKMAL = 1, + SUBLANG_NORWEGIAN_NYNORSK, // = 2 + + SUBLANG_OCCITAN_FRANCE = 1, + SUBLANG_ORIYA_INDIA = 1, + SUBLANG_PASHTO_AFGHANISTAN = 1, + SUBLANG_PERSIAN_IRAN = 1, + SUBLANG_POLISH_POLAND = 1, + + SUBLANG_PORTUGUESE_BRAZILIAN = 1, + SUBLANG_PORTUGUESE = 2, + SUBLANG_PORTUGUESE_PORTUGAL, // = 2 + + SUBLANG_PUNJABI_INDIA = 1, + + SUBLANG_QUECHUA_BOLIVIA = 1, + SUBLANG_QUECHUA_ECUADOR, + SUBLANG_QUECHUA_PERU, // = 3 + + SUBLANG_ROMANIAN_ROMANIA = 1, + SUBLANG_ROMANSH_SWITZERLAND = 1, + SUBLANG_RUSSIAN_RUSSIA = 1, + + SUBLANG_SAMI_NORTHERN_NORWAY = 1, + SUBLANG_SAMI_NORTHERN_SWEDEN, + SUBLANG_SAMI_NORTHERN_FINLAND, // = 3 + SUBLANG_SAMI_SKOLT_FINLAND = 3, + SUBLANG_SAMI_INARI_FINLAND = 3, + SUBLANG_SAMI_LULE_NORWAY, + SUBLANG_SAMI_LULE_SWEDEN, + SUBLANG_SAMI_SOUTHERN_NORWAY, + SUBLANG_SAMI_SOUTHERN_SWEDEN, // = 7 + + SUBLANG_SANSKRIT_INDIA = 1, + + SUBLANG_SERBIAN_LATIN = 2, + SUBLANG_SERBIAN_CYRILLIC, // = 3 + SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN = 6, + SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC = 7, + + SUBLANG_SINDHI_AFGHANISTAN = 2, + SUBLANG_SINHALESE_SRI_LANKA = 1, + SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA = 1, + SUBLANG_SLOVAK_SLOVAKIA = 1, + SUBLANG_SLOVENIAN_SLOVENIA = 1, + + SUBLANG_SPANISH = 1, + SUBLANG_SPANISH_MEXICAN, + SUBLANG_SPANISH_MODERN, + SUBLANG_SPANISH_GUATEMALA, + SUBLANG_SPANISH_COSTA_RICA, + SUBLANG_SPANISH_PANAMA, + SUBLANG_SPANISH_DOMINICAN_REPUBLIC, + SUBLANG_SPANISH_VENEZUELA, + SUBLANG_SPANISH_COLOMBIA, + SUBLANG_SPANISH_PERU, + SUBLANG_SPANISH_ARGENTINA, + SUBLANG_SPANISH_ECUADOR, + SUBLANG_SPANISH_CHILE, + SUBLANG_SPANISH_URUGUAY, + SUBLANG_SPANISH_PARAGUAY, + SUBLANG_SPANISH_BOLIVIA, + SUBLANG_SPANISH_EL_SALVADOR, + SUBLANG_SPANISH_HONDURAS, + SUBLANG_SPANISH_NICARAGUA, + SUBLANG_SPANISH_PUERTO_RICO, + SUBLANG_SPANISH_US, // = 21 + + SUBLANG_SWEDISH = 1, + SUBLANG_SWEDISH_SWEDEN = 1, + SUBLANG_SWEDISH_FINLAND, // = 2 + + SUBLANG_SYRIAC = 1, + SUBLANG_TAJIK_TAJIKISTAN = 1, + SUBLANG_TAMAZIGHT_ALGERIA_LATIN = 2, + SUBLANG_TAMIL_INDIA = 1, + SUBLANG_TATAR_RUSSIA = 1, + SUBLANG_TELUGU_INDIA = 1, + SUBLANG_THAI_THAILAND = 1, + SUBLANG_TIBETAN_PRC = 1, + SUBLANG_TIBETAN_BHUTAN = 2, + SUBLANG_TIGRIGNA_ERITREA = 1, + SUBLANG_TSWANA_SOUTH_AFRICA = 1, + SUBLANG_TURKISH_TURKEY = 1, + SUBLANG_TURKMEN_TURKMENISTAN = 1, + SUBLANG_UIGHUR_PRC = 1, + SUBLANG_UKRAINIAN_UKRAINE = 1, + SUBLANG_UPPER_SORBIAN_GERMANY = 1, + + SUBLANG_URDU_PAKISTAN = 1, + SUBLANG_URDU_INDIA, // = 2 + + SUBLANG_UZBEK_LATIN = 1, + SUBLANG_UZBEK_CYRILLIC, // = 2 + + SUBLANG_VIETNAMESE_VIETNAM = 1, + SUBLANG_WELSH_UNITED_KINGDOM = 1, + SUBLANG_WOLOF_SENEGAL = 1, + SUBLANG_YORUBA_NIGERIA = 1, + SUBLANG_XHOSA_SOUTH_AFRICA = 1, + SUBLANG_YAKUT_RUSSIA = 1, + SUBLANG_YI_PRC = 1, + SUBLANG_ZULU_SOUTH_AFRICA = 1 +} + +// This is not documented on MSDN +const NLS_VALID_LOCALE_MASK = 1048575; + +// Sorting identifiers +enum : WORD { + SORT_DEFAULT = 0, + SORT_JAPANESE_XJIS = 0, + SORT_JAPANESE_UNICODE = 1, + SORT_CHINESE_BIG5 = 0, + SORT_CHINESE_PRCP = 0, + SORT_CHINESE_UNICODE = 1, + SORT_CHINESE_PRC = 2, + SORT_CHINESE_BOPOMOFO = 3, + SORT_KOREAN_KSC = 0, + SORT_KOREAN_UNICODE = 1, + SORT_GERMAN_PHONE_BOOK = 1, + SORT_HUNGARIAN_DEFAULT = 0, + SORT_HUNGARIAN_TECHNICAL = 1, + SORT_GEORGIAN_TRADITIONAL = 0, + SORT_GEORGIAN_MODERN = 1 +} + +WORD MAKELANGID(USHORT p, USHORT s) { return cast(WORD)((s << 10) | p); } +WORD PRIMARYLANGID(WORD lgid) { return cast(WORD)(lgid & 0x3FF); } +WORD SUBLANGID(WORD lgid) { return cast(WORD)(lgid >>> 10); } + +DWORD MAKELCID(WORD lgid, WORD srtid) { return (cast(DWORD) srtid << 16) | cast(DWORD) lgid; } +// ??? +//DWORD MAKESORTLCID(WORD lgid, WORD srtid, WORD ver) { return (MAKELCID(lgid, srtid)) | ((cast(DWORD)ver) << 20); } +WORD LANGIDFROMLCID(LCID lcid) { return cast(WORD) lcid; } +WORD SORTIDFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 16) & 0x0F); } +WORD SORTVERSIONFROMLCID(LCID lcid) { return cast(WORD) ((lcid >>> 20) & 0x0F); } + +const WORD LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL; +const WORD LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL; +const DWORD LOCALE_NEUTRAL = (SORT_DEFAULT << 16) + | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL; + +// --- +enum : BYTE { + ACL_REVISION = 2, + ACL_REVISION_DS = 4 +} + +// These are not documented on MSDN +enum : BYTE { + ACL_REVISION1 = 1, + ACL_REVISION2, + ACL_REVISION3, + ACL_REVISION4 // = 4 +} + +const BYTE + MIN_ACL_REVISION = 2, + MAX_ACL_REVISION = 4; + +/+ +// These aren't necessary for D. +const MINCHAR=0x80; +const MAXCHAR=0x7f; +const MINSHORT=0x8000; +const MAXSHORT=0x7fff; +const MINLONG=0x80000000; +const MAXLONG=0x7fffffff; +const MAXBYTE=0xff; +const MAXWORD=0xffff; +const MAXDWORD=0xffffffff; ++/ + +// SYSTEM_INFO.dwProcessorType +enum : DWORD { + PROCESSOR_INTEL_386 = 386, + PROCESSOR_INTEL_486 = 486, + PROCESSOR_INTEL_PENTIUM = 586, + PROCESSOR_MIPS_R4000 = 4000, + PROCESSOR_ALPHA_21064 = 21064, + PROCESSOR_INTEL_IA64 = 2200 +} + +// SYSTEM_INFO.wProcessorArchitecture +enum : WORD { + PROCESSOR_ARCHITECTURE_INTEL, + PROCESSOR_ARCHITECTURE_MIPS, + PROCESSOR_ARCHITECTURE_ALPHA, + PROCESSOR_ARCHITECTURE_PPC, + PROCESSOR_ARCHITECTURE_SHX, + PROCESSOR_ARCHITECTURE_ARM, + PROCESSOR_ARCHITECTURE_IA64, + PROCESSOR_ARCHITECTURE_ALPHA64, + PROCESSOR_ARCHITECTURE_MSIL, + PROCESSOR_ARCHITECTURE_AMD64, + PROCESSOR_ARCHITECTURE_IA32_ON_WIN64, // = 10 + PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF +} + +// IsProcessorFeaturePresent() +enum : DWORD { + PF_FLOATING_POINT_PRECISION_ERRATA, + PF_FLOATING_POINT_EMULATED, + PF_COMPARE_EXCHANGE_DOUBLE, + PF_MMX_INSTRUCTIONS_AVAILABLE, + PF_PPC_MOVEMEM_64BIT_OK, + PF_ALPHA_BYTE_INSTRUCTIONS, + PF_XMMI_INSTRUCTIONS_AVAILABLE, + PF_3DNOW_INSTRUCTIONS_AVAILABLE, + PF_RDTSC_INSTRUCTION_AVAILABLE, + PF_PAE_ENABLED, + PF_XMMI64_INSTRUCTIONS_AVAILABLE +} + +// MinGW: also in ddk/ntifs.h +enum : DWORD { + FILE_ACTION_ADDED = 1, + FILE_ACTION_REMOVED, + FILE_ACTION_MODIFIED, + FILE_ACTION_RENAMED_OLD_NAME, + FILE_ACTION_RENAMED_NEW_NAME, + FILE_ACTION_ADDED_STREAM, + FILE_ACTION_REMOVED_STREAM, + FILE_ACTION_MODIFIED_STREAM, + FILE_ACTION_REMOVED_BY_DELETE, + FILE_ACTION_ID_NOT_TUNNELLED, + FILE_ACTION_TUNNELLED_ID_COLLISION // = 11 +} +// MinGW: end ntifs.h + +const DWORD + HEAP_NO_SERIALIZE = 0x01, + HEAP_GROWABLE = 0x02, + HEAP_GENERATE_EXCEPTIONS = 0x04, + HEAP_ZERO_MEMORY = 0x08, + HEAP_REALLOC_IN_PLACE_ONLY = 0x10, + HEAP_TAIL_CHECKING_ENABLED = 0x20, + HEAP_FREE_CHECKING_ENABLED = 0x40, + HEAP_DISABLE_COALESCE_ON_FREE = 0x80; + +// These are not documented on MSDN +const HEAP_CREATE_ALIGN_16 = 0; +const HEAP_CREATE_ENABLE_TRACING = 0x020000; +const HEAP_MAXIMUM_TAG = 0x000FFF; +const HEAP_PSEUDO_TAG_FLAG = 0x008000; +const HEAP_TAG_SHIFT = 16; +// ??? +//MACRO #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) + +const ACCESS_MASK + KEY_QUERY_VALUE = 0x000001, + KEY_SET_VALUE = 0x000002, + KEY_CREATE_SUB_KEY = 0x000004, + KEY_ENUMERATE_SUB_KEYS = 0x000008, + KEY_NOTIFY = 0x000010, + KEY_CREATE_LINK = 0x000020, + KEY_WRITE = 0x020006, + KEY_EXECUTE = 0x020019, + KEY_READ = 0x020019, + KEY_ALL_ACCESS = 0x0F003F; + +static if (_WIN32_WINNT >= 0x502) { + const ACCESS_MASK + KEY_WOW64_64KEY = 0x000100, + KEY_WOW64_32KEY = 0x000200; +} + +const DWORD + REG_WHOLE_HIVE_VOLATILE = 1, + REG_REFRESH_HIVE = 2, + REG_NO_LAZY_FLUSH = 4; + +const DWORD + REG_OPTION_RESERVED = 0, + REG_OPTION_NON_VOLATILE = 0, + REG_OPTION_VOLATILE = 1, + REG_OPTION_CREATE_LINK = 2, + REG_OPTION_BACKUP_RESTORE = 4, + REG_OPTION_OPEN_LINK = 8, + REG_LEGAL_OPTION = 15; + +const SECURITY_INFORMATION + OWNER_SECURITY_INFORMATION = 0x00000001, + GROUP_SECURITY_INFORMATION = 0x00000002, + DACL_SECURITY_INFORMATION = 0x00000004, + SACL_SECURITY_INFORMATION = 0x00000008, + LABEL_SECURITY_INFORMATION = 0x00000010, + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000, + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000, + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000, + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000; + +const DWORD MAXIMUM_PROCESSORS = 32; + +// VirtualAlloc(), etc +// ------------------- + +enum : DWORD { + PAGE_NOACCESS = 0x0001, + PAGE_READONLY = 0x0002, + PAGE_READWRITE = 0x0004, + PAGE_WRITECOPY = 0x0008, + PAGE_EXECUTE = 0x0010, + PAGE_EXECUTE_READ = 0x0020, + PAGE_EXECUTE_READWRITE = 0x0040, + PAGE_EXECUTE_WRITECOPY = 0x0080, + PAGE_GUARD = 0x0100, + PAGE_NOCACHE = 0x0200 +} + +enum : DWORD { + MEM_COMMIT = 0x00001000, + MEM_RESERVE = 0x00002000, + MEM_DECOMMIT = 0x00004000, + MEM_RELEASE = 0x00008000, + MEM_FREE = 0x00010000, + MEM_PRIVATE = 0x00020000, + MEM_MAPPED = 0x00040000, + MEM_RESET = 0x00080000, + MEM_TOP_DOWN = 0x00100000, + MEM_WRITE_WATCH = 0x00200000, // MinGW (???): 98/Me + MEM_PHYSICAL = 0x00400000, + MEM_4MB_PAGES = 0x80000000 +} + +// MinGW: also in ddk/ntifs.h +// CreateFileMapping() +const DWORD + SEC_BASED = 0x00200000, + SEC_NO_CHANGE = 0x00400000, + SEC_FILE = 0x00800000, + SEC_IMAGE = 0x01000000, + SEC_VLM = 0x02000000, + SEC_RESERVE = 0x04000000, + SEC_COMMIT = 0x08000000, + SEC_NOCACHE = 0x10000000, + MEM_IMAGE = SEC_IMAGE; +// MinGW: end ntifs.h + +// ??? +const ACCESS_MASK + SECTION_QUERY = 0x000001, + SECTION_MAP_WRITE = 0x000002, + SECTION_MAP_READ = 0x000004, + SECTION_MAP_EXECUTE = 0x000008, + SECTION_EXTEND_SIZE = 0x000010, + SECTION_ALL_ACCESS = 0x0F001F; + +// These are not documented on MSDN +const MESSAGE_RESOURCE_UNICODE = 1; +const RTL_CRITSECT_TYPE = 0; +const RTL_RESOURCE_TYPE = 1; + +// COFF file format +// ---------------- + +// IMAGE_FILE_HEADER.Characteristics +const WORD + IMAGE_FILE_RELOCS_STRIPPED = 0x0001, + IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002, + IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004, + IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008, + IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010, + IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020, + IMAGE_FILE_BYTES_REVERSED_LO = 0x0080, + IMAGE_FILE_32BIT_MACHINE = 0x0100, + IMAGE_FILE_DEBUG_STRIPPED = 0x0200, + IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400, + IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800, + IMAGE_FILE_SYSTEM = 0x1000, + IMAGE_FILE_DLL = 0x2000, + IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000, + IMAGE_FILE_BYTES_REVERSED_HI = 0x8000; + +// IMAGE_FILE_HEADER.Machine +enum : WORD { + IMAGE_FILE_MACHINE_UNKNOWN = 0x0000, + IMAGE_FILE_MACHINE_I386 = 0x014C, + IMAGE_FILE_MACHINE_R3000 = 0x0162, + IMAGE_FILE_MACHINE_R4000 = 0x0166, + IMAGE_FILE_MACHINE_R10000 = 0x0168, + IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169, + IMAGE_FILE_MACHINE_ALPHA = 0x0184, + IMAGE_FILE_MACHINE_SH3 = 0x01A2, + IMAGE_FILE_MACHINE_SH3DSP = 0x01A3, + IMAGE_FILE_MACHINE_SH4 = 0x01A6, + IMAGE_FILE_MACHINE_SH5 = 0x01A8, + IMAGE_FILE_MACHINE_ARM = 0x01C0, + IMAGE_FILE_MACHINE_THUMB = 0x01C2, + IMAGE_FILE_MACHINE_AM33 = 0x01D3, + IMAGE_FILE_MACHINE_POWERPC = 0x01F0, + IMAGE_FILE_MACHINE_POWERPCFP = 0x01F1, + IMAGE_FILE_MACHINE_IA64 = 0x0200, + IMAGE_FILE_MACHINE_MIPS16 = 0x0266, + IMAGE_FILE_MACHINE_MIPSFPU = 0x0366, + IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466, + IMAGE_FILE_MACHINE_EBC = 0x0EBC, + IMAGE_FILE_MACHINE_AMD64 = 0x8664, + IMAGE_FILE_MACHINE_M32R = 0x9041 +} + +// ??? +enum { + IMAGE_DOS_SIGNATURE = 0x5A4D, + IMAGE_OS2_SIGNATURE = 0x454E, + IMAGE_OS2_SIGNATURE_LE = 0x454C, + IMAGE_VXD_SIGNATURE = 0x454C, + IMAGE_NT_SIGNATURE = 0x4550 +} + +// IMAGE_OPTIONAL_HEADER.Magic +enum : WORD { + IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x010B, + IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x0107, + IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x020B +} + +// IMAGE_OPTIONAL_HEADER.Subsystem +enum : WORD { + IMAGE_SUBSYSTEM_UNKNOWN = 0, + IMAGE_SUBSYSTEM_NATIVE, + IMAGE_SUBSYSTEM_WINDOWS_GUI, + IMAGE_SUBSYSTEM_WINDOWS_CUI, // = 3 + IMAGE_SUBSYSTEM_OS2_CUI = 5, + IMAGE_SUBSYSTEM_POSIX_CUI = 7, + IMAGE_SUBSYSTEM_NATIVE_WINDOWS, + IMAGE_SUBSYSTEM_WINDOWS_CE_GUI, + IMAGE_SUBSYSTEM_EFI_APPLICATION, + IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER, + IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER, + IMAGE_SUBSYSTEM_EFI_ROM, + IMAGE_SUBSYSTEM_XBOX, // = 14 + IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16 +} + +// IMAGE_OPTIONAL_HEADER.DllCharacteristics +const WORD + IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE = 0x0040, + IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY = 0x0080, + IMAGE_DLL_CHARACTERISTICS_NX_COMPAT = 0x0100, + IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200, + IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400, + IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800, + IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000, + IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000; + +// ??? +const IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944; + +const size_t + IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16, + IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56, + IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28, + IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224, + IMAGE_SIZEOF_SHORT_NAME = 8, + IMAGE_SIZEOF_SECTION_HEADER = 40, + IMAGE_SIZEOF_SYMBOL = 18, + IMAGE_SIZEOF_AUX_SYMBOL = 18, + IMAGE_SIZEOF_RELOCATION = 10, + IMAGE_SIZEOF_BASE_RELOCATION = 8, + IMAGE_SIZEOF_LINENUMBER = 6, + IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60, + SIZEOF_RFPO_DATA = 16; + +PIMAGE_SECTION_HEADER IMAGE_FIRST_SECTION(PIMAGE_NT_HEADERS h) { + return cast(PIMAGE_SECTION_HEADER) + (&h.OptionalHeader + h.FileHeader.SizeOfOptionalHeader); +} + +// ImageDirectoryEntryToDataEx() +enum : USHORT { + IMAGE_DIRECTORY_ENTRY_EXPORT = 0, + IMAGE_DIRECTORY_ENTRY_IMPORT, + IMAGE_DIRECTORY_ENTRY_RESOURCE, + IMAGE_DIRECTORY_ENTRY_EXCEPTION, + IMAGE_DIRECTORY_ENTRY_SECURITY, + IMAGE_DIRECTORY_ENTRY_BASERELOC, + IMAGE_DIRECTORY_ENTRY_DEBUG, + IMAGE_DIRECTORY_ENTRY_COPYRIGHT, // = 7 + IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7, + IMAGE_DIRECTORY_ENTRY_GLOBALPTR, + IMAGE_DIRECTORY_ENTRY_TLS, + IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, + IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, + IMAGE_DIRECTORY_ENTRY_IAT, + IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, + IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, // = 14 +} + +// IMAGE_SECTION_HEADER.Characteristics +const DWORD + IMAGE_SCN_TYPE_REG = 0x00000000, + IMAGE_SCN_TYPE_DSECT = 0x00000001, + IMAGE_SCN_TYPE_NOLOAD = 0x00000002, + IMAGE_SCN_TYPE_GROUP = 0x00000004, + IMAGE_SCN_TYPE_NO_PAD = 0x00000008, + IMAGE_SCN_TYPE_COPY = 0x00000010, + IMAGE_SCN_CNT_CODE = 0x00000020, + IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040, + IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080, + IMAGE_SCN_LNK_OTHER = 0x00000100, + IMAGE_SCN_LNK_INFO = 0x00000200, + IMAGE_SCN_TYPE_OVER = 0x00000400, + IMAGE_SCN_LNK_REMOVE = 0x00000800, + IMAGE_SCN_LNK_COMDAT = 0x00001000, + IMAGE_SCN_MEM_FARDATA = 0x00008000, + IMAGE_SCN_GPREL = 0x00008000, + IMAGE_SCN_MEM_PURGEABLE = 0x00020000, + IMAGE_SCN_MEM_16BIT = 0x00020000, + IMAGE_SCN_MEM_LOCKED = 0x00040000, + IMAGE_SCN_MEM_PRELOAD = 0x00080000, + IMAGE_SCN_ALIGN_1BYTES = 0x00100000, + IMAGE_SCN_ALIGN_2BYTES = 0x00200000, + IMAGE_SCN_ALIGN_4BYTES = 0x00300000, + IMAGE_SCN_ALIGN_8BYTES = 0x00400000, + IMAGE_SCN_ALIGN_16BYTES = 0x00500000, + IMAGE_SCN_ALIGN_32BYTES = 0x00600000, + IMAGE_SCN_ALIGN_64BYTES = 0x00700000, + IMAGE_SCN_ALIGN_128BYTES = 0x00800000, + IMAGE_SCN_ALIGN_256BYTES = 0x00900000, + IMAGE_SCN_ALIGN_512BYTES = 0x00A00000, + IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000, + IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000, + IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000, + IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000, + IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000, + IMAGE_SCN_MEM_DISCARDABLE = 0x02000000, + IMAGE_SCN_MEM_NOT_CACHED = 0x04000000, + IMAGE_SCN_MEM_NOT_PAGED = 0x08000000, + IMAGE_SCN_MEM_SHARED = 0x10000000, + IMAGE_SCN_MEM_EXECUTE = 0x20000000, + IMAGE_SCN_MEM_READ = 0x40000000, + IMAGE_SCN_MEM_WRITE = 0x80000000; + +/* The following constants are mostlydocumented at + * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/pecoff.doc + * but don't seem to be defined in the HTML docs. + */ +enum : SHORT { + IMAGE_SYM_UNDEFINED = 0, + IMAGE_SYM_ABSOLUTE = -1, + IMAGE_SYM_DEBUG = -2 +} + +enum : ubyte { + IMAGE_SYM_TYPE_NULL, + IMAGE_SYM_TYPE_VOID, + IMAGE_SYM_TYPE_CHAR, + IMAGE_SYM_TYPE_SHORT, + IMAGE_SYM_TYPE_INT, + IMAGE_SYM_TYPE_LONG, + IMAGE_SYM_TYPE_FLOAT, + IMAGE_SYM_TYPE_DOUBLE, + IMAGE_SYM_TYPE_STRUCT, + IMAGE_SYM_TYPE_UNION, + IMAGE_SYM_TYPE_ENUM, + IMAGE_SYM_TYPE_MOE, + IMAGE_SYM_TYPE_BYTE, + IMAGE_SYM_TYPE_WORD, + IMAGE_SYM_TYPE_UINT, + IMAGE_SYM_TYPE_DWORD // = 15 +} +const IMAGE_SYM_TYPE_PCODE = 32768; // ??? + +enum : ubyte { + IMAGE_SYM_DTYPE_NULL, + IMAGE_SYM_DTYPE_POINTER, + IMAGE_SYM_DTYPE_FUNCTION, + IMAGE_SYM_DTYPE_ARRAY +} + +enum : BYTE { + IMAGE_SYM_CLASS_END_OF_FUNCTION = 0xFF, + IMAGE_SYM_CLASS_NULL = 0, + IMAGE_SYM_CLASS_AUTOMATIC, + IMAGE_SYM_CLASS_EXTERNAL, + IMAGE_SYM_CLASS_STATIC, + IMAGE_SYM_CLASS_REGISTER, + IMAGE_SYM_CLASS_EXTERNAL_DEF, + IMAGE_SYM_CLASS_LABEL, + IMAGE_SYM_CLASS_UNDEFINED_LABEL, + IMAGE_SYM_CLASS_MEMBER_OF_STRUCT, + IMAGE_SYM_CLASS_ARGUMENT, + IMAGE_SYM_CLASS_STRUCT_TAG, + IMAGE_SYM_CLASS_MEMBER_OF_UNION, + IMAGE_SYM_CLASS_UNION_TAG, + IMAGE_SYM_CLASS_TYPE_DEFINITION, + IMAGE_SYM_CLASS_UNDEFINED_STATIC, + IMAGE_SYM_CLASS_ENUM_TAG, + IMAGE_SYM_CLASS_MEMBER_OF_ENUM, + IMAGE_SYM_CLASS_REGISTER_PARAM, + IMAGE_SYM_CLASS_BIT_FIELD, // = 18 + IMAGE_SYM_CLASS_FAR_EXTERNAL = 68, + IMAGE_SYM_CLASS_BLOCK = 100, + IMAGE_SYM_CLASS_FUNCTION, + IMAGE_SYM_CLASS_END_OF_STRUCT, + IMAGE_SYM_CLASS_FILE, + IMAGE_SYM_CLASS_SECTION, + IMAGE_SYM_CLASS_WEAK_EXTERNAL,// = 105 + IMAGE_SYM_CLASS_CLR_TOKEN = 107 +} + +enum : BYTE { + IMAGE_COMDAT_SELECT_NODUPLICATES = 1, + IMAGE_COMDAT_SELECT_ANY, + IMAGE_COMDAT_SELECT_SAME_SIZE, + IMAGE_COMDAT_SELECT_EXACT_MATCH, + IMAGE_COMDAT_SELECT_ASSOCIATIVE, + IMAGE_COMDAT_SELECT_LARGEST, + IMAGE_COMDAT_SELECT_NEWEST // = 7 +} + +enum : DWORD { + IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1, + IMAGE_WEAK_EXTERN_SEARCH_LIBRARY, + IMAGE_WEAK_EXTERN_SEARCH_ALIAS +} + +enum : WORD { + IMAGE_REL_I386_ABSOLUTE = 0x0000, + IMAGE_REL_I386_DIR16 = 0x0001, + IMAGE_REL_I386_REL16 = 0x0002, + IMAGE_REL_I386_DIR32 = 0x0006, + IMAGE_REL_I386_DIR32NB = 0x0007, + IMAGE_REL_I386_SEG12 = 0x0009, + IMAGE_REL_I386_SECTION = 0x000A, + IMAGE_REL_I386_SECREL = 0x000B, + IMAGE_REL_I386_TOKEN = 0x000C, + IMAGE_REL_I386_SECREL7 = 0x000D, + IMAGE_REL_I386_REL32 = 0x0014 +} + +enum : WORD { + IMAGE_REL_AMD64_ABSOLUTE = 0x0000, + IMAGE_REL_AMD64_ADDR64 = 0x0001, + IMAGE_REL_AMD64_ADDR32 = 0x0002, + IMAGE_REL_AMD64_ADDR32NB = 0x0003, + IMAGE_REL_AMD64_REL32 = 0x0004, + IMAGE_REL_AMD64_REL32_1 = 0x0005, + IMAGE_REL_AMD64_REL32_2 = 0x0006, + IMAGE_REL_AMD64_REL32_3 = 0x0007, + IMAGE_REL_AMD64_REL32_4 = 0x0008, + IMAGE_REL_AMD64_REL32_5 = 0x0009, + IMAGE_REL_AMD64_SECTION = 0x000A, + IMAGE_REL_AMD64_SECREL = 0x000B, + IMAGE_REL_AMD64_SECREL7 = 0x000C, + IMAGE_REL_AMD64_TOKEN = 0x000D, + IMAGE_REL_AMD64_SREL32 = 0x000E, + IMAGE_REL_AMD64_PAIR = 0x000F, + IMAGE_REL_AMD64_SSPAN32 = 0x0010 +} + +enum : WORD { + IMAGE_REL_IA64_ABSOLUTE = 0x0000, + IMAGE_REL_IA64_IMM14 = 0x0001, + IMAGE_REL_IA64_IMM22 = 0x0002, + IMAGE_REL_IA64_IMM64 = 0x0003, + IMAGE_REL_IA64_DIR32 = 0x0004, + IMAGE_REL_IA64_DIR64 = 0x0005, + IMAGE_REL_IA64_PCREL21B = 0x0006, + IMAGE_REL_IA64_PCREL21M = 0x0007, + IMAGE_REL_IA64_PCREL21F = 0x0008, + IMAGE_REL_IA64_GPREL22 = 0x0009, + IMAGE_REL_IA64_LTOFF22 = 0x000A, + IMAGE_REL_IA64_SECTION = 0x000B, + IMAGE_REL_IA64_SECREL22 = 0x000C, + IMAGE_REL_IA64_SECREL64I = 0x000D, + IMAGE_REL_IA64_SECREL32 = 0x000E, + IMAGE_REL_IA64_DIR32NB = 0x0010, + IMAGE_REL_IA64_SREL14 = 0x0011, + IMAGE_REL_IA64_SREL22 = 0x0012, + IMAGE_REL_IA64_SREL32 = 0x0013, + IMAGE_REL_IA64_UREL32 = 0x0014, + IMAGE_REL_IA64_PCREL60X = 0x0015, + IMAGE_REL_IA64_PCREL60B = 0x0016, + IMAGE_REL_IA64_PCREL60F = 0x0017, + IMAGE_REL_IA64_PCREL60I = 0x0018, + IMAGE_REL_IA64_PCREL60M = 0x0019, + IMAGE_REL_IA64_IMMGPREL64 = 0x001A, + IMAGE_REL_IA64_TOKEN = 0x001B, + IMAGE_REL_IA64_GPREL32 = 0x001C, + IMAGE_REL_IA64_ADDEND = 0x001F +} + +enum : WORD { + IMAGE_REL_SH3_ABSOLUTE = 0x0000, + IMAGE_REL_SH3_DIRECT16 = 0x0001, + IMAGE_REL_SH3_DIRECT32 = 0x0002, + IMAGE_REL_SH3_DIRECT8 = 0x0003, + IMAGE_REL_SH3_DIRECT8_WORD = 0x0004, + IMAGE_REL_SH3_DIRECT8_LONG = 0x0005, + IMAGE_REL_SH3_DIRECT4 = 0x0006, + IMAGE_REL_SH3_DIRECT4_WORD = 0x0007, + IMAGE_REL_SH3_DIRECT4_LONG = 0x0008, + IMAGE_REL_SH3_PCREL8_WORD = 0x0009, + IMAGE_REL_SH3_PCREL8_LONG = 0x000A, + IMAGE_REL_SH3_PCREL12_WORD = 0x000B, + IMAGE_REL_SH3_STARTOF_SECTION = 0x000C, + IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D, + IMAGE_REL_SH3_SECTION = 0x000E, + IMAGE_REL_SH3_SECREL = 0x000F, + IMAGE_REL_SH3_DIRECT32_NB = 0x0010, + IMAGE_REL_SH3_GPREL4_LONG = 0x0011, + IMAGE_REL_SH3_TOKEN = 0x0012, + IMAGE_REL_SHM_PCRELPT = 0x0013, + IMAGE_REL_SHM_REFLO = 0x0014, + IMAGE_REL_SHM_REFHALF = 0x0015, + IMAGE_REL_SHM_RELLO = 0x0016, + IMAGE_REL_SHM_RELHALF = 0x0017, + IMAGE_REL_SHM_PAIR = 0x0018, + IMAGE_REL_SHM_NOMODE = 0x8000 +} + +enum : WORD { + IMAGE_REL_M32R_ABSOLUTE = 0x0000, + IMAGE_REL_M32R_ADDR32 = 0x0001, + IMAGE_REL_M32R_ADDR32NB = 0x0002, + IMAGE_REL_M32R_ADDR24 = 0x0003, + IMAGE_REL_M32R_GPREL16 = 0x0004, + IMAGE_REL_M32R_PCREL24 = 0x0005, + IMAGE_REL_M32R_PCREL16 = 0x0006, + IMAGE_REL_M32R_PCREL8 = 0x0007, + IMAGE_REL_M32R_REFHALF = 0x0008, + IMAGE_REL_M32R_REFHI = 0x0009, + IMAGE_REL_M32R_REFLO = 0x000A, + IMAGE_REL_M32R_PAIR = 0x000B, + IMAGE_REL_M32R_SECTION = 0x000C, + IMAGE_REL_M32R_SECREL = 0x000D, + IMAGE_REL_M32R_TOKEN = 0x000E +} + +enum : WORD { + IMAGE_REL_MIPS_ABSOLUTE = 0x0000, + IMAGE_REL_MIPS_REFHALF = 0x0001, + IMAGE_REL_MIPS_REFWORD = 0x0002, + IMAGE_REL_MIPS_JMPADDR = 0x0003, + IMAGE_REL_MIPS_REFHI = 0x0004, + IMAGE_REL_MIPS_REFLO = 0x0005, + IMAGE_REL_MIPS_GPREL = 0x0006, + IMAGE_REL_MIPS_LITERAL = 0x0007, + IMAGE_REL_MIPS_SECTION = 0x000A, + IMAGE_REL_MIPS_SECREL = 0x000B, + IMAGE_REL_MIPS_SECRELLO = 0x000C, + IMAGE_REL_MIPS_SECRELHI = 0x000D, + IMAGE_REL_MIPS_JMPADDR16 = 0x0010, + IMAGE_REL_MIPS_REFWORDNB = 0x0022, + IMAGE_REL_MIPS_PAIR = 0x0025 +} + + +enum : WORD { + IMAGE_REL_ALPHA_ABSOLUTE, + IMAGE_REL_ALPHA_REFLONG, + IMAGE_REL_ALPHA_REFQUAD, + IMAGE_REL_ALPHA_GPREL32, + IMAGE_REL_ALPHA_LITERAL, + IMAGE_REL_ALPHA_LITUSE, + IMAGE_REL_ALPHA_GPDISP, + IMAGE_REL_ALPHA_BRADDR, + IMAGE_REL_ALPHA_HINT, + IMAGE_REL_ALPHA_INLINE_REFLONG, + IMAGE_REL_ALPHA_REFHI, + IMAGE_REL_ALPHA_REFLO, + IMAGE_REL_ALPHA_PAIR, + IMAGE_REL_ALPHA_MATCH, + IMAGE_REL_ALPHA_SECTION, + IMAGE_REL_ALPHA_SECREL, + IMAGE_REL_ALPHA_REFLONGNB, + IMAGE_REL_ALPHA_SECRELLO, + IMAGE_REL_ALPHA_SECRELHI // = 18 +} + +enum : WORD { + IMAGE_REL_PPC_ABSOLUTE, + IMAGE_REL_PPC_ADDR64, + IMAGE_REL_PPC_ADDR32, + IMAGE_REL_PPC_ADDR24, + IMAGE_REL_PPC_ADDR16, + IMAGE_REL_PPC_ADDR14, + IMAGE_REL_PPC_REL24, + IMAGE_REL_PPC_REL14, + IMAGE_REL_PPC_TOCREL16, + IMAGE_REL_PPC_TOCREL14, + IMAGE_REL_PPC_ADDR32NB, + IMAGE_REL_PPC_SECREL, + IMAGE_REL_PPC_SECTION, + IMAGE_REL_PPC_IFGLUE, + IMAGE_REL_PPC_IMGLUE, + IMAGE_REL_PPC_SECREL16, + IMAGE_REL_PPC_REFHI, + IMAGE_REL_PPC_REFLO, + IMAGE_REL_PPC_PAIR // = 18 +} + +// ??? +const IMAGE_REL_PPC_TYPEMASK = 0x00FF; +const IMAGE_REL_PPC_NEG = 0x0100; +const IMAGE_REL_PPC_BRTAKEN = 0x0200; +const IMAGE_REL_PPC_BRNTAKEN = 0x0400; +const IMAGE_REL_PPC_TOCDEFN = 0x0800; + +enum { + IMAGE_REL_BASED_ABSOLUTE, + IMAGE_REL_BASED_HIGH, + IMAGE_REL_BASED_LOW, + IMAGE_REL_BASED_HIGHLOW, + IMAGE_REL_BASED_HIGHADJ, + IMAGE_REL_BASED_MIPS_JMPADDR +} +// End of constants documented in pecoff.doc + +const size_t IMAGE_ARCHIVE_START_SIZE = 8; + +const TCHAR[] + IMAGE_ARCHIVE_START = "!\n", + IMAGE_ARCHIVE_END = "`\n", + IMAGE_ARCHIVE_PAD = "\n", + IMAGE_ARCHIVE_LINKER_MEMBER = "/ ", + IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; + +const IMAGE_ORDINAL_FLAG32 = 0x80000000; + +ulong IMAGE_ORDINAL64(ulong Ordinal) { return Ordinal & 0xFFFF; } +uint IMAGE_ORDINAL32(uint Ordinal) { return Ordinal & 0xFFFF; } + +bool IMAGE_SNAP_BY_ORDINAL32(uint Ordinal) { + return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; +} + +const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; + +bool IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal) { + return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; +} + +// ??? +const IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000; +const IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000; + +enum : DWORD { + IMAGE_DEBUG_TYPE_UNKNOWN, + IMAGE_DEBUG_TYPE_COFF, + IMAGE_DEBUG_TYPE_CODEVIEW, + IMAGE_DEBUG_TYPE_FPO, + IMAGE_DEBUG_TYPE_MISC, + IMAGE_DEBUG_TYPE_EXCEPTION, + IMAGE_DEBUG_TYPE_FIXUP, + IMAGE_DEBUG_TYPE_OMAP_TO_SRC, + IMAGE_DEBUG_TYPE_OMAP_FROM_SRC, + IMAGE_DEBUG_TYPE_BORLAND // = 9 +} + +enum : ubyte { + FRAME_FPO, + FRAME_TRAP, + FRAME_TSS, + FRAME_NONFPO +} + +// ??? +const IMAGE_DEBUG_MISC_EXENAME = 1; + +// ??? +const N_BTMASK = 0x000F; +const N_TMASK = 0x0030; +const N_TMASK1 = 0x00C0; +const N_TMASK2 = 0x00F0; +const N_BTSHFT = 4; +const N_TSHIFT = 2; + +const int + IS_TEXT_UNICODE_ASCII16 = 0x0001, + IS_TEXT_UNICODE_STATISTICS = 0x0002, + IS_TEXT_UNICODE_CONTROLS = 0x0004, + IS_TEXT_UNICODE_SIGNATURE = 0x0008, + IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010, + IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020, + IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040, + IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080, + IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100, + IS_TEXT_UNICODE_ODD_LENGTH = 0x0200, + IS_TEXT_UNICODE_NULL_BYTES = 0x1000, + IS_TEXT_UNICODE_UNICODE_MASK = 0x000F, + IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0, + IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00, + IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000; + +const DWORD + SERVICE_KERNEL_DRIVER = 0x0001, + SERVICE_FILE_SYSTEM_DRIVER = 0x0002, + SERVICE_ADAPTER = 0x0004, + SERVICE_RECOGNIZER_DRIVER = 0x0008, + SERVICE_WIN32_OWN_PROCESS = 0x0010, + SERVICE_WIN32_SHARE_PROCESS = 0x0020, + SERVICE_INTERACTIVE_PROCESS = 0x0100, + SERVICE_DRIVER = 0x000B, + SERVICE_WIN32 = 0x0030, + SERVICE_TYPE_ALL = 0x013F; + +enum : DWORD { + SERVICE_BOOT_START = 0, + SERVICE_SYSTEM_START = 1, + SERVICE_AUTO_START = 2, + SERVICE_DEMAND_START = 3, + SERVICE_DISABLED = 4 +} + +enum : DWORD { + SERVICE_ERROR_IGNORE = 0, + SERVICE_ERROR_NORMAL = 1, + SERVICE_ERROR_SEVERE = 2, + SERVICE_ERROR_CRITICAL = 3 +} + + +const uint + SE_OWNER_DEFAULTED = 0x0001, + SE_GROUP_DEFAULTED = 0x0002, + SE_DACL_PRESENT = 0x0004, + SE_DACL_DEFAULTED = 0x0008, + SE_SACL_PRESENT = 0x0010, + SE_SACL_DEFAULTED = 0x0020, + SE_DACL_AUTO_INHERIT_REQ = 0x0100, + SE_SACL_AUTO_INHERIT_REQ = 0x0200, + SE_DACL_AUTO_INHERITED = 0x0400, + SE_SACL_AUTO_INHERITED = 0x0800, + SE_DACL_PROTECTED = 0x1000, + SE_SACL_PROTECTED = 0x2000, + SE_SELF_RELATIVE = 0x8000; + +enum SECURITY_IMPERSONATION_LEVEL { + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation +} +alias SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; + +alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; +alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; + +const size_t SECURITY_DESCRIPTOR_MIN_LENGTH = 20; + +const DWORD + SECURITY_DESCRIPTOR_REVISION = 1, + SECURITY_DESCRIPTOR_REVISION1 = 1; + +const DWORD + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001, + SE_PRIVILEGE_ENABLED = 0x00000002, + SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000; + +const DWORD PRIVILEGE_SET_ALL_NECESSARY = 1; + +const SECURITY_IMPERSONATION_LEVEL + SECURITY_MAX_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation, + DEFAULT_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation; + +const BOOLEAN + SECURITY_DYNAMIC_TRACKING = true, + SECURITY_STATIC_TRACKING = false; + +// also in ddk/ntifs.h +const DWORD + TOKEN_ASSIGN_PRIMARY = 0x0001, + TOKEN_DUPLICATE = 0x0002, + TOKEN_IMPERSONATE = 0x0004, + TOKEN_QUERY = 0x0008, + TOKEN_QUERY_SOURCE = 0x0010, + TOKEN_ADJUST_PRIVILEGES = 0x0020, + TOKEN_ADJUST_GROUPS = 0x0040, + TOKEN_ADJUST_DEFAULT = 0x0080, + + TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED + | TOKEN_ASSIGN_PRIMARY + | TOKEN_DUPLICATE + | TOKEN_IMPERSONATE + | TOKEN_QUERY + | TOKEN_QUERY_SOURCE + | TOKEN_ADJUST_PRIVILEGES + | TOKEN_ADJUST_GROUPS + | TOKEN_ADJUST_DEFAULT, + TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY, + TOKEN_WRITE = STANDARD_RIGHTS_WRITE + | TOKEN_ADJUST_PRIVILEGES + | TOKEN_ADJUST_GROUPS + | TOKEN_ADJUST_DEFAULT, + TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE; + +const size_t TOKEN_SOURCE_LENGTH = 8; +// end ddk/ntifs.h + +enum : DWORD { + DLL_PROCESS_DETACH, + DLL_PROCESS_ATTACH, + DLL_THREAD_ATTACH, + DLL_THREAD_DETACH +} + +enum : DWORD { + DBG_CONTINUE = 0x00010002, + DBG_TERMINATE_THREAD = 0x40010003, + DBG_TERMINATE_PROCESS = 0x40010004, + DBG_CONTROL_C = 0x40010005, + DBG_CONTROL_BREAK = 0x40010008, + DBG_EXCEPTION_NOT_HANDLED = 0x80010001 +} + +enum : DWORD { + TAPE_ABSOLUTE_POSITION, + TAPE_LOGICAL_POSITION, + TAPE_PSEUDO_LOGICAL_POSITION +} + +enum : DWORD { + TAPE_REWIND, + TAPE_ABSOLUTE_BLOCK, + TAPE_LOGICAL_BLOCK, + TAPE_PSEUDO_LOGICAL_BLOCK, + TAPE_SPACE_END_OF_DATA, + TAPE_SPACE_RELATIVE_BLOCKS, + TAPE_SPACE_FILEMARKS, + TAPE_SPACE_SEQUENTIAL_FMKS, + TAPE_SPACE_SETMARKS, + TAPE_SPACE_SEQUENTIAL_SMKS +} + +const DWORD + TAPE_DRIVE_FIXED = 0x00000001, + TAPE_DRIVE_SELECT = 0x00000002, + TAPE_DRIVE_INITIATOR = 0x00000004, + TAPE_DRIVE_ERASE_SHORT = 0x00000010, + TAPE_DRIVE_ERASE_LONG = 0x00000020, + TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040, + TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080, + TAPE_DRIVE_TAPE_CAPACITY = 0x00000100, + TAPE_DRIVE_TAPE_REMAINING = 0x00000200, + TAPE_DRIVE_FIXED_BLOCK = 0x00000400, + TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800, + TAPE_DRIVE_WRITE_PROTECT = 0x00001000, + TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000, + TAPE_DRIVE_ECC = 0x00010000, + TAPE_DRIVE_COMPRESSION = 0x00020000, + TAPE_DRIVE_PADDING = 0x00040000, + TAPE_DRIVE_REPORT_SMKS = 0x00080000, + TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000, + TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000, + TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000, + TAPE_DRIVE_EJECT_MEDIA = 0x01000000, + TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000, + TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000, + TAPE_DRIVE_RESERVED_BIT = 0x80000000; + +const DWORD + TAPE_DRIVE_LOAD_UNLOAD = 0x80000001, + TAPE_DRIVE_TENSION = 0x80000002, + TAPE_DRIVE_LOCK_UNLOCK = 0x80000004, + TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008, + TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010, + TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020, + TAPE_DRIVE_TENSION_IMMED = 0x80000040, + TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080, + TAPE_DRIVE_SET_ECC = 0x80000100, + TAPE_DRIVE_SET_COMPRESSION = 0x80000200, + TAPE_DRIVE_SET_PADDING = 0x80000400, + TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800, + TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000, + TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000, + TAPE_DRIVE_LOGICAL_BLK = 0x80004000, + TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000, + TAPE_DRIVE_END_OF_DATA = 0x80010000, + TAPE_DRIVE_RELATIVE_BLKS = 0x80020000, + TAPE_DRIVE_FILEMARKS = 0x80040000, + TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000, + TAPE_DRIVE_SETMARKS = 0x80100000, + TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000, + TAPE_DRIVE_REVERSE_POSITION = 0x80400000, + TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000, + TAPE_DRIVE_WRITE_SETMARKS = 0x81000000, + TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000, + TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000, + TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000, + TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000, + TAPE_DRIVE_FORMAT = 0xA0000000, + TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000, + TAPE_DRIVE_HIGH_FEATURES = 0x80000000; + +enum : DWORD { + TAPE_FIXED_PARTITIONS = 0, + TAPE_SELECT_PARTITIONS = 1, + TAPE_INITIATOR_PARTITIONS = 2 +} + +enum : DWORD { + TAPE_SETMARKS, + TAPE_FILEMARKS, + TAPE_SHORT_FILEMARKS, + TAPE_LONG_FILEMARKS +} + +enum : DWORD { + TAPE_ERASE_SHORT, + TAPE_ERASE_LONG +} + +enum : DWORD { + TAPE_LOAD, + TAPE_UNLOAD, + TAPE_TENSION, + TAPE_LOCK, + TAPE_UNLOCK, + TAPE_FORMAT +} + +enum : ULONG32 { + VER_PLATFORM_WIN32s, + VER_PLATFORM_WIN32_WINDOWS, + VER_PLATFORM_WIN32_NT +} + +enum : UCHAR { + VER_NT_WORKSTATION = 1, + VER_NT_DOMAIN_CONTROLLER, + VER_NT_SERVER +} + +const USHORT + VER_SUITE_SMALLBUSINESS = 0x0001, + VER_SUITE_ENTERPRISE = 0x0002, + VER_SUITE_BACKOFFICE = 0x0004, + VER_SUITE_TERMINAL = 0x0010, + VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x0020, + VER_SUITE_EMBEDDEDNT = 0x0040, + VER_SUITE_DATACENTER = 0x0080, + VER_SUITE_SINGLEUSERTS = 0x0100, + VER_SUITE_PERSONAL = 0x0200, + VER_SUITE_BLADE = 0x0400, + VER_SUITE_STORAGE_SERVER = 0x2000, + VER_SUITE_COMPUTE_SERVER = 0x4000; + +const ULONG + WT_EXECUTEDEFAULT = 0x00000000, + WT_EXECUTEINIOTHREAD = 0x00000001, + WT_EXECUTEINWAITTHREAD = 0x00000004, + WT_EXECUTEONLYONCE = 0x00000008, + WT_EXECUTELONGFUNCTION = 0x00000010, + WT_EXECUTEINTIMERTHREAD = 0x00000020, + WT_EXECUTEINPERSISTENTTHREAD = 0x00000080, + WT_TRANSFER_IMPERSONATION = 0x00000100; + +static if (_WIN32_WINNT >= 0x500) { + const DWORD + VER_MINORVERSION = 0x01, + VER_MAJORVERSION = 0x02, + VER_BUILDNUMBER = 0x04, + VER_PLATFORMID = 0x08, + VER_SERVICEPACKMINOR = 0x10, + VER_SERVICEPACKMAJOR = 0x20, + VER_SUITENAME = 0x40, + VER_PRODUCT_TYPE = 0x80; + + enum : DWORD { + VER_EQUAL = 1, + VER_GREATER, + VER_GREATER_EQUAL, + VER_LESS, + VER_LESS_EQUAL, + VER_AND, + VER_OR // = 7 + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum : ULONG { + ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1, + ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION, + ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7 + ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9 + } +} + +// Macros +BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); } +bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } +bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } +bool ISARY(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } +bool ISTAG(uint x) { + return x == IMAGE_SYM_CLASS_STRUCT_TAG + || x == IMAGE_SYM_CLASS_UNION_TAG + || x == IMAGE_SYM_CLASS_ENUM_TAG; +} +uint INCREF(uint x) { + return ((x & ~N_BTMASK) << N_TSHIFT) | (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT) + | (x & N_BTMASK); +} +uint DECREF(uint x) { return ((x >>> N_TSHIFT) & ~N_BTMASK) | (x & N_BTMASK); } + +const DWORD TLS_MINIMUM_AVAILABLE = 64; + +const ULONG + IO_REPARSE_TAG_RESERVED_ZERO = 0, + IO_REPARSE_TAG_RESERVED_ONE = 1, + IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE, + IO_REPARSE_TAG_SYMBOLIC_LINK = IO_REPARSE_TAG_RESERVED_ZERO, + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003, + IO_REPARSE_TAG_SYMLINK = 0xA000000C, + IO_REPARSE_TAG_VALID_VALUES = 0xE000FFFF; + +/* Although these are semantically boolean, they are documented and + * implemented to return ULONG; this behaviour is preserved for compatibility + */ +ULONG IsReparseTagMicrosoft(ULONG x) { return x & 0x80000000; } +ULONG IsReparseTagHighLatency(ULONG x) { return x & 0x40000000; } +ULONG IsReparseTagNameSurrogate(ULONG x) { return x & 0x20000000; } + +bool IsReparseTagValid(ULONG x) { + return !(x & ~IO_REPARSE_TAG_VALID_VALUES) && (x > IO_REPARSE_TAG_RESERVED_RANGE); +} + +// Doesn't seem to make sense, but anyway.... +ULONG WT_SET_MAX_THREADPOOL_THREADS(ref ULONG Flags, ushort Limit) { + return Flags |= Limit << 16; +} + +import win32.basetyps; +/* also in win32.basetyps +struct GUID { + uint Data1; + ushort Data2; + ushort Data3; + ubyte Data4[8]; +} +alias GUID* REFGUID, LPGUID; +*/ + +struct GENERIC_MAPPING { + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; +} +alias GENERIC_MAPPING* PGENERIC_MAPPING; + +struct ACE_HEADER { + BYTE AceType; + BYTE AceFlags; + WORD AceSize; +} +alias ACE_HEADER* PACE_HEADER; + +struct ACCESS_ALLOWED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; + +struct ACCESS_DENIED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; + +struct SYSTEM_AUDIT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE; + +struct SYSTEM_ALARM_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias SYSTEM_ALARM_ACE* PSYSTEM_ALARM_ACE; + +struct ACCESS_ALLOWED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias ACCESS_ALLOWED_OBJECT_ACE* PACCESS_ALLOWED_OBJECT_ACE; + +struct ACCESS_DENIED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias ACCESS_DENIED_OBJECT_ACE* PACCESS_DENIED_OBJECT_ACE; + +struct SYSTEM_AUDIT_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias SYSTEM_AUDIT_OBJECT_ACE* PSYSTEM_AUDIT_OBJECT_ACE; + +struct SYSTEM_ALARM_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; + +struct ACL { + BYTE AclRevision; + BYTE Sbz1; + WORD AclSize; + WORD AceCount; + WORD Sbz2; +} +alias ACL* PACL; + +struct ACL_REVISION_INFORMATION { + DWORD AclRevision; +} + +struct ACL_SIZE_INFORMATION { + DWORD AceCount; + DWORD AclBytesInUse; + DWORD AclBytesFree; +} + +version (X86) { + // ??? + const SIZE_OF_80387_REGISTERS = 80; + const CONTEXT_i386 = 0x010000; + const CONTEXT_i486 = 0x010000; + const CONTEXT_CONTROL = CONTEXT_i386 | 0x01; + const CONTEXT_INTEGER = CONTEXT_i386 | 0x02; + const CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04; + const CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08; + const CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10; + const CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20; + const CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS; + const MAXIMUM_SUPPORTED_EXTENSION = 512; + + struct FLOATING_SAVE_AREA { + DWORD ControlWord; + DWORD StatusWord; + DWORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + BYTE[80] RegisterArea; + DWORD Cr0NpxState; + } + + 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; + BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters; + } + +} else version(X86_64) +{ + const CONTEXT_AMD64 = 0x100000; + + const CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L); + const CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L); + const CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L); + const CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L); + const CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L); + + const CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT); + const CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS); + + const CONTEXT_EXCEPTION_ACTIVE = 0x8000000; + const CONTEXT_SERVICE_ACTIVE = 0x10000000; + const CONTEXT_EXCEPTION_REQUEST = 0x40000000; + const CONTEXT_EXCEPTION_REPORTING = 0x80000000; + + const INITIAL_MXCSR = 0x1f80; + const INITIAL_FPCSR = 0x027f; + + align(16) struct M128A + { + ULONGLONG Low; + LONGLONG High; + } + alias M128A* PM128A; + + struct XMM_SAVE_AREA32 + { + WORD ControlWord; + WORD StatusWord; + BYTE TagWord; + BYTE Reserved1; + WORD ErrorOpcode; + DWORD ErrorOffset; + WORD ErrorSelector; + WORD Reserved2; + DWORD DataOffset; + WORD DataSelector; + WORD Reserved3; + DWORD MxCsr; + DWORD MxCsr_Mask; + M128A[8] FloatRegisters; + M128A[16] XmmRegisters; + BYTE[96] Reserved4; + } + alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32; + const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof; + + align(16) struct CONTEXT + { + DWORD64 P1Home; + DWORD64 P2Home; + DWORD64 P3Home; + DWORD64 P4Home; + DWORD64 P5Home; + DWORD64 P6Home; + DWORD ContextFlags; + DWORD MxCsr; + WORD SegCs; + WORD SegDs; + WORD SegEs; + WORD SegFs; + WORD SegGs; + WORD SegSs; + DWORD EFlags; + DWORD64 Dr0; + DWORD64 Dr1; + DWORD64 Dr2; + DWORD64 Dr3; + DWORD64 Dr6; + DWORD64 Dr7; + DWORD64 Rax; + DWORD64 Rcx; + DWORD64 Rdx; + DWORD64 Rbx; + DWORD64 Rsp; + DWORD64 Rbp; + DWORD64 Rsi; + DWORD64 Rdi; + DWORD64 R8; + DWORD64 R9; + DWORD64 R10; + DWORD64 R11; + DWORD64 R12; + DWORD64 R13; + DWORD64 R14; + DWORD64 R15; + DWORD64 Rip; + union + { + XMM_SAVE_AREA32 FltSave; + XMM_SAVE_AREA32 FloatSave; + struct + { + M128A[2] Header; + M128A[8] Legacy; + M128A Xmm0; + M128A Xmm1; + M128A Xmm2; + M128A Xmm3; + M128A Xmm4; + M128A Xmm5; + M128A Xmm6; + M128A Xmm7; + M128A Xmm8; + M128A Xmm9; + M128A Xmm10; + M128A Xmm11; + M128A Xmm12; + M128A Xmm13; + M128A Xmm14; + M128A Xmm15; + }; + }; + M128A[26] VectorRegister; + DWORD64 VectorControl; + DWORD64 DebugControl; + DWORD64 LastBranchToRip; + DWORD64 LastBranchFromRip; + DWORD64 LastExceptionToRip; + DWORD64 LastExceptionFromRip; + } + +} else { + static assert(false, "Unsupported CPU"); + // Versions for PowerPC, Alpha, SHX, and MIPS removed. +} + +alias CONTEXT* PCONTEXT, LPCONTEXT; + +struct EXCEPTION_RECORD { + DWORD ExceptionCode; + DWORD ExceptionFlags; + EXCEPTION_RECORD* ExceptionRecord; + PVOID ExceptionAddress; + DWORD NumberParameters; + DWORD[EXCEPTION_MAXIMUM_PARAMETERS] ExceptionInformation; +} +alias EXCEPTION_RECORD* PEXCEPTION_RECORD, LPEXCEPTION_RECORD; + +struct EXCEPTION_POINTERS { + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; +} +alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS, LPEXCEPTION_POINTERS; + +union LARGE_INTEGER { + struct { + uint LowPart; + int HighPart; + } + long QuadPart; +} +alias LARGE_INTEGER* PLARGE_INTEGER; + +union ULARGE_INTEGER { + struct { + uint LowPart; + uint HighPart; + } + ulong QuadPart; +} +alias ULARGE_INTEGER* PULARGE_INTEGER; + +alias LARGE_INTEGER LUID; +alias LUID* PLUID; + +const LUID SYSTEM_LUID = { QuadPart:999 }; + +align(4) struct LUID_AND_ATTRIBUTES { + LUID Luid; + DWORD Attributes; +} +alias LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; + +struct PRIVILEGE_SET { + DWORD PrivilegeCount; + DWORD Control; + LUID_AND_ATTRIBUTES _Privilege; + + LUID_AND_ATTRIBUTES* Privilege() { return &_Privilege; } +} +alias PRIVILEGE_SET* PPRIVILEGE_SET; + +struct SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; +} +alias SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES; + +struct SECURITY_QUALITY_OF_SERVICE { + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; +} +alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; + +alias PVOID PACCESS_TOKEN; + +struct SE_IMPERSONATION_STATE { + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; +} +alias SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; + +struct SID_IDENTIFIER_AUTHORITY { + BYTE[6] Value; +} +alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY, LPSID_IDENTIFIER_AUTHORITY; + +alias PVOID PSID; + +struct SID { + BYTE Revision; + BYTE SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; + DWORD _SubAuthority; + + DWORD* SubAuthority() { return &_SubAuthority; } +} +alias SID* PISID; + +struct SID_AND_ATTRIBUTES { + PSID Sid; + DWORD Attributes; +} +alias SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; + +struct TOKEN_SOURCE { + CHAR[TOKEN_SOURCE_LENGTH] SourceName; + LUID SourceIdentifier; +} +alias TOKEN_SOURCE* PTOKEN_SOURCE; + +struct TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; +} +alias TOKEN_CONTROL* PTOKEN_CONTROL; + +struct TOKEN_DEFAULT_DACL { + PACL DefaultDacl; +} +alias TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; + +struct TOKEN_GROUPS { + DWORD GroupCount; + SID_AND_ATTRIBUTES _Groups; + + SID_AND_ATTRIBUTES* Groups() { return &_Groups; } +} +alias TOKEN_GROUPS* PTOKEN_GROUPS, LPTOKEN_GROUPS; + +struct TOKEN_OWNER { + PSID Owner; +} +alias TOKEN_OWNER* PTOKEN_OWNER; + +struct TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; +} +alias TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; + +struct TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES _Privileges; + + LUID_AND_ATTRIBUTES* Privileges() { return &_Privileges; } +} +alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES, LPTOKEN_PRIVILEGES; + +enum TOKEN_TYPE { + TokenPrimary = 1, + TokenImpersonation +} +alias TOKEN_TYPE* PTOKEN_TYPE; + +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* PTOKEN_STATISTICS; + +struct TOKEN_USER { + SID_AND_ATTRIBUTES User; +} +alias TOKEN_USER* PTOKEN_USER; + +alias DWORD SECURITY_INFORMATION; +alias SECURITY_INFORMATION* PSECURITY_INFORMATION; +alias WORD SECURITY_DESCRIPTOR_CONTROL; +alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL; + +struct SECURITY_DESCRIPTOR { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; +} +alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR, PISECURITY_DESCRIPTOR; + +enum TOKEN_INFORMATION_CLASS { + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, + TokenAuditPolicy, + TokenOrigin +} + +enum SID_NAME_USE { + SidTypeUser = 1, + SidTypeGroup, + SidTypeDomain, + SidTypeAlias, + SidTypeWellKnownGroup, + SidTypeDeletedAccount, + SidTypeInvalid, + SidTypeUnknown, + SidTypeComputer +} +alias SID_NAME_USE* PSID_NAME_USE; + +struct QUOTA_LIMITS { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; +} +alias QUOTA_LIMITS* PQUOTA_LIMITS; + +struct IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; +} +alias IO_COUNTERS* PIO_COUNTERS; + +struct FILE_NOTIFY_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR _FileName; + + WCHAR* FileName() { return &_FileName; } +} +alias FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; + +struct TAPE_ERASE { + DWORD Type; + BOOLEAN Immediate; +} +alias TAPE_ERASE* PTAPE_ERASE; + +struct TAPE_GET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + DWORD DefaultBlockSize; + DWORD MaximumBlockSize; + DWORD MinimumBlockSize; + DWORD MaximumPartitionCount; + DWORD FeaturesLow; + DWORD FeaturesHigh; + DWORD EOTWarningZoneSize; +} +alias TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; + +struct TAPE_GET_MEDIA_PARAMETERS { + LARGE_INTEGER Capacity; + LARGE_INTEGER Remaining; + DWORD BlockSize; + DWORD PartitionCount; + BOOLEAN WriteProtected; +} +alias TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; + +struct TAPE_GET_POSITION { + ULONG Type; + ULONG Partition; + ULONG OffsetLow; + ULONG OffsetHigh; +} +alias TAPE_GET_POSITION* PTAPE_GET_POSITION; + +struct TAPE_PREPARE { + DWORD Operation; + BOOLEAN Immediate; +} +alias TAPE_PREPARE* PTAPE_PREPARE; + +struct TAPE_SET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + ULONG EOTWarningZoneSize; +} +alias TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; + +struct TAPE_SET_MEDIA_PARAMETERS { + ULONG BlockSize; +} +alias TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; + +struct TAPE_SET_POSITION { + DWORD Method; + DWORD Partition; + LARGE_INTEGER Offset; + BOOLEAN Immediate; +} +alias TAPE_SET_POSITION* PTAPE_SET_POSITION; + +struct TAPE_WRITE_MARKS { + DWORD Type; + DWORD Count; + BOOLEAN Immediate; +} +alias TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; + +struct TAPE_CREATE_PARTITION { + DWORD Method; + DWORD Count; + DWORD Size; +} +alias TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; + +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; + +struct MESSAGE_RESOURCE_ENTRY { + WORD Length; + WORD Flags; + BYTE _Text; + + BYTE* Text() { return &_Text; } +} +alias MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; + +struct MESSAGE_RESOURCE_BLOCK { + DWORD LowId; + DWORD HighId; + DWORD OffsetToEntries; +} +alias MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; + +struct MESSAGE_RESOURCE_DATA { + DWORD NumberOfBlocks; + MESSAGE_RESOURCE_BLOCK _Blocks; + + MESSAGE_RESOURCE_BLOCK* Blocks() { return &_Blocks; } +} +alias MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; + +struct LIST_ENTRY { + LIST_ENTRY* Flink; + LIST_ENTRY* Blink; +} +alias LIST_ENTRY* PLIST_ENTRY; + +struct SINGLE_LIST_ENTRY { + SINGLE_LIST_ENTRY* Next; +} +alias SINGLE_LIST_ENTRY SLIST_ENTRY; +alias SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY, PSLIST_ENTRY; + +union SLIST_HEADER { + ULONGLONG Alignment; + struct { + SLIST_ENTRY Next; + WORD Depth; + WORD Sequence; + } +} +alias SLIST_HEADER* PSLIST_HEADER; + +struct RTL_CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + RTL_CRITICAL_SECTION* CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD[2] Spare; +} +alias RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; + +struct RTL_CRITICAL_SECTION { + PRTL_CRITICAL_SECTION_DEBUG DebugInfo; + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + DWORD Reserved; +} +alias RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; + +struct EVENTLOGRECORD { + DWORD Length; + DWORD Reserved; + DWORD RecordNumber; + DWORD TimeGenerated; + DWORD TimeWritten; + DWORD EventID; + WORD EventType; + WORD NumStrings; + WORD EventCategory; + WORD ReservedFlags; + DWORD ClosingRecordNumber; + DWORD StringOffset; + DWORD UserSidLength; + DWORD UserSidOffset; + DWORD DataLength; + DWORD DataOffset; +} +alias EVENTLOGRECORD* PEVENTLOGRECORD; + +struct OSVERSIONINFOA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR[128] szCSDVersion; +} +alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA; + +struct OSVERSIONINFOW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR[128] szCSDVersion; +} +alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW; + +struct OSVERSIONINFOEXA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR[128] szCSDVersion; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias OSVERSIONINFOEXA* POSVERSIONINFOEXA, LPOSVERSIONINFOEXA; + +struct OSVERSIONINFOEXW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR[128] szCSDVersion; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias OSVERSIONINFOEXW* POSVERSIONINFOEXW, LPOSVERSIONINFOEXW; + +align(2) struct IMAGE_VXD_HEADER { + WORD e32_magic; + BYTE e32_border; + BYTE e32_worder; + DWORD e32_level; + WORD e32_cpu; + WORD e32_os; + DWORD e32_ver; + DWORD e32_mflags; + DWORD e32_mpages; + DWORD e32_startobj; + DWORD e32_eip; + DWORD e32_stackobj; + DWORD e32_esp; + DWORD e32_pagesize; + DWORD e32_lastpagesize; + DWORD e32_fixupsize; + DWORD e32_fixupsum; + DWORD e32_ldrsize; + DWORD e32_ldrsum; + DWORD e32_objtab; + DWORD e32_objcnt; + DWORD e32_objmap; + DWORD e32_itermap; + DWORD e32_rsrctab; + DWORD e32_rsrccnt; + DWORD e32_restab; + DWORD e32_enttab; + DWORD e32_dirtab; + DWORD e32_dircnt; + DWORD e32_fpagetab; + DWORD e32_frectab; + DWORD e32_impmod; + DWORD e32_impmodcnt; + DWORD e32_impproc; + DWORD e32_pagesum; + DWORD e32_datapage; + DWORD e32_preload; + DWORD e32_nrestab; + DWORD e32_cbnrestab; + DWORD e32_nressum; + DWORD e32_autodata; + DWORD e32_debuginfo; + DWORD e32_debuglen; + DWORD e32_instpreload; + DWORD e32_instdemand; + DWORD e32_heapsize; + BYTE[12] e32_res3; + DWORD e32_winresoff; + DWORD e32_winreslen; + WORD e32_devid; + WORD e32_ddkver; +} +alias IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; + +align(4): +struct IMAGE_FILE_HEADER { + WORD Machine; + WORD NumberOfSections; + DWORD TimeDateStamp; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + WORD SizeOfOptionalHeader; + WORD Characteristics; +} +alias IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; +// const IMAGE_SIZEOF_FILE_HEADER = IMAGE_FILE_HEADER.sizeof; + +struct IMAGE_DATA_DIRECTORY { + DWORD VirtualAddress; + DWORD Size; +} +alias IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; + +struct IMAGE_OPTIONAL_HEADER32 { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + DWORD SizeOfStackReserve; + DWORD SizeOfStackCommit; + DWORD SizeOfHeapReserve; + DWORD SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; +} +alias IMAGE_OPTIONAL_HEADER32* PIMAGE_OPTIONAL_HEADER32; + +struct IMAGE_OPTIONAL_HEADER64 { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + ULONGLONG ImageBase; + DWORD SectionAlignment; + DWORD FileAlignment; + WORD MajorOperatingSystemVersion; + WORD MinorOperatingSystemVersion; + WORD MajorImageVersion; + WORD MinorImageVersion; + WORD MajorSubsystemVersion; + WORD MinorSubsystemVersion; + DWORD Win32VersionValue; + DWORD SizeOfImage; + DWORD SizeOfHeaders; + DWORD CheckSum; + WORD Subsystem; + WORD DllCharacteristics; + ULONGLONG SizeOfStackReserve; + ULONGLONG SizeOfStackCommit; + ULONGLONG SizeOfHeapReserve; + ULONGLONG SizeOfHeapCommit; + DWORD LoaderFlags; + DWORD NumberOfRvaAndSizes; + IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] DataDirectory; +} +alias IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; + +struct IMAGE_ROM_OPTIONAL_HEADER { + WORD Magic; + BYTE MajorLinkerVersion; + BYTE MinorLinkerVersion; + DWORD SizeOfCode; + DWORD SizeOfInitializedData; + DWORD SizeOfUninitializedData; + DWORD AddressOfEntryPoint; + DWORD BaseOfCode; + DWORD BaseOfData; + DWORD BaseOfBss; + DWORD GprMask; + DWORD[4] CprMask; + DWORD GpValue; +} +alias IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; + +align(2): +struct IMAGE_DOS_HEADER { + WORD e_magic; + WORD e_cblp; + WORD e_cp; + WORD e_crlc; + WORD e_cparhdr; + WORD e_minalloc; + WORD e_maxalloc; + WORD e_ss; + WORD e_sp; + WORD e_csum; + WORD e_ip; + WORD e_cs; + WORD e_lfarlc; + WORD e_ovno; + WORD[4] e_res; + WORD e_oemid; + WORD e_oeminfo; + WORD[10] e_res2; + LONG e_lfanew; +} +alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER; + +struct IMAGE_OS2_HEADER { + WORD ne_magic; + CHAR ne_ver; + CHAR ne_rev; + WORD ne_enttab; + WORD ne_cbenttab; + LONG ne_crc; + WORD ne_flags; + WORD ne_autodata; + WORD ne_heap; + WORD ne_stack; + LONG ne_csip; + LONG ne_sssp; + WORD ne_cseg; + WORD ne_cmod; + WORD ne_cbnrestab; + WORD ne_segtab; + WORD ne_rsrctab; + WORD ne_restab; + WORD ne_modtab; + WORD ne_imptab; + LONG ne_nrestab; + WORD ne_cmovent; + WORD ne_align; + WORD ne_cres; + BYTE ne_exetyp; + BYTE ne_flagsothers; + WORD ne_pretthunks; + WORD ne_psegrefbytes; + WORD ne_swaparea; + WORD ne_expver; +} +alias IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; + +align(4) struct IMAGE_NT_HEADERS32 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_NT_HEADERS32* PIMAGE_NT_HEADERS32; + +align(4) struct IMAGE_NT_HEADERS64 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; + +struct IMAGE_ROM_HEADERS { + IMAGE_FILE_HEADER FileHeader; + IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; +} +alias IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; + +struct IMAGE_SECTION_HEADER { + BYTE[IMAGE_SIZEOF_SHORT_NAME] Name; + union _Misc { + DWORD PhysicalAddress; + DWORD VirtualSize; + } + _Misc Misc; + DWORD VirtualAddress; + DWORD SizeOfRawData; + DWORD PointerToRawData; + DWORD PointerToRelocations; + DWORD PointerToLinenumbers; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD Characteristics; +} +alias IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; + +struct IMAGE_SYMBOL { + union _N { + BYTE[8] ShortName; + struct Name { + DWORD Short; + DWORD Long; + } + PBYTE[2] LongName; + } + _N N; + DWORD Value; + SHORT SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; +} +alias IMAGE_SYMBOL* PIMAGE_SYMBOL; + +union IMAGE_AUX_SYMBOL { + struct _Sym { + DWORD TagIndex; + union _Misc { + struct _LnSz { + WORD Linenumber; + WORD Size; + } + _LnSz LnSz; + DWORD TotalSize; + } + _Misc Misc; + union _FcnAry { + struct _Function { + DWORD PointerToLinenumber; + DWORD PointerToNextFunction; + } + _Function Function; + struct _Array { + WORD[4] Dimension; + } + _Array Array; + } + _FcnAry FcnAry; + WORD TvIndex; + } + _Sym Sym; + struct _File { + BYTE[IMAGE_SIZEOF_SYMBOL] Name; + } + _File File; + struct _Section { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; + } + _Section Section; +} +alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; + +struct IMAGE_COFF_SYMBOLS_HEADER { + DWORD NumberOfSymbols; + DWORD LvaToFirstSymbol; + DWORD NumberOfLinenumbers; + DWORD LvaToFirstLinenumber; + DWORD RvaToFirstByteOfCode; + DWORD RvaToLastByteOfCode; + DWORD RvaToFirstByteOfData; + DWORD RvaToLastByteOfData; +} +alias IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; + +struct IMAGE_RELOCATION { + union { + DWORD VirtualAddress; + DWORD RelocCount; + } + DWORD SymbolTableIndex; + WORD Type; +} +alias IMAGE_RELOCATION* PIMAGE_RELOCATION; + +align(4) struct IMAGE_BASE_RELOCATION { + DWORD VirtualAddress; + DWORD SizeOfBlock; +} +alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; + +align(2) struct IMAGE_LINENUMBER { + union _Type { + DWORD SymbolTableIndex; + DWORD VirtualAddress; + } + _Type Type; + WORD Linenumber; +} +alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; + +align(4): +struct IMAGE_ARCHIVE_MEMBER_HEADER { + BYTE[16] Name; + BYTE[12] Date; + BYTE[6] UserID; + BYTE[6] GroupID; + BYTE[8] Mode; + BYTE[10] Size; + BYTE[2] EndHeader; +} +alias IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; + +struct IMAGE_EXPORT_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Name; + DWORD Base; + DWORD NumberOfFunctions; + DWORD NumberOfNames; + DWORD AddressOfFunctions; + DWORD AddressOfNames; + DWORD AddressOfNameOrdinals; +} +alias IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; + +struct IMAGE_IMPORT_BY_NAME { + WORD Hint; + BYTE _Name; + + BYTE* Name() { + return &_Name; + } +} +alias IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; + +struct IMAGE_THUNK_DATA32 { + union _u1 { + DWORD ForwarderString; + DWORD Function; + DWORD Ordinal; + DWORD AddressOfData; + } + _u1 u1; +} +alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; + +struct IMAGE_THUNK_DATA64 { + union _u1 { + ULONGLONG ForwarderString; + ULONGLONG Function; + ULONGLONG Ordinal; + ULONGLONG AddressOfData; + } + _u1 u1; +} +alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; + +struct IMAGE_IMPORT_DESCRIPTOR { + union { + DWORD Characteristics; + DWORD OriginalFirstThunk; + } + DWORD TimeDateStamp; + DWORD ForwarderChain; + DWORD Name; + DWORD FirstThunk; +} +alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; + +struct IMAGE_BOUND_IMPORT_DESCRIPTOR { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD NumberOfModuleForwarderRefs; +} +alias IMAGE_BOUND_IMPORT_DESCRIPTOR* PIMAGE_BOUND_IMPORT_DESCRIPTOR; + +struct IMAGE_BOUND_FORWARDER_REF { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD Reserved; +} +alias IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; + +struct IMAGE_TLS_DIRECTORY32 { + DWORD StartAddressOfRawData; + DWORD EndAddressOfRawData; + DWORD AddressOfIndex; + DWORD AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; + +struct IMAGE_TLS_DIRECTORY64 { + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; + ULONGLONG AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; + +struct IMAGE_RESOURCE_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + WORD NumberOfNamedEntries; + WORD NumberOfIdEntries; +} +alias IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; + +struct IMAGE_RESOURCE_DIRECTORY_ENTRY { + union { + /+struct { + DWORD NameOffset:31; + DWORD NameIsString:1; + }+/ + DWORD Name; + WORD Id; + } + DWORD OffsetToData; + /+struct { + DWORD OffsetToDirectory:31; + DWORD DataIsDirectory:1; + }+/ + + uint NameOffset() { return Name & 0x7FFFFFFF; } + bool NameIsString() { return cast(bool)(Name & 0x80000000); } + uint OffsetToDirectory() { return OffsetToData & 0x7FFFFFFF; } + bool DataIsDirectory() { return cast(bool)(OffsetToData & 0x80000000); } + + uint NameOffset(uint n) { + Name = (Name & 0x80000000) | (n & 0x7FFFFFFF); + return n & 0x7FFFFFFF; + } + + bool NameIsString(bool n) { + Name = (Name & 0x7FFFFFFF) | (n << 31); return n; + } + + uint OffsetToDirectory(uint o) { + OffsetToData = (OffsetToData & 0x80000000) | (o & 0x7FFFFFFF); + return o & 0x7FFFFFFF; + } + + bool DataIsDirectory(bool d) { + OffsetToData = (OffsetToData & 0x7FFFFFFF) | (d << 31); return d; + } +} +alias IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY; + +struct IMAGE_RESOURCE_DIRECTORY_STRING { + WORD Length; + CHAR _NameString; + + CHAR* NameString() { return &_NameString; } +} +alias IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; + +struct IMAGE_RESOURCE_DIR_STRING_U { + WORD Length; + WCHAR _NameString; + + WCHAR* NameString() { return &_NameString; } +} +alias IMAGE_RESOURCE_DIR_STRING_U* PIMAGE_RESOURCE_DIR_STRING_U; + +struct IMAGE_RESOURCE_DATA_ENTRY { + DWORD OffsetToData; + DWORD Size; + DWORD CodePage; + DWORD Reserved; +} +alias IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; + +struct IMAGE_LOAD_CONFIG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + DWORD DeCommitFreeBlockThreshold; + DWORD DeCommitTotalFreeThreshold; + PVOID LockPrefixTable; + DWORD MaximumAllocationSize; + DWORD VirtualMemoryThreshold; + DWORD ProcessHeapFlags; + DWORD[4] Reserved; +} +alias IMAGE_LOAD_CONFIG_DIRECTORY* PIMAGE_LOAD_CONFIG_DIRECTORY; + +struct IMAGE_LOAD_CONFIG_DIRECTORY64 { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + ULONGLONG DeCommitFreeBlockThreshold; + ULONGLONG DeCommitTotalFreeThreshold; + ULONGLONG LockPrefixTable; + ULONGLONG MaximumAllocationSize; + ULONGLONG VirtualMemoryThreshold; + ULONGLONG ProcessAffinityMask; + DWORD ProcessHeapFlags; + WORD CSDFlags; + WORD Reserved1; + ULONGLONG EditList; + DWORD[2] Reserved; +} +alias IMAGE_LOAD_CONFIG_DIRECTORY64* PIMAGE_LOAD_CONFIG_DIRECTORY64; + +struct IMAGE_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + PVOID ExceptionHandler; + PVOID HandlerData; + DWORD PrologEndAddress; +} +alias IMAGE_RUNTIME_FUNCTION_ENTRY* PIMAGE_RUNTIME_FUNCTION_ENTRY; + +struct IMAGE_CE_RUNTIME_FUNCTION_ENTRY { + uint FuncStart; + union { + ubyte PrologLen; + uint _bf; + } +/+ + unsigned int FuncLen:22; + unsigned int ThirtyTwoBit:1; + unsigned int ExceptionFlag:1; ++/ + uint FuncLen() { return (_bf >> 8) & 0x3FFFFF; } + bool ThirtyTwoBit() { return cast(bool)(_bf & 0x40000000); } + bool ExceptionFlag() { return cast(bool)(_bf & 0x80000000); } + + uint FuncLen(uint f) { + _bf = (_bf & ~0x3FFFFF00) | ((f & 0x3FFFFF) << 8); return f & 0x3FFFFF; + } + + bool ThirtyTwoBit(bool t) { + _bf = (_bf & ~0x40000000) | (t << 30); return t; + } + + bool ExceptionFlag(bool e) { + _bf = (_bf & ~0x80000000) | (e << 31); return e; + } +} +alias IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; + +struct IMAGE_DEBUG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Type; + DWORD SizeOfData; + DWORD AddressOfRawData; + DWORD PointerToRawData; +} +alias IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY; + +struct FPO_DATA { + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; + ubyte cbProlog; + ubyte _bf; +/+ + WORD cbRegs:3; + WORD fHasSEH:1; + WORD fUseBP:1; + WORD reserved:1; + WORD cbFrame:2; ++/ + ubyte cbRegs() { return cast(ubyte)(_bf & 0x07); } + bool fHasSEH() { return cast(bool)(_bf & 0x08); } + bool fUseBP() { return cast(bool)(_bf & 0x10); } + bool reserved() { return cast(bool)(_bf & 0x20); } + ubyte cbFrame() { return cast(ubyte)(_bf >> 6); } + + ubyte cbRegs(ubyte c) { + _bf = cast(ubyte) ((_bf & ~0x07) | (c & 0x07)); + return cast(ubyte)(c & 0x07); + } + + bool fHasSEH(bool f) { _bf = cast(ubyte)((_bf & ~0x08) | (f << 3)); return f; } + bool fUseBP(bool f) { _bf = cast(ubyte)((_bf & ~0x10) | (f << 4)); return f; } + bool reserved(bool r) { _bf = cast(ubyte)((_bf & ~0x20) | (r << 5)); return r; } + + ubyte cbFrame(ubyte c) { + _bf = cast(ubyte) ((_bf & ~0xC0) | ((c & 0x03) << 6)); + return cast(ubyte)(c & 0x03); + } +} +alias FPO_DATA* PFPO_DATA; + +struct IMAGE_DEBUG_MISC { + DWORD DataType; + DWORD Length; + BOOLEAN Unicode; + BYTE[3] Reserved; + BYTE _Data; + + BYTE* Data() { return &_Data; } +} +alias IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; + +struct IMAGE_FUNCTION_ENTRY { + DWORD StartingAddress; + DWORD EndingAddress; + DWORD EndOfPrologue; +} +alias IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY; + +struct IMAGE_FUNCTION_ENTRY64 { + ULONGLONG StartingAddress; + ULONGLONG EndingAddress; + union { + ULONGLONG EndOfPrologue; + ULONGLONG UnwindInfoAddress; + } +} +alias IMAGE_FUNCTION_ENTRY64* PIMAGE_FUNCTION_ENTRY64; + +struct IMAGE_SEPARATE_DEBUG_HEADER { + WORD Signature; + WORD Flags; + WORD Machine; + WORD Characteristics; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + DWORD ExportedNamesSize; + DWORD DebugDirectorySize; + DWORD SectionAlignment; + DWORD[2] Reserved; +} +alias IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; + +enum SERVICE_NODE_TYPE { + DriverType = SERVICE_KERNEL_DRIVER, + FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, + Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, + Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, + AdapterType = SERVICE_ADAPTER, + RecognizerType = SERVICE_RECOGNIZER_DRIVER +} + +enum SERVICE_LOAD_TYPE { + BootLoad = SERVICE_BOOT_START, + SystemLoad = SERVICE_SYSTEM_START, + AutoLoad = SERVICE_AUTO_START, + DemandLoad = SERVICE_DEMAND_START, + DisableLoad = SERVICE_DISABLED +} + +enum SERVICE_ERROR_TYPE { + IgnoreError = SERVICE_ERROR_IGNORE, + NormalError = SERVICE_ERROR_NORMAL, + SevereError = SERVICE_ERROR_SEVERE, + CriticalError = SERVICE_ERROR_CRITICAL +} +alias SERVICE_ERROR_TYPE _CM_ERROR_CONTROL_TYPE; + +//DAC: According to MSJ, 'UnderTheHood', May 1996, this +// structure is not documented in any official Microsoft header file. +alias void EXCEPTION_REGISTRATION_RECORD; + +align: +struct NT_TIB { + EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; + PVOID StackLimit; + PVOID SubSystemTib; + union { + PVOID FiberData; + DWORD Version; + } + PVOID ArbitraryUserPointer; + NT_TIB *Self; +} +alias NT_TIB* PNT_TIB; + +struct REPARSE_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + union { + struct _GenericReparseBuffer { + BYTE _DataBuffer; + + BYTE* DataBuffer() { return &_DataBuffer; } + } + _GenericReparseBuffer GenericReparseBuffer; + struct _SymbolicLinkReparseBuffer { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + // ??? This is in MinGW, but absent in MSDN docs + ULONG Flags; + WCHAR _PathBuffer; + + WCHAR* PathBuffer() { return &_PathBuffer; } + } + _SymbolicLinkReparseBuffer SymbolicLinkReparseBuffer; + struct _MountPointReparseBuffer { + WORD SubstituteNameOffset; + WORD SubstituteNameLength; + WORD PrintNameOffset; + WORD PrintNameLength; + WCHAR _PathBuffer; + + WCHAR* PathBuffer() { return &_PathBuffer; } + } + _MountPointReparseBuffer MountPointReparseBuffer; + } +} +alias REPARSE_DATA_BUFFER *PREPARSE_DATA_BUFFER; + +struct REPARSE_GUID_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + GUID ReparseGuid; + struct _GenericReparseBuffer { + BYTE _DataBuffer; + + BYTE* DataBuffer() { return &_DataBuffer; } + } + _GenericReparseBuffer GenericReparseBuffer; +} +alias REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; + +const size_t + REPARSE_DATA_BUFFER_HEADER_SIZE = REPARSE_DATA_BUFFER.GenericReparseBuffer.offsetof, + REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = REPARSE_GUID_DATA_BUFFER.GenericReparseBuffer.offsetof, + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384; + + +struct REPARSE_POINT_INFORMATION { + WORD ReparseDataLength; + WORD UnparsedNameLength; +} +alias REPARSE_POINT_INFORMATION* PREPARSE_POINT_INFORMATION; + +union FILE_SEGMENT_ELEMENT { + PVOID64 Buffer; + ULONGLONG Alignment; +} +alias FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; + +// JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants +const DWORD + JOB_OBJECT_LIMIT_WORKINGSET = 0x0001, + JOB_OBJECT_LIMIT_PROCESS_TIME = 0x0002, + JOB_OBJECT_LIMIT_JOB_TIME = 0x0004, + JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x0008, + JOB_OBJECT_LIMIT_AFFINITY = 0x0010, + JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x0020, + JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x0040, + JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x0080, + JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x0100, + JOB_OBJECT_LIMIT_JOB_MEMORY = 0x0200, + JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x0400, + JOB_OBJECT_BREAKAWAY_OK = 0x0800, + JOB_OBJECT_SILENT_BREAKAWAY = 0x1000; + +// JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants +const DWORD + JOB_OBJECT_UILIMIT_HANDLES = 0x0001, + JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x0002, + JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x0004, + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x0008, + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x0010, + JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x0020, + JOB_OBJECT_UILIMIT_DESKTOP = 0x0040, + JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x0080; + +// JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants +const DWORD + JOB_OBJECT_SECURITY_NO_ADMIN = 0x0001, + JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x0002, + JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x0004, + JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x0008; + +// JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants +enum : DWORD { + JOB_OBJECT_TERMINATE_AT_END_OF_JOB, + JOB_OBJECT_POST_AT_END_OF_JOB +} + +enum : DWORD { + JOB_OBJECT_MSG_END_OF_JOB_TIME = 1, + JOB_OBJECT_MSG_END_OF_PROCESS_TIME, + JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT, + JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO, + JOB_OBJECT_MSG_NEW_PROCESS, + JOB_OBJECT_MSG_EXIT_PROCESS, + JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS, + JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT, + JOB_OBJECT_MSG_JOB_MEMORY_LIMIT +} + +enum JOBOBJECTINFOCLASS { + JobObjectBasicAccountingInformation = 1, + JobObjectBasicLimitInformation, + JobObjectBasicProcessIdList, + JobObjectBasicUIRestrictions, + JobObjectSecurityLimitInformation, + JobObjectEndOfJobTimeInformation, + JobObjectAssociateCompletionPortInformation, + JobObjectBasicAndIoAccountingInformation, + JobObjectExtendedLimitInformation, + JobObjectJobSetInformation, + MaxJobObjectInfoClass +} + +struct JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { + LARGE_INTEGER TotalUserTime; + LARGE_INTEGER TotalKernelTime; + LARGE_INTEGER ThisPeriodTotalUserTime; + LARGE_INTEGER ThisPeriodTotalKernelTime; + DWORD TotalPageFaultCount; + DWORD TotalProcesses; + DWORD ActiveProcesses; + DWORD TotalTerminatedProcesses; +} +alias JOBOBJECT_BASIC_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; + +struct JOBOBJECT_BASIC_LIMIT_INFORMATION { + LARGE_INTEGER PerProcessUserTimeLimit; + LARGE_INTEGER PerJobUserTimeLimit; + DWORD LimitFlags; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + DWORD ActiveProcessLimit; + ULONG_PTR Affinity; + DWORD PriorityClass; + DWORD SchedulingClass; +} +alias JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_INFORMATION; + +struct JOBOBJECT_BASIC_PROCESS_ID_LIST { + DWORD NumberOfAssignedProcesses; + DWORD NumberOfProcessIdsInList; + ULONG_PTR _ProcessIdList; + + ULONG_PTR* ProcessIdList() { return &_ProcessIdList; } +} +alias JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; + +struct JOBOBJECT_BASIC_UI_RESTRICTIONS { + DWORD UIRestrictionsClass; +} +alias JOBOBJECT_BASIC_UI_RESTRICTIONS* PJOBOBJECT_BASIC_UI_RESTRICTIONS; + +struct JOBOBJECT_SECURITY_LIMIT_INFORMATION { + DWORD SecurityLimitFlags; + HANDLE JobToken; + PTOKEN_GROUPS SidsToDisable; + PTOKEN_PRIVILEGES PrivilegesToDelete; + PTOKEN_GROUPS RestrictedSids; +} +alias JOBOBJECT_SECURITY_LIMIT_INFORMATION* PJOBOBJECT_SECURITY_LIMIT_INFORMATION; + +struct JOBOBJECT_END_OF_JOB_TIME_INFORMATION { + DWORD EndOfJobTimeAction; +} +alias JOBOBJECT_END_OF_JOB_TIME_INFORMATION* PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; + +struct JOBOBJECT_ASSOCIATE_COMPLETION_PORT { + PVOID CompletionKey; + HANDLE CompletionPort; +} +alias JOBOBJECT_ASSOCIATE_COMPLETION_PORT* PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; + +struct JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { + JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; + IO_COUNTERS IoInfo; +} +alias JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION *PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; + +struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION { + JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; + IO_COUNTERS IoInfo; + SIZE_T ProcessMemoryLimit; + SIZE_T JobMemoryLimit; + SIZE_T PeakProcessMemoryUsed; + SIZE_T PeakJobMemoryUsed; +} +alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; + +struct JOBOBJECT_JOBSET_INFORMATION { + DWORD MemberLevel; +} +alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; + +// MinGW: Making these defines conditional on _WIN32_WINNT will break ddk includes +//static if (_WIN32_WINNT >= 0x500) { + +const DWORD + ES_SYSTEM_REQUIRED = 0x00000001, + ES_DISPLAY_REQUIRED = 0x00000002, + ES_USER_PRESENT = 0x00000004, + ES_CONTINUOUS = 0x80000000; + +enum LATENCY_TIME { + LT_DONT_CARE, + LT_LOWEST_LATENCY +} +alias LATENCY_TIME* PLATENCY_TIME; + +enum SYSTEM_POWER_STATE { + PowerSystemUnspecified, + PowerSystemWorking, + PowerSystemSleeping1, + PowerSystemSleeping2, + PowerSystemSleeping3, + PowerSystemHibernate, + PowerSystemShutdown, + PowerSystemMaximum +} +alias SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; + +const POWER_SYSTEM_MAXIMUM = SYSTEM_POWER_STATE.PowerSystemMaximum; + +enum POWER_ACTION { + PowerActionNone, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject +} +alias POWER_ACTION* PPOWER_ACTION; + +static if (_WIN32_WINNT >= 0x600) { + enum SYSTEM_POWER_CONDITION { + PoAc, + PoDc, + PoHot, + PoConditionMaximum + } + alias SYSTEM_POWER_CONDITION* PSYSTEM_POWER_CONDITION; +} + +enum DEVICE_POWER_STATE { + PowerDeviceUnspecified, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum +} +alias DEVICE_POWER_STATE* PDEVICE_POWER_STATE; + +align(4): +struct BATTERY_REPORTING_SCALE { + DWORD Granularity; + DWORD Capacity; +} +alias BATTERY_REPORTING_SCALE* PBATTERY_REPORTING_SCALE; + +struct POWER_ACTION_POLICY { + POWER_ACTION Action; + ULONG Flags; + ULONG EventCode; +} +alias POWER_ACTION_POLICY* PPOWER_ACTION_POLICY; + +// POWER_ACTION_POLICY.Flags constants +const ULONG + POWER_ACTION_QUERY_ALLOWED = 0x00000001, + POWER_ACTION_UI_ALLOWED = 0x00000002, + POWER_ACTION_OVERRIDE_APPS = 0x00000004, + POWER_ACTION_LIGHTEST_FIRST = 0x10000000, + POWER_ACTION_LOCK_CONSOLE = 0x20000000, + POWER_ACTION_DISABLE_WAKES = 0x40000000, + POWER_ACTION_CRITICAL = 0x80000000; + +// POWER_ACTION_POLICY.EventCode constants +const ULONG + POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001, + POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002, + POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004, + POWER_USER_NOTIFY_BUTTON = 0x00000008, + POWER_USER_NOTIFY_SHUTDOWN = 0x00000010, + POWER_FORCE_TRIGGER_RESET = 0x80000000; + +const size_t + DISCHARGE_POLICY_CRITICAL = 0, + DISCHARGE_POLICY_LOW = 1, + NUM_DISCHARGE_POLICIES = 4; + +enum : BYTE { + PO_THROTTLE_NONE, + PO_THROTTLE_CONSTANT, + PO_THROTTLE_DEGRADE, + PO_THROTTLE_ADAPTIVE, + PO_THROTTLE_MAXIMUM +} + +struct SYSTEM_POWER_LEVEL { + BOOLEAN Enable; + UCHAR[3] Spare; + ULONG BatteryLevel; + POWER_ACTION_POLICY PowerPolicy; + SYSTEM_POWER_STATE MinSystemState; +} +alias SYSTEM_POWER_LEVEL* PSYSTEM_POWER_LEVEL; + +struct SYSTEM_POWER_POLICY { + ULONG Revision; + POWER_ACTION_POLICY PowerButton; + POWER_ACTION_POLICY SleepButton; + POWER_ACTION_POLICY LidClose; + SYSTEM_POWER_STATE LidOpenWake; + ULONG Reserved; + POWER_ACTION_POLICY Idle; + ULONG IdleTimeout; + UCHAR IdleSensitivity; + UCHAR DynamicThrottle; + UCHAR[2] Spare2; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + SYSTEM_POWER_STATE ReducedLatencySleep; + ULONG WinLogonFlags; + ULONG Spare3; + ULONG DozeS4Timeout; + ULONG BroadcastCapacityResolution; + SYSTEM_POWER_LEVEL[NUM_DISCHARGE_POLICIES] DischargePolicy; + ULONG VideoTimeout; + BOOLEAN VideoDimDisplay; + ULONG[3] VideoReserved; + ULONG SpindownTimeout; + BOOLEAN OptimizeForPower; + UCHAR FanThrottleTolerance; + UCHAR ForcedThrottle; + UCHAR MinThrottle; + POWER_ACTION_POLICY OverThrottled; +} +alias SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; + +struct SYSTEM_POWER_CAPABILITIES { + BOOLEAN PowerButtonPresent; + BOOLEAN SleepButtonPresent; + BOOLEAN LidPresent; + BOOLEAN SystemS1; + BOOLEAN SystemS2; + BOOLEAN SystemS3; + BOOLEAN SystemS4; + BOOLEAN SystemS5; + BOOLEAN HiberFilePresent; + BOOLEAN FullWake; + BOOLEAN VideoDimPresent; + BOOLEAN ApmPresent; + BOOLEAN UpsPresent; + BOOLEAN ThermalControl; + BOOLEAN ProcessorThrottle; + UCHAR ProcessorMinThrottle; + UCHAR ProcessorMaxThrottle; + UCHAR[4] spare2; + BOOLEAN DiskSpinDown; + UCHAR[8] spare3; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE[3] BatteryScale; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; +} +alias SYSTEM_POWER_CAPABILITIES* PSYSTEM_POWER_CAPABILITIES; + +struct SYSTEM_BATTERY_STATE { + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN[4] Spare1; + ULONG MaxCapacity; + ULONG RemainingCapacity; + ULONG Rate; + ULONG EstimatedTime; + ULONG DefaultAlert1; + ULONG DefaultAlert2; +} +alias SYSTEM_BATTERY_STATE* PSYSTEM_BATTERY_STATE; + +enum POWER_INFORMATION_LEVEL { + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent +} + +//#if 1 /* (WIN32_WINNT >= 0x0500) */ +struct SYSTEM_POWER_INFORMATION { + ULONG MaxIdlenessAllowed; + ULONG Idleness; + ULONG TimeRemaining; + UCHAR CoolingMode; +} +alias SYSTEM_POWER_INFORMATION* PSYSTEM_POWER_INFORMATION; +//#endif + +struct PROCESSOR_POWER_POLICY_INFO { + ULONG TimeCheck; + ULONG DemoteLimit; + ULONG PromoteLimit; + UCHAR DemotePercent; + UCHAR PromotePercent; + UCHAR[2] Spare; + uint _bf; + + bool AllowDemotion() { return cast(bool)(_bf & 1); } + bool AllowPromotion() { return cast(bool)(_bf & 2); } + + bool AllowDemotion(bool a) { _bf = (_bf & ~1) | a; return a; } + bool AllowPromotion(bool a) { _bf = (_bf & ~2) | (a << 1); return a; } +/+ + ULONG AllowDemotion : 1; + ULONG AllowPromotion : 1; + ULONG Reserved : 30; ++/ +} +alias PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; + +struct PROCESSOR_POWER_POLICY { + ULONG Revision; + UCHAR DynamicThrottle; + UCHAR[3] Spare; + ULONG Reserved; + ULONG PolicyCount; + PROCESSOR_POWER_POLICY_INFO[3] Policy; +} +alias PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; + +struct ADMINISTRATOR_POWER_POLICY { + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + ULONG MinVideoTimeout; + ULONG MaxVideoTimeout; + ULONG MinSpindownTimeout; + ULONG MaxSpindownTimeout; +} +alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; + +//}//#endif /* _WIN32_WINNT >= 0x500 */ + +extern (Windows) { + alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK; + + static if (_WIN32_WINNT >= 0x500) { + alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER; + alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC; + } +} + +static if (_WIN32_WINNT >= 0x501) { + enum HEAP_INFORMATION_CLASS { + HeapCompatibilityInformation + } + + enum ACTIVATION_CONTEXT_INFO_CLASS { + ActivationContextBasicInformation = 1, + ActivationContextDetailedInformation, + AssemblyDetailedInformationInActivationContext, + FileInformationInAssemblyOfAssemblyInActivationContext + } + + struct ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulEncodedAssemblyIdentityLength; + DWORD ulManifestPathType; + DWORD ulManifestPathLength; + LARGE_INTEGER liManifestLastWriteTime; + DWORD ulPolicyPathType; + DWORD ulPolicyPathLength; + LARGE_INTEGER liPolicyLastWriteTime; + DWORD ulMetadataSatelliteRosterIndex; + DWORD ulManifestVersionMajor; + DWORD ulManifestVersionMinor; + DWORD ulPolicyVersionMajor; + DWORD ulPolicyVersionMinor; + DWORD ulAssemblyDirectoryNameLength; + PCWSTR lpAssemblyEncodedAssemblyIdentity; + PCWSTR lpAssemblyManifestPath; + PCWSTR lpAssemblyPolicyPath; + PCWSTR lpAssemblyDirectoryName; + } + alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* + PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + alias const(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)* + PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + + struct ACTIVATION_CONTEXT_DETAILED_INFORMATION { + DWORD dwFlags; + DWORD ulFormatVersion; + DWORD ulAssemblyCount; + DWORD ulRootManifestPathType; + DWORD ulRootManifestPathChars; + DWORD ulRootConfigurationPathType; + DWORD ulRootConfigurationPathChars; + DWORD ulAppDirPathType; + DWORD ulAppDirPathChars; + PCWSTR lpRootManifestPath; + PCWSTR lpRootConfigurationPath; + PCWSTR lpAppDirPath; + } + alias ACTIVATION_CONTEXT_DETAILED_INFORMATION* + PACTIVATION_CONTEXT_DETAILED_INFORMATION; + alias const(ACTIVATION_CONTEXT_DETAILED_INFORMATION)* + PCACTIVATION_CONTEXT_DETAILED_INFORMATION; + + struct ACTIVATION_CONTEXT_QUERY_INDEX { + ULONG ulAssemblyIndex; + ULONG ulFileIndexInAssembly; + } + alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; + alias const(ACTIVATION_CONTEXT_QUERY_INDEX)* PCACTIVATION_CONTEXT_QUERY_INDEX; + + struct ASSEMBLY_FILE_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulFilenameLength; + DWORD ulPathLength; + PCWSTR lpFileName; + PCWSTR lpFilePath; + } + alias ASSEMBLY_FILE_DETAILED_INFORMATION* + PASSEMBLY_FILE_DETAILED_INFORMATION; + alias const(ASSEMBLY_FILE_DETAILED_INFORMATION)* + PCASSEMBLY_FILE_DETAILED_INFORMATION; +} + +version (Unicode) { + alias OSVERSIONINFOW OSVERSIONINFO; + alias OSVERSIONINFOEXW OSVERSIONINFOEX; +} else { + alias OSVERSIONINFOA OSVERSIONINFO; + alias OSVERSIONINFOEXA OSVERSIONINFOEX; +} + +alias OSVERSIONINFO* POSVERSIONINFO, LPOSVERSIONINFO; +alias OSVERSIONINFOEX* POSVERSIONINFOEX, LPOSVERSIONINFOEX; + + +static if (_WIN32_WINNT >= 0x500) { + extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE); +} + +version (Win64) { + const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC; + + alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG; + alias IMAGE_SNAP_BY_ORDINAL64 IMAGE_SNAP_BY_ORDINAL; + alias IMAGE_ORDINAL64 IMAGE_ORDINAL; + alias IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; + alias IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; + alias IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; + alias IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; +} else { + const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC; + + alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; + alias IMAGE_ORDINAL32 IMAGE_ORDINAL; + alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; + alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; + alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; + alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; + alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; +} + +alias IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER; +alias IMAGE_NT_HEADERS* PIMAGE_NT_HEADERS; +alias IMAGE_THUNK_DATA* PIMAGE_THUNK_DATA; +alias IMAGE_TLS_DIRECTORY* PIMAGE_TLS_DIRECTORY; + +// TODO: MinGW implements these in assembly. How to translate? +PVOID GetCurrentFiber(); +PVOID GetFiberData(); Index: src/win32/winperf.d ================================================================== --- src/win32/winperf.d +++ src/win32/winperf.d @@ -1,152 +1,152 @@ -/***********************************************************************\ -* winperf.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winperf; - -import win32.windef; -import win32.winbase; // for SYSTEMTIME - -const PERF_DATA_VERSION=1; -const PERF_DATA_REVISION=1; -const PERF_NO_INSTANCES=-1; -const PERF_SIZE_DWORD=0; -const PERF_SIZE_LARGE=256; -const PERF_SIZE_ZERO=512; -const PERF_SIZE_VARIABLE_LEN=768; -const PERF_TYPE_NUMBER=0; -const PERF_TYPE_COUNTER=1024; -const PERF_TYPE_TEXT=2048; -const PERF_TYPE_ZERO=0xC00; -const PERF_NUMBER_HEX=0; -const PERF_NUMBER_DECIMAL=0x10000; -const PERF_NUMBER_DEC_1000=0x20000; -const PERF_COUNTER_VALUE=0; -const PERF_COUNTER_RATE=0x10000; -const PERF_COUNTER_FRACTION=0x20000; -const PERF_COUNTER_BASE=0x30000; -const PERF_COUNTER_ELAPSED=0x40000; -const PERF_COUNTER_QUEUELEN=0x50000; -const PERF_COUNTER_HISTOGRAM=0x60000; -const PERF_TEXT_UNICODE=0; -const PERF_TEXT_ASCII=0x10000; -const PERF_TIMER_TICK=0; -const PERF_TIMER_100NS=0x100000; -const PERF_OBJECT_TIMER=0x200000; -const PERF_DELTA_COUNTER=0x400000; -const PERF_DELTA_BASE=0x800000; -const PERF_INVERSE_COUNTER=0x1000000; -const PERF_MULTI_COUNTER=0x2000000; -const PERF_DISPLAY_NO_SUFFIX=0; -const PERF_DISPLAY_PER_SEC=0x10000000; -const PERF_DISPLAY_PERCENT=0x20000000; -const PERF_DISPLAY_SECONDS=0x30000000; -const PERF_DISPLAY_NOSHOW=0x40000000; -const PERF_COUNTER_HISTOGRAM_TYPE=0x80000000; -const PERF_NO_UNIQUE_ID=(-1); -const PERF_DETAIL_NOVICE=100; -const PERF_DETAIL_ADVANCED=200; -const PERF_DETAIL_EXPERT=300; -const PERF_DETAIL_WIZARD=400; -const PERF_COUNTER_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); -const PERF_COUNTER_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_QUEUELEN_TYPE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_BULK_COUNT=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); -const PERF_COUNTER_TEXT=(PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_RAWCOUNT=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_LARGE_RAWCOUNT=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_RAWCOUNT_HEX=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_LARGE_RAWCOUNT_HEX=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); -const PERF_SAMPLE_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT); -const PERF_SAMPLE_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); -const PERF_COUNTER_NODATA=(PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW); -const PERF_COUNTER_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_SAMPLE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1); -const PERF_AVERAGE_TIMER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS); -const PERF_AVERAGE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2); -const PERF_AVERAGE_BULK=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW); -const PERF_100NSEC_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_100NSEC_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_TIMER_TICK|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_MULTI_COUNTER|PERF_TIMER_TICK|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_COUNTER_MULTI_BASE=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW); -const PERF_100NSEC_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_100NSEC_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); -const PERF_RAW_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT); -const PERF_RAW_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3); -const PERF_ELAPSED_TIME=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS); - -struct PERF_DATA_BLOCK { - WCHAR Signature[4]; - DWORD LittleEndian; - DWORD Version; - DWORD Revision; - DWORD TotalByteLength; - DWORD HeaderLength; - DWORD NumObjectTypes; - LONG DefaultObject; - SYSTEMTIME SystemTime; - LARGE_INTEGER PerfTime; - LARGE_INTEGER PerfFreq; - LARGE_INTEGER PerfTime100nSec; - DWORD SystemNameLength; - DWORD SystemNameOffset; -} -alias PERF_DATA_BLOCK * PPERF_DATA_BLOCK; - -struct PERF_OBJECT_TYPE { - DWORD TotalByteLength; - DWORD DefinitionLength; - DWORD HeaderLength; - DWORD ObjectNameTitleIndex; - LPWSTR ObjectNameTitle; - DWORD ObjectHelpTitleIndex; - LPWSTR ObjectHelpTitle; - DWORD DetailLevel; - DWORD NumCounters; - LONG DefaultCounter; - LONG NumInstances; - DWORD CodePage; - LARGE_INTEGER PerfTime; - LARGE_INTEGER PerfFreq; -} -alias PERF_OBJECT_TYPE * PPERF_OBJECT_TYPE; - -struct PERF_COUNTER_DEFINITION { - DWORD ByteLength; - DWORD CounterNameTitleIndex; - LPWSTR CounterNameTitle; - DWORD CounterHelpTitleIndex; - LPWSTR CounterHelpTitle; - LONG DefaultScale; - DWORD DetailLevel; - DWORD CounterType; - DWORD CounterSize; - DWORD CounterOffset; -} -alias PERF_COUNTER_DEFINITION * PPERF_COUNTER_DEFINITION; - -struct PERF_INSTANCE_DEFINITION { - DWORD ByteLength; - DWORD ParentObjectTitleIndex; - DWORD ParentObjectInstance; - LONG UniqueID; - DWORD NameOffset; - DWORD NameLength; -} -alias PERF_INSTANCE_DEFINITION * PPERF_INSTANCE_DEFINITION; - -struct PERF_COUNTER_BLOCK { - DWORD ByteLength; -} -alias PERF_COUNTER_BLOCK * PPERF_COUNTER_BLOCK; - -extern (Windows): -alias DWORD function (LPWSTR) PM_OPEN_PROC; -alias DWORD function (LPWSTR,PVOID*,PDWORD,PDWORD) PM_COLLECT_PROC; -alias DWORD function () PM_CLOSE_PROC; +/***********************************************************************\ +* winperf.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winperf; + +import win32.windef; +import win32.winbase; // for SYSTEMTIME + +const PERF_DATA_VERSION=1; +const PERF_DATA_REVISION=1; +const PERF_NO_INSTANCES=-1; +const PERF_SIZE_DWORD=0; +const PERF_SIZE_LARGE=256; +const PERF_SIZE_ZERO=512; +const PERF_SIZE_VARIABLE_LEN=768; +const PERF_TYPE_NUMBER=0; +const PERF_TYPE_COUNTER=1024; +const PERF_TYPE_TEXT=2048; +const PERF_TYPE_ZERO=0xC00; +const PERF_NUMBER_HEX=0; +const PERF_NUMBER_DECIMAL=0x10000; +const PERF_NUMBER_DEC_1000=0x20000; +const PERF_COUNTER_VALUE=0; +const PERF_COUNTER_RATE=0x10000; +const PERF_COUNTER_FRACTION=0x20000; +const PERF_COUNTER_BASE=0x30000; +const PERF_COUNTER_ELAPSED=0x40000; +const PERF_COUNTER_QUEUELEN=0x50000; +const PERF_COUNTER_HISTOGRAM=0x60000; +const PERF_TEXT_UNICODE=0; +const PERF_TEXT_ASCII=0x10000; +const PERF_TIMER_TICK=0; +const PERF_TIMER_100NS=0x100000; +const PERF_OBJECT_TIMER=0x200000; +const PERF_DELTA_COUNTER=0x400000; +const PERF_DELTA_BASE=0x800000; +const PERF_INVERSE_COUNTER=0x1000000; +const PERF_MULTI_COUNTER=0x2000000; +const PERF_DISPLAY_NO_SUFFIX=0; +const PERF_DISPLAY_PER_SEC=0x10000000; +const PERF_DISPLAY_PERCENT=0x20000000; +const PERF_DISPLAY_SECONDS=0x30000000; +const PERF_DISPLAY_NOSHOW=0x40000000; +const PERF_COUNTER_HISTOGRAM_TYPE=0x80000000; +const PERF_NO_UNIQUE_ID=(-1); +const PERF_DETAIL_NOVICE=100; +const PERF_DETAIL_ADVANCED=200; +const PERF_DETAIL_EXPERT=300; +const PERF_DETAIL_WIZARD=400; +const PERF_COUNTER_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); +const PERF_COUNTER_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_QUEUELEN_TYPE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_BULK_COUNT=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC); +const PERF_COUNTER_TEXT=(PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_RAWCOUNT=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_LARGE_RAWCOUNT=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_RAWCOUNT_HEX=(PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_LARGE_RAWCOUNT_HEX=(PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX); +const PERF_SAMPLE_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT); +const PERF_SAMPLE_COUNTER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX); +const PERF_COUNTER_NODATA=(PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW); +const PERF_COUNTER_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_SAMPLE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1); +const PERF_AVERAGE_TIMER=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS); +const PERF_AVERAGE_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2); +const PERF_AVERAGE_BULK=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW); +const PERF_100NSEC_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_100NSEC_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_TIMER_TICK|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_MULTI_COUNTER|PERF_TIMER_TICK|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_COUNTER_MULTI_BASE=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW); +const PERF_100NSEC_MULTI_TIMER=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_100NSEC_MULTI_TIMER_INV=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT); +const PERF_RAW_FRACTION=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT); +const PERF_RAW_BASE=(PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3); +const PERF_ELAPSED_TIME=(PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS); + +struct PERF_DATA_BLOCK { + WCHAR[4] Signature; + DWORD LittleEndian; + DWORD Version; + DWORD Revision; + DWORD TotalByteLength; + DWORD HeaderLength; + DWORD NumObjectTypes; + LONG DefaultObject; + SYSTEMTIME SystemTime; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; + LARGE_INTEGER PerfTime100nSec; + DWORD SystemNameLength; + DWORD SystemNameOffset; +} +alias PERF_DATA_BLOCK * PPERF_DATA_BLOCK; + +struct PERF_OBJECT_TYPE { + DWORD TotalByteLength; + DWORD DefinitionLength; + DWORD HeaderLength; + DWORD ObjectNameTitleIndex; + LPWSTR ObjectNameTitle; + DWORD ObjectHelpTitleIndex; + LPWSTR ObjectHelpTitle; + DWORD DetailLevel; + DWORD NumCounters; + LONG DefaultCounter; + LONG NumInstances; + DWORD CodePage; + LARGE_INTEGER PerfTime; + LARGE_INTEGER PerfFreq; +} +alias PERF_OBJECT_TYPE * PPERF_OBJECT_TYPE; + +struct PERF_COUNTER_DEFINITION { + DWORD ByteLength; + DWORD CounterNameTitleIndex; + LPWSTR CounterNameTitle; + DWORD CounterHelpTitleIndex; + LPWSTR CounterHelpTitle; + LONG DefaultScale; + DWORD DetailLevel; + DWORD CounterType; + DWORD CounterSize; + DWORD CounterOffset; +} +alias PERF_COUNTER_DEFINITION * PPERF_COUNTER_DEFINITION; + +struct PERF_INSTANCE_DEFINITION { + DWORD ByteLength; + DWORD ParentObjectTitleIndex; + DWORD ParentObjectInstance; + LONG UniqueID; + DWORD NameOffset; + DWORD NameLength; +} +alias PERF_INSTANCE_DEFINITION * PPERF_INSTANCE_DEFINITION; + +struct PERF_COUNTER_BLOCK { + DWORD ByteLength; +} +alias PERF_COUNTER_BLOCK * PPERF_COUNTER_BLOCK; + +extern (Windows): +alias DWORD function (LPWSTR) PM_OPEN_PROC; +alias DWORD function (LPWSTR,PVOID*,PDWORD,PDWORD) PM_COLLECT_PROC; +alias DWORD function () PM_CLOSE_PROC; Index: src/win32/winreg.d ================================================================== --- src/win32/winreg.d +++ src/win32/winreg.d @@ -1,258 +1,251 @@ -/***********************************************************************\ -* winreg.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winreg; -pragma(lib, "advapi32.lib"); - -private import win32.w32api, win32.winbase, win32.windef; - -const HKEY - HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, - HKEY_CURRENT_USER = cast(HKEY) 0x80000001, - HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, - HKEY_USERS = cast(HKEY) 0x80000003, - HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, - HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, - HKEY_DYN_DATA = cast(HKEY) 0x80000006; - -enum : DWORD { - REG_OPTION_NON_VOLATILE, - REG_OPTION_VOLATILE -} - -enum : DWORD { - REG_CREATED_NEW_KEY = 1, - REG_OPENED_EXISTING_KEY -} - -enum : DWORD { - REG_NONE = 0, - REG_SZ, - REG_EXPAND_SZ, - REG_BINARY, - REG_DWORD_LITTLE_ENDIAN, - REG_DWORD = REG_DWORD_LITTLE_ENDIAN, - REG_DWORD_BIG_ENDIAN, - REG_LINK, - REG_MULTI_SZ, - REG_RESOURCE_LIST, - REG_FULL_RESOURCE_DESCRIPTOR, - REG_RESOURCE_REQUIREMENTS_LIST, - REG_QWORD_LITTLE_ENDIAN, - REG_QWORD = REG_QWORD_LITTLE_ENDIAN -} - -const DWORD - REG_NOTIFY_CHANGE_NAME = 1, - REG_NOTIFY_CHANGE_ATTRIBUTES = 2, - REG_NOTIFY_CHANGE_LAST_SET = 4, - REG_NOTIFY_CHANGE_SECURITY = 8; - -alias ACCESS_MASK REGSAM; - -struct VALENTA { - LPSTR ve_valuename; - DWORD ve_valuelen; - DWORD ve_valueptr; - DWORD ve_type; -} -alias VALENTA* PVALENTA; - -struct VALENTW { - LPWSTR ve_valuename; - DWORD ve_valuelen; - DWORD ve_valueptr; - DWORD ve_type; -} -alias VALENTW* PVALENTW; - -// RRF - Registry Routine Flags (for RegGetValue) -static if (WINVER >= 0x600) { - enum : DWORD { - RRF_RT_REG_NONE = 0x00000001, - RRF_RT_REG_SZ = 0x00000002, - RRF_RT_REG_EXPAND_SZ = 0x00000004, - RRF_RT_REG_BINARY = 0x00000008, - RRF_RT_REG_DWORD = 0x00000010, - RRF_RT_REG_MULTI_SZ = 0x00000020, - RRF_RT_REG_QWORD = 0x00000040, - RRF_RT_DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD, - RRF_RT_QWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD, - RRF_RT_ANY = 0x0000FFFF, - RRF_NOEXPAND = 0x10000000, - RRF_ZEROONFAILURE = 0x20000000 - } -} - -extern (Windows) { - LONG RegCloseKey(HKEY); - LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); - LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); - LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, - LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); - LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, - LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); - LONG RegDeleteKeyA(HKEY, LPCSTR); - LONG RegDeleteKeyW(HKEY, LPCWSTR); - LONG RegDeleteValueA(HKEY, LPCSTR); - LONG RegDeleteValueW(HKEY, LPCWSTR); - LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, - PFILETIME); - LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, - PFILETIME); - LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, - PDWORD); - LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, - PDWORD); - LONG RegFlushKey(HKEY); - LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR); - LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR); - LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY); - LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); - LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, - PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); - LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, - PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); - LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); - LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); - LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); - LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); - LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); - LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); - LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); - LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); - LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); - LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, CPtr!(BYTE), DWORD); - LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, CPtr!(BYTE), DWORD); - LONG RegUnLoadKeyA(HKEY, LPCSTR); - LONG RegUnLoadKeyW(HKEY, LPCWSTR); - static if (_WIN32_WINDOWS >= 0x410) { - LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); - } - - static if (_WIN32_WINNT_ONLY) { - BOOL AbortSystemShutdownA(LPCSTR); - BOOL AbortSystemShutdownW(LPCWSTR); - BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); - BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); - LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, PDWORD); - LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); - LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); - LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - - static if (_WIN32_WINNT >= 0x500) { - LONG RegDisablePredefinedCache(); - LONG RegOpenCurrentUser(REGSAM, PHKEY); - LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY); - } - - static if (_WIN32_WINNT >= 0x501) { - LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); - LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); - } - - static if (_WIN32_WINNT >= 0x600) { - LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, - DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); - LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, - DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); - } - } - - deprecated { - LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); - LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); - LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); - LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); - LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY); - LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY); - LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG); - LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG); - LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD); - LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); - } -} - -version (Unicode) { - alias VALENTW VALENT; - alias RegConnectRegistryW RegConnectRegistry; - alias RegCreateKeyExW RegCreateKeyEx; - alias RegDeleteKeyW RegDeleteKey; - alias RegDeleteValueW RegDeleteValue; - alias RegEnumKeyExW RegEnumKeyEx; - alias RegEnumValueW RegEnumValue; - alias RegLoadKeyW RegLoadKey; - alias RegOpenKeyExW RegOpenKeyEx; - alias RegQueryInfoKeyW RegQueryInfoKey; - alias RegQueryMultipleValuesW RegQueryMultipleValues; - alias RegQueryValueExW RegQueryValueEx; - alias RegReplaceKeyW RegReplaceKey; - alias RegSaveKeyW RegSaveKey; - alias RegSetValueExW RegSetValueEx; - alias RegUnLoadKeyW RegUnLoadKey; - - static if (_WIN32_WINNT_ONLY) { - alias AbortSystemShutdownW AbortSystemShutdown; - alias InitiateSystemShutdownW InitiateSystemShutdown; - alias RegRestoreKeyW RegRestoreKey; - static if (_WIN32_WINNT >= 0x501) { - alias RegSaveKeyExA RegSaveKeyEx; - } - static if (_WIN32_WINNT >= 0x600) { - alias RegGetValueW RegGetValue; - } - } - deprecated { - alias RegCreateKeyW RegCreateKey; - alias RegEnumKeyW RegEnumKey; - alias RegOpenKeyW RegOpenKey; - alias RegQueryValueW RegQueryValue; - alias RegSetValueW RegSetValue; - } -} else { - alias VALENTA VALENT; - alias RegConnectRegistryA RegConnectRegistry; - alias RegCreateKeyExA RegCreateKeyEx; - alias RegDeleteKeyA RegDeleteKey; - alias RegDeleteValueA RegDeleteValue; - alias RegEnumKeyExA RegEnumKeyEx; - alias RegEnumValueA RegEnumValue; - alias RegLoadKeyA RegLoadKey; - alias RegOpenKeyExA RegOpenKeyEx; - alias RegQueryInfoKeyA RegQueryInfoKey; - alias RegQueryMultipleValuesA RegQueryMultipleValues; - alias RegQueryValueExA RegQueryValueEx; - alias RegReplaceKeyA RegReplaceKey; - alias RegSaveKeyA RegSaveKey; - alias RegSetValueExA RegSetValueEx; - alias RegUnLoadKeyA RegUnLoadKey; - static if (_WIN32_WINNT_ONLY) { - alias AbortSystemShutdownA AbortSystemShutdown; - alias InitiateSystemShutdownA InitiateSystemShutdown; - alias RegRestoreKeyW RegRestoreKey; - static if (_WIN32_WINNT >= 0x501) { - alias RegSaveKeyExA RegSaveKeyEx; - } - static if (_WIN32_WINNT >= 0x600) { - alias RegGetValueA RegGetValue; - } - } - deprecated { - alias RegCreateKeyA RegCreateKey; - alias RegEnumKeyA RegEnumKey; - alias RegOpenKeyA RegOpenKey; - alias RegQueryValueA RegQueryValue; - alias RegSetValueA RegSetValue; - } -} - -alias VALENT* PVALENT; +/***********************************************************************\ +* winreg.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winreg; +pragma(lib, "advapi32"); + +private import win32.w32api, win32.winbase, win32.windef; + +enum : HKEY { // for some reason, DMD errors if I don't give all the values explicitly + HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, + HKEY_CURRENT_USER = cast(HKEY) 0x80000001, + HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, + HKEY_USERS = cast(HKEY) 0x80000003, + HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, + HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, + HKEY_DYN_DATA = cast(HKEY) 0x80000006 +} + +enum : DWORD { + REG_OPTION_NON_VOLATILE, + REG_OPTION_VOLATILE +} + +enum : DWORD { + REG_CREATED_NEW_KEY = 1, + REG_OPENED_EXISTING_KEY +} + +enum : DWORD { + REG_NONE = 0, + REG_SZ, + REG_EXPAND_SZ, + REG_BINARY, + REG_DWORD_LITTLE_ENDIAN, + REG_DWORD = REG_DWORD_LITTLE_ENDIAN, + REG_DWORD_BIG_ENDIAN, + REG_LINK, + REG_MULTI_SZ, + REG_RESOURCE_LIST, + REG_FULL_RESOURCE_DESCRIPTOR, + REG_RESOURCE_REQUIREMENTS_LIST, + REG_QWORD_LITTLE_ENDIAN, + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +} + +const DWORD + REG_NOTIFY_CHANGE_NAME = 1, + REG_NOTIFY_CHANGE_ATTRIBUTES = 2, + REG_NOTIFY_CHANGE_LAST_SET = 4, + REG_NOTIFY_CHANGE_SECURITY = 8; + +alias ACCESS_MASK REGSAM; + +struct VALENTA { + LPSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; +} +alias VALENTA* PVALENTA; + +struct VALENTW { + LPWSTR ve_valuename; + DWORD ve_valuelen; + DWORD ve_valueptr; + DWORD ve_type; +} +alias VALENTW* PVALENTW; + +// RRF - Registry Routine Flags (for RegGetValue) +static if (_WIN32_WINNT >= 0x600) { + enum : DWORD { + RRF_RT_REG_NONE = 0x00000001, + RRF_RT_REG_SZ = 0x00000002, + RRF_RT_REG_EXPAND_SZ = 0x00000004, + RRF_RT_REG_BINARY = 0x00000008, + RRF_RT_REG_DWORD = 0x00000010, + RRF_RT_REG_MULTI_SZ = 0x00000020, + RRF_RT_REG_QWORD = 0x00000040, + RRF_RT_DWORD = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD, + RRF_RT_QWORD = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD, + RRF_RT_ANY = 0x0000FFFF, + RRF_NOEXPAND = 0x10000000, + RRF_ZEROONFAILURE = 0x20000000 + } +} + +extern (Windows) { + LONG RegCloseKey(HKEY); + LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY); + LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY); + LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, + LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); + LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, + LPSECURITY_ATTRIBUTES, PHKEY, PDWORD); + LONG RegDeleteKeyA(HKEY, LPCSTR); + LONG RegDeleteKeyW(HKEY, LPCWSTR); + LONG RegDeleteValueA(HKEY, LPCSTR); + LONG RegDeleteValueW(HKEY, LPCWSTR); + LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, + PFILETIME); + LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, + PFILETIME); + LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + PDWORD); + LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, + PDWORD); + LONG RegFlushKey(HKEY); + LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR); + LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR); + LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY); + LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY); + LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, + PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); + LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, + PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME); + LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD); + LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD); + LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); + LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); + LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); + LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); + LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); + LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); + LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); + LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD); + LONG RegUnLoadKeyA(HKEY, LPCSTR); + LONG RegUnLoadKeyW(HKEY, LPCWSTR); + LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); + + BOOL AbortSystemShutdownA(LPCSTR); + BOOL AbortSystemShutdownW(LPCWSTR); + BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); + BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); + LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, PDWORD); + LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); + LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); + LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + + static if (_WIN32_WINNT >= 0x500) { + LONG RegDisablePredefinedCache(); + LONG RegOpenCurrentUser(REGSAM, PHKEY); + LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY); + } + + static if (_WIN32_WINNT >= 0x501) { + LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD); + LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD); + } + + static if (_WIN32_WINNT >= 0x600) { + LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, + DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); + LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, + DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); + } + + deprecated { + LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); + LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); + LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); + LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); + LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY); + LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY); + LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG); + LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG); + LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD); + LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD); + } +} + +version (Unicode) { + alias VALENTW VALENT; + alias RegConnectRegistryW RegConnectRegistry; + alias RegCreateKeyExW RegCreateKeyEx; + alias RegDeleteKeyW RegDeleteKey; + alias RegDeleteValueW RegDeleteValue; + alias RegEnumKeyExW RegEnumKeyEx; + alias RegEnumValueW RegEnumValue; + alias RegLoadKeyW RegLoadKey; + alias RegOpenKeyExW RegOpenKeyEx; + alias RegQueryInfoKeyW RegQueryInfoKey; + alias RegQueryMultipleValuesW RegQueryMultipleValues; + alias RegQueryValueExW RegQueryValueEx; + alias RegReplaceKeyW RegReplaceKey; + alias RegSaveKeyW RegSaveKey; + alias RegSetValueExW RegSetValueEx; + alias RegUnLoadKeyW RegUnLoadKey; + + alias AbortSystemShutdownW AbortSystemShutdown; + alias InitiateSystemShutdownW InitiateSystemShutdown; + alias RegRestoreKeyW RegRestoreKey; + static if (_WIN32_WINNT >= 0x501) { + alias RegSaveKeyExA RegSaveKeyEx; + } + static if (_WIN32_WINNT >= 0x600) { + alias RegGetValueW RegGetValue; + } + deprecated { + alias RegCreateKeyW RegCreateKey; + alias RegEnumKeyW RegEnumKey; + alias RegOpenKeyW RegOpenKey; + alias RegQueryValueW RegQueryValue; + alias RegSetValueW RegSetValue; + } +} else { + alias VALENTA VALENT; + alias RegConnectRegistryA RegConnectRegistry; + alias RegCreateKeyExA RegCreateKeyEx; + alias RegDeleteKeyA RegDeleteKey; + alias RegDeleteValueA RegDeleteValue; + alias RegEnumKeyExA RegEnumKeyEx; + alias RegEnumValueA RegEnumValue; + alias RegLoadKeyA RegLoadKey; + alias RegOpenKeyExA RegOpenKeyEx; + alias RegQueryInfoKeyA RegQueryInfoKey; + alias RegQueryMultipleValuesA RegQueryMultipleValues; + alias RegQueryValueExA RegQueryValueEx; + alias RegReplaceKeyA RegReplaceKey; + alias RegSaveKeyA RegSaveKey; + alias RegSetValueExA RegSetValueEx; + alias RegUnLoadKeyA RegUnLoadKey; + alias AbortSystemShutdownA AbortSystemShutdown; + alias InitiateSystemShutdownA InitiateSystemShutdown; + alias RegRestoreKeyW RegRestoreKey; + static if (_WIN32_WINNT >= 0x501) { + alias RegSaveKeyExA RegSaveKeyEx; + } + static if (_WIN32_WINNT >= 0x600) { + alias RegGetValueA RegGetValue; + } + deprecated { + alias RegCreateKeyA RegCreateKey; + alias RegEnumKeyA RegEnumKey; + alias RegOpenKeyA RegOpenKey; + alias RegQueryValueA RegQueryValue; + alias RegSetValueA RegSetValue; + } +} + +alias VALENT* PVALENT; ADDED src/win32/winsock.d Index: src/win32/winsock.d ================================================================== --- src/win32/winsock.d +++ src/win32/winsock.d @@ -0,0 +1,583 @@ +/***********************************************************************\ +* winsock.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +\***********************************************************************/ +module win32.winsock; + +/* + Definitions for winsock 1.1 + + Portions Copyright (c) 1980, 1983, 1988, 1993 + The Regents of the University of California. All rights reserved. + + Portions Copyright (c) 1993 by Digital Equipment Corporation. + */ + +/* DRK: This module should not be included if -version=Win32_Winsock2 has + * been set. If it has, assert. I think it's better that way than letting + * the user believe that it's worked. + * + * SG: It has now been changed so that winsock2 is the default, and + * -version=Win32_Winsock1 must be set to use winsock. + */ +version(Win32_Winsock1) {} +else { + pragma(msg, "Cannot use win32.winsock without " + ~ "Win32_Winsock1 defined."); + static assert(false); +} + +import win32.windef; + +alias char u_char; +alias ushort u_short; +alias uint u_int, u_long, SOCKET; + +const size_t FD_SETSIZE = 64; + +// shutdown() how types +enum : int { + SD_RECEIVE, + SD_SEND, + SD_BOTH +} + +struct FD_SET { + u_int fd_count; + SOCKET[FD_SETSIZE] fd_array; + + static void opCall(SOCKET fd, FD_SET* set) { + if (set.fd_count < FD_SETSIZE) set.fd_array[set.fd_count++] = fd; + } +} +alias FD_SET* PFD_SET, LPFD_SET; + +extern(Pascal) int __WSAFDIsSet(SOCKET, FD_SET*); +alias __WSAFDIsSet FD_ISSET; + +void FD_CLR(SOCKET fd, FD_SET* set) { + for (u_int i = 0; i < set.fd_count; i++) { + if (set.fd_array[i] == fd) { + while (i < set.fd_count - 1) { + set.fd_array[i] = set.fd_array[i+1]; + i++; + } + set.fd_count--; + break; + } + } +} + +/+void FD_SET(SOCKET fd, FD_SET* set) { + if (set.fd_count < FD_SETSIZE) set.fd_array[set.fd_count++] = fd; +}+/ + +void FD_ZERO(FD_SET* set) { + set.fd_count = 0; +} + + +struct TIMEVAL { + int tv_sec; + int tv_usec; + + int opCmp(TIMEVAL tv) { + if (tv_sec < tv.tv_sec) return -1; + if (tv_sec > tv.tv_sec) return 1; + if (tv_usec < tv.tv_usec) return -1; + if (tv_usec > tv.tv_usec) return 1; + return 0; + } +} +alias TIMEVAL* PTIMEVAL, LPTIMEVAL; + +bool timerisset(TIMEVAL tvp) { + return tvp.tv_sec || tvp.tv_usec; +} + +void timerclear(ref TIMEVAL tvp) { + tvp.tv_sec = tvp.tv_usec = 0; +} + +struct HOSTENT { + char* h_name; + char** h_aliases; + short h_addrtype; + short h_length; + char** h_addr_list; + + char* h_addr() { return h_addr_list[0]; } + char* h_addr(char* h) { return h_addr_list[0] = h; } +} +alias HOSTENT* PHOSTENT, LPHOSTENT; + +struct LINGER { + u_short l_onoff; + u_short l_linger; +} +alias LINGER* PLINGER, LPLINGER; + +// TOTHINKABOUT: do we need these, or are they just for internal use? +/+ +#define IOCPARM_MASK 0x7f +#define IOC_VOID 0x20000000 +#define IOC_OUT 0x40000000 +#define IOC_IN 0x80000000 +#define IOC_INOUT (IOC_IN|IOC_OUT) + +#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) +#define _IOR(x,y,t) (IOC_OUT|(((int)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) +#define _IOW(x,y,t) (IOC_IN|(((int)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) + +#define FIONBIO _IOW('f', 126, u_long) +#define FIONREAD _IOR('f', 127, u_long) +#define FIOASYNC _IOW('f', 125, u_long) +#define SIOCSHIWAT _IOW('s', 0, u_long) +#define SIOCGHIWAT _IOR('s', 1, u_long) +#define SIOCSLOWAT _IOW('s', 2, u_long) +#define SIOCGLOWAT _IOR('s', 3, u_long) +#define SIOCATMARK _IOR('s', 7, u_long) ++/ + +enum : DWORD { + FIONBIO = 0x8004667E, + FIONREAD = 0x4004667F, + FIOASYNC = 0x8004667D, + SIOCSHIWAT = 0x80047300, + SIOCGHIWAT = 0x40047301, + SIOCSLOWAT = 0x80047302, + SIOCGLOWAT = 0x40047303, + SIOCATMARK = 0x40047307 +} + +struct netent { + char* n_name; + char** n_aliases; + short n_addrtype; + u_long n_net; +} + +struct SERVENT { + char* s_name; + char** s_aliases; + short s_port; + char* s_proto; +} +alias SERVENT* PSERVENT, LPSERVENT; + +struct PROTOENT { + char* p_name; + char** p_aliases; + short p_proto; +} +alias PROTOENT* PPROTOENT, LPPROTOENT; + +enum : int { + IPPROTO_IP = 0, + IPPROTO_ICMP = 1, + IPPROTO_IGMP = 2, + IPPROTO_GGP = 3, + IPPROTO_TCP = 6, + IPPROTO_PUP = 12, + IPPROTO_UDP = 17, + IPPROTO_IDP = 22, + IPPROTO_ND = 77, + IPPROTO_RAW = 255, + IPPROTO_MAX = 256 +} + +// These are not documented on the MSDN site +enum { + IPPORT_ECHO = 7, + IPPORT_DISCARD = 9, + IPPORT_SYSTAT = 11, + IPPORT_DAYTIME = 13, + IPPORT_NETSTAT = 15, + IPPORT_FTP = 21, + IPPORT_TELNET = 23, + IPPORT_SMTP = 25, + IPPORT_TIMESERVER = 37, + IPPORT_NAMESERVER = 42, + IPPORT_WHOIS = 43, + IPPORT_MTP = 57, + IPPORT_TFTP = 69, + IPPORT_RJE = 77, + IPPORT_FINGER = 79, + IPPORT_TTYLINK = 87, + IPPORT_SUPDUP = 95, + IPPORT_EXECSERVER = 512, + IPPORT_LOGINSERVER = 513, + IPPORT_CMDSERVER = 514, + IPPORT_EFSSERVER = 520, + IPPORT_BIFFUDP = 512, + IPPORT_WHOSERVER = 513, + IPPORT_ROUTESERVER = 520, + IPPORT_RESERVED = 1024 +} + +// These are not documented on the MSDN site +enum { + IMPLINK_IP = 155, + IMPLINK_LOWEXPER = 156, + IMPLINK_HIGHEXPER = 158 +} + +struct IN_ADDR { + union { + struct { u_char s_net, s_host, s_lh, s_impno; } + struct { u_short s_w1, s_imp; } + u_long s_addr; + } +} +alias IN_ADDR* PIN_ADDR, LPIN_ADDR; + +// IN_CLASSx are not used anywhere or documented on MSDN. +bool IN_CLASSA(int i) { + return (i & 0x80000000) == 0; +} + +const IN_CLASSA_NET = 0xff000000; +const IN_CLASSA_NSHIFT = 24; +const IN_CLASSA_HOST = 0x00ffffff; +const IN_CLASSA_MAX = 128; + +bool IN_CLASSB(int i) { + return (i & 0xC0000000) == 0x80000000; +} + +const IN_CLASSB_NET = 0xffff0000; +const IN_CLASSB_NSHIFT = 16; +const IN_CLASSB_HOST = 0x0000ffff; +const IN_CLASSB_MAX = 65536; + +bool IN_CLASSC(int i) { + return (i & 0xE0000000) == 0xC0000000; +} + +const IN_CLASSC_NET = 0xffffff00; +const IN_CLASSC_NSHIFT = 8; +const IN_CLASSC_HOST = 0x000000ff; + +const u_long + INADDR_ANY = 0, + INADDR_LOOPBACK = 0x7F000001, + INADDR_BROADCAST = 0xFFFFFFFF, + INADDR_NONE = 0xFFFFFFFF; + +struct SOCKADDR_IN { + short sin_family; + u_short sin_port; + IN_ADDR sin_addr; + char[8] sin_zero; +} +alias SOCKADDR_IN* PSOCKADDR_IN, LPSOCKADDR_IN; + +const size_t + WSADESCRIPTION_LEN = 256, + WSASYS_STATUS_LEN = 128; + +struct WSADATA { + WORD wVersion; + WORD wHighVersion; + char[WSADESCRIPTION_LEN+1] szDescription; + char[WSASYS_STATUS_LEN+1] szSystemStatus; + ushort iMaxSockets; + ushort iMaxUdpDg; + char* lpVendorInfo; +} +alias WSADATA* LPWSADATA; + +// This is not documented on the MSDN site +const IP_OPTIONS = 1; + +const int + SO_DEBUG = 1, + SO_ACCEPTCONN = 2, + SO_REUSEADDR = 4, + SO_KEEPALIVE = 8, + SO_DONTROUTE = 16, + SO_BROADCAST = 32, + SO_USELOOPBACK = 64, + SO_LINGER = 128, + SO_OOBINLINE = 256, + SO_DONTLINGER = ~SO_LINGER; + +enum : int { + SO_SNDBUF = 0x1001, + SO_RCVBUF, + SO_SNDLOWAT, + SO_RCVLOWAT, + SO_SNDTIMEO, + SO_RCVTIMEO, + SO_ERROR, + SO_TYPE // = 0x1008 +} + +/* + * Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll). + * They will cause errors or unexpected results if used with the + * (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h. + */ +enum : int { + IP_MULTICAST_IF = 2, + IP_MULTICAST_TTL, + IP_MULTICAST_LOOP, + IP_ADD_MEMBERSHIP, + IP_DROP_MEMBERSHIP +} + +// These are not documented on the MSDN site +const IP_DEFAULT_MULTICAST_TTL = 1; +const IP_DEFAULT_MULTICAST_LOOP = 1; +const IP_MAX_MEMBERSHIPS = 20; + +struct ip_mreq { + IN_ADDR imr_multiaddr; + IN_ADDR imr_interface; +} + +const SOCKET INVALID_SOCKET = uint.max; +const int SOCKET_ERROR = -1; + +enum : int { + SOCK_STREAM = 1, + SOCK_DGRAM, + SOCK_RAW, + SOCK_RDM, + SOCK_SEQPACKET +} + +const int TCP_NODELAY = 1; + +enum : int { + AF_UNSPEC, + AF_UNIX, + AF_INET, + AF_IMPLINK, + AF_PUP, + AF_CHAOS, + AF_IPX, // = 6 + AF_NS = 6, + AF_ISO, + AF_OSI = AF_ISO, + AF_ECMA, + AF_DATAKIT, + AF_CCITT, + AF_SNA, + AF_DECnet, + AF_DLI, + AF_LAT, + AF_HYLINK, + AF_APPLETALK, + AF_NETBIOS, + AF_VOICEVIEW, + AF_FIREFOX, + AF_UNKNOWN1, + AF_BAN, + AF_ATM, + AF_INET6, + AF_MAX // = 24 +} + +struct SOCKADDR { + u_short sa_family; + char[14] sa_data; +} +alias SOCKADDR* PSOCKADDR, LPSOCKADDR; + +struct sockproto { + u_short sp_family; + u_short sp_protocol; +} + +enum : int { + PF_UNSPEC = AF_UNSPEC, + PF_UNIX = AF_UNIX, + PF_INET = AF_INET, + PF_IMPLINK = AF_IMPLINK, + PF_PUP = AF_PUP, + PF_CHAOS = AF_CHAOS, + PF_NS = AF_NS, + PF_IPX = AF_IPX, + PF_ISO = AF_ISO, + PF_OSI = AF_OSI, + PF_ECMA = AF_ECMA, + PF_DATAKIT = AF_DATAKIT, + PF_CCITT = AF_CCITT, + PF_SNA = AF_SNA, + PF_DECnet = AF_DECnet, + PF_DLI = AF_DLI, + PF_LAT = AF_LAT, + PF_HYLINK = AF_HYLINK, + PF_APPLETALK = AF_APPLETALK, + PF_VOICEVIEW = AF_VOICEVIEW, + PF_FIREFOX = AF_FIREFOX, + PF_UNKNOWN1 = AF_UNKNOWN1, + PF_BAN = AF_BAN, + PF_ATM = AF_ATM, + PF_INET6 = AF_INET6, + PF_MAX = AF_MAX +} + +const int SOL_SOCKET = 0xFFFF; + +const int SOMAXCONN = 5; + +const int + MSG_OOB = 1, + MSG_PEEK = 2, + MSG_DONTROUTE = 4, + MSG_MAXIOVLEN = 16, + MSG_PARTIAL = 0x8000; + +const size_t MAXGETHOSTSTRUCT = 1024; + +const int + FD_READ = 1, + FD_WRITE = 2, + FD_OOB = 4, + FD_ACCEPT = 8, + FD_CONNECT = 16, + FD_CLOSE = 32; + +enum : int { + WSABASEERR = 10000, + WSAEINTR = 10004, + WSAEBADF = 10009, + WSAEACCES = 10013, + WSAEFAULT = 10014, + WSAEINVAL = 10022, + WSAEMFILE = 10024, + WSAEWOULDBLOCK = 10035, + WSAEINPROGRESS = 10036, + WSAEALREADY = 10037, + WSAENOTSOCK = 10038, + WSAEDESTADDRREQ = 10039, + WSAEMSGSIZE = 10040, + WSAEPROTOTYPE = 10041, + WSAENOPROTOOPT = 10042, + WSAEPROTONOSUPPORT = 10043, + WSAESOCKTNOSUPPORT = 10044, + WSAEOPNOTSUPP = 10045, + WSAEPFNOSUPPORT = 10046, + WSAEAFNOSUPPORT = 10047, + WSAEADDRINUSE = 10048, + WSAEADDRNOTAVAIL = 10049, + WSAENETDOWN = 10050, + WSAENETUNREACH = 10051, + WSAENETRESET = 10052, + WSAECONNABORTED = 10053, + WSAECONNRESET = 10054, + WSAENOBUFS = 10055, + WSAEISCONN = 10056, + WSAENOTCONN = 10057, + WSAESHUTDOWN = 10058, + WSAETOOMANYREFS = 10059, + WSAETIMEDOUT = 10060, + WSAECONNREFUSED = 10061, + WSAELOOP = 10062, + WSAENAMETOOLONG = 10063, + WSAEHOSTDOWN = 10064, + WSAEHOSTUNREACH = 10065, + WSAENOTEMPTY = 10066, + WSAEPROCLIM = 10067, + WSAEUSERS = 10068, + WSAEDQUOT = 10069, + WSAESTALE = 10070, + WSAEREMOTE = 10071, + WSAEDISCON = 10101, + WSASYSNOTREADY = 10091, + WSAVERNOTSUPPORTED = 10092, + WSANOTINITIALISED = 10093, + WSAHOST_NOT_FOUND = 11001, + WSATRY_AGAIN = 11002, + WSANO_RECOVERY = 11003, + WSANO_DATA = 11004, + WSANO_ADDRESS = WSANO_DATA +} + +alias WSAGetLastError h_errno; + +enum : int { + HOST_NOT_FOUND = WSAHOST_NOT_FOUND, + TRY_AGAIN = WSATRY_AGAIN, + NO_RECOVERY = WSANO_RECOVERY, + NO_DATA = WSANO_DATA, + NO_ADDRESS = WSANO_ADDRESS +} + +extern (Pascal) { + SOCKET accept(SOCKET, SOCKADDR*, int*); + int bind(SOCKET, const(SOCKADDR)*, int); + int closesocket(SOCKET); + int connect(SOCKET, const(SOCKADDR)*, int); + int ioctlsocket(SOCKET, int, u_long*); + int getpeername(SOCKET, SOCKADDR*, int*); + int getsockname(SOCKET, SOCKADDR*, int*); + int getsockopt(SOCKET, int, int, char*, int*); + uint inet_addr(const(char)*); + int listen(SOCKET, int); + int recv(SOCKET, char*, int, int); + int recvfrom(SOCKET, char*, int, int, SOCKADDR*, int*); + int send(SOCKET, const(char)*, int, int); + int sendto(SOCKET, const(char)*, int, int, const(SOCKADDR)*, int); + int setsockopt(SOCKET, int, int, const(char)*, int); + int shutdown(SOCKET, int); + SOCKET socket(int, int, int); + int WSAStartup(WORD, LPWSADATA); + int WSACleanup(); + void WSASetLastError(int); + int WSAGetLastError(); + BOOL WSAIsBlocking(); + int WSAUnhookBlockingHook(); + FARPROC WSASetBlockingHook(FARPROC); + int WSACancelBlockingCall(); + HANDLE WSAAsyncGetServByName(HWND, u_int, const(char)*, const(char)*, char*, int); + HANDLE WSAAsyncGetServByPort(HWND, u_int, int, const(char)*, char*, int); + HANDLE WSAAsyncGetProtoByName(HWND, u_int, const(char)*, char*, int); + HANDLE WSAAsyncGetProtoByNumber(HWND, u_int, int, char*, int); + HANDLE WSAAsyncGetHostByName(HWND, u_int, const(char)*, char*, int); + HANDLE WSAAsyncGetHostByAddr(HWND, u_int, const(char)*, int, int, char*, int); + int WSACancelAsyncRequest(HANDLE); + int WSAAsyncSelect(SOCKET, HWND, u_int, int); + u_long htonl(u_long); + u_long ntohl(u_long); + u_short htons(u_short); + u_short ntohs(u_short); + int select(int nfds, FD_SET*, FD_SET*, FD_SET*, const(TIMEVAL)*); + int gethostname(char*, int); +} + +extern (Windows) { + char* inet_ntoa(IN_ADDR); + HOSTENT* gethostbyaddr(const(char)*, int, int); + HOSTENT* gethostbyname(const(char)*); + SERVENT* getservbyport(int, const(char)*); + SERVENT* getservbyname(const(char)*, const(char)*); + PROTOENT* getprotobynumber(int); + PROTOENT* getprotobyname(const(char)*); +} + +alias MAKELONG WSAMAKEASYNCREPLY, WSAMAKESELECTREPLY; +alias LOWORD WSAGETASYNCBUFLEN, WSAGETSELECTEVENT; +alias HIWORD WSAGETASYNCERROR, WSAGETSELECTERROR; + + +/* + * Recent MSDN docs indicate that the MS-specific extensions exported from + * mswsock.dll (AcceptEx, TransmitFile. WSARecEx and GetAcceptExSockaddrs) are + * declared in mswsock.h. These extensions are not supported on W9x or WinCE. + * However, code using WinSock 1.1 API may expect the declarations and + * associated defines to be in this header. Thus we include mswsock.h here. + * + * When linking against the WinSock 1.1 lib, wsock32.dll, the mswsock functions + * are automatically routed to mswsock.dll (on platforms with support). + * The WinSock 2 lib, ws2_32.dll, does not contain any references to + * the mswsock extensions. + */ + +import win32.mswsock; Index: src/win32/winsock2.d ================================================================== --- src/win32/winsock2.d +++ src/win32/winsock2.d @@ -1,1464 +1,1464 @@ -/***********************************************************************\ -* winsock2.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Daniel Keep * -\***********************************************************************/ -module win32.winsock2; -pragma(lib, "Ws2_32.lib"); - -/* - Definitions for winsock 2 - - Contributed by the WINE project. - - Portions Copyright (c) 1980, 1983, 1988, 1993 - The Regents of the University of California. All rights reserved. - - Portions Copyright (c) 1993 by Digital Equipment Corporation. - */ - -/* DRK: This module should not be included if -version=Win32_Winsock2 has - * not been set. If it has, assert. I think it's better this way than - * letting the user believe that it's worked. - * - * SG: It has now been changed so that winsock2 is the default, and - * -version=Win32_Winsock1 must be set to use winsock. - */ -version(Win32_Winsock1) { - pragma(msg, "Cannot use win32.winsock2 with Win32_Winsock1 defined."); - static assert(false); -} - -import win32.winbase; -import win32.windef; -import win32.basetyps; - -alias char u_char; -alias ushort u_short; -alias uint u_int, u_long, SOCKET; - -const size_t FD_SETSIZE = 64; - -/* shutdown() how types */ -enum : int { - SD_RECEIVE, - SD_SEND, - SD_BOTH -} - -/* Good grief this is stupid... is it a struct? A preprocessor macro? A - struct tag? Who the hell knows!? */ -struct FD_SET { - u_int fd_count; - SOCKET[FD_SETSIZE] fd_array; - - /* this differs from the define in winsock.h and in cygwin sys/types.h */ - static void opCall(SOCKET fd, FD_SET set) { - u_int i; - for (i = 0; i < set.fd_count; i++) - if (set.fd_array[i] == fd) - break; - if (i == set.fd_count) - if (set.fd_count < FD_SETSIZE) { - set.fd_array[i] = fd; - set.fd_count++; - } - } -} -alias FD_SET* PFD_SET, LPFD_SET; - -// Keep this alias, since fd_set isn't a tag name in the original header. -alias FD_SET fd_set; - -extern(Windows) int __WSAFDIsSet(SOCKET, FD_SET*); -alias __WSAFDIsSet FD_ISSET; - -void FD_CLR(SOCKET fd, FD_SET* set) { - for (u_int i = 0; i < set.fd_count; i++) { - if (set.fd_array[i] == fd) { - while (i < set.fd_count - 1) { - set.fd_array[i] = set.fd_array[i+1]; - i++; - } - set.fd_count--; - break; - } - } -} - -void FD_ZERO(FD_SET* set) { - set.fd_count = 0; -} - - -struct TIMEVAL { - int tv_sec; - int tv_usec; - - int opCmp(TIMEVAL tv) { - if (tv_sec < tv.tv_sec) return -1; - if (tv_sec > tv.tv_sec) return 1; - if (tv_usec < tv.tv_usec) return -1; - if (tv_usec > tv.tv_usec) return 1; - return 0; - } -} -alias TIMEVAL* PTIMEVAL, LPTIMEVAL; - -bool timerisset(TIMEVAL* tvp) { - return tvp.tv_sec || tvp.tv_usec; -} - -/+ -/* DRK: These have been commented out because it was felt that using - * omCmp on the TIMEVAL struct was cleaner. Still, perhaps these should - * be enabled under a version tag for compatibility's sake? - * If it is decided that it's just ugly and unwanted, then feel free to - * delete this section :) - */ -int timercmp(TIMEVAL* tvp, TIMEVAL* uvp) { - return tvp.tv_sec != uvp.tv_sec ? - (tvp.tv_sec < uvp.tv_sec ? -1 : - (tvp.tv_sec > uvp.tv_sec ? 1 : 0)) : - (tvp.tv_usec < uvp.tv_usec ? -1 : - (tvp.tv_usec > uvp.tv_usec ? 1 : 0)); -} - -int timercmp(TIMEVAL* tvp, TIMEVAL* uvp, int function(long,long) cmp) { - return tvp.tv_sec != uvp.tv_sec ? - cmp(tvp.tv_sec, uvp.tv_sec) : - cmp(tvp.tv_usec, uvp.tv_usec); -}+/ - -void timerclear(ref TIMEVAL tvp) { - tvp.tv_sec = tvp.tv_usec = 0; -} - -struct HOSTENT { - char* h_name; - char** h_aliases; - short h_addrtype; - short h_length; - char** h_addr_list; - - char* h_addr() { return h_addr_list[0]; } - char* h_addr(char* h) { return h_addr_list[0] = h; } -} -alias HOSTENT* PHOSTENT, LPHOSTENT; - -struct LINGER { - u_short l_onoff; - u_short l_linger; -} -alias LINGER* PLINGER, LPLINGER; - -enum : DWORD { - IOCPARAM_MASK = 0x7f, - IOC_VOID = 0x20000000, - IOC_OUT = 0x40000000, - IOC_IN = 0x80000000, - IOC_INOUT = IOC_IN|IOC_OUT -} - -// NOTE: This isn't even used anywhere... -template _IO(char x, ubyte y) { - const DWORD _IO = IOC_VOID | (cast(ubyte)x<<8) | y; -} - -template _IOR(char x, ubyte y, t) { - const DWORD _IOR = IOC_OUT | ((t.sizeof & IOCPARAM_MASK)<<16) - | (cast(ubyte)x<<8) | y; -} - -template _IOW(char x, ubyte y, t) { - const DWORD _IOW = IOC_IN | ((t.sizeof & IOCPARAM_MASK)<<16) - | (cast(ubyte)x<<8) | y; -} - -enum : DWORD { - FIONBIO = _IOW!('f', 126, u_long), - FIONREAD = _IOR!('f', 127, u_long), - FIOASYNC = _IOW!('f', 125, u_long), - SIOCSHIWAT = _IOW!('s', 0, u_long), - SIOCGHIWAT = _IOR!('s', 1, u_long), - SIOCSLOWAT = _IOW!('s', 2, u_long), - SIOCGLOWAT = _IOR!('s', 3, u_long), - SIOCATMARK = _IOR!('s', 7, u_long) -} - -struct netent { - char* n_name; - char** n_aliases; - short n_addrtype; - u_long n_net; -} - -struct SERVENT { - char* s_name; - char** s_aliases; - short s_port; - char* s_proto; -} -alias SERVENT* PSERVENT, LPSERVENT; - -struct PROTOENT { - char* p_name; - char** p_aliases; - short p_proto; -} -alias PROTOENT* PPROTOENT, LPPROTOENT; - -enum : int { - IPPROTO_IP = 0, - IPPROTO_ICMP = 1, - IPPROTO_IGMP = 2, - IPPROTO_GGP = 3, - IPPROTO_TCP = 6, - IPPROTO_PUP = 12, - IPPROTO_UDP = 17, - IPPROTO_IDP = 22, - IPPROTO_ND = 77, - IPPROTO_RAW = 255, - IPPROTO_MAX = 256, - - // IPv6 options - IPPROTO_HOPOPTS = 0, // IPv6 Hop-by-Hop options - IPPROTO_IPV6 = 41, // IPv6 header - IPPROTO_ROUTING = 43, // IPv6 Routing header - IPPROTO_FRAGMENT = 44, // IPv6 fragmentation header - IPPROTO_ESP = 50, // encapsulating security payload - IPPROTO_AH = 51, // authentication header - IPPROTO_ICMPV6 = 58, // ICMPv6 - IPPROTO_NONE = 59, // IPv6 no next header - IPPROTO_DSTOPTS = 60 // IPv6 Destination options -} - -enum { - IPPORT_ECHO = 7, - IPPORT_DISCARD = 9, - IPPORT_SYSTAT = 11, - IPPORT_DAYTIME = 13, - IPPORT_NETSTAT = 15, - IPPORT_FTP = 21, - IPPORT_TELNET = 23, - IPPORT_SMTP = 25, - IPPORT_TIMESERVER = 37, - IPPORT_NAMESERVER = 42, - IPPORT_WHOIS = 43, - IPPORT_MTP = 57, - IPPORT_TFTP = 69, - IPPORT_RJE = 77, - IPPORT_FINGER = 79, - IPPORT_TTYLINK = 87, - IPPORT_SUPDUP = 95, - IPPORT_EXECSERVER = 512, - IPPORT_LOGINSERVER = 513, - IPPORT_CMDSERVER = 514, - IPPORT_EFSSERVER = 520, - IPPORT_BIFFUDP = 512, - IPPORT_WHOSERVER = 513, - IPPORT_ROUTESERVER = 520, - IPPORT_RESERVED = 1024 -} - -enum { - IMPLINK_IP = 155, - IMPLINK_LOWEXPER = 156, - IMPLINK_HIGHEXPER = 158 -} - -struct IN_ADDR { - union { - struct { u_char s_b1, s_b2, s_b3, s_b4; } - struct { u_char s_net, s_host, s_lh, s_impno; } - struct { u_short s_w1, s_w2; } - struct { u_short s_w_, s_imp; } // Can I get rid of s_w_ using alignment tricks? - u_long S_addr; - u_long s_addr; - } -} -alias IN_ADDR* PIN_ADDR, LPIN_ADDR; - -// IN_CLASSx are not used anywhere or documented on MSDN. -bool IN_CLASSA(int i) { return (i & 0x80000000) == 0; } - -const IN_CLASSA_NET = 0xff000000; -const IN_CLASSA_NSHIFT = 24; -const IN_CLASSA_HOST = 0x00ffffff; -const IN_CLASSA_MAX = 128; - -bool IN_CLASSB(int i) { return (i & 0xc0000000) == 0x80000000; } - -const IN_CLASSB_NET = 0xffff0000; -const IN_CLASSB_NSHIFT = 16; -const IN_CLASSB_HOST = 0x0000ffff; -const IN_CLASSB_MAX = 65536; - -bool IN_CLASSC(int i) { return (i & 0xe0000000) == 0xc0000000; } - -const IN_CLASSC_NET = 0xffffff00; -const IN_CLASSC_NSHIFT = 8; -const IN_CLASSC_HOST = 0x000000ff; - -const u_long - INADDR_ANY = 0, - INADDR_LOOPBACK = 0x7F000001, - INADDR_BROADCAST = 0xFFFFFFFF, - INADDR_NONE = 0xFFFFFFFF; - -struct SOCKADDR_IN { - short sin_family; - u_short sin_port; - IN_ADDR sin_addr; - char[8] sin_zero; -} -alias SOCKADDR_IN* PSOCKADDR_IN, LPSOCKADDR_IN; - -const size_t - WSADESCRIPTION_LEN = 256, - WSASYS_STATUS_LEN = 128; - -struct WSADATA { - WORD wVersion; - WORD wHighVersion; - char[WSADESCRIPTION_LEN+1] szDescription; - char[WSASYS_STATUS_LEN+1] szSystemStatus; - ushort iMaxSockets; - ushort iMaxUdpDg; - char* lpVendorInfo; -} -alias WSADATA* LPWSADATA; - -// This is not documented on the MSDN site -const IP_OPTIONS = 1; - -const int - SO_OPTIONS = 1, - SO_DEBUG = 1, - SO_ACCEPTCONN = 2, - SO_REUSEADDR = 4, - SO_KEEPALIVE = 8, - SO_DONTROUTE = 16, - SO_BROADCAST = 32, - SO_USELOOPBACK = 64, - SO_LINGER = 128, - SO_OOBINLINE = 256, - SO_DONTLINGER = ~SO_LINGER, - SO_EXCLUSIVEADDRUSE= ~SO_REUSEADDR; - -enum : int { - SO_SNDBUF = 0x1001, - SO_RCVBUF, - SO_SNDLOWAT, - SO_RCVLOWAT, - SO_SNDTIMEO, - SO_RCVTIMEO, - SO_ERROR, - SO_TYPE // = 0x1008 -} - -const SOCKET INVALID_SOCKET = cast(SOCKET)(~0); -const int SOCKET_ERROR = -1; - -enum : int { - SOCK_STREAM = 1, - SOCK_DGRAM, - SOCK_RAW, - SOCK_RDM, - SOCK_SEQPACKET -} - -const int TCP_NODELAY = 0x0001; - -enum : int { - AF_UNSPEC, - AF_UNIX, - AF_INET, - AF_IMPLINK, - AF_PUP, - AF_CHAOS, - AF_IPX, // = 6 - AF_NS = 6, - AF_ISO, - AF_OSI = AF_ISO, - AF_ECMA, - AF_DATAKIT, - AF_CCITT, - AF_SNA, - AF_DECnet, - AF_DLI, - AF_LAT, - AF_HYLINK, - AF_APPLETALK, - AF_NETBIOS, - AF_VOICEVIEW, - AF_FIREFOX, - AF_UNKNOWN1, - AF_BAN, - AF_ATM, - AF_INET6, - // AF_CLUSTER, AF_12844 nad AF_NETDES are not documented on MSDN - AF_CLUSTER, - AF_12844, - AF_IRDA, // = 26 - AF_NETDES = 28, - AF_MAX // = 29 -} - -struct SOCKADDR { - u_short sa_family; - char[14] sa_data; -} -alias SOCKADDR* PSOCKADDR, LPSOCKADDR; - -/* Portable IPv6/IPv4 version of sockaddr. - Uses padding to force 8 byte alignment - and maximum size of 128 bytes */ -struct SOCKADDR_STORAGE { - short ss_family; - char[6] __ss_pad1; // pad to 8 - long __ss_align; // force alignment - char[112] __ss_pad2; // pad to 128 -} -alias SOCKADDR_STORAGE* PSOCKADDR_STORAGE; - -struct sockproto { - u_short sp_family; - u_short sp_protocol; -} - -enum : int { - PF_UNSPEC = AF_UNSPEC, - PF_UNIX = AF_UNIX, - PF_INET = AF_INET, - PF_IMPLINK = AF_IMPLINK, - PF_PUP = AF_PUP, - PF_CHAOS = AF_CHAOS, - PF_NS = AF_NS, - PF_IPX = AF_IPX, - PF_ISO = AF_ISO, - PF_OSI = AF_OSI, - PF_ECMA = AF_ECMA, - PF_DATAKIT = AF_DATAKIT, - PF_CCITT = AF_CCITT, - PF_SNA = AF_SNA, - PF_DECnet = AF_DECnet, - PF_DLI = AF_DLI, - PF_LAT = AF_LAT, - PF_HYLINK = AF_HYLINK, - PF_APPLETALK = AF_APPLETALK, - PF_VOICEVIEW = AF_VOICEVIEW, - PF_FIREFOX = AF_FIREFOX, - PF_UNKNOWN1 = AF_UNKNOWN1, - PF_BAN = AF_BAN, - PF_ATM = AF_ATM, - PF_INET6 = AF_INET6, - PF_MAX = AF_MAX -} - -const int SOL_SOCKET = 0xFFFF; - -const int SOMAXCONN = 5; - -const int - MSG_OOB = 1, - MSG_PEEK = 2, - MSG_DONTROUTE = 4, - MSG_MAXIOVLEN = 16, - MSG_PARTIAL = 0x8000; - -const size_t MAXGETHOSTSTRUCT = 1024; - -// Not documented on MSDN -enum { - FD_READ_BIT, - FD_WRITE_BIT, - FD_OOB_BIT, - FD_ACCEPT_BIT, - FD_CONNECT_BIT, - FD_CLOSE_BIT, - FD_QOS_BIT, - FD_GROUP_QOS_BIT, - FD_ROUTING_INTERFACE_CHANGE_BIT, - FD_ADDRESS_LIST_CHANGE_BIT, - FD_MAX_EVENTS // = 10 -} - -const int - FD_READ = 1 << FD_READ_BIT, - FD_WRITE = 1 << FD_WRITE_BIT, - FD_OOB = 1 << FD_OOB_BIT, - FD_ACCEPT = 1 << FD_ACCEPT_BIT, - FD_CONNECT = 1 << FD_CONNECT_BIT, - FD_CLOSE = 1 << FD_CLOSE_BIT, - FD_QOS = 1 << FD_QOS_BIT, - FD_GROUP_QOS = 1 << FD_GROUP_QOS_BIT, - FD_ROUTING_INTERFACE_CHANGE = 1 << FD_ROUTING_INTERFACE_CHANGE_BIT, - FD_ADDRESS_LIST_CHANGE = 1 << FD_ADDRESS_LIST_CHANGE_BIT, - FD_ALL_EVENTS = (1 << FD_MAX_EVENTS) - 1; - -enum : int { - WSABASEERR = 10000, - WSAEINTR = WSABASEERR + 4, - WSAEBADF = WSABASEERR + 9, - WSAEACCES = WSABASEERR + 13, - WSAEFAULT = WSABASEERR + 14, - WSAEINVAL = WSABASEERR + 22, - WSAEMFILE = WSABASEERR + 24, - WSAEWOULDBLOCK = WSABASEERR + 35, - WSAEINPROGRESS = WSABASEERR + 36, // deprecated on WinSock2 - WSAEALREADY = WSABASEERR + 37, - WSAENOTSOCK = WSABASEERR + 38, - WSAEDESTADDRREQ = WSABASEERR + 39, - WSAEMSGSIZE = WSABASEERR + 40, - WSAEPROTOTYPE = WSABASEERR + 41, - WSAENOPROTOOPT = WSABASEERR + 42, - WSAEPROTONOSUPPORT = WSABASEERR + 43, - WSAESOCKTNOSUPPORT = WSABASEERR + 44, - WSAEOPNOTSUPP = WSABASEERR + 45, - WSAEPFNOSUPPORT = WSABASEERR + 46, - WSAEAFNOSUPPORT = WSABASEERR + 47, - WSAEADDRINUSE = WSABASEERR + 48, - WSAEADDRNOTAVAIL = WSABASEERR + 49, - WSAENETDOWN = WSABASEERR + 50, - WSAENETUNREACH = WSABASEERR + 51, - WSAENETRESET = WSABASEERR + 52, - WSAECONNABORTED = WSABASEERR + 53, - WSAECONNRESET = WSABASEERR + 54, - WSAENOBUFS = WSABASEERR + 55, - WSAEISCONN = WSABASEERR + 56, - WSAENOTCONN = WSABASEERR + 57, - WSAESHUTDOWN = WSABASEERR + 58, - WSAETOOMANYREFS = WSABASEERR + 59, - WSAETIMEDOUT = WSABASEERR + 60, - WSAECONNREFUSED = WSABASEERR + 61, - WSAELOOP = WSABASEERR + 62, - WSAENAMETOOLONG = WSABASEERR + 63, - WSAEHOSTDOWN = WSABASEERR + 64, - WSAEHOSTUNREACH = WSABASEERR + 65, - WSAENOTEMPTY = WSABASEERR + 66, - WSAEPROCLIM = WSABASEERR + 67, - WSAEUSERS = WSABASEERR + 68, - WSAEDQUOT = WSABASEERR + 69, - WSAESTALE = WSABASEERR + 70, - WSAEREMOTE = WSABASEERR + 71, - WSAEDISCON = WSABASEERR + 101, - WSASYSNOTREADY = WSABASEERR + 91, - WSAVERNOTSUPPORTED = WSABASEERR + 92, - WSANOTINITIALISED = WSABASEERR + 93, - WSAHOST_NOT_FOUND = WSABASEERR + 1001, - WSATRY_AGAIN = WSABASEERR + 1002, - WSANO_RECOVERY = WSABASEERR + 1003, - WSANO_DATA = WSABASEERR + 1004, - WSANO_ADDRESS = WSANO_DATA, - - // WinSock2 specific error codes - WSAENOMORE = WSABASEERR + 102, - WSAECANCELLED = WSABASEERR + 103, - WSAEINVALIDPROCTABLE = WSABASEERR + 104, - WSAEINVALIDPROVIDER = WSABASEERR + 105, - WSAEPROVIDERFAILEDINIT = WSABASEERR + 106, - WSASYSCALLFAILURE = WSABASEERR + 107, - WSASERVICE_NOT_FOUND = WSABASEERR + 108, - WSATYPE_NOT_FOUND = WSABASEERR + 109, - WSA_E_NO_MORE = WSABASEERR + 110, - WSA_E_CANCELLED = WSABASEERR + 111, - WSAEREFUSED = WSABASEERR + 112, - - // WS QualityofService errors - WSA_QOS_RECEIVERS = WSABASEERR + 1005, - WSA_QOS_SENDERS = WSABASEERR + 1006, - WSA_QOS_NO_SENDERS = WSABASEERR + 1007, - WSA_QOS_NO_RECEIVERS = WSABASEERR + 1008, - WSA_QOS_REQUEST_CONFIRMED = WSABASEERR + 1009, - WSA_QOS_ADMISSION_FAILURE = WSABASEERR + 1010, - WSA_QOS_POLICY_FAILURE = WSABASEERR + 1011, - WSA_QOS_BAD_STYLE = WSABASEERR + 1012, - WSA_QOS_BAD_OBJECT = WSABASEERR + 1013, - WSA_QOS_TRAFFIC_CTRL_ERROR = WSABASEERR + 1014, - WSA_QOS_GENERIC_ERROR = WSABASEERR + 1015, - WSA_QOS_ESERVICETYPE = WSABASEERR + 1016, - WSA_QOS_EFLOWSPEC = WSABASEERR + 1017, - WSA_QOS_EPROVSPECBUF = WSABASEERR + 1018, - WSA_QOS_EFILTERSTYLE = WSABASEERR + 1019, - WSA_QOS_EFILTERTYPE = WSABASEERR + 1020, - WSA_QOS_EFILTERCOUNT = WSABASEERR + 1021, - WSA_QOS_EOBJLENGTH = WSABASEERR + 1022, - WSA_QOS_EFLOWCOUNT = WSABASEERR + 1023, - WSA_QOS_EUNKOWNPSOBJ = WSABASEERR + 1024, - WSA_QOS_EPOLICYOBJ = WSABASEERR + 1025, - WSA_QOS_EFLOWDESC = WSABASEERR + 1026, - WSA_QOS_EPSFLOWSPEC = WSABASEERR + 1027, - WSA_QOS_EPSFILTERSPEC = WSABASEERR + 1028, - WSA_QOS_ESDMODEOBJ = WSABASEERR + 1029, - WSA_QOS_ESHAPERATEOBJ = WSABASEERR + 1030, - WSA_QOS_RESERVED_PETYPE = WSABASEERR + 1031 -} - -alias WSAGetLastError h_errno; - -enum : int { - HOST_NOT_FOUND = WSAHOST_NOT_FOUND, - TRY_AGAIN = WSATRY_AGAIN, - NO_RECOVERY = WSANO_RECOVERY, - NO_DATA = WSANO_DATA, - NO_ADDRESS = WSANO_ADDRESS -} - -extern (Windows) { - SOCKET accept(SOCKET, SOCKADDR*, int*); - int bind(SOCKET, CPtr!(SOCKADDR), int); - int closesocket(SOCKET); - int connect(SOCKET, CPtr!(SOCKADDR), int); - int ioctlsocket(SOCKET, int, u_long*); - int getpeername(SOCKET, SOCKADDR*, int*); - int getsockname(SOCKET, SOCKADDR*, int*); - int getsockopt(SOCKET, int, int, void*, int*); - uint inet_addr(CPtr!(char)); - int listen(SOCKET, int); - int recv(SOCKET, ubyte*, int, int); - int recvfrom(SOCKET, ubyte*, int, int, SOCKADDR*, int*); - int send(SOCKET, CPtr!(ubyte), int, int); - int sendto(SOCKET, CPtr!(ubyte), int, int, CPtr!(SOCKADDR), int); - int setsockopt(SOCKET, int, int, CPtr!(void), int); - int shutdown(SOCKET, int); - SOCKET socket(int, int, int); - - alias typeof(&accept) LPFN_ACCEPT; - alias typeof(&bind) LPFN_BIND; - alias typeof(&closesocket) LPFN_CLOSESOCKET; - alias typeof(&connect) LPFN_CONNECT; - alias typeof(&ioctlsocket) LPFN_IOCTLSOCKET; - alias typeof(&getpeername) LPFN_GETPEERNAME; - alias typeof(&getsockname) LPFN_GETSOCKNAME; - alias typeof(&getsockopt) LPFN_GETSOCKOPT; - alias typeof(&inet_addr) LPFN_INET_ADDR; - alias typeof(&listen) LPFN_LISTEN; - alias typeof(&recv) LPFN_RECV; - alias typeof(&recvfrom) LPFN_RECVFROM; - alias typeof(&send) LPFN_SEND; - alias typeof(&sendto) LPFN_SENDTO; - alias typeof(&setsockopt) LPFN_SETSOCKOPT; - alias typeof(&shutdown) LPFN_SHUTDOWN; - alias typeof(&socket) LPFN_SOCKET; -} - -extern(Windows) { - char* inet_ntoa(IN_ADDR); - HOSTENT* gethostbyaddr(CPtr!(char), int, int); - HOSTENT* gethostbyname(CPtr!(char)); - SERVENT* getservbyport(int, CPtr!(char)); - SERVENT* getservbyname(CPtr!(char), CPtr!(char)); - PROTOENT* getprotobynumber(int); - PROTOENT* getprotobyname(CPtr!(char)); - - /* NOTE: DK: in the original headers, these were declared with - PASCAL linkage. Since this is at odds with the definition - of the functions themselves, and also since MinGW seems to - treat the two interchangably, I have moved them here. */ - alias typeof(&inet_ntoa) LPFN_INET_NTOA; - alias typeof(&gethostbyaddr) LPFN_GETHOSTBYADDR; - alias typeof(&gethostbyname) LPFN_GETHOSTBYNAME; - alias typeof(&getservbyport) LPFN_GETSERVBYPORT; - alias typeof(&getservbyname) LPFN_GETSERVBYNAME; - alias typeof(&getprotobynumber) LPFN_GETPROTOBYNUMBER; - alias typeof(&getprotobyname) LPFN_GETPROTOBYNAME; -} - -extern(Windows) { - int WSAStartup(WORD, LPWSADATA); - int WSACleanup(); - void WSASetLastError(int); - int WSAGetLastError(); - - alias typeof(&WSAStartup) LPFN_WSASTARTUP; - alias typeof(&WSACleanup) LPFN_WSACLEANUP; - alias typeof(&WSASetLastError) LPFN_WSASETLASTERROR; - alias typeof(&WSAGetLastError) LPFN_WSAGETLASTERROR; -} - -/* - * Pseudo-blocking functions are deprecated in WinSock2 - * spec. Use threads instead. - */ -deprecated extern(Windows) { - BOOL WSAIsBlocking(); - int WSAUnhookBlockingHook(); - FARPROC WSASetBlockingHook(FARPROC); - int WSACancelBlockingCall(); - - alias typeof(&WSAIsBlocking) LPFN_WSAISBLOCKING; - alias typeof(&WSAUnhookBlockingHook) LPFN_WSAUNHOOKBLOCKINGHOOK; - alias typeof(&WSASetBlockingHook) LPFN_WSASETBLOCKINGHOOK; - alias typeof(&WSACancelBlockingCall) LPFN_WSACANCELBLOCKINGCALL; -} - -extern(Windows) { - HANDLE WSAAsyncGetServByName(HWND, u_int, CPtr!(char), CPtr!(char), char*, int); - HANDLE WSAAsyncGetServByPort(HWND, u_int, int, CPtr!(char), char*, int); - HANDLE WSAAsyncGetProtoByName(HWND, u_int, CPtr!(char), char*, int); - HANDLE WSAAsyncGetProtoByNumber(HWND, u_int, int, char*, int); - HANDLE WSAAsyncGetHostByName(HWND, u_int, CPtr!(char), char*, int); - HANDLE WSAAsyncGetHostByAddr(HWND, u_int, CPtr!(char), int, int, char*, int); - int WSACancelAsyncRequest(HANDLE); - int WSAAsyncSelect(SOCKET, HWND, u_int, long); - - alias typeof(&WSAAsyncGetServByName) LPFN_WSAAsyncGetServByName; - alias typeof(&WSAAsyncGetServByPort) LPFN_WSAASYNCGETSERVBYPORT; - alias typeof(&WSAAsyncGetProtoByName) LPFN_WSAASYNCGETPROTOBYNAME; - alias typeof(&WSAAsyncGetProtoByNumber) LPFN_WSAASYNCGETPROTOBYNUMBER; - alias typeof(&WSAAsyncGetHostByName) LPFN_WSAASYNCGETHOSTBYNAME; - alias typeof(&WSAAsyncGetHostByAddr) LPFN_WSAASYNCGETHOSTBYADDR; - alias typeof(&WSACancelAsyncRequest) LPFN_WSACANCELASYNCREQUEST; - alias typeof(&WSAAsyncSelect) LPFN_WSAASYNCSELECT; -} - -extern(Windows) { - u_long htonl(u_long); - u_long ntohl(u_long); - u_short htons(u_short); - u_short ntohs(u_short); - int select(int nfds, fd_set*, fd_set*, fd_set*, CPtr!(TIMEVAL)); - - alias typeof(&htonl) LPFN_HTONL; - alias typeof(&ntohl) LPFN_NTOHL; - alias typeof(&htons) LPFN_HTONS; - alias typeof(&ntohs) LPFN_NTOHS; - alias typeof(&select) LPFN_SELECT; - - int gethostname(char*, int); - alias typeof(&gethostname) LPFN_GETHOSTNAME; -} - -alias MAKELONG WSAMAKEASYNCREPLY, WSAMAKESELECTREPLY; -alias LOWORD WSAGETASYNCBUFLEN, WSAGETSELECTEVENT; -alias HIWORD WSAGETASYNCERROR, WSAGETSELECTERROR; - - -alias INADDR_ANY ADDR_ANY; - -bool IN_CLASSD(int i) { return (i & 0xf0000000) == 0xe0000000; } - -const IN_CLASSD_NET = 0xf0000000; -const IN_CLASSD_NSHIFT = 28; -const IN_CLASSD_HOST = 0x0fffffff; - -alias IN_CLASSD IN_MULTICAST; - -const FROM_PROTOCOL_INFO = -1; - -enum : int { - SO_GROUP_ID = 0x2001, - SO_GROUP_PRIORITY, - SO_MAX_MSG_SIZE, - SO_PROTOCOL_INFOA, - SO_PROTOCOL_INFOW -} -// NOTE: These are logically part of the previous enum, but you can't -// have version statements in an enum body... -version(Unicode) - const int SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW; -else - const int SO_PROTOCOL_INFO = SO_PROTOCOL_INFOA; - -const PVD_CONFIG = 0x3001; - -const MSG_INTERRUPT = 0x10; -//const MSG_MAXIOVLEN = 16; // Already declared above - -alias HANDLE WSAEVENT; -alias LPHANDLE LPWSAEVENT; -alias OVERLAPPED WSAOVERLAPPED; -alias OVERLAPPED* LPWSAOVERLAPPED; - -private import win32.winerror; -private import win32.winbase; - -enum { - WSA_IO_PENDING = ERROR_IO_PENDING, - WSA_IO_INCOMPLETE = ERROR_IO_INCOMPLETE, - WSA_INVALID_HANDLE = ERROR_INVALID_HANDLE, - WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER, - WSA_NOT_ENOUGH_MEMORY = ERROR_NOT_ENOUGH_MEMORY, - WSA_OPERATION_ABORTED = ERROR_OPERATION_ABORTED -} - -const WSA_INVALID_EVENT = cast(WSAEVENT)null; -const WSA_MAXIMUM_WAIT_EVENTS = MAXIMUM_WAIT_OBJECTS; -const WSA_WAIT_FAILED = cast(DWORD)-1; -const WSA_WAIT_EVENT_0 = WAIT_OBJECT_0; -const WSA_WAIT_IO_COMPLETION = WAIT_IO_COMPLETION; -const WSA_WAIT_TIMEOUT = WAIT_TIMEOUT; -const WSA_INFINITE = INFINITE; - -struct WSABUF { - uint len; - char* buf; -} - -alias WSABUF* LPWSABUF; - -enum GUARANTEE { - BestEffortService, - ControlledLoadService, - PredictiveService, - GuaranteedDelayService, - GuaranteedService -} - -/* TODO: FLOWSPEC and related definitions belong in qos.h */ - -/* - Windows Sockets 2 Application Programming Interface, - revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE - and the elements of _flowspec, but the type uint32 is not defined - or used anywhere else in the w32api. For now, just use - unsigned int, which is 32 bits on _WIN32 and _WIN64. -*/ - -alias uint SERVICETYPE; - -struct FLOWSPEC { - uint TokenRate; - uint TokenBucketSize; - uint PeakBandwidth; - uint Latency; - uint DelayVariation; - SERVICETYPE ServiceType; - uint MaxSduSize; - uint MinimumPolicedSize; -} - -alias FLOWSPEC* PFLOWSPEC, LPFLOWSPEC; - -struct QOS -{ - FLOWSPEC SendingFlowspec; - FLOWSPEC ReceivingFlowspec; - WSABUF ProviderSpecific; -} - -alias QOS* LPQOS; - -enum { - CF_ACCEPT, - CF_REJECT, - CF_DEFER -} - -// REM: Already defined above -/*enum { - SD_RECEIVE, - SD_SEND, - SD_BOTH -}*/ - -alias uint GROUP; - -enum { - SG_UNCONSTRAINED_GROUP = 0x01, - SG_CONSTRAINED_GROUP -} - -struct WSANETWORKEVENTS { - int lNetworkEvents; - int[FD_MAX_EVENTS] iErrorCode; -} - -alias WSANETWORKEVENTS* LPWSANETWORKEVENTS; - -const MAX_PROTOCOL_CHAIN = 7; - -const BASE_PROTOCOL = 1; -const LAYERED_PROTOCOL = 0; - -enum WSAESETSERVICEOP -{ - RNRSERVICE_REGISTER = 0, - RNRSERVICE_DEREGISTER, - RNRSERVICE_DELETE -} - -alias WSAESETSERVICEOP* PWSAESETSERVICEOP, LPWSAESETSERVICEOP; - -struct AFPROTOCOLS { - INT iAddressFamily; - INT iProtocol; -} - -alias AFPROTOCOLS* PAFPROTOCOLS, LPAFPROTOCOLS; - -enum WSAECOMPARATOR -{ - COMP_EQUAL = 0, - COMP_NOTLESS -} - -alias WSAECOMPARATOR* PWSAECOMPARATOR, LPWSAECOMPARATOR; - -struct WSAVERSION -{ - DWORD dwVersion; - WSAECOMPARATOR ecHow; -} - -alias WSAVERSION* PWSAVERSION, LPWSAVERSION; - -// Import for SOCKET_ADDRESS, CSADDR_INFO -// import win32.nspapi; -//#ifndef __CSADDR_T_DEFINED /* also in nspapi.h */ -//#define __CSADDR_T_DEFINED - -struct SOCKET_ADDRESS { - LPSOCKADDR lpSockaddr; - INT iSockaddrLength; -} - -alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; - -struct CSADDR_INFO { - SOCKET_ADDRESS LocalAddr; - SOCKET_ADDRESS RemoteAddr; - INT iSocketType; - INT iProtocol; -} - -alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; - -//#endif - -struct SOCKET_ADDRESS_LIST { - INT iAddressCount; - SOCKET_ADDRESS[1] _Address; - SOCKET_ADDRESS* Address() { return _Address.ptr; } -} - -alias SOCKET_ADDRESS_LIST* LPSOCKET_ADDRESS_LIST; - -// TODO: Import wtypes/nspapi? -//#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */ -//#define __BLOB_T_DEFINED -struct BLOB { - ULONG cbSize; - BYTE* pBlobData; -} - -alias BLOB* PBLOB, LPBLOB; -//#endif - -struct WSAQUERYSETA -{ - DWORD dwSize; - LPSTR lpszServiceInstanceName; - LPGUID lpServiceClassId; - LPWSAVERSION lpVersion; - LPSTR lpszComment; - DWORD dwNameSpace; - LPGUID lpNSProviderId; - LPSTR lpszContext; - DWORD dwNumberOfProtocols; - LPAFPROTOCOLS lpafpProtocols; - LPSTR lpszQueryString; - DWORD dwNumberOfCsAddrs; - LPCSADDR_INFO lpcsaBuffer; - DWORD dwOutputFlags; - LPBLOB lpBlob; -} - -alias WSAQUERYSETA* PWSAQUERYSETA, LPWSAQUERYSETA; - -struct WSAQUERYSETW -{ - DWORD dwSize; - LPWSTR lpszServiceInstanceName; - LPGUID lpServiceClassId; - LPWSAVERSION lpVersion; - LPWSTR lpszComment; - DWORD dwNameSpace; - LPGUID lpNSProviderId; - LPWSTR lpszContext; - DWORD dwNumberOfProtocols; - LPAFPROTOCOLS lpafpProtocols; - LPWSTR lpszQueryString; - DWORD dwNumberOfCsAddrs; - LPCSADDR_INFO lpcsaBuffer; - DWORD dwOutputFlags; - LPBLOB lpBlob; -} - - -alias WSAQUERYSETW* PWSAQUERYSETW, LPWSAQUERYSETW; - -version(Unicode) { - alias WSAQUERYSETW WSAQUERYSET; - alias PWSAQUERYSETW PWSAQUERYSET; - alias LPWSAQUERYSETW LPWSAQUERYSET; -} else { - alias WSAQUERYSETA WSAQUERYSET; - alias PWSAQUERYSETA PWSAQUERYSET; - alias LPWSAQUERYSETA LPWSAQUERYSET; -} - -const int - LUP_DEEP = 0x0001, - LUP_CONTAINERS = 0x0002, - LUP_NOCONTAINERS = 0x0004, - LUP_NEAREST = 0x0008, - LUP_RETURN_NAME = 0x0010, - LUP_RETURN_TYPE = 0x0020, - LUP_RETURN_VERSION = 0x0040, - LUP_RETURN_COMMENT = 0x0080, - LUP_RETURN_ADDR = 0x0100, - LUP_RETURN_BLOB = 0x0200, - LUP_RETURN_ALIASES = 0x0400, - LUP_RETURN_QUERY_STRING = 0x0800, - LUP_RETURN_ALL = 0x0FF0, - LUP_RES_SERVICE = 0x8000, - LUP_FLUSHCACHE = 0x1000, - LUP_FLUSHPREVIOUS = 0x2000; - -struct WSANSCLASSINFOA -{ - LPSTR lpszName; - DWORD dwNameSpace; - DWORD dwValueType; - DWORD dwValueSize; - LPVOID lpValue; -} - -alias WSANSCLASSINFOA* PWSANSCLASSINFOA, LPWSANSCLASSINFOA; - -struct WSANSCLASSINFOW -{ - LPWSTR lpszName; - DWORD dwNameSpace; - DWORD dwValueType; - DWORD dwValueSize; - LPVOID lpValue; -} - -alias WSANSCLASSINFOW* PWSANSCLASSINFOW, LPWSANSCLASSINFOW; - -version(Unicode) { - alias WSANSCLASSINFOW WSANSCLASSINFO; - alias PWSANSCLASSINFOW PWSANSCLASSINFO; - alias LPWSANSCLASSINFOW LPWSANSCLASSINFO; -} else { - alias WSANSCLASSINFOA WSANSCLASSINFO; - alias PWSANSCLASSINFOA PWSANSCLASSINFO; - alias LPWSANSCLASSINFOA LPWSANSCLASSINFO; -} - -struct WSASERVICECLASSINFOA -{ - LPGUID lpServiceClassId; - LPSTR lpszServiceClassName; - DWORD dwCount; - LPWSANSCLASSINFOA lpClassInfos; -} - -alias WSASERVICECLASSINFOA* PWSASERVICECLASSINFOA, LPWSASERVICECLASSINFOA; - -struct WSASERVICECLASSINFOW -{ - LPGUID lpServiceClassId; - LPWSTR lpszServiceClassName; - DWORD dwCount; - LPWSANSCLASSINFOW lpClassInfos; -} - -alias WSASERVICECLASSINFOW* PWSASERVICECLASSINFOW, LPWSASERVICECLASSINFOW; - -version(Unicode) { - alias WSASERVICECLASSINFOW WSASERVICECLASSINFO; - alias PWSASERVICECLASSINFOW PWSASERVICECLASSINFO; - alias LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO; -} else { - alias WSASERVICECLASSINFOA WSASERVICECLASSINFO; - alias PWSASERVICECLASSINFOA PWSASERVICECLASSINFO; - alias LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO; -} - -struct WSANAMESPACE_INFOA { - GUID NSProviderId; - DWORD dwNameSpace; - BOOL fActive; - DWORD dwVersion; - LPSTR lpszIdentifier; -} - -alias WSANAMESPACE_INFOA* PWSANAMESPACE_INFOA, LPWSANAMESPACE_INFOA; - -struct WSANAMESPACE_INFOW { - GUID NSProviderId; - DWORD dwNameSpace; - BOOL fActive; - DWORD dwVersion; - LPWSTR lpszIdentifier; -} - -alias WSANAMESPACE_INFOW* PWSANAMESPACE_INFOW, LPWSANAMESPACE_INFOW; - -version(Unicode) { - alias WSANAMESPACE_INFOW WSANAMESPACE_INFO; - alias PWSANAMESPACE_INFOW PWSANAMESPACE_INFO; - alias LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO; -} else { - alias WSANAMESPACE_INFOA WSANAMESPACE_INFO; - alias PWSANAMESPACE_INFOA PWSANAMESPACE_INFO; - alias LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO; -} - -struct WSAPROTOCOLCHAIN { - int ChainLen; - DWORD[MAX_PROTOCOL_CHAIN] ChainEntries; -} - -alias WSAPROTOCOLCHAIN* LPWSAPROTOCOLCHAIN; - -const WSAPROTOCOL_LEN = 255; - -struct WSAPROTOCOL_INFOA { - DWORD dwServiceFlags1; - DWORD dwServiceFlags2; - DWORD dwServiceFlags3; - DWORD dwServiceFlags4; - DWORD dwProviderFlags; - GUID ProviderId; - DWORD dwCatalogEntryId; - WSAPROTOCOLCHAIN ProtocolChain; - int iVersion; - int iAddressFamily; - int iMaxSockAddr; - int iMinSockAddr; - int iSocketType; - int iProtocol; - int iProtocolMaxOffset; - int iNetworkByteOrder; - int iSecurityScheme; - DWORD dwMessageSize; - DWORD dwProviderReserved; - CHAR[WSAPROTOCOL_LEN+1] szProtocol; -} - -alias WSAPROTOCOL_INFOA* LPWSAPROTOCOL_INFOA; - -struct WSAPROTOCOL_INFOW { - DWORD dwServiceFlags1; - DWORD dwServiceFlags2; - DWORD dwServiceFlags3; - DWORD dwServiceFlags4; - DWORD dwProviderFlags; - GUID ProviderId; - DWORD dwCatalogEntryId; - WSAPROTOCOLCHAIN ProtocolChain; - int iVersion; - int iAddressFamily; - int iMaxSockAddr; - int iMinSockAddr; - int iSocketType; - int iProtocol; - int iProtocolMaxOffset; - int iNetworkByteOrder; - int iSecurityScheme; - DWORD dwMessageSize; - DWORD dwProviderReserved; - WCHAR[WSAPROTOCOL_LEN+1] szProtocol; -} - -alias WSAPROTOCOL_INFOW* LPWSAPROTOCOL_INFOW; - -// TODO: Below fptr was defined as "CALLBACK" for linkage; is this right? -extern(C) { - alias int function(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD) LPCONDITIONPROC; -} - -extern(Windows) { - alias void function(DWORD, DWORD, LPWSAOVERLAPPED, DWORD) LPWSAOVERLAPPED_COMPLETION_ROUTINE; -} - -version(Unicode) { - alias WSAPROTOCOL_INFOW WSAPROTOCOL_INFO; - alias LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO; -} else { - alias WSAPROTOCOL_INFOA WSAPROTOCOL_INFO; - alias LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO; -} - -/* Needed for XP & .NET Server function WSANSPIoctl. */ -enum WSACOMPLETIONTYPE { - NSP_NOTIFY_IMMEDIATELY = 0, - NSP_NOTIFY_HWND, - NSP_NOTIFY_EVENT, - NSP_NOTIFY_PORT, - NSP_NOTIFY_APC -} - -alias WSACOMPLETIONTYPE* PWSACOMPLETIONTYPE, LPWSACOMPLETIONTYPE; - -struct WSACOMPLETION { - WSACOMPLETIONTYPE Type; - union WSACOMPLETION_PARAMETERS { - struct WSACOMPLETION_WINDOWMESSAGE { - HWND hWnd; - UINT uMsg; - WPARAM context; - } - WSACOMPLETION_WINDOWMESSAGE WindowMessage; - struct WSACOMPLETION_EVENT { - LPWSAOVERLAPPED lpOverlapped; - } - WSACOMPLETION_EVENT Event; - struct WSACOMPLETION_APC { - LPWSAOVERLAPPED lpOverlapped; - LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc; - } - WSACOMPLETION_APC Apc; - struct WSACOMPLETION_PORT { - LPWSAOVERLAPPED lpOverlapped; - HANDLE hPort; - ULONG_PTR Key; - } - WSACOMPLETION_PORT Port; - } - WSACOMPLETION_PARAMETERS Parameters; -} - -alias WSACOMPLETION* PWSACOMPLETION, LPWSACOMPLETION; - -const int - PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001, - PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002, - PFL_HIDDEN = 0x00000004, - PFL_MATCHES_PROTOCOL_ZERO = 0x00000008; - -const int - XP1_CONNECTIONLESS = 0x00000001, - XP1_GUARANTEED_DELIVERY = 0x00000002, - XP1_GUARANTEED_ORDER = 0x00000004, - XP1_MESSAGE_ORIENTED = 0x00000008, - XP1_PSEUDO_STREAM = 0x00000010, - XP1_GRACEFUL_CLOSE = 0x00000020, - XP1_EXPEDITED_DATA = 0x00000040, - XP1_CONNECT_DATA = 0x00000080, - XP1_DISCONNECT_DATA = 0x00000100, - XP1_SUPPORT_BROADCAST = 0x00000200, - XP1_SUPPORT_MULTIPOINT = 0x00000400, - XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800, - XP1_MULTIPOINT_DATA_PLANE = 0x00001000, - XP1_QOS_SUPPORTED = 0x00002000, - XP1_INTERRUPT = 0x00004000, - XP1_UNI_SEND = 0x00008000, - XP1_UNI_RECV = 0x00010000, - XP1_IFS_HANDLES = 0x00020000, - XP1_PARTIAL_MESSAGE = 0x00040000; - -enum : int { - BIGENDIAN = 0x0000, - LITTLEENDIAN = 0x0001 -} - -const SECURITY_PROTOCOL_NONE = 0x0000; - -const JL_SENDER_ONLY = 0x01; -const JL_RECEIVER_ONLY = 0x02; -const JL_BOTH = 0x04; - -const WSA_FLAG_OVERLAPPED = 0x01; -const WSA_FLAG_MULTIPOINT_C_ROOT = 0x02; -const WSA_FLAG_MULTIPOINT_C_LEAF = 0x04; -const WSA_FLAG_MULTIPOINT_D_ROOT = 0x08; -const WSA_FLAG_MULTIPOINT_D_LEAF = 0x10; - -const int IOC_UNIX = 0x00000000; -const int IOC_WS2 = 0x08000000; -const int IOC_PROTOCOL = 0x10000000; -const int IOC_VENDOR = 0x18000000; - -template _WSAIO(int x, int y) { const int _WSAIO = IOC_VOID | x | y; } -template _WSAIOR(int x, int y) { const int _WSAIOR = IOC_OUT | x | y; } -template _WSAIOW(int x, int y) { const int _WSAIOW = IOC_IN | x | y; } -template _WSAIORW(int x, int y) { const int _WSAIORW = IOC_INOUT | x | y; } - -const int SIO_ASSOCIATE_HANDLE = _WSAIOW!(IOC_WS2,1); -const int SIO_ENABLE_CIRCULAR_QUEUEING = _WSAIO!(IOC_WS2,2); -const int SIO_FIND_ROUTE = _WSAIOR!(IOC_WS2,3); -const int SIO_FLUSH = _WSAIO!(IOC_WS2,4); -const int SIO_GET_BROADCAST_ADDRESS = _WSAIOR!(IOC_WS2,5); -const int SIO_GET_EXTENSION_FUNCTION_POINTER = _WSAIORW!(IOC_WS2,6); -const int SIO_GET_QOS = _WSAIORW!(IOC_WS2,7); -const int SIO_GET_GROUP_QOS = _WSAIORW!(IOC_WS2,8); -const int SIO_MULTIPOINT_LOOPBACK = _WSAIOW!(IOC_WS2,9); -const int SIO_MULTICAST_SCOPE = _WSAIOW!(IOC_WS2,10); -const int SIO_SET_QOS = _WSAIOW!(IOC_WS2,11); -const int SIO_SET_GROUP_QOS = _WSAIOW!(IOC_WS2,12); -const int SIO_TRANSLATE_HANDLE = _WSAIORW!(IOC_WS2,13); -const int SIO_ROUTING_INTERFACE_QUERY = _WSAIORW!(IOC_WS2,20); -const int SIO_ROUTING_INTERFACE_CHANGE = _WSAIOW!(IOC_WS2,21); -const int SIO_ADDRESS_LIST_QUERY = _WSAIOR!(IOC_WS2,22); -const int SIO_ADDRESS_LIST_CHANGE = _WSAIO!(IOC_WS2,23); -const int SIO_QUERY_TARGET_PNP_HANDLE = _WSAIOR!(IOC_WS2,24); -const int SIO_NSP_NOTIFY_CHANGE = _WSAIOW!(IOC_WS2,25); - -const int TH_NETDEV = 1; -const int TH_TAPI = 2; - - -extern(Windows) { - SOCKET WSAAccept(SOCKET, SOCKADDR*, LPINT, LPCONDITIONPROC, DWORD); - INT WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD); - INT WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD); - BOOL WSACloseEvent(WSAEVENT); - int WSAConnect(SOCKET, CPtr!(SOCKADDR), int, LPWSABUF, LPWSABUF, LPQOS, LPQOS); - WSAEVENT WSACreateEvent(); - int WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA); - int WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW); - INT WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA); - INT WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW); - int WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS); - int WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD); - int WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD); - int WSAEventSelect(SOCKET, WSAEVENT, int); - BOOL WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD); - BOOL WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS); - INT WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA); - INT WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW); - INT WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD); - INT WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD); - int WSAHtonl(SOCKET, uint, uint*); - int WSAHtons(SOCKET, ushort, ushort*); - INT WSAInstallServiceClassA(LPWSASERVICECLASSINFOA); - INT WSAInstallServiceClassW(LPWSASERVICECLASSINFOW); - int WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - SOCKET WSAJoinLeaf(SOCKET, CPtr!(SOCKADDR), int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD); - INT WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE); - INT WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE); - INT WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA); - INT WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW); - INT WSALookupServiceEnd(HANDLE); - int WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */ - int WSANtohl(SOCKET, uint, uint*); - int WSANtohs(SOCKET, ushort, ushort*); - int WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - int WSARecvDisconnect(SOCKET, LPWSABUF); - int WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, SOCKADDR*, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - INT WSARemoveServiceClass(LPGUID); - BOOL WSAResetEvent(WSAEVENT); - int WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - int WSASendDisconnect(SOCKET, LPWSABUF); - int WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, CPtr!(SOCKADDR), int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); - BOOL WSASetEvent(WSAEVENT); - INT WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD); // NB: was declared with "WSAAPI" linkage - INT WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD); - SOCKET WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD); - SOCKET WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD); - INT WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT); - INT WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT); - DWORD WSAWaitForMultipleEvents(DWORD, CPtr!(WSAEVENT), BOOL, DWORD, BOOL); - - alias typeof(&WSAAccept) LPFN_WSAACCEPT; - alias typeof(&WSAAddressToStringA) LPFN_WSAADDRESSTOSTRINGA; - alias typeof(&WSAAddressToStringW) LPFN_WSAADDRESSTOSTRINGW; - alias typeof(&WSACloseEvent) LPFN_WSACLOSEEVENT; - alias typeof(&WSAConnect) LPFN_WSACONNECT; - alias typeof(&WSACreateEvent) LPFN_WSACREATEEVENT; - alias typeof(&WSADuplicateSocketA) LPFN_WSADUPLICATESOCKETA; - alias typeof(&WSADuplicateSocketW) LPFN_WSADUPLICATESOCKETW; - alias typeof(&WSAEnumNameSpaceProvidersA) LPFN_WSAENUMNAMESPACEPROVIDERSA; - alias typeof(&WSAEnumNameSpaceProvidersW) LPFN_WSAENUMNAMESPACEPROVIDERSW; - alias typeof(&WSAEnumNetworkEvents) LPFN_WSAENUMNETWORKEVENTS; - alias typeof(&WSAEnumProtocolsA) LPFN_WSAENUMPROTOCOLSA; - alias typeof(&WSAEnumProtocolsW) LPFN_WSAENUMPROTOCOLSW; - alias typeof(&WSAEventSelect) LPFN_WSAEVENTSELECT; - alias typeof(&WSAGetOverlappedResult) LPFN_WSAGETOVERLAPPEDRESULT; - alias typeof(&WSAGetQOSByName) LPFN_WSAGETQOSBYNAME; - alias typeof(&WSAGetServiceClassInfoA) LPFN_WSAGETSERVICECLASSINFOA; - alias typeof(&WSAGetServiceClassInfoW) LPFN_WSAGETSERVICECLASSINFOW; - alias typeof(&WSAGetServiceClassNameByClassIdA) LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA; - alias typeof(&WSAGetServiceClassNameByClassIdW) LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW; - alias typeof(&WSAHtonl) LPFN_WSAHTONL; - alias typeof(&WSAHtons) LPFN_WSAHTONS; - alias typeof(&WSAInstallServiceClassA) LPFN_WSAINSTALLSERVICECLASSA; - alias typeof(&WSAInstallServiceClassW) LPFN_WSAINSTALLSERVICECLASSW; - alias typeof(&WSAIoctl) LPFN_WSAIOCTL; - alias typeof(&WSAJoinLeaf) LPFN_WSAJOINLEAF; - alias typeof(&WSALookupServiceBeginA) LPFN_WSALOOKUPSERVICEBEGINA; - alias typeof(&WSALookupServiceBeginW) LPFN_WSALOOKUPSERVICEBEGINW; - alias typeof(&WSALookupServiceNextA) LPFN_WSALOOKUPSERVICENEXTA; - alias typeof(&WSALookupServiceNextW) LPFN_WSALOOKUPSERVICENEXTW; - alias typeof(&WSALookupServiceEnd) LPFN_WSALOOKUPSERVICEEND; - alias typeof(&WSANSPIoctl) LPFN_WSANSPIoctl; - alias typeof(&WSANtohl) LPFN_WSANTOHL; - alias typeof(&WSANtohs) LPFN_WSANTOHS; - alias typeof(&WSARecv) LPFN_WSARECV; - alias typeof(&WSARecvDisconnect) LPFN_WSARECVDISCONNECT; - alias typeof(&WSARecvFrom) LPFN_WSARECVFROM; - alias typeof(&WSARemoveServiceClass) LPFN_WSAREMOVESERVICECLASS; - alias typeof(&WSAResetEvent) LPFN_WSARESETEVENT; - alias typeof(&WSASend) LPFN_WSASEND; - alias typeof(&WSASendDisconnect) LPFN_WSASENDDISCONNECT; - alias typeof(&WSASendTo) LPFN_WSASENDTO; - alias typeof(&WSASetEvent) LPFN_WSASETEVENT; - alias typeof(&WSASetServiceA) LPFN_WSASETSERVICEA; - alias typeof(&WSASetServiceW) LPFN_WSASETSERVICEW; - alias typeof(&WSASocketA) LPFN_WSASOCKETA; - alias typeof(&WSASocketW) LPFN_WSASOCKETW; - alias typeof(&WSAStringToAddressA) LPFN_WSASTRINGTOADDRESSA; - alias typeof(&WSAStringToAddressW) LPFN_WSASTRINGTOADDRESSW; - alias typeof(&WSAWaitForMultipleEvents) LPFN_WSAWAITFORMULTIPLEEVENTS; -} - -version(Unicode) { - alias LPFN_WSAADDRESSTOSTRINGW LPFN_WSAADDRESSTOSTRING; - alias LPFN_WSADUPLICATESOCKETW LPFN_WSADUPLICATESOCKET; - alias LPFN_WSAENUMNAMESPACEPROVIDERSW LPFN_WSAENUMNAMESPACEPROVIDERS; - alias LPFN_WSAENUMPROTOCOLSW LPFN_WSAENUMPROTOCOLS; - alias LPFN_WSAGETSERVICECLASSINFOW LPFN_WSAGETSERVICECLASSINFO; - alias LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW LPFN_WSAGETSERVICECLASSNAMEBYCLASSID; - alias LPFN_WSAINSTALLSERVICECLASSW LPFN_WSAINSTALLSERVICECLASS; - alias LPFN_WSALOOKUPSERVICEBEGINW LPFN_WSALOOKUPSERVICEBEGIN; - alias LPFN_WSALOOKUPSERVICENEXTW LPFN_WSALOOKUPSERVICENEXT; - alias LPFN_WSASETSERVICEW LPFN_WSASETSERVICE; - alias LPFN_WSASOCKETW LPFN_WSASOCKET; - alias LPFN_WSASTRINGTOADDRESSW LPFN_WSASTRINGTOADDRESS; - alias WSAAddressToStringW WSAAddressToString; - alias WSADuplicateSocketW WSADuplicateSocket; - alias WSAEnumNameSpaceProvidersW WSAEnumNameSpaceProviders; - alias WSAEnumProtocolsW WSAEnumProtocols; - alias WSAGetServiceClassInfoW WSAGetServiceClassInfo; - alias WSAGetServiceClassNameByClassIdW WSAGetServiceClassNameByClassId; - alias WSASetServiceW WSASetService; - alias WSASocketW WSASocket; - alias WSAStringToAddressW WSAStringToAddress; - alias WSALookupServiceBeginW WSALookupServiceBegin; - alias WSALookupServiceNextW WSALookupServiceNext; - alias WSAInstallServiceClassW WSAInstallServiceClass; -} else { - alias LPFN_WSAADDRESSTOSTRINGA LPFN_WSAADDRESSTOSTRING; - alias LPFN_WSADUPLICATESOCKETW LPFN_WSADUPLICATESOCKET; - alias LPFN_WSAENUMNAMESPACEPROVIDERSA LPFN_WSAENUMNAMESPACEPROVIDERS; - alias LPFN_WSAENUMPROTOCOLSA LPFN_WSAENUMPROTOCOLS; - alias LPFN_WSAGETSERVICECLASSINFOA LPFN_WSAGETSERVICECLASSINFO; - alias LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA LPFN_WSAGETSERVICECLASSNAMEBYCLASSID; - alias LPFN_WSAINSTALLSERVICECLASSA LPFN_WSAINSTALLSERVICECLASS; - alias LPFN_WSALOOKUPSERVICEBEGINA LPFN_WSALOOKUPSERVICEBEGIN; - alias LPFN_WSALOOKUPSERVICENEXTA LPFN_WSALOOKUPSERVICENEXT; - alias LPFN_WSASETSERVICEA LPFN_WSASETSERVICE; - alias LPFN_WSASOCKETA LPFN_WSASOCKET; - alias LPFN_WSASTRINGTOADDRESSA LPFN_WSASTRINGTOADDRESS; - alias WSAAddressToStringA WSAAddressToString; - alias WSADuplicateSocketA WSADuplicateSocket; - alias WSAEnumNameSpaceProvidersA WSAEnumNameSpaceProviders; - alias WSAEnumProtocolsA WSAEnumProtocols; - alias WSAGetServiceClassInfoA WSAGetServiceClassInfo; - alias WSAGetServiceClassNameByClassIdA WSAGetServiceClassNameByClassId; - alias WSAInstallServiceClassA WSAInstallServiceClass; - alias WSALookupServiceBeginA WSALookupServiceBegin; - alias WSALookupServiceNextA WSALookupServiceNext; - alias WSASocketA WSASocket; - alias WSAStringToAddressA WSAStringToAddress; - alias WSASetServiceA WSASetService; -} +/***********************************************************************\ +* winsock2.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Daniel Keep * +\***********************************************************************/ +module win32.winsock2; +pragma(lib, "Ws2_32"); + +/* + Definitions for winsock 2 + + Contributed by the WINE project. + + Portions Copyright (c) 1980, 1983, 1988, 1993 + The Regents of the University of California. All rights reserved. + + Portions Copyright (c) 1993 by Digital Equipment Corporation. + */ + +/* DRK: This module should not be included if -version=Win32_Winsock2 has + * not been set. If it has, assert. I think it's better this way than + * letting the user believe that it's worked. + * + * SG: It has now been changed so that winsock2 is the default, and + * -version=Win32_Winsock1 must be set to use winsock. + */ +version(Win32_Winsock1) { + pragma(msg, "Cannot use win32.winsock2 with Win32_Winsock1 defined."); + static assert(false); +} + +import win32.winbase; +import win32.windef; +import win32.basetyps; + +alias char u_char; +alias ushort u_short; +alias uint u_int, u_long, SOCKET; + +const size_t FD_SETSIZE = 64; + +/* shutdown() how types */ +enum : int { + SD_RECEIVE, + SD_SEND, + SD_BOTH +} + +/* Good grief this is stupid... is it a struct? A preprocessor macro? A + struct tag? Who the hell knows!? */ +struct FD_SET { + u_int fd_count; + SOCKET[FD_SETSIZE] fd_array; + + /* this differs from the define in winsock.h and in cygwin sys/types.h */ + static void opCall(SOCKET fd, FD_SET set) { + u_int i; + for (i = 0; i < set.fd_count; i++) + if (set.fd_array[i] == fd) + break; + if (i == set.fd_count) + if (set.fd_count < FD_SETSIZE) { + set.fd_array[i] = fd; + set.fd_count++; + } + } +} +alias FD_SET* PFD_SET, LPFD_SET; + +// Keep this alias, since fd_set isn't a tag name in the original header. +alias FD_SET fd_set; + +extern(Windows) int __WSAFDIsSet(SOCKET, FD_SET*); +alias __WSAFDIsSet FD_ISSET; + +void FD_CLR(SOCKET fd, FD_SET* set) { + for (u_int i = 0; i < set.fd_count; i++) { + if (set.fd_array[i] == fd) { + while (i < set.fd_count - 1) { + set.fd_array[i] = set.fd_array[i+1]; + i++; + } + set.fd_count--; + break; + } + } +} + +void FD_ZERO(FD_SET* set) { + set.fd_count = 0; +} + + +struct TIMEVAL { + int tv_sec; + int tv_usec; + + int opCmp(TIMEVAL tv) { + if (tv_sec < tv.tv_sec) return -1; + if (tv_sec > tv.tv_sec) return 1; + if (tv_usec < tv.tv_usec) return -1; + if (tv_usec > tv.tv_usec) return 1; + return 0; + } +} +alias TIMEVAL* PTIMEVAL, LPTIMEVAL; + +bool timerisset(TIMEVAL* tvp) { + return tvp.tv_sec || tvp.tv_usec; +} + +/+ +/* DRK: These have been commented out because it was felt that using + * omCmp on the TIMEVAL struct was cleaner. Still, perhaps these should + * be enabled under a version tag for compatibility's sake? + * If it is decided that it's just ugly and unwanted, then feel free to + * delete this section :) + */ +int timercmp(TIMEVAL* tvp, TIMEVAL* uvp) { + return tvp.tv_sec != uvp.tv_sec ? + (tvp.tv_sec < uvp.tv_sec ? -1 : + (tvp.tv_sec > uvp.tv_sec ? 1 : 0)) : + (tvp.tv_usec < uvp.tv_usec ? -1 : + (tvp.tv_usec > uvp.tv_usec ? 1 : 0)); +} + +int timercmp(TIMEVAL* tvp, TIMEVAL* uvp, int function(long,long) cmp) { + return tvp.tv_sec != uvp.tv_sec ? + cmp(tvp.tv_sec, uvp.tv_sec) : + cmp(tvp.tv_usec, uvp.tv_usec); +}+/ + +void timerclear(ref TIMEVAL tvp) { + tvp.tv_sec = tvp.tv_usec = 0; +} + +struct HOSTENT { + char* h_name; + char** h_aliases; + short h_addrtype; + short h_length; + char** h_addr_list; + + char* h_addr() { return h_addr_list[0]; } + char* h_addr(char* h) { return h_addr_list[0] = h; } +} +alias HOSTENT* PHOSTENT, LPHOSTENT; + +struct LINGER { + u_short l_onoff; + u_short l_linger; +} +alias LINGER* PLINGER, LPLINGER; + +enum : DWORD { + IOCPARAM_MASK = 0x7f, + IOC_VOID = 0x20000000, + IOC_OUT = 0x40000000, + IOC_IN = 0x80000000, + IOC_INOUT = IOC_IN|IOC_OUT +} + +// NOTE: This isn't even used anywhere... +template _IO(char x, ubyte y) { + const DWORD _IO = IOC_VOID | (cast(ubyte)x<<8) | y; +} + +template _IOR(char x, ubyte y, t) { + const DWORD _IOR = IOC_OUT | ((t.sizeof & IOCPARAM_MASK)<<16) + | (cast(ubyte)x<<8) | y; +} + +template _IOW(char x, ubyte y, t) { + const DWORD _IOW = IOC_IN | ((t.sizeof & IOCPARAM_MASK)<<16) + | (cast(ubyte)x<<8) | y; +} + +enum : DWORD { + FIONBIO = _IOW!('f', 126, u_long), + FIONREAD = _IOR!('f', 127, u_long), + FIOASYNC = _IOW!('f', 125, u_long), + SIOCSHIWAT = _IOW!('s', 0, u_long), + SIOCGHIWAT = _IOR!('s', 1, u_long), + SIOCSLOWAT = _IOW!('s', 2, u_long), + SIOCGLOWAT = _IOR!('s', 3, u_long), + SIOCATMARK = _IOR!('s', 7, u_long) +} + +struct netent { + char* n_name; + char** n_aliases; + short n_addrtype; + u_long n_net; +} + +struct SERVENT { + char* s_name; + char** s_aliases; + short s_port; + char* s_proto; +} +alias SERVENT* PSERVENT, LPSERVENT; + +struct PROTOENT { + char* p_name; + char** p_aliases; + short p_proto; +} +alias PROTOENT* PPROTOENT, LPPROTOENT; + +enum : int { + IPPROTO_IP = 0, + IPPROTO_ICMP = 1, + IPPROTO_IGMP = 2, + IPPROTO_GGP = 3, + IPPROTO_TCP = 6, + IPPROTO_PUP = 12, + IPPROTO_UDP = 17, + IPPROTO_IDP = 22, + IPPROTO_ND = 77, + IPPROTO_RAW = 255, + IPPROTO_MAX = 256, + + // IPv6 options + IPPROTO_HOPOPTS = 0, // IPv6 Hop-by-Hop options + IPPROTO_IPV6 = 41, // IPv6 header + IPPROTO_ROUTING = 43, // IPv6 Routing header + IPPROTO_FRAGMENT = 44, // IPv6 fragmentation header + IPPROTO_ESP = 50, // encapsulating security payload + IPPROTO_AH = 51, // authentication header + IPPROTO_ICMPV6 = 58, // ICMPv6 + IPPROTO_NONE = 59, // IPv6 no next header + IPPROTO_DSTOPTS = 60 // IPv6 Destination options +} + +enum { + IPPORT_ECHO = 7, + IPPORT_DISCARD = 9, + IPPORT_SYSTAT = 11, + IPPORT_DAYTIME = 13, + IPPORT_NETSTAT = 15, + IPPORT_FTP = 21, + IPPORT_TELNET = 23, + IPPORT_SMTP = 25, + IPPORT_TIMESERVER = 37, + IPPORT_NAMESERVER = 42, + IPPORT_WHOIS = 43, + IPPORT_MTP = 57, + IPPORT_TFTP = 69, + IPPORT_RJE = 77, + IPPORT_FINGER = 79, + IPPORT_TTYLINK = 87, + IPPORT_SUPDUP = 95, + IPPORT_EXECSERVER = 512, + IPPORT_LOGINSERVER = 513, + IPPORT_CMDSERVER = 514, + IPPORT_EFSSERVER = 520, + IPPORT_BIFFUDP = 512, + IPPORT_WHOSERVER = 513, + IPPORT_ROUTESERVER = 520, + IPPORT_RESERVED = 1024 +} + +enum { + IMPLINK_IP = 155, + IMPLINK_LOWEXPER = 156, + IMPLINK_HIGHEXPER = 158 +} + +struct IN_ADDR { + union { + struct { u_char s_b1, s_b2, s_b3, s_b4; } + struct { u_char s_net, s_host, s_lh, s_impno; } + struct { u_short s_w1, s_w2; } + struct { u_short s_w_, s_imp; } // Can I get rid of s_w_ using alignment tricks? + u_long S_addr; + u_long s_addr; + } +} +alias IN_ADDR* PIN_ADDR, LPIN_ADDR; + +// IN_CLASSx are not used anywhere or documented on MSDN. +bool IN_CLASSA(int i) { return (i & 0x80000000) == 0; } + +const IN_CLASSA_NET = 0xff000000; +const IN_CLASSA_NSHIFT = 24; +const IN_CLASSA_HOST = 0x00ffffff; +const IN_CLASSA_MAX = 128; + +bool IN_CLASSB(int i) { return (i & 0xc0000000) == 0x80000000; } + +const IN_CLASSB_NET = 0xffff0000; +const IN_CLASSB_NSHIFT = 16; +const IN_CLASSB_HOST = 0x0000ffff; +const IN_CLASSB_MAX = 65536; + +bool IN_CLASSC(int i) { return (i & 0xe0000000) == 0xc0000000; } + +const IN_CLASSC_NET = 0xffffff00; +const IN_CLASSC_NSHIFT = 8; +const IN_CLASSC_HOST = 0x000000ff; + +const u_long + INADDR_ANY = 0, + INADDR_LOOPBACK = 0x7F000001, + INADDR_BROADCAST = 0xFFFFFFFF, + INADDR_NONE = 0xFFFFFFFF; + +struct SOCKADDR_IN { + short sin_family; + u_short sin_port; + IN_ADDR sin_addr; + char[8] sin_zero; +} +alias SOCKADDR_IN* PSOCKADDR_IN, LPSOCKADDR_IN; + +const size_t + WSADESCRIPTION_LEN = 256, + WSASYS_STATUS_LEN = 128; + +struct WSADATA { + WORD wVersion; + WORD wHighVersion; + char[WSADESCRIPTION_LEN+1] szDescription; + char[WSASYS_STATUS_LEN+1] szSystemStatus; + ushort iMaxSockets; + ushort iMaxUdpDg; + char* lpVendorInfo; +} +alias WSADATA* LPWSADATA; + +// This is not documented on the MSDN site +const IP_OPTIONS = 1; + +const int + SO_OPTIONS = 1, + SO_DEBUG = 1, + SO_ACCEPTCONN = 2, + SO_REUSEADDR = 4, + SO_KEEPALIVE = 8, + SO_DONTROUTE = 16, + SO_BROADCAST = 32, + SO_USELOOPBACK = 64, + SO_LINGER = 128, + SO_OOBINLINE = 256, + SO_DONTLINGER = ~SO_LINGER, + SO_EXCLUSIVEADDRUSE= ~SO_REUSEADDR; + +enum : int { + SO_SNDBUF = 0x1001, + SO_RCVBUF, + SO_SNDLOWAT, + SO_RCVLOWAT, + SO_SNDTIMEO, + SO_RCVTIMEO, + SO_ERROR, + SO_TYPE // = 0x1008 +} + +const SOCKET INVALID_SOCKET = cast(SOCKET)(~0); +const int SOCKET_ERROR = -1; + +enum : int { + SOCK_STREAM = 1, + SOCK_DGRAM, + SOCK_RAW, + SOCK_RDM, + SOCK_SEQPACKET +} + +const int TCP_NODELAY = 0x0001; + +enum : int { + AF_UNSPEC, + AF_UNIX, + AF_INET, + AF_IMPLINK, + AF_PUP, + AF_CHAOS, + AF_IPX, // = 6 + AF_NS = 6, + AF_ISO, + AF_OSI = AF_ISO, + AF_ECMA, + AF_DATAKIT, + AF_CCITT, + AF_SNA, + AF_DECnet, + AF_DLI, + AF_LAT, + AF_HYLINK, + AF_APPLETALK, + AF_NETBIOS, + AF_VOICEVIEW, + AF_FIREFOX, + AF_UNKNOWN1, + AF_BAN, + AF_ATM, + AF_INET6, + // AF_CLUSTER, AF_12844 nad AF_NETDES are not documented on MSDN + AF_CLUSTER, + AF_12844, + AF_IRDA, // = 26 + AF_NETDES = 28, + AF_MAX // = 29 +} + +struct SOCKADDR { + u_short sa_family; + char[14] sa_data; +} +alias SOCKADDR* PSOCKADDR, LPSOCKADDR; + +/* Portable IPv6/IPv4 version of sockaddr. + Uses padding to force 8 byte alignment + and maximum size of 128 bytes */ +struct SOCKADDR_STORAGE { + short ss_family; + char[6] __ss_pad1; // pad to 8 + long __ss_align; // force alignment + char[112] __ss_pad2; // pad to 128 +} +alias SOCKADDR_STORAGE* PSOCKADDR_STORAGE; + +struct sockproto { + u_short sp_family; + u_short sp_protocol; +} + +enum : int { + PF_UNSPEC = AF_UNSPEC, + PF_UNIX = AF_UNIX, + PF_INET = AF_INET, + PF_IMPLINK = AF_IMPLINK, + PF_PUP = AF_PUP, + PF_CHAOS = AF_CHAOS, + PF_NS = AF_NS, + PF_IPX = AF_IPX, + PF_ISO = AF_ISO, + PF_OSI = AF_OSI, + PF_ECMA = AF_ECMA, + PF_DATAKIT = AF_DATAKIT, + PF_CCITT = AF_CCITT, + PF_SNA = AF_SNA, + PF_DECnet = AF_DECnet, + PF_DLI = AF_DLI, + PF_LAT = AF_LAT, + PF_HYLINK = AF_HYLINK, + PF_APPLETALK = AF_APPLETALK, + PF_VOICEVIEW = AF_VOICEVIEW, + PF_FIREFOX = AF_FIREFOX, + PF_UNKNOWN1 = AF_UNKNOWN1, + PF_BAN = AF_BAN, + PF_ATM = AF_ATM, + PF_INET6 = AF_INET6, + PF_MAX = AF_MAX +} + +const int SOL_SOCKET = 0xFFFF; + +const int SOMAXCONN = 5; + +const int + MSG_OOB = 1, + MSG_PEEK = 2, + MSG_DONTROUTE = 4, + MSG_MAXIOVLEN = 16, + MSG_PARTIAL = 0x8000; + +const size_t MAXGETHOSTSTRUCT = 1024; + +// Not documented on MSDN +enum { + FD_READ_BIT, + FD_WRITE_BIT, + FD_OOB_BIT, + FD_ACCEPT_BIT, + FD_CONNECT_BIT, + FD_CLOSE_BIT, + FD_QOS_BIT, + FD_GROUP_QOS_BIT, + FD_ROUTING_INTERFACE_CHANGE_BIT, + FD_ADDRESS_LIST_CHANGE_BIT, + FD_MAX_EVENTS // = 10 +} + +const int + FD_READ = 1 << FD_READ_BIT, + FD_WRITE = 1 << FD_WRITE_BIT, + FD_OOB = 1 << FD_OOB_BIT, + FD_ACCEPT = 1 << FD_ACCEPT_BIT, + FD_CONNECT = 1 << FD_CONNECT_BIT, + FD_CLOSE = 1 << FD_CLOSE_BIT, + FD_QOS = 1 << FD_QOS_BIT, + FD_GROUP_QOS = 1 << FD_GROUP_QOS_BIT, + FD_ROUTING_INTERFACE_CHANGE = 1 << FD_ROUTING_INTERFACE_CHANGE_BIT, + FD_ADDRESS_LIST_CHANGE = 1 << FD_ADDRESS_LIST_CHANGE_BIT, + FD_ALL_EVENTS = (1 << FD_MAX_EVENTS) - 1; + +enum : int { + WSABASEERR = 10000, + WSAEINTR = WSABASEERR + 4, + WSAEBADF = WSABASEERR + 9, + WSAEACCES = WSABASEERR + 13, + WSAEFAULT = WSABASEERR + 14, + WSAEINVAL = WSABASEERR + 22, + WSAEMFILE = WSABASEERR + 24, + WSAEWOULDBLOCK = WSABASEERR + 35, + WSAEINPROGRESS = WSABASEERR + 36, // deprecated on WinSock2 + WSAEALREADY = WSABASEERR + 37, + WSAENOTSOCK = WSABASEERR + 38, + WSAEDESTADDRREQ = WSABASEERR + 39, + WSAEMSGSIZE = WSABASEERR + 40, + WSAEPROTOTYPE = WSABASEERR + 41, + WSAENOPROTOOPT = WSABASEERR + 42, + WSAEPROTONOSUPPORT = WSABASEERR + 43, + WSAESOCKTNOSUPPORT = WSABASEERR + 44, + WSAEOPNOTSUPP = WSABASEERR + 45, + WSAEPFNOSUPPORT = WSABASEERR + 46, + WSAEAFNOSUPPORT = WSABASEERR + 47, + WSAEADDRINUSE = WSABASEERR + 48, + WSAEADDRNOTAVAIL = WSABASEERR + 49, + WSAENETDOWN = WSABASEERR + 50, + WSAENETUNREACH = WSABASEERR + 51, + WSAENETRESET = WSABASEERR + 52, + WSAECONNABORTED = WSABASEERR + 53, + WSAECONNRESET = WSABASEERR + 54, + WSAENOBUFS = WSABASEERR + 55, + WSAEISCONN = WSABASEERR + 56, + WSAENOTCONN = WSABASEERR + 57, + WSAESHUTDOWN = WSABASEERR + 58, + WSAETOOMANYREFS = WSABASEERR + 59, + WSAETIMEDOUT = WSABASEERR + 60, + WSAECONNREFUSED = WSABASEERR + 61, + WSAELOOP = WSABASEERR + 62, + WSAENAMETOOLONG = WSABASEERR + 63, + WSAEHOSTDOWN = WSABASEERR + 64, + WSAEHOSTUNREACH = WSABASEERR + 65, + WSAENOTEMPTY = WSABASEERR + 66, + WSAEPROCLIM = WSABASEERR + 67, + WSAEUSERS = WSABASEERR + 68, + WSAEDQUOT = WSABASEERR + 69, + WSAESTALE = WSABASEERR + 70, + WSAEREMOTE = WSABASEERR + 71, + WSAEDISCON = WSABASEERR + 101, + WSASYSNOTREADY = WSABASEERR + 91, + WSAVERNOTSUPPORTED = WSABASEERR + 92, + WSANOTINITIALISED = WSABASEERR + 93, + WSAHOST_NOT_FOUND = WSABASEERR + 1001, + WSATRY_AGAIN = WSABASEERR + 1002, + WSANO_RECOVERY = WSABASEERR + 1003, + WSANO_DATA = WSABASEERR + 1004, + WSANO_ADDRESS = WSANO_DATA, + + // WinSock2 specific error codes + WSAENOMORE = WSABASEERR + 102, + WSAECANCELLED = WSABASEERR + 103, + WSAEINVALIDPROCTABLE = WSABASEERR + 104, + WSAEINVALIDPROVIDER = WSABASEERR + 105, + WSAEPROVIDERFAILEDINIT = WSABASEERR + 106, + WSASYSCALLFAILURE = WSABASEERR + 107, + WSASERVICE_NOT_FOUND = WSABASEERR + 108, + WSATYPE_NOT_FOUND = WSABASEERR + 109, + WSA_E_NO_MORE = WSABASEERR + 110, + WSA_E_CANCELLED = WSABASEERR + 111, + WSAEREFUSED = WSABASEERR + 112, + + // WS QualityofService errors + WSA_QOS_RECEIVERS = WSABASEERR + 1005, + WSA_QOS_SENDERS = WSABASEERR + 1006, + WSA_QOS_NO_SENDERS = WSABASEERR + 1007, + WSA_QOS_NO_RECEIVERS = WSABASEERR + 1008, + WSA_QOS_REQUEST_CONFIRMED = WSABASEERR + 1009, + WSA_QOS_ADMISSION_FAILURE = WSABASEERR + 1010, + WSA_QOS_POLICY_FAILURE = WSABASEERR + 1011, + WSA_QOS_BAD_STYLE = WSABASEERR + 1012, + WSA_QOS_BAD_OBJECT = WSABASEERR + 1013, + WSA_QOS_TRAFFIC_CTRL_ERROR = WSABASEERR + 1014, + WSA_QOS_GENERIC_ERROR = WSABASEERR + 1015, + WSA_QOS_ESERVICETYPE = WSABASEERR + 1016, + WSA_QOS_EFLOWSPEC = WSABASEERR + 1017, + WSA_QOS_EPROVSPECBUF = WSABASEERR + 1018, + WSA_QOS_EFILTERSTYLE = WSABASEERR + 1019, + WSA_QOS_EFILTERTYPE = WSABASEERR + 1020, + WSA_QOS_EFILTERCOUNT = WSABASEERR + 1021, + WSA_QOS_EOBJLENGTH = WSABASEERR + 1022, + WSA_QOS_EFLOWCOUNT = WSABASEERR + 1023, + WSA_QOS_EUNKOWNPSOBJ = WSABASEERR + 1024, + WSA_QOS_EPOLICYOBJ = WSABASEERR + 1025, + WSA_QOS_EFLOWDESC = WSABASEERR + 1026, + WSA_QOS_EPSFLOWSPEC = WSABASEERR + 1027, + WSA_QOS_EPSFILTERSPEC = WSABASEERR + 1028, + WSA_QOS_ESDMODEOBJ = WSABASEERR + 1029, + WSA_QOS_ESHAPERATEOBJ = WSABASEERR + 1030, + WSA_QOS_RESERVED_PETYPE = WSABASEERR + 1031 +} + +alias WSAGetLastError h_errno; + +enum : int { + HOST_NOT_FOUND = WSAHOST_NOT_FOUND, + TRY_AGAIN = WSATRY_AGAIN, + NO_RECOVERY = WSANO_RECOVERY, + NO_DATA = WSANO_DATA, + NO_ADDRESS = WSANO_ADDRESS +} + +extern (Windows) { + SOCKET accept(SOCKET, SOCKADDR*, int*); + int bind(SOCKET, const(SOCKADDR)*, int); + int closesocket(SOCKET); + int connect(SOCKET, const(SOCKADDR)*, int); + int ioctlsocket(SOCKET, int, u_long*); + int getpeername(SOCKET, SOCKADDR*, int*); + int getsockname(SOCKET, SOCKADDR*, int*); + int getsockopt(SOCKET, int, int, void*, int*); + uint inet_addr(const(char)*); + int listen(SOCKET, int); + int recv(SOCKET, ubyte*, int, int); + int recvfrom(SOCKET, ubyte*, int, int, SOCKADDR*, int*); + int send(SOCKET, const(ubyte)*, int, int); + int sendto(SOCKET, const(ubyte)*, int, int, const(SOCKADDR)*, int); + int setsockopt(SOCKET, int, int, const(void)*, int); + int shutdown(SOCKET, int); + SOCKET socket(int, int, int); + + alias typeof(&accept) LPFN_ACCEPT; + alias typeof(&bind) LPFN_BIND; + alias typeof(&closesocket) LPFN_CLOSESOCKET; + alias typeof(&connect) LPFN_CONNECT; + alias typeof(&ioctlsocket) LPFN_IOCTLSOCKET; + alias typeof(&getpeername) LPFN_GETPEERNAME; + alias typeof(&getsockname) LPFN_GETSOCKNAME; + alias typeof(&getsockopt) LPFN_GETSOCKOPT; + alias typeof(&inet_addr) LPFN_INET_ADDR; + alias typeof(&listen) LPFN_LISTEN; + alias typeof(&recv) LPFN_RECV; + alias typeof(&recvfrom) LPFN_RECVFROM; + alias typeof(&send) LPFN_SEND; + alias typeof(&sendto) LPFN_SENDTO; + alias typeof(&setsockopt) LPFN_SETSOCKOPT; + alias typeof(&shutdown) LPFN_SHUTDOWN; + alias typeof(&socket) LPFN_SOCKET; +} + +extern(Windows) { + char* inet_ntoa(IN_ADDR); + HOSTENT* gethostbyaddr(const(char)*, int, int); + HOSTENT* gethostbyname(const(char)*); + SERVENT* getservbyport(int, const(char)*); + SERVENT* getservbyname(const(char)*, const(char)*); + PROTOENT* getprotobynumber(int); + PROTOENT* getprotobyname(const(char)*); + + /* NOTE: DK: in the original headers, these were declared with + PASCAL linkage. Since this is at odds with the definition + of the functions themselves, and also since MinGW seems to + treat the two interchangably, I have moved them here. */ + alias typeof(&inet_ntoa) LPFN_INET_NTOA; + alias typeof(&gethostbyaddr) LPFN_GETHOSTBYADDR; + alias typeof(&gethostbyname) LPFN_GETHOSTBYNAME; + alias typeof(&getservbyport) LPFN_GETSERVBYPORT; + alias typeof(&getservbyname) LPFN_GETSERVBYNAME; + alias typeof(&getprotobynumber) LPFN_GETPROTOBYNUMBER; + alias typeof(&getprotobyname) LPFN_GETPROTOBYNAME; +} + +extern(Windows) { + int WSAStartup(WORD, LPWSADATA); + int WSACleanup(); + void WSASetLastError(int); + int WSAGetLastError(); + + alias typeof(&WSAStartup) LPFN_WSASTARTUP; + alias typeof(&WSACleanup) LPFN_WSACLEANUP; + alias typeof(&WSASetLastError) LPFN_WSASETLASTERROR; + alias typeof(&WSAGetLastError) LPFN_WSAGETLASTERROR; +} + +/* + * Pseudo-blocking functions are deprecated in WinSock2 + * spec. Use threads instead. + */ +deprecated extern(Windows) { + BOOL WSAIsBlocking(); + int WSAUnhookBlockingHook(); + FARPROC WSASetBlockingHook(FARPROC); + int WSACancelBlockingCall(); + + alias typeof(&WSAIsBlocking) LPFN_WSAISBLOCKING; + alias typeof(&WSAUnhookBlockingHook) LPFN_WSAUNHOOKBLOCKINGHOOK; + alias typeof(&WSASetBlockingHook) LPFN_WSASETBLOCKINGHOOK; + alias typeof(&WSACancelBlockingCall) LPFN_WSACANCELBLOCKINGCALL; +} + +extern(Windows) { + HANDLE WSAAsyncGetServByName(HWND, u_int, const(char)*, const(char)*, char*, int); + HANDLE WSAAsyncGetServByPort(HWND, u_int, int, const(char)*, char*, int); + HANDLE WSAAsyncGetProtoByName(HWND, u_int, const(char)*, char*, int); + HANDLE WSAAsyncGetProtoByNumber(HWND, u_int, int, char*, int); + HANDLE WSAAsyncGetHostByName(HWND, u_int, const(char)*, char*, int); + HANDLE WSAAsyncGetHostByAddr(HWND, u_int, const(char)*, int, int, char*, int); + int WSACancelAsyncRequest(HANDLE); + int WSAAsyncSelect(SOCKET, HWND, u_int, long); + + alias typeof(&WSAAsyncGetServByName) LPFN_WSAAsyncGetServByName; + alias typeof(&WSAAsyncGetServByPort) LPFN_WSAASYNCGETSERVBYPORT; + alias typeof(&WSAAsyncGetProtoByName) LPFN_WSAASYNCGETPROTOBYNAME; + alias typeof(&WSAAsyncGetProtoByNumber) LPFN_WSAASYNCGETPROTOBYNUMBER; + alias typeof(&WSAAsyncGetHostByName) LPFN_WSAASYNCGETHOSTBYNAME; + alias typeof(&WSAAsyncGetHostByAddr) LPFN_WSAASYNCGETHOSTBYADDR; + alias typeof(&WSACancelAsyncRequest) LPFN_WSACANCELASYNCREQUEST; + alias typeof(&WSAAsyncSelect) LPFN_WSAASYNCSELECT; +} + +extern(Windows) { + u_long htonl(u_long); + u_long ntohl(u_long); + u_short htons(u_short); + u_short ntohs(u_short); + int select(int nfds, fd_set*, fd_set*, fd_set*, const(TIMEVAL)*); + + alias typeof(&htonl) LPFN_HTONL; + alias typeof(&ntohl) LPFN_NTOHL; + alias typeof(&htons) LPFN_HTONS; + alias typeof(&ntohs) LPFN_NTOHS; + alias typeof(&select) LPFN_SELECT; + + int gethostname(char*, int); + alias typeof(&gethostname) LPFN_GETHOSTNAME; +} + +alias MAKELONG WSAMAKEASYNCREPLY, WSAMAKESELECTREPLY; +alias LOWORD WSAGETASYNCBUFLEN, WSAGETSELECTEVENT; +alias HIWORD WSAGETASYNCERROR, WSAGETSELECTERROR; + + +alias INADDR_ANY ADDR_ANY; + +bool IN_CLASSD(int i) { return (i & 0xf0000000) == 0xe0000000; } + +const IN_CLASSD_NET = 0xf0000000; +const IN_CLASSD_NSHIFT = 28; +const IN_CLASSD_HOST = 0x0fffffff; + +alias IN_CLASSD IN_MULTICAST; + +const FROM_PROTOCOL_INFO = -1; + +enum : int { + SO_GROUP_ID = 0x2001, + SO_GROUP_PRIORITY, + SO_MAX_MSG_SIZE, + SO_PROTOCOL_INFOA, + SO_PROTOCOL_INFOW +} +// NOTE: These are logically part of the previous enum, but you can't +// have version statements in an enum body... +version(Unicode) + const int SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW; +else + const int SO_PROTOCOL_INFO = SO_PROTOCOL_INFOA; + +const PVD_CONFIG = 0x3001; + +const MSG_INTERRUPT = 0x10; +//const MSG_MAXIOVLEN = 16; // Already declared above + +mixin DECLARE_HANDLE!("WSAEVENT"); +alias WSAEVENT* LPWSAEVENT; +alias OVERLAPPED WSAOVERLAPPED; +alias OVERLAPPED* LPWSAOVERLAPPED; + +private import win32.winerror; +private import win32.winbase; + +enum { + WSA_IO_PENDING = ERROR_IO_PENDING, + WSA_IO_INCOMPLETE = ERROR_IO_INCOMPLETE, + WSA_INVALID_HANDLE = ERROR_INVALID_HANDLE, + WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER, + WSA_NOT_ENOUGH_MEMORY = ERROR_NOT_ENOUGH_MEMORY, + WSA_OPERATION_ABORTED = ERROR_OPERATION_ABORTED +} + +const WSA_INVALID_EVENT = cast(WSAEVENT)HANDLE.init; +const WSA_MAXIMUM_WAIT_EVENTS = MAXIMUM_WAIT_OBJECTS; +const WSA_WAIT_FAILED = cast(DWORD)-1; +const WSA_WAIT_EVENT_0 = WAIT_OBJECT_0; +const WSA_WAIT_IO_COMPLETION = WAIT_IO_COMPLETION; +const WSA_WAIT_TIMEOUT = WAIT_TIMEOUT; +const WSA_INFINITE = INFINITE; + +struct WSABUF { + uint len; + char* buf; +} + +alias WSABUF* LPWSABUF; + +enum GUARANTEE { + BestEffortService, + ControlledLoadService, + PredictiveService, + GuaranteedDelayService, + GuaranteedService +} + +/* TODO: FLOWSPEC and related definitions belong in qos.h */ + +/* + Windows Sockets 2 Application Programming Interface, + revision 2.2.2 (1997) uses the type uint32 for SERVICETYPE + and the elements of _flowspec, but the type uint32 is not defined + or used anywhere else in the w32api. For now, just use + unsigned int, which is 32 bits on _WIN32 and _WIN64. +*/ + +alias uint SERVICETYPE; + +struct FLOWSPEC { + uint TokenRate; + uint TokenBucketSize; + uint PeakBandwidth; + uint Latency; + uint DelayVariation; + SERVICETYPE ServiceType; + uint MaxSduSize; + uint MinimumPolicedSize; +} + +alias FLOWSPEC* PFLOWSPEC, LPFLOWSPEC; + +struct QOS +{ + FLOWSPEC SendingFlowspec; + FLOWSPEC ReceivingFlowspec; + WSABUF ProviderSpecific; +} + +alias QOS* LPQOS; + +enum { + CF_ACCEPT, + CF_REJECT, + CF_DEFER +} + +// REM: Already defined above +/*enum { + SD_RECEIVE, + SD_SEND, + SD_BOTH +}*/ + +alias uint GROUP; + +enum { + SG_UNCONSTRAINED_GROUP = 0x01, + SG_CONSTRAINED_GROUP +} + +struct WSANETWORKEVENTS { + int lNetworkEvents; + int[FD_MAX_EVENTS] iErrorCode; +} + +alias WSANETWORKEVENTS* LPWSANETWORKEVENTS; + +const MAX_PROTOCOL_CHAIN = 7; + +const BASE_PROTOCOL = 1; +const LAYERED_PROTOCOL = 0; + +enum WSAESETSERVICEOP +{ + RNRSERVICE_REGISTER = 0, + RNRSERVICE_DEREGISTER, + RNRSERVICE_DELETE +} + +alias WSAESETSERVICEOP* PWSAESETSERVICEOP, LPWSAESETSERVICEOP; + +struct AFPROTOCOLS { + INT iAddressFamily; + INT iProtocol; +} + +alias AFPROTOCOLS* PAFPROTOCOLS, LPAFPROTOCOLS; + +enum WSAECOMPARATOR +{ + COMP_EQUAL = 0, + COMP_NOTLESS +} + +alias WSAECOMPARATOR* PWSAECOMPARATOR, LPWSAECOMPARATOR; + +struct WSAVERSION +{ + DWORD dwVersion; + WSAECOMPARATOR ecHow; +} + +alias WSAVERSION* PWSAVERSION, LPWSAVERSION; + +// Import for SOCKET_ADDRESS, CSADDR_INFO +// import win32.nspapi; +//#ifndef __CSADDR_T_DEFINED /* also in nspapi.h */ +//#define __CSADDR_T_DEFINED + +struct SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; +} + +alias SOCKET_ADDRESS* PSOCKET_ADDRESS, LPSOCKET_ADDRESS; + +struct CSADDR_INFO { + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; +} + +alias CSADDR_INFO* PCSADDR_INFO, LPCSADDR_INFO; + +//#endif + +struct SOCKET_ADDRESS_LIST { + INT iAddressCount; + SOCKET_ADDRESS[1] _Address; + SOCKET_ADDRESS* Address() { return _Address.ptr; } +} + +alias SOCKET_ADDRESS_LIST* LPSOCKET_ADDRESS_LIST; + +// TODO: Import wtypes/nspapi? +//#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */ +//#define __BLOB_T_DEFINED +struct BLOB { + ULONG cbSize; + BYTE* pBlobData; +} + +alias BLOB* PBLOB, LPBLOB; +//#endif + +struct WSAQUERYSETA +{ + DWORD dwSize; + LPSTR lpszServiceInstanceName; + LPGUID lpServiceClassId; + LPWSAVERSION lpVersion; + LPSTR lpszComment; + DWORD dwNameSpace; + LPGUID lpNSProviderId; + LPSTR lpszContext; + DWORD dwNumberOfProtocols; + LPAFPROTOCOLS lpafpProtocols; + LPSTR lpszQueryString; + DWORD dwNumberOfCsAddrs; + LPCSADDR_INFO lpcsaBuffer; + DWORD dwOutputFlags; + LPBLOB lpBlob; +} + +alias WSAQUERYSETA* PWSAQUERYSETA, LPWSAQUERYSETA; + +struct WSAQUERYSETW +{ + DWORD dwSize; + LPWSTR lpszServiceInstanceName; + LPGUID lpServiceClassId; + LPWSAVERSION lpVersion; + LPWSTR lpszComment; + DWORD dwNameSpace; + LPGUID lpNSProviderId; + LPWSTR lpszContext; + DWORD dwNumberOfProtocols; + LPAFPROTOCOLS lpafpProtocols; + LPWSTR lpszQueryString; + DWORD dwNumberOfCsAddrs; + LPCSADDR_INFO lpcsaBuffer; + DWORD dwOutputFlags; + LPBLOB lpBlob; +} + + +alias WSAQUERYSETW* PWSAQUERYSETW, LPWSAQUERYSETW; + +version(Unicode) { + alias WSAQUERYSETW WSAQUERYSET; + alias PWSAQUERYSETW PWSAQUERYSET; + alias LPWSAQUERYSETW LPWSAQUERYSET; +} else { + alias WSAQUERYSETA WSAQUERYSET; + alias PWSAQUERYSETA PWSAQUERYSET; + alias LPWSAQUERYSETA LPWSAQUERYSET; +} + +const int + LUP_DEEP = 0x0001, + LUP_CONTAINERS = 0x0002, + LUP_NOCONTAINERS = 0x0004, + LUP_NEAREST = 0x0008, + LUP_RETURN_NAME = 0x0010, + LUP_RETURN_TYPE = 0x0020, + LUP_RETURN_VERSION = 0x0040, + LUP_RETURN_COMMENT = 0x0080, + LUP_RETURN_ADDR = 0x0100, + LUP_RETURN_BLOB = 0x0200, + LUP_RETURN_ALIASES = 0x0400, + LUP_RETURN_QUERY_STRING = 0x0800, + LUP_RETURN_ALL = 0x0FF0, + LUP_RES_SERVICE = 0x8000, + LUP_FLUSHCACHE = 0x1000, + LUP_FLUSHPREVIOUS = 0x2000; + +struct WSANSCLASSINFOA +{ + LPSTR lpszName; + DWORD dwNameSpace; + DWORD dwValueType; + DWORD dwValueSize; + LPVOID lpValue; +} + +alias WSANSCLASSINFOA* PWSANSCLASSINFOA, LPWSANSCLASSINFOA; + +struct WSANSCLASSINFOW +{ + LPWSTR lpszName; + DWORD dwNameSpace; + DWORD dwValueType; + DWORD dwValueSize; + LPVOID lpValue; +} + +alias WSANSCLASSINFOW* PWSANSCLASSINFOW, LPWSANSCLASSINFOW; + +version(Unicode) { + alias WSANSCLASSINFOW WSANSCLASSINFO; + alias PWSANSCLASSINFOW PWSANSCLASSINFO; + alias LPWSANSCLASSINFOW LPWSANSCLASSINFO; +} else { + alias WSANSCLASSINFOA WSANSCLASSINFO; + alias PWSANSCLASSINFOA PWSANSCLASSINFO; + alias LPWSANSCLASSINFOA LPWSANSCLASSINFO; +} + +struct WSASERVICECLASSINFOA +{ + LPGUID lpServiceClassId; + LPSTR lpszServiceClassName; + DWORD dwCount; + LPWSANSCLASSINFOA lpClassInfos; +} + +alias WSASERVICECLASSINFOA* PWSASERVICECLASSINFOA, LPWSASERVICECLASSINFOA; + +struct WSASERVICECLASSINFOW +{ + LPGUID lpServiceClassId; + LPWSTR lpszServiceClassName; + DWORD dwCount; + LPWSANSCLASSINFOW lpClassInfos; +} + +alias WSASERVICECLASSINFOW* PWSASERVICECLASSINFOW, LPWSASERVICECLASSINFOW; + +version(Unicode) { + alias WSASERVICECLASSINFOW WSASERVICECLASSINFO; + alias PWSASERVICECLASSINFOW PWSASERVICECLASSINFO; + alias LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO; +} else { + alias WSASERVICECLASSINFOA WSASERVICECLASSINFO; + alias PWSASERVICECLASSINFOA PWSASERVICECLASSINFO; + alias LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO; +} + +struct WSANAMESPACE_INFOA { + GUID NSProviderId; + DWORD dwNameSpace; + BOOL fActive; + DWORD dwVersion; + LPSTR lpszIdentifier; +} + +alias WSANAMESPACE_INFOA* PWSANAMESPACE_INFOA, LPWSANAMESPACE_INFOA; + +struct WSANAMESPACE_INFOW { + GUID NSProviderId; + DWORD dwNameSpace; + BOOL fActive; + DWORD dwVersion; + LPWSTR lpszIdentifier; +} + +alias WSANAMESPACE_INFOW* PWSANAMESPACE_INFOW, LPWSANAMESPACE_INFOW; + +version(Unicode) { + alias WSANAMESPACE_INFOW WSANAMESPACE_INFO; + alias PWSANAMESPACE_INFOW PWSANAMESPACE_INFO; + alias LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO; +} else { + alias WSANAMESPACE_INFOA WSANAMESPACE_INFO; + alias PWSANAMESPACE_INFOA PWSANAMESPACE_INFO; + alias LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO; +} + +struct WSAPROTOCOLCHAIN { + int ChainLen; + DWORD[MAX_PROTOCOL_CHAIN] ChainEntries; +} + +alias WSAPROTOCOLCHAIN* LPWSAPROTOCOLCHAIN; + +const WSAPROTOCOL_LEN = 255; + +struct WSAPROTOCOL_INFOA { + DWORD dwServiceFlags1; + DWORD dwServiceFlags2; + DWORD dwServiceFlags3; + DWORD dwServiceFlags4; + DWORD dwProviderFlags; + GUID ProviderId; + DWORD dwCatalogEntryId; + WSAPROTOCOLCHAIN ProtocolChain; + int iVersion; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + int iProtocolMaxOffset; + int iNetworkByteOrder; + int iSecurityScheme; + DWORD dwMessageSize; + DWORD dwProviderReserved; + CHAR[WSAPROTOCOL_LEN+1] szProtocol; +} + +alias WSAPROTOCOL_INFOA* LPWSAPROTOCOL_INFOA; + +struct WSAPROTOCOL_INFOW { + DWORD dwServiceFlags1; + DWORD dwServiceFlags2; + DWORD dwServiceFlags3; + DWORD dwServiceFlags4; + DWORD dwProviderFlags; + GUID ProviderId; + DWORD dwCatalogEntryId; + WSAPROTOCOLCHAIN ProtocolChain; + int iVersion; + int iAddressFamily; + int iMaxSockAddr; + int iMinSockAddr; + int iSocketType; + int iProtocol; + int iProtocolMaxOffset; + int iNetworkByteOrder; + int iSecurityScheme; + DWORD dwMessageSize; + DWORD dwProviderReserved; + WCHAR[WSAPROTOCOL_LEN+1] szProtocol; +} + +alias WSAPROTOCOL_INFOW* LPWSAPROTOCOL_INFOW; + +// TODO: Below fptr was defined as "CALLBACK" for linkage; is this right? +extern(C) { + alias int function(LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD) LPCONDITIONPROC; +} + +extern(Windows) { + alias void function(DWORD, DWORD, LPWSAOVERLAPPED, DWORD) LPWSAOVERLAPPED_COMPLETION_ROUTINE; +} + +version(Unicode) { + alias WSAPROTOCOL_INFOW WSAPROTOCOL_INFO; + alias LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO; +} else { + alias WSAPROTOCOL_INFOA WSAPROTOCOL_INFO; + alias LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO; +} + +/* Needed for XP & .NET Server function WSANSPIoctl. */ +enum WSACOMPLETIONTYPE { + NSP_NOTIFY_IMMEDIATELY = 0, + NSP_NOTIFY_HWND, + NSP_NOTIFY_EVENT, + NSP_NOTIFY_PORT, + NSP_NOTIFY_APC +} + +alias WSACOMPLETIONTYPE* PWSACOMPLETIONTYPE, LPWSACOMPLETIONTYPE; + +struct WSACOMPLETION { + WSACOMPLETIONTYPE Type; + union WSACOMPLETION_PARAMETERS { + struct WSACOMPLETION_WINDOWMESSAGE { + HWND hWnd; + UINT uMsg; + WPARAM context; + } + WSACOMPLETION_WINDOWMESSAGE WindowMessage; + struct WSACOMPLETION_EVENT { + LPWSAOVERLAPPED lpOverlapped; + } + WSACOMPLETION_EVENT Event; + struct WSACOMPLETION_APC { + LPWSAOVERLAPPED lpOverlapped; + LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc; + } + WSACOMPLETION_APC Apc; + struct WSACOMPLETION_PORT { + LPWSAOVERLAPPED lpOverlapped; + HANDLE hPort; + ULONG_PTR Key; + } + WSACOMPLETION_PORT Port; + } + WSACOMPLETION_PARAMETERS Parameters; +} + +alias WSACOMPLETION* PWSACOMPLETION, LPWSACOMPLETION; + +const int + PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001, + PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002, + PFL_HIDDEN = 0x00000004, + PFL_MATCHES_PROTOCOL_ZERO = 0x00000008; + +const int + XP1_CONNECTIONLESS = 0x00000001, + XP1_GUARANTEED_DELIVERY = 0x00000002, + XP1_GUARANTEED_ORDER = 0x00000004, + XP1_MESSAGE_ORIENTED = 0x00000008, + XP1_PSEUDO_STREAM = 0x00000010, + XP1_GRACEFUL_CLOSE = 0x00000020, + XP1_EXPEDITED_DATA = 0x00000040, + XP1_CONNECT_DATA = 0x00000080, + XP1_DISCONNECT_DATA = 0x00000100, + XP1_SUPPORT_BROADCAST = 0x00000200, + XP1_SUPPORT_MULTIPOINT = 0x00000400, + XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800, + XP1_MULTIPOINT_DATA_PLANE = 0x00001000, + XP1_QOS_SUPPORTED = 0x00002000, + XP1_INTERRUPT = 0x00004000, + XP1_UNI_SEND = 0x00008000, + XP1_UNI_RECV = 0x00010000, + XP1_IFS_HANDLES = 0x00020000, + XP1_PARTIAL_MESSAGE = 0x00040000; + +enum : int { + BIGENDIAN = 0x0000, + LITTLEENDIAN = 0x0001 +} + +const SECURITY_PROTOCOL_NONE = 0x0000; + +const JL_SENDER_ONLY = 0x01; +const JL_RECEIVER_ONLY = 0x02; +const JL_BOTH = 0x04; + +const WSA_FLAG_OVERLAPPED = 0x01; +const WSA_FLAG_MULTIPOINT_C_ROOT = 0x02; +const WSA_FLAG_MULTIPOINT_C_LEAF = 0x04; +const WSA_FLAG_MULTIPOINT_D_ROOT = 0x08; +const WSA_FLAG_MULTIPOINT_D_LEAF = 0x10; + +const int IOC_UNIX = 0x00000000; +const int IOC_WS2 = 0x08000000; +const int IOC_PROTOCOL = 0x10000000; +const int IOC_VENDOR = 0x18000000; + +template _WSAIO(int x, int y) { const int _WSAIO = IOC_VOID | x | y; } +template _WSAIOR(int x, int y) { const int _WSAIOR = IOC_OUT | x | y; } +template _WSAIOW(int x, int y) { const int _WSAIOW = IOC_IN | x | y; } +template _WSAIORW(int x, int y) { const int _WSAIORW = IOC_INOUT | x | y; } + +const int SIO_ASSOCIATE_HANDLE = _WSAIOW!(IOC_WS2,1); +const int SIO_ENABLE_CIRCULAR_QUEUEING = _WSAIO!(IOC_WS2,2); +const int SIO_FIND_ROUTE = _WSAIOR!(IOC_WS2,3); +const int SIO_FLUSH = _WSAIO!(IOC_WS2,4); +const int SIO_GET_BROADCAST_ADDRESS = _WSAIOR!(IOC_WS2,5); +const int SIO_GET_EXTENSION_FUNCTION_POINTER = _WSAIORW!(IOC_WS2,6); +const int SIO_GET_QOS = _WSAIORW!(IOC_WS2,7); +const int SIO_GET_GROUP_QOS = _WSAIORW!(IOC_WS2,8); +const int SIO_MULTIPOINT_LOOPBACK = _WSAIOW!(IOC_WS2,9); +const int SIO_MULTICAST_SCOPE = _WSAIOW!(IOC_WS2,10); +const int SIO_SET_QOS = _WSAIOW!(IOC_WS2,11); +const int SIO_SET_GROUP_QOS = _WSAIOW!(IOC_WS2,12); +const int SIO_TRANSLATE_HANDLE = _WSAIORW!(IOC_WS2,13); +const int SIO_ROUTING_INTERFACE_QUERY = _WSAIORW!(IOC_WS2,20); +const int SIO_ROUTING_INTERFACE_CHANGE = _WSAIOW!(IOC_WS2,21); +const int SIO_ADDRESS_LIST_QUERY = _WSAIOR!(IOC_WS2,22); +const int SIO_ADDRESS_LIST_CHANGE = _WSAIO!(IOC_WS2,23); +const int SIO_QUERY_TARGET_PNP_HANDLE = _WSAIOR!(IOC_WS2,24); +const int SIO_NSP_NOTIFY_CHANGE = _WSAIOW!(IOC_WS2,25); + +const int TH_NETDEV = 1; +const int TH_TAPI = 2; + + +extern(Windows) { + SOCKET WSAAccept(SOCKET, SOCKADDR*, LPINT, LPCONDITIONPROC, DWORD); + INT WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD); + INT WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD); + BOOL WSACloseEvent(WSAEVENT); + int WSAConnect(SOCKET, const(SOCKADDR)*, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS); + WSAEVENT WSACreateEvent(); + int WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA); + int WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW); + INT WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA); + INT WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW); + int WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS); + int WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD); + int WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD); + int WSAEventSelect(SOCKET, WSAEVENT, int); + BOOL WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD); + BOOL WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS); + INT WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA); + INT WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW); + INT WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD); + INT WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD); + int WSAHtonl(SOCKET, uint, uint*); + int WSAHtons(SOCKET, ushort, ushort*); + INT WSAInstallServiceClassA(LPWSASERVICECLASSINFOA); + INT WSAInstallServiceClassW(LPWSASERVICECLASSINFOW); + int WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + SOCKET WSAJoinLeaf(SOCKET, const(SOCKADDR)*, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD); + INT WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE); + INT WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions, DWORD, LPHANDLE); + INT WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA); + INT WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW); + INT WSALookupServiceEnd(HANDLE); + int WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */ + int WSANtohl(SOCKET, uint, uint*); + int WSANtohs(SOCKET, ushort, ushort*); + int WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + int WSARecvDisconnect(SOCKET, LPWSABUF); + int WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, SOCKADDR*, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + INT WSARemoveServiceClass(LPGUID); + BOOL WSAResetEvent(WSAEVENT); + int WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + int WSASendDisconnect(SOCKET, LPWSABUF); + int WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const(SOCKADDR)*, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE); + BOOL WSASetEvent(WSAEVENT); + INT WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD); // NB: was declared with "WSAAPI" linkage + INT WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD); + SOCKET WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD); + SOCKET WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD); + INT WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT); + INT WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT); + DWORD WSAWaitForMultipleEvents(DWORD, const(WSAEVENT)*, BOOL, DWORD, BOOL); + + alias typeof(&WSAAccept) LPFN_WSAACCEPT; + alias typeof(&WSAAddressToStringA) LPFN_WSAADDRESSTOSTRINGA; + alias typeof(&WSAAddressToStringW) LPFN_WSAADDRESSTOSTRINGW; + alias typeof(&WSACloseEvent) LPFN_WSACLOSEEVENT; + alias typeof(&WSAConnect) LPFN_WSACONNECT; + alias typeof(&WSACreateEvent) LPFN_WSACREATEEVENT; + alias typeof(&WSADuplicateSocketA) LPFN_WSADUPLICATESOCKETA; + alias typeof(&WSADuplicateSocketW) LPFN_WSADUPLICATESOCKETW; + alias typeof(&WSAEnumNameSpaceProvidersA) LPFN_WSAENUMNAMESPACEPROVIDERSA; + alias typeof(&WSAEnumNameSpaceProvidersW) LPFN_WSAENUMNAMESPACEPROVIDERSW; + alias typeof(&WSAEnumNetworkEvents) LPFN_WSAENUMNETWORKEVENTS; + alias typeof(&WSAEnumProtocolsA) LPFN_WSAENUMPROTOCOLSA; + alias typeof(&WSAEnumProtocolsW) LPFN_WSAENUMPROTOCOLSW; + alias typeof(&WSAEventSelect) LPFN_WSAEVENTSELECT; + alias typeof(&WSAGetOverlappedResult) LPFN_WSAGETOVERLAPPEDRESULT; + alias typeof(&WSAGetQOSByName) LPFN_WSAGETQOSBYNAME; + alias typeof(&WSAGetServiceClassInfoA) LPFN_WSAGETSERVICECLASSINFOA; + alias typeof(&WSAGetServiceClassInfoW) LPFN_WSAGETSERVICECLASSINFOW; + alias typeof(&WSAGetServiceClassNameByClassIdA) LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA; + alias typeof(&WSAGetServiceClassNameByClassIdW) LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW; + alias typeof(&WSAHtonl) LPFN_WSAHTONL; + alias typeof(&WSAHtons) LPFN_WSAHTONS; + alias typeof(&WSAInstallServiceClassA) LPFN_WSAINSTALLSERVICECLASSA; + alias typeof(&WSAInstallServiceClassW) LPFN_WSAINSTALLSERVICECLASSW; + alias typeof(&WSAIoctl) LPFN_WSAIOCTL; + alias typeof(&WSAJoinLeaf) LPFN_WSAJOINLEAF; + alias typeof(&WSALookupServiceBeginA) LPFN_WSALOOKUPSERVICEBEGINA; + alias typeof(&WSALookupServiceBeginW) LPFN_WSALOOKUPSERVICEBEGINW; + alias typeof(&WSALookupServiceNextA) LPFN_WSALOOKUPSERVICENEXTA; + alias typeof(&WSALookupServiceNextW) LPFN_WSALOOKUPSERVICENEXTW; + alias typeof(&WSALookupServiceEnd) LPFN_WSALOOKUPSERVICEEND; + alias typeof(&WSANSPIoctl) LPFN_WSANSPIoctl; + alias typeof(&WSANtohl) LPFN_WSANTOHL; + alias typeof(&WSANtohs) LPFN_WSANTOHS; + alias typeof(&WSARecv) LPFN_WSARECV; + alias typeof(&WSARecvDisconnect) LPFN_WSARECVDISCONNECT; + alias typeof(&WSARecvFrom) LPFN_WSARECVFROM; + alias typeof(&WSARemoveServiceClass) LPFN_WSAREMOVESERVICECLASS; + alias typeof(&WSAResetEvent) LPFN_WSARESETEVENT; + alias typeof(&WSASend) LPFN_WSASEND; + alias typeof(&WSASendDisconnect) LPFN_WSASENDDISCONNECT; + alias typeof(&WSASendTo) LPFN_WSASENDTO; + alias typeof(&WSASetEvent) LPFN_WSASETEVENT; + alias typeof(&WSASetServiceA) LPFN_WSASETSERVICEA; + alias typeof(&WSASetServiceW) LPFN_WSASETSERVICEW; + alias typeof(&WSASocketA) LPFN_WSASOCKETA; + alias typeof(&WSASocketW) LPFN_WSASOCKETW; + alias typeof(&WSAStringToAddressA) LPFN_WSASTRINGTOADDRESSA; + alias typeof(&WSAStringToAddressW) LPFN_WSASTRINGTOADDRESSW; + alias typeof(&WSAWaitForMultipleEvents) LPFN_WSAWAITFORMULTIPLEEVENTS; +} + +version(Unicode) { + alias LPFN_WSAADDRESSTOSTRINGW LPFN_WSAADDRESSTOSTRING; + alias LPFN_WSADUPLICATESOCKETW LPFN_WSADUPLICATESOCKET; + alias LPFN_WSAENUMNAMESPACEPROVIDERSW LPFN_WSAENUMNAMESPACEPROVIDERS; + alias LPFN_WSAENUMPROTOCOLSW LPFN_WSAENUMPROTOCOLS; + alias LPFN_WSAGETSERVICECLASSINFOW LPFN_WSAGETSERVICECLASSINFO; + alias LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW LPFN_WSAGETSERVICECLASSNAMEBYCLASSID; + alias LPFN_WSAINSTALLSERVICECLASSW LPFN_WSAINSTALLSERVICECLASS; + alias LPFN_WSALOOKUPSERVICEBEGINW LPFN_WSALOOKUPSERVICEBEGIN; + alias LPFN_WSALOOKUPSERVICENEXTW LPFN_WSALOOKUPSERVICENEXT; + alias LPFN_WSASETSERVICEW LPFN_WSASETSERVICE; + alias LPFN_WSASOCKETW LPFN_WSASOCKET; + alias LPFN_WSASTRINGTOADDRESSW LPFN_WSASTRINGTOADDRESS; + alias WSAAddressToStringW WSAAddressToString; + alias WSADuplicateSocketW WSADuplicateSocket; + alias WSAEnumNameSpaceProvidersW WSAEnumNameSpaceProviders; + alias WSAEnumProtocolsW WSAEnumProtocols; + alias WSAGetServiceClassInfoW WSAGetServiceClassInfo; + alias WSAGetServiceClassNameByClassIdW WSAGetServiceClassNameByClassId; + alias WSASetServiceW WSASetService; + alias WSASocketW WSASocket; + alias WSAStringToAddressW WSAStringToAddress; + alias WSALookupServiceBeginW WSALookupServiceBegin; + alias WSALookupServiceNextW WSALookupServiceNext; + alias WSAInstallServiceClassW WSAInstallServiceClass; +} else { + alias LPFN_WSAADDRESSTOSTRINGA LPFN_WSAADDRESSTOSTRING; + alias LPFN_WSADUPLICATESOCKETW LPFN_WSADUPLICATESOCKET; + alias LPFN_WSAENUMNAMESPACEPROVIDERSA LPFN_WSAENUMNAMESPACEPROVIDERS; + alias LPFN_WSAENUMPROTOCOLSA LPFN_WSAENUMPROTOCOLS; + alias LPFN_WSAGETSERVICECLASSINFOA LPFN_WSAGETSERVICECLASSINFO; + alias LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA LPFN_WSAGETSERVICECLASSNAMEBYCLASSID; + alias LPFN_WSAINSTALLSERVICECLASSA LPFN_WSAINSTALLSERVICECLASS; + alias LPFN_WSALOOKUPSERVICEBEGINA LPFN_WSALOOKUPSERVICEBEGIN; + alias LPFN_WSALOOKUPSERVICENEXTA LPFN_WSALOOKUPSERVICENEXT; + alias LPFN_WSASETSERVICEA LPFN_WSASETSERVICE; + alias LPFN_WSASOCKETA LPFN_WSASOCKET; + alias LPFN_WSASTRINGTOADDRESSA LPFN_WSASTRINGTOADDRESS; + alias WSAAddressToStringA WSAAddressToString; + alias WSADuplicateSocketA WSADuplicateSocket; + alias WSAEnumNameSpaceProvidersA WSAEnumNameSpaceProviders; + alias WSAEnumProtocolsA WSAEnumProtocols; + alias WSAGetServiceClassInfoA WSAGetServiceClassInfo; + alias WSAGetServiceClassNameByClassIdA WSAGetServiceClassNameByClassId; + alias WSAInstallServiceClassA WSAInstallServiceClass; + alias WSALookupServiceBeginA WSALookupServiceBegin; + alias WSALookupServiceNextA WSALookupServiceNext; + alias WSASocketA WSASocket; + alias WSAStringToAddressA WSAStringToAddress; + alias WSASetServiceA WSASetService; +} Index: src/win32/winspool.d ================================================================== --- src/win32/winspool.d +++ src/win32/winspool.d @@ -1,961 +1,961 @@ -/***********************************************************************\ -* winspool.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winspool; -pragma(lib, "winspool.lib"); - -private import win32.w32api, win32.windef, win32.wingdi; -private import win32.winbase; // for SYSTEMTIME - -// FIXME: clean up Windows version support - -const DI_CHANNEL=1; -const DI_CHANNEL_WRITE=2; -const DI_READ_SPOOL_JOB=3; - -const FORM_BUILTIN=1; - -const JOB_CONTROL_PAUSE=1; -const JOB_CONTROL_RESUME=2; -const JOB_CONTROL_CANCEL=3; -const JOB_CONTROL_RESTART=4; -const JOB_CONTROL_DELETE=5; -const JOB_STATUS_PAUSED=1; -const JOB_STATUS_ERROR=2; -const JOB_STATUS_DELETING=4; -const JOB_STATUS_SPOOLING=8; -const JOB_STATUS_PRINTING=16; -const JOB_STATUS_OFFLINE=32; -const JOB_STATUS_PAPEROUT=0x40; -const JOB_STATUS_PRINTED=0x80; -const JOB_STATUS_DELETED=0x100; -const JOB_STATUS_BLOCKED_DEVQ=0x200; -const JOB_STATUS_USER_INTERVENTION=0x400; - -const JOB_POSITION_UNSPECIFIED=0; - -const JOB_NOTIFY_TYPE=1; - -const JOB_NOTIFY_FIELD_PRINTER_NAME=0; -const JOB_NOTIFY_FIELD_MACHINE_NAME=1; -const JOB_NOTIFY_FIELD_PORT_NAME=2; -const JOB_NOTIFY_FIELD_USER_NAME=3; -const JOB_NOTIFY_FIELD_NOTIFY_NAME=4; -const JOB_NOTIFY_FIELD_DATATYPE=5; -const JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6; -const JOB_NOTIFY_FIELD_PARAMETERS=7; -const JOB_NOTIFY_FIELD_DRIVER_NAME=8; -const JOB_NOTIFY_FIELD_DEVMODE=9; -const JOB_NOTIFY_FIELD_STATUS=10; -const JOB_NOTIFY_FIELD_STATUS_STRING=11; -const JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; -const JOB_NOTIFY_FIELD_DOCUMENT=13; -const JOB_NOTIFY_FIELD_PRIORITY=14; -const JOB_NOTIFY_FIELD_POSITION=15; -const JOB_NOTIFY_FIELD_SUBMITTED=16; -const JOB_NOTIFY_FIELD_START_TIME=17; -const JOB_NOTIFY_FIELD_UNTIL_TIME=18; -const JOB_NOTIFY_FIELD_TIME=19; -const JOB_NOTIFY_FIELD_TOTAL_PAGES=20; -const JOB_NOTIFY_FIELD_PAGES_PRINTED=21; -const JOB_NOTIFY_FIELD_TOTAL_BYTES=22; -const JOB_NOTIFY_FIELD_BYTES_PRINTED=23; - -const JOB_ACCESS_ADMINISTER = 16; -const JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER; -const JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER; -const JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER; -const JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER; - -const PRINTER_NOTIFY_OPTIONS_REFRESH=1; -const PRINTER_ACCESS_ADMINISTER=4; -const PRINTER_ACCESS_USE=8; - -const PRINTER_ERROR_INFORMATION=0x80000000; -const PRINTER_ERROR_WARNING=0x40000000; -const PRINTER_ERROR_SEVERE=0x20000000; -const PRINTER_ERROR_OUTOFPAPER=1; -const PRINTER_ERROR_JAM=2; -const PRINTER_ERROR_OUTOFTONER=4; - -const PRINTER_CONTROL_PAUSE=1; -const PRINTER_CONTROL_RESUME=2; -const PRINTER_CONTROL_PURGE=3; -const PRINTER_CONTROL_SET_STATUS=4; - -const PRINTER_STATUS_PAUSED = 1; -const PRINTER_STATUS_ERROR = 2; -const PRINTER_STATUS_PENDING_DELETION = 4; -const PRINTER_STATUS_PAPER_JAM = 8; -const PRINTER_STATUS_PAPER_OUT = 0x10; -const PRINTER_STATUS_MANUAL_FEED = 0x20; -const PRINTER_STATUS_PAPER_PROBLEM = 0x40; -const PRINTER_STATUS_OFFLINE = 0x80; -const PRINTER_STATUS_IO_ACTIVE = 0x100; -const PRINTER_STATUS_BUSY = 0x200; -const PRINTER_STATUS_PRINTING = 0x400; -const PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800; -const PRINTER_STATUS_NOT_AVAILABLE = 0x1000; -const PRINTER_STATUS_WAITING = 0x2000; -const PRINTER_STATUS_PROCESSING = 0x4000; -const PRINTER_STATUS_INITIALIZING = 0x8000; -const PRINTER_STATUS_WARMING_UP = 0x10000; -const PRINTER_STATUS_TONER_LOW = 0x20000; -const PRINTER_STATUS_NO_TONER = 0x40000; -const PRINTER_STATUS_PAGE_PUNT = 0x80000; -const PRINTER_STATUS_USER_INTERVENTION = 0x100000; -const PRINTER_STATUS_OUT_OF_MEMORY = 0x200000; -const PRINTER_STATUS_DOOR_OPEN = 0x400000; -const PRINTER_STATUS_SERVER_UNKNOWN = 0x800000; -const PRINTER_STATUS_POWER_SAVE = 0x1000000; - -const PRINTER_ATTRIBUTE_QUEUED=1; -const PRINTER_ATTRIBUTE_DIRECT=2; -const PRINTER_ATTRIBUTE_DEFAULT=4; -const PRINTER_ATTRIBUTE_SHARED=8; -const PRINTER_ATTRIBUTE_NETWORK=0x10; -const PRINTER_ATTRIBUTE_HIDDEN=0x20; -const PRINTER_ATTRIBUTE_LOCAL=0x40; -const PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80; -const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100; -const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200; -const PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400; -const PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800; -const PRINTER_ATTRIBUTE_RAW_ONLY=0x1000; -const PRINTER_ATTRIBUTE_PUBLISHED=0x2000; - -const PRINTER_ENUM_DEFAULT=1; -const PRINTER_ENUM_LOCAL=2; -const PRINTER_ENUM_CONNECTIONS=4; -const PRINTER_ENUM_FAVORITE=4; -const PRINTER_ENUM_NAME=8; -const PRINTER_ENUM_REMOTE=16; -const PRINTER_ENUM_SHARED=32; -const PRINTER_ENUM_NETWORK=0x40; -const PRINTER_ENUM_EXPAND=0x4000; -const PRINTER_ENUM_CONTAINER=0x8000; -const PRINTER_ENUM_ICONMASK=0xff0000; -const PRINTER_ENUM_ICON1=0x10000; -const PRINTER_ENUM_ICON2=0x20000; -const PRINTER_ENUM_ICON3=0x40000; -const PRINTER_ENUM_ICON4=0x80000; -const PRINTER_ENUM_ICON5=0x100000; -const PRINTER_ENUM_ICON6=0x200000; -const PRINTER_ENUM_ICON7=0x400000; -const PRINTER_ENUM_ICON8=0x800000; - -const PRINTER_NOTIFY_TYPE=0; - -const PRINTER_NOTIFY_FIELD_SERVER_NAME=0; -const PRINTER_NOTIFY_FIELD_PRINTER_NAME=1; -const PRINTER_NOTIFY_FIELD_SHARE_NAME=2; -const PRINTER_NOTIFY_FIELD_PORT_NAME=3; -const PRINTER_NOTIFY_FIELD_DRIVER_NAME=4; -const PRINTER_NOTIFY_FIELD_COMMENT=5; -const PRINTER_NOTIFY_FIELD_LOCATION=6; -const PRINTER_NOTIFY_FIELD_DEVMODE=7; -const PRINTER_NOTIFY_FIELD_SEPFILE=8; -const PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9; -const PRINTER_NOTIFY_FIELD_PARAMETERS=10; -const PRINTER_NOTIFY_FIELD_DATATYPE=11; -const PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; -const PRINTER_NOTIFY_FIELD_ATTRIBUTES=13; -const PRINTER_NOTIFY_FIELD_PRIORITY=14; -const PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15; -const PRINTER_NOTIFY_FIELD_START_TIME=16; -const PRINTER_NOTIFY_FIELD_UNTIL_TIME=17; -const PRINTER_NOTIFY_FIELD_STATUS=18; -const PRINTER_NOTIFY_FIELD_STATUS_STRING=19; -const PRINTER_NOTIFY_FIELD_CJOBS=20; -const PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21; -const PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22; -const PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23; -const PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24; -const PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25; - -const PRINTER_CHANGE_ADD_PRINTER=1; -const PRINTER_CHANGE_SET_PRINTER=2; -const PRINTER_CHANGE_DELETE_PRINTER=4; -const PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8; -const PRINTER_CHANGE_PRINTER=0xFF; -const PRINTER_CHANGE_ADD_JOB=0x100; -const PRINTER_CHANGE_SET_JOB=0x200; -const PRINTER_CHANGE_DELETE_JOB=0x400; -const PRINTER_CHANGE_WRITE_JOB=0x800; -const PRINTER_CHANGE_JOB=0xFF00; -const PRINTER_CHANGE_ADD_FORM=0x10000; -const PRINTER_CHANGE_SET_FORM=0x20000; -const PRINTER_CHANGE_DELETE_FORM=0x40000; -const PRINTER_CHANGE_FORM=0x70000; -const PRINTER_CHANGE_ADD_PORT=0x100000; -const PRINTER_CHANGE_CONFIGURE_PORT=0x200000; -const PRINTER_CHANGE_DELETE_PORT=0x400000; -const PRINTER_CHANGE_PORT=0x700000; -const PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000; -const PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000; -const PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000; -const PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000; -const PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000; -const PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000; -const PRINTER_CHANGE_PRINTER_DRIVER=0x70000000; -const PRINTER_CHANGE_TIMEOUT=0x80000000; -const PRINTER_CHANGE_ALL=0x7777FFFF; - -const PRINTER_NOTIFY_INFO_DISCARDED=1; -const PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE); -const PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE); -const PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE); -const PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE); -const NO_PRIORITY=0; -const MAX_PRIORITY=99; -const MIN_PRIORITY=1; -const DEF_PRIORITY=1; -const PORT_TYPE_WRITE=1; -const PORT_TYPE_READ=2; -const PORT_TYPE_REDIRECTED=4; -const PORT_TYPE_NET_ATTACHED=8; -const SERVER_ACCESS_ADMINISTER=1; -const SERVER_ACCESS_ENUMERATE=2; - -const SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); -const SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE); -const SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); -const SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE); - -const PORT_STATUS_TYPE_ERROR=1; -const PORT_STATUS_TYPE_WARNING=2; -const PORT_STATUS_TYPE_INFO=3; - -const PORT_STATUS_OFFLINE=1; -const PORT_STATUS_PAPER_JAM=2; -const PORT_STATUS_PAPER_OUT=3; -const PORT_STATUS_OUTPUT_BIN_FULL=4; -const PORT_STATUS_PAPER_PROBLEM=5; -const PORT_STATUS_NO_TONER=6; -const PORT_STATUS_DOOR_OPEN=7; -const PORT_STATUS_USER_INTERVENTION=8; -const PORT_STATUS_OUT_OF_MEMORY=9; -const PORT_STATUS_TONER_LOW=10; -const PORT_STATUS_WARMING_UP=11; -const PORT_STATUS_POWER_SAVE=12; - -struct ADDJOB_INFO_1A { - LPSTR Path; - DWORD JobId; -} -alias ADDJOB_INFO_1A* PADDJOB_INFO_1A, LPADDJOB_INFO_1A; - -struct ADDJOB_INFO_1W { - LPWSTR Path; - DWORD JobId; -} -alias ADDJOB_INFO_1W* PADDJOB_INFO_1W, LPADDJOB_INFO_1W; - -struct DATATYPES_INFO_1A { - LPSTR pName; -} -alias DATATYPES_INFO_1A* PDATATYPES_INFO_1A, LPDATATYPES_INFO_1A; - -struct DATATYPES_INFO_1W { - LPWSTR pName; -} -alias DATATYPES_INFO_1W* PDATATYPES_INFO_1W, LPDATATYPES_INFO_1W; - -struct JOB_INFO_1A { - DWORD JobId; - LPSTR pPrinterName; - LPSTR pMachineName; - LPSTR pUserName; - LPSTR pDocument; - LPSTR pDatatype; - LPSTR pStatus; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD TotalPages; - DWORD PagesPrinted; - SYSTEMTIME Submitted; -} -alias JOB_INFO_1A* PJOB_INFO_1A, LPJOB_INFO_1A; - -struct JOB_INFO_1W { - DWORD JobId; - LPWSTR pPrinterName; - LPWSTR pMachineName; - LPWSTR pUserName; - LPWSTR pDocument; - LPWSTR pDatatype; - LPWSTR pStatus; - DWORD Status; - DWORD Priority; - DWORD Position; - DWORD TotalPages; - DWORD PagesPrinted; - SYSTEMTIME Submitted; -} -alias JOB_INFO_1W* PJOB_INFO_1W, LPJOB_INFO_1W; - -struct JOB_INFO_2A { - DWORD JobId; - LPSTR pPrinterName; - LPSTR pMachineName; - LPSTR pUserName; - LPSTR pDocument; - LPSTR pNotifyName; - LPSTR pDatatype; - LPSTR pPrintProcessor; - LPSTR pParameters; - LPSTR pDriverName; - LPDEVMODEA pDevMode; - LPSTR 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_2A* PJOB_INFO_2A, LPJOB_INFO_2A; - -struct JOB_INFO_2W { - DWORD JobId; - LPWSTR pPrinterName; - LPWSTR pMachineName; - LPWSTR pUserName; - LPWSTR pDocument; - LPWSTR pNotifyName; - LPWSTR pDatatype; - LPWSTR pPrintProcessor; - LPWSTR pParameters; - LPWSTR pDriverName; - LPDEVMODEW pDevMode; - LPWSTR 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_2W* PJOB_INFO_2W, LPJOB_INFO_2W; - -struct DOC_INFO_1A { - LPSTR pDocName; - LPSTR pOutputFile; - LPSTR pDatatype; -} -alias DOC_INFO_1A* PDOC_INFO_1A, LPDOC_INFO_1A; - -struct DOC_INFO_1W { - LPWSTR pDocName; - LPWSTR pOutputFile; - LPWSTR pDatatype; -} -alias DOC_INFO_1W* PDOC_INFO_1W, LPDOC_INFO_1W; - -struct DOC_INFO_2A { - LPSTR pDocName; - LPSTR pOutputFile; - LPSTR pDatatype; - DWORD dwMode; - DWORD JobId; -} -alias DOC_INFO_2A* PDOC_INFO_2A, LPDOC_INFO_2A; - -struct DOC_INFO_2W { - LPWSTR pDocName; - LPWSTR pOutputFile; - LPWSTR pDatatype; - DWORD dwMode; - DWORD JobId; -} -alias DOC_INFO_2W* PDOC_INFO_2W, LPDOC_INFO_2W; - -struct DRIVER_INFO_1A { - LPSTR pName; -} -alias DRIVER_INFO_1A* PDRIVER_INFO_1A, LPDRIVER_INFO_1A; - -struct DRIVER_INFO_1W { - LPWSTR pName; -} -alias DRIVER_INFO_1W* PDRIVER_INFO_1W, LPDRIVER_INFO_1W; - -struct DRIVER_INFO_2A { - DWORD cVersion; - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDriverPath; - LPSTR pDataFile; - LPSTR pConfigFile; -} -alias DRIVER_INFO_2A* PDRIVER_INFO_2A, LPDRIVER_INFO_2A; - -struct DRIVER_INFO_2W { - DWORD cVersion; - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDriverPath; - LPWSTR pDataFile; - LPWSTR pConfigFile; -} -alias DRIVER_INFO_2W* PDRIVER_INFO_2W, LPDRIVER_INFO_2W; - -struct DRIVER_INFO_3A { - DWORD cVersion; - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDriverPath; - LPSTR pDataFile; - LPSTR pConfigFile; - LPSTR pHelpFile; - LPSTR pDependentFiles; - LPSTR pMonitorName; - LPSTR pDefaultDataType; -} -alias DRIVER_INFO_3A* PDRIVER_INFO_3A, LPDRIVER_INFO_3A; - -struct DRIVER_INFO_3W { - DWORD cVersion; - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDriverPath; - LPWSTR pDataFile; - LPWSTR pConfigFile; - LPWSTR pHelpFile; - LPWSTR pDependentFiles; - LPWSTR pMonitorName; - LPWSTR pDefaultDataType; -} -alias DRIVER_INFO_3W* PDRIVER_INFO_3W, LPDRIVER_INFO_3W; - -struct MONITOR_INFO_1A { - LPSTR pName; -} -alias MONITOR_INFO_1A* PMONITOR_INFO_1A, LPMONITOR_INFO_1A; - -struct MONITOR_INFO_1W { - LPWSTR pName; -} -alias MONITOR_INFO_1W* PMONITOR_INFO_1W, LPMONITOR_INFO_1W; - -struct PORT_INFO_1A { - LPSTR pName; -} -alias PORT_INFO_1A* PPORT_INFO_1A, LPPORT_INFO_1A; - -struct PORT_INFO_1W { - LPWSTR pName; -} -alias PORT_INFO_1W* PPORT_INFO_1W, LPPORT_INFO_1W; - -struct MONITOR_INFO_2A { - LPSTR pName; - LPSTR pEnvironment; - LPSTR pDLLName; -} -alias MONITOR_INFO_2A* PMONITOR_INFO_2A, LPMONITOR_INFO_2A; - -struct MONITOR_INFO_2W { - LPWSTR pName; - LPWSTR pEnvironment; - LPWSTR pDLLName; -} -alias MONITOR_INFO_2W* PMONITOR_INFO_2W, LPMONITOR_INFO_2W; - -struct PORT_INFO_2A { - LPSTR pPortName; - LPSTR pMonitorName; - LPSTR pDescription; - DWORD fPortType; - DWORD Reserved; -} -alias PORT_INFO_2A* PPORT_INFO_2A, LPPORT_INFO_2A; - -struct PORT_INFO_2W { - LPWSTR pPortName; - LPWSTR pMonitorName; - LPWSTR pDescription; - DWORD fPortType; - DWORD Reserved; -} -alias PORT_INFO_2W* PPORT_INFO_2W, LPPORT_INFO_2W; - -struct PORT_INFO_3A { - DWORD dwStatus; - LPSTR pszStatus; - DWORD dwSeverity; -} -alias PORT_INFO_3A* PPORT_INFO_3A, LPPORT_INFO_3A; - -struct PORT_INFO_3W { - DWORD dwStatus; - LPWSTR pszStatus; - DWORD dwSeverity; -} -alias PORT_INFO_3W* PPORT_INFO_3W, LPPORT_INFO_3W; - -struct PRINTER_INFO_1A { - DWORD Flags; - LPSTR pDescription; - LPSTR pName; - LPSTR pComment; -} -alias PRINTER_INFO_1A* PPRINTER_INFO_1A, LPPRINTER_INFO_1A; - -struct PRINTER_INFO_1W { - DWORD Flags; - LPWSTR pDescription; - LPWSTR pName; - LPWSTR pComment; -} -alias PRINTER_INFO_1W* PPRINTER_INFO_1W, LPPRINTER_INFO_1W; - -struct PRINTER_INFO_2A { - LPSTR pServerName; - LPSTR pPrinterName; - LPSTR pShareName; - LPSTR pPortName; - LPSTR pDriverName; - LPSTR pComment; - LPSTR pLocation; - LPDEVMODEA pDevMode; - LPSTR pSepFile; - LPSTR pPrintProcessor; - LPSTR pDatatype; - LPSTR pParameters; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Attributes; - DWORD Priority; - DWORD DefaultPriority; - DWORD StartTime; - DWORD UntilTime; - DWORD Status; - DWORD cJobs; - DWORD AveragePPM; -} -alias PRINTER_INFO_2A* PPRINTER_INFO_2A, LPPRINTER_INFO_2A; - -struct PRINTER_INFO_2W { - LPWSTR pServerName; - LPWSTR pPrinterName; - LPWSTR pShareName; - LPWSTR pPortName; - LPWSTR pDriverName; - LPWSTR pComment; - LPWSTR pLocation; - LPDEVMODEW pDevMode; - LPWSTR pSepFile; - LPWSTR pPrintProcessor; - LPWSTR pDatatype; - LPWSTR pParameters; - PSECURITY_DESCRIPTOR pSecurityDescriptor; - DWORD Attributes; - DWORD Priority; - DWORD DefaultPriority; - DWORD StartTime; - DWORD UntilTime; - DWORD Status; - DWORD cJobs; - DWORD AveragePPM; -} -alias PRINTER_INFO_2W* PPRINTER_INFO_2W, LPPRINTER_INFO_2W; - -struct PRINTER_INFO_3 { - PSECURITY_DESCRIPTOR pSecurityDescriptor; -} -alias PRINTER_INFO_3* PPRINTER_INFO_3, LPPRINTER_INFO_3; - -struct PRINTER_INFO_4A { - LPSTR pPrinterName; - LPSTR pServerName; - DWORD Attributes; -} -alias PRINTER_INFO_4A* PPRINTER_INFO_4A, LPPRINTER_INFO_4A; - -struct PRINTER_INFO_4W { - LPWSTR pPrinterName; - LPWSTR pServerName; - DWORD Attributes; -} -alias PRINTER_INFO_4W* PPRINTER_INFO_4W, LPPRINTER_INFO_4W; - -struct PRINTER_INFO_5A { - LPSTR pPrinterName; - LPSTR pPortName; - DWORD Attributes; - DWORD DeviceNotSelectedTimeout; - DWORD TransmissionRetryTimeout; -} -alias PRINTER_INFO_5A* PPRINTER_INFO_5A, LPPRINTER_INFO_5A; - -struct PRINTER_INFO_5W { - LPWSTR pPrinterName; - LPWSTR pPortName; - DWORD Attributes; - DWORD DeviceNotSelectedTimeout; - DWORD TransmissionRetryTimeout; -} -alias PRINTER_INFO_5W* PPRINTER_INFO_5W, LPPRINTER_INFO_5W; - -struct PRINTER_INFO_6 { - DWORD dwStatus; -} -alias PRINTER_INFO_6* PPRINTER_INFO_6, LPPRINTER_INFO_6; - -struct PRINTPROCESSOR_INFO_1A { - LPSTR pName; -} -alias PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A, LPPRINTPROCESSOR_INFO_1A; - -struct PRINTPROCESSOR_INFO_1W { - LPWSTR pName; -} -alias PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W, LPPRINTPROCESSOR_INFO_1W; - -struct PRINTER_NOTIFY_INFO_DATA { - WORD Type; - WORD Field; - DWORD Reserved; - DWORD Id; - union _NotifyData { - DWORD adwData[2]; - struct Data { - DWORD cbBuf; - PVOID pBuf; - } - } - _NotifyData NotifyData; -} -alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA; - -struct PRINTER_NOTIFY_INFO { - DWORD Version; - DWORD Flags; - DWORD Count; - PRINTER_NOTIFY_INFO_DATA aData[1]; -} -alias PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO, LPPRINTER_NOTIFY_INFO; - -struct FORM_INFO_1A { - DWORD Flags; - LPSTR pName; - SIZEL Size; - RECTL ImageableArea; -} -alias FORM_INFO_1A* PFORM_INFO_1A, LPFORM_INFO_1A; - -struct FORM_INFO_1W { - DWORD Flags; - LPWSTR pName; - SIZEL Size; - RECTL ImageableArea; -} -alias FORM_INFO_1W* PFORM_INFO_1W, LPFORM_INFO_1W; - -struct PRINTER_DEFAULTSA { - LPSTR pDatatype; - LPDEVMODE pDevMode; - ACCESS_MASK DesiredAccess; -} -alias PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA, LPPRINTER_DEFAULTSA; - -struct PRINTER_DEFAULTSW { - LPWSTR pDatatype; - LPDEVMODE pDevMode; - ACCESS_MASK DesiredAccess; -} -alias PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW, LPPRINTER_DEFAULTSW; - -extern (Windows): -BOOL AbortPrinter(HANDLE); -BOOL AddFormA(HANDLE, DWORD, PBYTE); -BOOL AddFormW(HANDLE, DWORD, PBYTE); -BOOL AddJobA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -BOOL AddJobW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -BOOL AddMonitorA(LPSTR, DWORD, PBYTE); -BOOL AddMonitorW(LPWSTR, DWORD, PBYTE); -BOOL AddPortA(LPSTR, HWND, LPSTR); -BOOL AddPortW(LPWSTR, HWND, LPWSTR); -HANDLE AddPrinterA(LPSTR, DWORD, PBYTE); -HANDLE AddPrinterW(LPWSTR, DWORD, PBYTE); -BOOL AddPrinterConnectionA(LPSTR); -BOOL AddPrinterConnectionW(LPWSTR); -BOOL AddPrinterDriverA(LPSTR, DWORD, PBYTE); -BOOL AddPrinterDriverW(LPWSTR, DWORD, PBYTE); -BOOL AddPrintProcessorA(LPSTR, LPSTR, LPSTR, LPSTR); -BOOL AddPrintProcessorW(LPWSTR, LPWSTR, LPWSTR, LPWSTR); -BOOL AddPrintProvidorA(LPSTR, DWORD, PBYTE); -BOOL AddPrintProvidorW(LPWSTR, DWORD, PBYTE); -LONG AdvancedDocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODE, PDEVMODEA); -LONG AdvancedDocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODE, PDEVMODEW); -BOOL ClosePrinter(HANDLE); -BOOL ConfigurePortA(LPSTR, HWND, LPSTR); -BOOL ConfigurePortW(LPWSTR, HWND, LPWSTR); -HANDLE ConnectToPrinterDlg(HWND, DWORD); -BOOL DeleteFormA(HANDLE, LPSTR); -BOOL DeleteFormW(HANDLE, LPWSTR); -BOOL DeleteMonitorA(LPSTR, LPSTR, LPSTR); -BOOL DeleteMonitorW(LPWSTR, LPWSTR, LPWSTR); -BOOL DeletePortA(LPSTR, HWND, LPSTR); -BOOL DeletePortW(LPWSTR, HWND, LPWSTR); -BOOL DeletePrinter(HANDLE); -BOOL DeletePrinterConnectionA(LPSTR); -BOOL DeletePrinterConnectionW(LPWSTR); -DWORD DeletePrinterDataA(HANDLE, LPSTR); -DWORD DeletePrinterDataW(HANDLE, LPWSTR); -BOOL DeletePrinterDriverA(LPSTR, LPSTR, LPSTR); -BOOL DeletePrinterDriverW(LPWSTR, LPWSTR, LPWSTR); -BOOL DeletePrintProcessorA(LPSTR, LPSTR, LPSTR); -BOOL DeletePrintProcessorW(LPWSTR, LPWSTR, LPWSTR); -BOOL DeletePrintProvidorA(LPSTR, LPSTR, LPSTR); -BOOL DeletePrintProvidorW(LPWSTR, LPWSTR, LPWSTR); -LONG DocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA, DWORD); -LONG DocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD); -BOOL EndDocPrinter(HANDLE); -BOOL EndPagePrinter(HANDLE); -BOOL EnumFormsA(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumFormsW(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumJobsA(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumJobsW(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumMonitorsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumMonitorsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPortsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPortsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -DWORD EnumPrinterDataA(HANDLE, DWORD, LPSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); -DWORD EnumPrinterDataW(HANDLE, DWORD, LPWSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); -BOOL EnumPrinterDriversA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrinterDriversW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintersA(DWORD, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintersW(DWORD, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintProcessorDatatypesA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintProcessorDatatypesW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintProcessorsA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL EnumPrintProcessorsW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); -BOOL FindClosePrinterChangeNotification(HANDLE); -HANDLE FindFirstPrinterChangeNotification(HANDLE, DWORD, DWORD, PVOID); -HANDLE FindNextPrinterChangeNotification(HANDLE, PDWORD, PVOID, PVOID*); -BOOL FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO); - -static if (_WIN32_WINNT >= 0x0500) { -BOOL GetDefaultPrinterA(LPSTR, LPDWORD); -BOOL GetDefaultPrinterW(LPWSTR, LPDWORD); -} - -BOOL GetFormA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetFormW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetPrinterA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -BOOL GetPrinterW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDataA(HANDLE, LPSTR, PDWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDataW(HANDLE, LPWSTR, PDWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDriverA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDriverW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDriverDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrinterDriverDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrintProcessorDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); -DWORD GetPrintProcessorDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); -BOOL OpenPrinterA(LPSTR, PHANDLE, LPPRINTER_DEFAULTSA); -BOOL OpenPrinterW(LPWSTR, PHANDLE, LPPRINTER_DEFAULTSW); -DWORD PrinterMessageBoxA(HANDLE, DWORD, HWND, LPSTR, LPSTR, DWORD); -DWORD PrinterMessageBoxW(HANDLE, DWORD, HWND, LPWSTR, LPWSTR, DWORD); -BOOL PrinterProperties(HWND, HANDLE); -BOOL ReadPrinter(HANDLE, PVOID, DWORD, PDWORD); -BOOL ResetPrinterA(HANDLE, LPPRINTER_DEFAULTSA); -BOOL ResetPrinterW(HANDLE, LPPRINTER_DEFAULTSW); -BOOL ScheduleJob(HANDLE, DWORD); -BOOL SetFormA(HANDLE, LPSTR, DWORD, PBYTE); -BOOL SetFormW(HANDLE, LPWSTR, DWORD, PBYTE); -BOOL SetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD); -BOOL SetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD); -BOOL SetPrinterA(HANDLE, DWORD, PBYTE, DWORD); -BOOL SetPrinterW(HANDLE, DWORD, PBYTE, DWORD); -BOOL SetPrinterDataA(HANDLE, LPSTR, DWORD, PBYTE, DWORD); -BOOL SetPrinterDataW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD); -DWORD StartDocPrinterA(HANDLE, DWORD, PBYTE); -DWORD StartDocPrinterW(HANDLE, DWORD, PBYTE); -BOOL StartPagePrinter(HANDLE); -DWORD WaitForPrinterChange(HANDLE, DWORD); -BOOL WritePrinter(HANDLE, PVOID, DWORD, PDWORD); - -version(Unicode) { - -alias JOB_INFO_1W JOB_INFO_1; -alias JOB_INFO_2W JOB_INFO_2; -alias ADDJOB_INFO_1W ADDJOB_INFO_1; -alias DATATYPES_INFO_1W DATATYPES_INFO_1; -alias MONITOR_INFO_1W MONITOR_INFO_1; -alias MONITOR_INFO_2W MONITOR_INFO_2; -alias DOC_INFO_1W DOC_INFO_1; -alias DOC_INFO_2W DOC_INFO_2; -alias PORT_INFO_1W PORT_INFO_1; -alias PORT_INFO_2W PORT_INFO_2; -alias PORT_INFO_3W PORT_INFO_3; -alias DRIVER_INFO_2W DRIVER_INFO_2; -alias PRINTER_INFO_1W PRINTER_INFO_1; -alias PRINTER_INFO_2W PRINTER_INFO_2; -alias PRINTER_INFO_4W PRINTER_INFO_4; -alias PRINTER_INFO_5W PRINTER_INFO_5; -alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1; -alias FORM_INFO_1W FORM_INFO_1; -alias PRINTER_DEFAULTSW PRINTER_DEFAULTS; - -alias AddFormW AddForm; -alias AddJobW AddJob; -alias AddMonitorW AddMonitor; -alias AddPortW AddPort; -alias AddPrinterW AddPrinter; -alias AddPrinterConnectionW AddPrinterConnection; -alias AddPrinterDriverW AddPrinterDriver; -alias AddPrintProcessorW AddPrintProcessor; -alias AddPrintProvidorW AddPrintProvidor; -alias AdvancedDocumentPropertiesW AdvancedDocumentProperties; -alias ConfigurePortW ConfigurePort; -alias DeleteFormW DeleteForm; -alias DeleteMonitorW DeleteMonitor; -alias DeletePortW DeletePort; -alias DeletePrinterConnectionW DeletePrinterConnection; -alias DeletePrinterDataW DeletePrinterData; -alias DeletePrinterDriverW DeletePrinterDriver; -alias DeletePrintProcessorW DeletePrintProcessor; -alias DeletePrintProvidorW DeletePrintProvidor; -alias DocumentPropertiesW DocumentProperties; -alias EnumFormsW EnumForms; -alias EnumJobsW EnumJobs; -alias EnumMonitorsW EnumMonitors; -alias EnumPortsW EnumPorts; -alias EnumPrinterDataW EnumPrinterData; -alias EnumPrinterDriversW EnumPrinterDrivers; -alias EnumPrintersW EnumPrinters; -alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes; -alias EnumPrintProcessorsW EnumPrintProcessors; - -static if (_WIN32_WINNT >= 0x0500) { -alias GetDefaultPrinterW GetDefaultPrinter; -} - -alias GetFormW GetForm; -alias GetJobW GetJob; -alias GetPrinterW GetPrinter; -alias GetPrinterDataW GetPrinterData; -alias GetPrinterDriverW GetPrinterDriver; -alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory; -alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory; -alias OpenPrinterW OpenPrinter; -alias PrinterMessageBoxW PrinterMessageBox; -alias ResetPrinterW ResetPrinter; -alias SetFormW SetForm; -alias SetJobW SetJob; -alias SetPrinterW SetPrinter; -alias SetPrinterDataW SetPrinterData; -alias StartDocPrinterW StartDocPrinter; - -} else { - -alias JOB_INFO_1A JOB_INFO_1; -alias JOB_INFO_2A JOB_INFO_2; -alias ADDJOB_INFO_1A ADDJOB_INFO_1; -alias DATATYPES_INFO_1A DATATYPES_INFO_1; -alias MONITOR_INFO_1A MONITOR_INFO_1; -alias MONITOR_INFO_2A MONITOR_INFO_2; -alias DOC_INFO_1A DOC_INFO_1; -alias DOC_INFO_2A DOC_INFO_2; -alias PORT_INFO_1A PORT_INFO_1; -alias PORT_INFO_2A PORT_INFO_2; -alias PORT_INFO_3A PORT_INFO_3; -alias DRIVER_INFO_2A DRIVER_INFO_2; -alias PRINTER_INFO_1A PRINTER_INFO_1; -alias PRINTER_INFO_2A PRINTER_INFO_2; -alias PRINTER_INFO_4A PRINTER_INFO_4; -alias PRINTER_INFO_5A PRINTER_INFO_5; -alias PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1; -alias FORM_INFO_1A FORM_INFO_1; -alias PRINTER_DEFAULTSA PRINTER_DEFAULTS; - -alias AddFormA AddForm; -alias AddJobA AddJob; -alias AddMonitorA AddMonitor; -alias AddPortA AddPort; -alias AddPrinterA AddPrinter; -alias AddPrinterConnectionA AddPrinterConnection; -alias AddPrinterDriverA AddPrinterDriver; -alias AddPrintProcessorA AddPrintProcessor; -alias AddPrintProvidorA AddPrintProvidor; -alias AdvancedDocumentPropertiesA AdvancedDocumentProperties; -alias ConfigurePortA ConfigurePort; -alias DeleteFormA DeleteForm; -alias DeleteMonitorA DeleteMonitor; -alias DeletePortA DeletePort; -alias DeletePrinterConnectionA DeletePrinterConnection; -alias DeletePrinterDataA DeletePrinterData; -alias DeletePrinterDriverA DeletePrinterDriver; -alias DeletePrintProcessorA DeletePrintProcessor; -alias DeletePrintProvidorA DeletePrintProvidor; -alias DocumentPropertiesA DocumentProperties; -alias EnumFormsA EnumForms; -alias EnumJobsA EnumJobs; -alias EnumMonitorsA EnumMonitors; -alias EnumPortsA EnumPorts; -alias EnumPrinterDataA EnumPrinterData; -alias EnumPrinterDriversA EnumPrinterDrivers; -alias EnumPrintersA EnumPrinters; -alias EnumPrintProcessorDatatypesA EnumPrintProcessorDatatypes; -alias EnumPrintProcessorsA EnumPrintProcessors; - -static if (_WIN32_WINNT >= 0x0500) { -alias GetDefaultPrinterA GetDefaultPrinter; -} - -alias GetFormA GetForm; -alias GetJobA GetJob; -alias GetPrinterA GetPrinter; -alias GetPrinterDataA GetPrinterData; -alias GetPrinterDriverA GetPrinterDriver; -alias GetPrinterDriverDirectoryA GetPrinterDriverDirectory; -alias GetPrintProcessorDirectoryA GetPrintProcessorDirectory; -alias OpenPrinterA OpenPrinter; -alias PrinterMessageBoxA PrinterMessageBox; -alias ResetPrinterA ResetPrinter; -alias SetFormA SetForm; -alias SetJobA SetJob; -alias SetPrinterA SetPrinter; -alias SetPrinterDataA SetPrinterData; -alias StartDocPrinterA StartDocPrinter; -} - -alias JOB_INFO_1* PJOB_INFO_1, LPJOB_INFO_1; -alias JOB_INFO_2* PJOB_INFO_2, LPJOB_INFO_2; -alias ADDJOB_INFO_1* PADDJOB_INFO_1, LPADDJOB_INFO_1; -alias DATATYPES_INFO_1* PDATATYPES_INFO_1, LPDATATYPES_INFO_1; -alias MONITOR_INFO_1* PMONITOR_INFO_1, LPMONITOR_INFO_1; -alias MONITOR_INFO_2* PMONITOR_INFO_2, LPMONITOR_INFO_2; -alias DOC_INFO_1* PDOC_INFO_1, LPDOC_INFO_1; -alias DOC_INFO_2* PDOC_INFO_2, LPDOC_INFO_2; -alias PORT_INFO_1* PPORT_INFO_1, LPPORT_INFO_1; -alias PORT_INFO_2* PPORT_INFO_2, LPPORT_INFO_2; -alias PORT_INFO_3* PPORT_INFO_3, LPPORT_INFO_3; -alias DRIVER_INFO_2* PDRIVER_INFO_2, LPDRIVER_INFO_2; -alias PRINTER_INFO_1* PPRINTER_INFO_1, LPPRINTER_INFO_1; -alias PRINTER_INFO_2* PPRINTER_INFO_2, LPPRINTER_INFO_2; -alias PRINTER_INFO_4* PPRINTER_INFO_4, LPPRINTER_INFO_4; -alias PRINTER_INFO_5* PPRINTER_INFO_5, LPPRINTER_INFO_5; -alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSOR_INFO_1, LPPRINTPROCESSOR_INFO_1; -alias FORM_INFO_1* PFORM_INFO_1, LPFORM_INFO_1; -alias PRINTER_DEFAULTS* PPRINTER_DEFAULTS, LPPRINTER_DEFAULTS; +/***********************************************************************\ +* winspool.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winspool; +pragma(lib, "winspool"); + +private import win32.w32api, win32.windef, win32.wingdi; +private import win32.winbase; // for SYSTEMTIME + +// FIXME: clean up Windows version support + +const DI_CHANNEL=1; +const DI_CHANNEL_WRITE=2; +const DI_READ_SPOOL_JOB=3; + +const FORM_BUILTIN=1; + +const JOB_CONTROL_PAUSE=1; +const JOB_CONTROL_RESUME=2; +const JOB_CONTROL_CANCEL=3; +const JOB_CONTROL_RESTART=4; +const JOB_CONTROL_DELETE=5; +const JOB_STATUS_PAUSED=1; +const JOB_STATUS_ERROR=2; +const JOB_STATUS_DELETING=4; +const JOB_STATUS_SPOOLING=8; +const JOB_STATUS_PRINTING=16; +const JOB_STATUS_OFFLINE=32; +const JOB_STATUS_PAPEROUT=0x40; +const JOB_STATUS_PRINTED=0x80; +const JOB_STATUS_DELETED=0x100; +const JOB_STATUS_BLOCKED_DEVQ=0x200; +const JOB_STATUS_USER_INTERVENTION=0x400; + +const JOB_POSITION_UNSPECIFIED=0; + +const JOB_NOTIFY_TYPE=1; + +const JOB_NOTIFY_FIELD_PRINTER_NAME=0; +const JOB_NOTIFY_FIELD_MACHINE_NAME=1; +const JOB_NOTIFY_FIELD_PORT_NAME=2; +const JOB_NOTIFY_FIELD_USER_NAME=3; +const JOB_NOTIFY_FIELD_NOTIFY_NAME=4; +const JOB_NOTIFY_FIELD_DATATYPE=5; +const JOB_NOTIFY_FIELD_PRINT_PROCESSOR=6; +const JOB_NOTIFY_FIELD_PARAMETERS=7; +const JOB_NOTIFY_FIELD_DRIVER_NAME=8; +const JOB_NOTIFY_FIELD_DEVMODE=9; +const JOB_NOTIFY_FIELD_STATUS=10; +const JOB_NOTIFY_FIELD_STATUS_STRING=11; +const JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; +const JOB_NOTIFY_FIELD_DOCUMENT=13; +const JOB_NOTIFY_FIELD_PRIORITY=14; +const JOB_NOTIFY_FIELD_POSITION=15; +const JOB_NOTIFY_FIELD_SUBMITTED=16; +const JOB_NOTIFY_FIELD_START_TIME=17; +const JOB_NOTIFY_FIELD_UNTIL_TIME=18; +const JOB_NOTIFY_FIELD_TIME=19; +const JOB_NOTIFY_FIELD_TOTAL_PAGES=20; +const JOB_NOTIFY_FIELD_PAGES_PRINTED=21; +const JOB_NOTIFY_FIELD_TOTAL_BYTES=22; +const JOB_NOTIFY_FIELD_BYTES_PRINTED=23; + +const JOB_ACCESS_ADMINISTER = 16; +const JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER; +const JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER; +const JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER; +const JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER; + +const PRINTER_NOTIFY_OPTIONS_REFRESH=1; +const PRINTER_ACCESS_ADMINISTER=4; +const PRINTER_ACCESS_USE=8; + +const PRINTER_ERROR_INFORMATION=0x80000000; +const PRINTER_ERROR_WARNING=0x40000000; +const PRINTER_ERROR_SEVERE=0x20000000; +const PRINTER_ERROR_OUTOFPAPER=1; +const PRINTER_ERROR_JAM=2; +const PRINTER_ERROR_OUTOFTONER=4; + +const PRINTER_CONTROL_PAUSE=1; +const PRINTER_CONTROL_RESUME=2; +const PRINTER_CONTROL_PURGE=3; +const PRINTER_CONTROL_SET_STATUS=4; + +const PRINTER_STATUS_PAUSED = 1; +const PRINTER_STATUS_ERROR = 2; +const PRINTER_STATUS_PENDING_DELETION = 4; +const PRINTER_STATUS_PAPER_JAM = 8; +const PRINTER_STATUS_PAPER_OUT = 0x10; +const PRINTER_STATUS_MANUAL_FEED = 0x20; +const PRINTER_STATUS_PAPER_PROBLEM = 0x40; +const PRINTER_STATUS_OFFLINE = 0x80; +const PRINTER_STATUS_IO_ACTIVE = 0x100; +const PRINTER_STATUS_BUSY = 0x200; +const PRINTER_STATUS_PRINTING = 0x400; +const PRINTER_STATUS_OUTPUT_BIN_FULL = 0x800; +const PRINTER_STATUS_NOT_AVAILABLE = 0x1000; +const PRINTER_STATUS_WAITING = 0x2000; +const PRINTER_STATUS_PROCESSING = 0x4000; +const PRINTER_STATUS_INITIALIZING = 0x8000; +const PRINTER_STATUS_WARMING_UP = 0x10000; +const PRINTER_STATUS_TONER_LOW = 0x20000; +const PRINTER_STATUS_NO_TONER = 0x40000; +const PRINTER_STATUS_PAGE_PUNT = 0x80000; +const PRINTER_STATUS_USER_INTERVENTION = 0x100000; +const PRINTER_STATUS_OUT_OF_MEMORY = 0x200000; +const PRINTER_STATUS_DOOR_OPEN = 0x400000; +const PRINTER_STATUS_SERVER_UNKNOWN = 0x800000; +const PRINTER_STATUS_POWER_SAVE = 0x1000000; + +const PRINTER_ATTRIBUTE_QUEUED=1; +const PRINTER_ATTRIBUTE_DIRECT=2; +const PRINTER_ATTRIBUTE_DEFAULT=4; +const PRINTER_ATTRIBUTE_SHARED=8; +const PRINTER_ATTRIBUTE_NETWORK=0x10; +const PRINTER_ATTRIBUTE_HIDDEN=0x20; +const PRINTER_ATTRIBUTE_LOCAL=0x40; +const PRINTER_ATTRIBUTE_ENABLE_DEVQ=0x80; +const PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS=0x100; +const PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST=0x200; +const PRINTER_ATTRIBUTE_WORK_OFFLINE=0x400; +const PRINTER_ATTRIBUTE_ENABLE_BIDI=0x800; +const PRINTER_ATTRIBUTE_RAW_ONLY=0x1000; +const PRINTER_ATTRIBUTE_PUBLISHED=0x2000; + +const PRINTER_ENUM_DEFAULT=1; +const PRINTER_ENUM_LOCAL=2; +const PRINTER_ENUM_CONNECTIONS=4; +const PRINTER_ENUM_FAVORITE=4; +const PRINTER_ENUM_NAME=8; +const PRINTER_ENUM_REMOTE=16; +const PRINTER_ENUM_SHARED=32; +const PRINTER_ENUM_NETWORK=0x40; +const PRINTER_ENUM_EXPAND=0x4000; +const PRINTER_ENUM_CONTAINER=0x8000; +const PRINTER_ENUM_ICONMASK=0xff0000; +const PRINTER_ENUM_ICON1=0x10000; +const PRINTER_ENUM_ICON2=0x20000; +const PRINTER_ENUM_ICON3=0x40000; +const PRINTER_ENUM_ICON4=0x80000; +const PRINTER_ENUM_ICON5=0x100000; +const PRINTER_ENUM_ICON6=0x200000; +const PRINTER_ENUM_ICON7=0x400000; +const PRINTER_ENUM_ICON8=0x800000; + +const PRINTER_NOTIFY_TYPE=0; + +const PRINTER_NOTIFY_FIELD_SERVER_NAME=0; +const PRINTER_NOTIFY_FIELD_PRINTER_NAME=1; +const PRINTER_NOTIFY_FIELD_SHARE_NAME=2; +const PRINTER_NOTIFY_FIELD_PORT_NAME=3; +const PRINTER_NOTIFY_FIELD_DRIVER_NAME=4; +const PRINTER_NOTIFY_FIELD_COMMENT=5; +const PRINTER_NOTIFY_FIELD_LOCATION=6; +const PRINTER_NOTIFY_FIELD_DEVMODE=7; +const PRINTER_NOTIFY_FIELD_SEPFILE=8; +const PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR=9; +const PRINTER_NOTIFY_FIELD_PARAMETERS=10; +const PRINTER_NOTIFY_FIELD_DATATYPE=11; +const PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR=12; +const PRINTER_NOTIFY_FIELD_ATTRIBUTES=13; +const PRINTER_NOTIFY_FIELD_PRIORITY=14; +const PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY=15; +const PRINTER_NOTIFY_FIELD_START_TIME=16; +const PRINTER_NOTIFY_FIELD_UNTIL_TIME=17; +const PRINTER_NOTIFY_FIELD_STATUS=18; +const PRINTER_NOTIFY_FIELD_STATUS_STRING=19; +const PRINTER_NOTIFY_FIELD_CJOBS=20; +const PRINTER_NOTIFY_FIELD_AVERAGE_PPM=21; +const PRINTER_NOTIFY_FIELD_TOTAL_PAGES=22; +const PRINTER_NOTIFY_FIELD_PAGES_PRINTED=23; +const PRINTER_NOTIFY_FIELD_TOTAL_BYTES=24; +const PRINTER_NOTIFY_FIELD_BYTES_PRINTED=25; + +const PRINTER_CHANGE_ADD_PRINTER=1; +const PRINTER_CHANGE_SET_PRINTER=2; +const PRINTER_CHANGE_DELETE_PRINTER=4; +const PRINTER_CHANGE_FAILED_CONNECTION_PRINTER=8; +const PRINTER_CHANGE_PRINTER=0xFF; +const PRINTER_CHANGE_ADD_JOB=0x100; +const PRINTER_CHANGE_SET_JOB=0x200; +const PRINTER_CHANGE_DELETE_JOB=0x400; +const PRINTER_CHANGE_WRITE_JOB=0x800; +const PRINTER_CHANGE_JOB=0xFF00; +const PRINTER_CHANGE_ADD_FORM=0x10000; +const PRINTER_CHANGE_SET_FORM=0x20000; +const PRINTER_CHANGE_DELETE_FORM=0x40000; +const PRINTER_CHANGE_FORM=0x70000; +const PRINTER_CHANGE_ADD_PORT=0x100000; +const PRINTER_CHANGE_CONFIGURE_PORT=0x200000; +const PRINTER_CHANGE_DELETE_PORT=0x400000; +const PRINTER_CHANGE_PORT=0x700000; +const PRINTER_CHANGE_ADD_PRINT_PROCESSOR=0x1000000; +const PRINTER_CHANGE_DELETE_PRINT_PROCESSOR=0x4000000; +const PRINTER_CHANGE_PRINT_PROCESSOR=0x7000000; +const PRINTER_CHANGE_ADD_PRINTER_DRIVER=0x10000000; +const PRINTER_CHANGE_SET_PRINTER_DRIVER=0x20000000; +const PRINTER_CHANGE_DELETE_PRINTER_DRIVER=0x40000000; +const PRINTER_CHANGE_PRINTER_DRIVER=0x70000000; +const PRINTER_CHANGE_TIMEOUT=0x80000000; +const PRINTER_CHANGE_ALL=0x7777FFFF; + +const PRINTER_NOTIFY_INFO_DISCARDED=1; +const PRINTER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE); +const PRINTER_READ=(STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE); +const PRINTER_WRITE=(STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE); +const PRINTER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE); +const NO_PRIORITY=0; +const MAX_PRIORITY=99; +const MIN_PRIORITY=1; +const DEF_PRIORITY=1; +const PORT_TYPE_WRITE=1; +const PORT_TYPE_READ=2; +const PORT_TYPE_REDIRECTED=4; +const PORT_TYPE_NET_ATTACHED=8; +const SERVER_ACCESS_ADMINISTER=1; +const SERVER_ACCESS_ENUMERATE=2; + +const SERVER_ALL_ACCESS=(STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); +const SERVER_READ=(STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE); +const SERVER_WRITE=(STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE); +const SERVER_EXECUTE=(STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE); + +const PORT_STATUS_TYPE_ERROR=1; +const PORT_STATUS_TYPE_WARNING=2; +const PORT_STATUS_TYPE_INFO=3; + +const PORT_STATUS_OFFLINE=1; +const PORT_STATUS_PAPER_JAM=2; +const PORT_STATUS_PAPER_OUT=3; +const PORT_STATUS_OUTPUT_BIN_FULL=4; +const PORT_STATUS_PAPER_PROBLEM=5; +const PORT_STATUS_NO_TONER=6; +const PORT_STATUS_DOOR_OPEN=7; +const PORT_STATUS_USER_INTERVENTION=8; +const PORT_STATUS_OUT_OF_MEMORY=9; +const PORT_STATUS_TONER_LOW=10; +const PORT_STATUS_WARMING_UP=11; +const PORT_STATUS_POWER_SAVE=12; + +struct ADDJOB_INFO_1A { + LPSTR Path; + DWORD JobId; +} +alias ADDJOB_INFO_1A* PADDJOB_INFO_1A, LPADDJOB_INFO_1A; + +struct ADDJOB_INFO_1W { + LPWSTR Path; + DWORD JobId; +} +alias ADDJOB_INFO_1W* PADDJOB_INFO_1W, LPADDJOB_INFO_1W; + +struct DATATYPES_INFO_1A { + LPSTR pName; +} +alias DATATYPES_INFO_1A* PDATATYPES_INFO_1A, LPDATATYPES_INFO_1A; + +struct DATATYPES_INFO_1W { + LPWSTR pName; +} +alias DATATYPES_INFO_1W* PDATATYPES_INFO_1W, LPDATATYPES_INFO_1W; + +struct JOB_INFO_1A { + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pDatatype; + LPSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; +} +alias JOB_INFO_1A* PJOB_INFO_1A, LPJOB_INFO_1A; + +struct JOB_INFO_1W { + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pDatatype; + LPWSTR pStatus; + DWORD Status; + DWORD Priority; + DWORD Position; + DWORD TotalPages; + DWORD PagesPrinted; + SYSTEMTIME Submitted; +} +alias JOB_INFO_1W* PJOB_INFO_1W, LPJOB_INFO_1W; + +struct JOB_INFO_2A { + DWORD JobId; + LPSTR pPrinterName; + LPSTR pMachineName; + LPSTR pUserName; + LPSTR pDocument; + LPSTR pNotifyName; + LPSTR pDatatype; + LPSTR pPrintProcessor; + LPSTR pParameters; + LPSTR pDriverName; + LPDEVMODEA pDevMode; + LPSTR 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_2A* PJOB_INFO_2A, LPJOB_INFO_2A; + +struct JOB_INFO_2W { + DWORD JobId; + LPWSTR pPrinterName; + LPWSTR pMachineName; + LPWSTR pUserName; + LPWSTR pDocument; + LPWSTR pNotifyName; + LPWSTR pDatatype; + LPWSTR pPrintProcessor; + LPWSTR pParameters; + LPWSTR pDriverName; + LPDEVMODEW pDevMode; + LPWSTR 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_2W* PJOB_INFO_2W, LPJOB_INFO_2W; + +struct DOC_INFO_1A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; +} +alias DOC_INFO_1A* PDOC_INFO_1A, LPDOC_INFO_1A; + +struct DOC_INFO_1W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; +} +alias DOC_INFO_1W* PDOC_INFO_1W, LPDOC_INFO_1W; + +struct DOC_INFO_2A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias DOC_INFO_2A* PDOC_INFO_2A, LPDOC_INFO_2A; + +struct DOC_INFO_2W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias DOC_INFO_2W* PDOC_INFO_2W, LPDOC_INFO_2W; + +struct DRIVER_INFO_1A { + LPSTR pName; +} +alias DRIVER_INFO_1A* PDRIVER_INFO_1A, LPDRIVER_INFO_1A; + +struct DRIVER_INFO_1W { + LPWSTR pName; +} +alias DRIVER_INFO_1W* PDRIVER_INFO_1W, LPDRIVER_INFO_1W; + +struct DRIVER_INFO_2A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; +} +alias DRIVER_INFO_2A* PDRIVER_INFO_2A, LPDRIVER_INFO_2A; + +struct DRIVER_INFO_2W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; +} +alias DRIVER_INFO_2W* PDRIVER_INFO_2W, LPDRIVER_INFO_2W; + +struct DRIVER_INFO_3A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; +} +alias DRIVER_INFO_3A* PDRIVER_INFO_3A, LPDRIVER_INFO_3A; + +struct DRIVER_INFO_3W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; +} +alias DRIVER_INFO_3W* PDRIVER_INFO_3W, LPDRIVER_INFO_3W; + +struct MONITOR_INFO_1A { + LPSTR pName; +} +alias MONITOR_INFO_1A* PMONITOR_INFO_1A, LPMONITOR_INFO_1A; + +struct MONITOR_INFO_1W { + LPWSTR pName; +} +alias MONITOR_INFO_1W* PMONITOR_INFO_1W, LPMONITOR_INFO_1W; + +struct PORT_INFO_1A { + LPSTR pName; +} +alias PORT_INFO_1A* PPORT_INFO_1A, LPPORT_INFO_1A; + +struct PORT_INFO_1W { + LPWSTR pName; +} +alias PORT_INFO_1W* PPORT_INFO_1W, LPPORT_INFO_1W; + +struct MONITOR_INFO_2A { + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; +} +alias MONITOR_INFO_2A* PMONITOR_INFO_2A, LPMONITOR_INFO_2A; + +struct MONITOR_INFO_2W { + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; +} +alias MONITOR_INFO_2W* PMONITOR_INFO_2W, LPMONITOR_INFO_2W; + +struct PORT_INFO_2A { + LPSTR pPortName; + LPSTR pMonitorName; + LPSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias PORT_INFO_2A* PPORT_INFO_2A, LPPORT_INFO_2A; + +struct PORT_INFO_2W { + LPWSTR pPortName; + LPWSTR pMonitorName; + LPWSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias PORT_INFO_2W* PPORT_INFO_2W, LPPORT_INFO_2W; + +struct PORT_INFO_3A { + DWORD dwStatus; + LPSTR pszStatus; + DWORD dwSeverity; +} +alias PORT_INFO_3A* PPORT_INFO_3A, LPPORT_INFO_3A; + +struct PORT_INFO_3W { + DWORD dwStatus; + LPWSTR pszStatus; + DWORD dwSeverity; +} +alias PORT_INFO_3W* PPORT_INFO_3W, LPPORT_INFO_3W; + +struct PRINTER_INFO_1A { + DWORD Flags; + LPSTR pDescription; + LPSTR pName; + LPSTR pComment; +} +alias PRINTER_INFO_1A* PPRINTER_INFO_1A, LPPRINTER_INFO_1A; + +struct PRINTER_INFO_1W { + DWORD Flags; + LPWSTR pDescription; + LPWSTR pName; + LPWSTR pComment; +} +alias PRINTER_INFO_1W* PPRINTER_INFO_1W, LPPRINTER_INFO_1W; + +struct PRINTER_INFO_2A { + LPSTR pServerName; + LPSTR pPrinterName; + LPSTR pShareName; + LPSTR pPortName; + LPSTR pDriverName; + LPSTR pComment; + LPSTR pLocation; + LPDEVMODEA pDevMode; + LPSTR pSepFile; + LPSTR pPrintProcessor; + LPSTR pDatatype; + LPSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; +} +alias PRINTER_INFO_2A* PPRINTER_INFO_2A, LPPRINTER_INFO_2A; + +struct PRINTER_INFO_2W { + LPWSTR pServerName; + LPWSTR pPrinterName; + LPWSTR pShareName; + LPWSTR pPortName; + LPWSTR pDriverName; + LPWSTR pComment; + LPWSTR pLocation; + LPDEVMODEW pDevMode; + LPWSTR pSepFile; + LPWSTR pPrintProcessor; + LPWSTR pDatatype; + LPWSTR pParameters; + PSECURITY_DESCRIPTOR pSecurityDescriptor; + DWORD Attributes; + DWORD Priority; + DWORD DefaultPriority; + DWORD StartTime; + DWORD UntilTime; + DWORD Status; + DWORD cJobs; + DWORD AveragePPM; +} +alias PRINTER_INFO_2W* PPRINTER_INFO_2W, LPPRINTER_INFO_2W; + +struct PRINTER_INFO_3 { + PSECURITY_DESCRIPTOR pSecurityDescriptor; +} +alias PRINTER_INFO_3* PPRINTER_INFO_3, LPPRINTER_INFO_3; + +struct PRINTER_INFO_4A { + LPSTR pPrinterName; + LPSTR pServerName; + DWORD Attributes; +} +alias PRINTER_INFO_4A* PPRINTER_INFO_4A, LPPRINTER_INFO_4A; + +struct PRINTER_INFO_4W { + LPWSTR pPrinterName; + LPWSTR pServerName; + DWORD Attributes; +} +alias PRINTER_INFO_4W* PPRINTER_INFO_4W, LPPRINTER_INFO_4W; + +struct PRINTER_INFO_5A { + LPSTR pPrinterName; + LPSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias PRINTER_INFO_5A* PPRINTER_INFO_5A, LPPRINTER_INFO_5A; + +struct PRINTER_INFO_5W { + LPWSTR pPrinterName; + LPWSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias PRINTER_INFO_5W* PPRINTER_INFO_5W, LPPRINTER_INFO_5W; + +struct PRINTER_INFO_6 { + DWORD dwStatus; +} +alias PRINTER_INFO_6* PPRINTER_INFO_6, LPPRINTER_INFO_6; + +struct PRINTPROCESSOR_INFO_1A { + LPSTR pName; +} +alias PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A, LPPRINTPROCESSOR_INFO_1A; + +struct PRINTPROCESSOR_INFO_1W { + LPWSTR pName; +} +alias PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W, LPPRINTPROCESSOR_INFO_1W; + +struct PRINTER_NOTIFY_INFO_DATA { + WORD Type; + WORD Field; + DWORD Reserved; + DWORD Id; + union _NotifyData { + DWORD[2] adwData; + struct Data { + DWORD cbBuf; + PVOID pBuf; + } + } + _NotifyData NotifyData; +} +alias PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA, LPPRINTER_NOTIFY_INFO_DATA; + +struct PRINTER_NOTIFY_INFO { + DWORD Version; + DWORD Flags; + DWORD Count; + PRINTER_NOTIFY_INFO_DATA[1] aData; +} +alias PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO, LPPRINTER_NOTIFY_INFO; + +struct FORM_INFO_1A { + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias FORM_INFO_1A* PFORM_INFO_1A, LPFORM_INFO_1A; + +struct FORM_INFO_1W { + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias FORM_INFO_1W* PFORM_INFO_1W, LPFORM_INFO_1W; + +struct PRINTER_DEFAULTSA { + LPSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; +} +alias PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA, LPPRINTER_DEFAULTSA; + +struct PRINTER_DEFAULTSW { + LPWSTR pDatatype; + LPDEVMODE pDevMode; + ACCESS_MASK DesiredAccess; +} +alias PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW, LPPRINTER_DEFAULTSW; + +extern (Windows): +BOOL AbortPrinter(HANDLE); +BOOL AddFormA(HANDLE, DWORD, PBYTE); +BOOL AddFormW(HANDLE, DWORD, PBYTE); +BOOL AddJobA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL AddJobW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL AddMonitorA(LPSTR, DWORD, PBYTE); +BOOL AddMonitorW(LPWSTR, DWORD, PBYTE); +BOOL AddPortA(LPSTR, HWND, LPSTR); +BOOL AddPortW(LPWSTR, HWND, LPWSTR); +HANDLE AddPrinterA(LPSTR, DWORD, PBYTE); +HANDLE AddPrinterW(LPWSTR, DWORD, PBYTE); +BOOL AddPrinterConnectionA(LPSTR); +BOOL AddPrinterConnectionW(LPWSTR); +BOOL AddPrinterDriverA(LPSTR, DWORD, PBYTE); +BOOL AddPrinterDriverW(LPWSTR, DWORD, PBYTE); +BOOL AddPrintProcessorA(LPSTR, LPSTR, LPSTR, LPSTR); +BOOL AddPrintProcessorW(LPWSTR, LPWSTR, LPWSTR, LPWSTR); +BOOL AddPrintProvidorA(LPSTR, DWORD, PBYTE); +BOOL AddPrintProvidorW(LPWSTR, DWORD, PBYTE); +LONG AdvancedDocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODE, PDEVMODEA); +LONG AdvancedDocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODE, PDEVMODEW); +BOOL ClosePrinter(HANDLE); +BOOL ConfigurePortA(LPSTR, HWND, LPSTR); +BOOL ConfigurePortW(LPWSTR, HWND, LPWSTR); +HANDLE ConnectToPrinterDlg(HWND, DWORD); +BOOL DeleteFormA(HANDLE, LPSTR); +BOOL DeleteFormW(HANDLE, LPWSTR); +BOOL DeleteMonitorA(LPSTR, LPSTR, LPSTR); +BOOL DeleteMonitorW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePortA(LPSTR, HWND, LPSTR); +BOOL DeletePortW(LPWSTR, HWND, LPWSTR); +BOOL DeletePrinter(HANDLE); +BOOL DeletePrinterConnectionA(LPSTR); +BOOL DeletePrinterConnectionW(LPWSTR); +DWORD DeletePrinterDataA(HANDLE, LPSTR); +DWORD DeletePrinterDataW(HANDLE, LPWSTR); +BOOL DeletePrinterDriverA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrinterDriverW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePrintProcessorA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrintProcessorW(LPWSTR, LPWSTR, LPWSTR); +BOOL DeletePrintProvidorA(LPSTR, LPSTR, LPSTR); +BOOL DeletePrintProvidorW(LPWSTR, LPWSTR, LPWSTR); +LONG DocumentPropertiesA(HWND, HANDLE, LPSTR, PDEVMODEA, PDEVMODEA, DWORD); +LONG DocumentPropertiesW(HWND, HANDLE, LPWSTR, PDEVMODEW, PDEVMODEW, DWORD); +BOOL EndDocPrinter(HANDLE); +BOOL EndPagePrinter(HANDLE); +BOOL EnumFormsA(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumFormsW(HANDLE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumJobsA(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumJobsW(HANDLE, DWORD, DWORD, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumMonitorsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumMonitorsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPortsA(LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPortsW(LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +DWORD EnumPrinterDataA(HANDLE, DWORD, LPSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); +DWORD EnumPrinterDataW(HANDLE, DWORD, LPWSTR, DWORD, PDWORD, PDWORD, PBYTE, DWORD, PDWORD); +BOOL EnumPrinterDriversA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrinterDriversW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintersA(DWORD, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintersW(DWORD, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorDatatypesA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorDatatypesW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorsA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL EnumPrintProcessorsW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +BOOL FindClosePrinterChangeNotification(HANDLE); +HANDLE FindFirstPrinterChangeNotification(HANDLE, DWORD, DWORD, PVOID); +HANDLE FindNextPrinterChangeNotification(HANDLE, PDWORD, PVOID, PVOID*); +BOOL FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO); + +static if (_WIN32_WINNT >= 0x500) { +BOOL GetDefaultPrinterA(LPSTR, LPDWORD); +BOOL GetDefaultPrinterW(LPWSTR, LPDWORD); +} + +BOOL GetFormA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetFormW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetPrinterA(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +BOOL GetPrinterW(HANDLE, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDataA(HANDLE, LPSTR, PDWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDataW(HANDLE, LPWSTR, PDWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverA(HANDLE, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrinterDriverDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrintProcessorDirectoryA(LPSTR, LPSTR, DWORD, PBYTE, DWORD, PDWORD); +DWORD GetPrintProcessorDirectoryW(LPWSTR, LPWSTR, DWORD, PBYTE, DWORD, PDWORD); +BOOL OpenPrinterA(LPSTR, PHANDLE, LPPRINTER_DEFAULTSA); +BOOL OpenPrinterW(LPWSTR, PHANDLE, LPPRINTER_DEFAULTSW); +DWORD PrinterMessageBoxA(HANDLE, DWORD, HWND, LPSTR, LPSTR, DWORD); +DWORD PrinterMessageBoxW(HANDLE, DWORD, HWND, LPWSTR, LPWSTR, DWORD); +BOOL PrinterProperties(HWND, HANDLE); +BOOL ReadPrinter(HANDLE, PVOID, DWORD, PDWORD); +BOOL ResetPrinterA(HANDLE, LPPRINTER_DEFAULTSA); +BOOL ResetPrinterW(HANDLE, LPPRINTER_DEFAULTSW); +BOOL ScheduleJob(HANDLE, DWORD); +BOOL SetFormA(HANDLE, LPSTR, DWORD, PBYTE); +BOOL SetFormW(HANDLE, LPWSTR, DWORD, PBYTE); +BOOL SetJobA(HANDLE, DWORD, DWORD, PBYTE, DWORD); +BOOL SetJobW(HANDLE, DWORD, DWORD, PBYTE, DWORD); +BOOL SetPrinterA(HANDLE, DWORD, PBYTE, DWORD); +BOOL SetPrinterW(HANDLE, DWORD, PBYTE, DWORD); +BOOL SetPrinterDataA(HANDLE, LPSTR, DWORD, PBYTE, DWORD); +BOOL SetPrinterDataW(HANDLE, LPWSTR, DWORD, PBYTE, DWORD); +DWORD StartDocPrinterA(HANDLE, DWORD, PBYTE); +DWORD StartDocPrinterW(HANDLE, DWORD, PBYTE); +BOOL StartPagePrinter(HANDLE); +DWORD WaitForPrinterChange(HANDLE, DWORD); +BOOL WritePrinter(HANDLE, PVOID, DWORD, PDWORD); + +version(Unicode) { + +alias JOB_INFO_1W JOB_INFO_1; +alias JOB_INFO_2W JOB_INFO_2; +alias ADDJOB_INFO_1W ADDJOB_INFO_1; +alias DATATYPES_INFO_1W DATATYPES_INFO_1; +alias MONITOR_INFO_1W MONITOR_INFO_1; +alias MONITOR_INFO_2W MONITOR_INFO_2; +alias DOC_INFO_1W DOC_INFO_1; +alias DOC_INFO_2W DOC_INFO_2; +alias PORT_INFO_1W PORT_INFO_1; +alias PORT_INFO_2W PORT_INFO_2; +alias PORT_INFO_3W PORT_INFO_3; +alias DRIVER_INFO_2W DRIVER_INFO_2; +alias PRINTER_INFO_1W PRINTER_INFO_1; +alias PRINTER_INFO_2W PRINTER_INFO_2; +alias PRINTER_INFO_4W PRINTER_INFO_4; +alias PRINTER_INFO_5W PRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1; +alias FORM_INFO_1W FORM_INFO_1; +alias PRINTER_DEFAULTSW PRINTER_DEFAULTS; + +alias AddFormW AddForm; +alias AddJobW AddJob; +alias AddMonitorW AddMonitor; +alias AddPortW AddPort; +alias AddPrinterW AddPrinter; +alias AddPrinterConnectionW AddPrinterConnection; +alias AddPrinterDriverW AddPrinterDriver; +alias AddPrintProcessorW AddPrintProcessor; +alias AddPrintProvidorW AddPrintProvidor; +alias AdvancedDocumentPropertiesW AdvancedDocumentProperties; +alias ConfigurePortW ConfigurePort; +alias DeleteFormW DeleteForm; +alias DeleteMonitorW DeleteMonitor; +alias DeletePortW DeletePort; +alias DeletePrinterConnectionW DeletePrinterConnection; +alias DeletePrinterDataW DeletePrinterData; +alias DeletePrinterDriverW DeletePrinterDriver; +alias DeletePrintProcessorW DeletePrintProcessor; +alias DeletePrintProvidorW DeletePrintProvidor; +alias DocumentPropertiesW DocumentProperties; +alias EnumFormsW EnumForms; +alias EnumJobsW EnumJobs; +alias EnumMonitorsW EnumMonitors; +alias EnumPortsW EnumPorts; +alias EnumPrinterDataW EnumPrinterData; +alias EnumPrinterDriversW EnumPrinterDrivers; +alias EnumPrintersW EnumPrinters; +alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes; +alias EnumPrintProcessorsW EnumPrintProcessors; + +static if (_WIN32_WINNT >= 0x500) { +alias GetDefaultPrinterW GetDefaultPrinter; +} + +alias GetFormW GetForm; +alias GetJobW GetJob; +alias GetPrinterW GetPrinter; +alias GetPrinterDataW GetPrinterData; +alias GetPrinterDriverW GetPrinterDriver; +alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory; +alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory; +alias OpenPrinterW OpenPrinter; +alias PrinterMessageBoxW PrinterMessageBox; +alias ResetPrinterW ResetPrinter; +alias SetFormW SetForm; +alias SetJobW SetJob; +alias SetPrinterW SetPrinter; +alias SetPrinterDataW SetPrinterData; +alias StartDocPrinterW StartDocPrinter; + +} else { + +alias JOB_INFO_1A JOB_INFO_1; +alias JOB_INFO_2A JOB_INFO_2; +alias ADDJOB_INFO_1A ADDJOB_INFO_1; +alias DATATYPES_INFO_1A DATATYPES_INFO_1; +alias MONITOR_INFO_1A MONITOR_INFO_1; +alias MONITOR_INFO_2A MONITOR_INFO_2; +alias DOC_INFO_1A DOC_INFO_1; +alias DOC_INFO_2A DOC_INFO_2; +alias PORT_INFO_1A PORT_INFO_1; +alias PORT_INFO_2A PORT_INFO_2; +alias PORT_INFO_3A PORT_INFO_3; +alias DRIVER_INFO_2A DRIVER_INFO_2; +alias PRINTER_INFO_1A PRINTER_INFO_1; +alias PRINTER_INFO_2A PRINTER_INFO_2; +alias PRINTER_INFO_4A PRINTER_INFO_4; +alias PRINTER_INFO_5A PRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1; +alias FORM_INFO_1A FORM_INFO_1; +alias PRINTER_DEFAULTSA PRINTER_DEFAULTS; + +alias AddFormA AddForm; +alias AddJobA AddJob; +alias AddMonitorA AddMonitor; +alias AddPortA AddPort; +alias AddPrinterA AddPrinter; +alias AddPrinterConnectionA AddPrinterConnection; +alias AddPrinterDriverA AddPrinterDriver; +alias AddPrintProcessorA AddPrintProcessor; +alias AddPrintProvidorA AddPrintProvidor; +alias AdvancedDocumentPropertiesA AdvancedDocumentProperties; +alias ConfigurePortA ConfigurePort; +alias DeleteFormA DeleteForm; +alias DeleteMonitorA DeleteMonitor; +alias DeletePortA DeletePort; +alias DeletePrinterConnectionA DeletePrinterConnection; +alias DeletePrinterDataA DeletePrinterData; +alias DeletePrinterDriverA DeletePrinterDriver; +alias DeletePrintProcessorA DeletePrintProcessor; +alias DeletePrintProvidorA DeletePrintProvidor; +alias DocumentPropertiesA DocumentProperties; +alias EnumFormsA EnumForms; +alias EnumJobsA EnumJobs; +alias EnumMonitorsA EnumMonitors; +alias EnumPortsA EnumPorts; +alias EnumPrinterDataA EnumPrinterData; +alias EnumPrinterDriversA EnumPrinterDrivers; +alias EnumPrintersA EnumPrinters; +alias EnumPrintProcessorDatatypesA EnumPrintProcessorDatatypes; +alias EnumPrintProcessorsA EnumPrintProcessors; + +static if (_WIN32_WINNT >= 0x500) { +alias GetDefaultPrinterA GetDefaultPrinter; +} + +alias GetFormA GetForm; +alias GetJobA GetJob; +alias GetPrinterA GetPrinter; +alias GetPrinterDataA GetPrinterData; +alias GetPrinterDriverA GetPrinterDriver; +alias GetPrinterDriverDirectoryA GetPrinterDriverDirectory; +alias GetPrintProcessorDirectoryA GetPrintProcessorDirectory; +alias OpenPrinterA OpenPrinter; +alias PrinterMessageBoxA PrinterMessageBox; +alias ResetPrinterA ResetPrinter; +alias SetFormA SetForm; +alias SetJobA SetJob; +alias SetPrinterA SetPrinter; +alias SetPrinterDataA SetPrinterData; +alias StartDocPrinterA StartDocPrinter; +} + +alias JOB_INFO_1* PJOB_INFO_1, LPJOB_INFO_1; +alias JOB_INFO_2* PJOB_INFO_2, LPJOB_INFO_2; +alias ADDJOB_INFO_1* PADDJOB_INFO_1, LPADDJOB_INFO_1; +alias DATATYPES_INFO_1* PDATATYPES_INFO_1, LPDATATYPES_INFO_1; +alias MONITOR_INFO_1* PMONITOR_INFO_1, LPMONITOR_INFO_1; +alias MONITOR_INFO_2* PMONITOR_INFO_2, LPMONITOR_INFO_2; +alias DOC_INFO_1* PDOC_INFO_1, LPDOC_INFO_1; +alias DOC_INFO_2* PDOC_INFO_2, LPDOC_INFO_2; +alias PORT_INFO_1* PPORT_INFO_1, LPPORT_INFO_1; +alias PORT_INFO_2* PPORT_INFO_2, LPPORT_INFO_2; +alias PORT_INFO_3* PPORT_INFO_3, LPPORT_INFO_3; +alias DRIVER_INFO_2* PDRIVER_INFO_2, LPDRIVER_INFO_2; +alias PRINTER_INFO_1* PPRINTER_INFO_1, LPPRINTER_INFO_1; +alias PRINTER_INFO_2* PPRINTER_INFO_2, LPPRINTER_INFO_2; +alias PRINTER_INFO_4* PPRINTER_INFO_4, LPPRINTER_INFO_4; +alias PRINTER_INFO_5* PPRINTER_INFO_5, LPPRINTER_INFO_5; +alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSOR_INFO_1, LPPRINTPROCESSOR_INFO_1; +alias FORM_INFO_1* PFORM_INFO_1, LPFORM_INFO_1; +alias PRINTER_DEFAULTS* PPRINTER_DEFAULTS, LPPRINTER_DEFAULTS; Index: src/win32/winsvc.d ================================================================== --- src/win32/winsvc.d +++ src/win32/winsvc.d @@ -1,430 +1,425 @@ -/***********************************************************************\ -* winsvc.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winsvc; -pragma(lib, "advapi32.lib"); - -private import win32.w32api, win32.windef; - -static assert (_WIN32_WINNT_ONLY, - "win32.winsvc is available only if version WindowsNTonly, WindowsXP, " - "Windows2003 or WindowsVista is set"); - - -// FIXME: check Windows version support - -const TCHAR[] - SERVICES_ACTIVE_DATABASE = "ServicesActive", - SERVICES_FAILED_DATABASE = "ServicesFailed"; - -const TCHAR SC_GROUP_IDENTIFIER = '+'; - -const DWORD - 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; - -const DWORD SERVICE_NO_CHANGE = 0xffffffff; - -enum : DWORD { - SERVICE_STOPPED = 1, - SERVICE_START_PENDING, - SERVICE_STOP_PENDING, - SERVICE_RUNNING, - SERVICE_CONTINUE_PENDING, - SERVICE_PAUSE_PENDING, - SERVICE_PAUSED // = 7 -} - -const DWORD - SERVICE_ACCEPT_STOP = 1, - SERVICE_ACCEPT_PAUSE_CONTINUE = 2, - SERVICE_ACCEPT_SHUTDOWN = 4, - SERVICE_ACCEPT_PARAMCHANGE = 8, - SERVICE_ACCEPT_NETBINDCHANGE = 16, - SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32, - SERVICE_ACCEPT_POWEREVENT = 64, - SERVICE_ACCEPT_SESSIONCHANGE = 128; - -enum : DWORD { - SERVICE_CONTROL_STOP = 1, - SERVICE_CONTROL_PAUSE, - SERVICE_CONTROL_CONTINUE, - SERVICE_CONTROL_INTERROGATE, - SERVICE_CONTROL_SHUTDOWN, - SERVICE_CONTROL_PARAMCHANGE, - SERVICE_CONTROL_NETBINDADD, - SERVICE_CONTROL_NETBINDREMOVE, - SERVICE_CONTROL_NETBINDENABLE, - SERVICE_CONTROL_NETBINDDISABLE, - SERVICE_CONTROL_DEVICEEVENT, - SERVICE_CONTROL_HARDWAREPROFILECHANGE, - SERVICE_CONTROL_POWEREVENT, - SERVICE_CONTROL_SESSIONCHANGE, // = 14 -} - -enum : DWORD { - SERVICE_ACTIVE = 1, - SERVICE_INACTIVE, - SERVICE_STATE_ALL -} - -const DWORD - SERVICE_QUERY_CONFIG = 0x0001, - SERVICE_CHANGE_CONFIG = 0x0002, - SERVICE_QUERY_STATUS = 0x0004, - SERVICE_ENUMERATE_DEPENDENTS = 0x0008, - SERVICE_START = 0x0010, - SERVICE_STOP = 0x0020, - SERVICE_PAUSE_CONTINUE = 0x0040, - SERVICE_INTERROGATE = 0x0080, - SERVICE_USER_DEFINED_CONTROL = 0x0100, - SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; - -// This is not documented on the MSDN site -const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; - -enum : DWORD { - SERVICE_CONFIG_DESCRIPTION = 1, - SERVICE_CONFIG_FAILURE_ACTIONS, - SERVICE_CONFIG_DELAYED_AUTO_START_INFO, - SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, - SERVICE_CONFIG_SERVICE_SID_INFO, - SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, - SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7 -} - -struct SERVICE_STATUS { - DWORD dwServiceType; - DWORD dwCurrentState; - DWORD dwControlsAccepted; - DWORD dwWin32ExitCode; - DWORD dwServiceSpecificExitCode; - DWORD dwCheckPoint; - DWORD dwWaitHint; -} -alias SERVICE_STATUS* LPSERVICE_STATUS; - -struct ENUM_SERVICE_STATUSA { - LPSTR lpServiceName; - LPSTR lpDisplayName; - SERVICE_STATUS ServiceStatus; -} -alias ENUM_SERVICE_STATUSA* LPENUM_SERVICE_STATUSA; - -struct ENUM_SERVICE_STATUSW { - LPWSTR lpServiceName; - LPWSTR lpDisplayName; - SERVICE_STATUS ServiceStatus; -} -alias ENUM_SERVICE_STATUSW* LPENUM_SERVICE_STATUSW; - -struct QUERY_SERVICE_CONFIGA { - DWORD dwServiceType; - DWORD dwStartType; - DWORD dwErrorControl; - LPSTR lpBinaryPathName; - LPSTR lpLoadOrderGroup; - DWORD dwTagId; - LPSTR lpDependencies; - LPSTR lpServiceStartName; - LPSTR lpDisplayName; -} -alias QUERY_SERVICE_CONFIGA* LPQUERY_SERVICE_CONFIGA; - -struct QUERY_SERVICE_CONFIGW { - DWORD dwServiceType; - DWORD dwStartType; - DWORD dwErrorControl; - LPWSTR lpBinaryPathName; - LPWSTR lpLoadOrderGroup; - DWORD dwTagId; - LPWSTR lpDependencies; - LPWSTR lpServiceStartName; - LPWSTR lpDisplayName; -} -alias QUERY_SERVICE_CONFIGW* LPQUERY_SERVICE_CONFIGW; - -struct QUERY_SERVICE_LOCK_STATUSA { - DWORD fIsLocked; - LPSTR lpLockOwner; - DWORD dwLockDuration; -} -alias QUERY_SERVICE_LOCK_STATUSA* LPQUERY_SERVICE_LOCK_STATUSA; - -struct QUERY_SERVICE_LOCK_STATUSW { - DWORD fIsLocked; - LPWSTR lpLockOwner; - DWORD dwLockDuration; -} -alias QUERY_SERVICE_LOCK_STATUSW* LPQUERY_SERVICE_LOCK_STATUSW; - -extern (Windows) { - alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA; - alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW; -} - -struct SERVICE_TABLE_ENTRYA { - LPSTR lpServiceName; - LPSERVICE_MAIN_FUNCTIONA lpServiceProc; -} -alias SERVICE_TABLE_ENTRYA* LPSERVICE_TABLE_ENTRYA; - -struct SERVICE_TABLE_ENTRYW { - LPWSTR lpServiceName; - LPSERVICE_MAIN_FUNCTIONW lpServiceProc; -} -alias SERVICE_TABLE_ENTRYW* LPSERVICE_TABLE_ENTRYW; - -alias HANDLE SC_HANDLE; -alias HANDLE* LPSC_HANDLE; -alias void* SC_LOCK; -alias DWORD SERVICE_STATUS_HANDLE; - -extern (Windows) { - alias void function(DWORD) LPHANDLER_FUNCTION; - alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX; -} - -static if (_WIN32_WINNT >= 0x500) { - struct SERVICE_STATUS_PROCESS { - DWORD dwServiceType; - DWORD dwCurrentState; - DWORD dwControlsAccepted; - DWORD dwWin32ExitCode; - DWORD dwServiceSpecificExitCode; - DWORD dwCheckPoint; - DWORD dwWaitHint; - DWORD dwProcessId; - DWORD dwServiceFlags; - } - alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS; - - enum SC_STATUS_TYPE { - SC_STATUS_PROCESS_INFO = 0 - } - - enum SC_ENUM_TYPE { - SC_ENUM_PROCESS_INFO = 0 - } - - struct ENUM_SERVICE_STATUS_PROCESSA { - LPSTR lpServiceName; - LPSTR lpDisplayName; - SERVICE_STATUS_PROCESS ServiceStatusProcess; - } - alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA; - - struct ENUM_SERVICE_STATUS_PROCESSW { - LPWSTR lpServiceName; - LPWSTR lpDisplayName; - SERVICE_STATUS_PROCESS ServiceStatusProcess; - } - alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW; - - struct SERVICE_DESCRIPTIONA { - LPSTR lpDescription; - } - alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA; - - struct SERVICE_DESCRIPTIONW { - LPWSTR lpDescription; - } - alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW; - - enum SC_ACTION_TYPE { - SC_ACTION_NONE, - SC_ACTION_RESTART, - SC_ACTION_REBOOT, - SC_ACTION_RUN_COMMAND - } - - struct SC_ACTION { - SC_ACTION_TYPE Type; - DWORD Delay; - } - alias SC_ACTION* LPSC_ACTION; - - struct SERVICE_FAILURE_ACTIONSA { - DWORD dwResetPeriod; - LPSTR lpRebootMsg; - LPSTR lpCommand; - DWORD cActions; - SC_ACTION* lpsaActions; - } - alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA; - - struct SERVICE_FAILURE_ACTIONSW { - DWORD dwResetPeriod; - LPWSTR lpRebootMsg; - LPWSTR lpCommand; - DWORD cActions; - SC_ACTION* lpsaActions; - } - alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW; -} - -extern (Windows) { - BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR, - LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR); - BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR, - LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL CloseServiceHandle(SC_HANDLE); - BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS); - SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD, - DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR); - SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, - DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR); - BOOL DeleteService(SC_HANDLE); - BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA, - DWORD, PDWORD, PDWORD); - BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW, - DWORD, PDWORD, PDWORD); - BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA, - DWORD, PDWORD, PDWORD, PDWORD); - BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW, - DWORD, PDWORD, PDWORD, PDWORD); - BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); - BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); - BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); - BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); - SC_LOCK LockServiceDatabase(SC_HANDLE); - BOOL NotifyBootConfigStatus(BOOL); - SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD); - SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD); - SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD); - SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD); - BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD, - PDWORD); - BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD, - PDWORD); - BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA, - DWORD, PDWORD); - BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW, - DWORD, PDWORD); - BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR, DWORD, LPDWORD); - BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR, - LPHANDLER_FUNCTION); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR, - LPHANDLER_FUNCTION); - BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, - PSECURITY_DESCRIPTOR); - BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS); - BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*); - BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*); - BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); - BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); - BOOL UnlockServiceDatabase(SC_LOCK); - - static if (_WIN32_WINNT >= 0x500) { - BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, - DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR); - BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, - DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR); - BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); - BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); - BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD, - LPDWORD); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR, - LPHANDLER_FUNCTION_EX, LPVOID); - SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR, - LPHANDLER_FUNCTION_EX, LPVOID); - } - - static if (_WIN32_WINNT >= 0x501) { - BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID); - BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID); - } -} - -version (Unicode) { - alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; - alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; - alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; - alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; - alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; - alias ChangeServiceConfigW ChangeServiceConfig; - alias CreateServiceW CreateService; - alias EnumDependentServicesW EnumDependentServices; - alias EnumServicesStatusW EnumServicesStatus; - alias GetServiceDisplayNameW GetServiceDisplayName; - alias GetServiceKeyNameW GetServiceKeyName; - alias OpenSCManagerW OpenSCManager; - alias OpenServiceW OpenService; - alias QueryServiceConfigW QueryServiceConfig; - alias QueryServiceLockStatusW QueryServiceLockStatus; - alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler; - alias StartServiceW StartService; - alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher; - - static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; - alias EnumServicesStatusExW EnumServicesStatusEx; - alias QueryServiceConfig2W QueryServiceConfig2; - alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ChangeServiceConfig2W ChangeServiceConfig2; - } - -} else { - alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; - alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; - alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; - alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; - alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; - alias ChangeServiceConfigA ChangeServiceConfig; - alias CreateServiceA CreateService; - alias EnumDependentServicesA EnumDependentServices; - alias EnumServicesStatusA EnumServicesStatus; - alias GetServiceDisplayNameA GetServiceDisplayName; - alias GetServiceKeyNameA GetServiceKeyName; - alias OpenSCManagerA OpenSCManager; - alias OpenServiceA OpenService; - alias QueryServiceConfigA QueryServiceConfig; - alias QueryServiceLockStatusA QueryServiceLockStatus; - alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler; - alias StartServiceA StartService; - alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher; - - static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; - alias EnumServicesStatusExA EnumServicesStatusEx; - alias QueryServiceConfig2A QueryServiceConfig2; - alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx; - } - - static if (_WIN32_WINNT >= 0x501) { - alias ChangeServiceConfig2A ChangeServiceConfig2; - } - -} - -alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS; -alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG; -alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS; -alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY; - -static if (_WIN32_WINNT >= 0x500) { - alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS; - alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION; - alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS; -} +/***********************************************************************\ +* winsvc.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winsvc; +pragma(lib, "advapi32"); + +private import win32.w32api, win32.windef; + +// FIXME: check Windows version support + +const TCHAR[] + SERVICES_ACTIVE_DATABASE = "ServicesActive", + SERVICES_FAILED_DATABASE = "ServicesFailed"; + +const TCHAR SC_GROUP_IDENTIFIER = '+'; + +const DWORD + 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; + +const DWORD SERVICE_NO_CHANGE = 0xffffffff; + +enum : DWORD { + SERVICE_STOPPED = 1, + SERVICE_START_PENDING, + SERVICE_STOP_PENDING, + SERVICE_RUNNING, + SERVICE_CONTINUE_PENDING, + SERVICE_PAUSE_PENDING, + SERVICE_PAUSED // = 7 +} + +const DWORD + SERVICE_ACCEPT_STOP = 1, + SERVICE_ACCEPT_PAUSE_CONTINUE = 2, + SERVICE_ACCEPT_SHUTDOWN = 4, + SERVICE_ACCEPT_PARAMCHANGE = 8, + SERVICE_ACCEPT_NETBINDCHANGE = 16, + SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32, + SERVICE_ACCEPT_POWEREVENT = 64, + SERVICE_ACCEPT_SESSIONCHANGE = 128; + +enum : DWORD { + SERVICE_CONTROL_STOP = 1, + SERVICE_CONTROL_PAUSE, + SERVICE_CONTROL_CONTINUE, + SERVICE_CONTROL_INTERROGATE, + SERVICE_CONTROL_SHUTDOWN, + SERVICE_CONTROL_PARAMCHANGE, + SERVICE_CONTROL_NETBINDADD, + SERVICE_CONTROL_NETBINDREMOVE, + SERVICE_CONTROL_NETBINDENABLE, + SERVICE_CONTROL_NETBINDDISABLE, + SERVICE_CONTROL_DEVICEEVENT, + SERVICE_CONTROL_HARDWAREPROFILECHANGE, + SERVICE_CONTROL_POWEREVENT, + SERVICE_CONTROL_SESSIONCHANGE, // = 14 +} + +enum : DWORD { + SERVICE_ACTIVE = 1, + SERVICE_INACTIVE, + SERVICE_STATE_ALL +} + +const DWORD + SERVICE_QUERY_CONFIG = 0x0001, + SERVICE_CHANGE_CONFIG = 0x0002, + SERVICE_QUERY_STATUS = 0x0004, + SERVICE_ENUMERATE_DEPENDENTS = 0x0008, + SERVICE_START = 0x0010, + SERVICE_STOP = 0x0020, + SERVICE_PAUSE_CONTINUE = 0x0040, + SERVICE_INTERROGATE = 0x0080, + SERVICE_USER_DEFINED_CONTROL = 0x0100, + SERVICE_ALL_ACCESS = 0x01FF | STANDARD_RIGHTS_REQUIRED; + +// This is not documented on the MSDN site +const SERVICE_RUNS_IN_SYSTEM_PROCESS = 1; + +enum : DWORD { + SERVICE_CONFIG_DESCRIPTION = 1, + SERVICE_CONFIG_FAILURE_ACTIONS, + SERVICE_CONFIG_DELAYED_AUTO_START_INFO, + SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, + SERVICE_CONFIG_SERVICE_SID_INFO, + SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO, + SERVICE_CONFIG_PRESHUTDOWN_INFO // = 7 +} + +struct SERVICE_STATUS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; +} +alias SERVICE_STATUS* LPSERVICE_STATUS; + +struct ENUM_SERVICE_STATUSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; +} +alias ENUM_SERVICE_STATUSA* LPENUM_SERVICE_STATUSA; + +struct ENUM_SERVICE_STATUSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS ServiceStatus; +} +alias ENUM_SERVICE_STATUSW* LPENUM_SERVICE_STATUSW; + +struct QUERY_SERVICE_CONFIGA { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPSTR lpBinaryPathName; + LPSTR lpLoadOrderGroup; + DWORD dwTagId; + LPSTR lpDependencies; + LPSTR lpServiceStartName; + LPSTR lpDisplayName; +} +alias QUERY_SERVICE_CONFIGA* LPQUERY_SERVICE_CONFIGA; + +struct QUERY_SERVICE_CONFIGW { + DWORD dwServiceType; + DWORD dwStartType; + DWORD dwErrorControl; + LPWSTR lpBinaryPathName; + LPWSTR lpLoadOrderGroup; + DWORD dwTagId; + LPWSTR lpDependencies; + LPWSTR lpServiceStartName; + LPWSTR lpDisplayName; +} +alias QUERY_SERVICE_CONFIGW* LPQUERY_SERVICE_CONFIGW; + +struct QUERY_SERVICE_LOCK_STATUSA { + DWORD fIsLocked; + LPSTR lpLockOwner; + DWORD dwLockDuration; +} +alias QUERY_SERVICE_LOCK_STATUSA* LPQUERY_SERVICE_LOCK_STATUSA; + +struct QUERY_SERVICE_LOCK_STATUSW { + DWORD fIsLocked; + LPWSTR lpLockOwner; + DWORD dwLockDuration; +} +alias QUERY_SERVICE_LOCK_STATUSW* LPQUERY_SERVICE_LOCK_STATUSW; + +extern (Windows) { + alias void function(DWORD, LPSTR*) LPSERVICE_MAIN_FUNCTIONA; + alias void function(DWORD, LPWSTR*) LPSERVICE_MAIN_FUNCTIONW; +} + +struct SERVICE_TABLE_ENTRYA { + LPSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONA lpServiceProc; +} +alias SERVICE_TABLE_ENTRYA* LPSERVICE_TABLE_ENTRYA; + +struct SERVICE_TABLE_ENTRYW { + LPWSTR lpServiceName; + LPSERVICE_MAIN_FUNCTIONW lpServiceProc; +} +alias SERVICE_TABLE_ENTRYW* LPSERVICE_TABLE_ENTRYW; + +mixin DECLARE_HANDLE!("SC_HANDLE"); +alias SC_HANDLE* LPSC_HANDLE; +alias void* SC_LOCK; +mixin DECLARE_HANDLE!("SERVICE_STATUS_HANDLE"); + +extern (Windows) { + alias void function(DWORD) LPHANDLER_FUNCTION; + alias DWORD function(DWORD, DWORD, LPVOID, LPVOID) LPHANDLER_FUNCTION_EX; +} + +static if (_WIN32_WINNT >= 0x500) { + struct SERVICE_STATUS_PROCESS { + DWORD dwServiceType; + DWORD dwCurrentState; + DWORD dwControlsAccepted; + DWORD dwWin32ExitCode; + DWORD dwServiceSpecificExitCode; + DWORD dwCheckPoint; + DWORD dwWaitHint; + DWORD dwProcessId; + DWORD dwServiceFlags; + } + alias SERVICE_STATUS_PROCESS* LPSERVICE_STATUS_PROCESS; + + enum SC_STATUS_TYPE { + SC_STATUS_PROCESS_INFO = 0 + } + + enum SC_ENUM_TYPE { + SC_ENUM_PROCESS_INFO = 0 + } + + struct ENUM_SERVICE_STATUS_PROCESSA { + LPSTR lpServiceName; + LPSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } + alias ENUM_SERVICE_STATUS_PROCESSA* LPENUM_SERVICE_STATUS_PROCESSA; + + struct ENUM_SERVICE_STATUS_PROCESSW { + LPWSTR lpServiceName; + LPWSTR lpDisplayName; + SERVICE_STATUS_PROCESS ServiceStatusProcess; + } + alias ENUM_SERVICE_STATUS_PROCESSW* LPENUM_SERVICE_STATUS_PROCESSW; + + struct SERVICE_DESCRIPTIONA { + LPSTR lpDescription; + } + alias SERVICE_DESCRIPTIONA* LPSERVICE_DESCRIPTIONA; + + struct SERVICE_DESCRIPTIONW { + LPWSTR lpDescription; + } + alias SERVICE_DESCRIPTIONW* LPSERVICE_DESCRIPTIONW; + + enum SC_ACTION_TYPE { + SC_ACTION_NONE, + SC_ACTION_RESTART, + SC_ACTION_REBOOT, + SC_ACTION_RUN_COMMAND + } + + struct SC_ACTION { + SC_ACTION_TYPE Type; + DWORD Delay; + } + alias SC_ACTION* LPSC_ACTION; + + struct SERVICE_FAILURE_ACTIONSA { + DWORD dwResetPeriod; + LPSTR lpRebootMsg; + LPSTR lpCommand; + DWORD cActions; + SC_ACTION* lpsaActions; + } + alias SERVICE_FAILURE_ACTIONSA* LPSERVICE_FAILURE_ACTIONSA; + + struct SERVICE_FAILURE_ACTIONSW { + DWORD dwResetPeriod; + LPWSTR lpRebootMsg; + LPWSTR lpCommand; + DWORD cActions; + SC_ACTION* lpsaActions; + } + alias SERVICE_FAILURE_ACTIONSW* LPSERVICE_FAILURE_ACTIONSW; +} + +extern (Windows) { + BOOL ChangeServiceConfigA(SC_HANDLE, DWORD, DWORD, DWORD, LPCSTR, + LPCSTR, LPDWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR); + BOOL ChangeServiceConfigW(SC_HANDLE, DWORD, DWORD, DWORD, LPCWSTR, + LPCWSTR, LPDWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL CloseServiceHandle(SC_HANDLE); + BOOL ControlService(SC_HANDLE, DWORD, LPSERVICE_STATUS); + SC_HANDLE CreateServiceA(SC_HANDLE, LPCSTR, LPCSTR, DWORD, DWORD, + DWORD, DWORD, LPCSTR, LPCSTR, PDWORD, LPCSTR, LPCSTR, LPCSTR); + SC_HANDLE CreateServiceW(SC_HANDLE, LPCWSTR, LPCWSTR, DWORD, DWORD, + DWORD, DWORD, LPCWSTR, LPCWSTR, PDWORD, LPCWSTR, LPCWSTR, LPCWSTR); + BOOL DeleteService(SC_HANDLE); + BOOL EnumDependentServicesA(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSA, + DWORD, PDWORD, PDWORD); + BOOL EnumDependentServicesW(SC_HANDLE, DWORD, LPENUM_SERVICE_STATUSW, + DWORD, PDWORD, PDWORD); + BOOL EnumServicesStatusA(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSA, + DWORD, PDWORD, PDWORD, PDWORD); + BOOL EnumServicesStatusW(SC_HANDLE, DWORD, DWORD, LPENUM_SERVICE_STATUSW, + DWORD, PDWORD, PDWORD, PDWORD); + BOOL GetServiceDisplayNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); + BOOL GetServiceDisplayNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); + BOOL GetServiceKeyNameA(SC_HANDLE, LPCSTR, LPSTR, PDWORD); + BOOL GetServiceKeyNameW(SC_HANDLE, LPCWSTR, LPWSTR, PDWORD); + SC_LOCK LockServiceDatabase(SC_HANDLE); + BOOL NotifyBootConfigStatus(BOOL); + SC_HANDLE OpenSCManagerA(LPCSTR, LPCSTR, DWORD); + SC_HANDLE OpenSCManagerW(LPCWSTR, LPCWSTR, DWORD); + SC_HANDLE OpenServiceA(SC_HANDLE, LPCSTR, DWORD); + SC_HANDLE OpenServiceW(SC_HANDLE, LPCWSTR, DWORD); + BOOL QueryServiceConfigA(SC_HANDLE, LPQUERY_SERVICE_CONFIGA, DWORD, + PDWORD); + BOOL QueryServiceConfigW(SC_HANDLE, LPQUERY_SERVICE_CONFIGW, DWORD, + PDWORD); + BOOL QueryServiceLockStatusA(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSA, + DWORD, PDWORD); + BOOL QueryServiceLockStatusW(SC_HANDLE, LPQUERY_SERVICE_LOCK_STATUSW, + DWORD, PDWORD); + BOOL QueryServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR, DWORD, LPDWORD); + BOOL QueryServiceStatus(SC_HANDLE, LPSERVICE_STATUS); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerA(LPCSTR, + LPHANDLER_FUNCTION); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(LPCWSTR, + LPHANDLER_FUNCTION); + BOOL SetServiceObjectSecurity(SC_HANDLE, SECURITY_INFORMATION, + PSECURITY_DESCRIPTOR); + BOOL SetServiceStatus(SERVICE_STATUS_HANDLE, LPSERVICE_STATUS); + BOOL StartServiceA(SC_HANDLE, DWORD, LPCSTR*); + BOOL StartServiceW(SC_HANDLE, DWORD, LPCWSTR*); + BOOL StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA); + BOOL StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW); + BOOL UnlockServiceDatabase(SC_LOCK); + + static if (_WIN32_WINNT >= 0x500) { + BOOL EnumServicesStatusExA(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, + DWORD, LPDWORD, LPDWORD, LPDWORD, LPCSTR); + BOOL EnumServicesStatusExW(SC_HANDLE, SC_ENUM_TYPE, DWORD, DWORD, LPBYTE, + DWORD, LPDWORD, LPDWORD, LPDWORD, LPCWSTR); + BOOL QueryServiceConfig2A(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); + BOOL QueryServiceConfig2W(SC_HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); + BOOL QueryServiceStatusEx(SC_HANDLE, SC_STATUS_TYPE, LPBYTE, DWORD, + LPDWORD); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExA(LPCSTR, + LPHANDLER_FUNCTION_EX, LPVOID); + SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerExW(LPCWSTR, + LPHANDLER_FUNCTION_EX, LPVOID); + } + + static if (_WIN32_WINNT >= 0x501) { + BOOL ChangeServiceConfig2A(SC_HANDLE, DWORD, LPVOID); + BOOL ChangeServiceConfig2W(SC_HANDLE, DWORD, LPVOID); + } +} + +version (Unicode) { + alias ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS; + alias QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG; + alias QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS; + alias LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION; + alias SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY; + alias ChangeServiceConfigW ChangeServiceConfig; + alias CreateServiceW CreateService; + alias EnumDependentServicesW EnumDependentServices; + alias EnumServicesStatusW EnumServicesStatus; + alias GetServiceDisplayNameW GetServiceDisplayName; + alias GetServiceKeyNameW GetServiceKeyName; + alias OpenSCManagerW OpenSCManager; + alias OpenServiceW OpenService; + alias QueryServiceConfigW QueryServiceConfig; + alias QueryServiceLockStatusW QueryServiceLockStatus; + alias RegisterServiceCtrlHandlerW RegisterServiceCtrlHandler; + alias StartServiceW StartService; + alias StartServiceCtrlDispatcherW StartServiceCtrlDispatcher; + + static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS; + alias EnumServicesStatusExW EnumServicesStatusEx; + alias QueryServiceConfig2W QueryServiceConfig2; + alias RegisterServiceCtrlHandlerExW RegisterServiceCtrlHandlerEx; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ChangeServiceConfig2W ChangeServiceConfig2; + } + +} else { + alias ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS; + alias QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG; + alias QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS; + alias LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION; + alias SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY; + alias ChangeServiceConfigA ChangeServiceConfig; + alias CreateServiceA CreateService; + alias EnumDependentServicesA EnumDependentServices; + alias EnumServicesStatusA EnumServicesStatus; + alias GetServiceDisplayNameA GetServiceDisplayName; + alias GetServiceKeyNameA GetServiceKeyName; + alias OpenSCManagerA OpenSCManager; + alias OpenServiceA OpenService; + alias QueryServiceConfigA QueryServiceConfig; + alias QueryServiceLockStatusA QueryServiceLockStatus; + alias RegisterServiceCtrlHandlerA RegisterServiceCtrlHandler; + alias StartServiceA StartService; + alias StartServiceCtrlDispatcherA StartServiceCtrlDispatcher; + + static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS; + alias EnumServicesStatusExA EnumServicesStatusEx; + alias QueryServiceConfig2A QueryServiceConfig2; + alias RegisterServiceCtrlHandlerExA RegisterServiceCtrlHandlerEx; + } + + static if (_WIN32_WINNT >= 0x501) { + alias ChangeServiceConfig2A ChangeServiceConfig2; + } + +} + +alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS; +alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG; +alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS; +alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY; + +static if (_WIN32_WINNT >= 0x500) { + alias ENUM_SERVICE_STATUS_PROCESS* LPENUM_SERVICE_STATUS_PROCESS; + alias SERVICE_DESCRIPTION* LPSERVICE_DESCRIPTION; + alias SERVICE_FAILURE_ACTIONS* LPSERVICE_FAILURE_ACTIONS; +} Index: src/win32/winuser.d ================================================================== --- src/win32/winuser.d +++ src/win32/winuser.d @@ -1,4767 +1,4834 @@ -/***********************************************************************\ -* winuser.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winuser; -pragma(lib, "user32.lib"); - -// Conversion Notes: -// The following macros were for win16 only, and are not included in this file: -//#define EnumTaskWindows(h, f, p) EnumThreadWindows((DWORD)h, f, p) -//#define PostAppMessageA(t, m, w, l) PostThreadMessageA((DWORD)t, m, w, l) -//#define PostAppMessageW(t, m, w, l) PostThreadMessageW((DWORD)t, m, w, l) -//#define GetSysModalWindow() (NULL) -//#define SetSysModalWindow(h) (NULL) -//#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL)) -//#define DefHookProc(c, p, lp, h) CallNextHookEx((HHOOK)*h, c, p, lp) - -private import win32.w32api, win32.winbase, win32.wingdi; -private import win32.windef; // for HMONITOR - -// FIXME: clean up Windows version support - -template MAKEINTATOM_T(int i) { - const LPTSTR MAKEINTATOM_T = cast(LPTSTR) i; -} - -const WC_DIALOG = MAKEINTATOM_T!(0x8002); - -const FVIRTKEY = 1; -const FNOINVERT = 2; -const FSHIFT = 4; -const FCONTROL = 8; -const FALT = 16; - -const ATF_TIMEOUTON = 1; -const ATF_ONOFFFEEDBACK = 2; -const ATF_AVAILABLE = 4; // May be obsolete. Not in recent MS docs. - -const WH_MIN = -1; -const WH_MSGFILTER = -1; -const WH_JOURNALRECORD = 0; -const WH_JOURNALPLAYBACK = 1; -const WH_KEYBOARD = 2; -const WH_GETMESSAGE = 3; -const WH_CALLWNDPROC = 4; -const WH_CBT = 5; -const WH_SYSMSGFILTER = 6; -const WH_MOUSE = 7; -const WH_HARDWARE = 8; -const WH_DEBUG = 9; -const WH_SHELL = 10; -const WH_FOREGROUNDIDLE = 11; -const WH_CALLWNDPROCRET = 12; -const WH_KEYBOARD_LL = 13; -const WH_MOUSE_LL = 14; -const WH_MAX = 14; -const WH_MINHOOK = WH_MIN; -const WH_MAXHOOK = WH_MAX; - -enum { - HC_ACTION = 0, - HC_GETNEXT, - HC_SKIP, - HC_NOREMOVE, // = 3 - HC_NOREM = HC_NOREMOVE, - HC_SYSMODALON, - HC_SYSMODALOFF -} - -enum { - HCBT_MOVESIZE = 0, - HCBT_MINMAX, - HCBT_QS, - HCBT_CREATEWND, - HCBT_DESTROYWND, - HCBT_ACTIVATE, - HCBT_CLICKSKIPPED, - HCBT_KEYSKIPPED, - HCBT_SYSCOMMAND, - HCBT_SETFOCUS // = 9 -} - -enum { - CF_TEXT = 1, - CF_BITMAP, - CF_METAFILEPICT, - CF_SYLK, - CF_DIF, - CF_TIFF, - CF_OEMTEXT, - CF_DIB, - CF_PALETTE, - CF_PENDATA, - CF_RIFF, - CF_WAVE, - CF_UNICODETEXT, - CF_ENHMETAFILE, - CF_HDROP, - CF_LOCALE, - CF_MAX, // = 17 - CF_OWNERDISPLAY = 128, - CF_DSPTEXT, - CF_DSPBITMAP, - CF_DSPMETAFILEPICT, // = 131 - CF_DSPENHMETAFILE = 142, - CF_PRIVATEFIRST = 512, - CF_PRIVATELAST = 767, - CF_GDIOBJFIRST = 768, - CF_GDIOBJLAST = 1023 -} - -const HKL_PREV = 0; -const HKL_NEXT = 1; - -const KLF_ACTIVATE = 1; -const KLF_SUBSTITUTE_OK = 2; -const KLF_UNLOADPREVIOUS = 4; -const KLF_REORDER = 8; -const KLF_REPLACELANG = 16; -const KLF_NOTELLSHELL = 128; -const KLF_SETFORPROCESS = 256; -const KL_NAMELENGTH = 9; - -const MF_ENABLED = 0; -const MF_GRAYED = 1; -const MF_DISABLED = 2; -const MF_BITMAP = 4; -const MF_CHECKED = 8; -const MF_MENUBARBREAK = 32; -const MF_MENUBREAK = 64; -const MF_OWNERDRAW = 256; -const MF_POPUP = 16; -const MF_SEPARATOR = 0x800; -const MF_STRING = 0; -const MF_UNCHECKED = 0; -const MF_DEFAULT = 4096; -const MF_SYSMENU = 0x2000; -const MF_HELP = 0x4000; -const MF_END = 128; -const MF_RIGHTJUSTIFY = 0x4000; -const MF_MOUSESELECT = 0x8000; -const MF_INSERT = 0; -const MF_CHANGE = 128; -const MF_APPEND = 256; -const MF_DELETE = 512; -const MF_REMOVE = 4096; -const MF_USECHECKBITMAPS = 512; -const MF_UNHILITE = 0; -const MF_HILITE = 128; - -// Also defined in dbt.h -const BSM_ALLCOMPONENTS = 0; -const BSM_VXDS = 1; -const BSM_NETDRIVER = 2; -const BSM_INSTALLABLEDRIVERS = 4; -const BSM_APPLICATIONS = 8; -const BSM_ALLDESKTOPS = 16; - -const BSF_QUERY = 0x00000001; -const BSF_IGNORECURRENTTASK = 0x00000002; -const BSF_FLUSHDISK = 0x00000004; -const BSF_NOHANG = 0x00000008; -const BSF_POSTMESSAGE = 0x00000010; -const BSF_FORCEIFHUNG = 0x00000020; -const BSF_NOTIMEOUTIFNOTHUNG = 0x00000040; - -static if (_WIN32_WINNT >= 0x500) { - const BSF_ALLOWSFW = 0x00000080; - const BSF_SENDNOTIFYMESSAGE = 0x00000100; -} -static if (_WIN32_WINNT >= 0x501) { - const BSF_RETURNHDESK = 0x00000200; - const BSF_LUID = 0x00000400; -} - -const BROADCAST_QUERY_DENY = 1112363332; -const DWORD ENUM_CURRENT_SETTINGS = -1; -const DWORD ENUM_REGISTRY_SETTINGS = -2; - -const CDS_UPDATEREGISTRY = 1; -const CDS_TEST = 2; -const CDS_FULLSCREEN = 4; -const CDS_GLOBAL = 8; -const CDS_SET_PRIMARY = 16; -const CDS_NORESET = 0x10000000; -const CDS_SETRECT = 0x20000000; -const CDS_RESET = 0x40000000; - -const DISP_CHANGE_RESTART = 1; -const DISP_CHANGE_SUCCESSFUL = 0; -const DISP_CHANGE_FAILED = -1; -const DISP_CHANGE_BADMODE = -2; -const DISP_CHANGE_NOTUPDATED = -3; -const DISP_CHANGE_BADFLAGS = -4; -const DISP_CHANGE_BADPARAM = -5; - -const BST_UNCHECKED = 0; -const BST_CHECKED = 1; -const BST_INDETERMINATE = 2; -const BST_PUSHED = 4; -const BST_FOCUS = 8; - -const MF_BYCOMMAND = 0; -const MF_BYPOSITION = 1024; -// [Redefined] MF_UNCHECKED=0 -// [Redefined] MF_HILITE=128 -// [Redefined] MF_UNHILITE=0 - -const CWP_ALL = 0; -const CWP_SKIPINVISIBLE = 1; -const CWP_SKIPDISABLED = 2; -const CWP_SKIPTRANSPARENT = 4; - -const IMAGE_BITMAP=0; -const IMAGE_ICON=1; -const IMAGE_CURSOR=2; -const IMAGE_ENHMETAFILE=3; - -const DF_ALLOWOTHERACCOUNTHOOK = 1; - -const DESKTOP_READOBJECTS = 1; -const DESKTOP_CREATEWINDOW = 2; -const DESKTOP_CREATEMENU = 4; -const DESKTOP_HOOKCONTROL = 8; -const DESKTOP_JOURNALRECORD = 16; -const DESKTOP_JOURNALPLAYBACK = 32; -const DESKTOP_ENUMERATE = 64; -const DESKTOP_WRITEOBJECTS = 128; -const DESKTOP_SWITCHDESKTOP = 256; - -const CW_USEDEFAULT = 0x80000000; - -enum { - WS_OVERLAPPED = 0, - WS_TILED = WS_OVERLAPPED, - WS_MAXIMIZEBOX = 0x00010000, - WS_MINIMIZEBOX = 0x00020000, - WS_TABSTOP = 0x00010000, - WS_GROUP = 0x00020000, - WS_THICKFRAME = 0x00040000, - WS_SIZEBOX = WS_THICKFRAME, - WS_SYSMENU = 0x00080000, - WS_HSCROLL = 0x00100000, - WS_VSCROLL = 0x00200000, - WS_DLGFRAME = 0x00400000, - WS_BORDER = 0x00800000, - WS_CAPTION = 0x00c00000, - WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, - WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, - WS_MAXIMIZE = 0x01000000, - WS_CLIPCHILDREN = 0x02000000, - WS_CLIPSIBLINGS = 0x04000000, - WS_DISABLED = 0x08000000, - WS_VISIBLE = 0x10000000, - WS_MINIMIZE = 0x20000000, - WS_ICONIC = WS_MINIMIZE, - WS_CHILD = 0x40000000, - WS_CHILDWINDOW = 0x40000000, - WS_POPUP = 0x80000000, - WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_SYSMENU, -} - -const MDIS_ALLCHILDSTYLES = 1; - -const BS_3STATE = 5; -const BS_AUTO3STATE = 6; -const BS_AUTOCHECKBOX = 3; -const BS_AUTORADIOBUTTON = 9; -const BS_BITMAP = 128; -const BS_BOTTOM = 0x800; -const BS_CENTER = 0x300; -const BS_CHECKBOX = 2; -const BS_DEFPUSHBUTTON = 1; -const BS_GROUPBOX = 7; -const BS_ICON = 64; -const BS_LEFT = 256; -const BS_LEFTTEXT = 32; -const BS_MULTILINE = 0x2000; -const BS_NOTIFY = 0x4000; -const BS_OWNERDRAW = 0xb; -const BS_PUSHBUTTON = 0; -const BS_PUSHLIKE = 4096; -const BS_RADIOBUTTON = 4; -const BS_RIGHT = 512; -const BS_RIGHTBUTTON = 32; -const BS_TEXT = 0; -const BS_TOP = 0x400; -const BS_USERBUTTON = 8; -const BS_VCENTER = 0xc00; -const BS_FLAT = 0x8000; - -const CBS_AUTOHSCROLL = 64; -const CBS_DISABLENOSCROLL = 0x800; -const CBS_DROPDOWN = 2; -const CBS_DROPDOWNLIST = 3; -const CBS_HASSTRINGS = 512; -const CBS_LOWERCASE = 0x4000; -const CBS_NOINTEGRALHEIGHT = 0x400; -const CBS_OEMCONVERT = 128; -const CBS_OWNERDRAWFIXED = 16; -const CBS_OWNERDRAWVARIABLE = 32; -const CBS_SIMPLE = 1; -const CBS_SORT = 256; -const CBS_UPPERCASE = 0x2000; - -const ES_AUTOHSCROLL = 128; -const ES_AUTOVSCROLL = 64; -const ES_CENTER = 1; -const ES_LEFT = 0; -const ES_LOWERCASE = 16; -const ES_MULTILINE = 4; -const ES_NOHIDESEL = 256; -const ES_NUMBER = 0x2000; -const ES_OEMCONVERT = 0x400; -const ES_PASSWORD = 32; -const ES_READONLY = 0x800; -const ES_RIGHT = 2; -const ES_UPPERCASE = 8; -const ES_WANTRETURN = 4096; - -const LBS_DISABLENOSCROLL = 4096; -const LBS_EXTENDEDSEL = 0x800; -const LBS_HASSTRINGS = 64; -const LBS_MULTICOLUMN = 512; -const LBS_MULTIPLESEL = 8; -const LBS_NODATA = 0x2000; -const LBS_NOINTEGRALHEIGHT = 256; -const LBS_NOREDRAW = 4; -const LBS_NOSEL = 0x4000; -const LBS_NOTIFY = 1; -const LBS_OWNERDRAWFIXED = 16; -const LBS_OWNERDRAWVARIABLE = 32; -const LBS_SORT = 2; -const LBS_STANDARD = 0xa00003; -const LBS_USETABSTOPS = 128; -const LBS_WANTKEYBOARDINPUT = 0x400; - -const SBS_BOTTOMALIGN = 4; -const SBS_HORZ = 0; -const SBS_LEFTALIGN = 2; -const SBS_RIGHTALIGN = 4; -const SBS_SIZEBOX = 8; -const SBS_SIZEBOXBOTTOMRIGHTALIGN = 4; -const SBS_SIZEBOXTOPLEFTALIGN = 2; -const SBS_SIZEGRIP = 16; -const SBS_TOPALIGN = 2; -const SBS_VERT = 1; - -const SS_BITMAP = 14; -const SS_BLACKFRAME = 7; -const SS_BLACKRECT = 4; -const SS_CENTER = 1; -const SS_CENTERIMAGE = 512; -const SS_ENHMETAFILE = 15; -const SS_ETCHEDFRAME = 18; -const SS_ETCHEDHORZ = 16; -const SS_ETCHEDVERT = 17; -const SS_GRAYFRAME = 8; -const SS_GRAYRECT = 5; -const SS_ICON = 3; -const SS_LEFT = 0; -const SS_LEFTNOWORDWRAP = 0xc; -const SS_NOPREFIX = 128; -const SS_NOTIFY = 256; -const SS_OWNERDRAW = 0xd; -const SS_REALSIZEIMAGE = 0x800; -const SS_RIGHT = 2; -const SS_RIGHTJUST = 0x400; -const SS_SIMPLE = 11; -const SS_SUNKEN = 4096; -const SS_WHITEFRAME = 9; -const SS_WHITERECT = 6; -const SS_USERITEM = 10; -const SS_TYPEMASK = 0x0000001FL; -const SS_ENDELLIPSIS = 0x00004000L; -const SS_PATHELLIPSIS = 0x00008000L; -const SS_WORDELLIPSIS = 0x0000C000L; -const SS_ELLIPSISMASK = 0x0000C000L; - -const DS_ABSALIGN = 0x0001; -const DS_3DLOOK = 0x0004; -const DS_SYSMODAL = 0x0002; -const DS_FIXEDSYS = 0x0008; -const DS_NOFAILCREATE = 0x0010; -const DS_LOCALEDIT = 0x0020; -const DS_SETFONT = 0x0040; -const DS_MODALFRAME = 0x0080; -const DS_NOIDLEMSG = 0x0100; -const DS_SETFOREGROUND = 0x0200; -const DS_CONTROL = 0x0400; -const DS_CENTER = 0x0800; -const DS_CENTERMOUSE = 0x1000; -const DS_CONTEXTHELP = 0x2000; -const DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS; - -const WS_EX_ACCEPTFILES = 16; -const WS_EX_APPWINDOW = 0x40000; -const WS_EX_CLIENTEDGE = 512; -const WS_EX_COMPOSITED = 0x2000000; // XP -const WS_EX_CONTEXTHELP = 0x400; -const WS_EX_CONTROLPARENT = 0x10000; -const WS_EX_DLGMODALFRAME = 1; -const WS_EX_LAYERED = 0x80000; // w2k -const WS_EX_LAYOUTRTL = 0x400000; // w98, w2k -const WS_EX_LEFT = 0; -const WS_EX_LEFTSCROLLBAR = 0x4000; -const WS_EX_LTRREADING = 0; -const WS_EX_MDICHILD = 64; -const WS_EX_NOACTIVATE = 0x8000000; // w2k -const WS_EX_NOINHERITLAYOUT = 0x100000; // w2k -const WS_EX_NOPARENTNOTIFY = 4; -const WS_EX_OVERLAPPEDWINDOW = 0x300; -const WS_EX_PALETTEWINDOW = 0x188; -const WS_EX_RIGHT = 0x1000; -const WS_EX_RIGHTSCROLLBAR = 0; -const WS_EX_RTLREADING = 0x2000; -const WS_EX_STATICEDGE = 0x20000; -const WS_EX_TOOLWINDOW = 128; -const WS_EX_TOPMOST = 8; -const WS_EX_TRANSPARENT = 32; -const WS_EX_WINDOWEDGE = 256; - -const WINSTA_ENUMDESKTOPS = 1; -const WINSTA_READATTRIBUTES = 2; -const WINSTA_ACCESSCLIPBOARD = 4; -const WINSTA_CREATEDESKTOP = 8; -const WINSTA_WRITEATTRIBUTES = 16; -const WINSTA_ACCESSGLOBALATOMS = 32; -const WINSTA_EXITWINDOWS = 64; -const WINSTA_ENUMERATE = 256; -const WINSTA_READSCREEN = 512; - -const DDL_READWRITE = 0; -const DDL_READONLY = 1; -const DDL_HIDDEN = 2; -const DDL_SYSTEM = 4; -const DDL_DIRECTORY = 16; -const DDL_ARCHIVE = 32; -const DDL_POSTMSGS = 8192; -const DDL_DRIVES = 16384; -const DDL_EXCLUSIVE = 32768; - -const DC_ACTIVE = 0x00000001; -const DC_SMALLCAP = 0x00000002; -const DC_ICON = 0x00000004; -const DC_TEXT = 0x00000008; -const DC_INBUTTON = 0x00000010; - -static if (WINVER >= 0x500) { -const DC_GRADIENT=0x00000020; -} -static if (_WIN32_WINNT >= 0x501) { -const DC_BUTTONS=0x00001000; -} - -// Where are these documented? -//const DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS; -//const DC_NC = DC_CAPTION|DC_FRAME; - -const BDR_RAISEDOUTER = 1; -const BDR_SUNKENOUTER = 2; -const BDR_RAISEDINNER = 4; -const BDR_SUNKENINNER = 8; -const BDR_OUTER = 3; -const BDR_INNER = 0xc; -const BDR_RAISED = 5; -const BDR_SUNKEN = 10; - -const EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER; -const EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER; -const EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER; -const EDGE_BUMP = BDR_RAISEDOUTER|BDR_SUNKENINNER; - -const BF_LEFT = 1; -const BF_TOP = 2; -const BF_RIGHT = 4; -const BF_BOTTOM = 8; -const BF_TOPLEFT = BF_TOP|BF_LEFT; -const BF_TOPRIGHT = BF_TOP|BF_RIGHT; -const BF_BOTTOMLEFT = BF_BOTTOM|BF_LEFT; -const BF_BOTTOMRIGHT = BF_BOTTOM|BF_RIGHT; -const BF_RECT = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ; -const BF_DIAGONAL = 16; -const BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL|BF_TOP|BF_RIGHT; -const BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL|BF_TOP|BF_LEFT; -const BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL|BF_BOTTOM|BF_LEFT; -const BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT; -const BF_MIDDLE = 0x800; -const BF_SOFT = 0x1000; -const BF_ADJUST = 0x2000; -const BF_FLAT = 0x4000; -const BF_MONO = 0x8000; - -const DFC_CAPTION=1; -const DFC_MENU=2; -const DFC_SCROLL=3; -const DFC_BUTTON=4; -static if (WINVER >= 0x500) { -const DFC_POPUPMENU=5; -}// WINVER >= 0x500 - -const DFCS_CAPTIONCLOSE = 0; -const DFCS_CAPTIONMIN = 1; -const DFCS_CAPTIONMAX = 2; -const DFCS_CAPTIONRESTORE = 3; -const DFCS_CAPTIONHELP = 4; - -const DFCS_MENUARROW = 0; -const DFCS_MENUCHECK = 1; -const DFCS_MENUBULLET = 2; -const DFCS_MENUARROWRIGHT = 4; - -const DFCS_SCROLLUP = 0; -const DFCS_SCROLLDOWN = 1; -const DFCS_SCROLLLEFT = 2; -const DFCS_SCROLLRIGHT = 3; -const DFCS_SCROLLCOMBOBOX = 5; -const DFCS_SCROLLSIZEGRIP = 8; -const DFCS_SCROLLSIZEGRIPRIGHT = 16; - -const DFCS_BUTTONCHECK = 0; -const DFCS_BUTTONRADIOIMAGE = 1; -const DFCS_BUTTONRADIOMASK = 2; -const DFCS_BUTTONRADIO = 4; -const DFCS_BUTTON3STATE = 8; -const DFCS_BUTTONPUSH = 16; -const DFCS_INACTIVE = 256; -const DFCS_PUSHED = 512; -const DFCS_CHECKED = 1024; -static if (WINVER >= 0x500) { -const DFCS_TRANSPARENT = 0x800; -const DFCS_HOT = 0x1000; -} -const DFCS_ADJUSTRECT = 0x2000; -const DFCS_FLAT = 0x4000; -const DFCS_MONO = 0x8000; - -enum { - DST_COMPLEX = 0, - DST_TEXT, - DST_PREFIXTEXT, - DST_ICON, - DST_BITMAP // = 4 -} - -const DSS_NORMAL = 0; -const DSS_UNION = 16; -const DSS_DISABLED = 32; -const DSS_MONO = 128; -const DSS_RIGHT = 0x8000; - -const DT_BOTTOM = 8; -const DT_CALCRECT = 1024; -const DT_CENTER = 1; -const DT_EDITCONTROL = 8192; -const DT_END_ELLIPSIS = 32768; -const DT_PATH_ELLIPSIS = 16384; -const DT_WORD_ELLIPSIS = 0x40000; -const DT_EXPANDTABS = 64; -const DT_EXTERNALLEADING = 512; -const DT_LEFT = 0; -const DT_MODIFYSTRING = 65536; -const DT_NOCLIP = 256; -const DT_NOPREFIX = 2048; -const DT_RIGHT = 2; -const DT_RTLREADING = 131072; -const DT_SINGLELINE = 32; -const DT_TABSTOP = 128; -const DT_TOP = 0; -const DT_VCENTER = 4; -const DT_WORDBREAK = 16; -const DT_INTERNAL = 4096; - -const WB_ISDELIMITER = 2; -const WB_LEFT = 0; -const WB_RIGHT = 1; - -const SB_HORZ = 0; -const SB_VERT = 1; -const SB_CTL = 2; -const SB_BOTH = 3; - -const ESB_DISABLE_BOTH = 3; -const ESB_DISABLE_DOWN = 2; -const ESB_DISABLE_LEFT = 1; -const ESB_DISABLE_LTUP = 1; -const ESB_DISABLE_RIGHT = 2; -const ESB_DISABLE_RTDN = 2; -const ESB_DISABLE_UP = 1; -const ESB_ENABLE_BOTH = 0; - -const SB_LINEUP = 0; -const SB_LINEDOWN = 1; -const SB_LINELEFT = 0; -const SB_LINERIGHT = 1; -const SB_PAGEUP = 2; -const SB_PAGEDOWN = 3; -const SB_PAGELEFT = 2; -const SB_PAGERIGHT = 3; -const SB_THUMBPOSITION = 4; -const SB_THUMBTRACK = 5; -const SB_ENDSCROLL = 8; -const SB_LEFT = 6; -const SB_RIGHT = 7; -const SB_BOTTOM = 7; -const SB_TOP = 6; - -//MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0) - -template MAKEINTRESOURCE_T (WORD i) -{ - const LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); -} - -LPSTR MAKEINTRESOURCEA(WORD i) -{ - return cast(LPSTR)(i); -} - -LPWSTR MAKEINTRESOURCEW(WORD i) -{ - return cast(LPWSTR)(i); -} - -const RT_CURSOR = MAKEINTRESOURCE_T!(1); -const RT_BITMAP = MAKEINTRESOURCE_T!(2); -const RT_ICON = MAKEINTRESOURCE_T!(3); -const RT_MENU = MAKEINTRESOURCE_T!(4); -const RT_DIALOG = MAKEINTRESOURCE_T!(5); -const RT_STRING = MAKEINTRESOURCE_T!(6); -const RT_FONTDIR = MAKEINTRESOURCE_T!(7); -const RT_FONT = MAKEINTRESOURCE_T!(8); -const RT_ACCELERATOR = MAKEINTRESOURCE_T!(9); -const RT_RCDATA = MAKEINTRESOURCE_T!(10); -const RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11); - -const RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12); -const RT_GROUP_ICON = MAKEINTRESOURCE_T!(14); -const RT_VERSION = MAKEINTRESOURCE_T!(16); -const RT_DLGINCLUDE = MAKEINTRESOURCE_T!(17); -const RT_PLUGPLAY = MAKEINTRESOURCE_T!(19); -const RT_VXD = MAKEINTRESOURCE_T!(20); -const RT_ANICURSOR = MAKEINTRESOURCE_T!(21); -const RT_ANIICON = MAKEINTRESOURCE_T!(22); -const RT_HTML = MAKEINTRESOURCE_T!(23); -const RT_MANIFEST = MAKEINTRESOURCE_T!(24); - -const CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(1); -const ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(2); -const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3); - -const EWX_LOGOFF = 0; -const EWX_SHUTDOWN = 1; -const EWX_REBOOT = 2; -const EWX_FORCE = 4; -const EWX_POWEROFF = 8; -static if (_WIN32_WINNT >= 0x500) { -const EWX_FORCEIFHUNG = 16; -} - -const CS_BYTEALIGNCLIENT = 4096; -const CS_BYTEALIGNWINDOW = 8192; -const CS_KEYCVTWINDOW = 4; -const CS_NOKEYCVT = 256; -const CS_CLASSDC = 64; -const CS_DBLCLKS = 8; -const CS_GLOBALCLASS = 16384; -const CS_HREDRAW = 2; -const CS_NOCLOSE = 512; -const CS_OWNDC = 32; -const CS_PARENTDC = 128; -const CS_SAVEBITS = 2048; -const CS_VREDRAW = 1; -const CS_IME = 0x10000; - -const GCW_ATOM = -32; -const GCL_CBCLSEXTRA = -20; -const GCL_CBWNDEXTRA = -18; -const GCL_HBRBACKGROUND = -10; -const GCL_HCURSOR = -12; -const GCL_HICON = -14; -const GCL_HICONSM = -34; -const GCL_HMODULE = -16; -const GCL_MENUNAME = -8; -const GCL_STYLE = -26; -const GCL_WNDPROC = -24; - -alias GCL_HICONSM GCLP_HICONSM; -alias GCL_HICON GCLP_HICON; -alias GCL_HCURSOR GCLP_HCURSOR; -alias GCL_HBRBACKGROUND GCLP_HBRBACKGROUND; -alias GCL_HMODULE GCLP_HMODULE; -alias GCL_MENUNAME GCLP_MENUNAME; -alias GCL_WNDPROC GCLP_WNDPROC; - -const IDC_ARROW = MAKEINTRESOURCE_T!(32512); -const IDC_IBEAM = MAKEINTRESOURCE_T!(32513); -const IDC_WAIT = MAKEINTRESOURCE_T!(32514); -const IDC_CROSS = MAKEINTRESOURCE_T!(32515); -const IDC_UPARROW = MAKEINTRESOURCE_T!(32516); -const IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642); -const IDC_SIZENESW = MAKEINTRESOURCE_T!(32643); -const IDC_SIZEWE = MAKEINTRESOURCE_T!(32644); -const IDC_SIZENS = MAKEINTRESOURCE_T!(32645); -const IDC_SIZEALL = MAKEINTRESOURCE_T!(32646); -const IDC_NO = MAKEINTRESOURCE_T!(32648); -const IDC_HAND = MAKEINTRESOURCE_T!(32649); -const IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650); -const IDC_HELP = MAKEINTRESOURCE_T!(32651); -const IDC_ICON = MAKEINTRESOURCE_T!(32641); -const IDC_SIZE = MAKEINTRESOURCE_T!(32640); -const IDI_APPLICATION = MAKEINTRESOURCE_T!(32512); -const IDI_HAND = MAKEINTRESOURCE_T!(32513); -const IDI_QUESTION = MAKEINTRESOURCE_T!(32514); -const IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515); -const IDI_ASTERISK = MAKEINTRESOURCE_T!(32516); -const IDI_WINLOGO = MAKEINTRESOURCE_T!(32517); -const IDI_WARNING = IDI_EXCLAMATION; -const IDI_ERROR = IDI_HAND; -const IDI_INFORMATION = IDI_ASTERISK; - -const MIIM_STATE = 1; -const MIIM_ID = 2; -const MIIM_SUBMENU = 4; -const MIIM_CHECKMARKS = 8; -const MIIM_TYPE = 16; -const MIIM_DATA = 32; -const MIIM_STRING = 64; -const MIIM_BITMAP = 128; -const MIIM_FTYPE = 256; - -static if (WINVER >= 0x500) { - -const MIM_MAXHEIGHT = 1; -const MIM_BACKGROUND = 2; -const MIM_HELPID = 4; -const MIM_MENUDATA = 8; -const MIM_STYLE = 16; -const MIM_APPLYTOSUBMENUS = 0x80000000L; - -const MNS_NOCHECK = 0x80000000; -const MNS_MODELESS = 0x40000000; -const MNS_DRAGDROP = 0x20000000; -const MNS_AUTODISMISS = 0x10000000; -const MNS_NOTIFYBYPOS = 0x08000000; -const MNS_CHECKORBMP = 0x04000000; - -} - -const MFT_BITMAP = 4; -const MFT_MENUBARBREAK = 32; -const MFT_MENUBREAK = 64; -const MFT_OWNERDRAW = 256; -const MFT_RADIOCHECK = 512; -const MFT_RIGHTJUSTIFY = 0x4000; -const MFT_SEPARATOR = 0x800; -const MFT_RIGHTORDER = 0x2000L; -const MFT_STRING = 0; - -const MFS_CHECKED = 8; -const MFS_DEFAULT = 4096; -const MFS_DISABLED = 3; -const MFS_ENABLED = 0; -const MFS_GRAYED = 3; -const MFS_HILITE = 128; -const MFS_UNCHECKED = 0; -const MFS_UNHILITE = 0; - -const GW_HWNDNEXT = 2; -const GW_HWNDPREV = 3; -const GW_CHILD = 5; -const GW_HWNDFIRST = 0; -const GW_HWNDLAST = 1; -const GW_OWNER = 4; - -const SW_HIDE = 0; -const SW_NORMAL = 1; -const SW_SHOWNORMAL = 1; -const SW_SHOWMINIMIZED = 2; -const SW_MAXIMIZE = 3; -const SW_SHOWMAXIMIZED = 3; -const SW_SHOWNOACTIVATE = 4; -const SW_SHOW = 5; -const SW_MINIMIZE = 6; -const SW_SHOWMINNOACTIVE = 7; -const SW_SHOWNA = 8; -const SW_RESTORE = 9; -const SW_SHOWDEFAULT = 10; -const SW_FORCEMINIMIZE = 11; -const SW_MAX = 11; - -const MB_USERICON = 128; -const MB_ICONASTERISK = 64; -const MB_ICONEXCLAMATION = 0x30; -const MB_ICONWARNING = 0x30; -const MB_ICONERROR = 16; -const MB_ICONHAND = 16; -const MB_ICONQUESTION = 32; -const MB_OK = 0; -const MB_ABORTRETRYIGNORE = 2; -const MB_APPLMODAL = 0; -const MB_DEFAULT_DESKTOP_ONLY = 0x20000; -const MB_HELP = 0x4000; -const MB_RIGHT = 0x80000; -const MB_RTLREADING = 0x100000; -const MB_TOPMOST = 0x40000; -const MB_DEFBUTTON1 = 0; -const MB_DEFBUTTON2 = 256; -const MB_DEFBUTTON3 = 512; -const MB_DEFBUTTON4 = 0x300; -const MB_ICONINFORMATION = 64; -const MB_ICONSTOP = 16; -const MB_OKCANCEL = 1; -const MB_RETRYCANCEL = 5; - -static if (_WIN32_WINNT_ONLY) { - static if (_WIN32_WINNT >= 0x400) { - const MB_SERVICE_NOTIFICATION = 0x00200000; - } else { - const MB_SERVICE_NOTIFICATION = 0x00040000; - } - const MB_SERVICE_NOTIFICATION_NT3X = 0x00040000; -} - -const MB_SETFOREGROUND = 0x10000; -const MB_SYSTEMMODAL = 4096; -const MB_TASKMODAL = 0x2000; -const MB_YESNO = 4; -const MB_YESNOCANCEL = 3; -const MB_ICONMASK = 240; -const MB_DEFMASK = 3840; -const MB_MODEMASK = 0x00003000; -const MB_MISCMASK = 0x0000C000; -const MB_NOFOCUS = 0x00008000; -const MB_TYPEMASK = 15; -// [Redefined] MB_TOPMOST=0x40000 -static if (WINVER >= 0x500) { - const MB_CANCELTRYCONTINUE=6; -} - -const IDOK = 1; -const IDCANCEL = 2; -const IDABORT = 3; -const IDRETRY = 4; -const IDIGNORE = 5; -const IDYES = 6; -const IDNO = 7; -static if (WINVER >= 0x400) { -const IDCLOSE = 8; -const IDHELP = 9; -} -static if (WINVER >= 0x500) { -const IDTRYAGAIN = 10; -const IDCONTINUE = 11; -} - -const GWL_EXSTYLE = -20; -const GWL_STYLE = -16; -const GWL_WNDPROC = -4; -const GWLP_WNDPROC = -4; -const GWL_HINSTANCE = -6; -const GWLP_HINSTANCE = -6; -const GWL_HWNDPARENT = -8; -const GWLP_HWNDPARENT = -8; -const GWL_ID = -12; -const GWLP_ID = -12; -const GWL_USERDATA = -21; -const GWLP_USERDATA = -21; - -const DWL_DLGPROC = 4; -const DWLP_DLGPROC = 4; -const DWL_MSGRESULT = 0; -const DWLP_MSGRESULT = 0; -const DWL_USER = 8; -const DWLP_USER = 8; - -const QS_KEY = 1; -const QS_MOUSEMOVE = 2; -const QS_MOUSEBUTTON = 4; -const QS_MOUSE = 6; -const QS_POSTMESSAGE = 8; -const QS_TIMER = 16; -const QS_PAINT = 32; -const QS_SENDMESSAGE = 64; -const QS_HOTKEY = 128; -const QS_ALLPOSTMESSAGE = 256; -static if (_WIN32_WINNT >= 0x501) { -const QS_RAWINPUT = 1024; -const QS_INPUT = 1031; -const QS_ALLEVENTS = 1215; -const QS_ALLINPUT = 1279; -} else { -const QS_INPUT = 7; -const QS_ALLEVENTS = 191; -const QS_ALLINPUT = 255; -} - -const MWMO_WAITALL = 1; -const MWMO_ALERTABLE = 2; -const MWMO_INPUTAVAILABLE = 4; - -const COLOR_3DDKSHADOW=21; -const COLOR_3DFACE=15; -const COLOR_3DHILIGHT=20; -const COLOR_3DHIGHLIGHT=20; -const COLOR_3DLIGHT=22; -const COLOR_BTNHILIGHT=20; -const COLOR_3DSHADOW=16; -const COLOR_ACTIVEBORDER=10; -const COLOR_ACTIVECAPTION=2; -const COLOR_APPWORKSPACE=12; -const COLOR_BACKGROUND=1; -const COLOR_DESKTOP=1; -const COLOR_BTNFACE=15; -const COLOR_BTNHIGHLIGHT=20; -const COLOR_BTNSHADOW=16; -const COLOR_BTNTEXT=18; -const COLOR_CAPTIONTEXT=9; -const COLOR_GRAYTEXT=17; -const COLOR_HIGHLIGHT=13; -const COLOR_HIGHLIGHTTEXT=14; -const COLOR_INACTIVEBORDER=11; -const COLOR_INACTIVECAPTION=3; -const COLOR_INACTIVECAPTIONTEXT=19; -const COLOR_INFOBK=24; -const COLOR_INFOTEXT=23; -const COLOR_MENU=4; -const COLOR_MENUTEXT=7; -const COLOR_SCROLLBAR=0; -const COLOR_WINDOW=5; -const COLOR_WINDOWFRAME=6; -const COLOR_WINDOWTEXT=8; -const COLOR_HOTLIGHT=26; -const COLOR_GRADIENTACTIVECAPTION=27; -const COLOR_GRADIENTINACTIVECAPTION=28; - -const CTLCOLOR_MSGBOX=0; -const CTLCOLOR_EDIT=1; -const CTLCOLOR_LISTBOX=2; -const CTLCOLOR_BTN=3; -const CTLCOLOR_DLG=4; -const CTLCOLOR_SCROLLBAR=5; -const CTLCOLOR_STATIC=6; -const CTLCOLOR_MAX=7; - -// For GetSystemMetrics() -enum : int { - SM_CXSCREEN = 0, - SM_CYSCREEN, - SM_CXVSCROLL, - SM_CYHSCROLL, - SM_CYCAPTION, - SM_CXBORDER, - SM_CYBORDER, - SM_CXDLGFRAME, // = 7, - SM_CXFIXEDFRAME = SM_CXDLGFRAME, - SM_CYDLGFRAME, // =8, - SM_CYFIXEDFRAME = SM_CYDLGFRAME, - SM_CYVTHUMB = 9, - SM_CXHTHUMB, - SM_CXICON, - SM_CYICON, - SM_CXCURSOR, - SM_CYCURSOR, - SM_CYMENU, - SM_CXFULLSCREEN, - SM_CYFULLSCREEN, - SM_CYKANJIWINDOW, - SM_MOUSEPRESENT, - SM_CYVSCROLL, - SM_CXHSCROLL, - SM_DEBUG, - SM_SWAPBUTTON, - SM_RESERVED1, - SM_RESERVED2, - SM_RESERVED3, - SM_RESERVED4, - SM_CXMIN, - SM_CYMIN, - SM_CXSIZE, - SM_CYSIZE, - SM_CXSIZEFRAME, // = 32, - SM_CXFRAME = SM_CXSIZEFRAME, - SM_CYSIZEFRAME, // = 33 - SM_CYFRAME = SM_CYSIZEFRAME, - SM_CXMINTRACK, - SM_CYMINTRACK, - SM_CXDOUBLECLK, - SM_CYDOUBLECLK, - SM_CXICONSPACING, - SM_CYICONSPACING, - SM_MENUDROPALIGNMENT, - SM_PENWINDOWS, - SM_DBCSENABLED, - SM_CMOUSEBUTTONS, - SM_SECURE, - SM_CXEDGE, - SM_CYEDGE, - SM_CXMINSPACING, - SM_CYMINSPACING, - SM_CXSMICON, - SM_CYSMICON, - SM_CYSMCAPTION, - SM_CXSMSIZE, - SM_CYSMSIZE, - SM_CXMENUSIZE, - SM_CYMENUSIZE, - SM_ARRANGE, - SM_CXMINIMIZED, - SM_CYMINIMIZED, - SM_CXMAXTRACK, - SM_CYMAXTRACK, - SM_CXMAXIMIZED, - SM_CYMAXIMIZED, - SM_NETWORK, // = 63 - SM_CLEANBOOT = 67, - SM_CXDRAG, - SM_CYDRAG, - SM_SHOWSOUNDS, - SM_CXMENUCHECK, - SM_CYMENUCHECK, - SM_SLOWMACHINE, - SM_MIDEASTENABLED, - // The next values aren't supported in Win95. - SM_MOUSEWHEELPRESENT, - SM_XVIRTUALSCREEN, - SM_YVIRTUALSCREEN, - SM_CXVIRTUALSCREEN, - SM_CYVIRTUALSCREEN, - SM_CMONITORS, - SM_SAMEDISPLAYFORMAT, - SM_IMMENABLED, - SM_CXFOCUSBORDER, - SM_CYFOCUSBORDER, // = 84 - SM_TABLETPC = 86, - SM_MEDIACENTER = 87, - SM_REMOTESESSION = 0x1000, - // These are only for WinXP and later - SM_SHUTTINGDOWN = 0x2000, - SM_REMOTECONTROL = 0x2001 -} - -const ARW_BOTTOMLEFT=0; -const ARW_BOTTOMRIGHT=1; -const ARW_HIDE=8; -const ARW_TOPLEFT=2; -const ARW_TOPRIGHT=3; -const ARW_DOWN=4; -const ARW_LEFT=0; -const ARW_RIGHT=0; -const ARW_UP=4; - -const UOI_FLAGS=1; -const UOI_NAME=2; -const UOI_TYPE=3; -const UOI_USER_SID=4; - -// For the fuLoad parameter of LoadImage() -enum : UINT { - LR_DEFAULTCOLOR = 0, - LR_MONOCHROME = 1, - LR_COLOR = 2, - LR_COPYRETURNORG = 4, - LR_COPYDELETEORG = 8, - LR_LOADFROMFILE = 16, - LR_LOADTRANSPARENT = 32, - LR_DEFAULTSIZE = 64, - LR_LOADREALSIZE = 128, - LR_LOADMAP3DCOLORS = 4096, - LR_CREATEDIBSECTION = 8192, - LR_COPYFROMRESOURCE = 16384, - LR_SHARED = 32768 -} - -const KEYEVENTF_EXTENDEDKEY = 0x00000001; -const KEYEVENTF_KEYUP = 00000002; -static if (_WIN32_WINNT >= 0x500) { -const KEYEVENTF_UNICODE = 0x00000004; -const KEYEVENTF_SCANCODE = 0x00000008; -} - -const OBM_BTNCORNERS = 32758; -const OBM_BTSIZE = 32761; -const OBM_CHECK = 32760; -const OBM_CHECKBOXES = 32759; -const OBM_CLOSE = 32754; -const OBM_COMBO = 32738; -const OBM_DNARROW = 32752; -const OBM_DNARROWD = 32742; -const OBM_DNARROWI = 32736; -const OBM_LFARROW = 32750; -const OBM_LFARROWI = 32734; -const OBM_LFARROWD = 32740; -const OBM_MNARROW = 32739; -const OBM_OLD_CLOSE = 32767; -const OBM_OLD_DNARROW = 32764; -const OBM_OLD_LFARROW = 32762; -const OBM_OLD_REDUCE = 32757; -const OBM_OLD_RESTORE = 32755; -const OBM_OLD_RGARROW = 32763; -const OBM_OLD_UPARROW = 32765; -const OBM_OLD_ZOOM = 32756; -const OBM_REDUCE = 32749; -const OBM_REDUCED = 32746; -const OBM_RESTORE = 32747; -const OBM_RESTORED = 32744; -const OBM_RGARROW = 32751; -const OBM_RGARROWD = 32741; -const OBM_RGARROWI = 32735; -const OBM_SIZE = 32766; -const OBM_UPARROW = 32753; -const OBM_UPARROWD = 32743; -const OBM_UPARROWI = 32737; -const OBM_ZOOM = 32748; -const OBM_ZOOMD = 32745; - -const OCR_NORMAL = 32512; -const OCR_IBEAM = 32513; -const OCR_WAIT = 32514; -const OCR_CROSS = 32515; -const OCR_UP = 32516; -const OCR_SIZE = 32640; -const OCR_ICON = 32641; -const OCR_SIZENWSE = 32642; -const OCR_SIZENESW = 32643; -const OCR_SIZEWE = 32644; -const OCR_SIZENS = 32645; -const OCR_SIZEALL = 32646; -const OCR_NO = 32648; -const OCR_APPSTARTING = 32650; - -const OIC_SAMPLE = 32512; -const OIC_HAND = 32513; -const OIC_QUES = 32514; -const OIC_BANG = 32515; -const OIC_NOTE = 32516; -const OIC_WINLOGO = 32517; -const OIC_WARNING = OIC_BANG; -const OIC_ERROR = OIC_HAND; -const OIC_INFORMATION = OIC_NOTE; - -const HELPINFO_MENUITEM = 2; -const HELPINFO_WINDOW = 1; - -const MSGF_DIALOGBOX = 0; -const MSGF_MESSAGEBOX = 1; -const MSGF_MENU = 2; -const MSGF_MOVE = 3; -const MSGF_SIZE = 4; -const MSGF_SCROLLBAR = 5; -const MSGF_NEXTWINDOW = 6; -const MSGF_MAINLOOP = 8; -const MSGF_USER = 4096; - -const MOUSEEVENTF_MOVE = 1; -const MOUSEEVENTF_LEFTDOWN = 2; -const MOUSEEVENTF_LEFTUP = 4; -const MOUSEEVENTF_RIGHTDOWN = 8; -const MOUSEEVENTF_RIGHTUP = 16; -const MOUSEEVENTF_MIDDLEDOWN = 32; -const MOUSEEVENTF_MIDDLEUP = 64; -const MOUSEEVENTF_WHEEL = 0x0800; -const MOUSEEVENTF_ABSOLUTE = 32768; - -const PM_NOREMOVE = 0; -const PM_REMOVE = 1; -const PM_NOYIELD = 2; - -static if (WINVER >= 0x500) { -const PM_QS_INPUT = (QS_INPUT << 16); -const PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE|QS_HOTKEY|QS_TIMER) << 16); -const PM_QS_PAINT = (QS_PAINT << 16); -const PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16); -} -const HWND - HWND_BROADCAST = cast(HWND)0xffff, - HWND_BOTTOM = cast(HWND)1, - HWND_NOTOPMOST = cast(HWND)(-2), - HWND_TOP = cast(HWND)0, - HWND_TOPMOST = cast(HWND)(-1), - HWND_DESKTOP = cast(HWND)0, - HWND_MESSAGE = cast(HWND)(-3);// w2k - -const RDW_INVALIDATE = 1; -const RDW_INTERNALPAINT = 2; -const RDW_ERASE = 4; -const RDW_VALIDATE = 8; -const RDW_NOINTERNALPAINT = 16; -const RDW_NOERASE = 32; -const RDW_NOCHILDREN = 64; -const RDW_ALLCHILDREN = 128; -const RDW_UPDATENOW = 256; -const RDW_ERASENOW = 512; -const RDW_FRAME = 1024; -const RDW_NOFRAME = 2048; - -const SMTO_NORMAL = 0; -const SMTO_BLOCK = 1; -const SMTO_ABORTIFHUNG = 2; - -const SIF_ALL = 23; -const SIF_PAGE = 2; -const SIF_POS = 4; -const SIF_RANGE = 1; -const SIF_DISABLENOSCROLL = 8; -const SIF_TRACKPOS = 16; - -const SWP_DRAWFRAME = 32; -const SWP_FRAMECHANGED = 32; -const SWP_HIDEWINDOW = 128; -const SWP_NOACTIVATE = 16; -const SWP_NOCOPYBITS = 256; -const SWP_NOMOVE = 2; -const SWP_NOSIZE = 1; -const SWP_NOREDRAW = 8; -const SWP_NOZORDER = 4; -const SWP_SHOWWINDOW = 64; -const SWP_NOOWNERZORDER = 512; -const SWP_NOREPOSITION = 512; -const SWP_NOSENDCHANGING = 1024; -const SWP_DEFERERASE = 8192; -const SWP_ASYNCWINDOWPOS = 16384; - -const HSHELL_ACTIVATESHELLWINDOW = 3; -const HSHELL_GETMINRECT = 5; -const HSHELL_LANGUAGE = 8; -const HSHELL_REDRAW = 6; -const HSHELL_TASKMAN = 7; -const HSHELL_WINDOWACTIVATED = 4; -const HSHELL_WINDOWCREATED = 1; -const HSHELL_WINDOWDESTROYED = 2; -const HSHELL_FLASH = 32774; - -static if (WINVER >= 0x500) { -const SPI_SETFOREGROUNDLOCKTIMEOUT=0x2001; -const SPI_GETFOREGROUNDLOCKTIMEOUT=0x2000; -} - -const SPI_GETACCESSTIMEOUT=60; -const SPI_GETACTIVEWNDTRKTIMEOUT=8194; -const SPI_GETANIMATION=72; -const SPI_GETBEEP=1; -const SPI_GETBORDER=5; -const SPI_GETDEFAULTINPUTLANG=89; -const SPI_GETDRAGFULLWINDOWS=38; -const SPI_GETFASTTASKSWITCH=35; -const SPI_GETFILTERKEYS=50; -const SPI_GETFONTSMOOTHING=74; -const SPI_GETGRIDGRANULARITY=18; -const SPI_GETHIGHCONTRAST=66; -const SPI_GETICONMETRICS=45; -const SPI_GETICONTITLELOGFONT=31; -const SPI_GETICONTITLEWRAP=25; -const SPI_GETKEYBOARDDELAY=22; -const SPI_GETKEYBOARDPREF=68; -const SPI_GETKEYBOARDSPEED=10; -const SPI_GETLOWPOWERACTIVE=83; -const SPI_GETLOWPOWERTIMEOUT=79; -const SPI_GETMENUDROPALIGNMENT=27; -const SPI_GETMINIMIZEDMETRICS=43; -const SPI_GETMOUSE=3; -const SPI_GETMOUSEKEYS=54; -const SPI_GETMOUSETRAILS=94; -const SPI_GETNONCLIENTMETRICS=41; -const SPI_GETPOWEROFFACTIVE=84; -const SPI_GETPOWEROFFTIMEOUT=80; -const SPI_GETSCREENREADER=70; -const SPI_GETSCREENSAVEACTIVE=16; -const SPI_GETSCREENSAVETIMEOUT=14; -const SPI_GETSERIALKEYS=62; -const SPI_GETSHOWSOUNDS=56; -const SPI_GETSOUNDSENTRY=64; -const SPI_GETSTICKYKEYS=58; -const SPI_GETTOGGLEKEYS=52; -const SPI_GETWHEELSCROLLLINES=104; -const SPI_GETWINDOWSEXTENSION=92; -const SPI_GETWORKAREA=48; -const SPI_ICONHORIZONTALSPACING=13; -const SPI_ICONVERTICALSPACING=24; -const SPI_LANGDRIVER=12; -const SPI_SCREENSAVERRUNNING=97; -const SPI_SETACCESSTIMEOUT=61; -const SPI_SETACTIVEWNDTRKTIMEOUT=8195; -const SPI_SETANIMATION=73; -const SPI_SETBEEP=2; -const SPI_SETBORDER=6; -const SPI_SETDEFAULTINPUTLANG=90; -const SPI_SETDESKPATTERN=21; -const SPI_SETDESKWALLPAPER=20; -const SPI_SETDOUBLECLICKTIME=32; -const SPI_SETDOUBLECLKHEIGHT=30; -const SPI_SETDOUBLECLKWIDTH=29; -const SPI_SETDRAGFULLWINDOWS=37; -const SPI_SETDRAGHEIGHT=77; -const SPI_SETDRAGWIDTH=76; -const SPI_SETFASTTASKSWITCH=36; -const SPI_SETFILTERKEYS=51; -const SPI_SETFONTSMOOTHING=75; -const SPI_SETGRIDGRANULARITY=19; -const SPI_SETHANDHELD=78; -const SPI_SETHIGHCONTRAST=67; -const SPI_SETICONMETRICS=46; -const SPI_SETICONTITLELOGFONT=34; -const SPI_SETICONTITLEWRAP=26; -const SPI_SETKEYBOARDDELAY=23; -const SPI_SETKEYBOARDPREF=69; -const SPI_SETKEYBOARDSPEED=11; -const SPI_SETLANGTOGGLE=91; -const SPI_SETLOWPOWERACTIVE=85; -const SPI_SETLOWPOWERTIMEOUT=81; -const SPI_SETMENUDROPALIGNMENT=28; -const SPI_SETMINIMIZEDMETRICS=44; -const SPI_SETMOUSE=4; -const SPI_SETMOUSEBUTTONSWAP=33; -const SPI_SETMOUSEKEYS=55; -const SPI_SETMOUSETRAILS=93; -const SPI_SETNONCLIENTMETRICS=42; -const SPI_SETPENWINDOWS=49; -const SPI_SETPOWEROFFACTIVE=86; -const SPI_SETPOWEROFFTIMEOUT=82; -const SPI_SETSCREENREADER=71; -const SPI_SETSCREENSAVEACTIVE=17; -const SPI_SETSCREENSAVERRUNNING=97; -const SPI_SETSCREENSAVETIMEOUT=15; -const SPI_SETSERIALKEYS=63; -const SPI_SETSHOWSOUNDS=57; -const SPI_SETSOUNDSENTRY=65; -const SPI_SETSTICKYKEYS=59; -const SPI_SETTOGGLEKEYS=53; -const SPI_SETWHEELSCROLLLINES=105; -const SPI_SETWORKAREA=47; - -static if (WINVER >= 0x500) { -const SPI_GETDESKWALLPAPER=115; -const SPI_GETMOUSESPEED=112; -const SPI_GETSCREENSAVERRUNNING=114; -const SPI_GETACTIVEWINDOWTRACKING=0x1000; -const SPI_GETACTIVEWNDTRKZORDER=0x100C; -const SPI_GETCOMBOBOXANIMATION=0x1004; -const SPI_GETCURSORSHADOW=0x101A; -const SPI_GETGRADIENTCAPTIONS=0x1008; -const SPI_GETHOTTRACKING=0x100E; -const SPI_GETKEYBOARDCUES=0x100A; -const SPI_GETLISTBOXSMOOTHSCROLLING=0x1006; -const SPI_GETMENUANIMATION=0x1002; -const SPI_GETMENUFADE=0x1012; -const SPI_GETMENUUNDERLINES=0x100A; -const SPI_GETSELECTIONFADE=0x1014; -const SPI_GETTOOLTIPANIMATION=0x1016; -const SPI_GETTOOLTIPFADE=0x1018; -const SPI_SETACTIVEWINDOWTRACKING=0x1001; -const SPI_SETACTIVEWNDTRKZORDER=0x100D; -const SPI_SETCOMBOBOXANIMATION=0x1005; -const SPI_SETCURSORSHADOW=0x101B; -const SPI_SETGRADIENTCAPTIONS=0x1009; -const SPI_SETHOTTRACKING=0x100F; -const SPI_SETKEYBOARDCUES=0x100B; -const SPI_SETLISTBOXSMOOTHSCROLLING=0x1007; -const SPI_SETMENUANIMATION=0x1003; -const SPI_SETMENUFADE=0x1013; -const SPI_SETMENUUNDERLINES=0x100B; -const SPI_SETMOUSESPEED=113; -const SPI_SETSELECTIONFADE=0x1015; -const SPI_SETTOOLTIPANIMATION=0x1017; -const SPI_SETTOOLTIPFADE=0x1019; -} - -const SPIF_UPDATEINIFILE=1; -const SPIF_SENDWININICHANGE=2; -const SPIF_SENDCHANGE=2; -// [Redefined] ATF_ONOFFFEEDBACK=2 -// [Redefined] ATF_TIMEOUTON=1 -const WM_APP=32768; -const WM_ACTIVATE=6; -const WM_ACTIVATEAPP=28; -// FIXME/CHECK: Are WM_AFX {FIRST, LAST} valid for WINVER < 0x400? -const WM_AFXFIRST=864; -const WM_AFXLAST=895; -const WM_ASKCBFORMATNAME=780; -const WM_CANCELJOURNAL=75; -const WM_CANCELMODE=31; -const WM_CAPTURECHANGED=533; -const WM_CHANGECBCHAIN=781; -const WM_CHAR=258; -const WM_CHARTOITEM=47; -const WM_CHILDACTIVATE=34; -const WM_CLEAR=771; -const WM_CLOSE=16; -const WM_COMMAND=273; -const WM_COMMNOTIFY=68; // obsolete -const WM_COMPACTING=65; -const WM_COMPAREITEM=57; -const WM_CONTEXTMENU=123; -const WM_COPY=769; -const WM_COPYDATA=74; -const WM_CREATE=1; -const WM_CTLCOLORBTN=309; -const WM_CTLCOLORDLG=310; -const WM_CTLCOLOREDIT=307; -const WM_CTLCOLORLISTBOX=308; -const WM_CTLCOLORMSGBOX=306; -const WM_CTLCOLORSCROLLBAR=311; -const WM_CTLCOLORSTATIC=312; -const WM_CUT=768; -const WM_DEADCHAR=259; -const WM_DELETEITEM=45; -const WM_DESTROY=2; -const WM_DESTROYCLIPBOARD=775; -const WM_DEVICECHANGE=537; -const WM_DEVMODECHANGE=27; -const WM_DISPLAYCHANGE=126; -const WM_DRAWCLIPBOARD=776; -const WM_DRAWITEM=43; -const WM_DROPFILES=563; -const WM_ENABLE=10; -const WM_ENDSESSION=22; -const WM_ENTERIDLE=289; -const WM_ENTERMENULOOP=529; -const WM_ENTERSIZEMOVE=561; -const WM_ERASEBKGND=20; -const WM_EXITMENULOOP=530; -const WM_EXITSIZEMOVE=562; -const WM_FONTCHANGE=29; -const WM_GETDLGCODE=135; -const WM_GETFONT=49; -const WM_GETHOTKEY=51; -const WM_GETICON=127; -const WM_GETMINMAXINFO=36; -const WM_GETTEXT=13; -const WM_GETTEXTLENGTH=14; -const WM_HANDHELDFIRST=856; -const WM_HANDHELDLAST=863; -const WM_HELP=83; -const WM_HOTKEY=786; -const WM_HSCROLL=276; -const WM_HSCROLLCLIPBOARD=782; -const WM_ICONERASEBKGND=39; -const WM_INITDIALOG=272; -const WM_INITMENU=278; -const WM_INITMENUPOPUP=279; -const WM_INPUTLANGCHANGE=81; -const WM_INPUTLANGCHANGEREQUEST=80; -const WM_KEYDOWN=256; -const WM_KEYUP=257; -const WM_KILLFOCUS=8; -const WM_MDIACTIVATE=546; -const WM_MDICASCADE=551; -const WM_MDICREATE=544; -const WM_MDIDESTROY=545; -const WM_MDIGETACTIVE=553; -const WM_MDIICONARRANGE=552; -const WM_MDIMAXIMIZE=549; -const WM_MDINEXT=548; -const WM_MDIREFRESHMENU=564; -const WM_MDIRESTORE=547; -const WM_MDISETMENU=560; -const WM_MDITILE=550; -const WM_MEASUREITEM=44; -static if (WINVER >= 0x500) { -const WM_UNINITMENUPOPUP=0x0125; -const WM_MENURBUTTONUP=290; -const WM_MENUCOMMAND=0x0126; -const WM_MENUGETOBJECT=0x0124; -const WM_MENUDRAG=0x0123; -} - -static if (_WIN32_WINNT >= 0x500) { - - enum { - WM_CHANGEUISTATE = 0x0127, - WM_UPDATEUISTATE = 0x0128, - WM_QUERYUISTATE = 0x0129 - } - - // LOWORD(wParam) values in WM_*UISTATE* - enum { - UIS_SET = 1, - UIS_CLEAR = 2, - UIS_INITIALIZE = 3 - } - - // HIWORD(wParam) values in WM_*UISTATE* - enum { - UISF_HIDEFOCUS = 0x1, - UISF_HIDEACCEL = 0x2 - } - -} - -static if (_WIN32_WINNT >= 0x501) { - - // HIWORD(wParam) values in WM_*UISTATE* - enum { - UISF_ACTIVE = 0x4 - } - -} - -const WM_MENUCHAR=288; -const WM_MENUSELECT=287; -const WM_MOVE=3; -const WM_MOVING=534; -const WM_NCACTIVATE=134; -const WM_NCCALCSIZE=131; -const WM_NCCREATE=129; -const WM_NCDESTROY=130; -const WM_NCHITTEST=132; -const WM_NCLBUTTONDBLCLK=163; -const WM_NCLBUTTONDOWN=161; -const WM_NCLBUTTONUP=162; -const WM_NCMBUTTONDBLCLK=169; -const WM_NCMBUTTONDOWN=167; -const WM_NCMBUTTONUP=168; -static if (_WIN32_WINNT >= 0x500) { -const WM_NCXBUTTONDOWN=171; -const WM_NCXBUTTONUP=172; -const WM_NCXBUTTONDBLCLK=173; -const WM_NCMOUSEHOVER=0x02A0; -const WM_NCMOUSELEAVE=0x02A2; -} -const WM_NCMOUSEMOVE=160; -const WM_NCPAINT=133; -const WM_NCRBUTTONDBLCLK=166; -const WM_NCRBUTTONDOWN=164; -const WM_NCRBUTTONUP=165; -const WM_NEXTDLGCTL=40; -const WM_NEXTMENU=531; -const WM_NOTIFY=78; -const WM_NOTIFYFORMAT=85; -const WM_NULL=0; -const WM_PAINT=15; -const WM_PAINTCLIPBOARD=777; -const WM_PAINTICON=38; -const WM_PALETTECHANGED=785; -const WM_PALETTEISCHANGING=784; -const WM_PARENTNOTIFY=528; -const WM_PASTE=770; -const WM_PENWINFIRST=896; -const WM_PENWINLAST=911; -const WM_POWER=72; -const WM_POWERBROADCAST=536; -const WM_PRINT=791; -const WM_PRINTCLIENT=792; -const WM_APPCOMMAND = 0x0319; -const WM_QUERYDRAGICON=55; -const WM_QUERYENDSESSION=17; -const WM_QUERYNEWPALETTE=783; -const WM_QUERYOPEN=19; -const WM_QUEUESYNC=35; -const WM_QUIT=18; -const WM_RENDERALLFORMATS=774; -const WM_RENDERFORMAT=773; -const WM_SETCURSOR=32; -const WM_SETFOCUS=7; -const WM_SETFONT=48; -const WM_SETHOTKEY=50; -const WM_SETICON=128; -const WM_SETREDRAW=11; -const WM_SETTEXT=12; -const WM_SETTINGCHANGE=26; -const WM_SHOWWINDOW=24; -const WM_SIZE=5; -const WM_SIZECLIPBOARD=779; -const WM_SIZING=532; -const WM_SPOOLERSTATUS=42; -const WM_STYLECHANGED=125; -const WM_STYLECHANGING=124; -const WM_SYSCHAR=262; -const WM_SYSCOLORCHANGE=21; -const WM_SYSCOMMAND=274; -const WM_SYSDEADCHAR=263; -const WM_SYSKEYDOWN=260; -const WM_SYSKEYUP=261; -const WM_TCARD=82; -const WM_THEMECHANGED=794; -const WM_TIMECHANGE=30; -const WM_TIMER=275; -const WM_UNDO=772; -const WM_USER=1024; -const WM_USERCHANGED=84; -const WM_VKEYTOITEM=46; -const WM_VSCROLL=277; -const WM_VSCROLLCLIPBOARD=778; -const WM_WINDOWPOSCHANGED=71; -const WM_WINDOWPOSCHANGING=70; -const WM_WININICHANGE=26; -const WM_INPUT=255; -const WM_KEYFIRST=256; -const WM_KEYLAST=264; -const WM_SYNCPAINT=136; -const WM_MOUSEACTIVATE=33; -const WM_MOUSEMOVE=512; -const WM_LBUTTONDOWN=513; -const WM_LBUTTONUP=514; -const WM_LBUTTONDBLCLK=515; -const WM_RBUTTONDOWN=516; -const WM_RBUTTONUP=517; -const WM_RBUTTONDBLCLK=518; -const WM_MBUTTONDOWN=519; -const WM_MBUTTONUP=520; -const WM_MBUTTONDBLCLK=521; -const WM_MOUSEWHEEL=522; -const WM_MOUSEFIRST=512; -static if (_WIN32_WINNT >= 0x500) { -const WM_XBUTTONDOWN=523; -const WM_XBUTTONUP=524; -const WM_XBUTTONDBLCLK=525; -const WM_MOUSELAST=525; -} else { -const WM_MOUSELAST=522; -} -const WM_MOUSEHOVER=0x2A1; -const WM_MOUSELEAVE=0x2A3; -static if (_WIN32_WINNT >= 0x400) { -const WHEEL_DELTA=120; - -SHORT GET_WHEEL_DELTA_WPARAM(WPARAM wparam) -{ -return cast(SHORT) HIWORD(wparam); -} - -const WHEEL_PAGESCROLL = uint.max; -} -const BM_CLICK=245; -const BM_GETCHECK=240; -const BM_GETIMAGE=246; -const BM_GETSTATE=242; -const BM_SETCHECK=241; -const BM_SETIMAGE=247; -const BM_SETSTATE=243; -const BM_SETSTYLE=244; -const BN_CLICKED=0; -const BN_DBLCLK=5; -const BN_DISABLE=4; -const BN_DOUBLECLICKED=5; -const BN_HILITE=2; -const BN_KILLFOCUS=7; -const BN_PAINT=1; -const BN_PUSHED=2; -const BN_SETFOCUS=6; -const BN_UNHILITE=3; -const BN_UNPUSHED=3; -const CB_ADDSTRING=323; -const CB_DELETESTRING=324; -const CB_DIR=325; -const CB_FINDSTRING=332; -const CB_FINDSTRINGEXACT=344; -const CB_GETCOUNT=326; -const CB_GETCURSEL=327; -const CB_GETDROPPEDCONTROLRECT=338; -const CB_GETDROPPEDSTATE=343; -const CB_GETDROPPEDWIDTH=351; -const CB_GETEDITSEL=320; -const CB_GETEXTENDEDUI=342; -const CB_GETHORIZONTALEXTENT=349; -const CB_GETITEMDATA=336; -const CB_GETITEMHEIGHT=340; -const CB_GETLBTEXT=328; -const CB_GETLBTEXTLEN=329; -const CB_GETLOCALE=346; -const CB_GETTOPINDEX=347; -const CB_INITSTORAGE=353; -const CB_INSERTSTRING=330; -const CB_LIMITTEXT=321; -const CB_RESETCONTENT=331; -const CB_SELECTSTRING=333; -const CB_SETCURSEL=334; -const CB_SETDROPPEDWIDTH=352; -const CB_SETEDITSEL=322; -const CB_SETEXTENDEDUI=341; -const CB_SETHORIZONTALEXTENT=350; -const CB_SETITEMDATA=337; -const CB_SETITEMHEIGHT=339; -const CB_SETLOCALE=345; -const CB_SETTOPINDEX=348; -const CB_SHOWDROPDOWN=335; - -const CBN_CLOSEUP=8; -const CBN_DBLCLK=2; -const CBN_DROPDOWN=7; -const CBN_EDITCHANGE=5; -const CBN_EDITUPDATE=6; -const CBN_ERRSPACE=(-1); -const CBN_KILLFOCUS=4; -const CBN_SELCHANGE=1; -const CBN_SELENDCANCEL=10; -const CBN_SELENDOK=9; -const CBN_SETFOCUS=3; - -const EM_CANUNDO=198; -const EM_CHARFROMPOS=215; -const EM_EMPTYUNDOBUFFER=205; -const EM_FMTLINES=200; -const EM_GETFIRSTVISIBLELINE=206; -const EM_GETHANDLE=189; -const EM_GETLIMITTEXT=213; -const EM_GETLINE=196; -const EM_GETLINECOUNT=186; -const EM_GETMARGINS=212; -const EM_GETMODIFY=184; -const EM_GETPASSWORDCHAR=210; -const EM_GETRECT=178; -const EM_GETSEL=176; -const EM_GETTHUMB=190; -const EM_GETWORDBREAKPROC=209; -const EM_LIMITTEXT=197; -const EM_LINEFROMCHAR=201; -const EM_LINEINDEX=187; -const EM_LINELENGTH=193; -const EM_LINESCROLL=182; -const EM_POSFROMCHAR=214; -const EM_REPLACESEL=194; -const EM_SCROLL=181; -const EM_SCROLLCARET=183; -const EM_SETHANDLE=188; -const EM_SETLIMITTEXT=197; -const EM_SETMARGINS=211; -const EM_SETMODIFY=185; -const EM_SETPASSWORDCHAR=204; -const EM_SETREADONLY=207; -const EM_SETRECT=179; -const EM_SETRECTNP=180; -const EM_SETSEL=177; -const EM_SETTABSTOPS=203; -const EM_SETWORDBREAKPROC=208; -const EM_UNDO=199; - -const EN_CHANGE=768; -const EN_ERRSPACE=1280; -const EN_HSCROLL=1537; -const EN_KILLFOCUS=512; -const EN_MAXTEXT=1281; -const EN_SETFOCUS=256; -const EN_UPDATE=1024; -const EN_VSCROLL=1538; - -const LB_ADDFILE=406; -const LB_ADDSTRING=384; -const LB_DELETESTRING=386; -const LB_DIR=397; -const LB_FINDSTRING=399; -const LB_FINDSTRINGEXACT=418; -const LB_GETANCHORINDEX=413; -const LB_GETCARETINDEX=415; -const LB_GETCOUNT=395; -const LB_GETCURSEL=392; -const LB_GETHORIZONTALEXTENT=403; -const LB_GETITEMDATA=409; -const LB_GETITEMHEIGHT=417; -const LB_GETITEMRECT=408; -const LB_GETLOCALE=422; -const LB_GETSEL=391; -const LB_GETSELCOUNT=400; -const LB_GETSELITEMS=401; -const LB_GETTEXT=393; -const LB_GETTEXTLEN=394; -const LB_GETTOPINDEX=398; -const LB_INITSTORAGE=424; -const LB_INSERTSTRING=385; -const LB_ITEMFROMPOINT=425; -const LB_RESETCONTENT=388; -const LB_SELECTSTRING=396; -const LB_SELITEMRANGE=411; -const LB_SELITEMRANGEEX=387; -const LB_SETANCHORINDEX=412; -const LB_SETCARETINDEX=414; -const LB_SETCOLUMNWIDTH=405; -const LB_SETCOUNT=423; -const LB_SETCURSEL=390; -const LB_SETHORIZONTALEXTENT=404; -const LB_SETITEMDATA=410; -const LB_SETITEMHEIGHT=416; -const LB_SETLOCALE=421; -const LB_SETSEL=389; -const LB_SETTABSTOPS=402; -const LB_SETTOPINDEX=407; - -const LBN_DBLCLK=2; -const LBN_ERRSPACE=-2; -const LBN_KILLFOCUS=5; -const LBN_SELCANCEL=3; -const LBN_SELCHANGE=1; -const LBN_SETFOCUS=4; - -const SBM_ENABLE_ARROWS=228; -const SBM_GETPOS=225; -const SBM_GETRANGE=227; -const SBM_GETSCROLLINFO=234; -const SBM_SETPOS=224; -const SBM_SETRANGE=226; -const SBM_SETRANGEREDRAW=230; -const SBM_SETSCROLLINFO=233; -const STM_GETICON=369; -const STM_GETIMAGE=371; -const STM_SETICON=368; -const STM_SETIMAGE=370; -const STN_CLICKED=0; -const STN_DBLCLK=1; -const STN_DISABLE=3; -const STN_ENABLE=2; - -const DM_GETDEFID = WM_USER; -const DM_SETDEFID = WM_USER+1; -const DM_REPOSITION = WM_USER+2; - -const PSM_PAGEINFO = WM_USER+100; -const PSM_SHEETINFO = WM_USER+101; - -const PSI_SETACTIVE=1; -const PSI_KILLACTIVE=2; -const PSI_APPLY=3; -const PSI_RESET=4; -const PSI_HASHELP=5; -const PSI_HELP=6; -const PSI_CHANGED=1; -const PSI_GUISTART=2; -const PSI_REBOOT=3; -const PSI_GETSIBLINGS=4; - -const DCX_WINDOW=1; -const DCX_CACHE=2; -const DCX_PARENTCLIP=32; -const DCX_CLIPSIBLINGS=16; -const DCX_CLIPCHILDREN=8; -const DCX_NORESETATTRS=4; -const DCX_INTERSECTUPDATE=0x200; -const DCX_LOCKWINDOWUPDATE=0x400; -const DCX_EXCLUDERGN=64; -const DCX_INTERSECTRGN=128; -const DCX_VALIDATE=0x200000; - -const GMDI_GOINTOPOPUPS=2; -const GMDI_USEDISABLED=1; -const FKF_AVAILABLE=2; -const FKF_CLICKON=64; -const FKF_FILTERKEYSON=1; -const FKF_HOTKEYACTIVE=4; -const FKF_HOTKEYSOUND=16; -const FKF_CONFIRMHOTKEY=8; -const FKF_INDICATOR=32; -const HCF_HIGHCONTRASTON=1; -const HCF_AVAILABLE=2; -const HCF_HOTKEYACTIVE=4; -const HCF_CONFIRMHOTKEY=8; -const HCF_HOTKEYSOUND=16; -const HCF_INDICATOR=32; -const HCF_HOTKEYAVAILABLE=64; -const MKF_AVAILABLE=2; -const MKF_CONFIRMHOTKEY=8; -const MKF_HOTKEYACTIVE=4; -const MKF_HOTKEYSOUND=16; -const MKF_INDICATOR=32; -const MKF_MOUSEKEYSON=1; -const MKF_MODIFIERS=64; -const MKF_REPLACENUMBERS=128; -const SERKF_ACTIVE=8; // May be obsolete. Not in recent MS docs. -const SERKF_AVAILABLE=2; -const SERKF_INDICATOR=4; -const SERKF_SERIALKEYSON=1; -const SSF_AVAILABLE=2; -const SSF_SOUNDSENTRYON=1; -const SSTF_BORDER=2; -const SSTF_CHARS=1; -const SSTF_DISPLAY=3; -const SSTF_NONE=0; -const SSGF_DISPLAY=3; -const SSGF_NONE=0; -const SSWF_CUSTOM=4; -const SSWF_DISPLAY=3; -const SSWF_NONE=0; -const SSWF_TITLE=1; -const SSWF_WINDOW=2; -const SKF_AUDIBLEFEEDBACK=64; -const SKF_AVAILABLE=2; -const SKF_CONFIRMHOTKEY=8; -const SKF_HOTKEYACTIVE=4; -const SKF_HOTKEYSOUND=16; -const SKF_INDICATOR=32; -const SKF_STICKYKEYSON=1; -const SKF_TRISTATE=128; -const SKF_TWOKEYSOFF=256; -const TKF_AVAILABLE=2; -const TKF_CONFIRMHOTKEY=8; -const TKF_HOTKEYACTIVE=4; -const TKF_HOTKEYSOUND=16; -const TKF_TOGGLEKEYSON=1; -const MDITILE_SKIPDISABLED=2; -const MDITILE_HORIZONTAL=1; -const MDITILE_VERTICAL=0; - -enum { - VK_LBUTTON = 0x01, - VK_RBUTTON = 0x02, - VK_CANCEL = 0x03, - VK_MBUTTON = 0x04, - //static if (_WIN32_WINNT > = 0x500) { - VK_XBUTTON1 = 0x05, - VK_XBUTTON2 = 0x06, - //} - VK_BACK = 0x08, - VK_TAB = 0x09, - VK_CLEAR = 0x0C, - VK_RETURN = 0x0D, - VK_SHIFT = 0x10, - VK_CONTROL = 0x11, - VK_MENU = 0x12, - VK_PAUSE = 0x13, - VK_CAPITAL = 0x14, - VK_KANA = 0x15, - VK_HANGEUL = 0x15, - VK_HANGUL = 0x15, - VK_JUNJA = 0x17, - VK_FINAL = 0x18, - VK_HANJA = 0x19, - VK_KANJI = 0x19, - VK_ESCAPE = 0x1B, - VK_CONVERT = 0x1C, - VK_NONCONVERT = 0x1D, - VK_ACCEPT = 0x1E, - VK_MODECHANGE = 0x1F, - VK_SPACE = 0x20, - VK_PRIOR = 0x21, - VK_NEXT = 0x22, - VK_END = 0x23, - VK_HOME = 0x24, - VK_LEFT = 0x25, - VK_UP = 0x26, - VK_RIGHT = 0x27, - VK_DOWN = 0x28, - VK_SELECT = 0x29, - VK_PRINT = 0x2A, - VK_EXECUTE = 0x2B, - VK_SNAPSHOT = 0x2C, - VK_INSERT = 0x2D, - VK_DELETE = 0x2E, - VK_HELP = 0x2F, - VK_LWIN = 0x5B, - VK_RWIN = 0x5C, - VK_APPS = 0x5D, - VK_SLEEP = 0x5F, - VK_NUMPAD0 = 0x60, - VK_NUMPAD1 = 0x61, - VK_NUMPAD2 = 0x62, - VK_NUMPAD3 = 0x63, - VK_NUMPAD4 = 0x64, - VK_NUMPAD5 = 0x65, - VK_NUMPAD6 = 0x66, - VK_NUMPAD7 = 0x67, - VK_NUMPAD8 = 0x68, - VK_NUMPAD9 = 0x69, - VK_MULTIPLY = 0x6A, - VK_ADD = 0x6B, - VK_SEPARATOR = 0x6C, - VK_SUBTRACT = 0x6D, - VK_DECIMAL = 0x6E, - VK_DIVIDE = 0x6F, - VK_F1 = 0x70, - VK_F2 = 0x71, - VK_F3 = 0x72, - VK_F4 = 0x73, - VK_F5 = 0x74, - VK_F6 = 0x75, - VK_F7 = 0x76, - VK_F8 = 0x77, - VK_F9 = 0x78, - VK_F10 = 0x79, - VK_F11 = 0x7A, - VK_F12 = 0x7B, - VK_F13 = 0x7C, - VK_F14 = 0x7D, - VK_F15 = 0x7E, - VK_F16 = 0x7F, - VK_F17 = 0x80, - VK_F18 = 0x81, - VK_F19 = 0x82, - VK_F20 = 0x83, - VK_F21 = 0x84, - VK_F22 = 0x85, - VK_F23 = 0x86, - VK_F24 = 0x87, - VK_NUMLOCK = 0x90, - VK_SCROLL = 0x91, - VK_LSHIFT = 0xA0, - VK_RSHIFT = 0xA1, - VK_LCONTROL = 0xA2, - VK_RCONTROL = 0xA3, - VK_LMENU = 0xA4, - VK_RMENU = 0xA5, - //static if (_WIN32_WINNT > = 0x500) { - VK_BROWSER_BACK = 0xA6, - VK_BROWSER_FORWARD = 0xA7, - VK_BROWSER_REFRESH = 0xA8, - VK_BROWSER_STOP = 0xA9, - VK_BROWSER_SEARCH = 0xAA, - VK_BROWSER_FAVORITES = 0xAB, - VK_BROWSER_HOME = 0xAC, - VK_VOLUME_MUTE = 0xAD, - VK_VOLUME_DOWN = 0xAE, - VK_VOLUME_UP = 0xAF, - VK_MEDIA_NEXT_TRACK = 0xB0, - VK_MEDIA_PREV_TRACK = 0xB1, - VK_MEDIA_STOP = 0xB2, - VK_MEDIA_PLAY_PAUSE = 0xB3, - VK_LAUNCH_MAIL = 0xB4, - VK_LAUNCH_MEDIA_SELECT = 0xB5, - VK_LAUNCH_APP1 = 0xB6, - VK_LAUNCH_APP2 = 0xB7, - //} - VK_OEM_1 = 0xBA, - //static if (_WIN32_WINNT > = 0x500) { - VK_OEM_PLUS = 0xBB, - VK_OEM_COMMA = 0xBC, - VK_OEM_MINUS = 0xBD, - VK_OEM_PERIOD = 0xBE, - //} - VK_OEM_2 = 0xBF, - VK_OEM_3 = 0xC0, - VK_OEM_4 = 0xDB, - VK_OEM_5 = 0xDC, - VK_OEM_6 = 0xDD, - VK_OEM_7 = 0xDE, - VK_OEM_8 = 0xDF, - //static if (_WIN32_WINNT > = 0x500) { - VK_OEM_102 = 0xE2, - //} - VK_PROCESSKEY = 0xE5, - //static if (_WIN32_WINNT > = 0x500) { - VK_PACKET = 0xE7, - //} - VK_ATTN = 0xF6, - VK_CRSEL = 0xF7, - VK_EXSEL = 0xF8, - VK_EREOF = 0xF9, - VK_PLAY = 0xFA, - VK_ZOOM = 0xFB, - VK_NONAME = 0xFC, - VK_PA1 = 0xFD, - VK_OEM_CLEAR = 0xFE, -} - -const TME_HOVER=1; -const TME_LEAVE=2; -const TME_QUERY=0x40000000; -const TME_CANCEL=0x80000000; - -const HOVER_DEFAULT=0xFFFFFFFF; - -const MK_LBUTTON=1; -const MK_RBUTTON=2; -const MK_SHIFT=4; -const MK_CONTROL=8; -const MK_MBUTTON=16; -static if (_WIN32_WINNT >= 0x500) { -const MK_XBUTTON1=32; -const MK_XBUTTON2=64; -} -const TPM_CENTERALIGN=4; -const TPM_LEFTALIGN=0; -const TPM_RIGHTALIGN=8; -const TPM_LEFTBUTTON=0; -const TPM_RIGHTBUTTON=2; -const TPM_HORIZONTAL=0; -const TPM_VERTICAL=64; -const TPM_TOPALIGN=0; -const TPM_VCENTERALIGN=16; -const TPM_BOTTOMALIGN=32; -const TPM_NONOTIFY=128; -const TPM_RETURNCMD=256; -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) { -const TPM_RECURSE=1; -} - -const HELP_COMMAND=0x102; -const HELP_CONTENTS=3; -const HELP_CONTEXT=1; -const HELP_CONTEXTPOPUP=8; -const HELP_FORCEFILE=9; -const HELP_HELPONHELP=4; -const HELP_INDEX=3; -const HELP_KEY=0x101; -const HELP_MULTIKEY=0x201; -const HELP_PARTIALKEY=0x105; -const HELP_QUIT=2; -const HELP_SETCONTENTS=5; -const HELP_SETINDEX=5; -const HELP_SETWINPOS=0x203; -const HELP_CONTEXTMENU=0xa; -const HELP_FINDER=0xb; -const HELP_WM_HELP=0xc; -const HELP_TCARD=0x8000; -const HELP_TCARD_DATA=16; -const HELP_TCARD_OTHER_CALLER=0x11; - -const IDH_NO_HELP=28440; -const IDH_MISSING_CONTEXT=28441; -const IDH_GENERIC_HELP_BUTTON=28442; -const IDH_OK=28443; -const IDH_CANCEL=28444; -const IDH_HELP=28445; - -const LB_CTLCODE=0; -const LB_OKAY=0; -const LB_ERR=-1; -const LB_ERRSPACE=-2; - -const CB_OKAY=0; -const CB_ERR=-1; -const CB_ERRSPACE=-2; - -const HIDE_WINDOW=0; - -const SHOW_OPENWINDOW=1; -const SHOW_ICONWINDOW=2; -const SHOW_FULLSCREEN=3; -const SHOW_OPENNOACTIVATE=4; - -const SW_PARENTCLOSING=1; -const SW_OTHERZOOM=2; -const SW_PARENTOPENING=3; -const SW_OTHERUNZOOM=4; - -const KF_EXTENDED=256; -const KF_DLGMODE=2048; -const KF_MENUMODE=4096; -const KF_ALTDOWN=8192; -const KF_REPEAT=16384; -const KF_UP=32768; - -const WSF_VISIBLE=1; - -const PWR_OK=1; -const PWR_FAIL=-1; -const PWR_SUSPENDREQUEST=1; -const PWR_SUSPENDRESUME=2; -const PWR_CRITICALRESUME=3; - -const NFR_ANSI=1; -const NFR_UNICODE=2; -const NF_QUERY=3; -const NF_REQUERY=4; - -const MENULOOP_WINDOW=0; -const MENULOOP_POPUP=1; - -const WMSZ_LEFT=1; -const WMSZ_RIGHT=2; -const WMSZ_TOP=3; -const WMSZ_TOPLEFT=4; -const WMSZ_TOPRIGHT=5; -const WMSZ_BOTTOM=6; -const WMSZ_BOTTOMLEFT=7; -const WMSZ_BOTTOMRIGHT=8; - -const HTERROR=-2; -const HTTRANSPARENT=-1; -const HTNOWHERE=0; -const HTCLIENT=1; -const HTCAPTION=2; -const HTSYSMENU=3; -const HTGROWBOX=4; -const HTSIZE=4; -const HTMENU=5; -const HTHSCROLL=6; -const HTVSCROLL=7; -const HTMINBUTTON=8; -const HTMAXBUTTON=9; -const HTREDUCE=8; -const HTZOOM=9; -const HTLEFT=10; -const HTSIZEFIRST=10; -const HTRIGHT=11; -const HTTOP=12; -const HTTOPLEFT=13; -const HTTOPRIGHT=14; -const HTBOTTOM=15; -const HTBOTTOMLEFT=16; -const HTBOTTOMRIGHT=17; -const HTSIZELAST=17; -const HTBORDER=18; -const HTOBJECT=19; -const HTCLOSE=20; -const HTHELP=21; - -const MA_ACTIVATE=1; -const MA_ACTIVATEANDEAT=2; -const MA_NOACTIVATE=3; -const MA_NOACTIVATEANDEAT=4; - -const SIZE_RESTORED=0; -const SIZE_MINIMIZED=1; -const SIZE_MAXIMIZED=2; -const SIZE_MAXSHOW=3; -const SIZE_MAXHIDE=4; - -const SIZENORMAL=0; -const SIZEICONIC=1; -const SIZEFULLSCREEN=2; -const SIZEZOOMSHOW=3; -const SIZEZOOMHIDE=4; - -const WVR_ALIGNTOP=16; -const WVR_ALIGNLEFT=32; -const WVR_ALIGNBOTTOM=64; -const WVR_ALIGNRIGHT=128; -const WVR_HREDRAW=256; -const WVR_VREDRAW=512; -const WVR_REDRAW=(WVR_HREDRAW|WVR_VREDRAW); -const WVR_VALIDRECTS=1024; - -const PRF_CHECKVISIBLE=1; -const PRF_NONCLIENT=2; -const PRF_CLIENT=4; -const PRF_ERASEBKGND=8; -const PRF_CHILDREN=16; -const PRF_OWNED=32; - -const IDANI_OPEN=1; -const IDANI_CLOSE=2; -const IDANI_CAPTION=3; - -const WPF_RESTORETOMAXIMIZED=2; -const WPF_SETMINPOSITION=1; - -const ODT_MENU=1; -const ODT_LISTBOX=2; -const ODT_COMBOBOX=3; -const ODT_BUTTON=4; -const ODT_STATIC=5; -const ODA_DRAWENTIRE=1; -const ODA_SELECT=2; -const ODA_FOCUS=4; -const ODS_SELECTED=1; -const ODS_GRAYED=2; -const ODS_DISABLED=4; -const ODS_CHECKED=8; -const ODS_FOCUS=16; -const ODS_DEFAULT=32; -const ODS_COMBOBOXEDIT=4096; - -const IDHOT_SNAPWINDOW=-1; -const IDHOT_SNAPDESKTOP=-2; - -const DBWF_LPARAMPOINTER=0x8000; -const DLGWINDOWEXTRA=30; -const MNC_IGNORE=0; -const MNC_CLOSE=1; -const MNC_EXECUTE=2; -const MNC_SELECT=3; -const DOF_EXECUTABLE=0x8001; -const DOF_DOCUMENT=0x8002; -const DOF_DIRECTORY=0x8003; -const DOF_MULTIPLE=0x8004; -const DOF_PROGMAN=1; -const DOF_SHELLDATA=2; -const DO_DROPFILE=0x454C4946; -const DO_PRINTFILE=0x544E5250; - -const SW_SCROLLCHILDREN=1; -const SW_INVALIDATE=2; -const SW_ERASE=4; - -const SC_SIZE=0xF000; -const SC_MOVE=0xF010; -const SC_MINIMIZE=0xF020; -const SC_ICON=0xf020; -const SC_MAXIMIZE=0xF030; -const SC_ZOOM=0xF030; -const SC_NEXTWINDOW=0xF040; -const SC_PREVWINDOW=0xF050; -const SC_CLOSE=0xF060; -const SC_VSCROLL=0xF070; -const SC_HSCROLL=0xF080; -const SC_MOUSEMENU=0xF090; -const SC_KEYMENU=0xF100; -const SC_ARRANGE=0xF110; -const SC_RESTORE=0xF120; -const SC_TASKLIST=0xF130; -const SC_SCREENSAVE=0xF140; -const SC_HOTKEY=0xF150; -const SC_DEFAULT=0xF160; -const SC_MONITORPOWER=0xF170; -const SC_CONTEXTHELP=0xF180; -const SC_SEPARATOR=0xF00F; - -const EC_LEFTMARGIN=1; -const EC_RIGHTMARGIN=2; -const EC_USEFONTINFO=0xffff; - -const DC_HASDEFID=0x534B; - -const DLGC_WANTARROWS=1; -const DLGC_WANTTAB=2; -const DLGC_WANTALLKEYS=4; -const DLGC_WANTMESSAGE=4; -const DLGC_HASSETSEL=8; -const DLGC_DEFPUSHBUTTON=16; -const DLGC_UNDEFPUSHBUTTON=32; -const DLGC_RADIOBUTTON=64; -const DLGC_WANTCHARS=128; -const DLGC_STATIC=256; -const DLGC_BUTTON=0x2000; - -const WA_INACTIVE=0; -const WA_ACTIVE=1; -const WA_CLICKACTIVE=2; - -const ICON_SMALL=0; -const ICON_BIG=1; -static if (_WIN32_WINNT >= 0x501) { -const ICON_SMALL2=2; -} - -const HBITMAP - HBMMENU_CALLBACK = cast(HBITMAP)-1, - HBMMENU_SYSTEM = cast(HBITMAP)1, - HBMMENU_MBAR_RESTORE = cast(HBITMAP)2, - HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3, - HBMMENU_MBAR_CLOSE = cast(HBITMAP)5, - HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6, - HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7, - HBMMENU_POPUP_CLOSE = cast(HBITMAP)8, - HBMMENU_POPUP_RESTORE = cast(HBITMAP)9, - HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10, - HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; - -const MOD_ALT=1; -const MOD_CONTROL=2; -const MOD_SHIFT=4; -const MOD_WIN=8; -const MOD_IGNORE_ALL_MODIFIER=1024; -const MOD_ON_KEYUP=2048; -const MOD_RIGHT=16384; -const MOD_LEFT=32768; - -const LLKHF_EXTENDED=(KF_EXTENDED >> 8); -const LLKHF_INJECTED=0x00000010; -const LLKHF_ALTDOWN=(KF_ALTDOWN >> 8); -const LLKHF_UP=(KF_UP >> 8); - -static if (WINVER >= 0x500) { -const FLASHW_STOP=0; -const FLASHW_CAPTION=1; -const FLASHW_TRAY=2; -const FLASHW_ALL=(FLASHW_CAPTION|FLASHW_TRAY); -const FLASHW_TIMER=4; -const FLASHW_TIMERNOFG=12; -} - -const CURSOR_SHOWING=0x00000001; -const WS_ACTIVECAPTION=0x00000001; -static if (_WIN32_WINNT >= 0x403) { -const INPUT_MOUSE=0x00000000; -const INPUT_KEYBOARD=0x00000001; -const INPUT_HARDWARE=0x00000002; -} -static if (WINVER >= 0x400) { -const ENDSESSION_LOGOFF = 0x80000000; -} - -static if (WINVER >= 0x500) { -const CHILDID_SELF = 0; -const OBJID_WINDOW = 0x00000000; -const OBJID_SYSMENU = 0xFFFFFFFF; -const OBJID_TITLEBAR = 0xFFFFFFFE; -const OBJID_MENU = 0xFFFFFFFD; -const OBJID_CLIENT = 0xFFFFFFFC; -const OBJID_VSCROLL = 0xFFFFFFFB; -const OBJID_HSCROLL = 0xFFFFFFFA; -const OBJID_SIZEGRIP = 0xFFFFFFF9; -const OBJID_CARET = 0xFFFFFFF8; -const OBJID_CURSOR = 0xFFFFFFF7; -const OBJID_ALERT = 0xFFFFFFF6; -const OBJID_SOUND = 0xFFFFFFF5; - -const GUI_CARETBLINKING = 0x00000001; -const GUI_INMOVESIZE = 0x00000002; -const GUI_INMENUMODE = 0x00000004; -const GUI_SYSTEMMENUMODE = 0x00000008; -const GUI_POPUPMENUMODE = 0x00000010; - -static if (_WIN32_WINNT >= 0x501) { -const GUI_16BITTASK = 0x00000020; -} -const WINEVENT_OUTOFCONTEXT=0x0000; -const WINEVENT_SKIPOWNTHREAD=0x0001; -const WINEVENT_SKIPOWNPROCESS=0x0002; -const WINEVENT_INCONTEXT=0x0004; -const AW_HOR_POSITIVE=0x00000001; -const AW_HOR_NEGATIVE=0x00000002; -const AW_VER_POSITIVE=0x00000004; -const AW_VER_NEGATIVE=0x00000008; -const AW_CENTER=0x00000010; -const AW_HIDE=0x00010000; -const AW_ACTIVATE=0x00020000; -const AW_SLIDE=0x00040000; -const AW_BLEND=0x00080000; -const DEVICE_NOTIFY_WINDOW_HANDLE=0x00000000; -const DEVICE_NOTIFY_SERVICE_HANDLE=0x00000001; - -static if (_WIN32_WINNT >= 0x501) { -const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES=0x00000004; -} - -const EVENT_MIN = 0x00000001; -const EVENT_SYSTEM_SOUND = 0x00000001; -const EVENT_SYSTEM_ALERT = 0x00000002; -const EVENT_SYSTEM_FOREGROUND = 0x00000003; -const EVENT_SYSTEM_MENUSTART = 0x00000004; -const EVENT_SYSTEM_MENUEND = 0x00000005; -const EVENT_SYSTEM_MENUPOPUPSTART = 0x00000006; -const EVENT_SYSTEM_MENUPOPUPEND = 0x00000007; -const EVENT_SYSTEM_CAPTURESTART = 0x00000008; -const EVENT_SYSTEM_CAPTUREEND = 0x00000009; -const EVENT_SYSTEM_MOVESIZESTART = 0x0000000a; -const EVENT_SYSTEM_MOVESIZEEND = 0x0000000b; -const EVENT_SYSTEM_CONTEXTHELPSTART = 0x0000000c; -const EVENT_SYSTEM_CONTEXTHELPEND = 0x0000000d; -const EVENT_SYSTEM_DRAGDROPSTART = 0x0000000e; -const EVENT_SYSTEM_DRAGDROPEND = 0x0000000f; -const EVENT_SYSTEM_DIALOGSTART = 0x00000010; -const EVENT_SYSTEM_DIALOGEND = 0x00000011; -const EVENT_SYSTEM_SCROLLINGSTART = 0x00000012; -const EVENT_SYSTEM_SCROLLINGEND = 0x00000013; -const EVENT_SYSTEM_SWITCHSTART = 0x00000014; -const EVENT_SYSTEM_SWITCHEND = 0x00000015; -const EVENT_SYSTEM_MINIMIZESTART = 0x00000016; -const EVENT_SYSTEM_MINIMIZEEND = 0x00000017; - -const EVENT_OBJECT_CREATE = 0x00008000; -const EVENT_OBJECT_DESTROY = 0x00008001; -const EVENT_OBJECT_SHOW = 0x00008002; -const EVENT_OBJECT_HIDE = 0x00008003; -const EVENT_OBJECT_REORDER = 0x00008004; -const EVENT_OBJECT_FOCUS = 0x00008005; -const EVENT_OBJECT_SELECTION = 0x00008006; -const EVENT_OBJECT_SELECTIONADD = 0x00008007; -const EVENT_OBJECT_SELECTIONREMOVE = 0x00008008; -const EVENT_OBJECT_SELECTIONWITHIN = 0x00008009; -const EVENT_OBJECT_STATECHANGE = 0x0000800a; -const EVENT_OBJECT_LOCATIONCHANGE = 0x0000800b; -const EVENT_OBJECT_NAMECHANGE = 0x0000800c; -const EVENT_OBJECT_DESCRIPTIONCHANGE = 0x0000800d; -const EVENT_OBJECT_VALUECHANGE = 0x0000800e; -const EVENT_OBJECT_PARENTCHANGE = 0x0000800f; -const EVENT_OBJECT_HELPCHANGE = 0x00008010; -const EVENT_OBJECT_DEFACTIONCHANGE = 0x00008011; -const EVENT_OBJECT_ACCELERATORCHANGE = 0x00008012; - -static if (_WIN32_WINNT >= 0x501) { -const EVENT_CONSOLE_CARET = 0x00004001; -const EVENT_CONSOLE_UPDATE_REGION = 0x00004002; -const EVENT_CONSOLE_UPDATE_SIMPLE = 0x00004003; -const EVENT_CONSOLE_UPDATE_SCROLL = 0x00004004; -const EVENT_CONSOLE_LAYOUT = 0x00004005; -const EVENT_CONSOLE_START_APPLICATION = 0x00004006; -const EVENT_CONSOLE_END_APPLICATION = 0x00004007; - -const CONSOLE_CARET_SELECTION = 0x00000001; -const CONSOLE_CARET_VISIBLE = 0x00000002; - -const CONSOLE_APPLICATION_16BIT = 0x00000001; - -} -const EVENT_MAX=0x7fffffff; - -}//(WINVER >= 0x500) - -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x490)) { -const DWORD ASFW_ANY = -1; -const LSFW_LOCK = 1; -const LSFW_UNLOCK = 2; -} - -static if (_WIN32_WINNT >= 0x500) { -const LWA_COLORKEY=0x01; -const LWA_ALPHA=0x02; -const ULW_COLORKEY=0x01; -const ULW_ALPHA=0x02; -const ULW_OPAQUE=0x04; -} - -const GA_PARENT = 1; -const GA_ROOT = 2; -const GA_ROOTOWNER = 3; - -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) { - -const MONITOR_DEFAULTTONULL = 0; -const MONITOR_DEFAULTTOPRIMARY = 1; -const MONITOR_DEFAULTTONEAREST = 2; -const MONITORINFOF_PRIMARY = 1; - -const EDS_RAWMODE = 0x00000002; - -const ISMEX_NOSEND = 0x00000000; -const ISMEX_SEND = 0x00000001; -const ISMEX_NOTIFY = 0x00000002; -const ISMEX_CALLBACK = 0x00000004; -const ISMEX_REPLIED = 0x00000008; -} - -static if (_WIN32_WINNT >= 0x500) { -const GR_GDIOBJECTS = 0; -const GR_USEROBJECTS = 1; -} - -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x490)) { -const GMMP_USE_DISPLAY_POINTS = 1; -const GMMP_USE_HIGH_RESOLUTION_POINTS = 2; -} - -static if (_WIN32_WINNT >= 0x501) { -const PW_CLIENTONLY = 0x00000001; -const RIM_INPUT = 0x00000000; -const RIM_INPUTSINK = 0x00000001; -const RIM_TYPEMOUSE = 0x00000000; -const RIM_TYPEKEYBOARD = 0x00000001; -const RIM_TYPEHID = 0x00000002; -const MOUSE_MOVE_RELATIVE = 0x00000000; -const MOUSE_MOVE_ABSOLUTE = 0x00000001; -const MOUSE_VIRTUAL_DESKTOP = 0x00000002; -const MOUSE_ATTRIBUTES_CHANGED = 0x00000004; -const RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; -const RI_MOUSE_LEFT_BUTTON_UP = 0x0002; -const RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; -const RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; -const RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; -const RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; -const RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; -const RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; -const RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; -const RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; -const RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; -const RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; -const RI_MOUSE_BUTTON_4_DOWN = 0x0040; -const RI_MOUSE_BUTTON_4_UP = 0x0080; -const RI_MOUSE_BUTTON_5_DOWN = 0x0100; -const RI_MOUSE_BUTTON_5_UP = 0x0200; -const RI_MOUSE_WHEEL = 0x0400; -const KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; -const RI_KEY_MAKE = 0x0000; -const RI_KEY_BREAK = 0x0001; -const RI_KEY_E0 = 0x0002; -const RI_KEY_E1 = 0x0004; -const RI_KEY_TERMSRV_SET_LED = 0x0008; -const RI_KEY_TERMSRV_SHADOW = 0x0010; - -const RID_INPUT = 0x10000003; -const RID_HEADER = 0x10000005; - -const RIDI_PREPARSEDDATA = 0x20000005; -const RIDI_DEVICENAME = 0x20000007; -const RIDI_DEVICEINFO = 0x2000000b; - -const RIDEV_REMOVE = 0x00000001; -const RIDEV_EXCLUDE = 0x00000010; -const RIDEV_PAGEONLY = 0x00000020; -const RIDEV_NOLEGACY = 0x00000030; -const RIDEV_INPUTSINK = 0x00000100; -const RIDEV_CAPTUREMOUSE = 0x00000200; -const RIDEV_NOHOTKEYS = 0x00000200; -const RIDEV_APPKEYS = 0x00000400; -} - -// Callbacks -// --------- -extern (Windows) { - alias BOOL function (HWND, UINT, WPARAM, LPARAM) DLGPROC; - alias void function (HWND, UINT, UINT, DWORD) TIMERPROC; - alias BOOL function (HDC, LPARAM, int) GRAYSTRINGPROC; - alias LRESULT function (int, WPARAM, LPARAM) HOOKPROC; - alias BOOL function (HWND, LPCSTR, HANDLE) PROPENUMPROCA; - alias BOOL function (HWND, LPCWSTR, HANDLE) PROPENUMPROCW; - alias BOOL function (HWND, LPSTR, HANDLE, DWORD) PROPENUMPROCEXA; - alias BOOL function (HWND, LPWSTR, HANDLE, DWORD) PROPENUMPROCEXW; - alias int function (LPSTR, int, int, int) EDITWORDBREAKPROCA; - alias int function (LPWSTR, int, int, int) EDITWORDBREAKPROCW; - alias LRESULT function (HWND, UINT, WPARAM, LPARAM) WNDPROC; - alias BOOL function (HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; - alias BOOL function (HWND, LPARAM) WNDENUMPROC; - alias BOOL function (HWND, LPARAM) ENUMWINDOWSPROC; - alias void function (LPHELPINFO) MSGBOXCALLBACK; - - static if (WINVER >= 0x410) { - alias BOOL function (HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; - } - alias BOOL function (LPSTR, LPARAM) NAMEENUMPROCA; - alias BOOL function (LPWSTR, LPARAM) NAMEENUMPROCW; - alias void function (HWND, UINT, DWORD, LRESULT) SENDASYNCPROC; - - alias NAMEENUMPROCA DESKTOPENUMPROCA; - alias NAMEENUMPROCW DESKTOPENUMPROCW; - alias NAMEENUMPROCA WINSTAENUMPROCA; - alias NAMEENUMPROCW WINSTAENUMPROCW; -} - -alias HANDLE HHOOK; -alias HANDLE HDWP; -alias HANDLE HDEVNOTIFY; - -struct ACCEL { - BYTE fVirt; - WORD key; - WORD cmd; -} -alias ACCEL* LPACCEL; - -struct ACCESSTIMEOUT { - UINT cbSize = ACCESSTIMEOUT.sizeof; - DWORD dwFlags; - DWORD iTimeOutMSec; -} -alias ACCESSTIMEOUT* LPACCESSTIMEOUT; - -struct ANIMATIONINFO { - UINT cbSize = ANIMATIONINFO.sizeof; - int iMinAnimate; -} -alias ANIMATIONINFO* LPANIMATIONINFO; - -struct CREATESTRUCTA { - LPVOID lpCreateParams; - HINSTANCE hInstance; - HMENU hMenu; - HWND hwndParent; - int cy; - int cx; - int y; - int x; - LONG style; - LPCSTR lpszName; - LPCSTR lpszClass; - DWORD dwExStyle; -} -alias CREATESTRUCTA* LPCREATESTRUCTA; - -struct CREATESTRUCTW { - LPVOID lpCreateParams; - HINSTANCE hInstance; - HMENU hMenu; - HWND hwndParent; - int cy; - int cx; - int y; - int x; - LONG style; - LPCWSTR lpszName; - LPCWSTR lpszClass; - DWORD dwExStyle; -} -alias CREATESTRUCTW* LPCREATESTRUCTW; - -struct CBT_CREATEWNDA { - LPCREATESTRUCTA lpcs; - HWND hwndInsertAfter; -} -alias CBT_CREATEWNDA* LPCBT_CREATEWNDA; - -struct CBT_CREATEWNDW { - LPCREATESTRUCTW lpcs; - HWND hwndInsertAfter; -} -alias CBT_CREATEWNDW* LPCBT_CREATEWNDW; - -struct CBTACTIVATESTRUCT { - BOOL fMouse; - HWND hWndActive; -} -alias CBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT; - -struct CLIENTCREATESTRUCT { - HANDLE hWindowMenu; - UINT idFirstChild; -} -alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT; - -struct COMPAREITEMSTRUCT { - UINT CtlType; - UINT CtlID; - HWND hwndItem; - UINT itemID1; - DWORD itemData1; - UINT itemID2; - DWORD itemData2; - DWORD dwLocaleId; -} -alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; - -struct COPYDATASTRUCT { - DWORD dwData; - DWORD cbData; - PVOID lpData; -} -alias COPYDATASTRUCT* PCOPYDATASTRUCT; - -struct CURSORSHAPE { - int xHotSpot; - int yHotSpot; - int cx; - int cy; - int cbWidth; - BYTE Planes; - BYTE BitsPixel; -} -alias CURSORSHAPE* LPCURSORSHAPE; - -struct CWPRETSTRUCT { - LRESULT lResult; - LPARAM lParam; - WPARAM wParam; - DWORD message; - HWND hwnd; -} - -struct CWPSTRUCT { - LPARAM lParam; - WPARAM wParam; - UINT message; - HWND hwnd; -} -alias CWPSTRUCT* PCWPSTRUCT; - -struct DEBUGHOOKINFO { - DWORD idThread; - DWORD idThreadInstaller; - LPARAM lParam; - WPARAM wParam; - int code; -} -alias DEBUGHOOKINFO* PDEBUGHOOKINFO, LPDEBUGHOOKINFO; - -struct DELETEITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - HWND hwndItem; - UINT itemData; -} -alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT; - -align(2): -struct DLGITEMTEMPLATE { - DWORD style; - DWORD dwExtendedStyle; - short x; - short y; - short cx; - short cy; - WORD id; -} -alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE; - -struct DLGTEMPLATE { - DWORD style; - DWORD dwExtendedStyle; - WORD cdit; - short x; - short y; - short cx; - short cy; -} -alias DLGTEMPLATE* LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW; -alias CPtr!(DLGTEMPLATE) LPCDLGTEMPLATE; - -align: - -struct DRAWITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - UINT itemAction; - UINT itemState; - HWND hwndItem; - HDC hDC; - RECT rcItem; - DWORD itemData; -} -alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT; - -struct DRAWTEXTPARAMS { - UINT cbSize = DRAWTEXTPARAMS.sizeof; - int iTabLength; - int iLeftMargin; - int iRightMargin; - UINT uiLengthDrawn; -} -alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS; - -struct PAINTSTRUCT { - HDC hdc; - BOOL fErase; - RECT rcPaint; - BOOL fRestore; - BOOL fIncUpdate; - BYTE[32] rgbReserved; -} -alias PAINTSTRUCT* LPPAINTSTRUCT; - -struct MSG { - HWND hwnd; - UINT message; - WPARAM wParam; - LPARAM lParam; - DWORD time; - POINT pt; -} -alias MSG* LPMSG, PMSG; - -struct ICONINFO { - BOOL fIcon; - DWORD xHotspot; - DWORD yHotspot; - HBITMAP hbmMask; - HBITMAP hbmColor; -} -alias ICONINFO* PICONINFO; - -struct NMHDR { - HWND hwndFrom; - UINT idFrom; - UINT code; -} -alias NMHDR* LPNMHDR; - -struct WNDCLASSA { - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCSTR lpszMenuName; - LPCSTR lpszClassName; -} -alias WNDCLASSA* LPWNDCLASSA, PWNDCLASSA; - -struct WNDCLASSW { - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCWSTR lpszMenuName; - LPCWSTR lpszClassName; -} -alias WNDCLASSW* LPWNDCLASSW, PWNDCLASSW; - -struct WNDCLASSEXA { - UINT cbSize = WNDCLASSEXA.sizeof; - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCSTR lpszMenuName; - LPCSTR lpszClassName; - HICON hIconSm; -} -alias WNDCLASSEXA* LPWNDCLASSEXA, PWNDCLASSEXA; - -struct WNDCLASSEXW { - UINT cbSize = WNDCLASSEXW.sizeof; - UINT style; - WNDPROC lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - HINSTANCE hInstance; - HICON hIcon; - HCURSOR hCursor; - HBRUSH hbrBackground; - LPCWSTR lpszMenuName; - LPCWSTR lpszClassName; - HICON hIconSm; -} -alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW; - -struct MENUITEMINFOA { - UINT cbSize = MENUITEMINFOA.sizeof; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - LPSTR dwTypeData; - UINT cch; - static if (_WIN32_WINNT >= 0x500) { - HBITMAP hbmpItem; - } -} -alias MENUITEMINFOA* LPMENUITEMINFOA; -alias CPtr!(MENUITEMINFOA) LPCMENUITEMINFOA; - -struct MENUITEMINFOW { - UINT cbSize = MENUITEMINFOW.sizeof; - UINT fMask; - UINT fType; - UINT fState; - UINT wID; - HMENU hSubMenu; - HBITMAP hbmpChecked; - HBITMAP hbmpUnchecked; - DWORD dwItemData; - LPWSTR dwTypeData; - UINT cch; - static if (_WIN32_WINNT >= 0x500) { - HBITMAP hbmpItem; - } -} -alias MENUITEMINFOW* LPMENUITEMINFOW; -alias CPtr!(MENUITEMINFOW) LPCMENUITEMINFOW; - -struct SCROLLINFO { - UINT cbSize = this.sizeof; - UINT fMask; - int nMin; - int nMax; - UINT nPage; - int nPos; - int nTrackPos; -} -alias SCROLLINFO* LPSCROLLINFO; -alias CPtr!(SCROLLINFO) LPCSCROLLINFO; - -struct WINDOWPLACEMENT { - UINT length; - UINT flags; - UINT showCmd; - POINT ptMinPosition; - POINT ptMaxPosition; - RECT rcNormalPosition; -} -alias WINDOWPLACEMENT* LPWINDOWPLACEMENT, PWINDOWPLACEMENT; - -struct MENUITEMTEMPLATEHEADER { - WORD versionNumber; - WORD offset; -} - -struct MENUITEMTEMPLATE { - WORD mtOption; - WORD mtID; - WCHAR mtString[1]; -} - -alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW; - -alias MENUTEMPLATE* LPMENUTEMPLATEA, LPMENUTEMPLATEW, LPMENUTEMPLATE; - -struct HELPINFO { - UINT cbSize = this.sizeof; - int iContextType; - int iCtrlId; - HANDLE hItemHandle; - DWORD dwContextId; - POINT MousePos; -} -alias HELPINFO* LPHELPINFO; - -struct MSGBOXPARAMSA { - UINT cbSize = this.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCSTR lpszText; - LPCSTR lpszCaption; - DWORD dwStyle; - LPCSTR lpszIcon; - DWORD dwContextHelpId; - MSGBOXCALLBACK lpfnMsgBoxCallback; - DWORD dwLanguageId; -} -alias MSGBOXPARAMSA* PMSGBOXPARAMSA, LPMSGBOXPARAMSA; - -struct MSGBOXPARAMSW { - UINT cbSize = this.sizeof; - HWND hwndOwner; - HINSTANCE hInstance; - LPCWSTR lpszText; - LPCWSTR lpszCaption; - DWORD dwStyle; - LPCWSTR lpszIcon; - DWORD dwContextHelpId; - MSGBOXCALLBACK lpfnMsgBoxCallback; - DWORD dwLanguageId; -} -alias MSGBOXPARAMSW* PMSGBOXPARAMSW, LPMSGBOXPARAMSW; - -struct USEROBJECTFLAGS { - BOOL fInherit; - BOOL fReserved; - DWORD dwFlags; -} - -struct FILTERKEYS { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iWaitMSec; - DWORD iDelayMSec; - DWORD iRepeatMSec; - DWORD iBounceMSec; -} - -struct HIGHCONTRASTA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPSTR lpszDefaultScheme; -} -alias HIGHCONTRASTA* LPHIGHCONTRASTA; - -struct HIGHCONTRASTW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPWSTR lpszDefaultScheme; -} -alias HIGHCONTRASTW* LPHIGHCONTRASTW; - -struct ICONMETRICSA { - UINT cbSize = this.sizeof; - int iHorzSpacing; - int iVertSpacing; - int iTitleWrap; - LOGFONTA lfFont; -} -alias ICONMETRICSA* LPICONMETRICSA; - -struct ICONMETRICSW { - UINT cbSize = this.sizeof; - int iHorzSpacing; - int iVertSpacing; - int iTitleWrap; - LOGFONTW lfFont; -} -alias ICONMETRICSW* LPICONMETRICSW; - -struct MINIMIZEDMETRICS { - UINT cbSize = this.sizeof; - int iWidth; - int iHorzGap; - int iVertGap; - int iArrange; -} -alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS; - -struct MOUSEKEYS { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iMaxSpeed; - DWORD iTimeToMaxSpeed; - DWORD iCtrlSpeed; - DWORD dwReserved1; - DWORD dwReserved2; -} -alias MOUSEKEYS* LPMOUSEKEYS; - -struct NONCLIENTMETRICSA { - UINT cbSize = this.sizeof; - 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; -} -alias NONCLIENTMETRICSA* LPNONCLIENTMETRICSA; - -struct NONCLIENTMETRICSW { - UINT cbSize = this.sizeof; - 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; -} -alias NONCLIENTMETRICSW* LPNONCLIENTMETRICSW; - -struct SERIALKEYSA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPSTR lpszActivePort; - LPSTR lpszPort; - UINT iBaudRate; - UINT iPortState; - UINT iActive; -} -alias SERIALKEYSA* LPSERIALKEYSA; - -struct SERIALKEYSW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - LPWSTR lpszActivePort; - LPWSTR lpszPort; - UINT iBaudRate; - UINT iPortState; - UINT iActive; -} -alias SERIALKEYSW* LPSERIALKEYSW; - -struct SOUNDSENTRYA { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iFSTextEffect; - DWORD iFSTextEffectMSec; - DWORD iFSTextEffectColorBits; - DWORD iFSGrafEffect; - DWORD iFSGrafEffectMSec; - DWORD iFSGrafEffectColor; - DWORD iWindowsEffect; - DWORD iWindowsEffectMSec; - LPSTR lpszWindowsEffectDLL; - DWORD iWindowsEffectOrdinal; -} -alias SOUNDSENTRYA* LPSOUNDSENTRYA; - -struct SOUNDSENTRYW { - UINT cbSize = this.sizeof; - DWORD dwFlags; - DWORD iFSTextEffect; - DWORD iFSTextEffectMSec; - DWORD iFSTextEffectColorBits; - DWORD iFSGrafEffect; - DWORD iFSGrafEffectMSec; - DWORD iFSGrafEffectColor; - DWORD iWindowsEffect; - DWORD iWindowsEffectMSec; - LPWSTR lpszWindowsEffectDLL; - DWORD iWindowsEffectOrdinal; -} -alias SOUNDSENTRYW* LPSOUNDSENTRYW; - -struct STICKYKEYS { - DWORD cbSize = this.sizeof; - DWORD dwFlags; -} -alias STICKYKEYS* LPSTICKYKEYS; - -struct TOGGLEKEYS { - DWORD cbSize = this.sizeof; - DWORD dwFlags; -} - -struct MOUSEHOOKSTRUCT { - POINT pt; - HWND hwnd; - UINT wHitTestCode; - DWORD dwExtraInfo; -} -alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT; - -struct TRACKMOUSEEVENT { - DWORD cbSize = this.sizeof; - DWORD dwFlags; - HWND hwndTrack; - DWORD dwHoverTime; -} -alias TRACKMOUSEEVENT* LPTRACKMOUSEEVENT; - -struct TPMPARAMS { - UINT cbSize = this.sizeof; - RECT rcExclude; -} -alias TPMPARAMS* LPTPMPARAMS; - -struct EVENTMSG { - UINT message; - UINT paramL; - UINT paramH; - DWORD time; - HWND hwnd; -} -alias EVENTMSG* PEVENTMSGMSG, LPEVENTMSGMSG, PEVENTMSG, LPEVENTMSG; - -struct WINDOWPOS { - HWND hwnd; - HWND hwndInsertAfter; - int x; - int y; - int cx; - int cy; - UINT flags; -} -alias WINDOWPOS* PWINDOWPOS, LPWINDOWPOS; - -struct NCCALCSIZE_PARAMS { - RECT rgrc[3]; - PWINDOWPOS lppos; -} -alias NCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS; - -struct MDICREATESTRUCTA { - LPCSTR szClass; - LPCSTR szTitle; - HANDLE hOwner; - int x; - int y; - int cx; - int cy; - DWORD style; - LPARAM lParam; -} -alias MDICREATESTRUCTA* LPMDICREATESTRUCTA; - -struct MDICREATESTRUCTW { - LPCWSTR szClass; - LPCWSTR szTitle; - HANDLE hOwner; - int x; - int y; - int cx; - int cy; - DWORD style; - LPARAM lParam; -} -alias MDICREATESTRUCTW* LPMDICREATESTRUCTW; - -struct MINMAXINFO { - POINT ptReserved; - POINT ptMaxSize; - POINT ptMaxPosition; - POINT ptMinTrackSize; - POINT ptMaxTrackSize; -} -alias MINMAXINFO* PMINMAXINFO, LPMINMAXINFO; - -struct MDINEXTMENU { - HMENU hmenuIn; - HMENU hmenuNext; - HWND hwndNext; -} -alias MDINEXTMENU* PMDINEXTMENU, LPMDINEXTMENU; - -struct MEASUREITEMSTRUCT { - UINT CtlType; - UINT CtlID; - UINT itemID; - UINT itemWidth; - UINT itemHeight; - DWORD itemData; -} -alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT; - -struct DROPSTRUCT { - HWND hwndSource; - HWND hwndSink; - DWORD wFmt; - DWORD dwData; - POINT ptDrop; - DWORD dwControlData; -} -alias DROPSTRUCT* PDROPSTRUCT, LPDROPSTRUCT; - -alias DWORD HELPPOLY; - -struct MULTIKEYHELPA { - DWORD mkSize; - CHAR mkKeylist; - CHAR szKeyphrase[1]; -} -alias MULTIKEYHELPA* PMULTIKEYHELPA, LPMULTIKEYHELPA; - -struct MULTIKEYHELPW { - DWORD mkSize; - WCHAR mkKeylist; - WCHAR szKeyphrase[1]; -} -alias MULTIKEYHELPW* PMULTIKEYHELPW, LPMULTIKEYHELPW; - -struct HELPWININFOA { - int wStructSize; - int x; - int y; - int dx; - int dy; - int wMax; - CHAR rgchMember[2]; -} -alias HELPWININFOA* PHELPWININFOA, LPHELPWININFOA; - -struct HELPWININFOW { - int wStructSize; - int x; - int y; - int dx; - int dy; - int wMax; - WCHAR rgchMember[2]; -} -alias HELPWININFOW* PHELPWININFOW, LPHELPWININFOW; - -struct STYLESTRUCT { - DWORD styleOld; - DWORD styleNew; -} -alias STYLESTRUCT* LPSTYLESTRUCT; - -struct ALTTABINFO { - DWORD cbSize = this.sizeof; - int cItems; - int cColumns; - int cRows; - int iColFocus; - int iRowFocus; - int cxItem; - int cyItem; - POINT ptStart; -} -alias ALTTABINFO* PALTTABINFO, LPALTTABINFO; - -struct COMBOBOXINFO { - DWORD cbSize = this.sizeof; - RECT rcItem; - RECT rcButton; - DWORD stateButton; - HWND hwndCombo; - HWND hwndItem; - HWND hwndList; -} -alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO; - -struct CURSORINFO { - DWORD cbSize = this.sizeof; - DWORD flags; - HCURSOR hCursor; - POINT ptScreenPos; -} -alias CURSORINFO* PCURSORINFO, LPCURSORINFO; - -struct MENUBARINFO { - DWORD cbSize = this.sizeof; - RECT rcBar; - HMENU hMenu; - HWND hwndMenu; - byte bf_; // Simulated bitfield -// BOOL fBarFocused:1; -// BOOL fFocused:1; - bool fBarFocused() { return (bf_ & 1) == 1; } - bool fFocused() { return (bf_ & 2) == 2; } - void fBarFocused(bool b) { bf_ = cast(byte)((bf_ & 0xFE) | b); } - void fFocused(bool b) { bf_ = cast(byte)(b ? (bf_ | 2) : bf_ & 0xFD); } -} -alias MENUBARINFO* PMENUBARINFO; - -struct MENUINFO { - DWORD cbSize = this.sizeof; - DWORD fMask; - DWORD dwStyle; - UINT cyMax; - HBRUSH hbrBack; - DWORD dwContextHelpID; - ULONG_PTR dwMenuData; -} -alias MENUINFO* LPMENUINFO; -alias CPtr!(MENUINFO) LPCMENUINFO; - - -const CCHILDREN_SCROLLBAR=5; - -struct SCROLLBARINFO { - DWORD cbSize = this.sizeof; - RECT rcScrollBar; - int dxyLineButton; - int xyThumbTop; - int xyThumbBottom; - int reserved; - DWORD rgstate[CCHILDREN_SCROLLBAR+1]; -} -alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO; - -const CCHILDREN_TITLEBAR=5; - -struct TITLEBARINFO { - DWORD cbSize = TITLEBARINFO.sizeof; - RECT rcTitleBar; - DWORD[CCHILDREN_TITLEBAR+1] rgstate; -} -alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO; - -struct WINDOWINFO { - DWORD cbSize = WINDOWINFO.sizeof; - RECT rcWindow; - RECT rcClient; - DWORD dwStyle; - DWORD dwExStyle; - DWORD dwWindowStatus; - UINT cxWindowBorders; - UINT cyWindowBorders; - ATOM atomWindowType; - WORD wCreatorVersion; -} -alias WINDOWINFO* PWINDOWINFO, LPWINDOWINFO; - -struct LASTINPUTINFO { - UINT cbSize = this.sizeof; - DWORD dwTime; -} -alias LASTINPUTINFO* PLASTINPUTINFO; - -struct MONITORINFO { - DWORD cbSize = this.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; -} -alias MONITORINFO* LPMONITORINFO; - -const CCHDEVICENAME=32; - -struct MONITORINFOEXA { - DWORD cbSize = MONITORINFOEXA.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; - CHAR[CCHDEVICENAME] szDevice; -} -alias MONITORINFOEXA* LPMONITORINFOEXA; - -struct MONITORINFOEXW { - DWORD cbSize = MONITORINFOEXW.sizeof; - RECT rcMonitor; - RECT rcWork; - DWORD dwFlags; - WCHAR[CCHDEVICENAME] szDevice; -} -alias MONITORINFOEXW* LPMONITORINFOEXW; - -struct KBDLLHOOKSTRUCT { - DWORD vkCode; - DWORD scanCode; - DWORD flags; - DWORD time; - DWORD dwExtraInfo; -} -alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT; - -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) { - -struct FLASHWINFO { - UINT cbSize = this.sizeof; - HWND hwnd; - DWORD dwFlags; - UINT uCount; - DWORD dwTimeout; -} -alias FLASHWINFO* PFLASHWINFO; - -} - -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x490)) { - -struct MOUSEMOVEPOINT { - int x; - int y; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT; -} - -static if (_WIN32_WINNT >= 0x403) { -struct MOUSEINPUT { - LONG dx; - LONG dy; - DWORD mouseData; - DWORD dwFlags; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias MOUSEINPUT* PMOUSEINPUT; - -struct KEYBDINPUT { - WORD wVk; - WORD wScan; - DWORD dwFlags; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias KEYBDINPUT* PKEYBDINPUT; - -struct HARDWAREINPUT { - DWORD uMsg; - WORD wParamL; - WORD wParamH; -} -alias HARDWAREINPUT* PHARDWAREINPUT; - -struct INPUT { - DWORD type; - union { - MOUSEINPUT mi; - KEYBDINPUT ki; - HARDWAREINPUT hi; - } -} -alias INPUT* PINPUT, LPINPUT; -}// (_WIN32_WINNT >= 0x403) - -static if (WINVER >= 0x500) { -struct GUITHREADINFO { - DWORD cbSize = this.sizeof; - DWORD flags; - HWND hwndActive; - HWND hwndFocus; - HWND hwndCapture; - HWND hwndMenuOwner; - HWND hwndMoveSize; - HWND hwndCaret; - RECT rcCaret; -} -alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO; -extern (Windows) { -alias void function (HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; -} - -}// (WINVER >= 0x500) - -static if (_WIN32_WINNT >= 0x501) { -struct BSMINFO { - UINT cbSize = this.sizeof; - HDESK hdesk; - HWND hwnd; - LUID luid; -} -alias BSMINFO* PBSMINFO; - -alias HANDLE HRAWINPUT; - -struct RAWINPUTHEADER { - DWORD dwType; - DWORD dwSize; - HANDLE hDevice; - WPARAM wParam; -} -alias RAWINPUTHEADER* PRAWINPUTHEADER; - -struct RAWMOUSE { - USHORT usFlags; - union { - ULONG ulButtons; - struct { - USHORT usButtonFlags; - USHORT usButtonData; - } - } - ULONG ulRawButtons; - LONG lLastX; - LONG lLastY; - ULONG ulExtraInformation; -} -alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE; - -struct RAWKEYBOARD { - USHORT MakeCode; - USHORT Flags; - USHORT Reserved; - USHORT VKey; - UINT Message; - ULONG ExtraInformation; -} -alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD; - -struct RAWHID { - DWORD dwSizeHid; - DWORD dwCount; - BYTE bRawData; -} -alias RAWHID* PRAWHID, LPRAWHID; - -struct RAWINPUT { - RAWINPUTHEADER header; - union _data { - RAWMOUSE mouse; - RAWKEYBOARD keyboard; - RAWHID hid; - } - _data data; -} -alias RAWINPUT* PRAWINPUT, LPRAWINPUT; - -struct RAWINPUTDEVICE { - USHORT usUsagePage; - USHORT usUsage; - DWORD dwFlags; - HWND hwndTarget; -} -alias RAWINPUTDEVICE* PRAWINPUTDEVICE, LPRAWINPUTDEVICE; -alias CPtr!(RAWINPUTDEVICE) PCRAWINPUTDEVICE; - -struct RAWINPUTDEVICELIST { - HANDLE hDevice; - DWORD dwType; -} -alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; - -struct RID_DEVICE_INFO_MOUSE { - DWORD dwId; - DWORD dwNumberOfButtons; - DWORD dwSampleRate; - BOOL fHasHorizontalWheel; -} - -struct RID_DEVICE_INFO_KEYBOARD { - DWORD dwType; - DWORD dwSubType; - DWORD dwKeyboardMode; - DWORD dwNumberOfFunctionKeys; - DWORD dwNumberOfIndicators; - DWORD dwNumberOfKeysTotal; -} - -struct RID_DEVICE_INFO_HID { - DWORD dwVendorId; - DWORD dwProductId; - DWORD dwVersionNumber; - USHORT usUsagePage; - USHORT usUsage; -} - -struct RID_DEVICE_INFO { - DWORD cbSize = this.sizeof; - DWORD dwType; - union { - RID_DEVICE_INFO_MOUSE mouse; - RID_DEVICE_INFO_KEYBOARD keyboard; - RID_DEVICE_INFO_HID hid; - } -} -}// (_WIN32_WINNT >= 0x501) - -struct MSLLHOOKSTRUCT { - POINT pt; - DWORD mouseData; - DWORD flags; - DWORD time; - ULONG_PTR dwExtraInfo; -} -alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; - -alias CharToOemA AnsiToOem; -alias OemToCharA OemToAnsi; -alias CharToOemBuffA AnsiToOemBuff; -alias OemToCharBuffA OemToAnsiBuff; -alias CharUpperA AnsiUpper; -alias CharUpperBuffA AnsiUpperBuff; -alias CharLowerA AnsiLower; -alias CharLowerBuffA AnsiLowerBuff; -alias CharNextA AnsiNext; -alias CharPrevA AnsiPrev; - -alias MAKELONG MAKEWPARAM; -alias MAKELONG MAKELPARAM; -alias MAKELONG MAKELRESULT; - -//MACRO #define POINTSTOPOINT(p, ps) { (p).x=LOWORD(*(DWORD* )&ps); (p).y=HIWORD(*(DWORD* )&ps); } -//MACRO #define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x, (p).y)) - -extern (Windows) { - -HKL ActivateKeyboardLayout(HKL, UINT); -BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); -BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); -BOOL AnyPopup(); -BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR); -BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR); -UINT ArrangeIconicWindows(HWND); -BOOL AttachThreadInput(DWORD, DWORD, BOOL); -HDWP BeginDeferWindowPos(int); -HDC BeginPaint(HWND, LPPAINTSTRUCT); -BOOL BringWindowToTop(HWND); -BOOL CallMsgFilterA(LPMSG, INT); -BOOL CallMsgFilterW(LPMSG, INT); -LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM); -LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM); -LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM); -WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, CPtr!(HWND)); -BOOL ChangeClipboardChain(HWND, HWND); - -LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD); -LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD); -LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID); -LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID); - -BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT); -BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT); -LPSTR CharLowerA(LPSTR); -LPWSTR CharLowerW(LPWSTR); -DWORD CharLowerBuffA(LPSTR, DWORD); -DWORD CharLowerBuffW(LPWSTR, DWORD); -LPSTR CharNextA(LPCSTR); -LPWSTR CharNextW(LPCWSTR); -LPSTR CharNextExA(WORD, LPCSTR, DWORD); -LPWSTR CharNextExW(WORD, LPCWSTR, DWORD); -LPSTR CharPrevA(LPCSTR, LPCSTR); -LPWSTR CharPrevW(LPCWSTR, LPCWSTR); -LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD); -LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD); -BOOL CharToOemA(LPCSTR, LPSTR); -BOOL CharToOemW(LPCWSTR, LPSTR); -BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD); -BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD); -LPSTR CharUpperA(LPSTR); -LPWSTR CharUpperW(LPWSTR); -DWORD CharUpperBuffA(LPSTR, DWORD); -DWORD CharUpperBuffW(LPWSTR, DWORD); -BOOL CheckDlgButton(HWND, int, UINT); -DWORD CheckMenuItem(HMENU, UINT, UINT); -BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT); -BOOL CheckRadioButton(HWND, int, int, int); -HWND ChildWindowFromPoint(HWND, POINT); -HWND ChildWindowFromPointEx(HWND, POINT, UINT); -BOOL ClientToScreen(HWND, LPPOINT); -BOOL ClipCursor(LPCRECT); -BOOL CloseClipboard(); -BOOL CloseDesktop(HDESK); -BOOL CloseWindow(HWND); -BOOL CloseWindowStation(HWINSTA); -int CopyAcceleratorTableA(HACCEL, LPACCEL, int); -int CopyAcceleratorTableW(HACCEL, LPACCEL, int); - -HICON CopyIcon(HICON); -HANDLE CopyImage(HANDLE, UINT, int, int, UINT); -BOOL CopyRect(LPRECT, LPCRECT); -int CountClipboardFormats(); -HACCEL CreateAcceleratorTableA(LPACCEL, int); -HACCEL CreateAcceleratorTableW(LPACCEL, int); -BOOL CreateCaret(HWND, HBITMAP, int, int); -HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID); - -HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); -HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); - -HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); -HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); -HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); -HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - -HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, CPtr!(BYTE), BYTE*); -HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD); -HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT); -HICON CreateIconIndirect(PICONINFO); -HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); -HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); -HMENU CreateMenu(); -HMENU CreatePopupMenu(); - -HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); -HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); - -HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); -HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); -LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM); -LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM); -HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT); -LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM); -LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM); - -LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM); -LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM); -LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM); -LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM); -BOOL DeleteMenu(HMENU, UINT, UINT); -BOOL DeregisterShellHookWindow(HWND); -BOOL DestroyAcceleratorTable(HACCEL); -BOOL DestroyCaret(); -BOOL DestroyCursor(HCURSOR); -BOOL DestroyIcon(HICON); -BOOL DestroyMenu(HMENU); -BOOL DestroyWindow(HWND); - -int DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); -int DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); -int DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); -int DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); - -} // extern (Windows) - -HCURSOR CopyCursor(HCURSOR c) -{ - return cast(HCURSOR)CopyIcon(cast(HICON)c); -} - -HWND CreateDialogA(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) -{ - return CreateDialogParamA(h, n, w, f, 0); -} - -HWND CreateDialogW(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) -{ - return CreateDialogParamW(h, n, w, f, 0); -} - -HWND CreateDialogIndirectA(HINSTANCE h, LPCDLGTEMPLATE t, HWND w , DLGPROC f) -{ - return CreateDialogIndirectParamA(h, t, w, f, 0); -} - -HWND CreateDialogIndirectW(HINSTANCE h, LPCDLGTEMPLATE t, HWND w , DLGPROC f) -{ - return CreateDialogIndirectParamW(h, t, w, f, 0); -} - - -HWND CreateWindowA(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) -{ - return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); -} - -HWND CreateWindowW(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) -{ - return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); -} - -int DialogBoxA(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) -{ - return DialogBoxParamA(i, t, p, f, 0); -} - -int DialogBoxW(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) -{ - return DialogBoxParamW(i, t, p, f, 0); -} - -int DialogBoxIndirectA(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) -{ - return DialogBoxIndirectParamA(i, t, p, f, 0); -} - -int DialogBoxIndirectW(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) -{ - return DialogBoxIndirectParamW(i, t, p, f, 0); -} - -BOOL ExitWindows(UINT r, DWORD c) -{ - return ExitWindowsEx(EWX_LOGOFF, 0); -} -alias GetWindow GetNextWindow; - -extern (Windows): -LONG DispatchMessageA( CPtr!(MSG)); -LONG DispatchMessageW( CPtr!(MSG)); -int DlgDirListA(HWND, LPSTR, int, int, UINT); -int DlgDirListW(HWND, LPWSTR, int, int, UINT); -int DlgDirListComboBoxA(HWND, LPSTR, int, int, UINT); -int DlgDirListComboBoxW(HWND, LPWSTR, int, int, UINT); -BOOL DlgDirSelectComboBoxExA(HWND, LPSTR, int, int); -BOOL DlgDirSelectComboBoxExW(HWND, LPWSTR, int, int); -BOOL DlgDirSelectExA(HWND, LPSTR, int, int); -BOOL DlgDirSelectExW(HWND, LPWSTR, int, int); -BOOL DragDetect(HWND, POINT); -DWORD DragObject(HWND, HWND, UINT, DWORD, HCURSOR); -BOOL DrawAnimatedRects(HWND, int, LPCRECT, LPCRECT); -BOOL DrawCaption(HWND, HDC, LPCRECT, UINT); -BOOL DrawEdge(HDC, LPRECT, UINT, UINT); -BOOL DrawFocusRect(HDC, LPCRECT); -BOOL DrawFrameControl(HDC, LPRECT, UINT, UINT); -BOOL DrawIcon(HDC, int, int, HICON); -BOOL DrawIconEx(HDC, int, int, HICON, int, int, UINT, HBRUSH, UINT); -BOOL DrawMenuBar(HWND); -BOOL DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); -BOOL DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); -int DrawTextA(HDC, LPCSTR, int, LPRECT, UINT); -int DrawTextW(HDC, LPCWSTR, int, LPRECT, UINT); -int DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); -int DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); -BOOL EmptyClipboard(); -BOOL EnableMenuItem(HMENU, UINT, UINT); -BOOL EnableScrollBar(HWND, UINT, UINT); -BOOL EnableWindow(HWND, BOOL); -BOOL EndDeferWindowPos(HDWP); -BOOL EndDialog(HWND, int); -BOOL EndMenu(); -BOOL EndPaint(HWND, CPtr!(PAINTSTRUCT)); -BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM); -UINT EnumClipboardFormats(UINT); -BOOL EnumDesktopsA(HWINSTA, DESKTOPENUMPROCA, LPARAM); -BOOL EnumDesktopsW(HWINSTA, DESKTOPENUMPROCW, LPARAM); -BOOL EnumDesktopWindows(HDESK, ENUMWINDOWSPROC, LPARAM); -BOOL EnumDisplaySettingsA(LPCSTR, DWORD, PDEVMODEA); -BOOL EnumDisplaySettingsW(LPCWSTR, DWORD, PDEVMODEW); - -BOOL EnumDisplayDevicesA(LPCSTR, DWORD, PDISPLAY_DEVICEA, DWORD); -BOOL EnumDisplayDevicesW(LPCWSTR, DWORD, PDISPLAY_DEVICEW, DWORD); - -int EnumPropsA(HWND, PROPENUMPROCA); -int EnumPropsW(HWND, PROPENUMPROCW); -int EnumPropsExA(HWND, PROPENUMPROCEXA, LPARAM); -int EnumPropsExW(HWND, PROPENUMPROCEXW, LPARAM); - -BOOL EnumThreadWindows(DWORD, WNDENUMPROC, LPARAM); -BOOL EnumWindows(WNDENUMPROC, LPARAM); -BOOL EnumWindowStationsA(WINSTAENUMPROCA, LPARAM); -BOOL EnumWindowStationsW(WINSTAENUMPROCW, LPARAM); -BOOL EqualRect(LPCRECT, LPCRECT); - -BOOL ExitWindowsEx(UINT, DWORD); -HWND FindWindowA(LPCSTR, LPCSTR); -HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR); -HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR); -HWND FindWindowW(LPCWSTR, LPCWSTR); -BOOL FlashWindow(HWND, BOOL); - -int FrameRect(HDC, LPCRECT, HBRUSH); -BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); -HWND GetActiveWindow(); -HWND GetAncestor(HWND, UINT); -SHORT GetAsyncKeyState(int); -HWND GetCapture(); -UINT GetCaretBlinkTime(); -BOOL GetCaretPos(LPPOINT); -BOOL GetClassInfoA(HINSTANCE, LPCSTR, LPWNDCLASSA); -BOOL GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA); -BOOL GetClassInfoW(HINSTANCE, LPCWSTR, LPWNDCLASSW); -BOOL GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW); -DWORD GetClassLongA(HWND, int); -DWORD GetClassLongW(HWND, int); -int GetClassNameA(HWND, LPSTR, int); -int GetClassNameW(HWND, LPWSTR, int); -WORD GetClassWord(HWND, int); -BOOL GetClientRect(HWND, LPRECT); -HANDLE GetClipboardData(UINT); -int GetClipboardFormatNameA(UINT, LPSTR, int); -int GetClipboardFormatNameW(UINT, LPWSTR, int); -HWND GetClipboardOwner(); -HWND GetClipboardViewer(); -BOOL GetClipCursor(LPRECT); -BOOL GetCursorPos(LPPOINT); -HDC GetDC(HWND); -HDC GetDCEx(HWND, HRGN, DWORD); -HWND GetDesktopWindow(); -int GetDialogBaseUnits(); -int GetDlgCtrlID(HWND); -HWND GetDlgItem(HWND, int); -UINT GetDlgItemInt(HWND, int, PBOOL, BOOL); -UINT GetDlgItemTextA(HWND, int, LPSTR, int); -UINT GetDlgItemTextW(HWND, int, LPWSTR, int); -UINT GetDoubleClickTime(); -HWND GetFocus(); -HWND GetForegroundWindow(); - -BOOL GetIconInfo(HICON, PICONINFO); -BOOL GetInputState(); -UINT GetKBCodePage(); -HKL GetKeyboardLayout(DWORD); -UINT GetKeyboardLayoutList(int, HKL*); -BOOL GetKeyboardLayoutNameA(LPSTR); -BOOL GetKeyboardLayoutNameW(LPWSTR); -BOOL GetKeyboardState(PBYTE); -int GetKeyboardType(int); -int GetKeyNameTextA(LONG, LPSTR, int); -int GetKeyNameTextW(LONG, LPWSTR, int); -SHORT GetKeyState(int); -HWND GetLastActivePopup(HWND); -HMENU GetMenu(HWND); -LONG GetMenuCheckMarkDimensions(); -DWORD GetMenuContextHelpId(HMENU); -UINT GetMenuDefaultItem(HMENU, UINT, UINT); -int GetMenuItemCount(HMENU); -UINT GetMenuItemID(HMENU, int); -BOOL GetMenuItemInfoA(HMENU, UINT, BOOL, LPMENUITEMINFOA); -BOOL GetMenuItemInfoW(HMENU, UINT, BOOL, LPMENUITEMINFOW); -BOOL GetMenuItemRect(HWND, HMENU, UINT, LPRECT); -UINT GetMenuState(HMENU, UINT, UINT); -int GetMenuStringA(HMENU, UINT, LPSTR, int, UINT); -int GetMenuStringW(HMENU, UINT, LPWSTR, int, UINT); -BOOL GetMessageA(LPMSG, HWND, UINT, UINT); -BOOL GetMessageW(LPMSG, HWND, UINT, UINT); -LONG GetMessageExtraInfo(); -DWORD GetMessagePos(); -LONG GetMessageTime(); - -HWND GetNextDlgGroupItem(HWND, HWND, BOOL); -HWND GetNextDlgTabItem(HWND, HWND, BOOL); - -HWND GetOpenClipboardWindow(); -HWND GetParent(HWND); -int GetPriorityClipboardFormat(UINT*, int); -HANDLE GetPropA(HWND, LPCSTR); -HANDLE GetPropW(HWND, LPCWSTR); - -DWORD GetQueueStatus(UINT); -BOOL GetScrollInfo(HWND, int, LPSCROLLINFO); -int GetScrollPos(HWND, int); -BOOL GetScrollRange(HWND, int, LPINT, LPINT); - -HMENU GetSubMenu(HMENU, int); -DWORD GetSysColor(int); -HBRUSH GetSysColorBrush(int); - -HMENU GetSystemMenu(HWND, BOOL); -int GetSystemMetrics(int); -DWORD GetTabbedTextExtentA(HDC, LPCSTR, int, int, LPINT); -DWORD GetTabbedTextExtentW(HDC, LPCWSTR, int, int, LPINT); -LONG GetWindowLongA(HWND, int); -LONG GetWindowLongW(HWND, int); - -HDESK GetThreadDesktop(DWORD); -HWND GetTopWindow(HWND); -BOOL GetUpdateRect(HWND, LPRECT, BOOL); -int GetUpdateRgn(HWND, HRGN, BOOL); -BOOL GetUserObjectInformationA(HANDLE, int, PVOID, DWORD, PDWORD); -BOOL GetUserObjectInformationW(HANDLE, int, PVOID, DWORD, PDWORD); -BOOL GetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); -HWND GetWindow(HWND, UINT); -DWORD GetWindowContextHelpId(HWND); -HDC GetWindowDC(HWND); -BOOL GetWindowPlacement(HWND, WINDOWPLACEMENT*); -BOOL GetWindowRect(HWND, LPRECT); -int GetWindowRgn(HWND, HRGN); -int GetWindowTextA(HWND, LPSTR, int); -int GetWindowTextLengthA(HWND); -int GetWindowTextLengthW(HWND); -int GetWindowTextW(HWND, LPWSTR, int); -WORD GetWindowWord(HWND, int); -BOOL GetAltTabInfoA(HWND, int, PALTTABINFO, LPSTR, UINT); -BOOL GetAltTabInfoW(HWND, int, PALTTABINFO, LPWSTR, UINT); -BOOL GetComboBoxInfo(HWND, PCOMBOBOXINFO); -BOOL GetCursorInfo(PCURSORINFO); -BOOL GetLastInputInfo(PLASTINPUTINFO); -DWORD GetListBoxInfo(HWND); -BOOL GetMenuBarInfo(HWND, LONG, LONG, PMENUBARINFO); -BOOL GetMenuInfo(HMENU, LPMENUINFO); -BOOL GetScrollBarInfo(HWND, LONG, PSCROLLBARINFO); -BOOL GetTitleBarInfo(HWND, PTITLEBARINFO); -BOOL GetWindowInfo(HWND, PWINDOWINFO); -UINT GetWindowModuleFileNameA(HWND, LPSTR, UINT); -UINT GetWindowModuleFileNameW(HWND, LPWSTR, UINT); -BOOL GrayStringA(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); -BOOL GrayStringW(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); -BOOL HideCaret(HWND); -BOOL HiliteMenuItem(HWND, HMENU, UINT, UINT); -BOOL InflateRect(LPRECT, int, int); -BOOL InSendMessage(); -BOOL InsertMenuA(HMENU, UINT, UINT, UINT, LPCSTR); -BOOL InsertMenuW(HMENU, UINT, UINT, UINT, LPCWSTR); -BOOL InsertMenuItemA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); -BOOL InsertMenuItemW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); -INT InternalGetWindowText(HWND, LPWSTR, INT); -BOOL IntersectRect(LPRECT, LPCRECT, LPCRECT); -BOOL InvalidateRect(HWND, LPCRECT, BOOL); -BOOL InvalidateRgn(HWND, HRGN, BOOL); -BOOL InvertRect(HDC, LPCRECT); -BOOL IsCharAlphaA(CHAR ch); -BOOL IsCharAlphaNumericA(CHAR); -BOOL IsCharAlphaNumericW(WCHAR); -BOOL IsCharAlphaW(WCHAR); -BOOL IsCharLowerA(CHAR); -BOOL IsCharLowerW(WCHAR); -BOOL IsCharUpperA(CHAR); -BOOL IsCharUpperW(WCHAR); -BOOL IsChild(HWND, HWND); -BOOL IsClipboardFormatAvailable(UINT); -BOOL IsDialogMessageA(HWND, LPMSG); -BOOL IsDialogMessageW(HWND, LPMSG); -UINT IsDlgButtonChecked(HWND, int); -BOOL IsIconic(HWND); -BOOL IsMenu(HMENU); -BOOL IsRectEmpty(LPCRECT); -BOOL IsWindow(HWND); -BOOL IsWindowEnabled(HWND); -BOOL IsWindowUnicode(HWND); -BOOL IsWindowVisible(HWND); -BOOL IsZoomed(HWND); -void keybd_event(BYTE, BYTE, DWORD, DWORD); -BOOL KillTimer(HWND, UINT); -HACCEL LoadAcceleratorsA(HINSTANCE, LPCSTR); -HACCEL LoadAcceleratorsW(HINSTANCE, LPCWSTR); -HBITMAP LoadBitmapA(HINSTANCE, LPCSTR); -HBITMAP LoadBitmapW(HINSTANCE, LPCWSTR); -HCURSOR LoadCursorA(HINSTANCE, LPCSTR); -HCURSOR LoadCursorFromFileA(LPCSTR); -HCURSOR LoadCursorFromFileW(LPCWSTR); -HCURSOR LoadCursorW(HINSTANCE, LPCWSTR); -HICON LoadIconA(HINSTANCE, LPCSTR); -HICON LoadIconW(HINSTANCE, LPCWSTR); -HANDLE LoadImageA(HINSTANCE, LPCSTR, UINT, int, int, UINT); -HANDLE LoadImageW(HINSTANCE, LPCWSTR, UINT, int, int, UINT); -HKL LoadKeyboardLayoutA(LPCSTR, UINT); -HKL LoadKeyboardLayoutW(LPCWSTR, UINT); -HMENU LoadMenuA(HINSTANCE, LPCSTR); -HMENU LoadMenuIndirectA( CPtr!(MENUTEMPLATE)); -HMENU LoadMenuIndirectW( CPtr!(MENUTEMPLATE)); -HMENU LoadMenuW(HINSTANCE, LPCWSTR); -int LoadStringA(HINSTANCE, UINT, LPSTR, int); -int LoadStringW(HINSTANCE, UINT, LPWSTR, int); -BOOL LockWindowUpdate(HWND); -int LookupIconIdFromDirectory(PBYTE, BOOL); -int LookupIconIdFromDirectoryEx(PBYTE, BOOL, int, int, UINT); -BOOL MapDialogRect(HWND, LPRECT); -UINT MapVirtualKeyA(UINT, UINT); -UINT MapVirtualKeyExA(UINT, UINT, HKL); -UINT MapVirtualKeyExW(UINT, UINT, HKL); -UINT MapVirtualKeyW(UINT, UINT); -int MapWindowPoints(HWND, HWND, LPPOINT, UINT); -int MenuItemFromPoint(HWND, HMENU, POINT); -BOOL MessageBeep(UINT); -int MessageBoxA(HWND, LPCSTR, LPCSTR, UINT); -int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT); -int MessageBoxExA(HWND, LPCSTR, LPCSTR, UINT, WORD); -int MessageBoxExW(HWND, LPCWSTR, LPCWSTR, UINT, WORD); -int MessageBoxIndirectA(CPtr!(MSGBOXPARAMSA)); -int MessageBoxIndirectW(CPtr!(MSGBOXPARAMSW)); -BOOL ModifyMenuA(HMENU, UINT, UINT, UINT, LPCSTR); -BOOL ModifyMenuW(HMENU, UINT, UINT, UINT, LPCWSTR); -void mouse_event(DWORD, DWORD, DWORD, DWORD, ULONG_PTR); -BOOL MoveWindow(HWND, int, int, int, int, BOOL); -DWORD MsgWaitForMultipleObjects(DWORD, CPtr!(HANDLE), BOOL, DWORD, DWORD); -DWORD MsgWaitForMultipleObjectsEx(DWORD, CPtr!(HANDLE), DWORD, DWORD, DWORD); -DWORD OemKeyScan(WORD); -BOOL OemToCharA(LPCSTR, LPSTR); -BOOL OemToCharBuffA(LPCSTR, LPSTR, DWORD); -BOOL OemToCharBuffW(LPCSTR, LPWSTR, DWORD); -BOOL OemToCharW(LPCSTR, LPWSTR); -BOOL OffsetRect(LPRECT, int, int); -BOOL OpenClipboard(HWND); -HDESK OpenDesktopA(LPSTR, DWORD, BOOL, DWORD); -HDESK OpenDesktopW(LPWSTR, DWORD, BOOL, DWORD); -BOOL OpenIcon(HWND); -HDESK OpenInputDesktop(DWORD, BOOL, DWORD); -HWINSTA OpenWindowStationA(LPSTR, BOOL, DWORD); -HWINSTA OpenWindowStationW(LPWSTR, BOOL, DWORD); -BOOL PaintDesktop(HDC); -BOOL PeekMessageA(LPMSG, HWND, UINT, UINT, UINT); -BOOL PeekMessageW(LPMSG, HWND, UINT, UINT, UINT); -BOOL PostMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL PostMessageW(HWND, UINT, WPARAM, LPARAM); -void PostQuitMessage(int); -BOOL PostThreadMessageA(DWORD, UINT, WPARAM, LPARAM); -BOOL PostThreadMessageW(DWORD, UINT, WPARAM, LPARAM); -BOOL PtInRect(LPCRECT, POINT); -HWND RealChildWindowFromPoint(HWND, POINT); -UINT RealGetWindowClassA(HWND, LPSTR, UINT); -UINT RealGetWindowClassW(HWND, LPWSTR, UINT); -BOOL RedrawWindow(HWND, LPCRECT, HRGN, UINT); -ATOM RegisterClassA(CPtr!(WNDCLASSA)); -ATOM RegisterClassW(CPtr!(WNDCLASSW)); -ATOM RegisterClassExA(CPtr!(WNDCLASSEXA)); -ATOM RegisterClassExW(CPtr!(WNDCLASSEXW)); -UINT RegisterClipboardFormatA(LPCSTR); -UINT RegisterClipboardFormatW(LPCWSTR); -BOOL RegisterHotKey(HWND, int, UINT, UINT); -UINT RegisterWindowMessageA(LPCSTR); -UINT RegisterWindowMessageW(LPCWSTR); -BOOL ReleaseCapture(); -int ReleaseDC(HWND, HDC); -BOOL RemoveMenu(HMENU, UINT, UINT); -HANDLE RemovePropA(HWND, LPCSTR); -HANDLE RemovePropW(HWND, LPCWSTR); -BOOL ReplyMessage(LRESULT); -BOOL ScreenToClient(HWND, LPPOINT); -BOOL ScrollDC(HDC, int, int, LPCRECT, LPCRECT, HRGN, LPRECT); -BOOL ScrollWindow(HWND, int, int, LPCRECT, LPCRECT); -int ScrollWindowEx(HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT); -LONG SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM); -LONG SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM); -LRESULT SendMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); -BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); -LRESULT SendMessageTimeoutA(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); -LRESULT SendMessageTimeoutW(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); -LRESULT SendMessageW(HWND, UINT, WPARAM, LPARAM); -BOOL SendNotifyMessageA(HWND, UINT, WPARAM, LPARAM); -BOOL SendNotifyMessageW(HWND, UINT, WPARAM, LPARAM); -HWND SetActiveWindow(HWND); -HWND SetCapture(HWND hWnd); -BOOL SetCaretBlinkTime(UINT); -BOOL SetCaretPos(int, int); -DWORD SetClassLongA(HWND, int, LONG); -DWORD SetClassLongW(HWND, int, LONG); -WORD SetClassWord(HWND, int, WORD); -HANDLE SetClipboardData(UINT, HANDLE); -HWND SetClipboardViewer(HWND); -HCURSOR SetCursor(HCURSOR); -BOOL SetCursorPos(int, int); -void SetDebugErrorLevel(DWORD); -BOOL SetDlgItemInt(HWND, int, UINT, BOOL); -BOOL SetDlgItemTextA(HWND, int, LPCSTR); -BOOL SetDlgItemTextW(HWND, int, LPCWSTR); -BOOL SetDoubleClickTime(UINT); -HWND SetFocus(HWND); -BOOL SetForegroundWindow(HWND); -BOOL SetKeyboardState(PBYTE); -BOOL SetMenu(HWND, HMENU); -BOOL SetMenuContextHelpId(HMENU, DWORD); -BOOL SetMenuDefaultItem(HMENU, UINT, UINT); -BOOL SetMenuInfo(HMENU, LPCMENUINFO); -BOOL SetMenuItemBitmaps(HMENU, UINT, UINT, HBITMAP, HBITMAP); -BOOL SetMenuItemInfoA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); -BOOL SetMenuItemInfoW( HMENU, UINT, BOOL, LPCMENUITEMINFOW); -LPARAM SetMessageExtraInfo(LPARAM); -BOOL SetMessageQueue(int); -HWND SetParent(HWND, HWND); -BOOL SetProcessWindowStation(HWINSTA); -BOOL SetPropA(HWND, LPCSTR, HANDLE); -BOOL SetPropW(HWND, LPCWSTR, HANDLE); -BOOL SetRect(LPRECT, int, int, int, int); -BOOL SetRectEmpty(LPRECT); -int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL); -int SetScrollPos(HWND, int, int, BOOL); -BOOL SetScrollRange(HWND, int, int, int, BOOL); -BOOL SetSysColors(int, CPtr!(INT) , CPtr!(COLORREF) ); -BOOL SetSystemCursor(HCURSOR, DWORD); -BOOL SetThreadDesktop(HDESK); -UINT SetTimer(HWND, UINT, UINT, TIMERPROC); -BOOL SetUserObjectInformationA(HANDLE, int, PVOID, DWORD); -BOOL SetUserObjectInformationW(HANDLE, int, PVOID, DWORD); -BOOL SetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR); -BOOL SetWindowContextHelpId(HWND, DWORD); -LONG SetWindowLongA(HWND, int, LONG); -LONG SetWindowLongW(HWND, int, LONG); -BOOL SetWindowPlacement(HWND hWnd, CPtr!(WINDOWPLACEMENT)); -BOOL SetWindowPos(HWND, HWND, int, int, int, int, UINT); -int SetWindowRgn(HWND, HRGN, BOOL); -HHOOK SetWindowsHookA(int, HOOKPROC); -HHOOK SetWindowsHookW(int, HOOKPROC); -HHOOK SetWindowsHookExA(int, HOOKPROC, HINSTANCE, DWORD); -HHOOK SetWindowsHookExW(int, HOOKPROC, HINSTANCE, DWORD); -BOOL SetWindowTextA(HWND, LPCSTR); -BOOL SetWindowTextW(HWND, LPCWSTR); -WORD SetWindowWord(HWND, int, WORD); -BOOL ShowCaret(HWND); -int ShowCursor(BOOL); -BOOL ShowOwnedPopups(HWND, BOOL); -BOOL ShowScrollBar(HWND, int, BOOL); -BOOL ShowWindow(HWND, int); -BOOL ShowWindowAsync(HWND, int); -BOOL SubtractRect(LPRECT, LPCRECT, LPCRECT); -BOOL SwapMouseButton(BOOL); -BOOL SwitchDesktop(HDESK); -BOOL SystemParametersInfoA(UINT, UINT, PVOID, UINT); -BOOL SystemParametersInfoW(UINT, UINT, PVOID, UINT); -LONG TabbedTextOutA(HDC, int, int, LPCSTR, int, int, LPINT, int); -LONG TabbedTextOutW(HDC, int, int, LPCWSTR, int, int, LPINT, int); -WORD TileWindows(HWND, UINT, LPCRECT, UINT, CPtr!(HWND) ); -int ToAscii(UINT, UINT, PBYTE, LPWORD, UINT); -int ToAsciiEx(UINT, UINT, PBYTE, LPWORD, UINT, HKL); -int ToUnicode(UINT, UINT, PBYTE, LPWSTR, int, UINT); -int ToUnicodeEx(UINT, UINT, PBYTE, LPWSTR, int, UINT, HKL); -BOOL TrackMouseEvent(LPTRACKMOUSEEVENT); -BOOL TrackPopupMenu(HMENU, UINT, int, int, int, HWND, LPCRECT); -BOOL TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS); -int TranslateAcceleratorA(HWND, HACCEL, LPMSG); -int TranslateAcceleratorW(HWND, HACCEL, LPMSG); -BOOL TranslateMDISysAccel(HWND, LPMSG); -BOOL TranslateMessage( CPtr!(MSG)); -BOOL UnhookWindowsHook(int, HOOKPROC); -BOOL UnhookWindowsHookEx(HHOOK); -BOOL UnionRect(LPRECT, LPCRECT, LPCRECT); -BOOL UnloadKeyboardLayout(HKL); -BOOL UnregisterClassA(LPCSTR, HINSTANCE); -BOOL UnregisterClassW(LPCWSTR, HINSTANCE); -BOOL UnregisterHotKey(HWND, int); -BOOL UpdateWindow(HWND); -BOOL ValidateRect(HWND, LPCRECT); -BOOL ValidateRgn(HWND, HRGN); -SHORT VkKeyScanA(CHAR); -SHORT VkKeyScanExA(CHAR, HKL); -SHORT VkKeyScanExW(WCHAR, HKL); -SHORT VkKeyScanW(WCHAR); -DWORD WaitForInputIdle(HANDLE, DWORD); -BOOL WaitMessage(); -HWND WindowFromDC(HDC hDC); -HWND WindowFromPoint(POINT); -UINT WinExec(LPCSTR, UINT); -BOOL WinHelpA(HWND, LPCSTR, UINT, DWORD); -BOOL WinHelpW(HWND, LPCWSTR, UINT, DWORD); - -extern (C) { - int wsprintfA(LPSTR, LPCSTR, ...); - int wsprintfW(LPWSTR, LPCWSTR, ...); -} - - -// These shouldn't be necessary for D. -alias char* va_list_; -int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist); -int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist); - - -static if (_WIN32_WINDOWS == 0x400) { -// On Win95, there's only one version. -int BroadcastSystemMessage(DWORD, LPDWORD, UINT, WPARAM, LPARAM); -} -static if (_WIN32_WINNT >= 0x400) { -int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM); -int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM); -} -static if (_WIN32_WINNT >= 0x501) { -int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); -int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); -} - -static if (_WIN32_WINNT >= 0x403) { -UINT SendInput(UINT, LPINPUT, int); -} -static if (_WIN32_WINNT >= 0x500) { -BOOL AnimateWindow(HWND, DWORD, DWORD); -BOOL EndTask(HWND, BOOL, BOOL); -DWORD GetGuiResources(HANDLE, DWORD); -HWND GetShellWindow(); -BOOL GetProcessDefaultLayout(DWORD*); -BOOL IsHungAppWindow(HWND); -BOOL LockWorkStation(); -HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD); -HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD); -BOOL SetProcessDefaultLayout(DWORD); -void SwitchToThisWindow(HWND, BOOL); -BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD); -BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); -BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL); -} -static if (_WIN32_WINNT >= 0x501) { -UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT); -UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT); -UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT); -UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT); -UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT); -UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT); -LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT); -BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT); - -BOOL IsGUIThread(BOOL); -BOOL IsWinEventHookInstalled(DWORD); -BOOL PrintWindow(HWND, HDC, UINT); -BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*); -} -static if (WINVER >= 0x410) { - BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); - BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO); - BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA); - BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO); - BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW); - HMONITOR MonitorFromPoint(POINT, DWORD); - HMONITOR MonitorFromRect(LPCRECT, DWORD); - HMONITOR MonitorFromWindow(HWND, DWORD); -} -static if (WINVER >= 0x500) { -BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO); -void NotifyWinEvent(DWORD, HWND, LONG, LONG); -HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT); -BOOL UnhookWinEvent(HWINEVENTHOOK); -BOOL UnregisterDeviceNotification(HANDLE); -} -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) { -BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD); -BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD); -BOOL FlashWindowEx(PFLASHWINFO); -DWORD GetClipboardSequenceNumber(); -DWORD InSendMessageEx(LPVOID); -} -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x490)) { -BOOL AllowSetForegroundWindow(DWORD); -BOOL LockSetForegroundWindow(UINT); -int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD); -} - -version (Win64) { -LONG_PTR GetWindowLongPtrA(HWND, int); -LONG_PTR GetWindowLongPtrW(HWND, int); -LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR); -LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR); -} else { -alias GetWindowLongA GetWindowLongPtrA; -alias GetWindowLongW GetWindowLongPtrW; -alias SetWindowLongA SetWindowLongPtrA; -alias SetWindowLongW SetWindowLongPtrW; -} - - -// ----- -// Aliases for Unicode or Ansi -version(Unicode) { - -alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; -alias PROPENUMPROCW PROPENUMPROC; -alias PROPENUMPROCEXW PROPENUMPROCEX; -alias DESKTOPENUMPROCW DESKTOPENUMPROC; -alias WINSTAENUMPROCW WINSTAENUMPROC; -alias MAKEINTRESOURCEW MAKEINTRESOURCE; - -alias WNDCLASSW WNDCLASS; -alias WNDCLASSEXW WNDCLASSEX; -alias MENUITEMINFOW MENUITEMINFO; -alias LPCMENUITEMINFOW LPCMENUITEMINFO; -alias MSGBOXPARAMSW MSGBOXPARAMS; -alias HIGHCONTRASTW HIGHCONTRAST; -alias SERIALKEYSW SERIALKEYS; -alias SOUNDSENTRYW SOUNDSENTRY; -alias CREATESTRUCTW CREATESTRUCT; -alias CBT_CREATEWNDW CBT_CREATEWND; -alias MDICREATESTRUCTW MDICREATESTRUCT; -alias MULTIKEYHELPW MULTIKEYHELP; -alias MONITORINFOEXW MONITORINFOEX; -alias ICONMETRICSW ICONMETRICS; -alias NONCLIENTMETRICSW NONCLIENTMETRICS; - -alias AppendMenuW AppendMenu; -alias BroadcastSystemMessageW BroadcastSystemMessage; -static if (_WIN32_WINNT >= 0x501) { -alias BroadcastSystemMessageExW BroadcastSystemMessageEx; -} -alias CallMsgFilterW CallMsgFilter; -alias CallWindowProcW CallWindowProc; -alias ChangeMenuW ChangeMenu; -alias CharLowerW CharLower; -alias CharLowerBuffW CharLowerBuff; -alias CharNextW CharNext; -alias CharNextExW CharNextEx; -alias CharPrevW CharPrev; -alias CharPrevExW CharPrevEx; -alias CharToOemW CharToOem; -alias CharToOemBuffW CharToOemBuff; -alias CharUpperW CharUpper; -alias CharUpperBuffW CharUpperBuff; -alias CopyAcceleratorTableW CopyAcceleratorTable; -alias CreateAcceleratorTableW CreateAcceleratorTable; -alias CreateDialogW CreateDialog; -alias CreateDialogIndirectW CreateDialogIndirect; -alias CreateDialogIndirectParamW CreateDialogIndirectParam; -alias CreateDialogParamW CreateDialogParam; -alias CreateMDIWindowW CreateMDIWindow; -alias CreateWindowW CreateWindow; -alias CreateWindowExW CreateWindowEx; -alias CreateWindowStationW CreateWindowStation; -alias DefDlgProcW DefDlgProc; -alias DefFrameProcW DefFrameProc; -alias DefMDIChildProcW DefMDIChildProc; -alias DefWindowProcW DefWindowProc; -alias DialogBoxW DialogBox; -alias DialogBoxIndirectW DialogBoxIndirect; -alias DialogBoxIndirectParamW DialogBoxIndirectParam; -alias DialogBoxParamW DialogBoxParam; -alias DispatchMessageW DispatchMessage; -alias DlgDirListW DlgDirList; -alias DlgDirListComboBoxW DlgDirListComboBox; -alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx; -alias DlgDirSelectExW DlgDirSelectEx; -alias DrawStateW DrawState; -alias DrawTextW DrawText; -alias DrawTextExW DrawTextEx; -alias EnumDesktopsW EnumDesktops; -alias EnumPropsW EnumProps; -alias EnumPropsExW EnumPropsEx; -alias EnumWindowStationsW EnumWindowStations; -alias FindWindowW FindWindow; -alias FindWindowExW FindWindowEx; -alias GetClassInfoW GetClassInfo; -alias GetClassInfoExW GetClassInfoEx; -alias GetClassLongW GetClassLong; -alias GetClassNameW GetClassName; -alias GetClipboardFormatNameW GetClipboardFormatName; -alias GetDlgItemTextW GetDlgItemText; -alias GetKeyboardLayoutNameW GetKeyboardLayoutName; -alias GetKeyNameTextW GetKeyNameText; -alias GetMenuItemInfoW GetMenuItemInfo; -alias GetMenuStringW GetMenuString; -alias GetMessageW GetMessage; -static if (WINVER >=0x410) { -alias GetMonitorInfoW GetMonitorInfo; -} -alias GetPropW GetProp; -static if (_WIN32_WINNT >= 0x501) { -alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; -} -alias GetTabbedTextExtentW GetTabbedTextExtent; -alias GetUserObjectInformationW GetUserObjectInformation; -alias GetWindowLongW GetWindowLong; -alias GetWindowLongPtrW GetWindowLongPtr; -alias GetWindowTextW GetWindowText; -alias GetWindowTextLengthW GetWindowTextLength; -alias GetAltTabInfoW GetAltTabInfo; -alias GetWindowModuleFileNameW GetWindowModuleFileName; -alias GrayStringW GrayString; -alias InsertMenuW InsertMenu; -alias InsertMenuItemW InsertMenuItem; -alias IsCharAlphaW IsCharAlpha; -alias IsCharAlphaNumericW IsCharAlphaNumeric; -alias IsCharLowerW IsCharLower; -alias IsCharUpperW IsCharUpper; -alias IsDialogMessageW IsDialogMessage; -alias LoadAcceleratorsW LoadAccelerators; -alias LoadBitmapW LoadBitmap; -alias LoadCursorW LoadCursor; -alias LoadCursorFromFileW LoadCursorFromFile; -alias LoadIconW LoadIcon; -alias LoadImageW LoadImage; -alias LoadKeyboardLayoutW LoadKeyboardLayout; -alias LoadMenuW LoadMenu; -alias LoadMenuIndirectW LoadMenuIndirect; -alias LoadStringW LoadString; -alias MapVirtualKeyW MapVirtualKey; -alias MapVirtualKeyExW MapVirtualKeyEx; -alias MessageBoxW MessageBox; -alias MessageBoxExW MessageBoxEx; -alias MessageBoxIndirectW MessageBoxIndirect; -alias ModifyMenuW ModifyMenu; -alias OemToCharW OemToChar; -alias OemToCharBuffW OemToCharBuff; -alias OpenDesktopW OpenDesktop; -alias OpenWindowStationW OpenWindowStation; -alias PeekMessageW PeekMessage; -alias PostMessageW PostMessage; -alias PostThreadMessageW PostThreadMessage; -alias RealGetWindowClassW RealGetWindowClass; -alias RegisterClassW RegisterClass; -alias RegisterClassExW RegisterClassEx; -alias RegisterClipboardFormatW RegisterClipboardFormat; -static if (WINVER >= 0x500) { -alias RegisterDeviceNotificationW RegisterDeviceNotification; -} -alias RegisterWindowMessageW RegisterWindowMessage; -alias RemovePropW RemoveProp; -alias SendDlgItemMessageW SendDlgItemMessage; -alias SendMessageW SendMessage; -alias SendMessageCallbackW SendMessageCallback; -alias SendMessageTimeoutW SendMessageTimeout; -alias SendNotifyMessageW SendNotifyMessage; -alias SetClassLongW SetClassLong; -alias SetDlgItemTextW SetDlgItemText; -alias SetMenuItemInfoW SetMenuItemInfo; -alias SetPropW SetProp; -alias SetUserObjectInformationW SetUserObjectInformation; -alias SetWindowLongW SetWindowLong; -alias SetWindowLongPtrW SetWindowLongPtr; -alias SetWindowsHookW SetWindowsHook; -alias SetWindowsHookExW SetWindowsHookEx; -alias SetWindowTextW SetWindowText; -alias SystemParametersInfoW SystemParametersInfo; -alias TabbedTextOutW TabbedTextOut; -alias TranslateAcceleratorW TranslateAccelerator; -alias UnregisterClassW UnregisterClass; -alias VkKeyScanW VkKeyScan; -alias VkKeyScanExW VkKeyScanEx; -alias WinHelpW WinHelp; -alias wsprintfW wsprintf; -alias wvsprintfW wvsprintf; - -alias ChangeDisplaySettingsW ChangeDisplaySettings; -alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx; -alias CreateDesktopW CreateDesktop; -alias EnumDisplaySettingsW EnumDisplaySettings; -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) { -alias EnumDisplaySettingsExW EnumDisplaySettingsEx; -} -alias EnumDisplayDevicesW EnumDisplayDevices; - -} else { // ANSI - -alias EDITWORDBREAKPROCA EDITWORDBREAKPROC; -alias PROPENUMPROCA PROPENUMPROC; -alias PROPENUMPROCEXA PROPENUMPROCEX; -alias DESKTOPENUMPROCA DESKTOPENUMPROC; -alias WINSTAENUMPROCA WINSTAENUMPROC; -alias MAKEINTRESOURCEA MAKEINTRESOURCE; - -alias WNDCLASSA WNDCLASS; -alias WNDCLASSEXA WNDCLASSEX; -alias MENUITEMINFOA MENUITEMINFO; -alias LPCMENUITEMINFOA LPCMENUITEMINFO; -alias MSGBOXPARAMSA MSGBOXPARAMS; -alias HIGHCONTRASTA HIGHCONTRAST; -alias SERIALKEYSA SERIALKEYS; -alias SOUNDSENTRYA SOUNDSENTRY; -alias CREATESTRUCTA CREATESTRUCT; -alias CBT_CREATEWNDA CBT_CREATEWND; -alias MDICREATESTRUCTA MDICREATESTRUCT; -alias MULTIKEYHELPA MULTIKEYHELP; -alias MONITORINFOEXA MONITORINFOEX; -alias ICONMETRICSA ICONMETRICS; -alias NONCLIENTMETRICSA NONCLIENTMETRICS; - -alias AppendMenuA AppendMenu; -alias BroadcastSystemMessageA BroadcastSystemMessage; -static if (_WIN32_WINNT >= 0x501) { -alias BroadcastSystemMessageExA BroadcastSystemMessageEx; -} -alias CallMsgFilterA CallMsgFilter; -alias CallWindowProcA CallWindowProc; -alias ChangeMenuA ChangeMenu; -alias CharLowerA CharLower; -alias CharLowerBuffA CharLowerBuff; -alias CharNextA CharNext; -alias CharNextExA CharNextEx; -alias CharPrevA CharPrev; -alias CharPrevExA CharPrevEx; -alias CharToOemA CharToOem; -alias CharToOemBuffA CharToOemBuff; -alias CharUpperA CharUpper; -alias CharUpperBuffA CharUpperBuff; -alias CopyAcceleratorTableA CopyAcceleratorTable; -alias CreateAcceleratorTableA CreateAcceleratorTable; -alias CreateDialogA CreateDialog; -alias CreateDialogIndirectA CreateDialogIndirect; -alias CreateDialogIndirectParamA CreateDialogIndirectParam; -alias CreateDialogParamA CreateDialogParam; -alias CreateMDIWindowA CreateMDIWindow; -alias CreateWindowA CreateWindow; -alias CreateWindowExA CreateWindowEx; -alias CreateWindowStationA CreateWindowStation; -alias DefDlgProcA DefDlgProc; -alias DefFrameProcA DefFrameProc; -alias DefMDIChildProcA DefMDIChildProc; -alias DefWindowProcA DefWindowProc; -alias DialogBoxA DialogBox; -alias DialogBoxIndirectA DialogBoxIndirect; -alias DialogBoxIndirectParamA DialogBoxIndirectParam; -alias DialogBoxParamA DialogBoxParam; -alias DispatchMessageA DispatchMessage; -alias DlgDirListA DlgDirList; -alias DlgDirListComboBoxA DlgDirListComboBox; -alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx; -alias DlgDirSelectExA DlgDirSelectEx; -alias DrawStateA DrawState; -alias DrawTextA DrawText; -alias DrawTextExA DrawTextEx; -alias EnumDesktopsA EnumDesktops; -alias EnumPropsA EnumProps; -alias EnumPropsExA EnumPropsEx; -alias EnumWindowStationsA EnumWindowStations; -alias FindWindowA FindWindow; -alias FindWindowExA FindWindowEx; -alias GetClassInfoA GetClassInfo; -alias GetClassInfoExA GetClassInfoEx; -alias GetClassLongA GetClassLong; -alias GetClassNameA GetClassName; -alias GetClipboardFormatNameA GetClipboardFormatName; -alias GetDlgItemTextA GetDlgItemText; -alias GetKeyboardLayoutNameA GetKeyboardLayoutName; -alias GetKeyNameTextA GetKeyNameText; -alias GetMenuItemInfoA GetMenuItemInfo; -alias GetMenuStringA GetMenuString; -alias GetMessageA GetMessage; -static if (WINVER >=0x410) { -alias GetMonitorInfoA GetMonitorInfo; -} -alias GetPropA GetProp; -static if (_WIN32_WINNT >= 0x501) { -alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; -} -alias GetTabbedTextExtentA GetTabbedTextExtent; -alias GetUserObjectInformationA GetUserObjectInformation; -alias GetWindowLongA GetWindowLong; -alias GetWindowLongPtrA GetWindowLongPtr; -alias GetWindowTextA GetWindowText; -alias GetWindowTextLengthA GetWindowTextLength; -alias GetAltTabInfoA GetAltTabInfo; -alias GetWindowModuleFileNameA GetWindowModuleFileName; -alias GrayStringA GrayString; -alias InsertMenuA InsertMenu; -alias InsertMenuItemA InsertMenuItem; -alias IsCharAlphaA IsCharAlpha; -alias IsCharAlphaNumericA IsCharAlphaNumeric; -alias IsCharLowerA IsCharLower; -alias IsCharUpperA IsCharUpper; -alias IsDialogMessageA IsDialogMessage; -alias LoadAcceleratorsA LoadAccelerators; -alias LoadBitmapA LoadBitmap; -alias LoadCursorA LoadCursor; -alias LoadIconA LoadIcon; -alias LoadCursorFromFileA LoadCursorFromFile; -alias LoadImageA LoadImage; -alias LoadKeyboardLayoutA LoadKeyboardLayout; -alias LoadMenuA LoadMenu; -alias LoadMenuIndirectA LoadMenuIndirect; -alias LoadStringA LoadString; -alias MapVirtualKeyA MapVirtualKey; -alias MapVirtualKeyExA MapVirtualKeyEx; -alias MessageBoxA MessageBox; -alias MessageBoxExA MessageBoxEx; -alias MessageBoxIndirectA MessageBoxIndirect; -alias ModifyMenuA ModifyMenu; -alias OemToCharA OemToChar; -alias OemToCharBuffA OemToCharBuff; -alias OpenDesktopA OpenDesktop; -alias OpenWindowStationA OpenWindowStation; -alias PeekMessageA PeekMessage; -alias PostMessageA PostMessage; -alias PostThreadMessageA PostThreadMessage; -alias RealGetWindowClassA RealGetWindowClass; -alias RegisterClassA RegisterClass; -alias RegisterClassExA RegisterClassEx; -alias RegisterClipboardFormatA RegisterClipboardFormat; -static if (WINVER >= 0x500) { -alias RegisterDeviceNotificationA RegisterDeviceNotification; -} -alias RegisterWindowMessageA RegisterWindowMessage; -alias RemovePropA RemoveProp; -alias SendDlgItemMessageA SendDlgItemMessage; -alias SendMessageA SendMessage; -alias SendMessageCallbackA SendMessageCallback; -alias SendMessageTimeoutA SendMessageTimeout; -alias SendNotifyMessageA SendNotifyMessage; -alias SetClassLongA SetClassLong; -alias SetDlgItemTextA SetDlgItemText; -alias SetMenuItemInfoA SetMenuItemInfo; -alias SetPropA SetProp; -alias SetUserObjectInformationA SetUserObjectInformation; -alias SetWindowLongA SetWindowLong; -alias SetWindowLongPtrA SetWindowLongPtr; -alias SetWindowsHookA SetWindowsHook; -alias SetWindowsHookExA SetWindowsHookEx; -alias SetWindowTextA SetWindowText; -alias SystemParametersInfoA SystemParametersInfo; -alias TabbedTextOutA TabbedTextOut; -alias TranslateAcceleratorA TranslateAccelerator; -alias UnregisterClassA UnregisterClass; -alias VkKeyScanA VkKeyScan; -alias VkKeyScanExA VkKeyScanEx; -alias WinHelpA WinHelp; -alias wsprintfA wsprintf; -alias wvsprintfA wvsprintf; - -alias ChangeDisplaySettingsA ChangeDisplaySettings; -alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx; -alias CreateDesktopA CreateDesktop; -alias EnumDisplaySettingsA EnumDisplaySettings; -static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) { - alias EnumDisplaySettingsExA EnumDisplaySettingsEx; -} - alias EnumDisplayDevicesA EnumDisplayDevices; -} - - -alias WNDCLASS* LPWNDCLASS, PWNDCLASS; -alias WNDCLASSEX* LPWNDCLASSEX, PWNDCLASSEX; -alias MENUITEMINFO* LPMENUITEMINFO; -alias MSGBOXPARAMS* PMSGBOXPARAMS, LPMSGBOXPARAMS; -alias HIGHCONTRAST* LPHIGHCONTRAST; -alias SERIALKEYS* LPSERIALKEYS; -alias SOUNDSENTRY* LPSOUNDSENTRY; -alias CREATESTRUCT* LPCREATESTRUCT; -alias CBT_CREATEWND* LPCBT_CREATEWND; -alias MDICREATESTRUCT* LPMDICREATESTRUCT; -alias MULTIKEYHELP* PMULTIKEYHELP, LPMULTIKEYHELP; -alias MONITORINFOEX* LPMONITORINFOEX; -alias ICONMETRICS* LPICONMETRICS; -alias NONCLIENTMETRICS* LPNONCLIENTMETRICS; +/***********************************************************************\ +* winuser.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winuser; +pragma(lib, "user32"); + +// Conversion Notes: +// The following macros were for win16 only, and are not included in this file: +//#define EnumTaskWindows(h, f, p) EnumThreadWindows((DWORD)h, f, p) +//#define PostAppMessageA(t, m, w, l) PostThreadMessageA((DWORD)t, m, w, l) +//#define PostAppMessageW(t, m, w, l) PostThreadMessageW((DWORD)t, m, w, l) +//#define GetSysModalWindow() (NULL) +//#define SetSysModalWindow(h) (NULL) +//#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL)) +//#define DefHookProc(c, p, lp, h) CallNextHookEx((HHOOK)*h, c, p, lp) + +private import win32.w32api, win32.winbase, win32.wingdi; +private import win32.windef; // for HMONITOR + +// FIXME: clean up Windows version support + +template MAKEINTATOM_T(int i) { + const LPTSTR MAKEINTATOM_T = cast(LPTSTR) i; +} + +const WC_DIALOG = MAKEINTATOM_T!(0x8002); + +const FAPPCOMMAND_MOUSE = 0x8000; +const FAPPCOMMAND_KEY = 0; +const FAPPCOMMAND_OEM = 0x1000; +const FAPPCOMMAND_MASK = 0xF000; + +const FVIRTKEY = 1; +const FNOINVERT = 2; +const FSHIFT = 4; +const FCONTROL = 8; +const FALT = 16; + +const ATF_TIMEOUTON = 1; +const ATF_ONOFFFEEDBACK = 2; +const ATF_AVAILABLE = 4; // May be obsolete. Not in recent MS docs. + +const WH_MIN = -1; +const WH_MSGFILTER = -1; +const WH_JOURNALRECORD = 0; +const WH_JOURNALPLAYBACK = 1; +const WH_KEYBOARD = 2; +const WH_GETMESSAGE = 3; +const WH_CALLWNDPROC = 4; +const WH_CBT = 5; +const WH_SYSMSGFILTER = 6; +const WH_MOUSE = 7; +const WH_HARDWARE = 8; +const WH_DEBUG = 9; +const WH_SHELL = 10; +const WH_FOREGROUNDIDLE = 11; +const WH_CALLWNDPROCRET = 12; +const WH_KEYBOARD_LL = 13; +const WH_MOUSE_LL = 14; +const WH_MAX = 14; +const WH_MINHOOK = WH_MIN; +const WH_MAXHOOK = WH_MAX; + +enum { + HC_ACTION = 0, + HC_GETNEXT, + HC_SKIP, + HC_NOREMOVE, // = 3 + HC_NOREM = HC_NOREMOVE, + HC_SYSMODALON, + HC_SYSMODALOFF +} + +enum { + HCBT_MOVESIZE = 0, + HCBT_MINMAX, + HCBT_QS, + HCBT_CREATEWND, + HCBT_DESTROYWND, + HCBT_ACTIVATE, + HCBT_CLICKSKIPPED, + HCBT_KEYSKIPPED, + HCBT_SYSCOMMAND, + HCBT_SETFOCUS // = 9 +} + +enum { + CF_TEXT = 0x0001, + CF_BITMAP, + CF_METAFILEPICT, + CF_SYLK, + CF_DIF, + CF_TIFF, + CF_OEMTEXT, + CF_DIB, + CF_PALETTE, + CF_PENDATA, + CF_RIFF, + CF_WAVE, + CF_UNICODETEXT, + CF_ENHMETAFILE, + CF_HDROP, + CF_LOCALE, + CF_MAX, // = 0x0011 + CF_OWNERDISPLAY = 0x0080, + CF_DSPTEXT, + CF_DSPBITMAP, + CF_DSPMETAFILEPICT, // = 0x0083 + CF_DSPENHMETAFILE = 0x008E, + CF_PRIVATEFIRST = 0x0200, + CF_PRIVATELAST = 0x02FF, + CF_GDIOBJFIRST = 0x0300, + CF_GDIOBJLAST = 0x03FF +} + +const HKL_PREV = 0; +const HKL_NEXT = 1; + +const KLF_ACTIVATE = 1; +const KLF_SUBSTITUTE_OK = 2; +const KLF_UNLOADPREVIOUS = 4; +const KLF_REORDER = 8; +const KLF_REPLACELANG = 16; +const KLF_NOTELLSHELL = 128; +const KLF_SETFORPROCESS = 256; +const KL_NAMELENGTH = 9; + +const MF_ENABLED = 0; +const MF_GRAYED = 1; +const MF_DISABLED = 2; +const MF_BITMAP = 4; +const MF_CHECKED = 8; +const MF_MENUBARBREAK = 32; +const MF_MENUBREAK = 64; +const MF_OWNERDRAW = 256; +const MF_POPUP = 16; +const MF_SEPARATOR = 0x800; +const MF_STRING = 0; +const MF_UNCHECKED = 0; +const MF_DEFAULT = 4096; +const MF_SYSMENU = 0x2000; +const MF_HELP = 0x4000; +const MF_END = 128; +const MF_RIGHTJUSTIFY = 0x4000; +const MF_MOUSESELECT = 0x8000; +const MF_INSERT = 0; +const MF_CHANGE = 128; +const MF_APPEND = 256; +const MF_DELETE = 512; +const MF_REMOVE = 4096; +const MF_USECHECKBITMAPS = 512; +const MF_UNHILITE = 0; +const MF_HILITE = 128; + +// Also defined in dbt.h +const BSM_ALLCOMPONENTS = 0; +const BSM_VXDS = 1; +const BSM_NETDRIVER = 2; +const BSM_INSTALLABLEDRIVERS = 4; +const BSM_APPLICATIONS = 8; +const BSM_ALLDESKTOPS = 16; + +const BSF_QUERY = 0x00000001; +const BSF_IGNORECURRENTTASK = 0x00000002; +const BSF_FLUSHDISK = 0x00000004; +const BSF_NOHANG = 0x00000008; +const BSF_POSTMESSAGE = 0x00000010; +const BSF_FORCEIFHUNG = 0x00000020; +const BSF_NOTIMEOUTIFNOTHUNG = 0x00000040; + +const BSF_ALLOWSFW = 0x00000080; +const BSF_SENDNOTIFYMESSAGE = 0x00000100; + +static if (_WIN32_WINNT >= 0x501) { + const BSF_RETURNHDESK = 0x00000200; + const BSF_LUID = 0x00000400; +} + +const BROADCAST_QUERY_DENY = 1112363332; +const DWORD ENUM_CURRENT_SETTINGS = -1; +const DWORD ENUM_REGISTRY_SETTINGS = -2; + +const CDS_UPDATEREGISTRY = 1; +const CDS_TEST = 2; +const CDS_FULLSCREEN = 4; +const CDS_GLOBAL = 8; +const CDS_SET_PRIMARY = 16; +const CDS_NORESET = 0x10000000; +const CDS_SETRECT = 0x20000000; +const CDS_RESET = 0x40000000; + +const DISP_CHANGE_RESTART = 1; +const DISP_CHANGE_SUCCESSFUL = 0; +const DISP_CHANGE_FAILED = -1; +const DISP_CHANGE_BADMODE = -2; +const DISP_CHANGE_NOTUPDATED = -3; +const DISP_CHANGE_BADFLAGS = -4; +const DISP_CHANGE_BADPARAM = -5; + +const BST_UNCHECKED = 0; +const BST_CHECKED = 1; +const BST_INDETERMINATE = 2; +const BST_PUSHED = 4; +const BST_FOCUS = 8; + +const MF_BYCOMMAND = 0; +const MF_BYPOSITION = 1024; +// [Redefined] MF_UNCHECKED=0 +// [Redefined] MF_HILITE=128 +// [Redefined] MF_UNHILITE=0 + +const CWP_ALL = 0; +const CWP_SKIPINVISIBLE = 1; +const CWP_SKIPDISABLED = 2; +const CWP_SKIPTRANSPARENT = 4; + +const IMAGE_BITMAP=0; +const IMAGE_ICON=1; +const IMAGE_CURSOR=2; +const IMAGE_ENHMETAFILE=3; + +const DF_ALLOWOTHERACCOUNTHOOK = 1; + +const DESKTOP_READOBJECTS = 1; +const DESKTOP_CREATEWINDOW = 2; +const DESKTOP_CREATEMENU = 4; +const DESKTOP_HOOKCONTROL = 8; +const DESKTOP_JOURNALRECORD = 16; +const DESKTOP_JOURNALPLAYBACK = 32; +const DESKTOP_ENUMERATE = 64; +const DESKTOP_WRITEOBJECTS = 128; +const DESKTOP_SWITCHDESKTOP = 256; + +const CW_USEDEFAULT = 0x80000000; + +enum { + WS_OVERLAPPED = 0, + WS_TILED = WS_OVERLAPPED, + WS_MAXIMIZEBOX = 0x00010000, + WS_MINIMIZEBOX = 0x00020000, + WS_TABSTOP = 0x00010000, + WS_GROUP = 0x00020000, + WS_THICKFRAME = 0x00040000, + WS_SIZEBOX = WS_THICKFRAME, + WS_SYSMENU = 0x00080000, + WS_HSCROLL = 0x00100000, + WS_VSCROLL = 0x00200000, + WS_DLGFRAME = 0x00400000, + WS_BORDER = 0x00800000, + WS_CAPTION = 0x00c00000, + WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, + WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, + WS_MAXIMIZE = 0x01000000, + WS_CLIPCHILDREN = 0x02000000, + WS_CLIPSIBLINGS = 0x04000000, + WS_DISABLED = 0x08000000, + WS_VISIBLE = 0x10000000, + WS_MINIMIZE = 0x20000000, + WS_ICONIC = WS_MINIMIZE, + WS_CHILD = 0x40000000, + WS_CHILDWINDOW = 0x40000000, + WS_POPUP = 0x80000000, + WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_SYSMENU, +} + +const MDIS_ALLCHILDSTYLES = 1; + +const BS_3STATE = 5; +const BS_AUTO3STATE = 6; +const BS_AUTOCHECKBOX = 3; +const BS_AUTORADIOBUTTON = 9; +const BS_BITMAP = 128; +const BS_BOTTOM = 0x800; +const BS_CENTER = 0x300; +const BS_CHECKBOX = 2; +const BS_DEFPUSHBUTTON = 1; +const BS_GROUPBOX = 7; +const BS_ICON = 64; +const BS_LEFT = 256; +const BS_LEFTTEXT = 32; +const BS_MULTILINE = 0x2000; +const BS_NOTIFY = 0x4000; +const BS_OWNERDRAW = 0xb; +const BS_PUSHBUTTON = 0; +const BS_PUSHLIKE = 4096; +const BS_RADIOBUTTON = 4; +const BS_RIGHT = 512; +const BS_RIGHTBUTTON = 32; +const BS_TEXT = 0; +const BS_TOP = 0x400; +const BS_USERBUTTON = 8; +const BS_VCENTER = 0xc00; +const BS_FLAT = 0x8000; + +const CBS_AUTOHSCROLL = 64; +const CBS_DISABLENOSCROLL = 0x800; +const CBS_DROPDOWN = 2; +const CBS_DROPDOWNLIST = 3; +const CBS_HASSTRINGS = 512; +const CBS_LOWERCASE = 0x4000; +const CBS_NOINTEGRALHEIGHT = 0x400; +const CBS_OEMCONVERT = 128; +const CBS_OWNERDRAWFIXED = 16; +const CBS_OWNERDRAWVARIABLE = 32; +const CBS_SIMPLE = 1; +const CBS_SORT = 256; +const CBS_UPPERCASE = 0x2000; + +const ES_AUTOHSCROLL = 128; +const ES_AUTOVSCROLL = 64; +const ES_CENTER = 1; +const ES_LEFT = 0; +const ES_LOWERCASE = 16; +const ES_MULTILINE = 4; +const ES_NOHIDESEL = 256; +const ES_NUMBER = 0x2000; +const ES_OEMCONVERT = 0x400; +const ES_PASSWORD = 32; +const ES_READONLY = 0x800; +const ES_RIGHT = 2; +const ES_UPPERCASE = 8; +const ES_WANTRETURN = 4096; + +const LBS_DISABLENOSCROLL = 4096; +const LBS_EXTENDEDSEL = 0x800; +const LBS_HASSTRINGS = 64; +const LBS_MULTICOLUMN = 512; +const LBS_MULTIPLESEL = 8; +const LBS_NODATA = 0x2000; +const LBS_NOINTEGRALHEIGHT = 256; +const LBS_NOREDRAW = 4; +const LBS_NOSEL = 0x4000; +const LBS_NOTIFY = 1; +const LBS_OWNERDRAWFIXED = 16; +const LBS_OWNERDRAWVARIABLE = 32; +const LBS_SORT = 2; +const LBS_STANDARD = 0xa00003; +const LBS_USETABSTOPS = 128; +const LBS_WANTKEYBOARDINPUT = 0x400; + +const SBS_BOTTOMALIGN = 4; +const SBS_HORZ = 0; +const SBS_LEFTALIGN = 2; +const SBS_RIGHTALIGN = 4; +const SBS_SIZEBOX = 8; +const SBS_SIZEBOXBOTTOMRIGHTALIGN = 4; +const SBS_SIZEBOXTOPLEFTALIGN = 2; +const SBS_SIZEGRIP = 16; +const SBS_TOPALIGN = 2; +const SBS_VERT = 1; + +const SS_BITMAP = 14; +const SS_BLACKFRAME = 7; +const SS_BLACKRECT = 4; +const SS_CENTER = 1; +const SS_CENTERIMAGE = 512; +const SS_ENHMETAFILE = 15; +const SS_ETCHEDFRAME = 18; +const SS_ETCHEDHORZ = 16; +const SS_ETCHEDVERT = 17; +const SS_GRAYFRAME = 8; +const SS_GRAYRECT = 5; +const SS_ICON = 3; +const SS_LEFT = 0; +const SS_LEFTNOWORDWRAP = 0xc; +const SS_NOPREFIX = 128; +const SS_NOTIFY = 256; +const SS_OWNERDRAW = 0xd; +const SS_REALSIZEIMAGE = 0x800; +const SS_RIGHT = 2; +const SS_RIGHTJUST = 0x400; +const SS_SIMPLE = 11; +const SS_SUNKEN = 4096; +const SS_WHITEFRAME = 9; +const SS_WHITERECT = 6; +const SS_USERITEM = 10; +const SS_TYPEMASK = 0x0000001FL; +const SS_ENDELLIPSIS = 0x00004000L; +const SS_PATHELLIPSIS = 0x00008000L; +const SS_WORDELLIPSIS = 0x0000C000L; +const SS_ELLIPSISMASK = 0x0000C000L; + +const DS_ABSALIGN = 0x0001; +const DS_3DLOOK = 0x0004; +const DS_SYSMODAL = 0x0002; +const DS_FIXEDSYS = 0x0008; +const DS_NOFAILCREATE = 0x0010; +const DS_LOCALEDIT = 0x0020; +const DS_SETFONT = 0x0040; +const DS_MODALFRAME = 0x0080; +const DS_NOIDLEMSG = 0x0100; +const DS_SETFOREGROUND = 0x0200; +const DS_CONTROL = 0x0400; +const DS_CENTER = 0x0800; +const DS_CENTERMOUSE = 0x1000; +const DS_CONTEXTHELP = 0x2000; +const DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS; + +const WS_EX_ACCEPTFILES = 16; +const WS_EX_APPWINDOW = 0x40000; +const WS_EX_CLIENTEDGE = 512; +const WS_EX_COMPOSITED = 0x2000000; // XP +const WS_EX_CONTEXTHELP = 0x400; +const WS_EX_CONTROLPARENT = 0x10000; +const WS_EX_DLGMODALFRAME = 1; +const WS_EX_LAYERED = 0x80000; // w2k +const WS_EX_LAYOUTRTL = 0x400000; // w98, w2k +const WS_EX_LEFT = 0; +const WS_EX_LEFTSCROLLBAR = 0x4000; +const WS_EX_LTRREADING = 0; +const WS_EX_MDICHILD = 64; +const WS_EX_NOACTIVATE = 0x8000000; // w2k +const WS_EX_NOINHERITLAYOUT = 0x100000; // w2k +const WS_EX_NOPARENTNOTIFY = 4; +const WS_EX_OVERLAPPEDWINDOW = 0x300; +const WS_EX_PALETTEWINDOW = 0x188; +const WS_EX_RIGHT = 0x1000; +const WS_EX_RIGHTSCROLLBAR = 0; +const WS_EX_RTLREADING = 0x2000; +const WS_EX_STATICEDGE = 0x20000; +const WS_EX_TOOLWINDOW = 128; +const WS_EX_TOPMOST = 8; +const WS_EX_TRANSPARENT = 32; +const WS_EX_WINDOWEDGE = 256; + +const WINSTA_ENUMDESKTOPS = 1; +const WINSTA_READATTRIBUTES = 2; +const WINSTA_ACCESSCLIPBOARD = 4; +const WINSTA_CREATEDESKTOP = 8; +const WINSTA_WRITEATTRIBUTES = 16; +const WINSTA_ACCESSGLOBALATOMS = 32; +const WINSTA_EXITWINDOWS = 64; +const WINSTA_ENUMERATE = 256; +const WINSTA_READSCREEN = 512; + +const DDL_READWRITE = 0; +const DDL_READONLY = 1; +const DDL_HIDDEN = 2; +const DDL_SYSTEM = 4; +const DDL_DIRECTORY = 16; +const DDL_ARCHIVE = 32; +const DDL_POSTMSGS = 8192; +const DDL_DRIVES = 16384; +const DDL_EXCLUSIVE = 32768; + +const DC_ACTIVE = 0x00000001; +const DC_SMALLCAP = 0x00000002; +const DC_ICON = 0x00000004; +const DC_TEXT = 0x00000008; +const DC_INBUTTON = 0x00000010; + +const DC_GRADIENT = 0x00000020; +static if (_WIN32_WINNT >= 0x501) { + const DC_BUTTONS = 0x00001000; +} + +// Where are these documented? +//const DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS; +//const DC_NC = DC_CAPTION|DC_FRAME; + +const BDR_RAISEDOUTER = 1; +const BDR_SUNKENOUTER = 2; +const BDR_RAISEDINNER = 4; +const BDR_SUNKENINNER = 8; +const BDR_OUTER = 3; +const BDR_INNER = 0xc; +const BDR_RAISED = 5; +const BDR_SUNKEN = 10; + +const EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER; +const EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER; +const EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER; +const EDGE_BUMP = BDR_RAISEDOUTER|BDR_SUNKENINNER; + +const BF_LEFT = 1; +const BF_TOP = 2; +const BF_RIGHT = 4; +const BF_BOTTOM = 8; +const BF_TOPLEFT = BF_TOP|BF_LEFT; +const BF_TOPRIGHT = BF_TOP|BF_RIGHT; +const BF_BOTTOMLEFT = BF_BOTTOM|BF_LEFT; +const BF_BOTTOMRIGHT = BF_BOTTOM|BF_RIGHT; +const BF_RECT = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ; +const BF_DIAGONAL = 16; +const BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL|BF_TOP|BF_RIGHT; +const BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL|BF_TOP|BF_LEFT; +const BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL|BF_BOTTOM|BF_LEFT; +const BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT; +const BF_MIDDLE = 0x800; +const BF_SOFT = 0x1000; +const BF_ADJUST = 0x2000; +const BF_FLAT = 0x4000; +const BF_MONO = 0x8000; + +enum { + DFC_CAPTION = 1, + DFC_MENU, + DFC_SCROLL, + DFC_BUTTON, + DFC_POPUPMENU // = 5 +} + +const DFCS_CAPTIONCLOSE = 0; +const DFCS_CAPTIONMIN = 1; +const DFCS_CAPTIONMAX = 2; +const DFCS_CAPTIONRESTORE = 3; +const DFCS_CAPTIONHELP = 4; + +const DFCS_MENUARROW = 0; +const DFCS_MENUCHECK = 1; +const DFCS_MENUBULLET = 2; +const DFCS_MENUARROWRIGHT = 4; + +const DFCS_SCROLLUP = 0; +const DFCS_SCROLLDOWN = 1; +const DFCS_SCROLLLEFT = 2; +const DFCS_SCROLLRIGHT = 3; +const DFCS_SCROLLCOMBOBOX = 5; +const DFCS_SCROLLSIZEGRIP = 8; +const DFCS_SCROLLSIZEGRIPRIGHT = 16; + +const DFCS_BUTTONCHECK = 0; +const DFCS_BUTTONRADIOIMAGE = 1; +const DFCS_BUTTONRADIOMASK = 2; +const DFCS_BUTTONRADIO = 4; +const DFCS_BUTTON3STATE = 8; +const DFCS_BUTTONPUSH = 16; +const DFCS_INACTIVE = 256; +const DFCS_PUSHED = 512; +const DFCS_CHECKED = 1024; +static if (_WIN32_WINNT >= 0x500) { + const DFCS_TRANSPARENT = 0x800; + const DFCS_HOT = 0x1000; +} +const DFCS_ADJUSTRECT = 0x2000; +const DFCS_FLAT = 0x4000; +const DFCS_MONO = 0x8000; + +enum { + DST_COMPLEX = 0, + DST_TEXT, + DST_PREFIXTEXT, + DST_ICON, + DST_BITMAP // = 4 +} + +const DSS_NORMAL = 0; +const DSS_UNION = 16; +const DSS_DISABLED = 32; +const DSS_MONO = 128; +const DSS_RIGHT = 0x8000; + +const DT_BOTTOM = 8; +const DT_CALCRECT = 1024; +const DT_CENTER = 1; +const DT_EDITCONTROL = 8192; +const DT_END_ELLIPSIS = 32768; +const DT_PATH_ELLIPSIS = 16384; +const DT_WORD_ELLIPSIS = 0x40000; +const DT_EXPANDTABS = 64; +const DT_EXTERNALLEADING = 512; +const DT_LEFT = 0; +const DT_MODIFYSTRING = 65536; +const DT_NOCLIP = 256; +const DT_NOPREFIX = 2048; +const DT_RIGHT = 2; +const DT_RTLREADING = 131072; +const DT_SINGLELINE = 32; +const DT_TABSTOP = 128; +const DT_TOP = 0; +const DT_VCENTER = 4; +const DT_WORDBREAK = 16; +const DT_INTERNAL = 4096; + +const WB_ISDELIMITER = 2; +const WB_LEFT = 0; +const WB_RIGHT = 1; + +const SB_HORZ = 0; +const SB_VERT = 1; +const SB_CTL = 2; +const SB_BOTH = 3; + +const ESB_DISABLE_BOTH = 3; +const ESB_DISABLE_DOWN = 2; +const ESB_DISABLE_LEFT = 1; +const ESB_DISABLE_LTUP = 1; +const ESB_DISABLE_RIGHT = 2; +const ESB_DISABLE_RTDN = 2; +const ESB_DISABLE_UP = 1; +const ESB_ENABLE_BOTH = 0; + +const SB_LINEUP = 0; +const SB_LINEDOWN = 1; +const SB_LINELEFT = 0; +const SB_LINERIGHT = 1; +const SB_PAGEUP = 2; +const SB_PAGEDOWN = 3; +const SB_PAGELEFT = 2; +const SB_PAGERIGHT = 3; +const SB_THUMBPOSITION = 4; +const SB_THUMBTRACK = 5; +const SB_ENDSCROLL = 8; +const SB_LEFT = 6; +const SB_RIGHT = 7; +const SB_BOTTOM = 7; +const SB_TOP = 6; + +//MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0) + +template MAKEINTRESOURCE_T (WORD i) +{ + const LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i); +} + +LPSTR MAKEINTRESOURCEA(WORD i) +{ + return cast(LPSTR)(i); +} + +LPWSTR MAKEINTRESOURCEW(WORD i) +{ + return cast(LPWSTR)(i); +} + +const RT_CURSOR = MAKEINTRESOURCE_T!(1); +const RT_BITMAP = MAKEINTRESOURCE_T!(2); +const RT_ICON = MAKEINTRESOURCE_T!(3); +const RT_MENU = MAKEINTRESOURCE_T!(4); +const RT_DIALOG = MAKEINTRESOURCE_T!(5); +const RT_STRING = MAKEINTRESOURCE_T!(6); +const RT_FONTDIR = MAKEINTRESOURCE_T!(7); +const RT_FONT = MAKEINTRESOURCE_T!(8); +const RT_ACCELERATOR = MAKEINTRESOURCE_T!(9); +const RT_RCDATA = MAKEINTRESOURCE_T!(10); +const RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11); + +const RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12); +const RT_GROUP_ICON = MAKEINTRESOURCE_T!(14); +const RT_VERSION = MAKEINTRESOURCE_T!(16); +const RT_DLGINCLUDE = MAKEINTRESOURCE_T!(17); +const RT_PLUGPLAY = MAKEINTRESOURCE_T!(19); +const RT_VXD = MAKEINTRESOURCE_T!(20); +const RT_ANICURSOR = MAKEINTRESOURCE_T!(21); +const RT_ANIICON = MAKEINTRESOURCE_T!(22); +const RT_HTML = MAKEINTRESOURCE_T!(23); +const RT_MANIFEST = MAKEINTRESOURCE_T!(24); + +const CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(1); +const ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(2); +const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3); + +const EWX_LOGOFF = 0; +const EWX_SHUTDOWN = 1; +const EWX_REBOOT = 2; +const EWX_FORCE = 4; +const EWX_POWEROFF = 8; +static if (_WIN32_WINNT >= 0x500) { +const EWX_FORCEIFHUNG = 16; +} + +const CS_BYTEALIGNCLIENT = 4096; +const CS_BYTEALIGNWINDOW = 8192; +const CS_KEYCVTWINDOW = 4; +const CS_NOKEYCVT = 256; +const CS_CLASSDC = 64; +const CS_DBLCLKS = 8; +const CS_GLOBALCLASS = 16384; +const CS_HREDRAW = 2; +const CS_NOCLOSE = 512; +const CS_OWNDC = 32; +const CS_PARENTDC = 128; +const CS_SAVEBITS = 2048; +const CS_VREDRAW = 1; +const CS_IME = 0x10000; + +const GCW_ATOM = -32; +const GCL_CBCLSEXTRA = -20; +const GCL_CBWNDEXTRA = -18; +const GCL_HBRBACKGROUND = -10; +const GCL_HCURSOR = -12; +const GCL_HICON = -14; +const GCL_HICONSM = -34; +const GCL_HMODULE = -16; +const GCL_MENUNAME = -8; +const GCL_STYLE = -26; +const GCL_WNDPROC = -24; + +alias GCL_HICONSM GCLP_HICONSM; +alias GCL_HICON GCLP_HICON; +alias GCL_HCURSOR GCLP_HCURSOR; +alias GCL_HBRBACKGROUND GCLP_HBRBACKGROUND; +alias GCL_HMODULE GCLP_HMODULE; +alias GCL_MENUNAME GCLP_MENUNAME; +alias GCL_WNDPROC GCLP_WNDPROC; + +const IDC_ARROW = MAKEINTRESOURCE_T!(32512); +const IDC_IBEAM = MAKEINTRESOURCE_T!(32513); +const IDC_WAIT = MAKEINTRESOURCE_T!(32514); +const IDC_CROSS = MAKEINTRESOURCE_T!(32515); +const IDC_UPARROW = MAKEINTRESOURCE_T!(32516); +const IDC_SIZENWSE = MAKEINTRESOURCE_T!(32642); +const IDC_SIZENESW = MAKEINTRESOURCE_T!(32643); +const IDC_SIZEWE = MAKEINTRESOURCE_T!(32644); +const IDC_SIZENS = MAKEINTRESOURCE_T!(32645); +const IDC_SIZEALL = MAKEINTRESOURCE_T!(32646); +const IDC_NO = MAKEINTRESOURCE_T!(32648); +static if (_WIN32_WINNT >= 0x500) { + const IDC_HAND = MAKEINTRESOURCE_T!(32649); +} +const IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650); +const IDC_HELP = MAKEINTRESOURCE_T!(32651); +const IDC_ICON = MAKEINTRESOURCE_T!(32641); +const IDC_SIZE = MAKEINTRESOURCE_T!(32640); +const IDI_APPLICATION = MAKEINTRESOURCE_T!(32512); +const IDI_HAND = MAKEINTRESOURCE_T!(32513); +const IDI_QUESTION = MAKEINTRESOURCE_T!(32514); +const IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515); +const IDI_ASTERISK = MAKEINTRESOURCE_T!(32516); +const IDI_WINLOGO = MAKEINTRESOURCE_T!(32517); +static if (_WIN32_WINNT >= 0x600) { + const IDI_SHIELD = MAKEINTRESOURCE_T!(32518); +} + +const IDI_WARNING = IDI_EXCLAMATION; +const IDI_ERROR = IDI_HAND; +const IDI_INFORMATION = IDI_ASTERISK; + +static if(_WIN32_WINNT >= 0x500) { + +const MNGOF_TOPGAP = 0x00000001; +const MNGOF_BOTTOMGAP = 0x00000002; +const MNGO_NOINTERFACE = 0x00000000; +const MNGO_NOERROR = 0x00000001; + +} + +const MIIM_STATE = 1; +const MIIM_ID = 2; +const MIIM_SUBMENU = 4; +const MIIM_CHECKMARKS = 8; +const MIIM_TYPE = 16; +const MIIM_DATA = 32; +const MIIM_STRING = 64; +const MIIM_BITMAP = 128; +const MIIM_FTYPE = 256; + +static if (_WIN32_WINNT >= 0x500) { + + const MIM_MAXHEIGHT = 1; + const MIM_BACKGROUND = 2; + const MIM_HELPID = 4; + const MIM_MENUDATA = 8; + const MIM_STYLE = 16; + const MIM_APPLYTOSUBMENUS = 0x80000000L; + + const MNS_NOCHECK = 0x80000000; + const MNS_MODELESS = 0x40000000; + const MNS_DRAGDROP = 0x20000000; + const MNS_AUTODISMISS = 0x10000000; + const MNS_NOTIFYBYPOS = 0x08000000; + const MNS_CHECKORBMP = 0x04000000; + +} + +const MFT_BITMAP = 4; +const MFT_MENUBARBREAK = 32; +const MFT_MENUBREAK = 64; +const MFT_OWNERDRAW = 256; +const MFT_RADIOCHECK = 512; +const MFT_RIGHTJUSTIFY = 0x4000; +const MFT_SEPARATOR = 0x800; +const MFT_RIGHTORDER = 0x2000L; +const MFT_STRING = 0; + +const MFS_CHECKED = 8; +const MFS_DEFAULT = 4096; +const MFS_DISABLED = 3; +const MFS_ENABLED = 0; +const MFS_GRAYED = 3; +const MFS_HILITE = 128; +const MFS_UNCHECKED = 0; +const MFS_UNHILITE = 0; + +const GW_HWNDNEXT = 2; +const GW_HWNDPREV = 3; +const GW_CHILD = 5; +const GW_HWNDFIRST = 0; +const GW_HWNDLAST = 1; +const GW_OWNER = 4; + +const SW_HIDE = 0; +const SW_NORMAL = 1; +const SW_SHOWNORMAL = 1; +const SW_SHOWMINIMIZED = 2; +const SW_MAXIMIZE = 3; +const SW_SHOWMAXIMIZED = 3; +const SW_SHOWNOACTIVATE = 4; +const SW_SHOW = 5; +const SW_MINIMIZE = 6; +const SW_SHOWMINNOACTIVE = 7; +const SW_SHOWNA = 8; +const SW_RESTORE = 9; +const SW_SHOWDEFAULT = 10; +const SW_FORCEMINIMIZE = 11; +const SW_MAX = 11; + +const MB_USERICON = 128; +const MB_ICONASTERISK = 64; +const MB_ICONEXCLAMATION = 0x30; +const MB_ICONWARNING = 0x30; +const MB_ICONERROR = 16; +const MB_ICONHAND = 16; +const MB_ICONQUESTION = 32; +const MB_OK = 0; +const MB_ABORTRETRYIGNORE = 2; +const MB_APPLMODAL = 0; +const MB_DEFAULT_DESKTOP_ONLY = 0x20000; +const MB_HELP = 0x4000; +const MB_RIGHT = 0x80000; +const MB_RTLREADING = 0x100000; +const MB_TOPMOST = 0x40000; +const MB_DEFBUTTON1 = 0; +const MB_DEFBUTTON2 = 256; +const MB_DEFBUTTON3 = 512; +const MB_DEFBUTTON4 = 0x300; +const MB_ICONINFORMATION = 64; +const MB_ICONSTOP = 16; +const MB_OKCANCEL = 1; +const MB_RETRYCANCEL = 5; + +const MB_SERVICE_NOTIFICATION = 0x00200000; +const MB_SERVICE_NOTIFICATION_NT3X = 0x00040000; + +const MB_SETFOREGROUND = 0x10000; +const MB_SYSTEMMODAL = 4096; +const MB_TASKMODAL = 0x2000; +const MB_YESNO = 4; +const MB_YESNOCANCEL = 3; +const MB_ICONMASK = 240; +const MB_DEFMASK = 3840; +const MB_MODEMASK = 0x00003000; +const MB_MISCMASK = 0x0000C000; +const MB_NOFOCUS = 0x00008000; +const MB_TYPEMASK = 15; +// [Redefined] MB_TOPMOST=0x40000 +static if (_WIN32_WINNT >= 0x500) { + const MB_CANCELTRYCONTINUE=6; +} + +const IDOK = 1; +const IDCANCEL = 2; +const IDABORT = 3; +const IDRETRY = 4; +const IDIGNORE = 5; +const IDYES = 6; +const IDNO = 7; +static if (_WIN32_WINNT >= 0x400) { + const IDCLOSE = 8; + const IDHELP = 9; +} +static if (_WIN32_WINNT >= 0x500) { + const IDTRYAGAIN = 10; + const IDCONTINUE = 11; +} + +const GWL_EXSTYLE = -20; +const GWL_STYLE = -16; +const GWL_WNDPROC = -4; +const GWLP_WNDPROC = -4; +const GWL_HINSTANCE = -6; +const GWLP_HINSTANCE = -6; +const GWL_HWNDPARENT = -8; +const GWLP_HWNDPARENT = -8; +const GWL_ID = -12; +const GWLP_ID = -12; +const GWL_USERDATA = -21; +const GWLP_USERDATA = -21; + +const DWL_DLGPROC = 4; +const DWLP_DLGPROC = 4; +const DWL_MSGRESULT = 0; +const DWLP_MSGRESULT = 0; +const DWL_USER = 8; +const DWLP_USER = 8; + +const QS_KEY = 1; +const QS_MOUSEMOVE = 2; +const QS_MOUSEBUTTON = 4; +const QS_MOUSE = 6; +const QS_POSTMESSAGE = 8; +const QS_TIMER = 16; +const QS_PAINT = 32; +const QS_SENDMESSAGE = 64; +const QS_HOTKEY = 128; +const QS_ALLPOSTMESSAGE = 256; +static if (_WIN32_WINNT >= 0x501) { +const QS_RAWINPUT = 1024; +const QS_INPUT = 1031; +const QS_ALLEVENTS = 1215; +const QS_ALLINPUT = 1279; +} else { +const QS_INPUT = 7; +const QS_ALLEVENTS = 191; +const QS_ALLINPUT = 255; +} + +const MWMO_WAITALL = 1; +const MWMO_ALERTABLE = 2; +const MWMO_INPUTAVAILABLE = 4; + +const COLOR_3DDKSHADOW=21; +const COLOR_3DFACE=15; +const COLOR_3DHILIGHT=20; +const COLOR_3DHIGHLIGHT=20; +const COLOR_3DLIGHT=22; +const COLOR_BTNHILIGHT=20; +const COLOR_3DSHADOW=16; +const COLOR_ACTIVEBORDER=10; +const COLOR_ACTIVECAPTION=2; +const COLOR_APPWORKSPACE=12; +const COLOR_BACKGROUND=1; +const COLOR_DESKTOP=1; +const COLOR_BTNFACE=15; +const COLOR_BTNHIGHLIGHT=20; +const COLOR_BTNSHADOW=16; +const COLOR_BTNTEXT=18; +const COLOR_CAPTIONTEXT=9; +const COLOR_GRAYTEXT=17; +const COLOR_HIGHLIGHT=13; +const COLOR_HIGHLIGHTTEXT=14; +const COLOR_INACTIVEBORDER=11; +const COLOR_INACTIVECAPTION=3; +const COLOR_INACTIVECAPTIONTEXT=19; +const COLOR_INFOBK=24; +const COLOR_INFOTEXT=23; +const COLOR_MENU=4; +const COLOR_MENUTEXT=7; +const COLOR_SCROLLBAR=0; +const COLOR_WINDOW=5; +const COLOR_WINDOWFRAME=6; +const COLOR_WINDOWTEXT=8; +const COLOR_HOTLIGHT=26; +const COLOR_GRADIENTACTIVECAPTION=27; +const COLOR_GRADIENTINACTIVECAPTION=28; + +const CTLCOLOR_MSGBOX=0; +const CTLCOLOR_EDIT=1; +const CTLCOLOR_LISTBOX=2; +const CTLCOLOR_BTN=3; +const CTLCOLOR_DLG=4; +const CTLCOLOR_SCROLLBAR=5; +const CTLCOLOR_STATIC=6; +const CTLCOLOR_MAX=7; + +// For GetSystemMetrics() +enum : int { + SM_CXSCREEN = 0, + SM_CYSCREEN, + SM_CXVSCROLL, + SM_CYHSCROLL, + SM_CYCAPTION, + SM_CXBORDER, + SM_CYBORDER, + SM_CXDLGFRAME, // = 7, + SM_CXFIXEDFRAME = SM_CXDLGFRAME, + SM_CYDLGFRAME, // =8, + SM_CYFIXEDFRAME = SM_CYDLGFRAME, + SM_CYVTHUMB = 9, + SM_CXHTHUMB, + SM_CXICON, + SM_CYICON, + SM_CXCURSOR, + SM_CYCURSOR, + SM_CYMENU, + SM_CXFULLSCREEN, + SM_CYFULLSCREEN, + SM_CYKANJIWINDOW, + SM_MOUSEPRESENT, + SM_CYVSCROLL, + SM_CXHSCROLL, + SM_DEBUG, + SM_SWAPBUTTON, + SM_RESERVED1, + SM_RESERVED2, + SM_RESERVED3, + SM_RESERVED4, + SM_CXMIN, + SM_CYMIN, + SM_CXSIZE, + SM_CYSIZE, + SM_CXSIZEFRAME, // = 32, + SM_CXFRAME = SM_CXSIZEFRAME, + SM_CYSIZEFRAME, // = 33 + SM_CYFRAME = SM_CYSIZEFRAME, + SM_CXMINTRACK, + SM_CYMINTRACK, + SM_CXDOUBLECLK, + SM_CYDOUBLECLK, + SM_CXICONSPACING, + SM_CYICONSPACING, + SM_MENUDROPALIGNMENT, + SM_PENWINDOWS, + SM_DBCSENABLED, + SM_CMOUSEBUTTONS, + SM_SECURE, + SM_CXEDGE, + SM_CYEDGE, + SM_CXMINSPACING, + SM_CYMINSPACING, + SM_CXSMICON, + SM_CYSMICON, + SM_CYSMCAPTION, + SM_CXSMSIZE, + SM_CYSMSIZE, + SM_CXMENUSIZE, + SM_CYMENUSIZE, + SM_ARRANGE, + SM_CXMINIMIZED, + SM_CYMINIMIZED, + SM_CXMAXTRACK, + SM_CYMAXTRACK, + SM_CXMAXIMIZED, + SM_CYMAXIMIZED, + SM_NETWORK, // = 63 + SM_CLEANBOOT = 67, + SM_CXDRAG, + SM_CYDRAG, + SM_SHOWSOUNDS, + SM_CXMENUCHECK, + SM_CYMENUCHECK, + SM_SLOWMACHINE, + SM_MIDEASTENABLED, + // The next values aren't supported in Win95. + SM_MOUSEWHEELPRESENT, + SM_XVIRTUALSCREEN, + SM_YVIRTUALSCREEN, + SM_CXVIRTUALSCREEN, + SM_CYVIRTUALSCREEN, + SM_CMONITORS, + SM_SAMEDISPLAYFORMAT, + SM_IMMENABLED, + SM_CXFOCUSBORDER, + SM_CYFOCUSBORDER, // = 84 + SM_TABLETPC = 86, + SM_MEDIACENTER = 87, + SM_REMOTESESSION = 0x1000, + // These are only for WinXP and later + SM_SHUTTINGDOWN = 0x2000, + SM_REMOTECONTROL = 0x2001 +} + +const ARW_BOTTOMLEFT=0; +const ARW_BOTTOMRIGHT=1; +const ARW_HIDE=8; +const ARW_TOPLEFT=2; +const ARW_TOPRIGHT=3; +const ARW_DOWN=4; +const ARW_LEFT=0; +const ARW_RIGHT=0; +const ARW_UP=4; + +const UOI_FLAGS=1; +const UOI_NAME=2; +const UOI_TYPE=3; +const UOI_USER_SID=4; + +// For the fuLoad parameter of LoadImage() +enum : UINT { + LR_DEFAULTCOLOR = 0, + LR_MONOCHROME = 1, + LR_COLOR = 2, + LR_COPYRETURNORG = 4, + LR_COPYDELETEORG = 8, + LR_LOADFROMFILE = 16, + LR_LOADTRANSPARENT = 32, + LR_DEFAULTSIZE = 64, + LR_LOADREALSIZE = 128, + LR_LOADMAP3DCOLORS = 4096, + LR_CREATEDIBSECTION = 8192, + LR_COPYFROMRESOURCE = 16384, + LR_SHARED = 32768 +} + +const KEYEVENTF_EXTENDEDKEY = 0x00000001; +const KEYEVENTF_KEYUP = 00000002; +static if (_WIN32_WINNT >= 0x500) { +const KEYEVENTF_UNICODE = 0x00000004; +const KEYEVENTF_SCANCODE = 0x00000008; +} + +const OBM_BTNCORNERS = 32758; +const OBM_BTSIZE = 32761; +const OBM_CHECK = 32760; +const OBM_CHECKBOXES = 32759; +const OBM_CLOSE = 32754; +const OBM_COMBO = 32738; +const OBM_DNARROW = 32752; +const OBM_DNARROWD = 32742; +const OBM_DNARROWI = 32736; +const OBM_LFARROW = 32750; +const OBM_LFARROWI = 32734; +const OBM_LFARROWD = 32740; +const OBM_MNARROW = 32739; +const OBM_OLD_CLOSE = 32767; +const OBM_OLD_DNARROW = 32764; +const OBM_OLD_LFARROW = 32762; +const OBM_OLD_REDUCE = 32757; +const OBM_OLD_RESTORE = 32755; +const OBM_OLD_RGARROW = 32763; +const OBM_OLD_UPARROW = 32765; +const OBM_OLD_ZOOM = 32756; +const OBM_REDUCE = 32749; +const OBM_REDUCED = 32746; +const OBM_RESTORE = 32747; +const OBM_RESTORED = 32744; +const OBM_RGARROW = 32751; +const OBM_RGARROWD = 32741; +const OBM_RGARROWI = 32735; +const OBM_SIZE = 32766; +const OBM_UPARROW = 32753; +const OBM_UPARROWD = 32743; +const OBM_UPARROWI = 32737; +const OBM_ZOOM = 32748; +const OBM_ZOOMD = 32745; + +const OCR_NORMAL = 32512; +const OCR_IBEAM = 32513; +const OCR_WAIT = 32514; +const OCR_CROSS = 32515; +const OCR_UP = 32516; +const OCR_SIZE = 32640; +const OCR_ICON = 32641; +const OCR_SIZENWSE = 32642; +const OCR_SIZENESW = 32643; +const OCR_SIZEWE = 32644; +const OCR_SIZENS = 32645; +const OCR_SIZEALL = 32646; +const OCR_NO = 32648; +const OCR_APPSTARTING = 32650; + +const OIC_SAMPLE = 32512; +const OIC_HAND = 32513; +const OIC_QUES = 32514; +const OIC_BANG = 32515; +const OIC_NOTE = 32516; +const OIC_WINLOGO = 32517; +const OIC_WARNING = OIC_BANG; +const OIC_ERROR = OIC_HAND; +const OIC_INFORMATION = OIC_NOTE; + +const HELPINFO_MENUITEM = 2; +const HELPINFO_WINDOW = 1; + +static if (_WIN32_WINNT >= 0x501) { + +const WTS_CONSOLE_CONNECT = 0x1; +const WTS_CONSOLE_DISCONNECT = 0x2; +const WTS_REMOTE_CONNECT = 0x3; +const WTS_REMOTE_DISCONNECT = 0x4; +const WTS_SESSION_LOGON = 0x5; +const WTS_SESSION_LOGOFF = 0x6; +const WTS_SESSION_LOCK = 0x7; +const WTS_SESSION_UNLOCK = 0x8; +const WTS_SESSION_REMOTE_CONTROL = 0x9; + +} + +const MSGF_DIALOGBOX = 0; +const MSGF_MESSAGEBOX = 1; +const MSGF_MENU = 2; +const MSGF_MOVE = 3; +const MSGF_SIZE = 4; +const MSGF_SCROLLBAR = 5; +const MSGF_NEXTWINDOW = 6; +const MSGF_MAINLOOP = 8; +const MSGF_USER = 4096; + +const MOUSEEVENTF_MOVE = 1; +const MOUSEEVENTF_LEFTDOWN = 2; +const MOUSEEVENTF_LEFTUP = 4; +const MOUSEEVENTF_RIGHTDOWN = 8; +const MOUSEEVENTF_RIGHTUP = 16; +const MOUSEEVENTF_MIDDLEDOWN = 32; +const MOUSEEVENTF_MIDDLEUP = 64; +const MOUSEEVENTF_WHEEL = 0x0800; +const MOUSEEVENTF_ABSOLUTE = 32768; + +const PM_NOREMOVE = 0; +const PM_REMOVE = 1; +const PM_NOYIELD = 2; + +static if (_WIN32_WINNT >= 0x500) { +const PM_QS_INPUT = (QS_INPUT << 16); +const PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE|QS_HOTKEY|QS_TIMER) << 16); +const PM_QS_PAINT = (QS_PAINT << 16); +const PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16); +} +const HWND + HWND_BROADCAST = cast(HWND)0xffff, + HWND_BOTTOM = cast(HWND)1, + HWND_NOTOPMOST = cast(HWND)(-2), + HWND_TOP = cast(HWND)0, + HWND_TOPMOST = cast(HWND)(-1), + HWND_DESKTOP = cast(HWND)0, + HWND_MESSAGE = cast(HWND)(-3);// w2k + +const RDW_INVALIDATE = 1; +const RDW_INTERNALPAINT = 2; +const RDW_ERASE = 4; +const RDW_VALIDATE = 8; +const RDW_NOINTERNALPAINT = 16; +const RDW_NOERASE = 32; +const RDW_NOCHILDREN = 64; +const RDW_ALLCHILDREN = 128; +const RDW_UPDATENOW = 256; +const RDW_ERASENOW = 512; +const RDW_FRAME = 1024; +const RDW_NOFRAME = 2048; + +const SMTO_NORMAL = 0; +const SMTO_BLOCK = 1; +const SMTO_ABORTIFHUNG = 2; + +const SIF_ALL = 23; +const SIF_PAGE = 2; +const SIF_POS = 4; +const SIF_RANGE = 1; +const SIF_DISABLENOSCROLL = 8; +const SIF_TRACKPOS = 16; + +const SWP_DRAWFRAME = 32; +const SWP_FRAMECHANGED = 32; +const SWP_HIDEWINDOW = 128; +const SWP_NOACTIVATE = 16; +const SWP_NOCOPYBITS = 256; +const SWP_NOMOVE = 2; +const SWP_NOSIZE = 1; +const SWP_NOREDRAW = 8; +const SWP_NOZORDER = 4; +const SWP_SHOWWINDOW = 64; +const SWP_NOOWNERZORDER = 512; +const SWP_NOREPOSITION = 512; +const SWP_NOSENDCHANGING = 1024; +const SWP_DEFERERASE = 8192; +const SWP_ASYNCWINDOWPOS = 16384; + +enum { // passed variously as int or WPARAM + HSHELL_WINDOWCREATED = 1, + HSHELL_WINDOWDESTROYED, + HSHELL_ACTIVATESHELLWINDOW, + HSHELL_WINDOWACTIVATED, + HSHELL_GETMINRECT, + HSHELL_REDRAW, + HSHELL_TASKMAN, + HSHELL_LANGUAGE, // = 8 + HSHELL_ENDTASK = 10, + HSHELL_ACCESSIBILITYSTATE, + HSHELL_APPCOMMAND, // = 12 + HSHELL_RUDEAPPACTIVATED = 32772, + HSHELL_FLASH = 32774 +} + +static if (_WIN32_WINNT >= 0x501) { + enum { + HSHELL_WINDOWREPLACED = 13, + HSHELL_WINDOWREPLACING + } +} + +enum SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001; +enum SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000; + +const SPI_GETACCESSTIMEOUT=60; +const SPI_GETACTIVEWNDTRKTIMEOUT=8194; +const SPI_GETANIMATION=72; +const SPI_GETBEEP=1; +const SPI_GETBORDER=5; +const SPI_GETDEFAULTINPUTLANG=89; +const SPI_GETDRAGFULLWINDOWS=38; +const SPI_GETFASTTASKSWITCH=35; +const SPI_GETFILTERKEYS=50; +const SPI_GETFONTSMOOTHING=74; +const SPI_GETGRIDGRANULARITY=18; +const SPI_GETHIGHCONTRAST=66; +const SPI_GETICONMETRICS=45; +const SPI_GETICONTITLELOGFONT=31; +const SPI_GETICONTITLEWRAP=25; +const SPI_GETKEYBOARDDELAY=22; +const SPI_GETKEYBOARDPREF=68; +const SPI_GETKEYBOARDSPEED=10; +const SPI_GETLOWPOWERACTIVE=83; +const SPI_GETLOWPOWERTIMEOUT=79; +const SPI_GETMENUDROPALIGNMENT=27; +const SPI_GETMINIMIZEDMETRICS=43; +const SPI_GETMOUSE=3; +const SPI_GETMOUSEKEYS=54; +const SPI_GETMOUSETRAILS=94; +const SPI_GETNONCLIENTMETRICS=41; +const SPI_GETPOWEROFFACTIVE=84; +const SPI_GETPOWEROFFTIMEOUT=80; +const SPI_GETSCREENREADER=70; +const SPI_GETSCREENSAVEACTIVE=16; +const SPI_GETSCREENSAVETIMEOUT=14; +const SPI_GETSERIALKEYS=62; +const SPI_GETSHOWSOUNDS=56; +const SPI_GETSOUNDSENTRY=64; +const SPI_GETSTICKYKEYS=58; +const SPI_GETTOGGLEKEYS=52; +const SPI_GETWHEELSCROLLLINES=104; +const SPI_GETWINDOWSEXTENSION=92; +const SPI_GETWORKAREA=48; +const SPI_ICONHORIZONTALSPACING=13; +const SPI_ICONVERTICALSPACING=24; +const SPI_LANGDRIVER=12; +const SPI_SCREENSAVERRUNNING=97; +const SPI_SETACCESSTIMEOUT=61; +const SPI_SETACTIVEWNDTRKTIMEOUT=8195; +const SPI_SETANIMATION=73; +const SPI_SETBEEP=2; +const SPI_SETBORDER=6; +const SPI_SETDEFAULTINPUTLANG=90; +const SPI_SETDESKPATTERN=21; +const SPI_SETDESKWALLPAPER=20; +const SPI_SETDOUBLECLICKTIME=32; +const SPI_SETDOUBLECLKHEIGHT=30; +const SPI_SETDOUBLECLKWIDTH=29; +const SPI_SETDRAGFULLWINDOWS=37; +const SPI_SETDRAGHEIGHT=77; +const SPI_SETDRAGWIDTH=76; +const SPI_SETFASTTASKSWITCH=36; +const SPI_SETFILTERKEYS=51; +const SPI_SETFONTSMOOTHING=75; +const SPI_SETGRIDGRANULARITY=19; +const SPI_SETHANDHELD=78; +const SPI_SETHIGHCONTRAST=67; +const SPI_SETICONMETRICS=46; +const SPI_SETICONTITLELOGFONT=34; +const SPI_SETICONTITLEWRAP=26; +const SPI_SETKEYBOARDDELAY=23; +const SPI_SETKEYBOARDPREF=69; +const SPI_SETKEYBOARDSPEED=11; +const SPI_SETLANGTOGGLE=91; +const SPI_SETLOWPOWERACTIVE=85; +const SPI_SETLOWPOWERTIMEOUT=81; +const SPI_SETMENUDROPALIGNMENT=28; +const SPI_SETMINIMIZEDMETRICS=44; +const SPI_SETMOUSE=4; +const SPI_SETMOUSEBUTTONSWAP=33; +const SPI_SETMOUSEKEYS=55; +const SPI_SETMOUSETRAILS=93; +const SPI_SETNONCLIENTMETRICS=42; +const SPI_SETPENWINDOWS=49; +const SPI_SETPOWEROFFACTIVE=86; +const SPI_SETPOWEROFFTIMEOUT=82; +const SPI_SETSCREENREADER=71; +const SPI_SETSCREENSAVEACTIVE=17; +const SPI_SETSCREENSAVERRUNNING=97; +const SPI_SETSCREENSAVETIMEOUT=15; +const SPI_SETSERIALKEYS=63; +const SPI_SETSHOWSOUNDS=57; +const SPI_SETSOUNDSENTRY=65; +const SPI_SETSTICKYKEYS=59; +const SPI_SETTOGGLEKEYS=53; +const SPI_SETWHEELSCROLLLINES=105; +const SPI_SETWORKAREA=47; + +static if (_WIN32_WINNT >= 0x500) { +const SPI_GETDESKWALLPAPER=115; +const SPI_GETMOUSESPEED=112; +const SPI_GETSCREENSAVERRUNNING=114; +const SPI_GETACTIVEWINDOWTRACKING=0x1000; +const SPI_GETACTIVEWNDTRKZORDER=0x100C; +const SPI_GETCOMBOBOXANIMATION=0x1004; +const SPI_GETCURSORSHADOW=0x101A; +const SPI_GETGRADIENTCAPTIONS=0x1008; +const SPI_GETHOTTRACKING=0x100E; +const SPI_GETKEYBOARDCUES=0x100A; +const SPI_GETLISTBOXSMOOTHSCROLLING=0x1006; +const SPI_GETMENUANIMATION=0x1002; +const SPI_GETMENUFADE=0x1012; +const SPI_GETMENUUNDERLINES=0x100A; +const SPI_GETSELECTIONFADE=0x1014; +const SPI_GETTOOLTIPANIMATION=0x1016; +const SPI_GETTOOLTIPFADE=0x1018; +const SPI_SETACTIVEWINDOWTRACKING=0x1001; +const SPI_SETACTIVEWNDTRKZORDER=0x100D; +const SPI_SETCOMBOBOXANIMATION=0x1005; +const SPI_SETCURSORSHADOW=0x101B; +const SPI_SETGRADIENTCAPTIONS=0x1009; +const SPI_SETHOTTRACKING=0x100F; +const SPI_SETKEYBOARDCUES=0x100B; +const SPI_SETLISTBOXSMOOTHSCROLLING=0x1007; +const SPI_SETMENUANIMATION=0x1003; +const SPI_SETMENUFADE=0x1013; +const SPI_SETMENUUNDERLINES=0x100B; +const SPI_SETMOUSESPEED=113; +const SPI_SETSELECTIONFADE=0x1015; +const SPI_SETTOOLTIPANIMATION=0x1017; +const SPI_SETTOOLTIPFADE=0x1019; +} + +const SPIF_UPDATEINIFILE=1; +const SPIF_SENDWININICHANGE=2; +const SPIF_SENDCHANGE=2; +// [Redefined] ATF_ONOFFFEEDBACK=2 +// [Redefined] ATF_TIMEOUTON=1 +const WM_APP=32768; +const WM_ACTIVATE=6; +const WM_ACTIVATEAPP=28; +// FIXME/CHECK: Are WM_AFX {FIRST, LAST} valid for _WIN32_WINNT < 0x400? +const WM_AFXFIRST=864; +const WM_AFXLAST=895; +const WM_ASKCBFORMATNAME=780; +const WM_CANCELJOURNAL=75; +const WM_CANCELMODE=31; +const WM_CAPTURECHANGED=533; +const WM_CHANGECBCHAIN=781; +const WM_CHAR=258; +const WM_CHARTOITEM=47; +const WM_CHILDACTIVATE=34; +const WM_CLEAR=771; +const WM_CLOSE=16; +const WM_COMMAND=273; +const WM_COMMNOTIFY=68; // obsolete +const WM_COMPACTING=65; +const WM_COMPAREITEM=57; +const WM_CONTEXTMENU=123; +const WM_COPY=769; +const WM_COPYDATA=74; +const WM_CREATE=1; +const WM_CTLCOLORBTN=309; +const WM_CTLCOLORDLG=310; +const WM_CTLCOLOREDIT=307; +const WM_CTLCOLORLISTBOX=308; +const WM_CTLCOLORMSGBOX=306; +const WM_CTLCOLORSCROLLBAR=311; +const WM_CTLCOLORSTATIC=312; +const WM_CUT=768; +const WM_DEADCHAR=259; +const WM_DELETEITEM=45; +const WM_DESTROY=2; +const WM_DESTROYCLIPBOARD=775; +const WM_DEVICECHANGE=537; +const WM_DEVMODECHANGE=27; +const WM_DISPLAYCHANGE=126; +const WM_DRAWCLIPBOARD=776; +const WM_DRAWITEM=43; +const WM_DROPFILES=563; +const WM_ENABLE=10; +const WM_ENDSESSION=22; +const WM_ENTERIDLE=289; +const WM_ENTERMENULOOP=529; +const WM_ENTERSIZEMOVE=561; +const WM_ERASEBKGND=20; +const WM_EXITMENULOOP=530; +const WM_EXITSIZEMOVE=562; +const WM_FONTCHANGE=29; +const WM_GETDLGCODE=135; +const WM_GETFONT=49; +const WM_GETHOTKEY=51; +const WM_GETICON=127; +const WM_GETMINMAXINFO=36; +const WM_GETTEXT=13; +const WM_GETTEXTLENGTH=14; +const WM_HANDHELDFIRST=856; +const WM_HANDHELDLAST=863; +const WM_HELP=83; +const WM_HOTKEY=786; +const WM_HSCROLL=276; +const WM_HSCROLLCLIPBOARD=782; +const WM_ICONERASEBKGND=39; +const WM_INITDIALOG=272; +const WM_INITMENU=278; +const WM_INITMENUPOPUP=279; +const WM_INPUTLANGCHANGE=81; +const WM_INPUTLANGCHANGEREQUEST=80; +const WM_KEYDOWN=256; +const WM_KEYUP=257; +const WM_KILLFOCUS=8; +const WM_MDIACTIVATE=546; +const WM_MDICASCADE=551; +const WM_MDICREATE=544; +const WM_MDIDESTROY=545; +const WM_MDIGETACTIVE=553; +const WM_MDIICONARRANGE=552; +const WM_MDIMAXIMIZE=549; +const WM_MDINEXT=548; +const WM_MDIREFRESHMENU=564; +const WM_MDIRESTORE=547; +const WM_MDISETMENU=560; +const WM_MDITILE=550; +const WM_MEASUREITEM=44; +static if (_WIN32_WINNT >= 0x500) { + const WM_UNINITMENUPOPUP=0x0125; + const WM_MENURBUTTONUP=290; + const WM_MENUCOMMAND=0x0126; + const WM_MENUGETOBJECT=0x0124; + const WM_MENUDRAG=0x0123; +} + +static if (_WIN32_WINNT >= 0x500) { + + enum { + WM_CHANGEUISTATE = 0x0127, + WM_UPDATEUISTATE = 0x0128, + WM_QUERYUISTATE = 0x0129 + } + + // LOWORD(wParam) values in WM_*UISTATE* + enum { + UIS_SET = 1, + UIS_CLEAR = 2, + UIS_INITIALIZE = 3 + } + + // HIWORD(wParam) values in WM_*UISTATE* + enum { + UISF_HIDEFOCUS = 0x1, + UISF_HIDEACCEL = 0x2 + } + +} + +static if (_WIN32_WINNT >= 0x501) { + + // HIWORD(wParam) values in WM_*UISTATE* + enum { + UISF_ACTIVE = 0x4 + } + +} + +const WM_MENUCHAR=288; +const WM_MENUSELECT=287; +const WM_MOVE=3; +const WM_MOVING=534; +const WM_NCACTIVATE=134; +const WM_NCCALCSIZE=131; +const WM_NCCREATE=129; +const WM_NCDESTROY=130; +const WM_NCHITTEST=132; +const WM_NCLBUTTONDBLCLK=163; +const WM_NCLBUTTONDOWN=161; +const WM_NCLBUTTONUP=162; +const WM_NCMBUTTONDBLCLK=169; +const WM_NCMBUTTONDOWN=167; +const WM_NCMBUTTONUP=168; +static if (_WIN32_WINNT >= 0x500) { +const WM_NCXBUTTONDOWN=171; +const WM_NCXBUTTONUP=172; +const WM_NCXBUTTONDBLCLK=173; +const WM_NCMOUSEHOVER=0x02A0; +const WM_NCMOUSELEAVE=0x02A2; +} +const WM_NCMOUSEMOVE=160; +const WM_NCPAINT=133; +const WM_NCRBUTTONDBLCLK=166; +const WM_NCRBUTTONDOWN=164; +const WM_NCRBUTTONUP=165; +const WM_NEXTDLGCTL=40; +const WM_NEXTMENU=531; +const WM_NOTIFY=78; +const WM_NOTIFYFORMAT=85; +const WM_NULL=0; +const WM_PAINT=15; +const WM_PAINTCLIPBOARD=777; +const WM_PAINTICON=38; +const WM_PALETTECHANGED=785; +const WM_PALETTEISCHANGING=784; +const WM_PARENTNOTIFY=528; +const WM_PASTE=770; +const WM_PENWINFIRST=896; +const WM_PENWINLAST=911; +const WM_POWER=72; +const WM_POWERBROADCAST=536; +const WM_PRINT=791; +const WM_PRINTCLIENT=792; +const WM_APPCOMMAND = 0x0319; +const WM_QUERYDRAGICON=55; +const WM_QUERYENDSESSION=17; +const WM_QUERYNEWPALETTE=783; +const WM_QUERYOPEN=19; +const WM_QUEUESYNC=35; +const WM_QUIT=18; +const WM_RENDERALLFORMATS=774; +const WM_RENDERFORMAT=773; +const WM_SETCURSOR=32; +const WM_SETFOCUS=7; +const WM_SETFONT=48; +const WM_SETHOTKEY=50; +const WM_SETICON=128; +const WM_SETREDRAW=11; +const WM_SETTEXT=12; +const WM_SETTINGCHANGE=26; +const WM_SHOWWINDOW=24; +const WM_SIZE=5; +const WM_SIZECLIPBOARD=779; +const WM_SIZING=532; +const WM_SPOOLERSTATUS=42; +const WM_STYLECHANGED=125; +const WM_STYLECHANGING=124; +const WM_SYSCHAR=262; +const WM_SYSCOLORCHANGE=21; +const WM_SYSCOMMAND=274; +const WM_SYSDEADCHAR=263; +const WM_SYSKEYDOWN=260; +const WM_SYSKEYUP=261; +static if(_WIN32_WINNT >= 0x501) { +const WM_TABLET_FIRST=704; +const WM_TABLET_LAST=735; +} +const WM_TCARD=82; +const WM_THEMECHANGED=794; +const WM_TIMECHANGE=30; +const WM_TIMER=275; +const WM_UNDO=772; +const WM_USER=1024; +const WM_USERCHANGED=84; +const WM_VKEYTOITEM=46; +const WM_VSCROLL=277; +const WM_VSCROLLCLIPBOARD=778; +const WM_WINDOWPOSCHANGED=71; +const WM_WINDOWPOSCHANGING=70; +const WM_WININICHANGE=26; +static if(_WIN32_WINNT >= 0x501) { +const WM_WTSSESSION_CHANGE=689; +} +const WM_INPUT=255; +const WM_KEYFIRST=256; +static if(_WIN32_WINNT >= 0x501) { +const WM_UNICHAR=265; +const WM_KEYLAST=265; +const UNICODE_NOCHAR=0xFFFF; +} else { +const WM_KEYLAST=264; +} +const WM_SYNCPAINT=136; +const WM_MOUSEACTIVATE=33; +const WM_MOUSEMOVE=512; +const WM_LBUTTONDOWN=513; +const WM_LBUTTONUP=514; +const WM_LBUTTONDBLCLK=515; +const WM_RBUTTONDOWN=516; +const WM_RBUTTONUP=517; +const WM_RBUTTONDBLCLK=518; +const WM_MBUTTONDOWN=519; +const WM_MBUTTONUP=520; +const WM_MBUTTONDBLCLK=521; +const WM_MOUSEWHEEL=522; +const WM_MOUSEFIRST=512; +static if (_WIN32_WINNT >= 0x600) { +const WM_XBUTTONDOWN=523; +const WM_XBUTTONUP=524; +const WM_XBUTTONDBLCLK=525; +const WM_MOUSEHWHEEL=526; +const WM_MOUSELAST=526; +} +else static if (_WIN32_WINNT >= 0x500) { +const WM_XBUTTONDOWN=523; +const WM_XBUTTONUP=524; +const WM_XBUTTONDBLCLK=525; +const WM_MOUSELAST=525; +} else { +const WM_MOUSELAST=522; +} +const WM_MOUSEHOVER=0x2A1; +const WM_MOUSELEAVE=0x2A3; +static if (_WIN32_WINNT >= 0x400) { +const WHEEL_DELTA=120; + +SHORT GET_WHEEL_DELTA_WPARAM(WPARAM wparam) +{ +return cast(SHORT) HIWORD(wparam); +} + +const WHEEL_PAGESCROLL = uint.max; +} +const BM_CLICK=245; +const BM_GETCHECK=240; +const BM_GETIMAGE=246; +const BM_GETSTATE=242; +const BM_SETCHECK=241; +const BM_SETIMAGE=247; +static if(_WIN32_WINNT >= 0x600) { + const BM_SETDONTCLICK = 248; +} +const BM_SETSTATE=243; +const BM_SETSTYLE=244; +const BN_CLICKED=0; +const BN_DBLCLK=5; +const BN_DISABLE=4; +const BN_DOUBLECLICKED=5; +const BN_HILITE=2; +const BN_KILLFOCUS=7; +const BN_PAINT=1; +const BN_PUSHED=2; +const BN_SETFOCUS=6; +const BN_UNHILITE=3; +const BN_UNPUSHED=3; +const CB_ADDSTRING=323; +const CB_DELETESTRING=324; +const CB_DIR=325; +const CB_FINDSTRING=332; +const CB_FINDSTRINGEXACT=344; +const CB_GETCOUNT=326; +const CB_GETCURSEL=327; +const CB_GETDROPPEDCONTROLRECT=338; +const CB_GETDROPPEDSTATE=343; +const CB_GETDROPPEDWIDTH=351; +const CB_GETEDITSEL=320; +const CB_GETEXTENDEDUI=342; +const CB_GETHORIZONTALEXTENT=349; +const CB_GETITEMDATA=336; +const CB_GETITEMHEIGHT=340; +const CB_GETLBTEXT=328; +const CB_GETLBTEXTLEN=329; +const CB_GETLOCALE=346; +const CB_GETTOPINDEX=347; +const CB_INITSTORAGE=353; +const CB_INSERTSTRING=330; +const CB_LIMITTEXT=321; +const CB_RESETCONTENT=331; +const CB_SELECTSTRING=333; +const CB_SETCURSEL=334; +const CB_SETDROPPEDWIDTH=352; +const CB_SETEDITSEL=322; +const CB_SETEXTENDEDUI=341; +const CB_SETHORIZONTALEXTENT=350; +const CB_SETITEMDATA=337; +const CB_SETITEMHEIGHT=339; +const CB_SETLOCALE=345; +const CB_SETTOPINDEX=348; +const CB_SHOWDROPDOWN=335; + +static if(_WIN32_WINNT >= 0x501) { +const CB_GETCOMBOBOXINFO = 356; +} + +const CBN_CLOSEUP=8; +const CBN_DBLCLK=2; +const CBN_DROPDOWN=7; +const CBN_EDITCHANGE=5; +const CBN_EDITUPDATE=6; +const CBN_ERRSPACE=(-1); +const CBN_KILLFOCUS=4; +const CBN_SELCHANGE=1; +const CBN_SELENDCANCEL=10; +const CBN_SELENDOK=9; +const CBN_SETFOCUS=3; + +const EM_CANUNDO=198; +const EM_CHARFROMPOS=215; +const EM_EMPTYUNDOBUFFER=205; +const EM_FMTLINES=200; +const EM_GETFIRSTVISIBLELINE=206; +const EM_GETHANDLE=189; +const EM_GETLIMITTEXT=213; +const EM_GETLINE=196; +const EM_GETLINECOUNT=186; +const EM_GETMARGINS=212; +const EM_GETMODIFY=184; +const EM_GETPASSWORDCHAR=210; +const EM_GETRECT=178; +const EM_GETSEL=176; +const EM_GETTHUMB=190; +const EM_GETWORDBREAKPROC=209; +const EM_LIMITTEXT=197; +const EM_LINEFROMCHAR=201; +const EM_LINEINDEX=187; +const EM_LINELENGTH=193; +const EM_LINESCROLL=182; +const EM_POSFROMCHAR=214; +const EM_REPLACESEL=194; +const EM_SCROLL=181; +const EM_SCROLLCARET=183; +const EM_SETHANDLE=188; +const EM_SETLIMITTEXT=197; +const EM_SETMARGINS=211; +const EM_SETMODIFY=185; +const EM_SETPASSWORDCHAR=204; +const EM_SETREADONLY=207; +const EM_SETRECT=179; +const EM_SETRECTNP=180; +const EM_SETSEL=177; +const EM_SETTABSTOPS=203; +const EM_SETWORDBREAKPROC=208; +const EM_UNDO=199; + +static if(_WIN32_WINNT >= 0x500) { + const EM_SETIMESTATUS=216; + const EM_GETIMESTATUS=217; +} + +const EN_CHANGE=768; +const EN_ERRSPACE=1280; +const EN_HSCROLL=1537; +const EN_KILLFOCUS=512; +const EN_MAXTEXT=1281; +const EN_SETFOCUS=256; +const EN_UPDATE=1024; +const EN_VSCROLL=1538; + +const LB_ADDFILE=406; +const LB_ADDSTRING=384; +const LB_DELETESTRING=386; +const LB_DIR=397; +const LB_FINDSTRING=399; +const LB_FINDSTRINGEXACT=418; +const LB_GETANCHORINDEX=413; +const LB_GETCARETINDEX=415; +const LB_GETCOUNT=395; +const LB_GETCURSEL=392; +const LB_GETHORIZONTALEXTENT=403; +const LB_GETITEMDATA=409; +const LB_GETITEMHEIGHT=417; +const LB_GETITEMRECT=408; +const LB_GETLOCALE=422; +const LB_GETSEL=391; +const LB_GETSELCOUNT=400; +const LB_GETSELITEMS=401; +const LB_GETTEXT=393; +const LB_GETTEXTLEN=394; +const LB_GETTOPINDEX=398; +const LB_INITSTORAGE=424; +const LB_INSERTSTRING=385; +const LB_ITEMFROMPOINT=425; +const LB_RESETCONTENT=388; +const LB_SELECTSTRING=396; +const LB_SELITEMRANGE=411; +const LB_SELITEMRANGEEX=387; +const LB_SETANCHORINDEX=412; +const LB_SETCARETINDEX=414; +const LB_SETCOLUMNWIDTH=405; +const LB_SETCOUNT=423; +const LB_SETCURSEL=390; +const LB_SETHORIZONTALEXTENT=404; +const LB_SETITEMDATA=410; +const LB_SETITEMHEIGHT=416; +const LB_SETLOCALE=421; +const LB_SETSEL=389; +const LB_SETTABSTOPS=402; +const LB_SETTOPINDEX=407; +static if(_WIN32_WINNT >= 0x501) { +const LB_GETLISTBOXINFO=434; +} + +const LBN_DBLCLK=2; +const LBN_ERRSPACE=-2; +const LBN_KILLFOCUS=5; +const LBN_SELCANCEL=3; +const LBN_SELCHANGE=1; +const LBN_SETFOCUS=4; + +const SBM_ENABLE_ARROWS=228; +const SBM_GETPOS=225; +const SBM_GETRANGE=227; +const SBM_GETSCROLLINFO=234; +const SBM_SETPOS=224; +const SBM_SETRANGE=226; +const SBM_SETRANGEREDRAW=230; +const SBM_SETSCROLLINFO=233; +static if(_WIN32_WINNT >= 0x501) { +const SBM_GETSCROLLBARINFO=235; +} + +const STM_GETICON=369; +const STM_GETIMAGE=371; +const STM_SETICON=368; +const STM_SETIMAGE=370; +const STN_CLICKED=0; +const STN_DBLCLK=1; +const STN_DISABLE=3; +const STN_ENABLE=2; + +const DM_GETDEFID = WM_USER; +const DM_SETDEFID = WM_USER+1; +const DM_REPOSITION = WM_USER+2; + +const PSM_PAGEINFO = WM_USER+100; +const PSM_SHEETINFO = WM_USER+101; + +const PSI_SETACTIVE=1; +const PSI_KILLACTIVE=2; +const PSI_APPLY=3; +const PSI_RESET=4; +const PSI_HASHELP=5; +const PSI_HELP=6; +const PSI_CHANGED=1; +const PSI_GUISTART=2; +const PSI_REBOOT=3; +const PSI_GETSIBLINGS=4; + +const DCX_WINDOW=1; +const DCX_CACHE=2; +const DCX_PARENTCLIP=32; +const DCX_CLIPSIBLINGS=16; +const DCX_CLIPCHILDREN=8; +const DCX_NORESETATTRS=4; +const DCX_INTERSECTUPDATE=0x200; +const DCX_LOCKWINDOWUPDATE=0x400; +const DCX_EXCLUDERGN=64; +const DCX_INTERSECTRGN=128; +const DCX_VALIDATE=0x200000; + +const GMDI_GOINTOPOPUPS=2; +const GMDI_USEDISABLED=1; +const FKF_AVAILABLE=2; +const FKF_CLICKON=64; +const FKF_FILTERKEYSON=1; +const FKF_HOTKEYACTIVE=4; +const FKF_HOTKEYSOUND=16; +const FKF_CONFIRMHOTKEY=8; +const FKF_INDICATOR=32; +const HCF_HIGHCONTRASTON=1; +const HCF_AVAILABLE=2; +const HCF_HOTKEYACTIVE=4; +const HCF_CONFIRMHOTKEY=8; +const HCF_HOTKEYSOUND=16; +const HCF_INDICATOR=32; +const HCF_HOTKEYAVAILABLE=64; +const MKF_AVAILABLE=2; +const MKF_CONFIRMHOTKEY=8; +const MKF_HOTKEYACTIVE=4; +const MKF_HOTKEYSOUND=16; +const MKF_INDICATOR=32; +const MKF_MOUSEKEYSON=1; +const MKF_MODIFIERS=64; +const MKF_REPLACENUMBERS=128; +const SERKF_ACTIVE=8; // May be obsolete. Not in recent MS docs. +const SERKF_AVAILABLE=2; +const SERKF_INDICATOR=4; +const SERKF_SERIALKEYSON=1; +const SSF_AVAILABLE=2; +const SSF_SOUNDSENTRYON=1; +const SSTF_BORDER=2; +const SSTF_CHARS=1; +const SSTF_DISPLAY=3; +const SSTF_NONE=0; +const SSGF_DISPLAY=3; +const SSGF_NONE=0; +const SSWF_CUSTOM=4; +const SSWF_DISPLAY=3; +const SSWF_NONE=0; +const SSWF_TITLE=1; +const SSWF_WINDOW=2; +const SKF_AUDIBLEFEEDBACK=64; +const SKF_AVAILABLE=2; +const SKF_CONFIRMHOTKEY=8; +const SKF_HOTKEYACTIVE=4; +const SKF_HOTKEYSOUND=16; +const SKF_INDICATOR=32; +const SKF_STICKYKEYSON=1; +const SKF_TRISTATE=128; +const SKF_TWOKEYSOFF=256; +const TKF_AVAILABLE=2; +const TKF_CONFIRMHOTKEY=8; +const TKF_HOTKEYACTIVE=4; +const TKF_HOTKEYSOUND=16; +const TKF_TOGGLEKEYSON=1; +const MDITILE_SKIPDISABLED=2; +const MDITILE_HORIZONTAL=1; +const MDITILE_VERTICAL=0; + +enum { + VK_LBUTTON = 0x01, + VK_RBUTTON = 0x02, + VK_CANCEL = 0x03, + VK_MBUTTON = 0x04, + //static if (_WIN32_WINNT > = 0x500) { + VK_XBUTTON1 = 0x05, + VK_XBUTTON2 = 0x06, + //} + VK_BACK = 0x08, + VK_TAB = 0x09, + VK_CLEAR = 0x0C, + VK_RETURN = 0x0D, + VK_SHIFT = 0x10, + VK_CONTROL = 0x11, + VK_MENU = 0x12, + VK_PAUSE = 0x13, + VK_CAPITAL = 0x14, + VK_KANA = 0x15, + VK_HANGEUL = 0x15, + VK_HANGUL = 0x15, + VK_JUNJA = 0x17, + VK_FINAL = 0x18, + VK_HANJA = 0x19, + VK_KANJI = 0x19, + VK_ESCAPE = 0x1B, + VK_CONVERT = 0x1C, + VK_NONCONVERT = 0x1D, + VK_ACCEPT = 0x1E, + VK_MODECHANGE = 0x1F, + VK_SPACE = 0x20, + VK_PRIOR = 0x21, + VK_NEXT = 0x22, + VK_END = 0x23, + VK_HOME = 0x24, + VK_LEFT = 0x25, + VK_UP = 0x26, + VK_RIGHT = 0x27, + VK_DOWN = 0x28, + VK_SELECT = 0x29, + VK_PRINT = 0x2A, + VK_EXECUTE = 0x2B, + VK_SNAPSHOT = 0x2C, + VK_INSERT = 0x2D, + VK_DELETE = 0x2E, + VK_HELP = 0x2F, + VK_LWIN = 0x5B, + VK_RWIN = 0x5C, + VK_APPS = 0x5D, + VK_SLEEP = 0x5F, + VK_NUMPAD0 = 0x60, + VK_NUMPAD1 = 0x61, + VK_NUMPAD2 = 0x62, + VK_NUMPAD3 = 0x63, + VK_NUMPAD4 = 0x64, + VK_NUMPAD5 = 0x65, + VK_NUMPAD6 = 0x66, + VK_NUMPAD7 = 0x67, + VK_NUMPAD8 = 0x68, + VK_NUMPAD9 = 0x69, + VK_MULTIPLY = 0x6A, + VK_ADD = 0x6B, + VK_SEPARATOR = 0x6C, + VK_SUBTRACT = 0x6D, + VK_DECIMAL = 0x6E, + VK_DIVIDE = 0x6F, + VK_F1 = 0x70, + VK_F2 = 0x71, + VK_F3 = 0x72, + VK_F4 = 0x73, + VK_F5 = 0x74, + VK_F6 = 0x75, + VK_F7 = 0x76, + VK_F8 = 0x77, + VK_F9 = 0x78, + VK_F10 = 0x79, + VK_F11 = 0x7A, + VK_F12 = 0x7B, + VK_F13 = 0x7C, + VK_F14 = 0x7D, + VK_F15 = 0x7E, + VK_F16 = 0x7F, + VK_F17 = 0x80, + VK_F18 = 0x81, + VK_F19 = 0x82, + VK_F20 = 0x83, + VK_F21 = 0x84, + VK_F22 = 0x85, + VK_F23 = 0x86, + VK_F24 = 0x87, + VK_NUMLOCK = 0x90, + VK_SCROLL = 0x91, + VK_LSHIFT = 0xA0, + VK_RSHIFT = 0xA1, + VK_LCONTROL = 0xA2, + VK_RCONTROL = 0xA3, + VK_LMENU = 0xA4, + VK_RMENU = 0xA5, + //static if (_WIN32_WINNT > = 0x500) { + VK_BROWSER_BACK = 0xA6, + VK_BROWSER_FORWARD = 0xA7, + VK_BROWSER_REFRESH = 0xA8, + VK_BROWSER_STOP = 0xA9, + VK_BROWSER_SEARCH = 0xAA, + VK_BROWSER_FAVORITES = 0xAB, + VK_BROWSER_HOME = 0xAC, + VK_VOLUME_MUTE = 0xAD, + VK_VOLUME_DOWN = 0xAE, + VK_VOLUME_UP = 0xAF, + VK_MEDIA_NEXT_TRACK = 0xB0, + VK_MEDIA_PREV_TRACK = 0xB1, + VK_MEDIA_STOP = 0xB2, + VK_MEDIA_PLAY_PAUSE = 0xB3, + VK_LAUNCH_MAIL = 0xB4, + VK_LAUNCH_MEDIA_SELECT = 0xB5, + VK_LAUNCH_APP1 = 0xB6, + VK_LAUNCH_APP2 = 0xB7, + //} + VK_OEM_1 = 0xBA, + //static if (_WIN32_WINNT > = 0x500) { + VK_OEM_PLUS = 0xBB, + VK_OEM_COMMA = 0xBC, + VK_OEM_MINUS = 0xBD, + VK_OEM_PERIOD = 0xBE, + //} + VK_OEM_2 = 0xBF, + VK_OEM_3 = 0xC0, + VK_OEM_4 = 0xDB, + VK_OEM_5 = 0xDC, + VK_OEM_6 = 0xDD, + VK_OEM_7 = 0xDE, + VK_OEM_8 = 0xDF, + //static if (_WIN32_WINNT > = 0x500) { + VK_OEM_102 = 0xE2, + //} + VK_PROCESSKEY = 0xE5, + //static if (_WIN32_WINNT > = 0x500) { + VK_PACKET = 0xE7, + //} + VK_ATTN = 0xF6, + VK_CRSEL = 0xF7, + VK_EXSEL = 0xF8, + VK_EREOF = 0xF9, + VK_PLAY = 0xFA, + VK_ZOOM = 0xFB, + VK_NONAME = 0xFC, + VK_PA1 = 0xFD, + VK_OEM_CLEAR = 0xFE, +} + +const TME_HOVER=1; +const TME_LEAVE=2; +const TME_QUERY=0x40000000; +const TME_CANCEL=0x80000000; + +const HOVER_DEFAULT=0xFFFFFFFF; + +const MK_LBUTTON=1; +const MK_RBUTTON=2; +const MK_SHIFT=4; +const MK_CONTROL=8; +const MK_MBUTTON=16; +static if (_WIN32_WINNT >= 0x500) { + const MK_XBUTTON1 = 32; + const MK_XBUTTON2 = 64; +} +const TPM_CENTERALIGN=4; +const TPM_LEFTALIGN=0; +const TPM_RIGHTALIGN=8; +const TPM_LEFTBUTTON=0; +const TPM_RIGHTBUTTON=2; +const TPM_HORIZONTAL=0; +const TPM_VERTICAL=64; +const TPM_TOPALIGN=0; +const TPM_VCENTERALIGN=16; +const TPM_BOTTOMALIGN=32; +const TPM_NONOTIFY=128; +const TPM_RETURNCMD=256; +static if (_WIN32_WINNT >= 0x410) { + const TPM_RECURSE = 1; +} + +const HELP_COMMAND=0x102; +const HELP_CONTENTS=3; +const HELP_CONTEXT=1; +const HELP_CONTEXTPOPUP=8; +const HELP_FORCEFILE=9; +const HELP_HELPONHELP=4; +const HELP_INDEX=3; +const HELP_KEY=0x101; +const HELP_MULTIKEY=0x201; +const HELP_PARTIALKEY=0x105; +const HELP_QUIT=2; +const HELP_SETCONTENTS=5; +const HELP_SETINDEX=5; +const HELP_SETWINPOS=0x203; +const HELP_CONTEXTMENU=0xa; +const HELP_FINDER=0xb; +const HELP_WM_HELP=0xc; +const HELP_TCARD=0x8000; +const HELP_TCARD_DATA=16; +const HELP_TCARD_OTHER_CALLER=0x11; + +const IDH_NO_HELP=28440; +const IDH_MISSING_CONTEXT=28441; +const IDH_GENERIC_HELP_BUTTON=28442; +const IDH_OK=28443; +const IDH_CANCEL=28444; +const IDH_HELP=28445; + +const LB_CTLCODE=0; +const LB_OKAY=0; +const LB_ERR=-1; +const LB_ERRSPACE=-2; + +const CB_OKAY=0; +const CB_ERR=-1; +const CB_ERRSPACE=-2; + +const HIDE_WINDOW=0; + +const SHOW_OPENWINDOW=1; +const SHOW_ICONWINDOW=2; +const SHOW_FULLSCREEN=3; +const SHOW_OPENNOACTIVATE=4; + +const SW_PARENTCLOSING=1; +const SW_OTHERZOOM=2; +const SW_PARENTOPENING=3; +const SW_OTHERUNZOOM=4; + +const KF_EXTENDED=256; +const KF_DLGMODE=2048; +const KF_MENUMODE=4096; +const KF_ALTDOWN=8192; +const KF_REPEAT=16384; +const KF_UP=32768; + +const WSF_VISIBLE=1; + +const PWR_OK=1; +const PWR_FAIL=-1; +const PWR_SUSPENDREQUEST=1; +const PWR_SUSPENDRESUME=2; +const PWR_CRITICALRESUME=3; + +const NFR_ANSI=1; +const NFR_UNICODE=2; +const NF_QUERY=3; +const NF_REQUERY=4; + +const MENULOOP_WINDOW=0; +const MENULOOP_POPUP=1; + +const WMSZ_LEFT=1; +const WMSZ_RIGHT=2; +const WMSZ_TOP=3; +const WMSZ_TOPLEFT=4; +const WMSZ_TOPRIGHT=5; +const WMSZ_BOTTOM=6; +const WMSZ_BOTTOMLEFT=7; +const WMSZ_BOTTOMRIGHT=8; + +const HTERROR=-2; +const HTTRANSPARENT=-1; +const HTNOWHERE=0; +const HTCLIENT=1; +const HTCAPTION=2; +const HTSYSMENU=3; +const HTGROWBOX=4; +const HTSIZE=4; +const HTMENU=5; +const HTHSCROLL=6; +const HTVSCROLL=7; +const HTMINBUTTON=8; +const HTMAXBUTTON=9; +const HTREDUCE=8; +const HTZOOM=9; +const HTLEFT=10; +const HTSIZEFIRST=10; +const HTRIGHT=11; +const HTTOP=12; +const HTTOPLEFT=13; +const HTTOPRIGHT=14; +const HTBOTTOM=15; +const HTBOTTOMLEFT=16; +const HTBOTTOMRIGHT=17; +const HTSIZELAST=17; +const HTBORDER=18; +const HTOBJECT=19; +const HTCLOSE=20; +const HTHELP=21; + +const MA_ACTIVATE=1; +const MA_ACTIVATEANDEAT=2; +const MA_NOACTIVATE=3; +const MA_NOACTIVATEANDEAT=4; + +const SIZE_RESTORED=0; +const SIZE_MINIMIZED=1; +const SIZE_MAXIMIZED=2; +const SIZE_MAXSHOW=3; +const SIZE_MAXHIDE=4; + +const SIZENORMAL=0; +const SIZEICONIC=1; +const SIZEFULLSCREEN=2; +const SIZEZOOMSHOW=3; +const SIZEZOOMHIDE=4; + +const WVR_ALIGNTOP=16; +const WVR_ALIGNLEFT=32; +const WVR_ALIGNBOTTOM=64; +const WVR_ALIGNRIGHT=128; +const WVR_HREDRAW=256; +const WVR_VREDRAW=512; +const WVR_REDRAW=(WVR_HREDRAW|WVR_VREDRAW); +const WVR_VALIDRECTS=1024; + +const PRF_CHECKVISIBLE=1; +const PRF_NONCLIENT=2; +const PRF_CLIENT=4; +const PRF_ERASEBKGND=8; +const PRF_CHILDREN=16; +const PRF_OWNED=32; + +const IDANI_OPEN=1; +const IDANI_CLOSE=2; +const IDANI_CAPTION=3; + +const WPF_RESTORETOMAXIMIZED=2; +const WPF_SETMINPOSITION=1; + +const ODT_MENU=1; +const ODT_LISTBOX=2; +const ODT_COMBOBOX=3; +const ODT_BUTTON=4; +const ODT_STATIC=5; +const ODA_DRAWENTIRE=1; +const ODA_SELECT=2; +const ODA_FOCUS=4; +const ODS_SELECTED=1; +const ODS_GRAYED=2; +const ODS_DISABLED=4; +const ODS_CHECKED=8; +const ODS_FOCUS=16; +const ODS_DEFAULT=32; +const ODS_COMBOBOXEDIT=4096; + +const IDHOT_SNAPWINDOW=-1; +const IDHOT_SNAPDESKTOP=-2; + +const DBWF_LPARAMPOINTER=0x8000; +const DLGWINDOWEXTRA=30; +const MNC_IGNORE=0; +const MNC_CLOSE=1; +const MNC_EXECUTE=2; +const MNC_SELECT=3; +const DOF_EXECUTABLE=0x8001; +const DOF_DOCUMENT=0x8002; +const DOF_DIRECTORY=0x8003; +const DOF_MULTIPLE=0x8004; +const DOF_PROGMAN=1; +const DOF_SHELLDATA=2; +const DO_DROPFILE=0x454C4946; +const DO_PRINTFILE=0x544E5250; + +const SW_SCROLLCHILDREN=1; +const SW_INVALIDATE=2; +const SW_ERASE=4; + +const SC_SIZE=0xF000; +const SC_MOVE=0xF010; +const SC_MINIMIZE=0xF020; +const SC_ICON=0xf020; +const SC_MAXIMIZE=0xF030; +const SC_ZOOM=0xF030; +const SC_NEXTWINDOW=0xF040; +const SC_PREVWINDOW=0xF050; +const SC_CLOSE=0xF060; +const SC_VSCROLL=0xF070; +const SC_HSCROLL=0xF080; +const SC_MOUSEMENU=0xF090; +const SC_KEYMENU=0xF100; +const SC_ARRANGE=0xF110; +const SC_RESTORE=0xF120; +const SC_TASKLIST=0xF130; +const SC_SCREENSAVE=0xF140; +const SC_HOTKEY=0xF150; +const SC_DEFAULT=0xF160; +const SC_MONITORPOWER=0xF170; +const SC_CONTEXTHELP=0xF180; +const SC_SEPARATOR=0xF00F; + +const EC_LEFTMARGIN=1; +const EC_RIGHTMARGIN=2; +const EC_USEFONTINFO=0xffff; + +const DC_HASDEFID=0x534B; + +const DLGC_WANTARROWS=1; +const DLGC_WANTTAB=2; +const DLGC_WANTALLKEYS=4; +const DLGC_WANTMESSAGE=4; +const DLGC_HASSETSEL=8; +const DLGC_DEFPUSHBUTTON=16; +const DLGC_UNDEFPUSHBUTTON=32; +const DLGC_RADIOBUTTON=64; +const DLGC_WANTCHARS=128; +const DLGC_STATIC=256; +const DLGC_BUTTON=0x2000; + +const WA_INACTIVE=0; +const WA_ACTIVE=1; +const WA_CLICKACTIVE=2; + +const ICON_SMALL=0; +const ICON_BIG=1; +static if (_WIN32_WINNT >= 0x501) { +const ICON_SMALL2=2; +} + +const HBITMAP + HBMMENU_CALLBACK = cast(HBITMAP)-1, + HBMMENU_SYSTEM = cast(HBITMAP)1, + HBMMENU_MBAR_RESTORE = cast(HBITMAP)2, + HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3, + HBMMENU_MBAR_CLOSE = cast(HBITMAP)5, + HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6, + HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7, + HBMMENU_POPUP_CLOSE = cast(HBITMAP)8, + HBMMENU_POPUP_RESTORE = cast(HBITMAP)9, + HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10, + HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; + +const MOD_ALT=1; +const MOD_CONTROL=2; +const MOD_SHIFT=4; +const MOD_WIN=8; +const MOD_IGNORE_ALL_MODIFIER=1024; +const MOD_ON_KEYUP=2048; +const MOD_RIGHT=16384; +const MOD_LEFT=32768; + +const LLKHF_EXTENDED=(KF_EXTENDED >> 8); +const LLKHF_INJECTED=0x00000010; +const LLKHF_ALTDOWN=(KF_ALTDOWN >> 8); +const LLKHF_UP=(KF_UP >> 8); + +static if (_WIN32_WINNT >= 0x500) { + const FLASHW_STOP=0; + const FLASHW_CAPTION=1; + const FLASHW_TRAY=2; + const FLASHW_ALL=(FLASHW_CAPTION|FLASHW_TRAY); + const FLASHW_TIMER=4; + const FLASHW_TIMERNOFG=12; +} + +const CURSOR_SHOWING=0x00000001; +const WS_ACTIVECAPTION=0x00000001; +static if (_WIN32_WINNT >= 0x403) { + const INPUT_MOUSE=0x00000000; + const INPUT_KEYBOARD=0x00000001; + const INPUT_HARDWARE=0x00000002; +} +const ENDSESSION_LOGOFF = 0x80000000; + +static if (_WIN32_WINNT >= 0x500) { +const CHILDID_SELF = 0; +const OBJID_WINDOW = 0x00000000; +const OBJID_SYSMENU = 0xFFFFFFFF; +const OBJID_TITLEBAR = 0xFFFFFFFE; +const OBJID_MENU = 0xFFFFFFFD; +const OBJID_CLIENT = 0xFFFFFFFC; +const OBJID_VSCROLL = 0xFFFFFFFB; +const OBJID_HSCROLL = 0xFFFFFFFA; +const OBJID_SIZEGRIP = 0xFFFFFFF9; +const OBJID_CARET = 0xFFFFFFF8; +const OBJID_CURSOR = 0xFFFFFFF7; +const OBJID_ALERT = 0xFFFFFFF6; +const OBJID_SOUND = 0xFFFFFFF5; + +const GUI_CARETBLINKING = 0x00000001; +const GUI_INMOVESIZE = 0x00000002; +const GUI_INMENUMODE = 0x00000004; +const GUI_SYSTEMMENUMODE = 0x00000008; +const GUI_POPUPMENUMODE = 0x00000010; + +static if (_WIN32_WINNT >= 0x501) { +const GUI_16BITTASK = 0x00000020; +} +const WINEVENT_OUTOFCONTEXT=0x0000; +const WINEVENT_SKIPOWNTHREAD=0x0001; +const WINEVENT_SKIPOWNPROCESS=0x0002; +const WINEVENT_INCONTEXT=0x0004; +const AW_HOR_POSITIVE=0x00000001; +const AW_HOR_NEGATIVE=0x00000002; +const AW_VER_POSITIVE=0x00000004; +const AW_VER_NEGATIVE=0x00000008; +const AW_CENTER=0x00000010; +const AW_HIDE=0x00010000; +const AW_ACTIVATE=0x00020000; +const AW_SLIDE=0x00040000; +const AW_BLEND=0x00080000; +const DEVICE_NOTIFY_WINDOW_HANDLE=0x00000000; +const DEVICE_NOTIFY_SERVICE_HANDLE=0x00000001; + +static if (_WIN32_WINNT >= 0x501) { +const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES=0x00000004; +} + +const EVENT_MIN = 0x00000001; +const EVENT_SYSTEM_SOUND = 0x00000001; +const EVENT_SYSTEM_ALERT = 0x00000002; +const EVENT_SYSTEM_FOREGROUND = 0x00000003; +const EVENT_SYSTEM_MENUSTART = 0x00000004; +const EVENT_SYSTEM_MENUEND = 0x00000005; +const EVENT_SYSTEM_MENUPOPUPSTART = 0x00000006; +const EVENT_SYSTEM_MENUPOPUPEND = 0x00000007; +const EVENT_SYSTEM_CAPTURESTART = 0x00000008; +const EVENT_SYSTEM_CAPTUREEND = 0x00000009; +const EVENT_SYSTEM_MOVESIZESTART = 0x0000000a; +const EVENT_SYSTEM_MOVESIZEEND = 0x0000000b; +const EVENT_SYSTEM_CONTEXTHELPSTART = 0x0000000c; +const EVENT_SYSTEM_CONTEXTHELPEND = 0x0000000d; +const EVENT_SYSTEM_DRAGDROPSTART = 0x0000000e; +const EVENT_SYSTEM_DRAGDROPEND = 0x0000000f; +const EVENT_SYSTEM_DIALOGSTART = 0x00000010; +const EVENT_SYSTEM_DIALOGEND = 0x00000011; +const EVENT_SYSTEM_SCROLLINGSTART = 0x00000012; +const EVENT_SYSTEM_SCROLLINGEND = 0x00000013; +const EVENT_SYSTEM_SWITCHSTART = 0x00000014; +const EVENT_SYSTEM_SWITCHEND = 0x00000015; +const EVENT_SYSTEM_MINIMIZESTART = 0x00000016; +const EVENT_SYSTEM_MINIMIZEEND = 0x00000017; + +const EVENT_OBJECT_CREATE = 0x00008000; +const EVENT_OBJECT_DESTROY = 0x00008001; +const EVENT_OBJECT_SHOW = 0x00008002; +const EVENT_OBJECT_HIDE = 0x00008003; +const EVENT_OBJECT_REORDER = 0x00008004; +const EVENT_OBJECT_FOCUS = 0x00008005; +const EVENT_OBJECT_SELECTION = 0x00008006; +const EVENT_OBJECT_SELECTIONADD = 0x00008007; +const EVENT_OBJECT_SELECTIONREMOVE = 0x00008008; +const EVENT_OBJECT_SELECTIONWITHIN = 0x00008009; +const EVENT_OBJECT_STATECHANGE = 0x0000800a; +const EVENT_OBJECT_LOCATIONCHANGE = 0x0000800b; +const EVENT_OBJECT_NAMECHANGE = 0x0000800c; +const EVENT_OBJECT_DESCRIPTIONCHANGE = 0x0000800d; +const EVENT_OBJECT_VALUECHANGE = 0x0000800e; +const EVENT_OBJECT_PARENTCHANGE = 0x0000800f; +const EVENT_OBJECT_HELPCHANGE = 0x00008010; +const EVENT_OBJECT_DEFACTIONCHANGE = 0x00008011; +const EVENT_OBJECT_ACCELERATORCHANGE = 0x00008012; + +static if (_WIN32_WINNT >= 0x501) { +const EVENT_CONSOLE_CARET = 0x00004001; +const EVENT_CONSOLE_UPDATE_REGION = 0x00004002; +const EVENT_CONSOLE_UPDATE_SIMPLE = 0x00004003; +const EVENT_CONSOLE_UPDATE_SCROLL = 0x00004004; +const EVENT_CONSOLE_LAYOUT = 0x00004005; +const EVENT_CONSOLE_START_APPLICATION = 0x00004006; +const EVENT_CONSOLE_END_APPLICATION = 0x00004007; + +const CONSOLE_CARET_SELECTION = 0x00000001; +const CONSOLE_CARET_VISIBLE = 0x00000002; + +const CONSOLE_APPLICATION_16BIT = 0x00000001; + +} +const EVENT_MAX=0x7fffffff; + +}//(_WIN32_WINNT >= 0x500) + +static if (_WIN32_WINNT >= 0x500) { + const DWORD ASFW_ANY = -1; + enum : UINT { + LSFW_LOCK = 1, + LSFW_UNLOCK + } + + const LWA_COLORKEY = 0x01; + const LWA_ALPHA = 0x02; + const ULW_COLORKEY = 0x01; + const ULW_ALPHA = 0x02; + const ULW_OPAQUE = 0x04; +} + +const GA_PARENT = 1; +const GA_ROOT = 2; +const GA_ROOTOWNER = 3; + +static if (_WIN32_WINNT >= 0x500) { + enum : DWORD { + MONITOR_DEFAULTTONULL, + MONITOR_DEFAULTTOPRIMARY, + MONITOR_DEFAULTTONEAREST // = 2 + } + const MONITORINFOF_PRIMARY = 1; + + const EDS_RAWMODE = 0x00000002; + + const ISMEX_NOSEND = 0x00000000; + const ISMEX_SEND = 0x00000001; + const ISMEX_NOTIFY = 0x00000002; + const ISMEX_CALLBACK = 0x00000004; + const ISMEX_REPLIED = 0x00000008; + + const GR_GDIOBJECTS = 0; + const GR_USEROBJECTS = 1; + + const GMMP_USE_DISPLAY_POINTS = 1; + const GMMP_USE_HIGH_RESOLUTION_POINTS = 2; +} + +static if (_WIN32_WINNT >= 0x501) { + const PW_CLIENTONLY = 0x00000001; + const RIM_INPUT = 0x00000000; + const RIM_INPUTSINK = 0x00000001; + const RIM_TYPEMOUSE = 0x00000000; + const RIM_TYPEKEYBOARD = 0x00000001; + const RIM_TYPEHID = 0x00000002; + const MOUSE_MOVE_RELATIVE = 0x00000000; + const MOUSE_MOVE_ABSOLUTE = 0x00000001; + const MOUSE_VIRTUAL_DESKTOP = 0x00000002; + const MOUSE_ATTRIBUTES_CHANGED = 0x00000004; + const RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001; + const RI_MOUSE_LEFT_BUTTON_UP = 0x0002; + const RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004; + const RI_MOUSE_RIGHT_BUTTON_UP = 0x0008; + const RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010; + const RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020; + const RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN; + const RI_MOUSE_BUTTON_1_UP = RI_MOUSE_LEFT_BUTTON_UP; + const RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN; + const RI_MOUSE_BUTTON_2_UP = RI_MOUSE_RIGHT_BUTTON_UP; + const RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN; + const RI_MOUSE_BUTTON_3_UP = RI_MOUSE_MIDDLE_BUTTON_UP; + const RI_MOUSE_BUTTON_4_DOWN = 0x0040; + const RI_MOUSE_BUTTON_4_UP = 0x0080; + const RI_MOUSE_BUTTON_5_DOWN = 0x0100; + const RI_MOUSE_BUTTON_5_UP = 0x0200; + const RI_MOUSE_WHEEL = 0x0400; + const KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff; + const RI_KEY_MAKE = 0x0000; + const RI_KEY_BREAK = 0x0001; + const RI_KEY_E0 = 0x0002; + const RI_KEY_E1 = 0x0004; + const RI_KEY_TERMSRV_SET_LED = 0x0008; + const RI_KEY_TERMSRV_SHADOW = 0x0010; + + const RID_INPUT = 0x10000003; + const RID_HEADER = 0x10000005; + + const RIDI_PREPARSEDDATA = 0x20000005; + const RIDI_DEVICENAME = 0x20000007; + const RIDI_DEVICEINFO = 0x2000000b; + + const RIDEV_REMOVE = 0x00000001; + const RIDEV_EXCLUDE = 0x00000010; + const RIDEV_PAGEONLY = 0x00000020; + const RIDEV_NOLEGACY = 0x00000030; + const RIDEV_INPUTSINK = 0x00000100; + const RIDEV_CAPTUREMOUSE = 0x00000200; + const RIDEV_NOHOTKEYS = 0x00000200; + const RIDEV_APPKEYS = 0x00000400; +} + +// Callbacks +// --------- +extern (Windows) { + alias INT_PTR function (HWND, UINT, WPARAM, LPARAM) DLGPROC; + alias void function (HWND, UINT, UINT_PTR, DWORD) TIMERPROC; + alias BOOL function (HDC, LPARAM, int) GRAYSTRINGPROC; + alias LRESULT function (int, WPARAM, LPARAM) HOOKPROC; + alias BOOL function (HWND, LPCSTR, HANDLE) PROPENUMPROCA; + alias BOOL function (HWND, LPCWSTR, HANDLE) PROPENUMPROCW; + alias BOOL function (HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; + alias BOOL function (HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; + alias int function (LPSTR, int, int, int) EDITWORDBREAKPROCA; + alias int function (LPWSTR, int, int, int) EDITWORDBREAKPROCW; + alias LRESULT function (HWND, UINT, WPARAM, LPARAM) WNDPROC; + alias BOOL function (HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC; + alias BOOL function (HWND, LPARAM) WNDENUMPROC; + alias BOOL function (HWND, LPARAM) ENUMWINDOWSPROC; + alias void function (LPHELPINFO) MSGBOXCALLBACK; + + static if (_WIN32_WINNT >= 0x410) { + alias BOOL function (HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; + } + alias BOOL function (LPSTR, LPARAM) NAMEENUMPROCA; + alias BOOL function (LPWSTR, LPARAM) NAMEENUMPROCW; + alias void function (HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; + + alias NAMEENUMPROCA DESKTOPENUMPROCA; + alias NAMEENUMPROCW DESKTOPENUMPROCW; + alias NAMEENUMPROCA WINSTAENUMPROCA; + alias NAMEENUMPROCW WINSTAENUMPROCW; +} + +alias TypeDef!(HANDLE) HHOOK; +alias TypeDef!(HANDLE) HDWP; +alias TypeDef!(HANDLE) HDEVNOTIFY; + +struct ACCEL { + BYTE fVirt; + WORD key; + WORD cmd; +} +alias ACCEL* LPACCEL; + +struct ACCESSTIMEOUT { + UINT cbSize = ACCESSTIMEOUT.sizeof; + DWORD dwFlags; + DWORD iTimeOutMSec; +} +alias ACCESSTIMEOUT* LPACCESSTIMEOUT; + +struct ANIMATIONINFO { + UINT cbSize = ANIMATIONINFO.sizeof; + int iMinAnimate; +} +alias ANIMATIONINFO* LPANIMATIONINFO; + +struct CREATESTRUCTA { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCSTR lpszName; + LPCSTR lpszClass; + DWORD dwExStyle; +} +alias CREATESTRUCTA* LPCREATESTRUCTA; + +struct CREATESTRUCTW { + LPVOID lpCreateParams; + HINSTANCE hInstance; + HMENU hMenu; + HWND hwndParent; + int cy; + int cx; + int y; + int x; + LONG style; + LPCWSTR lpszName; + LPCWSTR lpszClass; + DWORD dwExStyle; +} +alias CREATESTRUCTW* LPCREATESTRUCTW; + +struct CBT_CREATEWNDA { + LPCREATESTRUCTA lpcs; + HWND hwndInsertAfter; +} +alias CBT_CREATEWNDA* LPCBT_CREATEWNDA; + +struct CBT_CREATEWNDW { + LPCREATESTRUCTW lpcs; + HWND hwndInsertAfter; +} +alias CBT_CREATEWNDW* LPCBT_CREATEWNDW; + +struct CBTACTIVATESTRUCT { + BOOL fMouse; + HWND hWndActive; +} +alias CBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT; + +static if (_WIN32_WINNT >= 0x501) { + +struct WTSSESSION_NOTIFICATION +{ + DWORD cbSize; + DWORD dwSessionId; +} +alias WTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION; + +} + +struct CLIENTCREATESTRUCT { + HANDLE hWindowMenu; + UINT idFirstChild; +} +alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT; + +struct COMPAREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + HWND hwndItem; + UINT itemID1; + DWORD itemData1; + UINT itemID2; + DWORD itemData2; + DWORD dwLocaleId; +} +alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; + +struct COPYDATASTRUCT { + DWORD dwData; + DWORD cbData; + PVOID lpData; +} +alias COPYDATASTRUCT* PCOPYDATASTRUCT; + +struct CURSORSHAPE { + int xHotSpot; + int yHotSpot; + int cx; + int cy; + int cbWidth; + BYTE Planes; + BYTE BitsPixel; +} +alias CURSORSHAPE* LPCURSORSHAPE; + +struct CWPRETSTRUCT { + LRESULT lResult; + LPARAM lParam; + WPARAM wParam; + DWORD message; + HWND hwnd; +} + +struct CWPSTRUCT { + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; +} +alias CWPSTRUCT* PCWPSTRUCT; + +struct DEBUGHOOKINFO { + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM wParam; + int code; +} +alias DEBUGHOOKINFO* PDEBUGHOOKINFO, LPDEBUGHOOKINFO; + +struct DELETEITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + HWND hwndItem; + UINT itemData; +} +alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT; + +align(2): +struct DLGITEMTEMPLATE { + DWORD style; + DWORD dwExtendedStyle; + short x; + short y; + short cx; + short cy; + WORD id; +} +alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE; + +struct DLGTEMPLATE { + DWORD style; + DWORD dwExtendedStyle; + WORD cdit; + short x; + short y; + short cx; + short cy; +} +alias DLGTEMPLATE* LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW; +alias const(DLGTEMPLATE)* LPCDLGTEMPLATE; + +align: + +struct DRAWITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemAction; + UINT itemState; + HWND hwndItem; + HDC hDC; + RECT rcItem; + DWORD itemData; +} +alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT; + +struct DRAWTEXTPARAMS { + UINT cbSize = DRAWTEXTPARAMS.sizeof; + int iTabLength; + int iLeftMargin; + int iRightMargin; + UINT uiLengthDrawn; +} +alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS; + +struct PAINTSTRUCT { + HDC hdc; + BOOL fErase; + RECT rcPaint; + BOOL fRestore; + BOOL fIncUpdate; + BYTE[32] rgbReserved; +} +alias PAINTSTRUCT* LPPAINTSTRUCT; + +struct MSG { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +} +alias MSG* LPMSG, PMSG; + +struct ICONINFO { + BOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; +} +alias ICONINFO* PICONINFO; + +struct NMHDR { + HWND hwndFrom; + UINT_PTR idFrom; + UINT code; +} +alias NMHDR* LPNMHDR; + +struct WNDCLASSA { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; +} +alias WNDCLASSA* LPWNDCLASSA, PWNDCLASSA; + +struct WNDCLASSW { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; +} +alias WNDCLASSW* LPWNDCLASSW, PWNDCLASSW; + +struct WNDCLASSEXA { + UINT cbSize = WNDCLASSEXA.sizeof; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + HICON hIconSm; +} +alias WNDCLASSEXA* LPWNDCLASSEXA, PWNDCLASSEXA; + +struct WNDCLASSEXW { + UINT cbSize = WNDCLASSEXW.sizeof; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + HICON hIconSm; +} +alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW; + +static if(_WIN32_WINNT >= 0x500) { + +struct MENUGETOBJECTINFO +{ + DWORD dwFlags; + UINT uPos; + HMENU hmenu; + PVOID riid; + PVOID pvObj; +} +alias MENUGETOBJECTINFO* PMENUGETOBJECTINFO; + +} + +struct MENUITEMINFOA { + UINT cbSize = MENUITEMINFOA.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + LPSTR dwTypeData; + UINT cch; + static if (_WIN32_WINNT >= 0x500) { + HBITMAP hbmpItem; + } +} +alias MENUITEMINFOA* LPMENUITEMINFOA; +alias const(MENUITEMINFOA)* LPCMENUITEMINFOA; + +struct MENUITEMINFOW { + UINT cbSize = MENUITEMINFOW.sizeof; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + LPWSTR dwTypeData; + UINT cch; + static if (_WIN32_WINNT >= 0x500) { + HBITMAP hbmpItem; + } +} +alias MENUITEMINFOW* LPMENUITEMINFOW; +alias const(MENUITEMINFOW)* LPCMENUITEMINFOW; + +struct SCROLLINFO { + UINT cbSize = this.sizeof; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; +} +alias SCROLLINFO* LPSCROLLINFO; +alias const(SCROLLINFO)* LPCSCROLLINFO; + +struct WINDOWPLACEMENT { + UINT length; + UINT flags; + UINT showCmd; + POINT ptMinPosition; + POINT ptMaxPosition; + RECT rcNormalPosition; +} +alias WINDOWPLACEMENT* LPWINDOWPLACEMENT, PWINDOWPLACEMENT; + +struct MENUITEMTEMPLATEHEADER { + WORD versionNumber; + WORD offset; +} + +struct MENUITEMTEMPLATE { + WORD mtOption; + WORD mtID; + WCHAR[1] mtString; +} + +alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW; + +alias MENUTEMPLATE* LPMENUTEMPLATEA, LPMENUTEMPLATEW, LPMENUTEMPLATE; + +struct HELPINFO { + UINT cbSize = this.sizeof; + int iContextType; + int iCtrlId; + HANDLE hItemHandle; + DWORD dwContextId; + POINT MousePos; +} +alias HELPINFO* LPHELPINFO; + +struct MSGBOXPARAMSA { + UINT cbSize = this.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpszText; + LPCSTR lpszCaption; + DWORD dwStyle; + LPCSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias MSGBOXPARAMSA* PMSGBOXPARAMSA, LPMSGBOXPARAMSA; + +struct MSGBOXPARAMSW { + UINT cbSize = this.sizeof; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpszText; + LPCWSTR lpszCaption; + DWORD dwStyle; + LPCWSTR lpszIcon; + DWORD dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias MSGBOXPARAMSW* PMSGBOXPARAMSW, LPMSGBOXPARAMSW; + +struct USEROBJECTFLAGS { + BOOL fInherit; + BOOL fReserved; + DWORD dwFlags; +} + +struct FILTERKEYS { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iWaitMSec; + DWORD iDelayMSec; + DWORD iRepeatMSec; + DWORD iBounceMSec; +} + +struct HIGHCONTRASTA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPSTR lpszDefaultScheme; +} +alias HIGHCONTRASTA* LPHIGHCONTRASTA; + +struct HIGHCONTRASTW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPWSTR lpszDefaultScheme; +} +alias HIGHCONTRASTW* LPHIGHCONTRASTW; + +struct ICONMETRICSA { + UINT cbSize = this.sizeof; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTA lfFont; +} +alias ICONMETRICSA* LPICONMETRICSA; + +struct ICONMETRICSW { + UINT cbSize = this.sizeof; + int iHorzSpacing; + int iVertSpacing; + int iTitleWrap; + LOGFONTW lfFont; +} +alias ICONMETRICSW* LPICONMETRICSW; + +struct MINIMIZEDMETRICS { + UINT cbSize = this.sizeof; + int iWidth; + int iHorzGap; + int iVertGap; + int iArrange; +} +alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS; + +struct MOUSEKEYS { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iMaxSpeed; + DWORD iTimeToMaxSpeed; + DWORD iCtrlSpeed; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias MOUSEKEYS* LPMOUSEKEYS; + +struct NONCLIENTMETRICSA { + UINT cbSize = this.sizeof; + 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; +} +alias NONCLIENTMETRICSA* LPNONCLIENTMETRICSA; + +struct NONCLIENTMETRICSW { + UINT cbSize = this.sizeof; + 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; +} +alias NONCLIENTMETRICSW* LPNONCLIENTMETRICSW; + +struct SERIALKEYSA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPSTR lpszActivePort; + LPSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias SERIALKEYSA* LPSERIALKEYSA; + +struct SERIALKEYSW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + LPWSTR lpszActivePort; + LPWSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias SERIALKEYSW* LPSERIALKEYSW; + +struct SOUNDSENTRYA { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias SOUNDSENTRYA* LPSOUNDSENTRYA; + +struct SOUNDSENTRYW { + UINT cbSize = this.sizeof; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPWSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias SOUNDSENTRYW* LPSOUNDSENTRYW; + +struct STICKYKEYS { + DWORD cbSize = this.sizeof; + DWORD dwFlags; +} +alias STICKYKEYS* LPSTICKYKEYS; + +struct TOGGLEKEYS { + DWORD cbSize = this.sizeof; + DWORD dwFlags; +} + +struct MOUSEHOOKSTRUCT { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + DWORD dwExtraInfo; +} +alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT; + +struct TRACKMOUSEEVENT { + DWORD cbSize = this.sizeof; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} +alias TRACKMOUSEEVENT* LPTRACKMOUSEEVENT; + +struct TPMPARAMS { + UINT cbSize = this.sizeof; + RECT rcExclude; +} +alias TPMPARAMS* LPTPMPARAMS; + +struct EVENTMSG { + UINT message; + UINT paramL; + UINT paramH; + DWORD time; + HWND hwnd; +} +alias EVENTMSG* PEVENTMSGMSG, LPEVENTMSGMSG, PEVENTMSG, LPEVENTMSG; + +struct WINDOWPOS { + HWND hwnd; + HWND hwndInsertAfter; + int x; + int y; + int cx; + int cy; + UINT flags; +} +alias WINDOWPOS* PWINDOWPOS, LPWINDOWPOS; + +struct NCCALCSIZE_PARAMS { + RECT[3] rgrc; + PWINDOWPOS lppos; +} +alias NCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS; + +struct MDICREATESTRUCTA { + LPCSTR szClass; + LPCSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias MDICREATESTRUCTA* LPMDICREATESTRUCTA; + +struct MDICREATESTRUCTW { + LPCWSTR szClass; + LPCWSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias MDICREATESTRUCTW* LPMDICREATESTRUCTW; + +struct MINMAXINFO { + POINT ptReserved; + POINT ptMaxSize; + POINT ptMaxPosition; + POINT ptMinTrackSize; + POINT ptMaxTrackSize; +} +alias MINMAXINFO* PMINMAXINFO, LPMINMAXINFO; + +struct MDINEXTMENU { + HMENU hmenuIn; + HMENU hmenuNext; + HWND hwndNext; +} +alias MDINEXTMENU* PMDINEXTMENU, LPMDINEXTMENU; + +struct MEASUREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemWidth; + UINT itemHeight; + DWORD itemData; +} +alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT; + +struct DROPSTRUCT { + HWND hwndSource; + HWND hwndSink; + DWORD wFmt; + DWORD dwData; + POINT ptDrop; + DWORD dwControlData; +} +alias DROPSTRUCT* PDROPSTRUCT, LPDROPSTRUCT; + +alias DWORD HELPPOLY; + +struct MULTIKEYHELPA { + DWORD mkSize; + CHAR mkKeylist; + CHAR[1] szKeyphrase; +} +alias MULTIKEYHELPA* PMULTIKEYHELPA, LPMULTIKEYHELPA; + +struct MULTIKEYHELPW { + DWORD mkSize; + WCHAR mkKeylist; + WCHAR[1] szKeyphrase; +} +alias MULTIKEYHELPW* PMULTIKEYHELPW, LPMULTIKEYHELPW; + +struct HELPWININFOA { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + CHAR[2] rgchMember; +} +alias HELPWININFOA* PHELPWININFOA, LPHELPWININFOA; + +struct HELPWININFOW { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + WCHAR[2] rgchMember; +} +alias HELPWININFOW* PHELPWININFOW, LPHELPWININFOW; + +struct STYLESTRUCT { + DWORD styleOld; + DWORD styleNew; +} +alias STYLESTRUCT* LPSTYLESTRUCT; + +struct ALTTABINFO { + DWORD cbSize = this.sizeof; + int cItems; + int cColumns; + int cRows; + int iColFocus; + int iRowFocus; + int cxItem; + int cyItem; + POINT ptStart; +} +alias ALTTABINFO* PALTTABINFO, LPALTTABINFO; + +struct COMBOBOXINFO { + DWORD cbSize = this.sizeof; + RECT rcItem; + RECT rcButton; + DWORD stateButton; + HWND hwndCombo; + HWND hwndItem; + HWND hwndList; +} +alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO; + +struct CURSORINFO { + DWORD cbSize = this.sizeof; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; +} +alias CURSORINFO* PCURSORINFO, LPCURSORINFO; + +struct MENUBARINFO { + DWORD cbSize = this.sizeof; + RECT rcBar; + HMENU hMenu; + HWND hwndMenu; + byte bf_; // Simulated bitfield +// BOOL fBarFocused:1; +// BOOL fFocused:1; + bool fBarFocused() { return (bf_ & 1) == 1; } + bool fFocused() { return (bf_ & 2) == 2; } + void fBarFocused(bool b) { bf_ = cast(byte)((bf_ & 0xFE) | b); } + void fFocused(bool b) { bf_ = cast(byte)(b ? (bf_ | 2) : bf_ & 0xFD); } +} +alias MENUBARINFO* PMENUBARINFO; + +struct MENUINFO { + DWORD cbSize = this.sizeof; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + ULONG_PTR dwMenuData; +} +alias MENUINFO* LPMENUINFO; +alias const(MENUINFO)* LPCMENUINFO; + + +const CCHILDREN_SCROLLBAR=5; + +struct SCROLLBARINFO { + DWORD cbSize = this.sizeof; + RECT rcScrollBar; + int dxyLineButton; + int xyThumbTop; + int xyThumbBottom; + int reserved; + DWORD[CCHILDREN_SCROLLBAR+1] rgstate; +} +alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO; + +const CCHILDREN_TITLEBAR=5; + +struct TITLEBARINFO { + DWORD cbSize = TITLEBARINFO.sizeof; + RECT rcTitleBar; + DWORD[CCHILDREN_TITLEBAR+1] rgstate; +} +alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO; + +struct WINDOWINFO { + DWORD cbSize = WINDOWINFO.sizeof; + RECT rcWindow; + RECT rcClient; + DWORD dwStyle; + DWORD dwExStyle; + DWORD dwWindowStatus; + UINT cxWindowBorders; + UINT cyWindowBorders; + ATOM atomWindowType; + WORD wCreatorVersion; +} +alias WINDOWINFO* PWINDOWINFO, LPWINDOWINFO; + +struct LASTINPUTINFO { + UINT cbSize = this.sizeof; + DWORD dwTime; +} +alias LASTINPUTINFO* PLASTINPUTINFO; + +struct MONITORINFO { + DWORD cbSize = this.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; +} +alias MONITORINFO* LPMONITORINFO; + +const CCHDEVICENAME=32; + +struct MONITORINFOEXA { + DWORD cbSize = MONITORINFOEXA.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + CHAR[CCHDEVICENAME] szDevice; +} +alias MONITORINFOEXA* LPMONITORINFOEXA; + +struct MONITORINFOEXW { + DWORD cbSize = MONITORINFOEXW.sizeof; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + WCHAR[CCHDEVICENAME] szDevice; +} +alias MONITORINFOEXW* LPMONITORINFOEXW; + +struct KBDLLHOOKSTRUCT { + DWORD vkCode; + DWORD scanCode; + DWORD flags; + DWORD time; + DWORD dwExtraInfo; +} +alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT; + +static if (_WIN32_WINNT >= 0x501) { + struct FLASHWINFO { + UINT cbSize = this.sizeof; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; + } + alias FLASHWINFO* PFLASHWINFO; +} + +static if (_WIN32_WINNT >= 0x500) { + + struct MOUSEMOVEPOINT { + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; + } + alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT; +} + +static if (_WIN32_WINNT >= 0x403) { + struct MOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; + } + alias MOUSEINPUT* PMOUSEINPUT; + + struct KEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; + } + alias KEYBDINPUT* PKEYBDINPUT; + + struct HARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; + } + alias HARDWAREINPUT* PHARDWAREINPUT; + + struct INPUT { + DWORD type; + union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; + } + } + alias INPUT* PINPUT, LPINPUT; +}// (_WIN32_WINNT >= 0x403) + +static if (_WIN32_WINNT >= 0x500) { + struct GUITHREADINFO { + DWORD cbSize = this.sizeof; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; + } + alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO; + extern (Windows) { + alias void function (HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC; + } + +}// (_WIN32_WINNT >= 0x500) + +static if (_WIN32_WINNT >= 0x501) { + struct BSMINFO { + UINT cbSize = this.sizeof; + HDESK hdesk; + HWND hwnd; + LUID luid; + } + alias BSMINFO* PBSMINFO; + + alias TypeDef!(HANDLE) HRAWINPUT; + + struct RAWINPUTHEADER { + DWORD dwType; + DWORD dwSize; + HANDLE hDevice; + WPARAM wParam; + } + alias RAWINPUTHEADER* PRAWINPUTHEADER; + + struct RAWMOUSE { + USHORT usFlags; + union { + ULONG ulButtons; + struct { + USHORT usButtonFlags; + USHORT usButtonData; + } + } + ULONG ulRawButtons; + LONG lLastX; + LONG lLastY; + ULONG ulExtraInformation; + } + alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE; + + struct RAWKEYBOARD { + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + USHORT VKey; + UINT Message; + ULONG ExtraInformation; + } + alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD; + + struct RAWHID { + DWORD dwSizeHid; + DWORD dwCount; + BYTE bRawData; + } + alias RAWHID* PRAWHID, LPRAWHID; + + struct RAWINPUT { + RAWINPUTHEADER header; + union _data { + RAWMOUSE mouse; + RAWKEYBOARD keyboard; + RAWHID hid; + } + _data data; + } + alias RAWINPUT* PRAWINPUT, LPRAWINPUT; + + struct RAWINPUTDEVICE { + USHORT usUsagePage; + USHORT usUsage; + DWORD dwFlags; + HWND hwndTarget; + } + alias RAWINPUTDEVICE* PRAWINPUTDEVICE, LPRAWINPUTDEVICE; + alias const(RAWINPUTDEVICE)* PCRAWINPUTDEVICE; + + struct RAWINPUTDEVICELIST { + HANDLE hDevice; + DWORD dwType; + } + alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; + + struct RID_DEVICE_INFO_MOUSE { + DWORD dwId; + DWORD dwNumberOfButtons; + DWORD dwSampleRate; + BOOL fHasHorizontalWheel; + } + + struct RID_DEVICE_INFO_KEYBOARD { + DWORD dwType; + DWORD dwSubType; + DWORD dwKeyboardMode; + DWORD dwNumberOfFunctionKeys; + DWORD dwNumberOfIndicators; + DWORD dwNumberOfKeysTotal; + } + + struct RID_DEVICE_INFO_HID { + DWORD dwVendorId; + DWORD dwProductId; + DWORD dwVersionNumber; + USHORT usUsagePage; + USHORT usUsage; + } + + struct RID_DEVICE_INFO { + DWORD cbSize = this.sizeof; + DWORD dwType; + union { + RID_DEVICE_INFO_MOUSE mouse; + RID_DEVICE_INFO_KEYBOARD keyboard; + RID_DEVICE_INFO_HID hid; + } + } +}// (_WIN32_WINNT >= 0x501) + +struct MSLLHOOKSTRUCT { + POINT pt; + DWORD mouseData; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; + +alias CharToOemA AnsiToOem; +alias OemToCharA OemToAnsi; +alias CharToOemBuffA AnsiToOemBuff; +alias OemToCharBuffA OemToAnsiBuff; +alias CharUpperA AnsiUpper; +alias CharUpperBuffA AnsiUpperBuff; +alias CharLowerA AnsiLower; +alias CharLowerBuffA AnsiLowerBuff; +alias CharNextA AnsiNext; +alias CharPrevA AnsiPrev; + +alias MAKELONG MAKEWPARAM; +alias MAKELONG MAKELPARAM; +alias MAKELONG MAKELRESULT; + +//MACRO #define POINTSTOPOINT(p, ps) { (p).x=LOWORD(*(DWORD*)&ps); (p).y=HIWORD(*(DWORD*)&ps); } +//MACRO #define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x, (p).y)) + +extern (Windows) { + + HKL ActivateKeyboardLayout(HKL, UINT); + BOOL AdjustWindowRect(LPRECT, DWORD, BOOL); + BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD); + BOOL AnyPopup(); + BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR); + BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR); + UINT ArrangeIconicWindows(HWND); + BOOL AttachThreadInput(DWORD, DWORD, BOOL); + HDWP BeginDeferWindowPos(int); + HDC BeginPaint(HWND, LPPAINTSTRUCT); + BOOL BringWindowToTop(HWND); + BOOL CallMsgFilterA(LPMSG, INT); + BOOL CallMsgFilterW(LPMSG, INT); + LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM); + LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM); + LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM); + WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); + BOOL ChangeClipboardChain(HWND, HWND); + + LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD); + LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD); + LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID); + LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID); + + BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT); + BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT); + LPSTR CharLowerA(LPSTR); + LPWSTR CharLowerW(LPWSTR); + DWORD CharLowerBuffA(LPSTR, DWORD); + DWORD CharLowerBuffW(LPWSTR, DWORD); + LPSTR CharNextA(LPCSTR); + LPWSTR CharNextW(LPCWSTR); + LPSTR CharNextExA(WORD, LPCSTR, DWORD); + LPWSTR CharNextExW(WORD, LPCWSTR, DWORD); + LPSTR CharPrevA(LPCSTR, LPCSTR); + LPWSTR CharPrevW(LPCWSTR, LPCWSTR); + LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD); + LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD); + BOOL CharToOemA(LPCSTR, LPSTR); + BOOL CharToOemW(LPCWSTR, LPSTR); + BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD); + BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD); + LPSTR CharUpperA(LPSTR); + LPWSTR CharUpperW(LPWSTR); + DWORD CharUpperBuffA(LPSTR, DWORD); + DWORD CharUpperBuffW(LPWSTR, DWORD); + BOOL CheckDlgButton(HWND, int, UINT); + DWORD CheckMenuItem(HMENU, UINT, UINT); + BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT); + BOOL CheckRadioButton(HWND, int, int, int); + HWND ChildWindowFromPoint(HWND, POINT); + HWND ChildWindowFromPointEx(HWND, POINT, UINT); + BOOL ClientToScreen(HWND, LPPOINT); + BOOL ClipCursor(LPCRECT); + BOOL CloseClipboard(); + BOOL CloseDesktop(HDESK); + BOOL CloseWindow(HWND); + BOOL CloseWindowStation(HWINSTA); + int CopyAcceleratorTableA(HACCEL, LPACCEL, int); + int CopyAcceleratorTableW(HACCEL, LPACCEL, int); + + HICON CopyIcon(HICON); + HANDLE CopyImage(HANDLE, UINT, int, int, UINT); + BOOL CopyRect(LPRECT, LPCRECT); + int CountClipboardFormats(); + HACCEL CreateAcceleratorTableA(LPACCEL, int); + HACCEL CreateAcceleratorTableW(LPACCEL, int); + BOOL CreateCaret(HWND, HBITMAP, int, int); + HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID); + + HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); + HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES); + + HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); + HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); + HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + + HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, const(BYTE)*, BYTE*); + HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD); + HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT); + HICON CreateIconIndirect(PICONINFO); + HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); + HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM); + HMENU CreateMenu(); + HMENU CreatePopupMenu(); + + HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); + HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID); + + HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); + LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM); + HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT); + LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM); + LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM); + + LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM); + LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM); + LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM); + BOOL DeleteMenu(HMENU, UINT, UINT); + BOOL DeregisterShellHookWindow(HWND); + BOOL DestroyAcceleratorTable(HACCEL); + BOOL DestroyCaret(); + BOOL DestroyCursor(HCURSOR); + BOOL DestroyIcon(HICON); + BOOL DestroyMenu(HMENU); + BOOL DestroyWindow(HWND); + + INT_PTR DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + INT_PTR DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM); + +} // extern (Windows) + +HCURSOR CopyCursor()(HCURSOR c) { + return cast(HCURSOR)CopyIcon(cast(HICON)c); +} + +HWND CreateDialogA()(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f) { + return CreateDialogParamA(h, n, w, f, 0); +} + +HWND CreateDialogW()(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f) { + return CreateDialogParamW(h, n, w, f, 0); +} + +HWND CreateDialogIndirectA()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { + return CreateDialogIndirectParamA(h, t, w, f, 0); +} + +HWND CreateDialogIndirectW()(HINSTANCE h, LPCDLGTEMPLATE t, HWND w, DLGPROC f) { + return CreateDialogIndirectParamW(h, t, w, f, 0); +} + +HWND CreateWindowA()(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { + return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k); +} + +HWND CreateWindowW()(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k) { + return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k); +} + +INT_PTR DialogBoxA()(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f) { + return DialogBoxParamA(i, t, p, f, 0); +} + +INT_PTR DialogBoxW()(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f) { + return DialogBoxParamW(i, t, p, f, 0); +} + +INT_PTR DialogBoxIndirectA()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { + return DialogBoxIndirectParamA(i, t, p, f, 0); +} + +INT_PTR DialogBoxIndirectW()(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f) { + return DialogBoxIndirectParamW(i, t, p, f, 0); +} + +BOOL ExitWindows()(UINT r, DWORD c) { + return ExitWindowsEx(EWX_LOGOFF, 0); +} +alias GetWindow GetNextWindow; + +extern (Windows): +LONG DispatchMessageA(const(MSG)*); +LONG DispatchMessageW(const(MSG)*); +int DlgDirListA(HWND, LPSTR, int, int, UINT); +int DlgDirListW(HWND, LPWSTR, int, int, UINT); +int DlgDirListComboBoxA(HWND, LPSTR, int, int, UINT); +int DlgDirListComboBoxW(HWND, LPWSTR, int, int, UINT); +BOOL DlgDirSelectComboBoxExA(HWND, LPSTR, int, int); +BOOL DlgDirSelectComboBoxExW(HWND, LPWSTR, int, int); +BOOL DlgDirSelectExA(HWND, LPSTR, int, int); +BOOL DlgDirSelectExW(HWND, LPWSTR, int, int); +BOOL DragDetect(HWND, POINT); +DWORD DragObject(HWND, HWND, UINT, DWORD, HCURSOR); +BOOL DrawAnimatedRects(HWND, int, LPCRECT, LPCRECT); +BOOL DrawCaption(HWND, HDC, LPCRECT, UINT); +BOOL DrawEdge(HDC, LPRECT, UINT, UINT); +BOOL DrawFocusRect(HDC, LPCRECT); +BOOL DrawFrameControl(HDC, LPRECT, UINT, UINT); +BOOL DrawIcon(HDC, int, int, HICON); +BOOL DrawIconEx(HDC, int, int, HICON, int, int, UINT, HBRUSH, UINT); +BOOL DrawMenuBar(HWND); +BOOL DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); +BOOL DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT); +int DrawTextA(HDC, LPCSTR, int, LPRECT, UINT); +int DrawTextW(HDC, LPCWSTR, int, LPRECT, UINT); +int DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); +int DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS); +BOOL EmptyClipboard(); +BOOL EnableMenuItem(HMENU, UINT, UINT); +BOOL EnableScrollBar(HWND, UINT, UINT); +BOOL EnableWindow(HWND, BOOL); +BOOL EndDeferWindowPos(HDWP); +BOOL EndDialog(HWND, INT_PTR); +BOOL EndMenu(); +BOOL EndPaint(HWND, const(PAINTSTRUCT)*); +BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM); +UINT EnumClipboardFormats(UINT); +BOOL EnumDesktopsA(HWINSTA, DESKTOPENUMPROCA, LPARAM); +BOOL EnumDesktopsW(HWINSTA, DESKTOPENUMPROCW, LPARAM); +BOOL EnumDesktopWindows(HDESK, ENUMWINDOWSPROC, LPARAM); +BOOL EnumDisplaySettingsA(LPCSTR, DWORD, PDEVMODEA); +BOOL EnumDisplaySettingsW(LPCWSTR, DWORD, PDEVMODEW); + +BOOL EnumDisplayDevicesA(LPCSTR, DWORD, PDISPLAY_DEVICEA, DWORD); +BOOL EnumDisplayDevicesW(LPCWSTR, DWORD, PDISPLAY_DEVICEW, DWORD); + +int EnumPropsA(HWND, PROPENUMPROCA); +int EnumPropsW(HWND, PROPENUMPROCW); +int EnumPropsExA(HWND, PROPENUMPROCEXA, LPARAM); +int EnumPropsExW(HWND, PROPENUMPROCEXW, LPARAM); + +BOOL EnumThreadWindows(DWORD, WNDENUMPROC, LPARAM); +BOOL EnumWindows(WNDENUMPROC, LPARAM); +BOOL EnumWindowStationsA(WINSTAENUMPROCA, LPARAM); +BOOL EnumWindowStationsW(WINSTAENUMPROCW, LPARAM); +BOOL EqualRect(LPCRECT, LPCRECT); + +BOOL ExitWindowsEx(UINT, DWORD); +HWND FindWindowA(LPCSTR, LPCSTR); +HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR); +HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR); +HWND FindWindowW(LPCWSTR, LPCWSTR); +BOOL FlashWindow(HWND, BOOL); + +int FrameRect(HDC, LPCRECT, HBRUSH); +BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); +HWND GetActiveWindow(); +HWND GetAncestor(HWND, UINT); +SHORT GetAsyncKeyState(int); +HWND GetCapture(); +UINT GetCaretBlinkTime(); +BOOL GetCaretPos(LPPOINT); +BOOL GetClassInfoA(HINSTANCE, LPCSTR, LPWNDCLASSA); +BOOL GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA); +BOOL GetClassInfoW(HINSTANCE, LPCWSTR, LPWNDCLASSW); +BOOL GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW); +DWORD GetClassLongA(HWND, int); +DWORD GetClassLongW(HWND, int); +int GetClassNameA(HWND, LPSTR, int); +int GetClassNameW(HWND, LPWSTR, int); +WORD GetClassWord(HWND, int); +BOOL GetClientRect(HWND, LPRECT); +HANDLE GetClipboardData(UINT); +int GetClipboardFormatNameA(UINT, LPSTR, int); +int GetClipboardFormatNameW(UINT, LPWSTR, int); +HWND GetClipboardOwner(); +HWND GetClipboardViewer(); +BOOL GetClipCursor(LPRECT); +BOOL GetCursorPos(LPPOINT); +HDC GetDC(HWND); +HDC GetDCEx(HWND, HRGN, DWORD); +HWND GetDesktopWindow(); +int GetDialogBaseUnits(); +int GetDlgCtrlID(HWND); +HWND GetDlgItem(HWND, int); +UINT GetDlgItemInt(HWND, int, PBOOL, BOOL); +UINT GetDlgItemTextA(HWND, int, LPSTR, int); +UINT GetDlgItemTextW(HWND, int, LPWSTR, int); +UINT GetDoubleClickTime(); +HWND GetFocus(); +HWND GetForegroundWindow(); + +BOOL GetIconInfo(HICON, PICONINFO); +BOOL GetInputState(); +UINT GetKBCodePage(); +HKL GetKeyboardLayout(DWORD); +UINT GetKeyboardLayoutList(int, HKL*); +BOOL GetKeyboardLayoutNameA(LPSTR); +BOOL GetKeyboardLayoutNameW(LPWSTR); +BOOL GetKeyboardState(PBYTE); +int GetKeyboardType(int); +int GetKeyNameTextA(LONG, LPSTR, int); +int GetKeyNameTextW(LONG, LPWSTR, int); +SHORT GetKeyState(int); +HWND GetLastActivePopup(HWND); +HMENU GetMenu(HWND); +LONG GetMenuCheckMarkDimensions(); +DWORD GetMenuContextHelpId(HMENU); +UINT GetMenuDefaultItem(HMENU, UINT, UINT); +int GetMenuItemCount(HMENU); +UINT GetMenuItemID(HMENU, int); +BOOL GetMenuItemInfoA(HMENU, UINT, BOOL, LPMENUITEMINFOA); +BOOL GetMenuItemInfoW(HMENU, UINT, BOOL, LPMENUITEMINFOW); +BOOL GetMenuItemRect(HWND, HMENU, UINT, LPRECT); +UINT GetMenuState(HMENU, UINT, UINT); +int GetMenuStringA(HMENU, UINT, LPSTR, int, UINT); +int GetMenuStringW(HMENU, UINT, LPWSTR, int, UINT); +BOOL GetMessageA(LPMSG, HWND, UINT, UINT); +BOOL GetMessageW(LPMSG, HWND, UINT, UINT); +LONG GetMessageExtraInfo(); +DWORD GetMessagePos(); +LONG GetMessageTime(); + +HWND GetNextDlgGroupItem(HWND, HWND, BOOL); +HWND GetNextDlgTabItem(HWND, HWND, BOOL); + +HWND GetOpenClipboardWindow(); +HWND GetParent(HWND); +int GetPriorityClipboardFormat(UINT*, int); +HANDLE GetPropA(HWND, LPCSTR); +HANDLE GetPropW(HWND, LPCWSTR); + +DWORD GetQueueStatus(UINT); +BOOL GetScrollInfo(HWND, int, LPSCROLLINFO); +int GetScrollPos(HWND, int); +BOOL GetScrollRange(HWND, int, LPINT, LPINT); + +HMENU GetSubMenu(HMENU, int); +DWORD GetSysColor(int); +HBRUSH GetSysColorBrush(int); + +HMENU GetSystemMenu(HWND, BOOL); +int GetSystemMetrics(int); +DWORD GetTabbedTextExtentA(HDC, LPCSTR, int, int, LPINT); +DWORD GetTabbedTextExtentW(HDC, LPCWSTR, int, int, LPINT); +LONG GetWindowLongA(HWND, int); +LONG GetWindowLongW(HWND, int); + +HDESK GetThreadDesktop(DWORD); +HWND GetTopWindow(HWND); +BOOL GetUpdateRect(HWND, LPRECT, BOOL); +int GetUpdateRgn(HWND, HRGN, BOOL); +BOOL GetUserObjectInformationA(HANDLE, int, PVOID, DWORD, PDWORD); +BOOL GetUserObjectInformationW(HANDLE, int, PVOID, DWORD, PDWORD); +BOOL GetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); +HWND GetWindow(HWND, UINT); +DWORD GetWindowContextHelpId(HWND); +HDC GetWindowDC(HWND); +BOOL GetWindowPlacement(HWND, WINDOWPLACEMENT*); +BOOL GetWindowRect(HWND, LPRECT); +int GetWindowRgn(HWND, HRGN); +int GetWindowTextA(HWND, LPSTR, int); +int GetWindowTextLengthA(HWND); +int GetWindowTextLengthW(HWND); +int GetWindowTextW(HWND, LPWSTR, int); +WORD GetWindowWord(HWND, int); +BOOL GetAltTabInfoA(HWND, int, PALTTABINFO, LPSTR, UINT); +BOOL GetAltTabInfoW(HWND, int, PALTTABINFO, LPWSTR, UINT); +BOOL GetComboBoxInfo(HWND, PCOMBOBOXINFO); +BOOL GetCursorInfo(PCURSORINFO); +BOOL GetLastInputInfo(PLASTINPUTINFO); +DWORD GetListBoxInfo(HWND); +BOOL GetMenuBarInfo(HWND, LONG, LONG, PMENUBARINFO); +BOOL GetMenuInfo(HMENU, LPMENUINFO); +BOOL GetScrollBarInfo(HWND, LONG, PSCROLLBARINFO); +BOOL GetTitleBarInfo(HWND, PTITLEBARINFO); +BOOL GetWindowInfo(HWND, PWINDOWINFO); +UINT GetWindowModuleFileNameA(HWND, LPSTR, UINT); +UINT GetWindowModuleFileNameW(HWND, LPWSTR, UINT); +BOOL GrayStringA(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); +BOOL GrayStringW(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int); +BOOL HideCaret(HWND); +BOOL HiliteMenuItem(HWND, HMENU, UINT, UINT); +BOOL InflateRect(LPRECT, int, int); +BOOL InSendMessage(); +BOOL InsertMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR); +BOOL InsertMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR); +BOOL InsertMenuItemA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); +BOOL InsertMenuItemW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); +INT InternalGetWindowText(HWND, LPWSTR, INT); +BOOL IntersectRect(LPRECT, LPCRECT, LPCRECT); +BOOL InvalidateRect(HWND, LPCRECT, BOOL); +BOOL InvalidateRgn(HWND, HRGN, BOOL); +BOOL InvertRect(HDC, LPCRECT); +BOOL IsCharAlphaA(CHAR ch); +BOOL IsCharAlphaNumericA(CHAR); +BOOL IsCharAlphaNumericW(WCHAR); +BOOL IsCharAlphaW(WCHAR); +BOOL IsCharLowerA(CHAR); +BOOL IsCharLowerW(WCHAR); +BOOL IsCharUpperA(CHAR); +BOOL IsCharUpperW(WCHAR); +BOOL IsChild(HWND, HWND); +BOOL IsClipboardFormatAvailable(UINT); +BOOL IsDialogMessageA(HWND, LPMSG); +BOOL IsDialogMessageW(HWND, LPMSG); +UINT IsDlgButtonChecked(HWND, int); +BOOL IsIconic(HWND); +BOOL IsMenu(HMENU); +BOOL IsRectEmpty(LPCRECT); +BOOL IsWindow(HWND); +BOOL IsWindowEnabled(HWND); +BOOL IsWindowUnicode(HWND); +BOOL IsWindowVisible(HWND); +BOOL IsZoomed(HWND); +void keybd_event(BYTE, BYTE, DWORD, DWORD); +BOOL KillTimer(HWND, UINT_PTR); +HACCEL LoadAcceleratorsA(HINSTANCE, LPCSTR); +HACCEL LoadAcceleratorsW(HINSTANCE, LPCWSTR); +HBITMAP LoadBitmapA(HINSTANCE, LPCSTR); +HBITMAP LoadBitmapW(HINSTANCE, LPCWSTR); +HCURSOR LoadCursorA(HINSTANCE, LPCSTR); +HCURSOR LoadCursorFromFileA(LPCSTR); +HCURSOR LoadCursorFromFileW(LPCWSTR); +HCURSOR LoadCursorW(HINSTANCE, LPCWSTR); +HICON LoadIconA(HINSTANCE, LPCSTR); +HICON LoadIconW(HINSTANCE, LPCWSTR); +HANDLE LoadImageA(HINSTANCE, LPCSTR, UINT, int, int, UINT); +HANDLE LoadImageW(HINSTANCE, LPCWSTR, UINT, int, int, UINT); +HKL LoadKeyboardLayoutA(LPCSTR, UINT); +HKL LoadKeyboardLayoutW(LPCWSTR, UINT); +HMENU LoadMenuA(HINSTANCE, LPCSTR); +HMENU LoadMenuIndirectA(const(MENUTEMPLATE)*); +HMENU LoadMenuIndirectW(const(MENUTEMPLATE)*); +HMENU LoadMenuW(HINSTANCE, LPCWSTR); +int LoadStringA(HINSTANCE, UINT, LPSTR, int); +int LoadStringW(HINSTANCE, UINT, LPWSTR, int); +BOOL LockWindowUpdate(HWND); +int LookupIconIdFromDirectory(PBYTE, BOOL); +int LookupIconIdFromDirectoryEx(PBYTE, BOOL, int, int, UINT); +BOOL MapDialogRect(HWND, LPRECT); +UINT MapVirtualKeyA(UINT, UINT); +UINT MapVirtualKeyExA(UINT, UINT, HKL); +UINT MapVirtualKeyExW(UINT, UINT, HKL); +UINT MapVirtualKeyW(UINT, UINT); +int MapWindowPoints(HWND, HWND, LPPOINT, UINT); +int MenuItemFromPoint(HWND, HMENU, POINT); +BOOL MessageBeep(UINT); +int MessageBoxA(HWND, LPCSTR, LPCSTR, UINT); +int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT); +int MessageBoxExA(HWND, LPCSTR, LPCSTR, UINT, WORD); +int MessageBoxExW(HWND, LPCWSTR, LPCWSTR, UINT, WORD); +int MessageBoxIndirectA(const(MSGBOXPARAMSA)*); +int MessageBoxIndirectW(const(MSGBOXPARAMSW)*); +BOOL ModifyMenuA(HMENU, UINT, UINT, UINT_PTR, LPCSTR); +BOOL ModifyMenuW(HMENU, UINT, UINT, UINT_PTR, LPCWSTR); +void mouse_event(DWORD, DWORD, DWORD, DWORD, ULONG_PTR); +BOOL MoveWindow(HWND, int, int, int, int, BOOL); +DWORD MsgWaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD, DWORD); +DWORD MsgWaitForMultipleObjectsEx(DWORD, const(HANDLE)*, DWORD, DWORD, DWORD); +DWORD OemKeyScan(WORD); +BOOL OemToCharA(LPCSTR, LPSTR); +BOOL OemToCharBuffA(LPCSTR, LPSTR, DWORD); +BOOL OemToCharBuffW(LPCSTR, LPWSTR, DWORD); +BOOL OemToCharW(LPCSTR, LPWSTR); +BOOL OffsetRect(LPRECT, int, int); +BOOL OpenClipboard(HWND); +HDESK OpenDesktopA(LPSTR, DWORD, BOOL, DWORD); +HDESK OpenDesktopW(LPWSTR, DWORD, BOOL, DWORD); +BOOL OpenIcon(HWND); +HDESK OpenInputDesktop(DWORD, BOOL, DWORD); +HWINSTA OpenWindowStationA(LPSTR, BOOL, DWORD); +HWINSTA OpenWindowStationW(LPWSTR, BOOL, DWORD); +BOOL PaintDesktop(HDC); +BOOL PeekMessageA(LPMSG, HWND, UINT, UINT, UINT); +BOOL PeekMessageW(LPMSG, HWND, UINT, UINT, UINT); +BOOL PostMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL PostMessageW(HWND, UINT, WPARAM, LPARAM); +void PostQuitMessage(int); +BOOL PostThreadMessageA(DWORD, UINT, WPARAM, LPARAM); +BOOL PostThreadMessageW(DWORD, UINT, WPARAM, LPARAM); +BOOL PtInRect(LPCRECT, POINT); +HWND RealChildWindowFromPoint(HWND, POINT); +UINT RealGetWindowClassA(HWND, LPSTR, UINT); +UINT RealGetWindowClassW(HWND, LPWSTR, UINT); +BOOL RedrawWindow(HWND, LPCRECT, HRGN, UINT); +ATOM RegisterClassA(const(WNDCLASSA)*); +ATOM RegisterClassW(const(WNDCLASSW)*); +ATOM RegisterClassExA(const(WNDCLASSEXA)*); +ATOM RegisterClassExW(const(WNDCLASSEXW)*); +UINT RegisterClipboardFormatA(LPCSTR); +UINT RegisterClipboardFormatW(LPCWSTR); +BOOL RegisterHotKey(HWND, int, UINT, UINT); +UINT RegisterWindowMessageA(LPCSTR); +UINT RegisterWindowMessageW(LPCWSTR); +BOOL ReleaseCapture(); +int ReleaseDC(HWND, HDC); +BOOL RemoveMenu(HMENU, UINT, UINT); +HANDLE RemovePropA(HWND, LPCSTR); +HANDLE RemovePropW(HWND, LPCWSTR); +BOOL ReplyMessage(LRESULT); +BOOL ScreenToClient(HWND, LPPOINT); +BOOL ScrollDC(HDC, int, int, LPCRECT, LPCRECT, HRGN, LPRECT); +BOOL ScrollWindow(HWND, int, int, LPCRECT, LPCRECT); +int ScrollWindowEx(HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT); +LONG SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM); +LONG SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM); +LRESULT SendMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); +BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD); +LRESULT SendMessageTimeoutA(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); +LRESULT SendMessageTimeoutW(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD); +LRESULT SendMessageW(HWND, UINT, WPARAM, LPARAM); +BOOL SendNotifyMessageA(HWND, UINT, WPARAM, LPARAM); +BOOL SendNotifyMessageW(HWND, UINT, WPARAM, LPARAM); +HWND SetActiveWindow(HWND); +HWND SetCapture(HWND hWnd); +BOOL SetCaretBlinkTime(UINT); +BOOL SetCaretPos(int, int); +DWORD SetClassLongA(HWND, int, LONG); +DWORD SetClassLongW(HWND, int, LONG); +WORD SetClassWord(HWND, int, WORD); +HANDLE SetClipboardData(UINT, HANDLE); +HWND SetClipboardViewer(HWND); +HCURSOR SetCursor(HCURSOR); +BOOL SetCursorPos(int, int); +void SetDebugErrorLevel(DWORD); +BOOL SetDlgItemInt(HWND, int, UINT, BOOL); +BOOL SetDlgItemTextA(HWND, int, LPCSTR); +BOOL SetDlgItemTextW(HWND, int, LPCWSTR); +BOOL SetDoubleClickTime(UINT); +HWND SetFocus(HWND); +BOOL SetForegroundWindow(HWND); +BOOL SetKeyboardState(PBYTE); +BOOL SetMenu(HWND, HMENU); +BOOL SetMenuContextHelpId(HMENU, DWORD); +BOOL SetMenuDefaultItem(HMENU, UINT, UINT); +BOOL SetMenuInfo(HMENU, LPCMENUINFO); +BOOL SetMenuItemBitmaps(HMENU, UINT, UINT, HBITMAP, HBITMAP); +BOOL SetMenuItemInfoA(HMENU, UINT, BOOL, LPCMENUITEMINFOA); +BOOL SetMenuItemInfoW(HMENU, UINT, BOOL, LPCMENUITEMINFOW); +LPARAM SetMessageExtraInfo(LPARAM); +BOOL SetMessageQueue(int); +HWND SetParent(HWND, HWND); +BOOL SetProcessWindowStation(HWINSTA); +BOOL SetPropA(HWND, LPCSTR, HANDLE); +BOOL SetPropW(HWND, LPCWSTR, HANDLE); +BOOL SetRect(LPRECT, int, int, int, int); +BOOL SetRectEmpty(LPRECT); +int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL); +int SetScrollPos(HWND, int, int, BOOL); +BOOL SetScrollRange(HWND, int, int, int, BOOL); +BOOL SetSysColors(int, const(INT)*, const(COLORREF)*); +BOOL SetSystemCursor(HCURSOR, DWORD); +BOOL SetThreadDesktop(HDESK); +UINT_PTR SetTimer(HWND, UINT_PTR, UINT, TIMERPROC); +BOOL SetUserObjectInformationA(HANDLE, int, PVOID, DWORD); +BOOL SetUserObjectInformationW(HANDLE, int, PVOID, DWORD); +BOOL SetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR); +BOOL SetWindowContextHelpId(HWND, DWORD); +LONG SetWindowLongA(HWND, int, LONG); +LONG SetWindowLongW(HWND, int, LONG); +BOOL SetWindowPlacement(HWND hWnd, const(WINDOWPLACEMENT)*); +BOOL SetWindowPos(HWND, HWND, int, int, int, int, UINT); +int SetWindowRgn(HWND, HRGN, BOOL); +HHOOK SetWindowsHookA(int, HOOKPROC); +HHOOK SetWindowsHookW(int, HOOKPROC); +HHOOK SetWindowsHookExA(int, HOOKPROC, HINSTANCE, DWORD); +HHOOK SetWindowsHookExW(int, HOOKPROC, HINSTANCE, DWORD); +BOOL SetWindowTextA(HWND, LPCSTR); +BOOL SetWindowTextW(HWND, LPCWSTR); +WORD SetWindowWord(HWND, int, WORD); +BOOL ShowCaret(HWND); +int ShowCursor(BOOL); +BOOL ShowOwnedPopups(HWND, BOOL); +BOOL ShowScrollBar(HWND, int, BOOL); +BOOL ShowWindow(HWND, int); +BOOL ShowWindowAsync(HWND, int); +BOOL SubtractRect(LPRECT, LPCRECT, LPCRECT); +BOOL SwapMouseButton(BOOL); +BOOL SwitchDesktop(HDESK); +BOOL SystemParametersInfoA(UINT, UINT, PVOID, UINT); +BOOL SystemParametersInfoW(UINT, UINT, PVOID, UINT); +LONG TabbedTextOutA(HDC, int, int, LPCSTR, int, int, LPINT, int); +LONG TabbedTextOutW(HDC, int, int, LPCWSTR, int, int, LPINT, int); +WORD TileWindows(HWND, UINT, LPCRECT, UINT, const(HWND)*); +int ToAscii(UINT, UINT, PBYTE, LPWORD, UINT); +int ToAsciiEx(UINT, UINT, PBYTE, LPWORD, UINT, HKL); +int ToUnicode(UINT, UINT, PBYTE, LPWSTR, int, UINT); +int ToUnicodeEx(UINT, UINT, PBYTE, LPWSTR, int, UINT, HKL); +BOOL TrackMouseEvent(LPTRACKMOUSEEVENT); +BOOL TrackPopupMenu(HMENU, UINT, int, int, int, HWND, LPCRECT); +BOOL TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS); +int TranslateAcceleratorA(HWND, HACCEL, LPMSG); +int TranslateAcceleratorW(HWND, HACCEL, LPMSG); +BOOL TranslateMDISysAccel(HWND, LPMSG); +BOOL TranslateMessage(const(MSG)*); +BOOL UnhookWindowsHook(int, HOOKPROC); +BOOL UnhookWindowsHookEx(HHOOK); +BOOL UnionRect(LPRECT, LPCRECT, LPCRECT); +BOOL UnloadKeyboardLayout(HKL); +BOOL UnregisterClassA(LPCSTR, HINSTANCE); +BOOL UnregisterClassW(LPCWSTR, HINSTANCE); +BOOL UnregisterHotKey(HWND, int); +BOOL UpdateWindow(HWND); +BOOL ValidateRect(HWND, LPCRECT); +BOOL ValidateRgn(HWND, HRGN); +SHORT VkKeyScanA(CHAR); +SHORT VkKeyScanExA(CHAR, HKL); +SHORT VkKeyScanExW(WCHAR, HKL); +SHORT VkKeyScanW(WCHAR); +DWORD WaitForInputIdle(HANDLE, DWORD); +BOOL WaitMessage(); +HWND WindowFromDC(HDC hDC); +HWND WindowFromPoint(POINT); +UINT WinExec(LPCSTR, UINT); +BOOL WinHelpA(HWND, LPCSTR, UINT, DWORD); +BOOL WinHelpW(HWND, LPCWSTR, UINT, DWORD); + +extern (C) { + int wsprintfA(LPSTR, LPCSTR, ...); + int wsprintfW(LPWSTR, LPCWSTR, ...); +} + + +// These shouldn't be necessary for D. +alias TypeDef!(char*) va_list_; +int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist); +int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist); + + +int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM); +int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM); + +static if (_WIN32_WINNT >= 0x403) { + UINT SendInput(UINT, LPINPUT, int); +} + +static if (_WIN32_WINNT >= 0x410) { + BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM); + BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO); + BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA); + BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO); + BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW); + HMONITOR MonitorFromPoint(POINT, DWORD); + HMONITOR MonitorFromRect(LPCRECT, DWORD); + HMONITOR MonitorFromWindow(HWND, DWORD); +} + +static if (_WIN32_WINNT >= 0x500) { + BOOL AllowSetForegroundWindow(DWORD); + BOOL AnimateWindow(HWND, DWORD, DWORD); + BOOL EndTask(HWND, BOOL, BOOL); + BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD); + BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD); + DWORD GetClipboardSequenceNumber(); + DWORD GetGuiResources(HANDLE, DWORD); + BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO); + int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD); + BOOL GetProcessDefaultLayout(DWORD*); + HWND GetShellWindow(); + BOOL IsHungAppWindow(HWND); + DWORD InSendMessageEx(LPVOID); + BOOL LockSetForegroundWindow(UINT); + BOOL LockWorkStation(); + void NotifyWinEvent(DWORD, HWND, LONG, LONG); + HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD); + HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD); + BOOL SetProcessDefaultLayout(DWORD); + HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT); + void SwitchToThisWindow(HWND, BOOL); + BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD); + BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD); + BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL); + BOOL UnhookWinEvent(HWINEVENTHOOK); + BOOL UnregisterDeviceNotification(HANDLE); +} + +static if (_WIN32_WINNT >= 0x501) { + int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); + int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO); + LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT); + BOOL FlashWindowEx(PFLASHWINFO); + BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*); + UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT); + UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT); + UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT); + UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT); + UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT); + UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT); + BOOL IsGUIThread(BOOL); + BOOL IsWinEventHookInstalled(DWORD); + BOOL PrintWindow(HWND, HDC, UINT); + BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT); +} + +version (Win64) { + LONG_PTR GetWindowLongPtrA(HWND, int); + LONG_PTR GetWindowLongPtrW(HWND, int); + LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR); + LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR); +} else { + alias GetWindowLongA GetWindowLongPtrA; + alias GetWindowLongW GetWindowLongPtrW; + alias SetWindowLongA SetWindowLongPtrA; + alias SetWindowLongW SetWindowLongPtrW; +} + + +// ----- +// Aliases for Unicode or Ansi +version(Unicode) { + + alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; + alias PROPENUMPROCW PROPENUMPROC; + alias PROPENUMPROCEXW PROPENUMPROCEX; + alias DESKTOPENUMPROCW DESKTOPENUMPROC; + alias WINSTAENUMPROCW WINSTAENUMPROC; + alias MAKEINTRESOURCEW MAKEINTRESOURCE; + + alias WNDCLASSW WNDCLASS; + alias WNDCLASSEXW WNDCLASSEX; + alias MENUITEMINFOW MENUITEMINFO; + alias LPCMENUITEMINFOW LPCMENUITEMINFO; + alias MSGBOXPARAMSW MSGBOXPARAMS; + alias HIGHCONTRASTW HIGHCONTRAST; + alias SERIALKEYSW SERIALKEYS; + alias SOUNDSENTRYW SOUNDSENTRY; + alias CREATESTRUCTW CREATESTRUCT; + alias CBT_CREATEWNDW CBT_CREATEWND; + alias MDICREATESTRUCTW MDICREATESTRUCT; + alias MULTIKEYHELPW MULTIKEYHELP; + alias MONITORINFOEXW MONITORINFOEX; + alias ICONMETRICSW ICONMETRICS; + alias NONCLIENTMETRICSW NONCLIENTMETRICS; + + alias AppendMenuW AppendMenu; + alias BroadcastSystemMessageW BroadcastSystemMessage; + static if (_WIN32_WINNT >= 0x501) { + alias BroadcastSystemMessageExW BroadcastSystemMessageEx; + } + alias CallMsgFilterW CallMsgFilter; + alias CallWindowProcW CallWindowProc; + alias ChangeMenuW ChangeMenu; + alias CharLowerW CharLower; + alias CharLowerBuffW CharLowerBuff; + alias CharNextW CharNext; + alias CharNextExW CharNextEx; + alias CharPrevW CharPrev; + alias CharPrevExW CharPrevEx; + alias CharToOemW CharToOem; + alias CharToOemBuffW CharToOemBuff; + alias CharUpperW CharUpper; + alias CharUpperBuffW CharUpperBuff; + alias CopyAcceleratorTableW CopyAcceleratorTable; + alias CreateAcceleratorTableW CreateAcceleratorTable; + alias CreateDialogW CreateDialog; + alias CreateDialogIndirectW CreateDialogIndirect; + alias CreateDialogIndirectParamW CreateDialogIndirectParam; + alias CreateDialogParamW CreateDialogParam; + alias CreateMDIWindowW CreateMDIWindow; + alias CreateWindowW CreateWindow; + alias CreateWindowExW CreateWindowEx; + alias CreateWindowStationW CreateWindowStation; + alias DefDlgProcW DefDlgProc; + alias DefFrameProcW DefFrameProc; + alias DefMDIChildProcW DefMDIChildProc; + alias DefWindowProcW DefWindowProc; + alias DialogBoxW DialogBox; + alias DialogBoxIndirectW DialogBoxIndirect; + alias DialogBoxIndirectParamW DialogBoxIndirectParam; + alias DialogBoxParamW DialogBoxParam; + alias DispatchMessageW DispatchMessage; + alias DlgDirListW DlgDirList; + alias DlgDirListComboBoxW DlgDirListComboBox; + alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx; + alias DlgDirSelectExW DlgDirSelectEx; + alias DrawStateW DrawState; + alias DrawTextW DrawText; + alias DrawTextExW DrawTextEx; + alias EnumDesktopsW EnumDesktops; + alias EnumPropsW EnumProps; + alias EnumPropsExW EnumPropsEx; + alias EnumWindowStationsW EnumWindowStations; + alias FindWindowW FindWindow; + alias FindWindowExW FindWindowEx; + alias GetClassInfoW GetClassInfo; + alias GetClassInfoExW GetClassInfoEx; + alias GetClassLongW GetClassLong; + alias GetClassNameW GetClassName; + alias GetClipboardFormatNameW GetClipboardFormatName; + alias GetDlgItemTextW GetDlgItemText; + alias GetKeyboardLayoutNameW GetKeyboardLayoutName; + alias GetKeyNameTextW GetKeyNameText; + alias GetMenuItemInfoW GetMenuItemInfo; + alias GetMenuStringW GetMenuString; + alias GetMessageW GetMessage; + static if (_WIN32_WINNT >= 0x410) { + alias GetMonitorInfoW GetMonitorInfo; + } + alias GetPropW GetProp; + static if (_WIN32_WINNT >= 0x501) { + alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; + } + alias GetTabbedTextExtentW GetTabbedTextExtent; + alias GetUserObjectInformationW GetUserObjectInformation; + alias GetWindowLongW GetWindowLong; + alias GetWindowLongPtrW GetWindowLongPtr; + alias GetWindowTextW GetWindowText; + alias GetWindowTextLengthW GetWindowTextLength; + alias GetAltTabInfoW GetAltTabInfo; + alias GetWindowModuleFileNameW GetWindowModuleFileName; + alias GrayStringW GrayString; + alias InsertMenuW InsertMenu; + alias InsertMenuItemW InsertMenuItem; + alias IsCharAlphaW IsCharAlpha; + alias IsCharAlphaNumericW IsCharAlphaNumeric; + alias IsCharLowerW IsCharLower; + alias IsCharUpperW IsCharUpper; + alias IsDialogMessageW IsDialogMessage; + alias LoadAcceleratorsW LoadAccelerators; + alias LoadBitmapW LoadBitmap; + alias LoadCursorW LoadCursor; + alias LoadCursorFromFileW LoadCursorFromFile; + alias LoadIconW LoadIcon; + alias LoadImageW LoadImage; + alias LoadKeyboardLayoutW LoadKeyboardLayout; + alias LoadMenuW LoadMenu; + alias LoadMenuIndirectW LoadMenuIndirect; + alias LoadStringW LoadString; + alias MapVirtualKeyW MapVirtualKey; + alias MapVirtualKeyExW MapVirtualKeyEx; + alias MessageBoxW MessageBox; + alias MessageBoxExW MessageBoxEx; + alias MessageBoxIndirectW MessageBoxIndirect; + alias ModifyMenuW ModifyMenu; + alias OemToCharW OemToChar; + alias OemToCharBuffW OemToCharBuff; + alias OpenDesktopW OpenDesktop; + alias OpenWindowStationW OpenWindowStation; + alias PeekMessageW PeekMessage; + alias PostMessageW PostMessage; + alias PostThreadMessageW PostThreadMessage; + alias RealGetWindowClassW RealGetWindowClass; + alias RegisterClassW RegisterClass; + alias RegisterClassExW RegisterClassEx; + alias RegisterClipboardFormatW RegisterClipboardFormat; + static if (_WIN32_WINNT >= 0x500) { + alias RegisterDeviceNotificationW RegisterDeviceNotification; + } + alias RegisterWindowMessageW RegisterWindowMessage; + alias RemovePropW RemoveProp; + alias SendDlgItemMessageW SendDlgItemMessage; + alias SendMessageW SendMessage; + alias SendMessageCallbackW SendMessageCallback; + alias SendMessageTimeoutW SendMessageTimeout; + alias SendNotifyMessageW SendNotifyMessage; + alias SetClassLongW SetClassLong; + alias SetDlgItemTextW SetDlgItemText; + alias SetMenuItemInfoW SetMenuItemInfo; + alias SetPropW SetProp; + alias SetUserObjectInformationW SetUserObjectInformation; + alias SetWindowLongW SetWindowLong; + alias SetWindowLongPtrW SetWindowLongPtr; + alias SetWindowsHookW SetWindowsHook; + alias SetWindowsHookExW SetWindowsHookEx; + alias SetWindowTextW SetWindowText; + alias SystemParametersInfoW SystemParametersInfo; + alias TabbedTextOutW TabbedTextOut; + alias TranslateAcceleratorW TranslateAccelerator; + alias UnregisterClassW UnregisterClass; + alias VkKeyScanW VkKeyScan; + alias VkKeyScanExW VkKeyScanEx; + alias WinHelpW WinHelp; + alias wsprintfW wsprintf; + alias wvsprintfW wvsprintf; + + alias ChangeDisplaySettingsW ChangeDisplaySettings; + alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx; + alias CreateDesktopW CreateDesktop; + alias EnumDisplaySettingsW EnumDisplaySettings; + static if (_WIN32_WINNT >= 0x500) { + alias EnumDisplaySettingsExW EnumDisplaySettingsEx; + } + alias EnumDisplayDevicesW EnumDisplayDevices; + +} else { // ANSI + + alias EDITWORDBREAKPROCA EDITWORDBREAKPROC; + alias PROPENUMPROCA PROPENUMPROC; + alias PROPENUMPROCEXA PROPENUMPROCEX; + alias DESKTOPENUMPROCA DESKTOPENUMPROC; + alias WINSTAENUMPROCA WINSTAENUMPROC; + alias MAKEINTRESOURCEA MAKEINTRESOURCE; + + alias WNDCLASSA WNDCLASS; + alias WNDCLASSEXA WNDCLASSEX; + alias MENUITEMINFOA MENUITEMINFO; + alias LPCMENUITEMINFOA LPCMENUITEMINFO; + alias MSGBOXPARAMSA MSGBOXPARAMS; + alias HIGHCONTRASTA HIGHCONTRAST; + alias SERIALKEYSA SERIALKEYS; + alias SOUNDSENTRYA SOUNDSENTRY; + alias CREATESTRUCTA CREATESTRUCT; + alias CBT_CREATEWNDA CBT_CREATEWND; + alias MDICREATESTRUCTA MDICREATESTRUCT; + alias MULTIKEYHELPA MULTIKEYHELP; + alias MONITORINFOEXA MONITORINFOEX; + alias ICONMETRICSA ICONMETRICS; + alias NONCLIENTMETRICSA NONCLIENTMETRICS; + + alias AppendMenuA AppendMenu; + alias BroadcastSystemMessageA BroadcastSystemMessage; + static if (_WIN32_WINNT >= 0x501) { + alias BroadcastSystemMessageExA BroadcastSystemMessageEx; + } + alias CallMsgFilterA CallMsgFilter; + alias CallWindowProcA CallWindowProc; + alias ChangeMenuA ChangeMenu; + alias CharLowerA CharLower; + alias CharLowerBuffA CharLowerBuff; + alias CharNextA CharNext; + alias CharNextExA CharNextEx; + alias CharPrevA CharPrev; + alias CharPrevExA CharPrevEx; + alias CharToOemA CharToOem; + alias CharToOemBuffA CharToOemBuff; + alias CharUpperA CharUpper; + alias CharUpperBuffA CharUpperBuff; + alias CopyAcceleratorTableA CopyAcceleratorTable; + alias CreateAcceleratorTableA CreateAcceleratorTable; + alias CreateDialogA CreateDialog; + alias CreateDialogIndirectA CreateDialogIndirect; + alias CreateDialogIndirectParamA CreateDialogIndirectParam; + alias CreateDialogParamA CreateDialogParam; + alias CreateMDIWindowA CreateMDIWindow; + alias CreateWindowA CreateWindow; + alias CreateWindowExA CreateWindowEx; + alias CreateWindowStationA CreateWindowStation; + alias DefDlgProcA DefDlgProc; + alias DefFrameProcA DefFrameProc; + alias DefMDIChildProcA DefMDIChildProc; + alias DefWindowProcA DefWindowProc; + alias DialogBoxA DialogBox; + alias DialogBoxIndirectA DialogBoxIndirect; + alias DialogBoxIndirectParamA DialogBoxIndirectParam; + alias DialogBoxParamA DialogBoxParam; + alias DispatchMessageA DispatchMessage; + alias DlgDirListA DlgDirList; + alias DlgDirListComboBoxA DlgDirListComboBox; + alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx; + alias DlgDirSelectExA DlgDirSelectEx; + alias DrawStateA DrawState; + alias DrawTextA DrawText; + alias DrawTextExA DrawTextEx; + alias EnumDesktopsA EnumDesktops; + alias EnumPropsA EnumProps; + alias EnumPropsExA EnumPropsEx; + alias EnumWindowStationsA EnumWindowStations; + alias FindWindowA FindWindow; + alias FindWindowExA FindWindowEx; + alias GetClassInfoA GetClassInfo; + alias GetClassInfoExA GetClassInfoEx; + alias GetClassLongA GetClassLong; + alias GetClassNameA GetClassName; + alias GetClipboardFormatNameA GetClipboardFormatName; + alias GetDlgItemTextA GetDlgItemText; + alias GetKeyboardLayoutNameA GetKeyboardLayoutName; + alias GetKeyNameTextA GetKeyNameText; + alias GetMenuItemInfoA GetMenuItemInfo; + alias GetMenuStringA GetMenuString; + alias GetMessageA GetMessage; + static if (_WIN32_WINNT >= 0x410) { + alias GetMonitorInfoA GetMonitorInfo; + } + alias GetPropA GetProp; + static if (_WIN32_WINNT >= 0x501) { + alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; + } + alias GetTabbedTextExtentA GetTabbedTextExtent; + alias GetUserObjectInformationA GetUserObjectInformation; + alias GetWindowLongA GetWindowLong; + alias GetWindowLongPtrA GetWindowLongPtr; + alias GetWindowTextA GetWindowText; + alias GetWindowTextLengthA GetWindowTextLength; + alias GetAltTabInfoA GetAltTabInfo; + alias GetWindowModuleFileNameA GetWindowModuleFileName; + alias GrayStringA GrayString; + alias InsertMenuA InsertMenu; + alias InsertMenuItemA InsertMenuItem; + alias IsCharAlphaA IsCharAlpha; + alias IsCharAlphaNumericA IsCharAlphaNumeric; + alias IsCharLowerA IsCharLower; + alias IsCharUpperA IsCharUpper; + alias IsDialogMessageA IsDialogMessage; + alias LoadAcceleratorsA LoadAccelerators; + alias LoadBitmapA LoadBitmap; + alias LoadCursorA LoadCursor; + alias LoadIconA LoadIcon; + alias LoadCursorFromFileA LoadCursorFromFile; + alias LoadImageA LoadImage; + alias LoadKeyboardLayoutA LoadKeyboardLayout; + alias LoadMenuA LoadMenu; + alias LoadMenuIndirectA LoadMenuIndirect; + alias LoadStringA LoadString; + alias MapVirtualKeyA MapVirtualKey; + alias MapVirtualKeyExA MapVirtualKeyEx; + alias MessageBoxA MessageBox; + alias MessageBoxExA MessageBoxEx; + alias MessageBoxIndirectA MessageBoxIndirect; + alias ModifyMenuA ModifyMenu; + alias OemToCharA OemToChar; + alias OemToCharBuffA OemToCharBuff; + alias OpenDesktopA OpenDesktop; + alias OpenWindowStationA OpenWindowStation; + alias PeekMessageA PeekMessage; + alias PostMessageA PostMessage; + alias PostThreadMessageA PostThreadMessage; + alias RealGetWindowClassA RealGetWindowClass; + alias RegisterClassA RegisterClass; + alias RegisterClassExA RegisterClassEx; + alias RegisterClipboardFormatA RegisterClipboardFormat; + static if (_WIN32_WINNT >= 0x500) { + alias RegisterDeviceNotificationA RegisterDeviceNotification; + } + alias RegisterWindowMessageA RegisterWindowMessage; + alias RemovePropA RemoveProp; + alias SendDlgItemMessageA SendDlgItemMessage; + alias SendMessageA SendMessage; + alias SendMessageCallbackA SendMessageCallback; + alias SendMessageTimeoutA SendMessageTimeout; + alias SendNotifyMessageA SendNotifyMessage; + alias SetClassLongA SetClassLong; + alias SetDlgItemTextA SetDlgItemText; + alias SetMenuItemInfoA SetMenuItemInfo; + alias SetPropA SetProp; + alias SetUserObjectInformationA SetUserObjectInformation; + alias SetWindowLongA SetWindowLong; + alias SetWindowLongPtrA SetWindowLongPtr; + alias SetWindowsHookA SetWindowsHook; + alias SetWindowsHookExA SetWindowsHookEx; + alias SetWindowTextA SetWindowText; + alias SystemParametersInfoA SystemParametersInfo; + alias TabbedTextOutA TabbedTextOut; + alias TranslateAcceleratorA TranslateAccelerator; + alias UnregisterClassA UnregisterClass; + alias VkKeyScanA VkKeyScan; + alias VkKeyScanExA VkKeyScanEx; + alias WinHelpA WinHelp; + alias wsprintfA wsprintf; + alias wvsprintfA wvsprintf; + + alias ChangeDisplaySettingsA ChangeDisplaySettings; + alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx; + alias CreateDesktopA CreateDesktop; + alias EnumDisplaySettingsA EnumDisplaySettings; + static if (_WIN32_WINNT >= 0x500) { + alias EnumDisplaySettingsExA EnumDisplaySettingsEx; + } + alias EnumDisplayDevicesA EnumDisplayDevices; +} + +alias WNDCLASS* LPWNDCLASS, PWNDCLASS; +alias WNDCLASSEX* LPWNDCLASSEX, PWNDCLASSEX; +alias MENUITEMINFO* LPMENUITEMINFO; +alias MSGBOXPARAMS* PMSGBOXPARAMS, LPMSGBOXPARAMS; +alias HIGHCONTRAST* LPHIGHCONTRAST; +alias SERIALKEYS* LPSERIALKEYS; +alias SOUNDSENTRY* LPSOUNDSENTRY; +alias CREATESTRUCT* LPCREATESTRUCT; +alias CBT_CREATEWND* LPCBT_CREATEWND; +alias MDICREATESTRUCT* LPMDICREATESTRUCT; +alias MULTIKEYHELP* PMULTIKEYHELP, LPMULTIKEYHELP; +alias MONITORINFOEX* LPMONITORINFOEX; +alias ICONMETRICS* LPICONMETRICS; +alias NONCLIENTMETRICS* LPNONCLIENTMETRICS; Index: src/win32/winver.d ================================================================== --- src/win32/winver.d +++ src/win32/winver.d @@ -1,171 +1,172 @@ -/***********************************************************************\ -* winver.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* by Stewart Gordon * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.winver; - -private import win32.windef; - -// FIXME: type weirdness -enum { - VS_FILE_INFO = 16, - VS_VERSION_INFO = 1, - VS_USER_DEFINED = 100 -} - -enum { - VS_FFI_SIGNATURE = 0xFEEF04BD, - VS_FFI_STRUCVERSION = 0x10000, - VS_FFI_FILEFLAGSMASK = 0x3F -} - -enum { - VS_FF_DEBUG = 1, - VS_FF_PRERELEASE = 2, - VS_FF_PATCHED = 4, - VS_FF_PRIVATEBUILD = 8, - VS_FF_INFOINFERRED = 16, - VS_FF_SPECIALBUILD = 32 -} - -enum { - VOS_UNKNOWN = 0, - VOS_DOS = 0x10000, - VOS_OS216 = 0x20000, - VOS_OS232 = 0x30000, - VOS_NT = 0x40000, - VOS__BASE = 0, - VOS__WINDOWS16 = 1, - VOS__PM16 = 2, - VOS__PM32 = 3, - VOS__WINDOWS32 = 4, - VOS_DOS_WINDOWS16 = 0x10001, - VOS_DOS_WINDOWS32 = 0x10004, - VOS_OS216_PM16 = 0x20002, - VOS_OS232_PM32 = 0x30003, - VOS_NT_WINDOWS32 = 0x40004 -} - -enum { - VFT_UNKNOWN = 0, - VFT_APP = 1, - VFT_DLL = 2, - VFT_DRV = 3, - VFT_FONT = 4, - VFT_VXD = 5, - VFT_STATIC_LIB = 7 -} - -enum { - VFT2_UNKNOWN = 0, - VFT2_DRV_PRINTER = 1, - VFT2_DRV_KEYBOARD = 2, - VFT2_DRV_LANGUAGE = 3, - VFT2_DRV_DISPLAY = 4, - VFT2_DRV_MOUSE = 5, - VFT2_DRV_NETWORK = 6, - VFT2_DRV_SYSTEM = 7, - VFT2_DRV_INSTALLABLE = 8, - VFT2_DRV_SOUND = 9, - VFT2_DRV_COMM = 10, - VFT2_DRV_INPUTMETHOD = 11, - VFT2_FONT_RASTER = 1, - VFT2_FONT_VECTOR = 2, - VFT2_FONT_TRUETYPE = 3 -} - -enum : DWORD { - VFFF_ISSHAREDFILE = 1 -} - -enum : DWORD { - VFF_CURNEDEST = 1, - VFF_FILEINUSE = 2, - VFF_BUFFTOOSMALL = 4 -} - -enum : DWORD { - VIFF_FORCEINSTALL = 1, - VIFF_DONTDELETEOLD -} - -enum { - VIF_TEMPFILE = 0x00001, - VIF_MISMATCH = 0x00002, - VIF_SRCOLD = 0x00004, - VIF_DIFFLANG = 0x00008, - VIF_DIFFCODEPG = 0x00010, - VIF_DIFFTYPE = 0x00020, - VIF_WRITEPROT = 0x00040, - VIF_FILEINUSE = 0x00080, - VIF_OUTOFSPACE = 0x00100, - VIF_ACCESSVIOLATION = 0x00200, - VIF_SHARINGVIOLATION = 0x00400, - VIF_CANNOTCREATE = 0x00800, - VIF_CANNOTDELETE = 0x01000, - VIF_CANNOTRENAME = 0x02000, - VIF_CANNOTDELETECUR = 0x04000, - VIF_OUTOFMEMORY = 0x08000, - VIF_CANNOTREADSRC = 0x10000, - VIF_CANNOTREADDST = 0x20000, - VIF_BUFFTOOSMALL = 0x40000 -} - -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; -} - -extern (Windows) { - DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, - PUINT); - DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, - PUINT); - DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, - PUINT); - DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, - LPWSTR, PUINT); - DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); - DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); - BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); - BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); - DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); - DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); - BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); - BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); -} - -version (Unicode) { - alias VerFindFileW VerFindFile; - alias VerQueryValueW VerQueryValue; - alias VerInstallFileW VerInstallFile; - alias GetFileVersionInfoSizeW GetFileVersionInfoSize; - alias GetFileVersionInfoW GetFileVersionInfo; - alias VerLanguageNameW VerLanguageName; - alias VerQueryValueW VerQueryValue; -} else { - alias VerQueryValueA VerQueryValue; - alias VerFindFileA VerFindFile; - alias VerInstallFileA VerInstallFile; - alias GetFileVersionInfoSizeA GetFileVersionInfoSize; - alias GetFileVersionInfoA GetFileVersionInfo; - alias VerLanguageNameA VerLanguageName; - alias VerQueryValueA VerQueryValue; -} +/***********************************************************************\ +* winver.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* by Stewart Gordon * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.winver; +pragma(lib, "version"); + +private import win32.windef; + +// FIXME: type weirdness +enum { + VS_FILE_INFO = 16, + VS_VERSION_INFO = 1, + VS_USER_DEFINED = 100 +} + +enum { + VS_FFI_SIGNATURE = 0xFEEF04BD, + VS_FFI_STRUCVERSION = 0x10000, + VS_FFI_FILEFLAGSMASK = 0x3F +} + +enum { + VS_FF_DEBUG = 1, + VS_FF_PRERELEASE = 2, + VS_FF_PATCHED = 4, + VS_FF_PRIVATEBUILD = 8, + VS_FF_INFOINFERRED = 16, + VS_FF_SPECIALBUILD = 32 +} + +enum { + VOS_UNKNOWN = 0, + VOS_DOS = 0x10000, + VOS_OS216 = 0x20000, + VOS_OS232 = 0x30000, + VOS_NT = 0x40000, + VOS__BASE = 0, + VOS__WINDOWS16 = 1, + VOS__PM16 = 2, + VOS__PM32 = 3, + VOS__WINDOWS32 = 4, + VOS_DOS_WINDOWS16 = 0x10001, + VOS_DOS_WINDOWS32 = 0x10004, + VOS_OS216_PM16 = 0x20002, + VOS_OS232_PM32 = 0x30003, + VOS_NT_WINDOWS32 = 0x40004 +} + +enum { + VFT_UNKNOWN = 0, + VFT_APP = 1, + VFT_DLL = 2, + VFT_DRV = 3, + VFT_FONT = 4, + VFT_VXD = 5, + VFT_STATIC_LIB = 7 +} + +enum { + VFT2_UNKNOWN = 0, + VFT2_DRV_PRINTER = 1, + VFT2_DRV_KEYBOARD = 2, + VFT2_DRV_LANGUAGE = 3, + VFT2_DRV_DISPLAY = 4, + VFT2_DRV_MOUSE = 5, + VFT2_DRV_NETWORK = 6, + VFT2_DRV_SYSTEM = 7, + VFT2_DRV_INSTALLABLE = 8, + VFT2_DRV_SOUND = 9, + VFT2_DRV_COMM = 10, + VFT2_DRV_INPUTMETHOD = 11, + VFT2_FONT_RASTER = 1, + VFT2_FONT_VECTOR = 2, + VFT2_FONT_TRUETYPE = 3 +} + +enum : DWORD { + VFFF_ISSHAREDFILE = 1 +} + +enum : DWORD { + VFF_CURNEDEST = 1, + VFF_FILEINUSE = 2, + VFF_BUFFTOOSMALL = 4 +} + +enum : DWORD { + VIFF_FORCEINSTALL = 1, + VIFF_DONTDELETEOLD +} + +enum { + VIF_TEMPFILE = 0x00001, + VIF_MISMATCH = 0x00002, + VIF_SRCOLD = 0x00004, + VIF_DIFFLANG = 0x00008, + VIF_DIFFCODEPG = 0x00010, + VIF_DIFFTYPE = 0x00020, + VIF_WRITEPROT = 0x00040, + VIF_FILEINUSE = 0x00080, + VIF_OUTOFSPACE = 0x00100, + VIF_ACCESSVIOLATION = 0x00200, + VIF_SHARINGVIOLATION = 0x00400, + VIF_CANNOTCREATE = 0x00800, + VIF_CANNOTDELETE = 0x01000, + VIF_CANNOTRENAME = 0x02000, + VIF_CANNOTDELETECUR = 0x04000, + VIF_OUTOFMEMORY = 0x08000, + VIF_CANNOTREADSRC = 0x10000, + VIF_CANNOTREADDST = 0x20000, + VIF_BUFFTOOSMALL = 0x40000 +} + +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; +} + +extern (Windows) { + DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, + PUINT); + DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, + PUINT); + DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, + PUINT); + DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, + LPWSTR, PUINT); + DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); + DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); + BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); + BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); + DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); + DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); + BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); + BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); +} + +version (Unicode) { + alias VerFindFileW VerFindFile; + alias VerQueryValueW VerQueryValue; + alias VerInstallFileW VerInstallFile; + alias GetFileVersionInfoSizeW GetFileVersionInfoSize; + alias GetFileVersionInfoW GetFileVersionInfo; + alias VerLanguageNameW VerLanguageName; + alias VerQueryValueW VerQueryValue; +} else { + alias VerQueryValueA VerQueryValue; + alias VerFindFileA VerFindFile; + alias VerInstallFileA VerInstallFile; + alias GetFileVersionInfoSizeA GetFileVersionInfoSize; + alias GetFileVersionInfoA GetFileVersionInfo; + alias VerLanguageNameA VerLanguageName; + alias VerQueryValueA VerQueryValue; +} Index: src/win32/ws2tcpip.d ================================================================== --- src/win32/ws2tcpip.d +++ src/win32/ws2tcpip.d @@ -221,22 +221,22 @@ SOCKADDR* ai_addr; addrinfo* ai_next; } extern(Windows) { - static if (_WIN32_WINNT >= 0x0501) { + static if (_WIN32_WINNT >= 0x501) { void freeaddrinfo(addrinfo*); - int getaddrinfo (CPtr!(char), CPtr!(char), CPtr!(addrinfo), addrinfo**); - int getnameinfo(CPtr!(SOCKADDR), socklen_t, char*, DWORD, char*, DWORD, int); + int getaddrinfo (const(char)*, const(char)*, const(addrinfo)*, addrinfo**); + int getnameinfo(const(SOCKADDR)*, socklen_t, char*, DWORD, char*, DWORD, int); } } /+ TODO static __inline char* gai_strerrorA(int ecode) { - static char message[1024+1]; + static char[1024+1] message; DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK; DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); FormatMessageA(dwFlags, NULL, ecode, dwLanguageId, (LPSTR)message, 1024, NULL); @@ -243,11 +243,11 @@ return message; } static __inline WCHAR* gai_strerrorW(int ecode) { - static WCHAR message[1024+1]; + static WCHAR[1024+1] message; DWORD dwFlags = FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_MAX_WIDTH_MASK; DWORD dwLanguageId = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); FormatMessageW(dwFlags, NULL, ecode, dwLanguageId, (LPWSTR)message, 1024, NULL); @@ -263,11 +263,11 @@ extern(Windows) { INT getnameinfo(SOCKADDR* pSockaddr, socklen_t SockaddrLength, PCHAR pNodeBuffer, DWORD NodeBufferSize, PCHAR pServiceBuffer, DWORD ServiceBufferSize, INT Flags); - static if (_WIN32_WINNT >= 0x0502) { + static if (_WIN32_WINNT >= 0x502) { INT GetNameInfoW(SOCKADDR* pSockaddr, socklen_t SockaddrLength, PWCHAR pNodeBuffer, DWORD NodeBufferSize, PWCHAR pServiceBuffer, DWORD ServiceBufferSize, INT Flags); alias getnameinfo GetNameInfoA; ADDED src/win32/wtsapi32.d Index: src/win32/wtsapi32.d ================================================================== --- src/win32/wtsapi32.d +++ src/win32/wtsapi32.d @@ -0,0 +1,429 @@ +/***********************************************************************\ +* wtsapi32.d * +* * +* Windows API header module * +* * +* Translated from MinGW-w64 API * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wtsapi32; +pragma(lib, "wtsapi32"); +private import win32.w32api; +import win32.windef; + +enum { + WTS_CURRENT_SERVER = null, + WTS_CURRENT_SERVER_HANDLE = null, + WTS_CURRENT_SERVER_NAME = null +} + +enum DWORD WTS_CURRENT_SESSION = cast(DWORD) -1; + +enum { + IDTIMEOUT = 32000, + IDASYNC = 32001 +} + +enum { + WTS_WSD_LOGOFF = 0x01, + WTS_WSD_SHUTDOWN = 0x02, + WTS_WSD_REBOOT = 0x04, + WTS_WSD_POWEROFF = 0x08, + WTS_WSD_FASTREBOOT = 0x10 +} + +enum WTS_CONNECTSTATE_CLASS { + WTSActive, + WTSConnected, + WTSConnectQuery, + WTSShadow, + WTSDisconnected, + WTSIdle, + WTSListen, + WTSReset, + WTSDown, + WTSInit +} + +struct WTS_SERVER_INFOW { + LPWSTR pServerName; +} +alias WTS_SERVER_INFOW* PWTS_SERVER_INFOW; + +struct WTS_SERVER_INFOA { + LPSTR pServerName; +} +alias WTS_SERVER_INFOA* PWTS_SERVER_INFOA; + +version(Unicode) { + alias WTS_SERVER_INFOW WTS_SERVER_INFO; + alias PWTS_SERVER_INFOW PWTS_SERVER_INFO; +} else { + alias WTS_SERVER_INFOA WTS_SERVER_INFO; + alias PWTS_SERVER_INFOA PWTS_SERVER_INFO; +} + +struct WTS_SESSION_INFOW { + DWORD SessionId; + LPWSTR pWinStationName; + WTS_CONNECTSTATE_CLASS State; +} +alias WTS_SESSION_INFOW* PWTS_SESSION_INFOW; + +struct WTS_SESSION_INFOA { + DWORD SessionId; + LPSTR pWinStationName; + WTS_CONNECTSTATE_CLASS State; +} +alias WTS_SESSION_INFOA* PWTS_SESSION_INFOA; + +version(Unicode) { + alias WTS_SESSION_INFOW WTS_SESSION_INFO; + alias PWTS_SESSION_INFOW PWTS_SESSION_INFO; +} else { + alias WTS_SESSION_INFOA WTS_SESSION_INFO; + alias PWTS_SESSION_INFOA PWTS_SESSION_INFO; +} + +struct WTS_PROCESS_INFOW { + DWORD SessionId; + DWORD ProcessId; + LPWSTR pProcessName; + PSID pUserSid; +} +alias WTS_PROCESS_INFOW* PWTS_PROCESS_INFOW; + +struct WTS_PROCESS_INFOA { + DWORD SessionId; + DWORD ProcessId; + LPSTR pProcessName; + PSID pUserSid; +} +alias WTS_PROCESS_INFOA* PWTS_PROCESS_INFOA; + +version(Unicode) { + alias WTS_PROCESS_INFOW WTS_PROCESS_INFO; + alias PWTS_PROCESS_INFOW PWTS_PROCESS_INFO; +} else { + alias WTS_PROCESS_INFOA WTS_PROCESS_INFO; + alias PWTS_PROCESS_INFOA PWTS_PROCESS_INFO; +} + +enum { + WTS_PROTOCOL_TYPE_CONSOLE, + WTS_PROTOCOL_TYPE_ICA, + WTS_PROTOCOL_TYPE_RDP +} + +enum WTS_INFO_CLASS { + WTSInitialProgram, + WTSApplicationName, + WTSWorkingDirectory, + WTSOEMId, + WTSSessionId, + WTSUserName, + WTSWinStationName, + WTSDomainName, + WTSConnectState, + WTSClientBuildNumber, + WTSClientName, + WTSClientDirectory, + WTSClientProductId, + WTSClientHardwareId, + WTSClientAddress, + WTSClientDisplay, + WTSClientProtocolType, + WTSIdleTime, + WTSLogonTime, + WTSIncomingBytes, + WTSOutgoingBytes, + WTSIncomingFrames, + WTSOutgoingFrames, + WTSClientInfo, + WTSSessionInfo, // = 24 +} + +struct WTS_CLIENT_ADDRESS { + DWORD AddressFamily; + BYTE[20] Address; +} +alias WTS_CLIENT_ADDRESS* PWTS_CLIENT_ADDRESS; + +struct WTS_CLIENT_DISPLAY { + DWORD HorizontalResolution; + DWORD VerticalResolution; + DWORD ColorDepth; +} +alias WTS_CLIENT_DISPLAY* PWTS_CLIENT_DISPLAY; + +enum WTS_CONFIG_CLASS { + WTSUserConfigInitialProgram, + WTSUserConfigWorkingDirectory, + WTSUserConfigfInheritInitialProgram, + WTSUserConfigfAllowLogonTerminalServer, + WTSUserConfigTimeoutSettingsConnections, + WTSUserConfigTimeoutSettingsDisconnections, + WTSUserConfigTimeoutSettingsIdle, + WTSUserConfigfDeviceClientDrives, + WTSUserConfigfDeviceClientPrinters, + WTSUserConfigfDeviceClientDefaultPrinter, + WTSUserConfigBrokenTimeoutSettings, + WTSUserConfigReconnectSettings, + WTSUserConfigModemCallbackSettings, + WTSUserConfigModemCallbackPhoneNumber, + WTSUserConfigShadowingSettings, + WTSUserConfigTerminalServerProfilePath, + WTSUserConfigTerminalServerHomeDir, + WTSUserConfigTerminalServerHomeDirDrive, + WTSUserConfigfTerminalServerRemoteHomeDir +} + +enum { + WTS_EVENT_NONE = 0x0, + WTS_EVENT_CREATE = 0x1, + WTS_EVENT_DELETE = 0x2, + WTS_EVENT_RENAME = 0x4, + WTS_EVENT_CONNECT = 0x8, + WTS_EVENT_DISCONNECT = 0x10, + WTS_EVENT_LOGON = 0x20, + WTS_EVENT_LOGOFF = 0x40, + WTS_EVENT_STATECHANGE = 0x80, + WTS_EVENT_LICENSE = 0x100, + WTS_EVENT_ALL = 0x7fffffff, + WTS_EVENT_FLUSH = 0x80000000 +} + +enum WTS_VIRTUAL_CLASS { + WTSVirtualClientData, + WTSVirtualFileHandle +} + +version(Unicode) { + alias WTSEnumerateServersW WTSEnumerateServers; + alias WTSOpenServerW WTSOpenServer; + alias WTSEnumerateSessionsW WTSEnumerateSessions; + alias WTSEnumerateProcessesW WTSEnumerateProcesses; + alias WTSQuerySessionInformationW WTSQuerySessionInformation; + alias WTSQueryUserConfigW WTSQueryUserConfig; + alias WTSSetUserConfigW WTSSetUserConfig; + alias WTSSendMessageW WTSSendMessage; +} else { + alias WTSEnumerateServersA WTSEnumerateServers; + alias WTSOpenServerA WTSOpenServer; + alias WTSEnumerateSessionsA WTSEnumerateSessions; + alias WTSEnumerateProcessesA WTSEnumerateProcesses; + alias WTSQuerySessionInformationA WTSQuerySessionInformation; + alias WTSQueryUserConfigA WTSQueryUserConfig; + alias WTSSetUserConfigA WTSSetUserConfig; + alias WTSSendMessageA WTSSendMessage; +} + +extern(Windows) { + WINBOOL WTSEnumerateServersW(LPWSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOW* ppServerInfo, DWORD* pCount); + WINBOOL WTSEnumerateServersA(LPSTR pDomainName, DWORD Reserved, DWORD Version, PWTS_SERVER_INFOA* ppServerInfo, DWORD* pCount); + HANDLE WTSOpenServerW(LPWSTR pServerName); + HANDLE WTSOpenServerA(LPSTR pServerName); + VOID WTSCloseServer(HANDLE hServer); + WINBOOL WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOW* ppSessionInfo, DWORD* pCount); + WINBOOL WTSEnumerateSessionsA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFOA* ppSessionInfo, DWORD* pCount); + WINBOOL WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount); + WINBOOL WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_PROCESS_INFOA* ppProcessInfo, DWORD* pCount); + WINBOOL WTSTerminateProcess(HANDLE hServer, DWORD ProcessId, DWORD ExitCode); + WINBOOL WTSQuerySessionInformationW(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQuerySessionInformationA(HANDLE hServer, DWORD SessionId, WTS_INFO_CLASS WTSInfoClass, LPSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQueryUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSQueryUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR* ppBuffer, DWORD* pBytesReturned); + WINBOOL WTSSetUserConfigW(LPWSTR pServerName, LPWSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPWSTR pBuffer, DWORD DataLength); + WINBOOL WTSSetUserConfigA(LPSTR pServerName, LPSTR pUserName, WTS_CONFIG_CLASS WTSConfigClass, LPSTR pBuffer, DWORD DataLength); + WINBOOL WTSSendMessageW(HANDLE hServer, DWORD SessionId, LPWSTR pTitle, DWORD TitleLength, LPWSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); + WINBOOL WTSSendMessageA(HANDLE hServer, DWORD SessionId, LPSTR pTitle, DWORD TitleLength, LPSTR pMessage, DWORD MessageLength, DWORD Style, DWORD Timeout, DWORD* pResponse, WINBOOL bWait); + WINBOOL WTSDisconnectSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); + WINBOOL WTSLogoffSession(HANDLE hServer, DWORD SessionId, WINBOOL bWait); + WINBOOL WTSShutdownSystem(HANDLE hServer, DWORD ShutdownFlag); + WINBOOL WTSWaitSystemEvent(HANDLE hServer, DWORD EventMask, DWORD* pEventFlags); + HANDLE WTSVirtualChannelOpen(HANDLE hServer, DWORD SessionId, LPSTR pVirtualName); + WINBOOL WTSVirtualChannelClose(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut, PCHAR Buffer, ULONG BufferSize, PULONG pBytesRead); + WINBOOL WTSVirtualChannelWrite(HANDLE hChannelHandle, PCHAR Buffer, ULONG Length, PULONG pBytesWritten); + WINBOOL WTSVirtualChannelPurgeInput(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelPurgeOutput(HANDLE hChannelHandle); + WINBOOL WTSVirtualChannelQuery(HANDLE hChannelHandle, WTS_VIRTUAL_CLASS, PVOID* ppBuffer, DWORD* pBytesReturned); + VOID WTSFreeMemory(PVOID pMemory); + + WINBOOL WTSRegisterSessionNotification(HWND hWnd, DWORD dwFlags); + WINBOOL WTSUnRegisterSessionNotification(HWND hWnd); + WINBOOL WTSQueryUserToken(ULONG SessionId, PHANDLE phToken); +} + +enum { + NOTIFY_FOR_ALL_SESSIONS = 1, + NOTIFY_FOR_THIS_SESSION = 0 +} + +enum { + USERNAME_LENGTH = 20, + CLIENTNAME_LENGTH = 20, + CLIENTADDRESS_LENGTH = 30, + WINSTATIONNAME_LENGTH = 32, + DOMAIN_LENGTH = 17 +} + +static if (_WIN32_WINNT >= 0x600) { + struct WTSCLIENTW { + WCHAR ClientName[CLIENTNAME_LENGTH + 1]; + WCHAR Domain[DOMAIN_LENGTH + 1]; + WCHAR UserName[USERNAME_LENGTH + 1]; + WCHAR WorkDirectory[MAX_PATH + 1]; + WCHAR InitialProgram[MAX_PATH + 1]; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + WCHAR ClientDirectory[MAX_PATH + 1]; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + WCHAR DeviceId[MAX_PATH + 1]; + } + alias WTSCLIENTW* PWTSCLIENTW; + + struct WTSCLIENTA { + CHAR ClientName[CLIENTNAME_LENGTH + 1]; + CHAR Domain[DOMAIN_LENGTH + 1 ]; + CHAR UserName[USERNAME_LENGTH + 1]; + CHAR WorkDirectory[MAX_PATH + 1]; + CHAR InitialProgram[MAX_PATH + 1]; + BYTE EncryptionLevel; + ULONG ClientAddressFamily; + USHORT ClientAddress[CLIENTADDRESS_LENGTH + 1]; + USHORT HRes; + USHORT VRes; + USHORT ColorDepth; + CHAR ClientDirectory[MAX_PATH + 1]; + ULONG ClientBuildNumber; + ULONG ClientHardwareId; + USHORT ClientProductId; + USHORT OutBufCountHost; + USHORT OutBufCountClient; + USHORT OutBufLength; + CHAR DeviceId[MAX_PATH + 1]; + } + alias WTSCLIENTA* PWTSCLIENTA; + + version(Unicode) { + alias WTSCLIENTW WTSCLIENT; + alias PWTSCLIENTW PWTSCLIENT; + } else { + alias WTSCLIENTA WTSCLIENT; + alias PWTSCLIENTA PWTSCLIENT; + } + + struct WTSINFOW { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + WCHAR WinStationName[WINSTATIONNAME_LENGTH]; + WCHAR Domain[DOMAIN_LENGTH]; + WCHAR UserName[USERNAME_LENGTH+1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + } + alias WTSINFOW* PWTSINFOW; + + struct WTSINFOA { + WTS_CONNECTSTATE_CLASS State; + DWORD SessionId; + DWORD IncomingBytes; + DWORD OutgoingBytes; + DWORD IncomingCompressedBytes; + DWORD OutgoingCompressedBytes; + CHAR WinStationName[WINSTATIONNAME_LENGTH]; + CHAR Domain[DOMAIN_LENGTH]; + CHAR UserName[USERNAME_LENGTH+1]; + LARGE_INTEGER ConnectTime; + LARGE_INTEGER DisconnectTime; + LARGE_INTEGER LastInputTime; + LARGE_INTEGER LogonTime; + LARGE_INTEGER CurrentTime; + } + alias WTSINFOA* PWTSINFOA; + + version(Unicode) { + alias WTSINFOW WTSINFO; + alias PWTSINFOW PWTSINFO; + } else { + alias WTSINFOA WTSINFO; + alias PWTSINFOA PWTSINFO; + } + + extern(Windows) { + WINBOOL WTSConnectSessionA( + ULONG LogonId, + ULONG TargetLogonId, + PSTR pPassword, + WINBOOL bWait + ); + + WINBOOL WTSConnectSessionW( + ULONG LogonId, + ULONG TargetLogonId, + PWSTR pPassword, + WINBOOL bWait + ); + + WINBOOL WTSRegisterSessionNotificationEx( + HANDLE hServer, + HWND hWnd, + DWORD dwFlags + ); + + WINBOOL WTSStartRemoteControlSessionA( + LPSTR pTargetServerName, + ULONG TargetLogonId, + BYTE HotkeyVk, + USHORT HotkeyModifiers + ); + + WINBOOL WTSStartRemoteControlSessionW( + LPWSTR pTargetServerName, + ULONG TargetLogonId, + BYTE HotkeyVk, + USHORT HotkeyModifiers + ); + + version(Unicode) { + alias WTSStartRemoteControlSessionW WTSStartRemoteControlSession; + alias WTSConnectSessionW WTSConnectSession; + } else { + alias WTSStartRemoteControlSessionA WTSStartRemoteControlSession; + alias WTSConnectSessionA WTSConnectSession; + } + + WINBOOL WTSStopRemoteControlSession( + ULONG LogonId + ); + + WINBOOL WTSUnRegisterSessionNotificationEx( + HANDLE hServer, + HWND hWnd + ); + + HANDLE WTSVirtualChannelOpenEx( + DWORD SessionId, + LPSTR pVirtualName, + DWORD flags + ); + } /* extern(Windows) */ +} /* static if (_WIN32_WINNT >= 0x600) */ Index: src/win32/wtypes.d ================================================================== --- src/win32/wtypes.d +++ src/win32/wtypes.d @@ -1,231 +1,232 @@ -/***********************************************************************\ -* wtypes.d * -* * -* Windows API header module * -* * -* Translated from MinGW Windows headers * -* * -* Placed into public domain * -\***********************************************************************/ -module win32.wtypes; - -import win32.rpc, win32.rpcndr; -private import win32.windef; -private import win32.uuid; // for GUID_NULL - -alias GUID_NULL IID_NULL, CLSID_NULL; - -const ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; -const ROTFLAGS_ALLOWANYCLIENT = 0x02; - -// also in winsock2.h -struct BLOB { - ULONG cbSize; - BYTE* pBlobData; -} -alias BLOB* PBLOB, LPBLOB; - -enum DVASPECT { - DVASPECT_CONTENT = 1, - DVASPECT_THUMBNAIL = 2, - DVASPECT_ICON = 4, - DVASPECT_DOCPRINT = 8 -} - -enum DVASPECT2 { - DVASPECT_OPAQUE = 16, - DVASPECT_TRANSPARENT = 32 -} - -enum STATFLAG { - STATFLAG_DEFAULT = 0, - STATFLAG_NONAME = 1 -} - -enum MEMCTX { - MEMCTX_LOCAL = 0, - MEMCTX_TASK, - MEMCTX_SHARED, - MEMCTX_MACSYSTEM, - MEMCTX_UNKNOWN = -1, - MEMCTX_SAME = -2 -} - -enum MSHCTX { - MSHCTX_LOCAL = 0, - MSHCTX_NOSHAREDMEM, - MSHCTX_DIFFERENTMACHINE, - MSHCTX_INPROC, - MSHCTX_CROSSCTX -} - -enum CLSCTX { - CLSCTX_INPROC_SERVER = 1, - CLSCTX_INPROC_HANDLER = 2, - CLSCTX_LOCAL_SERVER = 4, - CLSCTX_INPROC_SERVER16 = 8, - CLSCTX_REMOTE_SERVER = 16 -} - -enum MSHLFLAGS { - MSHLFLAGS_NORMAL, - MSHLFLAGS_TABLESTRONG, - MSHLFLAGS_TABLEWEAK -} - -struct FLAGGED_WORD_BLOB { - uint fFlags; - uint clSize; - ushort asData[1]; -} - -alias WCHAR OLECHAR; -alias LPWSTR LPOLESTR; -alias LPCWSTR LPCOLESTR; - -alias ushort VARTYPE; -alias short VARIANT_BOOL; -alias VARIANT_BOOL _VARIANT_BOOL; -const VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; -const VARIANT_BOOL VARIANT_FALSE = 0; - -alias OLECHAR* BSTR; -alias FLAGGED_WORD_BLOB* wireBSTR; -alias BSTR* LPBSTR; -//alias LONG SCODE; // also in winerror -alias HANDLE HCONTEXT, HMETAFILEPICT; - -union CY { - struct { - uint Lo; - int Hi; - } - LONGLONG int64; -} - -alias double DATE; -struct BSTRBLOB { - ULONG cbSize; - PBYTE pData; -} -alias BSTRBLOB* LPBSTRBLOB; - -// Used only in the PROPVARIANT structure -// According to the 2003 SDK, this should be in propidl.h, not here. -struct CLIPDATA { - ULONG cbSize; - int ulClipFmt; - PBYTE pClipData; -} - -enum STGC { - STGC_DEFAULT, - STGC_OVERWRITE, - STGC_ONLYIFCURRENT, - STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE -} - -enum STGMOVE { - STGMOVE_MOVE, - STGMOVE_COPY, - STGMOVE_SHALLOWCOPY -} - -enum VARENUM { - VT_EMPTY, - VT_NULL, - VT_I2, - VT_I4, - VT_R4, - VT_R8, - VT_CY, - VT_DATE, - VT_BSTR, - VT_DISPATCH, - VT_ERROR, - VT_BOOL, - VT_VARIANT, - VT_UNKNOWN, - VT_DECIMAL, - VT_I1 = 16, - VT_UI1, - VT_UI2, - VT_UI4, - VT_I8, - VT_UI8, - VT_INT, - VT_UINT, - VT_VOID, - VT_HRESULT, - VT_PTR, - VT_SAFEARRAY, - VT_CARRAY, - VT_USERDEFINED, - VT_LPSTR, - VT_LPWSTR, - VT_RECORD = 36, - VT_INT_PTR = 37, - VT_UINT_PTR = 38, - VT_FILETIME = 64, - VT_BLOB, - VT_STREAM, - VT_STORAGE, - VT_STREAMED_OBJECT, - VT_STORED_OBJECT, - VT_BLOB_OBJECT, - VT_CF, - VT_CLSID, - 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 -}; - -struct BYTE_SIZEDARR { - uint clSize; - byte* pData; -} - -struct WORD_SIZEDARR { - uint clSize; - ushort* pData; -} - -struct DWORD_SIZEDARR { -uint clSize; -uint* pData; -} - -struct HYPER_SIZEDARR { - uint clSize; - hyper* pData; -} - -alias double DOUBLE; - - -struct DECIMAL { - USHORT wReserved; - union { - struct { - ubyte scale; // valid values are 0 to 28 - ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. - ubyte DECIMAL_NEG = 0x80; - } - USHORT signscale; - } - ULONG Hi32; - union { - struct { - ULONG Lo32; - ULONG Mid32; - } - ULONGLONG Lo64; - } - // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} - void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } -} +/***********************************************************************\ +* wtypes.d * +* * +* Windows API header module * +* * +* Translated from MinGW Windows headers * +* * +* Placed into public domain * +\***********************************************************************/ +module win32.wtypes; + +import win32.rpc, win32.rpcndr; +private import win32.windef; +private import win32.uuid; // for GUID_NULL + +alias GUID_NULL IID_NULL, CLSID_NULL; + +const ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01; +const ROTFLAGS_ALLOWANYCLIENT = 0x02; + +// also in winsock2.h +struct BLOB { + ULONG cbSize; + BYTE* pBlobData; +} +alias BLOB* PBLOB, LPBLOB; + +enum DVASPECT { + DVASPECT_CONTENT = 1, + DVASPECT_THUMBNAIL = 2, + DVASPECT_ICON = 4, + DVASPECT_DOCPRINT = 8 +} + +enum DVASPECT2 { + DVASPECT_OPAQUE = 16, + DVASPECT_TRANSPARENT = 32 +} + +enum STATFLAG { + STATFLAG_DEFAULT = 0, + STATFLAG_NONAME = 1 +} + +enum MEMCTX { + MEMCTX_LOCAL = 0, + MEMCTX_TASK, + MEMCTX_SHARED, + MEMCTX_MACSYSTEM, + MEMCTX_UNKNOWN = -1, + MEMCTX_SAME = -2 +} + +enum MSHCTX { + MSHCTX_LOCAL = 0, + MSHCTX_NOSHAREDMEM, + MSHCTX_DIFFERENTMACHINE, + MSHCTX_INPROC, + MSHCTX_CROSSCTX +} + +enum CLSCTX { + CLSCTX_INPROC_SERVER = 1, + CLSCTX_INPROC_HANDLER = 2, + CLSCTX_LOCAL_SERVER = 4, + CLSCTX_INPROC_SERVER16 = 8, + CLSCTX_REMOTE_SERVER = 16 +} + +enum MSHLFLAGS { + MSHLFLAGS_NORMAL, + MSHLFLAGS_TABLESTRONG, + MSHLFLAGS_TABLEWEAK +} + +struct FLAGGED_WORD_BLOB { + uint fFlags; + uint clSize; + ushort[1] asData; +} + +alias WCHAR OLECHAR; +alias LPWSTR LPOLESTR; +alias LPCWSTR LPCOLESTR; + +alias ushort VARTYPE; +alias short VARIANT_BOOL; +alias VARIANT_BOOL _VARIANT_BOOL; +const VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff; +const VARIANT_BOOL VARIANT_FALSE = 0; + +alias OLECHAR* BSTR; +alias FLAGGED_WORD_BLOB* wireBSTR; +alias BSTR* LPBSTR; +//alias LONG SCODE; // also in winerror +mixin DECLARE_HANDLE!("HCONTEXT"); +mixin DECLARE_HANDLE!("HMETAFILEPICT"); + +union CY { + struct { + uint Lo; + int Hi; + } + LONGLONG int64; +} + +alias double DATE; +struct BSTRBLOB { + ULONG cbSize; + PBYTE pData; +} +alias BSTRBLOB* LPBSTRBLOB; + +// Used only in the PROPVARIANT structure +// According to the 2003 SDK, this should be in propidl.h, not here. +struct CLIPDATA { + ULONG cbSize; + int ulClipFmt; + PBYTE pClipData; +} + +enum STGC { + STGC_DEFAULT, + STGC_OVERWRITE, + STGC_ONLYIFCURRENT, + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE +} + +enum STGMOVE { + STGMOVE_MOVE, + STGMOVE_COPY, + STGMOVE_SHALLOWCOPY +} + +enum VARENUM { + VT_EMPTY, + VT_NULL, + VT_I2, + VT_I4, + VT_R4, + VT_R8, + VT_CY, + VT_DATE, + VT_BSTR, + VT_DISPATCH, + VT_ERROR, + VT_BOOL, + VT_VARIANT, + VT_UNKNOWN, + VT_DECIMAL, + VT_I1 = 16, + VT_UI1, + VT_UI2, + VT_UI4, + VT_I8, + VT_UI8, + VT_INT, + VT_UINT, + VT_VOID, + VT_HRESULT, + VT_PTR, + VT_SAFEARRAY, + VT_CARRAY, + VT_USERDEFINED, + VT_LPSTR, + VT_LPWSTR, + VT_RECORD = 36, + VT_INT_PTR = 37, + VT_UINT_PTR = 38, + VT_FILETIME = 64, + VT_BLOB, + VT_STREAM, + VT_STORAGE, + VT_STREAMED_OBJECT, + VT_STORED_OBJECT, + VT_BLOB_OBJECT, + VT_CF, + VT_CLSID, + 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 +}; + +struct BYTE_SIZEDARR { + uint clSize; + byte* pData; +} + +struct WORD_SIZEDARR { + uint clSize; + ushort* pData; +} + +struct DWORD_SIZEDARR { +uint clSize; +uint* pData; +} + +struct HYPER_SIZEDARR { + uint clSize; + hyper* pData; +} + +alias double DOUBLE; + + +struct DECIMAL { + USHORT wReserved; + union { + struct { + ubyte scale; // valid values are 0 to 28 + ubyte sign; // 0 for positive, DECIMAL_NEG for negatives. + enum ubyte DECIMAL_NEG = 0x80; + } + USHORT signscale; + } + ULONG Hi32; + union { + struct { + ULONG Lo32; + ULONG Mid32; + } + ULONGLONG Lo64; + } + // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;} + void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; } +} Index: src/windll.d ================================================================== --- src/windll.d +++ src/windll.d @@ -1,6 +1,7 @@ -サソimport win32.windows; +サソimport core.runtime; +import win32.windows; import std.string; class WinDLLException : Exception { private this( string msg ) { super(msg); } @@ -7,20 +8,21 @@ } class WinDLL { // constructor: - // Load a DLL with specified name + // Load a DLL of specified name. + // Avoid loading the DLL from the current directory for security. this( string dllname ) { char original_cur[MAX_PATH]; char sys[MAX_PATH]; - GetCurrentDirectoryA(MAX_PATH, original_cur.ptr); - GetSystemDirectoryA(sys.ptr, MAX_PATH); + GetCurrentDirectoryA(original_cur.length, original_cur.ptr); + GetSystemDirectoryA(sys.ptr, sys.length); SetCurrentDirectoryA(sys.ptr); - handle = LoadLibraryA( dllname.ptr ); + handle = cast(HINSTANCE) Runtime.loadLibrary(dllname); SetCurrentDirectoryA(original_cur.ptr); if( handle is null ) throw new WinDLLException( dllname ~ " not found" ); } @@ -36,11 +38,11 @@ void close() { if( handle ) { - FreeLibrary( handle ); + Runtime.unloadLibrary(handle); handle = null; } } // get_api: @@ -58,21 +60,26 @@ } // load_resource: // extract a resource - void* load_resource( string resname, char* type ) + void* load_resource( string resname, const char* type ) in { assert(handle); } body { + if(resname in rsrc_map) + return rsrc_map[resname]; + HRSRC hi = FindResource( handle, resname.toStringz(), type ); if( hi is null ) return null; HGLOBAL hr = LoadResource( handle, hi ); if( hr is null ) return null; - return LockResource( hr ); + void* v = LockResource( hr ); + rsrc_map[resname] = v; + return v; } // load_diaglog: // specialized version of load_resource @@ -80,6 +87,7 @@ { return load_resource( resname, RT_DIALOG ); } private HINSTANCE handle; + private void*[string] rsrc_map; }