ADDED readme.txt Index: readme.txt ================================================================== --- readme.txt +++ readme.txt @@ -0,0 +1,70 @@ +---------------------------- + Quasi-Bga32.DLL 2010/11/25 +---------------------------- + +http://www.forest.impress.co.jp/article/2004/07/30/arcsecurity.html +などで脆弱性と指摘されている問題が気になるけれど、Bga32.dllは使い続け +たいという人のための回避策です。展開処理はこの問題に対処しつつ内部で +行い、圧縮などの他の処理は全てオリジナルのBga32.dllに処理を回します。 + +本家Bga32.dllが更新されるまでのピンチヒッターということで。 + + +★使い方 + + * オリジナルの Bga32.dll を _Bga32.dll に、名前を変更する。 + * QBga32.dll を Bga32.dll に、名前を変更する。 + * 後は DLL を利用する各ソフトウェアの使用方法に従って… + +★オリジナルのBga32.DLLとの相違点 + + Bga() API にxコマンドを与えたときの動作のみが変化します。 + + * 書庫内の格納ファイルパスの".."を"__"に書き換えながら解凍します。 + + * 今のところ、レジストリの設定を読み込みません。 + * エラー時の返値が非常にいい加減です。 + * 上書き確認ダイアログが簡素なものになっています。 + * コマンドラインやオプション、ワイルドカードの解釈は + オリジナルと同じになるように作ったつもりです。 + * ただし、突貫で作ったのでたぶんバグだらけです。 + +★更新履歴 + + 2010/11/25 (0.04) + * _Bga32.dll を探す対象パスからカレントディレクトリを外しました + 2004/8/31 (0.03) + * レスポンスファイルが扱えてなかったバグを修正 + * .gzaを正しく展開できないケースがあったっぽいので修正 + * 基底ディレクトリの指定がないと正しく動作しないバグ修正 + * 進捗状況ダイアログ表示を実装 + * SetOwnerWindowProc系APIを実装 + * QBgaGetVersion() API を追加。このAPIが必要になる機会は + 基本的には無いようにしたいですが…。オリジナルの + Bga32と偽Bga32を区別したい場合はこのAPIの有無で。 + 2004/8/22 + * FreeLibrary時に標準入出力を勝手に閉じちゃうバグを修正 + 2004/8/20 + * 初版公開 + +★ソースからコンパイルするには + + Digital Mars D Compiler 0.99 + http://www.kmonos.net/alang/d/1.0/changelog1.html#new099 + が必要です。 + +★著作権等 + + src/libbz2ディレクトリの中身は、 + libbzip2 + http://sources.redhat.com/bzip2/ + をビルドしたライブラリなどです。この部分は + Copyright (C) 1996-2002 Julian R Seward. All rights reserved. + で。 + + win32.lib と win32 ディレクトリの中身は + windows.h for D + http://hp.vector.co.jp/authors/VA028375/d/windows.h.html + を利用しています。 + + 他は NYSL 0.9982 ( http://www.kmonos.net/nysl/ )に基づいてご自由に。 ADDED src/Makefile Index: src/Makefile ================================================================== --- src/Makefile +++ src/Makefile @@ -0,0 +1,12 @@ +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 = win32a.lib +OPTS = -release +#OPTS = -unittest + +QBga32.dll: $(SRCFILES) $(BZ2FILES) + dmd.exe $(OPTS) -ofQBga32.dll $(SRCFILES) $(BZ2FILES) $(DEPLIBS) + +clean: + del *.map + del *.obj ADDED src/bga_melter.d Index: src/bga_melter.d ================================================================== --- src/bga_melter.d +++ src/bga_melter.d @@ -0,0 +1,461 @@ +サソprivate import std.string; +private import std.file; +private import std.c.stdio; +private import etc.c.zlib; +private import win32.ansi.windows; +private import libbz2.bzlib; +private import util; + +//---------------------------------------------------------------- +// Bga譖ク蠎ォ縺ョ繝輔ぃ繧、繝ォ繝倥ャ繝蠖「蠑 +//---------------------------------------------------------------- + +align(1) struct BgaHeader +{ + int checksum; // typeス枅name 縺ョsigned char縺ァ縺ョ蜥 + char method[4]; // "GZIP" 縺セ縺溘ッ "BZ2\0" + uint compressed_size; // 蝨ァ邵ョ蠕後ョ繝繝シ繧ソ繧オ繧、繧コ( 繝倥ャ繝縺ッ蜷ォ縺セ縺ェ縺 ) + uint original_size; // 蜈縺ョ繝輔ぃ繧、繝ォ繧オ繧、繧コ + ushort date; // 繝輔ぃ繧、繝ォ縺ョ譖エ譁ー譌・莉( DOS蠖「蠑 ) + ushort time; // 繝輔ぃ繧、繝ォ縺ョ譖エ譁ー譎ょ綾( DOS蠖「蠑 ) + ubyte attrib; // 繝輔ぃ繧、繝ォ縺ョ螻樊ァ + // ( 1:RO 2:Hid 4:Sys 8:Vol 16:Dir 32:Arc ) + ubyte header_type; // 繝倥ャ繝縺ョ遞ョ鬘( 迴セ蝨ィ縺ッ蟶ク縺ォ 0 ) + ushort arc_type; // 繧「繝シ繧ォ繧、繝悶ち繧、繝 + // 0:(ext==竊?髱槫悸邵ョ:蝨ァ邵ョ) 1:蝨ァ邵ョ 2:髱槫悸邵ョ + // .ARC, .ARJ, .BZ2, .BZA, .CAB, .GZ, .GZA, .LZH, + // .LZS, .PAK, .RAR, .TAZ, .TBZ, .TGZ, .Z, .ZIP, .ZOO + ushort dir_name_len; // 繝繧」繝ャ繧ッ繝医Μ蜷阪ョ髟キ縺 + ushort file_name_len; // 繝輔ぃ繧、繝ォ蜷阪ョ髟キ縺 + char[] fname; // dir_name_len + file_name_len ( no '\0' ) +} + +//---------------------------------------------------------------- +// 繧ィ繝ゥ繝シ逋コ逕滓凾縺ォ謚輔£繧倶セ句、 +//---------------------------------------------------------------- + +class BgaMelterError : Error +{ + int errcode; + this( int e ) { super("BgaMelterError"); errcode=e; } +} + +enum +{ + ERROR_FILE_OPEN=0x800D,// 繝輔ぃ繧、繝ォ繧帝幕縺代∪縺帙s縺ァ縺励◆縲 + ERROR_MAKEDIRECTORY=0x8012,// 繝繧」繝ャ繧ッ繝医Μ縺御ス懈舌〒縺阪∪縺帙s縲 + ERROR_CANNOT_WRITE=0x8013,// 譖ク縺崎セシ縺ソ繧ィ繝ゥ繝シ縺檎函縺倥∪縺励◆縲 + ERROR_HEADER_CRC=0x8016,// 譖ク蠎ォ縺ョ繝倥ャ繝縺ョ繝√ぉ繝繧ッ繧オ繝縺悟粋縺」縺ヲ縺縺セ縺帙s縲 + ERROR_ARC_FILE_OPEN=0x8018,// 譖ク蠎ォ繧帝幕縺丈コ九′蜃コ譚・縺セ縺帙s縲 + ERROR_NOT_ARC_FILE=0x8019,// 譖ク蠎ォ縺ョ繝輔ぃ繧、繝ォ蜷阪′謖螳壹&繧後※縺縺セ縺帙s縲 + ERROR_CANNOT_READ=0x801A,// 繝輔ぃ繧、繝ォ縺ョ隱ュ縺ソ霎シ縺ソ譎ゅ↓繧ィ繝ゥ繝シ縺檎函縺倥∪縺励◆縲 + ERROR_FILE_STYLE=0x801B,// 謖螳壹&繧後◆繝輔ぃ繧、繝ォ縺ッ譛牙柑縺ェ譖ク蠎ォ縺ァ縺ッ縺ゅj縺セ縺帙s縲 + ERROR_COMMAND_NAME=0x801C,// 繧ウ繝槭Φ繝画欠螳壹′髢馴&縺」縺ヲ縺縺セ縺吶 + ERROR_MORE_HEAP_MEMORY=0x801D,// 菴懈・ュ逕ィ縺ョ縺溘a縺ョ繝偵シ繝励Γ繝「繝ェ縺御ク崎カウ縺励※縺縺セ縺吶 + ERROR_ALREADY_RUNNING=0x801F,// 譌「縺ォ BGA32.DLL 縺悟虚菴應クュ縺ァ縺吶 + ERROR_USER_CANCEL=0x8020,// 繝ヲ繝シ繧カ繝シ縺ォ繧医▲縺ヲ蜃ヲ逅繧剃クュ譁ュ縺輔l縺セ縺励◆縲 + ERROR_TMP_OPEN=0x8025,// 菴懈・ュ繝輔ぃ繧、繝ォ縺御ス懈舌〒縺阪∪縺帙s縲 + ERROR_ARC_READ_ONLY=0x8027,// 譖ク縺崎セシ縺ソ蟆ら畑螻樊ァ縺ョ譖ク蠎ォ縺ォ蟇セ縺吶k謫堺ス懊ッ縺ァ縺阪∪縺帙s縲 + ERROR_NOT_FIND_ARC_FILE=0x8029,// 謖螳壹&繧後◆繝繧」繝ャ繧ッ繝医Μ縺ォ縺ッ譖ク蠎ォ縺後≠繧翫∪縺帙s縺ァ縺励◆縲 + ERROR_RESPONSE_READ=0x802A,// 繝ャ繧ケ繝昴Φ繧ケ繝輔ぃ繧、繝ォ縺ョ隱ュ縺ソ霎シ縺ソ譎ゅ↓繧ィ繝ゥ繝シ縺檎函縺倥∪縺励◆縲 + ERROR_TMP_COPY=0x802C,// 菴懈・ュ繝輔ぃ繧、繝ォ縺ョ譖ク蠎ォ縺ク縺ョ譖ク縺肴綾縺励′縺ァ縺阪∪縺帙s縺ァ縺励◆縲 + ERROR_NOT_FIND_FILE=0x8031,// 繝輔ぃ繧、繝ォ縺瑚ヲ九▽縺九j縺セ縺帙s縲 + ERROR_GET_ATTRIBUTES=0x8034,// 繝輔ぃ繧、繝ォ螻樊ァ縺悟叙蠕励〒縺阪∪縺帙s縲 + ERROR_GET_INFORMATION=0x8036,// 繝輔ぃ繧、繝ォ諠蝣ア縺悟叙蠕励〒縺阪∪縺帙s縲 +} + +//---------------------------------------------------------------- +// 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ョ霑皮ュ皮畑蝙 +//---------------------------------------------------------------- + +enum BgaAnswer +{ + MeltIt, SkipIt, Abort +} + +//---------------------------------------------------------------- +// Filep +// D險隱槭i縺励°繧峨〓縺ョ縺ァ縺吶′zlib繧libbz2縺ィ邁。蜊倥↓騾」謳コ縺吶k +// 驛ス蜷井ク郭td.c.stdio.FILE*縺ァ繝輔ぃ繧、繝ォ繧定ェュ縺ソ譖ク縺阪@縺セ縺吶 +//---------------------------------------------------------------- + +extern(C) +{ + // stdio.h + int fileno( FILE *fp ) { return fp._file; } + // io.h + int lseek( int fd, int offset, int mode ); + int dup( int fd ); + int close( int fd ); +} + +class Filep +{ + private FILE* fp; + private this( FILE* p ) { fp = p; } + + static Filep open( char[] filename, bool read ) + { + FILE* fp = fopen( toStringz(filename), read?"rb":"wb" ); + return (fp ? new Filep(fp) : null); + } + + int dup_han() + { + int fd = dup( fileno(fp) ); + lseek( fd, cur(), 0 ); + return fd; + } + + void[] read( int siz ) + { + char[] buf; buf.length = siz; + int rsiz = fread( buf, 1, siz, fp ); + if( rsiz < 0 ) + throw new BgaMelterError(ERROR_FILE_OPEN); + buf.length = rsiz; + return buf; + } + + void write( void[] buf ) + { + while( buf.length > 0 ) + { + int rsiz = fwrite( buf, 1, buf.length, fp ); + if( rsiz < 0 ) return; + buf = buf[rsiz .. length]; + } + } + + int cur() + { + return ftell(fp); + } + + void seek_to( int i ) + { + fseek( fp, i, std.c.stdio.SEEK_SET ); + } + + void close() + { + fclose(fp); + } + + FILE* get_fp() + { + return fp; + } +} + + +//---------------------------------------------------------------- +// 繝。繧、繝ウ繧ッ繝ゥ繧ケ +//---------------------------------------------------------------- + +class BgaMelter +{ + alias BgaAnswer delegate(inout BgaHeader) FileHandler; + alias BgaAnswer delegate(int, int) ProgressHandler; + + private Filep fp = null; + + this( char[] arc_name ) + { + fp = Filep.open( arc_name, true ); + if( fp is null ) + throw new BgaMelterError(ERROR_FILE_OPEN); + } + + void close() + { + if( fp ) { fp.close(); fp = null; } + } + + void start( FileHandler fh, ProgressHandler ph ) + { + try + { + // 繝倥ャ繝繧呈爾縺 + int hpos = find_header(); + if( hpos == -1 ) + throw new BgaMelterError(ERROR_NOT_ARC_FILE); + fp.seek_to(hpos); + + // 繝ォ繝シ繝暦シ + // 繝倥ャ繝隱ュ縺ソ縺ィ繧 + BgaHeader hdr; + while( read_header(hdr) ) + { + // 谺。縺ョ繝倥ャ繝菴咲スョ繧定ィ育ョ励@縺ヲ縺翫¥ + uint nextpos = fp.cur() + hdr.compressed_size; + try + { + // callback + BgaAnswer a = fh(hdr); + if( a == BgaAnswer.Abort ) return; + if( a == BgaAnswer.SkipIt ) continue; + + // 蜃コ蜉帛医ヵ繧。繧、繝ォ繧帝幕縺 + if( lastChar(hdr.fname)=='\\' ) + { pathMake(hdr.fname); continue; } + + Filep outf = Filep.open( pathMake(hdr.fname), false ); + if( outf is null ) + throw new BgaMelterError(ERROR_FILE_OPEN); + + // 隗」蜃榊ヲ逅 + bool bContinue = true; + if( !is_compressed(hdr) ) + bContinue = NcDec( hdr.original_size, outf, ph ); + else if( hdr.method == "GZIP" ) + bContinue = GzDec( hdr.compressed_size, hdr.original_size, outf, ph ); + else if( hdr.method == "BZ2\0" ) + bContinue = BzDec( hdr.original_size, outf, ph ); + + // 髢峨§縺ヲ螻樊ァ險ュ螳 + outf.close(); + dosSetFTime( hdr.fname, hdr.date, hdr.time ); + SetFileAttributes( hdr.fname, hdr.attrib ); + if( !bContinue ) + return; + } + finally { fp.seek_to(nextpos); } + } + } + finally { close(); } + } + + static int signed_char( char c ) + { + int cn = c; + return (cn>=0x80 ? cn|0xffffff00 : cn); + } + + private int find_header() + { + char[] dat = cast(char[]) fp.read(0x10000); + + for( int i=0; i dat.length ) continue; + + int sum = 0; + for( int j=i+4; j!=i+28+fnlen; ++j ) + sum += signed_char(dat[j]); + if( checksum == sum ) + return i; + } + + return -1; + } + + private bool read_header( out BgaHeader hdr ) + { + // 繝ェ繝医Ν繧ィ繝ウ繝繧」繧「繝ウ繧剃サョ螳壹ゅ倥ャ繝隱ュ縺ソ霎シ縺ソ + char[] buf = cast(char[]) fp.read(28); + if( buf.length < 28 ) return false; + buf.length = BgaHeader.sizeof; + hdr = (cast(BgaHeader[]) buf)[0]; + hdr.fname = ""; + + // 繝輔ぃ繧、繝ォ蜷 + hdr.fname = cast(char[]) 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]); + foreach( char c ; hdr.fname ) sum += signed_char(c); + return (sum == hdr.checksum); + } + + private bool is_compressed( inout BgaHeader hdr ) // inout=just for optimization + { + // 繝倥ャ繝縺九i縲√ヵ繧。繧、繝ォ縺悟悸邵ョ譬シ邏阪&繧後※縺繧九°縺ゥ縺縺九r蛻、螳 + if( hdr.arc_type==2 ) + return false; + if( hdr.arc_type==0 && hdr.compressed_size==hdr.original_size ) + { + int x = rfind( hdr.fname, '.' ); + if( x == -1 ) + return true; + char[] ext = tolower(hdr.fname[x+1 .. length]); + if( ext=="arc" || ext=="arj" || ext=="bz2" || ext=="bza" + || ext=="cab" || ext=="gz" || ext=="gza" || ext=="lzh" + || ext=="lzs" || ext=="pak" || ext=="rar" || ext=="taz" + || ext=="tbz" || ext=="tgz" || ext=="z" || ext=="zip" + || ext=="zoo" ) + return false; + } + return true; + } + + static char[] pathMake( char[] path ) + { + char* ps = toStringz(path); + for(char* p=ps;;) + { + for(; *p!=0&&*p!='\\'&&*p!='/'; p=CharNext(p)) {} + if( *p==0 ) + break; + CreateDirectory( toStringz(ps[0..(p-ps)]), null ); + ++p; + } + return path; + } + + enum { BUFSIZ = 65536 } + + private bool NcDec( uint usiz, Filep outf, ProgressHandler ph ) + { + uint init_usiz = usiz; + + // 髱槫悸邵ョ縲ゅさ繝斐シ縺吶k縺縺 + while( usiz ) + { + char[] r = cast(char[]) fp.read( BUFSIZ 0 ) + { + err = etc.c.zlib.inflate( &zs, Z_PARTIAL_FLUSH ); + if( err!=Z_STREAM_END && err!=Z_OK ) + csiz=0; + if( !csiz ) + break; + + if( zs.avail_in<=0 ) + { + inbuf = cast(ubyte[]) fp.read( csiz<65536 ? csiz : 65536 ); + csiz -= inbuf.length; + zs.next_in = inbuf; + zs.avail_in = inbuf.length; + + if( inbuf.length==0 ) + { + err = Z_STREAM_END; + csiz = 0; + break; + } + } + } + + int written = outbuf.length - zs.avail_out; + if( usiz < written ) written = usiz; + usiz -= written; + outf.write( outbuf[0..written] ); + zs.next_out = outbuf; + zs.avail_out = outbuf.length; + + // dlg + if( BgaAnswer.Abort==ph(init_usiz-usiz,usiz) ) return false; + } + + // 蜃コ蜉帶ョ九@繧堤┌縺上☆縲 + while( err!=Z_STREAM_END&&usiz ) + { + err = etc.c.zlib.inflate(&zs,Z_PARTIAL_FLUSH); + if( err!=Z_STREAM_END && err!=Z_OK ) + break; + + int written = outbuf.length - zs.avail_out; + if( usiz < written ) written = usiz; + usiz -= written; + outf.write( outbuf[0..written] ); + zs.next_out = outbuf; + zs.avail_out = outbuf.length; + + // dlg + if( BgaAnswer.Abort==ph(init_usiz-usiz,usiz) ) return false; + } + + // 邨ゆコ + } finally { inflateEnd(&zs); } + + // dlg + if( BgaAnswer.Abort==ph(init_usiz-usiz,usiz) ) return false; + return true; + } + + private bool BzDec( uint usiz, Filep outf, ProgressHandler ph ) + { + uint init_usiz = usiz; + + // libbz2縺ァ螻暮幕 + int err; + BZFILE* b = BZ2_bzReadOpen( &err, fp.get_fp(), 0, 0, NULL, 0 ); + if( err!=BZ_OK || b is null ) + return true; + + try + { + char[] buf; buf.length = BUFSIZ; + int len; + while( 0<(len=BZ2_bzRead( &err, b, buf, BUFSIZ command 縺ッ繧ウ繝槭Φ繝峨Λ繧、繝ウ縺ョ譛蛻昴ョ蠑墓焚縺ィ縺励※縺上□縺輔>縲ゅ↑縺翫…ommand 繧堤怐逡・ + // > 縺励◆蝣エ蜷医ッ 'x' command 縺梧欠螳壹&繧後◆繧ゅョ縺ィ縺ソ縺ェ縺励∪縺吶 + if( cmd.length == 0 ) + return UNSUPPORTED; + if( cmd[0].length == 1 ) + { + if( 0 <= find("adjlmnstvADJLMNSTV", cmd[0][0]) ) + return UNSUPPORTED; + if( cmd[0][0]=='x' || cmd[0][0]=='X' ) + cmd = cmd[1 .. length]; + } + + // 窶サ 縺薙ョ譎らせ縺ァ縲…md縺ォ縺ッcommand繧帝勁縺縺滓ョ九j縺ョ蠑墓焚縺悟・縺」縺ヲ縺繧九ッ縺 + + // + // 繧ケ繧、繝繝∬ァ」譫舌∝シ墓焚隗」譫 + // + bool all_attrs = false; // -a + bool silent = false; // -i + bool ignore_dir = false; // -j + bool newfile_only = false; // -n + bool force_overwrite = false; // -o + bool recursive = false; // -r + bool sanitize_path = true; + + char[] arc_name = null; + char[] base_dir = null; + char[][] paths; + + foreach( char[] param ; cmd ) + if( param[0] == '-' ) + switch( param[1] ) + { + case 'a','A': all_attrs = true; break; + case 'i','I': silent = true; break; + case 'j','J': ignore_dir = true; break; + case 'n','N': newfile_only = true; break; + case 'o','O': force_overwrite = true; break; + case 'r','R': recursive = true; break; + default: break; + } + else if( arc_name is null ) + { + arc_name = param; + } + else if( base_dir is null ) + { + if( lastChar(param) == '\\' ) + base_dir = param; + else { + base_dir.length = GetCurrentDirectory(0,null)+1; + GetCurrentDirectory(base_dir.length, base_dir); + base_dir.length = strlen(base_dir); + if( lastChar(base_dir) != '\\' ) + base_dir ~= '\\'; + } + } + else + paths ~= param; + + // + // 螻暮幕蜃ヲ逅縺ォGo! + // + ProgressDlg dlg = null; + if( !do_ownerwnd_proc( OP_ARC_BEGIN, null, 0, arc_name ) ) + return 0x8020; + + try + { + if( !silent && g_handler is null ) // -i / OwnerWndProc + { + dlg = new ProgressDlg( + cast(DLGTEMPLATE*) g_orig_dll.load_dialog("#2025"), wnd ); + dlg.set_arcname(arc_name); + } + + char[] src_fname; // OwnerWndProc髢「菫 + BgaHeader cur_hdr; // OwnerWndProc髢「菫 + + BgaAnswer handler( inout BgaHeader hdr ) + { + src_fname = hdr.fname; + process_messages(); + + // paths + if( paths.length > 0 ) + { + char[] fname = // -r + (recursive ? hdr.fname[hdr.dir_name_len..length] + : hdr.fname); + foreach( char[] w ; paths ) + if( wild_match( w, fname ) ) + goto ok; + return BgaAnswer.SkipIt; + ok:; + } + // -a + if( !all_attrs && (hdr.attrib&6) ) + return BgaAnswer.SkipIt; + // dialog + if( dlg ) + if( dlg.closed ) + return BgaAnswer.Abort; + else + dlg.set_filename( hdr.fname[hdr.dir_name_len .. length] ); + // -j + if( ignore_dir ) + hdr.fname = hdr.fname[hdr.dir_name_len .. length]; + // sanitize + if( sanitize_path ) + hdr.fname = check_path(hdr.fname); + // base_dir + hdr.fname = base_dir ~ hdr.fname; + // -o + if( !force_overwrite ) + try { + if( std.file.exists(hdr.fname) && std.file.isfile(hdr.fname) ) + // -n + if( newfile_only ) + { + if( newer_than(hdr.date,hdr.time,hdr.fname) ) + return BgaAnswer.SkipIt; + } + else + { + int r = MessageBox( dlg?dlg.hwnd:wnd, + toStringz("Overwrite "~hdr.fname~" ?"), + "QBga32.dll", MB_YESNOCANCEL ); + if( r == IDNO ) return BgaAnswer.SkipIt; + if( r == IDCANCEL ) return BgaAnswer.Abort; + } + } catch {} + + cur_hdr = hdr; + if( !do_ownerwnd_proc( OP_FILE_BEGIN, &cur_hdr, 0, src_fname ) ) + return BgaAnswer.Abort; + return BgaAnswer.MeltIt; + } + + BgaAnswer progress_handler( int cur, int max ) + { + process_messages(); + if( dlg ) + if( dlg.closed ) + return BgaAnswer.Abort; + else + dlg.set_pos( cast(real)(cur)/max ); + if( !do_ownerwnd_proc( OP_FILE_MIDDLE, &cur_hdr, cur, src_fname ) ) + return BgaAnswer.Abort; + return BgaAnswer.MeltIt; + } + + (new BgaMelter(arc_name)).start(&handler,&progress_handler); + } + catch( BgaMelterError e ) + { + return e.errcode; + } + finally + { + do_ownerwnd_proc( OP_ARC_END, null, 0, arc_name ); + if( dlg ) + dlg.close(); + } + return 0; +} + +//---------------------------------------------------------------- +// 邨ア蜷医い繝シ繧ォ繧、繝植PIシ壼ョ溯」( SetOwnerWindow ) +//---------------------------------------------------------------- + +align(1) struct EXTRACTINGINFO +{ + DWORD dwFileSize; + DWORD dwWriteSize; + char szSourceFileName[512 + 1]; + char dummy1[3]; + char szDestFileName[512 + 1]; + char dummy[3]; +} +align(1) struct EXTRACTINGINFOEX +{ + EXTRACTINGINFO exinfo; + DWORD dwCompressedSize; + DWORD dwCRC; + UINT uOSType; + WORD wRatio; + WORD wDate; + WORD wTime; + char szAttribute[8]; + char szMode[8]; +} + +HWND g_owner_window; +extern(Windows) BOOL function(HWND,UINT,UINT,EXTRACTINGINFOEX*) g_handler; +extern(Windows) BOOL noex_handler( HWND w,UINT m,UINT s, EXTRACTINGINFOEX* e ) +{ + return !SendMessage( w, m, s, cast(LPARAM) &e.exinfo ); +} + +void BgaSetOwnerWindow_impl( HWND wnd ) +{ + g_owner_window = wnd; + g_handler = &noex_handler; +} + +void BgaClearOwnerWindow_impl() +{ + g_owner_window = null; + g_handler = null; +} + +void BgaSetOwnerWindowEx_impl( HWND wnd, ARCHIVERPROC* proc ) +{ + g_owner_window = wnd; + g_handler = *proc; +} + +enum { OP_FILE_BEGIN, OP_FILE_MIDDLE, OP_ARC_END, OP_ARC_BEGIN } +bool do_ownerwnd_proc( UINT uState, BgaHeader* hdr, int cur, char[] src_fname ) +{ + if( g_handler is null ) + return true; + EXTRACTINGINFOEX ex; + if( uState == OP_ARC_BEGIN || uState == OP_ARC_END ) + { + lstrcpyn( ex.exinfo.szSourceFileName, toStringz(src_fname), 512 ); + } + else + { + ex.exinfo.dwFileSize = hdr.original_size; + ex.exinfo.dwWriteSize = cur; + lstrcpyn( ex.exinfo.szSourceFileName, toStringz(src_fname), 512 ); + lstrcpyn( ex.exinfo.szDestFileName, toStringz(hdr.fname), 512 ); + ex.dwCompressedSize = hdr.compressed_size; + ex.wRatio = cast(int)( (cast(real)hdr.compressed_size)/hdr.original_size*1000 ); + ex.wDate = hdr.date; + ex.wTime = hdr.time; + ex.szAttribute[0] = (hdr.attrib&32 ? 'A': '-'); + ex.szAttribute[1] = (hdr.attrib&1 ? 'R': '-'); + ex.szAttribute[2] = (hdr.attrib&2 ? 'H': '-'); + ex.szAttribute[3] = (hdr.attrib&4 ? 'S': '-'); + ex.szAttribute[4] = (hdr.attrib&16 ? 'D': '-'); + ex.szAttribute[5] = '\0'; + if( hdr.method[0]=='G' ) + lstrcpy(ex.szMode,"-gzip-"); + else + lstrcpy(ex.szMode,"-bzip2-"); + } + + return false != g_handler( g_owner_window, WM_ARCEXTRACT, uState, &ex ); +} + +//---------------------------------------------------------------- +// 繝代せ讀懈渊邉サ +//---------------------------------------------------------------- + +alias std.c.windows.windows.IsDBCSLeadByte isDL; +char[] replace_yen( char[] s ) +{ + char[] ans; + int j=0; + for(int i=0; i!=s.length; i=i+(isDL(s[i])?2:1)) + if( s[i] == '\\' ) + ans~=s[j .. i], ans~='/', j=i+1; + ans ~= s[j .. length]; + return ans; +} + +bool wild_match( char[] wild, char[] name ) +{ + bool wild_match_nopath( char[] w, char[] s ) + { + char[] advance( char[] s ) + { + return s[(IsDBCSLeadByte(s[0])?2:1) .. length]; + } + + while( w.length>0 ) + switch( w[0] ) + { + case '?': + if( s.length==0 ) + return false; + w = advance(w); + s = advance(s); + break; + case '*': + if( s.length==0 ) + return false; + w = advance(w); + if( w.length == 0 ) + return true; + for( ; s.length!=0; s=advance(s) ) + if( wild_match_nopath(w,s) ) + return true; + return false; + default: + if( s.length==0 ) + return false; + if( isDL(w[0]) ) + { if( w[0..2] != s[0..2] ) return false; } + else + { if( w[0] != s[0] ) return false; } + w = advance(w); + s = advance(s); + break; + } + return s.length==0; + } + + if( wild=="" || wild=="*.*" || wild=="*" || wild=="**" ) + return true; + + char[][] wilds = split( replace_yen( tolower(wild) ), "/" ); + char[][] names = split( replace_yen( tolower(name) ), "/" ); + + if( wilds.length != names.length ) + return false; + for(int i=0; i!=wilds.length; ++i) + if( wilds[i]!="*.*" && wilds[i]!="*" && wilds[i]!="**" ) + if( !wild_match_nopath( wilds[i], names[i] ) ) + return false; + return true; +} + +char[] check_path( char[] path ) +{ + // C:\ ==> C_\ + if( path.length>=2 && path[1]==':' ) + path = path.dup, path[1] = '_'; + + // \\hoge ==> hoge + // /hoge ==> hoge + while( path.length>0 && (path[0]=='\\'||path[0]=='/') ) + path = path[1..length]; + + // .. ==> __ + char[][] paths = split( replace_yen(path), "/" ); + L1: + foreach( inout char[] pc ; paths ) + if( pc.length >= 2 ) + { + foreach( char c ; pc ) + if( c != '.' ) + continue L1; + pc = replace( pc, ".", "_" ); + } + + return join( paths, "\\" ); +} + + + +//---------------------------------------------------------------- +// 邁。譏薙ユ繧ケ繝茨シ繧ゅ▲縺ィ繝槭ず繝。縺ォ譖ク縺九↑縺阪c窶ヲ +//---------------------------------------------------------------- + +unittest +{ + assert( check_path(`\\\\hoge\fuga`)==`hoge\fuga` ); + assert( check_path(`/usr/local/`)==`usr\local\` ); + assert( check_path(`..\abc def\...\.\g`)==`__\abc def\___\.\g` ); + assert( wild_match(`a/b/c`,`A\b\C`) ); + assert( wild_match(`a/*.*/a?x`,`A\hoge\Afx`) ); + assert( Bga_impl(null,"a hoge") < 0 ); +} ADDED src/qbga32.def Index: src/qbga32.def ================================================================== --- src/qbga32.def +++ src/qbga32.def @@ -0,0 +1,29 @@ +LIBRARY QBGA32 +DESCRIPTION 'Quasi Bga32 DLL' + +EXETYPE NT +CODE PRELOAD DISCARDABLE +DATA PRELOAD SINGLE + +EXPORTS + Bga @1 + BgaGetVersion @2 + BgaGetRunning @10 + BgaCheckArchive @11 + BgaConfigDialog @12 + BgaGetFileCount @17 + BgaQueryFunctionList @18 + BgaOpenArchive @21 + BgaCloseArchive @22 + BgaFindFirst @23 + BgaFindNext @24 + BgaGetArcOriginalSize @33 + BgaGetArcCompressedSize @34 + BgaGetArcRatio @35 + BgaSetOwnerWindow @90 + BgaClearOwnerWindow @91 + BgaSetOwnerWindowEx @51 + BgaKillOwnerWindowEx @52 + BgaSetEnumMembersProc @99 + BgaClearEnumMembersProc @100 + QBgaGetVersion @178 ADDED src/qbga_gui.d Index: src/qbga_gui.d ================================================================== --- src/qbga_gui.d +++ src/qbga_gui.d @@ -0,0 +1,175 @@ +サソprivate import std.string; +private import win32.ansi.windows; +private import win32.ansi.commctrl; +private import qbga32; + +void process_messages() +{ + for( MSG msg; PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ); ) + { + TranslateMessage( &msg ); + DispatchMessage( &msg ); + } +} + +// 螳溯」邯呎価(w + +class Dialog +{ +public: + HWND hwnd() + { + return handle; + } + +protected: + void on_init() { MessageBox(null,"xxx",null,MB_OK); } + 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; } + + extern(Windows) private static BOOL + static_dlg_proc( HWND dlg, UINT msg, WPARAM wp, LPARAM lp ) + { + if( msg == WM_INITDIALOG ) + { + SetWindowLong( dlg, GWL_USERDATA, lp ); + + Dialog ptr = cast(Dialog) cast(Dialog*) lp; + ptr.handle = dlg; + ptr.on_init(); + return FALSE; + } + + Dialog ptr = cast(Dialog) cast(Dialog*) GetWindowLong(dlg,GWL_USERDATA); + if( ptr is null ) + return FALSE; + + if( msg == WM_COMMAND ) + if( LOWORD(wp) == IDOK ) + return ptr.on_ok(); + else if( LOWORD(wp) == IDCANCEL ) + return ptr.on_cancel(); + else + return ptr.on_command( LOWORD(wp) ); + return ptr.on_message(msg,wp,lp); + } + +protected: + HWND handle; + void BeginModeless( DLGTEMPLATE* dlg_template, HWND parent ) + { + CreateDialogIndirectParam( + g_hinst, + dlg_template, + parent, + &static_dlg_proc, + cast(LPARAM) cast(Dialog*) this + ); + } + + int BeginModal( DLGTEMPLATE* dlg_template, HWND parent ) + { + return DialogBoxIndirectParam( + g_hinst, + dlg_template, + parent, + &static_dlg_proc, + cast(LPARAM) cast(Dialog*) this + ); + } + + void set_item_text( int ID, char[] str ) + { + SetDlgItemText( handle, ID, toStringz(str) ); + } + + int send_item_msg( int ID, UINT msg, WPARAM wp=0, LPARAM lp=0 ) + { + return SendDlgItemMessage( handle, ID, msg, wp, lp ); + } +} + +//------------------------------------------------------------ +// #2025 [繝輔ぃ繧、繝ォ繧呈桃菴應クュ] +// 2006 : 譖ク蠎ォ蜷 +// 2007 : 繝輔ぃ繧、繝ォ蜷搾シ医ヱ繧ケ辟。縺暦シ +// 2024 : 繝励Ο繧ー繝ャ繧ケ繝舌シ +// 2 : 繧ュ繝」繝ウ繧サ繝ォ繝懊ち繝ウ +//------------------------------------------------------------ + +class ProgressDlg : Dialog +{ + this( DLGTEMPLATE* dlg_template, HWND parent ) + { + BeginModeless( dlg_template, parent ); + } + + void set_arcname ( char[] str ){ set_item_text( 2006, str ); } + void set_filename( char[] str ){ set_item_text( 2007, str ); } + void set_max( real m ) { max = m; } + void set_pos( real p ) { send_item_msg(2024,PBM_SETPOS,cast(int)(p/max*65535),0); } + + bool closed() + { + return !alive; + } + + void close() + { + if( !closed ) + on_cancel(); + } + +protected: + bool alive = false; + real max = 1.0; + + override void on_init() + { + alive = true; + send_item_msg( 2024, PBM_SETRANGE, 0, MAKELPARAM(0,65535) ); + + // 繧サ繝ウ繧ソ繝ェ繝ウ繧ー + RECT rc,pr; + GetWindowRect( handle, &rc ); + HWND par = GetParent(handle); + if( par ) + GetWindowRect( par, &pr ); + else + SystemParametersInfo( SPI_GETWORKAREA, 0, &pr, 0 ); + SetWindowPos( handle, null, + pr.left + ( (pr.right-pr.left)-(rc.right-rc.left) )/2, + pr.top + ( (pr.bottom-pr.top)-(rc.bottom-rc.top) )/2, + 0, 0, SWP_NOSIZE|SWP_NOZORDER ); + + // 陦ィ遉コ + ShowWindow(handle,SW_SHOW); + UpdateWindow(handle); + } + + override bool on_cancel() + { + alive = false; + DestroyWindow(handle); + return true; + } +} + +//------------------------------------------------------------ +// #2000 [繝輔ぃ繧、繝ォ縺ョ荳頑嶌縺咲「コ隱江 +// 2006 譖ク蠎ォ蜀繝輔ぃ繧、繝ォ蜷 +// 2009 繝輔ぃ繧、繝ォ繧オ繧、繧コ 564,590 Byte +// 2010 譖エ譁ー譌・譎 2004\08\27 03:57:18 +// 2007 螟夜Κ繝輔ぃ繧、繝ォ蜷 +// 2011 繝輔ぃ繧、繝ォ繧オ繧、繧コ +// 2012 譖エ譁ー譌・譎 +// +// 2002:荳頑嶌縺 2004:譌・莉倥′譁ー縺励¢繧後ー荳頑嶌縺 2003:荳頑嶌縺阪@縺ェ縺 +// +// 1: OK繝懊ち繝ウ +// 2005: 莉・髯榊ィ縺ヲ縺ォ驕ゥ逕ィ繝懊ち繝ウ +// 2: 繧ュ繝」繝ウ繧サ繝ォ繝懊ち繝ウ +//------------------------------------------------------------ + ADDED src/util.d Index: src/util.d ================================================================== --- src/util.d +++ src/util.d @@ -0,0 +1,184 @@ +サソprivate import std.string; +private import std.file; +private import win32.ansi.windows; + +char lastChar( char[] s ) + { return *CharPrev(s, cast(char*)s+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 ); +} + +//---------------------------------------------------------------- +// 繧ウ繝槭Φ繝峨Λ繧、繝ウ隗」譫 +//---------------------------------------------------------------- + +char[][] cmd_parse( char[] str, bool in_resp=false ) +{ + char[][] ans; + char resp_char = '@'; + + for(int i=0; i!=str.length; ) + { + // 遨コ逋ス繧ケ繧ュ繝繝 + while( i!=str.length && 0<=str[i] && str[i]<=' ' ) + ++i; + if( i == str.length ) + break; + + // ""繧定諷ョ縺励※荳蛟九ヱ繝ゥ繝。繧ソ蛻繧雁コ縺 + char[] param; + if( str[i] == '"' ) + { + int j = ++i; + while( j!=str.length ) + { + if( str[j]=='"' && + (j+1==str.length || 0<=str[j+1] && str[j+1]<=' ') ) + break; + ++j; + } + param = str[i .. j]; + i = (j==str.length ? j : j+1); + } + else + { + int j=i; + while( j!=str.length && (str[j]<0 || ' '=2 && param[0..2]=="--" ) + { + resp_char = (param.length==2 ? '\0' : param[2]); + } + else + { + ans ~= param; // 譎ョ騾壹↓繝代Λ繝。繧ソ霑ス蜉 + } + } + return ans; +} + +//---------------------------------------------------------------- +// DOS蠖「蠑上〒繝輔ぃ繧、繝ォ髻ウ譖エ譁ー譎ょ綾繧呈嶌縺肴鋤縺 +//---------------------------------------------------------------- + +void dosSetFTime( char[] fname, ushort date, ushort time ) +{ + FILETIME ft,lc; + if( DosDateTimeToFileTime( date, time, &lc ) ) + if( LocalFileTimeToFileTime( &lc, &ft ) ) + { + HANDLE han = CreateFile( toStringz(fname), + GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ,NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL ); + if( han==INVALID_HANDLE_VALUE ) + return; + + SetFileTime( han,&ft,NULL,&ft ); + CloseHandle( han ); + } +} + +//---------------------------------------------------------------- +// 謖螳壽凾蛻サ(DOS蠖「蠑)繧医j譁ー縺励>繝輔ぃ繧、繝ォ縺具シ +//---------------------------------------------------------------- + +bool newer_than( ushort d1, ushort t1, char[] fname ) +{ + HANDLE han = CreateFile( toStringz(fname), + GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ,NULL, + OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, + NULL ); + if( han==INVALID_HANDLE_VALUE ) + return false; + FILETIME ft; + GetFileTime( han, null, null, &ft ); + CloseHandle( han ); + + FILETIME lc; + FileTimeToLocalFileTime( &ft, &lc ); + ushort d2, t2; + FileTimeToDosDateTime( &lc, &d2, &t2 ); + + if( d1 < d2 ) + return true; + if( d1 == d2 ) + return (t1 < t2); + return false; +} + ADDED src/win32/ansi/commctrl.d Index: src/win32/ansi/commctrl.d ================================================================== --- src/win32/ansi/commctrl.d +++ src/win32/ansi/commctrl.d @@ -0,0 +1,7600 @@ +module win32.ansi.commctrl; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winuser; +alias void _PSP; +alias void _IMAGELIST; +alias void _TREEITEM; +alias LPTBSAVEPARAMW LPTBSAVEPARAMSW; +alias PCCOMBOEXITEMA PCCOMBOBOXEXITEMA; +alias PCCOMBOEXITEMW PCCOMBOBOXEXITEMW; +enum : uint { + NM_FIRST = 0, + SB_SETTIPTEXTA = WM_USER + 16, + SB_SETTIPTEXTW = WM_USER + 17, + SB_GETTIPTEXTA = WM_USER + 18, + SB_GETTIPTEXTW = WM_USER + 19, + TVHT_ONITEMSTATEICON = 0x0040, + CBEN_FIRST = 0U - 800U, + CBEN_GETDISPINFOA = CBEN_FIRST - 0, + CBEN_GETDISPINFOW = CBEN_FIRST - 7 +} +// inline #include +// ---- + +// #ifndef _PRSHT_H_ +// #define _PRSHT_H_ + +// #ifndef _WINRESRC_ +// #ifndef _WIN32_IE +// #... +// #else +// #if (_WIN32_IE < 0x0400) && defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0500) +// #... +// #endif +// #endif +// #endif + +// #ifndef WINCOMMCTRLAPI +// #if !defined(_COMCTL32_) && defined(_WIN32) +// #define WINCOMMCTRLAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #endif // WINCOMMCTRLAPI + +// #ifndef CCSIZEOF_STRUCT +// #define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) +// #endif + +// #ifndef DUMMYUNIONNAME +// #ifdef NONAMELESSUNION +// #... +// #... +// #... +// #... +// #... +// #else +// #define DUMMYUNIONNAME +// #define DUMMYUNIONNAME2 +// #define DUMMYUNIONNAME3 +// #define DUMMYUNIONNAME4 +// #define DUMMYUNIONNAME5 +// #endif +// #endif // DUMMYUNIONNAME + +// #ifdef _WIN64 +// #... +// #else +align(4): +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef SNDMSG +// #ifdef __cplusplus +// #ifndef _MAC +// #define SNDMSG ::SendMessage +// #else +// #... +// #endif +// #else +// #ifndef _MAC +// #... +// #else +// #... +// #endif +// #endif +// #endif // ifndef SNDMSG + +enum : uint { MAXPROPPAGES = 100 } + +// struct _PSP; +alias _PSP* HPROPSHEETPAGE; + +// #ifndef MIDL_PASS +// struct _PROPSHEETPAGEA; +// struct _PROPSHEETPAGEW; +// #endif + +extern(Windows) alias UINT function(HWND hwnd, UINT uMsg, _PROPSHEETPAGEA *ppsp) LPFNPSPCALLBACKA; +extern(Windows) alias UINT function(HWND hwnd, UINT uMsg, _PROPSHEETPAGEW *ppsp) LPFNPSPCALLBACKW; + +// #ifdef UNICODE +// #... +// #else +alias LPFNPSPCALLBACKA LPFNPSPCALLBACK; +// #endif + +enum : uint { PSP_DEFAULT = 0x00000000 } +enum : uint { PSP_DLGINDIRECT = 0x00000001 } +enum : uint { PSP_USEHICON = 0x00000002 } +enum : uint { PSP_USEICONID = 0x00000004 } +enum : uint { PSP_USETITLE = 0x00000008 } +enum : uint { PSP_RTLREADING = 0x00000010 } + +enum : uint { PSP_HASHELP = 0x00000020 } +enum : uint { PSP_USEREFPARENT = 0x00000040 } +enum : uint { PSP_USECALLBACK = 0x00000080 } +enum : uint { PSP_PREMATURE = 0x00000400 } + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { PSP_HIDEHEADER = 0x00000800 } +enum : uint { PSP_USEHEADERTITLE = 0x00001000 } +enum : uint { PSP_USEHEADERSUBTITLE = 0x00002000 } + +// #endif +// #if (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED +enum : uint { PSP_USEFUSIONCONTEXT = 0x00004000 } +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { PSPCB_ADDREF = 0 } +// #endif +enum : uint { PSPCB_RELEASE = 1 } +enum : uint { PSPCB_CREATE = 2 } + +// #define PROPSHEETPAGEA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, pcRefParent) +// #define PROPSHEETPAGEW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, pcRefParent) + +// #define PROPSHEETPAGEA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, pszHeaderSubTitle) +// #define PROPSHEETPAGEW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, pszHeaderSubTitle) + +// #ifdef _WIN32 +alias LPCDLGTEMPLATE PROPSHEETPAGE_RESOURCE; +// #else +// ... +// #endif + +// #define PROPSHEETPAGEA_V1_FIELDS DWORD dwSize; DWORD dwFlags; HINSTANCE hInstance; union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } DUMMYUNIONNAME; union { HICON hIcon; LPCSTR pszIcon; } DUMMYUNIONNAME2; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent; +// #define PROPSHEETPAGEW_V1_FIELDS DWORD dwSize; DWORD dwFlags; HINSTANCE hInstance; union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } DUMMYUNIONNAME; union { HICON hIcon; LPCWSTR pszIcon; } DUMMYUNIONNAME2; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent; +// #if (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED +alias _PROPSHEETPAGEA_V3 _PROPSHEETPAGEA; +alias _PROPSHEETPAGEW_V3 _PROPSHEETPAGEW; +// #elif (_WIN32_IE >= 0x0400) +// #... +// #... +// #else +// #... +// #... +// #endif + +struct _PROPSHEETPAGEA_V1 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; +} +alias _PROPSHEETPAGEA_V1 PROPSHEETPAGEA_V1; +alias _PROPSHEETPAGEA_V1* LPPROPSHEETPAGEA_V1; + +alias PROPSHEETPAGEA_V1* LPCPROPSHEETPAGEA_V1; + +struct _PROPSHEETPAGEA_V2 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; + + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; +} +alias _PROPSHEETPAGEA_V2 PROPSHEETPAGEA_V2; +alias _PROPSHEETPAGEA_V2* LPPROPSHEETPAGEA_V2; + +alias PROPSHEETPAGEA_V2* LPCPROPSHEETPAGEA_V2; + +struct _PROPSHEETPAGEA_V3 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; + + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; + + HANDLE hActCtx; +} +alias _PROPSHEETPAGEA_V3 PROPSHEETPAGEA_V3; +alias _PROPSHEETPAGEA_V3* LPPROPSHEETPAGEA_V3; + +alias PROPSHEETPAGEA_V3* LPCPROPSHEETPAGEA_V3; + +struct _PROPSHEETPAGEW_V1 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; +} +alias _PROPSHEETPAGEW_V1 PROPSHEETPAGEW_V1; +alias _PROPSHEETPAGEW_V1* LPPROPSHEETPAGEW_V1; + +alias PROPSHEETPAGEW_V1* LPCPROPSHEETPAGEW_V1; + +struct _PROPSHEETPAGEW_V2 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; + + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; +} +alias _PROPSHEETPAGEW_V2 PROPSHEETPAGEW_V2; +alias _PROPSHEETPAGEW_V2* LPPROPSHEETPAGEW_V2; + +alias PROPSHEETPAGEW_V2* LPCPROPSHEETPAGEW_V2; + +struct _PROPSHEETPAGEW_V3 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; + + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; + + HANDLE hActCtx; +} +alias _PROPSHEETPAGEW_V3 PROPSHEETPAGEW_V3; +alias _PROPSHEETPAGEW_V3* LPPROPSHEETPAGEW_V3; + +alias PROPSHEETPAGEW_V3* LPCPROPSHEETPAGEW_V3; + +alias PROPSHEETPAGEA_V3 PROPSHEETPAGEA_LATEST; +alias PROPSHEETPAGEW_V3 PROPSHEETPAGEW_LATEST; +alias LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA_LATEST; +alias LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW_LATEST; +alias LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA_LATEST; +alias LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW_LATEST; + +// #if (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED +alias PROPSHEETPAGEA_V3 PROPSHEETPAGEA; +alias PROPSHEETPAGEW_V3 PROPSHEETPAGEW; +alias LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA; +alias LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW; +alias LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA; +alias LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW; +// #elif (_WIN32_IE >= 0x0400) +// ... +// #else +// ... +// #endif + +// #if 0 // IEUNIX reserved. + +// #if __STDC__ || defined (NONAMELESSUNION) +// #... +// #else +// #... +// #endif +// #endif + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #else +alias PROPSHEETPAGEA PROPSHEETPAGE; +alias LPPROPSHEETPAGEA LPPROPSHEETPAGE; +alias LPCPROPSHEETPAGEA LPCPROPSHEETPAGE; +// #define PROPSHEETPAGE_V1_SIZE PROPSHEETPAGEA_V1_SIZE +// #define PROPSHEETPAGE_V2_SIZE PROPSHEETPAGEA_V2_SIZE +alias PROPSHEETPAGEA_V1 PROPSHEETPAGE_V1; +alias LPPROPSHEETPAGEA_V1 LPPROPSHEETPAGE_V1; +alias LPCPROPSHEETPAGEA_V1 LPCPROPSHEETPAGE_V1; +alias PROPSHEETPAGEA_V2 PROPSHEETPAGE_V2; +alias LPPROPSHEETPAGEA_V2 LPPROPSHEETPAGE_V2; +alias LPCPROPSHEETPAGEA_V2 LPCPROPSHEETPAGE_V2; +alias PROPSHEETPAGEA_V3 PROPSHEETPAGE_V3; +alias LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGE_V3; +alias LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGE_V3; +alias PROPSHEETPAGEA_LATEST PROPSHEETPAGE_LATEST; +alias LPPROPSHEETPAGEA_LATEST LPPROPSHEETPAGE_LATEST; +alias LPCPROPSHEETPAGEA_LATEST LPCPROPSHEETPAGE_LATEST; +// #endif + +enum : uint { PSH_DEFAULT = 0x00000000 } +enum : uint { PSH_PROPTITLE = 0x00000001 } +enum : uint { PSH_USEHICON = 0x00000002 } +enum : uint { PSH_USEICONID = 0x00000004 } +enum : uint { PSH_PROPSHEETPAGE = 0x00000008 } +enum : uint { PSH_WIZARDHASFINISH = 0x00000010 } +enum : uint { PSH_WIZARD = 0x00000020 } +enum : uint { PSH_USEPSTARTPAGE = 0x00000040 } +enum : uint { PSH_NOAPPLYNOW = 0x00000080 } +enum : uint { PSH_USECALLBACK = 0x00000100 } +enum : uint { PSH_HASHELP = 0x00000200 } +enum : uint { PSH_MODELESS = 0x00000400 } +enum : uint { PSH_RTLREADING = 0x00000800 } +enum : uint { PSH_WIZARDCONTEXTHELP = 0x00001000 } + +// #if (_WIN32_IE >= 0x0400) + +// #if (_WIN32_IE < 0x0500) +// #... +// #else +enum : uint { PSH_WIZARD97 = 0x01000000 } +// #endif + +enum : uint { PSH_WATERMARK = 0x00008000 } +enum : uint { PSH_USEHBMWATERMARK = 0x00010000 } +enum : uint { PSH_USEHPLWATERMARK = 0x00020000 } +enum : uint { PSH_STRETCHWATERMARK = 0x00040000 } +enum : uint { PSH_HEADER = 0x00080000 } +enum : uint { PSH_USEHBMHEADER = 0x00100000 } +enum : uint { PSH_USEPAGELANG = 0x00200000 } + +// #endif + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { PSH_WIZARD_LITE = 0x00400000 } +enum : uint { PSH_NOCONTEXTHELP = 0x02000000 } + +// #endif + +extern(Windows) alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; + +// #define PROPSHEETHEADERA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback) +// #define PROPSHEETHEADERW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW, pfnCallback) + +// #define PROPSHEETHEADERA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA, DUMMYUNION5_MEMBER(hbmHeader)) +// #define PROPSHEETHEADERW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW, DUMMYUNION5_MEMBER(hbmHeader)) + +struct _PROPSHEETHEADERA { + DWORD dwSize; + 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; +// #if (_WIN32_IE >= 0x0400) +union { + HBITMAP hbmWatermark; + LPCSTR pszbmWatermark; +} + + HPALETTE hplWatermark; +union { + HBITMAP hbmHeader; + LPCSTR pszbmHeader; +} + +// #endif +} +alias _PROPSHEETHEADERA PROPSHEETHEADERA; +alias _PROPSHEETHEADERA* LPPROPSHEETHEADERA; + +alias PROPSHEETHEADERA* LPCPROPSHEETHEADERA; + +struct _PROPSHEETHEADERW { + DWORD dwSize; + 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; +// #if (_WIN32_IE >= 0x0400) +union { + HBITMAP hbmWatermark; + LPCWSTR pszbmWatermark; +} + + HPALETTE hplWatermark; +union { + HBITMAP hbmHeader; + LPCWSTR pszbmHeader; +} + +// #endif +} +alias _PROPSHEETHEADERW PROPSHEETHEADERW; +alias _PROPSHEETHEADERW* LPPROPSHEETHEADERW; + +alias PROPSHEETHEADERW* LPCPROPSHEETHEADERW; + +// #if 0 //IEUNIX reserved. + +// #if __STDC__ || defined (NONAMELESSUNION) +// #... +// #... +// #else +// #... +// #... +// #endif +// #endif + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #... +// #else +alias PROPSHEETHEADERA PROPSHEETHEADER; +alias LPPROPSHEETHEADERA LPPROPSHEETHEADER; +alias LPCPROPSHEETHEADERA LPCPROPSHEETHEADER; +// #define PROPSHEETHEADER_V1_SIZE PROPSHEETHEADERA_V1_SIZE +// #define PROPSHEETHEADER_V2_SIZE PROPSHEETHEADERA_V2_SIZE +// #endif + +enum : uint { PSCB_INITIALIZED = 1 } +enum : uint { PSCB_PRECREATE = 2 } + +// #if (_WIN32_IE >= 0x560) + +enum : uint { PSCB_BUTTONPRESSED = 3 } +// #endif // _WIN32_IE >= 0x560 + +extern(Windows) export HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA constPropSheetPagePointer); +extern(Windows) export HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW constPropSheetPagePointer); +extern(Windows) export BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); + +extern(Windows) export INT_PTR PropertySheetA(LPCPROPSHEETHEADERA); + +extern(Windows) export INT_PTR PropertySheetW(LPCPROPSHEETHEADERW); + +// #ifdef UNICODE +// #... +// #... +// #else +alias CreatePropertySheetPageA CreatePropertySheetPage; +alias PropertySheetA PropertySheet; +// #endif + +extern(Windows) alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; +extern(Windows) alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGES; + +struct _PSHNOTIFY { + NMHDR hdr; + LPARAM lParam; +} +alias _PSHNOTIFY PSHNOTIFY; +alias _PSHNOTIFY* LPPSHNOTIFY; + +enum : uint { PSN_FIRST = 0U-200U } +enum : uint { PSN_LAST = 0U-299U } + +enum : uint { PSN_SETACTIVE = PSN_FIRST-0 } +enum : uint { PSN_KILLACTIVE = PSN_FIRST-1 } + +enum : uint { PSN_APPLY = PSN_FIRST-2 } +enum : uint { PSN_RESET = PSN_FIRST-3 } + +enum : uint { PSN_HELP = PSN_FIRST-5 } +enum : uint { PSN_WIZBACK = PSN_FIRST-6 } +enum : uint { PSN_WIZNEXT = PSN_FIRST-7 } +enum : uint { PSN_WIZFINISH = PSN_FIRST-8 } +enum : uint { PSN_QUERYCANCEL = PSN_FIRST-9 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { PSN_GETOBJECT = PSN_FIRST-10 } +// #endif // 0x0400 +// #if (_WIN32_IE >= 0x0500) +enum : uint { PSN_TRANSLATEACCELERATOR = PSN_FIRST-12 } +enum : uint { PSN_QUERYINITIALFOCUS = PSN_FIRST-13 } +// #endif // 0x0500 + +enum : uint { PSNRET_NOERROR = 0 } +enum : uint { PSNRET_INVALID = 1 } +enum : uint { PSNRET_INVALID_NOCHANGEPAGE = 2 } +enum : uint { PSNRET_MESSAGEHANDLED = 3 } + +enum : uint { PSM_SETCURSEL = WM_USER + 101 } +// #define PropSheet_SetCurSel(hDlg, hpage, index) SNDMSG(hDlg, PSM_SETCURSEL, (WPARAM)index, (LPARAM)hpage) + +enum : uint { PSM_REMOVEPAGE = WM_USER + 102 } +// #define PropSheet_RemovePage(hDlg, index, hpage) SNDMSG(hDlg, PSM_REMOVEPAGE, index, (LPARAM)hpage) + +enum : uint { PSM_ADDPAGE = WM_USER + 103 } +// #define PropSheet_AddPage(hDlg, hpage) SNDMSG(hDlg, PSM_ADDPAGE, 0, (LPARAM)hpage) + +enum : uint { PSM_CHANGED = WM_USER + 104 } +// #define PropSheet_Changed(hDlg, hwnd) SNDMSG(hDlg, PSM_CHANGED, (WPARAM)hwnd, 0L) + +enum : uint { PSM_RESTARTWINDOWS = WM_USER + 105 } +// #define PropSheet_RestartWindows(hDlg) SNDMSG(hDlg, PSM_RESTARTWINDOWS, 0, 0L) + +enum : uint { PSM_REBOOTSYSTEM = WM_USER + 106 } +// #define PropSheet_RebootSystem(hDlg) SNDMSG(hDlg, PSM_REBOOTSYSTEM, 0, 0L) + +enum : uint { PSM_CANCELTOCLOSE = WM_USER + 107 } +// #define PropSheet_CancelToClose(hDlg) PostMessage(hDlg, PSM_CANCELTOCLOSE, 0, 0L) + +enum : uint { PSM_QUERYSIBLINGS = WM_USER + 108 } +// #define PropSheet_QuerySiblings(hDlg, wParam, lParam) SNDMSG(hDlg, PSM_QUERYSIBLINGS, wParam, lParam) + +enum : uint { PSM_UNCHANGED = WM_USER + 109 } +// #define PropSheet_UnChanged(hDlg, hwnd) SNDMSG(hDlg, PSM_UNCHANGED, (WPARAM)hwnd, 0L) + +enum : uint { PSM_APPLY = WM_USER + 110 } +// #define PropSheet_Apply(hDlg) SNDMSG(hDlg, PSM_APPLY, 0, 0L) + +enum : uint { PSM_SETTITLEA = WM_USER + 111 } +enum : uint { PSM_SETTITLEW = WM_USER + 120 } + +// #ifdef UNICODE +// #... +// #else +alias PSM_SETTITLEA PSM_SETTITLE; +// #endif + +// #define PropSheet_SetTitle(hDlg, wStyle, lpszText) SNDMSG(hDlg, PSM_SETTITLE, wStyle, (LPARAM)(LPCTSTR)(lpszText)) + +enum : uint { PSM_SETWIZBUTTONS = WM_USER + 112 } +// #define PropSheet_SetWizButtons(hDlg, dwFlags) PostMessage(hDlg, PSM_SETWIZBUTTONS, 0, (LPARAM)dwFlags) + +enum : uint { PSWIZB_BACK = 0x00000001 } +enum : uint { PSWIZB_NEXT = 0x00000002 } +enum : uint { PSWIZB_FINISH = 0x00000004 } +enum : uint { PSWIZB_DISABLEDFINISH = 0x00000008 } + +enum : uint { PSM_PRESSBUTTON = WM_USER + 113 } +// #define PropSheet_PressButton(hDlg, iButton) PostMessage(hDlg, PSM_PRESSBUTTON, (WPARAM)iButton, 0) + +enum : uint { PSBTN_BACK = 0 } +enum : uint { PSBTN_NEXT = 1 } +enum : uint { PSBTN_FINISH = 2 } +enum : uint { PSBTN_OK = 3 } +enum : uint { PSBTN_APPLYNOW = 4 } +enum : uint { PSBTN_CANCEL = 5 } +enum : uint { PSBTN_HELP = 6 } +enum : uint { PSBTN_MAX = 6 } + +enum : uint { PSM_SETCURSELID = WM_USER + 114 } +// #define PropSheet_SetCurSelByID(hDlg, id) SNDMSG(hDlg, PSM_SETCURSELID, 0, (LPARAM)id) + +enum : uint { PSM_SETFINISHTEXTA = WM_USER + 115 } +enum : uint { PSM_SETFINISHTEXTW = WM_USER + 121 } + +// #ifdef UNICODE +// #... +// #else +alias PSM_SETFINISHTEXTA PSM_SETFINISHTEXT; +// #endif + +// #define PropSheet_SetFinishText(hDlg, lpszText) SNDMSG(hDlg, PSM_SETFINISHTEXT, 0, (LPARAM)lpszText) + +enum : uint { PSM_GETTABCONTROL = WM_USER + 116 } +// #define PropSheet_GetTabControl(hDlg) (HWND)SNDMSG(hDlg, PSM_GETTABCONTROL, 0, 0) + +enum : uint { PSM_ISDIALOGMESSAGE = WM_USER + 117 } +// #define PropSheet_IsDialogMessage(hDlg, pMsg) (BOOL)SNDMSG(hDlg, PSM_ISDIALOGMESSAGE, 0, (LPARAM)pMsg) + +enum : uint { PSM_GETCURRENTPAGEHWND = WM_USER + 118 } +// #define PropSheet_GetCurrentPageHwnd(hDlg) (HWND)SNDMSG(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0L) + +enum : uint { PSM_INSERTPAGE = WM_USER + 119 } +// #define PropSheet_InsertPage(hDlg, index, hpage) SNDMSG(hDlg, PSM_INSERTPAGE, (WPARAM)(index), (LPARAM)(hpage)) + +// #if (_WIN32_IE >= 0x0500) +enum : uint { PSM_SETHEADERTITLEA = WM_USER + 125 } +enum : uint { PSM_SETHEADERTITLEW = WM_USER + 126 } + +// #ifdef UNICODE +// #... +// #else +alias PSM_SETHEADERTITLEA PSM_SETHEADERTITLE; +// #endif + +// #define PropSheet_SetHeaderTitle(hDlg, index, lpszText) SNDMSG(hDlg, PSM_SETHEADERTITLE, (WPARAM)(index), (LPARAM)(lpszText)) + +enum : uint { PSM_SETHEADERSUBTITLEA = WM_USER + 127 } +enum : uint { PSM_SETHEADERSUBTITLEW = WM_USER + 128 } + +// #ifdef UNICODE +// #... +// #else +alias PSM_SETHEADERSUBTITLEA PSM_SETHEADERSUBTITLE; +// #endif + +// #define PropSheet_SetHeaderSubTitle(hDlg, index, lpszText) SNDMSG(hDlg, PSM_SETHEADERSUBTITLE, (WPARAM)(index), (LPARAM)(lpszText)) + +enum : uint { PSM_HWNDTOINDEX = WM_USER + 129 } +// #define PropSheet_HwndToIndex(hDlg, hwnd) (int)SNDMSG(hDlg, PSM_HWNDTOINDEX, (WPARAM)(hwnd), 0) + +enum : uint { PSM_INDEXTOHWND = WM_USER + 130 } +// #define PropSheet_IndexToHwnd(hDlg, i) (HWND)SNDMSG(hDlg, PSM_INDEXTOHWND, (WPARAM)(i), 0) + +enum : uint { PSM_PAGETOINDEX = WM_USER + 131 } +// #define PropSheet_PageToIndex(hDlg, hpage) (int)SNDMSG(hDlg, PSM_PAGETOINDEX, 0, (LPARAM)(hpage)) + +enum : uint { PSM_INDEXTOPAGE = WM_USER + 132 } +// #define PropSheet_IndexToPage(hDlg, i) (HPROPSHEETPAGE)SNDMSG(hDlg, PSM_INDEXTOPAGE, (WPARAM)(i), 0) + +enum : uint { PSM_IDTOINDEX = WM_USER + 133 } +// #define PropSheet_IdToIndex(hDlg, id) (int)SNDMSG(hDlg, PSM_IDTOINDEX, 0, (LPARAM)(id)) + +enum : uint { PSM_INDEXTOID = WM_USER + 134 } +// #define PropSheet_IndexToId(hDlg, i) SNDMSG(hDlg, PSM_INDEXTOID, (WPARAM)(i), 0) + +enum : uint { PSM_GETRESULT = WM_USER + 135 } +// #define PropSheet_GetResult(hDlg) SNDMSG(hDlg, PSM_GETRESULT, 0, 0) + +enum : uint { PSM_RECALCPAGESIZES = WM_USER + 136 } +// #define PropSheet_RecalcPageSizes(hDlg) SNDMSG(hDlg, PSM_RECALCPAGESIZES, 0, 0) +// #endif // 0x0500 + +enum : uint { ID_PSRESTARTWINDOWS = 0x2 } +enum : uint { ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 } + +enum : uint { WIZ_CXDLG = 276 } +enum : uint { WIZ_CYDLG = 140 } + +enum : uint { WIZ_CXBMP = 80 } + +enum : uint { WIZ_BODYX = 92 } +enum : uint { WIZ_BODYCX = 184 } + +enum : uint { PROP_SM_CXDLG = 212 } +enum : uint { PROP_SM_CYDLG = 188 } + +enum : uint { PROP_MED_CXDLG = 227 } +enum : uint { PROP_MED_CYDLG = 215 } + +enum : uint { PROP_LG_CXDLG = 252 } +enum : uint { PROP_LG_CYDLG = 218 } + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED + +// #if !defined(ISOLATION_AWARE_INLINE) +// #if defined(__cplusplus) +// #... +// #else +// #... +// #endif +// #endif + +// ... + +// #ifndef CCSIZEOF_STRUCT +// #... +// #endif + +// ... + +// #if defined(UNICODE) + +// #... +// #... + +// #else /* UNICODE */ + +// #... +// #... + +// #endif /* UNICODE */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... + +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif + +align: + +// #endif // _PRSHT_H_ + +// ---- + +// #ifndef _INC_COMMCTRL +// #define _INC_COMMCTRL + +// #ifndef _WINRESRC_ +// #ifndef _WIN32_IE +// #... +// #else +// #if (_WIN32_IE < 0x0400) && defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0500) +// #... +// #endif +// #endif +// #endif + +// #ifndef _HRESULT_DEFINED +// #define _HRESULT_DEFINED +alias LONG HRESULT; +// #endif // _HRESULT_DEFINED + +// #ifndef NOUSER + +// #ifndef WINCOMMCTRLAPI +// #if !defined(_COMCTL32_) && defined(_WIN32) +// #define WINCOMMCTRLAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #endif // WINCOMMCTRLAPI + +// #ifndef DUMMYUNIONNAME +// #ifdef NONAMELESSUNION +// #... +// #... +// #... +// #... +// #... +// #else +// #define DUMMYUNIONNAME +// #define DUMMYUNIONNAME2 +// #define DUMMYUNIONNAME3 +// #define DUMMYUNIONNAME4 +// #define DUMMYUNIONNAME5 +// #endif +// #endif // DUMMYUNIONNAME + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #include + +// #ifndef SNDMSG +// #ifdef __cplusplus +// #ifndef _MAC +// #define SNDMSG ::SendMessage +// #else +// #... +// #endif +// #else +// #ifndef _MAC +// #... +// #else +// #... +// #endif //_MAC +// #endif +// #endif // ifndef SNDMSG + +// #ifdef _MAC +// #ifndef RC_INVOKED +// #ifndef _WLM_NOFORCE_LIBS + +// #ifndef _WLMDLL +// #ifdef _DEBUG +// #... +// #else +// #... +// #endif +// #... +// #else +// #ifdef _DEBUG +// #... +// #else +// #... +// #endif +// #endif // _WLMDLL + +// #endif // _WLM_NOFORCE_LIBS +// #endif // RC_INVOKED +// #endif //_MAC + +extern(Windows) export void InitCommonControls(); + +// #if (_WIN32_IE >= 0x0300) +struct tagINITCOMMONCONTROLSEX { + DWORD dwSize; + DWORD dwICC; +} +alias tagINITCOMMONCONTROLSEX INITCOMMONCONTROLSEX; +alias tagINITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; + +enum : uint { ICC_LISTVIEW_CLASSES = 0x00000001 } +enum : uint { ICC_TREEVIEW_CLASSES = 0x00000002 } +enum : uint { ICC_BAR_CLASSES = 0x00000004 } +enum : uint { ICC_TAB_CLASSES = 0x00000008 } +enum : uint { ICC_UPDOWN_CLASS = 0x00000010 } +enum : uint { ICC_PROGRESS_CLASS = 0x00000020 } +enum : uint { ICC_HOTKEY_CLASS = 0x00000040 } +enum : uint { ICC_ANIMATE_CLASS = 0x00000080 } +enum : uint { ICC_WIN95_CLASSES = 0x000000FF } +enum : uint { ICC_DATE_CLASSES = 0x00000100 } +enum : uint { ICC_USEREX_CLASSES = 0x00000200 } +enum : uint { ICC_COOL_CLASSES = 0x00000400 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { ICC_INTERNET_CLASSES = 0x00000800 } +enum : uint { ICC_PAGESCROLLER_CLASS = 0x00001000 } +enum : uint { ICC_NATIVEFNTCTL_CLASS = 0x00002000 } +// #endif +// #if (_WIN32_WINNT >= 0x501) +enum : uint { ICC_STANDARD_CLASSES = 0x00004000 } +enum : uint { ICC_LINK_CLASS = 0x00008000 } +// #endif + +extern(Windows) export BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); +// #endif // _WIN32_IE >= 0x0300 + +enum : uint { ODT_HEADER = 100 } +enum : uint { ODT_TAB = 101 } +enum : uint { ODT_LISTVIEW = 102 } + +enum : uint { LVM_FIRST = 0x1000 } +enum : uint { TV_FIRST = 0x1100 } +enum : uint { HDM_FIRST = 0x1200 } +enum : uint { TCM_FIRST = 0x1300 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { PGM_FIRST = 0x1400 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { ECM_FIRST = 0x1500 } +enum : uint { BCM_FIRST = 0x1600 } +enum : uint { CBM_FIRST = 0x1700 } +// #endif +enum : uint { CCM_FIRST = 0x2000 } +enum : uint { CCM_LAST = CCM_FIRST + 0x200 } + +enum : uint { CCM_SETBKCOLOR = CCM_FIRST + 1 } + +struct tagCOLORSCHEME { + DWORD dwSize; + COLORREF clrBtnHighlight; + COLORREF clrBtnShadow; +} +alias tagCOLORSCHEME COLORSCHEME; +alias tagCOLORSCHEME* LPCOLORSCHEME; + +enum : uint { CCM_SETCOLORSCHEME = CCM_FIRST + 2 } +enum : uint { CCM_GETCOLORSCHEME = CCM_FIRST + 3 } +enum : uint { CCM_GETDROPTARGET = CCM_FIRST + 4 } +enum : uint { CCM_SETUNICODEFORMAT = CCM_FIRST + 5 } +enum : uint { CCM_GETUNICODEFORMAT = CCM_FIRST + 6 } + +// #if (_WIN32_IE >= 0x0500) +// #if (_WIN32_WINNT >= 0x501) +enum : uint { COMCTL32_VERSION = 6 } +// #else +// #... +// #endif + +enum : uint { CCM_SETVERSION = CCM_FIRST + 0x7 } +enum : uint { CCM_GETVERSION = CCM_FIRST + 0x8 } +enum : uint { CCM_SETNOTIFYWINDOW = CCM_FIRST + 0x9 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { CCM_SETWINDOWTHEME = CCM_FIRST + 0xb } +enum : uint { CCM_DPISCALE = CCM_FIRST + 0xc } +// #endif +// #endif // (_WIN32_IE >= 0x0500) + +// #endif // (_WIN32_IE >= 0x0400) + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { INFOTIPSIZE = 1024 } +// #endif + +// #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) (fn)((hwnd), (int)(wParam), (NMHDR *)(lParam)) +// #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR *)(pnmhdr)) + +enum : uint { NM_OUTOFMEMORY = NM_FIRST-1 } +enum : uint { NM_CLICK = NM_FIRST-2 } +enum : uint { NM_DBLCLK = NM_FIRST-3 } +enum : uint { NM_RETURN = NM_FIRST-4 } +enum : uint { NM_RCLICK = NM_FIRST-5 } +enum : uint { NM_RDBLCLK = NM_FIRST-6 } +enum : uint { NM_SETFOCUS = NM_FIRST-7 } +enum : uint { NM_KILLFOCUS = NM_FIRST-8 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { NM_CUSTOMDRAW = NM_FIRST-12 } +enum : uint { NM_HOVER = NM_FIRST-13 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { NM_NCHITTEST = NM_FIRST-14 } +enum : uint { NM_KEYDOWN = NM_FIRST-15 } +enum : uint { NM_RELEASEDCAPTURE = NM_FIRST-16 } +enum : uint { NM_SETCURSOR = NM_FIRST-17 } +enum : uint { NM_CHAR = NM_FIRST-18 } +// #endif +// #if (_WIN32_IE >= 0x0401) +enum : uint { NM_TOOLTIPSCREATED = NM_FIRST-19 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { NM_LDOWN = NM_FIRST-20 } +enum : uint { NM_RDOWN = NM_FIRST-21 } +enum : uint { NM_THEMECHANGED = NM_FIRST-22 } +// #endif + +// #ifndef CCSIZEOF_STRUCT +// #define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) +// #endif + +// #if (_WIN32_IE >= 0x0401) +struct tagNMTOOLTIPSCREATED { + NMHDR hdr; + HWND hwndToolTips; +} +alias tagNMTOOLTIPSCREATED NMTOOLTIPSCREATED; +alias tagNMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; + +// #endif + +// #if (_WIN32_IE >= 0x0400) +struct tagNMMOUSE { + NMHDR hdr; + DWORD_PTR dwItemSpec; + DWORD_PTR dwItemData; + POINT pt; + LPARAM dwHitInfo; +} +alias tagNMMOUSE NMMOUSE; +alias tagNMMOUSE* LPNMMOUSE; + +alias NMMOUSE NMCLICK; +alias LPNMMOUSE LPNMCLICK; + +struct tagNMOBJECTNOTIFY { + NMHDR hdr; + int iItem; +// #ifdef __IID_DEFINED__ + IID* piid; +// #else +// ... +// #endif + void *pObject; + HRESULT hResult; + DWORD dwFlags; +} +alias tagNMOBJECTNOTIFY NMOBJECTNOTIFY; +alias tagNMOBJECTNOTIFY* LPNMOBJECTNOTIFY; + +struct tagNMKEY { + NMHDR hdr; + UINT nVKey; + UINT uFlags; +} +alias tagNMKEY NMKEY; +alias tagNMKEY* LPNMKEY; + +struct tagNMCHAR { + NMHDR hdr; + UINT ch; + DWORD dwItemPrev; + DWORD dwItemNext; +} +alias tagNMCHAR NMCHAR; +alias tagNMCHAR* LPNMCHAR; + +// #endif // _WIN32_IE >= 0x0400 + +// #define NM_FIRST (0U- 0U) +enum : uint { NM_LAST = 0U- 99U } + +enum : uint { LVN_FIRST = 0U-100U } +enum : uint { LVN_LAST = 0U-199U } + +enum : uint { HDN_FIRST = 0U-300U } +enum : uint { HDN_LAST = 0U-399U } + +enum : uint { TVN_FIRST = 0U-400U } +enum : uint { TVN_LAST = 0U-499U } + +enum : uint { TTN_FIRST = 0U-520U } +enum : uint { TTN_LAST = 0U-549U } + +enum : uint { TCN_FIRST = 0U-550U } +enum : uint { TCN_LAST = 0U-580U } + +enum : uint { CDN_FIRST = 0U-601U } +enum : uint { CDN_LAST = 0U-699U } + +enum : uint { TBN_FIRST = 0U-700U } +enum : uint { TBN_LAST = 0U-720U } + +enum : uint { UDN_FIRST = 0U-721 } +enum : uint { UDN_LAST = 0U-740 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { MCN_FIRST = 0U-750U } +enum : uint { MCN_LAST = 0U-759U } + +enum : uint { DTN_FIRST = 0U-760U } +enum : uint { DTN_LAST = 0U-799U } + +// #define CBEN_FIRST (0U-800U) +enum : uint { CBEN_LAST = 0U-830U } + +enum : uint { RBN_FIRST = 0U-831U } +enum : uint { RBN_LAST = 0U-859U } +// #endif + +// #if (_WIN32_IE >= 0x0400) +enum : uint { IPN_FIRST = 0U-860U } +enum : uint { IPN_LAST = 0U-879U } + +enum : uint { SBN_FIRST = 0U-880U } +enum : uint { SBN_LAST = 0U-899U } + +enum : uint { PGN_FIRST = 0U-900U } +enum : uint { PGN_LAST = 0U-950U } + +// #endif + +// #if (_WIN32_IE >= 0x0500) +// #ifndef WMN_FIRST +enum : uint { WMN_FIRST = 0U-1000U } +enum : uint { WMN_LAST = 0U-1200U } +// #endif +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { BCN_FIRST = 0U-1250U } +enum : uint { BCN_LAST = 0U-1350U } +// #endif + +enum : uint { MSGF_COMMCTRL_BEGINDRAG = 0x4200 } +enum : uint { MSGF_COMMCTRL_SIZEHEADER = 0x4201 } +enum : uint { MSGF_COMMCTRL_DRAGSELECT = 0x4202 } +enum : uint { MSGF_COMMCTRL_TOOLBARCUST = 0x4203 } + +// #if (_WIN32_IE >= 0x0300) + +enum : uint { CDRF_DODEFAULT = 0x00000000 } +enum : uint { CDRF_NEWFONT = 0x00000002 } +enum : uint { CDRF_SKIPDEFAULT = 0x00000004 } + +enum : uint { CDRF_NOTIFYPOSTPAINT = 0x00000010 } +enum : uint { CDRF_NOTIFYITEMDRAW = 0x00000020 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { CDRF_NOTIFYSUBITEMDRAW = 0x00000020 } +// #endif +enum : uint { CDRF_NOTIFYPOSTERASE = 0x00000040 } + +enum : uint { CDDS_PREPAINT = 0x00000001 } +enum : uint { CDDS_POSTPAINT = 0x00000002 } +enum : uint { CDDS_PREERASE = 0x00000003 } +enum : uint { CDDS_POSTERASE = 0x00000004 } + +enum : uint { CDDS_ITEM = 0x00010000 } +enum : uint { CDDS_ITEMPREPAINT = CDDS_ITEM | CDDS_PREPAINT } +enum : uint { CDDS_ITEMPOSTPAINT = CDDS_ITEM | CDDS_POSTPAINT } +enum : uint { CDDS_ITEMPREERASE = CDDS_ITEM | CDDS_PREERASE } +enum : uint { CDDS_ITEMPOSTERASE = CDDS_ITEM | CDDS_POSTERASE } +// #if (_WIN32_IE >= 0x0400) +enum : uint { CDDS_SUBITEM = 0x00020000 } +// #endif + +enum : uint { CDIS_SELECTED = 0x0001 } +enum : uint { CDIS_GRAYED = 0x0002 } +enum : uint { CDIS_DISABLED = 0x0004 } +enum : uint { CDIS_CHECKED = 0x0008 } +enum : uint { CDIS_FOCUS = 0x0010 } +enum : uint { CDIS_DEFAULT = 0x0020 } +enum : uint { CDIS_HOT = 0x0040 } +enum : uint { CDIS_MARKED = 0x0080 } +enum : uint { CDIS_INDETERMINATE = 0x0100 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { CDIS_SHOWKEYBOARDCUES = 0x0200 } +// #endif + +struct tagNMCUSTOMDRAWINFO { + NMHDR hdr; + DWORD dwDrawStage; + HDC hdc; + RECT rc; + DWORD_PTR dwItemSpec; + UINT uItemState; + LPARAM lItemlParam; +} +alias tagNMCUSTOMDRAWINFO NMCUSTOMDRAW; +alias tagNMCUSTOMDRAWINFO* LPNMCUSTOMDRAW; + +struct tagNMTTCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + UINT uDrawFlags; +} +alias tagNMTTCUSTOMDRAW NMTTCUSTOMDRAW; +alias tagNMTTCUSTOMDRAW* LPNMTTCUSTOMDRAW; + +// #endif // _WIN32_IE >= 0x0300 + +// #ifndef NOIMAGEAPIS + +enum : uint { CLR_NONE = 0xFFFFFFFF } +enum : uint { CLR_DEFAULT = 0xFF000000 } + +// #ifndef HIMAGELIST +// struct _IMAGELIST; +alias _IMAGELIST* HIMAGELIST; +// #endif + +// #ifndef IMAGELISTDRAWPARAMS +// #if (_WIN32_IE >= 0x0300) +struct _IMAGELISTDRAWPARAMS { + DWORD cbSize; + 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; +// #if (_WIN32_WINNT >= 0x501) + DWORD fState; + DWORD Frame; + COLORREF crEffect; +// #endif +} +alias _IMAGELISTDRAWPARAMS IMAGELISTDRAWPARAMS; +alias _IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; + +// #define IMAGELISTDRAWPARAMS_V3_SIZE CCSIZEOF_STRUCT(IMAGELISTDRAWPARAMS, dwRop) + +// #endif // _WIN32_IE >= 0x0300 +// #endif + +enum : uint { ILC_MASK = 0x00000001 } +enum : uint { ILC_COLOR = 0x00000000 } +enum : uint { ILC_COLORDDB = 0x000000FE } +enum : uint { ILC_COLOR4 = 0x00000004 } +enum : uint { ILC_COLOR8 = 0x00000008 } +enum : uint { ILC_COLOR16 = 0x00000010 } +enum : uint { ILC_COLOR24 = 0x00000018 } +enum : uint { ILC_COLOR32 = 0x00000020 } +enum : uint { ILC_PALETTE = 0x00000800 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { ILC_MIRROR = 0x00002000 } +enum : uint { ILC_PERITEMMIRROR = 0x00008000 } +// #endif +extern(Windows) export HIMAGELIST ImageList_Create(int cx, int cy, UINT flags, int cInitial, int cGrow); +extern(Windows) export BOOL ImageList_Destroy(HIMAGELIST himl); + +extern(Windows) export int ImageList_GetImageCount(HIMAGELIST himl); +// #if (_WIN32_IE >= 0x0300) +extern(Windows) export BOOL ImageList_SetImageCount(HIMAGELIST himl, UINT uNewCount); +// #endif + +extern(Windows) export int ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask); + +extern(Windows) export int ImageList_ReplaceIcon(HIMAGELIST himl, int i, HICON hicon); +extern(Windows) export COLORREF ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk); +extern(Windows) export COLORREF ImageList_GetBkColor(HIMAGELIST himl); +extern(Windows) export BOOL ImageList_SetOverlayImage(HIMAGELIST himl, int iImage, int iOverlay); + +// #define ImageList_AddIcon(himl, hicon) ImageList_ReplaceIcon(himl, -1, hicon) + +enum : uint { ILD_NORMAL = 0x00000000 } +enum : uint { ILD_TRANSPARENT = 0x00000001 } +enum : uint { ILD_MASK = 0x00000010 } +enum : uint { ILD_IMAGE = 0x00000020 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { ILD_ROP = 0x00000040 } +// #endif +enum : uint { ILD_BLEND25 = 0x00000002 } +enum : uint { ILD_BLEND50 = 0x00000004 } +enum : uint { ILD_OVERLAYMASK = 0x00000F00 } +uint INDEXTOOVERLAYMASK(uint i){ return i << 8; } +enum : uint { ILD_PRESERVEALPHA = 0x00001000 } +enum : uint { ILD_SCALE = 0x00002000 } +enum : uint { ILD_DPISCALE = 0x00004000 } + +alias ILD_BLEND50 ILD_SELECTED; +alias ILD_BLEND25 ILD_FOCUS; +alias ILD_BLEND50 ILD_BLEND; +alias CLR_DEFAULT CLR_HILIGHT; + +enum : uint { ILS_NORMAL = 0x00000000 } +enum : uint { ILS_GLOW = 0x00000001 } +enum : uint { ILS_SHADOW = 0x00000002 } +enum : uint { ILS_SATURATE = 0x00000004 } +enum : uint { ILS_ALPHA = 0x00000008 } + +extern(Windows) export BOOL ImageList_Draw(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, UINT fStyle); + +// #ifdef _WIN32 + +extern(Windows) export BOOL ImageList_Replace(HIMAGELIST himl, int i, HBITMAP hbmImage, HBITMAP hbmMask); + +extern(Windows) export int ImageList_AddMasked(HIMAGELIST himl, HBITMAP hbmImage, COLORREF crMask); +extern(Windows) export BOOL ImageList_DrawEx(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle); +// #if (_WIN32_IE >= 0x0300) +extern(Windows) export BOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS* pimldp); +// #endif +extern(Windows) export BOOL ImageList_Remove(HIMAGELIST himl, int i); +extern(Windows) export HICON ImageList_GetIcon(HIMAGELIST himl, int i, UINT flags); +extern(Windows) export HIMAGELIST ImageList_LoadImageA(HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags); +extern(Windows) export HIMAGELIST ImageList_LoadImageW(HINSTANCE hi, LPCWSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags); + +// #ifdef UNICODE +// #... +// #else +alias ImageList_LoadImageA ImageList_LoadImage; +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { ILCF_MOVE = 0x00000000 } +enum : uint { ILCF_SWAP = 0x00000001 } +extern(Windows) export BOOL ImageList_Copy(HIMAGELIST himlDst, int iDst, HIMAGELIST himlSrc, int iSrc, UINT uFlags); +// #endif + +extern(Windows) export BOOL ImageList_BeginDrag(HIMAGELIST himlTrack, int iTrack, int dxHotspot, int dyHotspot); +extern(Windows) export void ImageList_EndDrag(); +extern(Windows) export BOOL ImageList_DragEnter(HWND hwndLock, int x, int y); +extern(Windows) export BOOL ImageList_DragLeave(HWND hwndLock); +extern(Windows) export BOOL ImageList_DragMove(int x, int y); +extern(Windows) export BOOL ImageList_SetDragCursorImage(HIMAGELIST himlDrag, int iDrag, int dxHotspot, int dyHotspot); + +extern(Windows) export BOOL ImageList_DragShowNolock(BOOL fShow); +extern(Windows) export HIMAGELIST ImageList_GetDragImage(POINT *ppt,POINT *pptHotspot); + +// #define ImageList_RemoveAll(himl) ImageList_Remove(himl, -1) +// #define ImageList_ExtractIcon(hi, himl, i) ImageList_GetIcon(himl, i, 0) +// #define ImageList_LoadBitmap(hi, lpbmp, cx, cGrow, crMask) ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0) + +// #ifdef __IStream_INTERFACE_DEFINED__ + +// ... + +// #if (_WIN32_WINNT >= 0x0501) +// #... +// #... + +// ... +// #endif + +// #endif + +// #ifndef IMAGEINFO +struct _IMAGEINFO { + HBITMAP hbmImage; + HBITMAP hbmMask; + int Unused1; + int Unused2; + RECT rcImage; +} +alias _IMAGEINFO IMAGEINFO; +alias _IMAGEINFO* LPIMAGEINFO; + +// #endif + +extern(Windows) export BOOL ImageList_GetIconSize(HIMAGELIST himl, int *cx, int *cy); +extern(Windows) export BOOL ImageList_SetIconSize(HIMAGELIST himl, int cx, int cy); +extern(Windows) export BOOL ImageList_GetImageInfo(HIMAGELIST himl, int i, IMAGEINFO *pImageInfo); +extern(Windows) export HIMAGELIST ImageList_Merge(HIMAGELIST himl1, int i1, HIMAGELIST himl2, int i2, int dx, int dy); +// #if (_WIN32_IE >= 0x0400) +extern(Windows) export HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); +// #endif + +// #endif + +// #endif + +// #ifndef NOHEADER + +// #ifdef _WIN32 +const char[] WC_HEADERA = "SysHeader32"; +const wchar[] WC_HEADERW = "SysHeader32"; + +// #ifdef UNICODE +// #... +// #else +alias WC_HEADERA WC_HEADER; +// #endif + +// #else +// #... +// #endif + +enum : uint { HDS_HORZ = 0x0000 } +enum : uint { HDS_BUTTONS = 0x0002 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDS_HOTTRACK = 0x0004 } +// #endif +enum : uint { HDS_HIDDEN = 0x0008 } + +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDS_DRAGDROP = 0x0040 } +enum : uint { HDS_FULLDRAG = 0x0080 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { HDS_FILTERBAR = 0x0100 } +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { HDS_FLAT = 0x0200 } +// #endif + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { HDFT_ISSTRING = 0x0000 } +enum : uint { HDFT_ISNUMBER = 0x0001 } + +enum : uint { HDFT_HASNOVALUE = 0x8000 } + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #else +alias HD_TEXTFILTERA HD_TEXTFILTER; +alias HD_TEXTFILTERA HDTEXTFILTER; +alias LPHD_TEXTFILTERA LPHD_TEXTFILTER; +alias LPHD_TEXTFILTERA LPHDTEXTFILTER; +// #endif + +struct _HD_TEXTFILTERA { + LPSTR pszText; + INT cchTextMax; +} +alias _HD_TEXTFILTERA HD_TEXTFILTERA; +alias _HD_TEXTFILTERA* LPHD_TEXTFILTERA; + +struct _HD_TEXTFILTERW { + LPWSTR pszText; + INT cchTextMax; +} +alias _HD_TEXTFILTERW HD_TEXTFILTERW; +alias _HD_TEXTFILTERW* LPHD_TEXTFILTERW; + +// #endif // _WIN32_IE >= 0x0500 + +// #if (_WIN32_IE >= 0x0300) +alias HDITEMA HD_ITEMA; +alias HDITEMW HD_ITEMW; +// #else +// #... +// #... +// #endif +alias HDITEM HD_ITEM; + +struct _HD_ITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; +// #if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +// #endif +// #if (_WIN32_IE >= 0x0500) + UINT type; + void * pvFilter; +// #endif +} +alias _HD_ITEMA HDITEMA; +alias _HD_ITEMA* LPHDITEMA; + +// #define HDITEMA_V1_SIZE CCSIZEOF_STRUCT(HDITEMA, lParam) +// #define HDITEMW_V1_SIZE CCSIZEOF_STRUCT(HDITEMW, lParam) + +struct _HD_ITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; +// #if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +// #endif +// #if (_WIN32_IE >= 0x0500) + UINT type; + void * pvFilter; +// #endif +} +alias _HD_ITEMW HDITEMW; +alias _HD_ITEMW* LPHDITEMW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias HDITEMA HDITEM; +alias LPHDITEMA LPHDITEM; +// #define HDITEM_V1_SIZE HDITEMA_V1_SIZE +// #endif + +enum : uint { HDI_WIDTH = 0x0001 } +alias HDI_WIDTH HDI_HEIGHT; +enum : uint { HDI_TEXT = 0x0002 } +enum : uint { HDI_FORMAT = 0x0004 } +enum : uint { HDI_LPARAM = 0x0008 } +enum : uint { HDI_BITMAP = 0x0010 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDI_IMAGE = 0x0020 } +enum : uint { HDI_DI_SETITEM = 0x0040 } +enum : uint { HDI_ORDER = 0x0080 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { HDI_FILTER = 0x0100 } +// #endif + +enum : uint { HDF_LEFT = 0x0000 } +enum : uint { HDF_RIGHT = 0x0001 } +enum : uint { HDF_CENTER = 0x0002 } +enum : uint { HDF_JUSTIFYMASK = 0x0003 } +enum : uint { HDF_RTLREADING = 0x0004 } + +enum : uint { HDF_OWNERDRAW = 0x8000 } +enum : uint { HDF_STRING = 0x4000 } +enum : uint { HDF_BITMAP = 0x2000 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDF_BITMAP_ON_RIGHT = 0x1000 } +enum : uint { HDF_IMAGE = 0x0800 } +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { HDF_SORTUP = 0x0400 } +enum : uint { HDF_SORTDOWN = 0x0200 } +// #endif + +enum : uint { HDM_GETITEMCOUNT = HDM_FIRST + 0 } +// #define Header_GetItemCount(hwndHD) (int)SNDMSG((hwndHD), HDM_GETITEMCOUNT, 0, 0L) + +enum : uint { HDM_INSERTITEMA = HDM_FIRST + 1 } +enum : uint { HDM_INSERTITEMW = HDM_FIRST + 10 } + +// #ifdef UNICODE +// #... +// #else +alias HDM_INSERTITEMA HDM_INSERTITEM; +// #endif + +// #define Header_InsertItem(hwndHD, i, phdi) (int)SNDMSG((hwndHD), HDM_INSERTITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM *)(phdi)) + +enum : uint { HDM_DELETEITEM = HDM_FIRST + 2 } +// #define Header_DeleteItem(hwndHD, i) (BOOL)SNDMSG((hwndHD), HDM_DELETEITEM, (WPARAM)(int)(i), 0L) + +enum : uint { HDM_GETITEMA = HDM_FIRST + 3 } +enum : uint { HDM_GETITEMW = HDM_FIRST + 11 } + +// #ifdef UNICODE +// #... +// #else +alias HDM_GETITEMA HDM_GETITEM; +// #endif + +// #define Header_GetItem(hwndHD, i, phdi) (BOOL)SNDMSG((hwndHD), HDM_GETITEM, (WPARAM)(int)(i), (LPARAM)(HD_ITEM *)(phdi)) + +enum : uint { HDM_SETITEMA = HDM_FIRST + 4 } +enum : uint { HDM_SETITEMW = HDM_FIRST + 12 } + +// #ifdef UNICODE +// #... +// #else +alias HDM_SETITEMA HDM_SETITEM; +// #endif + +// #define Header_SetItem(hwndHD, i, phdi) (BOOL)SNDMSG((hwndHD), HDM_SETITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM *)(phdi)) + +// #if (_WIN32_IE >= 0x0300) +alias HDLAYOUT HD_LAYOUT; +// #else +// #... +// #endif + +struct _HD_LAYOUT { + RECT *prc; + WINDOWPOS *pwpos; +} +alias _HD_LAYOUT HDLAYOUT; +alias _HD_LAYOUT* LPHDLAYOUT; + +enum : uint { HDM_LAYOUT = HDM_FIRST + 5 } +// #define Header_Layout(hwndHD, playout) (BOOL)SNDMSG((hwndHD), HDM_LAYOUT, 0, (LPARAM)(HD_LAYOUT *)(playout)) + +enum : uint { HHT_NOWHERE = 0x0001 } +enum : uint { HHT_ONHEADER = 0x0002 } +enum : uint { HHT_ONDIVIDER = 0x0004 } +enum : uint { HHT_ONDIVOPEN = 0x0008 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { HHT_ONFILTER = 0x0010 } +enum : uint { HHT_ONFILTERBUTTON = 0x0020 } +// #endif +enum : uint { HHT_ABOVE = 0x0100 } +enum : uint { HHT_BELOW = 0x0200 } +enum : uint { HHT_TORIGHT = 0x0400 } +enum : uint { HHT_TOLEFT = 0x0800 } + +// #if (_WIN32_IE >= 0x0300) +alias HDHITTESTINFO HD_HITTESTINFO; +// #else +// #... +// #endif + +struct _HD_HITTESTINFO { + POINT pt; + UINT flags; + int iItem; +} +alias _HD_HITTESTINFO HDHITTESTINFO; +alias _HD_HITTESTINFO* LPHDHITTESTINFO; + +enum : uint { HDM_HITTEST = HDM_FIRST + 6 } + +// #if (_WIN32_IE >= 0x0300) + +enum : uint { HDM_GETITEMRECT = HDM_FIRST + 7 } +// #define Header_GetItemRect(hwnd, iItem, lprc) (BOOL)SNDMSG((hwnd), HDM_GETITEMRECT, (WPARAM)(iItem), (LPARAM)(lprc)) + +enum : uint { HDM_SETIMAGELIST = HDM_FIRST + 8 } +// #define Header_SetImageList(hwnd, himl) (HIMAGELIST)SNDMSG((hwnd), HDM_SETIMAGELIST, 0, (LPARAM)(himl)) + +enum : uint { HDM_GETIMAGELIST = HDM_FIRST + 9 } +// #define Header_GetImageList(hwnd) (HIMAGELIST)SNDMSG((hwnd), HDM_GETIMAGELIST, 0, 0) + +enum : uint { HDM_ORDERTOINDEX = HDM_FIRST + 15 } +// #define Header_OrderToIndex(hwnd, i) (int)SNDMSG((hwnd), HDM_ORDERTOINDEX, (WPARAM)(i), 0) + +enum : uint { HDM_CREATEDRAGIMAGE = HDM_FIRST + 16 } +// #define Header_CreateDragImage(hwnd, i) (HIMAGELIST)SNDMSG((hwnd), HDM_CREATEDRAGIMAGE, (WPARAM)(i), 0) + +enum : uint { HDM_GETORDERARRAY = HDM_FIRST + 17 } +// #define Header_GetOrderArray(hwnd, iCount, lpi) (BOOL)SNDMSG((hwnd), HDM_GETORDERARRAY, (WPARAM)(iCount), (LPARAM)(lpi)) + +enum : uint { HDM_SETORDERARRAY = HDM_FIRST + 18 } +// #define Header_SetOrderArray(hwnd, iCount, lpi) (BOOL)SNDMSG((hwnd), HDM_SETORDERARRAY, (WPARAM)(iCount), (LPARAM)(lpi)) + +enum : uint { HDM_SETHOTDIVIDER = HDM_FIRST + 19 } +// #define Header_SetHotDivider(hwnd, fPos, dw) (int)SNDMSG((hwnd), HDM_SETHOTDIVIDER, (WPARAM)(fPos), (LPARAM)(dw)) + +// #endif // _WIN32_IE >= 0x0300 + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { HDM_SETBITMAPMARGIN = HDM_FIRST + 20 } +// #define Header_SetBitmapMargin(hwnd, iWidth) (int)SNDMSG((hwnd), HDM_SETBITMAPMARGIN, (WPARAM)(iWidth), 0) + +enum : uint { HDM_GETBITMAPMARGIN = HDM_FIRST + 21 } +// #define Header_GetBitmapMargin(hwnd) (int)SNDMSG((hwnd), HDM_GETBITMAPMARGIN, 0, 0) +// #endif + +// #if (_WIN32_IE >= 0x0400) +alias CCM_SETUNICODEFORMAT HDM_SETUNICODEFORMAT; +// #define Header_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), HDM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT HDM_GETUNICODEFORMAT; +// #define Header_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), HDM_GETUNICODEFORMAT, 0, 0) +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST+22 } +// #define Header_SetFilterChangeTimeout(hwnd, i) (int)SNDMSG((hwnd), HDM_SETFILTERCHANGETIMEOUT, 0, (LPARAM)(i)) + +enum : uint { HDM_EDITFILTER = HDM_FIRST+23 } +// #define Header_EditFilter(hwnd, i, fDiscardChanges) (int)SNDMSG((hwnd), HDM_EDITFILTER, (WPARAM)(i), MAKELPARAM(fDiscardChanges, 0)) + +enum : uint { HDM_CLEARFILTER = HDM_FIRST+24 } +// #define Header_ClearFilter(hwnd, i) (int)SNDMSG((hwnd), HDM_CLEARFILTER, (WPARAM)(i), 0) +// #define Header_ClearAllFilters(hwnd) (int)SNDMSG((hwnd), HDM_CLEARFILTER, (WPARAM)-1, 0) +// #endif + +enum : uint { HDN_ITEMCHANGINGA = HDN_FIRST-0 } +enum : uint { HDN_ITEMCHANGINGW = HDN_FIRST-20 } +enum : uint { HDN_ITEMCHANGEDA = HDN_FIRST-1 } +enum : uint { HDN_ITEMCHANGEDW = HDN_FIRST-21 } +enum : uint { HDN_ITEMCLICKA = HDN_FIRST-2 } +enum : uint { HDN_ITEMCLICKW = HDN_FIRST-22 } +enum : uint { HDN_ITEMDBLCLICKA = HDN_FIRST-3 } +enum : uint { HDN_ITEMDBLCLICKW = HDN_FIRST-23 } +enum : uint { HDN_DIVIDERDBLCLICKA = HDN_FIRST-5 } +enum : uint { HDN_DIVIDERDBLCLICKW = HDN_FIRST-25 } +enum : uint { HDN_BEGINTRACKA = HDN_FIRST-6 } +enum : uint { HDN_BEGINTRACKW = HDN_FIRST-26 } +enum : uint { HDN_ENDTRACKA = HDN_FIRST-7 } +enum : uint { HDN_ENDTRACKW = HDN_FIRST-27 } +enum : uint { HDN_TRACKA = HDN_FIRST-8 } +enum : uint { HDN_TRACKW = HDN_FIRST-28 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDN_GETDISPINFOA = HDN_FIRST-9 } +enum : uint { HDN_GETDISPINFOW = HDN_FIRST-29 } +enum : uint { HDN_BEGINDRAG = HDN_FIRST-10 } +enum : uint { HDN_ENDDRAG = HDN_FIRST-11 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { HDN_FILTERCHANGE = HDN_FIRST-12 } +enum : uint { HDN_FILTERBTNCLICK = HDN_FIRST-13 } +// #endif + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #if (_WIN32_IE >= 0x0300) +// #... +// #endif +// #else +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; +// #if (_WIN32_IE >= 0x0300) +alias HDN_GETDISPINFOA HDN_GETDISPINFO; +// #endif +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias NMHEADERA HD_NOTIFYA; +alias NMHEADERW HD_NOTIFYW; +// #else +// #... +// #... +// #... +// #... +// #endif +alias NMHEADER HD_NOTIFY; + +struct tagNMHEADERA { + NMHDR hdr; + int iItem; + int iButton; + HDITEMA *pitem; +} +alias tagNMHEADERA NMHEADERA; +alias tagNMHEADERA* LPNMHEADERA; + +struct tagNMHEADERW { + NMHDR hdr; + int iItem; + int iButton; + HDITEMW *pitem; +} +alias tagNMHEADERW NMHEADERW; +alias tagNMHEADERW* LPNMHEADERW; + +// #ifdef UNICODE +// #... +// #... +// #else +alias NMHEADERA NMHEADER; +alias LPNMHEADERA LPNMHEADER; +// #endif + +struct tagNMHDDISPINFOW { + NMHDR hdr; + int iItem; + UINT mask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias tagNMHDDISPINFOW NMHDDISPINFOW; +alias tagNMHDDISPINFOW* LPNMHDDISPINFOW; + +struct tagNMHDDISPINFOA { + NMHDR hdr; + int iItem; + UINT mask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias tagNMHDDISPINFOA NMHDDISPINFOA; +alias tagNMHDDISPINFOA* LPNMHDDISPINFOA; + +// #ifdef UNICODE +// #... +// #... +// #else +alias NMHDDISPINFOA NMHDDISPINFO; +alias LPNMHDDISPINFOA LPNMHDDISPINFO; +// #endif + +// #if (_WIN32_IE >= 0x0500) +struct tagNMHDFILTERBTNCLICK { + NMHDR hdr; + INT iItem; + RECT rc; +} +alias tagNMHDFILTERBTNCLICK NMHDFILTERBTNCLICK; +alias tagNMHDFILTERBTNCLICK* LPNMHDFILTERBTNCLICK; + +// #endif + +// #endif // NOHEADER + +// #ifndef NOTOOLBAR + +// #ifdef _WIN32 +const wchar[] TOOLBARCLASSNAMEW = "ToolbarWindow32"; +const char[] TOOLBARCLASSNAMEA = "ToolbarWindow32"; + +// #ifdef UNICODE +// #... +// #else +alias TOOLBARCLASSNAMEA TOOLBARCLASSNAME; +// #endif + +// #else +// #... +// #endif + +struct _TBBUTTON { + int iBitmap; + int idCommand; + BYTE fsState; + BYTE fsStyle; +// #ifdef _WIN64 +// ... +// #elif defined(_WIN32) + BYTE bReserved[2]; +// #endif + DWORD_PTR dwData; + INT_PTR iString; +} +alias _TBBUTTON TBBUTTON; +alias _TBBUTTON* PTBBUTTON; +alias _TBBUTTON* LPTBBUTTON; + +alias TBBUTTON* LPCTBBUTTON; + +struct _COLORMAP { + COLORREF from; + COLORREF to; +} +alias _COLORMAP COLORMAP; +alias _COLORMAP* LPCOLORMAP; + +extern(Windows) export HWND CreateToolbarEx(HWND hwnd, DWORD ws, UINT wID, int nBitmaps, + HINSTANCE hBMInst, UINT_PTR wBMID, LPCTBBUTTON lpButtons, + int iNumButtons, int dxButton, int dyButton, + int dxBitmap, int dyBitmap, UINT uStructSize); + +extern(Windows) export HBITMAP CreateMappedBitmap(HINSTANCE hInstance, INT_PTR idBitmap, + UINT wFlags, LPCOLORMAP lpColorMap, + int iNumMaps); + +enum : uint { CMB_MASKED = 0x02 } +enum : uint { TBSTATE_CHECKED = 0x01 } +enum : uint { TBSTATE_PRESSED = 0x02 } +enum : uint { TBSTATE_ENABLED = 0x04 } +enum : uint { TBSTATE_HIDDEN = 0x08 } +enum : uint { TBSTATE_INDETERMINATE = 0x10 } +enum : uint { TBSTATE_WRAP = 0x20 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBSTATE_ELLIPSES = 0x40 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBSTATE_MARKED = 0x80 } +// #endif + +enum : uint { TBSTYLE_BUTTON = 0x0000 } +enum : uint { TBSTYLE_SEP = 0x0001 } +enum : uint { TBSTYLE_CHECK = 0x0002 } +enum : uint { TBSTYLE_GROUP = 0x0004 } +enum : uint { TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBSTYLE_DROPDOWN = 0x0008 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBSTYLE_AUTOSIZE = 0x0010 } +enum : uint { TBSTYLE_NOPREFIX = 0x0020 } +// #endif + +enum : uint { TBSTYLE_TOOLTIPS = 0x0100 } +enum : uint { TBSTYLE_WRAPABLE = 0x0200 } +enum : uint { TBSTYLE_ALTDRAG = 0x0400 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBSTYLE_FLAT = 0x0800 } +enum : uint { TBSTYLE_LIST = 0x1000 } +enum : uint { TBSTYLE_CUSTOMERASE = 0x2000 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBSTYLE_REGISTERDROP = 0x4000 } +enum : uint { TBSTYLE_TRANSPARENT = 0x8000 } +enum : uint { TBSTYLE_EX_DRAWDDARROWS = 0x00000001 } +// #endif + +// #if (_WIN32_IE >= 0x0500) +alias TBSTYLE_BUTTON BTNS_BUTTON; +alias TBSTYLE_SEP BTNS_SEP; +alias TBSTYLE_CHECK BTNS_CHECK; +alias TBSTYLE_GROUP BTNS_GROUP; +alias TBSTYLE_CHECKGROUP BTNS_CHECKGROUP; +alias TBSTYLE_DROPDOWN BTNS_DROPDOWN; +alias TBSTYLE_AUTOSIZE BTNS_AUTOSIZE; +alias TBSTYLE_NOPREFIX BTNS_NOPREFIX; +// #if (_WIN32_IE >= 0x0501) +enum : uint { BTNS_SHOWTEXT = 0x0040 } +// #endif // 0x0501 +enum : uint { BTNS_WHOLEDROPDOWN = 0x0080 } +// #endif + +// #if (_WIN32_IE >= 0x0501) +enum : uint { TBSTYLE_EX_MIXEDBUTTONS = 0x00000008 } +enum : uint { TBSTYLE_EX_HIDECLIPPEDBUTTONS = 0x00000010 } +// #endif // 0x0501 + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { TBSTYLE_EX_DOUBLEBUFFER = 0x00000080 } +// #endif + +// #if (_WIN32_IE >= 0x0400) + +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; +// #if (_WIN32_WINNT >= 0x501) + int iListGap; +// #endif +} +alias _NMTBCUSTOMDRAW NMTBCUSTOMDRAW; +alias _NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; + +enum : uint { TBCDRF_NOEDGES = 0x00010000 } +enum : uint { TBCDRF_HILITEHOTTRACK = 0x00020000 } +enum : uint { TBCDRF_NOOFFSET = 0x00040000 } +enum : uint { TBCDRF_NOMARK = 0x00080000 } +enum : uint { TBCDRF_NOETCHEDEFFECT = 0x00100000 } +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { TBCDRF_BLENDICON = 0x00200000 } +enum : uint { TBCDRF_NOBACKGROUND = 0x00400000 } +// #endif + +enum : uint { TB_ENABLEBUTTON = WM_USER + 1 } +enum : uint { TB_CHECKBUTTON = WM_USER + 2 } +enum : uint { TB_PRESSBUTTON = WM_USER + 3 } +enum : uint { TB_HIDEBUTTON = WM_USER + 4 } +enum : uint { TB_INDETERMINATE = WM_USER + 5 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TB_MARKBUTTON = WM_USER + 6 } +// #endif +enum : uint { TB_ISBUTTONENABLED = WM_USER + 9 } +enum : uint { TB_ISBUTTONCHECKED = WM_USER + 10 } +enum : uint { TB_ISBUTTONPRESSED = WM_USER + 11 } +enum : uint { TB_ISBUTTONHIDDEN = WM_USER + 12 } +enum : uint { TB_ISBUTTONINDETERMINATE = WM_USER + 13 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 } +// #endif +enum : uint { TB_SETSTATE = WM_USER + 17 } +enum : uint { TB_GETSTATE = WM_USER + 18 } +enum : uint { TB_ADDBITMAP = WM_USER + 19 } + +// #ifdef _WIN32 +struct tagTBADDBITMAP { + HINSTANCE hInst; + UINT_PTR nID; +} +alias tagTBADDBITMAP TBADDBITMAP; +alias tagTBADDBITMAP* LPTBADDBITMAP; + +HINSTANCE HINST_COMMCTRL = cast(HINSTANCE)(-1); +enum : uint { IDB_STD_SMALL_COLOR = 0 } +enum : uint { IDB_STD_LARGE_COLOR = 1 } +enum : uint { IDB_VIEW_SMALL_COLOR = 4 } +enum : uint { IDB_VIEW_LARGE_COLOR = 5 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { IDB_HIST_SMALL_COLOR = 8 } +enum : uint { IDB_HIST_LARGE_COLOR = 9 } +// #endif + +enum : uint { STD_CUT = 0 } +enum : uint { STD_COPY = 1 } +enum : uint { STD_PASTE = 2 } +enum : uint { STD_UNDO = 3 } +enum : uint { STD_REDOW = 4 } +enum : uint { STD_DELETE = 5 } +enum : uint { STD_FILENEW = 6 } +enum : uint { STD_FILEOPEN = 7 } +enum : uint { STD_FILESAVE = 8 } +enum : uint { STD_PRINTPRE = 9 } +enum : uint { STD_PROPERTIES = 10 } +enum : uint { STD_HELP = 11 } +enum : uint { STD_FIND = 12 } +enum : uint { STD_REPLACE = 13 } +enum : uint { STD_PRINT = 14 } + +enum : uint { VIEW_LARGEICONS = 0 } +enum : uint { VIEW_SMALLICONS = 1 } +enum : uint { VIEW_LIST = 2 } +enum : uint { VIEW_DETAILS = 3 } +enum : uint { VIEW_SORTNAME = 4 } +enum : uint { VIEW_SORTSIZE = 5 } +enum : uint { VIEW_SORTDATE = 6 } +enum : uint { VIEW_SORTTYPE = 7 } +enum : uint { VIEW_PARENTFOLDER = 8 } +enum : uint { VIEW_NETCONNECT = 9 } +enum : uint { VIEW_NETDISCONNECT = 10 } +enum : uint { VIEW_NEWFOLDER = 11 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { VIEW_VIEWMENU = 12 } +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { HIST_BACK = 0 } +enum : uint { HIST_FORWARD = 1 } +enum : uint { HIST_FAVORITES = 2 } +enum : uint { HIST_ADDTOFAVORITES = 3 } +enum : uint { HIST_VIEWTREE = 4 } +// #endif + +// #endif + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TB_ADDBUTTONSA = WM_USER + 20 } +enum : uint { TB_INSERTBUTTONA = WM_USER + 21 } +// #else +// #... +// #... +// #endif + +enum : uint { TB_DELETEBUTTON = WM_USER + 22 } +enum : uint { TB_GETBUTTON = WM_USER + 23 } +enum : uint { TB_BUTTONCOUNT = WM_USER + 24 } +enum : uint { TB_COMMANDTOINDEX = WM_USER + 25 } + +// #ifdef _WIN32 + +struct tagTBSAVEPARAMSA { + HKEY hkr; + LPCSTR pszSubKey; + LPCSTR pszValueName; +} +alias tagTBSAVEPARAMSA TBSAVEPARAMSA; +alias tagTBSAVEPARAMSA* LPTBSAVEPARAMSA; + +struct tagTBSAVEPARAMSW { + HKEY hkr; + LPCWSTR pszSubKey; + LPCWSTR pszValueName; +} +alias tagTBSAVEPARAMSW TBSAVEPARAMSW; +alias tagTBSAVEPARAMSW* LPTBSAVEPARAMW; + +// #ifdef UNICODE +// #... +// #... +// #else +alias TBSAVEPARAMSA TBSAVEPARAMS; +alias LPTBSAVEPARAMSA LPTBSAVEPARAMS; +// #endif + +// #endif // _WIN32 + +enum : uint { TB_SAVERESTOREA = WM_USER + 26 } +enum : uint { TB_SAVERESTOREW = WM_USER + 76 } +enum : uint { TB_CUSTOMIZE = WM_USER + 27 } +enum : uint { TB_ADDSTRINGA = WM_USER + 28 } +enum : uint { TB_ADDSTRINGW = WM_USER + 77 } +enum : uint { TB_GETITEMRECT = WM_USER + 29 } +enum : uint { TB_BUTTONSTRUCTSIZE = WM_USER + 30 } +enum : uint { TB_SETBUTTONSIZE = WM_USER + 31 } +enum : uint { TB_SETBITMAPSIZE = WM_USER + 32 } +enum : uint { TB_AUTOSIZE = WM_USER + 33 } +enum : uint { TB_GETTOOLTIPS = WM_USER + 35 } +enum : uint { TB_SETTOOLTIPS = WM_USER + 36 } +enum : uint { TB_SETPARENT = WM_USER + 37 } +enum : uint { TB_SETROWS = WM_USER + 39 } +enum : uint { TB_GETROWS = WM_USER + 40 } +enum : uint { TB_SETCMDID = WM_USER + 42 } +enum : uint { TB_CHANGEBITMAP = WM_USER + 43 } +enum : uint { TB_GETBITMAP = WM_USER + 44 } +enum : uint { TB_GETBUTTONTEXTA = WM_USER + 45 } +enum : uint { TB_GETBUTTONTEXTW = WM_USER + 75 } +enum : uint { TB_REPLACEBITMAP = WM_USER + 46 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TB_SETINDENT = WM_USER + 47 } +enum : uint { TB_SETIMAGELIST = WM_USER + 48 } +enum : uint { TB_GETIMAGELIST = WM_USER + 49 } +enum : uint { TB_LOADIMAGES = WM_USER + 50 } +enum : uint { TB_GETRECT = WM_USER + 51 } +enum : uint { TB_SETHOTIMAGELIST = WM_USER + 52 } +enum : uint { TB_GETHOTIMAGELIST = WM_USER + 53 } +enum : uint { TB_SETDISABLEDIMAGELIST = WM_USER + 54 } +enum : uint { TB_GETDISABLEDIMAGELIST = WM_USER + 55 } +enum : uint { TB_SETSTYLE = WM_USER + 56 } +enum : uint { TB_GETSTYLE = WM_USER + 57 } +enum : uint { TB_GETBUTTONSIZE = WM_USER + 58 } +enum : uint { TB_SETBUTTONWIDTH = WM_USER + 59 } +enum : uint { TB_SETMAXTEXTROWS = WM_USER + 60 } +enum : uint { TB_GETTEXTROWS = WM_USER + 61 } +// #endif // _WIN32_IE >= 0x0300 + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias TB_GETBUTTONTEXTA TB_GETBUTTONTEXT; +alias TB_SAVERESTOREA TB_SAVERESTORE; +alias TB_ADDSTRINGA TB_ADDSTRING; +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TB_GETOBJECT = WM_USER + 62 } +enum : uint { TB_GETHOTITEM = WM_USER + 71 } +enum : uint { TB_SETHOTITEM = WM_USER + 72 } +enum : uint { TB_SETANCHORHIGHLIGHT = WM_USER + 73 } +enum : uint { TB_GETANCHORHIGHLIGHT = WM_USER + 74 } +enum : uint { TB_MAPACCELERATORA = WM_USER + 78 } + +struct _0 { + int iButton; + DWORD dwFlags; +} +alias _0 TBINSERTMARK; +alias _0* LPTBINSERTMARK; + +enum : uint { TBIMHT_AFTER = 0x00000001 } +enum : uint { TBIMHT_BACKGROUND = 0x00000002 } + +enum : uint { TB_GETINSERTMARK = WM_USER + 79 } +enum : uint { TB_SETINSERTMARK = WM_USER + 80 } +enum : uint { TB_INSERTMARKHITTEST = WM_USER + 81 } +enum : uint { TB_MOVEBUTTON = WM_USER + 82 } +enum : uint { TB_GETMAXSIZE = WM_USER + 83 } +enum : uint { TB_SETEXTENDEDSTYLE = WM_USER + 84 } +enum : uint { TB_GETEXTENDEDSTYLE = WM_USER + 85 } +enum : uint { TB_GETPADDING = WM_USER + 86 } +enum : uint { TB_SETPADDING = WM_USER + 87 } +enum : uint { TB_SETINSERTMARKCOLOR = WM_USER + 88 } +enum : uint { TB_GETINSERTMARKCOLOR = WM_USER + 89 } + +alias CCM_SETCOLORSCHEME TB_SETCOLORSCHEME; +alias CCM_GETCOLORSCHEME TB_GETCOLORSCHEME; + +alias CCM_SETUNICODEFORMAT TB_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT TB_GETUNICODEFORMAT; + +enum : uint { TB_MAPACCELERATORW = WM_USER + 90 } +// #ifdef UNICODE +// #... +// #else +alias TB_MAPACCELERATORA TB_MAPACCELERATOR; +// #endif + +// #endif // _WIN32_IE >= 0x0400 + +struct _1 { + HINSTANCE hInstOld; + UINT_PTR nIDOld; + HINSTANCE hInstNew; + UINT_PTR nIDNew; + int nButtons; +} +alias _1 TBREPLACEBITMAP; +alias _1* LPTBREPLACEBITMAP; + +// #ifdef _WIN32 + +enum : uint { TBBF_LARGE = 0x0001 } + +enum : uint { TB_GETBITMAPFLAGS = WM_USER + 41 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBIF_IMAGE = 0x00000001 } +enum : uint { TBIF_TEXT = 0x00000002 } +enum : uint { TBIF_STATE = 0x00000004 } +enum : uint { TBIF_STYLE = 0x00000008 } +enum : uint { TBIF_LPARAM = 0x00000010 } +enum : uint { TBIF_COMMAND = 0x00000020 } +enum : uint { TBIF_SIZE = 0x00000040 } + +// #if (_WIN32_IE >= 0x0500) +enum : uint { TBIF_BYINDEX = 0x80000000 } +// #endif + +struct _2 { + UINT cbSize; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPSTR pszText; + int cchText; +} +alias _2 TBBUTTONINFOA; +alias _2* LPTBBUTTONINFOA; + +struct _3 { + UINT cbSize; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPWSTR pszText; + int cchText; +} +alias _3 TBBUTTONINFOW; +alias _3* LPTBBUTTONINFOW; + +// #ifdef UNICODE +// #... +// #... +// #else +alias TBBUTTONINFOA TBBUTTONINFO; +alias LPTBBUTTONINFOA LPTBBUTTONINFO; +// #endif + +enum : uint { TB_GETBUTTONINFOW = WM_USER + 63 } +enum : uint { TB_SETBUTTONINFOW = WM_USER + 64 } +enum : uint { TB_GETBUTTONINFOA = WM_USER + 65 } +enum : uint { TB_SETBUTTONINFOA = WM_USER + 66 } +// #ifdef UNICODE +// #... +// #... +// #else +alias TB_GETBUTTONINFOA TB_GETBUTTONINFO; +alias TB_SETBUTTONINFOA TB_SETBUTTONINFO; +// #endif + +enum : uint { TB_INSERTBUTTONW = WM_USER + 67 } +enum : uint { TB_ADDBUTTONSW = WM_USER + 68 } + +enum : uint { TB_HITTEST = WM_USER + 69 } + +// #ifdef UNICODE +// #... +// #... +// #else +alias TB_INSERTBUTTONA TB_INSERTBUTTON; +alias TB_ADDBUTTONSA TB_ADDBUTTONS; +// #endif + +enum : uint { TB_SETDRAWTEXTFLAGS = WM_USER + 70 } + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { TB_GETSTRINGW = WM_USER + 91 } +enum : uint { TB_GETSTRINGA = WM_USER + 92 } +// #ifdef UNICODE +// #... +// #else +alias TB_GETSTRINGA TB_GETSTRING; +// #endif + +// #endif // _WIN32_IE >= 0x0500 + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { TBMF_PAD = 0x00000001 } +enum : uint { TBMF_BARPAD = 0x00000002 } +enum : uint { TBMF_BUTTONSPACING = 0x00000004 } + +struct _4 { + UINT cbSize; + DWORD dwMask; + int cxPad; + int cyPad; + int cxBarPad; + int cyBarPad; + int cxButtonSpacing; + int cyButtonSpacing; +} +alias _4 TBMETRICS; +alias _4* LPTBMETRICS; + +enum : uint { TB_GETMETRICS = WM_USER + 101 } +enum : uint { TB_SETMETRICS = WM_USER + 102 } +// #endif + +// #if (_WIN32_WINNT >= 0x501) +alias CCM_SETWINDOWTHEME TB_SETWINDOWTHEME; +// #endif + +enum : uint { TBN_GETBUTTONINFOA = TBN_FIRST-0 } +enum : uint { TBN_BEGINDRAG = TBN_FIRST-1 } +enum : uint { TBN_ENDDRAG = TBN_FIRST-2 } +enum : uint { TBN_BEGINADJUST = TBN_FIRST-3 } +enum : uint { TBN_ENDADJUST = TBN_FIRST-4 } +enum : uint { TBN_RESET = TBN_FIRST-5 } +enum : uint { TBN_QUERYINSERT = TBN_FIRST-6 } +enum : uint { TBN_QUERYDELETE = TBN_FIRST-7 } +enum : uint { TBN_TOOLBARCHANGE = TBN_FIRST-8 } +enum : uint { TBN_CUSTHELP = TBN_FIRST-9 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBN_DROPDOWN = TBN_FIRST - 10 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBN_GETOBJECT = TBN_FIRST - 12 } + +struct tagNMTBHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; +} +alias tagNMTBHOTITEM NMTBHOTITEM; +alias tagNMTBHOTITEM* LPNMTBHOTITEM; + +enum : uint { HICF_OTHER = 0x00000000 } +enum : uint { HICF_MOUSE = 0x00000001 } +enum : uint { HICF_ARROWKEYS = 0x00000002 } +enum : uint { HICF_ACCELERATOR = 0x00000004 } +enum : uint { HICF_DUPACCEL = 0x00000008 } +enum : uint { HICF_ENTERING = 0x00000010 } +enum : uint { HICF_LEAVING = 0x00000020 } +enum : uint { HICF_RESELECT = 0x00000040 } +enum : uint { HICF_LMOUSE = 0x00000080 } +enum : uint { HICF_TOGGLEDROPDOWN = 0x00000100 } + +enum : uint { TBN_HOTITEMCHANGE = TBN_FIRST - 13 } +enum : uint { TBN_DRAGOUT = TBN_FIRST - 14 } +enum : uint { TBN_DELETINGBUTTON = TBN_FIRST - 15 } +enum : uint { TBN_GETDISPINFOA = TBN_FIRST - 16 } +enum : uint { TBN_GETDISPINFOW = TBN_FIRST - 17 } +enum : uint { TBN_GETINFOTIPA = TBN_FIRST - 18 } +enum : uint { TBN_GETINFOTIPW = TBN_FIRST - 19 } +enum : uint { TBN_GETBUTTONINFOW = TBN_FIRST - 20 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { TBN_RESTORE = TBN_FIRST - 21 } +enum : uint { TBN_SAVE = TBN_FIRST - 22 } +enum : uint { TBN_INITCUSTOMIZE = TBN_FIRST - 23 } +enum : uint { TBNRF_HIDEHELP = 0x00000001 } +enum : uint { TBNRF_ENDCUSTOMIZE = 0x00000002 } +// #endif // (_WIN32_IE >= 0x0500) + +// #if (_WIN32_IE >= 0x0500) + +struct tagNMTBSAVE { + NMHDR hdr; + DWORD * pData; + DWORD * pCurrent; + UINT cbData; + int iItem; + int cButtons; + TBBUTTON tbButton; +} +alias tagNMTBSAVE NMTBSAVE; +alias tagNMTBSAVE* LPNMTBSAVE; + +struct tagNMTBRESTORE { + NMHDR hdr; + DWORD * pData; + DWORD * pCurrent; + UINT cbData; + int iItem; + int cButtons; + int cbBytesPerRecord; + TBBUTTON tbButton; +} +alias tagNMTBRESTORE NMTBRESTORE; +alias tagNMTBRESTORE* LPNMTBRESTORE; + +// #endif // (_WIN32_IE >= 0x0500) + +struct tagNMTBGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; +} +alias tagNMTBGETINFOTIPA NMTBGETINFOTIPA; +alias tagNMTBGETINFOTIPA* LPNMTBGETINFOTIPA; + +struct tagNMTBGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; +} +alias tagNMTBGETINFOTIPW NMTBGETINFOTIPW; +alias tagNMTBGETINFOTIPW* LPNMTBGETINFOTIPW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias TBN_GETINFOTIPA TBN_GETINFOTIP; +alias NMTBGETINFOTIPA NMTBGETINFOTIP; +alias LPNMTBGETINFOTIPA LPNMTBGETINFOTIP; +// #endif + +enum : uint { TBNF_IMAGE = 0x00000001 } +enum : uint { TBNF_TEXT = 0x00000002 } +enum : uint { TBNF_DI_SETITEM = 0x10000000 } + +struct _5 { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPSTR pszText; + int cchText; +} +alias _5 NMTBDISPINFOA; +alias _5* LPNMTBDISPINFOA; + +struct _6 { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPWSTR pszText; + int cchText; +} +alias _6 NMTBDISPINFOW; +alias _6* LPNMTBDISPINFOW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias TBN_GETDISPINFOA TBN_GETDISPINFO; +alias NMTBDISPINFOA NMTBDISPINFO; +alias LPNMTBDISPINFOA LPNMTBDISPINFO; +// #endif + +enum : uint { TBDDRET_DEFAULT = 0 } +enum : uint { TBDDRET_NODEFAULT = 1 } +enum : uint { TBDDRET_TREATPRESSED = 2 } + +// #endif + +// #ifdef UNICODE +// #... +// #else +alias TBN_GETBUTTONINFOA TBN_GETBUTTONINFO; +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias NMTOOLBARA TBNOTIFYA; +alias NMTOOLBARW TBNOTIFYW; +alias LPNMTOOLBARA LPTBNOTIFYA; +alias LPNMTOOLBARW LPTBNOTIFYW; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias NMTOOLBAR TBNOTIFY; +alias LPNMTOOLBAR LPTBNOTIFY; + +// #if (_WIN32_IE >= 0x0300) +struct tagNMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; +// #if (_WIN32_IE >= 0x500) + RECT rcButton; +// #endif +} +alias tagNMTOOLBARA NMTOOLBARA; +alias tagNMTOOLBARA* LPNMTOOLBARA; + +// #endif + +// #if (_WIN32_IE >= 0x0300) +struct tagNMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; +// #if (_WIN32_IE >= 0x500) + RECT rcButton; +// #endif +} +alias tagNMTOOLBARW NMTOOLBARW; +alias tagNMTOOLBARW* LPNMTOOLBARW; + +// #endif + +// #ifdef UNICODE +// #... +// #... +// #else +alias NMTOOLBARA NMTOOLBAR; +alias LPNMTOOLBARA LPNMTOOLBAR; +// #endif + +// #endif + +// #endif // NOTOOLBAR + +// #if (_WIN32_IE >= 0x0300) + +// #ifndef NOREBAR + +// #ifdef _WIN32 +const wchar[] REBARCLASSNAMEW = "ReBarWindow32"; +const char[] REBARCLASSNAMEA = "ReBarWindow32"; + +// #ifdef UNICODE +// #... +// #else +alias REBARCLASSNAMEA REBARCLASSNAME; +// #endif + +// #else +// #... +// #endif + +enum : uint { RBIM_IMAGELIST = 0x00000001 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { RBS_TOOLTIPS = 0x0100 } +enum : uint { RBS_VARHEIGHT = 0x0200 } +enum : uint { RBS_BANDBORDERS = 0x0400 } +enum : uint { RBS_FIXEDORDER = 0x0800 } +enum : uint { RBS_REGISTERDROP = 0x1000 } +enum : uint { RBS_AUTOSIZE = 0x2000 } +enum : uint { RBS_VERTICALGRIPPER = 0x4000 } +enum : uint { RBS_DBLCLKTOGGLE = 0x8000 } +// #else +// #... +// #... +// #... +// #... +// #endif // _WIN32_IE >= 0x0400 + +struct tagREBARINFO { + UINT cbSize; + UINT fMask; +// #ifndef NOIMAGEAPIS + HIMAGELIST himl; +// #else +// ... +// #endif +} +alias tagREBARINFO REBARINFO; +alias tagREBARINFO* LPREBARINFO; + +enum : uint { RBBS_BREAK = 0x00000001 } +enum : uint { RBBS_FIXEDSIZE = 0x00000002 } +enum : uint { RBBS_CHILDEDGE = 0x00000004 } +enum : uint { RBBS_HIDDEN = 0x00000008 } +enum : uint { RBBS_NOVERT = 0x00000010 } +enum : uint { RBBS_FIXEDBMP = 0x00000020 } +// #if (_WIN32_IE >= 0x0400) // +enum : uint { RBBS_VARIABLEHEIGHT = 0x00000040 } +enum : uint { RBBS_GRIPPERALWAYS = 0x00000080 } +enum : uint { RBBS_NOGRIPPER = 0x00000100 } +// #if (_WIN32_IE >= 0x0500) // +enum : uint { RBBS_USECHEVRON = 0x00000200 } +// #if (_WIN32_IE >= 0x0501) // +enum : uint { RBBS_HIDETITLE = 0x00000400 } +enum : uint { RBBS_TOPALIGN = 0x00000800 } +// #endif // 0x0501 // +// #endif // 0x0500 // +// #endif // 0x0400 // + +enum : uint { RBBIM_STYLE = 0x00000001 } +enum : uint { RBBIM_COLORS = 0x00000002 } +enum : uint { RBBIM_TEXT = 0x00000004 } +enum : uint { RBBIM_IMAGE = 0x00000008 } +enum : uint { RBBIM_CHILD = 0x00000010 } +enum : uint { RBBIM_CHILDSIZE = 0x00000020 } +enum : uint { RBBIM_SIZE = 0x00000040 } +enum : uint { RBBIM_BACKGROUND = 0x00000080 } +enum : uint { RBBIM_ID = 0x00000100 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { RBBIM_IDEALSIZE = 0x00000200 } +enum : uint { RBBIM_LPARAM = 0x00000400 } +enum : uint { RBBIM_HEADERSIZE = 0x00000800 } +// #endif + +struct tagREBARBANDINFOA { + UINT cbSize; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; +// #if (_WIN32_IE >= 0x0400) + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; +// #endif +} +alias tagREBARBANDINFOA REBARBANDINFOA; +alias tagREBARBANDINFOA* LPREBARBANDINFOA; + +alias REBARBANDINFOA* LPCREBARBANDINFOA; + +// #define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA, wID) +// #define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID) + +struct tagREBARBANDINFOW { + UINT cbSize; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; +// #if (_WIN32_IE >= 0x0400) + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; +// #endif +} +alias tagREBARBANDINFOW REBARBANDINFOW; +alias tagREBARBANDINFOW* LPREBARBANDINFOW; + +alias REBARBANDINFOW* LPCREBARBANDINFOW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #else +alias REBARBANDINFOA REBARBANDINFO; +alias LPREBARBANDINFOA LPREBARBANDINFO; +alias LPCREBARBANDINFOA LPCREBARBANDINFO; +// #define REBARBANDINFO_V3_SIZE REBARBANDINFOA_V3_SIZE +// #endif + +enum : uint { RB_INSERTBANDA = WM_USER + 1 } +enum : uint { RB_DELETEBAND = WM_USER + 2 } +enum : uint { RB_GETBARINFO = WM_USER + 3 } +enum : uint { RB_SETBARINFO = WM_USER + 4 } +// #if (_WIN32_IE < 0x0400) +// #... +// #endif +enum : uint { RB_SETBANDINFOA = WM_USER + 6 } +enum : uint { RB_SETPARENT = WM_USER + 7 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { RB_HITTEST = WM_USER + 8 } +enum : uint { RB_GETRECT = WM_USER + 9 } +// #endif +enum : uint { RB_INSERTBANDW = WM_USER + 10 } +enum : uint { RB_SETBANDINFOW = WM_USER + 11 } +enum : uint { RB_GETBANDCOUNT = WM_USER + 12 } +enum : uint { RB_GETROWCOUNT = WM_USER + 13 } +enum : uint { RB_GETROWHEIGHT = WM_USER + 14 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { RB_IDTOINDEX = WM_USER + 16 } +enum : uint { RB_GETTOOLTIPS = WM_USER + 17 } +enum : uint { RB_SETTOOLTIPS = WM_USER + 18 } +enum : uint { RB_SETBKCOLOR = WM_USER + 19 } +enum : uint { RB_GETBKCOLOR = WM_USER + 20 } +enum : uint { RB_SETTEXTCOLOR = WM_USER + 21 } +enum : uint { RB_GETTEXTCOLOR = WM_USER + 22 } + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { RBSTR_CHANGERECT = 0x0001 } +// #endif + +enum : uint { RB_SIZETORECT = WM_USER + 23 } +// #endif // _WIN32_IE >= 0x0400 + +alias CCM_SETCOLORSCHEME RB_SETCOLORSCHEME; +alias CCM_GETCOLORSCHEME RB_GETCOLORSCHEME; + +// #ifdef UNICODE +// #... +// #... +// #else +alias RB_INSERTBANDA RB_INSERTBAND; +alias RB_SETBANDINFOA RB_SETBANDINFO; +// #endif + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { RB_BEGINDRAG = WM_USER + 24 } +enum : uint { RB_ENDDRAG = WM_USER + 25 } +enum : uint { RB_DRAGMOVE = WM_USER + 26 } +enum : uint { RB_GETBARHEIGHT = WM_USER + 27 } +enum : uint { RB_GETBANDINFOW = WM_USER + 28 } +enum : uint { RB_GETBANDINFOA = WM_USER + 29 } + +// #ifdef UNICODE +// #... +// #else +alias RB_GETBANDINFOA RB_GETBANDINFO; +// #endif + +enum : uint { RB_MINIMIZEBAND = WM_USER + 30 } +enum : uint { RB_MAXIMIZEBAND = WM_USER + 31 } + +enum : uint { RB_GETDROPTARGET = CCM_GETDROPTARGET } + +enum : uint { RB_GETBANDBORDERS = WM_USER + 34 } + +enum : uint { RB_SHOWBAND = WM_USER + 35 } +enum : uint { RB_SETPALETTE = WM_USER + 37 } +enum : uint { RB_GETPALETTE = WM_USER + 38 } +enum : uint { RB_MOVEBAND = WM_USER + 39 } + +alias CCM_SETUNICODEFORMAT RB_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT RB_GETUNICODEFORMAT; + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { RB_GETBANDMARGINS = WM_USER + 40 } +alias CCM_SETWINDOWTHEME RB_SETWINDOWTHEME; +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { RB_PUSHCHEVRON = WM_USER + 43 } +// #endif // _WIN32_IE >= 0x0500 + +enum : uint { RBN_HEIGHTCHANGE = RBN_FIRST - 0 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { RBN_GETOBJECT = RBN_FIRST - 1 } +enum : uint { RBN_LAYOUTCHANGED = RBN_FIRST - 2 } +enum : uint { RBN_AUTOSIZE = RBN_FIRST - 3 } +enum : uint { RBN_BEGINDRAG = RBN_FIRST - 4 } +enum : uint { RBN_ENDDRAG = RBN_FIRST - 5 } +enum : uint { RBN_DELETINGBAND = RBN_FIRST - 6 } +enum : uint { RBN_DELETEDBAND = RBN_FIRST - 7 } +enum : uint { RBN_CHILDSIZE = RBN_FIRST - 8 } + +// #if (_WIN32_IE >= 0x0500) +enum : uint { RBN_CHEVRONPUSHED = RBN_FIRST - 10 } +// #endif // _WIN32_IE >= 0x0500 + +// #if (_WIN32_IE >= 0x0500) +enum : uint { RBN_MINMAX = RBN_FIRST - 21 } +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { RBN_AUTOBREAK = RBN_FIRST - 22 } +// #endif + +struct tagNMREBARCHILDSIZE { + NMHDR hdr; + UINT uBand; + UINT wID; + RECT rcChild; + RECT rcBand; +} +alias tagNMREBARCHILDSIZE NMREBARCHILDSIZE; +alias tagNMREBARCHILDSIZE* LPNMREBARCHILDSIZE; + +struct tagNMREBAR { + NMHDR hdr; + DWORD dwMask; + UINT uBand; + UINT fStyle; + UINT wID; + LPARAM lParam; +} +alias tagNMREBAR NMREBAR; +alias tagNMREBAR* LPNMREBAR; + +enum : uint { RBNM_ID = 0x00000001 } +enum : uint { RBNM_STYLE = 0x00000002 } +enum : uint { RBNM_LPARAM = 0x00000004 } + +struct tagNMRBAUTOSIZE { + NMHDR hdr; + BOOL fChanged; + RECT rcTarget; + RECT rcActual; +} +alias tagNMRBAUTOSIZE NMRBAUTOSIZE; +alias tagNMRBAUTOSIZE* LPNMRBAUTOSIZE; + +// #if (_WIN32_IE >= 0x0500) +struct tagNMREBARCHEVRON { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + RECT rc; + LPARAM lParamNM; +} +alias tagNMREBARCHEVRON NMREBARCHEVRON; +alias tagNMREBARCHEVRON* LPNMREBARCHEVRON; + +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { RBAB_AUTOSIZE = 0x0001 } +enum : uint { RBAB_ADDBAND = 0x0002 } + +struct tagNMREBARAUTOBREAK { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + UINT uMsg; + UINT fStyleCurrent; + BOOL fAutoBreak; +} +alias tagNMREBARAUTOBREAK NMREBARAUTOBREAK; +alias tagNMREBARAUTOBREAK* LPNMREBARAUTOBREAK; + +// #endif + +enum : uint { RBHT_NOWHERE = 0x0001 } +enum : uint { RBHT_CAPTION = 0x0002 } +enum : uint { RBHT_CLIENT = 0x0003 } +enum : uint { RBHT_GRABBER = 0x0004 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { RBHT_CHEVRON = 0x0008 } +// #endif + +struct _RB_HITTESTINFO { + POINT pt; + UINT flags; + int iBand; +} +alias _RB_HITTESTINFO RBHITTESTINFO; +alias _RB_HITTESTINFO* LPRBHITTESTINFO; + +// #endif // _WIN32_IE >= 0x0400 + +// #endif // NOREBAR + +// #endif // _WIN32_IE >= 0x0300 + +// #ifndef NOTOOLTIPS + +// #ifdef _WIN32 + +const wchar[] TOOLTIPS_CLASSW = "tooltips_class32"; +const char[] TOOLTIPS_CLASSA = "tooltips_class32"; + +// #ifdef UNICODE +// #... +// #else +alias TOOLTIPS_CLASSA TOOLTIPS_CLASS; +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias LPTTTOOLINFOA LPTOOLINFOA; +alias LPTTTOOLINFOW LPTOOLINFOW; +alias TTTOOLINFOA TOOLINFOA; +alias TTTOOLINFOW TOOLINFOW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias LPTTTOOLINFO LPTOOLINFO; +alias TTTOOLINFO TOOLINFO; + +// #define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText) +// #define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText) +// #define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lParam) +// #define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lParam) +// #define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpReserved) +// #define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpReserved) + +struct tagTOOLINFOA { + UINT cbSize; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; +// #if (_WIN32_IE >= 0x0300) + LPARAM lParam; +// #endif +// #if (_WIN32_WINNT >= 0x0501) + void *lpReserved; +// #endif +} +alias tagTOOLINFOA TTTOOLINFOA; +alias tagTOOLINFOA* PTOOLINFOA; +alias tagTOOLINFOA* LPTTTOOLINFOA; + +struct tagTOOLINFOW { + UINT cbSize; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; +// #if (_WIN32_IE >= 0x0300) + LPARAM lParam; +// #endif +// #if (_WIN32_WINNT >= 0x0501) + void *lpReserved; +// #endif +} +alias tagTOOLINFOW TTTOOLINFOW; +alias tagTOOLINFOW* PTOOLINFOW; +alias tagTOOLINFOW* LPTTTOOLINFOW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #else +alias PTOOLINFOA PTOOLINFO; +alias TTTOOLINFOA TTTOOLINFO; +alias LPTTTOOLINFOA LPTTTOOLINFO; +// #define TTTOOLINFO_V1_SIZE TTTOOLINFOA_V1_SIZE +// #endif + +enum : uint { TTS_ALWAYSTIP = 0x01 } +enum : uint { TTS_NOPREFIX = 0x02 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { TTS_NOANIMATE = 0x10 } +enum : uint { TTS_NOFADE = 0x20 } +enum : uint { TTS_BALLOON = 0x40 } +enum : uint { TTS_CLOSE = 0x80 } +// #endif + +enum : uint { TTF_IDISHWND = 0x0001 } + +enum : uint { TTF_CENTERTIP = 0x0002 } +enum : uint { TTF_RTLREADING = 0x0004 } +enum : uint { TTF_SUBCLASS = 0x0010 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TTF_TRACK = 0x0020 } +enum : uint { TTF_ABSOLUTE = 0x0080 } +enum : uint { TTF_TRANSPARENT = 0x0100 } +// #if (_WIN32_IE >= 0x0501) +enum : uint { TTF_PARSELINKS = 0x1000 } +// #endif // _WIN32_IE >= 0x0501 +enum : uint { TTF_DI_SETITEM = 0x8000 } +// #endif // _WIN32_IE >= 0x0300 + +enum : uint { TTDT_AUTOMATIC = 0 } +enum : uint { TTDT_RESHOW = 1 } +enum : uint { TTDT_AUTOPOP = 2 } +enum : uint { TTDT_INITIAL = 3 } + +enum : uint { TTI_NONE = 0 } +enum : uint { TTI_INFO = 1 } +enum : uint { TTI_WARNING = 2 } +enum : uint { TTI_ERROR = 3 } + +enum : uint { TTM_ACTIVATE = WM_USER + 1 } +enum : uint { TTM_SETDELAYTIME = WM_USER + 3 } +enum : uint { TTM_ADDTOOLA = WM_USER + 4 } +enum : uint { TTM_ADDTOOLW = WM_USER + 50 } +enum : uint { TTM_DELTOOLA = WM_USER + 5 } +enum : uint { TTM_DELTOOLW = WM_USER + 51 } +enum : uint { TTM_NEWTOOLRECTA = WM_USER + 6 } +enum : uint { TTM_NEWTOOLRECTW = WM_USER + 52 } +enum : uint { TTM_RELAYEVENT = WM_USER + 7 } + +enum : uint { TTM_GETTOOLINFOA = WM_USER + 8 } +enum : uint { TTM_GETTOOLINFOW = WM_USER + 53 } + +enum : uint { TTM_SETTOOLINFOA = WM_USER + 9 } +enum : uint { TTM_SETTOOLINFOW = WM_USER + 54 } + +enum : uint { TTM_HITTESTA = WM_USER +10 } +enum : uint { TTM_HITTESTW = WM_USER +55 } +enum : uint { TTM_GETTEXTA = WM_USER +11 } +enum : uint { TTM_GETTEXTW = WM_USER +56 } +enum : uint { TTM_UPDATETIPTEXTA = WM_USER +12 } +enum : uint { TTM_UPDATETIPTEXTW = WM_USER +57 } +enum : uint { TTM_GETTOOLCOUNT = WM_USER +13 } +enum : uint { TTM_ENUMTOOLSA = WM_USER +14 } +enum : uint { TTM_ENUMTOOLSW = WM_USER +58 } +enum : uint { TTM_GETCURRENTTOOLA = WM_USER + 15 } +enum : uint { TTM_GETCURRENTTOOLW = WM_USER + 59 } +enum : uint { TTM_WINDOWFROMPOINT = WM_USER + 16 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TTM_TRACKACTIVATE = WM_USER + 17 } +enum : uint { TTM_TRACKPOSITION = WM_USER + 18 } +enum : uint { TTM_SETTIPBKCOLOR = WM_USER + 19 } +enum : uint { TTM_SETTIPTEXTCOLOR = WM_USER + 20 } +enum : uint { TTM_GETDELAYTIME = WM_USER + 21 } +enum : uint { TTM_GETTIPBKCOLOR = WM_USER + 22 } +enum : uint { TTM_GETTIPTEXTCOLOR = WM_USER + 23 } +enum : uint { TTM_SETMAXTIPWIDTH = WM_USER + 24 } +enum : uint { TTM_GETMAXTIPWIDTH = WM_USER + 25 } +enum : uint { TTM_SETMARGIN = WM_USER + 26 } +enum : uint { TTM_GETMARGIN = WM_USER + 27 } +enum : uint { TTM_POP = WM_USER + 28 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TTM_UPDATE = WM_USER + 29 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { TTM_GETBUBBLESIZE = WM_USER + 30 } +enum : uint { TTM_ADJUSTRECT = WM_USER + 31 } +enum : uint { TTM_SETTITLEA = WM_USER + 32 } +enum : uint { TTM_SETTITLEW = WM_USER + 33 } +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { TTM_POPUP = WM_USER + 34 } +enum : uint { TTM_GETTITLE = WM_USER + 35 } + +struct _TTGETTITLE { + DWORD dwSize; + UINT uTitleBitmap; + UINT cch; + WCHAR * pszTitle; +} +alias _TTGETTITLE TTGETTITLE; +alias _TTGETTITLE* PTTGETTITLE; + +// #endif + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #if (_WIN32_IE >= 0x0500) +// #... +// #endif +// #else +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; +// #if (_WIN32_IE >= 0x0500) +alias TTM_SETTITLEA TTM_SETTITLE; +// #endif +// #endif + +// #if (_WIN32_WINNT >= 0x501) +alias CCM_SETWINDOWTHEME TTM_SETWINDOWTHEME; +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias LPTTHITTESTINFOW LPHITTESTINFOW; +alias LPTTHITTESTINFOA LPHITTESTINFOA; +// #else +// #... +// #... +// #endif + +alias LPTTHITTESTINFO LPHITTESTINFO; + +struct _TT_HITTESTINFOA { + HWND hwnd; + POINT pt; + TTTOOLINFOA ti; +} +alias _TT_HITTESTINFOA TTHITTESTINFOA; +alias _TT_HITTESTINFOA* LPTTHITTESTINFOA; + +struct _TT_HITTESTINFOW { + HWND hwnd; + POINT pt; + TTTOOLINFOW ti; +} +alias _TT_HITTESTINFOW TTHITTESTINFOW; +alias _TT_HITTESTINFOW* LPTTHITTESTINFOW; + +// #ifdef UNICODE +// #... +// #... +// #else +alias TTHITTESTINFOA TTHITTESTINFO; +alias LPTTHITTESTINFOA LPTTHITTESTINFO; +// #endif + +enum : uint { TTN_GETDISPINFOA = TTN_FIRST - 0 } +enum : uint { TTN_GETDISPINFOW = TTN_FIRST - 10 } +enum : uint { TTN_SHOW = TTN_FIRST - 1 } +enum : uint { TTN_POP = TTN_FIRST - 2 } +enum : uint { TTN_LINKCLICK = TTN_FIRST - 3 } + +// #ifdef UNICODE +// #... +// #else +alias TTN_GETDISPINFOA TTN_GETDISPINFO; +// #endif + +alias TTN_GETDISPINFO TTN_NEEDTEXT; +alias TTN_GETDISPINFOA TTN_NEEDTEXTA; +alias TTN_GETDISPINFOW TTN_NEEDTEXTW; + +// #if (_WIN32_IE >= 0x0300) +alias NMTTDISPINFOW TOOLTIPTEXTW; +alias NMTTDISPINFOA TOOLTIPTEXTA; +alias LPNMTTDISPINFOA LPTOOLTIPTEXTA; +alias LPNMTTDISPINFOW LPTOOLTIPTEXTW; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias NMTTDISPINFO TOOLTIPTEXT; +alias LPNMTTDISPINFO LPTOOLTIPTEXT; + +// #define NMTTDISPINFOA_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOA, uFlags) +// #define NMTTDISPINFOW_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOW, uFlags) + +struct tagNMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char szText[80]; + HINSTANCE hinst; + UINT uFlags; +// #if (_WIN32_IE >= 0x0300) + LPARAM lParam; +// #endif +} +alias tagNMTTDISPINFOA NMTTDISPINFOA; +alias tagNMTTDISPINFOA* LPNMTTDISPINFOA; + +struct tagNMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR szText[80]; + HINSTANCE hinst; + UINT uFlags; +// #if (_WIN32_IE >= 0x0300) + LPARAM lParam; +// #endif +} +alias tagNMTTDISPINFOW NMTTDISPINFOW; +alias tagNMTTDISPINFOW* LPNMTTDISPINFOW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias NMTTDISPINFOA NMTTDISPINFO; +alias LPNMTTDISPINFOA LPNMTTDISPINFO; +// #define NMTTDISPINFO_V1_SIZE NMTTDISPINFOA_V1_SIZE +// #endif + +// #endif // NOTOOLTIPS + +// #ifndef NOSTATUSBAR + +enum : uint { SBARS_SIZEGRIP = 0x0100 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { SBARS_TOOLTIPS = 0x0800 } +// #endif + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { SBT_TOOLTIPS = 0x0800 } +// #endif + +extern(Windows) export void DrawStatusTextA(HDC hDC, LPRECT lprc, LPCSTR pszText, UINT uFlags); +extern(Windows) export void DrawStatusTextW(HDC hDC, LPRECT lprc, LPCWSTR pszText, UINT uFlags); + +extern(Windows) export HWND CreateStatusWindowA(LONG style, LPCSTR lpszText, HWND hwndParent, UINT wID); +extern(Windows) export HWND CreateStatusWindowW(LONG style, LPCWSTR lpszText, HWND hwndParent, UINT wID); + +// #ifdef UNICODE +// #... +// #... +// #else +alias CreateStatusWindowA CreateStatusWindow; +alias DrawStatusTextA DrawStatusText; +// #endif + +// #ifdef _WIN32 +const wchar[] STATUSCLASSNAMEW = "msctls_statusbar32"; +const char[] STATUSCLASSNAMEA = "msctls_statusbar32"; + +// #ifdef UNICODE +// #... +// #else +alias STATUSCLASSNAMEA STATUSCLASSNAME; +// #endif + +// #else +// #... +// #endif + +enum : uint { SB_SETTEXTA = WM_USER+1 } +enum : uint { SB_SETTEXTW = WM_USER+11 } +enum : uint { SB_GETTEXTA = WM_USER+2 } +enum : uint { SB_GETTEXTW = WM_USER+13 } +enum : uint { SB_GETTEXTLENGTHA = WM_USER+3 } +enum : uint { SB_GETTEXTLENGTHW = WM_USER+12 } + +// #ifdef UNICODE +// #... +// #... +// #... +// #if (_WIN32_IE >= 0x0400) +// #... +// #... +// #endif +// #else +alias SB_GETTEXTA SB_GETTEXT; +alias SB_SETTEXTA SB_SETTEXT; +alias SB_GETTEXTLENGTHA SB_GETTEXTLENGTH; +// #if (_WIN32_IE >= 0x0400) +alias SB_SETTIPTEXTA SB_SETTIPTEXT; +alias SB_GETTIPTEXTA SB_GETTIPTEXT; +// #endif +// #endif + +enum : uint { SB_SETPARTS = WM_USER+4 } +enum : uint { SB_GETPARTS = WM_USER+6 } +enum : uint { SB_GETBORDERS = WM_USER+7 } +enum : uint { SB_SETMINHEIGHT = WM_USER+8 } +enum : uint { SB_SIMPLE = WM_USER+9 } +enum : uint { SB_GETRECT = WM_USER+10 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { SB_ISSIMPLE = WM_USER+14 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { SB_SETICON = WM_USER+15 } +// #define SB_SETTIPTEXTA (WM_USER+16) +// #define SB_SETTIPTEXTW (WM_USER+17) +// #define SB_GETTIPTEXTA (WM_USER+18) +// #define SB_GETTIPTEXTW (WM_USER+19) +enum : uint { SB_GETICON = WM_USER+20 } +alias CCM_SETUNICODEFORMAT SB_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT SB_GETUNICODEFORMAT; +// #endif + +enum : uint { SBT_OWNERDRAW = 0x1000 } +enum : uint { SBT_NOBORDERS = 0x0100 } +enum : uint { SBT_POPOUT = 0x0200 } +enum : uint { SBT_RTLREADING = 0x0400 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { SBT_NOTABPARSING = 0x0800 } +// #endif + +alias CCM_SETBKCOLOR SB_SETBKCOLOR; + +// #if (_WIN32_IE >= 0x0400) +enum : uint { SBN_SIMPLEMODECHANGE = SBN_FIRST - 0 } +// #endif + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { SB_SIMPLEID = 0x00ff } +// #endif + +// #endif // NOSTATUSBAR + +// #ifndef NOMENUHELP + +extern(Windows) export void MenuHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, HMENU hMainMenu, HINSTANCE hInst, HWND hwndStatus, UINT *lpwIDs); +extern(Windows) export BOOL ShowHideMenuCtl(HWND hWnd, UINT_PTR uFlags, LPINT lpInfo); +extern(Windows) export void GetEffectiveClientRect(HWND hWnd, LPRECT lprc, LPINT lpInfo); + +alias SC_SIZE MINSYSCOMMAND; + +// #endif + +// #ifndef NOTRACKBAR + +// #ifdef _WIN32 + +const char[] TRACKBAR_CLASSA = "msctls_trackbar32"; +const wchar[] TRACKBAR_CLASSW = "msctls_trackbar32"; + +// #ifdef UNICODE +// #... +// #else +alias TRACKBAR_CLASSA TRACKBAR_CLASS; +// #endif + +// #else +// #... +// #endif + +enum : uint { TBS_AUTOTICKS = 0x0001 } +enum : uint { TBS_VERT = 0x0002 } +enum : uint { TBS_HORZ = 0x0000 } +enum : uint { TBS_TOP = 0x0004 } +enum : uint { TBS_BOTTOM = 0x0000 } +enum : uint { TBS_LEFT = 0x0004 } +enum : uint { TBS_RIGHT = 0x0000 } +enum : uint { TBS_BOTH = 0x0008 } +enum : uint { TBS_NOTICKS = 0x0010 } +enum : uint { TBS_ENABLESELRANGE = 0x0020 } +enum : uint { TBS_FIXEDLENGTH = 0x0040 } +enum : uint { TBS_NOTHUMB = 0x0080 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBS_TOOLTIPS = 0x0100 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { TBS_REVERSED = 0x0200 } +// #endif + +// #if (_WIN32_IE >= 0x0501) +enum : uint { TBS_DOWNISLEFT = 0x0400 } +// #endif + +enum : uint { TBM_GETPOS = WM_USER } +enum : uint { TBM_GETRANGEMIN = WM_USER+1 } +enum : uint { TBM_GETRANGEMAX = WM_USER+2 } +enum : uint { TBM_GETTIC = WM_USER+3 } +enum : uint { TBM_SETTIC = WM_USER+4 } +enum : uint { TBM_SETPOS = WM_USER+5 } +enum : uint { TBM_SETRANGE = WM_USER+6 } +enum : uint { TBM_SETRANGEMIN = WM_USER+7 } +enum : uint { TBM_SETRANGEMAX = WM_USER+8 } +enum : uint { TBM_CLEARTICS = WM_USER+9 } +enum : uint { TBM_SETSEL = WM_USER+10 } +enum : uint { TBM_SETSELSTART = WM_USER+11 } +enum : uint { TBM_SETSELEND = WM_USER+12 } +enum : uint { TBM_GETPTICS = WM_USER+14 } +enum : uint { TBM_GETTICPOS = WM_USER+15 } +enum : uint { TBM_GETNUMTICS = WM_USER+16 } +enum : uint { TBM_GETSELSTART = WM_USER+17 } +enum : uint { TBM_GETSELEND = WM_USER+18 } +enum : uint { TBM_CLEARSEL = WM_USER+19 } +enum : uint { TBM_SETTICFREQ = WM_USER+20 } +enum : uint { TBM_SETPAGESIZE = WM_USER+21 } +enum : uint { TBM_GETPAGESIZE = WM_USER+22 } +enum : uint { TBM_SETLINESIZE = WM_USER+23 } +enum : uint { TBM_GETLINESIZE = WM_USER+24 } +enum : uint { TBM_GETTHUMBRECT = WM_USER+25 } +enum : uint { TBM_GETCHANNELRECT = WM_USER+26 } +enum : uint { TBM_SETTHUMBLENGTH = WM_USER+27 } +enum : uint { TBM_GETTHUMBLENGTH = WM_USER+28 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBM_SETTOOLTIPS = WM_USER+29 } +enum : uint { TBM_GETTOOLTIPS = WM_USER+30 } +enum : uint { TBM_SETTIPSIDE = WM_USER+31 } + +enum : uint { TBTS_TOP = 0 } +enum : uint { TBTS_LEFT = 1 } +enum : uint { TBTS_BOTTOM = 2 } +enum : uint { TBTS_RIGHT = 3 } + +enum : uint { TBM_SETBUDDY = WM_USER+32 } +enum : uint { TBM_GETBUDDY = WM_USER+33 } +// #endif +// #if (_WIN32_IE >= 0x0400) +alias CCM_SETUNICODEFORMAT TBM_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT TBM_GETUNICODEFORMAT; +// #endif + +enum : uint { TB_LINEUP = 0 } +enum : uint { TB_LINEDOWN = 1 } +enum : uint { TB_PAGEUP = 2 } +enum : uint { TB_PAGEDOWN = 3 } +enum : uint { TB_THUMBPOSITION = 4 } +enum : uint { TB_THUMBTRACK = 5 } +enum : uint { TB_TOP = 6 } +enum : uint { TB_BOTTOM = 7 } +enum : uint { TB_ENDTRACK = 8 } + +// #if (_WIN32_IE >= 0x0300) + +enum : uint { TBCD_TICS = 0x0001 } +enum : uint { TBCD_THUMB = 0x0002 } +enum : uint { TBCD_CHANNEL = 0x0003 } +// #endif + +// #endif // trackbar + +// #ifndef NODRAGLIST + +struct tagDRAGLISTINFO { + UINT uNotification; + HWND hWnd; + POINT ptCursor; +} +alias tagDRAGLISTINFO DRAGLISTINFO; +alias tagDRAGLISTINFO* LPDRAGLISTINFO; + +enum : uint { DL_BEGINDRAG = WM_USER+133 } +enum : uint { DL_DRAGGING = WM_USER+134 } +enum : uint { DL_DROPPED = WM_USER+135 } +enum : uint { DL_CANCELDRAG = WM_USER+136 } + +enum : uint { DL_CURSORSET = 0 } +enum : uint { DL_STOPCURSOR = 1 } +enum : uint { DL_COPYCURSOR = 2 } +enum : uint { DL_MOVECURSOR = 3 } + +const TCHAR[] DRAGLISTMSGSTRING = "commctrl_DragListMsg"; + +extern(Windows) export BOOL MakeDragList(HWND hLB); +extern(Windows) export void DrawInsert(HWND handParent, HWND hLB, int nItem); + +extern(Windows) export int LBItemFromPt(HWND hLB, POINT pt, BOOL bAutoScroll); + +// #endif + +// #ifndef NOUPDOWN + +// #ifdef _WIN32 + +const char[] UPDOWN_CLASSA = "msctls_updown32"; +const wchar[] UPDOWN_CLASSW = "msctls_updown32"; + +// #ifdef UNICODE +// #... +// #else +alias UPDOWN_CLASSA UPDOWN_CLASS; +// #endif + +// #else +// #... +// #endif + +struct _UDACCEL { + UINT nSec; + UINT nInc; +} +alias _UDACCEL UDACCEL; +alias _UDACCEL* LPUDACCEL; + +enum : uint { UD_MAXVAL = 0x7fff } +enum : uint { UD_MINVAL = -UD_MAXVAL } + +enum : uint { UDS_WRAP = 0x0001 } +enum : uint { UDS_SETBUDDYINT = 0x0002 } +enum : uint { UDS_ALIGNRIGHT = 0x0004 } +enum : uint { UDS_ALIGNLEFT = 0x0008 } +enum : uint { UDS_AUTOBUDDY = 0x0010 } +enum : uint { UDS_ARROWKEYS = 0x0020 } +enum : uint { UDS_HORZ = 0x0040 } +enum : uint { UDS_NOTHOUSANDS = 0x0080 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { UDS_HOTTRACK = 0x0100 } +// #endif + +enum : uint { UDM_SETRANGE = WM_USER+101 } +enum : uint { UDM_GETRANGE = WM_USER+102 } +enum : uint { UDM_SETPOS = WM_USER+103 } +enum : uint { UDM_GETPOS = WM_USER+104 } +enum : uint { UDM_SETBUDDY = WM_USER+105 } +enum : uint { UDM_GETBUDDY = WM_USER+106 } +enum : uint { UDM_SETACCEL = WM_USER+107 } +enum : uint { UDM_GETACCEL = WM_USER+108 } +enum : uint { UDM_SETBASE = WM_USER+109 } +enum : uint { UDM_GETBASE = WM_USER+110 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { UDM_SETRANGE32 = WM_USER+111 } +enum : uint { UDM_GETRANGE32 = WM_USER+112 } +alias CCM_SETUNICODEFORMAT UDM_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT UDM_GETUNICODEFORMAT; +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { UDM_SETPOS32 = WM_USER+113 } +enum : uint { UDM_GETPOS32 = WM_USER+114 } +// #endif + +extern(Windows) export HWND CreateUpDownControl(DWORD dwStyle, int x, int y, int cx, int cy, + HWND hParent, int nID, HINSTANCE hInst, + HWND hBuddy, + int nUpper, int nLower, int nPos); + +// #if (_WIN32_IE >= 0x0300) +alias NMUPDOWN NM_UPDOWN; +alias LPNMUPDOWN LPNM_UPDOWN; +// #else +// #... +// #... +// #endif + +struct _NM_UPDOWN { + NMHDR hdr; + int iPos; + int iDelta; +} +alias _NM_UPDOWN NMUPDOWN; +alias _NM_UPDOWN* LPNMUPDOWN; + +enum : uint { UDN_DELTAPOS = UDN_FIRST - 1 } + +// #endif // NOUPDOWN + +// #ifndef NOPROGRESS + +// #ifdef _WIN32 + +const char[] PROGRESS_CLASSA = "msctls_progress32"; +const wchar[] PROGRESS_CLASSW = "msctls_progress32"; + +// #ifdef UNICODE +// #... +// #else +alias PROGRESS_CLASSA PROGRESS_CLASS; +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { PBS_SMOOTH = 0x01 } +enum : uint { PBS_VERTICAL = 0x04 } +// #endif + +enum : uint { PBM_SETRANGE = WM_USER+1 } +enum : uint { PBM_SETPOS = WM_USER+2 } +enum : uint { PBM_DELTAPOS = WM_USER+3 } +enum : uint { PBM_SETSTEP = WM_USER+4 } +enum : uint { PBM_STEPIT = WM_USER+5 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { PBM_SETRANGE32 = WM_USER+6 } +struct _7 { + int iLow; + int iHigh; +} +alias _7 PBRANGE; +alias _7* PPBRANGE; + +enum : uint { PBM_GETRANGE = WM_USER+7 } +enum : uint { PBM_GETPOS = WM_USER+8 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { PBM_SETBARCOLOR = WM_USER+9 } +// #endif // _WIN32_IE >= 0x0400 +alias CCM_SETBKCOLOR PBM_SETBKCOLOR; +// #endif // _WIN32_IE >= 0x0300 + +// #endif // NOPROGRESS + +// #ifndef NOHOTKEY + +enum : uint { HOTKEYF_SHIFT = 0x01 } +enum : uint { HOTKEYF_CONTROL = 0x02 } +enum : uint { HOTKEYF_ALT = 0x04 } +// #ifdef _MAC +// #... +// #else +enum : uint { HOTKEYF_EXT = 0x08 } +// #endif + +enum : uint { HKCOMB_NONE = 0x0001 } +enum : uint { HKCOMB_S = 0x0002 } +enum : uint { HKCOMB_C = 0x0004 } +enum : uint { HKCOMB_A = 0x0008 } +enum : uint { HKCOMB_SC = 0x0010 } +enum : uint { HKCOMB_SA = 0x0020 } +enum : uint { HKCOMB_CA = 0x0040 } +enum : uint { HKCOMB_SCA = 0x0080 } + +enum : uint { HKM_SETHOTKEY = WM_USER+1 } +enum : uint { HKM_GETHOTKEY = WM_USER+2 } +enum : uint { HKM_SETRULES = WM_USER+3 } + +// #ifdef _WIN32 + +const char[] HOTKEY_CLASSA = "msctls_hotkey32"; +const wchar[] HOTKEY_CLASSW = "msctls_hotkey32"; + +// #ifdef UNICODE +// #... +// #else +alias HOTKEY_CLASSA HOTKEY_CLASS; +// #endif + +// #else +// #... +// #endif + +// #endif // NOHOTKEY + +enum : uint { CCS_TOP = 0x00000001 } +enum : uint { CCS_NOMOVEY = 0x00000002 } +enum : uint { CCS_BOTTOM = 0x00000003 } +enum : uint { CCS_NORESIZE = 0x00000004 } +enum : uint { CCS_NOPARENTALIGN = 0x00000008 } +enum : uint { CCS_ADJUSTABLE = 0x00000020 } +enum : uint { CCS_NODIVIDER = 0x00000040 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { CCS_VERT = 0x00000080 } +enum : uint { CCS_LEFT = CCS_VERT | CCS_TOP } +enum : uint { CCS_RIGHT = CCS_VERT | CCS_BOTTOM } +enum : uint { CCS_NOMOVEX = CCS_VERT | CCS_NOMOVEY } +// #endif + +// #ifndef NOLISTVIEW + +// #ifdef _WIN32 + +const char[] WC_LISTVIEWA = "SysListView32"; +const wchar[] WC_LISTVIEWW = "SysListView32"; + +// #ifdef UNICODE +// #... +// #else +alias WC_LISTVIEWA WC_LISTVIEW; +// #endif + +// #else +// #... +// #endif + +enum : uint { LVS_ICON = 0x0000 } +enum : uint { LVS_REPORT = 0x0001 } +enum : uint { LVS_SMALLICON = 0x0002 } +enum : uint { LVS_LIST = 0x0003 } +enum : uint { LVS_TYPEMASK = 0x0003 } +enum : uint { LVS_SINGLESEL = 0x0004 } +enum : uint { LVS_SHOWSELALWAYS = 0x0008 } +enum : uint { LVS_SORTASCENDING = 0x0010 } +enum : uint { LVS_SORTDESCENDING = 0x0020 } +enum : uint { LVS_SHAREIMAGELISTS = 0x0040 } +enum : uint { LVS_NOLABELWRAP = 0x0080 } +enum : uint { LVS_AUTOARRANGE = 0x0100 } +enum : uint { LVS_EDITLABELS = 0x0200 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVS_OWNERDATA = 0x1000 } +// #endif +enum : uint { LVS_NOSCROLL = 0x2000 } + +enum : uint { LVS_TYPESTYLEMASK = 0xfc00 } + +enum : uint { LVS_ALIGNTOP = 0x0000 } +enum : uint { LVS_ALIGNLEFT = 0x0800 } +enum : uint { LVS_ALIGNMASK = 0x0c00 } + +enum : uint { LVS_OWNERDRAWFIXED = 0x0400 } +enum : uint { LVS_NOCOLUMNHEADER = 0x4000 } +enum : uint { LVS_NOSORTHEADER = 0x8000 } + +// #if (_WIN32_IE >= 0x0400) +alias CCM_SETUNICODEFORMAT LVM_SETUNICODEFORMAT; +// #define ListView_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), LVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT LVM_GETUNICODEFORMAT; +// #define ListView_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), LVM_GETUNICODEFORMAT, 0, 0) +// #endif + +enum : uint { LVM_GETBKCOLOR = LVM_FIRST + 0 } +// #define ListView_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETBKCOLOR, 0, 0L) + +enum : uint { LVM_SETBKCOLOR = LVM_FIRST + 1 } +// #define ListView_SetBkColor(hwnd, clrBk) (BOOL)SNDMSG((hwnd), LVM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk)) + +enum : uint { LVM_GETIMAGELIST = LVM_FIRST + 2 } +// #define ListView_GetImageList(hwnd, iImageList) (HIMAGELIST)SNDMSG((hwnd), LVM_GETIMAGELIST, (WPARAM)(INT)(iImageList), 0L) + +enum : uint { LVSIL_NORMAL = 0 } +enum : uint { LVSIL_SMALL = 1 } +enum : uint { LVSIL_STATE = 2 } + +enum : uint { LVM_SETIMAGELIST = LVM_FIRST + 3 } +// #define ListView_SetImageList(hwnd, himl, iImageList) (HIMAGELIST)SNDMSG((hwnd), LVM_SETIMAGELIST, (WPARAM)(iImageList), (LPARAM)(HIMAGELIST)(himl)) + +enum : uint { LVM_GETITEMCOUNT = LVM_FIRST + 4 } +// #define ListView_GetItemCount(hwnd) (int)SNDMSG((hwnd), LVM_GETITEMCOUNT, 0, 0L) + +enum : uint { LVIF_TEXT = 0x0001 } +enum : uint { LVIF_IMAGE = 0x0002 } +enum : uint { LVIF_PARAM = 0x0004 } +enum : uint { LVIF_STATE = 0x0008 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVIF_INDENT = 0x0010 } +enum : uint { LVIF_NORECOMPUTE = 0x0800 } +// #endif +// #if (_WIN32_WINNT >= 0x501) +enum : uint { LVIF_GROUPID = 0x0100 } +enum : uint { LVIF_COLUMNS = 0x0200 } +// #endif + +enum : uint { LVIS_FOCUSED = 0x0001 } +enum : uint { LVIS_SELECTED = 0x0002 } +enum : uint { LVIS_CUT = 0x0004 } +enum : uint { LVIS_DROPHILITED = 0x0008 } +enum : uint { LVIS_GLOW = 0x0010 } +enum : uint { LVIS_ACTIVATING = 0x0020 } + +enum : uint { LVIS_OVERLAYMASK = 0x0F00 } +enum : uint { LVIS_STATEIMAGEMASK = 0xF000 } + +uint INDEXTOSTATEIMAGEMASK(uint i){ return i << 12; } + +// #if (_WIN32_IE >= 0x0300) +enum { I_INDENTCALLBACK = -1 } +alias LVITEMA LV_ITEMA; +alias LVITEMW LV_ITEMW; +// #else +// #... +// #... +// #... +// #... +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum { I_GROUPIDCALLBACK = -1 } +enum { I_GROUPIDNONE = -2 } +// #endif +alias LVITEM LV_ITEM; + +// #define LVITEMA_V1_SIZE CCSIZEOF_STRUCT(LVITEMA, lParam) +// #define LVITEMW_V1_SIZE CCSIZEOF_STRUCT(LVITEMW, lParam) + +struct tagLVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +// #if (_WIN32_IE >= 0x0300) + int iIndent; +// #endif +// #if (_WIN32_WINNT >= 0x501) + int iGroupId; + UINT cColumns; + PUINT puColumns; +// #endif +} +alias tagLVITEMA LVITEMA; +alias tagLVITEMA* LPLVITEMA; + +struct tagLVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +// #if (_WIN32_IE >= 0x0300) + int iIndent; +// #endif +// #if (_WIN32_WINNT >= 0x501) + int iGroupId; + UINT cColumns; + PUINT puColumns; +// #endif +} +alias tagLVITEMW LVITEMW; +alias tagLVITEMW* LPLVITEMW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias LVITEMA LVITEM; +alias LPLVITEMA LPLVITEM; +// #define LVITEM_V1_SIZE LVITEMA_V1_SIZE +// #endif + +const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR)-1; +const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR)-1; +// #ifdef UNICODE +// #... +// #else +alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK; +// #endif + +enum { I_IMAGECALLBACK = -1 } +// #if (_WIN32_IE >= 0x0501) +enum { I_IMAGENONE = -2 } +// #endif // 0x0501 + +// #if (_WIN32_WINNT >= 0x501) + +enum : uint { I_COLUMNSCALLBACK = cast(UINT)-1 } +// #endif + +enum : uint { LVM_GETITEMA = LVM_FIRST + 5 } +enum : uint { LVM_GETITEMW = LVM_FIRST + 75 } +// #ifdef UNICODE +// #... +// #else +alias LVM_GETITEMA LVM_GETITEM; +// #endif + +// #define ListView_GetItem(hwnd, pitem) (BOOL)SNDMSG((hwnd), LVM_GETITEM, 0, (LPARAM)(LV_ITEM *)(pitem)) + +enum : uint { LVM_SETITEMA = LVM_FIRST + 6 } +enum : uint { LVM_SETITEMW = LVM_FIRST + 76 } +// #ifdef UNICODE +// #... +// #else +alias LVM_SETITEMA LVM_SETITEM; +// #endif + +// #define ListView_SetItem(hwnd, pitem) (BOOL)SNDMSG((hwnd), LVM_SETITEM, 0, (LPARAM)(const LV_ITEM *)(pitem)) + +enum : uint { LVM_INSERTITEMA = LVM_FIRST + 7 } +enum : uint { LVM_INSERTITEMW = LVM_FIRST + 77 } +// #ifdef UNICODE +// #... +// #else +alias LVM_INSERTITEMA LVM_INSERTITEM; +// #endif +// #define ListView_InsertItem(hwnd, pitem) (int)SNDMSG((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM *)(pitem)) + +enum : uint { LVM_DELETEITEM = LVM_FIRST + 8 } +// #define ListView_DeleteItem(hwnd, i) (BOOL)SNDMSG((hwnd), LVM_DELETEITEM, (WPARAM)(int)(i), 0L) + +enum : uint { LVM_DELETEALLITEMS = LVM_FIRST + 9 } +// #define ListView_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd), LVM_DELETEALLITEMS, 0, 0L) + +enum : uint { LVM_GETCALLBACKMASK = LVM_FIRST + 10 } +// #define ListView_GetCallbackMask(hwnd) (BOOL)SNDMSG((hwnd), LVM_GETCALLBACKMASK, 0, 0) + +enum : uint { LVM_SETCALLBACKMASK = LVM_FIRST + 11 } +// #define ListView_SetCallbackMask(hwnd, mask) (BOOL)SNDMSG((hwnd), LVM_SETCALLBACKMASK, (WPARAM)(UINT)(mask), 0) + +enum : uint { LVNI_ALL = 0x0000 } +enum : uint { LVNI_FOCUSED = 0x0001 } +enum : uint { LVNI_SELECTED = 0x0002 } +enum : uint { LVNI_CUT = 0x0004 } +enum : uint { LVNI_DROPHILITED = 0x0008 } + +enum : uint { LVNI_ABOVE = 0x0100 } +enum : uint { LVNI_BELOW = 0x0200 } +enum : uint { LVNI_TOLEFT = 0x0400 } +enum : uint { LVNI_TORIGHT = 0x0800 } + +enum : uint { LVM_GETNEXTITEM = LVM_FIRST + 12 } +// #define ListView_GetNextItem(hwnd, i, flags) (int)SNDMSG((hwnd), LVM_GETNEXTITEM, (WPARAM)(int)(i), MAKELPARAM((flags), 0)) + +enum : uint { LVFI_PARAM = 0x0001 } +enum : uint { LVFI_STRING = 0x0002 } +enum : uint { LVFI_PARTIAL = 0x0008 } +enum : uint { LVFI_WRAP = 0x0020 } +enum : uint { LVFI_NEARESTXY = 0x0040 } + +// #if (_WIN32_IE >= 0x0300) +alias LVFINDINFOA LV_FINDINFOA; +alias LVFINDINFOW LV_FINDINFOW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias LVFINDINFO LV_FINDINFO; + +struct tagLVFINDINFOA { + UINT flags; + LPCSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} +alias tagLVFINDINFOA LVFINDINFOA; +alias tagLVFINDINFOA* LPFINDINFOA; + +struct tagLVFINDINFOW { + UINT flags; + LPCWSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} +alias tagLVFINDINFOW LVFINDINFOW; +alias tagLVFINDINFOW* LPFINDINFOW; + +// #ifdef UNICODE +// #... +// #else +alias LVFINDINFOA LVFINDINFO; +// #endif + +enum : uint { LVM_FINDITEMA = LVM_FIRST + 13 } +enum : uint { LVM_FINDITEMW = LVM_FIRST + 83 } +// #ifdef UNICODE +// #... +// #else +alias LVM_FINDITEMA LVM_FINDITEM; +// #endif + +// #define ListView_FindItem(hwnd, iStart, plvfi) (int)SNDMSG((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO *)(plvfi)) + +enum : uint { LVIR_BOUNDS = 0 } +enum : uint { LVIR_ICON = 1 } +enum : uint { LVIR_LABEL = 2 } +enum : uint { LVIR_SELECTBOUNDS = 3 } + +enum : uint { LVM_GETITEMRECT = LVM_FIRST + 14 } +// #define ListView_GetItemRect(hwnd, i, prc, code) (BOOL)SNDMSG((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), ((prc) ? (((RECT *)(prc))->left = (code),(LPARAM)(RECT *)(prc)) : (LPARAM)(RECT *)NULL)) + +enum : uint { LVM_SETITEMPOSITION = LVM_FIRST + 15 } +// #define ListView_SetItemPosition(hwndLV, i, x, y) (BOOL)SNDMSG((hwndLV), LVM_SETITEMPOSITION, (WPARAM)(int)(i), MAKELPARAM((x), (y))) + +enum : uint { LVM_GETITEMPOSITION = LVM_FIRST + 16 } +// #define ListView_GetItemPosition(hwndLV, i, ppt) (BOOL)SNDMSG((hwndLV), LVM_GETITEMPOSITION, (WPARAM)(int)(i), (LPARAM)(POINT *)(ppt)) + +enum : uint { LVM_GETSTRINGWIDTHA = LVM_FIRST + 17 } +enum : uint { LVM_GETSTRINGWIDTHW = LVM_FIRST + 87 } +// #ifdef UNICODE +// #... +// #else +alias LVM_GETSTRINGWIDTHA LVM_GETSTRINGWIDTH; +// #endif + +// #define ListView_GetStringWidth(hwndLV, psz) (int)SNDMSG((hwndLV), LVM_GETSTRINGWIDTH, 0, (LPARAM)(LPCTSTR)(psz)) + +enum : uint { LVHT_NOWHERE = 0x0001 } +enum : uint { LVHT_ONITEMICON = 0x0002 } +enum : uint { LVHT_ONITEMLABEL = 0x0004 } +enum : uint { LVHT_ONITEMSTATEICON = 0x0008 } +enum : uint { LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON } + +enum : uint { LVHT_ABOVE = 0x0008 } +enum : uint { LVHT_BELOW = 0x0010 } +enum : uint { LVHT_TORIGHT = 0x0020 } +enum : uint { LVHT_TOLEFT = 0x0040 } + +// #if (_WIN32_IE >= 0x0300) +alias LVHITTESTINFO LV_HITTESTINFO; +// #else +// #... +// #... +// #endif + +// #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO, iItem) + +struct tagLVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; +// #if (_WIN32_IE >= 0x0300) + int iSubItem; +// #endif +} +alias tagLVHITTESTINFO LVHITTESTINFO; +alias tagLVHITTESTINFO* LPLVHITTESTINFO; + +enum : uint { LVM_HITTEST = LVM_FIRST + 18 } +// #define ListView_HitTest(hwndLV, pinfo) (int)SNDMSG((hwndLV), LVM_HITTEST, 0, (LPARAM)(LV_HITTESTINFO *)(pinfo)) + +enum : uint { LVM_ENSUREVISIBLE = LVM_FIRST + 19 } +// #define ListView_EnsureVisible(hwndLV, i, fPartialOK) (BOOL)SNDMSG((hwndLV), LVM_ENSUREVISIBLE, (WPARAM)(int)(i), MAKELPARAM((fPartialOK), 0)) + +enum : uint { LVM_SCROLL = LVM_FIRST + 20 } +// #define ListView_Scroll(hwndLV, dx, dy) (BOOL)SNDMSG((hwndLV), LVM_SCROLL, (WPARAM)(int)(dx), (LPARAM)(int)(dy)) + +enum : uint { LVM_REDRAWITEMS = LVM_FIRST + 21 } +// #define ListView_RedrawItems(hwndLV, iFirst, iLast) (BOOL)SNDMSG((hwndLV), LVM_REDRAWITEMS, (WPARAM)(int)(iFirst), (LPARAM)(int)(iLast)) + +enum : uint { LVA_DEFAULT = 0x0000 } +enum : uint { LVA_ALIGNLEFT = 0x0001 } +enum : uint { LVA_ALIGNTOP = 0x0002 } +enum : uint { LVA_SNAPTOGRID = 0x0005 } + +enum : uint { LVM_ARRANGE = LVM_FIRST + 22 } +// #define ListView_Arrange(hwndLV, code) (BOOL)SNDMSG((hwndLV), LVM_ARRANGE, (WPARAM)(UINT)(code), 0L) + +enum : uint { LVM_EDITLABELA = LVM_FIRST + 23 } +enum : uint { LVM_EDITLABELW = LVM_FIRST + 118 } +// #ifdef UNICODE +// #... +// #else +alias LVM_EDITLABELA LVM_EDITLABEL; +// #endif + +// #define ListView_EditLabel(hwndLV, i) (HWND)SNDMSG((hwndLV), LVM_EDITLABEL, (WPARAM)(int)(i), 0L) + +enum : uint { LVM_GETEDITCONTROL = LVM_FIRST + 24 } +// #define ListView_GetEditControl(hwndLV) (HWND)SNDMSG((hwndLV), LVM_GETEDITCONTROL, 0, 0L) + +// #if (_WIN32_IE >= 0x0300) +alias LVCOLUMNA LV_COLUMNA; +alias LVCOLUMNW LV_COLUMNW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias LVCOLUMN LV_COLUMN; + +// #define LVCOLUMNA_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem) +// #define LVCOLUMNW_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem) + +struct tagLVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; +// #if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +// #endif +} +alias tagLVCOLUMNA LVCOLUMNA; +alias tagLVCOLUMNA* LPLVCOLUMNA; + +struct tagLVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; +// #if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +// #endif +} +alias tagLVCOLUMNW LVCOLUMNW; +alias tagLVCOLUMNW* LPLVCOLUMNW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias LVCOLUMNA LVCOLUMN; +alias LPLVCOLUMNA LPLVCOLUMN; +// #define LVCOLUMN_V1_SIZE LVCOLUMNA_V1_SIZE +// #endif + +enum : uint { LVCF_FMT = 0x0001 } +enum : uint { LVCF_WIDTH = 0x0002 } +enum : uint { LVCF_TEXT = 0x0004 } +enum : uint { LVCF_SUBITEM = 0x0008 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVCF_IMAGE = 0x0010 } +enum : uint { LVCF_ORDER = 0x0020 } +// #endif + +enum : uint { LVCFMT_LEFT = 0x0000 } +enum : uint { LVCFMT_RIGHT = 0x0001 } +enum : uint { LVCFMT_CENTER = 0x0002 } +enum : uint { LVCFMT_JUSTIFYMASK = 0x0003 } + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVCFMT_IMAGE = 0x0800 } +enum : uint { LVCFMT_BITMAP_ON_RIGHT = 0x1000 } +enum : uint { LVCFMT_COL_HAS_IMAGES = 0x8000 } +// #endif + +enum : uint { LVM_GETCOLUMNA = LVM_FIRST + 25 } +enum : uint { LVM_GETCOLUMNW = LVM_FIRST + 95 } +// #ifdef UNICODE +// #... +// #else +alias LVM_GETCOLUMNA LVM_GETCOLUMN; +// #endif + +// #define ListView_GetColumn(hwnd, iCol, pcol) (BOOL)SNDMSG((hwnd), LVM_GETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(LV_COLUMN *)(pcol)) + +enum : uint { LVM_SETCOLUMNA = LVM_FIRST + 26 } +enum : uint { LVM_SETCOLUMNW = LVM_FIRST + 96 } +// #ifdef UNICODE +// #... +// #else +alias LVM_SETCOLUMNA LVM_SETCOLUMN; +// #endif + +// #define ListView_SetColumn(hwnd, iCol, pcol) (BOOL)SNDMSG((hwnd), LVM_SETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol)) + +enum : uint { LVM_INSERTCOLUMNA = LVM_FIRST + 27 } +enum : uint { LVM_INSERTCOLUMNW = LVM_FIRST + 97 } +// #ifdef UNICODE +// #... +// #else +alias LVM_INSERTCOLUMNA LVM_INSERTCOLUMN; +// #endif + +// #define ListView_InsertColumn(hwnd, iCol, pcol) (int)SNDMSG((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol)) + +enum : uint { LVM_DELETECOLUMN = LVM_FIRST + 28 } +// #define ListView_DeleteColumn(hwnd, iCol) (BOOL)SNDMSG((hwnd), LVM_DELETECOLUMN, (WPARAM)(int)(iCol), 0) + +enum : uint { LVM_GETCOLUMNWIDTH = LVM_FIRST + 29 } +// #define ListView_GetColumnWidth(hwnd, iCol) (int)SNDMSG((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0) + +enum { LVSCW_AUTOSIZE = -1 } +enum { LVSCW_AUTOSIZE_USEHEADER = -2 } +enum : uint { LVM_SETCOLUMNWIDTH = LVM_FIRST + 30 } + +// #define ListView_SetColumnWidth(hwnd, iCol, cx) (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0)) + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVM_GETHEADER = LVM_FIRST + 31 } +// #define ListView_GetHeader(hwnd) (HWND)SNDMSG((hwnd), LVM_GETHEADER, 0, 0L) +// #endif + +enum : uint { LVM_CREATEDRAGIMAGE = LVM_FIRST + 33 } +// #define ListView_CreateDragImage(hwnd, i, lpptUpLeft) (HIMAGELIST)SNDMSG((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft)) + +enum : uint { LVM_GETVIEWRECT = LVM_FIRST + 34 } +// #define ListView_GetViewRect(hwnd, prc) (BOOL)SNDMSG((hwnd), LVM_GETVIEWRECT, 0, (LPARAM)(RECT *)(prc)) + +enum : uint { LVM_GETTEXTCOLOR = LVM_FIRST + 35 } +// #define ListView_GetTextColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETTEXTCOLOR, 0, 0L) + +enum : uint { LVM_SETTEXTCOLOR = LVM_FIRST + 36 } +// #define ListView_SetTextColor(hwnd, clrText) (BOOL)SNDMSG((hwnd), LVM_SETTEXTCOLOR, 0, (LPARAM)(COLORREF)(clrText)) + +enum : uint { LVM_GETTEXTBKCOLOR = LVM_FIRST + 37 } +// #define ListView_GetTextBkColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETTEXTBKCOLOR, 0, 0L) + +enum : uint { LVM_SETTEXTBKCOLOR = LVM_FIRST + 38 } +// #define ListView_SetTextBkColor(hwnd, clrTextBk) (BOOL)SNDMSG((hwnd), LVM_SETTEXTBKCOLOR, 0, (LPARAM)(COLORREF)(clrTextBk)) + +enum : uint { LVM_GETTOPINDEX = LVM_FIRST + 39 } +// #define ListView_GetTopIndex(hwndLV) (int)SNDMSG((hwndLV), LVM_GETTOPINDEX, 0, 0) + +enum : uint { LVM_GETCOUNTPERPAGE = LVM_FIRST + 40 } +// #define ListView_GetCountPerPage(hwndLV) (int)SNDMSG((hwndLV), LVM_GETCOUNTPERPAGE, 0, 0) + +enum : uint { LVM_GETORIGIN = LVM_FIRST + 41 } +// #define ListView_GetOrigin(hwndLV, ppt) (BOOL)SNDMSG((hwndLV), LVM_GETORIGIN, (WPARAM)0, (LPARAM)(POINT *)(ppt)) + +enum : uint { LVM_UPDATE = LVM_FIRST + 42 } +// #define ListView_Update(hwndLV, i) (BOOL)SNDMSG((hwndLV), LVM_UPDATE, (WPARAM)(i), 0L) + +enum : uint { LVM_SETITEMSTATE = LVM_FIRST + 43 } +// #define ListView_SetItemState(hwndLV, i, data, mask) { LV_ITEM _ms_lvi; _ms_lvi.stateMask = mask; _ms_lvi.state = data; SNDMSG((hwndLV), LVM_SETITEMSTATE, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi); } + +// #if (_WIN32_IE >= 0x0300) +// #define ListView_SetCheckState(hwndLV, i, fCheck) ListView_SetItemState(hwndLV, i, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), LVIS_STATEIMAGEMASK) +// #endif + +enum : uint { LVM_GETITEMSTATE = LVM_FIRST + 44 } +// #define ListView_GetItemState(hwndLV, i, mask) (UINT)SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)(i), (LPARAM)(mask)) + +// #if (_WIN32_IE >= 0x0300) +// #define ListView_GetCheckState(hwndLV, i) ((((UINT)(SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)(i), LVIS_STATEIMAGEMASK))) >> 12) -1) +// #endif + +enum : uint { LVM_GETITEMTEXTA = LVM_FIRST + 45 } +enum : uint { LVM_GETITEMTEXTW = LVM_FIRST + 115 } + +// #ifdef UNICODE +// #... +// #else +alias LVM_GETITEMTEXTA LVM_GETITEMTEXT; +// #endif + +// #define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_) { LV_ITEM _ms_lvi; _ms_lvi.iSubItem = iSubItem_; _ms_lvi.cchTextMax = cchTextMax_; _ms_lvi.pszText = pszText_; SNDMSG((hwndLV), LVM_GETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi); } + +enum : uint { LVM_SETITEMTEXTA = LVM_FIRST + 46 } +enum : uint { LVM_SETITEMTEXTW = LVM_FIRST + 116 } + +// #ifdef UNICODE +// #... +// #else +alias LVM_SETITEMTEXTA LVM_SETITEMTEXT; +// #endif + +// #define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) { LV_ITEM _ms_lvi; _ms_lvi.iSubItem = iSubItem_; _ms_lvi.pszText = pszText_; SNDMSG((hwndLV), LVM_SETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi); } + +// #if (_WIN32_IE >= 0x0300) + +enum : uint { LVSICF_NOINVALIDATEALL = 0x00000001 } +enum : uint { LVSICF_NOSCROLL = 0x00000002 } +// #endif + +enum : uint { LVM_SETITEMCOUNT = LVM_FIRST + 47 } +// #define ListView_SetItemCount(hwndLV, cItems) SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)(cItems), 0) + +// #if (_WIN32_IE >= 0x0300) +// #define ListView_SetItemCountEx(hwndLV, cItems, dwFlags) SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)(cItems), (LPARAM)(dwFlags)) +// #endif + +extern(Windows) alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; + +enum : uint { LVM_SORTITEMS = LVM_FIRST + 48 } +// #define ListView_SortItems(hwndLV, _pfnCompare, _lPrm) (BOOL)SNDMSG((hwndLV), LVM_SORTITEMS, (WPARAM)(LPARAM)(_lPrm), (LPARAM)(PFNLVCOMPARE)(_pfnCompare)) + +enum : uint { LVM_SETITEMPOSITION32 = LVM_FIRST + 49 } +// #define ListView_SetItemPosition32(hwndLV, i, x0, y0) { POINT ptNewPos; ptNewPos.x = x0; ptNewPos.y = y0; SNDMSG((hwndLV), LVM_SETITEMPOSITION32, (WPARAM)(int)(i), (LPARAM)&ptNewPos); } + +enum : uint { LVM_GETSELECTEDCOUNT = LVM_FIRST + 50 } +// #define ListView_GetSelectedCount(hwndLV) (UINT)SNDMSG((hwndLV), LVM_GETSELECTEDCOUNT, 0, 0L) + +enum : uint { LVM_GETITEMSPACING = LVM_FIRST + 51 } +// #define ListView_GetItemSpacing(hwndLV, fSmall) (DWORD)SNDMSG((hwndLV), LVM_GETITEMSPACING, fSmall, 0L) + +enum : uint { LVM_GETISEARCHSTRINGA = LVM_FIRST + 52 } +enum : uint { LVM_GETISEARCHSTRINGW = LVM_FIRST + 117 } + +// #ifdef UNICODE +// #... +// #else +alias LVM_GETISEARCHSTRINGA LVM_GETISEARCHSTRING; +// #endif + +// #define ListView_GetISearchString(hwndLV, lpsz) (BOOL)SNDMSG((hwndLV), LVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)(lpsz)) + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVM_SETICONSPACING = LVM_FIRST + 53 } + +// #define ListView_SetIconSpacing(hwndLV, cx, cy) (DWORD)SNDMSG((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy)) + +enum : uint { LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54 } +// #define ListView_SetExtendedListViewStyle(hwndLV, dw) (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw) +// #if (_WIN32_IE >= 0x0400) +// #define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw) (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, dwMask, dw) +// #endif + +enum : uint { LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55 } +// #define ListView_GetExtendedListViewStyle(hwndLV) (DWORD)SNDMSG((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0) + +enum : uint { LVS_EX_GRIDLINES = 0x00000001 } +enum : uint { LVS_EX_SUBITEMIMAGES = 0x00000002 } +enum : uint { LVS_EX_CHECKBOXES = 0x00000004 } +enum : uint { LVS_EX_TRACKSELECT = 0x00000008 } +enum : uint { LVS_EX_HEADERDRAGDROP = 0x00000010 } +enum : uint { LVS_EX_FULLROWSELECT = 0x00000020 } +enum : uint { LVS_EX_ONECLICKACTIVATE = 0x00000040 } +enum : uint { LVS_EX_TWOCLICKACTIVATE = 0x00000080 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { LVS_EX_FLATSB = 0x00000100 } +enum : uint { LVS_EX_REGIONAL = 0x00000200 } +enum : uint { LVS_EX_INFOTIP = 0x00000400 } +enum : uint { LVS_EX_UNDERLINEHOT = 0x00000800 } +enum : uint { LVS_EX_UNDERLINECOLD = 0x00001000 } +enum : uint { LVS_EX_MULTIWORKAREAS = 0x00002000 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { LVS_EX_LABELTIP = 0x00004000 } +enum : uint { LVS_EX_BORDERSELECT = 0x00008000 } +// #endif // End (_WIN32_IE >= 0x0500) +// #if (_WIN32_WINNT >= 0x501) +enum : uint { LVS_EX_DOUBLEBUFFER = 0x00010000 } +enum : uint { LVS_EX_HIDELABELS = 0x00020000 } +enum : uint { LVS_EX_SINGLEROW = 0x00040000 } +enum : uint { LVS_EX_SNAPTOGRID = 0x00080000 } +enum : uint { LVS_EX_SIMPLESELECT = 0x00100000 } +// #endif + +enum : uint { LVM_GETSUBITEMRECT = LVM_FIRST + 56 } +// #define ListView_GetSubItemRect(hwnd, iItem, iSubItem, code, prc) (BOOL)SNDMSG((hwnd), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem), ((prc) ? ((((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code), (LPARAM)(prc)) : (LPARAM)(LPRECT)NULL)) + +enum : uint { LVM_SUBITEMHITTEST = LVM_FIRST + 57 } +// #define ListView_SubItemHitTest(hwnd, plvhti) (int)SNDMSG((hwnd), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti)) + +enum : uint { LVM_SETCOLUMNORDERARRAY = LVM_FIRST + 58 } +// #define ListView_SetColumnOrderArray(hwnd, iCount, pi) (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNORDERARRAY, (WPARAM)(iCount), (LPARAM)(LPINT)(pi)) + +enum : uint { LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59 } +// #define ListView_GetColumnOrderArray(hwnd, iCount, pi) (BOOL)SNDMSG((hwnd), LVM_GETCOLUMNORDERARRAY, (WPARAM)(iCount), (LPARAM)(LPINT)(pi)) + +enum : uint { LVM_SETHOTITEM = LVM_FIRST + 60 } +// #define ListView_SetHotItem(hwnd, i) (int)SNDMSG((hwnd), LVM_SETHOTITEM, (WPARAM)(i), 0) + +enum : uint { LVM_GETHOTITEM = LVM_FIRST + 61 } +// #define ListView_GetHotItem(hwnd) (int)SNDMSG((hwnd), LVM_GETHOTITEM, 0, 0) + +enum : uint { LVM_SETHOTCURSOR = LVM_FIRST + 62 } +// #define ListView_SetHotCursor(hwnd, hcur) (HCURSOR)SNDMSG((hwnd), LVM_SETHOTCURSOR, 0, (LPARAM)(hcur)) + +enum : uint { LVM_GETHOTCURSOR = LVM_FIRST + 63 } +// #define ListView_GetHotCursor(hwnd) (HCURSOR)SNDMSG((hwnd), LVM_GETHOTCURSOR, 0, 0) + +enum : uint { LVM_APPROXIMATEVIEWRECT = LVM_FIRST + 64 } +// #define ListView_ApproximateViewRect(hwnd, iWidth, iHeight, iCount) (DWORD)SNDMSG((hwnd), LVM_APPROXIMATEVIEWRECT, iCount, MAKELPARAM(iWidth, iHeight)) +// #endif // _WIN32_IE >= 0x0300 + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { LV_MAX_WORKAREAS = 16 } +enum : uint { LVM_SETWORKAREAS = LVM_FIRST + 65 } +// #define ListView_SetWorkAreas(hwnd, nWorkAreas, prc) (BOOL)SNDMSG((hwnd), LVM_SETWORKAREAS, (WPARAM)(int)(nWorkAreas), (LPARAM)(RECT *)(prc)) + +enum : uint { LVM_GETWORKAREAS = LVM_FIRST + 70 } +// #define ListView_GetWorkAreas(hwnd, nWorkAreas, prc) (BOOL)SNDMSG((hwnd), LVM_GETWORKAREAS, (WPARAM)(int)(nWorkAreas), (LPARAM)(RECT *)(prc)) + +enum : uint { LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73 } +// #define ListView_GetNumberOfWorkAreas(hwnd, pnWorkAreas) (BOOL)SNDMSG((hwnd), LVM_GETNUMBEROFWORKAREAS, 0, (LPARAM)(UINT *)(pnWorkAreas)) + +enum : uint { LVM_GETSELECTIONMARK = LVM_FIRST + 66 } +// #define ListView_GetSelectionMark(hwnd) (int)SNDMSG((hwnd), LVM_GETSELECTIONMARK, 0, 0) + +enum : uint { LVM_SETSELECTIONMARK = LVM_FIRST + 67 } +// #define ListView_SetSelectionMark(hwnd, i) (int)SNDMSG((hwnd), LVM_SETSELECTIONMARK, 0, (LPARAM)(i)) + +enum : uint { LVM_SETHOVERTIME = LVM_FIRST + 71 } +// #define ListView_SetHoverTime(hwndLV, dwHoverTimeMs) (DWORD)SNDMSG((hwndLV), LVM_SETHOVERTIME, 0, (LPARAM)(dwHoverTimeMs)) + +enum : uint { LVM_GETHOVERTIME = LVM_FIRST + 72 } +// #define ListView_GetHoverTime(hwndLV) (DWORD)SNDMSG((hwndLV), LVM_GETHOVERTIME, 0, 0) + +enum : uint { LVM_SETTOOLTIPS = LVM_FIRST + 74 } +// #define ListView_SetToolTips(hwndLV, hwndNewHwnd) (HWND)SNDMSG((hwndLV), LVM_SETTOOLTIPS, (WPARAM)(hwndNewHwnd), 0) + +enum : uint { LVM_GETTOOLTIPS = LVM_FIRST + 78 } +// #define ListView_GetToolTips(hwndLV) (HWND)SNDMSG((hwndLV), LVM_GETTOOLTIPS, 0, 0) + +enum : uint { LVM_SORTITEMSEX = LVM_FIRST + 81 } +// #define ListView_SortItemsEx(hwndLV, _pfnCompare, _lPrm) (BOOL)SNDMSG((hwndLV), LVM_SORTITEMSEX, (WPARAM)(LPARAM)(_lPrm), (LPARAM)(PFNLVCOMPARE)(_pfnCompare)) + +struct tagLVBKIMAGEA { + ULONG ulFlags; + HBITMAP hbm; + LPSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; +} +alias tagLVBKIMAGEA LVBKIMAGEA; +alias tagLVBKIMAGEA* LPLVBKIMAGEA; + +struct tagLVBKIMAGEW { + ULONG ulFlags; + HBITMAP hbm; + LPWSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; +} +alias tagLVBKIMAGEW LVBKIMAGEW; +alias tagLVBKIMAGEW* LPLVBKIMAGEW; + +enum : uint { LVBKIF_SOURCE_NONE = 0x00000000 } +enum : uint { LVBKIF_SOURCE_HBITMAP = 0x00000001 } +enum : uint { LVBKIF_SOURCE_URL = 0x00000002 } +enum : uint { LVBKIF_SOURCE_MASK = 0x00000003 } +enum : uint { LVBKIF_STYLE_NORMAL = 0x00000000 } +enum : uint { LVBKIF_STYLE_TILE = 0x00000010 } +enum : uint { LVBKIF_STYLE_MASK = 0x00000010 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { LVBKIF_FLAG_TILEOFFSET = 0x00000100 } +enum : uint { LVBKIF_TYPE_WATERMARK = 0x10000000 } +// #endif + +enum : uint { LVM_SETBKIMAGEA = LVM_FIRST + 68 } +enum : uint { LVM_SETBKIMAGEW = LVM_FIRST + 138 } +enum : uint { LVM_GETBKIMAGEA = LVM_FIRST + 69 } +enum : uint { LVM_GETBKIMAGEW = LVM_FIRST + 139 } + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 } +// #define ListView_SetSelectedColumn(hwnd, iCol) SNDMSG((hwnd), LVM_SETSELECTEDCOLUMN, (WPARAM)iCol, 0) + +enum : uint { LVM_SETTILEWIDTH = LVM_FIRST + 141 } +// #define ListView_SetTileWidth(hwnd, cpWidth) SNDMSG((hwnd), LVM_SETTILEWIDTH, (WPARAM)cpWidth, 0) + +enum : uint { LV_VIEW_ICON = 0x0000 } +enum : uint { LV_VIEW_DETAILS = 0x0001 } +enum : uint { LV_VIEW_SMALLICON = 0x0002 } +enum : uint { LV_VIEW_LIST = 0x0003 } +enum : uint { LV_VIEW_TILE = 0x0004 } +enum : uint { LV_VIEW_MAX = 0x0004 } + +enum : uint { LVM_SETVIEW = LVM_FIRST + 142 } +// #define ListView_SetView(hwnd, iView) (DWORD)SNDMSG((hwnd), LVM_SETVIEW, (WPARAM)(DWORD)iView, 0) + +enum : uint { LVM_GETVIEW = LVM_FIRST + 143 } +// #define ListView_GetView(hwnd) (DWORD)SNDMSG((hwnd), LVM_GETVIEW, 0, 0) + +enum : uint { LVGF_NONE = 0x00000000 } +enum : uint { LVGF_HEADER = 0x00000001 } +enum : uint { LVGF_FOOTER = 0x00000002 } +enum : uint { LVGF_STATE = 0x00000004 } +enum : uint { LVGF_ALIGN = 0x00000008 } +enum : uint { LVGF_GROUPID = 0x00000010 } + +enum : uint { LVGS_NORMAL = 0x00000000 } +enum : uint { LVGS_COLLAPSED = 0x00000001 } +enum : uint { LVGS_HIDDEN = 0x00000002 } + +enum : uint { LVGA_HEADER_LEFT = 0x00000001 } +enum : uint { LVGA_HEADER_CENTER = 0x00000002 } +enum : uint { LVGA_HEADER_RIGHT = 0x00000004 } +enum : uint { LVGA_FOOTER_LEFT = 0x00000008 } +enum : uint { LVGA_FOOTER_CENTER = 0x00000010 } +enum : uint { LVGA_FOOTER_RIGHT = 0x00000020 } + +struct tagLVGROUP { + UINT cbSize; + UINT mask; + LPWSTR pszHeader; + int cchHeader; + LPWSTR pszFooter; + int cchFooter; + int iGroupId; + UINT stateMask; + UINT state; + UINT uAlign; +} +alias tagLVGROUP LVGROUP; +alias tagLVGROUP* PLVGROUP; + +enum : uint { LVM_INSERTGROUP = LVM_FIRST + 145 } +// #define ListView_InsertGroup(hwnd, index, pgrp) SNDMSG((hwnd), LVM_INSERTGROUP, (WPARAM)index, (LPARAM)pgrp) + +enum : uint { LVM_SETGROUPINFO = LVM_FIRST + 147 } +// #define ListView_SetGroupInfo(hwnd, iGroupId, pgrp) SNDMSG((hwnd), LVM_SETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp) + +enum : uint { LVM_GETGROUPINFO = LVM_FIRST + 149 } +// #define ListView_GetGroupInfo(hwnd, iGroupId, pgrp) SNDMSG((hwnd), LVM_GETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp) + +enum : uint { LVM_REMOVEGROUP = LVM_FIRST + 150 } +// #define ListView_RemoveGroup(hwnd, iGroupId) SNDMSG((hwnd), LVM_REMOVEGROUP, (WPARAM)iGroupId, 0) + +enum : uint { LVM_MOVEGROUP = LVM_FIRST + 151 } +// #define ListView_MoveGroup(hwnd, iGroupId, toIndex) SNDMSG((hwnd), LVM_MOVEGROUP, (WPARAM)iGroupId, (LPARAM)toIndex) + +enum : uint { LVM_MOVEITEMTOGROUP = LVM_FIRST + 154 } +// #define ListView_MoveItemToGroup(hwnd, idItemFrom, idGroupTo) SNDMSG((hwnd), LVM_MOVEITEMTOGROUP, (WPARAM)idItemFrom, (LPARAM)idGroupTo) + +enum : uint { LVGMF_NONE = 0x00000000 } +enum : uint { LVGMF_BORDERSIZE = 0x00000001 } +enum : uint { LVGMF_BORDERCOLOR = 0x00000002 } +enum : uint { LVGMF_TEXTCOLOR = 0x00000004 } + +struct tagLVGROUPMETRICS { + UINT cbSize; + UINT mask; + UINT Left; + UINT Top; + UINT Right; + UINT Bottom; + COLORREF crLeft; + COLORREF crTop; + COLORREF crRight; + COLORREF crBottom; + COLORREF crHeader; + COLORREF crFooter; +} +alias tagLVGROUPMETRICS LVGROUPMETRICS; +alias tagLVGROUPMETRICS* PLVGROUPMETRICS; + +enum : uint { LVM_SETGROUPMETRICS = LVM_FIRST + 155 } +// #define ListView_SetGroupMetrics(hwnd, pGroupMetrics) SNDMSG((hwnd), LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics) + +enum : uint { LVM_GETGROUPMETRICS = LVM_FIRST + 156 } +// #define ListView_GetGroupMetrics(hwnd, pGroupMetrics) SNDMSG((hwnd), LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics) + +enum : uint { LVM_ENABLEGROUPVIEW = LVM_FIRST + 157 } +// #define ListView_EnableGroupView(hwnd, fEnable) SNDMSG((hwnd), LVM_ENABLEGROUPVIEW, (WPARAM)fEnable, 0) + +extern(Windows) alias int function(int, int, void *) PFNLVGROUPCOMPARE; + +enum : uint { LVM_SORTGROUPS = LVM_FIRST + 158 } +// #define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv) SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)_pfnGroupCompate, (LPARAM)_plv) + +struct tagLVINSERTGROUPSORTED { + PFNLVGROUPCOMPARE pfnGroupCompare; + void *pvData; + LVGROUP lvGroup; +} +alias tagLVINSERTGROUPSORTED LVINSERTGROUPSORTED; +alias tagLVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; + +enum : uint { LVM_INSERTGROUPSORTED = LVM_FIRST + 159 } +// #define ListView_InsertGroupSorted(hwnd, structInsert) SNDMSG((hwnd), LVM_INSERTGROUPSORTED, (WPARAM)structInsert, 0) + +enum : uint { LVM_REMOVEALLGROUPS = LVM_FIRST + 160 } +// #define ListView_RemoveAllGroups(hwnd) SNDMSG((hwnd), LVM_REMOVEALLGROUPS, 0, 0) + +enum : uint { LVM_HASGROUP = LVM_FIRST + 161 } +// #define ListView_HasGroup(hwnd, dwGroupId) SNDMSG((hwnd), LVM_HASGROUP, dwGroupId, 0) + +enum : uint { LVTVIF_AUTOSIZE = 0x00000000 } +enum : uint { LVTVIF_FIXEDWIDTH = 0x00000001 } +enum : uint { LVTVIF_FIXEDHEIGHT = 0x00000002 } +enum : uint { LVTVIF_FIXEDSIZE = 0x00000003 } + +enum : uint { LVTVIM_TILESIZE = 0x00000001 } +enum : uint { LVTVIM_COLUMNS = 0x00000002 } +enum : uint { LVTVIM_LABELMARGIN = 0x00000004 } + +struct tagLVTILEVIEWINFO { + UINT cbSize; + DWORD dwMask; + DWORD dwFlags; + SIZE sizeTile; + int cLines; + RECT rcLabelMargin; +} +alias tagLVTILEVIEWINFO LVTILEVIEWINFO; +alias tagLVTILEVIEWINFO* PLVTILEVIEWINFO; + +struct tagLVTILEINFO { + UINT cbSize; + int iItem; + UINT cColumns; + PUINT puColumns; +} +alias tagLVTILEINFO LVTILEINFO; +alias tagLVTILEINFO* PLVTILEINFO; + +enum : uint { LVM_SETTILEVIEWINFO = LVM_FIRST + 162 } +// #define ListView_SetTileViewInfo(hwnd, ptvi) SNDMSG((hwnd), LVM_SETTILEVIEWINFO, 0, (LPARAM)ptvi) + +enum : uint { LVM_GETTILEVIEWINFO = LVM_FIRST + 163 } +// #define ListView_GetTileViewInfo(hwnd, ptvi) SNDMSG((hwnd), LVM_GETTILEVIEWINFO, 0, (LPARAM)ptvi) + +enum : uint { LVM_SETTILEINFO = LVM_FIRST + 164 } +// #define ListView_SetTileInfo(hwnd, pti) SNDMSG((hwnd), LVM_SETTILEINFO, 0, (LPARAM)pti) + +enum : uint { LVM_GETTILEINFO = LVM_FIRST + 165 } +// #define ListView_GetTileInfo(hwnd, pti) SNDMSG((hwnd), LVM_GETTILEINFO, 0, (LPARAM)pti) + +struct _8 { + UINT cbSize; + DWORD dwFlags; + int iItem; + DWORD dwReserved; +} +alias _8 LVINSERTMARK; +alias _8* LPLVINSERTMARK; + +enum : uint { LVIM_AFTER = 0x00000001 } + +enum : uint { LVM_SETINSERTMARK = LVM_FIRST + 166 } +// #define ListView_SetInsertMark(hwnd, lvim) (BOOL)SNDMSG((hwnd), LVM_SETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim)) + +enum : uint { LVM_GETINSERTMARK = LVM_FIRST + 167 } +// #define ListView_GetInsertMark(hwnd, lvim) (BOOL)SNDMSG((hwnd), LVM_GETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim)) + +enum : uint { LVM_INSERTMARKHITTEST = LVM_FIRST + 168 } +// #define ListView_InsertMarkHitTest(hwnd, point, lvim) (int)SNDMSG((hwnd), LVM_INSERTMARKHITTEST, (WPARAM)(LPPOINT)(point), (LPARAM)(LPLVINSERTMARK)(lvim)) + +enum : uint { LVM_GETINSERTMARKRECT = LVM_FIRST + 169 } +// #define ListView_GetInsertMarkRect(hwnd, rc) (int)SNDMSG((hwnd), LVM_GETINSERTMARKRECT, (WPARAM)0, (LPARAM)(LPRECT)(rc)) + +enum : uint { LVM_SETINSERTMARKCOLOR = LVM_FIRST + 170 } +// #define ListView_SetInsertMarkColor(hwnd, color) (COLORREF)SNDMSG((hwnd), LVM_SETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color)) + +enum : uint { LVM_GETINSERTMARKCOLOR = LVM_FIRST + 171 } +// #define ListView_GetInsertMarkColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)0) + +struct tagLVSETINFOTIP { + UINT cbSize; + DWORD dwFlags; + LPWSTR pszText; + int iItem; + int iSubItem; +} +alias tagLVSETINFOTIP LVSETINFOTIP; +alias tagLVSETINFOTIP* PLVSETINFOTIP; + +enum : uint { LVM_SETINFOTIP = LVM_FIRST + 173 } + +// #define ListView_SetInfoTip(hwndLV, plvInfoTip) (BOOL)SNDMSG((hwndLV), LVM_SETINFOTIP, (WPARAM)0, (LPARAM)plvInfoTip) + +enum : uint { LVM_GETSELECTEDCOLUMN = LVM_FIRST + 174 } +// #define ListView_GetSelectedColumn(hwnd) (UINT)SNDMSG((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0) + +enum : uint { LVM_ISGROUPVIEWENABLED = LVM_FIRST + 175 } +// #define ListView_IsGroupViewEnabled(hwnd) (BOOL)SNDMSG((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0) + +enum : uint { LVM_GETOUTLINECOLOR = LVM_FIRST + 176 } +// #define ListView_GetOutlineColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETOUTLINECOLOR, 0, 0) + +enum : uint { LVM_SETOUTLINECOLOR = LVM_FIRST + 177 } +// #define ListView_SetOutlineColor(hwnd, color) (COLORREF)SNDMSG((hwnd), LVM_SETOUTLINECOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color)) + +enum : uint { LVM_CANCELEDITLABEL = LVM_FIRST + 179 } +// #define ListView_CancelEditLabel(hwnd) (VOID)SNDMSG((hwnd), LVM_CANCELEDITLABEL, (WPARAM)0, (LPARAM)0) + +enum : uint { LVM_MAPINDEXTOID = LVM_FIRST + 180 } +// #define ListView_MapIndexToID(hwnd, index) (UINT)SNDMSG((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, (LPARAM)0) + +enum : uint { LVM_MAPIDTOINDEX = LVM_FIRST + 181 } +// #define ListView_MapIDToIndex(hwnd, id) (UINT)SNDMSG((hwnd), LVM_MAPIDTOINDEX, (WPARAM)id, (LPARAM)0) + +// #endif + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #else +alias LVBKIMAGEA LVBKIMAGE; +alias LPLVBKIMAGEA LPLVBKIMAGE; +alias LVM_SETBKIMAGEA LVM_SETBKIMAGE; +alias LVM_GETBKIMAGEA LVM_GETBKIMAGE; +// #endif + +// #define ListView_SetBkImage(hwnd, plvbki) (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)(plvbki)) + +// #define ListView_GetBkImage(hwnd, plvbki) (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki)) + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_IE >= 0x0300) +alias LPNMLISTVIEW LPNM_LISTVIEW; +alias NMLISTVIEW NM_LISTVIEW; +// #else +// #... +// #... +// #... +// #endif + +struct tagNMLISTVIEW { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; +} +alias tagNMLISTVIEW NMLISTVIEW; +alias tagNMLISTVIEW* LPNMLISTVIEW; + +// #if (_WIN32_IE >= 0x400) + +struct tagNMITEMACTIVATE { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; + UINT uKeyFlags; +} +alias tagNMITEMACTIVATE NMITEMACTIVATE; +alias tagNMITEMACTIVATE* LPNMITEMACTIVATE; + +enum : uint { LVKF_ALT = 0x0001 } +enum : uint { LVKF_CONTROL = 0x0002 } +enum : uint { LVKF_SHIFT = 0x0004 } +// #endif //(_WIN32_IE >= 0x0400) + +// #if (_WIN32_IE >= 0x0300) +// #define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLVCUSTOMDRW, clrTextBk) + +struct tagNMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; +// #if (_WIN32_IE >= 0x0400) + int iSubItem; +// #endif +// #if (_WIN32_WINNT >= 0x501) + DWORD dwItemType; + COLORREF clrFace; + int iIconEffect; + int iIconPhase; + int iPartId; + int iStateId; + RECT rcText; + UINT uAlign; +// #endif +} +alias tagNMLVCUSTOMDRAW NMLVCUSTOMDRAW; +alias tagNMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW; + +enum : uint { LVCDI_ITEM = 0x00000000 } +enum : uint { LVCDI_GROUP = 0x00000001 } + +enum : uint { LVCDRF_NOSELECT = 0x00010000 } +enum : uint { LVCDRF_NOGROUPFRAME = 0x00020000 } + +struct tagNMLVCACHEHINT { + NMHDR hdr; + int iFrom; + int iTo; +} +alias tagNMLVCACHEHINT NMLVCACHEHINT; +alias tagNMLVCACHEHINT* LPNMLVCACHEHINT; + +alias LPNMLVCACHEHINT LPNM_CACHEHINT; +alias LPNMLVCACHEHINT PNM_CACHEHINT; +alias NMLVCACHEHINT NM_CACHEHINT; + +struct tagNMLVFINDITEMA { + NMHDR hdr; + int iStart; + LVFINDINFOA lvfi; +} +alias tagNMLVFINDITEMA NMLVFINDITEMA; +alias tagNMLVFINDITEMA* LPNMLVFINDITEMA; + +struct tagNMLVFINDITEMW { + NMHDR hdr; + int iStart; + LVFINDINFOW lvfi; +} +alias tagNMLVFINDITEMW NMLVFINDITEMW; +alias tagNMLVFINDITEMW* LPNMLVFINDITEMW; + +alias LPNMLVFINDITEMA PNM_FINDITEMA; +alias LPNMLVFINDITEMA LPNM_FINDITEMA; +alias NMLVFINDITEMA NM_FINDITEMA; + +alias LPNMLVFINDITEMW PNM_FINDITEMW; +alias LPNMLVFINDITEMW LPNM_FINDITEMW; +alias NMLVFINDITEMW NM_FINDITEMW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #... +// #else +alias PNM_FINDITEMA PNM_FINDITEM; +alias LPNM_FINDITEMA LPNM_FINDITEM; +alias NM_FINDITEMA NM_FINDITEM; +alias NMLVFINDITEMA NMLVFINDITEM; +alias LPNMLVFINDITEMA LPNMLVFINDITEM; +// #endif + +struct tagNMLVODSTATECHANGE { + NMHDR hdr; + int iFrom; + int iTo; + UINT uNewState; + UINT uOldState; +} +alias tagNMLVODSTATECHANGE NMLVODSTATECHANGE; +alias tagNMLVODSTATECHANGE* LPNMLVODSTATECHANGE; + +alias LPNMLVODSTATECHANGE PNM_ODSTATECHANGE; +alias LPNMLVODSTATECHANGE LPNM_ODSTATECHANGE; +alias NMLVODSTATECHANGE NM_ODSTATECHANGE; +// #endif // _WIN32_IE >= 0x0300 + +enum : uint { LVN_ITEMCHANGING = LVN_FIRST-0 } +enum : uint { LVN_ITEMCHANGED = LVN_FIRST-1 } +enum : uint { LVN_INSERTITEM = LVN_FIRST-2 } +enum : uint { LVN_DELETEITEM = LVN_FIRST-3 } +enum : uint { LVN_DELETEALLITEMS = LVN_FIRST-4 } +enum : uint { LVN_BEGINLABELEDITA = LVN_FIRST-5 } +enum : uint { LVN_BEGINLABELEDITW = LVN_FIRST-75 } +enum : uint { LVN_ENDLABELEDITA = LVN_FIRST-6 } +enum : uint { LVN_ENDLABELEDITW = LVN_FIRST-76 } +enum : uint { LVN_COLUMNCLICK = LVN_FIRST-8 } +enum : uint { LVN_BEGINDRAG = LVN_FIRST-9 } +enum : uint { LVN_BEGINRDRAG = LVN_FIRST-11 } + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVN_ODCACHEHINT = LVN_FIRST-13 } +enum : uint { LVN_ODFINDITEMA = LVN_FIRST-52 } +enum : uint { LVN_ODFINDITEMW = LVN_FIRST-79 } + +enum : uint { LVN_ITEMACTIVATE = LVN_FIRST-14 } +enum : uint { LVN_ODSTATECHANGED = LVN_FIRST-15 } + +// #ifdef UNICODE +// #... +// #else +alias LVN_ODFINDITEMA LVN_ODFINDITEM; +// #endif +// #endif // _WIN32_IE >= 0x0300 + +// #if (_WIN32_IE >= 0x0400) +enum : uint { LVN_HOTTRACK = LVN_FIRST-21 } +// #endif + +enum : uint { LVN_GETDISPINFOA = LVN_FIRST-50 } +enum : uint { LVN_GETDISPINFOW = LVN_FIRST-77 } +enum : uint { LVN_SETDISPINFOA = LVN_FIRST-51 } +enum : uint { LVN_SETDISPINFOW = LVN_FIRST-78 } + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #else +alias LVN_BEGINLABELEDITA LVN_BEGINLABELEDIT; +alias LVN_ENDLABELEDITA LVN_ENDLABELEDIT; +alias LVN_GETDISPINFOA LVN_GETDISPINFO; +alias LVN_SETDISPINFOA LVN_SETDISPINFO; +// #endif + +enum : uint { LVIF_DI_SETITEM = 0x1000 } + +// #if (_WIN32_IE >= 0x0300) +alias NMLVDISPINFOA LV_DISPINFOA; +alias NMLVDISPINFOW LV_DISPINFOW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias NMLVDISPINFO LV_DISPINFO; + +struct tagLVDISPINFO { + NMHDR hdr; + LVITEMA item; +} +alias tagLVDISPINFO NMLVDISPINFOA; +alias tagLVDISPINFO* LPNMLVDISPINFOA; + +struct tagLVDISPINFOW { + NMHDR hdr; + LVITEMW item; +} +alias tagLVDISPINFOW NMLVDISPINFOW; +alias tagLVDISPINFOW* LPNMLVDISPINFOW; + +// #ifdef UNICODE +// #... +// #else +alias NMLVDISPINFOA NMLVDISPINFO; +// #endif + +enum : uint { LVN_KEYDOWN = LVN_FIRST-55 } + +// #if (_WIN32_IE >= 0x0300) +alias NMLVKEYDOWN LV_KEYDOWN; +// #else +// #... +// #... +// #endif + +// #ifdef _WIN32 +align(1): +// #endif + +struct tagLVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} +alias tagLVKEYDOWN NMLVKEYDOWN; +alias tagLVKEYDOWN* LPNMLVKEYDOWN; + +// #ifdef _WIN32 +align: +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVN_MARQUEEBEGIN = LVN_FIRST-56 } +// #endif + +// #if (_WIN32_IE >= 0x0400) +struct tagNMLVGETINFOTIPA { + NMHDR hdr; + DWORD dwFlags; + LPSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; +} +alias tagNMLVGETINFOTIPA NMLVGETINFOTIPA; +alias tagNMLVGETINFOTIPA* LPNMLVGETINFOTIPA; + +struct tagNMLVGETINFOTIPW { + NMHDR hdr; + DWORD dwFlags; + LPWSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; +} +alias tagNMLVGETINFOTIPW NMLVGETINFOTIPW; +alias tagNMLVGETINFOTIPW* LPNMLVGETINFOTIPW; + +enum : uint { LVGIT_UNFOLDED = 0x0001 } + +enum : uint { LVN_GETINFOTIPA = LVN_FIRST-57 } +enum : uint { LVN_GETINFOTIPW = LVN_FIRST-58 } + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias LVN_GETINFOTIPA LVN_GETINFOTIP; +alias NMLVGETINFOTIPA NMLVGETINFOTIP; +alias LPNMLVGETINFOTIPA LPNMLVGETINFOTIP; +// #endif + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_WINNT >= 0x501) +struct tagNMLVSCROLL { + NMHDR hdr; + int dx; + int dy; +} +alias tagNMLVSCROLL NMLVSCROLL; +alias tagNMLVSCROLL* LPNMLVSCROLL; + +enum : uint { LVN_BEGINSCROLL = LVN_FIRST-80 } +enum : uint { LVN_ENDSCROLL = LVN_FIRST-81 } +// #endif + +// #endif // NOLISTVIEW + +// #ifndef NOTREEVIEW + +// #ifdef _WIN32 +const char[] WC_TREEVIEWA = "SysTreeView32"; +const wchar[] WC_TREEVIEWW = "SysTreeView32"; + +// #ifdef UNICODE +// #... +// #else +alias WC_TREEVIEWA WC_TREEVIEW; +// #endif + +// #else +// #... +// #endif + +enum : uint { TVS_HASBUTTONS = 0x0001 } +enum : uint { TVS_HASLINES = 0x0002 } +enum : uint { TVS_LINESATROOT = 0x0004 } +enum : uint { TVS_EDITLABELS = 0x0008 } +enum : uint { TVS_DISABLEDRAGDROP = 0x0010 } +enum : uint { TVS_SHOWSELALWAYS = 0x0020 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TVS_RTLREADING = 0x0040 } + +enum : uint { TVS_NOTOOLTIPS = 0x0080 } +enum : uint { TVS_CHECKBOXES = 0x0100 } +enum : uint { TVS_TRACKSELECT = 0x0200 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVS_SINGLEEXPAND = 0x0400 } +enum : uint { TVS_INFOTIP = 0x0800 } +enum : uint { TVS_FULLROWSELECT = 0x1000 } +enum : uint { TVS_NOSCROLL = 0x2000 } +enum : uint { TVS_NONEVENHEIGHT = 0x4000 } +// #endif +// #if (_WIN32_IE >= 0x500) +enum : uint { TVS_NOHSCROLL = 0x8000 } +// #endif +// #endif + +alias _TREEITEM* HTREEITEM; + +enum : uint { TVIF_TEXT = 0x0001 } +enum : uint { TVIF_IMAGE = 0x0002 } +enum : uint { TVIF_PARAM = 0x0004 } +enum : uint { TVIF_STATE = 0x0008 } +enum : uint { TVIF_HANDLE = 0x0010 } +enum : uint { TVIF_SELECTEDIMAGE = 0x0020 } +enum : uint { TVIF_CHILDREN = 0x0040 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVIF_INTEGRAL = 0x0080 } +// #endif +enum : uint { TVIS_SELECTED = 0x0002 } +enum : uint { TVIS_CUT = 0x0004 } +enum : uint { TVIS_DROPHILITED = 0x0008 } +enum : uint { TVIS_BOLD = 0x0010 } +enum : uint { TVIS_EXPANDED = 0x0020 } +enum : uint { TVIS_EXPANDEDONCE = 0x0040 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TVIS_EXPANDPARTIAL = 0x0080 } +// #endif + +enum : uint { TVIS_OVERLAYMASK = 0x0F00 } +enum : uint { TVIS_STATEIMAGEMASK = 0xF000 } +enum : uint { TVIS_USERMASK = 0xF000 } + +enum { I_CHILDRENCALLBACK = -1 } + +// #if (_WIN32_IE >= 0x0300) +alias LPTVITEMW LPTV_ITEMW; +alias LPTVITEMA LPTV_ITEMA; +alias TVITEMW TV_ITEMW; +alias TVITEMA TV_ITEMA; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias LPTVITEM LPTV_ITEM; +alias TVITEM TV_ITEM; + +struct tagTVITEMA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias tagTVITEMA TVITEMA; +alias tagTVITEMA* LPTVITEMA; + +struct tagTVITEMW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias tagTVITEMW TVITEMW; +alias tagTVITEMW* LPTVITEMW; + +// #if (_WIN32_IE >= 0x0400) + +struct tagTVITEMEXA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; +} +alias tagTVITEMEXA TVITEMEXA; +alias tagTVITEMEXA* LPTVITEMEXA; + +struct tagTVITEMEXW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; +} +alias tagTVITEMEXW TVITEMEXW; +alias tagTVITEMEXW* LPTVITEMEXW; + +// #ifdef UNICODE +// ... +// #else +alias TVITEMEXA TVITEMEX; +alias LPTVITEMEXA LPTVITEMEX; +// #endif // UNICODE + +// #endif + +// #ifdef UNICODE +// #... +// #... +// #else +alias TVITEMA TVITEM; +alias LPTVITEMA LPTVITEM; +// #endif + +const HTREEITEM TVI_ROOT = cast(HTREEITEM)(-0x10000); +const HTREEITEM TVI_FIRST = cast(HTREEITEM)(-0x0FFFF); +const HTREEITEM TVI_LAST = cast(HTREEITEM)(-0x0FFFE); +const HTREEITEM TVI_SORT = cast(HTREEITEM)(-0x0FFFD); + +// #if (_WIN32_IE >= 0x0300) +alias LPTVINSERTSTRUCTA LPTV_INSERTSTRUCTA; +alias LPTVINSERTSTRUCTW LPTV_INSERTSTRUCTW; +alias TVINSERTSTRUCTA TV_INSERTSTRUCTA; +alias TVINSERTSTRUCTW TV_INSERTSTRUCTW; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias TVINSERTSTRUCT TV_INSERTSTRUCT; +alias LPTVINSERTSTRUCT LPTV_INSERTSTRUCT; + +// #define TVINSERTSTRUCTA_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item) +// #define TVINSERTSTRUCTW_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item) + +struct tagTVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; +// #if (_WIN32_IE >= 0x0400) +union { + TVITEMEXA itemex; + TV_ITEMA item; +} + +// #else +// ... +// #endif +} +alias tagTVINSERTSTRUCTA TVINSERTSTRUCTA; +alias tagTVINSERTSTRUCTA* LPTVINSERTSTRUCTA; + +struct tagTVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; +// #if (_WIN32_IE >= 0x0400) +union { + TVITEMEXW itemex; + TV_ITEMW item; +} + +// #else +// ... +// #endif +} +alias tagTVINSERTSTRUCTW TVINSERTSTRUCTW; +alias tagTVINSERTSTRUCTW* LPTVINSERTSTRUCTW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias TVINSERTSTRUCTA TVINSERTSTRUCT; +alias LPTVINSERTSTRUCTA LPTVINSERTSTRUCT; +// #define TVINSERTSTRUCT_V1_SIZE TVINSERTSTRUCTA_V1_SIZE +// #endif + +enum : uint { TVM_INSERTITEMA = TV_FIRST + 0 } +enum : uint { TVM_INSERTITEMW = TV_FIRST + 50 } +// #ifdef UNICODE +// #... +// #else +alias TVM_INSERTITEMA TVM_INSERTITEM; +// #endif + +// #define TreeView_InsertItem(hwnd, lpis) (HTREEITEM)SNDMSG((hwnd), TVM_INSERTITEM, 0, (LPARAM)(LPTV_INSERTSTRUCT)(lpis)) + +enum : uint { TVM_DELETEITEM = TV_FIRST + 1 } +// #define TreeView_DeleteItem(hwnd, hitem) (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hitem)) + +// #define TreeView_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT) + +enum : uint { TVM_EXPAND = TV_FIRST + 2 } +// #define TreeView_Expand(hwnd, hitem, code) (BOOL)SNDMSG((hwnd), TVM_EXPAND, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVE_COLLAPSE = 0x0001 } +enum : uint { TVE_EXPAND = 0x0002 } +enum : uint { TVE_TOGGLE = 0x0003 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TVE_EXPANDPARTIAL = 0x4000 } +// #endif +enum : uint { TVE_COLLAPSERESET = 0x8000 } + +enum : uint { TVM_GETITEMRECT = TV_FIRST + 4 } +// #define TreeView_GetItemRect(hwnd, hitem, prc, code) (*(HTREEITEM *)prc = (hitem), (BOOL)SNDMSG((hwnd), TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc))) + +enum : uint { TVM_GETCOUNT = TV_FIRST + 5 } +// #define TreeView_GetCount(hwnd) (UINT)SNDMSG((hwnd), TVM_GETCOUNT, 0, 0) + +enum : uint { TVM_GETINDENT = TV_FIRST + 6 } +// #define TreeView_GetIndent(hwnd) (UINT)SNDMSG((hwnd), TVM_GETINDENT, 0, 0) + +enum : uint { TVM_SETINDENT = TV_FIRST + 7 } +// #define TreeView_SetIndent(hwnd, indent) (BOOL)SNDMSG((hwnd), TVM_SETINDENT, (WPARAM)(indent), 0) + +enum : uint { TVM_GETIMAGELIST = TV_FIRST + 8 } +// #define TreeView_GetImageList(hwnd, iImage) (HIMAGELIST)SNDMSG((hwnd), TVM_GETIMAGELIST, iImage, 0) + +enum : uint { TVSIL_NORMAL = 0 } +enum : uint { TVSIL_STATE = 2 } + +enum : uint { TVM_SETIMAGELIST = TV_FIRST + 9 } +// #define TreeView_SetImageList(hwnd, himl, iImage) (HIMAGELIST)SNDMSG((hwnd), TVM_SETIMAGELIST, iImage, (LPARAM)(HIMAGELIST)(himl)) + +enum : uint { TVM_GETNEXTITEM = TV_FIRST + 10 } +// #define TreeView_GetNextItem(hwnd, hitem, code) (HTREEITEM)SNDMSG((hwnd), TVM_GETNEXTITEM, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVGN_ROOT = 0x0000 } +enum : uint { TVGN_NEXT = 0x0001 } +enum : uint { TVGN_PREVIOUS = 0x0002 } +enum : uint { TVGN_PARENT = 0x0003 } +enum : uint { TVGN_CHILD = 0x0004 } +enum : uint { TVGN_FIRSTVISIBLE = 0x0005 } +enum : uint { TVGN_NEXTVISIBLE = 0x0006 } +enum : uint { TVGN_PREVIOUSVISIBLE = 0x0007 } +enum : uint { TVGN_DROPHILITE = 0x0008 } +enum : uint { TVGN_CARET = 0x0009 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVGN_LASTVISIBLE = 0x000A } +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { TVSI_NOSINGLEEXPAND = 0x8000 } +// #endif + +// #define TreeView_GetChild(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD) +// #define TreeView_GetNextSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT) +// #define TreeView_GetPrevSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS) +// #define TreeView_GetParent(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT) +// #define TreeView_GetFirstVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE) +// #define TreeView_GetNextVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE) +// #define TreeView_GetPrevVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE) +// #define TreeView_GetSelection(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_CARET) +// #define TreeView_GetDropHilight(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE) +// #define TreeView_GetRoot(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT) +// #if (_WIN32_IE >= 0x0400) +// #define TreeView_GetLastVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE) +// #endif // _WIN32_IE >= 0x0400 + +enum : uint { TVM_SELECTITEM = TV_FIRST + 11 } +// #define TreeView_Select(hwnd, hitem, code) (BOOL)SNDMSG((hwnd), TVM_SELECTITEM, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem)) + +// #define TreeView_SelectItem(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_CARET) +// #define TreeView_SelectDropTarget(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_DROPHILITE) +// #define TreeView_SelectSetFirstVisible(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE) + +enum : uint { TVM_GETITEMA = TV_FIRST + 12 } +enum : uint { TVM_GETITEMW = TV_FIRST + 62 } + +// #ifdef UNICODE +// #... +// #else +alias TVM_GETITEMA TVM_GETITEM; +// #endif + +// #define TreeView_GetItem(hwnd, pitem) (BOOL)SNDMSG((hwnd), TVM_GETITEM, 0, (LPARAM)(TV_ITEM *)(pitem)) + +enum : uint { TVM_SETITEMA = TV_FIRST + 13 } +enum : uint { TVM_SETITEMW = TV_FIRST + 63 } + +// #ifdef UNICODE +// #... +// #else +alias TVM_SETITEMA TVM_SETITEM; +// #endif + +// #define TreeView_SetItem(hwnd, pitem) (BOOL)SNDMSG((hwnd), TVM_SETITEM, 0, (LPARAM)(const TV_ITEM *)(pitem)) + +enum : uint { TVM_EDITLABELA = TV_FIRST + 14 } +enum : uint { TVM_EDITLABELW = TV_FIRST + 65 } +// #ifdef UNICODE +// #... +// #else +alias TVM_EDITLABELA TVM_EDITLABEL; +// #endif + +// #define TreeView_EditLabel(hwnd, hitem) (HWND)SNDMSG((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVM_GETEDITCONTROL = TV_FIRST + 15 } +// #define TreeView_GetEditControl(hwnd) (HWND)SNDMSG((hwnd), TVM_GETEDITCONTROL, 0, 0) + +enum : uint { TVM_GETVISIBLECOUNT = TV_FIRST + 16 } +// #define TreeView_GetVisibleCount(hwnd) (UINT)SNDMSG((hwnd), TVM_GETVISIBLECOUNT, 0, 0) + +enum : uint { TVM_HITTEST = TV_FIRST + 17 } +// #define TreeView_HitTest(hwnd, lpht) (HTREEITEM)SNDMSG((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht)) + +// #if (_WIN32_IE >= 0x0300) +alias LPTVHITTESTINFO LPTV_HITTESTINFO; +alias TVHITTESTINFO TV_HITTESTINFO; +// #else +// #... +// #... +// #... +// #endif + +struct tagTVHITTESTINFO { + POINT pt; + UINT flags; + HTREEITEM hItem; +} +alias tagTVHITTESTINFO TVHITTESTINFO; +alias tagTVHITTESTINFO* LPTVHITTESTINFO; + +enum : uint { TVHT_NOWHERE = 0x0001 } +enum : uint { TVHT_ONITEMICON = 0x0002 } +enum : uint { TVHT_ONITEMLABEL = 0x0004 } +enum : uint { TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON } +enum : uint { TVHT_ONITEMINDENT = 0x0008 } +enum : uint { TVHT_ONITEMBUTTON = 0x0010 } +enum : uint { TVHT_ONITEMRIGHT = 0x0020 } +// #define TVHT_ONITEMSTATEICON 0x0040 + +enum : uint { TVHT_ABOVE = 0x0100 } +enum : uint { TVHT_BELOW = 0x0200 } +enum : uint { TVHT_TORIGHT = 0x0400 } +enum : uint { TVHT_TOLEFT = 0x0800 } + +enum : uint { TVM_CREATEDRAGIMAGE = TV_FIRST + 18 } +// #define TreeView_CreateDragImage(hwnd, hitem) (HIMAGELIST)SNDMSG((hwnd), TVM_CREATEDRAGIMAGE, 0, (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVM_SORTCHILDREN = TV_FIRST + 19 } +// #define TreeView_SortChildren(hwnd, hitem, recurse) (BOOL)SNDMSG((hwnd), TVM_SORTCHILDREN, (WPARAM)(recurse), (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVM_ENSUREVISIBLE = TV_FIRST + 20 } +// #define TreeView_EnsureVisible(hwnd, hitem) (BOOL)SNDMSG((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVM_SORTCHILDRENCB = TV_FIRST + 21 } +// #define TreeView_SortChildrenCB(hwnd, psort, recurse) (BOOL)SNDMSG((hwnd), TVM_SORTCHILDRENCB, (WPARAM)(recurse), (LPARAM)(LPTV_SORTCB)(psort)) + +enum : uint { TVM_ENDEDITLABELNOW = TV_FIRST + 22 } +// #define TreeView_EndEditLabelNow(hwnd, fCancel) (BOOL)SNDMSG((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)(fCancel), 0) + +enum : uint { TVM_GETISEARCHSTRINGA = TV_FIRST + 23 } +enum : uint { TVM_GETISEARCHSTRINGW = TV_FIRST + 64 } + +// #ifdef UNICODE +// #... +// #else +alias TVM_GETISEARCHSTRINGA TVM_GETISEARCHSTRING; +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { TVM_SETTOOLTIPS = TV_FIRST + 24 } +// #define TreeView_SetToolTips(hwnd, hwndTT) (HWND)SNDMSG((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0) +enum : uint { TVM_GETTOOLTIPS = TV_FIRST + 25 } +// #define TreeView_GetToolTips(hwnd) (HWND)SNDMSG((hwnd), TVM_GETTOOLTIPS, 0, 0) +// #endif + +// #define TreeView_GetISearchString(hwndTV, lpsz) (BOOL)SNDMSG((hwndTV), TVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)(lpsz)) + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVM_SETINSERTMARK = TV_FIRST + 26 } +// #define TreeView_SetInsertMark(hwnd, hItem, fAfter) (BOOL)SNDMSG((hwnd), TVM_SETINSERTMARK, (WPARAM) (fAfter), (LPARAM) (hItem)) + +alias CCM_SETUNICODEFORMAT TVM_SETUNICODEFORMAT; +// #define TreeView_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), TVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT TVM_GETUNICODEFORMAT; +// #define TreeView_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), TVM_GETUNICODEFORMAT, 0, 0) + +// #endif + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVM_SETITEMHEIGHT = TV_FIRST + 27 } +// #define TreeView_SetItemHeight(hwnd, iHeight) (int)SNDMSG((hwnd), TVM_SETITEMHEIGHT, (WPARAM)(iHeight), 0) +enum : uint { TVM_GETITEMHEIGHT = TV_FIRST + 28 } +// #define TreeView_GetItemHeight(hwnd) (int)SNDMSG((hwnd), TVM_GETITEMHEIGHT, 0, 0) + +enum : uint { TVM_SETBKCOLOR = TV_FIRST + 29 } +// #define TreeView_SetBkColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)(clr)) + +enum : uint { TVM_SETTEXTCOLOR = TV_FIRST + 30 } +// #define TreeView_SetTextColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)(clr)) + +enum : uint { TVM_GETBKCOLOR = TV_FIRST + 31 } +// #define TreeView_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd), TVM_GETBKCOLOR, 0, 0) + +enum : uint { TVM_GETTEXTCOLOR = TV_FIRST + 32 } +// #define TreeView_GetTextColor(hwnd) (COLORREF)SNDMSG((hwnd), TVM_GETTEXTCOLOR, 0, 0) + +enum : uint { TVM_SETSCROLLTIME = TV_FIRST + 33 } +// #define TreeView_SetScrollTime(hwnd, uTime) (UINT)SNDMSG((hwnd), TVM_SETSCROLLTIME, uTime, 0) + +enum : uint { TVM_GETSCROLLTIME = TV_FIRST + 34 } +// #define TreeView_GetScrollTime(hwnd) (UINT)SNDMSG((hwnd), TVM_GETSCROLLTIME, 0, 0) + +enum : uint { TVM_SETINSERTMARKCOLOR = TV_FIRST + 37 } +// #define TreeView_SetInsertMarkColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)(clr)) +enum : uint { TVM_GETINSERTMARKCOLOR = TV_FIRST + 38 } +// #define TreeView_GetInsertMarkColor(hwnd) (COLORREF)SNDMSG((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0) + +// #endif /* (_WIN32_IE >= 0x0400) */ + +// #if (_WIN32_IE >= 0x0500) + +// #define TreeView_SetItemState(hwndTV, hti, data, _mask) { TVITEM _ms_TVi; _ms_TVi.mask = TVIF_STATE; _ms_TVi.hItem = hti; _ms_TVi.stateMask = _mask; _ms_TVi.state = data; SNDMSG((hwndTV), TVM_SETITEM, 0, (LPARAM)(TV_ITEM *)&_ms_TVi); } + +// #define TreeView_SetCheckState(hwndTV, hti, fCheck) TreeView_SetItemState(hwndTV, hti, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), TVIS_STATEIMAGEMASK) + +enum : uint { TVM_GETITEMSTATE = TV_FIRST + 39 } +// #define TreeView_GetItemState(hwndTV, hti, mask) (UINT)SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask)) + +// #define TreeView_GetCheckState(hwndTV, hti) ((((UINT)(SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), TVIS_STATEIMAGEMASK))) >> 12) -1) + +enum : uint { TVM_SETLINECOLOR = TV_FIRST + 40 } +// #define TreeView_SetLineColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr)) + +enum : uint { TVM_GETLINECOLOR = TV_FIRST + 41 } +// #define TreeView_GetLineColor(hwnd) (COLORREF)SNDMSG((hwnd), TVM_GETLINECOLOR, 0, 0) + +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42 } +// #define TreeView_MapAccIDToHTREEITEM(hwnd, id) (HTREEITEM)SNDMSG((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0) + +enum : uint { TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43 } +// #define TreeView_MapHTREEITEMToAccID(hwnd, htreeitem) (UINT)SNDMSG((hwnd), TVM_MAPHTREEITEMTOACCID, (WPARAM)htreeitem, 0) + +// #endif + +extern(Windows) alias int function(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) PFNTVCOMPARE; + +// #if (_WIN32_IE >= 0x0300) +alias LPTVSORTCB LPTV_SORTCB; +alias TVSORTCB TV_SORTCB; +// #else +// #... +// #... +// #... +// #endif + +struct tagTVSORTCB { + HTREEITEM hParent; + PFNTVCOMPARE lpfnCompare; + LPARAM lParam; +} +alias tagTVSORTCB TVSORTCB; +alias tagTVSORTCB* LPTVSORTCB; + +// #if (_WIN32_IE >= 0x0300) +alias LPNMTREEVIEWA LPNM_TREEVIEWA; +alias LPNMTREEVIEWW LPNM_TREEVIEWW; +alias NMTREEVIEWW NM_TREEVIEWW; +alias NMTREEVIEWA NM_TREEVIEWA; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias LPNMTREEVIEW LPNM_TREEVIEW; +alias NMTREEVIEW NM_TREEVIEW; + +struct tagNMTREEVIEWA { + NMHDR hdr; + UINT action; + TVITEMA itemOld; + TVITEMA itemNew; + POINT ptDrag; +} +alias tagNMTREEVIEWA NMTREEVIEWA; +alias tagNMTREEVIEWA* LPNMTREEVIEWA; + +struct tagNMTREEVIEWW { + NMHDR hdr; + UINT action; + TVITEMW itemOld; + TVITEMW itemNew; + POINT ptDrag; +} +alias tagNMTREEVIEWW NMTREEVIEWW; +alias tagNMTREEVIEWW* LPNMTREEVIEWW; + +// #ifdef UNICODE +// #... +// #... +// #else +alias NMTREEVIEWA NMTREEVIEW; +alias LPNMTREEVIEWA LPNMTREEVIEW; +// #endif + +enum : uint { TVN_SELCHANGINGA = TVN_FIRST-1 } +enum : uint { TVN_SELCHANGINGW = TVN_FIRST-50 } +enum : uint { TVN_SELCHANGEDA = TVN_FIRST-2 } +enum : uint { TVN_SELCHANGEDW = TVN_FIRST-51 } + +enum : uint { TVC_UNKNOWN = 0x0000 } +enum : uint { TVC_BYMOUSE = 0x0001 } +enum : uint { TVC_BYKEYBOARD = 0x0002 } + +enum : uint { TVN_GETDISPINFOA = TVN_FIRST-3 } +enum : uint { TVN_GETDISPINFOW = TVN_FIRST-52 } +enum : uint { TVN_SETDISPINFOA = TVN_FIRST-4 } +enum : uint { TVN_SETDISPINFOW = TVN_FIRST-53 } + +enum : uint { TVIF_DI_SETITEM = 0x1000 } + +// #if (_WIN32_IE >= 0x0300) +alias NMTVDISPINFOA TV_DISPINFOA; +alias NMTVDISPINFOW TV_DISPINFOW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias NMTVDISPINFO TV_DISPINFO; + +struct tagTVDISPINFOA { + NMHDR hdr; + TVITEMA item; +} +alias tagTVDISPINFOA NMTVDISPINFOA; +alias tagTVDISPINFOA* LPNMTVDISPINFOA; + +struct tagTVDISPINFOW { + NMHDR hdr; + TVITEMW item; +} +alias tagTVDISPINFOW NMTVDISPINFOW; +alias tagTVDISPINFOW* LPNMTVDISPINFOW; + +// #ifdef UNICODE +// #... +// #... +// #else +alias NMTVDISPINFOA NMTVDISPINFO; +alias LPNMTVDISPINFOA LPNMTVDISPINFO; +// #endif + +enum : uint { TVN_ITEMEXPANDINGA = TVN_FIRST-5 } +enum : uint { TVN_ITEMEXPANDINGW = TVN_FIRST-54 } +enum : uint { TVN_ITEMEXPANDEDA = TVN_FIRST-6 } +enum : uint { TVN_ITEMEXPANDEDW = TVN_FIRST-55 } +enum : uint { TVN_BEGINDRAGA = TVN_FIRST-7 } +enum : uint { TVN_BEGINDRAGW = TVN_FIRST-56 } +enum : uint { TVN_BEGINRDRAGA = TVN_FIRST-8 } +enum : uint { TVN_BEGINRDRAGW = TVN_FIRST-57 } +enum : uint { TVN_DELETEITEMA = TVN_FIRST-9 } +enum : uint { TVN_DELETEITEMW = TVN_FIRST-58 } +enum : uint { TVN_BEGINLABELEDITA = TVN_FIRST-10 } +enum : uint { TVN_BEGINLABELEDITW = TVN_FIRST-59 } +enum : uint { TVN_ENDLABELEDITA = TVN_FIRST-11 } +enum : uint { TVN_ENDLABELEDITW = TVN_FIRST-60 } +enum : uint { TVN_KEYDOWN = TVN_FIRST-12 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVN_GETINFOTIPA = TVN_FIRST-13 } +enum : uint { TVN_GETINFOTIPW = TVN_FIRST-14 } +enum : uint { TVN_SINGLEEXPAND = TVN_FIRST-15 } + +enum : uint { TVNRET_DEFAULT = 0 } +enum : uint { TVNRET_SKIPOLD = 1 } +enum : uint { TVNRET_SKIPNEW = 2 } + +// #endif // 0x400 + +// #if (_WIN32_IE >= 0x0300) +alias NMTVKEYDOWN TV_KEYDOWN; +// #else +// #... +// #... +// #endif + +// #ifdef _WIN32 +align(1): +// #endif + +struct tagTVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} +alias tagTVKEYDOWN NMTVKEYDOWN; +alias tagTVKEYDOWN* LPNMTVKEYDOWN; + +// #ifdef _WIN32 +align: +// #endif + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #else +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; +// #endif + +// #if (_WIN32_IE >= 0x0300) +// #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk) + +struct tagNMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; +// #if (_WIN32_IE >= 0x0400) + int iLevel; +// #endif +} +alias tagNMTVCUSTOMDRAW NMTVCUSTOMDRAW; +alias tagNMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW; + +// #endif + +// #if (_WIN32_IE >= 0x0400) + +struct tagNMTVGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; +} +alias tagNMTVGETINFOTIPA NMTVGETINFOTIPA; +alias tagNMTVGETINFOTIPA* LPNMTVGETINFOTIPA; + +struct tagNMTVGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; +} +alias tagNMTVGETINFOTIPW NMTVGETINFOTIPW; +alias tagNMTVGETINFOTIPW* LPNMTVGETINFOTIPW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias TVN_GETINFOTIPA TVN_GETINFOTIP; +alias NMTVGETINFOTIPA NMTVGETINFOTIP; +alias LPNMTVGETINFOTIPA LPNMTVGETINFOTIP; +// #endif + +enum : uint { TVCDRF_NOIMAGES = 0x00010000 } + +// #endif // _WIN32_IE >= 0x0400 + +// #endif // NOTREEVIEW + +// #if (_WIN32_IE >= 0x0300) + +// #ifndef NOUSEREXCONTROLS + +const wchar[] WC_COMBOBOXEXW = "ComboBoxEx32"; +const char[] WC_COMBOBOXEXA = "ComboBoxEx32"; + +// #ifdef UNICODE +// #... +// #else +alias WC_COMBOBOXEXA WC_COMBOBOXEX; +// #endif + +enum : uint { CBEIF_TEXT = 0x00000001 } +enum : uint { CBEIF_IMAGE = 0x00000002 } +enum : uint { CBEIF_SELECTEDIMAGE = 0x00000004 } +enum : uint { CBEIF_OVERLAY = 0x00000008 } +enum : uint { CBEIF_INDENT = 0x00000010 } +enum : uint { CBEIF_LPARAM = 0x00000020 } + +enum : uint { CBEIF_DI_SETITEM = 0x10000000 } + +struct tagCOMBOBOXEXITEMA { + UINT mask; + INT_PTR iItem; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias tagCOMBOBOXEXITEMA COMBOBOXEXITEMA; +alias tagCOMBOBOXEXITEMA* PCOMBOBOXEXITEMA; + +alias COMBOBOXEXITEMA* PCCOMBOEXITEMA; + +struct tagCOMBOBOXEXITEMW { + UINT mask; + INT_PTR iItem; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias tagCOMBOBOXEXITEMW COMBOBOXEXITEMW; +alias tagCOMBOBOXEXITEMW* PCOMBOBOXEXITEMW; + +alias COMBOBOXEXITEMW* PCCOMBOEXITEMW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias COMBOBOXEXITEMA COMBOBOXEXITEM; +alias PCOMBOBOXEXITEMA PCOMBOBOXEXITEM; +alias PCCOMBOBOXEXITEMA PCCOMBOBOXEXITEM; +// #endif + +enum : uint { CBEM_INSERTITEMA = WM_USER + 1 } +enum : uint { CBEM_SETIMAGELIST = WM_USER + 2 } +enum : uint { CBEM_GETIMAGELIST = WM_USER + 3 } +enum : uint { CBEM_GETITEMA = WM_USER + 4 } +enum : uint { CBEM_SETITEMA = WM_USER + 5 } +alias CB_DELETESTRING CBEM_DELETEITEM; +enum : uint { CBEM_GETCOMBOCONTROL = WM_USER + 6 } +enum : uint { CBEM_GETEDITCONTROL = WM_USER + 7 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { CBEM_SETEXSTYLE = WM_USER + 8 } +enum : uint { CBEM_SETEXTENDEDSTYLE = WM_USER + 14 } +enum : uint { CBEM_GETEXSTYLE = WM_USER + 9 } +enum : uint { CBEM_GETEXTENDEDSTYLE = WM_USER + 9 } +alias CCM_SETUNICODEFORMAT CBEM_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT CBEM_GETUNICODEFORMAT; +// #else +// #... +// #... +// #endif +enum : uint { CBEM_HASEDITCHANGED = WM_USER + 10 } +enum : uint { CBEM_INSERTITEMW = WM_USER + 11 } +enum : uint { CBEM_SETITEMW = WM_USER + 12 } +enum : uint { CBEM_GETITEMW = WM_USER + 13 } + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias CBEM_INSERTITEMA CBEM_INSERTITEM; +alias CBEM_SETITEMA CBEM_SETITEM; +alias CBEM_GETITEMA CBEM_GETITEM; +// #endif + +// #if (_WIN32_WINNT >= 0x501) +alias CCM_SETWINDOWTHEME CBEM_SETWINDOWTHEME; +// #endif + +enum : uint { CBES_EX_NOEDITIMAGE = 0x00000001 } +enum : uint { CBES_EX_NOEDITIMAGEINDENT = 0x00000002 } +enum : uint { CBES_EX_PATHWORDBREAKPROC = 0x00000004 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { CBES_EX_NOSIZELIMIT = 0x00000008 } +enum : uint { CBES_EX_CASESENSITIVE = 0x00000010 } + +struct _9 { + NMHDR hdr; + COMBOBOXEXITEMA ceItem; +} +alias _9 NMCOMBOBOXEXA; +alias _9* PNMCOMBOBOXEXA; + +struct _10 { + NMHDR hdr; + COMBOBOXEXITEMW ceItem; +} +alias _10 NMCOMBOBOXEXW; +alias _10* PNMCOMBOBOXEXW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias NMCOMBOBOXEXA NMCOMBOBOXEX; +alias PNMCOMBOBOXEXA PNMCOMBOBOXEX; +alias CBEN_GETDISPINFOA CBEN_GETDISPINFO; +// #endif + +// #else +// ... + +// #... + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_IE >= 0x0400) +// #define CBEN_GETDISPINFOA (CBEN_FIRST - 0) +// #endif +enum : uint { CBEN_INSERTITEM = CBEN_FIRST - 1 } +enum : uint { CBEN_DELETEITEM = CBEN_FIRST - 2 } +enum : uint { CBEN_BEGINEDIT = CBEN_FIRST - 4 } +enum : uint { CBEN_ENDEDITA = CBEN_FIRST - 5 } +enum : uint { CBEN_ENDEDITW = CBEN_FIRST - 6 } + +// #if (_WIN32_IE >= 0x0400) +// #define CBEN_GETDISPINFOW (CBEN_FIRST - 7) +// #endif + +// #if (_WIN32_IE >= 0x0400) +enum : uint { CBEN_DRAGBEGINA = CBEN_FIRST - 8 } +enum : uint { CBEN_DRAGBEGINW = CBEN_FIRST - 9 } + +// #ifdef UNICODE +// #... +// #else +alias CBEN_DRAGBEGINA CBEN_DRAGBEGIN; +// #endif + +// #endif //(_WIN32_IE >= 0x0400) + +// #ifdef UNICODE +// #... +// #else +alias CBEN_ENDEDITA CBEN_ENDEDIT; +// #endif + +enum : uint { CBENF_KILLFOCUS = 1 } +enum : uint { CBENF_RETURN = 2 } +enum : uint { CBENF_ESCAPE = 3 } +enum : uint { CBENF_DROPDOWN = 4 } + +enum : uint { CBEMAXSTRLEN = 260 } + +// #if (_WIN32_IE >= 0x0400) + +struct _11 { + NMHDR hdr; + int iItemid; + WCHAR szText[CBEMAXSTRLEN]; +} +alias _11 NMCBEDRAGBEGINW; +alias _11* LPNMCBEDRAGBEGINW; +alias _11* PNMCBEDRAGBEGINW; + +struct _12 { + NMHDR hdr; + int iItemid; + char szText[CBEMAXSTRLEN]; +} +alias _12 NMCBEDRAGBEGINA; +alias _12* LPNMCBEDRAGBEGINA; +alias _12* PNMCBEDRAGBEGINA; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias NMCBEDRAGBEGINA NMCBEDRAGBEGIN; +alias LPNMCBEDRAGBEGINA LPNMCBEDRAGBEGIN; +alias PNMCBEDRAGBEGINA PNMCBEDRAGBEGIN; +// #endif +// #endif // _WIN32_IE >= 0x0400 + +struct _13 { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR szText[CBEMAXSTRLEN]; + int iWhy; +} +alias _13 NMCBEENDEDITW; +alias _13* LPNMCBEENDEDITW; +alias _13* PNMCBEENDEDITW; + +struct _14 { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char szText[CBEMAXSTRLEN]; + int iWhy; +} +alias _14 NMCBEENDEDITA; +alias _14* LPNMCBEENDEDITA; +alias _14* PNMCBEENDEDITA; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias NMCBEENDEDITA NMCBEENDEDIT; +alias LPNMCBEENDEDITA LPNMCBEENDEDIT; +alias PNMCBEENDEDITA PNMCBEENDEDIT; +// #endif + +// #endif + +// #endif // _WIN32_IE >= 0x0300 + +// #ifndef NOTABCONTROL + +// #ifdef _WIN32 + +const char[] WC_TABCONTROLA = "SysTabControl32"; +const wchar[] WC_TABCONTROLW = "SysTabControl32"; + +// #ifdef UNICODE +// #... +// #else +alias WC_TABCONTROLA WC_TABCONTROL; +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { TCS_SCROLLOPPOSITE = 0x0001 } +enum : uint { TCS_BOTTOM = 0x0002 } +enum : uint { TCS_RIGHT = 0x0002 } +enum : uint { TCS_MULTISELECT = 0x0004 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TCS_FLATBUTTONS = 0x0008 } +// #endif +enum : uint { TCS_FORCEICONLEFT = 0x0010 } +enum : uint { TCS_FORCELABELLEFT = 0x0020 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TCS_HOTTRACK = 0x0040 } +enum : uint { TCS_VERTICAL = 0x0080 } +// #endif +enum : uint { TCS_TABS = 0x0000 } +enum : uint { TCS_BUTTONS = 0x0100 } +enum : uint { TCS_SINGLELINE = 0x0000 } +enum : uint { TCS_MULTILINE = 0x0200 } +enum : uint { TCS_RIGHTJUSTIFY = 0x0000 } +enum : uint { TCS_FIXEDWIDTH = 0x0400 } +enum : uint { TCS_RAGGEDRIGHT = 0x0800 } +enum : uint { TCS_FOCUSONBUTTONDOWN = 0x1000 } +enum : uint { TCS_OWNERDRAWFIXED = 0x2000 } +enum : uint { TCS_TOOLTIPS = 0x4000 } +enum : uint { TCS_FOCUSNEVER = 0x8000 } + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { TCS_EX_FLATSEPARATORS = 0x00000001 } +enum : uint { TCS_EX_REGISTERDROP = 0x00000002 } +// #endif + +enum : uint { TCM_GETIMAGELIST = TCM_FIRST + 2 } +// #define TabCtrl_GetImageList(hwnd) (HIMAGELIST)SNDMSG((hwnd), TCM_GETIMAGELIST, 0, 0L) + +enum : uint { TCM_SETIMAGELIST = TCM_FIRST + 3 } +// #define TabCtrl_SetImageList(hwnd, himl) (HIMAGELIST)SNDMSG((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(HIMAGELIST)(himl)) + +enum : uint { TCM_GETITEMCOUNT = TCM_FIRST + 4 } +// #define TabCtrl_GetItemCount(hwnd) (int)SNDMSG((hwnd), TCM_GETITEMCOUNT, 0, 0L) + +enum : uint { TCIF_TEXT = 0x0001 } +enum : uint { TCIF_IMAGE = 0x0002 } +enum : uint { TCIF_RTLREADING = 0x0004 } +enum : uint { TCIF_PARAM = 0x0008 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TCIF_STATE = 0x0010 } + +enum : uint { TCIS_BUTTONPRESSED = 0x0001 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TCIS_HIGHLIGHTED = 0x0002 } +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias TCITEMHEADERA TC_ITEMHEADERA; +alias TCITEMHEADERW TC_ITEMHEADERW; +// #else +// #... +// #... +// #... +// #... +// #endif +alias TCITEMHEADER TC_ITEMHEADER; + +struct tagTCITEMHEADERA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; +} +alias tagTCITEMHEADERA TCITEMHEADERA; +alias tagTCITEMHEADERA* LPTCITEMHEADERA; + +struct tagTCITEMHEADERW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; +} +alias tagTCITEMHEADERW TCITEMHEADERW; +alias tagTCITEMHEADERW* LPTCITEMHEADERW; + +// #ifdef UNICODE +// #... +// #... +// #else +alias TCITEMHEADERA TCITEMHEADER; +alias LPTCITEMHEADERA LPTCITEMHEADER; +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias TCITEMA TC_ITEMA; +alias TCITEMW TC_ITEMW; +// #else +// #... +// #... +// #... +// #... +// #endif +alias TCITEM TC_ITEM; + +struct tagTCITEMA { + UINT mask; +// #if (_WIN32_IE >= 0x0300) + DWORD dwState; + DWORD dwStateMask; +// #else +// ... +// #endif + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias tagTCITEMA TCITEMA; +alias tagTCITEMA* LPTCITEMA; + +struct tagTCITEMW { + UINT mask; +// #if (_WIN32_IE >= 0x0300) + DWORD dwState; + DWORD dwStateMask; +// #else +// ... +// #endif + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias tagTCITEMW TCITEMW; +alias tagTCITEMW* LPTCITEMW; + +// #ifdef UNICODE +// #... +// #... +// #else +alias TCITEMA TCITEM; +alias LPTCITEMA LPTCITEM; +// #endif + +enum : uint { TCM_GETITEMA = TCM_FIRST + 5 } +enum : uint { TCM_GETITEMW = TCM_FIRST + 60 } + +// #ifdef UNICODE +// #... +// #else +alias TCM_GETITEMA TCM_GETITEM; +// #endif + +// #define TabCtrl_GetItem(hwnd, iItem, pitem) (BOOL)SNDMSG((hwnd), TCM_GETITEM, (WPARAM)(int)(iItem), (LPARAM)(TC_ITEM *)(pitem)) + +enum : uint { TCM_SETITEMA = TCM_FIRST + 6 } +enum : uint { TCM_SETITEMW = TCM_FIRST + 61 } + +// #ifdef UNICODE +// #... +// #else +alias TCM_SETITEMA TCM_SETITEM; +// #endif + +// #define TabCtrl_SetItem(hwnd, iItem, pitem) (BOOL)SNDMSG((hwnd), TCM_SETITEM, (WPARAM)(int)(iItem), (LPARAM)(TC_ITEM *)(pitem)) + +enum : uint { TCM_INSERTITEMA = TCM_FIRST + 7 } +enum : uint { TCM_INSERTITEMW = TCM_FIRST + 62 } + +// #ifdef UNICODE +// #... +// #else +alias TCM_INSERTITEMA TCM_INSERTITEM; +// #endif + +// #define TabCtrl_InsertItem(hwnd, iItem, pitem) (int)SNDMSG((hwnd), TCM_INSERTITEM, (WPARAM)(int)(iItem), (LPARAM)(const TC_ITEM *)(pitem)) + +enum : uint { TCM_DELETEITEM = TCM_FIRST + 8 } +// #define TabCtrl_DeleteItem(hwnd, i) (BOOL)SNDMSG((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L) + +enum : uint { TCM_DELETEALLITEMS = TCM_FIRST + 9 } +// #define TabCtrl_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd), TCM_DELETEALLITEMS, 0, 0L) + +enum : uint { TCM_GETITEMRECT = TCM_FIRST + 10 } +// #define TabCtrl_GetItemRect(hwnd, i, prc) (BOOL)SNDMSG((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT *)(prc)) + +enum : uint { TCM_GETCURSEL = TCM_FIRST + 11 } +// #define TabCtrl_GetCurSel(hwnd) (int)SNDMSG((hwnd), TCM_GETCURSEL, 0, 0) + +enum : uint { TCM_SETCURSEL = TCM_FIRST + 12 } +// #define TabCtrl_SetCurSel(hwnd, i) (int)SNDMSG((hwnd), TCM_SETCURSEL, (WPARAM)(i), 0) + +enum : uint { TCHT_NOWHERE = 0x0001 } +enum : uint { TCHT_ONITEMICON = 0x0002 } +enum : uint { TCHT_ONITEMLABEL = 0x0004 } +enum : uint { TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL } + +// #if (_WIN32_IE >= 0x0300) +alias LPTCHITTESTINFO LPTC_HITTESTINFO; +alias TCHITTESTINFO TC_HITTESTINFO; +// #else +// #... +// #... +// #... +// #endif + +struct tagTCHITTESTINFO { + POINT pt; + UINT flags; +} +alias tagTCHITTESTINFO TCHITTESTINFO; +alias tagTCHITTESTINFO* LPTCHITTESTINFO; + +enum : uint { TCM_HITTEST = TCM_FIRST + 13 } +// #define TabCtrl_HitTest(hwndTC, pinfo) (int)SNDMSG((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO *)(pinfo)) + +enum : uint { TCM_SETITEMEXTRA = TCM_FIRST + 14 } +// #define TabCtrl_SetItemExtra(hwndTC, cb) (BOOL)SNDMSG((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L) + +enum : uint { TCM_ADJUSTRECT = TCM_FIRST + 40 } +// #define TabCtrl_AdjustRect(hwnd, bLarger, prc) (int)SNDMSG(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)(bLarger), (LPARAM)(RECT *)prc) + +enum : uint { TCM_SETITEMSIZE = TCM_FIRST + 41 } +// #define TabCtrl_SetItemSize(hwnd, x, y) (DWORD)SNDMSG((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y)) + +enum : uint { TCM_REMOVEIMAGE = TCM_FIRST + 42 } +// #define TabCtrl_RemoveImage(hwnd, i) (void)SNDMSG((hwnd), TCM_REMOVEIMAGE, i, 0L) + +enum : uint { TCM_SETPADDING = TCM_FIRST + 43 } +// #define TabCtrl_SetPadding(hwnd, cx, cy) (void)SNDMSG((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy)) + +enum : uint { TCM_GETROWCOUNT = TCM_FIRST + 44 } +// #define TabCtrl_GetRowCount(hwnd) (int)SNDMSG((hwnd), TCM_GETROWCOUNT, 0, 0L) + +enum : uint { TCM_GETTOOLTIPS = TCM_FIRST + 45 } +// #define TabCtrl_GetToolTips(hwnd) (HWND)SNDMSG((hwnd), TCM_GETTOOLTIPS, 0, 0L) + +enum : uint { TCM_SETTOOLTIPS = TCM_FIRST + 46 } +// #define TabCtrl_SetToolTips(hwnd, hwndTT) (void)SNDMSG((hwnd), TCM_SETTOOLTIPS, (WPARAM)(hwndTT), 0L) + +enum : uint { TCM_GETCURFOCUS = TCM_FIRST + 47 } +// #define TabCtrl_GetCurFocus(hwnd) (int)SNDMSG((hwnd), TCM_GETCURFOCUS, 0, 0) + +enum : uint { TCM_SETCURFOCUS = TCM_FIRST + 48 } +// #define TabCtrl_SetCurFocus(hwnd, i) SNDMSG((hwnd),TCM_SETCURFOCUS, i, 0) + +// #if (_WIN32_IE >= 0x0300) +enum : uint { TCM_SETMINTABWIDTH = TCM_FIRST + 49 } +// #define TabCtrl_SetMinTabWidth(hwnd, x) (int)SNDMSG((hwnd), TCM_SETMINTABWIDTH, 0, x) + +enum : uint { TCM_DESELECTALL = TCM_FIRST + 50 } +// #define TabCtrl_DeselectAll(hwnd, fExcludeFocus) (void)SNDMSG((hwnd), TCM_DESELECTALL, fExcludeFocus, 0) +// #endif + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { TCM_HIGHLIGHTITEM = TCM_FIRST + 51 } +// #define TabCtrl_HighlightItem(hwnd, i, fHighlight) (BOOL)SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)(i), (LPARAM)MAKELONG (fHighlight, 0)) + +enum : uint { TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52 } +// #define TabCtrl_SetExtendedStyle(hwnd, dw) (DWORD)SNDMSG((hwnd), TCM_SETEXTENDEDSTYLE, 0, dw) + +enum : uint { TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53 } +// #define TabCtrl_GetExtendedStyle(hwnd) (DWORD)SNDMSG((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0) + +alias CCM_SETUNICODEFORMAT TCM_SETUNICODEFORMAT; +// #define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT TCM_GETUNICODEFORMAT; +// #define TabCtrl_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), TCM_GETUNICODEFORMAT, 0, 0) + +// #endif // _WIN32_IE >= 0x0400 + +enum : uint { TCN_KEYDOWN = TCN_FIRST - 0 } + +// #if (_WIN32_IE >= 0x0300) +alias NMTCKEYDOWN TC_KEYDOWN; +// #else +// #... +// #... +// #endif + +// #ifdef _WIN32 +align(1): +// #endif + +struct tagTCKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} +alias tagTCKEYDOWN NMTCKEYDOWN; + +// #ifdef _WIN32 +align: +// #endif + +enum : uint { TCN_SELCHANGE = TCN_FIRST - 1 } +enum : uint { TCN_SELCHANGING = TCN_FIRST - 2 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TCN_GETOBJECT = TCN_FIRST - 3 } +// #endif // _WIN32_IE >= 0x0400 +// #if (_WIN32_IE >= 0x0500) +enum : uint { TCN_FOCUSCHANGE = TCN_FIRST - 4 } +// #endif // _WIN32_IE >= 0x0500 +// #endif // NOTABCONTROL + +// #ifndef NOANIMATE + +// #ifdef _WIN32 + +const wchar[] ANIMATE_CLASSW = "SysAnimate32"; +const char[] ANIMATE_CLASSA = "SysAnimate32"; + +// #ifdef UNICODE +// #... +// #else +alias ANIMATE_CLASSA ANIMATE_CLASS; +// #endif + +enum : uint { ACS_CENTER = 0x0001 } +enum : uint { ACS_TRANSPARENT = 0x0002 } +enum : uint { ACS_AUTOPLAY = 0x0004 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { ACS_TIMER = 0x0008 } +// #endif + +enum : uint { ACM_OPENA = WM_USER+100 } +enum : uint { ACM_OPENW = WM_USER+103 } + +// #ifdef UNICODE +// #... +// #else +alias ACM_OPENA ACM_OPEN; +// #endif + +enum : uint { ACM_PLAY = WM_USER+101 } +enum : uint { ACM_STOP = WM_USER+102 } + +enum : uint { ACN_START = 1 } +enum : uint { ACN_STOP = 2 } + +// #define Animate_Create(hwndP, id, dwStyle, hInstance) CreateWindow(ANIMATE_CLASS, NULL, dwStyle, 0, 0, 0, 0, hwndP, (HMENU)(id), hInstance, NULL) + +// #define Animate_Open(hwnd, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, 0, (LPARAM)(LPTSTR)(szName)) +// #define Animate_OpenEx(hwnd, hInst, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, (WPARAM)(hInst), (LPARAM)(LPTSTR)(szName)) +// #define Animate_Play(hwnd, from, to, rep) (BOOL)SNDMSG(hwnd, ACM_PLAY, (WPARAM)(rep), (LPARAM)MAKELONG(from, to)) +// #define Animate_Stop(hwnd) (BOOL)SNDMSG(hwnd, ACM_STOP, 0, 0) +// #define Animate_Close(hwnd) Animate_Open(hwnd, NULL) +// #define Animate_Seek(hwnd, frame) Animate_Play(hwnd, frame, frame, 1) +// #endif + +// #endif // NOANIMATE + +// #if (_WIN32_IE >= 0x0300) + +// #ifndef NOMONTHCAL +// #ifdef _WIN32 + +const wchar[] MONTHCAL_CLASSW = "SysMonthCal32"; +const char[] MONTHCAL_CLASSA = "SysMonthCal32"; + +// #ifdef UNICODE +// #... +// #else +alias MONTHCAL_CLASSA MONTHCAL_CLASS; +// #endif + +alias DWORD MONTHDAYSTATE; +alias DWORD* LPMONTHDAYSTATE; + +enum : uint { MCM_FIRST = 0x1000 } + +enum : uint { MCM_GETCURSEL = MCM_FIRST + 1 } +// #define MonthCal_GetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst)) + +enum : uint { MCM_SETCURSEL = MCM_FIRST + 2 } +// #define MonthCal_SetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst)) + +enum : uint { MCM_GETMAXSELCOUNT = MCM_FIRST + 3 } +// #define MonthCal_GetMaxSelCount(hmc) (DWORD)SNDMSG(hmc, MCM_GETMAXSELCOUNT, 0, 0L) + +enum : uint { MCM_SETMAXSELCOUNT = MCM_FIRST + 4 } +// #define MonthCal_SetMaxSelCount(hmc, n) (BOOL)SNDMSG(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L) + +enum : uint { MCM_GETSELRANGE = MCM_FIRST + 5 } +// #define MonthCal_GetSelRange(hmc, rgst) SNDMSG(hmc, MCM_GETSELRANGE, 0, (LPARAM)(rgst)) + +enum : uint { MCM_SETSELRANGE = MCM_FIRST + 6 } +// #define MonthCal_SetSelRange(hmc, rgst) SNDMSG(hmc, MCM_SETSELRANGE, 0, (LPARAM)(rgst)) + +enum : uint { MCM_GETMONTHRANGE = MCM_FIRST + 7 } +// #define MonthCal_GetMonthRange(hmc, gmr, rgst) (DWORD)SNDMSG(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst)) + +enum : uint { MCM_SETDAYSTATE = MCM_FIRST + 8 } +// #define MonthCal_SetDayState(hmc, cbds, rgds) SNDMSG(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds)) + +enum : uint { MCM_GETMINREQRECT = MCM_FIRST + 9 } +// #define MonthCal_GetMinReqRect(hmc, prc) SNDMSG(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc)) + +enum : uint { MCM_SETCOLOR = MCM_FIRST + 10 } +// #define MonthCal_SetColor(hmc, iColor, clr) SNDMSG(hmc, MCM_SETCOLOR, iColor, clr) + +enum : uint { MCM_GETCOLOR = MCM_FIRST + 11 } +// #define MonthCal_GetColor(hmc, iColor) SNDMSG(hmc, MCM_GETCOLOR, iColor, 0) + +enum : uint { MCSC_BACKGROUND = 0 } +enum : uint { MCSC_TEXT = 1 } +enum : uint { MCSC_TITLEBK = 2 } +enum : uint { MCSC_TITLETEXT = 3 } +enum : uint { MCSC_MONTHBK = 4 } +enum : uint { MCSC_TRAILINGTEXT = 5 } + +enum : uint { MCM_SETTODAY = MCM_FIRST + 12 } +// #define MonthCal_SetToday(hmc, pst) SNDMSG(hmc, MCM_SETTODAY, 0, (LPARAM)(pst)) + +enum : uint { MCM_GETTODAY = MCM_FIRST + 13 } +// #define MonthCal_GetToday(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETTODAY, 0, (LPARAM)(pst)) + +enum : uint { MCM_HITTEST = MCM_FIRST + 14 } +// #define MonthCal_HitTest(hmc, pinfo) SNDMSG(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)(pinfo)) + +struct _15 { + UINT cbSize; + POINT pt; + UINT uHit; + SYSTEMTIME st; +} +alias _15 MCHITTESTINFO; +alias _15* PMCHITTESTINFO; + +enum : uint { MCHT_TITLE = 0x00010000 } +enum : uint { MCHT_CALENDAR = 0x00020000 } +enum : uint { MCHT_TODAYLINK = 0x00030000 } + +enum : uint { MCHT_NEXT = 0x01000000 } +enum : uint { MCHT_PREV = 0x02000000 } + +enum : uint { MCHT_NOWHERE = 0x00000000 } + +enum : uint { MCHT_TITLEBK = MCHT_TITLE } +enum : uint { MCHT_TITLEMONTH = MCHT_TITLE | 0x0001 } +enum : uint { MCHT_TITLEYEAR = MCHT_TITLE | 0x0002 } +enum : uint { MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003 } +enum : uint { MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003 } + +enum : uint { MCHT_CALENDARBK = MCHT_CALENDAR } +enum : uint { MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001 } +enum : uint { MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT } +enum : uint { MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV } +enum : uint { MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002 } +enum : uint { MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 } + +enum : uint { MCM_SETFIRSTDAYOFWEEK = MCM_FIRST + 15 } +// #define MonthCal_SetFirstDayOfWeek(hmc, iDay) SNDMSG(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay) + +enum : uint { MCM_GETFIRSTDAYOFWEEK = MCM_FIRST + 16 } +// #define MonthCal_GetFirstDayOfWeek(hmc) (DWORD)SNDMSG(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0) + +enum : uint { MCM_GETRANGE = MCM_FIRST + 17 } +// #define MonthCal_GetRange(hmc, rgst) (DWORD)SNDMSG(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst)) + +enum : uint { MCM_SETRANGE = MCM_FIRST + 18 } +// #define MonthCal_SetRange(hmc, gd, rgst) (BOOL)SNDMSG(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst)) + +enum : uint { MCM_GETMONTHDELTA = MCM_FIRST + 19 } +// #define MonthCal_GetMonthDelta(hmc) (int)SNDMSG(hmc, MCM_GETMONTHDELTA, 0, 0) + +enum : uint { MCM_SETMONTHDELTA = MCM_FIRST + 20 } +// #define MonthCal_SetMonthDelta(hmc, n) (int)SNDMSG(hmc, MCM_SETMONTHDELTA, n, 0) + +enum : uint { MCM_GETMAXTODAYWIDTH = MCM_FIRST + 21 } +// #define MonthCal_GetMaxTodayWidth(hmc) (DWORD)SNDMSG(hmc, MCM_GETMAXTODAYWIDTH, 0, 0) + +// #if (_WIN32_IE >= 0x0400) +alias CCM_SETUNICODEFORMAT MCM_SETUNICODEFORMAT; +// #define MonthCal_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), MCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT MCM_GETUNICODEFORMAT; +// #define MonthCal_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), MCM_GETUNICODEFORMAT, 0, 0) +// #endif + +struct tagNMSELCHANGE { + NMHDR nmhdr; + + SYSTEMTIME stSelStart; + SYSTEMTIME stSelEnd; +} +alias tagNMSELCHANGE NMSELCHANGE; +alias tagNMSELCHANGE* LPNMSELCHANGE; + +enum : uint { MCN_SELCHANGE = MCN_FIRST + 1 } + +struct tagNMDAYSTATE { + NMHDR nmhdr; + + SYSTEMTIME stStart; + int cDayState; + LPMONTHDAYSTATE prgDayState; +} +alias tagNMDAYSTATE NMDAYSTATE; +alias tagNMDAYSTATE* LPNMDAYSTATE; + +enum : uint { MCN_GETDAYSTATE = MCN_FIRST + 3 } + +alias NMSELCHANGE NMSELECT; +alias NMSELCHANGE* LPNMSELECT; + +enum : uint { MCN_SELECT = MCN_FIRST + 4 } + +enum : uint { MCS_DAYSTATE = 0x0001 } +enum : uint { MCS_MULTISELECT = 0x0002 } +enum : uint { MCS_WEEKNUMBERS = 0x0004 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { MCS_NOTODAYCIRCLE = 0x0008 } +enum : uint { MCS_NOTODAY = 0x0010 } +// #else +// #... +// #endif + +enum : uint { GMR_VISIBLE = 0 } +enum : uint { GMR_DAYSTATE = 1 } + +// #endif // _WIN32 +// #endif // NOMONTHCAL + +// #ifndef NODATETIMEPICK +// #ifdef _WIN32 + +const wchar[] DATETIMEPICK_CLASSW = "SysDateTimePick32"; +const char[] DATETIMEPICK_CLASSA = "SysDateTimePick32"; + +// #ifdef UNICODE +// #... +// #else +alias DATETIMEPICK_CLASSA DATETIMEPICK_CLASS; +// #endif + +enum : uint { DTM_FIRST = 0x1000 } + +enum : uint { DTM_GETSYSTEMTIME = DTM_FIRST + 1 } +// #define DateTime_GetSystemtime(hdp, pst) (DWORD)SNDMSG(hdp, DTM_GETSYSTEMTIME, 0, (LPARAM)(pst)) + +enum : uint { DTM_SETSYSTEMTIME = DTM_FIRST + 2 } +// #define DateTime_SetSystemtime(hdp, gd, pst) (BOOL)SNDMSG(hdp, DTM_SETSYSTEMTIME, (WPARAM)(gd), (LPARAM)(pst)) + +enum : uint { DTM_GETRANGE = DTM_FIRST + 3 } +// #define DateTime_GetRange(hdp, rgst) (DWORD)SNDMSG(hdp, DTM_GETRANGE, 0, (LPARAM)(rgst)) + +enum : uint { DTM_SETRANGE = DTM_FIRST + 4 } +// #define DateTime_SetRange(hdp, gd, rgst) (BOOL)SNDMSG(hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst)) + +enum : uint { DTM_SETFORMATA = DTM_FIRST + 5 } +enum : uint { DTM_SETFORMATW = DTM_FIRST + 50 } + +// #ifdef UNICODE +// #... +// #else +alias DTM_SETFORMATA DTM_SETFORMAT; +// #endif + +// #define DateTime_SetFormat(hdp, sz) (BOOL)SNDMSG(hdp, DTM_SETFORMAT, 0, (LPARAM)(sz)) + +enum : uint { DTM_SETMCCOLOR = DTM_FIRST + 6 } +// #define DateTime_SetMonthCalColor(hdp, iColor, clr) SNDMSG(hdp, DTM_SETMCCOLOR, iColor, clr) + +enum : uint { DTM_GETMCCOLOR = DTM_FIRST + 7 } +// #define DateTime_GetMonthCalColor(hdp, iColor) SNDMSG(hdp, DTM_GETMCCOLOR, iColor, 0) + +enum : uint { DTM_GETMONTHCAL = DTM_FIRST + 8 } +// #define DateTime_GetMonthCal(hdp) (HWND)SNDMSG(hdp, DTM_GETMONTHCAL, 0, 0) + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { DTM_SETMCFONT = DTM_FIRST + 9 } +// #define DateTime_SetMonthCalFont(hdp, hfont, fRedraw) SNDMSG(hdp, DTM_SETMCFONT, (WPARAM)(hfont), (LPARAM)(fRedraw)) + +enum : uint { DTM_GETMCFONT = DTM_FIRST + 10 } +// #define DateTime_GetMonthCalFont(hdp) SNDMSG(hdp, DTM_GETMCFONT, 0, 0) + +// #endif // _WIN32_IE >= 0x0400 + +enum : uint { DTS_UPDOWN = 0x0001 } +enum : uint { DTS_SHOWNONE = 0x0002 } +enum : uint { DTS_SHORTDATEFORMAT = 0x0000 } +enum : uint { DTS_LONGDATEFORMAT = 0x0004 } +// #if (_WIN32_IE >= 0x500) +enum : uint { DTS_SHORTDATECENTURYFORMAT = 0x000C } +// #endif // (_WIN32_IE >= 0x500) +enum : uint { DTS_TIMEFORMAT = 0x0009 } +enum : uint { DTS_APPCANPARSE = 0x0010 } +enum : uint { DTS_RIGHTALIGN = 0x0020 } + +enum : uint { DTN_DATETIMECHANGE = DTN_FIRST + 1 } +struct tagNMDATETIMECHANGE { + NMHDR nmhdr; + DWORD dwFlags; + SYSTEMTIME st; +} +alias tagNMDATETIMECHANGE NMDATETIMECHANGE; +alias tagNMDATETIMECHANGE* LPNMDATETIMECHANGE; + +enum : uint { DTN_USERSTRINGA = DTN_FIRST + 2 } +enum : uint { DTN_USERSTRINGW = DTN_FIRST + 15 } +struct tagNMDATETIMESTRINGA { + NMHDR nmhdr; + LPCSTR pszUserString; + SYSTEMTIME st; + DWORD dwFlags; +} +alias tagNMDATETIMESTRINGA NMDATETIMESTRINGA; +alias tagNMDATETIMESTRINGA* LPNMDATETIMESTRINGA; + +struct tagNMDATETIMESTRINGW { + NMHDR nmhdr; + LPCWSTR pszUserString; + SYSTEMTIME st; + DWORD dwFlags; +} +alias tagNMDATETIMESTRINGW NMDATETIMESTRINGW; +alias tagNMDATETIMESTRINGW* LPNMDATETIMESTRINGW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias DTN_USERSTRINGA DTN_USERSTRING; +alias NMDATETIMESTRINGA NMDATETIMESTRING; +alias LPNMDATETIMESTRINGA LPNMDATETIMESTRING; +// #endif + +enum : uint { DTN_WMKEYDOWNA = DTN_FIRST + 3 } +enum : uint { DTN_WMKEYDOWNW = DTN_FIRST + 16 } +struct tagNMDATETIMEWMKEYDOWNA { + NMHDR nmhdr; + int nVirtKey; + LPCSTR pszFormat; + SYSTEMTIME st; +} +alias tagNMDATETIMEWMKEYDOWNA NMDATETIMEWMKEYDOWNA; +alias tagNMDATETIMEWMKEYDOWNA* LPNMDATETIMEWMKEYDOWNA; + +struct tagNMDATETIMEWMKEYDOWNW { + NMHDR nmhdr; + int nVirtKey; + LPCWSTR pszFormat; + SYSTEMTIME st; +} +alias tagNMDATETIMEWMKEYDOWNW NMDATETIMEWMKEYDOWNW; +alias tagNMDATETIMEWMKEYDOWNW* LPNMDATETIMEWMKEYDOWNW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias DTN_WMKEYDOWNA DTN_WMKEYDOWN; +alias NMDATETIMEWMKEYDOWNA NMDATETIMEWMKEYDOWN; +alias LPNMDATETIMEWMKEYDOWNA LPNMDATETIMEWMKEYDOWN; +// #endif + +enum : uint { DTN_FORMATA = DTN_FIRST + 4 } +enum : uint { DTN_FORMATW = DTN_FIRST + 17 } +struct tagNMDATETIMEFORMATA { + NMHDR nmhdr; + LPCSTR pszFormat; + SYSTEMTIME st; + LPCSTR pszDisplay; + CHAR szDisplay[64]; +} +alias tagNMDATETIMEFORMATA NMDATETIMEFORMATA; +alias tagNMDATETIMEFORMATA* LPNMDATETIMEFORMATA; + +struct tagNMDATETIMEFORMATW { + NMHDR nmhdr; + LPCWSTR pszFormat; + SYSTEMTIME st; + LPCWSTR pszDisplay; + WCHAR szDisplay[64]; +} +alias tagNMDATETIMEFORMATW NMDATETIMEFORMATW; +alias tagNMDATETIMEFORMATW* LPNMDATETIMEFORMATW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias DTN_FORMATA DTN_FORMAT; +alias NMDATETIMEFORMATA NMDATETIMEFORMAT; +alias LPNMDATETIMEFORMATA LPNMDATETIMEFORMAT; +// #endif + +enum : uint { DTN_FORMATQUERYA = DTN_FIRST + 5 } +enum : uint { DTN_FORMATQUERYW = DTN_FIRST + 18 } +struct tagNMDATETIMEFORMATQUERYA { + NMHDR nmhdr; + LPCSTR pszFormat; + SIZE szMax; +} +alias tagNMDATETIMEFORMATQUERYA NMDATETIMEFORMATQUERYA; +alias tagNMDATETIMEFORMATQUERYA* LPNMDATETIMEFORMATQUERYA; + +struct tagNMDATETIMEFORMATQUERYW { + NMHDR nmhdr; + LPCWSTR pszFormat; + SIZE szMax; +} +alias tagNMDATETIMEFORMATQUERYW NMDATETIMEFORMATQUERYW; +alias tagNMDATETIMEFORMATQUERYW* LPNMDATETIMEFORMATQUERYW; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias DTN_FORMATQUERYA DTN_FORMATQUERY; +alias NMDATETIMEFORMATQUERYA NMDATETIMEFORMATQUERY; +alias LPNMDATETIMEFORMATQUERYA LPNMDATETIMEFORMATQUERY; +// #endif + +enum : uint { DTN_DROPDOWN = DTN_FIRST + 6 } +enum : uint { DTN_CLOSEUP = DTN_FIRST + 7 } + +enum : uint { GDTR_MIN = 0x0001 } +enum : uint { GDTR_MAX = 0x0002 } + +enum { GDT_ERROR = -1 } +enum : uint { GDT_VALID = 0 } +enum : uint { GDT_NONE = 1 } + +// #endif // _WIN32 +// #endif // NODATETIMEPICK + +// #if (_WIN32_IE >= 0x0400) + +// #ifndef NOIPADDRESS + +enum : uint { IPM_CLEARADDRESS = WM_USER+100 } +enum : uint { IPM_SETADDRESS = WM_USER+101 } +enum : uint { IPM_GETADDRESS = WM_USER+102 } +enum : uint { IPM_SETRANGE = WM_USER+103 } +enum : uint { IPM_SETFOCUS = WM_USER+104 } +enum : uint { IPM_ISBLANK = WM_USER+105 } + +const wchar[] WC_IPADDRESSW = "SysIPAddress32"; +const char[] WC_IPADDRESSA = "SysIPAddress32"; + +// #ifdef UNICODE +// #... +// #else +alias WC_IPADDRESSA WC_IPADDRESS; +// #endif + +enum : uint { IPN_FIELDCHANGED = IPN_FIRST - 0 } +struct tagNMIPADDRESS { + NMHDR hdr; + int iField; + int iValue; +} +alias tagNMIPADDRESS NMIPADDRESS; +alias tagNMIPADDRESS* LPNMIPADDRESS; + +// #define MAKEIPRANGE(low, high) ((LPARAM)(WORD)(((BYTE)(high) << 8) + (BYTE)(low))) + +// #define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4)))) + +// #define FIRST_IPADDRESS(x) ((x>>24) & 0xff) +// #define SECOND_IPADDRESS(x) ((x>>16) & 0xff) +// #define THIRD_IPADDRESS(x) ((x>>8) & 0xff) +// #define FOURTH_IPADDRESS(x) (x & 0xff) + +// #endif // NOIPADDRESS + +// #ifndef NOPAGESCROLLER + +const wchar[] WC_PAGESCROLLERW = "SysPager"; +const char[] WC_PAGESCROLLERA = "SysPager"; + +// #ifdef UNICODE +// #... +// #else +alias WC_PAGESCROLLERA WC_PAGESCROLLER; +// #endif + +enum : uint { PGS_VERT = 0x00000000 } +enum : uint { PGS_HORZ = 0x00000001 } +enum : uint { PGS_AUTOSCROLL = 0x00000002 } +enum : uint { PGS_DRAGNDROP = 0x00000004 } + +enum : uint { PGF_INVISIBLE = 0 } +enum : uint { PGF_NORMAL = 1 } +enum : uint { PGF_GRAYED = 2 } +enum : uint { PGF_DEPRESSED = 4 } +enum : uint { PGF_HOT = 8 } + +enum : uint { PGB_TOPORLEFT = 0 } +enum : uint { PGB_BOTTOMORRIGHT = 1 } + +enum : uint { PGM_SETCHILD = PGM_FIRST + 1 } +// #define Pager_SetChild(hwnd, hwndChild) (void)SNDMSG((hwnd), PGM_SETCHILD, 0, (LPARAM)(hwndChild)) + +enum : uint { PGM_RECALCSIZE = PGM_FIRST + 2 } +// #define Pager_RecalcSize(hwnd) (void)SNDMSG((hwnd), PGM_RECALCSIZE, 0, 0) + +enum : uint { PGM_FORWARDMOUSE = PGM_FIRST + 3 } +// #define Pager_ForwardMouse(hwnd, bForward) (void)SNDMSG((hwnd), PGM_FORWARDMOUSE, (WPARAM)(bForward), 0) + +enum : uint { PGM_SETBKCOLOR = PGM_FIRST + 4 } +// #define Pager_SetBkColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), PGM_SETBKCOLOR, 0, (LPARAM)(clr)) + +enum : uint { PGM_GETBKCOLOR = PGM_FIRST + 5 } +// #define Pager_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd), PGM_GETBKCOLOR, 0, 0) + +enum : uint { PGM_SETBORDER = PGM_FIRST + 6 } +// #define Pager_SetBorder(hwnd, iBorder) (int)SNDMSG((hwnd), PGM_SETBORDER, 0, (LPARAM)(iBorder)) + +enum : uint { PGM_GETBORDER = PGM_FIRST + 7 } +// #define Pager_GetBorder(hwnd) (int)SNDMSG((hwnd), PGM_GETBORDER, 0, 0) + +enum : uint { PGM_SETPOS = PGM_FIRST + 8 } +// #define Pager_SetPos(hwnd, iPos) (int)SNDMSG((hwnd), PGM_SETPOS, 0, (LPARAM)(iPos)) + +enum : uint { PGM_GETPOS = PGM_FIRST + 9 } +// #define Pager_GetPos(hwnd) (int)SNDMSG((hwnd), PGM_GETPOS, 0, 0) + +enum : uint { PGM_SETBUTTONSIZE = PGM_FIRST + 10 } +// #define Pager_SetButtonSize(hwnd, iSize) (int)SNDMSG((hwnd), PGM_SETBUTTONSIZE, 0, (LPARAM)(iSize)) + +enum : uint { PGM_GETBUTTONSIZE = PGM_FIRST + 11 } +// #define Pager_GetButtonSize(hwnd) (int)SNDMSG((hwnd), PGM_GETBUTTONSIZE, 0,0) + +enum : uint { PGM_GETBUTTONSTATE = PGM_FIRST + 12 } +// #define Pager_GetButtonState(hwnd, iButton) (DWORD)SNDMSG((hwnd), PGM_GETBUTTONSTATE, 0, (LPARAM)(iButton)) + +alias CCM_GETDROPTARGET PGM_GETDROPTARGET; +// #define Pager_GetDropTarget(hwnd, ppdt) (void)SNDMSG((hwnd), PGM_GETDROPTARGET, 0, (LPARAM)(ppdt)) + +enum : uint { PGN_SCROLL = PGN_FIRST-1 } + +enum : uint { PGF_SCROLLUP = 1 } +enum : uint { PGF_SCROLLDOWN = 2 } +enum : uint { PGF_SCROLLLEFT = 4 } +enum : uint { PGF_SCROLLRIGHT = 8 } + +enum : uint { PGK_SHIFT = 1 } +enum : uint { PGK_CONTROL = 2 } +enum : uint { PGK_MENU = 4 } + +// #ifdef _WIN32 +align(1): +// #endif + +struct _16 { + NMHDR hdr; + WORD fwKeys; + RECT rcParent; + int iDir; + int iXpos; + int iYpos; + int iScroll; +} +alias _16 NMPGSCROLL; +alias _16* LPNMPGSCROLL; + +// #ifdef _WIN32 +align: +// #endif + +enum : uint { PGN_CALCSIZE = PGN_FIRST-2 } + +enum : uint { PGF_CALCWIDTH = 1 } +enum : uint { PGF_CALCHEIGHT = 2 } + +struct _17 { + NMHDR hdr; + DWORD dwFlag; + int iWidth; + int iHeight; +} +alias _17 NMPGCALCSIZE; +alias _17* LPNMPGCALCSIZE; + +enum : uint { PGN_HOTITEMCHANGE = PGN_FIRST-3 } + +struct tagNMPGHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; +} +alias tagNMPGHOTITEM NMPGHOTITEM; +alias tagNMPGHOTITEM* LPNMPGHOTITEM; + +// #endif // NOPAGESCROLLER + +// #ifndef NONATIVEFONTCTL + +const wchar[] WC_NATIVEFONTCTLW = "NativeFontCtl"; +const char[] WC_NATIVEFONTCTLA = "NativeFontCtl"; + +// #ifdef UNICODE +// #... +// #else +alias WC_NATIVEFONTCTLA WC_NATIVEFONTCTL; +// #endif + +enum : uint { NFS_EDIT = 0x0001 } +enum : uint { NFS_STATIC = 0x0002 } +enum : uint { NFS_LISTCOMBO = 0x0004 } +enum : uint { NFS_BUTTON = 0x0008 } +enum : uint { NFS_ALL = 0x0010 } +enum : uint { NFS_USEFONTASSOC = 0x0020 } + +// #endif // NONATIVEFONTCTL + +// #ifndef NOBUTTON + +// #ifdef _WIN32 + +const char[] WC_BUTTONA = "Button"; +const wchar[] WC_BUTTONW = "Button"; + +// #ifdef UNICODE +// #... +// #else +alias WC_BUTTONA WC_BUTTON; +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { BUTTON_IMAGELIST_ALIGN_LEFT = 0 } +enum : uint { BUTTON_IMAGELIST_ALIGN_RIGHT = 1 } +enum : uint { BUTTON_IMAGELIST_ALIGN_TOP = 2 } +enum : uint { BUTTON_IMAGELIST_ALIGN_BOTTOM = 3 } +enum : uint { BUTTON_IMAGELIST_ALIGN_CENTER = 4 } + +struct _18 { + HIMAGELIST himl; + RECT margin; + UINT uAlign; +} +alias _18 BUTTON_IMAGELIST; +alias _18* PBUTTON_IMAGELIST; + +enum : uint { BCM_GETIDEALSIZE = BCM_FIRST + 0x0001 } +// #define Button_GetIdealSize(hwnd, psize) (BOOL)SNDMSG((hwnd), BCM_GETIDEALSIZE, 0, (LPARAM)(psize)) + +enum : uint { BCM_SETIMAGELIST = BCM_FIRST + 0x0002 } +// #define Button_SetImageList(hwnd, pbuttonImagelist) (BOOL)SNDMSG((hwnd), BCM_SETIMAGELIST, 0, (LPARAM)(pbuttonImagelist)) + +enum : uint { BCM_GETIMAGELIST = BCM_FIRST + 0x0003 } +// #define Button_GetImageList(hwnd, pbuttonImagelist) (BOOL)SNDMSG((hwnd), BCM_GETIMAGELIST, 0, (LPARAM)(pbuttonImagelist)) + +enum : uint { BCM_SETTEXTMARGIN = BCM_FIRST + 0x0004 } +// #define Button_SetTextMargin(hwnd, pmargin) (BOOL)SNDMSG((hwnd), BCM_SETTEXTMARGIN, 0, (LPARAM)(pmargin)) +enum : uint { BCM_GETTEXTMARGIN = BCM_FIRST + 0x0005 } +// #define Button_GetTextMargin(hwnd, pmargin) (BOOL)SNDMSG((hwnd), BCM_GETTEXTMARGIN, 0, (LPARAM)(pmargin)) + +struct tagNMBCHOTITEM { + NMHDR hdr; + DWORD dwFlags; +} +alias tagNMBCHOTITEM NMBCHOTITEM; +alias tagNMBCHOTITEM* LPNMBCHOTITEM; + +enum : uint { BCN_HOTITEMCHANGE = BCN_FIRST + 0x0001 } + +enum : uint { BST_HOT = 0x0200 } + +// #endif + +// #endif // NOBUTTON + +// #ifndef NOSTATIC + +// #ifdef _WIN32 + +const char[] WC_STATICA = "Static"; +const wchar[] WC_STATICW = "Static"; + +// #ifdef UNICODE +// #... +// #else +alias WC_STATICA WC_STATIC; +// #endif + +// #else +// #... +// #endif + +// #endif // NOSTATIC + +// #ifndef NOEDIT + +// #ifdef _WIN32 + +const char[] WC_EDITA = "Edit"; +const wchar[] WC_EDITW = "Edit"; + +// #ifdef UNICODE +// #... +// #else +alias WC_EDITA WC_EDIT; +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { EM_SETCUEBANNER = ECM_FIRST + 1 } +// #define Edit_SetCueBannerText(hwnd, lpcwText) (BOOL)SNDMSG((hwnd), EM_SETCUEBANNER, 0, (LPARAM)(lpcwText)) +enum : uint { EM_GETCUEBANNER = ECM_FIRST + 2 } +// #define Edit_GetCueBannerText(hwnd, lpwText, cchText) (BOOL)SNDMSG((hwnd), EM_GETCUEBANNER, (WPARAM)(lpwText), (LPARAM)(cchText)) + +struct _tagEDITBALLOONTIP { + DWORD cbStruct; + LPCWSTR pszTitle; + LPCWSTR pszText; + INT ttiIcon; +} +alias _tagEDITBALLOONTIP EDITBALLOONTIP; +alias _tagEDITBALLOONTIP* PEDITBALLOONTIP; + +enum : uint { EM_SHOWBALLOONTIP = ECM_FIRST + 3 } +// #define Edit_ShowBalloonTip(hwnd, peditballoontip) (BOOL)SNDMSG((hwnd), EM_SHOWBALLOONTIP, 0, (LPARAM)(peditballoontip)) +enum : uint { EM_HIDEBALLOONTIP = ECM_FIRST + 4 } +// #define Edit_HideBalloonTip(hwnd) (BOOL)SNDMSG((hwnd), EM_HIDEBALLOONTIP, 0, 0) +// #endif + +// #endif // NOEDIT + +// #ifndef NOLISTBOX + +// #ifdef _WIN32 + +const char[] WC_LISTBOXA = "ListBox"; +const wchar[] WC_LISTBOXW = "ListBox"; + +// #ifdef UNICODE +// #... +// #else +alias WC_LISTBOXA WC_LISTBOX; +// #endif + +// #else +// #... +// #endif + +// #endif // NOLISTBOX + +// #ifndef NOCOMBOBOX + +// #ifdef _WIN32 + +const char[] WC_COMBOBOXA = "ComboBox"; +const wchar[] WC_COMBOBOXW = "ComboBox"; + +// #ifdef UNICODE +// #... +// #else +alias WC_COMBOBOXA WC_COMBOBOX; +// #endif + +// #else +// #... +// #endif + +// #endif // NOCOMBOBOX + +// #if (_WIN32_WINNT >= 0x501) + +enum : uint { CB_SETMINVISIBLE = CBM_FIRST + 1 } +enum : uint { CB_GETMINVISIBLE = CBM_FIRST + 2 } + +// #define ComboBox_SetMinVisible(hwnd, iMinVisible) (BOOL)SNDMSG((hwnd), CB_SETMINVISIBLE, (WPARAM)iMinVisible, 0) + +// #define ComboBox_GetMinVisible(hwnd) (int)SNDMSG((hwnd), CB_GETMINVISIBLE, 0, 0) + +// #endif + +// #ifndef NOSCROLLBAR + +// #ifdef _WIN32 + +const char[] WC_SCROLLBARA = "ScrollBar"; +const wchar[] WC_SCROLLBARW = "ScrollBar"; + +// #ifdef UNICODE +// #... +// #else +alias WC_SCROLLBARA WC_SCROLLBAR; +// #endif + +// #else +// #... +// #endif + +// #endif // NOSCROLLBAR + +// #ifdef _WIN32 +// #if (_WIN32_WINNT >= 0x501) + +enum { INVALID_LINK_INDEX = -1 } +enum : uint { MAX_LINKID_TEXT = 48 } +enum { L_MAX_URL_LENGTH = 2048 + 32 + 4 } + +const wchar[] WC_LINK = "SysLink"; + +enum : uint { LWS_TRANSPARENT = 0x0001 } +enum : uint { LWS_IGNORERETURN = 0x0002 } + +enum : uint { LIF_ITEMINDEX = 0x00000001 } +enum : uint { LIF_STATE = 0x00000002 } +enum : uint { LIF_ITEMID = 0x00000004 } +enum : uint { LIF_URL = 0x00000008 } + +enum : uint { LIS_FOCUSED = 0x00000001 } +enum : uint { LIS_ENABLED = 0x00000002 } +enum : uint { LIS_VISITED = 0x00000004 } + +struct tagLITEM { + UINT mask ; + int iLink ; + UINT state ; + UINT stateMask ; + WCHAR szID[MAX_LINKID_TEXT] ; + WCHAR szUrl[L_MAX_URL_LENGTH] ; +} +alias tagLITEM LITEM; +alias tagLITEM* PLITEM; + +struct tagLHITTESTINFO { + POINT pt ; + LITEM item ; +} +alias tagLHITTESTINFO LHITTESTINFO; +alias tagLHITTESTINFO* PLHITTESTINFO; + +struct tagNMLINK { + NMHDR hdr; + LITEM item ; +} +alias tagNMLINK NMLINK; +alias tagNMLINK* PNMLINK; + +enum : uint { LM_HITTEST = WM_USER+0x300 } +enum : uint { LM_GETIDEALHEIGHT = WM_USER+0x301 } +enum : uint { LM_SETITEM = WM_USER+0x302 } +enum : uint { LM_GETITEM = WM_USER+0x303 } + +// #endif +// #endif // _WIN32 + +// #ifndef NOMUI +extern(Windows) export void InitMUILanguage(LANGID uiLang); + +extern(Windows) export LANGID GetMUILanguage(); +// #endif // NOMUI + +// #endif // _WIN32_IE >= 0x0400 + +// #ifdef _WIN32 + +// #ifndef NOTRACKMOUSEEVENT + +// #ifndef WM_MOUSEHOVER +// #... +// #... +// #endif + +// #ifndef TME_HOVER + +enum : uint { TME_HOVER = 0x00000001 } +enum : uint { TME_LEAVE = 0x00000002 } +// #if (WINVER >= 0x0500) +enum : uint { TME_NONCLIENT = 0x00000010 } +// #endif /* WINVER >= 0x0500 */ +enum : uint { TME_QUERY = 0x40000000 } +enum : uint { TME_CANCEL = 0x80000000 } + +enum : uint { HOVER_DEFAULT = 0xFFFFFFFF } + +struct tagTRACKMOUSEEVENT { + DWORD cbSize; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} +alias tagTRACKMOUSEEVENT TRACKMOUSEEVENT; +alias tagTRACKMOUSEEVENT* LPTRACKMOUSEEVENT; + +// #endif // !TME_HOVER + +extern(Windows) export BOOL _TrackMouseEvent( + LPTRACKMOUSEEVENT lpEventTrack); + +// #endif // !NOTRACKMOUSEEVENT + +// #if (_WIN32_IE >= 0x0400) + +// #ifndef NOFLATSBAPIS + +enum : uint { WSB_PROP_CYVSCROLL = 0x00000001 } +enum : uint { WSB_PROP_CXHSCROLL = 0x00000002 } +enum : uint { WSB_PROP_CYHSCROLL = 0x00000004 } +enum : uint { WSB_PROP_CXVSCROLL = 0x00000008 } +enum : uint { WSB_PROP_CXHTHUMB = 0x00000010 } +enum : uint { WSB_PROP_CYVTHUMB = 0x00000020 } +enum : uint { WSB_PROP_VBKGCOLOR = 0x00000040 } +enum : uint { WSB_PROP_HBKGCOLOR = 0x00000080 } +enum : uint { WSB_PROP_VSTYLE = 0x00000100 } +enum : uint { WSB_PROP_HSTYLE = 0x00000200 } +enum : uint { WSB_PROP_WINSTYLE = 0x00000400 } +enum : uint { WSB_PROP_PALETTE = 0x00000800 } +enum : uint { WSB_PROP_MASK = 0x00000FFF } + +enum : uint { FSB_FLAT_MODE = 2 } +enum : uint { FSB_ENCARTA_MODE = 1 } +enum : uint { FSB_REGULAR_MODE = 0 } + +extern(Windows) export BOOL FlatSB_EnableScrollBar(HWND, int, UINT); +extern(Windows) export BOOL FlatSB_ShowScrollBar(HWND, int code, BOOL); + +extern(Windows) export BOOL FlatSB_GetScrollRange(HWND, int code, LPINT, LPINT); +extern(Windows) export BOOL FlatSB_GetScrollInfo(HWND, int code, LPSCROLLINFO); + +extern(Windows) export int FlatSB_GetScrollPos(HWND, int code); + +extern(Windows) export BOOL FlatSB_GetScrollProp(HWND, int propIndex, LPINT); +// #ifdef _WIN64 +// ... +// #else +alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; +// #endif + +extern(Windows) export int FlatSB_SetScrollPos(HWND, int code, int pos, BOOL fRedraw); + +extern(Windows) export int FlatSB_SetScrollInfo(HWND, int code, LPSCROLLINFO, BOOL fRedraw); + +extern(Windows) export int FlatSB_SetScrollRange(HWND, int code, int min, int max, BOOL fRedraw); +extern(Windows) export BOOL FlatSB_SetScrollProp(HWND, UINT index, INT_PTR newValue, BOOL); +alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; + +extern(Windows) export BOOL InitializeFlatSB(HWND); +extern(Windows) export HRESULT UninitializeFlatSB(HWND); + +// #endif // NOFLATSBAPIS + +// #endif // _WIN32_IE >= 0x0400 + +// #endif /* _WIN32 */ + +// #endif // _WIN32_IE >= 0x0300 + +// #if (_WIN32_WINNT >= 0x501) + +extern(Windows) alias LRESULT function(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData) SUBCLASSPROC; + +extern(Windows) export BOOL SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIdSubclass, + DWORD_PTR dwRefData); +extern(Windows) export BOOL GetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIdSubclass, + DWORD_PTR *pdwRefData); +extern(Windows) export BOOL RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, + UINT_PTR uIdSubclass); + +extern(Windows) export LRESULT DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +// #endif + +// #if (_WIN32_WINNT >= 0x501) + +extern(Windows) export int DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT* prc, DWORD dwFlags, COLORREF crText, COLORREF crShadow, + int ixOffset, int iyOffset); +// #endif + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED + +// #if !defined(ISOLATION_AWARE_INLINE) +// #if defined(__cplusplus) +// #... +// #else +// #... +// #endif +// #endif + +// ... + +// ... +// #if defined(__IStream_INTERFACE_DEFINED__) +// ... +// #if defined(__IStream_INTERFACE_DEFINED__) && (_WIN32_WINNT >= 0x0501) +// ... +// #endif /* defined(__IStream_INTERFACE_DEFINED__) && (_WIN32_WINNT >= 0x0501) */ +// #endif /* defined(__IStream_INTERFACE_DEFINED__) */ +// ... +// #if !defined(NOTRACKMOUSEEVENT) +// ... +// #endif /* !defined(NOTRACKMOUSEEVENT) */ +// ... +// #if (_WIN32_IE >= 0x560) +// ... +// #endif /* (_WIN32_IE >= 0x560) */ +// ... + +// #if defined(UNICODE) + +// #... +// #... +// #... + +// #else /* UNICODE */ + +// #... +// #... +// #... + +// #endif /* UNICODE */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if defined(__IStream_INTERFACE_DEFINED__) + +// ... + +// ... + +// #if defined(__IStream_INTERFACE_DEFINED__) && (_WIN32_WINNT >= 0x0501) + +// ... + +// ... + +// ... + +// ... + +// #endif /* defined(__IStream_INTERFACE_DEFINED__) && (_WIN32_WINNT >= 0x0501) */ +// #endif /* defined(__IStream_INTERFACE_DEFINED__) */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if !defined(NOTRACKMOUSEEVENT) + +// ... + +// #endif /* !defined(NOTRACKMOUSEEVENT) */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... +// #if defined(_WIN64) +// ... +// #else +// ... +// #endif +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if (_WIN32_IE >= 0x560) + +// ... + +// ... + +// ... + +// #endif /* (_WIN32_IE >= 0x560) */ + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #if defined(FlatSB_GetScrollPropPtr) +// #... +// #endif +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif + +// #endif // _INC_COMMCTRL + ADDED src/win32/ansi/commdlg.d Index: src/win32/ansi/commdlg.d ================================================================== --- src/win32/ansi/commdlg.d +++ src/win32/ansi/commdlg.d @@ -0,0 +1,1131 @@ +module win32.ansi.commdlg; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winuser; +// inline #include +// ---- + +// #ifndef _INC_CDERR +// #define _INC_CDERR + +// #if _MSC_VER > 1000 +// #pragma once +// #endif + +enum : uint { CDERR_DIALOGFAILURE = 0xFFFF } + +enum : uint { CDERR_GENERALCODES = 0x0000 } +enum : uint { CDERR_STRUCTSIZE = 0x0001 } +enum : uint { CDERR_INITIALIZATION = 0x0002 } +enum : uint { CDERR_NOTEMPLATE = 0x0003 } +enum : uint { CDERR_NOHINSTANCE = 0x0004 } +enum : uint { CDERR_LOADSTRFAILURE = 0x0005 } +enum : uint { CDERR_FINDRESFAILURE = 0x0006 } +enum : uint { CDERR_LOADRESFAILURE = 0x0007 } +enum : uint { CDERR_LOCKRESFAILURE = 0x0008 } +enum : uint { CDERR_MEMALLOCFAILURE = 0x0009 } +enum : uint { CDERR_MEMLOCKFAILURE = 0x000A } +enum : uint { CDERR_NOHOOK = 0x000B } +enum : uint { CDERR_REGISTERMSGFAIL = 0x000C } + +enum : uint { PDERR_PRINTERCODES = 0x1000 } +enum : uint { PDERR_SETUPFAILURE = 0x1001 } +enum : uint { PDERR_PARSEFAILURE = 0x1002 } +enum : uint { PDERR_RETDEFFAILURE = 0x1003 } +enum : uint { PDERR_LOADDRVFAILURE = 0x1004 } +enum : uint { PDERR_GETDEVMODEFAIL = 0x1005 } +enum : uint { PDERR_INITFAILURE = 0x1006 } +enum : uint { PDERR_NODEVICES = 0x1007 } +enum : uint { PDERR_NODEFAULTPRN = 0x1008 } +enum : uint { PDERR_DNDMMISMATCH = 0x1009 } +enum : uint { PDERR_CREATEICFAILURE = 0x100A } +enum : uint { PDERR_PRINTERNOTFOUND = 0x100B } +enum : uint { PDERR_DEFAULTDIFFERENT = 0x100C } + +enum : uint { CFERR_CHOOSEFONTCODES = 0x2000 } +enum : uint { CFERR_NOFONTS = 0x2001 } +enum : uint { CFERR_MAXLESSTHANMIN = 0x2002 } + +enum : uint { FNERR_FILENAMECODES = 0x3000 } +enum : uint { FNERR_SUBCLASSFAILURE = 0x3001 } +enum : uint { FNERR_INVALIDFILENAME = 0x3002 } +enum : uint { FNERR_BUFFERTOOSMALL = 0x3003 } + +enum : uint { FRERR_FINDREPLACECODES = 0x4000 } +enum : uint { FRERR_BUFFERLENGTHZERO = 0x4001 } + +enum : uint { CCERR_CHOOSECOLORCODES = 0x5000 } + +// #endif /* !_INC_CDERR */ +// ---- + +// #ifndef _INC_COMMDLG +// #define _INC_COMMDLG + +// #if(WINVER >= 0x0500) + +// #ifdef DEFINE_GUID + +// ... + +// ... + +// #endif + +// #endif /* WINVER >= 0x0500 */ + +// #ifndef GUID_DEFS_ONLY + +// #include + +// #if !defined(_WIN64) +align(1): +// #endif + +// #ifdef __cplusplus +// extern "C" { /* Assume C declarations for C++ */ +// #endif /* __cplusplus */ + +// #ifndef WINCOMMDLGAPI +// #if !defined(_COMDLG32_) +// #define WINCOMMDLGAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #endif // WINCOMMDLGAPI + +// #if(WINVER >= 0x0400) +// #ifndef SNDMSG +// #ifdef __cplusplus +// #ifndef _MAC +// #define SNDMSG ::SendMessage +// #else +// #... +// #endif +// #else /* __cplusplus */ +// #ifndef _MAC +// #... +// #else +// #... +// #endif +// #endif /* __cplusplus */ +// #endif // ifndef SNDMSG +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _MAC +// ... +// #endif + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPOFNHOOKPROC; + +// #ifndef CDSIZEOF_STRUCT +// #define CDSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) +// #endif + +// #ifndef DUMMYUNIONNAME +// #ifdef NONAMELESSUNION +// #... +// #endif // NONAMELESSUNION +// #endif // DUMMYUNIONNAME + +struct tagOFN_NT4A { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias tagOFN_NT4A OPENFILENAME_NT4A; +alias tagOFN_NT4A* LPOPENFILENAME_NT4A; + +struct tagOFN_NT4W { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias tagOFN_NT4W OPENFILENAME_NT4W; +alias tagOFN_NT4W* LPOPENFILENAME_NT4W; + +// #ifdef UNICODE +// ... +// #else +alias OPENFILENAME_NT4A OPENFILENAME_NT4; +alias LPOPENFILENAME_NT4A LPOPENFILENAME_NT4; +// #endif // UNICODE + +struct tagOFNA { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +// #ifdef _MAC +// ... +// #endif +// #if (_WIN32_WINNT >= 0x0500) + void * pvReserved; + DWORD dwReserved; + DWORD FlagsEx; +// #endif // (_WIN32_WINNT >= 0x0500) +} +alias tagOFNA OPENFILENAMEA; +alias tagOFNA* LPOPENFILENAMEA; + +struct tagOFNW { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +// #ifdef _MAC +// ... +// #endif +// #if (_WIN32_WINNT >= 0x0500) + void * pvReserved; + DWORD dwReserved; + DWORD FlagsEx; +// #endif // (_WIN32_WINNT >= 0x0500) +} +alias tagOFNW OPENFILENAMEW; +alias tagOFNW* LPOPENFILENAMEW; + +// #ifdef UNICODE +// ... +// #else +alias OPENFILENAMEA OPENFILENAME; +alias LPOPENFILENAMEA LPOPENFILENAME; +// #endif // UNICODE + +// #if (_WIN32_WINNT >= 0x0500) +// #define OPENFILENAME_SIZE_VERSION_400A CDSIZEOF_STRUCT(OPENFILENAMEA,lpTemplateName) +// #define OPENFILENAME_SIZE_VERSION_400W CDSIZEOF_STRUCT(OPENFILENAMEW,lpTemplateName) +// #ifdef UNICODE +// #... +// #else +// #define OPENFILENAME_SIZE_VERSION_400 OPENFILENAME_SIZE_VERSION_400A +// #endif // !UNICODE +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL GetOpenFileNameA(LPOPENFILENAMEA); +extern(Windows) export BOOL GetOpenFileNameW(LPOPENFILENAMEW); +// #ifdef UNICODE +// #... +// #else +alias GetOpenFileNameA GetOpenFileName; +// #endif // !UNICODE +extern(Windows) export BOOL GetSaveFileNameA(LPOPENFILENAMEA); +extern(Windows) export BOOL GetSaveFileNameW(LPOPENFILENAMEW); +// #ifdef UNICODE +// #... +// #else +alias GetSaveFileNameA GetSaveFileName; +// #endif // !UNICODE + +extern(Windows) export short GetFileTitleA(LPCSTR, LPSTR, WORD); +extern(Windows) export short GetFileTitleW(LPCWSTR, LPWSTR, WORD); +// #ifdef UNICODE +// #... +// #else +alias GetFileTitleA GetFileTitle; +// #endif // !UNICODE + +enum : uint { OFN_READONLY = 0x00000001 } +enum : uint { OFN_OVERWRITEPROMPT = 0x00000002 } +enum : uint { OFN_HIDEREADONLY = 0x00000004 } +enum : uint { OFN_NOCHANGEDIR = 0x00000008 } +enum : uint { OFN_SHOWHELP = 0x00000010 } +enum : uint { OFN_ENABLEHOOK = 0x00000020 } +enum : uint { OFN_ENABLETEMPLATE = 0x00000040 } +enum : uint { OFN_ENABLETEMPLATEHANDLE = 0x00000080 } +enum : uint { OFN_NOVALIDATE = 0x00000100 } +enum : uint { OFN_ALLOWMULTISELECT = 0x00000200 } +enum : uint { OFN_EXTENSIONDIFFERENT = 0x00000400 } +enum : uint { OFN_PATHMUSTEXIST = 0x00000800 } +enum : uint { OFN_FILEMUSTEXIST = 0x00001000 } +enum : uint { OFN_CREATEPROMPT = 0x00002000 } +enum : uint { OFN_SHAREAWARE = 0x00004000 } +enum : uint { OFN_NOREADONLYRETURN = 0x00008000 } +enum : uint { OFN_NOTESTFILECREATE = 0x00010000 } +enum : uint { OFN_NONETWORKBUTTON = 0x00020000 } +enum : uint { OFN_NOLONGNAMES = 0x00040000 } +// #if(WINVER >= 0x0400) +enum : uint { OFN_EXPLORER = 0x00080000 } +enum : uint { OFN_NODEREFERENCELINKS = 0x00100000 } +enum : uint { OFN_LONGNAMES = 0x00200000 } +enum : uint { OFN_ENABLEINCLUDENOTIFY = 0x00400000 } +enum : uint { OFN_ENABLESIZING = 0x00800000 } +// #endif /* WINVER >= 0x0400 */ +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { OFN_DONTADDTORECENT = 0x02000000 } +enum : uint { OFN_FORCESHOWHIDDEN = 0x10000000 } +// #endif // (_WIN32_WINNT >= 0x0500) + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { OFN_EX_NOPLACESBAR = 0x00000001 } +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { OFN_SHAREFALLTHROUGH = 2 } +enum : uint { OFN_SHARENOWARN = 1 } +enum : uint { OFN_SHAREWARN = 0 } + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPCCHOOKPROC; + +// #if(WINVER >= 0x0400) + +struct _OFNOTIFYA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPSTR pszFile; +} +alias _OFNOTIFYA OFNOTIFYA; +alias _OFNOTIFYA* LPOFNOTIFYA; + +struct _OFNOTIFYW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPWSTR pszFile; +} +alias _OFNOTIFYW OFNOTIFYW; +alias _OFNOTIFYW* LPOFNOTIFYW; + +// #ifdef UNICODE +// ... +// #else +alias OFNOTIFYA OFNOTIFY; +alias LPOFNOTIFYA LPOFNOTIFY; +// #endif // UNICODE + +struct _OFNOTIFYEXA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPVOID psf; + LPVOID pidl; +} +alias _OFNOTIFYEXA OFNOTIFYEXA; +alias _OFNOTIFYEXA* LPOFNOTIFYEXA; + +struct _OFNOTIFYEXW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPVOID psf; + LPVOID pidl; +} +alias _OFNOTIFYEXW OFNOTIFYEXW; +alias _OFNOTIFYEXW* LPOFNOTIFYEXW; + +// #ifdef UNICODE +// ... +// #else +alias OFNOTIFYEXA OFNOTIFYEX; +alias LPOFNOTIFYEXA LPOFNOTIFYEX; +// #endif // UNICODE + +enum : uint { CDN_FIRST = 0U-601U } +enum : uint { CDN_LAST = 0U-699U } + +enum : uint { CDN_INITDONE = CDN_FIRST - 0x0000 } +enum : uint { CDN_SELCHANGE = CDN_FIRST - 0x0001 } +enum : uint { CDN_FOLDERCHANGE = CDN_FIRST - 0x0002 } +enum : uint { CDN_SHAREVIOLATION = CDN_FIRST - 0x0003 } +enum : uint { CDN_HELP = CDN_FIRST - 0x0004 } +enum : uint { CDN_FILEOK = CDN_FIRST - 0x0005 } +enum : uint { CDN_TYPECHANGE = CDN_FIRST - 0x0006 } +enum : uint { CDN_INCLUDEITEM = CDN_FIRST - 0x0007 } + +enum : uint { CDM_FIRST = WM_USER + 100 } +enum : uint { CDM_LAST = WM_USER + 200 } + +enum : uint { CDM_GETSPEC = CDM_FIRST + 0x0000 } +// #define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz) +// #define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz) +// #ifdef UNICODE +// #... +// #else +// #define CommDlg_OpenSave_GetSpec CommDlg_OpenSave_GetSpecA +// #endif // !UNICODE + +enum : uint { CDM_GETFILEPATH = CDM_FIRST + 0x0001 } +// #define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz) +// #define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz) +// #ifdef UNICODE +// #... +// #else +// #define CommDlg_OpenSave_GetFilePath CommDlg_OpenSave_GetFilePathA +// #endif // !UNICODE + +enum : uint { CDM_GETFOLDERPATH = CDM_FIRST + 0x0002 } +// #define CommDlg_OpenSave_GetFolderPathA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz) +// #define CommDlg_OpenSave_GetFolderPathW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz) +// #ifdef UNICODE +// #... +// #else +// #define CommDlg_OpenSave_GetFolderPath CommDlg_OpenSave_GetFolderPathA +// #endif // !UNICODE + +enum : uint { CDM_GETFOLDERIDLIST = CDM_FIRST + 0x0003 } +// #define CommDlg_OpenSave_GetFolderIDList(_hdlg, _pidl, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERIDLIST, (WPARAM)_cbmax, (LPARAM)(LPVOID)_pidl) + +enum : uint { CDM_SETCONTROLTEXT = CDM_FIRST + 0x0004 } +// #define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) (void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text) + +enum : uint { CDM_HIDECONTROL = CDM_FIRST + 0x0005 } +// #define CommDlg_OpenSave_HideControl(_hdlg, _id) (void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0) + +enum : uint { CDM_SETDEFEXT = CDM_FIRST + 0x0006 } +// #define CommDlg_OpenSave_SetDefExt(_hdlg, _pszext) (void)SNDMSG(_hdlg, CDM_SETDEFEXT, 0, (LPARAM)(LPSTR)_pszext) +// #endif /* WINVER >= 0x0400 */ + +// #ifndef _MAC +struct tagCHOOSECOLORA { + DWORD lStructSize; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF * lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias tagCHOOSECOLORA CHOOSECOLORA; +alias tagCHOOSECOLORA* LPCHOOSECOLORA; + +struct tagCHOOSECOLORW { + DWORD lStructSize; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF * lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias tagCHOOSECOLORW CHOOSECOLORW; +alias tagCHOOSECOLORW* LPCHOOSECOLORW; + +// #ifdef UNICODE +// ... +// #else +alias CHOOSECOLORA CHOOSECOLOR; +alias LPCHOOSECOLORA LPCHOOSECOLOR; +// #endif // UNICODE +// #else +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif //_MAC + +extern(Windows) export BOOL ChooseColorA(LPCHOOSECOLORA); +extern(Windows) export BOOL ChooseColorW(LPCHOOSECOLORW); +// #ifdef UNICODE +// #... +// #else +alias ChooseColorA ChooseColor; +// #endif // !UNICODE + +enum : uint { CC_RGBINIT = 0x00000001 } +enum : uint { CC_FULLOPEN = 0x00000002 } +enum : uint { CC_PREVENTFULLOPEN = 0x00000004 } +enum : uint { CC_SHOWHELP = 0x00000008 } +enum : uint { CC_ENABLEHOOK = 0x00000010 } +enum : uint { CC_ENABLETEMPLATE = 0x00000020 } +enum : uint { CC_ENABLETEMPLATEHANDLE = 0x00000040 } +// #if(WINVER >= 0x0400) +enum : uint { CC_SOLIDCOLOR = 0x00000080 } +enum : uint { CC_ANYCOLOR = 0x00000100 } +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPFRHOOKPROC; + +struct tagFINDREPLACEA { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + + DWORD Flags; + LPSTR lpstrFindWhat; + LPSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias tagFINDREPLACEA FINDREPLACEA; +alias tagFINDREPLACEA* LPFINDREPLACEA; + +struct tagFINDREPLACEW { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + + DWORD Flags; + LPWSTR lpstrFindWhat; + LPWSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias tagFINDREPLACEW FINDREPLACEW; +alias tagFINDREPLACEW* LPFINDREPLACEW; + +// #ifdef UNICODE +// ... +// #else +alias FINDREPLACEA FINDREPLACE; +alias LPFINDREPLACEA LPFINDREPLACE; +// #endif // UNICODE + +enum : uint { FR_DOWN = 0x00000001 } +enum : uint { FR_WHOLEWORD = 0x00000002 } +enum : uint { FR_MATCHCASE = 0x00000004 } +enum : uint { FR_FINDNEXT = 0x00000008 } +enum : uint { FR_REPLACE = 0x00000010 } +enum : uint { FR_REPLACEALL = 0x00000020 } +enum : uint { FR_DIALOGTERM = 0x00000040 } +enum : uint { FR_SHOWHELP = 0x00000080 } +enum : uint { FR_ENABLEHOOK = 0x00000100 } +enum : uint { FR_ENABLETEMPLATE = 0x00000200 } +enum : uint { FR_NOUPDOWN = 0x00000400 } +enum : uint { FR_NOMATCHCASE = 0x00000800 } +enum : uint { FR_NOWHOLEWORD = 0x00001000 } +enum : uint { FR_ENABLETEMPLATEHANDLE = 0x00002000 } +enum : uint { FR_HIDEUPDOWN = 0x00004000 } +enum : uint { FR_HIDEMATCHCASE = 0x00008000 } +enum : uint { FR_HIDEWHOLEWORD = 0x00010000 } +enum : uint { FR_RAW = 0x00020000 } +enum : uint { FR_MATCHDIAC = 0x20000000 } +enum : uint { FR_MATCHKASHIDA = 0x40000000 } +enum : uint { FR_MATCHALEFHAMZA = 0x80000000 } + +extern(Windows) export HWND FindTextA(LPFINDREPLACEA); +extern(Windows) export HWND FindTextW(LPFINDREPLACEW); +// #ifdef UNICODE +// #... +// #else +alias FindTextA FindText; +// #endif // !UNICODE +// #ifndef _MAC +extern(Windows) export HWND ReplaceTextA(LPFINDREPLACEA); +extern(Windows) export HWND ReplaceTextW(LPFINDREPLACEW); +// #ifdef UNICODE +// #... +// #else +alias ReplaceTextA ReplaceText; +// #endif // !UNICODE +// #else +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE +// #endif + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPCFHOOKPROC; + +struct tagCHOOSEFONTA { + DWORD lStructSize; + HWND hwndOwner; + HDC hDC; + LPLOGFONTA lpLogFont; + INT iPointSize; + DWORD Flags; + COLORREF rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + HINSTANCE hInstance; + + LPSTR lpszStyle; + + WORD nFontType; + + WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; + +} +alias tagCHOOSEFONTA CHOOSEFONTA; +alias tagCHOOSEFONTA* LPCHOOSEFONTA; + +struct tagCHOOSEFONTW { + DWORD lStructSize; + HWND hwndOwner; + HDC hDC; + LPLOGFONTW lpLogFont; + INT iPointSize; + DWORD Flags; + COLORREF rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + HINSTANCE hInstance; + + LPWSTR lpszStyle; + + WORD nFontType; + + WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; + +} +alias tagCHOOSEFONTW CHOOSEFONTW; +alias tagCHOOSEFONTW* LPCHOOSEFONTW; + +// #ifdef UNICODE +// ... +// #else +alias CHOOSEFONTA CHOOSEFONT; +alias LPCHOOSEFONTA LPCHOOSEFONT; +// #endif // UNICODE + +extern(Windows) export BOOL ChooseFontA(LPCHOOSEFONTA); +extern(Windows) export BOOL ChooseFontW(LPCHOOSEFONTW); +// #ifdef UNICODE +// #... +// #else +alias ChooseFontA ChooseFont; +// #endif // !UNICODE + +enum : uint { CF_SCREENFONTS = 0x00000001 } +enum : uint { CF_PRINTERFONTS = 0x00000002 } +enum : uint { CF_BOTH = CF_SCREENFONTS | CF_PRINTERFONTS } +enum : uint { CF_SHOWHELP = 0x00000004 } +enum : uint { CF_ENABLEHOOK = 0x00000008 } +enum : uint { CF_ENABLETEMPLATE = 0x00000010 } +enum : uint { CF_ENABLETEMPLATEHANDLE = 0x00000020 } +enum : uint { CF_INITTOLOGFONTSTRUCT = 0x00000040 } +enum : uint { CF_USESTYLE = 0x00000080 } +enum : uint { CF_EFFECTS = 0x00000100 } +enum : uint { CF_APPLY = 0x00000200 } +enum : uint { CF_ANSIONLY = 0x00000400 } +// #if(WINVER >= 0x0400) +alias CF_ANSIONLY CF_SCRIPTSONLY; +// #endif /* WINVER >= 0x0400 */ +enum : uint { CF_NOVECTORFONTS = 0x00000800 } +alias CF_NOVECTORFONTS CF_NOOEMFONTS; +enum : uint { CF_NOSIMULATIONS = 0x00001000 } +enum : uint { CF_LIMITSIZE = 0x00002000 } +enum : uint { CF_FIXEDPITCHONLY = 0x00004000 } +enum : uint { CF_WYSIWYG = 0x00008000 } +enum : uint { CF_FORCEFONTEXIST = 0x00010000 } +enum : uint { CF_SCALABLEONLY = 0x00020000 } +enum : uint { CF_TTONLY = 0x00040000 } +enum : uint { CF_NOFACESEL = 0x00080000 } +enum : uint { CF_NOSTYLESEL = 0x00100000 } +enum : uint { CF_NOSIZESEL = 0x00200000 } +// #if(WINVER >= 0x0400) +enum : uint { CF_SELECTSCRIPT = 0x00400000 } +enum : uint { CF_NOSCRIPTSEL = 0x00800000 } +enum : uint { CF_NOVERTFONTS = 0x01000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SIMULATED_FONTTYPE = 0x8000 } +enum : uint { PRINTER_FONTTYPE = 0x4000 } +enum : uint { SCREEN_FONTTYPE = 0x2000 } +enum : uint { BOLD_FONTTYPE = 0x0100 } +enum : uint { ITALIC_FONTTYPE = 0x0200 } +enum : uint { REGULAR_FONTTYPE = 0x0400 } + +// #ifdef WINNT +// #... +// #... +// #... +// #endif + +enum : uint { WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1 } +enum : uint { WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101 } +enum : uint { WM_CHOOSEFONT_SETFLAGS = WM_USER + 102 } + +const char[] LBSELCHSTRINGA = "commdlg_LBSelChangedNotify"; +const char[] SHAREVISTRINGA = "commdlg_ShareViolation"; +const char[] FILEOKSTRINGA = "commdlg_FileNameOK"; +const char[] COLOROKSTRINGA = "commdlg_ColorOK"; +const char[] SETRGBSTRINGA = "commdlg_SetRGBColor"; +const char[] HELPMSGSTRINGA = "commdlg_help"; +const char[] FINDMSGSTRINGA = "commdlg_FindReplace"; + +const wchar[] LBSELCHSTRINGW = "commdlg_LBSelChangedNotify"; +const wchar[] SHAREVISTRINGW = "commdlg_ShareViolation"; +const wchar[] FILEOKSTRINGW = "commdlg_FileNameOK"; +const wchar[] COLOROKSTRINGW = "commdlg_ColorOK"; +const wchar[] SETRGBSTRINGW = "commdlg_SetRGBColor"; +const wchar[] HELPMSGSTRINGW = "commdlg_help"; +const wchar[] FINDMSGSTRINGW = "commdlg_FindReplace"; + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #else +alias LBSELCHSTRINGA LBSELCHSTRING; +alias SHAREVISTRINGA SHAREVISTRING; +alias FILEOKSTRINGA FILEOKSTRING; +alias COLOROKSTRINGA COLOROKSTRING; +alias SETRGBSTRINGA SETRGBSTRING; +alias HELPMSGSTRINGA HELPMSGSTRING; +alias FINDMSGSTRINGA FINDMSGSTRING; +// #endif + +enum { CD_LBSELNOITEMS = -1 } +enum : uint { CD_LBSELCHANGE = 0 } +enum : uint { CD_LBSELSUB = 1 } +enum : uint { CD_LBSELADD = 2 } + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPPRINTHOOKPROC; +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPSETUPHOOKPROC; + +struct tagPDA { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + LPARAM lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCSTR lpPrintTemplateName; + LPCSTR lpSetupTemplateName; + HGLOBAL hPrintTemplate; + HGLOBAL hSetupTemplate; +} +alias tagPDA PRINTDLGA; +alias tagPDA* LPPRINTDLGA; + +struct tagPDW { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + LPARAM lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCWSTR lpPrintTemplateName; + LPCWSTR lpSetupTemplateName; + HGLOBAL hPrintTemplate; + HGLOBAL hSetupTemplate; +} +alias tagPDW PRINTDLGW; +alias tagPDW* LPPRINTDLGW; + +// #ifdef UNICODE +// ... +// #else +alias PRINTDLGA PRINTDLG; +alias LPPRINTDLGA LPPRINTDLG; +// #endif // UNICODE + +extern(Windows) export BOOL PrintDlgA(LPPRINTDLGA); +extern(Windows) export BOOL PrintDlgW(LPPRINTDLGW); +// #ifdef UNICODE +// #... +// #else +alias PrintDlgA PrintDlg; +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) + +// #ifdef STDMETHOD + +// #... +// #... + +// ... + +// ... + +// #... +// #... + +// ... + +// ... + +// ... + +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #endif + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { PD_ALLPAGES = 0x00000000 } +enum : uint { PD_SELECTION = 0x00000001 } +enum : uint { PD_PAGENUMS = 0x00000002 } +enum : uint { PD_NOSELECTION = 0x00000004 } +enum : uint { PD_NOPAGENUMS = 0x00000008 } +enum : uint { PD_COLLATE = 0x00000010 } +enum : uint { PD_PRINTTOFILE = 0x00000020 } +enum : uint { PD_PRINTSETUP = 0x00000040 } +enum : uint { PD_NOWARNING = 0x00000080 } +enum : uint { PD_RETURNDC = 0x00000100 } +enum : uint { PD_RETURNIC = 0x00000200 } +enum : uint { PD_RETURNDEFAULT = 0x00000400 } +enum : uint { PD_SHOWHELP = 0x00000800 } +enum : uint { PD_ENABLEPRINTHOOK = 0x00001000 } +enum : uint { PD_ENABLESETUPHOOK = 0x00002000 } +enum : uint { PD_ENABLEPRINTTEMPLATE = 0x00004000 } +enum : uint { PD_ENABLESETUPTEMPLATE = 0x00008000 } +enum : uint { PD_ENABLEPRINTTEMPLATEHANDLE = 0x00010000 } +enum : uint { PD_ENABLESETUPTEMPLATEHANDLE = 0x00020000 } +enum : uint { PD_USEDEVMODECOPIES = 0x00040000 } +enum : uint { PD_USEDEVMODECOPIESANDCOLLATE = 0x00040000 } +enum : uint { PD_DISABLEPRINTTOFILE = 0x00080000 } +enum : uint { PD_HIDEPRINTTOFILE = 0x00100000 } +enum : uint { PD_NONETWORKBUTTON = 0x00200000 } +// #if(WINVER >= 0x0500) +enum : uint { PD_CURRENTPAGE = 0x00400000 } +enum : uint { PD_NOCURRENTPAGE = 0x00800000 } +enum : uint { PD_EXCLUSIONFLAGS = 0x01000000 } +enum : uint { PD_USELARGETEMPLATE = 0x10000000 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) + +enum : uint { PD_EXCL_COPIESANDCOLLATE = DM_COPIES | DM_COLLATE } + +enum : uint { START_PAGE_GENERAL = 0xffffffff } + +enum : uint { PD_RESULT_CANCEL = 0 } +enum : uint { PD_RESULT_PRINT = 1 } +enum : uint { PD_RESULT_APPLY = 2 } + +// #endif /* WINVER >= 0x0500 */ + +struct tagDEVNAMES { + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; +} +alias tagDEVNAMES DEVNAMES; +alias tagDEVNAMES* LPDEVNAMES; + +enum : uint { DN_DEFAULTPRN = 0x0001 } + +extern(Windows) export DWORD CommDlgExtendedError(); + +// #if(WINVER >= 0x0400) +enum : uint { WM_PSD_PAGESETUPDLG = WM_USER } +enum : uint { WM_PSD_FULLPAGERECT = WM_USER+1 } +enum : uint { WM_PSD_MINMARGINRECT = WM_USER+2 } +enum : uint { WM_PSD_MARGINRECT = WM_USER+3 } +enum : uint { WM_PSD_GREEKTEXTRECT = WM_USER+4 } +enum : uint { WM_PSD_ENVSTAMPRECT = WM_USER+5 } +enum : uint { WM_PSD_YAFULLPAGERECT = WM_USER+6 } + +extern(Windows) alias UINT_PTR function( HWND, UINT, WPARAM, LPARAM ) LPPAGEPAINTHOOK; +extern(Windows) alias UINT_PTR function( HWND, UINT, WPARAM, LPARAM ) LPPAGESETUPHOOK; + +struct tagPSDA { + DWORD lStructSize; + 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 tagPSDA PAGESETUPDLGA; +alias tagPSDA* LPPAGESETUPDLGA; + +struct tagPSDW { + DWORD lStructSize; + 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 tagPSDW PAGESETUPDLGW; +alias tagPSDW* LPPAGESETUPDLGW; + +// #ifdef UNICODE +// ... +// #else +alias PAGESETUPDLGA PAGESETUPDLG; +alias LPPAGESETUPDLGA LPPAGESETUPDLG; +// #endif // UNICODE + +extern(Windows) export BOOL PageSetupDlgA( LPPAGESETUPDLGA ); +extern(Windows) export BOOL PageSetupDlgW( LPPAGESETUPDLGW ); +// #ifdef UNICODE +// #... +// #else +alias PageSetupDlgA PageSetupDlg; +// #endif // !UNICODE + +enum : uint { PSD_DEFAULTMINMARGINS = 0x00000000 } +enum : uint { PSD_INWININIINTLMEASURE = 0x00000000 } + +enum : uint { PSD_MINMARGINS = 0x00000001 } +enum : uint { PSD_MARGINS = 0x00000002 } +enum : uint { PSD_INTHOUSANDTHSOFINCHES = 0x00000004 } +enum : uint { PSD_INHUNDREDTHSOFMILLIMETERS = 0x00000008 } +enum : uint { PSD_DISABLEMARGINS = 0x00000010 } +enum : uint { PSD_DISABLEPRINTER = 0x00000020 } +enum : uint { PSD_NOWARNING = 0x00000080 } +enum : uint { PSD_DISABLEORIENTATION = 0x00000100 } +enum : uint { PSD_RETURNDEFAULT = 0x00000400 } +enum : uint { PSD_DISABLEPAPER = 0x00000200 } +enum : uint { PSD_SHOWHELP = 0x00000800 } +enum : uint { PSD_ENABLEPAGESETUPHOOK = 0x00002000 } +enum : uint { PSD_ENABLEPAGESETUPTEMPLATE = 0x00008000 } +enum : uint { PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x00020000 } +enum : uint { PSD_ENABLEPAGEPAINTHOOK = 0x00040000 } +enum : uint { PSD_DISABLEPAGEPAINTING = 0x00080000 } +enum : uint { PSD_NONETWORKBUTTON = 0x00200000 } +// #endif /* WINVER >= 0x0400 */ + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED + +// #if !defined(ISOLATION_AWARE_INLINE) +// #if defined(__cplusplus) +// #... +// #else +// #... +// #endif +// #endif + +// ... + +// ... +// #if defined(STDMETHOD) && (WINVER >= 0x0500) +// ... +// #endif /* defined(STDMETHOD) && (WINVER >= 0x0500) */ +// ... + +// #if defined(UNICODE) + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #else /* UNICODE */ + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif /* UNICODE */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if defined(STDMETHOD) && (WINVER >= 0x0500) + +// ... + +// ... + +// ... + +// ... + +// #endif /* defined(STDMETHOD) && (WINVER >= 0x0500) */ + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #if !defined(_WIN64) +align: +// #endif +// #endif /* GUID_DEFS_ONLY */ +// #endif /* !_INC_COMMDLG */ + ADDED src/win32/ansi/dde.d Index: src/win32/ansi/dde.d ================================================================== --- src/win32/ansi/dde.d +++ src/win32/ansi/dde.d @@ -0,0 +1,134 @@ +module win32.ansi.dde; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + + +// #ifndef _DDEHEADER_INCLUDED_ +// #define _DDEHEADER_INCLUDED_ + +// #if _MSC_VER > 1000 +// #pragma once +// #endif + +// #ifndef _WINDEF_ +import win32.ansi.windef; +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +enum : uint { WM_DDE_FIRST = 0x03E0 } +enum : uint { WM_DDE_INITIATE = WM_DDE_FIRST } +enum : uint { WM_DDE_TERMINATE = WM_DDE_FIRST+1 } +enum : uint { WM_DDE_ADVISE = WM_DDE_FIRST+2 } +enum : uint { WM_DDE_UNADVISE = WM_DDE_FIRST+3 } +enum : uint { WM_DDE_ACK = WM_DDE_FIRST+4 } +enum : uint { WM_DDE_DATA = WM_DDE_FIRST+5 } +enum : uint { WM_DDE_REQUEST = WM_DDE_FIRST+6 } +enum : uint { WM_DDE_POKE = WM_DDE_FIRST+7 } +enum : uint { WM_DDE_EXECUTE = WM_DDE_FIRST+8 } +enum : uint { WM_DDE_LAST = WM_DDE_FIRST+8 } + +struct _0 { +// #ifndef _MAC +// unsigned short bAppReturnCode:8, +// reserved:6, +// fBusy:1, +// fAck:1; +// #else +// ... +// #endif +} +alias _0 DDEACK; + +struct _1 { +// #ifndef _MAC +// unsigned short reserved:14, +// fDeferUpd:1, +// fAckReq:1; +// #else +// ... +// #endif + short cfFormat; +} +alias _1 DDEADVISE; + +struct _2 { +// #ifndef _MAC +// unsigned short unused:12, +// fResponse:1, +// fRelease:1, +// reserved:1, +// fAckReq:1; +// #else +// ... +// #endif + short cfFormat; + BYTE Value[1]; +} +alias _2 DDEDATA; + +struct _3 { +// #ifndef _MAC +// unsigned short unused:13, + +// fRelease:1, +// fReserved:2; +// #else +// ... +// #endif + short cfFormat; + BYTE Value[1]; + +} +alias _3 DDEPOKE; + +struct _4 { +// #ifndef _MAC +// unsigned short unused:13, +// fRelease:1, +// fDeferUpd:1, +// fAckReq:1; +// #else +// ... +// #endif + short cfFormat; +} +alias _4 DDELN; + +struct _5 { +// #ifndef _MAC +// unsigned short unused:12, +// fAck:1, +// fRelease:1, +// fReserved:1, +// fAckReq:1; +// #else +// ... +// #endif + short cfFormat; + BYTE rgb[1]; +} +alias _5 DDEUP; + +extern(Windows) export BOOL DdeSetQualityOfService( + HWND hwndClient, + SECURITY_QUALITY_OF_SERVICE *pqosNew, + PSECURITY_QUALITY_OF_SERVICE pqosPrev); + +extern(Windows) export BOOL ImpersonateDdeClientWindow( + HWND hWndClient, + HWND hWndServer); + +extern(Windows) export LPARAM PackDDElParam(UINT msg, UINT_PTR uiLo, UINT_PTR uiHi); +extern(Windows) export BOOL UnpackDDElParam(UINT msg, LPARAM lParam, PUINT_PTR puiLo, PUINT_PTR puiHi); +extern(Windows) export BOOL FreeDDElParam(UINT msg, LPARAM lParam); +extern(Windows) export LPARAM ReuseDDElParam(LPARAM lParam, UINT msgIn, UINT msgOut, UINT_PTR uiLo, UINT_PTR uiHi); + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _DDEHEADER_INCLUDED_ ADDED src/win32/ansi/ddeml.d Index: src/win32/ansi/ddeml.d ================================================================== --- src/win32/ansi/ddeml.d +++ src/win32/ansi/ddeml.d @@ -0,0 +1,434 @@ +module win32.ansi.ddeml; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.windef; + +// #ifndef _INC_DDEMLH +// #define _INC_DDEMLH + +// #ifdef __cplusplus +// extern "C" { +// #endif /* __cplusplus */ + +alias void* HCONVLIST; +alias void* HCONV; +alias void* HSZ; +alias void* HDDEDATA; +// #define EXPENTRY CALLBACK + +struct tagHSZPAIR { + HSZ hszSvc; + HSZ hszTopic; +} +alias tagHSZPAIR HSZPAIR; + +alias HSZPAIR* PHSZPAIR; + +struct tagCONVCONTEXT { + UINT cb; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; +} +alias tagCONVCONTEXT CONVCONTEXT; + +alias CONVCONTEXT* PCONVCONTEXT; + +struct tagCONVINFO { + DWORD cb; + DWORD_PTR 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 tagCONVINFO CONVINFO; + +alias CONVINFO* PCONVINFO; + +enum : uint { XST_NULL = 0 } +enum : uint { XST_INCOMPLETE = 1 } +enum : uint { XST_CONNECTED = 2 } +enum : uint { XST_INIT1 = 3 } +enum : uint { XST_INIT2 = 4 } +enum : uint { XST_REQSENT = 5 } +enum : uint { XST_DATARCVD = 6 } +enum : uint { XST_POKESENT = 7 } +enum : uint { XST_POKEACKRCVD = 8 } +enum : uint { XST_EXECSENT = 9 } +enum : uint { XST_EXECACKRCVD = 10 } +enum : uint { XST_ADVSENT = 11 } +enum : uint { XST_UNADVSENT = 12 } +enum : uint { XST_ADVACKRCVD = 13 } +enum : uint { XST_UNADVACKRCVD = 14 } +enum : uint { XST_ADVDATASENT = 15 } +enum : uint { XST_ADVDATAACKRCVD = 16 } + +enum : uint { CADV_LATEACK = 0xFFFF } + +enum : uint { ST_CONNECTED = 0x0001 } +enum : uint { ST_ADVISE = 0x0002 } +enum : uint { ST_ISLOCAL = 0x0004 } +enum : uint { ST_BLOCKED = 0x0008 } +enum : uint { ST_CLIENT = 0x0010 } +enum : uint { ST_TERMINATED = 0x0020 } +enum : uint { ST_INLIST = 0x0040 } +enum : uint { ST_BLOCKNEXT = 0x0080 } +enum : uint { ST_ISSELF = 0x0100 } + +enum : uint { DDE_FACK = 0x8000 } +enum : uint { DDE_FBUSY = 0x4000 } +enum : uint { DDE_FDEFERUPD = 0x4000 } +enum : uint { DDE_FACKREQ = 0x8000 } +enum : uint { DDE_FRELEASE = 0x2000 } +enum : uint { DDE_FREQUESTED = 0x1000 } +enum : uint { DDE_FAPPSTATUS = 0x00ff } +enum : uint { DDE_FNOTPROCESSED = 0x0000 } + +enum : uint { DDE_FACKRESERVED = ~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS) } +enum : uint { DDE_FADVRESERVED = ~(DDE_FACKREQ | DDE_FDEFERUPD) } +enum : uint { DDE_FDATRESERVED = ~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED) } +enum : uint { DDE_FPOKRESERVED = ~(DDE_FRELEASE) } + +enum : uint { MSGF_DDEMGR = 0x8001 } + +enum : uint { CP_WINANSI = 1004 } +enum : uint { CP_WINUNICODE = 1200 } +// #ifdef UNICODE +// #... +// #else // !UNICODE +alias CP_WINANSI CP_WINNEUTRAL; +// #endif // !UNICODE + +enum : uint { XTYPF_NOBLOCK = 0x0002 } +enum : uint { XTYPF_NODATA = 0x0004 } +enum : uint { XTYPF_ACKREQ = 0x0008 } + +enum : uint { XCLASS_MASK = 0xFC00 } +enum : uint { XCLASS_BOOL = 0x1000 } +enum : uint { XCLASS_DATA = 0x2000 } +enum : uint { XCLASS_FLAGS = 0x4000 } +enum : uint { XCLASS_NOTIFICATION = 0x8000 } + +enum : uint { XTYP_ERROR = 0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK } +enum : uint { XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS } +enum : uint { XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK } +enum : uint { XTYP_ADVSTART = 0x0030 | XCLASS_BOOL } +enum : uint { XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION } +enum : uint { XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS } +enum : uint { XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK } +enum : uint { XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK } +enum : uint { XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION } +enum : uint { XTYP_POKE = 0x0090 | XCLASS_FLAGS } +enum : uint { XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK } +enum : uint { XTYP_REQUEST = 0x00B0 | XCLASS_DATA } +enum : uint { XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK } +enum : uint { XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK } +enum : uint { XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK } + +enum : uint { XTYP_MASK = 0x00F0 } +enum : uint { XTYP_SHIFT = 4 } + +enum : uint { TIMEOUT_ASYNC = 0xFFFFFFFF } + +enum : uint { QID_SYNC = 0xFFFFFFFF } + +// #ifdef UNICODE +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #else +const char[] SZDDESYS_TOPIC = "System"; +const char[] SZDDESYS_ITEM_TOPICS = "Topics"; +const char[] SZDDESYS_ITEM_SYSITEMS = "SysItems"; +const char[] SZDDESYS_ITEM_RTNMSG = "ReturnMessage"; +const char[] SZDDESYS_ITEM_STATUS = "Status"; +const char[] SZDDESYS_ITEM_FORMATS = "Formats"; +const char[] SZDDESYS_ITEM_HELP = "Help"; +const char[] SZDDE_ITEM_ITEMLIST = "TopicItemList"; +// #endif + +// typedef HDDEDATA CALLBACK FNCALLBACK(UINT wType, UINT wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2); +extern(Windows) alias HDDEDATA function(UINT wType, UINT wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2) PFNCALLBACK; + +const HDDEDATA CBR_BLOCK = cast(HDDEDATA)-1; + +extern(Windows) export UINT DdeInitializeA( LPDWORD pidInst, PFNCALLBACK pfnCallback, + DWORD afCmd, DWORD ulRes); +extern(Windows) export UINT DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback, + DWORD afCmd, DWORD ulRes); +// #ifdef UNICODE +// #... +// #else +alias DdeInitializeA DdeInitialize; +// #endif // !UNICODE + +enum : uint { CBF_FAIL_SELFCONNECTIONS = 0x00001000 } +enum : uint { CBF_FAIL_CONNECTIONS = 0x00002000 } +enum : uint { CBF_FAIL_ADVISES = 0x00004000 } +enum : uint { CBF_FAIL_EXECUTES = 0x00008000 } +enum : uint { CBF_FAIL_POKES = 0x00010000 } +enum : uint { CBF_FAIL_REQUESTS = 0x00020000 } +enum : uint { CBF_FAIL_ALLSVRXACTIONS = 0x0003f000 } + +enum : uint { CBF_SKIP_CONNECT_CONFIRMS = 0x00040000 } +enum : uint { CBF_SKIP_REGISTRATIONS = 0x00080000 } +enum : uint { CBF_SKIP_UNREGISTRATIONS = 0x00100000 } +enum : uint { CBF_SKIP_DISCONNECTS = 0x00200000 } +enum : uint { CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000 } + +enum : uint { APPCMD_CLIENTONLY = 0x00000010 } +enum : uint { APPCMD_FILTERINITS = 0x00000020 } +enum : uint { APPCMD_MASK = 0x00000FF0 } + +enum : uint { APPCLASS_STANDARD = 0x00000000 } +enum : uint { APPCLASS_MASK = 0x0000000F } + +extern(Windows) export BOOL DdeUninitialize( DWORD idInst); + +extern(Windows) export HCONVLIST DdeConnectList( DWORD idInst, HSZ hszService, HSZ hszTopic, + HCONVLIST hConvList, PCONVCONTEXT pCC); +extern(Windows) export HCONV DdeQueryNextServer( HCONVLIST hConvList, HCONV hConvPrev); +extern(Windows) export BOOL DdeDisconnectList( HCONVLIST hConvList); + +extern(Windows) export HCONV DdeConnect( DWORD idInst, HSZ hszService, HSZ hszTopic, + PCONVCONTEXT pCC); +extern(Windows) export BOOL DdeDisconnect( HCONV hConv); +extern(Windows) export HCONV DdeReconnect( HCONV hConv); +extern(Windows) export UINT DdeQueryConvInfo( HCONV hConv, DWORD idTransaction, PCONVINFO pConvInfo); +extern(Windows) export BOOL DdeSetUserHandle( HCONV hConv, DWORD id, DWORD_PTR hUser); +extern(Windows) export BOOL DdeAbandonTransaction( DWORD idInst, HCONV hConv, DWORD idTransaction); + +extern(Windows) export BOOL DdePostAdvise( DWORD idInst, HSZ hszTopic, HSZ hszItem); +extern(Windows) export BOOL DdeEnableCallback( DWORD idInst, HCONV hConv, UINT wCmd); +extern(Windows) export BOOL DdeImpersonateClient( HCONV hConv); + +enum : uint { EC_ENABLEALL = 0 } +alias ST_BLOCKNEXT EC_ENABLEONE; +alias ST_BLOCKED EC_DISABLE; +enum : uint { EC_QUERYWAITING = 2 } + +extern(Windows) export HDDEDATA DdeNameService( DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd); + +enum : uint { DNS_REGISTER = 0x0001 } +enum : uint { DNS_UNREGISTER = 0x0002 } +enum : uint { DNS_FILTERON = 0x0004 } +enum : uint { DNS_FILTEROFF = 0x0008 } + +extern(Windows) export HDDEDATA DdeClientTransaction( LPBYTE pData, DWORD cbData, + HCONV hConv, HSZ hszItem, UINT wFmt, UINT wType, + DWORD dwTimeout, LPDWORD pdwResult); + +extern(Windows) export HDDEDATA DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb, + DWORD cbOff, HSZ hszItem, UINT wFmt, UINT afCmd); +extern(Windows) export HDDEDATA DdeAddData( HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWORD cbOff); +extern(Windows) export DWORD DdeGetData( HDDEDATA hData, LPBYTE pDst, DWORD cbMax, DWORD cbOff); +extern(Windows) export LPBYTE DdeAccessData( HDDEDATA hData, LPDWORD pcbDataSize); +extern(Windows) export BOOL DdeUnaccessData( HDDEDATA hData); +extern(Windows) export BOOL DdeFreeDataHandle( HDDEDATA hData); + +enum : uint { HDATA_APPOWNED = 0x0001 } + +extern(Windows) export UINT DdeGetLastError( DWORD idInst); + +enum : uint { DMLERR_NO_ERROR = 0 } + +enum : uint { DMLERR_FIRST = 0x4000 } + +enum : uint { DMLERR_ADVACKTIMEOUT = 0x4000 } +enum : uint { DMLERR_BUSY = 0x4001 } +enum : uint { DMLERR_DATAACKTIMEOUT = 0x4002 } +enum : uint { DMLERR_DLL_NOT_INITIALIZED = 0x4003 } +enum : uint { DMLERR_DLL_USAGE = 0x4004 } +enum : uint { DMLERR_EXECACKTIMEOUT = 0x4005 } +enum : uint { DMLERR_INVALIDPARAMETER = 0x4006 } +enum : uint { DMLERR_LOW_MEMORY = 0x4007 } +enum : uint { DMLERR_MEMORY_ERROR = 0x4008 } +enum : uint { DMLERR_NOTPROCESSED = 0x4009 } +enum : uint { DMLERR_NO_CONV_ESTABLISHED = 0x400a } +enum : uint { DMLERR_POKEACKTIMEOUT = 0x400b } +enum : uint { DMLERR_POSTMSG_FAILED = 0x400c } +enum : uint { DMLERR_REENTRANCY = 0x400d } +enum : uint { DMLERR_SERVER_DIED = 0x400e } +enum : uint { DMLERR_SYS_ERROR = 0x400f } +enum : uint { DMLERR_UNADVACKTIMEOUT = 0x4010 } +enum : uint { DMLERR_UNFOUND_QUEUE_ID = 0x4011 } + +enum : uint { DMLERR_LAST = 0x4011 } + +extern(Windows) export HSZ DdeCreateStringHandleA( DWORD idInst, LPCSTR psz, int iCodePage); +extern(Windows) export HSZ DdeCreateStringHandleW( DWORD idInst, LPCWSTR psz, int iCodePage); +// #ifdef UNICODE +// #... +// #else +alias DdeCreateStringHandleA DdeCreateStringHandle; +// #endif // !UNICODE +extern(Windows) export DWORD DdeQueryStringA( DWORD idInst, HSZ hsz, LPSTR psz, DWORD cchMax, int iCodePage); +extern(Windows) export DWORD DdeQueryStringW( DWORD idInst, HSZ hsz, LPWSTR psz, DWORD cchMax, int iCodePage); +// #ifdef UNICODE +// #... +// #else +alias DdeQueryStringA DdeQueryString; +// #endif // !UNICODE +extern(Windows) export BOOL DdeFreeStringHandle( DWORD idInst, HSZ hsz); +extern(Windows) export BOOL DdeKeepStringHandle( DWORD idInst, HSZ hsz); +extern(Windows) export int DdeCmpStringHandles( HSZ hsz1, HSZ hsz2); + +// #ifndef NODDEMLSPY + +struct tagDDEML_MSG_HOOK_DATA { + UINT_PTR uiLo; + UINT_PTR uiHi; + DWORD cbData; + DWORD Data[8]; +} +alias tagDDEML_MSG_HOOK_DATA DDEML_MSG_HOOK_DATA; +alias tagDDEML_MSG_HOOK_DATA* PDDEML_MSG_HOOK_DATA; + +struct tagMONMSGSTRUCT { + UINT cb; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; +} +alias tagMONMSGSTRUCT MONMSGSTRUCT; +alias tagMONMSGSTRUCT* PMONMSGSTRUCT; + +struct tagMONCBSTRUCT { + UINT cb; + 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 Data[8]; +} +alias tagMONCBSTRUCT MONCBSTRUCT; +alias tagMONCBSTRUCT* PMONCBSTRUCT; + +struct tagMONHSZSTRUCTA { + UINT cb; + BOOL fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + CHAR str[1]; +} +alias tagMONHSZSTRUCTA MONHSZSTRUCTA; +alias tagMONHSZSTRUCTA* PMONHSZSTRUCTA; + +struct tagMONHSZSTRUCTW { + UINT cb; + BOOL fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + WCHAR str[1]; +} +alias tagMONHSZSTRUCTW MONHSZSTRUCTW; +alias tagMONHSZSTRUCTW* PMONHSZSTRUCTW; + +// #ifdef UNICODE +// ... +// #else +alias MONHSZSTRUCTA MONHSZSTRUCT; +alias PMONHSZSTRUCTA PMONHSZSTRUCT; +// #endif // UNICODE + +enum : uint { MH_CREATE = 1 } +enum : uint { MH_KEEP = 2 } +enum : uint { MH_DELETE = 3 } +enum : uint { MH_CLEANUP = 4 } + +struct tagMONERRSTRUCT { + UINT cb; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; +} +alias tagMONERRSTRUCT MONERRSTRUCT; +alias tagMONERRSTRUCT* PMONERRSTRUCT; + +struct tagMONLINKSTRUCT { + UINT cb; + DWORD dwTime; + HANDLE hTask; + BOOL fEstablished; + BOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + BOOL fServer; + HCONV hConvServer; + HCONV hConvClient; +} +alias tagMONLINKSTRUCT MONLINKSTRUCT; +alias tagMONLINKSTRUCT* PMONLINKSTRUCT; + +struct tagMONCONVSTRUCT { + UINT cb; + BOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; +} +alias tagMONCONVSTRUCT MONCONVSTRUCT; +alias tagMONCONVSTRUCT* PMONCONVSTRUCT; + +enum : uint { MAX_MONITORS = 4 } +enum : uint { APPCLASS_MONITOR = 0x00000001 } +enum : uint { XTYP_MONITOR = 0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK } + +enum : uint { MF_HSZ_INFO = 0x01000000 } +enum : uint { MF_SENDMSGS = 0x02000000 } +enum : uint { MF_POSTMSGS = 0x04000000 } +enum : uint { MF_CALLBACKS = 0x08000000 } +enum : uint { MF_ERRORS = 0x10000000 } +enum : uint { MF_LINKS = 0x20000000 } +enum : uint { MF_CONV = 0x40000000 } + +enum : uint { MF_MASK = 0xFF000000 } +// #endif /* NODDEMLSPY */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #endif /* _INC_DDEMLH */ + ADDED src/win32/ansi/dlgs.d Index: src/win32/ansi/dlgs.d ================================================================== --- src/win32/ansi/dlgs.d +++ src/win32/ansi/dlgs.d @@ -0,0 +1,216 @@ +module win32.ansi.dlgs; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.windef; + +// #ifndef _DLGSH_INCLUDED_ +// #define _DLGSH_INCLUDED_ + +enum : uint { ctlFirst = 0x0400 } +enum : uint { ctlLast = 0x04ff } + +enum : uint { psh1 = 0x0400 } +enum : uint { psh2 = 0x0401 } +enum : uint { psh3 = 0x0402 } +enum : uint { psh4 = 0x0403 } +enum : uint { psh5 = 0x0404 } +enum : uint { psh6 = 0x0405 } +enum : uint { psh7 = 0x0406 } +enum : uint { psh8 = 0x0407 } +enum : uint { psh9 = 0x0408 } +enum : uint { psh10 = 0x0409 } +enum : uint { psh11 = 0x040a } +enum : uint { psh12 = 0x040b } +enum : uint { psh13 = 0x040c } +enum : uint { psh14 = 0x040d } +enum : uint { psh15 = 0x040e } +alias psh15 pshHelp; +enum : uint { psh16 = 0x040f } + +enum : uint { chx1 = 0x0410 } +enum : uint { chx2 = 0x0411 } +enum : uint { chx3 = 0x0412 } +enum : uint { chx4 = 0x0413 } +enum : uint { chx5 = 0x0414 } +enum : uint { chx6 = 0x0415 } +enum : uint { chx7 = 0x0416 } +enum : uint { chx8 = 0x0417 } +enum : uint { chx9 = 0x0418 } +enum : uint { chx10 = 0x0419 } +enum : uint { chx11 = 0x041a } +enum : uint { chx12 = 0x041b } +enum : uint { chx13 = 0x041c } +enum : uint { chx14 = 0x041d } +enum : uint { chx15 = 0x041e } +enum : uint { chx16 = 0x041f } + +enum : uint { rad1 = 0x0420 } +enum : uint { rad2 = 0x0421 } +enum : uint { rad3 = 0x0422 } +enum : uint { rad4 = 0x0423 } +enum : uint { rad5 = 0x0424 } +enum : uint { rad6 = 0x0425 } +enum : uint { rad7 = 0x0426 } +enum : uint { rad8 = 0x0427 } +enum : uint { rad9 = 0x0428 } +enum : uint { rad10 = 0x0429 } +enum : uint { rad11 = 0x042a } +enum : uint { rad12 = 0x042b } +enum : uint { rad13 = 0x042c } +enum : uint { rad14 = 0x042d } +enum : uint { rad15 = 0x042e } +enum : uint { rad16 = 0x042f } + +enum : uint { grp1 = 0x0430 } +enum : uint { grp2 = 0x0431 } +enum : uint { grp3 = 0x0432 } +enum : uint { grp4 = 0x0433 } +enum : uint { frm1 = 0x0434 } +enum : uint { frm2 = 0x0435 } +enum : uint { frm3 = 0x0436 } +enum : uint { frm4 = 0x0437 } +enum : uint { rct1 = 0x0438 } +enum : uint { rct2 = 0x0439 } +enum : uint { rct3 = 0x043a } +enum : uint { rct4 = 0x043b } +enum : uint { ico1 = 0x043c } +enum : uint { ico2 = 0x043d } +enum : uint { ico3 = 0x043e } +enum : uint { ico4 = 0x043f } + +enum : uint { stc1 = 0x0440 } +enum : uint { stc2 = 0x0441 } +enum : uint { stc3 = 0x0442 } +enum : uint { stc4 = 0x0443 } +enum : uint { stc5 = 0x0444 } +enum : uint { stc6 = 0x0445 } +enum : uint { stc7 = 0x0446 } +enum : uint { stc8 = 0x0447 } +enum : uint { stc9 = 0x0448 } +enum : uint { stc10 = 0x0449 } +enum : uint { stc11 = 0x044a } +enum : uint { stc12 = 0x044b } +enum : uint { stc13 = 0x044c } +enum : uint { stc14 = 0x044d } +enum : uint { stc15 = 0x044e } +enum : uint { stc16 = 0x044f } +enum : uint { stc17 = 0x0450 } +enum : uint { stc18 = 0x0451 } +enum : uint { stc19 = 0x0452 } +enum : uint { stc20 = 0x0453 } +enum : uint { stc21 = 0x0454 } +enum : uint { stc22 = 0x0455 } +enum : uint { stc23 = 0x0456 } +enum : uint { stc24 = 0x0457 } +enum : uint { stc25 = 0x0458 } +enum : uint { stc26 = 0x0459 } +enum : uint { stc27 = 0x045a } +enum : uint { stc28 = 0x045b } +enum : uint { stc29 = 0x045c } +enum : uint { stc30 = 0x045d } +enum : uint { stc31 = 0x045e } +enum : uint { stc32 = 0x045f } + +enum : uint { lst1 = 0x0460 } +enum : uint { lst2 = 0x0461 } +enum : uint { lst3 = 0x0462 } +enum : uint { lst4 = 0x0463 } +enum : uint { lst5 = 0x0464 } +enum : uint { lst6 = 0x0465 } +enum : uint { lst7 = 0x0466 } +enum : uint { lst8 = 0x0467 } +enum : uint { lst9 = 0x0468 } +enum : uint { lst10 = 0x0469 } +enum : uint { lst11 = 0x046a } +enum : uint { lst12 = 0x046b } +enum : uint { lst13 = 0x046c } +enum : uint { lst14 = 0x046d } +enum : uint { lst15 = 0x046e } +enum : uint { lst16 = 0x046f } + +enum : uint { cmb1 = 0x0470 } +enum : uint { cmb2 = 0x0471 } +enum : uint { cmb3 = 0x0472 } +enum : uint { cmb4 = 0x0473 } +enum : uint { cmb5 = 0x0474 } +enum : uint { cmb6 = 0x0475 } +enum : uint { cmb7 = 0x0476 } +enum : uint { cmb8 = 0x0477 } +enum : uint { cmb9 = 0x0478 } +enum : uint { cmb10 = 0x0479 } +enum : uint { cmb11 = 0x047a } +enum : uint { cmb12 = 0x047b } +enum : uint { cmb13 = 0x047c } +enum : uint { cmb14 = 0x047d } +enum : uint { cmb15 = 0x047e } +enum : uint { cmb16 = 0x047f } + +enum : uint { edt1 = 0x0480 } +enum : uint { edt2 = 0x0481 } +enum : uint { edt3 = 0x0482 } +enum : uint { edt4 = 0x0483 } +enum : uint { edt5 = 0x0484 } +enum : uint { edt6 = 0x0485 } +enum : uint { edt7 = 0x0486 } +enum : uint { edt8 = 0x0487 } +enum : uint { edt9 = 0x0488 } +enum : uint { edt10 = 0x0489 } +enum : uint { edt11 = 0x048a } +enum : uint { edt12 = 0x048b } +enum : uint { edt13 = 0x048c } +enum : uint { edt14 = 0x048d } +enum : uint { edt15 = 0x048e } +enum : uint { edt16 = 0x048f } + +enum : uint { scr1 = 0x0490 } +enum : uint { scr2 = 0x0491 } +enum : uint { scr3 = 0x0492 } +enum : uint { scr4 = 0x0493 } +enum : uint { scr5 = 0x0494 } +enum : uint { scr6 = 0x0495 } +enum : uint { scr7 = 0x0496 } +enum : uint { scr8 = 0x0497 } + +enum : uint { ctl1 = 0x04A0 } + +// #ifdef UNIX + +// #... +// #... + +// #... +// #... +// #... +// #endif + +enum : uint { FILEOPENORD = 1536 } +enum : uint { MULTIFILEOPENORD = 1537 } +enum : uint { PRINTDLGORD = 1538 } +enum : uint { PRNSETUPDLGORD = 1539 } +enum : uint { FINDDLGORD = 1540 } +enum : uint { REPLACEDLGORD = 1541 } +enum : uint { FONTDLGORD = 1542 } +enum : uint { FORMATDLGORD31 = 1543 } +enum : uint { FORMATDLGORD30 = 1544 } +enum : uint { RUNDLGORD = 1545 } + +// #if (WINVER >= 0x400) +enum : uint { PAGESETUPDLGORD = 1546 } +enum : uint { NEWFILEOPENORD = 1547 } +enum : uint { PRINTDLGEXORD = 1549 } +enum : uint { PAGESETUPDLGORDMOTIF = 1550 } +enum : uint { COLORMGMTDLGORD = 1551 } +enum : uint { NEWFILEOPENV2ORD = 1552 } +// #endif /* WINVER >= 0x400) */ + +struct tagCRGB { + BYTE bRed; + BYTE bGreen; + BYTE bBlue; + BYTE bExtra; +} +alias tagCRGB CRGB; + +// #endif // _DLGSH_INCLUDED_ ADDED src/win32/ansi/guiddef.d Index: src/win32/ansi/guiddef.d ================================================================== --- src/win32/ansi/guiddef.d +++ src/win32/ansi/guiddef.d @@ -0,0 +1,30 @@ +module win32.ansi.guiddef; +import win32.ansi.windef; + +// Handwriting... + +align(1) struct GUID +{ + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE Data4[8]; +} + +alias GUID CLSID; +alias GUID IID; +alias GUID* REFGUID; +alias GUID* REFCLSID; +alias GUID* REFIID; +alias CLSID* LPCLSID; +alias IID* LPIID; + +bit IsEqualGUID(in GUID rguid1, in GUID rguid2) +{ + return + (cast(uint*)&rguid1)[0] == (cast(uint*)&rguid2)[0] && + (cast(uint*)&rguid1)[1] == (cast(uint*)&rguid2)[1] && + (cast(uint*)&rguid1)[2] == (cast(uint*)&rguid2)[2] && + (cast(uint*)&rguid1)[3] == (cast(uint*)&rguid2)[3]; +} + ADDED src/win32/ansi/imm.d Index: src/win32/ansi/imm.d ================================================================== --- src/win32/ansi/imm.d +++ src/win32/ansi/imm.d @@ -0,0 +1,686 @@ +module win32.ansi.imm; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winuser; + +// #ifndef _IMM_ +// #define _IMM_ + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef _IMM_SDK_DEFINED_ +// #define _IMM_SDK_DEFINED_ + +// #if (WINVER >= 0x040A) +alias void* HIMC; +alias void* HIMCC; +// #else +// ... +// #endif /* WINVER >= 0x040A */ + +alias HKL* LPHKL; +alias UINT* LPUINT; + +struct tagCOMPOSITIONFORM { + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias tagCOMPOSITIONFORM COMPOSITIONFORM; +alias tagCOMPOSITIONFORM* PCOMPOSITIONFORM; +alias tagCOMPOSITIONFORM* NPCOMPOSITIONFORM; +alias tagCOMPOSITIONFORM* LPCOMPOSITIONFORM; + +struct tagCANDIDATEFORM { + DWORD dwIndex; + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias tagCANDIDATEFORM CANDIDATEFORM; +alias tagCANDIDATEFORM* PCANDIDATEFORM; +alias tagCANDIDATEFORM* NPCANDIDATEFORM; +alias tagCANDIDATEFORM* LPCANDIDATEFORM; + +struct tagCANDIDATELIST { + DWORD dwSize; + DWORD dwStyle; + DWORD dwCount; + DWORD dwSelection; + DWORD dwPageStart; + DWORD dwPageSize; + DWORD dwOffset[1]; +} +alias tagCANDIDATELIST CANDIDATELIST; +alias tagCANDIDATELIST* PCANDIDATELIST; +alias tagCANDIDATELIST* NPCANDIDATELIST; +alias tagCANDIDATELIST* LPCANDIDATELIST; + +struct tagREGISTERWORDA { + LPSTR lpReading; + LPSTR lpWord; +} +alias tagREGISTERWORDA REGISTERWORDA; +alias tagREGISTERWORDA* PREGISTERWORDA; +alias tagREGISTERWORDA* NPREGISTERWORDA; +alias tagREGISTERWORDA* LPREGISTERWORDA; + +struct tagREGISTERWORDW { + LPWSTR lpReading; + LPWSTR lpWord; +} +alias tagREGISTERWORDW REGISTERWORDW; +alias tagREGISTERWORDW* PREGISTERWORDW; +alias tagREGISTERWORDW* NPREGISTERWORDW; +alias tagREGISTERWORDW* LPREGISTERWORDW; + +// #ifdef UNICODE +// ... +// #else +alias REGISTERWORDA REGISTERWORD; +alias PREGISTERWORDA PREGISTERWORD; +alias NPREGISTERWORDA NPREGISTERWORD; +alias LPREGISTERWORDA LPREGISTERWORD; +// #endif // UNICODE + +// #if (WINVER >= 0x040A) + +struct tagRECONVERTSTRING { + DWORD dwSize; + DWORD dwVersion; + DWORD dwStrLen; + DWORD dwStrOffset; + DWORD dwCompStrLen; + DWORD dwCompStrOffset; + DWORD dwTargetStrLen; + DWORD dwTargetStrOffset; +} +alias tagRECONVERTSTRING RECONVERTSTRING; +alias tagRECONVERTSTRING* PRECONVERTSTRING; +alias tagRECONVERTSTRING* NPRECONVERTSTRING; +alias tagRECONVERTSTRING* LPRECONVERTSTRING; + +// #endif /* WINVER >= 0x040A */ + +enum : uint { STYLE_DESCRIPTION_SIZE = 32 } + +struct tagSTYLEBUFA { + DWORD dwStyle; + CHAR szDescription[STYLE_DESCRIPTION_SIZE]; +} +alias tagSTYLEBUFA STYLEBUFA; +alias tagSTYLEBUFA* PSTYLEBUFA; +alias tagSTYLEBUFA* NPSTYLEBUFA; +alias tagSTYLEBUFA* LPSTYLEBUFA; + +struct tagSTYLEBUFW { + DWORD dwStyle; + WCHAR szDescription[STYLE_DESCRIPTION_SIZE]; +} +alias tagSTYLEBUFW STYLEBUFW; +alias tagSTYLEBUFW* PSTYLEBUFW; +alias tagSTYLEBUFW* NPSTYLEBUFW; +alias tagSTYLEBUFW* LPSTYLEBUFW; + +// #ifdef UNICODE +// ... +// #else +alias STYLEBUFA STYLEBUF; +alias PSTYLEBUFA PSTYLEBUF; +alias NPSTYLEBUFA NPSTYLEBUF; +alias LPSTYLEBUFA LPSTYLEBUF; +// #endif // UNICODE + +// #if (WINVER >= 0x040A) + +enum : uint { IMEMENUITEM_STRING_SIZE = 80 } + +struct tagIMEMENUITEMINFOA { + UINT cbSize; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + CHAR szString[IMEMENUITEM_STRING_SIZE]; + HBITMAP hbmpItem; +} +alias tagIMEMENUITEMINFOA IMEMENUITEMINFOA; +alias tagIMEMENUITEMINFOA* PIMEMENUITEMINFOA; +alias tagIMEMENUITEMINFOA* NPIMEMENUITEMINFOA; +alias tagIMEMENUITEMINFOA* LPIMEMENUITEMINFOA; + +struct tagIMEMENUITEMINFOW { + UINT cbSize; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + WCHAR szString[IMEMENUITEM_STRING_SIZE]; + HBITMAP hbmpItem; +} +alias tagIMEMENUITEMINFOW IMEMENUITEMINFOW; +alias tagIMEMENUITEMINFOW* PIMEMENUITEMINFOW; +alias tagIMEMENUITEMINFOW* NPIMEMENUITEMINFOW; +alias tagIMEMENUITEMINFOW* LPIMEMENUITEMINFOW; + +// #ifdef UNICODE +// ... +// #else +alias IMEMENUITEMINFOA IMEMENUITEMINFO; +alias PIMEMENUITEMINFOA PIMEMENUITEMINFO; +alias NPIMEMENUITEMINFOA NPIMEMENUITEMINFO; +alias LPIMEMENUITEMINFOA LPIMEMENUITEMINFO; +// #endif // UNICODE + +struct tagIMECHARPOSITION { + DWORD dwSize; + DWORD dwCharPos; + POINT pt; + UINT cLineHeight; + RECT rcDocument; +} +alias tagIMECHARPOSITION IMECHARPOSITION; +alias tagIMECHARPOSITION* PIMECHARPOSITION; +alias tagIMECHARPOSITION* NPIMECHARPOSITION; +alias tagIMECHARPOSITION* LPIMECHARPOSITION; + +extern(Windows) alias BOOL function(HIMC, LPARAM) IMCENUMPROC; + +// #endif /* WINVER >= 0x040A */ + +extern(Windows) export HKL ImmInstallIMEA( LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText); +extern(Windows) export HKL ImmInstallIMEW( LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText); +// #ifdef UNICODE +// #... +// #else +alias ImmInstallIMEA ImmInstallIME; +// #endif // !UNICODE + +extern(Windows) export HWND ImmGetDefaultIMEWnd( HWND); + +extern(Windows) export UINT ImmGetDescriptionA( HKL, LPSTR, UINT uBufLen); +extern(Windows) export UINT ImmGetDescriptionW( HKL, LPWSTR, UINT uBufLen); +// #ifdef UNICODE +// #... +// #else +alias ImmGetDescriptionA ImmGetDescription; +// #endif // !UNICODE + +extern(Windows) export UINT ImmGetIMEFileNameA( HKL, LPSTR, UINT uBufLen); +extern(Windows) export UINT ImmGetIMEFileNameW( HKL, LPWSTR, UINT uBufLen); +// #ifdef UNICODE +// #... +// #else +alias ImmGetIMEFileNameA ImmGetIMEFileName; +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetProperty( HKL, DWORD); + +extern(Windows) export BOOL ImmIsIME( HKL); + +extern(Windows) export BOOL ImmSimulateHotKey( HWND, DWORD); + +extern(Windows) export HIMC ImmCreateContext(); +extern(Windows) export BOOL ImmDestroyContext( HIMC); +extern(Windows) export HIMC ImmGetContext( HWND); +extern(Windows) export BOOL ImmReleaseContext( HWND, HIMC); +extern(Windows) export HIMC ImmAssociateContext( HWND, HIMC); +// #if (WINVER >= 0x040A) +extern(Windows) export BOOL ImmAssociateContextEx( HWND, HIMC, DWORD); +// #endif /* WINVER >= 0x040A */ + +extern(Windows) export LONG ImmGetCompositionStringA( HIMC, DWORD, LPVOID, DWORD); +extern(Windows) export LONG ImmGetCompositionStringW( HIMC, DWORD, LPVOID, DWORD); +// #ifdef UNICODE +// #... +// #else +alias ImmGetCompositionStringA ImmGetCompositionString; +// #endif // !UNICODE + +extern(Windows) export BOOL ImmSetCompositionStringA( HIMC, DWORD dwIndex, LPVOID lpComp, DWORD, LPVOID lpRead, DWORD); +extern(Windows) export BOOL ImmSetCompositionStringW( HIMC, DWORD dwIndex, LPVOID lpComp, DWORD, LPVOID lpRead, DWORD); +// #ifdef UNICODE +// #... +// #else +alias ImmSetCompositionStringA ImmSetCompositionString; +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetCandidateListCountA( HIMC, LPDWORD lpdwListCount); +extern(Windows) export DWORD ImmGetCandidateListCountW( HIMC, LPDWORD lpdwListCount); +// #ifdef UNICODE +// #... +// #else +alias ImmGetCandidateListCountA ImmGetCandidateListCount; +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetCandidateListA( HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen); +extern(Windows) export DWORD ImmGetCandidateListW( HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen); +// #ifdef UNICODE +// #... +// #else +alias ImmGetCandidateListA ImmGetCandidateList; +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetGuideLineA( HIMC, DWORD dwIndex, LPSTR, DWORD dwBufLen); +extern(Windows) export DWORD ImmGetGuideLineW( HIMC, DWORD dwIndex, LPWSTR, DWORD dwBufLen); +// #ifdef UNICODE +// #... +// #else +alias ImmGetGuideLineA ImmGetGuideLine; +// #endif // !UNICODE + +extern(Windows) export BOOL ImmGetConversionStatus( HIMC, LPDWORD, LPDWORD); +extern(Windows) export BOOL ImmSetConversionStatus( HIMC, DWORD, DWORD); +extern(Windows) export BOOL ImmGetOpenStatus( HIMC); +extern(Windows) export BOOL ImmSetOpenStatus( HIMC, BOOL); + +// #if defined(_WINGDI_) && !defined(NOGDI) +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE +// #endif // defined(_WINGDI_) && !defined(NOGDI) + +extern(Windows) export BOOL ImmConfigureIMEA( HKL, HWND, DWORD, LPVOID); +extern(Windows) export BOOL ImmConfigureIMEW( HKL, HWND, DWORD, LPVOID); +// #ifdef UNICODE +// #... +// #else +alias ImmConfigureIMEA ImmConfigureIME; +// #endif // !UNICODE + +extern(Windows) export LRESULT ImmEscapeA( HKL, HIMC, UINT, LPVOID); +extern(Windows) export LRESULT ImmEscapeW( HKL, HIMC, UINT, LPVOID); +// #ifdef UNICODE +// #... +// #else +alias ImmEscapeA ImmEscape; +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetConversionListA( HKL, HIMC, LPCSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag); +extern(Windows) export DWORD ImmGetConversionListW( HKL, HIMC, LPCWSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag); +// #ifdef UNICODE +// #... +// #else +alias ImmGetConversionListA ImmGetConversionList; +// #endif // !UNICODE + +extern(Windows) export BOOL ImmNotifyIME( HIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue); + +extern(Windows) export BOOL ImmGetStatusWindowPos( HIMC, LPPOINT); +extern(Windows) export BOOL ImmSetStatusWindowPos( HIMC, LPPOINT); +extern(Windows) export BOOL ImmGetCompositionWindow( HIMC, LPCOMPOSITIONFORM); +extern(Windows) export BOOL ImmSetCompositionWindow( HIMC, LPCOMPOSITIONFORM); +extern(Windows) export BOOL ImmGetCandidateWindow( HIMC, DWORD, LPCANDIDATEFORM); +extern(Windows) export BOOL ImmSetCandidateWindow( HIMC, LPCANDIDATEFORM); + +extern(Windows) export BOOL ImmIsUIMessageA( HWND, UINT, WPARAM, LPARAM); +extern(Windows) export BOOL ImmIsUIMessageW( HWND, UINT, WPARAM, LPARAM); +// #ifdef UNICODE +// #... +// #else +alias ImmIsUIMessageA ImmIsUIMessage; +// #endif // !UNICODE + +extern(Windows) export UINT ImmGetVirtualKey( HWND); + +extern(Windows) alias int function(LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; +extern(Windows) alias int function(LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; +// #ifdef UNICODE +// #... +// #else +alias REGISTERWORDENUMPROCA REGISTERWORDENUMPROC; +// #endif // !UNICODE + +extern(Windows) export BOOL ImmRegisterWordA( HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister); +extern(Windows) export BOOL ImmRegisterWordW( HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister); +// #ifdef UNICODE +// #... +// #else +alias ImmRegisterWordA ImmRegisterWord; +// #endif // !UNICODE + +extern(Windows) export BOOL ImmUnregisterWordA( HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszUnregister); +extern(Windows) export BOOL ImmUnregisterWordW( HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszUnregister); +// #ifdef UNICODE +// #... +// #else +alias ImmUnregisterWordA ImmUnregisterWord; +// #endif // !UNICODE + +extern(Windows) export UINT ImmGetRegisterWordStyleA( HKL, UINT nItem, LPSTYLEBUFA); +extern(Windows) export UINT ImmGetRegisterWordStyleW( HKL, UINT nItem, LPSTYLEBUFW); +// #ifdef UNICODE +// #... +// #else +alias ImmGetRegisterWordStyleA ImmGetRegisterWordStyle; +// #endif // !UNICODE + +extern(Windows) export UINT ImmEnumRegisterWordA( HKL, REGISTERWORDENUMPROCA, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister, LPVOID); +extern(Windows) export UINT ImmEnumRegisterWordW( HKL, REGISTERWORDENUMPROCW, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister, LPVOID); +// #ifdef UNICODE +// #... +// #else +alias ImmEnumRegisterWordA ImmEnumRegisterWord; +// #endif // !UNICODE + +// #if (WINVER >= 0x040A) +extern(Windows) export BOOL ImmDisableIME( DWORD); +extern(Windows) export BOOL ImmEnumInputContext(DWORD idThread, IMCENUMPROC lpfn, LPARAM lParam); +extern(Windows) export DWORD ImmGetImeMenuItemsA( HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD); +extern(Windows) export DWORD ImmGetImeMenuItemsW( HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); +// #ifdef UNICODE +// #... +// #else +alias ImmGetImeMenuItemsA ImmGetImeMenuItems; +// #endif // !UNICODE +// #endif /* WINVER >= 0x040A */ + +enum : uint { IMC_GETCANDIDATEPOS = 0x0007 } +enum : uint { IMC_SETCANDIDATEPOS = 0x0008 } +enum : uint { IMC_GETCOMPOSITIONFONT = 0x0009 } +enum : uint { IMC_SETCOMPOSITIONFONT = 0x000A } +enum : uint { IMC_GETCOMPOSITIONWINDOW = 0x000B } +enum : uint { IMC_SETCOMPOSITIONWINDOW = 0x000C } +enum : uint { IMC_GETSTATUSWINDOWPOS = 0x000F } +enum : uint { IMC_SETSTATUSWINDOWPOS = 0x0010 } +enum : uint { IMC_CLOSESTATUSWINDOW = 0x0021 } +enum : uint { IMC_OPENSTATUSWINDOW = 0x0022 } + +enum : uint { NI_OPENCANDIDATE = 0x0010 } +enum : uint { NI_CLOSECANDIDATE = 0x0011 } +enum : uint { NI_SELECTCANDIDATESTR = 0x0012 } +enum : uint { NI_CHANGECANDIDATELIST = 0x0013 } +enum : uint { NI_FINALIZECONVERSIONRESULT = 0x0014 } +enum : uint { NI_COMPOSITIONSTR = 0x0015 } +enum : uint { NI_SETCANDIDATE_PAGESTART = 0x0016 } +enum : uint { NI_SETCANDIDATE_PAGESIZE = 0x0017 } +enum : uint { NI_IMEMENUSELECTED = 0x0018 } + +enum : uint { ISC_SHOWUICANDIDATEWINDOW = 0x00000001 } +enum : uint { ISC_SHOWUICOMPOSITIONWINDOW = 0x80000000 } +enum : uint { ISC_SHOWUIGUIDELINE = 0x40000000 } +enum : uint { ISC_SHOWUIALLCANDIDATEWINDOW = 0x0000000F } +enum : uint { ISC_SHOWUIALL = 0xC000000F } + +enum : uint { CPS_COMPLETE = 0x0001 } +enum : uint { CPS_CONVERT = 0x0002 } +enum : uint { CPS_REVERT = 0x0003 } +enum : uint { CPS_CANCEL = 0x0004 } + +enum : uint { MOD_ALT = 0x0001 } +enum : uint { MOD_CONTROL = 0x0002 } +enum : uint { MOD_SHIFT = 0x0004 } + +enum : uint { MOD_LEFT = 0x8000 } +enum : uint { MOD_RIGHT = 0x4000 } + +enum : uint { MOD_ON_KEYUP = 0x0800 } +enum : uint { MOD_IGNORE_ALL_MODIFIER = 0x0400 } + +enum : uint { IME_CHOTKEY_IME_NONIME_TOGGLE = 0x10 } +enum : uint { IME_CHOTKEY_SHAPE_TOGGLE = 0x11 } +enum : uint { IME_CHOTKEY_SYMBOL_TOGGLE = 0x12 } + +enum : uint { IME_JHOTKEY_CLOSE_OPEN = 0x30 } + +enum : uint { IME_KHOTKEY_SHAPE_TOGGLE = 0x50 } +enum : uint { IME_KHOTKEY_HANJACONVERT = 0x51 } +enum : uint { IME_KHOTKEY_ENGLISH = 0x52 } + +enum : uint { IME_THOTKEY_IME_NONIME_TOGGLE = 0x70 } +enum : uint { IME_THOTKEY_SHAPE_TOGGLE = 0x71 } +enum : uint { IME_THOTKEY_SYMBOL_TOGGLE = 0x72 } + +enum : uint { IME_HOTKEY_DSWITCH_FIRST = 0x100 } +enum : uint { IME_HOTKEY_DSWITCH_LAST = 0x11F } + +enum : uint { IME_HOTKEY_PRIVATE_FIRST = 0x200 } +enum : uint { IME_ITHOTKEY_RESEND_RESULTSTR = 0x200 } +enum : uint { IME_ITHOTKEY_PREVIOUS_COMPOSITION = 0x201 } +enum : uint { IME_ITHOTKEY_UISTYLE_TOGGLE = 0x202 } +enum : uint { IME_ITHOTKEY_RECONVERTSTRING = 0x203 } +enum : uint { IME_HOTKEY_PRIVATE_LAST = 0x21F } + +enum : uint { GCS_COMPREADSTR = 0x0001 } +enum : uint { GCS_COMPREADATTR = 0x0002 } +enum : uint { GCS_COMPREADCLAUSE = 0x0004 } +enum : uint { GCS_COMPSTR = 0x0008 } +enum : uint { GCS_COMPATTR = 0x0010 } +enum : uint { GCS_COMPCLAUSE = 0x0020 } +enum : uint { GCS_CURSORPOS = 0x0080 } +enum : uint { GCS_DELTASTART = 0x0100 } +enum : uint { GCS_RESULTREADSTR = 0x0200 } +enum : uint { GCS_RESULTREADCLAUSE = 0x0400 } +enum : uint { GCS_RESULTSTR = 0x0800 } +enum : uint { GCS_RESULTCLAUSE = 0x1000 } + +enum : uint { CS_INSERTCHAR = 0x2000 } +enum : uint { CS_NOMOVECARET = 0x4000 } + +enum : uint { IMEVER_0310 = 0x0003000A } +enum : uint { IMEVER_0400 = 0x00040000 } + +enum : uint { IME_PROP_AT_CARET = 0x00010000 } +enum : uint { IME_PROP_SPECIAL_UI = 0x00020000 } +enum : uint { IME_PROP_CANDLIST_START_FROM_1 = 0x00040000 } +enum : uint { IME_PROP_UNICODE = 0x00080000 } +enum : uint { IME_PROP_COMPLETE_ON_UNSELECT = 0x00100000 } + +enum : uint { UI_CAP_2700 = 0x00000001 } +enum : uint { UI_CAP_ROT90 = 0x00000002 } +enum : uint { UI_CAP_ROTANY = 0x00000004 } + +enum : uint { SCS_CAP_COMPSTR = 0x00000001 } +enum : uint { SCS_CAP_MAKEREAD = 0x00000002 } +enum : uint { SCS_CAP_SETRECONVERTSTRING = 0x00000004 } + +enum : uint { SELECT_CAP_CONVERSION = 0x00000001 } +enum : uint { SELECT_CAP_SENTENCE = 0x00000002 } + +enum : uint { GGL_LEVEL = 0x00000001 } +enum : uint { GGL_INDEX = 0x00000002 } +enum : uint { GGL_STRING = 0x00000003 } +enum : uint { GGL_PRIVATE = 0x00000004 } + +enum : uint { GL_LEVEL_NOGUIDELINE = 0x00000000 } +enum : uint { GL_LEVEL_FATAL = 0x00000001 } +enum : uint { GL_LEVEL_ERROR = 0x00000002 } +enum : uint { GL_LEVEL_WARNING = 0x00000003 } +enum : uint { GL_LEVEL_INFORMATION = 0x00000004 } + +enum : uint { GL_ID_UNKNOWN = 0x00000000 } +enum : uint { GL_ID_NOMODULE = 0x00000001 } +enum : uint { GL_ID_NODICTIONARY = 0x00000010 } +enum : uint { GL_ID_CANNOTSAVE = 0x00000011 } +enum : uint { GL_ID_NOCONVERT = 0x00000020 } +enum : uint { GL_ID_TYPINGERROR = 0x00000021 } +enum : uint { GL_ID_TOOMANYSTROKE = 0x00000022 } +enum : uint { GL_ID_READINGCONFLICT = 0x00000023 } +enum : uint { GL_ID_INPUTREADING = 0x00000024 } +enum : uint { GL_ID_INPUTRADICAL = 0x00000025 } +enum : uint { GL_ID_INPUTCODE = 0x00000026 } +enum : uint { GL_ID_INPUTSYMBOL = 0x00000027 } +enum : uint { GL_ID_CHOOSECANDIDATE = 0x00000028 } +enum : uint { GL_ID_REVERSECONVERSION = 0x00000029 } +enum : uint { GL_ID_PRIVATE_FIRST = 0x00008000 } +enum : uint { GL_ID_PRIVATE_LAST = 0x0000FFFF } + +enum : DWORD { IGP_GETIMEVERSION = cast(DWORD)-4 } +enum : uint { IGP_PROPERTY = 0x00000004 } +enum : uint { IGP_CONVERSION = 0x00000008 } +enum : uint { IGP_SENTENCE = 0x0000000c } +enum : uint { IGP_UI = 0x00000010 } +enum : uint { IGP_SETCOMPSTR = 0x00000014 } +enum : uint { IGP_SELECT = 0x00000018 } + +enum : uint { SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR } +enum : uint { SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR } +enum : uint { SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE } +enum : uint { SCS_SETRECONVERTSTRING = 0x00010000 } +enum : uint { SCS_QUERYRECONVERTSTRING = 0x00020000 } + +enum : uint { ATTR_INPUT = 0x00 } +enum : uint { ATTR_TARGET_CONVERTED = 0x01 } +enum : uint { ATTR_CONVERTED = 0x02 } +enum : uint { ATTR_TARGET_NOTCONVERTED = 0x03 } +enum : uint { ATTR_INPUT_ERROR = 0x04 } +enum : uint { ATTR_FIXEDCONVERTED = 0x05 } + +enum : uint { CFS_DEFAULT = 0x0000 } +enum : uint { CFS_RECT = 0x0001 } +enum : uint { CFS_POINT = 0x0002 } +enum : uint { CFS_FORCE_POSITION = 0x0020 } +enum : uint { CFS_CANDIDATEPOS = 0x0040 } +enum : uint { CFS_EXCLUDE = 0x0080 } + +enum : uint { GCL_CONVERSION = 0x0001 } +enum : uint { GCL_REVERSECONVERSION = 0x0002 } +enum : uint { GCL_REVERSE_LENGTH = 0x0003 } + +enum : uint { IME_CMODE_ALPHANUMERIC = 0x0000 } +enum : uint { IME_CMODE_NATIVE = 0x0001 } +alias IME_CMODE_NATIVE IME_CMODE_CHINESE; + +alias IME_CMODE_NATIVE IME_CMODE_HANGEUL; +alias IME_CMODE_NATIVE IME_CMODE_HANGUL; +alias IME_CMODE_NATIVE IME_CMODE_JAPANESE; +enum : uint { IME_CMODE_KATAKANA = 0x0002 } +enum : uint { IME_CMODE_LANGUAGE = 0x0003 } +enum : uint { IME_CMODE_FULLSHAPE = 0x0008 } +enum : uint { IME_CMODE_ROMAN = 0x0010 } +enum : uint { IME_CMODE_CHARCODE = 0x0020 } +enum : uint { IME_CMODE_HANJACONVERT = 0x0040 } +enum : uint { IME_CMODE_SOFTKBD = 0x0080 } +enum : uint { IME_CMODE_NOCONVERSION = 0x0100 } +enum : uint { IME_CMODE_EUDC = 0x0200 } +enum : uint { IME_CMODE_SYMBOL = 0x0400 } +enum : uint { IME_CMODE_FIXED = 0x0800 } + +enum : uint { IME_SMODE_NONE = 0x0000 } +enum : uint { IME_SMODE_PLAURALCLAUSE = 0x0001 } +enum : uint { IME_SMODE_SINGLECONVERT = 0x0002 } +enum : uint { IME_SMODE_AUTOMATIC = 0x0004 } +enum : uint { IME_SMODE_PHRASEPREDICT = 0x0008 } +enum : uint { IME_SMODE_CONVERSATION = 0x0010 } + +enum : uint { IME_CAND_UNKNOWN = 0x0000 } +enum : uint { IME_CAND_READ = 0x0001 } +enum : uint { IME_CAND_CODE = 0x0002 } +enum : uint { IME_CAND_MEANING = 0x0003 } +enum : uint { IME_CAND_RADICAL = 0x0004 } +enum : uint { IME_CAND_STROKE = 0x0005 } + +enum : uint { IMN_CLOSESTATUSWINDOW = 0x0001 } +enum : uint { IMN_OPENSTATUSWINDOW = 0x0002 } +enum : uint { IMN_CHANGECANDIDATE = 0x0003 } +enum : uint { IMN_CLOSECANDIDATE = 0x0004 } +enum : uint { IMN_OPENCANDIDATE = 0x0005 } +enum : uint { IMN_SETCONVERSIONMODE = 0x0006 } +enum : uint { IMN_SETSENTENCEMODE = 0x0007 } +enum : uint { IMN_SETOPENSTATUS = 0x0008 } +enum : uint { IMN_SETCANDIDATEPOS = 0x0009 } +enum : uint { IMN_SETCOMPOSITIONFONT = 0x000A } +enum : uint { IMN_SETCOMPOSITIONWINDOW = 0x000B } +enum : uint { IMN_SETSTATUSWINDOWPOS = 0x000C } +enum : uint { IMN_GUIDELINE = 0x000D } +enum : uint { IMN_PRIVATE = 0x000E } + +// #if (WINVER >= 0x040A) + +enum : uint { IMR_COMPOSITIONWINDOW = 0x0001 } +enum : uint { IMR_CANDIDATEWINDOW = 0x0002 } +enum : uint { IMR_COMPOSITIONFONT = 0x0003 } +enum : uint { IMR_RECONVERTSTRING = 0x0004 } +enum : uint { IMR_CONFIRMRECONVERTSTRING = 0x0005 } +enum : uint { IMR_QUERYCHARPOSITION = 0x0006 } +enum : uint { IMR_DOCUMENTFEED = 0x0007 } +// #endif /* WINVER >= 0x040A */ + +enum { IMM_ERROR_NODATA = -1 } +enum { IMM_ERROR_GENERAL = -2 } + +enum : uint { IME_CONFIG_GENERAL = 1 } +enum : uint { IME_CONFIG_REGISTERWORD = 2 } +enum : uint { IME_CONFIG_SELECTDICTIONARY = 3 } + +enum : uint { IME_ESC_QUERY_SUPPORT = 0x0003 } +enum : uint { IME_ESC_RESERVED_FIRST = 0x0004 } +enum : uint { IME_ESC_RESERVED_LAST = 0x07FF } +enum : uint { IME_ESC_PRIVATE_FIRST = 0x0800 } +enum : uint { IME_ESC_PRIVATE_LAST = 0x0FFF } + +enum : uint { IME_ESC_SEQUENCE_TO_INTERNAL = 0x1001 } +enum : uint { IME_ESC_GET_EUDC_DICTIONARY = 0x1003 } +enum : uint { IME_ESC_SET_EUDC_DICTIONARY = 0x1004 } +enum : uint { IME_ESC_MAX_KEY = 0x1005 } +enum : uint { IME_ESC_IME_NAME = 0x1006 } +enum : uint { IME_ESC_SYNC_HOTKEY = 0x1007 } +enum : uint { IME_ESC_HANJA_MODE = 0x1008 } +enum : uint { IME_ESC_AUTOMATA = 0x1009 } +enum : uint { IME_ESC_PRIVATE_HOTKEY = 0x100a } +enum : uint { IME_ESC_GETHELPFILENAME = 0x100b } + +enum : uint { IME_REGWORD_STYLE_EUDC = 0x00000001 } +enum : uint { IME_REGWORD_STYLE_USER_FIRST = 0x80000000 } +enum : uint { IME_REGWORD_STYLE_USER_LAST = 0xFFFFFFFF } + +// #if (WINVER >= 0x040A) + +enum : uint { IACE_CHILDREN = 0x0001 } +enum : uint { IACE_DEFAULT = 0x0010 } +enum : uint { IACE_IGNORENOCONTEXT = 0x0020 } + +enum : uint { IGIMIF_RIGHTMENU = 0x0001 } + +enum : uint { IGIMII_CMODE = 0x0001 } +enum : uint { IGIMII_SMODE = 0x0002 } +enum : uint { IGIMII_CONFIGURE = 0x0004 } +enum : uint { IGIMII_TOOLS = 0x0008 } +enum : uint { IGIMII_HELP = 0x0010 } +enum : uint { IGIMII_OTHER = 0x0020 } +enum : uint { IGIMII_INPUTTOOLS = 0x0040 } + +enum : uint { IMFT_RADIOCHECK = 0x00001 } +enum : uint { IMFT_SEPARATOR = 0x00002 } +enum : uint { IMFT_SUBMENU = 0x00004 } + +alias MFS_GRAYED IMFS_GRAYED; +alias MFS_DISABLED IMFS_DISABLED; +alias MFS_CHECKED IMFS_CHECKED; +alias MFS_HILITE IMFS_HILITE; +alias MFS_ENABLED IMFS_ENABLED; +alias MFS_UNCHECKED IMFS_UNCHECKED; +alias MFS_UNHILITE IMFS_UNHILITE; +alias MFS_DEFAULT IMFS_DEFAULT; + +// #endif /* WINVER >= 0x040A */ + +enum : uint { SOFTKEYBOARD_TYPE_T1 = 0x0001 } + +enum : uint { SOFTKEYBOARD_TYPE_C1 = 0x0002 } + +// #endif // _IMM_SDK_DEFINED_ + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _IMM_ ADDED src/win32/ansi/mmsystem.d Index: src/win32/ansi/mmsystem.d ================================================================== --- src/win32/ansi/mmsystem.d +++ src/win32/ansi/mmsystem.d @@ -0,0 +1,3667 @@ +module win32.ansi.mmsystem; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winbase; + +// #ifndef _INC_MMSYSTEM +// #define _INC_MMSYSTEM + +// #ifdef _WIN32 +align(1): +// #else +// #ifndef RC_INVOKED +// #... +// #endif +// #endif + +// #ifdef __cplusplus +// extern "C" { /* Assume C declarations for C++ */ +// #endif /* __cplusplus */ + +// #ifdef _WIN32 +// #ifndef _WINMM_ +// #define WINMMAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #define _loadds +// #define _huge +// #else +// #... +// #endif + +// #ifdef _MAC +// #... +// #endif //_MAC + +enum : uint { MAXPNAMELEN = 32 } +enum : uint { MAXERRORLENGTH = 256 } +enum : uint { MAX_JOYSTICKOEMVXDNAME = 260 } + +// #if (WINVER <= 0x0400) +// #ifndef MM_MICROSOFT +// #... +// #endif + +// #ifndef MM_MIDI_MAPPER +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif +// #endif + +// #ifdef _WIN32 +alias UINT MMVERSION; +// #else +// ... +// #endif +alias UINT MMRESULT; + +// #define _MMRESULT_ + +alias UINT* LPUINT; + +struct mmtime_tag { + UINT wType; +union { + DWORD ms; + DWORD sample; + DWORD cb; + DWORD ticks; + +struct { + BYTE hour; + BYTE min; + BYTE sec; + BYTE frame; + BYTE fps; + BYTE dummy; +// #ifdef _WIN32 + BYTE pad[2]; +// #endif +} + +struct { + DWORD songptrpos; +} + +} + +} +alias mmtime_tag MMTIME; +alias mmtime_tag* PMMTIME; +alias mmtime_tag* NPMMTIME; +alias mmtime_tag* LPMMTIME; + +enum : uint { TIME_MS = 0x0001 } +enum : uint { TIME_SAMPLES = 0x0002 } +enum : uint { TIME_BYTES = 0x0004 } +enum : uint { TIME_SMPTE = 0x0008 } +enum : uint { TIME_MIDI = 0x0010 } +enum : uint { TIME_TICKS = 0x0020 } + +uint MAKEFOURCC(ubyte ch0, ubyte ch1, ubyte ch2, ubyte ch3){ return ch0 | (ch1 << 8) | (ch2 << 16) | (ch3 << 24); } + +enum : uint { MM_JOY1MOVE = 0x3A0 } +enum : uint { MM_JOY2MOVE = 0x3A1 } +enum : uint { MM_JOY1ZMOVE = 0x3A2 } +enum : uint { MM_JOY2ZMOVE = 0x3A3 } +enum : uint { MM_JOY1BUTTONDOWN = 0x3B5 } +enum : uint { MM_JOY2BUTTONDOWN = 0x3B6 } +enum : uint { MM_JOY1BUTTONUP = 0x3B7 } +enum : uint { MM_JOY2BUTTONUP = 0x3B8 } + +enum : uint { MM_MCINOTIFY = 0x3B9 } + +enum : uint { MM_WOM_OPEN = 0x3BB } +enum : uint { MM_WOM_CLOSE = 0x3BC } +enum : uint { MM_WOM_DONE = 0x3BD } + +enum : uint { MM_WIM_OPEN = 0x3BE } +enum : uint { MM_WIM_CLOSE = 0x3BF } +enum : uint { MM_WIM_DATA = 0x3C0 } + +enum : uint { MM_MIM_OPEN = 0x3C1 } +enum : uint { MM_MIM_CLOSE = 0x3C2 } +enum : uint { MM_MIM_DATA = 0x3C3 } +enum : uint { MM_MIM_LONGDATA = 0x3C4 } +enum : uint { MM_MIM_ERROR = 0x3C5 } +enum : uint { MM_MIM_LONGERROR = 0x3C6 } + +enum : uint { MM_MOM_OPEN = 0x3C7 } +enum : uint { MM_MOM_CLOSE = 0x3C8 } +enum : uint { MM_MOM_DONE = 0x3C9 } + +// #ifndef MM_DRVM_OPEN +enum : uint { MM_DRVM_OPEN = 0x3D0 } +enum : uint { MM_DRVM_CLOSE = 0x3D1 } +enum : uint { MM_DRVM_DATA = 0x3D2 } +enum : uint { MM_DRVM_ERROR = 0x3D3 } +// #endif + +enum : uint { MM_STREAM_OPEN = 0x3D4 } +enum : uint { MM_STREAM_CLOSE = 0x3D5 } +enum : uint { MM_STREAM_DONE = 0x3D6 } +enum : uint { MM_STREAM_ERROR = 0x3D7 } + +// #if(WINVER >= 0x0400) +enum : uint { MM_MOM_POSITIONCB = 0x3CA } + +// #ifndef MM_MCISIGNAL +enum : uint { MM_MCISIGNAL = 0x3CB } +// #endif + +enum : uint { MM_MIM_MOREDATA = 0x3CC } + +// #endif /* WINVER >= 0x0400 */ +enum : uint { MM_MIXM_LINE_CHANGE = 0x3D0 } +enum : uint { MM_MIXM_CONTROL_CHANGE = 0x3D1 } + +enum : uint { MMSYSERR_BASE = 0 } +enum : uint { WAVERR_BASE = 32 } +enum : uint { MIDIERR_BASE = 64 } +enum : uint { TIMERR_BASE = 96 } +enum : uint { JOYERR_BASE = 160 } +enum : uint { MCIERR_BASE = 256 } +enum : uint { MIXERR_BASE = 1024 } + +enum : uint { MCI_STRING_OFFSET = 512 } +enum : uint { MCI_VD_OFFSET = 1024 } +enum : uint { MCI_CD_OFFSET = 1088 } +enum : uint { MCI_WAVE_OFFSET = 1152 } +enum : uint { MCI_SEQ_OFFSET = 1216 } + +enum : uint { MMSYSERR_NOERROR = 0 } +enum : uint { MMSYSERR_ERROR = MMSYSERR_BASE + 1 } +enum : uint { MMSYSERR_BADDEVICEID = MMSYSERR_BASE + 2 } +enum : uint { MMSYSERR_NOTENABLED = MMSYSERR_BASE + 3 } +enum : uint { MMSYSERR_ALLOCATED = MMSYSERR_BASE + 4 } +enum : uint { MMSYSERR_INVALHANDLE = MMSYSERR_BASE + 5 } +enum : uint { MMSYSERR_NODRIVER = MMSYSERR_BASE + 6 } +enum : uint { MMSYSERR_NOMEM = MMSYSERR_BASE + 7 } +enum : uint { MMSYSERR_NOTSUPPORTED = MMSYSERR_BASE + 8 } +enum : uint { MMSYSERR_BADERRNUM = MMSYSERR_BASE + 9 } +enum : uint { MMSYSERR_INVALFLAG = MMSYSERR_BASE + 10 } +enum : uint { MMSYSERR_INVALPARAM = MMSYSERR_BASE + 11 } +enum : uint { MMSYSERR_HANDLEBUSY = MMSYSERR_BASE + 12 } + +enum : uint { MMSYSERR_INVALIDALIAS = MMSYSERR_BASE + 13 } +enum : uint { MMSYSERR_BADDB = MMSYSERR_BASE + 14 } +enum : uint { MMSYSERR_KEYNOTFOUND = MMSYSERR_BASE + 15 } +enum : uint { MMSYSERR_READERROR = MMSYSERR_BASE + 16 } +enum : uint { MMSYSERR_WRITEERROR = MMSYSERR_BASE + 17 } +enum : uint { MMSYSERR_DELETEERROR = MMSYSERR_BASE + 18 } +enum : uint { MMSYSERR_VALNOTFOUND = MMSYSERR_BASE + 19 } +enum : uint { MMSYSERR_NODRIVERCB = MMSYSERR_BASE + 20 } +enum : uint { MMSYSERR_MOREDATA = MMSYSERR_BASE + 21 } +enum : uint { MMSYSERR_LASTERROR = MMSYSERR_BASE + 21 } + +// #if (WINVER < 0x030a) || defined(_WIN32) +alias void* HDRVR; +// #endif /* ifdef WINVER < 0x030a */ + +// #ifndef MMNODRV + +// #ifdef _WIN32 +struct DRVCONFIGINFOEX { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; + DWORD dnDevNode; +} +alias DRVCONFIGINFOEX* PDRVCONFIGINFOEX; +alias DRVCONFIGINFOEX* NPDRVCONFIGINFOEX; +alias DRVCONFIGINFOEX* LPDRVCONFIGINFOEX; + +// #else +// ... +// #endif + +// #if (WINVER < 0x030a) || defined(_WIN32) + +// #ifndef DRV_LOAD + +enum : uint { DRV_LOAD = 0x0001 } +enum : uint { DRV_ENABLE = 0x0002 } +enum : uint { DRV_OPEN = 0x0003 } +enum : uint { DRV_CLOSE = 0x0004 } +enum : uint { DRV_DISABLE = 0x0005 } +enum : uint { DRV_FREE = 0x0006 } +enum : uint { DRV_CONFIGURE = 0x0007 } +enum : uint { DRV_QUERYCONFIGURE = 0x0008 } +enum : uint { DRV_INSTALL = 0x0009 } +enum : uint { DRV_REMOVE = 0x000A } +enum : uint { DRV_EXITSESSION = 0x000B } +enum : uint { DRV_POWER = 0x000F } +enum : uint { DRV_RESERVED = 0x0800 } +enum : uint { DRV_USER = 0x4000 } + +// #ifdef _WIN32 +struct tagDRVCONFIGINFO { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; +} +alias tagDRVCONFIGINFO DRVCONFIGINFO; +alias tagDRVCONFIGINFO* PDRVCONFIGINFO; +alias tagDRVCONFIGINFO* NPDRVCONFIGINFO; +alias tagDRVCONFIGINFO* LPDRVCONFIGINFO; + +// #else +// ... +// #endif + +enum : uint { DRVCNF_CANCEL = 0x0000 } +enum : uint { DRVCNF_OK = 0x0001 } +enum : uint { DRVCNF_RESTART = 0x0002 } + +// #ifdef _WIN32 + +extern(Windows) alias LRESULT function(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM) DRIVERPROC; + +extern(Windows) export LRESULT CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2); +extern(Windows) export HDRVR OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2); +extern(Windows) export LRESULT SendDriverMessage(HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2); +extern(Windows) export HMODULE DrvGetModuleHandle(HDRVR hDriver); +extern(Windows) export HMODULE GetDriverModuleHandle(HDRVR hDriver); +extern(Windows) export LRESULT DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2); +// #else +// ... +// #... +// #endif /* ifdef _WIN32 */ +// #endif /* DRV_LOAD */ +// #endif /* ifdef (WINVER < 0x030a) || defined(_WIN32) */ + +// #if (WINVER >= 0x030a) + +alias DRVCNF_CANCEL DRV_CANCEL; +alias DRVCNF_OK DRV_OK; +alias DRVCNF_RESTART DRV_RESTART; + +// #endif /* ifdef WINVER >= 0x030a */ + +alias DRV_RESERVED DRV_MCI_FIRST; +enum : uint { DRV_MCI_LAST = DRV_RESERVED + 0xFFF } + +// #endif /* ifndef MMNODRV */ + +enum : uint { CALLBACK_TYPEMASK = 0x00070000 } +enum : uint { CALLBACK_NULL = 0x00000000 } +enum : uint { CALLBACK_WINDOW = 0x00010000 } +enum : uint { CALLBACK_TASK = 0x00020000 } +enum : uint { CALLBACK_FUNCTION = 0x00030000 } +// #ifdef _WIN32 +enum : uint { CALLBACK_THREAD = CALLBACK_TASK } +enum : uint { CALLBACK_EVENT = 0x00050000 } +// #endif +// typedef void (CALLBACK DRVCALLBACK)(HDRVR hdrvr, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2); + +extern(Windows) alias void function(HDRVR hdrvr, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) LPDRVCALLBACK; +// #ifdef _WIN32 +alias LPDRVCALLBACK PDRVCALLBACK; +// #endif + +// #ifndef MMNOMMSYSTEM + +// #if (WINVER <= 0x030A) +// ... +// #endif +// #ifdef _WIN32 +alias OutputDebugString OutputDebugStr; +// #else +// ... +// #endif + +// #endif /* ifndef MMNOMMSYSTEM */ + +// #ifndef MMNOSOUND + +// #ifdef _WIN32 + +extern(Windows) export BOOL sndPlaySoundA(LPCSTR pszSound, UINT fuSound); +extern(Windows) export BOOL sndPlaySoundW(LPCWSTR pszSound, UINT fuSound); +// #ifdef UNICODE +// #... +// #else +alias sndPlaySoundA sndPlaySound; +// #endif // !UNICODE + +// #else +// ... +// #endif + +enum : uint { SND_SYNC = 0x0000 } +enum : uint { SND_ASYNC = 0x0001 } +enum : uint { SND_NODEFAULT = 0x0002 } +enum : uint { SND_MEMORY = 0x0004 } +enum : uint { SND_LOOP = 0x0008 } +enum : uint { SND_NOSTOP = 0x0010 } + +enum : uint { SND_NOWAIT = 0x00002000 } +enum : uint { SND_ALIAS = 0x00010000 } +enum : uint { SND_ALIAS_ID = 0x00110000 } +enum : uint { SND_FILENAME = 0x00020000 } +enum : uint { SND_RESOURCE = 0x00040004 } +// #if(WINVER >= 0x0400) +enum : uint { SND_PURGE = 0x0040 } +enum : uint { SND_APPLICATION = 0x0080 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SND_ALIAS_START = 0 } + +// #ifdef _WIN32 +// #define sndAlias(ch0, ch1) (SND_ALIAS_START + (DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8)) + +// #define SND_ALIAS_SYSTEMASTERISK sndAlias('S', '*') +// #define SND_ALIAS_SYSTEMQUESTION sndAlias('S', '?') +// #define SND_ALIAS_SYSTEMHAND sndAlias('S', 'H') +// #define SND_ALIAS_SYSTEMEXIT sndAlias('S', 'E') +// #define SND_ALIAS_SYSTEMSTART sndAlias('S', 'S') +// #define SND_ALIAS_SYSTEMWELCOME sndAlias('S', 'W') +// #define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S', '!') +// #define SND_ALIAS_SYSTEMDEFAULT sndAlias('S', 'D') + +extern(Windows) export BOOL PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); +extern(Windows) export BOOL PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound); +// #ifdef UNICODE +// #... +// #else +alias PlaySoundA PlaySound; +// #endif // !UNICODE + +// #else +// ... +// #endif + +// #endif /* ifndef MMNOSOUND */ + +// #ifndef MMNOWAVE + +enum : uint { WAVERR_BADFORMAT = WAVERR_BASE + 0 } +enum : uint { WAVERR_STILLPLAYING = WAVERR_BASE + 1 } +enum : uint { WAVERR_UNPREPARED = WAVERR_BASE + 2 } +enum : uint { WAVERR_SYNC = WAVERR_BASE + 3 } +enum : uint { WAVERR_LASTERROR = WAVERR_BASE + 3 } + +alias void* HWAVE; +alias void* HWAVEIN; +alias void* HWAVEOUT; +alias HWAVEIN* LPHWAVEIN; +alias HWAVEOUT* LPHWAVEOUT; +// typedef DRVCALLBACK WAVECALLBACK; +alias LPDRVCALLBACK LPWAVECALLBACK; + +alias MM_WOM_OPEN WOM_OPEN; +alias MM_WOM_CLOSE WOM_CLOSE; +alias MM_WOM_DONE WOM_DONE; +alias MM_WIM_OPEN WIM_OPEN; +alias MM_WIM_CLOSE WIM_CLOSE; +alias MM_WIM_DATA WIM_DATA; + +enum : uint { WAVE_MAPPER = cast(UINT)-1 } + +enum : uint { WAVE_FORMAT_QUERY = 0x0001 } +enum : uint { WAVE_ALLOWSYNC = 0x0002 } +// #if(WINVER >= 0x0400) +enum : uint { WAVE_MAPPED = 0x0004 } +enum : uint { WAVE_FORMAT_DIRECT = 0x0008 } +enum : uint { WAVE_FORMAT_DIRECT_QUERY = WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT } +// #endif /* WINVER >= 0x0400 */ + +struct wavehdr_tag { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD_PTR dwUser; + DWORD dwFlags; + DWORD dwLoops; + wavehdr_tag *lpNext; + DWORD_PTR reserved; +} +alias wavehdr_tag WAVEHDR; +alias wavehdr_tag* PWAVEHDR; +alias wavehdr_tag* NPWAVEHDR; +alias wavehdr_tag* LPWAVEHDR; + +enum : uint { WHDR_DONE = 0x00000001 } +enum : uint { WHDR_PREPARED = 0x00000002 } +enum : uint { WHDR_BEGINLOOP = 0x00000004 } +enum : uint { WHDR_ENDLOOP = 0x00000008 } +enum : uint { WHDR_INQUEUE = 0x00000010 } + +// #ifdef _WIN32 + +struct tagWAVEOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias tagWAVEOUTCAPSA WAVEOUTCAPSA; +alias tagWAVEOUTCAPSA* PWAVEOUTCAPSA; +alias tagWAVEOUTCAPSA* NPWAVEOUTCAPSA; +alias tagWAVEOUTCAPSA* LPWAVEOUTCAPSA; + +struct tagWAVEOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias tagWAVEOUTCAPSW WAVEOUTCAPSW; +alias tagWAVEOUTCAPSW* PWAVEOUTCAPSW; +alias tagWAVEOUTCAPSW* NPWAVEOUTCAPSW; +alias tagWAVEOUTCAPSW* LPWAVEOUTCAPSW; + +// #ifdef UNICODE +// ... +// #else +alias WAVEOUTCAPSA WAVEOUTCAPS; +alias PWAVEOUTCAPSA PWAVEOUTCAPS; +alias NPWAVEOUTCAPSA NPWAVEOUTCAPS; +alias LPWAVEOUTCAPSA LPWAVEOUTCAPS; +// #endif // UNICODE +struct tagWAVEOUTCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagWAVEOUTCAPS2A WAVEOUTCAPS2A; +alias tagWAVEOUTCAPS2A* PWAVEOUTCAPS2A; +alias tagWAVEOUTCAPS2A* NPWAVEOUTCAPS2A; +alias tagWAVEOUTCAPS2A* LPWAVEOUTCAPS2A; + +struct tagWAVEOUTCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagWAVEOUTCAPS2W WAVEOUTCAPS2W; +alias tagWAVEOUTCAPS2W* PWAVEOUTCAPS2W; +alias tagWAVEOUTCAPS2W* NPWAVEOUTCAPS2W; +alias tagWAVEOUTCAPS2W* LPWAVEOUTCAPS2W; + +// #ifdef UNICODE +// ... +// #else +alias WAVEOUTCAPS2A WAVEOUTCAPS2; +alias PWAVEOUTCAPS2A PWAVEOUTCAPS2; +alias NPWAVEOUTCAPS2A NPWAVEOUTCAPS2; +alias LPWAVEOUTCAPS2A LPWAVEOUTCAPS2; +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { WAVECAPS_PITCH = 0x0001 } +enum : uint { WAVECAPS_PLAYBACKRATE = 0x0002 } +enum : uint { WAVECAPS_VOLUME = 0x0004 } +enum : uint { WAVECAPS_LRVOLUME = 0x0008 } +enum : uint { WAVECAPS_SYNC = 0x0010 } +enum : uint { WAVECAPS_SAMPLEACCURATE = 0x0020 } + +// #ifdef _WIN32 + +struct tagWAVEINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias tagWAVEINCAPSA WAVEINCAPSA; +alias tagWAVEINCAPSA* PWAVEINCAPSA; +alias tagWAVEINCAPSA* NPWAVEINCAPSA; +alias tagWAVEINCAPSA* LPWAVEINCAPSA; + +struct tagWAVEINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias tagWAVEINCAPSW WAVEINCAPSW; +alias tagWAVEINCAPSW* PWAVEINCAPSW; +alias tagWAVEINCAPSW* NPWAVEINCAPSW; +alias tagWAVEINCAPSW* LPWAVEINCAPSW; + +// #ifdef UNICODE +// ... +// #else +alias WAVEINCAPSA WAVEINCAPS; +alias PWAVEINCAPSA PWAVEINCAPS; +alias NPWAVEINCAPSA NPWAVEINCAPS; +alias LPWAVEINCAPSA LPWAVEINCAPS; +// #endif // UNICODE +struct tagWAVEINCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagWAVEINCAPS2A WAVEINCAPS2A; +alias tagWAVEINCAPS2A* PWAVEINCAPS2A; +alias tagWAVEINCAPS2A* NPWAVEINCAPS2A; +alias tagWAVEINCAPS2A* LPWAVEINCAPS2A; + +struct tagWAVEINCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagWAVEINCAPS2W WAVEINCAPS2W; +alias tagWAVEINCAPS2W* PWAVEINCAPS2W; +alias tagWAVEINCAPS2W* NPWAVEINCAPS2W; +alias tagWAVEINCAPS2W* LPWAVEINCAPS2W; + +// #ifdef UNICODE +// ... +// #else +alias WAVEINCAPS2A WAVEINCAPS2; +alias PWAVEINCAPS2A PWAVEINCAPS2; +alias NPWAVEINCAPS2A NPWAVEINCAPS2; +alias LPWAVEINCAPS2A LPWAVEINCAPS2; +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { WAVE_INVALIDFORMAT = 0x00000000 } +enum : uint { WAVE_FORMAT_1M08 = 0x00000001 } +enum : uint { WAVE_FORMAT_1S08 = 0x00000002 } +enum : uint { WAVE_FORMAT_1M16 = 0x00000004 } +enum : uint { WAVE_FORMAT_1S16 = 0x00000008 } +enum : uint { WAVE_FORMAT_2M08 = 0x00000010 } +enum : uint { WAVE_FORMAT_2S08 = 0x00000020 } +enum : uint { WAVE_FORMAT_2M16 = 0x00000040 } +enum : uint { WAVE_FORMAT_2S16 = 0x00000080 } +enum : uint { WAVE_FORMAT_4M08 = 0x00000100 } +enum : uint { WAVE_FORMAT_4S08 = 0x00000200 } +enum : uint { WAVE_FORMAT_4M16 = 0x00000400 } +enum : uint { WAVE_FORMAT_4S16 = 0x00000800 } + +enum : uint { WAVE_FORMAT_44M08 = 0x00000100 } +enum : uint { WAVE_FORMAT_44S08 = 0x00000200 } +enum : uint { WAVE_FORMAT_44M16 = 0x00000400 } +enum : uint { WAVE_FORMAT_44S16 = 0x00000800 } +enum : uint { WAVE_FORMAT_48M08 = 0x00001000 } +enum : uint { WAVE_FORMAT_48S08 = 0x00002000 } +enum : uint { WAVE_FORMAT_48M16 = 0x00004000 } +enum : uint { WAVE_FORMAT_48S16 = 0x00008000 } +enum : uint { WAVE_FORMAT_96M08 = 0x00010000 } +enum : uint { WAVE_FORMAT_96S08 = 0x00020000 } +enum : uint { WAVE_FORMAT_96M16 = 0x00040000 } +enum : uint { WAVE_FORMAT_96S16 = 0x00080000 } + +// #ifndef WAVE_FORMAT_PCM + +struct waveformat_tag { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; +} +alias waveformat_tag WAVEFORMAT; +alias waveformat_tag* PWAVEFORMAT; +alias waveformat_tag* NPWAVEFORMAT; +alias waveformat_tag* LPWAVEFORMAT; + +enum : uint { WAVE_FORMAT_PCM = 1 } + +struct pcmwaveformat_tag { + WAVEFORMAT wf; + WORD wBitsPerSample; +} +alias pcmwaveformat_tag PCMWAVEFORMAT; +alias pcmwaveformat_tag* PPCMWAVEFORMAT; +alias pcmwaveformat_tag* NPPCMWAVEFORMAT; +alias pcmwaveformat_tag* LPPCMWAVEFORMAT; + +// #endif /* WAVE_FORMAT_PCM */ + +// #ifndef _WAVEFORMATEX_ +// #define _WAVEFORMATEX_ + +struct tWAVEFORMATEX { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; + +} +alias tWAVEFORMATEX WAVEFORMATEX; +alias tWAVEFORMATEX* PWAVEFORMATEX; +alias tWAVEFORMATEX* NPWAVEFORMATEX; +alias tWAVEFORMATEX* LPWAVEFORMATEX; + +// #endif /* _WAVEFORMATEX_ */ +alias WAVEFORMATEX* LPCWAVEFORMATEX; + +extern(Windows) export UINT waveOutGetNumDevs(); + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT waveOutGetDevCapsA(UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc); +extern(Windows) export MMRESULT waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc); +// #ifdef UNICODE +// #... +// #else +alias waveOutGetDevCapsA waveOutGetDevCaps; +// #endif // !UNICODE + +// #else +// ... +// #endif + +// #if (WINVER >= 0x0400) +extern(Windows) export MMRESULT waveOutGetVolume(HWAVEOUT hwo, LPDWORD pdwVolume); +extern(Windows) export MMRESULT waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume); +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT waveOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +extern(Windows) export MMRESULT waveOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +// #... +// #else +alias waveOutGetErrorTextA waveOutGetErrorText; +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT waveOutOpen(LPHWAVEOUT phwo, UINT uDeviceID, + LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); + +extern(Windows) export MMRESULT waveOutClose(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutPrepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveOutUnprepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveOutPause(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutRestart(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutReset(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutBreakLoop(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutGetPosition(HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt); +extern(Windows) export MMRESULT waveOutGetPitch(HWAVEOUT hwo, LPDWORD pdwPitch); +extern(Windows) export MMRESULT waveOutSetPitch(HWAVEOUT hwo, DWORD dwPitch); +extern(Windows) export MMRESULT waveOutGetPlaybackRate(HWAVEOUT hwo, LPDWORD pdwRate); +extern(Windows) export MMRESULT waveOutSetPlaybackRate(HWAVEOUT hwo, DWORD dwRate); +extern(Windows) export MMRESULT waveOutGetID(HWAVEOUT hwo, LPUINT puDeviceID); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +extern(Windows) export UINT waveInGetNumDevs(); + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT waveInGetDevCapsA(UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic); +extern(Windows) export MMRESULT waveInGetDevCapsW(UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic); +// #ifdef UNICODE +// #... +// #else +alias waveInGetDevCapsA waveInGetDevCaps; +// #endif // !UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT waveInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +extern(Windows) export MMRESULT waveInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +// #... +// #else +alias waveInGetErrorTextA waveInGetErrorText; +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT waveInOpen(LPHWAVEIN phwi, UINT uDeviceID, + LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); + +extern(Windows) export MMRESULT waveInClose(HWAVEIN hwi); +extern(Windows) export MMRESULT waveInPrepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveInUnprepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveInAddBuffer(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveInStart(HWAVEIN hwi); +extern(Windows) export MMRESULT waveInStop(HWAVEIN hwi); +extern(Windows) export MMRESULT waveInReset(HWAVEIN hwi); +extern(Windows) export MMRESULT waveInGetPosition(HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt); +extern(Windows) export MMRESULT waveInGetID(HWAVEIN hwi, LPUINT puDeviceID); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT waveInMessage(HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +// #endif /* ifndef MMNOWAVE */ + +// #ifndef MMNOMIDI + +enum : uint { MIDIERR_UNPREPARED = MIDIERR_BASE + 0 } +enum : uint { MIDIERR_STILLPLAYING = MIDIERR_BASE + 1 } +enum : uint { MIDIERR_NOMAP = MIDIERR_BASE + 2 } +enum : uint { MIDIERR_NOTREADY = MIDIERR_BASE + 3 } +enum : uint { MIDIERR_NODEVICE = MIDIERR_BASE + 4 } +enum : uint { MIDIERR_INVALIDSETUP = MIDIERR_BASE + 5 } +enum : uint { MIDIERR_BADOPENMODE = MIDIERR_BASE + 6 } +enum : uint { MIDIERR_DONT_CONTINUE = MIDIERR_BASE + 7 } +enum : uint { MIDIERR_LASTERROR = MIDIERR_BASE + 7 } + +alias void* HMIDI; +alias void* HMIDIIN; +alias void* HMIDIOUT; +alias void* HMIDISTRM; +alias HMIDI* LPHMIDI; +alias HMIDIIN* LPHMIDIIN; +alias HMIDIOUT* LPHMIDIOUT; +alias HMIDISTRM* LPHMIDISTRM; +// typedef DRVCALLBACK MIDICALLBACK; +alias LPDRVCALLBACK LPMIDICALLBACK; +enum : uint { MIDIPATCHSIZE = 128 } +alias WORD PATCHARRAY[MIDIPATCHSIZE]; +alias WORD* LPPATCHARRAY; +alias WORD KEYARRAY[MIDIPATCHSIZE]; +alias WORD* LPKEYARRAY; + +alias MM_MIM_OPEN MIM_OPEN; +alias MM_MIM_CLOSE MIM_CLOSE; +alias MM_MIM_DATA MIM_DATA; +alias MM_MIM_LONGDATA MIM_LONGDATA; +alias MM_MIM_ERROR MIM_ERROR; +alias MM_MIM_LONGERROR MIM_LONGERROR; +alias MM_MOM_OPEN MOM_OPEN; +alias MM_MOM_CLOSE MOM_CLOSE; +alias MM_MOM_DONE MOM_DONE; + +// #if(WINVER >= 0x0400) +alias MM_MIM_MOREDATA MIM_MOREDATA; +alias MM_MOM_POSITIONCB MOM_POSITIONCB; +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MIDIMAPPER = cast(UINT)-1 } +enum : uint { MIDI_MAPPER = cast(UINT)-1 } + +// #if(WINVER >= 0x0400) + +enum : uint { MIDI_IO_STATUS = 0x00000020 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MIDI_CACHE_ALL = 1 } +enum : uint { MIDI_CACHE_BESTFIT = 2 } +enum : uint { MIDI_CACHE_QUERY = 3 } +enum : uint { MIDI_UNCACHE = 4 } + +// #ifdef _WIN32 + +struct tagMIDIOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias tagMIDIOUTCAPSA MIDIOUTCAPSA; +alias tagMIDIOUTCAPSA* PMIDIOUTCAPSA; +alias tagMIDIOUTCAPSA* NPMIDIOUTCAPSA; +alias tagMIDIOUTCAPSA* LPMIDIOUTCAPSA; + +struct tagMIDIOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias tagMIDIOUTCAPSW MIDIOUTCAPSW; +alias tagMIDIOUTCAPSW* PMIDIOUTCAPSW; +alias tagMIDIOUTCAPSW* NPMIDIOUTCAPSW; +alias tagMIDIOUTCAPSW* LPMIDIOUTCAPSW; + +// #ifdef UNICODE +// ... +// #else +alias MIDIOUTCAPSA MIDIOUTCAPS; +alias PMIDIOUTCAPSA PMIDIOUTCAPS; +alias NPMIDIOUTCAPSA NPMIDIOUTCAPS; +alias LPMIDIOUTCAPSA LPMIDIOUTCAPS; +// #endif // UNICODE +struct tagMIDIOUTCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIDIOUTCAPS2A MIDIOUTCAPS2A; +alias tagMIDIOUTCAPS2A* PMIDIOUTCAPS2A; +alias tagMIDIOUTCAPS2A* NPMIDIOUTCAPS2A; +alias tagMIDIOUTCAPS2A* LPMIDIOUTCAPS2A; + +struct tagMIDIOUTCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIDIOUTCAPS2W MIDIOUTCAPS2W; +alias tagMIDIOUTCAPS2W* PMIDIOUTCAPS2W; +alias tagMIDIOUTCAPS2W* NPMIDIOUTCAPS2W; +alias tagMIDIOUTCAPS2W* LPMIDIOUTCAPS2W; + +// #ifdef UNICODE +// ... +// #else +alias MIDIOUTCAPS2A MIDIOUTCAPS2; +alias PMIDIOUTCAPS2A PMIDIOUTCAPS2; +alias NPMIDIOUTCAPS2A NPMIDIOUTCAPS2; +alias LPMIDIOUTCAPS2A LPMIDIOUTCAPS2; +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { MOD_MIDIPORT = 1 } +enum : uint { MOD_SYNTH = 2 } +enum : uint { MOD_SQSYNTH = 3 } +enum : uint { MOD_FMSYNTH = 4 } +enum : uint { MOD_MAPPER = 5 } +enum : uint { MOD_WAVETABLE = 6 } +enum : uint { MOD_SWSYNTH = 7 } + +enum : uint { MIDICAPS_VOLUME = 0x0001 } +enum : uint { MIDICAPS_LRVOLUME = 0x0002 } +enum : uint { MIDICAPS_CACHE = 0x0004 } +// #if(WINVER >= 0x0400) +enum : uint { MIDICAPS_STREAM = 0x0008 } +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _WIN32 + +struct tagMIDIINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; +// #if (WINVER >= 0x0400) + DWORD dwSupport; +// #endif +} +alias tagMIDIINCAPSA MIDIINCAPSA; +alias tagMIDIINCAPSA* PMIDIINCAPSA; +alias tagMIDIINCAPSA* NPMIDIINCAPSA; +alias tagMIDIINCAPSA* LPMIDIINCAPSA; + +struct tagMIDIINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; +// #if (WINVER >= 0x0400) + DWORD dwSupport; +// #endif +} +alias tagMIDIINCAPSW MIDIINCAPSW; +alias tagMIDIINCAPSW* PMIDIINCAPSW; +alias tagMIDIINCAPSW* NPMIDIINCAPSW; +alias tagMIDIINCAPSW* LPMIDIINCAPSW; + +// #ifdef UNICODE +// ... +// #else +alias MIDIINCAPSA MIDIINCAPS; +alias PMIDIINCAPSA PMIDIINCAPS; +alias NPMIDIINCAPSA NPMIDIINCAPS; +alias LPMIDIINCAPSA LPMIDIINCAPS; +// #endif // UNICODE +struct tagMIDIINCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; +// #if (WINVER >= 0x0400) + DWORD dwSupport; +// #endif + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIDIINCAPS2A MIDIINCAPS2A; +alias tagMIDIINCAPS2A* PMIDIINCAPS2A; +alias tagMIDIINCAPS2A* NPMIDIINCAPS2A; +alias tagMIDIINCAPS2A* LPMIDIINCAPS2A; + +struct tagMIDIINCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; +// #if (WINVER >= 0x0400) + DWORD dwSupport; +// #endif + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIDIINCAPS2W MIDIINCAPS2W; +alias tagMIDIINCAPS2W* PMIDIINCAPS2W; +alias tagMIDIINCAPS2W* NPMIDIINCAPS2W; +alias tagMIDIINCAPS2W* LPMIDIINCAPS2W; + +// #ifdef UNICODE +// ... +// #else +alias MIDIINCAPS2A MIDIINCAPS2; +alias PMIDIINCAPS2A PMIDIINCAPS2; +alias NPMIDIINCAPS2A NPMIDIINCAPS2; +alias LPMIDIINCAPS2A LPMIDIINCAPS2; +// #endif // UNICODE + +// #else +// ... +// #if (WINVER >= 0x0400) +// ... +// #endif +// ... +// #endif + +struct midihdr_tag { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD_PTR dwUser; + DWORD dwFlags; + midihdr_tag *lpNext; + DWORD_PTR reserved; +// #if (WINVER >= 0x0400) + DWORD dwOffset; + DWORD_PTR dwReserved[8]; +// #endif +} +alias midihdr_tag MIDIHDR; +alias midihdr_tag* PMIDIHDR; +alias midihdr_tag* NPMIDIHDR; +alias midihdr_tag* LPMIDIHDR; + +// #if(WINVER >= 0x0400) +struct midievent_tag { + DWORD dwDeltaTime; + DWORD dwStreamID; + DWORD dwEvent; + DWORD dwParms[1]; +} +alias midievent_tag MIDIEVENT; + +struct midistrmbuffver_tag { + DWORD dwVersion; + DWORD dwMid; + DWORD dwOEMVersion; +} +alias midistrmbuffver_tag MIDISTRMBUFFVER; + +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MHDR_DONE = 0x00000001 } +enum : uint { MHDR_PREPARED = 0x00000002 } +enum : uint { MHDR_INQUEUE = 0x00000004 } +enum : uint { MHDR_ISSTRM = 0x00000008 } +// #if(WINVER >= 0x0400) + +enum : uint { MEVT_F_SHORT = 0x00000000 } +enum : uint { MEVT_F_LONG = 0x80000000 } +enum : uint { MEVT_F_CALLBACK = 0x40000000 } + +// #define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF)) +// #define MEVT_EVENTPARM(x) ((DWORD)((x)&0x00FFFFFFL)) + +enum : BYTE { MEVT_SHORTMSG = 0x00 } +enum : BYTE { MEVT_TEMPO = 0x01 } +enum : BYTE { MEVT_NOP = 0x02 } + +enum : BYTE { MEVT_LONGMSG = 0x80 } +enum : BYTE { MEVT_COMMENT = 0x82 } +enum : BYTE { MEVT_VERSION = 0x84 } + +enum { MIDISTRM_ERROR = -2 } + +enum : uint { MIDIPROP_SET = 0x80000000 } +enum : uint { MIDIPROP_GET = 0x40000000 } + +enum : uint { MIDIPROP_TIMEDIV = 0x00000001 } +enum : uint { MIDIPROP_TEMPO = 0x00000002 } + +struct midiproptimediv_tag { + DWORD cbStruct; + DWORD dwTimeDiv; +} +alias midiproptimediv_tag MIDIPROPTIMEDIV; +alias midiproptimediv_tag* LPMIDIPROPTIMEDIV; + +struct midiproptempo_tag { + DWORD cbStruct; + DWORD dwTempo; +} +alias midiproptempo_tag MIDIPROPTEMPO; +alias midiproptempo_tag* LPMIDIPROPTEMPO; + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export UINT midiOutGetNumDevs(); +// #if(WINVER >= 0x0400) +extern(Windows) export MMRESULT midiStreamOpen(LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +extern(Windows) export MMRESULT midiStreamClose(HMIDISTRM hms); + +extern(Windows) export MMRESULT midiStreamProperty(HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty); +extern(Windows) export MMRESULT midiStreamPosition(HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt); + +extern(Windows) export MMRESULT midiStreamOut(HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiStreamPause(HMIDISTRM hms); +extern(Windows) export MMRESULT midiStreamRestart(HMIDISTRM hms); +extern(Windows) export MMRESULT midiStreamStop(HMIDISTRM hms); + +// #ifdef _WIN32 +extern(Windows) export MMRESULT midiConnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved); +extern(Windows) export MMRESULT midiDisconnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved); +// #endif +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT midiOutGetDevCapsA(UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc); +extern(Windows) export MMRESULT midiOutGetDevCapsW(UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc); +// #ifdef UNICODE +// #... +// #else +alias midiOutGetDevCapsA midiOutGetDevCaps; +// #endif // !UNICODE + +// #else +// ... +// #endif + +// #if (WINVER >= 0x0400) +extern(Windows) export MMRESULT midiOutGetVolume(HMIDIOUT hmo, LPDWORD pdwVolume); +extern(Windows) export MMRESULT midiOutSetVolume(HMIDIOUT hmo, DWORD dwVolume); +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT midiOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +extern(Windows) export MMRESULT midiOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +// #... +// #else +alias midiOutGetErrorTextA midiOutGetErrorText; +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT midiOutOpen(LPHMIDIOUT phmo, UINT uDeviceID, + DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +extern(Windows) export MMRESULT midiOutClose(HMIDIOUT hmo); +extern(Windows) export MMRESULT midiOutPrepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiOutUnprepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiOutShortMsg(HMIDIOUT hmo, DWORD dwMsg); +extern(Windows) export MMRESULT midiOutLongMsg(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiOutReset(HMIDIOUT hmo); +extern(Windows) export MMRESULT midiOutCachePatches(HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache); +extern(Windows) export MMRESULT midiOutCacheDrumPatches(HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache); +extern(Windows) export MMRESULT midiOutGetID(HMIDIOUT hmo, LPUINT puDeviceID); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT midiOutMessage(HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +extern(Windows) export UINT midiInGetNumDevs(); + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT midiInGetDevCapsA(UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic); +extern(Windows) export MMRESULT midiInGetDevCapsW(UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic); +// #ifdef UNICODE +// #... +// #else +alias midiInGetDevCapsA midiInGetDevCaps; +// #endif // !UNICODE +extern(Windows) export MMRESULT midiInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +extern(Windows) export MMRESULT midiInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +// #... +// #else +alias midiInGetErrorTextA midiInGetErrorText; +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT midiInOpen(LPHMIDIIN phmi, UINT uDeviceID, + DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +extern(Windows) export MMRESULT midiInClose(HMIDIIN hmi); +extern(Windows) export MMRESULT midiInPrepareHeader(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiInUnprepareHeader(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiInAddBuffer(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiInStart(HMIDIIN hmi); +extern(Windows) export MMRESULT midiInStop(HMIDIIN hmi); +extern(Windows) export MMRESULT midiInReset(HMIDIIN hmi); +extern(Windows) export MMRESULT midiInGetID(HMIDIIN hmi, LPUINT puDeviceID); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT midiInMessage(HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +// #endif /* ifndef MMNOMIDI */ + +// #ifndef MMNOAUX + +enum : uint { AUX_MAPPER = cast(UINT)-1 } + +// #ifdef _WIN32 + +struct tagAUXCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias tagAUXCAPSA AUXCAPSA; +alias tagAUXCAPSA* PAUXCAPSA; +alias tagAUXCAPSA* NPAUXCAPSA; +alias tagAUXCAPSA* LPAUXCAPSA; + +struct tagAUXCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias tagAUXCAPSW AUXCAPSW; +alias tagAUXCAPSW* PAUXCAPSW; +alias tagAUXCAPSW* NPAUXCAPSW; +alias tagAUXCAPSW* LPAUXCAPSW; + +// #ifdef UNICODE +// ... +// #else +alias AUXCAPSA AUXCAPS; +alias PAUXCAPSA PAUXCAPS; +alias NPAUXCAPSA NPAUXCAPS; +alias LPAUXCAPSA LPAUXCAPS; +// #endif // UNICODE +struct tagAUXCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagAUXCAPS2A AUXCAPS2A; +alias tagAUXCAPS2A* PAUXCAPS2A; +alias tagAUXCAPS2A* NPAUXCAPS2A; +alias tagAUXCAPS2A* LPAUXCAPS2A; + +struct tagAUXCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagAUXCAPS2W AUXCAPS2W; +alias tagAUXCAPS2W* PAUXCAPS2W; +alias tagAUXCAPS2W* NPAUXCAPS2W; +alias tagAUXCAPS2W* LPAUXCAPS2W; + +// #ifdef UNICODE +// ... +// #else +alias AUXCAPS2A AUXCAPS2; +alias PAUXCAPS2A PAUXCAPS2; +alias NPAUXCAPS2A NPAUXCAPS2; +alias LPAUXCAPS2A LPAUXCAPS2; +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { AUXCAPS_CDAUDIO = 1 } +enum : uint { AUXCAPS_AUXIN = 2 } + +enum : uint { AUXCAPS_VOLUME = 0x0001 } +enum : uint { AUXCAPS_LRVOLUME = 0x0002 } + +extern(Windows) export UINT auxGetNumDevs(); +// #ifdef _WIN32 + +extern(Windows) export MMRESULT auxGetDevCapsA(UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac); +extern(Windows) export MMRESULT auxGetDevCapsW(UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac); +// #ifdef UNICODE +// #... +// #else +alias auxGetDevCapsA auxGetDevCaps; +// #endif // !UNICODE + +// #else +// ... +// #endif +extern(Windows) export MMRESULT auxSetVolume(UINT uDeviceID, DWORD dwVolume); +extern(Windows) export MMRESULT auxGetVolume(UINT uDeviceID, LPDWORD pdwVolume); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT auxOutMessage(UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +// #endif /* ifndef MMNOAUX */ + +// #ifndef MMNOMIXER + +alias void* HMIXEROBJ; +alias HMIXEROBJ* LPHMIXEROBJ; + +alias void* HMIXER; +alias HMIXER* LPHMIXER; + +enum : uint { MIXER_SHORT_NAME_CHARS = 16 } +enum : uint { MIXER_LONG_NAME_CHARS = 64 } + +enum : uint { MIXERR_INVALLINE = MIXERR_BASE + 0 } +enum : uint { MIXERR_INVALCONTROL = MIXERR_BASE + 1 } +enum : uint { MIXERR_INVALVALUE = MIXERR_BASE + 2 } +enum : uint { MIXERR_LASTERROR = MIXERR_BASE + 2 } + +enum : uint { MIXER_OBJECTF_HANDLE = 0x80000000 } +enum : uint { MIXER_OBJECTF_MIXER = 0x00000000 } +enum : uint { MIXER_OBJECTF_HMIXER = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER } +enum : uint { MIXER_OBJECTF_WAVEOUT = 0x10000000 } +enum : uint { MIXER_OBJECTF_HWAVEOUT = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT } +enum : uint { MIXER_OBJECTF_WAVEIN = 0x20000000 } +enum : uint { MIXER_OBJECTF_HWAVEIN = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN } +enum : uint { MIXER_OBJECTF_MIDIOUT = 0x30000000 } +enum : uint { MIXER_OBJECTF_HMIDIOUT = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT } +enum : uint { MIXER_OBJECTF_MIDIIN = 0x40000000 } +enum : uint { MIXER_OBJECTF_HMIDIIN = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN } +enum : uint { MIXER_OBJECTF_AUX = 0x50000000 } + +extern(Windows) export UINT mixerGetNumDevs(); + +// #ifdef _WIN32 + +struct tagMIXERCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; +} +alias tagMIXERCAPSA MIXERCAPSA; +alias tagMIXERCAPSA* PMIXERCAPSA; +alias tagMIXERCAPSA* LPMIXERCAPSA; + +struct tagMIXERCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; +} +alias tagMIXERCAPSW MIXERCAPSW; +alias tagMIXERCAPSW* PMIXERCAPSW; +alias tagMIXERCAPSW* LPMIXERCAPSW; + +// #ifdef UNICODE +// ... +// #else +alias MIXERCAPSA MIXERCAPS; +alias PMIXERCAPSA PMIXERCAPS; +alias LPMIXERCAPSA LPMIXERCAPS; +// #endif // UNICODE +struct tagMIXERCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIXERCAPS2A MIXERCAPS2A; +alias tagMIXERCAPS2A* PMIXERCAPS2A; +alias tagMIXERCAPS2A* LPMIXERCAPS2A; + +struct tagMIXERCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIXERCAPS2W MIXERCAPS2W; +alias tagMIXERCAPS2W* PMIXERCAPS2W; +alias tagMIXERCAPS2W* LPMIXERCAPS2W; + +// #ifdef UNICODE +// ... +// #else +alias MIXERCAPS2A MIXERCAPS2; +alias PMIXERCAPS2A PMIXERCAPS2; +alias LPMIXERCAPS2A LPMIXERCAPS2; +// #endif // UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT mixerGetDevCapsA(UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps); +extern(Windows) export MMRESULT mixerGetDevCapsW(UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps); +// #ifdef UNICODE +// #... +// #else +alias mixerGetDevCapsA mixerGetDevCaps; +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT mixerOpen(LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); + +extern(Windows) export MMRESULT mixerClose(HMIXER hmx); + +extern(Windows) export DWORD mixerMessage(HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); + +// #ifdef _WIN32 + +struct tagMIXERLINEA { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD_PTR dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + CHAR szShortName[MIXER_SHORT_NAME_CHARS]; + CHAR szName[MIXER_LONG_NAME_CHARS]; +struct { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; +} + +} +alias tagMIXERLINEA MIXERLINEA; +alias tagMIXERLINEA* PMIXERLINEA; +alias tagMIXERLINEA* LPMIXERLINEA; + +struct tagMIXERLINEW { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD_PTR dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + WCHAR szShortName[MIXER_SHORT_NAME_CHARS]; + WCHAR szName[MIXER_LONG_NAME_CHARS]; +struct { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; +} + +} +alias tagMIXERLINEW MIXERLINEW; +alias tagMIXERLINEW* PMIXERLINEW; +alias tagMIXERLINEW* LPMIXERLINEW; + +// #ifdef UNICODE +// ... +// #else +alias MIXERLINEA MIXERLINE; +alias PMIXERLINEA PMIXERLINE; +alias LPMIXERLINEA LPMIXERLINE; +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXERLINE_LINEF_ACTIVE = 0x00000001 } +enum : uint { MIXERLINE_LINEF_DISCONNECTED = 0x00008000 } +enum : uint { MIXERLINE_LINEF_SOURCE = 0x80000000 } + +enum : uint { MIXERLINE_COMPONENTTYPE_DST_FIRST = 0x00000000 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_UNDEFINED = MIXERLINE_COMPONENTTYPE_DST_FIRST + 0 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_DIGITAL = MIXERLINE_COMPONENTTYPE_DST_FIRST + 1 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_LINE = MIXERLINE_COMPONENTTYPE_DST_FIRST + 2 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_MONITOR = MIXERLINE_COMPONENTTYPE_DST_FIRST + 3 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = MIXERLINE_COMPONENTTYPE_DST_FIRST + 4 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_HEADPHONES = MIXERLINE_COMPONENTTYPE_DST_FIRST + 5 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_TELEPHONE = MIXERLINE_COMPONENTTYPE_DST_FIRST + 6 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_WAVEIN = MIXERLINE_COMPONENTTYPE_DST_FIRST + 7 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_VOICEIN = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_LAST = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8 } + +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_FIRST = 0x00001000 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_DIGITAL = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_LINE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_ANALOG = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_LAST = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10 } + +enum : uint { MIXERLINE_TARGETTYPE_UNDEFINED = 0 } +enum : uint { MIXERLINE_TARGETTYPE_WAVEOUT = 1 } +enum : uint { MIXERLINE_TARGETTYPE_WAVEIN = 2 } +enum : uint { MIXERLINE_TARGETTYPE_MIDIOUT = 3 } +enum : uint { MIXERLINE_TARGETTYPE_MIDIIN = 4 } +enum : uint { MIXERLINE_TARGETTYPE_AUX = 5 } + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT mixerGetLineInfoA(HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo); +extern(Windows) export MMRESULT mixerGetLineInfoW(HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo); +// #ifdef UNICODE +// #... +// #else +alias mixerGetLineInfoA mixerGetLineInfo; +// #endif // !UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXER_GETLINEINFOF_DESTINATION = 0x00000000 } +enum : uint { MIXER_GETLINEINFOF_SOURCE = 0x00000001 } +enum : uint { MIXER_GETLINEINFOF_LINEID = 0x00000002 } +enum : uint { MIXER_GETLINEINFOF_COMPONENTTYPE = 0x00000003 } +enum : uint { MIXER_GETLINEINFOF_TARGETTYPE = 0x00000004 } + +enum : uint { MIXER_GETLINEINFOF_QUERYMASK = 0x0000000F } + +extern(Windows) export MMRESULT mixerGetID(HMIXEROBJ hmxobj, UINT *puMxId, DWORD fdwId); + +// #ifdef _WIN32 + +struct tagMIXERCONTROLA { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + CHAR szShortName[MIXER_SHORT_NAME_CHARS]; + CHAR szName[MIXER_LONG_NAME_CHARS]; +union _0 { +struct { + LONG lMinimum; + LONG lMaximum; +} + +struct { + DWORD dwMinimum; + DWORD dwMaximum; +} + + DWORD dwReserved[6]; +} +_0 Bounds; + +union _1 { + DWORD cSteps; + DWORD cbCustomData; + DWORD dwReserved[6]; +} +_1 Metrics; + +} +alias tagMIXERCONTROLA MIXERCONTROLA; +alias tagMIXERCONTROLA* PMIXERCONTROLA; +alias tagMIXERCONTROLA* LPMIXERCONTROLA; + +struct tagMIXERCONTROLW { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + WCHAR szShortName[MIXER_SHORT_NAME_CHARS]; + WCHAR szName[MIXER_LONG_NAME_CHARS]; +union _2 { +struct { + LONG lMinimum; + LONG lMaximum; +} + +struct { + DWORD dwMinimum; + DWORD dwMaximum; +} + + DWORD dwReserved[6]; +} +_2 Bounds; + +union _3 { + DWORD cSteps; + DWORD cbCustomData; + DWORD dwReserved[6]; +} +_3 Metrics; + +} +alias tagMIXERCONTROLW MIXERCONTROLW; +alias tagMIXERCONTROLW* PMIXERCONTROLW; +alias tagMIXERCONTROLW* LPMIXERCONTROLW; + +// #ifdef UNICODE +// ... +// #else +alias MIXERCONTROLA MIXERCONTROL; +alias PMIXERCONTROLA PMIXERCONTROL; +alias LPMIXERCONTROLA LPMIXERCONTROL; +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXERCONTROL_CONTROLF_UNIFORM = 0x00000001 } +enum : uint { MIXERCONTROL_CONTROLF_MULTIPLE = 0x00000002 } +enum : uint { MIXERCONTROL_CONTROLF_DISABLED = 0x80000000 } + +enum : uint { MIXERCONTROL_CT_CLASS_MASK = 0xF0000000 } +enum : uint { MIXERCONTROL_CT_CLASS_CUSTOM = 0x00000000 } +enum : uint { MIXERCONTROL_CT_CLASS_METER = 0x10000000 } +enum : uint { MIXERCONTROL_CT_CLASS_SWITCH = 0x20000000 } +enum : uint { MIXERCONTROL_CT_CLASS_NUMBER = 0x30000000 } +enum : uint { MIXERCONTROL_CT_CLASS_SLIDER = 0x40000000 } +enum : uint { MIXERCONTROL_CT_CLASS_FADER = 0x50000000 } +enum : uint { MIXERCONTROL_CT_CLASS_TIME = 0x60000000 } +enum : uint { MIXERCONTROL_CT_CLASS_LIST = 0x70000000 } + +enum : uint { MIXERCONTROL_CT_SUBCLASS_MASK = 0x0F000000 } + +enum : uint { MIXERCONTROL_CT_SC_SWITCH_BOOLEAN = 0x00000000 } +enum : uint { MIXERCONTROL_CT_SC_SWITCH_BUTTON = 0x01000000 } + +enum : uint { MIXERCONTROL_CT_SC_METER_POLLED = 0x00000000 } + +enum : uint { MIXERCONTROL_CT_SC_TIME_MICROSECS = 0x00000000 } +enum : uint { MIXERCONTROL_CT_SC_TIME_MILLISECS = 0x01000000 } + +enum : uint { MIXERCONTROL_CT_SC_LIST_SINGLE = 0x00000000 } +enum : uint { MIXERCONTROL_CT_SC_LIST_MULTIPLE = 0x01000000 } + +enum : uint { MIXERCONTROL_CT_UNITS_MASK = 0x00FF0000 } +enum : uint { MIXERCONTROL_CT_UNITS_CUSTOM = 0x00000000 } +enum : uint { MIXERCONTROL_CT_UNITS_BOOLEAN = 0x00010000 } +enum : uint { MIXERCONTROL_CT_UNITS_SIGNED = 0x00020000 } +enum : uint { MIXERCONTROL_CT_UNITS_UNSIGNED = 0x00030000 } +enum : uint { MIXERCONTROL_CT_UNITS_DECIBELS = 0x00040000 } +enum : uint { MIXERCONTROL_CT_UNITS_PERCENT = 0x00050000 } + +enum : uint { MIXERCONTROL_CONTROLTYPE_CUSTOM = MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM } +enum : uint { MIXERCONTROL_CONTROLTYPE_BOOLEANMETER = MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_SIGNEDMETER = MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_PEAKMETER = MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER = MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_BOOLEAN = MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_ONOFF = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_MUTE = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2 } +enum : uint { MIXERCONTROL_CONTROLTYPE_MONO = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3 } +enum : uint { MIXERCONTROL_CONTROLTYPE_LOUDNESS = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4 } +enum : uint { MIXERCONTROL_CONTROLTYPE_STEREOENH = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5 } +enum : uint { MIXERCONTROL_CONTROLTYPE_BASS_BOOST = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 0x00002277 } +enum : uint { MIXERCONTROL_CONTROLTYPE_BUTTON = MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_DECIBELS = MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS } +enum : uint { MIXERCONTROL_CONTROLTYPE_SIGNED = MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_UNSIGNED = MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_PERCENT = MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT } +enum : uint { MIXERCONTROL_CONTROLTYPE_SLIDER = MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_PAN = MIXERCONTROL_CONTROLTYPE_SLIDER + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_QSOUNDPAN = MIXERCONTROL_CONTROLTYPE_SLIDER + 2 } +enum : uint { MIXERCONTROL_CONTROLTYPE_FADER = MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_VOLUME = MIXERCONTROL_CONTROLTYPE_FADER + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_BASS = MIXERCONTROL_CONTROLTYPE_FADER + 2 } +enum : uint { MIXERCONTROL_CONTROLTYPE_TREBLE = MIXERCONTROL_CONTROLTYPE_FADER + 3 } +enum : uint { MIXERCONTROL_CONTROLTYPE_EQUALIZER = MIXERCONTROL_CONTROLTYPE_FADER + 4 } +enum : uint { MIXERCONTROL_CONTROLTYPE_SINGLESELECT = MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_MUX = MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT = MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_MIXER = MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_MICROTIME = MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_MILLITIME = MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED } + +// #ifdef _WIN32 + +struct tagMIXERLINECONTROLSA { + DWORD cbStruct; + DWORD dwLineID; +union { + DWORD dwControlID; + DWORD dwControlType; +} + + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLA pamxctrl; +} +alias tagMIXERLINECONTROLSA MIXERLINECONTROLSA; +alias tagMIXERLINECONTROLSA* PMIXERLINECONTROLSA; +alias tagMIXERLINECONTROLSA* LPMIXERLINECONTROLSA; + +struct tagMIXERLINECONTROLSW { + DWORD cbStruct; + DWORD dwLineID; +union { + DWORD dwControlID; + DWORD dwControlType; +} + + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLW pamxctrl; +} +alias tagMIXERLINECONTROLSW MIXERLINECONTROLSW; +alias tagMIXERLINECONTROLSW* PMIXERLINECONTROLSW; +alias tagMIXERLINECONTROLSW* LPMIXERLINECONTROLSW; + +// #ifdef UNICODE +// ... +// #else +alias MIXERLINECONTROLSA MIXERLINECONTROLS; +alias PMIXERLINECONTROLSA PMIXERLINECONTROLS; +alias LPMIXERLINECONTROLSA LPMIXERLINECONTROLS; +// #endif // UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT mixerGetLineControlsA(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls); +extern(Windows) export MMRESULT mixerGetLineControlsW(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls); +// #ifdef UNICODE +// #... +// #else +alias mixerGetLineControlsA mixerGetLineControls; +// #endif // !UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXER_GETLINECONTROLSF_ALL = 0x00000000 } +enum : uint { MIXER_GETLINECONTROLSF_ONEBYID = 0x00000001 } +enum : uint { MIXER_GETLINECONTROLSF_ONEBYTYPE = 0x00000002 } + +enum : uint { MIXER_GETLINECONTROLSF_QUERYMASK = 0x0000000F } + +struct tMIXERCONTROLDETAILS { + DWORD cbStruct; + DWORD dwControlID; + DWORD cChannels; +union { + HWND hwndOwner; + DWORD cMultipleItems; +} + + DWORD cbDetails; + LPVOID paDetails; +} +alias tMIXERCONTROLDETAILS MIXERCONTROLDETAILS; +alias tMIXERCONTROLDETAILS* PMIXERCONTROLDETAILS; +alias tMIXERCONTROLDETAILS* LPMIXERCONTROLDETAILS; + +// #ifdef _WIN32 + +struct tagMIXERCONTROLDETAILS_LISTTEXTA { + DWORD dwParam1; + DWORD dwParam2; + CHAR szName[MIXER_LONG_NAME_CHARS]; +} +alias tagMIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXTA; +alias tagMIXERCONTROLDETAILS_LISTTEXTA* PMIXERCONTROLDETAILS_LISTTEXTA; +alias tagMIXERCONTROLDETAILS_LISTTEXTA* LPMIXERCONTROLDETAILS_LISTTEXTA; + +struct tagMIXERCONTROLDETAILS_LISTTEXTW { + DWORD dwParam1; + DWORD dwParam2; + WCHAR szName[MIXER_LONG_NAME_CHARS]; +} +alias tagMIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXTW; +alias tagMIXERCONTROLDETAILS_LISTTEXTW* PMIXERCONTROLDETAILS_LISTTEXTW; +alias tagMIXERCONTROLDETAILS_LISTTEXTW* LPMIXERCONTROLDETAILS_LISTTEXTW; + +// #ifdef UNICODE +// ... +// #else +alias MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT; +alias PMIXERCONTROLDETAILS_LISTTEXTA PMIXERCONTROLDETAILS_LISTTEXT; +alias LPMIXERCONTROLDETAILS_LISTTEXTA LPMIXERCONTROLDETAILS_LISTTEXT; +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tMIXERCONTROLDETAILS_BOOLEAN { + LONG fValue; +} +alias tMIXERCONTROLDETAILS_BOOLEAN MIXERCONTROLDETAILS_BOOLEAN; +alias tMIXERCONTROLDETAILS_BOOLEAN* PMIXERCONTROLDETAILS_BOOLEAN; +alias tMIXERCONTROLDETAILS_BOOLEAN* LPMIXERCONTROLDETAILS_BOOLEAN; + +struct tMIXERCONTROLDETAILS_SIGNED { + LONG lValue; +} +alias tMIXERCONTROLDETAILS_SIGNED MIXERCONTROLDETAILS_SIGNED; +alias tMIXERCONTROLDETAILS_SIGNED* PMIXERCONTROLDETAILS_SIGNED; +alias tMIXERCONTROLDETAILS_SIGNED* LPMIXERCONTROLDETAILS_SIGNED; + +struct tMIXERCONTROLDETAILS_UNSIGNED { + DWORD dwValue; +} +alias tMIXERCONTROLDETAILS_UNSIGNED MIXERCONTROLDETAILS_UNSIGNED; +alias tMIXERCONTROLDETAILS_UNSIGNED* PMIXERCONTROLDETAILS_UNSIGNED; +alias tMIXERCONTROLDETAILS_UNSIGNED* LPMIXERCONTROLDETAILS_UNSIGNED; + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT mixerGetControlDetailsA(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); +extern(Windows) export MMRESULT mixerGetControlDetailsW(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); +// #ifdef UNICODE +// #... +// #else +alias mixerGetControlDetailsA mixerGetControlDetails; +// #endif // !UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXER_GETCONTROLDETAILSF_VALUE = 0x00000000 } +enum : uint { MIXER_GETCONTROLDETAILSF_LISTTEXT = 0x00000001 } + +enum : uint { MIXER_GETCONTROLDETAILSF_QUERYMASK = 0x0000000F } + +extern(Windows) export MMRESULT mixerSetControlDetails(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); + +enum : uint { MIXER_SETCONTROLDETAILSF_VALUE = 0x00000000 } +enum : uint { MIXER_SETCONTROLDETAILSF_CUSTOM = 0x00000001 } + +enum : uint { MIXER_SETCONTROLDETAILSF_QUERYMASK = 0x0000000F } + +// #endif /* ifndef MMNOMIXER */ + +// #ifndef MMNOTIMER + +enum : uint { TIMERR_NOERROR = 0 } +enum : uint { TIMERR_NOCANDO = TIMERR_BASE+1 } +enum : uint { TIMERR_STRUCT = TIMERR_BASE+33 } + +// typedef void (CALLBACK TIMECALLBACK)(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2); + +extern(Windows) alias void function(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) LPTIMECALLBACK; + +enum : uint { TIME_ONESHOT = 0x0000 } +enum : uint { TIME_PERIODIC = 0x0001 } + +// #ifdef _WIN32 +enum : uint { TIME_CALLBACK_FUNCTION = 0x0000 } +enum : uint { TIME_CALLBACK_EVENT_SET = 0x0010 } +enum : uint { TIME_CALLBACK_EVENT_PULSE = 0x0020 } +// #endif + +// #if WINVER >= 0x0501 +enum : uint { TIME_KILL_SYNCHRONOUS = 0x0100 } + +// #endif // WINVER >= 0x0501 + +struct timecaps_tag { + UINT wPeriodMin; + UINT wPeriodMax; +} +alias timecaps_tag TIMECAPS; +alias timecaps_tag* PTIMECAPS; +alias timecaps_tag* NPTIMECAPS; +alias timecaps_tag* LPTIMECAPS; + +extern(Windows) export MMRESULT timeGetSystemTime(LPMMTIME pmmt, UINT cbmmt); +extern(Windows) export DWORD timeGetTime(); +extern(Windows) export MMRESULT timeSetEvent(UINT uDelay, UINT uResolution, + LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent); +extern(Windows) export MMRESULT timeKillEvent(UINT uTimerID); +extern(Windows) export MMRESULT timeGetDevCaps(LPTIMECAPS ptc, UINT cbtc); +extern(Windows) export MMRESULT timeBeginPeriod(UINT uPeriod); +extern(Windows) export MMRESULT timeEndPeriod(UINT uPeriod); + +// #endif /* ifndef MMNOTIMER */ + +// #ifndef MMNOJOY + +enum : uint { JOYERR_NOERROR = 0 } +enum : uint { JOYERR_PARMS = JOYERR_BASE+5 } +enum : uint { JOYERR_NOCANDO = JOYERR_BASE+6 } +enum : uint { JOYERR_UNPLUGGED = JOYERR_BASE+7 } + +enum : uint { JOY_BUTTON1 = 0x0001 } +enum : uint { JOY_BUTTON2 = 0x0002 } +enum : uint { JOY_BUTTON3 = 0x0004 } +enum : uint { JOY_BUTTON4 = 0x0008 } +enum : uint { JOY_BUTTON1CHG = 0x0100 } +enum : uint { JOY_BUTTON2CHG = 0x0200 } +enum : uint { JOY_BUTTON3CHG = 0x0400 } +enum : uint { JOY_BUTTON4CHG = 0x0800 } + +enum : uint { JOY_BUTTON5 = 0x00000010 } +enum : uint { JOY_BUTTON6 = 0x00000020 } +enum : uint { JOY_BUTTON7 = 0x00000040 } +enum : uint { JOY_BUTTON8 = 0x00000080 } +enum : uint { JOY_BUTTON9 = 0x00000100 } +enum : uint { JOY_BUTTON10 = 0x00000200 } +enum : uint { JOY_BUTTON11 = 0x00000400 } +enum : uint { JOY_BUTTON12 = 0x00000800 } +enum : uint { JOY_BUTTON13 = 0x00001000 } +enum : uint { JOY_BUTTON14 = 0x00002000 } +enum : uint { JOY_BUTTON15 = 0x00004000 } +enum : uint { JOY_BUTTON16 = 0x00008000 } +enum : uint { JOY_BUTTON17 = 0x00010000 } +enum : uint { JOY_BUTTON18 = 0x00020000 } +enum : uint { JOY_BUTTON19 = 0x00040000 } +enum : uint { JOY_BUTTON20 = 0x00080000 } +enum : uint { JOY_BUTTON21 = 0x00100000 } +enum : uint { JOY_BUTTON22 = 0x00200000 } +enum : uint { JOY_BUTTON23 = 0x00400000 } +enum : uint { JOY_BUTTON24 = 0x00800000 } +enum : uint { JOY_BUTTON25 = 0x01000000 } +enum : uint { JOY_BUTTON26 = 0x02000000 } +enum : uint { JOY_BUTTON27 = 0x04000000 } +enum : uint { JOY_BUTTON28 = 0x08000000 } +enum : uint { JOY_BUTTON29 = 0x10000000 } +enum : uint { JOY_BUTTON30 = 0x20000000 } +enum : uint { JOY_BUTTON31 = 0x40000000 } +enum : uint { JOY_BUTTON32 = 0x80000000 } + +enum : WORD { JOY_POVCENTERED = cast(WORD)-1 } +enum : uint { JOY_POVFORWARD = 0 } +enum : uint { JOY_POVRIGHT = 9000 } +enum : uint { JOY_POVBACKWARD = 18000 } +enum : uint { JOY_POVLEFT = 27000 } + +enum : uint { JOY_RETURNX = 0x00000001 } +enum : uint { JOY_RETURNY = 0x00000002 } +enum : uint { JOY_RETURNZ = 0x00000004 } +enum : uint { JOY_RETURNR = 0x00000008 } +enum : uint { JOY_RETURNU = 0x00000010 } +enum : uint { JOY_RETURNV = 0x00000020 } +enum : uint { JOY_RETURNPOV = 0x00000040 } +enum : uint { JOY_RETURNBUTTONS = 0x00000080 } +enum : uint { JOY_RETURNRAWDATA = 0x00000100 } +enum : uint { JOY_RETURNPOVCTS = 0x00000200 } +enum : uint { JOY_RETURNCENTERED = 0x00000400 } +enum : uint { JOY_USEDEADZONE = 0x00000800 } +enum : uint { JOY_RETURNALL = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV | JOY_RETURNBUTTONS } +enum : uint { JOY_CAL_READALWAYS = 0x00010000 } +enum : uint { JOY_CAL_READXYONLY = 0x00020000 } +enum : uint { JOY_CAL_READ3 = 0x00040000 } +enum : uint { JOY_CAL_READ4 = 0x00080000 } +enum : uint { JOY_CAL_READXONLY = 0x00100000 } +enum : uint { JOY_CAL_READYONLY = 0x00200000 } +enum : uint { JOY_CAL_READ5 = 0x00400000 } +enum : uint { JOY_CAL_READ6 = 0x00800000 } +enum : uint { JOY_CAL_READZONLY = 0x01000000 } +enum : uint { JOY_CAL_READRONLY = 0x02000000 } +enum : uint { JOY_CAL_READUONLY = 0x04000000 } +enum : uint { JOY_CAL_READVONLY = 0x08000000 } + +enum : uint { JOYSTICKID1 = 0 } +enum : uint { JOYSTICKID2 = 1 } + +enum : uint { JOYCAPS_HASZ = 0x0001 } +enum : uint { JOYCAPS_HASR = 0x0002 } +enum : uint { JOYCAPS_HASU = 0x0004 } +enum : uint { JOYCAPS_HASV = 0x0008 } +enum : uint { JOYCAPS_HASPOV = 0x0010 } +enum : uint { JOYCAPS_POV4DIR = 0x0020 } +enum : uint { JOYCAPS_POVCTS = 0x0040 } + +// #ifdef _WIN32 + +struct tagJOYCAPSA { + 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; +// #if (WINVER >= 0x0400) + 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]; +// #endif +} +alias tagJOYCAPSA JOYCAPSA; +alias tagJOYCAPSA* PJOYCAPSA; +alias tagJOYCAPSA* NPJOYCAPSA; +alias tagJOYCAPSA* LPJOYCAPSA; + +struct tagJOYCAPSW { + 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; +// #if (WINVER >= 0x0400) + 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]; +// #endif +} +alias tagJOYCAPSW JOYCAPSW; +alias tagJOYCAPSW* PJOYCAPSW; +alias tagJOYCAPSW* NPJOYCAPSW; +alias tagJOYCAPSW* LPJOYCAPSW; + +// #ifdef UNICODE +// ... +// #else +alias JOYCAPSA JOYCAPS; +alias PJOYCAPSA PJOYCAPS; +alias NPJOYCAPSA NPJOYCAPS; +alias LPJOYCAPSA LPJOYCAPS; +// #endif // UNICODE +struct tagJOYCAPS2A { + 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]; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagJOYCAPS2A JOYCAPS2A; +alias tagJOYCAPS2A* PJOYCAPS2A; +alias tagJOYCAPS2A* NPJOYCAPS2A; +alias tagJOYCAPS2A* LPJOYCAPS2A; + +struct tagJOYCAPS2W { + 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]; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagJOYCAPS2W JOYCAPS2W; +alias tagJOYCAPS2W* PJOYCAPS2W; +alias tagJOYCAPS2W* NPJOYCAPS2W; +alias tagJOYCAPS2W* LPJOYCAPS2W; + +// #ifdef UNICODE +// ... +// #else +alias JOYCAPS2A JOYCAPS2; +alias PJOYCAPS2A PJOYCAPS2; +alias NPJOYCAPS2A NPJOYCAPS2; +alias LPJOYCAPS2A LPJOYCAPS2; +// #endif // UNICODE + +// #else +// ... +// #if (WINVER >= 0x0400) +// ... +// #endif +// ... +// #endif + +struct joyinfo_tag { + UINT wXpos; + UINT wYpos; + UINT wZpos; + UINT wButtons; +} +alias joyinfo_tag JOYINFO; +alias joyinfo_tag* PJOYINFO; +alias joyinfo_tag* NPJOYINFO; +alias joyinfo_tag* LPJOYINFO; + +// #if(WINVER >= 0x0400) +struct joyinfoex_tag { + 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_tag JOYINFOEX; +alias joyinfoex_tag* PJOYINFOEX; +alias joyinfoex_tag* NPJOYINFOEX; +alias joyinfoex_tag* LPJOYINFOEX; + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export UINT joyGetNumDevs(); +// #ifdef _WIN32 + +extern(Windows) export MMRESULT joyGetDevCapsA(UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc); +extern(Windows) export MMRESULT joyGetDevCapsW(UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc); +// #ifdef UNICODE +// #... +// #else +alias joyGetDevCapsA joyGetDevCaps; +// #endif // !UNICODE + +// #else +// ... +// #endif +extern(Windows) export MMRESULT joyGetPos(UINT uJoyID, LPJOYINFO pji); + +// #if(WINVER >= 0x0400) +extern(Windows) export MMRESULT joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export MMRESULT joyGetThreshold(UINT uJoyID, LPUINT puThreshold); +extern(Windows) export MMRESULT joyReleaseCapture(UINT uJoyID); +extern(Windows) export MMRESULT joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, + BOOL fChanged); +extern(Windows) export MMRESULT joySetThreshold(UINT uJoyID, UINT uThreshold); + +// #endif /* ifndef MMNOJOY */ + +// #ifndef MMNOMMIO + +enum : uint { MMIOERR_BASE = 256 } +enum : uint { MMIOERR_FILENOTFOUND = MMIOERR_BASE + 1 } +enum : uint { MMIOERR_OUTOFMEMORY = MMIOERR_BASE + 2 } +enum : uint { MMIOERR_CANNOTOPEN = MMIOERR_BASE + 3 } +enum : uint { MMIOERR_CANNOTCLOSE = MMIOERR_BASE + 4 } +enum : uint { MMIOERR_CANNOTREAD = MMIOERR_BASE + 5 } +enum : uint { MMIOERR_CANNOTWRITE = MMIOERR_BASE + 6 } +enum : uint { MMIOERR_CANNOTSEEK = MMIOERR_BASE + 7 } +enum : uint { MMIOERR_CANNOTEXPAND = MMIOERR_BASE + 8 } +enum : uint { MMIOERR_CHUNKNOTFOUND = MMIOERR_BASE + 9 } +enum : uint { MMIOERR_UNBUFFERED = MMIOERR_BASE + 10 } +enum : uint { MMIOERR_PATHNOTFOUND = MMIOERR_BASE + 11 } +enum : uint { MMIOERR_ACCESSDENIED = MMIOERR_BASE + 12 } +enum : uint { MMIOERR_SHARINGVIOLATION = MMIOERR_BASE + 13 } +enum : uint { MMIOERR_NETWORKERROR = MMIOERR_BASE + 14 } +enum : uint { MMIOERR_TOOMANYOPENFILES = MMIOERR_BASE + 15 } +enum : uint { MMIOERR_INVALIDFILE = MMIOERR_BASE + 16 } + +const char CFSEPCHAR = '+'; + +alias DWORD FOURCC; +alias char* HPSTR; +alias void* HMMIO; +// typedef LRESULT (CALLBACK MMIOPROC)(LPSTR lpmmioinfo, UINT uMsg, LPARAM lParam1, LPARAM lParam2); +extern(Windows) alias LRESULT function(LPSTR lpmmioinfo, UINT uMsg, LPARAM lParam1, LPARAM lParam2) 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 MMIOINFO; +alias _MMIOINFO* PMMIOINFO; +alias _MMIOINFO* NPMMIOINFO; +alias _MMIOINFO* LPMMIOINFO; + +alias MMIOINFO* LPCMMIOINFO; + +struct _MMCKINFO { + FOURCC ckid; + DWORD cksize; + FOURCC fccType; + DWORD dwDataOffset; + DWORD dwFlags; +} +alias _MMCKINFO MMCKINFO; +alias _MMCKINFO* PMMCKINFO; +alias _MMCKINFO* NPMMCKINFO; +alias _MMCKINFO* LPMMCKINFO; + +alias MMCKINFO* LPCMMCKINFO; + +enum : uint { MMIO_RWMODE = 0x00000003 } +enum : uint { MMIO_SHAREMODE = 0x00000070 } + +enum : uint { MMIO_CREATE = 0x00001000 } +enum : uint { MMIO_PARSE = 0x00000100 } +enum : uint { MMIO_DELETE = 0x00000200 } +enum : uint { MMIO_EXIST = 0x00004000 } +enum : uint { MMIO_ALLOCBUF = 0x00010000 } +enum : uint { MMIO_GETTEMP = 0x00020000 } + +enum : uint { MMIO_DIRTY = 0x10000000 } + +enum : uint { MMIO_READ = 0x00000000 } +enum : uint { MMIO_WRITE = 0x00000001 } +enum : uint { MMIO_READWRITE = 0x00000002 } + +enum : uint { MMIO_COMPAT = 0x00000000 } +enum : uint { MMIO_EXCLUSIVE = 0x00000010 } +enum : uint { MMIO_DENYWRITE = 0x00000020 } +enum : uint { MMIO_DENYREAD = 0x00000030 } +enum : uint { MMIO_DENYNONE = 0x00000040 } + +enum : uint { MMIO_FHOPEN = 0x0010 } +enum : uint { MMIO_EMPTYBUF = 0x0010 } +enum : uint { MMIO_TOUPPER = 0x0010 } +enum : uint { MMIO_INSTALLPROC = 0x00010000 } +enum : uint { MMIO_GLOBALPROC = 0x10000000 } +enum : uint { MMIO_REMOVEPROC = 0x00020000 } +enum : uint { MMIO_UNICODEPROC = 0x01000000 } +enum : uint { MMIO_FINDPROC = 0x00040000 } +enum : uint { MMIO_FINDCHUNK = 0x0010 } +enum : uint { MMIO_FINDRIFF = 0x0020 } +enum : uint { MMIO_FINDLIST = 0x0040 } +enum : uint { MMIO_CREATERIFF = 0x0020 } +enum : uint { MMIO_CREATELIST = 0x0040 } + +alias MMIO_READ MMIOM_READ; +alias MMIO_WRITE MMIOM_WRITE; +enum : uint { MMIOM_SEEK = 2 } +enum : uint { MMIOM_OPEN = 3 } +enum : uint { MMIOM_CLOSE = 4 } +enum : uint { MMIOM_WRITEFLUSH = 5 } + +// #if (WINVER >= 0x030a) +enum : uint { MMIOM_RENAME = 6 } +// #endif /* ifdef WINVER >= 0x030a */ + +enum : uint { MMIOM_USER = 0x8000 } + +// #define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F') +// #define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T') + +// #define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ') +// #define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ') + +// #ifndef SEEK_SET +enum : uint { SEEK_SET = 0 } +enum : uint { SEEK_CUR = 1 } +enum : uint { SEEK_END = 2 } +// #endif /* ifndef SEEK_SET */ + +enum : uint { MMIO_DEFAULTBUFFER = 8192 } + +// #define mmioFOURCC(ch0, ch1, ch2, ch3) MAKEFOURCC(ch0, ch1, ch2, ch3) + +// #ifdef _WIN32 + +extern(Windows) export FOURCC mmioStringToFOURCCA(LPCSTR sz, UINT uFlags); +extern(Windows) export FOURCC mmioStringToFOURCCW(LPCWSTR sz, UINT uFlags); +// #ifdef UNICODE +// #... +// #else +alias mmioStringToFOURCCA mmioStringToFOURCC; +// #endif // !UNICODE +extern(Windows) export LPMMIOPROC mmioInstallIOProcA(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); +extern(Windows) export LPMMIOPROC mmioInstallIOProcW(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias mmioInstallIOProcA mmioInstallIOProc; +// #endif // !UNICODE +extern(Windows) export HMMIO mmioOpenA(LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); +extern(Windows) export HMMIO mmioOpenW(LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); +// #ifdef UNICODE +// #... +// #else +alias mmioOpenA mmioOpen; +// #endif // !UNICODE +extern(Windows) export MMRESULT mmioRenameA(LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename); +extern(Windows) export MMRESULT mmioRenameW(LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename); +// #ifdef UNICODE +// #... +// #else +alias mmioRenameA mmioRename; +// #endif // !UNICODE +// #else +// ... +// #if (WINVER >= 0x030a) +// ... +// #endif /* ifdef WINVER >= 0x030a */ +// #endif + +extern(Windows) export MMRESULT mmioClose(HMMIO hmmio, UINT fuClose); +extern(Windows) export LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch); +extern(Windows) export LONG mmioWrite(HMMIO hmmio, char * pch, LONG cch); +extern(Windows) export LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin); +extern(Windows) export MMRESULT mmioGetInfo(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo); +extern(Windows) export MMRESULT mmioSetInfo(HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo); +extern(Windows) export MMRESULT mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, + UINT fuBuffer); +extern(Windows) export MMRESULT mmioFlush(HMMIO hmmio, UINT fuFlush); +extern(Windows) export MMRESULT mmioAdvance(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance); +extern(Windows) export LRESULT mmioSendMessage(HMMIO hmmio, UINT uMsg, + LPARAM lParam1, LPARAM lParam2); +extern(Windows) export MMRESULT mmioDescend(HMMIO hmmio, LPMMCKINFO pmmcki, + MMCKINFO * pmmckiParent, UINT fuDescend); +extern(Windows) export MMRESULT mmioAscend(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend); +extern(Windows) export MMRESULT mmioCreateChunk(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate); + +// #endif /* ifndef MMNOMMIO */ + +// #ifndef MMNOMCI + +// #ifndef _MCIERROR_ /* MCIERROR is defined in some post 3.1 apps */ +// #define _MCIERROR_ +alias DWORD MCIERROR; +// #endif + +// #ifndef _MCIDEVICEID_ /* Same with MCIDEVICEID */ +// #define _MCIDEVICEID_ +alias UINT MCIDEVICEID; +// #endif + +extern(Windows) alias UINT function(MCIDEVICEID mciId, DWORD dwYieldData) YIELDPROC; + +// #ifdef _WIN32 + +extern(Windows) export MCIERROR mciSendCommandA(MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); +extern(Windows) export MCIERROR mciSendCommandW(MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); +// #ifdef UNICODE +// #... +// #else +alias mciSendCommandA mciSendCommand; +// #endif // !UNICODE +extern(Windows) export MCIERROR mciSendStringA(LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); +extern(Windows) export MCIERROR mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); +// #ifdef UNICODE +// #... +// #else +alias mciSendStringA mciSendString; +// #endif // !UNICODE +extern(Windows) export MCIDEVICEID mciGetDeviceIDA(LPCSTR pszDevice); +extern(Windows) export MCIDEVICEID mciGetDeviceIDW(LPCWSTR pszDevice); +// #ifdef UNICODE +// #... +// #else +alias mciGetDeviceIDA mciGetDeviceID; +// #endif // !UNICODE +extern(Windows) export MCIDEVICEID mciGetDeviceIDFromElementIDA(DWORD dwElementID, LPCSTR lpstrType ); +extern(Windows) export MCIDEVICEID mciGetDeviceIDFromElementIDW(DWORD dwElementID, LPCWSTR lpstrType ); +// #ifdef UNICODE +// #... +// #else +alias mciGetDeviceIDFromElementIDA mciGetDeviceIDFromElementID; +// #endif // !UNICODE +extern(Windows) export BOOL mciGetErrorStringA(MCIERROR mcierr, LPSTR pszText, UINT cchText); +extern(Windows) export BOOL mciGetErrorStringW(MCIERROR mcierr, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +// #... +// #else +alias mciGetErrorStringA mciGetErrorString; +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export BOOL mciSetYieldProc(MCIDEVICEID mciId, YIELDPROC fpYieldProc, + DWORD dwYieldData); + +// #if (WINVER >= 0x030a) +extern(Windows) export HTASK mciGetCreatorTask(MCIDEVICEID mciId); +extern(Windows) export YIELDPROC mciGetYieldProc(MCIDEVICEID mciId, LPDWORD pdwYieldData); +// #endif /* ifdef WINVER >= 0x030a */ + +// #if (WINVER < 0x030a) +// ... +// #endif /* ifdef WINVER < 0x030a */ + +enum : uint { MCIERR_INVALID_DEVICE_ID = MCIERR_BASE + 1 } +enum : uint { MCIERR_UNRECOGNIZED_KEYWORD = MCIERR_BASE + 3 } +enum : uint { MCIERR_UNRECOGNIZED_COMMAND = MCIERR_BASE + 5 } +enum : uint { MCIERR_HARDWARE = MCIERR_BASE + 6 } +enum : uint { MCIERR_INVALID_DEVICE_NAME = MCIERR_BASE + 7 } +enum : uint { MCIERR_OUT_OF_MEMORY = MCIERR_BASE + 8 } +enum : uint { MCIERR_DEVICE_OPEN = MCIERR_BASE + 9 } +enum : uint { MCIERR_CANNOT_LOAD_DRIVER = MCIERR_BASE + 10 } +enum : uint { MCIERR_MISSING_COMMAND_STRING = MCIERR_BASE + 11 } +enum : uint { MCIERR_PARAM_OVERFLOW = MCIERR_BASE + 12 } +enum : uint { MCIERR_MISSING_STRING_ARGUMENT = MCIERR_BASE + 13 } +enum : uint { MCIERR_BAD_INTEGER = MCIERR_BASE + 14 } +enum : uint { MCIERR_PARSER_INTERNAL = MCIERR_BASE + 15 } +enum : uint { MCIERR_DRIVER_INTERNAL = MCIERR_BASE + 16 } +enum : uint { MCIERR_MISSING_PARAMETER = MCIERR_BASE + 17 } +enum : uint { MCIERR_UNSUPPORTED_FUNCTION = MCIERR_BASE + 18 } +enum : uint { MCIERR_FILE_NOT_FOUND = MCIERR_BASE + 19 } +enum : uint { MCIERR_DEVICE_NOT_READY = MCIERR_BASE + 20 } +enum : uint { MCIERR_INTERNAL = MCIERR_BASE + 21 } +enum : uint { MCIERR_DRIVER = MCIERR_BASE + 22 } +enum : uint { MCIERR_CANNOT_USE_ALL = MCIERR_BASE + 23 } +enum : uint { MCIERR_MULTIPLE = MCIERR_BASE + 24 } +enum : uint { MCIERR_EXTENSION_NOT_FOUND = MCIERR_BASE + 25 } +enum : uint { MCIERR_OUTOFRANGE = MCIERR_BASE + 26 } +enum : uint { MCIERR_FLAGS_NOT_COMPATIBLE = MCIERR_BASE + 28 } +enum : uint { MCIERR_FILE_NOT_SAVED = MCIERR_BASE + 30 } +enum : uint { MCIERR_DEVICE_TYPE_REQUIRED = MCIERR_BASE + 31 } +enum : uint { MCIERR_DEVICE_LOCKED = MCIERR_BASE + 32 } +enum : uint { MCIERR_DUPLICATE_ALIAS = MCIERR_BASE + 33 } +enum : uint { MCIERR_BAD_CONSTANT = MCIERR_BASE + 34 } +enum : uint { MCIERR_MUST_USE_SHAREABLE = MCIERR_BASE + 35 } +enum : uint { MCIERR_MISSING_DEVICE_NAME = MCIERR_BASE + 36 } +enum : uint { MCIERR_BAD_TIME_FORMAT = MCIERR_BASE + 37 } +enum : uint { MCIERR_NO_CLOSING_QUOTE = MCIERR_BASE + 38 } +enum : uint { MCIERR_DUPLICATE_FLAGS = MCIERR_BASE + 39 } +enum : uint { MCIERR_INVALID_FILE = MCIERR_BASE + 40 } +enum : uint { MCIERR_NULL_PARAMETER_BLOCK = MCIERR_BASE + 41 } +enum : uint { MCIERR_UNNAMED_RESOURCE = MCIERR_BASE + 42 } +enum : uint { MCIERR_NEW_REQUIRES_ALIAS = MCIERR_BASE + 43 } +enum : uint { MCIERR_NOTIFY_ON_AUTO_OPEN = MCIERR_BASE + 44 } +enum : uint { MCIERR_NO_ELEMENT_ALLOWED = MCIERR_BASE + 45 } +enum : uint { MCIERR_NONAPPLICABLE_FUNCTION = MCIERR_BASE + 46 } +enum : uint { MCIERR_ILLEGAL_FOR_AUTO_OPEN = MCIERR_BASE + 47 } +enum : uint { MCIERR_FILENAME_REQUIRED = MCIERR_BASE + 48 } +enum : uint { MCIERR_EXTRA_CHARACTERS = MCIERR_BASE + 49 } +enum : uint { MCIERR_DEVICE_NOT_INSTALLED = MCIERR_BASE + 50 } +enum : uint { MCIERR_GET_CD = MCIERR_BASE + 51 } +enum : uint { MCIERR_SET_CD = MCIERR_BASE + 52 } +enum : uint { MCIERR_SET_DRIVE = MCIERR_BASE + 53 } +enum : uint { MCIERR_DEVICE_LENGTH = MCIERR_BASE + 54 } +enum : uint { MCIERR_DEVICE_ORD_LENGTH = MCIERR_BASE + 55 } +enum : uint { MCIERR_NO_INTEGER = MCIERR_BASE + 56 } + +enum : uint { MCIERR_WAVE_OUTPUTSINUSE = MCIERR_BASE + 64 } +enum : uint { MCIERR_WAVE_SETOUTPUTINUSE = MCIERR_BASE + 65 } +enum : uint { MCIERR_WAVE_INPUTSINUSE = MCIERR_BASE + 66 } +enum : uint { MCIERR_WAVE_SETINPUTINUSE = MCIERR_BASE + 67 } +enum : uint { MCIERR_WAVE_OUTPUTUNSPECIFIED = MCIERR_BASE + 68 } +enum : uint { MCIERR_WAVE_INPUTUNSPECIFIED = MCIERR_BASE + 69 } +enum : uint { MCIERR_WAVE_OUTPUTSUNSUITABLE = MCIERR_BASE + 70 } +enum : uint { MCIERR_WAVE_SETOUTPUTUNSUITABLE = MCIERR_BASE + 71 } +enum : uint { MCIERR_WAVE_INPUTSUNSUITABLE = MCIERR_BASE + 72 } +enum : uint { MCIERR_WAVE_SETINPUTUNSUITABLE = MCIERR_BASE + 73 } + +enum : uint { MCIERR_SEQ_DIV_INCOMPATIBLE = MCIERR_BASE + 80 } +enum : uint { MCIERR_SEQ_PORT_INUSE = MCIERR_BASE + 81 } +enum : uint { MCIERR_SEQ_PORT_NONEXISTENT = MCIERR_BASE + 82 } +enum : uint { MCIERR_SEQ_PORT_MAPNODEVICE = MCIERR_BASE + 83 } +enum : uint { MCIERR_SEQ_PORT_MISCERROR = MCIERR_BASE + 84 } +enum : uint { MCIERR_SEQ_TIMER = MCIERR_BASE + 85 } +enum : uint { MCIERR_SEQ_PORTUNSPECIFIED = MCIERR_BASE + 86 } +enum : uint { MCIERR_SEQ_NOMIDIPRESENT = MCIERR_BASE + 87 } + +enum : uint { MCIERR_NO_WINDOW = MCIERR_BASE + 90 } +enum : uint { MCIERR_CREATEWINDOW = MCIERR_BASE + 91 } +enum : uint { MCIERR_FILE_READ = MCIERR_BASE + 92 } +enum : uint { MCIERR_FILE_WRITE = MCIERR_BASE + 93 } + +enum : uint { MCIERR_NO_IDENTITY = MCIERR_BASE + 94 } + +enum : uint { MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256 } + +alias DRV_MCI_FIRST MCI_FIRST; + +enum : uint { MCI_OPEN = 0x0803 } +enum : uint { MCI_CLOSE = 0x0804 } +enum : uint { MCI_ESCAPE = 0x0805 } +enum : uint { MCI_PLAY = 0x0806 } +enum : uint { MCI_SEEK = 0x0807 } +enum : uint { MCI_STOP = 0x0808 } +enum : uint { MCI_PAUSE = 0x0809 } +enum : uint { MCI_INFO = 0x080A } +enum : uint { MCI_GETDEVCAPS = 0x080B } +enum : uint { MCI_SPIN = 0x080C } +enum : uint { MCI_SET = 0x080D } +enum : uint { MCI_STEP = 0x080E } +enum : uint { MCI_RECORD = 0x080F } +enum : uint { MCI_SYSINFO = 0x0810 } +enum : uint { MCI_BREAK = 0x0811 } +enum : uint { MCI_SAVE = 0x0813 } +enum : uint { MCI_STATUS = 0x0814 } +enum : uint { MCI_CUE = 0x0830 } +enum : uint { MCI_REALIZE = 0x0840 } +enum : uint { MCI_WINDOW = 0x0841 } +enum : uint { MCI_PUT = 0x0842 } +enum : uint { MCI_WHERE = 0x0843 } +enum : uint { MCI_FREEZE = 0x0844 } +enum : uint { MCI_UNFREEZE = 0x0845 } +enum : uint { MCI_LOAD = 0x0850 } +enum : uint { MCI_CUT = 0x0851 } +enum : uint { MCI_COPY = 0x0852 } +enum : uint { MCI_PASTE = 0x0853 } +enum : uint { MCI_UPDATE = 0x0854 } +enum : uint { MCI_RESUME = 0x0855 } +enum : uint { MCI_DELETE = 0x0856 } + +enum : uint { MCI_USER_MESSAGES = DRV_MCI_FIRST + 0x400 } +enum : uint { MCI_LAST = 0x0FFF } + +enum : uint { MCI_ALL_DEVICE_ID = cast(MCIDEVICEID)-1 } + +enum : uint { MCI_DEVTYPE_VCR = 513 } +enum : uint { MCI_DEVTYPE_VIDEODISC = 514 } +enum : uint { MCI_DEVTYPE_OVERLAY = 515 } +enum : uint { MCI_DEVTYPE_CD_AUDIO = 516 } +enum : uint { MCI_DEVTYPE_DAT = 517 } +enum : uint { MCI_DEVTYPE_SCANNER = 518 } +enum : uint { MCI_DEVTYPE_ANIMATION = 519 } +enum : uint { MCI_DEVTYPE_DIGITAL_VIDEO = 520 } +enum : uint { MCI_DEVTYPE_OTHER = 521 } +enum : uint { MCI_DEVTYPE_WAVEFORM_AUDIO = 522 } +enum : uint { MCI_DEVTYPE_SEQUENCER = 523 } + +alias MCI_DEVTYPE_VCR MCI_DEVTYPE_FIRST; +alias MCI_DEVTYPE_SEQUENCER MCI_DEVTYPE_LAST; + +enum : uint { MCI_DEVTYPE_FIRST_USER = 0x1000 } + +enum : uint { MCI_MODE_NOT_READY = MCI_STRING_OFFSET + 12 } +enum : uint { MCI_MODE_STOP = MCI_STRING_OFFSET + 13 } +enum : uint { MCI_MODE_PLAY = MCI_STRING_OFFSET + 14 } +enum : uint { MCI_MODE_RECORD = MCI_STRING_OFFSET + 15 } +enum : uint { MCI_MODE_SEEK = MCI_STRING_OFFSET + 16 } +enum : uint { MCI_MODE_PAUSE = MCI_STRING_OFFSET + 17 } +enum : uint { MCI_MODE_OPEN = MCI_STRING_OFFSET + 18 } + +enum : uint { MCI_FORMAT_MILLISECONDS = 0 } +enum : uint { MCI_FORMAT_HMS = 1 } +enum : uint { MCI_FORMAT_MSF = 2 } +enum : uint { MCI_FORMAT_FRAMES = 3 } +enum : uint { MCI_FORMAT_SMPTE_24 = 4 } +enum : uint { MCI_FORMAT_SMPTE_25 = 5 } +enum : uint { MCI_FORMAT_SMPTE_30 = 6 } +enum : uint { MCI_FORMAT_SMPTE_30DROP = 7 } +enum : uint { MCI_FORMAT_BYTES = 8 } +enum : uint { MCI_FORMAT_SAMPLES = 9 } +enum : uint { MCI_FORMAT_TMSF = 10 } + +// #define MCI_MSF_MINUTE(msf) ((BYTE)(msf)) +// #define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8)) +// #define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16)) + +// #define MCI_MAKE_MSF(m, s, f) ((DWORD)(((BYTE)(m) | ((WORD)(s)<<8)) | (((DWORD)(BYTE)(f))<<16))) + +// #define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf)) +// #define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8)) +// #define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16)) +// #define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24)) + +// #define MCI_MAKE_TMSF(t, m, s, f) ((DWORD)(((BYTE)(t) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s) | ((WORD)(f)<<8))<<16))) + +// #define MCI_HMS_HOUR(hms) ((BYTE)(hms)) +// #define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8)) +// #define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16)) + +// #define MCI_MAKE_HMS(h, m, s) ((DWORD)(((BYTE)(h) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s))<<16))) + +enum : uint { MCI_NOTIFY_SUCCESSFUL = 0x0001 } +enum : uint { MCI_NOTIFY_SUPERSEDED = 0x0002 } +enum : uint { MCI_NOTIFY_ABORTED = 0x0004 } +enum : uint { MCI_NOTIFY_FAILURE = 0x0008 } + +enum : uint { MCI_NOTIFY = 0x00000001 } +enum : uint { MCI_WAIT = 0x00000002 } +enum : uint { MCI_FROM = 0x00000004 } +enum : uint { MCI_TO = 0x00000008 } +enum : uint { MCI_TRACK = 0x00000010 } + +enum : uint { MCI_OPEN_SHAREABLE = 0x00000100 } +enum : uint { MCI_OPEN_ELEMENT = 0x00000200 } +enum : uint { MCI_OPEN_ALIAS = 0x00000400 } +enum : uint { MCI_OPEN_ELEMENT_ID = 0x00000800 } +enum : uint { MCI_OPEN_TYPE_ID = 0x00001000 } +enum : uint { MCI_OPEN_TYPE = 0x00002000 } + +enum : uint { MCI_SEEK_TO_START = 0x00000100 } +enum : uint { MCI_SEEK_TO_END = 0x00000200 } + +enum : uint { MCI_STATUS_ITEM = 0x00000100 } +enum : uint { MCI_STATUS_START = 0x00000200 } + +enum : uint { MCI_STATUS_LENGTH = 0x00000001 } +enum : uint { MCI_STATUS_POSITION = 0x00000002 } +enum : uint { MCI_STATUS_NUMBER_OF_TRACKS = 0x00000003 } +enum : uint { MCI_STATUS_MODE = 0x00000004 } +enum : uint { MCI_STATUS_MEDIA_PRESENT = 0x00000005 } +enum : uint { MCI_STATUS_TIME_FORMAT = 0x00000006 } +enum : uint { MCI_STATUS_READY = 0x00000007 } +enum : uint { MCI_STATUS_CURRENT_TRACK = 0x00000008 } + +enum : uint { MCI_INFO_PRODUCT = 0x00000100 } +enum : uint { MCI_INFO_FILE = 0x00000200 } +enum : uint { MCI_INFO_MEDIA_UPC = 0x00000400 } +enum : uint { MCI_INFO_MEDIA_IDENTITY = 0x00000800 } +enum : uint { MCI_INFO_NAME = 0x00001000 } +enum : uint { MCI_INFO_COPYRIGHT = 0x00002000 } + +enum : uint { MCI_GETDEVCAPS_ITEM = 0x00000100 } + +enum : uint { MCI_GETDEVCAPS_CAN_RECORD = 0x00000001 } +enum : uint { MCI_GETDEVCAPS_HAS_AUDIO = 0x00000002 } +enum : uint { MCI_GETDEVCAPS_HAS_VIDEO = 0x00000003 } +enum : uint { MCI_GETDEVCAPS_DEVICE_TYPE = 0x00000004 } +enum : uint { MCI_GETDEVCAPS_USES_FILES = 0x00000005 } +enum : uint { MCI_GETDEVCAPS_COMPOUND_DEVICE = 0x00000006 } +enum : uint { MCI_GETDEVCAPS_CAN_EJECT = 0x00000007 } +enum : uint { MCI_GETDEVCAPS_CAN_PLAY = 0x00000008 } +enum : uint { MCI_GETDEVCAPS_CAN_SAVE = 0x00000009 } + +enum : uint { MCI_SYSINFO_QUANTITY = 0x00000100 } +enum : uint { MCI_SYSINFO_OPEN = 0x00000200 } +enum : uint { MCI_SYSINFO_NAME = 0x00000400 } +enum : uint { MCI_SYSINFO_INSTALLNAME = 0x00000800 } + +enum : uint { MCI_SET_DOOR_OPEN = 0x00000100 } +enum : uint { MCI_SET_DOOR_CLOSED = 0x00000200 } +enum : uint { MCI_SET_TIME_FORMAT = 0x00000400 } +enum : uint { MCI_SET_AUDIO = 0x00000800 } +enum : uint { MCI_SET_VIDEO = 0x00001000 } +enum : uint { MCI_SET_ON = 0x00002000 } +enum : uint { MCI_SET_OFF = 0x00004000 } + +enum : uint { MCI_SET_AUDIO_ALL = 0x00000000 } +enum : uint { MCI_SET_AUDIO_LEFT = 0x00000001 } +enum : uint { MCI_SET_AUDIO_RIGHT = 0x00000002 } + +enum : uint { MCI_BREAK_KEY = 0x00000100 } +enum : uint { MCI_BREAK_HWND = 0x00000200 } +enum : uint { MCI_BREAK_OFF = 0x00000400 } + +enum : uint { MCI_RECORD_INSERT = 0x00000100 } +enum : uint { MCI_RECORD_OVERWRITE = 0x00000200 } + +enum : uint { MCI_SAVE_FILE = 0x00000100 } + +enum : uint { MCI_LOAD_FILE = 0x00000100 } + +struct tagMCI_GENERIC_PARMS { + DWORD_PTR dwCallback; +} +alias tagMCI_GENERIC_PARMS MCI_GENERIC_PARMS; +alias tagMCI_GENERIC_PARMS* PMCI_GENERIC_PARMS; +alias tagMCI_GENERIC_PARMS* LPMCI_GENERIC_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; +} +alias tagMCI_OPEN_PARMSA MCI_OPEN_PARMSA; +alias tagMCI_OPEN_PARMSA* PMCI_OPEN_PARMSA; +alias tagMCI_OPEN_PARMSA* LPMCI_OPEN_PARMSA; + +struct tagMCI_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; +} +alias tagMCI_OPEN_PARMSW MCI_OPEN_PARMSW; +alias tagMCI_OPEN_PARMSW* PMCI_OPEN_PARMSW; +alias tagMCI_OPEN_PARMSW* LPMCI_OPEN_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_OPEN_PARMSA MCI_OPEN_PARMS; +alias PMCI_OPEN_PARMSA PMCI_OPEN_PARMS; +alias LPMCI_OPEN_PARMSA LPMCI_OPEN_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias tagMCI_PLAY_PARMS MCI_PLAY_PARMS; +alias tagMCI_PLAY_PARMS* PMCI_PLAY_PARMS; +alias tagMCI_PLAY_PARMS* LPMCI_PLAY_PARMS; + +struct tagMCI_SEEK_PARMS { + DWORD_PTR dwCallback; + DWORD dwTo; +} +alias tagMCI_SEEK_PARMS MCI_SEEK_PARMS; +alias tagMCI_SEEK_PARMS* PMCI_SEEK_PARMS; +alias tagMCI_SEEK_PARMS* LPMCI_SEEK_PARMS; + +struct tagMCI_STATUS_PARMS { + DWORD_PTR dwCallback; + DWORD_PTR dwReturn; + DWORD dwItem; + DWORD dwTrack; +} +alias tagMCI_STATUS_PARMS MCI_STATUS_PARMS; +alias tagMCI_STATUS_PARMS* PMCI_STATUS_PARMS; +alias tagMCI_STATUS_PARMS* LPMCI_STATUS_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_INFO_PARMSA { + DWORD_PTR dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; +} +alias tagMCI_INFO_PARMSA MCI_INFO_PARMSA; +alias tagMCI_INFO_PARMSA* LPMCI_INFO_PARMSA; + +struct tagMCI_INFO_PARMSW { + DWORD_PTR dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; +} +alias tagMCI_INFO_PARMSW MCI_INFO_PARMSW; +alias tagMCI_INFO_PARMSW* LPMCI_INFO_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_INFO_PARMSA MCI_INFO_PARMS; +alias LPMCI_INFO_PARMSA LPMCI_INFO_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_GETDEVCAPS_PARMS { + DWORD_PTR dwCallback; + DWORD dwReturn; + DWORD dwItem; +} +alias tagMCI_GETDEVCAPS_PARMS MCI_GETDEVCAPS_PARMS; +alias tagMCI_GETDEVCAPS_PARMS* PMCI_GETDEVCAPS_PARMS; +alias tagMCI_GETDEVCAPS_PARMS* LPMCI_GETDEVCAPS_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_SYSINFO_PARMSA { + DWORD_PTR dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias tagMCI_SYSINFO_PARMSA MCI_SYSINFO_PARMSA; +alias tagMCI_SYSINFO_PARMSA* PMCI_SYSINFO_PARMSA; +alias tagMCI_SYSINFO_PARMSA* LPMCI_SYSINFO_PARMSA; + +struct tagMCI_SYSINFO_PARMSW { + DWORD_PTR dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias tagMCI_SYSINFO_PARMSW MCI_SYSINFO_PARMSW; +alias tagMCI_SYSINFO_PARMSW* PMCI_SYSINFO_PARMSW; +alias tagMCI_SYSINFO_PARMSW* LPMCI_SYSINFO_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS; +alias PMCI_SYSINFO_PARMSA PMCI_SYSINFO_PARMS; +alias LPMCI_SYSINFO_PARMSA LPMCI_SYSINFO_PARMS; +// #endif // UNICODE +// #else +// ... +// #endif + +struct tagMCI_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} +alias tagMCI_SET_PARMS MCI_SET_PARMS; +alias tagMCI_SET_PARMS* PMCI_SET_PARMS; +alias tagMCI_SET_PARMS* LPMCI_SET_PARMS; + +struct tagMCI_BREAK_PARMS { + DWORD_PTR dwCallback; +// #ifdef _WIN32 + int nVirtKey; + HWND hwndBreak; +// #else +// ... +// #endif +} +alias tagMCI_BREAK_PARMS MCI_BREAK_PARMS; +alias tagMCI_BREAK_PARMS* PMCI_BREAK_PARMS; +alias tagMCI_BREAK_PARMS* LPMCI_BREAK_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_SAVE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; +} +alias tagMCI_SAVE_PARMSA MCI_SAVE_PARMSA; +alias tagMCI_SAVE_PARMSA* PMCI_SAVE_PARMSA; +alias tagMCI_SAVE_PARMSA* LPMCI_SAVE_PARMSA; + +struct tagMCI_SAVE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; +} +alias tagMCI_SAVE_PARMSW MCI_SAVE_PARMSW; +alias tagMCI_SAVE_PARMSW* PMCI_SAVE_PARMSW; +alias tagMCI_SAVE_PARMSW* LPMCI_SAVE_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_SAVE_PARMSA MCI_SAVE_PARMS; +alias PMCI_SAVE_PARMSA PMCI_SAVE_PARMS; +alias LPMCI_SAVE_PARMSA LPMCI_SAVE_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +struct tagMCI_LOAD_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; +} +alias tagMCI_LOAD_PARMSA MCI_LOAD_PARMSA; +alias tagMCI_LOAD_PARMSA* PMCI_LOAD_PARMSA; +alias tagMCI_LOAD_PARMSA* LPMCI_LOAD_PARMSA; + +struct tagMCI_LOAD_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; +} +alias tagMCI_LOAD_PARMSW MCI_LOAD_PARMSW; +alias tagMCI_LOAD_PARMSW* PMCI_LOAD_PARMSW; +alias tagMCI_LOAD_PARMSW* LPMCI_LOAD_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_LOAD_PARMSA MCI_LOAD_PARMS; +alias PMCI_LOAD_PARMSA PMCI_LOAD_PARMS; +alias LPMCI_LOAD_PARMSA LPMCI_LOAD_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_RECORD_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias tagMCI_RECORD_PARMS MCI_RECORD_PARMS; +alias tagMCI_RECORD_PARMS* LPMCI_RECORD_PARMS; + +enum : uint { MCI_VD_MODE_PARK = MCI_VD_OFFSET + 1 } + +enum : uint { MCI_VD_MEDIA_CLV = MCI_VD_OFFSET + 2 } +enum : uint { MCI_VD_MEDIA_CAV = MCI_VD_OFFSET + 3 } +enum : uint { MCI_VD_MEDIA_OTHER = MCI_VD_OFFSET + 4 } + +enum : uint { MCI_VD_FORMAT_TRACK = 0x4001 } + +enum : uint { MCI_VD_PLAY_REVERSE = 0x00010000 } +enum : uint { MCI_VD_PLAY_FAST = 0x00020000 } +enum : uint { MCI_VD_PLAY_SPEED = 0x00040000 } +enum : uint { MCI_VD_PLAY_SCAN = 0x00080000 } +enum : uint { MCI_VD_PLAY_SLOW = 0x00100000 } + +enum : uint { MCI_VD_SEEK_REVERSE = 0x00010000 } + +enum : uint { MCI_VD_STATUS_SPEED = 0x00004002 } +enum : uint { MCI_VD_STATUS_FORWARD = 0x00004003 } +enum : uint { MCI_VD_STATUS_MEDIA_TYPE = 0x00004004 } +enum : uint { MCI_VD_STATUS_SIDE = 0x00004005 } +enum : uint { MCI_VD_STATUS_DISC_SIZE = 0x00004006 } + +enum : uint { MCI_VD_GETDEVCAPS_CLV = 0x00010000 } +enum : uint { MCI_VD_GETDEVCAPS_CAV = 0x00020000 } + +enum : uint { MCI_VD_SPIN_UP = 0x00010000 } +enum : uint { MCI_VD_SPIN_DOWN = 0x00020000 } + +enum : uint { MCI_VD_GETDEVCAPS_CAN_REVERSE = 0x00004002 } +enum : uint { MCI_VD_GETDEVCAPS_FAST_RATE = 0x00004003 } +enum : uint { MCI_VD_GETDEVCAPS_SLOW_RATE = 0x00004004 } +enum : uint { MCI_VD_GETDEVCAPS_NORMAL_RATE = 0x00004005 } + +enum : uint { MCI_VD_STEP_FRAMES = 0x00010000 } +enum : uint { MCI_VD_STEP_REVERSE = 0x00020000 } + +enum : uint { MCI_VD_ESCAPE_STRING = 0x00000100 } + +struct tagMCI_VD_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias tagMCI_VD_PLAY_PARMS MCI_VD_PLAY_PARMS; +alias tagMCI_VD_PLAY_PARMS* PMCI_VD_PLAY_PARMS; +alias tagMCI_VD_PLAY_PARMS* LPMCI_VD_PLAY_PARMS; + +struct tagMCI_VD_STEP_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrames; +} +alias tagMCI_VD_STEP_PARMS MCI_VD_STEP_PARMS; +alias tagMCI_VD_STEP_PARMS* PMCI_VD_STEP_PARMS; +alias tagMCI_VD_STEP_PARMS* LPMCI_VD_STEP_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_VD_ESCAPE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpstrCommand; +} +alias tagMCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMSA; +alias tagMCI_VD_ESCAPE_PARMSA* PMCI_VD_ESCAPE_PARMSA; +alias tagMCI_VD_ESCAPE_PARMSA* LPMCI_VD_ESCAPE_PARMSA; + +struct tagMCI_VD_ESCAPE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpstrCommand; +} +alias tagMCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMSW; +alias tagMCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW; +alias tagMCI_VD_ESCAPE_PARMSW* LPMCI_VD_ESCAPE_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS; +alias PMCI_VD_ESCAPE_PARMSA PMCI_VD_ESCAPE_PARMS; +alias LPMCI_VD_ESCAPE_PARMSA LPMCI_VD_ESCAPE_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { MCI_CDA_STATUS_TYPE_TRACK = 0x00004001 } + +enum : uint { MCI_CDA_TRACK_AUDIO = MCI_CD_OFFSET + 0 } +enum : uint { MCI_CDA_TRACK_OTHER = MCI_CD_OFFSET + 1 } + +enum : uint { MCI_WAVE_PCM = MCI_WAVE_OFFSET + 0 } +enum : uint { MCI_WAVE_MAPPER = MCI_WAVE_OFFSET + 1 } + +enum : uint { MCI_WAVE_OPEN_BUFFER = 0x00010000 } + +enum : uint { MCI_WAVE_SET_FORMATTAG = 0x00010000 } +enum : uint { MCI_WAVE_SET_CHANNELS = 0x00020000 } +enum : uint { MCI_WAVE_SET_SAMPLESPERSEC = 0x00040000 } +enum : uint { MCI_WAVE_SET_AVGBYTESPERSEC = 0x00080000 } +enum : uint { MCI_WAVE_SET_BLOCKALIGN = 0x00100000 } +enum : uint { MCI_WAVE_SET_BITSPERSAMPLE = 0x00200000 } + +enum : uint { MCI_WAVE_INPUT = 0x00400000 } +enum : uint { MCI_WAVE_OUTPUT = 0x00800000 } + +enum : uint { MCI_WAVE_STATUS_FORMATTAG = 0x00004001 } +enum : uint { MCI_WAVE_STATUS_CHANNELS = 0x00004002 } +enum : uint { MCI_WAVE_STATUS_SAMPLESPERSEC = 0x00004003 } +enum : uint { MCI_WAVE_STATUS_AVGBYTESPERSEC = 0x00004004 } +enum : uint { MCI_WAVE_STATUS_BLOCKALIGN = 0x00004005 } +enum : uint { MCI_WAVE_STATUS_BITSPERSAMPLE = 0x00004006 } +enum : uint { MCI_WAVE_STATUS_LEVEL = 0x00004007 } + +enum : uint { MCI_WAVE_SET_ANYINPUT = 0x04000000 } +enum : uint { MCI_WAVE_SET_ANYOUTPUT = 0x08000000 } + +enum : uint { MCI_WAVE_GETDEVCAPS_INPUTS = 0x00004001 } +enum : uint { MCI_WAVE_GETDEVCAPS_OUTPUTS = 0x00004002 } + +// #ifdef _WIN32 + +struct tagMCI_WAVE_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias tagMCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMSA; +alias tagMCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA; +alias tagMCI_WAVE_OPEN_PARMSA* LPMCI_WAVE_OPEN_PARMSA; + +struct tagMCI_WAVE_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias tagMCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMSW; +alias tagMCI_WAVE_OPEN_PARMSW* PMCI_WAVE_OPEN_PARMSW; +alias tagMCI_WAVE_OPEN_PARMSW* LPMCI_WAVE_OPEN_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS; +alias PMCI_WAVE_OPEN_PARMSA PMCI_WAVE_OPEN_PARMS; +alias LPMCI_WAVE_OPEN_PARMSA LPMCI_WAVE_OPEN_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_WAVE_DELETE_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias tagMCI_WAVE_DELETE_PARMS MCI_WAVE_DELETE_PARMS; +alias tagMCI_WAVE_DELETE_PARMS* PMCI_WAVE_DELETE_PARMS; +alias tagMCI_WAVE_DELETE_PARMS* LPMCI_WAVE_DELETE_PARMS; + +struct tagMCI_WAVE_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +// #ifdef _WIN32 + UINT wInput; + UINT wOutput; +// #else +// ... +// #endif + WORD wFormatTag; + WORD wReserved2; + WORD nChannels; + WORD wReserved3; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wReserved4; + WORD wBitsPerSample; + WORD wReserved5; +} +alias tagMCI_WAVE_SET_PARMS MCI_WAVE_SET_PARMS; +alias tagMCI_WAVE_SET_PARMS* PMCI_WAVE_SET_PARMS; +alias tagMCI_WAVE_SET_PARMS* LPMCI_WAVE_SET_PARMS; + +enum : uint { MCI_SEQ_DIV_PPQN = 0 + MCI_SEQ_OFFSET } +enum : uint { MCI_SEQ_DIV_SMPTE_24 = 1 + MCI_SEQ_OFFSET } +enum : uint { MCI_SEQ_DIV_SMPTE_25 = 2 + MCI_SEQ_OFFSET } +enum : uint { MCI_SEQ_DIV_SMPTE_30DROP = 3 + MCI_SEQ_OFFSET } +enum : uint { MCI_SEQ_DIV_SMPTE_30 = 4 + MCI_SEQ_OFFSET } + +enum : uint { MCI_SEQ_FORMAT_SONGPTR = 0x4001 } +enum : uint { MCI_SEQ_FILE = 0x4002 } +enum : uint { MCI_SEQ_MIDI = 0x4003 } +enum : uint { MCI_SEQ_SMPTE = 0x4004 } +enum : uint { MCI_SEQ_NONE = 65533 } +enum : uint { MCI_SEQ_MAPPER = 65535 } + +enum : uint { MCI_SEQ_STATUS_TEMPO = 0x00004002 } +enum : uint { MCI_SEQ_STATUS_PORT = 0x00004003 } +enum : uint { MCI_SEQ_STATUS_SLAVE = 0x00004007 } +enum : uint { MCI_SEQ_STATUS_MASTER = 0x00004008 } +enum : uint { MCI_SEQ_STATUS_OFFSET = 0x00004009 } +enum : uint { MCI_SEQ_STATUS_DIVTYPE = 0x0000400A } +enum : uint { MCI_SEQ_STATUS_NAME = 0x0000400B } +enum : uint { MCI_SEQ_STATUS_COPYRIGHT = 0x0000400C } + +enum : uint { MCI_SEQ_SET_TEMPO = 0x00010000 } +enum : uint { MCI_SEQ_SET_PORT = 0x00020000 } +enum : uint { MCI_SEQ_SET_SLAVE = 0x00040000 } +enum : uint { MCI_SEQ_SET_MASTER = 0x00080000 } +enum : uint { MCI_SEQ_SET_OFFSET = 0x01000000 } + +struct tagMCI_SEQ_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + DWORD dwTempo; + DWORD dwPort; + DWORD dwSlave; + DWORD dwMaster; + DWORD dwOffset; +} +alias tagMCI_SEQ_SET_PARMS MCI_SEQ_SET_PARMS; +alias tagMCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS; +alias tagMCI_SEQ_SET_PARMS* LPMCI_SEQ_SET_PARMS; + +enum : uint { MCI_ANIM_OPEN_WS = 0x00010000 } +enum : uint { MCI_ANIM_OPEN_PARENT = 0x00020000 } +enum : uint { MCI_ANIM_OPEN_NOSTATIC = 0x00040000 } + +enum : uint { MCI_ANIM_PLAY_SPEED = 0x00010000 } +enum : uint { MCI_ANIM_PLAY_REVERSE = 0x00020000 } +enum : uint { MCI_ANIM_PLAY_FAST = 0x00040000 } +enum : uint { MCI_ANIM_PLAY_SLOW = 0x00080000 } +enum : uint { MCI_ANIM_PLAY_SCAN = 0x00100000 } + +enum : uint { MCI_ANIM_STEP_REVERSE = 0x00010000 } +enum : uint { MCI_ANIM_STEP_FRAMES = 0x00020000 } + +enum : uint { MCI_ANIM_STATUS_SPEED = 0x00004001 } +enum : uint { MCI_ANIM_STATUS_FORWARD = 0x00004002 } +enum : uint { MCI_ANIM_STATUS_HWND = 0x00004003 } +enum : uint { MCI_ANIM_STATUS_HPAL = 0x00004004 } +enum : uint { MCI_ANIM_STATUS_STRETCH = 0x00004005 } + +enum : uint { MCI_ANIM_INFO_TEXT = 0x00010000 } + +enum : uint { MCI_ANIM_GETDEVCAPS_CAN_REVERSE = 0x00004001 } +enum : uint { MCI_ANIM_GETDEVCAPS_FAST_RATE = 0x00004002 } +enum : uint { MCI_ANIM_GETDEVCAPS_SLOW_RATE = 0x00004003 } +enum : uint { MCI_ANIM_GETDEVCAPS_NORMAL_RATE = 0x00004004 } +enum : uint { MCI_ANIM_GETDEVCAPS_PALETTES = 0x00004006 } +enum : uint { MCI_ANIM_GETDEVCAPS_CAN_STRETCH = 0x00004007 } +enum : uint { MCI_ANIM_GETDEVCAPS_MAX_WINDOWS = 0x00004008 } + +enum : uint { MCI_ANIM_REALIZE_NORM = 0x00010000 } +enum : uint { MCI_ANIM_REALIZE_BKGD = 0x00020000 } + +enum : uint { MCI_ANIM_WINDOW_HWND = 0x00010000 } +enum : uint { MCI_ANIM_WINDOW_STATE = 0x00040000 } +enum : uint { MCI_ANIM_WINDOW_TEXT = 0x00080000 } +enum : uint { MCI_ANIM_WINDOW_ENABLE_STRETCH = 0x00100000 } +enum : uint { MCI_ANIM_WINDOW_DISABLE_STRETCH = 0x00200000 } + +enum : uint { MCI_ANIM_WINDOW_DEFAULT = 0x00000000 } + +enum : uint { MCI_ANIM_RECT = 0x00010000 } +enum : uint { MCI_ANIM_PUT_SOURCE = 0x00020000 } +enum : uint { MCI_ANIM_PUT_DESTINATION = 0x00040000 } + +enum : uint { MCI_ANIM_WHERE_SOURCE = 0x00020000 } +enum : uint { MCI_ANIM_WHERE_DESTINATION = 0x00040000 } + +enum : uint { MCI_ANIM_UPDATE_HDC = 0x00020000 } + +// #ifdef _WIN32 + +struct tagMCI_ANIM_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias tagMCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMSA; +alias tagMCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA; +alias tagMCI_ANIM_OPEN_PARMSA* LPMCI_ANIM_OPEN_PARMSA; + +struct tagMCI_ANIM_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias tagMCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMSW; +alias tagMCI_ANIM_OPEN_PARMSW* PMCI_ANIM_OPEN_PARMSW; +alias tagMCI_ANIM_OPEN_PARMSW* LPMCI_ANIM_OPEN_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS; +alias PMCI_ANIM_OPEN_PARMSA PMCI_ANIM_OPEN_PARMS; +alias LPMCI_ANIM_OPEN_PARMSA LPMCI_ANIM_OPEN_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_ANIM_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias tagMCI_ANIM_PLAY_PARMS MCI_ANIM_PLAY_PARMS; +alias tagMCI_ANIM_PLAY_PARMS* PMCI_ANIM_PLAY_PARMS; +alias tagMCI_ANIM_PLAY_PARMS* LPMCI_ANIM_PLAY_PARMS; + +struct tagMCI_ANIM_STEP_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrames; +} +alias tagMCI_ANIM_STEP_PARMS MCI_ANIM_STEP_PARMS; +alias tagMCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS; +alias tagMCI_ANIM_STEP_PARMS* LPMCI_ANIM_STEP_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_ANIM_WINDOW_PARMSA { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias tagMCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMSA; +alias tagMCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA; +alias tagMCI_ANIM_WINDOW_PARMSA* LPMCI_ANIM_WINDOW_PARMSA; + +struct tagMCI_ANIM_WINDOW_PARMSW { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias tagMCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMSW; +alias tagMCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW; +alias tagMCI_ANIM_WINDOW_PARMSW* LPMCI_ANIM_WINDOW_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS; +alias PMCI_ANIM_WINDOW_PARMSA PMCI_ANIM_WINDOW_PARMS; +alias LPMCI_ANIM_WINDOW_PARMSA LPMCI_ANIM_WINDOW_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_ANIM_RECT_PARMS { + DWORD_PTR dwCallback; +// #ifdef MCI_USE_OFFEXT +// ... +// #else /* ifdef MCI_USE_OFFEXT */ + RECT rc; +// #endif /* ifdef MCI_USE_OFFEXT */ +} +alias tagMCI_ANIM_RECT_PARMS MCI_ANIM_RECT_PARMS; + +alias MCI_ANIM_RECT_PARMS* PMCI_ANIM_RECT_PARMS; +alias MCI_ANIM_RECT_PARMS* LPMCI_ANIM_RECT_PARMS; + +struct tagMCI_ANIM_UPDATE_PARMS { + DWORD_PTR dwCallback; + RECT rc; + HDC hDC; +} +alias tagMCI_ANIM_UPDATE_PARMS MCI_ANIM_UPDATE_PARMS; +alias tagMCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS; +alias tagMCI_ANIM_UPDATE_PARMS* LPMCI_ANIM_UPDATE_PARMS; + +enum : uint { MCI_OVLY_OPEN_WS = 0x00010000 } +enum : uint { MCI_OVLY_OPEN_PARENT = 0x00020000 } + +enum : uint { MCI_OVLY_STATUS_HWND = 0x00004001 } +enum : uint { MCI_OVLY_STATUS_STRETCH = 0x00004002 } + +enum : uint { MCI_OVLY_INFO_TEXT = 0x00010000 } + +enum : uint { MCI_OVLY_GETDEVCAPS_CAN_STRETCH = 0x00004001 } +enum : uint { MCI_OVLY_GETDEVCAPS_CAN_FREEZE = 0x00004002 } +enum : uint { MCI_OVLY_GETDEVCAPS_MAX_WINDOWS = 0x00004003 } + +enum : uint { MCI_OVLY_WINDOW_HWND = 0x00010000 } +enum : uint { MCI_OVLY_WINDOW_STATE = 0x00040000 } +enum : uint { MCI_OVLY_WINDOW_TEXT = 0x00080000 } +enum : uint { MCI_OVLY_WINDOW_ENABLE_STRETCH = 0x00100000 } +enum : uint { MCI_OVLY_WINDOW_DISABLE_STRETCH = 0x00200000 } + +enum : uint { MCI_OVLY_WINDOW_DEFAULT = 0x00000000 } + +enum : uint { MCI_OVLY_RECT = 0x00010000 } +enum : uint { MCI_OVLY_PUT_SOURCE = 0x00020000 } +enum : uint { MCI_OVLY_PUT_DESTINATION = 0x00040000 } +enum : uint { MCI_OVLY_PUT_FRAME = 0x00080000 } +enum : uint { MCI_OVLY_PUT_VIDEO = 0x00100000 } + +enum : uint { MCI_OVLY_WHERE_SOURCE = 0x00020000 } +enum : uint { MCI_OVLY_WHERE_DESTINATION = 0x00040000 } +enum : uint { MCI_OVLY_WHERE_FRAME = 0x00080000 } +enum : uint { MCI_OVLY_WHERE_VIDEO = 0x00100000 } + +// #ifdef _WIN32 + +struct tagMCI_OVLY_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias tagMCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMSA; +alias tagMCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA; +alias tagMCI_OVLY_OPEN_PARMSA* LPMCI_OVLY_OPEN_PARMSA; + +struct tagMCI_OVLY_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias tagMCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMSW; +alias tagMCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW; +alias tagMCI_OVLY_OPEN_PARMSW* LPMCI_OVLY_OPEN_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS; +alias PMCI_OVLY_OPEN_PARMSA PMCI_OVLY_OPEN_PARMS; +alias LPMCI_OVLY_OPEN_PARMSA LPMCI_OVLY_OPEN_PARMS; +// #endif // UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +struct tagMCI_OVLY_WINDOW_PARMSA { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias tagMCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMSA; +alias tagMCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA; +alias tagMCI_OVLY_WINDOW_PARMSA* LPMCI_OVLY_WINDOW_PARMSA; + +struct tagMCI_OVLY_WINDOW_PARMSW { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias tagMCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMSW; +alias tagMCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW; +alias tagMCI_OVLY_WINDOW_PARMSW* LPMCI_OVLY_WINDOW_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS; +alias PMCI_OVLY_WINDOW_PARMSA PMCI_OVLY_WINDOW_PARMS; +alias LPMCI_OVLY_WINDOW_PARMSA LPMCI_OVLY_WINDOW_PARMS; +// #endif // UNICODE +// #else +// ... +// #endif + +struct tagMCI_OVLY_RECT_PARMS { + DWORD_PTR dwCallback; +// #ifdef MCI_USE_OFFEXT +// ... +// #else /* ifdef MCI_USE_OFFEXT */ + RECT rc; +// #endif /* ifdef MCI_USE_OFFEXT */ +} +alias tagMCI_OVLY_RECT_PARMS MCI_OVLY_RECT_PARMS; +alias tagMCI_OVLY_RECT_PARMS* PMCI_OVLY_RECT_PARMS; +alias tagMCI_OVLY_RECT_PARMS* LPMCI_OVLY_RECT_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_OVLY_SAVE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias tagMCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMSA; +alias tagMCI_OVLY_SAVE_PARMSA* PMCI_OVLY_SAVE_PARMSA; +alias tagMCI_OVLY_SAVE_PARMSA* LPMCI_OVLY_SAVE_PARMSA; + +struct tagMCI_OVLY_SAVE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias tagMCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMSW; +alias tagMCI_OVLY_SAVE_PARMSW* PMCI_OVLY_SAVE_PARMSW; +alias tagMCI_OVLY_SAVE_PARMSW* LPMCI_OVLY_SAVE_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS; +alias PMCI_OVLY_SAVE_PARMSA PMCI_OVLY_SAVE_PARMS; +alias LPMCI_OVLY_SAVE_PARMSA LPMCI_OVLY_SAVE_PARMS; +// #endif // UNICODE +// #else +// ... +// #endif + +// #ifdef _WIN32 + +struct tagMCI_OVLY_LOAD_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias tagMCI_OVLY_LOAD_PARMSA MCI_OVLY_LOAD_PARMSA; +alias tagMCI_OVLY_LOAD_PARMSA* PMCI_OVLY_LOAD_PARMSA; +alias tagMCI_OVLY_LOAD_PARMSA* LPMCI_OVLY_LOAD_PARMSA; + +struct tagMCI_OVLY_LOAD_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias tagMCI_OVLY_LOAD_PARMSW MCI_OVLY_LOAD_PARMSW; +alias tagMCI_OVLY_LOAD_PARMSW* PMCI_OVLY_LOAD_PARMSW; +alias tagMCI_OVLY_LOAD_PARMSW* LPMCI_OVLY_LOAD_PARMSW; + +// #ifdef UNICODE +// ... +// #else +alias MCI_OVLY_LOAD_PARMSA MCI_OVLY_LOAD_PARMS; +alias PMCI_OVLY_LOAD_PARMSA PMCI_OVLY_LOAD_PARMS; +alias LPMCI_OVLY_LOAD_PARMSA LPMCI_OVLY_LOAD_PARMS; +// #endif // UNICODE +// #else +// ... +// #endif + +// #endif /* ifndef MMNOMCI */ + +// #ifndef NEWTRANSPARENT +enum : uint { NEWTRANSPARENT = 3 } + +enum : uint { QUERYROPSUPPORT = 40 } +// #endif /* ifndef NEWTRANSPARENT */ + +enum : uint { SELECTDIB = 41 } +// #define DIBINDEX(n) MAKELONG((n),0x10FF) + +// #ifndef SC_SCREENSAVE + +enum : uint { SC_SCREENSAVE = 0xF140 } + +// #endif /* ifndef SC_SCREENSAVE */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #ifdef _WIN32 +align: +// #else +// #ifndef RC_INVOKED +// #... +// #endif +// #endif + +// #endif /* _INC_MMSYSTEM */ + ADDED src/win32/ansi/shellapi.d Index: src/win32/ansi/shellapi.d ================================================================== --- src/win32/ansi/shellapi.d +++ src/win32/ansi/shellapi.d @@ -0,0 +1,782 @@ +module win32.ansi.shellapi; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winuser; + +// #ifndef _INC_SHELLAPI +// #define _INC_SHELLAPI + +// #ifndef WINSHELLAPI +// #if !defined(_SHELL32_) +// #define WINSHELLAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #endif // WINSHELLAPI + +// #ifndef SHSTDAPI +// #if !defined(_SHELL32_) +// #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE +// #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE +// #else +// #... +// #... +// #endif +// #endif // SHSTDAPI + +// #ifndef SHDOCAPI +// #if !defined(_SHDOCVW_) +// #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE +// #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE +// #else +// #... +// #... +// #endif +// #endif // SHDOCAPI + +// #if !defined(_WIN64) +align(1): +// #endif + +// #ifdef __cplusplus +// extern "C" { /* Assume C declarations for C++ */ +// #endif /* __cplusplus */ + +alias void* HDROP; + +extern(Windows) export UINT DragQueryFileA(HDROP,UINT,LPSTR,UINT); +extern(Windows) export UINT DragQueryFileW(HDROP,UINT,LPWSTR,UINT); +// #ifdef UNICODE +// #... +// #else +alias DragQueryFileA DragQueryFile; +// #endif // !UNICODE +extern(Windows) export BOOL DragQueryPoint(HDROP,LPPOINT); +extern(Windows) export void DragFinish(HDROP); +extern(Windows) export void DragAcceptFiles(HWND,BOOL); + +extern(Windows) export HINSTANCE ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd); +extern(Windows) export HINSTANCE ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd); +// #ifdef UNICODE +// #... +// #else +alias ShellExecuteA ShellExecute; +// #endif // !UNICODE +extern(Windows) export HINSTANCE FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult); +extern(Windows) export HINSTANCE FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult); +// #ifdef UNICODE +// #... +// #else +alias FindExecutableA FindExecutable; +// #endif // !UNICODE +extern(Windows) export LPWSTR * CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumArgs); + +extern(Windows) export INT ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon); +extern(Windows) export INT ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon); +// #ifdef UNICODE +// #... +// #else +alias ShellAboutA ShellAbout; +// #endif // !UNICODE +extern(Windows) export HICON DuplicateIcon(HINSTANCE hInst, HICON hIcon); +extern(Windows) export HICON ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lpiIcon); +extern(Windows) export HICON ExtractAssociatedIconW(HINSTANCE hInst, LPWSTR lpIconPath, LPWORD lpiIcon); +// #ifdef UNICODE +// #... +// #else +alias ExtractAssociatedIconA ExtractAssociatedIcon; +// #endif // !UNICODE +extern(Windows) export HICON ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIconIndex); +extern(Windows) export HICON ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIconIndex); +// #ifdef UNICODE +// #... +// #else +alias ExtractIconA ExtractIcon; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +struct _DRAGINFOA { + UINT uSize; + POINT pt; + BOOL fNC; + LPSTR lpFileList; + DWORD grfKeyState; +} +alias _DRAGINFOA DRAGINFOA; +alias _DRAGINFOA* LPDRAGINFOA; + +struct _DRAGINFOW { + UINT uSize; + POINT pt; + BOOL fNC; + LPWSTR lpFileList; + DWORD grfKeyState; +} +alias _DRAGINFOW DRAGINFOW; +alias _DRAGINFOW* LPDRAGINFOW; + +// #ifdef UNICODE +// ... +// #else +alias DRAGINFOA DRAGINFO; +alias LPDRAGINFOA LPDRAGINFO; +// #endif // UNICODE + +enum : uint { ABM_NEW = 0x00000000 } +enum : uint { ABM_REMOVE = 0x00000001 } +enum : uint { ABM_QUERYPOS = 0x00000002 } +enum : uint { ABM_SETPOS = 0x00000003 } +enum : uint { ABM_GETSTATE = 0x00000004 } +enum : uint { ABM_GETTASKBARPOS = 0x00000005 } +enum : uint { ABM_ACTIVATE = 0x00000006 } +enum : uint { ABM_GETAUTOHIDEBAR = 0x00000007 } +enum : uint { ABM_SETAUTOHIDEBAR = 0x00000008 } + +enum : uint { ABM_WINDOWPOSCHANGED = 0x0000009 } +enum : uint { ABM_SETSTATE = 0x0000000a } + +enum : uint { ABN_STATECHANGE = 0x0000000 } +enum : uint { ABN_POSCHANGED = 0x0000001 } +enum : uint { ABN_FULLSCREENAPP = 0x0000002 } +enum : uint { ABN_WINDOWARRANGE = 0x0000003 } + +enum : uint { ABS_AUTOHIDE = 0x0000001 } +enum : uint { ABS_ALWAYSONTOP = 0x0000002 } + +enum : uint { ABE_LEFT = 0 } +enum : uint { ABE_TOP = 1 } +enum : uint { ABE_RIGHT = 2 } +enum : uint { ABE_BOTTOM = 3 } + +struct _AppBarData { + DWORD cbSize; + HWND hWnd; + UINT uCallbackMessage; + UINT uEdge; + RECT rc; + LPARAM lParam; +} +alias _AppBarData APPBARDATA; +alias _AppBarData* PAPPBARDATA; + +extern(Windows) export UINT_PTR SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData); + +extern(Windows) export DWORD DoEnvironmentSubstA(LPSTR szString, UINT cchString); +extern(Windows) export DWORD DoEnvironmentSubstW(LPWSTR szString, UINT cchString); +// #ifdef UNICODE +// #... +// #else +alias DoEnvironmentSubstA DoEnvironmentSubst; +// #endif // !UNICODE + +// #define EIRESID(x) (-1 * (int)(x)) +extern(Windows) export UINT ExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons); +extern(Windows) export UINT ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons); +// #ifdef UNICODE +// #... +// #else +alias ExtractIconExA ExtractIconEx; +// #endif // !UNICODE + +// #ifndef FO_MOVE //these need to be kept in sync with the ones in shlobj.h + +enum : uint { FO_MOVE = 0x0001 } +enum : uint { FO_COPY = 0x0002 } +enum : uint { FO_DELETE = 0x0003 } +enum : uint { FO_RENAME = 0x0004 } + +enum : uint { FOF_MULTIDESTFILES = 0x0001 } +enum : uint { FOF_CONFIRMMOUSE = 0x0002 } +enum : uint { FOF_SILENT = 0x0004 } +enum : uint { FOF_RENAMEONCOLLISION = 0x0008 } +enum : uint { FOF_NOCONFIRMATION = 0x0010 } +enum : uint { FOF_WANTMAPPINGHANDLE = 0x0020 } + +enum : uint { FOF_ALLOWUNDO = 0x0040 } +enum : uint { FOF_FILESONLY = 0x0080 } +enum : uint { FOF_SIMPLEPROGRESS = 0x0100 } +enum : uint { FOF_NOCONFIRMMKDIR = 0x0200 } +enum : uint { FOF_NOERRORUI = 0x0400 } +enum : uint { FOF_NOCOPYSECURITYATTRIBS = 0x0800 } +enum : uint { FOF_NORECURSION = 0x1000 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { FOF_NO_CONNECTED_ELEMENTS = 0x2000 } +enum : uint { FOF_WANTNUKEWARNING = 0x4000 } +// #endif // (_WIN32_IE >= 0x500) +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { FOF_NORECURSEREPARSE = 0x8000 } +// #endif // (_WIN32_WINNT >= 0x501) + +alias WORD FILEOP_FLAGS; + +enum : uint { PO_DELETE = 0x0013 } +enum : uint { PO_RENAME = 0x0014 } +enum : uint { PO_PORTCHANGE = 0x0020 } + +enum : uint { PO_REN_PORT = 0x0034 } + +alias WORD PRINTEROP_FLAGS; + +// #endif // FO_MOVE + +struct _SHFILEOPSTRUCTA { + HWND hwnd; + UINT wFunc; + LPCSTR pFrom; + LPCSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + LPVOID hNameMappings; + LPCSTR lpszProgressTitle; +} +alias _SHFILEOPSTRUCTA SHFILEOPSTRUCTA; +alias _SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; + +struct _SHFILEOPSTRUCTW { + HWND hwnd; + UINT wFunc; + LPCWSTR pFrom; + LPCWSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + LPVOID hNameMappings; + LPCWSTR lpszProgressTitle; +} +alias _SHFILEOPSTRUCTW SHFILEOPSTRUCTW; +alias _SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; + +// #ifdef UNICODE +// ... +// #else +alias SHFILEOPSTRUCTA SHFILEOPSTRUCT; +alias LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT; +// #endif // UNICODE + +extern(Windows) export int SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp); +extern(Windows) export int SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp); +// #ifdef UNICODE +// #... +// #else +alias SHFileOperationA SHFileOperation; +// #endif // !UNICODE +extern(Windows) export void SHFreeNameMappings(HANDLE hNameMappings); + +struct _SHNAMEMAPPINGA { + LPSTR pszOldPath; + LPSTR pszNewPath; + int cchOldPath; + int cchNewPath; +} +alias _SHNAMEMAPPINGA SHNAMEMAPPINGA; +alias _SHNAMEMAPPINGA* LPSHNAMEMAPPINGA; + +struct _SHNAMEMAPPINGW { + LPWSTR pszOldPath; + LPWSTR pszNewPath; + int cchOldPath; + int cchNewPath; +} +alias _SHNAMEMAPPINGW SHNAMEMAPPINGW; +alias _SHNAMEMAPPINGW* LPSHNAMEMAPPINGW; + +// #ifdef UNICODE +// ... +// #else +alias SHNAMEMAPPINGA SHNAMEMAPPING; +alias LPSHNAMEMAPPINGA LPSHNAMEMAPPING; +// #endif // UNICODE + +enum : uint { SE_ERR_FNF = 2 } +enum : uint { SE_ERR_PNF = 3 } +enum : uint { SE_ERR_ACCESSDENIED = 5 } +enum : uint { SE_ERR_OOM = 8 } +enum : uint { SE_ERR_DLLNOTFOUND = 32 } + +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SE_ERR_SHARE = 26 } +enum : uint { SE_ERR_ASSOCINCOMPLETE = 27 } +enum : uint { SE_ERR_DDETIMEOUT = 28 } +enum : uint { SE_ERR_DDEFAIL = 29 } +enum : uint { SE_ERR_DDEBUSY = 30 } +enum : uint { SE_ERR_NOASSOC = 31 } + +// #if(WINVER >= 0x0400) + +enum : uint { SEE_MASK_CLASSNAME = 0x00000001 } +enum : uint { SEE_MASK_CLASSKEY = 0x00000003 } + +enum : uint { SEE_MASK_IDLIST = 0x00000004 } +enum : uint { SEE_MASK_INVOKEIDLIST = 0x0000000c } +enum : uint { SEE_MASK_ICON = 0x00000010 } +enum : uint { SEE_MASK_HOTKEY = 0x00000020 } +enum : uint { SEE_MASK_NOCLOSEPROCESS = 0x00000040 } +enum : uint { SEE_MASK_CONNECTNETDRV = 0x00000080 } +enum : uint { SEE_MASK_FLAG_DDEWAIT = 0x00000100 } +enum : uint { SEE_MASK_DOENVSUBST = 0x00000200 } +enum : uint { SEE_MASK_FLAG_NO_UI = 0x00000400 } +enum : uint { SEE_MASK_UNICODE = 0x00004000 } +enum : uint { SEE_MASK_NO_CONSOLE = 0x00008000 } +enum : uint { SEE_MASK_ASYNCOK = 0x00100000 } +enum : uint { SEE_MASK_HMONITOR = 0x00200000 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { SEE_MASK_NOQUERYCLASSSTORE = 0x01000000 } +enum : uint { SEE_MASK_WAITFORINPUTIDLE = 0x02000000 } +// #endif // (_WIN32_IE >= 0x500) +// #if (_WIN32_IE >= 0x0560) +enum : uint { SEE_MASK_FLAG_LOG_USAGE = 0x04000000 } +// #endif // (_WIN32_IE >= 0x560) + +// #ifndef DUMMYUNIONNAME +// #ifdef NONAMELESSUNION +// #... +// #... +// #... +// #... +// #... +// #else +// #define DUMMYUNIONNAME +// #define DUMMYUNIONNAME2 +// #define DUMMYUNIONNAME3 +// #define DUMMYUNIONNAME4 +// #define DUMMYUNIONNAME5 +// #endif +// #endif // DUMMYUNIONNAME + +struct _SHELLEXECUTEINFOA { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpFile; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + + LPVOID lpIDList; + LPCSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; +union { + HANDLE hIcon; + HANDLE hMonitor; +} + + HANDLE hProcess; +} +alias _SHELLEXECUTEINFOA SHELLEXECUTEINFOA; +alias _SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; + +struct _SHELLEXECUTEINFOW { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCWSTR lpVerb; + LPCWSTR lpFile; + LPCWSTR lpParameters; + LPCWSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + + LPVOID lpIDList; + LPCWSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; +union { + HANDLE hIcon; + HANDLE hMonitor; +} + + HANDLE hProcess; +} +alias _SHELLEXECUTEINFOW SHELLEXECUTEINFOW; +alias _SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; + +// #ifdef UNICODE +// ... +// #else +alias SHELLEXECUTEINFOA SHELLEXECUTEINFO; +alias LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO; +// #endif // UNICODE + +extern(Windows) export BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo); +extern(Windows) export BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo); +// #ifdef UNICODE +// #... +// #else +alias ShellExecuteExA ShellExecuteEx; +// #endif // !UNICODE +extern(Windows) export void WinExecErrorA(HWND hwnd, int error, LPCSTR lpstrFileName, LPCSTR lpstrTitle); +extern(Windows) export void WinExecErrorW(HWND hwnd, int error, LPCWSTR lpstrFileName, LPCWSTR lpstrTitle); +// #ifdef UNICODE +// #... +// #else +alias WinExecErrorA WinExecError; +// #endif // !UNICODE + +struct _SHCREATEPROCESSINFOW { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCWSTR pszFile; + LPCWSTR pszParameters; + LPCWSTR pszCurrentDirectory; + HANDLE hUserToken; + LPSECURITY_ATTRIBUTES lpProcessAttributes; + LPSECURITY_ATTRIBUTES lpThreadAttributes; + BOOL bInheritHandles; + DWORD dwCreationFlags; + LPSTARTUPINFOW lpStartupInfo; + LPPROCESS_INFORMATION lpProcessInformation; +} +alias _SHCREATEPROCESSINFOW SHCREATEPROCESSINFOW; +alias _SHCREATEPROCESSINFOW* PSHCREATEPROCESSINFOW; + +extern(Windows) export BOOL SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW pscpi); + +struct _SHQUERYRBINFO { + DWORD cbSize; +// #if !defined(_MAC) || defined(_MAC_INT_64) + __int64 i64Size; + __int64 i64NumItems; +// #else +// ... +// #endif +} +alias _SHQUERYRBINFO SHQUERYRBINFO; +alias _SHQUERYRBINFO* LPSHQUERYRBINFO; + +enum : uint { SHERB_NOCONFIRMATION = 0x00000001 } +enum : uint { SHERB_NOPROGRESSUI = 0x00000002 } +enum : uint { SHERB_NOSOUND = 0x00000004 } + +extern(Windows) export HRESULT SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); +extern(Windows) export HRESULT SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); +// #ifdef UNICODE +// #... +// #else +alias SHQueryRecycleBinA SHQueryRecycleBin; +// #endif // !UNICODE +extern(Windows) export HRESULT SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags); +extern(Windows) export HRESULT SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias SHEmptyRecycleBinA SHEmptyRecycleBin; +// #endif // !UNICODE + +struct _NOTIFYICONDATAA { + DWORD cbSize; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; +// #if (_WIN32_IE < 0x0500) +// ... +// #else + CHAR szTip[128]; +// #endif +// #if (_WIN32_IE >= 0x0500) + DWORD dwState; + DWORD dwStateMask; + CHAR szInfo[256]; +union { + UINT uTimeout; + UINT uVersion; +} + + CHAR szInfoTitle[64]; + DWORD dwInfoFlags; +// #endif +// #if (_WIN32_IE >= 0x600) + GUID guidItem; +// #endif +} +alias _NOTIFYICONDATAA NOTIFYICONDATAA; +alias _NOTIFYICONDATAA* PNOTIFYICONDATAA; + +struct _NOTIFYICONDATAW { + DWORD cbSize; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; +// #if (_WIN32_IE < 0x0500) +// ... +// #else + WCHAR szTip[128]; +// #endif +// #if (_WIN32_IE >= 0x0500) + DWORD dwState; + DWORD dwStateMask; + WCHAR szInfo[256]; +union { + UINT uTimeout; + UINT uVersion; +} + + WCHAR szInfoTitle[64]; + DWORD dwInfoFlags; +// #endif +// #if (_WIN32_IE >= 0x600) + GUID guidItem; +// #endif +} +alias _NOTIFYICONDATAW NOTIFYICONDATAW; +alias _NOTIFYICONDATAW* PNOTIFYICONDATAW; + +// #ifdef UNICODE +// ... +// #else +alias NOTIFYICONDATAA NOTIFYICONDATA; +alias PNOTIFYICONDATAA PNOTIFYICONDATA; +// #endif // UNICODE + +// #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64]) +// #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64]) +// #ifdef UNICODE +// #... +// #else +// #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE +// #endif + +// #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem) +// #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem) +// #ifdef UNICODE +// #... +// #else +// #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { NIN_SELECT = WM_USER + 0 } +enum : uint { NINF_KEY = 0x1 } +enum : uint { NIN_KEYSELECT = NIN_SELECT | NINF_KEY } +// #endif + +// #if (_WIN32_IE >= 0x0501) +enum : uint { NIN_BALLOONSHOW = WM_USER + 2 } +enum : uint { NIN_BALLOONHIDE = WM_USER + 3 } +enum : uint { NIN_BALLOONTIMEOUT = WM_USER + 4 } +enum : uint { NIN_BALLOONUSERCLICK = WM_USER + 5 } +// #endif + +enum : uint { NIM_ADD = 0x00000000 } +enum : uint { NIM_MODIFY = 0x00000001 } +enum : uint { NIM_DELETE = 0x00000002 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { NIM_SETFOCUS = 0x00000003 } +enum : uint { NIM_SETVERSION = 0x00000004 } +enum : uint { NOTIFYICON_VERSION = 3 } +// #endif + +enum : uint { NIF_MESSAGE = 0x00000001 } +enum : uint { NIF_ICON = 0x00000002 } +enum : uint { NIF_TIP = 0x00000004 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { NIF_STATE = 0x00000008 } +enum : uint { NIF_INFO = 0x00000010 } +// #endif +// #if (_WIN32_IE >= 0x600) +enum : uint { NIF_GUID = 0x00000020 } +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { NIS_HIDDEN = 0x00000001 } +enum : uint { NIS_SHAREDICON = 0x00000002 } + +enum : uint { NIIF_NONE = 0x00000000 } + +enum : uint { NIIF_INFO = 0x00000001 } +enum : uint { NIIF_WARNING = 0x00000002 } +enum : uint { NIIF_ERROR = 0x00000003 } +enum : uint { NIIF_ICON_MASK = 0x0000000F } +// #if (_WIN32_IE >= 0x0501) +enum : uint { NIIF_NOSOUND = 0x00000010 } +// #endif +// #endif + +extern(Windows) export BOOL Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA lpData); +extern(Windows) export BOOL Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW lpData); +// #ifdef UNICODE +// #... +// #else +alias Shell_NotifyIconA Shell_NotifyIcon; +// #endif // !UNICODE + +// #ifndef SHFILEINFO_DEFINED +// #define SHFILEINFO_DEFINED + +struct _SHFILEINFOA { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + CHAR szDisplayName[MAX_PATH]; + CHAR szTypeName[80]; +} +alias _SHFILEINFOA SHFILEINFOA; + +struct _SHFILEINFOW { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + WCHAR szDisplayName[MAX_PATH]; + WCHAR szTypeName[80]; +} +alias _SHFILEINFOW SHFILEINFOW; + +// #ifdef UNICODE +// ... +// #else +alias SHFILEINFOA SHFILEINFO; +// #endif // UNICODE + +// #endif // !SHFILEINFO_DEFINED + +enum : uint { SHGFI_ICON = 0x000000100 } +enum : uint { SHGFI_DISPLAYNAME = 0x000000200 } +enum : uint { SHGFI_TYPENAME = 0x000000400 } +enum : uint { SHGFI_ATTRIBUTES = 0x000000800 } +enum : uint { SHGFI_ICONLOCATION = 0x000001000 } +enum : uint { SHGFI_EXETYPE = 0x000002000 } +enum : uint { SHGFI_SYSICONINDEX = 0x000004000 } +enum : uint { SHGFI_LINKOVERLAY = 0x000008000 } +enum : uint { SHGFI_SELECTED = 0x000010000 } +enum : uint { SHGFI_ATTR_SPECIFIED = 0x000020000 } +enum : uint { SHGFI_LARGEICON = 0x000000000 } +enum : uint { SHGFI_SMALLICON = 0x000000001 } +enum : uint { SHGFI_OPENICON = 0x000000002 } +enum : uint { SHGFI_SHELLICONSIZE = 0x000000004 } +enum : uint { SHGFI_PIDL = 0x000000008 } +enum : uint { SHGFI_USEFILEATTRIBUTES = 0x000000010 } + +// #if (_WIN32_IE >= 0x0500) +enum : uint { SHGFI_ADDOVERLAYS = 0x000000020 } +enum : uint { SHGFI_OVERLAYINDEX = 0x000000040 } + +// #endif + +extern(Windows) export DWORD_PTR SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA *psfi, UINT cbFileInfo, UINT uFlags); +extern(Windows) export DWORD_PTR SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags); +// #ifdef UNICODE +// #... +// #else +alias SHGetFileInfoA SHGetFileInfo; +// #endif // !UNICODE + +alias SHGetDiskFreeSpaceEx SHGetDiskFreeSpace; + +extern(Windows) export BOOL SHGetDiskFreeSpaceExA(LPCSTR pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes); +extern(Windows) export BOOL SHGetDiskFreeSpaceExW(LPCWSTR pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes); +// #ifdef UNICODE +// #... +// #else +alias SHGetDiskFreeSpaceExA SHGetDiskFreeSpaceEx; +// #endif // !UNICODE +extern(Windows) export BOOL SHGetNewLinkInfoA(LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, BOOL *pfMustCopy, UINT uFlags); +extern(Windows) export BOOL SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, BOOL *pfMustCopy, UINT uFlags); +// #ifdef UNICODE +// #... +// #else +alias SHGetNewLinkInfoA SHGetNewLinkInfo; +// #endif // !UNICODE + +enum : uint { SHGNLI_PIDL = 0x000000001 } +enum : uint { SHGNLI_PREFIXNAME = 0x000000002 } +enum : uint { SHGNLI_NOUNIQUE = 0x000000004 } +// #if (_WIN32_IE >= 0x0501) +enum : uint { SHGNLI_NOLNK = 0x000000008 } +// #endif // _WIN2_IE >= 0x0501 + +enum : uint { PRINTACTION_OPEN = 0 } +enum : uint { PRINTACTION_PROPERTIES = 1 } +enum : uint { PRINTACTION_NETINSTALL = 2 } +enum : uint { PRINTACTION_NETINSTALLLINK = 3 } +enum : uint { PRINTACTION_TESTPAGE = 4 } +enum : uint { PRINTACTION_OPENNETPRN = 5 } +// #ifdef WINNT +// #... +// #... +// #endif + +extern(Windows) export BOOL SHInvokePrinterCommandA(HWND hwnd, UINT uAction, LPCSTR lpBuf1, LPCSTR lpBuf2, BOOL fModal); +extern(Windows) export BOOL SHInvokePrinterCommandW(HWND hwnd, UINT uAction, LPCWSTR lpBuf1, LPCWSTR lpBuf2, BOOL fModal); +// #ifdef UNICODE +// #... +// #else +alias SHInvokePrinterCommandA SHInvokePrinterCommand; +// #endif // !UNICODE + +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500) + +extern(Windows) export HRESULT SHLoadNonloadedIconOverlayIdentifiers(); + +extern(Windows) export HRESULT SHIsFileAvailableOffline(LPCWSTR pwszPath, LPDWORD pdwStatus); + +enum : uint { OFFLINE_STATUS_LOCAL = 0x0001 } +enum : uint { OFFLINE_STATUS_REMOTE = 0x0002 } +enum : uint { OFFLINE_STATUS_INCOMPLETE = 0x0004 } + +// #endif + +extern(Windows) export HRESULT SHSetLocalizedName(LPWSTR pszPath, LPCWSTR pszResModule, int idsRes); + +// #if _WIN32_IE >= 0x0600 + +extern(Windows) export HRESULT SHEnumerateUnreadMailAccountsA(HKEY hKeyUser, DWORD dwIndex, LPSTR pszMailAddress, int cchMailAddress); +extern(Windows) export HRESULT SHEnumerateUnreadMailAccountsW(HKEY hKeyUser, DWORD dwIndex, LPWSTR pszMailAddress, int cchMailAddress); +// #ifdef UNICODE +// #... +// #else +alias SHEnumerateUnreadMailAccountsA SHEnumerateUnreadMailAccounts; +// #endif // !UNICODE +extern(Windows) export HRESULT SHGetUnreadMailCountA(HKEY hKeyUser, LPCSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExecuteCommand); +extern(Windows) export HRESULT SHGetUnreadMailCountW(HKEY hKeyUser, LPCWSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand); +// #ifdef UNICODE +// #... +// #else +alias SHGetUnreadMailCountA SHGetUnreadMailCount; +// #endif // !UNICODE +extern(Windows) export HRESULT SHSetUnreadMailCountA(LPCSTR pszMailAddress, DWORD dwCount, LPCSTR pszShellExecuteCommand); +extern(Windows) export HRESULT SHSetUnreadMailCountW(LPCWSTR pszMailAddress, DWORD dwCount, LPCWSTR pszShellExecuteCommand); +// #ifdef UNICODE +// #... +// #else +alias SHSetUnreadMailCountA SHSetUnreadMailCount; +// #endif // !UNICODE + +// #endif /* _WIN32_IE >= 0x0600 */ + +// #if _WIN32_IE >= 0x0600 + +extern(Windows) export HRESULT SHGetImageList(int iImageList, REFIID riid, void **ppvObj); + +enum : uint { SHIL_LARGE = 0 } +enum : uint { SHIL_SMALL = 1 } +enum : uint { SHIL_EXTRALARGE = 2 } +enum : uint { SHIL_SYSSMALL = 3 } + +alias SHIL_SYSSMALL SHIL_LAST; + +extern(Windows) alias HRESULT function( LPCWSTR pszPath) PFNCANSHAREFOLDERW; +extern(Windows) alias HRESULT function( HWND hwndParent, LPCWSTR pszPath) PFNSHOWSHAREFOLDERUIW; + +// #endif /* _WIN32_IE >= 0x0600 */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #if !defined(_WIN64) +align: +// #endif + +// #endif /* _INC_SHELLAPI */ + ADDED src/win32/ansi/winbase.d Index: src/win32/ansi/winbase.d ================================================================== --- src/win32/ansi/winbase.d +++ src/win32/ansi/winbase.d @@ -0,0 +1,6453 @@ +module win32.ansi.winbase; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.windef; + +// #ifndef _WINBASE_ +// #define _WINBASE_ + +// #if _MSC_VER > 1000 +// #pragma once +// #endif + +// #ifdef _MAC +// #... +// #endif //_MAC + +// #if !defined(_ADVAPI32_) +// #define WINADVAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #if !defined(_KERNEL32_) +// #define WINBASEAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #if !defined(_ZAWPROXY_) +// #define ZAWPROXYAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #define DefineHandleTable(w) ((w),TRUE) +// #define LimitEmsPages(dw) +// #define SetSwapAreaSize(w) (w) +// #define LockSegment(w) GlobalFix((HANDLE)(w)) +// #define UnlockSegment(w) GlobalUnfix((HANDLE)(w)) +alias GetTickCount GetCurrentTime; + +// #define Yield() + +HANDLE INVALID_HANDLE_VALUE = cast(HANDLE)-1; +enum : DWORD { INVALID_FILE_SIZE = 0xFFFFFFFF } +enum : DWORD { INVALID_SET_FILE_POINTER = cast(DWORD)-1 } +enum : DWORD { INVALID_FILE_ATTRIBUTES = cast(DWORD)-1 } + +enum : uint { FILE_BEGIN = 0 } +enum : uint { FILE_CURRENT = 1 } +enum : uint { FILE_END = 2 } + +enum : DWORD { TIME_ZONE_ID_INVALID = 0xFFFFFFFF } + +enum : DWORD { WAIT_FAILED = 0xFFFFFFFF } +alias STATUS_WAIT_0 WAIT_OBJECT_0; + +alias STATUS_ABANDONED_WAIT_0 WAIT_ABANDONED; +alias STATUS_ABANDONED_WAIT_0 WAIT_ABANDONED_0; + +alias STATUS_USER_APC WAIT_IO_COMPLETION; +alias STATUS_PENDING STILL_ACTIVE; +alias STATUS_ACCESS_VIOLATION EXCEPTION_ACCESS_VIOLATION; +alias STATUS_DATATYPE_MISALIGNMENT EXCEPTION_DATATYPE_MISALIGNMENT; +alias STATUS_BREAKPOINT EXCEPTION_BREAKPOINT; +alias STATUS_SINGLE_STEP EXCEPTION_SINGLE_STEP; +alias STATUS_ARRAY_BOUNDS_EXCEEDED EXCEPTION_ARRAY_BOUNDS_EXCEEDED; +alias STATUS_FLOAT_DENORMAL_OPERAND EXCEPTION_FLT_DENORMAL_OPERAND; +alias STATUS_FLOAT_DIVIDE_BY_ZERO EXCEPTION_FLT_DIVIDE_BY_ZERO; +alias STATUS_FLOAT_INEXACT_RESULT EXCEPTION_FLT_INEXACT_RESULT; +alias STATUS_FLOAT_INVALID_OPERATION EXCEPTION_FLT_INVALID_OPERATION; +alias STATUS_FLOAT_OVERFLOW EXCEPTION_FLT_OVERFLOW; +alias STATUS_FLOAT_STACK_CHECK EXCEPTION_FLT_STACK_CHECK; +alias STATUS_FLOAT_UNDERFLOW EXCEPTION_FLT_UNDERFLOW; +alias STATUS_INTEGER_DIVIDE_BY_ZERO EXCEPTION_INT_DIVIDE_BY_ZERO; +alias STATUS_INTEGER_OVERFLOW EXCEPTION_INT_OVERFLOW; +alias STATUS_PRIVILEGED_INSTRUCTION EXCEPTION_PRIV_INSTRUCTION; +alias STATUS_IN_PAGE_ERROR EXCEPTION_IN_PAGE_ERROR; +alias STATUS_ILLEGAL_INSTRUCTION EXCEPTION_ILLEGAL_INSTRUCTION; +alias STATUS_NONCONTINUABLE_EXCEPTION EXCEPTION_NONCONTINUABLE_EXCEPTION; +alias STATUS_STACK_OVERFLOW EXCEPTION_STACK_OVERFLOW; +alias STATUS_INVALID_DISPOSITION EXCEPTION_INVALID_DISPOSITION; +alias STATUS_GUARD_PAGE_VIOLATION EXCEPTION_GUARD_PAGE; +alias STATUS_INVALID_HANDLE EXCEPTION_INVALID_HANDLE; +alias STATUS_CONTROL_C_EXIT CONTROL_C_EXIT; +alias RtlMoveMemory MoveMemory; +alias RtlCopyMemory CopyMemory; +alias RtlFillMemory FillMemory; +alias RtlZeroMemory ZeroMemory; + +enum : uint { FILE_FLAG_WRITE_THROUGH = 0x80000000 } +enum : uint { FILE_FLAG_OVERLAPPED = 0x40000000 } +enum : uint { FILE_FLAG_NO_BUFFERING = 0x20000000 } +enum : uint { FILE_FLAG_RANDOM_ACCESS = 0x10000000 } +enum : uint { FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 } +enum : uint { FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 } +enum : uint { FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 } +enum : uint { FILE_FLAG_POSIX_SEMANTICS = 0x01000000 } +enum : uint { FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 } +enum : uint { FILE_FLAG_OPEN_NO_RECALL = 0x00100000 } +enum : uint { FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 } + +enum : uint { CREATE_NEW = 1 } +enum : uint { CREATE_ALWAYS = 2 } +enum : uint { OPEN_EXISTING = 3 } +enum : uint { OPEN_ALWAYS = 4 } +enum : uint { TRUNCATE_EXISTING = 5 } + +// #if(_WIN32_WINNT >= 0x0400) + +enum : uint { PROGRESS_CONTINUE = 0 } +enum : uint { PROGRESS_CANCEL = 1 } +enum : uint { PROGRESS_STOP = 2 } +enum : uint { PROGRESS_QUIET = 3 } + +enum : uint { CALLBACK_CHUNK_FINISHED = 0x00000000 } +enum : uint { CALLBACK_STREAM_SWITCH = 0x00000001 } + +enum : uint { COPY_FILE_FAIL_IF_EXISTS = 0x00000001 } +enum : uint { COPY_FILE_RESTARTABLE = 0x00000002 } +enum : uint { COPY_FILE_OPEN_SOURCE_FOR_WRITE = 0x00000004 } +enum : uint { COPY_FILE_ALLOW_DECRYPTED_DESTINATION = 0x00000008 } +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) + +enum : uint { REPLACEFILE_WRITE_THROUGH = 0x00000001 } +enum : uint { REPLACEFILE_IGNORE_MERGE_ERRORS = 0x00000002 } + +// #endif // #if (_WIN32_WINNT >= 0x0500) + +enum : uint { PIPE_ACCESS_INBOUND = 0x00000001 } +enum : uint { PIPE_ACCESS_OUTBOUND = 0x00000002 } +enum : uint { PIPE_ACCESS_DUPLEX = 0x00000003 } + +enum : uint { PIPE_CLIENT_END = 0x00000000 } +enum : uint { PIPE_SERVER_END = 0x00000001 } + +enum : uint { PIPE_WAIT = 0x00000000 } +enum : uint { PIPE_NOWAIT = 0x00000001 } +enum : uint { PIPE_READMODE_BYTE = 0x00000000 } +enum : uint { PIPE_READMODE_MESSAGE = 0x00000002 } +enum : uint { PIPE_TYPE_BYTE = 0x00000000 } +enum : uint { PIPE_TYPE_MESSAGE = 0x00000004 } + +enum : uint { PIPE_UNLIMITED_INSTANCES = 255 } + +enum : uint { SECURITY_ANONYMOUS = SecurityAnonymous << 16 } +enum : uint { SECURITY_IDENTIFICATION = SecurityIdentification << 16 } +enum : uint { SECURITY_IMPERSONATION = SecurityImpersonation << 16 } +enum : uint { SECURITY_DELEGATION = SecurityDelegation << 16 } + +enum : uint { SECURITY_CONTEXT_TRACKING = 0x00040000 } +enum : uint { SECURITY_EFFECTIVE_ONLY = 0x00080000 } + +enum : uint { SECURITY_SQOS_PRESENT = 0x00100000 } +enum : uint { SECURITY_VALID_SQOS_FLAGS = 0x001F0000 } + +struct _OVERLAPPED { + ULONG_PTR Internal; + ULONG_PTR InternalHigh; +union { +struct { + DWORD Offset; + DWORD OffsetHigh; +} + + PVOID Pointer; +} + + HANDLE hEvent; +} +alias _OVERLAPPED OVERLAPPED; +alias _OVERLAPPED* LPOVERLAPPED; + +struct _SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; +} +alias _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES; +alias _SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES; +alias _SECURITY_ATTRIBUTES* LPSECURITY_ATTRIBUTES; + +struct _PROCESS_INFORMATION { + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; +} +alias _PROCESS_INFORMATION PROCESS_INFORMATION; +alias _PROCESS_INFORMATION* PPROCESS_INFORMATION; +alias _PROCESS_INFORMATION* LPPROCESS_INFORMATION; + +struct _FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} +alias _FILETIME FILETIME; +alias _FILETIME* PFILETIME; +alias _FILETIME* LPFILETIME; + +struct _SYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; +} +alias _SYSTEMTIME SYSTEMTIME; +alias _SYSTEMTIME* PSYSTEMTIME; +alias _SYSTEMTIME* LPSYSTEMTIME; + +extern(Windows) alias DWORD function( LPVOID lpThreadParameter ) PTHREAD_START_ROUTINE; +alias PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) alias VOID function( LPVOID lpFiberParameter ) PFIBER_START_ROUTINE; +alias PFIBER_START_ROUTINE LPFIBER_START_ROUTINE; +// #endif /* _WIN32_WINNT >= 0x0400 */ + +alias RTL_CRITICAL_SECTION CRITICAL_SECTION; +alias PRTL_CRITICAL_SECTION PCRITICAL_SECTION; +alias PRTL_CRITICAL_SECTION LPCRITICAL_SECTION; + +alias RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG; +alias PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG; +alias PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG; + +// #if defined(_X86_) +alias PLDT_ENTRY LPLDT_ENTRY; +// #else +// ... +// #endif + +alias MUTANT_QUERY_STATE MUTEX_MODIFY_STATE; +alias MUTANT_ALL_ACCESS MUTEX_ALL_ACCESS; + +enum : DWORD { SP_SERIALCOMM = 0x00000001 } + +enum : DWORD { PST_UNSPECIFIED = 0x00000000 } +enum : DWORD { PST_RS232 = 0x00000001 } +enum : DWORD { PST_PARALLELPORT = 0x00000002 } +enum : DWORD { PST_RS422 = 0x00000003 } +enum : DWORD { PST_RS423 = 0x00000004 } +enum : DWORD { PST_RS449 = 0x00000005 } +enum : DWORD { PST_MODEM = 0x00000006 } +enum : DWORD { PST_FAX = 0x00000021 } +enum : DWORD { PST_SCANNER = 0x00000022 } +enum : DWORD { PST_NETWORK_BRIDGE = 0x00000100 } +enum : DWORD { PST_LAT = 0x00000101 } +enum : DWORD { PST_TCPIP_TELNET = 0x00000102 } +enum : DWORD { PST_X25 = 0x00000103 } + +enum : DWORD { PCF_DTRDSR = 0x0001 } +enum : DWORD { PCF_RTSCTS = 0x0002 } +enum : DWORD { PCF_RLSD = 0x0004 } +enum : DWORD { PCF_PARITY_CHECK = 0x0008 } +enum : DWORD { PCF_XONXOFF = 0x0010 } +enum : DWORD { PCF_SETXCHAR = 0x0020 } +enum : DWORD { PCF_TOTALTIMEOUTS = 0x0040 } +enum : DWORD { PCF_INTTIMEOUTS = 0x0080 } +enum : DWORD { PCF_SPECIALCHARS = 0x0100 } +enum : DWORD { PCF_16BITMODE = 0x0200 } + +enum : DWORD { SP_PARITY = 0x0001 } +enum : DWORD { SP_BAUD = 0x0002 } +enum : DWORD { SP_DATABITS = 0x0004 } +enum : DWORD { SP_STOPBITS = 0x0008 } +enum : DWORD { SP_HANDSHAKING = 0x0010 } +enum : DWORD { SP_PARITY_CHECK = 0x0020 } +enum : DWORD { SP_RLSD = 0x0040 } + +enum : DWORD { BAUD_075 = 0x00000001 } +enum : DWORD { BAUD_110 = 0x00000002 } +enum : DWORD { BAUD_134_5 = 0x00000004 } +enum : DWORD { BAUD_150 = 0x00000008 } +enum : DWORD { BAUD_300 = 0x00000010 } +enum : DWORD { BAUD_600 = 0x00000020 } +enum : DWORD { BAUD_1200 = 0x00000040 } +enum : DWORD { BAUD_1800 = 0x00000080 } +enum : DWORD { BAUD_2400 = 0x00000100 } +enum : DWORD { BAUD_4800 = 0x00000200 } +enum : DWORD { BAUD_7200 = 0x00000400 } +enum : DWORD { BAUD_9600 = 0x00000800 } +enum : DWORD { BAUD_14400 = 0x00001000 } +enum : DWORD { BAUD_19200 = 0x00002000 } +enum : DWORD { BAUD_38400 = 0x00004000 } +enum : DWORD { BAUD_56K = 0x00008000 } +enum : DWORD { BAUD_128K = 0x00010000 } +enum : DWORD { BAUD_115200 = 0x00020000 } +enum : DWORD { BAUD_57600 = 0x00040000 } +enum : DWORD { BAUD_USER = 0x10000000 } + +enum : WORD { DATABITS_5 = 0x0001 } +enum : WORD { DATABITS_6 = 0x0002 } +enum : WORD { DATABITS_7 = 0x0004 } +enum : WORD { DATABITS_8 = 0x0008 } +enum : WORD { DATABITS_16 = 0x0010 } +enum : WORD { DATABITS_16X = 0x0020 } + +enum : WORD { STOPBITS_10 = 0x0001 } +enum : WORD { STOPBITS_15 = 0x0002 } +enum : WORD { STOPBITS_20 = 0x0004 } +enum : WORD { PARITY_NONE = 0x0100 } +enum : WORD { PARITY_ODD = 0x0200 } +enum : WORD { PARITY_EVEN = 0x0400 } +enum : WORD { PARITY_MARK = 0x0800 } +enum : WORD { PARITY_SPACE = 0x1000 } + +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[1]; +} +alias _COMMPROP COMMPROP; +alias _COMMPROP* LPCOMMPROP; + +enum : DWORD { COMMPROP_INITIALIZED = 0xE73CF52E } + +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 cbInQue; + DWORD cbOutQue; +} +alias _COMSTAT COMSTAT; +alias _COMSTAT* LPCOMSTAT; + +enum : uint { DTR_CONTROL_DISABLE = 0x00 } +enum : uint { DTR_CONTROL_ENABLE = 0x01 } +enum : uint { DTR_CONTROL_HANDSHAKE = 0x02 } + +enum : uint { RTS_CONTROL_DISABLE = 0x00 } +enum : uint { RTS_CONTROL_ENABLE = 0x01 } +enum : uint { RTS_CONTROL_HANDSHAKE = 0x02 } +enum : uint { RTS_CONTROL_TOGGLE = 0x03 } + +struct _DCB { + DWORD DCBlength; + DWORD BaudRate; +// DWORD fBinary: 1; +// DWORD fParity: 1; +// DWORD fOutxCtsFlow:1; +// DWORD fOutxDsrFlow:1; +// DWORD fDtrControl:2; +// DWORD fDsrSensitivity:1; +// DWORD fTXContinueOnXoff: 1; +// DWORD fOutX: 1; +// DWORD fInX: 1; +// DWORD fErrorChar: 1; +// DWORD fNull: 1; +// DWORD fRtsControl:2; +// DWORD fAbortOnError:1; +// DWORD fDummy2:17; + 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 DCB; +alias _DCB* LPDCB; + +struct _COMMTIMEOUTS { + DWORD ReadIntervalTimeout; + DWORD ReadTotalTimeoutMultiplier; + DWORD ReadTotalTimeoutConstant; + DWORD WriteTotalTimeoutMultiplier; + DWORD WriteTotalTimeoutConstant; +} +alias _COMMTIMEOUTS COMMTIMEOUTS; +alias _COMMTIMEOUTS* LPCOMMTIMEOUTS; + +struct _COMMCONFIG { + DWORD dwSize; + WORD wVersion; + WORD wReserved; + DCB dcb; + DWORD dwProviderSubType; + DWORD dwProviderOffset; + DWORD dwProviderSize; + WCHAR wcProviderData[1]; +} +alias _COMMCONFIG COMMCONFIG; +alias _COMMCONFIG* LPCOMMCONFIG; + +struct _SYSTEM_INFO { +union { + DWORD dwOemId; +struct { + WORD wProcessorArchitecture; + WORD wReserved; +} + +} + + DWORD dwPageSize; + LPVOID lpMinimumApplicationAddress; + LPVOID lpMaximumApplicationAddress; + DWORD_PTR dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; +} +alias _SYSTEM_INFO SYSTEM_INFO; +alias _SYSTEM_INFO* LPSYSTEM_INFO; + +alias FreeLibrary FreeModule; +// #define MakeProcInstance(lpProc,hInstance) (lpProc) +// #define FreeProcInstance(lpProc) (lpProc) + +enum : uint { GMEM_FIXED = 0x0000 } +enum : uint { GMEM_MOVEABLE = 0x0002 } +enum : uint { GMEM_NOCOMPACT = 0x0010 } +enum : uint { GMEM_NODISCARD = 0x0020 } +enum : uint { GMEM_ZEROINIT = 0x0040 } +enum : uint { GMEM_MODIFY = 0x0080 } +enum : uint { GMEM_DISCARDABLE = 0x0100 } +enum : uint { GMEM_NOT_BANKED = 0x1000 } +enum : uint { GMEM_SHARE = 0x2000 } +enum : uint { GMEM_DDESHARE = 0x2000 } +enum : uint { GMEM_NOTIFY = 0x4000 } +alias GMEM_NOT_BANKED GMEM_LOWER; +enum : uint { GMEM_VALID_FLAGS = 0x7F72 } +enum : uint { GMEM_INVALID_HANDLE = 0x8000 } + +enum : uint { GHND = GMEM_MOVEABLE | GMEM_ZEROINIT } +enum : uint { GPTR = GMEM_FIXED | GMEM_ZEROINIT } + +// #define GlobalLRUNewest( h ) ((HANDLE)(h)) +// #define GlobalLRUOldest( h ) ((HANDLE)(h)) +// #define GlobalDiscard( h ) GlobalReAlloc( (h), 0, GMEM_MOVEABLE ) + +enum : uint { GMEM_DISCARDED = 0x4000 } +enum : uint { GMEM_LOCKCOUNT = 0x00FF } + +struct _MEMORYSTATUS { + DWORD dwLength; + DWORD dwMemoryLoad; + SIZE_T dwTotalPhys; + SIZE_T dwAvailPhys; + SIZE_T dwTotalPageFile; + SIZE_T dwAvailPageFile; + SIZE_T dwTotalVirtual; + SIZE_T dwAvailVirtual; +} +alias _MEMORYSTATUS MEMORYSTATUS; +alias _MEMORYSTATUS* LPMEMORYSTATUS; + +enum : uint { LMEM_FIXED = 0x0000 } +enum : uint { LMEM_MOVEABLE = 0x0002 } +enum : uint { LMEM_NOCOMPACT = 0x0010 } +enum : uint { LMEM_NODISCARD = 0x0020 } +enum : uint { LMEM_ZEROINIT = 0x0040 } +enum : uint { LMEM_MODIFY = 0x0080 } +enum : uint { LMEM_DISCARDABLE = 0x0F00 } +enum : uint { LMEM_VALID_FLAGS = 0x0F72 } +enum : uint { LMEM_INVALID_HANDLE = 0x8000 } + +enum : uint { LHND = LMEM_MOVEABLE | LMEM_ZEROINIT } +enum : uint { LPTR = LMEM_FIXED | LMEM_ZEROINIT } + +enum : uint { NONZEROLHND = LMEM_MOVEABLE } +enum : uint { NONZEROLPTR = LMEM_FIXED } + +// #define LocalDiscard( h ) LocalReAlloc( (h), 0, LMEM_MOVEABLE ) + +enum : uint { LMEM_DISCARDED = 0x4000 } +enum : uint { LMEM_LOCKCOUNT = 0x00FF } + +enum : uint { DEBUG_PROCESS = 0x00000001 } +enum : uint { DEBUG_ONLY_THIS_PROCESS = 0x00000002 } + +enum : uint { CREATE_SUSPENDED = 0x00000004 } + +enum : uint { DETACHED_PROCESS = 0x00000008 } + +enum : uint { CREATE_NEW_CONSOLE = 0x00000010 } + +enum : uint { NORMAL_PRIORITY_CLASS = 0x00000020 } +enum : uint { IDLE_PRIORITY_CLASS = 0x00000040 } +enum : uint { HIGH_PRIORITY_CLASS = 0x00000080 } +enum : uint { REALTIME_PRIORITY_CLASS = 0x00000100 } + +enum : uint { CREATE_NEW_PROCESS_GROUP = 0x00000200 } +enum : uint { CREATE_UNICODE_ENVIRONMENT = 0x00000400 } + +enum : uint { CREATE_SEPARATE_WOW_VDM = 0x00000800 } +enum : uint { CREATE_SHARED_WOW_VDM = 0x00001000 } +enum : uint { CREATE_FORCEDOS = 0x00002000 } + +enum : uint { BELOW_NORMAL_PRIORITY_CLASS = 0x00004000 } +enum : uint { ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000 } +enum : uint { STACK_SIZE_PARAM_IS_A_RESERVATION = 0x00010000 } + +enum : uint { CREATE_BREAKAWAY_FROM_JOB = 0x01000000 } +enum : uint { CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 } + +enum : uint { CREATE_DEFAULT_ERROR_MODE = 0x04000000 } +enum : uint { CREATE_NO_WINDOW = 0x08000000 } + +enum : uint { PROFILE_USER = 0x10000000 } +enum : uint { PROFILE_KERNEL = 0x20000000 } +enum : uint { PROFILE_SERVER = 0x40000000 } + +enum : uint { CREATE_IGNORE_SYSTEM_DEFAULT = 0x80000000 } + +alias THREAD_BASE_PRIORITY_MIN THREAD_PRIORITY_LOWEST; +enum : uint { THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST+1 } +enum : uint { THREAD_PRIORITY_NORMAL = 0 } +alias THREAD_BASE_PRIORITY_MAX THREAD_PRIORITY_HIGHEST; +enum : uint { THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST-1 } +enum : uint { THREAD_PRIORITY_ERROR_RETURN = MAXLONG } + +alias THREAD_BASE_PRIORITY_LOWRT THREAD_PRIORITY_TIME_CRITICAL; +alias THREAD_BASE_PRIORITY_IDLE THREAD_PRIORITY_IDLE; + +enum : uint { EXCEPTION_DEBUG_EVENT = 1 } +enum : uint { CREATE_THREAD_DEBUG_EVENT = 2 } +enum : uint { CREATE_PROCESS_DEBUG_EVENT = 3 } +enum : uint { EXIT_THREAD_DEBUG_EVENT = 4 } +enum : uint { EXIT_PROCESS_DEBUG_EVENT = 5 } +enum : uint { LOAD_DLL_DEBUG_EVENT = 6 } +enum : uint { UNLOAD_DLL_DEBUG_EVENT = 7 } +enum : uint { OUTPUT_DEBUG_STRING_EVENT = 8 } +enum : uint { RIP_EVENT = 9 } + +struct _EXCEPTION_DEBUG_INFO { + EXCEPTION_RECORD ExceptionRecord; + DWORD dwFirstChance; +} +alias _EXCEPTION_DEBUG_INFO EXCEPTION_DEBUG_INFO; +alias _EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; + +struct _CREATE_THREAD_DEBUG_INFO { + HANDLE hThread; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; +} +alias _CREATE_THREAD_DEBUG_INFO CREATE_THREAD_DEBUG_INFO; +alias _CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; + +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 CREATE_PROCESS_DEBUG_INFO; +alias _CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; + +struct _EXIT_THREAD_DEBUG_INFO { + DWORD dwExitCode; +} +alias _EXIT_THREAD_DEBUG_INFO EXIT_THREAD_DEBUG_INFO; +alias _EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; + +struct _EXIT_PROCESS_DEBUG_INFO { + DWORD dwExitCode; +} +alias _EXIT_PROCESS_DEBUG_INFO EXIT_PROCESS_DEBUG_INFO; +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 LOAD_DLL_DEBUG_INFO; +alias _LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; + +struct _UNLOAD_DLL_DEBUG_INFO { + LPVOID lpBaseOfDll; +} +alias _UNLOAD_DLL_DEBUG_INFO UNLOAD_DLL_DEBUG_INFO; +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 OUTPUT_DEBUG_STRING_INFO; +alias _OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; + +struct _RIP_INFO { + DWORD dwError; + DWORD dwType; +} +alias _RIP_INFO RIP_INFO; +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 DEBUG_EVENT; +alias _DEBUG_EVENT* LPDEBUG_EVENT; + +// #if !defined(MIDL_PASS) +alias PCONTEXT LPCONTEXT; +alias PEXCEPTION_RECORD LPEXCEPTION_RECORD; +alias PEXCEPTION_POINTERS LPEXCEPTION_POINTERS; +// #endif + +enum : uint { DRIVE_UNKNOWN = 0 } +enum : uint { DRIVE_NO_ROOT_DIR = 1 } +enum : uint { DRIVE_REMOVABLE = 2 } +enum : uint { DRIVE_FIXED = 3 } +enum : uint { DRIVE_REMOTE = 4 } +enum : uint { DRIVE_CDROM = 5 } +enum : uint { DRIVE_RAMDISK = 6 } + +// #ifndef _MAC +// #define GetFreeSpace(w) (0x100000L) +// #else +// ... +// #endif + +enum : uint { FILE_TYPE_UNKNOWN = 0x0000 } +enum : uint { FILE_TYPE_DISK = 0x0001 } +enum : uint { FILE_TYPE_CHAR = 0x0002 } +enum : uint { FILE_TYPE_PIPE = 0x0003 } +enum : uint { FILE_TYPE_REMOTE = 0x8000 } + +enum : DWORD { STD_INPUT_HANDLE = cast(DWORD)-10 } +enum : DWORD { STD_OUTPUT_HANDLE = cast(DWORD)-11 } +enum : DWORD { STD_ERROR_HANDLE = cast(DWORD)-12 } + +enum : uint { NOPARITY = 0 } +enum : uint { ODDPARITY = 1 } +enum : uint { EVENPARITY = 2 } +enum : uint { MARKPARITY = 3 } +enum : uint { SPACEPARITY = 4 } + +enum : uint { ONESTOPBIT = 0 } +enum : uint { ONE5STOPBITS = 1 } +enum : uint { TWOSTOPBITS = 2 } + +enum : uint { IGNORE = 0 } +enum : uint { INFINITE = 0xFFFFFFFF } + +enum : uint { CBR_110 = 110 } +enum : uint { CBR_300 = 300 } +enum : uint { CBR_600 = 600 } +enum : uint { CBR_1200 = 1200 } +enum : uint { CBR_2400 = 2400 } +enum : uint { CBR_4800 = 4800 } +enum : uint { CBR_9600 = 9600 } +enum : uint { CBR_14400 = 14400 } +enum : uint { CBR_19200 = 19200 } +enum : uint { CBR_38400 = 38400 } +enum : uint { CBR_56000 = 56000 } +enum : uint { CBR_57600 = 57600 } +enum : uint { CBR_115200 = 115200 } +enum : uint { CBR_128000 = 128000 } +enum : uint { CBR_256000 = 256000 } + +enum : uint { CE_RXOVER = 0x0001 } +enum : uint { CE_OVERRUN = 0x0002 } +enum : uint { CE_RXPARITY = 0x0004 } +enum : uint { CE_FRAME = 0x0008 } +enum : uint { CE_BREAK = 0x0010 } +enum : uint { CE_TXFULL = 0x0100 } +enum : uint { CE_PTO = 0x0200 } +enum : uint { CE_IOE = 0x0400 } +enum : uint { CE_DNS = 0x0800 } +enum : uint { CE_OOP = 0x1000 } +enum : uint { CE_MODE = 0x8000 } + +enum { IE_BADID = -1 } +enum { IE_OPEN = -2 } +enum { IE_NOPEN = -3 } +enum { IE_MEMORY = -4 } +enum { IE_DEFAULT = -5 } +enum { IE_HARDWARE = -10 } +enum { IE_BYTESIZE = -11 } +enum { IE_BAUDRATE = -12 } + +enum : uint { EV_RXCHAR = 0x0001 } +enum : uint { EV_RXFLAG = 0x0002 } +enum : uint { EV_TXEMPTY = 0x0004 } +enum : uint { EV_CTS = 0x0008 } +enum : uint { EV_DSR = 0x0010 } +enum : uint { EV_RLSD = 0x0020 } +enum : uint { EV_BREAK = 0x0040 } +enum : uint { EV_ERR = 0x0080 } +enum : uint { EV_RING = 0x0100 } +enum : uint { EV_PERR = 0x0200 } +enum : uint { EV_RX80FULL = 0x0400 } +enum : uint { EV_EVENT1 = 0x0800 } +enum : uint { EV_EVENT2 = 0x1000 } + +enum : uint { SETXOFF = 1 } +enum : uint { SETXON = 2 } +enum : uint { SETRTS = 3 } +enum : uint { CLRRTS = 4 } +enum : uint { SETDTR = 5 } +enum : uint { CLRDTR = 6 } +enum : uint { RESETDEV = 7 } +enum : uint { SETBREAK = 8 } +enum : uint { CLRBREAK = 9 } + +enum : uint { PURGE_TXABORT = 0x0001 } +enum : uint { PURGE_RXABORT = 0x0002 } +enum : uint { PURGE_TXCLEAR = 0x0004 } +enum : uint { PURGE_RXCLEAR = 0x0008 } + +enum : uint { LPTx = 0x80 } + +enum : DWORD { MS_CTS_ON = 0x0010 } +enum : DWORD { MS_DSR_ON = 0x0020 } +enum : DWORD { MS_RING_ON = 0x0040 } +enum : DWORD { MS_RLSD_ON = 0x0080 } + +enum : uint { S_QUEUEEMPTY = 0 } +enum : uint { S_THRESHOLD = 1 } +enum : uint { S_ALLTHRESHOLD = 2 } + +enum : uint { S_NORMAL = 0 } +enum : uint { S_LEGATO = 1 } +enum : uint { S_STACCATO = 2 } + +enum : uint { S_PERIOD512 = 0 } +enum : uint { S_PERIOD1024 = 1 } +enum : uint { S_PERIOD2048 = 2 } +enum : uint { S_PERIODVOICE = 3 } +enum : uint { S_WHITE512 = 4 } +enum : uint { S_WHITE1024 = 5 } +enum : uint { S_WHITE2048 = 6 } +enum : uint { S_WHITEVOICE = 7 } + +enum { S_SERDVNA = -1 } +enum { S_SEROFM = -2 } +enum { S_SERMACT = -3 } +enum { S_SERQFUL = -4 } +enum { S_SERBDNT = -5 } +enum { S_SERDLN = -6 } +enum { S_SERDCC = -7 } +enum { S_SERDTP = -8 } +enum { S_SERDVL = -9 } +enum { S_SERDMD = -10 } +enum { S_SERDSH = -11 } +enum { S_SERDPT = -12 } +enum { S_SERDFQ = -13 } +enum { S_SERDDR = -14 } +enum { S_SERDSR = -15 } +enum { S_SERDST = -16 } + +enum : uint { NMPWAIT_WAIT_FOREVER = 0xffffffff } +enum : uint { NMPWAIT_NOWAIT = 0x00000001 } +enum : uint { NMPWAIT_USE_DEFAULT_WAIT = 0x00000000 } + +alias FILE_CASE_PRESERVED_NAMES FS_CASE_IS_PRESERVED; +alias FILE_CASE_SENSITIVE_SEARCH FS_CASE_SENSITIVE; +alias FILE_UNICODE_ON_DISK FS_UNICODE_STORED_ON_DISK; +alias FILE_PERSISTENT_ACLS FS_PERSISTENT_ACLS; +alias FILE_VOLUME_IS_COMPRESSED FS_VOL_IS_COMPRESSED; +alias FILE_FILE_COMPRESSION FS_FILE_COMPRESSION; +alias FILE_SUPPORTS_ENCRYPTION FS_FILE_ENCRYPTION; + +alias SECTION_QUERY FILE_MAP_COPY; +alias SECTION_MAP_WRITE FILE_MAP_WRITE; +alias SECTION_MAP_READ FILE_MAP_READ; +alias SECTION_ALL_ACCESS FILE_MAP_ALL_ACCESS; + +enum : uint { OF_READ = 0x00000000 } +enum : uint { OF_WRITE = 0x00000001 } +enum : uint { OF_READWRITE = 0x00000002 } +enum : uint { OF_SHARE_COMPAT = 0x00000000 } +enum : uint { OF_SHARE_EXCLUSIVE = 0x00000010 } +enum : uint { OF_SHARE_DENY_WRITE = 0x00000020 } +enum : uint { OF_SHARE_DENY_READ = 0x00000030 } +enum : uint { OF_SHARE_DENY_NONE = 0x00000040 } +enum : uint { OF_PARSE = 0x00000100 } +enum : uint { OF_DELETE = 0x00000200 } +enum : uint { OF_VERIFY = 0x00000400 } +enum : uint { OF_CANCEL = 0x00000800 } +enum : uint { OF_CREATE = 0x00001000 } +enum : uint { OF_PROMPT = 0x00002000 } +enum : uint { OF_EXIST = 0x00004000 } +enum : uint { OF_REOPEN = 0x00008000 } + +enum : uint { OFS_MAXPATHNAME = 128 } +struct _OFSTRUCT { + BYTE cBytes; + BYTE fFixedDisk; + WORD nErrCode; + WORD Reserved1; + WORD Reserved2; + CHAR szPathName[OFS_MAXPATHNAME]; +} +alias _OFSTRUCT OFSTRUCT; +alias _OFSTRUCT* LPOFSTRUCT; +alias _OFSTRUCT* POFSTRUCT; + +// #ifndef NOWINBASEINTERLOCK + +// #ifndef _NTOS_ + +// #if defined(_M_IA64) && !defined(RC_INVOKED) + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #elif defined(_M_AMD64) && !defined(RC_INVOKED) + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #else // X86 interlocked definitions + +extern(Windows) export LONG InterlockedIncrement( + LONG *lpAddend); + +extern(Windows) export LONG InterlockedDecrement( + LONG *lpAddend); + +extern(Windows) export LONG InterlockedExchange( + LONG *Target, + LONG Value); + +void* InterlockedExchangePointer(void** t, void* v){ return cast(void*)InterlockedExchange(cast(PLONG)t, cast(LONG)v); } + +extern(Windows) export LONG InterlockedExchangeAdd( + LONG *Addend, + LONG Value); + +extern(Windows) export LONG InterlockedCompareExchange( + LONG *Destination, + LONG Exchange, + LONG Comperand); + +// #ifdef __cplusplus + +PVOID __InlineInterlockedCompareExchangePointer(PVOID* Destination, PVOID ExChange, PVOID Comperand){ return(cast(PVOID)cast(LONG_PTR)InterlockedCompareExchange(cast(LONG*)Destination, cast(LONG)cast(LONG_PTR)ExChange, cast(LONG)cast(LONG_PTR)Comperand)); } +alias __InlineInterlockedCompareExchangePointer InterlockedCompareExchangePointer; + +// #else + +// #... +// ... + +// #endif /* __cplusplus */ + +// #endif /* X86 | IA64 */ + +// #if defined(_SLIST_HEADER_) && !defined(_NTOSP_) + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif /* _SLIST_HEADER_ */ +// #endif /* _NTOS_ */ + +// #endif /* NOWINBASEINTERLOCK */ + +extern(Windows) export BOOL FreeResource( + HGLOBAL hResData); + +extern(Windows) export LPVOID LockResource( + HGLOBAL hResData); + +// #define UnlockResource(hResData) ((hResData), 0) +enum : uint { MAXINTATOM = 0xC000 } +// #define MAKEINTATOM(i) (LPTSTR)((ULONG_PTR)((WORD)(i))) +enum : ATOM { INVALID_ATOM = 0 } + +// #ifndef _MAC +// ??? +// ??? +// #else +// ... +// #endif +// WinMain + +extern(Windows) export BOOL FreeLibrary( + HMODULE hLibModule); + +extern(Windows) export VOID FreeLibraryAndExitThread( + HMODULE hLibModule, + DWORD dwExitCode); + +extern(Windows) export BOOL DisableThreadLibraryCalls( + HMODULE hLibModule); + +extern(Windows) export FARPROC GetProcAddress( + HMODULE hModule, + LPCSTR lpProcName); + +extern(Windows) export DWORD GetVersion(); + +extern(Windows) export HGLOBAL GlobalAlloc( + UINT uFlags, + SIZE_T dwBytes); + +extern(Windows) export HGLOBAL GlobalReAlloc( + HGLOBAL hMem, + SIZE_T dwBytes, + UINT uFlags); + +extern(Windows) export SIZE_T GlobalSize( + HGLOBAL hMem); + +extern(Windows) export UINT GlobalFlags( + HGLOBAL hMem); + +extern(Windows) export LPVOID GlobalLock( + HGLOBAL hMem); + +extern(Windows) export HGLOBAL GlobalHandle( + LPCVOID pMem); + +extern(Windows) export BOOL GlobalUnlock( + HGLOBAL hMem); + +extern(Windows) export HGLOBAL GlobalFree( + HGLOBAL hMem); + +extern(Windows) export SIZE_T GlobalCompact( + DWORD dwMinFree); + +extern(Windows) export VOID GlobalFix( + HGLOBAL hMem); + +extern(Windows) export VOID GlobalUnfix( + HGLOBAL hMem); + +extern(Windows) export LPVOID GlobalWire( + HGLOBAL hMem); + +extern(Windows) export BOOL GlobalUnWire( + HGLOBAL hMem); + +extern(Windows) export VOID GlobalMemoryStatus( + LPMEMORYSTATUS lpBuffer); + +struct _MEMORYSTATUSEX { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; +} +alias _MEMORYSTATUSEX MEMORYSTATUSEX; +alias _MEMORYSTATUSEX* LPMEMORYSTATUSEX; + +extern(Windows) export BOOL GlobalMemoryStatusEx( + LPMEMORYSTATUSEX lpBuffer); + +extern(Windows) export HLOCAL LocalAlloc( + UINT uFlags, + SIZE_T uBytes); + +extern(Windows) export HLOCAL LocalReAlloc( + HLOCAL hMem, + SIZE_T uBytes, + UINT uFlags); + +extern(Windows) export LPVOID LocalLock( + HLOCAL hMem); + +extern(Windows) export HLOCAL LocalHandle( + LPCVOID pMem); + +extern(Windows) export BOOL LocalUnlock( + HLOCAL hMem); + +extern(Windows) export SIZE_T LocalSize( + HLOCAL hMem); + +extern(Windows) export UINT LocalFlags( + HLOCAL hMem); + +extern(Windows) export HLOCAL LocalFree( + HLOCAL hMem); + +extern(Windows) export SIZE_T LocalShrink( + HLOCAL hMem, + UINT cbNewSize); + +extern(Windows) export SIZE_T LocalCompact( + UINT uMinFree); + +extern(Windows) export BOOL FlushInstructionCache( + HANDLE hProcess, + LPCVOID lpBaseAddress, + SIZE_T dwSize); + +extern(Windows) export LPVOID VirtualAlloc( + LPVOID lpAddress, + SIZE_T dwSize, + DWORD flAllocationType, + DWORD flProtect); + +extern(Windows) export BOOL VirtualFree( + LPVOID lpAddress, + SIZE_T dwSize, + DWORD dwFreeType); + +extern(Windows) export BOOL VirtualProtect( + LPVOID lpAddress, + SIZE_T dwSize, + DWORD flNewProtect, + PDWORD lpflOldProtect); + +extern(Windows) export SIZE_T VirtualQuery( + LPCVOID lpAddress, + PMEMORY_BASIC_INFORMATION lpBuffer, + SIZE_T dwLength); + +extern(Windows) export LPVOID VirtualAllocEx( + HANDLE hProcess, + LPVOID lpAddress, + SIZE_T dwSize, + DWORD flAllocationType, + DWORD flProtect); + +extern(Windows) export UINT GetWriteWatch( + DWORD dwFlags, + PVOID lpBaseAddress, + SIZE_T dwRegionSize, + PVOID *lpAddresses, + PULONG_PTR lpdwCount, + PULONG lpdwGranularity); + +extern(Windows) export UINT ResetWriteWatch( + LPVOID lpBaseAddress, + SIZE_T dwRegionSize); + +extern(Windows) export BOOL VirtualFreeEx( + HANDLE hProcess, + LPVOID lpAddress, + SIZE_T dwSize, + DWORD dwFreeType); + +extern(Windows) export BOOL VirtualProtectEx( + HANDLE hProcess, + LPVOID lpAddress, + SIZE_T dwSize, + DWORD flNewProtect, + PDWORD lpflOldProtect); + +extern(Windows) export SIZE_T VirtualQueryEx( + HANDLE hProcess, + LPCVOID lpAddress, + PMEMORY_BASIC_INFORMATION lpBuffer, + SIZE_T dwLength); + +extern(Windows) export HANDLE HeapCreate( + DWORD flOptions, + SIZE_T dwInitialSize, + SIZE_T dwMaximumSize); + +extern(Windows) export BOOL HeapDestroy( + HANDLE hHeap); + +extern(Windows) export LPVOID HeapAlloc( + HANDLE hHeap, + DWORD dwFlags, + SIZE_T dwBytes); + +extern(Windows) export LPVOID HeapReAlloc( + HANDLE hHeap, + DWORD dwFlags, + LPVOID lpMem, + SIZE_T dwBytes); + +extern(Windows) export BOOL HeapFree( + HANDLE hHeap, + DWORD dwFlags, + LPVOID lpMem); + +extern(Windows) export SIZE_T HeapSize( + HANDLE hHeap, + DWORD dwFlags, + LPCVOID lpMem); + +extern(Windows) export BOOL HeapValidate( + HANDLE hHeap, + DWORD dwFlags, + LPCVOID lpMem); + +extern(Windows) export SIZE_T HeapCompact( + HANDLE hHeap, + DWORD dwFlags); + +extern(Windows) export HANDLE GetProcessHeap(); + +extern(Windows) export DWORD GetProcessHeaps( + DWORD NumberOfHeaps, + PHANDLE ProcessHeaps); + +struct _PROCESS_HEAP_ENTRY { + PVOID lpData; + DWORD cbData; + BYTE cbOverhead; + BYTE iRegionIndex; + WORD wFlags; +union { +struct { + HANDLE hMem; + DWORD dwReserved[ 3 ]; +} + +struct { + DWORD dwCommittedSize; + DWORD dwUnCommittedSize; + LPVOID lpFirstBlock; + LPVOID lpLastBlock; +} + +} + +} +alias _PROCESS_HEAP_ENTRY PROCESS_HEAP_ENTRY; +alias _PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; +alias _PROCESS_HEAP_ENTRY* PPROCESS_HEAP_ENTRY; + +enum : uint { PROCESS_HEAP_REGION = 0x0001 } +enum : uint { PROCESS_HEAP_UNCOMMITTED_RANGE = 0x0002 } +enum : uint { PROCESS_HEAP_ENTRY_BUSY = 0x0004 } +enum : uint { PROCESS_HEAP_ENTRY_MOVEABLE = 0x0010 } +enum : uint { PROCESS_HEAP_ENTRY_DDESHARE = 0x0020 } + +extern(Windows) export BOOL HeapLock( + HANDLE hHeap); + +extern(Windows) export BOOL HeapUnlock( + HANDLE hHeap); + +extern(Windows) export BOOL HeapWalk( + HANDLE hHeap, + LPPROCESS_HEAP_ENTRY lpEntry); + +extern(Windows) export BOOL HeapSetInformation( + PVOID HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation , + SIZE_T HeapInformationLength ); + +extern(Windows) export BOOL HeapQueryInformation( + PVOID HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation , + SIZE_T HeapInformationLength , + PSIZE_T ReturnLength ); + +enum : uint { SCS_32BIT_BINARY = 0 } +enum : uint { SCS_DOS_BINARY = 1 } +enum : uint { SCS_WOW_BINARY = 2 } +enum : uint { SCS_PIF_BINARY = 3 } +enum : uint { SCS_POSIX_BINARY = 4 } +enum : uint { SCS_OS216_BINARY = 5 } +enum : uint { SCS_64BIT_BINARY = 6 } + +// #if defined(_WIN64) +// #... +// #else +alias SCS_32BIT_BINARY SCS_THIS_PLATFORM_BINARY; +// #endif + +extern(Windows) export BOOL GetBinaryTypeA( + LPCSTR lpApplicationName, + LPDWORD lpBinaryType); +extern(Windows) export BOOL GetBinaryTypeW( + LPCWSTR lpApplicationName, + LPDWORD lpBinaryType); +// #ifdef UNICODE +// #... +// #else +alias GetBinaryTypeA GetBinaryType; +// #endif // !UNICODE + +extern(Windows) export DWORD GetShortPathNameA( + LPCSTR lpszLongPath, + LPSTR lpszShortPath, + DWORD cchBuffer); +extern(Windows) export DWORD GetShortPathNameW( + LPCWSTR lpszLongPath, + LPWSTR lpszShortPath, + DWORD cchBuffer); +// #ifdef UNICODE +// #... +// #else +alias GetShortPathNameA GetShortPathName; +// #endif // !UNICODE + +extern(Windows) export DWORD GetLongPathNameA( + LPCSTR lpszShortPath, + LPSTR lpszLongPath, + DWORD cchBuffer); +extern(Windows) export DWORD GetLongPathNameW( + LPCWSTR lpszShortPath, + LPWSTR lpszLongPath, + DWORD cchBuffer); +// #ifdef UNICODE +// #... +// #else +alias GetLongPathNameA GetLongPathName; +// #endif // !UNICODE + +extern(Windows) export BOOL GetProcessAffinityMask( + HANDLE hProcess, + PDWORD_PTR lpProcessAffinityMask, + PDWORD_PTR lpSystemAffinityMask); + +extern(Windows) export BOOL SetProcessAffinityMask( + HANDLE hProcess, + DWORD_PTR dwProcessAffinityMask); + +extern(Windows) export BOOL GetProcessTimes( + HANDLE hProcess, + LPFILETIME lpCreationTime, + LPFILETIME lpExitTime, + LPFILETIME lpKernelTime, + LPFILETIME lpUserTime); + +extern(Windows) export BOOL GetProcessIoCounters( + HANDLE hProcess, + PIO_COUNTERS lpIoCounters); + +extern(Windows) export BOOL GetProcessWorkingSetSize( + HANDLE hProcess, + PSIZE_T lpMinimumWorkingSetSize, + PSIZE_T lpMaximumWorkingSetSize); + +extern(Windows) export BOOL SetProcessWorkingSetSize( + HANDLE hProcess, + SIZE_T dwMinimumWorkingSetSize, + SIZE_T dwMaximumWorkingSetSize); + +extern(Windows) export HANDLE OpenProcess( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + DWORD dwProcessId); + +extern(Windows) export HANDLE GetCurrentProcess(); + +extern(Windows) export DWORD GetCurrentProcessId(); + +extern(Windows) export VOID ExitProcess( + UINT uExitCode); + +extern(Windows) export BOOL TerminateProcess( + HANDLE hProcess, + UINT uExitCode); + +extern(Windows) export BOOL GetExitCodeProcess( + HANDLE hProcess, + LPDWORD lpExitCode); + +extern(Windows) export VOID FatalExit( + int ExitCode); + +extern(Windows) export LPSTR GetEnvironmentStrings(); + +extern(Windows) export LPWSTR GetEnvironmentStringsW(); + +// #ifdef UNICODE +// #... +// #else +alias GetEnvironmentStrings GetEnvironmentStringsA; +// #endif // !UNICODE + +extern(Windows) export BOOL FreeEnvironmentStringsA( + LPSTR); +extern(Windows) export BOOL FreeEnvironmentStringsW( + LPWSTR); +// #ifdef UNICODE +// #... +// #else +alias FreeEnvironmentStringsA FreeEnvironmentStrings; +// #endif // !UNICODE + +extern(Windows) export VOID RaiseException( + DWORD dwExceptionCode, + DWORD dwExceptionFlags, + DWORD nNumberOfArguments, + ULONG_PTR *lpArguments); + +extern(Windows) export LONG UnhandledExceptionFilter( + _EXCEPTION_POINTERS *ExceptionInfo); + +extern(Windows) alias LONG function( _EXCEPTION_POINTERS *ExceptionInfo ) PTOP_LEVEL_EXCEPTION_FILTER; +alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; + +extern(Windows) export LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter( + LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); + +// #if(_WIN32_WINNT >= 0x0400) + +extern(Windows) export LPVOID CreateFiber( + SIZE_T dwStackSize, + LPFIBER_START_ROUTINE lpStartAddress, + LPVOID lpParameter); + +extern(Windows) export LPVOID CreateFiberEx( + SIZE_T dwStackCommitSize, + SIZE_T dwStackReserveSize, + DWORD dwFlags, + LPFIBER_START_ROUTINE lpStartAddress, + LPVOID lpParameter); + +extern(Windows) export VOID DeleteFiber( + LPVOID lpFiber); + +extern(Windows) export LPVOID ConvertThreadToFiber( + LPVOID lpParameter); + +extern(Windows) export BOOL ConvertFiberToThread(); + +extern(Windows) export VOID SwitchToFiber( + LPVOID lpFiber); + +extern(Windows) export BOOL SwitchToThread(); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export HANDLE CreateThread( + LPSECURITY_ATTRIBUTES lpThreadAttributes, + SIZE_T dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, + DWORD dwCreationFlags, + LPDWORD lpThreadId); + +extern(Windows) export HANDLE CreateRemoteThread( + HANDLE hProcess, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + SIZE_T dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, + DWORD dwCreationFlags, + LPDWORD lpThreadId); + +extern(Windows) export HANDLE GetCurrentThread(); + +extern(Windows) export DWORD GetCurrentThreadId(); + +extern(Windows) export DWORD_PTR SetThreadAffinityMask( + HANDLE hThread, + DWORD_PTR dwThreadAffinityMask); + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) export DWORD SetThreadIdealProcessor( + HANDLE hThread, + DWORD dwIdealProcessor); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL SetProcessPriorityBoost( + HANDLE hProcess, + BOOL bDisablePriorityBoost); + +extern(Windows) export BOOL GetProcessPriorityBoost( + HANDLE hProcess, + PBOOL pDisablePriorityBoost); + +extern(Windows) export BOOL RequestWakeupLatency( + LATENCY_TIME latency); + +extern(Windows) export BOOL IsSystemResumeAutomatic(); + +extern(Windows) export HANDLE OpenThread( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + DWORD dwThreadId); + +extern(Windows) export BOOL SetThreadPriority( + HANDLE hThread, + int nPriority); + +extern(Windows) export BOOL SetThreadPriorityBoost( + HANDLE hThread, + BOOL bDisablePriorityBoost); + +extern(Windows) export BOOL GetThreadPriorityBoost( + HANDLE hThread, + PBOOL pDisablePriorityBoost); + +extern(Windows) export int GetThreadPriority( + HANDLE hThread); + +extern(Windows) export BOOL GetThreadTimes( + HANDLE hThread, + LPFILETIME lpCreationTime, + LPFILETIME lpExitTime, + LPFILETIME lpKernelTime, + LPFILETIME lpUserTime); + +extern(Windows) export VOID ExitThread( + DWORD dwExitCode); + +extern(Windows) export BOOL TerminateThread( + HANDLE hThread, + DWORD dwExitCode); + +extern(Windows) export BOOL GetExitCodeThread( + HANDLE hThread, + LPDWORD lpExitCode); + +extern(Windows) export BOOL GetThreadSelectorEntry( + HANDLE hThread, + DWORD dwSelector, + LPLDT_ENTRY lpSelectorEntry); + +extern(Windows) export EXECUTION_STATE SetThreadExecutionState( + EXECUTION_STATE esFlags); + +extern(Windows) export DWORD GetLastError(); + +extern(Windows) export VOID SetLastError( + DWORD dwErrCode); + +// #if !defined(RC_INVOKED) // RC warns because "WINBASE_DECLARE_RESTORE_LAST_ERROR" is a bit long. + +// #if defined(WINBASE_DECLARE_RESTORE_LAST_ERROR) + +// ... + +// ... +// #... +// #... +// #... + +// #endif +// #endif + +bit HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped){ return (*lpOverlapped).Internal != STATUS_PENDING; } + +extern(Windows) export BOOL GetOverlappedResult( + HANDLE hFile, + LPOVERLAPPED lpOverlapped, + LPDWORD lpNumberOfBytesTransferred, + BOOL bWait); + +extern(Windows) export HANDLE CreateIoCompletionPort( + HANDLE FileHandle, + HANDLE ExistingCompletionPort, + ULONG_PTR CompletionKey, + DWORD NumberOfConcurrentThreads); + +extern(Windows) export BOOL GetQueuedCompletionStatus( + HANDLE CompletionPort, + LPDWORD lpNumberOfBytesTransferred, + PULONG_PTR lpCompletionKey, + LPOVERLAPPED *lpOverlapped, + DWORD dwMilliseconds); + +extern(Windows) export BOOL PostQueuedCompletionStatus( + HANDLE CompletionPort, + DWORD dwNumberOfBytesTransferred, + ULONG_PTR dwCompletionKey, + LPOVERLAPPED lpOverlapped); + +enum : uint { SEM_FAILCRITICALERRORS = 0x0001 } +enum : uint { SEM_NOGPFAULTERRORBOX = 0x0002 } +enum : uint { SEM_NOALIGNMENTFAULTEXCEPT = 0x0004 } +enum : uint { SEM_NOOPENFILEERRORBOX = 0x8000 } + +extern(Windows) export UINT SetErrorMode( + UINT uMode); + +extern(Windows) export BOOL ReadProcessMemory( + HANDLE hProcess, + LPCVOID lpBaseAddress, + LPVOID lpBuffer, + SIZE_T nSize, + SIZE_T * lpNumberOfBytesRead); + +extern(Windows) export BOOL WriteProcessMemory( + HANDLE hProcess, + LPVOID lpBaseAddress, + LPCVOID lpBuffer, + SIZE_T nSize, + SIZE_T * lpNumberOfBytesWritten); + +// #if !defined(MIDL_PASS) +extern(Windows) export BOOL GetThreadContext( + HANDLE hThread, + LPCONTEXT lpContext); + +extern(Windows) export BOOL SetThreadContext( + HANDLE hThread, + CONTEXT *lpContext); +// #endif + +extern(Windows) export DWORD SuspendThread( + HANDLE hThread); + +extern(Windows) export DWORD ResumeThread( + HANDLE hThread); + +// #if(_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) + +// ... + +// ... + +// #endif /* _WIN32_WINNT >= 0x0400 || _WIN32_WINDOWS > 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +extern(Windows) export BOOL IsDebuggerPresent(); +// #endif + +extern(Windows) export VOID DebugBreak(); + +extern(Windows) export BOOL WaitForDebugEvent( + LPDEBUG_EVENT lpDebugEvent, + DWORD dwMilliseconds); + +extern(Windows) export BOOL ContinueDebugEvent( + DWORD dwProcessId, + DWORD dwThreadId, + DWORD dwContinueStatus); + +extern(Windows) export BOOL DebugActiveProcess( + DWORD dwProcessId); + +extern(Windows) export BOOL DebugActiveProcessStop( + DWORD dwProcessId); + +extern(Windows) export BOOL DebugSetProcessKillOnExit( + BOOL KillOnExit); + +extern(Windows) export BOOL DebugBreakProcess( + HANDLE Process); + +extern(Windows) export VOID InitializeCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); + +extern(Windows) export VOID EnterCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); + +extern(Windows) export VOID LeaveCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); + +// #if (_WIN32_WINNT >= 0x0403) +extern(Windows) export BOOL InitializeCriticalSectionAndSpinCount( + LPCRITICAL_SECTION lpCriticalSection, + DWORD dwSpinCount); + +extern(Windows) export DWORD SetCriticalSectionSpinCount( + LPCRITICAL_SECTION lpCriticalSection, + DWORD dwSpinCount); +// #endif + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) export BOOL TryEnterCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export VOID DeleteCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); + +extern(Windows) export BOOL SetEvent( + HANDLE hEvent); + +extern(Windows) export BOOL ResetEvent( + HANDLE hEvent); + +extern(Windows) export BOOL PulseEvent( + HANDLE hEvent); + +extern(Windows) export BOOL ReleaseSemaphore( + HANDLE hSemaphore, + LONG lReleaseCount, + LPLONG lpPreviousCount); + +extern(Windows) export BOOL ReleaseMutex( + HANDLE hMutex); + +extern(Windows) export DWORD WaitForSingleObject( + HANDLE hHandle, + DWORD dwMilliseconds); + +extern(Windows) export DWORD WaitForMultipleObjects( + DWORD nCount, + HANDLE *lpHandles, + BOOL bWaitAll, + DWORD dwMilliseconds); + +extern(Windows) export VOID Sleep( + DWORD dwMilliseconds); + +extern(Windows) export HGLOBAL LoadResource( + HMODULE hModule, + HRSRC hResInfo); + +extern(Windows) export DWORD SizeofResource( + HMODULE hModule, + HRSRC hResInfo); + +extern(Windows) export ATOM GlobalDeleteAtom( + ATOM nAtom); + +extern(Windows) export BOOL InitAtomTable( + DWORD nSize); + +extern(Windows) export ATOM DeleteAtom( + ATOM nAtom); + +extern(Windows) export UINT SetHandleCount( + UINT uNumber); + +extern(Windows) export DWORD GetLogicalDrives(); + +extern(Windows) export BOOL LockFile( + HANDLE hFile, + DWORD dwFileOffsetLow, + DWORD dwFileOffsetHigh, + DWORD nNumberOfBytesToLockLow, + DWORD nNumberOfBytesToLockHigh); + +extern(Windows) export BOOL UnlockFile( + HANDLE hFile, + DWORD dwFileOffsetLow, + DWORD dwFileOffsetHigh, + DWORD nNumberOfBytesToUnlockLow, + DWORD nNumberOfBytesToUnlockHigh); + +extern(Windows) export BOOL LockFileEx( + HANDLE hFile, + DWORD dwFlags, + DWORD dwReserved, + DWORD nNumberOfBytesToLockLow, + DWORD nNumberOfBytesToLockHigh, + LPOVERLAPPED lpOverlapped); + +enum : uint { LOCKFILE_FAIL_IMMEDIATELY = 0x00000001 } +enum : uint { LOCKFILE_EXCLUSIVE_LOCK = 0x00000002 } + +extern(Windows) export BOOL UnlockFileEx( + HANDLE hFile, + DWORD dwReserved, + DWORD nNumberOfBytesToUnlockLow, + DWORD nNumberOfBytesToUnlockHigh, + LPOVERLAPPED lpOverlapped); + +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 BY_HANDLE_FILE_INFORMATION; +alias _BY_HANDLE_FILE_INFORMATION* PBY_HANDLE_FILE_INFORMATION; +alias _BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION; + +extern(Windows) export BOOL GetFileInformationByHandle( + HANDLE hFile, + LPBY_HANDLE_FILE_INFORMATION lpFileInformation); + +extern(Windows) export DWORD GetFileType( + HANDLE hFile); + +extern(Windows) export DWORD GetFileSize( + HANDLE hFile, + LPDWORD lpFileSizeHigh); + +extern(Windows) export BOOL GetFileSizeEx( + HANDLE hFile, + PLARGE_INTEGER lpFileSize); + +extern(Windows) export HANDLE GetStdHandle( + DWORD nStdHandle); + +extern(Windows) export BOOL SetStdHandle( + DWORD nStdHandle, + HANDLE hHandle); + +extern(Windows) export BOOL WriteFile( + HANDLE hFile, + LPCVOID lpBuffer, + DWORD nNumberOfBytesToWrite, + LPDWORD lpNumberOfBytesWritten, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL ReadFile( + HANDLE hFile, + LPVOID lpBuffer, + DWORD nNumberOfBytesToRead, + LPDWORD lpNumberOfBytesRead, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL FlushFileBuffers( + HANDLE hFile); + +extern(Windows) export BOOL DeviceIoControl( + HANDLE hDevice, + DWORD dwIoControlCode, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL RequestDeviceWakeup( + HANDLE hDevice); + +extern(Windows) export BOOL CancelDeviceWakeupRequest( + HANDLE hDevice); + +extern(Windows) export BOOL GetDevicePowerState( + HANDLE hDevice, + BOOL *pfOn); + +extern(Windows) export BOOL SetMessageWaitingIndicator( + HANDLE hMsgIndicator, + ULONG ulMsgCount); + +extern(Windows) export BOOL SetEndOfFile( + HANDLE hFile); + +extern(Windows) export DWORD SetFilePointer( + HANDLE hFile, + LONG lDistanceToMove, + PLONG lpDistanceToMoveHigh, + DWORD dwMoveMethod); + +extern(Windows) export BOOL SetFilePointerEx( + HANDLE hFile, + LARGE_INTEGER liDistanceToMove, + PLARGE_INTEGER lpNewFilePointer, + DWORD dwMoveMethod); + +extern(Windows) export BOOL FindClose( + HANDLE hFindFile); + +extern(Windows) export BOOL GetFileTime( + HANDLE hFile, + LPFILETIME lpCreationTime, + LPFILETIME lpLastAccessTime, + LPFILETIME lpLastWriteTime); + +extern(Windows) export BOOL SetFileTime( + HANDLE hFile, + FILETIME *lpCreationTime, + FILETIME *lpLastAccessTime, + FILETIME *lpLastWriteTime); + +extern(Windows) export BOOL SetFileValidData( + HANDLE hFile, + LONGLONG ValidDataLength); + +extern(Windows) export BOOL SetFileShortNameA( + HANDLE hFile, + LPCSTR lpShortName); +extern(Windows) export BOOL SetFileShortNameW( + HANDLE hFile, + LPCWSTR lpShortName); +// #ifdef UNICODE +// #... +// #else +alias SetFileShortNameA SetFileShortName; +// #endif // !UNICODE + +extern(Windows) export BOOL CloseHandle( + HANDLE hObject); + +extern(Windows) export BOOL DuplicateHandle( + HANDLE hSourceProcessHandle, + HANDLE hSourceHandle, + HANDLE hTargetProcessHandle, + LPHANDLE lpTargetHandle, + DWORD dwDesiredAccess, + BOOL bInheritHandle, + DWORD dwOptions); + +extern(Windows) export BOOL GetHandleInformation( + HANDLE hObject, + LPDWORD lpdwFlags); + +extern(Windows) export BOOL SetHandleInformation( + HANDLE hObject, + DWORD dwMask, + DWORD dwFlags); + +enum : uint { HANDLE_FLAG_INHERIT = 0x00000001 } +enum : uint { HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x00000002 } + +enum : uint { HINSTANCE_ERROR = 32 } + +extern(Windows) export DWORD LoadModule( + LPCSTR lpModuleName, + LPVOID lpParameterBlock); + +extern(Windows) export UINT WinExec( + LPCSTR lpCmdLine, + UINT uCmdShow); + +extern(Windows) export BOOL ClearCommBreak( + HANDLE hFile); + +extern(Windows) export BOOL ClearCommError( + HANDLE hFile, + LPDWORD lpErrors, + LPCOMSTAT lpStat); + +extern(Windows) export BOOL SetupComm( + HANDLE hFile, + DWORD dwInQueue, + DWORD dwOutQueue); + +extern(Windows) export BOOL EscapeCommFunction( + HANDLE hFile, + DWORD dwFunc); + +extern(Windows) export BOOL GetCommConfig( + HANDLE hCommDev, + LPCOMMCONFIG lpCC, + LPDWORD lpdwSize); + +extern(Windows) export BOOL GetCommMask( + HANDLE hFile, + LPDWORD lpEvtMask); + +extern(Windows) export BOOL GetCommProperties( + HANDLE hFile, + LPCOMMPROP lpCommProp); + +extern(Windows) export BOOL GetCommModemStatus( + HANDLE hFile, + LPDWORD lpModemStat); + +extern(Windows) export BOOL GetCommState( + HANDLE hFile, + LPDCB lpDCB); + +extern(Windows) export BOOL GetCommTimeouts( + HANDLE hFile, + LPCOMMTIMEOUTS lpCommTimeouts); + +extern(Windows) export BOOL PurgeComm( + HANDLE hFile, + DWORD dwFlags); + +extern(Windows) export BOOL SetCommBreak( + HANDLE hFile); + +extern(Windows) export BOOL SetCommConfig( + HANDLE hCommDev, + LPCOMMCONFIG lpCC, + DWORD dwSize); + +extern(Windows) export BOOL SetCommMask( + HANDLE hFile, + DWORD dwEvtMask); + +extern(Windows) export BOOL SetCommState( + HANDLE hFile, + LPDCB lpDCB); + +extern(Windows) export BOOL SetCommTimeouts( + HANDLE hFile, + LPCOMMTIMEOUTS lpCommTimeouts); + +extern(Windows) export BOOL TransmitCommChar( + HANDLE hFile, + char cChar); + +extern(Windows) export BOOL WaitCommEvent( + HANDLE hFile, + LPDWORD lpEvtMask, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export DWORD SetTapePosition( + HANDLE hDevice, + DWORD dwPositionMethod, + DWORD dwPartition, + DWORD dwOffsetLow, + DWORD dwOffsetHigh, + BOOL bImmediate); + +extern(Windows) export DWORD GetTapePosition( + HANDLE hDevice, + DWORD dwPositionType, + LPDWORD lpdwPartition, + LPDWORD lpdwOffsetLow, + LPDWORD lpdwOffsetHigh); + +extern(Windows) export DWORD PrepareTape( + HANDLE hDevice, + DWORD dwOperation, + BOOL bImmediate); + +extern(Windows) export DWORD EraseTape( + HANDLE hDevice, + DWORD dwEraseType, + BOOL bImmediate); + +extern(Windows) export DWORD CreateTapePartition( + HANDLE hDevice, + DWORD dwPartitionMethod, + DWORD dwCount, + DWORD dwSize); + +extern(Windows) export DWORD WriteTapemark( + HANDLE hDevice, + DWORD dwTapemarkType, + DWORD dwTapemarkCount, + BOOL bImmediate); + +extern(Windows) export DWORD GetTapeStatus( + HANDLE hDevice); + +extern(Windows) export DWORD GetTapeParameters( + HANDLE hDevice, + DWORD dwOperation, + LPDWORD lpdwSize, + LPVOID lpTapeInformation); + +enum : uint { GET_TAPE_MEDIA_INFORMATION = 0 } +enum : uint { GET_TAPE_DRIVE_INFORMATION = 1 } + +extern(Windows) export DWORD SetTapeParameters( + HANDLE hDevice, + DWORD dwOperation, + LPVOID lpTapeInformation); + +enum : uint { SET_TAPE_MEDIA_INFORMATION = 0 } +enum : uint { SET_TAPE_DRIVE_INFORMATION = 1 } + +extern(Windows) export BOOL Beep( + DWORD dwFreq, + DWORD dwDuration); + +extern(Windows) export int MulDiv( + int nNumber, + int nNumerator, + int nDenominator); + +extern(Windows) export VOID GetSystemTime( + LPSYSTEMTIME lpSystemTime); + +extern(Windows) export VOID GetSystemTimeAsFileTime( + LPFILETIME lpSystemTimeAsFileTime); + +extern(Windows) export BOOL SetSystemTime( + SYSTEMTIME *lpSystemTime); + +extern(Windows) export VOID GetLocalTime( + LPSYSTEMTIME lpSystemTime); + +extern(Windows) export BOOL SetLocalTime( + SYSTEMTIME *lpSystemTime); + +extern(Windows) export VOID GetSystemInfo( + LPSYSTEM_INFO lpSystemInfo); + +// #if _WIN32_WINNT >= 0x0501 +extern(Windows) export VOID GetNativeSystemInfo( + LPSYSTEM_INFO lpSystemInfo); +// #endif + +extern(Windows) export BOOL IsProcessorFeaturePresent( + DWORD ProcessorFeature); + +struct _TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR StandardName[ 32 ]; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR DaylightName[ 32 ]; + SYSTEMTIME DaylightDate; + LONG DaylightBias; +} +alias _TIME_ZONE_INFORMATION TIME_ZONE_INFORMATION; +alias _TIME_ZONE_INFORMATION* PTIME_ZONE_INFORMATION; +alias _TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; + +extern(Windows) export BOOL SystemTimeToTzSpecificLocalTime( + LPTIME_ZONE_INFORMATION lpTimeZoneInformation, + LPSYSTEMTIME lpUniversalTime, + LPSYSTEMTIME lpLocalTime); + +extern(Windows) export BOOL TzSpecificLocalTimeToSystemTime( + LPTIME_ZONE_INFORMATION lpTimeZoneInformation, + LPSYSTEMTIME lpLocalTime, + LPSYSTEMTIME lpUniversalTime); + +extern(Windows) export DWORD GetTimeZoneInformation( + LPTIME_ZONE_INFORMATION lpTimeZoneInformation); + +extern(Windows) export BOOL SetTimeZoneInformation( + TIME_ZONE_INFORMATION *lpTimeZoneInformation); + +extern(Windows) export BOOL SystemTimeToFileTime( + SYSTEMTIME *lpSystemTime, + LPFILETIME lpFileTime); + +extern(Windows) export BOOL FileTimeToLocalFileTime( + FILETIME *lpFileTime, + LPFILETIME lpLocalFileTime); + +extern(Windows) export BOOL LocalFileTimeToFileTime( + FILETIME *lpLocalFileTime, + LPFILETIME lpFileTime); + +extern(Windows) export BOOL FileTimeToSystemTime( + FILETIME *lpFileTime, + LPSYSTEMTIME lpSystemTime); + +extern(Windows) export LONG CompareFileTime( + FILETIME *lpFileTime1, + FILETIME *lpFileTime2); + +extern(Windows) export BOOL FileTimeToDosDateTime( + FILETIME *lpFileTime, + LPWORD lpFatDate, + LPWORD lpFatTime); + +extern(Windows) export BOOL DosDateTimeToFileTime( + WORD wFatDate, + WORD wFatTime, + LPFILETIME lpFileTime); + +extern(Windows) export DWORD GetTickCount(); + +extern(Windows) export BOOL SetSystemTimeAdjustment( + DWORD dwTimeAdjustment, + BOOL bTimeAdjustmentDisabled); + +extern(Windows) export BOOL GetSystemTimeAdjustment( + PDWORD lpTimeAdjustment, + PDWORD lpTimeIncrement, + PBOOL lpTimeAdjustmentDisabled); + +// #if !defined(MIDL_PASS) +extern(Windows) export DWORD FormatMessageA( + DWORD dwFlags, + LPCVOID lpSource, + DWORD dwMessageId, + DWORD dwLanguageId, + LPSTR lpBuffer, + DWORD nSize, + va_list *Arguments); +extern(Windows) export DWORD FormatMessageW( + DWORD dwFlags, + LPCVOID lpSource, + DWORD dwMessageId, + DWORD dwLanguageId, + LPWSTR lpBuffer, + DWORD nSize, + va_list *Arguments); +// #ifdef UNICODE +// #... +// #else +alias FormatMessageA FormatMessage; +// #endif // !UNICODE +// #endif + +enum : uint { FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100 } +enum : uint { FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200 } +enum : uint { FORMAT_MESSAGE_FROM_STRING = 0x00000400 } +enum : uint { FORMAT_MESSAGE_FROM_HMODULE = 0x00000800 } +enum : uint { FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000 } +enum : uint { FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000 } +enum : uint { FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF } + +extern(Windows) export BOOL CreatePipe( + PHANDLE hReadPipe, + PHANDLE hWritePipe, + LPSECURITY_ATTRIBUTES lpPipeAttributes, + DWORD nSize); + +extern(Windows) export BOOL ConnectNamedPipe( + HANDLE hNamedPipe, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL DisconnectNamedPipe( + HANDLE hNamedPipe); + +extern(Windows) export BOOL SetNamedPipeHandleState( + HANDLE hNamedPipe, + LPDWORD lpMode, + LPDWORD lpMaxCollectionCount, + LPDWORD lpCollectDataTimeout); + +extern(Windows) export BOOL GetNamedPipeInfo( + HANDLE hNamedPipe, + LPDWORD lpFlags, + LPDWORD lpOutBufferSize, + LPDWORD lpInBufferSize, + LPDWORD lpMaxInstances); + +extern(Windows) export BOOL PeekNamedPipe( + HANDLE hNamedPipe, + LPVOID lpBuffer, + DWORD nBufferSize, + LPDWORD lpBytesRead, + LPDWORD lpTotalBytesAvail, + LPDWORD lpBytesLeftThisMessage); + +extern(Windows) export BOOL TransactNamedPipe( + HANDLE hNamedPipe, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesRead, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export HANDLE CreateMailslotA( + LPCSTR lpName, + DWORD nMaxMessageSize, + DWORD lReadTimeout, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export HANDLE CreateMailslotW( + LPCWSTR lpName, + DWORD nMaxMessageSize, + DWORD lReadTimeout, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +// #... +// #else +alias CreateMailslotA CreateMailslot; +// #endif // !UNICODE + +extern(Windows) export BOOL GetMailslotInfo( + HANDLE hMailslot, + LPDWORD lpMaxMessageSize, + LPDWORD lpNextSize, + LPDWORD lpMessageCount, + LPDWORD lpReadTimeout); + +extern(Windows) export BOOL SetMailslotInfo( + HANDLE hMailslot, + DWORD lReadTimeout); + +extern(Windows) export LPVOID MapViewOfFile( + HANDLE hFileMappingObject, + DWORD dwDesiredAccess, + DWORD dwFileOffsetHigh, + DWORD dwFileOffsetLow, + SIZE_T dwNumberOfBytesToMap); + +extern(Windows) export BOOL FlushViewOfFile( + LPCVOID lpBaseAddress, + SIZE_T dwNumberOfBytesToFlush); + +extern(Windows) export BOOL UnmapViewOfFile( + LPCVOID lpBaseAddress); + +extern(Windows) export BOOL EncryptFileA( + LPCSTR lpFileName); +extern(Windows) export BOOL EncryptFileW( + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias EncryptFileA EncryptFile; +// #endif // !UNICODE + +extern(Windows) export BOOL DecryptFileA( + LPCSTR lpFileName, + DWORD dwReserved); +extern(Windows) export BOOL DecryptFileW( + LPCWSTR lpFileName, + DWORD dwReserved); +// #ifdef UNICODE +// #... +// #else +alias DecryptFileA DecryptFile; +// #endif // !UNICODE + +enum : uint { FILE_ENCRYPTABLE = 0 } +enum : uint { FILE_IS_ENCRYPTED = 1 } +enum : uint { FILE_SYSTEM_ATTR = 2 } +enum : uint { FILE_ROOT_DIR = 3 } +enum : uint { FILE_SYSTEM_DIR = 4 } +enum : uint { FILE_UNKNOWN = 5 } +enum : uint { FILE_SYSTEM_NOT_SUPPORT = 6 } +enum : uint { FILE_USER_DISALLOWED = 7 } +enum : uint { FILE_READ_ONLY = 8 } +enum : uint { FILE_DIR_DISALLOWED = 9 } + +extern(Windows) export BOOL FileEncryptionStatusA( + LPCSTR lpFileName, + LPDWORD lpStatus); +extern(Windows) export BOOL FileEncryptionStatusW( + LPCWSTR lpFileName, + LPDWORD lpStatus); +// #ifdef UNICODE +// #... +// #else +alias FileEncryptionStatusA FileEncryptionStatus; +// #endif // !UNICODE + +enum : uint { EFS_USE_RECOVERY_KEYS = 0x1 } + +extern(Windows) alias DWORD function( PBYTE pbData, PVOID pvCallbackContext, ULONG ulLength ) PFE_EXPORT_FUNC; + +extern(Windows) alias DWORD function( PBYTE pbData, PVOID pvCallbackContext, PULONG ulLength ) PFE_IMPORT_FUNC; + +enum : uint { CREATE_FOR_IMPORT = 1 } +enum : uint { CREATE_FOR_DIR = 2 } +enum : uint { OVERWRITE_HIDDEN = 4 } + +extern(Windows) export DWORD OpenEncryptedFileRawA( + LPCSTR lpFileName, + ULONG ulFlags, + PVOID * pvContext); +extern(Windows) export DWORD OpenEncryptedFileRawW( + LPCWSTR lpFileName, + ULONG ulFlags, + PVOID * pvContext); +// #ifdef UNICODE +// #... +// #else +alias OpenEncryptedFileRawA OpenEncryptedFileRaw; +// #endif // !UNICODE + +extern(Windows) export DWORD ReadEncryptedFileRaw( + PFE_EXPORT_FUNC pfExportCallback, + PVOID pvCallbackContext, + PVOID pvContext); + +extern(Windows) export DWORD WriteEncryptedFileRaw( + PFE_IMPORT_FUNC pfImportCallback, + PVOID pvCallbackContext, + PVOID pvContext); + +extern(Windows) export VOID CloseEncryptedFileRaw( + PVOID pvContext); + +extern(Windows) export int lstrcmpA( + LPCSTR lpString1, + LPCSTR lpString2); +extern(Windows) export int lstrcmpW( + LPCWSTR lpString1, + LPCWSTR lpString2); +// #ifdef UNICODE +// #... +// #else +alias lstrcmpA lstrcmp; +// #endif // !UNICODE + +extern(Windows) export int lstrcmpiA( + LPCSTR lpString1, + LPCSTR lpString2); +extern(Windows) export int lstrcmpiW( + LPCWSTR lpString1, + LPCWSTR lpString2); +// #ifdef UNICODE +// #... +// #else +alias lstrcmpiA lstrcmpi; +// #endif // !UNICODE + +extern(Windows) export LPSTR lstrcpynA( + LPSTR lpString1, + LPCSTR lpString2, + int iMaxLength); +extern(Windows) export LPWSTR lstrcpynW( + LPWSTR lpString1, + LPCWSTR lpString2, + int iMaxLength); +// #ifdef UNICODE +// #... +// #else +alias lstrcpynA lstrcpyn; +// #endif // !UNICODE + +extern(Windows) export LPSTR lstrcpyA( + LPSTR lpString1, + LPCSTR lpString2); +extern(Windows) export LPWSTR lstrcpyW( + LPWSTR lpString1, + LPCWSTR lpString2); +// #ifdef UNICODE +// #... +// #else +alias lstrcpyA lstrcpy; +// #endif // !UNICODE + +extern(Windows) export LPSTR lstrcatA( + LPSTR lpString1, + LPCSTR lpString2); +extern(Windows) export LPWSTR lstrcatW( + LPWSTR lpString1, + LPCWSTR lpString2); +// #ifdef UNICODE +// #... +// #else +alias lstrcatA lstrcat; +// #endif // !UNICODE + +extern(Windows) export int lstrlenA( + LPCSTR lpString); +extern(Windows) export int lstrlenW( + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias lstrlenA lstrlen; +// #endif // !UNICODE + +extern(Windows) export HFILE OpenFile( + LPCSTR lpFileName, + LPOFSTRUCT lpReOpenBuff, + UINT uStyle); + +extern(Windows) export HFILE _lopen( + LPCSTR lpPathName, + int iReadWrite); + +extern(Windows) export HFILE _lcreat( + LPCSTR lpPathName, + int iAttribute); + +extern(Windows) export UINT _lread( + HFILE hFile, + LPVOID lpBuffer, + UINT uBytes); + +extern(Windows) export UINT _lwrite( + HFILE hFile, + LPCSTR lpBuffer, + UINT uBytes); + +extern(Windows) export int _hread( + HFILE hFile, + LPVOID lpBuffer, + int lBytes); + +extern(Windows) export int _hwrite( + HFILE hFile, + LPCSTR lpBuffer, + int lBytes); + +extern(Windows) export HFILE _lclose( + HFILE hFile); + +extern(Windows) export LONG _llseek( + HFILE hFile, + LONG lOffset, + int iOrigin); + +extern(Windows) export BOOL IsTextUnicode( + VOID* lpBuffer, + int cb, + LPINT lpi); + +extern(Windows) export DWORD TlsAlloc(); + +enum : DWORD { TLS_OUT_OF_INDEXES = 0xFFFFFFFF } + +extern(Windows) export LPVOID TlsGetValue( + DWORD dwTlsIndex); + +extern(Windows) export BOOL TlsSetValue( + DWORD dwTlsIndex, + LPVOID lpTlsValue); + +extern(Windows) export BOOL TlsFree( + DWORD dwTlsIndex); + +extern(Windows) alias VOID function( DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped ) LPOVERLAPPED_COMPLETION_ROUTINE; + +extern(Windows) export DWORD SleepEx( + DWORD dwMilliseconds, + BOOL bAlertable); + +extern(Windows) export DWORD WaitForSingleObjectEx( + HANDLE hHandle, + DWORD dwMilliseconds, + BOOL bAlertable); + +extern(Windows) export DWORD WaitForMultipleObjectsEx( + DWORD nCount, + HANDLE *lpHandles, + BOOL bWaitAll, + DWORD dwMilliseconds, + BOOL bAlertable); + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) export DWORD SignalObjectAndWait( + HANDLE hObjectToSignal, + HANDLE hObjectToWaitOn, + DWORD dwMilliseconds, + BOOL bAlertable); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL ReadFileEx( + HANDLE hFile, + LPVOID lpBuffer, + DWORD nNumberOfBytesToRead, + LPOVERLAPPED lpOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + +extern(Windows) export BOOL WriteFileEx( + HANDLE hFile, + LPCVOID lpBuffer, + DWORD nNumberOfBytesToWrite, + LPOVERLAPPED lpOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + +extern(Windows) export BOOL BackupRead( + HANDLE hFile, + LPBYTE lpBuffer, + DWORD nNumberOfBytesToRead, + LPDWORD lpNumberOfBytesRead, + BOOL bAbort, + BOOL bProcessSecurity, + LPVOID *lpContext); + +extern(Windows) export BOOL BackupSeek( + HANDLE hFile, + DWORD dwLowBytesToSeek, + DWORD dwHighBytesToSeek, + LPDWORD lpdwLowByteSeeked, + LPDWORD lpdwHighByteSeeked, + LPVOID *lpContext); + +extern(Windows) export BOOL BackupWrite( + HANDLE hFile, + LPBYTE lpBuffer, + DWORD nNumberOfBytesToWrite, + LPDWORD lpNumberOfBytesWritten, + BOOL bAbort, + BOOL bProcessSecurity, + LPVOID *lpContext); + +struct _WIN32_STREAM_ID { + DWORD dwStreamId ; + DWORD dwStreamAttributes ; + LARGE_INTEGER Size ; + DWORD dwStreamNameSize ; + WCHAR cStreamName[ ANYSIZE_ARRAY ] ; +} +alias _WIN32_STREAM_ID WIN32_STREAM_ID; +alias _WIN32_STREAM_ID* LPWIN32_STREAM_ID; + +enum : uint { BACKUP_INVALID = 0x00000000 } +enum : uint { BACKUP_DATA = 0x00000001 } +enum : uint { BACKUP_EA_DATA = 0x00000002 } +enum : uint { BACKUP_SECURITY_DATA = 0x00000003 } +enum : uint { BACKUP_ALTERNATE_DATA = 0x00000004 } +enum : uint { BACKUP_LINK = 0x00000005 } +enum : uint { BACKUP_PROPERTY_DATA = 0x00000006 } +enum : uint { BACKUP_OBJECT_ID = 0x00000007 } +enum : uint { BACKUP_REPARSE_DATA = 0x00000008 } +enum : uint { BACKUP_SPARSE_BLOCK = 0x00000009 } + +enum : uint { STREAM_NORMAL_ATTRIBUTE = 0x00000000 } +enum : uint { STREAM_MODIFIED_WHEN_READ = 0x00000001 } +enum : uint { STREAM_CONTAINS_SECURITY = 0x00000002 } +enum : uint { STREAM_CONTAINS_PROPERTIES = 0x00000004 } +enum : uint { STREAM_SPARSE_ATTRIBUTE = 0x00000008 } + +extern(Windows) export BOOL ReadFileScatter( + HANDLE hFile, + FILE_SEGMENT_ELEMENT aSegmentArray[], + DWORD nNumberOfBytesToRead, + LPDWORD lpReserved, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL WriteFileGather( + HANDLE hFile, + FILE_SEGMENT_ELEMENT aSegmentArray[], + DWORD nNumberOfBytesToWrite, + LPDWORD lpReserved, + LPOVERLAPPED lpOverlapped); + +enum : uint { STARTF_USESHOWWINDOW = 0x00000001 } +enum : uint { STARTF_USESIZE = 0x00000002 } +enum : uint { STARTF_USEPOSITION = 0x00000004 } +enum : uint { STARTF_USECOUNTCHARS = 0x00000008 } +enum : uint { STARTF_USEFILLATTRIBUTE = 0x00000010 } +enum : uint { STARTF_RUNFULLSCREEN = 0x00000020 } +enum : uint { STARTF_FORCEONFEEDBACK = 0x00000040 } +enum : uint { STARTF_FORCEOFFFEEDBACK = 0x00000080 } +enum : uint { STARTF_USESTDHANDLES = 0x00000100 } + +// #if(WINVER >= 0x0400) + +enum : uint { STARTF_USEHOTKEY = 0x00000200 } +// #endif /* WINVER >= 0x0400 */ + +struct _STARTUPINFOA { + DWORD cb; + 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; + LPBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias _STARTUPINFOA STARTUPINFOA; +alias _STARTUPINFOA* LPSTARTUPINFOA; + +struct _STARTUPINFOW { + DWORD cb; + 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; + LPBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias _STARTUPINFOW STARTUPINFOW; +alias _STARTUPINFOW* LPSTARTUPINFOW; + +// #ifdef UNICODE +// ... +// #else +alias STARTUPINFOA STARTUPINFO; +alias LPSTARTUPINFOA LPSTARTUPINFO; +// #endif // UNICODE + +enum : uint { SHUTDOWN_NORETRY = 0x00000001 } + +struct _WIN32_FIND_DATAA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD dwReserved0; + DWORD dwReserved1; + CHAR cFileName[ MAX_PATH ]; + CHAR cAlternateFileName[ 14 ]; +// #ifdef _MAC +// ... +// #endif +} +alias _WIN32_FIND_DATAA WIN32_FIND_DATAA; +alias _WIN32_FIND_DATAA* PWIN32_FIND_DATAA; +alias _WIN32_FIND_DATAA* LPWIN32_FIND_DATAA; + +struct _WIN32_FIND_DATAW { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD dwReserved0; + DWORD dwReserved1; + WCHAR cFileName[ MAX_PATH ]; + WCHAR cAlternateFileName[ 14 ]; +// #ifdef _MAC +// ... +// #endif +} +alias _WIN32_FIND_DATAW WIN32_FIND_DATAW; +alias _WIN32_FIND_DATAW* PWIN32_FIND_DATAW; +alias _WIN32_FIND_DATAW* LPWIN32_FIND_DATAW; + +// #ifdef UNICODE +// ... +// #else +alias WIN32_FIND_DATAA WIN32_FIND_DATA; +alias PWIN32_FIND_DATAA PWIN32_FIND_DATA; +alias LPWIN32_FIND_DATAA LPWIN32_FIND_DATA; +// #endif // UNICODE + +struct _WIN32_FILE_ATTRIBUTE_DATA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +} +alias _WIN32_FILE_ATTRIBUTE_DATA WIN32_FILE_ATTRIBUTE_DATA; +alias _WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; + +extern(Windows) export HANDLE CreateMutexA( + LPSECURITY_ATTRIBUTES lpMutexAttributes, + BOOL bInitialOwner, + LPCSTR lpName); +extern(Windows) export HANDLE CreateMutexW( + LPSECURITY_ATTRIBUTES lpMutexAttributes, + BOOL bInitialOwner, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias CreateMutexA CreateMutex; +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenMutexA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenMutexW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias OpenMutexA OpenMutex; +// #endif // !UNICODE + +extern(Windows) export HANDLE CreateEventA( + LPSECURITY_ATTRIBUTES lpEventAttributes, + BOOL bManualReset, + BOOL bInitialState, + LPCSTR lpName); +extern(Windows) export HANDLE CreateEventW( + LPSECURITY_ATTRIBUTES lpEventAttributes, + BOOL bManualReset, + BOOL bInitialState, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias CreateEventA CreateEvent; +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenEventA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenEventW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias OpenEventA OpenEvent; +// #endif // !UNICODE + +extern(Windows) export HANDLE CreateSemaphoreA( + LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, + LONG lInitialCount, + LONG lMaximumCount, + LPCSTR lpName); +extern(Windows) export HANDLE CreateSemaphoreW( + LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, + LONG lInitialCount, + LONG lMaximumCount, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias CreateSemaphoreA CreateSemaphore; +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenSemaphoreA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenSemaphoreW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias OpenSemaphoreA OpenSemaphore; +// #endif // !UNICODE + +// #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +extern(Windows) alias VOID function( LPVOID lpArgToCompletionRoutine, DWORD dwTimerLowValue, DWORD dwTimerHighValue ) PTIMERAPCROUTINE; + +extern(Windows) export HANDLE CreateWaitableTimerA( + LPSECURITY_ATTRIBUTES lpTimerAttributes, + BOOL bManualReset, + LPCSTR lpTimerName); +extern(Windows) export HANDLE CreateWaitableTimerW( + LPSECURITY_ATTRIBUTES lpTimerAttributes, + BOOL bManualReset, + LPCWSTR lpTimerName); +// #ifdef UNICODE +// #... +// #else +alias CreateWaitableTimerA CreateWaitableTimer; +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenWaitableTimerA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpTimerName); +extern(Windows) export HANDLE OpenWaitableTimerW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpTimerName); +// #ifdef UNICODE +// #... +// #else +alias OpenWaitableTimerA OpenWaitableTimer; +// #endif // !UNICODE + +extern(Windows) export BOOL SetWaitableTimer( + HANDLE hTimer, + LARGE_INTEGER *lpDueTime, + LONG lPeriod, + PTIMERAPCROUTINE pfnCompletionRoutine, + LPVOID lpArgToCompletionRoutine, + BOOL fResume); + +extern(Windows) export BOOL CancelWaitableTimer( + HANDLE hTimer); +// #endif /* (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) */ + +extern(Windows) export HANDLE CreateFileMappingA( + HANDLE hFile, + LPSECURITY_ATTRIBUTES lpFileMappingAttributes, + DWORD flProtect, + DWORD dwMaximumSizeHigh, + DWORD dwMaximumSizeLow, + LPCSTR lpName); +extern(Windows) export HANDLE CreateFileMappingW( + HANDLE hFile, + LPSECURITY_ATTRIBUTES lpFileMappingAttributes, + DWORD flProtect, + DWORD dwMaximumSizeHigh, + DWORD dwMaximumSizeLow, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias CreateFileMappingA CreateFileMapping; +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenFileMappingA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenFileMappingW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias OpenFileMappingA OpenFileMapping; +// #endif // !UNICODE + +extern(Windows) export DWORD GetLogicalDriveStringsA( + DWORD nBufferLength, + LPSTR lpBuffer); +extern(Windows) export DWORD GetLogicalDriveStringsW( + DWORD nBufferLength, + LPWSTR lpBuffer); +// #ifdef UNICODE +// #... +// #else +alias GetLogicalDriveStringsA GetLogicalDriveStrings; +// #endif // !UNICODE + +// #if _WIN32_WINNT >= 0x0501 + +alias int _MEMORY_RESOURCE_NOTIFICATION_TYPE; +enum { + LowMemoryResourceNotification, + HighMemoryResourceNotification, +} +alias _MEMORY_RESOURCE_NOTIFICATION_TYPE MEMORY_RESOURCE_NOTIFICATION_TYPE; + +extern(Windows) export HANDLE CreateMemoryResourceNotification( + MEMORY_RESOURCE_NOTIFICATION_TYPE NotificationType); + +extern(Windows) export BOOL QueryMemoryResourceNotification( + HANDLE ResourceNotificationHandle, + PBOOL ResourceState); + +// #endif // _WIN32_WINNT >= 0x0501 + +extern(Windows) export HMODULE LoadLibraryA( + LPCSTR lpLibFileName); +extern(Windows) export HMODULE LoadLibraryW( + LPCWSTR lpLibFileName); +// #ifdef UNICODE +// #... +// #else +alias LoadLibraryA LoadLibrary; +// #endif // !UNICODE + +extern(Windows) export HMODULE LoadLibraryExA( + LPCSTR lpLibFileName, + HANDLE hFile, + DWORD dwFlags); +extern(Windows) export HMODULE LoadLibraryExW( + LPCWSTR lpLibFileName, + HANDLE hFile, + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias LoadLibraryExA LoadLibraryEx; +// #endif // !UNICODE + +enum : uint { DONT_RESOLVE_DLL_REFERENCES = 0x00000001 } +enum : uint { LOAD_LIBRARY_AS_DATAFILE = 0x00000002 } +enum : uint { LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008 } +enum : uint { LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x00000010 } + +extern(Windows) export DWORD GetModuleFileNameA( + HMODULE hModule, + LPSTR lpFilename, + DWORD nSize); +extern(Windows) export DWORD GetModuleFileNameW( + HMODULE hModule, + LPWSTR lpFilename, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetModuleFileNameA GetModuleFileName; +// #endif // !UNICODE + +extern(Windows) export HMODULE GetModuleHandleA( + LPCSTR lpModuleName); +extern(Windows) export HMODULE GetModuleHandleW( + LPCWSTR lpModuleName); +// #ifdef UNICODE +// #... +// #else +alias GetModuleHandleA GetModuleHandle; +// #endif // !UNICODE + +// #if !defined(RC_INVOKED) +// #if _WIN32_WINNT > 0x0500 || defined(WINBASE_DECLARE_GET_MODULE_HANDLE_EX) || ISOLATION_AWARE_ENABLED + +enum : uint { GET_MODULE_HANDLE_EX_FLAG_PIN = 0x00000001 } +enum : uint { GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 0x00000002 } +enum : uint { GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 0x00000004 } + +extern(Windows) alias BOOL function( DWORD dwFlags, LPCSTR lpModuleName, HMODULE* phModule ) PGET_MODULE_HANDLE_EXA; +extern(Windows) alias BOOL function( DWORD dwFlags, LPCWSTR lpModuleName, HMODULE* phModule ) PGET_MODULE_HANDLE_EXW; +// #ifdef UNICODE +// #... +// #else +alias PGET_MODULE_HANDLE_EXA PGET_MODULE_HANDLE_EX; +// #endif // !UNICODE + +extern(Windows) export BOOL GetModuleHandleExA( + DWORD dwFlags, + LPCSTR lpModuleName, + HMODULE* phModule); +extern(Windows) export BOOL GetModuleHandleExW( + DWORD dwFlags, + LPCWSTR lpModuleName, + HMODULE* phModule); +// #ifdef UNICODE +// #... +// #else +alias GetModuleHandleExA GetModuleHandleEx; +// #endif // !UNICODE + +// #endif +// #endif + +extern(Windows) export BOOL CreateProcessA( + LPCSTR lpApplicationName, + LPSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCSTR lpCurrentDirectory, + LPSTARTUPINFOA lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); +extern(Windows) export BOOL CreateProcessW( + LPCWSTR lpApplicationName, + LPWSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCWSTR lpCurrentDirectory, + LPSTARTUPINFOW lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); +// #ifdef UNICODE +// #... +// #else +alias CreateProcessA CreateProcess; +// #endif // !UNICODE + +extern(Windows) export BOOL SetProcessShutdownParameters( + DWORD dwLevel, + DWORD dwFlags); + +extern(Windows) export BOOL GetProcessShutdownParameters( + LPDWORD lpdwLevel, + LPDWORD lpdwFlags); + +extern(Windows) export DWORD GetProcessVersion( + DWORD ProcessId); + +extern(Windows) export VOID FatalAppExitA( + UINT uAction, + LPCSTR lpMessageText); +extern(Windows) export VOID FatalAppExitW( + UINT uAction, + LPCWSTR lpMessageText); +// #ifdef UNICODE +// #... +// #else +alias FatalAppExitA FatalAppExit; +// #endif // !UNICODE + +extern(Windows) export VOID GetStartupInfoA( + LPSTARTUPINFOA lpStartupInfo); +extern(Windows) export VOID GetStartupInfoW( + LPSTARTUPINFOW lpStartupInfo); +// #ifdef UNICODE +// #... +// #else +alias GetStartupInfoA GetStartupInfo; +// #endif // !UNICODE + +extern(Windows) export LPSTR GetCommandLineA(); +extern(Windows) export LPWSTR GetCommandLineW(); +// #ifdef UNICODE +// #... +// #else +alias GetCommandLineA GetCommandLine; +// #endif // !UNICODE + +extern(Windows) export DWORD GetEnvironmentVariableA( + LPCSTR lpName, + LPSTR lpBuffer, + DWORD nSize); +extern(Windows) export DWORD GetEnvironmentVariableW( + LPCWSTR lpName, + LPWSTR lpBuffer, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetEnvironmentVariableA GetEnvironmentVariable; +// #endif // !UNICODE + +extern(Windows) export BOOL SetEnvironmentVariableA( + LPCSTR lpName, + LPCSTR lpValue); +extern(Windows) export BOOL SetEnvironmentVariableW( + LPCWSTR lpName, + LPCWSTR lpValue); +// #ifdef UNICODE +// #... +// #else +alias SetEnvironmentVariableA SetEnvironmentVariable; +// #endif // !UNICODE + +extern(Windows) export DWORD ExpandEnvironmentStringsA( + LPCSTR lpSrc, + LPSTR lpDst, + DWORD nSize); +extern(Windows) export DWORD ExpandEnvironmentStringsW( + LPCWSTR lpSrc, + LPWSTR lpDst, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; +// #endif // !UNICODE + +extern(Windows) export DWORD GetFirmwareEnvironmentVariableA( + LPCSTR lpName, + LPCSTR lpGuid, + PVOID pBuffer, + DWORD nSize); +extern(Windows) export DWORD GetFirmwareEnvironmentVariableW( + LPCWSTR lpName, + LPCWSTR lpGuid, + PVOID pBuffer, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetFirmwareEnvironmentVariableA GetFirmwareEnvironmentVariable; +// #endif // !UNICODE + +extern(Windows) export BOOL SetFirmwareEnvironmentVariableA( + LPCSTR lpName, + LPCSTR lpGuid, + PVOID pValue, + DWORD nSize); +extern(Windows) export BOOL SetFirmwareEnvironmentVariableW( + LPCWSTR lpName, + LPCWSTR lpGuid, + PVOID pValue, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; +// #endif // !UNICODE + +extern(Windows) export VOID OutputDebugStringA( + LPCSTR lpOutputString); +extern(Windows) export VOID OutputDebugStringW( + LPCWSTR lpOutputString); +// #ifdef UNICODE +// #... +// #else +alias OutputDebugStringA OutputDebugString; +// #endif // !UNICODE + +extern(Windows) export HRSRC FindResourceA( + HMODULE hModule, + LPCSTR lpName, + LPCSTR lpType); +extern(Windows) export HRSRC FindResourceW( + HMODULE hModule, + LPCWSTR lpName, + LPCWSTR lpType); +// #ifdef UNICODE +// #... +// #else +alias FindResourceA FindResource; +// #endif // !UNICODE + +extern(Windows) export HRSRC FindResourceExA( + HMODULE hModule, + LPCSTR lpType, + LPCSTR lpName, + WORD wLanguage); +extern(Windows) export HRSRC FindResourceExW( + HMODULE hModule, + LPCWSTR lpType, + LPCWSTR lpName, + WORD wLanguage); +// #ifdef UNICODE +// #... +// #else +alias FindResourceExA FindResourceEx; +// #endif // !UNICODE + +// #ifdef STRICT +extern(Windows) alias BOOL function(HMODULE hModule, LPSTR lpType, LONG_PTR lParam) ENUMRESTYPEPROCA; +extern(Windows) alias BOOL function(HMODULE hModule, LPWSTR lpType, LONG_PTR lParam) ENUMRESTYPEPROCW; +// #ifdef UNICODE +// #... +// #else +alias ENUMRESTYPEPROCA ENUMRESTYPEPROC; +// #endif // !UNICODE +extern(Windows) alias BOOL function(HMODULE hModule, LPCSTR lpType, LPSTR lpName, LONG_PTR lParam) ENUMRESNAMEPROCA; +extern(Windows) alias BOOL function(HMODULE hModule, LPCWSTR lpType, LPWSTR lpName, LONG_PTR lParam) ENUMRESNAMEPROCW; +// #ifdef UNICODE +// #... +// #else +alias ENUMRESNAMEPROCA ENUMRESNAMEPROC; +// #endif // !UNICODE +extern(Windows) alias BOOL function(HMODULE hModule, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LONG_PTR lParam) ENUMRESLANGPROCA; +extern(Windows) alias BOOL function(HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LONG_PTR lParam) ENUMRESLANGPROCW; +// #ifdef UNICODE +// #... +// #else +alias ENUMRESLANGPROCA ENUMRESLANGPROC; +// #endif // !UNICODE +// #else +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif + +extern(Windows) export BOOL EnumResourceTypesA( + HMODULE hModule, + ENUMRESTYPEPROCA lpEnumFunc, + LONG_PTR lParam); +extern(Windows) export BOOL EnumResourceTypesW( + HMODULE hModule, + ENUMRESTYPEPROCW lpEnumFunc, + LONG_PTR lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumResourceTypesA EnumResourceTypes; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumResourceNamesA( + HMODULE hModule, + LPCSTR lpType, + ENUMRESNAMEPROCA lpEnumFunc, + LONG_PTR lParam); +extern(Windows) export BOOL EnumResourceNamesW( + HMODULE hModule, + LPCWSTR lpType, + ENUMRESNAMEPROCW lpEnumFunc, + LONG_PTR lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumResourceNamesA EnumResourceNames; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumResourceLanguagesA( + HMODULE hModule, + LPCSTR lpType, + LPCSTR lpName, + ENUMRESLANGPROCA lpEnumFunc, + LONG_PTR lParam); +extern(Windows) export BOOL EnumResourceLanguagesW( + HMODULE hModule, + LPCWSTR lpType, + LPCWSTR lpName, + ENUMRESLANGPROCW lpEnumFunc, + LONG_PTR lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumResourceLanguagesA EnumResourceLanguages; +// #endif // !UNICODE + +extern(Windows) export HANDLE BeginUpdateResourceA( + LPCSTR pFileName, + BOOL bDeleteExistingResources); +extern(Windows) export HANDLE BeginUpdateResourceW( + LPCWSTR pFileName, + BOOL bDeleteExistingResources); +// #ifdef UNICODE +// #... +// #else +alias BeginUpdateResourceA BeginUpdateResource; +// #endif // !UNICODE + +extern(Windows) export BOOL UpdateResourceA( + HANDLE hUpdate, + LPCSTR lpType, + LPCSTR lpName, + WORD wLanguage, + LPVOID lpData, + DWORD cbData); +extern(Windows) export BOOL UpdateResourceW( + HANDLE hUpdate, + LPCWSTR lpType, + LPCWSTR lpName, + WORD wLanguage, + LPVOID lpData, + DWORD cbData); +// #ifdef UNICODE +// #... +// #else +alias UpdateResourceA UpdateResource; +// #endif // !UNICODE + +extern(Windows) export BOOL EndUpdateResourceA( + HANDLE hUpdate, + BOOL fDiscard); +extern(Windows) export BOOL EndUpdateResourceW( + HANDLE hUpdate, + BOOL fDiscard); +// #ifdef UNICODE +// #... +// #else +alias EndUpdateResourceA EndUpdateResource; +// #endif // !UNICODE + +extern(Windows) export ATOM GlobalAddAtomA( + LPCSTR lpString); +extern(Windows) export ATOM GlobalAddAtomW( + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias GlobalAddAtomA GlobalAddAtom; +// #endif // !UNICODE + +extern(Windows) export ATOM GlobalFindAtomA( + LPCSTR lpString); +extern(Windows) export ATOM GlobalFindAtomW( + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias GlobalFindAtomA GlobalFindAtom; +// #endif // !UNICODE + +extern(Windows) export UINT GlobalGetAtomNameA( + ATOM nAtom, + LPSTR lpBuffer, + int nSize); +extern(Windows) export UINT GlobalGetAtomNameW( + ATOM nAtom, + LPWSTR lpBuffer, + int nSize); +// #ifdef UNICODE +// #... +// #else +alias GlobalGetAtomNameA GlobalGetAtomName; +// #endif // !UNICODE + +extern(Windows) export ATOM AddAtomA( + LPCSTR lpString); +extern(Windows) export ATOM AddAtomW( + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias AddAtomA AddAtom; +// #endif // !UNICODE + +extern(Windows) export ATOM FindAtomA( + LPCSTR lpString); +extern(Windows) export ATOM FindAtomW( + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias FindAtomA FindAtom; +// #endif // !UNICODE + +extern(Windows) export UINT GetAtomNameA( + ATOM nAtom, + LPSTR lpBuffer, + int nSize); +extern(Windows) export UINT GetAtomNameW( + ATOM nAtom, + LPWSTR lpBuffer, + int nSize); +// #ifdef UNICODE +// #... +// #else +alias GetAtomNameA GetAtomName; +// #endif // !UNICODE + +extern(Windows) export UINT GetProfileIntA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + INT nDefault); +extern(Windows) export UINT GetProfileIntW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + INT nDefault); +// #ifdef UNICODE +// #... +// #else +alias GetProfileIntA GetProfileInt; +// #endif // !UNICODE + +extern(Windows) export DWORD GetProfileStringA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + LPCSTR lpDefault, + LPSTR lpReturnedString, + DWORD nSize); +extern(Windows) export DWORD GetProfileStringW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + LPCWSTR lpDefault, + LPWSTR lpReturnedString, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetProfileStringA GetProfileString; +// #endif // !UNICODE + +extern(Windows) export BOOL WriteProfileStringA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + LPCSTR lpString); +extern(Windows) export BOOL WriteProfileStringW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias WriteProfileStringA WriteProfileString; +// #endif // !UNICODE + +extern(Windows) export DWORD GetProfileSectionA( + LPCSTR lpAppName, + LPSTR lpReturnedString, + DWORD nSize); +extern(Windows) export DWORD GetProfileSectionW( + LPCWSTR lpAppName, + LPWSTR lpReturnedString, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetProfileSectionA GetProfileSection; +// #endif // !UNICODE + +extern(Windows) export BOOL WriteProfileSectionA( + LPCSTR lpAppName, + LPCSTR lpString); +extern(Windows) export BOOL WriteProfileSectionW( + LPCWSTR lpAppName, + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias WriteProfileSectionA WriteProfileSection; +// #endif // !UNICODE + +extern(Windows) export UINT GetPrivateProfileIntA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + INT nDefault, + LPCSTR lpFileName); +extern(Windows) export UINT GetPrivateProfileIntW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + INT nDefault, + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias GetPrivateProfileIntA GetPrivateProfileInt; +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrivateProfileStringA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + LPCSTR lpDefault, + LPSTR lpReturnedString, + DWORD nSize, + LPCSTR lpFileName); +extern(Windows) export DWORD GetPrivateProfileStringW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + LPCWSTR lpDefault, + LPWSTR lpReturnedString, + DWORD nSize, + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias GetPrivateProfileStringA GetPrivateProfileString; +// #endif // !UNICODE + +extern(Windows) export BOOL WritePrivateProfileStringA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + LPCSTR lpString, + LPCSTR lpFileName); +extern(Windows) export BOOL WritePrivateProfileStringW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + LPCWSTR lpString, + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias WritePrivateProfileStringA WritePrivateProfileString; +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrivateProfileSectionA( + LPCSTR lpAppName, + LPSTR lpReturnedString, + DWORD nSize, + LPCSTR lpFileName); +extern(Windows) export DWORD GetPrivateProfileSectionW( + LPCWSTR lpAppName, + LPWSTR lpReturnedString, + DWORD nSize, + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias GetPrivateProfileSectionA GetPrivateProfileSection; +// #endif // !UNICODE + +extern(Windows) export BOOL WritePrivateProfileSectionA( + LPCSTR lpAppName, + LPCSTR lpString, + LPCSTR lpFileName); +extern(Windows) export BOOL WritePrivateProfileSectionW( + LPCWSTR lpAppName, + LPCWSTR lpString, + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias WritePrivateProfileSectionA WritePrivateProfileSection; +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrivateProfileSectionNamesA( + LPSTR lpszReturnBuffer, + DWORD nSize, + LPCSTR lpFileName); +extern(Windows) export DWORD GetPrivateProfileSectionNamesW( + LPWSTR lpszReturnBuffer, + DWORD nSize, + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrivateProfileStructA( + LPCSTR lpszSection, + LPCSTR lpszKey, + LPVOID lpStruct, + UINT uSizeStruct, + LPCSTR szFile); +extern(Windows) export BOOL GetPrivateProfileStructW( + LPCWSTR lpszSection, + LPCWSTR lpszKey, + LPVOID lpStruct, + UINT uSizeStruct, + LPCWSTR szFile); +// #ifdef UNICODE +// #... +// #else +alias GetPrivateProfileStructA GetPrivateProfileStruct; +// #endif // !UNICODE + +extern(Windows) export BOOL WritePrivateProfileStructA( + LPCSTR lpszSection, + LPCSTR lpszKey, + LPVOID lpStruct, + UINT uSizeStruct, + LPCSTR szFile); +extern(Windows) export BOOL WritePrivateProfileStructW( + LPCWSTR lpszSection, + LPCWSTR lpszKey, + LPVOID lpStruct, + UINT uSizeStruct, + LPCWSTR szFile); +// #ifdef UNICODE +// #... +// #else +alias WritePrivateProfileStructA WritePrivateProfileStruct; +// #endif // !UNICODE + +extern(Windows) export UINT GetDriveTypeA( + LPCSTR lpRootPathName); +extern(Windows) export UINT GetDriveTypeW( + LPCWSTR lpRootPathName); +// #ifdef UNICODE +// #... +// #else +alias GetDriveTypeA GetDriveType; +// #endif // !UNICODE + +extern(Windows) export UINT GetSystemDirectoryA( + LPSTR lpBuffer, + UINT uSize); +extern(Windows) export UINT GetSystemDirectoryW( + LPWSTR lpBuffer, + UINT uSize); +// #ifdef UNICODE +// #... +// #else +alias GetSystemDirectoryA GetSystemDirectory; +// #endif // !UNICODE + +extern(Windows) export DWORD GetTempPathA( + DWORD nBufferLength, + LPSTR lpBuffer); +extern(Windows) export DWORD GetTempPathW( + DWORD nBufferLength, + LPWSTR lpBuffer); +// #ifdef UNICODE +// #... +// #else +alias GetTempPathA GetTempPath; +// #endif // !UNICODE + +extern(Windows) export UINT GetTempFileNameA( + LPCSTR lpPathName, + LPCSTR lpPrefixString, + UINT uUnique, + LPSTR lpTempFileName); +extern(Windows) export UINT GetTempFileNameW( + LPCWSTR lpPathName, + LPCWSTR lpPrefixString, + UINT uUnique, + LPWSTR lpTempFileName); +// #ifdef UNICODE +// #... +// #else +alias GetTempFileNameA GetTempFileName; +// #endif // !UNICODE + +extern(Windows) export UINT GetWindowsDirectoryA( + LPSTR lpBuffer, + UINT uSize); +extern(Windows) export UINT GetWindowsDirectoryW( + LPWSTR lpBuffer, + UINT uSize); +// #ifdef UNICODE +// #... +// #else +alias GetWindowsDirectoryA GetWindowsDirectory; +// #endif // !UNICODE + +extern(Windows) export UINT GetSystemWindowsDirectoryA( + LPSTR lpBuffer, + UINT uSize); +extern(Windows) export UINT GetSystemWindowsDirectoryW( + LPWSTR lpBuffer, + UINT uSize); +// #ifdef UNICODE +// #... +// #else +alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; +// #endif // !UNICODE + +// #if !defined(RC_INVOKED) // RC warns because "WINBASE_DECLARE_GET_SYSTEM_WOW64_DIRECTORY" is a bit long. +// #if _WIN32_WINNT >= 0x0501 || defined(WINBASE_DECLARE_GET_SYSTEM_WOW64_DIRECTORY) + +extern(Windows) export UINT GetSystemWow64DirectoryA( + LPSTR lpBuffer, + UINT uSize); +extern(Windows) export UINT GetSystemWow64DirectoryW( + LPWSTR lpBuffer, + UINT uSize); +// #ifdef UNICODE +// #... +// #else +alias GetSystemWow64DirectoryA GetSystemWow64Directory; +// #endif // !UNICODE + +extern(Windows) alias UINT function( LPSTR lpBuffer, UINT uSize) PGET_SYSTEM_WOW64_DIRECTORY_A; +extern(Windows) alias UINT function( LPWSTR lpBuffer, UINT uSize) PGET_SYSTEM_WOW64_DIRECTORY_W; + +const char[] GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A = "GetSystemWow64DirectoryA"; +const wchar[] GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W = "GetSystemWow64DirectoryA"; +const TCHAR[] GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T = "GetSystemWow64DirectoryA"; +const char[] GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A = "GetSystemWow64DirectoryW"; +const wchar[] GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W = "GetSystemWow64DirectoryW"; +const TCHAR[] GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T = "GetSystemWow64DirectoryW"; + +// #ifdef UNICODE +// #... +// #... +// #... +// #else +alias GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A; +alias GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W; +alias GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T; +// #endif + +// #endif // _WIN32_WINNT >= 0x0501 +// #endif + +extern(Windows) export BOOL SetCurrentDirectoryA( + LPCSTR lpPathName); +extern(Windows) export BOOL SetCurrentDirectoryW( + LPCWSTR lpPathName); +// #ifdef UNICODE +// #... +// #else +alias SetCurrentDirectoryA SetCurrentDirectory; +// #endif // !UNICODE + +extern(Windows) export DWORD GetCurrentDirectoryA( + DWORD nBufferLength, + LPSTR lpBuffer); +extern(Windows) export DWORD GetCurrentDirectoryW( + DWORD nBufferLength, + LPWSTR lpBuffer); +// #ifdef UNICODE +// #... +// #else +alias GetCurrentDirectoryA GetCurrentDirectory; +// #endif // !UNICODE + +extern(Windows) export BOOL GetDiskFreeSpaceA( + LPCSTR lpRootPathName, + LPDWORD lpSectorsPerCluster, + LPDWORD lpBytesPerSector, + LPDWORD lpNumberOfFreeClusters, + LPDWORD lpTotalNumberOfClusters); +extern(Windows) export BOOL GetDiskFreeSpaceW( + LPCWSTR lpRootPathName, + LPDWORD lpSectorsPerCluster, + LPDWORD lpBytesPerSector, + LPDWORD lpNumberOfFreeClusters, + LPDWORD lpTotalNumberOfClusters); +// #ifdef UNICODE +// #... +// #else +alias GetDiskFreeSpaceA GetDiskFreeSpace; +// #endif // !UNICODE + +extern(Windows) export BOOL GetDiskFreeSpaceExA( + LPCSTR lpDirectoryName, + PULARGE_INTEGER lpFreeBytesAvailableToCaller, + PULARGE_INTEGER lpTotalNumberOfBytes, + PULARGE_INTEGER lpTotalNumberOfFreeBytes); +extern(Windows) export BOOL GetDiskFreeSpaceExW( + LPCWSTR lpDirectoryName, + PULARGE_INTEGER lpFreeBytesAvailableToCaller, + PULARGE_INTEGER lpTotalNumberOfBytes, + PULARGE_INTEGER lpTotalNumberOfFreeBytes); +// #ifdef UNICODE +// #... +// #else +alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; +// #endif // !UNICODE + +extern(Windows) export BOOL CreateDirectoryA( + LPCSTR lpPathName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export BOOL CreateDirectoryW( + LPCWSTR lpPathName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +// #... +// #else +alias CreateDirectoryA CreateDirectory; +// #endif // !UNICODE + +extern(Windows) export BOOL CreateDirectoryExA( + LPCSTR lpTemplateDirectory, + LPCSTR lpNewDirectory, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export BOOL CreateDirectoryExW( + LPCWSTR lpTemplateDirectory, + LPCWSTR lpNewDirectory, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +// #... +// #else +alias CreateDirectoryExA CreateDirectoryEx; +// #endif // !UNICODE + +extern(Windows) export BOOL RemoveDirectoryA( + LPCSTR lpPathName); +extern(Windows) export BOOL RemoveDirectoryW( + LPCWSTR lpPathName); +// #ifdef UNICODE +// #... +// #else +alias RemoveDirectoryA RemoveDirectory; +// #endif // !UNICODE + +extern(Windows) export DWORD GetFullPathNameA( + LPCSTR lpFileName, + DWORD nBufferLength, + LPSTR lpBuffer, + LPSTR *lpFilePart); +extern(Windows) export DWORD GetFullPathNameW( + LPCWSTR lpFileName, + DWORD nBufferLength, + LPWSTR lpBuffer, + LPWSTR *lpFilePart); +// #ifdef UNICODE +// #... +// #else +alias GetFullPathNameA GetFullPathName; +// #endif // !UNICODE + +enum : uint { DDD_RAW_TARGET_PATH = 0x00000001 } +enum : uint { DDD_REMOVE_DEFINITION = 0x00000002 } +enum : uint { DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 } +enum : uint { DDD_NO_BROADCAST_SYSTEM = 0x00000008 } +enum : uint { DDD_LUID_BROADCAST_DRIVE = 0x00000010 } + +extern(Windows) export BOOL DefineDosDeviceA( + DWORD dwFlags, + LPCSTR lpDeviceName, + LPCSTR lpTargetPath); +extern(Windows) export BOOL DefineDosDeviceW( + DWORD dwFlags, + LPCWSTR lpDeviceName, + LPCWSTR lpTargetPath); +// #ifdef UNICODE +// #... +// #else +alias DefineDosDeviceA DefineDosDevice; +// #endif // !UNICODE + +extern(Windows) export DWORD QueryDosDeviceA( + LPCSTR lpDeviceName, + LPSTR lpTargetPath, + DWORD ucchMax); +extern(Windows) export DWORD QueryDosDeviceW( + LPCWSTR lpDeviceName, + LPWSTR lpTargetPath, + DWORD ucchMax); +// #ifdef UNICODE +// #... +// #else +alias QueryDosDeviceA QueryDosDevice; +// #endif // !UNICODE + +// #define EXPAND_LOCAL_DRIVES + +extern(Windows) export HANDLE CreateFileA( + LPCSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile); +extern(Windows) export HANDLE CreateFileW( + LPCWSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile); +// #ifdef UNICODE +// #... +// #else +alias CreateFileA CreateFile; +// #endif // !UNICODE + +extern(Windows) export BOOL SetFileAttributesA( + LPCSTR lpFileName, + DWORD dwFileAttributes); +extern(Windows) export BOOL SetFileAttributesW( + LPCWSTR lpFileName, + DWORD dwFileAttributes); +// #ifdef UNICODE +// #... +// #else +alias SetFileAttributesA SetFileAttributes; +// #endif // !UNICODE + +extern(Windows) export DWORD GetFileAttributesA( + LPCSTR lpFileName); +extern(Windows) export DWORD GetFileAttributesW( + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias GetFileAttributesA GetFileAttributes; +// #endif // !UNICODE + +alias int _GET_FILEEX_INFO_LEVELS; +enum { + GetFileExInfoStandard, + GetFileExMaxInfoLevel, +} +alias _GET_FILEEX_INFO_LEVELS GET_FILEEX_INFO_LEVELS; + +extern(Windows) export BOOL GetFileAttributesExA( + LPCSTR lpFileName, + GET_FILEEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFileInformation); +extern(Windows) export BOOL GetFileAttributesExW( + LPCWSTR lpFileName, + GET_FILEEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFileInformation); +// #ifdef UNICODE +// #... +// #else +alias GetFileAttributesExA GetFileAttributesEx; +// #endif // !UNICODE + +extern(Windows) export DWORD GetCompressedFileSizeA( + LPCSTR lpFileName, + LPDWORD lpFileSizeHigh); +extern(Windows) export DWORD GetCompressedFileSizeW( + LPCWSTR lpFileName, + LPDWORD lpFileSizeHigh); +// #ifdef UNICODE +// #... +// #else +alias GetCompressedFileSizeA GetCompressedFileSize; +// #endif // !UNICODE + +extern(Windows) export BOOL DeleteFileA( + LPCSTR lpFileName); +extern(Windows) export BOOL DeleteFileW( + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias DeleteFileA DeleteFile; +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0400) +alias int _FINDEX_INFO_LEVELS; +enum { + FindExInfoStandard, + FindExInfoMaxInfoLevel, +} +alias _FINDEX_INFO_LEVELS FINDEX_INFO_LEVELS; + +alias int _FINDEX_SEARCH_OPS; +enum { + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp, +} +alias _FINDEX_SEARCH_OPS FINDEX_SEARCH_OPS; + +enum : uint { FIND_FIRST_EX_CASE_SENSITIVE = 0x00000001 } + +extern(Windows) export HANDLE FindFirstFileExA( + LPCSTR lpFileName, + FINDEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFindFileData, + FINDEX_SEARCH_OPS fSearchOp, + LPVOID lpSearchFilter, + DWORD dwAdditionalFlags); +extern(Windows) export HANDLE FindFirstFileExW( + LPCWSTR lpFileName, + FINDEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFindFileData, + FINDEX_SEARCH_OPS fSearchOp, + LPVOID lpSearchFilter, + DWORD dwAdditionalFlags); +// #ifdef UNICODE +// #... +// #else +alias FindFirstFileExA FindFirstFileEx; +// #endif // !UNICODE +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export HANDLE FindFirstFileA( + LPCSTR lpFileName, + LPWIN32_FIND_DATAA lpFindFileData); +extern(Windows) export HANDLE FindFirstFileW( + LPCWSTR lpFileName, + LPWIN32_FIND_DATAW lpFindFileData); +// #ifdef UNICODE +// #... +// #else +alias FindFirstFileA FindFirstFile; +// #endif // !UNICODE + +extern(Windows) export BOOL FindNextFileA( + HANDLE hFindFile, + LPWIN32_FIND_DATAA lpFindFileData); +extern(Windows) export BOOL FindNextFileW( + HANDLE hFindFile, + LPWIN32_FIND_DATAW lpFindFileData); +// #ifdef UNICODE +// #... +// #else +alias FindNextFileA FindNextFile; +// #endif // !UNICODE + +extern(Windows) export DWORD SearchPathA( + LPCSTR lpPath, + LPCSTR lpFileName, + LPCSTR lpExtension, + DWORD nBufferLength, + LPSTR lpBuffer, + LPSTR *lpFilePart); +extern(Windows) export DWORD SearchPathW( + LPCWSTR lpPath, + LPCWSTR lpFileName, + LPCWSTR lpExtension, + DWORD nBufferLength, + LPWSTR lpBuffer, + LPWSTR *lpFilePart); +// #ifdef UNICODE +// #... +// #else +alias SearchPathA SearchPath; +// #endif // !UNICODE + +extern(Windows) export BOOL CopyFileA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName, + BOOL bFailIfExists); +extern(Windows) export BOOL CopyFileW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + BOOL bFailIfExists); +// #ifdef UNICODE +// #... +// #else +alias CopyFileA CopyFile; +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) alias DWORD function( LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData ) LPPROGRESS_ROUTINE; + +extern(Windows) export BOOL CopyFileExA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName, + LPPROGRESS_ROUTINE lpProgressRoutine , + LPVOID lpData , + LPBOOL pbCancel , + DWORD dwCopyFlags); +extern(Windows) export BOOL CopyFileExW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + LPPROGRESS_ROUTINE lpProgressRoutine , + LPVOID lpData , + LPBOOL pbCancel , + DWORD dwCopyFlags); +// #ifdef UNICODE +// #... +// #else +alias CopyFileExA CopyFileEx; +// #endif // !UNICODE +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL MoveFileA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName); +extern(Windows) export BOOL MoveFileW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName); +// #ifdef UNICODE +// #... +// #else +alias MoveFileA MoveFile; +// #endif // !UNICODE + +extern(Windows) export BOOL MoveFileExA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName, + DWORD dwFlags); +extern(Windows) export BOOL MoveFileExW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias MoveFileExA MoveFileEx; +// #endif // !UNICODE + +// #if (_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL MoveFileWithProgressA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName, + LPPROGRESS_ROUTINE lpProgressRoutine , + LPVOID lpData , + DWORD dwFlags); +extern(Windows) export BOOL MoveFileWithProgressW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + LPPROGRESS_ROUTINE lpProgressRoutine , + LPVOID lpData , + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias MoveFileWithProgressA MoveFileWithProgress; +// #endif // !UNICODE +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { MOVEFILE_REPLACE_EXISTING = 0x00000001 } +enum : uint { MOVEFILE_COPY_ALLOWED = 0x00000002 } +enum : uint { MOVEFILE_DELAY_UNTIL_REBOOT = 0x00000004 } +enum : uint { MOVEFILE_WRITE_THROUGH = 0x00000008 } +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { MOVEFILE_CREATE_HARDLINK = 0x00000010 } +enum : uint { MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x00000020 } +// #endif // (_WIN32_WINNT >= 0x0500) + +// #if (_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL ReplaceFileA( + LPCSTR lpReplacedFileName, + LPCSTR lpReplacementFileName, + LPCSTR lpBackupFileName, + DWORD dwReplaceFlags, + LPVOID lpExclude, + LPVOID lpReserved); +extern(Windows) export BOOL ReplaceFileW( + LPCWSTR lpReplacedFileName, + LPCWSTR lpReplacementFileName, + LPCWSTR lpBackupFileName, + DWORD dwReplaceFlags, + LPVOID lpExclude, + LPVOID lpReserved); +// #ifdef UNICODE +// #... +// #else +alias ReplaceFileA ReplaceFile; +// #endif // !UNICODE +// #endif // (_WIN32_WINNT >= 0x0500) + +// #if (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL CreateHardLinkA( + LPCSTR lpFileName, + LPCSTR lpExistingFileName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export BOOL CreateHardLinkW( + LPCWSTR lpFileName, + LPCWSTR lpExistingFileName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +// #... +// #else +alias CreateHardLinkA CreateHardLink; +// #endif // !UNICODE + +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export HANDLE CreateNamedPipeA( + LPCSTR lpName, + DWORD dwOpenMode, + DWORD dwPipeMode, + DWORD nMaxInstances, + DWORD nOutBufferSize, + DWORD nInBufferSize, + DWORD nDefaultTimeOut, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export HANDLE CreateNamedPipeW( + LPCWSTR lpName, + DWORD dwOpenMode, + DWORD dwPipeMode, + DWORD nMaxInstances, + DWORD nOutBufferSize, + DWORD nInBufferSize, + DWORD nDefaultTimeOut, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +// #... +// #else +alias CreateNamedPipeA CreateNamedPipe; +// #endif // !UNICODE + +extern(Windows) export BOOL GetNamedPipeHandleStateA( + HANDLE hNamedPipe, + LPDWORD lpState, + LPDWORD lpCurInstances, + LPDWORD lpMaxCollectionCount, + LPDWORD lpCollectDataTimeout, + LPSTR lpUserName, + DWORD nMaxUserNameSize); +extern(Windows) export BOOL GetNamedPipeHandleStateW( + HANDLE hNamedPipe, + LPDWORD lpState, + LPDWORD lpCurInstances, + LPDWORD lpMaxCollectionCount, + LPDWORD lpCollectDataTimeout, + LPWSTR lpUserName, + DWORD nMaxUserNameSize); +// #ifdef UNICODE +// #... +// #else +alias GetNamedPipeHandleStateA GetNamedPipeHandleState; +// #endif // !UNICODE + +extern(Windows) export BOOL CallNamedPipeA( + LPCSTR lpNamedPipeName, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesRead, + DWORD nTimeOut); +extern(Windows) export BOOL CallNamedPipeW( + LPCWSTR lpNamedPipeName, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesRead, + DWORD nTimeOut); +// #ifdef UNICODE +// #... +// #else +alias CallNamedPipeA CallNamedPipe; +// #endif // !UNICODE + +extern(Windows) export BOOL WaitNamedPipeA( + LPCSTR lpNamedPipeName, + DWORD nTimeOut); +extern(Windows) export BOOL WaitNamedPipeW( + LPCWSTR lpNamedPipeName, + DWORD nTimeOut); +// #ifdef UNICODE +// #... +// #else +alias WaitNamedPipeA WaitNamedPipe; +// #endif // !UNICODE + +extern(Windows) export BOOL SetVolumeLabelA( + LPCSTR lpRootPathName, + LPCSTR lpVolumeName); +extern(Windows) export BOOL SetVolumeLabelW( + LPCWSTR lpRootPathName, + LPCWSTR lpVolumeName); +// #ifdef UNICODE +// #... +// #else +alias SetVolumeLabelA SetVolumeLabel; +// #endif // !UNICODE + +extern(Windows) export VOID SetFileApisToOEM(); + +extern(Windows) export VOID SetFileApisToANSI(); + +extern(Windows) export BOOL AreFileApisANSI(); + +extern(Windows) export BOOL GetVolumeInformationA( + LPCSTR lpRootPathName, + LPSTR lpVolumeNameBuffer, + DWORD nVolumeNameSize, + LPDWORD lpVolumeSerialNumber, + LPDWORD lpMaximumComponentLength, + LPDWORD lpFileSystemFlags, + LPSTR lpFileSystemNameBuffer, + DWORD nFileSystemNameSize); +extern(Windows) export BOOL GetVolumeInformationW( + LPCWSTR lpRootPathName, + LPWSTR lpVolumeNameBuffer, + DWORD nVolumeNameSize, + LPDWORD lpVolumeSerialNumber, + LPDWORD lpMaximumComponentLength, + LPDWORD lpFileSystemFlags, + LPWSTR lpFileSystemNameBuffer, + DWORD nFileSystemNameSize); +// #ifdef UNICODE +// #... +// #else +alias GetVolumeInformationA GetVolumeInformation; +// #endif // !UNICODE + +extern(Windows) export BOOL CancelIo( + HANDLE hFile); + +extern(Windows) export BOOL ClearEventLogA( + HANDLE hEventLog, + LPCSTR lpBackupFileName); +extern(Windows) export BOOL ClearEventLogW( + HANDLE hEventLog, + LPCWSTR lpBackupFileName); +// #ifdef UNICODE +// #... +// #else +alias ClearEventLogA ClearEventLog; +// #endif // !UNICODE + +extern(Windows) export BOOL BackupEventLogA( + HANDLE hEventLog, + LPCSTR lpBackupFileName); +extern(Windows) export BOOL BackupEventLogW( + HANDLE hEventLog, + LPCWSTR lpBackupFileName); +// #ifdef UNICODE +// #... +// #else +alias BackupEventLogA BackupEventLog; +// #endif // !UNICODE + +extern(Windows) export BOOL CloseEventLog( + HANDLE hEventLog); + +extern(Windows) export BOOL DeregisterEventSource( + HANDLE hEventLog); + +extern(Windows) export BOOL NotifyChangeEventLog( + HANDLE hEventLog, + HANDLE hEvent); + +extern(Windows) export BOOL GetNumberOfEventLogRecords( + HANDLE hEventLog, + PDWORD NumberOfRecords); + +extern(Windows) export BOOL GetOldestEventLogRecord( + HANDLE hEventLog, + PDWORD OldestRecord); + +extern(Windows) export HANDLE OpenEventLogA( + LPCSTR lpUNCServerName, + LPCSTR lpSourceName); +extern(Windows) export HANDLE OpenEventLogW( + LPCWSTR lpUNCServerName, + LPCWSTR lpSourceName); +// #ifdef UNICODE +// #... +// #else +alias OpenEventLogA OpenEventLog; +// #endif // !UNICODE + +extern(Windows) export HANDLE RegisterEventSourceA( + LPCSTR lpUNCServerName, + LPCSTR lpSourceName); +extern(Windows) export HANDLE RegisterEventSourceW( + LPCWSTR lpUNCServerName, + LPCWSTR lpSourceName); +// #ifdef UNICODE +// #... +// #else +alias RegisterEventSourceA RegisterEventSource; +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenBackupEventLogA( + LPCSTR lpUNCServerName, + LPCSTR lpFileName); +extern(Windows) export HANDLE OpenBackupEventLogW( + LPCWSTR lpUNCServerName, + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias OpenBackupEventLogA OpenBackupEventLog; +// #endif // !UNICODE + +extern(Windows) export BOOL ReadEventLogA( + HANDLE hEventLog, + DWORD dwReadFlags, + DWORD dwRecordOffset, + LPVOID lpBuffer, + DWORD nNumberOfBytesToRead, + DWORD *pnBytesRead, + DWORD *pnMinNumberOfBytesNeeded); +extern(Windows) export BOOL ReadEventLogW( + HANDLE hEventLog, + DWORD dwReadFlags, + DWORD dwRecordOffset, + LPVOID lpBuffer, + DWORD nNumberOfBytesToRead, + DWORD *pnBytesRead, + DWORD *pnMinNumberOfBytesNeeded); +// #ifdef UNICODE +// #... +// #else +alias ReadEventLogA ReadEventLog; +// #endif // !UNICODE + +extern(Windows) export BOOL ReportEventA( + HANDLE hEventLog, + WORD wType, + WORD wCategory, + DWORD dwEventID, + PSID lpUserSid, + WORD wNumStrings, + DWORD dwDataSize, + LPCSTR *lpStrings, + LPVOID lpRawData); +extern(Windows) export BOOL ReportEventW( + HANDLE hEventLog, + WORD wType, + WORD wCategory, + DWORD dwEventID, + PSID lpUserSid, + WORD wNumStrings, + DWORD dwDataSize, + LPCWSTR *lpStrings, + LPVOID lpRawData); +// #ifdef UNICODE +// #... +// #else +alias ReportEventA ReportEvent; +// #endif // !UNICODE + +enum : uint { EVENTLOG_FULL_INFO = 0 } + +struct _EVENTLOG_FULL_INFORMATION { + DWORD dwFull; +} +alias _EVENTLOG_FULL_INFORMATION EVENTLOG_FULL_INFORMATION; +alias _EVENTLOG_FULL_INFORMATION* LPEVENTLOG_FULL_INFORMATION; + +extern(Windows) export BOOL GetEventLogInformation( + HANDLE hEventLog, + DWORD dwInfoLevel, + LPVOID lpBuffer, + DWORD cbBufSize, + LPDWORD pcbBytesNeeded); + +extern(Windows) export BOOL DuplicateToken( + HANDLE ExistingTokenHandle, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + PHANDLE DuplicateTokenHandle); + +extern(Windows) export BOOL GetKernelObjectSecurity( + HANDLE Handle, + SECURITY_INFORMATION RequestedInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD nLength, + LPDWORD lpnLengthNeeded); + +extern(Windows) export BOOL ImpersonateNamedPipeClient( + HANDLE hNamedPipe); + +extern(Windows) export BOOL ImpersonateSelf( + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel); + +extern(Windows) export BOOL RevertToSelf(); + +extern(Windows) export BOOL SetThreadToken( + PHANDLE Thread, + HANDLE Token); + +extern(Windows) export BOOL AccessCheck( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + HANDLE ClientToken, + DWORD DesiredAccess, + PGENERIC_MAPPING GenericMapping, + PPRIVILEGE_SET PrivilegeSet, + LPDWORD PrivilegeSetLength, + LPDWORD GrantedAccess, + LPBOOL AccessStatus); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AccessCheckByType( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID PrincipalSelfSid, + HANDLE ClientToken, + DWORD DesiredAccess, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + PPRIVILEGE_SET PrivilegeSet, + LPDWORD PrivilegeSetLength, + LPDWORD GrantedAccess, + LPBOOL AccessStatus); + +extern(Windows) export BOOL AccessCheckByTypeResultList( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID PrincipalSelfSid, + HANDLE ClientToken, + DWORD DesiredAccess, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + PPRIVILEGE_SET PrivilegeSet, + LPDWORD PrivilegeSetLength, + LPDWORD GrantedAccessList, + LPDWORD AccessStatusList); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL OpenProcessToken( + HANDLE ProcessHandle, + DWORD DesiredAccess, + PHANDLE TokenHandle); + +extern(Windows) export BOOL OpenThreadToken( + HANDLE ThreadHandle, + DWORD DesiredAccess, + BOOL OpenAsSelf, + PHANDLE TokenHandle); + +extern(Windows) export BOOL GetTokenInformation( + HANDLE TokenHandle, + TOKEN_INFORMATION_CLASS TokenInformationClass, + LPVOID TokenInformation, + DWORD TokenInformationLength, + PDWORD ReturnLength); + +extern(Windows) export BOOL SetTokenInformation( + HANDLE TokenHandle, + TOKEN_INFORMATION_CLASS TokenInformationClass, + LPVOID TokenInformation, + DWORD TokenInformationLength); + +extern(Windows) export BOOL AdjustTokenPrivileges( + HANDLE TokenHandle, + BOOL DisableAllPrivileges, + PTOKEN_PRIVILEGES NewState, + DWORD BufferLength, + PTOKEN_PRIVILEGES PreviousState, + PDWORD ReturnLength); + +extern(Windows) export BOOL AdjustTokenGroups( + HANDLE TokenHandle, + BOOL ResetToDefault, + PTOKEN_GROUPS NewState, + DWORD BufferLength, + PTOKEN_GROUPS PreviousState, + PDWORD ReturnLength); + +extern(Windows) export BOOL PrivilegeCheck( + HANDLE ClientToken, + PPRIVILEGE_SET RequiredPrivileges, + LPBOOL pfResult); + +extern(Windows) export BOOL AccessCheckAndAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + LPSTR ObjectTypeName, + LPSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + DWORD DesiredAccess, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPBOOL AccessStatus, + LPBOOL pfGenerateOnClose); +extern(Windows) export BOOL AccessCheckAndAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + LPWSTR ObjectTypeName, + LPWSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + DWORD DesiredAccess, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPBOOL AccessStatus, + LPBOOL pfGenerateOnClose); +// #ifdef UNICODE +// #... +// #else +alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL AccessCheckByTypeAndAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + LPCSTR ObjectTypeName, + LPCSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPBOOL AccessStatus, + LPBOOL pfGenerateOnClose); +extern(Windows) export BOOL AccessCheckByTypeAndAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + LPCWSTR ObjectTypeName, + LPCWSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPBOOL AccessStatus, + LPBOOL pfGenerateOnClose); +// #ifdef UNICODE +// #... +// #else +alias AccessCheckByTypeAndAuditAlarmA AccessCheckByTypeAndAuditAlarm; +// #endif // !UNICODE + +extern(Windows) export BOOL AccessCheckByTypeResultListAndAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + LPCSTR ObjectTypeName, + LPCSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPDWORD AccessStatusList, + LPBOOL pfGenerateOnClose); +extern(Windows) export BOOL AccessCheckByTypeResultListAndAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + LPCWSTR ObjectTypeName, + LPCWSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPDWORD AccessStatusList, + LPBOOL pfGenerateOnClose); +// #ifdef UNICODE +// #... +// #else +alias AccessCheckByTypeResultListAndAuditAlarmA AccessCheckByTypeResultListAndAuditAlarm; +// #endif // !UNICODE + +extern(Windows) export BOOL AccessCheckByTypeResultListAndAuditAlarmByHandleA( + LPCSTR SubsystemName, + LPVOID HandleId, + HANDLE ClientToken, + LPCSTR ObjectTypeName, + LPCSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPDWORD AccessStatusList, + LPBOOL pfGenerateOnClose); +extern(Windows) export BOOL AccessCheckByTypeResultListAndAuditAlarmByHandleW( + LPCWSTR SubsystemName, + LPVOID HandleId, + HANDLE ClientToken, + LPCWSTR ObjectTypeName, + LPCWSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPDWORD AccessStatusList, + LPBOOL pfGenerateOnClose); +// #ifdef UNICODE +// #... +// #else +alias AccessCheckByTypeResultListAndAuditAlarmByHandleA AccessCheckByTypeResultListAndAuditAlarmByHandle; +// #endif // !UNICODE + +// #endif //(_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL ObjectOpenAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + LPSTR ObjectTypeName, + LPSTR ObjectName, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + HANDLE ClientToken, + DWORD DesiredAccess, + DWORD GrantedAccess, + PPRIVILEGE_SET Privileges, + BOOL ObjectCreation, + BOOL AccessGranted, + LPBOOL GenerateOnClose); +extern(Windows) export BOOL ObjectOpenAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + LPWSTR ObjectTypeName, + LPWSTR ObjectName, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + HANDLE ClientToken, + DWORD DesiredAccess, + DWORD GrantedAccess, + PPRIVILEGE_SET Privileges, + BOOL ObjectCreation, + BOOL AccessGranted, + LPBOOL GenerateOnClose); +// #ifdef UNICODE +// #... +// #else +alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; +// #endif // !UNICODE + +extern(Windows) export BOOL ObjectPrivilegeAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + HANDLE ClientToken, + DWORD DesiredAccess, + PPRIVILEGE_SET Privileges, + BOOL AccessGranted); +extern(Windows) export BOOL ObjectPrivilegeAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + HANDLE ClientToken, + DWORD DesiredAccess, + PPRIVILEGE_SET Privileges, + BOOL AccessGranted); +// #ifdef UNICODE +// #... +// #else +alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; +// #endif // !UNICODE + +extern(Windows) export BOOL ObjectCloseAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + BOOL GenerateOnClose); +extern(Windows) export BOOL ObjectCloseAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + BOOL GenerateOnClose); +// #ifdef UNICODE +// #... +// #else +alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; +// #endif // !UNICODE + +extern(Windows) export BOOL ObjectDeleteAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + BOOL GenerateOnClose); +extern(Windows) export BOOL ObjectDeleteAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + BOOL GenerateOnClose); +// #ifdef UNICODE +// #... +// #else +alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; +// #endif // !UNICODE + +extern(Windows) export BOOL PrivilegedServiceAuditAlarmA( + LPCSTR SubsystemName, + LPCSTR ServiceName, + HANDLE ClientToken, + PPRIVILEGE_SET Privileges, + BOOL AccessGranted); +extern(Windows) export BOOL PrivilegedServiceAuditAlarmW( + LPCWSTR SubsystemName, + LPCWSTR ServiceName, + HANDLE ClientToken, + PPRIVILEGE_SET Privileges, + BOOL AccessGranted); +// #ifdef UNICODE +// #... +// #else +alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0501) + +enum _0 { + + WinNullSid = 0, + WinWorldSid = 1, + WinLocalSid = 2, + WinCreatorOwnerSid = 3, + WinCreatorGroupSid = 4, + WinCreatorOwnerServerSid = 5, + WinCreatorGroupServerSid = 6, + WinNtAuthoritySid = 7, + WinDialupSid = 8, + WinNetworkSid = 9, + WinBatchSid = 10, + WinInteractiveSid = 11, + WinServiceSid = 12, + WinAnonymousSid = 13, + WinProxySid = 14, + WinEnterpriseControllersSid = 15, + WinSelfSid = 16, + WinAuthenticatedUserSid = 17, + WinRestrictedCodeSid = 18, + WinTerminalServerSid = 19, + WinRemoteLogonIdSid = 20, + WinLogonIdsSid = 21, + WinLocalSystemSid = 22, + WinLocalServiceSid = 23, + WinNetworkServiceSid = 24, + WinBuiltinDomainSid = 25, + WinBuiltinAdministratorsSid = 26, + WinBuiltinUsersSid = 27, + WinBuiltinGuestsSid = 28, + WinBuiltinPowerUsersSid = 29, + WinBuiltinAccountOperatorsSid = 30, + WinBuiltinSystemOperatorsSid = 31, + WinBuiltinPrintOperatorsSid = 32, + WinBuiltinBackupOperatorsSid = 33, + WinBuiltinReplicatorSid = 34, + WinBuiltinPreWindows2000CompatibleAccessSid = 35, + WinBuiltinRemoteDesktopUsersSid = 36, + WinBuiltinNetworkConfigurationOperatorsSid = 37, + WinAccountAdministratorSid = 38, + WinAccountGuestSid = 39, + WinAccountKrbtgtSid = 40, + WinAccountDomainAdminsSid = 41, + WinAccountDomainUsersSid = 42, + WinAccountDomainGuestsSid = 43, + WinAccountComputersSid = 44, + WinAccountControllersSid = 45, + WinAccountCertAdminsSid = 46, + WinAccountSchemaAdminsSid = 47, + WinAccountEnterpriseAdminsSid = 48, + WinAccountPolicyAdminsSid = 49, + WinAccountRasAndIasServersSid = 50, + +} +alias _0 WELL_KNOWN_SID_TYPE; + +extern(Windows) export BOOL IsWellKnownSid( + PSID pSid, + WELL_KNOWN_SID_TYPE WellKnownSidType); + +extern(Windows) export BOOL CreateWellKnownSid( + WELL_KNOWN_SID_TYPE WellKnownSidType, + PSID DomainSid , + PSID pSid, + DWORD *cbSid); + +extern(Windows) export BOOL EqualDomainSid( + PSID pSid1, + PSID pSid2, + BOOL *pfEqual); + +extern(Windows) export BOOL GetWindowsAccountDomainSid( + PSID pSid, + PSID ppDomainSid , + DWORD *cbSid); + +// #endif //(_WIN32_WINNT >= 0x0501) + +extern(Windows) export BOOL IsValidSid( + PSID pSid); + +extern(Windows) export BOOL EqualSid( + PSID pSid1, + PSID pSid2); + +extern(Windows) export BOOL EqualPrefixSid( + PSID pSid1, + PSID pSid2); + +extern(Windows) export DWORD GetSidLengthRequired( + UCHAR nSubAuthorityCount); + +extern(Windows) export BOOL AllocateAndInitializeSid( + PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, + BYTE nSubAuthorityCount, + DWORD nSubAuthority0, + DWORD nSubAuthority1, + DWORD nSubAuthority2, + DWORD nSubAuthority3, + DWORD nSubAuthority4, + DWORD nSubAuthority5, + DWORD nSubAuthority6, + DWORD nSubAuthority7, + PSID *pSid); + +extern(Windows) export PVOID FreeSid( + PSID pSid); + +extern(Windows) export BOOL InitializeSid( + PSID Sid, + PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, + BYTE nSubAuthorityCount); + +extern(Windows) export PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority( + PSID pSid); + +extern(Windows) export PDWORD GetSidSubAuthority( + PSID pSid, + DWORD nSubAuthority); + +extern(Windows) export PUCHAR GetSidSubAuthorityCount( + PSID pSid); + +extern(Windows) export DWORD GetLengthSid( + PSID pSid); + +extern(Windows) export BOOL CopySid( + DWORD nDestinationSidLength, + PSID pDestinationSid, + PSID pSourceSid); + +extern(Windows) export BOOL AreAllAccessesGranted( + DWORD GrantedAccess, + DWORD DesiredAccess); + +extern(Windows) export BOOL AreAnyAccessesGranted( + DWORD GrantedAccess, + DWORD DesiredAccess); + +extern(Windows) export VOID MapGenericMask( + PDWORD AccessMask, + PGENERIC_MAPPING GenericMapping); + +extern(Windows) export BOOL IsValidAcl( + PACL pAcl); + +extern(Windows) export BOOL InitializeAcl( + PACL pAcl, + DWORD nAclLength, + DWORD dwAclRevision); + +extern(Windows) export BOOL GetAclInformation( + PACL pAcl, + LPVOID pAclInformation, + DWORD nAclInformationLength, + ACL_INFORMATION_CLASS dwAclInformationClass); + +extern(Windows) export BOOL SetAclInformation( + PACL pAcl, + LPVOID pAclInformation, + DWORD nAclInformationLength, + ACL_INFORMATION_CLASS dwAclInformationClass); + +extern(Windows) export BOOL AddAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD dwStartingAceIndex, + LPVOID pAceList, + DWORD nAceListLength); + +extern(Windows) export BOOL DeleteAce( + PACL pAcl, + DWORD dwAceIndex); + +extern(Windows) export BOOL GetAce( + PACL pAcl, + DWORD dwAceIndex, + LPVOID *pAce); + +extern(Windows) export BOOL AddAccessAllowedAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AccessMask, + PSID pSid); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AddAccessAllowedAceEx( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + PSID pSid); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL AddAccessDeniedAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AccessMask, + PSID pSid); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AddAccessDeniedAceEx( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + PSID pSid); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL AddAuditAccessAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD dwAccessMask, + PSID pSid, + BOOL bAuditSuccess, + BOOL bAuditFailure); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AddAuditAccessAceEx( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD dwAccessMask, + PSID pSid, + BOOL bAuditSuccess, + BOOL bAuditFailure); + +extern(Windows) export BOOL AddAccessAllowedObjectAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + GUID *ObjectTypeGuid, + GUID *InheritedObjectTypeGuid, + PSID pSid); + +extern(Windows) export BOOL AddAccessDeniedObjectAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + GUID *ObjectTypeGuid, + GUID *InheritedObjectTypeGuid, + PSID pSid); + +extern(Windows) export BOOL AddAuditAccessObjectAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + GUID *ObjectTypeGuid, + GUID *InheritedObjectTypeGuid, + PSID pSid, + BOOL bAuditSuccess, + BOOL bAuditFailure); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL FindFirstFreeAce( + PACL pAcl, + LPVOID *pAce); + +extern(Windows) export BOOL InitializeSecurityDescriptor( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD dwRevision); + +extern(Windows) export BOOL IsValidSecurityDescriptor( + PSECURITY_DESCRIPTOR pSecurityDescriptor); + +extern(Windows) export DWORD GetSecurityDescriptorLength( + PSECURITY_DESCRIPTOR pSecurityDescriptor); + +extern(Windows) export BOOL GetSecurityDescriptorControl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSECURITY_DESCRIPTOR_CONTROL pControl, + LPDWORD lpdwRevision); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL SetSecurityDescriptorControl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest, + SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL SetSecurityDescriptorDacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + BOOL bDaclPresent, + PACL pDacl, + BOOL bDaclDefaulted); + +extern(Windows) export BOOL GetSecurityDescriptorDacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + LPBOOL lpbDaclPresent, + PACL *pDacl, + LPBOOL lpbDaclDefaulted); + +extern(Windows) export BOOL SetSecurityDescriptorSacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + BOOL bSaclPresent, + PACL pSacl, + BOOL bSaclDefaulted); + +extern(Windows) export BOOL GetSecurityDescriptorSacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + LPBOOL lpbSaclPresent, + PACL *pSacl, + LPBOOL lpbSaclDefaulted); + +extern(Windows) export BOOL SetSecurityDescriptorOwner( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID pOwner, + BOOL bOwnerDefaulted); + +extern(Windows) export BOOL GetSecurityDescriptorOwner( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID *pOwner, + LPBOOL lpbOwnerDefaulted); + +extern(Windows) export BOOL SetSecurityDescriptorGroup( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID pGroup, + BOOL bGroupDefaulted); + +extern(Windows) export BOOL GetSecurityDescriptorGroup( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID *pGroup, + LPBOOL lpbGroupDefaulted); + +extern(Windows) export DWORD SetSecurityDescriptorRMControl( + PSECURITY_DESCRIPTOR SecurityDescriptor, + PUCHAR RMControl ); + +extern(Windows) export DWORD GetSecurityDescriptorRMControl( + PSECURITY_DESCRIPTOR SecurityDescriptor, + PUCHAR RMControl); + +extern(Windows) export BOOL CreatePrivateObjectSecurity( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CreatorDescriptor, + PSECURITY_DESCRIPTOR * NewDescriptor, + BOOL IsDirectoryObject, + HANDLE Token, + PGENERIC_MAPPING GenericMapping); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL ConvertToAutoInheritPrivateObjectSecurity( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CurrentSecurityDescriptor, + PSECURITY_DESCRIPTOR *NewSecurityDescriptor, + GUID *ObjectType, + BOOLEAN IsDirectoryObject, + PGENERIC_MAPPING GenericMapping); + +extern(Windows) export BOOL CreatePrivateObjectSecurityEx( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CreatorDescriptor, + PSECURITY_DESCRIPTOR * NewDescriptor, + GUID *ObjectType , + BOOL IsContainerObject, + ULONG AutoInheritFlags, + HANDLE Token, + PGENERIC_MAPPING GenericMapping); + +extern(Windows) export BOOL CreatePrivateObjectSecurityWithMultipleInheritance( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CreatorDescriptor, + PSECURITY_DESCRIPTOR * NewDescriptor, + GUID **ObjectTypes , + ULONG GuidCount, + BOOL IsContainerObject, + ULONG AutoInheritFlags, + HANDLE Token, + PGENERIC_MAPPING GenericMapping); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL SetPrivateObjectSecurity( + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ModificationDescriptor, + PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, + PGENERIC_MAPPING GenericMapping, + HANDLE Token); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL SetPrivateObjectSecurityEx( + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ModificationDescriptor, + PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, + ULONG AutoInheritFlags, + PGENERIC_MAPPING GenericMapping, + HANDLE Token ); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL GetPrivateObjectSecurity( + PSECURITY_DESCRIPTOR ObjectDescriptor, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ResultantDescriptor, + DWORD DescriptorLength, + PDWORD ReturnLength); + +extern(Windows) export BOOL DestroyPrivateObjectSecurity( + PSECURITY_DESCRIPTOR * ObjectDescriptor); + +extern(Windows) export BOOL MakeSelfRelativeSD( + PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, + PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, + LPDWORD lpdwBufferLength); + +extern(Windows) export BOOL MakeAbsoluteSD( + PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, + PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, + LPDWORD lpdwAbsoluteSecurityDescriptorSize, + PACL pDacl, + LPDWORD lpdwDaclSize, + PACL pSacl, + LPDWORD lpdwSaclSize, + PSID pOwner, + LPDWORD lpdwOwnerSize, + PSID pPrimaryGroup, + LPDWORD lpdwPrimaryGroupSize); + +extern(Windows) export BOOL MakeAbsoluteSD2( + PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, + LPDWORD lpdwBufferSize); + +extern(Windows) export BOOL SetFileSecurityA( + LPCSTR lpFileName, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor); +extern(Windows) export BOOL SetFileSecurityW( + LPCWSTR lpFileName, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor); +// #ifdef UNICODE +// #... +// #else +alias SetFileSecurityA SetFileSecurity; +// #endif // !UNICODE + +extern(Windows) export BOOL GetFileSecurityA( + LPCSTR lpFileName, + SECURITY_INFORMATION RequestedInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD nLength, + LPDWORD lpnLengthNeeded); +extern(Windows) export BOOL GetFileSecurityW( + LPCWSTR lpFileName, + SECURITY_INFORMATION RequestedInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD nLength, + LPDWORD lpnLengthNeeded); +// #ifdef UNICODE +// #... +// #else +alias GetFileSecurityA GetFileSecurity; +// #endif // !UNICODE + +extern(Windows) export BOOL SetKernelObjectSecurity( + HANDLE Handle, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR SecurityDescriptor); + +extern(Windows) export HANDLE FindFirstChangeNotificationA( + LPCSTR lpPathName, + BOOL bWatchSubtree, + DWORD dwNotifyFilter); +extern(Windows) export HANDLE FindFirstChangeNotificationW( + LPCWSTR lpPathName, + BOOL bWatchSubtree, + DWORD dwNotifyFilter); +// #ifdef UNICODE +// #... +// #else +alias FindFirstChangeNotificationA FindFirstChangeNotification; +// #endif // !UNICODE + +extern(Windows) export BOOL FindNextChangeNotification( + HANDLE hChangeHandle); + +extern(Windows) export BOOL FindCloseChangeNotification( + HANDLE hChangeHandle); + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) export BOOL ReadDirectoryChangesW( + HANDLE hDirectory, + LPVOID lpBuffer, + DWORD nBufferLength, + BOOL bWatchSubtree, + DWORD dwNotifyFilter, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL VirtualLock( + LPVOID lpAddress, + SIZE_T dwSize); + +extern(Windows) export BOOL VirtualUnlock( + LPVOID lpAddress, + SIZE_T dwSize); + +extern(Windows) export LPVOID MapViewOfFileEx( + HANDLE hFileMappingObject, + DWORD dwDesiredAccess, + DWORD dwFileOffsetHigh, + DWORD dwFileOffsetLow, + SIZE_T dwNumberOfBytesToMap, + LPVOID lpBaseAddress); + +extern(Windows) export BOOL SetPriorityClass( + HANDLE hProcess, + DWORD dwPriorityClass); + +extern(Windows) export DWORD GetPriorityClass( + HANDLE hProcess); + +extern(Windows) export BOOL IsBadReadPtr( + VOID *lp, + UINT_PTR ucb); + +extern(Windows) export BOOL IsBadWritePtr( + LPVOID lp, + UINT_PTR ucb); + +extern(Windows) export BOOL IsBadHugeReadPtr( + VOID *lp, + UINT_PTR ucb); + +extern(Windows) export BOOL IsBadHugeWritePtr( + LPVOID lp, + UINT_PTR ucb); + +extern(Windows) export BOOL IsBadCodePtr( + FARPROC lpfn); + +extern(Windows) export BOOL IsBadStringPtrA( + LPCSTR lpsz, + UINT_PTR ucchMax); +extern(Windows) export BOOL IsBadStringPtrW( + LPCWSTR lpsz, + UINT_PTR ucchMax); +// #ifdef UNICODE +// #... +// #else +alias IsBadStringPtrA IsBadStringPtr; +// #endif // !UNICODE + +extern(Windows) export BOOL LookupAccountSidA( + LPCSTR lpSystemName, + PSID Sid, + LPSTR Name, + LPDWORD cbName, + LPSTR ReferencedDomainName, + LPDWORD cbReferencedDomainName, + PSID_NAME_USE peUse); +extern(Windows) export BOOL LookupAccountSidW( + LPCWSTR lpSystemName, + PSID Sid, + LPWSTR Name, + LPDWORD cbName, + LPWSTR ReferencedDomainName, + LPDWORD cbReferencedDomainName, + PSID_NAME_USE peUse); +// #ifdef UNICODE +// #... +// #else +alias LookupAccountSidA LookupAccountSid; +// #endif // !UNICODE + +extern(Windows) export BOOL LookupAccountNameA( + LPCSTR lpSystemName, + LPCSTR lpAccountName, + PSID Sid, + LPDWORD cbSid, + LPSTR ReferencedDomainName, + LPDWORD cbReferencedDomainName, + PSID_NAME_USE peUse); +extern(Windows) export BOOL LookupAccountNameW( + LPCWSTR lpSystemName, + LPCWSTR lpAccountName, + PSID Sid, + LPDWORD cbSid, + LPWSTR ReferencedDomainName, + LPDWORD cbReferencedDomainName, + PSID_NAME_USE peUse); +// #ifdef UNICODE +// #... +// #else +alias LookupAccountNameA LookupAccountName; +// #endif // !UNICODE + +extern(Windows) export BOOL LookupPrivilegeValueA( + LPCSTR lpSystemName, + LPCSTR lpName, + PLUID lpLuid); +extern(Windows) export BOOL LookupPrivilegeValueW( + LPCWSTR lpSystemName, + LPCWSTR lpName, + PLUID lpLuid); +// #ifdef UNICODE +// #... +// #else +alias LookupPrivilegeValueA LookupPrivilegeValue; +// #endif // !UNICODE + +extern(Windows) export BOOL LookupPrivilegeNameA( + LPCSTR lpSystemName, + PLUID lpLuid, + LPSTR lpName, + LPDWORD cbName); +extern(Windows) export BOOL LookupPrivilegeNameW( + LPCWSTR lpSystemName, + PLUID lpLuid, + LPWSTR lpName, + LPDWORD cbName); +// #ifdef UNICODE +// #... +// #else +alias LookupPrivilegeNameA LookupPrivilegeName; +// #endif // !UNICODE + +extern(Windows) export BOOL LookupPrivilegeDisplayNameA( + LPCSTR lpSystemName, + LPCSTR lpName, + LPSTR lpDisplayName, + LPDWORD cbDisplayName, + LPDWORD lpLanguageId); +extern(Windows) export BOOL LookupPrivilegeDisplayNameW( + LPCWSTR lpSystemName, + LPCWSTR lpName, + LPWSTR lpDisplayName, + LPDWORD cbDisplayName, + LPDWORD lpLanguageId); +// #ifdef UNICODE +// #... +// #else +alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; +// #endif // !UNICODE + +extern(Windows) export BOOL AllocateLocallyUniqueId( + PLUID Luid); + +extern(Windows) export BOOL BuildCommDCBA( + LPCSTR lpDef, + LPDCB lpDCB); +extern(Windows) export BOOL BuildCommDCBW( + LPCWSTR lpDef, + LPDCB lpDCB); +// #ifdef UNICODE +// #... +// #else +alias BuildCommDCBA BuildCommDCB; +// #endif // !UNICODE + +extern(Windows) export BOOL BuildCommDCBAndTimeoutsA( + LPCSTR lpDef, + LPDCB lpDCB, + LPCOMMTIMEOUTS lpCommTimeouts); +extern(Windows) export BOOL BuildCommDCBAndTimeoutsW( + LPCWSTR lpDef, + LPDCB lpDCB, + LPCOMMTIMEOUTS lpCommTimeouts); +// #ifdef UNICODE +// #... +// #else +alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; +// #endif // !UNICODE + +extern(Windows) export BOOL CommConfigDialogA( + LPCSTR lpszName, + HWND hWnd, + LPCOMMCONFIG lpCC); +extern(Windows) export BOOL CommConfigDialogW( + LPCWSTR lpszName, + HWND hWnd, + LPCOMMCONFIG lpCC); +// #ifdef UNICODE +// #... +// #else +alias CommConfigDialogA CommConfigDialog; +// #endif // !UNICODE + +extern(Windows) export BOOL GetDefaultCommConfigA( + LPCSTR lpszName, + LPCOMMCONFIG lpCC, + LPDWORD lpdwSize); +extern(Windows) export BOOL GetDefaultCommConfigW( + LPCWSTR lpszName, + LPCOMMCONFIG lpCC, + LPDWORD lpdwSize); +// #ifdef UNICODE +// #... +// #else +alias GetDefaultCommConfigA GetDefaultCommConfig; +// #endif // !UNICODE + +extern(Windows) export BOOL SetDefaultCommConfigA( + LPCSTR lpszName, + LPCOMMCONFIG lpCC, + DWORD dwSize); +extern(Windows) export BOOL SetDefaultCommConfigW( + LPCWSTR lpszName, + LPCOMMCONFIG lpCC, + DWORD dwSize); +// #ifdef UNICODE +// #... +// #else +alias SetDefaultCommConfigA SetDefaultCommConfig; +// #endif // !UNICODE + +// #ifndef _MAC +enum : uint { MAX_COMPUTERNAME_LENGTH = 15 } +// #else +// #... +// #endif + +extern(Windows) export BOOL GetComputerNameA( + LPSTR lpBuffer, + LPDWORD nSize); +extern(Windows) export BOOL GetComputerNameW( + LPWSTR lpBuffer, + LPDWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetComputerNameA GetComputerName; +// #endif // !UNICODE + +extern(Windows) export BOOL SetComputerNameA( + LPCSTR lpComputerName); +extern(Windows) export BOOL SetComputerNameW( + LPCWSTR lpComputerName); +// #ifdef UNICODE +// #... +// #else +alias SetComputerNameA SetComputerName; +// #endif // !UNICODE + +// #if (_WIN32_WINNT >= 0x0500) + +alias int _COMPUTER_NAME_FORMAT; +enum { + ComputerNameNetBIOS, + ComputerNameDnsHostname, + ComputerNameDnsDomain, + ComputerNameDnsFullyQualified, + ComputerNamePhysicalNetBIOS, + ComputerNamePhysicalDnsHostname, + ComputerNamePhysicalDnsDomain, + ComputerNamePhysicalDnsFullyQualified, + ComputerNameMax, +} +alias _COMPUTER_NAME_FORMAT COMPUTER_NAME_FORMAT; + +extern(Windows) export BOOL GetComputerNameExA( + COMPUTER_NAME_FORMAT NameType, + LPSTR lpBuffer, + LPDWORD nSize); +extern(Windows) export BOOL GetComputerNameExW( + COMPUTER_NAME_FORMAT NameType, + LPWSTR lpBuffer, + LPDWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetComputerNameExA GetComputerNameEx; +// #endif // !UNICODE + +extern(Windows) export BOOL SetComputerNameExA( + COMPUTER_NAME_FORMAT NameType, + LPCSTR lpBuffer); +extern(Windows) export BOOL SetComputerNameExW( + COMPUTER_NAME_FORMAT NameType, + LPCWSTR lpBuffer); +// #ifdef UNICODE +// #... +// #else +alias SetComputerNameExA SetComputerNameEx; +// #endif // !UNICODE + +extern(Windows) export DWORD AddLocalAlternateComputerNameA( + LPCSTR lpDnsFQHostname, + ULONG ulFlags); +extern(Windows) export DWORD AddLocalAlternateComputerNameW( + LPCWSTR lpDnsFQHostname, + ULONG ulFlags); +// #ifdef UNICODE +// #... +// #else +alias AddLocalAlternateComputerNameA AddLocalAlternateComputerName; +// #endif // !UNICODE + +extern(Windows) export DWORD RemoveLocalAlternateComputerNameA( + LPCSTR lpAltDnsFQHostname, + ULONG ulFlags); +extern(Windows) export DWORD RemoveLocalAlternateComputerNameW( + LPCWSTR lpAltDnsFQHostname, + ULONG ulFlags); +// #ifdef UNICODE +// #... +// #else +alias RemoveLocalAlternateComputerNameA RemoveLocalAlternateComputerName; +// #endif // !UNICODE + +extern(Windows) export DWORD SetLocalPrimaryComputerNameA( + LPCSTR lpAltDnsFQHostname, + ULONG ulFlags); +extern(Windows) export DWORD SetLocalPrimaryComputerNameW( + LPCWSTR lpAltDnsFQHostname, + ULONG ulFlags); +// #ifdef UNICODE +// #... +// #else +alias SetLocalPrimaryComputerNameA SetLocalPrimaryComputerName; +// #endif // !UNICODE + +alias int _COMPUTER_NAME_TYPE; +enum { + PrimaryComputerName, + AlternateComputerNames, + AllComputerNames, + ComputerNameTypeMax, +} +alias _COMPUTER_NAME_TYPE COMPUTER_NAME_TYPE; + +extern(Windows) export DWORD EnumerateLocalComputerNamesA( + COMPUTER_NAME_TYPE NameType, + ULONG ulFlags, + LPSTR lpDnsFQHostname, + LPDWORD nSize); +extern(Windows) export DWORD EnumerateLocalComputerNamesW( + COMPUTER_NAME_TYPE NameType, + ULONG ulFlags, + LPWSTR lpDnsFQHostname, + LPDWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias EnumerateLocalComputerNamesA EnumerateLocalComputerNames; +// #endif // !UNICODE + +extern(Windows) export BOOL DnsHostnameToComputerNameA( + LPCSTR Hostname, + LPSTR ComputerName, + LPDWORD nSize); +extern(Windows) export BOOL DnsHostnameToComputerNameW( + LPCWSTR Hostname, + LPWSTR ComputerName, + LPDWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias DnsHostnameToComputerNameA DnsHostnameToComputerName; +// #endif // !UNICODE + +// #endif // _WIN32_WINNT + +extern(Windows) export BOOL GetUserNameA( + LPSTR lpBuffer, + LPDWORD nSize); +extern(Windows) export BOOL GetUserNameW( + LPWSTR lpBuffer, + LPDWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetUserNameA GetUserName; +// #endif // !UNICODE + +enum : uint { LOGON32_LOGON_INTERACTIVE = 2 } +enum : uint { LOGON32_LOGON_NETWORK = 3 } +enum : uint { LOGON32_LOGON_BATCH = 4 } +enum : uint { LOGON32_LOGON_SERVICE = 5 } +enum : uint { LOGON32_LOGON_UNLOCK = 7 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { LOGON32_LOGON_NETWORK_CLEARTEXT = 8 } +enum : uint { LOGON32_LOGON_NEW_CREDENTIALS = 9 } +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { LOGON32_PROVIDER_DEFAULT = 0 } +enum : uint { LOGON32_PROVIDER_WINNT35 = 1 } +// #if(_WIN32_WINNT >= 0x0400) +enum : uint { LOGON32_PROVIDER_WINNT40 = 2 } +// #endif /* _WIN32_WINNT >= 0x0400 */ +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { LOGON32_PROVIDER_WINNT50 = 3 } +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL LogonUserA( + LPSTR lpszUsername, + LPSTR lpszDomain, + LPSTR lpszPassword, + DWORD dwLogonType, + DWORD dwLogonProvider, + PHANDLE phToken); +extern(Windows) export BOOL LogonUserW( + LPWSTR lpszUsername, + LPWSTR lpszDomain, + LPWSTR lpszPassword, + DWORD dwLogonType, + DWORD dwLogonProvider, + PHANDLE phToken); +// #ifdef UNICODE +// #... +// #else +alias LogonUserA LogonUser; +// #endif // !UNICODE + +extern(Windows) export BOOL LogonUserExA( + LPSTR lpszUsername, + LPSTR lpszDomain, + LPSTR lpszPassword, + DWORD dwLogonType, + DWORD dwLogonProvider, + PHANDLE phToken , + PSID *ppLogonSid , + PVOID *ppProfileBuffer , + LPDWORD pdwProfileLength , + PQUOTA_LIMITS pQuotaLimits ); +extern(Windows) export BOOL LogonUserExW( + LPWSTR lpszUsername, + LPWSTR lpszDomain, + LPWSTR lpszPassword, + DWORD dwLogonType, + DWORD dwLogonProvider, + PHANDLE phToken , + PSID *ppLogonSid , + PVOID *ppProfileBuffer , + LPDWORD pdwProfileLength , + PQUOTA_LIMITS pQuotaLimits ); +// #ifdef UNICODE +// #... +// #else +alias LogonUserExA LogonUserEx; +// #endif // !UNICODE + +extern(Windows) export BOOL ImpersonateLoggedOnUser( + HANDLE hToken); + +extern(Windows) export BOOL CreateProcessAsUserA( + HANDLE hToken, + LPCSTR lpApplicationName, + LPSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCSTR lpCurrentDirectory, + LPSTARTUPINFOA lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); +extern(Windows) export BOOL CreateProcessAsUserW( + HANDLE hToken, + LPCWSTR lpApplicationName, + LPWSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCWSTR lpCurrentDirectory, + LPSTARTUPINFOW lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); +// #ifdef UNICODE +// #... +// #else +alias CreateProcessAsUserA CreateProcessAsUser; +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0500) + +enum : uint { LOGON_WITH_PROFILE = 0x00000001 } +enum : uint { LOGON_NETCREDENTIALS_ONLY = 0x00000002 } + +extern(Windows) export BOOL CreateProcessWithLogonW( + LPCWSTR lpUsername, + LPCWSTR lpDomain, + LPCWSTR lpPassword, + DWORD dwLogonFlags, + LPCWSTR lpApplicationName, + LPWSTR lpCommandLine, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCWSTR lpCurrentDirectory, + LPSTARTUPINFOW lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); + +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL ImpersonateAnonymousToken( + HANDLE ThreadHandle); + +extern(Windows) export BOOL DuplicateTokenEx( + HANDLE hExistingToken, + DWORD dwDesiredAccess, + LPSECURITY_ATTRIBUTES lpTokenAttributes, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + TOKEN_TYPE TokenType, + PHANDLE phNewToken); + +extern(Windows) export BOOL CreateRestrictedToken( + HANDLE ExistingTokenHandle, + DWORD Flags, + DWORD DisableSidCount, + PSID_AND_ATTRIBUTES SidsToDisable , + DWORD DeletePrivilegeCount, + PLUID_AND_ATTRIBUTES PrivilegesToDelete , + DWORD RestrictedSidCount, + PSID_AND_ATTRIBUTES SidsToRestrict , + PHANDLE NewTokenHandle); + +extern(Windows) export BOOL IsTokenRestricted( + HANDLE TokenHandle); + +extern(Windows) export BOOL IsTokenUntrusted( + HANDLE TokenHandle); + +extern(Windows) export BOOL CheckTokenMembership( + HANDLE TokenHandle , + PSID SidToCheck, + PBOOL IsMember); + +// #if (_WIN32_WINNT >= 0x0500) + +alias WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK; + +extern(Windows) export BOOL RegisterWaitForSingleObject( + PHANDLE phNewWaitObject, + HANDLE hObject, + WAITORTIMERCALLBACK Callback, + PVOID Context, + ULONG dwMilliseconds, + ULONG dwFlags); + +extern(Windows) export HANDLE RegisterWaitForSingleObjectEx( + HANDLE hObject, + WAITORTIMERCALLBACK Callback, + PVOID Context, + ULONG dwMilliseconds, + ULONG dwFlags); + +extern(Windows) export BOOL UnregisterWait( + HANDLE WaitHandle); + +extern(Windows) export BOOL UnregisterWaitEx( + HANDLE WaitHandle, + HANDLE CompletionEvent); + +extern(Windows) export BOOL QueueUserWorkItem( + LPTHREAD_START_ROUTINE Function, + PVOID Context, + ULONG Flags); + +extern(Windows) export BOOL BindIoCompletionCallback( + HANDLE FileHandle, + LPOVERLAPPED_COMPLETION_ROUTINE Function, + ULONG Flags); + +extern(Windows) export HANDLE CreateTimerQueue(); + +extern(Windows) export BOOL CreateTimerQueueTimer( + PHANDLE phNewTimer, + HANDLE TimerQueue, + WAITORTIMERCALLBACK Callback, + PVOID Parameter, + DWORD DueTime, + DWORD Period, + ULONG Flags); + +extern(Windows) export BOOL ChangeTimerQueueTimer( + HANDLE TimerQueue, + HANDLE Timer, + ULONG DueTime, + ULONG Period); + +extern(Windows) export BOOL DeleteTimerQueueTimer( + HANDLE TimerQueue, + HANDLE Timer, + HANDLE CompletionEvent); + +extern(Windows) export BOOL DeleteTimerQueueEx( + HANDLE TimerQueue, + HANDLE CompletionEvent); + +extern(Windows) export HANDLE SetTimerQueueTimer( + HANDLE TimerQueue, + WAITORTIMERCALLBACK Callback, + PVOID Parameter, + DWORD DueTime, + DWORD Period, + BOOL PreferIo); + +extern(Windows) export BOOL CancelTimerQueueTimer( + HANDLE TimerQueue, + HANDLE Timer); + +extern(Windows) export BOOL DeleteTimerQueue( + HANDLE TimerQueue); + +// #endif // _WIN32_WINNT + +// #if(_WIN32_WINNT >= 0x0400) + +enum : uint { HW_PROFILE_GUIDLEN = 39 } +enum : uint { MAX_PROFILE_LEN = 80 } + +enum : uint { DOCKINFO_UNDOCKED = 0x1 } +enum : uint { DOCKINFO_DOCKED = 0x2 } +enum : uint { DOCKINFO_USER_SUPPLIED = 0x4 } +enum : uint { DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED } +enum : uint { DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED } + +struct tagHW_PROFILE_INFOA { + DWORD dwDockInfo; + CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]; + CHAR szHwProfileName[MAX_PROFILE_LEN]; +} +alias tagHW_PROFILE_INFOA HW_PROFILE_INFOA; +alias tagHW_PROFILE_INFOA* LPHW_PROFILE_INFOA; + +struct tagHW_PROFILE_INFOW { + DWORD dwDockInfo; + WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]; + WCHAR szHwProfileName[MAX_PROFILE_LEN]; +} +alias tagHW_PROFILE_INFOW HW_PROFILE_INFOW; +alias tagHW_PROFILE_INFOW* LPHW_PROFILE_INFOW; + +// #ifdef UNICODE +// ... +// #else +alias HW_PROFILE_INFOA HW_PROFILE_INFO; +alias LPHW_PROFILE_INFOA LPHW_PROFILE_INFO; +// #endif // UNICODE + +extern(Windows) export BOOL GetCurrentHwProfileA( + LPHW_PROFILE_INFOA lpHwProfileInfo); +extern(Windows) export BOOL GetCurrentHwProfileW( + LPHW_PROFILE_INFOW lpHwProfileInfo); +// #ifdef UNICODE +// #... +// #else +alias GetCurrentHwProfileA GetCurrentHwProfile; +// #endif // !UNICODE +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL QueryPerformanceCounter( + LARGE_INTEGER *lpPerformanceCount); + +extern(Windows) export BOOL QueryPerformanceFrequency( + LARGE_INTEGER *lpFrequency); + +extern(Windows) export BOOL GetVersionExA( + LPOSVERSIONINFOA lpVersionInformation); +extern(Windows) export BOOL GetVersionExW( + LPOSVERSIONINFOW lpVersionInformation); +// #ifdef UNICODE +// #... +// #else +alias GetVersionExA GetVersionEx; +// #endif // !UNICODE + +extern(Windows) export BOOL VerifyVersionInfoA( + LPOSVERSIONINFOEXA lpVersionInformation, + DWORD dwTypeMask, + DWORDLONG dwlConditionMask); +extern(Windows) export BOOL VerifyVersionInfoW( + LPOSVERSIONINFOEXW lpVersionInformation, + DWORD dwTypeMask, + DWORDLONG dwlConditionMask); +// #ifdef UNICODE +// #... +// #else +alias VerifyVersionInfoA VerifyVersionInfo; +// #endif // !UNICODE + +import win32.ansi.winerror; + +enum : uint { TC_NORMAL = 0 } +enum : uint { TC_HARDERR = 1 } +enum : uint { TC_GP_TRAP = 2 } +enum : uint { TC_SIGNAL = 3 } + +// #if(WINVER >= 0x0400) + +enum : uint { AC_LINE_OFFLINE = 0x00 } +enum : uint { AC_LINE_ONLINE = 0x01 } +enum : uint { AC_LINE_BACKUP_POWER = 0x02 } +enum : uint { AC_LINE_UNKNOWN = 0xFF } + +enum : uint { BATTERY_FLAG_HIGH = 0x01 } +enum : uint { BATTERY_FLAG_LOW = 0x02 } +enum : uint { BATTERY_FLAG_CRITICAL = 0x04 } +enum : uint { BATTERY_FLAG_CHARGING = 0x08 } +enum : uint { BATTERY_FLAG_NO_BATTERY = 0x80 } +enum : uint { BATTERY_FLAG_UNKNOWN = 0xFF } + +enum : uint { BATTERY_PERCENTAGE_UNKNOWN = 0xFF } + +enum : uint { BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF } + +struct _SYSTEM_POWER_STATUS { + BYTE ACLineStatus; + BYTE BatteryFlag; + BYTE BatteryLifePercent; + BYTE Reserved1; + DWORD BatteryLifeTime; + DWORD BatteryFullLifeTime; +} +alias _SYSTEM_POWER_STATUS SYSTEM_POWER_STATUS; +alias _SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; + +extern(Windows) export BOOL GetSystemPowerStatus( + LPSYSTEM_POWER_STATUS lpSystemPowerStatus); + +extern(Windows) export BOOL SetSystemPowerState( + BOOL fSuspend, + BOOL fForce); + +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL AllocateUserPhysicalPages( + HANDLE hProcess, + PULONG_PTR NumberOfPages, + PULONG_PTR PageArray); + +extern(Windows) export BOOL FreeUserPhysicalPages( + HANDLE hProcess, + PULONG_PTR NumberOfPages, + PULONG_PTR PageArray); + +extern(Windows) export BOOL MapUserPhysicalPages( + PVOID VirtualAddress, + ULONG_PTR NumberOfPages, + PULONG_PTR PageArray ); + +extern(Windows) export BOOL MapUserPhysicalPagesScatter( + PVOID *VirtualAddresses, + ULONG_PTR NumberOfPages, + PULONG_PTR PageArray ); + +extern(Windows) export HANDLE CreateJobObjectA( + LPSECURITY_ATTRIBUTES lpJobAttributes, + LPCSTR lpName); +extern(Windows) export HANDLE CreateJobObjectW( + LPSECURITY_ATTRIBUTES lpJobAttributes, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias CreateJobObjectA CreateJobObject; +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenJobObjectA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenJobObjectW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +// #... +// #else +alias OpenJobObjectA OpenJobObject; +// #endif // !UNICODE + +extern(Windows) export BOOL AssignProcessToJobObject( + HANDLE hJob, + HANDLE hProcess); + +extern(Windows) export BOOL TerminateJobObject( + HANDLE hJob, + UINT uExitCode); + +extern(Windows) export BOOL QueryInformationJobObject( + HANDLE hJob, + JOBOBJECTINFOCLASS JobObjectInformationClass, + LPVOID lpJobObjectInformation, + DWORD cbJobObjectInformationLength, + LPDWORD lpReturnLength); + +extern(Windows) export BOOL SetInformationJobObject( + HANDLE hJob, + JOBOBJECTINFOCLASS JobObjectInformationClass, + LPVOID lpJobObjectInformation, + DWORD cbJobObjectInformationLength); + +extern(Windows) export BOOL IsProcessInJob( + HANDLE ProcessHandle, + HANDLE JobHandle, + PBOOL Result); + +extern(Windows) export BOOL CreateJobSet( + ULONG NumJob, + PJOB_SET_ARRAY UserJobSet, + ULONG Flags); + +extern(Windows) export PVOID AddVectoredExceptionHandler( + ULONG FirstHandler, + PVECTORED_EXCEPTION_HANDLER VectoredHandler); + +extern(Windows) export ULONG RemoveVectoredExceptionHandler( + PVOID VectoredHandlerHandle); + +extern(Windows) export HANDLE FindFirstVolumeA( + LPSTR lpszVolumeName, + DWORD cchBufferLength); +extern(Windows) export HANDLE FindFirstVolumeW( + LPWSTR lpszVolumeName, + DWORD cchBufferLength); +// #ifdef UNICODE +// #... +// #else +alias FindFirstVolumeA FindFirstVolume; +// #endif // !UNICODE + +extern(Windows) export BOOL FindNextVolumeA( + HANDLE hFindVolume, + LPSTR lpszVolumeName, + DWORD cchBufferLength); +extern(Windows) export BOOL FindNextVolumeW( + HANDLE hFindVolume, + LPWSTR lpszVolumeName, + DWORD cchBufferLength); +// #ifdef UNICODE +// #... +// #else +alias FindNextVolumeA FindNextVolume; +// #endif // !UNICODE + +extern(Windows) export BOOL FindVolumeClose( + HANDLE hFindVolume); + +extern(Windows) export HANDLE FindFirstVolumeMountPointA( + LPCSTR lpszRootPathName, + LPSTR lpszVolumeMountPoint, + DWORD cchBufferLength); +extern(Windows) export HANDLE FindFirstVolumeMountPointW( + LPCWSTR lpszRootPathName, + LPWSTR lpszVolumeMountPoint, + DWORD cchBufferLength); +// #ifdef UNICODE +// #... +// #else +alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; +// #endif // !UNICODE + +extern(Windows) export BOOL FindNextVolumeMountPointA( + HANDLE hFindVolumeMountPoint, + LPSTR lpszVolumeMountPoint, + DWORD cchBufferLength); +extern(Windows) export BOOL FindNextVolumeMountPointW( + HANDLE hFindVolumeMountPoint, + LPWSTR lpszVolumeMountPoint, + DWORD cchBufferLength); +// #ifdef UNICODE +// #... +// #else +alias FindNextVolumeMountPointA FindNextVolumeMountPoint; +// #endif // !UNICODE + +extern(Windows) export BOOL FindVolumeMountPointClose( + HANDLE hFindVolumeMountPoint); + +extern(Windows) export BOOL SetVolumeMountPointA( + LPCSTR lpszVolumeMountPoint, + LPCSTR lpszVolumeName); +extern(Windows) export BOOL SetVolumeMountPointW( + LPCWSTR lpszVolumeMountPoint, + LPCWSTR lpszVolumeName); +// #ifdef UNICODE +// #... +// #else +alias SetVolumeMountPointA SetVolumeMountPoint; +// #endif // !UNICODE + +extern(Windows) export BOOL DeleteVolumeMountPointA( + LPCSTR lpszVolumeMountPoint); +extern(Windows) export BOOL DeleteVolumeMountPointW( + LPCWSTR lpszVolumeMountPoint); +// #ifdef UNICODE +// #... +// #else +alias DeleteVolumeMountPointA DeleteVolumeMountPoint; +// #endif // !UNICODE + +extern(Windows) export BOOL GetVolumeNameForVolumeMountPointA( + LPCSTR lpszVolumeMountPoint, + LPSTR lpszVolumeName, + DWORD cchBufferLength); +extern(Windows) export BOOL GetVolumeNameForVolumeMountPointW( + LPCWSTR lpszVolumeMountPoint, + LPWSTR lpszVolumeName, + DWORD cchBufferLength); +// #ifdef UNICODE +// #... +// #else +alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; +// #endif // !UNICODE + +extern(Windows) export BOOL GetVolumePathNameA( + LPCSTR lpszFileName, + LPSTR lpszVolumePathName, + DWORD cchBufferLength); +extern(Windows) export BOOL GetVolumePathNameW( + LPCWSTR lpszFileName, + LPWSTR lpszVolumePathName, + DWORD cchBufferLength); +// #ifdef UNICODE +// #... +// #else +alias GetVolumePathNameA GetVolumePathName; +// #endif // !UNICODE + +extern(Windows) export BOOL GetVolumePathNamesForVolumeNameA( + LPCSTR lpszVolumeName, + LPSTR lpszVolumePathNames, + DWORD cchBufferLength, + PDWORD lpcchReturnLength); +extern(Windows) export BOOL GetVolumePathNamesForVolumeNameW( + LPCWSTR lpszVolumeName, + LPWSTR lpszVolumePathNames, + DWORD cchBufferLength, + PDWORD lpcchReturnLength); +// #ifdef UNICODE +// #... +// #else +alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; +// #endif // !UNICODE + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED + +enum : uint { ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x00000001 } +enum : uint { ACTCTX_FLAG_LANGID_VALID = 0x00000002 } +enum : uint { ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x00000004 } +enum : uint { ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x00000008 } +enum : uint { ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x00000010 } +enum : uint { ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x00000020 } +enum : uint { ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF = 0x00000040 } +enum : uint { ACTCTX_FLAG_HMODULE_VALID = 0x00000080 } + +struct tagACTCTXA { + ULONG cbSize; + DWORD dwFlags; + LPCSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCSTR lpAssemblyDirectory; + LPCSTR lpResourceName; + LPCSTR lpApplicationName; + HMODULE hModule; +} +alias tagACTCTXA ACTCTXA; +alias tagACTCTXA* PACTCTXA; + +struct tagACTCTXW { + ULONG cbSize; + DWORD dwFlags; + LPCWSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCWSTR lpAssemblyDirectory; + LPCWSTR lpResourceName; + LPCWSTR lpApplicationName; + HMODULE hModule; +} +alias tagACTCTXW ACTCTXW; +alias tagACTCTXW* PACTCTXW; + +// #ifdef UNICODE +// ... +// #else +// skip typedef ACTCTXA ACTCTX; +alias PACTCTXA PACTCTX; +// #endif // UNICODE + +alias ACTCTXA* PCACTCTXA; +alias ACTCTXW* PCACTCTXW; +// #ifdef UNICODE +// ... +// #else +// skip typedef ACTCTXA ACTCTX; +alias PCACTCTXA PCACTCTX; +// #endif // UNICODE + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) + +extern(Windows) export HANDLE CreateActCtxA( + PCACTCTXA pActCtx); +extern(Windows) export HANDLE CreateActCtxW( + PCACTCTXW pActCtx); +// #ifdef UNICODE +// #... +// #else +alias CreateActCtxA CreateActCtx; +// #endif // !UNICODE + +extern(Windows) export VOID AddRefActCtx( + HANDLE hActCtx); + +extern(Windows) export VOID ReleaseActCtx( + HANDLE hActCtx); + +extern(Windows) export BOOL ZombifyActCtx( + HANDLE hActCtx); + +extern(Windows) export BOOL ActivateActCtx( + HANDLE hActCtx, + ULONG_PTR *lpCookie); + +enum : uint { DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 0x00000001 } + +extern(Windows) export BOOL DeactivateActCtx( + DWORD dwFlags, + ULONG_PTR ulCookie); + +extern(Windows) export BOOL GetCurrentActCtx( + HANDLE *lphActCtx); + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED + +struct tagACTCTX_SECTION_KEYED_DATA { + ULONG cbSize; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + ULONG ulAssemblyRosterIndex; +} +alias tagACTCTX_SECTION_KEYED_DATA ACTCTX_SECTION_KEYED_DATA; +alias tagACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; + +enum : uint { FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 0x00000001 } + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) + +extern(Windows) export BOOL FindActCtxSectionStringA( + DWORD dwFlags, + GUID *lpExtensionGuid, + ULONG ulSectionId, + LPCSTR lpStringToFind, + PACTCTX_SECTION_KEYED_DATA ReturnedData); +extern(Windows) export BOOL FindActCtxSectionStringW( + DWORD dwFlags, + GUID *lpExtensionGuid, + ULONG ulSectionId, + LPCWSTR lpStringToFind, + PACTCTX_SECTION_KEYED_DATA ReturnedData); +// #ifdef UNICODE +// #... +// #else +alias FindActCtxSectionStringA FindActCtxSectionString; +// #endif // !UNICODE + +extern(Windows) export BOOL FindActCtxSectionGuid( + DWORD dwFlags, + GUID *lpExtensionGuid, + ULONG ulSectionId, + GUID *lpGuidToFind, + PACTCTX_SECTION_KEYED_DATA ReturnedData); + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if !defined(ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED) + +// ... + +// ... + +// #... + +// #endif // !defined(ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED) +// #endif + +enum : uint { QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x00000004 } +enum : uint { QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x00000008 } +enum : uint { QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x00000010 } +enum : uint { QUERY_ACTCTX_FLAG_NO_ADDREF = 0x80000000 } + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) + +extern(Windows) export BOOL QueryActCtxW( + DWORD dwFlags, + HANDLE hActCtx, + PVOID pvSubInstance, + ULONG ulInfoClass, + PVOID pvBuffer, + SIZE_T cbBuffer , + SIZE_T *pcbWrittenOrRequired ); + +extern(Windows) alias BOOL function( DWORD dwFlags, HANDLE hActCtx, PVOID pvSubInstance, ULONG ulInfoClass, PVOID pvBuffer, SIZE_T cbBuffer , SIZE_T *pcbWrittenOrRequired ) PQUERYACTCTXW_FUNC; + +// #endif // (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) + +extern(Windows) export BOOL ProcessIdToSessionId( + DWORD dwProcessId, + DWORD *pSessionId); + +// #if _WIN32_WINNT >= 0x0501 + +extern(Windows) export DWORD WTSGetActiveConsoleSessionId(); + +extern(Windows) export BOOL IsWow64Process( + HANDLE hProcess, + PBOOL Wow64Process); + +// #endif // (_WIN32_WINNT >= 0x0501) + +extern(Windows) export BOOL GetNumaHighestNodeNumber( + PULONG HighestNodeNumber); + +extern(Windows) export BOOL GetNumaProcessorNode( + UCHAR Processor, + PUCHAR NodeNumber); + +extern(Windows) export BOOL GetNumaNodeProcessorMask( + UCHAR Node, + PULONGLONG ProcessorMask); + +extern(Windows) export BOOL GetNumaProcessorMap( + PSYSTEM_NUMA_INFORMATION Map, + ULONG Length, + PULONG ReturnedLength); + +extern(Windows) export BOOL GetNumaAvailableMemory( + PSYSTEM_NUMA_INFORMATION Memory, + ULONG Length, + PULONG ReturnedLength); + +extern(Windows) export BOOL GetNumaAvailableMemoryNode( + UCHAR Node, + PULONGLONG AvailableBytes); + +extern(Windows) export ULONGLONG NumaVirtualQueryNode( + ULONG NumberOfRanges, + PULONG_PTR RangeList, + PULONG_PTR VirtualPageAndNode, + SIZE_T MaximumOutputLength); + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED +// #... +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINBASE_ + ADDED src/win32/ansi/wincon.d Index: src/win32/ansi/wincon.d ================================================================== --- src/win32/ansi/wincon.d +++ src/win32/ansi/wincon.d @@ -0,0 +1,571 @@ +module win32.ansi.wincon; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winbase; + +// #ifndef _WINCON_ +// #define _WINCON_ + +// #ifdef __cplusplus +// extern "C" { +// #endif + +struct _COORD { + SHORT X; + SHORT Y; +} +alias _COORD COORD; +alias _COORD* PCOORD; + +struct _SMALL_RECT { + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; +} +alias _SMALL_RECT SMALL_RECT; +alias _SMALL_RECT* PSMALL_RECT; + +struct _KEY_EVENT_RECORD { + BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; +union { + WCHAR UnicodeChar; + CHAR AsciiChar; +} + + DWORD dwControlKeyState; +} +alias _KEY_EVENT_RECORD KEY_EVENT_RECORD; +alias _KEY_EVENT_RECORD* PKEY_EVENT_RECORD; + +enum : uint { RIGHT_ALT_PRESSED = 0x0001 } +enum : uint { LEFT_ALT_PRESSED = 0x0002 } +enum : uint { RIGHT_CTRL_PRESSED = 0x0004 } +enum : uint { LEFT_CTRL_PRESSED = 0x0008 } +enum : uint { SHIFT_PRESSED = 0x0010 } +enum : uint { NUMLOCK_ON = 0x0020 } +enum : uint { SCROLLLOCK_ON = 0x0040 } +enum : uint { CAPSLOCK_ON = 0x0080 } +enum : uint { ENHANCED_KEY = 0x0100 } +enum : uint { NLS_DBCSCHAR = 0x00010000 } +enum : uint { NLS_ALPHANUMERIC = 0x00000000 } +enum : uint { NLS_KATAKANA = 0x00020000 } +enum : uint { NLS_HIRAGANA = 0x00040000 } +enum : uint { NLS_ROMAN = 0x00400000 } +enum : uint { NLS_IME_CONVERSION = 0x00800000 } +enum : uint { NLS_IME_DISABLE = 0x20000000 } + +struct _MOUSE_EVENT_RECORD { + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} +alias _MOUSE_EVENT_RECORD MOUSE_EVENT_RECORD; +alias _MOUSE_EVENT_RECORD* PMOUSE_EVENT_RECORD; + +enum : uint { FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001 } +enum : uint { RIGHTMOST_BUTTON_PRESSED = 0x0002 } +enum : uint { FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004 } +enum : uint { FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008 } +enum : uint { FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010 } + +enum : uint { MOUSE_MOVED = 0x0001 } +enum : uint { DOUBLE_CLICK = 0x0002 } +enum : uint { MOUSE_WHEELED = 0x0004 } + +struct _WINDOW_BUFFER_SIZE_RECORD { + COORD dwSize; +} +alias _WINDOW_BUFFER_SIZE_RECORD WINDOW_BUFFER_SIZE_RECORD; +alias _WINDOW_BUFFER_SIZE_RECORD* PWINDOW_BUFFER_SIZE_RECORD; + +struct _MENU_EVENT_RECORD { + UINT dwCommandId; +} +alias _MENU_EVENT_RECORD MENU_EVENT_RECORD; +alias _MENU_EVENT_RECORD* PMENU_EVENT_RECORD; + +struct _FOCUS_EVENT_RECORD { + BOOL bSetFocus; +} +alias _FOCUS_EVENT_RECORD FOCUS_EVENT_RECORD; +alias _FOCUS_EVENT_RECORD* PFOCUS_EVENT_RECORD; + +struct _INPUT_RECORD { + WORD EventType; +union { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; +} + +} +alias _INPUT_RECORD INPUT_RECORD; +alias _INPUT_RECORD* PINPUT_RECORD; + +enum : uint { KEY_EVENT = 0x0001 } +enum : uint { MOUSE_EVENT = 0x0002 } +enum : uint { WINDOW_BUFFER_SIZE_EVENT = 0x0004 } +enum : uint { MENU_EVENT = 0x0008 } +enum : uint { FOCUS_EVENT = 0x0010 } + +struct _CHAR_INFO { +union { + WCHAR UnicodeChar; + CHAR AsciiChar; +} + + WORD Attributes; +} +alias _CHAR_INFO CHAR_INFO; +alias _CHAR_INFO* PCHAR_INFO; + +enum : uint { FOREGROUND_BLUE = 0x0001 } +enum : uint { FOREGROUND_GREEN = 0x0002 } +enum : uint { FOREGROUND_RED = 0x0004 } +enum : uint { FOREGROUND_INTENSITY = 0x0008 } +enum : uint { BACKGROUND_BLUE = 0x0010 } +enum : uint { BACKGROUND_GREEN = 0x0020 } +enum : uint { BACKGROUND_RED = 0x0040 } +enum : uint { BACKGROUND_INTENSITY = 0x0080 } +enum : uint { COMMON_LVB_LEADING_BYTE = 0x0100 } +enum : uint { COMMON_LVB_TRAILING_BYTE = 0x0200 } +enum : uint { COMMON_LVB_GRID_HORIZONTAL = 0x0400 } +enum : uint { COMMON_LVB_GRID_LVERTICAL = 0x0800 } +enum : uint { COMMON_LVB_GRID_RVERTICAL = 0x1000 } +enum : uint { COMMON_LVB_REVERSE_VIDEO = 0x4000 } +enum : uint { COMMON_LVB_UNDERSCORE = 0x8000 } + +enum : uint { COMMON_LVB_SBCSDBCS = 0x0300 } + +struct _CONSOLE_SCREEN_BUFFER_INFO { + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; +} +alias _CONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO; +alias _CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; + +struct _CONSOLE_CURSOR_INFO { + DWORD dwSize; + BOOL bVisible; +} +alias _CONSOLE_CURSOR_INFO CONSOLE_CURSOR_INFO; +alias _CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO; + +struct _CONSOLE_FONT_INFO { + DWORD nFont; + COORD dwFontSize; +} +alias _CONSOLE_FONT_INFO CONSOLE_FONT_INFO; +alias _CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO; + +// #if(_WIN32_WINNT >= 0x0500) +struct _CONSOLE_SELECTION_INFO { + DWORD dwFlags; + COORD dwSelectionAnchor; + SMALL_RECT srSelection; +} +alias _CONSOLE_SELECTION_INFO CONSOLE_SELECTION_INFO; +alias _CONSOLE_SELECTION_INFO* PCONSOLE_SELECTION_INFO; + +enum : uint { CONSOLE_NO_SELECTION = 0x0000 } +enum : uint { CONSOLE_SELECTION_IN_PROGRESS = 0x0001 } +enum : uint { CONSOLE_SELECTION_NOT_EMPTY = 0x0002 } +enum : uint { CONSOLE_MOUSE_SELECTION = 0x0004 } +enum : uint { CONSOLE_MOUSE_DOWN = 0x0008 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) alias BOOL function( DWORD CtrlType ) PHANDLER_ROUTINE; + +enum : uint { CTRL_C_EVENT = 0 } +enum : uint { CTRL_BREAK_EVENT = 1 } +enum : uint { CTRL_CLOSE_EVENT = 2 } + +enum : uint { CTRL_LOGOFF_EVENT = 5 } +enum : uint { CTRL_SHUTDOWN_EVENT = 6 } + +enum : uint { ENABLE_PROCESSED_INPUT = 0x0001 } +enum : uint { ENABLE_LINE_INPUT = 0x0002 } +enum : uint { ENABLE_ECHO_INPUT = 0x0004 } +enum : uint { ENABLE_WINDOW_INPUT = 0x0008 } +enum : uint { ENABLE_MOUSE_INPUT = 0x0010 } + +enum : uint { ENABLE_PROCESSED_OUTPUT = 0x0001 } +enum : uint { ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 } + +extern(Windows) export BOOL PeekConsoleInputA( + HANDLE hConsoleInput, + PINPUT_RECORD lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsRead); +extern(Windows) export BOOL PeekConsoleInputW( + HANDLE hConsoleInput, + PINPUT_RECORD lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsRead); +// #ifdef UNICODE +// #... +// #else +alias PeekConsoleInputA PeekConsoleInput; +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleInputA( + HANDLE hConsoleInput, + PINPUT_RECORD lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsRead); +extern(Windows) export BOOL ReadConsoleInputW( + HANDLE hConsoleInput, + PINPUT_RECORD lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsRead); +// #ifdef UNICODE +// #... +// #else +alias ReadConsoleInputA ReadConsoleInput; +// #endif // !UNICODE + +extern(Windows) export BOOL WriteConsoleInputA( + HANDLE hConsoleInput, + INPUT_RECORD *lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsWritten); +extern(Windows) export BOOL WriteConsoleInputW( + HANDLE hConsoleInput, + INPUT_RECORD *lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsWritten); +// #ifdef UNICODE +// #... +// #else +alias WriteConsoleInputA WriteConsoleInput; +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleOutputA( + HANDLE hConsoleOutput, + PCHAR_INFO lpBuffer, + COORD dwBufferSize, + COORD dwBufferCoord, + PSMALL_RECT lpReadRegion); +extern(Windows) export BOOL ReadConsoleOutputW( + HANDLE hConsoleOutput, + PCHAR_INFO lpBuffer, + COORD dwBufferSize, + COORD dwBufferCoord, + PSMALL_RECT lpReadRegion); +// #ifdef UNICODE +// #... +// #else +alias ReadConsoleOutputA ReadConsoleOutput; +// #endif // !UNICODE + +extern(Windows) export BOOL WriteConsoleOutputA( + HANDLE hConsoleOutput, + CHAR_INFO *lpBuffer, + COORD dwBufferSize, + COORD dwBufferCoord, + PSMALL_RECT lpWriteRegion); +extern(Windows) export BOOL WriteConsoleOutputW( + HANDLE hConsoleOutput, + CHAR_INFO *lpBuffer, + COORD dwBufferSize, + COORD dwBufferCoord, + PSMALL_RECT lpWriteRegion); +// #ifdef UNICODE +// #... +// #else +alias WriteConsoleOutputA WriteConsoleOutput; +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleOutputCharacterA( + HANDLE hConsoleOutput, + LPSTR lpCharacter, + DWORD nLength, + COORD dwReadCoord, + LPDWORD lpNumberOfCharsRead); +extern(Windows) export BOOL ReadConsoleOutputCharacterW( + HANDLE hConsoleOutput, + LPWSTR lpCharacter, + DWORD nLength, + COORD dwReadCoord, + LPDWORD lpNumberOfCharsRead); +// #ifdef UNICODE +// #... +// #else +alias ReadConsoleOutputCharacterA ReadConsoleOutputCharacter; +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleOutputAttribute( + HANDLE hConsoleOutput, + LPWORD lpAttribute, + DWORD nLength, + COORD dwReadCoord, + LPDWORD lpNumberOfAttrsRead); + +extern(Windows) export BOOL WriteConsoleOutputCharacterA( + HANDLE hConsoleOutput, + LPCSTR lpCharacter, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfCharsWritten); +extern(Windows) export BOOL WriteConsoleOutputCharacterW( + HANDLE hConsoleOutput, + LPCWSTR lpCharacter, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfCharsWritten); +// #ifdef UNICODE +// #... +// #else +alias WriteConsoleOutputCharacterA WriteConsoleOutputCharacter; +// #endif // !UNICODE + +extern(Windows) export BOOL WriteConsoleOutputAttribute( + HANDLE hConsoleOutput, + WORD *lpAttribute, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfAttrsWritten); + +extern(Windows) export BOOL FillConsoleOutputCharacterA( + HANDLE hConsoleOutput, + CHAR cCharacter, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfCharsWritten); +extern(Windows) export BOOL FillConsoleOutputCharacterW( + HANDLE hConsoleOutput, + WCHAR cCharacter, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfCharsWritten); +// #ifdef UNICODE +// #... +// #else +alias FillConsoleOutputCharacterA FillConsoleOutputCharacter; +// #endif // !UNICODE + +extern(Windows) export BOOL FillConsoleOutputAttribute( + HANDLE hConsoleOutput, + WORD wAttribute, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfAttrsWritten); + +extern(Windows) export BOOL GetConsoleMode( + HANDLE hConsoleHandle, + LPDWORD lpMode); + +extern(Windows) export BOOL GetNumberOfConsoleInputEvents( + HANDLE hConsoleInput, + LPDWORD lpNumberOfEvents); + +extern(Windows) export BOOL GetConsoleScreenBufferInfo( + HANDLE hConsoleOutput, + PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo); + +extern(Windows) export COORD GetLargestConsoleWindowSize( + HANDLE hConsoleOutput); + +extern(Windows) export BOOL GetConsoleCursorInfo( + HANDLE hConsoleOutput, + PCONSOLE_CURSOR_INFO lpConsoleCursorInfo); + +// #if(_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL GetCurrentConsoleFont( + HANDLE hConsoleOutput, + BOOL bMaximumWindow, + PCONSOLE_FONT_INFO lpConsoleCurrentFont); + +extern(Windows) export COORD GetConsoleFontSize( + HANDLE hConsoleOutput, + DWORD nFont); + +extern(Windows) export BOOL GetConsoleSelectionInfo( + PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo); + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL GetNumberOfConsoleMouseButtons( + LPDWORD lpNumberOfMouseButtons); + +extern(Windows) export BOOL SetConsoleMode( + HANDLE hConsoleHandle, + DWORD dwMode); + +extern(Windows) export BOOL SetConsoleActiveScreenBuffer( + HANDLE hConsoleOutput); + +extern(Windows) export BOOL FlushConsoleInputBuffer( + HANDLE hConsoleInput); + +extern(Windows) export BOOL SetConsoleScreenBufferSize( + HANDLE hConsoleOutput, + COORD dwSize); + +extern(Windows) export BOOL SetConsoleCursorPosition( + HANDLE hConsoleOutput, + COORD dwCursorPosition); + +extern(Windows) export BOOL SetConsoleCursorInfo( + HANDLE hConsoleOutput, + CONSOLE_CURSOR_INFO *lpConsoleCursorInfo); + +extern(Windows) export BOOL ScrollConsoleScreenBufferA( + HANDLE hConsoleOutput, + SMALL_RECT *lpScrollRectangle, + SMALL_RECT *lpClipRectangle, + COORD dwDestinationOrigin, + CHAR_INFO *lpFill); +extern(Windows) export BOOL ScrollConsoleScreenBufferW( + HANDLE hConsoleOutput, + SMALL_RECT *lpScrollRectangle, + SMALL_RECT *lpClipRectangle, + COORD dwDestinationOrigin, + CHAR_INFO *lpFill); +// #ifdef UNICODE +// #... +// #else +alias ScrollConsoleScreenBufferA ScrollConsoleScreenBuffer; +// #endif // !UNICODE + +extern(Windows) export BOOL SetConsoleWindowInfo( + HANDLE hConsoleOutput, + BOOL bAbsolute, + SMALL_RECT *lpConsoleWindow); + +extern(Windows) export BOOL SetConsoleTextAttribute( + HANDLE hConsoleOutput, + WORD wAttributes); + +extern(Windows) export BOOL SetConsoleCtrlHandler( + PHANDLER_ROUTINE HandlerRoutine, + BOOL Add); + +extern(Windows) export BOOL GenerateConsoleCtrlEvent( + DWORD dwCtrlEvent, + DWORD dwProcessGroupId); + +extern(Windows) export BOOL AllocConsole(); + +extern(Windows) export BOOL FreeConsole(); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AttachConsole( + DWORD dwProcessId); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export DWORD GetConsoleTitleA( + LPSTR lpConsoleTitle, + DWORD nSize); +extern(Windows) export DWORD GetConsoleTitleW( + LPWSTR lpConsoleTitle, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias GetConsoleTitleA GetConsoleTitle; +// #endif // !UNICODE + +extern(Windows) export BOOL SetConsoleTitleA( + LPCSTR lpConsoleTitle); +extern(Windows) export BOOL SetConsoleTitleW( + LPCWSTR lpConsoleTitle); +// #ifdef UNICODE +// #... +// #else +alias SetConsoleTitleA SetConsoleTitle; +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleA( + HANDLE hConsoleInput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToRead, + LPDWORD lpNumberOfCharsRead, + LPVOID lpReserved); +extern(Windows) export BOOL ReadConsoleW( + HANDLE hConsoleInput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToRead, + LPDWORD lpNumberOfCharsRead, + LPVOID lpReserved); +// #ifdef UNICODE +// #... +// #else +alias ReadConsoleA ReadConsole; +// #endif // !UNICODE + +extern(Windows) export BOOL WriteConsoleA( + HANDLE hConsoleOutput, + VOID *lpBuffer, + DWORD nNumberOfCharsToWrite, + LPDWORD lpNumberOfCharsWritten, + LPVOID lpReserved); +extern(Windows) export BOOL WriteConsoleW( + HANDLE hConsoleOutput, + VOID *lpBuffer, + DWORD nNumberOfCharsToWrite, + LPDWORD lpNumberOfCharsWritten, + LPVOID lpReserved); +// #ifdef UNICODE +// #... +// #else +alias WriteConsoleA WriteConsole; +// #endif // !UNICODE + +enum : uint { CONSOLE_TEXTMODE_BUFFER = 1 } + +extern(Windows) export HANDLE CreateConsoleScreenBuffer( + DWORD dwDesiredAccess, + DWORD dwShareMode, + SECURITY_ATTRIBUTES *lpSecurityAttributes, + DWORD dwFlags, + LPVOID lpScreenBufferData); + +extern(Windows) export UINT GetConsoleCP(); + +extern(Windows) export BOOL SetConsoleCP( + UINT wCodePageID); + +extern(Windows) export UINT GetConsoleOutputCP(); + +extern(Windows) export BOOL SetConsoleOutputCP( + UINT wCodePageID); + +// #if(_WIN32_WINNT >= 0x0500) + +enum : uint { CONSOLE_FULLSCREEN = 1 } +enum : uint { CONSOLE_FULLSCREEN_HARDWARE = 2 } + +extern(Windows) export BOOL GetConsoleDisplayMode( + LPDWORD lpModeFlags); + +extern(Windows) export HWND GetConsoleWindow(); + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) + +extern(Windows) export DWORD GetConsoleProcessList( + LPDWORD lpdwProcessList, + DWORD dwProcessCount); +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINCON_ + ADDED src/win32/ansi/windef.d Index: src/win32/ansi/windef.d ================================================================== --- src/win32/ansi/windef.d +++ src/win32/ansi/windef.d @@ -0,0 +1,394 @@ +module win32.ansi.windef; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +alias void* va_list; +alias long __int64; +alias ulong DWORD64; +alias uint SIZE_T; +alias SIZE_T* PSIZE_T; +alias int INT_PTR; +alias uint UINT_PTR; +alias uint LONG_PTR; +alias uint ULONG_PTR; +alias uint DWORD_PTR; +alias DWORD_PTR* PDWORD_PTR; +alias UINT_PTR* PUINT_PTR; +alias ULONG_PTR* PULONG_PTR; +enum : UINT { UINT_MAX = UINT.max } + +// #ifndef _WINDEF_ +// #define _WINDEF_ + +// #ifndef NO_STRICT +// #ifndef STRICT +// #... +// #endif +// #endif /* NO_STRICT */ + +// #ifdef _MAC +// #ifndef _WIN32 +// #... +// #endif +// #endif //_MAC + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef WINVER +// #... +// #endif /* WINVER */ + +// #ifndef BASETYPES +// #define BASETYPES +alias uint ULONG; +alias ULONG* PULONG; +alias ushort USHORT; +alias USHORT* PUSHORT; +alias ubyte UCHAR; +alias UCHAR* PUCHAR; +alias char* PSZ; +// #endif /* !BASETYPES */ + +enum : uint { MAX_PATH = 260 } + +// #ifndef NULL +// #ifdef __cplusplus +const void* NULL = null; +// #else +// #... +// #endif +// #endif + +// #ifndef FALSE +enum : uint { FALSE = 0 } +// #endif + +// #ifndef TRUE +enum : uint { TRUE = 1 } +// #endif + +// #ifndef IN +// #define IN +// #endif + +// #ifndef OUT +// #define OUT +// #endif + +// #ifndef OPTIONAL +// #define OPTIONAL +// #endif + +// #undef far +// #undef near +// #undef pascal + +// #define far +// #define near +// #if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)) +// #define pascal __stdcall +// #else +// #... +// #endif + +// #if defined(DOSWIN32) || defined(_MAC) +// #... +// #ifndef CDECL +// #... +// #endif +// #else +// #define cdecl +// #ifndef CDECL +// #define CDECL +// #endif +// #endif + +// #ifdef _MAC +// #... +// #... +// #... +// #... +// #... +// #ifdef _68K_ +// #... +// #else +// #... +// #endif +// #elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) +// #define CALLBACK __stdcall +// #define WINAPI __stdcall +// #define WINAPIV __cdecl +// #define APIENTRY WINAPI +// #define APIPRIVATE __stdcall +// #define PASCAL __stdcall +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +// #undef FAR +// #undef NEAR +// #define FAR far +// #define NEAR near +// #ifndef CONST +// #define CONST const +// #endif + +alias uint DWORD; +alias int BOOL; +alias ubyte BYTE; +alias ushort WORD; +alias float FLOAT; +alias FLOAT* PFLOAT; +alias BOOL* PBOOL; +alias BOOL* LPBOOL; +alias BYTE* PBYTE; +alias BYTE* LPBYTE; +alias int* PINT; +alias int* LPINT; +alias WORD* PWORD; +alias WORD* LPWORD; +alias int* LPLONG; +alias DWORD* PDWORD; +alias DWORD* LPDWORD; +alias void* LPVOID; +alias void* LPCVOID; + +alias int INT; +alias uint UINT; +alias uint* PUINT; + +// #ifndef NT_INCLUDED +import win32.ansi.winnt; +// #endif /* NT_INCLUDED */ + +alias UINT_PTR WPARAM; +alias LONG_PTR LPARAM; +alias LONG_PTR LRESULT; + +// #ifndef NOMINMAX + +// #ifndef max +int max(int a, int b){ return (a > b)? a : b; } +uint max(uint a, uint b){ return (a > b)? a : b; } +real max(real a, real b){ return (a > b)? a : b; } +// #endif + +// #ifndef min +int min(int a, int b){ return (a < b)? a : b; } +uint min(uint a, uint b){ return (a < b)? a : b; } +real min(real a, real b){ return (a < b)? a : b; } +// #endif + +// #endif /* NOMINMAX */ + +ushort MAKEWORD(byte a, byte b){ return (a & 0xff) | ((b & 0xff) << 8); } +uint MAKELONG(ushort a, ushort b){ return (a & 0xffff) | ((b & 0xffff) << 16); } +ushort LOWORD(uint l){ return l & 0xffff; } +ushort HIWORD(uint l){ return l >>> 16; } +ubyte LOBYTE(ushort l){ return l & 0xff; } +ubyte HIBYTE(ushort l){ return l >>> 8; } + +// #ifndef WIN_INTERNAL +alias void* HWND; +alias void* HHOOK; +// #ifdef WINABLE +// ... +// #endif +// #endif + +alias WORD ATOM; + +alias HANDLE* SPHANDLE; +alias HANDLE* LPHANDLE; +alias HANDLE HGLOBAL; +alias HANDLE HLOCAL; +alias HANDLE GLOBALHANDLE; +alias HANDLE LOCALHANDLE; +// #ifndef _MAC +// #ifdef _WIN64 +// ... +// #else +extern(Windows) alias int function() FARPROC; +extern(Windows) alias int function() NEARPROC; +extern(Windows) alias int function() PROC; +// #endif // _WIN64 +// #else +// ... +// #endif + +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +// #ifdef STRICT +alias void* HGDIOBJ; +// #else +// ... +// #endif +// #endif + +alias void* HKEY; +alias HKEY* PHKEY; + +// #if !defined(_MAC) || !defined(WIN_INTERNAL) +alias void* HACCEL; +// #endif +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +alias void* HBITMAP; +alias void* HBRUSH; +// #endif +// #if(WINVER >= 0x0400) +alias void* HCOLORSPACE; +// #endif /* WINVER >= 0x0400 */ +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +alias void* HDC; +// #endif +alias void* HGLRC; +alias void* HDESK; +alias void* HENHMETAFILE; +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +alias void* HFONT; +// #endif +alias void* HICON; +// #if !defined(_MAC) || !defined(WIN_INTERNAL) +alias void* HMENU; +// #endif +alias void* HMETAFILE; +alias void* HINSTANCE; +alias HINSTANCE HMODULE; +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +alias void* HPALETTE; +alias void* HPEN; +// #endif +alias void* HRGN; +alias void* HRSRC; +alias void* HSTR; +alias void* HTASK; +alias void* HWINSTA; +alias void* HKL; + +// #if(WINVER >= 0x0500) +// #ifndef _MAC +alias void* HMONITOR; +alias void* HWINEVENTHOOK; +// #endif +alias void* HUMPD; +// #endif /* WINVER >= 0x0500 */ + +// #ifndef _MAC +alias int HFILE; +alias HICON HCURSOR; +// #else +// ... +// #endif + +alias DWORD COLORREF; +alias DWORD* LPCOLORREF; + +const HFILE HFILE_ERROR = -1; + +struct tagRECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} +alias tagRECT RECT; +alias tagRECT* PRECT; +alias tagRECT* NPRECT; +alias tagRECT* LPRECT; + +alias RECT* LPCRECT; + +struct _RECTL { + LONG left; + LONG top; + LONG right; + LONG bottom; +} +alias _RECTL RECTL; +alias _RECTL* PRECTL; +alias _RECTL* LPRECTL; + +alias RECTL* LPCRECTL; + +struct tagPOINT { + LONG x; + LONG y; +} +alias tagPOINT POINT; +alias tagPOINT* PPOINT; +alias tagPOINT* NPPOINT; +alias tagPOINT* LPPOINT; + +struct _POINTL { + LONG x; + LONG y; +} +alias _POINTL POINTL; +alias _POINTL* PPOINTL; + +struct tagSIZE { + LONG cx; + LONG cy; +} +alias tagSIZE SIZE; +alias tagSIZE* PSIZE; +alias tagSIZE* LPSIZE; + +alias SIZE SIZEL; +alias SIZE* PSIZEL; +alias SIZE* LPSIZEL; + +struct tagPOINTS { +// #ifndef _MAC + SHORT x; + SHORT y; +// #else +// ... +// #endif +} +alias tagPOINTS POINTS; +alias tagPOINTS* PPOINTS; +alias tagPOINTS* LPPOINTS; + +enum : uint { DM_UPDATE = 1 } +enum : uint { DM_COPY = 2 } +enum : uint { DM_PROMPT = 4 } +enum : uint { DM_MODIFY = 8 } + +alias DM_MODIFY DM_IN_BUFFER; +alias DM_PROMPT DM_IN_PROMPT; +alias DM_COPY DM_OUT_BUFFER; +alias DM_UPDATE DM_OUT_DEFAULT; + +enum : uint { DC_FIELDS = 1 } +enum : uint { DC_PAPERS = 2 } +enum : uint { DC_PAPERSIZE = 3 } +enum : uint { DC_MINEXTENT = 4 } +enum : uint { DC_MAXEXTENT = 5 } +enum : uint { DC_BINS = 6 } +enum : uint { DC_DUPLEX = 7 } +enum : uint { DC_SIZE = 8 } +enum : uint { DC_EXTRA = 9 } +enum : uint { DC_VERSION = 10 } +enum : uint { DC_DRIVER = 11 } +enum : uint { DC_BINNAMES = 12 } +enum : uint { DC_ENUMRESOLUTIONS = 13 } +enum : uint { DC_FILEDEPENDENCIES = 14 } +enum : uint { DC_TRUETYPE = 15 } +enum : uint { DC_PAPERNAMES = 16 } +enum : uint { DC_ORIENTATION = 17 } +enum : uint { DC_COPIES = 18 } + +// #ifdef __cplusplus +// } +// #endif + +// #endif /* _WINDEF_ */ + ADDED src/win32/ansi/windows.d Index: src/win32/ansi/windows.d ================================================================== --- src/win32/ansi/windows.d +++ src/win32/ansi/windows.d @@ -0,0 +1,202 @@ +module win32.ansi.windows; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + + +// #ifndef _WINDOWS_ +// #define _WINDOWS_ + +// #ifndef WINVER +// #... +// #else +// #if defined(_WIN32_WINNT) && (WINVER < 0x0400) && (_WIN32_WINNT > 0x0400) +// #... +// #endif +// #endif + +// #ifndef _INC_WINDOWS +// #define _INC_WINDOWS + +// #if defined (_MSC_VER) && (_MSC_VER >= 1020) +// #pragma once +// #endif + +// #if defined(RC_INVOKED) && !defined(NOWINRES) + +// #... + +// #else + +// #if defined(RC_INVOKED) + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_IX86) +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_AMD64) +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_M68K) +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_MPPC) +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_M_IX86) && !defined(_AMD64_) && defined(_M_IA64) +// #if !defined(_IA64_) +// #... +// #endif // !_IA64_ +// #endif + +// #ifndef _MAC +// #if defined(_68K_) || defined(_MPPC_) +// #... +// #endif +// #endif + +// #if defined (_MSC_VER) +// #if ( _MSC_VER >= 800 ) +// #ifndef __cplusplus +// #... + +// #endif +// #endif +// #endif + +// #ifndef RC_INVOKED +// #if ( _MSC_VER >= 800 ) +// #pragma warning(disable:4514) +// #ifndef __WINDOWS_DONT_DISABLE_PRAGMA_PACK_WARNING__ +// #pragma warning(disable:4103) +// #endif +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning(disable:4001) +// #pragma warning(disable:4201) +// #pragma warning(disable:4214) +// #endif +// #include +// #include +// #endif /* RC_INVOKED */ + +import win32.ansi.windef; +import win32.ansi.winbase; +import win32.ansi.wingdi; +import win32.ansi.winuser; +// #if !defined(_MAC) || defined(_WIN32NLS) +import win32.ansi.winnls; +// #endif +// #ifndef _MAC +import win32.ansi.wincon; +import win32.ansi.winver; +// #endif +// #if !defined(_MAC) || defined(_WIN32REG) +import win32.ansi.winreg; +// #endif +// #ifndef _MAC +// #include +// #endif + +// #ifndef WIN32_LEAN_AND_MEAN +// #include +import win32.ansi.dde; +import win32.ansi.ddeml; +import win32.ansi.dlgs; +// #ifndef _MAC +// #include +import win32.ansi.mmsystem; +// #include +// #include +// #endif +import win32.ansi.shellapi; +// #ifndef _MAC +// #include +// #include +// #endif +// #ifndef NOCRYPT +// #... +// #... +// #... +// #endif + +// #ifndef NOGDI +// #ifndef _MAC +import win32.ansi.winspool; +// #ifdef INC_OLE1 +// #... +// #else +// #include +// #endif /* !INC_OLE1 */ +// #endif /* !MAC */ +import win32.ansi.commdlg; +// #endif /* !NOGDI */ +// #endif /* WIN32_LEAN_AND_MEAN */ + +// #include + +// #ifdef _MAC +// #... +// #endif + +// #ifdef INC_OLE2 +// #... +// #endif /* INC_OLE2 */ + +// #ifndef _MAC +// #ifndef NOSERVICE +// #... +// #endif + +// #if(WINVER >= 0x0400) +// #ifndef NOMCX +// #... +// #endif /* NOMCX */ + +// #ifndef NOIME +import win32.ansi.imm; +// #endif +// #endif /* WINVER >= 0x0400 */ +// #endif + +// #ifndef RC_INVOKED +// #if ( _MSC_VER >= 800 ) +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #... +// #... + +// #endif +// #endif +// #endif /* RC_INVOKED */ + +// #endif /* RC_INVOKED */ + +// #endif /* _INC_WINDOWS */ +// #endif /* _WINDOWS_ */ + ADDED src/win32/ansi/winerror.d Index: src/win32/ansi/winerror.d ================================================================== --- src/win32/ansi/winerror.d +++ src/win32/ansi/winerror.d @@ -0,0 +1,5953 @@ +module win32.ansi.winerror; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winnt; + +// #ifndef _WINERROR_ +// #define _WINERROR_ + +// #if defined (_MSC_VER) && (_MSC_VER >= 1020) && !defined(__midl) +// #pragma once +// #endif + +enum : uint { FACILITY_WINDOWS_CE = 24 } +enum : uint { FACILITY_WINDOWS = 8 } +enum : uint { FACILITY_URT = 19 } +enum : uint { FACILITY_UMI = 22 } +enum : uint { FACILITY_SXS = 23 } +enum : uint { FACILITY_STORAGE = 3 } +enum : uint { FACILITY_SSPI = 9 } +enum : uint { FACILITY_SCARD = 16 } +enum : uint { FACILITY_SETUPAPI = 15 } +enum : uint { FACILITY_SECURITY = 9 } +enum : uint { FACILITY_RPC = 1 } +enum : uint { FACILITY_WIN32 = 7 } +enum : uint { FACILITY_CONTROL = 10 } +enum : uint { FACILITY_NULL = 0 } +enum : uint { FACILITY_MSMQ = 14 } +enum : uint { FACILITY_MEDIASERVER = 13 } +enum : uint { FACILITY_INTERNET = 12 } +enum : uint { FACILITY_ITF = 4 } +enum : uint { FACILITY_HTTP = 25 } +enum : uint { FACILITY_DPLAY = 21 } +enum : uint { FACILITY_DISPATCH = 2 } +enum : uint { FACILITY_CONFIGURATION = 33 } +enum : uint { FACILITY_COMPLUS = 17 } +enum : uint { FACILITY_CERT = 11 } +enum : uint { FACILITY_BACKGROUNDCOPY = 32 } +enum : uint { FACILITY_ACS = 20 } +enum : uint { FACILITY_AAF = 18 } + +enum : uint { ERROR_SUCCESS = 0 } + +enum : uint { NO_ERROR = 0 } +enum : HRESULT { SEC_E_OK = cast(HRESULT)0x00000000 } + +enum : uint { ERROR_INVALID_FUNCTION = 1 } + +enum : uint { ERROR_FILE_NOT_FOUND = 2 } + +enum : uint { ERROR_PATH_NOT_FOUND = 3 } + +enum : uint { ERROR_TOO_MANY_OPEN_FILES = 4 } + +enum : uint { ERROR_ACCESS_DENIED = 5 } + +enum : uint { ERROR_INVALID_HANDLE = 6 } + +enum : uint { ERROR_ARENA_TRASHED = 7 } + +enum : uint { ERROR_NOT_ENOUGH_MEMORY = 8 } + +enum : uint { ERROR_INVALID_BLOCK = 9 } + +enum : uint { ERROR_BAD_ENVIRONMENT = 10 } + +enum : uint { ERROR_BAD_FORMAT = 11 } + +enum : uint { ERROR_INVALID_ACCESS = 12 } + +enum : uint { ERROR_INVALID_DATA = 13 } + +enum : uint { ERROR_OUTOFMEMORY = 14 } + +enum : uint { ERROR_INVALID_DRIVE = 15 } + +enum : uint { ERROR_CURRENT_DIRECTORY = 16 } + +enum : uint { ERROR_NOT_SAME_DEVICE = 17 } + +enum : uint { ERROR_NO_MORE_FILES = 18 } + +enum : uint { ERROR_WRITE_PROTECT = 19 } + +enum : uint { ERROR_BAD_UNIT = 20 } + +enum : uint { ERROR_NOT_READY = 21 } + +enum : uint { ERROR_BAD_COMMAND = 22 } + +enum : uint { ERROR_CRC = 23 } + +enum : uint { ERROR_BAD_LENGTH = 24 } + +enum : uint { ERROR_SEEK = 25 } + +enum : uint { ERROR_NOT_DOS_DISK = 26 } + +enum : uint { ERROR_SECTOR_NOT_FOUND = 27 } + +enum : uint { ERROR_OUT_OF_PAPER = 28 } + +enum : uint { ERROR_WRITE_FAULT = 29 } + +enum : uint { ERROR_READ_FAULT = 30 } + +enum : uint { ERROR_GEN_FAILURE = 31 } + +enum : uint { ERROR_SHARING_VIOLATION = 32 } + +enum : uint { ERROR_LOCK_VIOLATION = 33 } + +enum : uint { ERROR_WRONG_DISK = 34 } + +enum : uint { ERROR_SHARING_BUFFER_EXCEEDED = 36 } + +enum : uint { ERROR_HANDLE_EOF = 38 } + +enum : uint { ERROR_HANDLE_DISK_FULL = 39 } + +enum : uint { ERROR_NOT_SUPPORTED = 50 } + +enum : uint { ERROR_REM_NOT_LIST = 51 } + +enum : uint { ERROR_DUP_NAME = 52 } + +enum : uint { ERROR_BAD_NETPATH = 53 } + +enum : uint { ERROR_NETWORK_BUSY = 54 } + +enum : uint { ERROR_DEV_NOT_EXIST = 55 } + +enum : uint { ERROR_TOO_MANY_CMDS = 56 } + +enum : uint { ERROR_ADAP_HDW_ERR = 57 } + +enum : uint { ERROR_BAD_NET_RESP = 58 } + +enum : uint { ERROR_UNEXP_NET_ERR = 59 } + +enum : uint { ERROR_BAD_REM_ADAP = 60 } + +enum : uint { ERROR_PRINTQ_FULL = 61 } + +enum : uint { ERROR_NO_SPOOL_SPACE = 62 } + +enum : uint { ERROR_PRINT_CANCELLED = 63 } + +enum : uint { ERROR_NETNAME_DELETED = 64 } + +enum : uint { ERROR_NETWORK_ACCESS_DENIED = 65 } + +enum : uint { ERROR_BAD_DEV_TYPE = 66 } + +enum : uint { ERROR_BAD_NET_NAME = 67 } + +enum : uint { ERROR_TOO_MANY_NAMES = 68 } + +enum : uint { ERROR_TOO_MANY_SESS = 69 } + +enum : uint { ERROR_SHARING_PAUSED = 70 } + +enum : uint { ERROR_REQ_NOT_ACCEP = 71 } + +enum : uint { ERROR_REDIR_PAUSED = 72 } + +enum : uint { ERROR_FILE_EXISTS = 80 } + +enum : uint { ERROR_CANNOT_MAKE = 82 } + +enum : uint { ERROR_FAIL_I24 = 83 } + +enum : uint { ERROR_OUT_OF_STRUCTURES = 84 } + +enum : uint { ERROR_ALREADY_ASSIGNED = 85 } + +enum : uint { ERROR_INVALID_PASSWORD = 86 } + +enum : uint { ERROR_INVALID_PARAMETER = 87 } + +enum : uint { ERROR_NET_WRITE_FAULT = 88 } + +enum : uint { ERROR_NO_PROC_SLOTS = 89 } + +enum : uint { ERROR_TOO_MANY_SEMAPHORES = 100 } + +enum : uint { ERROR_EXCL_SEM_ALREADY_OWNED = 101 } + +enum : uint { ERROR_SEM_IS_SET = 102 } + +enum : uint { ERROR_TOO_MANY_SEM_REQUESTS = 103 } + +enum : uint { ERROR_INVALID_AT_INTERRUPT_TIME = 104 } + +enum : uint { ERROR_SEM_OWNER_DIED = 105 } + +enum : uint { ERROR_SEM_USER_LIMIT = 106 } + +enum : uint { ERROR_DISK_CHANGE = 107 } + +enum : uint { ERROR_DRIVE_LOCKED = 108 } + +enum : uint { ERROR_BROKEN_PIPE = 109 } + +enum : uint { ERROR_OPEN_FAILED = 110 } + +enum : uint { ERROR_BUFFER_OVERFLOW = 111 } + +enum : uint { ERROR_DISK_FULL = 112 } + +enum : uint { ERROR_NO_MORE_SEARCH_HANDLES = 113 } + +enum : uint { ERROR_INVALID_TARGET_HANDLE = 114 } + +enum : uint { ERROR_INVALID_CATEGORY = 117 } + +enum : uint { ERROR_INVALID_VERIFY_SWITCH = 118 } + +enum : uint { ERROR_BAD_DRIVER_LEVEL = 119 } + +enum : uint { ERROR_CALL_NOT_IMPLEMENTED = 120 } + +enum : uint { ERROR_SEM_TIMEOUT = 121 } + +enum : uint { ERROR_INSUFFICIENT_BUFFER = 122 } + +enum : uint { ERROR_INVALID_NAME = 123 } + +enum : uint { ERROR_INVALID_LEVEL = 124 } + +enum : uint { ERROR_NO_VOLUME_LABEL = 125 } + +enum : uint { ERROR_MOD_NOT_FOUND = 126 } + +enum : uint { ERROR_PROC_NOT_FOUND = 127 } + +enum : uint { ERROR_WAIT_NO_CHILDREN = 128 } + +enum : uint { ERROR_CHILD_NOT_COMPLETE = 129 } + +enum : uint { ERROR_DIRECT_ACCESS_HANDLE = 130 } + +enum : uint { ERROR_NEGATIVE_SEEK = 131 } + +enum : uint { ERROR_SEEK_ON_DEVICE = 132 } + +enum : uint { ERROR_IS_JOIN_TARGET = 133 } + +enum : uint { ERROR_IS_JOINED = 134 } + +enum : uint { ERROR_IS_SUBSTED = 135 } + +enum : uint { ERROR_NOT_JOINED = 136 } + +enum : uint { ERROR_NOT_SUBSTED = 137 } + +enum : uint { ERROR_JOIN_TO_JOIN = 138 } + +enum : uint { ERROR_SUBST_TO_SUBST = 139 } + +enum : uint { ERROR_JOIN_TO_SUBST = 140 } + +enum : uint { ERROR_SUBST_TO_JOIN = 141 } + +enum : uint { ERROR_BUSY_DRIVE = 142 } + +enum : uint { ERROR_SAME_DRIVE = 143 } + +enum : uint { ERROR_DIR_NOT_ROOT = 144 } + +enum : uint { ERROR_DIR_NOT_EMPTY = 145 } + +enum : uint { ERROR_IS_SUBST_PATH = 146 } + +enum : uint { ERROR_IS_JOIN_PATH = 147 } + +enum : uint { ERROR_PATH_BUSY = 148 } + +enum : uint { ERROR_IS_SUBST_TARGET = 149 } + +enum : uint { ERROR_SYSTEM_TRACE = 150 } + +enum : uint { ERROR_INVALID_EVENT_COUNT = 151 } + +enum : uint { ERROR_TOO_MANY_MUXWAITERS = 152 } + +enum : uint { ERROR_INVALID_LIST_FORMAT = 153 } + +enum : uint { ERROR_LABEL_TOO_LONG = 154 } + +enum : uint { ERROR_TOO_MANY_TCBS = 155 } + +enum : uint { ERROR_SIGNAL_REFUSED = 156 } + +enum : uint { ERROR_DISCARDED = 157 } + +enum : uint { ERROR_NOT_LOCKED = 158 } + +enum : uint { ERROR_BAD_THREADID_ADDR = 159 } + +enum : uint { ERROR_BAD_ARGUMENTS = 160 } + +enum : uint { ERROR_BAD_PATHNAME = 161 } + +enum : uint { ERROR_SIGNAL_PENDING = 162 } + +enum : uint { ERROR_MAX_THRDS_REACHED = 164 } + +enum : uint { ERROR_LOCK_FAILED = 167 } + +enum : uint { ERROR_BUSY = 170 } + +enum : uint { ERROR_CANCEL_VIOLATION = 173 } + +enum : uint { ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = 174 } + +enum : uint { ERROR_INVALID_SEGMENT_NUMBER = 180 } + +enum : uint { ERROR_INVALID_ORDINAL = 182 } + +enum : uint { ERROR_ALREADY_EXISTS = 183 } + +enum : uint { ERROR_INVALID_FLAG_NUMBER = 186 } + +enum : uint { ERROR_SEM_NOT_FOUND = 187 } + +enum : uint { ERROR_INVALID_STARTING_CODESEG = 188 } + +enum : uint { ERROR_INVALID_STACKSEG = 189 } + +enum : uint { ERROR_INVALID_MODULETYPE = 190 } + +enum : uint { ERROR_INVALID_EXE_SIGNATURE = 191 } + +enum : uint { ERROR_EXE_MARKED_INVALID = 192 } + +enum : uint { ERROR_BAD_EXE_FORMAT = 193 } + +enum : uint { ERROR_ITERATED_DATA_EXCEEDS_64k = 194 } + +enum : uint { ERROR_INVALID_MINALLOCSIZE = 195 } + +enum : uint { ERROR_DYNLINK_FROM_INVALID_RING = 196 } + +enum : uint { ERROR_IOPL_NOT_ENABLED = 197 } + +enum : uint { ERROR_INVALID_SEGDPL = 198 } + +enum : uint { ERROR_AUTODATASEG_EXCEEDS_64k = 199 } + +enum : uint { ERROR_RING2SEG_MUST_BE_MOVABLE = 200 } + +enum : uint { ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201 } + +enum : uint { ERROR_INFLOOP_IN_RELOC_CHAIN = 202 } + +enum : uint { ERROR_ENVVAR_NOT_FOUND = 203 } + +enum : uint { ERROR_NO_SIGNAL_SENT = 205 } + +enum : uint { ERROR_FILENAME_EXCED_RANGE = 206 } + +enum : uint { ERROR_RING2_STACK_IN_USE = 207 } + +enum : uint { ERROR_META_EXPANSION_TOO_LONG = 208 } + +enum : uint { ERROR_INVALID_SIGNAL_NUMBER = 209 } + +enum : uint { ERROR_THREAD_1_INACTIVE = 210 } + +enum : uint { ERROR_LOCKED = 212 } + +enum : uint { ERROR_TOO_MANY_MODULES = 214 } + +enum : uint { ERROR_NESTING_NOT_ALLOWED = 215 } + +enum : uint { ERROR_EXE_MACHINE_TYPE_MISMATCH = 216 } + +enum : uint { ERROR_BAD_PIPE = 230 } + +enum : uint { ERROR_PIPE_BUSY = 231 } + +enum : uint { ERROR_NO_DATA = 232 } + +enum : uint { ERROR_PIPE_NOT_CONNECTED = 233 } + +enum : uint { ERROR_MORE_DATA = 234 } + +enum : uint { ERROR_VC_DISCONNECTED = 240 } + +enum : uint { ERROR_INVALID_EA_NAME = 254 } + +enum : uint { ERROR_EA_LIST_INCONSISTENT = 255 } + +enum : uint { WAIT_TIMEOUT = 258 } + +enum : uint { ERROR_NO_MORE_ITEMS = 259 } + +enum : uint { ERROR_CANNOT_COPY = 266 } + +enum : uint { ERROR_DIRECTORY = 267 } + +enum : uint { ERROR_EAS_DIDNT_FIT = 275 } + +enum : uint { ERROR_EA_FILE_CORRUPT = 276 } + +enum : uint { ERROR_EA_TABLE_FULL = 277 } + +enum : uint { ERROR_INVALID_EA_HANDLE = 278 } + +enum : uint { ERROR_EAS_NOT_SUPPORTED = 282 } + +enum : uint { ERROR_NOT_OWNER = 288 } + +enum : uint { ERROR_TOO_MANY_POSTS = 298 } + +enum : uint { ERROR_PARTIAL_COPY = 299 } + +enum : uint { ERROR_OPLOCK_NOT_GRANTED = 300 } + +enum : uint { ERROR_INVALID_OPLOCK_PROTOCOL = 301 } + +enum : uint { ERROR_DISK_TOO_FRAGMENTED = 302 } + +enum : uint { ERROR_DELETE_PENDING = 303 } + +enum : uint { ERROR_MR_MID_NOT_FOUND = 317 } + +enum : uint { ERROR_INVALID_ADDRESS = 487 } + +enum : uint { ERROR_ARITHMETIC_OVERFLOW = 534 } + +enum : uint { ERROR_PIPE_CONNECTED = 535 } + +enum : uint { ERROR_PIPE_LISTENING = 536 } + +enum : uint { ERROR_EA_ACCESS_DENIED = 994 } + +enum : uint { ERROR_OPERATION_ABORTED = 995 } + +enum : uint { ERROR_IO_INCOMPLETE = 996 } + +enum : uint { ERROR_IO_PENDING = 997 } + +enum : uint { ERROR_NOACCESS = 998 } + +enum : uint { ERROR_SWAPERROR = 999 } + +enum : uint { ERROR_STACK_OVERFLOW = 1001 } + +enum : uint { ERROR_INVALID_MESSAGE = 1002 } + +enum : uint { ERROR_CAN_NOT_COMPLETE = 1003 } + +enum : uint { ERROR_INVALID_FLAGS = 1004 } + +enum : uint { ERROR_UNRECOGNIZED_VOLUME = 1005 } + +enum : uint { ERROR_FILE_INVALID = 1006 } + +enum : uint { ERROR_FULLSCREEN_MODE = 1007 } + +enum : uint { ERROR_NO_TOKEN = 1008 } + +enum : uint { ERROR_BADDB = 1009 } + +enum : uint { ERROR_BADKEY = 1010 } + +enum : uint { ERROR_CANTOPEN = 1011 } + +enum : uint { ERROR_CANTREAD = 1012 } + +enum : uint { ERROR_CANTWRITE = 1013 } + +enum : uint { ERROR_REGISTRY_RECOVERED = 1014 } + +enum : uint { ERROR_REGISTRY_CORRUPT = 1015 } + +enum : uint { ERROR_REGISTRY_IO_FAILED = 1016 } + +enum : uint { ERROR_NOT_REGISTRY_FILE = 1017 } + +enum : uint { ERROR_KEY_DELETED = 1018 } + +enum : uint { ERROR_NO_LOG_SPACE = 1019 } + +enum : uint { ERROR_KEY_HAS_CHILDREN = 1020 } + +enum : uint { ERROR_CHILD_MUST_BE_VOLATILE = 1021 } + +enum : uint { ERROR_NOTIFY_ENUM_DIR = 1022 } + +enum : uint { ERROR_DEPENDENT_SERVICES_RUNNING = 1051 } + +enum : uint { ERROR_INVALID_SERVICE_CONTROL = 1052 } + +enum : uint { ERROR_SERVICE_REQUEST_TIMEOUT = 1053 } + +enum : uint { ERROR_SERVICE_NO_THREAD = 1054 } + +enum : uint { ERROR_SERVICE_DATABASE_LOCKED = 1055 } + +enum : uint { ERROR_SERVICE_ALREADY_RUNNING = 1056 } + +enum : uint { ERROR_INVALID_SERVICE_ACCOUNT = 1057 } + +enum : uint { ERROR_SERVICE_DISABLED = 1058 } + +enum : uint { ERROR_CIRCULAR_DEPENDENCY = 1059 } + +enum : uint { ERROR_SERVICE_DOES_NOT_EXIST = 1060 } + +enum : uint { ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061 } + +enum : uint { ERROR_SERVICE_NOT_ACTIVE = 1062 } + +enum : uint { ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063 } + +enum : uint { ERROR_EXCEPTION_IN_SERVICE = 1064 } + +enum : uint { ERROR_DATABASE_DOES_NOT_EXIST = 1065 } + +enum : uint { ERROR_SERVICE_SPECIFIC_ERROR = 1066 } + +enum : uint { ERROR_PROCESS_ABORTED = 1067 } + +enum : uint { ERROR_SERVICE_DEPENDENCY_FAIL = 1068 } + +enum : uint { ERROR_SERVICE_LOGON_FAILED = 1069 } + +enum : uint { ERROR_SERVICE_START_HANG = 1070 } + +enum : uint { ERROR_INVALID_SERVICE_LOCK = 1071 } + +enum : uint { ERROR_SERVICE_MARKED_FOR_DELETE = 1072 } + +enum : uint { ERROR_SERVICE_EXISTS = 1073 } + +enum : uint { ERROR_ALREADY_RUNNING_LKG = 1074 } + +enum : uint { ERROR_SERVICE_DEPENDENCY_DELETED = 1075 } + +enum : uint { ERROR_BOOT_ALREADY_ACCEPTED = 1076 } + +enum : uint { ERROR_SERVICE_NEVER_STARTED = 1077 } + +enum : uint { ERROR_DUPLICATE_SERVICE_NAME = 1078 } + +enum : uint { ERROR_DIFFERENT_SERVICE_ACCOUNT = 1079 } + +enum : uint { ERROR_CANNOT_DETECT_DRIVER_FAILURE = 1080 } + +enum : uint { ERROR_CANNOT_DETECT_PROCESS_ABORT = 1081 } + +enum : uint { ERROR_NO_RECOVERY_PROGRAM = 1082 } + +enum : uint { ERROR_SERVICE_NOT_IN_EXE = 1083 } + +enum : uint { ERROR_NOT_SAFEBOOT_SERVICE = 1084 } + +enum : uint { ERROR_END_OF_MEDIA = 1100 } + +enum : uint { ERROR_FILEMARK_DETECTED = 1101 } + +enum : uint { ERROR_BEGINNING_OF_MEDIA = 1102 } + +enum : uint { ERROR_SETMARK_DETECTED = 1103 } + +enum : uint { ERROR_NO_DATA_DETECTED = 1104 } + +enum : uint { ERROR_PARTITION_FAILURE = 1105 } + +enum : uint { ERROR_INVALID_BLOCK_LENGTH = 1106 } + +enum : uint { ERROR_DEVICE_NOT_PARTITIONED = 1107 } + +enum : uint { ERROR_UNABLE_TO_LOCK_MEDIA = 1108 } + +enum : uint { ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109 } + +enum : uint { ERROR_MEDIA_CHANGED = 1110 } + +enum : uint { ERROR_BUS_RESET = 1111 } + +enum : uint { ERROR_NO_MEDIA_IN_DRIVE = 1112 } + +enum : uint { ERROR_NO_UNICODE_TRANSLATION = 1113 } + +enum : uint { ERROR_DLL_INIT_FAILED = 1114 } + +enum : uint { ERROR_SHUTDOWN_IN_PROGRESS = 1115 } + +enum : uint { ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116 } + +enum : uint { ERROR_IO_DEVICE = 1117 } + +enum : uint { ERROR_SERIAL_NO_DEVICE = 1118 } + +enum : uint { ERROR_IRQ_BUSY = 1119 } + +enum : uint { ERROR_MORE_WRITES = 1120 } + +enum : uint { ERROR_COUNTER_TIMEOUT = 1121 } + +enum : uint { ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122 } + +enum : uint { ERROR_FLOPPY_WRONG_CYLINDER = 1123 } + +enum : uint { ERROR_FLOPPY_UNKNOWN_ERROR = 1124 } + +enum : uint { ERROR_FLOPPY_BAD_REGISTERS = 1125 } + +enum : uint { ERROR_DISK_RECALIBRATE_FAILED = 1126 } + +enum : uint { ERROR_DISK_OPERATION_FAILED = 1127 } + +enum : uint { ERROR_DISK_RESET_FAILED = 1128 } + +enum : uint { ERROR_EOM_OVERFLOW = 1129 } + +enum : uint { ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130 } + +enum : uint { ERROR_POSSIBLE_DEADLOCK = 1131 } + +enum : uint { ERROR_MAPPED_ALIGNMENT = 1132 } + +enum : uint { ERROR_SET_POWER_STATE_VETOED = 1140 } + +enum : uint { ERROR_SET_POWER_STATE_FAILED = 1141 } + +enum : uint { ERROR_TOO_MANY_LINKS = 1142 } + +enum : uint { ERROR_OLD_WIN_VERSION = 1150 } + +enum : uint { ERROR_APP_WRONG_OS = 1151 } + +enum : uint { ERROR_SINGLE_INSTANCE_APP = 1152 } + +enum : uint { ERROR_RMODE_APP = 1153 } + +enum : uint { ERROR_INVALID_DLL = 1154 } + +enum : uint { ERROR_NO_ASSOCIATION = 1155 } + +enum : uint { ERROR_DDE_FAIL = 1156 } + +enum : uint { ERROR_DLL_NOT_FOUND = 1157 } + +enum : uint { ERROR_NO_MORE_USER_HANDLES = 1158 } + +enum : uint { ERROR_MESSAGE_SYNC_ONLY = 1159 } + +enum : uint { ERROR_SOURCE_ELEMENT_EMPTY = 1160 } + +enum : uint { ERROR_DESTINATION_ELEMENT_FULL = 1161 } + +enum : uint { ERROR_ILLEGAL_ELEMENT_ADDRESS = 1162 } + +enum : uint { ERROR_MAGAZINE_NOT_PRESENT = 1163 } + +enum : uint { ERROR_DEVICE_REINITIALIZATION_NEEDED = 1164 } + +enum : uint { ERROR_DEVICE_REQUIRES_CLEANING = 1165 } + +enum : uint { ERROR_DEVICE_DOOR_OPEN = 1166 } + +enum : uint { ERROR_DEVICE_NOT_CONNECTED = 1167 } + +enum : uint { ERROR_NOT_FOUND = 1168 } + +enum : uint { ERROR_NO_MATCH = 1169 } + +enum : uint { ERROR_SET_NOT_FOUND = 1170 } + +enum : uint { ERROR_POINT_NOT_FOUND = 1171 } + +enum : uint { ERROR_NO_TRACKING_SERVICE = 1172 } + +enum : uint { ERROR_NO_VOLUME_ID = 1173 } + +enum : uint { ERROR_UNABLE_TO_REMOVE_REPLACED = 1175 } + +enum : uint { ERROR_UNABLE_TO_MOVE_REPLACEMENT = 1176 } + +enum : uint { ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 = 1177 } + +enum : uint { ERROR_JOURNAL_DELETE_IN_PROGRESS = 1178 } + +enum : uint { ERROR_JOURNAL_NOT_ACTIVE = 1179 } + +enum : uint { ERROR_POTENTIAL_FILE_FOUND = 1180 } + +enum : uint { ERROR_JOURNAL_ENTRY_DELETED = 1181 } + +enum : uint { ERROR_BAD_DEVICE = 1200 } + +enum : uint { ERROR_CONNECTION_UNAVAIL = 1201 } + +enum : uint { ERROR_DEVICE_ALREADY_REMEMBERED = 1202 } + +enum : uint { ERROR_NO_NET_OR_BAD_PATH = 1203 } + +enum : uint { ERROR_BAD_PROVIDER = 1204 } + +enum : uint { ERROR_CANNOT_OPEN_PROFILE = 1205 } + +enum : uint { ERROR_BAD_PROFILE = 1206 } + +enum : uint { ERROR_NOT_CONTAINER = 1207 } + +enum : uint { ERROR_EXTENDED_ERROR = 1208 } + +enum : uint { ERROR_INVALID_GROUPNAME = 1209 } + +enum : uint { ERROR_INVALID_COMPUTERNAME = 1210 } + +enum : uint { ERROR_INVALID_EVENTNAME = 1211 } + +enum : uint { ERROR_INVALID_DOMAINNAME = 1212 } + +enum : uint { ERROR_INVALID_SERVICENAME = 1213 } + +enum : uint { ERROR_INVALID_NETNAME = 1214 } + +enum : uint { ERROR_INVALID_SHARENAME = 1215 } + +enum : uint { ERROR_INVALID_PASSWORDNAME = 1216 } + +enum : uint { ERROR_INVALID_MESSAGENAME = 1217 } + +enum : uint { ERROR_INVALID_MESSAGEDEST = 1218 } + +enum : uint { ERROR_SESSION_CREDENTIAL_CONFLICT = 1219 } + +enum : uint { ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220 } + +enum : uint { ERROR_DUP_DOMAINNAME = 1221 } + +enum : uint { ERROR_NO_NETWORK = 1222 } + +enum : uint { ERROR_CANCELLED = 1223 } + +enum : uint { ERROR_USER_MAPPED_FILE = 1224 } + +enum : uint { ERROR_CONNECTION_REFUSED = 1225 } + +enum : uint { ERROR_GRACEFUL_DISCONNECT = 1226 } + +enum : uint { ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227 } + +enum : uint { ERROR_ADDRESS_NOT_ASSOCIATED = 1228 } + +enum : uint { ERROR_CONNECTION_INVALID = 1229 } + +enum : uint { ERROR_CONNECTION_ACTIVE = 1230 } + +enum : uint { ERROR_NETWORK_UNREACHABLE = 1231 } + +enum : uint { ERROR_HOST_UNREACHABLE = 1232 } + +enum : uint { ERROR_PROTOCOL_UNREACHABLE = 1233 } + +enum : uint { ERROR_PORT_UNREACHABLE = 1234 } + +enum : uint { ERROR_REQUEST_ABORTED = 1235 } + +enum : uint { ERROR_CONNECTION_ABORTED = 1236 } + +enum : uint { ERROR_RETRY = 1237 } + +enum : uint { ERROR_CONNECTION_COUNT_LIMIT = 1238 } + +enum : uint { ERROR_LOGIN_TIME_RESTRICTION = 1239 } + +enum : uint { ERROR_LOGIN_WKSTA_RESTRICTION = 1240 } + +enum : uint { ERROR_INCORRECT_ADDRESS = 1241 } + +enum : uint { ERROR_ALREADY_REGISTERED = 1242 } + +enum : uint { ERROR_SERVICE_NOT_FOUND = 1243 } + +enum : uint { ERROR_NOT_AUTHENTICATED = 1244 } + +enum : uint { ERROR_NOT_LOGGED_ON = 1245 } + +enum : uint { ERROR_CONTINUE = 1246 } + +enum : uint { ERROR_ALREADY_INITIALIZED = 1247 } + +enum : uint { ERROR_NO_MORE_DEVICES = 1248 } + +enum : uint { ERROR_NO_SUCH_SITE = 1249 } + +enum : uint { ERROR_DOMAIN_CONTROLLER_EXISTS = 1250 } + +enum : uint { ERROR_ONLY_IF_CONNECTED = 1251 } + +enum : uint { ERROR_OVERRIDE_NOCHANGES = 1252 } + +enum : uint { ERROR_BAD_USER_PROFILE = 1253 } + +enum : uint { ERROR_NOT_SUPPORTED_ON_SBS = 1254 } + +enum : uint { ERROR_SERVER_SHUTDOWN_IN_PROGRESS = 1255 } + +enum : uint { ERROR_HOST_DOWN = 1256 } + +enum : uint { ERROR_NON_ACCOUNT_SID = 1257 } + +enum : uint { ERROR_NON_DOMAIN_SID = 1258 } + +enum : uint { ERROR_APPHELP_BLOCK = 1259 } + +enum : uint { ERROR_ACCESS_DISABLED_BY_POLICY = 1260 } + +enum : uint { ERROR_REG_NAT_CONSUMPTION = 1261 } + +enum : uint { ERROR_CSCSHARE_OFFLINE = 1262 } + +enum : uint { ERROR_PKINIT_FAILURE = 1263 } + +enum : uint { ERROR_SMARTCARD_SUBSYSTEM_FAILURE = 1264 } + +enum : uint { ERROR_DOWNGRADE_DETECTED = 1265 } + +enum : uint { SEC_E_SMARTCARD_CERT_REVOKED = 1266 } + +enum : uint { SEC_E_ISSUING_CA_UNTRUSTED = 1267 } + +enum : uint { SEC_E_REVOCATION_OFFLINE_C = 1268 } + +enum : uint { SEC_E_PKINIT_CLIENT_FAILURE = 1269 } + +enum : uint { SEC_E_SMARTCARD_CERT_EXPIRED = 1270 } + +enum : uint { ERROR_MACHINE_LOCKED = 1271 } + +enum : uint { ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273 } + +enum : uint { ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED = 1274 } + +enum : uint { ERROR_DRIVER_BLOCKED = 1275 } + +enum : uint { ERROR_INVALID_IMPORT_OF_NON_DLL = 1276 } + +enum : uint { ERROR_NOT_ALL_ASSIGNED = 1300 } + +enum : uint { ERROR_SOME_NOT_MAPPED = 1301 } + +enum : uint { ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302 } + +enum : uint { ERROR_LOCAL_USER_SESSION_KEY = 1303 } + +enum : uint { ERROR_NULL_LM_PASSWORD = 1304 } + +enum : uint { ERROR_UNKNOWN_REVISION = 1305 } + +enum : uint { ERROR_REVISION_MISMATCH = 1306 } + +enum : uint { ERROR_INVALID_OWNER = 1307 } + +enum : uint { ERROR_INVALID_PRIMARY_GROUP = 1308 } + +enum : uint { ERROR_NO_IMPERSONATION_TOKEN = 1309 } + +enum : uint { ERROR_CANT_DISABLE_MANDATORY = 1310 } + +enum : uint { ERROR_NO_LOGON_SERVERS = 1311 } + +enum : uint { ERROR_NO_SUCH_LOGON_SESSION = 1312 } + +enum : uint { ERROR_NO_SUCH_PRIVILEGE = 1313 } + +enum : uint { ERROR_PRIVILEGE_NOT_HELD = 1314 } + +enum : uint { ERROR_INVALID_ACCOUNT_NAME = 1315 } + +enum : uint { ERROR_USER_EXISTS = 1316 } + +enum : uint { ERROR_NO_SUCH_USER = 1317 } + +enum : uint { ERROR_GROUP_EXISTS = 1318 } + +enum : uint { ERROR_NO_SUCH_GROUP = 1319 } + +enum : uint { ERROR_MEMBER_IN_GROUP = 1320 } + +enum : uint { ERROR_MEMBER_NOT_IN_GROUP = 1321 } + +enum : uint { ERROR_LAST_ADMIN = 1322 } + +enum : uint { ERROR_WRONG_PASSWORD = 1323 } + +enum : uint { ERROR_ILL_FORMED_PASSWORD = 1324 } + +enum : uint { ERROR_PASSWORD_RESTRICTION = 1325 } + +enum : uint { ERROR_LOGON_FAILURE = 1326 } + +enum : uint { ERROR_ACCOUNT_RESTRICTION = 1327 } + +enum : uint { ERROR_INVALID_LOGON_HOURS = 1328 } + +enum : uint { ERROR_INVALID_WORKSTATION = 1329 } + +enum : uint { ERROR_PASSWORD_EXPIRED = 1330 } + +enum : uint { ERROR_ACCOUNT_DISABLED = 1331 } + +enum : uint { ERROR_NONE_MAPPED = 1332 } + +enum : uint { ERROR_TOO_MANY_LUIDS_REQUESTED = 1333 } + +enum : uint { ERROR_LUIDS_EXHAUSTED = 1334 } + +enum : uint { ERROR_INVALID_SUB_AUTHORITY = 1335 } + +enum : uint { ERROR_INVALID_ACL = 1336 } + +enum : uint { ERROR_INVALID_SID = 1337 } + +enum : uint { ERROR_INVALID_SECURITY_DESCR = 1338 } + +enum : uint { ERROR_BAD_INHERITANCE_ACL = 1340 } + +enum : uint { ERROR_SERVER_DISABLED = 1341 } + +enum : uint { ERROR_SERVER_NOT_DISABLED = 1342 } + +enum : uint { ERROR_INVALID_ID_AUTHORITY = 1343 } + +enum : uint { ERROR_ALLOTTED_SPACE_EXCEEDED = 1344 } + +enum : uint { ERROR_INVALID_GROUP_ATTRIBUTES = 1345 } + +enum : uint { ERROR_BAD_IMPERSONATION_LEVEL = 1346 } + +enum : uint { ERROR_CANT_OPEN_ANONYMOUS = 1347 } + +enum : uint { ERROR_BAD_VALIDATION_CLASS = 1348 } + +enum : uint { ERROR_BAD_TOKEN_TYPE = 1349 } + +enum : uint { ERROR_NO_SECURITY_ON_OBJECT = 1350 } + +enum : uint { ERROR_CANT_ACCESS_DOMAIN_INFO = 1351 } + +enum : uint { ERROR_INVALID_SERVER_STATE = 1352 } + +enum : uint { ERROR_INVALID_DOMAIN_STATE = 1353 } + +enum : uint { ERROR_INVALID_DOMAIN_ROLE = 1354 } + +enum : uint { ERROR_NO_SUCH_DOMAIN = 1355 } + +enum : uint { ERROR_DOMAIN_EXISTS = 1356 } + +enum : uint { ERROR_DOMAIN_LIMIT_EXCEEDED = 1357 } + +enum : uint { ERROR_INTERNAL_DB_CORRUPTION = 1358 } + +enum : uint { ERROR_INTERNAL_ERROR = 1359 } + +enum : uint { ERROR_GENERIC_NOT_MAPPED = 1360 } + +enum : uint { ERROR_BAD_DESCRIPTOR_FORMAT = 1361 } + +enum : uint { ERROR_NOT_LOGON_PROCESS = 1362 } + +enum : uint { ERROR_LOGON_SESSION_EXISTS = 1363 } + +enum : uint { ERROR_NO_SUCH_PACKAGE = 1364 } + +enum : uint { ERROR_BAD_LOGON_SESSION_STATE = 1365 } + +enum : uint { ERROR_LOGON_SESSION_COLLISION = 1366 } + +enum : uint { ERROR_INVALID_LOGON_TYPE = 1367 } + +enum : uint { ERROR_CANNOT_IMPERSONATE = 1368 } + +enum : uint { ERROR_RXACT_INVALID_STATE = 1369 } + +enum : uint { ERROR_RXACT_COMMIT_FAILURE = 1370 } + +enum : uint { ERROR_SPECIAL_ACCOUNT = 1371 } + +enum : uint { ERROR_SPECIAL_GROUP = 1372 } + +enum : uint { ERROR_SPECIAL_USER = 1373 } + +enum : uint { ERROR_MEMBERS_PRIMARY_GROUP = 1374 } + +enum : uint { ERROR_TOKEN_ALREADY_IN_USE = 1375 } + +enum : uint { ERROR_NO_SUCH_ALIAS = 1376 } + +enum : uint { ERROR_MEMBER_NOT_IN_ALIAS = 1377 } + +enum : uint { ERROR_MEMBER_IN_ALIAS = 1378 } + +enum : uint { ERROR_ALIAS_EXISTS = 1379 } + +enum : uint { ERROR_LOGON_NOT_GRANTED = 1380 } + +enum : uint { ERROR_TOO_MANY_SECRETS = 1381 } + +enum : uint { ERROR_SECRET_TOO_LONG = 1382 } + +enum : uint { ERROR_INTERNAL_DB_ERROR = 1383 } + +enum : uint { ERROR_TOO_MANY_CONTEXT_IDS = 1384 } + +enum : uint { ERROR_LOGON_TYPE_NOT_GRANTED = 1385 } + +enum : uint { ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386 } + +enum : uint { ERROR_NO_SUCH_MEMBER = 1387 } + +enum : uint { ERROR_INVALID_MEMBER = 1388 } + +enum : uint { ERROR_TOO_MANY_SIDS = 1389 } + +enum : uint { ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390 } + +enum : uint { ERROR_NO_INHERITANCE = 1391 } + +enum : uint { ERROR_FILE_CORRUPT = 1392 } + +enum : uint { ERROR_DISK_CORRUPT = 1393 } + +enum : uint { ERROR_NO_USER_SESSION_KEY = 1394 } + +enum : uint { ERROR_LICENSE_QUOTA_EXCEEDED = 1395 } + +enum : uint { ERROR_WRONG_TARGET_NAME = 1396 } + +enum : uint { ERROR_MUTUAL_AUTH_FAILED = 1397 } + +enum : uint { ERROR_TIME_SKEW = 1398 } + +enum : uint { ERROR_CURRENT_DOMAIN_NOT_ALLOWED = 1399 } + +enum : uint { ERROR_INVALID_WINDOW_HANDLE = 1400 } + +enum : uint { ERROR_INVALID_MENU_HANDLE = 1401 } + +enum : uint { ERROR_INVALID_CURSOR_HANDLE = 1402 } + +enum : uint { ERROR_INVALID_ACCEL_HANDLE = 1403 } + +enum : uint { ERROR_INVALID_HOOK_HANDLE = 1404 } + +enum : uint { ERROR_INVALID_DWP_HANDLE = 1405 } + +enum : uint { ERROR_TLW_WITH_WSCHILD = 1406 } + +enum : uint { ERROR_CANNOT_FIND_WND_CLASS = 1407 } + +enum : uint { ERROR_WINDOW_OF_OTHER_THREAD = 1408 } + +enum : uint { ERROR_HOTKEY_ALREADY_REGISTERED = 1409 } + +enum : uint { ERROR_CLASS_ALREADY_EXISTS = 1410 } + +enum : uint { ERROR_CLASS_DOES_NOT_EXIST = 1411 } + +enum : uint { ERROR_CLASS_HAS_WINDOWS = 1412 } + +enum : uint { ERROR_INVALID_INDEX = 1413 } + +enum : uint { ERROR_INVALID_ICON_HANDLE = 1414 } + +enum : uint { ERROR_PRIVATE_DIALOG_INDEX = 1415 } + +enum : uint { ERROR_LISTBOX_ID_NOT_FOUND = 1416 } + +enum : uint { ERROR_NO_WILDCARD_CHARACTERS = 1417 } + +enum : uint { ERROR_CLIPBOARD_NOT_OPEN = 1418 } + +enum : uint { ERROR_HOTKEY_NOT_REGISTERED = 1419 } + +enum : uint { ERROR_WINDOW_NOT_DIALOG = 1420 } + +enum : uint { ERROR_CONTROL_ID_NOT_FOUND = 1421 } + +enum : uint { ERROR_INVALID_COMBOBOX_MESSAGE = 1422 } + +enum : uint { ERROR_WINDOW_NOT_COMBOBOX = 1423 } + +enum : uint { ERROR_INVALID_EDIT_HEIGHT = 1424 } + +enum : uint { ERROR_DC_NOT_FOUND = 1425 } + +enum : uint { ERROR_INVALID_HOOK_FILTER = 1426 } + +enum : uint { ERROR_INVALID_FILTER_PROC = 1427 } + +enum : uint { ERROR_HOOK_NEEDS_HMOD = 1428 } + +enum : uint { ERROR_GLOBAL_ONLY_HOOK = 1429 } + +enum : uint { ERROR_JOURNAL_HOOK_SET = 1430 } + +enum : uint { ERROR_HOOK_NOT_INSTALLED = 1431 } + +enum : uint { ERROR_INVALID_LB_MESSAGE = 1432 } + +enum : uint { ERROR_SETCOUNT_ON_BAD_LB = 1433 } + +enum : uint { ERROR_LB_WITHOUT_TABSTOPS = 1434 } + +enum : uint { ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435 } + +enum : uint { ERROR_CHILD_WINDOW_MENU = 1436 } + +enum : uint { ERROR_NO_SYSTEM_MENU = 1437 } + +enum : uint { ERROR_INVALID_MSGBOX_STYLE = 1438 } + +enum : uint { ERROR_INVALID_SPI_VALUE = 1439 } + +enum : uint { ERROR_SCREEN_ALREADY_LOCKED = 1440 } + +enum : uint { ERROR_HWNDS_HAVE_DIFF_PARENT = 1441 } + +enum : uint { ERROR_NOT_CHILD_WINDOW = 1442 } + +enum : uint { ERROR_INVALID_GW_COMMAND = 1443 } + +enum : uint { ERROR_INVALID_THREAD_ID = 1444 } + +enum : uint { ERROR_NON_MDICHILD_WINDOW = 1445 } + +enum : uint { ERROR_POPUP_ALREADY_ACTIVE = 1446 } + +enum : uint { ERROR_NO_SCROLLBARS = 1447 } + +enum : uint { ERROR_INVALID_SCROLLBAR_RANGE = 1448 } + +enum : uint { ERROR_INVALID_SHOWWIN_COMMAND = 1449 } + +enum : uint { ERROR_NO_SYSTEM_RESOURCES = 1450 } + +enum : uint { ERROR_NONPAGED_SYSTEM_RESOURCES = 1451 } + +enum : uint { ERROR_PAGED_SYSTEM_RESOURCES = 1452 } + +enum : uint { ERROR_WORKING_SET_QUOTA = 1453 } + +enum : uint { ERROR_PAGEFILE_QUOTA = 1454 } + +enum : uint { ERROR_COMMITMENT_LIMIT = 1455 } + +enum : uint { ERROR_MENU_ITEM_NOT_FOUND = 1456 } + +enum : uint { ERROR_INVALID_KEYBOARD_HANDLE = 1457 } + +enum : uint { ERROR_HOOK_TYPE_NOT_ALLOWED = 1458 } + +enum : uint { ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION = 1459 } + +enum : uint { ERROR_TIMEOUT = 1460 } + +enum : uint { ERROR_INVALID_MONITOR_HANDLE = 1461 } + +enum : uint { ERROR_EVENTLOG_FILE_CORRUPT = 1500 } + +enum : uint { ERROR_EVENTLOG_CANT_START = 1501 } + +enum : uint { ERROR_LOG_FILE_FULL = 1502 } + +enum : uint { ERROR_EVENTLOG_FILE_CHANGED = 1503 } + +enum : uint { ERROR_INSTALL_SERVICE_FAILURE = 1601 } + +enum : uint { ERROR_INSTALL_USEREXIT = 1602 } + +enum : uint { ERROR_INSTALL_FAILURE = 1603 } + +enum : uint { ERROR_INSTALL_SUSPEND = 1604 } + +enum : uint { ERROR_UNKNOWN_PRODUCT = 1605 } + +enum : uint { ERROR_UNKNOWN_FEATURE = 1606 } + +enum : uint { ERROR_UNKNOWN_COMPONENT = 1607 } + +enum : uint { ERROR_UNKNOWN_PROPERTY = 1608 } + +enum : uint { ERROR_INVALID_HANDLE_STATE = 1609 } + +enum : uint { ERROR_BAD_CONFIGURATION = 1610 } + +enum : uint { ERROR_INDEX_ABSENT = 1611 } + +enum : uint { ERROR_INSTALL_SOURCE_ABSENT = 1612 } + +enum : uint { ERROR_INSTALL_PACKAGE_VERSION = 1613 } + +enum : uint { ERROR_PRODUCT_UNINSTALLED = 1614 } + +enum : uint { ERROR_BAD_QUERY_SYNTAX = 1615 } + +enum : uint { ERROR_INVALID_FIELD = 1616 } + +enum : uint { ERROR_DEVICE_REMOVED = 1617 } + +enum : uint { ERROR_INSTALL_ALREADY_RUNNING = 1618 } + +enum : uint { ERROR_INSTALL_PACKAGE_OPEN_FAILED = 1619 } + +enum : uint { ERROR_INSTALL_PACKAGE_INVALID = 1620 } + +enum : uint { ERROR_INSTALL_UI_FAILURE = 1621 } + +enum : uint { ERROR_INSTALL_LOG_FAILURE = 1622 } + +enum : uint { ERROR_INSTALL_LANGUAGE_UNSUPPORTED = 1623 } + +enum : uint { ERROR_INSTALL_TRANSFORM_FAILURE = 1624 } + +enum : uint { ERROR_INSTALL_PACKAGE_REJECTED = 1625 } + +enum : uint { ERROR_FUNCTION_NOT_CALLED = 1626 } + +enum : uint { ERROR_FUNCTION_FAILED = 1627 } + +enum : uint { ERROR_INVALID_TABLE = 1628 } + +enum : uint { ERROR_DATATYPE_MISMATCH = 1629 } + +enum : uint { ERROR_UNSUPPORTED_TYPE = 1630 } + +enum : uint { ERROR_CREATE_FAILED = 1631 } + +enum : uint { ERROR_INSTALL_TEMP_UNWRITABLE = 1632 } + +enum : uint { ERROR_INSTALL_PLATFORM_UNSUPPORTED = 1633 } + +enum : uint { ERROR_INSTALL_NOTUSED = 1634 } + +enum : uint { ERROR_PATCH_PACKAGE_OPEN_FAILED = 1635 } + +enum : uint { ERROR_PATCH_PACKAGE_INVALID = 1636 } + +enum : uint { ERROR_PATCH_PACKAGE_UNSUPPORTED = 1637 } + +enum : uint { ERROR_PRODUCT_VERSION = 1638 } + +enum : uint { ERROR_INVALID_COMMAND_LINE = 1639 } + +enum : uint { ERROR_INSTALL_REMOTE_DISALLOWED = 1640 } + +enum : uint { ERROR_SUCCESS_REBOOT_INITIATED = 1641 } + +enum : uint { ERROR_PATCH_TARGET_NOT_FOUND = 1642 } + +enum : uint { ERROR_PATCH_PACKAGE_REJECTED = 1643 } + +enum : uint { ERROR_INSTALL_TRANSFORM_REJECTED = 1644 } + +enum : uint { RPC_S_INVALID_STRING_BINDING = 1700 } + +enum : uint { RPC_S_WRONG_KIND_OF_BINDING = 1701 } + +enum : uint { RPC_S_INVALID_BINDING = 1702 } + +enum : uint { RPC_S_PROTSEQ_NOT_SUPPORTED = 1703 } + +enum : uint { RPC_S_INVALID_RPC_PROTSEQ = 1704 } + +enum : uint { RPC_S_INVALID_STRING_UUID = 1705 } + +enum : uint { RPC_S_INVALID_ENDPOINT_FORMAT = 1706 } + +enum : uint { RPC_S_INVALID_NET_ADDR = 1707 } + +enum : uint { RPC_S_NO_ENDPOINT_FOUND = 1708 } + +enum : uint { RPC_S_INVALID_TIMEOUT = 1709 } + +enum : uint { RPC_S_OBJECT_NOT_FOUND = 1710 } + +enum : uint { RPC_S_ALREADY_REGISTERED = 1711 } + +enum : uint { RPC_S_TYPE_ALREADY_REGISTERED = 1712 } + +enum : uint { RPC_S_ALREADY_LISTENING = 1713 } + +enum : uint { RPC_S_NO_PROTSEQS_REGISTERED = 1714 } + +enum : uint { RPC_S_NOT_LISTENING = 1715 } + +enum : uint { RPC_S_UNKNOWN_MGR_TYPE = 1716 } + +enum : uint { RPC_S_UNKNOWN_IF = 1717 } + +enum : uint { RPC_S_NO_BINDINGS = 1718 } + +enum : uint { RPC_S_NO_PROTSEQS = 1719 } + +enum : uint { RPC_S_CANT_CREATE_ENDPOINT = 1720 } + +enum : uint { RPC_S_OUT_OF_RESOURCES = 1721 } + +enum : uint { RPC_S_SERVER_UNAVAILABLE = 1722 } + +enum : uint { RPC_S_SERVER_TOO_BUSY = 1723 } + +enum : uint { RPC_S_INVALID_NETWORK_OPTIONS = 1724 } + +enum : uint { RPC_S_NO_CALL_ACTIVE = 1725 } + +enum : uint { RPC_S_CALL_FAILED = 1726 } + +enum : uint { RPC_S_CALL_FAILED_DNE = 1727 } + +enum : uint { RPC_S_PROTOCOL_ERROR = 1728 } + +enum : uint { RPC_S_UNSUPPORTED_TRANS_SYN = 1730 } + +enum : uint { RPC_S_UNSUPPORTED_TYPE = 1732 } + +enum : uint { RPC_S_INVALID_TAG = 1733 } + +enum : uint { RPC_S_INVALID_BOUND = 1734 } + +enum : uint { RPC_S_NO_ENTRY_NAME = 1735 } + +enum : uint { RPC_S_INVALID_NAME_SYNTAX = 1736 } + +enum : uint { RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737 } + +enum : uint { RPC_S_UUID_NO_ADDRESS = 1739 } + +enum : uint { RPC_S_DUPLICATE_ENDPOINT = 1740 } + +enum : uint { RPC_S_UNKNOWN_AUTHN_TYPE = 1741 } + +enum : uint { RPC_S_MAX_CALLS_TOO_SMALL = 1742 } + +enum : uint { RPC_S_STRING_TOO_LONG = 1743 } + +enum : uint { RPC_S_PROTSEQ_NOT_FOUND = 1744 } + +enum : uint { RPC_S_PROCNUM_OUT_OF_RANGE = 1745 } + +enum : uint { RPC_S_BINDING_HAS_NO_AUTH = 1746 } + +enum : uint { RPC_S_UNKNOWN_AUTHN_SERVICE = 1747 } + +enum : uint { RPC_S_UNKNOWN_AUTHN_LEVEL = 1748 } + +enum : uint { RPC_S_INVALID_AUTH_IDENTITY = 1749 } + +enum : uint { RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750 } + +enum : uint { EPT_S_INVALID_ENTRY = 1751 } + +enum : uint { EPT_S_CANT_PERFORM_OP = 1752 } + +enum : uint { EPT_S_NOT_REGISTERED = 1753 } + +enum : uint { RPC_S_NOTHING_TO_EXPORT = 1754 } + +enum : uint { RPC_S_INCOMPLETE_NAME = 1755 } + +enum : uint { RPC_S_INVALID_VERS_OPTION = 1756 } + +enum : uint { RPC_S_NO_MORE_MEMBERS = 1757 } + +enum : uint { RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758 } + +enum : uint { RPC_S_INTERFACE_NOT_FOUND = 1759 } + +enum : uint { RPC_S_ENTRY_ALREADY_EXISTS = 1760 } + +enum : uint { RPC_S_ENTRY_NOT_FOUND = 1761 } + +enum : uint { RPC_S_NAME_SERVICE_UNAVAILABLE = 1762 } + +enum : uint { RPC_S_INVALID_NAF_ID = 1763 } + +enum : uint { RPC_S_CANNOT_SUPPORT = 1764 } + +enum : uint { RPC_S_NO_CONTEXT_AVAILABLE = 1765 } + +enum : uint { RPC_S_INTERNAL_ERROR = 1766 } + +enum : uint { RPC_S_ZERO_DIVIDE = 1767 } + +enum : uint { RPC_S_ADDRESS_ERROR = 1768 } + +enum : uint { RPC_S_FP_DIV_ZERO = 1769 } + +enum : uint { RPC_S_FP_UNDERFLOW = 1770 } + +enum : uint { RPC_S_FP_OVERFLOW = 1771 } + +enum : uint { RPC_X_NO_MORE_ENTRIES = 1772 } + +enum : uint { RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773 } + +enum : uint { RPC_X_SS_CHAR_TRANS_SHORT_FILE = 1774 } + +enum : uint { RPC_X_SS_IN_NULL_CONTEXT = 1775 } + +enum : uint { RPC_X_SS_CONTEXT_DAMAGED = 1777 } + +enum : uint { RPC_X_SS_HANDLES_MISMATCH = 1778 } + +enum : uint { RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779 } + +enum : uint { RPC_X_NULL_REF_POINTER = 1780 } + +enum : uint { RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781 } + +enum : uint { RPC_X_BYTE_COUNT_TOO_SMALL = 1782 } + +enum : uint { RPC_X_BAD_STUB_DATA = 1783 } + +enum : uint { ERROR_INVALID_USER_BUFFER = 1784 } + +enum : uint { ERROR_UNRECOGNIZED_MEDIA = 1785 } + +enum : uint { ERROR_NO_TRUST_LSA_SECRET = 1786 } + +enum : uint { ERROR_NO_TRUST_SAM_ACCOUNT = 1787 } + +enum : uint { ERROR_TRUSTED_DOMAIN_FAILURE = 1788 } + +enum : uint { ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789 } + +enum : uint { ERROR_TRUST_FAILURE = 1790 } + +enum : uint { RPC_S_CALL_IN_PROGRESS = 1791 } + +enum : uint { ERROR_NETLOGON_NOT_STARTED = 1792 } + +enum : uint { ERROR_ACCOUNT_EXPIRED = 1793 } + +enum : uint { ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794 } + +enum : uint { ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = 1795 } + +enum : uint { ERROR_UNKNOWN_PORT = 1796 } + +enum : uint { ERROR_UNKNOWN_PRINTER_DRIVER = 1797 } + +enum : uint { ERROR_UNKNOWN_PRINTPROCESSOR = 1798 } + +enum : uint { ERROR_INVALID_SEPARATOR_FILE = 1799 } + +enum : uint { ERROR_INVALID_PRIORITY = 1800 } + +enum : uint { ERROR_INVALID_PRINTER_NAME = 1801 } + +enum : uint { ERROR_PRINTER_ALREADY_EXISTS = 1802 } + +enum : uint { ERROR_INVALID_PRINTER_COMMAND = 1803 } + +enum : uint { ERROR_INVALID_DATATYPE = 1804 } + +enum : uint { ERROR_INVALID_ENVIRONMENT = 1805 } + +enum : uint { RPC_S_NO_MORE_BINDINGS = 1806 } + +enum : uint { ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807 } + +enum : uint { ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808 } + +enum : uint { ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809 } + +enum : uint { ERROR_DOMAIN_TRUST_INCONSISTENT = 1810 } + +enum : uint { ERROR_SERVER_HAS_OPEN_HANDLES = 1811 } + +enum : uint { ERROR_RESOURCE_DATA_NOT_FOUND = 1812 } + +enum : uint { ERROR_RESOURCE_TYPE_NOT_FOUND = 1813 } + +enum : uint { ERROR_RESOURCE_NAME_NOT_FOUND = 1814 } + +enum : uint { ERROR_RESOURCE_LANG_NOT_FOUND = 1815 } + +enum : uint { ERROR_NOT_ENOUGH_QUOTA = 1816 } + +enum : uint { RPC_S_NO_INTERFACES = 1817 } + +enum : uint { RPC_S_CALL_CANCELLED = 1818 } + +enum : uint { RPC_S_BINDING_INCOMPLETE = 1819 } + +enum : uint { RPC_S_COMM_FAILURE = 1820 } + +enum : uint { RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821 } + +enum : uint { RPC_S_NO_PRINC_NAME = 1822 } + +enum : uint { RPC_S_NOT_RPC_ERROR = 1823 } + +enum : uint { RPC_S_UUID_LOCAL_ONLY = 1824 } + +enum : uint { RPC_S_SEC_PKG_ERROR = 1825 } + +enum : uint { RPC_S_NOT_CANCELLED = 1826 } + +enum : uint { RPC_X_INVALID_ES_ACTION = 1827 } + +enum : uint { RPC_X_WRONG_ES_VERSION = 1828 } + +enum : uint { RPC_X_WRONG_STUB_VERSION = 1829 } + +enum : uint { RPC_X_INVALID_PIPE_OBJECT = 1830 } + +enum : uint { RPC_X_WRONG_PIPE_ORDER = 1831 } + +enum : uint { RPC_X_WRONG_PIPE_VERSION = 1832 } + +enum : uint { RPC_S_GROUP_MEMBER_NOT_FOUND = 1898 } + +enum : uint { EPT_S_CANT_CREATE = 1899 } + +enum : uint { RPC_S_INVALID_OBJECT = 1900 } + +enum : uint { ERROR_INVALID_TIME = 1901 } + +enum : uint { ERROR_INVALID_FORM_NAME = 1902 } + +enum : uint { ERROR_INVALID_FORM_SIZE = 1903 } + +enum : uint { ERROR_ALREADY_WAITING = 1904 } + +enum : uint { ERROR_PRINTER_DELETED = 1905 } + +enum : uint { ERROR_INVALID_PRINTER_STATE = 1906 } + +enum : uint { ERROR_PASSWORD_MUST_CHANGE = 1907 } + +enum : uint { ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908 } + +enum : uint { ERROR_ACCOUNT_LOCKED_OUT = 1909 } + +enum : uint { OR_INVALID_OXID = 1910 } + +enum : uint { OR_INVALID_OID = 1911 } + +enum : uint { OR_INVALID_SET = 1912 } + +enum : uint { RPC_S_SEND_INCOMPLETE = 1913 } + +enum : uint { RPC_S_INVALID_ASYNC_HANDLE = 1914 } + +enum : uint { RPC_S_INVALID_ASYNC_CALL = 1915 } + +enum : uint { RPC_X_PIPE_CLOSED = 1916 } + +enum : uint { RPC_X_PIPE_DISCIPLINE_ERROR = 1917 } + +enum : uint { RPC_X_PIPE_EMPTY = 1918 } + +enum : uint { ERROR_NO_SITENAME = 1919 } + +enum : uint { ERROR_CANT_ACCESS_FILE = 1920 } + +enum : uint { ERROR_CANT_RESOLVE_FILENAME = 1921 } + +enum : uint { RPC_S_ENTRY_TYPE_MISMATCH = 1922 } + +enum : uint { RPC_S_NOT_ALL_OBJS_EXPORTED = 1923 } + +enum : uint { RPC_S_INTERFACE_NOT_EXPORTED = 1924 } + +enum : uint { RPC_S_PROFILE_NOT_ADDED = 1925 } + +enum : uint { RPC_S_PRF_ELT_NOT_ADDED = 1926 } + +enum : uint { RPC_S_PRF_ELT_NOT_REMOVED = 1927 } + +enum : uint { RPC_S_GRP_ELT_NOT_ADDED = 1928 } + +enum : uint { RPC_S_GRP_ELT_NOT_REMOVED = 1929 } + +enum : uint { ERROR_KM_DRIVER_BLOCKED = 1930 } + +enum : uint { ERROR_CONTEXT_EXPIRED = 1931 } + +enum : uint { ERROR_INVALID_PIXEL_FORMAT = 2000 } + +enum : uint { ERROR_BAD_DRIVER = 2001 } + +enum : uint { ERROR_INVALID_WINDOW_STYLE = 2002 } + +enum : uint { ERROR_METAFILE_NOT_SUPPORTED = 2003 } + +enum : uint { ERROR_TRANSFORM_NOT_SUPPORTED = 2004 } + +enum : uint { ERROR_CLIPPING_NOT_SUPPORTED = 2005 } + +enum : uint { ERROR_INVALID_CMM = 2010 } + +enum : uint { ERROR_INVALID_PROFILE = 2011 } + +enum : uint { ERROR_TAG_NOT_FOUND = 2012 } + +enum : uint { ERROR_TAG_NOT_PRESENT = 2013 } + +enum : uint { ERROR_DUPLICATE_TAG = 2014 } + +enum : uint { ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE = 2015 } + +enum : uint { ERROR_PROFILE_NOT_FOUND = 2016 } + +enum : uint { ERROR_INVALID_COLORSPACE = 2017 } + +enum : uint { ERROR_ICM_NOT_ENABLED = 2018 } + +enum : uint { ERROR_DELETING_ICM_XFORM = 2019 } + +enum : uint { ERROR_INVALID_TRANSFORM = 2020 } + +enum : uint { ERROR_COLORSPACE_MISMATCH = 2021 } + +enum : uint { ERROR_INVALID_COLORINDEX = 2022 } + +enum : uint { ERROR_CONNECTED_OTHER_PASSWORD = 2108 } + +enum : uint { ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT = 2109 } + +enum : uint { ERROR_BAD_USERNAME = 2202 } + +enum : uint { ERROR_NOT_CONNECTED = 2250 } + +enum : uint { ERROR_OPEN_FILES = 2401 } + +enum : uint { ERROR_ACTIVE_CONNECTIONS = 2402 } + +enum : uint { ERROR_DEVICE_IN_USE = 2404 } + +enum : uint { ERROR_UNKNOWN_PRINT_MONITOR = 3000 } + +enum : uint { ERROR_PRINTER_DRIVER_IN_USE = 3001 } + +enum : uint { ERROR_SPOOL_FILE_NOT_FOUND = 3002 } + +enum : uint { ERROR_SPL_NO_STARTDOC = 3003 } + +enum : uint { ERROR_SPL_NO_ADDJOB = 3004 } + +enum : uint { ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = 3005 } + +enum : uint { ERROR_PRINT_MONITOR_ALREADY_INSTALLED = 3006 } + +enum : uint { ERROR_INVALID_PRINT_MONITOR = 3007 } + +enum : uint { ERROR_PRINT_MONITOR_IN_USE = 3008 } + +enum : uint { ERROR_PRINTER_HAS_JOBS_QUEUED = 3009 } + +enum : uint { ERROR_SUCCESS_REBOOT_REQUIRED = 3010 } + +enum : uint { ERROR_SUCCESS_RESTART_REQUIRED = 3011 } + +enum : uint { ERROR_PRINTER_NOT_FOUND = 3012 } + +enum : uint { ERROR_PRINTER_DRIVER_WARNED = 3013 } + +enum : uint { ERROR_PRINTER_DRIVER_BLOCKED = 3014 } + +enum : uint { ERROR_WINS_INTERNAL = 4000 } + +enum : uint { ERROR_CAN_NOT_DEL_LOCAL_WINS = 4001 } + +enum : uint { ERROR_STATIC_INIT = 4002 } + +enum : uint { ERROR_INC_BACKUP = 4003 } + +enum : uint { ERROR_FULL_BACKUP = 4004 } + +enum : uint { ERROR_REC_NON_EXISTENT = 4005 } + +enum : uint { ERROR_RPL_NOT_ALLOWED = 4006 } + +enum : uint { ERROR_DHCP_ADDRESS_CONFLICT = 4100 } + +enum : uint { ERROR_WMI_GUID_NOT_FOUND = 4200 } + +enum : uint { ERROR_WMI_INSTANCE_NOT_FOUND = 4201 } + +enum : uint { ERROR_WMI_ITEMID_NOT_FOUND = 4202 } + +enum : uint { ERROR_WMI_TRY_AGAIN = 4203 } + +enum : uint { ERROR_WMI_DP_NOT_FOUND = 4204 } + +enum : uint { ERROR_WMI_UNRESOLVED_INSTANCE_REF = 4205 } + +enum : uint { ERROR_WMI_ALREADY_ENABLED = 4206 } + +enum : uint { ERROR_WMI_GUID_DISCONNECTED = 4207 } + +enum : uint { ERROR_WMI_SERVER_UNAVAILABLE = 4208 } + +enum : uint { ERROR_WMI_DP_FAILED = 4209 } + +enum : uint { ERROR_WMI_INVALID_MOF = 4210 } + +enum : uint { ERROR_WMI_INVALID_REGINFO = 4211 } + +enum : uint { ERROR_WMI_ALREADY_DISABLED = 4212 } + +enum : uint { ERROR_WMI_READ_ONLY = 4213 } + +enum : uint { ERROR_WMI_SET_FAILURE = 4214 } + +enum : uint { ERROR_INVALID_MEDIA = 4300 } + +enum : uint { ERROR_INVALID_LIBRARY = 4301 } + +enum : uint { ERROR_INVALID_MEDIA_POOL = 4302 } + +enum : uint { ERROR_DRIVE_MEDIA_MISMATCH = 4303 } + +enum : uint { ERROR_MEDIA_OFFLINE = 4304 } + +enum : uint { ERROR_LIBRARY_OFFLINE = 4305 } + +enum : uint { ERROR_EMPTY = 4306 } + +enum : uint { ERROR_NOT_EMPTY = 4307 } + +enum : uint { ERROR_MEDIA_UNAVAILABLE = 4308 } + +enum : uint { ERROR_RESOURCE_DISABLED = 4309 } + +enum : uint { ERROR_INVALID_CLEANER = 4310 } + +enum : uint { ERROR_UNABLE_TO_CLEAN = 4311 } + +enum : uint { ERROR_OBJECT_NOT_FOUND = 4312 } + +enum : uint { ERROR_DATABASE_FAILURE = 4313 } + +enum : uint { ERROR_DATABASE_FULL = 4314 } + +enum : uint { ERROR_MEDIA_INCOMPATIBLE = 4315 } + +enum : uint { ERROR_RESOURCE_NOT_PRESENT = 4316 } + +enum : uint { ERROR_INVALID_OPERATION = 4317 } + +enum : uint { ERROR_MEDIA_NOT_AVAILABLE = 4318 } + +enum : uint { ERROR_DEVICE_NOT_AVAILABLE = 4319 } + +enum : uint { ERROR_REQUEST_REFUSED = 4320 } + +enum : uint { ERROR_INVALID_DRIVE_OBJECT = 4321 } + +enum : uint { ERROR_LIBRARY_FULL = 4322 } + +enum : uint { ERROR_MEDIUM_NOT_ACCESSIBLE = 4323 } + +enum : uint { ERROR_UNABLE_TO_LOAD_MEDIUM = 4324 } + +enum : uint { ERROR_UNABLE_TO_INVENTORY_DRIVE = 4325 } + +enum : uint { ERROR_UNABLE_TO_INVENTORY_SLOT = 4326 } + +enum : uint { ERROR_UNABLE_TO_INVENTORY_TRANSPORT = 4327 } + +enum : uint { ERROR_TRANSPORT_FULL = 4328 } + +enum : uint { ERROR_CONTROLLING_IEPORT = 4329 } + +enum : uint { ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA = 4330 } + +enum : uint { ERROR_CLEANER_SLOT_SET = 4331 } + +enum : uint { ERROR_CLEANER_SLOT_NOT_SET = 4332 } + +enum : uint { ERROR_CLEANER_CARTRIDGE_SPENT = 4333 } + +enum : uint { ERROR_UNEXPECTED_OMID = 4334 } + +enum : uint { ERROR_CANT_DELETE_LAST_ITEM = 4335 } + +enum : uint { ERROR_MESSAGE_EXCEEDS_MAX_SIZE = 4336 } + +enum : uint { ERROR_VOLUME_CONTAINS_SYS_FILES = 4337 } + +enum : uint { ERROR_INDIGENOUS_TYPE = 4338 } + +enum : uint { ERROR_NO_SUPPORTING_DRIVES = 4339 } + +enum : uint { ERROR_CLEANER_CARTRIDGE_INSTALLED = 4340 } + +enum : uint { ERROR_FILE_OFFLINE = 4350 } + +enum : uint { ERROR_REMOTE_STORAGE_NOT_ACTIVE = 4351 } + +enum : uint { ERROR_REMOTE_STORAGE_MEDIA_ERROR = 4352 } + +enum : uint { ERROR_NOT_A_REPARSE_POINT = 4390 } + +enum : uint { ERROR_REPARSE_ATTRIBUTE_CONFLICT = 4391 } + +enum : uint { ERROR_INVALID_REPARSE_DATA = 4392 } + +enum : uint { ERROR_REPARSE_TAG_INVALID = 4393 } + +enum : uint { ERROR_REPARSE_TAG_MISMATCH = 4394 } + +enum : uint { ERROR_VOLUME_NOT_SIS_ENABLED = 4500 } + +enum : uint { ERROR_DEPENDENT_RESOURCE_EXISTS = 5001 } + +enum : uint { ERROR_DEPENDENCY_NOT_FOUND = 5002 } + +enum : uint { ERROR_DEPENDENCY_ALREADY_EXISTS = 5003 } + +enum : uint { ERROR_RESOURCE_NOT_ONLINE = 5004 } + +enum : uint { ERROR_HOST_NODE_NOT_AVAILABLE = 5005 } + +enum : uint { ERROR_RESOURCE_NOT_AVAILABLE = 5006 } + +enum : uint { ERROR_RESOURCE_NOT_FOUND = 5007 } + +enum : uint { ERROR_SHUTDOWN_CLUSTER = 5008 } + +enum : uint { ERROR_CANT_EVICT_ACTIVE_NODE = 5009 } + +enum : uint { ERROR_OBJECT_ALREADY_EXISTS = 5010 } + +enum : uint { ERROR_OBJECT_IN_LIST = 5011 } + +enum : uint { ERROR_GROUP_NOT_AVAILABLE = 5012 } + +enum : uint { ERROR_GROUP_NOT_FOUND = 5013 } + +enum : uint { ERROR_GROUP_NOT_ONLINE = 5014 } + +enum : uint { ERROR_HOST_NODE_NOT_RESOURCE_OWNER = 5015 } + +enum : uint { ERROR_HOST_NODE_NOT_GROUP_OWNER = 5016 } + +enum : uint { ERROR_RESMON_CREATE_FAILED = 5017 } + +enum : uint { ERROR_RESMON_ONLINE_FAILED = 5018 } + +enum : uint { ERROR_RESOURCE_ONLINE = 5019 } + +enum : uint { ERROR_QUORUM_RESOURCE = 5020 } + +enum : uint { ERROR_NOT_QUORUM_CAPABLE = 5021 } + +enum : uint { ERROR_CLUSTER_SHUTTING_DOWN = 5022 } + +enum : uint { ERROR_INVALID_STATE = 5023 } + +enum : uint { ERROR_RESOURCE_PROPERTIES_STORED = 5024 } + +enum : uint { ERROR_NOT_QUORUM_CLASS = 5025 } + +enum : uint { ERROR_CORE_RESOURCE = 5026 } + +enum : uint { ERROR_QUORUM_RESOURCE_ONLINE_FAILED = 5027 } + +enum : uint { ERROR_QUORUMLOG_OPEN_FAILED = 5028 } + +enum : uint { ERROR_CLUSTERLOG_CORRUPT = 5029 } + +enum : uint { ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE = 5030 } + +enum : uint { ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE = 5031 } + +enum : uint { ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND = 5032 } + +enum : uint { ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE = 5033 } + +enum : uint { ERROR_QUORUM_OWNER_ALIVE = 5034 } + +enum : uint { ERROR_NETWORK_NOT_AVAILABLE = 5035 } + +enum : uint { ERROR_NODE_NOT_AVAILABLE = 5036 } + +enum : uint { ERROR_ALL_NODES_NOT_AVAILABLE = 5037 } + +enum : uint { ERROR_RESOURCE_FAILED = 5038 } + +enum : uint { ERROR_CLUSTER_INVALID_NODE = 5039 } + +enum : uint { ERROR_CLUSTER_NODE_EXISTS = 5040 } + +enum : uint { ERROR_CLUSTER_JOIN_IN_PROGRESS = 5041 } + +enum : uint { ERROR_CLUSTER_NODE_NOT_FOUND = 5042 } + +enum : uint { ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND = 5043 } + +enum : uint { ERROR_CLUSTER_NETWORK_EXISTS = 5044 } + +enum : uint { ERROR_CLUSTER_NETWORK_NOT_FOUND = 5045 } + +enum : uint { ERROR_CLUSTER_NETINTERFACE_EXISTS = 5046 } + +enum : uint { ERROR_CLUSTER_NETINTERFACE_NOT_FOUND = 5047 } + +enum : uint { ERROR_CLUSTER_INVALID_REQUEST = 5048 } + +enum : uint { ERROR_CLUSTER_INVALID_NETWORK_PROVIDER = 5049 } + +enum : uint { ERROR_CLUSTER_NODE_DOWN = 5050 } + +enum : uint { ERROR_CLUSTER_NODE_UNREACHABLE = 5051 } + +enum : uint { ERROR_CLUSTER_NODE_NOT_MEMBER = 5052 } + +enum : uint { ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS = 5053 } + +enum : uint { ERROR_CLUSTER_INVALID_NETWORK = 5054 } + +enum : uint { ERROR_CLUSTER_NODE_UP = 5056 } + +enum : uint { ERROR_CLUSTER_IPADDR_IN_USE = 5057 } + +enum : uint { ERROR_CLUSTER_NODE_NOT_PAUSED = 5058 } + +enum : uint { ERROR_CLUSTER_NO_SECURITY_CONTEXT = 5059 } + +enum : uint { ERROR_CLUSTER_NETWORK_NOT_INTERNAL = 5060 } + +enum : uint { ERROR_CLUSTER_NODE_ALREADY_UP = 5061 } + +enum : uint { ERROR_CLUSTER_NODE_ALREADY_DOWN = 5062 } + +enum : uint { ERROR_CLUSTER_NETWORK_ALREADY_ONLINE = 5063 } + +enum : uint { ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE = 5064 } + +enum : uint { ERROR_CLUSTER_NODE_ALREADY_MEMBER = 5065 } + +enum : uint { ERROR_CLUSTER_LAST_INTERNAL_NETWORK = 5066 } + +enum : uint { ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS = 5067 } + +enum : uint { ERROR_INVALID_OPERATION_ON_QUORUM = 5068 } + +enum : uint { ERROR_DEPENDENCY_NOT_ALLOWED = 5069 } + +enum : uint { ERROR_CLUSTER_NODE_PAUSED = 5070 } + +enum : uint { ERROR_NODE_CANT_HOST_RESOURCE = 5071 } + +enum : uint { ERROR_CLUSTER_NODE_NOT_READY = 5072 } + +enum : uint { ERROR_CLUSTER_NODE_SHUTTING_DOWN = 5073 } + +enum : uint { ERROR_CLUSTER_JOIN_ABORTED = 5074 } + +enum : uint { ERROR_CLUSTER_INCOMPATIBLE_VERSIONS = 5075 } + +enum : uint { ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED = 5076 } + +enum : uint { ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED = 5077 } + +enum : uint { ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND = 5078 } + +enum : uint { ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED = 5079 } + +enum : uint { ERROR_CLUSTER_RESNAME_NOT_FOUND = 5080 } + +enum : uint { ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED = 5081 } + +enum : uint { ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST = 5082 } + +enum : uint { ERROR_CLUSTER_DATABASE_SEQMISMATCH = 5083 } + +enum : uint { ERROR_RESMON_INVALID_STATE = 5084 } + +enum : uint { ERROR_CLUSTER_GUM_NOT_LOCKER = 5085 } + +enum : uint { ERROR_QUORUM_DISK_NOT_FOUND = 5086 } + +enum : uint { ERROR_DATABASE_BACKUP_CORRUPT = 5087 } + +enum : uint { ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT = 5088 } + +enum : uint { ERROR_RESOURCE_PROPERTY_UNCHANGEABLE = 5089 } + +enum : uint { ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890 } + +enum : uint { ERROR_CLUSTER_QUORUMLOG_NOT_FOUND = 5891 } + +enum : uint { ERROR_CLUSTER_MEMBERSHIP_HALT = 5892 } + +enum : uint { ERROR_CLUSTER_INSTANCE_ID_MISMATCH = 5893 } + +enum : uint { ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP = 5894 } + +enum : uint { ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH = 5895 } + +enum : uint { ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP = 5896 } + +enum : uint { ERROR_CLUSTER_PARAMETER_MISMATCH = 5897 } + +enum : uint { ERROR_NODE_CANNOT_BE_CLUSTERED = 5898 } + +enum : uint { ERROR_CLUSTER_WRONG_OS_VERSION = 5899 } + +enum : uint { ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME = 5900 } + +enum : uint { ERROR_ENCRYPTION_FAILED = 6000 } + +enum : uint { ERROR_DECRYPTION_FAILED = 6001 } + +enum : uint { ERROR_FILE_ENCRYPTED = 6002 } + +enum : uint { ERROR_NO_RECOVERY_POLICY = 6003 } + +enum : uint { ERROR_NO_EFS = 6004 } + +enum : uint { ERROR_WRONG_EFS = 6005 } + +enum : uint { ERROR_NO_USER_KEYS = 6006 } + +enum : uint { ERROR_FILE_NOT_ENCRYPTED = 6007 } + +enum : uint { ERROR_NOT_EXPORT_FORMAT = 6008 } + +enum : uint { ERROR_FILE_READ_ONLY = 6009 } + +enum : uint { ERROR_DIR_EFS_DISALLOWED = 6010 } + +enum : uint { ERROR_EFS_SERVER_NOT_TRUSTED = 6011 } + +enum : uint { ERROR_BAD_RECOVERY_POLICY = 6012 } + +enum : uint { ERROR_EFS_ALG_BLOB_TOO_BIG = 6013 } + +enum : uint { ERROR_VOLUME_NOT_SUPPORT_EFS = 6014 } + +enum : uint { ERROR_EFS_DISABLED = 6015 } + +enum : uint { ERROR_EFS_VERSION_NOT_SUPPORT = 6016 } + +enum : uint { ERROR_NO_BROWSER_SERVERS_FOUND = 6118 } + +enum : uint { SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200 } + +enum : uint { ERROR_CTX_WINSTATION_NAME_INVALID = 7001 } + +enum : uint { ERROR_CTX_INVALID_PD = 7002 } + +enum : uint { ERROR_CTX_PD_NOT_FOUND = 7003 } + +enum : uint { ERROR_CTX_WD_NOT_FOUND = 7004 } + +enum : uint { ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY = 7005 } + +enum : uint { ERROR_CTX_SERVICE_NAME_COLLISION = 7006 } + +enum : uint { ERROR_CTX_CLOSE_PENDING = 7007 } + +enum : uint { ERROR_CTX_NO_OUTBUF = 7008 } + +enum : uint { ERROR_CTX_MODEM_INF_NOT_FOUND = 7009 } + +enum : uint { ERROR_CTX_INVALID_MODEMNAME = 7010 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_ERROR = 7011 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_TIMEOUT = 7012 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_NO_CARRIER = 7013 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE = 7014 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_BUSY = 7015 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_VOICE = 7016 } + +enum : uint { ERROR_CTX_TD_ERROR = 7017 } + +enum : uint { ERROR_CTX_WINSTATION_NOT_FOUND = 7022 } + +enum : uint { ERROR_CTX_WINSTATION_ALREADY_EXISTS = 7023 } + +enum : uint { ERROR_CTX_WINSTATION_BUSY = 7024 } + +enum : uint { ERROR_CTX_BAD_VIDEO_MODE = 7025 } + +enum : uint { ERROR_CTX_GRAPHICS_INVALID = 7035 } + +enum : uint { ERROR_CTX_LOGON_DISABLED = 7037 } + +enum : uint { ERROR_CTX_NOT_CONSOLE = 7038 } + +enum : uint { ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040 } + +enum : uint { ERROR_CTX_CONSOLE_DISCONNECT = 7041 } + +enum : uint { ERROR_CTX_CONSOLE_CONNECT = 7042 } + +enum : uint { ERROR_CTX_SHADOW_DENIED = 7044 } + +enum : uint { ERROR_CTX_WINSTATION_ACCESS_DENIED = 7045 } + +enum : uint { ERROR_CTX_INVALID_WD = 7049 } + +enum : uint { ERROR_CTX_SHADOW_INVALID = 7050 } + +enum : uint { ERROR_CTX_SHADOW_DISABLED = 7051 } + +enum : uint { ERROR_CTX_CLIENT_LICENSE_IN_USE = 7052 } + +enum : uint { ERROR_CTX_CLIENT_LICENSE_NOT_SET = 7053 } + +enum : uint { ERROR_CTX_LICENSE_NOT_AVAILABLE = 7054 } + +enum : uint { ERROR_CTX_LICENSE_CLIENT_INVALID = 7055 } + +enum : uint { ERROR_CTX_LICENSE_EXPIRED = 7056 } + +enum : uint { ERROR_CTX_SHADOW_NOT_RUNNING = 7057 } + +enum : uint { ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE = 7058 } + +enum : uint { FRS_ERR_INVALID_API_SEQUENCE = 8001 } + +enum : uint { FRS_ERR_STARTING_SERVICE = 8002 } + +enum : uint { FRS_ERR_STOPPING_SERVICE = 8003 } + +enum : uint { FRS_ERR_INTERNAL_API = 8004 } + +enum : uint { FRS_ERR_INTERNAL = 8005 } + +enum : uint { FRS_ERR_SERVICE_COMM = 8006 } + +enum : uint { FRS_ERR_INSUFFICIENT_PRIV = 8007 } + +enum : uint { FRS_ERR_AUTHENTICATION = 8008 } + +enum : uint { FRS_ERR_PARENT_INSUFFICIENT_PRIV = 8009 } + +enum : uint { FRS_ERR_PARENT_AUTHENTICATION = 8010 } + +enum : uint { FRS_ERR_CHILD_TO_PARENT_COMM = 8011 } + +enum : uint { FRS_ERR_PARENT_TO_CHILD_COMM = 8012 } + +enum : uint { FRS_ERR_SYSVOL_POPULATE = 8013 } + +enum : uint { FRS_ERR_SYSVOL_POPULATE_TIMEOUT = 8014 } + +enum : uint { FRS_ERR_SYSVOL_IS_BUSY = 8015 } + +enum : uint { FRS_ERR_SYSVOL_DEMOTE = 8016 } + +enum : uint { FRS_ERR_INVALID_SERVICE_PARAMETER = 8017 } + +alias NO_ERROR DS_S_SUCCESS; + +enum : uint { ERROR_DS_NOT_INSTALLED = 8200 } + +enum : uint { ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY = 8201 } + +enum : uint { ERROR_DS_NO_ATTRIBUTE_OR_VALUE = 8202 } + +enum : uint { ERROR_DS_INVALID_ATTRIBUTE_SYNTAX = 8203 } + +enum : uint { ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED = 8204 } + +enum : uint { ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS = 8205 } + +enum : uint { ERROR_DS_BUSY = 8206 } + +enum : uint { ERROR_DS_UNAVAILABLE = 8207 } + +enum : uint { ERROR_DS_NO_RIDS_ALLOCATED = 8208 } + +enum : uint { ERROR_DS_NO_MORE_RIDS = 8209 } + +enum : uint { ERROR_DS_INCORRECT_ROLE_OWNER = 8210 } + +enum : uint { ERROR_DS_RIDMGR_INIT_ERROR = 8211 } + +enum : uint { ERROR_DS_OBJ_CLASS_VIOLATION = 8212 } + +enum : uint { ERROR_DS_CANT_ON_NON_LEAF = 8213 } + +enum : uint { ERROR_DS_CANT_ON_RDN = 8214 } + +enum : uint { ERROR_DS_CANT_MOD_OBJ_CLASS = 8215 } + +enum : uint { ERROR_DS_CROSS_DOM_MOVE_ERROR = 8216 } + +enum : uint { ERROR_DS_GC_NOT_AVAILABLE = 8217 } + +enum : uint { ERROR_SHARED_POLICY = 8218 } + +enum : uint { ERROR_POLICY_OBJECT_NOT_FOUND = 8219 } + +enum : uint { ERROR_POLICY_ONLY_IN_DS = 8220 } + +enum : uint { ERROR_PROMOTION_ACTIVE = 8221 } + +enum : uint { ERROR_NO_PROMOTION_ACTIVE = 8222 } + +enum : uint { ERROR_DS_OPERATIONS_ERROR = 8224 } + +enum : uint { ERROR_DS_PROTOCOL_ERROR = 8225 } + +enum : uint { ERROR_DS_TIMELIMIT_EXCEEDED = 8226 } + +enum : uint { ERROR_DS_SIZELIMIT_EXCEEDED = 8227 } + +enum : uint { ERROR_DS_ADMIN_LIMIT_EXCEEDED = 8228 } + +enum : uint { ERROR_DS_COMPARE_FALSE = 8229 } + +enum : uint { ERROR_DS_COMPARE_TRUE = 8230 } + +enum : uint { ERROR_DS_AUTH_METHOD_NOT_SUPPORTED = 8231 } + +enum : uint { ERROR_DS_STRONG_AUTH_REQUIRED = 8232 } + +enum : uint { ERROR_DS_INAPPROPRIATE_AUTH = 8233 } + +enum : uint { ERROR_DS_AUTH_UNKNOWN = 8234 } + +enum : uint { ERROR_DS_REFERRAL = 8235 } + +enum : uint { ERROR_DS_UNAVAILABLE_CRIT_EXTENSION = 8236 } + +enum : uint { ERROR_DS_CONFIDENTIALITY_REQUIRED = 8237 } + +enum : uint { ERROR_DS_INAPPROPRIATE_MATCHING = 8238 } + +enum : uint { ERROR_DS_CONSTRAINT_VIOLATION = 8239 } + +enum : uint { ERROR_DS_NO_SUCH_OBJECT = 8240 } + +enum : uint { ERROR_DS_ALIAS_PROBLEM = 8241 } + +enum : uint { ERROR_DS_INVALID_DN_SYNTAX = 8242 } + +enum : uint { ERROR_DS_IS_LEAF = 8243 } + +enum : uint { ERROR_DS_ALIAS_DEREF_PROBLEM = 8244 } + +enum : uint { ERROR_DS_UNWILLING_TO_PERFORM = 8245 } + +enum : uint { ERROR_DS_LOOP_DETECT = 8246 } + +enum : uint { ERROR_DS_NAMING_VIOLATION = 8247 } + +enum : uint { ERROR_DS_OBJECT_RESULTS_TOO_LARGE = 8248 } + +enum : uint { ERROR_DS_AFFECTS_MULTIPLE_DSAS = 8249 } + +enum : uint { ERROR_DS_SERVER_DOWN = 8250 } + +enum : uint { ERROR_DS_LOCAL_ERROR = 8251 } + +enum : uint { ERROR_DS_ENCODING_ERROR = 8252 } + +enum : uint { ERROR_DS_DECODING_ERROR = 8253 } + +enum : uint { ERROR_DS_FILTER_UNKNOWN = 8254 } + +enum : uint { ERROR_DS_PARAM_ERROR = 8255 } + +enum : uint { ERROR_DS_NOT_SUPPORTED = 8256 } + +enum : uint { ERROR_DS_NO_RESULTS_RETURNED = 8257 } + +enum : uint { ERROR_DS_CONTROL_NOT_FOUND = 8258 } + +enum : uint { ERROR_DS_CLIENT_LOOP = 8259 } + +enum : uint { ERROR_DS_REFERRAL_LIMIT_EXCEEDED = 8260 } + +enum : uint { ERROR_DS_SORT_CONTROL_MISSING = 8261 } + +enum : uint { ERROR_DS_OFFSET_RANGE_ERROR = 8262 } + +enum : uint { ERROR_DS_ROOT_MUST_BE_NC = 8301 } + +enum : uint { ERROR_DS_ADD_REPLICA_INHIBITED = 8302 } + +enum : uint { ERROR_DS_ATT_NOT_DEF_IN_SCHEMA = 8303 } + +enum : uint { ERROR_DS_MAX_OBJ_SIZE_EXCEEDED = 8304 } + +enum : uint { ERROR_DS_OBJ_STRING_NAME_EXISTS = 8305 } + +enum : uint { ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA = 8306 } + +enum : uint { ERROR_DS_RDN_DOESNT_MATCH_SCHEMA = 8307 } + +enum : uint { ERROR_DS_NO_REQUESTED_ATTS_FOUND = 8308 } + +enum : uint { ERROR_DS_USER_BUFFER_TO_SMALL = 8309 } + +enum : uint { ERROR_DS_ATT_IS_NOT_ON_OBJ = 8310 } + +enum : uint { ERROR_DS_ILLEGAL_MOD_OPERATION = 8311 } + +enum : uint { ERROR_DS_OBJ_TOO_LARGE = 8312 } + +enum : uint { ERROR_DS_BAD_INSTANCE_TYPE = 8313 } + +enum : uint { ERROR_DS_MASTERDSA_REQUIRED = 8314 } + +enum : uint { ERROR_DS_OBJECT_CLASS_REQUIRED = 8315 } + +enum : uint { ERROR_DS_MISSING_REQUIRED_ATT = 8316 } + +enum : uint { ERROR_DS_ATT_NOT_DEF_FOR_CLASS = 8317 } + +enum : uint { ERROR_DS_ATT_ALREADY_EXISTS = 8318 } + +enum : uint { ERROR_DS_CANT_ADD_ATT_VALUES = 8320 } + +enum : uint { ERROR_DS_SINGLE_VALUE_CONSTRAINT = 8321 } + +enum : uint { ERROR_DS_RANGE_CONSTRAINT = 8322 } + +enum : uint { ERROR_DS_ATT_VAL_ALREADY_EXISTS = 8323 } + +enum : uint { ERROR_DS_CANT_REM_MISSING_ATT = 8324 } + +enum : uint { ERROR_DS_CANT_REM_MISSING_ATT_VAL = 8325 } + +enum : uint { ERROR_DS_ROOT_CANT_BE_SUBREF = 8326 } + +enum : uint { ERROR_DS_NO_CHAINING = 8327 } + +enum : uint { ERROR_DS_NO_CHAINED_EVAL = 8328 } + +enum : uint { ERROR_DS_NO_PARENT_OBJECT = 8329 } + +enum : uint { ERROR_DS_PARENT_IS_AN_ALIAS = 8330 } + +enum : uint { ERROR_DS_CANT_MIX_MASTER_AND_REPS = 8331 } + +enum : uint { ERROR_DS_CHILDREN_EXIST = 8332 } + +enum : uint { ERROR_DS_OBJ_NOT_FOUND = 8333 } + +enum : uint { ERROR_DS_ALIASED_OBJ_MISSING = 8334 } + +enum : uint { ERROR_DS_BAD_NAME_SYNTAX = 8335 } + +enum : uint { ERROR_DS_ALIAS_POINTS_TO_ALIAS = 8336 } + +enum : uint { ERROR_DS_CANT_DEREF_ALIAS = 8337 } + +enum : uint { ERROR_DS_OUT_OF_SCOPE = 8338 } + +enum : uint { ERROR_DS_OBJECT_BEING_REMOVED = 8339 } + +enum : uint { ERROR_DS_CANT_DELETE_DSA_OBJ = 8340 } + +enum : uint { ERROR_DS_GENERIC_ERROR = 8341 } + +enum : uint { ERROR_DS_DSA_MUST_BE_INT_MASTER = 8342 } + +enum : uint { ERROR_DS_CLASS_NOT_DSA = 8343 } + +enum : uint { ERROR_DS_INSUFF_ACCESS_RIGHTS = 8344 } + +enum : uint { ERROR_DS_ILLEGAL_SUPERIOR = 8345 } + +enum : uint { ERROR_DS_ATTRIBUTE_OWNED_BY_SAM = 8346 } + +enum : uint { ERROR_DS_NAME_TOO_MANY_PARTS = 8347 } + +enum : uint { ERROR_DS_NAME_TOO_LONG = 8348 } + +enum : uint { ERROR_DS_NAME_VALUE_TOO_LONG = 8349 } + +enum : uint { ERROR_DS_NAME_UNPARSEABLE = 8350 } + +enum : uint { ERROR_DS_NAME_TYPE_UNKNOWN = 8351 } + +enum : uint { ERROR_DS_NOT_AN_OBJECT = 8352 } + +enum : uint { ERROR_DS_SEC_DESC_TOO_SHORT = 8353 } + +enum : uint { ERROR_DS_SEC_DESC_INVALID = 8354 } + +enum : uint { ERROR_DS_NO_DELETED_NAME = 8355 } + +enum : uint { ERROR_DS_SUBREF_MUST_HAVE_PARENT = 8356 } + +enum : uint { ERROR_DS_NCNAME_MUST_BE_NC = 8357 } + +enum : uint { ERROR_DS_CANT_ADD_SYSTEM_ONLY = 8358 } + +enum : uint { ERROR_DS_CLASS_MUST_BE_CONCRETE = 8359 } + +enum : uint { ERROR_DS_INVALID_DMD = 8360 } + +enum : uint { ERROR_DS_OBJ_GUID_EXISTS = 8361 } + +enum : uint { ERROR_DS_NOT_ON_BACKLINK = 8362 } + +enum : uint { ERROR_DS_NO_CROSSREF_FOR_NC = 8363 } + +enum : uint { ERROR_DS_SHUTTING_DOWN = 8364 } + +enum : uint { ERROR_DS_UNKNOWN_OPERATION = 8365 } + +enum : uint { ERROR_DS_INVALID_ROLE_OWNER = 8366 } + +enum : uint { ERROR_DS_COULDNT_CONTACT_FSMO = 8367 } + +enum : uint { ERROR_DS_CROSS_NC_DN_RENAME = 8368 } + +enum : uint { ERROR_DS_CANT_MOD_SYSTEM_ONLY = 8369 } + +enum : uint { ERROR_DS_REPLICATOR_ONLY = 8370 } + +enum : uint { ERROR_DS_OBJ_CLASS_NOT_DEFINED = 8371 } + +enum : uint { ERROR_DS_OBJ_CLASS_NOT_SUBCLASS = 8372 } + +enum : uint { ERROR_DS_NAME_REFERENCE_INVALID = 8373 } + +enum : uint { ERROR_DS_CROSS_REF_EXISTS = 8374 } + +enum : uint { ERROR_DS_CANT_DEL_MASTER_CROSSREF = 8375 } + +enum : uint { ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD = 8376 } + +enum : uint { ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX = 8377 } + +enum : uint { ERROR_DS_DUP_RDN = 8378 } + +enum : uint { ERROR_DS_DUP_OID = 8379 } + +enum : uint { ERROR_DS_DUP_MAPI_ID = 8380 } + +enum : uint { ERROR_DS_DUP_SCHEMA_ID_GUID = 8381 } + +enum : uint { ERROR_DS_DUP_LDAP_DISPLAY_NAME = 8382 } + +enum : uint { ERROR_DS_SEMANTIC_ATT_TEST = 8383 } + +enum : uint { ERROR_DS_SYNTAX_MISMATCH = 8384 } + +enum : uint { ERROR_DS_EXISTS_IN_MUST_HAVE = 8385 } + +enum : uint { ERROR_DS_EXISTS_IN_MAY_HAVE = 8386 } + +enum : uint { ERROR_DS_NONEXISTENT_MAY_HAVE = 8387 } + +enum : uint { ERROR_DS_NONEXISTENT_MUST_HAVE = 8388 } + +enum : uint { ERROR_DS_AUX_CLS_TEST_FAIL = 8389 } + +enum : uint { ERROR_DS_NONEXISTENT_POSS_SUP = 8390 } + +enum : uint { ERROR_DS_SUB_CLS_TEST_FAIL = 8391 } + +enum : uint { ERROR_DS_BAD_RDN_ATT_ID_SYNTAX = 8392 } + +enum : uint { ERROR_DS_EXISTS_IN_AUX_CLS = 8393 } + +enum : uint { ERROR_DS_EXISTS_IN_SUB_CLS = 8394 } + +enum : uint { ERROR_DS_EXISTS_IN_POSS_SUP = 8395 } + +enum : uint { ERROR_DS_RECALCSCHEMA_FAILED = 8396 } + +enum : uint { ERROR_DS_TREE_DELETE_NOT_FINISHED = 8397 } + +enum : uint { ERROR_DS_CANT_DELETE = 8398 } + +enum : uint { ERROR_DS_ATT_SCHEMA_REQ_ID = 8399 } + +enum : uint { ERROR_DS_BAD_ATT_SCHEMA_SYNTAX = 8400 } + +enum : uint { ERROR_DS_CANT_CACHE_ATT = 8401 } + +enum : uint { ERROR_DS_CANT_CACHE_CLASS = 8402 } + +enum : uint { ERROR_DS_CANT_REMOVE_ATT_CACHE = 8403 } + +enum : uint { ERROR_DS_CANT_REMOVE_CLASS_CACHE = 8404 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_DN = 8405 } + +enum : uint { ERROR_DS_MISSING_SUPREF = 8406 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_INSTANCE = 8407 } + +enum : uint { ERROR_DS_CODE_INCONSISTENCY = 8408 } + +enum : uint { ERROR_DS_DATABASE_ERROR = 8409 } + +enum : uint { ERROR_DS_GOVERNSID_MISSING = 8410 } + +enum : uint { ERROR_DS_MISSING_EXPECTED_ATT = 8411 } + +enum : uint { ERROR_DS_NCNAME_MISSING_CR_REF = 8412 } + +enum : uint { ERROR_DS_SECURITY_CHECKING_ERROR = 8413 } + +enum : uint { ERROR_DS_SCHEMA_NOT_LOADED = 8414 } + +enum : uint { ERROR_DS_SCHEMA_ALLOC_FAILED = 8415 } + +enum : uint { ERROR_DS_ATT_SCHEMA_REQ_SYNTAX = 8416 } + +enum : uint { ERROR_DS_GCVERIFY_ERROR = 8417 } + +enum : uint { ERROR_DS_DRA_SCHEMA_MISMATCH = 8418 } + +enum : uint { ERROR_DS_CANT_FIND_DSA_OBJ = 8419 } + +enum : uint { ERROR_DS_CANT_FIND_EXPECTED_NC = 8420 } + +enum : uint { ERROR_DS_CANT_FIND_NC_IN_CACHE = 8421 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_CHILD = 8422 } + +enum : uint { ERROR_DS_SECURITY_ILLEGAL_MODIFY = 8423 } + +enum : uint { ERROR_DS_CANT_REPLACE_HIDDEN_REC = 8424 } + +enum : uint { ERROR_DS_BAD_HIERARCHY_FILE = 8425 } + +enum : uint { ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED = 8426 } + +enum : uint { ERROR_DS_CONFIG_PARAM_MISSING = 8427 } + +enum : uint { ERROR_DS_COUNTING_AB_INDICES_FAILED = 8428 } + +enum : uint { ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED = 8429 } + +enum : uint { ERROR_DS_INTERNAL_FAILURE = 8430 } + +enum : uint { ERROR_DS_UNKNOWN_ERROR = 8431 } + +enum : uint { ERROR_DS_ROOT_REQUIRES_CLASS_TOP = 8432 } + +enum : uint { ERROR_DS_REFUSING_FSMO_ROLES = 8433 } + +enum : uint { ERROR_DS_MISSING_FSMO_SETTINGS = 8434 } + +enum : uint { ERROR_DS_UNABLE_TO_SURRENDER_ROLES = 8435 } + +enum : uint { ERROR_DS_DRA_GENERIC = 8436 } + +enum : uint { ERROR_DS_DRA_INVALID_PARAMETER = 8437 } + +enum : uint { ERROR_DS_DRA_BUSY = 8438 } + +enum : uint { ERROR_DS_DRA_BAD_DN = 8439 } + +enum : uint { ERROR_DS_DRA_BAD_NC = 8440 } + +enum : uint { ERROR_DS_DRA_DN_EXISTS = 8441 } + +enum : uint { ERROR_DS_DRA_INTERNAL_ERROR = 8442 } + +enum : uint { ERROR_DS_DRA_INCONSISTENT_DIT = 8443 } + +enum : uint { ERROR_DS_DRA_CONNECTION_FAILED = 8444 } + +enum : uint { ERROR_DS_DRA_BAD_INSTANCE_TYPE = 8445 } + +enum : uint { ERROR_DS_DRA_OUT_OF_MEM = 8446 } + +enum : uint { ERROR_DS_DRA_MAIL_PROBLEM = 8447 } + +enum : uint { ERROR_DS_DRA_REF_ALREADY_EXISTS = 8448 } + +enum : uint { ERROR_DS_DRA_REF_NOT_FOUND = 8449 } + +enum : uint { ERROR_DS_DRA_OBJ_IS_REP_SOURCE = 8450 } + +enum : uint { ERROR_DS_DRA_DB_ERROR = 8451 } + +enum : uint { ERROR_DS_DRA_NO_REPLICA = 8452 } + +enum : uint { ERROR_DS_DRA_ACCESS_DENIED = 8453 } + +enum : uint { ERROR_DS_DRA_NOT_SUPPORTED = 8454 } + +enum : uint { ERROR_DS_DRA_RPC_CANCELLED = 8455 } + +enum : uint { ERROR_DS_DRA_SOURCE_DISABLED = 8456 } + +enum : uint { ERROR_DS_DRA_SINK_DISABLED = 8457 } + +enum : uint { ERROR_DS_DRA_NAME_COLLISION = 8458 } + +enum : uint { ERROR_DS_DRA_SOURCE_REINSTALLED = 8459 } + +enum : uint { ERROR_DS_DRA_MISSING_PARENT = 8460 } + +enum : uint { ERROR_DS_DRA_PREEMPTED = 8461 } + +enum : uint { ERROR_DS_DRA_ABANDON_SYNC = 8462 } + +enum : uint { ERROR_DS_DRA_SHUTDOWN = 8463 } + +enum : uint { ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET = 8464 } + +enum : uint { ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA = 8465 } + +enum : uint { ERROR_DS_DRA_EXTN_CONNECTION_FAILED = 8466 } + +enum : uint { ERROR_DS_INSTALL_SCHEMA_MISMATCH = 8467 } + +enum : uint { ERROR_DS_DUP_LINK_ID = 8468 } + +enum : uint { ERROR_DS_NAME_ERROR_RESOLVING = 8469 } + +enum : uint { ERROR_DS_NAME_ERROR_NOT_FOUND = 8470 } + +enum : uint { ERROR_DS_NAME_ERROR_NOT_UNIQUE = 8471 } + +enum : uint { ERROR_DS_NAME_ERROR_NO_MAPPING = 8472 } + +enum : uint { ERROR_DS_NAME_ERROR_DOMAIN_ONLY = 8473 } + +enum : uint { ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING = 8474 } + +enum : uint { ERROR_DS_CONSTRUCTED_ATT_MOD = 8475 } + +enum : uint { ERROR_DS_WRONG_OM_OBJ_CLASS = 8476 } + +enum : uint { ERROR_DS_DRA_REPL_PENDING = 8477 } + +enum : uint { ERROR_DS_DS_REQUIRED = 8478 } + +enum : uint { ERROR_DS_INVALID_LDAP_DISPLAY_NAME = 8479 } + +enum : uint { ERROR_DS_NON_BASE_SEARCH = 8480 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_ATTS = 8481 } + +enum : uint { ERROR_DS_BACKLINK_WITHOUT_LINK = 8482 } + +enum : uint { ERROR_DS_EPOCH_MISMATCH = 8483 } + +enum : uint { ERROR_DS_SRC_NAME_MISMATCH = 8484 } + +enum : uint { ERROR_DS_SRC_AND_DST_NC_IDENTICAL = 8485 } + +enum : uint { ERROR_DS_DST_NC_MISMATCH = 8486 } + +enum : uint { ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC = 8487 } + +enum : uint { ERROR_DS_SRC_GUID_MISMATCH = 8488 } + +enum : uint { ERROR_DS_CANT_MOVE_DELETED_OBJECT = 8489 } + +enum : uint { ERROR_DS_PDC_OPERATION_IN_PROGRESS = 8490 } + +enum : uint { ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD = 8491 } + +enum : uint { ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION = 8492 } + +enum : uint { ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS = 8493 } + +enum : uint { ERROR_DS_NC_MUST_HAVE_NC_PARENT = 8494 } + +enum : uint { ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE = 8495 } + +enum : uint { ERROR_DS_DST_DOMAIN_NOT_NATIVE = 8496 } + +enum : uint { ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER = 8497 } + +enum : uint { ERROR_DS_CANT_MOVE_ACCOUNT_GROUP = 8498 } + +enum : uint { ERROR_DS_CANT_MOVE_RESOURCE_GROUP = 8499 } + +enum : uint { ERROR_DS_INVALID_SEARCH_FLAG = 8500 } + +enum : uint { ERROR_DS_NO_TREE_DELETE_ABOVE_NC = 8501 } + +enum : uint { ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE = 8502 } + +enum : uint { ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE = 8503 } + +enum : uint { ERROR_DS_SAM_INIT_FAILURE = 8504 } + +enum : uint { ERROR_DS_SENSITIVE_GROUP_VIOLATION = 8505 } + +enum : uint { ERROR_DS_CANT_MOD_PRIMARYGROUPID = 8506 } + +enum : uint { ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD = 8507 } + +enum : uint { ERROR_DS_NONSAFE_SCHEMA_CHANGE = 8508 } + +enum : uint { ERROR_DS_SCHEMA_UPDATE_DISALLOWED = 8509 } + +enum : uint { ERROR_DS_CANT_CREATE_UNDER_SCHEMA = 8510 } + +enum : uint { ERROR_DS_INSTALL_NO_SRC_SCH_VERSION = 8511 } + +enum : uint { ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE = 8512 } + +enum : uint { ERROR_DS_INVALID_GROUP_TYPE = 8513 } + +enum : uint { ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN = 8514 } + +enum : uint { ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN = 8515 } + +enum : uint { ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER = 8516 } + +enum : uint { ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER = 8517 } + +enum : uint { ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER = 8518 } + +enum : uint { ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER = 8519 } + +enum : uint { ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER = 8520 } + +enum : uint { ERROR_DS_HAVE_PRIMARY_MEMBERS = 8521 } + +enum : uint { ERROR_DS_STRING_SD_CONVERSION_FAILED = 8522 } + +enum : uint { ERROR_DS_NAMING_MASTER_GC = 8523 } + +enum : uint { ERROR_DS_DNS_LOOKUP_FAILURE = 8524 } + +enum : uint { ERROR_DS_COULDNT_UPDATE_SPNS = 8525 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_SD = 8526 } + +enum : uint { ERROR_DS_KEY_NOT_UNIQUE = 8527 } + +enum : uint { ERROR_DS_WRONG_LINKED_ATT_SYNTAX = 8528 } + +enum : uint { ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD = 8529 } + +enum : uint { ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY = 8530 } + +enum : uint { ERROR_DS_CANT_START = 8531 } + +enum : uint { ERROR_DS_INIT_FAILURE = 8532 } + +enum : uint { ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION = 8533 } + +enum : uint { ERROR_DS_SOURCE_DOMAIN_IN_FOREST = 8534 } + +enum : uint { ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST = 8535 } + +enum : uint { ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED = 8536 } + +enum : uint { ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN = 8537 } + +enum : uint { ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER = 8538 } + +enum : uint { ERROR_DS_SRC_SID_EXISTS_IN_FOREST = 8539 } + +enum : uint { ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH = 8540 } + +enum : uint { ERROR_SAM_INIT_FAILURE = 8541 } + +enum : uint { ERROR_DS_DRA_SCHEMA_INFO_SHIP = 8542 } + +enum : uint { ERROR_DS_DRA_SCHEMA_CONFLICT = 8543 } + +enum : uint { ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT = 8544 } + +enum : uint { ERROR_DS_DRA_OBJ_NC_MISMATCH = 8545 } + +enum : uint { ERROR_DS_NC_STILL_HAS_DSAS = 8546 } + +enum : uint { ERROR_DS_GC_REQUIRED = 8547 } + +enum : uint { ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY = 8548 } + +enum : uint { ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS = 8549 } + +enum : uint { ERROR_DS_CANT_ADD_TO_GC = 8550 } + +enum : uint { ERROR_DS_NO_CHECKPOINT_WITH_PDC = 8551 } + +enum : uint { ERROR_DS_SOURCE_AUDITING_NOT_ENABLED = 8552 } + +enum : uint { ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC = 8553 } + +enum : uint { ERROR_DS_INVALID_NAME_FOR_SPN = 8554 } + +enum : uint { ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS = 8555 } + +enum : uint { ERROR_DS_UNICODEPWD_NOT_IN_QUOTES = 8556 } + +enum : uint { ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED = 8557 } + +enum : uint { ERROR_DS_MUST_BE_RUN_ON_DST_DC = 8558 } + +enum : uint { ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER = 8559 } + +enum : uint { ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ = 8560 } + +enum : uint { ERROR_DS_INIT_FAILURE_CONSOLE = 8561 } + +enum : uint { ERROR_DS_SAM_INIT_FAILURE_CONSOLE = 8562 } + +enum : uint { ERROR_DS_FOREST_VERSION_TOO_HIGH = 8563 } + +enum : uint { ERROR_DS_DOMAIN_VERSION_TOO_HIGH = 8564 } + +enum : uint { ERROR_DS_FOREST_VERSION_TOO_LOW = 8565 } + +enum : uint { ERROR_DS_DOMAIN_VERSION_TOO_LOW = 8566 } + +enum : uint { ERROR_DS_INCOMPATIBLE_VERSION = 8567 } + +enum : uint { ERROR_DS_LOW_DSA_VERSION = 8568 } + +enum : uint { ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN = 8569 } + +enum : uint { ERROR_DS_NOT_SUPPORTED_SORT_ORDER = 8570 } + +enum : uint { ERROR_DS_NAME_NOT_UNIQUE = 8571 } + +enum : uint { ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 = 8572 } + +enum : uint { ERROR_DS_OUT_OF_VERSION_STORE = 8573 } + +enum : uint { ERROR_DS_INCOMPATIBLE_CONTROLS_USED = 8574 } + +enum : uint { ERROR_DS_NO_REF_DOMAIN = 8575 } + +enum : uint { ERROR_DS_RESERVED_LINK_ID = 8576 } + +enum : uint { ERROR_DS_LINK_ID_NOT_AVAILABLE = 8577 } + +enum : uint { ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER = 8578 } + +enum : uint { ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE = 8579 } + +enum : uint { ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC = 8580 } + +enum : uint { ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG = 8581 } + +enum : uint { ERROR_DS_MODIFYDN_WRONG_GRANDPARENT = 8582 } + +enum : uint { ERROR_DS_NAME_ERROR_TRUST_REFERRAL = 8583 } + +enum : uint { ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER = 8584 } + +enum : uint { ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD = 8585 } + +enum : uint { ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 = 8586 } + +enum : uint { ERROR_DS_THREAD_LIMIT_EXCEEDED = 8587 } + +enum : uint { ERROR_DS_NOT_CLOSEST = 8588 } + +enum : uint { ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF = 8589 } + +enum : uint { ERROR_DS_SINGLE_USER_MODE_FAILED = 8590 } + +enum : uint { ERROR_DS_NTDSCRIPT_SYNTAX_ERROR = 8591 } + +enum : uint { ERROR_DS_NTDSCRIPT_PROCESS_ERROR = 8592 } + +enum : uint { ERROR_DS_DIFFERENT_REPL_EPOCHS = 8593 } + +enum : uint { ERROR_DS_DRS_EXTENSIONS_CHANGED = 8594 } + +enum : uint { ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR = 8595 } + +enum : uint { ERROR_DS_NO_MSDS_INTID = 8596 } + +enum : uint { ERROR_DS_DUP_MSDS_INTID = 8597 } + +enum : uint { ERROR_DS_EXISTS_IN_RDNATTID = 8598 } + +enum : uint { ERROR_DS_AUTHORIZATION_FAILED = 8599 } + +enum : uint { ERROR_DS_INVALID_SCRIPT = 8600 } + +enum : uint { ERROR_DS_REMOTE_CROSSREF_OP_FAILED = 8601 } + +enum : uint { DNS_ERROR_RESPONSE_CODES_BASE = 9000 } + +alias NO_ERROR DNS_ERROR_RCODE_NO_ERROR; + +enum : uint { DNS_ERROR_MASK = 0x00002328 } + +enum : uint { DNS_ERROR_RCODE_FORMAT_ERROR = 9001 } + +enum : uint { DNS_ERROR_RCODE_SERVER_FAILURE = 9002 } + +enum : uint { DNS_ERROR_RCODE_NAME_ERROR = 9003 } + +enum : uint { DNS_ERROR_RCODE_NOT_IMPLEMENTED = 9004 } + +enum : uint { DNS_ERROR_RCODE_REFUSED = 9005 } + +enum : uint { DNS_ERROR_RCODE_YXDOMAIN = 9006 } + +enum : uint { DNS_ERROR_RCODE_YXRRSET = 9007 } + +enum : uint { DNS_ERROR_RCODE_NXRRSET = 9008 } + +enum : uint { DNS_ERROR_RCODE_NOTAUTH = 9009 } + +enum : uint { DNS_ERROR_RCODE_NOTZONE = 9010 } + +enum : uint { DNS_ERROR_RCODE_BADSIG = 9016 } + +enum : uint { DNS_ERROR_RCODE_BADKEY = 9017 } + +enum : uint { DNS_ERROR_RCODE_BADTIME = 9018 } + +alias DNS_ERROR_RCODE_BADTIME DNS_ERROR_RCODE_LAST; + +enum : uint { DNS_ERROR_PACKET_FMT_BASE = 9500 } + +enum : uint { DNS_INFO_NO_RECORDS = 9501 } + +enum : uint { DNS_ERROR_BAD_PACKET = 9502 } + +enum : uint { DNS_ERROR_NO_PACKET = 9503 } + +enum : uint { DNS_ERROR_RCODE = 9504 } + +enum : uint { DNS_ERROR_UNSECURE_PACKET = 9505 } + +alias DNS_ERROR_UNSECURE_PACKET DNS_STATUS_PACKET_UNSECURE; + +alias ERROR_OUTOFMEMORY DNS_ERROR_NO_MEMORY; +alias ERROR_INVALID_NAME DNS_ERROR_INVALID_NAME; +alias ERROR_INVALID_DATA DNS_ERROR_INVALID_DATA; + +enum : uint { DNS_ERROR_GENERAL_API_BASE = 9550 } + +enum : uint { DNS_ERROR_INVALID_TYPE = 9551 } + +enum : uint { DNS_ERROR_INVALID_IP_ADDRESS = 9552 } + +enum : uint { DNS_ERROR_INVALID_PROPERTY = 9553 } + +enum : uint { DNS_ERROR_TRY_AGAIN_LATER = 9554 } + +enum : uint { DNS_ERROR_NOT_UNIQUE = 9555 } + +enum : uint { DNS_ERROR_NON_RFC_NAME = 9556 } + +enum : uint { DNS_STATUS_FQDN = 9557 } + +enum : uint { DNS_STATUS_DOTTED_NAME = 9558 } + +enum : uint { DNS_STATUS_SINGLE_PART_NAME = 9559 } + +enum : uint { DNS_ERROR_INVALID_NAME_CHAR = 9560 } + +enum : uint { DNS_ERROR_NUMERIC_NAME = 9561 } + +enum : uint { DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER = 9562 } + +enum : uint { DNS_ERROR_ZONE_BASE = 9600 } + +enum : uint { DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601 } + +enum : uint { DNS_ERROR_NO_ZONE_INFO = 9602 } + +enum : uint { DNS_ERROR_INVALID_ZONE_OPERATION = 9603 } + +enum : uint { DNS_ERROR_ZONE_CONFIGURATION_ERROR = 9604 } + +enum : uint { DNS_ERROR_ZONE_HAS_NO_SOA_RECORD = 9605 } + +enum : uint { DNS_ERROR_ZONE_HAS_NO_NS_RECORDS = 9606 } + +enum : uint { DNS_ERROR_ZONE_LOCKED = 9607 } + +enum : uint { DNS_ERROR_ZONE_CREATION_FAILED = 9608 } + +enum : uint { DNS_ERROR_ZONE_ALREADY_EXISTS = 9609 } + +enum : uint { DNS_ERROR_AUTOZONE_ALREADY_EXISTS = 9610 } + +enum : uint { DNS_ERROR_INVALID_ZONE_TYPE = 9611 } + +enum : uint { DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP = 9612 } + +enum : uint { DNS_ERROR_ZONE_NOT_SECONDARY = 9613 } + +enum : uint { DNS_ERROR_NEED_SECONDARY_ADDRESSES = 9614 } + +enum : uint { DNS_ERROR_WINS_INIT_FAILED = 9615 } + +enum : uint { DNS_ERROR_NEED_WINS_SERVERS = 9616 } + +enum : uint { DNS_ERROR_NBSTAT_INIT_FAILED = 9617 } + +enum : uint { DNS_ERROR_SOA_DELETE_INVALID = 9618 } + +enum : uint { DNS_ERROR_FORWARDER_ALREADY_EXISTS = 9619 } + +enum : uint { DNS_ERROR_ZONE_REQUIRES_MASTER_IP = 9620 } + +enum : uint { DNS_ERROR_ZONE_IS_SHUTDOWN = 9621 } + +enum : uint { DNS_ERROR_DATAFILE_BASE = 9650 } + +enum : uint { DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651 } + +enum : uint { DNS_ERROR_INVALID_DATAFILE_NAME = 9652 } + +enum : uint { DNS_ERROR_DATAFILE_OPEN_FAILURE = 9653 } + +enum : uint { DNS_ERROR_FILE_WRITEBACK_FAILED = 9654 } + +enum : uint { DNS_ERROR_DATAFILE_PARSING = 9655 } + +enum : uint { DNS_ERROR_DATABASE_BASE = 9700 } + +enum : uint { DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701 } + +enum : uint { DNS_ERROR_RECORD_FORMAT = 9702 } + +enum : uint { DNS_ERROR_NODE_CREATION_FAILED = 9703 } + +enum : uint { DNS_ERROR_UNKNOWN_RECORD_TYPE = 9704 } + +enum : uint { DNS_ERROR_RECORD_TIMED_OUT = 9705 } + +enum : uint { DNS_ERROR_NAME_NOT_IN_ZONE = 9706 } + +enum : uint { DNS_ERROR_CNAME_LOOP = 9707 } + +enum : uint { DNS_ERROR_NODE_IS_CNAME = 9708 } + +enum : uint { DNS_ERROR_CNAME_COLLISION = 9709 } + +enum : uint { DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT = 9710 } + +enum : uint { DNS_ERROR_RECORD_ALREADY_EXISTS = 9711 } + +enum : uint { DNS_ERROR_SECONDARY_DATA = 9712 } + +enum : uint { DNS_ERROR_NO_CREATE_CACHE_DATA = 9713 } + +enum : uint { DNS_ERROR_NAME_DOES_NOT_EXIST = 9714 } + +enum : uint { DNS_WARNING_PTR_CREATE_FAILED = 9715 } + +enum : uint { DNS_WARNING_DOMAIN_UNDELETED = 9716 } + +enum : uint { DNS_ERROR_DS_UNAVAILABLE = 9717 } + +enum : uint { DNS_ERROR_DS_ZONE_ALREADY_EXISTS = 9718 } + +enum : uint { DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE = 9719 } + +enum : uint { DNS_ERROR_OPERATION_BASE = 9750 } + +enum : uint { DNS_INFO_AXFR_COMPLETE = 9751 } + +enum : uint { DNS_ERROR_AXFR = 9752 } + +enum : uint { DNS_INFO_ADDED_LOCAL_WINS = 9753 } + +enum : uint { DNS_ERROR_SECURE_BASE = 9800 } + +enum : uint { DNS_STATUS_CONTINUE_NEEDED = 9801 } + +enum : uint { DNS_ERROR_SETUP_BASE = 9850 } + +enum : uint { DNS_ERROR_NO_TCPIP = 9851 } + +enum : uint { DNS_ERROR_NO_DNS_SERVERS = 9852 } + +enum : uint { DNS_ERROR_DP_BASE = 9900 } + +enum : uint { DNS_ERROR_DP_DOES_NOT_EXIST = 9901 } + +enum : uint { DNS_ERROR_DP_ALREADY_EXISTS = 9902 } + +enum : uint { DNS_ERROR_DP_NOT_ENLISTED = 9903 } + +enum : uint { DNS_ERROR_DP_ALREADY_ENLISTED = 9904 } + +// #ifndef WSABASEERR +enum : uint { WSABASEERR = 10000 } + +enum : uint { WSAEINTR = 10004 } + +enum : uint { WSAEBADF = 10009 } + +enum : uint { WSAEACCES = 10013 } + +enum : uint { WSAEFAULT = 10014 } + +enum : uint { WSAEINVAL = 10022 } + +enum : uint { WSAEMFILE = 10024 } + +enum : uint { WSAEWOULDBLOCK = 10035 } + +enum : uint { WSAEINPROGRESS = 10036 } + +enum : uint { WSAEALREADY = 10037 } + +enum : uint { WSAENOTSOCK = 10038 } + +enum : uint { WSAEDESTADDRREQ = 10039 } + +enum : uint { WSAEMSGSIZE = 10040 } + +enum : uint { WSAEPROTOTYPE = 10041 } + +enum : uint { WSAENOPROTOOPT = 10042 } + +enum : uint { WSAEPROTONOSUPPORT = 10043 } + +enum : uint { WSAESOCKTNOSUPPORT = 10044 } + +enum : uint { WSAEOPNOTSUPP = 10045 } + +enum : uint { WSAEPFNOSUPPORT = 10046 } + +enum : uint { WSAEAFNOSUPPORT = 10047 } + +enum : uint { WSAEADDRINUSE = 10048 } + +enum : uint { WSAEADDRNOTAVAIL = 10049 } + +enum : uint { WSAENETDOWN = 10050 } + +enum : uint { WSAENETUNREACH = 10051 } + +enum : uint { WSAENETRESET = 10052 } + +enum : uint { WSAECONNABORTED = 10053 } + +enum : uint { WSAECONNRESET = 10054 } + +enum : uint { WSAENOBUFS = 10055 } + +enum : uint { WSAEISCONN = 10056 } + +enum : uint { WSAENOTCONN = 10057 } + +enum : uint { WSAESHUTDOWN = 10058 } + +enum : uint { WSAETOOMANYREFS = 10059 } + +enum : uint { WSAETIMEDOUT = 10060 } + +enum : uint { WSAECONNREFUSED = 10061 } + +enum : uint { WSAELOOP = 10062 } + +enum : uint { WSAENAMETOOLONG = 10063 } + +enum : uint { WSAEHOSTDOWN = 10064 } + +enum : uint { WSAEHOSTUNREACH = 10065 } + +enum : uint { WSAENOTEMPTY = 10066 } + +enum : uint { WSAEPROCLIM = 10067 } + +enum : uint { WSAEUSERS = 10068 } + +enum : uint { WSAEDQUOT = 10069 } + +enum : uint { WSAESTALE = 10070 } + +enum : uint { WSAEREMOTE = 10071 } + +enum : uint { WSASYSNOTREADY = 10091 } + +enum : uint { WSAVERNOTSUPPORTED = 10092 } + +enum : uint { WSANOTINITIALISED = 10093 } + +enum : uint { WSAEDISCON = 10101 } + +enum : uint { WSAENOMORE = 10102 } + +enum : uint { WSAECANCELLED = 10103 } + +enum : uint { WSAEINVALIDPROCTABLE = 10104 } + +enum : uint { WSAEINVALIDPROVIDER = 10105 } + +enum : uint { WSAEPROVIDERFAILEDINIT = 10106 } + +enum : uint { WSASYSCALLFAILURE = 10107 } + +enum : uint { WSASERVICE_NOT_FOUND = 10108 } + +enum : uint { WSATYPE_NOT_FOUND = 10109 } + +enum : uint { WSA_E_NO_MORE = 10110 } + +enum : uint { WSA_E_CANCELLED = 10111 } + +enum : uint { WSAEREFUSED = 10112 } + +enum : uint { WSAHOST_NOT_FOUND = 11001 } + +enum : uint { WSATRY_AGAIN = 11002 } + +enum : uint { WSANO_RECOVERY = 11003 } + +enum : uint { WSANO_DATA = 11004 } + +enum : uint { WSA_QOS_RECEIVERS = 11005 } + +enum : uint { WSA_QOS_SENDERS = 11006 } + +enum : uint { WSA_QOS_NO_SENDERS = 11007 } + +enum : uint { WSA_QOS_NO_RECEIVERS = 11008 } + +enum : uint { WSA_QOS_REQUEST_CONFIRMED = 11009 } + +enum : uint { WSA_QOS_ADMISSION_FAILURE = 11010 } + +enum : uint { WSA_QOS_POLICY_FAILURE = 11011 } + +enum : uint { WSA_QOS_BAD_STYLE = 11012 } + +enum : uint { WSA_QOS_BAD_OBJECT = 11013 } + +enum : uint { WSA_QOS_TRAFFIC_CTRL_ERROR = 11014 } + +enum : uint { WSA_QOS_GENERIC_ERROR = 11015 } + +enum : uint { WSA_QOS_ESERVICETYPE = 11016 } + +enum : uint { WSA_QOS_EFLOWSPEC = 11017 } + +enum : uint { WSA_QOS_EPROVSPECBUF = 11018 } + +enum : uint { WSA_QOS_EFILTERSTYLE = 11019 } + +enum : uint { WSA_QOS_EFILTERTYPE = 11020 } + +enum : uint { WSA_QOS_EFILTERCOUNT = 11021 } + +enum : uint { WSA_QOS_EOBJLENGTH = 11022 } + +enum : uint { WSA_QOS_EFLOWCOUNT = 11023 } + +enum : uint { WSA_QOS_EUNKOWNPSOBJ = 11024 } + +enum : uint { WSA_QOS_EPOLICYOBJ = 11025 } + +enum : uint { WSA_QOS_EFLOWDESC = 11026 } + +enum : uint { WSA_QOS_EPSFLOWSPEC = 11027 } + +enum : uint { WSA_QOS_EPSFILTERSPEC = 11028 } + +enum : uint { WSA_QOS_ESDMODEOBJ = 11029 } + +enum : uint { WSA_QOS_ESHAPERATEOBJ = 11030 } + +enum : uint { WSA_QOS_RESERVED_PETYPE = 11031 } + +// #endif // defined(WSABASEERR) + +enum : uint { ERROR_SXS_SECTION_NOT_FOUND = 14000 } + +enum : uint { ERROR_SXS_CANT_GEN_ACTCTX = 14001 } + +enum : uint { ERROR_SXS_INVALID_ACTCTXDATA_FORMAT = 14002 } + +enum : uint { ERROR_SXS_ASSEMBLY_NOT_FOUND = 14003 } + +enum : uint { ERROR_SXS_MANIFEST_FORMAT_ERROR = 14004 } + +enum : uint { ERROR_SXS_MANIFEST_PARSE_ERROR = 14005 } + +enum : uint { ERROR_SXS_ACTIVATION_CONTEXT_DISABLED = 14006 } + +enum : uint { ERROR_SXS_KEY_NOT_FOUND = 14007 } + +enum : uint { ERROR_SXS_VERSION_CONFLICT = 14008 } + +enum : uint { ERROR_SXS_WRONG_SECTION_TYPE = 14009 } + +enum : uint { ERROR_SXS_THREAD_QUERIES_DISABLED = 14010 } + +enum : uint { ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET = 14011 } + +enum : uint { ERROR_SXS_UNKNOWN_ENCODING_GROUP = 14012 } + +enum : uint { ERROR_SXS_UNKNOWN_ENCODING = 14013 } + +enum : uint { ERROR_SXS_INVALID_XML_NAMESPACE_URI = 14014 } + +enum : uint { ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14015 } + +enum : uint { ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14016 } + +enum : uint { ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE = 14017 } + +enum : uint { ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE = 14018 } + +enum : uint { ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE = 14019 } + +enum : uint { ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT = 14020 } + +enum : uint { ERROR_SXS_DUPLICATE_DLL_NAME = 14021 } + +enum : uint { ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME = 14022 } + +enum : uint { ERROR_SXS_DUPLICATE_CLSID = 14023 } + +enum : uint { ERROR_SXS_DUPLICATE_IID = 14024 } + +enum : uint { ERROR_SXS_DUPLICATE_TLBID = 14025 } + +enum : uint { ERROR_SXS_DUPLICATE_PROGID = 14026 } + +enum : uint { ERROR_SXS_DUPLICATE_ASSEMBLY_NAME = 14027 } + +enum : uint { ERROR_SXS_FILE_HASH_MISMATCH = 14028 } + +enum : uint { ERROR_SXS_POLICY_PARSE_ERROR = 14029 } + +enum : uint { ERROR_SXS_XML_E_MISSINGQUOTE = 14030 } + +enum : uint { ERROR_SXS_XML_E_COMMENTSYNTAX = 14031 } + +enum : uint { ERROR_SXS_XML_E_BADSTARTNAMECHAR = 14032 } + +enum : uint { ERROR_SXS_XML_E_BADNAMECHAR = 14033 } + +enum : uint { ERROR_SXS_XML_E_BADCHARINSTRING = 14034 } + +enum : uint { ERROR_SXS_XML_E_XMLDECLSYNTAX = 14035 } + +enum : uint { ERROR_SXS_XML_E_BADCHARDATA = 14036 } + +enum : uint { ERROR_SXS_XML_E_MISSINGWHITESPACE = 14037 } + +enum : uint { ERROR_SXS_XML_E_EXPECTINGTAGEND = 14038 } + +enum : uint { ERROR_SXS_XML_E_MISSINGSEMICOLON = 14039 } + +enum : uint { ERROR_SXS_XML_E_UNBALANCEDPAREN = 14040 } + +enum : uint { ERROR_SXS_XML_E_INTERNALERROR = 14041 } + +enum : uint { ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE = 14042 } + +enum : uint { ERROR_SXS_XML_E_INCOMPLETE_ENCODING = 14043 } + +enum : uint { ERROR_SXS_XML_E_MISSING_PAREN = 14044 } + +enum : uint { ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE = 14045 } + +enum : uint { ERROR_SXS_XML_E_MULTIPLE_COLONS = 14046 } + +enum : uint { ERROR_SXS_XML_E_INVALID_DECIMAL = 14047 } + +enum : uint { ERROR_SXS_XML_E_INVALID_HEXIDECIMAL = 14048 } + +enum : uint { ERROR_SXS_XML_E_INVALID_UNICODE = 14049 } + +enum : uint { ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK = 14050 } + +enum : uint { ERROR_SXS_XML_E_UNEXPECTEDENDTAG = 14051 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDTAG = 14052 } + +enum : uint { ERROR_SXS_XML_E_DUPLICATEATTRIBUTE = 14053 } + +enum : uint { ERROR_SXS_XML_E_MULTIPLEROOTS = 14054 } + +enum : uint { ERROR_SXS_XML_E_INVALIDATROOTLEVEL = 14055 } + +enum : uint { ERROR_SXS_XML_E_BADXMLDECL = 14056 } + +enum : uint { ERROR_SXS_XML_E_MISSINGROOT = 14057 } + +enum : uint { ERROR_SXS_XML_E_UNEXPECTEDEOF = 14058 } + +enum : uint { ERROR_SXS_XML_E_BADPEREFINSUBSET = 14059 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDSTARTTAG = 14060 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDENDTAG = 14061 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDSTRING = 14062 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDCOMMENT = 14063 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDDECL = 14064 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDCDATA = 14065 } + +enum : uint { ERROR_SXS_XML_E_RESERVEDNAMESPACE = 14066 } + +enum : uint { ERROR_SXS_XML_E_INVALIDENCODING = 14067 } + +enum : uint { ERROR_SXS_XML_E_INVALIDSWITCH = 14068 } + +enum : uint { ERROR_SXS_XML_E_BADXMLCASE = 14069 } + +enum : uint { ERROR_SXS_XML_E_INVALID_STANDALONE = 14070 } + +enum : uint { ERROR_SXS_XML_E_UNEXPECTED_STANDALONE = 14071 } + +enum : uint { ERROR_SXS_XML_E_INVALID_VERSION = 14072 } + +enum : uint { ERROR_SXS_XML_E_MISSINGEQUALS = 14073 } + +enum : uint { ERROR_SXS_PROTECTION_RECOVERY_FAILED = 14074 } + +enum : uint { ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT = 14075 } + +enum : uint { ERROR_SXS_PROTECTION_CATALOG_NOT_VALID = 14076 } + +enum : uint { ERROR_SXS_UNTRANSLATABLE_HRESULT = 14077 } + +enum : uint { ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING = 14078 } + +enum : uint { ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE = 14079 } + +enum : uint { ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME = 14080 } + +enum : uint { ERROR_IPSEC_QM_POLICY_EXISTS = 13000 } + +enum : uint { ERROR_IPSEC_QM_POLICY_NOT_FOUND = 13001 } + +enum : uint { ERROR_IPSEC_QM_POLICY_IN_USE = 13002 } + +enum : uint { ERROR_IPSEC_MM_POLICY_EXISTS = 13003 } + +enum : uint { ERROR_IPSEC_MM_POLICY_NOT_FOUND = 13004 } + +enum : uint { ERROR_IPSEC_MM_POLICY_IN_USE = 13005 } + +enum : uint { ERROR_IPSEC_MM_FILTER_EXISTS = 13006 } + +enum : uint { ERROR_IPSEC_MM_FILTER_NOT_FOUND = 13007 } + +enum : uint { ERROR_IPSEC_TRANSPORT_FILTER_EXISTS = 13008 } + +enum : uint { ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND = 13009 } + +enum : uint { ERROR_IPSEC_MM_AUTH_EXISTS = 13010 } + +enum : uint { ERROR_IPSEC_MM_AUTH_NOT_FOUND = 13011 } + +enum : uint { ERROR_IPSEC_MM_AUTH_IN_USE = 13012 } + +enum : uint { ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND = 13013 } + +enum : uint { ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND = 13014 } + +enum : uint { ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND = 13015 } + +enum : uint { ERROR_IPSEC_TUNNEL_FILTER_EXISTS = 13016 } + +enum : uint { ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND = 13017 } + +enum : uint { ERROR_IPSEC_MM_FILTER_PENDING_DELETION = 13018 } + +enum : uint { ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION = 13019 } + +enum : uint { ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION = 13020 } + +enum : uint { ERROR_IPSEC_MM_POLICY_PENDING_DELETION = 13021 } + +enum : uint { ERROR_IPSEC_MM_AUTH_PENDING_DELETION = 13022 } + +enum : uint { ERROR_IPSEC_QM_POLICY_PENDING_DELETION = 13023 } + +enum : uint { ERROR_IPSEC_IKE_NEG_STATUS_BEGIN = 13800 } + +enum : uint { ERROR_IPSEC_IKE_AUTH_FAIL = 13801 } + +enum : uint { ERROR_IPSEC_IKE_ATTRIB_FAIL = 13802 } + +enum : uint { ERROR_IPSEC_IKE_NEGOTIATION_PENDING = 13803 } + +enum : uint { ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR = 13804 } + +enum : uint { ERROR_IPSEC_IKE_TIMED_OUT = 13805 } + +enum : uint { ERROR_IPSEC_IKE_NO_CERT = 13806 } + +enum : uint { ERROR_IPSEC_IKE_SA_DELETED = 13807 } + +enum : uint { ERROR_IPSEC_IKE_SA_REAPED = 13808 } + +enum : uint { ERROR_IPSEC_IKE_MM_ACQUIRE_DROP = 13809 } + +enum : uint { ERROR_IPSEC_IKE_QM_ACQUIRE_DROP = 13810 } + +enum : uint { ERROR_IPSEC_IKE_QUEUE_DROP_MM = 13811 } + +enum : uint { ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM = 13812 } + +enum : uint { ERROR_IPSEC_IKE_DROP_NO_RESPONSE = 13813 } + +enum : uint { ERROR_IPSEC_IKE_MM_DELAY_DROP = 13814 } + +enum : uint { ERROR_IPSEC_IKE_QM_DELAY_DROP = 13815 } + +enum : uint { ERROR_IPSEC_IKE_ERROR = 13816 } + +enum : uint { ERROR_IPSEC_IKE_CRL_FAILED = 13817 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_KEY_USAGE = 13818 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_CERT_TYPE = 13819 } + +enum : uint { ERROR_IPSEC_IKE_NO_PRIVATE_KEY = 13820 } + +enum : uint { ERROR_IPSEC_IKE_DH_FAIL = 13822 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_HEADER = 13824 } + +enum : uint { ERROR_IPSEC_IKE_NO_POLICY = 13825 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_SIGNATURE = 13826 } + +enum : uint { ERROR_IPSEC_IKE_KERBEROS_ERROR = 13827 } + +enum : uint { ERROR_IPSEC_IKE_NO_PUBLIC_KEY = 13828 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR = 13829 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_SA = 13830 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_PROP = 13831 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_TRANS = 13832 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_KE = 13833 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_ID = 13834 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_CERT = 13835 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ = 13836 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_HASH = 13837 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_SIG = 13838 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_NONCE = 13839 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY = 13840 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_DELETE = 13841 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR = 13842 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_PAYLOAD = 13843 } + +enum : uint { ERROR_IPSEC_IKE_LOAD_SOFT_SA = 13844 } + +enum : uint { ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN = 13845 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_COOKIE = 13846 } + +enum : uint { ERROR_IPSEC_IKE_NO_PEER_CERT = 13847 } + +enum : uint { ERROR_IPSEC_IKE_PEER_CRL_FAILED = 13848 } + +enum : uint { ERROR_IPSEC_IKE_POLICY_CHANGE = 13849 } + +enum : uint { ERROR_IPSEC_IKE_NO_MM_POLICY = 13850 } + +enum : uint { ERROR_IPSEC_IKE_NOTCBPRIV = 13851 } + +enum : uint { ERROR_IPSEC_IKE_SECLOADFAIL = 13852 } + +enum : uint { ERROR_IPSEC_IKE_FAILSSPINIT = 13853 } + +enum : uint { ERROR_IPSEC_IKE_FAILQUERYSSP = 13854 } + +enum : uint { ERROR_IPSEC_IKE_SRVACQFAIL = 13855 } + +enum : uint { ERROR_IPSEC_IKE_SRVQUERYCRED = 13856 } + +enum : uint { ERROR_IPSEC_IKE_GETSPIFAIL = 13857 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_FILTER = 13858 } + +enum : uint { ERROR_IPSEC_IKE_OUT_OF_MEMORY = 13859 } + +enum : uint { ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED = 13860 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_POLICY = 13861 } + +enum : uint { ERROR_IPSEC_IKE_UNKNOWN_DOI = 13862 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_SITUATION = 13863 } + +enum : uint { ERROR_IPSEC_IKE_DH_FAILURE = 13864 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_GROUP = 13865 } + +enum : uint { ERROR_IPSEC_IKE_ENCRYPT = 13866 } + +enum : uint { ERROR_IPSEC_IKE_DECRYPT = 13867 } + +enum : uint { ERROR_IPSEC_IKE_POLICY_MATCH = 13868 } + +enum : uint { ERROR_IPSEC_IKE_UNSUPPORTED_ID = 13869 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_HASH = 13870 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_HASH_ALG = 13871 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_HASH_SIZE = 13872 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG = 13873 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_AUTH_ALG = 13874 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_SIG = 13875 } + +enum : uint { ERROR_IPSEC_IKE_LOAD_FAILED = 13876 } + +enum : uint { ERROR_IPSEC_IKE_RPC_DELETE = 13877 } + +enum : uint { ERROR_IPSEC_IKE_BENIGN_REINIT = 13878 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY = 13879 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881 } + +enum : uint { ERROR_IPSEC_IKE_MM_LIMIT = 13882 } + +enum : uint { ERROR_IPSEC_IKE_NEGOTIATION_DISABLED = 13883 } + +enum : uint { ERROR_IPSEC_IKE_NEG_STATUS_END = 13884 } + +enum : uint { SEVERITY_SUCCESS = 0 } +enum : uint { SEVERITY_ERROR = 1 } + +bit SUCCEEDED(HRESULT Status){ return Status >= 0; } + +bit FAILED(HRESULT Status){ return Status < 0; } + +// #define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR) + +// #define HRESULT_CODE(hr) ((hr) & 0xFFFF) +// #define SCODE_CODE(sc) ((sc) & 0xFFFF) + +// #define HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff) +// #define SCODE_FACILITY(sc) (((sc) >> 16) & 0x1fff) + +// #define HRESULT_SEVERITY(hr) (((hr) >> 31) & 0x1) +// #define SCODE_SEVERITY(sc) (((sc) >> 31) & 0x1) + +// #define MAKE_HRESULT(sev,fac,code) ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) +// #define MAKE_SCODE(sev,fac,code) ((SCODE) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) + +enum : uint { FACILITY_NT_BIT = 0x10000000 } + +// #define __HRESULT_FROM_WIN32(x) ((HRESULT)(x) <= 0 ? ((HRESULT)(x)) : ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000))) + +// #ifdef INLINE_HRESULT_FROM_WIN32 +// #ifndef _HRESULT_DEFINED +// #... +// ... +// #endif +// #ifndef __midl +// ... +// #else +// #... +// #endif +// #else +// #define HRESULT_FROM_WIN32(x) __HRESULT_FROM_WIN32(x) +// #endif + +// #define HRESULT_FROM_NT(x) ((HRESULT) ((x) | FACILITY_NT_BIT)) + +// #define GetScode(hr) ((SCODE) (hr)) + +// #define ResultFromScode(sc) ((HRESULT) (sc)) + +// #define PropagateResult(hrPrevious, scBase) ((HRESULT) scBase) + +// #ifdef RC_INVOKED +// #... +// #else // RC_INVOKED +// #define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc) +// #endif // RC_INVOKED + +enum : uint { NOERROR = 0 } + +enum : HRESULT { E_UNEXPECTED = cast(HRESULT)0x8000FFFFL } + +// #if defined(_WIN32) && !defined(_MAC) + +enum : HRESULT { E_NOTIMPL = cast(HRESULT)0x80004001L } + +enum : HRESULT { E_OUTOFMEMORY = cast(HRESULT)0x8007000EL } + +enum : HRESULT { E_INVALIDARG = cast(HRESULT)0x80070057L } + +enum : HRESULT { E_NOINTERFACE = cast(HRESULT)0x80004002L } + +enum : HRESULT { E_POINTER = cast(HRESULT)0x80004003L } + +enum : HRESULT { E_HANDLE = cast(HRESULT)0x80070006L } + +enum : HRESULT { E_ABORT = cast(HRESULT)0x80004004L } + +enum : HRESULT { E_FAIL = cast(HRESULT)0x80004005L } + +enum : HRESULT { E_ACCESSDENIED = cast(HRESULT)0x80070005L } + +// #else + +// #... + +// #... + +// #... + +// #... + +// #... + +// #... + +// #... + +// #... + +// #... + +// #endif //WIN32 + +enum : HRESULT { E_PENDING = cast(HRESULT)0x8000000AL } + +enum : HRESULT { CO_E_INIT_TLS = cast(HRESULT)0x80004006L } + +enum : HRESULT { CO_E_INIT_SHARED_ALLOCATOR = cast(HRESULT)0x80004007L } + +enum : HRESULT { CO_E_INIT_MEMORY_ALLOCATOR = cast(HRESULT)0x80004008L } + +enum : HRESULT { CO_E_INIT_CLASS_CACHE = cast(HRESULT)0x80004009L } + +enum : HRESULT { CO_E_INIT_RPC_CHANNEL = cast(HRESULT)0x8000400AL } + +enum : HRESULT { CO_E_INIT_TLS_SET_CHANNEL_CONTROL = cast(HRESULT)0x8000400BL } + +enum : HRESULT { CO_E_INIT_TLS_CHANNEL_CONTROL = cast(HRESULT)0x8000400CL } + +enum : HRESULT { CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = cast(HRESULT)0x8000400DL } + +enum : HRESULT { CO_E_INIT_SCM_MUTEX_EXISTS = cast(HRESULT)0x8000400EL } + +enum : HRESULT { CO_E_INIT_SCM_FILE_MAPPING_EXISTS = cast(HRESULT)0x8000400FL } + +enum : HRESULT { CO_E_INIT_SCM_MAP_VIEW_OF_FILE = cast(HRESULT)0x80004010L } + +enum : HRESULT { CO_E_INIT_SCM_EXEC_FAILURE = cast(HRESULT)0x80004011L } + +enum : HRESULT { CO_E_INIT_ONLY_SINGLE_THREADED = cast(HRESULT)0x80004012L } + +enum : HRESULT { CO_E_CANT_REMOTE = cast(HRESULT)0x80004013L } + +enum : HRESULT { CO_E_BAD_SERVER_NAME = cast(HRESULT)0x80004014L } + +enum : HRESULT { CO_E_WRONG_SERVER_IDENTITY = cast(HRESULT)0x80004015L } + +enum : HRESULT { CO_E_OLE1DDE_DISABLED = cast(HRESULT)0x80004016L } + +enum : HRESULT { CO_E_RUNAS_SYNTAX = cast(HRESULT)0x80004017L } + +enum : HRESULT { CO_E_CREATEPROCESS_FAILURE = cast(HRESULT)0x80004018L } + +enum : HRESULT { CO_E_RUNAS_CREATEPROCESS_FAILURE = cast(HRESULT)0x80004019L } + +enum : HRESULT { CO_E_RUNAS_LOGON_FAILURE = cast(HRESULT)0x8000401AL } + +enum : HRESULT { CO_E_LAUNCH_PERMSSION_DENIED = cast(HRESULT)0x8000401BL } + +enum : HRESULT { CO_E_START_SERVICE_FAILURE = cast(HRESULT)0x8000401CL } + +enum : HRESULT { CO_E_REMOTE_COMMUNICATION_FAILURE = cast(HRESULT)0x8000401DL } + +enum : HRESULT { CO_E_SERVER_START_TIMEOUT = cast(HRESULT)0x8000401EL } + +enum : HRESULT { CO_E_CLSREG_INCONSISTENT = cast(HRESULT)0x8000401FL } + +enum : HRESULT { CO_E_IIDREG_INCONSISTENT = cast(HRESULT)0x80004020L } + +enum : HRESULT { CO_E_NOT_SUPPORTED = cast(HRESULT)0x80004021L } + +enum : HRESULT { CO_E_RELOAD_DLL = cast(HRESULT)0x80004022L } + +enum : HRESULT { CO_E_MSI_ERROR = cast(HRESULT)0x80004023L } + +enum : HRESULT { CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT = cast(HRESULT)0x80004024L } + +enum : HRESULT { CO_E_SERVER_PAUSED = cast(HRESULT)0x80004025L } + +enum : HRESULT { CO_E_SERVER_NOT_PAUSED = cast(HRESULT)0x80004026L } + +enum : HRESULT { CO_E_CLASS_DISABLED = cast(HRESULT)0x80004027L } + +enum : HRESULT { CO_E_CLRNOTAVAILABLE = cast(HRESULT)0x80004028L } + +enum : HRESULT { CO_E_ASYNC_WORK_REJECTED = cast(HRESULT)0x80004029L } + +enum : HRESULT { CO_E_SERVER_INIT_TIMEOUT = cast(HRESULT)0x8000402AL } + +enum : HRESULT { CO_E_NO_SECCTX_IN_ACTIVATE = cast(HRESULT)0x8000402BL } + +enum : HRESULT { CO_E_TRACKER_CONFIG = cast(HRESULT)0x80004030L } + +enum : HRESULT { CO_E_THREADPOOL_CONFIG = cast(HRESULT)0x80004031L } + +enum : HRESULT { CO_E_SXS_CONFIG = cast(HRESULT)0x80004032L } + +enum : HRESULT { CO_E_MALFORMED_SPN = cast(HRESULT)0x80004033L } + +enum : HRESULT { S_OK = cast(HRESULT)0x00000000 } +enum : HRESULT { S_FALSE = cast(HRESULT)0x00000001 } + +enum : HRESULT { OLE_E_FIRST = cast(HRESULT)0x80040000 } +enum : HRESULT { OLE_E_LAST = cast(HRESULT)0x800400FF } +enum : HRESULT { OLE_S_FIRST = cast(HRESULT)0x00040000 } +enum : HRESULT { OLE_S_LAST = cast(HRESULT)0x000400FF } + +enum : HRESULT { OLE_E_OLEVERB = cast(HRESULT)0x80040000L } + +enum : HRESULT { OLE_E_ADVF = cast(HRESULT)0x80040001L } + +enum : HRESULT { OLE_E_ENUM_NOMORE = cast(HRESULT)0x80040002L } + +enum : HRESULT { OLE_E_ADVISENOTSUPPORTED = cast(HRESULT)0x80040003L } + +enum : HRESULT { OLE_E_NOCONNECTION = cast(HRESULT)0x80040004L } + +enum : HRESULT { OLE_E_NOTRUNNING = cast(HRESULT)0x80040005L } + +enum : HRESULT { OLE_E_NOCACHE = cast(HRESULT)0x80040006L } + +enum : HRESULT { OLE_E_BLANK = cast(HRESULT)0x80040007L } + +enum : HRESULT { OLE_E_CLASSDIFF = cast(HRESULT)0x80040008L } + +enum : HRESULT { OLE_E_CANT_GETMONIKER = cast(HRESULT)0x80040009L } + +enum : HRESULT { OLE_E_CANT_BINDTOSOURCE = cast(HRESULT)0x8004000AL } + +enum : HRESULT { OLE_E_STATIC = cast(HRESULT)0x8004000BL } + +enum : HRESULT { OLE_E_PROMPTSAVECANCELLED = cast(HRESULT)0x8004000CL } + +enum : HRESULT { OLE_E_INVALIDRECT = cast(HRESULT)0x8004000DL } + +enum : HRESULT { OLE_E_WRONGCOMPOBJ = cast(HRESULT)0x8004000EL } + +enum : HRESULT { OLE_E_INVALIDHWND = cast(HRESULT)0x8004000FL } + +enum : HRESULT { OLE_E_NOT_INPLACEACTIVE = cast(HRESULT)0x80040010L } + +enum : HRESULT { OLE_E_CANTCONVERT = cast(HRESULT)0x80040011L } + +enum : HRESULT { OLE_E_NOSTORAGE = cast(HRESULT)0x80040012L } + +enum : HRESULT { DV_E_FORMATETC = cast(HRESULT)0x80040064L } + +enum : HRESULT { DV_E_DVTARGETDEVICE = cast(HRESULT)0x80040065L } + +enum : HRESULT { DV_E_STGMEDIUM = cast(HRESULT)0x80040066L } + +enum : HRESULT { DV_E_STATDATA = cast(HRESULT)0x80040067L } + +enum : HRESULT { DV_E_LINDEX = cast(HRESULT)0x80040068L } + +enum : HRESULT { DV_E_TYMED = cast(HRESULT)0x80040069L } + +enum : HRESULT { DV_E_CLIPFORMAT = cast(HRESULT)0x8004006AL } + +enum : HRESULT { DV_E_DVASPECT = cast(HRESULT)0x8004006BL } + +enum : HRESULT { DV_E_DVTARGETDEVICE_SIZE = cast(HRESULT)0x8004006CL } + +enum : HRESULT { DV_E_NOIVIEWOBJECT = cast(HRESULT)0x8004006DL } + +enum : uint { DRAGDROP_E_FIRST = 0x80040100 } +enum : uint { DRAGDROP_E_LAST = 0x8004010F } +enum : uint { DRAGDROP_S_FIRST = 0x00040100 } +enum : uint { DRAGDROP_S_LAST = 0x0004010F } + +enum : HRESULT { DRAGDROP_E_NOTREGISTERED = cast(HRESULT)0x80040100L } + +enum : HRESULT { DRAGDROP_E_ALREADYREGISTERED = cast(HRESULT)0x80040101L } + +enum : HRESULT { DRAGDROP_E_INVALIDHWND = cast(HRESULT)0x80040102L } + +enum : uint { CLASSFACTORY_E_FIRST = 0x80040110 } +enum : uint { CLASSFACTORY_E_LAST = 0x8004011F } +enum : uint { CLASSFACTORY_S_FIRST = 0x00040110 } +enum : uint { CLASSFACTORY_S_LAST = 0x0004011F } + +enum : HRESULT { CLASS_E_NOAGGREGATION = cast(HRESULT)0x80040110L } + +enum : HRESULT { CLASS_E_CLASSNOTAVAILABLE = cast(HRESULT)0x80040111L } + +enum : HRESULT { CLASS_E_NOTLICENSED = cast(HRESULT)0x80040112L } + +enum : uint { MARSHAL_E_FIRST = 0x80040120 } +enum : uint { MARSHAL_E_LAST = 0x8004012F } +enum : uint { MARSHAL_S_FIRST = 0x00040120 } +enum : uint { MARSHAL_S_LAST = 0x0004012F } +enum : uint { DATA_E_FIRST = 0x80040130 } +enum : uint { DATA_E_LAST = 0x8004013F } +enum : uint { DATA_S_FIRST = 0x00040130 } +enum : uint { DATA_S_LAST = 0x0004013F } +enum : uint { VIEW_E_FIRST = 0x80040140 } +enum : uint { VIEW_E_LAST = 0x8004014F } +enum : uint { VIEW_S_FIRST = 0x00040140 } +enum : uint { VIEW_S_LAST = 0x0004014F } + +enum : HRESULT { VIEW_E_DRAW = cast(HRESULT)0x80040140L } + +enum : uint { REGDB_E_FIRST = 0x80040150 } +enum : uint { REGDB_E_LAST = 0x8004015F } +enum : uint { REGDB_S_FIRST = 0x00040150 } +enum : uint { REGDB_S_LAST = 0x0004015F } + +enum : HRESULT { REGDB_E_READREGDB = cast(HRESULT)0x80040150L } + +enum : HRESULT { REGDB_E_WRITEREGDB = cast(HRESULT)0x80040151L } + +enum : HRESULT { REGDB_E_KEYMISSING = cast(HRESULT)0x80040152L } + +enum : HRESULT { REGDB_E_INVALIDVALUE = cast(HRESULT)0x80040153L } + +enum : HRESULT { REGDB_E_CLASSNOTREG = cast(HRESULT)0x80040154L } + +enum : HRESULT { REGDB_E_IIDNOTREG = cast(HRESULT)0x80040155L } + +enum : HRESULT { REGDB_E_BADTHREADINGMODEL = cast(HRESULT)0x80040156L } + +enum : uint { CAT_E_FIRST = 0x80040160 } +enum : uint { CAT_E_LAST = 0x80040161 } + +enum : HRESULT { CAT_E_CATIDNOEXIST = cast(HRESULT)0x80040160L } + +enum : HRESULT { CAT_E_NODESCRIPTION = cast(HRESULT)0x80040161L } + +enum : uint { CS_E_FIRST = 0x80040164 } +enum : uint { CS_E_LAST = 0x8004016F } + +enum : HRESULT { CS_E_PACKAGE_NOTFOUND = cast(HRESULT)0x80040164L } + +enum : HRESULT { CS_E_NOT_DELETABLE = cast(HRESULT)0x80040165L } + +enum : HRESULT { CS_E_CLASS_NOTFOUND = cast(HRESULT)0x80040166L } + +enum : HRESULT { CS_E_INVALID_VERSION = cast(HRESULT)0x80040167L } + +enum : HRESULT { CS_E_NO_CLASSSTORE = cast(HRESULT)0x80040168L } + +enum : HRESULT { CS_E_OBJECT_NOTFOUND = cast(HRESULT)0x80040169L } + +enum : HRESULT { CS_E_OBJECT_ALREADY_EXISTS = cast(HRESULT)0x8004016AL } + +enum : HRESULT { CS_E_INVALID_PATH = cast(HRESULT)0x8004016BL } + +enum : HRESULT { CS_E_NETWORK_ERROR = cast(HRESULT)0x8004016CL } + +enum : HRESULT { CS_E_ADMIN_LIMIT_EXCEEDED = cast(HRESULT)0x8004016DL } + +enum : HRESULT { CS_E_SCHEMA_MISMATCH = cast(HRESULT)0x8004016EL } + +enum : HRESULT { CS_E_INTERNAL_ERROR = cast(HRESULT)0x8004016FL } + +enum : uint { CACHE_E_FIRST = 0x80040170 } +enum : uint { CACHE_E_LAST = 0x8004017F } +enum : uint { CACHE_S_FIRST = 0x00040170 } +enum : uint { CACHE_S_LAST = 0x0004017F } + +enum : HRESULT { CACHE_E_NOCACHE_UPDATED = cast(HRESULT)0x80040170L } + +enum : uint { OLEOBJ_E_FIRST = 0x80040180 } +enum : uint { OLEOBJ_E_LAST = 0x8004018F } +enum : uint { OLEOBJ_S_FIRST = 0x00040180 } +enum : uint { OLEOBJ_S_LAST = 0x0004018F } + +enum : HRESULT { OLEOBJ_E_NOVERBS = cast(HRESULT)0x80040180L } + +enum : HRESULT { OLEOBJ_E_INVALIDVERB = cast(HRESULT)0x80040181L } + +enum : uint { CLIENTSITE_E_FIRST = 0x80040190 } +enum : uint { CLIENTSITE_E_LAST = 0x8004019F } +enum : uint { CLIENTSITE_S_FIRST = 0x00040190 } +enum : uint { CLIENTSITE_S_LAST = 0x0004019F } + +enum : HRESULT { INPLACE_E_NOTUNDOABLE = cast(HRESULT)0x800401A0L } + +enum : HRESULT { INPLACE_E_NOTOOLSPACE = cast(HRESULT)0x800401A1L } + +enum : uint { INPLACE_E_FIRST = 0x800401A0 } +enum : uint { INPLACE_E_LAST = 0x800401AF } +enum : uint { INPLACE_S_FIRST = 0x000401A0 } +enum : uint { INPLACE_S_LAST = 0x000401AF } +enum : uint { ENUM_E_FIRST = 0x800401B0 } +enum : uint { ENUM_E_LAST = 0x800401BF } +enum : uint { ENUM_S_FIRST = 0x000401B0 } +enum : uint { ENUM_S_LAST = 0x000401BF } +enum : uint { CONVERT10_E_FIRST = 0x800401C0 } +enum : uint { CONVERT10_E_LAST = 0x800401CF } +enum : uint { CONVERT10_S_FIRST = 0x000401C0 } +enum : uint { CONVERT10_S_LAST = 0x000401CF } + +enum : HRESULT { CONVERT10_E_OLESTREAM_GET = cast(HRESULT)0x800401C0L } + +enum : HRESULT { CONVERT10_E_OLESTREAM_PUT = cast(HRESULT)0x800401C1L } + +enum : HRESULT { CONVERT10_E_OLESTREAM_FMT = cast(HRESULT)0x800401C2L } + +enum : HRESULT { CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = cast(HRESULT)0x800401C3L } + +enum : HRESULT { CONVERT10_E_STG_FMT = cast(HRESULT)0x800401C4L } + +enum : HRESULT { CONVERT10_E_STG_NO_STD_STREAM = cast(HRESULT)0x800401C5L } + +enum : HRESULT { CONVERT10_E_STG_DIB_TO_BITMAP = cast(HRESULT)0x800401C6L } + +enum : uint { CLIPBRD_E_FIRST = 0x800401D0 } +enum : uint { CLIPBRD_E_LAST = 0x800401DF } +enum : uint { CLIPBRD_S_FIRST = 0x000401D0 } +enum : uint { CLIPBRD_S_LAST = 0x000401DF } + +enum : HRESULT { CLIPBRD_E_CANT_OPEN = cast(HRESULT)0x800401D0L } + +enum : HRESULT { CLIPBRD_E_CANT_EMPTY = cast(HRESULT)0x800401D1L } + +enum : HRESULT { CLIPBRD_E_CANT_SET = cast(HRESULT)0x800401D2L } + +enum : HRESULT { CLIPBRD_E_BAD_DATA = cast(HRESULT)0x800401D3L } + +enum : HRESULT { CLIPBRD_E_CANT_CLOSE = cast(HRESULT)0x800401D4L } + +enum : uint { MK_E_FIRST = 0x800401E0 } +enum : uint { MK_E_LAST = 0x800401EF } +enum : uint { MK_S_FIRST = 0x000401E0 } +enum : uint { MK_S_LAST = 0x000401EF } + +enum : HRESULT { MK_E_CONNECTMANUALLY = cast(HRESULT)0x800401E0L } + +enum : HRESULT { MK_E_EXCEEDEDDEADLINE = cast(HRESULT)0x800401E1L } + +enum : HRESULT { MK_E_NEEDGENERIC = cast(HRESULT)0x800401E2L } + +enum : HRESULT { MK_E_UNAVAILABLE = cast(HRESULT)0x800401E3L } + +enum : HRESULT { MK_E_SYNTAX = cast(HRESULT)0x800401E4L } + +enum : HRESULT { MK_E_NOOBJECT = cast(HRESULT)0x800401E5L } + +enum : HRESULT { MK_E_INVALIDEXTENSION = cast(HRESULT)0x800401E6L } + +enum : HRESULT { MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = cast(HRESULT)0x800401E7L } + +enum : HRESULT { MK_E_NOTBINDABLE = cast(HRESULT)0x800401E8L } + +enum : HRESULT { MK_E_NOTBOUND = cast(HRESULT)0x800401E9L } + +enum : HRESULT { MK_E_CANTOPENFILE = cast(HRESULT)0x800401EAL } + +enum : HRESULT { MK_E_MUSTBOTHERUSER = cast(HRESULT)0x800401EBL } + +enum : HRESULT { MK_E_NOINVERSE = cast(HRESULT)0x800401ECL } + +enum : HRESULT { MK_E_NOSTORAGE = cast(HRESULT)0x800401EDL } + +enum : HRESULT { MK_E_NOPREFIX = cast(HRESULT)0x800401EEL } + +enum : HRESULT { MK_E_ENUMERATION_FAILED = cast(HRESULT)0x800401EFL } + +enum : uint { CO_E_FIRST = 0x800401F0 } +enum : uint { CO_E_LAST = 0x800401FF } +enum : uint { CO_S_FIRST = 0x000401F0 } +enum : uint { CO_S_LAST = 0x000401FF } + +enum : HRESULT { CO_E_NOTINITIALIZED = cast(HRESULT)0x800401F0L } + +enum : HRESULT { CO_E_ALREADYINITIALIZED = cast(HRESULT)0x800401F1L } + +enum : HRESULT { CO_E_CANTDETERMINECLASS = cast(HRESULT)0x800401F2L } + +enum : HRESULT { CO_E_CLASSSTRING = cast(HRESULT)0x800401F3L } + +enum : HRESULT { CO_E_IIDSTRING = cast(HRESULT)0x800401F4L } + +enum : HRESULT { CO_E_APPNOTFOUND = cast(HRESULT)0x800401F5L } + +enum : HRESULT { CO_E_APPSINGLEUSE = cast(HRESULT)0x800401F6L } + +enum : HRESULT { CO_E_ERRORINAPP = cast(HRESULT)0x800401F7L } + +enum : HRESULT { CO_E_DLLNOTFOUND = cast(HRESULT)0x800401F8L } + +enum : HRESULT { CO_E_ERRORINDLL = cast(HRESULT)0x800401F9L } + +enum : HRESULT { CO_E_WRONGOSFORAPP = cast(HRESULT)0x800401FAL } + +enum : HRESULT { CO_E_OBJNOTREG = cast(HRESULT)0x800401FBL } + +enum : HRESULT { CO_E_OBJISREG = cast(HRESULT)0x800401FCL } + +enum : HRESULT { CO_E_OBJNOTCONNECTED = cast(HRESULT)0x800401FDL } + +enum : HRESULT { CO_E_APPDIDNTREG = cast(HRESULT)0x800401FEL } + +enum : HRESULT { CO_E_RELEASED = cast(HRESULT)0x800401FFL } + +enum : uint { EVENT_E_FIRST = 0x80040200 } +enum : uint { EVENT_E_LAST = 0x8004021F } +enum : uint { EVENT_S_FIRST = 0x00040200 } +enum : uint { EVENT_S_LAST = 0x0004021F } + +enum : HRESULT { EVENT_S_SOME_SUBSCRIBERS_FAILED = cast(HRESULT)0x00040200L } + +enum : HRESULT { EVENT_E_ALL_SUBSCRIBERS_FAILED = cast(HRESULT)0x80040201L } + +enum : HRESULT { EVENT_S_NOSUBSCRIBERS = cast(HRESULT)0x00040202L } + +enum : HRESULT { EVENT_E_QUERYSYNTAX = cast(HRESULT)0x80040203L } + +enum : HRESULT { EVENT_E_QUERYFIELD = cast(HRESULT)0x80040204L } + +enum : HRESULT { EVENT_E_INTERNALEXCEPTION = cast(HRESULT)0x80040205L } + +enum : HRESULT { EVENT_E_INTERNALERROR = cast(HRESULT)0x80040206L } + +enum : HRESULT { EVENT_E_INVALID_PER_USER_SID = cast(HRESULT)0x80040207L } + +enum : HRESULT { EVENT_E_USER_EXCEPTION = cast(HRESULT)0x80040208L } + +enum : HRESULT { EVENT_E_TOO_MANY_METHODS = cast(HRESULT)0x80040209L } + +enum : HRESULT { EVENT_E_MISSING_EVENTCLASS = cast(HRESULT)0x8004020AL } + +enum : HRESULT { EVENT_E_NOT_ALL_REMOVED = cast(HRESULT)0x8004020BL } + +enum : HRESULT { EVENT_E_COMPLUS_NOT_INSTALLED = cast(HRESULT)0x8004020CL } + +enum : HRESULT { EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT = cast(HRESULT)0x8004020DL } + +enum : HRESULT { EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT = cast(HRESULT)0x8004020EL } + +enum : HRESULT { EVENT_E_INVALID_EVENT_CLASS_PARTITION = cast(HRESULT)0x8004020FL } + +enum : HRESULT { EVENT_E_PER_USER_SID_NOT_LOGGED_ON = cast(HRESULT)0x80040210L } + +enum : uint { XACT_E_FIRST = 0x8004D000 } +enum : uint { XACT_E_LAST = 0x8004D029 } +enum : uint { XACT_S_FIRST = 0x0004D000 } +enum : uint { XACT_S_LAST = 0x0004D010 } + +enum : HRESULT { XACT_E_ALREADYOTHERSINGLEPHASE = cast(HRESULT)0x8004D000L } + +enum : HRESULT { XACT_E_CANTRETAIN = cast(HRESULT)0x8004D001L } + +enum : HRESULT { XACT_E_COMMITFAILED = cast(HRESULT)0x8004D002L } + +enum : HRESULT { XACT_E_COMMITPREVENTED = cast(HRESULT)0x8004D003L } + +enum : HRESULT { XACT_E_HEURISTICABORT = cast(HRESULT)0x8004D004L } + +enum : HRESULT { XACT_E_HEURISTICCOMMIT = cast(HRESULT)0x8004D005L } + +enum : HRESULT { XACT_E_HEURISTICDAMAGE = cast(HRESULT)0x8004D006L } + +enum : HRESULT { XACT_E_HEURISTICDANGER = cast(HRESULT)0x8004D007L } + +enum : HRESULT { XACT_E_ISOLATIONLEVEL = cast(HRESULT)0x8004D008L } + +enum : HRESULT { XACT_E_NOASYNC = cast(HRESULT)0x8004D009L } + +enum : HRESULT { XACT_E_NOENLIST = cast(HRESULT)0x8004D00AL } + +enum : HRESULT { XACT_E_NOISORETAIN = cast(HRESULT)0x8004D00BL } + +enum : HRESULT { XACT_E_NORESOURCE = cast(HRESULT)0x8004D00CL } + +enum : HRESULT { XACT_E_NOTCURRENT = cast(HRESULT)0x8004D00DL } + +enum : HRESULT { XACT_E_NOTRANSACTION = cast(HRESULT)0x8004D00EL } + +enum : HRESULT { XACT_E_NOTSUPPORTED = cast(HRESULT)0x8004D00FL } + +enum : HRESULT { XACT_E_UNKNOWNRMGRID = cast(HRESULT)0x8004D010L } + +enum : HRESULT { XACT_E_WRONGSTATE = cast(HRESULT)0x8004D011L } + +enum : HRESULT { XACT_E_WRONGUOW = cast(HRESULT)0x8004D012L } + +enum : HRESULT { XACT_E_XTIONEXISTS = cast(HRESULT)0x8004D013L } + +enum : HRESULT { XACT_E_NOIMPORTOBJECT = cast(HRESULT)0x8004D014L } + +enum : HRESULT { XACT_E_INVALIDCOOKIE = cast(HRESULT)0x8004D015L } + +enum : HRESULT { XACT_E_INDOUBT = cast(HRESULT)0x8004D016L } + +enum : HRESULT { XACT_E_NOTIMEOUT = cast(HRESULT)0x8004D017L } + +enum : HRESULT { XACT_E_ALREADYINPROGRESS = cast(HRESULT)0x8004D018L } + +enum : HRESULT { XACT_E_ABORTED = cast(HRESULT)0x8004D019L } + +enum : HRESULT { XACT_E_LOGFULL = cast(HRESULT)0x8004D01AL } + +enum : HRESULT { XACT_E_TMNOTAVAILABLE = cast(HRESULT)0x8004D01BL } + +enum : HRESULT { XACT_E_CONNECTION_DOWN = cast(HRESULT)0x8004D01CL } + +enum : HRESULT { XACT_E_CONNECTION_DENIED = cast(HRESULT)0x8004D01DL } + +enum : HRESULT { XACT_E_REENLISTTIMEOUT = cast(HRESULT)0x8004D01EL } + +enum : HRESULT { XACT_E_TIP_CONNECT_FAILED = cast(HRESULT)0x8004D01FL } + +enum : HRESULT { XACT_E_TIP_PROTOCOL_ERROR = cast(HRESULT)0x8004D020L } + +enum : HRESULT { XACT_E_TIP_PULL_FAILED = cast(HRESULT)0x8004D021L } + +enum : HRESULT { XACT_E_DEST_TMNOTAVAILABLE = cast(HRESULT)0x8004D022L } + +enum : HRESULT { XACT_E_TIP_DISABLED = cast(HRESULT)0x8004D023L } + +enum : HRESULT { XACT_E_NETWORK_TX_DISABLED = cast(HRESULT)0x8004D024L } + +enum : HRESULT { XACT_E_PARTNER_NETWORK_TX_DISABLED = cast(HRESULT)0x8004D025L } + +enum : HRESULT { XACT_E_XA_TX_DISABLED = cast(HRESULT)0x8004D026L } + +enum : HRESULT { XACT_E_UNABLE_TO_READ_DTC_CONFIG = cast(HRESULT)0x8004D027L } + +enum : HRESULT { XACT_E_UNABLE_TO_LOAD_DTC_PROXY = cast(HRESULT)0x8004D028L } + +enum : HRESULT { XACT_E_ABORTING = cast(HRESULT)0x8004D029L } + +enum : HRESULT { XACT_E_CLERKNOTFOUND = cast(HRESULT)0x8004D080L } + +enum : HRESULT { XACT_E_CLERKEXISTS = cast(HRESULT)0x8004D081L } + +enum : HRESULT { XACT_E_RECOVERYINPROGRESS = cast(HRESULT)0x8004D082L } + +enum : HRESULT { XACT_E_TRANSACTIONCLOSED = cast(HRESULT)0x8004D083L } + +enum : HRESULT { XACT_E_INVALIDLSN = cast(HRESULT)0x8004D084L } + +enum : HRESULT { XACT_E_REPLAYREQUEST = cast(HRESULT)0x8004D085L } + +enum : HRESULT { XACT_S_ASYNC = cast(HRESULT)0x0004D000L } + +enum : HRESULT { XACT_S_DEFECT = cast(HRESULT)0x0004D001L } + +enum : HRESULT { XACT_S_READONLY = cast(HRESULT)0x0004D002L } + +enum : HRESULT { XACT_S_SOMENORETAIN = cast(HRESULT)0x0004D003L } + +enum : HRESULT { XACT_S_OKINFORM = cast(HRESULT)0x0004D004L } + +enum : HRESULT { XACT_S_MADECHANGESCONTENT = cast(HRESULT)0x0004D005L } + +enum : HRESULT { XACT_S_MADECHANGESINFORM = cast(HRESULT)0x0004D006L } + +enum : HRESULT { XACT_S_ALLNORETAIN = cast(HRESULT)0x0004D007L } + +enum : HRESULT { XACT_S_ABORTING = cast(HRESULT)0x0004D008L } + +enum : HRESULT { XACT_S_SINGLEPHASE = cast(HRESULT)0x0004D009L } + +enum : HRESULT { XACT_S_LOCALLY_OK = cast(HRESULT)0x0004D00AL } + +enum : HRESULT { XACT_S_LASTRESOURCEMANAGER = cast(HRESULT)0x0004D010L } + +enum : uint { CONTEXT_E_FIRST = 0x8004E000 } +enum : uint { CONTEXT_E_LAST = 0x8004E02F } +enum : uint { CONTEXT_S_FIRST = 0x0004E000 } +enum : uint { CONTEXT_S_LAST = 0x0004E02F } + +enum : HRESULT { CONTEXT_E_ABORTED = cast(HRESULT)0x8004E002L } + +enum : HRESULT { CONTEXT_E_ABORTING = cast(HRESULT)0x8004E003L } + +enum : HRESULT { CONTEXT_E_NOCONTEXT = cast(HRESULT)0x8004E004L } + +enum : HRESULT { CONTEXT_E_SYNCH_TIMEOUT = cast(HRESULT)0x8004E006L } + +enum : HRESULT { CONTEXT_E_OLDREF = cast(HRESULT)0x8004E007L } + +enum : HRESULT { CONTEXT_E_ROLENOTFOUND = cast(HRESULT)0x8004E00CL } + +enum : HRESULT { CONTEXT_E_TMNOTAVAILABLE = cast(HRESULT)0x8004E00FL } + +enum : HRESULT { CO_E_ACTIVATIONFAILED = cast(HRESULT)0x8004E021L } + +enum : HRESULT { CO_E_ACTIVATIONFAILED_EVENTLOGGED = cast(HRESULT)0x8004E022L } + +enum : HRESULT { CO_E_ACTIVATIONFAILED_CATALOGERROR = cast(HRESULT)0x8004E023L } + +enum : HRESULT { CO_E_ACTIVATIONFAILED_TIMEOUT = cast(HRESULT)0x8004E024L } + +enum : HRESULT { CO_E_INITIALIZATIONFAILED = cast(HRESULT)0x8004E025L } + +enum : HRESULT { CONTEXT_E_NOJIT = cast(HRESULT)0x8004E026L } + +enum : HRESULT { CONTEXT_E_NOTRANSACTION = cast(HRESULT)0x8004E027L } + +enum : HRESULT { CO_E_THREADINGMODEL_CHANGED = cast(HRESULT)0x8004E028L } + +enum : HRESULT { CO_E_NOIISINTRINSICS = cast(HRESULT)0x8004E029L } + +enum : HRESULT { CO_E_NOCOOKIES = cast(HRESULT)0x8004E02AL } + +enum : HRESULT { CO_E_DBERROR = cast(HRESULT)0x8004E02BL } + +enum : HRESULT { CO_E_NOTPOOLED = cast(HRESULT)0x8004E02CL } + +enum : HRESULT { CO_E_NOTCONSTRUCTED = cast(HRESULT)0x8004E02DL } + +enum : HRESULT { CO_E_NOSYNCHRONIZATION = cast(HRESULT)0x8004E02EL } + +enum : HRESULT { CO_E_ISOLEVELMISMATCH = cast(HRESULT)0x8004E02FL } + +enum : HRESULT { OLE_S_USEREG = cast(HRESULT)0x00040000L } + +enum : HRESULT { OLE_S_STATIC = cast(HRESULT)0x00040001L } + +enum : HRESULT { OLE_S_MAC_CLIPFORMAT = cast(HRESULT)0x00040002L } + +enum : HRESULT { DRAGDROP_S_DROP = cast(HRESULT)0x00040100L } + +enum : HRESULT { DRAGDROP_S_CANCEL = cast(HRESULT)0x00040101L } + +enum : HRESULT { DRAGDROP_S_USEDEFAULTCURSORS = cast(HRESULT)0x00040102L } + +enum : HRESULT { DATA_S_SAMEFORMATETC = cast(HRESULT)0x00040130L } + +enum : HRESULT { VIEW_S_ALREADY_FROZEN = cast(HRESULT)0x00040140L } + +enum : HRESULT { CACHE_S_FORMATETC_NOTSUPPORTED = cast(HRESULT)0x00040170L } + +enum : HRESULT { CACHE_S_SAMECACHE = cast(HRESULT)0x00040171L } + +enum : HRESULT { CACHE_S_SOMECACHES_NOTUPDATED = cast(HRESULT)0x00040172L } + +enum : HRESULT { OLEOBJ_S_INVALIDVERB = cast(HRESULT)0x00040180L } + +enum : HRESULT { OLEOBJ_S_CANNOT_DOVERB_NOW = cast(HRESULT)0x00040181L } + +enum : HRESULT { OLEOBJ_S_INVALIDHWND = cast(HRESULT)0x00040182L } + +enum : HRESULT { INPLACE_S_TRUNCATED = cast(HRESULT)0x000401A0L } + +enum : HRESULT { CONVERT10_S_NO_PRESENTATION = cast(HRESULT)0x000401C0L } + +enum : HRESULT { MK_S_REDUCED_TO_SELF = cast(HRESULT)0x000401E2L } + +enum : HRESULT { MK_S_ME = cast(HRESULT)0x000401E4L } + +enum : HRESULT { MK_S_HIM = cast(HRESULT)0x000401E5L } + +enum : HRESULT { MK_S_US = cast(HRESULT)0x000401E6L } + +enum : HRESULT { MK_S_MONIKERALREADYREGISTERED = cast(HRESULT)0x000401E7L } + +enum : HRESULT { SCHED_S_TASK_READY = cast(HRESULT)0x00041300L } + +enum : HRESULT { SCHED_S_TASK_RUNNING = cast(HRESULT)0x00041301L } + +enum : HRESULT { SCHED_S_TASK_DISABLED = cast(HRESULT)0x00041302L } + +enum : HRESULT { SCHED_S_TASK_HAS_NOT_RUN = cast(HRESULT)0x00041303L } + +enum : HRESULT { SCHED_S_TASK_NO_MORE_RUNS = cast(HRESULT)0x00041304L } + +enum : HRESULT { SCHED_S_TASK_NOT_SCHEDULED = cast(HRESULT)0x00041305L } + +enum : HRESULT { SCHED_S_TASK_TERMINATED = cast(HRESULT)0x00041306L } + +enum : HRESULT { SCHED_S_TASK_NO_VALID_TRIGGERS = cast(HRESULT)0x00041307L } + +enum : HRESULT { SCHED_S_EVENT_TRIGGER = cast(HRESULT)0x00041308L } + +enum : HRESULT { SCHED_E_TRIGGER_NOT_FOUND = cast(HRESULT)0x80041309L } + +enum : HRESULT { SCHED_E_TASK_NOT_READY = cast(HRESULT)0x8004130AL } + +enum : HRESULT { SCHED_E_TASK_NOT_RUNNING = cast(HRESULT)0x8004130BL } + +enum : HRESULT { SCHED_E_SERVICE_NOT_INSTALLED = cast(HRESULT)0x8004130CL } + +enum : HRESULT { SCHED_E_CANNOT_OPEN_TASK = cast(HRESULT)0x8004130DL } + +enum : HRESULT { SCHED_E_INVALID_TASK = cast(HRESULT)0x8004130EL } + +enum : HRESULT { SCHED_E_ACCOUNT_INFORMATION_NOT_SET = cast(HRESULT)0x8004130FL } + +enum : HRESULT { SCHED_E_ACCOUNT_NAME_NOT_FOUND = cast(HRESULT)0x80041310L } + +enum : HRESULT { SCHED_E_ACCOUNT_DBASE_CORRUPT = cast(HRESULT)0x80041311L } + +enum : HRESULT { SCHED_E_NO_SECURITY_SERVICES = cast(HRESULT)0x80041312L } + +enum : HRESULT { SCHED_E_UNKNOWN_OBJECT_VERSION = cast(HRESULT)0x80041313L } + +enum : HRESULT { SCHED_E_UNSUPPORTED_ACCOUNT_OPTION = cast(HRESULT)0x80041314L } + +enum : HRESULT { SCHED_E_SERVICE_NOT_RUNNING = cast(HRESULT)0x80041315L } + +enum : HRESULT { CO_E_CLASS_CREATE_FAILED = cast(HRESULT)0x80080001L } + +enum : HRESULT { CO_E_SCM_ERROR = cast(HRESULT)0x80080002L } + +enum : HRESULT { CO_E_SCM_RPC_FAILURE = cast(HRESULT)0x80080003L } + +enum : HRESULT { CO_E_BAD_PATH = cast(HRESULT)0x80080004L } + +enum : HRESULT { CO_E_SERVER_EXEC_FAILURE = cast(HRESULT)0x80080005L } + +enum : HRESULT { CO_E_OBJSRV_RPC_FAILURE = cast(HRESULT)0x80080006L } + +enum : HRESULT { MK_E_NO_NORMALIZED = cast(HRESULT)0x80080007L } + +enum : HRESULT { CO_E_SERVER_STOPPING = cast(HRESULT)0x80080008L } + +enum : HRESULT { MEM_E_INVALID_ROOT = cast(HRESULT)0x80080009L } + +enum : HRESULT { MEM_E_INVALID_LINK = cast(HRESULT)0x80080010L } + +enum : HRESULT { MEM_E_INVALID_SIZE = cast(HRESULT)0x80080011L } + +enum : HRESULT { CO_S_NOTALLINTERFACES = cast(HRESULT)0x00080012L } + +enum : HRESULT { CO_S_MACHINENAMENOTFOUND = cast(HRESULT)0x00080013L } + +enum : HRESULT { DISP_E_UNKNOWNINTERFACE = cast(HRESULT)0x80020001L } + +enum : HRESULT { DISP_E_MEMBERNOTFOUND = cast(HRESULT)0x80020003L } + +enum : HRESULT { DISP_E_PARAMNOTFOUND = cast(HRESULT)0x80020004L } + +enum : HRESULT { DISP_E_TYPEMISMATCH = cast(HRESULT)0x80020005L } + +enum : HRESULT { DISP_E_UNKNOWNNAME = cast(HRESULT)0x80020006L } + +enum : HRESULT { DISP_E_NONAMEDARGS = cast(HRESULT)0x80020007L } + +enum : HRESULT { DISP_E_BADVARTYPE = cast(HRESULT)0x80020008L } + +enum : HRESULT { DISP_E_EXCEPTION = cast(HRESULT)0x80020009L } + +enum : HRESULT { DISP_E_OVERFLOW = cast(HRESULT)0x8002000AL } + +enum : HRESULT { DISP_E_BADINDEX = cast(HRESULT)0x8002000BL } + +enum : HRESULT { DISP_E_UNKNOWNLCID = cast(HRESULT)0x8002000CL } + +enum : HRESULT { DISP_E_ARRAYISLOCKED = cast(HRESULT)0x8002000DL } + +enum : HRESULT { DISP_E_BADPARAMCOUNT = cast(HRESULT)0x8002000EL } + +enum : HRESULT { DISP_E_PARAMNOTOPTIONAL = cast(HRESULT)0x8002000FL } + +enum : HRESULT { DISP_E_BADCALLEE = cast(HRESULT)0x80020010L } + +enum : HRESULT { DISP_E_NOTACOLLECTION = cast(HRESULT)0x80020011L } + +enum : HRESULT { DISP_E_DIVBYZERO = cast(HRESULT)0x80020012L } + +enum : HRESULT { DISP_E_BUFFERTOOSMALL = cast(HRESULT)0x80020013L } + +enum : HRESULT { TYPE_E_BUFFERTOOSMALL = cast(HRESULT)0x80028016L } + +enum : HRESULT { TYPE_E_FIELDNOTFOUND = cast(HRESULT)0x80028017L } + +enum : HRESULT { TYPE_E_INVDATAREAD = cast(HRESULT)0x80028018L } + +enum : HRESULT { TYPE_E_UNSUPFORMAT = cast(HRESULT)0x80028019L } + +enum : HRESULT { TYPE_E_REGISTRYACCESS = cast(HRESULT)0x8002801CL } + +enum : HRESULT { TYPE_E_LIBNOTREGISTERED = cast(HRESULT)0x8002801DL } + +enum : HRESULT { TYPE_E_UNDEFINEDTYPE = cast(HRESULT)0x80028027L } + +enum : HRESULT { TYPE_E_QUALIFIEDNAMEDISALLOWED = cast(HRESULT)0x80028028L } + +enum : HRESULT { TYPE_E_INVALIDSTATE = cast(HRESULT)0x80028029L } + +enum : HRESULT { TYPE_E_WRONGTYPEKIND = cast(HRESULT)0x8002802AL } + +enum : HRESULT { TYPE_E_ELEMENTNOTFOUND = cast(HRESULT)0x8002802BL } + +enum : HRESULT { TYPE_E_AMBIGUOUSNAME = cast(HRESULT)0x8002802CL } + +enum : HRESULT { TYPE_E_NAMECONFLICT = cast(HRESULT)0x8002802DL } + +enum : HRESULT { TYPE_E_UNKNOWNLCID = cast(HRESULT)0x8002802EL } + +enum : HRESULT { TYPE_E_DLLFUNCTIONNOTFOUND = cast(HRESULT)0x8002802FL } + +enum : HRESULT { TYPE_E_BADMODULEKIND = cast(HRESULT)0x800288BDL } + +enum : HRESULT { TYPE_E_SIZETOOBIG = cast(HRESULT)0x800288C5L } + +enum : HRESULT { TYPE_E_DUPLICATEID = cast(HRESULT)0x800288C6L } + +enum : HRESULT { TYPE_E_INVALIDID = cast(HRESULT)0x800288CFL } + +enum : HRESULT { TYPE_E_TYPEMISMATCH = cast(HRESULT)0x80028CA0L } + +enum : HRESULT { TYPE_E_OUTOFBOUNDS = cast(HRESULT)0x80028CA1L } + +enum : HRESULT { TYPE_E_IOERROR = cast(HRESULT)0x80028CA2L } + +enum : HRESULT { TYPE_E_CANTCREATETMPFILE = cast(HRESULT)0x80028CA3L } + +enum : HRESULT { TYPE_E_CANTLOADLIBRARY = cast(HRESULT)0x80029C4AL } + +enum : HRESULT { TYPE_E_INCONSISTENTPROPFUNCS = cast(HRESULT)0x80029C83L } + +enum : HRESULT { TYPE_E_CIRCULARTYPE = cast(HRESULT)0x80029C84L } + +enum : HRESULT { STG_E_INVALIDFUNCTION = cast(HRESULT)0x80030001L } + +enum : HRESULT { STG_E_FILENOTFOUND = cast(HRESULT)0x80030002L } + +enum : HRESULT { STG_E_PATHNOTFOUND = cast(HRESULT)0x80030003L } + +enum : HRESULT { STG_E_TOOMANYOPENFILES = cast(HRESULT)0x80030004L } + +enum : HRESULT { STG_E_ACCESSDENIED = cast(HRESULT)0x80030005L } + +enum : HRESULT { STG_E_INVALIDHANDLE = cast(HRESULT)0x80030006L } + +enum : HRESULT { STG_E_INSUFFICIENTMEMORY = cast(HRESULT)0x80030008L } + +enum : HRESULT { STG_E_INVALIDPOINTER = cast(HRESULT)0x80030009L } + +enum : HRESULT { STG_E_NOMOREFILES = cast(HRESULT)0x80030012L } + +enum : HRESULT { STG_E_DISKISWRITEPROTECTED = cast(HRESULT)0x80030013L } + +enum : HRESULT { STG_E_SEEKERROR = cast(HRESULT)0x80030019L } + +enum : HRESULT { STG_E_WRITEFAULT = cast(HRESULT)0x8003001DL } + +enum : HRESULT { STG_E_READFAULT = cast(HRESULT)0x8003001EL } + +enum : HRESULT { STG_E_SHAREVIOLATION = cast(HRESULT)0x80030020L } + +enum : HRESULT { STG_E_LOCKVIOLATION = cast(HRESULT)0x80030021L } + +enum : HRESULT { STG_E_FILEALREADYEXISTS = cast(HRESULT)0x80030050L } + +enum : HRESULT { STG_E_INVALIDPARAMETER = cast(HRESULT)0x80030057L } + +enum : HRESULT { STG_E_MEDIUMFULL = cast(HRESULT)0x80030070L } + +enum : HRESULT { STG_E_PROPSETMISMATCHED = cast(HRESULT)0x800300F0L } + +enum : HRESULT { STG_E_ABNORMALAPIEXIT = cast(HRESULT)0x800300FAL } + +enum : HRESULT { STG_E_INVALIDHEADER = cast(HRESULT)0x800300FBL } + +enum : HRESULT { STG_E_INVALIDNAME = cast(HRESULT)0x800300FCL } + +enum : HRESULT { STG_E_UNKNOWN = cast(HRESULT)0x800300FDL } + +enum : HRESULT { STG_E_UNIMPLEMENTEDFUNCTION = cast(HRESULT)0x800300FEL } + +enum : HRESULT { STG_E_INVALIDFLAG = cast(HRESULT)0x800300FFL } + +enum : HRESULT { STG_E_INUSE = cast(HRESULT)0x80030100L } + +enum : HRESULT { STG_E_NOTCURRENT = cast(HRESULT)0x80030101L } + +enum : HRESULT { STG_E_REVERTED = cast(HRESULT)0x80030102L } + +enum : HRESULT { STG_E_CANTSAVE = cast(HRESULT)0x80030103L } + +enum : HRESULT { STG_E_OLDFORMAT = cast(HRESULT)0x80030104L } + +enum : HRESULT { STG_E_OLDDLL = cast(HRESULT)0x80030105L } + +enum : HRESULT { STG_E_SHAREREQUIRED = cast(HRESULT)0x80030106L } + +enum : HRESULT { STG_E_NOTFILEBASEDSTORAGE = cast(HRESULT)0x80030107L } + +enum : HRESULT { STG_E_EXTANTMARSHALLINGS = cast(HRESULT)0x80030108L } + +enum : HRESULT { STG_E_DOCFILECORRUPT = cast(HRESULT)0x80030109L } + +enum : HRESULT { STG_E_BADBASEADDRESS = cast(HRESULT)0x80030110L } + +enum : HRESULT { STG_E_DOCFILETOOLARGE = cast(HRESULT)0x80030111L } + +enum : HRESULT { STG_E_NOTSIMPLEFORMAT = cast(HRESULT)0x80030112L } + +enum : HRESULT { STG_E_INCOMPLETE = cast(HRESULT)0x80030201L } + +enum : HRESULT { STG_E_TERMINATED = cast(HRESULT)0x80030202L } + +enum : HRESULT { STG_S_CONVERTED = cast(HRESULT)0x00030200L } + +enum : HRESULT { STG_S_BLOCK = cast(HRESULT)0x00030201L } + +enum : HRESULT { STG_S_RETRYNOW = cast(HRESULT)0x00030202L } + +enum : HRESULT { STG_S_MONITORING = cast(HRESULT)0x00030203L } + +enum : HRESULT { STG_S_MULTIPLEOPENS = cast(HRESULT)0x00030204L } + +enum : HRESULT { STG_S_CONSOLIDATIONFAILED = cast(HRESULT)0x00030205L } + +enum : HRESULT { STG_S_CANNOTCONSOLIDATE = cast(HRESULT)0x00030206L } + +enum : HRESULT { STG_E_STATUS_COPY_PROTECTION_FAILURE = cast(HRESULT)0x80030305L } + +enum : HRESULT { STG_E_CSS_AUTHENTICATION_FAILURE = cast(HRESULT)0x80030306L } + +enum : HRESULT { STG_E_CSS_KEY_NOT_PRESENT = cast(HRESULT)0x80030307L } + +enum : HRESULT { STG_E_CSS_KEY_NOT_ESTABLISHED = cast(HRESULT)0x80030308L } + +enum : HRESULT { STG_E_CSS_SCRAMBLED_SECTOR = cast(HRESULT)0x80030309L } + +enum : HRESULT { STG_E_CSS_REGION_MISMATCH = cast(HRESULT)0x8003030AL } + +enum : HRESULT { STG_E_RESETS_EXHAUSTED = cast(HRESULT)0x8003030BL } + +enum : HRESULT { RPC_E_CALL_REJECTED = cast(HRESULT)0x80010001L } + +enum : HRESULT { RPC_E_CALL_CANCELED = cast(HRESULT)0x80010002L } + +enum : HRESULT { RPC_E_CANTPOST_INSENDCALL = cast(HRESULT)0x80010003L } + +enum : HRESULT { RPC_E_CANTCALLOUT_INASYNCCALL = cast(HRESULT)0x80010004L } + +enum : HRESULT { RPC_E_CANTCALLOUT_INEXTERNALCALL = cast(HRESULT)0x80010005L } + +enum : HRESULT { RPC_E_CONNECTION_TERMINATED = cast(HRESULT)0x80010006L } + +enum : HRESULT { RPC_E_SERVER_DIED = cast(HRESULT)0x80010007L } + +enum : HRESULT { RPC_E_CLIENT_DIED = cast(HRESULT)0x80010008L } + +enum : HRESULT { RPC_E_INVALID_DATAPACKET = cast(HRESULT)0x80010009L } + +enum : HRESULT { RPC_E_CANTTRANSMIT_CALL = cast(HRESULT)0x8001000AL } + +enum : HRESULT { RPC_E_CLIENT_CANTMARSHAL_DATA = cast(HRESULT)0x8001000BL } + +enum : HRESULT { RPC_E_CLIENT_CANTUNMARSHAL_DATA = cast(HRESULT)0x8001000CL } + +enum : HRESULT { RPC_E_SERVER_CANTMARSHAL_DATA = cast(HRESULT)0x8001000DL } + +enum : HRESULT { RPC_E_SERVER_CANTUNMARSHAL_DATA = cast(HRESULT)0x8001000EL } + +enum : HRESULT { RPC_E_INVALID_DATA = cast(HRESULT)0x8001000FL } + +enum : HRESULT { RPC_E_INVALID_PARAMETER = cast(HRESULT)0x80010010L } + +enum : HRESULT { RPC_E_CANTCALLOUT_AGAIN = cast(HRESULT)0x80010011L } + +enum : HRESULT { RPC_E_SERVER_DIED_DNE = cast(HRESULT)0x80010012L } + +enum : HRESULT { RPC_E_SYS_CALL_FAILED = cast(HRESULT)0x80010100L } + +enum : HRESULT { RPC_E_OUT_OF_RESOURCES = cast(HRESULT)0x80010101L } + +enum : HRESULT { RPC_E_ATTEMPTED_MULTITHREAD = cast(HRESULT)0x80010102L } + +enum : HRESULT { RPC_E_NOT_REGISTERED = cast(HRESULT)0x80010103L } + +enum : HRESULT { RPC_E_FAULT = cast(HRESULT)0x80010104L } + +enum : HRESULT { RPC_E_SERVERFAULT = cast(HRESULT)0x80010105L } + +enum : HRESULT { RPC_E_CHANGED_MODE = cast(HRESULT)0x80010106L } + +enum : HRESULT { RPC_E_INVALIDMETHOD = cast(HRESULT)0x80010107L } + +enum : HRESULT { RPC_E_DISCONNECTED = cast(HRESULT)0x80010108L } + +enum : HRESULT { RPC_E_RETRY = cast(HRESULT)0x80010109L } + +enum : HRESULT { RPC_E_SERVERCALL_RETRYLATER = cast(HRESULT)0x8001010AL } + +enum : HRESULT { RPC_E_SERVERCALL_REJECTED = cast(HRESULT)0x8001010BL } + +enum : HRESULT { RPC_E_INVALID_CALLDATA = cast(HRESULT)0x8001010CL } + +enum : HRESULT { RPC_E_CANTCALLOUT_ININPUTSYNCCALL = cast(HRESULT)0x8001010DL } + +enum : HRESULT { RPC_E_WRONG_THREAD = cast(HRESULT)0x8001010EL } + +enum : HRESULT { RPC_E_THREAD_NOT_INIT = cast(HRESULT)0x8001010FL } + +enum : HRESULT { RPC_E_VERSION_MISMATCH = cast(HRESULT)0x80010110L } + +enum : HRESULT { RPC_E_INVALID_HEADER = cast(HRESULT)0x80010111L } + +enum : HRESULT { RPC_E_INVALID_EXTENSION = cast(HRESULT)0x80010112L } + +enum : HRESULT { RPC_E_INVALID_IPID = cast(HRESULT)0x80010113L } + +enum : HRESULT { RPC_E_INVALID_OBJECT = cast(HRESULT)0x80010114L } + +enum : HRESULT { RPC_S_CALLPENDING = cast(HRESULT)0x80010115L } + +enum : HRESULT { RPC_S_WAITONTIMER = cast(HRESULT)0x80010116L } + +enum : HRESULT { RPC_E_CALL_COMPLETE = cast(HRESULT)0x80010117L } + +enum : HRESULT { RPC_E_UNSECURE_CALL = cast(HRESULT)0x80010118L } + +enum : HRESULT { RPC_E_TOO_LATE = cast(HRESULT)0x80010119L } + +enum : HRESULT { RPC_E_NO_GOOD_SECURITY_PACKAGES = cast(HRESULT)0x8001011AL } + +enum : HRESULT { RPC_E_ACCESS_DENIED = cast(HRESULT)0x8001011BL } + +enum : HRESULT { RPC_E_REMOTE_DISABLED = cast(HRESULT)0x8001011CL } + +enum : HRESULT { RPC_E_INVALID_OBJREF = cast(HRESULT)0x8001011DL } + +enum : HRESULT { RPC_E_NO_CONTEXT = cast(HRESULT)0x8001011EL } + +enum : HRESULT { RPC_E_TIMEOUT = cast(HRESULT)0x8001011FL } + +enum : HRESULT { RPC_E_NO_SYNC = cast(HRESULT)0x80010120L } + +enum : HRESULT { RPC_E_FULLSIC_REQUIRED = cast(HRESULT)0x80010121L } + +enum : HRESULT { RPC_E_INVALID_STD_NAME = cast(HRESULT)0x80010122L } + +enum : HRESULT { CO_E_FAILEDTOIMPERSONATE = cast(HRESULT)0x80010123L } + +enum : HRESULT { CO_E_FAILEDTOGETSECCTX = cast(HRESULT)0x80010124L } + +enum : HRESULT { CO_E_FAILEDTOOPENTHREADTOKEN = cast(HRESULT)0x80010125L } + +enum : HRESULT { CO_E_FAILEDTOGETTOKENINFO = cast(HRESULT)0x80010126L } + +enum : HRESULT { CO_E_TRUSTEEDOESNTMATCHCLIENT = cast(HRESULT)0x80010127L } + +enum : HRESULT { CO_E_FAILEDTOQUERYCLIENTBLANKET = cast(HRESULT)0x80010128L } + +enum : HRESULT { CO_E_FAILEDTOSETDACL = cast(HRESULT)0x80010129L } + +enum : HRESULT { CO_E_ACCESSCHECKFAILED = cast(HRESULT)0x8001012AL } + +enum : HRESULT { CO_E_NETACCESSAPIFAILED = cast(HRESULT)0x8001012BL } + +enum : HRESULT { CO_E_WRONGTRUSTEENAMESYNTAX = cast(HRESULT)0x8001012CL } + +enum : HRESULT { CO_E_INVALIDSID = cast(HRESULT)0x8001012DL } + +enum : HRESULT { CO_E_CONVERSIONFAILED = cast(HRESULT)0x8001012EL } + +enum : HRESULT { CO_E_NOMATCHINGSIDFOUND = cast(HRESULT)0x8001012FL } + +enum : HRESULT { CO_E_LOOKUPACCSIDFAILED = cast(HRESULT)0x80010130L } + +enum : HRESULT { CO_E_NOMATCHINGNAMEFOUND = cast(HRESULT)0x80010131L } + +enum : HRESULT { CO_E_LOOKUPACCNAMEFAILED = cast(HRESULT)0x80010132L } + +enum : HRESULT { CO_E_SETSERLHNDLFAILED = cast(HRESULT)0x80010133L } + +enum : HRESULT { CO_E_FAILEDTOGETWINDIR = cast(HRESULT)0x80010134L } + +enum : HRESULT { CO_E_PATHTOOLONG = cast(HRESULT)0x80010135L } + +enum : HRESULT { CO_E_FAILEDTOGENUUID = cast(HRESULT)0x80010136L } + +enum : HRESULT { CO_E_FAILEDTOCREATEFILE = cast(HRESULT)0x80010137L } + +enum : HRESULT { CO_E_FAILEDTOCLOSEHANDLE = cast(HRESULT)0x80010138L } + +enum : HRESULT { CO_E_EXCEEDSYSACLLIMIT = cast(HRESULT)0x80010139L } + +enum : HRESULT { CO_E_ACESINWRONGORDER = cast(HRESULT)0x8001013AL } + +enum : HRESULT { CO_E_INCOMPATIBLESTREAMVERSION = cast(HRESULT)0x8001013BL } + +enum : HRESULT { CO_E_FAILEDTOOPENPROCESSTOKEN = cast(HRESULT)0x8001013CL } + +enum : HRESULT { CO_E_DECODEFAILED = cast(HRESULT)0x8001013DL } + +enum : HRESULT { CO_E_ACNOTINITIALIZED = cast(HRESULT)0x8001013FL } + +enum : HRESULT { CO_E_CANCEL_DISABLED = cast(HRESULT)0x80010140L } + +enum : HRESULT { RPC_E_UNEXPECTED = cast(HRESULT)0x8001FFFFL } + +enum : HRESULT { ERROR_AUDITING_DISABLED = cast(HRESULT)0xC0090001L } + +enum : HRESULT { ERROR_ALL_SIDS_FILTERED = cast(HRESULT)0xC0090002L } + +enum : HRESULT { NTE_BAD_UID = cast(HRESULT)0x80090001L } + +enum : HRESULT { NTE_BAD_HASH = cast(HRESULT)0x80090002L } + +enum : HRESULT { NTE_BAD_KEY = cast(HRESULT)0x80090003L } + +enum : HRESULT { NTE_BAD_LEN = cast(HRESULT)0x80090004L } + +enum : HRESULT { NTE_BAD_DATA = cast(HRESULT)0x80090005L } + +enum : HRESULT { NTE_BAD_SIGNATURE = cast(HRESULT)0x80090006L } + +enum : HRESULT { NTE_BAD_VER = cast(HRESULT)0x80090007L } + +enum : HRESULT { NTE_BAD_ALGID = cast(HRESULT)0x80090008L } + +enum : HRESULT { NTE_BAD_FLAGS = cast(HRESULT)0x80090009L } + +enum : HRESULT { NTE_BAD_TYPE = cast(HRESULT)0x8009000AL } + +enum : HRESULT { NTE_BAD_KEY_STATE = cast(HRESULT)0x8009000BL } + +enum : HRESULT { NTE_BAD_HASH_STATE = cast(HRESULT)0x8009000CL } + +enum : HRESULT { NTE_NO_KEY = cast(HRESULT)0x8009000DL } + +enum : HRESULT { NTE_NO_MEMORY = cast(HRESULT)0x8009000EL } + +enum : HRESULT { NTE_EXISTS = cast(HRESULT)0x8009000FL } + +enum : HRESULT { NTE_PERM = cast(HRESULT)0x80090010L } + +enum : HRESULT { NTE_NOT_FOUND = cast(HRESULT)0x80090011L } + +enum : HRESULT { NTE_DOUBLE_ENCRYPT = cast(HRESULT)0x80090012L } + +enum : HRESULT { NTE_BAD_PROVIDER = cast(HRESULT)0x80090013L } + +enum : HRESULT { NTE_BAD_PROV_TYPE = cast(HRESULT)0x80090014L } + +enum : HRESULT { NTE_BAD_PUBLIC_KEY = cast(HRESULT)0x80090015L } + +enum : HRESULT { NTE_BAD_KEYSET = cast(HRESULT)0x80090016L } + +enum : HRESULT { NTE_PROV_TYPE_NOT_DEF = cast(HRESULT)0x80090017L } + +enum : HRESULT { NTE_PROV_TYPE_ENTRY_BAD = cast(HRESULT)0x80090018L } + +enum : HRESULT { NTE_KEYSET_NOT_DEF = cast(HRESULT)0x80090019L } + +enum : HRESULT { NTE_KEYSET_ENTRY_BAD = cast(HRESULT)0x8009001AL } + +enum : HRESULT { NTE_PROV_TYPE_NO_MATCH = cast(HRESULT)0x8009001BL } + +enum : HRESULT { NTE_SIGNATURE_FILE_BAD = cast(HRESULT)0x8009001CL } + +enum : HRESULT { NTE_PROVIDER_DLL_FAIL = cast(HRESULT)0x8009001DL } + +enum : HRESULT { NTE_PROV_DLL_NOT_FOUND = cast(HRESULT)0x8009001EL } + +enum : HRESULT { NTE_BAD_KEYSET_PARAM = cast(HRESULT)0x8009001FL } + +enum : HRESULT { NTE_FAIL = cast(HRESULT)0x80090020L } + +enum : HRESULT { NTE_SYS_ERR = cast(HRESULT)0x80090021L } + +enum : HRESULT { NTE_SILENT_CONTEXT = cast(HRESULT)0x80090022L } + +enum : HRESULT { NTE_TOKEN_KEYSET_STORAGE_FULL = cast(HRESULT)0x80090023L } + +enum : HRESULT { NTE_TEMPORARY_PROFILE = cast(HRESULT)0x80090024L } + +enum : HRESULT { NTE_FIXEDPARAMETER = cast(HRESULT)0x80090025L } + +enum : HRESULT { SEC_E_INSUFFICIENT_MEMORY = cast(HRESULT)0x80090300L } + +enum : HRESULT { SEC_E_INVALID_HANDLE = cast(HRESULT)0x80090301L } + +enum : HRESULT { SEC_E_UNSUPPORTED_FUNCTION = cast(HRESULT)0x80090302L } + +enum : HRESULT { SEC_E_TARGET_UNKNOWN = cast(HRESULT)0x80090303L } + +enum : HRESULT { SEC_E_INTERNAL_ERROR = cast(HRESULT)0x80090304L } + +enum : HRESULT { SEC_E_SECPKG_NOT_FOUND = cast(HRESULT)0x80090305L } + +enum : HRESULT { SEC_E_NOT_OWNER = cast(HRESULT)0x80090306L } + +enum : HRESULT { SEC_E_CANNOT_INSTALL = cast(HRESULT)0x80090307L } + +enum : HRESULT { SEC_E_INVALID_TOKEN = cast(HRESULT)0x80090308L } + +enum : HRESULT { SEC_E_CANNOT_PACK = cast(HRESULT)0x80090309L } + +enum : HRESULT { SEC_E_QOP_NOT_SUPPORTED = cast(HRESULT)0x8009030AL } + +enum : HRESULT { SEC_E_NO_IMPERSONATION = cast(HRESULT)0x8009030BL } + +enum : HRESULT { SEC_E_LOGON_DENIED = cast(HRESULT)0x8009030CL } + +enum : HRESULT { SEC_E_UNKNOWN_CREDENTIALS = cast(HRESULT)0x8009030DL } + +enum : HRESULT { SEC_E_NO_CREDENTIALS = cast(HRESULT)0x8009030EL } + +enum : HRESULT { SEC_E_MESSAGE_ALTERED = cast(HRESULT)0x8009030FL } + +enum : HRESULT { SEC_E_OUT_OF_SEQUENCE = cast(HRESULT)0x80090310L } + +enum : HRESULT { SEC_E_NO_AUTHENTICATING_AUTHORITY = cast(HRESULT)0x80090311L } + +enum : HRESULT { SEC_I_CONTINUE_NEEDED = cast(HRESULT)0x00090312L } + +enum : HRESULT { SEC_I_COMPLETE_NEEDED = cast(HRESULT)0x00090313L } + +enum : HRESULT { SEC_I_COMPLETE_AND_CONTINUE = cast(HRESULT)0x00090314L } + +enum : HRESULT { SEC_I_LOCAL_LOGON = cast(HRESULT)0x00090315L } + +enum : HRESULT { SEC_E_BAD_PKGID = cast(HRESULT)0x80090316L } + +enum : HRESULT { SEC_E_CONTEXT_EXPIRED = cast(HRESULT)0x80090317L } + +enum : HRESULT { SEC_I_CONTEXT_EXPIRED = cast(HRESULT)0x00090317L } + +enum : HRESULT { SEC_E_INCOMPLETE_MESSAGE = cast(HRESULT)0x80090318L } + +enum : HRESULT { SEC_E_INCOMPLETE_CREDENTIALS = cast(HRESULT)0x80090320L } + +enum : HRESULT { SEC_E_BUFFER_TOO_SMALL = cast(HRESULT)0x80090321L } + +enum : HRESULT { SEC_I_INCOMPLETE_CREDENTIALS = cast(HRESULT)0x00090320L } + +enum : HRESULT { SEC_I_RENEGOTIATE = cast(HRESULT)0x00090321L } + +enum : HRESULT { SEC_E_WRONG_PRINCIPAL = cast(HRESULT)0x80090322L } + +enum : HRESULT { SEC_I_NO_LSA_CONTEXT = cast(HRESULT)0x00090323L } + +enum : HRESULT { SEC_E_TIME_SKEW = cast(HRESULT)0x80090324L } + +enum : HRESULT { SEC_E_UNTRUSTED_ROOT = cast(HRESULT)0x80090325L } + +enum : HRESULT { SEC_E_ILLEGAL_MESSAGE = cast(HRESULT)0x80090326L } + +enum : HRESULT { SEC_E_CERT_UNKNOWN = cast(HRESULT)0x80090327L } + +enum : HRESULT { SEC_E_CERT_EXPIRED = cast(HRESULT)0x80090328L } + +enum : HRESULT { SEC_E_ENCRYPT_FAILURE = cast(HRESULT)0x80090329L } + +enum : HRESULT { SEC_E_DECRYPT_FAILURE = cast(HRESULT)0x80090330L } + +enum : HRESULT { SEC_E_ALGORITHM_MISMATCH = cast(HRESULT)0x80090331L } + +enum : HRESULT { SEC_E_SECURITY_QOS_FAILED = cast(HRESULT)0x80090332L } + +enum : HRESULT { SEC_E_UNFINISHED_CONTEXT_DELETED = cast(HRESULT)0x80090333L } + +enum : HRESULT { SEC_E_NO_TGT_REPLY = cast(HRESULT)0x80090334L } + +enum : HRESULT { SEC_E_NO_IP_ADDRESSES = cast(HRESULT)0x80090335L } + +enum : HRESULT { SEC_E_WRONG_CREDENTIAL_HANDLE = cast(HRESULT)0x80090336L } + +enum : HRESULT { SEC_E_CRYPTO_SYSTEM_INVALID = cast(HRESULT)0x80090337L } + +enum : HRESULT { SEC_E_MAX_REFERRALS_EXCEEDED = cast(HRESULT)0x80090338L } + +enum : HRESULT { SEC_E_MUST_BE_KDC = cast(HRESULT)0x80090339L } + +enum : HRESULT { SEC_E_STRONG_CRYPTO_NOT_SUPPORTED = cast(HRESULT)0x8009033AL } + +enum : HRESULT { SEC_E_TOO_MANY_PRINCIPALS = cast(HRESULT)0x8009033BL } + +enum : HRESULT { SEC_E_NO_PA_DATA = cast(HRESULT)0x8009033CL } + +enum : HRESULT { SEC_E_PKINIT_NAME_MISMATCH = cast(HRESULT)0x8009033DL } + +enum : HRESULT { SEC_E_SMARTCARD_LOGON_REQUIRED = cast(HRESULT)0x8009033EL } + +enum : HRESULT { SEC_E_SHUTDOWN_IN_PROGRESS = cast(HRESULT)0x8009033FL } + +enum : HRESULT { SEC_E_KDC_INVALID_REQUEST = cast(HRESULT)0x80090340L } + +enum : HRESULT { SEC_E_KDC_UNABLE_TO_REFER = cast(HRESULT)0x80090341L } + +enum : HRESULT { SEC_E_KDC_UNKNOWN_ETYPE = cast(HRESULT)0x80090342L } + +enum : HRESULT { SEC_E_UNSUPPORTED_PREAUTH = cast(HRESULT)0x80090343L } + +enum : HRESULT { SEC_E_DELEGATION_REQUIRED = cast(HRESULT)0x80090345L } + +enum : HRESULT { SEC_E_BAD_BINDINGS = cast(HRESULT)0x80090346L } + +enum : HRESULT { SEC_E_MULTIPLE_ACCOUNTS = cast(HRESULT)0x80090347L } + +enum : HRESULT { SEC_E_NO_KERB_KEY = cast(HRESULT)0x80090348L } + +alias SEC_E_INTERNAL_ERROR SEC_E_NO_SPM; +alias SEC_E_UNSUPPORTED_FUNCTION SEC_E_NOT_SUPPORTED; + +enum : HRESULT { CRYPT_E_MSG_ERROR = cast(HRESULT)0x80091001L } + +enum : HRESULT { CRYPT_E_UNKNOWN_ALGO = cast(HRESULT)0x80091002L } + +enum : HRESULT { CRYPT_E_OID_FORMAT = cast(HRESULT)0x80091003L } + +enum : HRESULT { CRYPT_E_INVALID_MSG_TYPE = cast(HRESULT)0x80091004L } + +enum : HRESULT { CRYPT_E_UNEXPECTED_ENCODING = cast(HRESULT)0x80091005L } + +enum : HRESULT { CRYPT_E_AUTH_ATTR_MISSING = cast(HRESULT)0x80091006L } + +enum : HRESULT { CRYPT_E_HASH_VALUE = cast(HRESULT)0x80091007L } + +enum : HRESULT { CRYPT_E_INVALID_INDEX = cast(HRESULT)0x80091008L } + +enum : HRESULT { CRYPT_E_ALREADY_DECRYPTED = cast(HRESULT)0x80091009L } + +enum : HRESULT { CRYPT_E_NOT_DECRYPTED = cast(HRESULT)0x8009100AL } + +enum : HRESULT { CRYPT_E_RECIPIENT_NOT_FOUND = cast(HRESULT)0x8009100BL } + +enum : HRESULT { CRYPT_E_CONTROL_TYPE = cast(HRESULT)0x8009100CL } + +enum : HRESULT { CRYPT_E_ISSUER_SERIALNUMBER = cast(HRESULT)0x8009100DL } + +enum : HRESULT { CRYPT_E_SIGNER_NOT_FOUND = cast(HRESULT)0x8009100EL } + +enum : HRESULT { CRYPT_E_ATTRIBUTES_MISSING = cast(HRESULT)0x8009100FL } + +enum : HRESULT { CRYPT_E_STREAM_MSG_NOT_READY = cast(HRESULT)0x80091010L } + +enum : HRESULT { CRYPT_E_STREAM_INSUFFICIENT_DATA = cast(HRESULT)0x80091011L } + +enum : HRESULT { CRYPT_I_NEW_PROTECTION_REQUIRED = cast(HRESULT)0x00091012L } + +enum : HRESULT { CRYPT_E_BAD_LEN = cast(HRESULT)0x80092001L } + +enum : HRESULT { CRYPT_E_BAD_ENCODE = cast(HRESULT)0x80092002L } + +enum : HRESULT { CRYPT_E_FILE_ERROR = cast(HRESULT)0x80092003L } + +enum : HRESULT { CRYPT_E_NOT_FOUND = cast(HRESULT)0x80092004L } + +enum : HRESULT { CRYPT_E_EXISTS = cast(HRESULT)0x80092005L } + +enum : HRESULT { CRYPT_E_NO_PROVIDER = cast(HRESULT)0x80092006L } + +enum : HRESULT { CRYPT_E_SELF_SIGNED = cast(HRESULT)0x80092007L } + +enum : HRESULT { CRYPT_E_DELETED_PREV = cast(HRESULT)0x80092008L } + +enum : HRESULT { CRYPT_E_NO_MATCH = cast(HRESULT)0x80092009L } + +enum : HRESULT { CRYPT_E_UNEXPECTED_MSG_TYPE = cast(HRESULT)0x8009200AL } + +enum : HRESULT { CRYPT_E_NO_KEY_PROPERTY = cast(HRESULT)0x8009200BL } + +enum : HRESULT { CRYPT_E_NO_DECRYPT_CERT = cast(HRESULT)0x8009200CL } + +enum : HRESULT { CRYPT_E_BAD_MSG = cast(HRESULT)0x8009200DL } + +enum : HRESULT { CRYPT_E_NO_SIGNER = cast(HRESULT)0x8009200EL } + +enum : HRESULT { CRYPT_E_PENDING_CLOSE = cast(HRESULT)0x8009200FL } + +enum : HRESULT { CRYPT_E_REVOKED = cast(HRESULT)0x80092010L } + +enum : HRESULT { CRYPT_E_NO_REVOCATION_DLL = cast(HRESULT)0x80092011L } + +enum : HRESULT { CRYPT_E_NO_REVOCATION_CHECK = cast(HRESULT)0x80092012L } + +enum : HRESULT { CRYPT_E_REVOCATION_OFFLINE = cast(HRESULT)0x80092013L } + +enum : HRESULT { CRYPT_E_NOT_IN_REVOCATION_DATABASE = cast(HRESULT)0x80092014L } + +enum : HRESULT { CRYPT_E_INVALID_NUMERIC_STRING = cast(HRESULT)0x80092020L } + +enum : HRESULT { CRYPT_E_INVALID_PRINTABLE_STRING = cast(HRESULT)0x80092021L } + +enum : HRESULT { CRYPT_E_INVALID_IA5_STRING = cast(HRESULT)0x80092022L } + +enum : HRESULT { CRYPT_E_INVALID_X500_STRING = cast(HRESULT)0x80092023L } + +enum : HRESULT { CRYPT_E_NOT_CHAR_STRING = cast(HRESULT)0x80092024L } + +enum : HRESULT { CRYPT_E_FILERESIZED = cast(HRESULT)0x80092025L } + +enum : HRESULT { CRYPT_E_SECURITY_SETTINGS = cast(HRESULT)0x80092026L } + +enum : HRESULT { CRYPT_E_NO_VERIFY_USAGE_DLL = cast(HRESULT)0x80092027L } + +enum : HRESULT { CRYPT_E_NO_VERIFY_USAGE_CHECK = cast(HRESULT)0x80092028L } + +enum : HRESULT { CRYPT_E_VERIFY_USAGE_OFFLINE = cast(HRESULT)0x80092029L } + +enum : HRESULT { CRYPT_E_NOT_IN_CTL = cast(HRESULT)0x8009202AL } + +enum : HRESULT { CRYPT_E_NO_TRUSTED_SIGNER = cast(HRESULT)0x8009202BL } + +enum : HRESULT { CRYPT_E_MISSING_PUBKEY_PARA = cast(HRESULT)0x8009202CL } + +enum : HRESULT { CRYPT_E_OSS_ERROR = cast(HRESULT)0x80093000L } + +enum : HRESULT { OSS_MORE_BUF = cast(HRESULT)0x80093001L } + +enum : HRESULT { OSS_NEGATIVE_UINTEGER = cast(HRESULT)0x80093002L } + +enum : HRESULT { OSS_PDU_RANGE = cast(HRESULT)0x80093003L } + +enum : HRESULT { OSS_MORE_INPUT = cast(HRESULT)0x80093004L } + +enum : HRESULT { OSS_DATA_ERROR = cast(HRESULT)0x80093005L } + +enum : HRESULT { OSS_BAD_ARG = cast(HRESULT)0x80093006L } + +enum : HRESULT { OSS_BAD_VERSION = cast(HRESULT)0x80093007L } + +enum : HRESULT { OSS_OUT_MEMORY = cast(HRESULT)0x80093008L } + +enum : HRESULT { OSS_PDU_MISMATCH = cast(HRESULT)0x80093009L } + +enum : HRESULT { OSS_LIMITED = cast(HRESULT)0x8009300AL } + +enum : HRESULT { OSS_BAD_PTR = cast(HRESULT)0x8009300BL } + +enum : HRESULT { OSS_BAD_TIME = cast(HRESULT)0x8009300CL } + +enum : HRESULT { OSS_INDEFINITE_NOT_SUPPORTED = cast(HRESULT)0x8009300DL } + +enum : HRESULT { OSS_MEM_ERROR = cast(HRESULT)0x8009300EL } + +enum : HRESULT { OSS_BAD_TABLE = cast(HRESULT)0x8009300FL } + +enum : HRESULT { OSS_TOO_LONG = cast(HRESULT)0x80093010L } + +enum : HRESULT { OSS_CONSTRAINT_VIOLATED = cast(HRESULT)0x80093011L } + +enum : HRESULT { OSS_FATAL_ERROR = cast(HRESULT)0x80093012L } + +enum : HRESULT { OSS_ACCESS_SERIALIZATION_ERROR = cast(HRESULT)0x80093013L } + +enum : HRESULT { OSS_NULL_TBL = cast(HRESULT)0x80093014L } + +enum : HRESULT { OSS_NULL_FCN = cast(HRESULT)0x80093015L } + +enum : HRESULT { OSS_BAD_ENCRULES = cast(HRESULT)0x80093016L } + +enum : HRESULT { OSS_UNAVAIL_ENCRULES = cast(HRESULT)0x80093017L } + +enum : HRESULT { OSS_CANT_OPEN_TRACE_WINDOW = cast(HRESULT)0x80093018L } + +enum : HRESULT { OSS_UNIMPLEMENTED = cast(HRESULT)0x80093019L } + +enum : HRESULT { OSS_OID_DLL_NOT_LINKED = cast(HRESULT)0x8009301AL } + +enum : HRESULT { OSS_CANT_OPEN_TRACE_FILE = cast(HRESULT)0x8009301BL } + +enum : HRESULT { OSS_TRACE_FILE_ALREADY_OPEN = cast(HRESULT)0x8009301CL } + +enum : HRESULT { OSS_TABLE_MISMATCH = cast(HRESULT)0x8009301DL } + +enum : HRESULT { OSS_TYPE_NOT_SUPPORTED = cast(HRESULT)0x8009301EL } + +enum : HRESULT { OSS_REAL_DLL_NOT_LINKED = cast(HRESULT)0x8009301FL } + +enum : HRESULT { OSS_REAL_CODE_NOT_LINKED = cast(HRESULT)0x80093020L } + +enum : HRESULT { OSS_OUT_OF_RANGE = cast(HRESULT)0x80093021L } + +enum : HRESULT { OSS_COPIER_DLL_NOT_LINKED = cast(HRESULT)0x80093022L } + +enum : HRESULT { OSS_CONSTRAINT_DLL_NOT_LINKED = cast(HRESULT)0x80093023L } + +enum : HRESULT { OSS_COMPARATOR_DLL_NOT_LINKED = cast(HRESULT)0x80093024L } + +enum : HRESULT { OSS_COMPARATOR_CODE_NOT_LINKED = cast(HRESULT)0x80093025L } + +enum : HRESULT { OSS_MEM_MGR_DLL_NOT_LINKED = cast(HRESULT)0x80093026L } + +enum : HRESULT { OSS_PDV_DLL_NOT_LINKED = cast(HRESULT)0x80093027L } + +enum : HRESULT { OSS_PDV_CODE_NOT_LINKED = cast(HRESULT)0x80093028L } + +enum : HRESULT { OSS_API_DLL_NOT_LINKED = cast(HRESULT)0x80093029L } + +enum : HRESULT { OSS_BERDER_DLL_NOT_LINKED = cast(HRESULT)0x8009302AL } + +enum : HRESULT { OSS_PER_DLL_NOT_LINKED = cast(HRESULT)0x8009302BL } + +enum : HRESULT { OSS_OPEN_TYPE_ERROR = cast(HRESULT)0x8009302CL } + +enum : HRESULT { OSS_MUTEX_NOT_CREATED = cast(HRESULT)0x8009302DL } + +enum : HRESULT { OSS_CANT_CLOSE_TRACE_FILE = cast(HRESULT)0x8009302EL } + +enum : HRESULT { CRYPT_E_ASN1_ERROR = cast(HRESULT)0x80093100L } + +enum : HRESULT { CRYPT_E_ASN1_INTERNAL = cast(HRESULT)0x80093101L } + +enum : HRESULT { CRYPT_E_ASN1_EOD = cast(HRESULT)0x80093102L } + +enum : HRESULT { CRYPT_E_ASN1_CORRUPT = cast(HRESULT)0x80093103L } + +enum : HRESULT { CRYPT_E_ASN1_LARGE = cast(HRESULT)0x80093104L } + +enum : HRESULT { CRYPT_E_ASN1_CONSTRAINT = cast(HRESULT)0x80093105L } + +enum : HRESULT { CRYPT_E_ASN1_MEMORY = cast(HRESULT)0x80093106L } + +enum : HRESULT { CRYPT_E_ASN1_OVERFLOW = cast(HRESULT)0x80093107L } + +enum : HRESULT { CRYPT_E_ASN1_BADPDU = cast(HRESULT)0x80093108L } + +enum : HRESULT { CRYPT_E_ASN1_BADARGS = cast(HRESULT)0x80093109L } + +enum : HRESULT { CRYPT_E_ASN1_BADREAL = cast(HRESULT)0x8009310AL } + +enum : HRESULT { CRYPT_E_ASN1_BADTAG = cast(HRESULT)0x8009310BL } + +enum : HRESULT { CRYPT_E_ASN1_CHOICE = cast(HRESULT)0x8009310CL } + +enum : HRESULT { CRYPT_E_ASN1_RULE = cast(HRESULT)0x8009310DL } + +enum : HRESULT { CRYPT_E_ASN1_UTF8 = cast(HRESULT)0x8009310EL } + +enum : HRESULT { CRYPT_E_ASN1_PDU_TYPE = cast(HRESULT)0x80093133L } + +enum : HRESULT { CRYPT_E_ASN1_NYI = cast(HRESULT)0x80093134L } + +enum : HRESULT { CRYPT_E_ASN1_EXTENDED = cast(HRESULT)0x80093201L } + +enum : HRESULT { CRYPT_E_ASN1_NOEOD = cast(HRESULT)0x80093202L } + +enum : HRESULT { CERTSRV_E_BAD_REQUESTSUBJECT = cast(HRESULT)0x80094001L } + +enum : HRESULT { CERTSRV_E_NO_REQUEST = cast(HRESULT)0x80094002L } + +enum : HRESULT { CERTSRV_E_BAD_REQUESTSTATUS = cast(HRESULT)0x80094003L } + +enum : HRESULT { CERTSRV_E_PROPERTY_EMPTY = cast(HRESULT)0x80094004L } + +enum : HRESULT { CERTSRV_E_INVALID_CA_CERTIFICATE = cast(HRESULT)0x80094005L } + +enum : HRESULT { CERTSRV_E_SERVER_SUSPENDED = cast(HRESULT)0x80094006L } + +enum : HRESULT { CERTSRV_E_ENCODING_LENGTH = cast(HRESULT)0x80094007L } + +enum : HRESULT { CERTSRV_E_ROLECONFLICT = cast(HRESULT)0x80094008L } + +enum : HRESULT { CERTSRV_E_RESTRICTEDOFFICER = cast(HRESULT)0x80094009L } + +enum : HRESULT { CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED = cast(HRESULT)0x8009400AL } + +enum : HRESULT { CERTSRV_E_NO_VALID_KRA = cast(HRESULT)0x8009400BL } + +enum : HRESULT { CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL = cast(HRESULT)0x8009400CL } + +enum : HRESULT { CERTSRV_E_NO_CAADMIN_DEFINED = cast(HRESULT)0x8009400DL } + +enum : HRESULT { CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE = cast(HRESULT)0x8009400EL } + +enum : HRESULT { CERTSRV_E_NO_DB_SESSIONS = cast(HRESULT)0x8009400FL } + +enum : HRESULT { CERTSRV_E_ALIGNMENT_FAULT = cast(HRESULT)0x80094010L } + +enum : HRESULT { CERTSRV_E_ENROLL_DENIED = cast(HRESULT)0x80094011L } + +enum : HRESULT { CERTSRV_E_TEMPLATE_DENIED = cast(HRESULT)0x80094012L } + +enum : HRESULT { CERTSRV_E_UNSUPPORTED_CERT_TYPE = cast(HRESULT)0x80094800L } + +enum : HRESULT { CERTSRV_E_NO_CERT_TYPE = cast(HRESULT)0x80094801L } + +enum : HRESULT { CERTSRV_E_TEMPLATE_CONFLICT = cast(HRESULT)0x80094802L } + +enum : HRESULT { CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED = cast(HRESULT)0x80094803L } + +enum : HRESULT { CERTSRV_E_ARCHIVED_KEY_REQUIRED = cast(HRESULT)0x80094804L } + +enum : HRESULT { CERTSRV_E_SMIME_REQUIRED = cast(HRESULT)0x80094805L } + +enum : HRESULT { CERTSRV_E_BAD_RENEWAL_SUBJECT = cast(HRESULT)0x80094806L } + +enum : HRESULT { CERTSRV_E_BAD_TEMPLATE_VERSION = cast(HRESULT)0x80094807L } + +enum : HRESULT { CERTSRV_E_TEMPLATE_POLICY_REQUIRED = cast(HRESULT)0x80094808L } + +enum : HRESULT { CERTSRV_E_SIGNATURE_POLICY_REQUIRED = cast(HRESULT)0x80094809L } + +enum : HRESULT { CERTSRV_E_SIGNATURE_COUNT = cast(HRESULT)0x8009480AL } + +enum : HRESULT { CERTSRV_E_SIGNATURE_REJECTED = cast(HRESULT)0x8009480BL } + +enum : HRESULT { CERTSRV_E_ISSUANCE_POLICY_REQUIRED = cast(HRESULT)0x8009480CL } + +enum : HRESULT { CERTSRV_E_SUBJECT_UPN_REQUIRED = cast(HRESULT)0x8009480DL } + +enum : HRESULT { CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED = cast(HRESULT)0x8009480EL } + +enum : HRESULT { CERTSRV_E_SUBJECT_DNS_REQUIRED = cast(HRESULT)0x8009480FL } + +enum : HRESULT { CERTSRV_E_ARCHIVED_KEY_UNEXPECTED = cast(HRESULT)0x80094810L } + +enum : HRESULT { CERTSRV_E_KEY_LENGTH = cast(HRESULT)0x80094811L } + +enum : HRESULT { XENROLL_E_KEY_NOT_EXPORTABLE = cast(HRESULT)0x80095000L } + +enum : HRESULT { XENROLL_E_CANNOT_ADD_ROOT_CERT = cast(HRESULT)0x80095001L } + +enum : HRESULT { XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND = cast(HRESULT)0x80095002L } + +enum : HRESULT { XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH = cast(HRESULT)0x80095003L } + +enum : HRESULT { XENROLL_E_RESPONSE_KA_HASH_MISMATCH = cast(HRESULT)0x80095004L } + +enum : HRESULT { XENROLL_E_KEYSPEC_SMIME_MISMATCH = cast(HRESULT)0x80095005L } + +enum : HRESULT { TRUST_E_SYSTEM_ERROR = cast(HRESULT)0x80096001L } + +enum : HRESULT { TRUST_E_NO_SIGNER_CERT = cast(HRESULT)0x80096002L } + +enum : HRESULT { TRUST_E_COUNTER_SIGNER = cast(HRESULT)0x80096003L } + +enum : HRESULT { TRUST_E_CERT_SIGNATURE = cast(HRESULT)0x80096004L } + +enum : HRESULT { TRUST_E_TIME_STAMP = cast(HRESULT)0x80096005L } + +enum : HRESULT { TRUST_E_BAD_DIGEST = cast(HRESULT)0x80096010L } + +enum : HRESULT { TRUST_E_BASIC_CONSTRAINTS = cast(HRESULT)0x80096019L } + +enum : HRESULT { TRUST_E_FINANCIAL_CRITERIA = cast(HRESULT)0x8009601EL } + +enum : HRESULT { MSSIPOTF_E_OUTOFMEMRANGE = cast(HRESULT)0x80097001L } + +enum : HRESULT { MSSIPOTF_E_CANTGETOBJECT = cast(HRESULT)0x80097002L } + +enum : HRESULT { MSSIPOTF_E_NOHEADTABLE = cast(HRESULT)0x80097003L } + +enum : HRESULT { MSSIPOTF_E_BAD_MAGICNUMBER = cast(HRESULT)0x80097004L } + +enum : HRESULT { MSSIPOTF_E_BAD_OFFSET_TABLE = cast(HRESULT)0x80097005L } + +enum : HRESULT { MSSIPOTF_E_TABLE_TAGORDER = cast(HRESULT)0x80097006L } + +enum : HRESULT { MSSIPOTF_E_TABLE_LONGWORD = cast(HRESULT)0x80097007L } + +enum : HRESULT { MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT = cast(HRESULT)0x80097008L } + +enum : HRESULT { MSSIPOTF_E_TABLES_OVERLAP = cast(HRESULT)0x80097009L } + +enum : HRESULT { MSSIPOTF_E_TABLE_PADBYTES = cast(HRESULT)0x8009700AL } + +enum : HRESULT { MSSIPOTF_E_FILETOOSMALL = cast(HRESULT)0x8009700BL } + +enum : HRESULT { MSSIPOTF_E_TABLE_CHECKSUM = cast(HRESULT)0x8009700CL } + +enum : HRESULT { MSSIPOTF_E_FILE_CHECKSUM = cast(HRESULT)0x8009700DL } + +enum : HRESULT { MSSIPOTF_E_FAILED_POLICY = cast(HRESULT)0x80097010L } + +enum : HRESULT { MSSIPOTF_E_FAILED_HINTS_CHECK = cast(HRESULT)0x80097011L } + +enum : HRESULT { MSSIPOTF_E_NOT_OPENTYPE = cast(HRESULT)0x80097012L } + +enum : HRESULT { MSSIPOTF_E_FILE = cast(HRESULT)0x80097013L } + +enum : HRESULT { MSSIPOTF_E_CRYPT = cast(HRESULT)0x80097014L } + +enum : HRESULT { MSSIPOTF_E_BADVERSION = cast(HRESULT)0x80097015L } + +enum : HRESULT { MSSIPOTF_E_DSIG_STRUCTURE = cast(HRESULT)0x80097016L } + +enum : HRESULT { MSSIPOTF_E_PCONST_CHECK = cast(HRESULT)0x80097017L } + +enum : HRESULT { MSSIPOTF_E_STRUCTURE = cast(HRESULT)0x80097018L } + +enum : uint { NTE_OP_OK = 0 } + +enum : HRESULT { TRUST_E_PROVIDER_UNKNOWN = cast(HRESULT)0x800B0001L } + +enum : HRESULT { TRUST_E_ACTION_UNKNOWN = cast(HRESULT)0x800B0002L } + +enum : HRESULT { TRUST_E_SUBJECT_FORM_UNKNOWN = cast(HRESULT)0x800B0003L } + +enum : HRESULT { TRUST_E_SUBJECT_NOT_TRUSTED = cast(HRESULT)0x800B0004L } + +enum : HRESULT { DIGSIG_E_ENCODE = cast(HRESULT)0x800B0005L } + +enum : HRESULT { DIGSIG_E_DECODE = cast(HRESULT)0x800B0006L } + +enum : HRESULT { DIGSIG_E_EXTENSIBILITY = cast(HRESULT)0x800B0007L } + +enum : HRESULT { DIGSIG_E_CRYPTO = cast(HRESULT)0x800B0008L } + +enum : HRESULT { PERSIST_E_SIZEDEFINITE = cast(HRESULT)0x800B0009L } + +enum : HRESULT { PERSIST_E_SIZEINDEFINITE = cast(HRESULT)0x800B000AL } + +enum : HRESULT { PERSIST_E_NOTSELFSIZING = cast(HRESULT)0x800B000BL } + +enum : HRESULT { TRUST_E_NOSIGNATURE = cast(HRESULT)0x800B0100L } + +enum : HRESULT { CERT_E_EXPIRED = cast(HRESULT)0x800B0101L } + +enum : HRESULT { CERT_E_VALIDITYPERIODNESTING = cast(HRESULT)0x800B0102L } + +enum : HRESULT { CERT_E_ROLE = cast(HRESULT)0x800B0103L } + +enum : HRESULT { CERT_E_PATHLENCONST = cast(HRESULT)0x800B0104L } + +enum : HRESULT { CERT_E_CRITICAL = cast(HRESULT)0x800B0105L } + +enum : HRESULT { CERT_E_PURPOSE = cast(HRESULT)0x800B0106L } + +enum : HRESULT { CERT_E_ISSUERCHAINING = cast(HRESULT)0x800B0107L } + +enum : HRESULT { CERT_E_MALFORMED = cast(HRESULT)0x800B0108L } + +enum : HRESULT { CERT_E_UNTRUSTEDROOT = cast(HRESULT)0x800B0109L } + +enum : HRESULT { CERT_E_CHAINING = cast(HRESULT)0x800B010AL } + +enum : HRESULT { TRUST_E_FAIL = cast(HRESULT)0x800B010BL } + +enum : HRESULT { CERT_E_REVOKED = cast(HRESULT)0x800B010CL } + +enum : HRESULT { CERT_E_UNTRUSTEDTESTROOT = cast(HRESULT)0x800B010DL } + +enum : HRESULT { CERT_E_REVOCATION_FAILURE = cast(HRESULT)0x800B010EL } + +enum : HRESULT { CERT_E_CN_NO_MATCH = cast(HRESULT)0x800B010FL } + +enum : HRESULT { CERT_E_WRONG_USAGE = cast(HRESULT)0x800B0110L } + +enum : HRESULT { TRUST_E_EXPLICIT_DISTRUST = cast(HRESULT)0x800B0111L } + +enum : HRESULT { CERT_E_UNTRUSTEDCA = cast(HRESULT)0x800B0112L } + +enum : HRESULT { CERT_E_INVALID_POLICY = cast(HRESULT)0x800B0113L } + +enum : HRESULT { CERT_E_INVALID_NAME = cast(HRESULT)0x800B0114L } + +// #define HRESULT_FROM_SETUPAPI(x) ((((x) & (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR)) == (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR)) ? ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_SETUPAPI << 16) | 0x80000000)) : HRESULT_FROM_WIN32(x)) + +enum : HRESULT { SPAPI_E_EXPECTED_SECTION_NAME = cast(HRESULT)0x800F0000L } + +enum : HRESULT { SPAPI_E_BAD_SECTION_NAME_LINE = cast(HRESULT)0x800F0001L } + +enum : HRESULT { SPAPI_E_SECTION_NAME_TOO_LONG = cast(HRESULT)0x800F0002L } + +enum : HRESULT { SPAPI_E_GENERAL_SYNTAX = cast(HRESULT)0x800F0003L } + +enum : HRESULT { SPAPI_E_WRONG_INF_STYLE = cast(HRESULT)0x800F0100L } + +enum : HRESULT { SPAPI_E_SECTION_NOT_FOUND = cast(HRESULT)0x800F0101L } + +enum : HRESULT { SPAPI_E_LINE_NOT_FOUND = cast(HRESULT)0x800F0102L } + +enum : HRESULT { SPAPI_E_NO_BACKUP = cast(HRESULT)0x800F0103L } + +enum : HRESULT { SPAPI_E_NO_ASSOCIATED_CLASS = cast(HRESULT)0x800F0200L } + +enum : HRESULT { SPAPI_E_CLASS_MISMATCH = cast(HRESULT)0x800F0201L } + +enum : HRESULT { SPAPI_E_DUPLICATE_FOUND = cast(HRESULT)0x800F0202L } + +enum : HRESULT { SPAPI_E_NO_DRIVER_SELECTED = cast(HRESULT)0x800F0203L } + +enum : HRESULT { SPAPI_E_KEY_DOES_NOT_EXIST = cast(HRESULT)0x800F0204L } + +enum : HRESULT { SPAPI_E_INVALID_DEVINST_NAME = cast(HRESULT)0x800F0205L } + +enum : HRESULT { SPAPI_E_INVALID_CLASS = cast(HRESULT)0x800F0206L } + +enum : HRESULT { SPAPI_E_DEVINST_ALREADY_EXISTS = cast(HRESULT)0x800F0207L } + +enum : HRESULT { SPAPI_E_DEVINFO_NOT_REGISTERED = cast(HRESULT)0x800F0208L } + +enum : HRESULT { SPAPI_E_INVALID_REG_PROPERTY = cast(HRESULT)0x800F0209L } + +enum : HRESULT { SPAPI_E_NO_INF = cast(HRESULT)0x800F020AL } + +enum : HRESULT { SPAPI_E_NO_SUCH_DEVINST = cast(HRESULT)0x800F020BL } + +enum : HRESULT { SPAPI_E_CANT_LOAD_CLASS_ICON = cast(HRESULT)0x800F020CL } + +enum : HRESULT { SPAPI_E_INVALID_CLASS_INSTALLER = cast(HRESULT)0x800F020DL } + +enum : HRESULT { SPAPI_E_DI_DO_DEFAULT = cast(HRESULT)0x800F020EL } + +enum : HRESULT { SPAPI_E_DI_NOFILECOPY = cast(HRESULT)0x800F020FL } + +enum : HRESULT { SPAPI_E_INVALID_HWPROFILE = cast(HRESULT)0x800F0210L } + +enum : HRESULT { SPAPI_E_NO_DEVICE_SELECTED = cast(HRESULT)0x800F0211L } + +enum : HRESULT { SPAPI_E_DEVINFO_LIST_LOCKED = cast(HRESULT)0x800F0212L } + +enum : HRESULT { SPAPI_E_DEVINFO_DATA_LOCKED = cast(HRESULT)0x800F0213L } + +enum : HRESULT { SPAPI_E_DI_BAD_PATH = cast(HRESULT)0x800F0214L } + +enum : HRESULT { SPAPI_E_NO_CLASSINSTALL_PARAMS = cast(HRESULT)0x800F0215L } + +enum : HRESULT { SPAPI_E_FILEQUEUE_LOCKED = cast(HRESULT)0x800F0216L } + +enum : HRESULT { SPAPI_E_BAD_SERVICE_INSTALLSECT = cast(HRESULT)0x800F0217L } + +enum : HRESULT { SPAPI_E_NO_CLASS_DRIVER_LIST = cast(HRESULT)0x800F0218L } + +enum : HRESULT { SPAPI_E_NO_ASSOCIATED_SERVICE = cast(HRESULT)0x800F0219L } + +enum : HRESULT { SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE = cast(HRESULT)0x800F021AL } + +enum : HRESULT { SPAPI_E_DEVICE_INTERFACE_ACTIVE = cast(HRESULT)0x800F021BL } + +enum : HRESULT { SPAPI_E_DEVICE_INTERFACE_REMOVED = cast(HRESULT)0x800F021CL } + +enum : HRESULT { SPAPI_E_BAD_INTERFACE_INSTALLSECT = cast(HRESULT)0x800F021DL } + +enum : HRESULT { SPAPI_E_NO_SUCH_INTERFACE_CLASS = cast(HRESULT)0x800F021EL } + +enum : HRESULT { SPAPI_E_INVALID_REFERENCE_STRING = cast(HRESULT)0x800F021FL } + +enum : HRESULT { SPAPI_E_INVALID_MACHINENAME = cast(HRESULT)0x800F0220L } + +enum : HRESULT { SPAPI_E_REMOTE_COMM_FAILURE = cast(HRESULT)0x800F0221L } + +enum : HRESULT { SPAPI_E_MACHINE_UNAVAILABLE = cast(HRESULT)0x800F0222L } + +enum : HRESULT { SPAPI_E_NO_CONFIGMGR_SERVICES = cast(HRESULT)0x800F0223L } + +enum : HRESULT { SPAPI_E_INVALID_PROPPAGE_PROVIDER = cast(HRESULT)0x800F0224L } + +enum : HRESULT { SPAPI_E_NO_SUCH_DEVICE_INTERFACE = cast(HRESULT)0x800F0225L } + +enum : HRESULT { SPAPI_E_DI_POSTPROCESSING_REQUIRED = cast(HRESULT)0x800F0226L } + +enum : HRESULT { SPAPI_E_INVALID_COINSTALLER = cast(HRESULT)0x800F0227L } + +enum : HRESULT { SPAPI_E_NO_COMPAT_DRIVERS = cast(HRESULT)0x800F0228L } + +enum : HRESULT { SPAPI_E_NO_DEVICE_ICON = cast(HRESULT)0x800F0229L } + +enum : HRESULT { SPAPI_E_INVALID_INF_LOGCONFIG = cast(HRESULT)0x800F022AL } + +enum : HRESULT { SPAPI_E_DI_DONT_INSTALL = cast(HRESULT)0x800F022BL } + +enum : HRESULT { SPAPI_E_INVALID_FILTER_DRIVER = cast(HRESULT)0x800F022CL } + +enum : HRESULT { SPAPI_E_NON_WINDOWS_NT_DRIVER = cast(HRESULT)0x800F022DL } + +enum : HRESULT { SPAPI_E_NON_WINDOWS_DRIVER = cast(HRESULT)0x800F022EL } + +enum : HRESULT { SPAPI_E_NO_CATALOG_FOR_OEM_INF = cast(HRESULT)0x800F022FL } + +enum : HRESULT { SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE = cast(HRESULT)0x800F0230L } + +enum : HRESULT { SPAPI_E_NOT_DISABLEABLE = cast(HRESULT)0x800F0231L } + +enum : HRESULT { SPAPI_E_CANT_REMOVE_DEVINST = cast(HRESULT)0x800F0232L } + +enum : HRESULT { SPAPI_E_INVALID_TARGET = cast(HRESULT)0x800F0233L } + +enum : HRESULT { SPAPI_E_DRIVER_NONNATIVE = cast(HRESULT)0x800F0234L } + +enum : HRESULT { SPAPI_E_IN_WOW64 = cast(HRESULT)0x800F0235L } + +enum : HRESULT { SPAPI_E_SET_SYSTEM_RESTORE_POINT = cast(HRESULT)0x800F0236L } + +enum : HRESULT { SPAPI_E_INCORRECTLY_COPIED_INF = cast(HRESULT)0x800F0237L } + +enum : HRESULT { SPAPI_E_SCE_DISABLED = cast(HRESULT)0x800F0238L } + +enum : HRESULT { SPAPI_E_ERROR_NOT_INSTALLED = cast(HRESULT)0x800F1000L } + +alias NO_ERROR SCARD_S_SUCCESS; + +enum : HRESULT { SCARD_F_INTERNAL_ERROR = cast(HRESULT)0x80100001L } + +enum : HRESULT { SCARD_E_CANCELLED = cast(HRESULT)0x80100002L } + +enum : HRESULT { SCARD_E_INVALID_HANDLE = cast(HRESULT)0x80100003L } + +enum : HRESULT { SCARD_E_INVALID_PARAMETER = cast(HRESULT)0x80100004L } + +enum : HRESULT { SCARD_E_INVALID_TARGET = cast(HRESULT)0x80100005L } + +enum : HRESULT { SCARD_E_NO_MEMORY = cast(HRESULT)0x80100006L } + +enum : HRESULT { SCARD_F_WAITED_TOO_LONG = cast(HRESULT)0x80100007L } + +enum : HRESULT { SCARD_E_INSUFFICIENT_BUFFER = cast(HRESULT)0x80100008L } + +enum : HRESULT { SCARD_E_UNKNOWN_READER = cast(HRESULT)0x80100009L } + +enum : HRESULT { SCARD_E_TIMEOUT = cast(HRESULT)0x8010000AL } + +enum : HRESULT { SCARD_E_SHARING_VIOLATION = cast(HRESULT)0x8010000BL } + +enum : HRESULT { SCARD_E_NO_SMARTCARD = cast(HRESULT)0x8010000CL } + +enum : HRESULT { SCARD_E_UNKNOWN_CARD = cast(HRESULT)0x8010000DL } + +enum : HRESULT { SCARD_E_CANT_DISPOSE = cast(HRESULT)0x8010000EL } + +enum : HRESULT { SCARD_E_PROTO_MISMATCH = cast(HRESULT)0x8010000FL } + +enum : HRESULT { SCARD_E_NOT_READY = cast(HRESULT)0x80100010L } + +enum : HRESULT { SCARD_E_INVALID_VALUE = cast(HRESULT)0x80100011L } + +enum : HRESULT { SCARD_E_SYSTEM_CANCELLED = cast(HRESULT)0x80100012L } + +enum : HRESULT { SCARD_F_COMM_ERROR = cast(HRESULT)0x80100013L } + +enum : HRESULT { SCARD_F_UNKNOWN_ERROR = cast(HRESULT)0x80100014L } + +enum : HRESULT { SCARD_E_INVALID_ATR = cast(HRESULT)0x80100015L } + +enum : HRESULT { SCARD_E_NOT_TRANSACTED = cast(HRESULT)0x80100016L } + +enum : HRESULT { SCARD_E_READER_UNAVAILABLE = cast(HRESULT)0x80100017L } + +enum : HRESULT { SCARD_P_SHUTDOWN = cast(HRESULT)0x80100018L } + +enum : HRESULT { SCARD_E_PCI_TOO_SMALL = cast(HRESULT)0x80100019L } + +enum : HRESULT { SCARD_E_READER_UNSUPPORTED = cast(HRESULT)0x8010001AL } + +enum : HRESULT { SCARD_E_DUPLICATE_READER = cast(HRESULT)0x8010001BL } + +enum : HRESULT { SCARD_E_CARD_UNSUPPORTED = cast(HRESULT)0x8010001CL } + +enum : HRESULT { SCARD_E_NO_SERVICE = cast(HRESULT)0x8010001DL } + +enum : HRESULT { SCARD_E_SERVICE_STOPPED = cast(HRESULT)0x8010001EL } + +enum : HRESULT { SCARD_E_UNEXPECTED = cast(HRESULT)0x8010001FL } + +enum : HRESULT { SCARD_E_ICC_INSTALLATION = cast(HRESULT)0x80100020L } + +enum : HRESULT { SCARD_E_ICC_CREATEORDER = cast(HRESULT)0x80100021L } + +enum : HRESULT { SCARD_E_UNSUPPORTED_FEATURE = cast(HRESULT)0x80100022L } + +enum : HRESULT { SCARD_E_DIR_NOT_FOUND = cast(HRESULT)0x80100023L } + +enum : HRESULT { SCARD_E_FILE_NOT_FOUND = cast(HRESULT)0x80100024L } + +enum : HRESULT { SCARD_E_NO_DIR = cast(HRESULT)0x80100025L } + +enum : HRESULT { SCARD_E_NO_FILE = cast(HRESULT)0x80100026L } + +enum : HRESULT { SCARD_E_NO_ACCESS = cast(HRESULT)0x80100027L } + +enum : HRESULT { SCARD_E_WRITE_TOO_MANY = cast(HRESULT)0x80100028L } + +enum : HRESULT { SCARD_E_BAD_SEEK = cast(HRESULT)0x80100029L } + +enum : HRESULT { SCARD_E_INVALID_CHV = cast(HRESULT)0x8010002AL } + +enum : HRESULT { SCARD_E_UNKNOWN_RES_MNG = cast(HRESULT)0x8010002BL } + +enum : HRESULT { SCARD_E_NO_SUCH_CERTIFICATE = cast(HRESULT)0x8010002CL } + +enum : HRESULT { SCARD_E_CERTIFICATE_UNAVAILABLE = cast(HRESULT)0x8010002DL } + +enum : HRESULT { SCARD_E_NO_READERS_AVAILABLE = cast(HRESULT)0x8010002EL } + +enum : HRESULT { SCARD_E_COMM_DATA_LOST = cast(HRESULT)0x8010002FL } + +enum : HRESULT { SCARD_E_NO_KEY_CONTAINER = cast(HRESULT)0x80100030L } + +enum : HRESULT { SCARD_W_UNSUPPORTED_CARD = cast(HRESULT)0x80100065L } + +enum : HRESULT { SCARD_W_UNRESPONSIVE_CARD = cast(HRESULT)0x80100066L } + +enum : HRESULT { SCARD_W_UNPOWERED_CARD = cast(HRESULT)0x80100067L } + +enum : HRESULT { SCARD_W_RESET_CARD = cast(HRESULT)0x80100068L } + +enum : HRESULT { SCARD_W_REMOVED_CARD = cast(HRESULT)0x80100069L } + +enum : HRESULT { SCARD_W_SECURITY_VIOLATION = cast(HRESULT)0x8010006AL } + +enum : HRESULT { SCARD_W_WRONG_CHV = cast(HRESULT)0x8010006BL } + +enum : HRESULT { SCARD_W_CHV_BLOCKED = cast(HRESULT)0x8010006CL } + +enum : HRESULT { SCARD_W_EOF = cast(HRESULT)0x8010006DL } + +enum : HRESULT { SCARD_W_CANCELLED_BY_USER = cast(HRESULT)0x8010006EL } + +enum : HRESULT { SCARD_W_CARD_NOT_AUTHENTICATED = cast(HRESULT)0x8010006FL } + +enum : HRESULT { COMADMIN_E_OBJECTERRORS = cast(HRESULT)0x80110401L } + +enum : HRESULT { COMADMIN_E_OBJECTINVALID = cast(HRESULT)0x80110402L } + +enum : HRESULT { COMADMIN_E_KEYMISSING = cast(HRESULT)0x80110403L } + +enum : HRESULT { COMADMIN_E_ALREADYINSTALLED = cast(HRESULT)0x80110404L } + +enum : HRESULT { COMADMIN_E_APP_FILE_WRITEFAIL = cast(HRESULT)0x80110407L } + +enum : HRESULT { COMADMIN_E_APP_FILE_READFAIL = cast(HRESULT)0x80110408L } + +enum : HRESULT { COMADMIN_E_APP_FILE_VERSION = cast(HRESULT)0x80110409L } + +enum : HRESULT { COMADMIN_E_BADPATH = cast(HRESULT)0x8011040AL } + +enum : HRESULT { COMADMIN_E_APPLICATIONEXISTS = cast(HRESULT)0x8011040BL } + +enum : HRESULT { COMADMIN_E_ROLEEXISTS = cast(HRESULT)0x8011040CL } + +enum : HRESULT { COMADMIN_E_CANTCOPYFILE = cast(HRESULT)0x8011040DL } + +enum : HRESULT { COMADMIN_E_NOUSER = cast(HRESULT)0x8011040FL } + +enum : HRESULT { COMADMIN_E_INVALIDUSERIDS = cast(HRESULT)0x80110410L } + +enum : HRESULT { COMADMIN_E_NOREGISTRYCLSID = cast(HRESULT)0x80110411L } + +enum : HRESULT { COMADMIN_E_BADREGISTRYPROGID = cast(HRESULT)0x80110412L } + +enum : HRESULT { COMADMIN_E_AUTHENTICATIONLEVEL = cast(HRESULT)0x80110413L } + +enum : HRESULT { COMADMIN_E_USERPASSWDNOTVALID = cast(HRESULT)0x80110414L } + +enum : HRESULT { COMADMIN_E_CLSIDORIIDMISMATCH = cast(HRESULT)0x80110418L } + +enum : HRESULT { COMADMIN_E_REMOTEINTERFACE = cast(HRESULT)0x80110419L } + +enum : HRESULT { COMADMIN_E_DLLREGISTERSERVER = cast(HRESULT)0x8011041AL } + +enum : HRESULT { COMADMIN_E_NOSERVERSHARE = cast(HRESULT)0x8011041BL } + +enum : HRESULT { COMADMIN_E_DLLLOADFAILED = cast(HRESULT)0x8011041DL } + +enum : HRESULT { COMADMIN_E_BADREGISTRYLIBID = cast(HRESULT)0x8011041EL } + +enum : HRESULT { COMADMIN_E_APPDIRNOTFOUND = cast(HRESULT)0x8011041FL } + +enum : HRESULT { COMADMIN_E_REGISTRARFAILED = cast(HRESULT)0x80110423L } + +enum : HRESULT { COMADMIN_E_COMPFILE_DOESNOTEXIST = cast(HRESULT)0x80110424L } + +enum : HRESULT { COMADMIN_E_COMPFILE_LOADDLLFAIL = cast(HRESULT)0x80110425L } + +enum : HRESULT { COMADMIN_E_COMPFILE_GETCLASSOBJ = cast(HRESULT)0x80110426L } + +enum : HRESULT { COMADMIN_E_COMPFILE_CLASSNOTAVAIL = cast(HRESULT)0x80110427L } + +enum : HRESULT { COMADMIN_E_COMPFILE_BADTLB = cast(HRESULT)0x80110428L } + +enum : HRESULT { COMADMIN_E_COMPFILE_NOTINSTALLABLE = cast(HRESULT)0x80110429L } + +enum : HRESULT { COMADMIN_E_NOTCHANGEABLE = cast(HRESULT)0x8011042AL } + +enum : HRESULT { COMADMIN_E_NOTDELETEABLE = cast(HRESULT)0x8011042BL } + +enum : HRESULT { COMADMIN_E_SESSION = cast(HRESULT)0x8011042CL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_LOCKED = cast(HRESULT)0x8011042DL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_BAD_DEST = cast(HRESULT)0x8011042EL } + +enum : HRESULT { COMADMIN_E_REGISTERTLB = cast(HRESULT)0x80110430L } + +enum : HRESULT { COMADMIN_E_SYSTEMAPP = cast(HRESULT)0x80110433L } + +enum : HRESULT { COMADMIN_E_COMPFILE_NOREGISTRAR = cast(HRESULT)0x80110434L } + +enum : HRESULT { COMADMIN_E_COREQCOMPINSTALLED = cast(HRESULT)0x80110435L } + +enum : HRESULT { COMADMIN_E_SERVICENOTINSTALLED = cast(HRESULT)0x80110436L } + +enum : HRESULT { COMADMIN_E_PROPERTYSAVEFAILED = cast(HRESULT)0x80110437L } + +enum : HRESULT { COMADMIN_E_OBJECTEXISTS = cast(HRESULT)0x80110438L } + +enum : HRESULT { COMADMIN_E_COMPONENTEXISTS = cast(HRESULT)0x80110439L } + +enum : HRESULT { COMADMIN_E_REGFILE_CORRUPT = cast(HRESULT)0x8011043BL } + +enum : HRESULT { COMADMIN_E_PROPERTY_OVERFLOW = cast(HRESULT)0x8011043CL } + +enum : HRESULT { COMADMIN_E_NOTINREGISTRY = cast(HRESULT)0x8011043EL } + +enum : HRESULT { COMADMIN_E_OBJECTNOTPOOLABLE = cast(HRESULT)0x8011043FL } + +enum : HRESULT { COMADMIN_E_APPLID_MATCHES_CLSID = cast(HRESULT)0x80110446L } + +enum : HRESULT { COMADMIN_E_ROLE_DOES_NOT_EXIST = cast(HRESULT)0x80110447L } + +enum : HRESULT { COMADMIN_E_START_APP_NEEDS_COMPONENTS = cast(HRESULT)0x80110448L } + +enum : HRESULT { COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM = cast(HRESULT)0x80110449L } + +enum : HRESULT { COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY = cast(HRESULT)0x8011044AL } + +enum : HRESULT { COMADMIN_E_CAN_NOT_START_APP = cast(HRESULT)0x8011044BL } + +enum : HRESULT { COMADMIN_E_CAN_NOT_EXPORT_SYS_APP = cast(HRESULT)0x8011044CL } + +enum : HRESULT { COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT = cast(HRESULT)0x8011044DL } + +enum : HRESULT { COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER = cast(HRESULT)0x8011044EL } + +enum : HRESULT { COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE = cast(HRESULT)0x8011044FL } + +enum : HRESULT { COMADMIN_E_BASE_PARTITION_ONLY = cast(HRESULT)0x80110450L } + +enum : HRESULT { COMADMIN_E_START_APP_DISABLED = cast(HRESULT)0x80110451L } + +enum : HRESULT { COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME = cast(HRESULT)0x80110457L } + +enum : HRESULT { COMADMIN_E_CAT_INVALID_PARTITION_NAME = cast(HRESULT)0x80110458L } + +enum : HRESULT { COMADMIN_E_CAT_PARTITION_IN_USE = cast(HRESULT)0x80110459L } + +enum : HRESULT { COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES = cast(HRESULT)0x8011045AL } + +enum : HRESULT { COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED = cast(HRESULT)0x8011045BL } + +enum : HRESULT { COMADMIN_E_AMBIGUOUS_APPLICATION_NAME = cast(HRESULT)0x8011045CL } + +enum : HRESULT { COMADMIN_E_AMBIGUOUS_PARTITION_NAME = cast(HRESULT)0x8011045DL } + +enum : HRESULT { COMADMIN_E_REGDB_NOTINITIALIZED = cast(HRESULT)0x80110472L } + +enum : HRESULT { COMADMIN_E_REGDB_NOTOPEN = cast(HRESULT)0x80110473L } + +enum : HRESULT { COMADMIN_E_REGDB_SYSTEMERR = cast(HRESULT)0x80110474L } + +enum : HRESULT { COMADMIN_E_REGDB_ALREADYRUNNING = cast(HRESULT)0x80110475L } + +enum : HRESULT { COMADMIN_E_MIG_VERSIONNOTSUPPORTED = cast(HRESULT)0x80110480L } + +enum : HRESULT { COMADMIN_E_MIG_SCHEMANOTFOUND = cast(HRESULT)0x80110481L } + +enum : HRESULT { COMADMIN_E_CAT_BITNESSMISMATCH = cast(HRESULT)0x80110482L } + +enum : HRESULT { COMADMIN_E_CAT_UNACCEPTABLEBITNESS = cast(HRESULT)0x80110483L } + +enum : HRESULT { COMADMIN_E_CAT_WRONGAPPBITNESS = cast(HRESULT)0x80110484L } + +enum : HRESULT { COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED = cast(HRESULT)0x80110485L } + +enum : HRESULT { COMADMIN_E_CAT_SERVERFAULT = cast(HRESULT)0x80110486L } + +enum : HRESULT { COMQC_E_APPLICATION_NOT_QUEUED = cast(HRESULT)0x80110600L } + +enum : HRESULT { COMQC_E_NO_QUEUEABLE_INTERFACES = cast(HRESULT)0x80110601L } + +enum : HRESULT { COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE = cast(HRESULT)0x80110602L } + +enum : HRESULT { COMQC_E_NO_IPERSISTSTREAM = cast(HRESULT)0x80110603L } + +enum : HRESULT { COMQC_E_BAD_MESSAGE = cast(HRESULT)0x80110604L } + +enum : HRESULT { COMQC_E_UNAUTHENTICATED = cast(HRESULT)0x80110605L } + +enum : HRESULT { COMQC_E_UNTRUSTED_ENQUEUER = cast(HRESULT)0x80110606L } + +enum : HRESULT { MSDTC_E_DUPLICATE_RESOURCE = cast(HRESULT)0x80110701L } + +enum : HRESULT { COMADMIN_E_OBJECT_PARENT_MISSING = cast(HRESULT)0x80110808L } + +enum : HRESULT { COMADMIN_E_OBJECT_DOES_NOT_EXIST = cast(HRESULT)0x80110809L } + +enum : HRESULT { COMADMIN_E_APP_NOT_RUNNING = cast(HRESULT)0x8011080AL } + +enum : HRESULT { COMADMIN_E_INVALID_PARTITION = cast(HRESULT)0x8011080BL } + +enum : HRESULT { COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE = cast(HRESULT)0x8011080DL } + +enum : HRESULT { COMADMIN_E_USER_IN_SET = cast(HRESULT)0x8011080EL } + +enum : HRESULT { COMADMIN_E_CANTRECYCLELIBRARYAPPS = cast(HRESULT)0x8011080FL } + +enum : HRESULT { COMADMIN_E_CANTRECYCLESERVICEAPPS = cast(HRESULT)0x80110811L } + +enum : HRESULT { COMADMIN_E_PROCESSALREADYRECYCLED = cast(HRESULT)0x80110812L } + +enum : HRESULT { COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED = cast(HRESULT)0x80110813L } + +enum : HRESULT { COMADMIN_E_CANTMAKEINPROCSERVICE = cast(HRESULT)0x80110814L } + +enum : HRESULT { COMADMIN_E_PROGIDINUSEBYCLSID = cast(HRESULT)0x80110815L } + +enum : HRESULT { COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET = cast(HRESULT)0x80110816L } + +enum : HRESULT { COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED = cast(HRESULT)0x80110817L } + +enum : HRESULT { COMADMIN_E_PARTITION_ACCESSDENIED = cast(HRESULT)0x80110818L } + +enum : HRESULT { COMADMIN_E_PARTITION_MSI_ONLY = cast(HRESULT)0x80110819L } + +enum : HRESULT { COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT = cast(HRESULT)0x8011081AL } + +enum : HRESULT { COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS = cast(HRESULT)0x8011081BL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_SOURCE = cast(HRESULT)0x8011081CL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_DEST = cast(HRESULT)0x8011081DL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_PRIVATE = cast(HRESULT)0x8011081EL } + +enum : HRESULT { COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET = cast(HRESULT)0x8011081FL } + +enum : HRESULT { COMADMIN_E_CANNOT_ALIAS_EVENTCLASS = cast(HRESULT)0x80110820L } + +enum : HRESULT { COMADMIN_E_PRIVATE_ACCESSDENIED = cast(HRESULT)0x80110821L } + +enum : HRESULT { COMADMIN_E_SAFERINVALID = cast(HRESULT)0x80110822L } + +enum : HRESULT { COMADMIN_E_REGISTRY_ACCESSDENIED = cast(HRESULT)0x80110823L } + +enum : HRESULT { COMADMIN_E_CAT_DUPLICATE_PARTITION_SET_NAME = cast(HRESULT)0x80110900L } + +enum : HRESULT { COMADMIN_E_CAT_INVALID_PARTITION_SET_NAME = cast(HRESULT)0x80110901L } + +// #endif//_WINERROR_ ADDED src/win32/ansi/wingdi.d Index: src/win32/ansi/wingdi.d ================================================================== --- src/win32/ansi/wingdi.d +++ src/win32/ansi/wingdi.d @@ -0,0 +1,4997 @@ +module win32.ansi.wingdi; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.windef; + +// #ifndef _WINGDI_ +// #define _WINGDI_ + +// #ifdef _MAC +// #... +// #endif + +// #if !defined(_GDI32_) +// #define WINGDIAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #if !defined(_SPOOL32_) +// #define WINSPOOLAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef WINVER +// #... +// #endif /* WINVER */ + +// #ifndef NOGDI + +// #ifndef NORASTEROPS + +enum : uint { R2_BLACK = 1 } +enum : uint { R2_NOTMERGEPEN = 2 } +enum : uint { R2_MASKNOTPEN = 3 } +enum : uint { R2_NOTCOPYPEN = 4 } +enum : uint { R2_MASKPENNOT = 5 } +enum : uint { R2_NOT = 6 } +enum : uint { R2_XORPEN = 7 } +enum : uint { R2_NOTMASKPEN = 8 } +enum : uint { R2_MASKPEN = 9 } +enum : uint { R2_NOTXORPEN = 10 } +enum : uint { R2_NOP = 11 } +enum : uint { R2_MERGENOTPEN = 12 } +enum : uint { R2_COPYPEN = 13 } +enum : uint { R2_MERGEPENNOT = 14 } +enum : uint { R2_MERGEPEN = 15 } +enum : uint { R2_WHITE = 16 } +enum : uint { R2_LAST = 16 } + +enum : DWORD { SRCCOPY = 0x00CC0020 } +enum : DWORD { SRCPAINT = 0x00EE0086 } +enum : DWORD { SRCAND = 0x008800C6 } +enum : DWORD { SRCINVERT = 0x00660046 } +enum : DWORD { SRCERASE = 0x00440328 } +enum : DWORD { NOTSRCCOPY = 0x00330008 } +enum : DWORD { NOTSRCERASE = 0x001100A6 } +enum : DWORD { MERGECOPY = 0x00C000CA } +enum : DWORD { MERGEPAINT = 0x00BB0226 } +enum : DWORD { PATCOPY = 0x00F00021 } +enum : DWORD { PATPAINT = 0x00FB0A09 } +enum : DWORD { PATINVERT = 0x005A0049 } +enum : DWORD { DSTINVERT = 0x00550009 } +enum : DWORD { BLACKNESS = 0x00000042 } +enum : DWORD { WHITENESS = 0x00FF0062 } +// #if(WINVER >= 0x0500) + +enum : DWORD { NOMIRRORBITMAP = 0x80000000 } +enum : DWORD { CAPTUREBLT = 0x40000000 } +// #endif /* WINVER >= 0x0500 */ + +DWORD MAKEROP4(DWORD fore, DWORD back){ return ((back << 8) & 0xFF000000) | fore; } + +// #endif /* NORASTEROPS */ + +enum : uint { GDI_ERROR = 0xFFFFFFFF } +const HANDLE HGDI_ERROR = cast(HANDLE)(0xFFFFFFFFL); + +enum : uint { ERROR = 0 } +enum : uint { NULLREGION = 1 } +enum : uint { SIMPLEREGION = 2 } +enum : uint { COMPLEXREGION = 3 } +alias ERROR RGN_ERROR; + +enum : uint { RGN_AND = 1 } +enum : uint { RGN_OR = 2 } +enum : uint { RGN_XOR = 3 } +enum : uint { RGN_DIFF = 4 } +enum : uint { RGN_COPY = 5 } +alias RGN_AND RGN_MIN; +alias RGN_COPY RGN_MAX; + +enum : uint { BLACKONWHITE = 1 } +enum : uint { WHITEONBLACK = 2 } +enum : uint { COLORONCOLOR = 3 } +enum : uint { HALFTONE = 4 } +enum : uint { MAXSTRETCHBLTMODE = 4 } + +// #if(WINVER >= 0x0400) + +alias BLACKONWHITE STRETCH_ANDSCANS; +alias WHITEONBLACK STRETCH_ORSCANS; +alias COLORONCOLOR STRETCH_DELETESCANS; +alias HALFTONE STRETCH_HALFTONE; +// #endif /* WINVER >= 0x0400 */ + +enum : uint { ALTERNATE = 1 } +enum : uint { WINDING = 2 } +enum : uint { POLYFILL_LAST = 2 } + +// #if(WINVER >= 0x0500) +enum : uint { LAYOUT_RTL = 0x00000001 } +enum : uint { LAYOUT_BTT = 0x00000002 } +enum : uint { LAYOUT_VBH = 0x00000004 } +enum : uint { LAYOUT_ORIENTATIONMASK = LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH } +enum : uint { LAYOUT_BITMAPORIENTATIONPRESERVED = 0x00000008 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { TA_NOUPDATECP = 0 } +enum : uint { TA_UPDATECP = 1 } + +enum : uint { TA_LEFT = 0 } +enum : uint { TA_RIGHT = 2 } +enum : uint { TA_CENTER = 6 } + +enum : uint { TA_TOP = 0 } +enum : uint { TA_BOTTOM = 8 } +enum : uint { TA_BASELINE = 24 } +// #if (WINVER >= 0x0400) +enum : uint { TA_RTLREADING = 256 } +enum : uint { TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING } +// #else +// #... +// #endif + +alias TA_BASELINE VTA_BASELINE; +alias TA_BOTTOM VTA_LEFT; +alias TA_TOP VTA_RIGHT; +alias TA_CENTER VTA_CENTER; +alias TA_RIGHT VTA_BOTTOM; +alias TA_LEFT VTA_TOP; + +enum : uint { ETO_OPAQUE = 0x0002 } +enum : uint { ETO_CLIPPED = 0x0004 } +// #if(WINVER >= 0x0400) +enum : uint { ETO_GLYPH_INDEX = 0x0010 } +enum : uint { ETO_RTLREADING = 0x0080 } +enum : uint { ETO_NUMERICSLOCAL = 0x0400 } +enum : uint { ETO_NUMERICSLATIN = 0x0800 } +enum : uint { ETO_IGNORELANGUAGE = 0x1000 } +// #endif /* WINVER >= 0x0400 */ +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { ETO_PDY = 0x2000 } +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { ASPECT_FILTERING = 0x0001 } + +enum : uint { DCB_RESET = 0x0001 } +enum : uint { DCB_ACCUMULATE = 0x0002 } +alias DCB_ACCUMULATE DCB_DIRTY; +enum : uint { DCB_SET = DCB_RESET | DCB_ACCUMULATE } +enum : uint { DCB_ENABLE = 0x0004 } +enum : uint { DCB_DISABLE = 0x0008 } + +// #ifndef NOMETAFILE + +enum : uint { META_SETBKCOLOR = 0x0201 } +enum : uint { META_SETBKMODE = 0x0102 } +enum : uint { META_SETMAPMODE = 0x0103 } +enum : uint { META_SETROP2 = 0x0104 } +enum : uint { META_SETRELABS = 0x0105 } +enum : uint { META_SETPOLYFILLMODE = 0x0106 } +enum : uint { META_SETSTRETCHBLTMODE = 0x0107 } +enum : uint { META_SETTEXTCHAREXTRA = 0x0108 } +enum : uint { META_SETTEXTCOLOR = 0x0209 } +enum : uint { META_SETTEXTJUSTIFICATION = 0x020A } +enum : uint { META_SETWINDOWORG = 0x020B } +enum : uint { META_SETWINDOWEXT = 0x020C } +enum : uint { META_SETVIEWPORTORG = 0x020D } +enum : uint { META_SETVIEWPORTEXT = 0x020E } +enum : uint { META_OFFSETWINDOWORG = 0x020F } +enum : uint { META_SCALEWINDOWEXT = 0x0410 } +enum : uint { META_OFFSETVIEWPORTORG = 0x0211 } +enum : uint { META_SCALEVIEWPORTEXT = 0x0412 } +enum : uint { META_LINETO = 0x0213 } +enum : uint { META_MOVETO = 0x0214 } +enum : uint { META_EXCLUDECLIPRECT = 0x0415 } +enum : uint { META_INTERSECTCLIPRECT = 0x0416 } +enum : uint { META_ARC = 0x0817 } +enum : uint { META_ELLIPSE = 0x0418 } +enum : uint { META_FLOODFILL = 0x0419 } +enum : uint { META_PIE = 0x081A } +enum : uint { META_RECTANGLE = 0x041B } +enum : uint { META_ROUNDRECT = 0x061C } +enum : uint { META_PATBLT = 0x061D } +enum : uint { META_SAVEDC = 0x001E } +enum : uint { META_SETPIXEL = 0x041F } +enum : uint { META_OFFSETCLIPRGN = 0x0220 } +enum : uint { META_TEXTOUT = 0x0521 } +enum : uint { META_BITBLT = 0x0922 } +enum : uint { META_STRETCHBLT = 0x0B23 } +enum : uint { META_POLYGON = 0x0324 } +enum : uint { META_POLYLINE = 0x0325 } +enum : uint { META_ESCAPE = 0x0626 } +enum : uint { META_RESTOREDC = 0x0127 } +enum : uint { META_FILLREGION = 0x0228 } +enum : uint { META_FRAMEREGION = 0x0429 } +enum : uint { META_INVERTREGION = 0x012A } +enum : uint { META_PAINTREGION = 0x012B } +enum : uint { META_SELECTCLIPREGION = 0x012C } +enum : uint { META_SELECTOBJECT = 0x012D } +enum : uint { META_SETTEXTALIGN = 0x012E } +enum : uint { META_CHORD = 0x0830 } +enum : uint { META_SETMAPPERFLAGS = 0x0231 } +enum : uint { META_EXTTEXTOUT = 0x0a32 } +enum : uint { META_SETDIBTODEV = 0x0d33 } +enum : uint { META_SELECTPALETTE = 0x0234 } +enum : uint { META_REALIZEPALETTE = 0x0035 } +enum : uint { META_ANIMATEPALETTE = 0x0436 } +enum : uint { META_SETPALENTRIES = 0x0037 } +enum : uint { META_POLYPOLYGON = 0x0538 } +enum : uint { META_RESIZEPALETTE = 0x0139 } +enum : uint { META_DIBBITBLT = 0x0940 } +enum : uint { META_DIBSTRETCHBLT = 0x0b41 } +enum : uint { META_DIBCREATEPATTERNBRUSH = 0x0142 } +enum : uint { META_STRETCHDIB = 0x0f43 } +enum : uint { META_EXTFLOODFILL = 0x0548 } +// #if(WINVER >= 0x0500) +enum : uint { META_SETLAYOUT = 0x0149 } +// #endif /* WINVER >= 0x0500 */ +enum : uint { META_DELETEOBJECT = 0x01f0 } +enum : uint { META_CREATEPALETTE = 0x00f7 } +enum : uint { META_CREATEPATTERNBRUSH = 0x01F9 } +enum : uint { META_CREATEPENINDIRECT = 0x02FA } +enum : uint { META_CREATEFONTINDIRECT = 0x02FB } +enum : uint { META_CREATEBRUSHINDIRECT = 0x02FC } +enum : uint { META_CREATEREGION = 0x06FF } + +// #if(WINVER >= 0x0400) +struct _DRAWPATRECT { + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; +} +alias _DRAWPATRECT DRAWPATRECT; +alias _DRAWPATRECT* PDRAWPATRECT; + +// #endif /* WINVER >= 0x0400 */ + +// #endif /* NOMETAFILE */ + +enum : uint { NEWFRAME = 1 } +enum : uint { ABORTDOC = 2 } +enum : uint { NEXTBAND = 3 } +enum : uint { SETCOLORTABLE = 4 } +enum : uint { GETCOLORTABLE = 5 } +enum : uint { FLUSHOUTPUT = 6 } +enum : uint { DRAFTMODE = 7 } +enum : uint { QUERYESCSUPPORT = 8 } +enum : uint { SETABORTPROC = 9 } +enum : uint { STARTDOC = 10 } +enum : uint { ENDDOC = 11 } +enum : uint { GETPHYSPAGESIZE = 12 } +enum : uint { GETPRINTINGOFFSET = 13 } +enum : uint { GETSCALINGFACTOR = 14 } +enum : uint { MFCOMMENT = 15 } +enum : uint { GETPENWIDTH = 16 } +enum : uint { SETCOPYCOUNT = 17 } +enum : uint { SELECTPAPERSOURCE = 18 } +enum : uint { DEVICEDATA = 19 } +enum : uint { PASSTHROUGH = 19 } +enum : uint { GETTECHNOLGY = 20 } +enum : uint { GETTECHNOLOGY = 20 } +enum : uint { SETLINECAP = 21 } +enum : uint { SETLINEJOIN = 22 } +enum : uint { SETMITERLIMIT = 23 } +enum : uint { BANDINFO = 24 } +enum : uint { DRAWPATTERNRECT = 25 } +enum : uint { GETVECTORPENSIZE = 26 } +enum : uint { GETVECTORBRUSHSIZE = 27 } +enum : uint { ENABLEDUPLEX = 28 } +enum : uint { GETSETPAPERBINS = 29 } +enum : uint { GETSETPRINTORIENT = 30 } +enum : uint { ENUMPAPERBINS = 31 } +enum : uint { SETDIBSCALING = 32 } +enum : uint { EPSPRINTING = 33 } +enum : uint { ENUMPAPERMETRICS = 34 } +enum : uint { GETSETPAPERMETRICS = 35 } +enum : uint { POSTSCRIPT_DATA = 37 } +enum : uint { POSTSCRIPT_IGNORE = 38 } +enum : uint { MOUSETRAILS = 39 } +enum : uint { GETDEVICEUNITS = 42 } + +enum : uint { GETEXTENDEDTEXTMETRICS = 256 } +enum : uint { GETEXTENTTABLE = 257 } +enum : uint { GETPAIRKERNTABLE = 258 } +enum : uint { GETTRACKKERNTABLE = 259 } +enum : uint { EXTTEXTOUT = 512 } +enum : uint { GETFACENAME = 513 } +enum : uint { DOWNLOADFACE = 514 } +enum : uint { ENABLERELATIVEWIDTHS = 768 } +enum : uint { ENABLEPAIRKERNING = 769 } +enum : uint { SETKERNTRACK = 770 } +enum : uint { SETALLJUSTVALUES = 771 } +enum : uint { SETCHARSET = 772 } + +enum : uint { STRETCHBLT = 2048 } +enum : uint { METAFILE_DRIVER = 2049 } +enum : uint { GETSETSCREENPARAMS = 3072 } +enum : uint { QUERYDIBSUPPORT = 3073 } +enum : uint { BEGIN_PATH = 4096 } +enum : uint { CLIP_TO_PATH = 4097 } +enum : uint { END_PATH = 4098 } +enum : uint { EXT_DEVICE_CAPS = 4099 } +enum : uint { RESTORE_CTM = 4100 } +enum : uint { SAVE_CTM = 4101 } +enum : uint { SET_ARC_DIRECTION = 4102 } +enum : uint { SET_BACKGROUND_COLOR = 4103 } +enum : uint { SET_POLY_MODE = 4104 } +enum : uint { SET_SCREEN_ANGLE = 4105 } +enum : uint { SET_SPREAD = 4106 } +enum : uint { TRANSFORM_CTM = 4107 } +enum : uint { SET_CLIP_BOX = 4108 } +enum : uint { SET_BOUNDS = 4109 } +enum : uint { SET_MIRROR_MODE = 4110 } +enum : uint { OPENCHANNEL = 4110 } +enum : uint { DOWNLOADHEADER = 4111 } +enum : uint { CLOSECHANNEL = 4112 } +enum : uint { POSTSCRIPT_PASSTHROUGH = 4115 } +enum : uint { ENCAPSULATED_POSTSCRIPT = 4116 } + +enum : uint { POSTSCRIPT_IDENTIFY = 4117 } +enum : uint { POSTSCRIPT_INJECTION = 4118 } + +enum : uint { CHECKJPEGFORMAT = 4119 } +enum : uint { CHECKPNGFORMAT = 4120 } + +enum : uint { GET_PS_FEATURESETTING = 4121 } + +enum : uint { SPCLPASSTHROUGH2 = 4568 } + +enum : uint { PSIDENT_GDICENTRIC = 0 } +enum : uint { PSIDENT_PSCENTRIC = 1 } + +struct _PSINJECTDATA { + + DWORD DataBytes; + WORD InjectionPoint; + WORD PageNumber; + +} +alias _PSINJECTDATA PSINJECTDATA; +alias _PSINJECTDATA* PPSINJECTDATA; + +enum : uint { PSINJECT_BEGINSTREAM = 1 } +enum : uint { PSINJECT_PSADOBE = 2 } +enum : uint { PSINJECT_PAGESATEND = 3 } +enum : uint { PSINJECT_PAGES = 4 } + +enum : uint { PSINJECT_DOCNEEDEDRES = 5 } +enum : uint { PSINJECT_DOCSUPPLIEDRES = 6 } +enum : uint { PSINJECT_PAGEORDER = 7 } +enum : uint { PSINJECT_ORIENTATION = 8 } +enum : uint { PSINJECT_BOUNDINGBOX = 9 } +enum : uint { PSINJECT_DOCUMENTPROCESSCOLORS = 10 } + +enum : uint { PSINJECT_COMMENTS = 11 } +enum : uint { PSINJECT_BEGINDEFAULTS = 12 } +enum : uint { PSINJECT_ENDDEFAULTS = 13 } +enum : uint { PSINJECT_BEGINPROLOG = 14 } +enum : uint { PSINJECT_ENDPROLOG = 15 } +enum : uint { PSINJECT_BEGINSETUP = 16 } +enum : uint { PSINJECT_ENDSETUP = 17 } +enum : uint { PSINJECT_TRAILER = 18 } +enum : uint { PSINJECT_EOF = 19 } +enum : uint { PSINJECT_ENDSTREAM = 20 } +enum : uint { PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21 } + +enum : uint { PSINJECT_PAGENUMBER = 100 } +enum : uint { PSINJECT_BEGINPAGESETUP = 101 } +enum : uint { PSINJECT_ENDPAGESETUP = 102 } +enum : uint { PSINJECT_PAGETRAILER = 103 } +enum : uint { PSINJECT_PLATECOLOR = 104 } + +enum : uint { PSINJECT_SHOWPAGE = 105 } +enum : uint { PSINJECT_PAGEBBOX = 106 } +enum : uint { PSINJECT_ENDPAGECOMMENTS = 107 } + +enum : uint { PSINJECT_VMSAVE = 200 } +enum : uint { PSINJECT_VMRESTORE = 201 } + +enum : uint { FEATURESETTING_NUP = 0 } +enum : uint { FEATURESETTING_OUTPUT = 1 } +enum : uint { FEATURESETTING_PSLEVEL = 2 } +enum : uint { FEATURESETTING_CUSTPAPER = 3 } +enum : uint { FEATURESETTING_MIRROR = 4 } +enum : uint { FEATURESETTING_NEGATIVE = 5 } +enum : uint { FEATURESETTING_PROTOCOL = 6 } + +enum : uint { FEATURESETTING_PRIVATE_BEGIN = 0x1000 } +enum : uint { FEATURESETTING_PRIVATE_END = 0x1FFF } + +struct _PSFEATURE_OUTPUT { + + BOOL bPageIndependent; + BOOL bSetPageDevice; +} +alias _PSFEATURE_OUTPUT PSFEATURE_OUTPUT; +alias _PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; + +struct _PSFEATURE_CUSTPAPER { + + LONG lOrientation; + LONG lWidth; + LONG lHeight; + LONG lWidthOffset; + LONG lHeightOffset; +} +alias _PSFEATURE_CUSTPAPER PSFEATURE_CUSTPAPER; +alias _PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER; + +enum : uint { PSPROTOCOL_ASCII = 0 } +enum : uint { PSPROTOCOL_BCP = 1 } +enum : uint { PSPROTOCOL_TBCP = 2 } +enum : uint { PSPROTOCOL_BINARY = 3 } + +enum : uint { QDI_SETDIBITS = 1 } +enum : uint { QDI_GETDIBITS = 2 } +enum : uint { QDI_DIBTOSCREEN = 4 } +enum : uint { QDI_STRETCHDIB = 8 } + +enum : uint { SP_NOTREPORTED = 0x4000 } +enum { SP_ERROR = -1 } +enum { SP_APPABORT = -2 } +enum { SP_USERABORT = -3 } +enum { SP_OUTOFDISK = -4 } +enum { SP_OUTOFMEMORY = -5 } + +enum : uint { PR_JOBSTATUS = 0x0000 } + +enum : uint { OBJ_PEN = 1 } +enum : uint { OBJ_BRUSH = 2 } +enum : uint { OBJ_DC = 3 } +enum : uint { OBJ_METADC = 4 } +enum : uint { OBJ_PAL = 5 } +enum : uint { OBJ_FONT = 6 } +enum : uint { OBJ_BITMAP = 7 } +enum : uint { OBJ_REGION = 8 } +enum : uint { OBJ_METAFILE = 9 } +enum : uint { OBJ_MEMDC = 10 } +enum : uint { OBJ_EXTPEN = 11 } +enum : uint { OBJ_ENHMETADC = 12 } +enum : uint { OBJ_ENHMETAFILE = 13 } +enum : uint { OBJ_COLORSPACE = 14 } + +enum : uint { MWT_IDENTITY = 1 } +enum : uint { MWT_LEFTMULTIPLY = 2 } +enum : uint { MWT_RIGHTMULTIPLY = 3 } + +alias MWT_IDENTITY MWT_MIN; +alias MWT_RIGHTMULTIPLY MWT_MAX; + +// #define _XFORM_ +struct tagXFORM { + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; +} +alias tagXFORM XFORM; +alias tagXFORM* PXFORM; +alias tagXFORM* LPXFORM; + +struct tagBITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; +} +alias tagBITMAP BITMAP; +alias tagBITMAP* PBITMAP; +alias tagBITMAP* NPBITMAP; +alias tagBITMAP* LPBITMAP; + +align(1): +struct tagRGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} +alias tagRGBTRIPLE RGBTRIPLE; + +align: + +struct tagRGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +} +alias tagRGBQUAD RGBQUAD; + +alias RGBQUAD* LPRGBQUAD; + +// #if(WINVER >= 0x0400) + +enum : uint { CS_ENABLE = 0x00000001 } +enum : uint { CS_DISABLE = 0x00000002 } +enum : uint { CS_DELETE_TRANSFORM = 0x00000003 } + +// #define LCS_SIGNATURE 'PSOC' + +// #define LCS_sRGB 'sRGB' +// #define LCS_WINDOWS_COLOR_SPACE 'Win ' + +alias LONG LCSCSTYPE; +enum : uint { LCS_CALIBRATED_RGB = 0x00000000 } + +alias LONG LCSGAMUTMATCH; +enum : uint { LCS_GM_BUSINESS = 0x00000001 } +enum : uint { LCS_GM_GRAPHICS = 0x00000002 } +enum : uint { LCS_GM_IMAGES = 0x00000004 } +enum : uint { LCS_GM_ABS_COLORIMETRIC = 0x00000008 } + +enum : uint { CM_OUT_OF_GAMUT = 255 } +enum : uint { CM_IN_GAMUT = 0 } + +enum : uint { ICM_ADDPROFILE = 1 } +enum : uint { ICM_DELETEPROFILE = 2 } +enum : uint { ICM_QUERYPROFILE = 3 } +enum : uint { ICM_SETDEFAULTPROFILE = 4 } +enum : uint { ICM_REGISTERICMATCHER = 5 } +enum : uint { ICM_UNREGISTERICMATCHER = 6 } +enum : uint { ICM_QUERYMATCH = 7 } + +BYTE GetKValue(DWORD cmyk){ return cast(BYTE)cmyk; } +BYTE GetYValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 8); } +BYTE GetMValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 16); } +BYTE GetCValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 24); } + +DWORD CMYK(BYTE c, BYTE m, BYTE y, BYTE k){ return (cast(COLORREF)(((cast(BYTE)(k)|(cast(WORD)(cast(BYTE)(y))<<8))|((cast(DWORD)cast(BYTE)(m))<<16))|((cast(DWORD)cast(BYTE)(c))<<24))); } + +alias int FXPT16DOT16; +alias int* LPFXPT16DOT16; +alias int FXPT2DOT30; +alias int* LPFXPT2DOT30; + +struct tagCIEXYZ { + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; +} +alias tagCIEXYZ CIEXYZ; + +alias CIEXYZ* LPCIEXYZ; + +struct tagICEXYZTRIPLE { + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; +} +alias tagICEXYZTRIPLE CIEXYZTRIPLE; + +alias CIEXYZTRIPLE* LPCIEXYZTRIPLE; + +struct tagLOGCOLORSPACEA { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR lcsFilename[MAX_PATH]; +} +alias tagLOGCOLORSPACEA LOGCOLORSPACEA; +alias tagLOGCOLORSPACEA* LPLOGCOLORSPACEA; + +struct tagLOGCOLORSPACEW { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR lcsFilename[MAX_PATH]; +} +alias tagLOGCOLORSPACEW LOGCOLORSPACEW; +alias tagLOGCOLORSPACEW* LPLOGCOLORSPACEW; + +// #ifdef UNICODE +// ... +// #else +alias LOGCOLORSPACEA LOGCOLORSPACE; +alias LPLOGCOLORSPACEA LPLOGCOLORSPACE; +// #endif // UNICODE + +// #endif /* WINVER >= 0x0400 */ + +struct tagBITMAPCOREHEADER { + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} +alias tagBITMAPCOREHEADER BITMAPCOREHEADER; +alias tagBITMAPCOREHEADER* LPBITMAPCOREHEADER; +alias tagBITMAPCOREHEADER* PBITMAPCOREHEADER; + +struct tagBITMAPINFOHEADER { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} +alias tagBITMAPINFOHEADER BITMAPINFOHEADER; +alias tagBITMAPINFOHEADER* LPBITMAPINFOHEADER; +alias tagBITMAPINFOHEADER* PBITMAPINFOHEADER; + +// #if(WINVER >= 0x0400) +struct _0 { + 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 _0 BITMAPV4HEADER; +alias _0* LPBITMAPV4HEADER; +alias _0* PBITMAPV4HEADER; + +// #endif /* WINVER >= 0x0400 */ + +// #if (WINVER >= 0x0500) +struct _1 { + 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 _1 BITMAPV5HEADER; +alias _1* LPBITMAPV5HEADER; +alias _1* PBITMAPV5HEADER; + +// #define PROFILE_LINKED 'LINK' +// #define PROFILE_EMBEDDED 'MBED' +// #endif + +enum : uint { BI_RGB = 0 } +enum : uint { BI_RLE8 = 1 } +enum : uint { BI_RLE4 = 2 } +enum : uint { BI_BITFIELDS = 3 } +enum : uint { BI_JPEG = 4 } +enum : uint { BI_PNG = 5 } +// #if (_WIN32_WINNT >= 0x0400) +// #endif + +struct tagBITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD bmiColors[1]; +} +alias tagBITMAPINFO BITMAPINFO; +alias tagBITMAPINFO* LPBITMAPINFO; +alias tagBITMAPINFO* PBITMAPINFO; + +struct tagBITMAPCOREINFO { + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE bmciColors[1]; +} +alias tagBITMAPCOREINFO BITMAPCOREINFO; +alias tagBITMAPCOREINFO* LPBITMAPCOREINFO; +alias tagBITMAPCOREINFO* PBITMAPCOREINFO; + +align(2): +struct tagBITMAPFILEHEADER { + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} +alias tagBITMAPFILEHEADER BITMAPFILEHEADER; +alias tagBITMAPFILEHEADER* LPBITMAPFILEHEADER; +alias tagBITMAPFILEHEADER* PBITMAPFILEHEADER; + +align: + +// #define MAKEPOINTS(l) (*((POINTS FAR *)&(l))) + +// #if(WINVER >= 0x0400) +// #ifndef NOFONTSIG +struct tagFONTSIGNATURE { + DWORD fsUsb[4]; + DWORD fsCsb[2]; +} +alias tagFONTSIGNATURE FONTSIGNATURE; +alias tagFONTSIGNATURE* PFONTSIGNATURE; +alias tagFONTSIGNATURE* LPFONTSIGNATURE; + +struct tagCHARSETINFO { + UINT ciCharset; + UINT ciACP; + FONTSIGNATURE fs; +} +alias tagCHARSETINFO CHARSETINFO; +alias tagCHARSETINFO* PCHARSETINFO; +alias tagCHARSETINFO* NPCHARSETINFO; +alias tagCHARSETINFO* LPCHARSETINFO; + +enum : uint { TCI_SRCCHARSET = 1 } +enum : uint { TCI_SRCCODEPAGE = 2 } +enum : uint { TCI_SRCFONTSIG = 3 } + +struct tagLOCALESIGNATURE { + DWORD lsUsb[4]; + DWORD lsCsbDefault[2]; + DWORD lsCsbSupported[2]; +} +alias tagLOCALESIGNATURE LOCALESIGNATURE; +alias tagLOCALESIGNATURE* PLOCALESIGNATURE; +alias tagLOCALESIGNATURE* LPLOCALESIGNATURE; + +// #endif +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOMETAFILE + +struct tagHANDLETABLE { + HGDIOBJ objectHandle[1]; +} +alias tagHANDLETABLE HANDLETABLE; +alias tagHANDLETABLE* PHANDLETABLE; +alias tagHANDLETABLE* LPHANDLETABLE; + +struct tagMETARECORD { + DWORD rdSize; + WORD rdFunction; + WORD rdParm[1]; +} +alias tagMETARECORD METARECORD; + +alias tagMETARECORD* PMETARECORD; +alias tagMETARECORD* LPMETARECORD; + +struct tagMETAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; +} +alias tagMETAFILEPICT METAFILEPICT; +alias tagMETAFILEPICT* LPMETAFILEPICT; + +align(2): +struct tagMETAHEADER { + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; +} +alias tagMETAHEADER METAHEADER; + +alias tagMETAHEADER* PMETAHEADER; +alias tagMETAHEADER* LPMETAHEADER; + +align: + +struct tagENHMETARECORD { + DWORD iType; + DWORD nSize; + DWORD dParm[1]; +} +alias tagENHMETARECORD ENHMETARECORD; +alias tagENHMETARECORD* PENHMETARECORD; +alias tagENHMETARECORD* LPENHMETARECORD; + +struct tagENHMETAHEADER { + DWORD iType; + DWORD nSize; + + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + + WORD sReserved; + DWORD nDescription; + + DWORD offDescription; + + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; +// #if(WINVER >= 0x0400) + DWORD cbPixelFormat; + + DWORD offPixelFormat; + + DWORD bOpenGL; + +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) + SIZEL szlMicrometers; +// #endif /* WINVER >= 0x0500 */ + +} +alias tagENHMETAHEADER ENHMETAHEADER; +alias tagENHMETAHEADER* PENHMETAHEADER; +alias tagENHMETAHEADER* LPENHMETAHEADER; + +// #endif /* NOMETAFILE */ + +// #ifndef NOTEXTMETRIC + +enum : uint { TMPF_FIXED_PITCH = 0x01 } +enum : uint { TMPF_VECTOR = 0x02 } +enum : uint { TMPF_DEVICE = 0x08 } +enum : uint { TMPF_TRUETYPE = 0x04 } + +// #ifdef UNICODE +// ... +// #else +alias BYTE BCHAR; +// #endif + +// #ifndef _TEXTMETRIC_DEFINED +// #define _TEXTMETRIC_DEFINED +struct tagTEXTMETRICA { + 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 tagTEXTMETRICA TEXTMETRICA; +alias tagTEXTMETRICA* PTEXTMETRICA; +alias tagTEXTMETRICA* NPTEXTMETRICA; +alias tagTEXTMETRICA* LPTEXTMETRICA; + +struct tagTEXTMETRICW { + 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 tagTEXTMETRICW TEXTMETRICW; +alias tagTEXTMETRICW* PTEXTMETRICW; +alias tagTEXTMETRICW* NPTEXTMETRICW; +alias tagTEXTMETRICW* LPTEXTMETRICW; + +// #ifdef UNICODE +// ... +// #else +alias TEXTMETRICA TEXTMETRIC; +alias PTEXTMETRICA PTEXTMETRIC; +alias NPTEXTMETRICA NPTEXTMETRIC; +alias LPTEXTMETRICA LPTEXTMETRIC; +// #endif // UNICODE +// #endif // !_TEXTMETRIC_DEFINED + +enum : uint { NTM_REGULAR = 0x00000040 } +enum : uint { NTM_BOLD = 0x00000020 } +enum : uint { NTM_ITALIC = 0x00000001 } + +enum : uint { NTM_NONNEGATIVE_AC = 0x00010000 } +enum : uint { NTM_PS_OPENTYPE = 0x00020000 } +enum : uint { NTM_TT_OPENTYPE = 0x00040000 } +enum : uint { NTM_MULTIPLEMASTER = 0x00080000 } +enum : uint { NTM_TYPE1 = 0x00100000 } +enum : uint { NTM_DSIG = 0x00200000 } + +align(4): +struct tagNEWTEXTMETRICA { + 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 tagNEWTEXTMETRICA NEWTEXTMETRICA; +alias tagNEWTEXTMETRICA* PNEWTEXTMETRICA; +alias tagNEWTEXTMETRICA* NPNEWTEXTMETRICA; +alias tagNEWTEXTMETRICA* LPNEWTEXTMETRICA; + +struct tagNEWTEXTMETRICW { + 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 tagNEWTEXTMETRICW NEWTEXTMETRICW; +alias tagNEWTEXTMETRICW* PNEWTEXTMETRICW; +alias tagNEWTEXTMETRICW* NPNEWTEXTMETRICW; +alias tagNEWTEXTMETRICW* LPNEWTEXTMETRICW; + +// #ifdef UNICODE +// ... +// #else +alias NEWTEXTMETRICA NEWTEXTMETRIC; +alias PNEWTEXTMETRICA PNEWTEXTMETRIC; +alias NPNEWTEXTMETRICA NPNEWTEXTMETRIC; +alias LPNEWTEXTMETRICA LPNEWTEXTMETRIC; +// #endif // UNICODE +align: + +// #if(WINVER >= 0x0400) +struct tagNEWTEXTMETRICEXA { + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; +} +alias tagNEWTEXTMETRICEXA NEWTEXTMETRICEXA; + +struct tagNEWTEXTMETRICEXW { + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; +} +alias tagNEWTEXTMETRICEXW NEWTEXTMETRICEXW; + +// #ifdef UNICODE +// ... +// #else +alias NEWTEXTMETRICEXA NEWTEXTMETRICEX; +// #endif // UNICODE +// #endif /* WINVER >= 0x0400 */ + +// #endif /* NOTEXTMETRIC */ + +struct tagPELARRAY { + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; +} +alias tagPELARRAY PELARRAY; +alias tagPELARRAY* PPELARRAY; +alias tagPELARRAY* NPPELARRAY; +alias tagPELARRAY* LPPELARRAY; + +struct tagLOGBRUSH { + UINT lbStyle; + COLORREF lbColor; + ULONG_PTR lbHatch; +} +alias tagLOGBRUSH LOGBRUSH; +alias tagLOGBRUSH* PLOGBRUSH; +alias tagLOGBRUSH* NPLOGBRUSH; +alias tagLOGBRUSH* LPLOGBRUSH; + +struct tagLOGBRUSH32 { + UINT lbStyle; + COLORREF lbColor; + ULONG lbHatch; +} +alias tagLOGBRUSH32 LOGBRUSH32; +alias tagLOGBRUSH32* PLOGBRUSH32; +alias tagLOGBRUSH32* NPLOGBRUSH32; +alias tagLOGBRUSH32* LPLOGBRUSH32; + +alias LOGBRUSH PATTERN; +alias PATTERN* PPATTERN; +alias PATTERN* NPPATTERN; +alias PATTERN* LPPATTERN; + +struct tagLOGPEN { + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; +} +alias tagLOGPEN LOGPEN; +alias tagLOGPEN* PLOGPEN; +alias tagLOGPEN* NPLOGPEN; +alias tagLOGPEN* LPLOGPEN; + +struct tagEXTLOGPEN { + DWORD elpPenStyle; + DWORD elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + ULONG_PTR elpHatch; + DWORD elpNumEntries; + DWORD elpStyleEntry[1]; +} +alias tagEXTLOGPEN EXTLOGPEN; +alias tagEXTLOGPEN* PEXTLOGPEN; +alias tagEXTLOGPEN* NPEXTLOGPEN; +alias tagEXTLOGPEN* LPEXTLOGPEN; + +// #ifndef _PALETTEENTRY_DEFINED +// #define _PALETTEENTRY_DEFINED +struct tagPALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} +alias tagPALETTEENTRY PALETTEENTRY; +alias tagPALETTEENTRY* PPALETTEENTRY; +alias tagPALETTEENTRY* LPPALETTEENTRY; + +// #endif // !_PALETTEENTRY_DEFINED + +// #ifndef _LOGPALETTE_DEFINED +// #define _LOGPALETTE_DEFINED + +struct tagLOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[1]; +} +alias tagLOGPALETTE LOGPALETTE; +alias tagLOGPALETTE* PLOGPALETTE; +alias tagLOGPALETTE* NPLOGPALETTE; +alias tagLOGPALETTE* LPLOGPALETTE; + +// #endif // !_LOGPALETTE_DEFINED + +enum : uint { LF_FACESIZE = 32 } + +struct tagLOGFONTA { + 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 lfFaceName[LF_FACESIZE]; +} +alias tagLOGFONTA LOGFONTA; +alias tagLOGFONTA* PLOGFONTA; +alias tagLOGFONTA* NPLOGFONTA; +alias tagLOGFONTA* LPLOGFONTA; + +struct tagLOGFONTW { + 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 lfFaceName[LF_FACESIZE]; +} +alias tagLOGFONTW LOGFONTW; +alias tagLOGFONTW* PLOGFONTW; +alias tagLOGFONTW* NPLOGFONTW; +alias tagLOGFONTW* LPLOGFONTW; + +// #ifdef UNICODE +// ... +// #else +alias LOGFONTA LOGFONT; +alias PLOGFONTA PLOGFONT; +alias NPLOGFONTA NPLOGFONT; +alias LPLOGFONTA LPLOGFONT; +// #endif // UNICODE + +enum : uint { LF_FULLFACESIZE = 64 } + +struct tagENUMLOGFONTA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; +} +alias tagENUMLOGFONTA ENUMLOGFONTA; +alias tagENUMLOGFONTA* LPENUMLOGFONTA; + +struct tagENUMLOGFONTW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; +} +alias tagENUMLOGFONTW ENUMLOGFONTW; +alias tagENUMLOGFONTW* LPENUMLOGFONTW; + +// #ifdef UNICODE +// ... +// #else +alias ENUMLOGFONTA ENUMLOGFONT; +alias LPENUMLOGFONTA LPENUMLOGFONT; +// #endif // UNICODE + +// #if(WINVER >= 0x0400) +struct tagENUMLOGFONTEXA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + BYTE elfScript[LF_FACESIZE]; +} +alias tagENUMLOGFONTEXA ENUMLOGFONTEXA; +alias tagENUMLOGFONTEXA* LPENUMLOGFONTEXA; + +struct tagENUMLOGFONTEXW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; + WCHAR elfScript[LF_FACESIZE]; +} +alias tagENUMLOGFONTEXW ENUMLOGFONTEXW; +alias tagENUMLOGFONTEXW* LPENUMLOGFONTEXW; + +// #ifdef UNICODE +// ... +// #else +alias ENUMLOGFONTEXA ENUMLOGFONTEX; +alias LPENUMLOGFONTEXA LPENUMLOGFONTEX; +// #endif // UNICODE +// #endif /* WINVER >= 0x0400 */ + +enum : uint { OUT_DEFAULT_PRECIS = 0 } +enum : uint { OUT_STRING_PRECIS = 1 } +enum : uint { OUT_CHARACTER_PRECIS = 2 } +enum : uint { OUT_STROKE_PRECIS = 3 } +enum : uint { OUT_TT_PRECIS = 4 } +enum : uint { OUT_DEVICE_PRECIS = 5 } +enum : uint { OUT_RASTER_PRECIS = 6 } +enum : uint { OUT_TT_ONLY_PRECIS = 7 } +enum : uint { OUT_OUTLINE_PRECIS = 8 } +enum : uint { OUT_SCREEN_OUTLINE_PRECIS = 9 } +enum : uint { OUT_PS_ONLY_PRECIS = 10 } + +enum : uint { CLIP_DEFAULT_PRECIS = 0 } +enum : uint { CLIP_CHARACTER_PRECIS = 1 } +enum : uint { CLIP_STROKE_PRECIS = 2 } +enum : uint { CLIP_MASK = 0xf } +enum : uint { CLIP_LH_ANGLES = 1<<4 } +enum : uint { CLIP_TT_ALWAYS = 2<<4 } +enum : uint { CLIP_EMBEDDED = 8<<4 } + +enum : uint { DEFAULT_QUALITY = 0 } +enum : uint { DRAFT_QUALITY = 1 } +enum : uint { PROOF_QUALITY = 2 } +// #if(WINVER >= 0x0400) +enum : uint { NONANTIALIASED_QUALITY = 3 } +enum : uint { ANTIALIASED_QUALITY = 4 } +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { CLEARTYPE_QUALITY = 5 } +// #endif + +enum : uint { DEFAULT_PITCH = 0 } +enum : uint { FIXED_PITCH = 1 } +enum : uint { VARIABLE_PITCH = 2 } +// #if(WINVER >= 0x0400) +enum : uint { MONO_FONT = 8 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { ANSI_CHARSET = 0 } +enum : uint { DEFAULT_CHARSET = 1 } +enum : uint { SYMBOL_CHARSET = 2 } +enum : uint { SHIFTJIS_CHARSET = 128 } +enum : uint { HANGEUL_CHARSET = 129 } +enum : uint { HANGUL_CHARSET = 129 } +enum : uint { GB2312_CHARSET = 134 } +enum : uint { CHINESEBIG5_CHARSET = 136 } +enum : uint { OEM_CHARSET = 255 } +// #if(WINVER >= 0x0400) +enum : uint { JOHAB_CHARSET = 130 } +enum : uint { HEBREW_CHARSET = 177 } +enum : uint { ARABIC_CHARSET = 178 } +enum : uint { GREEK_CHARSET = 161 } +enum : uint { TURKISH_CHARSET = 162 } +enum : uint { VIETNAMESE_CHARSET = 163 } +enum : uint { THAI_CHARSET = 222 } +enum : uint { EASTEUROPE_CHARSET = 238 } +enum : uint { RUSSIAN_CHARSET = 204 } + +enum : uint { MAC_CHARSET = 77 } +enum : uint { BALTIC_CHARSET = 186 } + +enum : uint { FS_LATIN1 = 0x00000001 } +enum : uint { FS_LATIN2 = 0x00000002 } +enum : uint { FS_CYRILLIC = 0x00000004 } +enum : uint { FS_GREEK = 0x00000008 } +enum : uint { FS_TURKISH = 0x00000010 } +enum : uint { FS_HEBREW = 0x00000020 } +enum : uint { FS_ARABIC = 0x00000040 } +enum : uint { FS_BALTIC = 0x00000080 } +enum : uint { FS_VIETNAMESE = 0x00000100 } +enum : uint { FS_THAI = 0x00010000 } +enum : uint { FS_JISJAPAN = 0x00020000 } +enum : uint { FS_CHINESESIMP = 0x00040000 } +enum : uint { FS_WANSUNG = 0x00080000 } +enum : uint { FS_CHINESETRAD = 0x00100000 } +enum : uint { FS_JOHAB = 0x00200000 } +enum : uint { FS_SYMBOL = 0x80000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { FF_DONTCARE = 0<<4 } +enum : uint { FF_ROMAN = 1<<4 } + +enum : uint { FF_SWISS = 2<<4 } + +enum : uint { FF_MODERN = 3<<4 } + +enum : uint { FF_SCRIPT = 4<<4 } +enum : uint { FF_DECORATIVE = 5<<4 } + +enum : uint { FW_DONTCARE = 0 } +enum : uint { FW_THIN = 100 } +enum : uint { FW_EXTRALIGHT = 200 } +enum : uint { FW_LIGHT = 300 } +enum : uint { FW_NORMAL = 400 } +enum : uint { FW_MEDIUM = 500 } +enum : uint { FW_SEMIBOLD = 600 } +enum : uint { FW_BOLD = 700 } +enum : uint { FW_EXTRABOLD = 800 } +enum : uint { FW_HEAVY = 900 } + +alias FW_EXTRALIGHT FW_ULTRALIGHT; +alias FW_NORMAL FW_REGULAR; +alias FW_SEMIBOLD FW_DEMIBOLD; +alias FW_EXTRABOLD FW_ULTRABOLD; +alias FW_HEAVY FW_BLACK; + +enum : uint { PANOSE_COUNT = 10 } +enum : uint { PAN_FAMILYTYPE_INDEX = 0 } +enum : uint { PAN_SERIFSTYLE_INDEX = 1 } +enum : uint { PAN_WEIGHT_INDEX = 2 } +enum : uint { PAN_PROPORTION_INDEX = 3 } +enum : uint { PAN_CONTRAST_INDEX = 4 } +enum : uint { PAN_STROKEVARIATION_INDEX = 5 } +enum : uint { PAN_ARMSTYLE_INDEX = 6 } +enum : uint { PAN_LETTERFORM_INDEX = 7 } +enum : uint { PAN_MIDLINE_INDEX = 8 } +enum : uint { PAN_XHEIGHT_INDEX = 9 } + +enum : uint { PAN_CULTURE_LATIN = 0 } + +struct tagPANOSE { + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; +} +alias tagPANOSE PANOSE; +alias tagPANOSE* LPPANOSE; + +enum : uint { PAN_ANY = 0 } +enum : uint { PAN_NO_FIT = 1 } + +enum : uint { PAN_FAMILY_TEXT_DISPLAY = 2 } +enum : uint { PAN_FAMILY_SCRIPT = 3 } +enum : uint { PAN_FAMILY_DECORATIVE = 4 } +enum : uint { PAN_FAMILY_PICTORIAL = 5 } + +enum : uint { PAN_SERIF_COVE = 2 } +enum : uint { PAN_SERIF_OBTUSE_COVE = 3 } +enum : uint { PAN_SERIF_SQUARE_COVE = 4 } +enum : uint { PAN_SERIF_OBTUSE_SQUARE_COVE = 5 } +enum : uint { PAN_SERIF_SQUARE = 6 } +enum : uint { PAN_SERIF_THIN = 7 } +enum : uint { PAN_SERIF_BONE = 8 } +enum : uint { PAN_SERIF_EXAGGERATED = 9 } +enum : uint { PAN_SERIF_TRIANGLE = 10 } +enum : uint { PAN_SERIF_NORMAL_SANS = 11 } +enum : uint { PAN_SERIF_OBTUSE_SANS = 12 } +enum : uint { PAN_SERIF_PERP_SANS = 13 } +enum : uint { PAN_SERIF_FLARED = 14 } +enum : uint { PAN_SERIF_ROUNDED = 15 } + +enum : uint { PAN_WEIGHT_VERY_LIGHT = 2 } +enum : uint { PAN_WEIGHT_LIGHT = 3 } +enum : uint { PAN_WEIGHT_THIN = 4 } +enum : uint { PAN_WEIGHT_BOOK = 5 } +enum : uint { PAN_WEIGHT_MEDIUM = 6 } +enum : uint { PAN_WEIGHT_DEMI = 7 } +enum : uint { PAN_WEIGHT_BOLD = 8 } +enum : uint { PAN_WEIGHT_HEAVY = 9 } +enum : uint { PAN_WEIGHT_BLACK = 10 } +enum : uint { PAN_WEIGHT_NORD = 11 } + +enum : uint { PAN_PROP_OLD_STYLE = 2 } +enum : uint { PAN_PROP_MODERN = 3 } +enum : uint { PAN_PROP_EVEN_WIDTH = 4 } +enum : uint { PAN_PROP_EXPANDED = 5 } +enum : uint { PAN_PROP_CONDENSED = 6 } +enum : uint { PAN_PROP_VERY_EXPANDED = 7 } +enum : uint { PAN_PROP_VERY_CONDENSED = 8 } +enum : uint { PAN_PROP_MONOSPACED = 9 } + +enum : uint { PAN_CONTRAST_NONE = 2 } +enum : uint { PAN_CONTRAST_VERY_LOW = 3 } +enum : uint { PAN_CONTRAST_LOW = 4 } +enum : uint { PAN_CONTRAST_MEDIUM_LOW = 5 } +enum : uint { PAN_CONTRAST_MEDIUM = 6 } +enum : uint { PAN_CONTRAST_MEDIUM_HIGH = 7 } +enum : uint { PAN_CONTRAST_HIGH = 8 } +enum : uint { PAN_CONTRAST_VERY_HIGH = 9 } + +enum : uint { PAN_STROKE_GRADUAL_DIAG = 2 } +enum : uint { PAN_STROKE_GRADUAL_TRAN = 3 } +enum : uint { PAN_STROKE_GRADUAL_VERT = 4 } +enum : uint { PAN_STROKE_GRADUAL_HORZ = 5 } +enum : uint { PAN_STROKE_RAPID_VERT = 6 } +enum : uint { PAN_STROKE_RAPID_HORZ = 7 } +enum : uint { PAN_STROKE_INSTANT_VERT = 8 } + +enum : uint { PAN_STRAIGHT_ARMS_HORZ = 2 } +enum : uint { PAN_STRAIGHT_ARMS_WEDGE = 3 } +enum : uint { PAN_STRAIGHT_ARMS_VERT = 4 } +enum : uint { PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5 } +enum : uint { PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6 } +enum : uint { PAN_BENT_ARMS_HORZ = 7 } +enum : uint { PAN_BENT_ARMS_WEDGE = 8 } +enum : uint { PAN_BENT_ARMS_VERT = 9 } +enum : uint { PAN_BENT_ARMS_SINGLE_SERIF = 10 } +enum : uint { PAN_BENT_ARMS_DOUBLE_SERIF = 11 } + +enum : uint { PAN_LETT_NORMAL_CONTACT = 2 } +enum : uint { PAN_LETT_NORMAL_WEIGHTED = 3 } +enum : uint { PAN_LETT_NORMAL_BOXED = 4 } +enum : uint { PAN_LETT_NORMAL_FLATTENED = 5 } +enum : uint { PAN_LETT_NORMAL_ROUNDED = 6 } +enum : uint { PAN_LETT_NORMAL_OFF_CENTER = 7 } +enum : uint { PAN_LETT_NORMAL_SQUARE = 8 } +enum : uint { PAN_LETT_OBLIQUE_CONTACT = 9 } +enum : uint { PAN_LETT_OBLIQUE_WEIGHTED = 10 } +enum : uint { PAN_LETT_OBLIQUE_BOXED = 11 } +enum : uint { PAN_LETT_OBLIQUE_FLATTENED = 12 } +enum : uint { PAN_LETT_OBLIQUE_ROUNDED = 13 } +enum : uint { PAN_LETT_OBLIQUE_OFF_CENTER = 14 } +enum : uint { PAN_LETT_OBLIQUE_SQUARE = 15 } + +enum : uint { PAN_MIDLINE_STANDARD_TRIMMED = 2 } +enum : uint { PAN_MIDLINE_STANDARD_POINTED = 3 } +enum : uint { PAN_MIDLINE_STANDARD_SERIFED = 4 } +enum : uint { PAN_MIDLINE_HIGH_TRIMMED = 5 } +enum : uint { PAN_MIDLINE_HIGH_POINTED = 6 } +enum : uint { PAN_MIDLINE_HIGH_SERIFED = 7 } +enum : uint { PAN_MIDLINE_CONSTANT_TRIMMED = 8 } +enum : uint { PAN_MIDLINE_CONSTANT_POINTED = 9 } +enum : uint { PAN_MIDLINE_CONSTANT_SERIFED = 10 } +enum : uint { PAN_MIDLINE_LOW_TRIMMED = 11 } +enum : uint { PAN_MIDLINE_LOW_POINTED = 12 } +enum : uint { PAN_MIDLINE_LOW_SERIFED = 13 } + +enum : uint { PAN_XHEIGHT_CONSTANT_SMALL = 2 } +enum : uint { PAN_XHEIGHT_CONSTANT_STD = 3 } +enum : uint { PAN_XHEIGHT_CONSTANT_LARGE = 4 } +enum : uint { PAN_XHEIGHT_DUCKING_SMALL = 5 } +enum : uint { PAN_XHEIGHT_DUCKING_STD = 6 } +enum : uint { PAN_XHEIGHT_DUCKING_LARGE = 7 } + +enum : uint { ELF_VENDOR_SIZE = 4 } + +struct tagEXTLOGFONTA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; + PANOSE elfPanose; +} +alias tagEXTLOGFONTA EXTLOGFONTA; +alias tagEXTLOGFONTA* PEXTLOGFONTA; +alias tagEXTLOGFONTA* NPEXTLOGFONTA; +alias tagEXTLOGFONTA* LPEXTLOGFONTA; + +struct tagEXTLOGFONTW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; + PANOSE elfPanose; +} +alias tagEXTLOGFONTW EXTLOGFONTW; +alias tagEXTLOGFONTW* PEXTLOGFONTW; +alias tagEXTLOGFONTW* NPEXTLOGFONTW; +alias tagEXTLOGFONTW* LPEXTLOGFONTW; + +// #ifdef UNICODE +// ... +// #else +alias EXTLOGFONTA EXTLOGFONT; +alias PEXTLOGFONTA PEXTLOGFONT; +alias NPEXTLOGFONTA NPEXTLOGFONT; +alias LPEXTLOGFONTA LPEXTLOGFONT; +// #endif // UNICODE + +enum : uint { ELF_VERSION = 0 } +enum : uint { ELF_CULTURE_LATIN = 0 } + +enum : uint { RASTER_FONTTYPE = 0x0001 } +enum : uint { DEVICE_FONTTYPE = 0x002 } +enum : uint { TRUETYPE_FONTTYPE = 0x004 } + +COLORREF RGB(BYTE r, BYTE g, BYTE b){ return r|(g <<8)|(b << 16); } +COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b){ return (0x02000000 | RGB(r,g,b)); } +COLORREF PALETTEINDEX(WORD i){ return (cast(COLORREF)(0x01000000 | cast(DWORD)cast(WORD)(i))); } + +enum : uint { PC_RESERVED = 0x01 } +enum : uint { PC_EXPLICIT = 0x02 } +enum : uint { PC_NOCOLLAPSE = 0x04 } + +BYTE GetRValue(COLORREF rgb){ return cast(BYTE)rgb; } +BYTE GetGValue(COLORREF rgb){ return cast(BYTE)(rgb >>> 8); } +BYTE GetBValue(COLORREF rgb){ return cast(BYTE)(rgb >>> 16); } + +enum : uint { TRANSPARENT = 1 } +enum : uint { OPAQUE = 2 } +enum : uint { BKMODE_LAST = 2 } + +enum : uint { GM_COMPATIBLE = 1 } +enum : uint { GM_ADVANCED = 2 } +enum : uint { GM_LAST = 2 } + +enum : uint { PT_CLOSEFIGURE = 0x01 } +enum : uint { PT_LINETO = 0x02 } +enum : uint { PT_BEZIERTO = 0x04 } +enum : uint { PT_MOVETO = 0x06 } + +enum : uint { MM_TEXT = 1 } +enum : uint { MM_LOMETRIC = 2 } +enum : uint { MM_HIMETRIC = 3 } +enum : uint { MM_LOENGLISH = 4 } +enum : uint { MM_HIENGLISH = 5 } +enum : uint { MM_TWIPS = 6 } +enum : uint { MM_ISOTROPIC = 7 } +enum : uint { MM_ANISOTROPIC = 8 } + +alias MM_TEXT MM_MIN; +alias MM_ANISOTROPIC MM_MAX; +alias MM_TWIPS MM_MAX_FIXEDSCALE; + +enum : uint { ABSOLUTE = 1 } +enum : uint { RELATIVE = 2 } + +enum : uint { WHITE_BRUSH = 0 } +enum : uint { LTGRAY_BRUSH = 1 } +enum : uint { GRAY_BRUSH = 2 } +enum : uint { DKGRAY_BRUSH = 3 } +enum : uint { BLACK_BRUSH = 4 } +enum : uint { NULL_BRUSH = 5 } +alias NULL_BRUSH HOLLOW_BRUSH; +enum : uint { WHITE_PEN = 6 } +enum : uint { BLACK_PEN = 7 } +enum : uint { NULL_PEN = 8 } +enum : uint { OEM_FIXED_FONT = 10 } +enum : uint { ANSI_FIXED_FONT = 11 } +enum : uint { ANSI_VAR_FONT = 12 } +enum : uint { SYSTEM_FONT = 13 } +enum : uint { DEVICE_DEFAULT_FONT = 14 } +enum : uint { DEFAULT_PALETTE = 15 } +enum : uint { SYSTEM_FIXED_FONT = 16 } + +// #if(WINVER >= 0x0400) +enum : uint { DEFAULT_GUI_FONT = 17 } +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { DC_BRUSH = 18 } +enum : uint { DC_PEN = 19 } +// #endif + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { STOCK_LAST = 19 } +// #elif (WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +enum : uint { CLR_INVALID = 0xFFFFFFFF } + +enum : uint { BS_SOLID = 0 } +enum : uint { BS_NULL = 1 } +alias BS_NULL BS_HOLLOW; +enum : uint { BS_HATCHED = 2 } +enum : uint { BS_PATTERN = 3 } +enum : uint { BS_INDEXED = 4 } +enum : uint { BS_DIBPATTERN = 5 } +enum : uint { BS_DIBPATTERNPT = 6 } +enum : uint { BS_PATTERN8X8 = 7 } +enum : uint { BS_DIBPATTERN8X8 = 8 } +enum : uint { BS_MONOPATTERN = 9 } + +enum : uint { HS_HORIZONTAL = 0 } +enum : uint { HS_VERTICAL = 1 } +enum : uint { HS_FDIAGONAL = 2 } +enum : uint { HS_BDIAGONAL = 3 } +enum : uint { HS_CROSS = 4 } +enum : uint { HS_DIAGCROSS = 5 } + +enum : uint { PS_SOLID = 0 } +enum : uint { PS_DASH = 1 } +enum : uint { PS_DOT = 2 } +enum : uint { PS_DASHDOT = 3 } +enum : uint { PS_DASHDOTDOT = 4 } +enum : uint { PS_NULL = 5 } +enum : uint { PS_INSIDEFRAME = 6 } +enum : uint { PS_USERSTYLE = 7 } +enum : uint { PS_ALTERNATE = 8 } +enum : uint { PS_STYLE_MASK = 0x0000000F } + +enum : uint { PS_ENDCAP_ROUND = 0x00000000 } +enum : uint { PS_ENDCAP_SQUARE = 0x00000100 } +enum : uint { PS_ENDCAP_FLAT = 0x00000200 } +enum : uint { PS_ENDCAP_MASK = 0x00000F00 } + +enum : uint { PS_JOIN_ROUND = 0x00000000 } +enum : uint { PS_JOIN_BEVEL = 0x00001000 } +enum : uint { PS_JOIN_MITER = 0x00002000 } +enum : uint { PS_JOIN_MASK = 0x0000F000 } + +enum : uint { PS_COSMETIC = 0x00000000 } +enum : uint { PS_GEOMETRIC = 0x00010000 } +enum : uint { PS_TYPE_MASK = 0x000F0000 } + +enum : uint { AD_COUNTERCLOCKWISE = 1 } +enum : uint { AD_CLOCKWISE = 2 } + +enum : uint { DRIVERVERSION = 0 } +enum : uint { TECHNOLOGY = 2 } +enum : uint { HORZSIZE = 4 } +enum : uint { VERTSIZE = 6 } +enum : uint { HORZRES = 8 } +enum : uint { VERTRES = 10 } +enum : uint { BITSPIXEL = 12 } +enum : uint { PLANES = 14 } +enum : uint { NUMBRUSHES = 16 } +enum : uint { NUMPENS = 18 } +enum : uint { NUMMARKERS = 20 } +enum : uint { NUMFONTS = 22 } +enum : uint { NUMCOLORS = 24 } +enum : uint { PDEVICESIZE = 26 } +enum : uint { CURVECAPS = 28 } +enum : uint { LINECAPS = 30 } +enum : uint { POLYGONALCAPS = 32 } +enum : uint { TEXTCAPS = 34 } +enum : uint { CLIPCAPS = 36 } +enum : uint { RASTERCAPS = 38 } +enum : uint { ASPECTX = 40 } +enum : uint { ASPECTY = 42 } +enum : uint { ASPECTXY = 44 } + +enum : uint { LOGPIXELSX = 88 } +enum : uint { LOGPIXELSY = 90 } + +enum : uint { SIZEPALETTE = 104 } +enum : uint { NUMRESERVED = 106 } +enum : uint { COLORRES = 108 } + +enum : uint { PHYSICALWIDTH = 110 } +enum : uint { PHYSICALHEIGHT = 111 } +enum : uint { PHYSICALOFFSETX = 112 } +enum : uint { PHYSICALOFFSETY = 113 } +enum : uint { SCALINGFACTORX = 114 } +enum : uint { SCALINGFACTORY = 115 } + +enum : uint { VREFRESH = 116 } + +enum : uint { DESKTOPVERTRES = 117 } + +enum : uint { DESKTOPHORZRES = 118 } + +enum : uint { BLTALIGNMENT = 119 } + +// #if(WINVER >= 0x0500) +enum : uint { SHADEBLENDCAPS = 120 } +enum : uint { COLORMGMTCAPS = 121 } +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NOGDICAPMASKS + +enum : uint { DT_PLOTTER = 0 } +enum : uint { DT_RASDISPLAY = 1 } +enum : uint { DT_RASPRINTER = 2 } +enum : uint { DT_RASCAMERA = 3 } +enum : uint { DT_CHARSTREAM = 4 } +enum : uint { DT_METAFILE = 5 } +enum : uint { DT_DISPFILE = 6 } + +enum : uint { CC_NONE = 0 } +enum : uint { CC_CIRCLES = 1 } +enum : uint { CC_PIE = 2 } +enum : uint { CC_CHORD = 4 } +enum : uint { CC_ELLIPSES = 8 } +enum : uint { CC_WIDE = 16 } +enum : uint { CC_STYLED = 32 } +enum : uint { CC_WIDESTYLED = 64 } +enum : uint { CC_INTERIORS = 128 } +enum : uint { CC_ROUNDRECT = 256 } + +enum : uint { LC_NONE = 0 } +enum : uint { LC_POLYLINE = 2 } +enum : uint { LC_MARKER = 4 } +enum : uint { LC_POLYMARKER = 8 } +enum : uint { LC_WIDE = 16 } +enum : uint { LC_STYLED = 32 } +enum : uint { LC_WIDESTYLED = 64 } +enum : uint { LC_INTERIORS = 128 } + +enum : uint { PC_NONE = 0 } +enum : uint { PC_POLYGON = 1 } +enum : uint { PC_RECTANGLE = 2 } +enum : uint { PC_WINDPOLYGON = 4 } +enum : uint { PC_TRAPEZOID = 4 } +enum : uint { PC_SCANLINE = 8 } +enum : uint { PC_WIDE = 16 } +enum : uint { PC_STYLED = 32 } +enum : uint { PC_WIDESTYLED = 64 } +enum : uint { PC_INTERIORS = 128 } +enum : uint { PC_POLYPOLYGON = 256 } +enum : uint { PC_PATHS = 512 } + +enum : uint { CP_NONE = 0 } +enum : uint { CP_RECTANGLE = 1 } +enum : uint { CP_REGION = 2 } + +enum : uint { TC_OP_CHARACTER = 0x00000001 } +enum : uint { TC_OP_STROKE = 0x00000002 } +enum : uint { TC_CP_STROKE = 0x00000004 } +enum : uint { TC_CR_90 = 0x00000008 } +enum : uint { TC_CR_ANY = 0x00000010 } +enum : uint { TC_SF_X_YINDEP = 0x00000020 } +enum : uint { TC_SA_DOUBLE = 0x00000040 } +enum : uint { TC_SA_INTEGER = 0x00000080 } +enum : uint { TC_SA_CONTIN = 0x00000100 } +enum : uint { TC_EA_DOUBLE = 0x00000200 } +enum : uint { TC_IA_ABLE = 0x00000400 } +enum : uint { TC_UA_ABLE = 0x00000800 } +enum : uint { TC_SO_ABLE = 0x00001000 } +enum : uint { TC_RA_ABLE = 0x00002000 } +enum : uint { TC_VA_ABLE = 0x00004000 } +enum : uint { TC_RESERVED = 0x00008000 } +enum : uint { TC_SCROLLBLT = 0x00010000 } + +// #endif /* NOGDICAPMASKS */ + +// #define RC_NONE +enum : uint { RC_BITBLT = 1 } +enum : uint { RC_BANDING = 2 } +enum : uint { RC_SCALING = 4 } +enum : uint { RC_BITMAP64 = 8 } +enum : uint { RC_GDI20_OUTPUT = 0x0010 } +enum : uint { RC_GDI20_STATE = 0x0020 } +enum : uint { RC_SAVEBITMAP = 0x0040 } +enum : uint { RC_DI_BITMAP = 0x0080 } +enum : uint { RC_PALETTE = 0x0100 } +enum : uint { RC_DIBTODEV = 0x0200 } +enum : uint { RC_BIGFONT = 0x0400 } +enum : uint { RC_STRETCHBLT = 0x0800 } +enum : uint { RC_FLOODFILL = 0x1000 } +enum : uint { RC_STRETCHDIB = 0x2000 } +enum : uint { RC_OP_DX_OUTPUT = 0x4000 } +enum : uint { RC_DEVBITS = 0x8000 } + +// #if(WINVER >= 0x0500) + +enum : uint { SB_NONE = 0x00000000 } +enum : uint { SB_CONST_ALPHA = 0x00000001 } +enum : uint { SB_PIXEL_ALPHA = 0x00000002 } +enum : uint { SB_PREMULT_ALPHA = 0x00000004 } + +enum : uint { SB_GRAD_RECT = 0x00000010 } +enum : uint { SB_GRAD_TRI = 0x00000020 } + +enum : uint { CM_NONE = 0x00000000 } +enum : uint { CM_DEVICE_ICM = 0x00000001 } +enum : uint { CM_GAMMA_RAMP = 0x00000002 } +enum : uint { CM_CMYK_COLOR = 0x00000004 } + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { DIB_RGB_COLORS = 0 } +enum : uint { DIB_PAL_COLORS = 1 } + +enum : uint { SYSPAL_ERROR = 0 } +enum : uint { SYSPAL_STATIC = 1 } +enum : uint { SYSPAL_NOSTATIC = 2 } +enum : uint { SYSPAL_NOSTATIC256 = 3 } + +enum : uint { CBM_INIT = 0x04 } + +enum : uint { FLOODFILLBORDER = 0 } +enum : uint { FLOODFILLSURFACE = 1 } + +enum : uint { CCHDEVICENAME = 32 } + +enum : uint { CCHFORMNAME = 32 } + +struct _devicemodeA { + BYTE dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; +union { +struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; +} + + POINTL dmPosition; +} + + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; +union { + DWORD dmDisplayFlags; + DWORD dmNup; +} + + DWORD dmDisplayFrequency; +// #if(WINVER >= 0x0400) + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; +// #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) + DWORD dmPanningWidth; + DWORD dmPanningHeight; +// #endif +// #endif /* WINVER >= 0x0400 */ +} +alias _devicemodeA DEVMODEA; +alias _devicemodeA* PDEVMODEA; +alias _devicemodeA* NPDEVMODEA; +alias _devicemodeA* LPDEVMODEA; + +struct _devicemodeW { + WCHAR dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; +union { +struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; +} + + POINTL dmPosition; +} + + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; +union { + DWORD dmDisplayFlags; + DWORD dmNup; +} + + DWORD dmDisplayFrequency; +// #if(WINVER >= 0x0400) + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; +// #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) + DWORD dmPanningWidth; + DWORD dmPanningHeight; +// #endif +// #endif /* WINVER >= 0x0400 */ +} +alias _devicemodeW DEVMODEW; +alias _devicemodeW* PDEVMODEW; +alias _devicemodeW* NPDEVMODEW; +alias _devicemodeW* LPDEVMODEW; + +// #ifdef UNICODE +// ... +// #else +alias DEVMODEA DEVMODE; +alias PDEVMODEA PDEVMODE; +alias NPDEVMODEA NPDEVMODE; +alias LPDEVMODEA LPDEVMODE; +// #endif // UNICODE + +// #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) +enum : uint { DM_SPECVERSION = 0x0401 } +// #elif (WINVER >= 0x0400) +// #... +// #else +// #... +// #endif /* WINVER */ + +enum : uint { DM_ORIENTATION = 0x00000001 } +enum : uint { DM_PAPERSIZE = 0x00000002 } +enum : uint { DM_PAPERLENGTH = 0x00000004 } +enum : uint { DM_PAPERWIDTH = 0x00000008 } +enum : uint { DM_SCALE = 0x00000010 } +// #if(WINVER >= 0x0500) +enum : uint { DM_POSITION = 0x00000020 } +enum : uint { DM_NUP = 0x00000040 } +// #endif /* WINVER >= 0x0500 */ +enum : uint { DM_COPIES = 0x00000100 } +enum : uint { DM_DEFAULTSOURCE = 0x00000200 } +enum : uint { DM_PRINTQUALITY = 0x00000400 } +enum : uint { DM_COLOR = 0x00000800 } +enum : uint { DM_DUPLEX = 0x00001000 } +enum : uint { DM_YRESOLUTION = 0x00002000 } +enum : uint { DM_TTOPTION = 0x00004000 } +enum : uint { DM_COLLATE = 0x00008000 } +enum : uint { DM_FORMNAME = 0x00010000 } +enum : uint { DM_LOGPIXELS = 0x00020000 } +enum : uint { DM_BITSPERPEL = 0x00040000 } +enum : uint { DM_PELSWIDTH = 0x00080000 } +enum : uint { DM_PELSHEIGHT = 0x00100000 } +enum : uint { DM_DISPLAYFLAGS = 0x00200000 } +enum : uint { DM_DISPLAYFREQUENCY = 0x00400000 } +// #if(WINVER >= 0x0400) +enum : uint { DM_ICMMETHOD = 0x00800000 } +enum : uint { DM_ICMINTENT = 0x01000000 } +enum : uint { DM_MEDIATYPE = 0x02000000 } +enum : uint { DM_DITHERTYPE = 0x04000000 } +enum : uint { DM_PANNINGWIDTH = 0x08000000 } +enum : uint { DM_PANNINGHEIGHT = 0x10000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { DMORIENT_PORTRAIT = 1 } +enum : uint { DMORIENT_LANDSCAPE = 2 } + +enum { DMPAPER_FIRST = 1 } +enum : uint { DMPAPER_LETTER = 1 } +enum : uint { DMPAPER_LETTERSMALL = 2 } +enum : uint { DMPAPER_TABLOID = 3 } +enum : uint { DMPAPER_LEDGER = 4 } +enum : uint { DMPAPER_LEGAL = 5 } +enum : uint { DMPAPER_STATEMENT = 6 } +enum : uint { DMPAPER_EXECUTIVE = 7 } +enum : uint { DMPAPER_A3 = 8 } +enum : uint { DMPAPER_A4 = 9 } +enum : uint { DMPAPER_A4SMALL = 10 } +enum : uint { DMPAPER_A5 = 11 } +enum : uint { DMPAPER_B4 = 12 } +enum : uint { DMPAPER_B5 = 13 } +enum : uint { DMPAPER_FOLIO = 14 } +enum : uint { DMPAPER_QUARTO = 15 } +enum : uint { DMPAPER_10X14 = 16 } +enum : uint { DMPAPER_11X17 = 17 } +enum : uint { DMPAPER_NOTE = 18 } +enum : uint { DMPAPER_ENV_9 = 19 } +enum : uint { DMPAPER_ENV_10 = 20 } +enum : uint { DMPAPER_ENV_11 = 21 } +enum : uint { DMPAPER_ENV_12 = 22 } +enum : uint { DMPAPER_ENV_14 = 23 } +enum : uint { DMPAPER_CSHEET = 24 } +enum : uint { DMPAPER_DSHEET = 25 } +enum : uint { DMPAPER_ESHEET = 26 } +enum : uint { DMPAPER_ENV_DL = 27 } +enum : uint { DMPAPER_ENV_C5 = 28 } +enum : uint { DMPAPER_ENV_C3 = 29 } +enum : uint { DMPAPER_ENV_C4 = 30 } +enum : uint { DMPAPER_ENV_C6 = 31 } +enum : uint { DMPAPER_ENV_C65 = 32 } +enum : uint { DMPAPER_ENV_B4 = 33 } +enum : uint { DMPAPER_ENV_B5 = 34 } +enum : uint { DMPAPER_ENV_B6 = 35 } +enum : uint { DMPAPER_ENV_ITALY = 36 } +enum : uint { DMPAPER_ENV_MONARCH = 37 } +enum : uint { DMPAPER_ENV_PERSONAL = 38 } +enum : uint { DMPAPER_FANFOLD_US = 39 } +enum : uint { DMPAPER_FANFOLD_STD_GERMAN = 40 } +enum : uint { DMPAPER_FANFOLD_LGL_GERMAN = 41 } +// #if(WINVER >= 0x0400) +enum : uint { DMPAPER_ISO_B4 = 42 } +enum : uint { DMPAPER_JAPANESE_POSTCARD = 43 } +enum : uint { DMPAPER_9X11 = 44 } +enum : uint { DMPAPER_10X11 = 45 } +enum : uint { DMPAPER_15X11 = 46 } +enum : uint { DMPAPER_ENV_INVITE = 47 } +enum : uint { DMPAPER_RESERVED_48 = 48 } +enum : uint { DMPAPER_RESERVED_49 = 49 } +enum : uint { DMPAPER_LETTER_EXTRA = 50 } +enum : uint { DMPAPER_LEGAL_EXTRA = 51 } +enum : uint { DMPAPER_TABLOID_EXTRA = 52 } +enum : uint { DMPAPER_A4_EXTRA = 53 } +enum : uint { DMPAPER_LETTER_TRANSVERSE = 54 } +enum : uint { DMPAPER_A4_TRANSVERSE = 55 } +enum : uint { DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 } +enum : uint { DMPAPER_A_PLUS = 57 } +enum : uint { DMPAPER_B_PLUS = 58 } +enum : uint { DMPAPER_LETTER_PLUS = 59 } +enum : uint { DMPAPER_A4_PLUS = 60 } +enum : uint { DMPAPER_A5_TRANSVERSE = 61 } +enum : uint { DMPAPER_B5_TRANSVERSE = 62 } +enum : uint { DMPAPER_A3_EXTRA = 63 } +enum : uint { DMPAPER_A5_EXTRA = 64 } +enum : uint { DMPAPER_B5_EXTRA = 65 } +enum : uint { DMPAPER_A2 = 66 } +enum : uint { DMPAPER_A3_TRANSVERSE = 67 } +enum : uint { DMPAPER_A3_EXTRA_TRANSVERSE = 68 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { DMPAPER_DBL_JAPANESE_POSTCARD = 69 } +enum : uint { DMPAPER_A6 = 70 } +enum : uint { DMPAPER_JENV_KAKU2 = 71 } +enum : uint { DMPAPER_JENV_KAKU3 = 72 } +enum : uint { DMPAPER_JENV_CHOU3 = 73 } +enum : uint { DMPAPER_JENV_CHOU4 = 74 } +enum : uint { DMPAPER_LETTER_ROTATED = 75 } +enum : uint { DMPAPER_A3_ROTATED = 76 } +enum : uint { DMPAPER_A4_ROTATED = 77 } +enum : uint { DMPAPER_A5_ROTATED = 78 } +enum : uint { DMPAPER_B4_JIS_ROTATED = 79 } +enum : uint { DMPAPER_B5_JIS_ROTATED = 80 } +enum : uint { DMPAPER_JAPANESE_POSTCARD_ROTATED = 81 } +enum : uint { DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82 } +enum : uint { DMPAPER_A6_ROTATED = 83 } +enum : uint { DMPAPER_JENV_KAKU2_ROTATED = 84 } +enum : uint { DMPAPER_JENV_KAKU3_ROTATED = 85 } +enum : uint { DMPAPER_JENV_CHOU3_ROTATED = 86 } +enum : uint { DMPAPER_JENV_CHOU4_ROTATED = 87 } +enum : uint { DMPAPER_B6_JIS = 88 } +enum : uint { DMPAPER_B6_JIS_ROTATED = 89 } +enum : uint { DMPAPER_12X11 = 90 } +enum : uint { DMPAPER_JENV_YOU4 = 91 } +enum : uint { DMPAPER_JENV_YOU4_ROTATED = 92 } +enum : uint { DMPAPER_P16K = 93 } +enum : uint { DMPAPER_P32K = 94 } +enum : uint { DMPAPER_P32KBIG = 95 } +enum : uint { DMPAPER_PENV_1 = 96 } +enum : uint { DMPAPER_PENV_2 = 97 } +enum : uint { DMPAPER_PENV_3 = 98 } +enum : uint { DMPAPER_PENV_4 = 99 } +enum : uint { DMPAPER_PENV_5 = 100 } +enum : uint { DMPAPER_PENV_6 = 101 } +enum : uint { DMPAPER_PENV_7 = 102 } +enum : uint { DMPAPER_PENV_8 = 103 } +enum : uint { DMPAPER_PENV_9 = 104 } +enum : uint { DMPAPER_PENV_10 = 105 } +enum : uint { DMPAPER_P16K_ROTATED = 106 } +enum : uint { DMPAPER_P32K_ROTATED = 107 } +enum : uint { DMPAPER_P32KBIG_ROTATED = 108 } +enum : uint { DMPAPER_PENV_1_ROTATED = 109 } +enum : uint { DMPAPER_PENV_2_ROTATED = 110 } +enum : uint { DMPAPER_PENV_3_ROTATED = 111 } +enum : uint { DMPAPER_PENV_4_ROTATED = 112 } +enum : uint { DMPAPER_PENV_5_ROTATED = 113 } +enum : uint { DMPAPER_PENV_6_ROTATED = 114 } +enum : uint { DMPAPER_PENV_7_ROTATED = 115 } +enum : uint { DMPAPER_PENV_8_ROTATED = 116 } +enum : uint { DMPAPER_PENV_9_ROTATED = 117 } +enum : uint { DMPAPER_PENV_10_ROTATED = 118 } +// #endif /* WINVER >= 0x0500 */ + +// #if (WINVER >= 0x0500) +alias DMPAPER_PENV_10_ROTATED DMPAPER_LAST; +// #elif (WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +enum : uint { DMPAPER_USER = 256 } + +enum { DMBIN_FIRST = 1 } +enum : uint { DMBIN_UPPER = 1 } +enum : uint { DMBIN_ONLYONE = 1 } +enum : uint { DMBIN_LOWER = 2 } +enum : uint { DMBIN_MIDDLE = 3 } +enum : uint { DMBIN_MANUAL = 4 } +enum : uint { DMBIN_ENVELOPE = 5 } +enum : uint { DMBIN_ENVMANUAL = 6 } +enum : uint { DMBIN_AUTO = 7 } +enum : uint { DMBIN_TRACTOR = 8 } +enum : uint { DMBIN_SMALLFMT = 9 } +enum : uint { DMBIN_LARGEFMT = 10 } +enum : uint { DMBIN_LARGECAPACITY = 11 } +enum : uint { DMBIN_CASSETTE = 14 } +enum : uint { DMBIN_FORMSOURCE = 15 } +alias DMBIN_FORMSOURCE DMBIN_LAST; + +enum : uint { DMBIN_USER = 256 } + +enum { DMRES_DRAFT = -1 } +enum { DMRES_LOW = -2 } +enum { DMRES_MEDIUM = -3 } +enum { DMRES_HIGH = -4 } + +enum : uint { DMCOLOR_MONOCHROME = 1 } +enum : uint { DMCOLOR_COLOR = 2 } + +enum : uint { DMDUP_SIMPLEX = 1 } +enum : uint { DMDUP_VERTICAL = 2 } +enum : uint { DMDUP_HORIZONTAL = 3 } + +enum : uint { DMTT_BITMAP = 1 } +enum : uint { DMTT_DOWNLOAD = 2 } +enum : uint { DMTT_SUBDEV = 3 } +// #if(WINVER >= 0x0400) +enum : uint { DMTT_DOWNLOAD_OUTLINE = 4 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { DMCOLLATE_FALSE = 0 } +enum : uint { DMCOLLATE_TRUE = 1 } + +enum : uint { DMDISPLAYFLAGS_TEXTMODE = 0x00000004 } + +enum : uint { DMNUP_SYSTEM = 1 } +enum : uint { DMNUP_ONEUP = 2 } + +// #if(WINVER >= 0x0400) + +enum : uint { DMICMMETHOD_NONE = 1 } +enum : uint { DMICMMETHOD_SYSTEM = 2 } +enum : uint { DMICMMETHOD_DRIVER = 3 } +enum : uint { DMICMMETHOD_DEVICE = 4 } + +enum : uint { DMICMMETHOD_USER = 256 } + +enum : uint { DMICM_SATURATE = 1 } +enum : uint { DMICM_CONTRAST = 2 } +enum : uint { DMICM_COLORIMETRIC = 3 } +enum : uint { DMICM_ABS_COLORIMETRIC = 4 } + +enum : uint { DMICM_USER = 256 } + +enum : uint { DMMEDIA_STANDARD = 1 } +enum : uint { DMMEDIA_TRANSPARENCY = 2 } +enum : uint { DMMEDIA_GLOSSY = 3 } + +enum : uint { DMMEDIA_USER = 256 } + +enum : uint { DMDITHER_NONE = 1 } +enum : uint { DMDITHER_COARSE = 2 } +enum : uint { DMDITHER_FINE = 3 } +enum : uint { DMDITHER_LINEART = 4 } +enum : uint { DMDITHER_ERRORDIFFUSION = 5 } +enum : uint { DMDITHER_RESERVED6 = 6 } +enum : uint { DMDITHER_RESERVED7 = 7 } +enum : uint { DMDITHER_RESERVED8 = 8 } +enum : uint { DMDITHER_RESERVED9 = 9 } +enum : uint { DMDITHER_GRAYSCALE = 10 } + +enum : uint { DMDITHER_USER = 256 } +// #endif /* WINVER >= 0x0400 */ + +struct _DISPLAY_DEVICEA { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD StateFlags; + CHAR DeviceID[128]; + CHAR DeviceKey[128]; +} +alias _DISPLAY_DEVICEA DISPLAY_DEVICEA; +alias _DISPLAY_DEVICEA* PDISPLAY_DEVICEA; +alias _DISPLAY_DEVICEA* LPDISPLAY_DEVICEA; + +struct _DISPLAY_DEVICEW { + DWORD cb; + WCHAR DeviceName[32]; + WCHAR DeviceString[128]; + DWORD StateFlags; + WCHAR DeviceID[128]; + WCHAR DeviceKey[128]; +} +alias _DISPLAY_DEVICEW DISPLAY_DEVICEW; +alias _DISPLAY_DEVICEW* PDISPLAY_DEVICEW; +alias _DISPLAY_DEVICEW* LPDISPLAY_DEVICEW; + +// #ifdef UNICODE +// ... +// #else +alias DISPLAY_DEVICEA DISPLAY_DEVICE; +alias PDISPLAY_DEVICEA PDISPLAY_DEVICE; +alias LPDISPLAY_DEVICEA LPDISPLAY_DEVICE; +// #endif // UNICODE + +enum : uint { DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001 } +enum : uint { DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002 } +enum : uint { DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004 } +enum : uint { DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008 } +enum : uint { DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010 } +enum : uint { DISPLAY_DEVICE_REMOVABLE = 0x00000020 } +enum : uint { DISPLAY_DEVICE_MODESPRUNED = 0x08000000 } +enum : uint { DISPLAY_DEVICE_REMOTE = 0x04000000 } +enum : uint { DISPLAY_DEVICE_DISCONNECT = 0x02000000 } + +enum : uint { DISPLAY_DEVICE_ACTIVE = 0x00000001 } +enum : uint { DISPLAY_DEVICE_ATTACHED = 0x00000002 } + +enum : uint { RDH_RECTANGLES = 1 } + +struct _RGNDATAHEADER { + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; +} +alias _RGNDATAHEADER RGNDATAHEADER; +alias _RGNDATAHEADER* PRGNDATAHEADER; + +struct _RGNDATA { + RGNDATAHEADER rdh; + char Buffer[1]; +} +alias _RGNDATA RGNDATA; +alias _RGNDATA* PRGNDATA; +alias _RGNDATA* NPRGNDATA; +alias _RGNDATA* LPRGNDATA; + +enum : uint { SYSRGN = 4 } + +struct _ABC { + int abcA; + UINT abcB; + int abcC; +} +alias _ABC ABC; +alias _ABC* PABC; +alias _ABC* NPABC; +alias _ABC* LPABC; + +struct _ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; +} +alias _ABCFLOAT ABCFLOAT; +alias _ABCFLOAT* PABCFLOAT; +alias _ABCFLOAT* NPABCFLOAT; +alias _ABCFLOAT* LPABCFLOAT; + +// #ifndef NOTEXTMETRIC + +// #ifdef _MAC +// #... +// #endif +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 OUTLINETEXTMETRICA; +alias _OUTLINETEXTMETRICA* POUTLINETEXTMETRICA; +alias _OUTLINETEXTMETRICA* NPOUTLINETEXTMETRICA; +alias _OUTLINETEXTMETRICA* 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 OUTLINETEXTMETRICW; +alias _OUTLINETEXTMETRICW* POUTLINETEXTMETRICW; +alias _OUTLINETEXTMETRICW* NPOUTLINETEXTMETRICW; +alias _OUTLINETEXTMETRICW* LPOUTLINETEXTMETRICW; + +// #ifdef UNICODE +// ... +// #else +alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC; +alias POUTLINETEXTMETRICA POUTLINETEXTMETRIC; +alias NPOUTLINETEXTMETRICA NPOUTLINETEXTMETRIC; +alias LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC; +// #endif // UNICODE + +// #ifdef _MAC +// #... +// #endif + +// #endif /* NOTEXTMETRIC */ + +struct tagPOLYTEXTA { + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} +alias tagPOLYTEXTA POLYTEXTA; +alias tagPOLYTEXTA* PPOLYTEXTA; +alias tagPOLYTEXTA* NPPOLYTEXTA; +alias tagPOLYTEXTA* LPPOLYTEXTA; + +struct tagPOLYTEXTW { + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} +alias tagPOLYTEXTW POLYTEXTW; +alias tagPOLYTEXTW* PPOLYTEXTW; +alias tagPOLYTEXTW* NPPOLYTEXTW; +alias tagPOLYTEXTW* LPPOLYTEXTW; + +// #ifdef UNICODE +// ... +// #else +alias POLYTEXTA POLYTEXT; +alias PPOLYTEXTA PPOLYTEXT; +alias NPPOLYTEXTA NPPOLYTEXT; +alias LPPOLYTEXTA LPPOLYTEXT; +// #endif // UNICODE + +struct _FIXED { +// #ifndef _MAC + WORD fract; + short value; +// #else +// ... +// #endif +} +alias _FIXED FIXED; + +struct _MAT2 { + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; +} +alias _MAT2 MAT2; +alias _MAT2* LPMAT2; + +struct _GLYPHMETRICS { + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; +} +alias _GLYPHMETRICS GLYPHMETRICS; +alias _GLYPHMETRICS* LPGLYPHMETRICS; + +enum : uint { GGO_METRICS = 0 } +enum : uint { GGO_BITMAP = 1 } +enum : uint { GGO_NATIVE = 2 } +enum : uint { GGO_BEZIER = 3 } + +// #if(WINVER >= 0x0400) +enum : uint { GGO_GRAY2_BITMAP = 4 } +enum : uint { GGO_GRAY4_BITMAP = 5 } +enum : uint { GGO_GRAY8_BITMAP = 6 } +enum : uint { GGO_GLYPH_INDEX = 0x0080 } +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { GGO_UNHINTED = 0x0100 } +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { TT_POLYGON_TYPE = 24 } + +enum : uint { TT_PRIM_LINE = 1 } +enum : uint { TT_PRIM_QSPLINE = 2 } +enum : uint { TT_PRIM_CSPLINE = 3 } + +struct tagPOINTFX { + FIXED x; + FIXED y; +} +alias tagPOINTFX POINTFX; +alias tagPOINTFX* LPPOINTFX; + +struct tagTTPOLYCURVE { + WORD wType; + WORD cpfx; + POINTFX apfx[1]; +} +alias tagTTPOLYCURVE TTPOLYCURVE; +alias tagTTPOLYCURVE* LPTTPOLYCURVE; + +struct tagTTPOLYGONHEADER { + DWORD cb; + DWORD dwType; + POINTFX pfxStart; +} +alias tagTTPOLYGONHEADER TTPOLYGONHEADER; +alias tagTTPOLYGONHEADER* LPTTPOLYGONHEADER; + +// #if(WINVER >= 0x0400) +enum : uint { GCP_DBCS = 0x0001 } +enum : uint { GCP_REORDER = 0x0002 } +enum : uint { GCP_USEKERNING = 0x0008 } +enum : uint { GCP_GLYPHSHAPE = 0x0010 } +enum : uint { GCP_LIGATE = 0x0020 } + +enum : uint { GCP_DIACRITIC = 0x0100 } +enum : uint { GCP_KASHIDA = 0x0400 } +enum : uint { GCP_ERROR = 0x8000 } +enum : uint { FLI_MASK = 0x103B } + +enum : uint { GCP_JUSTIFY = 0x00010000 } + +enum : uint { FLI_GLYPHS = 0x00040000 } +enum : uint { GCP_CLASSIN = 0x00080000 } +enum : uint { GCP_MAXEXTENT = 0x00100000 } +enum : uint { GCP_JUSTIFYIN = 0x00200000 } +enum : uint { GCP_DISPLAYZWG = 0x00400000 } +enum : uint { GCP_SYMSWAPOFF = 0x00800000 } +enum : uint { GCP_NUMERICOVERRIDE = 0x01000000 } +enum : uint { GCP_NEUTRALOVERRIDE = 0x02000000 } +enum : uint { GCP_NUMERICSLATIN = 0x04000000 } +enum : uint { GCP_NUMERICSLOCAL = 0x08000000 } + +enum : uint { GCPCLASS_LATIN = 1 } +enum : uint { GCPCLASS_HEBREW = 2 } +enum : uint { GCPCLASS_ARABIC = 2 } +enum : uint { GCPCLASS_NEUTRAL = 3 } +enum : uint { GCPCLASS_LOCALNUMBER = 4 } +enum : uint { GCPCLASS_LATINNUMBER = 5 } +enum : uint { GCPCLASS_LATINNUMERICTERMINATOR = 6 } +enum : uint { GCPCLASS_LATINNUMERICSEPARATOR = 7 } +enum : uint { GCPCLASS_NUMERICSEPARATOR = 8 } +enum : uint { GCPCLASS_PREBOUNDLTR = 0x80 } +enum : uint { GCPCLASS_PREBOUNDRTL = 0x40 } +enum : uint { GCPCLASS_POSTBOUNDLTR = 0x20 } +enum : uint { GCPCLASS_POSTBOUNDRTL = 0x10 } + +enum : uint { GCPGLYPH_LINKBEFORE = 0x8000 } +enum : uint { GCPGLYPH_LINKAFTER = 0x4000 } + +struct tagGCP_RESULTSA { + DWORD lStructSize; + LPSTR lpOutString; + UINT *lpOrder; + int *lpDx; + int *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + int nMaxFit; +} +alias tagGCP_RESULTSA GCP_RESULTSA; +alias tagGCP_RESULTSA* LPGCP_RESULTSA; + +struct tagGCP_RESULTSW { + DWORD lStructSize; + LPWSTR lpOutString; + UINT *lpOrder; + int *lpDx; + int *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + int nMaxFit; +} +alias tagGCP_RESULTSW GCP_RESULTSW; +alias tagGCP_RESULTSW* LPGCP_RESULTSW; + +// #ifdef UNICODE +// ... +// #else +alias GCP_RESULTSA GCP_RESULTS; +alias LPGCP_RESULTSA LPGCP_RESULTS; +// #endif // UNICODE +// #endif /* WINVER >= 0x0400 */ + +struct _RASTERIZER_STATUS { + short nSize; + short wFlags; + short nLanguageID; +} +alias _RASTERIZER_STATUS RASTERIZER_STATUS; +alias _RASTERIZER_STATUS* LPRASTERIZER_STATUS; + +enum : uint { TT_AVAILABLE = 0x0001 } +enum : uint { TT_ENABLED = 0x0002 } + +struct tagPIXELFORMATDESCRIPTOR { + 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 tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR; +alias tagPIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR; +alias tagPIXELFORMATDESCRIPTOR* LPPIXELFORMATDESCRIPTOR; + +enum : uint { PFD_TYPE_RGBA = 0 } +enum : uint { PFD_TYPE_COLORINDEX = 1 } + +enum : uint { PFD_MAIN_PLANE = 0 } +enum : uint { PFD_OVERLAY_PLANE = 1 } +enum { PFD_UNDERLAY_PLANE = -1 } + +enum : uint { PFD_DOUBLEBUFFER = 0x00000001 } +enum : uint { PFD_STEREO = 0x00000002 } +enum : uint { PFD_DRAW_TO_WINDOW = 0x00000004 } +enum : uint { PFD_DRAW_TO_BITMAP = 0x00000008 } +enum : uint { PFD_SUPPORT_GDI = 0x00000010 } +enum : uint { PFD_SUPPORT_OPENGL = 0x00000020 } +enum : uint { PFD_GENERIC_FORMAT = 0x00000040 } +enum : uint { PFD_NEED_PALETTE = 0x00000080 } +enum : uint { PFD_NEED_SYSTEM_PALETTE = 0x00000100 } +enum : uint { PFD_SWAP_EXCHANGE = 0x00000200 } +enum : uint { PFD_SWAP_COPY = 0x00000400 } +enum : uint { PFD_SWAP_LAYER_BUFFERS = 0x00000800 } +enum : uint { PFD_GENERIC_ACCELERATED = 0x00001000 } +enum : uint { PFD_SUPPORT_DIRECTDRAW = 0x00002000 } + +enum : uint { PFD_DEPTH_DONTCARE = 0x20000000 } +enum : uint { PFD_DOUBLEBUFFER_DONTCARE = 0x40000000 } +enum : uint { PFD_STEREO_DONTCARE = 0x80000000 } + +// #ifdef STRICT +// #if !defined(NOTEXTMETRIC) +extern(Windows) alias int function( LOGFONTA *, TEXTMETRICA *, DWORD, LPARAM) OLDFONTENUMPROCA; +extern(Windows) alias int function( LOGFONTW *, TEXTMETRICW *, DWORD, LPARAM) OLDFONTENUMPROCW; +// #ifdef UNICODE +// #... +// #else +alias OLDFONTENUMPROCA OLDFONTENUMPROC; +// #endif // !UNICODE +// #else +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE +// #endif + +alias OLDFONTENUMPROCA FONTENUMPROCA; +alias OLDFONTENUMPROCW FONTENUMPROCW; +// #ifdef UNICODE +// ... +// #else +alias FONTENUMPROCA FONTENUMPROC; +// #endif // UNICODE + +extern(Windows) alias int function(LPVOID, LPARAM) GOBJENUMPROC; +extern(Windows) alias VOID function(int, int, LPARAM) LINEDDAPROC; +// #else +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// ... +// #endif + +extern(Windows) export int AddFontResourceA(LPCSTR); +extern(Windows) export int AddFontResourceW(LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias AddFontResourceA AddFontResource; +// #endif // !UNICODE + +extern(Windows) export BOOL AnimatePalette(HPALETTE, UINT, UINT, PALETTEENTRY *); +extern(Windows) export BOOL Arc(HDC, int, int, int, int, int, int, int, int); +extern(Windows) export BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); +extern(Windows) export BOOL CancelDC(HDC); +extern(Windows) export BOOL Chord(HDC, int, int, int, int, int, int, int, int); +extern(Windows) export int ChoosePixelFormat(HDC, PIXELFORMATDESCRIPTOR *); +extern(Windows) export HMETAFILE CloseMetaFile(HDC); +extern(Windows) export int CombineRgn(HRGN, HRGN, HRGN, int); +extern(Windows) export HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); +extern(Windows) export HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias CopyMetaFileA CopyMetaFile; +// #endif // !UNICODE +extern(Windows) export HBITMAP CreateBitmap(int, int, UINT, UINT, VOID *); +extern(Windows) export HBITMAP CreateBitmapIndirect(BITMAP *); +extern(Windows) export HBRUSH CreateBrushIndirect(LOGBRUSH *); +extern(Windows) export HBITMAP CreateCompatibleBitmap(HDC, int, int); +extern(Windows) export HBITMAP CreateDiscardableBitmap(HDC, int, int); +extern(Windows) export HDC CreateCompatibleDC(HDC); +extern(Windows) export HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, DEVMODEA *); +extern(Windows) export HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, DEVMODEW *); +// #ifdef UNICODE +// #... +// #else +alias CreateDCA CreateDC; +// #endif // !UNICODE +extern(Windows) export HBITMAP CreateDIBitmap(HDC, BITMAPINFOHEADER *, DWORD, VOID *, BITMAPINFO *, UINT); +extern(Windows) export HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); +extern(Windows) export HBRUSH CreateDIBPatternBrushPt(VOID *, UINT); +extern(Windows) export HRGN CreateEllipticRgn(int, int, int, int); +extern(Windows) export HRGN CreateEllipticRgnIndirect(RECT *); +extern(Windows) export HFONT CreateFontIndirectA(LOGFONTA *); +extern(Windows) export HFONT CreateFontIndirectW(LOGFONTW *); +// #ifdef UNICODE +// #... +// #else +alias CreateFontIndirectA CreateFontIndirect; +// #endif // !UNICODE +extern(Windows) export HFONT CreateFontA(int, int, int, int, int, DWORD, + DWORD, DWORD, DWORD, DWORD, DWORD, + DWORD, DWORD, LPCSTR); +extern(Windows) export HFONT CreateFontW(int, int, int, int, int, DWORD, + DWORD, DWORD, DWORD, DWORD, DWORD, + DWORD, DWORD, LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias CreateFontA CreateFont; +// #endif // !UNICODE + +extern(Windows) export HBRUSH CreateHatchBrush(int, COLORREF); +extern(Windows) export HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, DEVMODEA *); +extern(Windows) export HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, DEVMODEW *); +// #ifdef UNICODE +// #... +// #else +alias CreateICA CreateIC; +// #endif // !UNICODE +extern(Windows) export HDC CreateMetaFileA(LPCSTR); +extern(Windows) export HDC CreateMetaFileW(LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias CreateMetaFileA CreateMetaFile; +// #endif // !UNICODE +extern(Windows) export HPALETTE CreatePalette(LOGPALETTE *); +extern(Windows) export HPEN CreatePen(int, int, COLORREF); +extern(Windows) export HPEN CreatePenIndirect(LOGPEN *); +extern(Windows) export HRGN CreatePolyPolygonRgn(POINT *, INT *, int, int); +extern(Windows) export HBRUSH CreatePatternBrush(HBITMAP); +extern(Windows) export HRGN CreateRectRgn(int, int, int, int); +extern(Windows) export HRGN CreateRectRgnIndirect(RECT *); +extern(Windows) export HRGN CreateRoundRectRgn(int, int, int, int, int, int); +extern(Windows) export BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); +extern(Windows) export BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias CreateScalableFontResourceA CreateScalableFontResource; +// #endif // !UNICODE +extern(Windows) export HBRUSH CreateSolidBrush(COLORREF); + +extern(Windows) export BOOL DeleteDC(HDC); +extern(Windows) export BOOL DeleteMetaFile(HMETAFILE); +extern(Windows) export BOOL DeleteObject(HGDIOBJ); +extern(Windows) export int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); + +extern(Windows) alias UINT function(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT) LPFNDEVMODE; + +extern(Windows) alias DWORD function(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE) LPFNDEVCAPS; + +enum : uint { DM_UPDATE = 1 } +enum : uint { DM_COPY = 2 } +enum : uint { DM_PROMPT = 4 } +enum : uint { DM_MODIFY = 8 } + +alias DM_MODIFY DM_IN_BUFFER; +alias DM_PROMPT DM_IN_PROMPT; +alias DM_COPY DM_OUT_BUFFER; +alias DM_UPDATE DM_OUT_DEFAULT; + +enum : uint { DC_FIELDS = 1 } +enum : uint { DC_PAPERS = 2 } +enum : uint { DC_PAPERSIZE = 3 } +enum : uint { DC_MINEXTENT = 4 } +enum : uint { DC_MAXEXTENT = 5 } +enum : uint { DC_BINS = 6 } +enum : uint { DC_DUPLEX = 7 } +enum : uint { DC_SIZE = 8 } +enum : uint { DC_EXTRA = 9 } +enum : uint { DC_VERSION = 10 } +enum : uint { DC_DRIVER = 11 } +enum : uint { DC_BINNAMES = 12 } +enum : uint { DC_ENUMRESOLUTIONS = 13 } +enum : uint { DC_FILEDEPENDENCIES = 14 } +enum : uint { DC_TRUETYPE = 15 } +enum : uint { DC_PAPERNAMES = 16 } +enum : uint { DC_ORIENTATION = 17 } +enum : uint { DC_COPIES = 18 } +// #if(WINVER >= 0x0400) +enum : uint { DC_BINADJUST = 19 } +enum : uint { DC_EMF_COMPLIANT = 20 } +enum : uint { DC_DATATYPE_PRODUCED = 21 } +enum : uint { DC_COLLATE = 22 } +enum : uint { DC_MANUFACTURER = 23 } +enum : uint { DC_MODEL = 24 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { DC_PERSONALITY = 25 } +enum : uint { DC_PRINTRATE = 26 } +enum : uint { DC_PRINTRATEUNIT = 27 } +enum : uint { PRINTRATEUNIT_PPM = 1 } +enum : uint { PRINTRATEUNIT_CPS = 2 } +enum : uint { PRINTRATEUNIT_LPM = 3 } +enum : uint { PRINTRATEUNIT_IPM = 4 } +enum : uint { DC_PRINTERMEM = 28 } +enum : uint { DC_MEDIAREADY = 29 } +enum : uint { DC_STAPLE = 30 } +enum : uint { DC_PRINTRATEPPM = 31 } +enum : uint { DC_COLORDEVICE = 32 } +enum : uint { DC_NUP = 33 } +enum : uint { DC_MEDIATYPENAMES = 34 } +enum : uint { DC_MEDIATYPES = 35 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { DCTT_BITMAP = 0x0000001 } +enum : uint { DCTT_DOWNLOAD = 0x0000002 } +enum : uint { DCTT_SUBDEV = 0x0000004 } +// #if(WINVER >= 0x0400) +enum : uint { DCTT_DOWNLOAD_OUTLINE = 0x0000008 } + +enum : uint { DCBA_FACEUPNONE = 0x0000 } +enum : uint { DCBA_FACEUPCENTER = 0x0001 } +enum : uint { DCBA_FACEUPLEFT = 0x0002 } +enum : uint { DCBA_FACEUPRIGHT = 0x0003 } +enum : uint { DCBA_FACEDOWNNONE = 0x0100 } +enum : uint { DCBA_FACEDOWNCENTER = 0x0101 } +enum : uint { DCBA_FACEDOWNLEFT = 0x0102 } +enum : uint { DCBA_FACEDOWNRIGHT = 0x0103 } +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, + LPSTR, DEVMODEA *); +extern(Windows) export int DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, + LPWSTR, DEVMODEW *); +// #ifdef UNICODE +// #... +// #else +alias DeviceCapabilitiesA DeviceCapabilities; +// #endif // !UNICODE + +extern(Windows) export int DrawEscape(HDC, int, int, LPCSTR); +extern(Windows) export BOOL Ellipse(HDC, int, int, int, int); + +// #if(WINVER >= 0x0400) +extern(Windows) export int EnumFontFamiliesExA(HDC, LPLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); +extern(Windows) export int EnumFontFamiliesExW(HDC, LPLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); +// #ifdef UNICODE +// #... +// #else +alias EnumFontFamiliesExA EnumFontFamiliesEx; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); +extern(Windows) export int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); +// #ifdef UNICODE +// #... +// #else +alias EnumFontFamiliesA EnumFontFamilies; +// #endif // !UNICODE +extern(Windows) export int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); +extern(Windows) export int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); +// #ifdef UNICODE +// #... +// #else +alias EnumFontsA EnumFonts; +// #endif // !UNICODE + +// #ifdef STRICT +extern(Windows) export int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); +// #else +// ... +// #endif + +extern(Windows) export BOOL EqualRgn(HRGN, HRGN); +extern(Windows) export int Escape(HDC, int, int, LPCSTR, LPVOID); +extern(Windows) export int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); +extern(Windows) export int ExcludeClipRect(HDC, int, int, int, int); +extern(Windows) export HRGN ExtCreateRegion(XFORM *, DWORD, RGNDATA *); +extern(Windows) export BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); +extern(Windows) export BOOL FillRgn(HDC, HRGN, HBRUSH); +extern(Windows) export BOOL FloodFill(HDC, int, int, COLORREF); +extern(Windows) export BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); +extern(Windows) export int GetROP2(HDC); +extern(Windows) export BOOL GetAspectRatioFilterEx(HDC, LPSIZE); +extern(Windows) export COLORREF GetBkColor(HDC); + +// #if (_WIN32_WINNT >= 0x0500) +extern(Windows) export COLORREF GetDCBrushColor(HDC); +extern(Windows) export COLORREF GetDCPenColor(HDC); +// #endif + +extern(Windows) export int GetBkMode(HDC); +extern(Windows) export LONG GetBitmapBits(HBITMAP, LONG, LPVOID); +extern(Windows) export BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); +extern(Windows) export UINT GetBoundsRect(HDC, LPRECT, UINT); + +extern(Windows) export BOOL GetBrushOrgEx(HDC, LPPOINT); + +extern(Windows) export BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); +extern(Windows) export BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); +// #ifdef UNICODE +// #... +// #else +alias GetCharWidthA GetCharWidth; +// #endif // !UNICODE +extern(Windows) export BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); +extern(Windows) export BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); +// #ifdef UNICODE +// #... +// #else +alias GetCharWidth32A GetCharWidth32; +// #endif // !UNICODE +extern(Windows) export BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); +extern(Windows) export BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); +// #ifdef UNICODE +// #... +// #else +alias GetCharWidthFloatA GetCharWidthFloat; +// #endif // !UNICODE +extern(Windows) export BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); +extern(Windows) export BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); +// #ifdef UNICODE +// #... +// #else +alias GetCharABCWidthsA GetCharABCWidths; +// #endif // !UNICODE +extern(Windows) export BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); +extern(Windows) export BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); +// #ifdef UNICODE +// #... +// #else +alias GetCharABCWidthsFloatA GetCharABCWidthsFloat; +// #endif // !UNICODE +extern(Windows) export int GetClipBox(HDC, LPRECT); +extern(Windows) export int GetClipRgn(HDC, HRGN); +extern(Windows) export int GetMetaRgn(HDC, HRGN); +extern(Windows) export HGDIOBJ GetCurrentObject(HDC, UINT); +extern(Windows) export BOOL GetCurrentPositionEx(HDC, LPPOINT); +extern(Windows) export int GetDeviceCaps(HDC, int); +extern(Windows) export int GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT); +extern(Windows) export DWORD GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD); +extern(Windows) export DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, MAT2 *); +extern(Windows) export DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, MAT2 *); +// #ifdef UNICODE +// #... +// #else +alias GetGlyphOutlineA GetGlyphOutline; +// #endif // !UNICODE +extern(Windows) export int GetGraphicsMode(HDC); +extern(Windows) export int GetMapMode(HDC); +extern(Windows) export UINT GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID); +extern(Windows) export HMETAFILE GetMetaFileA(LPCSTR); +extern(Windows) export HMETAFILE GetMetaFileW(LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias GetMetaFileA GetMetaFile; +// #endif // !UNICODE +extern(Windows) export COLORREF GetNearestColor(HDC, COLORREF); +extern(Windows) export UINT GetNearestPaletteIndex(HPALETTE, COLORREF); +extern(Windows) export DWORD GetObjectType(HGDIOBJ h); + +// #ifndef NOTEXTMETRIC + +extern(Windows) export UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); +extern(Windows) export UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); +// #ifdef UNICODE +// #... +// #else +alias GetOutlineTextMetricsA GetOutlineTextMetrics; +// #endif // !UNICODE + +// #endif /* NOTEXTMETRIC */ + +extern(Windows) export UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); +extern(Windows) export COLORREF GetPixel(HDC, int, int); +extern(Windows) export int GetPixelFormat(HDC); +extern(Windows) export int GetPolyFillMode(HDC); +extern(Windows) export BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); +extern(Windows) export int GetRandomRgn(HDC, HRGN, INT); +extern(Windows) export DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); +extern(Windows) export int GetRgnBox(HRGN, LPRECT); +extern(Windows) export HGDIOBJ GetStockObject(int); +extern(Windows) export int GetStretchBltMode(HDC); +extern(Windows) export UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); +extern(Windows) export UINT GetSystemPaletteUse(HDC); +extern(Windows) export int GetTextCharacterExtra(HDC); +extern(Windows) export UINT GetTextAlign(HDC); +extern(Windows) export COLORREF GetTextColor(HDC); + +extern(Windows) export BOOL GetTextExtentPointA( + HDC, + LPCSTR, + int, + LPSIZE); +extern(Windows) export BOOL GetTextExtentPointW( + HDC, + LPCWSTR, + int, + LPSIZE); +// #ifdef UNICODE +// #... +// #else +alias GetTextExtentPointA GetTextExtentPoint; +// #endif // !UNICODE + +extern(Windows) export BOOL GetTextExtentPoint32A( + HDC, + LPCSTR, + int, + LPSIZE); +extern(Windows) export BOOL GetTextExtentPoint32W( + HDC, + LPCWSTR, + int, + LPSIZE); +// #ifdef UNICODE +// #... +// #else +alias GetTextExtentPoint32A GetTextExtentPoint32; +// #endif // !UNICODE + +extern(Windows) export BOOL GetTextExtentExPointA( + HDC, + LPCSTR, + int, + int, + LPINT, + LPINT, + LPSIZE); +extern(Windows) export BOOL GetTextExtentExPointW( + HDC, + LPCWSTR, + int, + int, + LPINT, + LPINT, + LPSIZE); +// #ifdef UNICODE +// #... +// #else +alias GetTextExtentExPointA GetTextExtentExPoint; +// #endif // !UNICODE +// #if(WINVER >= 0x0400) +extern(Windows) export int GetTextCharset(HDC hdc); +extern(Windows) export int GetTextCharsetInfo(HDC hdc, LPFONTSIGNATURE lpSig, DWORD dwFlags); +extern(Windows) export BOOL TranslateCharsetInfo(DWORD *lpSrc, LPCHARSETINFO lpCs, DWORD dwFlags); +extern(Windows) export DWORD GetFontLanguageInfo(HDC ); +extern(Windows) export DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); +extern(Windows) export DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); +// #ifdef UNICODE +// #... +// #else +alias GetCharacterPlacementA GetCharacterPlacement; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) + +struct tagWCRANGE { + WCHAR wcLow; + USHORT cGlyphs; +} +alias tagWCRANGE WCRANGE; +alias tagWCRANGE* PWCRANGE; +alias tagWCRANGE* LPWCRANGE; + +struct tagGLYPHSET { + DWORD cbThis; + DWORD flAccel; + DWORD cGlyphsSupported; + DWORD cRanges; + WCRANGE ranges[1]; +} +alias tagGLYPHSET GLYPHSET; +alias tagGLYPHSET* PGLYPHSET; +alias tagGLYPHSET* LPGLYPHSET; + +enum : uint { GS_8BIT_INDICES = 0x00000001 } + +enum : uint { GGI_MARK_NONEXISTING_GLYPHS = 0X0001 } + +extern(Windows) export DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); +extern(Windows) export DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); +extern(Windows) export DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); +// #ifdef UNICODE +// #... +// #else +alias GetGlyphIndicesA GetGlyphIndices; +// #endif // !UNICODE +extern(Windows) export BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); +extern(Windows) export BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); +extern(Windows) export BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); +extern(Windows) export BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); + +enum : uint { STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8) } +enum : uint { STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8) } +enum : uint { MM_MAX_NUMAXES = 16 } + +struct tagDESIGNVECTOR { + DWORD dvReserved; + DWORD dvNumAxes; + LONG dvValues[MM_MAX_NUMAXES]; +} +alias tagDESIGNVECTOR DESIGNVECTOR; +alias tagDESIGNVECTOR* PDESIGNVECTOR; +alias tagDESIGNVECTOR* LPDESIGNVECTOR; + +extern(Windows) export int AddFontResourceExA(LPCSTR, DWORD, PVOID); +extern(Windows) export int AddFontResourceExW(LPCWSTR, DWORD, PVOID); +// #ifdef UNICODE +// #... +// #else +alias AddFontResourceExA AddFontResourceEx; +// #endif // !UNICODE +extern(Windows) export BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); +extern(Windows) export BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); +// #ifdef UNICODE +// #... +// #else +alias RemoveFontResourceExA RemoveFontResourceEx; +// #endif // !UNICODE +extern(Windows) export HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID , DWORD*); +extern(Windows) export BOOL RemoveFontMemResourceEx(HANDLE); +enum : uint { FR_PRIVATE = 0x10 } +enum : uint { FR_NOT_ENUM = 0x20 } + +enum : uint { MM_MAX_AXES_NAMELEN = 16 } + +struct tagAXISINFOA { + LONG axMinValue; + LONG axMaxValue; + BYTE axAxisName[MM_MAX_AXES_NAMELEN]; +} +alias tagAXISINFOA AXISINFOA; +alias tagAXISINFOA* PAXISINFOA; +alias tagAXISINFOA* LPAXISINFOA; + +struct tagAXISINFOW { + LONG axMinValue; + LONG axMaxValue; + WCHAR axAxisName[MM_MAX_AXES_NAMELEN]; +} +alias tagAXISINFOW AXISINFOW; +alias tagAXISINFOW* PAXISINFOW; +alias tagAXISINFOW* LPAXISINFOW; + +// #ifdef UNICODE +// ... +// #else +alias AXISINFOA AXISINFO; +alias PAXISINFOA PAXISINFO; +alias LPAXISINFOA LPAXISINFO; +// #endif // UNICODE + +struct tagAXESLISTA { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOA axlAxisInfo[MM_MAX_NUMAXES]; +} +alias tagAXESLISTA AXESLISTA; +alias tagAXESLISTA* PAXESLISTA; +alias tagAXESLISTA* LPAXESLISTA; + +struct tagAXESLISTW { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOW axlAxisInfo[MM_MAX_NUMAXES]; +} +alias tagAXESLISTW AXESLISTW; +alias tagAXESLISTW* PAXESLISTW; +alias tagAXESLISTW* LPAXESLISTW; + +// #ifdef UNICODE +// ... +// #else +alias AXESLISTA AXESLIST; +alias PAXESLISTA PAXESLIST; +alias LPAXESLISTA LPAXESLIST; +// #endif // UNICODE + +struct tagENUMLOGFONTEXDVA { + ENUMLOGFONTEXA elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; +} +alias tagENUMLOGFONTEXDVA ENUMLOGFONTEXDVA; +alias tagENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA; +alias tagENUMLOGFONTEXDVA* LPENUMLOGFONTEXDVA; + +struct tagENUMLOGFONTEXDVW { + ENUMLOGFONTEXW elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; +} +alias tagENUMLOGFONTEXDVW ENUMLOGFONTEXDVW; +alias tagENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW; +alias tagENUMLOGFONTEXDVW* LPENUMLOGFONTEXDVW; + +// #ifdef UNICODE +// ... +// #else +alias ENUMLOGFONTEXDVA ENUMLOGFONTEXDV; +alias PENUMLOGFONTEXDVA PENUMLOGFONTEXDV; +alias LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV; +// #endif // UNICODE + +extern(Windows) export HFONT CreateFontIndirectExA(ENUMLOGFONTEXDVA *); +extern(Windows) export HFONT CreateFontIndirectExW(ENUMLOGFONTEXDVW *); +// #ifdef UNICODE +// #... +// #else +alias CreateFontIndirectExA CreateFontIndirectEx; +// #endif // !UNICODE + +// #ifndef NOTEXTMETRIC +struct tagENUMTEXTMETRICA { + NEWTEXTMETRICEXA etmNewTextMetricEx; + AXESLISTA etmAxesList; +} +alias tagENUMTEXTMETRICA ENUMTEXTMETRICA; +alias tagENUMTEXTMETRICA* PENUMTEXTMETRICA; +alias tagENUMTEXTMETRICA* LPENUMTEXTMETRICA; + +struct tagENUMTEXTMETRICW { + NEWTEXTMETRICEXW etmNewTextMetricEx; + AXESLISTW etmAxesList; +} +alias tagENUMTEXTMETRICW ENUMTEXTMETRICW; +alias tagENUMTEXTMETRICW* PENUMTEXTMETRICW; +alias tagENUMTEXTMETRICW* LPENUMTEXTMETRICW; + +// #ifdef UNICODE +// ... +// #else +alias ENUMTEXTMETRICA ENUMTEXTMETRIC; +alias PENUMTEXTMETRICA PENUMTEXTMETRIC; +alias LPENUMTEXTMETRICA LPENUMTEXTMETRIC; +// #endif // UNICODE +// #endif /* NOTEXTMETRIC */ + +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL GetViewportExtEx(HDC, LPSIZE); +extern(Windows) export BOOL GetViewportOrgEx(HDC, LPPOINT); +extern(Windows) export BOOL GetWindowExtEx(HDC, LPSIZE); +extern(Windows) export BOOL GetWindowOrgEx(HDC, LPPOINT); + +extern(Windows) export int IntersectClipRect(HDC, int, int, int, int); +extern(Windows) export BOOL InvertRgn(HDC, HRGN); +extern(Windows) export BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); +extern(Windows) export BOOL LineTo(HDC, int, int); +extern(Windows) export BOOL MaskBlt(HDC, int, int, int, int, + HDC, int, int, HBITMAP, int, int, DWORD); +extern(Windows) export BOOL PlgBlt(HDC, POINT *, HDC, int, int, int, + int, HBITMAP, int, int); + +extern(Windows) export int OffsetClipRgn(HDC, int, int); +extern(Windows) export int OffsetRgn(HRGN, int, int); +extern(Windows) export BOOL PatBlt(HDC, int, int, int, int, DWORD); +extern(Windows) export BOOL Pie(HDC, int, int, int, int, int, int, int, int); +extern(Windows) export BOOL PlayMetaFile(HDC, HMETAFILE); +extern(Windows) export BOOL PaintRgn(HDC, HRGN); +extern(Windows) export BOOL PolyPolygon(HDC, POINT *, INT *, int); +extern(Windows) export BOOL PtInRegion(HRGN, int, int); +extern(Windows) export BOOL PtVisible(HDC, int, int); +extern(Windows) export BOOL RectInRegion(HRGN, RECT *); +extern(Windows) export BOOL RectVisible(HDC, RECT *); +extern(Windows) export BOOL Rectangle(HDC, int, int, int, int); +extern(Windows) export BOOL RestoreDC(HDC, int); +extern(Windows) export HDC ResetDCA(HDC, DEVMODEA *); +extern(Windows) export HDC ResetDCW(HDC, DEVMODEW *); +// #ifdef UNICODE +// #... +// #else +alias ResetDCA ResetDC; +// #endif // !UNICODE +extern(Windows) export UINT RealizePalette(HDC); +extern(Windows) export BOOL RemoveFontResourceA(LPCSTR); +extern(Windows) export BOOL RemoveFontResourceW(LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias RemoveFontResourceA RemoveFontResource; +// #endif // !UNICODE +extern(Windows) export BOOL RoundRect(HDC, int, int, int, int, int, int); +extern(Windows) export BOOL ResizePalette(HPALETTE, UINT); + +extern(Windows) export int SaveDC(HDC); +extern(Windows) export int SelectClipRgn(HDC, HRGN); +extern(Windows) export int ExtSelectClipRgn(HDC, HRGN, int); +extern(Windows) export int SetMetaRgn(HDC); +extern(Windows) export HGDIOBJ SelectObject(HDC, HGDIOBJ); +extern(Windows) export HPALETTE SelectPalette(HDC, HPALETTE, BOOL); +extern(Windows) export COLORREF SetBkColor(HDC, COLORREF); + +// #if (_WIN32_WINNT >= 0x0500) +extern(Windows) export COLORREF SetDCBrushColor(HDC, COLORREF); +extern(Windows) export COLORREF SetDCPenColor(HDC, COLORREF); +// #endif + +extern(Windows) export int SetBkMode(HDC, int); +extern(Windows) export LONG SetBitmapBits(HBITMAP, DWORD, VOID *); + +extern(Windows) export UINT SetBoundsRect(HDC, RECT *, UINT); +extern(Windows) export int SetDIBits(HDC, HBITMAP, UINT, UINT, VOID *, BITMAPINFO *, UINT); +extern(Windows) export int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, + int, UINT, UINT, VOID *, BITMAPINFO *, UINT); +extern(Windows) export DWORD SetMapperFlags(HDC, DWORD); +extern(Windows) export int SetGraphicsMode(HDC hdc, int iMode); +extern(Windows) export int SetMapMode(HDC, int); + +// #if(WINVER >= 0x0500) +extern(Windows) export DWORD SetLayout(HDC, DWORD); +extern(Windows) export DWORD GetLayout(HDC); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export HMETAFILE SetMetaFileBitsEx(UINT, BYTE *); +extern(Windows) export UINT SetPaletteEntries(HPALETTE, UINT, UINT, PALETTEENTRY *); +extern(Windows) export COLORREF SetPixel(HDC, int, int, COLORREF); +extern(Windows) export BOOL SetPixelV(HDC, int, int, COLORREF); +extern(Windows) export BOOL SetPixelFormat(HDC, int, PIXELFORMATDESCRIPTOR *); +extern(Windows) export int SetPolyFillMode(HDC, int); +extern(Windows) export BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); +extern(Windows) export BOOL SetRectRgn(HRGN, int, int, int, int); +extern(Windows) export int StretchDIBits(HDC, int, int, int, int, int, int, int, int, + VOID *, BITMAPINFO *, UINT, DWORD); +extern(Windows) export int SetROP2(HDC, int); +extern(Windows) export int SetStretchBltMode(HDC, int); +extern(Windows) export UINT SetSystemPaletteUse(HDC, UINT); +extern(Windows) export int SetTextCharacterExtra(HDC, int); +extern(Windows) export COLORREF SetTextColor(HDC, COLORREF); +extern(Windows) export UINT SetTextAlign(HDC, UINT); +extern(Windows) export BOOL SetTextJustification(HDC, int, int); +extern(Windows) export BOOL UpdateColors(HDC); + +// #if (WINVER >= 0x0400) + +alias USHORT COLOR16; + +struct _TRIVERTEX { + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; +} +alias _TRIVERTEX TRIVERTEX; +alias _TRIVERTEX* PTRIVERTEX; +alias _TRIVERTEX* LPTRIVERTEX; + +struct _GRADIENT_TRIANGLE { + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; +} +alias _GRADIENT_TRIANGLE GRADIENT_TRIANGLE; +alias _GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE; +alias _GRADIENT_TRIANGLE* LPGRADIENT_TRIANGLE; + +struct _GRADIENT_RECT { + ULONG UpperLeft; + ULONG LowerRight; +} +alias _GRADIENT_RECT GRADIENT_RECT; +alias _GRADIENT_RECT* PGRADIENT_RECT; +alias _GRADIENT_RECT* LPGRADIENT_RECT; + +struct _BLENDFUNCTION { + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; +} +alias _BLENDFUNCTION BLENDFUNCTION; +alias _BLENDFUNCTION* PBLENDFUNCTION; + +enum : uint { AC_SRC_OVER = 0x00 } + +enum : uint { AC_SRC_ALPHA = 0x01 } + +extern(Windows) export BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); + +extern(Windows) export BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); + +enum : uint { GRADIENT_FILL_RECT_H = 0x00000000 } +enum : uint { GRADIENT_FILL_RECT_V = 0x00000001 } +enum : uint { GRADIENT_FILL_TRIANGLE = 0x00000002 } +enum : uint { GRADIENT_FILL_OP_FLAG = 0x000000ff } + +extern(Windows) export BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); + +// #endif + +// #ifndef NOMETAFILE + +extern(Windows) export BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); +extern(Windows) alias int function( HDC, HANDLETABLE *, METARECORD *, int, LPARAM) MFENUMPROC; +extern(Windows) export BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); + +extern(Windows) alias int function(HDC, HANDLETABLE *, ENHMETARECORD *, int, LPARAM) ENHMFENUMPROC; + +extern(Windows) export HENHMETAFILE CloseEnhMetaFile(HDC); +extern(Windows) export HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); +extern(Windows) export HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias CopyEnhMetaFileA CopyEnhMetaFile; +// #endif // !UNICODE +extern(Windows) export HDC CreateEnhMetaFileA(HDC, LPCSTR, RECT *, LPCSTR); +extern(Windows) export HDC CreateEnhMetaFileW(HDC, LPCWSTR, RECT *, LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias CreateEnhMetaFileA CreateEnhMetaFile; +// #endif // !UNICODE +extern(Windows) export BOOL DeleteEnhMetaFile(HENHMETAFILE); +extern(Windows) export BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, + LPVOID, RECT *); +extern(Windows) export HENHMETAFILE GetEnhMetaFileA(LPCSTR); +extern(Windows) export HENHMETAFILE GetEnhMetaFileW(LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias GetEnhMetaFileA GetEnhMetaFile; +// #endif // !UNICODE +extern(Windows) export UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); +extern(Windows) export UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR ); +extern(Windows) export UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR ); +// #ifdef UNICODE +// #... +// #else +alias GetEnhMetaFileDescriptionA GetEnhMetaFileDescription; +// #endif // !UNICODE +extern(Windows) export UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER ); +extern(Windows) export UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY ); +extern(Windows) export UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, UINT, + PIXELFORMATDESCRIPTOR *); +extern(Windows) export UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); +extern(Windows) export BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, RECT *); +extern(Windows) export BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, ENHMETARECORD *, UINT); +extern(Windows) export HENHMETAFILE SetEnhMetaFileBits(UINT, BYTE *); +extern(Windows) export HENHMETAFILE SetWinMetaFileBits(UINT, BYTE *, HDC, METAFILEPICT *); +extern(Windows) export BOOL GdiComment(HDC, UINT, BYTE *); + +// #endif /* NOMETAFILE */ + +// #ifndef NOTEXTMETRIC + +extern(Windows) export BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); +extern(Windows) export BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); +// #ifdef UNICODE +// #... +// #else +alias GetTextMetricsA GetTextMetrics; +// #endif // !UNICODE + +// #endif + +struct tagDIBSECTION { + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD dsBitfields[3]; + HANDLE dshSection; + DWORD dsOffset; +} +alias tagDIBSECTION DIBSECTION; +alias tagDIBSECTION* LPDIBSECTION; +alias tagDIBSECTION* PDIBSECTION; + +extern(Windows) export BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); +extern(Windows) export BOOL PolyPolyline(HDC, POINT *, DWORD *, DWORD); +extern(Windows) export BOOL GetWorldTransform(HDC, LPXFORM); +extern(Windows) export BOOL SetWorldTransform(HDC, XFORM *); +extern(Windows) export BOOL ModifyWorldTransform(HDC, XFORM *, DWORD); +extern(Windows) export BOOL CombineTransform(LPXFORM, XFORM *, XFORM *); +extern(Windows) export HBITMAP CreateDIBSection(HDC, BITMAPINFO *, UINT, VOID **, HANDLE, DWORD); +extern(Windows) export UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD *); +extern(Windows) export UINT SetDIBColorTable(HDC, UINT, UINT, RGBQUAD *); + +enum : uint { CA_NEGATIVE = 0x0001 } +enum : uint { CA_LOG_FILTER = 0x0002 } + +enum : uint { ILLUMINANT_DEVICE_DEFAULT = 0 } +enum : uint { ILLUMINANT_A = 1 } +enum : uint { ILLUMINANT_B = 2 } +enum : uint { ILLUMINANT_C = 3 } +enum : uint { ILLUMINANT_D50 = 4 } +enum : uint { ILLUMINANT_D55 = 5 } +enum : uint { ILLUMINANT_D65 = 6 } +enum : uint { ILLUMINANT_D75 = 7 } +enum : uint { ILLUMINANT_F2 = 8 } +alias ILLUMINANT_F2 ILLUMINANT_MAX_INDEX; + +alias ILLUMINANT_A ILLUMINANT_TUNGSTEN; +alias ILLUMINANT_C ILLUMINANT_DAYLIGHT; +alias ILLUMINANT_F2 ILLUMINANT_FLUORESCENT; +alias ILLUMINANT_C ILLUMINANT_NTSC; + +enum : WORD { RGB_GAMMA_MIN = 02500 } +enum : WORD { RGB_GAMMA_MAX = 65000 } + +enum : WORD { REFERENCE_WHITE_MIN = 6000 } +enum : WORD { REFERENCE_WHITE_MAX = 10000 } +enum : WORD { REFERENCE_BLACK_MIN = 0 } +enum : WORD { REFERENCE_BLACK_MAX = 4000 } + +enum : SHORT { COLOR_ADJ_MIN = -100 } +enum : SHORT { COLOR_ADJ_MAX = 100 } + +struct tagCOLORADJUSTMENT { + 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 tagCOLORADJUSTMENT COLORADJUSTMENT; +alias tagCOLORADJUSTMENT* PCOLORADJUSTMENT; +alias tagCOLORADJUSTMENT* LPCOLORADJUSTMENT; + +extern(Windows) export BOOL SetColorAdjustment(HDC, COLORADJUSTMENT *); +extern(Windows) export BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); +extern(Windows) export HPALETTE CreateHalftonePalette(HDC); + +// #ifdef STRICT +extern(Windows) alias BOOL function( HDC, int) ABORTPROC; +// #else +// ... +// #endif + +struct _DOCINFOA { + int cbSize; + LPCSTR lpszDocName; + LPCSTR lpszOutput; +// #if (WINVER >= 0x0400) + LPCSTR lpszDatatype; + DWORD fwType; +// #endif /* WINVER */ +} +alias _DOCINFOA DOCINFOA; +alias _DOCINFOA* LPDOCINFOA; + +struct _DOCINFOW { + int cbSize; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; +// #if (WINVER >= 0x0400) + LPCWSTR lpszDatatype; + DWORD fwType; +// #endif /* WINVER */ +} +alias _DOCINFOW DOCINFOW; +alias _DOCINFOW* LPDOCINFOW; + +// #ifdef UNICODE +// ... +// #else +alias DOCINFOA DOCINFO; +alias LPDOCINFOA LPDOCINFO; +// #endif // UNICODE + +// #if(WINVER >= 0x0400) +enum : uint { DI_APPBANDING = 0x00000001 } +enum : uint { DI_ROPS_READ_DESTINATION = 0x00000002 } +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int StartDocA(HDC, DOCINFOA *); +extern(Windows) export int StartDocW(HDC, DOCINFOW *); +// #ifdef UNICODE +// #... +// #else +alias StartDocA StartDoc; +// #endif // !UNICODE +extern(Windows) export int EndDoc(HDC); +extern(Windows) export int StartPage(HDC); +extern(Windows) export int EndPage(HDC); +extern(Windows) export int AbortDoc(HDC); +extern(Windows) export int SetAbortProc(HDC, ABORTPROC); + +extern(Windows) export BOOL AbortPath(HDC); +extern(Windows) export BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); +extern(Windows) export BOOL BeginPath(HDC); +extern(Windows) export BOOL CloseFigure(HDC); +extern(Windows) export BOOL EndPath(HDC); +extern(Windows) export BOOL FillPath(HDC); +extern(Windows) export BOOL FlattenPath(HDC); +extern(Windows) export int GetPath(HDC, LPPOINT, LPBYTE, int); +extern(Windows) export HRGN PathToRegion(HDC); +extern(Windows) export BOOL PolyDraw(HDC, POINT *, BYTE *, int); +extern(Windows) export BOOL SelectClipPath(HDC, int); +extern(Windows) export int SetArcDirection(HDC, int); +extern(Windows) export BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); +extern(Windows) export BOOL StrokeAndFillPath(HDC); +extern(Windows) export BOOL StrokePath(HDC); +extern(Windows) export BOOL WidenPath(HDC); +extern(Windows) export HPEN ExtCreatePen(DWORD, DWORD, LOGBRUSH *, DWORD, DWORD *); +extern(Windows) export BOOL GetMiterLimit(HDC, PFLOAT); +extern(Windows) export int GetArcDirection(HDC); + +extern(Windows) export int GetObjectA(HGDIOBJ, int, LPVOID); +extern(Windows) export int GetObjectW(HGDIOBJ, int, LPVOID); +// #ifdef UNICODE +// #... +// #else +alias GetObjectA GetObject; +// #endif // !UNICODE +extern(Windows) export BOOL MoveToEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL TextOutA(HDC, int, int, LPCSTR, int); +extern(Windows) export BOOL TextOutW(HDC, int, int, LPCWSTR, int); +// #ifdef UNICODE +// #... +// #else +alias TextOutA TextOut; +// #endif // !UNICODE +extern(Windows) export BOOL ExtTextOutA(HDC, int, int, UINT, RECT *, LPCSTR, UINT, INT *); +extern(Windows) export BOOL ExtTextOutW(HDC, int, int, UINT, RECT *, LPCWSTR, UINT, INT *); +// #ifdef UNICODE +// #... +// #else +alias ExtTextOutA ExtTextOut; +// #endif // !UNICODE +extern(Windows) export BOOL PolyTextOutA(HDC, POLYTEXTA *, int); +extern(Windows) export BOOL PolyTextOutW(HDC, POLYTEXTW *, int); +// #ifdef UNICODE +// #... +// #else +alias PolyTextOutA PolyTextOut; +// #endif // !UNICODE + +extern(Windows) export HRGN CreatePolygonRgn(POINT *, int, int); +extern(Windows) export BOOL DPtoLP(HDC, LPPOINT, int); +extern(Windows) export BOOL LPtoDP(HDC, LPPOINT, int); +extern(Windows) export BOOL Polygon(HDC, POINT *, int); +extern(Windows) export BOOL Polyline(HDC, POINT *, int); + +extern(Windows) export BOOL PolyBezier(HDC, POINT *, DWORD); +extern(Windows) export BOOL PolyBezierTo(HDC, POINT *, DWORD); +extern(Windows) export BOOL PolylineTo(HDC, POINT *, DWORD); + +extern(Windows) export BOOL SetViewportExtEx(HDC, int, int, LPSIZE); +extern(Windows) export BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL SetWindowExtEx(HDC, int, int, LPSIZE); +extern(Windows) export BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); + +extern(Windows) export BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); +extern(Windows) export BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); +extern(Windows) export BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); +extern(Windows) export BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); + +extern(Windows) export int GetTextFaceA(HDC, int, LPSTR); +extern(Windows) export int GetTextFaceW(HDC, int, LPWSTR); +// #ifdef UNICODE +// #... +// #else +alias GetTextFaceA GetTextFace; +// #endif // !UNICODE + +enum : uint { FONTMAPPER_MAX = 10 } + +struct tagKERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; +} +alias tagKERNINGPAIR KERNINGPAIR; +alias tagKERNINGPAIR* LPKERNINGPAIR; + +extern(Windows) export DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); +extern(Windows) export DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); +// #ifdef UNICODE +// #... +// #else +alias GetKerningPairsA GetKerningPairs; +// #endif // !UNICODE + +extern(Windows) export BOOL GetDCOrgEx(HDC, LPPOINT); +extern(Windows) export BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL UnrealizeObject(HGDIOBJ); + +extern(Windows) export BOOL GdiFlush(); +extern(Windows) export DWORD GdiSetBatchLimit(DWORD); +extern(Windows) export DWORD GdiGetBatchLimit(); + +// #if(WINVER >= 0x0400) + +enum : uint { ICM_OFF = 1 } +enum : uint { ICM_ON = 2 } +enum : uint { ICM_QUERY = 3 } +enum : uint { ICM_DONE_OUTSIDEDC = 4 } + +extern(Windows) alias int function(LPSTR, LPARAM) ICMENUMPROCA; +extern(Windows) alias int function(LPWSTR, LPARAM) ICMENUMPROCW; +// #ifdef UNICODE +// #... +// #else +alias ICMENUMPROCA ICMENUMPROC; +// #endif // !UNICODE + +extern(Windows) export int SetICMMode(HDC, int); +extern(Windows) export BOOL CheckColorsInGamut(HDC, LPVOID, LPVOID, DWORD); +extern(Windows) export HCOLORSPACE GetColorSpace(HDC); +extern(Windows) export BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); +extern(Windows) export BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); +// #ifdef UNICODE +// #... +// #else +alias GetLogColorSpaceA GetLogColorSpace; +// #endif // !UNICODE +extern(Windows) export HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); +extern(Windows) export HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); +// #ifdef UNICODE +// #... +// #else +alias CreateColorSpaceA CreateColorSpace; +// #endif // !UNICODE +extern(Windows) export HCOLORSPACE SetColorSpace(HDC, HCOLORSPACE); +extern(Windows) export BOOL DeleteColorSpace(HCOLORSPACE); +extern(Windows) export BOOL GetICMProfileA(HDC, LPDWORD, LPSTR); +extern(Windows) export BOOL GetICMProfileW(HDC, LPDWORD, LPWSTR); +// #ifdef UNICODE +// #... +// #else +alias GetICMProfileA GetICMProfile; +// #endif // !UNICODE +extern(Windows) export BOOL SetICMProfileA(HDC, LPSTR); +extern(Windows) export BOOL SetICMProfileW(HDC, LPWSTR); +// #ifdef UNICODE +// #... +// #else +alias SetICMProfileA SetICMProfile; +// #endif // !UNICODE +extern(Windows) export BOOL GetDeviceGammaRamp(HDC, LPVOID); +extern(Windows) export BOOL SetDeviceGammaRamp(HDC, LPVOID); +extern(Windows) export BOOL ColorMatchToTarget(HDC, HDC, DWORD); +extern(Windows) export int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); +extern(Windows) export int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); +// #ifdef UNICODE +// #... +// #else +alias EnumICMProfilesA EnumICMProfiles; +// #endif // !UNICODE +extern(Windows) export BOOL UpdateICMRegKeyA(DWORD, LPSTR, LPSTR, UINT); +extern(Windows) export BOOL UpdateICMRegKeyW(DWORD, LPWSTR, LPWSTR, UINT); +// #ifdef UNICODE +// #... +// #else +alias UpdateICMRegKeyA UpdateICMRegKey; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +// #if (WINVER >= 0x0500) +extern(Windows) export BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); +// #endif + +// #ifndef NOMETAFILE + +// #ifndef _MAC +enum : uint { ENHMETA_SIGNATURE = 0x464D4520 } +// #else +// #... +// #endif + +enum : uint { ENHMETA_STOCK_OBJECT = 0x80000000 } + +enum : uint { EMR_HEADER = 1 } +enum : uint { EMR_POLYBEZIER = 2 } +enum : uint { EMR_POLYGON = 3 } +enum : uint { EMR_POLYLINE = 4 } +enum : uint { EMR_POLYBEZIERTO = 5 } +enum : uint { EMR_POLYLINETO = 6 } +enum : uint { EMR_POLYPOLYLINE = 7 } +enum : uint { EMR_POLYPOLYGON = 8 } +enum : uint { EMR_SETWINDOWEXTEX = 9 } +enum : uint { EMR_SETWINDOWORGEX = 10 } +enum : uint { EMR_SETVIEWPORTEXTEX = 11 } +enum : uint { EMR_SETVIEWPORTORGEX = 12 } +enum : uint { EMR_SETBRUSHORGEX = 13 } +enum : uint { EMR_EOF = 14 } +enum : uint { EMR_SETPIXELV = 15 } +enum : uint { EMR_SETMAPPERFLAGS = 16 } +enum : uint { EMR_SETMAPMODE = 17 } +enum : uint { EMR_SETBKMODE = 18 } +enum : uint { EMR_SETPOLYFILLMODE = 19 } +enum : uint { EMR_SETROP2 = 20 } +enum : uint { EMR_SETSTRETCHBLTMODE = 21 } +enum : uint { EMR_SETTEXTALIGN = 22 } +enum : uint { EMR_SETCOLORADJUSTMENT = 23 } +enum : uint { EMR_SETTEXTCOLOR = 24 } +enum : uint { EMR_SETBKCOLOR = 25 } +enum : uint { EMR_OFFSETCLIPRGN = 26 } +enum : uint { EMR_MOVETOEX = 27 } +enum : uint { EMR_SETMETARGN = 28 } +enum : uint { EMR_EXCLUDECLIPRECT = 29 } +enum : uint { EMR_INTERSECTCLIPRECT = 30 } +enum : uint { EMR_SCALEVIEWPORTEXTEX = 31 } +enum : uint { EMR_SCALEWINDOWEXTEX = 32 } +enum : uint { EMR_SAVEDC = 33 } +enum : uint { EMR_RESTOREDC = 34 } +enum : uint { EMR_SETWORLDTRANSFORM = 35 } +enum : uint { EMR_MODIFYWORLDTRANSFORM = 36 } +enum : uint { EMR_SELECTOBJECT = 37 } +enum : uint { EMR_CREATEPEN = 38 } +enum : uint { EMR_CREATEBRUSHINDIRECT = 39 } +enum : uint { EMR_DELETEOBJECT = 40 } +enum : uint { EMR_ANGLEARC = 41 } +enum : uint { EMR_ELLIPSE = 42 } +enum : uint { EMR_RECTANGLE = 43 } +enum : uint { EMR_ROUNDRECT = 44 } +enum : uint { EMR_ARC = 45 } +enum : uint { EMR_CHORD = 46 } +enum : uint { EMR_PIE = 47 } +enum : uint { EMR_SELECTPALETTE = 48 } +enum : uint { EMR_CREATEPALETTE = 49 } +enum : uint { EMR_SETPALETTEENTRIES = 50 } +enum : uint { EMR_RESIZEPALETTE = 51 } +enum : uint { EMR_REALIZEPALETTE = 52 } +enum : uint { EMR_EXTFLOODFILL = 53 } +enum : uint { EMR_LINETO = 54 } +enum : uint { EMR_ARCTO = 55 } +enum : uint { EMR_POLYDRAW = 56 } +enum : uint { EMR_SETARCDIRECTION = 57 } +enum : uint { EMR_SETMITERLIMIT = 58 } +enum : uint { EMR_BEGINPATH = 59 } +enum : uint { EMR_ENDPATH = 60 } +enum : uint { EMR_CLOSEFIGURE = 61 } +enum : uint { EMR_FILLPATH = 62 } +enum : uint { EMR_STROKEANDFILLPATH = 63 } +enum : uint { EMR_STROKEPATH = 64 } +enum : uint { EMR_FLATTENPATH = 65 } +enum : uint { EMR_WIDENPATH = 66 } +enum : uint { EMR_SELECTCLIPPATH = 67 } +enum : uint { EMR_ABORTPATH = 68 } + +enum : uint { EMR_GDICOMMENT = 70 } +enum : uint { EMR_FILLRGN = 71 } +enum : uint { EMR_FRAMERGN = 72 } +enum : uint { EMR_INVERTRGN = 73 } +enum : uint { EMR_PAINTRGN = 74 } +enum : uint { EMR_EXTSELECTCLIPRGN = 75 } +enum : uint { EMR_BITBLT = 76 } +enum : uint { EMR_STRETCHBLT = 77 } +enum : uint { EMR_MASKBLT = 78 } +enum : uint { EMR_PLGBLT = 79 } +enum : uint { EMR_SETDIBITSTODEVICE = 80 } +enum : uint { EMR_STRETCHDIBITS = 81 } +enum : uint { EMR_EXTCREATEFONTINDIRECTW = 82 } +enum : uint { EMR_EXTTEXTOUTA = 83 } +enum : uint { EMR_EXTTEXTOUTW = 84 } +enum : uint { EMR_POLYBEZIER16 = 85 } +enum : uint { EMR_POLYGON16 = 86 } +enum : uint { EMR_POLYLINE16 = 87 } +enum : uint { EMR_POLYBEZIERTO16 = 88 } +enum : uint { EMR_POLYLINETO16 = 89 } +enum : uint { EMR_POLYPOLYLINE16 = 90 } +enum : uint { EMR_POLYPOLYGON16 = 91 } +enum : uint { EMR_POLYDRAW16 = 92 } +enum : uint { EMR_CREATEMONOBRUSH = 93 } +enum : uint { EMR_CREATEDIBPATTERNBRUSHPT = 94 } +enum : uint { EMR_EXTCREATEPEN = 95 } +enum : uint { EMR_POLYTEXTOUTA = 96 } +enum : uint { EMR_POLYTEXTOUTW = 97 } + +// #if(WINVER >= 0x0400) +enum : uint { EMR_SETICMMODE = 98 } +enum : uint { EMR_CREATECOLORSPACE = 99 } +enum : uint { EMR_SETCOLORSPACE = 100 } +enum : uint { EMR_DELETECOLORSPACE = 101 } +enum : uint { EMR_GLSRECORD = 102 } +enum : uint { EMR_GLSBOUNDEDRECORD = 103 } +enum : uint { EMR_PIXELFORMAT = 104 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { EMR_RESERVED_105 = 105 } +enum : uint { EMR_RESERVED_106 = 106 } +enum : uint { EMR_RESERVED_107 = 107 } +enum : uint { EMR_RESERVED_108 = 108 } +enum : uint { EMR_RESERVED_109 = 109 } +enum : uint { EMR_RESERVED_110 = 110 } +enum : uint { EMR_COLORCORRECTPALETTE = 111 } +enum : uint { EMR_SETICMPROFILEA = 112 } +enum : uint { EMR_SETICMPROFILEW = 113 } +enum : uint { EMR_ALPHABLEND = 114 } +enum : uint { EMR_SETLAYOUT = 115 } +enum : uint { EMR_TRANSPARENTBLT = 116 } +enum : uint { EMR_RESERVED_117 = 117 } +enum : uint { EMR_GRADIENTFILL = 118 } +enum : uint { EMR_RESERVED_119 = 119 } +enum : uint { EMR_RESERVED_120 = 120 } +enum : uint { EMR_COLORMATCHTOTARGETW = 121 } +enum : uint { EMR_CREATECOLORSPACEW = 122 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { EMR_MIN = 1 } + +// #if (WINVER >= 0x0500) +enum : uint { EMR_MAX = 122 } +// #elif (WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +struct tagEMR { + DWORD iType; + DWORD nSize; + +} +alias tagEMR EMR; +alias tagEMR* PEMR; + +struct tagEMRTEXT { + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; + +} +alias tagEMRTEXT EMRTEXT; +alias tagEMRTEXT* PEMRTEXT; + +struct tagABORTPATH { + EMR emr; +} +alias tagABORTPATH EMRABORTPATH; +alias tagABORTPATH* PEMRABORTPATH; +alias tagABORTPATH EMRBEGINPATH; +alias tagABORTPATH* PEMRBEGINPATH; +alias tagABORTPATH EMRENDPATH; +alias tagABORTPATH* PEMRENDPATH; +alias tagABORTPATH EMRCLOSEFIGURE; +alias tagABORTPATH* PEMRCLOSEFIGURE; +alias tagABORTPATH EMRFLATTENPATH; +alias tagABORTPATH* PEMRFLATTENPATH; +alias tagABORTPATH EMRWIDENPATH; +alias tagABORTPATH* PEMRWIDENPATH; +alias tagABORTPATH EMRSETMETARGN; +alias tagABORTPATH* PEMRSETMETARGN; +alias tagABORTPATH EMRSAVEDC; +alias tagABORTPATH* PEMRSAVEDC; +alias tagABORTPATH EMRREALIZEPALETTE; +alias tagABORTPATH* PEMRREALIZEPALETTE; + +struct tagEMRSELECTCLIPPATH { + EMR emr; + DWORD iMode; +} +alias tagEMRSELECTCLIPPATH EMRSELECTCLIPPATH; +alias tagEMRSELECTCLIPPATH* PEMRSELECTCLIPPATH; +alias tagEMRSELECTCLIPPATH EMRSETBKMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETBKMODE; +alias tagEMRSELECTCLIPPATH EMRSETMAPMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETMAPMODE; +alias tagEMRSELECTCLIPPATH EMRSETLAYOUT; +alias tagEMRSELECTCLIPPATH* PEMRSETLAYOUT; +alias tagEMRSELECTCLIPPATH EMRSETPOLYFILLMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETPOLYFILLMODE; +alias tagEMRSELECTCLIPPATH EMRSETROP2; +alias tagEMRSELECTCLIPPATH* PEMRSETROP2; +alias tagEMRSELECTCLIPPATH EMRSETSTRETCHBLTMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETSTRETCHBLTMODE; +alias tagEMRSELECTCLIPPATH EMRSETICMMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETICMMODE; +alias tagEMRSELECTCLIPPATH EMRSETTEXTALIGN; +alias tagEMRSELECTCLIPPATH* PEMRSETTEXTALIGN; + +struct tagEMRSETMITERLIMIT { + EMR emr; + FLOAT eMiterLimit; +} +alias tagEMRSETMITERLIMIT EMRSETMITERLIMIT; +alias tagEMRSETMITERLIMIT* PEMRSETMITERLIMIT; + +struct tagEMRRESTOREDC { + EMR emr; + LONG iRelative; +} +alias tagEMRRESTOREDC EMRRESTOREDC; +alias tagEMRRESTOREDC* PEMRRESTOREDC; + +struct tagEMRSETARCDIRECTION { + EMR emr; + DWORD iArcDirection; + +} +alias tagEMRSETARCDIRECTION EMRSETARCDIRECTION; +alias tagEMRSETARCDIRECTION* PEMRSETARCDIRECTION; + +struct tagEMRSETMAPPERFLAGS { + EMR emr; + DWORD dwFlags; +} +alias tagEMRSETMAPPERFLAGS EMRSETMAPPERFLAGS; +alias tagEMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS; + +struct tagEMRSETTEXTCOLOR { + EMR emr; + COLORREF crColor; +} +alias tagEMRSETTEXTCOLOR EMRSETBKCOLOR; +alias tagEMRSETTEXTCOLOR* PEMRSETBKCOLOR; +alias tagEMRSETTEXTCOLOR EMRSETTEXTCOLOR; +alias tagEMRSETTEXTCOLOR* PEMRSETTEXTCOLOR; + +struct tagEMRSELECTOBJECT { + EMR emr; + DWORD ihObject; +} +alias tagEMRSELECTOBJECT EMRSELECTOBJECT; +alias tagEMRSELECTOBJECT* PEMRSELECTOBJECT; +alias tagEMRSELECTOBJECT EMRDELETEOBJECT; +alias tagEMRSELECTOBJECT* PEMRDELETEOBJECT; + +struct tagEMRSELECTPALETTE { + EMR emr; + DWORD ihPal; +} +alias tagEMRSELECTPALETTE EMRSELECTPALETTE; +alias tagEMRSELECTPALETTE* PEMRSELECTPALETTE; + +struct tagEMRRESIZEPALETTE { + EMR emr; + DWORD ihPal; + DWORD cEntries; +} +alias tagEMRRESIZEPALETTE EMRRESIZEPALETTE; +alias tagEMRRESIZEPALETTE* PEMRRESIZEPALETTE; + +struct tagEMRSETPALETTEENTRIES { + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY aPalEntries[1]; +} +alias tagEMRSETPALETTEENTRIES EMRSETPALETTEENTRIES; +alias tagEMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES; + +struct tagEMRSETCOLORADJUSTMENT { + EMR emr; + COLORADJUSTMENT ColorAdjustment; +} +alias tagEMRSETCOLORADJUSTMENT EMRSETCOLORADJUSTMENT; +alias tagEMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT; + +struct tagEMRGDICOMMENT { + EMR emr; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRGDICOMMENT EMRGDICOMMENT; +alias tagEMRGDICOMMENT* PEMRGDICOMMENT; + +struct tagEMREOF { + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; + +} +alias tagEMREOF EMREOF; +alias tagEMREOF* PEMREOF; + +struct tagEMRLINETO { + EMR emr; + POINTL ptl; +} +alias tagEMRLINETO EMRLINETO; +alias tagEMRLINETO* PEMRLINETO; +alias tagEMRLINETO EMRMOVETOEX; +alias tagEMRLINETO* PEMRMOVETOEX; + +struct tagEMROFFSETCLIPRGN { + EMR emr; + POINTL ptlOffset; +} +alias tagEMROFFSETCLIPRGN EMROFFSETCLIPRGN; +alias tagEMROFFSETCLIPRGN* PEMROFFSETCLIPRGN; + +struct tagEMRFILLPATH { + EMR emr; + RECTL rclBounds; +} +alias tagEMRFILLPATH EMRFILLPATH; +alias tagEMRFILLPATH* PEMRFILLPATH; +alias tagEMRFILLPATH EMRSTROKEANDFILLPATH; +alias tagEMRFILLPATH* PEMRSTROKEANDFILLPATH; +alias tagEMRFILLPATH EMRSTROKEPATH; +alias tagEMRFILLPATH* PEMRSTROKEPATH; + +struct tagEMREXCLUDECLIPRECT { + EMR emr; + RECTL rclClip; +} +alias tagEMREXCLUDECLIPRECT EMREXCLUDECLIPRECT; +alias tagEMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT; +alias tagEMREXCLUDECLIPRECT EMRINTERSECTCLIPRECT; +alias tagEMREXCLUDECLIPRECT* PEMRINTERSECTCLIPRECT; + +struct tagEMRSETVIEWPORTORGEX { + EMR emr; + POINTL ptlOrigin; +} +alias tagEMRSETVIEWPORTORGEX EMRSETVIEWPORTORGEX; +alias tagEMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX; +alias tagEMRSETVIEWPORTORGEX EMRSETWINDOWORGEX; +alias tagEMRSETVIEWPORTORGEX* PEMRSETWINDOWORGEX; +alias tagEMRSETVIEWPORTORGEX EMRSETBRUSHORGEX; +alias tagEMRSETVIEWPORTORGEX* PEMRSETBRUSHORGEX; + +struct tagEMRSETVIEWPORTEXTEX { + EMR emr; + SIZEL szlExtent; +} +alias tagEMRSETVIEWPORTEXTEX EMRSETVIEWPORTEXTEX; +alias tagEMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX; +alias tagEMRSETVIEWPORTEXTEX EMRSETWINDOWEXTEX; +alias tagEMRSETVIEWPORTEXTEX* PEMRSETWINDOWEXTEX; + +struct tagEMRSCALEVIEWPORTEXTEX { + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; +} +alias tagEMRSCALEVIEWPORTEXTEX EMRSCALEVIEWPORTEXTEX; +alias tagEMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX; +alias tagEMRSCALEVIEWPORTEXTEX EMRSCALEWINDOWEXTEX; +alias tagEMRSCALEVIEWPORTEXTEX* PEMRSCALEWINDOWEXTEX; + +struct tagEMRSETWORLDTRANSFORM { + EMR emr; + XFORM xform; +} +alias tagEMRSETWORLDTRANSFORM EMRSETWORLDTRANSFORM; +alias tagEMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM; + +struct tagEMRMODIFYWORLDTRANSFORM { + EMR emr; + XFORM xform; + DWORD iMode; +} +alias tagEMRMODIFYWORLDTRANSFORM EMRMODIFYWORLDTRANSFORM; +alias tagEMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM; + +struct tagEMRSETPIXELV { + EMR emr; + POINTL ptlPixel; + COLORREF crColor; +} +alias tagEMRSETPIXELV EMRSETPIXELV; +alias tagEMRSETPIXELV* PEMRSETPIXELV; + +struct tagEMREXTFLOODFILL { + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; +} +alias tagEMREXTFLOODFILL EMREXTFLOODFILL; +alias tagEMREXTFLOODFILL* PEMREXTFLOODFILL; + +struct tagEMRELLIPSE { + EMR emr; + RECTL rclBox; +} +alias tagEMRELLIPSE EMRELLIPSE; +alias tagEMRELLIPSE* PEMRELLIPSE; +alias tagEMRELLIPSE EMRRECTANGLE; +alias tagEMRELLIPSE* PEMRRECTANGLE; + +struct tagEMRROUNDRECT { + EMR emr; + RECTL rclBox; + SIZEL szlCorner; +} +alias tagEMRROUNDRECT EMRROUNDRECT; +alias tagEMRROUNDRECT* PEMRROUNDRECT; + +struct tagEMRARC { + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; +} +alias tagEMRARC EMRARC; +alias tagEMRARC* PEMRARC; +alias tagEMRARC EMRARCTO; +alias tagEMRARC* PEMRARCTO; +alias tagEMRARC EMRCHORD; +alias tagEMRARC* PEMRCHORD; +alias tagEMRARC EMRPIE; +alias tagEMRARC* PEMRPIE; + +struct tagEMRANGLEARC { + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; +} +alias tagEMRANGLEARC EMRANGLEARC; +alias tagEMRANGLEARC* PEMRANGLEARC; + +struct tagEMRPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; +} +alias tagEMRPOLYLINE EMRPOLYLINE; +alias tagEMRPOLYLINE* PEMRPOLYLINE; +alias tagEMRPOLYLINE EMRPOLYBEZIER; +alias tagEMRPOLYLINE* PEMRPOLYBEZIER; +alias tagEMRPOLYLINE EMRPOLYGON; +alias tagEMRPOLYLINE* PEMRPOLYGON; +alias tagEMRPOLYLINE EMRPOLYBEZIERTO; +alias tagEMRPOLYLINE* PEMRPOLYBEZIERTO; +alias tagEMRPOLYLINE EMRPOLYLINETO; +alias tagEMRPOLYLINE* PEMRPOLYLINETO; + +struct tagEMRPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; +} +alias tagEMRPOLYLINE16 EMRPOLYLINE16; +alias tagEMRPOLYLINE16* PEMRPOLYLINE16; +alias tagEMRPOLYLINE16 EMRPOLYBEZIER16; +alias tagEMRPOLYLINE16* PEMRPOLYBEZIER16; +alias tagEMRPOLYLINE16 EMRPOLYGON16; +alias tagEMRPOLYLINE16* PEMRPOLYGON16; +alias tagEMRPOLYLINE16 EMRPOLYBEZIERTO16; +alias tagEMRPOLYLINE16* PEMRPOLYBEZIERTO16; +alias tagEMRPOLYLINE16 EMRPOLYLINETO16; +alias tagEMRPOLYLINE16* PEMRPOLYLINETO16; + +struct tagEMRPOLYDRAW { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; + BYTE abTypes[1]; +} +alias tagEMRPOLYDRAW EMRPOLYDRAW; +alias tagEMRPOLYDRAW* PEMRPOLYDRAW; + +struct tagEMRPOLYDRAW16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; + BYTE abTypes[1]; +} +alias tagEMRPOLYDRAW16 EMRPOLYDRAW16; +alias tagEMRPOLYDRAW16* PEMRPOLYDRAW16; + +struct tagEMRPOLYPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD aPolyCounts[1]; + POINTL aptl[1]; +} +alias tagEMRPOLYPOLYLINE EMRPOLYPOLYLINE; +alias tagEMRPOLYPOLYLINE* PEMRPOLYPOLYLINE; +alias tagEMRPOLYPOLYLINE EMRPOLYPOLYGON; +alias tagEMRPOLYPOLYLINE* PEMRPOLYPOLYGON; + +struct tagEMRPOLYPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD aPolyCounts[1]; + POINTS apts[1]; +} +alias tagEMRPOLYPOLYLINE16 EMRPOLYPOLYLINE16; +alias tagEMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16; +alias tagEMRPOLYPOLYLINE16 EMRPOLYPOLYGON16; +alias tagEMRPOLYPOLYLINE16* PEMRPOLYPOLYGON16; + +struct tagEMRINVERTRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE RgnData[1]; +} +alias tagEMRINVERTRGN EMRINVERTRGN; +alias tagEMRINVERTRGN* PEMRINVERTRGN; +alias tagEMRINVERTRGN EMRPAINTRGN; +alias tagEMRINVERTRGN* PEMRPAINTRGN; + +struct tagEMRFILLRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE RgnData[1]; +} +alias tagEMRFILLRGN EMRFILLRGN; +alias tagEMRFILLRGN* PEMRFILLRGN; + +struct tagEMRFRAMERGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE RgnData[1]; +} +alias tagEMRFRAMERGN EMRFRAMERGN; +alias tagEMRFRAMERGN* PEMRFRAMERGN; + +struct tagEMREXTSELECTCLIPRGN { + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE RgnData[1]; +} +alias tagEMREXTSELECTCLIPRGN EMREXTSELECTCLIPRGN; +alias tagEMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN; + +struct tagEMREXTTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; + +} +alias tagEMREXTTEXTOUTA EMREXTTEXTOUTA; +alias tagEMREXTTEXTOUTA* PEMREXTTEXTOUTA; +alias tagEMREXTTEXTOUTA EMREXTTEXTOUTW; +alias tagEMREXTTEXTOUTA* PEMREXTTEXTOUTW; + +struct tagEMRPOLYTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT aemrtext[1]; + +} +alias tagEMRPOLYTEXTOUTA EMRPOLYTEXTOUTA; +alias tagEMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA; +alias tagEMRPOLYTEXTOUTA EMRPOLYTEXTOUTW; +alias tagEMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTW; + +struct tagEMRBITBLT { + 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 tagEMRBITBLT EMRBITBLT; +alias tagEMRBITBLT* PEMRBITBLT; + +struct tagEMRSTRETCHBLT { + 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 tagEMRSTRETCHBLT EMRSTRETCHBLT; +alias tagEMRSTRETCHBLT* PEMRSTRETCHBLT; + +struct tagEMRMASKBLT { + 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 tagEMRMASKBLT EMRMASKBLT; +alias tagEMRMASKBLT* PEMRMASKBLT; + +struct tagEMRPLGBLT { + EMR emr; + RECTL rclBounds; + POINTL aptlDest[3]; + 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 tagEMRPLGBLT EMRPLGBLT; +alias tagEMRPLGBLT* PEMRPLGBLT; + +struct tagEMRSETDIBITSTODEVICE { + 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 tagEMRSETDIBITSTODEVICE EMRSETDIBITSTODEVICE; +alias tagEMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE; + +struct tagEMRSTRETCHDIBITS { + 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 tagEMRSTRETCHDIBITS EMRSTRETCHDIBITS; +alias tagEMRSTRETCHDIBITS* PEMRSTRETCHDIBITS; + +struct tagEMREXTCREATEFONTINDIRECTW { + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; +} +alias tagEMREXTCREATEFONTINDIRECTW EMREXTCREATEFONTINDIRECTW; +alias tagEMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW; + +struct tagEMRCREATEPALETTE { + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; + +} +alias tagEMRCREATEPALETTE EMRCREATEPALETTE; +alias tagEMRCREATEPALETTE* PEMRCREATEPALETTE; + +struct tagEMRCREATEPEN { + EMR emr; + DWORD ihPen; + LOGPEN lopn; +} +alias tagEMRCREATEPEN EMRCREATEPEN; +alias tagEMRCREATEPEN* PEMRCREATEPEN; + +struct tagEMREXTCREATEPEN { + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; +} +alias tagEMREXTCREATEPEN EMREXTCREATEPEN; +alias tagEMREXTCREATEPEN* PEMREXTCREATEPEN; + +struct tagEMRCREATEBRUSHINDIRECT { + EMR emr; + DWORD ihBrush; + LOGBRUSH32 lb; + +} +alias tagEMRCREATEBRUSHINDIRECT EMRCREATEBRUSHINDIRECT; +alias tagEMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT; + +struct tagEMRCREATEMONOBRUSH { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} +alias tagEMRCREATEMONOBRUSH EMRCREATEMONOBRUSH; +alias tagEMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH; + +struct tagEMRCREATEDIBPATTERNBRUSHPT { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + + DWORD offBits; + DWORD cbBits; +} +alias tagEMRCREATEDIBPATTERNBRUSHPT EMRCREATEDIBPATTERNBRUSHPT; +alias tagEMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT; + +struct tagEMRFORMAT { + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; + +} +alias tagEMRFORMAT EMRFORMAT; +alias tagEMRFORMAT* PEMRFORMAT; + +// #if(WINVER >= 0x0400) + +struct tagEMRGLSRECORD { + EMR emr; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRGLSRECORD EMRGLSRECORD; +alias tagEMRGLSRECORD* PEMRGLSRECORD; + +struct tagEMRGLSBOUNDEDRECORD { + EMR emr; + RECTL rclBounds; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRGLSBOUNDEDRECORD EMRGLSBOUNDEDRECORD; +alias tagEMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD; + +struct tagEMRPIXELFORMAT { + EMR emr; + PIXELFORMATDESCRIPTOR pfd; +} +alias tagEMRPIXELFORMAT EMRPIXELFORMAT; +alias tagEMRPIXELFORMAT* PEMRPIXELFORMAT; + +struct tagEMRCREATECOLORSPACE { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEA lcs; +} +alias tagEMRCREATECOLORSPACE EMRCREATECOLORSPACE; +alias tagEMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; + +struct tagEMRSETCOLORSPACE { + EMR emr; + DWORD ihCS; +} +alias tagEMRSETCOLORSPACE EMRSETCOLORSPACE; +alias tagEMRSETCOLORSPACE* PEMRSETCOLORSPACE; +alias tagEMRSETCOLORSPACE EMRSELECTCOLORSPACE; +alias tagEMRSETCOLORSPACE* PEMRSELECTCOLORSPACE; +alias tagEMRSETCOLORSPACE EMRDELETECOLORSPACE; +alias tagEMRSETCOLORSPACE* PEMRDELETECOLORSPACE; + +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) + +struct tagEMREXTESCAPE { + EMR emr; + INT iEscape; + INT cbEscData; + BYTE EscData[1]; +} +alias tagEMREXTESCAPE EMREXTESCAPE; +alias tagEMREXTESCAPE* PEMREXTESCAPE; +alias tagEMREXTESCAPE EMRDRAWESCAPE; +alias tagEMREXTESCAPE* PEMRDRAWESCAPE; + +struct tagEMRNAMEDESCAPE { + EMR emr; + INT iEscape; + INT cbDriver; + INT cbEscData; + BYTE EscData[1]; +} +alias tagEMRNAMEDESCAPE EMRNAMEDESCAPE; +alias tagEMRNAMEDESCAPE* PEMRNAMEDESCAPE; + +enum : uint { SETICMPROFILE_EMBEDED = 0x00000001 } + +struct tagEMRSETICMPROFILE { + EMR emr; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRSETICMPROFILE EMRSETICMPROFILE; +alias tagEMRSETICMPROFILE* PEMRSETICMPROFILE; +alias tagEMRSETICMPROFILE EMRSETICMPROFILEA; +alias tagEMRSETICMPROFILE* PEMRSETICMPROFILEA; +alias tagEMRSETICMPROFILE EMRSETICMPROFILEW; +alias tagEMRSETICMPROFILE* PEMRSETICMPROFILEW; + +enum : uint { CREATECOLORSPACE_EMBEDED = 0x00000001 } + +struct tagEMRCREATECOLORSPACEW { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; + DWORD dwFlags; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRCREATECOLORSPACEW EMRCREATECOLORSPACEW; +alias tagEMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; + +enum : uint { COLORMATCHTOTARGET_EMBEDED = 0x00000001 } + +struct tagCOLORMATCHTOTARGET { + EMR emr; + DWORD dwAction; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE Data[1]; +} +alias tagCOLORMATCHTOTARGET EMRCOLORMATCHTOTARGET; +alias tagCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; + +struct tagCOLORCORRECTPALETTE { + EMR emr; + DWORD ihPalette; + DWORD nFirstEntry; + DWORD nPalEntries; + DWORD nReserved; +} +alias tagCOLORCORRECTPALETTE EMRCOLORCORRECTPALETTE; +alias tagCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; + +struct tagEMRALPHABLEND { + 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 tagEMRALPHABLEND EMRALPHABLEND; +alias tagEMRALPHABLEND* PEMRALPHABLEND; + +struct tagEMRGRADIENTFILL { + EMR emr; + RECTL rclBounds; + DWORD nVer; + DWORD nTri; + ULONG ulMode; + TRIVERTEX Ver[1]; +} +alias tagEMRGRADIENTFILL EMRGRADIENTFILL; +alias tagEMRGRADIENTFILL* PEMRGRADIENTFILL; + +struct tagEMRTRANSPARENTBLT { + 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 tagEMRTRANSPARENTBLT EMRTRANSPARENTBLT; +alias tagEMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { GDICOMMENT_IDENTIFIER = 0x43494447 } +enum : uint { GDICOMMENT_WINDOWS_METAFILE = 0x80000001 } +enum : uint { GDICOMMENT_BEGINGROUP = 0x00000002 } +enum : uint { GDICOMMENT_ENDGROUP = 0x00000003 } +enum : uint { GDICOMMENT_MULTIFORMATS = 0x40000004 } +enum : uint { EPS_SIGNATURE = 0x46535045 } +enum : uint { GDICOMMENT_UNICODE_STRING = 0x00000040 } +enum : uint { GDICOMMENT_UNICODE_END = 0x00000080 } + +// #endif /* NOMETAFILE */ + +extern(Windows) export BOOL wglCopyContext(HGLRC, HGLRC, UINT); +extern(Windows) export HGLRC wglCreateContext(HDC); +extern(Windows) export HGLRC wglCreateLayerContext(HDC, int); +extern(Windows) export BOOL wglDeleteContext(HGLRC); +extern(Windows) export HGLRC wglGetCurrentContext(); +extern(Windows) export HDC wglGetCurrentDC(); +extern(Windows) export PROC wglGetProcAddress(LPCSTR); +extern(Windows) export BOOL wglMakeCurrent(HDC, HGLRC); +extern(Windows) export BOOL wglShareLists(HGLRC, HGLRC); +extern(Windows) export BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); +extern(Windows) export BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); +// #ifdef UNICODE +// #... +// #else +alias wglUseFontBitmapsA wglUseFontBitmaps; +// #endif // !UNICODE +extern(Windows) export BOOL SwapBuffers(HDC); + +struct _POINTFLOAT { + FLOAT x; + FLOAT y; +} +alias _POINTFLOAT POINTFLOAT; +alias _POINTFLOAT* PPOINTFLOAT; + +struct _GLYPHMETRICSFLOAT { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; +} +alias _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT; +alias _GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT; +alias _GLYPHMETRICSFLOAT* LPGLYPHMETRICSFLOAT; + +enum : uint { WGL_FONT_LINES = 0 } +enum : uint { WGL_FONT_POLYGONS = 1 } +extern(Windows) export BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, + FLOAT, int, LPGLYPHMETRICSFLOAT); +extern(Windows) export BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, + FLOAT, int, LPGLYPHMETRICSFLOAT); +// #ifdef UNICODE +// #... +// #else +alias wglUseFontOutlinesA wglUseFontOutlines; +// #endif // !UNICODE + +struct tagLAYERPLANEDESCRIPTOR { + 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 tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR; +alias tagLAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR; +alias tagLAYERPLANEDESCRIPTOR* LPLAYERPLANEDESCRIPTOR; + +enum : uint { LPD_DOUBLEBUFFER = 0x00000001 } +enum : uint { LPD_STEREO = 0x00000002 } +enum : uint { LPD_SUPPORT_GDI = 0x00000010 } +enum : uint { LPD_SUPPORT_OPENGL = 0x00000020 } +enum : uint { LPD_SHARE_DEPTH = 0x00000040 } +enum : uint { LPD_SHARE_STENCIL = 0x00000080 } +enum : uint { LPD_SHARE_ACCUM = 0x00000100 } +enum : uint { LPD_SWAP_EXCHANGE = 0x00000200 } +enum : uint { LPD_SWAP_COPY = 0x00000400 } +enum : uint { LPD_TRANSPARENT = 0x00001000 } + +enum : uint { LPD_TYPE_RGBA = 0 } +enum : uint { LPD_TYPE_COLORINDEX = 1 } + +enum : uint { WGL_SWAP_MAIN_PLANE = 0x00000001 } +enum : uint { WGL_SWAP_OVERLAY1 = 0x00000002 } +enum : uint { WGL_SWAP_OVERLAY2 = 0x00000004 } +enum : uint { WGL_SWAP_OVERLAY3 = 0x00000008 } +enum : uint { WGL_SWAP_OVERLAY4 = 0x00000010 } +enum : uint { WGL_SWAP_OVERLAY5 = 0x00000020 } +enum : uint { WGL_SWAP_OVERLAY6 = 0x00000040 } +enum : uint { WGL_SWAP_OVERLAY7 = 0x00000080 } +enum : uint { WGL_SWAP_OVERLAY8 = 0x00000100 } +enum : uint { WGL_SWAP_OVERLAY9 = 0x00000200 } +enum : uint { WGL_SWAP_OVERLAY10 = 0x00000400 } +enum : uint { WGL_SWAP_OVERLAY11 = 0x00000800 } +enum : uint { WGL_SWAP_OVERLAY12 = 0x00001000 } +enum : uint { WGL_SWAP_OVERLAY13 = 0x00002000 } +enum : uint { WGL_SWAP_OVERLAY14 = 0x00004000 } +enum : uint { WGL_SWAP_OVERLAY15 = 0x00008000 } +enum : uint { WGL_SWAP_UNDERLAY1 = 0x00010000 } +enum : uint { WGL_SWAP_UNDERLAY2 = 0x00020000 } +enum : uint { WGL_SWAP_UNDERLAY3 = 0x00040000 } +enum : uint { WGL_SWAP_UNDERLAY4 = 0x00080000 } +enum : uint { WGL_SWAP_UNDERLAY5 = 0x00100000 } +enum : uint { WGL_SWAP_UNDERLAY6 = 0x00200000 } +enum : uint { WGL_SWAP_UNDERLAY7 = 0x00400000 } +enum : uint { WGL_SWAP_UNDERLAY8 = 0x00800000 } +enum : uint { WGL_SWAP_UNDERLAY9 = 0x01000000 } +enum : uint { WGL_SWAP_UNDERLAY10 = 0x02000000 } +enum : uint { WGL_SWAP_UNDERLAY11 = 0x04000000 } +enum : uint { WGL_SWAP_UNDERLAY12 = 0x08000000 } +enum : uint { WGL_SWAP_UNDERLAY13 = 0x10000000 } +enum : uint { WGL_SWAP_UNDERLAY14 = 0x20000000 } +enum : uint { WGL_SWAP_UNDERLAY15 = 0x40000000 } + +extern(Windows) export BOOL wglDescribeLayerPlane(HDC, int, int, UINT, + LPLAYERPLANEDESCRIPTOR); +extern(Windows) export int wglSetLayerPaletteEntries(HDC, int, int, int, + COLORREF *); +extern(Windows) export int wglGetLayerPaletteEntries(HDC, int, int, int, + COLORREF *); +extern(Windows) export BOOL wglRealizeLayerPalette(HDC, int, BOOL); +extern(Windows) export BOOL wglSwapLayerBuffers(HDC, UINT); + +// #if (WINVER >= 0x0500) + +struct _WGLSWAP { + HDC hdc; + UINT uiFlags; +} +alias _WGLSWAP WGLSWAP; +alias _WGLSWAP* PWGLSWAP; +alias _WGLSWAP* LPWGLSWAP; + +enum : uint { WGL_SWAPMULTIPLE_MAX = 16 } + +extern(Windows) export DWORD wglSwapMultipleBuffers(UINT, WGLSWAP *); + +// #endif // (WINVER >= 0x0500) + +// #endif /* NOGDI */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif /* _WINGDI_ */ + ADDED src/win32/ansi/winnls.d Index: src/win32/ansi/winnls.d ================================================================== --- src/win32/ansi/winnls.d +++ src/win32/ansi/winnls.d @@ -0,0 +1,1192 @@ +module win32.ansi.winnls; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winbase; + +// #ifndef _WINNLS_ +// #define _WINNLS_ + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef NONLS + +// #ifdef _MAC +// #... +// #endif + +enum : uint { MAX_LEADBYTES = 12 } +enum : uint { MAX_DEFAULTCHAR = 2 } + +enum : uint { MB_PRECOMPOSED = 0x00000001 } +enum : uint { MB_COMPOSITE = 0x00000002 } +enum : uint { MB_USEGLYPHCHARS = 0x00000004 } +enum : uint { MB_ERR_INVALID_CHARS = 0x00000008 } + +enum : uint { WC_COMPOSITECHECK = 0x00000200 } +enum : uint { WC_DISCARDNS = 0x00000010 } +enum : uint { WC_SEPCHARS = 0x00000020 } +enum : uint { WC_DEFAULTCHAR = 0x00000040 } + +// #if(WINVER >= 0x0500) +enum : uint { WC_NO_BEST_FIT_CHARS = 0x00000400 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { CT_CTYPE1 = 0x00000001 } +enum : uint { CT_CTYPE2 = 0x00000002 } +enum : uint { CT_CTYPE3 = 0x00000004 } + +enum : uint { C1_UPPER = 0x0001 } +enum : uint { C1_LOWER = 0x0002 } +enum : uint { C1_DIGIT = 0x0004 } +enum : uint { C1_SPACE = 0x0008 } +enum : uint { C1_PUNCT = 0x0010 } +enum : uint { C1_CNTRL = 0x0020 } +enum : uint { C1_BLANK = 0x0040 } +enum : uint { C1_XDIGIT = 0x0080 } +enum : uint { C1_ALPHA = 0x0100 } +enum : uint { C1_DEFINED = 0x0200 } + +enum : uint { C2_LEFTTORIGHT = 0x0001 } +enum : uint { C2_RIGHTTOLEFT = 0x0002 } + +enum : uint { C2_EUROPENUMBER = 0x0003 } +enum : uint { C2_EUROPESEPARATOR = 0x0004 } +enum : uint { C2_EUROPETERMINATOR = 0x0005 } +enum : uint { C2_ARABICNUMBER = 0x0006 } +enum : uint { C2_COMMONSEPARATOR = 0x0007 } + +enum : uint { C2_BLOCKSEPARATOR = 0x0008 } +enum : uint { C2_SEGMENTSEPARATOR = 0x0009 } +enum : uint { C2_WHITESPACE = 0x000A } +enum : uint { C2_OTHERNEUTRAL = 0x000B } + +enum : uint { C2_NOTAPPLICABLE = 0x0000 } + +enum : uint { C3_NONSPACING = 0x0001 } +enum : uint { C3_DIACRITIC = 0x0002 } +enum : uint { C3_VOWELMARK = 0x0004 } +enum : uint { C3_SYMBOL = 0x0008 } + +enum : uint { C3_KATAKANA = 0x0010 } +enum : uint { C3_HIRAGANA = 0x0020 } +enum : uint { C3_HALFWIDTH = 0x0040 } +enum : uint { C3_FULLWIDTH = 0x0080 } +enum : uint { C3_IDEOGRAPH = 0x0100 } +enum : uint { C3_KASHIDA = 0x0200 } +enum : uint { C3_LEXICAL = 0x0400 } + +enum : uint { C3_ALPHA = 0x8000 } + +enum : uint { C3_NOTAPPLICABLE = 0x0000 } + +enum : uint { NORM_IGNORECASE = 0x00000001 } +enum : uint { NORM_IGNORENONSPACE = 0x00000002 } +enum : uint { NORM_IGNORESYMBOLS = 0x00000004 } + +enum : uint { NORM_IGNOREKANATYPE = 0x00010000 } +enum : uint { NORM_IGNOREWIDTH = 0x00020000 } + +enum : uint { MAP_FOLDCZONE = 0x00000010 } +enum : uint { MAP_PRECOMPOSED = 0x00000020 } +enum : uint { MAP_COMPOSITE = 0x00000040 } +enum : uint { MAP_FOLDDIGITS = 0x00000080 } + +// #if(WINVER >= 0x0500) +enum : uint { MAP_EXPAND_LIGATURES = 0x00002000 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { LCMAP_LOWERCASE = 0x00000100 } +enum : uint { LCMAP_UPPERCASE = 0x00000200 } +enum : uint { LCMAP_SORTKEY = 0x00000400 } +enum : uint { LCMAP_BYTEREV = 0x00000800 } + +enum : uint { LCMAP_HIRAGANA = 0x00100000 } +enum : uint { LCMAP_KATAKANA = 0x00200000 } +enum : uint { LCMAP_HALFWIDTH = 0x00400000 } +enum : uint { LCMAP_FULLWIDTH = 0x00800000 } + +enum : uint { LCMAP_LINGUISTIC_CASING = 0x01000000 } + +enum : uint { LCMAP_SIMPLIFIED_CHINESE = 0x02000000 } +enum : uint { LCMAP_TRADITIONAL_CHINESE = 0x04000000 } + +enum : uint { LGRPID_INSTALLED = 0x00000001 } +enum : uint { LGRPID_SUPPORTED = 0x00000002 } + +enum : uint { LCID_INSTALLED = 0x00000001 } +enum : uint { LCID_SUPPORTED = 0x00000002 } +enum : uint { LCID_ALTERNATE_SORTS = 0x00000004 } + +enum : uint { CP_INSTALLED = 0x00000001 } +enum : uint { CP_SUPPORTED = 0x00000002 } + +enum : uint { SORT_STRINGSORT = 0x00001000 } + +enum : uint { CSTR_LESS_THAN = 1 } +enum : uint { CSTR_EQUAL = 2 } +enum : uint { CSTR_GREATER_THAN = 3 } + +enum : uint { CP_ACP = 0 } +enum : uint { CP_OEMCP = 1 } +enum : uint { CP_MACCP = 2 } +enum : uint { CP_THREAD_ACP = 3 } +enum : uint { CP_SYMBOL = 42 } + +enum : uint { CP_UTF7 = 65000 } +enum : uint { CP_UTF8 = 65001 } + +enum : uint { CTRY_DEFAULT = 0 } + +enum : uint { CTRY_ALBANIA = 355 } +enum : uint { CTRY_ALGERIA = 213 } +enum : uint { CTRY_ARGENTINA = 54 } +enum : uint { CTRY_ARMENIA = 374 } +enum : uint { CTRY_AUSTRALIA = 61 } +enum : uint { CTRY_AUSTRIA = 43 } +enum : uint { CTRY_AZERBAIJAN = 994 } +enum : uint { CTRY_BAHRAIN = 973 } +enum : uint { CTRY_BELARUS = 375 } +enum : uint { CTRY_BELGIUM = 32 } +enum : uint { CTRY_BELIZE = 501 } +enum : uint { CTRY_BOLIVIA = 591 } +enum : uint { CTRY_BRAZIL = 55 } +enum : uint { CTRY_BRUNEI_DARUSSALAM = 673 } +enum : uint { CTRY_BULGARIA = 359 } +enum : uint { CTRY_CANADA = 2 } +enum : uint { CTRY_CARIBBEAN = 1 } +enum : uint { CTRY_CHILE = 56 } +enum : uint { CTRY_COLOMBIA = 57 } +enum : uint { CTRY_COSTA_RICA = 506 } +enum : uint { CTRY_CROATIA = 385 } +enum : uint { CTRY_CZECH = 420 } +enum : uint { CTRY_DENMARK = 45 } +enum : uint { CTRY_DOMINICAN_REPUBLIC = 1 } +enum : uint { CTRY_ECUADOR = 593 } +enum : uint { CTRY_EGYPT = 20 } +enum : uint { CTRY_EL_SALVADOR = 503 } +enum : uint { CTRY_ESTONIA = 372 } +enum : uint { CTRY_FAEROE_ISLANDS = 298 } +enum : uint { CTRY_FINLAND = 358 } +enum : uint { CTRY_FRANCE = 33 } +enum : uint { CTRY_GEORGIA = 995 } +enum : uint { CTRY_GERMANY = 49 } +enum : uint { CTRY_GREECE = 30 } +enum : uint { CTRY_GUATEMALA = 502 } +enum : uint { CTRY_HONDURAS = 504 } +enum : uint { CTRY_HONG_KONG = 852 } +enum : uint { CTRY_HUNGARY = 36 } +enum : uint { CTRY_ICELAND = 354 } +enum : uint { CTRY_INDIA = 91 } +enum : uint { CTRY_INDONESIA = 62 } +enum : uint { CTRY_IRAN = 981 } +enum : uint { CTRY_IRAQ = 964 } +enum : uint { CTRY_IRELAND = 353 } +enum : uint { CTRY_ISRAEL = 972 } +enum : uint { CTRY_ITALY = 39 } +enum : uint { CTRY_JAMAICA = 1 } +enum : uint { CTRY_JAPAN = 81 } +enum : uint { CTRY_JORDAN = 962 } +enum : uint { CTRY_KAZAKSTAN = 7 } +enum : uint { CTRY_KENYA = 254 } +enum : uint { CTRY_KUWAIT = 965 } +enum : uint { CTRY_KYRGYZSTAN = 996 } +enum : uint { CTRY_LATVIA = 371 } +enum : uint { CTRY_LEBANON = 961 } +enum : uint { CTRY_LIBYA = 218 } +enum : uint { CTRY_LIECHTENSTEIN = 41 } +enum : uint { CTRY_LITHUANIA = 370 } +enum : uint { CTRY_LUXEMBOURG = 352 } +enum : uint { CTRY_MACAU = 853 } +enum : uint { CTRY_MACEDONIA = 389 } +enum : uint { CTRY_MALAYSIA = 60 } +enum : uint { CTRY_MALDIVES = 960 } +enum : uint { CTRY_MEXICO = 52 } +enum : uint { CTRY_MONACO = 33 } +enum : uint { CTRY_MONGOLIA = 976 } +enum : uint { CTRY_MOROCCO = 212 } +enum : uint { CTRY_NETHERLANDS = 31 } +enum : uint { CTRY_NEW_ZEALAND = 64 } +enum : uint { CTRY_NICARAGUA = 505 } +enum : uint { CTRY_NORWAY = 47 } +enum : uint { CTRY_OMAN = 968 } +enum : uint { CTRY_PAKISTAN = 92 } +enum : uint { CTRY_PANAMA = 507 } +enum : uint { CTRY_PARAGUAY = 595 } +enum : uint { CTRY_PERU = 51 } +enum : uint { CTRY_PHILIPPINES = 63 } +enum : uint { CTRY_POLAND = 48 } +enum : uint { CTRY_PORTUGAL = 351 } +enum : uint { CTRY_PRCHINA = 86 } +enum : uint { CTRY_PUERTO_RICO = 1 } +enum : uint { CTRY_QATAR = 974 } +enum : uint { CTRY_ROMANIA = 40 } +enum : uint { CTRY_RUSSIA = 7 } +enum : uint { CTRY_SAUDI_ARABIA = 966 } +enum : uint { CTRY_SERBIA = 381 } +enum : uint { CTRY_SINGAPORE = 65 } +enum : uint { CTRY_SLOVAK = 421 } +enum : uint { CTRY_SLOVENIA = 386 } +enum : uint { CTRY_SOUTH_AFRICA = 27 } +enum : uint { CTRY_SOUTH_KOREA = 82 } +enum : uint { CTRY_SPAIN = 34 } +enum : uint { CTRY_SWEDEN = 46 } +enum : uint { CTRY_SWITZERLAND = 41 } +enum : uint { CTRY_SYRIA = 963 } +enum : uint { CTRY_TAIWAN = 886 } +enum : uint { CTRY_TATARSTAN = 7 } +enum : uint { CTRY_THAILAND = 66 } +enum : uint { CTRY_TRINIDAD_Y_TOBAGO = 1 } +enum : uint { CTRY_TUNISIA = 216 } +enum : uint { CTRY_TURKEY = 90 } +enum : uint { CTRY_UAE = 971 } +enum : uint { CTRY_UKRAINE = 380 } +enum : uint { CTRY_UNITED_KINGDOM = 44 } +enum : uint { CTRY_UNITED_STATES = 1 } +enum : uint { CTRY_URUGUAY = 598 } +enum : uint { CTRY_UZBEKISTAN = 7 } +enum : uint { CTRY_VENEZUELA = 58 } +enum : uint { CTRY_VIET_NAM = 84 } +enum : uint { CTRY_YEMEN = 967 } +enum : uint { CTRY_ZIMBABWE = 263 } + +enum : uint { LOCALE_NOUSEROVERRIDE = 0x80000000 } +enum : uint { LOCALE_USE_CP_ACP = 0x40000000 } + +// #if(WINVER >= 0x0400) +enum : uint { LOCALE_RETURN_NUMBER = 0x20000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { LOCALE_ILANGUAGE = 0x00000001 } +enum : uint { LOCALE_SLANGUAGE = 0x00000002 } +enum : uint { LOCALE_SENGLANGUAGE = 0x00001001 } +enum : uint { LOCALE_SABBREVLANGNAME = 0x00000003 } +enum : uint { LOCALE_SNATIVELANGNAME = 0x00000004 } + +enum : uint { LOCALE_ICOUNTRY = 0x00000005 } +enum : uint { LOCALE_SCOUNTRY = 0x00000006 } +enum : uint { LOCALE_SENGCOUNTRY = 0x00001002 } +enum : uint { LOCALE_SABBREVCTRYNAME = 0x00000007 } +enum : uint { LOCALE_SNATIVECTRYNAME = 0x00000008 } + +enum : uint { LOCALE_IDEFAULTLANGUAGE = 0x00000009 } +enum : uint { LOCALE_IDEFAULTCOUNTRY = 0x0000000A } +enum : uint { LOCALE_IDEFAULTCODEPAGE = 0x0000000B } +enum : uint { LOCALE_IDEFAULTANSICODEPAGE = 0x00001004 } +enum : uint { LOCALE_IDEFAULTMACCODEPAGE = 0x00001011 } + +enum : uint { LOCALE_SLIST = 0x0000000C } +enum : uint { LOCALE_IMEASURE = 0x0000000D } + +enum : uint { LOCALE_SDECIMAL = 0x0000000E } +enum : uint { LOCALE_STHOUSAND = 0x0000000F } +enum : uint { LOCALE_SGROUPING = 0x00000010 } +enum : uint { LOCALE_IDIGITS = 0x00000011 } +enum : uint { LOCALE_ILZERO = 0x00000012 } +enum : uint { LOCALE_INEGNUMBER = 0x00001010 } +enum : uint { LOCALE_SNATIVEDIGITS = 0x00000013 } + +enum : uint { LOCALE_SCURRENCY = 0x00000014 } +enum : uint { LOCALE_SINTLSYMBOL = 0x00000015 } +enum : uint { LOCALE_SMONDECIMALSEP = 0x00000016 } +enum : uint { LOCALE_SMONTHOUSANDSEP = 0x00000017 } +enum : uint { LOCALE_SMONGROUPING = 0x00000018 } +enum : uint { LOCALE_ICURRDIGITS = 0x00000019 } +enum : uint { LOCALE_IINTLCURRDIGITS = 0x0000001A } +enum : uint { LOCALE_ICURRENCY = 0x0000001B } +enum : uint { LOCALE_INEGCURR = 0x0000001C } + +enum : uint { LOCALE_SDATE = 0x0000001D } +enum : uint { LOCALE_STIME = 0x0000001E } +enum : uint { LOCALE_SSHORTDATE = 0x0000001F } +enum : uint { LOCALE_SLONGDATE = 0x00000020 } +enum : uint { LOCALE_STIMEFORMAT = 0x00001003 } +enum : uint { LOCALE_IDATE = 0x00000021 } +enum : uint { LOCALE_ILDATE = 0x00000022 } +enum : uint { LOCALE_ITIME = 0x00000023 } +enum : uint { LOCALE_ITIMEMARKPOSN = 0x00001005 } +enum : uint { LOCALE_ICENTURY = 0x00000024 } +enum : uint { LOCALE_ITLZERO = 0x00000025 } +enum : uint { LOCALE_IDAYLZERO = 0x00000026 } +enum : uint { LOCALE_IMONLZERO = 0x00000027 } +enum : uint { LOCALE_S1159 = 0x00000028 } +enum : uint { LOCALE_S2359 = 0x00000029 } + +enum : uint { LOCALE_ICALENDARTYPE = 0x00001009 } +enum : uint { LOCALE_IOPTIONALCALENDAR = 0x0000100B } +enum : uint { LOCALE_IFIRSTDAYOFWEEK = 0x0000100C } +enum : uint { LOCALE_IFIRSTWEEKOFYEAR = 0x0000100D } + +enum : uint { LOCALE_SDAYNAME1 = 0x0000002A } +enum : uint { LOCALE_SDAYNAME2 = 0x0000002B } +enum : uint { LOCALE_SDAYNAME3 = 0x0000002C } +enum : uint { LOCALE_SDAYNAME4 = 0x0000002D } +enum : uint { LOCALE_SDAYNAME5 = 0x0000002E } +enum : uint { LOCALE_SDAYNAME6 = 0x0000002F } +enum : uint { LOCALE_SDAYNAME7 = 0x00000030 } +enum : uint { LOCALE_SABBREVDAYNAME1 = 0x00000031 } +enum : uint { LOCALE_SABBREVDAYNAME2 = 0x00000032 } +enum : uint { LOCALE_SABBREVDAYNAME3 = 0x00000033 } +enum : uint { LOCALE_SABBREVDAYNAME4 = 0x00000034 } +enum : uint { LOCALE_SABBREVDAYNAME5 = 0x00000035 } +enum : uint { LOCALE_SABBREVDAYNAME6 = 0x00000036 } +enum : uint { LOCALE_SABBREVDAYNAME7 = 0x00000037 } +enum : uint { LOCALE_SMONTHNAME1 = 0x00000038 } +enum : uint { LOCALE_SMONTHNAME2 = 0x00000039 } +enum : uint { LOCALE_SMONTHNAME3 = 0x0000003A } +enum : uint { LOCALE_SMONTHNAME4 = 0x0000003B } +enum : uint { LOCALE_SMONTHNAME5 = 0x0000003C } +enum : uint { LOCALE_SMONTHNAME6 = 0x0000003D } +enum : uint { LOCALE_SMONTHNAME7 = 0x0000003E } +enum : uint { LOCALE_SMONTHNAME8 = 0x0000003F } +enum : uint { LOCALE_SMONTHNAME9 = 0x00000040 } +enum : uint { LOCALE_SMONTHNAME10 = 0x00000041 } +enum : uint { LOCALE_SMONTHNAME11 = 0x00000042 } +enum : uint { LOCALE_SMONTHNAME12 = 0x00000043 } +enum : uint { LOCALE_SMONTHNAME13 = 0x0000100E } +enum : uint { LOCALE_SABBREVMONTHNAME1 = 0x00000044 } +enum : uint { LOCALE_SABBREVMONTHNAME2 = 0x00000045 } +enum : uint { LOCALE_SABBREVMONTHNAME3 = 0x00000046 } +enum : uint { LOCALE_SABBREVMONTHNAME4 = 0x00000047 } +enum : uint { LOCALE_SABBREVMONTHNAME5 = 0x00000048 } +enum : uint { LOCALE_SABBREVMONTHNAME6 = 0x00000049 } +enum : uint { LOCALE_SABBREVMONTHNAME7 = 0x0000004A } +enum : uint { LOCALE_SABBREVMONTHNAME8 = 0x0000004B } +enum : uint { LOCALE_SABBREVMONTHNAME9 = 0x0000004C } +enum : uint { LOCALE_SABBREVMONTHNAME10 = 0x0000004D } +enum : uint { LOCALE_SABBREVMONTHNAME11 = 0x0000004E } +enum : uint { LOCALE_SABBREVMONTHNAME12 = 0x0000004F } +enum : uint { LOCALE_SABBREVMONTHNAME13 = 0x0000100F } + +enum : uint { LOCALE_SPOSITIVESIGN = 0x00000050 } +enum : uint { LOCALE_SNEGATIVESIGN = 0x00000051 } +enum : uint { LOCALE_IPOSSIGNPOSN = 0x00000052 } +enum : uint { LOCALE_INEGSIGNPOSN = 0x00000053 } +enum : uint { LOCALE_IPOSSYMPRECEDES = 0x00000054 } +enum : uint { LOCALE_IPOSSEPBYSPACE = 0x00000055 } +enum : uint { LOCALE_INEGSYMPRECEDES = 0x00000056 } +enum : uint { LOCALE_INEGSEPBYSPACE = 0x00000057 } + +// #if(WINVER >= 0x0400) +enum : uint { LOCALE_FONTSIGNATURE = 0x00000058 } +enum : uint { LOCALE_SISO639LANGNAME = 0x00000059 } +enum : uint { LOCALE_SISO3166CTRYNAME = 0x0000005A } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { LOCALE_IDEFAULTEBCDICCODEPAGE = 0x00001012 } +enum : uint { LOCALE_IPAPERSIZE = 0x0000100A } +enum : uint { LOCALE_SENGCURRNAME = 0x00001007 } +enum : uint { LOCALE_SNATIVECURRNAME = 0x00001008 } +enum : uint { LOCALE_SYEARMONTH = 0x00001006 } +enum : uint { LOCALE_SSORTNAME = 0x00001013 } +enum : uint { LOCALE_IDIGITSUBSTITUTION = 0x00001014 } + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { TIME_NOMINUTESORSECONDS = 0x00000001 } +enum : uint { TIME_NOSECONDS = 0x00000002 } +enum : uint { TIME_NOTIMEMARKER = 0x00000004 } +enum : uint { TIME_FORCE24HOURFORMAT = 0x00000008 } + +enum : uint { DATE_SHORTDATE = 0x00000001 } +enum : uint { DATE_LONGDATE = 0x00000002 } +enum : uint { DATE_USE_ALT_CALENDAR = 0x00000004 } + +// #if(WINVER >= 0x0500) +enum : uint { DATE_YEARMONTH = 0x00000008 } +enum : uint { DATE_LTRREADING = 0x00000010 } +enum : uint { DATE_RTLREADING = 0x00000020 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) +alias LOCALE_NOUSEROVERRIDE CAL_NOUSEROVERRIDE; +alias LOCALE_USE_CP_ACP CAL_USE_CP_ACP; +alias LOCALE_RETURN_NUMBER CAL_RETURN_NUMBER; +// #endif /* WINVER >= 0x0500 */ + +enum : uint { CAL_ICALINTVALUE = 0x00000001 } +enum : uint { CAL_SCALNAME = 0x00000002 } +enum : uint { CAL_IYEAROFFSETRANGE = 0x00000003 } +enum : uint { CAL_SERASTRING = 0x00000004 } +enum : uint { CAL_SSHORTDATE = 0x00000005 } +enum : uint { CAL_SLONGDATE = 0x00000006 } +enum : uint { CAL_SDAYNAME1 = 0x00000007 } +enum : uint { CAL_SDAYNAME2 = 0x00000008 } +enum : uint { CAL_SDAYNAME3 = 0x00000009 } +enum : uint { CAL_SDAYNAME4 = 0x0000000a } +enum : uint { CAL_SDAYNAME5 = 0x0000000b } +enum : uint { CAL_SDAYNAME6 = 0x0000000c } +enum : uint { CAL_SDAYNAME7 = 0x0000000d } +enum : uint { CAL_SABBREVDAYNAME1 = 0x0000000e } +enum : uint { CAL_SABBREVDAYNAME2 = 0x0000000f } +enum : uint { CAL_SABBREVDAYNAME3 = 0x00000010 } +enum : uint { CAL_SABBREVDAYNAME4 = 0x00000011 } +enum : uint { CAL_SABBREVDAYNAME5 = 0x00000012 } +enum : uint { CAL_SABBREVDAYNAME6 = 0x00000013 } +enum : uint { CAL_SABBREVDAYNAME7 = 0x00000014 } +enum : uint { CAL_SMONTHNAME1 = 0x00000015 } +enum : uint { CAL_SMONTHNAME2 = 0x00000016 } +enum : uint { CAL_SMONTHNAME3 = 0x00000017 } +enum : uint { CAL_SMONTHNAME4 = 0x00000018 } +enum : uint { CAL_SMONTHNAME5 = 0x00000019 } +enum : uint { CAL_SMONTHNAME6 = 0x0000001a } +enum : uint { CAL_SMONTHNAME7 = 0x0000001b } +enum : uint { CAL_SMONTHNAME8 = 0x0000001c } +enum : uint { CAL_SMONTHNAME9 = 0x0000001d } +enum : uint { CAL_SMONTHNAME10 = 0x0000001e } +enum : uint { CAL_SMONTHNAME11 = 0x0000001f } +enum : uint { CAL_SMONTHNAME12 = 0x00000020 } +enum : uint { CAL_SMONTHNAME13 = 0x00000021 } +enum : uint { CAL_SABBREVMONTHNAME1 = 0x00000022 } +enum : uint { CAL_SABBREVMONTHNAME2 = 0x00000023 } +enum : uint { CAL_SABBREVMONTHNAME3 = 0x00000024 } +enum : uint { CAL_SABBREVMONTHNAME4 = 0x00000025 } +enum : uint { CAL_SABBREVMONTHNAME5 = 0x00000026 } +enum : uint { CAL_SABBREVMONTHNAME6 = 0x00000027 } +enum : uint { CAL_SABBREVMONTHNAME7 = 0x00000028 } +enum : uint { CAL_SABBREVMONTHNAME8 = 0x00000029 } +enum : uint { CAL_SABBREVMONTHNAME9 = 0x0000002a } +enum : uint { CAL_SABBREVMONTHNAME10 = 0x0000002b } +enum : uint { CAL_SABBREVMONTHNAME11 = 0x0000002c } +enum : uint { CAL_SABBREVMONTHNAME12 = 0x0000002d } +enum : uint { CAL_SABBREVMONTHNAME13 = 0x0000002e } + +// #if(WINVER >= 0x0500) +enum : uint { CAL_SYEARMONTH = 0x0000002f } +enum : uint { CAL_ITWODIGITYEARMAX = 0x00000030 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { ENUM_ALL_CALENDARS = 0xffffffff } + +enum : uint { CAL_GREGORIAN = 1 } +enum : uint { CAL_GREGORIAN_US = 2 } +enum : uint { CAL_JAPAN = 3 } +enum : uint { CAL_TAIWAN = 4 } +enum : uint { CAL_KOREA = 5 } +enum : uint { CAL_HIJRI = 6 } +enum : uint { CAL_THAI = 7 } +enum : uint { CAL_HEBREW = 8 } +enum : uint { CAL_GREGORIAN_ME_FRENCH = 9 } +enum : uint { CAL_GREGORIAN_ARABIC = 10 } +enum : uint { CAL_GREGORIAN_XLIT_ENGLISH = 11 } +enum : uint { CAL_GREGORIAN_XLIT_FRENCH = 12 } + +enum : uint { LGRPID_WESTERN_EUROPE = 0x0001 } +enum : uint { LGRPID_CENTRAL_EUROPE = 0x0002 } +enum : uint { LGRPID_BALTIC = 0x0003 } +enum : uint { LGRPID_GREEK = 0x0004 } +enum : uint { LGRPID_CYRILLIC = 0x0005 } +enum : uint { LGRPID_TURKISH = 0x0006 } +enum : uint { LGRPID_JAPANESE = 0x0007 } +enum : uint { LGRPID_KOREAN = 0x0008 } +enum : uint { LGRPID_TRADITIONAL_CHINESE = 0x0009 } +enum : uint { LGRPID_SIMPLIFIED_CHINESE = 0x000a } +enum : uint { LGRPID_THAI = 0x000b } +enum : uint { LGRPID_HEBREW = 0x000c } +enum : uint { LGRPID_ARABIC = 0x000d } +enum : uint { LGRPID_VIETNAMESE = 0x000e } +enum : uint { LGRPID_INDIC = 0x000f } +enum : uint { LGRPID_GEORGIAN = 0x0010 } +enum : uint { LGRPID_ARMENIAN = 0x0011 } + +alias DWORD LGRPID; + +alias DWORD LCTYPE; + +alias DWORD CALTYPE; + +alias DWORD CALID; + +struct _cpinfo { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; +} +alias _cpinfo CPINFO; +alias _cpinfo* LPCPINFO; + +struct _cpinfoexA { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; + WCHAR UnicodeDefaultChar; + UINT CodePage; + CHAR CodePageName[MAX_PATH]; +} +alias _cpinfoexA CPINFOEXA; +alias _cpinfoexA* LPCPINFOEXA; + +struct _cpinfoexW { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; + WCHAR UnicodeDefaultChar; + UINT CodePage; + WCHAR CodePageName[MAX_PATH]; +} +alias _cpinfoexW CPINFOEXW; +alias _cpinfoexW* LPCPINFOEXW; + +// #ifdef UNICODE +// ... +// #else +alias CPINFOEXA CPINFOEX; +alias LPCPINFOEXA LPCPINFOEX; +// #endif // UNICODE + +struct _numberfmtA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; +} +alias _numberfmtA NUMBERFMTA; +alias _numberfmtA* LPNUMBERFMTA; + +struct _numberfmtW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; +} +alias _numberfmtW NUMBERFMTW; +alias _numberfmtW* LPNUMBERFMTW; + +// #ifdef UNICODE +// ... +// #else +alias NUMBERFMTA NUMBERFMT; +alias LPNUMBERFMTA LPNUMBERFMT; +// #endif // UNICODE + +struct _currencyfmtA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPSTR lpCurrencySymbol; +} +alias _currencyfmtA CURRENCYFMTA; +alias _currencyfmtA* LPCURRENCYFMTA; + +struct _currencyfmtW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPWSTR lpCurrencySymbol; +} +alias _currencyfmtW CURRENCYFMTW; +alias _currencyfmtW* LPCURRENCYFMTW; + +// #ifdef UNICODE +// ... +// #else +alias CURRENCYFMTA CURRENCYFMT; +alias LPCURRENCYFMTA LPCURRENCYFMT; +// #endif // UNICODE + +alias LONG GEOID; +alias DWORD GEOTYPE; +alias DWORD GEOCLASS; + +enum { GEOID_NOT_AVAILABLE = -1 } + +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 = 0x000B, +} + +enum SYSGEOCLASS { + GEOCLASS_NATION = 16, + GEOCLASS_REGION = 14, +} + +// #ifdef STRICT + +// ... + +// ... + +// #else // !STRICT + +alias FARPROC LANGUAGEGROUP_ENUMPROCA; +alias FARPROC LANGGROUPLOCALE_ENUMPROCA; +alias FARPROC UILANGUAGE_ENUMPROCA; +alias FARPROC LOCALE_ENUMPROCA; +alias FARPROC CODEPAGE_ENUMPROCA; +alias FARPROC DATEFMT_ENUMPROCA; +alias FARPROC DATEFMT_ENUMPROCEXA; +alias FARPROC TIMEFMT_ENUMPROCA; +alias FARPROC CALINFO_ENUMPROCA; +alias FARPROC CALINFO_ENUMPROCEXA; +alias FARPROC GEO_ENUMPROC; + +alias FARPROC LANGUAGEGROUP_ENUMPROCW; +alias FARPROC LANGGROUPLOCALE_ENUMPROCW; +alias FARPROC UILANGUAGE_ENUMPROCW; +alias FARPROC LOCALE_ENUMPROCW; +alias FARPROC CODEPAGE_ENUMPROCW; +alias FARPROC DATEFMT_ENUMPROCW; +alias FARPROC DATEFMT_ENUMPROCEXW; +alias FARPROC TIMEFMT_ENUMPROCW; +alias FARPROC CALINFO_ENUMPROCW; +alias FARPROC CALINFO_ENUMPROCEXW; + +// #endif // !STRICT + +// #ifdef UNICODE + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #else + +alias LANGUAGEGROUP_ENUMPROCA LANGUAGEGROUP_ENUMPROC; +alias LANGGROUPLOCALE_ENUMPROCA LANGGROUPLOCALE_ENUMPROC; +alias UILANGUAGE_ENUMPROCA UILANGUAGE_ENUMPROC; +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 CALINFO_ENUMPROCA CALINFO_ENUMPROC; +alias CALINFO_ENUMPROCEXA CALINFO_ENUMPROCEX; + +// #endif // !UNICODE + +extern(Windows) export BOOL IsValidCodePage( + UINT CodePage); + +extern(Windows) export UINT GetACP(); + +extern(Windows) export UINT GetOEMCP(); + +extern(Windows) export BOOL GetCPInfo( + UINT CodePage, + LPCPINFO lpCPInfo); + +extern(Windows) export BOOL GetCPInfoExA( + UINT CodePage, + DWORD dwFlags, + LPCPINFOEXA lpCPInfoEx); +extern(Windows) export BOOL GetCPInfoExW( + UINT CodePage, + DWORD dwFlags, + LPCPINFOEXW lpCPInfoEx); +// #ifdef UNICODE +// #... +// #else +alias GetCPInfoExA GetCPInfoEx; +// #endif // !UNICODE + +extern(Windows) export BOOL IsDBCSLeadByte( + BYTE TestChar); + +extern(Windows) export BOOL IsDBCSLeadByteEx( + UINT CodePage, + BYTE TestChar); + +extern(Windows) export int MultiByteToWideChar( + UINT CodePage, + DWORD dwFlags, + LPCSTR lpMultiByteStr, + int cbMultiByte, + LPWSTR lpWideCharStr, + int cchWideChar); + +extern(Windows) export int WideCharToMultiByte( + UINT CodePage, + DWORD dwFlags, + LPCWSTR lpWideCharStr, + int cchWideChar, + LPSTR lpMultiByteStr, + int cbMultiByte, + LPCSTR lpDefaultChar, + LPBOOL lpUsedDefaultChar); + +extern(Windows) export int CompareStringA( + LCID Locale, + DWORD dwCmpFlags, + LPCSTR lpString1, + int cchCount1, + LPCSTR lpString2, + int cchCount2); +extern(Windows) export int CompareStringW( + LCID Locale, + DWORD dwCmpFlags, + LPCWSTR lpString1, + int cchCount1, + LPCWSTR lpString2, + int cchCount2); +// #ifdef UNICODE +// #... +// #else +alias CompareStringA CompareString; +// #endif // !UNICODE + +extern(Windows) export int LCMapStringA( + LCID Locale, + DWORD dwMapFlags, + LPCSTR lpSrcStr, + int cchSrc, + LPSTR lpDestStr, + int cchDest); +extern(Windows) export int LCMapStringW( + LCID Locale, + DWORD dwMapFlags, + LPCWSTR lpSrcStr, + int cchSrc, + LPWSTR lpDestStr, + int cchDest); +// #ifdef UNICODE +// #... +// #else +alias LCMapStringA LCMapString; +// #endif // !UNICODE + +extern(Windows) export int GetLocaleInfoA( + LCID Locale, + LCTYPE LCType, + LPSTR lpLCData, + int cchData); +extern(Windows) export int GetLocaleInfoW( + LCID Locale, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData); +// #ifdef UNICODE +// #... +// #else +alias GetLocaleInfoA GetLocaleInfo; +// #endif // !UNICODE + +extern(Windows) export BOOL SetLocaleInfoA( + LCID Locale, + LCTYPE LCType, + LPCSTR lpLCData); +extern(Windows) export BOOL SetLocaleInfoW( + LCID Locale, + LCTYPE LCType, + LPCWSTR lpLCData); +// #ifdef UNICODE +// #... +// #else +alias SetLocaleInfoA SetLocaleInfo; +// #endif // !UNICODE + +// #if (WINVER >= 0x040A) +extern(Windows) export int GetCalendarInfoA( + LCID Locale, + CALID Calendar, + CALTYPE CalType, + LPSTR lpCalData, + int cchData, + LPDWORD lpValue); +extern(Windows) export int GetCalendarInfoW( + LCID Locale, + CALID Calendar, + CALTYPE CalType, + LPWSTR lpCalData, + int cchData, + LPDWORD lpValue); +// #ifdef UNICODE +// #... +// #else +alias GetCalendarInfoA GetCalendarInfo; +// #endif // !UNICODE + +extern(Windows) export BOOL SetCalendarInfoA( + LCID Locale, + CALID Calendar, + CALTYPE CalType, + LPCSTR lpCalData); +extern(Windows) export BOOL SetCalendarInfoW( + LCID Locale, + CALID Calendar, + CALTYPE CalType, + LPCWSTR lpCalData); +// #ifdef UNICODE +// #... +// #else +alias SetCalendarInfoA SetCalendarInfo; +// #endif // !UNICODE +// #endif + +extern(Windows) export int GetTimeFormatA( + LCID Locale, + DWORD dwFlags, + SYSTEMTIME *lpTime, + LPCSTR lpFormat, + LPSTR lpTimeStr, + int cchTime); +extern(Windows) export int GetTimeFormatW( + LCID Locale, + DWORD dwFlags, + SYSTEMTIME *lpTime, + LPCWSTR lpFormat, + LPWSTR lpTimeStr, + int cchTime); +// #ifdef UNICODE +// #... +// #else +alias GetTimeFormatA GetTimeFormat; +// #endif // !UNICODE + +extern(Windows) export int GetDateFormatA( + LCID Locale, + DWORD dwFlags, + SYSTEMTIME *lpDate, + LPCSTR lpFormat, + LPSTR lpDateStr, + int cchDate); +extern(Windows) export int GetDateFormatW( + LCID Locale, + DWORD dwFlags, + SYSTEMTIME *lpDate, + LPCWSTR lpFormat, + LPWSTR lpDateStr, + int cchDate); +// #ifdef UNICODE +// #... +// #else +alias GetDateFormatA GetDateFormat; +// #endif // !UNICODE + +extern(Windows) export int GetNumberFormatA( + LCID Locale, + DWORD dwFlags, + LPCSTR lpValue, + NUMBERFMTA *lpFormat, + LPSTR lpNumberStr, + int cchNumber); +extern(Windows) export int GetNumberFormatW( + LCID Locale, + DWORD dwFlags, + LPCWSTR lpValue, + NUMBERFMTW *lpFormat, + LPWSTR lpNumberStr, + int cchNumber); +// #ifdef UNICODE +// #... +// #else +alias GetNumberFormatA GetNumberFormat; +// #endif // !UNICODE + +extern(Windows) export int GetCurrencyFormatA( + LCID Locale, + DWORD dwFlags, + LPCSTR lpValue, + CURRENCYFMTA *lpFormat, + LPSTR lpCurrencyStr, + int cchCurrency); +extern(Windows) export int GetCurrencyFormatW( + LCID Locale, + DWORD dwFlags, + LPCWSTR lpValue, + CURRENCYFMTW *lpFormat, + LPWSTR lpCurrencyStr, + int cchCurrency); +// #ifdef UNICODE +// #... +// #else +alias GetCurrencyFormatA GetCurrencyFormat; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumCalendarInfoA( + CALINFO_ENUMPROCA lpCalInfoEnumProc, + LCID Locale, + CALID Calendar, + CALTYPE CalType); +extern(Windows) export BOOL EnumCalendarInfoW( + CALINFO_ENUMPROCW lpCalInfoEnumProc, + LCID Locale, + CALID Calendar, + CALTYPE CalType); +// #ifdef UNICODE +// #... +// #else +alias EnumCalendarInfoA EnumCalendarInfo; +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL EnumCalendarInfoExA( + CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx, + LCID Locale, + CALID Calendar, + CALTYPE CalType); +extern(Windows) export BOOL EnumCalendarInfoExW( + CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx, + LCID Locale, + CALID Calendar, + CALTYPE CalType); +// #ifdef UNICODE +// #... +// #else +alias EnumCalendarInfoExA EnumCalendarInfoEx; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL EnumTimeFormatsA( + TIMEFMT_ENUMPROCA lpTimeFmtEnumProc, + LCID Locale, + DWORD dwFlags); +extern(Windows) export BOOL EnumTimeFormatsW( + TIMEFMT_ENUMPROCW lpTimeFmtEnumProc, + LCID Locale, + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias EnumTimeFormatsA EnumTimeFormats; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumDateFormatsA( + DATEFMT_ENUMPROCA lpDateFmtEnumProc, + LCID Locale, + DWORD dwFlags); +extern(Windows) export BOOL EnumDateFormatsW( + DATEFMT_ENUMPROCW lpDateFmtEnumProc, + LCID Locale, + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias EnumDateFormatsA EnumDateFormats; +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL EnumDateFormatsExA( + DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx, + LCID Locale, + DWORD dwFlags); +extern(Windows) export BOOL EnumDateFormatsExW( + DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx, + LCID Locale, + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias EnumDateFormatsExA EnumDateFormatsEx; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL IsValidLanguageGroup( + LGRPID LanguageGroup, + DWORD dwFlags); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL IsValidLocale( + LCID Locale, + DWORD dwFlags); + +extern(Windows) export int GetGeoInfoA( + GEOID Location, + GEOTYPE GeoType, + LPSTR lpGeoData, + int cchData, + LANGID LangId); +extern(Windows) export int GetGeoInfoW( + GEOID Location, + GEOTYPE GeoType, + LPWSTR lpGeoData, + int cchData, + LANGID LangId); +// #ifdef UNICODE +// #... +// #else +alias GetGeoInfoA GetGeoInfo; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumSystemGeoID( + GEOCLASS GeoClass, + GEOID ParentGeoId, + GEO_ENUMPROC lpGeoEnumProc); + +extern(Windows) export GEOID GetUserGeoID( + GEOCLASS GeoClass); + +extern(Windows) export BOOL SetUserGeoID( + GEOID GeoId); + +extern(Windows) export LCID ConvertDefaultLocale( + LCID Locale); + +extern(Windows) export LCID GetThreadLocale(); + +extern(Windows) export BOOL SetThreadLocale( + LCID Locale + ); + +// #if(WINVER >= 0x0500) +extern(Windows) export LANGID GetSystemDefaultUILanguage(); + +extern(Windows) export LANGID GetUserDefaultUILanguage(); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export LANGID GetSystemDefaultLangID(); + +extern(Windows) export LANGID GetUserDefaultLangID(); + +extern(Windows) export LCID GetSystemDefaultLCID(); + +extern(Windows) export LCID GetUserDefaultLCID(); + +extern(Windows) export BOOL GetStringTypeExA( + LCID Locale, + DWORD dwInfoType, + LPCSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); +extern(Windows) export BOOL GetStringTypeExW( + LCID Locale, + DWORD dwInfoType, + LPCWSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); +// #ifdef UNICODE +// #... +// #else +alias GetStringTypeExA GetStringTypeEx; +// #endif // !UNICODE + +extern(Windows) export BOOL GetStringTypeA( + LCID Locale, + DWORD dwInfoType, + LPCSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); + +extern(Windows) export BOOL GetStringTypeW( + DWORD dwInfoType, + LPCWSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); + +extern(Windows) export int FoldStringA( + DWORD dwMapFlags, + LPCSTR lpSrcStr, + int cchSrc, + LPSTR lpDestStr, + int cchDest); +extern(Windows) export int FoldStringW( + DWORD dwMapFlags, + LPCWSTR lpSrcStr, + int cchSrc, + LPWSTR lpDestStr, + int cchDest); +// #ifdef UNICODE +// #... +// #else +alias FoldStringA FoldString; +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL EnumSystemLanguageGroupsA( + LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc, + DWORD dwFlags, + LONG_PTR lParam); +extern(Windows) export BOOL EnumSystemLanguageGroupsW( + LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc, + DWORD dwFlags, + LONG_PTR lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumSystemLanguageGroupsA EnumSystemLanguageGroups; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumLanguageGroupLocalesA( + LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc, + LGRPID LanguageGroup, + DWORD dwFlags, + LONG_PTR lParam); +extern(Windows) export BOOL EnumLanguageGroupLocalesW( + LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc, + LGRPID LanguageGroup, + DWORD dwFlags, + LONG_PTR lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumLanguageGroupLocalesA EnumLanguageGroupLocales; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumUILanguagesA( + UILANGUAGE_ENUMPROCA lpUILanguageEnumProc, + DWORD dwFlags, + LONG_PTR lParam); +extern(Windows) export BOOL EnumUILanguagesW( + UILANGUAGE_ENUMPROCW lpUILanguageEnumProc, + DWORD dwFlags, + LONG_PTR lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumUILanguagesA EnumUILanguages; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL EnumSystemLocalesA( + LOCALE_ENUMPROCA lpLocaleEnumProc, + DWORD dwFlags); +extern(Windows) export BOOL EnumSystemLocalesW( + LOCALE_ENUMPROCW lpLocaleEnumProc, + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias EnumSystemLocalesA EnumSystemLocales; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumSystemCodePagesA( + CODEPAGE_ENUMPROCA lpCodePageEnumProc, + DWORD dwFlags); +extern(Windows) export BOOL EnumSystemCodePagesW( + CODEPAGE_ENUMPROCW lpCodePageEnumProc, + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias EnumSystemCodePagesA EnumSystemCodePages; +// #endif // !UNICODE + +// #endif // NONLS + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINNLS_ ADDED src/win32/ansi/winnt.d Index: src/win32/ansi/winnt.d ================================================================== --- src/win32/ansi/winnt.d +++ src/win32/ansi/winnt.d @@ -0,0 +1,5764 @@ +module win32.ansi.winnt; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.windef; +alias void _TEB; +alias void _EXCEPTION_REGISTRATION_RECORD; +private extern(C) { + int memcmp(void*, void*, uint); + void* memmove(void*, void*, uint); + void* memcpy(void*, void*, uint); + void* memset(void*, uint, uint); +} + +// #ifndef _WINNT_ +// #define _WINNT_ + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #include +enum : uint { ANYSIZE_ARRAY = 1 } + +// #if defined(_M_MRX000) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) && defined(ENABLE_RESTRICTED) +// #... +// #else +// #define RESTRICTED_POINTER +// #endif + +// #if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64) || defined(_M_AMD64) +// #... +// #if defined(_WIN64) +// #... +// #else +// #... +// #endif +// #else +// #define UNALIGNED +// #define UNALIGNED64 +// #endif + +// #if defined(_WIN64) || defined(_M_ALPHA) +// #... +// #... +// #else +const uint MAX_NATURAL_ALIGNMENT = DWORD.sizeof; +enum : uint { MEMORY_ALLOCATION_ALIGNMENT = 8 } +// #endif + +// #ifdef __cplusplus +// #if _MSC_VER >= 1300 +// #define TYPE_ALIGNMENT( t ) __alignof(t) +// #endif +// #else +// #... +// ... +// #endif + +// #if defined(_WIN64) + +// #... +// ... + +// #... + +// #else + +// #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD ) + +// #endif + +// #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] + +// #if !defined(_MAC) && (defined(_M_MRX000) || defined(_M_AMD64) || defined(_M_IA64)) && (_MSC_VER >= 1100) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) +// #... +// ... +// #if defined(_WIN64) +// #... +// #else +// #... +// #endif +// #else +// #if defined(_MAC) && defined(_MAC_INT_64) +// #... +// ... +// #else +// #define POINTER_64 +alias uint POINTER_64_INT; +// #endif +alias void* POINTER_32; +// #endif + +// #if defined(_IA64_) || defined(_AMD64_) +// #... +// #else +alias POINTER_32 FIRMWARE_PTR; +// #endif + +// #include + +// #if (defined(_M_IX86) || defined(_M_IA64) || defined(_M_AMD64)) && !defined(MIDL_PASS) +// #define DECLSPEC_IMPORT __declspec(dllimport) +// #else +// #... +// #endif + +// #ifndef DECLSPEC_NORETURN +// #if (_MSC_VER >= 1200) && !defined(MIDL_PASS) +// #define DECLSPEC_NORETURN __declspec(noreturn) +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_ALIGN +// #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) +// #define DECLSPEC_ALIGN(x) __declspec(align(x)) +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_CACHEALIGN +// #define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(128) +// #endif + +// #ifndef DECLSPEC_UUID +// #if (_MSC_VER >= 1100) && defined (__cplusplus) +// #define DECLSPEC_UUID(x) __declspec(uuid(x)) +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_NOVTABLE +// #if (_MSC_VER >= 1100) && defined(__cplusplus) +// #define DECLSPEC_NOVTABLE __declspec(novtable) +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_SELECTANY +// #if (_MSC_VER >= 1100) +// #define DECLSPEC_SELECTANY __declspec(selectany) +// #else +// #... +// #endif +// #endif + +// #ifndef NOP_FUNCTION +// #if (_MSC_VER >= 1210) +// #... +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_ADDRSAFE +// #if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64)) +// #... +// #else +// #define DECLSPEC_ADDRSAFE +// #endif +// #endif + +// #ifndef FORCEINLINE +// #if (_MSC_VER >= 1200) +// #define FORCEINLINE __forceinline +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_DEPRECATED +// #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) +// #define DECLSPEC_DEPRECATED __declspec(deprecated) +// #define DEPRECATE_SUPPORTED +// #else +// #... +// #... +// #endif +// #endif + +alias void* PVOID; +deprecated alias void* PVOID64; /* warning: 64-bit */ + +// #if ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)) && !defined(_M_AMD64) +// #define NTAPI __stdcall +// #else +// #... +// #... +// #endif + +// #if !defined(_NTSYSTEM_) +// #define NTSYSAPI DECLSPEC_IMPORT +// #define NTSYSCALLAPI DECLSPEC_IMPORT +// #else +// #... +// #if defined(_NTDLLBUILD_) +// #... +// #else +// #... +// #endif + +// #endif + +// #ifndef VOID +alias void VOID; +alias char CHAR; +alias short SHORT; +alias int LONG; +// #endif + +// #ifndef _MAC +alias wchar WCHAR; +// #else + +// ... +// #endif + +alias WCHAR* PWCHAR; +alias WCHAR* LPWCH; +alias WCHAR* PWCH; +alias WCHAR* LPCWCH; +alias WCHAR* PCWCH; +alias WCHAR* NWPSTR; +alias WCHAR* LPWSTR; +alias WCHAR* PWSTR; +alias WCHAR* LPUWSTR; +alias WCHAR* PUWSTR; + +alias WCHAR* LPCWSTR; +alias WCHAR* PCWSTR; +alias WCHAR* LPCUWSTR; +alias WCHAR* PCUWSTR; + +alias CHAR* PCHAR; +alias CHAR* LPCH; +alias CHAR* PCH; + +alias CHAR* LPCCH; +alias CHAR* PCCH; +alias CHAR* NPSTR; +alias CHAR* LPSTR; +alias CHAR* PSTR; +alias CHAR* LPCSTR; +alias CHAR* PCSTR; + +// #ifdef UNICODE // r_winnt + +// #ifndef _TCHAR_DEFINED +// ... +// #... +// #endif /* !_TCHAR_DEFINED */ + +// ... +// #... + +// #else /* UNICODE */ // r_winnt + +// #ifndef _TCHAR_DEFINED +alias char TCHAR; +alias char* PTCHAR; +alias ubyte TBYTE; +alias ubyte* PTBYTE; +// #define _TCHAR_DEFINED +// #endif /* !_TCHAR_DEFINED */ + +alias LPSTR LPTCH; +alias LPSTR PTCH; +alias LPSTR PTSTR; +alias LPSTR LPTSTR; +alias LPSTR PUTSTR; +alias LPSTR LPUTSTR; +alias LPCSTR PCTSTR; +alias LPCSTR LPCTSTR; +alias LPCSTR PCUTSTR; +alias LPCSTR LPCUTSTR; +// #define __TEXT(quote) quote + +// #endif /* UNICODE */ // r_winnt +TCHAR[] TEXT(TCHAR[] quote){ return quote; } + +alias SHORT* PSHORT; +alias LONG* PLONG; + +// #ifdef STRICT +alias void* HANDLE; +// #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name +// #else +// ... +// #... +// #endif +alias HANDLE* PHANDLE; + +alias BYTE FCHAR; +alias WORD FSHORT; +alias DWORD FLONG; + +// #ifndef _HRESULT_DEFINED +// #define _HRESULT_DEFINED +alias LONG HRESULT; + +// #endif // !_HRESULT_DEFINED + +// #ifdef __cplusplus +// #define EXTERN_C extern "C" +// #else +// #... +// #endif + +// #if defined(_WIN32) || defined(_MPPC_) + +// #ifdef _68K_ +// #... +// #else +// #define STDMETHODCALLTYPE __stdcall +// #endif +// #define STDMETHODVCALLTYPE __cdecl + +// #define STDAPICALLTYPE __stdcall +// #define STDAPIVCALLTYPE __cdecl + +// #else + +// #... +// #... + +// #... +// #... + +// #endif + +// #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE +// #define STDAPI_(type) EXTERN_C type STDAPICALLTYPE + +// #define STDMETHODIMP HRESULT STDMETHODCALLTYPE +// #define STDMETHODIMP_(type) type STDMETHODCALLTYPE + +// #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE +// #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE + +// #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE +// #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE + +alias char CCHAR; +alias DWORD LCID; +alias PDWORD PLCID; +alias WORD LANGID; +enum : uint { APPLICATION_ERROR_MASK = 0x20000000 } +enum : uint { ERROR_SEVERITY_SUCCESS = 0x00000000 } +enum : uint { ERROR_SEVERITY_INFORMATIONAL = 0x40000000 } +enum : uint { ERROR_SEVERITY_WARNING = 0x80000000 } +enum : uint { ERROR_SEVERITY_ERROR = 0xC0000000 } + +// #if defined(_M_IA64) && !defined(MIDL_PASS) +// ... +// #endif +struct _FLOAT128 { + __int64 LowPart; + __int64 HighPart; +} +alias _FLOAT128 FLOAT128; + +alias FLOAT128* PFLOAT128; + +// #define _ULONGLONG_ +// #if (!defined (_MAC) && (!defined(MIDL_PASS) || defined(__midl)) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))) +// ... + +// #... +// #else + +// #if defined(_MAC) && defined(_MAC_INT_64) +// ... + +// #... +// #else +alias double LONGLONG; +alias double ULONGLONG; +// #endif //_MAC and int64 + +// #endif + +alias LONGLONG* PLONGLONG; +alias ULONGLONG* PULONGLONG; + +alias LONGLONG USN; + +// #if defined(MIDL_PASS) +// ... +// #else // MIDL_PASS +union _LARGE_INTEGER { +struct _0 { + DWORD LowPart; + LONG HighPart; +} +_0 _; + +struct _1 { + DWORD LowPart; + LONG HighPart; +} +_1 u; + +// #endif //MIDL_PASS + LONGLONG QuadPart; +} +alias _LARGE_INTEGER LARGE_INTEGER; + +alias LARGE_INTEGER* PLARGE_INTEGER; + +// #if defined(MIDL_PASS) +// ... +// #else // MIDL_PASS +union _ULARGE_INTEGER { +struct _2 { + DWORD LowPart; + DWORD HighPart; +} +_2 _; + +struct _3 { + DWORD LowPart; + DWORD HighPart; +} +_3 u; + +// #endif //MIDL_PASS + ULONGLONG QuadPart; +} +alias _ULARGE_INTEGER ULARGE_INTEGER; + +alias ULARGE_INTEGER* PULARGE_INTEGER; + +struct _LUID { + DWORD LowPart; + LONG HighPart; +} +alias _LUID LUID; +alias _LUID* PLUID; + +// #define _DWORDLONG_ +alias ULONGLONG DWORDLONG; +alias DWORDLONG* PDWORDLONG; + +// #if defined(MIDL_PASS) || defined(RC_INVOKED) + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_M_MRX000) + +// #... +// #... + +// #... +// #... +// #... + +// #if defined (__cplusplus) +// ... +// #endif + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if defined (__cplusplus) +// ... +// #endif + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_M_IX86) + +long Int32x32To64(int a, int b) { return (cast(long)a) * b; } +ulong UInt32x32To64(uint a, uint b) { return (cast(ulong)a) * b; } + +extern(Windows) export ULONGLONG Int64ShllMod32( + ULONGLONG Value, + DWORD ShiftCount); + +extern(Windows) export LONGLONG Int64ShraMod32( + LONGLONG Value, + DWORD ShiftCount); + +extern(Windows) export ULONGLONG Int64ShrlMod32( + ULONGLONG Value, + DWORD ShiftCount); + +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning(disable:4035) // re-enable below + +// __inline ULONGLONG Int64ShllMod32( ULONGLONG Value, DWORD ShiftCount ); + +// __inline LONGLONG Int64ShraMod32( LONGLONG Value, DWORD ShiftCount ); + +// __inline ULONGLONG Int64ShrlMod32( ULONGLONG Value, DWORD ShiftCount ); + +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #endif + +// #elif defined(_M_ALPHA) + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_M_PPC) + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_68K_) || defined(_MPPC_) + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_M_IA64) || defined(_M_AMD64) + +// #... +// #... + +// #... +// #... +// #... + +// #else + +// #... + +// #endif + +enum : CHAR { ANSI_NULL = 0 } +enum : WCHAR { UNICODE_NULL = 0 } +enum : WORD { UNICODE_STRING_MAX_BYTES = 65534 } +enum : uint { UNICODE_STRING_MAX_CHARS = 32767 } +alias BYTE BOOLEAN; +alias BOOLEAN* PBOOLEAN; + +struct _LIST_ENTRY { + _LIST_ENTRY *Flink; + _LIST_ENTRY *Blink; +} +alias _LIST_ENTRY LIST_ENTRY; +alias _LIST_ENTRY* PLIST_ENTRY; +alias _LIST_ENTRY* RESTRICTED_POINTERPRLIST_ENTRY; + +struct _SINGLE_LIST_ENTRY { + _SINGLE_LIST_ENTRY *Next; +} +alias _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY; +alias _SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY; + +struct LIST_ENTRY32 { + DWORD Flink; + DWORD Blink; +} + +alias LIST_ENTRY32* PLIST_ENTRY32; + +struct LIST_ENTRY64 { + ULONGLONG Flink; + ULONGLONG Blink; +} + +alias LIST_ENTRY64* PLIST_ENTRY64; + +import win32.ansi.guiddef; + +// #ifndef __OBJECTID_DEFINED +// #define __OBJECTID_DEFINED + +struct _OBJECTID { + GUID Lineage; + DWORD Uniquifier; +} +alias _OBJECTID OBJECTID; + +// #endif // !_OBJECTID_DEFINED + +enum : uint { MINCHAR = 0x80 } +enum : uint { MAXCHAR = 0x7f } +enum : uint { MINSHORT = 0x8000 } +enum : uint { MAXSHORT = 0x7fff } +enum : uint { MINLONG = 0x80000000 } +enum : uint { MAXLONG = 0x7fffffff } +enum : uint { MAXBYTE = 0xff } +enum : uint { MAXWORD = 0xffff } +enum : uint { MAXDWORD = 0xffffffff } + +// #define FIELD_OFFSET(type, field) ((LONG)(LONG_PTR)&(((type *)0)->field)) + +// #if(_WIN32_WINNT > 0x0500) + +// #define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field)) + +// #define RTL_SIZEOF_THROUGH_FIELD(type, field) (FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field)) + +// #define RTL_CONTAINS_FIELD(Struct, Size, Field) ( (((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size)) ) + +// #define RTL_NUMBER_OF(A) (sizeof(A)/sizeof((A)[0])) + +// #define RTL_FIELD_TYPE(type, field) (((type*)0)->field) + +// #define RTL_NUMBER_OF_FIELD(type, field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type, field))) + +// #define RTL_PADDING_BETWEEN_FIELDS(T, F1, F2) ((FIELD_OFFSET(T, F2) > FIELD_OFFSET(T, F1)) ? (FIELD_OFFSET(T, F2) - FIELD_OFFSET(T, F1) - RTL_FIELD_SIZE(T, F1)) : (FIELD_OFFSET(T, F1) - FIELD_OFFSET(T, F2) - RTL_FIELD_SIZE(T, F2))) + +// #if defined(__cplusplus) +// #define RTL_CONST_CAST(type) const_cast +// #else +// #... +// #endif + +// #define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8) + +// #define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field))) + +// #endif /* _WIN32_WINNT > 0x0500 */ + +// #define CONTAINING_RECORD(address, type, field) ((type *)( (PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field))) + +enum : uint { VER_SERVER_NT = 0x80000000 } +enum : uint { VER_WORKSTATION_NT = 0x40000000 } +enum : uint { VER_SUITE_SMALLBUSINESS = 0x00000001 } +enum : uint { VER_SUITE_ENTERPRISE = 0x00000002 } +enum : uint { VER_SUITE_BACKOFFICE = 0x00000004 } +enum : uint { VER_SUITE_COMMUNICATIONS = 0x00000008 } +enum : uint { VER_SUITE_TERMINAL = 0x00000010 } +enum : uint { VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x00000020 } +enum : uint { VER_SUITE_EMBEDDEDNT = 0x00000040 } +enum : uint { VER_SUITE_DATACENTER = 0x00000080 } +enum : uint { VER_SUITE_SINGLEUSERTS = 0x00000100 } +enum : uint { VER_SUITE_PERSONAL = 0x00000200 } +enum : uint { VER_SUITE_BLADE = 0x00000400 } + +enum : uint { LANG_NEUTRAL = 0x00 } +enum : uint { LANG_INVARIANT = 0x7f } + +enum : uint { LANG_AFRIKAANS = 0x36 } +enum : uint { LANG_ALBANIAN = 0x1c } +enum : uint { LANG_ARABIC = 0x01 } +enum : uint { LANG_ARMENIAN = 0x2b } +enum : uint { LANG_ASSAMESE = 0x4d } +enum : uint { LANG_AZERI = 0x2c } +enum : uint { LANG_BASQUE = 0x2d } +enum : uint { LANG_BELARUSIAN = 0x23 } +enum : uint { LANG_BENGALI = 0x45 } +enum : uint { LANG_BULGARIAN = 0x02 } +enum : uint { LANG_CATALAN = 0x03 } +enum : uint { LANG_CHINESE = 0x04 } +enum : uint { LANG_CROATIAN = 0x1a } +enum : uint { LANG_CZECH = 0x05 } +enum : uint { LANG_DANISH = 0x06 } +enum : uint { LANG_DIVEHI = 0x65 } +enum : uint { LANG_DUTCH = 0x13 } +enum : uint { LANG_ENGLISH = 0x09 } +enum : uint { LANG_ESTONIAN = 0x25 } +enum : uint { LANG_FAEROESE = 0x38 } +enum : uint { LANG_FARSI = 0x29 } +enum : uint { LANG_FINNISH = 0x0b } +enum : uint { LANG_FRENCH = 0x0c } +enum : uint { LANG_GALICIAN = 0x56 } +enum : uint { LANG_GEORGIAN = 0x37 } +enum : uint { LANG_GERMAN = 0x07 } +enum : uint { LANG_GREEK = 0x08 } +enum : uint { LANG_GUJARATI = 0x47 } +enum : uint { LANG_HEBREW = 0x0d } +enum : uint { LANG_HINDI = 0x39 } +enum : uint { LANG_HUNGARIAN = 0x0e } +enum : uint { LANG_ICELANDIC = 0x0f } +enum : uint { LANG_INDONESIAN = 0x21 } +enum : uint { LANG_ITALIAN = 0x10 } +enum : uint { LANG_JAPANESE = 0x11 } +enum : uint { LANG_KANNADA = 0x4b } +enum : uint { LANG_KASHMIRI = 0x60 } +enum : uint { LANG_KAZAK = 0x3f } +enum : uint { LANG_KONKANI = 0x57 } +enum : uint { LANG_KOREAN = 0x12 } +enum : uint { LANG_KYRGYZ = 0x40 } +enum : uint { LANG_LATVIAN = 0x26 } +enum : uint { LANG_LITHUANIAN = 0x27 } +enum : uint { LANG_MACEDONIAN = 0x2f } +enum : uint { LANG_MALAY = 0x3e } +enum : uint { LANG_MALAYALAM = 0x4c } +enum : uint { LANG_MANIPURI = 0x58 } +enum : uint { LANG_MARATHI = 0x4e } +enum : uint { LANG_MONGOLIAN = 0x50 } +enum : uint { LANG_NEPALI = 0x61 } +enum : uint { LANG_NORWEGIAN = 0x14 } +enum : uint { LANG_ORIYA = 0x48 } +enum : uint { LANG_POLISH = 0x15 } +enum : uint { LANG_PORTUGUESE = 0x16 } +enum : uint { LANG_PUNJABI = 0x46 } +enum : uint { LANG_ROMANIAN = 0x18 } +enum : uint { LANG_RUSSIAN = 0x19 } +enum : uint { LANG_SANSKRIT = 0x4f } +enum : uint { LANG_SERBIAN = 0x1a } +enum : uint { LANG_SINDHI = 0x59 } +enum : uint { LANG_SLOVAK = 0x1b } +enum : uint { LANG_SLOVENIAN = 0x24 } +enum : uint { LANG_SPANISH = 0x0a } +enum : uint { LANG_SWAHILI = 0x41 } +enum : uint { LANG_SWEDISH = 0x1d } +enum : uint { LANG_SYRIAC = 0x5a } +enum : uint { LANG_TAMIL = 0x49 } +enum : uint { LANG_TATAR = 0x44 } +enum : uint { LANG_TELUGU = 0x4a } +enum : uint { LANG_THAI = 0x1e } +enum : uint { LANG_TURKISH = 0x1f } +enum : uint { LANG_UKRAINIAN = 0x22 } +enum : uint { LANG_URDU = 0x20 } +enum : uint { LANG_UZBEK = 0x43 } +enum : uint { LANG_VIETNAMESE = 0x2a } + +enum : uint { SUBLANG_NEUTRAL = 0x00 } +enum : uint { SUBLANG_DEFAULT = 0x01 } +enum : uint { SUBLANG_SYS_DEFAULT = 0x02 } + +enum : uint { SUBLANG_ARABIC_SAUDI_ARABIA = 0x01 } +enum : uint { SUBLANG_ARABIC_IRAQ = 0x02 } +enum : uint { SUBLANG_ARABIC_EGYPT = 0x03 } +enum : uint { SUBLANG_ARABIC_LIBYA = 0x04 } +enum : uint { SUBLANG_ARABIC_ALGERIA = 0x05 } +enum : uint { SUBLANG_ARABIC_MOROCCO = 0x06 } +enum : uint { SUBLANG_ARABIC_TUNISIA = 0x07 } +enum : uint { SUBLANG_ARABIC_OMAN = 0x08 } +enum : uint { SUBLANG_ARABIC_YEMEN = 0x09 } +enum : uint { SUBLANG_ARABIC_SYRIA = 0x0a } +enum : uint { SUBLANG_ARABIC_JORDAN = 0x0b } +enum : uint { SUBLANG_ARABIC_LEBANON = 0x0c } +enum : uint { SUBLANG_ARABIC_KUWAIT = 0x0d } +enum : uint { SUBLANG_ARABIC_UAE = 0x0e } +enum : uint { SUBLANG_ARABIC_BAHRAIN = 0x0f } +enum : uint { SUBLANG_ARABIC_QATAR = 0x10 } +enum : uint { SUBLANG_AZERI_LATIN = 0x01 } +enum : uint { SUBLANG_AZERI_CYRILLIC = 0x02 } +enum : uint { SUBLANG_CHINESE_TRADITIONAL = 0x01 } +enum : uint { SUBLANG_CHINESE_SIMPLIFIED = 0x02 } +enum : uint { SUBLANG_CHINESE_HONGKONG = 0x03 } +enum : uint { SUBLANG_CHINESE_SINGAPORE = 0x04 } +enum : uint { SUBLANG_CHINESE_MACAU = 0x05 } +enum : uint { SUBLANG_DUTCH = 0x01 } +enum : uint { SUBLANG_DUTCH_BELGIAN = 0x02 } +enum : uint { SUBLANG_ENGLISH_US = 0x01 } +enum : uint { SUBLANG_ENGLISH_UK = 0x02 } +enum : uint { SUBLANG_ENGLISH_AUS = 0x03 } +enum : uint { SUBLANG_ENGLISH_CAN = 0x04 } +enum : uint { SUBLANG_ENGLISH_NZ = 0x05 } +enum : uint { SUBLANG_ENGLISH_EIRE = 0x06 } +enum : uint { SUBLANG_ENGLISH_SOUTH_AFRICA = 0x07 } +enum : uint { SUBLANG_ENGLISH_JAMAICA = 0x08 } +enum : uint { SUBLANG_ENGLISH_CARIBBEAN = 0x09 } +enum : uint { SUBLANG_ENGLISH_BELIZE = 0x0a } +enum : uint { SUBLANG_ENGLISH_TRINIDAD = 0x0b } +enum : uint { SUBLANG_ENGLISH_ZIMBABWE = 0x0c } +enum : uint { SUBLANG_ENGLISH_PHILIPPINES = 0x0d } +enum : uint { SUBLANG_FRENCH = 0x01 } +enum : uint { SUBLANG_FRENCH_BELGIAN = 0x02 } +enum : uint { SUBLANG_FRENCH_CANADIAN = 0x03 } +enum : uint { SUBLANG_FRENCH_SWISS = 0x04 } +enum : uint { SUBLANG_FRENCH_LUXEMBOURG = 0x05 } +enum : uint { SUBLANG_FRENCH_MONACO = 0x06 } +enum : uint { SUBLANG_GERMAN = 0x01 } +enum : uint { SUBLANG_GERMAN_SWISS = 0x02 } +enum : uint { SUBLANG_GERMAN_AUSTRIAN = 0x03 } +enum : uint { SUBLANG_GERMAN_LUXEMBOURG = 0x04 } +enum : uint { SUBLANG_GERMAN_LIECHTENSTEIN = 0x05 } +enum : uint { SUBLANG_ITALIAN = 0x01 } +enum : uint { SUBLANG_ITALIAN_SWISS = 0x02 } +// #if _WIN32_WINNT >= 0x0501 +enum : uint { SUBLANG_KASHMIRI_SASIA = 0x02 } +// #endif +enum : uint { SUBLANG_KASHMIRI_INDIA = 0x02 } +enum : uint { SUBLANG_KOREAN = 0x01 } +enum : uint { SUBLANG_LITHUANIAN = 0x01 } +enum : uint { SUBLANG_MALAY_MALAYSIA = 0x01 } +enum : uint { SUBLANG_MALAY_BRUNEI_DARUSSALAM = 0x02 } +enum : uint { SUBLANG_NEPALI_INDIA = 0x02 } +enum : uint { SUBLANG_NORWEGIAN_BOKMAL = 0x01 } +enum : uint { SUBLANG_NORWEGIAN_NYNORSK = 0x02 } +enum : uint { SUBLANG_PORTUGUESE = 0x02 } +enum : uint { SUBLANG_PORTUGUESE_BRAZILIAN = 0x01 } +enum : uint { SUBLANG_SERBIAN_LATIN = 0x02 } +enum : uint { SUBLANG_SERBIAN_CYRILLIC = 0x03 } +enum : uint { SUBLANG_SPANISH = 0x01 } +enum : uint { SUBLANG_SPANISH_MEXICAN = 0x02 } +enum : uint { SUBLANG_SPANISH_MODERN = 0x03 } +enum : uint { SUBLANG_SPANISH_GUATEMALA = 0x04 } +enum : uint { SUBLANG_SPANISH_COSTA_RICA = 0x05 } +enum : uint { SUBLANG_SPANISH_PANAMA = 0x06 } +enum : uint { SUBLANG_SPANISH_DOMINICAN_REPUBLIC = 0x07 } +enum : uint { SUBLANG_SPANISH_VENEZUELA = 0x08 } +enum : uint { SUBLANG_SPANISH_COLOMBIA = 0x09 } +enum : uint { SUBLANG_SPANISH_PERU = 0x0a } +enum : uint { SUBLANG_SPANISH_ARGENTINA = 0x0b } +enum : uint { SUBLANG_SPANISH_ECUADOR = 0x0c } +enum : uint { SUBLANG_SPANISH_CHILE = 0x0d } +enum : uint { SUBLANG_SPANISH_URUGUAY = 0x0e } +enum : uint { SUBLANG_SPANISH_PARAGUAY = 0x0f } +enum : uint { SUBLANG_SPANISH_BOLIVIA = 0x10 } +enum : uint { SUBLANG_SPANISH_EL_SALVADOR = 0x11 } +enum : uint { SUBLANG_SPANISH_HONDURAS = 0x12 } +enum : uint { SUBLANG_SPANISH_NICARAGUA = 0x13 } +enum : uint { SUBLANG_SPANISH_PUERTO_RICO = 0x14 } +enum : uint { SUBLANG_SWEDISH = 0x01 } +enum : uint { SUBLANG_SWEDISH_FINLAND = 0x02 } +enum : uint { SUBLANG_URDU_PAKISTAN = 0x01 } +enum : uint { SUBLANG_URDU_INDIA = 0x02 } +enum : uint { SUBLANG_UZBEK_LATIN = 0x01 } +enum : uint { SUBLANG_UZBEK_CYRILLIC = 0x02 } + +enum : uint { SORT_DEFAULT = 0x0 } + +enum : uint { SORT_JAPANESE_XJIS = 0x0 } +enum : uint { SORT_JAPANESE_UNICODE = 0x1 } + +enum : uint { SORT_CHINESE_BIG5 = 0x0 } +enum : uint { SORT_CHINESE_PRCP = 0x0 } +enum : uint { SORT_CHINESE_UNICODE = 0x1 } +enum : uint { SORT_CHINESE_PRC = 0x2 } +enum : uint { SORT_CHINESE_BOPOMOFO = 0x3 } + +enum : uint { SORT_KOREAN_KSC = 0x0 } +enum : uint { SORT_KOREAN_UNICODE = 0x1 } + +enum : uint { SORT_GERMAN_PHONE_BOOK = 0x1 } + +enum : uint { SORT_HUNGARIAN_DEFAULT = 0x0 } +enum : uint { SORT_HUNGARIAN_TECHNICAL = 0x1 } + +enum : uint { SORT_GEORGIAN_TRADITIONAL = 0x0 } +enum : uint { SORT_GEORGIAN_MODERN = 0x1 } + +WORD MAKELANGID(USHORT p, USHORT s) { return (((cast(WORD)(s)) << 10) | cast(WORD)(p)); } +WORD PRIMARYLANGID(WORD lgid) { return lgid & 0x3ff; } +WORD SUBLANGID(WORD lgid) { return lgid >>> 10; } + +enum : uint { NLS_VALID_LOCALE_MASK = 0x000fffff } + +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 lcid; } +WORD SORTIDFROMLCID(LCID lcid) { return (cast(DWORD)lcid >>> 16) & 0xf; } +WORD SORTVERSIONFROMLCID(LCID lcid) { return (cast(DWORD)lcid >>> 20) & 0xf; } + +enum : uint { LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL } +enum : uint { LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL } + +enum : uint { LOCALE_SYSTEM_DEFAULT = (SORT_DEFAULT << 16) | LANG_SYSTEM_DEFAULT } +enum : uint { LOCALE_USER_DEFAULT = (SORT_DEFAULT << 16) | LANG_USER_DEFAULT } + +enum : uint { LOCALE_NEUTRAL = (SORT_DEFAULT << 16) | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL } + +enum : uint { LOCALE_INVARIANT = (SORT_DEFAULT << 16) | (SUBLANG_NEUTRAL << 10) | LANG_INVARIANT } + +// #if ! defined(lint) +// #... +// #... +// #... + +// #else // lint + +// #define UNREFERENCED_PARAMETER(P) { (P) = (P); } +// #define DBG_UNREFERENCED_PARAMETER(P) { (P) = (P); } +// #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) { (V) = (V); } + +// #endif // lint + +// #if (_MSC_VER > 1200) +// #define DEFAULT_UNREACHABLE default: __assume(0) +// #else + +// #... + +// #endif + +// #ifndef WIN32_NO_STATUS + +enum : DWORD { STATUS_WAIT_0 = 0x00000000 } +enum : DWORD { STATUS_ABANDONED_WAIT_0 = 0x00000080 } +enum : DWORD { STATUS_USER_APC = 0x000000C0 } +enum : DWORD { STATUS_TIMEOUT = 0x00000102 } +enum : DWORD { STATUS_PENDING = 0x00000103 } +enum : DWORD { DBG_EXCEPTION_HANDLED = 0x00010001 } +enum : DWORD { DBG_CONTINUE = 0x00010002 } +enum : DWORD { STATUS_SEGMENT_NOTIFICATION = 0x40000005 } +enum : DWORD { DBG_TERMINATE_THREAD = 0x40010003 } +enum : DWORD { DBG_TERMINATE_PROCESS = 0x40010004 } +enum : DWORD { DBG_CONTROL_C = 0x40010005 } +enum : DWORD { DBG_CONTROL_BREAK = 0x40010008 } +enum : DWORD { STATUS_GUARD_PAGE_VIOLATION = 0x80000001 } +enum : DWORD { STATUS_DATATYPE_MISALIGNMENT = 0x80000002 } +enum : DWORD { STATUS_BREAKPOINT = 0x80000003 } +enum : DWORD { STATUS_SINGLE_STEP = 0x80000004 } +enum : DWORD { DBG_EXCEPTION_NOT_HANDLED = 0x80010001 } +enum : DWORD { STATUS_ACCESS_VIOLATION = 0xC0000005 } +enum : DWORD { STATUS_IN_PAGE_ERROR = 0xC0000006 } +enum : DWORD { STATUS_INVALID_HANDLE = 0xC0000008 } +enum : DWORD { STATUS_NO_MEMORY = 0xC0000017 } +enum : DWORD { STATUS_ILLEGAL_INSTRUCTION = 0xC000001D } +enum : DWORD { STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025 } +enum : DWORD { STATUS_INVALID_DISPOSITION = 0xC0000026 } +enum : DWORD { STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C } +enum : DWORD { STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D } +enum : DWORD { STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E } +enum : DWORD { STATUS_FLOAT_INEXACT_RESULT = 0xC000008F } +enum : DWORD { STATUS_FLOAT_INVALID_OPERATION = 0xC0000090 } +enum : DWORD { STATUS_FLOAT_OVERFLOW = 0xC0000091 } +enum : DWORD { STATUS_FLOAT_STACK_CHECK = 0xC0000092 } +enum : DWORD { STATUS_FLOAT_UNDERFLOW = 0xC0000093 } +enum : DWORD { STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094 } +enum : DWORD { STATUS_INTEGER_OVERFLOW = 0xC0000095 } +enum : DWORD { STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096 } +enum : DWORD { STATUS_STACK_OVERFLOW = 0xC00000FD } +enum : DWORD { STATUS_CONTROL_C_EXIT = 0xC000013A } +enum : DWORD { STATUS_FLOAT_MULTIPLE_FAULTS = 0xC00002B4 } +enum : DWORD { STATUS_FLOAT_MULTIPLE_TRAPS = 0xC00002B5 } +enum : DWORD { STATUS_REG_NAT_CONSUMPTION = 0xC00002C9 } +// #if defined(STATUS_SUCCESS) || (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) +enum : DWORD { STATUS_SXS_EARLY_DEACTIVATION = 0xC015000F } +enum : DWORD { STATUS_SXS_INVALID_DEACTIVATION = 0xC0150010 } +// #endif + +// #endif +enum : uint { MAXIMUM_WAIT_OBJECTS = 64 } + +alias MAXCHAR MAXIMUM_SUSPEND_COUNT; + +alias ULONG_PTR KSPIN_LOCK; +alias KSPIN_LOCK* PKSPIN_LOCK; + +// #if defined(_AMD64_) + +// #if defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) + +// #... + +// ... + +// #... + +// #... + +// ... + +// #... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... + +// #... +// #... + +// ... + +// ... + +// #... +// #... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif // defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) + +// #if !defined(RC_INVOKED) + +// #... + +// #... +// #... +// #... +// #... +// #... + +// #... + +// #endif // !defined(RC_INVOKED) + +// ... + +// ... + +// #... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // _AMD64_ + +// #ifdef _ALPHA_ // winnt +// ... +// #if defined(_M_ALPHA) // winnt +// #... +// #endif // winnt +// #endif // winnt + +// #if defined(_M_ALPHA) +// #... +// #else +extern(Windows) export _TEB NtCurrentTeb(); +// #endif + +// #ifdef _ALPHA_ + +// #... +// #... + +// #if !defined(RC_INVOKED) + +// #... + +// #... +// #... +// #... + +// #... + +// #endif + +// #ifndef _PORTABLE_32BIT_CONTEXT + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #else + +// #... + +// #endif // _PORTABLE_32BIT_CONTEXT + +// #endif // _ALPHA_ + +// #ifdef _ALPHA_ + +// ... + +// #endif // _ALPHA_ + +// #ifdef _X86_ + +// #if !defined(MIDL_PASS) +// #if !defined(RC_INVOKED) + +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning(disable:4164) // disable C4164 warning so that apps that + +// #ifdef _M_IX86 +// #pragma function(_enable) +// #pragma function(_disable) +// #endif + +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #endif + +// #endif +// #endif + +// #if !defined(MIDL_PASS) && defined(_M_IX86) +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning (disable:4035) // disable 4035 (function must return something) +PVOID GetFiberData() { asm { mov EAX, FS:[0x10]; mov EAX, [EAX]; } } +PVOID GetCurrentFiber() { asm { mov EAX, FS:[0x10]; } } + +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #endif +// #endif + +enum : uint { SIZE_OF_80387_REGISTERS = 80 } + +// #if !defined(RC_INVOKED) + +enum : uint { CONTEXT_i386 = 0x00010000 } +enum : uint { CONTEXT_i486 = 0x00010000 } + +enum : uint { CONTEXT_CONTROL = CONTEXT_i386 | 0x00000001L } +enum : uint { CONTEXT_INTEGER = CONTEXT_i386 | 0x00000002L } +enum : uint { CONTEXT_SEGMENTS = CONTEXT_i386 | 0x00000004L } +enum : uint { CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x00000008L } +enum : uint { CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x00000010L } +enum : uint { CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x00000020L } + +enum : uint { CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS } + +// #endif + +enum : uint { MAXIMUM_SUPPORTED_EXTENSION = 512 } + +struct _FLOATING_SAVE_AREA { + DWORD ControlWord; + DWORD StatusWord; + DWORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + BYTE RegisterArea[SIZE_OF_80387_REGISTERS]; + DWORD Cr0NpxState; +} +alias _FLOATING_SAVE_AREA FLOATING_SAVE_AREA; + +alias FLOATING_SAVE_AREA* PFLOATING_SAVE_AREA; + +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 ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; +} +alias _CONTEXT CONTEXT; + +alias CONTEXT* PCONTEXT; + +// #endif //_X86_ + +// #ifndef _LDT_ENTRY_DEFINED +// #define _LDT_ENTRY_DEFINED + +struct _LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; +union { +struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; +} + +struct { +// 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 LDT_ENTRY; +alias _LDT_ENTRY* PLDT_ENTRY; + +// #endif + +// #if defined(_MIPS_) + +// #... +// #... + +// #if !defined(RC_INVOKED) + +// #... + +// #... +// #... +// #... +// #... +// #... + +// #... +// ... + +// #endif + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... + +// #endif // MIPS + +// #if defined(_MIPS_) + +// ... + +// #endif // MIPS + +// #if defined(_PPC_) + +// #if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000) +// ... +// #... +// #elif defined(_M_PPC) +// ... +// #... +// #endif + +// #... +// #... + +// #if !defined(RC_INVOKED) + +// #... +// #... +// #... +// #... + +// #... + +// #endif + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // defined(_PPC_) + +// #if defined(_MPPC_) + +// #if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000) +// ... +// #... +// #elif defined(_M_PPC) +// ... +// #... +// #endif + +// #... +// #... + +// #if !defined(RC_INVOKED) + +// #... +// #... +// #... +// #... + +// #... + +// #endif + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // defined(_MPPC_) + +// #if !defined(__midl) && !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_) + +// ... +// #if defined(_M_IA64) // winnt +// #... +// #endif // winnt + +// #if defined(_M_IA64) +// #... +// #else +// ... +// #endif + +// #... +// #... + +// #endif // !defined(__midl) && !defined(GENUTIL) && !defined(_GENIA64_) && defined(_M_IA64) + +// #ifdef _IA64_ + +// #if !defined(RC_INVOKED) + +// #... + +// #... +// #... +// #... +// #... +// #... +// #... + +// #... +// #... + +// #endif // !defined(RC_INVOKED) + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // _IA64_ + +// #ifdef _IA64_ + +// ... + +// #endif // _IA64_ + +enum : uint { EXCEPTION_NONCONTINUABLE = 0x1 } +enum : uint { EXCEPTION_MAXIMUM_PARAMETERS = 15 } + +struct _EXCEPTION_RECORD { + DWORD ExceptionCode; + DWORD ExceptionFlags; + _EXCEPTION_RECORD *ExceptionRecord; + PVOID ExceptionAddress; + DWORD NumberParameters; + ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} +alias _EXCEPTION_RECORD EXCEPTION_RECORD; + +alias EXCEPTION_RECORD* PEXCEPTION_RECORD; + +struct _EXCEPTION_RECORD32 { + DWORD ExceptionCode; + DWORD ExceptionFlags; + DWORD ExceptionRecord; + DWORD ExceptionAddress; + DWORD NumberParameters; + DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} +alias _EXCEPTION_RECORD32 EXCEPTION_RECORD32; +alias _EXCEPTION_RECORD32* PEXCEPTION_RECORD32; + +struct _EXCEPTION_RECORD64 { + DWORD ExceptionCode; + DWORD ExceptionFlags; + DWORD64 ExceptionRecord; + DWORD64 ExceptionAddress; + DWORD NumberParameters; + DWORD __unusedAlignment; + DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} +alias _EXCEPTION_RECORD64 EXCEPTION_RECORD64; +alias _EXCEPTION_RECORD64* PEXCEPTION_RECORD64; + +struct _EXCEPTION_POINTERS { + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; +} +alias _EXCEPTION_POINTERS EXCEPTION_POINTERS; +alias _EXCEPTION_POINTERS* PEXCEPTION_POINTERS; + +alias PVOID PACCESS_TOKEN; +alias PVOID PSECURITY_DESCRIPTOR; +alias PVOID PSID; + +alias DWORD ACCESS_MASK; +alias ACCESS_MASK* PACCESS_MASK; + +enum : uint { DELETE = 0x00010000 } +enum : uint { READ_CONTROL = 0x00020000 } +enum : uint { WRITE_DAC = 0x00040000 } +enum : uint { WRITE_OWNER = 0x00080000 } +enum : uint { SYNCHRONIZE = 0x00100000 } + +enum : uint { STANDARD_RIGHTS_REQUIRED = 0x000F0000 } + +enum : uint { STANDARD_RIGHTS_READ = READ_CONTROL } +enum : uint { STANDARD_RIGHTS_WRITE = READ_CONTROL } +enum : uint { STANDARD_RIGHTS_EXECUTE = READ_CONTROL } + +enum : uint { STANDARD_RIGHTS_ALL = 0x001F0000 } + +enum : uint { SPECIFIC_RIGHTS_ALL = 0x0000FFFF } + +enum : uint { ACCESS_SYSTEM_SECURITY = 0x01000000 } + +enum : uint { MAXIMUM_ALLOWED = 0x02000000 } + +enum : uint { GENERIC_READ = 0x80000000 } +enum : uint { GENERIC_WRITE = 0x40000000 } +enum : uint { GENERIC_EXECUTE = 0x20000000 } +enum : uint { GENERIC_ALL = 0x10000000 } + +struct _GENERIC_MAPPING { + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; +} +alias _GENERIC_MAPPING GENERIC_MAPPING; + +alias GENERIC_MAPPING* PGENERIC_MAPPING; + +align(4): + +struct _LUID_AND_ATTRIBUTES { + LUID Luid; + DWORD Attributes; +} +alias _LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES; +alias _LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; + +alias LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; +alias LUID_AND_ATTRIBUTES_ARRAY* PLUID_AND_ATTRIBUTES_ARRAY; + +align: + +// #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED +// #define SID_IDENTIFIER_AUTHORITY_DEFINED +struct _SID_IDENTIFIER_AUTHORITY { + BYTE Value[6]; +} +alias _SID_IDENTIFIER_AUTHORITY SID_IDENTIFIER_AUTHORITY; +alias _SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY; + +// #endif + +// #ifndef SID_DEFINED +// #define SID_DEFINED +struct _SID { + BYTE Revision; + BYTE SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; +// #ifdef MIDL_PASS +// ... +// #else // MIDL_PASS + DWORD SubAuthority[ANYSIZE_ARRAY]; +// #endif // MIDL_PASS +} +alias _SID SID; +alias _SID* PISID; + +// #endif + +enum : uint { SID_REVISION = 1 } +enum : uint { SID_MAX_SUB_AUTHORITIES = 15 } +enum : uint { SID_RECOMMENDED_SUB_AUTHORITIES = 1 } + +// #ifndef MIDL_PASS +const uint SECURITY_MAX_SID_SIZE = SID.sizeof - DWORD.sizeof + (SID_MAX_SUB_AUTHORITIES * DWORD.sizeof); +// #endif // MIDL_PASS + +alias int _SID_NAME_USE; +enum { + SidTypeUser = 1, + SidTypeGroup, + SidTypeDomain, + SidTypeAlias, + SidTypeWellKnownGroup, + SidTypeDeletedAccount, + SidTypeInvalid, + SidTypeUnknown, + SidTypeComputer, +} +alias _SID_NAME_USE SID_NAME_USE; +alias _SID_NAME_USE* PSID_NAME_USE; + +struct _SID_AND_ATTRIBUTES { + PSID Sid; + DWORD Attributes; +} +alias _SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES; +alias _SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; + +alias SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; +alias SID_AND_ATTRIBUTES_ARRAY* PSID_AND_ATTRIBUTES_ARRAY; + +// #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0} +// #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} +// #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} +// #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} +// #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4} +// #define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9} + +enum : uint { SECURITY_NULL_RID = 0x00000000 } +enum : uint { SECURITY_WORLD_RID = 0x00000000 } +enum : uint { SECURITY_LOCAL_RID = 0x00000000 } + +enum : uint { SECURITY_CREATOR_OWNER_RID = 0x00000000 } +enum : uint { SECURITY_CREATOR_GROUP_RID = 0x00000001 } + +enum : uint { SECURITY_CREATOR_OWNER_SERVER_RID = 0x00000002 } +enum : uint { SECURITY_CREATOR_GROUP_SERVER_RID = 0x00000003 } + +// #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} + +enum : uint { SECURITY_DIALUP_RID = 0x00000001 } +enum : uint { SECURITY_NETWORK_RID = 0x00000002 } +enum : uint { SECURITY_BATCH_RID = 0x00000003 } +enum : uint { SECURITY_INTERACTIVE_RID = 0x00000004 } +enum : uint { SECURITY_SERVICE_RID = 0x00000006 } +enum : uint { SECURITY_ANONYMOUS_LOGON_RID = 0x00000007 } +enum : uint { SECURITY_PROXY_RID = 0x00000008 } +enum : uint { SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x00000009 } +alias SECURITY_ENTERPRISE_CONTROLLERS_RID SECURITY_SERVER_LOGON_RID; +enum : uint { SECURITY_PRINCIPAL_SELF_RID = 0x0000000A } +enum : uint { SECURITY_AUTHENTICATED_USER_RID = 0x0000000B } +enum : uint { SECURITY_RESTRICTED_CODE_RID = 0x0000000C } +enum : uint { SECURITY_TERMINAL_SERVER_RID = 0x0000000D } +enum : uint { SECURITY_REMOTE_LOGON_RID = 0x0000000E } + +enum : uint { SECURITY_LOGON_IDS_RID = 0x00000005 } +enum : uint { SECURITY_LOGON_IDS_RID_COUNT = 3 } + +enum : uint { SECURITY_LOCAL_SYSTEM_RID = 0x00000012 } +enum : uint { SECURITY_LOCAL_SERVICE_RID = 0x00000013 } +enum : uint { SECURITY_NETWORK_SERVICE_RID = 0x00000014 } + +enum : uint { SECURITY_NT_NON_UNIQUE = 0x00000015 } +enum : uint { SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT = 3 } + +enum : uint { SECURITY_BUILTIN_DOMAIN_RID = 0x00000020 } + +enum : uint { DOMAIN_USER_RID_ADMIN = 0x000001F4 } +enum : uint { DOMAIN_USER_RID_GUEST = 0x000001F5 } +enum : uint { DOMAIN_USER_RID_KRBTGT = 0x000001F6 } + +enum : uint { DOMAIN_GROUP_RID_ADMINS = 0x00000200 } +enum : uint { DOMAIN_GROUP_RID_USERS = 0x00000201 } +enum : uint { DOMAIN_GROUP_RID_GUESTS = 0x00000202 } +enum : uint { DOMAIN_GROUP_RID_COMPUTERS = 0x00000203 } +enum : uint { DOMAIN_GROUP_RID_CONTROLLERS = 0x00000204 } +enum : uint { DOMAIN_GROUP_RID_CERT_ADMINS = 0x00000205 } +enum : uint { DOMAIN_GROUP_RID_SCHEMA_ADMINS = 0x00000206 } +enum : uint { DOMAIN_GROUP_RID_ENTERPRISE_ADMINS = 0x00000207 } +enum : uint { DOMAIN_GROUP_RID_POLICY_ADMINS = 0x00000208 } + +enum : uint { DOMAIN_ALIAS_RID_ADMINS = 0x00000220 } +enum : uint { DOMAIN_ALIAS_RID_USERS = 0x00000221 } +enum : uint { DOMAIN_ALIAS_RID_GUESTS = 0x00000222 } +enum : uint { DOMAIN_ALIAS_RID_POWER_USERS = 0x00000223 } + +enum : uint { DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x00000224 } +enum : uint { DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x00000225 } +enum : uint { DOMAIN_ALIAS_RID_PRINT_OPS = 0x00000226 } +enum : uint { DOMAIN_ALIAS_RID_BACKUP_OPS = 0x00000227 } + +enum : uint { DOMAIN_ALIAS_RID_REPLICATOR = 0x00000228 } +enum : uint { DOMAIN_ALIAS_RID_RAS_SERVERS = 0x00000229 } +enum : uint { DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x0000022A } +enum : uint { DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x0000022B } +enum : uint { DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x0000022C } + +const LUID SYSTEM_LUID = {LowPart: 0x3e7, HighPart: 0x0}; +const LUID ANONYMOUS_LOGON_LUID = {LowPart: 0x3e6, HighPart: 0x0}; +const LUID LOCALSERVICE_LUID = {LowPart: 0x3e5, HighPart: 0x0}; +const LUID NETWORKSERVICE_LUID = {LowPart: 0x3e4, HighPart: 0x0}; + +enum : uint { SE_GROUP_MANDATORY = 0x00000001 } +enum : uint { SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002 } +enum : uint { SE_GROUP_ENABLED = 0x00000004 } +enum : uint { SE_GROUP_OWNER = 0x00000008 } +enum : uint { SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010 } +enum : uint { SE_GROUP_LOGON_ID = 0xC0000000 } +enum : uint { SE_GROUP_RESOURCE = 0x20000000 } + +enum : uint { ACL_REVISION = 2 } +enum : uint { ACL_REVISION_DS = 4 } + +enum : uint { ACL_REVISION1 = 1 } +enum { MIN_ACL_REVISION = 2 } +enum : uint { ACL_REVISION2 = 2 } +enum : uint { ACL_REVISION3 = 3 } +enum : uint { ACL_REVISION4 = 4 } +alias ACL_REVISION4 MAX_ACL_REVISION; + +struct _ACL { + BYTE AclRevision; + BYTE Sbz1; + WORD AclSize; + WORD AceCount; + WORD Sbz2; +} +alias _ACL ACL; + +alias ACL* PACL; + +struct _ACE_HEADER { + BYTE AceType; + BYTE AceFlags; + WORD AceSize; +} +alias _ACE_HEADER ACE_HEADER; + +alias ACE_HEADER* PACE_HEADER; + +enum : uint { ACCESS_MIN_MS_ACE_TYPE = 0x0 } +enum : uint { ACCESS_ALLOWED_ACE_TYPE = 0x0 } +enum : uint { ACCESS_DENIED_ACE_TYPE = 0x1 } +enum : uint { SYSTEM_AUDIT_ACE_TYPE = 0x2 } +enum : uint { SYSTEM_ALARM_ACE_TYPE = 0x3 } +enum : uint { ACCESS_MAX_MS_V2_ACE_TYPE = 0x3 } + +enum : uint { ACCESS_ALLOWED_COMPOUND_ACE_TYPE = 0x4 } +enum : uint { ACCESS_MAX_MS_V3_ACE_TYPE = 0x4 } + +enum : uint { ACCESS_MIN_MS_OBJECT_ACE_TYPE = 0x5 } +enum : uint { ACCESS_ALLOWED_OBJECT_ACE_TYPE = 0x5 } +enum : uint { ACCESS_DENIED_OBJECT_ACE_TYPE = 0x6 } +enum : uint { SYSTEM_AUDIT_OBJECT_ACE_TYPE = 0x7 } +enum : uint { SYSTEM_ALARM_OBJECT_ACE_TYPE = 0x8 } +enum : uint { ACCESS_MAX_MS_OBJECT_ACE_TYPE = 0x8 } + +enum : uint { ACCESS_MAX_MS_V4_ACE_TYPE = 0x8 } +enum : uint { ACCESS_MAX_MS_ACE_TYPE = 0x8 } + +enum : uint { ACCESS_ALLOWED_CALLBACK_ACE_TYPE = 0x9 } +enum : uint { ACCESS_DENIED_CALLBACK_ACE_TYPE = 0xA } +enum : uint { ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE = 0xB } +enum : uint { ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE = 0xC } +enum : uint { SYSTEM_AUDIT_CALLBACK_ACE_TYPE = 0xD } +enum : uint { SYSTEM_ALARM_CALLBACK_ACE_TYPE = 0xE } +enum : uint { SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE = 0xF } +enum : uint { SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE = 0x10 } + +enum : uint { ACCESS_MAX_MS_V5_ACE_TYPE = 0x10 } + +enum : uint { OBJECT_INHERIT_ACE = 0x1 } +enum : uint { CONTAINER_INHERIT_ACE = 0x2 } +enum : uint { NO_PROPAGATE_INHERIT_ACE = 0x4 } +enum : uint { INHERIT_ONLY_ACE = 0x8 } +enum : uint { INHERITED_ACE = 0x10 } +enum : uint { VALID_INHERIT_FLAGS = 0x1F } + +enum : uint { SUCCESSFUL_ACCESS_ACE_FLAG = 0x40 } +enum : uint { FAILED_ACCESS_ACE_FLAG = 0x80 } + +struct _ACCESS_ALLOWED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _ACCESS_ALLOWED_ACE ACCESS_ALLOWED_ACE; + +alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; + +struct _ACCESS_DENIED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _ACCESS_DENIED_ACE ACCESS_DENIED_ACE; + +alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; + +struct _SYSTEM_AUDIT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _SYSTEM_AUDIT_ACE SYSTEM_AUDIT_ACE; + +alias SYSTEM_AUDIT_ACE* PSYSTEM_AUDIT_ACE; + +struct _SYSTEM_ALARM_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _SYSTEM_ALARM_ACE SYSTEM_ALARM_ACE; + +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 ACCESS_ALLOWED_OBJECT_ACE; +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 ACCESS_DENIED_OBJECT_ACE; +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 SYSTEM_AUDIT_OBJECT_ACE; +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 SYSTEM_ALARM_OBJECT_ACE; +alias _SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; + +struct _ACCESS_ALLOWED_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _ACCESS_ALLOWED_CALLBACK_ACE ACCESS_ALLOWED_CALLBACK_ACE; +alias _ACCESS_ALLOWED_CALLBACK_ACE* PACCESS_ALLOWED_CALLBACK_ACE; + +struct _ACCESS_DENIED_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _ACCESS_DENIED_CALLBACK_ACE ACCESS_DENIED_CALLBACK_ACE; +alias _ACCESS_DENIED_CALLBACK_ACE* PACCESS_DENIED_CALLBACK_ACE; + +struct _SYSTEM_AUDIT_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _SYSTEM_AUDIT_CALLBACK_ACE SYSTEM_AUDIT_CALLBACK_ACE; +alias _SYSTEM_AUDIT_CALLBACK_ACE* PSYSTEM_AUDIT_CALLBACK_ACE; + +struct _SYSTEM_ALARM_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _SYSTEM_ALARM_CALLBACK_ACE SYSTEM_ALARM_CALLBACK_ACE; +alias _SYSTEM_ALARM_CALLBACK_ACE* PSYSTEM_ALARM_CALLBACK_ACE; + +struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE ACCESS_ALLOWED_CALLBACK_OBJECT_ACE; +alias _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE* PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; + +struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias _ACCESS_DENIED_CALLBACK_OBJECT_ACE ACCESS_DENIED_CALLBACK_OBJECT_ACE; +alias _ACCESS_DENIED_CALLBACK_OBJECT_ACE* PACCESS_DENIED_CALLBACK_OBJECT_ACE; + +struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE SYSTEM_AUDIT_CALLBACK_OBJECT_ACE; +alias _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE* PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; + +struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias _SYSTEM_ALARM_CALLBACK_OBJECT_ACE SYSTEM_ALARM_CALLBACK_OBJECT_ACE; +alias _SYSTEM_ALARM_CALLBACK_OBJECT_ACE* PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; + +enum : uint { ACE_OBJECT_TYPE_PRESENT = 0x1 } +enum : uint { ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2 } + +alias int _ACL_INFORMATION_CLASS; +enum { + AclRevisionInformation = 1, + AclSizeInformation, +} +alias _ACL_INFORMATION_CLASS ACL_INFORMATION_CLASS; + +struct _ACL_REVISION_INFORMATION { + DWORD AclRevision; +} +alias _ACL_REVISION_INFORMATION ACL_REVISION_INFORMATION; + +alias ACL_REVISION_INFORMATION* PACL_REVISION_INFORMATION; + +struct _ACL_SIZE_INFORMATION { + DWORD AceCount; + DWORD AclBytesInUse; + DWORD AclBytesFree; +} +alias _ACL_SIZE_INFORMATION ACL_SIZE_INFORMATION; + +alias ACL_SIZE_INFORMATION* PACL_SIZE_INFORMATION; + +enum : uint { SECURITY_DESCRIPTOR_REVISION = 1 } +enum : uint { SECURITY_DESCRIPTOR_REVISION1 = 1 } + +const uint SECURITY_DESCRIPTOR_MIN_LENGTH = SECURITY_DESCRIPTOR.sizeof; + +alias WORD SECURITY_DESCRIPTOR_CONTROL; +alias WORD* PSECURITY_DESCRIPTOR_CONTROL; + +enum : uint { SE_OWNER_DEFAULTED = 0x0001 } +enum : uint { SE_GROUP_DEFAULTED = 0x0002 } +enum : uint { SE_DACL_PRESENT = 0x0004 } +enum : uint { SE_DACL_DEFAULTED = 0x0008 } +enum : uint { SE_SACL_PRESENT = 0x0010 } +enum : uint { SE_SACL_DEFAULTED = 0x0020 } +enum : uint { SE_DACL_AUTO_INHERIT_REQ = 0x0100 } +enum : uint { SE_SACL_AUTO_INHERIT_REQ = 0x0200 } +enum : uint { SE_DACL_AUTO_INHERITED = 0x0400 } +enum : uint { SE_SACL_AUTO_INHERITED = 0x0800 } +enum : uint { SE_DACL_PROTECTED = 0x1000 } +enum : uint { SE_SACL_PROTECTED = 0x2000 } +enum : uint { SE_RM_CONTROL_VALID = 0x4000 } +enum : uint { SE_SELF_RELATIVE = 0x8000 } + +struct _SECURITY_DESCRIPTOR_RELATIVE { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + DWORD Owner; + DWORD Group; + DWORD Sacl; + DWORD Dacl; +} +alias _SECURITY_DESCRIPTOR_RELATIVE SECURITY_DESCRIPTOR_RELATIVE; +alias _SECURITY_DESCRIPTOR_RELATIVE* PISECURITY_DESCRIPTOR_RELATIVE; + +struct _SECURITY_DESCRIPTOR { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; +} +alias _SECURITY_DESCRIPTOR SECURITY_DESCRIPTOR; +alias _SECURITY_DESCRIPTOR* PISECURITY_DESCRIPTOR; + +struct _OBJECT_TYPE_LIST { + WORD Level; + WORD Sbz; + GUID *ObjectType; +} +alias _OBJECT_TYPE_LIST OBJECT_TYPE_LIST; +alias _OBJECT_TYPE_LIST* POBJECT_TYPE_LIST; + +enum : uint { ACCESS_OBJECT_GUID = 0 } +enum : uint { ACCESS_PROPERTY_SET_GUID = 1 } +enum : uint { ACCESS_PROPERTY_GUID = 2 } + +enum : uint { ACCESS_MAX_LEVEL = 4 } + +alias int _AUDIT_EVENT_TYPE; +enum { + AuditEventObjectAccess, + AuditEventDirectoryServiceAccess, +} +alias _AUDIT_EVENT_TYPE AUDIT_EVENT_TYPE; +alias _AUDIT_EVENT_TYPE* PAUDIT_EVENT_TYPE; + +enum : uint { AUDIT_ALLOW_NO_PRIVILEGE = 0x1 } + +const char[] ACCESS_DS_SOURCE_A = "DS"; +const wchar[] ACCESS_DS_SOURCE_W = "DS"; +const char[] ACCESS_DS_OBJECT_TYPE_NAME_A = "Directory Service Object"; +const wchar[] ACCESS_DS_OBJECT_TYPE_NAME_W = "Directory Service Object"; + +enum : uint { SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001 } +enum : uint { SE_PRIVILEGE_ENABLED = 0x00000002 } +enum : uint { SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000 } + +enum : uint { PRIVILEGE_SET_ALL_NECESSARY = 1 } + +struct _PRIVILEGE_SET { + DWORD PrivilegeCount; + DWORD Control; + LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; +} +alias _PRIVILEGE_SET PRIVILEGE_SET; +alias _PRIVILEGE_SET* PPRIVILEGE_SET; + +const TCHAR[] SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"; +const TCHAR[] SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"; +const TCHAR[] SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"; +const TCHAR[] SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"; +const TCHAR[] SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"; +const TCHAR[] SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"; +const TCHAR[] SE_TCB_NAME = "SeTcbPrivilege"; +const TCHAR[] SE_SECURITY_NAME = "SeSecurityPrivilege"; +const TCHAR[] SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"; +const TCHAR[] SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"; +const TCHAR[] SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"; +const TCHAR[] SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"; +const TCHAR[] SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"; +const TCHAR[] SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"; +const TCHAR[] SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"; +const TCHAR[] SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"; +const TCHAR[] SE_BACKUP_NAME = "SeBackupPrivilege"; +const TCHAR[] SE_RESTORE_NAME = "SeRestorePrivilege"; +const TCHAR[] SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; +const TCHAR[] SE_DEBUG_NAME = "SeDebugPrivilege"; +const TCHAR[] SE_AUDIT_NAME = "SeAuditPrivilege"; +const TCHAR[] SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"; +const TCHAR[] SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"; +const TCHAR[] SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"; +const TCHAR[] SE_UNDOCK_NAME = "SeUndockPrivilege"; +const TCHAR[] SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"; +const TCHAR[] SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"; +const TCHAR[] SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"; + +alias int _SECURITY_IMPERSONATION_LEVEL; +enum { + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation, +} +alias _SECURITY_IMPERSONATION_LEVEL SECURITY_IMPERSONATION_LEVEL; +alias _SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; + +alias SecurityDelegation SECURITY_MAX_IMPERSONATION_LEVEL; +alias SecurityAnonymous SECURITY_MIN_IMPERSONATION_LEVEL; +alias SecurityImpersonation DEFAULT_IMPERSONATION_LEVEL; +bit VALID_IMPERSONATION_LEVEL(SECURITY_IMPERSONATION_LEVEL L){ return (L >= SECURITY_MIN_IMPERSONATION_LEVEL) && (L <= SECURITY_MAX_IMPERSONATION_LEVEL); } + +enum : uint { TOKEN_ASSIGN_PRIMARY = 0x0001 } +enum : uint { TOKEN_DUPLICATE = 0x0002 } +enum : uint { TOKEN_IMPERSONATE = 0x0004 } +enum : uint { TOKEN_QUERY = 0x0008 } +enum : uint { TOKEN_QUERY_SOURCE = 0x0010 } +enum : uint { TOKEN_ADJUST_PRIVILEGES = 0x0020 } +enum : uint { TOKEN_ADJUST_GROUPS = 0x0040 } +enum : uint { TOKEN_ADJUST_DEFAULT = 0x0080 } +enum : uint { TOKEN_ADJUST_SESSIONID = 0x0100 } + +enum : uint { TOKEN_ALL_ACCESS_P = STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT } + +// #if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT))) +enum : uint { TOKEN_ALL_ACCESS = TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID } +// #else +// #... +// #endif + +enum : uint { TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY } + +enum : uint { TOKEN_WRITE = STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT } + +enum : uint { TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE } + +alias int _TOKEN_TYPE; +enum { + TokenPrimary = 1, + TokenImpersonation, +} +alias _TOKEN_TYPE TOKEN_TYPE; + +alias TOKEN_TYPE* PTOKEN_TYPE; + +alias int _TOKEN_INFORMATION_CLASS; +enum { + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, +} +alias _TOKEN_INFORMATION_CLASS TOKEN_INFORMATION_CLASS; +alias _TOKEN_INFORMATION_CLASS* PTOKEN_INFORMATION_CLASS; + +struct _TOKEN_USER { + SID_AND_ATTRIBUTES User; +} +alias _TOKEN_USER TOKEN_USER; +alias _TOKEN_USER* PTOKEN_USER; + +struct _TOKEN_GROUPS { + DWORD GroupCount; + SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; +} +alias _TOKEN_GROUPS TOKEN_GROUPS; +alias _TOKEN_GROUPS* PTOKEN_GROUPS; + +struct _TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; +} +alias _TOKEN_PRIVILEGES TOKEN_PRIVILEGES; +alias _TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES; + +struct _TOKEN_OWNER { + PSID Owner; +} +alias _TOKEN_OWNER TOKEN_OWNER; +alias _TOKEN_OWNER* PTOKEN_OWNER; + +struct _TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; +} +alias _TOKEN_PRIMARY_GROUP TOKEN_PRIMARY_GROUP; +alias _TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; + +struct _TOKEN_DEFAULT_DACL { + PACL DefaultDacl; +} +alias _TOKEN_DEFAULT_DACL TOKEN_DEFAULT_DACL; +alias _TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; + +struct _TOKEN_GROUPS_AND_PRIVILEGES { + DWORD SidCount; + DWORD SidLength; + PSID_AND_ATTRIBUTES Sids; + DWORD RestrictedSidCount; + DWORD RestrictedSidLength; + PSID_AND_ATTRIBUTES RestrictedSids; + DWORD PrivilegeCount; + DWORD PrivilegeLength; + PLUID_AND_ATTRIBUTES Privileges; + LUID AuthenticationId; +} +alias _TOKEN_GROUPS_AND_PRIVILEGES TOKEN_GROUPS_AND_PRIVILEGES; +alias _TOKEN_GROUPS_AND_PRIVILEGES* PTOKEN_GROUPS_AND_PRIVILEGES; + +enum : uint { TOKEN_SOURCE_LENGTH = 8 } + +struct _TOKEN_SOURCE { + CHAR SourceName[TOKEN_SOURCE_LENGTH]; + LUID SourceIdentifier; +} +alias _TOKEN_SOURCE TOKEN_SOURCE; +alias _TOKEN_SOURCE* PTOKEN_SOURCE; + +struct _TOKEN_STATISTICS { + LUID TokenId; + LUID AuthenticationId; + LARGE_INTEGER ExpirationTime; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + DWORD DynamicCharged; + DWORD DynamicAvailable; + DWORD GroupCount; + DWORD PrivilegeCount; + LUID ModifiedId; +} +alias _TOKEN_STATISTICS TOKEN_STATISTICS; +alias _TOKEN_STATISTICS* PTOKEN_STATISTICS; + +struct _TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; +} +alias _TOKEN_CONTROL TOKEN_CONTROL; +alias _TOKEN_CONTROL* PTOKEN_CONTROL; + +enum : uint { SECURITY_DYNAMIC_TRACKING = TRUE } +enum : uint { SECURITY_STATIC_TRACKING = FALSE } + +alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; +alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; + +struct _SECURITY_QUALITY_OF_SERVICE { + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; +} +alias _SECURITY_QUALITY_OF_SERVICE SECURITY_QUALITY_OF_SERVICE; +alias _SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; + +struct _SE_IMPERSONATION_STATE { + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; +} +alias _SE_IMPERSONATION_STATE SE_IMPERSONATION_STATE; +alias _SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; + +enum : uint { DISABLE_MAX_PRIVILEGE = 0x1 } +enum : uint { SANDBOX_INERT = 0x2 } + +alias DWORD SECURITY_INFORMATION; +alias DWORD* PSECURITY_INFORMATION; + +enum : uint { OWNER_SECURITY_INFORMATION = 0x00000001 } +enum : uint { GROUP_SECURITY_INFORMATION = 0x00000002 } +enum : uint { DACL_SECURITY_INFORMATION = 0x00000004 } +enum : uint { SACL_SECURITY_INFORMATION = 0x00000008 } + +enum : uint { PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 } +enum : uint { PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 } +enum : uint { UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 } +enum : uint { UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 } + +enum : uint { PROCESS_TERMINATE = 0x0001 } +enum : uint { PROCESS_CREATE_THREAD = 0x0002 } +enum : uint { PROCESS_SET_SESSIONID = 0x0004 } +enum : uint { PROCESS_VM_OPERATION = 0x0008 } +enum : uint { PROCESS_VM_READ = 0x0010 } +enum : uint { PROCESS_VM_WRITE = 0x0020 } +enum : uint { PROCESS_DUP_HANDLE = 0x0040 } +enum : uint { PROCESS_CREATE_PROCESS = 0x0080 } +enum : uint { PROCESS_SET_QUOTA = 0x0100 } +enum : uint { PROCESS_SET_INFORMATION = 0x0200 } +enum : uint { PROCESS_QUERY_INFORMATION = 0x0400 } +enum : uint { PROCESS_SUSPEND_RESUME = 0x0800 } +enum : uint { PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF } + +// #if defined(_WIN64) + +// #... + +// #else + +enum : uint { MAXIMUM_PROCESSORS = 32 } + +// #endif + +enum : uint { THREAD_TERMINATE = 0x0001 } +enum : uint { THREAD_SUSPEND_RESUME = 0x0002 } +enum : uint { THREAD_GET_CONTEXT = 0x0008 } +enum : uint { THREAD_SET_CONTEXT = 0x0010 } +enum : uint { THREAD_SET_INFORMATION = 0x0020 } +enum : uint { THREAD_QUERY_INFORMATION = 0x0040 } +enum : uint { THREAD_SET_THREAD_TOKEN = 0x0080 } +enum : uint { THREAD_IMPERSONATE = 0x0100 } +enum : uint { THREAD_DIRECT_IMPERSONATION = 0x0200 } + +enum : uint { THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF } + +enum : uint { JOB_OBJECT_ASSIGN_PROCESS = 0x0001 } +enum : uint { JOB_OBJECT_SET_ATTRIBUTES = 0x0002 } +enum : uint { JOB_OBJECT_QUERY = 0x0004 } +enum : uint { JOB_OBJECT_TERMINATE = 0x0008 } +enum : uint { JOB_OBJECT_SET_SECURITY_ATTRIBUTES = 0x0010 } +enum : uint { JOB_OBJECT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F } + +struct _JOB_SET_ARRAY { + HANDLE JobHandle; + DWORD MemberLevel; + DWORD Flags; +} +alias _JOB_SET_ARRAY JOB_SET_ARRAY; +alias _JOB_SET_ARRAY* PJOB_SET_ARRAY; + +enum : uint { TLS_MINIMUM_AVAILABLE = 64 } + +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 NT_TIB; + +alias NT_TIB* PNT_TIB; + +struct _NT_TIB32 { + DWORD ExceptionList; + DWORD StackBase; + DWORD StackLimit; + DWORD SubSystemTib; +union { + DWORD FiberData; + DWORD Version; +} + + DWORD ArbitraryUserPointer; + DWORD Self; +} +alias _NT_TIB32 NT_TIB32; +alias _NT_TIB32* PNT_TIB32; + +struct _NT_TIB64 { + DWORD64 ExceptionList; + DWORD64 StackBase; + DWORD64 StackLimit; + DWORD64 SubSystemTib; +union { + DWORD64 FiberData; + DWORD Version; +} + + DWORD64 ArbitraryUserPointer; + DWORD64 Self; +} +alias _NT_TIB64 NT_TIB64; +alias _NT_TIB64* PNT_TIB64; + +// #if !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) +// #... +// #endif + +enum : uint { THREAD_BASE_PRIORITY_LOWRT = 15 } +enum : uint { THREAD_BASE_PRIORITY_MAX = 2 } +enum { THREAD_BASE_PRIORITY_MIN = -2 } +enum { THREAD_BASE_PRIORITY_IDLE = -15 } + +struct _QUOTA_LIMITS { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; +} +alias _QUOTA_LIMITS QUOTA_LIMITS; + +alias QUOTA_LIMITS* PQUOTA_LIMITS; + +struct _IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; +} +alias _IO_COUNTERS IO_COUNTERS; + +alias IO_COUNTERS* PIO_COUNTERS; + +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 JOBOBJECT_BASIC_ACCOUNTING_INFORMATION; +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 JOBOBJECT_BASIC_LIMIT_INFORMATION; +alias _JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_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 JOBOBJECT_EXTENDED_LIMIT_INFORMATION; +alias _JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; + +struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { + DWORD NumberOfAssignedProcesses; + DWORD NumberOfProcessIdsInList; + ULONG_PTR ProcessIdList[1]; +} +alias _JOBOBJECT_BASIC_PROCESS_ID_LIST JOBOBJECT_BASIC_PROCESS_ID_LIST; +alias _JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; + +struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { + DWORD UIRestrictionsClass; +} +alias _JOBOBJECT_BASIC_UI_RESTRICTIONS JOBOBJECT_BASIC_UI_RESTRICTIONS; +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 JOBOBJECT_SECURITY_LIMIT_INFORMATION; +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 JOBOBJECT_END_OF_JOB_TIME_INFORMATION; +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 JOBOBJECT_ASSOCIATE_COMPLETION_PORT; +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 JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; +alias _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; + +struct _JOBOBJECT_JOBSET_INFORMATION { + DWORD MemberLevel; +} +alias _JOBOBJECT_JOBSET_INFORMATION JOBOBJECT_JOBSET_INFORMATION; +alias _JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; + +enum : uint { JOB_OBJECT_TERMINATE_AT_END_OF_JOB = 0 } +enum : uint { JOB_OBJECT_POST_AT_END_OF_JOB = 1 } + +enum : uint { JOB_OBJECT_MSG_END_OF_JOB_TIME = 1 } +enum : uint { JOB_OBJECT_MSG_END_OF_PROCESS_TIME = 2 } +enum : uint { JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT = 3 } +enum : uint { JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO = 4 } +enum : uint { JOB_OBJECT_MSG_NEW_PROCESS = 6 } +enum : uint { JOB_OBJECT_MSG_EXIT_PROCESS = 7 } +enum : uint { JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS = 8 } +enum : uint { JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT = 9 } +enum : uint { JOB_OBJECT_MSG_JOB_MEMORY_LIMIT = 10 } + +enum : uint { JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 } +enum : uint { JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 } +enum : uint { JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 } +enum : uint { JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 } +enum : uint { JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 } +enum : uint { JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 } +enum : uint { JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 } +enum : uint { JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 } + +enum : uint { JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 } +enum : uint { JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 } +enum : uint { JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 } +enum : uint { JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 } +enum : uint { JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 } +enum : uint { JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 } + +enum : uint { JOB_OBJECT_LIMIT_RESERVED2 = 0x00004000 } +enum : uint { JOB_OBJECT_LIMIT_RESERVED3 = 0x00008000 } +enum : uint { JOB_OBJECT_LIMIT_RESERVED4 = 0x00010000 } +enum : uint { JOB_OBJECT_LIMIT_RESERVED5 = 0x00020000 } +enum : uint { JOB_OBJECT_LIMIT_RESERVED6 = 0x00040000 } + +enum : uint { JOB_OBJECT_LIMIT_VALID_FLAGS = 0x0007ffff } + +enum : uint { JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS = 0x000000ff } +enum : uint { JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS = 0x00003fff } +enum : uint { JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS = 0x0007ffff } + +enum : uint { JOB_OBJECT_UILIMIT_NONE = 0x00000000 } + +enum : uint { JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 } +enum : uint { JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 } +enum : uint { JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 } +enum : uint { JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 } +enum : uint { JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 } +enum : uint { JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 } +enum : uint { JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 } +enum : uint { JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 } + +enum : uint { JOB_OBJECT_UILIMIT_ALL = 0x000000FF } + +enum : uint { JOB_OBJECT_UI_VALID_FLAGS = 0x000000FF } + +enum : uint { JOB_OBJECT_SECURITY_NO_ADMIN = 0x00000001 } +enum : uint { JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x00000002 } +enum : uint { JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x00000004 } +enum : uint { JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x00000008 } + +enum : uint { JOB_OBJECT_SECURITY_VALID_FLAGS = 0x0000000f } + +alias int _JOBOBJECTINFOCLASS; +enum { + JobObjectBasicAccountingInformation = 1, + JobObjectBasicLimitInformation, + JobObjectBasicProcessIdList, + JobObjectBasicUIRestrictions, + JobObjectSecurityLimitInformation, + JobObjectEndOfJobTimeInformation, + JobObjectAssociateCompletionPortInformation, + JobObjectBasicAndIoAccountingInformation, + JobObjectExtendedLimitInformation, + JobObjectJobSetInformation, + MaxJobObjectInfoClass, +} +alias _JOBOBJECTINFOCLASS JOBOBJECTINFOCLASS; + +enum : uint { EVENT_MODIFY_STATE = 0x0002 } +enum : uint { EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 } +enum : uint { MUTANT_QUERY_STATE = 0x0001 } + +enum : uint { MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE } +enum : uint { SEMAPHORE_MODIFY_STATE = 0x0002 } +enum : uint { SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 } + +enum : uint { TIMER_QUERY_STATE = 0x0001 } +enum : uint { TIMER_MODIFY_STATE = 0x0002 } + +enum : uint { TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE } + +enum : uint { TIME_ZONE_ID_UNKNOWN = 0 } +enum : uint { TIME_ZONE_ID_STANDARD = 1 } +enum : uint { TIME_ZONE_ID_DAYLIGHT = 2 } + +enum : uint { MAXIMUM_NUMA_NODES = 16 } + +struct _SYSTEM_NUMA_INFORMATION { + DWORD HighestNodeNumber; + DWORD Reserved; +union { + ULONGLONG ActiveProcessorsAffinityMask[MAXIMUM_NUMA_NODES]; + ULONGLONG AvailableMemory[MAXIMUM_NUMA_NODES]; +} + +} +alias _SYSTEM_NUMA_INFORMATION SYSTEM_NUMA_INFORMATION; +alias _SYSTEM_NUMA_INFORMATION* PSYSTEM_NUMA_INFORMATION; + +enum : uint { PROCESSOR_INTEL_386 = 386 } +enum : uint { PROCESSOR_INTEL_486 = 486 } +enum : uint { PROCESSOR_INTEL_PENTIUM = 586 } +enum : uint { PROCESSOR_INTEL_IA64 = 2200 } +enum : uint { PROCESSOR_MIPS_R4000 = 4000 } +enum : uint { PROCESSOR_ALPHA_21064 = 21064 } +enum : uint { PROCESSOR_PPC_601 = 601 } +enum : uint { PROCESSOR_PPC_603 = 603 } +enum : uint { PROCESSOR_PPC_604 = 604 } +enum : uint { PROCESSOR_PPC_620 = 620 } +enum : uint { PROCESSOR_HITACHI_SH3 = 10003 } +enum : uint { PROCESSOR_HITACHI_SH3E = 10004 } +enum : uint { PROCESSOR_HITACHI_SH4 = 10005 } +enum : uint { PROCESSOR_MOTOROLA_821 = 821 } +enum : uint { PROCESSOR_SHx_SH3 = 103 } +enum : uint { PROCESSOR_SHx_SH4 = 104 } +enum : uint { PROCESSOR_STRONGARM = 2577 } +enum : uint { PROCESSOR_ARM720 = 1824 } +enum : uint { PROCESSOR_ARM820 = 2080 } +enum : uint { PROCESSOR_ARM920 = 2336 } +enum : uint { PROCESSOR_ARM_7TDMI = 70001 } +enum : uint { PROCESSOR_OPTIL = 0x494f } + +enum : uint { PROCESSOR_ARCHITECTURE_INTEL = 0 } +enum : uint { PROCESSOR_ARCHITECTURE_MIPS = 1 } +enum : uint { PROCESSOR_ARCHITECTURE_ALPHA = 2 } +enum : uint { PROCESSOR_ARCHITECTURE_PPC = 3 } +enum : uint { PROCESSOR_ARCHITECTURE_SHX = 4 } +enum : uint { PROCESSOR_ARCHITECTURE_ARM = 5 } +enum : uint { PROCESSOR_ARCHITECTURE_IA64 = 6 } +enum : uint { PROCESSOR_ARCHITECTURE_ALPHA64 = 7 } +enum : uint { PROCESSOR_ARCHITECTURE_MSIL = 8 } +enum : uint { PROCESSOR_ARCHITECTURE_AMD64 = 9 } +enum : uint { PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 = 10 } + +enum : uint { PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF } + +enum : uint { PF_FLOATING_POINT_PRECISION_ERRATA = 0 } +enum : uint { PF_FLOATING_POINT_EMULATED = 1 } +enum : uint { PF_COMPARE_EXCHANGE_DOUBLE = 2 } +enum : uint { PF_MMX_INSTRUCTIONS_AVAILABLE = 3 } +enum : uint { PF_PPC_MOVEMEM_64BIT_OK = 4 } +enum : uint { PF_ALPHA_BYTE_INSTRUCTIONS = 5 } +enum : uint { PF_XMMI_INSTRUCTIONS_AVAILABLE = 6 } +enum : uint { PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7 } +enum : uint { PF_RDTSC_INSTRUCTION_AVAILABLE = 8 } +enum : uint { PF_PAE_ENABLED = 9 } +enum : uint { PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10 } + +struct _MEMORY_BASIC_INFORMATION { + PVOID BaseAddress; + PVOID AllocationBase; + DWORD AllocationProtect; + SIZE_T RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; +} +alias _MEMORY_BASIC_INFORMATION MEMORY_BASIC_INFORMATION; +alias _MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; + +struct _MEMORY_BASIC_INFORMATION32 { + DWORD BaseAddress; + DWORD AllocationBase; + DWORD AllocationProtect; + DWORD RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; +} +alias _MEMORY_BASIC_INFORMATION32 MEMORY_BASIC_INFORMATION32; +alias _MEMORY_BASIC_INFORMATION32* PMEMORY_BASIC_INFORMATION32; + +struct _MEMORY_BASIC_INFORMATION64 { + ULONGLONG BaseAddress; + ULONGLONG AllocationBase; + DWORD AllocationProtect; + DWORD __alignment1; + ULONGLONG RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; + DWORD __alignment2; +} +alias _MEMORY_BASIC_INFORMATION64 MEMORY_BASIC_INFORMATION64; +alias _MEMORY_BASIC_INFORMATION64* PMEMORY_BASIC_INFORMATION64; + +enum : uint { SECTION_QUERY = 0x0001 } +enum : uint { SECTION_MAP_WRITE = 0x0002 } +enum : uint { SECTION_MAP_READ = 0x0004 } +enum : uint { SECTION_MAP_EXECUTE = 0x0008 } +enum : uint { SECTION_EXTEND_SIZE = 0x0010 } + +enum : uint { SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE } +enum : uint { PAGE_NOACCESS = 0x01 } +enum : uint { PAGE_READONLY = 0x02 } +enum : uint { PAGE_READWRITE = 0x04 } +enum : uint { PAGE_WRITECOPY = 0x08 } +enum : uint { PAGE_EXECUTE = 0x10 } +enum : uint { PAGE_EXECUTE_READ = 0x20 } +enum : uint { PAGE_EXECUTE_READWRITE = 0x40 } +enum : uint { PAGE_EXECUTE_WRITECOPY = 0x80 } +enum : uint { PAGE_GUARD = 0x100 } +enum : uint { PAGE_NOCACHE = 0x200 } +enum : uint { PAGE_WRITECOMBINE = 0x400 } +enum : uint { MEM_COMMIT = 0x1000 } +enum : uint { MEM_RESERVE = 0x2000 } +enum : uint { MEM_DECOMMIT = 0x4000 } +enum : uint { MEM_RELEASE = 0x8000 } +enum : uint { MEM_FREE = 0x10000 } +enum : uint { MEM_PRIVATE = 0x20000 } +enum : uint { MEM_MAPPED = 0x40000 } +enum : uint { MEM_RESET = 0x80000 } +enum : uint { MEM_TOP_DOWN = 0x100000 } +enum : uint { MEM_WRITE_WATCH = 0x200000 } +enum : uint { MEM_PHYSICAL = 0x400000 } +enum : uint { MEM_4MB_PAGES = 0x80000000 } +enum : uint { SEC_FILE = 0x800000 } +enum : uint { SEC_IMAGE = 0x1000000 } +enum : uint { SEC_RESERVE = 0x4000000 } +enum : uint { SEC_COMMIT = 0x8000000 } +enum : uint { SEC_NOCACHE = 0x10000000 } +alias SEC_IMAGE MEM_IMAGE; +enum : uint { WRITE_WATCH_FLAG_RESET = 0x01 } + +enum : uint { FILE_READ_DATA = 0x0001 } +enum : uint { FILE_LIST_DIRECTORY = 0x0001 } + +enum : uint { FILE_WRITE_DATA = 0x0002 } +enum : uint { FILE_ADD_FILE = 0x0002 } + +enum : uint { FILE_APPEND_DATA = 0x0004 } +enum : uint { FILE_ADD_SUBDIRECTORY = 0x0004 } +enum : uint { FILE_CREATE_PIPE_INSTANCE = 0x0004 } + +enum : uint { FILE_READ_EA = 0x0008 } + +enum : uint { FILE_WRITE_EA = 0x0010 } + +enum : uint { FILE_EXECUTE = 0x0020 } +enum : uint { FILE_TRAVERSE = 0x0020 } + +enum : uint { FILE_DELETE_CHILD = 0x0040 } + +enum : uint { FILE_READ_ATTRIBUTES = 0x0080 } + +enum : uint { FILE_WRITE_ATTRIBUTES = 0x0100 } + +enum : uint { FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF } + +enum : uint { FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE } + +enum : uint { FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE } + +enum : uint { FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE } + +enum : uint { FILE_SHARE_READ = 0x00000001 } +enum : uint { FILE_SHARE_WRITE = 0x00000002 } +enum : uint { FILE_SHARE_DELETE = 0x00000004 } +enum : uint { FILE_ATTRIBUTE_READONLY = 0x00000001 } +enum : uint { FILE_ATTRIBUTE_HIDDEN = 0x00000002 } +enum : uint { FILE_ATTRIBUTE_SYSTEM = 0x00000004 } +enum : uint { FILE_ATTRIBUTE_DIRECTORY = 0x00000010 } +enum : uint { FILE_ATTRIBUTE_ARCHIVE = 0x00000020 } +enum : uint { FILE_ATTRIBUTE_DEVICE = 0x00000040 } +enum : uint { FILE_ATTRIBUTE_NORMAL = 0x00000080 } +enum : uint { FILE_ATTRIBUTE_TEMPORARY = 0x00000100 } +enum : uint { FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 } +enum : uint { FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 } +enum : uint { FILE_ATTRIBUTE_COMPRESSED = 0x00000800 } +enum : uint { FILE_ATTRIBUTE_OFFLINE = 0x00001000 } +enum : uint { FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 } +enum : uint { FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 } +enum : uint { FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001 } +enum : uint { FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002 } +enum : uint { FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004 } +enum : uint { FILE_NOTIFY_CHANGE_SIZE = 0x00000008 } +enum : uint { FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010 } +enum : uint { FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020 } +enum : uint { FILE_NOTIFY_CHANGE_CREATION = 0x00000040 } +enum : uint { FILE_NOTIFY_CHANGE_SECURITY = 0x00000100 } +enum : uint { FILE_ACTION_ADDED = 0x00000001 } +enum : uint { FILE_ACTION_REMOVED = 0x00000002 } +enum : uint { FILE_ACTION_MODIFIED = 0x00000003 } +enum : uint { FILE_ACTION_RENAMED_OLD_NAME = 0x00000004 } +enum : uint { FILE_ACTION_RENAMED_NEW_NAME = 0x00000005 } +enum : DWORD { MAILSLOT_NO_MESSAGE = cast(DWORD)-1 } +enum : DWORD { MAILSLOT_WAIT_FOREVER = cast(DWORD)-1 } +enum : uint { FILE_CASE_SENSITIVE_SEARCH = 0x00000001 } +enum : uint { FILE_CASE_PRESERVED_NAMES = 0x00000002 } +enum : uint { FILE_UNICODE_ON_DISK = 0x00000004 } +enum : uint { FILE_PERSISTENT_ACLS = 0x00000008 } +enum : uint { FILE_FILE_COMPRESSION = 0x00000010 } +enum : uint { FILE_VOLUME_QUOTAS = 0x00000020 } +enum : uint { FILE_SUPPORTS_SPARSE_FILES = 0x00000040 } +enum : uint { FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 } +enum : uint { FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100 } +enum : uint { FILE_VOLUME_IS_COMPRESSED = 0x00008000 } +enum : uint { FILE_SUPPORTS_OBJECT_IDS = 0x00010000 } +enum : uint { FILE_SUPPORTS_ENCRYPTION = 0x00020000 } +enum : uint { FILE_NAMED_STREAMS = 0x00040000 } +enum : uint { FILE_READ_ONLY_VOLUME = 0x00080000 } + +struct _FILE_NOTIFY_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR FileName[1]; +} +alias _FILE_NOTIFY_INFORMATION FILE_NOTIFY_INFORMATION; +alias _FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; + +union _FILE_SEGMENT_ELEMENT { + PVOID64 Buffer; + ULONGLONG Alignment; +} +alias _FILE_SEGMENT_ELEMENT FILE_SEGMENT_ELEMENT; +alias _FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; + +struct _REPARSE_GUID_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + GUID ReparseGuid; +struct { + BYTE DataBuffer[1]; +} + +} +alias _REPARSE_GUID_DATA_BUFFER REPARSE_GUID_DATA_BUFFER; +alias _REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; + +// #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer) + +enum : uint { MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 } + +enum : uint { IO_REPARSE_TAG_RESERVED_ZERO = 0 } +enum : uint { IO_REPARSE_TAG_RESERVED_ONE = 1 } + +alias IO_REPARSE_TAG_RESERVED_ONE IO_REPARSE_TAG_RESERVED_RANGE; + +// #define IsReparseTagMicrosoft(_tag) ( ((_tag) & 0x80000000) ) + +// #define IsReparseTagNameSurrogate(_tag) ( ((_tag) & 0x20000000) ) + +enum : uint { IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 } +enum : uint { IO_REPARSE_TAG_HSM = 0xC0000004 } +enum : uint { IO_REPARSE_TAG_SIS = 0x80000007 } +enum : uint { IO_REPARSE_TAG_FILTER_MANAGER = 0x8000000B } +enum : uint { IO_COMPLETION_MODIFY_STATE = 0x0002 } +enum : uint { IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 } +enum : uint { DUPLICATE_CLOSE_SOURCE = 0x00000001 } +enum : uint { DUPLICATE_SAME_ACCESS = 0x00000002 } + +alias int _SYSTEM_POWER_STATE; +enum { + PowerSystemUnspecified = 0, + PowerSystemWorking = 1, + PowerSystemSleeping1 = 2, + PowerSystemSleeping2 = 3, + PowerSystemSleeping3 = 4, + PowerSystemHibernate = 5, + PowerSystemShutdown = 6, + PowerSystemMaximum = 7, +} +alias _SYSTEM_POWER_STATE SYSTEM_POWER_STATE; +alias _SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; + +enum : uint { POWER_SYSTEM_MAXIMUM = 7 } + +enum _4 { + PowerActionNone = 0, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject, +} +alias _4 POWER_ACTION; +alias _4* PPOWER_ACTION; + +alias int _DEVICE_POWER_STATE; +enum { + PowerDeviceUnspecified = 0, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum, +} +alias _DEVICE_POWER_STATE DEVICE_POWER_STATE; +alias _DEVICE_POWER_STATE* PDEVICE_POWER_STATE; + +enum : DWORD { ES_SYSTEM_REQUIRED = 0x00000001 } +enum : DWORD { ES_DISPLAY_REQUIRED = 0x00000002 } +enum : DWORD { ES_USER_PRESENT = 0x00000004 } +enum : DWORD { ES_CONTINUOUS = 0x80000000 } + +alias DWORD EXECUTION_STATE; + +enum _5 { + LT_DONT_CARE, + LT_LOWEST_LATENCY, +} +alias _5 LATENCY_TIME; + +enum : uint { PDCAP_D0_SUPPORTED = 0x00000001 } +enum : uint { PDCAP_D1_SUPPORTED = 0x00000002 } +enum : uint { PDCAP_D2_SUPPORTED = 0x00000004 } +enum : uint { PDCAP_D3_SUPPORTED = 0x00000008 } +enum : uint { PDCAP_WAKE_FROM_D0_SUPPORTED = 0x00000010 } +enum : uint { PDCAP_WAKE_FROM_D1_SUPPORTED = 0x00000020 } +enum : uint { PDCAP_WAKE_FROM_D2_SUPPORTED = 0x00000040 } +enum : uint { PDCAP_WAKE_FROM_D3_SUPPORTED = 0x00000080 } +enum : uint { PDCAP_WARM_EJECT_SUPPORTED = 0x00000100 } + +struct CM_Power_Data_s { + DWORD PD_Size; + DEVICE_POWER_STATE PD_MostRecentPowerState; + DWORD PD_Capabilities; + DWORD PD_D1Latency; + DWORD PD_D2Latency; + DWORD PD_D3Latency; + DEVICE_POWER_STATE PD_PowerStateMapping[POWER_SYSTEM_MAXIMUM]; + SYSTEM_POWER_STATE PD_DeepestSystemWake; +} +alias CM_Power_Data_s CM_POWER_DATA; +alias CM_Power_Data_s* PCM_POWER_DATA; + +enum _6 { + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent, +} +alias _6 POWER_INFORMATION_LEVEL; + +struct _7 { + DWORD Granularity; + DWORD Capacity; +} +alias _7 BATTERY_REPORTING_SCALE; +alias _7* PBATTERY_REPORTING_SCALE; + +struct _8 { + POWER_ACTION Action; + DWORD Flags; + DWORD EventCode; +} +alias _8 POWER_ACTION_POLICY; +alias _8* PPOWER_ACTION_POLICY; + +enum : uint { POWER_ACTION_QUERY_ALLOWED = 0x00000001 } +enum : uint { POWER_ACTION_UI_ALLOWED = 0x00000002 } +enum : uint { POWER_ACTION_OVERRIDE_APPS = 0x00000004 } +enum : uint { POWER_ACTION_LIGHTEST_FIRST = 0x10000000 } +enum : uint { POWER_ACTION_LOCK_CONSOLE = 0x20000000 } +enum : uint { POWER_ACTION_DISABLE_WAKES = 0x40000000 } +enum : uint { POWER_ACTION_CRITICAL = 0x80000000 } + +enum : uint { POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001 } +enum : uint { POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002 } +enum : uint { POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004 } +enum : uint { POWER_USER_NOTIFY_BUTTON = 0x00000008 } +enum : uint { POWER_USER_NOTIFY_SHUTDOWN = 0x00000010 } +enum : uint { POWER_FORCE_TRIGGER_RESET = 0x80000000 } + +struct _9 { + BOOLEAN Enable; + BYTE Spare[3]; + DWORD BatteryLevel; + POWER_ACTION_POLICY PowerPolicy; + SYSTEM_POWER_STATE MinSystemState; +} +alias _9 SYSTEM_POWER_LEVEL; +alias _9* PSYSTEM_POWER_LEVEL; + +enum : uint { NUM_DISCHARGE_POLICIES = 4 } +enum : uint { DISCHARGE_POLICY_CRITICAL = 0 } +enum : uint { DISCHARGE_POLICY_LOW = 1 } + +enum : uint { PO_THROTTLE_NONE = 0 } +enum : uint { PO_THROTTLE_CONSTANT = 1 } +enum : uint { PO_THROTTLE_DEGRADE = 2 } +enum : uint { PO_THROTTLE_ADAPTIVE = 3 } +enum : uint { PO_THROTTLE_MAXIMUM = 4 } + +struct _SYSTEM_POWER_POLICY { + DWORD Revision; + + POWER_ACTION_POLICY PowerButton; + POWER_ACTION_POLICY SleepButton; + POWER_ACTION_POLICY LidClose; + SYSTEM_POWER_STATE LidOpenWake; + DWORD Reserved; + POWER_ACTION_POLICY Idle; + DWORD IdleTimeout; + BYTE IdleSensitivity; + + BYTE DynamicThrottle; + BYTE Spare2[2]; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + SYSTEM_POWER_STATE ReducedLatencySleep; + DWORD WinLogonFlags; + DWORD Spare3; + DWORD DozeS4Timeout; + DWORD BroadcastCapacityResolution; + SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES]; + DWORD VideoTimeout; + BOOLEAN VideoDimDisplay; + DWORD VideoReserved[3]; + DWORD SpindownTimeout; + BOOLEAN OptimizeForPower; + BYTE FanThrottleTolerance; + BYTE ForcedThrottle; + BYTE MinThrottle; + POWER_ACTION_POLICY OverThrottled; +} +alias _SYSTEM_POWER_POLICY SYSTEM_POWER_POLICY; +alias _SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; + +struct _PROCESSOR_POWER_POLICY_INFO { + + DWORD TimeCheck; + DWORD DemoteLimit; + DWORD PromoteLimit; + + BYTE DemotePercent; + BYTE PromotePercent; + BYTE Spare[2]; +// DWORD AllowDemotion:1; +// DWORD AllowPromotion:1; +// DWORD Reserved:30; + +} +alias _PROCESSOR_POWER_POLICY_INFO PROCESSOR_POWER_POLICY_INFO; +alias _PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; + +struct _PROCESSOR_POWER_POLICY { + DWORD Revision; + + BYTE DynamicThrottle; + BYTE Spare[3]; + DWORD Reserved; + + DWORD PolicyCount; + PROCESSOR_POWER_POLICY_INFO Policy[3]; +} +alias _PROCESSOR_POWER_POLICY PROCESSOR_POWER_POLICY; +alias _PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; + +struct _ADMINISTRATOR_POWER_POLICY { + + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + DWORD MinVideoTimeout; + DWORD MaxVideoTimeout; + DWORD MinSpindownTimeout; + DWORD MaxSpindownTimeout; +} +alias _ADMINISTRATOR_POWER_POLICY ADMINISTRATOR_POWER_POLICY; +alias _ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; + +struct _10 { + + 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; + BYTE ProcessorMinThrottle; + BYTE ProcessorMaxThrottle; + BYTE spare2[4]; + BOOLEAN DiskSpinDown; + BYTE spare3[8]; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE BatteryScale[3]; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; +} +alias _10 SYSTEM_POWER_CAPABILITIES; +alias _10* PSYSTEM_POWER_CAPABILITIES; + +struct _11 { + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN Spare1[4]; + DWORD MaxCapacity; + DWORD RemainingCapacity; + DWORD Rate; + DWORD EstimatedTime; + DWORD DefaultAlert1; + DWORD DefaultAlert2; +} +alias _11 SYSTEM_BATTERY_STATE; +alias _11* PSYSTEM_BATTERY_STATE; + +// #ifndef _MAC + +align(4): + +enum : uint { IMAGE_DOS_SIGNATURE = 0x5A4D } +enum : uint { IMAGE_OS2_SIGNATURE = 0x454E } +enum : uint { IMAGE_OS2_SIGNATURE_LE = 0x454C } +enum : uint { IMAGE_VXD_SIGNATURE = 0x454C } +enum : uint { IMAGE_NT_SIGNATURE = 0x00004550 } + +align(2): + +// #else + +// #... + +// #... +// #... +// #... +// #... +// #endif + +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 e_res[4]; + WORD e_oemid; + WORD e_oeminfo; + WORD e_res2[10]; + LONG e_lfanew; +} +alias _IMAGE_DOS_HEADER IMAGE_DOS_HEADER; +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 IMAGE_OS2_HEADER; +alias _IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; + +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 e32_res3[12]; + DWORD e32_winresoff; + DWORD e32_winreslen; + WORD e32_devid; + WORD e32_ddkver; +} +alias _IMAGE_VXD_HEADER IMAGE_VXD_HEADER; +alias _IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; + +// #ifndef _MAC +align: +// #endif + +struct _IMAGE_FILE_HEADER { + WORD Machine; + WORD NumberOfSections; + DWORD TimeDateStamp; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + WORD SizeOfOptionalHeader; + WORD Characteristics; +} +alias _IMAGE_FILE_HEADER IMAGE_FILE_HEADER; +alias _IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; + +enum : uint { IMAGE_SIZEOF_FILE_HEADER = 20 } + +enum : uint { IMAGE_FILE_RELOCS_STRIPPED = 0x0001 } +enum : uint { IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002 } +enum : uint { IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004 } +enum : uint { IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008 } +enum : uint { IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010 } +enum : uint { IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020 } +enum : uint { IMAGE_FILE_BYTES_REVERSED_LO = 0x0080 } +enum : uint { IMAGE_FILE_32BIT_MACHINE = 0x0100 } +enum : uint { IMAGE_FILE_DEBUG_STRIPPED = 0x0200 } +enum : uint { IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400 } +enum : uint { IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800 } +enum : uint { IMAGE_FILE_SYSTEM = 0x1000 } +enum : uint { IMAGE_FILE_DLL = 0x2000 } +enum : uint { IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000 } +enum : uint { IMAGE_FILE_BYTES_REVERSED_HI = 0x8000 } + +enum : uint { IMAGE_FILE_MACHINE_UNKNOWN = 0 } +enum : uint { IMAGE_FILE_MACHINE_I386 = 0x014c } +enum : uint { IMAGE_FILE_MACHINE_R3000 = 0x0162 } +enum : uint { IMAGE_FILE_MACHINE_R4000 = 0x0166 } +enum : uint { IMAGE_FILE_MACHINE_R10000 = 0x0168 } +enum : uint { IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169 } +enum : uint { IMAGE_FILE_MACHINE_ALPHA = 0x0184 } +enum : uint { IMAGE_FILE_MACHINE_SH3 = 0x01a2 } +enum : uint { IMAGE_FILE_MACHINE_SH3DSP = 0x01a3 } +enum : uint { IMAGE_FILE_MACHINE_SH3E = 0x01a4 } +enum : uint { IMAGE_FILE_MACHINE_SH4 = 0x01a6 } +enum : uint { IMAGE_FILE_MACHINE_SH5 = 0x01a8 } +enum : uint { IMAGE_FILE_MACHINE_ARM = 0x01c0 } +enum : uint { IMAGE_FILE_MACHINE_THUMB = 0x01c2 } +enum : uint { IMAGE_FILE_MACHINE_AM33 = 0x01d3 } +enum : uint { IMAGE_FILE_MACHINE_POWERPC = 0x01F0 } +enum : uint { IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1 } +enum : uint { IMAGE_FILE_MACHINE_IA64 = 0x0200 } +enum : uint { IMAGE_FILE_MACHINE_MIPS16 = 0x0266 } +enum : uint { IMAGE_FILE_MACHINE_ALPHA64 = 0x0284 } +enum : uint { IMAGE_FILE_MACHINE_MIPSFPU = 0x0366 } +enum : uint { IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466 } +alias IMAGE_FILE_MACHINE_ALPHA64 IMAGE_FILE_MACHINE_AXP64; +enum : uint { IMAGE_FILE_MACHINE_TRICORE = 0x0520 } +enum : uint { IMAGE_FILE_MACHINE_CEF = 0x0CEF } +enum : uint { IMAGE_FILE_MACHINE_EBC = 0x0EBC } +enum : uint { IMAGE_FILE_MACHINE_AMD64 = 0x8664 } +enum : uint { IMAGE_FILE_MACHINE_M32R = 0x9041 } +enum : uint { IMAGE_FILE_MACHINE_CEE = 0xC0EE } + +struct _IMAGE_DATA_DIRECTORY { + DWORD VirtualAddress; + DWORD Size; +} +alias _IMAGE_DATA_DIRECTORY IMAGE_DATA_DIRECTORY; +alias _IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; + +enum : uint { IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16 } + +struct _IMAGE_OPTIONAL_HEADER { + + 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 DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; +} +alias _IMAGE_OPTIONAL_HEADER IMAGE_OPTIONAL_HEADER32; +alias _IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER32; + +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 CprMask[4]; + DWORD GpValue; +} +alias _IMAGE_ROM_OPTIONAL_HEADER IMAGE_ROM_OPTIONAL_HEADER; +alias _IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; + +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 DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; +} +alias _IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER64; +alias _IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; + +enum : uint { IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56 } +enum : uint { IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28 } +enum : uint { IMAGE_SIZEOF_NT_OPTIONAL32_HEADER = 224 } +enum : uint { IMAGE_SIZEOF_NT_OPTIONAL64_HEADER = 240 } + +enum : uint { IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b } +enum : uint { IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b } +enum : uint { IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x107 } + +// #ifdef _WIN64 +// ... +// #... +// #... +// #else +alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; +alias PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; +alias IMAGE_SIZEOF_NT_OPTIONAL32_HEADER IMAGE_SIZEOF_NT_OPTIONAL_HEADER; +alias IMAGE_NT_OPTIONAL_HDR32_MAGIC IMAGE_NT_OPTIONAL_HDR_MAGIC; +// #endif + +struct _IMAGE_NT_HEADERS64 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER64 OptionalHeader; +} +alias _IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS64; +alias _IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; + +struct _IMAGE_NT_HEADERS { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER32 OptionalHeader; +} +alias _IMAGE_NT_HEADERS IMAGE_NT_HEADERS32; +alias _IMAGE_NT_HEADERS* PIMAGE_NT_HEADERS32; + +struct _IMAGE_ROM_HEADERS { + IMAGE_FILE_HEADER FileHeader; + IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; +} +alias _IMAGE_ROM_HEADERS IMAGE_ROM_HEADERS; +alias _IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; + +// #ifdef _WIN64 +// ... +// #else +alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; +alias PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; +// #endif + +// #define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader )) + +enum : uint { IMAGE_SUBSYSTEM_UNKNOWN = 0 } +enum : uint { IMAGE_SUBSYSTEM_NATIVE = 1 } +enum : uint { IMAGE_SUBSYSTEM_WINDOWS_GUI = 2 } +enum : uint { IMAGE_SUBSYSTEM_WINDOWS_CUI = 3 } +enum : uint { IMAGE_SUBSYSTEM_OS2_CUI = 5 } +enum : uint { IMAGE_SUBSYSTEM_POSIX_CUI = 7 } +enum : uint { IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8 } +enum : uint { IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9 } +enum : uint { IMAGE_SUBSYSTEM_EFI_APPLICATION = 10 } +enum : uint { IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11 } +enum : uint { IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12 } +enum : uint { IMAGE_SUBSYSTEM_EFI_ROM = 13 } +enum : uint { IMAGE_SUBSYSTEM_XBOX = 14 } + +enum : uint { IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800 } + +enum : uint { IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000 } + +enum : uint { IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000 } + +enum : uint { IMAGE_DIRECTORY_ENTRY_EXPORT = 0 } +enum : uint { IMAGE_DIRECTORY_ENTRY_IMPORT = 1 } +enum : uint { IMAGE_DIRECTORY_ENTRY_RESOURCE = 2 } +enum : uint { IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3 } +enum : uint { IMAGE_DIRECTORY_ENTRY_SECURITY = 4 } +enum : uint { IMAGE_DIRECTORY_ENTRY_BASERELOC = 5 } +enum : uint { IMAGE_DIRECTORY_ENTRY_DEBUG = 6 } + +enum : uint { IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7 } +enum : uint { IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8 } +enum : uint { IMAGE_DIRECTORY_ENTRY_TLS = 9 } +enum : uint { IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10 } +enum : uint { IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11 } +enum : uint { IMAGE_DIRECTORY_ENTRY_IAT = 12 } +enum : uint { IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13 } +enum : uint { IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14 } + +struct ANON_OBJECT_HEADER { + WORD Sig1; + WORD Sig2; + WORD Version; + WORD Machine; + DWORD TimeDateStamp; + CLSID ClassID; + DWORD SizeOfData; +} + +enum : uint { IMAGE_SIZEOF_SHORT_NAME = 8 } + +struct _IMAGE_SECTION_HEADER { + BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; +union { + DWORD PhysicalAddress; + DWORD VirtualSize; +} + + DWORD VirtualAddress; + DWORD SizeOfRawData; + DWORD PointerToRawData; + DWORD PointerToRelocations; + DWORD PointerToLinenumbers; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD Characteristics; +} +alias _IMAGE_SECTION_HEADER IMAGE_SECTION_HEADER; +alias _IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; + +enum : uint { IMAGE_SIZEOF_SECTION_HEADER = 40 } + +enum : uint { IMAGE_SCN_TYPE_NO_PAD = 0x00000008 } + +enum : uint { IMAGE_SCN_CNT_CODE = 0x00000020 } +enum : uint { IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040 } +enum : uint { IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080 } + +enum : uint { IMAGE_SCN_LNK_OTHER = 0x00000100 } +enum : uint { IMAGE_SCN_LNK_INFO = 0x00000200 } + +enum : uint { IMAGE_SCN_LNK_REMOVE = 0x00000800 } +enum : uint { IMAGE_SCN_LNK_COMDAT = 0x00001000 } + +enum : uint { IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000 } +enum : uint { IMAGE_SCN_GPREL = 0x00008000 } +enum : uint { IMAGE_SCN_MEM_FARDATA = 0x00008000 } + +enum : uint { IMAGE_SCN_MEM_PURGEABLE = 0x00020000 } +enum : uint { IMAGE_SCN_MEM_16BIT = 0x00020000 } +enum : uint { IMAGE_SCN_MEM_LOCKED = 0x00040000 } +enum : uint { IMAGE_SCN_MEM_PRELOAD = 0x00080000 } + +enum : uint { IMAGE_SCN_ALIGN_1BYTES = 0x00100000 } +enum : uint { IMAGE_SCN_ALIGN_2BYTES = 0x00200000 } +enum : uint { IMAGE_SCN_ALIGN_4BYTES = 0x00300000 } +enum : uint { IMAGE_SCN_ALIGN_8BYTES = 0x00400000 } +enum : uint { IMAGE_SCN_ALIGN_16BYTES = 0x00500000 } +enum : uint { IMAGE_SCN_ALIGN_32BYTES = 0x00600000 } +enum : uint { IMAGE_SCN_ALIGN_64BYTES = 0x00700000 } +enum : uint { IMAGE_SCN_ALIGN_128BYTES = 0x00800000 } +enum : uint { IMAGE_SCN_ALIGN_256BYTES = 0x00900000 } +enum : uint { IMAGE_SCN_ALIGN_512BYTES = 0x00A00000 } +enum : uint { IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000 } +enum : uint { IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000 } +enum : uint { IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000 } +enum : uint { IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000 } + +enum : uint { IMAGE_SCN_ALIGN_MASK = 0x00F00000 } + +enum : uint { IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000 } +enum : uint { IMAGE_SCN_MEM_DISCARDABLE = 0x02000000 } +enum : uint { IMAGE_SCN_MEM_NOT_CACHED = 0x04000000 } +enum : uint { IMAGE_SCN_MEM_NOT_PAGED = 0x08000000 } +enum : uint { IMAGE_SCN_MEM_SHARED = 0x10000000 } +enum : uint { IMAGE_SCN_MEM_EXECUTE = 0x20000000 } +enum : uint { IMAGE_SCN_MEM_READ = 0x40000000 } +enum : uint { IMAGE_SCN_MEM_WRITE = 0x80000000 } + +enum : uint { IMAGE_SCN_SCALE_INDEX = 0x00000001 } + +// #ifndef _MAC +align(2): +// #endif + +struct _IMAGE_SYMBOL { +union { + BYTE ShortName[8]; +struct { + DWORD Short; + DWORD Long; +} + + DWORD LongName[2]; +} + + DWORD Value; + SHORT SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; +} +alias _IMAGE_SYMBOL IMAGE_SYMBOL; + +alias IMAGE_SYMBOL* PIMAGE_SYMBOL; + +enum : uint { IMAGE_SIZEOF_SYMBOL = 18 } + +enum : SHORT { IMAGE_SYM_UNDEFINED = 0 } +enum : SHORT { IMAGE_SYM_ABSOLUTE = -1 } +enum : SHORT { IMAGE_SYM_DEBUG = -2 } +enum : uint { IMAGE_SYM_SECTION_MAX = 0xFEFF } + +enum : uint { IMAGE_SYM_TYPE_NULL = 0x0000 } +enum : uint { IMAGE_SYM_TYPE_VOID = 0x0001 } +enum : uint { IMAGE_SYM_TYPE_CHAR = 0x0002 } +enum : uint { IMAGE_SYM_TYPE_SHORT = 0x0003 } +enum : uint { IMAGE_SYM_TYPE_INT = 0x0004 } +enum : uint { IMAGE_SYM_TYPE_LONG = 0x0005 } +enum : uint { IMAGE_SYM_TYPE_FLOAT = 0x0006 } +enum : uint { IMAGE_SYM_TYPE_DOUBLE = 0x0007 } +enum : uint { IMAGE_SYM_TYPE_STRUCT = 0x0008 } +enum : uint { IMAGE_SYM_TYPE_UNION = 0x0009 } +enum : uint { IMAGE_SYM_TYPE_ENUM = 0x000A } +enum : uint { IMAGE_SYM_TYPE_MOE = 0x000B } +enum : uint { IMAGE_SYM_TYPE_BYTE = 0x000C } +enum : uint { IMAGE_SYM_TYPE_WORD = 0x000D } +enum : uint { IMAGE_SYM_TYPE_UINT = 0x000E } +enum : uint { IMAGE_SYM_TYPE_DWORD = 0x000F } +enum : uint { IMAGE_SYM_TYPE_PCODE = 0x8000 } + +enum : uint { IMAGE_SYM_DTYPE_NULL = 0 } +enum : uint { IMAGE_SYM_DTYPE_POINTER = 1 } +enum : uint { IMAGE_SYM_DTYPE_FUNCTION = 2 } +enum : uint { IMAGE_SYM_DTYPE_ARRAY = 3 } + +enum : BYTE { IMAGE_SYM_CLASS_END_OF_FUNCTION = cast(BYTE)-1 } +enum : uint { IMAGE_SYM_CLASS_NULL = 0x0000 } +enum : uint { IMAGE_SYM_CLASS_AUTOMATIC = 0x0001 } +enum : uint { IMAGE_SYM_CLASS_EXTERNAL = 0x0002 } +enum : uint { IMAGE_SYM_CLASS_STATIC = 0x0003 } +enum : uint { IMAGE_SYM_CLASS_REGISTER = 0x0004 } +enum : uint { IMAGE_SYM_CLASS_EXTERNAL_DEF = 0x0005 } +enum : uint { IMAGE_SYM_CLASS_LABEL = 0x0006 } +enum : uint { IMAGE_SYM_CLASS_UNDEFINED_LABEL = 0x0007 } +enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_STRUCT = 0x0008 } +enum : uint { IMAGE_SYM_CLASS_ARGUMENT = 0x0009 } +enum : uint { IMAGE_SYM_CLASS_STRUCT_TAG = 0x000A } +enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_UNION = 0x000B } +enum : uint { IMAGE_SYM_CLASS_UNION_TAG = 0x000C } +enum : uint { IMAGE_SYM_CLASS_TYPE_DEFINITION = 0x000D } +enum : uint { IMAGE_SYM_CLASS_UNDEFINED_STATIC = 0x000E } +enum : uint { IMAGE_SYM_CLASS_ENUM_TAG = 0x000F } +enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_ENUM = 0x0010 } +enum : uint { IMAGE_SYM_CLASS_REGISTER_PARAM = 0x0011 } +enum : uint { IMAGE_SYM_CLASS_BIT_FIELD = 0x0012 } + +enum : uint { IMAGE_SYM_CLASS_FAR_EXTERNAL = 0x0044 } + +enum : uint { IMAGE_SYM_CLASS_BLOCK = 0x0064 } +enum : uint { IMAGE_SYM_CLASS_FUNCTION = 0x0065 } +enum : uint { IMAGE_SYM_CLASS_END_OF_STRUCT = 0x0066 } +enum : uint { IMAGE_SYM_CLASS_FILE = 0x0067 } + +enum : uint { IMAGE_SYM_CLASS_SECTION = 0x0068 } +enum : uint { IMAGE_SYM_CLASS_WEAK_EXTERNAL = 0x0069 } + +enum : uint { IMAGE_SYM_CLASS_CLR_TOKEN = 0x006B } + +enum : uint { N_BTMASK = 0x000F } +enum : uint { N_TMASK = 0x0030 } +enum : uint { N_TMASK1 = 0x00C0 } +enum : uint { N_TMASK2 = 0x00F0 } +enum : uint { N_BTSHFT = 4 } +enum : uint { N_TSHIFT = 2 } + +BYTE BTYPE(BYTE x){ return x & N_BTMASK; } + +// #ifndef ISPTR +bit ISPTR(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } +// #endif + +// #ifndef ISFCN +bit ISFCN(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } +// #endif + +// #ifndef ISARY +bit ISARY(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } +// #endif + +// #ifndef ISTAG +bit ISTAG(uint x){ return x == IMAGE_SYM_CLASS_STRUCT_TAG || x == IMAGE_SYM_CLASS_UNION_TAG || x == IMAGE_SYM_CLASS_ENUM_TAG; } +// #endif + +// #ifndef INCREF +uint INCREF(uint x){ return ((x&~N_BTMASK)<>> N_TSHIFT) & ~N_BTMASK)|(x & N_BTMASK); } +// #endif + +union _IMAGE_AUX_SYMBOL { +struct { + DWORD TagIndex; +union { +struct { + WORD Linenumber; + WORD Size; +} + + DWORD TotalSize; +} + +union { +struct { + DWORD PointerToLinenumber; + DWORD PointerToNextFunction; +} + +struct { + WORD Dimension[4]; +} + +} + + WORD TvIndex; +} + +struct { + BYTE Name[IMAGE_SIZEOF_SYMBOL]; +} + +struct { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; +} + +} +alias _IMAGE_AUX_SYMBOL IMAGE_AUX_SYMBOL; + +alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; + +enum : uint { IMAGE_SIZEOF_AUX_SYMBOL = 18 } + +alias int IMAGE_AUX_SYMBOL_TYPE; +enum { + IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1, +} + +align(2): + +struct IMAGE_AUX_SYMBOL_TOKEN_DEF { + BYTE bAuxType; + BYTE bReserved; + DWORD SymbolTableIndex; + BYTE rgbReserved[12]; +} + +alias IMAGE_AUX_SYMBOL_TOKEN_DEF* PIMAGE_AUX_SYMBOL_TOKEN_DEF; + +align: + +enum : uint { IMAGE_COMDAT_SELECT_NODUPLICATES = 1 } +enum : uint { IMAGE_COMDAT_SELECT_ANY = 2 } +enum : uint { IMAGE_COMDAT_SELECT_SAME_SIZE = 3 } +enum : uint { IMAGE_COMDAT_SELECT_EXACT_MATCH = 4 } +enum : uint { IMAGE_COMDAT_SELECT_ASSOCIATIVE = 5 } +enum : uint { IMAGE_COMDAT_SELECT_LARGEST = 6 } +enum : uint { IMAGE_COMDAT_SELECT_NEWEST = 7 } + +enum : uint { IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1 } +enum : uint { IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2 } +enum : uint { IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3 } + +struct _IMAGE_RELOCATION { +union { + DWORD VirtualAddress; + DWORD RelocCount; +} + + DWORD SymbolTableIndex; + WORD Type; +} +alias _IMAGE_RELOCATION IMAGE_RELOCATION; + +alias IMAGE_RELOCATION* PIMAGE_RELOCATION; + +enum : uint { IMAGE_SIZEOF_RELOCATION = 10 } + +enum : uint { IMAGE_REL_I386_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_I386_DIR16 = 0x0001 } +enum : uint { IMAGE_REL_I386_REL16 = 0x0002 } +enum : uint { IMAGE_REL_I386_DIR32 = 0x0006 } +enum : uint { IMAGE_REL_I386_DIR32NB = 0x0007 } +enum : uint { IMAGE_REL_I386_SEG12 = 0x0009 } +enum : uint { IMAGE_REL_I386_SECTION = 0x000A } +enum : uint { IMAGE_REL_I386_SECREL = 0x000B } +enum : uint { IMAGE_REL_I386_TOKEN = 0x000C } +enum : uint { IMAGE_REL_I386_SECREL7 = 0x000D } +enum : uint { IMAGE_REL_I386_REL32 = 0x0014 } + +enum : uint { IMAGE_REL_MIPS_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_MIPS_REFHALF = 0x0001 } +enum : uint { IMAGE_REL_MIPS_REFWORD = 0x0002 } +enum : uint { IMAGE_REL_MIPS_JMPADDR = 0x0003 } +enum : uint { IMAGE_REL_MIPS_REFHI = 0x0004 } +enum : uint { IMAGE_REL_MIPS_REFLO = 0x0005 } +enum : uint { IMAGE_REL_MIPS_GPREL = 0x0006 } +enum : uint { IMAGE_REL_MIPS_LITERAL = 0x0007 } +enum : uint { IMAGE_REL_MIPS_SECTION = 0x000A } +enum : uint { IMAGE_REL_MIPS_SECREL = 0x000B } +enum : uint { IMAGE_REL_MIPS_SECRELLO = 0x000C } +enum : uint { IMAGE_REL_MIPS_SECRELHI = 0x000D } +enum : uint { IMAGE_REL_MIPS_TOKEN = 0x000E } +enum : uint { IMAGE_REL_MIPS_JMPADDR16 = 0x0010 } +enum : uint { IMAGE_REL_MIPS_REFWORDNB = 0x0022 } +enum : uint { IMAGE_REL_MIPS_PAIR = 0x0025 } + +enum : uint { IMAGE_REL_ALPHA_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_ALPHA_REFLONG = 0x0001 } +enum : uint { IMAGE_REL_ALPHA_REFQUAD = 0x0002 } +enum : uint { IMAGE_REL_ALPHA_GPREL32 = 0x0003 } +enum : uint { IMAGE_REL_ALPHA_LITERAL = 0x0004 } +enum : uint { IMAGE_REL_ALPHA_LITUSE = 0x0005 } +enum : uint { IMAGE_REL_ALPHA_GPDISP = 0x0006 } +enum : uint { IMAGE_REL_ALPHA_BRADDR = 0x0007 } +enum : uint { IMAGE_REL_ALPHA_HINT = 0x0008 } +enum : uint { IMAGE_REL_ALPHA_INLINE_REFLONG = 0x0009 } +enum : uint { IMAGE_REL_ALPHA_REFHI = 0x000A } +enum : uint { IMAGE_REL_ALPHA_REFLO = 0x000B } +enum : uint { IMAGE_REL_ALPHA_PAIR = 0x000C } +enum : uint { IMAGE_REL_ALPHA_MATCH = 0x000D } +enum : uint { IMAGE_REL_ALPHA_SECTION = 0x000E } +enum : uint { IMAGE_REL_ALPHA_SECREL = 0x000F } +enum : uint { IMAGE_REL_ALPHA_REFLONGNB = 0x0010 } +enum : uint { IMAGE_REL_ALPHA_SECRELLO = 0x0011 } +enum : uint { IMAGE_REL_ALPHA_SECRELHI = 0x0012 } +enum : uint { IMAGE_REL_ALPHA_REFQ3 = 0x0013 } +enum : uint { IMAGE_REL_ALPHA_REFQ2 = 0x0014 } +enum : uint { IMAGE_REL_ALPHA_REFQ1 = 0x0015 } +enum : uint { IMAGE_REL_ALPHA_GPRELLO = 0x0016 } +enum : uint { IMAGE_REL_ALPHA_GPRELHI = 0x0017 } + +enum : uint { IMAGE_REL_PPC_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_PPC_ADDR64 = 0x0001 } +enum : uint { IMAGE_REL_PPC_ADDR32 = 0x0002 } +enum : uint { IMAGE_REL_PPC_ADDR24 = 0x0003 } +enum : uint { IMAGE_REL_PPC_ADDR16 = 0x0004 } +enum : uint { IMAGE_REL_PPC_ADDR14 = 0x0005 } +enum : uint { IMAGE_REL_PPC_REL24 = 0x0006 } +enum : uint { IMAGE_REL_PPC_REL14 = 0x0007 } +enum : uint { IMAGE_REL_PPC_TOCREL16 = 0x0008 } +enum : uint { IMAGE_REL_PPC_TOCREL14 = 0x0009 } + +enum : uint { IMAGE_REL_PPC_ADDR32NB = 0x000A } +enum : uint { IMAGE_REL_PPC_SECREL = 0x000B } +enum : uint { IMAGE_REL_PPC_SECTION = 0x000C } +enum : uint { IMAGE_REL_PPC_IFGLUE = 0x000D } +enum : uint { IMAGE_REL_PPC_IMGLUE = 0x000E } +enum : uint { IMAGE_REL_PPC_SECREL16 = 0x000F } +enum : uint { IMAGE_REL_PPC_REFHI = 0x0010 } +enum : uint { IMAGE_REL_PPC_REFLO = 0x0011 } +enum : uint { IMAGE_REL_PPC_PAIR = 0x0012 } +enum : uint { IMAGE_REL_PPC_SECRELLO = 0x0013 } +enum : uint { IMAGE_REL_PPC_SECRELHI = 0x0014 } +enum : uint { IMAGE_REL_PPC_GPREL = 0x0015 } +enum : uint { IMAGE_REL_PPC_TOKEN = 0x0016 } + +enum : uint { IMAGE_REL_PPC_TYPEMASK = 0x00FF } + +enum : uint { IMAGE_REL_PPC_NEG = 0x0100 } +enum : uint { IMAGE_REL_PPC_BRTAKEN = 0x0200 } +enum : uint { IMAGE_REL_PPC_BRNTAKEN = 0x0400 } +enum : uint { IMAGE_REL_PPC_TOCDEFN = 0x0800 } + +enum : uint { IMAGE_REL_SH3_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_SH3_DIRECT16 = 0x0001 } +enum : uint { IMAGE_REL_SH3_DIRECT32 = 0x0002 } +enum : uint { IMAGE_REL_SH3_DIRECT8 = 0x0003 } +enum : uint { IMAGE_REL_SH3_DIRECT8_WORD = 0x0004 } +enum : uint { IMAGE_REL_SH3_DIRECT8_LONG = 0x0005 } +enum : uint { IMAGE_REL_SH3_DIRECT4 = 0x0006 } +enum : uint { IMAGE_REL_SH3_DIRECT4_WORD = 0x0007 } +enum : uint { IMAGE_REL_SH3_DIRECT4_LONG = 0x0008 } +enum : uint { IMAGE_REL_SH3_PCREL8_WORD = 0x0009 } +enum : uint { IMAGE_REL_SH3_PCREL8_LONG = 0x000A } +enum : uint { IMAGE_REL_SH3_PCREL12_WORD = 0x000B } +enum : uint { IMAGE_REL_SH3_STARTOF_SECTION = 0x000C } +enum : uint { IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D } +enum : uint { IMAGE_REL_SH3_SECTION = 0x000E } +enum : uint { IMAGE_REL_SH3_SECREL = 0x000F } +enum : uint { IMAGE_REL_SH3_DIRECT32_NB = 0x0010 } +enum : uint { IMAGE_REL_SH3_GPREL4_LONG = 0x0011 } +enum : uint { IMAGE_REL_SH3_TOKEN = 0x0012 } + +enum : uint { IMAGE_REL_ARM_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_ARM_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_ARM_ADDR32NB = 0x0002 } +enum : uint { IMAGE_REL_ARM_BRANCH24 = 0x0003 } +enum : uint { IMAGE_REL_ARM_BRANCH11 = 0x0004 } +enum : uint { IMAGE_REL_ARM_TOKEN = 0x0005 } +enum : uint { IMAGE_REL_ARM_GPREL12 = 0x0006 } +enum : uint { IMAGE_REL_ARM_GPREL7 = 0x0007 } +enum : uint { IMAGE_REL_ARM_BLX24 = 0x0008 } +enum : uint { IMAGE_REL_ARM_BLX11 = 0x0009 } +enum : uint { IMAGE_REL_ARM_SECTION = 0x000E } +enum : uint { IMAGE_REL_ARM_SECREL = 0x000F } + +enum : uint { IMAGE_REL_AM_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_AM_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_AM_ADDR32NB = 0x0002 } +enum : uint { IMAGE_REL_AM_CALL32 = 0x0003 } +enum : uint { IMAGE_REL_AM_FUNCINFO = 0x0004 } +enum : uint { IMAGE_REL_AM_REL32_1 = 0x0005 } +enum : uint { IMAGE_REL_AM_REL32_2 = 0x0006 } +enum : uint { IMAGE_REL_AM_SECREL = 0x0007 } +enum : uint { IMAGE_REL_AM_SECTION = 0x0008 } +enum : uint { IMAGE_REL_AM_TOKEN = 0x0009 } + +enum : uint { IMAGE_REL_AMD64_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_AMD64_ADDR64 = 0x0001 } +enum : uint { IMAGE_REL_AMD64_ADDR32 = 0x0002 } +enum : uint { IMAGE_REL_AMD64_ADDR32NB = 0x0003 } +enum : uint { IMAGE_REL_AMD64_REL32 = 0x0004 } +enum : uint { IMAGE_REL_AMD64_REL32_1 = 0x0005 } +enum : uint { IMAGE_REL_AMD64_REL32_2 = 0x0006 } +enum : uint { IMAGE_REL_AMD64_REL32_3 = 0x0007 } +enum : uint { IMAGE_REL_AMD64_REL32_4 = 0x0008 } +enum : uint { IMAGE_REL_AMD64_REL32_5 = 0x0009 } +enum : uint { IMAGE_REL_AMD64_SECTION = 0x000A } +enum : uint { IMAGE_REL_AMD64_SECREL = 0x000B } +enum : uint { IMAGE_REL_AMD64_SECREL7 = 0x000C } +enum : uint { IMAGE_REL_AMD64_TOKEN = 0x000D } + +enum : uint { IMAGE_REL_IA64_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_IA64_IMM14 = 0x0001 } +enum : uint { IMAGE_REL_IA64_IMM22 = 0x0002 } +enum : uint { IMAGE_REL_IA64_IMM64 = 0x0003 } +enum : uint { IMAGE_REL_IA64_DIR32 = 0x0004 } +enum : uint { IMAGE_REL_IA64_DIR64 = 0x0005 } +enum : uint { IMAGE_REL_IA64_PCREL21B = 0x0006 } +enum : uint { IMAGE_REL_IA64_PCREL21M = 0x0007 } +enum : uint { IMAGE_REL_IA64_PCREL21F = 0x0008 } +enum : uint { IMAGE_REL_IA64_GPREL22 = 0x0009 } +enum : uint { IMAGE_REL_IA64_LTOFF22 = 0x000A } +enum : uint { IMAGE_REL_IA64_SECTION = 0x000B } +enum : uint { IMAGE_REL_IA64_SECREL22 = 0x000C } +enum : uint { IMAGE_REL_IA64_SECREL64I = 0x000D } +enum : uint { IMAGE_REL_IA64_SECREL32 = 0x000E } + +enum : uint { IMAGE_REL_IA64_DIR32NB = 0x0010 } +enum : uint { IMAGE_REL_IA64_SREL14 = 0x0011 } +enum : uint { IMAGE_REL_IA64_SREL22 = 0x0012 } +enum : uint { IMAGE_REL_IA64_SREL32 = 0x0013 } +enum : uint { IMAGE_REL_IA64_UREL32 = 0x0014 } +enum : uint { IMAGE_REL_IA64_PCREL60X = 0x0015 } +enum : uint { IMAGE_REL_IA64_PCREL60B = 0x0016 } +enum : uint { IMAGE_REL_IA64_PCREL60F = 0x0017 } +enum : uint { IMAGE_REL_IA64_PCREL60I = 0x0018 } +enum : uint { IMAGE_REL_IA64_PCREL60M = 0x0019 } +enum : uint { IMAGE_REL_IA64_IMMGPREL64 = 0x001A } +enum : uint { IMAGE_REL_IA64_TOKEN = 0x001B } +enum : uint { IMAGE_REL_IA64_GPREL32 = 0x001C } +enum : uint { IMAGE_REL_IA64_ADDEND = 0x001F } + +enum : uint { IMAGE_REL_CEF_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_CEF_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_CEF_ADDR64 = 0x0002 } +enum : uint { IMAGE_REL_CEF_ADDR32NB = 0x0003 } +enum : uint { IMAGE_REL_CEF_SECTION = 0x0004 } +enum : uint { IMAGE_REL_CEF_SECREL = 0x0005 } +enum : uint { IMAGE_REL_CEF_TOKEN = 0x0006 } + +enum : uint { IMAGE_REL_CEE_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_CEE_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_CEE_ADDR64 = 0x0002 } +enum : uint { IMAGE_REL_CEE_ADDR32NB = 0x0003 } +enum : uint { IMAGE_REL_CEE_SECTION = 0x0004 } +enum : uint { IMAGE_REL_CEE_SECREL = 0x0005 } +enum : uint { IMAGE_REL_CEE_TOKEN = 0x0006 } + +enum : uint { IMAGE_REL_M32R_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_M32R_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_M32R_ADDR32NB = 0x0002 } +enum : uint { IMAGE_REL_M32R_ADDR24 = 0x0003 } +enum : uint { IMAGE_REL_M32R_GPREL16 = 0x0004 } +enum : uint { IMAGE_REL_M32R_PCREL24 = 0x0005 } +enum : uint { IMAGE_REL_M32R_PCREL16 = 0x0006 } +enum : uint { IMAGE_REL_M32R_PCREL8 = 0x0007 } +enum : uint { IMAGE_REL_M32R_REFHALF = 0x0008 } +enum : uint { IMAGE_REL_M32R_REFHI = 0x0009 } +enum : uint { IMAGE_REL_M32R_REFLO = 0x000A } +enum : uint { IMAGE_REL_M32R_PAIR = 0x000B } +enum : uint { IMAGE_REL_M32R_SECTION = 0x000C } +enum : uint { IMAGE_REL_M32R_SECREL32 = 0x000D } +enum : uint { IMAGE_REL_M32R_TOKEN = 0x000E } + +// #define EXT_IMM64(Value, Address, Size, InstPos, ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos) + +// #define INS_IMM64(Value, Address, Size, InstPos, ValPos) *(PDWORD)Address = (*(PDWORD)Address & ~(((1 << Size) - 1) << InstPos)) | ((DWORD)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos) + +enum : uint { EMARCH_ENC_I17_IMM7B_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_IMM7B_SIZE_X = 7 } +enum : uint { EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X = 4 } +enum : uint { EMARCH_ENC_I17_IMM7B_VAL_POS_X = 0 } + +enum : uint { EMARCH_ENC_I17_IMM9D_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_IMM9D_SIZE_X = 9 } +enum : uint { EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X = 18 } +enum : uint { EMARCH_ENC_I17_IMM9D_VAL_POS_X = 7 } + +enum : uint { EMARCH_ENC_I17_IMM5C_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_IMM5C_SIZE_X = 5 } +enum : uint { EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X = 13 } +enum : uint { EMARCH_ENC_I17_IMM5C_VAL_POS_X = 16 } + +enum : uint { EMARCH_ENC_I17_IC_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_IC_SIZE_X = 1 } +enum : uint { EMARCH_ENC_I17_IC_INST_WORD_POS_X = 12 } +enum : uint { EMARCH_ENC_I17_IC_VAL_POS_X = 21 } + +enum : uint { EMARCH_ENC_I17_IMM41a_INST_WORD_X = 1 } +enum : uint { EMARCH_ENC_I17_IMM41a_SIZE_X = 10 } +enum : uint { EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X = 14 } +enum : uint { EMARCH_ENC_I17_IMM41a_VAL_POS_X = 22 } + +enum : uint { EMARCH_ENC_I17_IMM41b_INST_WORD_X = 1 } +enum : uint { EMARCH_ENC_I17_IMM41b_SIZE_X = 8 } +enum : uint { EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X = 24 } +enum : uint { EMARCH_ENC_I17_IMM41b_VAL_POS_X = 32 } + +enum : uint { EMARCH_ENC_I17_IMM41c_INST_WORD_X = 2 } +enum : uint { EMARCH_ENC_I17_IMM41c_SIZE_X = 23 } +enum : uint { EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X = 0 } +enum : uint { EMARCH_ENC_I17_IMM41c_VAL_POS_X = 40 } + +enum : uint { EMARCH_ENC_I17_SIGN_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_SIGN_SIZE_X = 1 } +enum : uint { EMARCH_ENC_I17_SIGN_INST_WORD_POS_X = 27 } +enum : uint { EMARCH_ENC_I17_SIGN_VAL_POS_X = 63 } + +struct _IMAGE_LINENUMBER { +union { + DWORD SymbolTableIndex; + DWORD VirtualAddress; +} + + WORD Linenumber; +} +alias _IMAGE_LINENUMBER IMAGE_LINENUMBER; + +alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; + +enum : uint { IMAGE_SIZEOF_LINENUMBER = 6 } + +// #ifndef _MAC +align: +// #endif + +struct _IMAGE_BASE_RELOCATION { + DWORD VirtualAddress; + DWORD SizeOfBlock; +} +alias _IMAGE_BASE_RELOCATION IMAGE_BASE_RELOCATION; + +alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; + +enum : uint { IMAGE_SIZEOF_BASE_RELOCATION = 8 } + +enum : uint { IMAGE_REL_BASED_ABSOLUTE = 0 } +enum : uint { IMAGE_REL_BASED_HIGH = 1 } +enum : uint { IMAGE_REL_BASED_LOW = 2 } +enum : uint { IMAGE_REL_BASED_HIGHLOW = 3 } +enum : uint { IMAGE_REL_BASED_HIGHADJ = 4 } +enum : uint { IMAGE_REL_BASED_MIPS_JMPADDR = 5 } +enum : uint { IMAGE_REL_BASED_MIPS_JMPADDR16 = 9 } +enum : uint { IMAGE_REL_BASED_IA64_IMM64 = 9 } +enum : uint { IMAGE_REL_BASED_DIR64 = 10 } + +enum : uint { IMAGE_ARCHIVE_START_SIZE = 8 } +const char[] IMAGE_ARCHIVE_START = "!\n"; +const char[] IMAGE_ARCHIVE_END = "`\n"; +const char[] IMAGE_ARCHIVE_PAD = "\n"; +const char[] IMAGE_ARCHIVE_LINKER_MEMBER = "/ "; +const char[] IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; + +struct _IMAGE_ARCHIVE_MEMBER_HEADER { + BYTE Name[16]; + BYTE Date[12]; + BYTE UserID[6]; + BYTE GroupID[6]; + BYTE Mode[8]; + BYTE Size[10]; + BYTE EndHeader[2]; +} +alias _IMAGE_ARCHIVE_MEMBER_HEADER IMAGE_ARCHIVE_MEMBER_HEADER; +alias _IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; + +enum : uint { IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60 } + +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 IMAGE_EXPORT_DIRECTORY; +alias _IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; + +struct _IMAGE_IMPORT_BY_NAME { + WORD Hint; + BYTE Name[1]; +} +alias _IMAGE_IMPORT_BY_NAME IMAGE_IMPORT_BY_NAME; +alias _IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; + +align(8): + +struct _IMAGE_THUNK_DATA64 { +union { + ULONGLONG ForwarderString; + ULONGLONG Function; + ULONGLONG Ordinal; + ULONGLONG AddressOfData; +} + +} +alias _IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA64; + +alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; + +align: + +struct _IMAGE_THUNK_DATA32 { +union { + DWORD ForwarderString; + DWORD Function; + DWORD Ordinal; + DWORD AddressOfData; +} + +} +alias _IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA32; + +alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; + +const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; +enum : uint { IMAGE_ORDINAL_FLAG32 = 0x80000000 } +ulong IMAGE_ORDINAL64(ulong Ordinal){ return Ordinal & 0xffff; } +uint IMAGE_ORDINAL32(uint Ordinal){ return Ordinal & 0xffff; } +bit IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal){ return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; } +bit IMAGE_SNAP_BY_ORDINAL32(uint Ordinal){ return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; } + +extern(Windows) alias VOID function( PVOID DllHandle, DWORD Reason, PVOID Reserved ) PIMAGE_TLS_CALLBACK; + +struct _IMAGE_TLS_DIRECTORY64 { + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; + ULONGLONG AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias _IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY64; + +alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; + +struct _IMAGE_TLS_DIRECTORY32 { + DWORD StartAddressOfRawData; + DWORD EndAddressOfRawData; + DWORD AddressOfIndex; + DWORD AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias _IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY32; + +alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; + +// #ifdef _WIN64 +// #... +// #... +// ... +// #... +// ... +// #else +alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; +alias IMAGE_ORDINAL32 IMAGE_ORDINAL; +alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; +alias PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; +alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; +alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; +alias PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; +// #endif + +struct _IMAGE_IMPORT_DESCRIPTOR { +union { + DWORD Characteristics; + DWORD OriginalFirstThunk; +} + + DWORD TimeDateStamp; + + DWORD ForwarderChain; + DWORD Name; + DWORD FirstThunk; +} +alias _IMAGE_IMPORT_DESCRIPTOR IMAGE_IMPORT_DESCRIPTOR; + +alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; + +struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD NumberOfModuleForwarderRefs; +} +alias _IMAGE_BOUND_IMPORT_DESCRIPTOR IMAGE_BOUND_IMPORT_DESCRIPTOR; +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 IMAGE_BOUND_FORWARDER_REF; +alias _IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; + +struct _IMAGE_RESOURCE_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + WORD NumberOfNamedEntries; + WORD NumberOfIdEntries; +} +alias _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY; +alias _IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; + +enum : uint { IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000 } +enum : uint { IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000 } + +struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { +union { +struct { +// DWORD NameOffset:31; +// DWORD NameIsString:1; +} + + DWORD Name; + WORD Id; +} + +union { + DWORD OffsetToData; +struct { +// DWORD OffsetToDirectory:31; +// DWORD DataIsDirectory:1; +} + +} + +} +alias _IMAGE_RESOURCE_DIRECTORY_ENTRY IMAGE_RESOURCE_DIRECTORY_ENTRY; +alias _IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY; + +struct _IMAGE_RESOURCE_DIRECTORY_STRING { + WORD Length; + CHAR NameString[ 1 ]; +} +alias _IMAGE_RESOURCE_DIRECTORY_STRING IMAGE_RESOURCE_DIRECTORY_STRING; +alias _IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; + +struct _IMAGE_RESOURCE_DIR_STRING_U { + WORD Length; + WCHAR NameString[ 1 ]; +} +alias _IMAGE_RESOURCE_DIR_STRING_U IMAGE_RESOURCE_DIR_STRING_U; +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 IMAGE_RESOURCE_DATA_ENTRY; +alias _IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; + +struct _12 { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + DWORD DeCommitFreeBlockThreshold; + DWORD DeCommitTotalFreeThreshold; + DWORD LockPrefixTable; + DWORD MaximumAllocationSize; + DWORD VirtualMemoryThreshold; + DWORD ProcessHeapFlags; + DWORD ProcessAffinityMask; + WORD CSDVersion; + WORD Reserved1; + DWORD EditList; + DWORD Reserved[ 1 ]; +} +alias _12 IMAGE_LOAD_CONFIG_DIRECTORY32; +alias _12* PIMAGE_LOAD_CONFIG_DIRECTORY32; + +struct _13 { + 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 CSDVersion; + WORD Reserved1; + ULONGLONG EditList; + DWORD Reserved[ 2 ]; +} +alias _13 IMAGE_LOAD_CONFIG_DIRECTORY64; +alias _13* PIMAGE_LOAD_CONFIG_DIRECTORY64; + +// #ifdef _WIN64 +// ... +// #else +alias IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; +alias PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; +// #endif + +struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY { + DWORD FuncStart; +// DWORD PrologLen : 8; +// DWORD FuncLen : 22; +// DWORD ThirtyTwoBit : 1; +// DWORD ExceptionFlag : 1; +} +alias _IMAGE_CE_RUNTIME_FUNCTION_ENTRY IMAGE_CE_RUNTIME_FUNCTION_ENTRY; +alias _IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; + +struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { + ULONGLONG BeginAddress; + ULONGLONG EndAddress; + ULONGLONG ExceptionHandler; + ULONGLONG HandlerData; + ULONGLONG PrologEndAddress; +} +alias _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; +alias _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY* PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; + +struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + DWORD ExceptionHandler; + DWORD HandlerData; + DWORD PrologEndAddress; +} +alias _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; +alias _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY* PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; + +struct _IMAGE_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + DWORD UnwindInfoAddress; +} +alias _IMAGE_RUNTIME_FUNCTION_ENTRY* _PIMAGE_RUNTIME_FUNCTION_ENTRY; + +alias _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY; +alias _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY; + +// #if defined(_AXP64_) + +// ... + +// #elif defined(_ALPHA_) + +// ... + +// #else + +alias _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; +alias _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; + +// #endif + +struct _IMAGE_DEBUG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Type; + DWORD SizeOfData; + DWORD AddressOfRawData; + DWORD PointerToRawData; +} +alias _IMAGE_DEBUG_DIRECTORY IMAGE_DEBUG_DIRECTORY; +alias _IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY; + +enum : uint { IMAGE_DEBUG_TYPE_UNKNOWN = 0 } +enum : uint { IMAGE_DEBUG_TYPE_COFF = 1 } +enum : uint { IMAGE_DEBUG_TYPE_CODEVIEW = 2 } +enum : uint { IMAGE_DEBUG_TYPE_FPO = 3 } +enum : uint { IMAGE_DEBUG_TYPE_MISC = 4 } +enum : uint { IMAGE_DEBUG_TYPE_EXCEPTION = 5 } +enum : uint { IMAGE_DEBUG_TYPE_FIXUP = 6 } +enum : uint { IMAGE_DEBUG_TYPE_OMAP_TO_SRC = 7 } +enum : uint { IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8 } +enum : uint { IMAGE_DEBUG_TYPE_BORLAND = 9 } +enum : uint { IMAGE_DEBUG_TYPE_RESERVED10 = 10 } +enum : uint { IMAGE_DEBUG_TYPE_CLSID = 11 } + +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 IMAGE_COFF_SYMBOLS_HEADER; +alias _IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; + +enum : uint { FRAME_FPO = 0 } +enum : uint { FRAME_TRAP = 1 } +enum : uint { FRAME_TSS = 2 } +enum : uint { FRAME_NONFPO = 3 } + +struct _FPO_DATA { + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; +// WORD cbProlog : 8; +// WORD cbRegs : 3; +// WORD fHasSEH : 1; +// WORD fUseBP : 1; +// WORD reserved : 1; +// WORD cbFrame : 2; +} +alias _FPO_DATA FPO_DATA; +alias _FPO_DATA* PFPO_DATA; + +enum : uint { SIZEOF_RFPO_DATA = 16 } + +enum : uint { IMAGE_DEBUG_MISC_EXENAME = 1 } + +struct _IMAGE_DEBUG_MISC { + DWORD DataType; + DWORD Length; + + BOOLEAN Unicode; + BYTE Reserved[ 3 ]; + BYTE Data[ 1 ]; +} +alias _IMAGE_DEBUG_MISC IMAGE_DEBUG_MISC; +alias _IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; + +struct _IMAGE_FUNCTION_ENTRY { + DWORD StartingAddress; + DWORD EndingAddress; + DWORD EndOfPrologue; +} +alias _IMAGE_FUNCTION_ENTRY IMAGE_FUNCTION_ENTRY; +alias _IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY; + +struct _IMAGE_FUNCTION_ENTRY64 { + ULONGLONG StartingAddress; + ULONGLONG EndingAddress; +union { + ULONGLONG EndOfPrologue; + ULONGLONG UnwindInfoAddress; +} + +} +alias _IMAGE_FUNCTION_ENTRY64 IMAGE_FUNCTION_ENTRY64; +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 Reserved[2]; +} +alias _IMAGE_SEPARATE_DEBUG_HEADER IMAGE_SEPARATE_DEBUG_HEADER; +alias _IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; + +struct _NON_PAGED_DEBUG_INFO { + WORD Signature; + WORD Flags; + DWORD Size; + WORD Machine; + WORD Characteristics; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD SizeOfImage; + ULONGLONG ImageBase; + +} +alias _NON_PAGED_DEBUG_INFO NON_PAGED_DEBUG_INFO; +alias _NON_PAGED_DEBUG_INFO* PNON_PAGED_DEBUG_INFO; + +// #ifndef _MAC +enum : uint { IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944 } +enum : uint { NON_PAGED_DEBUG_SIGNATURE = 0x494E } +// #else +// #... +// #... +// #endif + +enum : uint { IMAGE_SEPARATE_DEBUG_FLAGS_MASK = 0x8000 } +enum : uint { IMAGE_SEPARATE_DEBUG_MISMATCH = 0x8000 } + +struct _ImageArchitectureHeader { +// unsigned int AmaskValue: 1; + +// int :7; +// unsigned int AmaskShift: 8; +// int :16; + DWORD FirstEntryRVA; +} +alias _ImageArchitectureHeader IMAGE_ARCHITECTURE_HEADER; +alias _ImageArchitectureHeader* PIMAGE_ARCHITECTURE_HEADER; + +struct _ImageArchitectureEntry { + DWORD FixupInstRVA; + DWORD NewInst; +} +alias _ImageArchitectureEntry IMAGE_ARCHITECTURE_ENTRY; +alias _ImageArchitectureEntry* PIMAGE_ARCHITECTURE_ENTRY; + +align: + +enum : uint { IMPORT_OBJECT_HDR_SIG2 = 0xffff } + +struct IMPORT_OBJECT_HEADER { + WORD Sig1; + WORD Sig2; + WORD Version; + WORD Machine; + DWORD TimeDateStamp; + DWORD SizeOfData; + +union { + WORD Ordinal; + WORD Hint; +} + +// WORD Type : 2; +// WORD NameType : 3; +// WORD Reserved : 11; +} + +alias int IMPORT_OBJECT_TYPE; +enum { + IMPORT_OBJECT_CODE = 0, + IMPORT_OBJECT_DATA = 1, + IMPORT_OBJECT_CONST = 2, +} + +alias int IMPORT_OBJECT_NAME_TYPE; +enum { + IMPORT_OBJECT_ORDINAL = 0, + IMPORT_OBJECT_NAME = 1, + IMPORT_OBJECT_NAME_NO_PREFIX = 2, + IMPORT_OBJECT_NAME_UNDECORATE = 3, + +} + +// #ifndef __IMAGE_COR20_HEADER_DEFINED__ +// #define __IMAGE_COR20_HEADER_DEFINED__ + +alias int ReplacesCorHdrNumericDefines; +enum { + + COMIMAGE_FLAGS_ILONLY = 0x00000001, + COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002, + COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004, + COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000, + + COR_VERSION_MAJOR_V2 = 2, + COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2, + COR_VERSION_MINOR = 0, + COR_DELETED_NAME_LENGTH = 8, + COR_VTABLEGAP_NAME_LENGTH = 8, + + NATIVE_TYPE_MAX_CB = 1, + COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xFF, + + IMAGE_COR_MIH_METHODRVA = 0x01, + IMAGE_COR_MIH_EHRVA = 0x02, + IMAGE_COR_MIH_BASICBLOCK = 0x08, + + COR_VTABLE_32BIT = 0x01, + COR_VTABLE_64BIT = 0x02, + COR_VTABLE_FROM_UNMANAGED = 0x04, + COR_VTABLE_CALL_MOST_DERIVED = 0x10, + + IMAGE_COR_EATJ_THUNK_SIZE = 32, + + MAX_CLASS_NAME = 1024, + MAX_PACKAGE_NAME = 1024, +} + +struct IMAGE_COR20_HEADER { + + DWORD cb; + WORD MajorRuntimeVersion; + WORD MinorRuntimeVersion; + IMAGE_DATA_DIRECTORY MetaData; + DWORD Flags; + DWORD EntryPointToken; + IMAGE_DATA_DIRECTORY Resources; + IMAGE_DATA_DIRECTORY StrongNameSignature; + IMAGE_DATA_DIRECTORY CodeManagerTable; + IMAGE_DATA_DIRECTORY VTableFixups; + IMAGE_DATA_DIRECTORY ExportAddressTableJumps; + IMAGE_DATA_DIRECTORY ManagedNativeHeader; +} +alias IMAGE_COR20_HEADER* PIMAGE_COR20_HEADER; + +// #endif // __IMAGE_COR20_HEADER_DEFINED__ + +// #ifdef _MAC +// #ifndef _INC_STRING +// #... +// #endif /* _INC_STRING */ +// #else +// #include +// #endif // _MAC + +// #ifndef _SLIST_HEADER_ +// #define _SLIST_HEADER_ + +alias SINGLE_LIST_ENTRY SLIST_ENTRY; +alias _SINGLE_LIST_ENTRY _SLIST_ENTRY; +alias PSINGLE_LIST_ENTRY PSLIST_ENTRY; + +// #if defined(_WIN64) + +// ... + +// ... + +// #else + +union _SLIST_HEADER { + ULONGLONG Alignment; +struct { + SLIST_ENTRY Next; + WORD Depth; + WORD Sequence; +} + +} +alias _SLIST_HEADER SLIST_HEADER; +alias _SLIST_HEADER* PSLIST_HEADER; + +// #endif + +// #endif + +extern(Windows) export VOID RtlInitializeSListHead( + PSLIST_HEADER ListHead); + +extern(Windows) export PSLIST_ENTRY RtlFirstEntrySList( + SLIST_HEADER *ListHead); + +extern(Windows) export PSLIST_ENTRY RtlInterlockedPopEntrySList( + PSLIST_HEADER ListHead); + +extern(Windows) export PSLIST_ENTRY RtlInterlockedPushEntrySList( + PSLIST_HEADER ListHead, + PSLIST_ENTRY ListEntry); + +extern(Windows) export PSLIST_ENTRY RtlInterlockedFlushSList( + PSLIST_HEADER ListHead); + +extern(Windows) export WORD RtlQueryDepthSList( + PSLIST_HEADER ListHead); + +enum : uint { HEAP_NO_SERIALIZE = 0x00000001 } +enum : uint { HEAP_GROWABLE = 0x00000002 } +enum : uint { HEAP_GENERATE_EXCEPTIONS = 0x00000004 } +enum : uint { HEAP_ZERO_MEMORY = 0x00000008 } +enum : uint { HEAP_REALLOC_IN_PLACE_ONLY = 0x00000010 } +enum : uint { HEAP_TAIL_CHECKING_ENABLED = 0x00000020 } +enum : uint { HEAP_FREE_CHECKING_ENABLED = 0x00000040 } +enum : uint { HEAP_DISABLE_COALESCE_ON_FREE = 0x00000080 } +enum : uint { HEAP_CREATE_ALIGN_16 = 0x00010000 } +enum : uint { HEAP_CREATE_ENABLE_TRACING = 0x00020000 } +enum : uint { HEAP_MAXIMUM_TAG = 0x0FFF } +enum : uint { HEAP_PSEUDO_TAG_FLAG = 0x8000 } +enum : uint { HEAP_TAG_SHIFT = 18 } +uint HEAP_MAKE_TAG_FLAGS(uint b, uint o){ return b + (o << 18); } + +enum : uint { IS_TEXT_UNICODE_ASCII16 = 0x0001 } +enum : uint { IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010 } + +enum : uint { IS_TEXT_UNICODE_STATISTICS = 0x0002 } +enum : uint { IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020 } + +enum : uint { IS_TEXT_UNICODE_CONTROLS = 0x0004 } +enum : uint { IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040 } + +enum : uint { IS_TEXT_UNICODE_SIGNATURE = 0x0008 } +enum : uint { IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080 } + +enum : uint { IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100 } +enum : uint { IS_TEXT_UNICODE_ODD_LENGTH = 0x0200 } +enum : uint { IS_TEXT_UNICODE_DBCS_LEADBYTE = 0x0400 } +enum : uint { IS_TEXT_UNICODE_NULL_BYTES = 0x1000 } + +enum : uint { IS_TEXT_UNICODE_UNICODE_MASK = 0x000F } +enum : uint { IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0 } +enum : uint { IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00 } +enum : uint { IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000 } + +enum : uint { COMPRESSION_FORMAT_NONE = 0x0000 } +enum : uint { COMPRESSION_FORMAT_DEFAULT = 0x0001 } +enum : uint { COMPRESSION_FORMAT_LZNT1 = 0x0002 } +enum : uint { COMPRESSION_ENGINE_STANDARD = 0x0000 } +enum : uint { COMPRESSION_ENGINE_MAXIMUM = 0x0100 } +enum : uint { COMPRESSION_ENGINE_HIBER = 0x0200 } + +extern(Windows) export SIZE_T RtlCompareMemory( + VOID *Source1, + VOID *Source2, + SIZE_T Length); + +// #if defined(_M_AMD64) || defined(_M_IA64) + +// #... +// ... + +// ... + +// #if !defined(_M_AMD64) + +// ... + +// #endif + +// ... + +// ... + +// ... + +// #else + +bit RtlEqualMemory(void* x, void* y, uint len){ return memcmp(x, y, len) == 0; } +void RtlMoveMemory(void* d, void* s, uint len){ memmove(d, s, len); } +void RtlCopyMemory(void* d, void* s, uint len){ memcpy(d, s, len); } +void RtlFillMemory(void* d, uint len, ubyte f){ memset(d, f, len); } +void RtlZeroMemory(void* d, uint len){ memset(d, 0, len); } + +// #endif + +struct _MESSAGE_RESOURCE_ENTRY { + WORD Length; + WORD Flags; + BYTE Text[ 1 ]; +} +alias _MESSAGE_RESOURCE_ENTRY MESSAGE_RESOURCE_ENTRY; +alias _MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; + +enum : uint { MESSAGE_RESOURCE_UNICODE = 0x0001 } + +struct _MESSAGE_RESOURCE_BLOCK { + DWORD LowId; + DWORD HighId; + DWORD OffsetToEntries; +} +alias _MESSAGE_RESOURCE_BLOCK MESSAGE_RESOURCE_BLOCK; +alias _MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; + +struct _MESSAGE_RESOURCE_DATA { + DWORD NumberOfBlocks; + MESSAGE_RESOURCE_BLOCK Blocks[ 1 ]; +} +alias _MESSAGE_RESOURCE_DATA MESSAGE_RESOURCE_DATA; +alias _MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; + +struct _OSVERSIONINFOA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[ 128 ]; +} +alias _OSVERSIONINFOA OSVERSIONINFOA; +alias _OSVERSIONINFOA* POSVERSIONINFOA; +alias _OSVERSIONINFOA* LPOSVERSIONINFOA; + +struct _OSVERSIONINFOW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[ 128 ]; +} +alias _OSVERSIONINFOW OSVERSIONINFOW; +alias _OSVERSIONINFOW* POSVERSIONINFOW; +alias _OSVERSIONINFOW* LPOSVERSIONINFOW; +alias _OSVERSIONINFOW RTL_OSVERSIONINFOW; +alias _OSVERSIONINFOW* PRTL_OSVERSIONINFOW; + +// #ifdef UNICODE +// ... +// #else +alias OSVERSIONINFOA OSVERSIONINFO; +alias POSVERSIONINFOA POSVERSIONINFO; +alias LPOSVERSIONINFOA LPOSVERSIONINFO; +// #endif // UNICODE + +struct _OSVERSIONINFOEXA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[ 128 ]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias _OSVERSIONINFOEXA OSVERSIONINFOEXA; +alias _OSVERSIONINFOEXA* POSVERSIONINFOEXA; +alias _OSVERSIONINFOEXA* LPOSVERSIONINFOEXA; + +struct _OSVERSIONINFOEXW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[ 128 ]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias _OSVERSIONINFOEXW OSVERSIONINFOEXW; +alias _OSVERSIONINFOEXW* POSVERSIONINFOEXW; +alias _OSVERSIONINFOEXW* LPOSVERSIONINFOEXW; +alias _OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW; +alias _OSVERSIONINFOEXW* PRTL_OSVERSIONINFOEXW; + +// #ifdef UNICODE +// ... +// #else +alias OSVERSIONINFOEXA OSVERSIONINFOEX; +alias POSVERSIONINFOEXA POSVERSIONINFOEX; +alias LPOSVERSIONINFOEXA LPOSVERSIONINFOEX; +// #endif // UNICODE + +enum : uint { VER_EQUAL = 1 } +enum : uint { VER_GREATER = 2 } +enum : uint { VER_GREATER_EQUAL = 3 } +enum : uint { VER_LESS = 4 } +enum : uint { VER_LESS_EQUAL = 5 } +enum : uint { VER_AND = 6 } +enum : uint { VER_OR = 7 } + +enum : uint { VER_CONDITION_MASK = 7 } +enum : uint { VER_NUM_BITS_PER_CONDITION_MASK = 3 } + +enum : uint { VER_MINORVERSION = 0x0000001 } +enum : uint { VER_MAJORVERSION = 0x0000002 } +enum : uint { VER_BUILDNUMBER = 0x0000004 } +enum : uint { VER_PLATFORMID = 0x0000008 } +enum : uint { VER_SERVICEPACKMINOR = 0x0000010 } +enum : uint { VER_SERVICEPACKMAJOR = 0x0000020 } +enum : uint { VER_SUITENAME = 0x0000040 } +enum : uint { VER_PRODUCT_TYPE = 0x0000080 } + +enum : uint { VER_NT_WORKSTATION = 0x0000001 } +enum : uint { VER_NT_DOMAIN_CONTROLLER = 0x0000002 } +enum : uint { VER_NT_SERVER = 0x0000003 } + +enum : uint { VER_PLATFORM_WIN32s = 0 } +enum : uint { VER_PLATFORM_WIN32_WINDOWS = 1 } +enum : uint { VER_PLATFORM_WIN32_NT = 2 } + +// #define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_))) + +extern(Windows) export ULONGLONG VerSetConditionMask( + ULONGLONG ConditionMask, + DWORD TypeMask, + BYTE Condition); + +struct _RTL_CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + _RTL_CRITICAL_SECTION *CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD Spare[ 2 ]; +} +alias _RTL_CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG; +alias _RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; +alias _RTL_CRITICAL_SECTION_DEBUG RTL_RESOURCE_DEBUG; +alias _RTL_CRITICAL_SECTION_DEBUG* PRTL_RESOURCE_DEBUG; + +enum : uint { RTL_CRITSECT_TYPE = 0 } +enum : uint { RTL_RESOURCE_TYPE = 1 } + +struct _RTL_CRITICAL_SECTION { + PRTL_CRITICAL_SECTION_DEBUG DebugInfo; + + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + ULONG_PTR SpinCount; +} +alias _RTL_CRITICAL_SECTION RTL_CRITICAL_SECTION; +alias _RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; + +extern(Windows) alias VOID function( PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved ) RTL_VERIFIER_DLL_LOAD_CALLBACK; + +extern(Windows) alias VOID function( PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved ) RTL_VERIFIER_DLL_UNLOAD_CALLBACK; + +struct _RTL_VERIFIER_THUNK_DESCRIPTOR { + + PCHAR ThunkName; + PVOID ThunkOldAddress; + PVOID ThunkNewAddress; +} +alias _RTL_VERIFIER_THUNK_DESCRIPTOR RTL_VERIFIER_THUNK_DESCRIPTOR; +alias _RTL_VERIFIER_THUNK_DESCRIPTOR* PRTL_VERIFIER_THUNK_DESCRIPTOR; + +struct _RTL_VERIFIER_DLL_DESCRIPTOR { + + PWCHAR DllName; + DWORD DllFlags; + PVOID DllAddress; + PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks; +} +alias _RTL_VERIFIER_DLL_DESCRIPTOR RTL_VERIFIER_DLL_DESCRIPTOR; +alias _RTL_VERIFIER_DLL_DESCRIPTOR* PRTL_VERIFIER_DLL_DESCRIPTOR; + +struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR { + + DWORD Length; + PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls; + RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback; + RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback; + + PWSTR VerifierImage; + DWORD VerifierFlags; + DWORD VerifierDebug; +} +alias _RTL_VERIFIER_PROVIDER_DESCRIPTOR RTL_VERIFIER_PROVIDER_DESCRIPTOR; +alias _RTL_VERIFIER_PROVIDER_DESCRIPTOR* PRTL_VERIFIER_PROVIDER_DESCRIPTOR; + +enum : uint { RTL_VRF_FLG_FULL_PAGE_HEAP = 0x0001 } +enum : uint { RTL_VRF_FLG_LOCK_CHECKS = 0x0002 } +enum : uint { RTL_VRF_FLG_HANDLE_CHECKS = 0x0004 } +enum : uint { RTL_VRF_FLG_STACK_CHECKS = 0x0008 } +enum : uint { RTL_VRF_FLG_APPCOMPAT_CHECKS = 0x0010 } + +enum : uint { APPLICATION_VERIFIER_INTERNAL_ERROR = 0x80000000 } +enum : uint { APPLICATION_VERIFIER_INTERNAL_WARNING = 0x40000000 } +enum : uint { APPLICATION_VERIFIER_NO_BREAK = 0x20000000 } +enum : uint { APPLICATION_VERIFIER_RESERVED_BIT_28 = 0x10000000 } + +enum : uint { APPLICATION_VERIFIER_UNKNOWN_ERROR = 0x0001 } +enum : uint { APPLICATION_VERIFIER_ACCESS_VIOLATION = 0x0002 } +enum : uint { APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS = 0x0003 } +enum : uint { APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST = 0x0004 } +enum : uint { APPLICATION_VERIFIER_BAD_HEAP_HANDLE = 0x0005 } +enum : uint { APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE = 0x0006 } +enum : uint { APPLICATION_VERIFIER_DOUBLE_FREE = 0x0007 } +enum : uint { APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK = 0x0008 } +enum : uint { APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP = 0x0009 } +enum : uint { APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION = 0x000A } +enum : uint { APPLICATION_VERIFIER_STACK_OVERFLOW = 0x000B } + +enum : uint { APPLICATION_VERIFIER_TERMINATE_THREAD_CALL = 0x0100 } + +enum : uint { APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK = 0x0200 } +enum : uint { APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL = 0x0201 } +enum : uint { APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP = 0x0202 } +enum : uint { APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE = 0x0203 } +enum : uint { APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY = 0x0204 } +enum : uint { APPLICATION_VERIFIER_LOCK_CORRUPTED = 0x0205 } +enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_OWNER = 0x0206 } +enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT = 0x0207 } +enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT = 0x0208 } +enum : uint { APPLICATION_VERIFIER_LOCK_OVER_RELEASED = 0x0209 } +enum : uint { APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED = 0x0210 } + +enum : uint { APPLICATION_VERIFIER_INVALID_HANDLE = 0x0300 } + +// #define VERIFIER_STOP(Code, Msg, P1, S1, P2, S2, P3, S3, P4, S4) { RtlApplicationVerifierStop ((Code), (Msg), (ULONG_PTR)(P1),(S1), (ULONG_PTR)(P2),(S2), (ULONG_PTR)(P3),(S3), (ULONG_PTR)(P4),(S4)); } + +extern(Windows) export VOID RtlApplicationVerifierStop( + ULONG_PTR Code, + PCHAR Message, + ULONG_PTR Param1, PCHAR Description1, + ULONG_PTR Param2, PCHAR Description2, + ULONG_PTR Param3, PCHAR Description3, + ULONG_PTR Param4, PCHAR Description4); + +extern(Windows) alias LONG function( _EXCEPTION_POINTERS *ExceptionInfo ) PVECTORED_EXCEPTION_HANDLER; +enum : uint { SEF_DACL_AUTO_INHERIT = 0x01 } +enum : uint { SEF_SACL_AUTO_INHERIT = 0x02 } +enum : uint { SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT = 0x04 } +enum : uint { SEF_AVOID_PRIVILEGE_CHECK = 0x08 } +enum : uint { SEF_AVOID_OWNER_CHECK = 0x10 } +enum : uint { SEF_DEFAULT_OWNER_FROM_PARENT = 0x20 } +enum : uint { SEF_DEFAULT_GROUP_FROM_PARENT = 0x40 } + +alias int _HEAP_INFORMATION_CLASS; +enum { + + HeapCompatibilityInformation, + +} +alias _HEAP_INFORMATION_CLASS HEAP_INFORMATION_CLASS; + +extern(Windows) export DWORD RtlSetHeapInformation( + PVOID HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation , + SIZE_T HeapInformationLength ); + +extern(Windows) export DWORD RtlQueryHeapInformation( + PVOID HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation , + SIZE_T HeapInformationLength , + PSIZE_T ReturnLength ); + +enum : uint { WT_EXECUTEDEFAULT = 0x00000000 } +enum : uint { WT_EXECUTEINIOTHREAD = 0x00000001 } +enum : uint { WT_EXECUTEINUITHREAD = 0x00000002 } +enum : uint { WT_EXECUTEINWAITTHREAD = 0x00000004 } +enum : uint { WT_EXECUTEONLYONCE = 0x00000008 } +enum : uint { WT_EXECUTEINTIMERTHREAD = 0x00000020 } +enum : uint { WT_EXECUTELONGFUNCTION = 0x00000010 } +enum : uint { WT_EXECUTEINPERSISTENTIOTHREAD = 0x00000040 } +enum : uint { WT_EXECUTEINPERSISTENTTHREAD = 0x00000080 } +// #define WT_SET_MAX_THREADPOOL_THREADS(Flags, Limit) ((Flags) |= (Limit)<<16) +extern(Windows) alias VOID function(PVOID, BOOLEAN ) WAITORTIMERCALLBACKFUNC; +extern(Windows) alias VOID function(PVOID ) WORKERCALLBACKFUNC; +extern(Windows) alias VOID function(DWORD , PVOID, PVOID) APC_CALLBACK_FUNCTION; +enum : uint { WT_EXECUTEINLONGTHREAD = 0x00000010 } +enum : uint { WT_EXECUTEDELETEWAIT = 0x00000008 } + +alias int _ACTIVATION_CONTEXT_INFO_CLASS; +enum { + ActivationContextBasicInformation = 1, + ActivationContextDetailedInformation = 2, + AssemblyDetailedInformationInActivationContext = 3, + FileInformationInAssemblyOfAssemblyInActivationContext = 4, + MaxActivationContextInfoClass, + + AssemblyDetailedInformationInActivationContxt = 3, + FileInformationInAssemblyOfAssemblyInActivationContxt = 4, +} +alias _ACTIVATION_CONTEXT_INFO_CLASS ACTIVATION_CONTEXT_INFO_CLASS; + +alias ACTIVATION_CONTEXT_INFO_CLASS ACTIVATIONCONTEXTINFOCLASS; + +struct _ACTIVATION_CONTEXT_QUERY_INDEX { + DWORD ulAssemblyIndex; + DWORD ulFileIndexInAssembly; +} +alias _ACTIVATION_CONTEXT_QUERY_INDEX ACTIVATION_CONTEXT_QUERY_INDEX; +alias _ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; + +alias _ACTIVATION_CONTEXT_QUERY_INDEX* PCACTIVATION_CONTEXT_QUERY_INDEX; + +enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_NONE = 1 } +enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE = 2 } +enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_URL = 3 } +enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF = 4 } + +struct _ASSEMBLY_FILE_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulFilenameLength; + DWORD ulPathLength; + PCWSTR lpFileName; + PCWSTR lpFilePath; +} +alias _ASSEMBLY_FILE_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION; +alias _ASSEMBLY_FILE_DETAILED_INFORMATION* PASSEMBLY_FILE_DETAILED_INFORMATION; + +alias ASSEMBLY_FILE_DETAILED_INFORMATION* PCASSEMBLY_FILE_DETAILED_INFORMATION; + +alias _ASSEMBLY_FILE_DETAILED_INFORMATION _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION; +alias ASSEMBLY_FILE_DETAILED_INFORMATION ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION; +alias PASSEMBLY_FILE_DETAILED_INFORMATION PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION; +alias PCASSEMBLY_FILE_DETAILED_INFORMATION PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION; + +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; + DWORD ulFileCount; +} +alias _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; +alias _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + +alias _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 ACTIVATION_CONTEXT_DETAILED_INFORMATION; +alias _ACTIVATION_CONTEXT_DETAILED_INFORMATION* PACTIVATION_CONTEXT_DETAILED_INFORMATION; + +alias _ACTIVATION_CONTEXT_DETAILED_INFORMATION* PCACTIVATION_CONTEXT_DETAILED_INFORMATION; + +enum : uint { DLL_PROCESS_ATTACH = 1 } +enum : uint { DLL_THREAD_ATTACH = 2 } +enum : uint { DLL_THREAD_DETACH = 3 } +enum : uint { DLL_PROCESS_DETACH = 0 } +enum : uint { DLL_PROCESS_VERIFIER = 4 } + +enum : uint { EVENTLOG_SEQUENTIAL_READ = 0x0001 } +enum : uint { EVENTLOG_SEEK_READ = 0x0002 } +enum : uint { EVENTLOG_FORWARDS_READ = 0x0004 } +enum : uint { EVENTLOG_BACKWARDS_READ = 0x0008 } + +enum : uint { EVENTLOG_SUCCESS = 0x0000 } +enum : uint { EVENTLOG_ERROR_TYPE = 0x0001 } +enum : uint { EVENTLOG_WARNING_TYPE = 0x0002 } +enum : uint { EVENTLOG_INFORMATION_TYPE = 0x0004 } +enum : uint { EVENTLOG_AUDIT_SUCCESS = 0x0008 } +enum : uint { EVENTLOG_AUDIT_FAILURE = 0x0010 } + +enum : uint { EVENTLOG_START_PAIRED_EVENT = 0x0001 } +enum : uint { EVENTLOG_END_PAIRED_EVENT = 0x0002 } +enum : uint { EVENTLOG_END_ALL_PAIRED_EVENTS = 0x0004 } +enum : uint { EVENTLOG_PAIRED_EVENT_ACTIVE = 0x0008 } +enum : uint { EVENTLOG_PAIRED_EVENT_INACTIVE = 0x0010 } + +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 EVENTLOGRECORD; +alias _EVENTLOGRECORD* PEVENTLOGRECORD; + +enum : uint { MAXLOGICALLOGNAMESIZE = 256 } + +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning(disable : 4200) +struct _EVENTSFORLOGFILE { + DWORD ulSize; + WCHAR szLogicalLogFile[MAXLOGICALLOGNAMESIZE]; + DWORD ulNumRecords; + EVENTLOGRECORD pEventLogRecords[]; +} +alias _EVENTSFORLOGFILE EVENTSFORLOGFILE; +alias _EVENTSFORLOGFILE* PEVENTSFORLOGFILE; + +struct _PACKEDEVENTINFO { + DWORD ulSize; + DWORD ulNumEventsForLogFile; + DWORD ulOffsets[]; +} +alias _PACKEDEVENTINFO PACKEDEVENTINFO; +alias _PACKEDEVENTINFO* PPACKEDEVENTINFO; + +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #endif + +enum : uint { KEY_QUERY_VALUE = 0x0001 } +enum : uint { KEY_SET_VALUE = 0x0002 } +enum : uint { KEY_CREATE_SUB_KEY = 0x0004 } +enum : uint { KEY_ENUMERATE_SUB_KEYS = 0x0008 } +enum : uint { KEY_NOTIFY = 0x0010 } +enum : uint { KEY_CREATE_LINK = 0x0020 } +enum : uint { KEY_WOW64_32KEY = 0x0200 } +enum : uint { KEY_WOW64_64KEY = 0x0100 } +enum : uint { KEY_WOW64_RES = 0x0300 } + +enum : uint { KEY_READ = (STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE) } + +enum : uint { KEY_WRITE = (STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE) } + +enum : uint { KEY_EXECUTE = KEY_READ & ~SYNCHRONIZE } + +enum : uint { KEY_ALL_ACCESS = (STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~SYNCHRONIZE) } + +enum : uint { REG_OPTION_RESERVED = 0x00000000 } + +enum : uint { REG_OPTION_NON_VOLATILE = 0x00000000 } + +enum : uint { REG_OPTION_VOLATILE = 0x00000001 } + +enum : uint { REG_OPTION_CREATE_LINK = 0x00000002 } + +enum : uint { REG_OPTION_BACKUP_RESTORE = 0x00000004 } + +enum : uint { REG_OPTION_OPEN_LINK = 0x00000008 } + +enum : uint { REG_LEGAL_OPTION = REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK } + +enum : uint { REG_CREATED_NEW_KEY = 0x00000001 } +enum : uint { REG_OPENED_EXISTING_KEY = 0x00000002 } + +enum : uint { REG_STANDARD_FORMAT = 1 } +enum : uint { REG_LATEST_FORMAT = 2 } +enum : uint { REG_NO_COMPRESSION = 4 } + +enum : uint { REG_WHOLE_HIVE_VOLATILE = 0x00000001 } +enum : uint { REG_REFRESH_HIVE = 0x00000002 } +enum : uint { REG_NO_LAZY_FLUSH = 0x00000004 } +enum : uint { REG_FORCE_RESTORE = 0x00000008 } + +enum : uint { REG_NOTIFY_CHANGE_NAME = 0x00000001 } +enum : uint { REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 } +enum : uint { REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 } +enum : uint { REG_NOTIFY_CHANGE_SECURITY = 0x00000008 } + +enum : uint { REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY } + +enum : uint { REG_NONE = 0 } +enum : uint { REG_SZ = 1 } +enum : uint { REG_EXPAND_SZ = 2 } + +enum : uint { REG_BINARY = 3 } +enum : uint { REG_DWORD = 4 } +enum : uint { REG_DWORD_LITTLE_ENDIAN = 4 } +enum : uint { REG_DWORD_BIG_ENDIAN = 5 } +enum : uint { REG_LINK = 6 } +enum : uint { REG_MULTI_SZ = 7 } +enum : uint { REG_RESOURCE_LIST = 8 } +enum : uint { REG_FULL_RESOURCE_DESCRIPTOR = 9 } +enum : uint { REG_RESOURCE_REQUIREMENTS_LIST = 10 } +enum : uint { REG_QWORD = 11 } +enum : uint { REG_QWORD_LITTLE_ENDIAN = 11 } + +enum : uint { SERVICE_KERNEL_DRIVER = 0x00000001 } +enum : uint { SERVICE_FILE_SYSTEM_DRIVER = 0x00000002 } +enum : uint { SERVICE_ADAPTER = 0x00000004 } +enum : uint { SERVICE_RECOGNIZER_DRIVER = 0x00000008 } + +enum : uint { SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER } + +enum : uint { SERVICE_WIN32_OWN_PROCESS = 0x00000010 } +enum : uint { SERVICE_WIN32_SHARE_PROCESS = 0x00000020 } +enum : uint { SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS } + +enum : uint { SERVICE_INTERACTIVE_PROCESS = 0x00000100 } + +enum : uint { SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS } + +enum : uint { SERVICE_BOOT_START = 0x00000000 } +enum : uint { SERVICE_SYSTEM_START = 0x00000001 } +enum : uint { SERVICE_AUTO_START = 0x00000002 } +enum : uint { SERVICE_DEMAND_START = 0x00000003 } +enum : uint { SERVICE_DISABLED = 0x00000004 } + +enum : uint { SERVICE_ERROR_IGNORE = 0x00000000 } +enum : uint { SERVICE_ERROR_NORMAL = 0x00000001 } +enum : uint { SERVICE_ERROR_SEVERE = 0x00000002 } +enum : uint { SERVICE_ERROR_CRITICAL = 0x00000003 } + +alias int _CM_SERVICE_NODE_TYPE; +enum { + 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, +} +alias _CM_SERVICE_NODE_TYPE SERVICE_NODE_TYPE; + +alias int _CM_SERVICE_LOAD_TYPE; +enum { + BootLoad = SERVICE_BOOT_START, + SystemLoad = SERVICE_SYSTEM_START, + AutoLoad = SERVICE_AUTO_START, + DemandLoad = SERVICE_DEMAND_START, + DisableLoad = SERVICE_DISABLED, +} +alias _CM_SERVICE_LOAD_TYPE SERVICE_LOAD_TYPE; + +alias int _CM_ERROR_CONTROL_TYPE; +enum { + IgnoreError = SERVICE_ERROR_IGNORE, + NormalError = SERVICE_ERROR_NORMAL, + SevereError = SERVICE_ERROR_SEVERE, + CriticalError = SERVICE_ERROR_CRITICAL, +} +alias _CM_ERROR_CONTROL_TYPE SERVICE_ERROR_TYPE; + +enum : uint { TAPE_ERASE_SHORT = 0 } +enum : uint { TAPE_ERASE_LONG = 1 } + +struct _TAPE_ERASE { + DWORD Type; + BOOLEAN Immediate; +} +alias _TAPE_ERASE TAPE_ERASE; +alias _TAPE_ERASE* PTAPE_ERASE; + +enum : uint { TAPE_LOAD = 0 } +enum : uint { TAPE_UNLOAD = 1 } +enum : uint { TAPE_TENSION = 2 } +enum : uint { TAPE_LOCK = 3 } +enum : uint { TAPE_UNLOCK = 4 } +enum : uint { TAPE_FORMAT = 5 } + +struct _TAPE_PREPARE { + DWORD Operation; + BOOLEAN Immediate; +} +alias _TAPE_PREPARE TAPE_PREPARE; +alias _TAPE_PREPARE* PTAPE_PREPARE; + +enum : uint { TAPE_SETMARKS = 0 } +enum : uint { TAPE_FILEMARKS = 1 } +enum : uint { TAPE_SHORT_FILEMARKS = 2 } +enum : uint { TAPE_LONG_FILEMARKS = 3 } + +struct _TAPE_WRITE_MARKS { + DWORD Type; + DWORD Count; + BOOLEAN Immediate; +} +alias _TAPE_WRITE_MARKS TAPE_WRITE_MARKS; +alias _TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; + +enum : uint { TAPE_ABSOLUTE_POSITION = 0 } +enum : uint { TAPE_LOGICAL_POSITION = 1 } +enum : uint { TAPE_PSEUDO_LOGICAL_POSITION = 2 } + +struct _TAPE_GET_POSITION { + DWORD Type; + DWORD Partition; + LARGE_INTEGER Offset; +} +alias _TAPE_GET_POSITION TAPE_GET_POSITION; +alias _TAPE_GET_POSITION* PTAPE_GET_POSITION; + +enum : uint { TAPE_REWIND = 0 } +enum : uint { TAPE_ABSOLUTE_BLOCK = 1 } +enum : uint { TAPE_LOGICAL_BLOCK = 2 } +enum : uint { TAPE_PSEUDO_LOGICAL_BLOCK = 3 } +enum : uint { TAPE_SPACE_END_OF_DATA = 4 } +enum : uint { TAPE_SPACE_RELATIVE_BLOCKS = 5 } +enum : uint { TAPE_SPACE_FILEMARKS = 6 } +enum : uint { TAPE_SPACE_SEQUENTIAL_FMKS = 7 } +enum : uint { TAPE_SPACE_SETMARKS = 8 } +enum : uint { TAPE_SPACE_SEQUENTIAL_SMKS = 9 } + +struct _TAPE_SET_POSITION { + DWORD Method; + DWORD Partition; + LARGE_INTEGER Offset; + BOOLEAN Immediate; +} +alias _TAPE_SET_POSITION TAPE_SET_POSITION; +alias _TAPE_SET_POSITION* PTAPE_SET_POSITION; + +enum : uint { TAPE_DRIVE_FIXED = 0x00000001 } +enum : uint { TAPE_DRIVE_SELECT = 0x00000002 } +enum : uint { TAPE_DRIVE_INITIATOR = 0x00000004 } + +enum : uint { TAPE_DRIVE_ERASE_SHORT = 0x00000010 } +enum : uint { TAPE_DRIVE_ERASE_LONG = 0x00000020 } +enum : uint { TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040 } +enum : uint { TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080 } + +enum : uint { TAPE_DRIVE_TAPE_CAPACITY = 0x00000100 } +enum : uint { TAPE_DRIVE_TAPE_REMAINING = 0x00000200 } +enum : uint { TAPE_DRIVE_FIXED_BLOCK = 0x00000400 } +enum : uint { TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800 } + +enum : uint { TAPE_DRIVE_WRITE_PROTECT = 0x00001000 } +enum : uint { TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000 } + +enum : uint { TAPE_DRIVE_ECC = 0x00010000 } +enum : uint { TAPE_DRIVE_COMPRESSION = 0x00020000 } +enum : uint { TAPE_DRIVE_PADDING = 0x00040000 } +enum : uint { TAPE_DRIVE_REPORT_SMKS = 0x00080000 } + +enum : uint { TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000 } +enum : uint { TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000 } +enum : uint { TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000 } + +enum : uint { TAPE_DRIVE_EJECT_MEDIA = 0x01000000 } +enum : uint { TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000 } +enum : uint { TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000 } + +enum : uint { TAPE_DRIVE_RESERVED_BIT = 0x80000000 } + +enum : uint { TAPE_DRIVE_LOAD_UNLOAD = 0x80000001 } +enum : uint { TAPE_DRIVE_TENSION = 0x80000002 } +enum : uint { TAPE_DRIVE_LOCK_UNLOCK = 0x80000004 } +enum : uint { TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008 } + +enum : uint { TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010 } +enum : uint { TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020 } +enum : uint { TAPE_DRIVE_TENSION_IMMED = 0x80000040 } +enum : uint { TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080 } + +enum : uint { TAPE_DRIVE_SET_ECC = 0x80000100 } +enum : uint { TAPE_DRIVE_SET_COMPRESSION = 0x80000200 } +enum : uint { TAPE_DRIVE_SET_PADDING = 0x80000400 } +enum : uint { TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800 } + +enum : uint { TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000 } +enum : uint { TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000 } +enum : uint { TAPE_DRIVE_LOGICAL_BLK = 0x80004000 } +enum : uint { TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000 } + +enum : uint { TAPE_DRIVE_END_OF_DATA = 0x80010000 } +enum : uint { TAPE_DRIVE_RELATIVE_BLKS = 0x80020000 } +enum : uint { TAPE_DRIVE_FILEMARKS = 0x80040000 } +enum : uint { TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000 } + +enum : uint { TAPE_DRIVE_SETMARKS = 0x80100000 } +enum : uint { TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000 } +enum : uint { TAPE_DRIVE_REVERSE_POSITION = 0x80400000 } +enum : uint { TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000 } + +enum : uint { TAPE_DRIVE_WRITE_SETMARKS = 0x81000000 } +enum : uint { TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000 } +enum : uint { TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000 } +enum : uint { TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000 } + +enum : uint { TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000 } +enum : uint { TAPE_DRIVE_FORMAT = 0xA0000000 } +enum : uint { TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000 } +enum : uint { TAPE_DRIVE_HIGH_FEATURES = 0x80000000 } + +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 TAPE_GET_DRIVE_PARAMETERS; +alias _TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; + +struct _TAPE_SET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + DWORD EOTWarningZoneSize; +} +alias _TAPE_SET_DRIVE_PARAMETERS TAPE_SET_DRIVE_PARAMETERS; +alias _TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; + +struct _TAPE_GET_MEDIA_PARAMETERS { + LARGE_INTEGER Capacity; + LARGE_INTEGER Remaining; + DWORD BlockSize; + DWORD PartitionCount; + BOOLEAN WriteProtected; +} +alias _TAPE_GET_MEDIA_PARAMETERS TAPE_GET_MEDIA_PARAMETERS; +alias _TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; + +struct _TAPE_SET_MEDIA_PARAMETERS { + DWORD BlockSize; +} +alias _TAPE_SET_MEDIA_PARAMETERS TAPE_SET_MEDIA_PARAMETERS; +alias _TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; + +enum : uint { TAPE_FIXED_PARTITIONS = 0 } +enum : uint { TAPE_SELECT_PARTITIONS = 1 } +enum : uint { TAPE_INITIATOR_PARTITIONS = 2 } + +struct _TAPE_CREATE_PARTITION { + DWORD Method; + DWORD Count; + DWORD Size; +} +alias _TAPE_CREATE_PARTITION TAPE_CREATE_PARTITION; +alias _TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; + +enum : uint { TAPE_QUERY_DRIVE_PARAMETERS = 0 } +enum : uint { TAPE_QUERY_MEDIA_CAPACITY = 1 } +enum : uint { TAPE_CHECK_FOR_DRIVE_PROBLEM = 2 } +enum : uint { TAPE_QUERY_IO_ERROR_DATA = 3 } +enum : uint { TAPE_QUERY_DEVICE_ERROR_DATA = 4 } + +struct _TAPE_WMI_OPERATIONS { + DWORD Method; + DWORD DataBufferSize; + PVOID DataBuffer; +} +alias _TAPE_WMI_OPERATIONS TAPE_WMI_OPERATIONS; +alias _TAPE_WMI_OPERATIONS* PTAPE_WMI_OPERATIONS; + +alias int _TAPE_DRIVE_PROBLEM_TYPE; +enum { + TapeDriveProblemNone, + TapeDriveReadWriteWarning, + TapeDriveReadWriteError, + TapeDriveReadWarning, + TapeDriveWriteWarning, + TapeDriveReadError, + TapeDriveWriteError, + TapeDriveHardwareError, + TapeDriveUnsupportedMedia, + TapeDriveScsiConnectionError, + TapeDriveTimetoClean, + TapeDriveCleanDriveNow, + TapeDriveMediaLifeExpired, + TapeDriveSnappedTape, +} +alias _TAPE_DRIVE_PROBLEM_TYPE TAPE_DRIVE_PROBLEM_TYPE; + +// #if defined(_M_AMD64) && !defined(__midl) + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // _M_AMD64 && !defined(__midl) + +// #if (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED // winnt_only +enum : uint { ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1 } +enum : uint { ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION = 2 } +enum : uint { ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION = 3 } +enum : uint { ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION = 4 } +enum : uint { ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION = 5 } +enum : uint { ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION = 6 } +enum : uint { ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION = 7 } +enum : uint { ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE = 8 } +// #endif // winnt_only + +// #ifdef __cplusplus +// } +// #endif + +// #endif /* _WINNT_ */ + ADDED src/win32/ansi/winreg.d Index: src/win32/ansi/winreg.d ================================================================== --- src/win32/ansi/winreg.d +++ src/win32/ansi/winreg.d @@ -0,0 +1,670 @@ +module win32.ansi.winreg; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winnt, win32.ansi.winbase; + +// #ifndef _WINREG_ +// #define _WINREG_ + +// #ifdef _MAC +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef WINVER +// #... +// #endif /* !WINVER */ + +alias ACCESS_MASK REGSAM; + +const HKEY HKEY_CLASSES_ROOT = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000000) ; +const HKEY HKEY_CURRENT_USER = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000001) ; +const HKEY HKEY_LOCAL_MACHINE = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000002) ; +const HKEY HKEY_USERS = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000003) ; +const HKEY HKEY_PERFORMANCE_DATA = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000004) ; +const HKEY HKEY_PERFORMANCE_TEXT = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000050) ; +const HKEY HKEY_PERFORMANCE_NLSTEXT = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000060) ; +// #if(WINVER >= 0x0400) +const HKEY HKEY_CURRENT_CONFIG = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000005) ; +const HKEY HKEY_DYN_DATA = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000006) ; + +// #ifndef _PROVIDER_STRUCTS_DEFINED +// #define _PROVIDER_STRUCTS_DEFINED + +enum : uint { PROVIDER_KEEPS_VALUE_LENGTH = 0x1 } +struct val_context { + int valuelen; + LPVOID value_context; + LPVOID val_buff_ptr; +} + +alias val_context* PVALCONTEXT; + +struct pvalueA { + LPSTR pv_valuename; + int pv_valuelen; + LPVOID pv_value_context; + DWORD pv_type; +} +alias pvalueA PVALUEA; +alias pvalueA* PPVALUEA; + +struct pvalueW { + LPWSTR pv_valuename; + int pv_valuelen; + LPVOID pv_value_context; + DWORD pv_type; +} +alias pvalueW PVALUEW; +alias pvalueW* PPVALUEW; + +// #ifdef UNICODE +// ... +// #else +alias PVALUEA PVALUE; +alias PPVALUEA PPVALUE; +// #endif // UNICODE + +// typedef DWORD _cdecl QUERYHANDLER (LPVOID keycontext, PVALCONTEXT val_list, DWORD num_vals, LPVOID outputbuffer, DWORD FAR *total_outlen, DWORD input_blen); + +extern(Windows) alias DWORD function(LPVOID keycontext, PVALCONTEXT val_list, DWORD num_vals, LPVOID outputbuffer, DWORD* total_outlen, DWORD input_blen) PQUERYHANDLER; + +struct provider_info { + PQUERYHANDLER pi_R0_1val; + PQUERYHANDLER pi_R0_allvals; + PQUERYHANDLER pi_R3_1val; + PQUERYHANDLER pi_R3_allvals; + DWORD pi_flags; + LPVOID pi_key_context; +} +alias provider_info REG_PROVIDER; + +alias provider_info* PPROVIDER; + +struct value_entA { + LPSTR ve_valuename; + DWORD ve_valuelen; + DWORD_PTR ve_valueptr; + DWORD ve_type; +} +alias value_entA VALENTA; +alias value_entA* PVALENTA; + +struct value_entW { + LPWSTR ve_valuename; + DWORD ve_valuelen; + DWORD_PTR ve_valueptr; + DWORD ve_type; +} +alias value_entW VALENTW; +alias value_entW* PVALENTW; + +// #ifdef UNICODE +// ... +// #else +alias VALENTA VALENT; +alias PVALENTA PVALENT; +// #endif // UNICODE + +// #endif // not(_PROVIDER_STRUCTS_DEFINED) + +// #endif /* WINVER >= 0x0400 */ + +alias NULL WIN31_CLASS; + +extern(Windows) export LONG RegCloseKey( + HKEY hKey); + +extern(Windows) export LONG RegOverridePredefKey( + HKEY hKey, + HKEY hNewHKey); + +extern(Windows) export LONG RegOpenUserClassesRoot( + HANDLE hToken, + DWORD dwOptions, + REGSAM samDesired, + PHKEY phkResult); + +extern(Windows) export LONG RegOpenCurrentUser( + REGSAM samDesired, + PHKEY phkResult); + +extern(Windows) export LONG RegDisablePredefinedCache(); + +extern(Windows) export LONG RegConnectRegistryA( + LPCSTR lpMachineName, + HKEY hKey, + PHKEY phkResult); +extern(Windows) export LONG RegConnectRegistryW( + LPCWSTR lpMachineName, + HKEY hKey, + PHKEY phkResult); +// #ifdef UNICODE +// #... +// #else +alias RegConnectRegistryA RegConnectRegistry; +// #endif // !UNICODE + +extern(Windows) export LONG RegCreateKeyA( + HKEY hKey, + LPCSTR lpSubKey, + PHKEY phkResult); +extern(Windows) export LONG RegCreateKeyW( + HKEY hKey, + LPCWSTR lpSubKey, + PHKEY phkResult); +// #ifdef UNICODE +// #... +// #else +alias RegCreateKeyA RegCreateKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegCreateKeyExA( + HKEY hKey, + LPCSTR lpSubKey, + DWORD Reserved, + LPSTR lpClass, + DWORD dwOptions, + REGSAM samDesired, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + PHKEY phkResult, + LPDWORD lpdwDisposition); +extern(Windows) export LONG RegCreateKeyExW( + HKEY hKey, + LPCWSTR lpSubKey, + DWORD Reserved, + LPWSTR lpClass, + DWORD dwOptions, + REGSAM samDesired, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + PHKEY phkResult, + LPDWORD lpdwDisposition); +// #ifdef UNICODE +// #... +// #else +alias RegCreateKeyExA RegCreateKeyEx; +// #endif // !UNICODE + +extern(Windows) export LONG RegDeleteKeyA( + HKEY hKey, + LPCSTR lpSubKey); +extern(Windows) export LONG RegDeleteKeyW( + HKEY hKey, + LPCWSTR lpSubKey); +// #ifdef UNICODE +// #... +// #else +alias RegDeleteKeyA RegDeleteKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegDeleteValueA( + HKEY hKey, + LPCSTR lpValueName); +extern(Windows) export LONG RegDeleteValueW( + HKEY hKey, + LPCWSTR lpValueName); +// #ifdef UNICODE +// #... +// #else +alias RegDeleteValueA RegDeleteValue; +// #endif // !UNICODE + +extern(Windows) export LONG RegEnumKeyA( + HKEY hKey, + DWORD dwIndex, + LPSTR lpName, + DWORD cbName); +extern(Windows) export LONG RegEnumKeyW( + HKEY hKey, + DWORD dwIndex, + LPWSTR lpName, + DWORD cbName); +// #ifdef UNICODE +// #... +// #else +alias RegEnumKeyA RegEnumKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegEnumKeyExA( + HKEY hKey, + DWORD dwIndex, + LPSTR lpName, + LPDWORD lpcbName, + LPDWORD lpReserved, + LPSTR lpClass, + LPDWORD lpcbClass, + PFILETIME lpftLastWriteTime); +extern(Windows) export LONG RegEnumKeyExW( + HKEY hKey, + DWORD dwIndex, + LPWSTR lpName, + LPDWORD lpcbName, + LPDWORD lpReserved, + LPWSTR lpClass, + LPDWORD lpcbClass, + PFILETIME lpftLastWriteTime); +// #ifdef UNICODE +// #... +// #else +alias RegEnumKeyExA RegEnumKeyEx; +// #endif // !UNICODE + +extern(Windows) export LONG RegEnumValueA( + HKEY hKey, + DWORD dwIndex, + LPSTR lpValueName, + LPDWORD lpcbValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData); +extern(Windows) export LONG RegEnumValueW( + HKEY hKey, + DWORD dwIndex, + LPWSTR lpValueName, + LPDWORD lpcbValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData); +// #ifdef UNICODE +// #... +// #else +alias RegEnumValueA RegEnumValue; +// #endif // !UNICODE + +extern(Windows) export LONG RegFlushKey( + HKEY hKey); + +extern(Windows) export LONG RegGetKeySecurity( + HKEY hKey, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + LPDWORD lpcbSecurityDescriptor); + +extern(Windows) export LONG RegLoadKeyA( + HKEY hKey, + LPCSTR lpSubKey, + LPCSTR lpFile); +extern(Windows) export LONG RegLoadKeyW( + HKEY hKey, + LPCWSTR lpSubKey, + LPCWSTR lpFile); +// #ifdef UNICODE +// #... +// #else +alias RegLoadKeyA RegLoadKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegNotifyChangeKeyValue( + HKEY hKey, + BOOL bWatchSubtree, + DWORD dwNotifyFilter, + HANDLE hEvent, + BOOL fAsynchronus); + +extern(Windows) export LONG RegOpenKeyA( + HKEY hKey, + LPCSTR lpSubKey, + PHKEY phkResult); +extern(Windows) export LONG RegOpenKeyW( + HKEY hKey, + LPCWSTR lpSubKey, + PHKEY phkResult); +// #ifdef UNICODE +// #... +// #else +alias RegOpenKeyA RegOpenKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegOpenKeyExA( + HKEY hKey, + LPCSTR lpSubKey, + DWORD ulOptions, + REGSAM samDesired, + PHKEY phkResult); +extern(Windows) export LONG RegOpenKeyExW( + HKEY hKey, + LPCWSTR lpSubKey, + DWORD ulOptions, + REGSAM samDesired, + PHKEY phkResult); +// #ifdef UNICODE +// #... +// #else +alias RegOpenKeyExA RegOpenKeyEx; +// #endif // !UNICODE + +extern(Windows) export LONG RegQueryInfoKeyA( + HKEY hKey, + LPSTR lpClass, + LPDWORD lpcbClass, + LPDWORD lpReserved, + LPDWORD lpcSubKeys, + LPDWORD lpcbMaxSubKeyLen, + LPDWORD lpcbMaxClassLen, + LPDWORD lpcValues, + LPDWORD lpcbMaxValueNameLen, + LPDWORD lpcbMaxValueLen, + LPDWORD lpcbSecurityDescriptor, + PFILETIME lpftLastWriteTime); +extern(Windows) export LONG RegQueryInfoKeyW( + HKEY hKey, + LPWSTR lpClass, + LPDWORD lpcbClass, + LPDWORD lpReserved, + LPDWORD lpcSubKeys, + LPDWORD lpcbMaxSubKeyLen, + LPDWORD lpcbMaxClassLen, + LPDWORD lpcValues, + LPDWORD lpcbMaxValueNameLen, + LPDWORD lpcbMaxValueLen, + LPDWORD lpcbSecurityDescriptor, + PFILETIME lpftLastWriteTime); +// #ifdef UNICODE +// #... +// #else +alias RegQueryInfoKeyA RegQueryInfoKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegQueryValueA( + HKEY hKey, + LPCSTR lpSubKey, + LPSTR lpValue, + PLONG lpcbValue); +extern(Windows) export LONG RegQueryValueW( + HKEY hKey, + LPCWSTR lpSubKey, + LPWSTR lpValue, + PLONG lpcbValue); +// #ifdef UNICODE +// #... +// #else +alias RegQueryValueA RegQueryValue; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export LONG RegQueryMultipleValuesA( + HKEY hKey, + PVALENTA val_list, + DWORD num_vals, + LPSTR lpValueBuf, + LPDWORD ldwTotsize); +extern(Windows) export LONG RegQueryMultipleValuesW( + HKEY hKey, + PVALENTW val_list, + DWORD num_vals, + LPWSTR lpValueBuf, + LPDWORD ldwTotsize); +// #ifdef UNICODE +// #... +// #else +alias RegQueryMultipleValuesA RegQueryMultipleValues; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export LONG RegQueryValueExA( + HKEY hKey, + LPCSTR lpValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData); +extern(Windows) export LONG RegQueryValueExW( + HKEY hKey, + LPCWSTR lpValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData); +// #ifdef UNICODE +// #... +// #else +alias RegQueryValueExA RegQueryValueEx; +// #endif // !UNICODE + +extern(Windows) export LONG RegReplaceKeyA( + HKEY hKey, + LPCSTR lpSubKey, + LPCSTR lpNewFile, + LPCSTR lpOldFile); +extern(Windows) export LONG RegReplaceKeyW( + HKEY hKey, + LPCWSTR lpSubKey, + LPCWSTR lpNewFile, + LPCWSTR lpOldFile); +// #ifdef UNICODE +// #... +// #else +alias RegReplaceKeyA RegReplaceKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegRestoreKeyA( + HKEY hKey, + LPCSTR lpFile, + DWORD dwFlags); +extern(Windows) export LONG RegRestoreKeyW( + HKEY hKey, + LPCWSTR lpFile, + DWORD dwFlags); +// #ifdef UNICODE +// #... +// #else +alias RegRestoreKeyA RegRestoreKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegSaveKeyA( + HKEY hKey, + LPCSTR lpFile, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export LONG RegSaveKeyW( + HKEY hKey, + LPCWSTR lpFile, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +// #... +// #else +alias RegSaveKeyA RegSaveKey; +// #endif // !UNICODE + +extern(Windows) export LONG RegSetKeySecurity( + HKEY hKey, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor); + +extern(Windows) export LONG RegSetValueA( + HKEY hKey, + LPCSTR lpSubKey, + DWORD dwType, + LPCSTR lpData, + DWORD cbData); +extern(Windows) export LONG RegSetValueW( + HKEY hKey, + LPCWSTR lpSubKey, + DWORD dwType, + LPCWSTR lpData, + DWORD cbData); +// #ifdef UNICODE +// #... +// #else +alias RegSetValueA RegSetValue; +// #endif // !UNICODE + +extern(Windows) export LONG RegSetValueExA( + HKEY hKey, + LPCSTR lpValueName, + DWORD Reserved, + DWORD dwType, + BYTE* lpData, + DWORD cbData); +extern(Windows) export LONG RegSetValueExW( + HKEY hKey, + LPCWSTR lpValueName, + DWORD Reserved, + DWORD dwType, + BYTE* lpData, + DWORD cbData); +// #ifdef UNICODE +// #... +// #else +alias RegSetValueExA RegSetValueEx; +// #endif // !UNICODE + +extern(Windows) export LONG RegUnLoadKeyA( + HKEY hKey, + LPCSTR lpSubKey); +extern(Windows) export LONG RegUnLoadKeyW( + HKEY hKey, + LPCWSTR lpSubKey); +// #ifdef UNICODE +// #... +// #else +alias RegUnLoadKeyA RegUnLoadKey; +// #endif // !UNICODE + +extern(Windows) export BOOL InitiateSystemShutdownA( + LPSTR lpMachineName, + LPSTR lpMessage, + DWORD dwTimeout, + BOOL bForceAppsClosed, + BOOL bRebootAfterShutdown); +extern(Windows) export BOOL InitiateSystemShutdownW( + LPWSTR lpMachineName, + LPWSTR lpMessage, + DWORD dwTimeout, + BOOL bForceAppsClosed, + BOOL bRebootAfterShutdown); +// #ifdef UNICODE +// #... +// #else +alias InitiateSystemShutdownA InitiateSystemShutdown; +// #endif // !UNICODE + +extern(Windows) export BOOL AbortSystemShutdownA( + LPSTR lpMachineName); +extern(Windows) export BOOL AbortSystemShutdownW( + LPWSTR lpMachineName); +// #ifdef UNICODE +// #... +// #else +alias AbortSystemShutdownA AbortSystemShutdown; +// #endif // !UNICODE + +// inline #include +// ---- + +// #if !defined SENTINEL_Reason +// # define SENTINEL_Reason + +enum : uint { SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000 } +enum : uint { SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000 } +enum : uint { SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000 } +enum : uint { SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000 } + +enum : uint { SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000 } +enum : uint { SHTDN_REASON_FLAG_PLANNED = 0x80000000 } + +enum : uint { SHTDN_REASON_MAJOR_OTHER = 0x00000000 } +enum : uint { SHTDN_REASON_MAJOR_NONE = 0x00000000 } +enum : uint { SHTDN_REASON_MAJOR_HARDWARE = 0x00010000 } +enum : uint { SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000 } +enum : uint { SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000 } +enum : uint { SHTDN_REASON_MAJOR_APPLICATION = 0x00040000 } +enum : uint { SHTDN_REASON_MAJOR_SYSTEM = 0x00050000 } +enum : uint { SHTDN_REASON_MAJOR_POWER = 0x00060000 } + +enum : uint { SHTDN_REASON_MINOR_OTHER = 0x00000000 } +enum : uint { SHTDN_REASON_MINOR_NONE = 0x000000ff } +enum : uint { SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001 } +enum : uint { SHTDN_REASON_MINOR_INSTALLATION = 0x00000002 } +enum : uint { SHTDN_REASON_MINOR_UPGRADE = 0x00000003 } +enum : uint { SHTDN_REASON_MINOR_RECONFIG = 0x00000004 } +enum : uint { SHTDN_REASON_MINOR_HUNG = 0x00000005 } +enum : uint { SHTDN_REASON_MINOR_UNSTABLE = 0x00000006 } +enum : uint { SHTDN_REASON_MINOR_DISK = 0x00000007 } +enum : uint { SHTDN_REASON_MINOR_PROCESSOR = 0x00000008 } +enum : uint { SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009 } +enum : uint { SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a } +enum : uint { SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b } +enum : uint { SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c } +enum : uint { SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d } +enum : uint { SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e } +enum : uint { SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F } + +alias SHTDN_REASON_MINOR_NONE SHTDN_REASON_UNKNOWN; + +enum : uint { SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff } + +enum : uint { PCLEANUI = SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_FLAG_CLEAN_UI } +enum : uint { UCLEANUI = SHTDN_REASON_FLAG_CLEAN_UI } +enum : uint { UDIRTYUI = SHTDN_REASON_FLAG_DIRTY_UI } + +enum : uint { MAX_REASON_NAME_LEN = 64 } +enum : uint { MAX_REASON_DESC_LEN = 256 } +enum : uint { MAX_REASON_BUGID_LEN = 32 } +enum : uint { MAX_REASON_COMMENT_LEN = 4096 } + +// #endif // !defined SENTINEL_Reason +// ---- + +enum : uint { REASON_SWINSTALL = SHTDN_REASON_MAJOR_SOFTWARE | SHTDN_REASON_MINOR_INSTALLATION } +enum : uint { REASON_HWINSTALL = SHTDN_REASON_MAJOR_HARDWARE | SHTDN_REASON_MINOR_INSTALLATION } +enum : uint { REASON_SERVICEHANG = SHTDN_REASON_MAJOR_SOFTWARE | SHTDN_REASON_MINOR_HUNG } +enum : uint { REASON_UNSTABLE = SHTDN_REASON_MAJOR_SYSTEM | SHTDN_REASON_MINOR_UNSTABLE } +enum : uint { REASON_SWHWRECONF = SHTDN_REASON_MAJOR_SOFTWARE | SHTDN_REASON_MINOR_RECONFIG } +enum : uint { REASON_OTHER = SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_OTHER } +alias SHTDN_REASON_UNKNOWN REASON_UNKNOWN; +alias SHTDN_REASON_FLAG_PLANNED REASON_PLANNED_FLAG; + +extern(Windows) export BOOL InitiateSystemShutdownExA( + LPSTR lpMachineName, + LPSTR lpMessage, + DWORD dwTimeout, + BOOL bForceAppsClosed, + BOOL bRebootAfterShutdown, + DWORD dwReason); +extern(Windows) export BOOL InitiateSystemShutdownExW( + LPWSTR lpMachineName, + LPWSTR lpMessage, + DWORD dwTimeout, + BOOL bForceAppsClosed, + BOOL bRebootAfterShutdown, + DWORD dwReason); +// #ifdef UNICODE +// #... +// #else +alias InitiateSystemShutdownExA InitiateSystemShutdownEx; +// #endif // !UNICODE + +extern(Windows) export LONG RegSaveKeyExA( + HKEY hKey, + LPCSTR lpFile, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD Flags); +extern(Windows) export LONG RegSaveKeyExW( + HKEY hKey, + LPCWSTR lpFile, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD Flags); +// #ifdef UNICODE +// #... +// #else +alias RegSaveKeyExA RegSaveKeyEx; +// #endif // !UNICODE + +extern(Windows) export LONG Wow64Win32ApiEntry( + DWORD dwFuncNumber, + DWORD dwFlag, + DWORD dwRes); + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINREG_ + ADDED src/win32/ansi/winspool.d Index: src/win32/ansi/winspool.d ================================================================== --- src/win32/ansi/winspool.d +++ src/win32/ansi/winspool.d @@ -0,0 +1,2659 @@ +module win32.ansi.winspool; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winbase, win32.ansi.wingdi; + +// #ifndef _WINSPOOL_ +// #define _WINSPOOL_ + +// #ifdef _WINUSER_ +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +struct _PRINTER_INFO_1A { + DWORD Flags; + LPSTR pDescription; + LPSTR pName; + LPSTR pComment; +} +alias _PRINTER_INFO_1A PRINTER_INFO_1A; +alias _PRINTER_INFO_1A* PPRINTER_INFO_1A; +alias _PRINTER_INFO_1A* LPPRINTER_INFO_1A; + +struct _PRINTER_INFO_1W { + DWORD Flags; + LPWSTR pDescription; + LPWSTR pName; + LPWSTR pComment; +} +alias _PRINTER_INFO_1W PRINTER_INFO_1W; +alias _PRINTER_INFO_1W* PPRINTER_INFO_1W; +alias _PRINTER_INFO_1W* LPPRINTER_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_INFO_1A PRINTER_INFO_1; +alias PPRINTER_INFO_1A PPRINTER_INFO_1; +alias LPPRINTER_INFO_1A LPPRINTER_INFO_1; +// #endif // UNICODE + +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 PRINTER_INFO_2A; +alias _PRINTER_INFO_2A* PPRINTER_INFO_2A; +alias _PRINTER_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 PRINTER_INFO_2W; +alias _PRINTER_INFO_2W* PPRINTER_INFO_2W; +alias _PRINTER_INFO_2W* LPPRINTER_INFO_2W; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_INFO_2A PRINTER_INFO_2; +alias PPRINTER_INFO_2A PPRINTER_INFO_2; +alias LPPRINTER_INFO_2A LPPRINTER_INFO_2; +// #endif // UNICODE + +struct _PRINTER_INFO_3 { + PSECURITY_DESCRIPTOR pSecurityDescriptor; +} +alias _PRINTER_INFO_3 PRINTER_INFO_3; +alias _PRINTER_INFO_3* PPRINTER_INFO_3; +alias _PRINTER_INFO_3* LPPRINTER_INFO_3; + +struct _PRINTER_INFO_4A { + LPSTR pPrinterName; + LPSTR pServerName; + DWORD Attributes; +} +alias _PRINTER_INFO_4A PRINTER_INFO_4A; +alias _PRINTER_INFO_4A* PPRINTER_INFO_4A; +alias _PRINTER_INFO_4A* LPPRINTER_INFO_4A; + +struct _PRINTER_INFO_4W { + LPWSTR pPrinterName; + LPWSTR pServerName; + DWORD Attributes; +} +alias _PRINTER_INFO_4W PRINTER_INFO_4W; +alias _PRINTER_INFO_4W* PPRINTER_INFO_4W; +alias _PRINTER_INFO_4W* LPPRINTER_INFO_4W; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_INFO_4A PRINTER_INFO_4; +alias PPRINTER_INFO_4A PPRINTER_INFO_4; +alias LPPRINTER_INFO_4A LPPRINTER_INFO_4; +// #endif // UNICODE + +struct _PRINTER_INFO_5A { + LPSTR pPrinterName; + LPSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias _PRINTER_INFO_5A PRINTER_INFO_5A; +alias _PRINTER_INFO_5A* PPRINTER_INFO_5A; +alias _PRINTER_INFO_5A* LPPRINTER_INFO_5A; + +struct _PRINTER_INFO_5W { + LPWSTR pPrinterName; + LPWSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias _PRINTER_INFO_5W PRINTER_INFO_5W; +alias _PRINTER_INFO_5W* PPRINTER_INFO_5W; +alias _PRINTER_INFO_5W* LPPRINTER_INFO_5W; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_INFO_5A PRINTER_INFO_5; +alias PPRINTER_INFO_5A PPRINTER_INFO_5; +alias LPPRINTER_INFO_5A LPPRINTER_INFO_5; +// #endif // UNICODE + +struct _PRINTER_INFO_6 { + DWORD dwStatus; +} +alias _PRINTER_INFO_6 PRINTER_INFO_6; +alias _PRINTER_INFO_6* PPRINTER_INFO_6; +alias _PRINTER_INFO_6* LPPRINTER_INFO_6; + +struct _PRINTER_INFO_7A { + LPSTR pszObjectGUID; + DWORD dwAction; +} +alias _PRINTER_INFO_7A PRINTER_INFO_7A; +alias _PRINTER_INFO_7A* PPRINTER_INFO_7A; +alias _PRINTER_INFO_7A* LPPRINTER_INFO_7A; + +struct _PRINTER_INFO_7W { + LPWSTR pszObjectGUID; + DWORD dwAction; +} +alias _PRINTER_INFO_7W PRINTER_INFO_7W; +alias _PRINTER_INFO_7W* PPRINTER_INFO_7W; +alias _PRINTER_INFO_7W* LPPRINTER_INFO_7W; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_INFO_7A PRINTER_INFO_7; +alias PPRINTER_INFO_7A PPRINTER_INFO_7; +alias LPPRINTER_INFO_7A LPPRINTER_INFO_7; +// #endif // UNICODE + +enum : uint { DSPRINT_PUBLISH = 0x00000001 } +enum : uint { DSPRINT_UPDATE = 0x00000002 } +enum : uint { DSPRINT_UNPUBLISH = 0x00000004 } +enum : uint { DSPRINT_REPUBLISH = 0x00000008 } +enum : uint { DSPRINT_PENDING = 0x80000000 } + +struct _PRINTER_INFO_8A { + LPDEVMODEA pDevMode; +} +alias _PRINTER_INFO_8A PRINTER_INFO_8A; +alias _PRINTER_INFO_8A* PPRINTER_INFO_8A; +alias _PRINTER_INFO_8A* LPPRINTER_INFO_8A; + +struct _PRINTER_INFO_8W { + LPDEVMODEW pDevMode; +} +alias _PRINTER_INFO_8W PRINTER_INFO_8W; +alias _PRINTER_INFO_8W* PPRINTER_INFO_8W; +alias _PRINTER_INFO_8W* LPPRINTER_INFO_8W; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_INFO_8A PRINTER_INFO_8; +alias PPRINTER_INFO_8A PPRINTER_INFO_8; +alias LPPRINTER_INFO_8A LPPRINTER_INFO_8; +// #endif // UNICODE + +struct _PRINTER_INFO_9A { + LPDEVMODEA pDevMode; +} +alias _PRINTER_INFO_9A PRINTER_INFO_9A; +alias _PRINTER_INFO_9A* PPRINTER_INFO_9A; +alias _PRINTER_INFO_9A* LPPRINTER_INFO_9A; + +struct _PRINTER_INFO_9W { + LPDEVMODEW pDevMode; +} +alias _PRINTER_INFO_9W PRINTER_INFO_9W; +alias _PRINTER_INFO_9W* PPRINTER_INFO_9W; +alias _PRINTER_INFO_9W* LPPRINTER_INFO_9W; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_INFO_9A PRINTER_INFO_9; +alias PPRINTER_INFO_9A PPRINTER_INFO_9; +alias LPPRINTER_INFO_9A LPPRINTER_INFO_9; +// #endif // UNICODE + +enum : uint { PRINTER_CONTROL_PAUSE = 1 } +enum : uint { PRINTER_CONTROL_RESUME = 2 } +enum : uint { PRINTER_CONTROL_PURGE = 3 } +enum : uint { PRINTER_CONTROL_SET_STATUS = 4 } + +enum : uint { PRINTER_STATUS_PAUSED = 0x00000001 } +enum : uint { PRINTER_STATUS_ERROR = 0x00000002 } +enum : uint { PRINTER_STATUS_PENDING_DELETION = 0x00000004 } +enum : uint { PRINTER_STATUS_PAPER_JAM = 0x00000008 } +enum : uint { PRINTER_STATUS_PAPER_OUT = 0x00000010 } +enum : uint { PRINTER_STATUS_MANUAL_FEED = 0x00000020 } +enum : uint { PRINTER_STATUS_PAPER_PROBLEM = 0x00000040 } +enum : uint { PRINTER_STATUS_OFFLINE = 0x00000080 } +enum : uint { PRINTER_STATUS_IO_ACTIVE = 0x00000100 } +enum : uint { PRINTER_STATUS_BUSY = 0x00000200 } +enum : uint { PRINTER_STATUS_PRINTING = 0x00000400 } +enum : uint { PRINTER_STATUS_OUTPUT_BIN_FULL = 0x00000800 } +enum : uint { PRINTER_STATUS_NOT_AVAILABLE = 0x00001000 } +enum : uint { PRINTER_STATUS_WAITING = 0x00002000 } +enum : uint { PRINTER_STATUS_PROCESSING = 0x00004000 } +enum : uint { PRINTER_STATUS_INITIALIZING = 0x00008000 } +enum : uint { PRINTER_STATUS_WARMING_UP = 0x00010000 } +enum : uint { PRINTER_STATUS_TONER_LOW = 0x00020000 } +enum : uint { PRINTER_STATUS_NO_TONER = 0x00040000 } +enum : uint { PRINTER_STATUS_PAGE_PUNT = 0x00080000 } +enum : uint { PRINTER_STATUS_USER_INTERVENTION = 0x00100000 } +enum : uint { PRINTER_STATUS_OUT_OF_MEMORY = 0x00200000 } +enum : uint { PRINTER_STATUS_DOOR_OPEN = 0x00400000 } +enum : uint { PRINTER_STATUS_SERVER_UNKNOWN = 0x00800000 } +enum : uint { PRINTER_STATUS_POWER_SAVE = 0x01000000 } + +enum : uint { PRINTER_ATTRIBUTE_QUEUED = 0x00000001 } +enum : uint { PRINTER_ATTRIBUTE_DIRECT = 0x00000002 } +enum : uint { PRINTER_ATTRIBUTE_DEFAULT = 0x00000004 } +enum : uint { PRINTER_ATTRIBUTE_SHARED = 0x00000008 } +enum : uint { PRINTER_ATTRIBUTE_NETWORK = 0x00000010 } +enum : uint { PRINTER_ATTRIBUTE_HIDDEN = 0x00000020 } +enum : uint { PRINTER_ATTRIBUTE_LOCAL = 0x00000040 } + +enum : uint { PRINTER_ATTRIBUTE_ENABLE_DEVQ = 0x00000080 } +enum : uint { PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS = 0x00000100 } +enum : uint { PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = 0x00000200 } + +enum : uint { PRINTER_ATTRIBUTE_WORK_OFFLINE = 0x00000400 } +enum : uint { PRINTER_ATTRIBUTE_ENABLE_BIDI = 0x00000800 } +enum : uint { PRINTER_ATTRIBUTE_RAW_ONLY = 0x00001000 } +enum : uint { PRINTER_ATTRIBUTE_PUBLISHED = 0x00002000 } +enum : uint { PRINTER_ATTRIBUTE_FAX = 0x00004000 } + +enum : uint { NO_PRIORITY = 0 } +enum : uint { MAX_PRIORITY = 99 } +enum : uint { MIN_PRIORITY = 1 } +enum : uint { DEF_PRIORITY = 1 } + +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 JOB_INFO_1A; +alias _JOB_INFO_1A* PJOB_INFO_1A; +alias _JOB_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 JOB_INFO_1W; +alias _JOB_INFO_1W* PJOB_INFO_1W; +alias _JOB_INFO_1W* LPJOB_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias JOB_INFO_1A JOB_INFO_1; +alias PJOB_INFO_1A PJOB_INFO_1; +alias LPJOB_INFO_1A LPJOB_INFO_1; +// #endif // UNICODE + +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 JOB_INFO_2A; +alias _JOB_INFO_2A* PJOB_INFO_2A; +alias _JOB_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 JOB_INFO_2W; +alias _JOB_INFO_2W* PJOB_INFO_2W; +alias _JOB_INFO_2W* LPJOB_INFO_2W; + +// #ifdef UNICODE +// ... +// #else +alias JOB_INFO_2A JOB_INFO_2; +alias PJOB_INFO_2A PJOB_INFO_2; +alias LPJOB_INFO_2A LPJOB_INFO_2; +// #endif // UNICODE + +struct _JOB_INFO_3 { + DWORD JobId; + DWORD NextJobId; + DWORD Reserved; +} +alias _JOB_INFO_3 JOB_INFO_3; +alias _JOB_INFO_3* PJOB_INFO_3; +alias _JOB_INFO_3* LPJOB_INFO_3; + +enum : uint { JOB_CONTROL_PAUSE = 1 } +enum : uint { JOB_CONTROL_RESUME = 2 } +enum : uint { JOB_CONTROL_CANCEL = 3 } +enum : uint { JOB_CONTROL_RESTART = 4 } +enum : uint { JOB_CONTROL_DELETE = 5 } +enum : uint { JOB_CONTROL_SENT_TO_PRINTER = 6 } +enum : uint { JOB_CONTROL_LAST_PAGE_EJECTED = 7 } + +enum : uint { JOB_STATUS_PAUSED = 0x00000001 } +enum : uint { JOB_STATUS_ERROR = 0x00000002 } +enum : uint { JOB_STATUS_DELETING = 0x00000004 } +enum : uint { JOB_STATUS_SPOOLING = 0x00000008 } +enum : uint { JOB_STATUS_PRINTING = 0x00000010 } +enum : uint { JOB_STATUS_OFFLINE = 0x00000020 } +enum : uint { JOB_STATUS_PAPEROUT = 0x00000040 } +enum : uint { JOB_STATUS_PRINTED = 0x00000080 } +enum : uint { JOB_STATUS_DELETED = 0x00000100 } +enum : uint { JOB_STATUS_BLOCKED_DEVQ = 0x00000200 } +enum : uint { JOB_STATUS_USER_INTERVENTION = 0x00000400 } +enum : uint { JOB_STATUS_RESTART = 0x00000800 } +enum : uint { JOB_STATUS_COMPLETE = 0x00001000 } + +enum : uint { JOB_POSITION_UNSPECIFIED = 0 } + +struct _ADDJOB_INFO_1A { + LPSTR Path; + DWORD JobId; +} +alias _ADDJOB_INFO_1A ADDJOB_INFO_1A; +alias _ADDJOB_INFO_1A* PADDJOB_INFO_1A; +alias _ADDJOB_INFO_1A* LPADDJOB_INFO_1A; + +struct _ADDJOB_INFO_1W { + LPWSTR Path; + DWORD JobId; +} +alias _ADDJOB_INFO_1W ADDJOB_INFO_1W; +alias _ADDJOB_INFO_1W* PADDJOB_INFO_1W; +alias _ADDJOB_INFO_1W* LPADDJOB_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias ADDJOB_INFO_1A ADDJOB_INFO_1; +alias PADDJOB_INFO_1A PADDJOB_INFO_1; +alias LPADDJOB_INFO_1A LPADDJOB_INFO_1; +// #endif // UNICODE + +struct _DRIVER_INFO_1A { + LPSTR pName; +} +alias _DRIVER_INFO_1A DRIVER_INFO_1A; +alias _DRIVER_INFO_1A* PDRIVER_INFO_1A; +alias _DRIVER_INFO_1A* LPDRIVER_INFO_1A; + +struct _DRIVER_INFO_1W { + LPWSTR pName; +} +alias _DRIVER_INFO_1W DRIVER_INFO_1W; +alias _DRIVER_INFO_1W* PDRIVER_INFO_1W; +alias _DRIVER_INFO_1W* LPDRIVER_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias DRIVER_INFO_1A DRIVER_INFO_1; +alias PDRIVER_INFO_1A PDRIVER_INFO_1; +alias LPDRIVER_INFO_1A LPDRIVER_INFO_1; +// #endif // UNICODE + +struct _DRIVER_INFO_2A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; +} +alias _DRIVER_INFO_2A DRIVER_INFO_2A; +alias _DRIVER_INFO_2A* PDRIVER_INFO_2A; +alias _DRIVER_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 DRIVER_INFO_2W; +alias _DRIVER_INFO_2W* PDRIVER_INFO_2W; +alias _DRIVER_INFO_2W* LPDRIVER_INFO_2W; + +// #ifdef UNICODE +// ... +// #else +alias DRIVER_INFO_2A DRIVER_INFO_2; +alias PDRIVER_INFO_2A PDRIVER_INFO_2; +alias LPDRIVER_INFO_2A LPDRIVER_INFO_2; +// #endif // UNICODE + +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 DRIVER_INFO_3A; +alias _DRIVER_INFO_3A* PDRIVER_INFO_3A; +alias _DRIVER_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 DRIVER_INFO_3W; +alias _DRIVER_INFO_3W* PDRIVER_INFO_3W; +alias _DRIVER_INFO_3W* LPDRIVER_INFO_3W; + +// #ifdef UNICODE +// ... +// #else +alias DRIVER_INFO_3A DRIVER_INFO_3; +alias PDRIVER_INFO_3A PDRIVER_INFO_3; +alias LPDRIVER_INFO_3A LPDRIVER_INFO_3; +// #endif // UNICODE + +struct _DRIVER_INFO_4A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; + LPSTR pszzPreviousNames; +} +alias _DRIVER_INFO_4A DRIVER_INFO_4A; +alias _DRIVER_INFO_4A* PDRIVER_INFO_4A; +alias _DRIVER_INFO_4A* LPDRIVER_INFO_4A; + +struct _DRIVER_INFO_4W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; + LPWSTR pszzPreviousNames; +} +alias _DRIVER_INFO_4W DRIVER_INFO_4W; +alias _DRIVER_INFO_4W* PDRIVER_INFO_4W; +alias _DRIVER_INFO_4W* LPDRIVER_INFO_4W; + +// #ifdef UNICODE +// ... +// #else +alias DRIVER_INFO_4A DRIVER_INFO_4; +alias PDRIVER_INFO_4A PDRIVER_INFO_4; +alias LPDRIVER_INFO_4A LPDRIVER_INFO_4; +// #endif // UNICODE + +struct _DRIVER_INFO_5A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + DWORD dwDriverAttributes; + DWORD dwConfigVersion; + DWORD dwDriverVersion; +} +alias _DRIVER_INFO_5A DRIVER_INFO_5A; +alias _DRIVER_INFO_5A* PDRIVER_INFO_5A; +alias _DRIVER_INFO_5A* LPDRIVER_INFO_5A; + +struct _DRIVER_INFO_5W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + DWORD dwDriverAttributes; + DWORD dwConfigVersion; + DWORD dwDriverVersion; +} +alias _DRIVER_INFO_5W DRIVER_INFO_5W; +alias _DRIVER_INFO_5W* PDRIVER_INFO_5W; +alias _DRIVER_INFO_5W* LPDRIVER_INFO_5W; + +// #ifdef UNICODE +// ... +// #else +alias DRIVER_INFO_5A DRIVER_INFO_5; +alias PDRIVER_INFO_5A PDRIVER_INFO_5; +alias LPDRIVER_INFO_5A LPDRIVER_INFO_5; +// #endif // UNICODE + +struct _DRIVER_INFO_6A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; + LPSTR pszzPreviousNames; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + LPSTR pszMfgName; + LPSTR pszOEMUrl; + LPSTR pszHardwareID; + LPSTR pszProvider; +} +alias _DRIVER_INFO_6A DRIVER_INFO_6A; +alias _DRIVER_INFO_6A* PDRIVER_INFO_6A; +alias _DRIVER_INFO_6A* LPDRIVER_INFO_6A; + +struct _DRIVER_INFO_6W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; + LPWSTR pszzPreviousNames; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + LPWSTR pszMfgName; + LPWSTR pszOEMUrl; + LPWSTR pszHardwareID; + LPWSTR pszProvider; +} +alias _DRIVER_INFO_6W DRIVER_INFO_6W; +alias _DRIVER_INFO_6W* PDRIVER_INFO_6W; +alias _DRIVER_INFO_6W* LPDRIVER_INFO_6W; + +// #ifdef UNICODE +// ... +// #else +alias DRIVER_INFO_6A DRIVER_INFO_6; +alias PDRIVER_INFO_6A PDRIVER_INFO_6; +alias LPDRIVER_INFO_6A LPDRIVER_INFO_6; +// #endif // UNICODE + +enum : uint { DRIVER_KERNELMODE = 0x00000001 } +enum : uint { DRIVER_USERMODE = 0x00000002 } + +enum : uint { DPD_DELETE_UNUSED_FILES = 0x00000001 } +enum : uint { DPD_DELETE_SPECIFIC_VERSION = 0x00000002 } +enum : uint { DPD_DELETE_ALL_FILES = 0x00000004 } + +enum : uint { APD_STRICT_UPGRADE = 0x00000001 } +enum : uint { APD_STRICT_DOWNGRADE = 0x00000002 } +enum : uint { APD_COPY_ALL_FILES = 0x00000004 } +enum : uint { APD_COPY_NEW_FILES = 0x00000008 } +enum : uint { APD_COPY_FROM_DIRECTORY = 0x00000010 } + +struct _DOC_INFO_1A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; +} +alias _DOC_INFO_1A DOC_INFO_1A; +alias _DOC_INFO_1A* PDOC_INFO_1A; +alias _DOC_INFO_1A* LPDOC_INFO_1A; + +struct _DOC_INFO_1W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; +} +alias _DOC_INFO_1W DOC_INFO_1W; +alias _DOC_INFO_1W* PDOC_INFO_1W; +alias _DOC_INFO_1W* LPDOC_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias DOC_INFO_1A DOC_INFO_1; +alias PDOC_INFO_1A PDOC_INFO_1; +alias LPDOC_INFO_1A LPDOC_INFO_1; +// #endif // UNICODE + +struct _FORM_INFO_1A { + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias _FORM_INFO_1A FORM_INFO_1A; +alias _FORM_INFO_1A* PFORM_INFO_1A; +alias _FORM_INFO_1A* LPFORM_INFO_1A; + +struct _FORM_INFO_1W { + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias _FORM_INFO_1W FORM_INFO_1W; +alias _FORM_INFO_1W* PFORM_INFO_1W; +alias _FORM_INFO_1W* LPFORM_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias FORM_INFO_1A FORM_INFO_1; +alias PFORM_INFO_1A PFORM_INFO_1; +alias LPFORM_INFO_1A LPFORM_INFO_1; +// #endif // UNICODE + +struct _DOC_INFO_2A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias _DOC_INFO_2A DOC_INFO_2A; +alias _DOC_INFO_2A* PDOC_INFO_2A; +alias _DOC_INFO_2A* LPDOC_INFO_2A; + +struct _DOC_INFO_2W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias _DOC_INFO_2W DOC_INFO_2W; +alias _DOC_INFO_2W* PDOC_INFO_2W; +alias _DOC_INFO_2W* LPDOC_INFO_2W; + +// #ifdef UNICODE +// ... +// #else +alias DOC_INFO_2A DOC_INFO_2; +alias PDOC_INFO_2A PDOC_INFO_2; +alias LPDOC_INFO_2A LPDOC_INFO_2; +// #endif // UNICODE + +enum : uint { DI_CHANNEL = 1 } + +enum : uint { DI_READ_SPOOL_JOB = 3 } + +struct _DOC_INFO_3A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwFlags; +} +alias _DOC_INFO_3A DOC_INFO_3A; +alias _DOC_INFO_3A* PDOC_INFO_3A; +alias _DOC_INFO_3A* LPDOC_INFO_3A; + +struct _DOC_INFO_3W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwFlags; +} +alias _DOC_INFO_3W DOC_INFO_3W; +alias _DOC_INFO_3W* PDOC_INFO_3W; +alias _DOC_INFO_3W* LPDOC_INFO_3W; + +// #ifdef UNICODE +// ... +// #else +alias DOC_INFO_3A DOC_INFO_3; +alias PDOC_INFO_3A PDOC_INFO_3; +alias LPDOC_INFO_3A LPDOC_INFO_3; +// #endif // UNICODE + +enum : uint { DI_MEMORYMAP_WRITE = 0x00000001 } + +enum : uint { FORM_USER = 0x00000000 } +enum : uint { FORM_BUILTIN = 0x00000001 } +enum : uint { FORM_PRINTER = 0x00000002 } + +struct _PRINTPROCESSOR_INFO_1A { + LPSTR pName; +} +alias _PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1A; +alias _PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A; +alias _PRINTPROCESSOR_INFO_1A* LPPRINTPROCESSOR_INFO_1A; + +struct _PRINTPROCESSOR_INFO_1W { + LPWSTR pName; +} +alias _PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1W; +alias _PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W; +alias _PRINTPROCESSOR_INFO_1W* LPPRINTPROCESSOR_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1; +alias PPRINTPROCESSOR_INFO_1A PPRINTPROCESSOR_INFO_1; +alias LPPRINTPROCESSOR_INFO_1A LPPRINTPROCESSOR_INFO_1; +// #endif // UNICODE + +struct _PRINTPROCESSOR_CAPS_1 { + DWORD dwLevel; + DWORD dwNupOptions; + DWORD dwPageOrderFlags; + DWORD dwNumberOfCopies; +} +alias _PRINTPROCESSOR_CAPS_1 PRINTPROCESSOR_CAPS_1; +alias _PRINTPROCESSOR_CAPS_1* PPRINTPROCESSOR_CAPS_1; + +enum : uint { NORMAL_PRINT = 0x00000000 } +enum : uint { REVERSE_PRINT = 0x00000001 } + +struct _PORT_INFO_1A { + LPSTR pName; +} +alias _PORT_INFO_1A PORT_INFO_1A; +alias _PORT_INFO_1A* PPORT_INFO_1A; +alias _PORT_INFO_1A* LPPORT_INFO_1A; + +struct _PORT_INFO_1W { + LPWSTR pName; +} +alias _PORT_INFO_1W PORT_INFO_1W; +alias _PORT_INFO_1W* PPORT_INFO_1W; +alias _PORT_INFO_1W* LPPORT_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias PORT_INFO_1A PORT_INFO_1; +alias PPORT_INFO_1A PPORT_INFO_1; +alias LPPORT_INFO_1A LPPORT_INFO_1; +// #endif // UNICODE + +struct _PORT_INFO_2A { + LPSTR pPortName; + LPSTR pMonitorName; + LPSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias _PORT_INFO_2A PORT_INFO_2A; +alias _PORT_INFO_2A* PPORT_INFO_2A; +alias _PORT_INFO_2A* LPPORT_INFO_2A; + +struct _PORT_INFO_2W { + LPWSTR pPortName; + LPWSTR pMonitorName; + LPWSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias _PORT_INFO_2W PORT_INFO_2W; +alias _PORT_INFO_2W* PPORT_INFO_2W; +alias _PORT_INFO_2W* LPPORT_INFO_2W; + +// #ifdef UNICODE +// ... +// #else +alias PORT_INFO_2A PORT_INFO_2; +alias PPORT_INFO_2A PPORT_INFO_2; +alias LPPORT_INFO_2A LPPORT_INFO_2; +// #endif // UNICODE + +enum : uint { PORT_TYPE_WRITE = 0x0001 } +enum : uint { PORT_TYPE_READ = 0x0002 } +enum : uint { PORT_TYPE_REDIRECTED = 0x0004 } +enum : uint { PORT_TYPE_NET_ATTACHED = 0x0008 } + +struct _PORT_INFO_3A { + DWORD dwStatus; + LPSTR pszStatus; + DWORD dwSeverity; +} +alias _PORT_INFO_3A PORT_INFO_3A; +alias _PORT_INFO_3A* PPORT_INFO_3A; +alias _PORT_INFO_3A* LPPORT_INFO_3A; + +struct _PORT_INFO_3W { + DWORD dwStatus; + LPWSTR pszStatus; + DWORD dwSeverity; +} +alias _PORT_INFO_3W PORT_INFO_3W; +alias _PORT_INFO_3W* PPORT_INFO_3W; +alias _PORT_INFO_3W* LPPORT_INFO_3W; + +// #ifdef UNICODE +// ... +// #else +alias PORT_INFO_3A PORT_INFO_3; +alias PPORT_INFO_3A PPORT_INFO_3; +alias LPPORT_INFO_3A LPPORT_INFO_3; +// #endif // UNICODE + +enum : uint { PORT_STATUS_TYPE_ERROR = 1 } +enum : uint { PORT_STATUS_TYPE_WARNING = 2 } +enum : uint { PORT_STATUS_TYPE_INFO = 3 } + +enum : uint { PORT_STATUS_OFFLINE = 1 } +enum : uint { PORT_STATUS_PAPER_JAM = 2 } +enum : uint { PORT_STATUS_PAPER_OUT = 3 } +enum : uint { PORT_STATUS_OUTPUT_BIN_FULL = 4 } +enum : uint { PORT_STATUS_PAPER_PROBLEM = 5 } +enum : uint { PORT_STATUS_NO_TONER = 6 } +enum : uint { PORT_STATUS_DOOR_OPEN = 7 } +enum : uint { PORT_STATUS_USER_INTERVENTION = 8 } +enum : uint { PORT_STATUS_OUT_OF_MEMORY = 9 } + +enum : uint { PORT_STATUS_TONER_LOW = 10 } + +enum : uint { PORT_STATUS_WARMING_UP = 11 } +enum : uint { PORT_STATUS_POWER_SAVE = 12 } + +struct _MONITOR_INFO_1A { + LPSTR pName; +} +alias _MONITOR_INFO_1A MONITOR_INFO_1A; +alias _MONITOR_INFO_1A* PMONITOR_INFO_1A; +alias _MONITOR_INFO_1A* LPMONITOR_INFO_1A; + +struct _MONITOR_INFO_1W { + LPWSTR pName; +} +alias _MONITOR_INFO_1W MONITOR_INFO_1W; +alias _MONITOR_INFO_1W* PMONITOR_INFO_1W; +alias _MONITOR_INFO_1W* LPMONITOR_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias MONITOR_INFO_1A MONITOR_INFO_1; +alias PMONITOR_INFO_1A PMONITOR_INFO_1; +alias LPMONITOR_INFO_1A LPMONITOR_INFO_1; +// #endif // UNICODE + +struct _MONITOR_INFO_2A { + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; +} +alias _MONITOR_INFO_2A MONITOR_INFO_2A; +alias _MONITOR_INFO_2A* PMONITOR_INFO_2A; +alias _MONITOR_INFO_2A* LPMONITOR_INFO_2A; + +struct _MONITOR_INFO_2W { + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; +} +alias _MONITOR_INFO_2W MONITOR_INFO_2W; +alias _MONITOR_INFO_2W* PMONITOR_INFO_2W; +alias _MONITOR_INFO_2W* LPMONITOR_INFO_2W; + +// #ifdef UNICODE +// ... +// #else +alias MONITOR_INFO_2A MONITOR_INFO_2; +alias PMONITOR_INFO_2A PMONITOR_INFO_2; +alias LPMONITOR_INFO_2A LPMONITOR_INFO_2; +// #endif // UNICODE + +struct _DATATYPES_INFO_1A { + LPSTR pName; +} +alias _DATATYPES_INFO_1A DATATYPES_INFO_1A; +alias _DATATYPES_INFO_1A* PDATATYPES_INFO_1A; +alias _DATATYPES_INFO_1A* LPDATATYPES_INFO_1A; + +struct _DATATYPES_INFO_1W { + LPWSTR pName; +} +alias _DATATYPES_INFO_1W DATATYPES_INFO_1W; +alias _DATATYPES_INFO_1W* PDATATYPES_INFO_1W; +alias _DATATYPES_INFO_1W* LPDATATYPES_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias DATATYPES_INFO_1A DATATYPES_INFO_1; +alias PDATATYPES_INFO_1A PDATATYPES_INFO_1; +alias LPDATATYPES_INFO_1A LPDATATYPES_INFO_1; +// #endif // UNICODE + +struct _PRINTER_DEFAULTSA { + LPSTR pDatatype; + LPDEVMODEA pDevMode; + ACCESS_MASK DesiredAccess; +} +alias _PRINTER_DEFAULTSA PRINTER_DEFAULTSA; +alias _PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA; +alias _PRINTER_DEFAULTSA* LPPRINTER_DEFAULTSA; + +struct _PRINTER_DEFAULTSW { + LPWSTR pDatatype; + LPDEVMODEW pDevMode; + ACCESS_MASK DesiredAccess; +} +alias _PRINTER_DEFAULTSW PRINTER_DEFAULTSW; +alias _PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW; +alias _PRINTER_DEFAULTSW* LPPRINTER_DEFAULTSW; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_DEFAULTSA PRINTER_DEFAULTS; +alias PPRINTER_DEFAULTSA PPRINTER_DEFAULTS; +alias LPPRINTER_DEFAULTSA LPPRINTER_DEFAULTS; +// #endif // UNICODE + +struct _PRINTER_ENUM_VALUESA { + LPSTR pValueName; + DWORD cbValueName; + DWORD dwType; + LPBYTE pData; + DWORD cbData; +} +alias _PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUESA; +alias _PRINTER_ENUM_VALUESA* PPRINTER_ENUM_VALUESA; +alias _PRINTER_ENUM_VALUESA* LPPRINTER_ENUM_VALUESA; + +struct _PRINTER_ENUM_VALUESW { + LPWSTR pValueName; + DWORD cbValueName; + DWORD dwType; + LPBYTE pData; + DWORD cbData; +} +alias _PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUESW; +alias _PRINTER_ENUM_VALUESW* PPRINTER_ENUM_VALUESW; +alias _PRINTER_ENUM_VALUESW* LPPRINTER_ENUM_VALUESW; + +// #ifdef UNICODE +// ... +// #else +alias PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUES; +alias PPRINTER_ENUM_VALUESA PPRINTER_ENUM_VALUES; +alias LPPRINTER_ENUM_VALUESA LPPRINTER_ENUM_VALUES; +// #endif // UNICODE + +extern(Windows) export BOOL EnumPrintersA( + DWORD Flags, + LPSTR Name, + DWORD Level, + LPBYTE pPrinterEnum, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPrintersW( + DWORD Flags, + LPWSTR Name, + DWORD Level, + LPBYTE pPrinterEnum, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +// #... +// #else +alias EnumPrintersA EnumPrinters; +// #endif // !UNICODE + +enum : uint { PRINTER_ENUM_DEFAULT = 0x00000001 } +enum : uint { PRINTER_ENUM_LOCAL = 0x00000002 } +enum : uint { PRINTER_ENUM_CONNECTIONS = 0x00000004 } +enum : uint { PRINTER_ENUM_FAVORITE = 0x00000004 } +enum : uint { PRINTER_ENUM_NAME = 0x00000008 } +enum : uint { PRINTER_ENUM_REMOTE = 0x00000010 } +enum : uint { PRINTER_ENUM_SHARED = 0x00000020 } +enum : uint { PRINTER_ENUM_NETWORK = 0x00000040 } + +enum : uint { PRINTER_ENUM_EXPAND = 0x00004000 } +enum : uint { PRINTER_ENUM_CONTAINER = 0x00008000 } + +enum : uint { PRINTER_ENUM_ICONMASK = 0x00ff0000 } +enum : uint { PRINTER_ENUM_ICON1 = 0x00010000 } +enum : uint { PRINTER_ENUM_ICON2 = 0x00020000 } +enum : uint { PRINTER_ENUM_ICON3 = 0x00040000 } +enum : uint { PRINTER_ENUM_ICON4 = 0x00080000 } +enum : uint { PRINTER_ENUM_ICON5 = 0x00100000 } +enum : uint { PRINTER_ENUM_ICON6 = 0x00200000 } +enum : uint { PRINTER_ENUM_ICON7 = 0x00400000 } +enum : uint { PRINTER_ENUM_ICON8 = 0x00800000 } +enum : uint { PRINTER_ENUM_HIDE = 0x01000000 } + +enum : uint { SPOOL_FILE_PERSISTENT = 0x00000001 } +enum : uint { SPOOL_FILE_TEMPORARY = 0x00000002 } + +extern(Windows) export BOOL OpenPrinterA( + LPSTR pPrinterName, + LPHANDLE phPrinter, + LPPRINTER_DEFAULTSA pDefault +); +extern(Windows) export BOOL OpenPrinterW( + LPWSTR pPrinterName, + LPHANDLE phPrinter, + LPPRINTER_DEFAULTSW pDefault +); +// #ifdef UNICODE +// #... +// #else +alias OpenPrinterA OpenPrinter; +// #endif // !UNICODE + +extern(Windows) export BOOL ResetPrinterA( + HANDLE hPrinter, + LPPRINTER_DEFAULTSA pDefault +); +extern(Windows) export BOOL ResetPrinterW( + HANDLE hPrinter, + LPPRINTER_DEFAULTSW pDefault +); +// #ifdef UNICODE +// #... +// #else +alias ResetPrinterA ResetPrinter; +// #endif // !UNICODE + +extern(Windows) export BOOL SetJobA( + HANDLE hPrinter, + DWORD JobId, + DWORD Level, + LPBYTE pJob, + DWORD Command +); +extern(Windows) export BOOL SetJobW( + HANDLE hPrinter, + DWORD JobId, + DWORD Level, + LPBYTE pJob, + DWORD Command +); +// #ifdef UNICODE +// #... +// #else +alias SetJobA SetJob; +// #endif // !UNICODE + +extern(Windows) export BOOL GetJobA( + HANDLE hPrinter, + DWORD JobId, + DWORD Level, + LPBYTE pJob, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetJobW( + HANDLE hPrinter, + DWORD JobId, + DWORD Level, + LPBYTE pJob, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias GetJobA GetJob; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumJobsA( + HANDLE hPrinter, + DWORD FirstJob, + DWORD NoJobs, + DWORD Level, + LPBYTE pJob, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumJobsW( + HANDLE hPrinter, + DWORD FirstJob, + DWORD NoJobs, + DWORD Level, + LPBYTE pJob, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +// #... +// #else +alias EnumJobsA EnumJobs; +// #endif // !UNICODE + +extern(Windows) export HANDLE AddPrinterA( + LPSTR pName, + DWORD Level, + LPBYTE pPrinter +); +extern(Windows) export HANDLE AddPrinterW( + LPWSTR pName, + DWORD Level, + LPBYTE pPrinter +); +// #ifdef UNICODE +// #... +// #else +alias AddPrinterA AddPrinter; +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL SetPrinterA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pPrinter, + DWORD Command +); +extern(Windows) export BOOL SetPrinterW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pPrinter, + DWORD Command +); +// #ifdef UNICODE +// #... +// #else +alias SetPrinterA SetPrinter; +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrinterA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pPrinter, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetPrinterW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pPrinter, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias GetPrinterA GetPrinter; +// #endif // !UNICODE + +extern(Windows) export BOOL AddPrinterDriverA( + LPSTR pName, + DWORD Level, + LPBYTE pDriverInfo +); +extern(Windows) export BOOL AddPrinterDriverW( + LPWSTR pName, + DWORD Level, + LPBYTE pDriverInfo +); +// #ifdef UNICODE +// #... +// #else +alias AddPrinterDriverA AddPrinterDriver; +// #endif // !UNICODE + +extern(Windows) export BOOL AddPrinterDriverExA( + LPSTR pName, + DWORD Level, + LPBYTE pDriverInfo, + DWORD dwFileCopyFlags +); +extern(Windows) export BOOL AddPrinterDriverExW( + LPWSTR pName, + DWORD Level, + LPBYTE pDriverInfo, + DWORD dwFileCopyFlags +); +// #ifdef UNICODE +// #... +// #else +alias AddPrinterDriverExA AddPrinterDriverEx; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumPrinterDriversA( + LPSTR pName, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPrinterDriversW( + LPWSTR pName, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +// #... +// #else +alias EnumPrinterDriversA EnumPrinterDrivers; +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrinterDriverA( + HANDLE hPrinter, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetPrinterDriverW( + HANDLE hPrinter, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias GetPrinterDriverA GetPrinterDriver; +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrinterDriverDirectoryA( + LPSTR pName, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pDriverDirectory, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetPrinterDriverDirectoryW( + LPWSTR pName, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pDriverDirectory, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias GetPrinterDriverDirectoryA GetPrinterDriverDirectory; +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrinterDriverA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pDriverName +); +extern(Windows) export BOOL DeletePrinterDriverW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pDriverName +); +// #ifdef UNICODE +// #... +// #else +alias DeletePrinterDriverA DeletePrinterDriver; +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrinterDriverExA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pDriverName, + DWORD dwDeleteFlag, + DWORD dwVersionFlag +); +extern(Windows) export BOOL DeletePrinterDriverExW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pDriverName, + DWORD dwDeleteFlag, + DWORD dwVersionFlag +); +// #ifdef UNICODE +// #... +// #else +alias DeletePrinterDriverExA DeletePrinterDriverEx; +// #endif // !UNICODE + +extern(Windows) export BOOL AddPrintProcessorA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pPathName, + LPSTR pPrintProcessorName +); +extern(Windows) export BOOL AddPrintProcessorW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pPathName, + LPWSTR pPrintProcessorName +); +// #ifdef UNICODE +// #... +// #else +alias AddPrintProcessorA AddPrintProcessor; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumPrintProcessorsA( + LPSTR pName, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pPrintProcessorInfo, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPrintProcessorsW( + LPWSTR pName, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pPrintProcessorInfo, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +// #... +// #else +alias EnumPrintProcessorsA EnumPrintProcessors; +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrintProcessorDirectoryA( + LPSTR pName, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pPrintProcessorInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetPrintProcessorDirectoryW( + LPWSTR pName, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pPrintProcessorInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias GetPrintProcessorDirectoryA GetPrintProcessorDirectory; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumPrintProcessorDatatypesA( + LPSTR pName, + LPSTR pPrintProcessorName, + DWORD Level, + LPBYTE pDatatypes, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPrintProcessorDatatypesW( + LPWSTR pName, + LPWSTR pPrintProcessorName, + DWORD Level, + LPBYTE pDatatypes, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +// #... +// #else +alias EnumPrintProcessorDatatypesA EnumPrintProcessorDatatypes; +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrintProcessorA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pPrintProcessorName +); +extern(Windows) export BOOL DeletePrintProcessorW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pPrintProcessorName +); +// #ifdef UNICODE +// #... +// #else +alias DeletePrintProcessorA DeletePrintProcessor; +// #endif // !UNICODE + +extern(Windows) export DWORD StartDocPrinterA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pDocInfo +); +extern(Windows) export DWORD StartDocPrinterW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pDocInfo +); +// #ifdef UNICODE +// #... +// #else +alias StartDocPrinterA StartDocPrinter; +// #endif // !UNICODE + +extern(Windows) export BOOL StartPagePrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL WritePrinter( + HANDLE hPrinter, + LPVOID pBuf, + DWORD cbBuf, + LPDWORD pcWritten +); + +extern(Windows) export BOOL FlushPrinter( + HANDLE hPrinter, + LPVOID pBuf, + DWORD cbBuf, + LPDWORD pcWritten, + DWORD cSleep +); + +extern(Windows) export BOOL EndPagePrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL AbortPrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL ReadPrinter( + HANDLE hPrinter, + LPVOID pBuf, + DWORD cbBuf, + LPDWORD pNoBytesRead +); + +extern(Windows) export BOOL EndDocPrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL AddJobA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pData, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL AddJobW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pData, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias AddJobA AddJob; +// #endif // !UNICODE + +extern(Windows) export BOOL ScheduleJob( + HANDLE hPrinter, + DWORD JobId +); + +extern(Windows) export BOOL PrinterProperties( + HWND hWnd, + HANDLE hPrinter +); + +extern(Windows) export LONG DocumentPropertiesA( + HWND hWnd, + HANDLE hPrinter, + LPSTR pDeviceName, + PDEVMODEA pDevModeOutput, + PDEVMODEA pDevModeInput, + DWORD fMode +); +extern(Windows) export LONG DocumentPropertiesW( + HWND hWnd, + HANDLE hPrinter, + LPWSTR pDeviceName, + PDEVMODEW pDevModeOutput, + PDEVMODEW pDevModeInput, + DWORD fMode +); +// #ifdef UNICODE +// #... +// #else +alias DocumentPropertiesA DocumentProperties; +// #endif // !UNICODE + +extern(Windows) export LONG AdvancedDocumentPropertiesA( + HWND hWnd, + HANDLE hPrinter, + LPSTR pDeviceName, + PDEVMODEA pDevModeOutput, + PDEVMODEA pDevModeInput +); +extern(Windows) export LONG AdvancedDocumentPropertiesW( + HWND hWnd, + HANDLE hPrinter, + LPWSTR pDeviceName, + PDEVMODEW pDevModeOutput, + PDEVMODEW pDevModeInput +); +// #ifdef UNICODE +// #... +// #else +alias AdvancedDocumentPropertiesA AdvancedDocumentProperties; +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrinterDataA( + HANDLE hPrinter, + LPSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded +); +extern(Windows) export DWORD GetPrinterDataW( + HANDLE hPrinter, + LPWSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias GetPrinterDataA GetPrinterData; +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrinterDataExA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded +); +extern(Windows) export DWORD GetPrinterDataExW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias GetPrinterDataExA GetPrinterDataEx; +// #endif // !UNICODE + +extern(Windows) export DWORD EnumPrinterDataA( + HANDLE hPrinter, + DWORD dwIndex, + LPSTR pValueName, + DWORD cbValueName, + LPDWORD pcbValueName, + LPDWORD pType, + LPBYTE pData, + DWORD cbData, + LPDWORD pcbData +); +extern(Windows) export DWORD EnumPrinterDataW( + HANDLE hPrinter, + DWORD dwIndex, + LPWSTR pValueName, + DWORD cbValueName, + LPDWORD pcbValueName, + LPDWORD pType, + LPBYTE pData, + DWORD cbData, + LPDWORD pcbData +); +// #ifdef UNICODE +// #... +// #else +alias EnumPrinterDataA EnumPrinterData; +// #endif // !UNICODE + +extern(Windows) export DWORD EnumPrinterDataExA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPBYTE pEnumValues, + DWORD cbEnumValues, + LPDWORD pcbEnumValues, + LPDWORD pnEnumValues +); +extern(Windows) export DWORD EnumPrinterDataExW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPBYTE pEnumValues, + DWORD cbEnumValues, + LPDWORD pcbEnumValues, + LPDWORD pnEnumValues +); +// #ifdef UNICODE +// #... +// #else +alias EnumPrinterDataExA EnumPrinterDataEx; +// #endif // !UNICODE + +extern(Windows) export DWORD EnumPrinterKeyA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPSTR pSubkey, + DWORD cbSubkey, + LPDWORD pcbSubkey +); +extern(Windows) export DWORD EnumPrinterKeyW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPWSTR pSubkey, + DWORD cbSubkey, + LPDWORD pcbSubkey +); +// #ifdef UNICODE +// #... +// #else +alias EnumPrinterKeyA EnumPrinterKey; +// #endif // !UNICODE + +extern(Windows) export DWORD SetPrinterDataA( + HANDLE hPrinter, + LPSTR pValueName, + DWORD Type, + LPBYTE pData, + DWORD cbData +); +extern(Windows) export DWORD SetPrinterDataW( + HANDLE hPrinter, + LPWSTR pValueName, + DWORD Type, + LPBYTE pData, + DWORD cbData +); +// #ifdef UNICODE +// #... +// #else +alias SetPrinterDataA SetPrinterData; +// #endif // !UNICODE + +extern(Windows) export DWORD SetPrinterDataExA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName, + DWORD Type, + LPBYTE pData, + DWORD cbData +); +extern(Windows) export DWORD SetPrinterDataExW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName, + DWORD Type, + LPBYTE pData, + DWORD cbData +); +// #ifdef UNICODE +// #... +// #else +alias SetPrinterDataExA SetPrinterDataEx; +// #endif // !UNICODE + +extern(Windows) export DWORD DeletePrinterDataA( + HANDLE hPrinter, + LPSTR pValueName +); +extern(Windows) export DWORD DeletePrinterDataW( + HANDLE hPrinter, + LPWSTR pValueName +); +// #ifdef UNICODE +// #... +// #else +alias DeletePrinterDataA DeletePrinterData; +// #endif // !UNICODE + +extern(Windows) export DWORD DeletePrinterDataExA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName +); +extern(Windows) export DWORD DeletePrinterDataExW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName +); +// #ifdef UNICODE +// #... +// #else +alias DeletePrinterDataExA DeletePrinterDataEx; +// #endif // !UNICODE + +extern(Windows) export DWORD DeletePrinterKeyA( + HANDLE hPrinter, + LPCSTR pKeyName +); +extern(Windows) export DWORD DeletePrinterKeyW( + HANDLE hPrinter, + LPCWSTR pKeyName +); +// #ifdef UNICODE +// #... +// #else +alias DeletePrinterKeyA DeletePrinterKey; +// #endif // !UNICODE + +enum : uint { PRINTER_NOTIFY_TYPE = 0x00 } +enum : uint { JOB_NOTIFY_TYPE = 0x01 } + +enum : uint { PRINTER_NOTIFY_FIELD_SERVER_NAME = 0x00 } +enum : uint { PRINTER_NOTIFY_FIELD_PRINTER_NAME = 0x01 } +enum : uint { PRINTER_NOTIFY_FIELD_SHARE_NAME = 0x02 } +enum : uint { PRINTER_NOTIFY_FIELD_PORT_NAME = 0x03 } +enum : uint { PRINTER_NOTIFY_FIELD_DRIVER_NAME = 0x04 } +enum : uint { PRINTER_NOTIFY_FIELD_COMMENT = 0x05 } +enum : uint { PRINTER_NOTIFY_FIELD_LOCATION = 0x06 } +enum : uint { PRINTER_NOTIFY_FIELD_DEVMODE = 0x07 } +enum : uint { PRINTER_NOTIFY_FIELD_SEPFILE = 0x08 } +enum : uint { PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR = 0x09 } +enum : uint { PRINTER_NOTIFY_FIELD_PARAMETERS = 0x0A } +enum : uint { PRINTER_NOTIFY_FIELD_DATATYPE = 0x0B } +enum : uint { PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR = 0x0C } +enum : uint { PRINTER_NOTIFY_FIELD_ATTRIBUTES = 0x0D } +enum : uint { PRINTER_NOTIFY_FIELD_PRIORITY = 0x0E } +enum : uint { PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY = 0x0F } +enum : uint { PRINTER_NOTIFY_FIELD_START_TIME = 0x10 } +enum : uint { PRINTER_NOTIFY_FIELD_UNTIL_TIME = 0x11 } +enum : uint { PRINTER_NOTIFY_FIELD_STATUS = 0x12 } +enum : uint { PRINTER_NOTIFY_FIELD_STATUS_STRING = 0x13 } +enum : uint { PRINTER_NOTIFY_FIELD_CJOBS = 0x14 } +enum : uint { PRINTER_NOTIFY_FIELD_AVERAGE_PPM = 0x15 } +enum : uint { PRINTER_NOTIFY_FIELD_TOTAL_PAGES = 0x16 } +enum : uint { PRINTER_NOTIFY_FIELD_PAGES_PRINTED = 0x17 } +enum : uint { PRINTER_NOTIFY_FIELD_TOTAL_BYTES = 0x18 } +enum : uint { PRINTER_NOTIFY_FIELD_BYTES_PRINTED = 0x19 } +enum : uint { PRINTER_NOTIFY_FIELD_OBJECT_GUID = 0x1A } + +enum : uint { JOB_NOTIFY_FIELD_PRINTER_NAME = 0x00 } +enum : uint { JOB_NOTIFY_FIELD_MACHINE_NAME = 0x01 } +enum : uint { JOB_NOTIFY_FIELD_PORT_NAME = 0x02 } +enum : uint { JOB_NOTIFY_FIELD_USER_NAME = 0x03 } +enum : uint { JOB_NOTIFY_FIELD_NOTIFY_NAME = 0x04 } +enum : uint { JOB_NOTIFY_FIELD_DATATYPE = 0x05 } +enum : uint { JOB_NOTIFY_FIELD_PRINT_PROCESSOR = 0x06 } +enum : uint { JOB_NOTIFY_FIELD_PARAMETERS = 0x07 } +enum : uint { JOB_NOTIFY_FIELD_DRIVER_NAME = 0x08 } +enum : uint { JOB_NOTIFY_FIELD_DEVMODE = 0x09 } +enum : uint { JOB_NOTIFY_FIELD_STATUS = 0x0A } +enum : uint { JOB_NOTIFY_FIELD_STATUS_STRING = 0x0B } +enum : uint { JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR = 0x0C } +enum : uint { JOB_NOTIFY_FIELD_DOCUMENT = 0x0D } +enum : uint { JOB_NOTIFY_FIELD_PRIORITY = 0x0E } +enum : uint { JOB_NOTIFY_FIELD_POSITION = 0x0F } +enum : uint { JOB_NOTIFY_FIELD_SUBMITTED = 0x10 } +enum : uint { JOB_NOTIFY_FIELD_START_TIME = 0x11 } +enum : uint { JOB_NOTIFY_FIELD_UNTIL_TIME = 0x12 } +enum : uint { JOB_NOTIFY_FIELD_TIME = 0x13 } +enum : uint { JOB_NOTIFY_FIELD_TOTAL_PAGES = 0x14 } +enum : uint { JOB_NOTIFY_FIELD_PAGES_PRINTED = 0x15 } +enum : uint { JOB_NOTIFY_FIELD_TOTAL_BYTES = 0x16 } +enum : uint { JOB_NOTIFY_FIELD_BYTES_PRINTED = 0x17 } + +struct _PRINTER_NOTIFY_OPTIONS_TYPE { + WORD Type; + WORD Reserved0; + DWORD Reserved1; + DWORD Reserved2; + DWORD Count; + PWORD pFields; +} +alias _PRINTER_NOTIFY_OPTIONS_TYPE PRINTER_NOTIFY_OPTIONS_TYPE; +alias _PRINTER_NOTIFY_OPTIONS_TYPE* PPRINTER_NOTIFY_OPTIONS_TYPE; +alias _PRINTER_NOTIFY_OPTIONS_TYPE* LPPRINTER_NOTIFY_OPTIONS_TYPE; + +enum : uint { PRINTER_NOTIFY_OPTIONS_REFRESH = 0x01 } + +struct _PRINTER_NOTIFY_OPTIONS { + DWORD Version; + DWORD Flags; + DWORD Count; + PPRINTER_NOTIFY_OPTIONS_TYPE pTypes; +} +alias _PRINTER_NOTIFY_OPTIONS PRINTER_NOTIFY_OPTIONS; +alias _PRINTER_NOTIFY_OPTIONS* PPRINTER_NOTIFY_OPTIONS; +alias _PRINTER_NOTIFY_OPTIONS* LPPRINTER_NOTIFY_OPTIONS; + +enum : uint { PRINTER_NOTIFY_INFO_DISCARDED = 0x01 } + +struct _PRINTER_NOTIFY_INFO_DATA { + WORD Type; + WORD Field; + DWORD Reserved; + DWORD Id; +union { + DWORD adwData[2]; +struct { + DWORD cbBuf; + LPVOID pBuf; +} + +} + +} +alias _PRINTER_NOTIFY_INFO_DATA PRINTER_NOTIFY_INFO_DATA; +alias _PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA; +alias _PRINTER_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 PRINTER_NOTIFY_INFO; +alias _PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO; +alias _PRINTER_NOTIFY_INFO* LPPRINTER_NOTIFY_INFO; + +struct _BINARY_CONTAINER { + DWORD cbBuf; + LPBYTE pData; +} +alias _BINARY_CONTAINER BINARY_CONTAINER; +alias _BINARY_CONTAINER* PBINARY_CONTAINER; + +struct _BIDI_DATA { + DWORD dwBidiType; +union { + BOOL bData; + LONG iData; + LPWSTR sData; + FLOAT fData; + BINARY_CONTAINER biData; +} + +} +alias _BIDI_DATA BIDI_DATA; +alias _BIDI_DATA* PBIDI_DATA; +alias _BIDI_DATA* LPBIDI_DATA; + +struct _BIDI_REQUEST_DATA { + DWORD dwReqNumber; + LPWSTR pSchema; + BIDI_DATA data; +} +alias _BIDI_REQUEST_DATA BIDI_REQUEST_DATA; +alias _BIDI_REQUEST_DATA* PBIDI_REQUEST_DATA; +alias _BIDI_REQUEST_DATA* LPBIDI_REQUEST_DATA; + +struct _BIDI_REQUEST_CONTAINER { + DWORD Version; + DWORD Flags; + DWORD Count; + BIDI_REQUEST_DATA aData[ 1 ]; +} +alias _BIDI_REQUEST_CONTAINER BIDI_REQUEST_CONTAINER; +alias _BIDI_REQUEST_CONTAINER* PBIDI_REQUEST_CONTAINER; +alias _BIDI_REQUEST_CONTAINER* LPBIDI_REQUEST_CONTAINER; + +struct _BIDI_RESPONSE_DATA { + DWORD dwResult; + DWORD dwReqNumber; + LPWSTR pSchema; + BIDI_DATA data; +} +alias _BIDI_RESPONSE_DATA BIDI_RESPONSE_DATA; +alias _BIDI_RESPONSE_DATA* PBIDI_RESPONSE_DATA; +alias _BIDI_RESPONSE_DATA* LPBIDI_RESPONSE_DATA; + +struct _BIDI_RESPONSE_CONTAINER { + DWORD Version; + DWORD Flags; + DWORD Count; + BIDI_RESPONSE_DATA aData[ 1 ]; +} +alias _BIDI_RESPONSE_CONTAINER BIDI_RESPONSE_CONTAINER; +alias _BIDI_RESPONSE_CONTAINER* PBIDI_RESPONSE_CONTAINER; +alias _BIDI_RESPONSE_CONTAINER* LPBIDI_RESPONSE_CONTAINER; + +const wchar[] BIDI_ACTION_ENUM_SCHEMA = "EnumSchema"; +const wchar[] BIDI_ACTION_GET = "Get"; +const wchar[] BIDI_ACTION_SET = "Set"; +const wchar[] BIDI_ACTION_GET_ALL = "GetAll"; + +enum _0 { + BIDI_NULL = 0, + BIDI_INT = 1, + BIDI_FLOAT = 2, + BIDI_BOOL = 3, + BIDI_STRING = 4, + BIDI_TEXT = 5, + BIDI_ENUM = 6, + BIDI_BLOB = 7, +} +alias _0 BIDI_TYPE; + +enum : uint { BIDI_ACCESS_ADMINISTRATOR = 0x1 } +enum : uint { BIDI_ACCESS_USER = 0x2 } + +enum : uint { ERROR_BIDI_STATUS_OK = 0 } +alias ERROR_NOT_SUPPORTED ERROR_BIDI_NOT_SUPPORTED; + +enum : uint { ERROR_BIDI_ERROR_BASE = 13000 } +enum : uint { ERROR_BIDI_STATUS_WARNING = ERROR_BIDI_ERROR_BASE + 1 } +enum : uint { ERROR_BIDI_SCHEMA_READ_ONLY = ERROR_BIDI_ERROR_BASE + 2 } +enum : uint { ERROR_BIDI_SERVER_OFFLINE = ERROR_BIDI_ERROR_BASE + 3 } +enum : uint { ERROR_BIDI_DEVICE_OFFLINE = ERROR_BIDI_ERROR_BASE + 4 } +enum : uint { ERROR_BIDI_SCHEMA_NOT_SUPPORTED = ERROR_BIDI_ERROR_BASE + 5 } + +extern(Windows) export DWORD WaitForPrinterChange( + HANDLE hPrinter, + DWORD Flags +); + +extern(Windows) export HANDLE FindFirstPrinterChangeNotification( + HANDLE hPrinter, + DWORD fdwFlags, + DWORD fdwOptions, + LPVOID pPrinterNotifyOptions +); + +extern(Windows) export BOOL FindNextPrinterChangeNotification( + HANDLE hChange, + PDWORD pdwChange, + LPVOID pvReserved, + LPVOID *ppPrinterNotifyInfo +); + +extern(Windows) export BOOL FreePrinterNotifyInfo( + PPRINTER_NOTIFY_INFO pPrinterNotifyInfo +); + +extern(Windows) export BOOL FindClosePrinterChangeNotification( + HANDLE hChange +); + +enum : uint { PRINTER_CHANGE_ADD_PRINTER = 0x00000001 } +enum : uint { PRINTER_CHANGE_SET_PRINTER = 0x00000002 } +enum : uint { PRINTER_CHANGE_DELETE_PRINTER = 0x00000004 } +enum : uint { PRINTER_CHANGE_FAILED_CONNECTION_PRINTER = 0x00000008 } +enum : uint { PRINTER_CHANGE_PRINTER = 0x000000FF } +enum : uint { PRINTER_CHANGE_ADD_JOB = 0x00000100 } +enum : uint { PRINTER_CHANGE_SET_JOB = 0x00000200 } +enum : uint { PRINTER_CHANGE_DELETE_JOB = 0x00000400 } +enum : uint { PRINTER_CHANGE_WRITE_JOB = 0x00000800 } +enum : uint { PRINTER_CHANGE_JOB = 0x0000FF00 } +enum : uint { PRINTER_CHANGE_ADD_FORM = 0x00010000 } +enum : uint { PRINTER_CHANGE_SET_FORM = 0x00020000 } +enum : uint { PRINTER_CHANGE_DELETE_FORM = 0x00040000 } +enum : uint { PRINTER_CHANGE_FORM = 0x00070000 } +enum : uint { PRINTER_CHANGE_ADD_PORT = 0x00100000 } +enum : uint { PRINTER_CHANGE_CONFIGURE_PORT = 0x00200000 } +enum : uint { PRINTER_CHANGE_DELETE_PORT = 0x00400000 } +enum : uint { PRINTER_CHANGE_PORT = 0x00700000 } +enum : uint { PRINTER_CHANGE_ADD_PRINT_PROCESSOR = 0x01000000 } +enum : uint { PRINTER_CHANGE_DELETE_PRINT_PROCESSOR = 0x04000000 } +enum : uint { PRINTER_CHANGE_PRINT_PROCESSOR = 0x07000000 } +enum : uint { PRINTER_CHANGE_ADD_PRINTER_DRIVER = 0x10000000 } +enum : uint { PRINTER_CHANGE_SET_PRINTER_DRIVER = 0x20000000 } +enum : uint { PRINTER_CHANGE_DELETE_PRINTER_DRIVER = 0x40000000 } +enum : uint { PRINTER_CHANGE_PRINTER_DRIVER = 0x70000000 } +enum : uint { PRINTER_CHANGE_TIMEOUT = 0x80000000 } +enum : uint { PRINTER_CHANGE_ALL = 0x7777FFFF } + +extern(Windows) export DWORD PrinterMessageBoxA( + HANDLE hPrinter, + DWORD Error, + HWND hWnd, + LPSTR pText, + LPSTR pCaption, + DWORD dwType +); +extern(Windows) export DWORD PrinterMessageBoxW( + HANDLE hPrinter, + DWORD Error, + HWND hWnd, + LPWSTR pText, + LPWSTR pCaption, + DWORD dwType +); +// #ifdef UNICODE +// #... +// #else +alias PrinterMessageBoxA PrinterMessageBox; +// #endif // !UNICODE + +enum : uint { PRINTER_ERROR_INFORMATION = 0x80000000 } +enum : uint { PRINTER_ERROR_WARNING = 0x40000000 } +enum : uint { PRINTER_ERROR_SEVERE = 0x20000000 } + +enum : uint { PRINTER_ERROR_OUTOFPAPER = 0x00000001 } +enum : uint { PRINTER_ERROR_JAM = 0x00000002 } +enum : uint { PRINTER_ERROR_OUTOFTONER = 0x00000004 } + +extern(Windows) export BOOL ClosePrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL AddFormA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pForm +); +extern(Windows) export BOOL AddFormW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pForm +); +// #ifdef UNICODE +// #... +// #else +alias AddFormA AddForm; +// #endif // !UNICODE + +extern(Windows) export BOOL DeleteFormA( + HANDLE hPrinter, + LPSTR pFormName +); +extern(Windows) export BOOL DeleteFormW( + HANDLE hPrinter, + LPWSTR pFormName +); +// #ifdef UNICODE +// #... +// #else +alias DeleteFormA DeleteForm; +// #endif // !UNICODE + +extern(Windows) export BOOL GetFormA( + HANDLE hPrinter, + LPSTR pFormName, + DWORD Level, + LPBYTE pForm, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetFormW( + HANDLE hPrinter, + LPWSTR pFormName, + DWORD Level, + LPBYTE pForm, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +// #... +// #else +alias GetFormA GetForm; +// #endif // !UNICODE + +extern(Windows) export BOOL SetFormA( + HANDLE hPrinter, + LPSTR pFormName, + DWORD Level, + LPBYTE pForm +); +extern(Windows) export BOOL SetFormW( + HANDLE hPrinter, + LPWSTR pFormName, + DWORD Level, + LPBYTE pForm +); +// #ifdef UNICODE +// #... +// #else +alias SetFormA SetForm; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumFormsA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pForm, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumFormsW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pForm, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +// #... +// #else +alias EnumFormsA EnumForms; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumMonitorsA( + LPSTR pName, + DWORD Level, + LPBYTE pMonitors, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumMonitorsW( + LPWSTR pName, + DWORD Level, + LPBYTE pMonitors, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +// #... +// #else +alias EnumMonitorsA EnumMonitors; +// #endif // !UNICODE + +extern(Windows) export BOOL AddMonitorA( + LPSTR pName, + DWORD Level, + LPBYTE pMonitors +); +extern(Windows) export BOOL AddMonitorW( + LPWSTR pName, + DWORD Level, + LPBYTE pMonitors +); +// #ifdef UNICODE +// #... +// #else +alias AddMonitorA AddMonitor; +// #endif // !UNICODE + +extern(Windows) export BOOL DeleteMonitorA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pMonitorName +); +extern(Windows) export BOOL DeleteMonitorW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pMonitorName +); +// #ifdef UNICODE +// #... +// #else +alias DeleteMonitorA DeleteMonitor; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumPortsA( + LPSTR pName, + DWORD Level, + LPBYTE pPorts, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPortsW( + LPWSTR pName, + DWORD Level, + LPBYTE pPorts, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +// #... +// #else +alias EnumPortsA EnumPorts; +// #endif // !UNICODE + +extern(Windows) export BOOL AddPortA( + LPSTR pName, + HWND hWnd, + LPSTR pMonitorName +); +extern(Windows) export BOOL AddPortW( + LPWSTR pName, + HWND hWnd, + LPWSTR pMonitorName +); +// #ifdef UNICODE +// #... +// #else +alias AddPortA AddPort; +// #endif // !UNICODE + +extern(Windows) export BOOL ConfigurePortA( + LPSTR pName, + HWND hWnd, + LPSTR pPortName +); +extern(Windows) export BOOL ConfigurePortW( + LPWSTR pName, + HWND hWnd, + LPWSTR pPortName +); +// #ifdef UNICODE +// #... +// #else +alias ConfigurePortA ConfigurePort; +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePortA( + LPSTR pName, + HWND hWnd, + LPSTR pPortName +); +extern(Windows) export BOOL DeletePortW( + LPWSTR pName, + HWND hWnd, + LPWSTR pPortName +); +// #ifdef UNICODE +// #... +// #else +alias DeletePortA DeletePort; +// #endif // !UNICODE + +extern(Windows) export BOOL XcvDataW( + HANDLE hXcv, + PCWSTR pszDataName, + PBYTE pInputData, + DWORD cbInputData, + PBYTE pOutputData, + DWORD cbOutputData, + PDWORD pcbOutputNeeded, + PDWORD pdwStatus +); +alias XcvDataW XcvData; + +extern(Windows) export BOOL GetDefaultPrinterA( + LPSTR pszBuffer, + LPDWORD pcchBuffer); +extern(Windows) export BOOL GetDefaultPrinterW( + LPWSTR pszBuffer, + LPDWORD pcchBuffer); +// #ifdef UNICODE +// #... +// #else +alias GetDefaultPrinterA GetDefaultPrinter; +// #endif // !UNICODE + +extern(Windows) export BOOL SetDefaultPrinterA( + LPCSTR pszPrinter); +extern(Windows) export BOOL SetDefaultPrinterW( + LPCWSTR pszPrinter); +// #ifdef UNICODE +// #... +// #else +alias SetDefaultPrinterA SetDefaultPrinter; +// #endif // !UNICODE + +extern(Windows) export BOOL SetPortA( + LPSTR pName, + LPSTR pPortName, + DWORD dwLevel, + LPBYTE pPortInfo +); +extern(Windows) export BOOL SetPortW( + LPWSTR pName, + LPWSTR pPortName, + DWORD dwLevel, + LPBYTE pPortInfo +); +// #ifdef UNICODE +// #... +// #else +alias SetPortA SetPort; +// #endif // !UNICODE + +extern(Windows) export BOOL AddPrinterConnectionA( + LPSTR pName +); +extern(Windows) export BOOL AddPrinterConnectionW( + LPWSTR pName +); +// #ifdef UNICODE +// #... +// #else +alias AddPrinterConnectionA AddPrinterConnection; +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrinterConnectionA( + LPSTR pName +); +extern(Windows) export BOOL DeletePrinterConnectionW( + LPWSTR pName +); +// #ifdef UNICODE +// #... +// #else +alias DeletePrinterConnectionA DeletePrinterConnection; +// #endif // !UNICODE + +extern(Windows) export HANDLE ConnectToPrinterDlg( + HWND hwnd, + DWORD Flags +); + +struct _PROVIDOR_INFO_1A { + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; +} +alias _PROVIDOR_INFO_1A PROVIDOR_INFO_1A; +alias _PROVIDOR_INFO_1A* PPROVIDOR_INFO_1A; +alias _PROVIDOR_INFO_1A* LPPROVIDOR_INFO_1A; + +struct _PROVIDOR_INFO_1W { + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; +} +alias _PROVIDOR_INFO_1W PROVIDOR_INFO_1W; +alias _PROVIDOR_INFO_1W* PPROVIDOR_INFO_1W; +alias _PROVIDOR_INFO_1W* LPPROVIDOR_INFO_1W; + +// #ifdef UNICODE +// ... +// #else +alias PROVIDOR_INFO_1A PROVIDOR_INFO_1; +alias PPROVIDOR_INFO_1A PPROVIDOR_INFO_1; +alias LPPROVIDOR_INFO_1A LPPROVIDOR_INFO_1; +// #endif // UNICODE + +struct _PROVIDOR_INFO_2A { + LPSTR pOrder; +} +alias _PROVIDOR_INFO_2A PROVIDOR_INFO_2A; +alias _PROVIDOR_INFO_2A* PPROVIDOR_INFO_2A; +alias _PROVIDOR_INFO_2A* LPPROVIDOR_INFO_2A; + +struct _PROVIDOR_INFO_2W { + LPWSTR pOrder; +} +alias _PROVIDOR_INFO_2W PROVIDOR_INFO_2W; +alias _PROVIDOR_INFO_2W* PPROVIDOR_INFO_2W; +alias _PROVIDOR_INFO_2W* LPPROVIDOR_INFO_2W; + +// #ifdef UNICODE +// ... +// #else +alias PROVIDOR_INFO_2A PROVIDOR_INFO_2; +alias PPROVIDOR_INFO_2A PPROVIDOR_INFO_2; +alias LPPROVIDOR_INFO_2A LPPROVIDOR_INFO_2; +// #endif // UNICODE + +extern(Windows) export BOOL AddPrintProvidorA( + LPSTR pName, + DWORD level, + LPBYTE pProvidorInfo +); +extern(Windows) export BOOL AddPrintProvidorW( + LPWSTR pName, + DWORD level, + LPBYTE pProvidorInfo +); +// #ifdef UNICODE +// #... +// #else +alias AddPrintProvidorA AddPrintProvidor; +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrintProvidorA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pPrintProvidorName +); +extern(Windows) export BOOL DeletePrintProvidorW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pPrintProvidorName +); +// #ifdef UNICODE +// #... +// #else +alias DeletePrintProvidorA DeletePrintProvidor; +// #endif // !UNICODE + +const TCHAR[] SPLREG_DEFAULT_SPOOL_DIRECTORY = "DefaultSpoolDirectory"; +const TCHAR[] SPLREG_PORT_THREAD_PRIORITY_DEFAULT = "PortThreadPriorityDefault"; +const TCHAR[] SPLREG_PORT_THREAD_PRIORITY = "PortThreadPriority"; +const TCHAR[] SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT = "SchedulerThreadPriorityDefault"; +const TCHAR[] SPLREG_SCHEDULER_THREAD_PRIORITY = "SchedulerThreadPriority"; +const TCHAR[] SPLREG_BEEP_ENABLED = "BeepEnabled"; +const TCHAR[] SPLREG_NET_POPUP = "NetPopup"; +const TCHAR[] SPLREG_RETRY_POPUP = "RetryPopup"; +const TCHAR[] SPLREG_NET_POPUP_TO_COMPUTER = "NetPopupToComputer"; +const TCHAR[] SPLREG_EVENT_LOG = "EventLog"; +const TCHAR[] SPLREG_MAJOR_VERSION = "MajorVersion"; +const TCHAR[] SPLREG_MINOR_VERSION = "MinorVersion"; +const TCHAR[] SPLREG_ARCHITECTURE = "Architecture"; +const TCHAR[] SPLREG_OS_VERSION = "OSVersion"; +const TCHAR[] SPLREG_OS_VERSIONEX = "OSVersionEx"; +const TCHAR[] SPLREG_DS_PRESENT = "DsPresent"; +const TCHAR[] SPLREG_DS_PRESENT_FOR_USER = "DsPresentForUser"; +const TCHAR[] SPLREG_REMOTE_FAX = "RemoteFax"; +const TCHAR[] SPLREG_RESTART_JOB_ON_POOL_ERROR = "RestartJobOnPoolError"; +const TCHAR[] SPLREG_RESTART_JOB_ON_POOL_ENABLED = "RestartJobOnPoolEnabled"; +const TCHAR[] SPLREG_DNS_MACHINE_NAME = "DNSMachineName"; + +enum : uint { SERVER_ACCESS_ADMINISTER = 0x00000001 } +enum : uint { SERVER_ACCESS_ENUMERATE = 0x00000002 } + +enum : uint { PRINTER_ACCESS_ADMINISTER = 0x00000004 } +enum : uint { PRINTER_ACCESS_USE = 0x00000008 } + +enum : uint { JOB_ACCESS_ADMINISTER = 0x00000010 } + +enum : uint { SERVER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE } + +enum : uint { SERVER_READ = STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE } + +enum : uint { SERVER_WRITE = STANDARD_RIGHTS_WRITE | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE } + +enum : uint { SERVER_EXECUTE = STANDARD_RIGHTS_EXECUTE | SERVER_ACCESS_ENUMERATE } + +enum : uint { PRINTER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE } + +enum : uint { PRINTER_READ = STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE } + +enum : uint { PRINTER_WRITE = STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE } + +enum : uint { PRINTER_EXECUTE = STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE } + +enum : uint { JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER } + +enum : uint { JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER } + +enum : uint { JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER } + +enum : uint { JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER } + +const TCHAR[] SPLDS_SPOOLER_KEY = "DsSpooler"; +const TCHAR[] SPLDS_DRIVER_KEY = "DsDriver"; +const TCHAR[] SPLDS_USER_KEY = "DsUser"; + +const TCHAR[] SPLDS_ASSET_NUMBER = "assetNumber"; +const TCHAR[] SPLDS_BYTES_PER_MINUTE = "bytesPerMinute"; +const TCHAR[] SPLDS_DESCRIPTION = "description"; +const TCHAR[] SPLDS_DRIVER_NAME = "driverName"; +const TCHAR[] SPLDS_DRIVER_VERSION = "driverVersion"; +const TCHAR[] SPLDS_LOCATION = "location"; +const TCHAR[] SPLDS_PORT_NAME = "portName"; +const TCHAR[] SPLDS_PRINT_ATTRIBUTES = "printAttributes"; +const TCHAR[] SPLDS_PRINT_BIN_NAMES = "printBinNames"; +const TCHAR[] SPLDS_PRINT_COLLATE = "printCollate"; +const TCHAR[] SPLDS_PRINT_COLOR = "printColor"; +const TCHAR[] SPLDS_PRINT_DUPLEX_SUPPORTED = "printDuplexSupported"; +const TCHAR[] SPLDS_PRINT_END_TIME = "printEndTime"; +const TCHAR[] SPLDS_PRINTER_CLASS = "printQueue"; +const TCHAR[] SPLDS_PRINTER_NAME = "printerName"; +const TCHAR[] SPLDS_PRINT_KEEP_PRINTED_JOBS = "printKeepPrintedJobs"; +const TCHAR[] SPLDS_PRINT_LANGUAGE = "printLanguage"; +const TCHAR[] SPLDS_PRINT_MAC_ADDRESS = "printMACAddress"; +const TCHAR[] SPLDS_PRINT_MAX_X_EXTENT = "printMaxXExtent"; +const TCHAR[] SPLDS_PRINT_MAX_Y_EXTENT = "printMaxYExtent"; +const TCHAR[] SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED = "printMaxResolutionSupported"; +const TCHAR[] SPLDS_PRINT_MEDIA_READY = "printMediaReady"; +const TCHAR[] SPLDS_PRINT_MEDIA_SUPPORTED = "printMediaSupported"; +const TCHAR[] SPLDS_PRINT_MEMORY = "printMemory"; +const TCHAR[] SPLDS_PRINT_MIN_X_EXTENT = "printMinXExtent"; +const TCHAR[] SPLDS_PRINT_MIN_Y_EXTENT = "printMinYExtent"; +const TCHAR[] SPLDS_PRINT_NETWORK_ADDRESS = "printNetworkAddress"; +const TCHAR[] SPLDS_PRINT_NOTIFY = "printNotify"; +const TCHAR[] SPLDS_PRINT_NUMBER_UP = "printNumberUp"; +const TCHAR[] SPLDS_PRINT_ORIENTATIONS_SUPPORTED = "printOrientationsSupported"; +const TCHAR[] SPLDS_PRINT_OWNER = "printOwner"; +const TCHAR[] SPLDS_PRINT_PAGES_PER_MINUTE = "printPagesPerMinute"; +const TCHAR[] SPLDS_PRINT_RATE = "printRate"; +const TCHAR[] SPLDS_PRINT_RATE_UNIT = "printRateUnit"; +const TCHAR[] SPLDS_PRINT_SEPARATOR_FILE = "printSeparatorFile"; +const TCHAR[] SPLDS_PRINT_SHARE_NAME = "printShareName"; +const TCHAR[] SPLDS_PRINT_SPOOLING = "printSpooling"; +const TCHAR[] SPLDS_PRINT_STAPLING_SUPPORTED = "printStaplingSupported"; +const TCHAR[] SPLDS_PRINT_START_TIME = "printStartTime"; +const TCHAR[] SPLDS_PRINT_STATUS = "printStatus"; +const TCHAR[] SPLDS_PRIORITY = "priority"; +const TCHAR[] SPLDS_SERVER_NAME = "serverName"; +const TCHAR[] SPLDS_SHORT_SERVER_NAME = "shortServerName"; +const TCHAR[] SPLDS_UNC_NAME = "uNCName"; +const TCHAR[] SPLDS_URL = "url"; +const TCHAR[] SPLDS_FLAGS = "flags"; +const TCHAR[] SPLDS_VERSION_NUMBER = "versionNumber"; + +const TCHAR[] SPLDS_PRINTER_NAME_ALIASES = "printerNameAliases"; +const TCHAR[] SPLDS_PRINTER_LOCATIONS = "printerLocations"; +const TCHAR[] SPLDS_PRINTER_MODEL = "printerModel"; + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINSPOOL_ ADDED src/win32/ansi/winuser.d Index: src/win32/ansi/winuser.d ================================================================== --- src/win32/ansi/winuser.d +++ src/win32/ansi/winuser.d @@ -0,0 +1,8665 @@ +module win32.ansi.winuser; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winbase, win32.ansi.wingdi; +enum : uint { + QS_POSTMESSAGE = 0x0008, + QS_TIMER = 0x0010, + QS_PAINT = 0x0020, + QS_SENDMESSAGE = 0x0040, + QS_HOTKEY = 0x0080, + QS_INPUT = 0x0407 +} + +// #ifndef _WINUSER_ +// #define _WINUSER_ + +// #if !defined(_USER32_) +// #define WINUSERAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #ifdef _MAC +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif /* __cplusplus */ + +// #ifndef WINVER +// #... +// #endif /* !WINVER */ + +// #include + +// #ifndef NOUSER + +alias HANDLE HDWP; +alias VOID MENUTEMPLATEA; +alias VOID MENUTEMPLATEW; +// #ifdef UNICODE +// ... +// #else +alias MENUTEMPLATEA MENUTEMPLATE; +// #endif // UNICODE +alias PVOID LPMENUTEMPLATEA; +alias PVOID LPMENUTEMPLATEW; +// #ifdef UNICODE +// ... +// #else +alias LPMENUTEMPLATEA LPMENUTEMPLATE; +// #endif // UNICODE + +extern(Windows) alias LRESULT function(HWND, UINT, WPARAM, LPARAM) WNDPROC; + +// #ifdef STRICT + +extern(Windows) alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; +extern(Windows) alias VOID function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; +extern(Windows) alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; +extern(Windows) alias BOOL function(HWND, LPARAM) WNDENUMPROC; +extern(Windows) alias LRESULT function(int code, WPARAM wParam, LPARAM lParam) HOOKPROC; +extern(Windows) alias VOID function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; + +extern(Windows) alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; +extern(Windows) alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; + +extern(Windows) alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; +extern(Windows) alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; + +extern(Windows) alias int function(LPSTR lpch, int ichCurrent, int cch, int code) EDITWORDBREAKPROCA; +extern(Windows) alias int function(LPWSTR lpch, int ichCurrent, int cch, int code) EDITWORDBREAKPROCW; + +// #if(WINVER >= 0x0400) +extern(Windows) alias BOOL function(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy) DRAWSTATEPROC; +// #endif /* WINVER >= 0x0400 */ +// #else /* !STRICT */ + +// ... + +// ... + +// ... + +// ... + +// #if(WINVER >= 0x0400) +// ... +// #endif /* WINVER >= 0x0400 */ +// #endif /* !STRICT */ + +// #ifdef UNICODE +// ... +// #else /* !UNICODE */ +alias PROPENUMPROCA PROPENUMPROC; +alias PROPENUMPROCEXA PROPENUMPROCEX; +alias EDITWORDBREAKPROCA EDITWORDBREAKPROC; +// #endif /* UNICODE */ + +// #ifdef STRICT + +extern(Windows) alias BOOL function(LPSTR, LPARAM) NAMEENUMPROCA; +extern(Windows) alias BOOL function(LPWSTR, LPARAM) NAMEENUMPROCW; + +alias NAMEENUMPROCA WINSTAENUMPROCA; +alias NAMEENUMPROCA DESKTOPENUMPROCA; +alias NAMEENUMPROCW WINSTAENUMPROCW; +alias NAMEENUMPROCW DESKTOPENUMPROCW; + +// #else /* !STRICT */ + +// ... + +// #endif /* !STRICT */ + +// #ifdef UNICODE +// ... + +// #else /* !UNICODE */ +alias WINSTAENUMPROCA WINSTAENUMPROC; +alias DESKTOPENUMPROCA DESKTOPENUMPROC; + +// #endif /* UNICODE */ + +bit IS_INTRESOURCE(LPTSTR _r){ return ((cast(ULONG_PTR)(_r) >> 16) == 0); } +LPSTR MAKEINTRESOURCEA(WORD i){ return cast(LPSTR)(cast(ULONG_PTR)(cast(WORD)(i))); } +LPWSTR MAKEINTRESOURCEW(WORD i){ return cast(LPWSTR)(cast(ULONG_PTR)(cast(WORD)(i))); } +// #ifdef UNICODE +// #... +// #else +alias MAKEINTRESOURCEA MAKEINTRESOURCE; +// #endif // !UNICODE + +// #ifndef NORESOURCE + +const LPTSTR RT_CURSOR = cast(LPTSTR)(1); +const LPTSTR RT_BITMAP = cast(LPTSTR)(2); +const LPTSTR RT_ICON = cast(LPTSTR)(3); +const LPTSTR RT_MENU = cast(LPTSTR)(4); +const LPTSTR RT_DIALOG = cast(LPTSTR)(5); +const LPTSTR RT_STRING = cast(LPTSTR)(6); +const LPTSTR RT_FONTDIR = cast(LPTSTR)(7); +const LPTSTR RT_FONT = cast(LPTSTR)(8); +const LPTSTR RT_ACCELERATOR = cast(LPTSTR)(9); +const LPTSTR RT_RCDATA = cast(LPTSTR)(10); +const LPTSTR RT_MESSAGETABLE = cast(LPTSTR)(11); + +enum : uint { DIFFERENCE = 11 } +const LPTSTR RT_GROUP_CURSOR = cast(LPTSTR)(cast(ULONG_PTR)RT_CURSOR + DIFFERENCE); +const LPTSTR RT_GROUP_ICON = cast(LPTSTR)(cast(ULONG_PTR)RT_ICON + DIFFERENCE); +const LPTSTR RT_VERSION = cast(LPTSTR)(16); +const LPTSTR RT_DLGINCLUDE = cast(LPTSTR)(17); +// #if(WINVER >= 0x0400) +const LPTSTR RT_PLUGPLAY = cast(LPTSTR)(19); +const LPTSTR RT_VXD = cast(LPTSTR)(20); +const LPTSTR RT_ANICURSOR = cast(LPTSTR)(21); +const LPTSTR RT_ANIICON = cast(LPTSTR)(22); +// #endif /* WINVER >= 0x0400 */ +const LPTSTR RT_HTML = cast(LPTSTR)(23); +// #ifdef RC_INVOKED +// #... +// #... +// #... +// #... +// #... +// #... +// #else /* RC_INVOKED */ +const LPTSTR RT_MANIFEST = cast(LPTSTR)(24); +const LPTSTR CREATEPROCESS_MANIFEST_RESOURCE_ID = cast(LPTSTR)( 1); +const LPTSTR ISOLATIONAWARE_MANIFEST_RESOURCE_ID = cast(LPTSTR)(2); +const LPTSTR ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = cast(LPTSTR)(3); +const LPTSTR MINIMUM_RESERVED_MANIFEST_RESOURCE_ID = cast(LPTSTR)( 1 ); +const LPTSTR MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = cast(LPTSTR)(16 ); +// #endif /* RC_INVOKED */ + +// #endif /* !NORESOURCE */ + +extern(Windows) export int wvsprintfA( + LPSTR, + LPCSTR, + va_list arglist); +extern(Windows) export int wvsprintfW( + LPWSTR, + LPCWSTR, + va_list arglist); +// #ifdef UNICODE +// #... +// #else +alias wvsprintfA wvsprintf; +// #endif // !UNICODE + +extern(C) export int wsprintfA( + LPSTR, + LPCSTR, + ...); +extern(C) export int wsprintfW( + LPWSTR, + LPCWSTR, + ...); +// #ifdef UNICODE +// #... +// #else +alias wsprintfA wsprintf; +// #endif // !UNICODE + +const LPWSTR SETWALLPAPER_DEFAULT = cast(LPWSTR)-1; + +// #ifndef NOSCROLL + +enum : uint { SB_HORZ = 0 } +enum : uint { SB_VERT = 1 } +enum : uint { SB_CTL = 2 } +enum : uint { SB_BOTH = 3 } + +enum : uint { SB_LINEUP = 0 } +enum : uint { SB_LINELEFT = 0 } +enum : uint { SB_LINEDOWN = 1 } +enum : uint { SB_LINERIGHT = 1 } +enum : uint { SB_PAGEUP = 2 } +enum : uint { SB_PAGELEFT = 2 } +enum : uint { SB_PAGEDOWN = 3 } +enum : uint { SB_PAGERIGHT = 3 } +enum : uint { SB_THUMBPOSITION = 4 } +enum : uint { SB_THUMBTRACK = 5 } +enum : uint { SB_TOP = 6 } +enum : uint { SB_LEFT = 6 } +enum : uint { SB_BOTTOM = 7 } +enum : uint { SB_RIGHT = 7 } +enum : uint { SB_ENDSCROLL = 8 } + +// #endif /* !NOSCROLL */ + +// #ifndef NOSHOWWINDOW + +enum : uint { SW_HIDE = 0 } +enum : uint { SW_SHOWNORMAL = 1 } +enum : uint { SW_NORMAL = 1 } +enum : uint { SW_SHOWMINIMIZED = 2 } +enum : uint { SW_SHOWMAXIMIZED = 3 } +enum : uint { SW_MAXIMIZE = 3 } +enum : uint { SW_SHOWNOACTIVATE = 4 } +enum : uint { SW_SHOW = 5 } +enum : uint { SW_MINIMIZE = 6 } +enum : uint { SW_SHOWMINNOACTIVE = 7 } +enum : uint { SW_SHOWNA = 8 } +enum : uint { SW_RESTORE = 9 } +enum : uint { SW_SHOWDEFAULT = 10 } +enum : uint { SW_FORCEMINIMIZE = 11 } +enum : uint { SW_MAX = 11 } + +enum : uint { HIDE_WINDOW = 0 } +enum : uint { SHOW_OPENWINDOW = 1 } +enum : uint { SHOW_ICONWINDOW = 2 } +enum : uint { SHOW_FULLSCREEN = 3 } +enum : uint { SHOW_OPENNOACTIVATE = 4 } + +enum : uint { SW_PARENTCLOSING = 1 } +enum : uint { SW_OTHERZOOM = 2 } +enum : uint { SW_PARENTOPENING = 3 } +enum : uint { SW_OTHERUNZOOM = 4 } + +// #endif /* !NOSHOWWINDOW */ + +// #if(WINVER >= 0x0500) + +enum : uint { AW_HOR_POSITIVE = 0x00000001 } +enum : uint { AW_HOR_NEGATIVE = 0x00000002 } +enum : uint { AW_VER_POSITIVE = 0x00000004 } +enum : uint { AW_VER_NEGATIVE = 0x00000008 } +enum : uint { AW_CENTER = 0x00000010 } +enum : uint { AW_HIDE = 0x00010000 } +enum : uint { AW_ACTIVATE = 0x00020000 } +enum : uint { AW_SLIDE = 0x00040000 } +enum : uint { AW_BLEND = 0x00080000 } + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { KF_EXTENDED = 0x0100 } +enum : uint { KF_DLGMODE = 0x0800 } +enum : uint { KF_MENUMODE = 0x1000 } +enum : uint { KF_ALTDOWN = 0x2000 } +enum : uint { KF_REPEAT = 0x4000 } +enum : uint { KF_UP = 0x8000 } + +// #ifndef NOVIRTUALKEYCODES + +enum : uint { VK_LBUTTON = 0x01 } +enum : uint { VK_RBUTTON = 0x02 } +enum : uint { VK_CANCEL = 0x03 } +enum : uint { VK_MBUTTON = 0x04 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { VK_XBUTTON1 = 0x05 } +enum : uint { VK_XBUTTON2 = 0x06 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { VK_BACK = 0x08 } +enum : uint { VK_TAB = 0x09 } + +enum : uint { VK_CLEAR = 0x0C } +enum : uint { VK_RETURN = 0x0D } + +enum : uint { VK_SHIFT = 0x10 } +enum : uint { VK_CONTROL = 0x11 } +enum : uint { VK_MENU = 0x12 } +enum : uint { VK_PAUSE = 0x13 } +enum : uint { VK_CAPITAL = 0x14 } + +enum : uint { VK_KANA = 0x15 } +enum : uint { VK_HANGEUL = 0x15 } +enum : uint { VK_HANGUL = 0x15 } +enum : uint { VK_JUNJA = 0x17 } +enum : uint { VK_FINAL = 0x18 } +enum : uint { VK_HANJA = 0x19 } +enum : uint { VK_KANJI = 0x19 } + +enum : uint { VK_ESCAPE = 0x1B } + +enum : uint { VK_CONVERT = 0x1C } +enum : uint { VK_NONCONVERT = 0x1D } +enum : uint { VK_ACCEPT = 0x1E } +enum : uint { VK_MODECHANGE = 0x1F } + +enum : uint { VK_SPACE = 0x20 } +enum : uint { VK_PRIOR = 0x21 } +enum : uint { VK_NEXT = 0x22 } +enum : uint { VK_END = 0x23 } +enum : uint { VK_HOME = 0x24 } +enum : uint { VK_LEFT = 0x25 } +enum : uint { VK_UP = 0x26 } +enum : uint { VK_RIGHT = 0x27 } +enum : uint { VK_DOWN = 0x28 } +enum : uint { VK_SELECT = 0x29 } +enum : uint { VK_PRINT = 0x2A } +enum : uint { VK_EXECUTE = 0x2B } +enum : uint { VK_SNAPSHOT = 0x2C } +enum : uint { VK_INSERT = 0x2D } +enum : uint { VK_DELETE = 0x2E } +enum : uint { VK_HELP = 0x2F } + +enum : uint { VK_LWIN = 0x5B } +enum : uint { VK_RWIN = 0x5C } +enum : uint { VK_APPS = 0x5D } + +enum : uint { VK_SLEEP = 0x5F } + +enum : uint { VK_NUMPAD0 = 0x60 } +enum : uint { VK_NUMPAD1 = 0x61 } +enum : uint { VK_NUMPAD2 = 0x62 } +enum : uint { VK_NUMPAD3 = 0x63 } +enum : uint { VK_NUMPAD4 = 0x64 } +enum : uint { VK_NUMPAD5 = 0x65 } +enum : uint { VK_NUMPAD6 = 0x66 } +enum : uint { VK_NUMPAD7 = 0x67 } +enum : uint { VK_NUMPAD8 = 0x68 } +enum : uint { VK_NUMPAD9 = 0x69 } +enum : uint { VK_MULTIPLY = 0x6A } +enum : uint { VK_ADD = 0x6B } +enum : uint { VK_SEPARATOR = 0x6C } +enum : uint { VK_SUBTRACT = 0x6D } +enum : uint { VK_DECIMAL = 0x6E } +enum : uint { VK_DIVIDE = 0x6F } +enum : uint { VK_F1 = 0x70 } +enum : uint { VK_F2 = 0x71 } +enum : uint { VK_F3 = 0x72 } +enum : uint { VK_F4 = 0x73 } +enum : uint { VK_F5 = 0x74 } +enum : uint { VK_F6 = 0x75 } +enum : uint { VK_F7 = 0x76 } +enum : uint { VK_F8 = 0x77 } +enum : uint { VK_F9 = 0x78 } +enum : uint { VK_F10 = 0x79 } +enum : uint { VK_F11 = 0x7A } +enum : uint { VK_F12 = 0x7B } +enum : uint { VK_F13 = 0x7C } +enum : uint { VK_F14 = 0x7D } +enum : uint { VK_F15 = 0x7E } +enum : uint { VK_F16 = 0x7F } +enum : uint { VK_F17 = 0x80 } +enum : uint { VK_F18 = 0x81 } +enum : uint { VK_F19 = 0x82 } +enum : uint { VK_F20 = 0x83 } +enum : uint { VK_F21 = 0x84 } +enum : uint { VK_F22 = 0x85 } +enum : uint { VK_F23 = 0x86 } +enum : uint { VK_F24 = 0x87 } + +enum : uint { VK_NUMLOCK = 0x90 } +enum : uint { VK_SCROLL = 0x91 } + +enum : uint { VK_OEM_NEC_EQUAL = 0x92 } + +enum : uint { VK_OEM_FJ_JISHO = 0x92 } +enum : uint { VK_OEM_FJ_MASSHOU = 0x93 } +enum : uint { VK_OEM_FJ_TOUROKU = 0x94 } +enum : uint { VK_OEM_FJ_LOYA = 0x95 } +enum : uint { VK_OEM_FJ_ROYA = 0x96 } + +enum : uint { VK_LSHIFT = 0xA0 } +enum : uint { VK_RSHIFT = 0xA1 } +enum : uint { VK_LCONTROL = 0xA2 } +enum : uint { VK_RCONTROL = 0xA3 } +enum : uint { VK_LMENU = 0xA4 } +enum : uint { VK_RMENU = 0xA5 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { VK_BROWSER_BACK = 0xA6 } +enum : uint { VK_BROWSER_FORWARD = 0xA7 } +enum : uint { VK_BROWSER_REFRESH = 0xA8 } +enum : uint { VK_BROWSER_STOP = 0xA9 } +enum : uint { VK_BROWSER_SEARCH = 0xAA } +enum : uint { VK_BROWSER_FAVORITES = 0xAB } +enum : uint { VK_BROWSER_HOME = 0xAC } + +enum : uint { VK_VOLUME_MUTE = 0xAD } +enum : uint { VK_VOLUME_DOWN = 0xAE } +enum : uint { VK_VOLUME_UP = 0xAF } +enum : uint { VK_MEDIA_NEXT_TRACK = 0xB0 } +enum : uint { VK_MEDIA_PREV_TRACK = 0xB1 } +enum : uint { VK_MEDIA_STOP = 0xB2 } +enum : uint { VK_MEDIA_PLAY_PAUSE = 0xB3 } +enum : uint { VK_LAUNCH_MAIL = 0xB4 } +enum : uint { VK_LAUNCH_MEDIA_SELECT = 0xB5 } +enum : uint { VK_LAUNCH_APP1 = 0xB6 } +enum : uint { VK_LAUNCH_APP2 = 0xB7 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { VK_OEM_1 = 0xBA } +enum : uint { VK_OEM_PLUS = 0xBB } +enum : uint { VK_OEM_COMMA = 0xBC } +enum : uint { VK_OEM_MINUS = 0xBD } +enum : uint { VK_OEM_PERIOD = 0xBE } +enum : uint { VK_OEM_2 = 0xBF } +enum : uint { VK_OEM_3 = 0xC0 } + +enum : uint { VK_OEM_4 = 0xDB } +enum : uint { VK_OEM_5 = 0xDC } +enum : uint { VK_OEM_6 = 0xDD } +enum : uint { VK_OEM_7 = 0xDE } +enum : uint { VK_OEM_8 = 0xDF } + +enum : uint { VK_OEM_AX = 0xE1 } +enum : uint { VK_OEM_102 = 0xE2 } +enum : uint { VK_ICO_HELP = 0xE3 } +enum : uint { VK_ICO_00 = 0xE4 } + +// #if(WINVER >= 0x0400) +enum : uint { VK_PROCESSKEY = 0xE5 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { VK_ICO_CLEAR = 0xE6 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { VK_PACKET = 0xE7 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { VK_OEM_RESET = 0xE9 } +enum : uint { VK_OEM_JUMP = 0xEA } +enum : uint { VK_OEM_PA1 = 0xEB } +enum : uint { VK_OEM_PA2 = 0xEC } +enum : uint { VK_OEM_PA3 = 0xED } +enum : uint { VK_OEM_WSCTRL = 0xEE } +enum : uint { VK_OEM_CUSEL = 0xEF } +enum : uint { VK_OEM_ATTN = 0xF0 } +enum : uint { VK_OEM_FINISH = 0xF1 } +enum : uint { VK_OEM_COPY = 0xF2 } +enum : uint { VK_OEM_AUTO = 0xF3 } +enum : uint { VK_OEM_ENLW = 0xF4 } +enum : uint { VK_OEM_BACKTAB = 0xF5 } + +enum : uint { VK_ATTN = 0xF6 } +enum : uint { VK_CRSEL = 0xF7 } +enum : uint { VK_EXSEL = 0xF8 } +enum : uint { VK_EREOF = 0xF9 } +enum : uint { VK_PLAY = 0xFA } +enum : uint { VK_ZOOM = 0xFB } +enum : uint { VK_NONAME = 0xFC } +enum : uint { VK_PA1 = 0xFD } +enum : uint { VK_OEM_CLEAR = 0xFE } + +// #endif /* !NOVIRTUALKEYCODES */ + +// #ifndef NOWH + +enum { WH_MIN = -1 } +enum { WH_MSGFILTER = -1 } +enum : uint { WH_JOURNALRECORD = 0 } +enum : uint { WH_JOURNALPLAYBACK = 1 } +enum : uint { WH_KEYBOARD = 2 } +enum : uint { WH_GETMESSAGE = 3 } +enum : uint { WH_CALLWNDPROC = 4 } +enum : uint { WH_CBT = 5 } +enum : uint { WH_SYSMSGFILTER = 6 } +enum : uint { WH_MOUSE = 7 } +// #if defined(_WIN32_WINDOWS) +// #... +// #endif +enum : uint { WH_DEBUG = 9 } +enum : uint { WH_SHELL = 10 } +enum : uint { WH_FOREGROUNDIDLE = 11 } +// #if(WINVER >= 0x0400) +enum : uint { WH_CALLWNDPROCRET = 12 } +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0400) +enum : uint { WH_KEYBOARD_LL = 13 } +enum : uint { WH_MOUSE_LL = 14 } +// #endif // (_WIN32_WINNT >= 0x0400) + +// #if(WINVER >= 0x0400) +// #if (_WIN32_WINNT >= 0x0400) +enum : uint { WH_MAX = 14 } +// #else +// #... +// #endif // (_WIN32_WINNT >= 0x0400) +// #else +// #... +// #endif + +alias WH_MIN WH_MINHOOK; +alias WH_MAX WH_MAXHOOK; + +enum : uint { HC_ACTION = 0 } +enum : uint { HC_GETNEXT = 1 } +enum : uint { HC_SKIP = 2 } +enum : uint { HC_NOREMOVE = 3 } +alias HC_NOREMOVE HC_NOREM; +enum : uint { HC_SYSMODALON = 4 } +enum : uint { HC_SYSMODALOFF = 5 } + +enum : uint { HCBT_MOVESIZE = 0 } +enum : uint { HCBT_MINMAX = 1 } +enum : uint { HCBT_QS = 2 } +enum : uint { HCBT_CREATEWND = 3 } +enum : uint { HCBT_DESTROYWND = 4 } +enum : uint { HCBT_ACTIVATE = 5 } +enum : uint { HCBT_CLICKSKIPPED = 6 } +enum : uint { HCBT_KEYSKIPPED = 7 } +enum : uint { HCBT_SYSCOMMAND = 8 } +enum : uint { HCBT_SETFOCUS = 9 } + +struct tagCBT_CREATEWNDA { + tagCREATESTRUCTA *lpcs; + HWND hwndInsertAfter; +} +alias tagCBT_CREATEWNDA CBT_CREATEWNDA; +alias tagCBT_CREATEWNDA* LPCBT_CREATEWNDA; + +struct tagCBT_CREATEWNDW { + tagCREATESTRUCTW *lpcs; + HWND hwndInsertAfter; +} +alias tagCBT_CREATEWNDW CBT_CREATEWNDW; +alias tagCBT_CREATEWNDW* LPCBT_CREATEWNDW; + +// #ifdef UNICODE +// ... +// #else +alias CBT_CREATEWNDA CBT_CREATEWND; +alias LPCBT_CREATEWNDA LPCBT_CREATEWND; +// #endif // UNICODE + +struct tagCBTACTIVATESTRUCT { + BOOL fMouse; + HWND hWndActive; +} +alias tagCBTACTIVATESTRUCT CBTACTIVATESTRUCT; +alias tagCBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT; + +// #if(_WIN32_WINNT >= 0x0501) + +struct tagWTSSESSION_NOTIFICATION { + DWORD cbSize; + DWORD dwSessionId; +} +alias tagWTSSESSION_NOTIFICATION WTSSESSION_NOTIFICATION; +alias tagWTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION; + +enum : uint { WTS_CONSOLE_CONNECT = 0x1 } +enum : uint { WTS_CONSOLE_DISCONNECT = 0x2 } +enum : uint { WTS_REMOTE_CONNECT = 0x3 } +enum : uint { WTS_REMOTE_DISCONNECT = 0x4 } +enum : uint { WTS_SESSION_LOGON = 0x5 } +enum : uint { WTS_SESSION_LOGOFF = 0x6 } +enum : uint { WTS_SESSION_LOCK = 0x7 } +enum : uint { WTS_SESSION_UNLOCK = 0x8 } + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { MSGF_DIALOGBOX = 0 } +enum : uint { MSGF_MESSAGEBOX = 1 } +enum : uint { MSGF_MENU = 2 } +enum : uint { MSGF_SCROLLBAR = 5 } +enum : uint { MSGF_NEXTWINDOW = 6 } +enum : uint { MSGF_MAX = 8 } +enum : uint { MSGF_USER = 4096 } + +enum : uint { HSHELL_WINDOWCREATED = 1 } +enum : uint { HSHELL_WINDOWDESTROYED = 2 } +enum : uint { HSHELL_ACTIVATESHELLWINDOW = 3 } + +// #if(WINVER >= 0x0400) +enum : uint { HSHELL_WINDOWACTIVATED = 4 } +enum : uint { HSHELL_GETMINRECT = 5 } +enum : uint { HSHELL_REDRAW = 6 } +enum : uint { HSHELL_TASKMAN = 7 } +enum : uint { HSHELL_LANGUAGE = 8 } +// #endif /* WINVER >= 0x0400 */ +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { HSHELL_ACCESSIBILITYSTATE = 11 } +enum : uint { HSHELL_APPCOMMAND = 12 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { HSHELL_WINDOWREPLACED = 13 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(_WIN32_WINNT >= 0x0500) + +enum : uint { ACCESS_STICKYKEYS = 0x0001 } +enum : uint { ACCESS_FILTERKEYS = 0x0002 } +enum : uint { ACCESS_MOUSEKEYS = 0x0003 } + +enum : uint { APPCOMMAND_BROWSER_BACKWARD = 1 } +enum : uint { APPCOMMAND_BROWSER_FORWARD = 2 } +enum : uint { APPCOMMAND_BROWSER_REFRESH = 3 } +enum : uint { APPCOMMAND_BROWSER_STOP = 4 } +enum : uint { APPCOMMAND_BROWSER_SEARCH = 5 } +enum : uint { APPCOMMAND_BROWSER_FAVORITES = 6 } +enum : uint { APPCOMMAND_BROWSER_HOME = 7 } +enum : uint { APPCOMMAND_VOLUME_MUTE = 8 } +enum : uint { APPCOMMAND_VOLUME_DOWN = 9 } +enum : uint { APPCOMMAND_VOLUME_UP = 10 } +enum : uint { APPCOMMAND_MEDIA_NEXTTRACK = 11 } +enum : uint { APPCOMMAND_MEDIA_PREVIOUSTRACK = 12 } +enum : uint { APPCOMMAND_MEDIA_STOP = 13 } +enum : uint { APPCOMMAND_MEDIA_PLAY_PAUSE = 14 } +enum : uint { APPCOMMAND_LAUNCH_MAIL = 15 } +enum : uint { APPCOMMAND_LAUNCH_MEDIA_SELECT = 16 } +enum : uint { APPCOMMAND_LAUNCH_APP1 = 17 } +enum : uint { APPCOMMAND_LAUNCH_APP2 = 18 } +enum : uint { APPCOMMAND_BASS_DOWN = 19 } +enum : uint { APPCOMMAND_BASS_BOOST = 20 } +enum : uint { APPCOMMAND_BASS_UP = 21 } +enum : uint { APPCOMMAND_TREBLE_DOWN = 22 } +enum : uint { APPCOMMAND_TREBLE_UP = 23 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { APPCOMMAND_MICROPHONE_VOLUME_MUTE = 24 } +enum : uint { APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25 } +enum : uint { APPCOMMAND_MICROPHONE_VOLUME_UP = 26 } +enum : uint { APPCOMMAND_HELP = 27 } +enum : uint { APPCOMMAND_FIND = 28 } +enum : uint { APPCOMMAND_NEW = 29 } +enum : uint { APPCOMMAND_OPEN = 30 } +enum : uint { APPCOMMAND_CLOSE = 31 } +enum : uint { APPCOMMAND_SAVE = 32 } +enum : uint { APPCOMMAND_PRINT = 33 } +enum : uint { APPCOMMAND_UNDO = 34 } +enum : uint { APPCOMMAND_REDO = 35 } +enum : uint { APPCOMMAND_COPY = 36 } +enum : uint { APPCOMMAND_CUT = 37 } +enum : uint { APPCOMMAND_PASTE = 38 } +enum : uint { APPCOMMAND_REPLY_TO_MAIL = 39 } +enum : uint { APPCOMMAND_FORWARD_MAIL = 40 } +enum : uint { APPCOMMAND_SEND_MAIL = 41 } +enum : uint { APPCOMMAND_SPELL_CHECK = 42 } +enum : uint { APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43 } +enum : uint { APPCOMMAND_MIC_ON_OFF_TOGGLE = 44 } +enum : uint { APPCOMMAND_CORRECTION_LIST = 45 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { FAPPCOMMAND_MOUSE = 0x8000 } +enum : uint { FAPPCOMMAND_KEY = 0 } +enum : uint { FAPPCOMMAND_OEM = 0x1000 } +enum : uint { FAPPCOMMAND_MASK = 0xF000 } + +// #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK)) +// #define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK)) +// #define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM +// #define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam)) +// #define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam) +// #endif /* _WIN32_WINNT >= 0x0500 */ + +struct tagEVENTMSG { + UINT message; + UINT paramL; + UINT paramH; + DWORD time; + HWND hwnd; +} +alias tagEVENTMSG EVENTMSG; +alias tagEVENTMSG* PEVENTMSGMSG; +alias tagEVENTMSG* NPEVENTMSGMSG; +alias tagEVENTMSG* LPEVENTMSGMSG; + +alias tagEVENTMSG* PEVENTMSG; +alias tagEVENTMSG* NPEVENTMSG; +alias tagEVENTMSG* LPEVENTMSG; + +struct tagCWPSTRUCT { + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; +} +alias tagCWPSTRUCT CWPSTRUCT; +alias tagCWPSTRUCT* PCWPSTRUCT; +alias tagCWPSTRUCT* NPCWPSTRUCT; +alias tagCWPSTRUCT* LPCWPSTRUCT; + +// #if(WINVER >= 0x0400) + +struct tagCWPRETSTRUCT { + LRESULT lResult; + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; +} +alias tagCWPRETSTRUCT CWPRETSTRUCT; +alias tagCWPRETSTRUCT* PCWPRETSTRUCT; +alias tagCWPRETSTRUCT* NPCWPRETSTRUCT; +alias tagCWPRETSTRUCT* LPCWPRETSTRUCT; + +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0400) + +enum : uint { LLKHF_EXTENDED = KF_EXTENDED >> 8 } +enum : uint { LLKHF_INJECTED = 0x00000010 } +enum : uint { LLKHF_ALTDOWN = KF_ALTDOWN >> 8 } +enum : uint { LLKHF_UP = KF_UP >> 8 } + +enum : uint { LLMHF_INJECTED = 0x00000001 } + +struct tagKBDLLHOOKSTRUCT { + DWORD vkCode; + DWORD scanCode; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagKBDLLHOOKSTRUCT KBDLLHOOKSTRUCT; +alias tagKBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT; +alias tagKBDLLHOOKSTRUCT* PKBDLLHOOKSTRUCT; + +struct tagMSLLHOOKSTRUCT { + POINT pt; + DWORD mouseData; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagMSLLHOOKSTRUCT MSLLHOOKSTRUCT; +alias tagMSLLHOOKSTRUCT* LPMSLLHOOKSTRUCT; +alias tagMSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; + +// #endif // (_WIN32_WINNT >= 0x0400) + +struct tagDEBUGHOOKINFO { + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM wParam; + int code; +} +alias tagDEBUGHOOKINFO DEBUGHOOKINFO; +alias tagDEBUGHOOKINFO* PDEBUGHOOKINFO; +alias tagDEBUGHOOKINFO* NPDEBUGHOOKINFO; +alias tagDEBUGHOOKINFO* LPDEBUGHOOKINFO; + +struct tagMOUSEHOOKSTRUCT { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + ULONG_PTR dwExtraInfo; +} +alias tagMOUSEHOOKSTRUCT MOUSEHOOKSTRUCT; +alias tagMOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT; +alias tagMOUSEHOOKSTRUCT* PMOUSEHOOKSTRUCT; + +// #if(_WIN32_WINNT >= 0x0500) +// #ifdef __cplusplus +struct tagMOUSEHOOKSTRUCTEX { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + ULONG_PTR dwExtraInfo; + DWORD mouseData; +} +alias tagMOUSEHOOKSTRUCTEX MOUSEHOOKSTRUCTEX; +alias tagMOUSEHOOKSTRUCTEX* LPMOUSEHOOKSTRUCTEX; +alias tagMOUSEHOOKSTRUCTEX* PMOUSEHOOKSTRUCTEX; + +// #else // ndef __cplusplus +// ... +// #endif +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0400) + +struct tagHARDWAREHOOKSTRUCT { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; +} +alias tagHARDWAREHOOKSTRUCT HARDWAREHOOKSTRUCT; +alias tagHARDWAREHOOKSTRUCT* LPHARDWAREHOOKSTRUCT; +alias tagHARDWAREHOOKSTRUCT* PHARDWAREHOOKSTRUCT; + +// #endif /* WINVER >= 0x0400 */ +// #endif /* !NOWH */ + +enum : uint { HKL_PREV = 0 } +enum : uint { HKL_NEXT = 1 } + +enum : uint { KLF_ACTIVATE = 0x00000001 } +enum : uint { KLF_SUBSTITUTE_OK = 0x00000002 } +enum : uint { KLF_REORDER = 0x00000008 } +// #if(WINVER >= 0x0400) +enum : uint { KLF_REPLACELANG = 0x00000010 } +enum : uint { KLF_NOTELLSHELL = 0x00000080 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { KLF_SETFORPROCESS = 0x00000100 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { KLF_SHIFTLOCK = 0x00010000 } +enum : uint { KLF_RESET = 0x40000000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0500) + +enum : uint { INPUTLANGCHANGE_SYSCHARSET = 0x0001 } +enum : uint { INPUTLANGCHANGE_FORWARD = 0x0002 } +enum : uint { INPUTLANGCHANGE_BACKWARD = 0x0004 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { KL_NAMELENGTH = 9 } + +extern(Windows) export HKL LoadKeyboardLayoutA( + LPCSTR pwszKLID, + UINT Flags); +extern(Windows) export HKL LoadKeyboardLayoutW( + LPCWSTR pwszKLID, + UINT Flags); +// #ifdef UNICODE +// #... +// #else +alias LoadKeyboardLayoutA LoadKeyboardLayout; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export HKL ActivateKeyboardLayout( + HKL hkl, + UINT Flags); +// #else +// ... +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) +extern(Windows) export int ToUnicodeEx( + UINT wVirtKey, + UINT wScanCode, + BYTE *lpKeyState, + LPWSTR pwszBuff, + int cchBuff, + UINT wFlags, + HKL dwhkl); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL UnloadKeyboardLayout( + HKL hkl); + +extern(Windows) export BOOL GetKeyboardLayoutNameA( + LPSTR pwszKLID); +extern(Windows) export BOOL GetKeyboardLayoutNameW( + LPWSTR pwszKLID); +// #ifdef UNICODE +// #... +// #else +alias GetKeyboardLayoutNameA GetKeyboardLayoutName; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export int GetKeyboardLayoutList( + int nBuff, + HKL *lpList); + +extern(Windows) export HKL GetKeyboardLayout( + DWORD idThread +); +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) + +struct tagMOUSEMOVEPOINT { + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagMOUSEMOVEPOINT MOUSEMOVEPOINT; +alias tagMOUSEMOVEPOINT* PMOUSEMOVEPOINT; +alias tagMOUSEMOVEPOINT* LPMOUSEMOVEPOINT; + +enum : uint { GMMP_USE_DISPLAY_POINTS = 1 } +enum : uint { GMMP_USE_HIGH_RESOLUTION_POINTS = 2 } + +extern(Windows) export int GetMouseMovePointsEx( + UINT cbSize, + LPMOUSEMOVEPOINT lppt, + LPMOUSEMOVEPOINT lpptBuf, + int nBufPoints, + DWORD resolution +); + +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NODESKTOP + +enum : uint { DESKTOP_READOBJECTS = 0x0001 } +enum : uint { DESKTOP_CREATEWINDOW = 0x0002 } +enum : uint { DESKTOP_CREATEMENU = 0x0004 } +enum : uint { DESKTOP_HOOKCONTROL = 0x0008 } +enum : uint { DESKTOP_JOURNALRECORD = 0x0010 } +enum : uint { DESKTOP_JOURNALPLAYBACK = 0x0020 } +enum : uint { DESKTOP_ENUMERATE = 0x0040 } +enum : uint { DESKTOP_WRITEOBJECTS = 0x0080 } +enum : uint { DESKTOP_SWITCHDESKTOP = 0x0100 } + +enum : uint { DF_ALLOWOTHERACCOUNTHOOK = 0x0001 } + +// #ifdef _WINGDI_ +// #ifndef NOGDI + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #endif /* NOGDI */ +// #endif /* _WINGDI_ */ + +extern(Windows) export HDESK OpenDesktopA( + LPCSTR lpszDesktop, + DWORD dwFlags, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); +extern(Windows) export HDESK OpenDesktopW( + LPCWSTR lpszDesktop, + DWORD dwFlags, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); +// #ifdef UNICODE +// #... +// #else +alias OpenDesktopA OpenDesktop; +// #endif // !UNICODE + +extern(Windows) export HDESK OpenInputDesktop( + DWORD dwFlags, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); + +extern(Windows) export BOOL EnumDesktopsA( + HWINSTA hwinsta, + DESKTOPENUMPROCA lpEnumFunc, + LPARAM lParam); +extern(Windows) export BOOL EnumDesktopsW( + HWINSTA hwinsta, + DESKTOPENUMPROCW lpEnumFunc, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumDesktopsA EnumDesktops; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumDesktopWindows( + HDESK hDesktop, + WNDENUMPROC lpfn, + LPARAM lParam); + +extern(Windows) export BOOL SwitchDesktop( + HDESK hDesktop); + +extern(Windows) export BOOL SetThreadDesktop( + HDESK hDesktop); + +extern(Windows) export BOOL CloseDesktop( + HDESK hDesktop); + +extern(Windows) export HDESK GetThreadDesktop( + DWORD dwThreadId); +// #endif /* !NODESKTOP */ + +// #ifndef NOWINDOWSTATION + +enum : uint { WINSTA_ENUMDESKTOPS = 0x0001 } +enum : uint { WINSTA_READATTRIBUTES = 0x0002 } +enum : uint { WINSTA_ACCESSCLIPBOARD = 0x0004 } +enum : uint { WINSTA_CREATEDESKTOP = 0x0008 } +enum : uint { WINSTA_WRITEATTRIBUTES = 0x0010 } +enum : uint { WINSTA_ACCESSGLOBALATOMS = 0x0020 } +enum : uint { WINSTA_EXITWINDOWS = 0x0040 } +enum : uint { WINSTA_ENUMERATE = 0x0100 } +enum : uint { WINSTA_READSCREEN = 0x0200 } + +enum : uint { WSF_VISIBLE = 0x0001 } + +extern(Windows) export HWINSTA CreateWindowStationA( + LPCSTR lpwinsta, + DWORD dwReserved, + ACCESS_MASK dwDesiredAccess, + LPSECURITY_ATTRIBUTES lpsa); +extern(Windows) export HWINSTA CreateWindowStationW( + LPCWSTR lpwinsta, + DWORD dwReserved, + ACCESS_MASK dwDesiredAccess, + LPSECURITY_ATTRIBUTES lpsa); +// #ifdef UNICODE +// #... +// #else +alias CreateWindowStationA CreateWindowStation; +// #endif // !UNICODE + +extern(Windows) export HWINSTA OpenWindowStationA( + LPCSTR lpszWinSta, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); +extern(Windows) export HWINSTA OpenWindowStationW( + LPCWSTR lpszWinSta, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); +// #ifdef UNICODE +// #... +// #else +alias OpenWindowStationA OpenWindowStation; +// #endif // !UNICODE + +extern(Windows) export BOOL EnumWindowStationsA( + WINSTAENUMPROCA lpEnumFunc, + LPARAM lParam); +extern(Windows) export BOOL EnumWindowStationsW( + WINSTAENUMPROCW lpEnumFunc, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumWindowStationsA EnumWindowStations; +// #endif // !UNICODE + +extern(Windows) export BOOL CloseWindowStation( + HWINSTA hWinSta); + +extern(Windows) export BOOL SetProcessWindowStation( + HWINSTA hWinSta); + +extern(Windows) export HWINSTA GetProcessWindowStation(); +// #endif /* !NOWINDOWSTATION */ + +// #ifndef NOSECURITY + +extern(Windows) export BOOL SetUserObjectSecurity( + HANDLE hObj, + PSECURITY_INFORMATION pSIRequested, + PSECURITY_DESCRIPTOR pSID); + +extern(Windows) export BOOL GetUserObjectSecurity( + HANDLE hObj, + PSECURITY_INFORMATION pSIRequested, + PSECURITY_DESCRIPTOR pSID, + DWORD nLength, + LPDWORD lpnLengthNeeded); + +enum : uint { UOI_FLAGS = 1 } +enum : uint { UOI_NAME = 2 } +enum : uint { UOI_TYPE = 3 } +enum : uint { UOI_USER_SID = 4 } + +struct tagUSEROBJECTFLAGS { + BOOL fInherit; + BOOL fReserved; + DWORD dwFlags; +} +alias tagUSEROBJECTFLAGS USEROBJECTFLAGS; +alias tagUSEROBJECTFLAGS* PUSEROBJECTFLAGS; + +extern(Windows) export BOOL GetUserObjectInformationA( + HANDLE hObj, + int nIndex, + PVOID pvInfo, + DWORD nLength, + LPDWORD lpnLengthNeeded); +extern(Windows) export BOOL GetUserObjectInformationW( + HANDLE hObj, + int nIndex, + PVOID pvInfo, + DWORD nLength, + LPDWORD lpnLengthNeeded); +// #ifdef UNICODE +// #... +// #else +alias GetUserObjectInformationA GetUserObjectInformation; +// #endif // !UNICODE + +extern(Windows) export BOOL SetUserObjectInformationA( + HANDLE hObj, + int nIndex, + PVOID pvInfo, + DWORD nLength); +extern(Windows) export BOOL SetUserObjectInformationW( + HANDLE hObj, + int nIndex, + PVOID pvInfo, + DWORD nLength); +// #ifdef UNICODE +// #... +// #else +alias SetUserObjectInformationA SetUserObjectInformation; +// #endif // !UNICODE + +// #endif /* !NOSECURITY */ + +// #if(WINVER >= 0x0400) +struct tagWNDCLASSEXA { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + HICON hIconSm; +} +alias tagWNDCLASSEXA WNDCLASSEXA; +alias tagWNDCLASSEXA* PWNDCLASSEXA; +alias tagWNDCLASSEXA* NPWNDCLASSEXA; +alias tagWNDCLASSEXA* LPWNDCLASSEXA; + +struct tagWNDCLASSEXW { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + HICON hIconSm; +} +alias tagWNDCLASSEXW WNDCLASSEXW; +alias tagWNDCLASSEXW* PWNDCLASSEXW; +alias tagWNDCLASSEXW* NPWNDCLASSEXW; +alias tagWNDCLASSEXW* LPWNDCLASSEXW; + +// #ifdef UNICODE +// ... +// #else +alias WNDCLASSEXA WNDCLASSEX; +alias PWNDCLASSEXA PWNDCLASSEX; +alias NPWNDCLASSEXA NPWNDCLASSEX; +alias LPWNDCLASSEXA LPWNDCLASSEX; +// #endif // UNICODE +// #endif /* WINVER >= 0x0400 */ + +struct tagWNDCLASSA { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; +} +alias tagWNDCLASSA WNDCLASSA; +alias tagWNDCLASSA* PWNDCLASSA; +alias tagWNDCLASSA* NPWNDCLASSA; +alias tagWNDCLASSA* LPWNDCLASSA; + +struct tagWNDCLASSW { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; +} +alias tagWNDCLASSW WNDCLASSW; +alias tagWNDCLASSW* PWNDCLASSW; +alias tagWNDCLASSW* NPWNDCLASSW; +alias tagWNDCLASSW* LPWNDCLASSW; + +// #ifdef UNICODE +// ... +// #else +alias WNDCLASSA WNDCLASS; +alias PWNDCLASSA PWNDCLASS; +alias NPWNDCLASSA NPWNDCLASS; +alias LPWNDCLASSA LPWNDCLASS; +// #endif // UNICODE + +// #ifndef NOMSG + +struct tagMSG { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +// #ifdef _MAC +// ... +// #endif +} +alias tagMSG MSG; +alias tagMSG* PMSG; +alias tagMSG* NPMSG; +alias tagMSG* LPMSG; + +// #define POINTSTOPOINT(pt, pts) { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); } + +// #define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x), (short)((pt).y))) +alias MAKELONG MAKEWPARAM; +alias MAKELONG MAKELPARAM; +alias MAKELONG MAKELRESULT; + +// #endif /* !NOMSG */ + +// #ifndef NOWINOFFSETS + +enum { GWL_WNDPROC = -4 } +enum { GWL_HINSTANCE = -6 } +enum { GWL_HWNDPARENT = -8 } +enum { GWL_STYLE = -16 } +enum { GWL_EXSTYLE = -20 } +enum { GWL_USERDATA = -21 } +enum { GWL_ID = -12 } + +// #ifdef _WIN64 + +// #... +// #... +// #... +// #... + +// #endif /* _WIN64 */ + +enum { GWLP_WNDPROC = -4 } +enum { GWLP_HINSTANCE = -6 } +enum { GWLP_HWNDPARENT = -8 } +enum { GWLP_USERDATA = -21 } +enum { GWLP_ID = -12 } + +enum { GCL_MENUNAME = -8 } +enum { GCL_HBRBACKGROUND = -10 } +enum { GCL_HCURSOR = -12 } +enum { GCL_HICON = -14 } +enum { GCL_HMODULE = -16 } +enum { GCL_CBWNDEXTRA = -18 } +enum { GCL_CBCLSEXTRA = -20 } +enum { GCL_WNDPROC = -24 } +enum { GCL_STYLE = -26 } +enum { GCW_ATOM = -32 } + +// #if(WINVER >= 0x0400) +enum { GCL_HICONSM = -34 } +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _WIN64 + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif /* _WIN64 */ + +enum { GCLP_MENUNAME = -8 } +enum { GCLP_HBRBACKGROUND = -10 } +enum { GCLP_HCURSOR = -12 } +enum { GCLP_HICON = -14 } +enum { GCLP_HMODULE = -16 } +enum { GCLP_WNDPROC = -24 } +enum { GCLP_HICONSM = -34 } + +// #endif /* !NOWINOFFSETS */ + +// #ifndef NOWINMESSAGES + +enum : uint { WM_NULL = 0x0000 } +enum : uint { WM_CREATE = 0x0001 } +enum : uint { WM_DESTROY = 0x0002 } +enum : uint { WM_MOVE = 0x0003 } +enum : uint { WM_SIZE = 0x0005 } + +enum : uint { WM_ACTIVATE = 0x0006 } + +enum : uint { WA_INACTIVE = 0 } +enum : uint { WA_ACTIVE = 1 } +enum : uint { WA_CLICKACTIVE = 2 } + +enum : uint { WM_SETFOCUS = 0x0007 } +enum : uint { WM_KILLFOCUS = 0x0008 } +enum : uint { WM_ENABLE = 0x000A } +enum : uint { WM_SETREDRAW = 0x000B } +enum : uint { WM_SETTEXT = 0x000C } +enum : uint { WM_GETTEXT = 0x000D } +enum : uint { WM_GETTEXTLENGTH = 0x000E } +enum : uint { WM_PAINT = 0x000F } +enum : uint { WM_CLOSE = 0x0010 } +// #ifndef _WIN32_WCE +enum : uint { WM_QUERYENDSESSION = 0x0011 } +enum : uint { WM_QUERYOPEN = 0x0013 } +enum : uint { WM_ENDSESSION = 0x0016 } +// #endif +enum : uint { WM_QUIT = 0x0012 } +enum : uint { WM_ERASEBKGND = 0x0014 } +enum : uint { WM_SYSCOLORCHANGE = 0x0015 } +enum : uint { WM_SHOWWINDOW = 0x0018 } +enum : uint { WM_WININICHANGE = 0x001A } +// #if(WINVER >= 0x0400) +alias WM_WININICHANGE WM_SETTINGCHANGE; +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_DEVMODECHANGE = 0x001B } +enum : uint { WM_ACTIVATEAPP = 0x001C } +enum : uint { WM_FONTCHANGE = 0x001D } +enum : uint { WM_TIMECHANGE = 0x001E } +enum : uint { WM_CANCELMODE = 0x001F } +enum : uint { WM_SETCURSOR = 0x0020 } +enum : uint { WM_MOUSEACTIVATE = 0x0021 } +enum : uint { WM_CHILDACTIVATE = 0x0022 } +enum : uint { WM_QUEUESYNC = 0x0023 } + +enum : uint { WM_GETMINMAXINFO = 0x0024 } + +struct tagMINMAXINFO { + POINT ptReserved; + POINT ptMaxSize; + POINT ptMaxPosition; + POINT ptMinTrackSize; + POINT ptMaxTrackSize; +} +alias tagMINMAXINFO MINMAXINFO; +alias tagMINMAXINFO* PMINMAXINFO; +alias tagMINMAXINFO* LPMINMAXINFO; + +enum : uint { WM_PAINTICON = 0x0026 } +enum : uint { WM_ICONERASEBKGND = 0x0027 } +enum : uint { WM_NEXTDLGCTL = 0x0028 } +enum : uint { WM_SPOOLERSTATUS = 0x002A } +enum : uint { WM_DRAWITEM = 0x002B } +enum : uint { WM_MEASUREITEM = 0x002C } +enum : uint { WM_DELETEITEM = 0x002D } +enum : uint { WM_VKEYTOITEM = 0x002E } +enum : uint { WM_CHARTOITEM = 0x002F } +enum : uint { WM_SETFONT = 0x0030 } +enum : uint { WM_GETFONT = 0x0031 } +enum : uint { WM_SETHOTKEY = 0x0032 } +enum : uint { WM_GETHOTKEY = 0x0033 } +enum : uint { WM_QUERYDRAGICON = 0x0037 } +enum : uint { WM_COMPAREITEM = 0x0039 } +// #if(WINVER >= 0x0500) +// #ifndef _WIN32_WCE +enum : uint { WM_GETOBJECT = 0x003D } +// #endif +// #endif /* WINVER >= 0x0500 */ +enum : uint { WM_COMPACTING = 0x0041 } +enum : uint { WM_COMMNOTIFY = 0x0044 } +enum : uint { WM_WINDOWPOSCHANGING = 0x0046 } +enum : uint { WM_WINDOWPOSCHANGED = 0x0047 } + +enum : uint { WM_POWER = 0x0048 } + +enum : uint { PWR_OK = 1 } +enum { PWR_FAIL = -1 } +enum : uint { PWR_SUSPENDREQUEST = 1 } +enum : uint { PWR_SUSPENDRESUME = 2 } +enum : uint { PWR_CRITICALRESUME = 3 } + +enum : uint { WM_COPYDATA = 0x004A } +enum : uint { WM_CANCELJOURNAL = 0x004B } + +struct tagCOPYDATASTRUCT { + ULONG_PTR dwData; + DWORD cbData; + PVOID lpData; +} +alias tagCOPYDATASTRUCT COPYDATASTRUCT; +alias tagCOPYDATASTRUCT* PCOPYDATASTRUCT; + +// #if(WINVER >= 0x0400) +struct tagMDINEXTMENU { + HMENU hmenuIn; + HMENU hmenuNext; + HWND hwndNext; +} +alias tagMDINEXTMENU MDINEXTMENU; +alias tagMDINEXTMENU* PMDINEXTMENU; +alias tagMDINEXTMENU* LPMDINEXTMENU; + +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) +enum : uint { WM_NOTIFY = 0x004E } +enum : uint { WM_INPUTLANGCHANGEREQUEST = 0x0050 } +enum : uint { WM_INPUTLANGCHANGE = 0x0051 } +enum : uint { WM_TCARD = 0x0052 } +enum : uint { WM_HELP = 0x0053 } +enum : uint { WM_USERCHANGED = 0x0054 } +enum : uint { WM_NOTIFYFORMAT = 0x0055 } + +enum : uint { NFR_ANSI = 1 } +enum : uint { NFR_UNICODE = 2 } +enum : uint { NF_QUERY = 3 } +enum : uint { NF_REQUERY = 4 } + +enum : uint { WM_CONTEXTMENU = 0x007B } +enum : uint { WM_STYLECHANGING = 0x007C } +enum : uint { WM_STYLECHANGED = 0x007D } +enum : uint { WM_DISPLAYCHANGE = 0x007E } +enum : uint { WM_GETICON = 0x007F } +enum : uint { WM_SETICON = 0x0080 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_NCCREATE = 0x0081 } +enum : uint { WM_NCDESTROY = 0x0082 } +enum : uint { WM_NCCALCSIZE = 0x0083 } +enum : uint { WM_NCHITTEST = 0x0084 } +enum : uint { WM_NCPAINT = 0x0085 } +enum : uint { WM_NCACTIVATE = 0x0086 } +enum : uint { WM_GETDLGCODE = 0x0087 } +// #ifndef _WIN32_WCE +enum : uint { WM_SYNCPAINT = 0x0088 } +// #endif +enum : uint { WM_NCMOUSEMOVE = 0x00A0 } +enum : uint { WM_NCLBUTTONDOWN = 0x00A1 } +enum : uint { WM_NCLBUTTONUP = 0x00A2 } +enum : uint { WM_NCLBUTTONDBLCLK = 0x00A3 } +enum : uint { WM_NCRBUTTONDOWN = 0x00A4 } +enum : uint { WM_NCRBUTTONUP = 0x00A5 } +enum : uint { WM_NCRBUTTONDBLCLK = 0x00A6 } +enum : uint { WM_NCMBUTTONDOWN = 0x00A7 } +enum : uint { WM_NCMBUTTONUP = 0x00A8 } +enum : uint { WM_NCMBUTTONDBLCLK = 0x00A9 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WM_NCXBUTTONDOWN = 0x00AB } +enum : uint { WM_NCXBUTTONUP = 0x00AC } +enum : uint { WM_NCXBUTTONDBLCLK = 0x00AD } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WM_INPUT = 0x00FF } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { WM_KEYFIRST = 0x0100 } +enum : uint { WM_KEYDOWN = 0x0100 } +enum : uint { WM_KEYUP = 0x0101 } +enum : uint { WM_CHAR = 0x0102 } +enum : uint { WM_DEADCHAR = 0x0103 } +enum : uint { WM_SYSKEYDOWN = 0x0104 } +enum : uint { WM_SYSKEYUP = 0x0105 } +enum : uint { WM_SYSCHAR = 0x0106 } +enum : uint { WM_SYSDEADCHAR = 0x0107 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WM_UNICHAR = 0x0109 } +enum : uint { WM_KEYLAST = 0x0109 } +enum : uint { UNICODE_NOCHAR = 0xFFFF } +// #else +// #... +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(WINVER >= 0x0400) +enum : uint { WM_IME_STARTCOMPOSITION = 0x010D } +enum : uint { WM_IME_ENDCOMPOSITION = 0x010E } +enum : uint { WM_IME_COMPOSITION = 0x010F } +enum : uint { WM_IME_KEYLAST = 0x010F } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_INITDIALOG = 0x0110 } +enum : uint { WM_COMMAND = 0x0111 } +enum : uint { WM_SYSCOMMAND = 0x0112 } +enum : uint { WM_TIMER = 0x0113 } +enum : uint { WM_HSCROLL = 0x0114 } +enum : uint { WM_VSCROLL = 0x0115 } +enum : uint { WM_INITMENU = 0x0116 } +enum : uint { WM_INITMENUPOPUP = 0x0117 } +enum : uint { WM_MENUSELECT = 0x011F } +enum : uint { WM_MENUCHAR = 0x0120 } +enum : uint { WM_ENTERIDLE = 0x0121 } +// #if(WINVER >= 0x0500) +// #ifndef _WIN32_WCE +enum : uint { WM_MENURBUTTONUP = 0x0122 } +enum : uint { WM_MENUDRAG = 0x0123 } +enum : uint { WM_MENUGETOBJECT = 0x0124 } +enum : uint { WM_UNINITMENUPOPUP = 0x0125 } +enum : uint { WM_MENUCOMMAND = 0x0126 } + +// #ifndef _WIN32_WCE +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WM_CHANGEUISTATE = 0x0127 } +enum : uint { WM_UPDATEUISTATE = 0x0128 } +enum : uint { WM_QUERYUISTATE = 0x0129 } + +enum : uint { UIS_SET = 1 } +enum : uint { UIS_CLEAR = 2 } +enum : uint { UIS_INITIALIZE = 3 } + +enum : uint { UISF_HIDEFOCUS = 0x1 } +enum : uint { UISF_HIDEACCEL = 0x2 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { UISF_ACTIVE = 0x4 } +// #endif /* _WIN32_WINNT >= 0x0501 */ +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #endif + +// #endif +// #endif /* WINVER >= 0x0500 */ + +enum : uint { WM_CTLCOLORMSGBOX = 0x0132 } +enum : uint { WM_CTLCOLOREDIT = 0x0133 } +enum : uint { WM_CTLCOLORLISTBOX = 0x0134 } +enum : uint { WM_CTLCOLORBTN = 0x0135 } +enum : uint { WM_CTLCOLORDLG = 0x0136 } +enum : uint { WM_CTLCOLORSCROLLBAR = 0x0137 } +enum : uint { WM_CTLCOLORSTATIC = 0x0138 } + +enum : uint { WM_MOUSEFIRST = 0x0200 } +enum : uint { WM_MOUSEMOVE = 0x0200 } +enum : uint { WM_LBUTTONDOWN = 0x0201 } +enum : uint { WM_LBUTTONUP = 0x0202 } +enum : uint { WM_LBUTTONDBLCLK = 0x0203 } +enum : uint { WM_RBUTTONDOWN = 0x0204 } +enum : uint { WM_RBUTTONUP = 0x0205 } +enum : uint { WM_RBUTTONDBLCLK = 0x0206 } +enum : uint { WM_MBUTTONDOWN = 0x0207 } +enum : uint { WM_MBUTTONUP = 0x0208 } +enum : uint { WM_MBUTTONDBLCLK = 0x0209 } +// #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +enum : uint { WM_MOUSEWHEEL = 0x020A } +// #endif +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { WM_XBUTTONDOWN = 0x020B } +enum : uint { WM_XBUTTONUP = 0x020C } +enum : uint { WM_XBUTTONDBLCLK = 0x020D } +// #endif +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { WM_MOUSELAST = 0x020D } +// #elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +// #... +// #else +// #... +// #endif /* (_WIN32_WINNT >= 0x0500) */ + +// #if(_WIN32_WINNT >= 0x0400) + +enum : uint { WHEEL_DELTA = 120 } +// #define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam)) + +enum : uint { WHEEL_PAGESCROLL = UINT_MAX } +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0500) +// #define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam)) +// #define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam)) +// #define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam)) + +enum : uint { XBUTTON1 = 0x0001 } +enum : uint { XBUTTON2 = 0x0002 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { WM_PARENTNOTIFY = 0x0210 } +enum : uint { WM_ENTERMENULOOP = 0x0211 } +enum : uint { WM_EXITMENULOOP = 0x0212 } + +// #if(WINVER >= 0x0400) +enum : uint { WM_NEXTMENU = 0x0213 } +enum : uint { WM_SIZING = 0x0214 } +enum : uint { WM_CAPTURECHANGED = 0x0215 } +enum : uint { WM_MOVING = 0x0216 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) + +enum : uint { WM_POWERBROADCAST = 0x0218 } + +// #ifndef _WIN32_WCE +enum : uint { PBT_APMQUERYSUSPEND = 0x0000 } +enum : uint { PBT_APMQUERYSTANDBY = 0x0001 } + +enum : uint { PBT_APMQUERYSUSPENDFAILED = 0x0002 } +enum : uint { PBT_APMQUERYSTANDBYFAILED = 0x0003 } + +enum : uint { PBT_APMSUSPEND = 0x0004 } +enum : uint { PBT_APMSTANDBY = 0x0005 } + +enum : uint { PBT_APMRESUMECRITICAL = 0x0006 } +enum : uint { PBT_APMRESUMESUSPEND = 0x0007 } +enum : uint { PBT_APMRESUMESTANDBY = 0x0008 } + +enum : uint { PBTF_APMRESUMEFROMFAILURE = 0x00000001 } + +enum : uint { PBT_APMBATTERYLOW = 0x0009 } +enum : uint { PBT_APMPOWERSTATUSCHANGE = 0x000A } + +enum : uint { PBT_APMOEMEVENT = 0x000B } +enum : uint { PBT_APMRESUMEAUTOMATIC = 0x0012 } +// #endif + +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) +enum : uint { WM_DEVICECHANGE = 0x0219 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_MDICREATE = 0x0220 } +enum : uint { WM_MDIDESTROY = 0x0221 } +enum : uint { WM_MDIACTIVATE = 0x0222 } +enum : uint { WM_MDIRESTORE = 0x0223 } +enum : uint { WM_MDINEXT = 0x0224 } +enum : uint { WM_MDIMAXIMIZE = 0x0225 } +enum : uint { WM_MDITILE = 0x0226 } +enum : uint { WM_MDICASCADE = 0x0227 } +enum : uint { WM_MDIICONARRANGE = 0x0228 } +enum : uint { WM_MDIGETACTIVE = 0x0229 } + +enum : uint { WM_MDISETMENU = 0x0230 } +enum : uint { WM_ENTERSIZEMOVE = 0x0231 } +enum : uint { WM_EXITSIZEMOVE = 0x0232 } +enum : uint { WM_DROPFILES = 0x0233 } +enum : uint { WM_MDIREFRESHMENU = 0x0234 } + +// #if(WINVER >= 0x0400) +enum : uint { WM_IME_SETCONTEXT = 0x0281 } +enum : uint { WM_IME_NOTIFY = 0x0282 } +enum : uint { WM_IME_CONTROL = 0x0283 } +enum : uint { WM_IME_COMPOSITIONFULL = 0x0284 } +enum : uint { WM_IME_SELECT = 0x0285 } +enum : uint { WM_IME_CHAR = 0x0286 } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) +enum : uint { WM_IME_REQUEST = 0x0288 } +// #endif /* WINVER >= 0x0500 */ +// #if(WINVER >= 0x0400) +enum : uint { WM_IME_KEYDOWN = 0x0290 } +enum : uint { WM_IME_KEYUP = 0x0291 } +// #endif /* WINVER >= 0x0400 */ + +// #if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500)) +enum : uint { WM_MOUSEHOVER = 0x02A1 } +enum : uint { WM_MOUSELEAVE = 0x02A3 } +// #endif +// #if(WINVER >= 0x0500) +enum : uint { WM_NCMOUSEHOVER = 0x02A0 } +enum : uint { WM_NCMOUSELEAVE = 0x02A2 } +// #endif /* WINVER >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WM_WTSSESSION_CHANGE = 0x02B1 } + +enum : uint { WM_TABLET_FIRST = 0x02c0 } +enum : uint { WM_TABLET_LAST = 0x02df } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { WM_CUT = 0x0300 } +enum : uint { WM_COPY = 0x0301 } +enum : uint { WM_PASTE = 0x0302 } +enum : uint { WM_CLEAR = 0x0303 } +enum : uint { WM_UNDO = 0x0304 } +enum : uint { WM_RENDERFORMAT = 0x0305 } +enum : uint { WM_RENDERALLFORMATS = 0x0306 } +enum : uint { WM_DESTROYCLIPBOARD = 0x0307 } +enum : uint { WM_DRAWCLIPBOARD = 0x0308 } +enum : uint { WM_PAINTCLIPBOARD = 0x0309 } +enum : uint { WM_VSCROLLCLIPBOARD = 0x030A } +enum : uint { WM_SIZECLIPBOARD = 0x030B } +enum : uint { WM_ASKCBFORMATNAME = 0x030C } +enum : uint { WM_CHANGECBCHAIN = 0x030D } +enum : uint { WM_HSCROLLCLIPBOARD = 0x030E } +enum : uint { WM_QUERYNEWPALETTE = 0x030F } +enum : uint { WM_PALETTEISCHANGING = 0x0310 } +enum : uint { WM_PALETTECHANGED = 0x0311 } +enum : uint { WM_HOTKEY = 0x0312 } + +// #if(WINVER >= 0x0400) +enum : uint { WM_PRINT = 0x0317 } +enum : uint { WM_PRINTCLIENT = 0x0318 } +// #endif /* WINVER >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WM_APPCOMMAND = 0x0319 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WM_THEMECHANGED = 0x031A } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(WINVER >= 0x0400) + +enum : uint { WM_HANDHELDFIRST = 0x0358 } +enum : uint { WM_HANDHELDLAST = 0x035F } + +enum : uint { WM_AFXFIRST = 0x0360 } +enum : uint { WM_AFXLAST = 0x037F } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_PENWINFIRST = 0x0380 } +enum : uint { WM_PENWINLAST = 0x038F } + +// #if(WINVER >= 0x0400) +enum : uint { WM_APP = 0x8000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_USER = 0x0400 } + +// #if(WINVER >= 0x0400) + +enum : uint { WMSZ_LEFT = 1 } +enum : uint { WMSZ_RIGHT = 2 } +enum : uint { WMSZ_TOP = 3 } +enum : uint { WMSZ_TOPLEFT = 4 } +enum : uint { WMSZ_TOPRIGHT = 5 } +enum : uint { WMSZ_BOTTOM = 6 } +enum : uint { WMSZ_BOTTOMLEFT = 7 } +enum : uint { WMSZ_BOTTOMRIGHT = 8 } +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NONCMESSAGES + +enum { HTERROR = -2 } +enum { HTTRANSPARENT = -1 } +enum : uint { HTNOWHERE = 0 } +enum : uint { HTCLIENT = 1 } +enum : uint { HTCAPTION = 2 } +enum : uint { HTSYSMENU = 3 } +enum : uint { HTGROWBOX = 4 } +alias HTGROWBOX HTSIZE; +enum : uint { HTMENU = 5 } +enum : uint { HTHSCROLL = 6 } +enum : uint { HTVSCROLL = 7 } +enum : uint { HTMINBUTTON = 8 } +enum : uint { HTMAXBUTTON = 9 } +enum : uint { HTLEFT = 10 } +enum : uint { HTRIGHT = 11 } +enum : uint { HTTOP = 12 } +enum : uint { HTTOPLEFT = 13 } +enum : uint { HTTOPRIGHT = 14 } +enum : uint { HTBOTTOM = 15 } +enum : uint { HTBOTTOMLEFT = 16 } +enum : uint { HTBOTTOMRIGHT = 17 } +enum : uint { HTBORDER = 18 } +alias HTMINBUTTON HTREDUCE; +alias HTMAXBUTTON HTZOOM; +alias HTLEFT HTSIZEFIRST; +alias HTBOTTOMRIGHT HTSIZELAST; +// #if(WINVER >= 0x0400) +enum : uint { HTOBJECT = 19 } +enum : uint { HTCLOSE = 20 } +enum : uint { HTHELP = 21 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SMTO_NORMAL = 0x0000 } +enum : uint { SMTO_BLOCK = 0x0001 } +enum : uint { SMTO_ABORTIFHUNG = 0x0002 } +// #if(WINVER >= 0x0500) +enum : uint { SMTO_NOTIMEOUTIFNOTHUNG = 0x0008 } +// #endif /* WINVER >= 0x0500 */ +// #endif /* !NONCMESSAGES */ + +enum : uint { MA_ACTIVATE = 1 } +enum : uint { MA_ACTIVATEANDEAT = 2 } +enum : uint { MA_NOACTIVATE = 3 } +enum : uint { MA_NOACTIVATEANDEAT = 4 } + +enum : uint { ICON_SMALL = 0 } +enum : uint { ICON_BIG = 1 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { ICON_SMALL2 = 2 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export UINT RegisterWindowMessageA( + LPCSTR lpString); +extern(Windows) export UINT RegisterWindowMessageW( + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias RegisterWindowMessageA RegisterWindowMessage; +// #endif // !UNICODE + +enum : uint { SIZE_RESTORED = 0 } +enum : uint { SIZE_MINIMIZED = 1 } +enum : uint { SIZE_MAXIMIZED = 2 } +enum : uint { SIZE_MAXSHOW = 3 } +enum : uint { SIZE_MAXHIDE = 4 } + +alias SIZE_RESTORED SIZENORMAL; +alias SIZE_MINIMIZED SIZEICONIC; +alias SIZE_MAXIMIZED SIZEFULLSCREEN; +alias SIZE_MAXSHOW SIZEZOOMSHOW; +alias SIZE_MAXHIDE SIZEZOOMHIDE; + +struct tagWINDOWPOS { + HWND hwnd; + HWND hwndInsertAfter; + int x; + int y; + int cx; + int cy; + UINT flags; +} +alias tagWINDOWPOS WINDOWPOS; +alias tagWINDOWPOS* LPWINDOWPOS; +alias tagWINDOWPOS* PWINDOWPOS; + +struct tagNCCALCSIZE_PARAMS { + RECT rgrc[3]; + PWINDOWPOS lppos; +} +alias tagNCCALCSIZE_PARAMS NCCALCSIZE_PARAMS; +alias tagNCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS; + +enum : uint { WVR_ALIGNTOP = 0x0010 } +enum : uint { WVR_ALIGNLEFT = 0x0020 } +enum : uint { WVR_ALIGNBOTTOM = 0x0040 } +enum : uint { WVR_ALIGNRIGHT = 0x0080 } +enum : uint { WVR_HREDRAW = 0x0100 } +enum : uint { WVR_VREDRAW = 0x0200 } +enum : uint { WVR_REDRAW = WVR_HREDRAW | WVR_VREDRAW } +enum : uint { WVR_VALIDRECTS = 0x0400 } + +// #ifndef NOKEYSTATES + +enum : uint { MK_LBUTTON = 0x0001 } +enum : uint { MK_RBUTTON = 0x0002 } +enum : uint { MK_SHIFT = 0x0004 } +enum : uint { MK_CONTROL = 0x0008 } +enum : uint { MK_MBUTTON = 0x0010 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { MK_XBUTTON1 = 0x0020 } +enum : uint { MK_XBUTTON2 = 0x0040 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #endif /* !NOKEYSTATES */ + +// #if(_WIN32_WINNT >= 0x0400) +// #ifndef NOTRACKMOUSEEVENT + +enum : uint { TME_HOVER = 0x00000001 } +enum : uint { TME_LEAVE = 0x00000002 } +// #if(WINVER >= 0x0500) +enum : uint { TME_NONCLIENT = 0x00000010 } +// #endif /* WINVER >= 0x0500 */ +enum : uint { TME_QUERY = 0x40000000 } +enum : uint { TME_CANCEL = 0x80000000 } + +enum : uint { HOVER_DEFAULT = 0xFFFFFFFF } +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0400) +struct tagTRACKMOUSEEVENT { + DWORD cbSize; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} +alias tagTRACKMOUSEEVENT TRACKMOUSEEVENT; +alias tagTRACKMOUSEEVENT* LPTRACKMOUSEEVENT; + +extern(Windows) export BOOL TrackMouseEvent( + LPTRACKMOUSEEVENT lpEventTrack); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0400) + +// #endif /* !NOTRACKMOUSEEVENT */ +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #endif /* !NOWINMESSAGES */ + +// #ifndef NOWINSTYLES + +enum : uint { WS_OVERLAPPED = 0x00000000 } +enum : uint { WS_POPUP = 0x80000000 } +enum : uint { WS_CHILD = 0x40000000 } +enum : uint { WS_MINIMIZE = 0x20000000 } +enum : uint { WS_VISIBLE = 0x10000000 } +enum : uint { WS_DISABLED = 0x08000000 } +enum : uint { WS_CLIPSIBLINGS = 0x04000000 } +enum : uint { WS_CLIPCHILDREN = 0x02000000 } +enum : uint { WS_MAXIMIZE = 0x01000000 } +enum : uint { WS_CAPTION = 0x00C00000 } +enum : uint { WS_BORDER = 0x00800000 } +enum : uint { WS_DLGFRAME = 0x00400000 } +enum : uint { WS_VSCROLL = 0x00200000 } +enum : uint { WS_HSCROLL = 0x00100000 } +enum : uint { WS_SYSMENU = 0x00080000 } +enum : uint { WS_THICKFRAME = 0x00040000 } +enum : uint { WS_GROUP = 0x00020000 } +enum : uint { WS_TABSTOP = 0x00010000 } + +enum : uint { WS_MINIMIZEBOX = 0x00020000 } +enum : uint { WS_MAXIMIZEBOX = 0x00010000 } + +alias WS_OVERLAPPED WS_TILED; +alias WS_MINIMIZE WS_ICONIC; +alias WS_THICKFRAME WS_SIZEBOX; +// #define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW + +enum : uint { WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX } + +enum : uint { WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU } + +enum : uint { WS_CHILDWINDOW = WS_CHILD } + +enum : uint { WS_EX_DLGMODALFRAME = 0x00000001 } +enum : uint { WS_EX_NOPARENTNOTIFY = 0x00000004 } +enum : uint { WS_EX_TOPMOST = 0x00000008 } +enum : uint { WS_EX_ACCEPTFILES = 0x00000010 } +enum : uint { WS_EX_TRANSPARENT = 0x00000020 } +// #if(WINVER >= 0x0400) +enum : uint { WS_EX_MDICHILD = 0x00000040 } +enum : uint { WS_EX_TOOLWINDOW = 0x00000080 } +enum : uint { WS_EX_WINDOWEDGE = 0x00000100 } +enum : uint { WS_EX_CLIENTEDGE = 0x00000200 } +enum : uint { WS_EX_CONTEXTHELP = 0x00000400 } + +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0400) + +enum : uint { WS_EX_RIGHT = 0x00001000 } +enum : uint { WS_EX_LEFT = 0x00000000 } +enum : uint { WS_EX_RTLREADING = 0x00002000 } +enum : uint { WS_EX_LTRREADING = 0x00000000 } +enum : uint { WS_EX_LEFTSCROLLBAR = 0x00004000 } +enum : uint { WS_EX_RIGHTSCROLLBAR = 0x00000000 } + +enum : uint { WS_EX_CONTROLPARENT = 0x00010000 } +enum : uint { WS_EX_STATICEDGE = 0x00020000 } +enum : uint { WS_EX_APPWINDOW = 0x00040000 } + +enum : uint { WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE } +enum : uint { WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST } + +// #endif /* WINVER >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WS_EX_LAYERED = 0x00080000 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0500) +enum : uint { WS_EX_NOINHERITLAYOUT = 0x00100000 } +enum : uint { WS_EX_LAYOUTRTL = 0x00400000 } +// #endif /* WINVER >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WS_EX_COMPOSITED = 0x02000000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WS_EX_NOACTIVATE = 0x08000000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { CS_VREDRAW = 0x0001 } +enum : uint { CS_HREDRAW = 0x0002 } +enum : uint { CS_DBLCLKS = 0x0008 } +enum : uint { CS_OWNDC = 0x0020 } +enum : uint { CS_CLASSDC = 0x0040 } +enum : uint { CS_PARENTDC = 0x0080 } +enum : uint { CS_NOCLOSE = 0x0200 } +enum : uint { CS_SAVEBITS = 0x0800 } +enum : uint { CS_BYTEALIGNCLIENT = 0x1000 } +enum : uint { CS_BYTEALIGNWINDOW = 0x2000 } +enum : uint { CS_GLOBALCLASS = 0x4000 } + +enum : uint { CS_IME = 0x00010000 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { CS_DROPSHADOW = 0x00020000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #endif /* !NOWINSTYLES */ +// #if(WINVER >= 0x0400) + +enum : uint { PRF_CHECKVISIBLE = 0x00000001 } +enum : uint { PRF_NONCLIENT = 0x00000002 } +enum : uint { PRF_CLIENT = 0x00000004 } +enum : uint { PRF_ERASEBKGND = 0x00000008 } +enum : uint { PRF_CHILDREN = 0x00000010 } +enum : uint { PRF_OWNED = 0x00000020 } + +enum : uint { BDR_RAISEDOUTER = 0x0001 } +enum : uint { BDR_SUNKENOUTER = 0x0002 } +enum : uint { BDR_RAISEDINNER = 0x0004 } +enum : uint { BDR_SUNKENINNER = 0x0008 } + +enum : uint { BDR_OUTER = BDR_RAISEDOUTER | BDR_SUNKENOUTER } +enum : uint { BDR_INNER = BDR_RAISEDINNER | BDR_SUNKENINNER } +enum : uint { BDR_RAISED = BDR_RAISEDOUTER | BDR_RAISEDINNER } +enum : uint { BDR_SUNKEN = BDR_SUNKENOUTER | BDR_SUNKENINNER } + +enum : uint { EDGE_RAISED = BDR_RAISEDOUTER | BDR_RAISEDINNER } +enum : uint { EDGE_SUNKEN = BDR_SUNKENOUTER | BDR_SUNKENINNER } +enum : uint { EDGE_ETCHED = BDR_SUNKENOUTER | BDR_RAISEDINNER } +enum : uint { EDGE_BUMP = BDR_RAISEDOUTER | BDR_SUNKENINNER } + +enum : uint { BF_LEFT = 0x0001 } +enum : uint { BF_TOP = 0x0002 } +enum : uint { BF_RIGHT = 0x0004 } +enum : uint { BF_BOTTOM = 0x0008 } + +enum : uint { BF_TOPLEFT = BF_TOP | BF_LEFT } +enum : uint { BF_TOPRIGHT = BF_TOP | BF_RIGHT } +enum : uint { BF_BOTTOMLEFT = BF_BOTTOM | BF_LEFT } +enum : uint { BF_BOTTOMRIGHT = BF_BOTTOM | BF_RIGHT } +enum : uint { BF_RECT = BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM } + +enum : uint { BF_DIAGONAL = 0x0010 } + +enum : uint { BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL | BF_TOP | BF_RIGHT } +enum : uint { BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL | BF_TOP | BF_LEFT } +enum : uint { BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL | BF_BOTTOM | BF_LEFT } +enum : uint { BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL | BF_BOTTOM | BF_RIGHT } + +enum : uint { BF_MIDDLE = 0x0800 } +enum : uint { BF_SOFT = 0x1000 } +enum : uint { BF_ADJUST = 0x2000 } +enum : uint { BF_FLAT = 0x4000 } +enum : uint { BF_MONO = 0x8000 } + +extern(Windows) export BOOL DrawEdge( + HDC hdc, + LPRECT qrc, + UINT edge, + UINT grfFlags); + +enum : uint { DFC_CAPTION = 1 } +enum : uint { DFC_MENU = 2 } +enum : uint { DFC_SCROLL = 3 } +enum : uint { DFC_BUTTON = 4 } +// #if(WINVER >= 0x0500) +enum : uint { DFC_POPUPMENU = 5 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { DFCS_CAPTIONCLOSE = 0x0000 } +enum : uint { DFCS_CAPTIONMIN = 0x0001 } +enum : uint { DFCS_CAPTIONMAX = 0x0002 } +enum : uint { DFCS_CAPTIONRESTORE = 0x0003 } +enum : uint { DFCS_CAPTIONHELP = 0x0004 } + +enum : uint { DFCS_MENUARROW = 0x0000 } +enum : uint { DFCS_MENUCHECK = 0x0001 } +enum : uint { DFCS_MENUBULLET = 0x0002 } +enum : uint { DFCS_MENUARROWRIGHT = 0x0004 } +enum : uint { DFCS_SCROLLUP = 0x0000 } +enum : uint { DFCS_SCROLLDOWN = 0x0001 } +enum : uint { DFCS_SCROLLLEFT = 0x0002 } +enum : uint { DFCS_SCROLLRIGHT = 0x0003 } +enum : uint { DFCS_SCROLLCOMBOBOX = 0x0005 } +enum : uint { DFCS_SCROLLSIZEGRIP = 0x0008 } +enum : uint { DFCS_SCROLLSIZEGRIPRIGHT = 0x0010 } + +enum : uint { DFCS_BUTTONCHECK = 0x0000 } +enum : uint { DFCS_BUTTONRADIOIMAGE = 0x0001 } +enum : uint { DFCS_BUTTONRADIOMASK = 0x0002 } +enum : uint { DFCS_BUTTONRADIO = 0x0004 } +enum : uint { DFCS_BUTTON3STATE = 0x0008 } +enum : uint { DFCS_BUTTONPUSH = 0x0010 } + +enum : uint { DFCS_INACTIVE = 0x0100 } +enum : uint { DFCS_PUSHED = 0x0200 } +enum : uint { DFCS_CHECKED = 0x0400 } + +// #if(WINVER >= 0x0500) +enum : uint { DFCS_TRANSPARENT = 0x0800 } +enum : uint { DFCS_HOT = 0x1000 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { DFCS_ADJUSTRECT = 0x2000 } +enum : uint { DFCS_FLAT = 0x4000 } +enum : uint { DFCS_MONO = 0x8000 } + +extern(Windows) export BOOL DrawFrameControl( + HDC, + LPRECT, + UINT, + UINT); + +enum : uint { DC_ACTIVE = 0x0001 } +enum : uint { DC_SMALLCAP = 0x0002 } +enum : uint { DC_ICON = 0x0004 } +enum : uint { DC_TEXT = 0x0008 } +enum : uint { DC_INBUTTON = 0x0010 } +// #if(WINVER >= 0x0500) +enum : uint { DC_GRADIENT = 0x0020 } +// #endif /* WINVER >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { DC_BUTTONS = 0x1000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export BOOL DrawCaption(HWND, HDC, RECT *, UINT); + +enum : uint { IDANI_OPEN = 1 } +enum : uint { IDANI_CAPTION = 3 } + +extern(Windows) export BOOL DrawAnimatedRects( + HWND hwnd, + int idAni, + RECT * lprcFrom, + RECT * lprcTo); + +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOCLIPBOARD + +enum : uint { CF_TEXT = 1 } +enum : uint { CF_BITMAP = 2 } +enum : uint { CF_METAFILEPICT = 3 } +enum : uint { CF_SYLK = 4 } +enum : uint { CF_DIF = 5 } +enum : uint { CF_TIFF = 6 } +enum : uint { CF_OEMTEXT = 7 } +enum : uint { CF_DIB = 8 } +enum : uint { CF_PALETTE = 9 } +enum : uint { CF_PENDATA = 10 } +enum : uint { CF_RIFF = 11 } +enum : uint { CF_WAVE = 12 } +enum : uint { CF_UNICODETEXT = 13 } +enum : uint { CF_ENHMETAFILE = 14 } +// #if(WINVER >= 0x0400) +enum : uint { CF_HDROP = 15 } +enum : uint { CF_LOCALE = 16 } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) +enum : uint { CF_DIBV5 = 17 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) +enum : uint { CF_MAX = 18 } +// #elif(WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +enum : uint { CF_OWNERDISPLAY = 0x0080 } +enum : uint { CF_DSPTEXT = 0x0081 } +enum : uint { CF_DSPBITMAP = 0x0082 } +enum : uint { CF_DSPMETAFILEPICT = 0x0083 } +enum : uint { CF_DSPENHMETAFILE = 0x008E } + +enum : uint { CF_PRIVATEFIRST = 0x0200 } +enum : uint { CF_PRIVATELAST = 0x02FF } + +enum : uint { CF_GDIOBJFIRST = 0x0300 } +enum : uint { CF_GDIOBJLAST = 0x03FF } + +// #endif /* !NOCLIPBOARD */ + +alias TRUE FVIRTKEY; +enum : uint { FNOINVERT = 0x02 } +enum : uint { FSHIFT = 0x04 } +enum : uint { FCONTROL = 0x08 } +enum : uint { FALT = 0x10 } + +struct tagACCEL { +// #ifndef _MAC + BYTE fVirt; + WORD key; + WORD cmd; +// #else +// ... +// #endif +} +alias tagACCEL ACCEL; +alias tagACCEL* LPACCEL; + +struct tagPAINTSTRUCT { + HDC hdc; + BOOL fErase; + RECT rcPaint; + BOOL fRestore; + BOOL fIncUpdate; + BYTE rgbReserved[32]; +} +alias tagPAINTSTRUCT PAINTSTRUCT; +alias tagPAINTSTRUCT* PPAINTSTRUCT; +alias tagPAINTSTRUCT* NPPAINTSTRUCT; +alias tagPAINTSTRUCT* LPPAINTSTRUCT; + +struct tagCREATESTRUCTA { + 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 tagCREATESTRUCTA CREATESTRUCTA; +alias tagCREATESTRUCTA* LPCREATESTRUCTA; + +struct tagCREATESTRUCTW { + 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 tagCREATESTRUCTW CREATESTRUCTW; +alias tagCREATESTRUCTW* LPCREATESTRUCTW; + +// #ifdef UNICODE +// ... +// #else +alias CREATESTRUCTA CREATESTRUCT; +alias LPCREATESTRUCTA LPCREATESTRUCT; +// #endif // UNICODE + +struct tagWINDOWPLACEMENT { + UINT length; + UINT flags; + UINT showCmd; + POINT ptMinPosition; + POINT ptMaxPosition; + RECT rcNormalPosition; +// #ifdef _MAC +// ... +// #endif +} +alias tagWINDOWPLACEMENT WINDOWPLACEMENT; + +alias WINDOWPLACEMENT* PWINDOWPLACEMENT; +alias WINDOWPLACEMENT* LPWINDOWPLACEMENT; + +enum : uint { WPF_SETMINPOSITION = 0x0001 } +enum : uint { WPF_RESTORETOMAXIMIZED = 0x0002 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WPF_ASYNCWINDOWPLACEMENT = 0x0004 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0400) +struct tagNMHDR { + HWND hwndFrom; + UINT_PTR idFrom; + UINT code; +} +alias tagNMHDR NMHDR; + +alias NMHDR* LPNMHDR; + +struct tagSTYLESTRUCT { + DWORD styleOld; + DWORD styleNew; +} +alias tagSTYLESTRUCT STYLESTRUCT; +alias tagSTYLESTRUCT* LPSTYLESTRUCT; + +// #endif /* WINVER >= 0x0400 */ + +enum : uint { ODT_MENU = 1 } +enum : uint { ODT_LISTBOX = 2 } +enum : uint { ODT_COMBOBOX = 3 } +enum : uint { ODT_BUTTON = 4 } +// #if(WINVER >= 0x0400) +enum : uint { ODT_STATIC = 5 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { ODA_DRAWENTIRE = 0x0001 } +enum : uint { ODA_SELECT = 0x0002 } +enum : uint { ODA_FOCUS = 0x0004 } + +enum : uint { ODS_SELECTED = 0x0001 } +enum : uint { ODS_GRAYED = 0x0002 } +enum : uint { ODS_DISABLED = 0x0004 } +enum : uint { ODS_CHECKED = 0x0008 } +enum : uint { ODS_FOCUS = 0x0010 } +// #if(WINVER >= 0x0400) +enum : uint { ODS_DEFAULT = 0x0020 } +enum : uint { ODS_COMBOBOXEDIT = 0x1000 } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) +enum : uint { ODS_HOTLIGHT = 0x0040 } +enum : uint { ODS_INACTIVE = 0x0080 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { ODS_NOACCEL = 0x0100 } +enum : uint { ODS_NOFOCUSRECT = 0x0200 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #endif /* WINVER >= 0x0500 */ + +struct tagMEASUREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemWidth; + UINT itemHeight; + ULONG_PTR itemData; +} +alias tagMEASUREITEMSTRUCT MEASUREITEMSTRUCT; +alias tagMEASUREITEMSTRUCT* PMEASUREITEMSTRUCT; +alias tagMEASUREITEMSTRUCT* LPMEASUREITEMSTRUCT; + +struct tagDRAWITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemAction; + UINT itemState; + HWND hwndItem; + HDC hDC; + RECT rcItem; + ULONG_PTR itemData; +} +alias tagDRAWITEMSTRUCT DRAWITEMSTRUCT; +alias tagDRAWITEMSTRUCT* PDRAWITEMSTRUCT; +alias tagDRAWITEMSTRUCT* LPDRAWITEMSTRUCT; + +struct tagDELETEITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + HWND hwndItem; + ULONG_PTR itemData; +} +alias tagDELETEITEMSTRUCT DELETEITEMSTRUCT; +alias tagDELETEITEMSTRUCT* PDELETEITEMSTRUCT; +alias tagDELETEITEMSTRUCT* LPDELETEITEMSTRUCT; + +struct tagCOMPAREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + HWND hwndItem; + UINT itemID1; + ULONG_PTR itemData1; + UINT itemID2; + ULONG_PTR itemData2; + DWORD dwLocaleId; +} +alias tagCOMPAREITEMSTRUCT COMPAREITEMSTRUCT; +alias tagCOMPAREITEMSTRUCT* PCOMPAREITEMSTRUCT; +alias tagCOMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; + +// #ifndef NOMSG + +extern(Windows) export BOOL GetMessageA( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax); +extern(Windows) export BOOL GetMessageW( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax); +// #ifdef UNICODE +// #... +// #else +alias GetMessageA GetMessage; +// #endif // !UNICODE + +extern(Windows) export BOOL TranslateMessage( + MSG *lpMsg); + +extern(Windows) export LRESULT DispatchMessageA( + MSG *lpMsg); +extern(Windows) export LRESULT DispatchMessageW( + MSG *lpMsg); +// #ifdef UNICODE +// #... +// #else +alias DispatchMessageA DispatchMessage; +// #endif // !UNICODE + +extern(Windows) export BOOL SetMessageQueue( + int cMessagesMax); + +extern(Windows) export BOOL PeekMessageA( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax, + UINT wRemoveMsg); +extern(Windows) export BOOL PeekMessageW( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax, + UINT wRemoveMsg); +// #ifdef UNICODE +// #... +// #else +alias PeekMessageA PeekMessage; +// #endif // !UNICODE + +enum : uint { PM_NOREMOVE = 0x0000 } +enum : uint { PM_REMOVE = 0x0001 } +enum : uint { PM_NOYIELD = 0x0002 } +// #if(WINVER >= 0x0500) +enum : uint { PM_QS_INPUT = QS_INPUT << 16 } +enum : uint { PM_QS_POSTMESSAGE = (QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16 } +enum : uint { PM_QS_PAINT = QS_PAINT << 16 } +enum : uint { PM_QS_SENDMESSAGE = QS_SENDMESSAGE << 16 } +// #endif /* WINVER >= 0x0500 */ + +// #endif /* !NOMSG */ + +extern(Windows) export BOOL RegisterHotKey( + HWND hWnd, + int id, + UINT fsModifiers, + UINT vk); + +extern(Windows) export BOOL UnregisterHotKey( + HWND hWnd, + int id); + +enum : uint { MOD_ALT = 0x0001 } +enum : uint { MOD_CONTROL = 0x0002 } +enum : uint { MOD_SHIFT = 0x0004 } +enum : uint { MOD_WIN = 0x0008 } + +enum { IDHOT_SNAPWINDOW = -1 } +enum { IDHOT_SNAPDESKTOP = -2 } + +// #ifdef WIN_INTERNAL +// #ifndef LSTRING +// #... +// #endif /* LSTRING */ +// #ifndef LFILEIO +// #... +// #endif /* LFILEIO */ +// #endif /* WIN_INTERNAL */ + +// #if(WINVER >= 0x0400) + +enum : uint { ENDSESSION_LOGOFF = 0x80000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { EWX_LOGOFF = 0 } +enum : uint { EWX_SHUTDOWN = 0x00000001 } +enum : uint { EWX_REBOOT = 0x00000002 } +enum : uint { EWX_FORCE = 0x00000004 } +enum : uint { EWX_POWEROFF = 0x00000008 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { EWX_FORCEIFHUNG = 0x00000010 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +BOOL ExitWindows(DWORD dwReserved, UINT Code){ return ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF); } + +extern(Windows) export BOOL ExitWindowsEx( + UINT uFlags, + DWORD dwReserved); + +extern(Windows) export BOOL SwapMouseButton( + BOOL fSwap); + +extern(Windows) export DWORD GetMessagePos(); + +extern(Windows) export LONG GetMessageTime(); + +extern(Windows) export LPARAM GetMessageExtraInfo(); + +// #if(WINVER >= 0x0400) +extern(Windows) export LPARAM SetMessageExtraInfo( + LPARAM lParam); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export LRESULT SendMessageA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export LRESULT SendMessageW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias SendMessageA SendMessage; +// #endif // !UNICODE + +extern(Windows) export LRESULT SendMessageTimeoutA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + UINT fuFlags, + UINT uTimeout, + PDWORD_PTR lpdwResult); +extern(Windows) export LRESULT SendMessageTimeoutW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + UINT fuFlags, + UINT uTimeout, + PDWORD_PTR lpdwResult); +// #ifdef UNICODE +// #... +// #else +alias SendMessageTimeoutA SendMessageTimeout; +// #endif // !UNICODE + +extern(Windows) export BOOL SendNotifyMessageA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export BOOL SendNotifyMessageW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias SendNotifyMessageA SendNotifyMessage; +// #endif // !UNICODE + +extern(Windows) export BOOL SendMessageCallbackA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + SENDASYNCPROC lpResultCallBack, + ULONG_PTR dwData); +extern(Windows) export BOOL SendMessageCallbackW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + SENDASYNCPROC lpResultCallBack, + ULONG_PTR dwData); +// #ifdef UNICODE +// #... +// #else +alias SendMessageCallbackA SendMessageCallback; +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0501) +struct _0 { + UINT cbSize; + HDESK hdesk; + HWND hwnd; + LUID luid; +} +alias _0 BSMINFO; +alias _0* PBSMINFO; + +extern(Windows) export int BroadcastSystemMessageExA( + DWORD, + LPDWORD, + UINT, + WPARAM, + LPARAM, + PBSMINFO); +extern(Windows) export int BroadcastSystemMessageExW( + DWORD, + LPDWORD, + UINT, + WPARAM, + LPARAM, + PBSMINFO); +// #ifdef UNICODE +// #... +// #else +alias BroadcastSystemMessageExA BroadcastSystemMessageEx; +// #endif // !UNICODE +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(WINVER >= 0x0400) + +// #if defined(_WIN32_WINNT) +extern(Windows) export int BroadcastSystemMessageA( + DWORD, + LPDWORD, + UINT, + WPARAM, + LPARAM); +extern(Windows) export int BroadcastSystemMessageW( + DWORD, + LPDWORD, + UINT, + WPARAM, + LPARAM); +// #ifdef UNICODE +// #... +// #else +alias BroadcastSystemMessageA BroadcastSystemMessage; +// #endif // !UNICODE +// #elif defined(_WIN32_WINDOWS) + +// ... + +// #endif + +enum : uint { BSM_ALLCOMPONENTS = 0x00000000 } +enum : uint { BSM_VXDS = 0x00000001 } +enum : uint { BSM_NETDRIVER = 0x00000002 } +enum : uint { BSM_INSTALLABLEDRIVERS = 0x00000004 } +enum : uint { BSM_APPLICATIONS = 0x00000008 } +enum : uint { BSM_ALLDESKTOPS = 0x00000010 } + +enum : uint { BSF_QUERY = 0x00000001 } +enum : uint { BSF_IGNORECURRENTTASK = 0x00000002 } +enum : uint { BSF_FLUSHDISK = 0x00000004 } +enum : uint { BSF_NOHANG = 0x00000008 } +enum : uint { BSF_POSTMESSAGE = 0x00000010 } +enum : uint { BSF_FORCEIFHUNG = 0x00000020 } +enum : uint { BSF_NOTIMEOUTIFNOTHUNG = 0x00000040 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { BSF_ALLOWSFW = 0x00000080 } +enum : uint { BSF_SENDNOTIFYMESSAGE = 0x00000100 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { BSF_RETURNHDESK = 0x00000200 } +enum : uint { BSF_LUID = 0x00000400 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { BROADCAST_QUERY_DENY = 0x424D5144 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +alias PVOID HDEVNOTIFY; +alias HDEVNOTIFY* PHDEVNOTIFY; + +enum : uint { DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000 } +enum : uint { DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export HDEVNOTIFY RegisterDeviceNotificationA( + HANDLE hRecipient, + LPVOID NotificationFilter, + DWORD Flags); +extern(Windows) export HDEVNOTIFY RegisterDeviceNotificationW( + HANDLE hRecipient, + LPVOID NotificationFilter, + DWORD Flags); +// #ifdef UNICODE +// #... +// #else +alias RegisterDeviceNotificationA RegisterDeviceNotification; +// #endif // !UNICODE + +extern(Windows) export BOOL UnregisterDeviceNotification( + HDEVNOTIFY Handle); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL PostMessageA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export BOOL PostMessageW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias PostMessageA PostMessage; +// #endif // !UNICODE + +extern(Windows) export BOOL PostThreadMessageA( + DWORD idThread, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export BOOL PostThreadMessageW( + DWORD idThread, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias PostThreadMessageA PostThreadMessage; +// #endif // !UNICODE + +alias PostThreadMessageA PostAppMessageA; +alias PostThreadMessageW PostAppMessageW; +// #ifdef UNICODE +// #... +// #else +alias PostAppMessageA PostAppMessage; +// #endif // !UNICODE + +const HWND HWND_BROADCAST = cast(HWND)0xffff; + +// #if(WINVER >= 0x0500) +const HWND HWND_MESSAGE = cast(HWND)-3; +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL AttachThreadInput( + DWORD idAttach, + DWORD idAttachTo, + BOOL fAttach); + +extern(Windows) export BOOL ReplyMessage( + LRESULT lResult); + +extern(Windows) export BOOL WaitMessage(); + +extern(Windows) export DWORD WaitForInputIdle( + HANDLE hProcess, + DWORD dwMilliseconds); + +extern(Windows) export LRESULT DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +extern(Windows) export LRESULT DefWindowProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias DefWindowProcA DefWindowProc; +// #endif // !UNICODE + +extern(Windows) export VOID PostQuitMessage( + int nExitCode); + +// #ifdef STRICT + +extern(Windows) export LRESULT CallWindowProcA( + WNDPROC lpPrevWndFunc, + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export LRESULT CallWindowProcW( + WNDPROC lpPrevWndFunc, + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias CallWindowProcA CallWindowProc; +// #endif // !UNICODE + +// #else /* !STRICT */ + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #endif /* !STRICT */ + +extern(Windows) export BOOL InSendMessage(); + +// #if(WINVER >= 0x0500) +extern(Windows) export DWORD InSendMessageEx( + LPVOID lpReserved); + +enum : uint { ISMEX_NOSEND = 0x00000000 } +enum : uint { ISMEX_SEND = 0x00000001 } +enum : uint { ISMEX_NOTIFY = 0x00000002 } +enum : uint { ISMEX_CALLBACK = 0x00000004 } +enum : uint { ISMEX_REPLIED = 0x00000008 } +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export UINT GetDoubleClickTime(); + +extern(Windows) export BOOL SetDoubleClickTime( + UINT); + +extern(Windows) export ATOM RegisterClassA( + WNDCLASSA *lpWndClass); +extern(Windows) export ATOM RegisterClassW( + WNDCLASSW *lpWndClass); +// #ifdef UNICODE +// #... +// #else +alias RegisterClassA RegisterClass; +// #endif // !UNICODE + +extern(Windows) export BOOL UnregisterClassA( + LPCSTR lpClassName, + HINSTANCE hInstance); +extern(Windows) export BOOL UnregisterClassW( + LPCWSTR lpClassName, + HINSTANCE hInstance); +// #ifdef UNICODE +// #... +// #else +alias UnregisterClassA UnregisterClass; +// #endif // !UNICODE + +extern(Windows) export BOOL GetClassInfoA( + HINSTANCE hInstance, + LPCSTR lpClassName, + LPWNDCLASSA lpWndClass); +extern(Windows) export BOOL GetClassInfoW( + HINSTANCE hInstance, + LPCWSTR lpClassName, + LPWNDCLASSW lpWndClass); +// #ifdef UNICODE +// #... +// #else +alias GetClassInfoA GetClassInfo; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export ATOM RegisterClassExA( + WNDCLASSEXA *); +extern(Windows) export ATOM RegisterClassExW( + WNDCLASSEXW *); +// #ifdef UNICODE +// #... +// #else +alias RegisterClassExA RegisterClassEx; +// #endif // !UNICODE + +extern(Windows) export BOOL GetClassInfoExA( + HINSTANCE, + LPCSTR, + LPWNDCLASSEXA); +extern(Windows) export BOOL GetClassInfoExW( + HINSTANCE, + LPCWSTR, + LPWNDCLASSEXW); +// #ifdef UNICODE +// #... +// #else +alias GetClassInfoExA GetClassInfoEx; +// #endif // !UNICODE + +// #endif /* WINVER >= 0x0400 */ + +enum { CW_USEDEFAULT = int.min } + +const HWND HWND_DESKTOP = cast(HWND)0; + +// #if(_WIN32_WINNT >= 0x0501) +extern(Windows) alias BOOLEAN function(LPCWSTR) PREGISTERCLASSNAMEW; +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export HWND CreateWindowExA( + DWORD dwExStyle, + LPCSTR lpClassName, + LPCSTR lpWindowName, + DWORD dwStyle, + int X, + int Y, + int nWidth, + int nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID lpParam); +extern(Windows) export HWND CreateWindowExW( + DWORD dwExStyle, + LPCWSTR lpClassName, + LPCWSTR lpWindowName, + DWORD dwStyle, + int X, + int Y, + int nWidth, + int nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID lpParam); +// #ifdef UNICODE +// #... +// #else +alias CreateWindowExA CreateWindowEx; +// #endif // !UNICODE + +HWND CreateWindowA(LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam){ return CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); } +HWND CreateWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam){ return CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); } +// #ifdef UNICODE +// #... +// #else +alias CreateWindowA CreateWindow; +// #endif // !UNICODE + +extern(Windows) export BOOL IsWindow( + HWND hWnd); + +extern(Windows) export BOOL IsMenu( + HMENU hMenu); + +extern(Windows) export BOOL IsChild( + HWND hWndParent, + HWND hWnd); + +extern(Windows) export BOOL DestroyWindow( + HWND hWnd); + +extern(Windows) export BOOL ShowWindow( + HWND hWnd, + int nCmdShow); + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL AnimateWindow( + HWND hWnd, + DWORD dwTime, + DWORD dwFlags); +// #endif /* WINVER >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0500) +// #if defined(_WINGDI_) && !defined (NOGDI) + +// ... +// #endif + +// #if(_WIN32_WINNT >= 0x0501) +extern(Windows) export BOOL GetLayeredWindowAttributes( + HWND hwnd, + COLORREF *pcrKey, + BYTE *pbAlpha, + DWORD *pdwFlags); + +enum : uint { PW_CLIENTONLY = 0x00000001 } + +extern(Windows) export BOOL PrintWindow( + HWND hwnd, + HDC hdcBlt, + UINT nFlags); + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export BOOL SetLayeredWindowAttributes( + HWND hwnd, + COLORREF crKey, + BYTE bAlpha, + DWORD dwFlags); + +enum : uint { LWA_COLORKEY = 0x00000001 } +enum : uint { LWA_ALPHA = 0x00000002 } + +enum : uint { ULW_COLORKEY = 0x00000001 } +enum : uint { ULW_ALPHA = 0x00000002 } +enum : uint { ULW_OPAQUE = 0x00000004 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0400) +extern(Windows) export BOOL ShowWindowAsync( + HWND hWnd, + int nCmdShow); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL FlashWindow( + HWND hWnd, + BOOL bInvert); + +// #if(WINVER >= 0x0500) +struct _1 { + UINT cbSize; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; +} +alias _1 FLASHWINFO; +alias _1* PFLASHWINFO; + +extern(Windows) export BOOL FlashWindowEx( + PFLASHWINFO pfwi); + +enum : uint { FLASHW_STOP = 0 } +enum : uint { FLASHW_CAPTION = 0x00000001 } +enum : uint { FLASHW_TRAY = 0x00000002 } +enum : uint { FLASHW_ALL = FLASHW_CAPTION | FLASHW_TRAY } +enum : uint { FLASHW_TIMER = 0x00000004 } +enum : uint { FLASHW_TIMERNOFG = 0x0000000C } + +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL ShowOwnedPopups( + HWND hWnd, + BOOL fShow); + +extern(Windows) export BOOL OpenIcon( + HWND hWnd); + +extern(Windows) export BOOL CloseWindow( + HWND hWnd); + +extern(Windows) export BOOL MoveWindow( + HWND hWnd, + int X, + int Y, + int nWidth, + int nHeight, + BOOL bRepaint); + +extern(Windows) export BOOL SetWindowPos( + HWND hWnd, + HWND hWndInsertAfter, + int X, + int Y, + int cx, + int cy, + UINT uFlags); + +extern(Windows) export BOOL GetWindowPlacement( + HWND hWnd, + WINDOWPLACEMENT *lpwndpl); + +extern(Windows) export BOOL SetWindowPlacement( + HWND hWnd, + WINDOWPLACEMENT *lpwndpl); + +// #ifndef NODEFERWINDOWPOS + +extern(Windows) export HDWP BeginDeferWindowPos( + int nNumWindows); + +extern(Windows) export HDWP DeferWindowPos( + HDWP hWinPosInfo, + HWND hWnd, + HWND hWndInsertAfter, + int x, + int y, + int cx, + int cy, + UINT uFlags); + +extern(Windows) export BOOL EndDeferWindowPos( + HDWP hWinPosInfo); + +// #endif /* !NODEFERWINDOWPOS */ + +extern(Windows) export BOOL IsWindowVisible( + HWND hWnd); + +extern(Windows) export BOOL IsIconic( + HWND hWnd); + +extern(Windows) export BOOL AnyPopup(); + +extern(Windows) export BOOL BringWindowToTop( + HWND hWnd); + +extern(Windows) export BOOL IsZoomed( + HWND hWnd); + +enum : uint { SWP_NOSIZE = 0x0001 } +enum : uint { SWP_NOMOVE = 0x0002 } +enum : uint { SWP_NOZORDER = 0x0004 } +enum : uint { SWP_NOREDRAW = 0x0008 } +enum : uint { SWP_NOACTIVATE = 0x0010 } +enum : uint { SWP_FRAMECHANGED = 0x0020 } +enum : uint { SWP_SHOWWINDOW = 0x0040 } +enum : uint { SWP_HIDEWINDOW = 0x0080 } +enum : uint { SWP_NOCOPYBITS = 0x0100 } +enum : uint { SWP_NOOWNERZORDER = 0x0200 } +enum : uint { SWP_NOSENDCHANGING = 0x0400 } + +alias SWP_FRAMECHANGED SWP_DRAWFRAME; +alias SWP_NOOWNERZORDER SWP_NOREPOSITION; + +// #if(WINVER >= 0x0400) +enum : uint { SWP_DEFERERASE = 0x2000 } +enum : uint { SWP_ASYNCWINDOWPOS = 0x4000 } +// #endif /* WINVER >= 0x0400 */ + +const HWND HWND_TOP = cast(HWND)0; +const HWND HWND_BOTTOM = cast(HWND)1; +const HWND HWND_TOPMOST = cast(HWND)-1; +const HWND HWND_NOTOPMOST = cast(HWND)-2; + +// #ifndef NOCTLMGR + +align(2): + +struct _2 { + DWORD style; + DWORD dwExtendedStyle; + WORD cdit; + short x; + short y; + short cx; + short cy; +} +alias _2 DLGTEMPLATE; + +alias DLGTEMPLATE* LPDLGTEMPLATEA; +alias DLGTEMPLATE* LPDLGTEMPLATEW; +// #ifdef UNICODE +// ... +// #else +alias LPDLGTEMPLATEA LPDLGTEMPLATE; +// #endif // UNICODE +alias DLGTEMPLATE* LPCDLGTEMPLATEA; +alias DLGTEMPLATE* LPCDLGTEMPLATEW; +// #ifdef UNICODE +// ... +// #else +alias LPCDLGTEMPLATEA LPCDLGTEMPLATE; +// #endif // UNICODE + +struct _3 { + DWORD style; + DWORD dwExtendedStyle; + short x; + short y; + short cx; + short cy; + WORD id; +} +alias _3 DLGITEMTEMPLATE; + +alias DLGITEMTEMPLATE* PDLGITEMTEMPLATEA; +alias DLGITEMTEMPLATE* PDLGITEMTEMPLATEW; +// #ifdef UNICODE +// ... +// #else +alias PDLGITEMTEMPLATEA PDLGITEMTEMPLATE; +// #endif // UNICODE +alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATEA; +alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATEW; +// #ifdef UNICODE +// ... +// #else +alias LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE; +// #endif // UNICODE + +align: + +extern(Windows) export HWND CreateDialogParamA( + HINSTANCE hInstance, + LPCSTR lpTemplateName, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +extern(Windows) export HWND CreateDialogParamW( + HINSTANCE hInstance, + LPCWSTR lpTemplateName, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +// #ifdef UNICODE +// #... +// #else +alias CreateDialogParamA CreateDialogParam; +// #endif // !UNICODE + +extern(Windows) export HWND CreateDialogIndirectParamA( + HINSTANCE hInstance, + LPCDLGTEMPLATEA lpTemplate, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +extern(Windows) export HWND CreateDialogIndirectParamW( + HINSTANCE hInstance, + LPCDLGTEMPLATEW lpTemplate, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +// #ifdef UNICODE +// #... +// #else +alias CreateDialogIndirectParamA CreateDialogIndirectParam; +// #endif // !UNICODE + +HWND CreateDialogA(HINSTANCE hInstance, LPCSTR lpName, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0L); } +HWND CreateDialogW(HINSTANCE hInstance, LPCWSTR lpName, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0L); } +// #ifdef UNICODE +// #... +// #else +alias CreateDialogA CreateDialog; +// #endif // !UNICODE + +HWND CreateDialogIndirectA(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L); } +HWND CreateDialogIndirectW(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L); } +// #ifdef UNICODE +// #... +// #else +alias CreateDialogIndirectA CreateDialogIndirect; +// #endif // !UNICODE + +extern(Windows) export INT_PTR DialogBoxParamA( + HINSTANCE hInstance, + LPCSTR lpTemplateName, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +extern(Windows) export INT_PTR DialogBoxParamW( + HINSTANCE hInstance, + LPCWSTR lpTemplateName, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +// #ifdef UNICODE +// #... +// #else +alias DialogBoxParamA DialogBoxParam; +// #endif // !UNICODE + +extern(Windows) export INT_PTR DialogBoxIndirectParamA( + HINSTANCE hInstance, + LPCDLGTEMPLATEA hDialogTemplate, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +extern(Windows) export INT_PTR DialogBoxIndirectParamW( + HINSTANCE hInstance, + LPCDLGTEMPLATEW hDialogTemplate, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +// #ifdef UNICODE +// #... +// #else +alias DialogBoxIndirectParamA DialogBoxIndirectParam; +// #endif // !UNICODE + +// #define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +// #define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +// #ifdef UNICODE +// #... +// #else +// #define DialogBox DialogBoxA +// #endif // !UNICODE + +// #define DialogBoxIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +// #define DialogBoxIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +// #ifdef UNICODE +// #... +// #else +// #define DialogBoxIndirect DialogBoxIndirectA +// #endif // !UNICODE + +extern(Windows) export BOOL EndDialog( + HWND hDlg, + INT_PTR nResult); + +extern(Windows) export HWND GetDlgItem( + HWND hDlg, + int nIDDlgItem); + +extern(Windows) export BOOL SetDlgItemInt( + HWND hDlg, + int nIDDlgItem, + UINT uValue, + BOOL bSigned); + +extern(Windows) export UINT GetDlgItemInt( + HWND hDlg, + int nIDDlgItem, + BOOL *lpTranslated, + BOOL bSigned); + +extern(Windows) export BOOL SetDlgItemTextA( + HWND hDlg, + int nIDDlgItem, + LPCSTR lpString); +extern(Windows) export BOOL SetDlgItemTextW( + HWND hDlg, + int nIDDlgItem, + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias SetDlgItemTextA SetDlgItemText; +// #endif // !UNICODE + +extern(Windows) export UINT GetDlgItemTextA( + HWND hDlg, + int nIDDlgItem, + LPSTR lpString, + int nMaxCount); +extern(Windows) export UINT GetDlgItemTextW( + HWND hDlg, + int nIDDlgItem, + LPWSTR lpString, + int nMaxCount); +// #ifdef UNICODE +// #... +// #else +alias GetDlgItemTextA GetDlgItemText; +// #endif // !UNICODE + +extern(Windows) export BOOL CheckDlgButton( + HWND hDlg, + int nIDButton, + UINT uCheck); + +extern(Windows) export BOOL CheckRadioButton( + HWND hDlg, + int nIDFirstButton, + int nIDLastButton, + int nIDCheckButton); + +extern(Windows) export UINT IsDlgButtonChecked( + HWND hDlg, + int nIDButton); + +extern(Windows) export LRESULT SendDlgItemMessageA( + HWND hDlg, + int nIDDlgItem, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export LRESULT SendDlgItemMessageW( + HWND hDlg, + int nIDDlgItem, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias SendDlgItemMessageA SendDlgItemMessage; +// #endif // !UNICODE + +extern(Windows) export HWND GetNextDlgGroupItem( + HWND hDlg, + HWND hCtl, + BOOL bPrevious); + +extern(Windows) export HWND GetNextDlgTabItem( + HWND hDlg, + HWND hCtl, + BOOL bPrevious); + +extern(Windows) export int GetDlgCtrlID( + HWND hWnd); + +extern(Windows) export int GetDialogBaseUnits(); + +extern(Windows) export LRESULT DefDlgProcA(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam); +extern(Windows) export LRESULT DefDlgProcW(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias DefDlgProcA DefDlgProc; +// #endif // !UNICODE + +// #ifndef _MAC +enum : uint { DLGWINDOWEXTRA = 30 } +// #else +// #... +// #endif + +// #endif /* !NOCTLMGR */ + +// #ifndef NOMSG + +extern(Windows) export BOOL CallMsgFilterA( + LPMSG lpMsg, + int nCode); +extern(Windows) export BOOL CallMsgFilterW( + LPMSG lpMsg, + int nCode); +// #ifdef UNICODE +// #... +// #else +alias CallMsgFilterA CallMsgFilter; +// #endif // !UNICODE + +// #endif /* !NOMSG */ + +// #ifndef NOCLIPBOARD + +extern(Windows) export BOOL OpenClipboard( + HWND hWndNewOwner); + +extern(Windows) export BOOL CloseClipboard(); + +// #if(WINVER >= 0x0500) + +extern(Windows) export DWORD GetClipboardSequenceNumber(); + +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export HWND GetClipboardOwner(); + +extern(Windows) export HWND SetClipboardViewer( + HWND hWndNewViewer); + +extern(Windows) export HWND GetClipboardViewer(); + +extern(Windows) export BOOL ChangeClipboardChain( + HWND hWndRemove, + HWND hWndNewNext); + +extern(Windows) export HANDLE SetClipboardData( + UINT uFormat, + HANDLE hMem); + +extern(Windows) export HANDLE GetClipboardData( + UINT uFormat); + +extern(Windows) export UINT RegisterClipboardFormatA( + LPCSTR lpszFormat); +extern(Windows) export UINT RegisterClipboardFormatW( + LPCWSTR lpszFormat); +// #ifdef UNICODE +// #... +// #else +alias RegisterClipboardFormatA RegisterClipboardFormat; +// #endif // !UNICODE + +extern(Windows) export int CountClipboardFormats(); + +extern(Windows) export UINT EnumClipboardFormats( + UINT format); + +extern(Windows) export int GetClipboardFormatNameA( + UINT format, + LPSTR lpszFormatName, + int cchMaxCount); +extern(Windows) export int GetClipboardFormatNameW( + UINT format, + LPWSTR lpszFormatName, + int cchMaxCount); +// #ifdef UNICODE +// #... +// #else +alias GetClipboardFormatNameA GetClipboardFormatName; +// #endif // !UNICODE + +extern(Windows) export BOOL EmptyClipboard(); + +extern(Windows) export BOOL IsClipboardFormatAvailable( + UINT format); + +extern(Windows) export int GetPriorityClipboardFormat( + UINT *paFormatPriorityList, + int cFormats); + +extern(Windows) export HWND GetOpenClipboardWindow(); + +// #endif /* !NOCLIPBOARD */ + +extern(Windows) export BOOL CharToOemA( + LPCSTR lpszSrc, + LPSTR lpszDst); +extern(Windows) export BOOL CharToOemW( + LPCWSTR lpszSrc, + LPSTR lpszDst); +// #ifdef UNICODE +// #... +// #else +alias CharToOemA CharToOem; +// #endif // !UNICODE + +extern(Windows) export BOOL OemToCharA( + LPCSTR lpszSrc, + LPSTR lpszDst); +extern(Windows) export BOOL OemToCharW( + LPCSTR lpszSrc, + LPWSTR lpszDst); +// #ifdef UNICODE +// #... +// #else +alias OemToCharA OemToChar; +// #endif // !UNICODE + +extern(Windows) export BOOL CharToOemBuffA( + LPCSTR lpszSrc, + LPSTR lpszDst, + DWORD cchDstLength); +extern(Windows) export BOOL CharToOemBuffW( + LPCWSTR lpszSrc, + LPSTR lpszDst, + DWORD cchDstLength); +// #ifdef UNICODE +// #... +// #else +alias CharToOemBuffA CharToOemBuff; +// #endif // !UNICODE + +extern(Windows) export BOOL OemToCharBuffA( + LPCSTR lpszSrc, + LPSTR lpszDst, + DWORD cchDstLength); +extern(Windows) export BOOL OemToCharBuffW( + LPCSTR lpszSrc, + LPWSTR lpszDst, + DWORD cchDstLength); +// #ifdef UNICODE +// #... +// #else +alias OemToCharBuffA OemToCharBuff; +// #endif // !UNICODE + +extern(Windows) export LPSTR CharUpperA( + LPSTR lpsz); +extern(Windows) export LPWSTR CharUpperW( + LPWSTR lpsz); +// #ifdef UNICODE +// #... +// #else +alias CharUpperA CharUpper; +// #endif // !UNICODE + +extern(Windows) export DWORD CharUpperBuffA( + LPSTR lpsz, + DWORD cchLength); +extern(Windows) export DWORD CharUpperBuffW( + LPWSTR lpsz, + DWORD cchLength); +// #ifdef UNICODE +// #... +// #else +alias CharUpperBuffA CharUpperBuff; +// #endif // !UNICODE + +extern(Windows) export LPSTR CharLowerA( + LPSTR lpsz); +extern(Windows) export LPWSTR CharLowerW( + LPWSTR lpsz); +// #ifdef UNICODE +// #... +// #else +alias CharLowerA CharLower; +// #endif // !UNICODE + +extern(Windows) export DWORD CharLowerBuffA( + LPSTR lpsz, + DWORD cchLength); +extern(Windows) export DWORD CharLowerBuffW( + LPWSTR lpsz, + DWORD cchLength); +// #ifdef UNICODE +// #... +// #else +alias CharLowerBuffA CharLowerBuff; +// #endif // !UNICODE + +extern(Windows) export LPSTR CharNextA( + LPCSTR lpsz); +extern(Windows) export LPWSTR CharNextW( + LPCWSTR lpsz); +// #ifdef UNICODE +// #... +// #else +alias CharNextA CharNext; +// #endif // !UNICODE + +extern(Windows) export LPSTR CharPrevA( + LPCSTR lpszStart, + LPCSTR lpszCurrent); +extern(Windows) export LPWSTR CharPrevW( + LPCWSTR lpszStart, + LPCWSTR lpszCurrent); +// #ifdef UNICODE +// #... +// #else +alias CharPrevA CharPrev; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export LPSTR CharNextExA( + WORD CodePage, + LPCSTR lpCurrentChar, + DWORD dwFlags); + +extern(Windows) export LPSTR CharPrevExA( + WORD CodePage, + LPCSTR lpStart, + LPCSTR lpCurrentChar, + DWORD dwFlags); +// #endif /* WINVER >= 0x0400 */ + +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; + +// #ifndef NOLANGUAGE + +extern(Windows) export BOOL IsCharAlphaA( + CHAR ch); +extern(Windows) export BOOL IsCharAlphaW( + WCHAR ch); +// #ifdef UNICODE +// #... +// #else +alias IsCharAlphaA IsCharAlpha; +// #endif // !UNICODE + +extern(Windows) export BOOL IsCharAlphaNumericA( + CHAR ch); +extern(Windows) export BOOL IsCharAlphaNumericW( + WCHAR ch); +// #ifdef UNICODE +// #... +// #else +alias IsCharAlphaNumericA IsCharAlphaNumeric; +// #endif // !UNICODE + +extern(Windows) export BOOL IsCharUpperA( + CHAR ch); +extern(Windows) export BOOL IsCharUpperW( + WCHAR ch); +// #ifdef UNICODE +// #... +// #else +alias IsCharUpperA IsCharUpper; +// #endif // !UNICODE + +extern(Windows) export BOOL IsCharLowerA( + CHAR ch); +extern(Windows) export BOOL IsCharLowerW( + WCHAR ch); +// #ifdef UNICODE +// #... +// #else +alias IsCharLowerA IsCharLower; +// #endif // !UNICODE + +// #endif /* !NOLANGUAGE */ + +extern(Windows) export HWND SetFocus( + HWND hWnd); + +extern(Windows) export HWND GetActiveWindow(); + +extern(Windows) export HWND GetFocus(); + +extern(Windows) export UINT GetKBCodePage(); + +extern(Windows) export SHORT GetKeyState( + int nVirtKey); + +extern(Windows) export SHORT GetAsyncKeyState( + int vKey); + +extern(Windows) export BOOL GetKeyboardState( + PBYTE lpKeyState); + +extern(Windows) export BOOL SetKeyboardState( + LPBYTE lpKeyState); + +extern(Windows) export int GetKeyNameTextA( + LONG lParam, + LPSTR lpString, + int nSize); +extern(Windows) export int GetKeyNameTextW( + LONG lParam, + LPWSTR lpString, + int nSize); +// #ifdef UNICODE +// #... +// #else +alias GetKeyNameTextA GetKeyNameText; +// #endif // !UNICODE + +extern(Windows) export int GetKeyboardType( + int nTypeFlag); + +extern(Windows) export int ToAscii( + UINT uVirtKey, + UINT uScanCode, + BYTE *lpKeyState, + LPWORD lpChar, + UINT uFlags); + +// #if(WINVER >= 0x0400) +extern(Windows) export int ToAsciiEx( + UINT uVirtKey, + UINT uScanCode, + BYTE *lpKeyState, + LPWORD lpChar, + UINT uFlags, + HKL dwhkl); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int ToUnicode( + UINT wVirtKey, + UINT wScanCode, + BYTE *lpKeyState, + LPWSTR pwszBuff, + int cchBuff, + UINT wFlags); + +extern(Windows) export DWORD OemKeyScan( + WORD wOemChar); + +extern(Windows) export SHORT VkKeyScanA( + CHAR ch); +extern(Windows) export SHORT VkKeyScanW( + WCHAR ch); +// #ifdef UNICODE +// #... +// #else +alias VkKeyScanA VkKeyScan; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export SHORT VkKeyScanExA( + CHAR ch, + HKL dwhkl); +extern(Windows) export SHORT VkKeyScanExW( + WCHAR ch, + HKL dwhkl); +// #ifdef UNICODE +// #... +// #else +alias VkKeyScanExA VkKeyScanEx; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ +enum : uint { KEYEVENTF_EXTENDEDKEY = 0x0001 } +enum : uint { KEYEVENTF_KEYUP = 0x0002 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { KEYEVENTF_UNICODE = 0x0004 } +enum : uint { KEYEVENTF_SCANCODE = 0x0008 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export VOID keybd_event( + BYTE bVk, + BYTE bScan, + DWORD dwFlags, + ULONG_PTR dwExtraInfo); + +enum : uint { MOUSEEVENTF_MOVE = 0x0001 } +enum : uint { MOUSEEVENTF_LEFTDOWN = 0x0002 } +enum : uint { MOUSEEVENTF_LEFTUP = 0x0004 } +enum : uint { MOUSEEVENTF_RIGHTDOWN = 0x0008 } +enum : uint { MOUSEEVENTF_RIGHTUP = 0x0010 } +enum : uint { MOUSEEVENTF_MIDDLEDOWN = 0x0020 } +enum : uint { MOUSEEVENTF_MIDDLEUP = 0x0040 } +enum : uint { MOUSEEVENTF_XDOWN = 0x0080 } +enum : uint { MOUSEEVENTF_XUP = 0x0100 } +enum : uint { MOUSEEVENTF_WHEEL = 0x0800 } +enum : uint { MOUSEEVENTF_VIRTUALDESK = 0x4000 } +enum : uint { MOUSEEVENTF_ABSOLUTE = 0x8000 } + +extern(Windows) export VOID mouse_event( + DWORD dwFlags, + DWORD dx, + DWORD dy, + DWORD dwData, + ULONG_PTR dwExtraInfo); + +// #if (_WIN32_WINNT > 0x0400) + +struct tagMOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagMOUSEINPUT MOUSEINPUT; +alias tagMOUSEINPUT* PMOUSEINPUT; +alias tagMOUSEINPUT* LPMOUSEINPUT; + +struct tagKEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagKEYBDINPUT KEYBDINPUT; +alias tagKEYBDINPUT* PKEYBDINPUT; +alias tagKEYBDINPUT* LPKEYBDINPUT; + +struct tagHARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; +} +alias tagHARDWAREINPUT HARDWAREINPUT; +alias tagHARDWAREINPUT* PHARDWAREINPUT; +alias tagHARDWAREINPUT* LPHARDWAREINPUT; + +enum : uint { INPUT_MOUSE = 0 } +enum : uint { INPUT_KEYBOARD = 1 } +enum : uint { INPUT_HARDWARE = 2 } + +struct tagINPUT { + DWORD type; +union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; +} + +} +alias tagINPUT INPUT; +alias tagINPUT* PINPUT; +alias tagINPUT* LPINPUT; + +extern(Windows) export UINT SendInput( + UINT cInputs, // number of input in the array + LPINPUT pInputs, // array of inputs + int cbSize); + +// #endif // (_WIN32_WINNT > 0x0400) + +// #if(_WIN32_WINNT >= 0x0500) +struct tagLASTINPUTINFO { + UINT cbSize; + DWORD dwTime; +} +alias tagLASTINPUTINFO LASTINPUTINFO; +alias tagLASTINPUTINFO* PLASTINPUTINFO; + +extern(Windows) export BOOL GetLastInputInfo( + PLASTINPUTINFO plii); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export UINT MapVirtualKeyA( + UINT uCode, + UINT uMapType); +extern(Windows) export UINT MapVirtualKeyW( + UINT uCode, + UINT uMapType); +// #ifdef UNICODE +// #... +// #else +alias MapVirtualKeyA MapVirtualKey; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export UINT MapVirtualKeyExA( + UINT uCode, + UINT uMapType, + HKL dwhkl); +extern(Windows) export UINT MapVirtualKeyExW( + UINT uCode, + UINT uMapType, + HKL dwhkl); +// #ifdef UNICODE +// #... +// #else +alias MapVirtualKeyExA MapVirtualKeyEx; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL GetInputState(); + +extern(Windows) export DWORD GetQueueStatus( + UINT flags); + +extern(Windows) export HWND GetCapture(); + +extern(Windows) export HWND SetCapture( + HWND hWnd); + +extern(Windows) export BOOL ReleaseCapture(); + +extern(Windows) export DWORD MsgWaitForMultipleObjects( + DWORD nCount, + HANDLE *pHandles, + BOOL fWaitAll, + DWORD dwMilliseconds, + DWORD dwWakeMask); + +extern(Windows) export DWORD MsgWaitForMultipleObjectsEx( + DWORD nCount, + HANDLE *pHandles, + DWORD dwMilliseconds, + DWORD dwWakeMask, + DWORD dwFlags); + +enum : uint { MWMO_WAITALL = 0x0001 } +enum : uint { MWMO_ALERTABLE = 0x0002 } +enum : uint { MWMO_INPUTAVAILABLE = 0x0004 } + +enum : uint { QS_KEY = 0x0001 } +enum : uint { QS_MOUSEMOVE = 0x0002 } +enum : uint { QS_MOUSEBUTTON = 0x0004 } +// #define QS_POSTMESSAGE 0x0008 +// #define QS_TIMER 0x0010 +// #define QS_PAINT 0x0020 +// #define QS_SENDMESSAGE 0x0040 +// #define QS_HOTKEY 0x0080 +enum : uint { QS_ALLPOSTMESSAGE = 0x0100 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { QS_RAWINPUT = 0x0400 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { QS_MOUSE = QS_MOUSEMOVE | QS_MOUSEBUTTON } + +// #if (_WIN32_WINNT >= 0x0501) +// #define QS_INPUT (QS_MOUSE | QS_KEY | QS_RAWINPUT) +// #else +// #... +// ... +// #endif // (_WIN32_WINNT >= 0x0501) + +enum : uint { QS_ALLEVENTS = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY } + +enum : uint { QS_ALLINPUT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE } + +extern(Windows) export UINT_PTR SetTimer( + HWND hWnd, + UINT_PTR nIDEvent, + UINT uElapse, + TIMERPROC lpTimerFunc); + +extern(Windows) export BOOL KillTimer( + HWND hWnd, + UINT_PTR uIDEvent); + +extern(Windows) export BOOL IsWindowUnicode( + HWND hWnd); + +extern(Windows) export BOOL EnableWindow( + HWND hWnd, + BOOL bEnable); + +extern(Windows) export BOOL IsWindowEnabled( + HWND hWnd); + +extern(Windows) export HACCEL LoadAcceleratorsA( + HINSTANCE hInstance, + LPCSTR lpTableName); +extern(Windows) export HACCEL LoadAcceleratorsW( + HINSTANCE hInstance, + LPCWSTR lpTableName); +// #ifdef UNICODE +// #... +// #else +alias LoadAcceleratorsA LoadAccelerators; +// #endif // !UNICODE + +extern(Windows) export HACCEL CreateAcceleratorTableA( + LPACCEL, int); +extern(Windows) export HACCEL CreateAcceleratorTableW( + LPACCEL, int); +// #ifdef UNICODE +// #... +// #else +alias CreateAcceleratorTableA CreateAcceleratorTable; +// #endif // !UNICODE + +extern(Windows) export BOOL DestroyAcceleratorTable( + HACCEL hAccel); + +extern(Windows) export int CopyAcceleratorTableA( + HACCEL hAccelSrc, + LPACCEL lpAccelDst, + int cAccelEntries); +extern(Windows) export int CopyAcceleratorTableW( + HACCEL hAccelSrc, + LPACCEL lpAccelDst, + int cAccelEntries); +// #ifdef UNICODE +// #... +// #else +alias CopyAcceleratorTableA CopyAcceleratorTable; +// #endif // !UNICODE + +// #ifndef NOMSG + +extern(Windows) export int TranslateAcceleratorA( + HWND hWnd, + HACCEL hAccTable, + LPMSG lpMsg); +extern(Windows) export int TranslateAcceleratorW( + HWND hWnd, + HACCEL hAccTable, + LPMSG lpMsg); +// #ifdef UNICODE +// #... +// #else +alias TranslateAcceleratorA TranslateAccelerator; +// #endif // !UNICODE + +// #endif /* !NOMSG */ + +// #ifndef NOSYSMETRICS + +enum : uint { SM_CXSCREEN = 0 } +enum : uint { SM_CYSCREEN = 1 } +enum : uint { SM_CXVSCROLL = 2 } +enum : uint { SM_CYHSCROLL = 3 } +enum : uint { SM_CYCAPTION = 4 } +enum : uint { SM_CXBORDER = 5 } +enum : uint { SM_CYBORDER = 6 } +enum : uint { SM_CXDLGFRAME = 7 } +enum : uint { SM_CYDLGFRAME = 8 } +enum : uint { SM_CYVTHUMB = 9 } +enum : uint { SM_CXHTHUMB = 10 } +enum : uint { SM_CXICON = 11 } +enum : uint { SM_CYICON = 12 } +enum : uint { SM_CXCURSOR = 13 } +enum : uint { SM_CYCURSOR = 14 } +enum : uint { SM_CYMENU = 15 } +enum : uint { SM_CXFULLSCREEN = 16 } +enum : uint { SM_CYFULLSCREEN = 17 } +enum : uint { SM_CYKANJIWINDOW = 18 } +enum : uint { SM_MOUSEPRESENT = 19 } +enum : uint { SM_CYVSCROLL = 20 } +enum : uint { SM_CXHSCROLL = 21 } +enum : uint { SM_DEBUG = 22 } +enum : uint { SM_SWAPBUTTON = 23 } +enum : uint { SM_RESERVED1 = 24 } +enum : uint { SM_RESERVED2 = 25 } +enum : uint { SM_RESERVED3 = 26 } +enum : uint { SM_RESERVED4 = 27 } +enum : uint { SM_CXMIN = 28 } +enum : uint { SM_CYMIN = 29 } +enum : uint { SM_CXSIZE = 30 } +enum : uint { SM_CYSIZE = 31 } +enum : uint { SM_CXFRAME = 32 } +enum : uint { SM_CYFRAME = 33 } +enum : uint { SM_CXMINTRACK = 34 } +enum : uint { SM_CYMINTRACK = 35 } +enum : uint { SM_CXDOUBLECLK = 36 } +enum : uint { SM_CYDOUBLECLK = 37 } +enum : uint { SM_CXICONSPACING = 38 } +enum : uint { SM_CYICONSPACING = 39 } +enum : uint { SM_MENUDROPALIGNMENT = 40 } +enum : uint { SM_PENWINDOWS = 41 } +enum : uint { SM_DBCSENABLED = 42 } +enum : uint { SM_CMOUSEBUTTONS = 43 } + +// #if(WINVER >= 0x0400) +alias SM_CXDLGFRAME SM_CXFIXEDFRAME; +alias SM_CYDLGFRAME SM_CYFIXEDFRAME; +alias SM_CXFRAME SM_CXSIZEFRAME; +alias SM_CYFRAME SM_CYSIZEFRAME; + +enum : uint { SM_SECURE = 44 } +enum : uint { SM_CXEDGE = 45 } +enum : uint { SM_CYEDGE = 46 } +enum : uint { SM_CXMINSPACING = 47 } +enum : uint { SM_CYMINSPACING = 48 } +enum : uint { SM_CXSMICON = 49 } +enum : uint { SM_CYSMICON = 50 } +enum : uint { SM_CYSMCAPTION = 51 } +enum : uint { SM_CXSMSIZE = 52 } +enum : uint { SM_CYSMSIZE = 53 } +enum : uint { SM_CXMENUSIZE = 54 } +enum : uint { SM_CYMENUSIZE = 55 } +enum : uint { SM_ARRANGE = 56 } +enum : uint { SM_CXMINIMIZED = 57 } +enum : uint { SM_CYMINIMIZED = 58 } +enum : uint { SM_CXMAXTRACK = 59 } +enum : uint { SM_CYMAXTRACK = 60 } +enum : uint { SM_CXMAXIMIZED = 61 } +enum : uint { SM_CYMAXIMIZED = 62 } +enum : uint { SM_NETWORK = 63 } +enum : uint { SM_CLEANBOOT = 67 } +enum : uint { SM_CXDRAG = 68 } +enum : uint { SM_CYDRAG = 69 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { SM_SHOWSOUNDS = 70 } +// #if(WINVER >= 0x0400) +enum : uint { SM_CXMENUCHECK = 71 } +enum : uint { SM_CYMENUCHECK = 72 } +enum : uint { SM_SLOWMACHINE = 73 } +enum : uint { SM_MIDEASTENABLED = 74 } +// #endif /* WINVER >= 0x0400 */ + +// #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) +enum : uint { SM_MOUSEWHEELPRESENT = 75 } +// #endif +// #if(WINVER >= 0x0500) +enum : uint { SM_XVIRTUALSCREEN = 76 } +enum : uint { SM_YVIRTUALSCREEN = 77 } +enum : uint { SM_CXVIRTUALSCREEN = 78 } +enum : uint { SM_CYVIRTUALSCREEN = 79 } +enum : uint { SM_CMONITORS = 80 } +enum : uint { SM_SAMEDISPLAYFORMAT = 81 } +// #endif /* WINVER >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { SM_IMMENABLED = 82 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SM_CXFOCUSBORDER = 83 } +enum : uint { SM_CYFOCUSBORDER = 84 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400)) +// #... +// #else +enum : uint { SM_CMETRICS = 86 } +// #endif + +// #if(WINVER >= 0x0500) +enum : uint { SM_REMOTESESSION = 0x1000 } + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SM_SHUTTINGDOWN = 0x2000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export int GetSystemMetrics( + int nIndex); + +// #endif /* !NOSYSMETRICS */ + +// #ifndef NOMENUS + +extern(Windows) export HMENU LoadMenuA( + HINSTANCE hInstance, + LPCSTR lpMenuName); +extern(Windows) export HMENU LoadMenuW( + HINSTANCE hInstance, + LPCWSTR lpMenuName); +// #ifdef UNICODE +// #... +// #else +alias LoadMenuA LoadMenu; +// #endif // !UNICODE + +extern(Windows) export HMENU LoadMenuIndirectA( + MENUTEMPLATEA *lpMenuTemplate); +extern(Windows) export HMENU LoadMenuIndirectW( + MENUTEMPLATEW *lpMenuTemplate); +// #ifdef UNICODE +// #... +// #else +alias LoadMenuIndirectA LoadMenuIndirect; +// #endif // !UNICODE + +extern(Windows) export HMENU GetMenu( + HWND hWnd); + +extern(Windows) export BOOL SetMenu( + HWND hWnd, + HMENU hMenu); + +extern(Windows) export BOOL ChangeMenuA( + HMENU hMenu, + UINT cmd, + LPCSTR lpszNewItem, + UINT cmdInsert, + UINT flags); +extern(Windows) export BOOL ChangeMenuW( + HMENU hMenu, + UINT cmd, + LPCWSTR lpszNewItem, + UINT cmdInsert, + UINT flags); +// #ifdef UNICODE +// #... +// #else +alias ChangeMenuA ChangeMenu; +// #endif // !UNICODE + +extern(Windows) export BOOL HiliteMenuItem( + HWND hWnd, + HMENU hMenu, + UINT uIDHiliteItem, + UINT uHilite); + +extern(Windows) export int GetMenuStringA( + HMENU hMenu, + UINT uIDItem, + LPSTR lpString, + int nMaxCount, + UINT uFlag); +extern(Windows) export int GetMenuStringW( + HMENU hMenu, + UINT uIDItem, + LPWSTR lpString, + int nMaxCount, + UINT uFlag); +// #ifdef UNICODE +// #... +// #else +alias GetMenuStringA GetMenuString; +// #endif // !UNICODE + +extern(Windows) export UINT GetMenuState( + HMENU hMenu, + UINT uId, + UINT uFlags); + +extern(Windows) export BOOL DrawMenuBar( + HWND hWnd); + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { PMB_ACTIVE = 0x00000001 } + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export HMENU GetSystemMenu( + HWND hWnd, + BOOL bRevert); + +extern(Windows) export HMENU CreateMenu(); + +extern(Windows) export HMENU CreatePopupMenu(); + +extern(Windows) export BOOL DestroyMenu( + HMENU hMenu); + +extern(Windows) export DWORD CheckMenuItem( + HMENU hMenu, + UINT uIDCheckItem, + UINT uCheck); + +extern(Windows) export BOOL EnableMenuItem( + HMENU hMenu, + UINT uIDEnableItem, + UINT uEnable); + +extern(Windows) export HMENU GetSubMenu( + HMENU hMenu, + int nPos); + +extern(Windows) export UINT GetMenuItemID( + HMENU hMenu, + int nPos); + +extern(Windows) export int GetMenuItemCount( + HMENU hMenu); + +extern(Windows) export BOOL InsertMenuA( + HMENU hMenu, + UINT uPosition, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCSTR lpNewItem); +extern(Windows) export BOOL InsertMenuW( + HMENU hMenu, + UINT uPosition, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCWSTR lpNewItem); +// #ifdef UNICODE +// #... +// #else +alias InsertMenuA InsertMenu; +// #endif // !UNICODE + +extern(Windows) export BOOL AppendMenuA( + HMENU hMenu, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCSTR lpNewItem); +extern(Windows) export BOOL AppendMenuW( + HMENU hMenu, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCWSTR lpNewItem); +// #ifdef UNICODE +// #... +// #else +alias AppendMenuA AppendMenu; +// #endif // !UNICODE + +extern(Windows) export BOOL ModifyMenuA( + HMENU hMnu, + UINT uPosition, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCSTR lpNewItem); +extern(Windows) export BOOL ModifyMenuW( + HMENU hMnu, + UINT uPosition, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCWSTR lpNewItem); +// #ifdef UNICODE +// #... +// #else +alias ModifyMenuA ModifyMenu; +// #endif // !UNICODE + +extern(Windows) export BOOL RemoveMenu( + HMENU hMenu, + UINT uPosition, + UINT uFlags); + +extern(Windows) export BOOL DeleteMenu( + HMENU hMenu, + UINT uPosition, + UINT uFlags); + +extern(Windows) export BOOL SetMenuItemBitmaps( + HMENU hMenu, + UINT uPosition, + UINT uFlags, + HBITMAP hBitmapUnchecked, + HBITMAP hBitmapChecked); + +extern(Windows) export LONG GetMenuCheckMarkDimensions(); + +extern(Windows) export BOOL TrackPopupMenu( + HMENU hMenu, + UINT uFlags, + int x, + int y, + int nReserved, + HWND hWnd, + RECT *prcRect); + +// #if(WINVER >= 0x0400) + +enum : uint { MNC_IGNORE = 0 } +enum : uint { MNC_CLOSE = 1 } +enum : uint { MNC_EXECUTE = 2 } +enum : uint { MNC_SELECT = 3 } + +struct tagTPMPARAMS { + UINT cbSize; + RECT rcExclude; +} +alias tagTPMPARAMS TPMPARAMS; + +alias TPMPARAMS* LPTPMPARAMS; + +extern(Windows) export BOOL TrackPopupMenuEx( + HMENU, + UINT, + int, + int, + HWND, + LPTPMPARAMS); +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) + +enum : uint { MNS_NOCHECK = 0x80000000 } +enum : uint { MNS_MODELESS = 0x40000000 } +enum : uint { MNS_DRAGDROP = 0x20000000 } +enum : uint { MNS_AUTODISMISS = 0x10000000 } +enum : uint { MNS_NOTIFYBYPOS = 0x08000000 } +enum : uint { MNS_CHECKORBMP = 0x04000000 } + +enum : uint { MIM_MAXHEIGHT = 0x00000001 } +enum : uint { MIM_BACKGROUND = 0x00000002 } +enum : uint { MIM_HELPID = 0x00000004 } +enum : uint { MIM_MENUDATA = 0x00000008 } +enum : uint { MIM_STYLE = 0x00000010 } +enum : uint { MIM_APPLYTOSUBMENUS = 0x80000000 } + +struct tagMENUINFO { + DWORD cbSize; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + ULONG_PTR dwMenuData; +} +alias tagMENUINFO MENUINFO; +alias tagMENUINFO* LPMENUINFO; + +alias MENUINFO* LPCMENUINFO; + +extern(Windows) export BOOL GetMenuInfo( + HMENU, + LPMENUINFO); + +extern(Windows) export BOOL SetMenuInfo( + HMENU, + LPCMENUINFO); + +extern(Windows) export BOOL EndMenu(); + +enum : uint { MND_CONTINUE = 0 } +enum : uint { MND_ENDMENU = 1 } + +struct tagMENUGETOBJECTINFO { + DWORD dwFlags; + UINT uPos; + HMENU hmenu; + PVOID riid; + PVOID pvObj; +} +alias tagMENUGETOBJECTINFO MENUGETOBJECTINFO; +alias tagMENUGETOBJECTINFO* PMENUGETOBJECTINFO; + +enum : uint { MNGOF_TOPGAP = 0x00000001 } +enum : uint { MNGOF_BOTTOMGAP = 0x00000002 } + +enum : uint { MNGO_NOINTERFACE = 0x00000000 } +enum : uint { MNGO_NOERROR = 0x00000001 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0400) +enum : uint { MIIM_STATE = 0x00000001 } +enum : uint { MIIM_ID = 0x00000002 } +enum : uint { MIIM_SUBMENU = 0x00000004 } +enum : uint { MIIM_CHECKMARKS = 0x00000008 } +enum : uint { MIIM_TYPE = 0x00000010 } +enum : uint { MIIM_DATA = 0x00000020 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { MIIM_STRING = 0x00000040 } +enum : uint { MIIM_BITMAP = 0x00000080 } +enum : uint { MIIM_FTYPE = 0x00000100 } + +const HBITMAP HBMMENU_CALLBACK = cast(HBITMAP)-1; +const HBITMAP HBMMENU_SYSTEM = cast(HBITMAP)1; +const HBITMAP HBMMENU_MBAR_RESTORE = cast(HBITMAP)2; +const HBITMAP HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3; +const HBITMAP HBMMENU_MBAR_CLOSE = cast(HBITMAP)5; +const HBITMAP HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6; +const HBITMAP HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7; +const HBITMAP HBMMENU_POPUP_CLOSE = cast(HBITMAP)8; +const HBITMAP HBMMENU_POPUP_RESTORE = cast(HBITMAP)9; +const HBITMAP HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10; +const HBITMAP HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0400) +struct tagMENUITEMINFOA { + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPSTR dwTypeData; + UINT cch; +// #if(WINVER >= 0x0500) + HBITMAP hbmpItem; +// #endif /* WINVER >= 0x0500 */ +} +alias tagMENUITEMINFOA MENUITEMINFOA; +alias tagMENUITEMINFOA* LPMENUITEMINFOA; + +struct tagMENUITEMINFOW { + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPWSTR dwTypeData; + UINT cch; +// #if(WINVER >= 0x0500) + HBITMAP hbmpItem; +// #endif /* WINVER >= 0x0500 */ +} +alias tagMENUITEMINFOW MENUITEMINFOW; +alias tagMENUITEMINFOW* LPMENUITEMINFOW; + +// #ifdef UNICODE +// ... +// #else +alias MENUITEMINFOA MENUITEMINFO; +alias LPMENUITEMINFOA LPMENUITEMINFO; +// #endif // UNICODE +alias MENUITEMINFOA* LPCMENUITEMINFOA; +alias MENUITEMINFOW* LPCMENUITEMINFOW; +// #ifdef UNICODE +// ... +// #else +alias LPCMENUITEMINFOA LPCMENUITEMINFO; +// #endif // UNICODE + +extern(Windows) export BOOL InsertMenuItemA( + HMENU, + UINT, + BOOL, + LPCMENUITEMINFOA); +extern(Windows) export BOOL InsertMenuItemW( + HMENU, + UINT, + BOOL, + LPCMENUITEMINFOW); +// #ifdef UNICODE +// #... +// #else +alias InsertMenuItemA InsertMenuItem; +// #endif // !UNICODE + +extern(Windows) export BOOL GetMenuItemInfoA( + HMENU, + UINT, + BOOL, + LPMENUITEMINFOA); +extern(Windows) export BOOL GetMenuItemInfoW( + HMENU, + UINT, + BOOL, + LPMENUITEMINFOW); +// #ifdef UNICODE +// #... +// #else +alias GetMenuItemInfoA GetMenuItemInfo; +// #endif // !UNICODE + +extern(Windows) export BOOL SetMenuItemInfoA( + HMENU, + UINT, + BOOL, + LPCMENUITEMINFOA); +extern(Windows) export BOOL SetMenuItemInfoW( + HMENU, + UINT, + BOOL, + LPCMENUITEMINFOW); +// #ifdef UNICODE +// #... +// #else +alias SetMenuItemInfoA SetMenuItemInfo; +// #endif // !UNICODE + +enum : uint { GMDI_USEDISABLED = 0x0001 } +enum : uint { GMDI_GOINTOPOPUPS = 0x0002 } + +extern(Windows) export UINT GetMenuDefaultItem(HMENU hMenu, UINT fByPos, UINT gmdiFlags); +extern(Windows) export BOOL SetMenuDefaultItem(HMENU hMenu, UINT uItem, UINT fByPos); + +extern(Windows) export BOOL GetMenuItemRect(HWND hWnd, HMENU hMenu, UINT uItem, LPRECT lprcItem); +extern(Windows) export int MenuItemFromPoint(HWND hWnd, HMENU hMenu, POINT ptScreen); +// #endif /* WINVER >= 0x0400 */ + +enum : uint { TPM_LEFTBUTTON = 0x0000 } +enum : uint { TPM_RIGHTBUTTON = 0x0002 } +enum : uint { TPM_LEFTALIGN = 0x0000 } +enum : uint { TPM_CENTERALIGN = 0x0004 } +enum : uint { TPM_RIGHTALIGN = 0x0008 } +// #if(WINVER >= 0x0400) +enum : uint { TPM_TOPALIGN = 0x0000 } +enum : uint { TPM_VCENTERALIGN = 0x0010 } +enum : uint { TPM_BOTTOMALIGN = 0x0020 } + +enum : uint { TPM_HORIZONTAL = 0x0000 } +enum : uint { TPM_VERTICAL = 0x0040 } +enum : uint { TPM_NONOTIFY = 0x0080 } +enum : uint { TPM_RETURNCMD = 0x0100 } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) +enum : uint { TPM_RECURSE = 0x0001 } +enum : uint { TPM_HORPOSANIMATION = 0x0400 } +enum : uint { TPM_HORNEGANIMATION = 0x0800 } +enum : uint { TPM_VERPOSANIMATION = 0x1000 } +enum : uint { TPM_VERNEGANIMATION = 0x2000 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { TPM_NOANIMATION = 0x4000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { TPM_LAYOUTRTL = 0x8000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ +// #endif /* WINVER >= 0x0500 */ + +// #endif /* !NOMENUS */ + +// #if(WINVER >= 0x0400) + +struct tagDROPSTRUCT { + HWND hwndSource; + HWND hwndSink; + DWORD wFmt; + ULONG_PTR dwData; + POINT ptDrop; + DWORD dwControlData; +} +alias tagDROPSTRUCT DROPSTRUCT; +alias tagDROPSTRUCT* PDROPSTRUCT; +alias tagDROPSTRUCT* LPDROPSTRUCT; + +enum : uint { DOF_EXECUTABLE = 0x8001 } +enum : uint { DOF_DOCUMENT = 0x8002 } +enum : uint { DOF_DIRECTORY = 0x8003 } +enum : uint { DOF_MULTIPLE = 0x8004 } +enum : uint { DOF_PROGMAN = 0x0001 } +enum : uint { DOF_SHELLDATA = 0x0002 } + +enum : uint { DO_DROPFILE = 0x454C4946 } +enum : uint { DO_PRINTFILE = 0x544E5250 } + +extern(Windows) export DWORD DragObject( + HWND, + HWND, + UINT, + ULONG_PTR, + HCURSOR); + +extern(Windows) export BOOL DragDetect( + HWND, + POINT); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL DrawIcon( + HDC hDC, + int X, + int Y, + HICON hIcon); + +// #ifndef NODRAWTEXT + +enum : uint { DT_TOP = 0x00000000 } +enum : uint { DT_LEFT = 0x00000000 } +enum : uint { DT_CENTER = 0x00000001 } +enum : uint { DT_RIGHT = 0x00000002 } +enum : uint { DT_VCENTER = 0x00000004 } +enum : uint { DT_BOTTOM = 0x00000008 } +enum : uint { DT_WORDBREAK = 0x00000010 } +enum : uint { DT_SINGLELINE = 0x00000020 } +enum : uint { DT_EXPANDTABS = 0x00000040 } +enum : uint { DT_TABSTOP = 0x00000080 } +enum : uint { DT_NOCLIP = 0x00000100 } +enum : uint { DT_EXTERNALLEADING = 0x00000200 } +enum : uint { DT_CALCRECT = 0x00000400 } +enum : uint { DT_NOPREFIX = 0x00000800 } +enum : uint { DT_INTERNAL = 0x00001000 } + +// #if(WINVER >= 0x0400) +enum : uint { DT_EDITCONTROL = 0x00002000 } +enum : uint { DT_PATH_ELLIPSIS = 0x00004000 } +enum : uint { DT_END_ELLIPSIS = 0x00008000 } +enum : uint { DT_MODIFYSTRING = 0x00010000 } +enum : uint { DT_RTLREADING = 0x00020000 } +enum : uint { DT_WORD_ELLIPSIS = 0x00040000 } +// #if(WINVER >= 0x0500) +enum : uint { DT_NOFULLWIDTHCHARBREAK = 0x00080000 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { DT_HIDEPREFIX = 0x00100000 } +enum : uint { DT_PREFIXONLY = 0x00200000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #endif /* WINVER >= 0x0500 */ + +struct tagDRAWTEXTPARAMS { + UINT cbSize; + int iTabLength; + int iLeftMargin; + int iRightMargin; + UINT uiLengthDrawn; +} +alias tagDRAWTEXTPARAMS DRAWTEXTPARAMS; +alias tagDRAWTEXTPARAMS* LPDRAWTEXTPARAMS; + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int DrawTextA( + HDC hDC, + LPCSTR lpString, + int nCount, + LPRECT lpRect, + UINT uFormat); +extern(Windows) export int DrawTextW( + HDC hDC, + LPCWSTR lpString, + int nCount, + LPRECT lpRect, + UINT uFormat); +// #ifdef UNICODE +// #... +// #else +alias DrawTextA DrawText; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export int DrawTextExA( + HDC, + LPSTR, + int, + LPRECT, + UINT, + LPDRAWTEXTPARAMS); +extern(Windows) export int DrawTextExW( + HDC, + LPWSTR, + int, + LPRECT, + UINT, + LPDRAWTEXTPARAMS); +// #ifdef UNICODE +// #... +// #else +alias DrawTextExA DrawTextEx; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NODRAWTEXT */ + +extern(Windows) export BOOL GrayStringA( + HDC hDC, + HBRUSH hBrush, + GRAYSTRINGPROC lpOutputFunc, + LPARAM lpData, + int nCount, + int X, + int Y, + int nWidth, + int nHeight); +extern(Windows) export BOOL GrayStringW( + HDC hDC, + HBRUSH hBrush, + GRAYSTRINGPROC lpOutputFunc, + LPARAM lpData, + int nCount, + int X, + int Y, + int nWidth, + int nHeight); +// #ifdef UNICODE +// #... +// #else +alias GrayStringA GrayString; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) + +enum : uint { DST_COMPLEX = 0x0000 } +enum : uint { DST_TEXT = 0x0001 } +enum : uint { DST_PREFIXTEXT = 0x0002 } +enum : uint { DST_ICON = 0x0003 } +enum : uint { DST_BITMAP = 0x0004 } + +enum : uint { DSS_NORMAL = 0x0000 } +enum : uint { DSS_UNION = 0x0010 } +enum : uint { DSS_DISABLED = 0x0020 } +enum : uint { DSS_MONO = 0x0080 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { DSS_HIDEPREFIX = 0x0200 } +enum : uint { DSS_PREFIXONLY = 0x0400 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +enum : uint { DSS_RIGHT = 0x8000 } + +extern(Windows) export BOOL DrawStateA( + HDC, + HBRUSH, + DRAWSTATEPROC, + LPARAM, + WPARAM, + int, + int, + int, + int, + UINT); +extern(Windows) export BOOL DrawStateW( + HDC, + HBRUSH, + DRAWSTATEPROC, + LPARAM, + WPARAM, + int, + int, + int, + int, + UINT); +// #ifdef UNICODE +// #... +// #else +alias DrawStateA DrawState; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export LONG TabbedTextOutA( + HDC hDC, + int X, + int Y, + LPCSTR lpString, + int nCount, + int nTabPositions, + INT *lpnTabStopPositions, + int nTabOrigin); +extern(Windows) export LONG TabbedTextOutW( + HDC hDC, + int X, + int Y, + LPCWSTR lpString, + int nCount, + int nTabPositions, + INT *lpnTabStopPositions, + int nTabOrigin); +// #ifdef UNICODE +// #... +// #else +alias TabbedTextOutA TabbedTextOut; +// #endif // !UNICODE + +extern(Windows) export DWORD GetTabbedTextExtentA( + HDC hDC, + LPCSTR lpString, + int nCount, + int nTabPositions, + INT *lpnTabStopPositions); +extern(Windows) export DWORD GetTabbedTextExtentW( + HDC hDC, + LPCWSTR lpString, + int nCount, + int nTabPositions, + INT *lpnTabStopPositions); +// #ifdef UNICODE +// #... +// #else +alias GetTabbedTextExtentA GetTabbedTextExtent; +// #endif // !UNICODE + +extern(Windows) export BOOL UpdateWindow( + HWND hWnd); + +extern(Windows) export HWND SetActiveWindow( + HWND hWnd); + +extern(Windows) export HWND GetForegroundWindow(); + +// #if(WINVER >= 0x0400) +extern(Windows) export BOOL PaintDesktop( + HDC hdc); + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL SetForegroundWindow( + HWND hWnd); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AllowSetForegroundWindow( + DWORD dwProcessId); + +enum : DWORD { ASFW_ANY = cast(DWORD)-1 } + +extern(Windows) export BOOL LockSetForegroundWindow( + UINT uLockCode); + +enum : uint { LSFW_LOCK = 1 } +enum : uint { LSFW_UNLOCK = 2 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export HWND WindowFromDC( + HDC hDC); + +extern(Windows) export HDC GetDC( + HWND hWnd); + +extern(Windows) export HDC GetDCEx( + HWND hWnd, + HRGN hrgnClip, + DWORD flags); + +enum : uint { DCX_WINDOW = 0x00000001 } +enum : uint { DCX_CACHE = 0x00000002 } +enum : uint { DCX_NORESETATTRS = 0x00000004 } +enum : uint { DCX_CLIPCHILDREN = 0x00000008 } +enum : uint { DCX_CLIPSIBLINGS = 0x00000010 } +enum : uint { DCX_PARENTCLIP = 0x00000020 } +enum : uint { DCX_EXCLUDERGN = 0x00000040 } +enum : uint { DCX_INTERSECTRGN = 0x00000080 } +enum : uint { DCX_EXCLUDEUPDATE = 0x00000100 } +enum : uint { DCX_INTERSECTUPDATE = 0x00000200 } +enum : uint { DCX_LOCKWINDOWUPDATE = 0x00000400 } + +enum : uint { DCX_VALIDATE = 0x00200000 } + +extern(Windows) export HDC GetWindowDC( + HWND hWnd); + +extern(Windows) export int ReleaseDC( + HWND hWnd, + HDC hDC); + +extern(Windows) export HDC BeginPaint( + HWND hWnd, + LPPAINTSTRUCT lpPaint); + +extern(Windows) export BOOL EndPaint( + HWND hWnd, + PAINTSTRUCT *lpPaint); + +extern(Windows) export BOOL GetUpdateRect( + HWND hWnd, + LPRECT lpRect, + BOOL bErase); + +extern(Windows) export int GetUpdateRgn( + HWND hWnd, + HRGN hRgn, + BOOL bErase); + +extern(Windows) export int SetWindowRgn( + HWND hWnd, + HRGN hRgn, + BOOL bRedraw); + +extern(Windows) export int GetWindowRgn( + HWND hWnd, + HRGN hRgn); + +// #if(_WIN32_WINNT >= 0x0501) + +extern(Windows) export int GetWindowRgnBox( + HWND hWnd, + LPRECT lprc); + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export int ExcludeUpdateRgn( + HDC hDC, + HWND hWnd); + +extern(Windows) export BOOL InvalidateRect( + HWND hWnd, + RECT *lpRect, + BOOL bErase); + +extern(Windows) export BOOL ValidateRect( + HWND hWnd, + RECT *lpRect); + +extern(Windows) export BOOL InvalidateRgn( + HWND hWnd, + HRGN hRgn, + BOOL bErase); + +extern(Windows) export BOOL ValidateRgn( + HWND hWnd, + HRGN hRgn); + +extern(Windows) export BOOL RedrawWindow( + HWND hWnd, + RECT *lprcUpdate, + HRGN hrgnUpdate, + UINT flags); + +enum : uint { RDW_INVALIDATE = 0x0001 } +enum : uint { RDW_INTERNALPAINT = 0x0002 } +enum : uint { RDW_ERASE = 0x0004 } + +enum : uint { RDW_VALIDATE = 0x0008 } +enum : uint { RDW_NOINTERNALPAINT = 0x0010 } +enum : uint { RDW_NOERASE = 0x0020 } + +enum : uint { RDW_NOCHILDREN = 0x0040 } +enum : uint { RDW_ALLCHILDREN = 0x0080 } + +enum : uint { RDW_UPDATENOW = 0x0100 } +enum : uint { RDW_ERASENOW = 0x0200 } + +enum : uint { RDW_FRAME = 0x0400 } +enum : uint { RDW_NOFRAME = 0x0800 } + +extern(Windows) export BOOL LockWindowUpdate( + HWND hWndLock); + +extern(Windows) export BOOL ScrollWindow( + HWND hWnd, + int XAmount, + int YAmount, + RECT *lpRect, + RECT *lpClipRect); + +extern(Windows) export BOOL ScrollDC( + HDC hDC, + int dx, + int dy, + RECT *lprcScroll, + RECT *lprcClip, + HRGN hrgnUpdate, + LPRECT lprcUpdate); + +extern(Windows) export int ScrollWindowEx( + HWND hWnd, + int dx, + int dy, + RECT *prcScroll, + RECT *prcClip, + HRGN hrgnUpdate, + LPRECT prcUpdate, + UINT flags); + +enum : uint { SW_SCROLLCHILDREN = 0x0001 } +enum : uint { SW_INVALIDATE = 0x0002 } +enum : uint { SW_ERASE = 0x0004 } +// #if(WINVER >= 0x0500) +enum : uint { SW_SMOOTHSCROLL = 0x0010 } +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NOSCROLL + +extern(Windows) export int SetScrollPos( + HWND hWnd, + int nBar, + int nPos, + BOOL bRedraw); + +extern(Windows) export int GetScrollPos( + HWND hWnd, + int nBar); + +extern(Windows) export BOOL SetScrollRange( + HWND hWnd, + int nBar, + int nMinPos, + int nMaxPos, + BOOL bRedraw); + +extern(Windows) export BOOL GetScrollRange( + HWND hWnd, + int nBar, + LPINT lpMinPos, + LPINT lpMaxPos); + +extern(Windows) export BOOL ShowScrollBar( + HWND hWnd, + int wBar, + BOOL bShow); + +extern(Windows) export BOOL EnableScrollBar( + HWND hWnd, + UINT wSBflags, + UINT wArrows); + +enum : uint { ESB_ENABLE_BOTH = 0x0000 } +enum : uint { ESB_DISABLE_BOTH = 0x0003 } + +enum : uint { ESB_DISABLE_LEFT = 0x0001 } +enum : uint { ESB_DISABLE_RIGHT = 0x0002 } + +enum : uint { ESB_DISABLE_UP = 0x0001 } +enum : uint { ESB_DISABLE_DOWN = 0x0002 } + +alias ESB_DISABLE_LEFT ESB_DISABLE_LTUP; +alias ESB_DISABLE_RIGHT ESB_DISABLE_RTDN; + +// #endif /* !NOSCROLL */ + +extern(Windows) export BOOL SetPropA( + HWND hWnd, + LPCSTR lpString, + HANDLE hData); +extern(Windows) export BOOL SetPropW( + HWND hWnd, + LPCWSTR lpString, + HANDLE hData); +// #ifdef UNICODE +// #... +// #else +alias SetPropA SetProp; +// #endif // !UNICODE + +extern(Windows) export HANDLE GetPropA( + HWND hWnd, + LPCSTR lpString); +extern(Windows) export HANDLE GetPropW( + HWND hWnd, + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias GetPropA GetProp; +// #endif // !UNICODE + +extern(Windows) export HANDLE RemovePropA( + HWND hWnd, + LPCSTR lpString); +extern(Windows) export HANDLE RemovePropW( + HWND hWnd, + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias RemovePropA RemoveProp; +// #endif // !UNICODE + +extern(Windows) export int EnumPropsExA( + HWND hWnd, + PROPENUMPROCEXA lpEnumFunc, + LPARAM lParam); +extern(Windows) export int EnumPropsExW( + HWND hWnd, + PROPENUMPROCEXW lpEnumFunc, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias EnumPropsExA EnumPropsEx; +// #endif // !UNICODE + +extern(Windows) export int EnumPropsA( + HWND hWnd, + PROPENUMPROCA lpEnumFunc); +extern(Windows) export int EnumPropsW( + HWND hWnd, + PROPENUMPROCW lpEnumFunc); +// #ifdef UNICODE +// #... +// #else +alias EnumPropsA EnumProps; +// #endif // !UNICODE + +extern(Windows) export BOOL SetWindowTextA( + HWND hWnd, + LPCSTR lpString); +extern(Windows) export BOOL SetWindowTextW( + HWND hWnd, + LPCWSTR lpString); +// #ifdef UNICODE +// #... +// #else +alias SetWindowTextA SetWindowText; +// #endif // !UNICODE + +extern(Windows) export int GetWindowTextA( + HWND hWnd, + LPSTR lpString, + int nMaxCount); +extern(Windows) export int GetWindowTextW( + HWND hWnd, + LPWSTR lpString, + int nMaxCount); +// #ifdef UNICODE +// #... +// #else +alias GetWindowTextA GetWindowText; +// #endif // !UNICODE + +extern(Windows) export int GetWindowTextLengthA( + HWND hWnd); +extern(Windows) export int GetWindowTextLengthW( + HWND hWnd); +// #ifdef UNICODE +// #... +// #else +alias GetWindowTextLengthA GetWindowTextLength; +// #endif // !UNICODE + +extern(Windows) export BOOL GetClientRect( + HWND hWnd, + LPRECT lpRect); + +extern(Windows) export BOOL GetWindowRect( + HWND hWnd, + LPRECT lpRect); + +extern(Windows) export BOOL AdjustWindowRect( + LPRECT lpRect, + DWORD dwStyle, + BOOL bMenu); + +extern(Windows) export BOOL AdjustWindowRectEx( + LPRECT lpRect, + DWORD dwStyle, + BOOL bMenu, + DWORD dwExStyle); + +// #if(WINVER >= 0x0400) +enum : uint { HELPINFO_WINDOW = 0x0001 } +enum : uint { HELPINFO_MENUITEM = 0x0002 } +struct tagHELPINFO { + UINT cbSize; + int iContextType; + int iCtrlId; + HANDLE hItemHandle; + DWORD_PTR dwContextId; + POINT MousePos; +} +alias tagHELPINFO HELPINFO; +alias tagHELPINFO* LPHELPINFO; + +extern(Windows) export BOOL SetWindowContextHelpId( + HWND, + DWORD); + +extern(Windows) export DWORD GetWindowContextHelpId( + HWND); + +extern(Windows) export BOOL SetMenuContextHelpId( + HMENU, + DWORD); + +extern(Windows) export DWORD GetMenuContextHelpId( + HMENU); + +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOMB + +enum : uint { MB_OK = 0x00000000 } +enum : uint { MB_OKCANCEL = 0x00000001 } +enum : uint { MB_ABORTRETRYIGNORE = 0x00000002 } +enum : uint { MB_YESNOCANCEL = 0x00000003 } +enum : uint { MB_YESNO = 0x00000004 } +enum : uint { MB_RETRYCANCEL = 0x00000005 } +// #if(WINVER >= 0x0500) +enum : uint { MB_CANCELTRYCONTINUE = 0x00000006 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { MB_ICONHAND = 0x00000010 } +enum : uint { MB_ICONQUESTION = 0x00000020 } +enum : uint { MB_ICONEXCLAMATION = 0x00000030 } +enum : uint { MB_ICONASTERISK = 0x00000040 } + +// #if(WINVER >= 0x0400) +enum : uint { MB_USERICON = 0x00000080 } +alias MB_ICONEXCLAMATION MB_ICONWARNING; +alias MB_ICONHAND MB_ICONERROR; +// #endif /* WINVER >= 0x0400 */ + +alias MB_ICONASTERISK MB_ICONINFORMATION; +alias MB_ICONHAND MB_ICONSTOP; + +enum : uint { MB_DEFBUTTON1 = 0x00000000 } +enum : uint { MB_DEFBUTTON2 = 0x00000100 } +enum : uint { MB_DEFBUTTON3 = 0x00000200 } +// #if(WINVER >= 0x0400) +enum : uint { MB_DEFBUTTON4 = 0x00000300 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MB_APPLMODAL = 0x00000000 } +enum : uint { MB_SYSTEMMODAL = 0x00001000 } +enum : uint { MB_TASKMODAL = 0x00002000 } +// #if(WINVER >= 0x0400) +enum : uint { MB_HELP = 0x00004000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MB_NOFOCUS = 0x00008000 } +enum : uint { MB_SETFOREGROUND = 0x00010000 } +enum : uint { MB_DEFAULT_DESKTOP_ONLY = 0x00020000 } + +// #if(WINVER >= 0x0400) +enum : uint { MB_TOPMOST = 0x00040000 } +enum : uint { MB_RIGHT = 0x00080000 } +enum : uint { MB_RTLREADING = 0x00100000 } + +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _WIN32_WINNT +// #if (_WIN32_WINNT >= 0x0400) +enum : uint { MB_SERVICE_NOTIFICATION = 0x00200000 } +// #else +// #... +// #endif +enum : uint { MB_SERVICE_NOTIFICATION_NT3X = 0x00040000 } +// #endif + +enum : uint { MB_TYPEMASK = 0x0000000F } +enum : uint { MB_ICONMASK = 0x000000F0 } +enum : uint { MB_DEFMASK = 0x00000F00 } +enum : uint { MB_MODEMASK = 0x00003000 } +enum : uint { MB_MISCMASK = 0x0000C000 } + +extern(Windows) export int MessageBoxA( + HWND hWnd, + LPCSTR lpText, + LPCSTR lpCaption, + UINT uType); +extern(Windows) export int MessageBoxW( + HWND hWnd, + LPCWSTR lpText, + LPCWSTR lpCaption, + UINT uType); +// #ifdef UNICODE +// #... +// #else +alias MessageBoxA MessageBox; +// #endif // !UNICODE + +extern(Windows) export int MessageBoxExA( + HWND hWnd, + LPCSTR lpText, + LPCSTR lpCaption, + UINT uType, + WORD wLanguageId); +extern(Windows) export int MessageBoxExW( + HWND hWnd, + LPCWSTR lpText, + LPCWSTR lpCaption, + UINT uType, + WORD wLanguageId); +// #ifdef UNICODE +// #... +// #else +alias MessageBoxExA MessageBoxEx; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) + +extern(Windows) alias void function(LPHELPINFO lpHelpInfo) MSGBOXCALLBACK; + +struct tagMSGBOXPARAMSA { + UINT cbSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpszText; + LPCSTR lpszCaption; + DWORD dwStyle; + LPCSTR lpszIcon; + DWORD_PTR dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias tagMSGBOXPARAMSA MSGBOXPARAMSA; +alias tagMSGBOXPARAMSA* PMSGBOXPARAMSA; +alias tagMSGBOXPARAMSA* LPMSGBOXPARAMSA; + +struct tagMSGBOXPARAMSW { + UINT cbSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpszText; + LPCWSTR lpszCaption; + DWORD dwStyle; + LPCWSTR lpszIcon; + DWORD_PTR dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias tagMSGBOXPARAMSW MSGBOXPARAMSW; +alias tagMSGBOXPARAMSW* PMSGBOXPARAMSW; +alias tagMSGBOXPARAMSW* LPMSGBOXPARAMSW; + +// #ifdef UNICODE +// ... +// #else +alias MSGBOXPARAMSA MSGBOXPARAMS; +alias PMSGBOXPARAMSA PMSGBOXPARAMS; +alias LPMSGBOXPARAMSA LPMSGBOXPARAMS; +// #endif // UNICODE + +extern(Windows) export int MessageBoxIndirectA( + MSGBOXPARAMSA *); +extern(Windows) export int MessageBoxIndirectW( + MSGBOXPARAMSW *); +// #ifdef UNICODE +// #... +// #else +alias MessageBoxIndirectA MessageBoxIndirect; +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL MessageBeep( + UINT uType); + +// #endif /* !NOMB */ + +extern(Windows) export int ShowCursor( + BOOL bShow); + +extern(Windows) export BOOL SetCursorPos( + int X, + int Y); + +extern(Windows) export HCURSOR SetCursor( + HCURSOR hCursor); + +extern(Windows) export BOOL GetCursorPos( + LPPOINT lpPoint); + +extern(Windows) export BOOL ClipCursor( + RECT *lpRect); + +extern(Windows) export BOOL GetClipCursor( + LPRECT lpRect); + +extern(Windows) export HCURSOR GetCursor(); + +extern(Windows) export BOOL CreateCaret( + HWND hWnd, + HBITMAP hBitmap, + int nWidth, + int nHeight); + +extern(Windows) export UINT GetCaretBlinkTime(); + +extern(Windows) export BOOL SetCaretBlinkTime( + UINT uMSeconds); + +extern(Windows) export BOOL DestroyCaret(); + +extern(Windows) export BOOL HideCaret( + HWND hWnd); + +extern(Windows) export BOOL ShowCaret( + HWND hWnd); + +extern(Windows) export BOOL SetCaretPos( + int X, + int Y); + +extern(Windows) export BOOL GetCaretPos( + LPPOINT lpPoint); + +extern(Windows) export BOOL ClientToScreen( + HWND hWnd, + LPPOINT lpPoint); + +extern(Windows) export BOOL ScreenToClient( + HWND hWnd, + LPPOINT lpPoint); + +extern(Windows) export int MapWindowPoints( + HWND hWndFrom, + HWND hWndTo, + LPPOINT lpPoints, + UINT cPoints); + +extern(Windows) export HWND WindowFromPoint( + POINT Point); + +extern(Windows) export HWND ChildWindowFromPoint( + HWND hWndParent, + POINT Point); + +// #if(WINVER >= 0x0400) +enum : uint { CWP_ALL = 0x0000 } +enum : uint { CWP_SKIPINVISIBLE = 0x0001 } +enum : uint { CWP_SKIPDISABLED = 0x0002 } +enum : uint { CWP_SKIPTRANSPARENT = 0x0004 } + +extern(Windows) export HWND ChildWindowFromPointEx(HWND, POINT, UINT); +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOCOLOR + +enum : uint { CTLCOLOR_MSGBOX = 0 } +enum : uint { CTLCOLOR_EDIT = 1 } +enum : uint { CTLCOLOR_LISTBOX = 2 } +enum : uint { CTLCOLOR_BTN = 3 } +enum : uint { CTLCOLOR_DLG = 4 } +enum : uint { CTLCOLOR_SCROLLBAR = 5 } +enum : uint { CTLCOLOR_STATIC = 6 } +enum : uint { CTLCOLOR_MAX = 7 } + +enum : uint { COLOR_SCROLLBAR = 0 } +enum : uint { COLOR_BACKGROUND = 1 } +enum : uint { COLOR_ACTIVECAPTION = 2 } +enum : uint { COLOR_INACTIVECAPTION = 3 } +enum : uint { COLOR_MENU = 4 } +enum : uint { COLOR_WINDOW = 5 } +enum : uint { COLOR_WINDOWFRAME = 6 } +enum : uint { COLOR_MENUTEXT = 7 } +enum : uint { COLOR_WINDOWTEXT = 8 } +enum : uint { COLOR_CAPTIONTEXT = 9 } +enum : uint { COLOR_ACTIVEBORDER = 10 } +enum : uint { COLOR_INACTIVEBORDER = 11 } +enum : uint { COLOR_APPWORKSPACE = 12 } +enum : uint { COLOR_HIGHLIGHT = 13 } +enum : uint { COLOR_HIGHLIGHTTEXT = 14 } +enum : uint { COLOR_BTNFACE = 15 } +enum : uint { COLOR_BTNSHADOW = 16 } +enum : uint { COLOR_GRAYTEXT = 17 } +enum : uint { COLOR_BTNTEXT = 18 } +enum : uint { COLOR_INACTIVECAPTIONTEXT = 19 } +enum : uint { COLOR_BTNHIGHLIGHT = 20 } + +// #if(WINVER >= 0x0400) +enum : uint { COLOR_3DDKSHADOW = 21 } +enum : uint { COLOR_3DLIGHT = 22 } +enum : uint { COLOR_INFOTEXT = 23 } +enum : uint { COLOR_INFOBK = 24 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { COLOR_HOTLIGHT = 26 } +enum : uint { COLOR_GRADIENTACTIVECAPTION = 27 } +enum : uint { COLOR_GRADIENTINACTIVECAPTION = 28 } +// #if(WINVER >= 0x0501) +enum : uint { COLOR_MENUHILIGHT = 29 } +enum : uint { COLOR_MENUBAR = 30 } +// #endif /* WINVER >= 0x0501 */ +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0400) +alias COLOR_BACKGROUND COLOR_DESKTOP; +alias COLOR_BTNFACE COLOR_3DFACE; +alias COLOR_BTNSHADOW COLOR_3DSHADOW; +alias COLOR_BTNHIGHLIGHT COLOR_3DHIGHLIGHT; +alias COLOR_BTNHIGHLIGHT COLOR_3DHILIGHT; +alias COLOR_BTNHIGHLIGHT COLOR_BTNHILIGHT; +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export DWORD GetSysColor( + int nIndex); + +// #if(WINVER >= 0x0400) +extern(Windows) export HBRUSH GetSysColorBrush( + int nIndex); + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL SetSysColors( + int cElements, + INT * lpaElements, + COLORREF * lpaRgbValues); + +// #endif /* !NOCOLOR */ + +extern(Windows) export BOOL DrawFocusRect( + HDC hDC, + RECT * lprc); + +extern(Windows) export int FillRect( + HDC hDC, + RECT *lprc, + HBRUSH hbr); + +extern(Windows) export int FrameRect( + HDC hDC, + RECT *lprc, + HBRUSH hbr); + +extern(Windows) export BOOL InvertRect( + HDC hDC, + RECT *lprc); + +extern(Windows) export BOOL SetRect( + LPRECT lprc, + int xLeft, + int yTop, + int xRight, + int yBottom); + +extern(Windows) export BOOL SetRectEmpty( + LPRECT lprc); + +extern(Windows) export BOOL CopyRect( + LPRECT lprcDst, + RECT *lprcSrc); + +extern(Windows) export BOOL InflateRect( + LPRECT lprc, + int dx, + int dy); + +extern(Windows) export BOOL IntersectRect( + LPRECT lprcDst, + RECT *lprcSrc1, + RECT *lprcSrc2); + +extern(Windows) export BOOL UnionRect( + LPRECT lprcDst, + RECT *lprcSrc1, + RECT *lprcSrc2); + +extern(Windows) export BOOL SubtractRect( + LPRECT lprcDst, + RECT *lprcSrc1, + RECT *lprcSrc2); + +extern(Windows) export BOOL OffsetRect( + LPRECT lprc, + int dx, + int dy); + +extern(Windows) export BOOL IsRectEmpty( + RECT *lprc); + +extern(Windows) export BOOL EqualRect( + RECT *lprc1, + RECT *lprc2); + +extern(Windows) export BOOL PtInRect( + RECT *lprc, + POINT pt); + +// #ifndef NOWINOFFSETS + +extern(Windows) export WORD GetWindowWord( + HWND hWnd, + int nIndex); + +extern(Windows) export WORD SetWindowWord( + HWND hWnd, + int nIndex, + WORD wNewWord); + +extern(Windows) export LONG GetWindowLongA( + HWND hWnd, + int nIndex); +extern(Windows) export LONG GetWindowLongW( + HWND hWnd, + int nIndex); +// #ifdef UNICODE +// #... +// #else +alias GetWindowLongA GetWindowLong; +// #endif // !UNICODE + +extern(Windows) export LONG SetWindowLongA( + HWND hWnd, + int nIndex, + LONG dwNewLong); +extern(Windows) export LONG SetWindowLongW( + HWND hWnd, + int nIndex, + LONG dwNewLong); +// #ifdef UNICODE +// #... +// #else +alias SetWindowLongA SetWindowLong; +// #endif // !UNICODE + +// #ifdef _WIN64 + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #else /* _WIN64 */ + +alias GetWindowLongA GetWindowLongPtrA; +alias GetWindowLongW GetWindowLongPtrW; +// #ifdef UNICODE +// #... +// #else +alias GetWindowLongPtrA GetWindowLongPtr; +// #endif // !UNICODE + +alias SetWindowLongA SetWindowLongPtrA; +alias SetWindowLongW SetWindowLongPtrW; +// #ifdef UNICODE +// #... +// #else +alias SetWindowLongPtrA SetWindowLongPtr; +// #endif // !UNICODE + +// #endif /* _WIN64 */ + +extern(Windows) export WORD GetClassWord( + HWND hWnd, + int nIndex); + +extern(Windows) export WORD SetClassWord( + HWND hWnd, + int nIndex, + WORD wNewWord); + +extern(Windows) export DWORD GetClassLongA( + HWND hWnd, + int nIndex); +extern(Windows) export DWORD GetClassLongW( + HWND hWnd, + int nIndex); +// #ifdef UNICODE +// #... +// #else +alias GetClassLongA GetClassLong; +// #endif // !UNICODE + +extern(Windows) export DWORD SetClassLongA( + HWND hWnd, + int nIndex, + LONG dwNewLong); +extern(Windows) export DWORD SetClassLongW( + HWND hWnd, + int nIndex, + LONG dwNewLong); +// #ifdef UNICODE +// #... +// #else +alias SetClassLongA SetClassLong; +// #endif // !UNICODE + +// #ifdef _WIN64 + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #else /* _WIN64 */ + +alias GetClassLongA GetClassLongPtrA; +alias GetClassLongW GetClassLongPtrW; +// #ifdef UNICODE +// #... +// #else +alias GetClassLongPtrA GetClassLongPtr; +// #endif // !UNICODE + +alias SetClassLongA SetClassLongPtrA; +alias SetClassLongW SetClassLongPtrW; +// #ifdef UNICODE +// #... +// #else +alias SetClassLongPtrA SetClassLongPtr; +// #endif // !UNICODE + +// #endif /* _WIN64 */ + +// #endif /* !NOWINOFFSETS */ + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL GetProcessDefaultLayout( + DWORD *pdwDefaultLayout); + +extern(Windows) export BOOL SetProcessDefaultLayout( + DWORD dwDefaultLayout); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export HWND GetDesktopWindow(); + +extern(Windows) export HWND GetParent( + HWND hWnd); + +extern(Windows) export HWND SetParent( + HWND hWndChild, + HWND hWndNewParent); + +extern(Windows) export BOOL EnumChildWindows( + HWND hWndParent, + WNDENUMPROC lpEnumFunc, + LPARAM lParam); + +extern(Windows) export HWND FindWindowA( + LPCSTR lpClassName, + LPCSTR lpWindowName); +extern(Windows) export HWND FindWindowW( + LPCWSTR lpClassName, + LPCWSTR lpWindowName); +// #ifdef UNICODE +// #... +// #else +alias FindWindowA FindWindow; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR); +extern(Windows) export HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR); +// #ifdef UNICODE +// #... +// #else +alias FindWindowExA FindWindowEx; +// #endif // !UNICODE + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL EnumWindows( + WNDENUMPROC lpEnumFunc, + LPARAM lParam); + +extern(Windows) export BOOL EnumThreadWindows( + DWORD dwThreadId, + WNDENUMPROC lpfn, + LPARAM lParam); + +// #define EnumTaskWindows(hTask, lpfn, lParam) EnumThreadWindows(HandleToUlong(hTask), lpfn, lParam) + +extern(Windows) export int GetClassNameA( + HWND hWnd, + LPSTR lpClassName, + int nMaxCount); +extern(Windows) export int GetClassNameW( + HWND hWnd, + LPWSTR lpClassName, + int nMaxCount); +// #ifdef UNICODE +// #... +// #else +alias GetClassNameA GetClassName; +// #endif // !UNICODE + +extern(Windows) export HWND GetTopWindow( + HWND hWnd); + +// #define GetNextWindow(hWnd, wCmd) GetWindow(hWnd, wCmd) +// #define GetSysModalWindow() (NULL) +// #define SetSysModalWindow(hWnd) (NULL) + +extern(Windows) export DWORD GetWindowThreadProcessId( + HWND hWnd, + LPDWORD lpdwProcessId); + +// #if(_WIN32_WINNT >= 0x0501) +extern(Windows) export BOOL IsGUIThread( + BOOL bConvert); + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #define GetWindowTask(hWnd) ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd, NULL)) + +extern(Windows) export HWND GetLastActivePopup( + HWND hWnd); + +enum : uint { GW_HWNDFIRST = 0 } +enum : uint { GW_HWNDLAST = 1 } +enum : uint { GW_HWNDNEXT = 2 } +enum : uint { GW_HWNDPREV = 3 } +enum : uint { GW_OWNER = 4 } +enum : uint { GW_CHILD = 5 } +// #if(WINVER <= 0x0400) +// #... +// #else +enum : uint { GW_ENABLEDPOPUP = 6 } +enum : uint { GW_MAX = 6 } +// #endif + +extern(Windows) export HWND GetWindow( + HWND hWnd, + UINT uCmd); + +// #ifndef NOWH + +// #ifdef STRICT + +extern(Windows) export HHOOK SetWindowsHookA( + int nFilterType, + HOOKPROC pfnFilterProc); +extern(Windows) export HHOOK SetWindowsHookW( + int nFilterType, + HOOKPROC pfnFilterProc); +// #ifdef UNICODE +// #... +// #else +alias SetWindowsHookA SetWindowsHook; +// #endif // !UNICODE + +// #else /* !STRICT */ + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #endif /* !STRICT */ + +extern(Windows) export BOOL UnhookWindowsHook( + int nCode, + HOOKPROC pfnFilterProc); + +extern(Windows) export HHOOK SetWindowsHookExA( + int idHook, + HOOKPROC lpfn, + HINSTANCE hmod, + DWORD dwThreadId); +extern(Windows) export HHOOK SetWindowsHookExW( + int idHook, + HOOKPROC lpfn, + HINSTANCE hmod, + DWORD dwThreadId); +// #ifdef UNICODE +// #... +// #else +alias SetWindowsHookExA SetWindowsHookEx; +// #endif // !UNICODE + +extern(Windows) export BOOL UnhookWindowsHookEx( + HHOOK hhk); + +extern(Windows) export LRESULT CallNextHookEx( + HHOOK hhk, + int nCode, + WPARAM wParam, + LPARAM lParam); + +// #ifdef STRICT +// #define DefHookProc(nCode, wParam, lParam, phhk) CallNextHookEx(*phhk, nCode, wParam, lParam) +// #else +// #... +// ... +// #endif /* STRICT */ +// #endif /* !NOWH */ + +// #ifndef NOMENUS + +enum : uint { MF_INSERT = 0x00000000 } +enum : uint { MF_CHANGE = 0x00000080 } +enum : uint { MF_APPEND = 0x00000100 } +enum : uint { MF_DELETE = 0x00000200 } +enum : uint { MF_REMOVE = 0x00001000 } + +enum : uint { MF_BYCOMMAND = 0x00000000 } +enum : uint { MF_BYPOSITION = 0x00000400 } + +enum : uint { MF_SEPARATOR = 0x00000800 } + +enum : uint { MF_ENABLED = 0x00000000 } +enum : uint { MF_GRAYED = 0x00000001 } +enum : uint { MF_DISABLED = 0x00000002 } + +enum : uint { MF_UNCHECKED = 0x00000000 } +enum : uint { MF_CHECKED = 0x00000008 } +enum : uint { MF_USECHECKBITMAPS = 0x00000200 } + +enum : uint { MF_STRING = 0x00000000 } +enum : uint { MF_BITMAP = 0x00000004 } +enum : uint { MF_OWNERDRAW = 0x00000100 } + +enum : uint { MF_POPUP = 0x00000010 } +enum : uint { MF_MENUBARBREAK = 0x00000020 } +enum : uint { MF_MENUBREAK = 0x00000040 } + +enum : uint { MF_UNHILITE = 0x00000000 } +enum : uint { MF_HILITE = 0x00000080 } + +// #if(WINVER >= 0x0400) +enum : uint { MF_DEFAULT = 0x00001000 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { MF_SYSMENU = 0x00002000 } +enum : uint { MF_HELP = 0x00004000 } +// #if(WINVER >= 0x0400) +enum : uint { MF_RIGHTJUSTIFY = 0x00004000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MF_MOUSESELECT = 0x00008000 } +// #if(WINVER >= 0x0400) +enum : uint { MF_END = 0x00000080 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) +alias MF_STRING MFT_STRING; +alias MF_BITMAP MFT_BITMAP; +alias MF_MENUBARBREAK MFT_MENUBARBREAK; +alias MF_MENUBREAK MFT_MENUBREAK; +alias MF_OWNERDRAW MFT_OWNERDRAW; +enum : uint { MFT_RADIOCHECK = 0x00000200 } +alias MF_SEPARATOR MFT_SEPARATOR; +enum : uint { MFT_RIGHTORDER = 0x00002000 } +alias MF_RIGHTJUSTIFY MFT_RIGHTJUSTIFY; + +enum : uint { MFS_GRAYED = 0x00000003 } +alias MFS_GRAYED MFS_DISABLED; +alias MF_CHECKED MFS_CHECKED; +alias MF_HILITE MFS_HILITE; +alias MF_ENABLED MFS_ENABLED; +alias MF_UNCHECKED MFS_UNCHECKED; +alias MF_UNHILITE MFS_UNHILITE; +alias MF_DEFAULT MFS_DEFAULT; +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) + +extern(Windows) export BOOL CheckMenuRadioItem( + HMENU, + UINT, + UINT, + UINT, + UINT); +// #endif /* WINVER >= 0x0400 */ + +struct _4 { + WORD versionNumber; + WORD offset; +} +alias _4 MENUITEMTEMPLATEHEADER; +alias _4* PMENUITEMTEMPLATEHEADER; + +struct _5 { + WORD mtOption; + WORD mtID; + WCHAR mtString[1]; +} +alias _5 MENUITEMTEMPLATE; +alias _5* PMENUITEMTEMPLATE; + +// skip #define MF_END 0x00000080L + +// #endif /* !NOMENUS */ + +// #ifndef NOSYSCOMMANDS + +enum : uint { SC_SIZE = 0xF000 } +enum : uint { SC_MOVE = 0xF010 } +enum : uint { SC_MINIMIZE = 0xF020 } +enum : uint { SC_MAXIMIZE = 0xF030 } +enum : uint { SC_NEXTWINDOW = 0xF040 } +enum : uint { SC_PREVWINDOW = 0xF050 } +enum : uint { SC_CLOSE = 0xF060 } +enum : uint { SC_VSCROLL = 0xF070 } +enum : uint { SC_HSCROLL = 0xF080 } +enum : uint { SC_MOUSEMENU = 0xF090 } +enum : uint { SC_KEYMENU = 0xF100 } +enum : uint { SC_ARRANGE = 0xF110 } +enum : uint { SC_RESTORE = 0xF120 } +enum : uint { SC_TASKLIST = 0xF130 } +enum : uint { SC_SCREENSAVE = 0xF140 } +enum : uint { SC_HOTKEY = 0xF150 } +// #if(WINVER >= 0x0400) +enum : uint { SC_DEFAULT = 0xF160 } +enum : uint { SC_MONITORPOWER = 0xF170 } +enum : uint { SC_CONTEXTHELP = 0xF180 } +enum : uint { SC_SEPARATOR = 0xF00F } +// #endif /* WINVER >= 0x0400 */ + +alias SC_MINIMIZE SC_ICON; +alias SC_MAXIMIZE SC_ZOOM; + +// #endif /* !NOSYSCOMMANDS */ + +extern(Windows) export HBITMAP LoadBitmapA( + HINSTANCE hInstance, + LPCSTR lpBitmapName); +extern(Windows) export HBITMAP LoadBitmapW( + HINSTANCE hInstance, + LPCWSTR lpBitmapName); +// #ifdef UNICODE +// #... +// #else +alias LoadBitmapA LoadBitmap; +// #endif // !UNICODE + +extern(Windows) export HCURSOR LoadCursorA( + HINSTANCE hInstance, + LPCSTR lpCursorName); +extern(Windows) export HCURSOR LoadCursorW( + HINSTANCE hInstance, + LPCWSTR lpCursorName); +// #ifdef UNICODE +// #... +// #else +alias LoadCursorA LoadCursor; +// #endif // !UNICODE + +extern(Windows) export HCURSOR LoadCursorFromFileA( + LPCSTR lpFileName); +extern(Windows) export HCURSOR LoadCursorFromFileW( + LPCWSTR lpFileName); +// #ifdef UNICODE +// #... +// #else +alias LoadCursorFromFileA LoadCursorFromFile; +// #endif // !UNICODE + +extern(Windows) export HCURSOR CreateCursor( + HINSTANCE hInst, + int xHotSpot, + int yHotSpot, + int nWidth, + int nHeight, + VOID *pvANDPlane, + VOID *pvXORPlane); + +extern(Windows) export BOOL DestroyCursor( + HCURSOR hCursor); + +// #ifndef _MAC +alias CopyIcon CopyCursor; +// #else +// ... +// #endif + +const LPTSTR IDC_ARROW = cast(LPTSTR)(32512); +const LPTSTR IDC_IBEAM = cast(LPTSTR)(32513); +const LPTSTR IDC_WAIT = cast(LPTSTR)(32514); +const LPTSTR IDC_CROSS = cast(LPTSTR)(32515); +const LPTSTR IDC_UPARROW = cast(LPTSTR)(32516); +const LPTSTR IDC_SIZE = cast(LPTSTR)(32640); +const LPTSTR IDC_ICON = cast(LPTSTR)(32641); +const LPTSTR IDC_SIZENWSE = cast(LPTSTR)(32642); +const LPTSTR IDC_SIZENESW = cast(LPTSTR)(32643); +const LPTSTR IDC_SIZEWE = cast(LPTSTR)(32644); +const LPTSTR IDC_SIZENS = cast(LPTSTR)(32645); +const LPTSTR IDC_SIZEALL = cast(LPTSTR)(32646); +const LPTSTR IDC_NO = cast(LPTSTR)(32648); +// #if(WINVER >= 0x0500) +const LPTSTR IDC_HAND = cast(LPTSTR)(32649); +// #endif /* WINVER >= 0x0500 */ +const LPTSTR IDC_APPSTARTING = cast(LPTSTR)(32650); +// #if(WINVER >= 0x0400) +const LPTSTR IDC_HELP = cast(LPTSTR)(32651); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL SetSystemCursor( + HCURSOR hcur, + DWORD id); + +struct _ICONINFO { + BOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; +} +alias _ICONINFO ICONINFO; + +alias ICONINFO* PICONINFO; + +extern(Windows) export HICON LoadIconA( + HINSTANCE hInstance, + LPCSTR lpIconName); +extern(Windows) export HICON LoadIconW( + HINSTANCE hInstance, + LPCWSTR lpIconName); +// #ifdef UNICODE +// #... +// #else +alias LoadIconA LoadIcon; +// #endif // !UNICODE + +extern(Windows) export HICON CreateIcon( + HINSTANCE hInstance, + int nWidth, + int nHeight, + BYTE cPlanes, + BYTE cBitsPixel, + BYTE *lpbANDbits, + BYTE *lpbXORbits); + +extern(Windows) export BOOL DestroyIcon( + HICON hIcon); + +extern(Windows) export int LookupIconIdFromDirectory( + PBYTE presbits, + BOOL fIcon); + +// #if(WINVER >= 0x0400) +extern(Windows) export int LookupIconIdFromDirectoryEx( + PBYTE presbits, + BOOL fIcon, + int cxDesired, + int cyDesired, + UINT Flags); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export HICON CreateIconFromResource( + PBYTE presbits, + DWORD dwResSize, + BOOL fIcon, + DWORD dwVer); + +// #if(WINVER >= 0x0400) +extern(Windows) export HICON CreateIconFromResourceEx( + PBYTE presbits, + DWORD dwResSize, + BOOL fIcon, + DWORD dwVer, + int cxDesired, + int cyDesired, + UINT Flags); + +struct tagCURSORSHAPE { + int xHotSpot; + int yHotSpot; + int cx; + int cy; + int cbWidth; + BYTE Planes; + BYTE BitsPixel; +} +alias tagCURSORSHAPE CURSORSHAPE; +alias tagCURSORSHAPE* LPCURSORSHAPE; + +// #endif /* WINVER >= 0x0400 */ + +enum : uint { IMAGE_BITMAP = 0 } +enum : uint { IMAGE_ICON = 1 } +enum : uint { IMAGE_CURSOR = 2 } +// #if(WINVER >= 0x0400) +enum : uint { IMAGE_ENHMETAFILE = 3 } + +enum : uint { LR_DEFAULTCOLOR = 0x0000 } +enum : uint { LR_MONOCHROME = 0x0001 } +enum : uint { LR_COLOR = 0x0002 } +enum : uint { LR_COPYRETURNORG = 0x0004 } +enum : uint { LR_COPYDELETEORG = 0x0008 } +enum : uint { LR_LOADFROMFILE = 0x0010 } +enum : uint { LR_LOADTRANSPARENT = 0x0020 } +enum : uint { LR_DEFAULTSIZE = 0x0040 } +enum : uint { LR_VGACOLOR = 0x0080 } +enum : uint { LR_LOADMAP3DCOLORS = 0x1000 } +enum : uint { LR_CREATEDIBSECTION = 0x2000 } +enum : uint { LR_COPYFROMRESOURCE = 0x4000 } +enum : uint { LR_SHARED = 0x8000 } + +extern(Windows) export HANDLE LoadImageA( + HINSTANCE, + LPCSTR, + UINT, + int, + int, + UINT); +extern(Windows) export HANDLE LoadImageW( + HINSTANCE, + LPCWSTR, + UINT, + int, + int, + UINT); +// #ifdef UNICODE +// #... +// #else +alias LoadImageA LoadImage; +// #endif // !UNICODE + +extern(Windows) export HANDLE CopyImage( + HANDLE, + UINT, + int, + int, + UINT); + +enum : uint { DI_MASK = 0x0001 } +enum : uint { DI_IMAGE = 0x0002 } +enum : uint { DI_NORMAL = 0x0003 } +enum : uint { DI_COMPAT = 0x0004 } +enum : uint { DI_DEFAULTSIZE = 0x0008 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { DI_NOMIRROR = 0x0010 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export BOOL DrawIconEx(HDC hdc, int xLeft, int yTop, + HICON hIcon, int cxWidth, int cyWidth, + UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export HICON CreateIconIndirect( + PICONINFO piconinfo); + +extern(Windows) export HICON CopyIcon( + HICON hIcon); + +extern(Windows) export BOOL GetIconInfo( + HICON hIcon, + PICONINFO piconinfo); + +// #if(WINVER >= 0x0400) +enum : uint { RES_ICON = 1 } +enum : uint { RES_CURSOR = 2 } +// #endif /* WINVER >= 0x0400 */ + +// #ifdef OEMRESOURCE + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #if(WINVER >= 0x0500) +// #... +// #endif /* WINVER >= 0x0500 */ +// #if(WINVER >= 0x0400) +// #... +// #endif /* WINVER >= 0x0400 */ + +// #... +// #... +// #... +// #... +// #... +// #if(WINVER >= 0x0400) +// #... +// #... +// #... +// #... +// #endif /* WINVER >= 0x0400 */ + +// #endif /* OEMRESOURCE */ + +enum : uint { ORD_LANGDRIVER = 1 } + +// #ifndef NOICONS + +// #ifdef RC_INVOKED +// #... +// #... +// #... +// #... +// #... +// #if(WINVER >= 0x0400) +// #... +// #endif /* WINVER >= 0x0400 */ +// #else +const LPTSTR IDI_APPLICATION = cast(LPTSTR)(32512); +const LPTSTR IDI_HAND = cast(LPTSTR)(32513); +const LPTSTR IDI_QUESTION = cast(LPTSTR)(32514); +const LPTSTR IDI_EXCLAMATION = cast(LPTSTR)(32515); +const LPTSTR IDI_ASTERISK = cast(LPTSTR)(32516); +// #if(WINVER >= 0x0400) +const LPTSTR IDI_WINLOGO = cast(LPTSTR)(32517); +// #endif /* WINVER >= 0x0400 */ +// #endif /* RC_INVOKED */ + +// #if(WINVER >= 0x0400) +alias IDI_EXCLAMATION IDI_WARNING; +alias IDI_HAND IDI_ERROR; +alias IDI_ASTERISK IDI_INFORMATION; +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NOICONS */ + +extern(Windows) export int LoadStringA( + HINSTANCE hInstance, + UINT uID, + LPSTR lpBuffer, + int nBufferMax); +extern(Windows) export int LoadStringW( + HINSTANCE hInstance, + UINT uID, + LPWSTR lpBuffer, + int nBufferMax); +// #ifdef UNICODE +// #... +// #else +alias LoadStringA LoadString; +// #endif // !UNICODE + +enum : uint { IDOK = 1 } +enum : uint { IDCANCEL = 2 } +enum : uint { IDABORT = 3 } +enum : uint { IDRETRY = 4 } +enum : uint { IDIGNORE = 5 } +enum : uint { IDYES = 6 } +enum : uint { IDNO = 7 } +// #if(WINVER >= 0x0400) +enum : uint { IDCLOSE = 8 } +enum : uint { IDHELP = 9 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { IDTRYAGAIN = 10 } +enum : uint { IDCONTINUE = 11 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0501) +// #ifndef IDTIMEOUT +enum : uint { IDTIMEOUT = 32000 } +// #endif +// #endif /* WINVER >= 0x0501 */ + +// #ifndef NOCTLMGR + +// #ifndef NOWINSTYLES + +enum : uint { ES_LEFT = 0x0000 } +enum : uint { ES_CENTER = 0x0001 } +enum : uint { ES_RIGHT = 0x0002 } +enum : uint { ES_MULTILINE = 0x0004 } +enum : uint { ES_UPPERCASE = 0x0008 } +enum : uint { ES_LOWERCASE = 0x0010 } +enum : uint { ES_PASSWORD = 0x0020 } +enum : uint { ES_AUTOVSCROLL = 0x0040 } +enum : uint { ES_AUTOHSCROLL = 0x0080 } +enum : uint { ES_NOHIDESEL = 0x0100 } +enum : uint { ES_OEMCONVERT = 0x0400 } +enum : uint { ES_READONLY = 0x0800 } +enum : uint { ES_WANTRETURN = 0x1000 } +// #if(WINVER >= 0x0400) +enum : uint { ES_NUMBER = 0x2000 } +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NOWINSTYLES */ + +enum : uint { EN_SETFOCUS = 0x0100 } +enum : uint { EN_KILLFOCUS = 0x0200 } +enum : uint { EN_CHANGE = 0x0300 } +enum : uint { EN_UPDATE = 0x0400 } +enum : uint { EN_ERRSPACE = 0x0500 } +enum : uint { EN_MAXTEXT = 0x0501 } +enum : uint { EN_HSCROLL = 0x0601 } +enum : uint { EN_VSCROLL = 0x0602 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { EN_ALIGN_LTR_EC = 0x0700 } +enum : uint { EN_ALIGN_RTL_EC = 0x0701 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0400) + +enum : uint { EC_LEFTMARGIN = 0x0001 } +enum : uint { EC_RIGHTMARGIN = 0x0002 } +enum : uint { EC_USEFONTINFO = 0xffff } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) + +enum : uint { EMSIS_COMPOSITIONSTRING = 0x0001 } + +enum : uint { EIMES_GETCOMPSTRATONCE = 0x0001 } +enum : uint { EIMES_CANCELCOMPSTRINFOCUS = 0x0002 } +enum : uint { EIMES_COMPLETECOMPSTRKILLFOCUS = 0x0004 } +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NOWINMESSAGES + +enum : uint { EM_GETSEL = 0x00B0 } +enum : uint { EM_SETSEL = 0x00B1 } +enum : uint { EM_GETRECT = 0x00B2 } +enum : uint { EM_SETRECT = 0x00B3 } +enum : uint { EM_SETRECTNP = 0x00B4 } +enum : uint { EM_SCROLL = 0x00B5 } +enum : uint { EM_LINESCROLL = 0x00B6 } +enum : uint { EM_SCROLLCARET = 0x00B7 } +enum : uint { EM_GETMODIFY = 0x00B8 } +enum : uint { EM_SETMODIFY = 0x00B9 } +enum : uint { EM_GETLINECOUNT = 0x00BA } +enum : uint { EM_LINEINDEX = 0x00BB } +enum : uint { EM_SETHANDLE = 0x00BC } +enum : uint { EM_GETHANDLE = 0x00BD } +enum : uint { EM_GETTHUMB = 0x00BE } +enum : uint { EM_LINELENGTH = 0x00C1 } +enum : uint { EM_REPLACESEL = 0x00C2 } +enum : uint { EM_GETLINE = 0x00C4 } +enum : uint { EM_LIMITTEXT = 0x00C5 } +enum : uint { EM_CANUNDO = 0x00C6 } +enum : uint { EM_UNDO = 0x00C7 } +enum : uint { EM_FMTLINES = 0x00C8 } +enum : uint { EM_LINEFROMCHAR = 0x00C9 } +enum : uint { EM_SETTABSTOPS = 0x00CB } +enum : uint { EM_SETPASSWORDCHAR = 0x00CC } +enum : uint { EM_EMPTYUNDOBUFFER = 0x00CD } +enum : uint { EM_GETFIRSTVISIBLELINE = 0x00CE } +enum : uint { EM_SETREADONLY = 0x00CF } +enum : uint { EM_SETWORDBREAKPROC = 0x00D0 } +enum : uint { EM_GETWORDBREAKPROC = 0x00D1 } +enum : uint { EM_GETPASSWORDCHAR = 0x00D2 } +// #if(WINVER >= 0x0400) +enum : uint { EM_SETMARGINS = 0x00D3 } +enum : uint { EM_GETMARGINS = 0x00D4 } +alias EM_LIMITTEXT EM_SETLIMITTEXT; +enum : uint { EM_GETLIMITTEXT = 0x00D5 } +enum : uint { EM_POSFROMCHAR = 0x00D6 } +enum : uint { EM_CHARFROMPOS = 0x00D7 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { EM_SETIMESTATUS = 0x00D8 } +enum : uint { EM_GETIMESTATUS = 0x00D9 } +// #endif /* WINVER >= 0x0500 */ + +// #endif /* !NOWINMESSAGES */ + +enum : uint { WB_LEFT = 0 } +enum : uint { WB_RIGHT = 1 } +enum : uint { WB_ISDELIMITER = 2 } + +enum : uint { BS_PUSHBUTTON = 0x00000000 } +enum : uint { BS_DEFPUSHBUTTON = 0x00000001 } +enum : uint { BS_CHECKBOX = 0x00000002 } +enum : uint { BS_AUTOCHECKBOX = 0x00000003 } +enum : uint { BS_RADIOBUTTON = 0x00000004 } +enum : uint { BS_3STATE = 0x00000005 } +enum : uint { BS_AUTO3STATE = 0x00000006 } +enum : uint { BS_GROUPBOX = 0x00000007 } +enum : uint { BS_USERBUTTON = 0x00000008 } +enum : uint { BS_AUTORADIOBUTTON = 0x00000009 } +enum : uint { BS_OWNERDRAW = 0x0000000B } +enum : uint { BS_LEFTTEXT = 0x00000020 } +// #if(WINVER >= 0x0400) +enum : uint { BS_TEXT = 0x00000000 } +enum : uint { BS_ICON = 0x00000040 } +enum : uint { BS_BITMAP = 0x00000080 } +enum : uint { BS_LEFT = 0x00000100 } +enum : uint { BS_RIGHT = 0x00000200 } +enum : uint { BS_CENTER = 0x00000300 } +enum : uint { BS_TOP = 0x00000400 } +enum : uint { BS_BOTTOM = 0x00000800 } +enum : uint { BS_VCENTER = 0x00000C00 } +enum : uint { BS_PUSHLIKE = 0x00001000 } +enum : uint { BS_MULTILINE = 0x00002000 } +enum : uint { BS_NOTIFY = 0x00004000 } +enum : uint { BS_FLAT = 0x00008000 } +alias BS_LEFTTEXT BS_RIGHTBUTTON; +// #endif /* WINVER >= 0x0400 */ + +enum : uint { BN_CLICKED = 0 } +enum : uint { BN_PAINT = 1 } +enum : uint { BN_HILITE = 2 } +enum : uint { BN_UNHILITE = 3 } +enum : uint { BN_DISABLE = 4 } +enum : uint { BN_DOUBLECLICKED = 5 } +// #if(WINVER >= 0x0400) +alias BN_HILITE BN_PUSHED; +alias BN_UNHILITE BN_UNPUSHED; +alias BN_DOUBLECLICKED BN_DBLCLK; +enum : uint { BN_SETFOCUS = 6 } +enum : uint { BN_KILLFOCUS = 7 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { BM_GETCHECK = 0x00F0 } +enum : uint { BM_SETCHECK = 0x00F1 } +enum : uint { BM_GETSTATE = 0x00F2 } +enum : uint { BM_SETSTATE = 0x00F3 } +enum : uint { BM_SETSTYLE = 0x00F4 } +// #if(WINVER >= 0x0400) +enum : uint { BM_CLICK = 0x00F5 } +enum : uint { BM_GETIMAGE = 0x00F6 } +enum : uint { BM_SETIMAGE = 0x00F7 } + +enum : uint { BST_UNCHECKED = 0x0000 } +enum : uint { BST_CHECKED = 0x0001 } +enum : uint { BST_INDETERMINATE = 0x0002 } +enum : uint { BST_PUSHED = 0x0004 } +enum : uint { BST_FOCUS = 0x0008 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SS_LEFT = 0x00000000 } +enum : uint { SS_CENTER = 0x00000001 } +enum : uint { SS_RIGHT = 0x00000002 } +enum : uint { SS_ICON = 0x00000003 } +enum : uint { SS_BLACKRECT = 0x00000004 } +enum : uint { SS_GRAYRECT = 0x00000005 } +enum : uint { SS_WHITERECT = 0x00000006 } +enum : uint { SS_BLACKFRAME = 0x00000007 } +enum : uint { SS_GRAYFRAME = 0x00000008 } +enum : uint { SS_WHITEFRAME = 0x00000009 } +enum : uint { SS_USERITEM = 0x0000000A } +enum : uint { SS_SIMPLE = 0x0000000B } +enum : uint { SS_LEFTNOWORDWRAP = 0x0000000C } +// #if(WINVER >= 0x0400) +enum : uint { SS_OWNERDRAW = 0x0000000D } +enum : uint { SS_BITMAP = 0x0000000E } +enum : uint { SS_ENHMETAFILE = 0x0000000F } +enum : uint { SS_ETCHEDHORZ = 0x00000010 } +enum : uint { SS_ETCHEDVERT = 0x00000011 } +enum : uint { SS_ETCHEDFRAME = 0x00000012 } +enum : uint { SS_TYPEMASK = 0x0000001F } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0501) +enum : uint { SS_REALSIZECONTROL = 0x00000040 } +// #endif /* WINVER >= 0x0501 */ +enum : uint { SS_NOPREFIX = 0x00000080 } +// #if(WINVER >= 0x0400) +enum : uint { SS_NOTIFY = 0x00000100 } +enum : uint { SS_CENTERIMAGE = 0x00000200 } +enum : uint { SS_RIGHTJUST = 0x00000400 } +enum : uint { SS_REALSIZEIMAGE = 0x00000800 } +enum : uint { SS_SUNKEN = 0x00001000 } +enum : uint { SS_ENDELLIPSIS = 0x00004000 } +enum : uint { SS_PATHELLIPSIS = 0x00008000 } +enum : uint { SS_WORDELLIPSIS = 0x0000C000 } +enum : uint { SS_ELLIPSISMASK = 0x0000C000 } +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOWINMESSAGES + +enum : uint { STM_SETICON = 0x0170 } +enum : uint { STM_GETICON = 0x0171 } +// #if(WINVER >= 0x0400) +enum : uint { STM_SETIMAGE = 0x0172 } +enum : uint { STM_GETIMAGE = 0x0173 } +enum : uint { STN_CLICKED = 0 } +enum : uint { STN_DBLCLK = 1 } +enum : uint { STN_ENABLE = 2 } +enum : uint { STN_DISABLE = 3 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { STM_MSGMAX = 0x0174 } +// #endif /* !NOWINMESSAGES */ + +const ATOM WC_DIALOG = cast(ATOM)0x8002; + +enum : uint { DWL_MSGRESULT = 0 } +enum : uint { DWL_DLGPROC = 4 } +enum : uint { DWL_USER = 8 } + +// #ifdef _WIN64 + +// #... +// #... +// #... + +// #endif /* _WIN64 */ + +enum : uint { DWLP_MSGRESULT = 0 } +enum : uint { DWLP_DLGPROC = DWLP_MSGRESULT + LRESULT.sizeof } +enum : uint { DWLP_USER = DWLP_DLGPROC + DLGPROC.sizeof } + +// #ifndef NOMSG + +extern(Windows) export BOOL IsDialogMessageA( + HWND hDlg, + LPMSG lpMsg); +extern(Windows) export BOOL IsDialogMessageW( + HWND hDlg, + LPMSG lpMsg); +// #ifdef UNICODE +// #... +// #else +alias IsDialogMessageA IsDialogMessage; +// #endif // !UNICODE + +// #endif /* !NOMSG */ + +extern(Windows) export BOOL MapDialogRect( + HWND hDlg, + LPRECT lpRect); + +extern(Windows) export int DlgDirListA( + HWND hDlg, + LPSTR lpPathSpec, + int nIDListBox, + int nIDStaticPath, + UINT uFileType); +extern(Windows) export int DlgDirListW( + HWND hDlg, + LPWSTR lpPathSpec, + int nIDListBox, + int nIDStaticPath, + UINT uFileType); +// #ifdef UNICODE +// #... +// #else +alias DlgDirListA DlgDirList; +// #endif // !UNICODE + +enum : uint { DDL_READWRITE = 0x0000 } +enum : uint { DDL_READONLY = 0x0001 } +enum : uint { DDL_HIDDEN = 0x0002 } +enum : uint { DDL_SYSTEM = 0x0004 } +enum : uint { DDL_DIRECTORY = 0x0010 } +enum : uint { DDL_ARCHIVE = 0x0020 } + +enum : uint { DDL_POSTMSGS = 0x2000 } +enum : uint { DDL_DRIVES = 0x4000 } +enum : uint { DDL_EXCLUSIVE = 0x8000 } + +extern(Windows) export BOOL DlgDirSelectExA( + HWND hDlg, + LPSTR lpString, + int nCount, + int nIDListBox); +extern(Windows) export BOOL DlgDirSelectExW( + HWND hDlg, + LPWSTR lpString, + int nCount, + int nIDListBox); +// #ifdef UNICODE +// #... +// #else +alias DlgDirSelectExA DlgDirSelectEx; +// #endif // !UNICODE + +extern(Windows) export int DlgDirListComboBoxA( + HWND hDlg, + LPSTR lpPathSpec, + int nIDComboBox, + int nIDStaticPath, + UINT uFiletype); +extern(Windows) export int DlgDirListComboBoxW( + HWND hDlg, + LPWSTR lpPathSpec, + int nIDComboBox, + int nIDStaticPath, + UINT uFiletype); +// #ifdef UNICODE +// #... +// #else +alias DlgDirListComboBoxA DlgDirListComboBox; +// #endif // !UNICODE + +extern(Windows) export BOOL DlgDirSelectComboBoxExA( + HWND hDlg, + LPSTR lpString, + int nCount, + int nIDComboBox); +extern(Windows) export BOOL DlgDirSelectComboBoxExW( + HWND hDlg, + LPWSTR lpString, + int nCount, + int nIDComboBox); +// #ifdef UNICODE +// #... +// #else +alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx; +// #endif // !UNICODE + +enum : uint { DS_ABSALIGN = 0x01 } +enum : uint { DS_SYSMODAL = 0x02 } +enum : uint { DS_LOCALEDIT = 0x20 } +enum : uint { DS_SETFONT = 0x40 } +enum : uint { DS_MODALFRAME = 0x80 } +enum : uint { DS_NOIDLEMSG = 0x100 } +enum : uint { DS_SETFOREGROUND = 0x200 } + +// #if(WINVER >= 0x0400) +enum : uint { DS_3DLOOK = 0x0004 } +enum : uint { DS_FIXEDSYS = 0x0008 } +enum : uint { DS_NOFAILCREATE = 0x0010 } +enum : uint { DS_CONTROL = 0x0400 } +enum : uint { DS_CENTER = 0x0800 } +enum : uint { DS_CENTERMOUSE = 0x1000 } +enum : uint { DS_CONTEXTHELP = 0x2000 } + +enum : uint { DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { DM_GETDEFID = WM_USER+0 } +enum : uint { DM_SETDEFID = WM_USER+1 } + +// #if(WINVER >= 0x0400) +enum : uint { DM_REPOSITION = WM_USER+2 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { DC_HASDEFID = 0x534B } + +enum : uint { DLGC_WANTARROWS = 0x0001 } +enum : uint { DLGC_WANTTAB = 0x0002 } +enum : uint { DLGC_WANTALLKEYS = 0x0004 } +enum : uint { DLGC_WANTMESSAGE = 0x0004 } +enum : uint { DLGC_HASSETSEL = 0x0008 } +enum : uint { DLGC_DEFPUSHBUTTON = 0x0010 } +enum : uint { DLGC_UNDEFPUSHBUTTON = 0x0020 } +enum : uint { DLGC_RADIOBUTTON = 0x0040 } +enum : uint { DLGC_WANTCHARS = 0x0080 } +enum : uint { DLGC_STATIC = 0x0100 } +enum : uint { DLGC_BUTTON = 0x2000 } + +enum : uint { LB_CTLCODE = 0 } + +enum : uint { LB_OKAY = 0 } +enum { LB_ERR = -1 } +enum { LB_ERRSPACE = -2 } + +enum { LBN_ERRSPACE = -2 } +enum : uint { LBN_SELCHANGE = 1 } +enum : uint { LBN_DBLCLK = 2 } +enum : uint { LBN_SELCANCEL = 3 } +enum : uint { LBN_SETFOCUS = 4 } +enum : uint { LBN_KILLFOCUS = 5 } + +// #ifndef NOWINMESSAGES + +enum : uint { LB_ADDSTRING = 0x0180 } +enum : uint { LB_INSERTSTRING = 0x0181 } +enum : uint { LB_DELETESTRING = 0x0182 } +enum : uint { LB_SELITEMRANGEEX = 0x0183 } +enum : uint { LB_RESETCONTENT = 0x0184 } +enum : uint { LB_SETSEL = 0x0185 } +enum : uint { LB_SETCURSEL = 0x0186 } +enum : uint { LB_GETSEL = 0x0187 } +enum : uint { LB_GETCURSEL = 0x0188 } +enum : uint { LB_GETTEXT = 0x0189 } +enum : uint { LB_GETTEXTLEN = 0x018A } +enum : uint { LB_GETCOUNT = 0x018B } +enum : uint { LB_SELECTSTRING = 0x018C } +enum : uint { LB_DIR = 0x018D } +enum : uint { LB_GETTOPINDEX = 0x018E } +enum : uint { LB_FINDSTRING = 0x018F } +enum : uint { LB_GETSELCOUNT = 0x0190 } +enum : uint { LB_GETSELITEMS = 0x0191 } +enum : uint { LB_SETTABSTOPS = 0x0192 } +enum : uint { LB_GETHORIZONTALEXTENT = 0x0193 } +enum : uint { LB_SETHORIZONTALEXTENT = 0x0194 } +enum : uint { LB_SETCOLUMNWIDTH = 0x0195 } +enum : uint { LB_ADDFILE = 0x0196 } +enum : uint { LB_SETTOPINDEX = 0x0197 } +enum : uint { LB_GETITEMRECT = 0x0198 } +enum : uint { LB_GETITEMDATA = 0x0199 } +enum : uint { LB_SETITEMDATA = 0x019A } +enum : uint { LB_SELITEMRANGE = 0x019B } +enum : uint { LB_SETANCHORINDEX = 0x019C } +enum : uint { LB_GETANCHORINDEX = 0x019D } +enum : uint { LB_SETCARETINDEX = 0x019E } +enum : uint { LB_GETCARETINDEX = 0x019F } +enum : uint { LB_SETITEMHEIGHT = 0x01A0 } +enum : uint { LB_GETITEMHEIGHT = 0x01A1 } +enum : uint { LB_FINDSTRINGEXACT = 0x01A2 } +enum : uint { LB_SETLOCALE = 0x01A5 } +enum : uint { LB_GETLOCALE = 0x01A6 } +enum : uint { LB_SETCOUNT = 0x01A7 } +// #if(WINVER >= 0x0400) +enum : uint { LB_INITSTORAGE = 0x01A8 } +enum : uint { LB_ITEMFROMPOINT = 0x01A9 } +// #endif /* WINVER >= 0x0400 */ +// #if(_WIN32_WCE >= 0x0400) +// #... +// #endif + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { LB_GETLISTBOXINFO = 0x01B2 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { LB_MSGMAX = 0x01B3 } +// #elif(_WIN32_WCE >= 0x0400) +// #... +// #elif(WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +// #endif /* !NOWINMESSAGES */ + +// #ifndef NOWINSTYLES + +enum : uint { LBS_NOTIFY = 0x0001 } +enum : uint { LBS_SORT = 0x0002 } +enum : uint { LBS_NOREDRAW = 0x0004 } +enum : uint { LBS_MULTIPLESEL = 0x0008 } +enum : uint { LBS_OWNERDRAWFIXED = 0x0010 } +enum : uint { LBS_OWNERDRAWVARIABLE = 0x0020 } +enum : uint { LBS_HASSTRINGS = 0x0040 } +enum : uint { LBS_USETABSTOPS = 0x0080 } +enum : uint { LBS_NOINTEGRALHEIGHT = 0x0100 } +enum : uint { LBS_MULTICOLUMN = 0x0200 } +enum : uint { LBS_WANTKEYBOARDINPUT = 0x0400 } +enum : uint { LBS_EXTENDEDSEL = 0x0800 } +enum : uint { LBS_DISABLENOSCROLL = 0x1000 } +enum : uint { LBS_NODATA = 0x2000 } +// #if(WINVER >= 0x0400) +enum : uint { LBS_NOSEL = 0x4000 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { LBS_STANDARD = LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER } + +// #endif /* !NOWINSTYLES */ + +enum : uint { CB_OKAY = 0 } +enum { CB_ERR = -1 } +enum { CB_ERRSPACE = -2 } + +enum { CBN_ERRSPACE = -1 } +enum : uint { CBN_SELCHANGE = 1 } +enum : uint { CBN_DBLCLK = 2 } +enum : uint { CBN_SETFOCUS = 3 } +enum : uint { CBN_KILLFOCUS = 4 } +enum : uint { CBN_EDITCHANGE = 5 } +enum : uint { CBN_EDITUPDATE = 6 } +enum : uint { CBN_DROPDOWN = 7 } +enum : uint { CBN_CLOSEUP = 8 } +enum : uint { CBN_SELENDOK = 9 } +enum : uint { CBN_SELENDCANCEL = 10 } + +// #ifndef NOWINSTYLES + +enum : uint { CBS_SIMPLE = 0x0001 } +enum : uint { CBS_DROPDOWN = 0x0002 } +enum : uint { CBS_DROPDOWNLIST = 0x0003 } +enum : uint { CBS_OWNERDRAWFIXED = 0x0010 } +enum : uint { CBS_OWNERDRAWVARIABLE = 0x0020 } +enum : uint { CBS_AUTOHSCROLL = 0x0040 } +enum : uint { CBS_OEMCONVERT = 0x0080 } +enum : uint { CBS_SORT = 0x0100 } +enum : uint { CBS_HASSTRINGS = 0x0200 } +enum : uint { CBS_NOINTEGRALHEIGHT = 0x0400 } +enum : uint { CBS_DISABLENOSCROLL = 0x0800 } +// #if(WINVER >= 0x0400) +enum : uint { CBS_UPPERCASE = 0x2000 } +enum : uint { CBS_LOWERCASE = 0x4000 } +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NOWINSTYLES */ + +// #ifndef NOWINMESSAGES +enum : uint { CB_GETEDITSEL = 0x0140 } +enum : uint { CB_LIMITTEXT = 0x0141 } +enum : uint { CB_SETEDITSEL = 0x0142 } +enum : uint { CB_ADDSTRING = 0x0143 } +enum : uint { CB_DELETESTRING = 0x0144 } +enum : uint { CB_DIR = 0x0145 } +enum : uint { CB_GETCOUNT = 0x0146 } +enum : uint { CB_GETCURSEL = 0x0147 } +enum : uint { CB_GETLBTEXT = 0x0148 } +enum : uint { CB_GETLBTEXTLEN = 0x0149 } +enum : uint { CB_INSERTSTRING = 0x014A } +enum : uint { CB_RESETCONTENT = 0x014B } +enum : uint { CB_FINDSTRING = 0x014C } +enum : uint { CB_SELECTSTRING = 0x014D } +enum : uint { CB_SETCURSEL = 0x014E } +enum : uint { CB_SHOWDROPDOWN = 0x014F } +enum : uint { CB_GETITEMDATA = 0x0150 } +enum : uint { CB_SETITEMDATA = 0x0151 } +enum : uint { CB_GETDROPPEDCONTROLRECT = 0x0152 } +enum : uint { CB_SETITEMHEIGHT = 0x0153 } +enum : uint { CB_GETITEMHEIGHT = 0x0154 } +enum : uint { CB_SETEXTENDEDUI = 0x0155 } +enum : uint { CB_GETEXTENDEDUI = 0x0156 } +enum : uint { CB_GETDROPPEDSTATE = 0x0157 } +enum : uint { CB_FINDSTRINGEXACT = 0x0158 } +enum : uint { CB_SETLOCALE = 0x0159 } +enum : uint { CB_GETLOCALE = 0x015A } +// #if(WINVER >= 0x0400) +enum : uint { CB_GETTOPINDEX = 0x015b } +enum : uint { CB_SETTOPINDEX = 0x015c } +enum : uint { CB_GETHORIZONTALEXTENT = 0x015d } +enum : uint { CB_SETHORIZONTALEXTENT = 0x015e } +enum : uint { CB_GETDROPPEDWIDTH = 0x015f } +enum : uint { CB_SETDROPPEDWIDTH = 0x0160 } +enum : uint { CB_INITSTORAGE = 0x0161 } +// #if(_WIN32_WCE >= 0x0400) +// #... +// #endif +// #endif /* WINVER >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { CB_GETCOMBOBOXINFO = 0x0164 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { CB_MSGMAX = 0x0165 } +// #elif(_WIN32_WCE >= 0x0400) +// #... +// #elif(WINVER >= 0x0400) +// #... +// #else +// #... +// #endif +// #endif /* !NOWINMESSAGES */ + +// #ifndef NOWINSTYLES + +enum : uint { SBS_HORZ = 0x0000 } +enum : uint { SBS_VERT = 0x0001 } +enum : uint { SBS_TOPALIGN = 0x0002 } +enum : uint { SBS_LEFTALIGN = 0x0002 } +enum : uint { SBS_BOTTOMALIGN = 0x0004 } +enum : uint { SBS_RIGHTALIGN = 0x0004 } +enum : uint { SBS_SIZEBOXTOPLEFTALIGN = 0x0002 } +enum : uint { SBS_SIZEBOXBOTTOMRIGHTALIGN = 0x0004 } +enum : uint { SBS_SIZEBOX = 0x0008 } +// #if(WINVER >= 0x0400) +enum : uint { SBS_SIZEGRIP = 0x0010 } +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NOWINSTYLES */ + +// #ifndef NOWINMESSAGES +enum : uint { SBM_SETPOS = 0x00E0 } +enum : uint { SBM_GETPOS = 0x00E1 } +enum : uint { SBM_SETRANGE = 0x00E2 } +enum : uint { SBM_SETRANGEREDRAW = 0x00E6 } +enum : uint { SBM_GETRANGE = 0x00E3 } +enum : uint { SBM_ENABLE_ARROWS = 0x00E4 } +// #if(WINVER >= 0x0400) +enum : uint { SBM_SETSCROLLINFO = 0x00E9 } +enum : uint { SBM_GETSCROLLINFO = 0x00EA } +// #endif /* WINVER >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SBM_GETSCROLLBARINFO = 0x00EB } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(WINVER >= 0x0400) +enum : uint { SIF_RANGE = 0x0001 } +enum : uint { SIF_PAGE = 0x0002 } +enum : uint { SIF_POS = 0x0004 } +enum : uint { SIF_DISABLENOSCROLL = 0x0008 } +enum : uint { SIF_TRACKPOS = 0x0010 } +enum : uint { SIF_ALL = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS } + +struct tagSCROLLINFO { + UINT cbSize; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; +} +alias tagSCROLLINFO SCROLLINFO; +alias tagSCROLLINFO* LPSCROLLINFO; + +alias SCROLLINFO* LPCSCROLLINFO; + +extern(Windows) export int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL); +extern(Windows) export BOOL GetScrollInfo(HWND, int, LPSCROLLINFO); + +// #endif /* WINVER >= 0x0400 */ +// #endif /* !NOWINMESSAGES */ +// #endif /* !NOCTLMGR */ + +// #ifndef NOMDI + +enum : uint { MDIS_ALLCHILDSTYLES = 0x0001 } + +enum : uint { MDITILE_VERTICAL = 0x0000 } +enum : uint { MDITILE_HORIZONTAL = 0x0001 } +enum : uint { MDITILE_SKIPDISABLED = 0x0002 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { MDITILE_ZORDER = 0x0004 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +struct tagMDICREATESTRUCTA { + LPCSTR szClass; + LPCSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias tagMDICREATESTRUCTA MDICREATESTRUCTA; +alias tagMDICREATESTRUCTA* LPMDICREATESTRUCTA; + +struct tagMDICREATESTRUCTW { + LPCWSTR szClass; + LPCWSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias tagMDICREATESTRUCTW MDICREATESTRUCTW; +alias tagMDICREATESTRUCTW* LPMDICREATESTRUCTW; + +// #ifdef UNICODE +// ... +// #else +alias MDICREATESTRUCTA MDICREATESTRUCT; +alias LPMDICREATESTRUCTA LPMDICREATESTRUCT; +// #endif // UNICODE + +struct tagCLIENTCREATESTRUCT { + HANDLE hWindowMenu; + UINT idFirstChild; +} +alias tagCLIENTCREATESTRUCT CLIENTCREATESTRUCT; +alias tagCLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT; + +extern(Windows) export LRESULT DefFrameProcA( + HWND hWnd, + HWND hWndMDIClient, + UINT uMsg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export LRESULT DefFrameProcW( + HWND hWnd, + HWND hWndMDIClient, + UINT uMsg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias DefFrameProcA DefFrameProc; +// #endif // !UNICODE + +extern(Windows) export LRESULT DefMDIChildProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +extern(Windows) export LRESULT DefMDIChildProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias DefMDIChildProcA DefMDIChildProc; +// #endif // !UNICODE + +// #ifndef NOMSG + +extern(Windows) export BOOL TranslateMDISysAccel( + HWND hWndClient, + LPMSG lpMsg); + +// #endif /* !NOMSG */ + +extern(Windows) export UINT ArrangeIconicWindows( + HWND hWnd); + +extern(Windows) export HWND CreateMDIWindowA( + LPCSTR lpClassName, + LPCSTR lpWindowName, + DWORD dwStyle, + int X, + int Y, + int nWidth, + int nHeight, + HWND hWndParent, + HINSTANCE hInstance, + LPARAM lParam); +extern(Windows) export HWND CreateMDIWindowW( + LPCWSTR lpClassName, + LPCWSTR lpWindowName, + DWORD dwStyle, + int X, + int Y, + int nWidth, + int nHeight, + HWND hWndParent, + HINSTANCE hInstance, + LPARAM lParam); +// #ifdef UNICODE +// #... +// #else +alias CreateMDIWindowA CreateMDIWindow; +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export WORD TileWindows(HWND hwndParent, UINT wHow, RECT * lpRect, UINT cKids, HWND * lpKids); +extern(Windows) export WORD CascadeWindows(HWND hwndParent, UINT wHow, RECT * lpRect, UINT cKids, HWND * lpKids); +// #endif /* WINVER >= 0x0400 */ +// #endif /* !NOMDI */ + +// #endif /* !NOUSER */ + +// #ifndef NOHELP + +alias DWORD HELPPOLY; +struct tagMULTIKEYHELPA { +// #ifndef _MAC + DWORD mkSize; +// #else +// ... +// #endif + CHAR mkKeylist; + CHAR szKeyphrase[1]; +} +alias tagMULTIKEYHELPA MULTIKEYHELPA; +alias tagMULTIKEYHELPA* PMULTIKEYHELPA; +alias tagMULTIKEYHELPA* LPMULTIKEYHELPA; + +struct tagMULTIKEYHELPW { +// #ifndef _MAC + DWORD mkSize; +// #else +// ... +// #endif + WCHAR mkKeylist; + WCHAR szKeyphrase[1]; +} +alias tagMULTIKEYHELPW MULTIKEYHELPW; +alias tagMULTIKEYHELPW* PMULTIKEYHELPW; +alias tagMULTIKEYHELPW* LPMULTIKEYHELPW; + +// #ifdef UNICODE +// ... +// #else +alias MULTIKEYHELPA MULTIKEYHELP; +alias PMULTIKEYHELPA PMULTIKEYHELP; +alias LPMULTIKEYHELPA LPMULTIKEYHELP; +// #endif // UNICODE + +struct tagHELPWININFOA { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + CHAR rgchMember[2]; +} +alias tagHELPWININFOA HELPWININFOA; +alias tagHELPWININFOA* PHELPWININFOA; +alias tagHELPWININFOA* LPHELPWININFOA; + +struct tagHELPWININFOW { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + WCHAR rgchMember[2]; +} +alias tagHELPWININFOW HELPWININFOW; +alias tagHELPWININFOW* PHELPWININFOW; +alias tagHELPWININFOW* LPHELPWININFOW; + +// #ifdef UNICODE +// ... +// #else +alias HELPWININFOA HELPWININFO; +alias PHELPWININFOA PHELPWININFO; +alias LPHELPWININFOA LPHELPWININFO; +// #endif // UNICODE + +enum : uint { HELP_CONTEXT = 0x0001 } +enum : uint { HELP_QUIT = 0x0002 } +enum : uint { HELP_INDEX = 0x0003 } +enum : uint { HELP_CONTENTS = 0x0003 } +enum : uint { HELP_HELPONHELP = 0x0004 } +enum : uint { HELP_SETINDEX = 0x0005 } +enum : uint { HELP_SETCONTENTS = 0x0005 } +enum : uint { HELP_CONTEXTPOPUP = 0x0008 } +enum : uint { HELP_FORCEFILE = 0x0009 } +enum : uint { HELP_KEY = 0x0101 } +enum : uint { HELP_COMMAND = 0x0102 } +enum : uint { HELP_PARTIALKEY = 0x0105 } +enum : uint { HELP_MULTIKEY = 0x0201 } +enum : uint { HELP_SETWINPOS = 0x0203 } +// #if(WINVER >= 0x0400) +enum : uint { HELP_CONTEXTMENU = 0x000a } +enum : uint { HELP_FINDER = 0x000b } +enum : uint { HELP_WM_HELP = 0x000c } +enum : uint { HELP_SETPOPUP_POS = 0x000d } + +enum : uint { HELP_TCARD = 0x8000 } +enum : uint { HELP_TCARD_DATA = 0x0010 } +enum : uint { HELP_TCARD_OTHER_CALLER = 0x0011 } + +enum : uint { IDH_NO_HELP = 28440 } +enum : uint { IDH_MISSING_CONTEXT = 28441 } +enum : uint { IDH_GENERIC_HELP_BUTTON = 28442 } +enum : uint { IDH_OK = 28443 } +enum : uint { IDH_CANCEL = 28444 } +enum : uint { IDH_HELP = 28445 } + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL WinHelpA( + HWND hWndMain, + LPCSTR lpszHelp, + UINT uCommand, + ULONG_PTR dwData); +extern(Windows) export BOOL WinHelpW( + HWND hWndMain, + LPCWSTR lpszHelp, + UINT uCommand, + ULONG_PTR dwData); +// #ifdef UNICODE +// #... +// #else +alias WinHelpA WinHelp; +// #endif // !UNICODE + +// #endif /* !NOHELP */ + +// #if(WINVER >= 0x0500) + +enum : uint { GR_GDIOBJECTS = 0 } +enum : uint { GR_USEROBJECTS = 1 } + +extern(Windows) export DWORD GetGuiResources( + HANDLE hProcess, + DWORD uiFlags); + +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NOSYSPARAMSINFO + +enum : uint { SPI_GETBEEP = 0x0001 } +enum : uint { SPI_SETBEEP = 0x0002 } +enum : uint { SPI_GETMOUSE = 0x0003 } +enum : uint { SPI_SETMOUSE = 0x0004 } +enum : uint { SPI_GETBORDER = 0x0005 } +enum : uint { SPI_SETBORDER = 0x0006 } +enum : uint { SPI_GETKEYBOARDSPEED = 0x000A } +enum : uint { SPI_SETKEYBOARDSPEED = 0x000B } +enum : uint { SPI_LANGDRIVER = 0x000C } +enum : uint { SPI_ICONHORIZONTALSPACING = 0x000D } +enum : uint { SPI_GETSCREENSAVETIMEOUT = 0x000E } +enum : uint { SPI_SETSCREENSAVETIMEOUT = 0x000F } +enum : uint { SPI_GETSCREENSAVEACTIVE = 0x0010 } +enum : uint { SPI_SETSCREENSAVEACTIVE = 0x0011 } +enum : uint { SPI_GETGRIDGRANULARITY = 0x0012 } +enum : uint { SPI_SETGRIDGRANULARITY = 0x0013 } +enum : uint { SPI_SETDESKWALLPAPER = 0x0014 } +enum : uint { SPI_SETDESKPATTERN = 0x0015 } +enum : uint { SPI_GETKEYBOARDDELAY = 0x0016 } +enum : uint { SPI_SETKEYBOARDDELAY = 0x0017 } +enum : uint { SPI_ICONVERTICALSPACING = 0x0018 } +enum : uint { SPI_GETICONTITLEWRAP = 0x0019 } +enum : uint { SPI_SETICONTITLEWRAP = 0x001A } +enum : uint { SPI_GETMENUDROPALIGNMENT = 0x001B } +enum : uint { SPI_SETMENUDROPALIGNMENT = 0x001C } +enum : uint { SPI_SETDOUBLECLKWIDTH = 0x001D } +enum : uint { SPI_SETDOUBLECLKHEIGHT = 0x001E } +enum : uint { SPI_GETICONTITLELOGFONT = 0x001F } +enum : uint { SPI_SETDOUBLECLICKTIME = 0x0020 } +enum : uint { SPI_SETMOUSEBUTTONSWAP = 0x0021 } +enum : uint { SPI_SETICONTITLELOGFONT = 0x0022 } +enum : uint { SPI_GETFASTTASKSWITCH = 0x0023 } +enum : uint { SPI_SETFASTTASKSWITCH = 0x0024 } +// #if(WINVER >= 0x0400) +enum : uint { SPI_SETDRAGFULLWINDOWS = 0x0025 } +enum : uint { SPI_GETDRAGFULLWINDOWS = 0x0026 } +enum : uint { SPI_GETNONCLIENTMETRICS = 0x0029 } +enum : uint { SPI_SETNONCLIENTMETRICS = 0x002A } +enum : uint { SPI_GETMINIMIZEDMETRICS = 0x002B } +enum : uint { SPI_SETMINIMIZEDMETRICS = 0x002C } +enum : uint { SPI_GETICONMETRICS = 0x002D } +enum : uint { SPI_SETICONMETRICS = 0x002E } +enum : uint { SPI_SETWORKAREA = 0x002F } +enum : uint { SPI_GETWORKAREA = 0x0030 } +enum : uint { SPI_SETPENWINDOWS = 0x0031 } + +enum : uint { SPI_GETHIGHCONTRAST = 0x0042 } +enum : uint { SPI_SETHIGHCONTRAST = 0x0043 } +enum : uint { SPI_GETKEYBOARDPREF = 0x0044 } +enum : uint { SPI_SETKEYBOARDPREF = 0x0045 } +enum : uint { SPI_GETSCREENREADER = 0x0046 } +enum : uint { SPI_SETSCREENREADER = 0x0047 } +enum : uint { SPI_GETANIMATION = 0x0048 } +enum : uint { SPI_SETANIMATION = 0x0049 } +enum : uint { SPI_GETFONTSMOOTHING = 0x004A } +enum : uint { SPI_SETFONTSMOOTHING = 0x004B } +enum : uint { SPI_SETDRAGWIDTH = 0x004C } +enum : uint { SPI_SETDRAGHEIGHT = 0x004D } +enum : uint { SPI_SETHANDHELD = 0x004E } +enum : uint { SPI_GETLOWPOWERTIMEOUT = 0x004F } +enum : uint { SPI_GETPOWEROFFTIMEOUT = 0x0050 } +enum : uint { SPI_SETLOWPOWERTIMEOUT = 0x0051 } +enum : uint { SPI_SETPOWEROFFTIMEOUT = 0x0052 } +enum : uint { SPI_GETLOWPOWERACTIVE = 0x0053 } +enum : uint { SPI_GETPOWEROFFACTIVE = 0x0054 } +enum : uint { SPI_SETLOWPOWERACTIVE = 0x0055 } +enum : uint { SPI_SETPOWEROFFACTIVE = 0x0056 } +enum : uint { SPI_SETCURSORS = 0x0057 } +enum : uint { SPI_SETICONS = 0x0058 } +enum : uint { SPI_GETDEFAULTINPUTLANG = 0x0059 } +enum : uint { SPI_SETDEFAULTINPUTLANG = 0x005A } +enum : uint { SPI_SETLANGTOGGLE = 0x005B } +enum : uint { SPI_GETWINDOWSEXTENSION = 0x005C } +enum : uint { SPI_SETMOUSETRAILS = 0x005D } +enum : uint { SPI_GETMOUSETRAILS = 0x005E } +enum : uint { SPI_SETSCREENSAVERRUNNING = 0x0061 } +alias SPI_SETSCREENSAVERRUNNING SPI_SCREENSAVERRUNNING; +// #endif /* WINVER >= 0x0400 */ +enum : uint { SPI_GETFILTERKEYS = 0x0032 } +enum : uint { SPI_SETFILTERKEYS = 0x0033 } +enum : uint { SPI_GETTOGGLEKEYS = 0x0034 } +enum : uint { SPI_SETTOGGLEKEYS = 0x0035 } +enum : uint { SPI_GETMOUSEKEYS = 0x0036 } +enum : uint { SPI_SETMOUSEKEYS = 0x0037 } +enum : uint { SPI_GETSHOWSOUNDS = 0x0038 } +enum : uint { SPI_SETSHOWSOUNDS = 0x0039 } +enum : uint { SPI_GETSTICKYKEYS = 0x003A } +enum : uint { SPI_SETSTICKYKEYS = 0x003B } +enum : uint { SPI_GETACCESSTIMEOUT = 0x003C } +enum : uint { SPI_SETACCESSTIMEOUT = 0x003D } +// #if(WINVER >= 0x0400) +enum : uint { SPI_GETSERIALKEYS = 0x003E } +enum : uint { SPI_SETSERIALKEYS = 0x003F } +// #endif /* WINVER >= 0x0400 */ +enum : uint { SPI_GETSOUNDSENTRY = 0x0040 } +enum : uint { SPI_SETSOUNDSENTRY = 0x0041 } +// #if(_WIN32_WINNT >= 0x0400) +enum : uint { SPI_GETSNAPTODEFBUTTON = 0x005F } +enum : uint { SPI_SETSNAPTODEFBUTTON = 0x0060 } +// #endif /* _WIN32_WINNT >= 0x0400 */ +// #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +enum : uint { SPI_GETMOUSEHOVERWIDTH = 0x0062 } +enum : uint { SPI_SETMOUSEHOVERWIDTH = 0x0063 } +enum : uint { SPI_GETMOUSEHOVERHEIGHT = 0x0064 } +enum : uint { SPI_SETMOUSEHOVERHEIGHT = 0x0065 } +enum : uint { SPI_GETMOUSEHOVERTIME = 0x0066 } +enum : uint { SPI_SETMOUSEHOVERTIME = 0x0067 } +enum : uint { SPI_GETWHEELSCROLLLINES = 0x0068 } +enum : uint { SPI_SETWHEELSCROLLLINES = 0x0069 } +enum : uint { SPI_GETMENUSHOWDELAY = 0x006A } +enum : uint { SPI_SETMENUSHOWDELAY = 0x006B } + +enum : uint { SPI_GETSHOWIMEUI = 0x006E } +enum : uint { SPI_SETSHOWIMEUI = 0x006F } +// #endif + +// #if(WINVER >= 0x0500) +enum : uint { SPI_GETMOUSESPEED = 0x0070 } +enum : uint { SPI_SETMOUSESPEED = 0x0071 } +enum : uint { SPI_GETSCREENSAVERRUNNING = 0x0072 } +enum : uint { SPI_GETDESKWALLPAPER = 0x0073 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) +enum : uint { SPI_GETACTIVEWINDOWTRACKING = 0x1000 } +enum : uint { SPI_SETACTIVEWINDOWTRACKING = 0x1001 } +enum : uint { SPI_GETMENUANIMATION = 0x1002 } +enum : uint { SPI_SETMENUANIMATION = 0x1003 } +enum : uint { SPI_GETCOMBOBOXANIMATION = 0x1004 } +enum : uint { SPI_SETCOMBOBOXANIMATION = 0x1005 } +enum : uint { SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006 } +enum : uint { SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007 } +enum : uint { SPI_GETGRADIENTCAPTIONS = 0x1008 } +enum : uint { SPI_SETGRADIENTCAPTIONS = 0x1009 } +enum : uint { SPI_GETKEYBOARDCUES = 0x100A } +enum : uint { SPI_SETKEYBOARDCUES = 0x100B } +alias SPI_GETKEYBOARDCUES SPI_GETMENUUNDERLINES; +alias SPI_SETKEYBOARDCUES SPI_SETMENUUNDERLINES; +enum : uint { SPI_GETACTIVEWNDTRKZORDER = 0x100C } +enum : uint { SPI_SETACTIVEWNDTRKZORDER = 0x100D } +enum : uint { SPI_GETHOTTRACKING = 0x100E } +enum : uint { SPI_SETHOTTRACKING = 0x100F } +enum : uint { SPI_GETMENUFADE = 0x1012 } +enum : uint { SPI_SETMENUFADE = 0x1013 } +enum : uint { SPI_GETSELECTIONFADE = 0x1014 } +enum : uint { SPI_SETSELECTIONFADE = 0x1015 } +enum : uint { SPI_GETTOOLTIPANIMATION = 0x1016 } +enum : uint { SPI_SETTOOLTIPANIMATION = 0x1017 } +enum : uint { SPI_GETTOOLTIPFADE = 0x1018 } +enum : uint { SPI_SETTOOLTIPFADE = 0x1019 } +enum : uint { SPI_GETCURSORSHADOW = 0x101A } +enum : uint { SPI_SETCURSORSHADOW = 0x101B } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SPI_GETMOUSESONAR = 0x101C } +enum : uint { SPI_SETMOUSESONAR = 0x101D } +enum : uint { SPI_GETMOUSECLICKLOCK = 0x101E } +enum : uint { SPI_SETMOUSECLICKLOCK = 0x101F } +enum : uint { SPI_GETMOUSEVANISH = 0x1020 } +enum : uint { SPI_SETMOUSEVANISH = 0x1021 } +enum : uint { SPI_GETFLATMENU = 0x1022 } +enum : uint { SPI_SETFLATMENU = 0x1023 } +enum : uint { SPI_GETDROPSHADOW = 0x1024 } +enum : uint { SPI_SETDROPSHADOW = 0x1025 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { SPI_GETUIEFFECTS = 0x103E } +enum : uint { SPI_SETUIEFFECTS = 0x103F } + +enum : uint { SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000 } +enum : uint { SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001 } +enum : uint { SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002 } +enum : uint { SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003 } +enum : uint { SPI_GETFOREGROUNDFLASHCOUNT = 0x2004 } +enum : uint { SPI_SETFOREGROUNDFLASHCOUNT = 0x2005 } +enum : uint { SPI_GETCARETWIDTH = 0x2006 } +enum : uint { SPI_SETCARETWIDTH = 0x2007 } + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SPI_GETMOUSECLICKLOCKTIME = 0x2008 } +enum : uint { SPI_SETMOUSECLICKLOCKTIME = 0x2009 } +enum : uint { SPI_GETFONTSMOOTHINGTYPE = 0x200A } +enum : uint { SPI_SETFONTSMOOTHINGTYPE = 0x200B } + +enum : uint { FE_FONTSMOOTHINGSTANDARD = 0x0001 } +enum : uint { FE_FONTSMOOTHINGCLEARTYPE = 0x0002 } +enum : uint { FE_FONTSMOOTHINGDOCKING = 0x8000 } + +enum : uint { SPI_GETFONTSMOOTHINGCONTRAST = 0x200C } +enum : uint { SPI_SETFONTSMOOTHINGCONTRAST = 0x200D } + +enum : uint { SPI_GETFOCUSBORDERWIDTH = 0x200E } +enum : uint { SPI_SETFOCUSBORDERWIDTH = 0x200F } +enum : uint { SPI_GETFOCUSBORDERHEIGHT = 0x2010 } +enum : uint { SPI_SETFOCUSBORDERHEIGHT = 0x2011 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { SPIF_UPDATEINIFILE = 0x0001 } +enum : uint { SPIF_SENDWININICHANGE = 0x0002 } +alias SPIF_SENDWININICHANGE SPIF_SENDCHANGE; + +enum { METRICS_USEDEFAULT = -1 } +// #ifdef _WINGDI_ +// #ifndef NOGDI +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif /* NOGDI */ +// #endif /* _WINGDI_ */ + +enum : uint { ARW_BOTTOMLEFT = 0x0000 } +enum : uint { ARW_BOTTOMRIGHT = 0x0001 } +enum : uint { ARW_TOPLEFT = 0x0002 } +enum : uint { ARW_TOPRIGHT = 0x0003 } +enum : uint { ARW_STARTMASK = 0x0003 } +enum : uint { ARW_STARTRIGHT = 0x0001 } +enum : uint { ARW_STARTTOP = 0x0002 } + +enum : uint { ARW_LEFT = 0x0000 } +enum : uint { ARW_RIGHT = 0x0000 } +enum : uint { ARW_UP = 0x0004 } +enum : uint { ARW_DOWN = 0x0004 } +enum : uint { ARW_HIDE = 0x0008 } + +struct tagMINIMIZEDMETRICS { + UINT cbSize; + int iWidth; + int iHorzGap; + int iVertGap; + int iArrange; +} +alias tagMINIMIZEDMETRICS MINIMIZEDMETRICS; +alias tagMINIMIZEDMETRICS* PMINIMIZEDMETRICS; +alias tagMINIMIZEDMETRICS* LPMINIMIZEDMETRICS; + +// #ifdef _WINGDI_ +// #ifndef NOGDI +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif /* NOGDI */ +// #endif /* _WINGDI_ */ + +struct tagANIMATIONINFO { + UINT cbSize; + int iMinAnimate; +} +alias tagANIMATIONINFO ANIMATIONINFO; +alias tagANIMATIONINFO* LPANIMATIONINFO; + +struct tagSERIALKEYSA { + UINT cbSize; + DWORD dwFlags; + LPSTR lpszActivePort; + LPSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias tagSERIALKEYSA SERIALKEYSA; +alias tagSERIALKEYSA* LPSERIALKEYSA; + +struct tagSERIALKEYSW { + UINT cbSize; + DWORD dwFlags; + LPWSTR lpszActivePort; + LPWSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias tagSERIALKEYSW SERIALKEYSW; +alias tagSERIALKEYSW* LPSERIALKEYSW; + +// #ifdef UNICODE +// ... +// #else +alias SERIALKEYSA SERIALKEYS; +alias LPSERIALKEYSA LPSERIALKEYS; +// #endif // UNICODE + +enum : uint { SERKF_SERIALKEYSON = 0x00000001 } +enum : uint { SERKF_AVAILABLE = 0x00000002 } +enum : uint { SERKF_INDICATOR = 0x00000004 } + +struct tagHIGHCONTRASTA { + UINT cbSize; + DWORD dwFlags; + LPSTR lpszDefaultScheme; +} +alias tagHIGHCONTRASTA HIGHCONTRASTA; +alias tagHIGHCONTRASTA* LPHIGHCONTRASTA; + +struct tagHIGHCONTRASTW { + UINT cbSize; + DWORD dwFlags; + LPWSTR lpszDefaultScheme; +} +alias tagHIGHCONTRASTW HIGHCONTRASTW; +alias tagHIGHCONTRASTW* LPHIGHCONTRASTW; + +// #ifdef UNICODE +// ... +// #else +alias HIGHCONTRASTA HIGHCONTRAST; +alias LPHIGHCONTRASTA LPHIGHCONTRAST; +// #endif // UNICODE + +enum : uint { HCF_HIGHCONTRASTON = 0x00000001 } +enum : uint { HCF_AVAILABLE = 0x00000002 } +enum : uint { HCF_HOTKEYACTIVE = 0x00000004 } +enum : uint { HCF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { HCF_HOTKEYSOUND = 0x00000010 } +enum : uint { HCF_INDICATOR = 0x00000020 } +enum : uint { HCF_HOTKEYAVAILABLE = 0x00000040 } + +enum : uint { CDS_UPDATEREGISTRY = 0x00000001 } +enum : uint { CDS_TEST = 0x00000002 } +enum : uint { CDS_FULLSCREEN = 0x00000004 } +enum : uint { CDS_GLOBAL = 0x00000008 } +enum : uint { CDS_SET_PRIMARY = 0x00000010 } +enum : uint { CDS_VIDEOPARAMETERS = 0x00000020 } +enum : uint { CDS_RESET = 0x40000000 } +enum : uint { CDS_NORESET = 0x10000000 } + +// #include + +enum : uint { DISP_CHANGE_SUCCESSFUL = 0 } +enum : uint { DISP_CHANGE_RESTART = 1 } +enum { DISP_CHANGE_FAILED = -1 } +enum { DISP_CHANGE_BADMODE = -2 } +enum { DISP_CHANGE_NOTUPDATED = -3 } +enum { DISP_CHANGE_BADFLAGS = -4 } +enum { DISP_CHANGE_BADPARAM = -5 } +// #if(_WIN32_WINNT >= 0x0501) +enum { DISP_CHANGE_BADDUALVIEW = -6 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #ifdef _WINGDI_ +// #ifndef NOGDI + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #... +// #... + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #... + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0500 */ + +// #endif /* NOGDI */ +// #endif /* _WINGDI_ */ + +extern(Windows) export BOOL SystemParametersInfoA( + UINT uiAction, + UINT uiParam, + PVOID pvParam, + UINT fWinIni); +extern(Windows) export BOOL SystemParametersInfoW( + UINT uiAction, + UINT uiParam, + PVOID pvParam, + UINT fWinIni); +// #ifdef UNICODE +// #... +// #else +alias SystemParametersInfoA SystemParametersInfo; +// #endif // !UNICODE + +// #endif /* !NOSYSPARAMSINFO */ + +struct tagFILTERKEYS { + UINT cbSize; + DWORD dwFlags; + DWORD iWaitMSec; + DWORD iDelayMSec; + DWORD iRepeatMSec; + DWORD iBounceMSec; +} +alias tagFILTERKEYS FILTERKEYS; +alias tagFILTERKEYS* LPFILTERKEYS; + +enum : uint { FKF_FILTERKEYSON = 0x00000001 } +enum : uint { FKF_AVAILABLE = 0x00000002 } +enum : uint { FKF_HOTKEYACTIVE = 0x00000004 } +enum : uint { FKF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { FKF_HOTKEYSOUND = 0x00000010 } +enum : uint { FKF_INDICATOR = 0x00000020 } +enum : uint { FKF_CLICKON = 0x00000040 } + +struct tagSTICKYKEYS { + UINT cbSize; + DWORD dwFlags; +} +alias tagSTICKYKEYS STICKYKEYS; +alias tagSTICKYKEYS* LPSTICKYKEYS; + +enum : uint { SKF_STICKYKEYSON = 0x00000001 } +enum : uint { SKF_AVAILABLE = 0x00000002 } +enum : uint { SKF_HOTKEYACTIVE = 0x00000004 } +enum : uint { SKF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { SKF_HOTKEYSOUND = 0x00000010 } +enum : uint { SKF_INDICATOR = 0x00000020 } +enum : uint { SKF_AUDIBLEFEEDBACK = 0x00000040 } +enum : uint { SKF_TRISTATE = 0x00000080 } +enum : uint { SKF_TWOKEYSOFF = 0x00000100 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { SKF_LALTLATCHED = 0x10000000 } +enum : uint { SKF_LCTLLATCHED = 0x04000000 } +enum : uint { SKF_LSHIFTLATCHED = 0x01000000 } +enum : uint { SKF_RALTLATCHED = 0x20000000 } +enum : uint { SKF_RCTLLATCHED = 0x08000000 } +enum : uint { SKF_RSHIFTLATCHED = 0x02000000 } +enum : uint { SKF_LWINLATCHED = 0x40000000 } +enum : uint { SKF_RWINLATCHED = 0x80000000 } +enum : uint { SKF_LALTLOCKED = 0x00100000 } +enum : uint { SKF_LCTLLOCKED = 0x00040000 } +enum : uint { SKF_LSHIFTLOCKED = 0x00010000 } +enum : uint { SKF_RALTLOCKED = 0x00200000 } +enum : uint { SKF_RCTLLOCKED = 0x00080000 } +enum : uint { SKF_RSHIFTLOCKED = 0x00020000 } +enum : uint { SKF_LWINLOCKED = 0x00400000 } +enum : uint { SKF_RWINLOCKED = 0x00800000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +struct tagMOUSEKEYS { + UINT cbSize; + DWORD dwFlags; + DWORD iMaxSpeed; + DWORD iTimeToMaxSpeed; + DWORD iCtrlSpeed; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias tagMOUSEKEYS MOUSEKEYS; +alias tagMOUSEKEYS* LPMOUSEKEYS; + +enum : uint { MKF_MOUSEKEYSON = 0x00000001 } +enum : uint { MKF_AVAILABLE = 0x00000002 } +enum : uint { MKF_HOTKEYACTIVE = 0x00000004 } +enum : uint { MKF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { MKF_HOTKEYSOUND = 0x00000010 } +enum : uint { MKF_INDICATOR = 0x00000020 } +enum : uint { MKF_MODIFIERS = 0x00000040 } +enum : uint { MKF_REPLACENUMBERS = 0x00000080 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { MKF_LEFTBUTTONSEL = 0x10000000 } +enum : uint { MKF_RIGHTBUTTONSEL = 0x20000000 } +enum : uint { MKF_LEFTBUTTONDOWN = 0x01000000 } +enum : uint { MKF_RIGHTBUTTONDOWN = 0x02000000 } +enum : uint { MKF_MOUSEMODE = 0x80000000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +struct tagACCESSTIMEOUT { + UINT cbSize; + DWORD dwFlags; + DWORD iTimeOutMSec; +} +alias tagACCESSTIMEOUT ACCESSTIMEOUT; +alias tagACCESSTIMEOUT* LPACCESSTIMEOUT; + +enum : uint { ATF_TIMEOUTON = 0x00000001 } +enum : uint { ATF_ONOFFFEEDBACK = 0x00000002 } + +enum : uint { SSGF_NONE = 0 } +enum : uint { SSGF_DISPLAY = 3 } + +enum : uint { SSTF_NONE = 0 } +enum : uint { SSTF_CHARS = 1 } +enum : uint { SSTF_BORDER = 2 } +enum : uint { SSTF_DISPLAY = 3 } + +enum : uint { SSWF_NONE = 0 } +enum : uint { SSWF_TITLE = 1 } +enum : uint { SSWF_WINDOW = 2 } +enum : uint { SSWF_DISPLAY = 3 } +enum : uint { SSWF_CUSTOM = 4 } + +struct tagSOUNDSENTRYA { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias tagSOUNDSENTRYA SOUNDSENTRYA; +alias tagSOUNDSENTRYA* LPSOUNDSENTRYA; + +struct tagSOUNDSENTRYW { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPWSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias tagSOUNDSENTRYW SOUNDSENTRYW; +alias tagSOUNDSENTRYW* LPSOUNDSENTRYW; + +// #ifdef UNICODE +// ... +// #else +alias SOUNDSENTRYA SOUNDSENTRY; +alias LPSOUNDSENTRYA LPSOUNDSENTRY; +// #endif // UNICODE + +enum : uint { SSF_SOUNDSENTRYON = 0x00000001 } +enum : uint { SSF_AVAILABLE = 0x00000002 } +enum : uint { SSF_INDICATOR = 0x00000004 } + +struct tagTOGGLEKEYS { + UINT cbSize; + DWORD dwFlags; +} +alias tagTOGGLEKEYS TOGGLEKEYS; +alias tagTOGGLEKEYS* LPTOGGLEKEYS; + +enum : uint { TKF_TOGGLEKEYSON = 0x00000001 } +enum : uint { TKF_AVAILABLE = 0x00000002 } +enum : uint { TKF_HOTKEYACTIVE = 0x00000004 } +enum : uint { TKF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { TKF_HOTKEYSOUND = 0x00000010 } +enum : uint { TKF_INDICATOR = 0x00000020 } + +extern(Windows) export VOID SetDebugErrorLevel( + DWORD dwLevel); + +enum : uint { SLE_ERROR = 0x00000001 } +enum : uint { SLE_MINORERROR = 0x00000002 } +enum : uint { SLE_WARNING = 0x00000003 } + +extern(Windows) export VOID SetLastErrorEx( + DWORD dwErrCode, + DWORD dwType); + +// #if(WINVER >= 0x0500) + +enum : uint { MONITOR_DEFAULTTONULL = 0x00000000 } +enum : uint { MONITOR_DEFAULTTOPRIMARY = 0x00000001 } +enum : uint { MONITOR_DEFAULTTONEAREST = 0x00000002 } + +extern(Windows) export HMONITOR MonitorFromPoint( + POINT pt, + DWORD dwFlags); + +extern(Windows) export HMONITOR MonitorFromRect( + LPCRECT lprc, + DWORD dwFlags); + +extern(Windows) export HMONITOR MonitorFromWindow(HWND hwnd, DWORD dwFlags); + +enum : uint { MONITORINFOF_PRIMARY = 0x00000001 } + +// #ifndef CCHDEVICENAME +// #... +// #endif + +struct tagMONITORINFO { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; +} +alias tagMONITORINFO MONITORINFO; +alias tagMONITORINFO* LPMONITORINFO; + +// #ifdef __cplusplus +struct tagMONITORINFOEXA { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + CHAR szDevice[CCHDEVICENAME]; +} +alias tagMONITORINFOEXA MONITORINFOEXA; +alias tagMONITORINFOEXA* LPMONITORINFOEXA; + +struct tagMONITORINFOEXW { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + WCHAR szDevice[CCHDEVICENAME]; +} +alias tagMONITORINFOEXW MONITORINFOEXW; +alias tagMONITORINFOEXW* LPMONITORINFOEXW; + +// #ifdef UNICODE +// ... +// #else +alias MONITORINFOEXA MONITORINFOEX; +alias LPMONITORINFOEXA LPMONITORINFOEX; +// #endif // UNICODE +// #else // ndef __cplusplus +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif + +extern(Windows) export BOOL GetMonitorInfoA(HMONITOR hMonitor, LPMONITORINFO lpmi); +extern(Windows) export BOOL GetMonitorInfoW(HMONITOR hMonitor, LPMONITORINFO lpmi); +// #ifdef UNICODE +// #... +// #else +alias GetMonitorInfoA GetMonitorInfo; +// #endif // !UNICODE + +extern(Windows) alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; + +extern(Windows) export BOOL EnumDisplayMonitors( + HDC hdc, + LPCRECT lprcClip, + MONITORENUMPROC lpfnEnum, + LPARAM dwData); + +// #ifndef NOWINABLE + +extern(Windows) export VOID NotifyWinEvent( + DWORD event, + HWND hwnd, + LONG idObject, + LONG idChild); + +extern(Windows) alias VOID function( HWINEVENTHOOK hWinEventHook, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD idEventThread, DWORD dwmsEventTime) WINEVENTPROC; + +extern(Windows) export HWINEVENTHOOK SetWinEventHook( + DWORD eventMin, + DWORD eventMax, + HMODULE hmodWinEventProc, + WINEVENTPROC pfnWinEventProc, + DWORD idProcess, + DWORD idThread, + DWORD dwFlags); + +// #if(_WIN32_WINNT >= 0x0501) +extern(Windows) export BOOL IsWinEventHookInstalled( + DWORD event); +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { WINEVENT_OUTOFCONTEXT = 0x0000 } +enum : uint { WINEVENT_SKIPOWNTHREAD = 0x0001 } +enum : uint { WINEVENT_SKIPOWNPROCESS = 0x0002 } +enum : uint { WINEVENT_INCONTEXT = 0x0004 } + +extern(Windows) export BOOL UnhookWinEvent( + HWINEVENTHOOK hWinEventHook); + +enum : uint { CHILDID_SELF = 0 } +enum : uint { INDEXID_OBJECT = 0 } +enum : uint { INDEXID_CONTAINER = 0 } + +enum : uint { OBJID_WINDOW = cast(LONG)0x00000000 } +enum : uint { OBJID_SYSMENU = cast(LONG)0xFFFFFFFF } +enum : uint { OBJID_TITLEBAR = cast(LONG)0xFFFFFFFE } +enum : uint { OBJID_MENU = cast(LONG)0xFFFFFFFD } +enum : uint { OBJID_CLIENT = cast(LONG)0xFFFFFFFC } +enum : uint { OBJID_VSCROLL = cast(LONG)0xFFFFFFFB } +enum : uint { OBJID_HSCROLL = cast(LONG)0xFFFFFFFA } +enum : uint { OBJID_SIZEGRIP = cast(LONG)0xFFFFFFF9 } +enum : uint { OBJID_CARET = cast(LONG)0xFFFFFFF8 } +enum : uint { OBJID_CURSOR = cast(LONG)0xFFFFFFF7 } +enum : uint { OBJID_ALERT = cast(LONG)0xFFFFFFF6 } +enum : uint { OBJID_SOUND = cast(LONG)0xFFFFFFF5 } +enum : uint { OBJID_QUERYCLASSNAMEIDX = cast(LONG)0xFFFFFFF4 } +enum : uint { OBJID_NATIVEOM = cast(LONG)0xFFFFFFF0 } + +enum : uint { EVENT_MIN = 0x00000001 } +enum : uint { EVENT_MAX = 0x7FFFFFFF } + +enum : uint { EVENT_SYSTEM_SOUND = 0x0001 } + +enum : uint { EVENT_SYSTEM_ALERT = 0x0002 } + +enum : uint { EVENT_SYSTEM_FOREGROUND = 0x0003 } + +enum : uint { EVENT_SYSTEM_MENUSTART = 0x0004 } +enum : uint { EVENT_SYSTEM_MENUEND = 0x0005 } + +enum : uint { EVENT_SYSTEM_MENUPOPUPSTART = 0x0006 } +enum : uint { EVENT_SYSTEM_MENUPOPUPEND = 0x0007 } + +enum : uint { EVENT_SYSTEM_CAPTURESTART = 0x0008 } +enum : uint { EVENT_SYSTEM_CAPTUREEND = 0x0009 } + +enum : uint { EVENT_SYSTEM_MOVESIZESTART = 0x000A } +enum : uint { EVENT_SYSTEM_MOVESIZEEND = 0x000B } + +enum : uint { EVENT_SYSTEM_CONTEXTHELPSTART = 0x000C } +enum : uint { EVENT_SYSTEM_CONTEXTHELPEND = 0x000D } + +enum : uint { EVENT_SYSTEM_DRAGDROPSTART = 0x000E } +enum : uint { EVENT_SYSTEM_DRAGDROPEND = 0x000F } + +enum : uint { EVENT_SYSTEM_DIALOGSTART = 0x0010 } +enum : uint { EVENT_SYSTEM_DIALOGEND = 0x0011 } + +enum : uint { EVENT_SYSTEM_SCROLLINGSTART = 0x0012 } +enum : uint { EVENT_SYSTEM_SCROLLINGEND = 0x0013 } + +enum : uint { EVENT_SYSTEM_SWITCHSTART = 0x0014 } +enum : uint { EVENT_SYSTEM_SWITCHEND = 0x0015 } + +enum : uint { EVENT_SYSTEM_MINIMIZESTART = 0x0016 } +enum : uint { EVENT_SYSTEM_MINIMIZEEND = 0x0017 } + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { EVENT_CONSOLE_CARET = 0x4001 } +enum : uint { EVENT_CONSOLE_UPDATE_REGION = 0x4002 } +enum : uint { EVENT_CONSOLE_UPDATE_SIMPLE = 0x4003 } +enum : uint { EVENT_CONSOLE_UPDATE_SCROLL = 0x4004 } +enum : uint { EVENT_CONSOLE_LAYOUT = 0x4005 } +enum : uint { EVENT_CONSOLE_START_APPLICATION = 0x4006 } +enum : uint { EVENT_CONSOLE_END_APPLICATION = 0x4007 } + +enum : uint { CONSOLE_APPLICATION_16BIT = 0x0001 } + +enum : uint { CONSOLE_CARET_SELECTION = 0x0001 } +enum : uint { CONSOLE_CARET_VISIBLE = 0x0002 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { EVENT_OBJECT_CREATE = 0x8000 } +enum : uint { EVENT_OBJECT_DESTROY = 0x8001 } +enum : uint { EVENT_OBJECT_SHOW = 0x8002 } +enum : uint { EVENT_OBJECT_HIDE = 0x8003 } +enum : uint { EVENT_OBJECT_REORDER = 0x8004 } + +enum : uint { EVENT_OBJECT_FOCUS = 0x8005 } +enum : uint { EVENT_OBJECT_SELECTION = 0x8006 } +enum : uint { EVENT_OBJECT_SELECTIONADD = 0x8007 } +enum : uint { EVENT_OBJECT_SELECTIONREMOVE = 0x8008 } +enum : uint { EVENT_OBJECT_SELECTIONWITHIN = 0x8009 } + +enum : uint { EVENT_OBJECT_STATECHANGE = 0x800A } + +enum : uint { EVENT_OBJECT_LOCATIONCHANGE = 0x800B } + +enum : uint { EVENT_OBJECT_NAMECHANGE = 0x800C } +enum : uint { EVENT_OBJECT_DESCRIPTIONCHANGE = 0x800D } +enum : uint { EVENT_OBJECT_VALUECHANGE = 0x800E } +enum : uint { EVENT_OBJECT_PARENTCHANGE = 0x800F } +enum : uint { EVENT_OBJECT_HELPCHANGE = 0x8010 } +enum : uint { EVENT_OBJECT_DEFACTIONCHANGE = 0x8011 } +enum : uint { EVENT_OBJECT_ACCELERATORCHANGE = 0x8012 } + +enum : uint { SOUND_SYSTEM_STARTUP = 1 } +enum : uint { SOUND_SYSTEM_SHUTDOWN = 2 } +enum : uint { SOUND_SYSTEM_BEEP = 3 } +enum : uint { SOUND_SYSTEM_ERROR = 4 } +enum : uint { SOUND_SYSTEM_QUESTION = 5 } +enum : uint { SOUND_SYSTEM_WARNING = 6 } +enum : uint { SOUND_SYSTEM_INFORMATION = 7 } +enum : uint { SOUND_SYSTEM_MAXIMIZE = 8 } +enum : uint { SOUND_SYSTEM_MINIMIZE = 9 } +enum : uint { SOUND_SYSTEM_RESTOREUP = 10 } +enum : uint { SOUND_SYSTEM_RESTOREDOWN = 11 } +enum : uint { SOUND_SYSTEM_APPSTART = 12 } +enum : uint { SOUND_SYSTEM_FAULT = 13 } +enum : uint { SOUND_SYSTEM_APPEND = 14 } +enum : uint { SOUND_SYSTEM_MENUCOMMAND = 15 } +enum : uint { SOUND_SYSTEM_MENUPOPUP = 16 } +enum : uint { CSOUND_SYSTEM = 16 } + +enum : uint { ALERT_SYSTEM_INFORMATIONAL = 1 } +enum : uint { ALERT_SYSTEM_WARNING = 2 } +enum : uint { ALERT_SYSTEM_ERROR = 3 } +enum : uint { ALERT_SYSTEM_QUERY = 4 } +enum : uint { ALERT_SYSTEM_CRITICAL = 5 } +enum : uint { CALERT_SYSTEM = 6 } + +struct tagGUITHREADINFO { + DWORD cbSize; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; +} +alias tagGUITHREADINFO GUITHREADINFO; +alias tagGUITHREADINFO* PGUITHREADINFO; +alias tagGUITHREADINFO* LPGUITHREADINFO; + +enum : uint { GUI_CARETBLINKING = 0x00000001 } +enum : uint { GUI_INMOVESIZE = 0x00000002 } +enum : uint { GUI_INMENUMODE = 0x00000004 } +enum : uint { GUI_SYSTEMMENUMODE = 0x00000008 } +enum : uint { GUI_POPUPMENUMODE = 0x00000010 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { GUI_16BITTASK = 0x00000020 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export BOOL GetGUIThreadInfo( + DWORD idThread, + PGUITHREADINFO pgui); + +extern(Windows) export UINT GetWindowModuleFileNameA( + HWND hwnd, + LPSTR pszFileName, + UINT cchFileNameMax); +extern(Windows) export UINT GetWindowModuleFileNameW( + HWND hwnd, + LPWSTR pszFileName, + UINT cchFileNameMax); +// #ifdef UNICODE +// #... +// #else +alias GetWindowModuleFileNameA GetWindowModuleFileName; +// #endif // !UNICODE + +// #ifndef NO_STATE_FLAGS +enum : uint { STATE_SYSTEM_UNAVAILABLE = 0x00000001 } +enum : uint { STATE_SYSTEM_SELECTED = 0x00000002 } +enum : uint { STATE_SYSTEM_FOCUSED = 0x00000004 } +enum : uint { STATE_SYSTEM_PRESSED = 0x00000008 } +enum : uint { STATE_SYSTEM_CHECKED = 0x00000010 } +enum : uint { STATE_SYSTEM_MIXED = 0x00000020 } +alias STATE_SYSTEM_MIXED STATE_SYSTEM_INDETERMINATE; +enum : uint { STATE_SYSTEM_READONLY = 0x00000040 } +enum : uint { STATE_SYSTEM_HOTTRACKED = 0x00000080 } +enum : uint { STATE_SYSTEM_DEFAULT = 0x00000100 } +enum : uint { STATE_SYSTEM_EXPANDED = 0x00000200 } +enum : uint { STATE_SYSTEM_COLLAPSED = 0x00000400 } +enum : uint { STATE_SYSTEM_BUSY = 0x00000800 } +enum : uint { STATE_SYSTEM_FLOATING = 0x00001000 } +enum : uint { STATE_SYSTEM_MARQUEED = 0x00002000 } +enum : uint { STATE_SYSTEM_ANIMATED = 0x00004000 } +enum : uint { STATE_SYSTEM_INVISIBLE = 0x00008000 } +enum : uint { STATE_SYSTEM_OFFSCREEN = 0x00010000 } +enum : uint { STATE_SYSTEM_SIZEABLE = 0x00020000 } +enum : uint { STATE_SYSTEM_MOVEABLE = 0x00040000 } +enum : uint { STATE_SYSTEM_SELFVOICING = 0x00080000 } +enum : uint { STATE_SYSTEM_FOCUSABLE = 0x00100000 } +enum : uint { STATE_SYSTEM_SELECTABLE = 0x00200000 } +enum : uint { STATE_SYSTEM_LINKED = 0x00400000 } +enum : uint { STATE_SYSTEM_TRAVERSED = 0x00800000 } +enum : uint { STATE_SYSTEM_MULTISELECTABLE = 0x01000000 } +enum : uint { STATE_SYSTEM_EXTSELECTABLE = 0x02000000 } +enum : uint { STATE_SYSTEM_ALERT_LOW = 0x04000000 } +enum : uint { STATE_SYSTEM_ALERT_MEDIUM = 0x08000000 } +enum : uint { STATE_SYSTEM_ALERT_HIGH = 0x10000000 } +enum : uint { STATE_SYSTEM_PROTECTED = 0x20000000 } +enum : uint { STATE_SYSTEM_VALID = 0x3FFFFFFF } +// #endif + +enum : uint { CCHILDREN_TITLEBAR = 5 } +enum : uint { CCHILDREN_SCROLLBAR = 5 } + +struct tagCURSORINFO { + DWORD cbSize; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; +} +alias tagCURSORINFO CURSORINFO; +alias tagCURSORINFO* PCURSORINFO; +alias tagCURSORINFO* LPCURSORINFO; + +enum : uint { CURSOR_SHOWING = 0x00000001 } + +extern(Windows) export BOOL GetCursorInfo( + PCURSORINFO pci +); + +struct tagWINDOWINFO { + DWORD cbSize; + RECT rcWindow; + RECT rcClient; + DWORD dwStyle; + DWORD dwExStyle; + DWORD dwWindowStatus; + UINT cxWindowBorders; + UINT cyWindowBorders; + ATOM atomWindowType; + WORD wCreatorVersion; +} +alias tagWINDOWINFO WINDOWINFO; +alias tagWINDOWINFO* PWINDOWINFO; +alias tagWINDOWINFO* LPWINDOWINFO; + +enum : uint { WS_ACTIVECAPTION = 0x0001 } + +extern(Windows) export BOOL GetWindowInfo( + HWND hwnd, + PWINDOWINFO pwi +); + +struct tagTITLEBARINFO { + DWORD cbSize; + RECT rcTitleBar; + DWORD rgstate[CCHILDREN_TITLEBAR+1]; +} +alias tagTITLEBARINFO TITLEBARINFO; +alias tagTITLEBARINFO* PTITLEBARINFO; +alias tagTITLEBARINFO* LPTITLEBARINFO; + +extern(Windows) export BOOL GetTitleBarInfo( + HWND hwnd, + PTITLEBARINFO pti +); + +struct tagMENUBARINFO { + DWORD cbSize; + RECT rcBar; + HMENU hMenu; + HWND hwndMenu; +// BOOL fBarFocused:1; +// BOOL fFocused:1; +} +alias tagMENUBARINFO MENUBARINFO; +alias tagMENUBARINFO* PMENUBARINFO; +alias tagMENUBARINFO* LPMENUBARINFO; + +extern(Windows) export BOOL GetMenuBarInfo( + HWND hwnd, + LONG idObject, + LONG idItem, + PMENUBARINFO pmbi +); + +struct tagSCROLLBARINFO { + DWORD cbSize; + RECT rcScrollBar; + int dxyLineButton; + int xyThumbTop; + int xyThumbBottom; + int reserved; + DWORD rgstate[CCHILDREN_SCROLLBAR+1]; +} +alias tagSCROLLBARINFO SCROLLBARINFO; +alias tagSCROLLBARINFO* PSCROLLBARINFO; +alias tagSCROLLBARINFO* LPSCROLLBARINFO; + +extern(Windows) export BOOL GetScrollBarInfo( + HWND hwnd, + LONG idObject, + PSCROLLBARINFO psbi +); + +struct tagCOMBOBOXINFO { + DWORD cbSize; + RECT rcItem; + RECT rcButton; + DWORD stateButton; + HWND hwndCombo; + HWND hwndItem; + HWND hwndList; +} +alias tagCOMBOBOXINFO COMBOBOXINFO; +alias tagCOMBOBOXINFO* PCOMBOBOXINFO; +alias tagCOMBOBOXINFO* LPCOMBOBOXINFO; + +extern(Windows) export BOOL GetComboBoxInfo( + HWND hwndCombo, + PCOMBOBOXINFO pcbi +); + +enum : uint { GA_PARENT = 1 } +enum : uint { GA_ROOT = 2 } +enum : uint { GA_ROOTOWNER = 3 } + +extern(Windows) export HWND GetAncestor( + HWND hwnd, + UINT gaFlags +); + +extern(Windows) export HWND RealChildWindowFromPoint( + HWND hwndParent, + POINT ptParentClientCoords +); + +extern(Windows) export UINT RealGetWindowClassA( + HWND hwnd, + LPSTR pszType, + UINT cchType +); + +extern(Windows) export UINT RealGetWindowClassW( + HWND hwnd, + LPWSTR pszType, + UINT cchType +); +// #ifdef UNICODE +// #... +// #else +alias RealGetWindowClassA RealGetWindowClass; +// #endif // !UNICODE + +struct tagALTTABINFO { + DWORD cbSize; + int cItems; + int cColumns; + int cRows; + int iColFocus; + int iRowFocus; + int cxItem; + int cyItem; + POINT ptStart; +} +alias tagALTTABINFO ALTTABINFO; +alias tagALTTABINFO* PALTTABINFO; +alias tagALTTABINFO* LPALTTABINFO; + +extern(Windows) export BOOL GetAltTabInfoA( + HWND hwnd, + int iItem, + PALTTABINFO pati, + LPSTR pszItemText, + UINT cchItemText +); +extern(Windows) export BOOL GetAltTabInfoW( + HWND hwnd, + int iItem, + PALTTABINFO pati, + LPWSTR pszItemText, + UINT cchItemText +); +// #ifdef UNICODE +// #... +// #else +alias GetAltTabInfoA GetAltTabInfo; +// #endif // !UNICODE + +extern(Windows) export DWORD GetListBoxInfo( + HWND hwnd +); + +// #endif /* NOWINABLE */ +// #endif /* WINVER >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL LockWorkStation(); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL UserHandleGrantAccess( + HANDLE hUserHandle, + HANDLE hJob, + BOOL bGrant); + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) + +alias void* HRAWINPUT; + +// #define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff) + +enum : uint { RIM_INPUT = 0 } + +enum : uint { RIM_INPUTSINK = 1 } + +struct tagRAWINPUTHEADER { + DWORD dwType; + DWORD dwSize; + HANDLE hDevice; + WPARAM wParam; +} +alias tagRAWINPUTHEADER RAWINPUTHEADER; +alias tagRAWINPUTHEADER* PRAWINPUTHEADER; +alias tagRAWINPUTHEADER* LPRAWINPUTHEADER; + +enum : uint { RIM_TYPEMOUSE = 0 } +enum : uint { RIM_TYPEKEYBOARD = 1 } +enum : uint { RIM_TYPEHID = 2 } + +struct tagRAWMOUSE { + + USHORT usFlags; +union { + ULONG ulButtons; +struct { + USHORT usButtonFlags; + USHORT usButtonData; +} + +} + + ULONG ulRawButtons; + LONG lLastX; + LONG lLastY; + ULONG ulExtraInformation; +} +alias tagRAWMOUSE RAWMOUSE; +alias tagRAWMOUSE* PRAWMOUSE; +alias tagRAWMOUSE* LPRAWMOUSE; + +enum : uint { RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001 } +enum : uint { RI_MOUSE_LEFT_BUTTON_UP = 0x0002 } +enum : uint { RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004 } +enum : uint { RI_MOUSE_RIGHT_BUTTON_UP = 0x0008 } +enum : uint { RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010 } +enum : uint { RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020 } + +alias RI_MOUSE_LEFT_BUTTON_DOWN RI_MOUSE_BUTTON_1_DOWN; +alias RI_MOUSE_LEFT_BUTTON_UP RI_MOUSE_BUTTON_1_UP; +alias RI_MOUSE_RIGHT_BUTTON_DOWN RI_MOUSE_BUTTON_2_DOWN; +alias RI_MOUSE_RIGHT_BUTTON_UP RI_MOUSE_BUTTON_2_UP; +alias RI_MOUSE_MIDDLE_BUTTON_DOWN RI_MOUSE_BUTTON_3_DOWN; +alias RI_MOUSE_MIDDLE_BUTTON_UP RI_MOUSE_BUTTON_3_UP; + +enum : uint { RI_MOUSE_BUTTON_4_DOWN = 0x0040 } +enum : uint { RI_MOUSE_BUTTON_4_UP = 0x0080 } +enum : uint { RI_MOUSE_BUTTON_5_DOWN = 0x0100 } +enum : uint { RI_MOUSE_BUTTON_5_UP = 0x0200 } + +enum : uint { RI_MOUSE_WHEEL = 0x0400 } + +enum : uint { MOUSE_MOVE_RELATIVE = 0 } +enum : uint { MOUSE_MOVE_ABSOLUTE = 1 } +enum : uint { MOUSE_VIRTUAL_DESKTOP = 0x02 } +enum : uint { MOUSE_ATTRIBUTES_CHANGED = 0x04 } + +struct tagRAWKEYBOARD { + + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + USHORT VKey; + UINT Message; + ULONG ExtraInformation; +} +alias tagRAWKEYBOARD RAWKEYBOARD; +alias tagRAWKEYBOARD* PRAWKEYBOARD; +alias tagRAWKEYBOARD* LPRAWKEYBOARD; + +enum : uint { KEYBOARD_OVERRUN_MAKE_CODE = 0xFF } + +enum : uint { RI_KEY_MAKE = 0 } +enum : uint { RI_KEY_BREAK = 1 } +enum : uint { RI_KEY_E0 = 2 } +enum : uint { RI_KEY_E1 = 4 } +enum : uint { RI_KEY_TERMSRV_SET_LED = 8 } +enum : uint { RI_KEY_TERMSRV_SHADOW = 0x10 } + +struct tagRAWHID { + DWORD dwSizeHid; + DWORD dwCount; + BYTE bRawData[1]; +} +alias tagRAWHID RAWHID; +alias tagRAWHID* PRAWHID; +alias tagRAWHID* LPRAWHID; + +struct tagRAWINPUT { + RAWINPUTHEADER header; +union { + RAWMOUSE mouse; + RAWKEYBOARD keyboard; + RAWHID hid; +} + +} +alias tagRAWINPUT RAWINPUT; +alias tagRAWINPUT* PRAWINPUT; +alias tagRAWINPUT* LPRAWINPUT; + +// #ifdef _WIN64 +// #... +// #else // _WIN64 +uint RAWINPUT_ALIGN(uint x){ return ((x + DWORD.sizeof - 1) & ~(DWORD.sizeof - 1)); } +// #endif // _WIN64 + +// #define NEXTRAWINPUTBLOCK(ptr) ((PRAWINPUT)RAWINPUT_ALIGN((ULONG_PTR)((PBYTE)(ptr) + (ptr)->header.dwSize))) + +enum : uint { RID_INPUT = 0x10000003 } +enum : uint { RID_HEADER = 0x10000005 } + +extern(Windows) export UINT GetRawInputData( + HRAWINPUT hRawInput, + UINT uiCommand, + LPVOID pData, + PUINT pcbSize, + UINT cbSizeHeader); + +enum : uint { RIDI_PREPARSEDDATA = 0x20000005 } +enum : uint { RIDI_DEVICENAME = 0x20000007 } +enum : uint { RIDI_DEVICEINFO = 0x2000000b } + +struct tagRID_DEVICE_INFO_MOUSE { + DWORD dwId; + DWORD dwNumberOfButtons; + DWORD dwSampleRate; +} +alias tagRID_DEVICE_INFO_MOUSE RID_DEVICE_INFO_MOUSE; +alias tagRID_DEVICE_INFO_MOUSE* PRID_DEVICE_INFO_MOUSE; + +struct tagRID_DEVICE_INFO_KEYBOARD { + DWORD dwType; + DWORD dwSubType; + DWORD dwKeyboardMode; + DWORD dwNumberOfFunctionKeys; + DWORD dwNumberOfIndicators; + DWORD dwNumberOfKeysTotal; +} +alias tagRID_DEVICE_INFO_KEYBOARD RID_DEVICE_INFO_KEYBOARD; +alias tagRID_DEVICE_INFO_KEYBOARD* PRID_DEVICE_INFO_KEYBOARD; + +struct tagRID_DEVICE_INFO_HID { + DWORD dwVendorId; + DWORD dwProductId; + DWORD dwVersionNumber; + USHORT usUsagePage; + USHORT usUsage; +} +alias tagRID_DEVICE_INFO_HID RID_DEVICE_INFO_HID; +alias tagRID_DEVICE_INFO_HID* PRID_DEVICE_INFO_HID; + +struct tagRID_DEVICE_INFO { + DWORD cbSize; + DWORD dwType; +union { + RID_DEVICE_INFO_MOUSE mouse; + RID_DEVICE_INFO_KEYBOARD keyboard; + RID_DEVICE_INFO_HID hid; +} + +} +alias tagRID_DEVICE_INFO RID_DEVICE_INFO; +alias tagRID_DEVICE_INFO* PRID_DEVICE_INFO; +alias tagRID_DEVICE_INFO* LPRID_DEVICE_INFO; + +extern(Windows) export UINT GetRawInputDeviceInfoA( + HANDLE hDevice, + UINT uiCommand, + LPVOID pData, + PUINT pcbSize); +extern(Windows) export UINT GetRawInputDeviceInfoW( + HANDLE hDevice, + UINT uiCommand, + LPVOID pData, + PUINT pcbSize); +// #ifdef UNICODE +// #... +// #else +alias GetRawInputDeviceInfoA GetRawInputDeviceInfo; +// #endif // !UNICODE + +extern(Windows) export UINT GetRawInputBuffer( + PRAWINPUT pData, + PUINT pcbSize, + UINT cbSizeHeader); + +struct tagRAWINPUTDEVICE { + USHORT usUsagePage; + USHORT usUsage; + DWORD dwFlags; + HWND hwndTarget; +} +alias tagRAWINPUTDEVICE RAWINPUTDEVICE; +alias tagRAWINPUTDEVICE* PRAWINPUTDEVICE; +alias tagRAWINPUTDEVICE* LPRAWINPUTDEVICE; + +alias RAWINPUTDEVICE* PCRAWINPUTDEVICE; + +enum : uint { RIDEV_REMOVE = 0x00000001 } +enum : uint { RIDEV_EXCLUDE = 0x00000010 } +enum : uint { RIDEV_PAGEONLY = 0x00000020 } +enum : uint { RIDEV_NOLEGACY = 0x00000030 } +enum : uint { RIDEV_CAPTUREMOUSE = 0x00000200 } +enum : uint { RIDEV_NOHOTKEYS = 0x00000200 } +enum : uint { RIDEV_EXMODEMASK = 0x000000F0 } + +// #define RIDEV_EXMODE(mode) ((mode) & RIDEV_EXMODEMASK) + +extern(Windows) export BOOL RegisterRawInputDevices( + PCRAWINPUTDEVICE pRawInputDevices, + UINT uiNumDevices, + UINT cbSize); + +extern(Windows) export UINT GetRegisteredRawInputDevices( + PRAWINPUTDEVICE pRawInputDevices, + PUINT puiNumDevices, + UINT cbSize); + +struct tagRAWINPUTDEVICELIST { + HANDLE hDevice; + DWORD dwType; +} +alias tagRAWINPUTDEVICELIST RAWINPUTDEVICELIST; +alias tagRAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; + +extern(Windows) export UINT GetRawInputDeviceList( + PRAWINPUTDEVICELIST pRawInputDeviceList, + PUINT puiNumDevices, + UINT cbSize); + +extern(Windows) export LRESULT DefRawInputProc( + PRAWINPUT* paRawInput, + INT nInput, + UINT cbSizeHeader); + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED +// #... +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #endif /* !_WINUSER_ */ + ADDED src/win32/ansi/winver.d Index: src/win32/ansi/winver.d ================================================================== --- src/win32/ansi/winver.d +++ src/win32/ansi/winver.d @@ -0,0 +1,247 @@ +module win32.ansi.winver; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.ansi.winuser; + +// #ifndef VER_H +// #define VER_H + +// #ifdef __cplusplus +// extern "C" { +// #endif + +alias RT_VERSION VS_FILE_INFO; +enum : uint { VS_VERSION_INFO = 1 } +enum : uint { VS_USER_DEFINED = 100 } + +// #ifndef _MAC +enum : uint { VS_FFI_SIGNATURE = 0xFEEF04BD } +// #else +// #... +// #endif +enum : uint { VS_FFI_STRUCVERSION = 0x00010000 } +enum : uint { VS_FFI_FILEFLAGSMASK = 0x0000003F } + +enum : uint { VS_FF_DEBUG = 0x00000001 } +enum : uint { VS_FF_PRERELEASE = 0x00000002 } +enum : uint { VS_FF_PATCHED = 0x00000004 } +enum : uint { VS_FF_PRIVATEBUILD = 0x00000008 } +enum : uint { VS_FF_INFOINFERRED = 0x00000010 } +enum : uint { VS_FF_SPECIALBUILD = 0x00000020 } + +enum : uint { VOS_UNKNOWN = 0x00000000 } +enum : uint { VOS_DOS = 0x00010000 } +enum : uint { VOS_OS216 = 0x00020000 } +enum : uint { VOS_OS232 = 0x00030000 } +enum : uint { VOS_NT = 0x00040000 } + +enum : uint { VOS__BASE = 0x00000000 } +enum : uint { VOS__WINDOWS16 = 0x00000001 } +enum : uint { VOS__PM16 = 0x00000002 } +enum : uint { VOS__PM32 = 0x00000003 } +enum : uint { VOS__WINDOWS32 = 0x00000004 } + +enum : uint { VOS_DOS_WINDOWS16 = 0x00010001 } +enum : uint { VOS_DOS_WINDOWS32 = 0x00010004 } +enum : uint { VOS_OS216_PM16 = 0x00020002 } +enum : uint { VOS_OS232_PM32 = 0x00030003 } +enum : uint { VOS_NT_WINDOWS32 = 0x00040004 } + +enum : uint { VFT_UNKNOWN = 0x00000000 } +enum : uint { VFT_APP = 0x00000001 } +enum : uint { VFT_DLL = 0x00000002 } +enum : uint { VFT_DRV = 0x00000003 } +enum : uint { VFT_FONT = 0x00000004 } +enum : uint { VFT_VXD = 0x00000005 } +enum : uint { VFT_STATIC_LIB = 0x00000007 } + +enum : uint { VFT2_UNKNOWN = 0x00000000 } +enum : uint { VFT2_DRV_PRINTER = 0x00000001 } +enum : uint { VFT2_DRV_KEYBOARD = 0x00000002 } +enum : uint { VFT2_DRV_LANGUAGE = 0x00000003 } +enum : uint { VFT2_DRV_DISPLAY = 0x00000004 } +enum : uint { VFT2_DRV_MOUSE = 0x00000005 } +enum : uint { VFT2_DRV_NETWORK = 0x00000006 } +enum : uint { VFT2_DRV_SYSTEM = 0x00000007 } +enum : uint { VFT2_DRV_INSTALLABLE = 0x00000008 } +enum : uint { VFT2_DRV_SOUND = 0x00000009 } +enum : uint { VFT2_DRV_COMM = 0x0000000A } +enum : uint { VFT2_DRV_INPUTMETHOD = 0x0000000B } +enum : uint { VFT2_DRV_VERSIONED_PRINTER = 0x0000000C } + +enum : uint { VFT2_FONT_RASTER = 0x00000001 } +enum : uint { VFT2_FONT_VECTOR = 0x00000002 } +enum : uint { VFT2_FONT_TRUETYPE = 0x00000003 } + +enum : uint { VFFF_ISSHAREDFILE = 0x0001 } + +enum : uint { VFF_CURNEDEST = 0x0001 } +enum : uint { VFF_FILEINUSE = 0x0002 } +enum : uint { VFF_BUFFTOOSMALL = 0x0004 } + +enum : uint { VIFF_FORCEINSTALL = 0x0001 } +enum : uint { VIFF_DONTDELETEOLD = 0x0002 } + +enum : uint { VIF_TEMPFILE = 0x00000001 } +enum : uint { VIF_MISMATCH = 0x00000002 } +enum : uint { VIF_SRCOLD = 0x00000004 } + +enum : uint { VIF_DIFFLANG = 0x00000008 } +enum : uint { VIF_DIFFCODEPG = 0x00000010 } +enum : uint { VIF_DIFFTYPE = 0x00000020 } + +enum : uint { VIF_WRITEPROT = 0x00000040 } +enum : uint { VIF_FILEINUSE = 0x00000080 } +enum : uint { VIF_OUTOFSPACE = 0x00000100 } +enum : uint { VIF_ACCESSVIOLATION = 0x00000200 } +enum : uint { VIF_SHARINGVIOLATION = 0x00000400 } +enum : uint { VIF_CANNOTCREATE = 0x00000800 } +enum : uint { VIF_CANNOTDELETE = 0x00001000 } +enum : uint { VIF_CANNOTRENAME = 0x00002000 } +enum : uint { VIF_CANNOTDELETECUR = 0x00004000 } +enum : uint { VIF_OUTOFMEMORY = 0x00008000 } + +enum : uint { VIF_CANNOTREADSRC = 0x00010000 } +enum : uint { VIF_CANNOTREADDST = 0x00020000 } + +enum : uint { VIF_BUFFTOOSMALL = 0x00040000 } +enum : uint { VIF_CANNOTLOADLZ32 = 0x00080000 } +enum : uint { VIF_CANNOTLOADCABINET = 0x00100000 } + +// #ifndef RC_INVOKED /* RC doesn't need to see the rest of this */ + +struct tagVS_FIXEDFILEINFO { + DWORD dwSignature; + DWORD dwStrucVersion; + DWORD dwFileVersionMS; + DWORD dwFileVersionLS; + DWORD dwProductVersionMS; + DWORD dwProductVersionLS; + DWORD dwFileFlagsMask; + DWORD dwFileFlags; + DWORD dwFileOS; + DWORD dwFileType; + DWORD dwFileSubtype; + DWORD dwFileDateMS; + DWORD dwFileDateLS; +} +alias tagVS_FIXEDFILEINFO VS_FIXEDFILEINFO; + +extern(Windows) export DWORD VerFindFileA( + DWORD uFlags, + LPSTR szFileName, + LPSTR szWinDir, + LPSTR szAppDir, + LPSTR szCurDir, + PUINT lpuCurDirLen, + LPSTR szDestDir, + PUINT lpuDestDirLen); +extern(Windows) export DWORD VerFindFileW( + DWORD uFlags, + LPWSTR szFileName, + LPWSTR szWinDir, + LPWSTR szAppDir, + LPWSTR szCurDir, + PUINT lpuCurDirLen, + LPWSTR szDestDir, + PUINT lpuDestDirLen); +// #ifdef UNICODE +// #... +// #else +alias VerFindFileA VerFindFile; +// #endif // !UNICODE + +extern(Windows) export DWORD VerInstallFileA( + DWORD uFlags, + LPSTR szSrcFileName, + LPSTR szDestFileName, + LPSTR szSrcDir, + LPSTR szDestDir, + LPSTR szCurDir, + LPSTR szTmpFile, + PUINT lpuTmpFileLen); +extern(Windows) export DWORD VerInstallFileW( + DWORD uFlags, + LPWSTR szSrcFileName, + LPWSTR szDestFileName, + LPWSTR szSrcDir, + LPWSTR szDestDir, + LPWSTR szCurDir, + LPWSTR szTmpFile, + PUINT lpuTmpFileLen); +// #ifdef UNICODE +// #... +// #else +alias VerInstallFileA VerInstallFile; +// #endif // !UNICODE + +extern(Windows) export DWORD GetFileVersionInfoSizeA( + LPSTR lptstrFilename, + LPDWORD lpdwHandle); + +extern(Windows) export DWORD GetFileVersionInfoSizeW( + LPWSTR lptstrFilename, + LPDWORD lpdwHandle); +// #ifdef UNICODE +// #... +// #else +alias GetFileVersionInfoSizeA GetFileVersionInfoSize; +// #endif // !UNICODE + +extern(Windows) export BOOL GetFileVersionInfoA( + LPSTR lptstrFilename, + DWORD dwHandle, + DWORD dwLen, + LPVOID lpData); + +extern(Windows) export BOOL GetFileVersionInfoW( + LPWSTR lptstrFilename, + DWORD dwHandle, + DWORD dwLen, + LPVOID lpData); +// #ifdef UNICODE +// #... +// #else +alias GetFileVersionInfoA GetFileVersionInfo; +// #endif // !UNICODE + +extern(Windows) export DWORD VerLanguageNameA( + DWORD wLang, + LPSTR szLang, + DWORD nSize); +extern(Windows) export DWORD VerLanguageNameW( + DWORD wLang, + LPWSTR szLang, + DWORD nSize); +// #ifdef UNICODE +// #... +// #else +alias VerLanguageNameA VerLanguageName; +// #endif // !UNICODE + +extern(Windows) export BOOL VerQueryValueA( + LPVOID pBlock, + LPSTR lpSubBlock, + LPVOID * lplpBuffer, + PUINT puLen); +extern(Windows) export BOOL VerQueryValueW( + LPVOID pBlock, + LPWSTR lpSubBlock, + LPVOID * lplpBuffer, + PUINT puLen); +// #ifdef UNICODE +// #... +// #else +alias VerQueryValueA VerQueryValue; +// #endif // !UNICODE + +// #endif /* !RC_INVOKED */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif /* !VER_H */ + ADDED src/win32/commctrl.d Index: src/win32/commctrl.d ================================================================== --- src/win32/commctrl.d +++ src/win32/commctrl.d @@ -0,0 +1,7600 @@ +module win32.commctrl; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.winuser; +alias void _PSP; +alias void _IMAGELIST; +alias void _TREEITEM; +alias LPTBSAVEPARAMW LPTBSAVEPARAMSW; +alias PCCOMBOEXITEMA PCCOMBOBOXEXITEMA; +alias PCCOMBOEXITEMW PCCOMBOBOXEXITEMW; +enum : uint { + NM_FIRST = 0, + SB_SETTIPTEXTA = WM_USER + 16, + SB_SETTIPTEXTW = WM_USER + 17, + SB_GETTIPTEXTA = WM_USER + 18, + SB_GETTIPTEXTW = WM_USER + 19, + TVHT_ONITEMSTATEICON = 0x0040, + CBEN_FIRST = 0U - 800U, + CBEN_GETDISPINFOA = CBEN_FIRST - 0, + CBEN_GETDISPINFOW = CBEN_FIRST - 7 +} +// inline #include +// ---- + +// #ifndef _PRSHT_H_ +// #define _PRSHT_H_ + +// #ifndef _WINRESRC_ +// #ifndef _WIN32_IE +// #... +// #else +// #if (_WIN32_IE < 0x0400) && defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0500) +// #... +// #endif +// #endif +// #endif + +// #ifndef WINCOMMCTRLAPI +// #if !defined(_COMCTL32_) && defined(_WIN32) +// #define WINCOMMCTRLAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #endif // WINCOMMCTRLAPI + +// #ifndef CCSIZEOF_STRUCT +// #define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) +// #endif + +// #ifndef DUMMYUNIONNAME +// #ifdef NONAMELESSUNION +// #... +// #... +// #... +// #... +// #... +// #else +// #define DUMMYUNIONNAME +// #define DUMMYUNIONNAME2 +// #define DUMMYUNIONNAME3 +// #define DUMMYUNIONNAME4 +// #define DUMMYUNIONNAME5 +// #endif +// #endif // DUMMYUNIONNAME + +// #ifdef _WIN64 +// #... +// #else +align(4): +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef SNDMSG +// #ifdef __cplusplus +// #ifndef _MAC +// #define SNDMSG ::SendMessage +// #else +// #... +// #endif +// #else +// #ifndef _MAC +// #... +// #else +// #... +// #endif +// #endif +// #endif // ifndef SNDMSG + +enum : uint { MAXPROPPAGES = 100 } + +// struct _PSP; +alias _PSP* HPROPSHEETPAGE; + +// #ifndef MIDL_PASS +// struct _PROPSHEETPAGEA; +// struct _PROPSHEETPAGEW; +// #endif + +extern(Windows) alias UINT function(HWND hwnd, UINT uMsg, _PROPSHEETPAGEA *ppsp) LPFNPSPCALLBACKA; +extern(Windows) alias UINT function(HWND hwnd, UINT uMsg, _PROPSHEETPAGEW *ppsp) LPFNPSPCALLBACKW; + +// #ifdef UNICODE +alias LPFNPSPCALLBACKW LPFNPSPCALLBACK; +// #else +// #... +// #endif + +enum : uint { PSP_DEFAULT = 0x00000000 } +enum : uint { PSP_DLGINDIRECT = 0x00000001 } +enum : uint { PSP_USEHICON = 0x00000002 } +enum : uint { PSP_USEICONID = 0x00000004 } +enum : uint { PSP_USETITLE = 0x00000008 } +enum : uint { PSP_RTLREADING = 0x00000010 } + +enum : uint { PSP_HASHELP = 0x00000020 } +enum : uint { PSP_USEREFPARENT = 0x00000040 } +enum : uint { PSP_USECALLBACK = 0x00000080 } +enum : uint { PSP_PREMATURE = 0x00000400 } + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { PSP_HIDEHEADER = 0x00000800 } +enum : uint { PSP_USEHEADERTITLE = 0x00001000 } +enum : uint { PSP_USEHEADERSUBTITLE = 0x00002000 } + +// #endif +// #if (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED +enum : uint { PSP_USEFUSIONCONTEXT = 0x00004000 } +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { PSPCB_ADDREF = 0 } +// #endif +enum : uint { PSPCB_RELEASE = 1 } +enum : uint { PSPCB_CREATE = 2 } + +// #define PROPSHEETPAGEA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, pcRefParent) +// #define PROPSHEETPAGEW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, pcRefParent) + +// #define PROPSHEETPAGEA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, pszHeaderSubTitle) +// #define PROPSHEETPAGEW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, pszHeaderSubTitle) + +// #ifdef _WIN32 +alias LPCDLGTEMPLATE PROPSHEETPAGE_RESOURCE; +// #else +// ... +// #endif + +// #define PROPSHEETPAGEA_V1_FIELDS DWORD dwSize; DWORD dwFlags; HINSTANCE hInstance; union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } DUMMYUNIONNAME; union { HICON hIcon; LPCSTR pszIcon; } DUMMYUNIONNAME2; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent; +// #define PROPSHEETPAGEW_V1_FIELDS DWORD dwSize; DWORD dwFlags; HINSTANCE hInstance; union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } DUMMYUNIONNAME; union { HICON hIcon; LPCWSTR pszIcon; } DUMMYUNIONNAME2; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent; +// #if (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED +alias _PROPSHEETPAGEA_V3 _PROPSHEETPAGEA; +alias _PROPSHEETPAGEW_V3 _PROPSHEETPAGEW; +// #elif (_WIN32_IE >= 0x0400) +// #... +// #... +// #else +// #... +// #... +// #endif + +struct _PROPSHEETPAGEA_V1 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; +} +alias _PROPSHEETPAGEA_V1 PROPSHEETPAGEA_V1; +alias _PROPSHEETPAGEA_V1* LPPROPSHEETPAGEA_V1; + +alias PROPSHEETPAGEA_V1* LPCPROPSHEETPAGEA_V1; + +struct _PROPSHEETPAGEA_V2 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; + + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; +} +alias _PROPSHEETPAGEA_V2 PROPSHEETPAGEA_V2; +alias _PROPSHEETPAGEA_V2* LPPROPSHEETPAGEA_V2; + +alias PROPSHEETPAGEA_V2* LPCPROPSHEETPAGEA_V2; + +struct _PROPSHEETPAGEA_V3 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCSTR pszIcon; + } + LPCSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKA pfnCallback; + UINT* pcRefParent; + + LPCSTR pszHeaderTitle; + LPCSTR pszHeaderSubTitle; + + HANDLE hActCtx; +} +alias _PROPSHEETPAGEA_V3 PROPSHEETPAGEA_V3; +alias _PROPSHEETPAGEA_V3* LPPROPSHEETPAGEA_V3; + +alias PROPSHEETPAGEA_V3* LPCPROPSHEETPAGEA_V3; + +struct _PROPSHEETPAGEW_V1 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; +} +alias _PROPSHEETPAGEW_V1 PROPSHEETPAGEW_V1; +alias _PROPSHEETPAGEW_V1* LPPROPSHEETPAGEW_V1; + +alias PROPSHEETPAGEW_V1* LPCPROPSHEETPAGEW_V1; + +struct _PROPSHEETPAGEW_V2 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; + + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; +} +alias _PROPSHEETPAGEW_V2 PROPSHEETPAGEW_V2; +alias _PROPSHEETPAGEW_V2* LPPROPSHEETPAGEW_V2; + +alias PROPSHEETPAGEW_V2* LPCPROPSHEETPAGEW_V2; + +struct _PROPSHEETPAGEW_V3 { + DWORD dwSize; + DWORD dwFlags; + HINSTANCE hInstance; + union { + LPCWSTR pszTemplate; + PROPSHEETPAGE_RESOURCE pResource; + } + union { + HICON hIcon; + LPCWSTR pszIcon; + } + LPCWSTR pszTitle; + DLGPROC pfnDlgProc; + LPARAM lParam; + LPFNPSPCALLBACKW pfnCallback; + UINT* pcRefParent; + + LPCWSTR pszHeaderTitle; + LPCWSTR pszHeaderSubTitle; + + HANDLE hActCtx; +} +alias _PROPSHEETPAGEW_V3 PROPSHEETPAGEW_V3; +alias _PROPSHEETPAGEW_V3* LPPROPSHEETPAGEW_V3; + +alias PROPSHEETPAGEW_V3* LPCPROPSHEETPAGEW_V3; + +alias PROPSHEETPAGEA_V3 PROPSHEETPAGEA_LATEST; +alias PROPSHEETPAGEW_V3 PROPSHEETPAGEW_LATEST; +alias LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA_LATEST; +alias LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW_LATEST; +alias LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA_LATEST; +alias LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW_LATEST; + +// #if (_WIN32_WINNT >= 0x0501) || ISOLATION_AWARE_ENABLED +alias PROPSHEETPAGEA_V3 PROPSHEETPAGEA; +alias PROPSHEETPAGEW_V3 PROPSHEETPAGEW; +alias LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA; +alias LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW; +alias LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA; +alias LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW; +// #elif (_WIN32_IE >= 0x0400) +// ... +// #else +// ... +// #endif + +// #if 0 // IEUNIX reserved. + +// #if __STDC__ || defined (NONAMELESSUNION) +// #... +// #else +// #... +// #endif +// #endif + +// #ifdef UNICODE +alias PROPSHEETPAGEW PROPSHEETPAGE; +alias LPPROPSHEETPAGEW LPPROPSHEETPAGE; +alias LPCPROPSHEETPAGEW LPCPROPSHEETPAGE; +// #define PROPSHEETPAGE_V1_SIZE PROPSHEETPAGEW_V1_SIZE +// #define PROPSHEETPAGE_V2_SIZE PROPSHEETPAGEW_V2_SIZE +alias PROPSHEETPAGEW_V1 PROPSHEETPAGE_V1; +alias LPPROPSHEETPAGEW_V1 LPPROPSHEETPAGE_V1; +alias LPCPROPSHEETPAGEW_V1 LPCPROPSHEETPAGE_V1; +alias PROPSHEETPAGEW_V2 PROPSHEETPAGE_V2; +alias LPPROPSHEETPAGEW_V2 LPPROPSHEETPAGE_V2; +alias LPCPROPSHEETPAGEW_V2 LPCPROPSHEETPAGE_V2; +alias PROPSHEETPAGEW_V3 PROPSHEETPAGE_V3; +alias LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGE_V3; +alias LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGE_V3; +alias PROPSHEETPAGEW_LATEST PROPSHEETPAGE_LATEST; +alias LPPROPSHEETPAGEW_LATEST LPPROPSHEETPAGE_LATEST; +alias LPCPROPSHEETPAGEW_LATEST LPCPROPSHEETPAGE_LATEST; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +enum : uint { PSH_DEFAULT = 0x00000000 } +enum : uint { PSH_PROPTITLE = 0x00000001 } +enum : uint { PSH_USEHICON = 0x00000002 } +enum : uint { PSH_USEICONID = 0x00000004 } +enum : uint { PSH_PROPSHEETPAGE = 0x00000008 } +enum : uint { PSH_WIZARDHASFINISH = 0x00000010 } +enum : uint { PSH_WIZARD = 0x00000020 } +enum : uint { PSH_USEPSTARTPAGE = 0x00000040 } +enum : uint { PSH_NOAPPLYNOW = 0x00000080 } +enum : uint { PSH_USECALLBACK = 0x00000100 } +enum : uint { PSH_HASHELP = 0x00000200 } +enum : uint { PSH_MODELESS = 0x00000400 } +enum : uint { PSH_RTLREADING = 0x00000800 } +enum : uint { PSH_WIZARDCONTEXTHELP = 0x00001000 } + +// #if (_WIN32_IE >= 0x0400) + +// #if (_WIN32_IE < 0x0500) +// #... +// #else +enum : uint { PSH_WIZARD97 = 0x01000000 } +// #endif + +enum : uint { PSH_WATERMARK = 0x00008000 } +enum : uint { PSH_USEHBMWATERMARK = 0x00010000 } +enum : uint { PSH_USEHPLWATERMARK = 0x00020000 } +enum : uint { PSH_STRETCHWATERMARK = 0x00040000 } +enum : uint { PSH_HEADER = 0x00080000 } +enum : uint { PSH_USEHBMHEADER = 0x00100000 } +enum : uint { PSH_USEPAGELANG = 0x00200000 } + +// #endif + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { PSH_WIZARD_LITE = 0x00400000 } +enum : uint { PSH_NOCONTEXTHELP = 0x02000000 } + +// #endif + +extern(Windows) alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK; + +// #define PROPSHEETHEADERA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback) +// #define PROPSHEETHEADERW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW, pfnCallback) + +// #define PROPSHEETHEADERA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA, DUMMYUNION5_MEMBER(hbmHeader)) +// #define PROPSHEETHEADERW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW, DUMMYUNION5_MEMBER(hbmHeader)) + +struct _PROPSHEETHEADERA { + DWORD dwSize; + 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; +// #if (_WIN32_IE >= 0x0400) +union { + HBITMAP hbmWatermark; + LPCSTR pszbmWatermark; +} + + HPALETTE hplWatermark; +union { + HBITMAP hbmHeader; + LPCSTR pszbmHeader; +} + +// #endif +} +alias _PROPSHEETHEADERA PROPSHEETHEADERA; +alias _PROPSHEETHEADERA* LPPROPSHEETHEADERA; + +alias PROPSHEETHEADERA* LPCPROPSHEETHEADERA; + +struct _PROPSHEETHEADERW { + DWORD dwSize; + 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; +// #if (_WIN32_IE >= 0x0400) +union { + HBITMAP hbmWatermark; + LPCWSTR pszbmWatermark; +} + + HPALETTE hplWatermark; +union { + HBITMAP hbmHeader; + LPCWSTR pszbmHeader; +} + +// #endif +} +alias _PROPSHEETHEADERW PROPSHEETHEADERW; +alias _PROPSHEETHEADERW* LPPROPSHEETHEADERW; + +alias PROPSHEETHEADERW* LPCPROPSHEETHEADERW; + +// #if 0 //IEUNIX reserved. + +// #if __STDC__ || defined (NONAMELESSUNION) +// #... +// #... +// #else +// #... +// #... +// #endif +// #endif + +// #ifdef UNICODE +alias PROPSHEETHEADERW PROPSHEETHEADER; +alias LPPROPSHEETHEADERW LPPROPSHEETHEADER; +alias LPCPROPSHEETHEADERW LPCPROPSHEETHEADER; +// #define PROPSHEETHEADER_V1_SIZE PROPSHEETHEADERW_V1_SIZE +// #define PROPSHEETHEADER_V2_SIZE PROPSHEETHEADERW_V2_SIZE +// #else +// #... +// #... +// #... +// #... +// #... +// #endif + +enum : uint { PSCB_INITIALIZED = 1 } +enum : uint { PSCB_PRECREATE = 2 } + +// #if (_WIN32_IE >= 0x560) + +enum : uint { PSCB_BUTTONPRESSED = 3 } +// #endif // _WIN32_IE >= 0x560 + +extern(Windows) export HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA constPropSheetPagePointer); +extern(Windows) export HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW constPropSheetPagePointer); +extern(Windows) export BOOL DestroyPropertySheetPage(HPROPSHEETPAGE); + +extern(Windows) export INT_PTR PropertySheetA(LPCPROPSHEETHEADERA); + +extern(Windows) export INT_PTR PropertySheetW(LPCPROPSHEETHEADERW); + +// #ifdef UNICODE +alias CreatePropertySheetPageW CreatePropertySheetPage; +alias PropertySheetW PropertySheet; +// #else +// #... +// #... +// #endif + +extern(Windows) alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE; +extern(Windows) alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGES; + +struct _PSHNOTIFY { + NMHDR hdr; + LPARAM lParam; +} +alias _PSHNOTIFY PSHNOTIFY; +alias _PSHNOTIFY* LPPSHNOTIFY; + +enum : uint { PSN_FIRST = 0U-200U } +enum : uint { PSN_LAST = 0U-299U } + +enum : uint { PSN_SETACTIVE = PSN_FIRST-0 } +enum : uint { PSN_KILLACTIVE = PSN_FIRST-1 } + +enum : uint { PSN_APPLY = PSN_FIRST-2 } +enum : uint { PSN_RESET = PSN_FIRST-3 } + +enum : uint { PSN_HELP = PSN_FIRST-5 } +enum : uint { PSN_WIZBACK = PSN_FIRST-6 } +enum : uint { PSN_WIZNEXT = PSN_FIRST-7 } +enum : uint { PSN_WIZFINISH = PSN_FIRST-8 } +enum : uint { PSN_QUERYCANCEL = PSN_FIRST-9 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { PSN_GETOBJECT = PSN_FIRST-10 } +// #endif // 0x0400 +// #if (_WIN32_IE >= 0x0500) +enum : uint { PSN_TRANSLATEACCELERATOR = PSN_FIRST-12 } +enum : uint { PSN_QUERYINITIALFOCUS = PSN_FIRST-13 } +// #endif // 0x0500 + +enum : uint { PSNRET_NOERROR = 0 } +enum : uint { PSNRET_INVALID = 1 } +enum : uint { PSNRET_INVALID_NOCHANGEPAGE = 2 } +enum : uint { PSNRET_MESSAGEHANDLED = 3 } + +enum : uint { PSM_SETCURSEL = WM_USER + 101 } +// #define PropSheet_SetCurSel(hDlg, hpage, index) SNDMSG(hDlg, PSM_SETCURSEL, (WPARAM)index, (LPARAM)hpage) + +enum : uint { PSM_REMOVEPAGE = WM_USER + 102 } +// #define PropSheet_RemovePage(hDlg, index, hpage) SNDMSG(hDlg, PSM_REMOVEPAGE, index, (LPARAM)hpage) + +enum : uint { PSM_ADDPAGE = WM_USER + 103 } +// #define PropSheet_AddPage(hDlg, hpage) SNDMSG(hDlg, PSM_ADDPAGE, 0, (LPARAM)hpage) + +enum : uint { PSM_CHANGED = WM_USER + 104 } +// #define PropSheet_Changed(hDlg, hwnd) SNDMSG(hDlg, PSM_CHANGED, (WPARAM)hwnd, 0L) + +enum : uint { PSM_RESTARTWINDOWS = WM_USER + 105 } +// #define PropSheet_RestartWindows(hDlg) SNDMSG(hDlg, PSM_RESTARTWINDOWS, 0, 0L) + +enum : uint { PSM_REBOOTSYSTEM = WM_USER + 106 } +// #define PropSheet_RebootSystem(hDlg) SNDMSG(hDlg, PSM_REBOOTSYSTEM, 0, 0L) + +enum : uint { PSM_CANCELTOCLOSE = WM_USER + 107 } +// #define PropSheet_CancelToClose(hDlg) PostMessage(hDlg, PSM_CANCELTOCLOSE, 0, 0L) + +enum : uint { PSM_QUERYSIBLINGS = WM_USER + 108 } +// #define PropSheet_QuerySiblings(hDlg, wParam, lParam) SNDMSG(hDlg, PSM_QUERYSIBLINGS, wParam, lParam) + +enum : uint { PSM_UNCHANGED = WM_USER + 109 } +// #define PropSheet_UnChanged(hDlg, hwnd) SNDMSG(hDlg, PSM_UNCHANGED, (WPARAM)hwnd, 0L) + +enum : uint { PSM_APPLY = WM_USER + 110 } +// #define PropSheet_Apply(hDlg) SNDMSG(hDlg, PSM_APPLY, 0, 0L) + +enum : uint { PSM_SETTITLEA = WM_USER + 111 } +enum : uint { PSM_SETTITLEW = WM_USER + 120 } + +// #ifdef UNICODE +alias PSM_SETTITLEW PSM_SETTITLE; +// #else +// #... +// #endif + +// #define PropSheet_SetTitle(hDlg, wStyle, lpszText) SNDMSG(hDlg, PSM_SETTITLE, wStyle, (LPARAM)(LPCTSTR)(lpszText)) + +enum : uint { PSM_SETWIZBUTTONS = WM_USER + 112 } +// #define PropSheet_SetWizButtons(hDlg, dwFlags) PostMessage(hDlg, PSM_SETWIZBUTTONS, 0, (LPARAM)dwFlags) + +enum : uint { PSWIZB_BACK = 0x00000001 } +enum : uint { PSWIZB_NEXT = 0x00000002 } +enum : uint { PSWIZB_FINISH = 0x00000004 } +enum : uint { PSWIZB_DISABLEDFINISH = 0x00000008 } + +enum : uint { PSM_PRESSBUTTON = WM_USER + 113 } +// #define PropSheet_PressButton(hDlg, iButton) PostMessage(hDlg, PSM_PRESSBUTTON, (WPARAM)iButton, 0) + +enum : uint { PSBTN_BACK = 0 } +enum : uint { PSBTN_NEXT = 1 } +enum : uint { PSBTN_FINISH = 2 } +enum : uint { PSBTN_OK = 3 } +enum : uint { PSBTN_APPLYNOW = 4 } +enum : uint { PSBTN_CANCEL = 5 } +enum : uint { PSBTN_HELP = 6 } +enum : uint { PSBTN_MAX = 6 } + +enum : uint { PSM_SETCURSELID = WM_USER + 114 } +// #define PropSheet_SetCurSelByID(hDlg, id) SNDMSG(hDlg, PSM_SETCURSELID, 0, (LPARAM)id) + +enum : uint { PSM_SETFINISHTEXTA = WM_USER + 115 } +enum : uint { PSM_SETFINISHTEXTW = WM_USER + 121 } + +// #ifdef UNICODE +alias PSM_SETFINISHTEXTW PSM_SETFINISHTEXT; +// #else +// #... +// #endif + +// #define PropSheet_SetFinishText(hDlg, lpszText) SNDMSG(hDlg, PSM_SETFINISHTEXT, 0, (LPARAM)lpszText) + +enum : uint { PSM_GETTABCONTROL = WM_USER + 116 } +// #define PropSheet_GetTabControl(hDlg) (HWND)SNDMSG(hDlg, PSM_GETTABCONTROL, 0, 0) + +enum : uint { PSM_ISDIALOGMESSAGE = WM_USER + 117 } +// #define PropSheet_IsDialogMessage(hDlg, pMsg) (BOOL)SNDMSG(hDlg, PSM_ISDIALOGMESSAGE, 0, (LPARAM)pMsg) + +enum : uint { PSM_GETCURRENTPAGEHWND = WM_USER + 118 } +// #define PropSheet_GetCurrentPageHwnd(hDlg) (HWND)SNDMSG(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0L) + +enum : uint { PSM_INSERTPAGE = WM_USER + 119 } +// #define PropSheet_InsertPage(hDlg, index, hpage) SNDMSG(hDlg, PSM_INSERTPAGE, (WPARAM)(index), (LPARAM)(hpage)) + +// #if (_WIN32_IE >= 0x0500) +enum : uint { PSM_SETHEADERTITLEA = WM_USER + 125 } +enum : uint { PSM_SETHEADERTITLEW = WM_USER + 126 } + +// #ifdef UNICODE +alias PSM_SETHEADERTITLEW PSM_SETHEADERTITLE; +// #else +// #... +// #endif + +// #define PropSheet_SetHeaderTitle(hDlg, index, lpszText) SNDMSG(hDlg, PSM_SETHEADERTITLE, (WPARAM)(index), (LPARAM)(lpszText)) + +enum : uint { PSM_SETHEADERSUBTITLEA = WM_USER + 127 } +enum : uint { PSM_SETHEADERSUBTITLEW = WM_USER + 128 } + +// #ifdef UNICODE +alias PSM_SETHEADERSUBTITLEW PSM_SETHEADERSUBTITLE; +// #else +// #... +// #endif + +// #define PropSheet_SetHeaderSubTitle(hDlg, index, lpszText) SNDMSG(hDlg, PSM_SETHEADERSUBTITLE, (WPARAM)(index), (LPARAM)(lpszText)) + +enum : uint { PSM_HWNDTOINDEX = WM_USER + 129 } +// #define PropSheet_HwndToIndex(hDlg, hwnd) (int)SNDMSG(hDlg, PSM_HWNDTOINDEX, (WPARAM)(hwnd), 0) + +enum : uint { PSM_INDEXTOHWND = WM_USER + 130 } +// #define PropSheet_IndexToHwnd(hDlg, i) (HWND)SNDMSG(hDlg, PSM_INDEXTOHWND, (WPARAM)(i), 0) + +enum : uint { PSM_PAGETOINDEX = WM_USER + 131 } +// #define PropSheet_PageToIndex(hDlg, hpage) (int)SNDMSG(hDlg, PSM_PAGETOINDEX, 0, (LPARAM)(hpage)) + +enum : uint { PSM_INDEXTOPAGE = WM_USER + 132 } +// #define PropSheet_IndexToPage(hDlg, i) (HPROPSHEETPAGE)SNDMSG(hDlg, PSM_INDEXTOPAGE, (WPARAM)(i), 0) + +enum : uint { PSM_IDTOINDEX = WM_USER + 133 } +// #define PropSheet_IdToIndex(hDlg, id) (int)SNDMSG(hDlg, PSM_IDTOINDEX, 0, (LPARAM)(id)) + +enum : uint { PSM_INDEXTOID = WM_USER + 134 } +// #define PropSheet_IndexToId(hDlg, i) SNDMSG(hDlg, PSM_INDEXTOID, (WPARAM)(i), 0) + +enum : uint { PSM_GETRESULT = WM_USER + 135 } +// #define PropSheet_GetResult(hDlg) SNDMSG(hDlg, PSM_GETRESULT, 0, 0) + +enum : uint { PSM_RECALCPAGESIZES = WM_USER + 136 } +// #define PropSheet_RecalcPageSizes(hDlg) SNDMSG(hDlg, PSM_RECALCPAGESIZES, 0, 0) +// #endif // 0x0500 + +enum : uint { ID_PSRESTARTWINDOWS = 0x2 } +enum : uint { ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS | 0x1 } + +enum : uint { WIZ_CXDLG = 276 } +enum : uint { WIZ_CYDLG = 140 } + +enum : uint { WIZ_CXBMP = 80 } + +enum : uint { WIZ_BODYX = 92 } +enum : uint { WIZ_BODYCX = 184 } + +enum : uint { PROP_SM_CXDLG = 212 } +enum : uint { PROP_SM_CYDLG = 188 } + +enum : uint { PROP_MED_CXDLG = 227 } +enum : uint { PROP_MED_CYDLG = 215 } + +enum : uint { PROP_LG_CXDLG = 252 } +enum : uint { PROP_LG_CYDLG = 218 } + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED + +// #if !defined(ISOLATION_AWARE_INLINE) +// #if defined(__cplusplus) +// #... +// #else +// #... +// #endif +// #endif + +// ... + +// #ifndef CCSIZEOF_STRUCT +// #... +// #endif + +// ... + +// #if defined(UNICODE) + +// #... +// #... + +// #else /* UNICODE */ + +// #... +// #... + +// #endif /* UNICODE */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... + +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif + +align: + +// #endif // _PRSHT_H_ + +// ---- + +// #ifndef _INC_COMMCTRL +// #define _INC_COMMCTRL + +// #ifndef _WINRESRC_ +// #ifndef _WIN32_IE +// #... +// #else +// #if (_WIN32_IE < 0x0400) && defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0500) +// #... +// #endif +// #endif +// #endif + +// #ifndef _HRESULT_DEFINED +// #define _HRESULT_DEFINED +alias LONG HRESULT; +// #endif // _HRESULT_DEFINED + +// #ifndef NOUSER + +// #ifndef WINCOMMCTRLAPI +// #if !defined(_COMCTL32_) && defined(_WIN32) +// #define WINCOMMCTRLAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #endif // WINCOMMCTRLAPI + +// #ifndef DUMMYUNIONNAME +// #ifdef NONAMELESSUNION +// #... +// #... +// #... +// #... +// #... +// #else +// #define DUMMYUNIONNAME +// #define DUMMYUNIONNAME2 +// #define DUMMYUNIONNAME3 +// #define DUMMYUNIONNAME4 +// #define DUMMYUNIONNAME5 +// #endif +// #endif // DUMMYUNIONNAME + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #include + +// #ifndef SNDMSG +// #ifdef __cplusplus +// #ifndef _MAC +// #define SNDMSG ::SendMessage +// #else +// #... +// #endif +// #else +// #ifndef _MAC +// #... +// #else +// #... +// #endif //_MAC +// #endif +// #endif // ifndef SNDMSG + +// #ifdef _MAC +// #ifndef RC_INVOKED +// #ifndef _WLM_NOFORCE_LIBS + +// #ifndef _WLMDLL +// #ifdef _DEBUG +// #... +// #else +// #... +// #endif +// #... +// #else +// #ifdef _DEBUG +// #... +// #else +// #... +// #endif +// #endif // _WLMDLL + +// #endif // _WLM_NOFORCE_LIBS +// #endif // RC_INVOKED +// #endif //_MAC + +extern(Windows) export void InitCommonControls(); + +// #if (_WIN32_IE >= 0x0300) +struct tagINITCOMMONCONTROLSEX { + DWORD dwSize; + DWORD dwICC; +} +alias tagINITCOMMONCONTROLSEX INITCOMMONCONTROLSEX; +alias tagINITCOMMONCONTROLSEX* LPINITCOMMONCONTROLSEX; + +enum : uint { ICC_LISTVIEW_CLASSES = 0x00000001 } +enum : uint { ICC_TREEVIEW_CLASSES = 0x00000002 } +enum : uint { ICC_BAR_CLASSES = 0x00000004 } +enum : uint { ICC_TAB_CLASSES = 0x00000008 } +enum : uint { ICC_UPDOWN_CLASS = 0x00000010 } +enum : uint { ICC_PROGRESS_CLASS = 0x00000020 } +enum : uint { ICC_HOTKEY_CLASS = 0x00000040 } +enum : uint { ICC_ANIMATE_CLASS = 0x00000080 } +enum : uint { ICC_WIN95_CLASSES = 0x000000FF } +enum : uint { ICC_DATE_CLASSES = 0x00000100 } +enum : uint { ICC_USEREX_CLASSES = 0x00000200 } +enum : uint { ICC_COOL_CLASSES = 0x00000400 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { ICC_INTERNET_CLASSES = 0x00000800 } +enum : uint { ICC_PAGESCROLLER_CLASS = 0x00001000 } +enum : uint { ICC_NATIVEFNTCTL_CLASS = 0x00002000 } +// #endif +// #if (_WIN32_WINNT >= 0x501) +enum : uint { ICC_STANDARD_CLASSES = 0x00004000 } +enum : uint { ICC_LINK_CLASS = 0x00008000 } +// #endif + +extern(Windows) export BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX); +// #endif // _WIN32_IE >= 0x0300 + +enum : uint { ODT_HEADER = 100 } +enum : uint { ODT_TAB = 101 } +enum : uint { ODT_LISTVIEW = 102 } + +enum : uint { LVM_FIRST = 0x1000 } +enum : uint { TV_FIRST = 0x1100 } +enum : uint { HDM_FIRST = 0x1200 } +enum : uint { TCM_FIRST = 0x1300 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { PGM_FIRST = 0x1400 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { ECM_FIRST = 0x1500 } +enum : uint { BCM_FIRST = 0x1600 } +enum : uint { CBM_FIRST = 0x1700 } +// #endif +enum : uint { CCM_FIRST = 0x2000 } +enum : uint { CCM_LAST = CCM_FIRST + 0x200 } + +enum : uint { CCM_SETBKCOLOR = CCM_FIRST + 1 } + +struct tagCOLORSCHEME { + DWORD dwSize; + COLORREF clrBtnHighlight; + COLORREF clrBtnShadow; +} +alias tagCOLORSCHEME COLORSCHEME; +alias tagCOLORSCHEME* LPCOLORSCHEME; + +enum : uint { CCM_SETCOLORSCHEME = CCM_FIRST + 2 } +enum : uint { CCM_GETCOLORSCHEME = CCM_FIRST + 3 } +enum : uint { CCM_GETDROPTARGET = CCM_FIRST + 4 } +enum : uint { CCM_SETUNICODEFORMAT = CCM_FIRST + 5 } +enum : uint { CCM_GETUNICODEFORMAT = CCM_FIRST + 6 } + +// #if (_WIN32_IE >= 0x0500) +// #if (_WIN32_WINNT >= 0x501) +enum : uint { COMCTL32_VERSION = 6 } +// #else +// #... +// #endif + +enum : uint { CCM_SETVERSION = CCM_FIRST + 0x7 } +enum : uint { CCM_GETVERSION = CCM_FIRST + 0x8 } +enum : uint { CCM_SETNOTIFYWINDOW = CCM_FIRST + 0x9 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { CCM_SETWINDOWTHEME = CCM_FIRST + 0xb } +enum : uint { CCM_DPISCALE = CCM_FIRST + 0xc } +// #endif +// #endif // (_WIN32_IE >= 0x0500) + +// #endif // (_WIN32_IE >= 0x0400) + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { INFOTIPSIZE = 1024 } +// #endif + +// #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) (fn)((hwnd), (int)(wParam), (NMHDR *)(lParam)) +// #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR *)(pnmhdr)) + +enum : uint { NM_OUTOFMEMORY = NM_FIRST-1 } +enum : uint { NM_CLICK = NM_FIRST-2 } +enum : uint { NM_DBLCLK = NM_FIRST-3 } +enum : uint { NM_RETURN = NM_FIRST-4 } +enum : uint { NM_RCLICK = NM_FIRST-5 } +enum : uint { NM_RDBLCLK = NM_FIRST-6 } +enum : uint { NM_SETFOCUS = NM_FIRST-7 } +enum : uint { NM_KILLFOCUS = NM_FIRST-8 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { NM_CUSTOMDRAW = NM_FIRST-12 } +enum : uint { NM_HOVER = NM_FIRST-13 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { NM_NCHITTEST = NM_FIRST-14 } +enum : uint { NM_KEYDOWN = NM_FIRST-15 } +enum : uint { NM_RELEASEDCAPTURE = NM_FIRST-16 } +enum : uint { NM_SETCURSOR = NM_FIRST-17 } +enum : uint { NM_CHAR = NM_FIRST-18 } +// #endif +// #if (_WIN32_IE >= 0x0401) +enum : uint { NM_TOOLTIPSCREATED = NM_FIRST-19 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { NM_LDOWN = NM_FIRST-20 } +enum : uint { NM_RDOWN = NM_FIRST-21 } +enum : uint { NM_THEMECHANGED = NM_FIRST-22 } +// #endif + +// #ifndef CCSIZEOF_STRUCT +// #define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) +// #endif + +// #if (_WIN32_IE >= 0x0401) +struct tagNMTOOLTIPSCREATED { + NMHDR hdr; + HWND hwndToolTips; +} +alias tagNMTOOLTIPSCREATED NMTOOLTIPSCREATED; +alias tagNMTOOLTIPSCREATED* LPNMTOOLTIPSCREATED; + +// #endif + +// #if (_WIN32_IE >= 0x0400) +struct tagNMMOUSE { + NMHDR hdr; + DWORD_PTR dwItemSpec; + DWORD_PTR dwItemData; + POINT pt; + LPARAM dwHitInfo; +} +alias tagNMMOUSE NMMOUSE; +alias tagNMMOUSE* LPNMMOUSE; + +alias NMMOUSE NMCLICK; +alias LPNMMOUSE LPNMCLICK; + +struct tagNMOBJECTNOTIFY { + NMHDR hdr; + int iItem; +// #ifdef __IID_DEFINED__ + IID* piid; +// #else +// ... +// #endif + void *pObject; + HRESULT hResult; + DWORD dwFlags; +} +alias tagNMOBJECTNOTIFY NMOBJECTNOTIFY; +alias tagNMOBJECTNOTIFY* LPNMOBJECTNOTIFY; + +struct tagNMKEY { + NMHDR hdr; + UINT nVKey; + UINT uFlags; +} +alias tagNMKEY NMKEY; +alias tagNMKEY* LPNMKEY; + +struct tagNMCHAR { + NMHDR hdr; + UINT ch; + DWORD dwItemPrev; + DWORD dwItemNext; +} +alias tagNMCHAR NMCHAR; +alias tagNMCHAR* LPNMCHAR; + +// #endif // _WIN32_IE >= 0x0400 + +// #define NM_FIRST (0U- 0U) +enum : uint { NM_LAST = 0U- 99U } + +enum : uint { LVN_FIRST = 0U-100U } +enum : uint { LVN_LAST = 0U-199U } + +enum : uint { HDN_FIRST = 0U-300U } +enum : uint { HDN_LAST = 0U-399U } + +enum : uint { TVN_FIRST = 0U-400U } +enum : uint { TVN_LAST = 0U-499U } + +enum : uint { TTN_FIRST = 0U-520U } +enum : uint { TTN_LAST = 0U-549U } + +enum : uint { TCN_FIRST = 0U-550U } +enum : uint { TCN_LAST = 0U-580U } + +enum : uint { CDN_FIRST = 0U-601U } +enum : uint { CDN_LAST = 0U-699U } + +enum : uint { TBN_FIRST = 0U-700U } +enum : uint { TBN_LAST = 0U-720U } + +enum : uint { UDN_FIRST = 0U-721 } +enum : uint { UDN_LAST = 0U-740 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { MCN_FIRST = 0U-750U } +enum : uint { MCN_LAST = 0U-759U } + +enum : uint { DTN_FIRST = 0U-760U } +enum : uint { DTN_LAST = 0U-799U } + +// #define CBEN_FIRST (0U-800U) +enum : uint { CBEN_LAST = 0U-830U } + +enum : uint { RBN_FIRST = 0U-831U } +enum : uint { RBN_LAST = 0U-859U } +// #endif + +// #if (_WIN32_IE >= 0x0400) +enum : uint { IPN_FIRST = 0U-860U } +enum : uint { IPN_LAST = 0U-879U } + +enum : uint { SBN_FIRST = 0U-880U } +enum : uint { SBN_LAST = 0U-899U } + +enum : uint { PGN_FIRST = 0U-900U } +enum : uint { PGN_LAST = 0U-950U } + +// #endif + +// #if (_WIN32_IE >= 0x0500) +// #ifndef WMN_FIRST +enum : uint { WMN_FIRST = 0U-1000U } +enum : uint { WMN_LAST = 0U-1200U } +// #endif +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { BCN_FIRST = 0U-1250U } +enum : uint { BCN_LAST = 0U-1350U } +// #endif + +enum : uint { MSGF_COMMCTRL_BEGINDRAG = 0x4200 } +enum : uint { MSGF_COMMCTRL_SIZEHEADER = 0x4201 } +enum : uint { MSGF_COMMCTRL_DRAGSELECT = 0x4202 } +enum : uint { MSGF_COMMCTRL_TOOLBARCUST = 0x4203 } + +// #if (_WIN32_IE >= 0x0300) + +enum : uint { CDRF_DODEFAULT = 0x00000000 } +enum : uint { CDRF_NEWFONT = 0x00000002 } +enum : uint { CDRF_SKIPDEFAULT = 0x00000004 } + +enum : uint { CDRF_NOTIFYPOSTPAINT = 0x00000010 } +enum : uint { CDRF_NOTIFYITEMDRAW = 0x00000020 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { CDRF_NOTIFYSUBITEMDRAW = 0x00000020 } +// #endif +enum : uint { CDRF_NOTIFYPOSTERASE = 0x00000040 } + +enum : uint { CDDS_PREPAINT = 0x00000001 } +enum : uint { CDDS_POSTPAINT = 0x00000002 } +enum : uint { CDDS_PREERASE = 0x00000003 } +enum : uint { CDDS_POSTERASE = 0x00000004 } + +enum : uint { CDDS_ITEM = 0x00010000 } +enum : uint { CDDS_ITEMPREPAINT = CDDS_ITEM | CDDS_PREPAINT } +enum : uint { CDDS_ITEMPOSTPAINT = CDDS_ITEM | CDDS_POSTPAINT } +enum : uint { CDDS_ITEMPREERASE = CDDS_ITEM | CDDS_PREERASE } +enum : uint { CDDS_ITEMPOSTERASE = CDDS_ITEM | CDDS_POSTERASE } +// #if (_WIN32_IE >= 0x0400) +enum : uint { CDDS_SUBITEM = 0x00020000 } +// #endif + +enum : uint { CDIS_SELECTED = 0x0001 } +enum : uint { CDIS_GRAYED = 0x0002 } +enum : uint { CDIS_DISABLED = 0x0004 } +enum : uint { CDIS_CHECKED = 0x0008 } +enum : uint { CDIS_FOCUS = 0x0010 } +enum : uint { CDIS_DEFAULT = 0x0020 } +enum : uint { CDIS_HOT = 0x0040 } +enum : uint { CDIS_MARKED = 0x0080 } +enum : uint { CDIS_INDETERMINATE = 0x0100 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { CDIS_SHOWKEYBOARDCUES = 0x0200 } +// #endif + +struct tagNMCUSTOMDRAWINFO { + NMHDR hdr; + DWORD dwDrawStage; + HDC hdc; + RECT rc; + DWORD_PTR dwItemSpec; + UINT uItemState; + LPARAM lItemlParam; +} +alias tagNMCUSTOMDRAWINFO NMCUSTOMDRAW; +alias tagNMCUSTOMDRAWINFO* LPNMCUSTOMDRAW; + +struct tagNMTTCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + UINT uDrawFlags; +} +alias tagNMTTCUSTOMDRAW NMTTCUSTOMDRAW; +alias tagNMTTCUSTOMDRAW* LPNMTTCUSTOMDRAW; + +// #endif // _WIN32_IE >= 0x0300 + +// #ifndef NOIMAGEAPIS + +enum : uint { CLR_NONE = 0xFFFFFFFF } +enum : uint { CLR_DEFAULT = 0xFF000000 } + +// #ifndef HIMAGELIST +// struct _IMAGELIST; +alias _IMAGELIST* HIMAGELIST; +// #endif + +// #ifndef IMAGELISTDRAWPARAMS +// #if (_WIN32_IE >= 0x0300) +struct _IMAGELISTDRAWPARAMS { + DWORD cbSize; + 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; +// #if (_WIN32_WINNT >= 0x501) + DWORD fState; + DWORD Frame; + COLORREF crEffect; +// #endif +} +alias _IMAGELISTDRAWPARAMS IMAGELISTDRAWPARAMS; +alias _IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS; + +// #define IMAGELISTDRAWPARAMS_V3_SIZE CCSIZEOF_STRUCT(IMAGELISTDRAWPARAMS, dwRop) + +// #endif // _WIN32_IE >= 0x0300 +// #endif + +enum : uint { ILC_MASK = 0x00000001 } +enum : uint { ILC_COLOR = 0x00000000 } +enum : uint { ILC_COLORDDB = 0x000000FE } +enum : uint { ILC_COLOR4 = 0x00000004 } +enum : uint { ILC_COLOR8 = 0x00000008 } +enum : uint { ILC_COLOR16 = 0x00000010 } +enum : uint { ILC_COLOR24 = 0x00000018 } +enum : uint { ILC_COLOR32 = 0x00000020 } +enum : uint { ILC_PALETTE = 0x00000800 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { ILC_MIRROR = 0x00002000 } +enum : uint { ILC_PERITEMMIRROR = 0x00008000 } +// #endif +extern(Windows) export HIMAGELIST ImageList_Create(int cx, int cy, UINT flags, int cInitial, int cGrow); +extern(Windows) export BOOL ImageList_Destroy(HIMAGELIST himl); + +extern(Windows) export int ImageList_GetImageCount(HIMAGELIST himl); +// #if (_WIN32_IE >= 0x0300) +extern(Windows) export BOOL ImageList_SetImageCount(HIMAGELIST himl, UINT uNewCount); +// #endif + +extern(Windows) export int ImageList_Add(HIMAGELIST himl, HBITMAP hbmImage, HBITMAP hbmMask); + +extern(Windows) export int ImageList_ReplaceIcon(HIMAGELIST himl, int i, HICON hicon); +extern(Windows) export COLORREF ImageList_SetBkColor(HIMAGELIST himl, COLORREF clrBk); +extern(Windows) export COLORREF ImageList_GetBkColor(HIMAGELIST himl); +extern(Windows) export BOOL ImageList_SetOverlayImage(HIMAGELIST himl, int iImage, int iOverlay); + +// #define ImageList_AddIcon(himl, hicon) ImageList_ReplaceIcon(himl, -1, hicon) + +enum : uint { ILD_NORMAL = 0x00000000 } +enum : uint { ILD_TRANSPARENT = 0x00000001 } +enum : uint { ILD_MASK = 0x00000010 } +enum : uint { ILD_IMAGE = 0x00000020 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { ILD_ROP = 0x00000040 } +// #endif +enum : uint { ILD_BLEND25 = 0x00000002 } +enum : uint { ILD_BLEND50 = 0x00000004 } +enum : uint { ILD_OVERLAYMASK = 0x00000F00 } +uint INDEXTOOVERLAYMASK(uint i){ return i << 8; } +enum : uint { ILD_PRESERVEALPHA = 0x00001000 } +enum : uint { ILD_SCALE = 0x00002000 } +enum : uint { ILD_DPISCALE = 0x00004000 } + +alias ILD_BLEND50 ILD_SELECTED; +alias ILD_BLEND25 ILD_FOCUS; +alias ILD_BLEND50 ILD_BLEND; +alias CLR_DEFAULT CLR_HILIGHT; + +enum : uint { ILS_NORMAL = 0x00000000 } +enum : uint { ILS_GLOW = 0x00000001 } +enum : uint { ILS_SHADOW = 0x00000002 } +enum : uint { ILS_SATURATE = 0x00000004 } +enum : uint { ILS_ALPHA = 0x00000008 } + +extern(Windows) export BOOL ImageList_Draw(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, UINT fStyle); + +// #ifdef _WIN32 + +extern(Windows) export BOOL ImageList_Replace(HIMAGELIST himl, int i, HBITMAP hbmImage, HBITMAP hbmMask); + +extern(Windows) export int ImageList_AddMasked(HIMAGELIST himl, HBITMAP hbmImage, COLORREF crMask); +extern(Windows) export BOOL ImageList_DrawEx(HIMAGELIST himl, int i, HDC hdcDst, int x, int y, int dx, int dy, COLORREF rgbBk, COLORREF rgbFg, UINT fStyle); +// #if (_WIN32_IE >= 0x0300) +extern(Windows) export BOOL ImageList_DrawIndirect(IMAGELISTDRAWPARAMS* pimldp); +// #endif +extern(Windows) export BOOL ImageList_Remove(HIMAGELIST himl, int i); +extern(Windows) export HICON ImageList_GetIcon(HIMAGELIST himl, int i, UINT flags); +extern(Windows) export HIMAGELIST ImageList_LoadImageA(HINSTANCE hi, LPCSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags); +extern(Windows) export HIMAGELIST ImageList_LoadImageW(HINSTANCE hi, LPCWSTR lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags); + +// #ifdef UNICODE +alias ImageList_LoadImageW ImageList_LoadImage; +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { ILCF_MOVE = 0x00000000 } +enum : uint { ILCF_SWAP = 0x00000001 } +extern(Windows) export BOOL ImageList_Copy(HIMAGELIST himlDst, int iDst, HIMAGELIST himlSrc, int iSrc, UINT uFlags); +// #endif + +extern(Windows) export BOOL ImageList_BeginDrag(HIMAGELIST himlTrack, int iTrack, int dxHotspot, int dyHotspot); +extern(Windows) export void ImageList_EndDrag(); +extern(Windows) export BOOL ImageList_DragEnter(HWND hwndLock, int x, int y); +extern(Windows) export BOOL ImageList_DragLeave(HWND hwndLock); +extern(Windows) export BOOL ImageList_DragMove(int x, int y); +extern(Windows) export BOOL ImageList_SetDragCursorImage(HIMAGELIST himlDrag, int iDrag, int dxHotspot, int dyHotspot); + +extern(Windows) export BOOL ImageList_DragShowNolock(BOOL fShow); +extern(Windows) export HIMAGELIST ImageList_GetDragImage(POINT *ppt,POINT *pptHotspot); + +// #define ImageList_RemoveAll(himl) ImageList_Remove(himl, -1) +// #define ImageList_ExtractIcon(hi, himl, i) ImageList_GetIcon(himl, i, 0) +// #define ImageList_LoadBitmap(hi, lpbmp, cx, cGrow, crMask) ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0) + +// #ifdef __IStream_INTERFACE_DEFINED__ + +// ... + +// #if (_WIN32_WINNT >= 0x0501) +// #... +// #... + +// ... +// #endif + +// #endif + +// #ifndef IMAGEINFO +struct _IMAGEINFO { + HBITMAP hbmImage; + HBITMAP hbmMask; + int Unused1; + int Unused2; + RECT rcImage; +} +alias _IMAGEINFO IMAGEINFO; +alias _IMAGEINFO* LPIMAGEINFO; + +// #endif + +extern(Windows) export BOOL ImageList_GetIconSize(HIMAGELIST himl, int *cx, int *cy); +extern(Windows) export BOOL ImageList_SetIconSize(HIMAGELIST himl, int cx, int cy); +extern(Windows) export BOOL ImageList_GetImageInfo(HIMAGELIST himl, int i, IMAGEINFO *pImageInfo); +extern(Windows) export HIMAGELIST ImageList_Merge(HIMAGELIST himl1, int i1, HIMAGELIST himl2, int i2, int dx, int dy); +// #if (_WIN32_IE >= 0x0400) +extern(Windows) export HIMAGELIST ImageList_Duplicate(HIMAGELIST himl); +// #endif + +// #endif + +// #endif + +// #ifndef NOHEADER + +// #ifdef _WIN32 +const char[] WC_HEADERA = "SysHeader32"; +const wchar[] WC_HEADERW = "SysHeader32"; + +// #ifdef UNICODE +alias WC_HEADERW WC_HEADER; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +enum : uint { HDS_HORZ = 0x0000 } +enum : uint { HDS_BUTTONS = 0x0002 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDS_HOTTRACK = 0x0004 } +// #endif +enum : uint { HDS_HIDDEN = 0x0008 } + +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDS_DRAGDROP = 0x0040 } +enum : uint { HDS_FULLDRAG = 0x0080 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { HDS_FILTERBAR = 0x0100 } +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { HDS_FLAT = 0x0200 } +// #endif + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { HDFT_ISSTRING = 0x0000 } +enum : uint { HDFT_ISNUMBER = 0x0001 } + +enum : uint { HDFT_HASNOVALUE = 0x8000 } + +// #ifdef UNICODE +alias HD_TEXTFILTERW HD_TEXTFILTER; +alias HD_TEXTFILTERW HDTEXTFILTER; +alias LPHD_TEXTFILTERW LPHD_TEXTFILTER; +alias LPHD_TEXTFILTERW LPHDTEXTFILTER; +// #else +// #... +// #... +// #... +// #... +// #endif + +struct _HD_TEXTFILTERA { + LPSTR pszText; + INT cchTextMax; +} +alias _HD_TEXTFILTERA HD_TEXTFILTERA; +alias _HD_TEXTFILTERA* LPHD_TEXTFILTERA; + +struct _HD_TEXTFILTERW { + LPWSTR pszText; + INT cchTextMax; +} +alias _HD_TEXTFILTERW HD_TEXTFILTERW; +alias _HD_TEXTFILTERW* LPHD_TEXTFILTERW; + +// #endif // _WIN32_IE >= 0x0500 + +// #if (_WIN32_IE >= 0x0300) +alias HDITEMA HD_ITEMA; +alias HDITEMW HD_ITEMW; +// #else +// #... +// #... +// #endif +alias HDITEM HD_ITEM; + +struct _HD_ITEMA { + UINT mask; + int cxy; + LPSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; +// #if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +// #endif +// #if (_WIN32_IE >= 0x0500) + UINT type; + void * pvFilter; +// #endif +} +alias _HD_ITEMA HDITEMA; +alias _HD_ITEMA* LPHDITEMA; + +// #define HDITEMA_V1_SIZE CCSIZEOF_STRUCT(HDITEMA, lParam) +// #define HDITEMW_V1_SIZE CCSIZEOF_STRUCT(HDITEMW, lParam) + +struct _HD_ITEMW { + UINT mask; + int cxy; + LPWSTR pszText; + HBITMAP hbm; + int cchTextMax; + int fmt; + LPARAM lParam; +// #if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +// #endif +// #if (_WIN32_IE >= 0x0500) + UINT type; + void * pvFilter; +// #endif +} +alias _HD_ITEMW HDITEMW; +alias _HD_ITEMW* LPHDITEMW; + +// #ifdef UNICODE +alias HDITEMW HDITEM; +alias LPHDITEMW LPHDITEM; +// #define HDITEM_V1_SIZE HDITEMW_V1_SIZE +// #else +// #... +// #... +// #... +// #endif + +enum : uint { HDI_WIDTH = 0x0001 } +alias HDI_WIDTH HDI_HEIGHT; +enum : uint { HDI_TEXT = 0x0002 } +enum : uint { HDI_FORMAT = 0x0004 } +enum : uint { HDI_LPARAM = 0x0008 } +enum : uint { HDI_BITMAP = 0x0010 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDI_IMAGE = 0x0020 } +enum : uint { HDI_DI_SETITEM = 0x0040 } +enum : uint { HDI_ORDER = 0x0080 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { HDI_FILTER = 0x0100 } +// #endif + +enum : uint { HDF_LEFT = 0x0000 } +enum : uint { HDF_RIGHT = 0x0001 } +enum : uint { HDF_CENTER = 0x0002 } +enum : uint { HDF_JUSTIFYMASK = 0x0003 } +enum : uint { HDF_RTLREADING = 0x0004 } + +enum : uint { HDF_OWNERDRAW = 0x8000 } +enum : uint { HDF_STRING = 0x4000 } +enum : uint { HDF_BITMAP = 0x2000 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDF_BITMAP_ON_RIGHT = 0x1000 } +enum : uint { HDF_IMAGE = 0x0800 } +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { HDF_SORTUP = 0x0400 } +enum : uint { HDF_SORTDOWN = 0x0200 } +// #endif + +enum : uint { HDM_GETITEMCOUNT = HDM_FIRST + 0 } +// #define Header_GetItemCount(hwndHD) (int)SNDMSG((hwndHD), HDM_GETITEMCOUNT, 0, 0L) + +enum : uint { HDM_INSERTITEMA = HDM_FIRST + 1 } +enum : uint { HDM_INSERTITEMW = HDM_FIRST + 10 } + +// #ifdef UNICODE +alias HDM_INSERTITEMW HDM_INSERTITEM; +// #else +// #... +// #endif + +// #define Header_InsertItem(hwndHD, i, phdi) (int)SNDMSG((hwndHD), HDM_INSERTITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM *)(phdi)) + +enum : uint { HDM_DELETEITEM = HDM_FIRST + 2 } +// #define Header_DeleteItem(hwndHD, i) (BOOL)SNDMSG((hwndHD), HDM_DELETEITEM, (WPARAM)(int)(i), 0L) + +enum : uint { HDM_GETITEMA = HDM_FIRST + 3 } +enum : uint { HDM_GETITEMW = HDM_FIRST + 11 } + +// #ifdef UNICODE +alias HDM_GETITEMW HDM_GETITEM; +// #else +// #... +// #endif + +// #define Header_GetItem(hwndHD, i, phdi) (BOOL)SNDMSG((hwndHD), HDM_GETITEM, (WPARAM)(int)(i), (LPARAM)(HD_ITEM *)(phdi)) + +enum : uint { HDM_SETITEMA = HDM_FIRST + 4 } +enum : uint { HDM_SETITEMW = HDM_FIRST + 12 } + +// #ifdef UNICODE +alias HDM_SETITEMW HDM_SETITEM; +// #else +// #... +// #endif + +// #define Header_SetItem(hwndHD, i, phdi) (BOOL)SNDMSG((hwndHD), HDM_SETITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM *)(phdi)) + +// #if (_WIN32_IE >= 0x0300) +alias HDLAYOUT HD_LAYOUT; +// #else +// #... +// #endif + +struct _HD_LAYOUT { + RECT *prc; + WINDOWPOS *pwpos; +} +alias _HD_LAYOUT HDLAYOUT; +alias _HD_LAYOUT* LPHDLAYOUT; + +enum : uint { HDM_LAYOUT = HDM_FIRST + 5 } +// #define Header_Layout(hwndHD, playout) (BOOL)SNDMSG((hwndHD), HDM_LAYOUT, 0, (LPARAM)(HD_LAYOUT *)(playout)) + +enum : uint { HHT_NOWHERE = 0x0001 } +enum : uint { HHT_ONHEADER = 0x0002 } +enum : uint { HHT_ONDIVIDER = 0x0004 } +enum : uint { HHT_ONDIVOPEN = 0x0008 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { HHT_ONFILTER = 0x0010 } +enum : uint { HHT_ONFILTERBUTTON = 0x0020 } +// #endif +enum : uint { HHT_ABOVE = 0x0100 } +enum : uint { HHT_BELOW = 0x0200 } +enum : uint { HHT_TORIGHT = 0x0400 } +enum : uint { HHT_TOLEFT = 0x0800 } + +// #if (_WIN32_IE >= 0x0300) +alias HDHITTESTINFO HD_HITTESTINFO; +// #else +// #... +// #endif + +struct _HD_HITTESTINFO { + POINT pt; + UINT flags; + int iItem; +} +alias _HD_HITTESTINFO HDHITTESTINFO; +alias _HD_HITTESTINFO* LPHDHITTESTINFO; + +enum : uint { HDM_HITTEST = HDM_FIRST + 6 } + +// #if (_WIN32_IE >= 0x0300) + +enum : uint { HDM_GETITEMRECT = HDM_FIRST + 7 } +// #define Header_GetItemRect(hwnd, iItem, lprc) (BOOL)SNDMSG((hwnd), HDM_GETITEMRECT, (WPARAM)(iItem), (LPARAM)(lprc)) + +enum : uint { HDM_SETIMAGELIST = HDM_FIRST + 8 } +// #define Header_SetImageList(hwnd, himl) (HIMAGELIST)SNDMSG((hwnd), HDM_SETIMAGELIST, 0, (LPARAM)(himl)) + +enum : uint { HDM_GETIMAGELIST = HDM_FIRST + 9 } +// #define Header_GetImageList(hwnd) (HIMAGELIST)SNDMSG((hwnd), HDM_GETIMAGELIST, 0, 0) + +enum : uint { HDM_ORDERTOINDEX = HDM_FIRST + 15 } +// #define Header_OrderToIndex(hwnd, i) (int)SNDMSG((hwnd), HDM_ORDERTOINDEX, (WPARAM)(i), 0) + +enum : uint { HDM_CREATEDRAGIMAGE = HDM_FIRST + 16 } +// #define Header_CreateDragImage(hwnd, i) (HIMAGELIST)SNDMSG((hwnd), HDM_CREATEDRAGIMAGE, (WPARAM)(i), 0) + +enum : uint { HDM_GETORDERARRAY = HDM_FIRST + 17 } +// #define Header_GetOrderArray(hwnd, iCount, lpi) (BOOL)SNDMSG((hwnd), HDM_GETORDERARRAY, (WPARAM)(iCount), (LPARAM)(lpi)) + +enum : uint { HDM_SETORDERARRAY = HDM_FIRST + 18 } +// #define Header_SetOrderArray(hwnd, iCount, lpi) (BOOL)SNDMSG((hwnd), HDM_SETORDERARRAY, (WPARAM)(iCount), (LPARAM)(lpi)) + +enum : uint { HDM_SETHOTDIVIDER = HDM_FIRST + 19 } +// #define Header_SetHotDivider(hwnd, fPos, dw) (int)SNDMSG((hwnd), HDM_SETHOTDIVIDER, (WPARAM)(fPos), (LPARAM)(dw)) + +// #endif // _WIN32_IE >= 0x0300 + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { HDM_SETBITMAPMARGIN = HDM_FIRST + 20 } +// #define Header_SetBitmapMargin(hwnd, iWidth) (int)SNDMSG((hwnd), HDM_SETBITMAPMARGIN, (WPARAM)(iWidth), 0) + +enum : uint { HDM_GETBITMAPMARGIN = HDM_FIRST + 21 } +// #define Header_GetBitmapMargin(hwnd) (int)SNDMSG((hwnd), HDM_GETBITMAPMARGIN, 0, 0) +// #endif + +// #if (_WIN32_IE >= 0x0400) +alias CCM_SETUNICODEFORMAT HDM_SETUNICODEFORMAT; +// #define Header_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), HDM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT HDM_GETUNICODEFORMAT; +// #define Header_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), HDM_GETUNICODEFORMAT, 0, 0) +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST+22 } +// #define Header_SetFilterChangeTimeout(hwnd, i) (int)SNDMSG((hwnd), HDM_SETFILTERCHANGETIMEOUT, 0, (LPARAM)(i)) + +enum : uint { HDM_EDITFILTER = HDM_FIRST+23 } +// #define Header_EditFilter(hwnd, i, fDiscardChanges) (int)SNDMSG((hwnd), HDM_EDITFILTER, (WPARAM)(i), MAKELPARAM(fDiscardChanges, 0)) + +enum : uint { HDM_CLEARFILTER = HDM_FIRST+24 } +// #define Header_ClearFilter(hwnd, i) (int)SNDMSG((hwnd), HDM_CLEARFILTER, (WPARAM)(i), 0) +// #define Header_ClearAllFilters(hwnd) (int)SNDMSG((hwnd), HDM_CLEARFILTER, (WPARAM)-1, 0) +// #endif + +enum : uint { HDN_ITEMCHANGINGA = HDN_FIRST-0 } +enum : uint { HDN_ITEMCHANGINGW = HDN_FIRST-20 } +enum : uint { HDN_ITEMCHANGEDA = HDN_FIRST-1 } +enum : uint { HDN_ITEMCHANGEDW = HDN_FIRST-21 } +enum : uint { HDN_ITEMCLICKA = HDN_FIRST-2 } +enum : uint { HDN_ITEMCLICKW = HDN_FIRST-22 } +enum : uint { HDN_ITEMDBLCLICKA = HDN_FIRST-3 } +enum : uint { HDN_ITEMDBLCLICKW = HDN_FIRST-23 } +enum : uint { HDN_DIVIDERDBLCLICKA = HDN_FIRST-5 } +enum : uint { HDN_DIVIDERDBLCLICKW = HDN_FIRST-25 } +enum : uint { HDN_BEGINTRACKA = HDN_FIRST-6 } +enum : uint { HDN_BEGINTRACKW = HDN_FIRST-26 } +enum : uint { HDN_ENDTRACKA = HDN_FIRST-7 } +enum : uint { HDN_ENDTRACKW = HDN_FIRST-27 } +enum : uint { HDN_TRACKA = HDN_FIRST-8 } +enum : uint { HDN_TRACKW = HDN_FIRST-28 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { HDN_GETDISPINFOA = HDN_FIRST-9 } +enum : uint { HDN_GETDISPINFOW = HDN_FIRST-29 } +enum : uint { HDN_BEGINDRAG = HDN_FIRST-10 } +enum : uint { HDN_ENDDRAG = HDN_FIRST-11 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { HDN_FILTERCHANGE = HDN_FIRST-12 } +enum : uint { HDN_FILTERBTNCLICK = HDN_FIRST-13 } +// #endif + +// #ifdef UNICODE +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; +// #if (_WIN32_IE >= 0x0300) +alias HDN_GETDISPINFOW HDN_GETDISPINFO; +// #endif +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #if (_WIN32_IE >= 0x0300) +// #... +// #endif +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias NMHEADERA HD_NOTIFYA; +alias NMHEADERW HD_NOTIFYW; +// #else +// #... +// #... +// #... +// #... +// #endif +alias NMHEADER HD_NOTIFY; + +struct tagNMHEADERA { + NMHDR hdr; + int iItem; + int iButton; + HDITEMA *pitem; +} +alias tagNMHEADERA NMHEADERA; +alias tagNMHEADERA* LPNMHEADERA; + +struct tagNMHEADERW { + NMHDR hdr; + int iItem; + int iButton; + HDITEMW *pitem; +} +alias tagNMHEADERW NMHEADERW; +alias tagNMHEADERW* LPNMHEADERW; + +// #ifdef UNICODE +alias NMHEADERW NMHEADER; +alias LPNMHEADERW LPNMHEADER; +// #else +// #... +// #... +// #endif + +struct tagNMHDDISPINFOW { + NMHDR hdr; + int iItem; + UINT mask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias tagNMHDDISPINFOW NMHDDISPINFOW; +alias tagNMHDDISPINFOW* LPNMHDDISPINFOW; + +struct tagNMHDDISPINFOA { + NMHDR hdr; + int iItem; + UINT mask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias tagNMHDDISPINFOA NMHDDISPINFOA; +alias tagNMHDDISPINFOA* LPNMHDDISPINFOA; + +// #ifdef UNICODE +alias NMHDDISPINFOW NMHDDISPINFO; +alias LPNMHDDISPINFOW LPNMHDDISPINFO; +// #else +// #... +// #... +// #endif + +// #if (_WIN32_IE >= 0x0500) +struct tagNMHDFILTERBTNCLICK { + NMHDR hdr; + INT iItem; + RECT rc; +} +alias tagNMHDFILTERBTNCLICK NMHDFILTERBTNCLICK; +alias tagNMHDFILTERBTNCLICK* LPNMHDFILTERBTNCLICK; + +// #endif + +// #endif // NOHEADER + +// #ifndef NOTOOLBAR + +// #ifdef _WIN32 +const wchar[] TOOLBARCLASSNAMEW = "ToolbarWindow32"; +const char[] TOOLBARCLASSNAMEA = "ToolbarWindow32"; + +// #ifdef UNICODE +alias TOOLBARCLASSNAMEW TOOLBARCLASSNAME; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +struct _TBBUTTON { + int iBitmap; + int idCommand; + BYTE fsState; + BYTE fsStyle; +// #ifdef _WIN64 +// ... +// #elif defined(_WIN32) + BYTE bReserved[2]; +// #endif + DWORD_PTR dwData; + INT_PTR iString; +} +alias _TBBUTTON TBBUTTON; +alias _TBBUTTON* PTBBUTTON; +alias _TBBUTTON* LPTBBUTTON; + +alias TBBUTTON* LPCTBBUTTON; + +struct _COLORMAP { + COLORREF from; + COLORREF to; +} +alias _COLORMAP COLORMAP; +alias _COLORMAP* LPCOLORMAP; + +extern(Windows) export HWND CreateToolbarEx(HWND hwnd, DWORD ws, UINT wID, int nBitmaps, + HINSTANCE hBMInst, UINT_PTR wBMID, LPCTBBUTTON lpButtons, + int iNumButtons, int dxButton, int dyButton, + int dxBitmap, int dyBitmap, UINT uStructSize); + +extern(Windows) export HBITMAP CreateMappedBitmap(HINSTANCE hInstance, INT_PTR idBitmap, + UINT wFlags, LPCOLORMAP lpColorMap, + int iNumMaps); + +enum : uint { CMB_MASKED = 0x02 } +enum : uint { TBSTATE_CHECKED = 0x01 } +enum : uint { TBSTATE_PRESSED = 0x02 } +enum : uint { TBSTATE_ENABLED = 0x04 } +enum : uint { TBSTATE_HIDDEN = 0x08 } +enum : uint { TBSTATE_INDETERMINATE = 0x10 } +enum : uint { TBSTATE_WRAP = 0x20 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBSTATE_ELLIPSES = 0x40 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBSTATE_MARKED = 0x80 } +// #endif + +enum : uint { TBSTYLE_BUTTON = 0x0000 } +enum : uint { TBSTYLE_SEP = 0x0001 } +enum : uint { TBSTYLE_CHECK = 0x0002 } +enum : uint { TBSTYLE_GROUP = 0x0004 } +enum : uint { TBSTYLE_CHECKGROUP = TBSTYLE_GROUP | TBSTYLE_CHECK } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBSTYLE_DROPDOWN = 0x0008 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBSTYLE_AUTOSIZE = 0x0010 } +enum : uint { TBSTYLE_NOPREFIX = 0x0020 } +// #endif + +enum : uint { TBSTYLE_TOOLTIPS = 0x0100 } +enum : uint { TBSTYLE_WRAPABLE = 0x0200 } +enum : uint { TBSTYLE_ALTDRAG = 0x0400 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBSTYLE_FLAT = 0x0800 } +enum : uint { TBSTYLE_LIST = 0x1000 } +enum : uint { TBSTYLE_CUSTOMERASE = 0x2000 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBSTYLE_REGISTERDROP = 0x4000 } +enum : uint { TBSTYLE_TRANSPARENT = 0x8000 } +enum : uint { TBSTYLE_EX_DRAWDDARROWS = 0x00000001 } +// #endif + +// #if (_WIN32_IE >= 0x0500) +alias TBSTYLE_BUTTON BTNS_BUTTON; +alias TBSTYLE_SEP BTNS_SEP; +alias TBSTYLE_CHECK BTNS_CHECK; +alias TBSTYLE_GROUP BTNS_GROUP; +alias TBSTYLE_CHECKGROUP BTNS_CHECKGROUP; +alias TBSTYLE_DROPDOWN BTNS_DROPDOWN; +alias TBSTYLE_AUTOSIZE BTNS_AUTOSIZE; +alias TBSTYLE_NOPREFIX BTNS_NOPREFIX; +// #if (_WIN32_IE >= 0x0501) +enum : uint { BTNS_SHOWTEXT = 0x0040 } +// #endif // 0x0501 +enum : uint { BTNS_WHOLEDROPDOWN = 0x0080 } +// #endif + +// #if (_WIN32_IE >= 0x0501) +enum : uint { TBSTYLE_EX_MIXEDBUTTONS = 0x00000008 } +enum : uint { TBSTYLE_EX_HIDECLIPPEDBUTTONS = 0x00000010 } +// #endif // 0x0501 + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { TBSTYLE_EX_DOUBLEBUFFER = 0x00000080 } +// #endif + +// #if (_WIN32_IE >= 0x0400) + +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; +// #if (_WIN32_WINNT >= 0x501) + int iListGap; +// #endif +} +alias _NMTBCUSTOMDRAW NMTBCUSTOMDRAW; +alias _NMTBCUSTOMDRAW* LPNMTBCUSTOMDRAW; + +enum : uint { TBCDRF_NOEDGES = 0x00010000 } +enum : uint { TBCDRF_HILITEHOTTRACK = 0x00020000 } +enum : uint { TBCDRF_NOOFFSET = 0x00040000 } +enum : uint { TBCDRF_NOMARK = 0x00080000 } +enum : uint { TBCDRF_NOETCHEDEFFECT = 0x00100000 } +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { TBCDRF_BLENDICON = 0x00200000 } +enum : uint { TBCDRF_NOBACKGROUND = 0x00400000 } +// #endif + +enum : uint { TB_ENABLEBUTTON = WM_USER + 1 } +enum : uint { TB_CHECKBUTTON = WM_USER + 2 } +enum : uint { TB_PRESSBUTTON = WM_USER + 3 } +enum : uint { TB_HIDEBUTTON = WM_USER + 4 } +enum : uint { TB_INDETERMINATE = WM_USER + 5 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TB_MARKBUTTON = WM_USER + 6 } +// #endif +enum : uint { TB_ISBUTTONENABLED = WM_USER + 9 } +enum : uint { TB_ISBUTTONCHECKED = WM_USER + 10 } +enum : uint { TB_ISBUTTONPRESSED = WM_USER + 11 } +enum : uint { TB_ISBUTTONHIDDEN = WM_USER + 12 } +enum : uint { TB_ISBUTTONINDETERMINATE = WM_USER + 13 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TB_ISBUTTONHIGHLIGHTED = WM_USER + 14 } +// #endif +enum : uint { TB_SETSTATE = WM_USER + 17 } +enum : uint { TB_GETSTATE = WM_USER + 18 } +enum : uint { TB_ADDBITMAP = WM_USER + 19 } + +// #ifdef _WIN32 +struct tagTBADDBITMAP { + HINSTANCE hInst; + UINT_PTR nID; +} +alias tagTBADDBITMAP TBADDBITMAP; +alias tagTBADDBITMAP* LPTBADDBITMAP; + +HINSTANCE HINST_COMMCTRL = cast(HINSTANCE)(-1); +enum : uint { IDB_STD_SMALL_COLOR = 0 } +enum : uint { IDB_STD_LARGE_COLOR = 1 } +enum : uint { IDB_VIEW_SMALL_COLOR = 4 } +enum : uint { IDB_VIEW_LARGE_COLOR = 5 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { IDB_HIST_SMALL_COLOR = 8 } +enum : uint { IDB_HIST_LARGE_COLOR = 9 } +// #endif + +enum : uint { STD_CUT = 0 } +enum : uint { STD_COPY = 1 } +enum : uint { STD_PASTE = 2 } +enum : uint { STD_UNDO = 3 } +enum : uint { STD_REDOW = 4 } +enum : uint { STD_DELETE = 5 } +enum : uint { STD_FILENEW = 6 } +enum : uint { STD_FILEOPEN = 7 } +enum : uint { STD_FILESAVE = 8 } +enum : uint { STD_PRINTPRE = 9 } +enum : uint { STD_PROPERTIES = 10 } +enum : uint { STD_HELP = 11 } +enum : uint { STD_FIND = 12 } +enum : uint { STD_REPLACE = 13 } +enum : uint { STD_PRINT = 14 } + +enum : uint { VIEW_LARGEICONS = 0 } +enum : uint { VIEW_SMALLICONS = 1 } +enum : uint { VIEW_LIST = 2 } +enum : uint { VIEW_DETAILS = 3 } +enum : uint { VIEW_SORTNAME = 4 } +enum : uint { VIEW_SORTSIZE = 5 } +enum : uint { VIEW_SORTDATE = 6 } +enum : uint { VIEW_SORTTYPE = 7 } +enum : uint { VIEW_PARENTFOLDER = 8 } +enum : uint { VIEW_NETCONNECT = 9 } +enum : uint { VIEW_NETDISCONNECT = 10 } +enum : uint { VIEW_NEWFOLDER = 11 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { VIEW_VIEWMENU = 12 } +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { HIST_BACK = 0 } +enum : uint { HIST_FORWARD = 1 } +enum : uint { HIST_FAVORITES = 2 } +enum : uint { HIST_ADDTOFAVORITES = 3 } +enum : uint { HIST_VIEWTREE = 4 } +// #endif + +// #endif + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TB_ADDBUTTONSA = WM_USER + 20 } +enum : uint { TB_INSERTBUTTONA = WM_USER + 21 } +// #else +// #... +// #... +// #endif + +enum : uint { TB_DELETEBUTTON = WM_USER + 22 } +enum : uint { TB_GETBUTTON = WM_USER + 23 } +enum : uint { TB_BUTTONCOUNT = WM_USER + 24 } +enum : uint { TB_COMMANDTOINDEX = WM_USER + 25 } + +// #ifdef _WIN32 + +struct tagTBSAVEPARAMSA { + HKEY hkr; + LPCSTR pszSubKey; + LPCSTR pszValueName; +} +alias tagTBSAVEPARAMSA TBSAVEPARAMSA; +alias tagTBSAVEPARAMSA* LPTBSAVEPARAMSA; + +struct tagTBSAVEPARAMSW { + HKEY hkr; + LPCWSTR pszSubKey; + LPCWSTR pszValueName; +} +alias tagTBSAVEPARAMSW TBSAVEPARAMSW; +alias tagTBSAVEPARAMSW* LPTBSAVEPARAMW; + +// #ifdef UNICODE +alias TBSAVEPARAMSW TBSAVEPARAMS; +alias LPTBSAVEPARAMSW LPTBSAVEPARAMS; +// #else +// #... +// #... +// #endif + +// #endif // _WIN32 + +enum : uint { TB_SAVERESTOREA = WM_USER + 26 } +enum : uint { TB_SAVERESTOREW = WM_USER + 76 } +enum : uint { TB_CUSTOMIZE = WM_USER + 27 } +enum : uint { TB_ADDSTRINGA = WM_USER + 28 } +enum : uint { TB_ADDSTRINGW = WM_USER + 77 } +enum : uint { TB_GETITEMRECT = WM_USER + 29 } +enum : uint { TB_BUTTONSTRUCTSIZE = WM_USER + 30 } +enum : uint { TB_SETBUTTONSIZE = WM_USER + 31 } +enum : uint { TB_SETBITMAPSIZE = WM_USER + 32 } +enum : uint { TB_AUTOSIZE = WM_USER + 33 } +enum : uint { TB_GETTOOLTIPS = WM_USER + 35 } +enum : uint { TB_SETTOOLTIPS = WM_USER + 36 } +enum : uint { TB_SETPARENT = WM_USER + 37 } +enum : uint { TB_SETROWS = WM_USER + 39 } +enum : uint { TB_GETROWS = WM_USER + 40 } +enum : uint { TB_SETCMDID = WM_USER + 42 } +enum : uint { TB_CHANGEBITMAP = WM_USER + 43 } +enum : uint { TB_GETBITMAP = WM_USER + 44 } +enum : uint { TB_GETBUTTONTEXTA = WM_USER + 45 } +enum : uint { TB_GETBUTTONTEXTW = WM_USER + 75 } +enum : uint { TB_REPLACEBITMAP = WM_USER + 46 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TB_SETINDENT = WM_USER + 47 } +enum : uint { TB_SETIMAGELIST = WM_USER + 48 } +enum : uint { TB_GETIMAGELIST = WM_USER + 49 } +enum : uint { TB_LOADIMAGES = WM_USER + 50 } +enum : uint { TB_GETRECT = WM_USER + 51 } +enum : uint { TB_SETHOTIMAGELIST = WM_USER + 52 } +enum : uint { TB_GETHOTIMAGELIST = WM_USER + 53 } +enum : uint { TB_SETDISABLEDIMAGELIST = WM_USER + 54 } +enum : uint { TB_GETDISABLEDIMAGELIST = WM_USER + 55 } +enum : uint { TB_SETSTYLE = WM_USER + 56 } +enum : uint { TB_GETSTYLE = WM_USER + 57 } +enum : uint { TB_GETBUTTONSIZE = WM_USER + 58 } +enum : uint { TB_SETBUTTONWIDTH = WM_USER + 59 } +enum : uint { TB_SETMAXTEXTROWS = WM_USER + 60 } +enum : uint { TB_GETTEXTROWS = WM_USER + 61 } +// #endif // _WIN32_IE >= 0x0300 + +// #ifdef UNICODE +alias TB_GETBUTTONTEXTW TB_GETBUTTONTEXT; +alias TB_SAVERESTOREW TB_SAVERESTORE; +alias TB_ADDSTRINGW TB_ADDSTRING; +// #else +// #... +// #... +// #... +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TB_GETOBJECT = WM_USER + 62 } +enum : uint { TB_GETHOTITEM = WM_USER + 71 } +enum : uint { TB_SETHOTITEM = WM_USER + 72 } +enum : uint { TB_SETANCHORHIGHLIGHT = WM_USER + 73 } +enum : uint { TB_GETANCHORHIGHLIGHT = WM_USER + 74 } +enum : uint { TB_MAPACCELERATORA = WM_USER + 78 } + +struct _0 { + int iButton; + DWORD dwFlags; +} +alias _0 TBINSERTMARK; +alias _0* LPTBINSERTMARK; + +enum : uint { TBIMHT_AFTER = 0x00000001 } +enum : uint { TBIMHT_BACKGROUND = 0x00000002 } + +enum : uint { TB_GETINSERTMARK = WM_USER + 79 } +enum : uint { TB_SETINSERTMARK = WM_USER + 80 } +enum : uint { TB_INSERTMARKHITTEST = WM_USER + 81 } +enum : uint { TB_MOVEBUTTON = WM_USER + 82 } +enum : uint { TB_GETMAXSIZE = WM_USER + 83 } +enum : uint { TB_SETEXTENDEDSTYLE = WM_USER + 84 } +enum : uint { TB_GETEXTENDEDSTYLE = WM_USER + 85 } +enum : uint { TB_GETPADDING = WM_USER + 86 } +enum : uint { TB_SETPADDING = WM_USER + 87 } +enum : uint { TB_SETINSERTMARKCOLOR = WM_USER + 88 } +enum : uint { TB_GETINSERTMARKCOLOR = WM_USER + 89 } + +alias CCM_SETCOLORSCHEME TB_SETCOLORSCHEME; +alias CCM_GETCOLORSCHEME TB_GETCOLORSCHEME; + +alias CCM_SETUNICODEFORMAT TB_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT TB_GETUNICODEFORMAT; + +enum : uint { TB_MAPACCELERATORW = WM_USER + 90 } +// #ifdef UNICODE +alias TB_MAPACCELERATORW TB_MAPACCELERATOR; +// #else +// #... +// #endif + +// #endif // _WIN32_IE >= 0x0400 + +struct _1 { + HINSTANCE hInstOld; + UINT_PTR nIDOld; + HINSTANCE hInstNew; + UINT_PTR nIDNew; + int nButtons; +} +alias _1 TBREPLACEBITMAP; +alias _1* LPTBREPLACEBITMAP; + +// #ifdef _WIN32 + +enum : uint { TBBF_LARGE = 0x0001 } + +enum : uint { TB_GETBITMAPFLAGS = WM_USER + 41 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBIF_IMAGE = 0x00000001 } +enum : uint { TBIF_TEXT = 0x00000002 } +enum : uint { TBIF_STATE = 0x00000004 } +enum : uint { TBIF_STYLE = 0x00000008 } +enum : uint { TBIF_LPARAM = 0x00000010 } +enum : uint { TBIF_COMMAND = 0x00000020 } +enum : uint { TBIF_SIZE = 0x00000040 } + +// #if (_WIN32_IE >= 0x0500) +enum : uint { TBIF_BYINDEX = 0x80000000 } +// #endif + +struct _2 { + UINT cbSize; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPSTR pszText; + int cchText; +} +alias _2 TBBUTTONINFOA; +alias _2* LPTBBUTTONINFOA; + +struct _3 { + UINT cbSize; + DWORD dwMask; + int idCommand; + int iImage; + BYTE fsState; + BYTE fsStyle; + WORD cx; + DWORD_PTR lParam; + LPWSTR pszText; + int cchText; +} +alias _3 TBBUTTONINFOW; +alias _3* LPTBBUTTONINFOW; + +// #ifdef UNICODE +alias TBBUTTONINFOW TBBUTTONINFO; +alias LPTBBUTTONINFOW LPTBBUTTONINFO; +// #else +// #... +// #... +// #endif + +enum : uint { TB_GETBUTTONINFOW = WM_USER + 63 } +enum : uint { TB_SETBUTTONINFOW = WM_USER + 64 } +enum : uint { TB_GETBUTTONINFOA = WM_USER + 65 } +enum : uint { TB_SETBUTTONINFOA = WM_USER + 66 } +// #ifdef UNICODE +alias TB_GETBUTTONINFOW TB_GETBUTTONINFO; +alias TB_SETBUTTONINFOW TB_SETBUTTONINFO; +// #else +// #... +// #... +// #endif + +enum : uint { TB_INSERTBUTTONW = WM_USER + 67 } +enum : uint { TB_ADDBUTTONSW = WM_USER + 68 } + +enum : uint { TB_HITTEST = WM_USER + 69 } + +// #ifdef UNICODE +alias TB_INSERTBUTTONW TB_INSERTBUTTON; +alias TB_ADDBUTTONSW TB_ADDBUTTONS; +// #else +// #... +// #... +// #endif + +enum : uint { TB_SETDRAWTEXTFLAGS = WM_USER + 70 } + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { TB_GETSTRINGW = WM_USER + 91 } +enum : uint { TB_GETSTRINGA = WM_USER + 92 } +// #ifdef UNICODE +alias TB_GETSTRINGW TB_GETSTRING; +// #else +// #... +// #endif + +// #endif // _WIN32_IE >= 0x0500 + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { TBMF_PAD = 0x00000001 } +enum : uint { TBMF_BARPAD = 0x00000002 } +enum : uint { TBMF_BUTTONSPACING = 0x00000004 } + +struct _4 { + UINT cbSize; + DWORD dwMask; + int cxPad; + int cyPad; + int cxBarPad; + int cyBarPad; + int cxButtonSpacing; + int cyButtonSpacing; +} +alias _4 TBMETRICS; +alias _4* LPTBMETRICS; + +enum : uint { TB_GETMETRICS = WM_USER + 101 } +enum : uint { TB_SETMETRICS = WM_USER + 102 } +// #endif + +// #if (_WIN32_WINNT >= 0x501) +alias CCM_SETWINDOWTHEME TB_SETWINDOWTHEME; +// #endif + +enum : uint { TBN_GETBUTTONINFOA = TBN_FIRST-0 } +enum : uint { TBN_BEGINDRAG = TBN_FIRST-1 } +enum : uint { TBN_ENDDRAG = TBN_FIRST-2 } +enum : uint { TBN_BEGINADJUST = TBN_FIRST-3 } +enum : uint { TBN_ENDADJUST = TBN_FIRST-4 } +enum : uint { TBN_RESET = TBN_FIRST-5 } +enum : uint { TBN_QUERYINSERT = TBN_FIRST-6 } +enum : uint { TBN_QUERYDELETE = TBN_FIRST-7 } +enum : uint { TBN_TOOLBARCHANGE = TBN_FIRST-8 } +enum : uint { TBN_CUSTHELP = TBN_FIRST-9 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBN_DROPDOWN = TBN_FIRST - 10 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TBN_GETOBJECT = TBN_FIRST - 12 } + +struct tagNMTBHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; +} +alias tagNMTBHOTITEM NMTBHOTITEM; +alias tagNMTBHOTITEM* LPNMTBHOTITEM; + +enum : uint { HICF_OTHER = 0x00000000 } +enum : uint { HICF_MOUSE = 0x00000001 } +enum : uint { HICF_ARROWKEYS = 0x00000002 } +enum : uint { HICF_ACCELERATOR = 0x00000004 } +enum : uint { HICF_DUPACCEL = 0x00000008 } +enum : uint { HICF_ENTERING = 0x00000010 } +enum : uint { HICF_LEAVING = 0x00000020 } +enum : uint { HICF_RESELECT = 0x00000040 } +enum : uint { HICF_LMOUSE = 0x00000080 } +enum : uint { HICF_TOGGLEDROPDOWN = 0x00000100 } + +enum : uint { TBN_HOTITEMCHANGE = TBN_FIRST - 13 } +enum : uint { TBN_DRAGOUT = TBN_FIRST - 14 } +enum : uint { TBN_DELETINGBUTTON = TBN_FIRST - 15 } +enum : uint { TBN_GETDISPINFOA = TBN_FIRST - 16 } +enum : uint { TBN_GETDISPINFOW = TBN_FIRST - 17 } +enum : uint { TBN_GETINFOTIPA = TBN_FIRST - 18 } +enum : uint { TBN_GETINFOTIPW = TBN_FIRST - 19 } +enum : uint { TBN_GETBUTTONINFOW = TBN_FIRST - 20 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { TBN_RESTORE = TBN_FIRST - 21 } +enum : uint { TBN_SAVE = TBN_FIRST - 22 } +enum : uint { TBN_INITCUSTOMIZE = TBN_FIRST - 23 } +enum : uint { TBNRF_HIDEHELP = 0x00000001 } +enum : uint { TBNRF_ENDCUSTOMIZE = 0x00000002 } +// #endif // (_WIN32_IE >= 0x0500) + +// #if (_WIN32_IE >= 0x0500) + +struct tagNMTBSAVE { + NMHDR hdr; + DWORD * pData; + DWORD * pCurrent; + UINT cbData; + int iItem; + int cButtons; + TBBUTTON tbButton; +} +alias tagNMTBSAVE NMTBSAVE; +alias tagNMTBSAVE* LPNMTBSAVE; + +struct tagNMTBRESTORE { + NMHDR hdr; + DWORD * pData; + DWORD * pCurrent; + UINT cbData; + int iItem; + int cButtons; + int cbBytesPerRecord; + TBBUTTON tbButton; +} +alias tagNMTBRESTORE NMTBRESTORE; +alias tagNMTBRESTORE* LPNMTBRESTORE; + +// #endif // (_WIN32_IE >= 0x0500) + +struct tagNMTBGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; +} +alias tagNMTBGETINFOTIPA NMTBGETINFOTIPA; +alias tagNMTBGETINFOTIPA* LPNMTBGETINFOTIPA; + +struct tagNMTBGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + int iItem; + LPARAM lParam; +} +alias tagNMTBGETINFOTIPW NMTBGETINFOTIPW; +alias tagNMTBGETINFOTIPW* LPNMTBGETINFOTIPW; + +// #ifdef UNICODE +alias TBN_GETINFOTIPW TBN_GETINFOTIP; +alias NMTBGETINFOTIPW NMTBGETINFOTIP; +alias LPNMTBGETINFOTIPW LPNMTBGETINFOTIP; +// #else +// #... +// #... +// #... +// #endif + +enum : uint { TBNF_IMAGE = 0x00000001 } +enum : uint { TBNF_TEXT = 0x00000002 } +enum : uint { TBNF_DI_SETITEM = 0x10000000 } + +struct _5 { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPSTR pszText; + int cchText; +} +alias _5 NMTBDISPINFOA; +alias _5* LPNMTBDISPINFOA; + +struct _6 { + NMHDR hdr; + DWORD dwMask; + int idCommand; + DWORD_PTR lParam; + int iImage; + LPWSTR pszText; + int cchText; +} +alias _6 NMTBDISPINFOW; +alias _6* LPNMTBDISPINFOW; + +// #ifdef UNICODE +alias TBN_GETDISPINFOW TBN_GETDISPINFO; +alias NMTBDISPINFOW NMTBDISPINFO; +alias LPNMTBDISPINFOW LPNMTBDISPINFO; +// #else +// #... +// #... +// #... +// #endif + +enum : uint { TBDDRET_DEFAULT = 0 } +enum : uint { TBDDRET_NODEFAULT = 1 } +enum : uint { TBDDRET_TREATPRESSED = 2 } + +// #endif + +// #ifdef UNICODE +alias TBN_GETBUTTONINFOW TBN_GETBUTTONINFO; +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias NMTOOLBARA TBNOTIFYA; +alias NMTOOLBARW TBNOTIFYW; +alias LPNMTOOLBARA LPTBNOTIFYA; +alias LPNMTOOLBARW LPTBNOTIFYW; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias NMTOOLBAR TBNOTIFY; +alias LPNMTOOLBAR LPTBNOTIFY; + +// #if (_WIN32_IE >= 0x0300) +struct tagNMTOOLBARA { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPSTR pszText; +// #if (_WIN32_IE >= 0x500) + RECT rcButton; +// #endif +} +alias tagNMTOOLBARA NMTOOLBARA; +alias tagNMTOOLBARA* LPNMTOOLBARA; + +// #endif + +// #if (_WIN32_IE >= 0x0300) +struct tagNMTOOLBARW { + NMHDR hdr; + int iItem; + TBBUTTON tbButton; + int cchText; + LPWSTR pszText; +// #if (_WIN32_IE >= 0x500) + RECT rcButton; +// #endif +} +alias tagNMTOOLBARW NMTOOLBARW; +alias tagNMTOOLBARW* LPNMTOOLBARW; + +// #endif + +// #ifdef UNICODE +alias NMTOOLBARW NMTOOLBAR; +alias LPNMTOOLBARW LPNMTOOLBAR; +// #else +// #... +// #... +// #endif + +// #endif + +// #endif // NOTOOLBAR + +// #if (_WIN32_IE >= 0x0300) + +// #ifndef NOREBAR + +// #ifdef _WIN32 +const wchar[] REBARCLASSNAMEW = "ReBarWindow32"; +const char[] REBARCLASSNAMEA = "ReBarWindow32"; + +// #ifdef UNICODE +alias REBARCLASSNAMEW REBARCLASSNAME; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +enum : uint { RBIM_IMAGELIST = 0x00000001 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { RBS_TOOLTIPS = 0x0100 } +enum : uint { RBS_VARHEIGHT = 0x0200 } +enum : uint { RBS_BANDBORDERS = 0x0400 } +enum : uint { RBS_FIXEDORDER = 0x0800 } +enum : uint { RBS_REGISTERDROP = 0x1000 } +enum : uint { RBS_AUTOSIZE = 0x2000 } +enum : uint { RBS_VERTICALGRIPPER = 0x4000 } +enum : uint { RBS_DBLCLKTOGGLE = 0x8000 } +// #else +// #... +// #... +// #... +// #... +// #endif // _WIN32_IE >= 0x0400 + +struct tagREBARINFO { + UINT cbSize; + UINT fMask; +// #ifndef NOIMAGEAPIS + HIMAGELIST himl; +// #else +// ... +// #endif +} +alias tagREBARINFO REBARINFO; +alias tagREBARINFO* LPREBARINFO; + +enum : uint { RBBS_BREAK = 0x00000001 } +enum : uint { RBBS_FIXEDSIZE = 0x00000002 } +enum : uint { RBBS_CHILDEDGE = 0x00000004 } +enum : uint { RBBS_HIDDEN = 0x00000008 } +enum : uint { RBBS_NOVERT = 0x00000010 } +enum : uint { RBBS_FIXEDBMP = 0x00000020 } +// #if (_WIN32_IE >= 0x0400) // +enum : uint { RBBS_VARIABLEHEIGHT = 0x00000040 } +enum : uint { RBBS_GRIPPERALWAYS = 0x00000080 } +enum : uint { RBBS_NOGRIPPER = 0x00000100 } +// #if (_WIN32_IE >= 0x0500) // +enum : uint { RBBS_USECHEVRON = 0x00000200 } +// #if (_WIN32_IE >= 0x0501) // +enum : uint { RBBS_HIDETITLE = 0x00000400 } +enum : uint { RBBS_TOPALIGN = 0x00000800 } +// #endif // 0x0501 // +// #endif // 0x0500 // +// #endif // 0x0400 // + +enum : uint { RBBIM_STYLE = 0x00000001 } +enum : uint { RBBIM_COLORS = 0x00000002 } +enum : uint { RBBIM_TEXT = 0x00000004 } +enum : uint { RBBIM_IMAGE = 0x00000008 } +enum : uint { RBBIM_CHILD = 0x00000010 } +enum : uint { RBBIM_CHILDSIZE = 0x00000020 } +enum : uint { RBBIM_SIZE = 0x00000040 } +enum : uint { RBBIM_BACKGROUND = 0x00000080 } +enum : uint { RBBIM_ID = 0x00000100 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { RBBIM_IDEALSIZE = 0x00000200 } +enum : uint { RBBIM_LPARAM = 0x00000400 } +enum : uint { RBBIM_HEADERSIZE = 0x00000800 } +// #endif + +struct tagREBARBANDINFOA { + UINT cbSize; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; +// #if (_WIN32_IE >= 0x0400) + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; +// #endif +} +alias tagREBARBANDINFOA REBARBANDINFOA; +alias tagREBARBANDINFOA* LPREBARBANDINFOA; + +alias REBARBANDINFOA* LPCREBARBANDINFOA; + +// #define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA, wID) +// #define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID) + +struct tagREBARBANDINFOW { + UINT cbSize; + UINT fMask; + UINT fStyle; + COLORREF clrFore; + COLORREF clrBack; + LPWSTR lpText; + UINT cch; + int iImage; + HWND hwndChild; + UINT cxMinChild; + UINT cyMinChild; + UINT cx; + HBITMAP hbmBack; + UINT wID; +// #if (_WIN32_IE >= 0x0400) + UINT cyChild; + UINT cyMaxChild; + UINT cyIntegral; + UINT cxIdeal; + LPARAM lParam; + UINT cxHeader; +// #endif +} +alias tagREBARBANDINFOW REBARBANDINFOW; +alias tagREBARBANDINFOW* LPREBARBANDINFOW; + +alias REBARBANDINFOW* LPCREBARBANDINFOW; + +// #ifdef UNICODE +alias REBARBANDINFOW REBARBANDINFO; +alias LPREBARBANDINFOW LPREBARBANDINFO; +alias LPCREBARBANDINFOW LPCREBARBANDINFO; +// #define REBARBANDINFO_V3_SIZE REBARBANDINFOW_V3_SIZE +// #else +// #... +// #... +// #... +// #... +// #endif + +enum : uint { RB_INSERTBANDA = WM_USER + 1 } +enum : uint { RB_DELETEBAND = WM_USER + 2 } +enum : uint { RB_GETBARINFO = WM_USER + 3 } +enum : uint { RB_SETBARINFO = WM_USER + 4 } +// #if (_WIN32_IE < 0x0400) +// #... +// #endif +enum : uint { RB_SETBANDINFOA = WM_USER + 6 } +enum : uint { RB_SETPARENT = WM_USER + 7 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { RB_HITTEST = WM_USER + 8 } +enum : uint { RB_GETRECT = WM_USER + 9 } +// #endif +enum : uint { RB_INSERTBANDW = WM_USER + 10 } +enum : uint { RB_SETBANDINFOW = WM_USER + 11 } +enum : uint { RB_GETBANDCOUNT = WM_USER + 12 } +enum : uint { RB_GETROWCOUNT = WM_USER + 13 } +enum : uint { RB_GETROWHEIGHT = WM_USER + 14 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { RB_IDTOINDEX = WM_USER + 16 } +enum : uint { RB_GETTOOLTIPS = WM_USER + 17 } +enum : uint { RB_SETTOOLTIPS = WM_USER + 18 } +enum : uint { RB_SETBKCOLOR = WM_USER + 19 } +enum : uint { RB_GETBKCOLOR = WM_USER + 20 } +enum : uint { RB_SETTEXTCOLOR = WM_USER + 21 } +enum : uint { RB_GETTEXTCOLOR = WM_USER + 22 } + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { RBSTR_CHANGERECT = 0x0001 } +// #endif + +enum : uint { RB_SIZETORECT = WM_USER + 23 } +// #endif // _WIN32_IE >= 0x0400 + +alias CCM_SETCOLORSCHEME RB_SETCOLORSCHEME; +alias CCM_GETCOLORSCHEME RB_GETCOLORSCHEME; + +// #ifdef UNICODE +alias RB_INSERTBANDW RB_INSERTBAND; +alias RB_SETBANDINFOW RB_SETBANDINFO; +// #else +// #... +// #... +// #endif + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { RB_BEGINDRAG = WM_USER + 24 } +enum : uint { RB_ENDDRAG = WM_USER + 25 } +enum : uint { RB_DRAGMOVE = WM_USER + 26 } +enum : uint { RB_GETBARHEIGHT = WM_USER + 27 } +enum : uint { RB_GETBANDINFOW = WM_USER + 28 } +enum : uint { RB_GETBANDINFOA = WM_USER + 29 } + +// #ifdef UNICODE +alias RB_GETBANDINFOW RB_GETBANDINFO; +// #else +// #... +// #endif + +enum : uint { RB_MINIMIZEBAND = WM_USER + 30 } +enum : uint { RB_MAXIMIZEBAND = WM_USER + 31 } + +enum : uint { RB_GETDROPTARGET = CCM_GETDROPTARGET } + +enum : uint { RB_GETBANDBORDERS = WM_USER + 34 } + +enum : uint { RB_SHOWBAND = WM_USER + 35 } +enum : uint { RB_SETPALETTE = WM_USER + 37 } +enum : uint { RB_GETPALETTE = WM_USER + 38 } +enum : uint { RB_MOVEBAND = WM_USER + 39 } + +alias CCM_SETUNICODEFORMAT RB_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT RB_GETUNICODEFORMAT; + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { RB_GETBANDMARGINS = WM_USER + 40 } +alias CCM_SETWINDOWTHEME RB_SETWINDOWTHEME; +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { RB_PUSHCHEVRON = WM_USER + 43 } +// #endif // _WIN32_IE >= 0x0500 + +enum : uint { RBN_HEIGHTCHANGE = RBN_FIRST - 0 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { RBN_GETOBJECT = RBN_FIRST - 1 } +enum : uint { RBN_LAYOUTCHANGED = RBN_FIRST - 2 } +enum : uint { RBN_AUTOSIZE = RBN_FIRST - 3 } +enum : uint { RBN_BEGINDRAG = RBN_FIRST - 4 } +enum : uint { RBN_ENDDRAG = RBN_FIRST - 5 } +enum : uint { RBN_DELETINGBAND = RBN_FIRST - 6 } +enum : uint { RBN_DELETEDBAND = RBN_FIRST - 7 } +enum : uint { RBN_CHILDSIZE = RBN_FIRST - 8 } + +// #if (_WIN32_IE >= 0x0500) +enum : uint { RBN_CHEVRONPUSHED = RBN_FIRST - 10 } +// #endif // _WIN32_IE >= 0x0500 + +// #if (_WIN32_IE >= 0x0500) +enum : uint { RBN_MINMAX = RBN_FIRST - 21 } +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { RBN_AUTOBREAK = RBN_FIRST - 22 } +// #endif + +struct tagNMREBARCHILDSIZE { + NMHDR hdr; + UINT uBand; + UINT wID; + RECT rcChild; + RECT rcBand; +} +alias tagNMREBARCHILDSIZE NMREBARCHILDSIZE; +alias tagNMREBARCHILDSIZE* LPNMREBARCHILDSIZE; + +struct tagNMREBAR { + NMHDR hdr; + DWORD dwMask; + UINT uBand; + UINT fStyle; + UINT wID; + LPARAM lParam; +} +alias tagNMREBAR NMREBAR; +alias tagNMREBAR* LPNMREBAR; + +enum : uint { RBNM_ID = 0x00000001 } +enum : uint { RBNM_STYLE = 0x00000002 } +enum : uint { RBNM_LPARAM = 0x00000004 } + +struct tagNMRBAUTOSIZE { + NMHDR hdr; + BOOL fChanged; + RECT rcTarget; + RECT rcActual; +} +alias tagNMRBAUTOSIZE NMRBAUTOSIZE; +alias tagNMRBAUTOSIZE* LPNMRBAUTOSIZE; + +// #if (_WIN32_IE >= 0x0500) +struct tagNMREBARCHEVRON { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + RECT rc; + LPARAM lParamNM; +} +alias tagNMREBARCHEVRON NMREBARCHEVRON; +alias tagNMREBARCHEVRON* LPNMREBARCHEVRON; + +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { RBAB_AUTOSIZE = 0x0001 } +enum : uint { RBAB_ADDBAND = 0x0002 } + +struct tagNMREBARAUTOBREAK { + NMHDR hdr; + UINT uBand; + UINT wID; + LPARAM lParam; + UINT uMsg; + UINT fStyleCurrent; + BOOL fAutoBreak; +} +alias tagNMREBARAUTOBREAK NMREBARAUTOBREAK; +alias tagNMREBARAUTOBREAK* LPNMREBARAUTOBREAK; + +// #endif + +enum : uint { RBHT_NOWHERE = 0x0001 } +enum : uint { RBHT_CAPTION = 0x0002 } +enum : uint { RBHT_CLIENT = 0x0003 } +enum : uint { RBHT_GRABBER = 0x0004 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { RBHT_CHEVRON = 0x0008 } +// #endif + +struct _RB_HITTESTINFO { + POINT pt; + UINT flags; + int iBand; +} +alias _RB_HITTESTINFO RBHITTESTINFO; +alias _RB_HITTESTINFO* LPRBHITTESTINFO; + +// #endif // _WIN32_IE >= 0x0400 + +// #endif // NOREBAR + +// #endif // _WIN32_IE >= 0x0300 + +// #ifndef NOTOOLTIPS + +// #ifdef _WIN32 + +const wchar[] TOOLTIPS_CLASSW = "tooltips_class32"; +const char[] TOOLTIPS_CLASSA = "tooltips_class32"; + +// #ifdef UNICODE +alias TOOLTIPS_CLASSW TOOLTIPS_CLASS; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias LPTTTOOLINFOA LPTOOLINFOA; +alias LPTTTOOLINFOW LPTOOLINFOW; +alias TTTOOLINFOA TOOLINFOA; +alias TTTOOLINFOW TOOLINFOW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias LPTTTOOLINFO LPTOOLINFO; +alias TTTOOLINFO TOOLINFO; + +// #define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText) +// #define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText) +// #define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lParam) +// #define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lParam) +// #define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpReserved) +// #define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpReserved) + +struct tagTOOLINFOA { + UINT cbSize; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPSTR lpszText; +// #if (_WIN32_IE >= 0x0300) + LPARAM lParam; +// #endif +// #if (_WIN32_WINNT >= 0x0501) + void *lpReserved; +// #endif +} +alias tagTOOLINFOA TTTOOLINFOA; +alias tagTOOLINFOA* PTOOLINFOA; +alias tagTOOLINFOA* LPTTTOOLINFOA; + +struct tagTOOLINFOW { + UINT cbSize; + UINT uFlags; + HWND hwnd; + UINT_PTR uId; + RECT rect; + HINSTANCE hinst; + LPWSTR lpszText; +// #if (_WIN32_IE >= 0x0300) + LPARAM lParam; +// #endif +// #if (_WIN32_WINNT >= 0x0501) + void *lpReserved; +// #endif +} +alias tagTOOLINFOW TTTOOLINFOW; +alias tagTOOLINFOW* PTOOLINFOW; +alias tagTOOLINFOW* LPTTTOOLINFOW; + +// #ifdef UNICODE +alias TTTOOLINFOW TTTOOLINFO; +alias PTOOLINFOW PTOOLINFO; +alias LPTTTOOLINFOW LPTTTOOLINFO; +// #define TTTOOLINFO_V1_SIZE TTTOOLINFOW_V1_SIZE +// #else +// #... +// #... +// #... +// #... +// #endif + +enum : uint { TTS_ALWAYSTIP = 0x01 } +enum : uint { TTS_NOPREFIX = 0x02 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { TTS_NOANIMATE = 0x10 } +enum : uint { TTS_NOFADE = 0x20 } +enum : uint { TTS_BALLOON = 0x40 } +enum : uint { TTS_CLOSE = 0x80 } +// #endif + +enum : uint { TTF_IDISHWND = 0x0001 } + +enum : uint { TTF_CENTERTIP = 0x0002 } +enum : uint { TTF_RTLREADING = 0x0004 } +enum : uint { TTF_SUBCLASS = 0x0010 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TTF_TRACK = 0x0020 } +enum : uint { TTF_ABSOLUTE = 0x0080 } +enum : uint { TTF_TRANSPARENT = 0x0100 } +// #if (_WIN32_IE >= 0x0501) +enum : uint { TTF_PARSELINKS = 0x1000 } +// #endif // _WIN32_IE >= 0x0501 +enum : uint { TTF_DI_SETITEM = 0x8000 } +// #endif // _WIN32_IE >= 0x0300 + +enum : uint { TTDT_AUTOMATIC = 0 } +enum : uint { TTDT_RESHOW = 1 } +enum : uint { TTDT_AUTOPOP = 2 } +enum : uint { TTDT_INITIAL = 3 } + +enum : uint { TTI_NONE = 0 } +enum : uint { TTI_INFO = 1 } +enum : uint { TTI_WARNING = 2 } +enum : uint { TTI_ERROR = 3 } + +enum : uint { TTM_ACTIVATE = WM_USER + 1 } +enum : uint { TTM_SETDELAYTIME = WM_USER + 3 } +enum : uint { TTM_ADDTOOLA = WM_USER + 4 } +enum : uint { TTM_ADDTOOLW = WM_USER + 50 } +enum : uint { TTM_DELTOOLA = WM_USER + 5 } +enum : uint { TTM_DELTOOLW = WM_USER + 51 } +enum : uint { TTM_NEWTOOLRECTA = WM_USER + 6 } +enum : uint { TTM_NEWTOOLRECTW = WM_USER + 52 } +enum : uint { TTM_RELAYEVENT = WM_USER + 7 } + +enum : uint { TTM_GETTOOLINFOA = WM_USER + 8 } +enum : uint { TTM_GETTOOLINFOW = WM_USER + 53 } + +enum : uint { TTM_SETTOOLINFOA = WM_USER + 9 } +enum : uint { TTM_SETTOOLINFOW = WM_USER + 54 } + +enum : uint { TTM_HITTESTA = WM_USER +10 } +enum : uint { TTM_HITTESTW = WM_USER +55 } +enum : uint { TTM_GETTEXTA = WM_USER +11 } +enum : uint { TTM_GETTEXTW = WM_USER +56 } +enum : uint { TTM_UPDATETIPTEXTA = WM_USER +12 } +enum : uint { TTM_UPDATETIPTEXTW = WM_USER +57 } +enum : uint { TTM_GETTOOLCOUNT = WM_USER +13 } +enum : uint { TTM_ENUMTOOLSA = WM_USER +14 } +enum : uint { TTM_ENUMTOOLSW = WM_USER +58 } +enum : uint { TTM_GETCURRENTTOOLA = WM_USER + 15 } +enum : uint { TTM_GETCURRENTTOOLW = WM_USER + 59 } +enum : uint { TTM_WINDOWFROMPOINT = WM_USER + 16 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TTM_TRACKACTIVATE = WM_USER + 17 } +enum : uint { TTM_TRACKPOSITION = WM_USER + 18 } +enum : uint { TTM_SETTIPBKCOLOR = WM_USER + 19 } +enum : uint { TTM_SETTIPTEXTCOLOR = WM_USER + 20 } +enum : uint { TTM_GETDELAYTIME = WM_USER + 21 } +enum : uint { TTM_GETTIPBKCOLOR = WM_USER + 22 } +enum : uint { TTM_GETTIPTEXTCOLOR = WM_USER + 23 } +enum : uint { TTM_SETMAXTIPWIDTH = WM_USER + 24 } +enum : uint { TTM_GETMAXTIPWIDTH = WM_USER + 25 } +enum : uint { TTM_SETMARGIN = WM_USER + 26 } +enum : uint { TTM_GETMARGIN = WM_USER + 27 } +enum : uint { TTM_POP = WM_USER + 28 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TTM_UPDATE = WM_USER + 29 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { TTM_GETBUBBLESIZE = WM_USER + 30 } +enum : uint { TTM_ADJUSTRECT = WM_USER + 31 } +enum : uint { TTM_SETTITLEA = WM_USER + 32 } +enum : uint { TTM_SETTITLEW = WM_USER + 33 } +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { TTM_POPUP = WM_USER + 34 } +enum : uint { TTM_GETTITLE = WM_USER + 35 } + +struct _TTGETTITLE { + DWORD dwSize; + UINT uTitleBitmap; + UINT cch; + WCHAR * pszTitle; +} +alias _TTGETTITLE TTGETTITLE; +alias _TTGETTITLE* PTTGETTITLE; + +// #endif + +// #ifdef UNICODE +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; +// #if (_WIN32_IE >= 0x0500) +alias TTM_SETTITLEW TTM_SETTITLE; +// #endif +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #if (_WIN32_IE >= 0x0500) +// #... +// #endif +// #endif + +// #if (_WIN32_WINNT >= 0x501) +alias CCM_SETWINDOWTHEME TTM_SETWINDOWTHEME; +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias LPTTHITTESTINFOW LPHITTESTINFOW; +alias LPTTHITTESTINFOA LPHITTESTINFOA; +// #else +// #... +// #... +// #endif + +alias LPTTHITTESTINFO LPHITTESTINFO; + +struct _TT_HITTESTINFOA { + HWND hwnd; + POINT pt; + TTTOOLINFOA ti; +} +alias _TT_HITTESTINFOA TTHITTESTINFOA; +alias _TT_HITTESTINFOA* LPTTHITTESTINFOA; + +struct _TT_HITTESTINFOW { + HWND hwnd; + POINT pt; + TTTOOLINFOW ti; +} +alias _TT_HITTESTINFOW TTHITTESTINFOW; +alias _TT_HITTESTINFOW* LPTTHITTESTINFOW; + +// #ifdef UNICODE +alias TTHITTESTINFOW TTHITTESTINFO; +alias LPTTHITTESTINFOW LPTTHITTESTINFO; +// #else +// #... +// #... +// #endif + +enum : uint { TTN_GETDISPINFOA = TTN_FIRST - 0 } +enum : uint { TTN_GETDISPINFOW = TTN_FIRST - 10 } +enum : uint { TTN_SHOW = TTN_FIRST - 1 } +enum : uint { TTN_POP = TTN_FIRST - 2 } +enum : uint { TTN_LINKCLICK = TTN_FIRST - 3 } + +// #ifdef UNICODE +alias TTN_GETDISPINFOW TTN_GETDISPINFO; +// #else +// #... +// #endif + +alias TTN_GETDISPINFO TTN_NEEDTEXT; +alias TTN_GETDISPINFOA TTN_NEEDTEXTA; +alias TTN_GETDISPINFOW TTN_NEEDTEXTW; + +// #if (_WIN32_IE >= 0x0300) +alias NMTTDISPINFOW TOOLTIPTEXTW; +alias NMTTDISPINFOA TOOLTIPTEXTA; +alias LPNMTTDISPINFOA LPTOOLTIPTEXTA; +alias LPNMTTDISPINFOW LPTOOLTIPTEXTW; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias NMTTDISPINFO TOOLTIPTEXT; +alias LPNMTTDISPINFO LPTOOLTIPTEXT; + +// #define NMTTDISPINFOA_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOA, uFlags) +// #define NMTTDISPINFOW_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOW, uFlags) + +struct tagNMTTDISPINFOA { + NMHDR hdr; + LPSTR lpszText; + char szText[80]; + HINSTANCE hinst; + UINT uFlags; +// #if (_WIN32_IE >= 0x0300) + LPARAM lParam; +// #endif +} +alias tagNMTTDISPINFOA NMTTDISPINFOA; +alias tagNMTTDISPINFOA* LPNMTTDISPINFOA; + +struct tagNMTTDISPINFOW { + NMHDR hdr; + LPWSTR lpszText; + WCHAR szText[80]; + HINSTANCE hinst; + UINT uFlags; +// #if (_WIN32_IE >= 0x0300) + LPARAM lParam; +// #endif +} +alias tagNMTTDISPINFOW NMTTDISPINFOW; +alias tagNMTTDISPINFOW* LPNMTTDISPINFOW; + +// #ifdef UNICODE +alias NMTTDISPINFOW NMTTDISPINFO; +alias LPNMTTDISPINFOW LPNMTTDISPINFO; +// #define NMTTDISPINFO_V1_SIZE NMTTDISPINFOW_V1_SIZE +// #else +// #... +// #... +// #... +// #endif + +// #endif // NOTOOLTIPS + +// #ifndef NOSTATUSBAR + +enum : uint { SBARS_SIZEGRIP = 0x0100 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { SBARS_TOOLTIPS = 0x0800 } +// #endif + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { SBT_TOOLTIPS = 0x0800 } +// #endif + +extern(Windows) export void DrawStatusTextA(HDC hDC, LPRECT lprc, LPCSTR pszText, UINT uFlags); +extern(Windows) export void DrawStatusTextW(HDC hDC, LPRECT lprc, LPCWSTR pszText, UINT uFlags); + +extern(Windows) export HWND CreateStatusWindowA(LONG style, LPCSTR lpszText, HWND hwndParent, UINT wID); +extern(Windows) export HWND CreateStatusWindowW(LONG style, LPCWSTR lpszText, HWND hwndParent, UINT wID); + +// #ifdef UNICODE +alias CreateStatusWindowW CreateStatusWindow; +alias DrawStatusTextW DrawStatusText; +// #else +// #... +// #... +// #endif + +// #ifdef _WIN32 +const wchar[] STATUSCLASSNAMEW = "msctls_statusbar32"; +const char[] STATUSCLASSNAMEA = "msctls_statusbar32"; + +// #ifdef UNICODE +alias STATUSCLASSNAMEW STATUSCLASSNAME; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +enum : uint { SB_SETTEXTA = WM_USER+1 } +enum : uint { SB_SETTEXTW = WM_USER+11 } +enum : uint { SB_GETTEXTA = WM_USER+2 } +enum : uint { SB_GETTEXTW = WM_USER+13 } +enum : uint { SB_GETTEXTLENGTHA = WM_USER+3 } +enum : uint { SB_GETTEXTLENGTHW = WM_USER+12 } + +// #ifdef UNICODE +alias SB_GETTEXTW SB_GETTEXT; +alias SB_SETTEXTW SB_SETTEXT; +alias SB_GETTEXTLENGTHW SB_GETTEXTLENGTH; +// #if (_WIN32_IE >= 0x0400) +alias SB_SETTIPTEXTW SB_SETTIPTEXT; +alias SB_GETTIPTEXTW SB_GETTIPTEXT; +// #endif +// #else +// #... +// #... +// #... +// #if (_WIN32_IE >= 0x0400) +// #... +// #... +// #endif +// #endif + +enum : uint { SB_SETPARTS = WM_USER+4 } +enum : uint { SB_GETPARTS = WM_USER+6 } +enum : uint { SB_GETBORDERS = WM_USER+7 } +enum : uint { SB_SETMINHEIGHT = WM_USER+8 } +enum : uint { SB_SIMPLE = WM_USER+9 } +enum : uint { SB_GETRECT = WM_USER+10 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { SB_ISSIMPLE = WM_USER+14 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { SB_SETICON = WM_USER+15 } +// #define SB_SETTIPTEXTA (WM_USER+16) +// #define SB_SETTIPTEXTW (WM_USER+17) +// #define SB_GETTIPTEXTA (WM_USER+18) +// #define SB_GETTIPTEXTW (WM_USER+19) +enum : uint { SB_GETICON = WM_USER+20 } +alias CCM_SETUNICODEFORMAT SB_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT SB_GETUNICODEFORMAT; +// #endif + +enum : uint { SBT_OWNERDRAW = 0x1000 } +enum : uint { SBT_NOBORDERS = 0x0100 } +enum : uint { SBT_POPOUT = 0x0200 } +enum : uint { SBT_RTLREADING = 0x0400 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { SBT_NOTABPARSING = 0x0800 } +// #endif + +alias CCM_SETBKCOLOR SB_SETBKCOLOR; + +// #if (_WIN32_IE >= 0x0400) +enum : uint { SBN_SIMPLEMODECHANGE = SBN_FIRST - 0 } +// #endif + +// #if (_WIN32_IE >= 0x0500) + +enum : uint { SB_SIMPLEID = 0x00ff } +// #endif + +// #endif // NOSTATUSBAR + +// #ifndef NOMENUHELP + +extern(Windows) export void MenuHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, HMENU hMainMenu, HINSTANCE hInst, HWND hwndStatus, UINT *lpwIDs); +extern(Windows) export BOOL ShowHideMenuCtl(HWND hWnd, UINT_PTR uFlags, LPINT lpInfo); +extern(Windows) export void GetEffectiveClientRect(HWND hWnd, LPRECT lprc, LPINT lpInfo); + +alias SC_SIZE MINSYSCOMMAND; + +// #endif + +// #ifndef NOTRACKBAR + +// #ifdef _WIN32 + +const char[] TRACKBAR_CLASSA = "msctls_trackbar32"; +const wchar[] TRACKBAR_CLASSW = "msctls_trackbar32"; + +// #ifdef UNICODE +alias TRACKBAR_CLASSW TRACKBAR_CLASS; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +enum : uint { TBS_AUTOTICKS = 0x0001 } +enum : uint { TBS_VERT = 0x0002 } +enum : uint { TBS_HORZ = 0x0000 } +enum : uint { TBS_TOP = 0x0004 } +enum : uint { TBS_BOTTOM = 0x0000 } +enum : uint { TBS_LEFT = 0x0004 } +enum : uint { TBS_RIGHT = 0x0000 } +enum : uint { TBS_BOTH = 0x0008 } +enum : uint { TBS_NOTICKS = 0x0010 } +enum : uint { TBS_ENABLESELRANGE = 0x0020 } +enum : uint { TBS_FIXEDLENGTH = 0x0040 } +enum : uint { TBS_NOTHUMB = 0x0080 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBS_TOOLTIPS = 0x0100 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { TBS_REVERSED = 0x0200 } +// #endif + +// #if (_WIN32_IE >= 0x0501) +enum : uint { TBS_DOWNISLEFT = 0x0400 } +// #endif + +enum : uint { TBM_GETPOS = WM_USER } +enum : uint { TBM_GETRANGEMIN = WM_USER+1 } +enum : uint { TBM_GETRANGEMAX = WM_USER+2 } +enum : uint { TBM_GETTIC = WM_USER+3 } +enum : uint { TBM_SETTIC = WM_USER+4 } +enum : uint { TBM_SETPOS = WM_USER+5 } +enum : uint { TBM_SETRANGE = WM_USER+6 } +enum : uint { TBM_SETRANGEMIN = WM_USER+7 } +enum : uint { TBM_SETRANGEMAX = WM_USER+8 } +enum : uint { TBM_CLEARTICS = WM_USER+9 } +enum : uint { TBM_SETSEL = WM_USER+10 } +enum : uint { TBM_SETSELSTART = WM_USER+11 } +enum : uint { TBM_SETSELEND = WM_USER+12 } +enum : uint { TBM_GETPTICS = WM_USER+14 } +enum : uint { TBM_GETTICPOS = WM_USER+15 } +enum : uint { TBM_GETNUMTICS = WM_USER+16 } +enum : uint { TBM_GETSELSTART = WM_USER+17 } +enum : uint { TBM_GETSELEND = WM_USER+18 } +enum : uint { TBM_CLEARSEL = WM_USER+19 } +enum : uint { TBM_SETTICFREQ = WM_USER+20 } +enum : uint { TBM_SETPAGESIZE = WM_USER+21 } +enum : uint { TBM_GETPAGESIZE = WM_USER+22 } +enum : uint { TBM_SETLINESIZE = WM_USER+23 } +enum : uint { TBM_GETLINESIZE = WM_USER+24 } +enum : uint { TBM_GETTHUMBRECT = WM_USER+25 } +enum : uint { TBM_GETCHANNELRECT = WM_USER+26 } +enum : uint { TBM_SETTHUMBLENGTH = WM_USER+27 } +enum : uint { TBM_GETTHUMBLENGTH = WM_USER+28 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TBM_SETTOOLTIPS = WM_USER+29 } +enum : uint { TBM_GETTOOLTIPS = WM_USER+30 } +enum : uint { TBM_SETTIPSIDE = WM_USER+31 } + +enum : uint { TBTS_TOP = 0 } +enum : uint { TBTS_LEFT = 1 } +enum : uint { TBTS_BOTTOM = 2 } +enum : uint { TBTS_RIGHT = 3 } + +enum : uint { TBM_SETBUDDY = WM_USER+32 } +enum : uint { TBM_GETBUDDY = WM_USER+33 } +// #endif +// #if (_WIN32_IE >= 0x0400) +alias CCM_SETUNICODEFORMAT TBM_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT TBM_GETUNICODEFORMAT; +// #endif + +enum : uint { TB_LINEUP = 0 } +enum : uint { TB_LINEDOWN = 1 } +enum : uint { TB_PAGEUP = 2 } +enum : uint { TB_PAGEDOWN = 3 } +enum : uint { TB_THUMBPOSITION = 4 } +enum : uint { TB_THUMBTRACK = 5 } +enum : uint { TB_TOP = 6 } +enum : uint { TB_BOTTOM = 7 } +enum : uint { TB_ENDTRACK = 8 } + +// #if (_WIN32_IE >= 0x0300) + +enum : uint { TBCD_TICS = 0x0001 } +enum : uint { TBCD_THUMB = 0x0002 } +enum : uint { TBCD_CHANNEL = 0x0003 } +// #endif + +// #endif // trackbar + +// #ifndef NODRAGLIST + +struct tagDRAGLISTINFO { + UINT uNotification; + HWND hWnd; + POINT ptCursor; +} +alias tagDRAGLISTINFO DRAGLISTINFO; +alias tagDRAGLISTINFO* LPDRAGLISTINFO; + +enum : uint { DL_BEGINDRAG = WM_USER+133 } +enum : uint { DL_DRAGGING = WM_USER+134 } +enum : uint { DL_DROPPED = WM_USER+135 } +enum : uint { DL_CANCELDRAG = WM_USER+136 } + +enum : uint { DL_CURSORSET = 0 } +enum : uint { DL_STOPCURSOR = 1 } +enum : uint { DL_COPYCURSOR = 2 } +enum : uint { DL_MOVECURSOR = 3 } + +const TCHAR[] DRAGLISTMSGSTRING = "commctrl_DragListMsg"; + +extern(Windows) export BOOL MakeDragList(HWND hLB); +extern(Windows) export void DrawInsert(HWND handParent, HWND hLB, int nItem); + +extern(Windows) export int LBItemFromPt(HWND hLB, POINT pt, BOOL bAutoScroll); + +// #endif + +// #ifndef NOUPDOWN + +// #ifdef _WIN32 + +const char[] UPDOWN_CLASSA = "msctls_updown32"; +const wchar[] UPDOWN_CLASSW = "msctls_updown32"; + +// #ifdef UNICODE +alias UPDOWN_CLASSW UPDOWN_CLASS; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +struct _UDACCEL { + UINT nSec; + UINT nInc; +} +alias _UDACCEL UDACCEL; +alias _UDACCEL* LPUDACCEL; + +enum : uint { UD_MAXVAL = 0x7fff } +enum : uint { UD_MINVAL = -UD_MAXVAL } + +enum : uint { UDS_WRAP = 0x0001 } +enum : uint { UDS_SETBUDDYINT = 0x0002 } +enum : uint { UDS_ALIGNRIGHT = 0x0004 } +enum : uint { UDS_ALIGNLEFT = 0x0008 } +enum : uint { UDS_AUTOBUDDY = 0x0010 } +enum : uint { UDS_ARROWKEYS = 0x0020 } +enum : uint { UDS_HORZ = 0x0040 } +enum : uint { UDS_NOTHOUSANDS = 0x0080 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { UDS_HOTTRACK = 0x0100 } +// #endif + +enum : uint { UDM_SETRANGE = WM_USER+101 } +enum : uint { UDM_GETRANGE = WM_USER+102 } +enum : uint { UDM_SETPOS = WM_USER+103 } +enum : uint { UDM_GETPOS = WM_USER+104 } +enum : uint { UDM_SETBUDDY = WM_USER+105 } +enum : uint { UDM_GETBUDDY = WM_USER+106 } +enum : uint { UDM_SETACCEL = WM_USER+107 } +enum : uint { UDM_GETACCEL = WM_USER+108 } +enum : uint { UDM_SETBASE = WM_USER+109 } +enum : uint { UDM_GETBASE = WM_USER+110 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { UDM_SETRANGE32 = WM_USER+111 } +enum : uint { UDM_GETRANGE32 = WM_USER+112 } +alias CCM_SETUNICODEFORMAT UDM_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT UDM_GETUNICODEFORMAT; +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { UDM_SETPOS32 = WM_USER+113 } +enum : uint { UDM_GETPOS32 = WM_USER+114 } +// #endif + +extern(Windows) export HWND CreateUpDownControl(DWORD dwStyle, int x, int y, int cx, int cy, + HWND hParent, int nID, HINSTANCE hInst, + HWND hBuddy, + int nUpper, int nLower, int nPos); + +// #if (_WIN32_IE >= 0x0300) +alias NMUPDOWN NM_UPDOWN; +alias LPNMUPDOWN LPNM_UPDOWN; +// #else +// #... +// #... +// #endif + +struct _NM_UPDOWN { + NMHDR hdr; + int iPos; + int iDelta; +} +alias _NM_UPDOWN NMUPDOWN; +alias _NM_UPDOWN* LPNMUPDOWN; + +enum : uint { UDN_DELTAPOS = UDN_FIRST - 1 } + +// #endif // NOUPDOWN + +// #ifndef NOPROGRESS + +// #ifdef _WIN32 + +const char[] PROGRESS_CLASSA = "msctls_progress32"; +const wchar[] PROGRESS_CLASSW = "msctls_progress32"; + +// #ifdef UNICODE +alias PROGRESS_CLASSW PROGRESS_CLASS; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { PBS_SMOOTH = 0x01 } +enum : uint { PBS_VERTICAL = 0x04 } +// #endif + +enum : uint { PBM_SETRANGE = WM_USER+1 } +enum : uint { PBM_SETPOS = WM_USER+2 } +enum : uint { PBM_DELTAPOS = WM_USER+3 } +enum : uint { PBM_SETSTEP = WM_USER+4 } +enum : uint { PBM_STEPIT = WM_USER+5 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { PBM_SETRANGE32 = WM_USER+6 } +struct _7 { + int iLow; + int iHigh; +} +alias _7 PBRANGE; +alias _7* PPBRANGE; + +enum : uint { PBM_GETRANGE = WM_USER+7 } +enum : uint { PBM_GETPOS = WM_USER+8 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { PBM_SETBARCOLOR = WM_USER+9 } +// #endif // _WIN32_IE >= 0x0400 +alias CCM_SETBKCOLOR PBM_SETBKCOLOR; +// #endif // _WIN32_IE >= 0x0300 + +// #endif // NOPROGRESS + +// #ifndef NOHOTKEY + +enum : uint { HOTKEYF_SHIFT = 0x01 } +enum : uint { HOTKEYF_CONTROL = 0x02 } +enum : uint { HOTKEYF_ALT = 0x04 } +// #ifdef _MAC +// #... +// #else +enum : uint { HOTKEYF_EXT = 0x08 } +// #endif + +enum : uint { HKCOMB_NONE = 0x0001 } +enum : uint { HKCOMB_S = 0x0002 } +enum : uint { HKCOMB_C = 0x0004 } +enum : uint { HKCOMB_A = 0x0008 } +enum : uint { HKCOMB_SC = 0x0010 } +enum : uint { HKCOMB_SA = 0x0020 } +enum : uint { HKCOMB_CA = 0x0040 } +enum : uint { HKCOMB_SCA = 0x0080 } + +enum : uint { HKM_SETHOTKEY = WM_USER+1 } +enum : uint { HKM_GETHOTKEY = WM_USER+2 } +enum : uint { HKM_SETRULES = WM_USER+3 } + +// #ifdef _WIN32 + +const char[] HOTKEY_CLASSA = "msctls_hotkey32"; +const wchar[] HOTKEY_CLASSW = "msctls_hotkey32"; + +// #ifdef UNICODE +alias HOTKEY_CLASSW HOTKEY_CLASS; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #endif // NOHOTKEY + +enum : uint { CCS_TOP = 0x00000001 } +enum : uint { CCS_NOMOVEY = 0x00000002 } +enum : uint { CCS_BOTTOM = 0x00000003 } +enum : uint { CCS_NORESIZE = 0x00000004 } +enum : uint { CCS_NOPARENTALIGN = 0x00000008 } +enum : uint { CCS_ADJUSTABLE = 0x00000020 } +enum : uint { CCS_NODIVIDER = 0x00000040 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { CCS_VERT = 0x00000080 } +enum : uint { CCS_LEFT = CCS_VERT | CCS_TOP } +enum : uint { CCS_RIGHT = CCS_VERT | CCS_BOTTOM } +enum : uint { CCS_NOMOVEX = CCS_VERT | CCS_NOMOVEY } +// #endif + +// #ifndef NOLISTVIEW + +// #ifdef _WIN32 + +const char[] WC_LISTVIEWA = "SysListView32"; +const wchar[] WC_LISTVIEWW = "SysListView32"; + +// #ifdef UNICODE +alias WC_LISTVIEWW WC_LISTVIEW; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +enum : uint { LVS_ICON = 0x0000 } +enum : uint { LVS_REPORT = 0x0001 } +enum : uint { LVS_SMALLICON = 0x0002 } +enum : uint { LVS_LIST = 0x0003 } +enum : uint { LVS_TYPEMASK = 0x0003 } +enum : uint { LVS_SINGLESEL = 0x0004 } +enum : uint { LVS_SHOWSELALWAYS = 0x0008 } +enum : uint { LVS_SORTASCENDING = 0x0010 } +enum : uint { LVS_SORTDESCENDING = 0x0020 } +enum : uint { LVS_SHAREIMAGELISTS = 0x0040 } +enum : uint { LVS_NOLABELWRAP = 0x0080 } +enum : uint { LVS_AUTOARRANGE = 0x0100 } +enum : uint { LVS_EDITLABELS = 0x0200 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVS_OWNERDATA = 0x1000 } +// #endif +enum : uint { LVS_NOSCROLL = 0x2000 } + +enum : uint { LVS_TYPESTYLEMASK = 0xfc00 } + +enum : uint { LVS_ALIGNTOP = 0x0000 } +enum : uint { LVS_ALIGNLEFT = 0x0800 } +enum : uint { LVS_ALIGNMASK = 0x0c00 } + +enum : uint { LVS_OWNERDRAWFIXED = 0x0400 } +enum : uint { LVS_NOCOLUMNHEADER = 0x4000 } +enum : uint { LVS_NOSORTHEADER = 0x8000 } + +// #if (_WIN32_IE >= 0x0400) +alias CCM_SETUNICODEFORMAT LVM_SETUNICODEFORMAT; +// #define ListView_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), LVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT LVM_GETUNICODEFORMAT; +// #define ListView_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), LVM_GETUNICODEFORMAT, 0, 0) +// #endif + +enum : uint { LVM_GETBKCOLOR = LVM_FIRST + 0 } +// #define ListView_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETBKCOLOR, 0, 0L) + +enum : uint { LVM_SETBKCOLOR = LVM_FIRST + 1 } +// #define ListView_SetBkColor(hwnd, clrBk) (BOOL)SNDMSG((hwnd), LVM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk)) + +enum : uint { LVM_GETIMAGELIST = LVM_FIRST + 2 } +// #define ListView_GetImageList(hwnd, iImageList) (HIMAGELIST)SNDMSG((hwnd), LVM_GETIMAGELIST, (WPARAM)(INT)(iImageList), 0L) + +enum : uint { LVSIL_NORMAL = 0 } +enum : uint { LVSIL_SMALL = 1 } +enum : uint { LVSIL_STATE = 2 } + +enum : uint { LVM_SETIMAGELIST = LVM_FIRST + 3 } +// #define ListView_SetImageList(hwnd, himl, iImageList) (HIMAGELIST)SNDMSG((hwnd), LVM_SETIMAGELIST, (WPARAM)(iImageList), (LPARAM)(HIMAGELIST)(himl)) + +enum : uint { LVM_GETITEMCOUNT = LVM_FIRST + 4 } +// #define ListView_GetItemCount(hwnd) (int)SNDMSG((hwnd), LVM_GETITEMCOUNT, 0, 0L) + +enum : uint { LVIF_TEXT = 0x0001 } +enum : uint { LVIF_IMAGE = 0x0002 } +enum : uint { LVIF_PARAM = 0x0004 } +enum : uint { LVIF_STATE = 0x0008 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVIF_INDENT = 0x0010 } +enum : uint { LVIF_NORECOMPUTE = 0x0800 } +// #endif +// #if (_WIN32_WINNT >= 0x501) +enum : uint { LVIF_GROUPID = 0x0100 } +enum : uint { LVIF_COLUMNS = 0x0200 } +// #endif + +enum : uint { LVIS_FOCUSED = 0x0001 } +enum : uint { LVIS_SELECTED = 0x0002 } +enum : uint { LVIS_CUT = 0x0004 } +enum : uint { LVIS_DROPHILITED = 0x0008 } +enum : uint { LVIS_GLOW = 0x0010 } +enum : uint { LVIS_ACTIVATING = 0x0020 } + +enum : uint { LVIS_OVERLAYMASK = 0x0F00 } +enum : uint { LVIS_STATEIMAGEMASK = 0xF000 } + +uint INDEXTOSTATEIMAGEMASK(uint i){ return i << 12; } + +// #if (_WIN32_IE >= 0x0300) +enum { I_INDENTCALLBACK = -1 } +alias LVITEMA LV_ITEMA; +alias LVITEMW LV_ITEMW; +// #else +// #... +// #... +// #... +// #... +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum { I_GROUPIDCALLBACK = -1 } +enum { I_GROUPIDNONE = -2 } +// #endif +alias LVITEM LV_ITEM; + +// #define LVITEMA_V1_SIZE CCSIZEOF_STRUCT(LVITEMA, lParam) +// #define LVITEMW_V1_SIZE CCSIZEOF_STRUCT(LVITEMW, lParam) + +struct tagLVITEMA { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +// #if (_WIN32_IE >= 0x0300) + int iIndent; +// #endif +// #if (_WIN32_WINNT >= 0x501) + int iGroupId; + UINT cColumns; + PUINT puColumns; +// #endif +} +alias tagLVITEMA LVITEMA; +alias tagLVITEMA* LPLVITEMA; + +struct tagLVITEMW { + UINT mask; + int iItem; + int iSubItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +// #if (_WIN32_IE >= 0x0300) + int iIndent; +// #endif +// #if (_WIN32_WINNT >= 0x501) + int iGroupId; + UINT cColumns; + PUINT puColumns; +// #endif +} +alias tagLVITEMW LVITEMW; +alias tagLVITEMW* LPLVITEMW; + +// #ifdef UNICODE +alias LVITEMW LVITEM; +alias LPLVITEMW LPLVITEM; +// #define LVITEM_V1_SIZE LVITEMW_V1_SIZE +// #else +// #... +// #... +// #... +// #endif + +const LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR)-1; +const LPSTR LPSTR_TEXTCALLBACKA = cast(LPSTR)-1; +// #ifdef UNICODE +alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK; +// #else +// #... +// #endif + +enum { I_IMAGECALLBACK = -1 } +// #if (_WIN32_IE >= 0x0501) +enum { I_IMAGENONE = -2 } +// #endif // 0x0501 + +// #if (_WIN32_WINNT >= 0x501) + +enum : uint { I_COLUMNSCALLBACK = cast(UINT)-1 } +// #endif + +enum : uint { LVM_GETITEMA = LVM_FIRST + 5 } +enum : uint { LVM_GETITEMW = LVM_FIRST + 75 } +// #ifdef UNICODE +alias LVM_GETITEMW LVM_GETITEM; +// #else +// #... +// #endif + +// #define ListView_GetItem(hwnd, pitem) (BOOL)SNDMSG((hwnd), LVM_GETITEM, 0, (LPARAM)(LV_ITEM *)(pitem)) + +enum : uint { LVM_SETITEMA = LVM_FIRST + 6 } +enum : uint { LVM_SETITEMW = LVM_FIRST + 76 } +// #ifdef UNICODE +alias LVM_SETITEMW LVM_SETITEM; +// #else +// #... +// #endif + +// #define ListView_SetItem(hwnd, pitem) (BOOL)SNDMSG((hwnd), LVM_SETITEM, 0, (LPARAM)(const LV_ITEM *)(pitem)) + +enum : uint { LVM_INSERTITEMA = LVM_FIRST + 7 } +enum : uint { LVM_INSERTITEMW = LVM_FIRST + 77 } +// #ifdef UNICODE +alias LVM_INSERTITEMW LVM_INSERTITEM; +// #else +// #... +// #endif +// #define ListView_InsertItem(hwnd, pitem) (int)SNDMSG((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM *)(pitem)) + +enum : uint { LVM_DELETEITEM = LVM_FIRST + 8 } +// #define ListView_DeleteItem(hwnd, i) (BOOL)SNDMSG((hwnd), LVM_DELETEITEM, (WPARAM)(int)(i), 0L) + +enum : uint { LVM_DELETEALLITEMS = LVM_FIRST + 9 } +// #define ListView_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd), LVM_DELETEALLITEMS, 0, 0L) + +enum : uint { LVM_GETCALLBACKMASK = LVM_FIRST + 10 } +// #define ListView_GetCallbackMask(hwnd) (BOOL)SNDMSG((hwnd), LVM_GETCALLBACKMASK, 0, 0) + +enum : uint { LVM_SETCALLBACKMASK = LVM_FIRST + 11 } +// #define ListView_SetCallbackMask(hwnd, mask) (BOOL)SNDMSG((hwnd), LVM_SETCALLBACKMASK, (WPARAM)(UINT)(mask), 0) + +enum : uint { LVNI_ALL = 0x0000 } +enum : uint { LVNI_FOCUSED = 0x0001 } +enum : uint { LVNI_SELECTED = 0x0002 } +enum : uint { LVNI_CUT = 0x0004 } +enum : uint { LVNI_DROPHILITED = 0x0008 } + +enum : uint { LVNI_ABOVE = 0x0100 } +enum : uint { LVNI_BELOW = 0x0200 } +enum : uint { LVNI_TOLEFT = 0x0400 } +enum : uint { LVNI_TORIGHT = 0x0800 } + +enum : uint { LVM_GETNEXTITEM = LVM_FIRST + 12 } +// #define ListView_GetNextItem(hwnd, i, flags) (int)SNDMSG((hwnd), LVM_GETNEXTITEM, (WPARAM)(int)(i), MAKELPARAM((flags), 0)) + +enum : uint { LVFI_PARAM = 0x0001 } +enum : uint { LVFI_STRING = 0x0002 } +enum : uint { LVFI_PARTIAL = 0x0008 } +enum : uint { LVFI_WRAP = 0x0020 } +enum : uint { LVFI_NEARESTXY = 0x0040 } + +// #if (_WIN32_IE >= 0x0300) +alias LVFINDINFOA LV_FINDINFOA; +alias LVFINDINFOW LV_FINDINFOW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias LVFINDINFO LV_FINDINFO; + +struct tagLVFINDINFOA { + UINT flags; + LPCSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} +alias tagLVFINDINFOA LVFINDINFOA; +alias tagLVFINDINFOA* LPFINDINFOA; + +struct tagLVFINDINFOW { + UINT flags; + LPCWSTR psz; + LPARAM lParam; + POINT pt; + UINT vkDirection; +} +alias tagLVFINDINFOW LVFINDINFOW; +alias tagLVFINDINFOW* LPFINDINFOW; + +// #ifdef UNICODE +alias LVFINDINFOW LVFINDINFO; +// #else +// #... +// #endif + +enum : uint { LVM_FINDITEMA = LVM_FIRST + 13 } +enum : uint { LVM_FINDITEMW = LVM_FIRST + 83 } +// #ifdef UNICODE +alias LVM_FINDITEMW LVM_FINDITEM; +// #else +// #... +// #endif + +// #define ListView_FindItem(hwnd, iStart, plvfi) (int)SNDMSG((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO *)(plvfi)) + +enum : uint { LVIR_BOUNDS = 0 } +enum : uint { LVIR_ICON = 1 } +enum : uint { LVIR_LABEL = 2 } +enum : uint { LVIR_SELECTBOUNDS = 3 } + +enum : uint { LVM_GETITEMRECT = LVM_FIRST + 14 } +// #define ListView_GetItemRect(hwnd, i, prc, code) (BOOL)SNDMSG((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), ((prc) ? (((RECT *)(prc))->left = (code),(LPARAM)(RECT *)(prc)) : (LPARAM)(RECT *)NULL)) + +enum : uint { LVM_SETITEMPOSITION = LVM_FIRST + 15 } +// #define ListView_SetItemPosition(hwndLV, i, x, y) (BOOL)SNDMSG((hwndLV), LVM_SETITEMPOSITION, (WPARAM)(int)(i), MAKELPARAM((x), (y))) + +enum : uint { LVM_GETITEMPOSITION = LVM_FIRST + 16 } +// #define ListView_GetItemPosition(hwndLV, i, ppt) (BOOL)SNDMSG((hwndLV), LVM_GETITEMPOSITION, (WPARAM)(int)(i), (LPARAM)(POINT *)(ppt)) + +enum : uint { LVM_GETSTRINGWIDTHA = LVM_FIRST + 17 } +enum : uint { LVM_GETSTRINGWIDTHW = LVM_FIRST + 87 } +// #ifdef UNICODE +alias LVM_GETSTRINGWIDTHW LVM_GETSTRINGWIDTH; +// #else +// #... +// #endif + +// #define ListView_GetStringWidth(hwndLV, psz) (int)SNDMSG((hwndLV), LVM_GETSTRINGWIDTH, 0, (LPARAM)(LPCTSTR)(psz)) + +enum : uint { LVHT_NOWHERE = 0x0001 } +enum : uint { LVHT_ONITEMICON = 0x0002 } +enum : uint { LVHT_ONITEMLABEL = 0x0004 } +enum : uint { LVHT_ONITEMSTATEICON = 0x0008 } +enum : uint { LVHT_ONITEM = LVHT_ONITEMICON | LVHT_ONITEMLABEL | LVHT_ONITEMSTATEICON } + +enum : uint { LVHT_ABOVE = 0x0008 } +enum : uint { LVHT_BELOW = 0x0010 } +enum : uint { LVHT_TORIGHT = 0x0020 } +enum : uint { LVHT_TOLEFT = 0x0040 } + +// #if (_WIN32_IE >= 0x0300) +alias LVHITTESTINFO LV_HITTESTINFO; +// #else +// #... +// #... +// #endif + +// #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO, iItem) + +struct tagLVHITTESTINFO { + POINT pt; + UINT flags; + int iItem; +// #if (_WIN32_IE >= 0x0300) + int iSubItem; +// #endif +} +alias tagLVHITTESTINFO LVHITTESTINFO; +alias tagLVHITTESTINFO* LPLVHITTESTINFO; + +enum : uint { LVM_HITTEST = LVM_FIRST + 18 } +// #define ListView_HitTest(hwndLV, pinfo) (int)SNDMSG((hwndLV), LVM_HITTEST, 0, (LPARAM)(LV_HITTESTINFO *)(pinfo)) + +enum : uint { LVM_ENSUREVISIBLE = LVM_FIRST + 19 } +// #define ListView_EnsureVisible(hwndLV, i, fPartialOK) (BOOL)SNDMSG((hwndLV), LVM_ENSUREVISIBLE, (WPARAM)(int)(i), MAKELPARAM((fPartialOK), 0)) + +enum : uint { LVM_SCROLL = LVM_FIRST + 20 } +// #define ListView_Scroll(hwndLV, dx, dy) (BOOL)SNDMSG((hwndLV), LVM_SCROLL, (WPARAM)(int)(dx), (LPARAM)(int)(dy)) + +enum : uint { LVM_REDRAWITEMS = LVM_FIRST + 21 } +// #define ListView_RedrawItems(hwndLV, iFirst, iLast) (BOOL)SNDMSG((hwndLV), LVM_REDRAWITEMS, (WPARAM)(int)(iFirst), (LPARAM)(int)(iLast)) + +enum : uint { LVA_DEFAULT = 0x0000 } +enum : uint { LVA_ALIGNLEFT = 0x0001 } +enum : uint { LVA_ALIGNTOP = 0x0002 } +enum : uint { LVA_SNAPTOGRID = 0x0005 } + +enum : uint { LVM_ARRANGE = LVM_FIRST + 22 } +// #define ListView_Arrange(hwndLV, code) (BOOL)SNDMSG((hwndLV), LVM_ARRANGE, (WPARAM)(UINT)(code), 0L) + +enum : uint { LVM_EDITLABELA = LVM_FIRST + 23 } +enum : uint { LVM_EDITLABELW = LVM_FIRST + 118 } +// #ifdef UNICODE +alias LVM_EDITLABELW LVM_EDITLABEL; +// #else +// #... +// #endif + +// #define ListView_EditLabel(hwndLV, i) (HWND)SNDMSG((hwndLV), LVM_EDITLABEL, (WPARAM)(int)(i), 0L) + +enum : uint { LVM_GETEDITCONTROL = LVM_FIRST + 24 } +// #define ListView_GetEditControl(hwndLV) (HWND)SNDMSG((hwndLV), LVM_GETEDITCONTROL, 0, 0L) + +// #if (_WIN32_IE >= 0x0300) +alias LVCOLUMNA LV_COLUMNA; +alias LVCOLUMNW LV_COLUMNW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias LVCOLUMN LV_COLUMN; + +// #define LVCOLUMNA_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem) +// #define LVCOLUMNW_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem) + +struct tagLVCOLUMNA { + UINT mask; + int fmt; + int cx; + LPSTR pszText; + int cchTextMax; + int iSubItem; +// #if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +// #endif +} +alias tagLVCOLUMNA LVCOLUMNA; +alias tagLVCOLUMNA* LPLVCOLUMNA; + +struct tagLVCOLUMNW { + UINT mask; + int fmt; + int cx; + LPWSTR pszText; + int cchTextMax; + int iSubItem; +// #if (_WIN32_IE >= 0x0300) + int iImage; + int iOrder; +// #endif +} +alias tagLVCOLUMNW LVCOLUMNW; +alias tagLVCOLUMNW* LPLVCOLUMNW; + +// #ifdef UNICODE +alias LVCOLUMNW LVCOLUMN; +alias LPLVCOLUMNW LPLVCOLUMN; +// #define LVCOLUMN_V1_SIZE LVCOLUMNW_V1_SIZE +// #else +// #... +// #... +// #... +// #endif + +enum : uint { LVCF_FMT = 0x0001 } +enum : uint { LVCF_WIDTH = 0x0002 } +enum : uint { LVCF_TEXT = 0x0004 } +enum : uint { LVCF_SUBITEM = 0x0008 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVCF_IMAGE = 0x0010 } +enum : uint { LVCF_ORDER = 0x0020 } +// #endif + +enum : uint { LVCFMT_LEFT = 0x0000 } +enum : uint { LVCFMT_RIGHT = 0x0001 } +enum : uint { LVCFMT_CENTER = 0x0002 } +enum : uint { LVCFMT_JUSTIFYMASK = 0x0003 } + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVCFMT_IMAGE = 0x0800 } +enum : uint { LVCFMT_BITMAP_ON_RIGHT = 0x1000 } +enum : uint { LVCFMT_COL_HAS_IMAGES = 0x8000 } +// #endif + +enum : uint { LVM_GETCOLUMNA = LVM_FIRST + 25 } +enum : uint { LVM_GETCOLUMNW = LVM_FIRST + 95 } +// #ifdef UNICODE +alias LVM_GETCOLUMNW LVM_GETCOLUMN; +// #else +// #... +// #endif + +// #define ListView_GetColumn(hwnd, iCol, pcol) (BOOL)SNDMSG((hwnd), LVM_GETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(LV_COLUMN *)(pcol)) + +enum : uint { LVM_SETCOLUMNA = LVM_FIRST + 26 } +enum : uint { LVM_SETCOLUMNW = LVM_FIRST + 96 } +// #ifdef UNICODE +alias LVM_SETCOLUMNW LVM_SETCOLUMN; +// #else +// #... +// #endif + +// #define ListView_SetColumn(hwnd, iCol, pcol) (BOOL)SNDMSG((hwnd), LVM_SETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol)) + +enum : uint { LVM_INSERTCOLUMNA = LVM_FIRST + 27 } +enum : uint { LVM_INSERTCOLUMNW = LVM_FIRST + 97 } +// #ifdef UNICODE +alias LVM_INSERTCOLUMNW LVM_INSERTCOLUMN; +// #else +// #... +// #endif + +// #define ListView_InsertColumn(hwnd, iCol, pcol) (int)SNDMSG((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol)) + +enum : uint { LVM_DELETECOLUMN = LVM_FIRST + 28 } +// #define ListView_DeleteColumn(hwnd, iCol) (BOOL)SNDMSG((hwnd), LVM_DELETECOLUMN, (WPARAM)(int)(iCol), 0) + +enum : uint { LVM_GETCOLUMNWIDTH = LVM_FIRST + 29 } +// #define ListView_GetColumnWidth(hwnd, iCol) (int)SNDMSG((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0) + +enum { LVSCW_AUTOSIZE = -1 } +enum { LVSCW_AUTOSIZE_USEHEADER = -2 } +enum : uint { LVM_SETCOLUMNWIDTH = LVM_FIRST + 30 } + +// #define ListView_SetColumnWidth(hwnd, iCol, cx) (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0)) + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVM_GETHEADER = LVM_FIRST + 31 } +// #define ListView_GetHeader(hwnd) (HWND)SNDMSG((hwnd), LVM_GETHEADER, 0, 0L) +// #endif + +enum : uint { LVM_CREATEDRAGIMAGE = LVM_FIRST + 33 } +// #define ListView_CreateDragImage(hwnd, i, lpptUpLeft) (HIMAGELIST)SNDMSG((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft)) + +enum : uint { LVM_GETVIEWRECT = LVM_FIRST + 34 } +// #define ListView_GetViewRect(hwnd, prc) (BOOL)SNDMSG((hwnd), LVM_GETVIEWRECT, 0, (LPARAM)(RECT *)(prc)) + +enum : uint { LVM_GETTEXTCOLOR = LVM_FIRST + 35 } +// #define ListView_GetTextColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETTEXTCOLOR, 0, 0L) + +enum : uint { LVM_SETTEXTCOLOR = LVM_FIRST + 36 } +// #define ListView_SetTextColor(hwnd, clrText) (BOOL)SNDMSG((hwnd), LVM_SETTEXTCOLOR, 0, (LPARAM)(COLORREF)(clrText)) + +enum : uint { LVM_GETTEXTBKCOLOR = LVM_FIRST + 37 } +// #define ListView_GetTextBkColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETTEXTBKCOLOR, 0, 0L) + +enum : uint { LVM_SETTEXTBKCOLOR = LVM_FIRST + 38 } +// #define ListView_SetTextBkColor(hwnd, clrTextBk) (BOOL)SNDMSG((hwnd), LVM_SETTEXTBKCOLOR, 0, (LPARAM)(COLORREF)(clrTextBk)) + +enum : uint { LVM_GETTOPINDEX = LVM_FIRST + 39 } +// #define ListView_GetTopIndex(hwndLV) (int)SNDMSG((hwndLV), LVM_GETTOPINDEX, 0, 0) + +enum : uint { LVM_GETCOUNTPERPAGE = LVM_FIRST + 40 } +// #define ListView_GetCountPerPage(hwndLV) (int)SNDMSG((hwndLV), LVM_GETCOUNTPERPAGE, 0, 0) + +enum : uint { LVM_GETORIGIN = LVM_FIRST + 41 } +// #define ListView_GetOrigin(hwndLV, ppt) (BOOL)SNDMSG((hwndLV), LVM_GETORIGIN, (WPARAM)0, (LPARAM)(POINT *)(ppt)) + +enum : uint { LVM_UPDATE = LVM_FIRST + 42 } +// #define ListView_Update(hwndLV, i) (BOOL)SNDMSG((hwndLV), LVM_UPDATE, (WPARAM)(i), 0L) + +enum : uint { LVM_SETITEMSTATE = LVM_FIRST + 43 } +// #define ListView_SetItemState(hwndLV, i, data, mask) { LV_ITEM _ms_lvi; _ms_lvi.stateMask = mask; _ms_lvi.state = data; SNDMSG((hwndLV), LVM_SETITEMSTATE, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi); } + +// #if (_WIN32_IE >= 0x0300) +// #define ListView_SetCheckState(hwndLV, i, fCheck) ListView_SetItemState(hwndLV, i, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), LVIS_STATEIMAGEMASK) +// #endif + +enum : uint { LVM_GETITEMSTATE = LVM_FIRST + 44 } +// #define ListView_GetItemState(hwndLV, i, mask) (UINT)SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)(i), (LPARAM)(mask)) + +// #if (_WIN32_IE >= 0x0300) +// #define ListView_GetCheckState(hwndLV, i) ((((UINT)(SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)(i), LVIS_STATEIMAGEMASK))) >> 12) -1) +// #endif + +enum : uint { LVM_GETITEMTEXTA = LVM_FIRST + 45 } +enum : uint { LVM_GETITEMTEXTW = LVM_FIRST + 115 } + +// #ifdef UNICODE +alias LVM_GETITEMTEXTW LVM_GETITEMTEXT; +// #else +// #... +// #endif + +// #define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_) { LV_ITEM _ms_lvi; _ms_lvi.iSubItem = iSubItem_; _ms_lvi.cchTextMax = cchTextMax_; _ms_lvi.pszText = pszText_; SNDMSG((hwndLV), LVM_GETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi); } + +enum : uint { LVM_SETITEMTEXTA = LVM_FIRST + 46 } +enum : uint { LVM_SETITEMTEXTW = LVM_FIRST + 116 } + +// #ifdef UNICODE +alias LVM_SETITEMTEXTW LVM_SETITEMTEXT; +// #else +// #... +// #endif + +// #define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) { LV_ITEM _ms_lvi; _ms_lvi.iSubItem = iSubItem_; _ms_lvi.pszText = pszText_; SNDMSG((hwndLV), LVM_SETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi); } + +// #if (_WIN32_IE >= 0x0300) + +enum : uint { LVSICF_NOINVALIDATEALL = 0x00000001 } +enum : uint { LVSICF_NOSCROLL = 0x00000002 } +// #endif + +enum : uint { LVM_SETITEMCOUNT = LVM_FIRST + 47 } +// #define ListView_SetItemCount(hwndLV, cItems) SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)(cItems), 0) + +// #if (_WIN32_IE >= 0x0300) +// #define ListView_SetItemCountEx(hwndLV, cItems, dwFlags) SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)(cItems), (LPARAM)(dwFlags)) +// #endif + +extern(Windows) alias int function(LPARAM, LPARAM, LPARAM) PFNLVCOMPARE; + +enum : uint { LVM_SORTITEMS = LVM_FIRST + 48 } +// #define ListView_SortItems(hwndLV, _pfnCompare, _lPrm) (BOOL)SNDMSG((hwndLV), LVM_SORTITEMS, (WPARAM)(LPARAM)(_lPrm), (LPARAM)(PFNLVCOMPARE)(_pfnCompare)) + +enum : uint { LVM_SETITEMPOSITION32 = LVM_FIRST + 49 } +// #define ListView_SetItemPosition32(hwndLV, i, x0, y0) { POINT ptNewPos; ptNewPos.x = x0; ptNewPos.y = y0; SNDMSG((hwndLV), LVM_SETITEMPOSITION32, (WPARAM)(int)(i), (LPARAM)&ptNewPos); } + +enum : uint { LVM_GETSELECTEDCOUNT = LVM_FIRST + 50 } +// #define ListView_GetSelectedCount(hwndLV) (UINT)SNDMSG((hwndLV), LVM_GETSELECTEDCOUNT, 0, 0L) + +enum : uint { LVM_GETITEMSPACING = LVM_FIRST + 51 } +// #define ListView_GetItemSpacing(hwndLV, fSmall) (DWORD)SNDMSG((hwndLV), LVM_GETITEMSPACING, fSmall, 0L) + +enum : uint { LVM_GETISEARCHSTRINGA = LVM_FIRST + 52 } +enum : uint { LVM_GETISEARCHSTRINGW = LVM_FIRST + 117 } + +// #ifdef UNICODE +alias LVM_GETISEARCHSTRINGW LVM_GETISEARCHSTRING; +// #else +// #... +// #endif + +// #define ListView_GetISearchString(hwndLV, lpsz) (BOOL)SNDMSG((hwndLV), LVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)(lpsz)) + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVM_SETICONSPACING = LVM_FIRST + 53 } + +// #define ListView_SetIconSpacing(hwndLV, cx, cy) (DWORD)SNDMSG((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy)) + +enum : uint { LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54 } +// #define ListView_SetExtendedListViewStyle(hwndLV, dw) (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw) +// #if (_WIN32_IE >= 0x0400) +// #define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw) (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, dwMask, dw) +// #endif + +enum : uint { LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55 } +// #define ListView_GetExtendedListViewStyle(hwndLV) (DWORD)SNDMSG((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0) + +enum : uint { LVS_EX_GRIDLINES = 0x00000001 } +enum : uint { LVS_EX_SUBITEMIMAGES = 0x00000002 } +enum : uint { LVS_EX_CHECKBOXES = 0x00000004 } +enum : uint { LVS_EX_TRACKSELECT = 0x00000008 } +enum : uint { LVS_EX_HEADERDRAGDROP = 0x00000010 } +enum : uint { LVS_EX_FULLROWSELECT = 0x00000020 } +enum : uint { LVS_EX_ONECLICKACTIVATE = 0x00000040 } +enum : uint { LVS_EX_TWOCLICKACTIVATE = 0x00000080 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { LVS_EX_FLATSB = 0x00000100 } +enum : uint { LVS_EX_REGIONAL = 0x00000200 } +enum : uint { LVS_EX_INFOTIP = 0x00000400 } +enum : uint { LVS_EX_UNDERLINEHOT = 0x00000800 } +enum : uint { LVS_EX_UNDERLINECOLD = 0x00001000 } +enum : uint { LVS_EX_MULTIWORKAREAS = 0x00002000 } +// #endif +// #if (_WIN32_IE >= 0x0500) +enum : uint { LVS_EX_LABELTIP = 0x00004000 } +enum : uint { LVS_EX_BORDERSELECT = 0x00008000 } +// #endif // End (_WIN32_IE >= 0x0500) +// #if (_WIN32_WINNT >= 0x501) +enum : uint { LVS_EX_DOUBLEBUFFER = 0x00010000 } +enum : uint { LVS_EX_HIDELABELS = 0x00020000 } +enum : uint { LVS_EX_SINGLEROW = 0x00040000 } +enum : uint { LVS_EX_SNAPTOGRID = 0x00080000 } +enum : uint { LVS_EX_SIMPLESELECT = 0x00100000 } +// #endif + +enum : uint { LVM_GETSUBITEMRECT = LVM_FIRST + 56 } +// #define ListView_GetSubItemRect(hwnd, iItem, iSubItem, code, prc) (BOOL)SNDMSG((hwnd), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem), ((prc) ? ((((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code), (LPARAM)(prc)) : (LPARAM)(LPRECT)NULL)) + +enum : uint { LVM_SUBITEMHITTEST = LVM_FIRST + 57 } +// #define ListView_SubItemHitTest(hwnd, plvhti) (int)SNDMSG((hwnd), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti)) + +enum : uint { LVM_SETCOLUMNORDERARRAY = LVM_FIRST + 58 } +// #define ListView_SetColumnOrderArray(hwnd, iCount, pi) (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNORDERARRAY, (WPARAM)(iCount), (LPARAM)(LPINT)(pi)) + +enum : uint { LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59 } +// #define ListView_GetColumnOrderArray(hwnd, iCount, pi) (BOOL)SNDMSG((hwnd), LVM_GETCOLUMNORDERARRAY, (WPARAM)(iCount), (LPARAM)(LPINT)(pi)) + +enum : uint { LVM_SETHOTITEM = LVM_FIRST + 60 } +// #define ListView_SetHotItem(hwnd, i) (int)SNDMSG((hwnd), LVM_SETHOTITEM, (WPARAM)(i), 0) + +enum : uint { LVM_GETHOTITEM = LVM_FIRST + 61 } +// #define ListView_GetHotItem(hwnd) (int)SNDMSG((hwnd), LVM_GETHOTITEM, 0, 0) + +enum : uint { LVM_SETHOTCURSOR = LVM_FIRST + 62 } +// #define ListView_SetHotCursor(hwnd, hcur) (HCURSOR)SNDMSG((hwnd), LVM_SETHOTCURSOR, 0, (LPARAM)(hcur)) + +enum : uint { LVM_GETHOTCURSOR = LVM_FIRST + 63 } +// #define ListView_GetHotCursor(hwnd) (HCURSOR)SNDMSG((hwnd), LVM_GETHOTCURSOR, 0, 0) + +enum : uint { LVM_APPROXIMATEVIEWRECT = LVM_FIRST + 64 } +// #define ListView_ApproximateViewRect(hwnd, iWidth, iHeight, iCount) (DWORD)SNDMSG((hwnd), LVM_APPROXIMATEVIEWRECT, iCount, MAKELPARAM(iWidth, iHeight)) +// #endif // _WIN32_IE >= 0x0300 + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { LV_MAX_WORKAREAS = 16 } +enum : uint { LVM_SETWORKAREAS = LVM_FIRST + 65 } +// #define ListView_SetWorkAreas(hwnd, nWorkAreas, prc) (BOOL)SNDMSG((hwnd), LVM_SETWORKAREAS, (WPARAM)(int)(nWorkAreas), (LPARAM)(RECT *)(prc)) + +enum : uint { LVM_GETWORKAREAS = LVM_FIRST + 70 } +// #define ListView_GetWorkAreas(hwnd, nWorkAreas, prc) (BOOL)SNDMSG((hwnd), LVM_GETWORKAREAS, (WPARAM)(int)(nWorkAreas), (LPARAM)(RECT *)(prc)) + +enum : uint { LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73 } +// #define ListView_GetNumberOfWorkAreas(hwnd, pnWorkAreas) (BOOL)SNDMSG((hwnd), LVM_GETNUMBEROFWORKAREAS, 0, (LPARAM)(UINT *)(pnWorkAreas)) + +enum : uint { LVM_GETSELECTIONMARK = LVM_FIRST + 66 } +// #define ListView_GetSelectionMark(hwnd) (int)SNDMSG((hwnd), LVM_GETSELECTIONMARK, 0, 0) + +enum : uint { LVM_SETSELECTIONMARK = LVM_FIRST + 67 } +// #define ListView_SetSelectionMark(hwnd, i) (int)SNDMSG((hwnd), LVM_SETSELECTIONMARK, 0, (LPARAM)(i)) + +enum : uint { LVM_SETHOVERTIME = LVM_FIRST + 71 } +// #define ListView_SetHoverTime(hwndLV, dwHoverTimeMs) (DWORD)SNDMSG((hwndLV), LVM_SETHOVERTIME, 0, (LPARAM)(dwHoverTimeMs)) + +enum : uint { LVM_GETHOVERTIME = LVM_FIRST + 72 } +// #define ListView_GetHoverTime(hwndLV) (DWORD)SNDMSG((hwndLV), LVM_GETHOVERTIME, 0, 0) + +enum : uint { LVM_SETTOOLTIPS = LVM_FIRST + 74 } +// #define ListView_SetToolTips(hwndLV, hwndNewHwnd) (HWND)SNDMSG((hwndLV), LVM_SETTOOLTIPS, (WPARAM)(hwndNewHwnd), 0) + +enum : uint { LVM_GETTOOLTIPS = LVM_FIRST + 78 } +// #define ListView_GetToolTips(hwndLV) (HWND)SNDMSG((hwndLV), LVM_GETTOOLTIPS, 0, 0) + +enum : uint { LVM_SORTITEMSEX = LVM_FIRST + 81 } +// #define ListView_SortItemsEx(hwndLV, _pfnCompare, _lPrm) (BOOL)SNDMSG((hwndLV), LVM_SORTITEMSEX, (WPARAM)(LPARAM)(_lPrm), (LPARAM)(PFNLVCOMPARE)(_pfnCompare)) + +struct tagLVBKIMAGEA { + ULONG ulFlags; + HBITMAP hbm; + LPSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; +} +alias tagLVBKIMAGEA LVBKIMAGEA; +alias tagLVBKIMAGEA* LPLVBKIMAGEA; + +struct tagLVBKIMAGEW { + ULONG ulFlags; + HBITMAP hbm; + LPWSTR pszImage; + UINT cchImageMax; + int xOffsetPercent; + int yOffsetPercent; +} +alias tagLVBKIMAGEW LVBKIMAGEW; +alias tagLVBKIMAGEW* LPLVBKIMAGEW; + +enum : uint { LVBKIF_SOURCE_NONE = 0x00000000 } +enum : uint { LVBKIF_SOURCE_HBITMAP = 0x00000001 } +enum : uint { LVBKIF_SOURCE_URL = 0x00000002 } +enum : uint { LVBKIF_SOURCE_MASK = 0x00000003 } +enum : uint { LVBKIF_STYLE_NORMAL = 0x00000000 } +enum : uint { LVBKIF_STYLE_TILE = 0x00000010 } +enum : uint { LVBKIF_STYLE_MASK = 0x00000010 } +// #if (_WIN32_WINNT >= 0x501) +enum : uint { LVBKIF_FLAG_TILEOFFSET = 0x00000100 } +enum : uint { LVBKIF_TYPE_WATERMARK = 0x10000000 } +// #endif + +enum : uint { LVM_SETBKIMAGEA = LVM_FIRST + 68 } +enum : uint { LVM_SETBKIMAGEW = LVM_FIRST + 138 } +enum : uint { LVM_GETBKIMAGEA = LVM_FIRST + 69 } +enum : uint { LVM_GETBKIMAGEW = LVM_FIRST + 139 } + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140 } +// #define ListView_SetSelectedColumn(hwnd, iCol) SNDMSG((hwnd), LVM_SETSELECTEDCOLUMN, (WPARAM)iCol, 0) + +enum : uint { LVM_SETTILEWIDTH = LVM_FIRST + 141 } +// #define ListView_SetTileWidth(hwnd, cpWidth) SNDMSG((hwnd), LVM_SETTILEWIDTH, (WPARAM)cpWidth, 0) + +enum : uint { LV_VIEW_ICON = 0x0000 } +enum : uint { LV_VIEW_DETAILS = 0x0001 } +enum : uint { LV_VIEW_SMALLICON = 0x0002 } +enum : uint { LV_VIEW_LIST = 0x0003 } +enum : uint { LV_VIEW_TILE = 0x0004 } +enum : uint { LV_VIEW_MAX = 0x0004 } + +enum : uint { LVM_SETVIEW = LVM_FIRST + 142 } +// #define ListView_SetView(hwnd, iView) (DWORD)SNDMSG((hwnd), LVM_SETVIEW, (WPARAM)(DWORD)iView, 0) + +enum : uint { LVM_GETVIEW = LVM_FIRST + 143 } +// #define ListView_GetView(hwnd) (DWORD)SNDMSG((hwnd), LVM_GETVIEW, 0, 0) + +enum : uint { LVGF_NONE = 0x00000000 } +enum : uint { LVGF_HEADER = 0x00000001 } +enum : uint { LVGF_FOOTER = 0x00000002 } +enum : uint { LVGF_STATE = 0x00000004 } +enum : uint { LVGF_ALIGN = 0x00000008 } +enum : uint { LVGF_GROUPID = 0x00000010 } + +enum : uint { LVGS_NORMAL = 0x00000000 } +enum : uint { LVGS_COLLAPSED = 0x00000001 } +enum : uint { LVGS_HIDDEN = 0x00000002 } + +enum : uint { LVGA_HEADER_LEFT = 0x00000001 } +enum : uint { LVGA_HEADER_CENTER = 0x00000002 } +enum : uint { LVGA_HEADER_RIGHT = 0x00000004 } +enum : uint { LVGA_FOOTER_LEFT = 0x00000008 } +enum : uint { LVGA_FOOTER_CENTER = 0x00000010 } +enum : uint { LVGA_FOOTER_RIGHT = 0x00000020 } + +struct tagLVGROUP { + UINT cbSize; + UINT mask; + LPWSTR pszHeader; + int cchHeader; + LPWSTR pszFooter; + int cchFooter; + int iGroupId; + UINT stateMask; + UINT state; + UINT uAlign; +} +alias tagLVGROUP LVGROUP; +alias tagLVGROUP* PLVGROUP; + +enum : uint { LVM_INSERTGROUP = LVM_FIRST + 145 } +// #define ListView_InsertGroup(hwnd, index, pgrp) SNDMSG((hwnd), LVM_INSERTGROUP, (WPARAM)index, (LPARAM)pgrp) + +enum : uint { LVM_SETGROUPINFO = LVM_FIRST + 147 } +// #define ListView_SetGroupInfo(hwnd, iGroupId, pgrp) SNDMSG((hwnd), LVM_SETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp) + +enum : uint { LVM_GETGROUPINFO = LVM_FIRST + 149 } +// #define ListView_GetGroupInfo(hwnd, iGroupId, pgrp) SNDMSG((hwnd), LVM_GETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp) + +enum : uint { LVM_REMOVEGROUP = LVM_FIRST + 150 } +// #define ListView_RemoveGroup(hwnd, iGroupId) SNDMSG((hwnd), LVM_REMOVEGROUP, (WPARAM)iGroupId, 0) + +enum : uint { LVM_MOVEGROUP = LVM_FIRST + 151 } +// #define ListView_MoveGroup(hwnd, iGroupId, toIndex) SNDMSG((hwnd), LVM_MOVEGROUP, (WPARAM)iGroupId, (LPARAM)toIndex) + +enum : uint { LVM_MOVEITEMTOGROUP = LVM_FIRST + 154 } +// #define ListView_MoveItemToGroup(hwnd, idItemFrom, idGroupTo) SNDMSG((hwnd), LVM_MOVEITEMTOGROUP, (WPARAM)idItemFrom, (LPARAM)idGroupTo) + +enum : uint { LVGMF_NONE = 0x00000000 } +enum : uint { LVGMF_BORDERSIZE = 0x00000001 } +enum : uint { LVGMF_BORDERCOLOR = 0x00000002 } +enum : uint { LVGMF_TEXTCOLOR = 0x00000004 } + +struct tagLVGROUPMETRICS { + UINT cbSize; + UINT mask; + UINT Left; + UINT Top; + UINT Right; + UINT Bottom; + COLORREF crLeft; + COLORREF crTop; + COLORREF crRight; + COLORREF crBottom; + COLORREF crHeader; + COLORREF crFooter; +} +alias tagLVGROUPMETRICS LVGROUPMETRICS; +alias tagLVGROUPMETRICS* PLVGROUPMETRICS; + +enum : uint { LVM_SETGROUPMETRICS = LVM_FIRST + 155 } +// #define ListView_SetGroupMetrics(hwnd, pGroupMetrics) SNDMSG((hwnd), LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics) + +enum : uint { LVM_GETGROUPMETRICS = LVM_FIRST + 156 } +// #define ListView_GetGroupMetrics(hwnd, pGroupMetrics) SNDMSG((hwnd), LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics) + +enum : uint { LVM_ENABLEGROUPVIEW = LVM_FIRST + 157 } +// #define ListView_EnableGroupView(hwnd, fEnable) SNDMSG((hwnd), LVM_ENABLEGROUPVIEW, (WPARAM)fEnable, 0) + +extern(Windows) alias int function(int, int, void *) PFNLVGROUPCOMPARE; + +enum : uint { LVM_SORTGROUPS = LVM_FIRST + 158 } +// #define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv) SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)_pfnGroupCompate, (LPARAM)_plv) + +struct tagLVINSERTGROUPSORTED { + PFNLVGROUPCOMPARE pfnGroupCompare; + void *pvData; + LVGROUP lvGroup; +} +alias tagLVINSERTGROUPSORTED LVINSERTGROUPSORTED; +alias tagLVINSERTGROUPSORTED* PLVINSERTGROUPSORTED; + +enum : uint { LVM_INSERTGROUPSORTED = LVM_FIRST + 159 } +// #define ListView_InsertGroupSorted(hwnd, structInsert) SNDMSG((hwnd), LVM_INSERTGROUPSORTED, (WPARAM)structInsert, 0) + +enum : uint { LVM_REMOVEALLGROUPS = LVM_FIRST + 160 } +// #define ListView_RemoveAllGroups(hwnd) SNDMSG((hwnd), LVM_REMOVEALLGROUPS, 0, 0) + +enum : uint { LVM_HASGROUP = LVM_FIRST + 161 } +// #define ListView_HasGroup(hwnd, dwGroupId) SNDMSG((hwnd), LVM_HASGROUP, dwGroupId, 0) + +enum : uint { LVTVIF_AUTOSIZE = 0x00000000 } +enum : uint { LVTVIF_FIXEDWIDTH = 0x00000001 } +enum : uint { LVTVIF_FIXEDHEIGHT = 0x00000002 } +enum : uint { LVTVIF_FIXEDSIZE = 0x00000003 } + +enum : uint { LVTVIM_TILESIZE = 0x00000001 } +enum : uint { LVTVIM_COLUMNS = 0x00000002 } +enum : uint { LVTVIM_LABELMARGIN = 0x00000004 } + +struct tagLVTILEVIEWINFO { + UINT cbSize; + DWORD dwMask; + DWORD dwFlags; + SIZE sizeTile; + int cLines; + RECT rcLabelMargin; +} +alias tagLVTILEVIEWINFO LVTILEVIEWINFO; +alias tagLVTILEVIEWINFO* PLVTILEVIEWINFO; + +struct tagLVTILEINFO { + UINT cbSize; + int iItem; + UINT cColumns; + PUINT puColumns; +} +alias tagLVTILEINFO LVTILEINFO; +alias tagLVTILEINFO* PLVTILEINFO; + +enum : uint { LVM_SETTILEVIEWINFO = LVM_FIRST + 162 } +// #define ListView_SetTileViewInfo(hwnd, ptvi) SNDMSG((hwnd), LVM_SETTILEVIEWINFO, 0, (LPARAM)ptvi) + +enum : uint { LVM_GETTILEVIEWINFO = LVM_FIRST + 163 } +// #define ListView_GetTileViewInfo(hwnd, ptvi) SNDMSG((hwnd), LVM_GETTILEVIEWINFO, 0, (LPARAM)ptvi) + +enum : uint { LVM_SETTILEINFO = LVM_FIRST + 164 } +// #define ListView_SetTileInfo(hwnd, pti) SNDMSG((hwnd), LVM_SETTILEINFO, 0, (LPARAM)pti) + +enum : uint { LVM_GETTILEINFO = LVM_FIRST + 165 } +// #define ListView_GetTileInfo(hwnd, pti) SNDMSG((hwnd), LVM_GETTILEINFO, 0, (LPARAM)pti) + +struct _8 { + UINT cbSize; + DWORD dwFlags; + int iItem; + DWORD dwReserved; +} +alias _8 LVINSERTMARK; +alias _8* LPLVINSERTMARK; + +enum : uint { LVIM_AFTER = 0x00000001 } + +enum : uint { LVM_SETINSERTMARK = LVM_FIRST + 166 } +// #define ListView_SetInsertMark(hwnd, lvim) (BOOL)SNDMSG((hwnd), LVM_SETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim)) + +enum : uint { LVM_GETINSERTMARK = LVM_FIRST + 167 } +// #define ListView_GetInsertMark(hwnd, lvim) (BOOL)SNDMSG((hwnd), LVM_GETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim)) + +enum : uint { LVM_INSERTMARKHITTEST = LVM_FIRST + 168 } +// #define ListView_InsertMarkHitTest(hwnd, point, lvim) (int)SNDMSG((hwnd), LVM_INSERTMARKHITTEST, (WPARAM)(LPPOINT)(point), (LPARAM)(LPLVINSERTMARK)(lvim)) + +enum : uint { LVM_GETINSERTMARKRECT = LVM_FIRST + 169 } +// #define ListView_GetInsertMarkRect(hwnd, rc) (int)SNDMSG((hwnd), LVM_GETINSERTMARKRECT, (WPARAM)0, (LPARAM)(LPRECT)(rc)) + +enum : uint { LVM_SETINSERTMARKCOLOR = LVM_FIRST + 170 } +// #define ListView_SetInsertMarkColor(hwnd, color) (COLORREF)SNDMSG((hwnd), LVM_SETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color)) + +enum : uint { LVM_GETINSERTMARKCOLOR = LVM_FIRST + 171 } +// #define ListView_GetInsertMarkColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)0) + +struct tagLVSETINFOTIP { + UINT cbSize; + DWORD dwFlags; + LPWSTR pszText; + int iItem; + int iSubItem; +} +alias tagLVSETINFOTIP LVSETINFOTIP; +alias tagLVSETINFOTIP* PLVSETINFOTIP; + +enum : uint { LVM_SETINFOTIP = LVM_FIRST + 173 } + +// #define ListView_SetInfoTip(hwndLV, plvInfoTip) (BOOL)SNDMSG((hwndLV), LVM_SETINFOTIP, (WPARAM)0, (LPARAM)plvInfoTip) + +enum : uint { LVM_GETSELECTEDCOLUMN = LVM_FIRST + 174 } +// #define ListView_GetSelectedColumn(hwnd) (UINT)SNDMSG((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0) + +enum : uint { LVM_ISGROUPVIEWENABLED = LVM_FIRST + 175 } +// #define ListView_IsGroupViewEnabled(hwnd) (BOOL)SNDMSG((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0) + +enum : uint { LVM_GETOUTLINECOLOR = LVM_FIRST + 176 } +// #define ListView_GetOutlineColor(hwnd) (COLORREF)SNDMSG((hwnd), LVM_GETOUTLINECOLOR, 0, 0) + +enum : uint { LVM_SETOUTLINECOLOR = LVM_FIRST + 177 } +// #define ListView_SetOutlineColor(hwnd, color) (COLORREF)SNDMSG((hwnd), LVM_SETOUTLINECOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color)) + +enum : uint { LVM_CANCELEDITLABEL = LVM_FIRST + 179 } +// #define ListView_CancelEditLabel(hwnd) (VOID)SNDMSG((hwnd), LVM_CANCELEDITLABEL, (WPARAM)0, (LPARAM)0) + +enum : uint { LVM_MAPINDEXTOID = LVM_FIRST + 180 } +// #define ListView_MapIndexToID(hwnd, index) (UINT)SNDMSG((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, (LPARAM)0) + +enum : uint { LVM_MAPIDTOINDEX = LVM_FIRST + 181 } +// #define ListView_MapIDToIndex(hwnd, id) (UINT)SNDMSG((hwnd), LVM_MAPIDTOINDEX, (WPARAM)id, (LPARAM)0) + +// #endif + +// #ifdef UNICODE +alias LVBKIMAGEW LVBKIMAGE; +alias LPLVBKIMAGEW LPLVBKIMAGE; +alias LVM_SETBKIMAGEW LVM_SETBKIMAGE; +alias LVM_GETBKIMAGEW LVM_GETBKIMAGE; +// #else +// #... +// #... +// #... +// #... +// #endif + +// #define ListView_SetBkImage(hwnd, plvbki) (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)(plvbki)) + +// #define ListView_GetBkImage(hwnd, plvbki) (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki)) + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_IE >= 0x0300) +alias LPNMLISTVIEW LPNM_LISTVIEW; +alias NMLISTVIEW NM_LISTVIEW; +// #else +// #... +// #... +// #... +// #endif + +struct tagNMLISTVIEW { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; +} +alias tagNMLISTVIEW NMLISTVIEW; +alias tagNMLISTVIEW* LPNMLISTVIEW; + +// #if (_WIN32_IE >= 0x400) + +struct tagNMITEMACTIVATE { + NMHDR hdr; + int iItem; + int iSubItem; + UINT uNewState; + UINT uOldState; + UINT uChanged; + POINT ptAction; + LPARAM lParam; + UINT uKeyFlags; +} +alias tagNMITEMACTIVATE NMITEMACTIVATE; +alias tagNMITEMACTIVATE* LPNMITEMACTIVATE; + +enum : uint { LVKF_ALT = 0x0001 } +enum : uint { LVKF_CONTROL = 0x0002 } +enum : uint { LVKF_SHIFT = 0x0004 } +// #endif //(_WIN32_IE >= 0x0400) + +// #if (_WIN32_IE >= 0x0300) +// #define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLVCUSTOMDRW, clrTextBk) + +struct tagNMLVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; +// #if (_WIN32_IE >= 0x0400) + int iSubItem; +// #endif +// #if (_WIN32_WINNT >= 0x501) + DWORD dwItemType; + COLORREF clrFace; + int iIconEffect; + int iIconPhase; + int iPartId; + int iStateId; + RECT rcText; + UINT uAlign; +// #endif +} +alias tagNMLVCUSTOMDRAW NMLVCUSTOMDRAW; +alias tagNMLVCUSTOMDRAW* LPNMLVCUSTOMDRAW; + +enum : uint { LVCDI_ITEM = 0x00000000 } +enum : uint { LVCDI_GROUP = 0x00000001 } + +enum : uint { LVCDRF_NOSELECT = 0x00010000 } +enum : uint { LVCDRF_NOGROUPFRAME = 0x00020000 } + +struct tagNMLVCACHEHINT { + NMHDR hdr; + int iFrom; + int iTo; +} +alias tagNMLVCACHEHINT NMLVCACHEHINT; +alias tagNMLVCACHEHINT* LPNMLVCACHEHINT; + +alias LPNMLVCACHEHINT LPNM_CACHEHINT; +alias LPNMLVCACHEHINT PNM_CACHEHINT; +alias NMLVCACHEHINT NM_CACHEHINT; + +struct tagNMLVFINDITEMA { + NMHDR hdr; + int iStart; + LVFINDINFOA lvfi; +} +alias tagNMLVFINDITEMA NMLVFINDITEMA; +alias tagNMLVFINDITEMA* LPNMLVFINDITEMA; + +struct tagNMLVFINDITEMW { + NMHDR hdr; + int iStart; + LVFINDINFOW lvfi; +} +alias tagNMLVFINDITEMW NMLVFINDITEMW; +alias tagNMLVFINDITEMW* LPNMLVFINDITEMW; + +alias LPNMLVFINDITEMA PNM_FINDITEMA; +alias LPNMLVFINDITEMA LPNM_FINDITEMA; +alias NMLVFINDITEMA NM_FINDITEMA; + +alias LPNMLVFINDITEMW PNM_FINDITEMW; +alias LPNMLVFINDITEMW LPNM_FINDITEMW; +alias NMLVFINDITEMW NM_FINDITEMW; + +// #ifdef UNICODE +alias PNM_FINDITEMW PNM_FINDITEM; +alias LPNM_FINDITEMW LPNM_FINDITEM; +alias NM_FINDITEMW NM_FINDITEM; +alias NMLVFINDITEMW NMLVFINDITEM; +alias LPNMLVFINDITEMW LPNMLVFINDITEM; +// #else +// #... +// #... +// #... +// #... +// #... +// #endif + +struct tagNMLVODSTATECHANGE { + NMHDR hdr; + int iFrom; + int iTo; + UINT uNewState; + UINT uOldState; +} +alias tagNMLVODSTATECHANGE NMLVODSTATECHANGE; +alias tagNMLVODSTATECHANGE* LPNMLVODSTATECHANGE; + +alias LPNMLVODSTATECHANGE PNM_ODSTATECHANGE; +alias LPNMLVODSTATECHANGE LPNM_ODSTATECHANGE; +alias NMLVODSTATECHANGE NM_ODSTATECHANGE; +// #endif // _WIN32_IE >= 0x0300 + +enum : uint { LVN_ITEMCHANGING = LVN_FIRST-0 } +enum : uint { LVN_ITEMCHANGED = LVN_FIRST-1 } +enum : uint { LVN_INSERTITEM = LVN_FIRST-2 } +enum : uint { LVN_DELETEITEM = LVN_FIRST-3 } +enum : uint { LVN_DELETEALLITEMS = LVN_FIRST-4 } +enum : uint { LVN_BEGINLABELEDITA = LVN_FIRST-5 } +enum : uint { LVN_BEGINLABELEDITW = LVN_FIRST-75 } +enum : uint { LVN_ENDLABELEDITA = LVN_FIRST-6 } +enum : uint { LVN_ENDLABELEDITW = LVN_FIRST-76 } +enum : uint { LVN_COLUMNCLICK = LVN_FIRST-8 } +enum : uint { LVN_BEGINDRAG = LVN_FIRST-9 } +enum : uint { LVN_BEGINRDRAG = LVN_FIRST-11 } + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVN_ODCACHEHINT = LVN_FIRST-13 } +enum : uint { LVN_ODFINDITEMA = LVN_FIRST-52 } +enum : uint { LVN_ODFINDITEMW = LVN_FIRST-79 } + +enum : uint { LVN_ITEMACTIVATE = LVN_FIRST-14 } +enum : uint { LVN_ODSTATECHANGED = LVN_FIRST-15 } + +// #ifdef UNICODE +alias LVN_ODFINDITEMW LVN_ODFINDITEM; +// #else +// #... +// #endif +// #endif // _WIN32_IE >= 0x0300 + +// #if (_WIN32_IE >= 0x0400) +enum : uint { LVN_HOTTRACK = LVN_FIRST-21 } +// #endif + +enum : uint { LVN_GETDISPINFOA = LVN_FIRST-50 } +enum : uint { LVN_GETDISPINFOW = LVN_FIRST-77 } +enum : uint { LVN_SETDISPINFOA = LVN_FIRST-51 } +enum : uint { LVN_SETDISPINFOW = LVN_FIRST-78 } + +// #ifdef UNICODE +alias LVN_BEGINLABELEDITW LVN_BEGINLABELEDIT; +alias LVN_ENDLABELEDITW LVN_ENDLABELEDIT; +alias LVN_GETDISPINFOW LVN_GETDISPINFO; +alias LVN_SETDISPINFOW LVN_SETDISPINFO; +// #else +// #... +// #... +// #... +// #... +// #endif + +enum : uint { LVIF_DI_SETITEM = 0x1000 } + +// #if (_WIN32_IE >= 0x0300) +alias NMLVDISPINFOA LV_DISPINFOA; +alias NMLVDISPINFOW LV_DISPINFOW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias NMLVDISPINFO LV_DISPINFO; + +struct tagLVDISPINFO { + NMHDR hdr; + LVITEMA item; +} +alias tagLVDISPINFO NMLVDISPINFOA; +alias tagLVDISPINFO* LPNMLVDISPINFOA; + +struct tagLVDISPINFOW { + NMHDR hdr; + LVITEMW item; +} +alias tagLVDISPINFOW NMLVDISPINFOW; +alias tagLVDISPINFOW* LPNMLVDISPINFOW; + +// #ifdef UNICODE +alias NMLVDISPINFOW NMLVDISPINFO; +// #else +// #... +// #endif + +enum : uint { LVN_KEYDOWN = LVN_FIRST-55 } + +// #if (_WIN32_IE >= 0x0300) +alias NMLVKEYDOWN LV_KEYDOWN; +// #else +// #... +// #... +// #endif + +// #ifdef _WIN32 +align(1): +// #endif + +struct tagLVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} +alias tagLVKEYDOWN NMLVKEYDOWN; +alias tagLVKEYDOWN* LPNMLVKEYDOWN; + +// #ifdef _WIN32 +align: +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { LVN_MARQUEEBEGIN = LVN_FIRST-56 } +// #endif + +// #if (_WIN32_IE >= 0x0400) +struct tagNMLVGETINFOTIPA { + NMHDR hdr; + DWORD dwFlags; + LPSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; +} +alias tagNMLVGETINFOTIPA NMLVGETINFOTIPA; +alias tagNMLVGETINFOTIPA* LPNMLVGETINFOTIPA; + +struct tagNMLVGETINFOTIPW { + NMHDR hdr; + DWORD dwFlags; + LPWSTR pszText; + int cchTextMax; + int iItem; + int iSubItem; + LPARAM lParam; +} +alias tagNMLVGETINFOTIPW NMLVGETINFOTIPW; +alias tagNMLVGETINFOTIPW* LPNMLVGETINFOTIPW; + +enum : uint { LVGIT_UNFOLDED = 0x0001 } + +enum : uint { LVN_GETINFOTIPA = LVN_FIRST-57 } +enum : uint { LVN_GETINFOTIPW = LVN_FIRST-58 } + +// #ifdef UNICODE +alias LVN_GETINFOTIPW LVN_GETINFOTIP; +alias NMLVGETINFOTIPW NMLVGETINFOTIP; +alias LPNMLVGETINFOTIPW LPNMLVGETINFOTIP; +// #else +// #... +// #... +// #... +// #endif + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_WINNT >= 0x501) +struct tagNMLVSCROLL { + NMHDR hdr; + int dx; + int dy; +} +alias tagNMLVSCROLL NMLVSCROLL; +alias tagNMLVSCROLL* LPNMLVSCROLL; + +enum : uint { LVN_BEGINSCROLL = LVN_FIRST-80 } +enum : uint { LVN_ENDSCROLL = LVN_FIRST-81 } +// #endif + +// #endif // NOLISTVIEW + +// #ifndef NOTREEVIEW + +// #ifdef _WIN32 +const char[] WC_TREEVIEWA = "SysTreeView32"; +const wchar[] WC_TREEVIEWW = "SysTreeView32"; + +// #ifdef UNICODE +alias WC_TREEVIEWW WC_TREEVIEW; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +enum : uint { TVS_HASBUTTONS = 0x0001 } +enum : uint { TVS_HASLINES = 0x0002 } +enum : uint { TVS_LINESATROOT = 0x0004 } +enum : uint { TVS_EDITLABELS = 0x0008 } +enum : uint { TVS_DISABLEDRAGDROP = 0x0010 } +enum : uint { TVS_SHOWSELALWAYS = 0x0020 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TVS_RTLREADING = 0x0040 } + +enum : uint { TVS_NOTOOLTIPS = 0x0080 } +enum : uint { TVS_CHECKBOXES = 0x0100 } +enum : uint { TVS_TRACKSELECT = 0x0200 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVS_SINGLEEXPAND = 0x0400 } +enum : uint { TVS_INFOTIP = 0x0800 } +enum : uint { TVS_FULLROWSELECT = 0x1000 } +enum : uint { TVS_NOSCROLL = 0x2000 } +enum : uint { TVS_NONEVENHEIGHT = 0x4000 } +// #endif +// #if (_WIN32_IE >= 0x500) +enum : uint { TVS_NOHSCROLL = 0x8000 } +// #endif +// #endif + +alias _TREEITEM* HTREEITEM; + +enum : uint { TVIF_TEXT = 0x0001 } +enum : uint { TVIF_IMAGE = 0x0002 } +enum : uint { TVIF_PARAM = 0x0004 } +enum : uint { TVIF_STATE = 0x0008 } +enum : uint { TVIF_HANDLE = 0x0010 } +enum : uint { TVIF_SELECTEDIMAGE = 0x0020 } +enum : uint { TVIF_CHILDREN = 0x0040 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVIF_INTEGRAL = 0x0080 } +// #endif +enum : uint { TVIS_SELECTED = 0x0002 } +enum : uint { TVIS_CUT = 0x0004 } +enum : uint { TVIS_DROPHILITED = 0x0008 } +enum : uint { TVIS_BOLD = 0x0010 } +enum : uint { TVIS_EXPANDED = 0x0020 } +enum : uint { TVIS_EXPANDEDONCE = 0x0040 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TVIS_EXPANDPARTIAL = 0x0080 } +// #endif + +enum : uint { TVIS_OVERLAYMASK = 0x0F00 } +enum : uint { TVIS_STATEIMAGEMASK = 0xF000 } +enum : uint { TVIS_USERMASK = 0xF000 } + +enum { I_CHILDRENCALLBACK = -1 } + +// #if (_WIN32_IE >= 0x0300) +alias LPTVITEMW LPTV_ITEMW; +alias LPTVITEMA LPTV_ITEMA; +alias TVITEMW TV_ITEMW; +alias TVITEMA TV_ITEMA; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias LPTVITEM LPTV_ITEM; +alias TVITEM TV_ITEM; + +struct tagTVITEMA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias tagTVITEMA TVITEMA; +alias tagTVITEMA* LPTVITEMA; + +struct tagTVITEMW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; +} +alias tagTVITEMW TVITEMW; +alias tagTVITEMW* LPTVITEMW; + +// #if (_WIN32_IE >= 0x0400) + +struct tagTVITEMEXA { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; +} +alias tagTVITEMEXA TVITEMEXA; +alias tagTVITEMEXA* LPTVITEMEXA; + +struct tagTVITEMEXW { + UINT mask; + HTREEITEM hItem; + UINT state; + UINT stateMask; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int cChildren; + LPARAM lParam; + int iIntegral; +} +alias tagTVITEMEXW TVITEMEXW; +alias tagTVITEMEXW* LPTVITEMEXW; + +// #ifdef UNICODE +alias TVITEMEXW TVITEMEX; +alias LPTVITEMEXW LPTVITEMEX; +// #else +// ... +// #endif // UNICODE + +// #endif + +// #ifdef UNICODE +alias TVITEMW TVITEM; +alias LPTVITEMW LPTVITEM; +// #else +// #... +// #... +// #endif + +const HTREEITEM TVI_ROOT = cast(HTREEITEM)(-0x10000); +const HTREEITEM TVI_FIRST = cast(HTREEITEM)(-0x0FFFF); +const HTREEITEM TVI_LAST = cast(HTREEITEM)(-0x0FFFE); +const HTREEITEM TVI_SORT = cast(HTREEITEM)(-0x0FFFD); + +// #if (_WIN32_IE >= 0x0300) +alias LPTVINSERTSTRUCTA LPTV_INSERTSTRUCTA; +alias LPTVINSERTSTRUCTW LPTV_INSERTSTRUCTW; +alias TVINSERTSTRUCTA TV_INSERTSTRUCTA; +alias TVINSERTSTRUCTW TV_INSERTSTRUCTW; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias TVINSERTSTRUCT TV_INSERTSTRUCT; +alias LPTVINSERTSTRUCT LPTV_INSERTSTRUCT; + +// #define TVINSERTSTRUCTA_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item) +// #define TVINSERTSTRUCTW_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item) + +struct tagTVINSERTSTRUCTA { + HTREEITEM hParent; + HTREEITEM hInsertAfter; +// #if (_WIN32_IE >= 0x0400) +union { + TVITEMEXA itemex; + TV_ITEMA item; +} + +// #else +// ... +// #endif +} +alias tagTVINSERTSTRUCTA TVINSERTSTRUCTA; +alias tagTVINSERTSTRUCTA* LPTVINSERTSTRUCTA; + +struct tagTVINSERTSTRUCTW { + HTREEITEM hParent; + HTREEITEM hInsertAfter; +// #if (_WIN32_IE >= 0x0400) +union { + TVITEMEXW itemex; + TV_ITEMW item; +} + +// #else +// ... +// #endif +} +alias tagTVINSERTSTRUCTW TVINSERTSTRUCTW; +alias tagTVINSERTSTRUCTW* LPTVINSERTSTRUCTW; + +// #ifdef UNICODE +alias TVINSERTSTRUCTW TVINSERTSTRUCT; +alias LPTVINSERTSTRUCTW LPTVINSERTSTRUCT; +// #define TVINSERTSTRUCT_V1_SIZE TVINSERTSTRUCTW_V1_SIZE +// #else +// #... +// #... +// #... +// #endif + +enum : uint { TVM_INSERTITEMA = TV_FIRST + 0 } +enum : uint { TVM_INSERTITEMW = TV_FIRST + 50 } +// #ifdef UNICODE +alias TVM_INSERTITEMW TVM_INSERTITEM; +// #else +// #... +// #endif + +// #define TreeView_InsertItem(hwnd, lpis) (HTREEITEM)SNDMSG((hwnd), TVM_INSERTITEM, 0, (LPARAM)(LPTV_INSERTSTRUCT)(lpis)) + +enum : uint { TVM_DELETEITEM = TV_FIRST + 1 } +// #define TreeView_DeleteItem(hwnd, hitem) (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hitem)) + +// #define TreeView_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT) + +enum : uint { TVM_EXPAND = TV_FIRST + 2 } +// #define TreeView_Expand(hwnd, hitem, code) (BOOL)SNDMSG((hwnd), TVM_EXPAND, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVE_COLLAPSE = 0x0001 } +enum : uint { TVE_EXPAND = 0x0002 } +enum : uint { TVE_TOGGLE = 0x0003 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TVE_EXPANDPARTIAL = 0x4000 } +// #endif +enum : uint { TVE_COLLAPSERESET = 0x8000 } + +enum : uint { TVM_GETITEMRECT = TV_FIRST + 4 } +// #define TreeView_GetItemRect(hwnd, hitem, prc, code) (*(HTREEITEM *)prc = (hitem), (BOOL)SNDMSG((hwnd), TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc))) + +enum : uint { TVM_GETCOUNT = TV_FIRST + 5 } +// #define TreeView_GetCount(hwnd) (UINT)SNDMSG((hwnd), TVM_GETCOUNT, 0, 0) + +enum : uint { TVM_GETINDENT = TV_FIRST + 6 } +// #define TreeView_GetIndent(hwnd) (UINT)SNDMSG((hwnd), TVM_GETINDENT, 0, 0) + +enum : uint { TVM_SETINDENT = TV_FIRST + 7 } +// #define TreeView_SetIndent(hwnd, indent) (BOOL)SNDMSG((hwnd), TVM_SETINDENT, (WPARAM)(indent), 0) + +enum : uint { TVM_GETIMAGELIST = TV_FIRST + 8 } +// #define TreeView_GetImageList(hwnd, iImage) (HIMAGELIST)SNDMSG((hwnd), TVM_GETIMAGELIST, iImage, 0) + +enum : uint { TVSIL_NORMAL = 0 } +enum : uint { TVSIL_STATE = 2 } + +enum : uint { TVM_SETIMAGELIST = TV_FIRST + 9 } +// #define TreeView_SetImageList(hwnd, himl, iImage) (HIMAGELIST)SNDMSG((hwnd), TVM_SETIMAGELIST, iImage, (LPARAM)(HIMAGELIST)(himl)) + +enum : uint { TVM_GETNEXTITEM = TV_FIRST + 10 } +// #define TreeView_GetNextItem(hwnd, hitem, code) (HTREEITEM)SNDMSG((hwnd), TVM_GETNEXTITEM, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVGN_ROOT = 0x0000 } +enum : uint { TVGN_NEXT = 0x0001 } +enum : uint { TVGN_PREVIOUS = 0x0002 } +enum : uint { TVGN_PARENT = 0x0003 } +enum : uint { TVGN_CHILD = 0x0004 } +enum : uint { TVGN_FIRSTVISIBLE = 0x0005 } +enum : uint { TVGN_NEXTVISIBLE = 0x0006 } +enum : uint { TVGN_PREVIOUSVISIBLE = 0x0007 } +enum : uint { TVGN_DROPHILITE = 0x0008 } +enum : uint { TVGN_CARET = 0x0009 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVGN_LASTVISIBLE = 0x000A } +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { TVSI_NOSINGLEEXPAND = 0x8000 } +// #endif + +// #define TreeView_GetChild(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD) +// #define TreeView_GetNextSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT) +// #define TreeView_GetPrevSibling(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS) +// #define TreeView_GetParent(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT) +// #define TreeView_GetFirstVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE) +// #define TreeView_GetNextVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE) +// #define TreeView_GetPrevVisible(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE) +// #define TreeView_GetSelection(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_CARET) +// #define TreeView_GetDropHilight(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE) +// #define TreeView_GetRoot(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT) +// #if (_WIN32_IE >= 0x0400) +// #define TreeView_GetLastVisible(hwnd) TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE) +// #endif // _WIN32_IE >= 0x0400 + +enum : uint { TVM_SELECTITEM = TV_FIRST + 11 } +// #define TreeView_Select(hwnd, hitem, code) (BOOL)SNDMSG((hwnd), TVM_SELECTITEM, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem)) + +// #define TreeView_SelectItem(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_CARET) +// #define TreeView_SelectDropTarget(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_DROPHILITE) +// #define TreeView_SelectSetFirstVisible(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE) + +enum : uint { TVM_GETITEMA = TV_FIRST + 12 } +enum : uint { TVM_GETITEMW = TV_FIRST + 62 } + +// #ifdef UNICODE +alias TVM_GETITEMW TVM_GETITEM; +// #else +// #... +// #endif + +// #define TreeView_GetItem(hwnd, pitem) (BOOL)SNDMSG((hwnd), TVM_GETITEM, 0, (LPARAM)(TV_ITEM *)(pitem)) + +enum : uint { TVM_SETITEMA = TV_FIRST + 13 } +enum : uint { TVM_SETITEMW = TV_FIRST + 63 } + +// #ifdef UNICODE +alias TVM_SETITEMW TVM_SETITEM; +// #else +// #... +// #endif + +// #define TreeView_SetItem(hwnd, pitem) (BOOL)SNDMSG((hwnd), TVM_SETITEM, 0, (LPARAM)(const TV_ITEM *)(pitem)) + +enum : uint { TVM_EDITLABELA = TV_FIRST + 14 } +enum : uint { TVM_EDITLABELW = TV_FIRST + 65 } +// #ifdef UNICODE +alias TVM_EDITLABELW TVM_EDITLABEL; +// #else +// #... +// #endif + +// #define TreeView_EditLabel(hwnd, hitem) (HWND)SNDMSG((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVM_GETEDITCONTROL = TV_FIRST + 15 } +// #define TreeView_GetEditControl(hwnd) (HWND)SNDMSG((hwnd), TVM_GETEDITCONTROL, 0, 0) + +enum : uint { TVM_GETVISIBLECOUNT = TV_FIRST + 16 } +// #define TreeView_GetVisibleCount(hwnd) (UINT)SNDMSG((hwnd), TVM_GETVISIBLECOUNT, 0, 0) + +enum : uint { TVM_HITTEST = TV_FIRST + 17 } +// #define TreeView_HitTest(hwnd, lpht) (HTREEITEM)SNDMSG((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht)) + +// #if (_WIN32_IE >= 0x0300) +alias LPTVHITTESTINFO LPTV_HITTESTINFO; +alias TVHITTESTINFO TV_HITTESTINFO; +// #else +// #... +// #... +// #... +// #endif + +struct tagTVHITTESTINFO { + POINT pt; + UINT flags; + HTREEITEM hItem; +} +alias tagTVHITTESTINFO TVHITTESTINFO; +alias tagTVHITTESTINFO* LPTVHITTESTINFO; + +enum : uint { TVHT_NOWHERE = 0x0001 } +enum : uint { TVHT_ONITEMICON = 0x0002 } +enum : uint { TVHT_ONITEMLABEL = 0x0004 } +enum : uint { TVHT_ONITEM = TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON } +enum : uint { TVHT_ONITEMINDENT = 0x0008 } +enum : uint { TVHT_ONITEMBUTTON = 0x0010 } +enum : uint { TVHT_ONITEMRIGHT = 0x0020 } +// #define TVHT_ONITEMSTATEICON 0x0040 + +enum : uint { TVHT_ABOVE = 0x0100 } +enum : uint { TVHT_BELOW = 0x0200 } +enum : uint { TVHT_TORIGHT = 0x0400 } +enum : uint { TVHT_TOLEFT = 0x0800 } + +enum : uint { TVM_CREATEDRAGIMAGE = TV_FIRST + 18 } +// #define TreeView_CreateDragImage(hwnd, hitem) (HIMAGELIST)SNDMSG((hwnd), TVM_CREATEDRAGIMAGE, 0, (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVM_SORTCHILDREN = TV_FIRST + 19 } +// #define TreeView_SortChildren(hwnd, hitem, recurse) (BOOL)SNDMSG((hwnd), TVM_SORTCHILDREN, (WPARAM)(recurse), (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVM_ENSUREVISIBLE = TV_FIRST + 20 } +// #define TreeView_EnsureVisible(hwnd, hitem) (BOOL)SNDMSG((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(HTREEITEM)(hitem)) + +enum : uint { TVM_SORTCHILDRENCB = TV_FIRST + 21 } +// #define TreeView_SortChildrenCB(hwnd, psort, recurse) (BOOL)SNDMSG((hwnd), TVM_SORTCHILDRENCB, (WPARAM)(recurse), (LPARAM)(LPTV_SORTCB)(psort)) + +enum : uint { TVM_ENDEDITLABELNOW = TV_FIRST + 22 } +// #define TreeView_EndEditLabelNow(hwnd, fCancel) (BOOL)SNDMSG((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)(fCancel), 0) + +enum : uint { TVM_GETISEARCHSTRINGA = TV_FIRST + 23 } +enum : uint { TVM_GETISEARCHSTRINGW = TV_FIRST + 64 } + +// #ifdef UNICODE +alias TVM_GETISEARCHSTRINGW TVM_GETISEARCHSTRING; +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { TVM_SETTOOLTIPS = TV_FIRST + 24 } +// #define TreeView_SetToolTips(hwnd, hwndTT) (HWND)SNDMSG((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0) +enum : uint { TVM_GETTOOLTIPS = TV_FIRST + 25 } +// #define TreeView_GetToolTips(hwnd) (HWND)SNDMSG((hwnd), TVM_GETTOOLTIPS, 0, 0) +// #endif + +// #define TreeView_GetISearchString(hwndTV, lpsz) (BOOL)SNDMSG((hwndTV), TVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)(lpsz)) + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVM_SETINSERTMARK = TV_FIRST + 26 } +// #define TreeView_SetInsertMark(hwnd, hItem, fAfter) (BOOL)SNDMSG((hwnd), TVM_SETINSERTMARK, (WPARAM) (fAfter), (LPARAM) (hItem)) + +alias CCM_SETUNICODEFORMAT TVM_SETUNICODEFORMAT; +// #define TreeView_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), TVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT TVM_GETUNICODEFORMAT; +// #define TreeView_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), TVM_GETUNICODEFORMAT, 0, 0) + +// #endif + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVM_SETITEMHEIGHT = TV_FIRST + 27 } +// #define TreeView_SetItemHeight(hwnd, iHeight) (int)SNDMSG((hwnd), TVM_SETITEMHEIGHT, (WPARAM)(iHeight), 0) +enum : uint { TVM_GETITEMHEIGHT = TV_FIRST + 28 } +// #define TreeView_GetItemHeight(hwnd) (int)SNDMSG((hwnd), TVM_GETITEMHEIGHT, 0, 0) + +enum : uint { TVM_SETBKCOLOR = TV_FIRST + 29 } +// #define TreeView_SetBkColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)(clr)) + +enum : uint { TVM_SETTEXTCOLOR = TV_FIRST + 30 } +// #define TreeView_SetTextColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)(clr)) + +enum : uint { TVM_GETBKCOLOR = TV_FIRST + 31 } +// #define TreeView_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd), TVM_GETBKCOLOR, 0, 0) + +enum : uint { TVM_GETTEXTCOLOR = TV_FIRST + 32 } +// #define TreeView_GetTextColor(hwnd) (COLORREF)SNDMSG((hwnd), TVM_GETTEXTCOLOR, 0, 0) + +enum : uint { TVM_SETSCROLLTIME = TV_FIRST + 33 } +// #define TreeView_SetScrollTime(hwnd, uTime) (UINT)SNDMSG((hwnd), TVM_SETSCROLLTIME, uTime, 0) + +enum : uint { TVM_GETSCROLLTIME = TV_FIRST + 34 } +// #define TreeView_GetScrollTime(hwnd) (UINT)SNDMSG((hwnd), TVM_GETSCROLLTIME, 0, 0) + +enum : uint { TVM_SETINSERTMARKCOLOR = TV_FIRST + 37 } +// #define TreeView_SetInsertMarkColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)(clr)) +enum : uint { TVM_GETINSERTMARKCOLOR = TV_FIRST + 38 } +// #define TreeView_GetInsertMarkColor(hwnd) (COLORREF)SNDMSG((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0) + +// #endif /* (_WIN32_IE >= 0x0400) */ + +// #if (_WIN32_IE >= 0x0500) + +// #define TreeView_SetItemState(hwndTV, hti, data, _mask) { TVITEM _ms_TVi; _ms_TVi.mask = TVIF_STATE; _ms_TVi.hItem = hti; _ms_TVi.stateMask = _mask; _ms_TVi.state = data; SNDMSG((hwndTV), TVM_SETITEM, 0, (LPARAM)(TV_ITEM *)&_ms_TVi); } + +// #define TreeView_SetCheckState(hwndTV, hti, fCheck) TreeView_SetItemState(hwndTV, hti, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), TVIS_STATEIMAGEMASK) + +enum : uint { TVM_GETITEMSTATE = TV_FIRST + 39 } +// #define TreeView_GetItemState(hwndTV, hti, mask) (UINT)SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask)) + +// #define TreeView_GetCheckState(hwndTV, hti) ((((UINT)(SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), TVIS_STATEIMAGEMASK))) >> 12) -1) + +enum : uint { TVM_SETLINECOLOR = TV_FIRST + 40 } +// #define TreeView_SetLineColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr)) + +enum : uint { TVM_GETLINECOLOR = TV_FIRST + 41 } +// #define TreeView_GetLineColor(hwnd) (COLORREF)SNDMSG((hwnd), TVM_GETLINECOLOR, 0, 0) + +// #endif + +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42 } +// #define TreeView_MapAccIDToHTREEITEM(hwnd, id) (HTREEITEM)SNDMSG((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0) + +enum : uint { TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43 } +// #define TreeView_MapHTREEITEMToAccID(hwnd, htreeitem) (UINT)SNDMSG((hwnd), TVM_MAPHTREEITEMTOACCID, (WPARAM)htreeitem, 0) + +// #endif + +extern(Windows) alias int function(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) PFNTVCOMPARE; + +// #if (_WIN32_IE >= 0x0300) +alias LPTVSORTCB LPTV_SORTCB; +alias TVSORTCB TV_SORTCB; +// #else +// #... +// #... +// #... +// #endif + +struct tagTVSORTCB { + HTREEITEM hParent; + PFNTVCOMPARE lpfnCompare; + LPARAM lParam; +} +alias tagTVSORTCB TVSORTCB; +alias tagTVSORTCB* LPTVSORTCB; + +// #if (_WIN32_IE >= 0x0300) +alias LPNMTREEVIEWA LPNM_TREEVIEWA; +alias LPNMTREEVIEWW LPNM_TREEVIEWW; +alias NMTREEVIEWW NM_TREEVIEWW; +alias NMTREEVIEWA NM_TREEVIEWA; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +alias LPNMTREEVIEW LPNM_TREEVIEW; +alias NMTREEVIEW NM_TREEVIEW; + +struct tagNMTREEVIEWA { + NMHDR hdr; + UINT action; + TVITEMA itemOld; + TVITEMA itemNew; + POINT ptDrag; +} +alias tagNMTREEVIEWA NMTREEVIEWA; +alias tagNMTREEVIEWA* LPNMTREEVIEWA; + +struct tagNMTREEVIEWW { + NMHDR hdr; + UINT action; + TVITEMW itemOld; + TVITEMW itemNew; + POINT ptDrag; +} +alias tagNMTREEVIEWW NMTREEVIEWW; +alias tagNMTREEVIEWW* LPNMTREEVIEWW; + +// #ifdef UNICODE +alias NMTREEVIEWW NMTREEVIEW; +alias LPNMTREEVIEWW LPNMTREEVIEW; +// #else +// #... +// #... +// #endif + +enum : uint { TVN_SELCHANGINGA = TVN_FIRST-1 } +enum : uint { TVN_SELCHANGINGW = TVN_FIRST-50 } +enum : uint { TVN_SELCHANGEDA = TVN_FIRST-2 } +enum : uint { TVN_SELCHANGEDW = TVN_FIRST-51 } + +enum : uint { TVC_UNKNOWN = 0x0000 } +enum : uint { TVC_BYMOUSE = 0x0001 } +enum : uint { TVC_BYKEYBOARD = 0x0002 } + +enum : uint { TVN_GETDISPINFOA = TVN_FIRST-3 } +enum : uint { TVN_GETDISPINFOW = TVN_FIRST-52 } +enum : uint { TVN_SETDISPINFOA = TVN_FIRST-4 } +enum : uint { TVN_SETDISPINFOW = TVN_FIRST-53 } + +enum : uint { TVIF_DI_SETITEM = 0x1000 } + +// #if (_WIN32_IE >= 0x0300) +alias NMTVDISPINFOA TV_DISPINFOA; +alias NMTVDISPINFOW TV_DISPINFOW; +// #else +// #... +// #... +// #... +// #... +// #endif + +alias NMTVDISPINFO TV_DISPINFO; + +struct tagTVDISPINFOA { + NMHDR hdr; + TVITEMA item; +} +alias tagTVDISPINFOA NMTVDISPINFOA; +alias tagTVDISPINFOA* LPNMTVDISPINFOA; + +struct tagTVDISPINFOW { + NMHDR hdr; + TVITEMW item; +} +alias tagTVDISPINFOW NMTVDISPINFOW; +alias tagTVDISPINFOW* LPNMTVDISPINFOW; + +// #ifdef UNICODE +alias NMTVDISPINFOW NMTVDISPINFO; +alias LPNMTVDISPINFOW LPNMTVDISPINFO; +// #else +// #... +// #... +// #endif + +enum : uint { TVN_ITEMEXPANDINGA = TVN_FIRST-5 } +enum : uint { TVN_ITEMEXPANDINGW = TVN_FIRST-54 } +enum : uint { TVN_ITEMEXPANDEDA = TVN_FIRST-6 } +enum : uint { TVN_ITEMEXPANDEDW = TVN_FIRST-55 } +enum : uint { TVN_BEGINDRAGA = TVN_FIRST-7 } +enum : uint { TVN_BEGINDRAGW = TVN_FIRST-56 } +enum : uint { TVN_BEGINRDRAGA = TVN_FIRST-8 } +enum : uint { TVN_BEGINRDRAGW = TVN_FIRST-57 } +enum : uint { TVN_DELETEITEMA = TVN_FIRST-9 } +enum : uint { TVN_DELETEITEMW = TVN_FIRST-58 } +enum : uint { TVN_BEGINLABELEDITA = TVN_FIRST-10 } +enum : uint { TVN_BEGINLABELEDITW = TVN_FIRST-59 } +enum : uint { TVN_ENDLABELEDITA = TVN_FIRST-11 } +enum : uint { TVN_ENDLABELEDITW = TVN_FIRST-60 } +enum : uint { TVN_KEYDOWN = TVN_FIRST-12 } + +// #if (_WIN32_IE >= 0x0400) +enum : uint { TVN_GETINFOTIPA = TVN_FIRST-13 } +enum : uint { TVN_GETINFOTIPW = TVN_FIRST-14 } +enum : uint { TVN_SINGLEEXPAND = TVN_FIRST-15 } + +enum : uint { TVNRET_DEFAULT = 0 } +enum : uint { TVNRET_SKIPOLD = 1 } +enum : uint { TVNRET_SKIPNEW = 2 } + +// #endif // 0x400 + +// #if (_WIN32_IE >= 0x0300) +alias NMTVKEYDOWN TV_KEYDOWN; +// #else +// #... +// #... +// #endif + +// #ifdef _WIN32 +align(1): +// #endif + +struct tagTVKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} +alias tagTVKEYDOWN NMTVKEYDOWN; +alias tagTVKEYDOWN* LPNMTVKEYDOWN; + +// #ifdef _WIN32 +align: +// #endif + +// #ifdef UNICODE +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; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +// #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk) + +struct tagNMTVCUSTOMDRAW { + NMCUSTOMDRAW nmcd; + COLORREF clrText; + COLORREF clrTextBk; +// #if (_WIN32_IE >= 0x0400) + int iLevel; +// #endif +} +alias tagNMTVCUSTOMDRAW NMTVCUSTOMDRAW; +alias tagNMTVCUSTOMDRAW* LPNMTVCUSTOMDRAW; + +// #endif + +// #if (_WIN32_IE >= 0x0400) + +struct tagNMTVGETINFOTIPA { + NMHDR hdr; + LPSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; +} +alias tagNMTVGETINFOTIPA NMTVGETINFOTIPA; +alias tagNMTVGETINFOTIPA* LPNMTVGETINFOTIPA; + +struct tagNMTVGETINFOTIPW { + NMHDR hdr; + LPWSTR pszText; + int cchTextMax; + HTREEITEM hItem; + LPARAM lParam; +} +alias tagNMTVGETINFOTIPW NMTVGETINFOTIPW; +alias tagNMTVGETINFOTIPW* LPNMTVGETINFOTIPW; + +// #ifdef UNICODE +alias TVN_GETINFOTIPW TVN_GETINFOTIP; +alias NMTVGETINFOTIPW NMTVGETINFOTIP; +alias LPNMTVGETINFOTIPW LPNMTVGETINFOTIP; +// #else +// #... +// #... +// #... +// #endif + +enum : uint { TVCDRF_NOIMAGES = 0x00010000 } + +// #endif // _WIN32_IE >= 0x0400 + +// #endif // NOTREEVIEW + +// #if (_WIN32_IE >= 0x0300) + +// #ifndef NOUSEREXCONTROLS + +const wchar[] WC_COMBOBOXEXW = "ComboBoxEx32"; +const char[] WC_COMBOBOXEXA = "ComboBoxEx32"; + +// #ifdef UNICODE +alias WC_COMBOBOXEXW WC_COMBOBOXEX; +// #else +// #... +// #endif + +enum : uint { CBEIF_TEXT = 0x00000001 } +enum : uint { CBEIF_IMAGE = 0x00000002 } +enum : uint { CBEIF_SELECTEDIMAGE = 0x00000004 } +enum : uint { CBEIF_OVERLAY = 0x00000008 } +enum : uint { CBEIF_INDENT = 0x00000010 } +enum : uint { CBEIF_LPARAM = 0x00000020 } + +enum : uint { CBEIF_DI_SETITEM = 0x10000000 } + +struct tagCOMBOBOXEXITEMA { + UINT mask; + INT_PTR iItem; + LPSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias tagCOMBOBOXEXITEMA COMBOBOXEXITEMA; +alias tagCOMBOBOXEXITEMA* PCOMBOBOXEXITEMA; + +alias COMBOBOXEXITEMA* PCCOMBOEXITEMA; + +struct tagCOMBOBOXEXITEMW { + UINT mask; + INT_PTR iItem; + LPWSTR pszText; + int cchTextMax; + int iImage; + int iSelectedImage; + int iOverlay; + int iIndent; + LPARAM lParam; +} +alias tagCOMBOBOXEXITEMW COMBOBOXEXITEMW; +alias tagCOMBOBOXEXITEMW* PCOMBOBOXEXITEMW; + +alias COMBOBOXEXITEMW* PCCOMBOEXITEMW; + +// #ifdef UNICODE +alias COMBOBOXEXITEMW COMBOBOXEXITEM; +alias PCOMBOBOXEXITEMW PCOMBOBOXEXITEM; +alias PCCOMBOBOXEXITEMW PCCOMBOBOXEXITEM; +// #else +// #... +// #... +// #... +// #endif + +enum : uint { CBEM_INSERTITEMA = WM_USER + 1 } +enum : uint { CBEM_SETIMAGELIST = WM_USER + 2 } +enum : uint { CBEM_GETIMAGELIST = WM_USER + 3 } +enum : uint { CBEM_GETITEMA = WM_USER + 4 } +enum : uint { CBEM_SETITEMA = WM_USER + 5 } +alias CB_DELETESTRING CBEM_DELETEITEM; +enum : uint { CBEM_GETCOMBOCONTROL = WM_USER + 6 } +enum : uint { CBEM_GETEDITCONTROL = WM_USER + 7 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { CBEM_SETEXSTYLE = WM_USER + 8 } +enum : uint { CBEM_SETEXTENDEDSTYLE = WM_USER + 14 } +enum : uint { CBEM_GETEXSTYLE = WM_USER + 9 } +enum : uint { CBEM_GETEXTENDEDSTYLE = WM_USER + 9 } +alias CCM_SETUNICODEFORMAT CBEM_SETUNICODEFORMAT; +alias CCM_GETUNICODEFORMAT CBEM_GETUNICODEFORMAT; +// #else +// #... +// #... +// #endif +enum : uint { CBEM_HASEDITCHANGED = WM_USER + 10 } +enum : uint { CBEM_INSERTITEMW = WM_USER + 11 } +enum : uint { CBEM_SETITEMW = WM_USER + 12 } +enum : uint { CBEM_GETITEMW = WM_USER + 13 } + +// #ifdef UNICODE +alias CBEM_INSERTITEMW CBEM_INSERTITEM; +alias CBEM_SETITEMW CBEM_SETITEM; +alias CBEM_GETITEMW CBEM_GETITEM; +// #else +// #... +// #... +// #... +// #endif + +// #if (_WIN32_WINNT >= 0x501) +alias CCM_SETWINDOWTHEME CBEM_SETWINDOWTHEME; +// #endif + +enum : uint { CBES_EX_NOEDITIMAGE = 0x00000001 } +enum : uint { CBES_EX_NOEDITIMAGEINDENT = 0x00000002 } +enum : uint { CBES_EX_PATHWORDBREAKPROC = 0x00000004 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { CBES_EX_NOSIZELIMIT = 0x00000008 } +enum : uint { CBES_EX_CASESENSITIVE = 0x00000010 } + +struct _9 { + NMHDR hdr; + COMBOBOXEXITEMA ceItem; +} +alias _9 NMCOMBOBOXEXA; +alias _9* PNMCOMBOBOXEXA; + +struct _10 { + NMHDR hdr; + COMBOBOXEXITEMW ceItem; +} +alias _10 NMCOMBOBOXEXW; +alias _10* PNMCOMBOBOXEXW; + +// #ifdef UNICODE +alias NMCOMBOBOXEXW NMCOMBOBOXEX; +alias PNMCOMBOBOXEXW PNMCOMBOBOXEX; +alias CBEN_GETDISPINFOW CBEN_GETDISPINFO; +// #else +// #... +// #... +// #... +// #endif + +// #else +// ... + +// #... + +// #endif // _WIN32_IE >= 0x0400 + +// #if (_WIN32_IE >= 0x0400) +// #define CBEN_GETDISPINFOA (CBEN_FIRST - 0) +// #endif +enum : uint { CBEN_INSERTITEM = CBEN_FIRST - 1 } +enum : uint { CBEN_DELETEITEM = CBEN_FIRST - 2 } +enum : uint { CBEN_BEGINEDIT = CBEN_FIRST - 4 } +enum : uint { CBEN_ENDEDITA = CBEN_FIRST - 5 } +enum : uint { CBEN_ENDEDITW = CBEN_FIRST - 6 } + +// #if (_WIN32_IE >= 0x0400) +// #define CBEN_GETDISPINFOW (CBEN_FIRST - 7) +// #endif + +// #if (_WIN32_IE >= 0x0400) +enum : uint { CBEN_DRAGBEGINA = CBEN_FIRST - 8 } +enum : uint { CBEN_DRAGBEGINW = CBEN_FIRST - 9 } + +// #ifdef UNICODE +alias CBEN_DRAGBEGINW CBEN_DRAGBEGIN; +// #else +// #... +// #endif + +// #endif //(_WIN32_IE >= 0x0400) + +// #ifdef UNICODE +alias CBEN_ENDEDITW CBEN_ENDEDIT; +// #else +// #... +// #endif + +enum : uint { CBENF_KILLFOCUS = 1 } +enum : uint { CBENF_RETURN = 2 } +enum : uint { CBENF_ESCAPE = 3 } +enum : uint { CBENF_DROPDOWN = 4 } + +enum : uint { CBEMAXSTRLEN = 260 } + +// #if (_WIN32_IE >= 0x0400) + +struct _11 { + NMHDR hdr; + int iItemid; + WCHAR szText[CBEMAXSTRLEN]; +} +alias _11 NMCBEDRAGBEGINW; +alias _11* LPNMCBEDRAGBEGINW; +alias _11* PNMCBEDRAGBEGINW; + +struct _12 { + NMHDR hdr; + int iItemid; + char szText[CBEMAXSTRLEN]; +} +alias _12 NMCBEDRAGBEGINA; +alias _12* LPNMCBEDRAGBEGINA; +alias _12* PNMCBEDRAGBEGINA; + +// #ifdef UNICODE +alias NMCBEDRAGBEGINW NMCBEDRAGBEGIN; +alias LPNMCBEDRAGBEGINW LPNMCBEDRAGBEGIN; +alias PNMCBEDRAGBEGINW PNMCBEDRAGBEGIN; +// #else +// #... +// #... +// #... +// #endif +// #endif // _WIN32_IE >= 0x0400 + +struct _13 { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR szText[CBEMAXSTRLEN]; + int iWhy; +} +alias _13 NMCBEENDEDITW; +alias _13* LPNMCBEENDEDITW; +alias _13* PNMCBEENDEDITW; + +struct _14 { + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char szText[CBEMAXSTRLEN]; + int iWhy; +} +alias _14 NMCBEENDEDITA; +alias _14* LPNMCBEENDEDITA; +alias _14* PNMCBEENDEDITA; + +// #ifdef UNICODE +alias NMCBEENDEDITW NMCBEENDEDIT; +alias LPNMCBEENDEDITW LPNMCBEENDEDIT; +alias PNMCBEENDEDITW PNMCBEENDEDIT; +// #else +// #... +// #... +// #... +// #endif + +// #endif + +// #endif // _WIN32_IE >= 0x0300 + +// #ifndef NOTABCONTROL + +// #ifdef _WIN32 + +const char[] WC_TABCONTROLA = "SysTabControl32"; +const wchar[] WC_TABCONTROLW = "SysTabControl32"; + +// #ifdef UNICODE +alias WC_TABCONTROLW WC_TABCONTROL; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +enum : uint { TCS_SCROLLOPPOSITE = 0x0001 } +enum : uint { TCS_BOTTOM = 0x0002 } +enum : uint { TCS_RIGHT = 0x0002 } +enum : uint { TCS_MULTISELECT = 0x0004 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TCS_FLATBUTTONS = 0x0008 } +// #endif +enum : uint { TCS_FORCEICONLEFT = 0x0010 } +enum : uint { TCS_FORCELABELLEFT = 0x0020 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TCS_HOTTRACK = 0x0040 } +enum : uint { TCS_VERTICAL = 0x0080 } +// #endif +enum : uint { TCS_TABS = 0x0000 } +enum : uint { TCS_BUTTONS = 0x0100 } +enum : uint { TCS_SINGLELINE = 0x0000 } +enum : uint { TCS_MULTILINE = 0x0200 } +enum : uint { TCS_RIGHTJUSTIFY = 0x0000 } +enum : uint { TCS_FIXEDWIDTH = 0x0400 } +enum : uint { TCS_RAGGEDRIGHT = 0x0800 } +enum : uint { TCS_FOCUSONBUTTONDOWN = 0x1000 } +enum : uint { TCS_OWNERDRAWFIXED = 0x2000 } +enum : uint { TCS_TOOLTIPS = 0x4000 } +enum : uint { TCS_FOCUSNEVER = 0x8000 } + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { TCS_EX_FLATSEPARATORS = 0x00000001 } +enum : uint { TCS_EX_REGISTERDROP = 0x00000002 } +// #endif + +enum : uint { TCM_GETIMAGELIST = TCM_FIRST + 2 } +// #define TabCtrl_GetImageList(hwnd) (HIMAGELIST)SNDMSG((hwnd), TCM_GETIMAGELIST, 0, 0L) + +enum : uint { TCM_SETIMAGELIST = TCM_FIRST + 3 } +// #define TabCtrl_SetImageList(hwnd, himl) (HIMAGELIST)SNDMSG((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(HIMAGELIST)(himl)) + +enum : uint { TCM_GETITEMCOUNT = TCM_FIRST + 4 } +// #define TabCtrl_GetItemCount(hwnd) (int)SNDMSG((hwnd), TCM_GETITEMCOUNT, 0, 0L) + +enum : uint { TCIF_TEXT = 0x0001 } +enum : uint { TCIF_IMAGE = 0x0002 } +enum : uint { TCIF_RTLREADING = 0x0004 } +enum : uint { TCIF_PARAM = 0x0008 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { TCIF_STATE = 0x0010 } + +enum : uint { TCIS_BUTTONPRESSED = 0x0001 } +// #endif +// #if (_WIN32_IE >= 0x0400) +enum : uint { TCIS_HIGHLIGHTED = 0x0002 } +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias TCITEMHEADERA TC_ITEMHEADERA; +alias TCITEMHEADERW TC_ITEMHEADERW; +// #else +// #... +// #... +// #... +// #... +// #endif +alias TCITEMHEADER TC_ITEMHEADER; + +struct tagTCITEMHEADERA { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPSTR pszText; + int cchTextMax; + int iImage; +} +alias tagTCITEMHEADERA TCITEMHEADERA; +alias tagTCITEMHEADERA* LPTCITEMHEADERA; + +struct tagTCITEMHEADERW { + UINT mask; + UINT lpReserved1; + UINT lpReserved2; + LPWSTR pszText; + int cchTextMax; + int iImage; +} +alias tagTCITEMHEADERW TCITEMHEADERW; +alias tagTCITEMHEADERW* LPTCITEMHEADERW; + +// #ifdef UNICODE +alias TCITEMHEADERW TCITEMHEADER; +alias LPTCITEMHEADERW LPTCITEMHEADER; +// #else +// #... +// #... +// #endif + +// #if (_WIN32_IE >= 0x0300) +alias TCITEMA TC_ITEMA; +alias TCITEMW TC_ITEMW; +// #else +// #... +// #... +// #... +// #... +// #endif +alias TCITEM TC_ITEM; + +struct tagTCITEMA { + UINT mask; +// #if (_WIN32_IE >= 0x0300) + DWORD dwState; + DWORD dwStateMask; +// #else +// ... +// #endif + LPSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias tagTCITEMA TCITEMA; +alias tagTCITEMA* LPTCITEMA; + +struct tagTCITEMW { + UINT mask; +// #if (_WIN32_IE >= 0x0300) + DWORD dwState; + DWORD dwStateMask; +// #else +// ... +// #endif + LPWSTR pszText; + int cchTextMax; + int iImage; + LPARAM lParam; +} +alias tagTCITEMW TCITEMW; +alias tagTCITEMW* LPTCITEMW; + +// #ifdef UNICODE +alias TCITEMW TCITEM; +alias LPTCITEMW LPTCITEM; +// #else +// #... +// #... +// #endif + +enum : uint { TCM_GETITEMA = TCM_FIRST + 5 } +enum : uint { TCM_GETITEMW = TCM_FIRST + 60 } + +// #ifdef UNICODE +alias TCM_GETITEMW TCM_GETITEM; +// #else +// #... +// #endif + +// #define TabCtrl_GetItem(hwnd, iItem, pitem) (BOOL)SNDMSG((hwnd), TCM_GETITEM, (WPARAM)(int)(iItem), (LPARAM)(TC_ITEM *)(pitem)) + +enum : uint { TCM_SETITEMA = TCM_FIRST + 6 } +enum : uint { TCM_SETITEMW = TCM_FIRST + 61 } + +// #ifdef UNICODE +alias TCM_SETITEMW TCM_SETITEM; +// #else +// #... +// #endif + +// #define TabCtrl_SetItem(hwnd, iItem, pitem) (BOOL)SNDMSG((hwnd), TCM_SETITEM, (WPARAM)(int)(iItem), (LPARAM)(TC_ITEM *)(pitem)) + +enum : uint { TCM_INSERTITEMA = TCM_FIRST + 7 } +enum : uint { TCM_INSERTITEMW = TCM_FIRST + 62 } + +// #ifdef UNICODE +alias TCM_INSERTITEMW TCM_INSERTITEM; +// #else +// #... +// #endif + +// #define TabCtrl_InsertItem(hwnd, iItem, pitem) (int)SNDMSG((hwnd), TCM_INSERTITEM, (WPARAM)(int)(iItem), (LPARAM)(const TC_ITEM *)(pitem)) + +enum : uint { TCM_DELETEITEM = TCM_FIRST + 8 } +// #define TabCtrl_DeleteItem(hwnd, i) (BOOL)SNDMSG((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L) + +enum : uint { TCM_DELETEALLITEMS = TCM_FIRST + 9 } +// #define TabCtrl_DeleteAllItems(hwnd) (BOOL)SNDMSG((hwnd), TCM_DELETEALLITEMS, 0, 0L) + +enum : uint { TCM_GETITEMRECT = TCM_FIRST + 10 } +// #define TabCtrl_GetItemRect(hwnd, i, prc) (BOOL)SNDMSG((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT *)(prc)) + +enum : uint { TCM_GETCURSEL = TCM_FIRST + 11 } +// #define TabCtrl_GetCurSel(hwnd) (int)SNDMSG((hwnd), TCM_GETCURSEL, 0, 0) + +enum : uint { TCM_SETCURSEL = TCM_FIRST + 12 } +// #define TabCtrl_SetCurSel(hwnd, i) (int)SNDMSG((hwnd), TCM_SETCURSEL, (WPARAM)(i), 0) + +enum : uint { TCHT_NOWHERE = 0x0001 } +enum : uint { TCHT_ONITEMICON = 0x0002 } +enum : uint { TCHT_ONITEMLABEL = 0x0004 } +enum : uint { TCHT_ONITEM = TCHT_ONITEMICON | TCHT_ONITEMLABEL } + +// #if (_WIN32_IE >= 0x0300) +alias LPTCHITTESTINFO LPTC_HITTESTINFO; +alias TCHITTESTINFO TC_HITTESTINFO; +// #else +// #... +// #... +// #... +// #endif + +struct tagTCHITTESTINFO { + POINT pt; + UINT flags; +} +alias tagTCHITTESTINFO TCHITTESTINFO; +alias tagTCHITTESTINFO* LPTCHITTESTINFO; + +enum : uint { TCM_HITTEST = TCM_FIRST + 13 } +// #define TabCtrl_HitTest(hwndTC, pinfo) (int)SNDMSG((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO *)(pinfo)) + +enum : uint { TCM_SETITEMEXTRA = TCM_FIRST + 14 } +// #define TabCtrl_SetItemExtra(hwndTC, cb) (BOOL)SNDMSG((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L) + +enum : uint { TCM_ADJUSTRECT = TCM_FIRST + 40 } +// #define TabCtrl_AdjustRect(hwnd, bLarger, prc) (int)SNDMSG(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)(bLarger), (LPARAM)(RECT *)prc) + +enum : uint { TCM_SETITEMSIZE = TCM_FIRST + 41 } +// #define TabCtrl_SetItemSize(hwnd, x, y) (DWORD)SNDMSG((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y)) + +enum : uint { TCM_REMOVEIMAGE = TCM_FIRST + 42 } +// #define TabCtrl_RemoveImage(hwnd, i) (void)SNDMSG((hwnd), TCM_REMOVEIMAGE, i, 0L) + +enum : uint { TCM_SETPADDING = TCM_FIRST + 43 } +// #define TabCtrl_SetPadding(hwnd, cx, cy) (void)SNDMSG((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy)) + +enum : uint { TCM_GETROWCOUNT = TCM_FIRST + 44 } +// #define TabCtrl_GetRowCount(hwnd) (int)SNDMSG((hwnd), TCM_GETROWCOUNT, 0, 0L) + +enum : uint { TCM_GETTOOLTIPS = TCM_FIRST + 45 } +// #define TabCtrl_GetToolTips(hwnd) (HWND)SNDMSG((hwnd), TCM_GETTOOLTIPS, 0, 0L) + +enum : uint { TCM_SETTOOLTIPS = TCM_FIRST + 46 } +// #define TabCtrl_SetToolTips(hwnd, hwndTT) (void)SNDMSG((hwnd), TCM_SETTOOLTIPS, (WPARAM)(hwndTT), 0L) + +enum : uint { TCM_GETCURFOCUS = TCM_FIRST + 47 } +// #define TabCtrl_GetCurFocus(hwnd) (int)SNDMSG((hwnd), TCM_GETCURFOCUS, 0, 0) + +enum : uint { TCM_SETCURFOCUS = TCM_FIRST + 48 } +// #define TabCtrl_SetCurFocus(hwnd, i) SNDMSG((hwnd),TCM_SETCURFOCUS, i, 0) + +// #if (_WIN32_IE >= 0x0300) +enum : uint { TCM_SETMINTABWIDTH = TCM_FIRST + 49 } +// #define TabCtrl_SetMinTabWidth(hwnd, x) (int)SNDMSG((hwnd), TCM_SETMINTABWIDTH, 0, x) + +enum : uint { TCM_DESELECTALL = TCM_FIRST + 50 } +// #define TabCtrl_DeselectAll(hwnd, fExcludeFocus) (void)SNDMSG((hwnd), TCM_DESELECTALL, fExcludeFocus, 0) +// #endif + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { TCM_HIGHLIGHTITEM = TCM_FIRST + 51 } +// #define TabCtrl_HighlightItem(hwnd, i, fHighlight) (BOOL)SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)(i), (LPARAM)MAKELONG (fHighlight, 0)) + +enum : uint { TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52 } +// #define TabCtrl_SetExtendedStyle(hwnd, dw) (DWORD)SNDMSG((hwnd), TCM_SETEXTENDEDSTYLE, 0, dw) + +enum : uint { TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53 } +// #define TabCtrl_GetExtendedStyle(hwnd) (DWORD)SNDMSG((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0) + +alias CCM_SETUNICODEFORMAT TCM_SETUNICODEFORMAT; +// #define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT TCM_GETUNICODEFORMAT; +// #define TabCtrl_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), TCM_GETUNICODEFORMAT, 0, 0) + +// #endif // _WIN32_IE >= 0x0400 + +enum : uint { TCN_KEYDOWN = TCN_FIRST - 0 } + +// #if (_WIN32_IE >= 0x0300) +alias NMTCKEYDOWN TC_KEYDOWN; +// #else +// #... +// #... +// #endif + +// #ifdef _WIN32 +align(1): +// #endif + +struct tagTCKEYDOWN { + NMHDR hdr; + WORD wVKey; + UINT flags; +} +alias tagTCKEYDOWN NMTCKEYDOWN; + +// #ifdef _WIN32 +align: +// #endif + +enum : uint { TCN_SELCHANGE = TCN_FIRST - 1 } +enum : uint { TCN_SELCHANGING = TCN_FIRST - 2 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { TCN_GETOBJECT = TCN_FIRST - 3 } +// #endif // _WIN32_IE >= 0x0400 +// #if (_WIN32_IE >= 0x0500) +enum : uint { TCN_FOCUSCHANGE = TCN_FIRST - 4 } +// #endif // _WIN32_IE >= 0x0500 +// #endif // NOTABCONTROL + +// #ifndef NOANIMATE + +// #ifdef _WIN32 + +const wchar[] ANIMATE_CLASSW = "SysAnimate32"; +const char[] ANIMATE_CLASSA = "SysAnimate32"; + +// #ifdef UNICODE +alias ANIMATE_CLASSW ANIMATE_CLASS; +// #else +// #... +// #endif + +enum : uint { ACS_CENTER = 0x0001 } +enum : uint { ACS_TRANSPARENT = 0x0002 } +enum : uint { ACS_AUTOPLAY = 0x0004 } +// #if (_WIN32_IE >= 0x0300) +enum : uint { ACS_TIMER = 0x0008 } +// #endif + +enum : uint { ACM_OPENA = WM_USER+100 } +enum : uint { ACM_OPENW = WM_USER+103 } + +// #ifdef UNICODE +alias ACM_OPENW ACM_OPEN; +// #else +// #... +// #endif + +enum : uint { ACM_PLAY = WM_USER+101 } +enum : uint { ACM_STOP = WM_USER+102 } + +enum : uint { ACN_START = 1 } +enum : uint { ACN_STOP = 2 } + +// #define Animate_Create(hwndP, id, dwStyle, hInstance) CreateWindow(ANIMATE_CLASS, NULL, dwStyle, 0, 0, 0, 0, hwndP, (HMENU)(id), hInstance, NULL) + +// #define Animate_Open(hwnd, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, 0, (LPARAM)(LPTSTR)(szName)) +// #define Animate_OpenEx(hwnd, hInst, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, (WPARAM)(hInst), (LPARAM)(LPTSTR)(szName)) +// #define Animate_Play(hwnd, from, to, rep) (BOOL)SNDMSG(hwnd, ACM_PLAY, (WPARAM)(rep), (LPARAM)MAKELONG(from, to)) +// #define Animate_Stop(hwnd) (BOOL)SNDMSG(hwnd, ACM_STOP, 0, 0) +// #define Animate_Close(hwnd) Animate_Open(hwnd, NULL) +// #define Animate_Seek(hwnd, frame) Animate_Play(hwnd, frame, frame, 1) +// #endif + +// #endif // NOANIMATE + +// #if (_WIN32_IE >= 0x0300) + +// #ifndef NOMONTHCAL +// #ifdef _WIN32 + +const wchar[] MONTHCAL_CLASSW = "SysMonthCal32"; +const char[] MONTHCAL_CLASSA = "SysMonthCal32"; + +// #ifdef UNICODE +alias MONTHCAL_CLASSW MONTHCAL_CLASS; +// #else +// #... +// #endif + +alias DWORD MONTHDAYSTATE; +alias DWORD* LPMONTHDAYSTATE; + +enum : uint { MCM_FIRST = 0x1000 } + +enum : uint { MCM_GETCURSEL = MCM_FIRST + 1 } +// #define MonthCal_GetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst)) + +enum : uint { MCM_SETCURSEL = MCM_FIRST + 2 } +// #define MonthCal_SetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst)) + +enum : uint { MCM_GETMAXSELCOUNT = MCM_FIRST + 3 } +// #define MonthCal_GetMaxSelCount(hmc) (DWORD)SNDMSG(hmc, MCM_GETMAXSELCOUNT, 0, 0L) + +enum : uint { MCM_SETMAXSELCOUNT = MCM_FIRST + 4 } +// #define MonthCal_SetMaxSelCount(hmc, n) (BOOL)SNDMSG(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L) + +enum : uint { MCM_GETSELRANGE = MCM_FIRST + 5 } +// #define MonthCal_GetSelRange(hmc, rgst) SNDMSG(hmc, MCM_GETSELRANGE, 0, (LPARAM)(rgst)) + +enum : uint { MCM_SETSELRANGE = MCM_FIRST + 6 } +// #define MonthCal_SetSelRange(hmc, rgst) SNDMSG(hmc, MCM_SETSELRANGE, 0, (LPARAM)(rgst)) + +enum : uint { MCM_GETMONTHRANGE = MCM_FIRST + 7 } +// #define MonthCal_GetMonthRange(hmc, gmr, rgst) (DWORD)SNDMSG(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst)) + +enum : uint { MCM_SETDAYSTATE = MCM_FIRST + 8 } +// #define MonthCal_SetDayState(hmc, cbds, rgds) SNDMSG(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds)) + +enum : uint { MCM_GETMINREQRECT = MCM_FIRST + 9 } +// #define MonthCal_GetMinReqRect(hmc, prc) SNDMSG(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc)) + +enum : uint { MCM_SETCOLOR = MCM_FIRST + 10 } +// #define MonthCal_SetColor(hmc, iColor, clr) SNDMSG(hmc, MCM_SETCOLOR, iColor, clr) + +enum : uint { MCM_GETCOLOR = MCM_FIRST + 11 } +// #define MonthCal_GetColor(hmc, iColor) SNDMSG(hmc, MCM_GETCOLOR, iColor, 0) + +enum : uint { MCSC_BACKGROUND = 0 } +enum : uint { MCSC_TEXT = 1 } +enum : uint { MCSC_TITLEBK = 2 } +enum : uint { MCSC_TITLETEXT = 3 } +enum : uint { MCSC_MONTHBK = 4 } +enum : uint { MCSC_TRAILINGTEXT = 5 } + +enum : uint { MCM_SETTODAY = MCM_FIRST + 12 } +// #define MonthCal_SetToday(hmc, pst) SNDMSG(hmc, MCM_SETTODAY, 0, (LPARAM)(pst)) + +enum : uint { MCM_GETTODAY = MCM_FIRST + 13 } +// #define MonthCal_GetToday(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETTODAY, 0, (LPARAM)(pst)) + +enum : uint { MCM_HITTEST = MCM_FIRST + 14 } +// #define MonthCal_HitTest(hmc, pinfo) SNDMSG(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)(pinfo)) + +struct _15 { + UINT cbSize; + POINT pt; + UINT uHit; + SYSTEMTIME st; +} +alias _15 MCHITTESTINFO; +alias _15* PMCHITTESTINFO; + +enum : uint { MCHT_TITLE = 0x00010000 } +enum : uint { MCHT_CALENDAR = 0x00020000 } +enum : uint { MCHT_TODAYLINK = 0x00030000 } + +enum : uint { MCHT_NEXT = 0x01000000 } +enum : uint { MCHT_PREV = 0x02000000 } + +enum : uint { MCHT_NOWHERE = 0x00000000 } + +enum : uint { MCHT_TITLEBK = MCHT_TITLE } +enum : uint { MCHT_TITLEMONTH = MCHT_TITLE | 0x0001 } +enum : uint { MCHT_TITLEYEAR = MCHT_TITLE | 0x0002 } +enum : uint { MCHT_TITLEBTNNEXT = MCHT_TITLE | MCHT_NEXT | 0x0003 } +enum : uint { MCHT_TITLEBTNPREV = MCHT_TITLE | MCHT_PREV | 0x0003 } + +enum : uint { MCHT_CALENDARBK = MCHT_CALENDAR } +enum : uint { MCHT_CALENDARDATE = MCHT_CALENDAR | 0x0001 } +enum : uint { MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE | MCHT_NEXT } +enum : uint { MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE | MCHT_PREV } +enum : uint { MCHT_CALENDARDAY = MCHT_CALENDAR | 0x0002 } +enum : uint { MCHT_CALENDARWEEKNUM = MCHT_CALENDAR | 0x0003 } + +enum : uint { MCM_SETFIRSTDAYOFWEEK = MCM_FIRST + 15 } +// #define MonthCal_SetFirstDayOfWeek(hmc, iDay) SNDMSG(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay) + +enum : uint { MCM_GETFIRSTDAYOFWEEK = MCM_FIRST + 16 } +// #define MonthCal_GetFirstDayOfWeek(hmc) (DWORD)SNDMSG(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0) + +enum : uint { MCM_GETRANGE = MCM_FIRST + 17 } +// #define MonthCal_GetRange(hmc, rgst) (DWORD)SNDMSG(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst)) + +enum : uint { MCM_SETRANGE = MCM_FIRST + 18 } +// #define MonthCal_SetRange(hmc, gd, rgst) (BOOL)SNDMSG(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst)) + +enum : uint { MCM_GETMONTHDELTA = MCM_FIRST + 19 } +// #define MonthCal_GetMonthDelta(hmc) (int)SNDMSG(hmc, MCM_GETMONTHDELTA, 0, 0) + +enum : uint { MCM_SETMONTHDELTA = MCM_FIRST + 20 } +// #define MonthCal_SetMonthDelta(hmc, n) (int)SNDMSG(hmc, MCM_SETMONTHDELTA, n, 0) + +enum : uint { MCM_GETMAXTODAYWIDTH = MCM_FIRST + 21 } +// #define MonthCal_GetMaxTodayWidth(hmc) (DWORD)SNDMSG(hmc, MCM_GETMAXTODAYWIDTH, 0, 0) + +// #if (_WIN32_IE >= 0x0400) +alias CCM_SETUNICODEFORMAT MCM_SETUNICODEFORMAT; +// #define MonthCal_SetUnicodeFormat(hwnd, fUnicode) (BOOL)SNDMSG((hwnd), MCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0) + +alias CCM_GETUNICODEFORMAT MCM_GETUNICODEFORMAT; +// #define MonthCal_GetUnicodeFormat(hwnd) (BOOL)SNDMSG((hwnd), MCM_GETUNICODEFORMAT, 0, 0) +// #endif + +struct tagNMSELCHANGE { + NMHDR nmhdr; + + SYSTEMTIME stSelStart; + SYSTEMTIME stSelEnd; +} +alias tagNMSELCHANGE NMSELCHANGE; +alias tagNMSELCHANGE* LPNMSELCHANGE; + +enum : uint { MCN_SELCHANGE = MCN_FIRST + 1 } + +struct tagNMDAYSTATE { + NMHDR nmhdr; + + SYSTEMTIME stStart; + int cDayState; + LPMONTHDAYSTATE prgDayState; +} +alias tagNMDAYSTATE NMDAYSTATE; +alias tagNMDAYSTATE* LPNMDAYSTATE; + +enum : uint { MCN_GETDAYSTATE = MCN_FIRST + 3 } + +alias NMSELCHANGE NMSELECT; +alias NMSELCHANGE* LPNMSELECT; + +enum : uint { MCN_SELECT = MCN_FIRST + 4 } + +enum : uint { MCS_DAYSTATE = 0x0001 } +enum : uint { MCS_MULTISELECT = 0x0002 } +enum : uint { MCS_WEEKNUMBERS = 0x0004 } +// #if (_WIN32_IE >= 0x0400) +enum : uint { MCS_NOTODAYCIRCLE = 0x0008 } +enum : uint { MCS_NOTODAY = 0x0010 } +// #else +// #... +// #endif + +enum : uint { GMR_VISIBLE = 0 } +enum : uint { GMR_DAYSTATE = 1 } + +// #endif // _WIN32 +// #endif // NOMONTHCAL + +// #ifndef NODATETIMEPICK +// #ifdef _WIN32 + +const wchar[] DATETIMEPICK_CLASSW = "SysDateTimePick32"; +const char[] DATETIMEPICK_CLASSA = "SysDateTimePick32"; + +// #ifdef UNICODE +alias DATETIMEPICK_CLASSW DATETIMEPICK_CLASS; +// #else +// #... +// #endif + +enum : uint { DTM_FIRST = 0x1000 } + +enum : uint { DTM_GETSYSTEMTIME = DTM_FIRST + 1 } +// #define DateTime_GetSystemtime(hdp, pst) (DWORD)SNDMSG(hdp, DTM_GETSYSTEMTIME, 0, (LPARAM)(pst)) + +enum : uint { DTM_SETSYSTEMTIME = DTM_FIRST + 2 } +// #define DateTime_SetSystemtime(hdp, gd, pst) (BOOL)SNDMSG(hdp, DTM_SETSYSTEMTIME, (WPARAM)(gd), (LPARAM)(pst)) + +enum : uint { DTM_GETRANGE = DTM_FIRST + 3 } +// #define DateTime_GetRange(hdp, rgst) (DWORD)SNDMSG(hdp, DTM_GETRANGE, 0, (LPARAM)(rgst)) + +enum : uint { DTM_SETRANGE = DTM_FIRST + 4 } +// #define DateTime_SetRange(hdp, gd, rgst) (BOOL)SNDMSG(hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst)) + +enum : uint { DTM_SETFORMATA = DTM_FIRST + 5 } +enum : uint { DTM_SETFORMATW = DTM_FIRST + 50 } + +// #ifdef UNICODE +alias DTM_SETFORMATW DTM_SETFORMAT; +// #else +// #... +// #endif + +// #define DateTime_SetFormat(hdp, sz) (BOOL)SNDMSG(hdp, DTM_SETFORMAT, 0, (LPARAM)(sz)) + +enum : uint { DTM_SETMCCOLOR = DTM_FIRST + 6 } +// #define DateTime_SetMonthCalColor(hdp, iColor, clr) SNDMSG(hdp, DTM_SETMCCOLOR, iColor, clr) + +enum : uint { DTM_GETMCCOLOR = DTM_FIRST + 7 } +// #define DateTime_GetMonthCalColor(hdp, iColor) SNDMSG(hdp, DTM_GETMCCOLOR, iColor, 0) + +enum : uint { DTM_GETMONTHCAL = DTM_FIRST + 8 } +// #define DateTime_GetMonthCal(hdp) (HWND)SNDMSG(hdp, DTM_GETMONTHCAL, 0, 0) + +// #if (_WIN32_IE >= 0x0400) + +enum : uint { DTM_SETMCFONT = DTM_FIRST + 9 } +// #define DateTime_SetMonthCalFont(hdp, hfont, fRedraw) SNDMSG(hdp, DTM_SETMCFONT, (WPARAM)(hfont), (LPARAM)(fRedraw)) + +enum : uint { DTM_GETMCFONT = DTM_FIRST + 10 } +// #define DateTime_GetMonthCalFont(hdp) SNDMSG(hdp, DTM_GETMCFONT, 0, 0) + +// #endif // _WIN32_IE >= 0x0400 + +enum : uint { DTS_UPDOWN = 0x0001 } +enum : uint { DTS_SHOWNONE = 0x0002 } +enum : uint { DTS_SHORTDATEFORMAT = 0x0000 } +enum : uint { DTS_LONGDATEFORMAT = 0x0004 } +// #if (_WIN32_IE >= 0x500) +enum : uint { DTS_SHORTDATECENTURYFORMAT = 0x000C } +// #endif // (_WIN32_IE >= 0x500) +enum : uint { DTS_TIMEFORMAT = 0x0009 } +enum : uint { DTS_APPCANPARSE = 0x0010 } +enum : uint { DTS_RIGHTALIGN = 0x0020 } + +enum : uint { DTN_DATETIMECHANGE = DTN_FIRST + 1 } +struct tagNMDATETIMECHANGE { + NMHDR nmhdr; + DWORD dwFlags; + SYSTEMTIME st; +} +alias tagNMDATETIMECHANGE NMDATETIMECHANGE; +alias tagNMDATETIMECHANGE* LPNMDATETIMECHANGE; + +enum : uint { DTN_USERSTRINGA = DTN_FIRST + 2 } +enum : uint { DTN_USERSTRINGW = DTN_FIRST + 15 } +struct tagNMDATETIMESTRINGA { + NMHDR nmhdr; + LPCSTR pszUserString; + SYSTEMTIME st; + DWORD dwFlags; +} +alias tagNMDATETIMESTRINGA NMDATETIMESTRINGA; +alias tagNMDATETIMESTRINGA* LPNMDATETIMESTRINGA; + +struct tagNMDATETIMESTRINGW { + NMHDR nmhdr; + LPCWSTR pszUserString; + SYSTEMTIME st; + DWORD dwFlags; +} +alias tagNMDATETIMESTRINGW NMDATETIMESTRINGW; +alias tagNMDATETIMESTRINGW* LPNMDATETIMESTRINGW; + +// #ifdef UNICODE +alias DTN_USERSTRINGW DTN_USERSTRING; +alias NMDATETIMESTRINGW NMDATETIMESTRING; +alias LPNMDATETIMESTRINGW LPNMDATETIMESTRING; +// #else +// #... +// #... +// #... +// #endif + +enum : uint { DTN_WMKEYDOWNA = DTN_FIRST + 3 } +enum : uint { DTN_WMKEYDOWNW = DTN_FIRST + 16 } +struct tagNMDATETIMEWMKEYDOWNA { + NMHDR nmhdr; + int nVirtKey; + LPCSTR pszFormat; + SYSTEMTIME st; +} +alias tagNMDATETIMEWMKEYDOWNA NMDATETIMEWMKEYDOWNA; +alias tagNMDATETIMEWMKEYDOWNA* LPNMDATETIMEWMKEYDOWNA; + +struct tagNMDATETIMEWMKEYDOWNW { + NMHDR nmhdr; + int nVirtKey; + LPCWSTR pszFormat; + SYSTEMTIME st; +} +alias tagNMDATETIMEWMKEYDOWNW NMDATETIMEWMKEYDOWNW; +alias tagNMDATETIMEWMKEYDOWNW* LPNMDATETIMEWMKEYDOWNW; + +// #ifdef UNICODE +alias DTN_WMKEYDOWNW DTN_WMKEYDOWN; +alias NMDATETIMEWMKEYDOWNW NMDATETIMEWMKEYDOWN; +alias LPNMDATETIMEWMKEYDOWNW LPNMDATETIMEWMKEYDOWN; +// #else +// #... +// #... +// #... +// #endif + +enum : uint { DTN_FORMATA = DTN_FIRST + 4 } +enum : uint { DTN_FORMATW = DTN_FIRST + 17 } +struct tagNMDATETIMEFORMATA { + NMHDR nmhdr; + LPCSTR pszFormat; + SYSTEMTIME st; + LPCSTR pszDisplay; + CHAR szDisplay[64]; +} +alias tagNMDATETIMEFORMATA NMDATETIMEFORMATA; +alias tagNMDATETIMEFORMATA* LPNMDATETIMEFORMATA; + +struct tagNMDATETIMEFORMATW { + NMHDR nmhdr; + LPCWSTR pszFormat; + SYSTEMTIME st; + LPCWSTR pszDisplay; + WCHAR szDisplay[64]; +} +alias tagNMDATETIMEFORMATW NMDATETIMEFORMATW; +alias tagNMDATETIMEFORMATW* LPNMDATETIMEFORMATW; + +// #ifdef UNICODE +alias DTN_FORMATW DTN_FORMAT; +alias NMDATETIMEFORMATW NMDATETIMEFORMAT; +alias LPNMDATETIMEFORMATW LPNMDATETIMEFORMAT; +// #else +// #... +// #... +// #... +// #endif + +enum : uint { DTN_FORMATQUERYA = DTN_FIRST + 5 } +enum : uint { DTN_FORMATQUERYW = DTN_FIRST + 18 } +struct tagNMDATETIMEFORMATQUERYA { + NMHDR nmhdr; + LPCSTR pszFormat; + SIZE szMax; +} +alias tagNMDATETIMEFORMATQUERYA NMDATETIMEFORMATQUERYA; +alias tagNMDATETIMEFORMATQUERYA* LPNMDATETIMEFORMATQUERYA; + +struct tagNMDATETIMEFORMATQUERYW { + NMHDR nmhdr; + LPCWSTR pszFormat; + SIZE szMax; +} +alias tagNMDATETIMEFORMATQUERYW NMDATETIMEFORMATQUERYW; +alias tagNMDATETIMEFORMATQUERYW* LPNMDATETIMEFORMATQUERYW; + +// #ifdef UNICODE +alias DTN_FORMATQUERYW DTN_FORMATQUERY; +alias NMDATETIMEFORMATQUERYW NMDATETIMEFORMATQUERY; +alias LPNMDATETIMEFORMATQUERYW LPNMDATETIMEFORMATQUERY; +// #else +// #... +// #... +// #... +// #endif + +enum : uint { DTN_DROPDOWN = DTN_FIRST + 6 } +enum : uint { DTN_CLOSEUP = DTN_FIRST + 7 } + +enum : uint { GDTR_MIN = 0x0001 } +enum : uint { GDTR_MAX = 0x0002 } + +enum { GDT_ERROR = -1 } +enum : uint { GDT_VALID = 0 } +enum : uint { GDT_NONE = 1 } + +// #endif // _WIN32 +// #endif // NODATETIMEPICK + +// #if (_WIN32_IE >= 0x0400) + +// #ifndef NOIPADDRESS + +enum : uint { IPM_CLEARADDRESS = WM_USER+100 } +enum : uint { IPM_SETADDRESS = WM_USER+101 } +enum : uint { IPM_GETADDRESS = WM_USER+102 } +enum : uint { IPM_SETRANGE = WM_USER+103 } +enum : uint { IPM_SETFOCUS = WM_USER+104 } +enum : uint { IPM_ISBLANK = WM_USER+105 } + +const wchar[] WC_IPADDRESSW = "SysIPAddress32"; +const char[] WC_IPADDRESSA = "SysIPAddress32"; + +// #ifdef UNICODE +alias WC_IPADDRESSW WC_IPADDRESS; +// #else +// #... +// #endif + +enum : uint { IPN_FIELDCHANGED = IPN_FIRST - 0 } +struct tagNMIPADDRESS { + NMHDR hdr; + int iField; + int iValue; +} +alias tagNMIPADDRESS NMIPADDRESS; +alias tagNMIPADDRESS* LPNMIPADDRESS; + +// #define MAKEIPRANGE(low, high) ((LPARAM)(WORD)(((BYTE)(high) << 8) + (BYTE)(low))) + +// #define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4)))) + +// #define FIRST_IPADDRESS(x) ((x>>24) & 0xff) +// #define SECOND_IPADDRESS(x) ((x>>16) & 0xff) +// #define THIRD_IPADDRESS(x) ((x>>8) & 0xff) +// #define FOURTH_IPADDRESS(x) (x & 0xff) + +// #endif // NOIPADDRESS + +// #ifndef NOPAGESCROLLER + +const wchar[] WC_PAGESCROLLERW = "SysPager"; +const char[] WC_PAGESCROLLERA = "SysPager"; + +// #ifdef UNICODE +alias WC_PAGESCROLLERW WC_PAGESCROLLER; +// #else +// #... +// #endif + +enum : uint { PGS_VERT = 0x00000000 } +enum : uint { PGS_HORZ = 0x00000001 } +enum : uint { PGS_AUTOSCROLL = 0x00000002 } +enum : uint { PGS_DRAGNDROP = 0x00000004 } + +enum : uint { PGF_INVISIBLE = 0 } +enum : uint { PGF_NORMAL = 1 } +enum : uint { PGF_GRAYED = 2 } +enum : uint { PGF_DEPRESSED = 4 } +enum : uint { PGF_HOT = 8 } + +enum : uint { PGB_TOPORLEFT = 0 } +enum : uint { PGB_BOTTOMORRIGHT = 1 } + +enum : uint { PGM_SETCHILD = PGM_FIRST + 1 } +// #define Pager_SetChild(hwnd, hwndChild) (void)SNDMSG((hwnd), PGM_SETCHILD, 0, (LPARAM)(hwndChild)) + +enum : uint { PGM_RECALCSIZE = PGM_FIRST + 2 } +// #define Pager_RecalcSize(hwnd) (void)SNDMSG((hwnd), PGM_RECALCSIZE, 0, 0) + +enum : uint { PGM_FORWARDMOUSE = PGM_FIRST + 3 } +// #define Pager_ForwardMouse(hwnd, bForward) (void)SNDMSG((hwnd), PGM_FORWARDMOUSE, (WPARAM)(bForward), 0) + +enum : uint { PGM_SETBKCOLOR = PGM_FIRST + 4 } +// #define Pager_SetBkColor(hwnd, clr) (COLORREF)SNDMSG((hwnd), PGM_SETBKCOLOR, 0, (LPARAM)(clr)) + +enum : uint { PGM_GETBKCOLOR = PGM_FIRST + 5 } +// #define Pager_GetBkColor(hwnd) (COLORREF)SNDMSG((hwnd), PGM_GETBKCOLOR, 0, 0) + +enum : uint { PGM_SETBORDER = PGM_FIRST + 6 } +// #define Pager_SetBorder(hwnd, iBorder) (int)SNDMSG((hwnd), PGM_SETBORDER, 0, (LPARAM)(iBorder)) + +enum : uint { PGM_GETBORDER = PGM_FIRST + 7 } +// #define Pager_GetBorder(hwnd) (int)SNDMSG((hwnd), PGM_GETBORDER, 0, 0) + +enum : uint { PGM_SETPOS = PGM_FIRST + 8 } +// #define Pager_SetPos(hwnd, iPos) (int)SNDMSG((hwnd), PGM_SETPOS, 0, (LPARAM)(iPos)) + +enum : uint { PGM_GETPOS = PGM_FIRST + 9 } +// #define Pager_GetPos(hwnd) (int)SNDMSG((hwnd), PGM_GETPOS, 0, 0) + +enum : uint { PGM_SETBUTTONSIZE = PGM_FIRST + 10 } +// #define Pager_SetButtonSize(hwnd, iSize) (int)SNDMSG((hwnd), PGM_SETBUTTONSIZE, 0, (LPARAM)(iSize)) + +enum : uint { PGM_GETBUTTONSIZE = PGM_FIRST + 11 } +// #define Pager_GetButtonSize(hwnd) (int)SNDMSG((hwnd), PGM_GETBUTTONSIZE, 0,0) + +enum : uint { PGM_GETBUTTONSTATE = PGM_FIRST + 12 } +// #define Pager_GetButtonState(hwnd, iButton) (DWORD)SNDMSG((hwnd), PGM_GETBUTTONSTATE, 0, (LPARAM)(iButton)) + +alias CCM_GETDROPTARGET PGM_GETDROPTARGET; +// #define Pager_GetDropTarget(hwnd, ppdt) (void)SNDMSG((hwnd), PGM_GETDROPTARGET, 0, (LPARAM)(ppdt)) + +enum : uint { PGN_SCROLL = PGN_FIRST-1 } + +enum : uint { PGF_SCROLLUP = 1 } +enum : uint { PGF_SCROLLDOWN = 2 } +enum : uint { PGF_SCROLLLEFT = 4 } +enum : uint { PGF_SCROLLRIGHT = 8 } + +enum : uint { PGK_SHIFT = 1 } +enum : uint { PGK_CONTROL = 2 } +enum : uint { PGK_MENU = 4 } + +// #ifdef _WIN32 +align(1): +// #endif + +struct _16 { + NMHDR hdr; + WORD fwKeys; + RECT rcParent; + int iDir; + int iXpos; + int iYpos; + int iScroll; +} +alias _16 NMPGSCROLL; +alias _16* LPNMPGSCROLL; + +// #ifdef _WIN32 +align: +// #endif + +enum : uint { PGN_CALCSIZE = PGN_FIRST-2 } + +enum : uint { PGF_CALCWIDTH = 1 } +enum : uint { PGF_CALCHEIGHT = 2 } + +struct _17 { + NMHDR hdr; + DWORD dwFlag; + int iWidth; + int iHeight; +} +alias _17 NMPGCALCSIZE; +alias _17* LPNMPGCALCSIZE; + +enum : uint { PGN_HOTITEMCHANGE = PGN_FIRST-3 } + +struct tagNMPGHOTITEM { + NMHDR hdr; + int idOld; + int idNew; + DWORD dwFlags; +} +alias tagNMPGHOTITEM NMPGHOTITEM; +alias tagNMPGHOTITEM* LPNMPGHOTITEM; + +// #endif // NOPAGESCROLLER + +// #ifndef NONATIVEFONTCTL + +const wchar[] WC_NATIVEFONTCTLW = "NativeFontCtl"; +const char[] WC_NATIVEFONTCTLA = "NativeFontCtl"; + +// #ifdef UNICODE +alias WC_NATIVEFONTCTLW WC_NATIVEFONTCTL; +// #else +// #... +// #endif + +enum : uint { NFS_EDIT = 0x0001 } +enum : uint { NFS_STATIC = 0x0002 } +enum : uint { NFS_LISTCOMBO = 0x0004 } +enum : uint { NFS_BUTTON = 0x0008 } +enum : uint { NFS_ALL = 0x0010 } +enum : uint { NFS_USEFONTASSOC = 0x0020 } + +// #endif // NONATIVEFONTCTL + +// #ifndef NOBUTTON + +// #ifdef _WIN32 + +const char[] WC_BUTTONA = "Button"; +const wchar[] WC_BUTTONW = "Button"; + +// #ifdef UNICODE +alias WC_BUTTONW WC_BUTTON; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { BUTTON_IMAGELIST_ALIGN_LEFT = 0 } +enum : uint { BUTTON_IMAGELIST_ALIGN_RIGHT = 1 } +enum : uint { BUTTON_IMAGELIST_ALIGN_TOP = 2 } +enum : uint { BUTTON_IMAGELIST_ALIGN_BOTTOM = 3 } +enum : uint { BUTTON_IMAGELIST_ALIGN_CENTER = 4 } + +struct _18 { + HIMAGELIST himl; + RECT margin; + UINT uAlign; +} +alias _18 BUTTON_IMAGELIST; +alias _18* PBUTTON_IMAGELIST; + +enum : uint { BCM_GETIDEALSIZE = BCM_FIRST + 0x0001 } +// #define Button_GetIdealSize(hwnd, psize) (BOOL)SNDMSG((hwnd), BCM_GETIDEALSIZE, 0, (LPARAM)(psize)) + +enum : uint { BCM_SETIMAGELIST = BCM_FIRST + 0x0002 } +// #define Button_SetImageList(hwnd, pbuttonImagelist) (BOOL)SNDMSG((hwnd), BCM_SETIMAGELIST, 0, (LPARAM)(pbuttonImagelist)) + +enum : uint { BCM_GETIMAGELIST = BCM_FIRST + 0x0003 } +// #define Button_GetImageList(hwnd, pbuttonImagelist) (BOOL)SNDMSG((hwnd), BCM_GETIMAGELIST, 0, (LPARAM)(pbuttonImagelist)) + +enum : uint { BCM_SETTEXTMARGIN = BCM_FIRST + 0x0004 } +// #define Button_SetTextMargin(hwnd, pmargin) (BOOL)SNDMSG((hwnd), BCM_SETTEXTMARGIN, 0, (LPARAM)(pmargin)) +enum : uint { BCM_GETTEXTMARGIN = BCM_FIRST + 0x0005 } +// #define Button_GetTextMargin(hwnd, pmargin) (BOOL)SNDMSG((hwnd), BCM_GETTEXTMARGIN, 0, (LPARAM)(pmargin)) + +struct tagNMBCHOTITEM { + NMHDR hdr; + DWORD dwFlags; +} +alias tagNMBCHOTITEM NMBCHOTITEM; +alias tagNMBCHOTITEM* LPNMBCHOTITEM; + +enum : uint { BCN_HOTITEMCHANGE = BCN_FIRST + 0x0001 } + +enum : uint { BST_HOT = 0x0200 } + +// #endif + +// #endif // NOBUTTON + +// #ifndef NOSTATIC + +// #ifdef _WIN32 + +const char[] WC_STATICA = "Static"; +const wchar[] WC_STATICW = "Static"; + +// #ifdef UNICODE +alias WC_STATICW WC_STATIC; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #endif // NOSTATIC + +// #ifndef NOEDIT + +// #ifdef _WIN32 + +const char[] WC_EDITA = "Edit"; +const wchar[] WC_EDITW = "Edit"; + +// #ifdef UNICODE +alias WC_EDITW WC_EDIT; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #if (_WIN32_WINNT >= 0x501) +enum : uint { EM_SETCUEBANNER = ECM_FIRST + 1 } +// #define Edit_SetCueBannerText(hwnd, lpcwText) (BOOL)SNDMSG((hwnd), EM_SETCUEBANNER, 0, (LPARAM)(lpcwText)) +enum : uint { EM_GETCUEBANNER = ECM_FIRST + 2 } +// #define Edit_GetCueBannerText(hwnd, lpwText, cchText) (BOOL)SNDMSG((hwnd), EM_GETCUEBANNER, (WPARAM)(lpwText), (LPARAM)(cchText)) + +struct _tagEDITBALLOONTIP { + DWORD cbStruct; + LPCWSTR pszTitle; + LPCWSTR pszText; + INT ttiIcon; +} +alias _tagEDITBALLOONTIP EDITBALLOONTIP; +alias _tagEDITBALLOONTIP* PEDITBALLOONTIP; + +enum : uint { EM_SHOWBALLOONTIP = ECM_FIRST + 3 } +// #define Edit_ShowBalloonTip(hwnd, peditballoontip) (BOOL)SNDMSG((hwnd), EM_SHOWBALLOONTIP, 0, (LPARAM)(peditballoontip)) +enum : uint { EM_HIDEBALLOONTIP = ECM_FIRST + 4 } +// #define Edit_HideBalloonTip(hwnd) (BOOL)SNDMSG((hwnd), EM_HIDEBALLOONTIP, 0, 0) +// #endif + +// #endif // NOEDIT + +// #ifndef NOLISTBOX + +// #ifdef _WIN32 + +const char[] WC_LISTBOXA = "ListBox"; +const wchar[] WC_LISTBOXW = "ListBox"; + +// #ifdef UNICODE +alias WC_LISTBOXW WC_LISTBOX; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #endif // NOLISTBOX + +// #ifndef NOCOMBOBOX + +// #ifdef _WIN32 + +const char[] WC_COMBOBOXA = "ComboBox"; +const wchar[] WC_COMBOBOXW = "ComboBox"; + +// #ifdef UNICODE +alias WC_COMBOBOXW WC_COMBOBOX; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #endif // NOCOMBOBOX + +// #if (_WIN32_WINNT >= 0x501) + +enum : uint { CB_SETMINVISIBLE = CBM_FIRST + 1 } +enum : uint { CB_GETMINVISIBLE = CBM_FIRST + 2 } + +// #define ComboBox_SetMinVisible(hwnd, iMinVisible) (BOOL)SNDMSG((hwnd), CB_SETMINVISIBLE, (WPARAM)iMinVisible, 0) + +// #define ComboBox_GetMinVisible(hwnd) (int)SNDMSG((hwnd), CB_GETMINVISIBLE, 0, 0) + +// #endif + +// #ifndef NOSCROLLBAR + +// #ifdef _WIN32 + +const char[] WC_SCROLLBARA = "ScrollBar"; +const wchar[] WC_SCROLLBARW = "ScrollBar"; + +// #ifdef UNICODE +alias WC_SCROLLBARW WC_SCROLLBAR; +// #else +// #... +// #endif + +// #else +// #... +// #endif + +// #endif // NOSCROLLBAR + +// #ifdef _WIN32 +// #if (_WIN32_WINNT >= 0x501) + +enum { INVALID_LINK_INDEX = -1 } +enum : uint { MAX_LINKID_TEXT = 48 } +enum { L_MAX_URL_LENGTH = 2048 + 32 + 4 } + +const wchar[] WC_LINK = "SysLink"; + +enum : uint { LWS_TRANSPARENT = 0x0001 } +enum : uint { LWS_IGNORERETURN = 0x0002 } + +enum : uint { LIF_ITEMINDEX = 0x00000001 } +enum : uint { LIF_STATE = 0x00000002 } +enum : uint { LIF_ITEMID = 0x00000004 } +enum : uint { LIF_URL = 0x00000008 } + +enum : uint { LIS_FOCUSED = 0x00000001 } +enum : uint { LIS_ENABLED = 0x00000002 } +enum : uint { LIS_VISITED = 0x00000004 } + +struct tagLITEM { + UINT mask ; + int iLink ; + UINT state ; + UINT stateMask ; + WCHAR szID[MAX_LINKID_TEXT] ; + WCHAR szUrl[L_MAX_URL_LENGTH] ; +} +alias tagLITEM LITEM; +alias tagLITEM* PLITEM; + +struct tagLHITTESTINFO { + POINT pt ; + LITEM item ; +} +alias tagLHITTESTINFO LHITTESTINFO; +alias tagLHITTESTINFO* PLHITTESTINFO; + +struct tagNMLINK { + NMHDR hdr; + LITEM item ; +} +alias tagNMLINK NMLINK; +alias tagNMLINK* PNMLINK; + +enum : uint { LM_HITTEST = WM_USER+0x300 } +enum : uint { LM_GETIDEALHEIGHT = WM_USER+0x301 } +enum : uint { LM_SETITEM = WM_USER+0x302 } +enum : uint { LM_GETITEM = WM_USER+0x303 } + +// #endif +// #endif // _WIN32 + +// #ifndef NOMUI +extern(Windows) export void InitMUILanguage(LANGID uiLang); + +extern(Windows) export LANGID GetMUILanguage(); +// #endif // NOMUI + +// #endif // _WIN32_IE >= 0x0400 + +// #ifdef _WIN32 + +// #ifndef NOTRACKMOUSEEVENT + +// #ifndef WM_MOUSEHOVER +// #... +// #... +// #endif + +// #ifndef TME_HOVER + +enum : uint { TME_HOVER = 0x00000001 } +enum : uint { TME_LEAVE = 0x00000002 } +// #if (WINVER >= 0x0500) +enum : uint { TME_NONCLIENT = 0x00000010 } +// #endif /* WINVER >= 0x0500 */ +enum : uint { TME_QUERY = 0x40000000 } +enum : uint { TME_CANCEL = 0x80000000 } + +enum : uint { HOVER_DEFAULT = 0xFFFFFFFF } + +struct tagTRACKMOUSEEVENT { + DWORD cbSize; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} +alias tagTRACKMOUSEEVENT TRACKMOUSEEVENT; +alias tagTRACKMOUSEEVENT* LPTRACKMOUSEEVENT; + +// #endif // !TME_HOVER + +extern(Windows) export BOOL _TrackMouseEvent( + LPTRACKMOUSEEVENT lpEventTrack); + +// #endif // !NOTRACKMOUSEEVENT + +// #if (_WIN32_IE >= 0x0400) + +// #ifndef NOFLATSBAPIS + +enum : uint { WSB_PROP_CYVSCROLL = 0x00000001 } +enum : uint { WSB_PROP_CXHSCROLL = 0x00000002 } +enum : uint { WSB_PROP_CYHSCROLL = 0x00000004 } +enum : uint { WSB_PROP_CXVSCROLL = 0x00000008 } +enum : uint { WSB_PROP_CXHTHUMB = 0x00000010 } +enum : uint { WSB_PROP_CYVTHUMB = 0x00000020 } +enum : uint { WSB_PROP_VBKGCOLOR = 0x00000040 } +enum : uint { WSB_PROP_HBKGCOLOR = 0x00000080 } +enum : uint { WSB_PROP_VSTYLE = 0x00000100 } +enum : uint { WSB_PROP_HSTYLE = 0x00000200 } +enum : uint { WSB_PROP_WINSTYLE = 0x00000400 } +enum : uint { WSB_PROP_PALETTE = 0x00000800 } +enum : uint { WSB_PROP_MASK = 0x00000FFF } + +enum : uint { FSB_FLAT_MODE = 2 } +enum : uint { FSB_ENCARTA_MODE = 1 } +enum : uint { FSB_REGULAR_MODE = 0 } + +extern(Windows) export BOOL FlatSB_EnableScrollBar(HWND, int, UINT); +extern(Windows) export BOOL FlatSB_ShowScrollBar(HWND, int code, BOOL); + +extern(Windows) export BOOL FlatSB_GetScrollRange(HWND, int code, LPINT, LPINT); +extern(Windows) export BOOL FlatSB_GetScrollInfo(HWND, int code, LPSCROLLINFO); + +extern(Windows) export int FlatSB_GetScrollPos(HWND, int code); + +extern(Windows) export BOOL FlatSB_GetScrollProp(HWND, int propIndex, LPINT); +// #ifdef _WIN64 +// ... +// #else +alias FlatSB_GetScrollProp FlatSB_GetScrollPropPtr; +// #endif + +extern(Windows) export int FlatSB_SetScrollPos(HWND, int code, int pos, BOOL fRedraw); + +extern(Windows) export int FlatSB_SetScrollInfo(HWND, int code, LPSCROLLINFO, BOOL fRedraw); + +extern(Windows) export int FlatSB_SetScrollRange(HWND, int code, int min, int max, BOOL fRedraw); +extern(Windows) export BOOL FlatSB_SetScrollProp(HWND, UINT index, INT_PTR newValue, BOOL); +alias FlatSB_SetScrollProp FlatSB_SetScrollPropPtr; + +extern(Windows) export BOOL InitializeFlatSB(HWND); +extern(Windows) export HRESULT UninitializeFlatSB(HWND); + +// #endif // NOFLATSBAPIS + +// #endif // _WIN32_IE >= 0x0400 + +// #endif /* _WIN32 */ + +// #endif // _WIN32_IE >= 0x0300 + +// #if (_WIN32_WINNT >= 0x501) + +extern(Windows) alias LRESULT function(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData) SUBCLASSPROC; + +extern(Windows) export BOOL SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIdSubclass, + DWORD_PTR dwRefData); +extern(Windows) export BOOL GetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIdSubclass, + DWORD_PTR *pdwRefData); +extern(Windows) export BOOL RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, + UINT_PTR uIdSubclass); + +extern(Windows) export LRESULT DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +// #endif + +// #if (_WIN32_WINNT >= 0x501) + +extern(Windows) export int DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT* prc, DWORD dwFlags, COLORREF crText, COLORREF crShadow, + int ixOffset, int iyOffset); +// #endif + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED + +// #if !defined(ISOLATION_AWARE_INLINE) +// #if defined(__cplusplus) +// #... +// #else +// #... +// #endif +// #endif + +// ... + +// ... +// #if defined(__IStream_INTERFACE_DEFINED__) +// ... +// #if defined(__IStream_INTERFACE_DEFINED__) && (_WIN32_WINNT >= 0x0501) +// ... +// #endif /* defined(__IStream_INTERFACE_DEFINED__) && (_WIN32_WINNT >= 0x0501) */ +// #endif /* defined(__IStream_INTERFACE_DEFINED__) */ +// ... +// #if !defined(NOTRACKMOUSEEVENT) +// ... +// #endif /* !defined(NOTRACKMOUSEEVENT) */ +// ... +// #if (_WIN32_IE >= 0x560) +// ... +// #endif /* (_WIN32_IE >= 0x560) */ +// ... + +// #if defined(UNICODE) + +// #... +// #... +// #... + +// #else /* UNICODE */ + +// #... +// #... +// #... + +// #endif /* UNICODE */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if defined(__IStream_INTERFACE_DEFINED__) + +// ... + +// ... + +// #if defined(__IStream_INTERFACE_DEFINED__) && (_WIN32_WINNT >= 0x0501) + +// ... + +// ... + +// ... + +// ... + +// #endif /* defined(__IStream_INTERFACE_DEFINED__) && (_WIN32_WINNT >= 0x0501) */ +// #endif /* defined(__IStream_INTERFACE_DEFINED__) */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if !defined(NOTRACKMOUSEEVENT) + +// ... + +// #endif /* !defined(NOTRACKMOUSEEVENT) */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... +// #if defined(_WIN64) +// ... +// #else +// ... +// #endif +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if (_WIN32_IE >= 0x560) + +// ... + +// ... + +// ... + +// #endif /* (_WIN32_IE >= 0x560) */ + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #if defined(FlatSB_GetScrollPropPtr) +// #... +// #endif +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif + +// #endif // _INC_COMMCTRL + ADDED src/win32/commdlg.d Index: src/win32/commdlg.d ================================================================== --- src/win32/commdlg.d +++ src/win32/commdlg.d @@ -0,0 +1,1132 @@ +module win32.commdlg; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.windef; +import win32.winuser; +// inline #include +// ---- + +// #ifndef _INC_CDERR +// #define _INC_CDERR + +// #if _MSC_VER > 1000 +// #pragma once +// #endif + +enum : uint { CDERR_DIALOGFAILURE = 0xFFFF } + +enum : uint { CDERR_GENERALCODES = 0x0000 } +enum : uint { CDERR_STRUCTSIZE = 0x0001 } +enum : uint { CDERR_INITIALIZATION = 0x0002 } +enum : uint { CDERR_NOTEMPLATE = 0x0003 } +enum : uint { CDERR_NOHINSTANCE = 0x0004 } +enum : uint { CDERR_LOADSTRFAILURE = 0x0005 } +enum : uint { CDERR_FINDRESFAILURE = 0x0006 } +enum : uint { CDERR_LOADRESFAILURE = 0x0007 } +enum : uint { CDERR_LOCKRESFAILURE = 0x0008 } +enum : uint { CDERR_MEMALLOCFAILURE = 0x0009 } +enum : uint { CDERR_MEMLOCKFAILURE = 0x000A } +enum : uint { CDERR_NOHOOK = 0x000B } +enum : uint { CDERR_REGISTERMSGFAIL = 0x000C } + +enum : uint { PDERR_PRINTERCODES = 0x1000 } +enum : uint { PDERR_SETUPFAILURE = 0x1001 } +enum : uint { PDERR_PARSEFAILURE = 0x1002 } +enum : uint { PDERR_RETDEFFAILURE = 0x1003 } +enum : uint { PDERR_LOADDRVFAILURE = 0x1004 } +enum : uint { PDERR_GETDEVMODEFAIL = 0x1005 } +enum : uint { PDERR_INITFAILURE = 0x1006 } +enum : uint { PDERR_NODEVICES = 0x1007 } +enum : uint { PDERR_NODEFAULTPRN = 0x1008 } +enum : uint { PDERR_DNDMMISMATCH = 0x1009 } +enum : uint { PDERR_CREATEICFAILURE = 0x100A } +enum : uint { PDERR_PRINTERNOTFOUND = 0x100B } +enum : uint { PDERR_DEFAULTDIFFERENT = 0x100C } + +enum : uint { CFERR_CHOOSEFONTCODES = 0x2000 } +enum : uint { CFERR_NOFONTS = 0x2001 } +enum : uint { CFERR_MAXLESSTHANMIN = 0x2002 } + +enum : uint { FNERR_FILENAMECODES = 0x3000 } +enum : uint { FNERR_SUBCLASSFAILURE = 0x3001 } +enum : uint { FNERR_INVALIDFILENAME = 0x3002 } +enum : uint { FNERR_BUFFERTOOSMALL = 0x3003 } + +enum : uint { FRERR_FINDREPLACECODES = 0x4000 } +enum : uint { FRERR_BUFFERLENGTHZERO = 0x4001 } + +enum : uint { CCERR_CHOOSECOLORCODES = 0x5000 } + +// #endif /* !_INC_CDERR */ +// ---- + +// #ifndef _INC_COMMDLG +// #define _INC_COMMDLG + +// #if(WINVER >= 0x0500) + +// #ifdef DEFINE_GUID + +// ... + +// ... + +// #endif + +// #endif /* WINVER >= 0x0500 */ + +// #ifndef GUID_DEFS_ONLY + +// #include + +// #if !defined(_WIN64) +align(1): +// #endif + +// #ifdef __cplusplus +// extern "C" { /* Assume C declarations for C++ */ +// #endif /* __cplusplus */ + +// #ifndef WINCOMMDLGAPI +// #if !defined(_COMDLG32_) +// #define WINCOMMDLGAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #endif // WINCOMMDLGAPI + +// #if(WINVER >= 0x0400) +// #ifndef SNDMSG +// #ifdef __cplusplus +// #ifndef _MAC +// #define SNDMSG ::SendMessage +// #else +// #... +// #endif +// #else /* __cplusplus */ +// #ifndef _MAC +// #... +// #else +// #... +// #endif +// #endif /* __cplusplus */ +// #endif // ifndef SNDMSG +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _MAC +// ... +// #endif + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPOFNHOOKPROC; + +// #ifndef CDSIZEOF_STRUCT +// #define CDSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member)) +// #endif + +// #ifndef DUMMYUNIONNAME +// #ifdef NONAMELESSUNION +// #... +// #endif // NONAMELESSUNION +// #endif // DUMMYUNIONNAME + +struct tagOFN_NT4A { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias tagOFN_NT4A OPENFILENAME_NT4A; +alias tagOFN_NT4A* LPOPENFILENAME_NT4A; + +struct tagOFN_NT4W { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias tagOFN_NT4W OPENFILENAME_NT4W; +alias tagOFN_NT4W* LPOPENFILENAME_NT4W; + +// #ifdef UNICODE +alias OPENFILENAME_NT4W OPENFILENAME_NT4; +alias LPOPENFILENAME_NT4W LPOPENFILENAME_NT4; +// #else +// ... +// #endif // UNICODE + +struct tagOFNA { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpstrFilter; + LPSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPSTR lpstrFile; + DWORD nMaxFile; + LPSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCSTR lpstrInitialDir; + LPCSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +// #ifdef _MAC +// ... +// #endif +// #if (_WIN32_WINNT >= 0x0500) + void * pvReserved; + DWORD dwReserved; + DWORD FlagsEx; +// #endif // (_WIN32_WINNT >= 0x0500) +} +alias tagOFNA OPENFILENAMEA; +alias tagOFNA* LPOPENFILENAMEA; + +struct tagOFNW { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpstrFilter; + LPWSTR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + LPWSTR lpstrFile; + DWORD nMaxFile; + LPWSTR lpstrFileTitle; + DWORD nMaxFileTitle; + LPCWSTR lpstrInitialDir; + LPCWSTR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + LPCWSTR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +// #ifdef _MAC +// ... +// #endif +// #if (_WIN32_WINNT >= 0x0500) + void * pvReserved; + DWORD dwReserved; + DWORD FlagsEx; +// #endif // (_WIN32_WINNT >= 0x0500) +} +alias tagOFNW OPENFILENAMEW; +alias tagOFNW* LPOPENFILENAMEW; + +// #ifdef UNICODE +alias OPENFILENAMEW OPENFILENAME; +alias LPOPENFILENAMEW LPOPENFILENAME; +// #else +// ... +// #endif // UNICODE + +// #if (_WIN32_WINNT >= 0x0500) +// #define OPENFILENAME_SIZE_VERSION_400A CDSIZEOF_STRUCT(OPENFILENAMEA,lpTemplateName) +// #define OPENFILENAME_SIZE_VERSION_400W CDSIZEOF_STRUCT(OPENFILENAMEW,lpTemplateName) +// #ifdef UNICODE +// #define OPENFILENAME_SIZE_VERSION_400 OPENFILENAME_SIZE_VERSION_400W +// #else +// #... +// #endif // !UNICODE +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL GetOpenFileNameA(LPOPENFILENAMEA); +extern(Windows) export BOOL GetOpenFileNameW(LPOPENFILENAMEW); +// #ifdef UNICODE +alias GetOpenFileNameW GetOpenFileName; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL GetSaveFileNameA(LPOPENFILENAMEA); +extern(Windows) export BOOL GetSaveFileNameW(LPOPENFILENAMEW); +// #ifdef UNICODE +alias GetSaveFileNameW GetSaveFileName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export short GetFileTitleA(LPCSTR, LPSTR, WORD); +extern(Windows) export short GetFileTitleW(LPCWSTR, LPWSTR, WORD); +// #ifdef UNICODE +alias GetFileTitleW GetFileTitle; +// #else +// #... +// #endif // !UNICODE + +enum : uint { OFN_READONLY = 0x00000001 } +enum : uint { OFN_OVERWRITEPROMPT = 0x00000002 } +enum : uint { OFN_HIDEREADONLY = 0x00000004 } +enum : uint { OFN_NOCHANGEDIR = 0x00000008 } +enum : uint { OFN_SHOWHELP = 0x00000010 } +enum : uint { OFN_ENABLEHOOK = 0x00000020 } +enum : uint { OFN_ENABLETEMPLATE = 0x00000040 } +enum : uint { OFN_ENABLETEMPLATEHANDLE = 0x00000080 } +enum : uint { OFN_NOVALIDATE = 0x00000100 } +enum : uint { OFN_ALLOWMULTISELECT = 0x00000200 } +enum : uint { OFN_EXTENSIONDIFFERENT = 0x00000400 } +enum : uint { OFN_PATHMUSTEXIST = 0x00000800 } +enum : uint { OFN_FILEMUSTEXIST = 0x00001000 } +enum : uint { OFN_CREATEPROMPT = 0x00002000 } +enum : uint { OFN_SHAREAWARE = 0x00004000 } +enum : uint { OFN_NOREADONLYRETURN = 0x00008000 } +enum : uint { OFN_NOTESTFILECREATE = 0x00010000 } +enum : uint { OFN_NONETWORKBUTTON = 0x00020000 } +enum : uint { OFN_NOLONGNAMES = 0x00040000 } +// #if(WINVER >= 0x0400) +enum : uint { OFN_EXPLORER = 0x00080000 } +enum : uint { OFN_NODEREFERENCELINKS = 0x00100000 } +enum : uint { OFN_LONGNAMES = 0x00200000 } +enum : uint { OFN_ENABLEINCLUDENOTIFY = 0x00400000 } +enum : uint { OFN_ENABLESIZING = 0x00800000 } +// #endif /* WINVER >= 0x0400 */ +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { OFN_DONTADDTORECENT = 0x02000000 } +enum : uint { OFN_FORCESHOWHIDDEN = 0x10000000 } +// #endif // (_WIN32_WINNT >= 0x0500) + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { OFN_EX_NOPLACESBAR = 0x00000001 } +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { OFN_SHAREFALLTHROUGH = 2 } +enum : uint { OFN_SHARENOWARN = 1 } +enum : uint { OFN_SHAREWARN = 0 } + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPCCHOOKPROC; + +// #if(WINVER >= 0x0400) + +struct _OFNOTIFYA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPSTR pszFile; +} +alias _OFNOTIFYA OFNOTIFYA; +alias _OFNOTIFYA* LPOFNOTIFYA; + +struct _OFNOTIFYW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPWSTR pszFile; +} +alias _OFNOTIFYW OFNOTIFYW; +alias _OFNOTIFYW* LPOFNOTIFYW; + +// #ifdef UNICODE +alias OFNOTIFYW OFNOTIFY; +alias LPOFNOTIFYW LPOFNOTIFY; +// #else +// ... +// #endif // UNICODE + +struct _OFNOTIFYEXA { + NMHDR hdr; + LPOPENFILENAMEA lpOFN; + LPVOID psf; + LPVOID pidl; +} +alias _OFNOTIFYEXA OFNOTIFYEXA; +alias _OFNOTIFYEXA* LPOFNOTIFYEXA; + +struct _OFNOTIFYEXW { + NMHDR hdr; + LPOPENFILENAMEW lpOFN; + LPVOID psf; + LPVOID pidl; +} +alias _OFNOTIFYEXW OFNOTIFYEXW; +alias _OFNOTIFYEXW* LPOFNOTIFYEXW; + +// #ifdef UNICODE +alias OFNOTIFYEXW OFNOTIFYEX; +alias LPOFNOTIFYEXW LPOFNOTIFYEX; +// #else +// ... +// #endif // UNICODE + +const uint CDN_FIRST = 0U-601U; +const uint CDN_LAST = 0U-699U; + +const uint CDN_INITDONE = CDN_FIRST - 0x0000; +const uint CDN_SELCHANGE = CDN_FIRST - 0x0001; +const uint CDN_FOLDERCHANGE = CDN_FIRST - 0x0002; +const uint CDN_SHAREVIOLATION = CDN_FIRST - 0x0003; +const uint CDN_HELP = CDN_FIRST - 0x0004; +const uint CDN_FILEOK = CDN_FIRST - 0x0005; +const uint CDN_TYPECHANGE = CDN_FIRST - 0x0006; +const uint CDN_INCLUDEITEM = CDN_FIRST - 0x0007; + +const uint CDM_FIRST = WM_USER + 100; +const uint CDM_LAST = WM_USER + 200; + +const uint CDM_GETSPEC = CDM_FIRST + 0x0000; +// #define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz) +// #define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz) +// #ifdef UNICODE +// #define CommDlg_OpenSave_GetSpec CommDlg_OpenSave_GetSpecW +// #else +// #... +// #endif // !UNICODE + +const uint CDM_GETFILEPATH = CDM_FIRST + 0x0001; +// #define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz) +// #define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz) +// #ifdef UNICODE +// #define CommDlg_OpenSave_GetFilePath CommDlg_OpenSave_GetFilePathW +// #else +// #... +// #endif // !UNICODE + +const uint CDM_GETFOLDERPATH = CDM_FIRST + 0x0002; +// #define CommDlg_OpenSave_GetFolderPathA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz) +// #define CommDlg_OpenSave_GetFolderPathW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz) +// #ifdef UNICODE +// #define CommDlg_OpenSave_GetFolderPath CommDlg_OpenSave_GetFolderPathW +// #else +// #... +// #endif // !UNICODE + +const uint CDM_GETFOLDERIDLIST = CDM_FIRST + 0x0003; +// #define CommDlg_OpenSave_GetFolderIDList(_hdlg, _pidl, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERIDLIST, (WPARAM)_cbmax, (LPARAM)(LPVOID)_pidl) + +const uint CDM_SETCONTROLTEXT = CDM_FIRST + 0x0004; +// #define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) (void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text) + +const uint CDM_HIDECONTROL = CDM_FIRST + 0x0005; +// #define CommDlg_OpenSave_HideControl(_hdlg, _id) (void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0) + +const uint CDM_SETDEFEXT = CDM_FIRST + 0x0006; +// #define CommDlg_OpenSave_SetDefExt(_hdlg, _pszext) (void)SNDMSG(_hdlg, CDM_SETDEFEXT, 0, (LPARAM)(LPSTR)_pszext) +// #endif /* WINVER >= 0x0400 */ + +// #ifndef _MAC +struct tagCHOOSECOLORA { + DWORD lStructSize; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF * lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias tagCHOOSECOLORA CHOOSECOLORA; +alias tagCHOOSECOLORA* LPCHOOSECOLORA; + +struct tagCHOOSECOLORW { + DWORD lStructSize; + HWND hwndOwner; + HWND hInstance; + COLORREF rgbResult; + COLORREF * lpCustColors; + DWORD Flags; + LPARAM lCustData; + LPCCHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias tagCHOOSECOLORW CHOOSECOLORW; +alias tagCHOOSECOLORW* LPCHOOSECOLORW; + +// #ifdef UNICODE +alias CHOOSECOLORW CHOOSECOLOR; +alias LPCHOOSECOLORW LPCHOOSECOLOR; +// #else +// ... +// #endif // UNICODE +// #else +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif //_MAC + +extern(Windows) export BOOL ChooseColorA(LPCHOOSECOLORA); +extern(Windows) export BOOL ChooseColorW(LPCHOOSECOLORW); +// #ifdef UNICODE +alias ChooseColorW ChooseColor; +// #else +// #... +// #endif // !UNICODE + +enum : uint { CC_RGBINIT = 0x00000001 } +enum : uint { CC_FULLOPEN = 0x00000002 } +enum : uint { CC_PREVENTFULLOPEN = 0x00000004 } +enum : uint { CC_SHOWHELP = 0x00000008 } +enum : uint { CC_ENABLEHOOK = 0x00000010 } +enum : uint { CC_ENABLETEMPLATE = 0x00000020 } +enum : uint { CC_ENABLETEMPLATEHANDLE = 0x00000040 } +// #if(WINVER >= 0x0400) +enum : uint { CC_SOLIDCOLOR = 0x00000080 } +enum : uint { CC_ANYCOLOR = 0x00000100 } +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPFRHOOKPROC; + +struct tagFINDREPLACEA { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + + DWORD Flags; + LPSTR lpstrFindWhat; + LPSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCSTR lpTemplateName; +} +alias tagFINDREPLACEA FINDREPLACEA; +alias tagFINDREPLACEA* LPFINDREPLACEA; + +struct tagFINDREPLACEW { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + + DWORD Flags; + LPWSTR lpstrFindWhat; + LPWSTR lpstrReplaceWith; + WORD wFindWhatLen; + WORD wReplaceWithLen; + LPARAM lCustData; + LPFRHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; +} +alias tagFINDREPLACEW FINDREPLACEW; +alias tagFINDREPLACEW* LPFINDREPLACEW; + +// #ifdef UNICODE +alias FINDREPLACEW FINDREPLACE; +alias LPFINDREPLACEW LPFINDREPLACE; +// #else +// ... +// #endif // UNICODE + +enum : uint { FR_DOWN = 0x00000001 } +enum : uint { FR_WHOLEWORD = 0x00000002 } +enum : uint { FR_MATCHCASE = 0x00000004 } +enum : uint { FR_FINDNEXT = 0x00000008 } +enum : uint { FR_REPLACE = 0x00000010 } +enum : uint { FR_REPLACEALL = 0x00000020 } +enum : uint { FR_DIALOGTERM = 0x00000040 } +enum : uint { FR_SHOWHELP = 0x00000080 } +enum : uint { FR_ENABLEHOOK = 0x00000100 } +enum : uint { FR_ENABLETEMPLATE = 0x00000200 } +enum : uint { FR_NOUPDOWN = 0x00000400 } +enum : uint { FR_NOMATCHCASE = 0x00000800 } +enum : uint { FR_NOWHOLEWORD = 0x00001000 } +enum : uint { FR_ENABLETEMPLATEHANDLE = 0x00002000 } +enum : uint { FR_HIDEUPDOWN = 0x00004000 } +enum : uint { FR_HIDEMATCHCASE = 0x00008000 } +enum : uint { FR_HIDEWHOLEWORD = 0x00010000 } +enum : uint { FR_RAW = 0x00020000 } +enum : uint { FR_MATCHDIAC = 0x20000000 } +enum : uint { FR_MATCHKASHIDA = 0x40000000 } +enum : uint { FR_MATCHALEFHAMZA = 0x80000000 } + +extern(Windows) export HWND FindTextA(LPFINDREPLACEA); +extern(Windows) export HWND FindTextW(LPFINDREPLACEW); +// #ifdef UNICODE +alias FindTextW FindText; +// #else +// #... +// #endif // !UNICODE +// #ifndef _MAC +extern(Windows) export HWND ReplaceTextA(LPFINDREPLACEA); +extern(Windows) export HWND ReplaceTextW(LPFINDREPLACEW); +// #ifdef UNICODE +alias ReplaceTextW ReplaceText; +// #else +// #... +// #endif // !UNICODE +// #else +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE +// #endif + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPCFHOOKPROC; + +struct tagCHOOSEFONTA { + DWORD lStructSize; + HWND hwndOwner; + HDC hDC; + LPLOGFONTA lpLogFont; + INT iPointSize; + DWORD Flags; + COLORREF rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCSTR lpTemplateName; + HINSTANCE hInstance; + + LPSTR lpszStyle; + + WORD nFontType; + + WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; + +} +alias tagCHOOSEFONTA CHOOSEFONTA; +alias tagCHOOSEFONTA* LPCHOOSEFONTA; + +struct tagCHOOSEFONTW { + DWORD lStructSize; + HWND hwndOwner; + HDC hDC; + LPLOGFONTW lpLogFont; + INT iPointSize; + DWORD Flags; + COLORREF rgbColors; + LPARAM lCustData; + LPCFHOOKPROC lpfnHook; + LPCWSTR lpTemplateName; + HINSTANCE hInstance; + + LPWSTR lpszStyle; + + WORD nFontType; + + WORD ___MISSING_ALIGNMENT__; + INT nSizeMin; + INT nSizeMax; + +} +alias tagCHOOSEFONTW CHOOSEFONTW; +alias tagCHOOSEFONTW* LPCHOOSEFONTW; + +// #ifdef UNICODE +alias CHOOSEFONTW CHOOSEFONT; +alias LPCHOOSEFONTW LPCHOOSEFONT; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export BOOL ChooseFontA(LPCHOOSEFONTA); +extern(Windows) export BOOL ChooseFontW(LPCHOOSEFONTW); +// #ifdef UNICODE +alias ChooseFontW ChooseFont; +// #else +// #... +// #endif // !UNICODE + +enum : uint { CF_SCREENFONTS = 0x00000001 } +enum : uint { CF_PRINTERFONTS = 0x00000002 } +const uint CF_BOTH = CF_SCREENFONTS | CF_PRINTERFONTS; +enum : uint { CF_SHOWHELP = 0x00000004 } +enum : uint { CF_ENABLEHOOK = 0x00000008 } +enum : uint { CF_ENABLETEMPLATE = 0x00000010 } +enum : uint { CF_ENABLETEMPLATEHANDLE = 0x00000020 } +enum : uint { CF_INITTOLOGFONTSTRUCT = 0x00000040 } +enum : uint { CF_USESTYLE = 0x00000080 } +enum : uint { CF_EFFECTS = 0x00000100 } +enum : uint { CF_APPLY = 0x00000200 } +enum : uint { CF_ANSIONLY = 0x00000400 } +// #if(WINVER >= 0x0400) +alias CF_ANSIONLY CF_SCRIPTSONLY; +// #endif /* WINVER >= 0x0400 */ +enum : uint { CF_NOVECTORFONTS = 0x00000800 } +alias CF_NOVECTORFONTS CF_NOOEMFONTS; +enum : uint { CF_NOSIMULATIONS = 0x00001000 } +enum : uint { CF_LIMITSIZE = 0x00002000 } +enum : uint { CF_FIXEDPITCHONLY = 0x00004000 } +enum : uint { CF_WYSIWYG = 0x00008000 } +enum : uint { CF_FORCEFONTEXIST = 0x00010000 } +enum : uint { CF_SCALABLEONLY = 0x00020000 } +enum : uint { CF_TTONLY = 0x00040000 } +enum : uint { CF_NOFACESEL = 0x00080000 } +enum : uint { CF_NOSTYLESEL = 0x00100000 } +enum : uint { CF_NOSIZESEL = 0x00200000 } +// #if(WINVER >= 0x0400) +enum : uint { CF_SELECTSCRIPT = 0x00400000 } +enum : uint { CF_NOSCRIPTSEL = 0x00800000 } +enum : uint { CF_NOVERTFONTS = 0x01000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SIMULATED_FONTTYPE = 0x8000 } +enum : uint { PRINTER_FONTTYPE = 0x4000 } +enum : uint { SCREEN_FONTTYPE = 0x2000 } +enum : uint { BOLD_FONTTYPE = 0x0100 } +enum : uint { ITALIC_FONTTYPE = 0x0200 } +enum : uint { REGULAR_FONTTYPE = 0x0400 } + +// #ifdef WINNT +// #... +// #... +// #... +// #endif + +const uint WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1; +const uint WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101; +const uint WM_CHOOSEFONT_SETFLAGS = WM_USER + 102; + +const char[] LBSELCHSTRINGA = "commdlg_LBSelChangedNotify"; +const char[] SHAREVISTRINGA = "commdlg_ShareViolation"; +const char[] FILEOKSTRINGA = "commdlg_FileNameOK"; +const char[] COLOROKSTRINGA = "commdlg_ColorOK"; +const char[] SETRGBSTRINGA = "commdlg_SetRGBColor"; +const char[] HELPMSGSTRINGA = "commdlg_help"; +const char[] FINDMSGSTRINGA = "commdlg_FindReplace"; + +const wchar[] LBSELCHSTRINGW = "commdlg_LBSelChangedNotify"; +const wchar[] SHAREVISTRINGW = "commdlg_ShareViolation"; +const wchar[] FILEOKSTRINGW = "commdlg_FileNameOK"; +const wchar[] COLOROKSTRINGW = "commdlg_ColorOK"; +const wchar[] SETRGBSTRINGW = "commdlg_SetRGBColor"; +const wchar[] HELPMSGSTRINGW = "commdlg_help"; +const wchar[] FINDMSGSTRINGW = "commdlg_FindReplace"; + +// #ifdef UNICODE +alias LBSELCHSTRINGW LBSELCHSTRING; +alias SHAREVISTRINGW SHAREVISTRING; +alias FILEOKSTRINGW FILEOKSTRING; +alias COLOROKSTRINGW COLOROKSTRING; +alias SETRGBSTRINGW SETRGBSTRING; +alias HELPMSGSTRINGW HELPMSGSTRING; +alias FINDMSGSTRINGW FINDMSGSTRING; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +enum { CD_LBSELNOITEMS = -1 } +enum : uint { CD_LBSELCHANGE = 0 } +enum : uint { CD_LBSELSUB = 1 } +enum : uint { CD_LBSELADD = 2 } + +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPPRINTHOOKPROC; +extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPSETUPHOOKPROC; + +struct tagPDA { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + LPARAM lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCSTR lpPrintTemplateName; + LPCSTR lpSetupTemplateName; + HGLOBAL hPrintTemplate; + HGLOBAL hSetupTemplate; +} +alias tagPDA PRINTDLGA; +alias tagPDA* LPPRINTDLGA; + +struct tagPDW { + DWORD lStructSize; + HWND hwndOwner; + HGLOBAL hDevMode; + HGLOBAL hDevNames; + HDC hDC; + DWORD Flags; + WORD nFromPage; + WORD nToPage; + WORD nMinPage; + WORD nMaxPage; + WORD nCopies; + HINSTANCE hInstance; + LPARAM lCustData; + LPPRINTHOOKPROC lpfnPrintHook; + LPSETUPHOOKPROC lpfnSetupHook; + LPCWSTR lpPrintTemplateName; + LPCWSTR lpSetupTemplateName; + HGLOBAL hPrintTemplate; + HGLOBAL hSetupTemplate; +} +alias tagPDW PRINTDLGW; +alias tagPDW* LPPRINTDLGW; + +// #ifdef UNICODE +alias PRINTDLGW PRINTDLG; +alias LPPRINTDLGW LPPRINTDLG; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export BOOL PrintDlgA(LPPRINTDLGA); +extern(Windows) export BOOL PrintDlgW(LPPRINTDLGW); +// #ifdef UNICODE +alias PrintDlgW PrintDlg; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) + +// #ifdef STDMETHOD + +// #... +// #... + +// ... + +// ... + +// #... +// #... + +// ... + +// ... + +// ... + +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #endif + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { PD_ALLPAGES = 0x00000000 } +enum : uint { PD_SELECTION = 0x00000001 } +enum : uint { PD_PAGENUMS = 0x00000002 } +enum : uint { PD_NOSELECTION = 0x00000004 } +enum : uint { PD_NOPAGENUMS = 0x00000008 } +enum : uint { PD_COLLATE = 0x00000010 } +enum : uint { PD_PRINTTOFILE = 0x00000020 } +enum : uint { PD_PRINTSETUP = 0x00000040 } +enum : uint { PD_NOWARNING = 0x00000080 } +enum : uint { PD_RETURNDC = 0x00000100 } +enum : uint { PD_RETURNIC = 0x00000200 } +enum : uint { PD_RETURNDEFAULT = 0x00000400 } +enum : uint { PD_SHOWHELP = 0x00000800 } +enum : uint { PD_ENABLEPRINTHOOK = 0x00001000 } +enum : uint { PD_ENABLESETUPHOOK = 0x00002000 } +enum : uint { PD_ENABLEPRINTTEMPLATE = 0x00004000 } +enum : uint { PD_ENABLESETUPTEMPLATE = 0x00008000 } +enum : uint { PD_ENABLEPRINTTEMPLATEHANDLE = 0x00010000 } +enum : uint { PD_ENABLESETUPTEMPLATEHANDLE = 0x00020000 } +enum : uint { PD_USEDEVMODECOPIES = 0x00040000 } +enum : uint { PD_USEDEVMODECOPIESANDCOLLATE = 0x00040000 } +enum : uint { PD_DISABLEPRINTTOFILE = 0x00080000 } +enum : uint { PD_HIDEPRINTTOFILE = 0x00100000 } +enum : uint { PD_NONETWORKBUTTON = 0x00200000 } +// #if(WINVER >= 0x0500) +enum : uint { PD_CURRENTPAGE = 0x00400000 } +enum : uint { PD_NOCURRENTPAGE = 0x00800000 } +enum : uint { PD_EXCLUSIONFLAGS = 0x01000000 } +enum : uint { PD_USELARGETEMPLATE = 0x10000000 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) + +const uint PD_EXCL_COPIESANDCOLLATE = DM_COPIES | DM_COLLATE; + +enum : uint { START_PAGE_GENERAL = 0xffffffff } + +enum : uint { PD_RESULT_CANCEL = 0 } +enum : uint { PD_RESULT_PRINT = 1 } +enum : uint { PD_RESULT_APPLY = 2 } + +// #endif /* WINVER >= 0x0500 */ + +struct tagDEVNAMES { + WORD wDriverOffset; + WORD wDeviceOffset; + WORD wOutputOffset; + WORD wDefault; +} +alias tagDEVNAMES DEVNAMES; +alias tagDEVNAMES* LPDEVNAMES; + +enum : uint { DN_DEFAULTPRN = 0x0001 } + +extern(Windows) export DWORD CommDlgExtendedError(); + +// #if(WINVER >= 0x0400) +const uint WM_PSD_PAGESETUPDLG = WM_USER ; +const uint WM_PSD_FULLPAGERECT = WM_USER+1; +const uint WM_PSD_MINMARGINRECT = WM_USER+2; +const uint WM_PSD_MARGINRECT = WM_USER+3; +const uint WM_PSD_GREEKTEXTRECT = WM_USER+4; +const uint WM_PSD_ENVSTAMPRECT = WM_USER+5; +const uint WM_PSD_YAFULLPAGERECT = WM_USER+6; + +extern(Windows) alias UINT_PTR function( HWND, UINT, WPARAM, LPARAM ) LPPAGEPAINTHOOK; +extern(Windows) alias UINT_PTR function( HWND, UINT, WPARAM, LPARAM ) LPPAGESETUPHOOK; + +struct tagPSDA { + DWORD lStructSize; + 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 tagPSDA PAGESETUPDLGA; +alias tagPSDA* LPPAGESETUPDLGA; + +struct tagPSDW { + DWORD lStructSize; + 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 tagPSDW PAGESETUPDLGW; +alias tagPSDW* LPPAGESETUPDLGW; + +// #ifdef UNICODE +alias PAGESETUPDLGW PAGESETUPDLG; +alias LPPAGESETUPDLGW LPPAGESETUPDLG; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export BOOL PageSetupDlgA( LPPAGESETUPDLGA ); +extern(Windows) export BOOL PageSetupDlgW( LPPAGESETUPDLGW ); +// #ifdef UNICODE +alias PageSetupDlgW PageSetupDlg; +// #else +// #... +// #endif // !UNICODE + +enum : uint { PSD_DEFAULTMINMARGINS = 0x00000000 } +enum : uint { PSD_INWININIINTLMEASURE = 0x00000000 } + +enum : uint { PSD_MINMARGINS = 0x00000001 } +enum : uint { PSD_MARGINS = 0x00000002 } +enum : uint { PSD_INTHOUSANDTHSOFINCHES = 0x00000004 } +enum : uint { PSD_INHUNDREDTHSOFMILLIMETERS = 0x00000008 } +enum : uint { PSD_DISABLEMARGINS = 0x00000010 } +enum : uint { PSD_DISABLEPRINTER = 0x00000020 } +enum : uint { PSD_NOWARNING = 0x00000080 } +enum : uint { PSD_DISABLEORIENTATION = 0x00000100 } +enum : uint { PSD_RETURNDEFAULT = 0x00000400 } +enum : uint { PSD_DISABLEPAPER = 0x00000200 } +enum : uint { PSD_SHOWHELP = 0x00000800 } +enum : uint { PSD_ENABLEPAGESETUPHOOK = 0x00002000 } +enum : uint { PSD_ENABLEPAGESETUPTEMPLATE = 0x00008000 } +enum : uint { PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x00020000 } +enum : uint { PSD_ENABLEPAGEPAINTHOOK = 0x00040000 } +enum : uint { PSD_DISABLEPAGEPAINTING = 0x00080000 } +enum : uint { PSD_NONETWORKBUTTON = 0x00200000 } +// #endif /* WINVER >= 0x0400 */ + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED + +// #if !defined(ISOLATION_AWARE_INLINE) +// #if defined(__cplusplus) +// #... +// #else +// #... +// #endif +// #endif + +// ... + +// ... +// #if defined(STDMETHOD) && (WINVER >= 0x0500) +// ... +// #endif /* defined(STDMETHOD) && (WINVER >= 0x0500) */ +// ... + +// #if defined(UNICODE) + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #else /* UNICODE */ + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif /* UNICODE */ + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if defined(STDMETHOD) && (WINVER >= 0x0500) + +// ... + +// ... + +// ... + +// ... + +// #endif /* defined(STDMETHOD) && (WINVER >= 0x0500) */ + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #if !defined(_WIN64) +align: +// #endif +// #endif /* GUID_DEFS_ONLY */ +// #endif /* !_INC_COMMDLG */ + ADDED src/win32/dde.d Index: src/win32/dde.d ================================================================== --- src/win32/dde.d +++ src/win32/dde.d @@ -0,0 +1,134 @@ +module win32.dde; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + + +// #ifndef _DDEHEADER_INCLUDED_ +// #define _DDEHEADER_INCLUDED_ + +// #if _MSC_VER > 1000 +// #pragma once +// #endif + +// #ifndef _WINDEF_ +import win32.windef; +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +enum : uint { WM_DDE_FIRST = 0x03E0 } +const uint WM_DDE_INITIATE = WM_DDE_FIRST; +const uint WM_DDE_TERMINATE = WM_DDE_FIRST+1; +const uint WM_DDE_ADVISE = WM_DDE_FIRST+2; +const uint WM_DDE_UNADVISE = WM_DDE_FIRST+3; +const uint WM_DDE_ACK = WM_DDE_FIRST+4; +const uint WM_DDE_DATA = WM_DDE_FIRST+5; +const uint WM_DDE_REQUEST = WM_DDE_FIRST+6; +const uint WM_DDE_POKE = WM_DDE_FIRST+7; +const uint WM_DDE_EXECUTE = WM_DDE_FIRST+8; +const uint WM_DDE_LAST = WM_DDE_FIRST+8; + +struct _0 { +// #ifndef _MAC +// unsigned short bAppReturnCode:8, +// reserved:6, +// fBusy:1, +// fAck:1; +// #else +// ... +// #endif +} +alias _0 DDEACK; + +struct _1 { +// #ifndef _MAC +// unsigned short reserved:14, +// fDeferUpd:1, +// fAckReq:1; +// #else +// ... +// #endif + short cfFormat; +} +alias _1 DDEADVISE; + +struct _2 { +// #ifndef _MAC +// unsigned short unused:12, +// fResponse:1, +// fRelease:1, +// reserved:1, +// fAckReq:1; +// #else +// ... +// #endif + short cfFormat; + BYTE Value[1]; +} +alias _2 DDEDATA; + +struct _3 { +// #ifndef _MAC +// unsigned short unused:13, + +// fRelease:1, +// fReserved:2; +// #else +// ... +// #endif + short cfFormat; + BYTE Value[1]; + +} +alias _3 DDEPOKE; + +struct _4 { +// #ifndef _MAC +// unsigned short unused:13, +// fRelease:1, +// fDeferUpd:1, +// fAckReq:1; +// #else +// ... +// #endif + short cfFormat; +} +alias _4 DDELN; + +struct _5 { +// #ifndef _MAC +// unsigned short unused:12, +// fAck:1, +// fRelease:1, +// fReserved:1, +// fAckReq:1; +// #else +// ... +// #endif + short cfFormat; + BYTE rgb[1]; +} +alias _5 DDEUP; + +extern(Windows) export BOOL DdeSetQualityOfService( + HWND hwndClient, + SECURITY_QUALITY_OF_SERVICE *pqosNew, + PSECURITY_QUALITY_OF_SERVICE pqosPrev); + +extern(Windows) export BOOL ImpersonateDdeClientWindow( + HWND hWndClient, + HWND hWndServer); + +extern(Windows) export LPARAM PackDDElParam(UINT msg, UINT_PTR uiLo, UINT_PTR uiHi); +extern(Windows) export BOOL UnpackDDElParam(UINT msg, LPARAM lParam, PUINT_PTR puiLo, PUINT_PTR puiHi); +extern(Windows) export BOOL FreeDDElParam(UINT msg, LPARAM lParam); +extern(Windows) export LPARAM ReuseDDElParam(LPARAM lParam, UINT msgIn, UINT msgOut, UINT_PTR uiLo, UINT_PTR uiHi); + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _DDEHEADER_INCLUDED_ ADDED src/win32/ddeml.d Index: src/win32/ddeml.d ================================================================== --- src/win32/ddeml.d +++ src/win32/ddeml.d @@ -0,0 +1,434 @@ +module win32.ddeml; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.windef; + +// #ifndef _INC_DDEMLH +// #define _INC_DDEMLH + +// #ifdef __cplusplus +// extern "C" { +// #endif /* __cplusplus */ + +alias void* HCONVLIST; +alias void* HCONV; +alias void* HSZ; +alias void* HDDEDATA; +// #define EXPENTRY CALLBACK + +struct tagHSZPAIR { + HSZ hszSvc; + HSZ hszTopic; +} +alias tagHSZPAIR HSZPAIR; + +alias HSZPAIR* PHSZPAIR; + +struct tagCONVCONTEXT { + UINT cb; + UINT wFlags; + UINT wCountryID; + int iCodePage; + DWORD dwLangID; + DWORD dwSecurity; + SECURITY_QUALITY_OF_SERVICE qos; +} +alias tagCONVCONTEXT CONVCONTEXT; + +alias CONVCONTEXT* PCONVCONTEXT; + +struct tagCONVINFO { + DWORD cb; + DWORD_PTR 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 tagCONVINFO CONVINFO; + +alias CONVINFO* PCONVINFO; + +enum : uint { XST_NULL = 0 } +enum : uint { XST_INCOMPLETE = 1 } +enum : uint { XST_CONNECTED = 2 } +enum : uint { XST_INIT1 = 3 } +enum : uint { XST_INIT2 = 4 } +enum : uint { XST_REQSENT = 5 } +enum : uint { XST_DATARCVD = 6 } +enum : uint { XST_POKESENT = 7 } +enum : uint { XST_POKEACKRCVD = 8 } +enum : uint { XST_EXECSENT = 9 } +enum : uint { XST_EXECACKRCVD = 10 } +enum : uint { XST_ADVSENT = 11 } +enum : uint { XST_UNADVSENT = 12 } +enum : uint { XST_ADVACKRCVD = 13 } +enum : uint { XST_UNADVACKRCVD = 14 } +enum : uint { XST_ADVDATASENT = 15 } +enum : uint { XST_ADVDATAACKRCVD = 16 } + +enum : uint { CADV_LATEACK = 0xFFFF } + +enum : uint { ST_CONNECTED = 0x0001 } +enum : uint { ST_ADVISE = 0x0002 } +enum : uint { ST_ISLOCAL = 0x0004 } +enum : uint { ST_BLOCKED = 0x0008 } +enum : uint { ST_CLIENT = 0x0010 } +enum : uint { ST_TERMINATED = 0x0020 } +enum : uint { ST_INLIST = 0x0040 } +enum : uint { ST_BLOCKNEXT = 0x0080 } +enum : uint { ST_ISSELF = 0x0100 } + +enum : uint { DDE_FACK = 0x8000 } +enum : uint { DDE_FBUSY = 0x4000 } +enum : uint { DDE_FDEFERUPD = 0x4000 } +enum : uint { DDE_FACKREQ = 0x8000 } +enum : uint { DDE_FRELEASE = 0x2000 } +enum : uint { DDE_FREQUESTED = 0x1000 } +enum : uint { DDE_FAPPSTATUS = 0x00ff } +enum : uint { DDE_FNOTPROCESSED = 0x0000 } + +const uint DDE_FACKRESERVED = ~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS); +const uint DDE_FADVRESERVED = ~(DDE_FACKREQ | DDE_FDEFERUPD); +const uint DDE_FDATRESERVED = ~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED); +const uint DDE_FPOKRESERVED = ~(DDE_FRELEASE); + +enum : uint { MSGF_DDEMGR = 0x8001 } + +enum : uint { CP_WINANSI = 1004 } +enum : uint { CP_WINUNICODE = 1200 } +// #ifdef UNICODE +alias CP_WINUNICODE CP_WINNEUTRAL; +// #else // !UNICODE +// #... +// #endif // !UNICODE + +enum : uint { XTYPF_NOBLOCK = 0x0002 } +enum : uint { XTYPF_NODATA = 0x0004 } +enum : uint { XTYPF_ACKREQ = 0x0008 } + +enum : uint { XCLASS_MASK = 0xFC00 } +enum : uint { XCLASS_BOOL = 0x1000 } +enum : uint { XCLASS_DATA = 0x2000 } +enum : uint { XCLASS_FLAGS = 0x4000 } +enum : uint { XCLASS_NOTIFICATION = 0x8000 } + +const uint XTYP_ERROR = 0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK ; +const uint XTYP_ADVDATA = 0x0010 | XCLASS_FLAGS ; +const uint XTYP_ADVREQ = 0x0020 | XCLASS_DATA | XTYPF_NOBLOCK ; +const uint XTYP_ADVSTART = 0x0030 | XCLASS_BOOL ; +const uint XTYP_ADVSTOP = 0x0040 | XCLASS_NOTIFICATION; +const uint XTYP_EXECUTE = 0x0050 | XCLASS_FLAGS ; +const uint XTYP_CONNECT = 0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK; +const uint XTYP_CONNECT_CONFIRM = 0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK; +const uint XTYP_XACT_COMPLETE = 0x0080 | XCLASS_NOTIFICATION ; +const uint XTYP_POKE = 0x0090 | XCLASS_FLAGS ; +const uint XTYP_REGISTER = 0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK; +const uint XTYP_REQUEST = 0x00B0 | XCLASS_DATA ; +const uint XTYP_DISCONNECT = 0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK; +const uint XTYP_UNREGISTER = 0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK; +const uint XTYP_WILDCONNECT = 0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK; + +enum : uint { XTYP_MASK = 0x00F0 } +enum : uint { XTYP_SHIFT = 4 } + +enum : uint { TIMEOUT_ASYNC = 0xFFFFFFFF } + +enum : uint { QID_SYNC = 0xFFFFFFFF } + +// #ifdef UNICODE +const wchar[] SZDDESYS_TOPIC = "System"; +const wchar[] SZDDESYS_ITEM_TOPICS = "Topics"; +const wchar[] SZDDESYS_ITEM_SYSITEMS = "SysItems"; +const wchar[] SZDDESYS_ITEM_RTNMSG = "ReturnMessage"; +const wchar[] SZDDESYS_ITEM_STATUS = "Status"; +const wchar[] SZDDESYS_ITEM_FORMATS = "Formats"; +const wchar[] SZDDESYS_ITEM_HELP = "Help"; +const wchar[] SZDDE_ITEM_ITEMLIST = "TopicItemList"; +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +// typedef HDDEDATA CALLBACK FNCALLBACK(UINT wType, UINT wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2); +extern(Windows) alias HDDEDATA function(UINT wType, UINT wFmt, HCONV hConv, HSZ hsz1, HSZ hsz2, HDDEDATA hData, ULONG_PTR dwData1, ULONG_PTR dwData2) PFNCALLBACK; + +const HDDEDATA CBR_BLOCK = cast(HDDEDATA)-1; + +extern(Windows) export UINT DdeInitializeA( LPDWORD pidInst, PFNCALLBACK pfnCallback, + DWORD afCmd, DWORD ulRes); +extern(Windows) export UINT DdeInitializeW( LPDWORD pidInst, PFNCALLBACK pfnCallback, + DWORD afCmd, DWORD ulRes); +// #ifdef UNICODE +alias DdeInitializeW DdeInitialize; +// #else +// #... +// #endif // !UNICODE + +enum : uint { CBF_FAIL_SELFCONNECTIONS = 0x00001000 } +enum : uint { CBF_FAIL_CONNECTIONS = 0x00002000 } +enum : uint { CBF_FAIL_ADVISES = 0x00004000 } +enum : uint { CBF_FAIL_EXECUTES = 0x00008000 } +enum : uint { CBF_FAIL_POKES = 0x00010000 } +enum : uint { CBF_FAIL_REQUESTS = 0x00020000 } +enum : uint { CBF_FAIL_ALLSVRXACTIONS = 0x0003f000 } + +enum : uint { CBF_SKIP_CONNECT_CONFIRMS = 0x00040000 } +enum : uint { CBF_SKIP_REGISTRATIONS = 0x00080000 } +enum : uint { CBF_SKIP_UNREGISTRATIONS = 0x00100000 } +enum : uint { CBF_SKIP_DISCONNECTS = 0x00200000 } +enum : uint { CBF_SKIP_ALLNOTIFICATIONS = 0x003c0000 } + +enum : uint { APPCMD_CLIENTONLY = 0x00000010 } +enum : uint { APPCMD_FILTERINITS = 0x00000020 } +enum : uint { APPCMD_MASK = 0x00000FF0 } + +enum : uint { APPCLASS_STANDARD = 0x00000000 } +enum : uint { APPCLASS_MASK = 0x0000000F } + +extern(Windows) export BOOL DdeUninitialize( DWORD idInst); + +extern(Windows) export HCONVLIST DdeConnectList( DWORD idInst, HSZ hszService, HSZ hszTopic, + HCONVLIST hConvList, PCONVCONTEXT pCC); +extern(Windows) export HCONV DdeQueryNextServer( HCONVLIST hConvList, HCONV hConvPrev); +extern(Windows) export BOOL DdeDisconnectList( HCONVLIST hConvList); + +extern(Windows) export HCONV DdeConnect( DWORD idInst, HSZ hszService, HSZ hszTopic, + PCONVCONTEXT pCC); +extern(Windows) export BOOL DdeDisconnect( HCONV hConv); +extern(Windows) export HCONV DdeReconnect( HCONV hConv); +extern(Windows) export UINT DdeQueryConvInfo( HCONV hConv, DWORD idTransaction, PCONVINFO pConvInfo); +extern(Windows) export BOOL DdeSetUserHandle( HCONV hConv, DWORD id, DWORD_PTR hUser); +extern(Windows) export BOOL DdeAbandonTransaction( DWORD idInst, HCONV hConv, DWORD idTransaction); + +extern(Windows) export BOOL DdePostAdvise( DWORD idInst, HSZ hszTopic, HSZ hszItem); +extern(Windows) export BOOL DdeEnableCallback( DWORD idInst, HCONV hConv, UINT wCmd); +extern(Windows) export BOOL DdeImpersonateClient( HCONV hConv); + +enum : uint { EC_ENABLEALL = 0 } +alias ST_BLOCKNEXT EC_ENABLEONE; +alias ST_BLOCKED EC_DISABLE; +enum : uint { EC_QUERYWAITING = 2 } + +extern(Windows) export HDDEDATA DdeNameService( DWORD idInst, HSZ hsz1, HSZ hsz2, UINT afCmd); + +enum : uint { DNS_REGISTER = 0x0001 } +enum : uint { DNS_UNREGISTER = 0x0002 } +enum : uint { DNS_FILTERON = 0x0004 } +enum : uint { DNS_FILTEROFF = 0x0008 } + +extern(Windows) export HDDEDATA DdeClientTransaction( LPBYTE pData, DWORD cbData, + HCONV hConv, HSZ hszItem, UINT wFmt, UINT wType, + DWORD dwTimeout, LPDWORD pdwResult); + +extern(Windows) export HDDEDATA DdeCreateDataHandle( DWORD idInst, LPBYTE pSrc, DWORD cb, + DWORD cbOff, HSZ hszItem, UINT wFmt, UINT afCmd); +extern(Windows) export HDDEDATA DdeAddData( HDDEDATA hData, LPBYTE pSrc, DWORD cb, DWORD cbOff); +extern(Windows) export DWORD DdeGetData( HDDEDATA hData, LPBYTE pDst, DWORD cbMax, DWORD cbOff); +extern(Windows) export LPBYTE DdeAccessData( HDDEDATA hData, LPDWORD pcbDataSize); +extern(Windows) export BOOL DdeUnaccessData( HDDEDATA hData); +extern(Windows) export BOOL DdeFreeDataHandle( HDDEDATA hData); + +enum : uint { HDATA_APPOWNED = 0x0001 } + +extern(Windows) export UINT DdeGetLastError( DWORD idInst); + +enum : uint { DMLERR_NO_ERROR = 0 } + +enum : uint { DMLERR_FIRST = 0x4000 } + +enum : uint { DMLERR_ADVACKTIMEOUT = 0x4000 } +enum : uint { DMLERR_BUSY = 0x4001 } +enum : uint { DMLERR_DATAACKTIMEOUT = 0x4002 } +enum : uint { DMLERR_DLL_NOT_INITIALIZED = 0x4003 } +enum : uint { DMLERR_DLL_USAGE = 0x4004 } +enum : uint { DMLERR_EXECACKTIMEOUT = 0x4005 } +enum : uint { DMLERR_INVALIDPARAMETER = 0x4006 } +enum : uint { DMLERR_LOW_MEMORY = 0x4007 } +enum : uint { DMLERR_MEMORY_ERROR = 0x4008 } +enum : uint { DMLERR_NOTPROCESSED = 0x4009 } +enum : uint { DMLERR_NO_CONV_ESTABLISHED = 0x400a } +enum : uint { DMLERR_POKEACKTIMEOUT = 0x400b } +enum : uint { DMLERR_POSTMSG_FAILED = 0x400c } +enum : uint { DMLERR_REENTRANCY = 0x400d } +enum : uint { DMLERR_SERVER_DIED = 0x400e } +enum : uint { DMLERR_SYS_ERROR = 0x400f } +enum : uint { DMLERR_UNADVACKTIMEOUT = 0x4010 } +enum : uint { DMLERR_UNFOUND_QUEUE_ID = 0x4011 } + +enum : uint { DMLERR_LAST = 0x4011 } + +extern(Windows) export HSZ DdeCreateStringHandleA( DWORD idInst, LPCSTR psz, int iCodePage); +extern(Windows) export HSZ DdeCreateStringHandleW( DWORD idInst, LPCWSTR psz, int iCodePage); +// #ifdef UNICODE +alias DdeCreateStringHandleW DdeCreateStringHandle; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export DWORD DdeQueryStringA( DWORD idInst, HSZ hsz, LPSTR psz, DWORD cchMax, int iCodePage); +extern(Windows) export DWORD DdeQueryStringW( DWORD idInst, HSZ hsz, LPWSTR psz, DWORD cchMax, int iCodePage); +// #ifdef UNICODE +alias DdeQueryStringW DdeQueryString; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL DdeFreeStringHandle( DWORD idInst, HSZ hsz); +extern(Windows) export BOOL DdeKeepStringHandle( DWORD idInst, HSZ hsz); +extern(Windows) export int DdeCmpStringHandles( HSZ hsz1, HSZ hsz2); + +// #ifndef NODDEMLSPY + +struct tagDDEML_MSG_HOOK_DATA { + UINT_PTR uiLo; + UINT_PTR uiHi; + DWORD cbData; + DWORD Data[8]; +} +alias tagDDEML_MSG_HOOK_DATA DDEML_MSG_HOOK_DATA; +alias tagDDEML_MSG_HOOK_DATA* PDDEML_MSG_HOOK_DATA; + +struct tagMONMSGSTRUCT { + UINT cb; + HWND hwndTo; + DWORD dwTime; + HANDLE hTask; + UINT wMsg; + WPARAM wParam; + LPARAM lParam; + DDEML_MSG_HOOK_DATA dmhd; +} +alias tagMONMSGSTRUCT MONMSGSTRUCT; +alias tagMONMSGSTRUCT* PMONMSGSTRUCT; + +struct tagMONCBSTRUCT { + UINT cb; + 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 Data[8]; +} +alias tagMONCBSTRUCT MONCBSTRUCT; +alias tagMONCBSTRUCT* PMONCBSTRUCT; + +struct tagMONHSZSTRUCTA { + UINT cb; + BOOL fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + CHAR str[1]; +} +alias tagMONHSZSTRUCTA MONHSZSTRUCTA; +alias tagMONHSZSTRUCTA* PMONHSZSTRUCTA; + +struct tagMONHSZSTRUCTW { + UINT cb; + BOOL fsAction; + DWORD dwTime; + HSZ hsz; + HANDLE hTask; + WCHAR str[1]; +} +alias tagMONHSZSTRUCTW MONHSZSTRUCTW; +alias tagMONHSZSTRUCTW* PMONHSZSTRUCTW; + +// #ifdef UNICODE +alias MONHSZSTRUCTW MONHSZSTRUCT; +alias PMONHSZSTRUCTW PMONHSZSTRUCT; +// #else +// ... +// #endif // UNICODE + +enum : uint { MH_CREATE = 1 } +enum : uint { MH_KEEP = 2 } +enum : uint { MH_DELETE = 3 } +enum : uint { MH_CLEANUP = 4 } + +struct tagMONERRSTRUCT { + UINT cb; + UINT wLastError; + DWORD dwTime; + HANDLE hTask; +} +alias tagMONERRSTRUCT MONERRSTRUCT; +alias tagMONERRSTRUCT* PMONERRSTRUCT; + +struct tagMONLINKSTRUCT { + UINT cb; + DWORD dwTime; + HANDLE hTask; + BOOL fEstablished; + BOOL fNoData; + HSZ hszSvc; + HSZ hszTopic; + HSZ hszItem; + UINT wFmt; + BOOL fServer; + HCONV hConvServer; + HCONV hConvClient; +} +alias tagMONLINKSTRUCT MONLINKSTRUCT; +alias tagMONLINKSTRUCT* PMONLINKSTRUCT; + +struct tagMONCONVSTRUCT { + UINT cb; + BOOL fConnect; + DWORD dwTime; + HANDLE hTask; + HSZ hszSvc; + HSZ hszTopic; + HCONV hConvClient; + HCONV hConvServer; +} +alias tagMONCONVSTRUCT MONCONVSTRUCT; +alias tagMONCONVSTRUCT* PMONCONVSTRUCT; + +enum : uint { MAX_MONITORS = 4 } +enum : uint { APPCLASS_MONITOR = 0x00000001 } +const uint XTYP_MONITOR = 0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK; + +enum : uint { MF_HSZ_INFO = 0x01000000 } +enum : uint { MF_SENDMSGS = 0x02000000 } +enum : uint { MF_POSTMSGS = 0x04000000 } +enum : uint { MF_CALLBACKS = 0x08000000 } +enum : uint { MF_ERRORS = 0x10000000 } +enum : uint { MF_LINKS = 0x20000000 } +enum : uint { MF_CONV = 0x40000000 } + +enum : uint { MF_MASK = 0xFF000000 } +// #endif /* NODDEMLSPY */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #endif /* _INC_DDEMLH */ + ADDED src/win32/dlgs.d Index: src/win32/dlgs.d ================================================================== --- src/win32/dlgs.d +++ src/win32/dlgs.d @@ -0,0 +1,216 @@ +module win32.dlgs; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.windef; + +// #ifndef _DLGSH_INCLUDED_ +// #define _DLGSH_INCLUDED_ + +enum : uint { ctlFirst = 0x0400 } +enum : uint { ctlLast = 0x04ff } + +enum : uint { psh1 = 0x0400 } +enum : uint { psh2 = 0x0401 } +enum : uint { psh3 = 0x0402 } +enum : uint { psh4 = 0x0403 } +enum : uint { psh5 = 0x0404 } +enum : uint { psh6 = 0x0405 } +enum : uint { psh7 = 0x0406 } +enum : uint { psh8 = 0x0407 } +enum : uint { psh9 = 0x0408 } +enum : uint { psh10 = 0x0409 } +enum : uint { psh11 = 0x040a } +enum : uint { psh12 = 0x040b } +enum : uint { psh13 = 0x040c } +enum : uint { psh14 = 0x040d } +enum : uint { psh15 = 0x040e } +alias psh15 pshHelp; +enum : uint { psh16 = 0x040f } + +enum : uint { chx1 = 0x0410 } +enum : uint { chx2 = 0x0411 } +enum : uint { chx3 = 0x0412 } +enum : uint { chx4 = 0x0413 } +enum : uint { chx5 = 0x0414 } +enum : uint { chx6 = 0x0415 } +enum : uint { chx7 = 0x0416 } +enum : uint { chx8 = 0x0417 } +enum : uint { chx9 = 0x0418 } +enum : uint { chx10 = 0x0419 } +enum : uint { chx11 = 0x041a } +enum : uint { chx12 = 0x041b } +enum : uint { chx13 = 0x041c } +enum : uint { chx14 = 0x041d } +enum : uint { chx15 = 0x041e } +enum : uint { chx16 = 0x041f } + +enum : uint { rad1 = 0x0420 } +enum : uint { rad2 = 0x0421 } +enum : uint { rad3 = 0x0422 } +enum : uint { rad4 = 0x0423 } +enum : uint { rad5 = 0x0424 } +enum : uint { rad6 = 0x0425 } +enum : uint { rad7 = 0x0426 } +enum : uint { rad8 = 0x0427 } +enum : uint { rad9 = 0x0428 } +enum : uint { rad10 = 0x0429 } +enum : uint { rad11 = 0x042a } +enum : uint { rad12 = 0x042b } +enum : uint { rad13 = 0x042c } +enum : uint { rad14 = 0x042d } +enum : uint { rad15 = 0x042e } +enum : uint { rad16 = 0x042f } + +enum : uint { grp1 = 0x0430 } +enum : uint { grp2 = 0x0431 } +enum : uint { grp3 = 0x0432 } +enum : uint { grp4 = 0x0433 } +enum : uint { frm1 = 0x0434 } +enum : uint { frm2 = 0x0435 } +enum : uint { frm3 = 0x0436 } +enum : uint { frm4 = 0x0437 } +enum : uint { rct1 = 0x0438 } +enum : uint { rct2 = 0x0439 } +enum : uint { rct3 = 0x043a } +enum : uint { rct4 = 0x043b } +enum : uint { ico1 = 0x043c } +enum : uint { ico2 = 0x043d } +enum : uint { ico3 = 0x043e } +enum : uint { ico4 = 0x043f } + +enum : uint { stc1 = 0x0440 } +enum : uint { stc2 = 0x0441 } +enum : uint { stc3 = 0x0442 } +enum : uint { stc4 = 0x0443 } +enum : uint { stc5 = 0x0444 } +enum : uint { stc6 = 0x0445 } +enum : uint { stc7 = 0x0446 } +enum : uint { stc8 = 0x0447 } +enum : uint { stc9 = 0x0448 } +enum : uint { stc10 = 0x0449 } +enum : uint { stc11 = 0x044a } +enum : uint { stc12 = 0x044b } +enum : uint { stc13 = 0x044c } +enum : uint { stc14 = 0x044d } +enum : uint { stc15 = 0x044e } +enum : uint { stc16 = 0x044f } +enum : uint { stc17 = 0x0450 } +enum : uint { stc18 = 0x0451 } +enum : uint { stc19 = 0x0452 } +enum : uint { stc20 = 0x0453 } +enum : uint { stc21 = 0x0454 } +enum : uint { stc22 = 0x0455 } +enum : uint { stc23 = 0x0456 } +enum : uint { stc24 = 0x0457 } +enum : uint { stc25 = 0x0458 } +enum : uint { stc26 = 0x0459 } +enum : uint { stc27 = 0x045a } +enum : uint { stc28 = 0x045b } +enum : uint { stc29 = 0x045c } +enum : uint { stc30 = 0x045d } +enum : uint { stc31 = 0x045e } +enum : uint { stc32 = 0x045f } + +enum : uint { lst1 = 0x0460 } +enum : uint { lst2 = 0x0461 } +enum : uint { lst3 = 0x0462 } +enum : uint { lst4 = 0x0463 } +enum : uint { lst5 = 0x0464 } +enum : uint { lst6 = 0x0465 } +enum : uint { lst7 = 0x0466 } +enum : uint { lst8 = 0x0467 } +enum : uint { lst9 = 0x0468 } +enum : uint { lst10 = 0x0469 } +enum : uint { lst11 = 0x046a } +enum : uint { lst12 = 0x046b } +enum : uint { lst13 = 0x046c } +enum : uint { lst14 = 0x046d } +enum : uint { lst15 = 0x046e } +enum : uint { lst16 = 0x046f } + +enum : uint { cmb1 = 0x0470 } +enum : uint { cmb2 = 0x0471 } +enum : uint { cmb3 = 0x0472 } +enum : uint { cmb4 = 0x0473 } +enum : uint { cmb5 = 0x0474 } +enum : uint { cmb6 = 0x0475 } +enum : uint { cmb7 = 0x0476 } +enum : uint { cmb8 = 0x0477 } +enum : uint { cmb9 = 0x0478 } +enum : uint { cmb10 = 0x0479 } +enum : uint { cmb11 = 0x047a } +enum : uint { cmb12 = 0x047b } +enum : uint { cmb13 = 0x047c } +enum : uint { cmb14 = 0x047d } +enum : uint { cmb15 = 0x047e } +enum : uint { cmb16 = 0x047f } + +enum : uint { edt1 = 0x0480 } +enum : uint { edt2 = 0x0481 } +enum : uint { edt3 = 0x0482 } +enum : uint { edt4 = 0x0483 } +enum : uint { edt5 = 0x0484 } +enum : uint { edt6 = 0x0485 } +enum : uint { edt7 = 0x0486 } +enum : uint { edt8 = 0x0487 } +enum : uint { edt9 = 0x0488 } +enum : uint { edt10 = 0x0489 } +enum : uint { edt11 = 0x048a } +enum : uint { edt12 = 0x048b } +enum : uint { edt13 = 0x048c } +enum : uint { edt14 = 0x048d } +enum : uint { edt15 = 0x048e } +enum : uint { edt16 = 0x048f } + +enum : uint { scr1 = 0x0490 } +enum : uint { scr2 = 0x0491 } +enum : uint { scr3 = 0x0492 } +enum : uint { scr4 = 0x0493 } +enum : uint { scr5 = 0x0494 } +enum : uint { scr6 = 0x0495 } +enum : uint { scr7 = 0x0496 } +enum : uint { scr8 = 0x0497 } + +enum : uint { ctl1 = 0x04A0 } + +// #ifdef UNIX + +// #... +// #... + +// #... +// #... +// #... +// #endif + +enum : uint { FILEOPENORD = 1536 } +enum : uint { MULTIFILEOPENORD = 1537 } +enum : uint { PRINTDLGORD = 1538 } +enum : uint { PRNSETUPDLGORD = 1539 } +enum : uint { FINDDLGORD = 1540 } +enum : uint { REPLACEDLGORD = 1541 } +enum : uint { FONTDLGORD = 1542 } +enum : uint { FORMATDLGORD31 = 1543 } +enum : uint { FORMATDLGORD30 = 1544 } +enum : uint { RUNDLGORD = 1545 } + +// #if (WINVER >= 0x400) +enum : uint { PAGESETUPDLGORD = 1546 } +enum : uint { NEWFILEOPENORD = 1547 } +enum : uint { PRINTDLGEXORD = 1549 } +enum : uint { PAGESETUPDLGORDMOTIF = 1550 } +enum : uint { COLORMGMTDLGORD = 1551 } +enum : uint { NEWFILEOPENV2ORD = 1552 } +// #endif /* WINVER >= 0x400) */ + +struct tagCRGB { + BYTE bRed; + BYTE bGreen; + BYTE bBlue; + BYTE bExtra; +} +alias tagCRGB CRGB; + +// #endif // _DLGSH_INCLUDED_ ADDED src/win32/guiddef.d Index: src/win32/guiddef.d ================================================================== --- src/win32/guiddef.d +++ src/win32/guiddef.d @@ -0,0 +1,30 @@ +module win32.guiddef; +import win32.windef; + +// Handwriting... + +align(1) struct GUID +{ + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE Data4[8]; +} + +alias GUID CLSID; +alias GUID IID; +alias GUID* REFGUID; +alias GUID* REFCLSID; +alias GUID* REFIID; +alias CLSID* LPCLSID; +alias IID* LPIID; + +bit IsEqualGUID(in GUID rguid1, in GUID rguid2) +{ + return + (cast(uint*)&rguid1)[0] == (cast(uint*)&rguid2)[0] && + (cast(uint*)&rguid1)[1] == (cast(uint*)&rguid2)[1] && + (cast(uint*)&rguid1)[2] == (cast(uint*)&rguid2)[2] && + (cast(uint*)&rguid1)[3] == (cast(uint*)&rguid2)[3]; +} + ADDED src/win32/imm.d Index: src/win32/imm.d ================================================================== --- src/win32/imm.d +++ src/win32/imm.d @@ -0,0 +1,687 @@ +module win32.imm; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.windef; +import win32.winuser; + +// #ifndef _IMM_ +// #define _IMM_ + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef _IMM_SDK_DEFINED_ +// #define _IMM_SDK_DEFINED_ + +// #if (WINVER >= 0x040A) +alias void* HIMC; +alias void* HIMCC; +// #else +// ... +// #endif /* WINVER >= 0x040A */ + +alias HKL* LPHKL; +alias UINT* LPUINT; + +struct tagCOMPOSITIONFORM { + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias tagCOMPOSITIONFORM COMPOSITIONFORM; +alias tagCOMPOSITIONFORM* PCOMPOSITIONFORM; +alias tagCOMPOSITIONFORM* NPCOMPOSITIONFORM; +alias tagCOMPOSITIONFORM* LPCOMPOSITIONFORM; + +struct tagCANDIDATEFORM { + DWORD dwIndex; + DWORD dwStyle; + POINT ptCurrentPos; + RECT rcArea; +} +alias tagCANDIDATEFORM CANDIDATEFORM; +alias tagCANDIDATEFORM* PCANDIDATEFORM; +alias tagCANDIDATEFORM* NPCANDIDATEFORM; +alias tagCANDIDATEFORM* LPCANDIDATEFORM; + +struct tagCANDIDATELIST { + DWORD dwSize; + DWORD dwStyle; + DWORD dwCount; + DWORD dwSelection; + DWORD dwPageStart; + DWORD dwPageSize; + DWORD dwOffset[1]; +} +alias tagCANDIDATELIST CANDIDATELIST; +alias tagCANDIDATELIST* PCANDIDATELIST; +alias tagCANDIDATELIST* NPCANDIDATELIST; +alias tagCANDIDATELIST* LPCANDIDATELIST; + +struct tagREGISTERWORDA { + LPSTR lpReading; + LPSTR lpWord; +} +alias tagREGISTERWORDA REGISTERWORDA; +alias tagREGISTERWORDA* PREGISTERWORDA; +alias tagREGISTERWORDA* NPREGISTERWORDA; +alias tagREGISTERWORDA* LPREGISTERWORDA; + +struct tagREGISTERWORDW { + LPWSTR lpReading; + LPWSTR lpWord; +} +alias tagREGISTERWORDW REGISTERWORDW; +alias tagREGISTERWORDW* PREGISTERWORDW; +alias tagREGISTERWORDW* NPREGISTERWORDW; +alias tagREGISTERWORDW* LPREGISTERWORDW; + +// #ifdef UNICODE +alias REGISTERWORDW REGISTERWORD; +alias PREGISTERWORDW PREGISTERWORD; +alias NPREGISTERWORDW NPREGISTERWORD; +alias LPREGISTERWORDW LPREGISTERWORD; +// #else +// ... +// #endif // UNICODE + +// #if (WINVER >= 0x040A) + +struct tagRECONVERTSTRING { + DWORD dwSize; + DWORD dwVersion; + DWORD dwStrLen; + DWORD dwStrOffset; + DWORD dwCompStrLen; + DWORD dwCompStrOffset; + DWORD dwTargetStrLen; + DWORD dwTargetStrOffset; +} +alias tagRECONVERTSTRING RECONVERTSTRING; +alias tagRECONVERTSTRING* PRECONVERTSTRING; +alias tagRECONVERTSTRING* NPRECONVERTSTRING; +alias tagRECONVERTSTRING* LPRECONVERTSTRING; + +// #endif /* WINVER >= 0x040A */ + +enum : uint { STYLE_DESCRIPTION_SIZE = 32 } + +struct tagSTYLEBUFA { + DWORD dwStyle; + CHAR szDescription[STYLE_DESCRIPTION_SIZE]; +} +alias tagSTYLEBUFA STYLEBUFA; +alias tagSTYLEBUFA* PSTYLEBUFA; +alias tagSTYLEBUFA* NPSTYLEBUFA; +alias tagSTYLEBUFA* LPSTYLEBUFA; + +struct tagSTYLEBUFW { + DWORD dwStyle; + WCHAR szDescription[STYLE_DESCRIPTION_SIZE]; +} +alias tagSTYLEBUFW STYLEBUFW; +alias tagSTYLEBUFW* PSTYLEBUFW; +alias tagSTYLEBUFW* NPSTYLEBUFW; +alias tagSTYLEBUFW* LPSTYLEBUFW; + +// #ifdef UNICODE +alias STYLEBUFW STYLEBUF; +alias PSTYLEBUFW PSTYLEBUF; +alias NPSTYLEBUFW NPSTYLEBUF; +alias LPSTYLEBUFW LPSTYLEBUF; +// #else +// ... +// #endif // UNICODE + +// #if (WINVER >= 0x040A) + +enum : uint { IMEMENUITEM_STRING_SIZE = 80 } + +struct tagIMEMENUITEMINFOA { + UINT cbSize; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + CHAR szString[IMEMENUITEM_STRING_SIZE]; + HBITMAP hbmpItem; +} +alias tagIMEMENUITEMINFOA IMEMENUITEMINFOA; +alias tagIMEMENUITEMINFOA* PIMEMENUITEMINFOA; +alias tagIMEMENUITEMINFOA* NPIMEMENUITEMINFOA; +alias tagIMEMENUITEMINFOA* LPIMEMENUITEMINFOA; + +struct tagIMEMENUITEMINFOW { + UINT cbSize; + UINT fType; + UINT fState; + UINT wID; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + DWORD dwItemData; + WCHAR szString[IMEMENUITEM_STRING_SIZE]; + HBITMAP hbmpItem; +} +alias tagIMEMENUITEMINFOW IMEMENUITEMINFOW; +alias tagIMEMENUITEMINFOW* PIMEMENUITEMINFOW; +alias tagIMEMENUITEMINFOW* NPIMEMENUITEMINFOW; +alias tagIMEMENUITEMINFOW* LPIMEMENUITEMINFOW; + +// #ifdef UNICODE +alias IMEMENUITEMINFOW IMEMENUITEMINFO; +alias PIMEMENUITEMINFOW PIMEMENUITEMINFO; +alias NPIMEMENUITEMINFOW NPIMEMENUITEMINFO; +alias LPIMEMENUITEMINFOW LPIMEMENUITEMINFO; +// #else +// ... +// #endif // UNICODE + +struct tagIMECHARPOSITION { + DWORD dwSize; + DWORD dwCharPos; + POINT pt; + UINT cLineHeight; + RECT rcDocument; +} +alias tagIMECHARPOSITION IMECHARPOSITION; +alias tagIMECHARPOSITION* PIMECHARPOSITION; +alias tagIMECHARPOSITION* NPIMECHARPOSITION; +alias tagIMECHARPOSITION* LPIMECHARPOSITION; + +extern(Windows) alias BOOL function(HIMC, LPARAM) IMCENUMPROC; + +// #endif /* WINVER >= 0x040A */ + +extern(Windows) export HKL ImmInstallIMEA( LPCSTR lpszIMEFileName, LPCSTR lpszLayoutText); +extern(Windows) export HKL ImmInstallIMEW( LPCWSTR lpszIMEFileName, LPCWSTR lpszLayoutText); +// #ifdef UNICODE +alias ImmInstallIMEW ImmInstallIME; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HWND ImmGetDefaultIMEWnd( HWND); + +extern(Windows) export UINT ImmGetDescriptionA( HKL, LPSTR, UINT uBufLen); +extern(Windows) export UINT ImmGetDescriptionW( HKL, LPWSTR, UINT uBufLen); +// #ifdef UNICODE +alias ImmGetDescriptionW ImmGetDescription; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT ImmGetIMEFileNameA( HKL, LPSTR, UINT uBufLen); +extern(Windows) export UINT ImmGetIMEFileNameW( HKL, LPWSTR, UINT uBufLen); +// #ifdef UNICODE +alias ImmGetIMEFileNameW ImmGetIMEFileName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetProperty( HKL, DWORD); + +extern(Windows) export BOOL ImmIsIME( HKL); + +extern(Windows) export BOOL ImmSimulateHotKey( HWND, DWORD); + +extern(Windows) export HIMC ImmCreateContext(); +extern(Windows) export BOOL ImmDestroyContext( HIMC); +extern(Windows) export HIMC ImmGetContext( HWND); +extern(Windows) export BOOL ImmReleaseContext( HWND, HIMC); +extern(Windows) export HIMC ImmAssociateContext( HWND, HIMC); +// #if (WINVER >= 0x040A) +extern(Windows) export BOOL ImmAssociateContextEx( HWND, HIMC, DWORD); +// #endif /* WINVER >= 0x040A */ + +extern(Windows) export LONG ImmGetCompositionStringA( HIMC, DWORD, LPVOID, DWORD); +extern(Windows) export LONG ImmGetCompositionStringW( HIMC, DWORD, LPVOID, DWORD); +// #ifdef UNICODE +alias ImmGetCompositionStringW ImmGetCompositionString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ImmSetCompositionStringA( HIMC, DWORD dwIndex, LPVOID lpComp, DWORD, LPVOID lpRead, DWORD); +extern(Windows) export BOOL ImmSetCompositionStringW( HIMC, DWORD dwIndex, LPVOID lpComp, DWORD, LPVOID lpRead, DWORD); +// #ifdef UNICODE +alias ImmSetCompositionStringW ImmSetCompositionString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetCandidateListCountA( HIMC, LPDWORD lpdwListCount); +extern(Windows) export DWORD ImmGetCandidateListCountW( HIMC, LPDWORD lpdwListCount); +// #ifdef UNICODE +alias ImmGetCandidateListCountW ImmGetCandidateListCount; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetCandidateListA( HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen); +extern(Windows) export DWORD ImmGetCandidateListW( HIMC, DWORD deIndex, LPCANDIDATELIST, DWORD dwBufLen); +// #ifdef UNICODE +alias ImmGetCandidateListW ImmGetCandidateList; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetGuideLineA( HIMC, DWORD dwIndex, LPSTR, DWORD dwBufLen); +extern(Windows) export DWORD ImmGetGuideLineW( HIMC, DWORD dwIndex, LPWSTR, DWORD dwBufLen); +// #ifdef UNICODE +alias ImmGetGuideLineW ImmGetGuideLine; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ImmGetConversionStatus( HIMC, LPDWORD, LPDWORD); +extern(Windows) export BOOL ImmSetConversionStatus( HIMC, DWORD, DWORD); +extern(Windows) export BOOL ImmGetOpenStatus( HIMC); +extern(Windows) export BOOL ImmSetOpenStatus( HIMC, BOOL); + +// #if defined(_WINGDI_) && !defined(NOGDI) +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE +// #endif // defined(_WINGDI_) && !defined(NOGDI) + +extern(Windows) export BOOL ImmConfigureIMEA( HKL, HWND, DWORD, LPVOID); +extern(Windows) export BOOL ImmConfigureIMEW( HKL, HWND, DWORD, LPVOID); +// #ifdef UNICODE +alias ImmConfigureIMEW ImmConfigureIME; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LRESULT ImmEscapeA( HKL, HIMC, UINT, LPVOID); +extern(Windows) export LRESULT ImmEscapeW( HKL, HIMC, UINT, LPVOID); +// #ifdef UNICODE +alias ImmEscapeW ImmEscape; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD ImmGetConversionListA( HKL, HIMC, LPCSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag); +extern(Windows) export DWORD ImmGetConversionListW( HKL, HIMC, LPCWSTR, LPCANDIDATELIST, DWORD dwBufLen, UINT uFlag); +// #ifdef UNICODE +alias ImmGetConversionListW ImmGetConversionList; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ImmNotifyIME( HIMC, DWORD dwAction, DWORD dwIndex, DWORD dwValue); + +extern(Windows) export BOOL ImmGetStatusWindowPos( HIMC, LPPOINT); +extern(Windows) export BOOL ImmSetStatusWindowPos( HIMC, LPPOINT); +extern(Windows) export BOOL ImmGetCompositionWindow( HIMC, LPCOMPOSITIONFORM); +extern(Windows) export BOOL ImmSetCompositionWindow( HIMC, LPCOMPOSITIONFORM); +extern(Windows) export BOOL ImmGetCandidateWindow( HIMC, DWORD, LPCANDIDATEFORM); +extern(Windows) export BOOL ImmSetCandidateWindow( HIMC, LPCANDIDATEFORM); + +extern(Windows) export BOOL ImmIsUIMessageA( HWND, UINT, WPARAM, LPARAM); +extern(Windows) export BOOL ImmIsUIMessageW( HWND, UINT, WPARAM, LPARAM); +// #ifdef UNICODE +alias ImmIsUIMessageW ImmIsUIMessage; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT ImmGetVirtualKey( HWND); + +extern(Windows) alias int function(LPCSTR, DWORD, LPCSTR, LPVOID) REGISTERWORDENUMPROCA; +extern(Windows) alias int function(LPCWSTR, DWORD, LPCWSTR, LPVOID) REGISTERWORDENUMPROCW; +// #ifdef UNICODE +alias REGISTERWORDENUMPROCW REGISTERWORDENUMPROC; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ImmRegisterWordA( HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister); +extern(Windows) export BOOL ImmRegisterWordW( HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister); +// #ifdef UNICODE +alias ImmRegisterWordW ImmRegisterWord; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ImmUnregisterWordA( HKL, LPCSTR lpszReading, DWORD, LPCSTR lpszUnregister); +extern(Windows) export BOOL ImmUnregisterWordW( HKL, LPCWSTR lpszReading, DWORD, LPCWSTR lpszUnregister); +// #ifdef UNICODE +alias ImmUnregisterWordW ImmUnregisterWord; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT ImmGetRegisterWordStyleA( HKL, UINT nItem, LPSTYLEBUFA); +extern(Windows) export UINT ImmGetRegisterWordStyleW( HKL, UINT nItem, LPSTYLEBUFW); +// #ifdef UNICODE +alias ImmGetRegisterWordStyleW ImmGetRegisterWordStyle; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT ImmEnumRegisterWordA( HKL, REGISTERWORDENUMPROCA, LPCSTR lpszReading, DWORD, LPCSTR lpszRegister, LPVOID); +extern(Windows) export UINT ImmEnumRegisterWordW( HKL, REGISTERWORDENUMPROCW, LPCWSTR lpszReading, DWORD, LPCWSTR lpszRegister, LPVOID); +// #ifdef UNICODE +alias ImmEnumRegisterWordW ImmEnumRegisterWord; +// #else +// #... +// #endif // !UNICODE + +// #if (WINVER >= 0x040A) +extern(Windows) export BOOL ImmDisableIME( DWORD); +extern(Windows) export BOOL ImmEnumInputContext(DWORD idThread, IMCENUMPROC lpfn, LPARAM lParam); +extern(Windows) export DWORD ImmGetImeMenuItemsA( HIMC, DWORD, DWORD, LPIMEMENUITEMINFOA, LPIMEMENUITEMINFOA, DWORD); +extern(Windows) export DWORD ImmGetImeMenuItemsW( HIMC, DWORD, DWORD, LPIMEMENUITEMINFOW, LPIMEMENUITEMINFOW, DWORD); +// #ifdef UNICODE +alias ImmGetImeMenuItemsW ImmGetImeMenuItems; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x040A */ + +enum : uint { IMC_GETCANDIDATEPOS = 0x0007 } +enum : uint { IMC_SETCANDIDATEPOS = 0x0008 } +enum : uint { IMC_GETCOMPOSITIONFONT = 0x0009 } +enum : uint { IMC_SETCOMPOSITIONFONT = 0x000A } +enum : uint { IMC_GETCOMPOSITIONWINDOW = 0x000B } +enum : uint { IMC_SETCOMPOSITIONWINDOW = 0x000C } +enum : uint { IMC_GETSTATUSWINDOWPOS = 0x000F } +enum : uint { IMC_SETSTATUSWINDOWPOS = 0x0010 } +enum : uint { IMC_CLOSESTATUSWINDOW = 0x0021 } +enum : uint { IMC_OPENSTATUSWINDOW = 0x0022 } + +enum : uint { NI_OPENCANDIDATE = 0x0010 } +enum : uint { NI_CLOSECANDIDATE = 0x0011 } +enum : uint { NI_SELECTCANDIDATESTR = 0x0012 } +enum : uint { NI_CHANGECANDIDATELIST = 0x0013 } +enum : uint { NI_FINALIZECONVERSIONRESULT = 0x0014 } +enum : uint { NI_COMPOSITIONSTR = 0x0015 } +enum : uint { NI_SETCANDIDATE_PAGESTART = 0x0016 } +enum : uint { NI_SETCANDIDATE_PAGESIZE = 0x0017 } +enum : uint { NI_IMEMENUSELECTED = 0x0018 } + +enum : uint { ISC_SHOWUICANDIDATEWINDOW = 0x00000001 } +enum : uint { ISC_SHOWUICOMPOSITIONWINDOW = 0x80000000 } +enum : uint { ISC_SHOWUIGUIDELINE = 0x40000000 } +enum : uint { ISC_SHOWUIALLCANDIDATEWINDOW = 0x0000000F } +enum : uint { ISC_SHOWUIALL = 0xC000000F } + +enum : uint { CPS_COMPLETE = 0x0001 } +enum : uint { CPS_CONVERT = 0x0002 } +enum : uint { CPS_REVERT = 0x0003 } +enum : uint { CPS_CANCEL = 0x0004 } + +enum : uint { MOD_ALT = 0x0001 } +enum : uint { MOD_CONTROL = 0x0002 } +enum : uint { MOD_SHIFT = 0x0004 } + +enum : uint { MOD_LEFT = 0x8000 } +enum : uint { MOD_RIGHT = 0x4000 } + +enum : uint { MOD_ON_KEYUP = 0x0800 } +enum : uint { MOD_IGNORE_ALL_MODIFIER = 0x0400 } + +enum : uint { IME_CHOTKEY_IME_NONIME_TOGGLE = 0x10 } +enum : uint { IME_CHOTKEY_SHAPE_TOGGLE = 0x11 } +enum : uint { IME_CHOTKEY_SYMBOL_TOGGLE = 0x12 } + +enum : uint { IME_JHOTKEY_CLOSE_OPEN = 0x30 } + +enum : uint { IME_KHOTKEY_SHAPE_TOGGLE = 0x50 } +enum : uint { IME_KHOTKEY_HANJACONVERT = 0x51 } +enum : uint { IME_KHOTKEY_ENGLISH = 0x52 } + +enum : uint { IME_THOTKEY_IME_NONIME_TOGGLE = 0x70 } +enum : uint { IME_THOTKEY_SHAPE_TOGGLE = 0x71 } +enum : uint { IME_THOTKEY_SYMBOL_TOGGLE = 0x72 } + +enum : uint { IME_HOTKEY_DSWITCH_FIRST = 0x100 } +enum : uint { IME_HOTKEY_DSWITCH_LAST = 0x11F } + +enum : uint { IME_HOTKEY_PRIVATE_FIRST = 0x200 } +enum : uint { IME_ITHOTKEY_RESEND_RESULTSTR = 0x200 } +enum : uint { IME_ITHOTKEY_PREVIOUS_COMPOSITION = 0x201 } +enum : uint { IME_ITHOTKEY_UISTYLE_TOGGLE = 0x202 } +enum : uint { IME_ITHOTKEY_RECONVERTSTRING = 0x203 } +enum : uint { IME_HOTKEY_PRIVATE_LAST = 0x21F } + +enum : uint { GCS_COMPREADSTR = 0x0001 } +enum : uint { GCS_COMPREADATTR = 0x0002 } +enum : uint { GCS_COMPREADCLAUSE = 0x0004 } +enum : uint { GCS_COMPSTR = 0x0008 } +enum : uint { GCS_COMPATTR = 0x0010 } +enum : uint { GCS_COMPCLAUSE = 0x0020 } +enum : uint { GCS_CURSORPOS = 0x0080 } +enum : uint { GCS_DELTASTART = 0x0100 } +enum : uint { GCS_RESULTREADSTR = 0x0200 } +enum : uint { GCS_RESULTREADCLAUSE = 0x0400 } +enum : uint { GCS_RESULTSTR = 0x0800 } +enum : uint { GCS_RESULTCLAUSE = 0x1000 } + +enum : uint { CS_INSERTCHAR = 0x2000 } +enum : uint { CS_NOMOVECARET = 0x4000 } + +enum : uint { IMEVER_0310 = 0x0003000A } +enum : uint { IMEVER_0400 = 0x00040000 } + +enum : uint { IME_PROP_AT_CARET = 0x00010000 } +enum : uint { IME_PROP_SPECIAL_UI = 0x00020000 } +enum : uint { IME_PROP_CANDLIST_START_FROM_1 = 0x00040000 } +enum : uint { IME_PROP_UNICODE = 0x00080000 } +enum : uint { IME_PROP_COMPLETE_ON_UNSELECT = 0x00100000 } + +enum : uint { UI_CAP_2700 = 0x00000001 } +enum : uint { UI_CAP_ROT90 = 0x00000002 } +enum : uint { UI_CAP_ROTANY = 0x00000004 } + +enum : uint { SCS_CAP_COMPSTR = 0x00000001 } +enum : uint { SCS_CAP_MAKEREAD = 0x00000002 } +enum : uint { SCS_CAP_SETRECONVERTSTRING = 0x00000004 } + +enum : uint { SELECT_CAP_CONVERSION = 0x00000001 } +enum : uint { SELECT_CAP_SENTENCE = 0x00000002 } + +enum : uint { GGL_LEVEL = 0x00000001 } +enum : uint { GGL_INDEX = 0x00000002 } +enum : uint { GGL_STRING = 0x00000003 } +enum : uint { GGL_PRIVATE = 0x00000004 } + +enum : uint { GL_LEVEL_NOGUIDELINE = 0x00000000 } +enum : uint { GL_LEVEL_FATAL = 0x00000001 } +enum : uint { GL_LEVEL_ERROR = 0x00000002 } +enum : uint { GL_LEVEL_WARNING = 0x00000003 } +enum : uint { GL_LEVEL_INFORMATION = 0x00000004 } + +enum : uint { GL_ID_UNKNOWN = 0x00000000 } +enum : uint { GL_ID_NOMODULE = 0x00000001 } +enum : uint { GL_ID_NODICTIONARY = 0x00000010 } +enum : uint { GL_ID_CANNOTSAVE = 0x00000011 } +enum : uint { GL_ID_NOCONVERT = 0x00000020 } +enum : uint { GL_ID_TYPINGERROR = 0x00000021 } +enum : uint { GL_ID_TOOMANYSTROKE = 0x00000022 } +enum : uint { GL_ID_READINGCONFLICT = 0x00000023 } +enum : uint { GL_ID_INPUTREADING = 0x00000024 } +enum : uint { GL_ID_INPUTRADICAL = 0x00000025 } +enum : uint { GL_ID_INPUTCODE = 0x00000026 } +enum : uint { GL_ID_INPUTSYMBOL = 0x00000027 } +enum : uint { GL_ID_CHOOSECANDIDATE = 0x00000028 } +enum : uint { GL_ID_REVERSECONVERSION = 0x00000029 } +enum : uint { GL_ID_PRIVATE_FIRST = 0x00008000 } +enum : uint { GL_ID_PRIVATE_LAST = 0x0000FFFF } + +const DWORD IGP_GETIMEVERSION = cast(DWORD)-4; +enum : uint { IGP_PROPERTY = 0x00000004 } +enum : uint { IGP_CONVERSION = 0x00000008 } +enum : uint { IGP_SENTENCE = 0x0000000c } +enum : uint { IGP_UI = 0x00000010 } +enum : uint { IGP_SETCOMPSTR = 0x00000014 } +enum : uint { IGP_SELECT = 0x00000018 } + +const uint SCS_SETSTR = GCS_COMPREADSTR|GCS_COMPSTR; +const uint SCS_CHANGEATTR = GCS_COMPREADATTR|GCS_COMPATTR; +const uint SCS_CHANGECLAUSE = GCS_COMPREADCLAUSE|GCS_COMPCLAUSE; +enum : uint { SCS_SETRECONVERTSTRING = 0x00010000 } +enum : uint { SCS_QUERYRECONVERTSTRING = 0x00020000 } + +enum : uint { ATTR_INPUT = 0x00 } +enum : uint { ATTR_TARGET_CONVERTED = 0x01 } +enum : uint { ATTR_CONVERTED = 0x02 } +enum : uint { ATTR_TARGET_NOTCONVERTED = 0x03 } +enum : uint { ATTR_INPUT_ERROR = 0x04 } +enum : uint { ATTR_FIXEDCONVERTED = 0x05 } + +enum : uint { CFS_DEFAULT = 0x0000 } +enum : uint { CFS_RECT = 0x0001 } +enum : uint { CFS_POINT = 0x0002 } +enum : uint { CFS_FORCE_POSITION = 0x0020 } +enum : uint { CFS_CANDIDATEPOS = 0x0040 } +enum : uint { CFS_EXCLUDE = 0x0080 } + +enum : uint { GCL_CONVERSION = 0x0001 } +enum : uint { GCL_REVERSECONVERSION = 0x0002 } +enum : uint { GCL_REVERSE_LENGTH = 0x0003 } + +enum : uint { IME_CMODE_ALPHANUMERIC = 0x0000 } +enum : uint { IME_CMODE_NATIVE = 0x0001 } +alias IME_CMODE_NATIVE IME_CMODE_CHINESE; + +alias IME_CMODE_NATIVE IME_CMODE_HANGEUL; +alias IME_CMODE_NATIVE IME_CMODE_HANGUL; +alias IME_CMODE_NATIVE IME_CMODE_JAPANESE; +enum : uint { IME_CMODE_KATAKANA = 0x0002 } +enum : uint { IME_CMODE_LANGUAGE = 0x0003 } +enum : uint { IME_CMODE_FULLSHAPE = 0x0008 } +enum : uint { IME_CMODE_ROMAN = 0x0010 } +enum : uint { IME_CMODE_CHARCODE = 0x0020 } +enum : uint { IME_CMODE_HANJACONVERT = 0x0040 } +enum : uint { IME_CMODE_SOFTKBD = 0x0080 } +enum : uint { IME_CMODE_NOCONVERSION = 0x0100 } +enum : uint { IME_CMODE_EUDC = 0x0200 } +enum : uint { IME_CMODE_SYMBOL = 0x0400 } +enum : uint { IME_CMODE_FIXED = 0x0800 } + +enum : uint { IME_SMODE_NONE = 0x0000 } +enum : uint { IME_SMODE_PLAURALCLAUSE = 0x0001 } +enum : uint { IME_SMODE_SINGLECONVERT = 0x0002 } +enum : uint { IME_SMODE_AUTOMATIC = 0x0004 } +enum : uint { IME_SMODE_PHRASEPREDICT = 0x0008 } +enum : uint { IME_SMODE_CONVERSATION = 0x0010 } + +enum : uint { IME_CAND_UNKNOWN = 0x0000 } +enum : uint { IME_CAND_READ = 0x0001 } +enum : uint { IME_CAND_CODE = 0x0002 } +enum : uint { IME_CAND_MEANING = 0x0003 } +enum : uint { IME_CAND_RADICAL = 0x0004 } +enum : uint { IME_CAND_STROKE = 0x0005 } + +enum : uint { IMN_CLOSESTATUSWINDOW = 0x0001 } +enum : uint { IMN_OPENSTATUSWINDOW = 0x0002 } +enum : uint { IMN_CHANGECANDIDATE = 0x0003 } +enum : uint { IMN_CLOSECANDIDATE = 0x0004 } +enum : uint { IMN_OPENCANDIDATE = 0x0005 } +enum : uint { IMN_SETCONVERSIONMODE = 0x0006 } +enum : uint { IMN_SETSENTENCEMODE = 0x0007 } +enum : uint { IMN_SETOPENSTATUS = 0x0008 } +enum : uint { IMN_SETCANDIDATEPOS = 0x0009 } +enum : uint { IMN_SETCOMPOSITIONFONT = 0x000A } +enum : uint { IMN_SETCOMPOSITIONWINDOW = 0x000B } +enum : uint { IMN_SETSTATUSWINDOWPOS = 0x000C } +enum : uint { IMN_GUIDELINE = 0x000D } +enum : uint { IMN_PRIVATE = 0x000E } + +// #if (WINVER >= 0x040A) + +enum : uint { IMR_COMPOSITIONWINDOW = 0x0001 } +enum : uint { IMR_CANDIDATEWINDOW = 0x0002 } +enum : uint { IMR_COMPOSITIONFONT = 0x0003 } +enum : uint { IMR_RECONVERTSTRING = 0x0004 } +enum : uint { IMR_CONFIRMRECONVERTSTRING = 0x0005 } +enum : uint { IMR_QUERYCHARPOSITION = 0x0006 } +enum : uint { IMR_DOCUMENTFEED = 0x0007 } +// #endif /* WINVER >= 0x040A */ + +enum { IMM_ERROR_NODATA = -1 } +enum { IMM_ERROR_GENERAL = -2 } + +enum : uint { IME_CONFIG_GENERAL = 1 } +enum : uint { IME_CONFIG_REGISTERWORD = 2 } +enum : uint { IME_CONFIG_SELECTDICTIONARY = 3 } + +enum : uint { IME_ESC_QUERY_SUPPORT = 0x0003 } +enum : uint { IME_ESC_RESERVED_FIRST = 0x0004 } +enum : uint { IME_ESC_RESERVED_LAST = 0x07FF } +enum : uint { IME_ESC_PRIVATE_FIRST = 0x0800 } +enum : uint { IME_ESC_PRIVATE_LAST = 0x0FFF } + +enum : uint { IME_ESC_SEQUENCE_TO_INTERNAL = 0x1001 } +enum : uint { IME_ESC_GET_EUDC_DICTIONARY = 0x1003 } +enum : uint { IME_ESC_SET_EUDC_DICTIONARY = 0x1004 } +enum : uint { IME_ESC_MAX_KEY = 0x1005 } +enum : uint { IME_ESC_IME_NAME = 0x1006 } +enum : uint { IME_ESC_SYNC_HOTKEY = 0x1007 } +enum : uint { IME_ESC_HANJA_MODE = 0x1008 } +enum : uint { IME_ESC_AUTOMATA = 0x1009 } +enum : uint { IME_ESC_PRIVATE_HOTKEY = 0x100a } +enum : uint { IME_ESC_GETHELPFILENAME = 0x100b } + +enum : uint { IME_REGWORD_STYLE_EUDC = 0x00000001 } +enum : uint { IME_REGWORD_STYLE_USER_FIRST = 0x80000000 } +enum : uint { IME_REGWORD_STYLE_USER_LAST = 0xFFFFFFFF } + +// #if (WINVER >= 0x040A) + +enum : uint { IACE_CHILDREN = 0x0001 } +enum : uint { IACE_DEFAULT = 0x0010 } +enum : uint { IACE_IGNORENOCONTEXT = 0x0020 } + +enum : uint { IGIMIF_RIGHTMENU = 0x0001 } + +enum : uint { IGIMII_CMODE = 0x0001 } +enum : uint { IGIMII_SMODE = 0x0002 } +enum : uint { IGIMII_CONFIGURE = 0x0004 } +enum : uint { IGIMII_TOOLS = 0x0008 } +enum : uint { IGIMII_HELP = 0x0010 } +enum : uint { IGIMII_OTHER = 0x0020 } +enum : uint { IGIMII_INPUTTOOLS = 0x0040 } + +enum : uint { IMFT_RADIOCHECK = 0x00001 } +enum : uint { IMFT_SEPARATOR = 0x00002 } +enum : uint { IMFT_SUBMENU = 0x00004 } + +alias MFS_GRAYED IMFS_GRAYED; +alias MFS_DISABLED IMFS_DISABLED; +alias MFS_CHECKED IMFS_CHECKED; +alias MFS_HILITE IMFS_HILITE; +alias MFS_ENABLED IMFS_ENABLED; +alias MFS_UNCHECKED IMFS_UNCHECKED; +alias MFS_UNHILITE IMFS_UNHILITE; +alias MFS_DEFAULT IMFS_DEFAULT; + +// #endif /* WINVER >= 0x040A */ + +enum : uint { SOFTKEYBOARD_TYPE_T1 = 0x0001 } + +enum : uint { SOFTKEYBOARD_TYPE_C1 = 0x0002 } + +// #endif // _IMM_SDK_DEFINED_ + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _IMM_ ADDED src/win32/mmsystem.d Index: src/win32/mmsystem.d ================================================================== --- src/win32/mmsystem.d +++ src/win32/mmsystem.d @@ -0,0 +1,3667 @@ +module win32.mmsystem; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.winbase; + +// #ifndef _INC_MMSYSTEM +// #define _INC_MMSYSTEM + +// #ifdef _WIN32 +align(1): +// #else +// #ifndef RC_INVOKED +// #... +// #endif +// #endif + +// #ifdef __cplusplus +// extern "C" { /* Assume C declarations for C++ */ +// #endif /* __cplusplus */ + +// #ifdef _WIN32 +// #ifndef _WINMM_ +// #define WINMMAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #define _loadds +// #define _huge +// #else +// #... +// #endif + +// #ifdef _MAC +// #... +// #endif //_MAC + +enum : uint { MAXPNAMELEN = 32 } +enum : uint { MAXERRORLENGTH = 256 } +enum : uint { MAX_JOYSTICKOEMVXDNAME = 260 } + +// #if (WINVER <= 0x0400) +// #ifndef MM_MICROSOFT +// #... +// #endif + +// #ifndef MM_MIDI_MAPPER +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif +// #endif + +// #ifdef _WIN32 +alias UINT MMVERSION; +// #else +// ... +// #endif +alias UINT MMRESULT; + +// #define _MMRESULT_ + +alias UINT* LPUINT; + +struct mmtime_tag { + UINT wType; +union { + DWORD ms; + DWORD sample; + DWORD cb; + DWORD ticks; + +struct { + BYTE hour; + BYTE min; + BYTE sec; + BYTE frame; + BYTE fps; + BYTE dummy; +// #ifdef _WIN32 + BYTE pad[2]; +// #endif +} + +struct { + DWORD songptrpos; +} + +} + +} +alias mmtime_tag MMTIME; +alias mmtime_tag* PMMTIME; +alias mmtime_tag* NPMMTIME; +alias mmtime_tag* LPMMTIME; + +enum : uint { TIME_MS = 0x0001 } +enum : uint { TIME_SAMPLES = 0x0002 } +enum : uint { TIME_BYTES = 0x0004 } +enum : uint { TIME_SMPTE = 0x0008 } +enum : uint { TIME_MIDI = 0x0010 } +enum : uint { TIME_TICKS = 0x0020 } + +uint MAKEFOURCC(ubyte ch0, ubyte ch1, ubyte ch2, ubyte ch3){ return ch0 | (ch1 << 8) | (ch2 << 16) | (ch3 << 24); } + +enum : uint { MM_JOY1MOVE = 0x3A0 } +enum : uint { MM_JOY2MOVE = 0x3A1 } +enum : uint { MM_JOY1ZMOVE = 0x3A2 } +enum : uint { MM_JOY2ZMOVE = 0x3A3 } +enum : uint { MM_JOY1BUTTONDOWN = 0x3B5 } +enum : uint { MM_JOY2BUTTONDOWN = 0x3B6 } +enum : uint { MM_JOY1BUTTONUP = 0x3B7 } +enum : uint { MM_JOY2BUTTONUP = 0x3B8 } + +enum : uint { MM_MCINOTIFY = 0x3B9 } + +enum : uint { MM_WOM_OPEN = 0x3BB } +enum : uint { MM_WOM_CLOSE = 0x3BC } +enum : uint { MM_WOM_DONE = 0x3BD } + +enum : uint { MM_WIM_OPEN = 0x3BE } +enum : uint { MM_WIM_CLOSE = 0x3BF } +enum : uint { MM_WIM_DATA = 0x3C0 } + +enum : uint { MM_MIM_OPEN = 0x3C1 } +enum : uint { MM_MIM_CLOSE = 0x3C2 } +enum : uint { MM_MIM_DATA = 0x3C3 } +enum : uint { MM_MIM_LONGDATA = 0x3C4 } +enum : uint { MM_MIM_ERROR = 0x3C5 } +enum : uint { MM_MIM_LONGERROR = 0x3C6 } + +enum : uint { MM_MOM_OPEN = 0x3C7 } +enum : uint { MM_MOM_CLOSE = 0x3C8 } +enum : uint { MM_MOM_DONE = 0x3C9 } + +// #ifndef MM_DRVM_OPEN +enum : uint { MM_DRVM_OPEN = 0x3D0 } +enum : uint { MM_DRVM_CLOSE = 0x3D1 } +enum : uint { MM_DRVM_DATA = 0x3D2 } +enum : uint { MM_DRVM_ERROR = 0x3D3 } +// #endif + +enum : uint { MM_STREAM_OPEN = 0x3D4 } +enum : uint { MM_STREAM_CLOSE = 0x3D5 } +enum : uint { MM_STREAM_DONE = 0x3D6 } +enum : uint { MM_STREAM_ERROR = 0x3D7 } + +// #if(WINVER >= 0x0400) +enum : uint { MM_MOM_POSITIONCB = 0x3CA } + +// #ifndef MM_MCISIGNAL +enum : uint { MM_MCISIGNAL = 0x3CB } +// #endif + +enum : uint { MM_MIM_MOREDATA = 0x3CC } + +// #endif /* WINVER >= 0x0400 */ +enum : uint { MM_MIXM_LINE_CHANGE = 0x3D0 } +enum : uint { MM_MIXM_CONTROL_CHANGE = 0x3D1 } + +enum : uint { MMSYSERR_BASE = 0 } +enum : uint { WAVERR_BASE = 32 } +enum : uint { MIDIERR_BASE = 64 } +enum : uint { TIMERR_BASE = 96 } +enum : uint { JOYERR_BASE = 160 } +enum : uint { MCIERR_BASE = 256 } +enum : uint { MIXERR_BASE = 1024 } + +enum : uint { MCI_STRING_OFFSET = 512 } +enum : uint { MCI_VD_OFFSET = 1024 } +enum : uint { MCI_CD_OFFSET = 1088 } +enum : uint { MCI_WAVE_OFFSET = 1152 } +enum : uint { MCI_SEQ_OFFSET = 1216 } + +enum : uint { MMSYSERR_NOERROR = 0 } +enum : uint { MMSYSERR_ERROR = MMSYSERR_BASE + 1 } +enum : uint { MMSYSERR_BADDEVICEID = MMSYSERR_BASE + 2 } +enum : uint { MMSYSERR_NOTENABLED = MMSYSERR_BASE + 3 } +enum : uint { MMSYSERR_ALLOCATED = MMSYSERR_BASE + 4 } +enum : uint { MMSYSERR_INVALHANDLE = MMSYSERR_BASE + 5 } +enum : uint { MMSYSERR_NODRIVER = MMSYSERR_BASE + 6 } +enum : uint { MMSYSERR_NOMEM = MMSYSERR_BASE + 7 } +enum : uint { MMSYSERR_NOTSUPPORTED = MMSYSERR_BASE + 8 } +enum : uint { MMSYSERR_BADERRNUM = MMSYSERR_BASE + 9 } +enum : uint { MMSYSERR_INVALFLAG = MMSYSERR_BASE + 10 } +enum : uint { MMSYSERR_INVALPARAM = MMSYSERR_BASE + 11 } +enum : uint { MMSYSERR_HANDLEBUSY = MMSYSERR_BASE + 12 } + +enum : uint { MMSYSERR_INVALIDALIAS = MMSYSERR_BASE + 13 } +enum : uint { MMSYSERR_BADDB = MMSYSERR_BASE + 14 } +enum : uint { MMSYSERR_KEYNOTFOUND = MMSYSERR_BASE + 15 } +enum : uint { MMSYSERR_READERROR = MMSYSERR_BASE + 16 } +enum : uint { MMSYSERR_WRITEERROR = MMSYSERR_BASE + 17 } +enum : uint { MMSYSERR_DELETEERROR = MMSYSERR_BASE + 18 } +enum : uint { MMSYSERR_VALNOTFOUND = MMSYSERR_BASE + 19 } +enum : uint { MMSYSERR_NODRIVERCB = MMSYSERR_BASE + 20 } +enum : uint { MMSYSERR_MOREDATA = MMSYSERR_BASE + 21 } +enum : uint { MMSYSERR_LASTERROR = MMSYSERR_BASE + 21 } + +// #if (WINVER < 0x030a) || defined(_WIN32) +alias void* HDRVR; +// #endif /* ifdef WINVER < 0x030a */ + +// #ifndef MMNODRV + +// #ifdef _WIN32 +struct DRVCONFIGINFOEX { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; + DWORD dnDevNode; +} +alias DRVCONFIGINFOEX* PDRVCONFIGINFOEX; +alias DRVCONFIGINFOEX* NPDRVCONFIGINFOEX; +alias DRVCONFIGINFOEX* LPDRVCONFIGINFOEX; + +// #else +// ... +// #endif + +// #if (WINVER < 0x030a) || defined(_WIN32) + +// #ifndef DRV_LOAD + +enum : uint { DRV_LOAD = 0x0001 } +enum : uint { DRV_ENABLE = 0x0002 } +enum : uint { DRV_OPEN = 0x0003 } +enum : uint { DRV_CLOSE = 0x0004 } +enum : uint { DRV_DISABLE = 0x0005 } +enum : uint { DRV_FREE = 0x0006 } +enum : uint { DRV_CONFIGURE = 0x0007 } +enum : uint { DRV_QUERYCONFIGURE = 0x0008 } +enum : uint { DRV_INSTALL = 0x0009 } +enum : uint { DRV_REMOVE = 0x000A } +enum : uint { DRV_EXITSESSION = 0x000B } +enum : uint { DRV_POWER = 0x000F } +enum : uint { DRV_RESERVED = 0x0800 } +enum : uint { DRV_USER = 0x4000 } + +// #ifdef _WIN32 +struct tagDRVCONFIGINFO { + DWORD dwDCISize; + LPCWSTR lpszDCISectionName; + LPCWSTR lpszDCIAliasName; +} +alias tagDRVCONFIGINFO DRVCONFIGINFO; +alias tagDRVCONFIGINFO* PDRVCONFIGINFO; +alias tagDRVCONFIGINFO* NPDRVCONFIGINFO; +alias tagDRVCONFIGINFO* LPDRVCONFIGINFO; + +// #else +// ... +// #endif + +enum : uint { DRVCNF_CANCEL = 0x0000 } +enum : uint { DRVCNF_OK = 0x0001 } +enum : uint { DRVCNF_RESTART = 0x0002 } + +// #ifdef _WIN32 + +extern(Windows) alias LRESULT function(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM) DRIVERPROC; + +extern(Windows) export LRESULT CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2); +extern(Windows) export HDRVR OpenDriver(LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2); +extern(Windows) export LRESULT SendDriverMessage(HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2); +extern(Windows) export HMODULE DrvGetModuleHandle(HDRVR hDriver); +extern(Windows) export HMODULE GetDriverModuleHandle(HDRVR hDriver); +extern(Windows) export LRESULT DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2); +// #else +// ... +// #... +// #endif /* ifdef _WIN32 */ +// #endif /* DRV_LOAD */ +// #endif /* ifdef (WINVER < 0x030a) || defined(_WIN32) */ + +// #if (WINVER >= 0x030a) + +alias DRVCNF_CANCEL DRV_CANCEL; +alias DRVCNF_OK DRV_OK; +alias DRVCNF_RESTART DRV_RESTART; + +// #endif /* ifdef WINVER >= 0x030a */ + +alias DRV_RESERVED DRV_MCI_FIRST; +enum : uint { DRV_MCI_LAST = DRV_RESERVED + 0xFFF } + +// #endif /* ifndef MMNODRV */ + +enum : uint { CALLBACK_TYPEMASK = 0x00070000 } +enum : uint { CALLBACK_NULL = 0x00000000 } +enum : uint { CALLBACK_WINDOW = 0x00010000 } +enum : uint { CALLBACK_TASK = 0x00020000 } +enum : uint { CALLBACK_FUNCTION = 0x00030000 } +// #ifdef _WIN32 +enum : uint { CALLBACK_THREAD = CALLBACK_TASK } +enum : uint { CALLBACK_EVENT = 0x00050000 } +// #endif +// typedef void (CALLBACK DRVCALLBACK)(HDRVR hdrvr, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2); + +extern(Windows) alias void function(HDRVR hdrvr, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) LPDRVCALLBACK; +// #ifdef _WIN32 +alias LPDRVCALLBACK PDRVCALLBACK; +// #endif + +// #ifndef MMNOMMSYSTEM + +// #if (WINVER <= 0x030A) +// ... +// #endif +// #ifdef _WIN32 +alias OutputDebugString OutputDebugStr; +// #else +// ... +// #endif + +// #endif /* ifndef MMNOMMSYSTEM */ + +// #ifndef MMNOSOUND + +// #ifdef _WIN32 + +extern(Windows) export BOOL sndPlaySoundA(LPCSTR pszSound, UINT fuSound); +extern(Windows) export BOOL sndPlaySoundW(LPCWSTR pszSound, UINT fuSound); +// #ifdef UNICODE +alias sndPlaySoundW sndPlaySound; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +enum : uint { SND_SYNC = 0x0000 } +enum : uint { SND_ASYNC = 0x0001 } +enum : uint { SND_NODEFAULT = 0x0002 } +enum : uint { SND_MEMORY = 0x0004 } +enum : uint { SND_LOOP = 0x0008 } +enum : uint { SND_NOSTOP = 0x0010 } + +enum : uint { SND_NOWAIT = 0x00002000 } +enum : uint { SND_ALIAS = 0x00010000 } +enum : uint { SND_ALIAS_ID = 0x00110000 } +enum : uint { SND_FILENAME = 0x00020000 } +enum : uint { SND_RESOURCE = 0x00040004 } +// #if(WINVER >= 0x0400) +enum : uint { SND_PURGE = 0x0040 } +enum : uint { SND_APPLICATION = 0x0080 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SND_ALIAS_START = 0 } + +// #ifdef _WIN32 +// #define sndAlias(ch0, ch1) (SND_ALIAS_START + (DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8)) + +// #define SND_ALIAS_SYSTEMASTERISK sndAlias('S', '*') +// #define SND_ALIAS_SYSTEMQUESTION sndAlias('S', '?') +// #define SND_ALIAS_SYSTEMHAND sndAlias('S', 'H') +// #define SND_ALIAS_SYSTEMEXIT sndAlias('S', 'E') +// #define SND_ALIAS_SYSTEMSTART sndAlias('S', 'S') +// #define SND_ALIAS_SYSTEMWELCOME sndAlias('S', 'W') +// #define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S', '!') +// #define SND_ALIAS_SYSTEMDEFAULT sndAlias('S', 'D') + +extern(Windows) export BOOL PlaySoundA(LPCSTR pszSound, HMODULE hmod, DWORD fdwSound); +extern(Windows) export BOOL PlaySoundW(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound); +// #ifdef UNICODE +alias PlaySoundW PlaySound; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +// #endif /* ifndef MMNOSOUND */ + +// #ifndef MMNOWAVE + +enum : uint { WAVERR_BADFORMAT = WAVERR_BASE + 0 } +enum : uint { WAVERR_STILLPLAYING = WAVERR_BASE + 1 } +enum : uint { WAVERR_UNPREPARED = WAVERR_BASE + 2 } +enum : uint { WAVERR_SYNC = WAVERR_BASE + 3 } +enum : uint { WAVERR_LASTERROR = WAVERR_BASE + 3 } + +alias void* HWAVE; +alias void* HWAVEIN; +alias void* HWAVEOUT; +alias HWAVEIN* LPHWAVEIN; +alias HWAVEOUT* LPHWAVEOUT; +// typedef DRVCALLBACK WAVECALLBACK; +alias LPDRVCALLBACK LPWAVECALLBACK; + +alias MM_WOM_OPEN WOM_OPEN; +alias MM_WOM_CLOSE WOM_CLOSE; +alias MM_WOM_DONE WOM_DONE; +alias MM_WIM_OPEN WIM_OPEN; +alias MM_WIM_CLOSE WIM_CLOSE; +alias MM_WIM_DATA WIM_DATA; + +enum : uint { WAVE_MAPPER = cast(UINT)-1 } + +enum : uint { WAVE_FORMAT_QUERY = 0x0001 } +enum : uint { WAVE_ALLOWSYNC = 0x0002 } +// #if(WINVER >= 0x0400) +enum : uint { WAVE_MAPPED = 0x0004 } +enum : uint { WAVE_FORMAT_DIRECT = 0x0008 } +enum : uint { WAVE_FORMAT_DIRECT_QUERY = WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT } +// #endif /* WINVER >= 0x0400 */ + +struct wavehdr_tag { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD_PTR dwUser; + DWORD dwFlags; + DWORD dwLoops; + wavehdr_tag *lpNext; + DWORD_PTR reserved; +} +alias wavehdr_tag WAVEHDR; +alias wavehdr_tag* PWAVEHDR; +alias wavehdr_tag* NPWAVEHDR; +alias wavehdr_tag* LPWAVEHDR; + +enum : uint { WHDR_DONE = 0x00000001 } +enum : uint { WHDR_PREPARED = 0x00000002 } +enum : uint { WHDR_BEGINLOOP = 0x00000004 } +enum : uint { WHDR_ENDLOOP = 0x00000008 } +enum : uint { WHDR_INQUEUE = 0x00000010 } + +// #ifdef _WIN32 + +struct tagWAVEOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias tagWAVEOUTCAPSA WAVEOUTCAPSA; +alias tagWAVEOUTCAPSA* PWAVEOUTCAPSA; +alias tagWAVEOUTCAPSA* NPWAVEOUTCAPSA; +alias tagWAVEOUTCAPSA* LPWAVEOUTCAPSA; + +struct tagWAVEOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; +} +alias tagWAVEOUTCAPSW WAVEOUTCAPSW; +alias tagWAVEOUTCAPSW* PWAVEOUTCAPSW; +alias tagWAVEOUTCAPSW* NPWAVEOUTCAPSW; +alias tagWAVEOUTCAPSW* LPWAVEOUTCAPSW; + +// #ifdef UNICODE +alias WAVEOUTCAPSW WAVEOUTCAPS; +alias PWAVEOUTCAPSW PWAVEOUTCAPS; +alias NPWAVEOUTCAPSW NPWAVEOUTCAPS; +alias LPWAVEOUTCAPSW LPWAVEOUTCAPS; +// #else +// ... +// #endif // UNICODE +struct tagWAVEOUTCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagWAVEOUTCAPS2A WAVEOUTCAPS2A; +alias tagWAVEOUTCAPS2A* PWAVEOUTCAPS2A; +alias tagWAVEOUTCAPS2A* NPWAVEOUTCAPS2A; +alias tagWAVEOUTCAPS2A* LPWAVEOUTCAPS2A; + +struct tagWAVEOUTCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagWAVEOUTCAPS2W WAVEOUTCAPS2W; +alias tagWAVEOUTCAPS2W* PWAVEOUTCAPS2W; +alias tagWAVEOUTCAPS2W* NPWAVEOUTCAPS2W; +alias tagWAVEOUTCAPS2W* LPWAVEOUTCAPS2W; + +// #ifdef UNICODE +alias WAVEOUTCAPS2W WAVEOUTCAPS2; +alias PWAVEOUTCAPS2W PWAVEOUTCAPS2; +alias NPWAVEOUTCAPS2W NPWAVEOUTCAPS2; +alias LPWAVEOUTCAPS2W LPWAVEOUTCAPS2; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { WAVECAPS_PITCH = 0x0001 } +enum : uint { WAVECAPS_PLAYBACKRATE = 0x0002 } +enum : uint { WAVECAPS_VOLUME = 0x0004 } +enum : uint { WAVECAPS_LRVOLUME = 0x0008 } +enum : uint { WAVECAPS_SYNC = 0x0010 } +enum : uint { WAVECAPS_SAMPLEACCURATE = 0x0020 } + +// #ifdef _WIN32 + +struct tagWAVEINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias tagWAVEINCAPSA WAVEINCAPSA; +alias tagWAVEINCAPSA* PWAVEINCAPSA; +alias tagWAVEINCAPSA* NPWAVEINCAPSA; +alias tagWAVEINCAPSA* LPWAVEINCAPSA; + +struct tagWAVEINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; +} +alias tagWAVEINCAPSW WAVEINCAPSW; +alias tagWAVEINCAPSW* PWAVEINCAPSW; +alias tagWAVEINCAPSW* NPWAVEINCAPSW; +alias tagWAVEINCAPSW* LPWAVEINCAPSW; + +// #ifdef UNICODE +alias WAVEINCAPSW WAVEINCAPS; +alias PWAVEINCAPSW PWAVEINCAPS; +alias NPWAVEINCAPSW NPWAVEINCAPS; +alias LPWAVEINCAPSW LPWAVEINCAPS; +// #else +// ... +// #endif // UNICODE +struct tagWAVEINCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagWAVEINCAPS2A WAVEINCAPS2A; +alias tagWAVEINCAPS2A* PWAVEINCAPS2A; +alias tagWAVEINCAPS2A* NPWAVEINCAPS2A; +alias tagWAVEINCAPS2A* LPWAVEINCAPS2A; + +struct tagWAVEINCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD dwFormats; + WORD wChannels; + WORD wReserved1; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagWAVEINCAPS2W WAVEINCAPS2W; +alias tagWAVEINCAPS2W* PWAVEINCAPS2W; +alias tagWAVEINCAPS2W* NPWAVEINCAPS2W; +alias tagWAVEINCAPS2W* LPWAVEINCAPS2W; + +// #ifdef UNICODE +alias WAVEINCAPS2W WAVEINCAPS2; +alias PWAVEINCAPS2W PWAVEINCAPS2; +alias NPWAVEINCAPS2W NPWAVEINCAPS2; +alias LPWAVEINCAPS2W LPWAVEINCAPS2; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { WAVE_INVALIDFORMAT = 0x00000000 } +enum : uint { WAVE_FORMAT_1M08 = 0x00000001 } +enum : uint { WAVE_FORMAT_1S08 = 0x00000002 } +enum : uint { WAVE_FORMAT_1M16 = 0x00000004 } +enum : uint { WAVE_FORMAT_1S16 = 0x00000008 } +enum : uint { WAVE_FORMAT_2M08 = 0x00000010 } +enum : uint { WAVE_FORMAT_2S08 = 0x00000020 } +enum : uint { WAVE_FORMAT_2M16 = 0x00000040 } +enum : uint { WAVE_FORMAT_2S16 = 0x00000080 } +enum : uint { WAVE_FORMAT_4M08 = 0x00000100 } +enum : uint { WAVE_FORMAT_4S08 = 0x00000200 } +enum : uint { WAVE_FORMAT_4M16 = 0x00000400 } +enum : uint { WAVE_FORMAT_4S16 = 0x00000800 } + +enum : uint { WAVE_FORMAT_44M08 = 0x00000100 } +enum : uint { WAVE_FORMAT_44S08 = 0x00000200 } +enum : uint { WAVE_FORMAT_44M16 = 0x00000400 } +enum : uint { WAVE_FORMAT_44S16 = 0x00000800 } +enum : uint { WAVE_FORMAT_48M08 = 0x00001000 } +enum : uint { WAVE_FORMAT_48S08 = 0x00002000 } +enum : uint { WAVE_FORMAT_48M16 = 0x00004000 } +enum : uint { WAVE_FORMAT_48S16 = 0x00008000 } +enum : uint { WAVE_FORMAT_96M08 = 0x00010000 } +enum : uint { WAVE_FORMAT_96S08 = 0x00020000 } +enum : uint { WAVE_FORMAT_96M16 = 0x00040000 } +enum : uint { WAVE_FORMAT_96S16 = 0x00080000 } + +// #ifndef WAVE_FORMAT_PCM + +struct waveformat_tag { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; +} +alias waveformat_tag WAVEFORMAT; +alias waveformat_tag* PWAVEFORMAT; +alias waveformat_tag* NPWAVEFORMAT; +alias waveformat_tag* LPWAVEFORMAT; + +enum : uint { WAVE_FORMAT_PCM = 1 } + +struct pcmwaveformat_tag { + WAVEFORMAT wf; + WORD wBitsPerSample; +} +alias pcmwaveformat_tag PCMWAVEFORMAT; +alias pcmwaveformat_tag* PPCMWAVEFORMAT; +alias pcmwaveformat_tag* NPPCMWAVEFORMAT; +alias pcmwaveformat_tag* LPPCMWAVEFORMAT; + +// #endif /* WAVE_FORMAT_PCM */ + +// #ifndef _WAVEFORMATEX_ +// #define _WAVEFORMATEX_ + +struct tWAVEFORMATEX { + WORD wFormatTag; + WORD nChannels; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wBitsPerSample; + WORD cbSize; + +} +alias tWAVEFORMATEX WAVEFORMATEX; +alias tWAVEFORMATEX* PWAVEFORMATEX; +alias tWAVEFORMATEX* NPWAVEFORMATEX; +alias tWAVEFORMATEX* LPWAVEFORMATEX; + +// #endif /* _WAVEFORMATEX_ */ +alias WAVEFORMATEX* LPCWAVEFORMATEX; + +extern(Windows) export UINT waveOutGetNumDevs(); + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT waveOutGetDevCapsA(UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc); +extern(Windows) export MMRESULT waveOutGetDevCapsW(UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc); +// #ifdef UNICODE +alias waveOutGetDevCapsW waveOutGetDevCaps; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +// #if (WINVER >= 0x0400) +extern(Windows) export MMRESULT waveOutGetVolume(HWAVEOUT hwo, LPDWORD pdwVolume); +extern(Windows) export MMRESULT waveOutSetVolume(HWAVEOUT hwo, DWORD dwVolume); +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT waveOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +extern(Windows) export MMRESULT waveOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +alias waveOutGetErrorTextW waveOutGetErrorText; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT waveOutOpen(LPHWAVEOUT phwo, UINT uDeviceID, + LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); + +extern(Windows) export MMRESULT waveOutClose(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutPrepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveOutUnprepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveOutPause(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutRestart(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutReset(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutBreakLoop(HWAVEOUT hwo); +extern(Windows) export MMRESULT waveOutGetPosition(HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt); +extern(Windows) export MMRESULT waveOutGetPitch(HWAVEOUT hwo, LPDWORD pdwPitch); +extern(Windows) export MMRESULT waveOutSetPitch(HWAVEOUT hwo, DWORD dwPitch); +extern(Windows) export MMRESULT waveOutGetPlaybackRate(HWAVEOUT hwo, LPDWORD pdwRate); +extern(Windows) export MMRESULT waveOutSetPlaybackRate(HWAVEOUT hwo, DWORD dwRate); +extern(Windows) export MMRESULT waveOutGetID(HWAVEOUT hwo, LPUINT puDeviceID); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +extern(Windows) export UINT waveInGetNumDevs(); + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT waveInGetDevCapsA(UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic); +extern(Windows) export MMRESULT waveInGetDevCapsW(UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic); +// #ifdef UNICODE +alias waveInGetDevCapsW waveInGetDevCaps; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT waveInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +extern(Windows) export MMRESULT waveInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +alias waveInGetErrorTextW waveInGetErrorText; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT waveInOpen(LPHWAVEIN phwi, UINT uDeviceID, + LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); + +extern(Windows) export MMRESULT waveInClose(HWAVEIN hwi); +extern(Windows) export MMRESULT waveInPrepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveInUnprepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveInAddBuffer(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh); +extern(Windows) export MMRESULT waveInStart(HWAVEIN hwi); +extern(Windows) export MMRESULT waveInStop(HWAVEIN hwi); +extern(Windows) export MMRESULT waveInReset(HWAVEIN hwi); +extern(Windows) export MMRESULT waveInGetPosition(HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt); +extern(Windows) export MMRESULT waveInGetID(HWAVEIN hwi, LPUINT puDeviceID); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT waveInMessage(HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +// #endif /* ifndef MMNOWAVE */ + +// #ifndef MMNOMIDI + +enum : uint { MIDIERR_UNPREPARED = MIDIERR_BASE + 0 } +enum : uint { MIDIERR_STILLPLAYING = MIDIERR_BASE + 1 } +enum : uint { MIDIERR_NOMAP = MIDIERR_BASE + 2 } +enum : uint { MIDIERR_NOTREADY = MIDIERR_BASE + 3 } +enum : uint { MIDIERR_NODEVICE = MIDIERR_BASE + 4 } +enum : uint { MIDIERR_INVALIDSETUP = MIDIERR_BASE + 5 } +enum : uint { MIDIERR_BADOPENMODE = MIDIERR_BASE + 6 } +enum : uint { MIDIERR_DONT_CONTINUE = MIDIERR_BASE + 7 } +enum : uint { MIDIERR_LASTERROR = MIDIERR_BASE + 7 } + +alias void* HMIDI; +alias void* HMIDIIN; +alias void* HMIDIOUT; +alias void* HMIDISTRM; +alias HMIDI* LPHMIDI; +alias HMIDIIN* LPHMIDIIN; +alias HMIDIOUT* LPHMIDIOUT; +alias HMIDISTRM* LPHMIDISTRM; +// typedef DRVCALLBACK MIDICALLBACK; +alias LPDRVCALLBACK LPMIDICALLBACK; +enum : uint { MIDIPATCHSIZE = 128 } +alias WORD PATCHARRAY[MIDIPATCHSIZE]; +alias WORD* LPPATCHARRAY; +alias WORD KEYARRAY[MIDIPATCHSIZE]; +alias WORD* LPKEYARRAY; + +alias MM_MIM_OPEN MIM_OPEN; +alias MM_MIM_CLOSE MIM_CLOSE; +alias MM_MIM_DATA MIM_DATA; +alias MM_MIM_LONGDATA MIM_LONGDATA; +alias MM_MIM_ERROR MIM_ERROR; +alias MM_MIM_LONGERROR MIM_LONGERROR; +alias MM_MOM_OPEN MOM_OPEN; +alias MM_MOM_CLOSE MOM_CLOSE; +alias MM_MOM_DONE MOM_DONE; + +// #if(WINVER >= 0x0400) +alias MM_MIM_MOREDATA MIM_MOREDATA; +alias MM_MOM_POSITIONCB MOM_POSITIONCB; +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MIDIMAPPER = cast(UINT)-1 } +enum : uint { MIDI_MAPPER = cast(UINT)-1 } + +// #if(WINVER >= 0x0400) + +enum : uint { MIDI_IO_STATUS = 0x00000020 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MIDI_CACHE_ALL = 1 } +enum : uint { MIDI_CACHE_BESTFIT = 2 } +enum : uint { MIDI_CACHE_QUERY = 3 } +enum : uint { MIDI_UNCACHE = 4 } + +// #ifdef _WIN32 + +struct tagMIDIOUTCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias tagMIDIOUTCAPSA MIDIOUTCAPSA; +alias tagMIDIOUTCAPSA* PMIDIOUTCAPSA; +alias tagMIDIOUTCAPSA* NPMIDIOUTCAPSA; +alias tagMIDIOUTCAPSA* LPMIDIOUTCAPSA; + +struct tagMIDIOUTCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; +} +alias tagMIDIOUTCAPSW MIDIOUTCAPSW; +alias tagMIDIOUTCAPSW* PMIDIOUTCAPSW; +alias tagMIDIOUTCAPSW* NPMIDIOUTCAPSW; +alias tagMIDIOUTCAPSW* LPMIDIOUTCAPSW; + +// #ifdef UNICODE +alias MIDIOUTCAPSW MIDIOUTCAPS; +alias PMIDIOUTCAPSW PMIDIOUTCAPS; +alias NPMIDIOUTCAPSW NPMIDIOUTCAPS; +alias LPMIDIOUTCAPSW LPMIDIOUTCAPS; +// #else +// ... +// #endif // UNICODE +struct tagMIDIOUTCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIDIOUTCAPS2A MIDIOUTCAPS2A; +alias tagMIDIOUTCAPS2A* PMIDIOUTCAPS2A; +alias tagMIDIOUTCAPS2A* NPMIDIOUTCAPS2A; +alias tagMIDIOUTCAPS2A* LPMIDIOUTCAPS2A; + +struct tagMIDIOUTCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wVoices; + WORD wNotes; + WORD wChannelMask; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIDIOUTCAPS2W MIDIOUTCAPS2W; +alias tagMIDIOUTCAPS2W* PMIDIOUTCAPS2W; +alias tagMIDIOUTCAPS2W* NPMIDIOUTCAPS2W; +alias tagMIDIOUTCAPS2W* LPMIDIOUTCAPS2W; + +// #ifdef UNICODE +alias MIDIOUTCAPS2W MIDIOUTCAPS2; +alias PMIDIOUTCAPS2W PMIDIOUTCAPS2; +alias NPMIDIOUTCAPS2W NPMIDIOUTCAPS2; +alias LPMIDIOUTCAPS2W LPMIDIOUTCAPS2; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { MOD_MIDIPORT = 1 } +enum : uint { MOD_SYNTH = 2 } +enum : uint { MOD_SQSYNTH = 3 } +enum : uint { MOD_FMSYNTH = 4 } +enum : uint { MOD_MAPPER = 5 } +enum : uint { MOD_WAVETABLE = 6 } +enum : uint { MOD_SWSYNTH = 7 } + +enum : uint { MIDICAPS_VOLUME = 0x0001 } +enum : uint { MIDICAPS_LRVOLUME = 0x0002 } +enum : uint { MIDICAPS_CACHE = 0x0004 } +// #if(WINVER >= 0x0400) +enum : uint { MIDICAPS_STREAM = 0x0008 } +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _WIN32 + +struct tagMIDIINCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; +// #if (WINVER >= 0x0400) + DWORD dwSupport; +// #endif +} +alias tagMIDIINCAPSA MIDIINCAPSA; +alias tagMIDIINCAPSA* PMIDIINCAPSA; +alias tagMIDIINCAPSA* NPMIDIINCAPSA; +alias tagMIDIINCAPSA* LPMIDIINCAPSA; + +struct tagMIDIINCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; +// #if (WINVER >= 0x0400) + DWORD dwSupport; +// #endif +} +alias tagMIDIINCAPSW MIDIINCAPSW; +alias tagMIDIINCAPSW* PMIDIINCAPSW; +alias tagMIDIINCAPSW* NPMIDIINCAPSW; +alias tagMIDIINCAPSW* LPMIDIINCAPSW; + +// #ifdef UNICODE +alias MIDIINCAPSW MIDIINCAPS; +alias PMIDIINCAPSW PMIDIINCAPS; +alias NPMIDIINCAPSW NPMIDIINCAPS; +alias LPMIDIINCAPSW LPMIDIINCAPS; +// #else +// ... +// #endif // UNICODE +struct tagMIDIINCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; +// #if (WINVER >= 0x0400) + DWORD dwSupport; +// #endif + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIDIINCAPS2A MIDIINCAPS2A; +alias tagMIDIINCAPS2A* PMIDIINCAPS2A; +alias tagMIDIINCAPS2A* NPMIDIINCAPS2A; +alias tagMIDIINCAPS2A* LPMIDIINCAPS2A; + +struct tagMIDIINCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; +// #if (WINVER >= 0x0400) + DWORD dwSupport; +// #endif + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIDIINCAPS2W MIDIINCAPS2W; +alias tagMIDIINCAPS2W* PMIDIINCAPS2W; +alias tagMIDIINCAPS2W* NPMIDIINCAPS2W; +alias tagMIDIINCAPS2W* LPMIDIINCAPS2W; + +// #ifdef UNICODE +alias MIDIINCAPS2W MIDIINCAPS2; +alias PMIDIINCAPS2W PMIDIINCAPS2; +alias NPMIDIINCAPS2W NPMIDIINCAPS2; +alias LPMIDIINCAPS2W LPMIDIINCAPS2; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #if (WINVER >= 0x0400) +// ... +// #endif +// ... +// #endif + +struct midihdr_tag { + LPSTR lpData; + DWORD dwBufferLength; + DWORD dwBytesRecorded; + DWORD_PTR dwUser; + DWORD dwFlags; + midihdr_tag *lpNext; + DWORD_PTR reserved; +// #if (WINVER >= 0x0400) + DWORD dwOffset; + DWORD_PTR dwReserved[8]; +// #endif +} +alias midihdr_tag MIDIHDR; +alias midihdr_tag* PMIDIHDR; +alias midihdr_tag* NPMIDIHDR; +alias midihdr_tag* LPMIDIHDR; + +// #if(WINVER >= 0x0400) +struct midievent_tag { + DWORD dwDeltaTime; + DWORD dwStreamID; + DWORD dwEvent; + DWORD dwParms[1]; +} +alias midievent_tag MIDIEVENT; + +struct midistrmbuffver_tag { + DWORD dwVersion; + DWORD dwMid; + DWORD dwOEMVersion; +} +alias midistrmbuffver_tag MIDISTRMBUFFVER; + +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MHDR_DONE = 0x00000001 } +enum : uint { MHDR_PREPARED = 0x00000002 } +enum : uint { MHDR_INQUEUE = 0x00000004 } +enum : uint { MHDR_ISSTRM = 0x00000008 } +// #if(WINVER >= 0x0400) + +enum : uint { MEVT_F_SHORT = 0x00000000 } +enum : uint { MEVT_F_LONG = 0x80000000 } +enum : uint { MEVT_F_CALLBACK = 0x40000000 } + +// #define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF)) +// #define MEVT_EVENTPARM(x) ((DWORD)((x)&0x00FFFFFFL)) + +enum : uint { MEVT_SHORTMSG = cast(BYTE)0x00 } +enum : uint { MEVT_TEMPO = cast(BYTE)0x01 } +enum : uint { MEVT_NOP = cast(BYTE)0x02 } + +enum : uint { MEVT_LONGMSG = cast(BYTE)0x80 } +enum : uint { MEVT_COMMENT = cast(BYTE)0x82 } +enum : uint { MEVT_VERSION = cast(BYTE)0x84 } + +enum { MIDISTRM_ERROR = -2 } + +enum : uint { MIDIPROP_SET = 0x80000000 } +enum : uint { MIDIPROP_GET = 0x40000000 } + +enum : uint { MIDIPROP_TIMEDIV = 0x00000001 } +enum : uint { MIDIPROP_TEMPO = 0x00000002 } + +struct midiproptimediv_tag { + DWORD cbStruct; + DWORD dwTimeDiv; +} +alias midiproptimediv_tag MIDIPROPTIMEDIV; +alias midiproptimediv_tag* LPMIDIPROPTIMEDIV; + +struct midiproptempo_tag { + DWORD cbStruct; + DWORD dwTempo; +} +alias midiproptempo_tag MIDIPROPTEMPO; +alias midiproptempo_tag* LPMIDIPROPTEMPO; + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export UINT midiOutGetNumDevs(); +// #if(WINVER >= 0x0400) +extern(Windows) export MMRESULT midiStreamOpen(LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +extern(Windows) export MMRESULT midiStreamClose(HMIDISTRM hms); + +extern(Windows) export MMRESULT midiStreamProperty(HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty); +extern(Windows) export MMRESULT midiStreamPosition(HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt); + +extern(Windows) export MMRESULT midiStreamOut(HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiStreamPause(HMIDISTRM hms); +extern(Windows) export MMRESULT midiStreamRestart(HMIDISTRM hms); +extern(Windows) export MMRESULT midiStreamStop(HMIDISTRM hms); + +// #ifdef _WIN32 +extern(Windows) export MMRESULT midiConnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved); +extern(Windows) export MMRESULT midiDisconnect(HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved); +// #endif +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT midiOutGetDevCapsA(UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc); +extern(Windows) export MMRESULT midiOutGetDevCapsW(UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc); +// #ifdef UNICODE +alias midiOutGetDevCapsW midiOutGetDevCaps; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +// #if (WINVER >= 0x0400) +extern(Windows) export MMRESULT midiOutGetVolume(HMIDIOUT hmo, LPDWORD pdwVolume); +extern(Windows) export MMRESULT midiOutSetVolume(HMIDIOUT hmo, DWORD dwVolume); +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT midiOutGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +extern(Windows) export MMRESULT midiOutGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +alias midiOutGetErrorTextW midiOutGetErrorText; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT midiOutOpen(LPHMIDIOUT phmo, UINT uDeviceID, + DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +extern(Windows) export MMRESULT midiOutClose(HMIDIOUT hmo); +extern(Windows) export MMRESULT midiOutPrepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiOutUnprepareHeader(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiOutShortMsg(HMIDIOUT hmo, DWORD dwMsg); +extern(Windows) export MMRESULT midiOutLongMsg(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiOutReset(HMIDIOUT hmo); +extern(Windows) export MMRESULT midiOutCachePatches(HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache); +extern(Windows) export MMRESULT midiOutCacheDrumPatches(HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache); +extern(Windows) export MMRESULT midiOutGetID(HMIDIOUT hmo, LPUINT puDeviceID); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT midiOutMessage(HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +extern(Windows) export UINT midiInGetNumDevs(); + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT midiInGetDevCapsA(UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic); +extern(Windows) export MMRESULT midiInGetDevCapsW(UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic); +// #ifdef UNICODE +alias midiInGetDevCapsW midiInGetDevCaps; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export MMRESULT midiInGetErrorTextA(MMRESULT mmrError, LPSTR pszText, UINT cchText); +extern(Windows) export MMRESULT midiInGetErrorTextW(MMRESULT mmrError, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +alias midiInGetErrorTextW midiInGetErrorText; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT midiInOpen(LPHMIDIIN phmi, UINT uDeviceID, + DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); +extern(Windows) export MMRESULT midiInClose(HMIDIIN hmi); +extern(Windows) export MMRESULT midiInPrepareHeader(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiInUnprepareHeader(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiInAddBuffer(HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh); +extern(Windows) export MMRESULT midiInStart(HMIDIIN hmi); +extern(Windows) export MMRESULT midiInStop(HMIDIIN hmi); +extern(Windows) export MMRESULT midiInReset(HMIDIIN hmi); +extern(Windows) export MMRESULT midiInGetID(HMIDIIN hmi, LPUINT puDeviceID); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT midiInMessage(HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +// #endif /* ifndef MMNOMIDI */ + +// #ifndef MMNOAUX + +enum : uint { AUX_MAPPER = cast(UINT)-1 } + +// #ifdef _WIN32 + +struct tagAUXCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias tagAUXCAPSA AUXCAPSA; +alias tagAUXCAPSA* PAUXCAPSA; +alias tagAUXCAPSA* NPAUXCAPSA; +alias tagAUXCAPSA* LPAUXCAPSA; + +struct tagAUXCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; +} +alias tagAUXCAPSW AUXCAPSW; +alias tagAUXCAPSW* PAUXCAPSW; +alias tagAUXCAPSW* NPAUXCAPSW; +alias tagAUXCAPSW* LPAUXCAPSW; + +// #ifdef UNICODE +alias AUXCAPSW AUXCAPS; +alias PAUXCAPSW PAUXCAPS; +alias NPAUXCAPSW NPAUXCAPS; +alias LPAUXCAPSW LPAUXCAPS; +// #else +// ... +// #endif // UNICODE +struct tagAUXCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagAUXCAPS2A AUXCAPS2A; +alias tagAUXCAPS2A* PAUXCAPS2A; +alias tagAUXCAPS2A* NPAUXCAPS2A; +alias tagAUXCAPS2A* LPAUXCAPS2A; + +struct tagAUXCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + WORD wTechnology; + WORD wReserved1; + DWORD dwSupport; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagAUXCAPS2W AUXCAPS2W; +alias tagAUXCAPS2W* PAUXCAPS2W; +alias tagAUXCAPS2W* NPAUXCAPS2W; +alias tagAUXCAPS2W* LPAUXCAPS2W; + +// #ifdef UNICODE +alias AUXCAPS2W AUXCAPS2; +alias PAUXCAPS2W PAUXCAPS2; +alias NPAUXCAPS2W NPAUXCAPS2; +alias LPAUXCAPS2W LPAUXCAPS2; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { AUXCAPS_CDAUDIO = 1 } +enum : uint { AUXCAPS_AUXIN = 2 } + +enum : uint { AUXCAPS_VOLUME = 0x0001 } +enum : uint { AUXCAPS_LRVOLUME = 0x0002 } + +extern(Windows) export UINT auxGetNumDevs(); +// #ifdef _WIN32 + +extern(Windows) export MMRESULT auxGetDevCapsA(UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac); +extern(Windows) export MMRESULT auxGetDevCapsW(UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac); +// #ifdef UNICODE +alias auxGetDevCapsW auxGetDevCaps; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif +extern(Windows) export MMRESULT auxSetVolume(UINT uDeviceID, DWORD dwVolume); +extern(Windows) export MMRESULT auxGetVolume(UINT uDeviceID, LPDWORD pdwVolume); + +// #if (WINVER >= 0x030a) +// #ifdef _WIN32 +extern(Windows) export MMRESULT auxOutMessage(UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2); +// #else +// ... +// #endif +// #endif /* ifdef WINVER >= 0x030a */ + +// #endif /* ifndef MMNOAUX */ + +// #ifndef MMNOMIXER + +alias void* HMIXEROBJ; +alias HMIXEROBJ* LPHMIXEROBJ; + +alias void* HMIXER; +alias HMIXER* LPHMIXER; + +enum : uint { MIXER_SHORT_NAME_CHARS = 16 } +enum : uint { MIXER_LONG_NAME_CHARS = 64 } + +enum : uint { MIXERR_INVALLINE = MIXERR_BASE + 0 } +enum : uint { MIXERR_INVALCONTROL = MIXERR_BASE + 1 } +enum : uint { MIXERR_INVALVALUE = MIXERR_BASE + 2 } +enum : uint { MIXERR_LASTERROR = MIXERR_BASE + 2 } + +enum : uint { MIXER_OBJECTF_HANDLE = 0x80000000 } +enum : uint { MIXER_OBJECTF_MIXER = 0x00000000 } +enum : uint { MIXER_OBJECTF_HMIXER = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER } +enum : uint { MIXER_OBJECTF_WAVEOUT = 0x10000000 } +enum : uint { MIXER_OBJECTF_HWAVEOUT = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT } +enum : uint { MIXER_OBJECTF_WAVEIN = 0x20000000 } +enum : uint { MIXER_OBJECTF_HWAVEIN = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN } +enum : uint { MIXER_OBJECTF_MIDIOUT = 0x30000000 } +enum : uint { MIXER_OBJECTF_HMIDIOUT = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT } +enum : uint { MIXER_OBJECTF_MIDIIN = 0x40000000 } +enum : uint { MIXER_OBJECTF_HMIDIIN = MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN } +enum : uint { MIXER_OBJECTF_AUX = 0x50000000 } + +extern(Windows) export UINT mixerGetNumDevs(); + +// #ifdef _WIN32 + +struct tagMIXERCAPSA { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; +} +alias tagMIXERCAPSA MIXERCAPSA; +alias tagMIXERCAPSA* PMIXERCAPSA; +alias tagMIXERCAPSA* LPMIXERCAPSA; + +struct tagMIXERCAPSW { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; +} +alias tagMIXERCAPSW MIXERCAPSW; +alias tagMIXERCAPSW* PMIXERCAPSW; +alias tagMIXERCAPSW* LPMIXERCAPSW; + +// #ifdef UNICODE +alias MIXERCAPSW MIXERCAPS; +alias PMIXERCAPSW PMIXERCAPS; +alias LPMIXERCAPSW LPMIXERCAPS; +// #else +// ... +// #endif // UNICODE +struct tagMIXERCAPS2A { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIXERCAPS2A MIXERCAPS2A; +alias tagMIXERCAPS2A* PMIXERCAPS2A; +alias tagMIXERCAPS2A* LPMIXERCAPS2A; + +struct tagMIXERCAPS2W { + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; + DWORD fdwSupport; + DWORD cDestinations; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagMIXERCAPS2W MIXERCAPS2W; +alias tagMIXERCAPS2W* PMIXERCAPS2W; +alias tagMIXERCAPS2W* LPMIXERCAPS2W; + +// #ifdef UNICODE +alias MIXERCAPS2W MIXERCAPS2; +alias PMIXERCAPS2W PMIXERCAPS2; +alias LPMIXERCAPS2W LPMIXERCAPS2; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT mixerGetDevCapsA(UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps); +extern(Windows) export MMRESULT mixerGetDevCapsW(UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps); +// #ifdef UNICODE +alias mixerGetDevCapsW mixerGetDevCaps; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export MMRESULT mixerOpen(LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen); + +extern(Windows) export MMRESULT mixerClose(HMIXER hmx); + +extern(Windows) export DWORD mixerMessage(HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); + +// #ifdef _WIN32 + +struct tagMIXERLINEA { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD_PTR dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + CHAR szShortName[MIXER_SHORT_NAME_CHARS]; + CHAR szName[MIXER_LONG_NAME_CHARS]; +struct { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + CHAR szPname[MAXPNAMELEN]; +} + +} +alias tagMIXERLINEA MIXERLINEA; +alias tagMIXERLINEA* PMIXERLINEA; +alias tagMIXERLINEA* LPMIXERLINEA; + +struct tagMIXERLINEW { + DWORD cbStruct; + DWORD dwDestination; + DWORD dwSource; + DWORD dwLineID; + DWORD fdwLine; + DWORD_PTR dwUser; + DWORD dwComponentType; + DWORD cChannels; + DWORD cConnections; + DWORD cControls; + WCHAR szShortName[MIXER_SHORT_NAME_CHARS]; + WCHAR szName[MIXER_LONG_NAME_CHARS]; +struct { + DWORD dwType; + DWORD dwDeviceID; + WORD wMid; + WORD wPid; + MMVERSION vDriverVersion; + WCHAR szPname[MAXPNAMELEN]; +} + +} +alias tagMIXERLINEW MIXERLINEW; +alias tagMIXERLINEW* PMIXERLINEW; +alias tagMIXERLINEW* LPMIXERLINEW; + +// #ifdef UNICODE +alias MIXERLINEW MIXERLINE; +alias PMIXERLINEW PMIXERLINE; +alias LPMIXERLINEW LPMIXERLINE; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXERLINE_LINEF_ACTIVE = 0x00000001 } +enum : uint { MIXERLINE_LINEF_DISCONNECTED = 0x00008000 } +enum : uint { MIXERLINE_LINEF_SOURCE = 0x80000000 } + +enum : uint { MIXERLINE_COMPONENTTYPE_DST_FIRST = 0x00000000 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_UNDEFINED = MIXERLINE_COMPONENTTYPE_DST_FIRST + 0 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_DIGITAL = MIXERLINE_COMPONENTTYPE_DST_FIRST + 1 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_LINE = MIXERLINE_COMPONENTTYPE_DST_FIRST + 2 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_MONITOR = MIXERLINE_COMPONENTTYPE_DST_FIRST + 3 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = MIXERLINE_COMPONENTTYPE_DST_FIRST + 4 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_HEADPHONES = MIXERLINE_COMPONENTTYPE_DST_FIRST + 5 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_TELEPHONE = MIXERLINE_COMPONENTTYPE_DST_FIRST + 6 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_WAVEIN = MIXERLINE_COMPONENTTYPE_DST_FIRST + 7 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_VOICEIN = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8 } +enum : uint { MIXERLINE_COMPONENTTYPE_DST_LAST = MIXERLINE_COMPONENTTYPE_DST_FIRST + 8 } + +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_FIRST = 0x00001000 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_DIGITAL = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_LINE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_ANALOG = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10 } +enum : uint { MIXERLINE_COMPONENTTYPE_SRC_LAST = MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10 } + +enum : uint { MIXERLINE_TARGETTYPE_UNDEFINED = 0 } +enum : uint { MIXERLINE_TARGETTYPE_WAVEOUT = 1 } +enum : uint { MIXERLINE_TARGETTYPE_WAVEIN = 2 } +enum : uint { MIXERLINE_TARGETTYPE_MIDIOUT = 3 } +enum : uint { MIXERLINE_TARGETTYPE_MIDIIN = 4 } +enum : uint { MIXERLINE_TARGETTYPE_AUX = 5 } + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT mixerGetLineInfoA(HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo); +extern(Windows) export MMRESULT mixerGetLineInfoW(HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo); +// #ifdef UNICODE +alias mixerGetLineInfoW mixerGetLineInfo; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXER_GETLINEINFOF_DESTINATION = 0x00000000 } +enum : uint { MIXER_GETLINEINFOF_SOURCE = 0x00000001 } +enum : uint { MIXER_GETLINEINFOF_LINEID = 0x00000002 } +enum : uint { MIXER_GETLINEINFOF_COMPONENTTYPE = 0x00000003 } +enum : uint { MIXER_GETLINEINFOF_TARGETTYPE = 0x00000004 } + +enum : uint { MIXER_GETLINEINFOF_QUERYMASK = 0x0000000F } + +extern(Windows) export MMRESULT mixerGetID(HMIXEROBJ hmxobj, UINT *puMxId, DWORD fdwId); + +// #ifdef _WIN32 + +struct tagMIXERCONTROLA { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + CHAR szShortName[MIXER_SHORT_NAME_CHARS]; + CHAR szName[MIXER_LONG_NAME_CHARS]; +union _0 { +struct { + LONG lMinimum; + LONG lMaximum; +} + +struct { + DWORD dwMinimum; + DWORD dwMaximum; +} + + DWORD dwReserved[6]; +} +_0 Bounds; + +union _1 { + DWORD cSteps; + DWORD cbCustomData; + DWORD dwReserved[6]; +} +_1 Metrics; + +} +alias tagMIXERCONTROLA MIXERCONTROLA; +alias tagMIXERCONTROLA* PMIXERCONTROLA; +alias tagMIXERCONTROLA* LPMIXERCONTROLA; + +struct tagMIXERCONTROLW { + DWORD cbStruct; + DWORD dwControlID; + DWORD dwControlType; + DWORD fdwControl; + DWORD cMultipleItems; + WCHAR szShortName[MIXER_SHORT_NAME_CHARS]; + WCHAR szName[MIXER_LONG_NAME_CHARS]; +union _2 { +struct { + LONG lMinimum; + LONG lMaximum; +} + +struct { + DWORD dwMinimum; + DWORD dwMaximum; +} + + DWORD dwReserved[6]; +} +_2 Bounds; + +union _3 { + DWORD cSteps; + DWORD cbCustomData; + DWORD dwReserved[6]; +} +_3 Metrics; + +} +alias tagMIXERCONTROLW MIXERCONTROLW; +alias tagMIXERCONTROLW* PMIXERCONTROLW; +alias tagMIXERCONTROLW* LPMIXERCONTROLW; + +// #ifdef UNICODE +alias MIXERCONTROLW MIXERCONTROL; +alias PMIXERCONTROLW PMIXERCONTROL; +alias LPMIXERCONTROLW LPMIXERCONTROL; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXERCONTROL_CONTROLF_UNIFORM = 0x00000001 } +enum : uint { MIXERCONTROL_CONTROLF_MULTIPLE = 0x00000002 } +enum : uint { MIXERCONTROL_CONTROLF_DISABLED = 0x80000000 } + +enum : uint { MIXERCONTROL_CT_CLASS_MASK = 0xF0000000 } +enum : uint { MIXERCONTROL_CT_CLASS_CUSTOM = 0x00000000 } +enum : uint { MIXERCONTROL_CT_CLASS_METER = 0x10000000 } +enum : uint { MIXERCONTROL_CT_CLASS_SWITCH = 0x20000000 } +enum : uint { MIXERCONTROL_CT_CLASS_NUMBER = 0x30000000 } +enum : uint { MIXERCONTROL_CT_CLASS_SLIDER = 0x40000000 } +enum : uint { MIXERCONTROL_CT_CLASS_FADER = 0x50000000 } +enum : uint { MIXERCONTROL_CT_CLASS_TIME = 0x60000000 } +enum : uint { MIXERCONTROL_CT_CLASS_LIST = 0x70000000 } + +enum : uint { MIXERCONTROL_CT_SUBCLASS_MASK = 0x0F000000 } + +enum : uint { MIXERCONTROL_CT_SC_SWITCH_BOOLEAN = 0x00000000 } +enum : uint { MIXERCONTROL_CT_SC_SWITCH_BUTTON = 0x01000000 } + +enum : uint { MIXERCONTROL_CT_SC_METER_POLLED = 0x00000000 } + +enum : uint { MIXERCONTROL_CT_SC_TIME_MICROSECS = 0x00000000 } +enum : uint { MIXERCONTROL_CT_SC_TIME_MILLISECS = 0x01000000 } + +enum : uint { MIXERCONTROL_CT_SC_LIST_SINGLE = 0x00000000 } +enum : uint { MIXERCONTROL_CT_SC_LIST_MULTIPLE = 0x01000000 } + +enum : uint { MIXERCONTROL_CT_UNITS_MASK = 0x00FF0000 } +enum : uint { MIXERCONTROL_CT_UNITS_CUSTOM = 0x00000000 } +enum : uint { MIXERCONTROL_CT_UNITS_BOOLEAN = 0x00010000 } +enum : uint { MIXERCONTROL_CT_UNITS_SIGNED = 0x00020000 } +enum : uint { MIXERCONTROL_CT_UNITS_UNSIGNED = 0x00030000 } +enum : uint { MIXERCONTROL_CT_UNITS_DECIBELS = 0x00040000 } +enum : uint { MIXERCONTROL_CT_UNITS_PERCENT = 0x00050000 } + +enum : uint { MIXERCONTROL_CONTROLTYPE_CUSTOM = MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM } +enum : uint { MIXERCONTROL_CONTROLTYPE_BOOLEANMETER = MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_SIGNEDMETER = MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_PEAKMETER = MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER = MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_BOOLEAN = MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_ONOFF = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_MUTE = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2 } +enum : uint { MIXERCONTROL_CONTROLTYPE_MONO = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3 } +enum : uint { MIXERCONTROL_CONTROLTYPE_LOUDNESS = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4 } +enum : uint { MIXERCONTROL_CONTROLTYPE_STEREOENH = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5 } +enum : uint { MIXERCONTROL_CONTROLTYPE_BASS_BOOST = MIXERCONTROL_CONTROLTYPE_BOOLEAN + 0x00002277 } +enum : uint { MIXERCONTROL_CONTROLTYPE_BUTTON = MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_DECIBELS = MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS } +enum : uint { MIXERCONTROL_CONTROLTYPE_SIGNED = MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_UNSIGNED = MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_PERCENT = MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT } +enum : uint { MIXERCONTROL_CONTROLTYPE_SLIDER = MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_PAN = MIXERCONTROL_CONTROLTYPE_SLIDER + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_QSOUNDPAN = MIXERCONTROL_CONTROLTYPE_SLIDER + 2 } +enum : uint { MIXERCONTROL_CONTROLTYPE_FADER = MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_VOLUME = MIXERCONTROL_CONTROLTYPE_FADER + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_BASS = MIXERCONTROL_CONTROLTYPE_FADER + 2 } +enum : uint { MIXERCONTROL_CONTROLTYPE_TREBLE = MIXERCONTROL_CONTROLTYPE_FADER + 3 } +enum : uint { MIXERCONTROL_CONTROLTYPE_EQUALIZER = MIXERCONTROL_CONTROLTYPE_FADER + 4 } +enum : uint { MIXERCONTROL_CONTROLTYPE_SINGLESELECT = MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_MUX = MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT = MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN } +enum : uint { MIXERCONTROL_CONTROLTYPE_MIXER = MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1 } +enum : uint { MIXERCONTROL_CONTROLTYPE_MICROTIME = MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED } +enum : uint { MIXERCONTROL_CONTROLTYPE_MILLITIME = MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED } + +// #ifdef _WIN32 + +struct tagMIXERLINECONTROLSA { + DWORD cbStruct; + DWORD dwLineID; +union { + DWORD dwControlID; + DWORD dwControlType; +} + + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLA pamxctrl; +} +alias tagMIXERLINECONTROLSA MIXERLINECONTROLSA; +alias tagMIXERLINECONTROLSA* PMIXERLINECONTROLSA; +alias tagMIXERLINECONTROLSA* LPMIXERLINECONTROLSA; + +struct tagMIXERLINECONTROLSW { + DWORD cbStruct; + DWORD dwLineID; +union { + DWORD dwControlID; + DWORD dwControlType; +} + + DWORD cControls; + DWORD cbmxctrl; + LPMIXERCONTROLW pamxctrl; +} +alias tagMIXERLINECONTROLSW MIXERLINECONTROLSW; +alias tagMIXERLINECONTROLSW* PMIXERLINECONTROLSW; +alias tagMIXERLINECONTROLSW* LPMIXERLINECONTROLSW; + +// #ifdef UNICODE +alias MIXERLINECONTROLSW MIXERLINECONTROLS; +alias PMIXERLINECONTROLSW PMIXERLINECONTROLS; +alias LPMIXERLINECONTROLSW LPMIXERLINECONTROLS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT mixerGetLineControlsA(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls); +extern(Windows) export MMRESULT mixerGetLineControlsW(HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls); +// #ifdef UNICODE +alias mixerGetLineControlsW mixerGetLineControls; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXER_GETLINECONTROLSF_ALL = 0x00000000 } +enum : uint { MIXER_GETLINECONTROLSF_ONEBYID = 0x00000001 } +enum : uint { MIXER_GETLINECONTROLSF_ONEBYTYPE = 0x00000002 } + +enum : uint { MIXER_GETLINECONTROLSF_QUERYMASK = 0x0000000F } + +struct tMIXERCONTROLDETAILS { + DWORD cbStruct; + DWORD dwControlID; + DWORD cChannels; +union { + HWND hwndOwner; + DWORD cMultipleItems; +} + + DWORD cbDetails; + LPVOID paDetails; +} +alias tMIXERCONTROLDETAILS MIXERCONTROLDETAILS; +alias tMIXERCONTROLDETAILS* PMIXERCONTROLDETAILS; +alias tMIXERCONTROLDETAILS* LPMIXERCONTROLDETAILS; + +// #ifdef _WIN32 + +struct tagMIXERCONTROLDETAILS_LISTTEXTA { + DWORD dwParam1; + DWORD dwParam2; + CHAR szName[MIXER_LONG_NAME_CHARS]; +} +alias tagMIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXTA; +alias tagMIXERCONTROLDETAILS_LISTTEXTA* PMIXERCONTROLDETAILS_LISTTEXTA; +alias tagMIXERCONTROLDETAILS_LISTTEXTA* LPMIXERCONTROLDETAILS_LISTTEXTA; + +struct tagMIXERCONTROLDETAILS_LISTTEXTW { + DWORD dwParam1; + DWORD dwParam2; + WCHAR szName[MIXER_LONG_NAME_CHARS]; +} +alias tagMIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXTW; +alias tagMIXERCONTROLDETAILS_LISTTEXTW* PMIXERCONTROLDETAILS_LISTTEXTW; +alias tagMIXERCONTROLDETAILS_LISTTEXTW* LPMIXERCONTROLDETAILS_LISTTEXTW; + +// #ifdef UNICODE +alias MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT; +alias PMIXERCONTROLDETAILS_LISTTEXTW PMIXERCONTROLDETAILS_LISTTEXT; +alias LPMIXERCONTROLDETAILS_LISTTEXTW LPMIXERCONTROLDETAILS_LISTTEXT; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tMIXERCONTROLDETAILS_BOOLEAN { + LONG fValue; +} +alias tMIXERCONTROLDETAILS_BOOLEAN MIXERCONTROLDETAILS_BOOLEAN; +alias tMIXERCONTROLDETAILS_BOOLEAN* PMIXERCONTROLDETAILS_BOOLEAN; +alias tMIXERCONTROLDETAILS_BOOLEAN* LPMIXERCONTROLDETAILS_BOOLEAN; + +struct tMIXERCONTROLDETAILS_SIGNED { + LONG lValue; +} +alias tMIXERCONTROLDETAILS_SIGNED MIXERCONTROLDETAILS_SIGNED; +alias tMIXERCONTROLDETAILS_SIGNED* PMIXERCONTROLDETAILS_SIGNED; +alias tMIXERCONTROLDETAILS_SIGNED* LPMIXERCONTROLDETAILS_SIGNED; + +struct tMIXERCONTROLDETAILS_UNSIGNED { + DWORD dwValue; +} +alias tMIXERCONTROLDETAILS_UNSIGNED MIXERCONTROLDETAILS_UNSIGNED; +alias tMIXERCONTROLDETAILS_UNSIGNED* PMIXERCONTROLDETAILS_UNSIGNED; +alias tMIXERCONTROLDETAILS_UNSIGNED* LPMIXERCONTROLDETAILS_UNSIGNED; + +// #ifdef _WIN32 + +extern(Windows) export MMRESULT mixerGetControlDetailsA(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); +extern(Windows) export MMRESULT mixerGetControlDetailsW(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); +// #ifdef UNICODE +alias mixerGetControlDetailsW mixerGetControlDetails; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +enum : uint { MIXER_GETCONTROLDETAILSF_VALUE = 0x00000000 } +enum : uint { MIXER_GETCONTROLDETAILSF_LISTTEXT = 0x00000001 } + +enum : uint { MIXER_GETCONTROLDETAILSF_QUERYMASK = 0x0000000F } + +extern(Windows) export MMRESULT mixerSetControlDetails(HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails); + +enum : uint { MIXER_SETCONTROLDETAILSF_VALUE = 0x00000000 } +enum : uint { MIXER_SETCONTROLDETAILSF_CUSTOM = 0x00000001 } + +enum : uint { MIXER_SETCONTROLDETAILSF_QUERYMASK = 0x0000000F } + +// #endif /* ifndef MMNOMIXER */ + +// #ifndef MMNOTIMER + +enum : uint { TIMERR_NOERROR = 0 } +enum : uint { TIMERR_NOCANDO = TIMERR_BASE+1 } +enum : uint { TIMERR_STRUCT = TIMERR_BASE+33 } + +// typedef void (CALLBACK TIMECALLBACK)(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2); + +extern(Windows) alias void function(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) LPTIMECALLBACK; + +enum : uint { TIME_ONESHOT = 0x0000 } +enum : uint { TIME_PERIODIC = 0x0001 } + +// #ifdef _WIN32 +enum : uint { TIME_CALLBACK_FUNCTION = 0x0000 } +enum : uint { TIME_CALLBACK_EVENT_SET = 0x0010 } +enum : uint { TIME_CALLBACK_EVENT_PULSE = 0x0020 } +// #endif + +// #if WINVER >= 0x0501 +enum : uint { TIME_KILL_SYNCHRONOUS = 0x0100 } + +// #endif // WINVER >= 0x0501 + +struct timecaps_tag { + UINT wPeriodMin; + UINT wPeriodMax; +} +alias timecaps_tag TIMECAPS; +alias timecaps_tag* PTIMECAPS; +alias timecaps_tag* NPTIMECAPS; +alias timecaps_tag* LPTIMECAPS; + +extern(Windows) export MMRESULT timeGetSystemTime(LPMMTIME pmmt, UINT cbmmt); +extern(Windows) export DWORD timeGetTime(); +extern(Windows) export MMRESULT timeSetEvent(UINT uDelay, UINT uResolution, + LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent); +extern(Windows) export MMRESULT timeKillEvent(UINT uTimerID); +extern(Windows) export MMRESULT timeGetDevCaps(LPTIMECAPS ptc, UINT cbtc); +extern(Windows) export MMRESULT timeBeginPeriod(UINT uPeriod); +extern(Windows) export MMRESULT timeEndPeriod(UINT uPeriod); + +// #endif /* ifndef MMNOTIMER */ + +// #ifndef MMNOJOY + +enum : uint { JOYERR_NOERROR = 0 } +enum : uint { JOYERR_PARMS = JOYERR_BASE+5 } +enum : uint { JOYERR_NOCANDO = JOYERR_BASE+6 } +enum : uint { JOYERR_UNPLUGGED = JOYERR_BASE+7 } + +enum : uint { JOY_BUTTON1 = 0x0001 } +enum : uint { JOY_BUTTON2 = 0x0002 } +enum : uint { JOY_BUTTON3 = 0x0004 } +enum : uint { JOY_BUTTON4 = 0x0008 } +enum : uint { JOY_BUTTON1CHG = 0x0100 } +enum : uint { JOY_BUTTON2CHG = 0x0200 } +enum : uint { JOY_BUTTON3CHG = 0x0400 } +enum : uint { JOY_BUTTON4CHG = 0x0800 } + +enum : uint { JOY_BUTTON5 = 0x00000010 } +enum : uint { JOY_BUTTON6 = 0x00000020 } +enum : uint { JOY_BUTTON7 = 0x00000040 } +enum : uint { JOY_BUTTON8 = 0x00000080 } +enum : uint { JOY_BUTTON9 = 0x00000100 } +enum : uint { JOY_BUTTON10 = 0x00000200 } +enum : uint { JOY_BUTTON11 = 0x00000400 } +enum : uint { JOY_BUTTON12 = 0x00000800 } +enum : uint { JOY_BUTTON13 = 0x00001000 } +enum : uint { JOY_BUTTON14 = 0x00002000 } +enum : uint { JOY_BUTTON15 = 0x00004000 } +enum : uint { JOY_BUTTON16 = 0x00008000 } +enum : uint { JOY_BUTTON17 = 0x00010000 } +enum : uint { JOY_BUTTON18 = 0x00020000 } +enum : uint { JOY_BUTTON19 = 0x00040000 } +enum : uint { JOY_BUTTON20 = 0x00080000 } +enum : uint { JOY_BUTTON21 = 0x00100000 } +enum : uint { JOY_BUTTON22 = 0x00200000 } +enum : uint { JOY_BUTTON23 = 0x00400000 } +enum : uint { JOY_BUTTON24 = 0x00800000 } +enum : uint { JOY_BUTTON25 = 0x01000000 } +enum : uint { JOY_BUTTON26 = 0x02000000 } +enum : uint { JOY_BUTTON27 = 0x04000000 } +enum : uint { JOY_BUTTON28 = 0x08000000 } +enum : uint { JOY_BUTTON29 = 0x10000000 } +enum : uint { JOY_BUTTON30 = 0x20000000 } +enum : uint { JOY_BUTTON31 = 0x40000000 } +enum : uint { JOY_BUTTON32 = 0x80000000 } + +enum : WORD { JOY_POVCENTERED = cast(WORD)-1 } +enum : uint { JOY_POVFORWARD = 0 } +enum : uint { JOY_POVRIGHT = 9000 } +enum : uint { JOY_POVBACKWARD = 18000 } +enum : uint { JOY_POVLEFT = 27000 } + +enum : uint { JOY_RETURNX = 0x00000001 } +enum : uint { JOY_RETURNY = 0x00000002 } +enum : uint { JOY_RETURNZ = 0x00000004 } +enum : uint { JOY_RETURNR = 0x00000008 } +enum : uint { JOY_RETURNU = 0x00000010 } +enum : uint { JOY_RETURNV = 0x00000020 } +enum : uint { JOY_RETURNPOV = 0x00000040 } +enum : uint { JOY_RETURNBUTTONS = 0x00000080 } +enum : uint { JOY_RETURNRAWDATA = 0x00000100 } +enum : uint { JOY_RETURNPOVCTS = 0x00000200 } +enum : uint { JOY_RETURNCENTERED = 0x00000400 } +enum : uint { JOY_USEDEADZONE = 0x00000800 } +enum : uint { JOY_RETURNALL = JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV | JOY_RETURNBUTTONS } +enum : uint { JOY_CAL_READALWAYS = 0x00010000 } +enum : uint { JOY_CAL_READXYONLY = 0x00020000 } +enum : uint { JOY_CAL_READ3 = 0x00040000 } +enum : uint { JOY_CAL_READ4 = 0x00080000 } +enum : uint { JOY_CAL_READXONLY = 0x00100000 } +enum : uint { JOY_CAL_READYONLY = 0x00200000 } +enum : uint { JOY_CAL_READ5 = 0x00400000 } +enum : uint { JOY_CAL_READ6 = 0x00800000 } +enum : uint { JOY_CAL_READZONLY = 0x01000000 } +enum : uint { JOY_CAL_READRONLY = 0x02000000 } +enum : uint { JOY_CAL_READUONLY = 0x04000000 } +enum : uint { JOY_CAL_READVONLY = 0x08000000 } + +enum : uint { JOYSTICKID1 = 0 } +enum : uint { JOYSTICKID2 = 1 } + +enum : uint { JOYCAPS_HASZ = 0x0001 } +enum : uint { JOYCAPS_HASR = 0x0002 } +enum : uint { JOYCAPS_HASU = 0x0004 } +enum : uint { JOYCAPS_HASV = 0x0008 } +enum : uint { JOYCAPS_HASPOV = 0x0010 } +enum : uint { JOYCAPS_POV4DIR = 0x0020 } +enum : uint { JOYCAPS_POVCTS = 0x0040 } + +// #ifdef _WIN32 + +struct tagJOYCAPSA { + 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; +// #if (WINVER >= 0x0400) + 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]; +// #endif +} +alias tagJOYCAPSA JOYCAPSA; +alias tagJOYCAPSA* PJOYCAPSA; +alias tagJOYCAPSA* NPJOYCAPSA; +alias tagJOYCAPSA* LPJOYCAPSA; + +struct tagJOYCAPSW { + 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; +// #if (WINVER >= 0x0400) + 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]; +// #endif +} +alias tagJOYCAPSW JOYCAPSW; +alias tagJOYCAPSW* PJOYCAPSW; +alias tagJOYCAPSW* NPJOYCAPSW; +alias tagJOYCAPSW* LPJOYCAPSW; + +// #ifdef UNICODE +alias JOYCAPSW JOYCAPS; +alias PJOYCAPSW PJOYCAPS; +alias NPJOYCAPSW NPJOYCAPS; +alias LPJOYCAPSW LPJOYCAPS; +// #else +// ... +// #endif // UNICODE +struct tagJOYCAPS2A { + 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]; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagJOYCAPS2A JOYCAPS2A; +alias tagJOYCAPS2A* PJOYCAPS2A; +alias tagJOYCAPS2A* NPJOYCAPS2A; +alias tagJOYCAPS2A* LPJOYCAPS2A; + +struct tagJOYCAPS2W { + 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]; + GUID ManufacturerGuid; + GUID ProductGuid; + GUID NameGuid; +} +alias tagJOYCAPS2W JOYCAPS2W; +alias tagJOYCAPS2W* PJOYCAPS2W; +alias tagJOYCAPS2W* NPJOYCAPS2W; +alias tagJOYCAPS2W* LPJOYCAPS2W; + +// #ifdef UNICODE +alias JOYCAPS2W JOYCAPS2; +alias PJOYCAPS2W PJOYCAPS2; +alias NPJOYCAPS2W NPJOYCAPS2; +alias LPJOYCAPS2W LPJOYCAPS2; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #if (WINVER >= 0x0400) +// ... +// #endif +// ... +// #endif + +struct joyinfo_tag { + UINT wXpos; + UINT wYpos; + UINT wZpos; + UINT wButtons; +} +alias joyinfo_tag JOYINFO; +alias joyinfo_tag* PJOYINFO; +alias joyinfo_tag* NPJOYINFO; +alias joyinfo_tag* LPJOYINFO; + +// #if(WINVER >= 0x0400) +struct joyinfoex_tag { + 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_tag JOYINFOEX; +alias joyinfoex_tag* PJOYINFOEX; +alias joyinfoex_tag* NPJOYINFOEX; +alias joyinfoex_tag* LPJOYINFOEX; + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export UINT joyGetNumDevs(); +// #ifdef _WIN32 + +extern(Windows) export MMRESULT joyGetDevCapsA(UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc); +extern(Windows) export MMRESULT joyGetDevCapsW(UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc); +// #ifdef UNICODE +alias joyGetDevCapsW joyGetDevCaps; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif +extern(Windows) export MMRESULT joyGetPos(UINT uJoyID, LPJOYINFO pji); + +// #if(WINVER >= 0x0400) +extern(Windows) export MMRESULT joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export MMRESULT joyGetThreshold(UINT uJoyID, LPUINT puThreshold); +extern(Windows) export MMRESULT joyReleaseCapture(UINT uJoyID); +extern(Windows) export MMRESULT joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, + BOOL fChanged); +extern(Windows) export MMRESULT joySetThreshold(UINT uJoyID, UINT uThreshold); + +// #endif /* ifndef MMNOJOY */ + +// #ifndef MMNOMMIO + +enum : uint { MMIOERR_BASE = 256 } +enum : uint { MMIOERR_FILENOTFOUND = MMIOERR_BASE + 1 } +enum : uint { MMIOERR_OUTOFMEMORY = MMIOERR_BASE + 2 } +enum : uint { MMIOERR_CANNOTOPEN = MMIOERR_BASE + 3 } +enum : uint { MMIOERR_CANNOTCLOSE = MMIOERR_BASE + 4 } +enum : uint { MMIOERR_CANNOTREAD = MMIOERR_BASE + 5 } +enum : uint { MMIOERR_CANNOTWRITE = MMIOERR_BASE + 6 } +enum : uint { MMIOERR_CANNOTSEEK = MMIOERR_BASE + 7 } +enum : uint { MMIOERR_CANNOTEXPAND = MMIOERR_BASE + 8 } +enum : uint { MMIOERR_CHUNKNOTFOUND = MMIOERR_BASE + 9 } +enum : uint { MMIOERR_UNBUFFERED = MMIOERR_BASE + 10 } +enum : uint { MMIOERR_PATHNOTFOUND = MMIOERR_BASE + 11 } +enum : uint { MMIOERR_ACCESSDENIED = MMIOERR_BASE + 12 } +enum : uint { MMIOERR_SHARINGVIOLATION = MMIOERR_BASE + 13 } +enum : uint { MMIOERR_NETWORKERROR = MMIOERR_BASE + 14 } +enum : uint { MMIOERR_TOOMANYOPENFILES = MMIOERR_BASE + 15 } +enum : uint { MMIOERR_INVALIDFILE = MMIOERR_BASE + 16 } + +const char CFSEPCHAR = '+'; + +alias DWORD FOURCC; +alias char* HPSTR; +alias void* HMMIO; +// typedef LRESULT (CALLBACK MMIOPROC)(LPSTR lpmmioinfo, UINT uMsg, LPARAM lParam1, LPARAM lParam2); +extern(Windows) alias LRESULT function(LPSTR lpmmioinfo, UINT uMsg, LPARAM lParam1, LPARAM lParam2) 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 MMIOINFO; +alias _MMIOINFO* PMMIOINFO; +alias _MMIOINFO* NPMMIOINFO; +alias _MMIOINFO* LPMMIOINFO; + +alias MMIOINFO* LPCMMIOINFO; + +struct _MMCKINFO { + FOURCC ckid; + DWORD cksize; + FOURCC fccType; + DWORD dwDataOffset; + DWORD dwFlags; +} +alias _MMCKINFO MMCKINFO; +alias _MMCKINFO* PMMCKINFO; +alias _MMCKINFO* NPMMCKINFO; +alias _MMCKINFO* LPMMCKINFO; + +alias MMCKINFO* LPCMMCKINFO; + +enum : uint { MMIO_RWMODE = 0x00000003 } +enum : uint { MMIO_SHAREMODE = 0x00000070 } + +enum : uint { MMIO_CREATE = 0x00001000 } +enum : uint { MMIO_PARSE = 0x00000100 } +enum : uint { MMIO_DELETE = 0x00000200 } +enum : uint { MMIO_EXIST = 0x00004000 } +enum : uint { MMIO_ALLOCBUF = 0x00010000 } +enum : uint { MMIO_GETTEMP = 0x00020000 } + +enum : uint { MMIO_DIRTY = 0x10000000 } + +enum : uint { MMIO_READ = 0x00000000 } +enum : uint { MMIO_WRITE = 0x00000001 } +enum : uint { MMIO_READWRITE = 0x00000002 } + +enum : uint { MMIO_COMPAT = 0x00000000 } +enum : uint { MMIO_EXCLUSIVE = 0x00000010 } +enum : uint { MMIO_DENYWRITE = 0x00000020 } +enum : uint { MMIO_DENYREAD = 0x00000030 } +enum : uint { MMIO_DENYNONE = 0x00000040 } + +enum : uint { MMIO_FHOPEN = 0x0010 } +enum : uint { MMIO_EMPTYBUF = 0x0010 } +enum : uint { MMIO_TOUPPER = 0x0010 } +enum : uint { MMIO_INSTALLPROC = 0x00010000 } +enum : uint { MMIO_GLOBALPROC = 0x10000000 } +enum : uint { MMIO_REMOVEPROC = 0x00020000 } +enum : uint { MMIO_UNICODEPROC = 0x01000000 } +enum : uint { MMIO_FINDPROC = 0x00040000 } +enum : uint { MMIO_FINDCHUNK = 0x0010 } +enum : uint { MMIO_FINDRIFF = 0x0020 } +enum : uint { MMIO_FINDLIST = 0x0040 } +enum : uint { MMIO_CREATERIFF = 0x0020 } +enum : uint { MMIO_CREATELIST = 0x0040 } + +alias MMIO_READ MMIOM_READ; +alias MMIO_WRITE MMIOM_WRITE; +enum : uint { MMIOM_SEEK = 2 } +enum : uint { MMIOM_OPEN = 3 } +enum : uint { MMIOM_CLOSE = 4 } +enum : uint { MMIOM_WRITEFLUSH = 5 } + +// #if (WINVER >= 0x030a) +enum : uint { MMIOM_RENAME = 6 } +// #endif /* ifdef WINVER >= 0x030a */ + +enum : uint { MMIOM_USER = 0x8000 } + +// #define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F') +// #define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T') + +// #define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ') +// #define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ') + +// #ifndef SEEK_SET +enum : uint { SEEK_SET = 0 } +enum : uint { SEEK_CUR = 1 } +enum : uint { SEEK_END = 2 } +// #endif /* ifndef SEEK_SET */ + +enum : uint { MMIO_DEFAULTBUFFER = 8192 } + +// #define mmioFOURCC(ch0, ch1, ch2, ch3) MAKEFOURCC(ch0, ch1, ch2, ch3) + +// #ifdef _WIN32 + +extern(Windows) export FOURCC mmioStringToFOURCCA(LPCSTR sz, UINT uFlags); +extern(Windows) export FOURCC mmioStringToFOURCCW(LPCWSTR sz, UINT uFlags); +// #ifdef UNICODE +alias mmioStringToFOURCCW mmioStringToFOURCC; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export LPMMIOPROC mmioInstallIOProcA(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); +extern(Windows) export LPMMIOPROC mmioInstallIOProcW(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); +// #ifdef UNICODE +alias mmioInstallIOProcW mmioInstallIOProc; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HMMIO mmioOpenA(LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); +extern(Windows) export HMMIO mmioOpenW(LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen); +// #ifdef UNICODE +alias mmioOpenW mmioOpen; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export MMRESULT mmioRenameA(LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename); +extern(Windows) export MMRESULT mmioRenameW(LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename); +// #ifdef UNICODE +alias mmioRenameW mmioRename; +// #else +// #... +// #endif // !UNICODE +// #else +// ... +// #if (WINVER >= 0x030a) +// ... +// #endif /* ifdef WINVER >= 0x030a */ +// #endif + +extern(Windows) export MMRESULT mmioClose(HMMIO hmmio, UINT fuClose); +extern(Windows) export LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch); +extern(Windows) export LONG mmioWrite(HMMIO hmmio, char * pch, LONG cch); +extern(Windows) export LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin); +extern(Windows) export MMRESULT mmioGetInfo(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo); +extern(Windows) export MMRESULT mmioSetInfo(HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo); +extern(Windows) export MMRESULT mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, + UINT fuBuffer); +extern(Windows) export MMRESULT mmioFlush(HMMIO hmmio, UINT fuFlush); +extern(Windows) export MMRESULT mmioAdvance(HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance); +extern(Windows) export LRESULT mmioSendMessage(HMMIO hmmio, UINT uMsg, + LPARAM lParam1, LPARAM lParam2); +extern(Windows) export MMRESULT mmioDescend(HMMIO hmmio, LPMMCKINFO pmmcki, + MMCKINFO * pmmckiParent, UINT fuDescend); +extern(Windows) export MMRESULT mmioAscend(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend); +extern(Windows) export MMRESULT mmioCreateChunk(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate); + +// #endif /* ifndef MMNOMMIO */ + +// #ifndef MMNOMCI + +// #ifndef _MCIERROR_ /* MCIERROR is defined in some post 3.1 apps */ +// #define _MCIERROR_ +alias DWORD MCIERROR; +// #endif + +// #ifndef _MCIDEVICEID_ /* Same with MCIDEVICEID */ +// #define _MCIDEVICEID_ +alias UINT MCIDEVICEID; +// #endif + +extern(Windows) alias UINT function(MCIDEVICEID mciId, DWORD dwYieldData) YIELDPROC; + +// #ifdef _WIN32 + +extern(Windows) export MCIERROR mciSendCommandA(MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); +extern(Windows) export MCIERROR mciSendCommandW(MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2); +// #ifdef UNICODE +alias mciSendCommandW mciSendCommand; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export MCIERROR mciSendStringA(LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); +extern(Windows) export MCIERROR mciSendStringW(LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback); +// #ifdef UNICODE +alias mciSendStringW mciSendString; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export MCIDEVICEID mciGetDeviceIDA(LPCSTR pszDevice); +extern(Windows) export MCIDEVICEID mciGetDeviceIDW(LPCWSTR pszDevice); +// #ifdef UNICODE +alias mciGetDeviceIDW mciGetDeviceID; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export MCIDEVICEID mciGetDeviceIDFromElementIDA(DWORD dwElementID, LPCSTR lpstrType ); +extern(Windows) export MCIDEVICEID mciGetDeviceIDFromElementIDW(DWORD dwElementID, LPCWSTR lpstrType ); +// #ifdef UNICODE +alias mciGetDeviceIDFromElementIDW mciGetDeviceIDFromElementID; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL mciGetErrorStringA(MCIERROR mcierr, LPSTR pszText, UINT cchText); +extern(Windows) export BOOL mciGetErrorStringW(MCIERROR mcierr, LPWSTR pszText, UINT cchText); +// #ifdef UNICODE +alias mciGetErrorStringW mciGetErrorString; +// #else +// #... +// #endif // !UNICODE + +// #else +// ... +// #endif + +extern(Windows) export BOOL mciSetYieldProc(MCIDEVICEID mciId, YIELDPROC fpYieldProc, + DWORD dwYieldData); + +// #if (WINVER >= 0x030a) +extern(Windows) export HTASK mciGetCreatorTask(MCIDEVICEID mciId); +extern(Windows) export YIELDPROC mciGetYieldProc(MCIDEVICEID mciId, LPDWORD pdwYieldData); +// #endif /* ifdef WINVER >= 0x030a */ + +// #if (WINVER < 0x030a) +// ... +// #endif /* ifdef WINVER < 0x030a */ + +enum : uint { MCIERR_INVALID_DEVICE_ID = MCIERR_BASE + 1 } +enum : uint { MCIERR_UNRECOGNIZED_KEYWORD = MCIERR_BASE + 3 } +enum : uint { MCIERR_UNRECOGNIZED_COMMAND = MCIERR_BASE + 5 } +enum : uint { MCIERR_HARDWARE = MCIERR_BASE + 6 } +enum : uint { MCIERR_INVALID_DEVICE_NAME = MCIERR_BASE + 7 } +enum : uint { MCIERR_OUT_OF_MEMORY = MCIERR_BASE + 8 } +enum : uint { MCIERR_DEVICE_OPEN = MCIERR_BASE + 9 } +enum : uint { MCIERR_CANNOT_LOAD_DRIVER = MCIERR_BASE + 10 } +enum : uint { MCIERR_MISSING_COMMAND_STRING = MCIERR_BASE + 11 } +enum : uint { MCIERR_PARAM_OVERFLOW = MCIERR_BASE + 12 } +enum : uint { MCIERR_MISSING_STRING_ARGUMENT = MCIERR_BASE + 13 } +enum : uint { MCIERR_BAD_INTEGER = MCIERR_BASE + 14 } +enum : uint { MCIERR_PARSER_INTERNAL = MCIERR_BASE + 15 } +enum : uint { MCIERR_DRIVER_INTERNAL = MCIERR_BASE + 16 } +enum : uint { MCIERR_MISSING_PARAMETER = MCIERR_BASE + 17 } +enum : uint { MCIERR_UNSUPPORTED_FUNCTION = MCIERR_BASE + 18 } +enum : uint { MCIERR_FILE_NOT_FOUND = MCIERR_BASE + 19 } +enum : uint { MCIERR_DEVICE_NOT_READY = MCIERR_BASE + 20 } +enum : uint { MCIERR_INTERNAL = MCIERR_BASE + 21 } +enum : uint { MCIERR_DRIVER = MCIERR_BASE + 22 } +enum : uint { MCIERR_CANNOT_USE_ALL = MCIERR_BASE + 23 } +enum : uint { MCIERR_MULTIPLE = MCIERR_BASE + 24 } +enum : uint { MCIERR_EXTENSION_NOT_FOUND = MCIERR_BASE + 25 } +enum : uint { MCIERR_OUTOFRANGE = MCIERR_BASE + 26 } +enum : uint { MCIERR_FLAGS_NOT_COMPATIBLE = MCIERR_BASE + 28 } +enum : uint { MCIERR_FILE_NOT_SAVED = MCIERR_BASE + 30 } +enum : uint { MCIERR_DEVICE_TYPE_REQUIRED = MCIERR_BASE + 31 } +enum : uint { MCIERR_DEVICE_LOCKED = MCIERR_BASE + 32 } +enum : uint { MCIERR_DUPLICATE_ALIAS = MCIERR_BASE + 33 } +enum : uint { MCIERR_BAD_CONSTANT = MCIERR_BASE + 34 } +enum : uint { MCIERR_MUST_USE_SHAREABLE = MCIERR_BASE + 35 } +enum : uint { MCIERR_MISSING_DEVICE_NAME = MCIERR_BASE + 36 } +enum : uint { MCIERR_BAD_TIME_FORMAT = MCIERR_BASE + 37 } +enum : uint { MCIERR_NO_CLOSING_QUOTE = MCIERR_BASE + 38 } +enum : uint { MCIERR_DUPLICATE_FLAGS = MCIERR_BASE + 39 } +enum : uint { MCIERR_INVALID_FILE = MCIERR_BASE + 40 } +enum : uint { MCIERR_NULL_PARAMETER_BLOCK = MCIERR_BASE + 41 } +enum : uint { MCIERR_UNNAMED_RESOURCE = MCIERR_BASE + 42 } +enum : uint { MCIERR_NEW_REQUIRES_ALIAS = MCIERR_BASE + 43 } +enum : uint { MCIERR_NOTIFY_ON_AUTO_OPEN = MCIERR_BASE + 44 } +enum : uint { MCIERR_NO_ELEMENT_ALLOWED = MCIERR_BASE + 45 } +enum : uint { MCIERR_NONAPPLICABLE_FUNCTION = MCIERR_BASE + 46 } +enum : uint { MCIERR_ILLEGAL_FOR_AUTO_OPEN = MCIERR_BASE + 47 } +enum : uint { MCIERR_FILENAME_REQUIRED = MCIERR_BASE + 48 } +enum : uint { MCIERR_EXTRA_CHARACTERS = MCIERR_BASE + 49 } +enum : uint { MCIERR_DEVICE_NOT_INSTALLED = MCIERR_BASE + 50 } +enum : uint { MCIERR_GET_CD = MCIERR_BASE + 51 } +enum : uint { MCIERR_SET_CD = MCIERR_BASE + 52 } +enum : uint { MCIERR_SET_DRIVE = MCIERR_BASE + 53 } +enum : uint { MCIERR_DEVICE_LENGTH = MCIERR_BASE + 54 } +enum : uint { MCIERR_DEVICE_ORD_LENGTH = MCIERR_BASE + 55 } +enum : uint { MCIERR_NO_INTEGER = MCIERR_BASE + 56 } + +enum : uint { MCIERR_WAVE_OUTPUTSINUSE = MCIERR_BASE + 64 } +enum : uint { MCIERR_WAVE_SETOUTPUTINUSE = MCIERR_BASE + 65 } +enum : uint { MCIERR_WAVE_INPUTSINUSE = MCIERR_BASE + 66 } +enum : uint { MCIERR_WAVE_SETINPUTINUSE = MCIERR_BASE + 67 } +enum : uint { MCIERR_WAVE_OUTPUTUNSPECIFIED = MCIERR_BASE + 68 } +enum : uint { MCIERR_WAVE_INPUTUNSPECIFIED = MCIERR_BASE + 69 } +enum : uint { MCIERR_WAVE_OUTPUTSUNSUITABLE = MCIERR_BASE + 70 } +enum : uint { MCIERR_WAVE_SETOUTPUTUNSUITABLE = MCIERR_BASE + 71 } +enum : uint { MCIERR_WAVE_INPUTSUNSUITABLE = MCIERR_BASE + 72 } +enum : uint { MCIERR_WAVE_SETINPUTUNSUITABLE = MCIERR_BASE + 73 } + +enum : uint { MCIERR_SEQ_DIV_INCOMPATIBLE = MCIERR_BASE + 80 } +enum : uint { MCIERR_SEQ_PORT_INUSE = MCIERR_BASE + 81 } +enum : uint { MCIERR_SEQ_PORT_NONEXISTENT = MCIERR_BASE + 82 } +enum : uint { MCIERR_SEQ_PORT_MAPNODEVICE = MCIERR_BASE + 83 } +enum : uint { MCIERR_SEQ_PORT_MISCERROR = MCIERR_BASE + 84 } +enum : uint { MCIERR_SEQ_TIMER = MCIERR_BASE + 85 } +enum : uint { MCIERR_SEQ_PORTUNSPECIFIED = MCIERR_BASE + 86 } +enum : uint { MCIERR_SEQ_NOMIDIPRESENT = MCIERR_BASE + 87 } + +enum : uint { MCIERR_NO_WINDOW = MCIERR_BASE + 90 } +enum : uint { MCIERR_CREATEWINDOW = MCIERR_BASE + 91 } +enum : uint { MCIERR_FILE_READ = MCIERR_BASE + 92 } +enum : uint { MCIERR_FILE_WRITE = MCIERR_BASE + 93 } + +enum : uint { MCIERR_NO_IDENTITY = MCIERR_BASE + 94 } + +enum : uint { MCIERR_CUSTOM_DRIVER_BASE = MCIERR_BASE + 256 } + +alias DRV_MCI_FIRST MCI_FIRST; + +enum : uint { MCI_OPEN = 0x0803 } +enum : uint { MCI_CLOSE = 0x0804 } +enum : uint { MCI_ESCAPE = 0x0805 } +enum : uint { MCI_PLAY = 0x0806 } +enum : uint { MCI_SEEK = 0x0807 } +enum : uint { MCI_STOP = 0x0808 } +enum : uint { MCI_PAUSE = 0x0809 } +enum : uint { MCI_INFO = 0x080A } +enum : uint { MCI_GETDEVCAPS = 0x080B } +enum : uint { MCI_SPIN = 0x080C } +enum : uint { MCI_SET = 0x080D } +enum : uint { MCI_STEP = 0x080E } +enum : uint { MCI_RECORD = 0x080F } +enum : uint { MCI_SYSINFO = 0x0810 } +enum : uint { MCI_BREAK = 0x0811 } +enum : uint { MCI_SAVE = 0x0813 } +enum : uint { MCI_STATUS = 0x0814 } +enum : uint { MCI_CUE = 0x0830 } +enum : uint { MCI_REALIZE = 0x0840 } +enum : uint { MCI_WINDOW = 0x0841 } +enum : uint { MCI_PUT = 0x0842 } +enum : uint { MCI_WHERE = 0x0843 } +enum : uint { MCI_FREEZE = 0x0844 } +enum : uint { MCI_UNFREEZE = 0x0845 } +enum : uint { MCI_LOAD = 0x0850 } +enum : uint { MCI_CUT = 0x0851 } +enum : uint { MCI_COPY = 0x0852 } +enum : uint { MCI_PASTE = 0x0853 } +enum : uint { MCI_UPDATE = 0x0854 } +enum : uint { MCI_RESUME = 0x0855 } +enum : uint { MCI_DELETE = 0x0856 } + +enum : uint { MCI_USER_MESSAGES = DRV_MCI_FIRST + 0x400 } +enum : uint { MCI_LAST = 0x0FFF } + +enum : uint { MCI_ALL_DEVICE_ID = cast(MCIDEVICEID)-1 } + +enum : uint { MCI_DEVTYPE_VCR = 513 } +enum : uint { MCI_DEVTYPE_VIDEODISC = 514 } +enum : uint { MCI_DEVTYPE_OVERLAY = 515 } +enum : uint { MCI_DEVTYPE_CD_AUDIO = 516 } +enum : uint { MCI_DEVTYPE_DAT = 517 } +enum : uint { MCI_DEVTYPE_SCANNER = 518 } +enum : uint { MCI_DEVTYPE_ANIMATION = 519 } +enum : uint { MCI_DEVTYPE_DIGITAL_VIDEO = 520 } +enum : uint { MCI_DEVTYPE_OTHER = 521 } +enum : uint { MCI_DEVTYPE_WAVEFORM_AUDIO = 522 } +enum : uint { MCI_DEVTYPE_SEQUENCER = 523 } + +alias MCI_DEVTYPE_VCR MCI_DEVTYPE_FIRST; +alias MCI_DEVTYPE_SEQUENCER MCI_DEVTYPE_LAST; + +enum : uint { MCI_DEVTYPE_FIRST_USER = 0x1000 } + +enum : uint { MCI_MODE_NOT_READY = MCI_STRING_OFFSET + 12 } +enum : uint { MCI_MODE_STOP = MCI_STRING_OFFSET + 13 } +enum : uint { MCI_MODE_PLAY = MCI_STRING_OFFSET + 14 } +enum : uint { MCI_MODE_RECORD = MCI_STRING_OFFSET + 15 } +enum : uint { MCI_MODE_SEEK = MCI_STRING_OFFSET + 16 } +enum : uint { MCI_MODE_PAUSE = MCI_STRING_OFFSET + 17 } +enum : uint { MCI_MODE_OPEN = MCI_STRING_OFFSET + 18 } + +enum : uint { MCI_FORMAT_MILLISECONDS = 0 } +enum : uint { MCI_FORMAT_HMS = 1 } +enum : uint { MCI_FORMAT_MSF = 2 } +enum : uint { MCI_FORMAT_FRAMES = 3 } +enum : uint { MCI_FORMAT_SMPTE_24 = 4 } +enum : uint { MCI_FORMAT_SMPTE_25 = 5 } +enum : uint { MCI_FORMAT_SMPTE_30 = 6 } +enum : uint { MCI_FORMAT_SMPTE_30DROP = 7 } +enum : uint { MCI_FORMAT_BYTES = 8 } +enum : uint { MCI_FORMAT_SAMPLES = 9 } +enum : uint { MCI_FORMAT_TMSF = 10 } + +// #define MCI_MSF_MINUTE(msf) ((BYTE)(msf)) +// #define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8)) +// #define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16)) + +// #define MCI_MAKE_MSF(m, s, f) ((DWORD)(((BYTE)(m) | ((WORD)(s)<<8)) | (((DWORD)(BYTE)(f))<<16))) + +// #define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf)) +// #define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8)) +// #define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16)) +// #define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24)) + +// #define MCI_MAKE_TMSF(t, m, s, f) ((DWORD)(((BYTE)(t) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s) | ((WORD)(f)<<8))<<16))) + +// #define MCI_HMS_HOUR(hms) ((BYTE)(hms)) +// #define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8)) +// #define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16)) + +// #define MCI_MAKE_HMS(h, m, s) ((DWORD)(((BYTE)(h) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s))<<16))) + +enum : uint { MCI_NOTIFY_SUCCESSFUL = 0x0001 } +enum : uint { MCI_NOTIFY_SUPERSEDED = 0x0002 } +enum : uint { MCI_NOTIFY_ABORTED = 0x0004 } +enum : uint { MCI_NOTIFY_FAILURE = 0x0008 } + +enum : uint { MCI_NOTIFY = 0x00000001 } +enum : uint { MCI_WAIT = 0x00000002 } +enum : uint { MCI_FROM = 0x00000004 } +enum : uint { MCI_TO = 0x00000008 } +enum : uint { MCI_TRACK = 0x00000010 } + +enum : uint { MCI_OPEN_SHAREABLE = 0x00000100 } +enum : uint { MCI_OPEN_ELEMENT = 0x00000200 } +enum : uint { MCI_OPEN_ALIAS = 0x00000400 } +enum : uint { MCI_OPEN_ELEMENT_ID = 0x00000800 } +enum : uint { MCI_OPEN_TYPE_ID = 0x00001000 } +enum : uint { MCI_OPEN_TYPE = 0x00002000 } + +enum : uint { MCI_SEEK_TO_START = 0x00000100 } +enum : uint { MCI_SEEK_TO_END = 0x00000200 } + +enum : uint { MCI_STATUS_ITEM = 0x00000100 } +enum : uint { MCI_STATUS_START = 0x00000200 } + +enum : uint { MCI_STATUS_LENGTH = 0x00000001 } +enum : uint { MCI_STATUS_POSITION = 0x00000002 } +enum : uint { MCI_STATUS_NUMBER_OF_TRACKS = 0x00000003 } +enum : uint { MCI_STATUS_MODE = 0x00000004 } +enum : uint { MCI_STATUS_MEDIA_PRESENT = 0x00000005 } +enum : uint { MCI_STATUS_TIME_FORMAT = 0x00000006 } +enum : uint { MCI_STATUS_READY = 0x00000007 } +enum : uint { MCI_STATUS_CURRENT_TRACK = 0x00000008 } + +enum : uint { MCI_INFO_PRODUCT = 0x00000100 } +enum : uint { MCI_INFO_FILE = 0x00000200 } +enum : uint { MCI_INFO_MEDIA_UPC = 0x00000400 } +enum : uint { MCI_INFO_MEDIA_IDENTITY = 0x00000800 } +enum : uint { MCI_INFO_NAME = 0x00001000 } +enum : uint { MCI_INFO_COPYRIGHT = 0x00002000 } + +enum : uint { MCI_GETDEVCAPS_ITEM = 0x00000100 } + +enum : uint { MCI_GETDEVCAPS_CAN_RECORD = 0x00000001 } +enum : uint { MCI_GETDEVCAPS_HAS_AUDIO = 0x00000002 } +enum : uint { MCI_GETDEVCAPS_HAS_VIDEO = 0x00000003 } +enum : uint { MCI_GETDEVCAPS_DEVICE_TYPE = 0x00000004 } +enum : uint { MCI_GETDEVCAPS_USES_FILES = 0x00000005 } +enum : uint { MCI_GETDEVCAPS_COMPOUND_DEVICE = 0x00000006 } +enum : uint { MCI_GETDEVCAPS_CAN_EJECT = 0x00000007 } +enum : uint { MCI_GETDEVCAPS_CAN_PLAY = 0x00000008 } +enum : uint { MCI_GETDEVCAPS_CAN_SAVE = 0x00000009 } + +enum : uint { MCI_SYSINFO_QUANTITY = 0x00000100 } +enum : uint { MCI_SYSINFO_OPEN = 0x00000200 } +enum : uint { MCI_SYSINFO_NAME = 0x00000400 } +enum : uint { MCI_SYSINFO_INSTALLNAME = 0x00000800 } + +enum : uint { MCI_SET_DOOR_OPEN = 0x00000100 } +enum : uint { MCI_SET_DOOR_CLOSED = 0x00000200 } +enum : uint { MCI_SET_TIME_FORMAT = 0x00000400 } +enum : uint { MCI_SET_AUDIO = 0x00000800 } +enum : uint { MCI_SET_VIDEO = 0x00001000 } +enum : uint { MCI_SET_ON = 0x00002000 } +enum : uint { MCI_SET_OFF = 0x00004000 } + +enum : uint { MCI_SET_AUDIO_ALL = 0x00000000 } +enum : uint { MCI_SET_AUDIO_LEFT = 0x00000001 } +enum : uint { MCI_SET_AUDIO_RIGHT = 0x00000002 } + +enum : uint { MCI_BREAK_KEY = 0x00000100 } +enum : uint { MCI_BREAK_HWND = 0x00000200 } +enum : uint { MCI_BREAK_OFF = 0x00000400 } + +enum : uint { MCI_RECORD_INSERT = 0x00000100 } +enum : uint { MCI_RECORD_OVERWRITE = 0x00000200 } + +enum : uint { MCI_SAVE_FILE = 0x00000100 } + +enum : uint { MCI_LOAD_FILE = 0x00000100 } + +struct tagMCI_GENERIC_PARMS { + DWORD_PTR dwCallback; +} +alias tagMCI_GENERIC_PARMS MCI_GENERIC_PARMS; +alias tagMCI_GENERIC_PARMS* PMCI_GENERIC_PARMS; +alias tagMCI_GENERIC_PARMS* LPMCI_GENERIC_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; +} +alias tagMCI_OPEN_PARMSA MCI_OPEN_PARMSA; +alias tagMCI_OPEN_PARMSA* PMCI_OPEN_PARMSA; +alias tagMCI_OPEN_PARMSA* LPMCI_OPEN_PARMSA; + +struct tagMCI_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; +} +alias tagMCI_OPEN_PARMSW MCI_OPEN_PARMSW; +alias tagMCI_OPEN_PARMSW* PMCI_OPEN_PARMSW; +alias tagMCI_OPEN_PARMSW* LPMCI_OPEN_PARMSW; + +// #ifdef UNICODE +alias MCI_OPEN_PARMSW MCI_OPEN_PARMS; +alias PMCI_OPEN_PARMSW PMCI_OPEN_PARMS; +alias LPMCI_OPEN_PARMSW LPMCI_OPEN_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias tagMCI_PLAY_PARMS MCI_PLAY_PARMS; +alias tagMCI_PLAY_PARMS* PMCI_PLAY_PARMS; +alias tagMCI_PLAY_PARMS* LPMCI_PLAY_PARMS; + +struct tagMCI_SEEK_PARMS { + DWORD_PTR dwCallback; + DWORD dwTo; +} +alias tagMCI_SEEK_PARMS MCI_SEEK_PARMS; +alias tagMCI_SEEK_PARMS* PMCI_SEEK_PARMS; +alias tagMCI_SEEK_PARMS* LPMCI_SEEK_PARMS; + +struct tagMCI_STATUS_PARMS { + DWORD_PTR dwCallback; + DWORD_PTR dwReturn; + DWORD dwItem; + DWORD dwTrack; +} +alias tagMCI_STATUS_PARMS MCI_STATUS_PARMS; +alias tagMCI_STATUS_PARMS* PMCI_STATUS_PARMS; +alias tagMCI_STATUS_PARMS* LPMCI_STATUS_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_INFO_PARMSA { + DWORD_PTR dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; +} +alias tagMCI_INFO_PARMSA MCI_INFO_PARMSA; +alias tagMCI_INFO_PARMSA* LPMCI_INFO_PARMSA; + +struct tagMCI_INFO_PARMSW { + DWORD_PTR dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; +} +alias tagMCI_INFO_PARMSW MCI_INFO_PARMSW; +alias tagMCI_INFO_PARMSW* LPMCI_INFO_PARMSW; + +// #ifdef UNICODE +alias MCI_INFO_PARMSW MCI_INFO_PARMS; +alias LPMCI_INFO_PARMSW LPMCI_INFO_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_GETDEVCAPS_PARMS { + DWORD_PTR dwCallback; + DWORD dwReturn; + DWORD dwItem; +} +alias tagMCI_GETDEVCAPS_PARMS MCI_GETDEVCAPS_PARMS; +alias tagMCI_GETDEVCAPS_PARMS* PMCI_GETDEVCAPS_PARMS; +alias tagMCI_GETDEVCAPS_PARMS* LPMCI_GETDEVCAPS_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_SYSINFO_PARMSA { + DWORD_PTR dwCallback; + LPSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias tagMCI_SYSINFO_PARMSA MCI_SYSINFO_PARMSA; +alias tagMCI_SYSINFO_PARMSA* PMCI_SYSINFO_PARMSA; +alias tagMCI_SYSINFO_PARMSA* LPMCI_SYSINFO_PARMSA; + +struct tagMCI_SYSINFO_PARMSW { + DWORD_PTR dwCallback; + LPWSTR lpstrReturn; + DWORD dwRetSize; + DWORD dwNumber; + UINT wDeviceType; +} +alias tagMCI_SYSINFO_PARMSW MCI_SYSINFO_PARMSW; +alias tagMCI_SYSINFO_PARMSW* PMCI_SYSINFO_PARMSW; +alias tagMCI_SYSINFO_PARMSW* LPMCI_SYSINFO_PARMSW; + +// #ifdef UNICODE +alias MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS; +alias PMCI_SYSINFO_PARMSW PMCI_SYSINFO_PARMS; +alias LPMCI_SYSINFO_PARMSW LPMCI_SYSINFO_PARMS; +// #else +// ... +// #endif // UNICODE +// #else +// ... +// #endif + +struct tagMCI_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +} +alias tagMCI_SET_PARMS MCI_SET_PARMS; +alias tagMCI_SET_PARMS* PMCI_SET_PARMS; +alias tagMCI_SET_PARMS* LPMCI_SET_PARMS; + +struct tagMCI_BREAK_PARMS { + DWORD_PTR dwCallback; +// #ifdef _WIN32 + int nVirtKey; + HWND hwndBreak; +// #else +// ... +// #endif +} +alias tagMCI_BREAK_PARMS MCI_BREAK_PARMS; +alias tagMCI_BREAK_PARMS* PMCI_BREAK_PARMS; +alias tagMCI_BREAK_PARMS* LPMCI_BREAK_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_SAVE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; +} +alias tagMCI_SAVE_PARMSA MCI_SAVE_PARMSA; +alias tagMCI_SAVE_PARMSA* PMCI_SAVE_PARMSA; +alias tagMCI_SAVE_PARMSA* LPMCI_SAVE_PARMSA; + +struct tagMCI_SAVE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; +} +alias tagMCI_SAVE_PARMSW MCI_SAVE_PARMSW; +alias tagMCI_SAVE_PARMSW* PMCI_SAVE_PARMSW; +alias tagMCI_SAVE_PARMSW* LPMCI_SAVE_PARMSW; + +// #ifdef UNICODE +alias MCI_SAVE_PARMSW MCI_SAVE_PARMS; +alias PMCI_SAVE_PARMSW PMCI_SAVE_PARMS; +alias LPMCI_SAVE_PARMSW LPMCI_SAVE_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +struct tagMCI_LOAD_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; +} +alias tagMCI_LOAD_PARMSA MCI_LOAD_PARMSA; +alias tagMCI_LOAD_PARMSA* PMCI_LOAD_PARMSA; +alias tagMCI_LOAD_PARMSA* LPMCI_LOAD_PARMSA; + +struct tagMCI_LOAD_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; +} +alias tagMCI_LOAD_PARMSW MCI_LOAD_PARMSW; +alias tagMCI_LOAD_PARMSW* PMCI_LOAD_PARMSW; +alias tagMCI_LOAD_PARMSW* LPMCI_LOAD_PARMSW; + +// #ifdef UNICODE +alias MCI_LOAD_PARMSW MCI_LOAD_PARMS; +alias PMCI_LOAD_PARMSW PMCI_LOAD_PARMS; +alias LPMCI_LOAD_PARMSW LPMCI_LOAD_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_RECORD_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias tagMCI_RECORD_PARMS MCI_RECORD_PARMS; +alias tagMCI_RECORD_PARMS* LPMCI_RECORD_PARMS; + +enum : uint { MCI_VD_MODE_PARK = MCI_VD_OFFSET + 1 } + +enum : uint { MCI_VD_MEDIA_CLV = MCI_VD_OFFSET + 2 } +enum : uint { MCI_VD_MEDIA_CAV = MCI_VD_OFFSET + 3 } +enum : uint { MCI_VD_MEDIA_OTHER = MCI_VD_OFFSET + 4 } + +enum : uint { MCI_VD_FORMAT_TRACK = 0x4001 } + +enum : uint { MCI_VD_PLAY_REVERSE = 0x00010000 } +enum : uint { MCI_VD_PLAY_FAST = 0x00020000 } +enum : uint { MCI_VD_PLAY_SPEED = 0x00040000 } +enum : uint { MCI_VD_PLAY_SCAN = 0x00080000 } +enum : uint { MCI_VD_PLAY_SLOW = 0x00100000 } + +enum : uint { MCI_VD_SEEK_REVERSE = 0x00010000 } + +enum : uint { MCI_VD_STATUS_SPEED = 0x00004002 } +enum : uint { MCI_VD_STATUS_FORWARD = 0x00004003 } +enum : uint { MCI_VD_STATUS_MEDIA_TYPE = 0x00004004 } +enum : uint { MCI_VD_STATUS_SIDE = 0x00004005 } +enum : uint { MCI_VD_STATUS_DISC_SIZE = 0x00004006 } + +enum : uint { MCI_VD_GETDEVCAPS_CLV = 0x00010000 } +enum : uint { MCI_VD_GETDEVCAPS_CAV = 0x00020000 } + +enum : uint { MCI_VD_SPIN_UP = 0x00010000 } +enum : uint { MCI_VD_SPIN_DOWN = 0x00020000 } + +enum : uint { MCI_VD_GETDEVCAPS_CAN_REVERSE = 0x00004002 } +enum : uint { MCI_VD_GETDEVCAPS_FAST_RATE = 0x00004003 } +enum : uint { MCI_VD_GETDEVCAPS_SLOW_RATE = 0x00004004 } +enum : uint { MCI_VD_GETDEVCAPS_NORMAL_RATE = 0x00004005 } + +enum : uint { MCI_VD_STEP_FRAMES = 0x00010000 } +enum : uint { MCI_VD_STEP_REVERSE = 0x00020000 } + +enum : uint { MCI_VD_ESCAPE_STRING = 0x00000100 } + +struct tagMCI_VD_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias tagMCI_VD_PLAY_PARMS MCI_VD_PLAY_PARMS; +alias tagMCI_VD_PLAY_PARMS* PMCI_VD_PLAY_PARMS; +alias tagMCI_VD_PLAY_PARMS* LPMCI_VD_PLAY_PARMS; + +struct tagMCI_VD_STEP_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrames; +} +alias tagMCI_VD_STEP_PARMS MCI_VD_STEP_PARMS; +alias tagMCI_VD_STEP_PARMS* PMCI_VD_STEP_PARMS; +alias tagMCI_VD_STEP_PARMS* LPMCI_VD_STEP_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_VD_ESCAPE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpstrCommand; +} +alias tagMCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMSA; +alias tagMCI_VD_ESCAPE_PARMSA* PMCI_VD_ESCAPE_PARMSA; +alias tagMCI_VD_ESCAPE_PARMSA* LPMCI_VD_ESCAPE_PARMSA; + +struct tagMCI_VD_ESCAPE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpstrCommand; +} +alias tagMCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMSW; +alias tagMCI_VD_ESCAPE_PARMSW* PMCI_VD_ESCAPE_PARMSW; +alias tagMCI_VD_ESCAPE_PARMSW* LPMCI_VD_ESCAPE_PARMSW; + +// #ifdef UNICODE +alias MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS; +alias PMCI_VD_ESCAPE_PARMSW PMCI_VD_ESCAPE_PARMS; +alias LPMCI_VD_ESCAPE_PARMSW LPMCI_VD_ESCAPE_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +enum : uint { MCI_CDA_STATUS_TYPE_TRACK = 0x00004001 } + +enum : uint { MCI_CDA_TRACK_AUDIO = MCI_CD_OFFSET + 0 } +enum : uint { MCI_CDA_TRACK_OTHER = MCI_CD_OFFSET + 1 } + +enum : uint { MCI_WAVE_PCM = MCI_WAVE_OFFSET + 0 } +enum : uint { MCI_WAVE_MAPPER = MCI_WAVE_OFFSET + 1 } + +enum : uint { MCI_WAVE_OPEN_BUFFER = 0x00010000 } + +enum : uint { MCI_WAVE_SET_FORMATTAG = 0x00010000 } +enum : uint { MCI_WAVE_SET_CHANNELS = 0x00020000 } +enum : uint { MCI_WAVE_SET_SAMPLESPERSEC = 0x00040000 } +enum : uint { MCI_WAVE_SET_AVGBYTESPERSEC = 0x00080000 } +enum : uint { MCI_WAVE_SET_BLOCKALIGN = 0x00100000 } +enum : uint { MCI_WAVE_SET_BITSPERSAMPLE = 0x00200000 } + +enum : uint { MCI_WAVE_INPUT = 0x00400000 } +enum : uint { MCI_WAVE_OUTPUT = 0x00800000 } + +enum : uint { MCI_WAVE_STATUS_FORMATTAG = 0x00004001 } +enum : uint { MCI_WAVE_STATUS_CHANNELS = 0x00004002 } +enum : uint { MCI_WAVE_STATUS_SAMPLESPERSEC = 0x00004003 } +enum : uint { MCI_WAVE_STATUS_AVGBYTESPERSEC = 0x00004004 } +enum : uint { MCI_WAVE_STATUS_BLOCKALIGN = 0x00004005 } +enum : uint { MCI_WAVE_STATUS_BITSPERSAMPLE = 0x00004006 } +enum : uint { MCI_WAVE_STATUS_LEVEL = 0x00004007 } + +enum : uint { MCI_WAVE_SET_ANYINPUT = 0x04000000 } +enum : uint { MCI_WAVE_SET_ANYOUTPUT = 0x08000000 } + +enum : uint { MCI_WAVE_GETDEVCAPS_INPUTS = 0x00004001 } +enum : uint { MCI_WAVE_GETDEVCAPS_OUTPUTS = 0x00004002 } + +// #ifdef _WIN32 + +struct tagMCI_WAVE_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias tagMCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMSA; +alias tagMCI_WAVE_OPEN_PARMSA* PMCI_WAVE_OPEN_PARMSA; +alias tagMCI_WAVE_OPEN_PARMSA* LPMCI_WAVE_OPEN_PARMSA; + +struct tagMCI_WAVE_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwBufferSeconds; +} +alias tagMCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMSW; +alias tagMCI_WAVE_OPEN_PARMSW* PMCI_WAVE_OPEN_PARMSW; +alias tagMCI_WAVE_OPEN_PARMSW* LPMCI_WAVE_OPEN_PARMSW; + +// #ifdef UNICODE +alias MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS; +alias PMCI_WAVE_OPEN_PARMSW PMCI_WAVE_OPEN_PARMS; +alias LPMCI_WAVE_OPEN_PARMSW LPMCI_WAVE_OPEN_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_WAVE_DELETE_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; +} +alias tagMCI_WAVE_DELETE_PARMS MCI_WAVE_DELETE_PARMS; +alias tagMCI_WAVE_DELETE_PARMS* PMCI_WAVE_DELETE_PARMS; +alias tagMCI_WAVE_DELETE_PARMS* LPMCI_WAVE_DELETE_PARMS; + +struct tagMCI_WAVE_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; +// #ifdef _WIN32 + UINT wInput; + UINT wOutput; +// #else +// ... +// #endif + WORD wFormatTag; + WORD wReserved2; + WORD nChannels; + WORD wReserved3; + DWORD nSamplesPerSec; + DWORD nAvgBytesPerSec; + WORD nBlockAlign; + WORD wReserved4; + WORD wBitsPerSample; + WORD wReserved5; +} +alias tagMCI_WAVE_SET_PARMS MCI_WAVE_SET_PARMS; +alias tagMCI_WAVE_SET_PARMS* PMCI_WAVE_SET_PARMS; +alias tagMCI_WAVE_SET_PARMS* LPMCI_WAVE_SET_PARMS; + +enum : uint { MCI_SEQ_DIV_PPQN = 0 + MCI_SEQ_OFFSET } +enum : uint { MCI_SEQ_DIV_SMPTE_24 = 1 + MCI_SEQ_OFFSET } +enum : uint { MCI_SEQ_DIV_SMPTE_25 = 2 + MCI_SEQ_OFFSET } +enum : uint { MCI_SEQ_DIV_SMPTE_30DROP = 3 + MCI_SEQ_OFFSET } +enum : uint { MCI_SEQ_DIV_SMPTE_30 = 4 + MCI_SEQ_OFFSET } + +enum : uint { MCI_SEQ_FORMAT_SONGPTR = 0x4001 } +enum : uint { MCI_SEQ_FILE = 0x4002 } +enum : uint { MCI_SEQ_MIDI = 0x4003 } +enum : uint { MCI_SEQ_SMPTE = 0x4004 } +enum : uint { MCI_SEQ_NONE = 65533 } +enum : uint { MCI_SEQ_MAPPER = 65535 } + +enum : uint { MCI_SEQ_STATUS_TEMPO = 0x00004002 } +enum : uint { MCI_SEQ_STATUS_PORT = 0x00004003 } +enum : uint { MCI_SEQ_STATUS_SLAVE = 0x00004007 } +enum : uint { MCI_SEQ_STATUS_MASTER = 0x00004008 } +enum : uint { MCI_SEQ_STATUS_OFFSET = 0x00004009 } +enum : uint { MCI_SEQ_STATUS_DIVTYPE = 0x0000400A } +enum : uint { MCI_SEQ_STATUS_NAME = 0x0000400B } +enum : uint { MCI_SEQ_STATUS_COPYRIGHT = 0x0000400C } + +enum : uint { MCI_SEQ_SET_TEMPO = 0x00010000 } +enum : uint { MCI_SEQ_SET_PORT = 0x00020000 } +enum : uint { MCI_SEQ_SET_SLAVE = 0x00040000 } +enum : uint { MCI_SEQ_SET_MASTER = 0x00080000 } +enum : uint { MCI_SEQ_SET_OFFSET = 0x01000000 } + +struct tagMCI_SEQ_SET_PARMS { + DWORD_PTR dwCallback; + DWORD dwTimeFormat; + DWORD dwAudio; + DWORD dwTempo; + DWORD dwPort; + DWORD dwSlave; + DWORD dwMaster; + DWORD dwOffset; +} +alias tagMCI_SEQ_SET_PARMS MCI_SEQ_SET_PARMS; +alias tagMCI_SEQ_SET_PARMS* PMCI_SEQ_SET_PARMS; +alias tagMCI_SEQ_SET_PARMS* LPMCI_SEQ_SET_PARMS; + +enum : uint { MCI_ANIM_OPEN_WS = 0x00010000 } +enum : uint { MCI_ANIM_OPEN_PARENT = 0x00020000 } +enum : uint { MCI_ANIM_OPEN_NOSTATIC = 0x00040000 } + +enum : uint { MCI_ANIM_PLAY_SPEED = 0x00010000 } +enum : uint { MCI_ANIM_PLAY_REVERSE = 0x00020000 } +enum : uint { MCI_ANIM_PLAY_FAST = 0x00040000 } +enum : uint { MCI_ANIM_PLAY_SLOW = 0x00080000 } +enum : uint { MCI_ANIM_PLAY_SCAN = 0x00100000 } + +enum : uint { MCI_ANIM_STEP_REVERSE = 0x00010000 } +enum : uint { MCI_ANIM_STEP_FRAMES = 0x00020000 } + +enum : uint { MCI_ANIM_STATUS_SPEED = 0x00004001 } +enum : uint { MCI_ANIM_STATUS_FORWARD = 0x00004002 } +enum : uint { MCI_ANIM_STATUS_HWND = 0x00004003 } +enum : uint { MCI_ANIM_STATUS_HPAL = 0x00004004 } +enum : uint { MCI_ANIM_STATUS_STRETCH = 0x00004005 } + +enum : uint { MCI_ANIM_INFO_TEXT = 0x00010000 } + +enum : uint { MCI_ANIM_GETDEVCAPS_CAN_REVERSE = 0x00004001 } +enum : uint { MCI_ANIM_GETDEVCAPS_FAST_RATE = 0x00004002 } +enum : uint { MCI_ANIM_GETDEVCAPS_SLOW_RATE = 0x00004003 } +enum : uint { MCI_ANIM_GETDEVCAPS_NORMAL_RATE = 0x00004004 } +enum : uint { MCI_ANIM_GETDEVCAPS_PALETTES = 0x00004006 } +enum : uint { MCI_ANIM_GETDEVCAPS_CAN_STRETCH = 0x00004007 } +enum : uint { MCI_ANIM_GETDEVCAPS_MAX_WINDOWS = 0x00004008 } + +enum : uint { MCI_ANIM_REALIZE_NORM = 0x00010000 } +enum : uint { MCI_ANIM_REALIZE_BKGD = 0x00020000 } + +enum : uint { MCI_ANIM_WINDOW_HWND = 0x00010000 } +enum : uint { MCI_ANIM_WINDOW_STATE = 0x00040000 } +enum : uint { MCI_ANIM_WINDOW_TEXT = 0x00080000 } +enum : uint { MCI_ANIM_WINDOW_ENABLE_STRETCH = 0x00100000 } +enum : uint { MCI_ANIM_WINDOW_DISABLE_STRETCH = 0x00200000 } + +enum : uint { MCI_ANIM_WINDOW_DEFAULT = 0x00000000 } + +enum : uint { MCI_ANIM_RECT = 0x00010000 } +enum : uint { MCI_ANIM_PUT_SOURCE = 0x00020000 } +enum : uint { MCI_ANIM_PUT_DESTINATION = 0x00040000 } + +enum : uint { MCI_ANIM_WHERE_SOURCE = 0x00020000 } +enum : uint { MCI_ANIM_WHERE_DESTINATION = 0x00040000 } + +enum : uint { MCI_ANIM_UPDATE_HDC = 0x00020000 } + +// #ifdef _WIN32 + +struct tagMCI_ANIM_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias tagMCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMSA; +alias tagMCI_ANIM_OPEN_PARMSA* PMCI_ANIM_OPEN_PARMSA; +alias tagMCI_ANIM_OPEN_PARMSA* LPMCI_ANIM_OPEN_PARMSA; + +struct tagMCI_ANIM_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias tagMCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMSW; +alias tagMCI_ANIM_OPEN_PARMSW* PMCI_ANIM_OPEN_PARMSW; +alias tagMCI_ANIM_OPEN_PARMSW* LPMCI_ANIM_OPEN_PARMSW; + +// #ifdef UNICODE +alias MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS; +alias PMCI_ANIM_OPEN_PARMSW PMCI_ANIM_OPEN_PARMS; +alias LPMCI_ANIM_OPEN_PARMSW LPMCI_ANIM_OPEN_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_ANIM_PLAY_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrom; + DWORD dwTo; + DWORD dwSpeed; +} +alias tagMCI_ANIM_PLAY_PARMS MCI_ANIM_PLAY_PARMS; +alias tagMCI_ANIM_PLAY_PARMS* PMCI_ANIM_PLAY_PARMS; +alias tagMCI_ANIM_PLAY_PARMS* LPMCI_ANIM_PLAY_PARMS; + +struct tagMCI_ANIM_STEP_PARMS { + DWORD_PTR dwCallback; + DWORD dwFrames; +} +alias tagMCI_ANIM_STEP_PARMS MCI_ANIM_STEP_PARMS; +alias tagMCI_ANIM_STEP_PARMS* PMCI_ANIM_STEP_PARMS; +alias tagMCI_ANIM_STEP_PARMS* LPMCI_ANIM_STEP_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_ANIM_WINDOW_PARMSA { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias tagMCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMSA; +alias tagMCI_ANIM_WINDOW_PARMSA* PMCI_ANIM_WINDOW_PARMSA; +alias tagMCI_ANIM_WINDOW_PARMSA* LPMCI_ANIM_WINDOW_PARMSA; + +struct tagMCI_ANIM_WINDOW_PARMSW { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias tagMCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMSW; +alias tagMCI_ANIM_WINDOW_PARMSW* PMCI_ANIM_WINDOW_PARMSW; +alias tagMCI_ANIM_WINDOW_PARMSW* LPMCI_ANIM_WINDOW_PARMSW; + +// #ifdef UNICODE +alias MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS; +alias PMCI_ANIM_WINDOW_PARMSW PMCI_ANIM_WINDOW_PARMS; +alias LPMCI_ANIM_WINDOW_PARMSW LPMCI_ANIM_WINDOW_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +struct tagMCI_ANIM_RECT_PARMS { + DWORD_PTR dwCallback; +// #ifdef MCI_USE_OFFEXT +// ... +// #else /* ifdef MCI_USE_OFFEXT */ + RECT rc; +// #endif /* ifdef MCI_USE_OFFEXT */ +} +alias tagMCI_ANIM_RECT_PARMS MCI_ANIM_RECT_PARMS; + +alias MCI_ANIM_RECT_PARMS* PMCI_ANIM_RECT_PARMS; +alias MCI_ANIM_RECT_PARMS* LPMCI_ANIM_RECT_PARMS; + +struct tagMCI_ANIM_UPDATE_PARMS { + DWORD_PTR dwCallback; + RECT rc; + HDC hDC; +} +alias tagMCI_ANIM_UPDATE_PARMS MCI_ANIM_UPDATE_PARMS; +alias tagMCI_ANIM_UPDATE_PARMS* PMCI_ANIM_UPDATE_PARMS; +alias tagMCI_ANIM_UPDATE_PARMS* LPMCI_ANIM_UPDATE_PARMS; + +enum : uint { MCI_OVLY_OPEN_WS = 0x00010000 } +enum : uint { MCI_OVLY_OPEN_PARENT = 0x00020000 } + +enum : uint { MCI_OVLY_STATUS_HWND = 0x00004001 } +enum : uint { MCI_OVLY_STATUS_STRETCH = 0x00004002 } + +enum : uint { MCI_OVLY_INFO_TEXT = 0x00010000 } + +enum : uint { MCI_OVLY_GETDEVCAPS_CAN_STRETCH = 0x00004001 } +enum : uint { MCI_OVLY_GETDEVCAPS_CAN_FREEZE = 0x00004002 } +enum : uint { MCI_OVLY_GETDEVCAPS_MAX_WINDOWS = 0x00004003 } + +enum : uint { MCI_OVLY_WINDOW_HWND = 0x00010000 } +enum : uint { MCI_OVLY_WINDOW_STATE = 0x00040000 } +enum : uint { MCI_OVLY_WINDOW_TEXT = 0x00080000 } +enum : uint { MCI_OVLY_WINDOW_ENABLE_STRETCH = 0x00100000 } +enum : uint { MCI_OVLY_WINDOW_DISABLE_STRETCH = 0x00200000 } + +enum : uint { MCI_OVLY_WINDOW_DEFAULT = 0x00000000 } + +enum : uint { MCI_OVLY_RECT = 0x00010000 } +enum : uint { MCI_OVLY_PUT_SOURCE = 0x00020000 } +enum : uint { MCI_OVLY_PUT_DESTINATION = 0x00040000 } +enum : uint { MCI_OVLY_PUT_FRAME = 0x00080000 } +enum : uint { MCI_OVLY_PUT_VIDEO = 0x00100000 } + +enum : uint { MCI_OVLY_WHERE_SOURCE = 0x00020000 } +enum : uint { MCI_OVLY_WHERE_DESTINATION = 0x00040000 } +enum : uint { MCI_OVLY_WHERE_FRAME = 0x00080000 } +enum : uint { MCI_OVLY_WHERE_VIDEO = 0x00100000 } + +// #ifdef _WIN32 + +struct tagMCI_OVLY_OPEN_PARMSA { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCSTR lpstrDeviceType; + LPCSTR lpstrElementName; + LPCSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias tagMCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMSA; +alias tagMCI_OVLY_OPEN_PARMSA* PMCI_OVLY_OPEN_PARMSA; +alias tagMCI_OVLY_OPEN_PARMSA* LPMCI_OVLY_OPEN_PARMSA; + +struct tagMCI_OVLY_OPEN_PARMSW { + DWORD_PTR dwCallback; + MCIDEVICEID wDeviceID; + LPCWSTR lpstrDeviceType; + LPCWSTR lpstrElementName; + LPCWSTR lpstrAlias; + DWORD dwStyle; + HWND hWndParent; +} +alias tagMCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMSW; +alias tagMCI_OVLY_OPEN_PARMSW* PMCI_OVLY_OPEN_PARMSW; +alias tagMCI_OVLY_OPEN_PARMSW* LPMCI_OVLY_OPEN_PARMSW; + +// #ifdef UNICODE +alias MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS; +alias PMCI_OVLY_OPEN_PARMSW PMCI_OVLY_OPEN_PARMS; +alias LPMCI_OVLY_OPEN_PARMSW LPMCI_OVLY_OPEN_PARMS; +// #else +// ... +// #endif // UNICODE + +// #else +// ... +// #endif + +// #ifdef _WIN32 + +struct tagMCI_OVLY_WINDOW_PARMSA { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCSTR lpstrText; +} +alias tagMCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMSA; +alias tagMCI_OVLY_WINDOW_PARMSA* PMCI_OVLY_WINDOW_PARMSA; +alias tagMCI_OVLY_WINDOW_PARMSA* LPMCI_OVLY_WINDOW_PARMSA; + +struct tagMCI_OVLY_WINDOW_PARMSW { + DWORD_PTR dwCallback; + HWND hWnd; + UINT nCmdShow; + LPCWSTR lpstrText; +} +alias tagMCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMSW; +alias tagMCI_OVLY_WINDOW_PARMSW* PMCI_OVLY_WINDOW_PARMSW; +alias tagMCI_OVLY_WINDOW_PARMSW* LPMCI_OVLY_WINDOW_PARMSW; + +// #ifdef UNICODE +alias MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS; +alias PMCI_OVLY_WINDOW_PARMSW PMCI_OVLY_WINDOW_PARMS; +alias LPMCI_OVLY_WINDOW_PARMSW LPMCI_OVLY_WINDOW_PARMS; +// #else +// ... +// #endif // UNICODE +// #else +// ... +// #endif + +struct tagMCI_OVLY_RECT_PARMS { + DWORD_PTR dwCallback; +// #ifdef MCI_USE_OFFEXT +// ... +// #else /* ifdef MCI_USE_OFFEXT */ + RECT rc; +// #endif /* ifdef MCI_USE_OFFEXT */ +} +alias tagMCI_OVLY_RECT_PARMS MCI_OVLY_RECT_PARMS; +alias tagMCI_OVLY_RECT_PARMS* PMCI_OVLY_RECT_PARMS; +alias tagMCI_OVLY_RECT_PARMS* LPMCI_OVLY_RECT_PARMS; + +// #ifdef _WIN32 + +struct tagMCI_OVLY_SAVE_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias tagMCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMSA; +alias tagMCI_OVLY_SAVE_PARMSA* PMCI_OVLY_SAVE_PARMSA; +alias tagMCI_OVLY_SAVE_PARMSA* LPMCI_OVLY_SAVE_PARMSA; + +struct tagMCI_OVLY_SAVE_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias tagMCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMSW; +alias tagMCI_OVLY_SAVE_PARMSW* PMCI_OVLY_SAVE_PARMSW; +alias tagMCI_OVLY_SAVE_PARMSW* LPMCI_OVLY_SAVE_PARMSW; + +// #ifdef UNICODE +alias MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS; +alias PMCI_OVLY_SAVE_PARMSW PMCI_OVLY_SAVE_PARMS; +alias LPMCI_OVLY_SAVE_PARMSW LPMCI_OVLY_SAVE_PARMS; +// #else +// ... +// #endif // UNICODE +// #else +// ... +// #endif + +// #ifdef _WIN32 + +struct tagMCI_OVLY_LOAD_PARMSA { + DWORD_PTR dwCallback; + LPCSTR lpfilename; + RECT rc; +} +alias tagMCI_OVLY_LOAD_PARMSA MCI_OVLY_LOAD_PARMSA; +alias tagMCI_OVLY_LOAD_PARMSA* PMCI_OVLY_LOAD_PARMSA; +alias tagMCI_OVLY_LOAD_PARMSA* LPMCI_OVLY_LOAD_PARMSA; + +struct tagMCI_OVLY_LOAD_PARMSW { + DWORD_PTR dwCallback; + LPCWSTR lpfilename; + RECT rc; +} +alias tagMCI_OVLY_LOAD_PARMSW MCI_OVLY_LOAD_PARMSW; +alias tagMCI_OVLY_LOAD_PARMSW* PMCI_OVLY_LOAD_PARMSW; +alias tagMCI_OVLY_LOAD_PARMSW* LPMCI_OVLY_LOAD_PARMSW; + +// #ifdef UNICODE +alias MCI_OVLY_LOAD_PARMSW MCI_OVLY_LOAD_PARMS; +alias PMCI_OVLY_LOAD_PARMSW PMCI_OVLY_LOAD_PARMS; +alias LPMCI_OVLY_LOAD_PARMSW LPMCI_OVLY_LOAD_PARMS; +// #else +// ... +// #endif // UNICODE +// #else +// ... +// #endif + +// #endif /* ifndef MMNOMCI */ + +// #ifndef NEWTRANSPARENT +enum : uint { NEWTRANSPARENT = 3 } + +enum : uint { QUERYROPSUPPORT = 40 } +// #endif /* ifndef NEWTRANSPARENT */ + +enum : uint { SELECTDIB = 41 } +// #define DIBINDEX(n) MAKELONG((n),0x10FF) + +// #ifndef SC_SCREENSAVE + +enum : uint { SC_SCREENSAVE = 0xF140 } + +// #endif /* ifndef SC_SCREENSAVE */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #ifdef _WIN32 +align: +// #else +// #ifndef RC_INVOKED +// #... +// #endif +// #endif + +// #endif /* _INC_MMSYSTEM */ + ADDED src/win32/shellapi.d Index: src/win32/shellapi.d ================================================================== --- src/win32/shellapi.d +++ src/win32/shellapi.d @@ -0,0 +1,784 @@ +module win32.shellapi; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.windef; +import win32.winbase; +import win32.winuser; + +// #ifndef _INC_SHELLAPI +// #define _INC_SHELLAPI + +// #ifndef WINSHELLAPI +// #if !defined(_SHELL32_) +// #define WINSHELLAPI DECLSPEC_IMPORT +// #else +// #... +// #endif +// #endif // WINSHELLAPI + +// #ifndef SHSTDAPI +// #if !defined(_SHELL32_) +// #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE +// #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE +// #else +// #... +// #... +// #endif +// #endif // SHSTDAPI + +// #ifndef SHDOCAPI +// #if !defined(_SHDOCVW_) +// #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE +// #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE +// #else +// #... +// #... +// #endif +// #endif // SHDOCAPI + +// #if !defined(_WIN64) +align(1): +// #endif + +// #ifdef __cplusplus +// extern "C" { /* Assume C declarations for C++ */ +// #endif /* __cplusplus */ + +alias void* HDROP; + +extern(Windows) export UINT DragQueryFileA(HDROP,UINT,LPSTR,UINT); +extern(Windows) export UINT DragQueryFileW(HDROP,UINT,LPWSTR,UINT); +// #ifdef UNICODE +alias DragQueryFileW DragQueryFile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL DragQueryPoint(HDROP,LPPOINT); +extern(Windows) export void DragFinish(HDROP); +extern(Windows) export void DragAcceptFiles(HWND,BOOL); + +extern(Windows) export HINSTANCE ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd); +extern(Windows) export HINSTANCE ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd); +// #ifdef UNICODE +alias ShellExecuteW ShellExecute; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HINSTANCE FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult); +extern(Windows) export HINSTANCE FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult); +// #ifdef UNICODE +alias FindExecutableW FindExecutable; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export LPWSTR * CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumArgs); + +extern(Windows) export INT ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon); +extern(Windows) export INT ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon); +// #ifdef UNICODE +alias ShellAboutW ShellAbout; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HICON DuplicateIcon(HINSTANCE hInst, HICON hIcon); +extern(Windows) export HICON ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWORD lpiIcon); +extern(Windows) export HICON ExtractAssociatedIconW(HINSTANCE hInst, LPWSTR lpIconPath, LPWORD lpiIcon); +// #ifdef UNICODE +alias ExtractAssociatedIconW ExtractAssociatedIcon; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HICON ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIconIndex); +extern(Windows) export HICON ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIconIndex); +// #ifdef UNICODE +alias ExtractIconW ExtractIcon; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +struct _DRAGINFOA { + UINT uSize; + POINT pt; + BOOL fNC; + LPSTR lpFileList; + DWORD grfKeyState; +} +alias _DRAGINFOA DRAGINFOA; +alias _DRAGINFOA* LPDRAGINFOA; + +struct _DRAGINFOW { + UINT uSize; + POINT pt; + BOOL fNC; + LPWSTR lpFileList; + DWORD grfKeyState; +} +alias _DRAGINFOW DRAGINFOW; +alias _DRAGINFOW* LPDRAGINFOW; + +// #ifdef UNICODE +alias DRAGINFOW DRAGINFO; +alias LPDRAGINFOW LPDRAGINFO; +// #else +// ... +// #endif // UNICODE + +enum : uint { ABM_NEW = 0x00000000 } +enum : uint { ABM_REMOVE = 0x00000001 } +enum : uint { ABM_QUERYPOS = 0x00000002 } +enum : uint { ABM_SETPOS = 0x00000003 } +enum : uint { ABM_GETSTATE = 0x00000004 } +enum : uint { ABM_GETTASKBARPOS = 0x00000005 } +enum : uint { ABM_ACTIVATE = 0x00000006 } +enum : uint { ABM_GETAUTOHIDEBAR = 0x00000007 } +enum : uint { ABM_SETAUTOHIDEBAR = 0x00000008 } + +enum : uint { ABM_WINDOWPOSCHANGED = 0x0000009 } +enum : uint { ABM_SETSTATE = 0x0000000a } + +enum : uint { ABN_STATECHANGE = 0x0000000 } +enum : uint { ABN_POSCHANGED = 0x0000001 } +enum : uint { ABN_FULLSCREENAPP = 0x0000002 } +enum : uint { ABN_WINDOWARRANGE = 0x0000003 } + +enum : uint { ABS_AUTOHIDE = 0x0000001 } +enum : uint { ABS_ALWAYSONTOP = 0x0000002 } + +enum : uint { ABE_LEFT = 0 } +enum : uint { ABE_TOP = 1 } +enum : uint { ABE_RIGHT = 2 } +enum : uint { ABE_BOTTOM = 3 } + +struct _AppBarData { + DWORD cbSize; + HWND hWnd; + UINT uCallbackMessage; + UINT uEdge; + RECT rc; + LPARAM lParam; +} +alias _AppBarData APPBARDATA; +alias _AppBarData* PAPPBARDATA; + +extern(Windows) export UINT_PTR SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData); + +extern(Windows) export DWORD DoEnvironmentSubstA(LPSTR szString, UINT cchString); +extern(Windows) export DWORD DoEnvironmentSubstW(LPWSTR szString, UINT cchString); +// #ifdef UNICODE +alias DoEnvironmentSubstW DoEnvironmentSubst; +// #else +// #... +// #endif // !UNICODE + +// #define EIRESID(x) (-1 * (int)(x)) +extern(Windows) export UINT ExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons); +extern(Windows) export UINT ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons); +// #ifdef UNICODE +alias ExtractIconExW ExtractIconEx; +// #else +// #... +// #endif // !UNICODE + +// #ifndef FO_MOVE //these need to be kept in sync with the ones in shlobj.h + +enum : uint { FO_MOVE = 0x0001 } +enum : uint { FO_COPY = 0x0002 } +enum : uint { FO_DELETE = 0x0003 } +enum : uint { FO_RENAME = 0x0004 } + +enum : uint { FOF_MULTIDESTFILES = 0x0001 } +enum : uint { FOF_CONFIRMMOUSE = 0x0002 } +enum : uint { FOF_SILENT = 0x0004 } +enum : uint { FOF_RENAMEONCOLLISION = 0x0008 } +enum : uint { FOF_NOCONFIRMATION = 0x0010 } +enum : uint { FOF_WANTMAPPINGHANDLE = 0x0020 } + +enum : uint { FOF_ALLOWUNDO = 0x0040 } +enum : uint { FOF_FILESONLY = 0x0080 } +enum : uint { FOF_SIMPLEPROGRESS = 0x0100 } +enum : uint { FOF_NOCONFIRMMKDIR = 0x0200 } +enum : uint { FOF_NOERRORUI = 0x0400 } +enum : uint { FOF_NOCOPYSECURITYATTRIBS = 0x0800 } +enum : uint { FOF_NORECURSION = 0x1000 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { FOF_NO_CONNECTED_ELEMENTS = 0x2000 } +enum : uint { FOF_WANTNUKEWARNING = 0x4000 } +// #endif // (_WIN32_IE >= 0x500) +// #if (_WIN32_WINNT >= 0x0501) +enum : uint { FOF_NORECURSEREPARSE = 0x8000 } +// #endif // (_WIN32_WINNT >= 0x501) + +alias WORD FILEOP_FLAGS; + +enum : uint { PO_DELETE = 0x0013 } +enum : uint { PO_RENAME = 0x0014 } +enum : uint { PO_PORTCHANGE = 0x0020 } + +enum : uint { PO_REN_PORT = 0x0034 } + +alias WORD PRINTEROP_FLAGS; + +// #endif // FO_MOVE + +struct _SHFILEOPSTRUCTA { + HWND hwnd; + UINT wFunc; + LPCSTR pFrom; + LPCSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + LPVOID hNameMappings; + LPCSTR lpszProgressTitle; +} +alias _SHFILEOPSTRUCTA SHFILEOPSTRUCTA; +alias _SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; + +struct _SHFILEOPSTRUCTW { + HWND hwnd; + UINT wFunc; + LPCWSTR pFrom; + LPCWSTR pTo; + FILEOP_FLAGS fFlags; + BOOL fAnyOperationsAborted; + LPVOID hNameMappings; + LPCWSTR lpszProgressTitle; +} +alias _SHFILEOPSTRUCTW SHFILEOPSTRUCTW; +alias _SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; + +// #ifdef UNICODE +alias SHFILEOPSTRUCTW SHFILEOPSTRUCT; +alias LPSHFILEOPSTRUCTW LPSHFILEOPSTRUCT; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export int SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp); +extern(Windows) export int SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp); +// #ifdef UNICODE +alias SHFileOperationW SHFileOperation; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export void SHFreeNameMappings(HANDLE hNameMappings); + +struct _SHNAMEMAPPINGA { + LPSTR pszOldPath; + LPSTR pszNewPath; + int cchOldPath; + int cchNewPath; +} +alias _SHNAMEMAPPINGA SHNAMEMAPPINGA; +alias _SHNAMEMAPPINGA* LPSHNAMEMAPPINGA; + +struct _SHNAMEMAPPINGW { + LPWSTR pszOldPath; + LPWSTR pszNewPath; + int cchOldPath; + int cchNewPath; +} +alias _SHNAMEMAPPINGW SHNAMEMAPPINGW; +alias _SHNAMEMAPPINGW* LPSHNAMEMAPPINGW; + +// #ifdef UNICODE +alias SHNAMEMAPPINGW SHNAMEMAPPING; +alias LPSHNAMEMAPPINGW LPSHNAMEMAPPING; +// #else +// ... +// #endif // UNICODE + +enum : uint { SE_ERR_FNF = 2 } +enum : uint { SE_ERR_PNF = 3 } +enum : uint { SE_ERR_ACCESSDENIED = 5 } +enum : uint { SE_ERR_OOM = 8 } +enum : uint { SE_ERR_DLLNOTFOUND = 32 } + +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SE_ERR_SHARE = 26 } +enum : uint { SE_ERR_ASSOCINCOMPLETE = 27 } +enum : uint { SE_ERR_DDETIMEOUT = 28 } +enum : uint { SE_ERR_DDEFAIL = 29 } +enum : uint { SE_ERR_DDEBUSY = 30 } +enum : uint { SE_ERR_NOASSOC = 31 } + +// #if(WINVER >= 0x0400) + +enum : uint { SEE_MASK_CLASSNAME = 0x00000001 } +enum : uint { SEE_MASK_CLASSKEY = 0x00000003 } + +enum : uint { SEE_MASK_IDLIST = 0x00000004 } +enum : uint { SEE_MASK_INVOKEIDLIST = 0x0000000c } +enum : uint { SEE_MASK_ICON = 0x00000010 } +enum : uint { SEE_MASK_HOTKEY = 0x00000020 } +enum : uint { SEE_MASK_NOCLOSEPROCESS = 0x00000040 } +enum : uint { SEE_MASK_CONNECTNETDRV = 0x00000080 } +enum : uint { SEE_MASK_FLAG_DDEWAIT = 0x00000100 } +enum : uint { SEE_MASK_DOENVSUBST = 0x00000200 } +enum : uint { SEE_MASK_FLAG_NO_UI = 0x00000400 } +enum : uint { SEE_MASK_UNICODE = 0x00004000 } +enum : uint { SEE_MASK_NO_CONSOLE = 0x00008000 } +enum : uint { SEE_MASK_ASYNCOK = 0x00100000 } +enum : uint { SEE_MASK_HMONITOR = 0x00200000 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { SEE_MASK_NOQUERYCLASSSTORE = 0x01000000 } +enum : uint { SEE_MASK_WAITFORINPUTIDLE = 0x02000000 } +// #endif // (_WIN32_IE >= 0x500) +// #if (_WIN32_IE >= 0x0560) +enum : uint { SEE_MASK_FLAG_LOG_USAGE = 0x04000000 } +// #endif // (_WIN32_IE >= 0x560) + +// #ifndef DUMMYUNIONNAME +// #ifdef NONAMELESSUNION +// #... +// #... +// #... +// #... +// #... +// #else +// #define DUMMYUNIONNAME +// #define DUMMYUNIONNAME2 +// #define DUMMYUNIONNAME3 +// #define DUMMYUNIONNAME4 +// #define DUMMYUNIONNAME5 +// #endif +// #endif // DUMMYUNIONNAME + +struct _SHELLEXECUTEINFOA { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCSTR lpVerb; + LPCSTR lpFile; + LPCSTR lpParameters; + LPCSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + + LPVOID lpIDList; + LPCSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; +union { + HANDLE hIcon; + HANDLE hMonitor; +} + + HANDLE hProcess; +} +alias _SHELLEXECUTEINFOA SHELLEXECUTEINFOA; +alias _SHELLEXECUTEINFOA* LPSHELLEXECUTEINFOA; + +struct _SHELLEXECUTEINFOW { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCWSTR lpVerb; + LPCWSTR lpFile; + LPCWSTR lpParameters; + LPCWSTR lpDirectory; + int nShow; + HINSTANCE hInstApp; + + LPVOID lpIDList; + LPCWSTR lpClass; + HKEY hkeyClass; + DWORD dwHotKey; +union { + HANDLE hIcon; + HANDLE hMonitor; +} + + HANDLE hProcess; +} +alias _SHELLEXECUTEINFOW SHELLEXECUTEINFOW; +alias _SHELLEXECUTEINFOW* LPSHELLEXECUTEINFOW; + +// #ifdef UNICODE +alias SHELLEXECUTEINFOW SHELLEXECUTEINFO; +alias LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export BOOL ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo); +extern(Windows) export BOOL ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo); +// #ifdef UNICODE +alias ShellExecuteExW ShellExecuteEx; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export void WinExecErrorA(HWND hwnd, int error, LPCSTR lpstrFileName, LPCSTR lpstrTitle); +extern(Windows) export void WinExecErrorW(HWND hwnd, int error, LPCWSTR lpstrFileName, LPCWSTR lpstrTitle); +// #ifdef UNICODE +alias WinExecErrorW WinExecError; +// #else +// #... +// #endif // !UNICODE + +struct _SHCREATEPROCESSINFOW { + DWORD cbSize; + ULONG fMask; + HWND hwnd; + LPCWSTR pszFile; + LPCWSTR pszParameters; + LPCWSTR pszCurrentDirectory; + HANDLE hUserToken; + LPSECURITY_ATTRIBUTES lpProcessAttributes; + LPSECURITY_ATTRIBUTES lpThreadAttributes; + BOOL bInheritHandles; + DWORD dwCreationFlags; + LPSTARTUPINFOW lpStartupInfo; + LPPROCESS_INFORMATION lpProcessInformation; +} +alias _SHCREATEPROCESSINFOW SHCREATEPROCESSINFOW; +alias _SHCREATEPROCESSINFOW* PSHCREATEPROCESSINFOW; + +extern(Windows) export BOOL SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW pscpi); + +struct _SHQUERYRBINFO { + DWORD cbSize; +// #if !defined(_MAC) || defined(_MAC_INT_64) + __int64 i64Size; + __int64 i64NumItems; +// #else +// ... +// #endif +} +alias _SHQUERYRBINFO SHQUERYRBINFO; +alias _SHQUERYRBINFO* LPSHQUERYRBINFO; + +enum : uint { SHERB_NOCONFIRMATION = 0x00000001 } +enum : uint { SHERB_NOPROGRESSUI = 0x00000002 } +enum : uint { SHERB_NOSOUND = 0x00000004 } + +extern(Windows) export HRESULT SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); +extern(Windows) export HRESULT SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); +// #ifdef UNICODE +alias SHQueryRecycleBinW SHQueryRecycleBin; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HRESULT SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags); +extern(Windows) export HRESULT SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags); +// #ifdef UNICODE +alias SHEmptyRecycleBinW SHEmptyRecycleBin; +// #else +// #... +// #endif // !UNICODE + +struct _NOTIFYICONDATAA { + DWORD cbSize; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; +// #if (_WIN32_IE < 0x0500) +// ... +// #else + CHAR szTip[128]; +// #endif +// #if (_WIN32_IE >= 0x0500) + DWORD dwState; + DWORD dwStateMask; + CHAR szInfo[256]; +union { + UINT uTimeout; + UINT uVersion; +} + + CHAR szInfoTitle[64]; + DWORD dwInfoFlags; +// #endif +// #if (_WIN32_IE >= 0x600) + GUID guidItem; +// #endif +} +alias _NOTIFYICONDATAA NOTIFYICONDATAA; +alias _NOTIFYICONDATAA* PNOTIFYICONDATAA; + +struct _NOTIFYICONDATAW { + DWORD cbSize; + HWND hWnd; + UINT uID; + UINT uFlags; + UINT uCallbackMessage; + HICON hIcon; +// #if (_WIN32_IE < 0x0500) +// ... +// #else + WCHAR szTip[128]; +// #endif +// #if (_WIN32_IE >= 0x0500) + DWORD dwState; + DWORD dwStateMask; + WCHAR szInfo[256]; +union { + UINT uTimeout; + UINT uVersion; +} + + WCHAR szInfoTitle[64]; + DWORD dwInfoFlags; +// #endif +// #if (_WIN32_IE >= 0x600) + GUID guidItem; +// #endif +} +alias _NOTIFYICONDATAW NOTIFYICONDATAW; +alias _NOTIFYICONDATAW* PNOTIFYICONDATAW; + +// #ifdef UNICODE +alias NOTIFYICONDATAW NOTIFYICONDATA; +alias PNOTIFYICONDATAW PNOTIFYICONDATA; +// #else +// ... +// #endif // UNICODE + +// #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64]) +// #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64]) +// #ifdef UNICODE +// #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE +// #else +// #... +// #endif + +// #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem) +// #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem) +// #ifdef UNICODE +// #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE +// #else +// #... +// #endif + +// #if (_WIN32_IE >= 0x0500) +const uint NIN_SELECT = WM_USER + 0; +enum : uint { NINF_KEY = 0x1 } +const uint NIN_KEYSELECT = NIN_SELECT | NINF_KEY; +// #endif + +// #if (_WIN32_IE >= 0x0501) +const uint NIN_BALLOONSHOW = WM_USER + 2; +const uint NIN_BALLOONHIDE = WM_USER + 3; +const uint NIN_BALLOONTIMEOUT = WM_USER + 4; +const uint NIN_BALLOONUSERCLICK = WM_USER + 5; +// #endif + +enum : uint { NIM_ADD = 0x00000000 } +enum : uint { NIM_MODIFY = 0x00000001 } +enum : uint { NIM_DELETE = 0x00000002 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { NIM_SETFOCUS = 0x00000003 } +enum : uint { NIM_SETVERSION = 0x00000004 } +enum : uint { NOTIFYICON_VERSION = 3 } +// #endif + +enum : uint { NIF_MESSAGE = 0x00000001 } +enum : uint { NIF_ICON = 0x00000002 } +enum : uint { NIF_TIP = 0x00000004 } +// #if (_WIN32_IE >= 0x0500) +enum : uint { NIF_STATE = 0x00000008 } +enum : uint { NIF_INFO = 0x00000010 } +// #endif +// #if (_WIN32_IE >= 0x600) +enum : uint { NIF_GUID = 0x00000020 } +// #endif + +// #if (_WIN32_IE >= 0x0500) +enum : uint { NIS_HIDDEN = 0x00000001 } +enum : uint { NIS_SHAREDICON = 0x00000002 } + +enum : uint { NIIF_NONE = 0x00000000 } + +enum : uint { NIIF_INFO = 0x00000001 } +enum : uint { NIIF_WARNING = 0x00000002 } +enum : uint { NIIF_ERROR = 0x00000003 } +enum : uint { NIIF_ICON_MASK = 0x0000000F } +// #if (_WIN32_IE >= 0x0501) +enum : uint { NIIF_NOSOUND = 0x00000010 } +// #endif +// #endif + +extern(Windows) export BOOL Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA lpData); +extern(Windows) export BOOL Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW lpData); +// #ifdef UNICODE +alias Shell_NotifyIconW Shell_NotifyIcon; +// #else +// #... +// #endif // !UNICODE + +// #ifndef SHFILEINFO_DEFINED +// #define SHFILEINFO_DEFINED + +struct _SHFILEINFOA { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + CHAR szDisplayName[MAX_PATH]; + CHAR szTypeName[80]; +} +alias _SHFILEINFOA SHFILEINFOA; + +struct _SHFILEINFOW { + HICON hIcon; + int iIcon; + DWORD dwAttributes; + WCHAR szDisplayName[MAX_PATH]; + WCHAR szTypeName[80]; +} +alias _SHFILEINFOW SHFILEINFOW; + +// #ifdef UNICODE +alias SHFILEINFOW SHFILEINFO; +// #else +// ... +// #endif // UNICODE + +// #endif // !SHFILEINFO_DEFINED + +enum : uint { SHGFI_ICON = 0x000000100 } +enum : uint { SHGFI_DISPLAYNAME = 0x000000200 } +enum : uint { SHGFI_TYPENAME = 0x000000400 } +enum : uint { SHGFI_ATTRIBUTES = 0x000000800 } +enum : uint { SHGFI_ICONLOCATION = 0x000001000 } +enum : uint { SHGFI_EXETYPE = 0x000002000 } +enum : uint { SHGFI_SYSICONINDEX = 0x000004000 } +enum : uint { SHGFI_LINKOVERLAY = 0x000008000 } +enum : uint { SHGFI_SELECTED = 0x000010000 } +enum : uint { SHGFI_ATTR_SPECIFIED = 0x000020000 } +enum : uint { SHGFI_LARGEICON = 0x000000000 } +enum : uint { SHGFI_SMALLICON = 0x000000001 } +enum : uint { SHGFI_OPENICON = 0x000000002 } +enum : uint { SHGFI_SHELLICONSIZE = 0x000000004 } +enum : uint { SHGFI_PIDL = 0x000000008 } +enum : uint { SHGFI_USEFILEATTRIBUTES = 0x000000010 } + +// #if (_WIN32_IE >= 0x0500) +enum : uint { SHGFI_ADDOVERLAYS = 0x000000020 } +enum : uint { SHGFI_OVERLAYINDEX = 0x000000040 } + +// #endif + +extern(Windows) export DWORD_PTR SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA *psfi, UINT cbFileInfo, UINT uFlags); +extern(Windows) export DWORD_PTR SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags); +// #ifdef UNICODE +alias SHGetFileInfoW SHGetFileInfo; +// #else +// #... +// #endif // !UNICODE + +alias SHGetDiskFreeSpaceEx SHGetDiskFreeSpace; + +extern(Windows) export BOOL SHGetDiskFreeSpaceExA(LPCSTR pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes); +extern(Windows) export BOOL SHGetDiskFreeSpaceExW(LPCWSTR pszDirectoryName, ULARGE_INTEGER* pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTEGER* pulTotalNumberOfFreeBytes); +// #ifdef UNICODE +alias SHGetDiskFreeSpaceExW SHGetDiskFreeSpaceEx; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL SHGetNewLinkInfoA(LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, BOOL *pfMustCopy, UINT uFlags); +extern(Windows) export BOOL SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, BOOL *pfMustCopy, UINT uFlags); +// #ifdef UNICODE +alias SHGetNewLinkInfoW SHGetNewLinkInfo; +// #else +// #... +// #endif // !UNICODE + +enum : uint { SHGNLI_PIDL = 0x000000001 } +enum : uint { SHGNLI_PREFIXNAME = 0x000000002 } +enum : uint { SHGNLI_NOUNIQUE = 0x000000004 } +// #if (_WIN32_IE >= 0x0501) +enum : uint { SHGNLI_NOLNK = 0x000000008 } +// #endif // _WIN2_IE >= 0x0501 + +enum : uint { PRINTACTION_OPEN = 0 } +enum : uint { PRINTACTION_PROPERTIES = 1 } +enum : uint { PRINTACTION_NETINSTALL = 2 } +enum : uint { PRINTACTION_NETINSTALLLINK = 3 } +enum : uint { PRINTACTION_TESTPAGE = 4 } +enum : uint { PRINTACTION_OPENNETPRN = 5 } +// #ifdef WINNT +// #... +// #... +// #endif + +extern(Windows) export BOOL SHInvokePrinterCommandA(HWND hwnd, UINT uAction, LPCSTR lpBuf1, LPCSTR lpBuf2, BOOL fModal); +extern(Windows) export BOOL SHInvokePrinterCommandW(HWND hwnd, UINT uAction, LPCWSTR lpBuf1, LPCWSTR lpBuf2, BOOL fModal); +// #ifdef UNICODE +alias SHInvokePrinterCommandW SHInvokePrinterCommand; +// #else +// #... +// #endif // !UNICODE + +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500) + +extern(Windows) export HRESULT SHLoadNonloadedIconOverlayIdentifiers(); + +extern(Windows) export HRESULT SHIsFileAvailableOffline(LPCWSTR pwszPath, LPDWORD pdwStatus); + +enum : uint { OFFLINE_STATUS_LOCAL = 0x0001 } +enum : uint { OFFLINE_STATUS_REMOTE = 0x0002 } +enum : uint { OFFLINE_STATUS_INCOMPLETE = 0x0004 } + +// #endif + +extern(Windows) export HRESULT SHSetLocalizedName(LPWSTR pszPath, LPCWSTR pszResModule, int idsRes); + +// #if _WIN32_IE >= 0x0600 + +extern(Windows) export HRESULT SHEnumerateUnreadMailAccountsA(HKEY hKeyUser, DWORD dwIndex, LPSTR pszMailAddress, int cchMailAddress); +extern(Windows) export HRESULT SHEnumerateUnreadMailAccountsW(HKEY hKeyUser, DWORD dwIndex, LPWSTR pszMailAddress, int cchMailAddress); +// #ifdef UNICODE +alias SHEnumerateUnreadMailAccountsW SHEnumerateUnreadMailAccounts; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HRESULT SHGetUnreadMailCountA(HKEY hKeyUser, LPCSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExecuteCommand); +extern(Windows) export HRESULT SHGetUnreadMailCountW(HKEY hKeyUser, LPCWSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand); +// #ifdef UNICODE +alias SHGetUnreadMailCountW SHGetUnreadMailCount; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HRESULT SHSetUnreadMailCountA(LPCSTR pszMailAddress, DWORD dwCount, LPCSTR pszShellExecuteCommand); +extern(Windows) export HRESULT SHSetUnreadMailCountW(LPCWSTR pszMailAddress, DWORD dwCount, LPCWSTR pszShellExecuteCommand); +// #ifdef UNICODE +alias SHSetUnreadMailCountW SHSetUnreadMailCount; +// #else +// #... +// #endif // !UNICODE + +// #endif /* _WIN32_IE >= 0x0600 */ + +// #if _WIN32_IE >= 0x0600 + +extern(Windows) export HRESULT SHGetImageList(int iImageList, REFIID riid, void **ppvObj); + +enum : uint { SHIL_LARGE = 0 } +enum : uint { SHIL_SMALL = 1 } +enum : uint { SHIL_EXTRALARGE = 2 } +enum : uint { SHIL_SYSSMALL = 3 } + +alias SHIL_SYSSMALL SHIL_LAST; + +extern(Windows) alias HRESULT function( LPCWSTR pszPath) PFNCANSHAREFOLDERW; +extern(Windows) alias HRESULT function( HWND hwndParent, LPCWSTR pszPath) PFNSHOWSHAREFOLDERUIW; + +// #endif /* _WIN32_IE >= 0x0600 */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #if !defined(_WIN64) +align: +// #endif + +// #endif /* _INC_SHELLAPI */ + ADDED src/win32/winbase.d Index: src/win32/winbase.d ================================================================== --- src/win32/winbase.d +++ src/win32/winbase.d @@ -0,0 +1,6453 @@ +module win32.winbase; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.windef; + +// #ifndef _WINBASE_ +// #define _WINBASE_ + +// #if _MSC_VER > 1000 +// #pragma once +// #endif + +// #ifdef _MAC +// #... +// #endif //_MAC + +// #if !defined(_ADVAPI32_) +// #define WINADVAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #if !defined(_KERNEL32_) +// #define WINBASEAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #if !defined(_ZAWPROXY_) +// #define ZAWPROXYAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #define DefineHandleTable(w) ((w),TRUE) +// #define LimitEmsPages(dw) +// #define SetSwapAreaSize(w) (w) +// #define LockSegment(w) GlobalFix((HANDLE)(w)) +// #define UnlockSegment(w) GlobalUnfix((HANDLE)(w)) +alias GetTickCount GetCurrentTime; + +// #define Yield() + +HANDLE INVALID_HANDLE_VALUE = cast(HANDLE)-1; +enum : uint { INVALID_FILE_SIZE = cast(DWORD)0xFFFFFFFF } +enum : uint { INVALID_SET_FILE_POINTER = cast(DWORD)-1 } +enum : uint { INVALID_FILE_ATTRIBUTES = cast(DWORD)-1 } + +enum : uint { FILE_BEGIN = 0 } +enum : uint { FILE_CURRENT = 1 } +enum : uint { FILE_END = 2 } + +enum : uint { TIME_ZONE_ID_INVALID = cast(DWORD)0xFFFFFFFF } + +enum : uint { WAIT_FAILED = cast(DWORD)0xFFFFFFFF } +alias STATUS_WAIT_0 WAIT_OBJECT_0; + +alias STATUS_ABANDONED_WAIT_0 WAIT_ABANDONED; +alias STATUS_ABANDONED_WAIT_0 WAIT_ABANDONED_0; + +alias STATUS_USER_APC WAIT_IO_COMPLETION; +alias STATUS_PENDING STILL_ACTIVE; +alias STATUS_ACCESS_VIOLATION EXCEPTION_ACCESS_VIOLATION; +alias STATUS_DATATYPE_MISALIGNMENT EXCEPTION_DATATYPE_MISALIGNMENT; +alias STATUS_BREAKPOINT EXCEPTION_BREAKPOINT; +alias STATUS_SINGLE_STEP EXCEPTION_SINGLE_STEP; +alias STATUS_ARRAY_BOUNDS_EXCEEDED EXCEPTION_ARRAY_BOUNDS_EXCEEDED; +alias STATUS_FLOAT_DENORMAL_OPERAND EXCEPTION_FLT_DENORMAL_OPERAND; +alias STATUS_FLOAT_DIVIDE_BY_ZERO EXCEPTION_FLT_DIVIDE_BY_ZERO; +alias STATUS_FLOAT_INEXACT_RESULT EXCEPTION_FLT_INEXACT_RESULT; +alias STATUS_FLOAT_INVALID_OPERATION EXCEPTION_FLT_INVALID_OPERATION; +alias STATUS_FLOAT_OVERFLOW EXCEPTION_FLT_OVERFLOW; +alias STATUS_FLOAT_STACK_CHECK EXCEPTION_FLT_STACK_CHECK; +alias STATUS_FLOAT_UNDERFLOW EXCEPTION_FLT_UNDERFLOW; +alias STATUS_INTEGER_DIVIDE_BY_ZERO EXCEPTION_INT_DIVIDE_BY_ZERO; +alias STATUS_INTEGER_OVERFLOW EXCEPTION_INT_OVERFLOW; +alias STATUS_PRIVILEGED_INSTRUCTION EXCEPTION_PRIV_INSTRUCTION; +alias STATUS_IN_PAGE_ERROR EXCEPTION_IN_PAGE_ERROR; +alias STATUS_ILLEGAL_INSTRUCTION EXCEPTION_ILLEGAL_INSTRUCTION; +alias STATUS_NONCONTINUABLE_EXCEPTION EXCEPTION_NONCONTINUABLE_EXCEPTION; +alias STATUS_STACK_OVERFLOW EXCEPTION_STACK_OVERFLOW; +alias STATUS_INVALID_DISPOSITION EXCEPTION_INVALID_DISPOSITION; +alias STATUS_GUARD_PAGE_VIOLATION EXCEPTION_GUARD_PAGE; +alias STATUS_INVALID_HANDLE EXCEPTION_INVALID_HANDLE; +alias STATUS_CONTROL_C_EXIT CONTROL_C_EXIT; +alias RtlMoveMemory MoveMemory; +alias RtlCopyMemory CopyMemory; +alias RtlFillMemory FillMemory; +alias RtlZeroMemory ZeroMemory; + +enum : uint { FILE_FLAG_WRITE_THROUGH = 0x80000000 } +enum : uint { FILE_FLAG_OVERLAPPED = 0x40000000 } +enum : uint { FILE_FLAG_NO_BUFFERING = 0x20000000 } +enum : uint { FILE_FLAG_RANDOM_ACCESS = 0x10000000 } +enum : uint { FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 } +enum : uint { FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 } +enum : uint { FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 } +enum : uint { FILE_FLAG_POSIX_SEMANTICS = 0x01000000 } +enum : uint { FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 } +enum : uint { FILE_FLAG_OPEN_NO_RECALL = 0x00100000 } +enum : uint { FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 } + +enum : uint { CREATE_NEW = 1 } +enum : uint { CREATE_ALWAYS = 2 } +enum : uint { OPEN_EXISTING = 3 } +enum : uint { OPEN_ALWAYS = 4 } +enum : uint { TRUNCATE_EXISTING = 5 } + +// #if(_WIN32_WINNT >= 0x0400) + +enum : uint { PROGRESS_CONTINUE = 0 } +enum : uint { PROGRESS_CANCEL = 1 } +enum : uint { PROGRESS_STOP = 2 } +enum : uint { PROGRESS_QUIET = 3 } + +enum : uint { CALLBACK_CHUNK_FINISHED = 0x00000000 } +enum : uint { CALLBACK_STREAM_SWITCH = 0x00000001 } + +enum : uint { COPY_FILE_FAIL_IF_EXISTS = 0x00000001 } +enum : uint { COPY_FILE_RESTARTABLE = 0x00000002 } +enum : uint { COPY_FILE_OPEN_SOURCE_FOR_WRITE = 0x00000004 } +enum : uint { COPY_FILE_ALLOW_DECRYPTED_DESTINATION = 0x00000008 } +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) + +enum : uint { REPLACEFILE_WRITE_THROUGH = 0x00000001 } +enum : uint { REPLACEFILE_IGNORE_MERGE_ERRORS = 0x00000002 } + +// #endif // #if (_WIN32_WINNT >= 0x0500) + +enum : uint { PIPE_ACCESS_INBOUND = 0x00000001 } +enum : uint { PIPE_ACCESS_OUTBOUND = 0x00000002 } +enum : uint { PIPE_ACCESS_DUPLEX = 0x00000003 } + +enum : uint { PIPE_CLIENT_END = 0x00000000 } +enum : uint { PIPE_SERVER_END = 0x00000001 } + +enum : uint { PIPE_WAIT = 0x00000000 } +enum : uint { PIPE_NOWAIT = 0x00000001 } +enum : uint { PIPE_READMODE_BYTE = 0x00000000 } +enum : uint { PIPE_READMODE_MESSAGE = 0x00000002 } +enum : uint { PIPE_TYPE_BYTE = 0x00000000 } +enum : uint { PIPE_TYPE_MESSAGE = 0x00000004 } + +enum : uint { PIPE_UNLIMITED_INSTANCES = 255 } + +enum : uint { SECURITY_ANONYMOUS = SecurityAnonymous << 16 } +enum : uint { SECURITY_IDENTIFICATION = SecurityIdentification << 16 } +enum : uint { SECURITY_IMPERSONATION = SecurityImpersonation << 16 } +enum : uint { SECURITY_DELEGATION = SecurityDelegation << 16 } + +enum : uint { SECURITY_CONTEXT_TRACKING = 0x00040000 } +enum : uint { SECURITY_EFFECTIVE_ONLY = 0x00080000 } + +enum : uint { SECURITY_SQOS_PRESENT = 0x00100000 } +enum : uint { SECURITY_VALID_SQOS_FLAGS = 0x001F0000 } + +struct _OVERLAPPED { + ULONG_PTR Internal; + ULONG_PTR InternalHigh; +union { +struct { + DWORD Offset; + DWORD OffsetHigh; +} + + PVOID Pointer; +} + + HANDLE hEvent; +} +alias _OVERLAPPED OVERLAPPED; +alias _OVERLAPPED* LPOVERLAPPED; + +struct _SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; +} +alias _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES; +alias _SECURITY_ATTRIBUTES* PSECURITY_ATTRIBUTES; +alias _SECURITY_ATTRIBUTES* LPSECURITY_ATTRIBUTES; + +struct _PROCESS_INFORMATION { + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; +} +alias _PROCESS_INFORMATION PROCESS_INFORMATION; +alias _PROCESS_INFORMATION* PPROCESS_INFORMATION; +alias _PROCESS_INFORMATION* LPPROCESS_INFORMATION; + +struct _FILETIME { + DWORD dwLowDateTime; + DWORD dwHighDateTime; +} +alias _FILETIME FILETIME; +alias _FILETIME* PFILETIME; +alias _FILETIME* LPFILETIME; + +struct _SYSTEMTIME { + WORD wYear; + WORD wMonth; + WORD wDayOfWeek; + WORD wDay; + WORD wHour; + WORD wMinute; + WORD wSecond; + WORD wMilliseconds; +} +alias _SYSTEMTIME SYSTEMTIME; +alias _SYSTEMTIME* PSYSTEMTIME; +alias _SYSTEMTIME* LPSYSTEMTIME; + +extern(Windows) alias DWORD function( LPVOID lpThreadParameter ) PTHREAD_START_ROUTINE; +alias PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) alias VOID function( LPVOID lpFiberParameter ) PFIBER_START_ROUTINE; +alias PFIBER_START_ROUTINE LPFIBER_START_ROUTINE; +// #endif /* _WIN32_WINNT >= 0x0400 */ + +alias RTL_CRITICAL_SECTION CRITICAL_SECTION; +alias PRTL_CRITICAL_SECTION PCRITICAL_SECTION; +alias PRTL_CRITICAL_SECTION LPCRITICAL_SECTION; + +alias RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG; +alias PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG; +alias PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG; + +// #if defined(_X86_) +alias PLDT_ENTRY LPLDT_ENTRY; +// #else +// ... +// #endif + +alias MUTANT_QUERY_STATE MUTEX_MODIFY_STATE; +alias MUTANT_ALL_ACCESS MUTEX_ALL_ACCESS; + +enum : uint { SP_SERIALCOMM = cast(DWORD)0x00000001 } + +enum : uint { PST_UNSPECIFIED = cast(DWORD)0x00000000 } +enum : uint { PST_RS232 = cast(DWORD)0x00000001 } +enum : uint { PST_PARALLELPORT = cast(DWORD)0x00000002 } +enum : uint { PST_RS422 = cast(DWORD)0x00000003 } +enum : uint { PST_RS423 = cast(DWORD)0x00000004 } +enum : uint { PST_RS449 = cast(DWORD)0x00000005 } +enum : uint { PST_MODEM = cast(DWORD)0x00000006 } +enum : uint { PST_FAX = cast(DWORD)0x00000021 } +enum : uint { PST_SCANNER = cast(DWORD)0x00000022 } +enum : uint { PST_NETWORK_BRIDGE = cast(DWORD)0x00000100 } +enum : uint { PST_LAT = cast(DWORD)0x00000101 } +enum : uint { PST_TCPIP_TELNET = cast(DWORD)0x00000102 } +enum : uint { PST_X25 = cast(DWORD)0x00000103 } + +enum : uint { PCF_DTRDSR = cast(DWORD)0x0001 } +enum : uint { PCF_RTSCTS = cast(DWORD)0x0002 } +enum : uint { PCF_RLSD = cast(DWORD)0x0004 } +enum : uint { PCF_PARITY_CHECK = cast(DWORD)0x0008 } +enum : uint { PCF_XONXOFF = cast(DWORD)0x0010 } +enum : uint { PCF_SETXCHAR = cast(DWORD)0x0020 } +enum : uint { PCF_TOTALTIMEOUTS = cast(DWORD)0x0040 } +enum : uint { PCF_INTTIMEOUTS = cast(DWORD)0x0080 } +enum : uint { PCF_SPECIALCHARS = cast(DWORD)0x0100 } +enum : uint { PCF_16BITMODE = cast(DWORD)0x0200 } + +enum : uint { SP_PARITY = cast(DWORD)0x0001 } +enum : uint { SP_BAUD = cast(DWORD)0x0002 } +enum : uint { SP_DATABITS = cast(DWORD)0x0004 } +enum : uint { SP_STOPBITS = cast(DWORD)0x0008 } +enum : uint { SP_HANDSHAKING = cast(DWORD)0x0010 } +enum : uint { SP_PARITY_CHECK = cast(DWORD)0x0020 } +enum : uint { SP_RLSD = cast(DWORD)0x0040 } + +enum : uint { BAUD_075 = cast(DWORD)0x00000001 } +enum : uint { BAUD_110 = cast(DWORD)0x00000002 } +enum : uint { BAUD_134_5 = cast(DWORD)0x00000004 } +enum : uint { BAUD_150 = cast(DWORD)0x00000008 } +enum : uint { BAUD_300 = cast(DWORD)0x00000010 } +enum : uint { BAUD_600 = cast(DWORD)0x00000020 } +enum : uint { BAUD_1200 = cast(DWORD)0x00000040 } +enum : uint { BAUD_1800 = cast(DWORD)0x00000080 } +enum : uint { BAUD_2400 = cast(DWORD)0x00000100 } +enum : uint { BAUD_4800 = cast(DWORD)0x00000200 } +enum : uint { BAUD_7200 = cast(DWORD)0x00000400 } +enum : uint { BAUD_9600 = cast(DWORD)0x00000800 } +enum : uint { BAUD_14400 = cast(DWORD)0x00001000 } +enum : uint { BAUD_19200 = cast(DWORD)0x00002000 } +enum : uint { BAUD_38400 = cast(DWORD)0x00004000 } +enum : uint { BAUD_56K = cast(DWORD)0x00008000 } +enum : uint { BAUD_128K = cast(DWORD)0x00010000 } +enum : uint { BAUD_115200 = cast(DWORD)0x00020000 } +enum : uint { BAUD_57600 = cast(DWORD)0x00040000 } +enum : uint { BAUD_USER = cast(DWORD)0x10000000 } + +enum : uint { DATABITS_5 = cast(WORD)0x0001 } +enum : uint { DATABITS_6 = cast(WORD)0x0002 } +enum : uint { DATABITS_7 = cast(WORD)0x0004 } +enum : uint { DATABITS_8 = cast(WORD)0x0008 } +enum : uint { DATABITS_16 = cast(WORD)0x0010 } +enum : uint { DATABITS_16X = cast(WORD)0x0020 } + +enum : uint { STOPBITS_10 = cast(WORD)0x0001 } +enum : uint { STOPBITS_15 = cast(WORD)0x0002 } +enum : uint { STOPBITS_20 = cast(WORD)0x0004 } +enum : uint { PARITY_NONE = cast(WORD)0x0100 } +enum : uint { PARITY_ODD = cast(WORD)0x0200 } +enum : uint { PARITY_EVEN = cast(WORD)0x0400 } +enum : uint { PARITY_MARK = cast(WORD)0x0800 } +enum : uint { PARITY_SPACE = cast(WORD)0x1000 } + +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[1]; +} +alias _COMMPROP COMMPROP; +alias _COMMPROP* LPCOMMPROP; + +enum : uint { COMMPROP_INITIALIZED = cast(DWORD)0xE73CF52E } + +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 cbInQue; + DWORD cbOutQue; +} +alias _COMSTAT COMSTAT; +alias _COMSTAT* LPCOMSTAT; + +enum : uint { DTR_CONTROL_DISABLE = 0x00 } +enum : uint { DTR_CONTROL_ENABLE = 0x01 } +enum : uint { DTR_CONTROL_HANDSHAKE = 0x02 } + +enum : uint { RTS_CONTROL_DISABLE = 0x00 } +enum : uint { RTS_CONTROL_ENABLE = 0x01 } +enum : uint { RTS_CONTROL_HANDSHAKE = 0x02 } +enum : uint { RTS_CONTROL_TOGGLE = 0x03 } + +struct _DCB { + DWORD DCBlength; + DWORD BaudRate; +// DWORD fBinary: 1; +// DWORD fParity: 1; +// DWORD fOutxCtsFlow:1; +// DWORD fOutxDsrFlow:1; +// DWORD fDtrControl:2; +// DWORD fDsrSensitivity:1; +// DWORD fTXContinueOnXoff: 1; +// DWORD fOutX: 1; +// DWORD fInX: 1; +// DWORD fErrorChar: 1; +// DWORD fNull: 1; +// DWORD fRtsControl:2; +// DWORD fAbortOnError:1; +// DWORD fDummy2:17; + 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 DCB; +alias _DCB* LPDCB; + +struct _COMMTIMEOUTS { + DWORD ReadIntervalTimeout; + DWORD ReadTotalTimeoutMultiplier; + DWORD ReadTotalTimeoutConstant; + DWORD WriteTotalTimeoutMultiplier; + DWORD WriteTotalTimeoutConstant; +} +alias _COMMTIMEOUTS COMMTIMEOUTS; +alias _COMMTIMEOUTS* LPCOMMTIMEOUTS; + +struct _COMMCONFIG { + DWORD dwSize; + WORD wVersion; + WORD wReserved; + DCB dcb; + DWORD dwProviderSubType; + DWORD dwProviderOffset; + DWORD dwProviderSize; + WCHAR wcProviderData[1]; +} +alias _COMMCONFIG COMMCONFIG; +alias _COMMCONFIG* LPCOMMCONFIG; + +struct _SYSTEM_INFO { +union { + DWORD dwOemId; +struct { + WORD wProcessorArchitecture; + WORD wReserved; +} + +} + + DWORD dwPageSize; + LPVOID lpMinimumApplicationAddress; + LPVOID lpMaximumApplicationAddress; + DWORD_PTR dwActiveProcessorMask; + DWORD dwNumberOfProcessors; + DWORD dwProcessorType; + DWORD dwAllocationGranularity; + WORD wProcessorLevel; + WORD wProcessorRevision; +} +alias _SYSTEM_INFO SYSTEM_INFO; +alias _SYSTEM_INFO* LPSYSTEM_INFO; + +alias FreeLibrary FreeModule; +// #define MakeProcInstance(lpProc,hInstance) (lpProc) +// #define FreeProcInstance(lpProc) (lpProc) + +enum : uint { GMEM_FIXED = 0x0000 } +enum : uint { GMEM_MOVEABLE = 0x0002 } +enum : uint { GMEM_NOCOMPACT = 0x0010 } +enum : uint { GMEM_NODISCARD = 0x0020 } +enum : uint { GMEM_ZEROINIT = 0x0040 } +enum : uint { GMEM_MODIFY = 0x0080 } +enum : uint { GMEM_DISCARDABLE = 0x0100 } +enum : uint { GMEM_NOT_BANKED = 0x1000 } +enum : uint { GMEM_SHARE = 0x2000 } +enum : uint { GMEM_DDESHARE = 0x2000 } +enum : uint { GMEM_NOTIFY = 0x4000 } +alias GMEM_NOT_BANKED GMEM_LOWER; +enum : uint { GMEM_VALID_FLAGS = 0x7F72 } +enum : uint { GMEM_INVALID_HANDLE = 0x8000 } + +enum : uint { GHND = GMEM_MOVEABLE | GMEM_ZEROINIT } +enum : uint { GPTR = GMEM_FIXED | GMEM_ZEROINIT } + +// #define GlobalLRUNewest( h ) ((HANDLE)(h)) +// #define GlobalLRUOldest( h ) ((HANDLE)(h)) +// #define GlobalDiscard( h ) GlobalReAlloc( (h), 0, GMEM_MOVEABLE ) + +enum : uint { GMEM_DISCARDED = 0x4000 } +enum : uint { GMEM_LOCKCOUNT = 0x00FF } + +struct _MEMORYSTATUS { + DWORD dwLength; + DWORD dwMemoryLoad; + SIZE_T dwTotalPhys; + SIZE_T dwAvailPhys; + SIZE_T dwTotalPageFile; + SIZE_T dwAvailPageFile; + SIZE_T dwTotalVirtual; + SIZE_T dwAvailVirtual; +} +alias _MEMORYSTATUS MEMORYSTATUS; +alias _MEMORYSTATUS* LPMEMORYSTATUS; + +enum : uint { LMEM_FIXED = 0x0000 } +enum : uint { LMEM_MOVEABLE = 0x0002 } +enum : uint { LMEM_NOCOMPACT = 0x0010 } +enum : uint { LMEM_NODISCARD = 0x0020 } +enum : uint { LMEM_ZEROINIT = 0x0040 } +enum : uint { LMEM_MODIFY = 0x0080 } +enum : uint { LMEM_DISCARDABLE = 0x0F00 } +enum : uint { LMEM_VALID_FLAGS = 0x0F72 } +enum : uint { LMEM_INVALID_HANDLE = 0x8000 } + +enum : uint { LHND = LMEM_MOVEABLE | LMEM_ZEROINIT } +enum : uint { LPTR = LMEM_FIXED | LMEM_ZEROINIT } + +enum : uint { NONZEROLHND = LMEM_MOVEABLE } +enum : uint { NONZEROLPTR = LMEM_FIXED } + +// #define LocalDiscard( h ) LocalReAlloc( (h), 0, LMEM_MOVEABLE ) + +enum : uint { LMEM_DISCARDED = 0x4000 } +enum : uint { LMEM_LOCKCOUNT = 0x00FF } + +enum : uint { DEBUG_PROCESS = 0x00000001 } +enum : uint { DEBUG_ONLY_THIS_PROCESS = 0x00000002 } + +enum : uint { CREATE_SUSPENDED = 0x00000004 } + +enum : uint { DETACHED_PROCESS = 0x00000008 } + +enum : uint { CREATE_NEW_CONSOLE = 0x00000010 } + +enum : uint { NORMAL_PRIORITY_CLASS = 0x00000020 } +enum : uint { IDLE_PRIORITY_CLASS = 0x00000040 } +enum : uint { HIGH_PRIORITY_CLASS = 0x00000080 } +enum : uint { REALTIME_PRIORITY_CLASS = 0x00000100 } + +enum : uint { CREATE_NEW_PROCESS_GROUP = 0x00000200 } +enum : uint { CREATE_UNICODE_ENVIRONMENT = 0x00000400 } + +enum : uint { CREATE_SEPARATE_WOW_VDM = 0x00000800 } +enum : uint { CREATE_SHARED_WOW_VDM = 0x00001000 } +enum : uint { CREATE_FORCEDOS = 0x00002000 } + +enum : uint { BELOW_NORMAL_PRIORITY_CLASS = 0x00004000 } +enum : uint { ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000 } +enum : uint { STACK_SIZE_PARAM_IS_A_RESERVATION = 0x00010000 } + +enum : uint { CREATE_BREAKAWAY_FROM_JOB = 0x01000000 } +enum : uint { CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 } + +enum : uint { CREATE_DEFAULT_ERROR_MODE = 0x04000000 } +enum : uint { CREATE_NO_WINDOW = 0x08000000 } + +enum : uint { PROFILE_USER = 0x10000000 } +enum : uint { PROFILE_KERNEL = 0x20000000 } +enum : uint { PROFILE_SERVER = 0x40000000 } + +enum : uint { CREATE_IGNORE_SYSTEM_DEFAULT = 0x80000000 } + +alias THREAD_BASE_PRIORITY_MIN THREAD_PRIORITY_LOWEST; +enum : uint { THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST+1 } +enum : uint { THREAD_PRIORITY_NORMAL = 0 } +alias THREAD_BASE_PRIORITY_MAX THREAD_PRIORITY_HIGHEST; +enum : uint { THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST-1 } +enum : uint { THREAD_PRIORITY_ERROR_RETURN = MAXLONG } + +alias THREAD_BASE_PRIORITY_LOWRT THREAD_PRIORITY_TIME_CRITICAL; +alias THREAD_BASE_PRIORITY_IDLE THREAD_PRIORITY_IDLE; + +enum : uint { EXCEPTION_DEBUG_EVENT = 1 } +enum : uint { CREATE_THREAD_DEBUG_EVENT = 2 } +enum : uint { CREATE_PROCESS_DEBUG_EVENT = 3 } +enum : uint { EXIT_THREAD_DEBUG_EVENT = 4 } +enum : uint { EXIT_PROCESS_DEBUG_EVENT = 5 } +enum : uint { LOAD_DLL_DEBUG_EVENT = 6 } +enum : uint { UNLOAD_DLL_DEBUG_EVENT = 7 } +enum : uint { OUTPUT_DEBUG_STRING_EVENT = 8 } +enum : uint { RIP_EVENT = 9 } + +struct _EXCEPTION_DEBUG_INFO { + EXCEPTION_RECORD ExceptionRecord; + DWORD dwFirstChance; +} +alias _EXCEPTION_DEBUG_INFO EXCEPTION_DEBUG_INFO; +alias _EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; + +struct _CREATE_THREAD_DEBUG_INFO { + HANDLE hThread; + LPVOID lpThreadLocalBase; + LPTHREAD_START_ROUTINE lpStartAddress; +} +alias _CREATE_THREAD_DEBUG_INFO CREATE_THREAD_DEBUG_INFO; +alias _CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; + +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 CREATE_PROCESS_DEBUG_INFO; +alias _CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; + +struct _EXIT_THREAD_DEBUG_INFO { + DWORD dwExitCode; +} +alias _EXIT_THREAD_DEBUG_INFO EXIT_THREAD_DEBUG_INFO; +alias _EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; + +struct _EXIT_PROCESS_DEBUG_INFO { + DWORD dwExitCode; +} +alias _EXIT_PROCESS_DEBUG_INFO EXIT_PROCESS_DEBUG_INFO; +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 LOAD_DLL_DEBUG_INFO; +alias _LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; + +struct _UNLOAD_DLL_DEBUG_INFO { + LPVOID lpBaseOfDll; +} +alias _UNLOAD_DLL_DEBUG_INFO UNLOAD_DLL_DEBUG_INFO; +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 OUTPUT_DEBUG_STRING_INFO; +alias _OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; + +struct _RIP_INFO { + DWORD dwError; + DWORD dwType; +} +alias _RIP_INFO RIP_INFO; +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 DEBUG_EVENT; +alias _DEBUG_EVENT* LPDEBUG_EVENT; + +// #if !defined(MIDL_PASS) +alias PCONTEXT LPCONTEXT; +alias PEXCEPTION_RECORD LPEXCEPTION_RECORD; +alias PEXCEPTION_POINTERS LPEXCEPTION_POINTERS; +// #endif + +enum : uint { DRIVE_UNKNOWN = 0 } +enum : uint { DRIVE_NO_ROOT_DIR = 1 } +enum : uint { DRIVE_REMOVABLE = 2 } +enum : uint { DRIVE_FIXED = 3 } +enum : uint { DRIVE_REMOTE = 4 } +enum : uint { DRIVE_CDROM = 5 } +enum : uint { DRIVE_RAMDISK = 6 } + +// #ifndef _MAC +// #define GetFreeSpace(w) (0x100000L) +// #else +// ... +// #endif + +enum : uint { FILE_TYPE_UNKNOWN = 0x0000 } +enum : uint { FILE_TYPE_DISK = 0x0001 } +enum : uint { FILE_TYPE_CHAR = 0x0002 } +enum : uint { FILE_TYPE_PIPE = 0x0003 } +enum : uint { FILE_TYPE_REMOTE = 0x8000 } + +enum : uint { STD_INPUT_HANDLE = cast(DWORD)-10 } +enum : uint { STD_OUTPUT_HANDLE = cast(DWORD)-11 } +enum : uint { STD_ERROR_HANDLE = cast(DWORD)-12 } + +enum : uint { NOPARITY = 0 } +enum : uint { ODDPARITY = 1 } +enum : uint { EVENPARITY = 2 } +enum : uint { MARKPARITY = 3 } +enum : uint { SPACEPARITY = 4 } + +enum : uint { ONESTOPBIT = 0 } +enum : uint { ONE5STOPBITS = 1 } +enum : uint { TWOSTOPBITS = 2 } + +enum : uint { IGNORE = 0 } +enum : uint { INFINITE = 0xFFFFFFFF } + +enum : uint { CBR_110 = 110 } +enum : uint { CBR_300 = 300 } +enum : uint { CBR_600 = 600 } +enum : uint { CBR_1200 = 1200 } +enum : uint { CBR_2400 = 2400 } +enum : uint { CBR_4800 = 4800 } +enum : uint { CBR_9600 = 9600 } +enum : uint { CBR_14400 = 14400 } +enum : uint { CBR_19200 = 19200 } +enum : uint { CBR_38400 = 38400 } +enum : uint { CBR_56000 = 56000 } +enum : uint { CBR_57600 = 57600 } +enum : uint { CBR_115200 = 115200 } +enum : uint { CBR_128000 = 128000 } +enum : uint { CBR_256000 = 256000 } + +enum : uint { CE_RXOVER = 0x0001 } +enum : uint { CE_OVERRUN = 0x0002 } +enum : uint { CE_RXPARITY = 0x0004 } +enum : uint { CE_FRAME = 0x0008 } +enum : uint { CE_BREAK = 0x0010 } +enum : uint { CE_TXFULL = 0x0100 } +enum : uint { CE_PTO = 0x0200 } +enum : uint { CE_IOE = 0x0400 } +enum : uint { CE_DNS = 0x0800 } +enum : uint { CE_OOP = 0x1000 } +enum : uint { CE_MODE = 0x8000 } + +enum { IE_BADID = -1 } +enum { IE_OPEN = -2 } +enum { IE_NOPEN = -3 } +enum { IE_MEMORY = -4 } +enum { IE_DEFAULT = -5 } +enum { IE_HARDWARE = -10 } +enum { IE_BYTESIZE = -11 } +enum { IE_BAUDRATE = -12 } + +enum : uint { EV_RXCHAR = 0x0001 } +enum : uint { EV_RXFLAG = 0x0002 } +enum : uint { EV_TXEMPTY = 0x0004 } +enum : uint { EV_CTS = 0x0008 } +enum : uint { EV_DSR = 0x0010 } +enum : uint { EV_RLSD = 0x0020 } +enum : uint { EV_BREAK = 0x0040 } +enum : uint { EV_ERR = 0x0080 } +enum : uint { EV_RING = 0x0100 } +enum : uint { EV_PERR = 0x0200 } +enum : uint { EV_RX80FULL = 0x0400 } +enum : uint { EV_EVENT1 = 0x0800 } +enum : uint { EV_EVENT2 = 0x1000 } + +enum : uint { SETXOFF = 1 } +enum : uint { SETXON = 2 } +enum : uint { SETRTS = 3 } +enum : uint { CLRRTS = 4 } +enum : uint { SETDTR = 5 } +enum : uint { CLRDTR = 6 } +enum : uint { RESETDEV = 7 } +enum : uint { SETBREAK = 8 } +enum : uint { CLRBREAK = 9 } + +enum : uint { PURGE_TXABORT = 0x0001 } +enum : uint { PURGE_RXABORT = 0x0002 } +enum : uint { PURGE_TXCLEAR = 0x0004 } +enum : uint { PURGE_RXCLEAR = 0x0008 } + +enum : uint { LPTx = 0x80 } + +enum : uint { MS_CTS_ON = cast(DWORD)0x0010 } +enum : uint { MS_DSR_ON = cast(DWORD)0x0020 } +enum : uint { MS_RING_ON = cast(DWORD)0x0040 } +enum : uint { MS_RLSD_ON = cast(DWORD)0x0080 } + +enum : uint { S_QUEUEEMPTY = 0 } +enum : uint { S_THRESHOLD = 1 } +enum : uint { S_ALLTHRESHOLD = 2 } + +enum : uint { S_NORMAL = 0 } +enum : uint { S_LEGATO = 1 } +enum : uint { S_STACCATO = 2 } + +enum : uint { S_PERIOD512 = 0 } +enum : uint { S_PERIOD1024 = 1 } +enum : uint { S_PERIOD2048 = 2 } +enum : uint { S_PERIODVOICE = 3 } +enum : uint { S_WHITE512 = 4 } +enum : uint { S_WHITE1024 = 5 } +enum : uint { S_WHITE2048 = 6 } +enum : uint { S_WHITEVOICE = 7 } + +enum { S_SERDVNA = -1 } +enum { S_SEROFM = -2 } +enum { S_SERMACT = -3 } +enum { S_SERQFUL = -4 } +enum { S_SERBDNT = -5 } +enum { S_SERDLN = -6 } +enum { S_SERDCC = -7 } +enum { S_SERDTP = -8 } +enum { S_SERDVL = -9 } +enum { S_SERDMD = -10 } +enum { S_SERDSH = -11 } +enum { S_SERDPT = -12 } +enum { S_SERDFQ = -13 } +enum { S_SERDDR = -14 } +enum { S_SERDSR = -15 } +enum { S_SERDST = -16 } + +enum : uint { NMPWAIT_WAIT_FOREVER = 0xffffffff } +enum : uint { NMPWAIT_NOWAIT = 0x00000001 } +enum : uint { NMPWAIT_USE_DEFAULT_WAIT = 0x00000000 } + +alias FILE_CASE_PRESERVED_NAMES FS_CASE_IS_PRESERVED; +alias FILE_CASE_SENSITIVE_SEARCH FS_CASE_SENSITIVE; +alias FILE_UNICODE_ON_DISK FS_UNICODE_STORED_ON_DISK; +alias FILE_PERSISTENT_ACLS FS_PERSISTENT_ACLS; +alias FILE_VOLUME_IS_COMPRESSED FS_VOL_IS_COMPRESSED; +alias FILE_FILE_COMPRESSION FS_FILE_COMPRESSION; +alias FILE_SUPPORTS_ENCRYPTION FS_FILE_ENCRYPTION; + +alias SECTION_QUERY FILE_MAP_COPY; +alias SECTION_MAP_WRITE FILE_MAP_WRITE; +alias SECTION_MAP_READ FILE_MAP_READ; +alias SECTION_ALL_ACCESS FILE_MAP_ALL_ACCESS; + +enum : uint { OF_READ = 0x00000000 } +enum : uint { OF_WRITE = 0x00000001 } +enum : uint { OF_READWRITE = 0x00000002 } +enum : uint { OF_SHARE_COMPAT = 0x00000000 } +enum : uint { OF_SHARE_EXCLUSIVE = 0x00000010 } +enum : uint { OF_SHARE_DENY_WRITE = 0x00000020 } +enum : uint { OF_SHARE_DENY_READ = 0x00000030 } +enum : uint { OF_SHARE_DENY_NONE = 0x00000040 } +enum : uint { OF_PARSE = 0x00000100 } +enum : uint { OF_DELETE = 0x00000200 } +enum : uint { OF_VERIFY = 0x00000400 } +enum : uint { OF_CANCEL = 0x00000800 } +enum : uint { OF_CREATE = 0x00001000 } +enum : uint { OF_PROMPT = 0x00002000 } +enum : uint { OF_EXIST = 0x00004000 } +enum : uint { OF_REOPEN = 0x00008000 } + +enum : uint { OFS_MAXPATHNAME = 128 } +struct _OFSTRUCT { + BYTE cBytes; + BYTE fFixedDisk; + WORD nErrCode; + WORD Reserved1; + WORD Reserved2; + CHAR szPathName[OFS_MAXPATHNAME]; +} +alias _OFSTRUCT OFSTRUCT; +alias _OFSTRUCT* LPOFSTRUCT; +alias _OFSTRUCT* POFSTRUCT; + +// #ifndef NOWINBASEINTERLOCK + +// #ifndef _NTOS_ + +// #if defined(_M_IA64) && !defined(RC_INVOKED) + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #elif defined(_M_AMD64) && !defined(RC_INVOKED) + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #else // X86 interlocked definitions + +extern(Windows) export LONG InterlockedIncrement( + LONG *lpAddend); + +extern(Windows) export LONG InterlockedDecrement( + LONG *lpAddend); + +extern(Windows) export LONG InterlockedExchange( + LONG *Target, + LONG Value); + +void* InterlockedExchangePointer(void** t, void* v){ return cast(void*)InterlockedExchange(cast(PLONG)t, cast(LONG)v); } + +extern(Windows) export LONG InterlockedExchangeAdd( + LONG *Addend, + LONG Value); + +extern(Windows) export LONG InterlockedCompareExchange( + LONG *Destination, + LONG Exchange, + LONG Comperand); + +// #ifdef __cplusplus + +PVOID __InlineInterlockedCompareExchangePointer(PVOID* Destination, PVOID ExChange, PVOID Comperand){ return(cast(PVOID)cast(LONG_PTR)InterlockedCompareExchange(cast(LONG*)Destination, cast(LONG)cast(LONG_PTR)ExChange, cast(LONG)cast(LONG_PTR)Comperand)); } +alias __InlineInterlockedCompareExchangePointer InterlockedCompareExchangePointer; + +// #else + +// #... +// ... + +// #endif /* __cplusplus */ + +// #endif /* X86 | IA64 */ + +// #if defined(_SLIST_HEADER_) && !defined(_NTOSP_) + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif /* _SLIST_HEADER_ */ +// #endif /* _NTOS_ */ + +// #endif /* NOWINBASEINTERLOCK */ + +extern(Windows) export BOOL FreeResource( + HGLOBAL hResData); + +extern(Windows) export LPVOID LockResource( + HGLOBAL hResData); + +// #define UnlockResource(hResData) ((hResData), 0) +enum : uint { MAXINTATOM = 0xC000 } +// #define MAKEINTATOM(i) (LPTSTR)((ULONG_PTR)((WORD)(i))) +enum : ATOM { INVALID_ATOM = 0 } + +// #ifndef _MAC +// ??? +// ??? +// #else +// ... +// #endif +// WinMain + +extern(Windows) export BOOL FreeLibrary( + HMODULE hLibModule); + +extern(Windows) export VOID FreeLibraryAndExitThread( + HMODULE hLibModule, + DWORD dwExitCode); + +extern(Windows) export BOOL DisableThreadLibraryCalls( + HMODULE hLibModule); + +extern(Windows) export FARPROC GetProcAddress( + HMODULE hModule, + LPCSTR lpProcName); + +extern(Windows) export DWORD GetVersion(); + +extern(Windows) export HGLOBAL GlobalAlloc( + UINT uFlags, + SIZE_T dwBytes); + +extern(Windows) export HGLOBAL GlobalReAlloc( + HGLOBAL hMem, + SIZE_T dwBytes, + UINT uFlags); + +extern(Windows) export SIZE_T GlobalSize( + HGLOBAL hMem); + +extern(Windows) export UINT GlobalFlags( + HGLOBAL hMem); + +extern(Windows) export LPVOID GlobalLock( + HGLOBAL hMem); + +extern(Windows) export HGLOBAL GlobalHandle( + LPCVOID pMem); + +extern(Windows) export BOOL GlobalUnlock( + HGLOBAL hMem); + +extern(Windows) export HGLOBAL GlobalFree( + HGLOBAL hMem); + +extern(Windows) export SIZE_T GlobalCompact( + DWORD dwMinFree); + +extern(Windows) export VOID GlobalFix( + HGLOBAL hMem); + +extern(Windows) export VOID GlobalUnfix( + HGLOBAL hMem); + +extern(Windows) export LPVOID GlobalWire( + HGLOBAL hMem); + +extern(Windows) export BOOL GlobalUnWire( + HGLOBAL hMem); + +extern(Windows) export VOID GlobalMemoryStatus( + LPMEMORYSTATUS lpBuffer); + +struct _MEMORYSTATUSEX { + DWORD dwLength; + DWORD dwMemoryLoad; + DWORDLONG ullTotalPhys; + DWORDLONG ullAvailPhys; + DWORDLONG ullTotalPageFile; + DWORDLONG ullAvailPageFile; + DWORDLONG ullTotalVirtual; + DWORDLONG ullAvailVirtual; + DWORDLONG ullAvailExtendedVirtual; +} +alias _MEMORYSTATUSEX MEMORYSTATUSEX; +alias _MEMORYSTATUSEX* LPMEMORYSTATUSEX; + +extern(Windows) export BOOL GlobalMemoryStatusEx( + LPMEMORYSTATUSEX lpBuffer); + +extern(Windows) export HLOCAL LocalAlloc( + UINT uFlags, + SIZE_T uBytes); + +extern(Windows) export HLOCAL LocalReAlloc( + HLOCAL hMem, + SIZE_T uBytes, + UINT uFlags); + +extern(Windows) export LPVOID LocalLock( + HLOCAL hMem); + +extern(Windows) export HLOCAL LocalHandle( + LPCVOID pMem); + +extern(Windows) export BOOL LocalUnlock( + HLOCAL hMem); + +extern(Windows) export SIZE_T LocalSize( + HLOCAL hMem); + +extern(Windows) export UINT LocalFlags( + HLOCAL hMem); + +extern(Windows) export HLOCAL LocalFree( + HLOCAL hMem); + +extern(Windows) export SIZE_T LocalShrink( + HLOCAL hMem, + UINT cbNewSize); + +extern(Windows) export SIZE_T LocalCompact( + UINT uMinFree); + +extern(Windows) export BOOL FlushInstructionCache( + HANDLE hProcess, + LPCVOID lpBaseAddress, + SIZE_T dwSize); + +extern(Windows) export LPVOID VirtualAlloc( + LPVOID lpAddress, + SIZE_T dwSize, + DWORD flAllocationType, + DWORD flProtect); + +extern(Windows) export BOOL VirtualFree( + LPVOID lpAddress, + SIZE_T dwSize, + DWORD dwFreeType); + +extern(Windows) export BOOL VirtualProtect( + LPVOID lpAddress, + SIZE_T dwSize, + DWORD flNewProtect, + PDWORD lpflOldProtect); + +extern(Windows) export SIZE_T VirtualQuery( + LPCVOID lpAddress, + PMEMORY_BASIC_INFORMATION lpBuffer, + SIZE_T dwLength); + +extern(Windows) export LPVOID VirtualAllocEx( + HANDLE hProcess, + LPVOID lpAddress, + SIZE_T dwSize, + DWORD flAllocationType, + DWORD flProtect); + +extern(Windows) export UINT GetWriteWatch( + DWORD dwFlags, + PVOID lpBaseAddress, + SIZE_T dwRegionSize, + PVOID *lpAddresses, + PULONG_PTR lpdwCount, + PULONG lpdwGranularity); + +extern(Windows) export UINT ResetWriteWatch( + LPVOID lpBaseAddress, + SIZE_T dwRegionSize); + +extern(Windows) export BOOL VirtualFreeEx( + HANDLE hProcess, + LPVOID lpAddress, + SIZE_T dwSize, + DWORD dwFreeType); + +extern(Windows) export BOOL VirtualProtectEx( + HANDLE hProcess, + LPVOID lpAddress, + SIZE_T dwSize, + DWORD flNewProtect, + PDWORD lpflOldProtect); + +extern(Windows) export SIZE_T VirtualQueryEx( + HANDLE hProcess, + LPCVOID lpAddress, + PMEMORY_BASIC_INFORMATION lpBuffer, + SIZE_T dwLength); + +extern(Windows) export HANDLE HeapCreate( + DWORD flOptions, + SIZE_T dwInitialSize, + SIZE_T dwMaximumSize); + +extern(Windows) export BOOL HeapDestroy( + HANDLE hHeap); + +extern(Windows) export LPVOID HeapAlloc( + HANDLE hHeap, + DWORD dwFlags, + SIZE_T dwBytes); + +extern(Windows) export LPVOID HeapReAlloc( + HANDLE hHeap, + DWORD dwFlags, + LPVOID lpMem, + SIZE_T dwBytes); + +extern(Windows) export BOOL HeapFree( + HANDLE hHeap, + DWORD dwFlags, + LPVOID lpMem); + +extern(Windows) export SIZE_T HeapSize( + HANDLE hHeap, + DWORD dwFlags, + LPCVOID lpMem); + +extern(Windows) export BOOL HeapValidate( + HANDLE hHeap, + DWORD dwFlags, + LPCVOID lpMem); + +extern(Windows) export SIZE_T HeapCompact( + HANDLE hHeap, + DWORD dwFlags); + +extern(Windows) export HANDLE GetProcessHeap(); + +extern(Windows) export DWORD GetProcessHeaps( + DWORD NumberOfHeaps, + PHANDLE ProcessHeaps); + +struct _PROCESS_HEAP_ENTRY { + PVOID lpData; + DWORD cbData; + BYTE cbOverhead; + BYTE iRegionIndex; + WORD wFlags; +union { +struct { + HANDLE hMem; + DWORD dwReserved[ 3 ]; +} + +struct { + DWORD dwCommittedSize; + DWORD dwUnCommittedSize; + LPVOID lpFirstBlock; + LPVOID lpLastBlock; +} + +} + +} +alias _PROCESS_HEAP_ENTRY PROCESS_HEAP_ENTRY; +alias _PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; +alias _PROCESS_HEAP_ENTRY* PPROCESS_HEAP_ENTRY; + +enum : uint { PROCESS_HEAP_REGION = 0x0001 } +enum : uint { PROCESS_HEAP_UNCOMMITTED_RANGE = 0x0002 } +enum : uint { PROCESS_HEAP_ENTRY_BUSY = 0x0004 } +enum : uint { PROCESS_HEAP_ENTRY_MOVEABLE = 0x0010 } +enum : uint { PROCESS_HEAP_ENTRY_DDESHARE = 0x0020 } + +extern(Windows) export BOOL HeapLock( + HANDLE hHeap); + +extern(Windows) export BOOL HeapUnlock( + HANDLE hHeap); + +extern(Windows) export BOOL HeapWalk( + HANDLE hHeap, + LPPROCESS_HEAP_ENTRY lpEntry); + +extern(Windows) export BOOL HeapSetInformation( + PVOID HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation , + SIZE_T HeapInformationLength ); + +extern(Windows) export BOOL HeapQueryInformation( + PVOID HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation , + SIZE_T HeapInformationLength , + PSIZE_T ReturnLength ); + +enum : uint { SCS_32BIT_BINARY = 0 } +enum : uint { SCS_DOS_BINARY = 1 } +enum : uint { SCS_WOW_BINARY = 2 } +enum : uint { SCS_PIF_BINARY = 3 } +enum : uint { SCS_POSIX_BINARY = 4 } +enum : uint { SCS_OS216_BINARY = 5 } +enum : uint { SCS_64BIT_BINARY = 6 } + +// #if defined(_WIN64) +// #... +// #else +alias SCS_32BIT_BINARY SCS_THIS_PLATFORM_BINARY; +// #endif + +extern(Windows) export BOOL GetBinaryTypeA( + LPCSTR lpApplicationName, + LPDWORD lpBinaryType); +extern(Windows) export BOOL GetBinaryTypeW( + LPCWSTR lpApplicationName, + LPDWORD lpBinaryType); +// #ifdef UNICODE +alias GetBinaryTypeW GetBinaryType; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetShortPathNameA( + LPCSTR lpszLongPath, + LPSTR lpszShortPath, + DWORD cchBuffer); +extern(Windows) export DWORD GetShortPathNameW( + LPCWSTR lpszLongPath, + LPWSTR lpszShortPath, + DWORD cchBuffer); +// #ifdef UNICODE +alias GetShortPathNameW GetShortPathName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetLongPathNameA( + LPCSTR lpszShortPath, + LPSTR lpszLongPath, + DWORD cchBuffer); +extern(Windows) export DWORD GetLongPathNameW( + LPCWSTR lpszShortPath, + LPWSTR lpszLongPath, + DWORD cchBuffer); +// #ifdef UNICODE +alias GetLongPathNameW GetLongPathName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetProcessAffinityMask( + HANDLE hProcess, + PDWORD_PTR lpProcessAffinityMask, + PDWORD_PTR lpSystemAffinityMask); + +extern(Windows) export BOOL SetProcessAffinityMask( + HANDLE hProcess, + DWORD_PTR dwProcessAffinityMask); + +extern(Windows) export BOOL GetProcessTimes( + HANDLE hProcess, + LPFILETIME lpCreationTime, + LPFILETIME lpExitTime, + LPFILETIME lpKernelTime, + LPFILETIME lpUserTime); + +extern(Windows) export BOOL GetProcessIoCounters( + HANDLE hProcess, + PIO_COUNTERS lpIoCounters); + +extern(Windows) export BOOL GetProcessWorkingSetSize( + HANDLE hProcess, + PSIZE_T lpMinimumWorkingSetSize, + PSIZE_T lpMaximumWorkingSetSize); + +extern(Windows) export BOOL SetProcessWorkingSetSize( + HANDLE hProcess, + SIZE_T dwMinimumWorkingSetSize, + SIZE_T dwMaximumWorkingSetSize); + +extern(Windows) export HANDLE OpenProcess( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + DWORD dwProcessId); + +extern(Windows) export HANDLE GetCurrentProcess(); + +extern(Windows) export DWORD GetCurrentProcessId(); + +extern(Windows) export VOID ExitProcess( + UINT uExitCode); + +extern(Windows) export BOOL TerminateProcess( + HANDLE hProcess, + UINT uExitCode); + +extern(Windows) export BOOL GetExitCodeProcess( + HANDLE hProcess, + LPDWORD lpExitCode); + +extern(Windows) export VOID FatalExit( + int ExitCode); + +extern(Windows) export LPSTR GetEnvironmentStrings(); + +extern(Windows) export LPWSTR GetEnvironmentStringsW(); + +// #ifdef UNICODE +alias GetEnvironmentStringsW GetEnvironmentStrings; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FreeEnvironmentStringsA( + LPSTR); +extern(Windows) export BOOL FreeEnvironmentStringsW( + LPWSTR); +// #ifdef UNICODE +alias FreeEnvironmentStringsW FreeEnvironmentStrings; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export VOID RaiseException( + DWORD dwExceptionCode, + DWORD dwExceptionFlags, + DWORD nNumberOfArguments, + ULONG_PTR *lpArguments); + +extern(Windows) export LONG UnhandledExceptionFilter( + _EXCEPTION_POINTERS *ExceptionInfo); + +extern(Windows) alias LONG function( _EXCEPTION_POINTERS *ExceptionInfo ) PTOP_LEVEL_EXCEPTION_FILTER; +alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; + +extern(Windows) export LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter( + LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter); + +// #if(_WIN32_WINNT >= 0x0400) + +extern(Windows) export LPVOID CreateFiber( + SIZE_T dwStackSize, + LPFIBER_START_ROUTINE lpStartAddress, + LPVOID lpParameter); + +extern(Windows) export LPVOID CreateFiberEx( + SIZE_T dwStackCommitSize, + SIZE_T dwStackReserveSize, + DWORD dwFlags, + LPFIBER_START_ROUTINE lpStartAddress, + LPVOID lpParameter); + +extern(Windows) export VOID DeleteFiber( + LPVOID lpFiber); + +extern(Windows) export LPVOID ConvertThreadToFiber( + LPVOID lpParameter); + +extern(Windows) export BOOL ConvertFiberToThread(); + +extern(Windows) export VOID SwitchToFiber( + LPVOID lpFiber); + +extern(Windows) export BOOL SwitchToThread(); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export HANDLE CreateThread( + LPSECURITY_ATTRIBUTES lpThreadAttributes, + SIZE_T dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, + DWORD dwCreationFlags, + LPDWORD lpThreadId); + +extern(Windows) export HANDLE CreateRemoteThread( + HANDLE hProcess, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + SIZE_T dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, + DWORD dwCreationFlags, + LPDWORD lpThreadId); + +extern(Windows) export HANDLE GetCurrentThread(); + +extern(Windows) export DWORD GetCurrentThreadId(); + +extern(Windows) export DWORD_PTR SetThreadAffinityMask( + HANDLE hThread, + DWORD_PTR dwThreadAffinityMask); + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) export DWORD SetThreadIdealProcessor( + HANDLE hThread, + DWORD dwIdealProcessor); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL SetProcessPriorityBoost( + HANDLE hProcess, + BOOL bDisablePriorityBoost); + +extern(Windows) export BOOL GetProcessPriorityBoost( + HANDLE hProcess, + PBOOL pDisablePriorityBoost); + +extern(Windows) export BOOL RequestWakeupLatency( + LATENCY_TIME latency); + +extern(Windows) export BOOL IsSystemResumeAutomatic(); + +extern(Windows) export HANDLE OpenThread( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + DWORD dwThreadId); + +extern(Windows) export BOOL SetThreadPriority( + HANDLE hThread, + int nPriority); + +extern(Windows) export BOOL SetThreadPriorityBoost( + HANDLE hThread, + BOOL bDisablePriorityBoost); + +extern(Windows) export BOOL GetThreadPriorityBoost( + HANDLE hThread, + PBOOL pDisablePriorityBoost); + +extern(Windows) export int GetThreadPriority( + HANDLE hThread); + +extern(Windows) export BOOL GetThreadTimes( + HANDLE hThread, + LPFILETIME lpCreationTime, + LPFILETIME lpExitTime, + LPFILETIME lpKernelTime, + LPFILETIME lpUserTime); + +extern(Windows) export VOID ExitThread( + DWORD dwExitCode); + +extern(Windows) export BOOL TerminateThread( + HANDLE hThread, + DWORD dwExitCode); + +extern(Windows) export BOOL GetExitCodeThread( + HANDLE hThread, + LPDWORD lpExitCode); + +extern(Windows) export BOOL GetThreadSelectorEntry( + HANDLE hThread, + DWORD dwSelector, + LPLDT_ENTRY lpSelectorEntry); + +extern(Windows) export EXECUTION_STATE SetThreadExecutionState( + EXECUTION_STATE esFlags); + +extern(Windows) export DWORD GetLastError(); + +extern(Windows) export VOID SetLastError( + DWORD dwErrCode); + +// #if !defined(RC_INVOKED) // RC warns because "WINBASE_DECLARE_RESTORE_LAST_ERROR" is a bit long. + +// #if defined(WINBASE_DECLARE_RESTORE_LAST_ERROR) + +// ... + +// ... +// #... +// #... +// #... + +// #endif +// #endif + +bit HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped){ return (*lpOverlapped).Internal != STATUS_PENDING; } + +extern(Windows) export BOOL GetOverlappedResult( + HANDLE hFile, + LPOVERLAPPED lpOverlapped, + LPDWORD lpNumberOfBytesTransferred, + BOOL bWait); + +extern(Windows) export HANDLE CreateIoCompletionPort( + HANDLE FileHandle, + HANDLE ExistingCompletionPort, + ULONG_PTR CompletionKey, + DWORD NumberOfConcurrentThreads); + +extern(Windows) export BOOL GetQueuedCompletionStatus( + HANDLE CompletionPort, + LPDWORD lpNumberOfBytesTransferred, + PULONG_PTR lpCompletionKey, + LPOVERLAPPED *lpOverlapped, + DWORD dwMilliseconds); + +extern(Windows) export BOOL PostQueuedCompletionStatus( + HANDLE CompletionPort, + DWORD dwNumberOfBytesTransferred, + ULONG_PTR dwCompletionKey, + LPOVERLAPPED lpOverlapped); + +enum : uint { SEM_FAILCRITICALERRORS = 0x0001 } +enum : uint { SEM_NOGPFAULTERRORBOX = 0x0002 } +enum : uint { SEM_NOALIGNMENTFAULTEXCEPT = 0x0004 } +enum : uint { SEM_NOOPENFILEERRORBOX = 0x8000 } + +extern(Windows) export UINT SetErrorMode( + UINT uMode); + +extern(Windows) export BOOL ReadProcessMemory( + HANDLE hProcess, + LPCVOID lpBaseAddress, + LPVOID lpBuffer, + SIZE_T nSize, + SIZE_T * lpNumberOfBytesRead); + +extern(Windows) export BOOL WriteProcessMemory( + HANDLE hProcess, + LPVOID lpBaseAddress, + LPCVOID lpBuffer, + SIZE_T nSize, + SIZE_T * lpNumberOfBytesWritten); + +// #if !defined(MIDL_PASS) +extern(Windows) export BOOL GetThreadContext( + HANDLE hThread, + LPCONTEXT lpContext); + +extern(Windows) export BOOL SetThreadContext( + HANDLE hThread, + CONTEXT *lpContext); +// #endif + +extern(Windows) export DWORD SuspendThread( + HANDLE hThread); + +extern(Windows) export DWORD ResumeThread( + HANDLE hThread); + +// #if(_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) + +// ... + +// ... + +// #endif /* _WIN32_WINNT >= 0x0400 || _WIN32_WINDOWS > 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +extern(Windows) export BOOL IsDebuggerPresent(); +// #endif + +extern(Windows) export VOID DebugBreak(); + +extern(Windows) export BOOL WaitForDebugEvent( + LPDEBUG_EVENT lpDebugEvent, + DWORD dwMilliseconds); + +extern(Windows) export BOOL ContinueDebugEvent( + DWORD dwProcessId, + DWORD dwThreadId, + DWORD dwContinueStatus); + +extern(Windows) export BOOL DebugActiveProcess( + DWORD dwProcessId); + +extern(Windows) export BOOL DebugActiveProcessStop( + DWORD dwProcessId); + +extern(Windows) export BOOL DebugSetProcessKillOnExit( + BOOL KillOnExit); + +extern(Windows) export BOOL DebugBreakProcess( + HANDLE Process); + +extern(Windows) export VOID InitializeCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); + +extern(Windows) export VOID EnterCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); + +extern(Windows) export VOID LeaveCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); + +// #if (_WIN32_WINNT >= 0x0403) +extern(Windows) export BOOL InitializeCriticalSectionAndSpinCount( + LPCRITICAL_SECTION lpCriticalSection, + DWORD dwSpinCount); + +extern(Windows) export DWORD SetCriticalSectionSpinCount( + LPCRITICAL_SECTION lpCriticalSection, + DWORD dwSpinCount); +// #endif + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) export BOOL TryEnterCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export VOID DeleteCriticalSection( + LPCRITICAL_SECTION lpCriticalSection); + +extern(Windows) export BOOL SetEvent( + HANDLE hEvent); + +extern(Windows) export BOOL ResetEvent( + HANDLE hEvent); + +extern(Windows) export BOOL PulseEvent( + HANDLE hEvent); + +extern(Windows) export BOOL ReleaseSemaphore( + HANDLE hSemaphore, + LONG lReleaseCount, + LPLONG lpPreviousCount); + +extern(Windows) export BOOL ReleaseMutex( + HANDLE hMutex); + +extern(Windows) export DWORD WaitForSingleObject( + HANDLE hHandle, + DWORD dwMilliseconds); + +extern(Windows) export DWORD WaitForMultipleObjects( + DWORD nCount, + HANDLE *lpHandles, + BOOL bWaitAll, + DWORD dwMilliseconds); + +extern(Windows) export VOID Sleep( + DWORD dwMilliseconds); + +extern(Windows) export HGLOBAL LoadResource( + HMODULE hModule, + HRSRC hResInfo); + +extern(Windows) export DWORD SizeofResource( + HMODULE hModule, + HRSRC hResInfo); + +extern(Windows) export ATOM GlobalDeleteAtom( + ATOM nAtom); + +extern(Windows) export BOOL InitAtomTable( + DWORD nSize); + +extern(Windows) export ATOM DeleteAtom( + ATOM nAtom); + +extern(Windows) export UINT SetHandleCount( + UINT uNumber); + +extern(Windows) export DWORD GetLogicalDrives(); + +extern(Windows) export BOOL LockFile( + HANDLE hFile, + DWORD dwFileOffsetLow, + DWORD dwFileOffsetHigh, + DWORD nNumberOfBytesToLockLow, + DWORD nNumberOfBytesToLockHigh); + +extern(Windows) export BOOL UnlockFile( + HANDLE hFile, + DWORD dwFileOffsetLow, + DWORD dwFileOffsetHigh, + DWORD nNumberOfBytesToUnlockLow, + DWORD nNumberOfBytesToUnlockHigh); + +extern(Windows) export BOOL LockFileEx( + HANDLE hFile, + DWORD dwFlags, + DWORD dwReserved, + DWORD nNumberOfBytesToLockLow, + DWORD nNumberOfBytesToLockHigh, + LPOVERLAPPED lpOverlapped); + +enum : uint { LOCKFILE_FAIL_IMMEDIATELY = 0x00000001 } +enum : uint { LOCKFILE_EXCLUSIVE_LOCK = 0x00000002 } + +extern(Windows) export BOOL UnlockFileEx( + HANDLE hFile, + DWORD dwReserved, + DWORD nNumberOfBytesToUnlockLow, + DWORD nNumberOfBytesToUnlockHigh, + LPOVERLAPPED lpOverlapped); + +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 BY_HANDLE_FILE_INFORMATION; +alias _BY_HANDLE_FILE_INFORMATION* PBY_HANDLE_FILE_INFORMATION; +alias _BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION; + +extern(Windows) export BOOL GetFileInformationByHandle( + HANDLE hFile, + LPBY_HANDLE_FILE_INFORMATION lpFileInformation); + +extern(Windows) export DWORD GetFileType( + HANDLE hFile); + +extern(Windows) export DWORD GetFileSize( + HANDLE hFile, + LPDWORD lpFileSizeHigh); + +extern(Windows) export BOOL GetFileSizeEx( + HANDLE hFile, + PLARGE_INTEGER lpFileSize); + +extern(Windows) export HANDLE GetStdHandle( + DWORD nStdHandle); + +extern(Windows) export BOOL SetStdHandle( + DWORD nStdHandle, + HANDLE hHandle); + +extern(Windows) export BOOL WriteFile( + HANDLE hFile, + LPCVOID lpBuffer, + DWORD nNumberOfBytesToWrite, + LPDWORD lpNumberOfBytesWritten, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL ReadFile( + HANDLE hFile, + LPVOID lpBuffer, + DWORD nNumberOfBytesToRead, + LPDWORD lpNumberOfBytesRead, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL FlushFileBuffers( + HANDLE hFile); + +extern(Windows) export BOOL DeviceIoControl( + HANDLE hDevice, + DWORD dwIoControlCode, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL RequestDeviceWakeup( + HANDLE hDevice); + +extern(Windows) export BOOL CancelDeviceWakeupRequest( + HANDLE hDevice); + +extern(Windows) export BOOL GetDevicePowerState( + HANDLE hDevice, + BOOL *pfOn); + +extern(Windows) export BOOL SetMessageWaitingIndicator( + HANDLE hMsgIndicator, + ULONG ulMsgCount); + +extern(Windows) export BOOL SetEndOfFile( + HANDLE hFile); + +extern(Windows) export DWORD SetFilePointer( + HANDLE hFile, + LONG lDistanceToMove, + PLONG lpDistanceToMoveHigh, + DWORD dwMoveMethod); + +extern(Windows) export BOOL SetFilePointerEx( + HANDLE hFile, + LARGE_INTEGER liDistanceToMove, + PLARGE_INTEGER lpNewFilePointer, + DWORD dwMoveMethod); + +extern(Windows) export BOOL FindClose( + HANDLE hFindFile); + +extern(Windows) export BOOL GetFileTime( + HANDLE hFile, + LPFILETIME lpCreationTime, + LPFILETIME lpLastAccessTime, + LPFILETIME lpLastWriteTime); + +extern(Windows) export BOOL SetFileTime( + HANDLE hFile, + FILETIME *lpCreationTime, + FILETIME *lpLastAccessTime, + FILETIME *lpLastWriteTime); + +extern(Windows) export BOOL SetFileValidData( + HANDLE hFile, + LONGLONG ValidDataLength); + +extern(Windows) export BOOL SetFileShortNameA( + HANDLE hFile, + LPCSTR lpShortName); +extern(Windows) export BOOL SetFileShortNameW( + HANDLE hFile, + LPCWSTR lpShortName); +// #ifdef UNICODE +alias SetFileShortNameW SetFileShortName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CloseHandle( + HANDLE hObject); + +extern(Windows) export BOOL DuplicateHandle( + HANDLE hSourceProcessHandle, + HANDLE hSourceHandle, + HANDLE hTargetProcessHandle, + LPHANDLE lpTargetHandle, + DWORD dwDesiredAccess, + BOOL bInheritHandle, + DWORD dwOptions); + +extern(Windows) export BOOL GetHandleInformation( + HANDLE hObject, + LPDWORD lpdwFlags); + +extern(Windows) export BOOL SetHandleInformation( + HANDLE hObject, + DWORD dwMask, + DWORD dwFlags); + +enum : uint { HANDLE_FLAG_INHERIT = 0x00000001 } +enum : uint { HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x00000002 } + +enum : uint { HINSTANCE_ERROR = 32 } + +extern(Windows) export DWORD LoadModule( + LPCSTR lpModuleName, + LPVOID lpParameterBlock); + +extern(Windows) export UINT WinExec( + LPCSTR lpCmdLine, + UINT uCmdShow); + +extern(Windows) export BOOL ClearCommBreak( + HANDLE hFile); + +extern(Windows) export BOOL ClearCommError( + HANDLE hFile, + LPDWORD lpErrors, + LPCOMSTAT lpStat); + +extern(Windows) export BOOL SetupComm( + HANDLE hFile, + DWORD dwInQueue, + DWORD dwOutQueue); + +extern(Windows) export BOOL EscapeCommFunction( + HANDLE hFile, + DWORD dwFunc); + +extern(Windows) export BOOL GetCommConfig( + HANDLE hCommDev, + LPCOMMCONFIG lpCC, + LPDWORD lpdwSize); + +extern(Windows) export BOOL GetCommMask( + HANDLE hFile, + LPDWORD lpEvtMask); + +extern(Windows) export BOOL GetCommProperties( + HANDLE hFile, + LPCOMMPROP lpCommProp); + +extern(Windows) export BOOL GetCommModemStatus( + HANDLE hFile, + LPDWORD lpModemStat); + +extern(Windows) export BOOL GetCommState( + HANDLE hFile, + LPDCB lpDCB); + +extern(Windows) export BOOL GetCommTimeouts( + HANDLE hFile, + LPCOMMTIMEOUTS lpCommTimeouts); + +extern(Windows) export BOOL PurgeComm( + HANDLE hFile, + DWORD dwFlags); + +extern(Windows) export BOOL SetCommBreak( + HANDLE hFile); + +extern(Windows) export BOOL SetCommConfig( + HANDLE hCommDev, + LPCOMMCONFIG lpCC, + DWORD dwSize); + +extern(Windows) export BOOL SetCommMask( + HANDLE hFile, + DWORD dwEvtMask); + +extern(Windows) export BOOL SetCommState( + HANDLE hFile, + LPDCB lpDCB); + +extern(Windows) export BOOL SetCommTimeouts( + HANDLE hFile, + LPCOMMTIMEOUTS lpCommTimeouts); + +extern(Windows) export BOOL TransmitCommChar( + HANDLE hFile, + char cChar); + +extern(Windows) export BOOL WaitCommEvent( + HANDLE hFile, + LPDWORD lpEvtMask, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export DWORD SetTapePosition( + HANDLE hDevice, + DWORD dwPositionMethod, + DWORD dwPartition, + DWORD dwOffsetLow, + DWORD dwOffsetHigh, + BOOL bImmediate); + +extern(Windows) export DWORD GetTapePosition( + HANDLE hDevice, + DWORD dwPositionType, + LPDWORD lpdwPartition, + LPDWORD lpdwOffsetLow, + LPDWORD lpdwOffsetHigh); + +extern(Windows) export DWORD PrepareTape( + HANDLE hDevice, + DWORD dwOperation, + BOOL bImmediate); + +extern(Windows) export DWORD EraseTape( + HANDLE hDevice, + DWORD dwEraseType, + BOOL bImmediate); + +extern(Windows) export DWORD CreateTapePartition( + HANDLE hDevice, + DWORD dwPartitionMethod, + DWORD dwCount, + DWORD dwSize); + +extern(Windows) export DWORD WriteTapemark( + HANDLE hDevice, + DWORD dwTapemarkType, + DWORD dwTapemarkCount, + BOOL bImmediate); + +extern(Windows) export DWORD GetTapeStatus( + HANDLE hDevice); + +extern(Windows) export DWORD GetTapeParameters( + HANDLE hDevice, + DWORD dwOperation, + LPDWORD lpdwSize, + LPVOID lpTapeInformation); + +enum : uint { GET_TAPE_MEDIA_INFORMATION = 0 } +enum : uint { GET_TAPE_DRIVE_INFORMATION = 1 } + +extern(Windows) export DWORD SetTapeParameters( + HANDLE hDevice, + DWORD dwOperation, + LPVOID lpTapeInformation); + +enum : uint { SET_TAPE_MEDIA_INFORMATION = 0 } +enum : uint { SET_TAPE_DRIVE_INFORMATION = 1 } + +extern(Windows) export BOOL Beep( + DWORD dwFreq, + DWORD dwDuration); + +extern(Windows) export int MulDiv( + int nNumber, + int nNumerator, + int nDenominator); + +extern(Windows) export VOID GetSystemTime( + LPSYSTEMTIME lpSystemTime); + +extern(Windows) export VOID GetSystemTimeAsFileTime( + LPFILETIME lpSystemTimeAsFileTime); + +extern(Windows) export BOOL SetSystemTime( + SYSTEMTIME *lpSystemTime); + +extern(Windows) export VOID GetLocalTime( + LPSYSTEMTIME lpSystemTime); + +extern(Windows) export BOOL SetLocalTime( + SYSTEMTIME *lpSystemTime); + +extern(Windows) export VOID GetSystemInfo( + LPSYSTEM_INFO lpSystemInfo); + +// #if _WIN32_WINNT >= 0x0501 +extern(Windows) export VOID GetNativeSystemInfo( + LPSYSTEM_INFO lpSystemInfo); +// #endif + +extern(Windows) export BOOL IsProcessorFeaturePresent( + DWORD ProcessorFeature); + +struct _TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR StandardName[ 32 ]; + SYSTEMTIME StandardDate; + LONG StandardBias; + WCHAR DaylightName[ 32 ]; + SYSTEMTIME DaylightDate; + LONG DaylightBias; +} +alias _TIME_ZONE_INFORMATION TIME_ZONE_INFORMATION; +alias _TIME_ZONE_INFORMATION* PTIME_ZONE_INFORMATION; +alias _TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; + +extern(Windows) export BOOL SystemTimeToTzSpecificLocalTime( + LPTIME_ZONE_INFORMATION lpTimeZoneInformation, + LPSYSTEMTIME lpUniversalTime, + LPSYSTEMTIME lpLocalTime); + +extern(Windows) export BOOL TzSpecificLocalTimeToSystemTime( + LPTIME_ZONE_INFORMATION lpTimeZoneInformation, + LPSYSTEMTIME lpLocalTime, + LPSYSTEMTIME lpUniversalTime); + +extern(Windows) export DWORD GetTimeZoneInformation( + LPTIME_ZONE_INFORMATION lpTimeZoneInformation); + +extern(Windows) export BOOL SetTimeZoneInformation( + TIME_ZONE_INFORMATION *lpTimeZoneInformation); + +extern(Windows) export BOOL SystemTimeToFileTime( + SYSTEMTIME *lpSystemTime, + LPFILETIME lpFileTime); + +extern(Windows) export BOOL FileTimeToLocalFileTime( + FILETIME *lpFileTime, + LPFILETIME lpLocalFileTime); + +extern(Windows) export BOOL LocalFileTimeToFileTime( + FILETIME *lpLocalFileTime, + LPFILETIME lpFileTime); + +extern(Windows) export BOOL FileTimeToSystemTime( + FILETIME *lpFileTime, + LPSYSTEMTIME lpSystemTime); + +extern(Windows) export LONG CompareFileTime( + FILETIME *lpFileTime1, + FILETIME *lpFileTime2); + +extern(Windows) export BOOL FileTimeToDosDateTime( + FILETIME *lpFileTime, + LPWORD lpFatDate, + LPWORD lpFatTime); + +extern(Windows) export BOOL DosDateTimeToFileTime( + WORD wFatDate, + WORD wFatTime, + LPFILETIME lpFileTime); + +extern(Windows) export DWORD GetTickCount(); + +extern(Windows) export BOOL SetSystemTimeAdjustment( + DWORD dwTimeAdjustment, + BOOL bTimeAdjustmentDisabled); + +extern(Windows) export BOOL GetSystemTimeAdjustment( + PDWORD lpTimeAdjustment, + PDWORD lpTimeIncrement, + PBOOL lpTimeAdjustmentDisabled); + +// #if !defined(MIDL_PASS) +extern(Windows) export DWORD FormatMessageA( + DWORD dwFlags, + LPCVOID lpSource, + DWORD dwMessageId, + DWORD dwLanguageId, + LPSTR lpBuffer, + DWORD nSize, + va_list *Arguments); +extern(Windows) export DWORD FormatMessageW( + DWORD dwFlags, + LPCVOID lpSource, + DWORD dwMessageId, + DWORD dwLanguageId, + LPWSTR lpBuffer, + DWORD nSize, + va_list *Arguments); +// #ifdef UNICODE +alias FormatMessageW FormatMessage; +// #else +// #... +// #endif // !UNICODE +// #endif + +enum : uint { FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100 } +enum : uint { FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200 } +enum : uint { FORMAT_MESSAGE_FROM_STRING = 0x00000400 } +enum : uint { FORMAT_MESSAGE_FROM_HMODULE = 0x00000800 } +enum : uint { FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000 } +enum : uint { FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000 } +enum : uint { FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF } + +extern(Windows) export BOOL CreatePipe( + PHANDLE hReadPipe, + PHANDLE hWritePipe, + LPSECURITY_ATTRIBUTES lpPipeAttributes, + DWORD nSize); + +extern(Windows) export BOOL ConnectNamedPipe( + HANDLE hNamedPipe, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL DisconnectNamedPipe( + HANDLE hNamedPipe); + +extern(Windows) export BOOL SetNamedPipeHandleState( + HANDLE hNamedPipe, + LPDWORD lpMode, + LPDWORD lpMaxCollectionCount, + LPDWORD lpCollectDataTimeout); + +extern(Windows) export BOOL GetNamedPipeInfo( + HANDLE hNamedPipe, + LPDWORD lpFlags, + LPDWORD lpOutBufferSize, + LPDWORD lpInBufferSize, + LPDWORD lpMaxInstances); + +extern(Windows) export BOOL PeekNamedPipe( + HANDLE hNamedPipe, + LPVOID lpBuffer, + DWORD nBufferSize, + LPDWORD lpBytesRead, + LPDWORD lpTotalBytesAvail, + LPDWORD lpBytesLeftThisMessage); + +extern(Windows) export BOOL TransactNamedPipe( + HANDLE hNamedPipe, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesRead, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export HANDLE CreateMailslotA( + LPCSTR lpName, + DWORD nMaxMessageSize, + DWORD lReadTimeout, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export HANDLE CreateMailslotW( + LPCWSTR lpName, + DWORD nMaxMessageSize, + DWORD lReadTimeout, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +alias CreateMailslotW CreateMailslot; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetMailslotInfo( + HANDLE hMailslot, + LPDWORD lpMaxMessageSize, + LPDWORD lpNextSize, + LPDWORD lpMessageCount, + LPDWORD lpReadTimeout); + +extern(Windows) export BOOL SetMailslotInfo( + HANDLE hMailslot, + DWORD lReadTimeout); + +extern(Windows) export LPVOID MapViewOfFile( + HANDLE hFileMappingObject, + DWORD dwDesiredAccess, + DWORD dwFileOffsetHigh, + DWORD dwFileOffsetLow, + SIZE_T dwNumberOfBytesToMap); + +extern(Windows) export BOOL FlushViewOfFile( + LPCVOID lpBaseAddress, + SIZE_T dwNumberOfBytesToFlush); + +extern(Windows) export BOOL UnmapViewOfFile( + LPCVOID lpBaseAddress); + +extern(Windows) export BOOL EncryptFileA( + LPCSTR lpFileName); +extern(Windows) export BOOL EncryptFileW( + LPCWSTR lpFileName); +// #ifdef UNICODE +alias EncryptFileW EncryptFile; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DecryptFileA( + LPCSTR lpFileName, + DWORD dwReserved); +extern(Windows) export BOOL DecryptFileW( + LPCWSTR lpFileName, + DWORD dwReserved); +// #ifdef UNICODE +alias DecryptFileW DecryptFile; +// #else +// #... +// #endif // !UNICODE + +enum : uint { FILE_ENCRYPTABLE = 0 } +enum : uint { FILE_IS_ENCRYPTED = 1 } +enum : uint { FILE_SYSTEM_ATTR = 2 } +enum : uint { FILE_ROOT_DIR = 3 } +enum : uint { FILE_SYSTEM_DIR = 4 } +enum : uint { FILE_UNKNOWN = 5 } +enum : uint { FILE_SYSTEM_NOT_SUPPORT = 6 } +enum : uint { FILE_USER_DISALLOWED = 7 } +enum : uint { FILE_READ_ONLY = 8 } +enum : uint { FILE_DIR_DISALLOWED = 9 } + +extern(Windows) export BOOL FileEncryptionStatusA( + LPCSTR lpFileName, + LPDWORD lpStatus); +extern(Windows) export BOOL FileEncryptionStatusW( + LPCWSTR lpFileName, + LPDWORD lpStatus); +// #ifdef UNICODE +alias FileEncryptionStatusW FileEncryptionStatus; +// #else +// #... +// #endif // !UNICODE + +enum : uint { EFS_USE_RECOVERY_KEYS = 0x1 } + +extern(Windows) alias DWORD function( PBYTE pbData, PVOID pvCallbackContext, ULONG ulLength ) PFE_EXPORT_FUNC; + +extern(Windows) alias DWORD function( PBYTE pbData, PVOID pvCallbackContext, PULONG ulLength ) PFE_IMPORT_FUNC; + +enum : uint { CREATE_FOR_IMPORT = 1 } +enum : uint { CREATE_FOR_DIR = 2 } +enum : uint { OVERWRITE_HIDDEN = 4 } + +extern(Windows) export DWORD OpenEncryptedFileRawA( + LPCSTR lpFileName, + ULONG ulFlags, + PVOID * pvContext); +extern(Windows) export DWORD OpenEncryptedFileRawW( + LPCWSTR lpFileName, + ULONG ulFlags, + PVOID * pvContext); +// #ifdef UNICODE +alias OpenEncryptedFileRawW OpenEncryptedFileRaw; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD ReadEncryptedFileRaw( + PFE_EXPORT_FUNC pfExportCallback, + PVOID pvCallbackContext, + PVOID pvContext); + +extern(Windows) export DWORD WriteEncryptedFileRaw( + PFE_IMPORT_FUNC pfImportCallback, + PVOID pvCallbackContext, + PVOID pvContext); + +extern(Windows) export VOID CloseEncryptedFileRaw( + PVOID pvContext); + +extern(Windows) export int lstrcmpA( + LPCSTR lpString1, + LPCSTR lpString2); +extern(Windows) export int lstrcmpW( + LPCWSTR lpString1, + LPCWSTR lpString2); +// #ifdef UNICODE +alias lstrcmpW lstrcmp; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int lstrcmpiA( + LPCSTR lpString1, + LPCSTR lpString2); +extern(Windows) export int lstrcmpiW( + LPCWSTR lpString1, + LPCWSTR lpString2); +// #ifdef UNICODE +alias lstrcmpiW lstrcmpi; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LPSTR lstrcpynA( + LPSTR lpString1, + LPCSTR lpString2, + int iMaxLength); +extern(Windows) export LPWSTR lstrcpynW( + LPWSTR lpString1, + LPCWSTR lpString2, + int iMaxLength); +// #ifdef UNICODE +alias lstrcpynW lstrcpyn; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LPSTR lstrcpyA( + LPSTR lpString1, + LPCSTR lpString2); +extern(Windows) export LPWSTR lstrcpyW( + LPWSTR lpString1, + LPCWSTR lpString2); +// #ifdef UNICODE +alias lstrcpyW lstrcpy; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LPSTR lstrcatA( + LPSTR lpString1, + LPCSTR lpString2); +extern(Windows) export LPWSTR lstrcatW( + LPWSTR lpString1, + LPCWSTR lpString2); +// #ifdef UNICODE +alias lstrcatW lstrcat; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int lstrlenA( + LPCSTR lpString); +extern(Windows) export int lstrlenW( + LPCWSTR lpString); +// #ifdef UNICODE +alias lstrlenW lstrlen; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HFILE OpenFile( + LPCSTR lpFileName, + LPOFSTRUCT lpReOpenBuff, + UINT uStyle); + +extern(Windows) export HFILE _lopen( + LPCSTR lpPathName, + int iReadWrite); + +extern(Windows) export HFILE _lcreat( + LPCSTR lpPathName, + int iAttribute); + +extern(Windows) export UINT _lread( + HFILE hFile, + LPVOID lpBuffer, + UINT uBytes); + +extern(Windows) export UINT _lwrite( + HFILE hFile, + LPCSTR lpBuffer, + UINT uBytes); + +extern(Windows) export int _hread( + HFILE hFile, + LPVOID lpBuffer, + int lBytes); + +extern(Windows) export int _hwrite( + HFILE hFile, + LPCSTR lpBuffer, + int lBytes); + +extern(Windows) export HFILE _lclose( + HFILE hFile); + +extern(Windows) export LONG _llseek( + HFILE hFile, + LONG lOffset, + int iOrigin); + +extern(Windows) export BOOL IsTextUnicode( + VOID* lpBuffer, + int cb, + LPINT lpi); + +extern(Windows) export DWORD TlsAlloc(); + +enum : uint { TLS_OUT_OF_INDEXES = cast(DWORD)0xFFFFFFFF } + +extern(Windows) export LPVOID TlsGetValue( + DWORD dwTlsIndex); + +extern(Windows) export BOOL TlsSetValue( + DWORD dwTlsIndex, + LPVOID lpTlsValue); + +extern(Windows) export BOOL TlsFree( + DWORD dwTlsIndex); + +extern(Windows) alias VOID function( DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped ) LPOVERLAPPED_COMPLETION_ROUTINE; + +extern(Windows) export DWORD SleepEx( + DWORD dwMilliseconds, + BOOL bAlertable); + +extern(Windows) export DWORD WaitForSingleObjectEx( + HANDLE hHandle, + DWORD dwMilliseconds, + BOOL bAlertable); + +extern(Windows) export DWORD WaitForMultipleObjectsEx( + DWORD nCount, + HANDLE *lpHandles, + BOOL bWaitAll, + DWORD dwMilliseconds, + BOOL bAlertable); + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) export DWORD SignalObjectAndWait( + HANDLE hObjectToSignal, + HANDLE hObjectToWaitOn, + DWORD dwMilliseconds, + BOOL bAlertable); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL ReadFileEx( + HANDLE hFile, + LPVOID lpBuffer, + DWORD nNumberOfBytesToRead, + LPOVERLAPPED lpOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + +extern(Windows) export BOOL WriteFileEx( + HANDLE hFile, + LPCVOID lpBuffer, + DWORD nNumberOfBytesToWrite, + LPOVERLAPPED lpOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); + +extern(Windows) export BOOL BackupRead( + HANDLE hFile, + LPBYTE lpBuffer, + DWORD nNumberOfBytesToRead, + LPDWORD lpNumberOfBytesRead, + BOOL bAbort, + BOOL bProcessSecurity, + LPVOID *lpContext); + +extern(Windows) export BOOL BackupSeek( + HANDLE hFile, + DWORD dwLowBytesToSeek, + DWORD dwHighBytesToSeek, + LPDWORD lpdwLowByteSeeked, + LPDWORD lpdwHighByteSeeked, + LPVOID *lpContext); + +extern(Windows) export BOOL BackupWrite( + HANDLE hFile, + LPBYTE lpBuffer, + DWORD nNumberOfBytesToWrite, + LPDWORD lpNumberOfBytesWritten, + BOOL bAbort, + BOOL bProcessSecurity, + LPVOID *lpContext); + +struct _WIN32_STREAM_ID { + DWORD dwStreamId ; + DWORD dwStreamAttributes ; + LARGE_INTEGER Size ; + DWORD dwStreamNameSize ; + WCHAR cStreamName[ ANYSIZE_ARRAY ] ; +} +alias _WIN32_STREAM_ID WIN32_STREAM_ID; +alias _WIN32_STREAM_ID* LPWIN32_STREAM_ID; + +enum : uint { BACKUP_INVALID = 0x00000000 } +enum : uint { BACKUP_DATA = 0x00000001 } +enum : uint { BACKUP_EA_DATA = 0x00000002 } +enum : uint { BACKUP_SECURITY_DATA = 0x00000003 } +enum : uint { BACKUP_ALTERNATE_DATA = 0x00000004 } +enum : uint { BACKUP_LINK = 0x00000005 } +enum : uint { BACKUP_PROPERTY_DATA = 0x00000006 } +enum : uint { BACKUP_OBJECT_ID = 0x00000007 } +enum : uint { BACKUP_REPARSE_DATA = 0x00000008 } +enum : uint { BACKUP_SPARSE_BLOCK = 0x00000009 } + +enum : uint { STREAM_NORMAL_ATTRIBUTE = 0x00000000 } +enum : uint { STREAM_MODIFIED_WHEN_READ = 0x00000001 } +enum : uint { STREAM_CONTAINS_SECURITY = 0x00000002 } +enum : uint { STREAM_CONTAINS_PROPERTIES = 0x00000004 } +enum : uint { STREAM_SPARSE_ATTRIBUTE = 0x00000008 } + +extern(Windows) export BOOL ReadFileScatter( + HANDLE hFile, + FILE_SEGMENT_ELEMENT aSegmentArray[], + DWORD nNumberOfBytesToRead, + LPDWORD lpReserved, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export BOOL WriteFileGather( + HANDLE hFile, + FILE_SEGMENT_ELEMENT aSegmentArray[], + DWORD nNumberOfBytesToWrite, + LPDWORD lpReserved, + LPOVERLAPPED lpOverlapped); + +enum : uint { STARTF_USESHOWWINDOW = 0x00000001 } +enum : uint { STARTF_USESIZE = 0x00000002 } +enum : uint { STARTF_USEPOSITION = 0x00000004 } +enum : uint { STARTF_USECOUNTCHARS = 0x00000008 } +enum : uint { STARTF_USEFILLATTRIBUTE = 0x00000010 } +enum : uint { STARTF_RUNFULLSCREEN = 0x00000020 } +enum : uint { STARTF_FORCEONFEEDBACK = 0x00000040 } +enum : uint { STARTF_FORCEOFFFEEDBACK = 0x00000080 } +enum : uint { STARTF_USESTDHANDLES = 0x00000100 } + +// #if(WINVER >= 0x0400) + +enum : uint { STARTF_USEHOTKEY = 0x00000200 } +// #endif /* WINVER >= 0x0400 */ + +struct _STARTUPINFOA { + DWORD cb; + 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; + LPBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias _STARTUPINFOA STARTUPINFOA; +alias _STARTUPINFOA* LPSTARTUPINFOA; + +struct _STARTUPINFOW { + DWORD cb; + 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; + LPBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} +alias _STARTUPINFOW STARTUPINFOW; +alias _STARTUPINFOW* LPSTARTUPINFOW; + +// #ifdef UNICODE +alias STARTUPINFOW STARTUPINFO; +alias LPSTARTUPINFOW LPSTARTUPINFO; +// #else +// ... +// #endif // UNICODE + +enum : uint { SHUTDOWN_NORETRY = 0x00000001 } + +struct _WIN32_FIND_DATAA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD dwReserved0; + DWORD dwReserved1; + CHAR cFileName[ MAX_PATH ]; + CHAR cAlternateFileName[ 14 ]; +// #ifdef _MAC +// ... +// #endif +} +alias _WIN32_FIND_DATAA WIN32_FIND_DATAA; +alias _WIN32_FIND_DATAA* PWIN32_FIND_DATAA; +alias _WIN32_FIND_DATAA* LPWIN32_FIND_DATAA; + +struct _WIN32_FIND_DATAW { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; + DWORD dwReserved0; + DWORD dwReserved1; + WCHAR cFileName[ MAX_PATH ]; + WCHAR cAlternateFileName[ 14 ]; +// #ifdef _MAC +// ... +// #endif +} +alias _WIN32_FIND_DATAW WIN32_FIND_DATAW; +alias _WIN32_FIND_DATAW* PWIN32_FIND_DATAW; +alias _WIN32_FIND_DATAW* LPWIN32_FIND_DATAW; + +// #ifdef UNICODE +alias WIN32_FIND_DATAW WIN32_FIND_DATA; +alias PWIN32_FIND_DATAW PWIN32_FIND_DATA; +alias LPWIN32_FIND_DATAW LPWIN32_FIND_DATA; +// #else +// ... +// #endif // UNICODE + +struct _WIN32_FILE_ATTRIBUTE_DATA { + DWORD dwFileAttributes; + FILETIME ftCreationTime; + FILETIME ftLastAccessTime; + FILETIME ftLastWriteTime; + DWORD nFileSizeHigh; + DWORD nFileSizeLow; +} +alias _WIN32_FILE_ATTRIBUTE_DATA WIN32_FILE_ATTRIBUTE_DATA; +alias _WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; + +extern(Windows) export HANDLE CreateMutexA( + LPSECURITY_ATTRIBUTES lpMutexAttributes, + BOOL bInitialOwner, + LPCSTR lpName); +extern(Windows) export HANDLE CreateMutexW( + LPSECURITY_ATTRIBUTES lpMutexAttributes, + BOOL bInitialOwner, + LPCWSTR lpName); +// #ifdef UNICODE +alias CreateMutexW CreateMutex; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenMutexA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenMutexW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +alias OpenMutexW OpenMutex; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE CreateEventA( + LPSECURITY_ATTRIBUTES lpEventAttributes, + BOOL bManualReset, + BOOL bInitialState, + LPCSTR lpName); +extern(Windows) export HANDLE CreateEventW( + LPSECURITY_ATTRIBUTES lpEventAttributes, + BOOL bManualReset, + BOOL bInitialState, + LPCWSTR lpName); +// #ifdef UNICODE +alias CreateEventW CreateEvent; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenEventA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenEventW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +alias OpenEventW OpenEvent; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE CreateSemaphoreA( + LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, + LONG lInitialCount, + LONG lMaximumCount, + LPCSTR lpName); +extern(Windows) export HANDLE CreateSemaphoreW( + LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, + LONG lInitialCount, + LONG lMaximumCount, + LPCWSTR lpName); +// #ifdef UNICODE +alias CreateSemaphoreW CreateSemaphore; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenSemaphoreA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenSemaphoreW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +alias OpenSemaphoreW OpenSemaphore; +// #else +// #... +// #endif // !UNICODE + +// #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +extern(Windows) alias VOID function( LPVOID lpArgToCompletionRoutine, DWORD dwTimerLowValue, DWORD dwTimerHighValue ) PTIMERAPCROUTINE; + +extern(Windows) export HANDLE CreateWaitableTimerA( + LPSECURITY_ATTRIBUTES lpTimerAttributes, + BOOL bManualReset, + LPCSTR lpTimerName); +extern(Windows) export HANDLE CreateWaitableTimerW( + LPSECURITY_ATTRIBUTES lpTimerAttributes, + BOOL bManualReset, + LPCWSTR lpTimerName); +// #ifdef UNICODE +alias CreateWaitableTimerW CreateWaitableTimer; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenWaitableTimerA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpTimerName); +extern(Windows) export HANDLE OpenWaitableTimerW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpTimerName); +// #ifdef UNICODE +alias OpenWaitableTimerW OpenWaitableTimer; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetWaitableTimer( + HANDLE hTimer, + LARGE_INTEGER *lpDueTime, + LONG lPeriod, + PTIMERAPCROUTINE pfnCompletionRoutine, + LPVOID lpArgToCompletionRoutine, + BOOL fResume); + +extern(Windows) export BOOL CancelWaitableTimer( + HANDLE hTimer); +// #endif /* (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) */ + +extern(Windows) export HANDLE CreateFileMappingA( + HANDLE hFile, + LPSECURITY_ATTRIBUTES lpFileMappingAttributes, + DWORD flProtect, + DWORD dwMaximumSizeHigh, + DWORD dwMaximumSizeLow, + LPCSTR lpName); +extern(Windows) export HANDLE CreateFileMappingW( + HANDLE hFile, + LPSECURITY_ATTRIBUTES lpFileMappingAttributes, + DWORD flProtect, + DWORD dwMaximumSizeHigh, + DWORD dwMaximumSizeLow, + LPCWSTR lpName); +// #ifdef UNICODE +alias CreateFileMappingW CreateFileMapping; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenFileMappingA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenFileMappingW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +alias OpenFileMappingW OpenFileMapping; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetLogicalDriveStringsA( + DWORD nBufferLength, + LPSTR lpBuffer); +extern(Windows) export DWORD GetLogicalDriveStringsW( + DWORD nBufferLength, + LPWSTR lpBuffer); +// #ifdef UNICODE +alias GetLogicalDriveStringsW GetLogicalDriveStrings; +// #else +// #... +// #endif // !UNICODE + +// #if _WIN32_WINNT >= 0x0501 + +alias int _MEMORY_RESOURCE_NOTIFICATION_TYPE; +enum { + LowMemoryResourceNotification, + HighMemoryResourceNotification, +} +alias _MEMORY_RESOURCE_NOTIFICATION_TYPE MEMORY_RESOURCE_NOTIFICATION_TYPE; + +extern(Windows) export HANDLE CreateMemoryResourceNotification( + MEMORY_RESOURCE_NOTIFICATION_TYPE NotificationType); + +extern(Windows) export BOOL QueryMemoryResourceNotification( + HANDLE ResourceNotificationHandle, + PBOOL ResourceState); + +// #endif // _WIN32_WINNT >= 0x0501 + +extern(Windows) export HMODULE LoadLibraryA( + LPCSTR lpLibFileName); +extern(Windows) export HMODULE LoadLibraryW( + LPCWSTR lpLibFileName); +// #ifdef UNICODE +alias LoadLibraryW LoadLibrary; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HMODULE LoadLibraryExA( + LPCSTR lpLibFileName, + HANDLE hFile, + DWORD dwFlags); +extern(Windows) export HMODULE LoadLibraryExW( + LPCWSTR lpLibFileName, + HANDLE hFile, + DWORD dwFlags); +// #ifdef UNICODE +alias LoadLibraryExW LoadLibraryEx; +// #else +// #... +// #endif // !UNICODE + +enum : uint { DONT_RESOLVE_DLL_REFERENCES = 0x00000001 } +enum : uint { LOAD_LIBRARY_AS_DATAFILE = 0x00000002 } +enum : uint { LOAD_WITH_ALTERED_SEARCH_PATH = 0x00000008 } +enum : uint { LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x00000010 } + +extern(Windows) export DWORD GetModuleFileNameA( + HMODULE hModule, + LPSTR lpFilename, + DWORD nSize); +extern(Windows) export DWORD GetModuleFileNameW( + HMODULE hModule, + LPWSTR lpFilename, + DWORD nSize); +// #ifdef UNICODE +alias GetModuleFileNameW GetModuleFileName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HMODULE GetModuleHandleA( + LPCSTR lpModuleName); +extern(Windows) export HMODULE GetModuleHandleW( + LPCWSTR lpModuleName); +// #ifdef UNICODE +alias GetModuleHandleW GetModuleHandle; +// #else +// #... +// #endif // !UNICODE + +// #if !defined(RC_INVOKED) +// #if _WIN32_WINNT > 0x0500 || defined(WINBASE_DECLARE_GET_MODULE_HANDLE_EX) || ISOLATION_AWARE_ENABLED + +enum : uint { GET_MODULE_HANDLE_EX_FLAG_PIN = 0x00000001 } +enum : uint { GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 0x00000002 } +enum : uint { GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 0x00000004 } + +extern(Windows) alias BOOL function( DWORD dwFlags, LPCSTR lpModuleName, HMODULE* phModule ) PGET_MODULE_HANDLE_EXA; +extern(Windows) alias BOOL function( DWORD dwFlags, LPCWSTR lpModuleName, HMODULE* phModule ) PGET_MODULE_HANDLE_EXW; +// #ifdef UNICODE +alias PGET_MODULE_HANDLE_EXW PGET_MODULE_HANDLE_EX; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetModuleHandleExA( + DWORD dwFlags, + LPCSTR lpModuleName, + HMODULE* phModule); +extern(Windows) export BOOL GetModuleHandleExW( + DWORD dwFlags, + LPCWSTR lpModuleName, + HMODULE* phModule); +// #ifdef UNICODE +alias GetModuleHandleExW GetModuleHandleEx; +// #else +// #... +// #endif // !UNICODE + +// #endif +// #endif + +extern(Windows) export BOOL CreateProcessA( + LPCSTR lpApplicationName, + LPSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCSTR lpCurrentDirectory, + LPSTARTUPINFOA lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); +extern(Windows) export BOOL CreateProcessW( + LPCWSTR lpApplicationName, + LPWSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCWSTR lpCurrentDirectory, + LPSTARTUPINFOW lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); +// #ifdef UNICODE +alias CreateProcessW CreateProcess; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetProcessShutdownParameters( + DWORD dwLevel, + DWORD dwFlags); + +extern(Windows) export BOOL GetProcessShutdownParameters( + LPDWORD lpdwLevel, + LPDWORD lpdwFlags); + +extern(Windows) export DWORD GetProcessVersion( + DWORD ProcessId); + +extern(Windows) export VOID FatalAppExitA( + UINT uAction, + LPCSTR lpMessageText); +extern(Windows) export VOID FatalAppExitW( + UINT uAction, + LPCWSTR lpMessageText); +// #ifdef UNICODE +alias FatalAppExitW FatalAppExit; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export VOID GetStartupInfoA( + LPSTARTUPINFOA lpStartupInfo); +extern(Windows) export VOID GetStartupInfoW( + LPSTARTUPINFOW lpStartupInfo); +// #ifdef UNICODE +alias GetStartupInfoW GetStartupInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LPSTR GetCommandLineA(); +extern(Windows) export LPWSTR GetCommandLineW(); +// #ifdef UNICODE +alias GetCommandLineW GetCommandLine; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetEnvironmentVariableA( + LPCSTR lpName, + LPSTR lpBuffer, + DWORD nSize); +extern(Windows) export DWORD GetEnvironmentVariableW( + LPCWSTR lpName, + LPWSTR lpBuffer, + DWORD nSize); +// #ifdef UNICODE +alias GetEnvironmentVariableW GetEnvironmentVariable; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetEnvironmentVariableA( + LPCSTR lpName, + LPCSTR lpValue); +extern(Windows) export BOOL SetEnvironmentVariableW( + LPCWSTR lpName, + LPCWSTR lpValue); +// #ifdef UNICODE +alias SetEnvironmentVariableW SetEnvironmentVariable; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD ExpandEnvironmentStringsA( + LPCSTR lpSrc, + LPSTR lpDst, + DWORD nSize); +extern(Windows) export DWORD ExpandEnvironmentStringsW( + LPCWSTR lpSrc, + LPWSTR lpDst, + DWORD nSize); +// #ifdef UNICODE +alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetFirmwareEnvironmentVariableA( + LPCSTR lpName, + LPCSTR lpGuid, + PVOID pBuffer, + DWORD nSize); +extern(Windows) export DWORD GetFirmwareEnvironmentVariableW( + LPCWSTR lpName, + LPCWSTR lpGuid, + PVOID pBuffer, + DWORD nSize); +// #ifdef UNICODE +alias GetFirmwareEnvironmentVariableW GetFirmwareEnvironmentVariable; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetFirmwareEnvironmentVariableA( + LPCSTR lpName, + LPCSTR lpGuid, + PVOID pValue, + DWORD nSize); +extern(Windows) export BOOL SetFirmwareEnvironmentVariableW( + LPCWSTR lpName, + LPCWSTR lpGuid, + PVOID pValue, + DWORD nSize); +// #ifdef UNICODE +alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export VOID OutputDebugStringA( + LPCSTR lpOutputString); +extern(Windows) export VOID OutputDebugStringW( + LPCWSTR lpOutputString); +// #ifdef UNICODE +alias OutputDebugStringW OutputDebugString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HRSRC FindResourceA( + HMODULE hModule, + LPCSTR lpName, + LPCSTR lpType); +extern(Windows) export HRSRC FindResourceW( + HMODULE hModule, + LPCWSTR lpName, + LPCWSTR lpType); +// #ifdef UNICODE +alias FindResourceW FindResource; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HRSRC FindResourceExA( + HMODULE hModule, + LPCSTR lpType, + LPCSTR lpName, + WORD wLanguage); +extern(Windows) export HRSRC FindResourceExW( + HMODULE hModule, + LPCWSTR lpType, + LPCWSTR lpName, + WORD wLanguage); +// #ifdef UNICODE +alias FindResourceExW FindResourceEx; +// #else +// #... +// #endif // !UNICODE + +// #ifdef STRICT +extern(Windows) alias BOOL function(HMODULE hModule, LPSTR lpType, LONG_PTR lParam) ENUMRESTYPEPROCA; +extern(Windows) alias BOOL function(HMODULE hModule, LPWSTR lpType, LONG_PTR lParam) ENUMRESTYPEPROCW; +// #ifdef UNICODE +alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; +// #else +// #... +// #endif // !UNICODE +extern(Windows) alias BOOL function(HMODULE hModule, LPCSTR lpType, LPSTR lpName, LONG_PTR lParam) ENUMRESNAMEPROCA; +extern(Windows) alias BOOL function(HMODULE hModule, LPCWSTR lpType, LPWSTR lpName, LONG_PTR lParam) ENUMRESNAMEPROCW; +// #ifdef UNICODE +alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; +// #else +// #... +// #endif // !UNICODE +extern(Windows) alias BOOL function(HMODULE hModule, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LONG_PTR lParam) ENUMRESLANGPROCA; +extern(Windows) alias BOOL function(HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LONG_PTR lParam) ENUMRESLANGPROCW; +// #ifdef UNICODE +alias ENUMRESLANGPROCW ENUMRESLANGPROC; +// #else +// #... +// #endif // !UNICODE +// #else +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif + +extern(Windows) export BOOL EnumResourceTypesA( + HMODULE hModule, + ENUMRESTYPEPROCA lpEnumFunc, + LONG_PTR lParam); +extern(Windows) export BOOL EnumResourceTypesW( + HMODULE hModule, + ENUMRESTYPEPROCW lpEnumFunc, + LONG_PTR lParam); +// #ifdef UNICODE +alias EnumResourceTypesW EnumResourceTypes; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumResourceNamesA( + HMODULE hModule, + LPCSTR lpType, + ENUMRESNAMEPROCA lpEnumFunc, + LONG_PTR lParam); +extern(Windows) export BOOL EnumResourceNamesW( + HMODULE hModule, + LPCWSTR lpType, + ENUMRESNAMEPROCW lpEnumFunc, + LONG_PTR lParam); +// #ifdef UNICODE +alias EnumResourceNamesW EnumResourceNames; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumResourceLanguagesA( + HMODULE hModule, + LPCSTR lpType, + LPCSTR lpName, + ENUMRESLANGPROCA lpEnumFunc, + LONG_PTR lParam); +extern(Windows) export BOOL EnumResourceLanguagesW( + HMODULE hModule, + LPCWSTR lpType, + LPCWSTR lpName, + ENUMRESLANGPROCW lpEnumFunc, + LONG_PTR lParam); +// #ifdef UNICODE +alias EnumResourceLanguagesW EnumResourceLanguages; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE BeginUpdateResourceA( + LPCSTR pFileName, + BOOL bDeleteExistingResources); +extern(Windows) export HANDLE BeginUpdateResourceW( + LPCWSTR pFileName, + BOOL bDeleteExistingResources); +// #ifdef UNICODE +alias BeginUpdateResourceW BeginUpdateResource; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL UpdateResourceA( + HANDLE hUpdate, + LPCSTR lpType, + LPCSTR lpName, + WORD wLanguage, + LPVOID lpData, + DWORD cbData); +extern(Windows) export BOOL UpdateResourceW( + HANDLE hUpdate, + LPCWSTR lpType, + LPCWSTR lpName, + WORD wLanguage, + LPVOID lpData, + DWORD cbData); +// #ifdef UNICODE +alias UpdateResourceW UpdateResource; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EndUpdateResourceA( + HANDLE hUpdate, + BOOL fDiscard); +extern(Windows) export BOOL EndUpdateResourceW( + HANDLE hUpdate, + BOOL fDiscard); +// #ifdef UNICODE +alias EndUpdateResourceW EndUpdateResource; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export ATOM GlobalAddAtomA( + LPCSTR lpString); +extern(Windows) export ATOM GlobalAddAtomW( + LPCWSTR lpString); +// #ifdef UNICODE +alias GlobalAddAtomW GlobalAddAtom; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export ATOM GlobalFindAtomA( + LPCSTR lpString); +extern(Windows) export ATOM GlobalFindAtomW( + LPCWSTR lpString); +// #ifdef UNICODE +alias GlobalFindAtomW GlobalFindAtom; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GlobalGetAtomNameA( + ATOM nAtom, + LPSTR lpBuffer, + int nSize); +extern(Windows) export UINT GlobalGetAtomNameW( + ATOM nAtom, + LPWSTR lpBuffer, + int nSize); +// #ifdef UNICODE +alias GlobalGetAtomNameW GlobalGetAtomName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export ATOM AddAtomA( + LPCSTR lpString); +extern(Windows) export ATOM AddAtomW( + LPCWSTR lpString); +// #ifdef UNICODE +alias AddAtomW AddAtom; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export ATOM FindAtomA( + LPCSTR lpString); +extern(Windows) export ATOM FindAtomW( + LPCWSTR lpString); +// #ifdef UNICODE +alias FindAtomW FindAtom; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetAtomNameA( + ATOM nAtom, + LPSTR lpBuffer, + int nSize); +extern(Windows) export UINT GetAtomNameW( + ATOM nAtom, + LPWSTR lpBuffer, + int nSize); +// #ifdef UNICODE +alias GetAtomNameW GetAtomName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetProfileIntA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + INT nDefault); +extern(Windows) export UINT GetProfileIntW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + INT nDefault); +// #ifdef UNICODE +alias GetProfileIntW GetProfileInt; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetProfileStringA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + LPCSTR lpDefault, + LPSTR lpReturnedString, + DWORD nSize); +extern(Windows) export DWORD GetProfileStringW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + LPCWSTR lpDefault, + LPWSTR lpReturnedString, + DWORD nSize); +// #ifdef UNICODE +alias GetProfileStringW GetProfileString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WriteProfileStringA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + LPCSTR lpString); +extern(Windows) export BOOL WriteProfileStringW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + LPCWSTR lpString); +// #ifdef UNICODE +alias WriteProfileStringW WriteProfileString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetProfileSectionA( + LPCSTR lpAppName, + LPSTR lpReturnedString, + DWORD nSize); +extern(Windows) export DWORD GetProfileSectionW( + LPCWSTR lpAppName, + LPWSTR lpReturnedString, + DWORD nSize); +// #ifdef UNICODE +alias GetProfileSectionW GetProfileSection; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WriteProfileSectionA( + LPCSTR lpAppName, + LPCSTR lpString); +extern(Windows) export BOOL WriteProfileSectionW( + LPCWSTR lpAppName, + LPCWSTR lpString); +// #ifdef UNICODE +alias WriteProfileSectionW WriteProfileSection; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetPrivateProfileIntA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + INT nDefault, + LPCSTR lpFileName); +extern(Windows) export UINT GetPrivateProfileIntW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + INT nDefault, + LPCWSTR lpFileName); +// #ifdef UNICODE +alias GetPrivateProfileIntW GetPrivateProfileInt; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrivateProfileStringA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + LPCSTR lpDefault, + LPSTR lpReturnedString, + DWORD nSize, + LPCSTR lpFileName); +extern(Windows) export DWORD GetPrivateProfileStringW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + LPCWSTR lpDefault, + LPWSTR lpReturnedString, + DWORD nSize, + LPCWSTR lpFileName); +// #ifdef UNICODE +alias GetPrivateProfileStringW GetPrivateProfileString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WritePrivateProfileStringA( + LPCSTR lpAppName, + LPCSTR lpKeyName, + LPCSTR lpString, + LPCSTR lpFileName); +extern(Windows) export BOOL WritePrivateProfileStringW( + LPCWSTR lpAppName, + LPCWSTR lpKeyName, + LPCWSTR lpString, + LPCWSTR lpFileName); +// #ifdef UNICODE +alias WritePrivateProfileStringW WritePrivateProfileString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrivateProfileSectionA( + LPCSTR lpAppName, + LPSTR lpReturnedString, + DWORD nSize, + LPCSTR lpFileName); +extern(Windows) export DWORD GetPrivateProfileSectionW( + LPCWSTR lpAppName, + LPWSTR lpReturnedString, + DWORD nSize, + LPCWSTR lpFileName); +// #ifdef UNICODE +alias GetPrivateProfileSectionW GetPrivateProfileSection; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WritePrivateProfileSectionA( + LPCSTR lpAppName, + LPCSTR lpString, + LPCSTR lpFileName); +extern(Windows) export BOOL WritePrivateProfileSectionW( + LPCWSTR lpAppName, + LPCWSTR lpString, + LPCWSTR lpFileName); +// #ifdef UNICODE +alias WritePrivateProfileSectionW WritePrivateProfileSection; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrivateProfileSectionNamesA( + LPSTR lpszReturnBuffer, + DWORD nSize, + LPCSTR lpFileName); +extern(Windows) export DWORD GetPrivateProfileSectionNamesW( + LPWSTR lpszReturnBuffer, + DWORD nSize, + LPCWSTR lpFileName); +// #ifdef UNICODE +alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrivateProfileStructA( + LPCSTR lpszSection, + LPCSTR lpszKey, + LPVOID lpStruct, + UINT uSizeStruct, + LPCSTR szFile); +extern(Windows) export BOOL GetPrivateProfileStructW( + LPCWSTR lpszSection, + LPCWSTR lpszKey, + LPVOID lpStruct, + UINT uSizeStruct, + LPCWSTR szFile); +// #ifdef UNICODE +alias GetPrivateProfileStructW GetPrivateProfileStruct; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WritePrivateProfileStructA( + LPCSTR lpszSection, + LPCSTR lpszKey, + LPVOID lpStruct, + UINT uSizeStruct, + LPCSTR szFile); +extern(Windows) export BOOL WritePrivateProfileStructW( + LPCWSTR lpszSection, + LPCWSTR lpszKey, + LPVOID lpStruct, + UINT uSizeStruct, + LPCWSTR szFile); +// #ifdef UNICODE +alias WritePrivateProfileStructW WritePrivateProfileStruct; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetDriveTypeA( + LPCSTR lpRootPathName); +extern(Windows) export UINT GetDriveTypeW( + LPCWSTR lpRootPathName); +// #ifdef UNICODE +alias GetDriveTypeW GetDriveType; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetSystemDirectoryA( + LPSTR lpBuffer, + UINT uSize); +extern(Windows) export UINT GetSystemDirectoryW( + LPWSTR lpBuffer, + UINT uSize); +// #ifdef UNICODE +alias GetSystemDirectoryW GetSystemDirectory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetTempPathA( + DWORD nBufferLength, + LPSTR lpBuffer); +extern(Windows) export DWORD GetTempPathW( + DWORD nBufferLength, + LPWSTR lpBuffer); +// #ifdef UNICODE +alias GetTempPathW GetTempPath; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetTempFileNameA( + LPCSTR lpPathName, + LPCSTR lpPrefixString, + UINT uUnique, + LPSTR lpTempFileName); +extern(Windows) export UINT GetTempFileNameW( + LPCWSTR lpPathName, + LPCWSTR lpPrefixString, + UINT uUnique, + LPWSTR lpTempFileName); +// #ifdef UNICODE +alias GetTempFileNameW GetTempFileName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetWindowsDirectoryA( + LPSTR lpBuffer, + UINT uSize); +extern(Windows) export UINT GetWindowsDirectoryW( + LPWSTR lpBuffer, + UINT uSize); +// #ifdef UNICODE +alias GetWindowsDirectoryW GetWindowsDirectory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetSystemWindowsDirectoryA( + LPSTR lpBuffer, + UINT uSize); +extern(Windows) export UINT GetSystemWindowsDirectoryW( + LPWSTR lpBuffer, + UINT uSize); +// #ifdef UNICODE +alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; +// #else +// #... +// #endif // !UNICODE + +// #if !defined(RC_INVOKED) // RC warns because "WINBASE_DECLARE_GET_SYSTEM_WOW64_DIRECTORY" is a bit long. +// #if _WIN32_WINNT >= 0x0501 || defined(WINBASE_DECLARE_GET_SYSTEM_WOW64_DIRECTORY) + +extern(Windows) export UINT GetSystemWow64DirectoryA( + LPSTR lpBuffer, + UINT uSize); +extern(Windows) export UINT GetSystemWow64DirectoryW( + LPWSTR lpBuffer, + UINT uSize); +// #ifdef UNICODE +alias GetSystemWow64DirectoryW GetSystemWow64Directory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) alias UINT function( LPSTR lpBuffer, UINT uSize) PGET_SYSTEM_WOW64_DIRECTORY_A; +extern(Windows) alias UINT function( LPWSTR lpBuffer, UINT uSize) PGET_SYSTEM_WOW64_DIRECTORY_W; + +const char[] GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A = "GetSystemWow64DirectoryA"; +const wchar[] GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W = "GetSystemWow64DirectoryA"; +const TCHAR[] GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T = "GetSystemWow64DirectoryA"; +const char[] GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A = "GetSystemWow64DirectoryW"; +const wchar[] GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W = "GetSystemWow64DirectoryW"; +const TCHAR[] GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T = "GetSystemWow64DirectoryW"; + +// #ifdef UNICODE +alias GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A; +alias GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W; +alias GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T; +// #else +// #... +// #... +// #... +// #endif + +// #endif // _WIN32_WINNT >= 0x0501 +// #endif + +extern(Windows) export BOOL SetCurrentDirectoryA( + LPCSTR lpPathName); +extern(Windows) export BOOL SetCurrentDirectoryW( + LPCWSTR lpPathName); +// #ifdef UNICODE +alias SetCurrentDirectoryW SetCurrentDirectory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetCurrentDirectoryA( + DWORD nBufferLength, + LPSTR lpBuffer); +extern(Windows) export DWORD GetCurrentDirectoryW( + DWORD nBufferLength, + LPWSTR lpBuffer); +// #ifdef UNICODE +alias GetCurrentDirectoryW GetCurrentDirectory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetDiskFreeSpaceA( + LPCSTR lpRootPathName, + LPDWORD lpSectorsPerCluster, + LPDWORD lpBytesPerSector, + LPDWORD lpNumberOfFreeClusters, + LPDWORD lpTotalNumberOfClusters); +extern(Windows) export BOOL GetDiskFreeSpaceW( + LPCWSTR lpRootPathName, + LPDWORD lpSectorsPerCluster, + LPDWORD lpBytesPerSector, + LPDWORD lpNumberOfFreeClusters, + LPDWORD lpTotalNumberOfClusters); +// #ifdef UNICODE +alias GetDiskFreeSpaceW GetDiskFreeSpace; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetDiskFreeSpaceExA( + LPCSTR lpDirectoryName, + PULARGE_INTEGER lpFreeBytesAvailableToCaller, + PULARGE_INTEGER lpTotalNumberOfBytes, + PULARGE_INTEGER lpTotalNumberOfFreeBytes); +extern(Windows) export BOOL GetDiskFreeSpaceExW( + LPCWSTR lpDirectoryName, + PULARGE_INTEGER lpFreeBytesAvailableToCaller, + PULARGE_INTEGER lpTotalNumberOfBytes, + PULARGE_INTEGER lpTotalNumberOfFreeBytes); +// #ifdef UNICODE +alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CreateDirectoryA( + LPCSTR lpPathName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export BOOL CreateDirectoryW( + LPCWSTR lpPathName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +alias CreateDirectoryW CreateDirectory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CreateDirectoryExA( + LPCSTR lpTemplateDirectory, + LPCSTR lpNewDirectory, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export BOOL CreateDirectoryExW( + LPCWSTR lpTemplateDirectory, + LPCWSTR lpNewDirectory, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +alias CreateDirectoryExW CreateDirectoryEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL RemoveDirectoryA( + LPCSTR lpPathName); +extern(Windows) export BOOL RemoveDirectoryW( + LPCWSTR lpPathName); +// #ifdef UNICODE +alias RemoveDirectoryW RemoveDirectory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetFullPathNameA( + LPCSTR lpFileName, + DWORD nBufferLength, + LPSTR lpBuffer, + LPSTR *lpFilePart); +extern(Windows) export DWORD GetFullPathNameW( + LPCWSTR lpFileName, + DWORD nBufferLength, + LPWSTR lpBuffer, + LPWSTR *lpFilePart); +// #ifdef UNICODE +alias GetFullPathNameW GetFullPathName; +// #else +// #... +// #endif // !UNICODE + +enum : uint { DDD_RAW_TARGET_PATH = 0x00000001 } +enum : uint { DDD_REMOVE_DEFINITION = 0x00000002 } +enum : uint { DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 } +enum : uint { DDD_NO_BROADCAST_SYSTEM = 0x00000008 } +enum : uint { DDD_LUID_BROADCAST_DRIVE = 0x00000010 } + +extern(Windows) export BOOL DefineDosDeviceA( + DWORD dwFlags, + LPCSTR lpDeviceName, + LPCSTR lpTargetPath); +extern(Windows) export BOOL DefineDosDeviceW( + DWORD dwFlags, + LPCWSTR lpDeviceName, + LPCWSTR lpTargetPath); +// #ifdef UNICODE +alias DefineDosDeviceW DefineDosDevice; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD QueryDosDeviceA( + LPCSTR lpDeviceName, + LPSTR lpTargetPath, + DWORD ucchMax); +extern(Windows) export DWORD QueryDosDeviceW( + LPCWSTR lpDeviceName, + LPWSTR lpTargetPath, + DWORD ucchMax); +// #ifdef UNICODE +alias QueryDosDeviceW QueryDosDevice; +// #else +// #... +// #endif // !UNICODE + +// #define EXPAND_LOCAL_DRIVES + +extern(Windows) export HANDLE CreateFileA( + LPCSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile); +extern(Windows) export HANDLE CreateFileW( + LPCWSTR lpFileName, + DWORD dwDesiredAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreationDisposition, + DWORD dwFlagsAndAttributes, + HANDLE hTemplateFile); +// #ifdef UNICODE +alias CreateFileW CreateFile; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetFileAttributesA( + LPCSTR lpFileName, + DWORD dwFileAttributes); +extern(Windows) export BOOL SetFileAttributesW( + LPCWSTR lpFileName, + DWORD dwFileAttributes); +// #ifdef UNICODE +alias SetFileAttributesW SetFileAttributes; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetFileAttributesA( + LPCSTR lpFileName); +extern(Windows) export DWORD GetFileAttributesW( + LPCWSTR lpFileName); +// #ifdef UNICODE +alias GetFileAttributesW GetFileAttributes; +// #else +// #... +// #endif // !UNICODE + +alias int _GET_FILEEX_INFO_LEVELS; +enum { + GetFileExInfoStandard, + GetFileExMaxInfoLevel, +} +alias _GET_FILEEX_INFO_LEVELS GET_FILEEX_INFO_LEVELS; + +extern(Windows) export BOOL GetFileAttributesExA( + LPCSTR lpFileName, + GET_FILEEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFileInformation); +extern(Windows) export BOOL GetFileAttributesExW( + LPCWSTR lpFileName, + GET_FILEEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFileInformation); +// #ifdef UNICODE +alias GetFileAttributesExW GetFileAttributesEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetCompressedFileSizeA( + LPCSTR lpFileName, + LPDWORD lpFileSizeHigh); +extern(Windows) export DWORD GetCompressedFileSizeW( + LPCWSTR lpFileName, + LPDWORD lpFileSizeHigh); +// #ifdef UNICODE +alias GetCompressedFileSizeW GetCompressedFileSize; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeleteFileA( + LPCSTR lpFileName); +extern(Windows) export BOOL DeleteFileW( + LPCWSTR lpFileName); +// #ifdef UNICODE +alias DeleteFileW DeleteFile; +// #else +// #... +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0400) +alias int _FINDEX_INFO_LEVELS; +enum { + FindExInfoStandard, + FindExInfoMaxInfoLevel, +} +alias _FINDEX_INFO_LEVELS FINDEX_INFO_LEVELS; + +alias int _FINDEX_SEARCH_OPS; +enum { + FindExSearchNameMatch, + FindExSearchLimitToDirectories, + FindExSearchLimitToDevices, + FindExSearchMaxSearchOp, +} +alias _FINDEX_SEARCH_OPS FINDEX_SEARCH_OPS; + +enum : uint { FIND_FIRST_EX_CASE_SENSITIVE = 0x00000001 } + +extern(Windows) export HANDLE FindFirstFileExA( + LPCSTR lpFileName, + FINDEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFindFileData, + FINDEX_SEARCH_OPS fSearchOp, + LPVOID lpSearchFilter, + DWORD dwAdditionalFlags); +extern(Windows) export HANDLE FindFirstFileExW( + LPCWSTR lpFileName, + FINDEX_INFO_LEVELS fInfoLevelId, + LPVOID lpFindFileData, + FINDEX_SEARCH_OPS fSearchOp, + LPVOID lpSearchFilter, + DWORD dwAdditionalFlags); +// #ifdef UNICODE +alias FindFirstFileExW FindFirstFileEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export HANDLE FindFirstFileA( + LPCSTR lpFileName, + LPWIN32_FIND_DATAA lpFindFileData); +extern(Windows) export HANDLE FindFirstFileW( + LPCWSTR lpFileName, + LPWIN32_FIND_DATAW lpFindFileData); +// #ifdef UNICODE +alias FindFirstFileW FindFirstFile; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FindNextFileA( + HANDLE hFindFile, + LPWIN32_FIND_DATAA lpFindFileData); +extern(Windows) export BOOL FindNextFileW( + HANDLE hFindFile, + LPWIN32_FIND_DATAW lpFindFileData); +// #ifdef UNICODE +alias FindNextFileW FindNextFile; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD SearchPathA( + LPCSTR lpPath, + LPCSTR lpFileName, + LPCSTR lpExtension, + DWORD nBufferLength, + LPSTR lpBuffer, + LPSTR *lpFilePart); +extern(Windows) export DWORD SearchPathW( + LPCWSTR lpPath, + LPCWSTR lpFileName, + LPCWSTR lpExtension, + DWORD nBufferLength, + LPWSTR lpBuffer, + LPWSTR *lpFilePart); +// #ifdef UNICODE +alias SearchPathW SearchPath; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CopyFileA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName, + BOOL bFailIfExists); +extern(Windows) export BOOL CopyFileW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + BOOL bFailIfExists); +// #ifdef UNICODE +alias CopyFileW CopyFile; +// #else +// #... +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) alias DWORD function( LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData ) LPPROGRESS_ROUTINE; + +extern(Windows) export BOOL CopyFileExA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName, + LPPROGRESS_ROUTINE lpProgressRoutine , + LPVOID lpData , + LPBOOL pbCancel , + DWORD dwCopyFlags); +extern(Windows) export BOOL CopyFileExW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + LPPROGRESS_ROUTINE lpProgressRoutine , + LPVOID lpData , + LPBOOL pbCancel , + DWORD dwCopyFlags); +// #ifdef UNICODE +alias CopyFileExW CopyFileEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL MoveFileA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName); +extern(Windows) export BOOL MoveFileW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName); +// #ifdef UNICODE +alias MoveFileW MoveFile; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL MoveFileExA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName, + DWORD dwFlags); +extern(Windows) export BOOL MoveFileExW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + DWORD dwFlags); +// #ifdef UNICODE +alias MoveFileExW MoveFileEx; +// #else +// #... +// #endif // !UNICODE + +// #if (_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL MoveFileWithProgressA( + LPCSTR lpExistingFileName, + LPCSTR lpNewFileName, + LPPROGRESS_ROUTINE lpProgressRoutine , + LPVOID lpData , + DWORD dwFlags); +extern(Windows) export BOOL MoveFileWithProgressW( + LPCWSTR lpExistingFileName, + LPCWSTR lpNewFileName, + LPPROGRESS_ROUTINE lpProgressRoutine , + LPVOID lpData , + DWORD dwFlags); +// #ifdef UNICODE +alias MoveFileWithProgressW MoveFileWithProgress; +// #else +// #... +// #endif // !UNICODE +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { MOVEFILE_REPLACE_EXISTING = 0x00000001 } +enum : uint { MOVEFILE_COPY_ALLOWED = 0x00000002 } +enum : uint { MOVEFILE_DELAY_UNTIL_REBOOT = 0x00000004 } +enum : uint { MOVEFILE_WRITE_THROUGH = 0x00000008 } +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { MOVEFILE_CREATE_HARDLINK = 0x00000010 } +enum : uint { MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x00000020 } +// #endif // (_WIN32_WINNT >= 0x0500) + +// #if (_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL ReplaceFileA( + LPCSTR lpReplacedFileName, + LPCSTR lpReplacementFileName, + LPCSTR lpBackupFileName, + DWORD dwReplaceFlags, + LPVOID lpExclude, + LPVOID lpReserved); +extern(Windows) export BOOL ReplaceFileW( + LPCWSTR lpReplacedFileName, + LPCWSTR lpReplacementFileName, + LPCWSTR lpBackupFileName, + DWORD dwReplaceFlags, + LPVOID lpExclude, + LPVOID lpReserved); +// #ifdef UNICODE +alias ReplaceFileW ReplaceFile; +// #else +// #... +// #endif // !UNICODE +// #endif // (_WIN32_WINNT >= 0x0500) + +// #if (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL CreateHardLinkA( + LPCSTR lpFileName, + LPCSTR lpExistingFileName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export BOOL CreateHardLinkW( + LPCWSTR lpFileName, + LPCWSTR lpExistingFileName, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +alias CreateHardLinkW CreateHardLink; +// #else +// #... +// #endif // !UNICODE + +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export HANDLE CreateNamedPipeA( + LPCSTR lpName, + DWORD dwOpenMode, + DWORD dwPipeMode, + DWORD nMaxInstances, + DWORD nOutBufferSize, + DWORD nInBufferSize, + DWORD nDefaultTimeOut, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export HANDLE CreateNamedPipeW( + LPCWSTR lpName, + DWORD dwOpenMode, + DWORD dwPipeMode, + DWORD nMaxInstances, + DWORD nOutBufferSize, + DWORD nInBufferSize, + DWORD nDefaultTimeOut, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +alias CreateNamedPipeW CreateNamedPipe; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetNamedPipeHandleStateA( + HANDLE hNamedPipe, + LPDWORD lpState, + LPDWORD lpCurInstances, + LPDWORD lpMaxCollectionCount, + LPDWORD lpCollectDataTimeout, + LPSTR lpUserName, + DWORD nMaxUserNameSize); +extern(Windows) export BOOL GetNamedPipeHandleStateW( + HANDLE hNamedPipe, + LPDWORD lpState, + LPDWORD lpCurInstances, + LPDWORD lpMaxCollectionCount, + LPDWORD lpCollectDataTimeout, + LPWSTR lpUserName, + DWORD nMaxUserNameSize); +// #ifdef UNICODE +alias GetNamedPipeHandleStateW GetNamedPipeHandleState; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CallNamedPipeA( + LPCSTR lpNamedPipeName, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesRead, + DWORD nTimeOut); +extern(Windows) export BOOL CallNamedPipeW( + LPCWSTR lpNamedPipeName, + LPVOID lpInBuffer, + DWORD nInBufferSize, + LPVOID lpOutBuffer, + DWORD nOutBufferSize, + LPDWORD lpBytesRead, + DWORD nTimeOut); +// #ifdef UNICODE +alias CallNamedPipeW CallNamedPipe; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WaitNamedPipeA( + LPCSTR lpNamedPipeName, + DWORD nTimeOut); +extern(Windows) export BOOL WaitNamedPipeW( + LPCWSTR lpNamedPipeName, + DWORD nTimeOut); +// #ifdef UNICODE +alias WaitNamedPipeW WaitNamedPipe; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetVolumeLabelA( + LPCSTR lpRootPathName, + LPCSTR lpVolumeName); +extern(Windows) export BOOL SetVolumeLabelW( + LPCWSTR lpRootPathName, + LPCWSTR lpVolumeName); +// #ifdef UNICODE +alias SetVolumeLabelW SetVolumeLabel; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export VOID SetFileApisToOEM(); + +extern(Windows) export VOID SetFileApisToANSI(); + +extern(Windows) export BOOL AreFileApisANSI(); + +extern(Windows) export BOOL GetVolumeInformationA( + LPCSTR lpRootPathName, + LPSTR lpVolumeNameBuffer, + DWORD nVolumeNameSize, + LPDWORD lpVolumeSerialNumber, + LPDWORD lpMaximumComponentLength, + LPDWORD lpFileSystemFlags, + LPSTR lpFileSystemNameBuffer, + DWORD nFileSystemNameSize); +extern(Windows) export BOOL GetVolumeInformationW( + LPCWSTR lpRootPathName, + LPWSTR lpVolumeNameBuffer, + DWORD nVolumeNameSize, + LPDWORD lpVolumeSerialNumber, + LPDWORD lpMaximumComponentLength, + LPDWORD lpFileSystemFlags, + LPWSTR lpFileSystemNameBuffer, + DWORD nFileSystemNameSize); +// #ifdef UNICODE +alias GetVolumeInformationW GetVolumeInformation; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CancelIo( + HANDLE hFile); + +extern(Windows) export BOOL ClearEventLogA( + HANDLE hEventLog, + LPCSTR lpBackupFileName); +extern(Windows) export BOOL ClearEventLogW( + HANDLE hEventLog, + LPCWSTR lpBackupFileName); +// #ifdef UNICODE +alias ClearEventLogW ClearEventLog; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL BackupEventLogA( + HANDLE hEventLog, + LPCSTR lpBackupFileName); +extern(Windows) export BOOL BackupEventLogW( + HANDLE hEventLog, + LPCWSTR lpBackupFileName); +// #ifdef UNICODE +alias BackupEventLogW BackupEventLog; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CloseEventLog( + HANDLE hEventLog); + +extern(Windows) export BOOL DeregisterEventSource( + HANDLE hEventLog); + +extern(Windows) export BOOL NotifyChangeEventLog( + HANDLE hEventLog, + HANDLE hEvent); + +extern(Windows) export BOOL GetNumberOfEventLogRecords( + HANDLE hEventLog, + PDWORD NumberOfRecords); + +extern(Windows) export BOOL GetOldestEventLogRecord( + HANDLE hEventLog, + PDWORD OldestRecord); + +extern(Windows) export HANDLE OpenEventLogA( + LPCSTR lpUNCServerName, + LPCSTR lpSourceName); +extern(Windows) export HANDLE OpenEventLogW( + LPCWSTR lpUNCServerName, + LPCWSTR lpSourceName); +// #ifdef UNICODE +alias OpenEventLogW OpenEventLog; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE RegisterEventSourceA( + LPCSTR lpUNCServerName, + LPCSTR lpSourceName); +extern(Windows) export HANDLE RegisterEventSourceW( + LPCWSTR lpUNCServerName, + LPCWSTR lpSourceName); +// #ifdef UNICODE +alias RegisterEventSourceW RegisterEventSource; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenBackupEventLogA( + LPCSTR lpUNCServerName, + LPCSTR lpFileName); +extern(Windows) export HANDLE OpenBackupEventLogW( + LPCWSTR lpUNCServerName, + LPCWSTR lpFileName); +// #ifdef UNICODE +alias OpenBackupEventLogW OpenBackupEventLog; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ReadEventLogA( + HANDLE hEventLog, + DWORD dwReadFlags, + DWORD dwRecordOffset, + LPVOID lpBuffer, + DWORD nNumberOfBytesToRead, + DWORD *pnBytesRead, + DWORD *pnMinNumberOfBytesNeeded); +extern(Windows) export BOOL ReadEventLogW( + HANDLE hEventLog, + DWORD dwReadFlags, + DWORD dwRecordOffset, + LPVOID lpBuffer, + DWORD nNumberOfBytesToRead, + DWORD *pnBytesRead, + DWORD *pnMinNumberOfBytesNeeded); +// #ifdef UNICODE +alias ReadEventLogW ReadEventLog; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ReportEventA( + HANDLE hEventLog, + WORD wType, + WORD wCategory, + DWORD dwEventID, + PSID lpUserSid, + WORD wNumStrings, + DWORD dwDataSize, + LPCSTR *lpStrings, + LPVOID lpRawData); +extern(Windows) export BOOL ReportEventW( + HANDLE hEventLog, + WORD wType, + WORD wCategory, + DWORD dwEventID, + PSID lpUserSid, + WORD wNumStrings, + DWORD dwDataSize, + LPCWSTR *lpStrings, + LPVOID lpRawData); +// #ifdef UNICODE +alias ReportEventW ReportEvent; +// #else +// #... +// #endif // !UNICODE + +enum : uint { EVENTLOG_FULL_INFO = 0 } + +struct _EVENTLOG_FULL_INFORMATION { + DWORD dwFull; +} +alias _EVENTLOG_FULL_INFORMATION EVENTLOG_FULL_INFORMATION; +alias _EVENTLOG_FULL_INFORMATION* LPEVENTLOG_FULL_INFORMATION; + +extern(Windows) export BOOL GetEventLogInformation( + HANDLE hEventLog, + DWORD dwInfoLevel, + LPVOID lpBuffer, + DWORD cbBufSize, + LPDWORD pcbBytesNeeded); + +extern(Windows) export BOOL DuplicateToken( + HANDLE ExistingTokenHandle, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + PHANDLE DuplicateTokenHandle); + +extern(Windows) export BOOL GetKernelObjectSecurity( + HANDLE Handle, + SECURITY_INFORMATION RequestedInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD nLength, + LPDWORD lpnLengthNeeded); + +extern(Windows) export BOOL ImpersonateNamedPipeClient( + HANDLE hNamedPipe); + +extern(Windows) export BOOL ImpersonateSelf( + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel); + +extern(Windows) export BOOL RevertToSelf(); + +extern(Windows) export BOOL SetThreadToken( + PHANDLE Thread, + HANDLE Token); + +extern(Windows) export BOOL AccessCheck( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + HANDLE ClientToken, + DWORD DesiredAccess, + PGENERIC_MAPPING GenericMapping, + PPRIVILEGE_SET PrivilegeSet, + LPDWORD PrivilegeSetLength, + LPDWORD GrantedAccess, + LPBOOL AccessStatus); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AccessCheckByType( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID PrincipalSelfSid, + HANDLE ClientToken, + DWORD DesiredAccess, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + PPRIVILEGE_SET PrivilegeSet, + LPDWORD PrivilegeSetLength, + LPDWORD GrantedAccess, + LPBOOL AccessStatus); + +extern(Windows) export BOOL AccessCheckByTypeResultList( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID PrincipalSelfSid, + HANDLE ClientToken, + DWORD DesiredAccess, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + PPRIVILEGE_SET PrivilegeSet, + LPDWORD PrivilegeSetLength, + LPDWORD GrantedAccessList, + LPDWORD AccessStatusList); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL OpenProcessToken( + HANDLE ProcessHandle, + DWORD DesiredAccess, + PHANDLE TokenHandle); + +extern(Windows) export BOOL OpenThreadToken( + HANDLE ThreadHandle, + DWORD DesiredAccess, + BOOL OpenAsSelf, + PHANDLE TokenHandle); + +extern(Windows) export BOOL GetTokenInformation( + HANDLE TokenHandle, + TOKEN_INFORMATION_CLASS TokenInformationClass, + LPVOID TokenInformation, + DWORD TokenInformationLength, + PDWORD ReturnLength); + +extern(Windows) export BOOL SetTokenInformation( + HANDLE TokenHandle, + TOKEN_INFORMATION_CLASS TokenInformationClass, + LPVOID TokenInformation, + DWORD TokenInformationLength); + +extern(Windows) export BOOL AdjustTokenPrivileges( + HANDLE TokenHandle, + BOOL DisableAllPrivileges, + PTOKEN_PRIVILEGES NewState, + DWORD BufferLength, + PTOKEN_PRIVILEGES PreviousState, + PDWORD ReturnLength); + +extern(Windows) export BOOL AdjustTokenGroups( + HANDLE TokenHandle, + BOOL ResetToDefault, + PTOKEN_GROUPS NewState, + DWORD BufferLength, + PTOKEN_GROUPS PreviousState, + PDWORD ReturnLength); + +extern(Windows) export BOOL PrivilegeCheck( + HANDLE ClientToken, + PPRIVILEGE_SET RequiredPrivileges, + LPBOOL pfResult); + +extern(Windows) export BOOL AccessCheckAndAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + LPSTR ObjectTypeName, + LPSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + DWORD DesiredAccess, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPBOOL AccessStatus, + LPBOOL pfGenerateOnClose); +extern(Windows) export BOOL AccessCheckAndAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + LPWSTR ObjectTypeName, + LPWSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + DWORD DesiredAccess, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPBOOL AccessStatus, + LPBOOL pfGenerateOnClose); +// #ifdef UNICODE +alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; +// #else +// #... +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL AccessCheckByTypeAndAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + LPCSTR ObjectTypeName, + LPCSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPBOOL AccessStatus, + LPBOOL pfGenerateOnClose); +extern(Windows) export BOOL AccessCheckByTypeAndAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + LPCWSTR ObjectTypeName, + LPCWSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPBOOL AccessStatus, + LPBOOL pfGenerateOnClose); +// #ifdef UNICODE +alias AccessCheckByTypeAndAuditAlarmW AccessCheckByTypeAndAuditAlarm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AccessCheckByTypeResultListAndAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + LPCSTR ObjectTypeName, + LPCSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPDWORD AccessStatusList, + LPBOOL pfGenerateOnClose); +extern(Windows) export BOOL AccessCheckByTypeResultListAndAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + LPCWSTR ObjectTypeName, + LPCWSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPDWORD AccessStatusList, + LPBOOL pfGenerateOnClose); +// #ifdef UNICODE +alias AccessCheckByTypeResultListAndAuditAlarmW AccessCheckByTypeResultListAndAuditAlarm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AccessCheckByTypeResultListAndAuditAlarmByHandleA( + LPCSTR SubsystemName, + LPVOID HandleId, + HANDLE ClientToken, + LPCSTR ObjectTypeName, + LPCSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPDWORD AccessStatusList, + LPBOOL pfGenerateOnClose); +extern(Windows) export BOOL AccessCheckByTypeResultListAndAuditAlarmByHandleW( + LPCWSTR SubsystemName, + LPVOID HandleId, + HANDLE ClientToken, + LPCWSTR ObjectTypeName, + LPCWSTR ObjectName, + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSID PrincipalSelfSid, + DWORD DesiredAccess, + AUDIT_EVENT_TYPE AuditType, + DWORD Flags, + POBJECT_TYPE_LIST ObjectTypeList, + DWORD ObjectTypeListLength, + PGENERIC_MAPPING GenericMapping, + BOOL ObjectCreation, + LPDWORD GrantedAccess, + LPDWORD AccessStatusList, + LPBOOL pfGenerateOnClose); +// #ifdef UNICODE +alias AccessCheckByTypeResultListAndAuditAlarmByHandleW AccessCheckByTypeResultListAndAuditAlarmByHandle; +// #else +// #... +// #endif // !UNICODE + +// #endif //(_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL ObjectOpenAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + LPSTR ObjectTypeName, + LPSTR ObjectName, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + HANDLE ClientToken, + DWORD DesiredAccess, + DWORD GrantedAccess, + PPRIVILEGE_SET Privileges, + BOOL ObjectCreation, + BOOL AccessGranted, + LPBOOL GenerateOnClose); +extern(Windows) export BOOL ObjectOpenAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + LPWSTR ObjectTypeName, + LPWSTR ObjectName, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + HANDLE ClientToken, + DWORD DesiredAccess, + DWORD GrantedAccess, + PPRIVILEGE_SET Privileges, + BOOL ObjectCreation, + BOOL AccessGranted, + LPBOOL GenerateOnClose); +// #ifdef UNICODE +alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ObjectPrivilegeAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + HANDLE ClientToken, + DWORD DesiredAccess, + PPRIVILEGE_SET Privileges, + BOOL AccessGranted); +extern(Windows) export BOOL ObjectPrivilegeAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + HANDLE ClientToken, + DWORD DesiredAccess, + PPRIVILEGE_SET Privileges, + BOOL AccessGranted); +// #ifdef UNICODE +alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ObjectCloseAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + BOOL GenerateOnClose); +extern(Windows) export BOOL ObjectCloseAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + BOOL GenerateOnClose); +// #ifdef UNICODE +alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ObjectDeleteAuditAlarmA( + LPCSTR SubsystemName, + LPVOID HandleId, + BOOL GenerateOnClose); +extern(Windows) export BOOL ObjectDeleteAuditAlarmW( + LPCWSTR SubsystemName, + LPVOID HandleId, + BOOL GenerateOnClose); +// #ifdef UNICODE +alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL PrivilegedServiceAuditAlarmA( + LPCSTR SubsystemName, + LPCSTR ServiceName, + HANDLE ClientToken, + PPRIVILEGE_SET Privileges, + BOOL AccessGranted); +extern(Windows) export BOOL PrivilegedServiceAuditAlarmW( + LPCWSTR SubsystemName, + LPCWSTR ServiceName, + HANDLE ClientToken, + PPRIVILEGE_SET Privileges, + BOOL AccessGranted); +// #ifdef UNICODE +alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; +// #else +// #... +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0501) + +enum _0 { + + WinNullSid = 0, + WinWorldSid = 1, + WinLocalSid = 2, + WinCreatorOwnerSid = 3, + WinCreatorGroupSid = 4, + WinCreatorOwnerServerSid = 5, + WinCreatorGroupServerSid = 6, + WinNtAuthoritySid = 7, + WinDialupSid = 8, + WinNetworkSid = 9, + WinBatchSid = 10, + WinInteractiveSid = 11, + WinServiceSid = 12, + WinAnonymousSid = 13, + WinProxySid = 14, + WinEnterpriseControllersSid = 15, + WinSelfSid = 16, + WinAuthenticatedUserSid = 17, + WinRestrictedCodeSid = 18, + WinTerminalServerSid = 19, + WinRemoteLogonIdSid = 20, + WinLogonIdsSid = 21, + WinLocalSystemSid = 22, + WinLocalServiceSid = 23, + WinNetworkServiceSid = 24, + WinBuiltinDomainSid = 25, + WinBuiltinAdministratorsSid = 26, + WinBuiltinUsersSid = 27, + WinBuiltinGuestsSid = 28, + WinBuiltinPowerUsersSid = 29, + WinBuiltinAccountOperatorsSid = 30, + WinBuiltinSystemOperatorsSid = 31, + WinBuiltinPrintOperatorsSid = 32, + WinBuiltinBackupOperatorsSid = 33, + WinBuiltinReplicatorSid = 34, + WinBuiltinPreWindows2000CompatibleAccessSid = 35, + WinBuiltinRemoteDesktopUsersSid = 36, + WinBuiltinNetworkConfigurationOperatorsSid = 37, + WinAccountAdministratorSid = 38, + WinAccountGuestSid = 39, + WinAccountKrbtgtSid = 40, + WinAccountDomainAdminsSid = 41, + WinAccountDomainUsersSid = 42, + WinAccountDomainGuestsSid = 43, + WinAccountComputersSid = 44, + WinAccountControllersSid = 45, + WinAccountCertAdminsSid = 46, + WinAccountSchemaAdminsSid = 47, + WinAccountEnterpriseAdminsSid = 48, + WinAccountPolicyAdminsSid = 49, + WinAccountRasAndIasServersSid = 50, + +} +alias _0 WELL_KNOWN_SID_TYPE; + +extern(Windows) export BOOL IsWellKnownSid( + PSID pSid, + WELL_KNOWN_SID_TYPE WellKnownSidType); + +extern(Windows) export BOOL CreateWellKnownSid( + WELL_KNOWN_SID_TYPE WellKnownSidType, + PSID DomainSid , + PSID pSid, + DWORD *cbSid); + +extern(Windows) export BOOL EqualDomainSid( + PSID pSid1, + PSID pSid2, + BOOL *pfEqual); + +extern(Windows) export BOOL GetWindowsAccountDomainSid( + PSID pSid, + PSID ppDomainSid , + DWORD *cbSid); + +// #endif //(_WIN32_WINNT >= 0x0501) + +extern(Windows) export BOOL IsValidSid( + PSID pSid); + +extern(Windows) export BOOL EqualSid( + PSID pSid1, + PSID pSid2); + +extern(Windows) export BOOL EqualPrefixSid( + PSID pSid1, + PSID pSid2); + +extern(Windows) export DWORD GetSidLengthRequired( + UCHAR nSubAuthorityCount); + +extern(Windows) export BOOL AllocateAndInitializeSid( + PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, + BYTE nSubAuthorityCount, + DWORD nSubAuthority0, + DWORD nSubAuthority1, + DWORD nSubAuthority2, + DWORD nSubAuthority3, + DWORD nSubAuthority4, + DWORD nSubAuthority5, + DWORD nSubAuthority6, + DWORD nSubAuthority7, + PSID *pSid); + +extern(Windows) export PVOID FreeSid( + PSID pSid); + +extern(Windows) export BOOL InitializeSid( + PSID Sid, + PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, + BYTE nSubAuthorityCount); + +extern(Windows) export PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority( + PSID pSid); + +extern(Windows) export PDWORD GetSidSubAuthority( + PSID pSid, + DWORD nSubAuthority); + +extern(Windows) export PUCHAR GetSidSubAuthorityCount( + PSID pSid); + +extern(Windows) export DWORD GetLengthSid( + PSID pSid); + +extern(Windows) export BOOL CopySid( + DWORD nDestinationSidLength, + PSID pDestinationSid, + PSID pSourceSid); + +extern(Windows) export BOOL AreAllAccessesGranted( + DWORD GrantedAccess, + DWORD DesiredAccess); + +extern(Windows) export BOOL AreAnyAccessesGranted( + DWORD GrantedAccess, + DWORD DesiredAccess); + +extern(Windows) export VOID MapGenericMask( + PDWORD AccessMask, + PGENERIC_MAPPING GenericMapping); + +extern(Windows) export BOOL IsValidAcl( + PACL pAcl); + +extern(Windows) export BOOL InitializeAcl( + PACL pAcl, + DWORD nAclLength, + DWORD dwAclRevision); + +extern(Windows) export BOOL GetAclInformation( + PACL pAcl, + LPVOID pAclInformation, + DWORD nAclInformationLength, + ACL_INFORMATION_CLASS dwAclInformationClass); + +extern(Windows) export BOOL SetAclInformation( + PACL pAcl, + LPVOID pAclInformation, + DWORD nAclInformationLength, + ACL_INFORMATION_CLASS dwAclInformationClass); + +extern(Windows) export BOOL AddAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD dwStartingAceIndex, + LPVOID pAceList, + DWORD nAceListLength); + +extern(Windows) export BOOL DeleteAce( + PACL pAcl, + DWORD dwAceIndex); + +extern(Windows) export BOOL GetAce( + PACL pAcl, + DWORD dwAceIndex, + LPVOID *pAce); + +extern(Windows) export BOOL AddAccessAllowedAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AccessMask, + PSID pSid); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AddAccessAllowedAceEx( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + PSID pSid); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL AddAccessDeniedAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AccessMask, + PSID pSid); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AddAccessDeniedAceEx( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + PSID pSid); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL AddAuditAccessAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD dwAccessMask, + PSID pSid, + BOOL bAuditSuccess, + BOOL bAuditFailure); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AddAuditAccessAceEx( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD dwAccessMask, + PSID pSid, + BOOL bAuditSuccess, + BOOL bAuditFailure); + +extern(Windows) export BOOL AddAccessAllowedObjectAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + GUID *ObjectTypeGuid, + GUID *InheritedObjectTypeGuid, + PSID pSid); + +extern(Windows) export BOOL AddAccessDeniedObjectAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + GUID *ObjectTypeGuid, + GUID *InheritedObjectTypeGuid, + PSID pSid); + +extern(Windows) export BOOL AddAuditAccessObjectAce( + PACL pAcl, + DWORD dwAceRevision, + DWORD AceFlags, + DWORD AccessMask, + GUID *ObjectTypeGuid, + GUID *InheritedObjectTypeGuid, + PSID pSid, + BOOL bAuditSuccess, + BOOL bAuditFailure); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL FindFirstFreeAce( + PACL pAcl, + LPVOID *pAce); + +extern(Windows) export BOOL InitializeSecurityDescriptor( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD dwRevision); + +extern(Windows) export BOOL IsValidSecurityDescriptor( + PSECURITY_DESCRIPTOR pSecurityDescriptor); + +extern(Windows) export DWORD GetSecurityDescriptorLength( + PSECURITY_DESCRIPTOR pSecurityDescriptor); + +extern(Windows) export BOOL GetSecurityDescriptorControl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSECURITY_DESCRIPTOR_CONTROL pControl, + LPDWORD lpdwRevision); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL SetSecurityDescriptorControl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest, + SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL SetSecurityDescriptorDacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + BOOL bDaclPresent, + PACL pDacl, + BOOL bDaclDefaulted); + +extern(Windows) export BOOL GetSecurityDescriptorDacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + LPBOOL lpbDaclPresent, + PACL *pDacl, + LPBOOL lpbDaclDefaulted); + +extern(Windows) export BOOL SetSecurityDescriptorSacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + BOOL bSaclPresent, + PACL pSacl, + BOOL bSaclDefaulted); + +extern(Windows) export BOOL GetSecurityDescriptorSacl( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + LPBOOL lpbSaclPresent, + PACL *pSacl, + LPBOOL lpbSaclDefaulted); + +extern(Windows) export BOOL SetSecurityDescriptorOwner( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID pOwner, + BOOL bOwnerDefaulted); + +extern(Windows) export BOOL GetSecurityDescriptorOwner( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID *pOwner, + LPBOOL lpbOwnerDefaulted); + +extern(Windows) export BOOL SetSecurityDescriptorGroup( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID pGroup, + BOOL bGroupDefaulted); + +extern(Windows) export BOOL GetSecurityDescriptorGroup( + PSECURITY_DESCRIPTOR pSecurityDescriptor, + PSID *pGroup, + LPBOOL lpbGroupDefaulted); + +extern(Windows) export DWORD SetSecurityDescriptorRMControl( + PSECURITY_DESCRIPTOR SecurityDescriptor, + PUCHAR RMControl ); + +extern(Windows) export DWORD GetSecurityDescriptorRMControl( + PSECURITY_DESCRIPTOR SecurityDescriptor, + PUCHAR RMControl); + +extern(Windows) export BOOL CreatePrivateObjectSecurity( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CreatorDescriptor, + PSECURITY_DESCRIPTOR * NewDescriptor, + BOOL IsDirectoryObject, + HANDLE Token, + PGENERIC_MAPPING GenericMapping); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL ConvertToAutoInheritPrivateObjectSecurity( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CurrentSecurityDescriptor, + PSECURITY_DESCRIPTOR *NewSecurityDescriptor, + GUID *ObjectType, + BOOLEAN IsDirectoryObject, + PGENERIC_MAPPING GenericMapping); + +extern(Windows) export BOOL CreatePrivateObjectSecurityEx( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CreatorDescriptor, + PSECURITY_DESCRIPTOR * NewDescriptor, + GUID *ObjectType , + BOOL IsContainerObject, + ULONG AutoInheritFlags, + HANDLE Token, + PGENERIC_MAPPING GenericMapping); + +extern(Windows) export BOOL CreatePrivateObjectSecurityWithMultipleInheritance( + PSECURITY_DESCRIPTOR ParentDescriptor, + PSECURITY_DESCRIPTOR CreatorDescriptor, + PSECURITY_DESCRIPTOR * NewDescriptor, + GUID **ObjectTypes , + ULONG GuidCount, + BOOL IsContainerObject, + ULONG AutoInheritFlags, + HANDLE Token, + PGENERIC_MAPPING GenericMapping); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL SetPrivateObjectSecurity( + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ModificationDescriptor, + PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, + PGENERIC_MAPPING GenericMapping, + HANDLE Token); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL SetPrivateObjectSecurityEx( + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ModificationDescriptor, + PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, + ULONG AutoInheritFlags, + PGENERIC_MAPPING GenericMapping, + HANDLE Token ); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL GetPrivateObjectSecurity( + PSECURITY_DESCRIPTOR ObjectDescriptor, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ResultantDescriptor, + DWORD DescriptorLength, + PDWORD ReturnLength); + +extern(Windows) export BOOL DestroyPrivateObjectSecurity( + PSECURITY_DESCRIPTOR * ObjectDescriptor); + +extern(Windows) export BOOL MakeSelfRelativeSD( + PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, + PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, + LPDWORD lpdwBufferLength); + +extern(Windows) export BOOL MakeAbsoluteSD( + PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, + PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, + LPDWORD lpdwAbsoluteSecurityDescriptorSize, + PACL pDacl, + LPDWORD lpdwDaclSize, + PACL pSacl, + LPDWORD lpdwSaclSize, + PSID pOwner, + LPDWORD lpdwOwnerSize, + PSID pPrimaryGroup, + LPDWORD lpdwPrimaryGroupSize); + +extern(Windows) export BOOL MakeAbsoluteSD2( + PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, + LPDWORD lpdwBufferSize); + +extern(Windows) export BOOL SetFileSecurityA( + LPCSTR lpFileName, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor); +extern(Windows) export BOOL SetFileSecurityW( + LPCWSTR lpFileName, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor); +// #ifdef UNICODE +alias SetFileSecurityW SetFileSecurity; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetFileSecurityA( + LPCSTR lpFileName, + SECURITY_INFORMATION RequestedInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD nLength, + LPDWORD lpnLengthNeeded); +extern(Windows) export BOOL GetFileSecurityW( + LPCWSTR lpFileName, + SECURITY_INFORMATION RequestedInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + DWORD nLength, + LPDWORD lpnLengthNeeded); +// #ifdef UNICODE +alias GetFileSecurityW GetFileSecurity; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetKernelObjectSecurity( + HANDLE Handle, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR SecurityDescriptor); + +extern(Windows) export HANDLE FindFirstChangeNotificationA( + LPCSTR lpPathName, + BOOL bWatchSubtree, + DWORD dwNotifyFilter); +extern(Windows) export HANDLE FindFirstChangeNotificationW( + LPCWSTR lpPathName, + BOOL bWatchSubtree, + DWORD dwNotifyFilter); +// #ifdef UNICODE +alias FindFirstChangeNotificationW FindFirstChangeNotification; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FindNextChangeNotification( + HANDLE hChangeHandle); + +extern(Windows) export BOOL FindCloseChangeNotification( + HANDLE hChangeHandle); + +// #if(_WIN32_WINNT >= 0x0400) +extern(Windows) export BOOL ReadDirectoryChangesW( + HANDLE hDirectory, + LPVOID lpBuffer, + DWORD nBufferLength, + BOOL bWatchSubtree, + DWORD dwNotifyFilter, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL VirtualLock( + LPVOID lpAddress, + SIZE_T dwSize); + +extern(Windows) export BOOL VirtualUnlock( + LPVOID lpAddress, + SIZE_T dwSize); + +extern(Windows) export LPVOID MapViewOfFileEx( + HANDLE hFileMappingObject, + DWORD dwDesiredAccess, + DWORD dwFileOffsetHigh, + DWORD dwFileOffsetLow, + SIZE_T dwNumberOfBytesToMap, + LPVOID lpBaseAddress); + +extern(Windows) export BOOL SetPriorityClass( + HANDLE hProcess, + DWORD dwPriorityClass); + +extern(Windows) export DWORD GetPriorityClass( + HANDLE hProcess); + +extern(Windows) export BOOL IsBadReadPtr( + VOID *lp, + UINT_PTR ucb); + +extern(Windows) export BOOL IsBadWritePtr( + LPVOID lp, + UINT_PTR ucb); + +extern(Windows) export BOOL IsBadHugeReadPtr( + VOID *lp, + UINT_PTR ucb); + +extern(Windows) export BOOL IsBadHugeWritePtr( + LPVOID lp, + UINT_PTR ucb); + +extern(Windows) export BOOL IsBadCodePtr( + FARPROC lpfn); + +extern(Windows) export BOOL IsBadStringPtrA( + LPCSTR lpsz, + UINT_PTR ucchMax); +extern(Windows) export BOOL IsBadStringPtrW( + LPCWSTR lpsz, + UINT_PTR ucchMax); +// #ifdef UNICODE +alias IsBadStringPtrW IsBadStringPtr; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL LookupAccountSidA( + LPCSTR lpSystemName, + PSID Sid, + LPSTR Name, + LPDWORD cbName, + LPSTR ReferencedDomainName, + LPDWORD cbReferencedDomainName, + PSID_NAME_USE peUse); +extern(Windows) export BOOL LookupAccountSidW( + LPCWSTR lpSystemName, + PSID Sid, + LPWSTR Name, + LPDWORD cbName, + LPWSTR ReferencedDomainName, + LPDWORD cbReferencedDomainName, + PSID_NAME_USE peUse); +// #ifdef UNICODE +alias LookupAccountSidW LookupAccountSid; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL LookupAccountNameA( + LPCSTR lpSystemName, + LPCSTR lpAccountName, + PSID Sid, + LPDWORD cbSid, + LPSTR ReferencedDomainName, + LPDWORD cbReferencedDomainName, + PSID_NAME_USE peUse); +extern(Windows) export BOOL LookupAccountNameW( + LPCWSTR lpSystemName, + LPCWSTR lpAccountName, + PSID Sid, + LPDWORD cbSid, + LPWSTR ReferencedDomainName, + LPDWORD cbReferencedDomainName, + PSID_NAME_USE peUse); +// #ifdef UNICODE +alias LookupAccountNameW LookupAccountName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL LookupPrivilegeValueA( + LPCSTR lpSystemName, + LPCSTR lpName, + PLUID lpLuid); +extern(Windows) export BOOL LookupPrivilegeValueW( + LPCWSTR lpSystemName, + LPCWSTR lpName, + PLUID lpLuid); +// #ifdef UNICODE +alias LookupPrivilegeValueW LookupPrivilegeValue; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL LookupPrivilegeNameA( + LPCSTR lpSystemName, + PLUID lpLuid, + LPSTR lpName, + LPDWORD cbName); +extern(Windows) export BOOL LookupPrivilegeNameW( + LPCWSTR lpSystemName, + PLUID lpLuid, + LPWSTR lpName, + LPDWORD cbName); +// #ifdef UNICODE +alias LookupPrivilegeNameW LookupPrivilegeName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL LookupPrivilegeDisplayNameA( + LPCSTR lpSystemName, + LPCSTR lpName, + LPSTR lpDisplayName, + LPDWORD cbDisplayName, + LPDWORD lpLanguageId); +extern(Windows) export BOOL LookupPrivilegeDisplayNameW( + LPCWSTR lpSystemName, + LPCWSTR lpName, + LPWSTR lpDisplayName, + LPDWORD cbDisplayName, + LPDWORD lpLanguageId); +// #ifdef UNICODE +alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AllocateLocallyUniqueId( + PLUID Luid); + +extern(Windows) export BOOL BuildCommDCBA( + LPCSTR lpDef, + LPDCB lpDCB); +extern(Windows) export BOOL BuildCommDCBW( + LPCWSTR lpDef, + LPDCB lpDCB); +// #ifdef UNICODE +alias BuildCommDCBW BuildCommDCB; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL BuildCommDCBAndTimeoutsA( + LPCSTR lpDef, + LPDCB lpDCB, + LPCOMMTIMEOUTS lpCommTimeouts); +extern(Windows) export BOOL BuildCommDCBAndTimeoutsW( + LPCWSTR lpDef, + LPDCB lpDCB, + LPCOMMTIMEOUTS lpCommTimeouts); +// #ifdef UNICODE +alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CommConfigDialogA( + LPCSTR lpszName, + HWND hWnd, + LPCOMMCONFIG lpCC); +extern(Windows) export BOOL CommConfigDialogW( + LPCWSTR lpszName, + HWND hWnd, + LPCOMMCONFIG lpCC); +// #ifdef UNICODE +alias CommConfigDialogW CommConfigDialog; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetDefaultCommConfigA( + LPCSTR lpszName, + LPCOMMCONFIG lpCC, + LPDWORD lpdwSize); +extern(Windows) export BOOL GetDefaultCommConfigW( + LPCWSTR lpszName, + LPCOMMCONFIG lpCC, + LPDWORD lpdwSize); +// #ifdef UNICODE +alias GetDefaultCommConfigW GetDefaultCommConfig; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetDefaultCommConfigA( + LPCSTR lpszName, + LPCOMMCONFIG lpCC, + DWORD dwSize); +extern(Windows) export BOOL SetDefaultCommConfigW( + LPCWSTR lpszName, + LPCOMMCONFIG lpCC, + DWORD dwSize); +// #ifdef UNICODE +alias SetDefaultCommConfigW SetDefaultCommConfig; +// #else +// #... +// #endif // !UNICODE + +// #ifndef _MAC +enum : uint { MAX_COMPUTERNAME_LENGTH = 15 } +// #else +// #... +// #endif + +extern(Windows) export BOOL GetComputerNameA( + LPSTR lpBuffer, + LPDWORD nSize); +extern(Windows) export BOOL GetComputerNameW( + LPWSTR lpBuffer, + LPDWORD nSize); +// #ifdef UNICODE +alias GetComputerNameW GetComputerName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetComputerNameA( + LPCSTR lpComputerName); +extern(Windows) export BOOL SetComputerNameW( + LPCWSTR lpComputerName); +// #ifdef UNICODE +alias SetComputerNameW SetComputerName; +// #else +// #... +// #endif // !UNICODE + +// #if (_WIN32_WINNT >= 0x0500) + +alias int _COMPUTER_NAME_FORMAT; +enum { + ComputerNameNetBIOS, + ComputerNameDnsHostname, + ComputerNameDnsDomain, + ComputerNameDnsFullyQualified, + ComputerNamePhysicalNetBIOS, + ComputerNamePhysicalDnsHostname, + ComputerNamePhysicalDnsDomain, + ComputerNamePhysicalDnsFullyQualified, + ComputerNameMax, +} +alias _COMPUTER_NAME_FORMAT COMPUTER_NAME_FORMAT; + +extern(Windows) export BOOL GetComputerNameExA( + COMPUTER_NAME_FORMAT NameType, + LPSTR lpBuffer, + LPDWORD nSize); +extern(Windows) export BOOL GetComputerNameExW( + COMPUTER_NAME_FORMAT NameType, + LPWSTR lpBuffer, + LPDWORD nSize); +// #ifdef UNICODE +alias GetComputerNameExW GetComputerNameEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetComputerNameExA( + COMPUTER_NAME_FORMAT NameType, + LPCSTR lpBuffer); +extern(Windows) export BOOL SetComputerNameExW( + COMPUTER_NAME_FORMAT NameType, + LPCWSTR lpBuffer); +// #ifdef UNICODE +alias SetComputerNameExW SetComputerNameEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD AddLocalAlternateComputerNameA( + LPCSTR lpDnsFQHostname, + ULONG ulFlags); +extern(Windows) export DWORD AddLocalAlternateComputerNameW( + LPCWSTR lpDnsFQHostname, + ULONG ulFlags); +// #ifdef UNICODE +alias AddLocalAlternateComputerNameW AddLocalAlternateComputerName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD RemoveLocalAlternateComputerNameA( + LPCSTR lpAltDnsFQHostname, + ULONG ulFlags); +extern(Windows) export DWORD RemoveLocalAlternateComputerNameW( + LPCWSTR lpAltDnsFQHostname, + ULONG ulFlags); +// #ifdef UNICODE +alias RemoveLocalAlternateComputerNameW RemoveLocalAlternateComputerName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD SetLocalPrimaryComputerNameA( + LPCSTR lpAltDnsFQHostname, + ULONG ulFlags); +extern(Windows) export DWORD SetLocalPrimaryComputerNameW( + LPCWSTR lpAltDnsFQHostname, + ULONG ulFlags); +// #ifdef UNICODE +alias SetLocalPrimaryComputerNameW SetLocalPrimaryComputerName; +// #else +// #... +// #endif // !UNICODE + +alias int _COMPUTER_NAME_TYPE; +enum { + PrimaryComputerName, + AlternateComputerNames, + AllComputerNames, + ComputerNameTypeMax, +} +alias _COMPUTER_NAME_TYPE COMPUTER_NAME_TYPE; + +extern(Windows) export DWORD EnumerateLocalComputerNamesA( + COMPUTER_NAME_TYPE NameType, + ULONG ulFlags, + LPSTR lpDnsFQHostname, + LPDWORD nSize); +extern(Windows) export DWORD EnumerateLocalComputerNamesW( + COMPUTER_NAME_TYPE NameType, + ULONG ulFlags, + LPWSTR lpDnsFQHostname, + LPDWORD nSize); +// #ifdef UNICODE +alias EnumerateLocalComputerNamesW EnumerateLocalComputerNames; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DnsHostnameToComputerNameA( + LPCSTR Hostname, + LPSTR ComputerName, + LPDWORD nSize); +extern(Windows) export BOOL DnsHostnameToComputerNameW( + LPCWSTR Hostname, + LPWSTR ComputerName, + LPDWORD nSize); +// #ifdef UNICODE +alias DnsHostnameToComputerNameW DnsHostnameToComputerName; +// #else +// #... +// #endif // !UNICODE + +// #endif // _WIN32_WINNT + +extern(Windows) export BOOL GetUserNameA( + LPSTR lpBuffer, + LPDWORD nSize); +extern(Windows) export BOOL GetUserNameW( + LPWSTR lpBuffer, + LPDWORD nSize); +// #ifdef UNICODE +alias GetUserNameW GetUserName; +// #else +// #... +// #endif // !UNICODE + +enum : uint { LOGON32_LOGON_INTERACTIVE = 2 } +enum : uint { LOGON32_LOGON_NETWORK = 3 } +enum : uint { LOGON32_LOGON_BATCH = 4 } +enum : uint { LOGON32_LOGON_SERVICE = 5 } +enum : uint { LOGON32_LOGON_UNLOCK = 7 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { LOGON32_LOGON_NETWORK_CLEARTEXT = 8 } +enum : uint { LOGON32_LOGON_NEW_CREDENTIALS = 9 } +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { LOGON32_PROVIDER_DEFAULT = 0 } +enum : uint { LOGON32_PROVIDER_WINNT35 = 1 } +// #if(_WIN32_WINNT >= 0x0400) +enum : uint { LOGON32_PROVIDER_WINNT40 = 2 } +// #endif /* _WIN32_WINNT >= 0x0400 */ +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { LOGON32_PROVIDER_WINNT50 = 3 } +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL LogonUserA( + LPSTR lpszUsername, + LPSTR lpszDomain, + LPSTR lpszPassword, + DWORD dwLogonType, + DWORD dwLogonProvider, + PHANDLE phToken); +extern(Windows) export BOOL LogonUserW( + LPWSTR lpszUsername, + LPWSTR lpszDomain, + LPWSTR lpszPassword, + DWORD dwLogonType, + DWORD dwLogonProvider, + PHANDLE phToken); +// #ifdef UNICODE +alias LogonUserW LogonUser; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL LogonUserExA( + LPSTR lpszUsername, + LPSTR lpszDomain, + LPSTR lpszPassword, + DWORD dwLogonType, + DWORD dwLogonProvider, + PHANDLE phToken , + PSID *ppLogonSid , + PVOID *ppProfileBuffer , + LPDWORD pdwProfileLength , + PQUOTA_LIMITS pQuotaLimits ); +extern(Windows) export BOOL LogonUserExW( + LPWSTR lpszUsername, + LPWSTR lpszDomain, + LPWSTR lpszPassword, + DWORD dwLogonType, + DWORD dwLogonProvider, + PHANDLE phToken , + PSID *ppLogonSid , + PVOID *ppProfileBuffer , + LPDWORD pdwProfileLength , + PQUOTA_LIMITS pQuotaLimits ); +// #ifdef UNICODE +alias LogonUserExW LogonUserEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ImpersonateLoggedOnUser( + HANDLE hToken); + +extern(Windows) export BOOL CreateProcessAsUserA( + HANDLE hToken, + LPCSTR lpApplicationName, + LPSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCSTR lpCurrentDirectory, + LPSTARTUPINFOA lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); +extern(Windows) export BOOL CreateProcessAsUserW( + HANDLE hToken, + LPCWSTR lpApplicationName, + LPWSTR lpCommandLine, + LPSECURITY_ATTRIBUTES lpProcessAttributes, + LPSECURITY_ATTRIBUTES lpThreadAttributes, + BOOL bInheritHandles, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCWSTR lpCurrentDirectory, + LPSTARTUPINFOW lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); +// #ifdef UNICODE +alias CreateProcessAsUserW CreateProcessAsUser; +// #else +// #... +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0500) + +enum : uint { LOGON_WITH_PROFILE = 0x00000001 } +enum : uint { LOGON_NETCREDENTIALS_ONLY = 0x00000002 } + +extern(Windows) export BOOL CreateProcessWithLogonW( + LPCWSTR lpUsername, + LPCWSTR lpDomain, + LPCWSTR lpPassword, + DWORD dwLogonFlags, + LPCWSTR lpApplicationName, + LPWSTR lpCommandLine, + DWORD dwCreationFlags, + LPVOID lpEnvironment, + LPCWSTR lpCurrentDirectory, + LPSTARTUPINFOW lpStartupInfo, + LPPROCESS_INFORMATION lpProcessInformation); + +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL ImpersonateAnonymousToken( + HANDLE ThreadHandle); + +extern(Windows) export BOOL DuplicateTokenEx( + HANDLE hExistingToken, + DWORD dwDesiredAccess, + LPSECURITY_ATTRIBUTES lpTokenAttributes, + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, + TOKEN_TYPE TokenType, + PHANDLE phNewToken); + +extern(Windows) export BOOL CreateRestrictedToken( + HANDLE ExistingTokenHandle, + DWORD Flags, + DWORD DisableSidCount, + PSID_AND_ATTRIBUTES SidsToDisable , + DWORD DeletePrivilegeCount, + PLUID_AND_ATTRIBUTES PrivilegesToDelete , + DWORD RestrictedSidCount, + PSID_AND_ATTRIBUTES SidsToRestrict , + PHANDLE NewTokenHandle); + +extern(Windows) export BOOL IsTokenRestricted( + HANDLE TokenHandle); + +extern(Windows) export BOOL IsTokenUntrusted( + HANDLE TokenHandle); + +extern(Windows) export BOOL CheckTokenMembership( + HANDLE TokenHandle , + PSID SidToCheck, + PBOOL IsMember); + +// #if (_WIN32_WINNT >= 0x0500) + +alias WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK; + +extern(Windows) export BOOL RegisterWaitForSingleObject( + PHANDLE phNewWaitObject, + HANDLE hObject, + WAITORTIMERCALLBACK Callback, + PVOID Context, + ULONG dwMilliseconds, + ULONG dwFlags); + +extern(Windows) export HANDLE RegisterWaitForSingleObjectEx( + HANDLE hObject, + WAITORTIMERCALLBACK Callback, + PVOID Context, + ULONG dwMilliseconds, + ULONG dwFlags); + +extern(Windows) export BOOL UnregisterWait( + HANDLE WaitHandle); + +extern(Windows) export BOOL UnregisterWaitEx( + HANDLE WaitHandle, + HANDLE CompletionEvent); + +extern(Windows) export BOOL QueueUserWorkItem( + LPTHREAD_START_ROUTINE Function, + PVOID Context, + ULONG Flags); + +extern(Windows) export BOOL BindIoCompletionCallback( + HANDLE FileHandle, + LPOVERLAPPED_COMPLETION_ROUTINE Function, + ULONG Flags); + +extern(Windows) export HANDLE CreateTimerQueue(); + +extern(Windows) export BOOL CreateTimerQueueTimer( + PHANDLE phNewTimer, + HANDLE TimerQueue, + WAITORTIMERCALLBACK Callback, + PVOID Parameter, + DWORD DueTime, + DWORD Period, + ULONG Flags); + +extern(Windows) export BOOL ChangeTimerQueueTimer( + HANDLE TimerQueue, + HANDLE Timer, + ULONG DueTime, + ULONG Period); + +extern(Windows) export BOOL DeleteTimerQueueTimer( + HANDLE TimerQueue, + HANDLE Timer, + HANDLE CompletionEvent); + +extern(Windows) export BOOL DeleteTimerQueueEx( + HANDLE TimerQueue, + HANDLE CompletionEvent); + +extern(Windows) export HANDLE SetTimerQueueTimer( + HANDLE TimerQueue, + WAITORTIMERCALLBACK Callback, + PVOID Parameter, + DWORD DueTime, + DWORD Period, + BOOL PreferIo); + +extern(Windows) export BOOL CancelTimerQueueTimer( + HANDLE TimerQueue, + HANDLE Timer); + +extern(Windows) export BOOL DeleteTimerQueue( + HANDLE TimerQueue); + +// #endif // _WIN32_WINNT + +// #if(_WIN32_WINNT >= 0x0400) + +enum : uint { HW_PROFILE_GUIDLEN = 39 } +enum : uint { MAX_PROFILE_LEN = 80 } + +enum : uint { DOCKINFO_UNDOCKED = 0x1 } +enum : uint { DOCKINFO_DOCKED = 0x2 } +enum : uint { DOCKINFO_USER_SUPPLIED = 0x4 } +enum : uint { DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED } +enum : uint { DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED } + +struct tagHW_PROFILE_INFOA { + DWORD dwDockInfo; + CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]; + CHAR szHwProfileName[MAX_PROFILE_LEN]; +} +alias tagHW_PROFILE_INFOA HW_PROFILE_INFOA; +alias tagHW_PROFILE_INFOA* LPHW_PROFILE_INFOA; + +struct tagHW_PROFILE_INFOW { + DWORD dwDockInfo; + WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]; + WCHAR szHwProfileName[MAX_PROFILE_LEN]; +} +alias tagHW_PROFILE_INFOW HW_PROFILE_INFOW; +alias tagHW_PROFILE_INFOW* LPHW_PROFILE_INFOW; + +// #ifdef UNICODE +alias HW_PROFILE_INFOW HW_PROFILE_INFO; +alias LPHW_PROFILE_INFOW LPHW_PROFILE_INFO; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export BOOL GetCurrentHwProfileA( + LPHW_PROFILE_INFOA lpHwProfileInfo); +extern(Windows) export BOOL GetCurrentHwProfileW( + LPHW_PROFILE_INFOW lpHwProfileInfo); +// #ifdef UNICODE +alias GetCurrentHwProfileW GetCurrentHwProfile; +// #else +// #... +// #endif // !UNICODE +// #endif /* _WIN32_WINNT >= 0x0400 */ + +extern(Windows) export BOOL QueryPerformanceCounter( + LARGE_INTEGER *lpPerformanceCount); + +extern(Windows) export BOOL QueryPerformanceFrequency( + LARGE_INTEGER *lpFrequency); + +extern(Windows) export BOOL GetVersionExA( + LPOSVERSIONINFOA lpVersionInformation); +extern(Windows) export BOOL GetVersionExW( + LPOSVERSIONINFOW lpVersionInformation); +// #ifdef UNICODE +alias GetVersionExW GetVersionEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL VerifyVersionInfoA( + LPOSVERSIONINFOEXA lpVersionInformation, + DWORD dwTypeMask, + DWORDLONG dwlConditionMask); +extern(Windows) export BOOL VerifyVersionInfoW( + LPOSVERSIONINFOEXW lpVersionInformation, + DWORD dwTypeMask, + DWORDLONG dwlConditionMask); +// #ifdef UNICODE +alias VerifyVersionInfoW VerifyVersionInfo; +// #else +// #... +// #endif // !UNICODE + +import win32.winerror; + +enum : uint { TC_NORMAL = 0 } +enum : uint { TC_HARDERR = 1 } +enum : uint { TC_GP_TRAP = 2 } +enum : uint { TC_SIGNAL = 3 } + +// #if(WINVER >= 0x0400) + +enum : uint { AC_LINE_OFFLINE = 0x00 } +enum : uint { AC_LINE_ONLINE = 0x01 } +enum : uint { AC_LINE_BACKUP_POWER = 0x02 } +enum : uint { AC_LINE_UNKNOWN = 0xFF } + +enum : uint { BATTERY_FLAG_HIGH = 0x01 } +enum : uint { BATTERY_FLAG_LOW = 0x02 } +enum : uint { BATTERY_FLAG_CRITICAL = 0x04 } +enum : uint { BATTERY_FLAG_CHARGING = 0x08 } +enum : uint { BATTERY_FLAG_NO_BATTERY = 0x80 } +enum : uint { BATTERY_FLAG_UNKNOWN = 0xFF } + +enum : uint { BATTERY_PERCENTAGE_UNKNOWN = 0xFF } + +enum : uint { BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF } + +struct _SYSTEM_POWER_STATUS { + BYTE ACLineStatus; + BYTE BatteryFlag; + BYTE BatteryLifePercent; + BYTE Reserved1; + DWORD BatteryLifeTime; + DWORD BatteryFullLifeTime; +} +alias _SYSTEM_POWER_STATUS SYSTEM_POWER_STATUS; +alias _SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; + +extern(Windows) export BOOL GetSystemPowerStatus( + LPSYSTEM_POWER_STATUS lpSystemPowerStatus); + +extern(Windows) export BOOL SetSystemPowerState( + BOOL fSuspend, + BOOL fForce); + +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL AllocateUserPhysicalPages( + HANDLE hProcess, + PULONG_PTR NumberOfPages, + PULONG_PTR PageArray); + +extern(Windows) export BOOL FreeUserPhysicalPages( + HANDLE hProcess, + PULONG_PTR NumberOfPages, + PULONG_PTR PageArray); + +extern(Windows) export BOOL MapUserPhysicalPages( + PVOID VirtualAddress, + ULONG_PTR NumberOfPages, + PULONG_PTR PageArray ); + +extern(Windows) export BOOL MapUserPhysicalPagesScatter( + PVOID *VirtualAddresses, + ULONG_PTR NumberOfPages, + PULONG_PTR PageArray ); + +extern(Windows) export HANDLE CreateJobObjectA( + LPSECURITY_ATTRIBUTES lpJobAttributes, + LPCSTR lpName); +extern(Windows) export HANDLE CreateJobObjectW( + LPSECURITY_ATTRIBUTES lpJobAttributes, + LPCWSTR lpName); +// #ifdef UNICODE +alias CreateJobObjectW CreateJobObject; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE OpenJobObjectA( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCSTR lpName); +extern(Windows) export HANDLE OpenJobObjectW( + DWORD dwDesiredAccess, + BOOL bInheritHandle, + LPCWSTR lpName); +// #ifdef UNICODE +alias OpenJobObjectW OpenJobObject; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AssignProcessToJobObject( + HANDLE hJob, + HANDLE hProcess); + +extern(Windows) export BOOL TerminateJobObject( + HANDLE hJob, + UINT uExitCode); + +extern(Windows) export BOOL QueryInformationJobObject( + HANDLE hJob, + JOBOBJECTINFOCLASS JobObjectInformationClass, + LPVOID lpJobObjectInformation, + DWORD cbJobObjectInformationLength, + LPDWORD lpReturnLength); + +extern(Windows) export BOOL SetInformationJobObject( + HANDLE hJob, + JOBOBJECTINFOCLASS JobObjectInformationClass, + LPVOID lpJobObjectInformation, + DWORD cbJobObjectInformationLength); + +extern(Windows) export BOOL IsProcessInJob( + HANDLE ProcessHandle, + HANDLE JobHandle, + PBOOL Result); + +extern(Windows) export BOOL CreateJobSet( + ULONG NumJob, + PJOB_SET_ARRAY UserJobSet, + ULONG Flags); + +extern(Windows) export PVOID AddVectoredExceptionHandler( + ULONG FirstHandler, + PVECTORED_EXCEPTION_HANDLER VectoredHandler); + +extern(Windows) export ULONG RemoveVectoredExceptionHandler( + PVOID VectoredHandlerHandle); + +extern(Windows) export HANDLE FindFirstVolumeA( + LPSTR lpszVolumeName, + DWORD cchBufferLength); +extern(Windows) export HANDLE FindFirstVolumeW( + LPWSTR lpszVolumeName, + DWORD cchBufferLength); +// #ifdef UNICODE +alias FindFirstVolumeW FindFirstVolume; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FindNextVolumeA( + HANDLE hFindVolume, + LPSTR lpszVolumeName, + DWORD cchBufferLength); +extern(Windows) export BOOL FindNextVolumeW( + HANDLE hFindVolume, + LPWSTR lpszVolumeName, + DWORD cchBufferLength); +// #ifdef UNICODE +alias FindNextVolumeW FindNextVolume; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FindVolumeClose( + HANDLE hFindVolume); + +extern(Windows) export HANDLE FindFirstVolumeMountPointA( + LPCSTR lpszRootPathName, + LPSTR lpszVolumeMountPoint, + DWORD cchBufferLength); +extern(Windows) export HANDLE FindFirstVolumeMountPointW( + LPCWSTR lpszRootPathName, + LPWSTR lpszVolumeMountPoint, + DWORD cchBufferLength); +// #ifdef UNICODE +alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FindNextVolumeMountPointA( + HANDLE hFindVolumeMountPoint, + LPSTR lpszVolumeMountPoint, + DWORD cchBufferLength); +extern(Windows) export BOOL FindNextVolumeMountPointW( + HANDLE hFindVolumeMountPoint, + LPWSTR lpszVolumeMountPoint, + DWORD cchBufferLength); +// #ifdef UNICODE +alias FindNextVolumeMountPointW FindNextVolumeMountPoint; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FindVolumeMountPointClose( + HANDLE hFindVolumeMountPoint); + +extern(Windows) export BOOL SetVolumeMountPointA( + LPCSTR lpszVolumeMountPoint, + LPCSTR lpszVolumeName); +extern(Windows) export BOOL SetVolumeMountPointW( + LPCWSTR lpszVolumeMountPoint, + LPCWSTR lpszVolumeName); +// #ifdef UNICODE +alias SetVolumeMountPointW SetVolumeMountPoint; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeleteVolumeMountPointA( + LPCSTR lpszVolumeMountPoint); +extern(Windows) export BOOL DeleteVolumeMountPointW( + LPCWSTR lpszVolumeMountPoint); +// #ifdef UNICODE +alias DeleteVolumeMountPointW DeleteVolumeMountPoint; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetVolumeNameForVolumeMountPointA( + LPCSTR lpszVolumeMountPoint, + LPSTR lpszVolumeName, + DWORD cchBufferLength); +extern(Windows) export BOOL GetVolumeNameForVolumeMountPointW( + LPCWSTR lpszVolumeMountPoint, + LPWSTR lpszVolumeName, + DWORD cchBufferLength); +// #ifdef UNICODE +alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetVolumePathNameA( + LPCSTR lpszFileName, + LPSTR lpszVolumePathName, + DWORD cchBufferLength); +extern(Windows) export BOOL GetVolumePathNameW( + LPCWSTR lpszFileName, + LPWSTR lpszVolumePathName, + DWORD cchBufferLength); +// #ifdef UNICODE +alias GetVolumePathNameW GetVolumePathName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetVolumePathNamesForVolumeNameA( + LPCSTR lpszVolumeName, + LPSTR lpszVolumePathNames, + DWORD cchBufferLength, + PDWORD lpcchReturnLength); +extern(Windows) export BOOL GetVolumePathNamesForVolumeNameW( + LPCWSTR lpszVolumeName, + LPWSTR lpszVolumePathNames, + DWORD cchBufferLength, + PDWORD lpcchReturnLength); +// #ifdef UNICODE +alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; +// #else +// #... +// #endif // !UNICODE + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED + +enum : uint { ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x00000001 } +enum : uint { ACTCTX_FLAG_LANGID_VALID = 0x00000002 } +enum : uint { ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x00000004 } +enum : uint { ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x00000008 } +enum : uint { ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x00000010 } +enum : uint { ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x00000020 } +enum : uint { ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF = 0x00000040 } +enum : uint { ACTCTX_FLAG_HMODULE_VALID = 0x00000080 } + +struct tagACTCTXA { + ULONG cbSize; + DWORD dwFlags; + LPCSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCSTR lpAssemblyDirectory; + LPCSTR lpResourceName; + LPCSTR lpApplicationName; + HMODULE hModule; +} +alias tagACTCTXA ACTCTXA; +alias tagACTCTXA* PACTCTXA; + +struct tagACTCTXW { + ULONG cbSize; + DWORD dwFlags; + LPCWSTR lpSource; + USHORT wProcessorArchitecture; + LANGID wLangId; + LPCWSTR lpAssemblyDirectory; + LPCWSTR lpResourceName; + LPCWSTR lpApplicationName; + HMODULE hModule; +} +alias tagACTCTXW ACTCTXW; +alias tagACTCTXW* PACTCTXW; + +// #ifdef UNICODE +// skip typedef ACTCTXW ACTCTX; +alias PACTCTXW PACTCTX; +// #else +// ... +// #endif // UNICODE + +alias ACTCTXA* PCACTCTXA; +alias ACTCTXW* PCACTCTXW; +// #ifdef UNICODE +// skip typedef ACTCTXW ACTCTX; +alias PCACTCTXW PCACTCTX; +// #else +// ... +// #endif // UNICODE + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) + +extern(Windows) export HANDLE CreateActCtxA( + PCACTCTXA pActCtx); +extern(Windows) export HANDLE CreateActCtxW( + PCACTCTXW pActCtx); +// #ifdef UNICODE +alias CreateActCtxW CreateActCtx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export VOID AddRefActCtx( + HANDLE hActCtx); + +extern(Windows) export VOID ReleaseActCtx( + HANDLE hActCtx); + +extern(Windows) export BOOL ZombifyActCtx( + HANDLE hActCtx); + +extern(Windows) export BOOL ActivateActCtx( + HANDLE hActCtx, + ULONG_PTR *lpCookie); + +enum : uint { DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 0x00000001 } + +extern(Windows) export BOOL DeactivateActCtx( + DWORD dwFlags, + ULONG_PTR ulCookie); + +extern(Windows) export BOOL GetCurrentActCtx( + HANDLE *lphActCtx); + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED + +struct tagACTCTX_SECTION_KEYED_DATA { + ULONG cbSize; + ULONG ulDataFormatVersion; + PVOID lpData; + ULONG ulLength; + PVOID lpSectionGlobalData; + ULONG ulSectionGlobalDataLength; + PVOID lpSectionBase; + ULONG ulSectionTotalLength; + HANDLE hActCtx; + ULONG ulAssemblyRosterIndex; +} +alias tagACTCTX_SECTION_KEYED_DATA ACTCTX_SECTION_KEYED_DATA; +alias tagACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; + +enum : uint { FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 0x00000001 } + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) + +extern(Windows) export BOOL FindActCtxSectionStringA( + DWORD dwFlags, + GUID *lpExtensionGuid, + ULONG ulSectionId, + LPCSTR lpStringToFind, + PACTCTX_SECTION_KEYED_DATA ReturnedData); +extern(Windows) export BOOL FindActCtxSectionStringW( + DWORD dwFlags, + GUID *lpExtensionGuid, + ULONG ulSectionId, + LPCWSTR lpStringToFind, + PACTCTX_SECTION_KEYED_DATA ReturnedData); +// #ifdef UNICODE +alias FindActCtxSectionStringW FindActCtxSectionString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FindActCtxSectionGuid( + DWORD dwFlags, + GUID *lpExtensionGuid, + ULONG ulSectionId, + GUID *lpGuidToFind, + PACTCTX_SECTION_KEYED_DATA ReturnedData); + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if !defined(ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED) + +// ... + +// ... + +// #... + +// #endif // !defined(ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED) +// #endif + +enum : uint { QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x00000004 } +enum : uint { QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x00000008 } +enum : uint { QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x00000010 } +enum : uint { QUERY_ACTCTX_FLAG_NO_ADDREF = 0x80000000 } + +// #endif + +// #if (_WIN32_WINNT >= 0x0500) || (_WIN32_FUSION >= 0x0100) + +extern(Windows) export BOOL QueryActCtxW( + DWORD dwFlags, + HANDLE hActCtx, + PVOID pvSubInstance, + ULONG ulInfoClass, + PVOID pvBuffer, + SIZE_T cbBuffer , + SIZE_T *pcbWrittenOrRequired ); + +extern(Windows) alias BOOL function( DWORD dwFlags, HANDLE hActCtx, PVOID pvSubInstance, ULONG ulInfoClass, PVOID pvBuffer, SIZE_T cbBuffer , SIZE_T *pcbWrittenOrRequired ) PQUERYACTCTXW_FUNC; + +// #endif // (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) + +extern(Windows) export BOOL ProcessIdToSessionId( + DWORD dwProcessId, + DWORD *pSessionId); + +// #if _WIN32_WINNT >= 0x0501 + +extern(Windows) export DWORD WTSGetActiveConsoleSessionId(); + +extern(Windows) export BOOL IsWow64Process( + HANDLE hProcess, + PBOOL Wow64Process); + +// #endif // (_WIN32_WINNT >= 0x0501) + +extern(Windows) export BOOL GetNumaHighestNodeNumber( + PULONG HighestNodeNumber); + +extern(Windows) export BOOL GetNumaProcessorNode( + UCHAR Processor, + PUCHAR NodeNumber); + +extern(Windows) export BOOL GetNumaNodeProcessorMask( + UCHAR Node, + PULONGLONG ProcessorMask); + +extern(Windows) export BOOL GetNumaProcessorMap( + PSYSTEM_NUMA_INFORMATION Map, + ULONG Length, + PULONG ReturnedLength); + +extern(Windows) export BOOL GetNumaAvailableMemory( + PSYSTEM_NUMA_INFORMATION Memory, + ULONG Length, + PULONG ReturnedLength); + +extern(Windows) export BOOL GetNumaAvailableMemoryNode( + UCHAR Node, + PULONGLONG AvailableBytes); + +extern(Windows) export ULONGLONG NumaVirtualQueryNode( + ULONG NumberOfRanges, + PULONG_PTR RangeList, + PULONG_PTR VirtualPageAndNode, + SIZE_T MaximumOutputLength); + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED +// #... +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINBASE_ + ADDED src/win32/wincon.d Index: src/win32/wincon.d ================================================================== --- src/win32/wincon.d +++ src/win32/wincon.d @@ -0,0 +1,625 @@ +module win32.wincon; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.windef; +import win32.winbase; + +// #ifndef _WINCON_ +// #define _WINCON_ + +// #ifdef __cplusplus +// extern "C" { +// #endif + +struct _COORD { + SHORT X; + SHORT Y; +} +alias _COORD COORD; +alias _COORD* PCOORD; + +struct _SMALL_RECT { + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; +} +alias _SMALL_RECT SMALL_RECT; +alias _SMALL_RECT* PSMALL_RECT; + +struct _KEY_EVENT_RECORD { + BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; +union { + WCHAR UnicodeChar; + CHAR AsciiChar; +} + + DWORD dwControlKeyState; +} +alias _KEY_EVENT_RECORD KEY_EVENT_RECORD; +alias _KEY_EVENT_RECORD* PKEY_EVENT_RECORD; + +enum : uint { RIGHT_ALT_PRESSED = 0x0001 } +enum : uint { LEFT_ALT_PRESSED = 0x0002 } +enum : uint { RIGHT_CTRL_PRESSED = 0x0004 } +enum : uint { LEFT_CTRL_PRESSED = 0x0008 } +enum : uint { SHIFT_PRESSED = 0x0010 } +enum : uint { NUMLOCK_ON = 0x0020 } +enum : uint { SCROLLLOCK_ON = 0x0040 } +enum : uint { CAPSLOCK_ON = 0x0080 } +enum : uint { ENHANCED_KEY = 0x0100 } +enum : uint { NLS_DBCSCHAR = 0x00010000 } +enum : uint { NLS_ALPHANUMERIC = 0x00000000 } +enum : uint { NLS_KATAKANA = 0x00020000 } +enum : uint { NLS_HIRAGANA = 0x00040000 } +enum : uint { NLS_ROMAN = 0x00400000 } +enum : uint { NLS_IME_CONVERSION = 0x00800000 } +enum : uint { NLS_IME_DISABLE = 0x20000000 } + +struct _MOUSE_EVENT_RECORD { + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} +alias _MOUSE_EVENT_RECORD MOUSE_EVENT_RECORD; +alias _MOUSE_EVENT_RECORD* PMOUSE_EVENT_RECORD; + +enum : uint { FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001 } +enum : uint { RIGHTMOST_BUTTON_PRESSED = 0x0002 } +enum : uint { FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004 } +enum : uint { FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008 } +enum : uint { FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010 } + +enum : uint { MOUSE_MOVED = 0x0001 } +enum : uint { DOUBLE_CLICK = 0x0002 } +enum : uint { MOUSE_WHEELED = 0x0004 } + +struct _WINDOW_BUFFER_SIZE_RECORD { + COORD dwSize; +} +alias _WINDOW_BUFFER_SIZE_RECORD WINDOW_BUFFER_SIZE_RECORD; +alias _WINDOW_BUFFER_SIZE_RECORD* PWINDOW_BUFFER_SIZE_RECORD; + +struct _MENU_EVENT_RECORD { + UINT dwCommandId; +} +alias _MENU_EVENT_RECORD MENU_EVENT_RECORD; +alias _MENU_EVENT_RECORD* PMENU_EVENT_RECORD; + +struct _FOCUS_EVENT_RECORD { + BOOL bSetFocus; +} +alias _FOCUS_EVENT_RECORD FOCUS_EVENT_RECORD; +alias _FOCUS_EVENT_RECORD* PFOCUS_EVENT_RECORD; + +struct _INPUT_RECORD { + WORD EventType; +union { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; +} + +} +alias _INPUT_RECORD INPUT_RECORD; +alias _INPUT_RECORD* PINPUT_RECORD; + +enum : uint { KEY_EVENT = 0x0001 } +enum : uint { MOUSE_EVENT = 0x0002 } +enum : uint { WINDOW_BUFFER_SIZE_EVENT = 0x0004 } +enum : uint { MENU_EVENT = 0x0008 } +enum : uint { FOCUS_EVENT = 0x0010 } + +struct _CHAR_INFO { +union { + WCHAR UnicodeChar; + CHAR AsciiChar; +} + + WORD Attributes; +} +alias _CHAR_INFO CHAR_INFO; +alias _CHAR_INFO* PCHAR_INFO; + +enum : uint { FOREGROUND_BLUE = 0x0001 } +enum : uint { FOREGROUND_GREEN = 0x0002 } +enum : uint { FOREGROUND_RED = 0x0004 } +enum : uint { FOREGROUND_INTENSITY = 0x0008 } +enum : uint { BACKGROUND_BLUE = 0x0010 } +enum : uint { BACKGROUND_GREEN = 0x0020 } +enum : uint { BACKGROUND_RED = 0x0040 } +enum : uint { BACKGROUND_INTENSITY = 0x0080 } +enum : uint { COMMON_LVB_LEADING_BYTE = 0x0100 } +enum : uint { COMMON_LVB_TRAILING_BYTE = 0x0200 } +enum : uint { COMMON_LVB_GRID_HORIZONTAL = 0x0400 } +enum : uint { COMMON_LVB_GRID_LVERTICAL = 0x0800 } +enum : uint { COMMON_LVB_GRID_RVERTICAL = 0x1000 } +enum : uint { COMMON_LVB_REVERSE_VIDEO = 0x4000 } +enum : uint { COMMON_LVB_UNDERSCORE = 0x8000 } + +enum : uint { COMMON_LVB_SBCSDBCS = 0x0300 } + +struct _CONSOLE_SCREEN_BUFFER_INFO { + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; +} +alias _CONSOLE_SCREEN_BUFFER_INFO CONSOLE_SCREEN_BUFFER_INFO; +alias _CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO; + +struct _CONSOLE_CURSOR_INFO { + DWORD dwSize; + BOOL bVisible; +} +alias _CONSOLE_CURSOR_INFO CONSOLE_CURSOR_INFO; +alias _CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO; + +struct _CONSOLE_FONT_INFO { + DWORD nFont; + COORD dwFontSize; +} +alias _CONSOLE_FONT_INFO CONSOLE_FONT_INFO; +alias _CONSOLE_FONT_INFO* PCONSOLE_FONT_INFO; + +// #if(_WIN32_WINNT >= 0x0500) +struct _CONSOLE_SELECTION_INFO { + DWORD dwFlags; + COORD dwSelectionAnchor; + SMALL_RECT srSelection; +} +alias _CONSOLE_SELECTION_INFO CONSOLE_SELECTION_INFO; +alias _CONSOLE_SELECTION_INFO* PCONSOLE_SELECTION_INFO; + +enum : uint { CONSOLE_NO_SELECTION = 0x0000 } +enum : uint { CONSOLE_SELECTION_IN_PROGRESS = 0x0001 } +enum : uint { CONSOLE_SELECTION_NOT_EMPTY = 0x0002 } +enum : uint { CONSOLE_MOUSE_SELECTION = 0x0004 } +enum : uint { CONSOLE_MOUSE_DOWN = 0x0008 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) alias BOOL function( DWORD CtrlType ) PHANDLER_ROUTINE; + +enum : uint { CTRL_C_EVENT = 0 } +enum : uint { CTRL_BREAK_EVENT = 1 } +enum : uint { CTRL_CLOSE_EVENT = 2 } + +enum : uint { CTRL_LOGOFF_EVENT = 5 } +enum : uint { CTRL_SHUTDOWN_EVENT = 6 } + +enum : uint { ENABLE_PROCESSED_INPUT = 0x0001 } +enum : uint { ENABLE_LINE_INPUT = 0x0002 } +enum : uint { ENABLE_ECHO_INPUT = 0x0004 } +enum : uint { ENABLE_WINDOW_INPUT = 0x0008 } +enum : uint { ENABLE_MOUSE_INPUT = 0x0010 } + +enum : uint { ENABLE_PROCESSED_OUTPUT = 0x0001 } +enum : uint { ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 } + +extern(Windows) export BOOL PeekConsoleInputA( + HANDLE hConsoleInput, + PINPUT_RECORD lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsRead + ); +extern(Windows) export BOOL PeekConsoleInputW( + HANDLE hConsoleInput, + PINPUT_RECORD lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsRead + ); +// #ifdef UNICODE +alias PeekConsoleInputW PeekConsoleInput; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleInputA( + HANDLE hConsoleInput, + PINPUT_RECORD lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsRead + ); +extern(Windows) export BOOL ReadConsoleInputW( + HANDLE hConsoleInput, + PINPUT_RECORD lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsRead + ); +// #ifdef UNICODE +alias ReadConsoleInputW ReadConsoleInput; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WriteConsoleInputA( + HANDLE hConsoleInput, + INPUT_RECORD *lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsWritten + ); +extern(Windows) export BOOL WriteConsoleInputW( + HANDLE hConsoleInput, + INPUT_RECORD *lpBuffer, + DWORD nLength, + LPDWORD lpNumberOfEventsWritten + ); +// #ifdef UNICODE +alias WriteConsoleInputW WriteConsoleInput; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleOutputA( + HANDLE hConsoleOutput, + PCHAR_INFO lpBuffer, + COORD dwBufferSize, + COORD dwBufferCoord, + PSMALL_RECT lpReadRegion + ); +extern(Windows) export BOOL ReadConsoleOutputW( + HANDLE hConsoleOutput, + PCHAR_INFO lpBuffer, + COORD dwBufferSize, + COORD dwBufferCoord, + PSMALL_RECT lpReadRegion + ); +// #ifdef UNICODE +alias ReadConsoleOutputW ReadConsoleOutput; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WriteConsoleOutputA( + HANDLE hConsoleOutput, + CHAR_INFO *lpBuffer, + COORD dwBufferSize, + COORD dwBufferCoord, + PSMALL_RECT lpWriteRegion + ); +extern(Windows) export BOOL WriteConsoleOutputW( + HANDLE hConsoleOutput, + CHAR_INFO *lpBuffer, + COORD dwBufferSize, + COORD dwBufferCoord, + PSMALL_RECT lpWriteRegion + ); +// #ifdef UNICODE +alias WriteConsoleOutputW WriteConsoleOutput; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleOutputCharacterA( + HANDLE hConsoleOutput, + LPSTR lpCharacter, + DWORD nLength, + COORD dwReadCoord, + LPDWORD lpNumberOfCharsRead + ); +extern(Windows) export BOOL ReadConsoleOutputCharacterW( + HANDLE hConsoleOutput, + LPWSTR lpCharacter, + DWORD nLength, + COORD dwReadCoord, + LPDWORD lpNumberOfCharsRead + ); +// #ifdef UNICODE +alias ReadConsoleOutputCharacterW ReadConsoleOutputCharacter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleOutputAttribute( + HANDLE hConsoleOutput, + LPWORD lpAttribute, + DWORD nLength, + COORD dwReadCoord, + LPDWORD lpNumberOfAttrsRead + ); + +extern(Windows) export BOOL WriteConsoleOutputCharacterA( + HANDLE hConsoleOutput, + LPCSTR lpCharacter, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfCharsWritten + ); +extern(Windows) export BOOL WriteConsoleOutputCharacterW( + HANDLE hConsoleOutput, + LPCWSTR lpCharacter, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfCharsWritten + ); +// #ifdef UNICODE +alias WriteConsoleOutputCharacterW WriteConsoleOutputCharacter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WriteConsoleOutputAttribute( + HANDLE hConsoleOutput, + WORD *lpAttribute, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfAttrsWritten + ); + +extern(Windows) export BOOL FillConsoleOutputCharacterA( + HANDLE hConsoleOutput, + CHAR cCharacter, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfCharsWritten + ); +extern(Windows) export BOOL FillConsoleOutputCharacterW( + HANDLE hConsoleOutput, + WCHAR cCharacter, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfCharsWritten + ); +// #ifdef UNICODE +alias FillConsoleOutputCharacterW FillConsoleOutputCharacter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL FillConsoleOutputAttribute( + HANDLE hConsoleOutput, + WORD wAttribute, + DWORD nLength, + COORD dwWriteCoord, + LPDWORD lpNumberOfAttrsWritten + ); + +extern(Windows) export BOOL GetConsoleMode( + HANDLE hConsoleHandle, + LPDWORD lpMode + ); + +extern(Windows) export BOOL GetNumberOfConsoleInputEvents( + HANDLE hConsoleInput, + LPDWORD lpNumberOfEvents + ); + +extern(Windows) export BOOL GetConsoleScreenBufferInfo( + HANDLE hConsoleOutput, + PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo + ); + +extern(Windows) export COORD GetLargestConsoleWindowSize( + HANDLE hConsoleOutput + ); + +extern(Windows) export BOOL GetConsoleCursorInfo( + HANDLE hConsoleOutput, + PCONSOLE_CURSOR_INFO lpConsoleCursorInfo + ); + +// #if(_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL GetCurrentConsoleFont( + HANDLE hConsoleOutput, + BOOL bMaximumWindow, + PCONSOLE_FONT_INFO lpConsoleCurrentFont + ); + +extern(Windows) export COORD GetConsoleFontSize( + HANDLE hConsoleOutput, + DWORD nFont + ); + +extern(Windows) export BOOL GetConsoleSelectionInfo( + PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo + ); + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export BOOL GetNumberOfConsoleMouseButtons( + LPDWORD lpNumberOfMouseButtons + ); + +extern(Windows) export BOOL SetConsoleMode( + HANDLE hConsoleHandle, + DWORD dwMode + ); + +extern(Windows) export BOOL SetConsoleActiveScreenBuffer( + HANDLE hConsoleOutput + ); + +extern(Windows) export BOOL FlushConsoleInputBuffer( + HANDLE hConsoleInput + ); + +extern(Windows) export BOOL SetConsoleScreenBufferSize( + HANDLE hConsoleOutput, + COORD dwSize + ); + +extern(Windows) export BOOL SetConsoleCursorPosition( + HANDLE hConsoleOutput, + COORD dwCursorPosition + ); + +extern(Windows) export BOOL SetConsoleCursorInfo( + HANDLE hConsoleOutput, + CONSOLE_CURSOR_INFO *lpConsoleCursorInfo + ); + +extern(Windows) export BOOL ScrollConsoleScreenBufferA( + HANDLE hConsoleOutput, + SMALL_RECT *lpScrollRectangle, + SMALL_RECT *lpClipRectangle, + COORD dwDestinationOrigin, + CHAR_INFO *lpFill + ); +extern(Windows) export BOOL ScrollConsoleScreenBufferW( + HANDLE hConsoleOutput, + SMALL_RECT *lpScrollRectangle, + SMALL_RECT *lpClipRectangle, + COORD dwDestinationOrigin, + CHAR_INFO *lpFill + ); +// #ifdef UNICODE +alias ScrollConsoleScreenBufferW ScrollConsoleScreenBuffer; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetConsoleWindowInfo( + HANDLE hConsoleOutput, + BOOL bAbsolute, + SMALL_RECT *lpConsoleWindow + ); + +extern(Windows) export BOOL SetConsoleTextAttribute( + HANDLE hConsoleOutput, + WORD wAttributes + ); + +extern(Windows) export BOOL SetConsoleCtrlHandler( + PHANDLER_ROUTINE HandlerRoutine, + BOOL Add + ); + +extern(Windows) export BOOL GenerateConsoleCtrlEvent( + DWORD dwCtrlEvent, + DWORD dwProcessGroupId + ); + +extern(Windows) export BOOL AllocConsole(); + +extern(Windows) export BOOL FreeConsole(); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AttachConsole( + DWORD dwProcessId + ); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export DWORD GetConsoleTitleA( + LPSTR lpConsoleTitle, + DWORD nSize + ); +extern(Windows) export DWORD GetConsoleTitleW( + LPWSTR lpConsoleTitle, + DWORD nSize + ); +// #ifdef UNICODE +alias GetConsoleTitleW GetConsoleTitle; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetConsoleTitleA( + LPCSTR lpConsoleTitle + ); +extern(Windows) export BOOL SetConsoleTitleW( + LPCWSTR lpConsoleTitle + ); +// #ifdef UNICODE +alias SetConsoleTitleW SetConsoleTitle; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ReadConsoleA( + HANDLE hConsoleInput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToRead, + LPDWORD lpNumberOfCharsRead, + LPVOID lpReserved + ); +extern(Windows) export BOOL ReadConsoleW( + HANDLE hConsoleInput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToRead, + LPDWORD lpNumberOfCharsRead, + LPVOID lpReserved + ); +// #ifdef UNICODE +alias ReadConsoleW ReadConsole; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL WriteConsoleA( + HANDLE hConsoleOutput, + VOID *lpBuffer, + DWORD nNumberOfCharsToWrite, + LPDWORD lpNumberOfCharsWritten, + LPVOID lpReserved + ); +extern(Windows) export BOOL WriteConsoleW( + HANDLE hConsoleOutput, + VOID *lpBuffer, + DWORD nNumberOfCharsToWrite, + LPDWORD lpNumberOfCharsWritten, + LPVOID lpReserved + ); +// #ifdef UNICODE +alias WriteConsoleW WriteConsole; +// #else +// #... +// #endif // !UNICODE + +enum : uint { CONSOLE_TEXTMODE_BUFFER = 1 } + +extern(Windows) export HANDLE CreateConsoleScreenBuffer( + DWORD dwDesiredAccess, + DWORD dwShareMode, + SECURITY_ATTRIBUTES *lpSecurityAttributes, + DWORD dwFlags, + LPVOID lpScreenBufferData + ); + +extern(Windows) export UINT GetConsoleCP(); + +extern(Windows) export BOOL SetConsoleCP( + UINT wCodePageID + ); + +extern(Windows) export UINT GetConsoleOutputCP(); + +extern(Windows) export BOOL SetConsoleOutputCP( + UINT wCodePageID + ); + +// #if(_WIN32_WINNT >= 0x0500) + +enum : uint { CONSOLE_FULLSCREEN = 1 } +enum : uint { CONSOLE_FULLSCREEN_HARDWARE = 2 } + +extern(Windows) export BOOL GetConsoleDisplayMode( + LPDWORD lpModeFlags + ); + +extern(Windows) export HWND GetConsoleWindow(); + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) + +extern(Windows) export DWORD GetConsoleProcessList( + LPDWORD lpdwProcessList, + DWORD dwProcessCount); +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINCON_ + ADDED src/win32/windef.d Index: src/win32/windef.d ================================================================== --- src/win32/windef.d +++ src/win32/windef.d @@ -0,0 +1,394 @@ +module win32.windef; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +alias void* va_list; +alias long __int64; +alias ulong DWORD64; +alias uint SIZE_T; +alias SIZE_T* PSIZE_T; +alias int INT_PTR; +alias uint UINT_PTR; +alias uint LONG_PTR; +alias uint ULONG_PTR; +alias uint DWORD_PTR; +alias DWORD_PTR* PDWORD_PTR; +alias UINT_PTR* PUINT_PTR; +alias ULONG_PTR* PULONG_PTR; +enum : UINT { UINT_MAX = UINT.max } + +// #ifndef _WINDEF_ +// #define _WINDEF_ + +// #ifndef NO_STRICT +// #ifndef STRICT +// #... +// #endif +// #endif /* NO_STRICT */ + +// #ifdef _MAC +// #ifndef _WIN32 +// #... +// #endif +// #endif //_MAC + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef WINVER +// #... +// #endif /* WINVER */ + +// #ifndef BASETYPES +// #define BASETYPES +alias uint ULONG; +alias ULONG* PULONG; +alias ushort USHORT; +alias USHORT* PUSHORT; +alias ubyte UCHAR; +alias UCHAR* PUCHAR; +alias char* PSZ; +// #endif /* !BASETYPES */ + +enum : uint { MAX_PATH = 260 } + +// #ifndef NULL +// #ifdef __cplusplus +const void* NULL = null; +// #else +// #... +// #endif +// #endif + +// #ifndef FALSE +enum : uint { FALSE = 0 } +// #endif + +// #ifndef TRUE +enum : uint { TRUE = 1 } +// #endif + +// #ifndef IN +// #define IN +// #endif + +// #ifndef OUT +// #define OUT +// #endif + +// #ifndef OPTIONAL +// #define OPTIONAL +// #endif + +// #undef far +// #undef near +// #undef pascal + +// #define far +// #define near +// #if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)) +// #define pascal __stdcall +// #else +// #... +// #endif + +// #if defined(DOSWIN32) || defined(_MAC) +// #... +// #ifndef CDECL +// #... +// #endif +// #else +// #define cdecl +// #ifndef CDECL +// #define CDECL +// #endif +// #endif + +// #ifdef _MAC +// #... +// #... +// #... +// #... +// #... +// #ifdef _68K_ +// #... +// #else +// #... +// #endif +// #elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) +// #define CALLBACK __stdcall +// #define WINAPI __stdcall +// #define WINAPIV __cdecl +// #define APIENTRY WINAPI +// #define APIPRIVATE __stdcall +// #define PASCAL __stdcall +// #else +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +// #undef FAR +// #undef NEAR +// #define FAR far +// #define NEAR near +// #ifndef CONST +// #define CONST const +// #endif + +alias uint DWORD; +alias int BOOL; +alias ubyte BYTE; +alias ushort WORD; +alias float FLOAT; +alias FLOAT* PFLOAT; +alias BOOL* PBOOL; +alias BOOL* LPBOOL; +alias BYTE* PBYTE; +alias BYTE* LPBYTE; +alias int* PINT; +alias int* LPINT; +alias WORD* PWORD; +alias WORD* LPWORD; +alias int* LPLONG; +alias DWORD* PDWORD; +alias DWORD* LPDWORD; +alias void* LPVOID; +alias void* LPCVOID; + +alias int INT; +alias uint UINT; +alias uint* PUINT; + +// #ifndef NT_INCLUDED +import win32.winnt; +// #endif /* NT_INCLUDED */ + +alias UINT_PTR WPARAM; +alias LONG_PTR LPARAM; +alias LONG_PTR LRESULT; + +// #ifndef NOMINMAX + +// #ifndef max +int max(int a, int b){ return (a > b)? a : b; } +uint max(uint a, uint b){ return (a > b)? a : b; } +real max(real a, real b){ return (a > b)? a : b; } +// #endif + +// #ifndef min +int min(int a, int b){ return (a < b)? a : b; } +uint min(uint a, uint b){ return (a < b)? a : b; } +real min(real a, real b){ return (a < b)? a : b; } +// #endif + +// #endif /* NOMINMAX */ + +ushort MAKEWORD(byte a, byte b){ return (a & 0xff) | ((b & 0xff) << 8); } +uint MAKELONG(ushort a, ushort b){ return (a & 0xffff) | ((b & 0xffff) << 16); } +ushort LOWORD(uint l){ return l & 0xffff; } +ushort HIWORD(uint l){ return l >>> 16; } +ubyte LOBYTE(ushort l){ return l & 0xff; } +ubyte HIBYTE(ushort l){ return l >>> 8; } + +// #ifndef WIN_INTERNAL +alias void* HWND; +alias void* HHOOK; +// #ifdef WINABLE +// ... +// #endif +// #endif + +alias WORD ATOM; + +alias HANDLE* SPHANDLE; +alias HANDLE* LPHANDLE; +alias HANDLE HGLOBAL; +alias HANDLE HLOCAL; +alias HANDLE GLOBALHANDLE; +alias HANDLE LOCALHANDLE; +// #ifndef _MAC +// #ifdef _WIN64 +// ... +// #else +extern(Windows) alias int function() FARPROC; +extern(Windows) alias int function() NEARPROC; +extern(Windows) alias int function() PROC; +// #endif // _WIN64 +// #else +// ... +// #endif + +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +// #ifdef STRICT +alias void* HGDIOBJ; +// #else +// ... +// #endif +// #endif + +alias void* HKEY; +alias HKEY* PHKEY; + +// #if !defined(_MAC) || !defined(WIN_INTERNAL) +alias void* HACCEL; +// #endif +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +alias void* HBITMAP; +alias void* HBRUSH; +// #endif +// #if(WINVER >= 0x0400) +alias void* HCOLORSPACE; +// #endif /* WINVER >= 0x0400 */ +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +alias void* HDC; +// #endif +alias void* HGLRC; +alias void* HDESK; +alias void* HENHMETAFILE; +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +alias void* HFONT; +// #endif +alias void* HICON; +// #if !defined(_MAC) || !defined(WIN_INTERNAL) +alias void* HMENU; +// #endif +alias void* HMETAFILE; +alias void* HINSTANCE; +alias HINSTANCE HMODULE; +// #if !defined(_MAC) || !defined(GDI_INTERNAL) +alias void* HPALETTE; +alias void* HPEN; +// #endif +alias void* HRGN; +alias void* HRSRC; +alias void* HSTR; +alias void* HTASK; +alias void* HWINSTA; +alias void* HKL; + +// #if(WINVER >= 0x0500) +// #ifndef _MAC +alias void* HMONITOR; +alias void* HWINEVENTHOOK; +// #endif +alias void* HUMPD; +// #endif /* WINVER >= 0x0500 */ + +// #ifndef _MAC +alias int HFILE; +alias HICON HCURSOR; +// #else +// ... +// #endif + +alias DWORD COLORREF; +alias DWORD* LPCOLORREF; + +const HFILE HFILE_ERROR = -1; + +struct tagRECT { + LONG left; + LONG top; + LONG right; + LONG bottom; +} +alias tagRECT RECT; +alias tagRECT* PRECT; +alias tagRECT* NPRECT; +alias tagRECT* LPRECT; + +alias RECT* LPCRECT; + +struct _RECTL { + LONG left; + LONG top; + LONG right; + LONG bottom; +} +alias _RECTL RECTL; +alias _RECTL* PRECTL; +alias _RECTL* LPRECTL; + +alias RECTL* LPCRECTL; + +struct tagPOINT { + LONG x; + LONG y; +} +alias tagPOINT POINT; +alias tagPOINT* PPOINT; +alias tagPOINT* NPPOINT; +alias tagPOINT* LPPOINT; + +struct _POINTL { + LONG x; + LONG y; +} +alias _POINTL POINTL; +alias _POINTL* PPOINTL; + +struct tagSIZE { + LONG cx; + LONG cy; +} +alias tagSIZE SIZE; +alias tagSIZE* PSIZE; +alias tagSIZE* LPSIZE; + +alias SIZE SIZEL; +alias SIZE* PSIZEL; +alias SIZE* LPSIZEL; + +struct tagPOINTS { +// #ifndef _MAC + SHORT x; + SHORT y; +// #else +// ... +// #endif +} +alias tagPOINTS POINTS; +alias tagPOINTS* PPOINTS; +alias tagPOINTS* LPPOINTS; + +enum : uint { DM_UPDATE = 1 } +enum : uint { DM_COPY = 2 } +enum : uint { DM_PROMPT = 4 } +enum : uint { DM_MODIFY = 8 } + +alias DM_MODIFY DM_IN_BUFFER; +alias DM_PROMPT DM_IN_PROMPT; +alias DM_COPY DM_OUT_BUFFER; +alias DM_UPDATE DM_OUT_DEFAULT; + +enum : uint { DC_FIELDS = 1 } +enum : uint { DC_PAPERS = 2 } +enum : uint { DC_PAPERSIZE = 3 } +enum : uint { DC_MINEXTENT = 4 } +enum : uint { DC_MAXEXTENT = 5 } +enum : uint { DC_BINS = 6 } +enum : uint { DC_DUPLEX = 7 } +enum : uint { DC_SIZE = 8 } +enum : uint { DC_EXTRA = 9 } +enum : uint { DC_VERSION = 10 } +enum : uint { DC_DRIVER = 11 } +enum : uint { DC_BINNAMES = 12 } +enum : uint { DC_ENUMRESOLUTIONS = 13 } +enum : uint { DC_FILEDEPENDENCIES = 14 } +enum : uint { DC_TRUETYPE = 15 } +enum : uint { DC_PAPERNAMES = 16 } +enum : uint { DC_ORIENTATION = 17 } +enum : uint { DC_COPIES = 18 } + +// #ifdef __cplusplus +// } +// #endif + +// #endif /* _WINDEF_ */ + ADDED src/win32/windows.d Index: src/win32/windows.d ================================================================== --- src/win32/windows.d +++ src/win32/windows.d @@ -0,0 +1,202 @@ +module win32.windows; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + + +// #ifndef _WINDOWS_ +// #define _WINDOWS_ + +// #ifndef WINVER +// #... +// #else +// #if defined(_WIN32_WINNT) && (WINVER < 0x0400) && (_WIN32_WINNT > 0x0400) +// #... +// #endif +// #endif + +// #ifndef _INC_WINDOWS +// #define _INC_WINDOWS + +// #if defined (_MSC_VER) && (_MSC_VER >= 1020) +// #pragma once +// #endif + +// #if defined(RC_INVOKED) && !defined(NOWINRES) + +// #... + +// #else + +// #if defined(RC_INVOKED) + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_IX86) +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_AMD64) +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_M68K) +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_MPPC) +// #... +// #endif + +// #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_M_IX86) && !defined(_AMD64_) && defined(_M_IA64) +// #if !defined(_IA64_) +// #... +// #endif // !_IA64_ +// #endif + +// #ifndef _MAC +// #if defined(_68K_) || defined(_MPPC_) +// #... +// #endif +// #endif + +// #if defined (_MSC_VER) +// #if ( _MSC_VER >= 800 ) +// #ifndef __cplusplus +// #... + +// #endif +// #endif +// #endif + +// #ifndef RC_INVOKED +// #if ( _MSC_VER >= 800 ) +// #pragma warning(disable:4514) +// #ifndef __WINDOWS_DONT_DISABLE_PRAGMA_PACK_WARNING__ +// #pragma warning(disable:4103) +// #endif +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning(disable:4001) +// #pragma warning(disable:4201) +// #pragma warning(disable:4214) +// #endif +// #include +// #include +// #endif /* RC_INVOKED */ + +import win32.windef; +import win32.winbase; +import win32.wingdi; +import win32.winuser; +// #if !defined(_MAC) || defined(_WIN32NLS) +import win32.winnls; +// #endif +// #ifndef _MAC +import win32.wincon; +import win32.winver; +// #endif +// #if !defined(_MAC) || defined(_WIN32REG) +import win32.winreg; +// #endif +// #ifndef _MAC +// #include +// #endif + +// #ifndef WIN32_LEAN_AND_MEAN +// #include +import win32.dde; +import win32.ddeml; +import win32.dlgs; +// #ifndef _MAC +// #include +import win32.mmsystem; +// #include +// #include +// #endif +import win32.shellapi; +// #ifndef _MAC +// #include +// #include +// #endif +// #ifndef NOCRYPT +// #... +// #... +// #... +// #endif + +// #ifndef NOGDI +// #ifndef _MAC +import win32.winspool; +// #ifdef INC_OLE1 +// #... +// #else +// #include +// #endif /* !INC_OLE1 */ +// #endif /* !MAC */ +import win32.commdlg; +// #endif /* !NOGDI */ +// #endif /* WIN32_LEAN_AND_MEAN */ + +// #include + +// #ifdef _MAC +// #... +// #endif + +// #ifdef INC_OLE2 +// #... +// #endif /* INC_OLE2 */ + +// #ifndef _MAC +// #ifndef NOSERVICE +// #... +// #endif + +// #if(WINVER >= 0x0400) +// #ifndef NOMCX +// #... +// #endif /* NOMCX */ + +// #ifndef NOIME +import win32.imm; +// #endif +// #endif /* WINVER >= 0x0400 */ +// #endif + +// #ifndef RC_INVOKED +// #if ( _MSC_VER >= 800 ) +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #... +// #... + +// #endif +// #endif +// #endif /* RC_INVOKED */ + +// #endif /* RC_INVOKED */ + +// #endif /* _INC_WINDOWS */ +// #endif /* _WINDOWS_ */ + ADDED src/win32/winerror.d Index: src/win32/winerror.d ================================================================== --- src/win32/winerror.d +++ src/win32/winerror.d @@ -0,0 +1,5953 @@ +module win32.winerror; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.winnt; + +// #ifndef _WINERROR_ +// #define _WINERROR_ + +// #if defined (_MSC_VER) && (_MSC_VER >= 1020) && !defined(__midl) +// #pragma once +// #endif + +enum : uint { FACILITY_WINDOWS_CE = 24 } +enum : uint { FACILITY_WINDOWS = 8 } +enum : uint { FACILITY_URT = 19 } +enum : uint { FACILITY_UMI = 22 } +enum : uint { FACILITY_SXS = 23 } +enum : uint { FACILITY_STORAGE = 3 } +enum : uint { FACILITY_SSPI = 9 } +enum : uint { FACILITY_SCARD = 16 } +enum : uint { FACILITY_SETUPAPI = 15 } +enum : uint { FACILITY_SECURITY = 9 } +enum : uint { FACILITY_RPC = 1 } +enum : uint { FACILITY_WIN32 = 7 } +enum : uint { FACILITY_CONTROL = 10 } +enum : uint { FACILITY_NULL = 0 } +enum : uint { FACILITY_MSMQ = 14 } +enum : uint { FACILITY_MEDIASERVER = 13 } +enum : uint { FACILITY_INTERNET = 12 } +enum : uint { FACILITY_ITF = 4 } +enum : uint { FACILITY_HTTP = 25 } +enum : uint { FACILITY_DPLAY = 21 } +enum : uint { FACILITY_DISPATCH = 2 } +enum : uint { FACILITY_CONFIGURATION = 33 } +enum : uint { FACILITY_COMPLUS = 17 } +enum : uint { FACILITY_CERT = 11 } +enum : uint { FACILITY_BACKGROUNDCOPY = 32 } +enum : uint { FACILITY_ACS = 20 } +enum : uint { FACILITY_AAF = 18 } + +enum : uint { ERROR_SUCCESS = 0 } + +enum : uint { NO_ERROR = 0 } +enum : HRESULT { SEC_E_OK = cast(HRESULT)0x00000000 } + +enum : uint { ERROR_INVALID_FUNCTION = 1 } + +enum : uint { ERROR_FILE_NOT_FOUND = 2 } + +enum : uint { ERROR_PATH_NOT_FOUND = 3 } + +enum : uint { ERROR_TOO_MANY_OPEN_FILES = 4 } + +enum : uint { ERROR_ACCESS_DENIED = 5 } + +enum : uint { ERROR_INVALID_HANDLE = 6 } + +enum : uint { ERROR_ARENA_TRASHED = 7 } + +enum : uint { ERROR_NOT_ENOUGH_MEMORY = 8 } + +enum : uint { ERROR_INVALID_BLOCK = 9 } + +enum : uint { ERROR_BAD_ENVIRONMENT = 10 } + +enum : uint { ERROR_BAD_FORMAT = 11 } + +enum : uint { ERROR_INVALID_ACCESS = 12 } + +enum : uint { ERROR_INVALID_DATA = 13 } + +enum : uint { ERROR_OUTOFMEMORY = 14 } + +enum : uint { ERROR_INVALID_DRIVE = 15 } + +enum : uint { ERROR_CURRENT_DIRECTORY = 16 } + +enum : uint { ERROR_NOT_SAME_DEVICE = 17 } + +enum : uint { ERROR_NO_MORE_FILES = 18 } + +enum : uint { ERROR_WRITE_PROTECT = 19 } + +enum : uint { ERROR_BAD_UNIT = 20 } + +enum : uint { ERROR_NOT_READY = 21 } + +enum : uint { ERROR_BAD_COMMAND = 22 } + +enum : uint { ERROR_CRC = 23 } + +enum : uint { ERROR_BAD_LENGTH = 24 } + +enum : uint { ERROR_SEEK = 25 } + +enum : uint { ERROR_NOT_DOS_DISK = 26 } + +enum : uint { ERROR_SECTOR_NOT_FOUND = 27 } + +enum : uint { ERROR_OUT_OF_PAPER = 28 } + +enum : uint { ERROR_WRITE_FAULT = 29 } + +enum : uint { ERROR_READ_FAULT = 30 } + +enum : uint { ERROR_GEN_FAILURE = 31 } + +enum : uint { ERROR_SHARING_VIOLATION = 32 } + +enum : uint { ERROR_LOCK_VIOLATION = 33 } + +enum : uint { ERROR_WRONG_DISK = 34 } + +enum : uint { ERROR_SHARING_BUFFER_EXCEEDED = 36 } + +enum : uint { ERROR_HANDLE_EOF = 38 } + +enum : uint { ERROR_HANDLE_DISK_FULL = 39 } + +enum : uint { ERROR_NOT_SUPPORTED = 50 } + +enum : uint { ERROR_REM_NOT_LIST = 51 } + +enum : uint { ERROR_DUP_NAME = 52 } + +enum : uint { ERROR_BAD_NETPATH = 53 } + +enum : uint { ERROR_NETWORK_BUSY = 54 } + +enum : uint { ERROR_DEV_NOT_EXIST = 55 } + +enum : uint { ERROR_TOO_MANY_CMDS = 56 } + +enum : uint { ERROR_ADAP_HDW_ERR = 57 } + +enum : uint { ERROR_BAD_NET_RESP = 58 } + +enum : uint { ERROR_UNEXP_NET_ERR = 59 } + +enum : uint { ERROR_BAD_REM_ADAP = 60 } + +enum : uint { ERROR_PRINTQ_FULL = 61 } + +enum : uint { ERROR_NO_SPOOL_SPACE = 62 } + +enum : uint { ERROR_PRINT_CANCELLED = 63 } + +enum : uint { ERROR_NETNAME_DELETED = 64 } + +enum : uint { ERROR_NETWORK_ACCESS_DENIED = 65 } + +enum : uint { ERROR_BAD_DEV_TYPE = 66 } + +enum : uint { ERROR_BAD_NET_NAME = 67 } + +enum : uint { ERROR_TOO_MANY_NAMES = 68 } + +enum : uint { ERROR_TOO_MANY_SESS = 69 } + +enum : uint { ERROR_SHARING_PAUSED = 70 } + +enum : uint { ERROR_REQ_NOT_ACCEP = 71 } + +enum : uint { ERROR_REDIR_PAUSED = 72 } + +enum : uint { ERROR_FILE_EXISTS = 80 } + +enum : uint { ERROR_CANNOT_MAKE = 82 } + +enum : uint { ERROR_FAIL_I24 = 83 } + +enum : uint { ERROR_OUT_OF_STRUCTURES = 84 } + +enum : uint { ERROR_ALREADY_ASSIGNED = 85 } + +enum : uint { ERROR_INVALID_PASSWORD = 86 } + +enum : uint { ERROR_INVALID_PARAMETER = 87 } + +enum : uint { ERROR_NET_WRITE_FAULT = 88 } + +enum : uint { ERROR_NO_PROC_SLOTS = 89 } + +enum : uint { ERROR_TOO_MANY_SEMAPHORES = 100 } + +enum : uint { ERROR_EXCL_SEM_ALREADY_OWNED = 101 } + +enum : uint { ERROR_SEM_IS_SET = 102 } + +enum : uint { ERROR_TOO_MANY_SEM_REQUESTS = 103 } + +enum : uint { ERROR_INVALID_AT_INTERRUPT_TIME = 104 } + +enum : uint { ERROR_SEM_OWNER_DIED = 105 } + +enum : uint { ERROR_SEM_USER_LIMIT = 106 } + +enum : uint { ERROR_DISK_CHANGE = 107 } + +enum : uint { ERROR_DRIVE_LOCKED = 108 } + +enum : uint { ERROR_BROKEN_PIPE = 109 } + +enum : uint { ERROR_OPEN_FAILED = 110 } + +enum : uint { ERROR_BUFFER_OVERFLOW = 111 } + +enum : uint { ERROR_DISK_FULL = 112 } + +enum : uint { ERROR_NO_MORE_SEARCH_HANDLES = 113 } + +enum : uint { ERROR_INVALID_TARGET_HANDLE = 114 } + +enum : uint { ERROR_INVALID_CATEGORY = 117 } + +enum : uint { ERROR_INVALID_VERIFY_SWITCH = 118 } + +enum : uint { ERROR_BAD_DRIVER_LEVEL = 119 } + +enum : uint { ERROR_CALL_NOT_IMPLEMENTED = 120 } + +enum : uint { ERROR_SEM_TIMEOUT = 121 } + +enum : uint { ERROR_INSUFFICIENT_BUFFER = 122 } + +enum : uint { ERROR_INVALID_NAME = 123 } + +enum : uint { ERROR_INVALID_LEVEL = 124 } + +enum : uint { ERROR_NO_VOLUME_LABEL = 125 } + +enum : uint { ERROR_MOD_NOT_FOUND = 126 } + +enum : uint { ERROR_PROC_NOT_FOUND = 127 } + +enum : uint { ERROR_WAIT_NO_CHILDREN = 128 } + +enum : uint { ERROR_CHILD_NOT_COMPLETE = 129 } + +enum : uint { ERROR_DIRECT_ACCESS_HANDLE = 130 } + +enum : uint { ERROR_NEGATIVE_SEEK = 131 } + +enum : uint { ERROR_SEEK_ON_DEVICE = 132 } + +enum : uint { ERROR_IS_JOIN_TARGET = 133 } + +enum : uint { ERROR_IS_JOINED = 134 } + +enum : uint { ERROR_IS_SUBSTED = 135 } + +enum : uint { ERROR_NOT_JOINED = 136 } + +enum : uint { ERROR_NOT_SUBSTED = 137 } + +enum : uint { ERROR_JOIN_TO_JOIN = 138 } + +enum : uint { ERROR_SUBST_TO_SUBST = 139 } + +enum : uint { ERROR_JOIN_TO_SUBST = 140 } + +enum : uint { ERROR_SUBST_TO_JOIN = 141 } + +enum : uint { ERROR_BUSY_DRIVE = 142 } + +enum : uint { ERROR_SAME_DRIVE = 143 } + +enum : uint { ERROR_DIR_NOT_ROOT = 144 } + +enum : uint { ERROR_DIR_NOT_EMPTY = 145 } + +enum : uint { ERROR_IS_SUBST_PATH = 146 } + +enum : uint { ERROR_IS_JOIN_PATH = 147 } + +enum : uint { ERROR_PATH_BUSY = 148 } + +enum : uint { ERROR_IS_SUBST_TARGET = 149 } + +enum : uint { ERROR_SYSTEM_TRACE = 150 } + +enum : uint { ERROR_INVALID_EVENT_COUNT = 151 } + +enum : uint { ERROR_TOO_MANY_MUXWAITERS = 152 } + +enum : uint { ERROR_INVALID_LIST_FORMAT = 153 } + +enum : uint { ERROR_LABEL_TOO_LONG = 154 } + +enum : uint { ERROR_TOO_MANY_TCBS = 155 } + +enum : uint { ERROR_SIGNAL_REFUSED = 156 } + +enum : uint { ERROR_DISCARDED = 157 } + +enum : uint { ERROR_NOT_LOCKED = 158 } + +enum : uint { ERROR_BAD_THREADID_ADDR = 159 } + +enum : uint { ERROR_BAD_ARGUMENTS = 160 } + +enum : uint { ERROR_BAD_PATHNAME = 161 } + +enum : uint { ERROR_SIGNAL_PENDING = 162 } + +enum : uint { ERROR_MAX_THRDS_REACHED = 164 } + +enum : uint { ERROR_LOCK_FAILED = 167 } + +enum : uint { ERROR_BUSY = 170 } + +enum : uint { ERROR_CANCEL_VIOLATION = 173 } + +enum : uint { ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = 174 } + +enum : uint { ERROR_INVALID_SEGMENT_NUMBER = 180 } + +enum : uint { ERROR_INVALID_ORDINAL = 182 } + +enum : uint { ERROR_ALREADY_EXISTS = 183 } + +enum : uint { ERROR_INVALID_FLAG_NUMBER = 186 } + +enum : uint { ERROR_SEM_NOT_FOUND = 187 } + +enum : uint { ERROR_INVALID_STARTING_CODESEG = 188 } + +enum : uint { ERROR_INVALID_STACKSEG = 189 } + +enum : uint { ERROR_INVALID_MODULETYPE = 190 } + +enum : uint { ERROR_INVALID_EXE_SIGNATURE = 191 } + +enum : uint { ERROR_EXE_MARKED_INVALID = 192 } + +enum : uint { ERROR_BAD_EXE_FORMAT = 193 } + +enum : uint { ERROR_ITERATED_DATA_EXCEEDS_64k = 194 } + +enum : uint { ERROR_INVALID_MINALLOCSIZE = 195 } + +enum : uint { ERROR_DYNLINK_FROM_INVALID_RING = 196 } + +enum : uint { ERROR_IOPL_NOT_ENABLED = 197 } + +enum : uint { ERROR_INVALID_SEGDPL = 198 } + +enum : uint { ERROR_AUTODATASEG_EXCEEDS_64k = 199 } + +enum : uint { ERROR_RING2SEG_MUST_BE_MOVABLE = 200 } + +enum : uint { ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201 } + +enum : uint { ERROR_INFLOOP_IN_RELOC_CHAIN = 202 } + +enum : uint { ERROR_ENVVAR_NOT_FOUND = 203 } + +enum : uint { ERROR_NO_SIGNAL_SENT = 205 } + +enum : uint { ERROR_FILENAME_EXCED_RANGE = 206 } + +enum : uint { ERROR_RING2_STACK_IN_USE = 207 } + +enum : uint { ERROR_META_EXPANSION_TOO_LONG = 208 } + +enum : uint { ERROR_INVALID_SIGNAL_NUMBER = 209 } + +enum : uint { ERROR_THREAD_1_INACTIVE = 210 } + +enum : uint { ERROR_LOCKED = 212 } + +enum : uint { ERROR_TOO_MANY_MODULES = 214 } + +enum : uint { ERROR_NESTING_NOT_ALLOWED = 215 } + +enum : uint { ERROR_EXE_MACHINE_TYPE_MISMATCH = 216 } + +enum : uint { ERROR_BAD_PIPE = 230 } + +enum : uint { ERROR_PIPE_BUSY = 231 } + +enum : uint { ERROR_NO_DATA = 232 } + +enum : uint { ERROR_PIPE_NOT_CONNECTED = 233 } + +enum : uint { ERROR_MORE_DATA = 234 } + +enum : uint { ERROR_VC_DISCONNECTED = 240 } + +enum : uint { ERROR_INVALID_EA_NAME = 254 } + +enum : uint { ERROR_EA_LIST_INCONSISTENT = 255 } + +enum : uint { WAIT_TIMEOUT = 258 } + +enum : uint { ERROR_NO_MORE_ITEMS = 259 } + +enum : uint { ERROR_CANNOT_COPY = 266 } + +enum : uint { ERROR_DIRECTORY = 267 } + +enum : uint { ERROR_EAS_DIDNT_FIT = 275 } + +enum : uint { ERROR_EA_FILE_CORRUPT = 276 } + +enum : uint { ERROR_EA_TABLE_FULL = 277 } + +enum : uint { ERROR_INVALID_EA_HANDLE = 278 } + +enum : uint { ERROR_EAS_NOT_SUPPORTED = 282 } + +enum : uint { ERROR_NOT_OWNER = 288 } + +enum : uint { ERROR_TOO_MANY_POSTS = 298 } + +enum : uint { ERROR_PARTIAL_COPY = 299 } + +enum : uint { ERROR_OPLOCK_NOT_GRANTED = 300 } + +enum : uint { ERROR_INVALID_OPLOCK_PROTOCOL = 301 } + +enum : uint { ERROR_DISK_TOO_FRAGMENTED = 302 } + +enum : uint { ERROR_DELETE_PENDING = 303 } + +enum : uint { ERROR_MR_MID_NOT_FOUND = 317 } + +enum : uint { ERROR_INVALID_ADDRESS = 487 } + +enum : uint { ERROR_ARITHMETIC_OVERFLOW = 534 } + +enum : uint { ERROR_PIPE_CONNECTED = 535 } + +enum : uint { ERROR_PIPE_LISTENING = 536 } + +enum : uint { ERROR_EA_ACCESS_DENIED = 994 } + +enum : uint { ERROR_OPERATION_ABORTED = 995 } + +enum : uint { ERROR_IO_INCOMPLETE = 996 } + +enum : uint { ERROR_IO_PENDING = 997 } + +enum : uint { ERROR_NOACCESS = 998 } + +enum : uint { ERROR_SWAPERROR = 999 } + +enum : uint { ERROR_STACK_OVERFLOW = 1001 } + +enum : uint { ERROR_INVALID_MESSAGE = 1002 } + +enum : uint { ERROR_CAN_NOT_COMPLETE = 1003 } + +enum : uint { ERROR_INVALID_FLAGS = 1004 } + +enum : uint { ERROR_UNRECOGNIZED_VOLUME = 1005 } + +enum : uint { ERROR_FILE_INVALID = 1006 } + +enum : uint { ERROR_FULLSCREEN_MODE = 1007 } + +enum : uint { ERROR_NO_TOKEN = 1008 } + +enum : uint { ERROR_BADDB = 1009 } + +enum : uint { ERROR_BADKEY = 1010 } + +enum : uint { ERROR_CANTOPEN = 1011 } + +enum : uint { ERROR_CANTREAD = 1012 } + +enum : uint { ERROR_CANTWRITE = 1013 } + +enum : uint { ERROR_REGISTRY_RECOVERED = 1014 } + +enum : uint { ERROR_REGISTRY_CORRUPT = 1015 } + +enum : uint { ERROR_REGISTRY_IO_FAILED = 1016 } + +enum : uint { ERROR_NOT_REGISTRY_FILE = 1017 } + +enum : uint { ERROR_KEY_DELETED = 1018 } + +enum : uint { ERROR_NO_LOG_SPACE = 1019 } + +enum : uint { ERROR_KEY_HAS_CHILDREN = 1020 } + +enum : uint { ERROR_CHILD_MUST_BE_VOLATILE = 1021 } + +enum : uint { ERROR_NOTIFY_ENUM_DIR = 1022 } + +enum : uint { ERROR_DEPENDENT_SERVICES_RUNNING = 1051 } + +enum : uint { ERROR_INVALID_SERVICE_CONTROL = 1052 } + +enum : uint { ERROR_SERVICE_REQUEST_TIMEOUT = 1053 } + +enum : uint { ERROR_SERVICE_NO_THREAD = 1054 } + +enum : uint { ERROR_SERVICE_DATABASE_LOCKED = 1055 } + +enum : uint { ERROR_SERVICE_ALREADY_RUNNING = 1056 } + +enum : uint { ERROR_INVALID_SERVICE_ACCOUNT = 1057 } + +enum : uint { ERROR_SERVICE_DISABLED = 1058 } + +enum : uint { ERROR_CIRCULAR_DEPENDENCY = 1059 } + +enum : uint { ERROR_SERVICE_DOES_NOT_EXIST = 1060 } + +enum : uint { ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061 } + +enum : uint { ERROR_SERVICE_NOT_ACTIVE = 1062 } + +enum : uint { ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063 } + +enum : uint { ERROR_EXCEPTION_IN_SERVICE = 1064 } + +enum : uint { ERROR_DATABASE_DOES_NOT_EXIST = 1065 } + +enum : uint { ERROR_SERVICE_SPECIFIC_ERROR = 1066 } + +enum : uint { ERROR_PROCESS_ABORTED = 1067 } + +enum : uint { ERROR_SERVICE_DEPENDENCY_FAIL = 1068 } + +enum : uint { ERROR_SERVICE_LOGON_FAILED = 1069 } + +enum : uint { ERROR_SERVICE_START_HANG = 1070 } + +enum : uint { ERROR_INVALID_SERVICE_LOCK = 1071 } + +enum : uint { ERROR_SERVICE_MARKED_FOR_DELETE = 1072 } + +enum : uint { ERROR_SERVICE_EXISTS = 1073 } + +enum : uint { ERROR_ALREADY_RUNNING_LKG = 1074 } + +enum : uint { ERROR_SERVICE_DEPENDENCY_DELETED = 1075 } + +enum : uint { ERROR_BOOT_ALREADY_ACCEPTED = 1076 } + +enum : uint { ERROR_SERVICE_NEVER_STARTED = 1077 } + +enum : uint { ERROR_DUPLICATE_SERVICE_NAME = 1078 } + +enum : uint { ERROR_DIFFERENT_SERVICE_ACCOUNT = 1079 } + +enum : uint { ERROR_CANNOT_DETECT_DRIVER_FAILURE = 1080 } + +enum : uint { ERROR_CANNOT_DETECT_PROCESS_ABORT = 1081 } + +enum : uint { ERROR_NO_RECOVERY_PROGRAM = 1082 } + +enum : uint { ERROR_SERVICE_NOT_IN_EXE = 1083 } + +enum : uint { ERROR_NOT_SAFEBOOT_SERVICE = 1084 } + +enum : uint { ERROR_END_OF_MEDIA = 1100 } + +enum : uint { ERROR_FILEMARK_DETECTED = 1101 } + +enum : uint { ERROR_BEGINNING_OF_MEDIA = 1102 } + +enum : uint { ERROR_SETMARK_DETECTED = 1103 } + +enum : uint { ERROR_NO_DATA_DETECTED = 1104 } + +enum : uint { ERROR_PARTITION_FAILURE = 1105 } + +enum : uint { ERROR_INVALID_BLOCK_LENGTH = 1106 } + +enum : uint { ERROR_DEVICE_NOT_PARTITIONED = 1107 } + +enum : uint { ERROR_UNABLE_TO_LOCK_MEDIA = 1108 } + +enum : uint { ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109 } + +enum : uint { ERROR_MEDIA_CHANGED = 1110 } + +enum : uint { ERROR_BUS_RESET = 1111 } + +enum : uint { ERROR_NO_MEDIA_IN_DRIVE = 1112 } + +enum : uint { ERROR_NO_UNICODE_TRANSLATION = 1113 } + +enum : uint { ERROR_DLL_INIT_FAILED = 1114 } + +enum : uint { ERROR_SHUTDOWN_IN_PROGRESS = 1115 } + +enum : uint { ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116 } + +enum : uint { ERROR_IO_DEVICE = 1117 } + +enum : uint { ERROR_SERIAL_NO_DEVICE = 1118 } + +enum : uint { ERROR_IRQ_BUSY = 1119 } + +enum : uint { ERROR_MORE_WRITES = 1120 } + +enum : uint { ERROR_COUNTER_TIMEOUT = 1121 } + +enum : uint { ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122 } + +enum : uint { ERROR_FLOPPY_WRONG_CYLINDER = 1123 } + +enum : uint { ERROR_FLOPPY_UNKNOWN_ERROR = 1124 } + +enum : uint { ERROR_FLOPPY_BAD_REGISTERS = 1125 } + +enum : uint { ERROR_DISK_RECALIBRATE_FAILED = 1126 } + +enum : uint { ERROR_DISK_OPERATION_FAILED = 1127 } + +enum : uint { ERROR_DISK_RESET_FAILED = 1128 } + +enum : uint { ERROR_EOM_OVERFLOW = 1129 } + +enum : uint { ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130 } + +enum : uint { ERROR_POSSIBLE_DEADLOCK = 1131 } + +enum : uint { ERROR_MAPPED_ALIGNMENT = 1132 } + +enum : uint { ERROR_SET_POWER_STATE_VETOED = 1140 } + +enum : uint { ERROR_SET_POWER_STATE_FAILED = 1141 } + +enum : uint { ERROR_TOO_MANY_LINKS = 1142 } + +enum : uint { ERROR_OLD_WIN_VERSION = 1150 } + +enum : uint { ERROR_APP_WRONG_OS = 1151 } + +enum : uint { ERROR_SINGLE_INSTANCE_APP = 1152 } + +enum : uint { ERROR_RMODE_APP = 1153 } + +enum : uint { ERROR_INVALID_DLL = 1154 } + +enum : uint { ERROR_NO_ASSOCIATION = 1155 } + +enum : uint { ERROR_DDE_FAIL = 1156 } + +enum : uint { ERROR_DLL_NOT_FOUND = 1157 } + +enum : uint { ERROR_NO_MORE_USER_HANDLES = 1158 } + +enum : uint { ERROR_MESSAGE_SYNC_ONLY = 1159 } + +enum : uint { ERROR_SOURCE_ELEMENT_EMPTY = 1160 } + +enum : uint { ERROR_DESTINATION_ELEMENT_FULL = 1161 } + +enum : uint { ERROR_ILLEGAL_ELEMENT_ADDRESS = 1162 } + +enum : uint { ERROR_MAGAZINE_NOT_PRESENT = 1163 } + +enum : uint { ERROR_DEVICE_REINITIALIZATION_NEEDED = 1164 } + +enum : uint { ERROR_DEVICE_REQUIRES_CLEANING = 1165 } + +enum : uint { ERROR_DEVICE_DOOR_OPEN = 1166 } + +enum : uint { ERROR_DEVICE_NOT_CONNECTED = 1167 } + +enum : uint { ERROR_NOT_FOUND = 1168 } + +enum : uint { ERROR_NO_MATCH = 1169 } + +enum : uint { ERROR_SET_NOT_FOUND = 1170 } + +enum : uint { ERROR_POINT_NOT_FOUND = 1171 } + +enum : uint { ERROR_NO_TRACKING_SERVICE = 1172 } + +enum : uint { ERROR_NO_VOLUME_ID = 1173 } + +enum : uint { ERROR_UNABLE_TO_REMOVE_REPLACED = 1175 } + +enum : uint { ERROR_UNABLE_TO_MOVE_REPLACEMENT = 1176 } + +enum : uint { ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 = 1177 } + +enum : uint { ERROR_JOURNAL_DELETE_IN_PROGRESS = 1178 } + +enum : uint { ERROR_JOURNAL_NOT_ACTIVE = 1179 } + +enum : uint { ERROR_POTENTIAL_FILE_FOUND = 1180 } + +enum : uint { ERROR_JOURNAL_ENTRY_DELETED = 1181 } + +enum : uint { ERROR_BAD_DEVICE = 1200 } + +enum : uint { ERROR_CONNECTION_UNAVAIL = 1201 } + +enum : uint { ERROR_DEVICE_ALREADY_REMEMBERED = 1202 } + +enum : uint { ERROR_NO_NET_OR_BAD_PATH = 1203 } + +enum : uint { ERROR_BAD_PROVIDER = 1204 } + +enum : uint { ERROR_CANNOT_OPEN_PROFILE = 1205 } + +enum : uint { ERROR_BAD_PROFILE = 1206 } + +enum : uint { ERROR_NOT_CONTAINER = 1207 } + +enum : uint { ERROR_EXTENDED_ERROR = 1208 } + +enum : uint { ERROR_INVALID_GROUPNAME = 1209 } + +enum : uint { ERROR_INVALID_COMPUTERNAME = 1210 } + +enum : uint { ERROR_INVALID_EVENTNAME = 1211 } + +enum : uint { ERROR_INVALID_DOMAINNAME = 1212 } + +enum : uint { ERROR_INVALID_SERVICENAME = 1213 } + +enum : uint { ERROR_INVALID_NETNAME = 1214 } + +enum : uint { ERROR_INVALID_SHARENAME = 1215 } + +enum : uint { ERROR_INVALID_PASSWORDNAME = 1216 } + +enum : uint { ERROR_INVALID_MESSAGENAME = 1217 } + +enum : uint { ERROR_INVALID_MESSAGEDEST = 1218 } + +enum : uint { ERROR_SESSION_CREDENTIAL_CONFLICT = 1219 } + +enum : uint { ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220 } + +enum : uint { ERROR_DUP_DOMAINNAME = 1221 } + +enum : uint { ERROR_NO_NETWORK = 1222 } + +enum : uint { ERROR_CANCELLED = 1223 } + +enum : uint { ERROR_USER_MAPPED_FILE = 1224 } + +enum : uint { ERROR_CONNECTION_REFUSED = 1225 } + +enum : uint { ERROR_GRACEFUL_DISCONNECT = 1226 } + +enum : uint { ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227 } + +enum : uint { ERROR_ADDRESS_NOT_ASSOCIATED = 1228 } + +enum : uint { ERROR_CONNECTION_INVALID = 1229 } + +enum : uint { ERROR_CONNECTION_ACTIVE = 1230 } + +enum : uint { ERROR_NETWORK_UNREACHABLE = 1231 } + +enum : uint { ERROR_HOST_UNREACHABLE = 1232 } + +enum : uint { ERROR_PROTOCOL_UNREACHABLE = 1233 } + +enum : uint { ERROR_PORT_UNREACHABLE = 1234 } + +enum : uint { ERROR_REQUEST_ABORTED = 1235 } + +enum : uint { ERROR_CONNECTION_ABORTED = 1236 } + +enum : uint { ERROR_RETRY = 1237 } + +enum : uint { ERROR_CONNECTION_COUNT_LIMIT = 1238 } + +enum : uint { ERROR_LOGIN_TIME_RESTRICTION = 1239 } + +enum : uint { ERROR_LOGIN_WKSTA_RESTRICTION = 1240 } + +enum : uint { ERROR_INCORRECT_ADDRESS = 1241 } + +enum : uint { ERROR_ALREADY_REGISTERED = 1242 } + +enum : uint { ERROR_SERVICE_NOT_FOUND = 1243 } + +enum : uint { ERROR_NOT_AUTHENTICATED = 1244 } + +enum : uint { ERROR_NOT_LOGGED_ON = 1245 } + +enum : uint { ERROR_CONTINUE = 1246 } + +enum : uint { ERROR_ALREADY_INITIALIZED = 1247 } + +enum : uint { ERROR_NO_MORE_DEVICES = 1248 } + +enum : uint { ERROR_NO_SUCH_SITE = 1249 } + +enum : uint { ERROR_DOMAIN_CONTROLLER_EXISTS = 1250 } + +enum : uint { ERROR_ONLY_IF_CONNECTED = 1251 } + +enum : uint { ERROR_OVERRIDE_NOCHANGES = 1252 } + +enum : uint { ERROR_BAD_USER_PROFILE = 1253 } + +enum : uint { ERROR_NOT_SUPPORTED_ON_SBS = 1254 } + +enum : uint { ERROR_SERVER_SHUTDOWN_IN_PROGRESS = 1255 } + +enum : uint { ERROR_HOST_DOWN = 1256 } + +enum : uint { ERROR_NON_ACCOUNT_SID = 1257 } + +enum : uint { ERROR_NON_DOMAIN_SID = 1258 } + +enum : uint { ERROR_APPHELP_BLOCK = 1259 } + +enum : uint { ERROR_ACCESS_DISABLED_BY_POLICY = 1260 } + +enum : uint { ERROR_REG_NAT_CONSUMPTION = 1261 } + +enum : uint { ERROR_CSCSHARE_OFFLINE = 1262 } + +enum : uint { ERROR_PKINIT_FAILURE = 1263 } + +enum : uint { ERROR_SMARTCARD_SUBSYSTEM_FAILURE = 1264 } + +enum : uint { ERROR_DOWNGRADE_DETECTED = 1265 } + +enum : uint { SEC_E_SMARTCARD_CERT_REVOKED = 1266 } + +enum : uint { SEC_E_ISSUING_CA_UNTRUSTED = 1267 } + +enum : uint { SEC_E_REVOCATION_OFFLINE_C = 1268 } + +enum : uint { SEC_E_PKINIT_CLIENT_FAILURE = 1269 } + +enum : uint { SEC_E_SMARTCARD_CERT_EXPIRED = 1270 } + +enum : uint { ERROR_MACHINE_LOCKED = 1271 } + +enum : uint { ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273 } + +enum : uint { ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED = 1274 } + +enum : uint { ERROR_DRIVER_BLOCKED = 1275 } + +enum : uint { ERROR_INVALID_IMPORT_OF_NON_DLL = 1276 } + +enum : uint { ERROR_NOT_ALL_ASSIGNED = 1300 } + +enum : uint { ERROR_SOME_NOT_MAPPED = 1301 } + +enum : uint { ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302 } + +enum : uint { ERROR_LOCAL_USER_SESSION_KEY = 1303 } + +enum : uint { ERROR_NULL_LM_PASSWORD = 1304 } + +enum : uint { ERROR_UNKNOWN_REVISION = 1305 } + +enum : uint { ERROR_REVISION_MISMATCH = 1306 } + +enum : uint { ERROR_INVALID_OWNER = 1307 } + +enum : uint { ERROR_INVALID_PRIMARY_GROUP = 1308 } + +enum : uint { ERROR_NO_IMPERSONATION_TOKEN = 1309 } + +enum : uint { ERROR_CANT_DISABLE_MANDATORY = 1310 } + +enum : uint { ERROR_NO_LOGON_SERVERS = 1311 } + +enum : uint { ERROR_NO_SUCH_LOGON_SESSION = 1312 } + +enum : uint { ERROR_NO_SUCH_PRIVILEGE = 1313 } + +enum : uint { ERROR_PRIVILEGE_NOT_HELD = 1314 } + +enum : uint { ERROR_INVALID_ACCOUNT_NAME = 1315 } + +enum : uint { ERROR_USER_EXISTS = 1316 } + +enum : uint { ERROR_NO_SUCH_USER = 1317 } + +enum : uint { ERROR_GROUP_EXISTS = 1318 } + +enum : uint { ERROR_NO_SUCH_GROUP = 1319 } + +enum : uint { ERROR_MEMBER_IN_GROUP = 1320 } + +enum : uint { ERROR_MEMBER_NOT_IN_GROUP = 1321 } + +enum : uint { ERROR_LAST_ADMIN = 1322 } + +enum : uint { ERROR_WRONG_PASSWORD = 1323 } + +enum : uint { ERROR_ILL_FORMED_PASSWORD = 1324 } + +enum : uint { ERROR_PASSWORD_RESTRICTION = 1325 } + +enum : uint { ERROR_LOGON_FAILURE = 1326 } + +enum : uint { ERROR_ACCOUNT_RESTRICTION = 1327 } + +enum : uint { ERROR_INVALID_LOGON_HOURS = 1328 } + +enum : uint { ERROR_INVALID_WORKSTATION = 1329 } + +enum : uint { ERROR_PASSWORD_EXPIRED = 1330 } + +enum : uint { ERROR_ACCOUNT_DISABLED = 1331 } + +enum : uint { ERROR_NONE_MAPPED = 1332 } + +enum : uint { ERROR_TOO_MANY_LUIDS_REQUESTED = 1333 } + +enum : uint { ERROR_LUIDS_EXHAUSTED = 1334 } + +enum : uint { ERROR_INVALID_SUB_AUTHORITY = 1335 } + +enum : uint { ERROR_INVALID_ACL = 1336 } + +enum : uint { ERROR_INVALID_SID = 1337 } + +enum : uint { ERROR_INVALID_SECURITY_DESCR = 1338 } + +enum : uint { ERROR_BAD_INHERITANCE_ACL = 1340 } + +enum : uint { ERROR_SERVER_DISABLED = 1341 } + +enum : uint { ERROR_SERVER_NOT_DISABLED = 1342 } + +enum : uint { ERROR_INVALID_ID_AUTHORITY = 1343 } + +enum : uint { ERROR_ALLOTTED_SPACE_EXCEEDED = 1344 } + +enum : uint { ERROR_INVALID_GROUP_ATTRIBUTES = 1345 } + +enum : uint { ERROR_BAD_IMPERSONATION_LEVEL = 1346 } + +enum : uint { ERROR_CANT_OPEN_ANONYMOUS = 1347 } + +enum : uint { ERROR_BAD_VALIDATION_CLASS = 1348 } + +enum : uint { ERROR_BAD_TOKEN_TYPE = 1349 } + +enum : uint { ERROR_NO_SECURITY_ON_OBJECT = 1350 } + +enum : uint { ERROR_CANT_ACCESS_DOMAIN_INFO = 1351 } + +enum : uint { ERROR_INVALID_SERVER_STATE = 1352 } + +enum : uint { ERROR_INVALID_DOMAIN_STATE = 1353 } + +enum : uint { ERROR_INVALID_DOMAIN_ROLE = 1354 } + +enum : uint { ERROR_NO_SUCH_DOMAIN = 1355 } + +enum : uint { ERROR_DOMAIN_EXISTS = 1356 } + +enum : uint { ERROR_DOMAIN_LIMIT_EXCEEDED = 1357 } + +enum : uint { ERROR_INTERNAL_DB_CORRUPTION = 1358 } + +enum : uint { ERROR_INTERNAL_ERROR = 1359 } + +enum : uint { ERROR_GENERIC_NOT_MAPPED = 1360 } + +enum : uint { ERROR_BAD_DESCRIPTOR_FORMAT = 1361 } + +enum : uint { ERROR_NOT_LOGON_PROCESS = 1362 } + +enum : uint { ERROR_LOGON_SESSION_EXISTS = 1363 } + +enum : uint { ERROR_NO_SUCH_PACKAGE = 1364 } + +enum : uint { ERROR_BAD_LOGON_SESSION_STATE = 1365 } + +enum : uint { ERROR_LOGON_SESSION_COLLISION = 1366 } + +enum : uint { ERROR_INVALID_LOGON_TYPE = 1367 } + +enum : uint { ERROR_CANNOT_IMPERSONATE = 1368 } + +enum : uint { ERROR_RXACT_INVALID_STATE = 1369 } + +enum : uint { ERROR_RXACT_COMMIT_FAILURE = 1370 } + +enum : uint { ERROR_SPECIAL_ACCOUNT = 1371 } + +enum : uint { ERROR_SPECIAL_GROUP = 1372 } + +enum : uint { ERROR_SPECIAL_USER = 1373 } + +enum : uint { ERROR_MEMBERS_PRIMARY_GROUP = 1374 } + +enum : uint { ERROR_TOKEN_ALREADY_IN_USE = 1375 } + +enum : uint { ERROR_NO_SUCH_ALIAS = 1376 } + +enum : uint { ERROR_MEMBER_NOT_IN_ALIAS = 1377 } + +enum : uint { ERROR_MEMBER_IN_ALIAS = 1378 } + +enum : uint { ERROR_ALIAS_EXISTS = 1379 } + +enum : uint { ERROR_LOGON_NOT_GRANTED = 1380 } + +enum : uint { ERROR_TOO_MANY_SECRETS = 1381 } + +enum : uint { ERROR_SECRET_TOO_LONG = 1382 } + +enum : uint { ERROR_INTERNAL_DB_ERROR = 1383 } + +enum : uint { ERROR_TOO_MANY_CONTEXT_IDS = 1384 } + +enum : uint { ERROR_LOGON_TYPE_NOT_GRANTED = 1385 } + +enum : uint { ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386 } + +enum : uint { ERROR_NO_SUCH_MEMBER = 1387 } + +enum : uint { ERROR_INVALID_MEMBER = 1388 } + +enum : uint { ERROR_TOO_MANY_SIDS = 1389 } + +enum : uint { ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390 } + +enum : uint { ERROR_NO_INHERITANCE = 1391 } + +enum : uint { ERROR_FILE_CORRUPT = 1392 } + +enum : uint { ERROR_DISK_CORRUPT = 1393 } + +enum : uint { ERROR_NO_USER_SESSION_KEY = 1394 } + +enum : uint { ERROR_LICENSE_QUOTA_EXCEEDED = 1395 } + +enum : uint { ERROR_WRONG_TARGET_NAME = 1396 } + +enum : uint { ERROR_MUTUAL_AUTH_FAILED = 1397 } + +enum : uint { ERROR_TIME_SKEW = 1398 } + +enum : uint { ERROR_CURRENT_DOMAIN_NOT_ALLOWED = 1399 } + +enum : uint { ERROR_INVALID_WINDOW_HANDLE = 1400 } + +enum : uint { ERROR_INVALID_MENU_HANDLE = 1401 } + +enum : uint { ERROR_INVALID_CURSOR_HANDLE = 1402 } + +enum : uint { ERROR_INVALID_ACCEL_HANDLE = 1403 } + +enum : uint { ERROR_INVALID_HOOK_HANDLE = 1404 } + +enum : uint { ERROR_INVALID_DWP_HANDLE = 1405 } + +enum : uint { ERROR_TLW_WITH_WSCHILD = 1406 } + +enum : uint { ERROR_CANNOT_FIND_WND_CLASS = 1407 } + +enum : uint { ERROR_WINDOW_OF_OTHER_THREAD = 1408 } + +enum : uint { ERROR_HOTKEY_ALREADY_REGISTERED = 1409 } + +enum : uint { ERROR_CLASS_ALREADY_EXISTS = 1410 } + +enum : uint { ERROR_CLASS_DOES_NOT_EXIST = 1411 } + +enum : uint { ERROR_CLASS_HAS_WINDOWS = 1412 } + +enum : uint { ERROR_INVALID_INDEX = 1413 } + +enum : uint { ERROR_INVALID_ICON_HANDLE = 1414 } + +enum : uint { ERROR_PRIVATE_DIALOG_INDEX = 1415 } + +enum : uint { ERROR_LISTBOX_ID_NOT_FOUND = 1416 } + +enum : uint { ERROR_NO_WILDCARD_CHARACTERS = 1417 } + +enum : uint { ERROR_CLIPBOARD_NOT_OPEN = 1418 } + +enum : uint { ERROR_HOTKEY_NOT_REGISTERED = 1419 } + +enum : uint { ERROR_WINDOW_NOT_DIALOG = 1420 } + +enum : uint { ERROR_CONTROL_ID_NOT_FOUND = 1421 } + +enum : uint { ERROR_INVALID_COMBOBOX_MESSAGE = 1422 } + +enum : uint { ERROR_WINDOW_NOT_COMBOBOX = 1423 } + +enum : uint { ERROR_INVALID_EDIT_HEIGHT = 1424 } + +enum : uint { ERROR_DC_NOT_FOUND = 1425 } + +enum : uint { ERROR_INVALID_HOOK_FILTER = 1426 } + +enum : uint { ERROR_INVALID_FILTER_PROC = 1427 } + +enum : uint { ERROR_HOOK_NEEDS_HMOD = 1428 } + +enum : uint { ERROR_GLOBAL_ONLY_HOOK = 1429 } + +enum : uint { ERROR_JOURNAL_HOOK_SET = 1430 } + +enum : uint { ERROR_HOOK_NOT_INSTALLED = 1431 } + +enum : uint { ERROR_INVALID_LB_MESSAGE = 1432 } + +enum : uint { ERROR_SETCOUNT_ON_BAD_LB = 1433 } + +enum : uint { ERROR_LB_WITHOUT_TABSTOPS = 1434 } + +enum : uint { ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435 } + +enum : uint { ERROR_CHILD_WINDOW_MENU = 1436 } + +enum : uint { ERROR_NO_SYSTEM_MENU = 1437 } + +enum : uint { ERROR_INVALID_MSGBOX_STYLE = 1438 } + +enum : uint { ERROR_INVALID_SPI_VALUE = 1439 } + +enum : uint { ERROR_SCREEN_ALREADY_LOCKED = 1440 } + +enum : uint { ERROR_HWNDS_HAVE_DIFF_PARENT = 1441 } + +enum : uint { ERROR_NOT_CHILD_WINDOW = 1442 } + +enum : uint { ERROR_INVALID_GW_COMMAND = 1443 } + +enum : uint { ERROR_INVALID_THREAD_ID = 1444 } + +enum : uint { ERROR_NON_MDICHILD_WINDOW = 1445 } + +enum : uint { ERROR_POPUP_ALREADY_ACTIVE = 1446 } + +enum : uint { ERROR_NO_SCROLLBARS = 1447 } + +enum : uint { ERROR_INVALID_SCROLLBAR_RANGE = 1448 } + +enum : uint { ERROR_INVALID_SHOWWIN_COMMAND = 1449 } + +enum : uint { ERROR_NO_SYSTEM_RESOURCES = 1450 } + +enum : uint { ERROR_NONPAGED_SYSTEM_RESOURCES = 1451 } + +enum : uint { ERROR_PAGED_SYSTEM_RESOURCES = 1452 } + +enum : uint { ERROR_WORKING_SET_QUOTA = 1453 } + +enum : uint { ERROR_PAGEFILE_QUOTA = 1454 } + +enum : uint { ERROR_COMMITMENT_LIMIT = 1455 } + +enum : uint { ERROR_MENU_ITEM_NOT_FOUND = 1456 } + +enum : uint { ERROR_INVALID_KEYBOARD_HANDLE = 1457 } + +enum : uint { ERROR_HOOK_TYPE_NOT_ALLOWED = 1458 } + +enum : uint { ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION = 1459 } + +enum : uint { ERROR_TIMEOUT = 1460 } + +enum : uint { ERROR_INVALID_MONITOR_HANDLE = 1461 } + +enum : uint { ERROR_EVENTLOG_FILE_CORRUPT = 1500 } + +enum : uint { ERROR_EVENTLOG_CANT_START = 1501 } + +enum : uint { ERROR_LOG_FILE_FULL = 1502 } + +enum : uint { ERROR_EVENTLOG_FILE_CHANGED = 1503 } + +enum : uint { ERROR_INSTALL_SERVICE_FAILURE = 1601 } + +enum : uint { ERROR_INSTALL_USEREXIT = 1602 } + +enum : uint { ERROR_INSTALL_FAILURE = 1603 } + +enum : uint { ERROR_INSTALL_SUSPEND = 1604 } + +enum : uint { ERROR_UNKNOWN_PRODUCT = 1605 } + +enum : uint { ERROR_UNKNOWN_FEATURE = 1606 } + +enum : uint { ERROR_UNKNOWN_COMPONENT = 1607 } + +enum : uint { ERROR_UNKNOWN_PROPERTY = 1608 } + +enum : uint { ERROR_INVALID_HANDLE_STATE = 1609 } + +enum : uint { ERROR_BAD_CONFIGURATION = 1610 } + +enum : uint { ERROR_INDEX_ABSENT = 1611 } + +enum : uint { ERROR_INSTALL_SOURCE_ABSENT = 1612 } + +enum : uint { ERROR_INSTALL_PACKAGE_VERSION = 1613 } + +enum : uint { ERROR_PRODUCT_UNINSTALLED = 1614 } + +enum : uint { ERROR_BAD_QUERY_SYNTAX = 1615 } + +enum : uint { ERROR_INVALID_FIELD = 1616 } + +enum : uint { ERROR_DEVICE_REMOVED = 1617 } + +enum : uint { ERROR_INSTALL_ALREADY_RUNNING = 1618 } + +enum : uint { ERROR_INSTALL_PACKAGE_OPEN_FAILED = 1619 } + +enum : uint { ERROR_INSTALL_PACKAGE_INVALID = 1620 } + +enum : uint { ERROR_INSTALL_UI_FAILURE = 1621 } + +enum : uint { ERROR_INSTALL_LOG_FAILURE = 1622 } + +enum : uint { ERROR_INSTALL_LANGUAGE_UNSUPPORTED = 1623 } + +enum : uint { ERROR_INSTALL_TRANSFORM_FAILURE = 1624 } + +enum : uint { ERROR_INSTALL_PACKAGE_REJECTED = 1625 } + +enum : uint { ERROR_FUNCTION_NOT_CALLED = 1626 } + +enum : uint { ERROR_FUNCTION_FAILED = 1627 } + +enum : uint { ERROR_INVALID_TABLE = 1628 } + +enum : uint { ERROR_DATATYPE_MISMATCH = 1629 } + +enum : uint { ERROR_UNSUPPORTED_TYPE = 1630 } + +enum : uint { ERROR_CREATE_FAILED = 1631 } + +enum : uint { ERROR_INSTALL_TEMP_UNWRITABLE = 1632 } + +enum : uint { ERROR_INSTALL_PLATFORM_UNSUPPORTED = 1633 } + +enum : uint { ERROR_INSTALL_NOTUSED = 1634 } + +enum : uint { ERROR_PATCH_PACKAGE_OPEN_FAILED = 1635 } + +enum : uint { ERROR_PATCH_PACKAGE_INVALID = 1636 } + +enum : uint { ERROR_PATCH_PACKAGE_UNSUPPORTED = 1637 } + +enum : uint { ERROR_PRODUCT_VERSION = 1638 } + +enum : uint { ERROR_INVALID_COMMAND_LINE = 1639 } + +enum : uint { ERROR_INSTALL_REMOTE_DISALLOWED = 1640 } + +enum : uint { ERROR_SUCCESS_REBOOT_INITIATED = 1641 } + +enum : uint { ERROR_PATCH_TARGET_NOT_FOUND = 1642 } + +enum : uint { ERROR_PATCH_PACKAGE_REJECTED = 1643 } + +enum : uint { ERROR_INSTALL_TRANSFORM_REJECTED = 1644 } + +enum : uint { RPC_S_INVALID_STRING_BINDING = 1700 } + +enum : uint { RPC_S_WRONG_KIND_OF_BINDING = 1701 } + +enum : uint { RPC_S_INVALID_BINDING = 1702 } + +enum : uint { RPC_S_PROTSEQ_NOT_SUPPORTED = 1703 } + +enum : uint { RPC_S_INVALID_RPC_PROTSEQ = 1704 } + +enum : uint { RPC_S_INVALID_STRING_UUID = 1705 } + +enum : uint { RPC_S_INVALID_ENDPOINT_FORMAT = 1706 } + +enum : uint { RPC_S_INVALID_NET_ADDR = 1707 } + +enum : uint { RPC_S_NO_ENDPOINT_FOUND = 1708 } + +enum : uint { RPC_S_INVALID_TIMEOUT = 1709 } + +enum : uint { RPC_S_OBJECT_NOT_FOUND = 1710 } + +enum : uint { RPC_S_ALREADY_REGISTERED = 1711 } + +enum : uint { RPC_S_TYPE_ALREADY_REGISTERED = 1712 } + +enum : uint { RPC_S_ALREADY_LISTENING = 1713 } + +enum : uint { RPC_S_NO_PROTSEQS_REGISTERED = 1714 } + +enum : uint { RPC_S_NOT_LISTENING = 1715 } + +enum : uint { RPC_S_UNKNOWN_MGR_TYPE = 1716 } + +enum : uint { RPC_S_UNKNOWN_IF = 1717 } + +enum : uint { RPC_S_NO_BINDINGS = 1718 } + +enum : uint { RPC_S_NO_PROTSEQS = 1719 } + +enum : uint { RPC_S_CANT_CREATE_ENDPOINT = 1720 } + +enum : uint { RPC_S_OUT_OF_RESOURCES = 1721 } + +enum : uint { RPC_S_SERVER_UNAVAILABLE = 1722 } + +enum : uint { RPC_S_SERVER_TOO_BUSY = 1723 } + +enum : uint { RPC_S_INVALID_NETWORK_OPTIONS = 1724 } + +enum : uint { RPC_S_NO_CALL_ACTIVE = 1725 } + +enum : uint { RPC_S_CALL_FAILED = 1726 } + +enum : uint { RPC_S_CALL_FAILED_DNE = 1727 } + +enum : uint { RPC_S_PROTOCOL_ERROR = 1728 } + +enum : uint { RPC_S_UNSUPPORTED_TRANS_SYN = 1730 } + +enum : uint { RPC_S_UNSUPPORTED_TYPE = 1732 } + +enum : uint { RPC_S_INVALID_TAG = 1733 } + +enum : uint { RPC_S_INVALID_BOUND = 1734 } + +enum : uint { RPC_S_NO_ENTRY_NAME = 1735 } + +enum : uint { RPC_S_INVALID_NAME_SYNTAX = 1736 } + +enum : uint { RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737 } + +enum : uint { RPC_S_UUID_NO_ADDRESS = 1739 } + +enum : uint { RPC_S_DUPLICATE_ENDPOINT = 1740 } + +enum : uint { RPC_S_UNKNOWN_AUTHN_TYPE = 1741 } + +enum : uint { RPC_S_MAX_CALLS_TOO_SMALL = 1742 } + +enum : uint { RPC_S_STRING_TOO_LONG = 1743 } + +enum : uint { RPC_S_PROTSEQ_NOT_FOUND = 1744 } + +enum : uint { RPC_S_PROCNUM_OUT_OF_RANGE = 1745 } + +enum : uint { RPC_S_BINDING_HAS_NO_AUTH = 1746 } + +enum : uint { RPC_S_UNKNOWN_AUTHN_SERVICE = 1747 } + +enum : uint { RPC_S_UNKNOWN_AUTHN_LEVEL = 1748 } + +enum : uint { RPC_S_INVALID_AUTH_IDENTITY = 1749 } + +enum : uint { RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750 } + +enum : uint { EPT_S_INVALID_ENTRY = 1751 } + +enum : uint { EPT_S_CANT_PERFORM_OP = 1752 } + +enum : uint { EPT_S_NOT_REGISTERED = 1753 } + +enum : uint { RPC_S_NOTHING_TO_EXPORT = 1754 } + +enum : uint { RPC_S_INCOMPLETE_NAME = 1755 } + +enum : uint { RPC_S_INVALID_VERS_OPTION = 1756 } + +enum : uint { RPC_S_NO_MORE_MEMBERS = 1757 } + +enum : uint { RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758 } + +enum : uint { RPC_S_INTERFACE_NOT_FOUND = 1759 } + +enum : uint { RPC_S_ENTRY_ALREADY_EXISTS = 1760 } + +enum : uint { RPC_S_ENTRY_NOT_FOUND = 1761 } + +enum : uint { RPC_S_NAME_SERVICE_UNAVAILABLE = 1762 } + +enum : uint { RPC_S_INVALID_NAF_ID = 1763 } + +enum : uint { RPC_S_CANNOT_SUPPORT = 1764 } + +enum : uint { RPC_S_NO_CONTEXT_AVAILABLE = 1765 } + +enum : uint { RPC_S_INTERNAL_ERROR = 1766 } + +enum : uint { RPC_S_ZERO_DIVIDE = 1767 } + +enum : uint { RPC_S_ADDRESS_ERROR = 1768 } + +enum : uint { RPC_S_FP_DIV_ZERO = 1769 } + +enum : uint { RPC_S_FP_UNDERFLOW = 1770 } + +enum : uint { RPC_S_FP_OVERFLOW = 1771 } + +enum : uint { RPC_X_NO_MORE_ENTRIES = 1772 } + +enum : uint { RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773 } + +enum : uint { RPC_X_SS_CHAR_TRANS_SHORT_FILE = 1774 } + +enum : uint { RPC_X_SS_IN_NULL_CONTEXT = 1775 } + +enum : uint { RPC_X_SS_CONTEXT_DAMAGED = 1777 } + +enum : uint { RPC_X_SS_HANDLES_MISMATCH = 1778 } + +enum : uint { RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779 } + +enum : uint { RPC_X_NULL_REF_POINTER = 1780 } + +enum : uint { RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781 } + +enum : uint { RPC_X_BYTE_COUNT_TOO_SMALL = 1782 } + +enum : uint { RPC_X_BAD_STUB_DATA = 1783 } + +enum : uint { ERROR_INVALID_USER_BUFFER = 1784 } + +enum : uint { ERROR_UNRECOGNIZED_MEDIA = 1785 } + +enum : uint { ERROR_NO_TRUST_LSA_SECRET = 1786 } + +enum : uint { ERROR_NO_TRUST_SAM_ACCOUNT = 1787 } + +enum : uint { ERROR_TRUSTED_DOMAIN_FAILURE = 1788 } + +enum : uint { ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789 } + +enum : uint { ERROR_TRUST_FAILURE = 1790 } + +enum : uint { RPC_S_CALL_IN_PROGRESS = 1791 } + +enum : uint { ERROR_NETLOGON_NOT_STARTED = 1792 } + +enum : uint { ERROR_ACCOUNT_EXPIRED = 1793 } + +enum : uint { ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794 } + +enum : uint { ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = 1795 } + +enum : uint { ERROR_UNKNOWN_PORT = 1796 } + +enum : uint { ERROR_UNKNOWN_PRINTER_DRIVER = 1797 } + +enum : uint { ERROR_UNKNOWN_PRINTPROCESSOR = 1798 } + +enum : uint { ERROR_INVALID_SEPARATOR_FILE = 1799 } + +enum : uint { ERROR_INVALID_PRIORITY = 1800 } + +enum : uint { ERROR_INVALID_PRINTER_NAME = 1801 } + +enum : uint { ERROR_PRINTER_ALREADY_EXISTS = 1802 } + +enum : uint { ERROR_INVALID_PRINTER_COMMAND = 1803 } + +enum : uint { ERROR_INVALID_DATATYPE = 1804 } + +enum : uint { ERROR_INVALID_ENVIRONMENT = 1805 } + +enum : uint { RPC_S_NO_MORE_BINDINGS = 1806 } + +enum : uint { ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807 } + +enum : uint { ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808 } + +enum : uint { ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809 } + +enum : uint { ERROR_DOMAIN_TRUST_INCONSISTENT = 1810 } + +enum : uint { ERROR_SERVER_HAS_OPEN_HANDLES = 1811 } + +enum : uint { ERROR_RESOURCE_DATA_NOT_FOUND = 1812 } + +enum : uint { ERROR_RESOURCE_TYPE_NOT_FOUND = 1813 } + +enum : uint { ERROR_RESOURCE_NAME_NOT_FOUND = 1814 } + +enum : uint { ERROR_RESOURCE_LANG_NOT_FOUND = 1815 } + +enum : uint { ERROR_NOT_ENOUGH_QUOTA = 1816 } + +enum : uint { RPC_S_NO_INTERFACES = 1817 } + +enum : uint { RPC_S_CALL_CANCELLED = 1818 } + +enum : uint { RPC_S_BINDING_INCOMPLETE = 1819 } + +enum : uint { RPC_S_COMM_FAILURE = 1820 } + +enum : uint { RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821 } + +enum : uint { RPC_S_NO_PRINC_NAME = 1822 } + +enum : uint { RPC_S_NOT_RPC_ERROR = 1823 } + +enum : uint { RPC_S_UUID_LOCAL_ONLY = 1824 } + +enum : uint { RPC_S_SEC_PKG_ERROR = 1825 } + +enum : uint { RPC_S_NOT_CANCELLED = 1826 } + +enum : uint { RPC_X_INVALID_ES_ACTION = 1827 } + +enum : uint { RPC_X_WRONG_ES_VERSION = 1828 } + +enum : uint { RPC_X_WRONG_STUB_VERSION = 1829 } + +enum : uint { RPC_X_INVALID_PIPE_OBJECT = 1830 } + +enum : uint { RPC_X_WRONG_PIPE_ORDER = 1831 } + +enum : uint { RPC_X_WRONG_PIPE_VERSION = 1832 } + +enum : uint { RPC_S_GROUP_MEMBER_NOT_FOUND = 1898 } + +enum : uint { EPT_S_CANT_CREATE = 1899 } + +enum : uint { RPC_S_INVALID_OBJECT = 1900 } + +enum : uint { ERROR_INVALID_TIME = 1901 } + +enum : uint { ERROR_INVALID_FORM_NAME = 1902 } + +enum : uint { ERROR_INVALID_FORM_SIZE = 1903 } + +enum : uint { ERROR_ALREADY_WAITING = 1904 } + +enum : uint { ERROR_PRINTER_DELETED = 1905 } + +enum : uint { ERROR_INVALID_PRINTER_STATE = 1906 } + +enum : uint { ERROR_PASSWORD_MUST_CHANGE = 1907 } + +enum : uint { ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908 } + +enum : uint { ERROR_ACCOUNT_LOCKED_OUT = 1909 } + +enum : uint { OR_INVALID_OXID = 1910 } + +enum : uint { OR_INVALID_OID = 1911 } + +enum : uint { OR_INVALID_SET = 1912 } + +enum : uint { RPC_S_SEND_INCOMPLETE = 1913 } + +enum : uint { RPC_S_INVALID_ASYNC_HANDLE = 1914 } + +enum : uint { RPC_S_INVALID_ASYNC_CALL = 1915 } + +enum : uint { RPC_X_PIPE_CLOSED = 1916 } + +enum : uint { RPC_X_PIPE_DISCIPLINE_ERROR = 1917 } + +enum : uint { RPC_X_PIPE_EMPTY = 1918 } + +enum : uint { ERROR_NO_SITENAME = 1919 } + +enum : uint { ERROR_CANT_ACCESS_FILE = 1920 } + +enum : uint { ERROR_CANT_RESOLVE_FILENAME = 1921 } + +enum : uint { RPC_S_ENTRY_TYPE_MISMATCH = 1922 } + +enum : uint { RPC_S_NOT_ALL_OBJS_EXPORTED = 1923 } + +enum : uint { RPC_S_INTERFACE_NOT_EXPORTED = 1924 } + +enum : uint { RPC_S_PROFILE_NOT_ADDED = 1925 } + +enum : uint { RPC_S_PRF_ELT_NOT_ADDED = 1926 } + +enum : uint { RPC_S_PRF_ELT_NOT_REMOVED = 1927 } + +enum : uint { RPC_S_GRP_ELT_NOT_ADDED = 1928 } + +enum : uint { RPC_S_GRP_ELT_NOT_REMOVED = 1929 } + +enum : uint { ERROR_KM_DRIVER_BLOCKED = 1930 } + +enum : uint { ERROR_CONTEXT_EXPIRED = 1931 } + +enum : uint { ERROR_INVALID_PIXEL_FORMAT = 2000 } + +enum : uint { ERROR_BAD_DRIVER = 2001 } + +enum : uint { ERROR_INVALID_WINDOW_STYLE = 2002 } + +enum : uint { ERROR_METAFILE_NOT_SUPPORTED = 2003 } + +enum : uint { ERROR_TRANSFORM_NOT_SUPPORTED = 2004 } + +enum : uint { ERROR_CLIPPING_NOT_SUPPORTED = 2005 } + +enum : uint { ERROR_INVALID_CMM = 2010 } + +enum : uint { ERROR_INVALID_PROFILE = 2011 } + +enum : uint { ERROR_TAG_NOT_FOUND = 2012 } + +enum : uint { ERROR_TAG_NOT_PRESENT = 2013 } + +enum : uint { ERROR_DUPLICATE_TAG = 2014 } + +enum : uint { ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE = 2015 } + +enum : uint { ERROR_PROFILE_NOT_FOUND = 2016 } + +enum : uint { ERROR_INVALID_COLORSPACE = 2017 } + +enum : uint { ERROR_ICM_NOT_ENABLED = 2018 } + +enum : uint { ERROR_DELETING_ICM_XFORM = 2019 } + +enum : uint { ERROR_INVALID_TRANSFORM = 2020 } + +enum : uint { ERROR_COLORSPACE_MISMATCH = 2021 } + +enum : uint { ERROR_INVALID_COLORINDEX = 2022 } + +enum : uint { ERROR_CONNECTED_OTHER_PASSWORD = 2108 } + +enum : uint { ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT = 2109 } + +enum : uint { ERROR_BAD_USERNAME = 2202 } + +enum : uint { ERROR_NOT_CONNECTED = 2250 } + +enum : uint { ERROR_OPEN_FILES = 2401 } + +enum : uint { ERROR_ACTIVE_CONNECTIONS = 2402 } + +enum : uint { ERROR_DEVICE_IN_USE = 2404 } + +enum : uint { ERROR_UNKNOWN_PRINT_MONITOR = 3000 } + +enum : uint { ERROR_PRINTER_DRIVER_IN_USE = 3001 } + +enum : uint { ERROR_SPOOL_FILE_NOT_FOUND = 3002 } + +enum : uint { ERROR_SPL_NO_STARTDOC = 3003 } + +enum : uint { ERROR_SPL_NO_ADDJOB = 3004 } + +enum : uint { ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = 3005 } + +enum : uint { ERROR_PRINT_MONITOR_ALREADY_INSTALLED = 3006 } + +enum : uint { ERROR_INVALID_PRINT_MONITOR = 3007 } + +enum : uint { ERROR_PRINT_MONITOR_IN_USE = 3008 } + +enum : uint { ERROR_PRINTER_HAS_JOBS_QUEUED = 3009 } + +enum : uint { ERROR_SUCCESS_REBOOT_REQUIRED = 3010 } + +enum : uint { ERROR_SUCCESS_RESTART_REQUIRED = 3011 } + +enum : uint { ERROR_PRINTER_NOT_FOUND = 3012 } + +enum : uint { ERROR_PRINTER_DRIVER_WARNED = 3013 } + +enum : uint { ERROR_PRINTER_DRIVER_BLOCKED = 3014 } + +enum : uint { ERROR_WINS_INTERNAL = 4000 } + +enum : uint { ERROR_CAN_NOT_DEL_LOCAL_WINS = 4001 } + +enum : uint { ERROR_STATIC_INIT = 4002 } + +enum : uint { ERROR_INC_BACKUP = 4003 } + +enum : uint { ERROR_FULL_BACKUP = 4004 } + +enum : uint { ERROR_REC_NON_EXISTENT = 4005 } + +enum : uint { ERROR_RPL_NOT_ALLOWED = 4006 } + +enum : uint { ERROR_DHCP_ADDRESS_CONFLICT = 4100 } + +enum : uint { ERROR_WMI_GUID_NOT_FOUND = 4200 } + +enum : uint { ERROR_WMI_INSTANCE_NOT_FOUND = 4201 } + +enum : uint { ERROR_WMI_ITEMID_NOT_FOUND = 4202 } + +enum : uint { ERROR_WMI_TRY_AGAIN = 4203 } + +enum : uint { ERROR_WMI_DP_NOT_FOUND = 4204 } + +enum : uint { ERROR_WMI_UNRESOLVED_INSTANCE_REF = 4205 } + +enum : uint { ERROR_WMI_ALREADY_ENABLED = 4206 } + +enum : uint { ERROR_WMI_GUID_DISCONNECTED = 4207 } + +enum : uint { ERROR_WMI_SERVER_UNAVAILABLE = 4208 } + +enum : uint { ERROR_WMI_DP_FAILED = 4209 } + +enum : uint { ERROR_WMI_INVALID_MOF = 4210 } + +enum : uint { ERROR_WMI_INVALID_REGINFO = 4211 } + +enum : uint { ERROR_WMI_ALREADY_DISABLED = 4212 } + +enum : uint { ERROR_WMI_READ_ONLY = 4213 } + +enum : uint { ERROR_WMI_SET_FAILURE = 4214 } + +enum : uint { ERROR_INVALID_MEDIA = 4300 } + +enum : uint { ERROR_INVALID_LIBRARY = 4301 } + +enum : uint { ERROR_INVALID_MEDIA_POOL = 4302 } + +enum : uint { ERROR_DRIVE_MEDIA_MISMATCH = 4303 } + +enum : uint { ERROR_MEDIA_OFFLINE = 4304 } + +enum : uint { ERROR_LIBRARY_OFFLINE = 4305 } + +enum : uint { ERROR_EMPTY = 4306 } + +enum : uint { ERROR_NOT_EMPTY = 4307 } + +enum : uint { ERROR_MEDIA_UNAVAILABLE = 4308 } + +enum : uint { ERROR_RESOURCE_DISABLED = 4309 } + +enum : uint { ERROR_INVALID_CLEANER = 4310 } + +enum : uint { ERROR_UNABLE_TO_CLEAN = 4311 } + +enum : uint { ERROR_OBJECT_NOT_FOUND = 4312 } + +enum : uint { ERROR_DATABASE_FAILURE = 4313 } + +enum : uint { ERROR_DATABASE_FULL = 4314 } + +enum : uint { ERROR_MEDIA_INCOMPATIBLE = 4315 } + +enum : uint { ERROR_RESOURCE_NOT_PRESENT = 4316 } + +enum : uint { ERROR_INVALID_OPERATION = 4317 } + +enum : uint { ERROR_MEDIA_NOT_AVAILABLE = 4318 } + +enum : uint { ERROR_DEVICE_NOT_AVAILABLE = 4319 } + +enum : uint { ERROR_REQUEST_REFUSED = 4320 } + +enum : uint { ERROR_INVALID_DRIVE_OBJECT = 4321 } + +enum : uint { ERROR_LIBRARY_FULL = 4322 } + +enum : uint { ERROR_MEDIUM_NOT_ACCESSIBLE = 4323 } + +enum : uint { ERROR_UNABLE_TO_LOAD_MEDIUM = 4324 } + +enum : uint { ERROR_UNABLE_TO_INVENTORY_DRIVE = 4325 } + +enum : uint { ERROR_UNABLE_TO_INVENTORY_SLOT = 4326 } + +enum : uint { ERROR_UNABLE_TO_INVENTORY_TRANSPORT = 4327 } + +enum : uint { ERROR_TRANSPORT_FULL = 4328 } + +enum : uint { ERROR_CONTROLLING_IEPORT = 4329 } + +enum : uint { ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA = 4330 } + +enum : uint { ERROR_CLEANER_SLOT_SET = 4331 } + +enum : uint { ERROR_CLEANER_SLOT_NOT_SET = 4332 } + +enum : uint { ERROR_CLEANER_CARTRIDGE_SPENT = 4333 } + +enum : uint { ERROR_UNEXPECTED_OMID = 4334 } + +enum : uint { ERROR_CANT_DELETE_LAST_ITEM = 4335 } + +enum : uint { ERROR_MESSAGE_EXCEEDS_MAX_SIZE = 4336 } + +enum : uint { ERROR_VOLUME_CONTAINS_SYS_FILES = 4337 } + +enum : uint { ERROR_INDIGENOUS_TYPE = 4338 } + +enum : uint { ERROR_NO_SUPPORTING_DRIVES = 4339 } + +enum : uint { ERROR_CLEANER_CARTRIDGE_INSTALLED = 4340 } + +enum : uint { ERROR_FILE_OFFLINE = 4350 } + +enum : uint { ERROR_REMOTE_STORAGE_NOT_ACTIVE = 4351 } + +enum : uint { ERROR_REMOTE_STORAGE_MEDIA_ERROR = 4352 } + +enum : uint { ERROR_NOT_A_REPARSE_POINT = 4390 } + +enum : uint { ERROR_REPARSE_ATTRIBUTE_CONFLICT = 4391 } + +enum : uint { ERROR_INVALID_REPARSE_DATA = 4392 } + +enum : uint { ERROR_REPARSE_TAG_INVALID = 4393 } + +enum : uint { ERROR_REPARSE_TAG_MISMATCH = 4394 } + +enum : uint { ERROR_VOLUME_NOT_SIS_ENABLED = 4500 } + +enum : uint { ERROR_DEPENDENT_RESOURCE_EXISTS = 5001 } + +enum : uint { ERROR_DEPENDENCY_NOT_FOUND = 5002 } + +enum : uint { ERROR_DEPENDENCY_ALREADY_EXISTS = 5003 } + +enum : uint { ERROR_RESOURCE_NOT_ONLINE = 5004 } + +enum : uint { ERROR_HOST_NODE_NOT_AVAILABLE = 5005 } + +enum : uint { ERROR_RESOURCE_NOT_AVAILABLE = 5006 } + +enum : uint { ERROR_RESOURCE_NOT_FOUND = 5007 } + +enum : uint { ERROR_SHUTDOWN_CLUSTER = 5008 } + +enum : uint { ERROR_CANT_EVICT_ACTIVE_NODE = 5009 } + +enum : uint { ERROR_OBJECT_ALREADY_EXISTS = 5010 } + +enum : uint { ERROR_OBJECT_IN_LIST = 5011 } + +enum : uint { ERROR_GROUP_NOT_AVAILABLE = 5012 } + +enum : uint { ERROR_GROUP_NOT_FOUND = 5013 } + +enum : uint { ERROR_GROUP_NOT_ONLINE = 5014 } + +enum : uint { ERROR_HOST_NODE_NOT_RESOURCE_OWNER = 5015 } + +enum : uint { ERROR_HOST_NODE_NOT_GROUP_OWNER = 5016 } + +enum : uint { ERROR_RESMON_CREATE_FAILED = 5017 } + +enum : uint { ERROR_RESMON_ONLINE_FAILED = 5018 } + +enum : uint { ERROR_RESOURCE_ONLINE = 5019 } + +enum : uint { ERROR_QUORUM_RESOURCE = 5020 } + +enum : uint { ERROR_NOT_QUORUM_CAPABLE = 5021 } + +enum : uint { ERROR_CLUSTER_SHUTTING_DOWN = 5022 } + +enum : uint { ERROR_INVALID_STATE = 5023 } + +enum : uint { ERROR_RESOURCE_PROPERTIES_STORED = 5024 } + +enum : uint { ERROR_NOT_QUORUM_CLASS = 5025 } + +enum : uint { ERROR_CORE_RESOURCE = 5026 } + +enum : uint { ERROR_QUORUM_RESOURCE_ONLINE_FAILED = 5027 } + +enum : uint { ERROR_QUORUMLOG_OPEN_FAILED = 5028 } + +enum : uint { ERROR_CLUSTERLOG_CORRUPT = 5029 } + +enum : uint { ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE = 5030 } + +enum : uint { ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE = 5031 } + +enum : uint { ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND = 5032 } + +enum : uint { ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE = 5033 } + +enum : uint { ERROR_QUORUM_OWNER_ALIVE = 5034 } + +enum : uint { ERROR_NETWORK_NOT_AVAILABLE = 5035 } + +enum : uint { ERROR_NODE_NOT_AVAILABLE = 5036 } + +enum : uint { ERROR_ALL_NODES_NOT_AVAILABLE = 5037 } + +enum : uint { ERROR_RESOURCE_FAILED = 5038 } + +enum : uint { ERROR_CLUSTER_INVALID_NODE = 5039 } + +enum : uint { ERROR_CLUSTER_NODE_EXISTS = 5040 } + +enum : uint { ERROR_CLUSTER_JOIN_IN_PROGRESS = 5041 } + +enum : uint { ERROR_CLUSTER_NODE_NOT_FOUND = 5042 } + +enum : uint { ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND = 5043 } + +enum : uint { ERROR_CLUSTER_NETWORK_EXISTS = 5044 } + +enum : uint { ERROR_CLUSTER_NETWORK_NOT_FOUND = 5045 } + +enum : uint { ERROR_CLUSTER_NETINTERFACE_EXISTS = 5046 } + +enum : uint { ERROR_CLUSTER_NETINTERFACE_NOT_FOUND = 5047 } + +enum : uint { ERROR_CLUSTER_INVALID_REQUEST = 5048 } + +enum : uint { ERROR_CLUSTER_INVALID_NETWORK_PROVIDER = 5049 } + +enum : uint { ERROR_CLUSTER_NODE_DOWN = 5050 } + +enum : uint { ERROR_CLUSTER_NODE_UNREACHABLE = 5051 } + +enum : uint { ERROR_CLUSTER_NODE_NOT_MEMBER = 5052 } + +enum : uint { ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS = 5053 } + +enum : uint { ERROR_CLUSTER_INVALID_NETWORK = 5054 } + +enum : uint { ERROR_CLUSTER_NODE_UP = 5056 } + +enum : uint { ERROR_CLUSTER_IPADDR_IN_USE = 5057 } + +enum : uint { ERROR_CLUSTER_NODE_NOT_PAUSED = 5058 } + +enum : uint { ERROR_CLUSTER_NO_SECURITY_CONTEXT = 5059 } + +enum : uint { ERROR_CLUSTER_NETWORK_NOT_INTERNAL = 5060 } + +enum : uint { ERROR_CLUSTER_NODE_ALREADY_UP = 5061 } + +enum : uint { ERROR_CLUSTER_NODE_ALREADY_DOWN = 5062 } + +enum : uint { ERROR_CLUSTER_NETWORK_ALREADY_ONLINE = 5063 } + +enum : uint { ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE = 5064 } + +enum : uint { ERROR_CLUSTER_NODE_ALREADY_MEMBER = 5065 } + +enum : uint { ERROR_CLUSTER_LAST_INTERNAL_NETWORK = 5066 } + +enum : uint { ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS = 5067 } + +enum : uint { ERROR_INVALID_OPERATION_ON_QUORUM = 5068 } + +enum : uint { ERROR_DEPENDENCY_NOT_ALLOWED = 5069 } + +enum : uint { ERROR_CLUSTER_NODE_PAUSED = 5070 } + +enum : uint { ERROR_NODE_CANT_HOST_RESOURCE = 5071 } + +enum : uint { ERROR_CLUSTER_NODE_NOT_READY = 5072 } + +enum : uint { ERROR_CLUSTER_NODE_SHUTTING_DOWN = 5073 } + +enum : uint { ERROR_CLUSTER_JOIN_ABORTED = 5074 } + +enum : uint { ERROR_CLUSTER_INCOMPATIBLE_VERSIONS = 5075 } + +enum : uint { ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED = 5076 } + +enum : uint { ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED = 5077 } + +enum : uint { ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND = 5078 } + +enum : uint { ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED = 5079 } + +enum : uint { ERROR_CLUSTER_RESNAME_NOT_FOUND = 5080 } + +enum : uint { ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED = 5081 } + +enum : uint { ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST = 5082 } + +enum : uint { ERROR_CLUSTER_DATABASE_SEQMISMATCH = 5083 } + +enum : uint { ERROR_RESMON_INVALID_STATE = 5084 } + +enum : uint { ERROR_CLUSTER_GUM_NOT_LOCKER = 5085 } + +enum : uint { ERROR_QUORUM_DISK_NOT_FOUND = 5086 } + +enum : uint { ERROR_DATABASE_BACKUP_CORRUPT = 5087 } + +enum : uint { ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT = 5088 } + +enum : uint { ERROR_RESOURCE_PROPERTY_UNCHANGEABLE = 5089 } + +enum : uint { ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE = 5890 } + +enum : uint { ERROR_CLUSTER_QUORUMLOG_NOT_FOUND = 5891 } + +enum : uint { ERROR_CLUSTER_MEMBERSHIP_HALT = 5892 } + +enum : uint { ERROR_CLUSTER_INSTANCE_ID_MISMATCH = 5893 } + +enum : uint { ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP = 5894 } + +enum : uint { ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH = 5895 } + +enum : uint { ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP = 5896 } + +enum : uint { ERROR_CLUSTER_PARAMETER_MISMATCH = 5897 } + +enum : uint { ERROR_NODE_CANNOT_BE_CLUSTERED = 5898 } + +enum : uint { ERROR_CLUSTER_WRONG_OS_VERSION = 5899 } + +enum : uint { ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME = 5900 } + +enum : uint { ERROR_ENCRYPTION_FAILED = 6000 } + +enum : uint { ERROR_DECRYPTION_FAILED = 6001 } + +enum : uint { ERROR_FILE_ENCRYPTED = 6002 } + +enum : uint { ERROR_NO_RECOVERY_POLICY = 6003 } + +enum : uint { ERROR_NO_EFS = 6004 } + +enum : uint { ERROR_WRONG_EFS = 6005 } + +enum : uint { ERROR_NO_USER_KEYS = 6006 } + +enum : uint { ERROR_FILE_NOT_ENCRYPTED = 6007 } + +enum : uint { ERROR_NOT_EXPORT_FORMAT = 6008 } + +enum : uint { ERROR_FILE_READ_ONLY = 6009 } + +enum : uint { ERROR_DIR_EFS_DISALLOWED = 6010 } + +enum : uint { ERROR_EFS_SERVER_NOT_TRUSTED = 6011 } + +enum : uint { ERROR_BAD_RECOVERY_POLICY = 6012 } + +enum : uint { ERROR_EFS_ALG_BLOB_TOO_BIG = 6013 } + +enum : uint { ERROR_VOLUME_NOT_SUPPORT_EFS = 6014 } + +enum : uint { ERROR_EFS_DISABLED = 6015 } + +enum : uint { ERROR_EFS_VERSION_NOT_SUPPORT = 6016 } + +enum : uint { ERROR_NO_BROWSER_SERVERS_FOUND = 6118 } + +enum : uint { SCHED_E_SERVICE_NOT_LOCALSYSTEM = 6200 } + +enum : uint { ERROR_CTX_WINSTATION_NAME_INVALID = 7001 } + +enum : uint { ERROR_CTX_INVALID_PD = 7002 } + +enum : uint { ERROR_CTX_PD_NOT_FOUND = 7003 } + +enum : uint { ERROR_CTX_WD_NOT_FOUND = 7004 } + +enum : uint { ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY = 7005 } + +enum : uint { ERROR_CTX_SERVICE_NAME_COLLISION = 7006 } + +enum : uint { ERROR_CTX_CLOSE_PENDING = 7007 } + +enum : uint { ERROR_CTX_NO_OUTBUF = 7008 } + +enum : uint { ERROR_CTX_MODEM_INF_NOT_FOUND = 7009 } + +enum : uint { ERROR_CTX_INVALID_MODEMNAME = 7010 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_ERROR = 7011 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_TIMEOUT = 7012 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_NO_CARRIER = 7013 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE = 7014 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_BUSY = 7015 } + +enum : uint { ERROR_CTX_MODEM_RESPONSE_VOICE = 7016 } + +enum : uint { ERROR_CTX_TD_ERROR = 7017 } + +enum : uint { ERROR_CTX_WINSTATION_NOT_FOUND = 7022 } + +enum : uint { ERROR_CTX_WINSTATION_ALREADY_EXISTS = 7023 } + +enum : uint { ERROR_CTX_WINSTATION_BUSY = 7024 } + +enum : uint { ERROR_CTX_BAD_VIDEO_MODE = 7025 } + +enum : uint { ERROR_CTX_GRAPHICS_INVALID = 7035 } + +enum : uint { ERROR_CTX_LOGON_DISABLED = 7037 } + +enum : uint { ERROR_CTX_NOT_CONSOLE = 7038 } + +enum : uint { ERROR_CTX_CLIENT_QUERY_TIMEOUT = 7040 } + +enum : uint { ERROR_CTX_CONSOLE_DISCONNECT = 7041 } + +enum : uint { ERROR_CTX_CONSOLE_CONNECT = 7042 } + +enum : uint { ERROR_CTX_SHADOW_DENIED = 7044 } + +enum : uint { ERROR_CTX_WINSTATION_ACCESS_DENIED = 7045 } + +enum : uint { ERROR_CTX_INVALID_WD = 7049 } + +enum : uint { ERROR_CTX_SHADOW_INVALID = 7050 } + +enum : uint { ERROR_CTX_SHADOW_DISABLED = 7051 } + +enum : uint { ERROR_CTX_CLIENT_LICENSE_IN_USE = 7052 } + +enum : uint { ERROR_CTX_CLIENT_LICENSE_NOT_SET = 7053 } + +enum : uint { ERROR_CTX_LICENSE_NOT_AVAILABLE = 7054 } + +enum : uint { ERROR_CTX_LICENSE_CLIENT_INVALID = 7055 } + +enum : uint { ERROR_CTX_LICENSE_EXPIRED = 7056 } + +enum : uint { ERROR_CTX_SHADOW_NOT_RUNNING = 7057 } + +enum : uint { ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE = 7058 } + +enum : uint { FRS_ERR_INVALID_API_SEQUENCE = 8001 } + +enum : uint { FRS_ERR_STARTING_SERVICE = 8002 } + +enum : uint { FRS_ERR_STOPPING_SERVICE = 8003 } + +enum : uint { FRS_ERR_INTERNAL_API = 8004 } + +enum : uint { FRS_ERR_INTERNAL = 8005 } + +enum : uint { FRS_ERR_SERVICE_COMM = 8006 } + +enum : uint { FRS_ERR_INSUFFICIENT_PRIV = 8007 } + +enum : uint { FRS_ERR_AUTHENTICATION = 8008 } + +enum : uint { FRS_ERR_PARENT_INSUFFICIENT_PRIV = 8009 } + +enum : uint { FRS_ERR_PARENT_AUTHENTICATION = 8010 } + +enum : uint { FRS_ERR_CHILD_TO_PARENT_COMM = 8011 } + +enum : uint { FRS_ERR_PARENT_TO_CHILD_COMM = 8012 } + +enum : uint { FRS_ERR_SYSVOL_POPULATE = 8013 } + +enum : uint { FRS_ERR_SYSVOL_POPULATE_TIMEOUT = 8014 } + +enum : uint { FRS_ERR_SYSVOL_IS_BUSY = 8015 } + +enum : uint { FRS_ERR_SYSVOL_DEMOTE = 8016 } + +enum : uint { FRS_ERR_INVALID_SERVICE_PARAMETER = 8017 } + +alias NO_ERROR DS_S_SUCCESS; + +enum : uint { ERROR_DS_NOT_INSTALLED = 8200 } + +enum : uint { ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY = 8201 } + +enum : uint { ERROR_DS_NO_ATTRIBUTE_OR_VALUE = 8202 } + +enum : uint { ERROR_DS_INVALID_ATTRIBUTE_SYNTAX = 8203 } + +enum : uint { ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED = 8204 } + +enum : uint { ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS = 8205 } + +enum : uint { ERROR_DS_BUSY = 8206 } + +enum : uint { ERROR_DS_UNAVAILABLE = 8207 } + +enum : uint { ERROR_DS_NO_RIDS_ALLOCATED = 8208 } + +enum : uint { ERROR_DS_NO_MORE_RIDS = 8209 } + +enum : uint { ERROR_DS_INCORRECT_ROLE_OWNER = 8210 } + +enum : uint { ERROR_DS_RIDMGR_INIT_ERROR = 8211 } + +enum : uint { ERROR_DS_OBJ_CLASS_VIOLATION = 8212 } + +enum : uint { ERROR_DS_CANT_ON_NON_LEAF = 8213 } + +enum : uint { ERROR_DS_CANT_ON_RDN = 8214 } + +enum : uint { ERROR_DS_CANT_MOD_OBJ_CLASS = 8215 } + +enum : uint { ERROR_DS_CROSS_DOM_MOVE_ERROR = 8216 } + +enum : uint { ERROR_DS_GC_NOT_AVAILABLE = 8217 } + +enum : uint { ERROR_SHARED_POLICY = 8218 } + +enum : uint { ERROR_POLICY_OBJECT_NOT_FOUND = 8219 } + +enum : uint { ERROR_POLICY_ONLY_IN_DS = 8220 } + +enum : uint { ERROR_PROMOTION_ACTIVE = 8221 } + +enum : uint { ERROR_NO_PROMOTION_ACTIVE = 8222 } + +enum : uint { ERROR_DS_OPERATIONS_ERROR = 8224 } + +enum : uint { ERROR_DS_PROTOCOL_ERROR = 8225 } + +enum : uint { ERROR_DS_TIMELIMIT_EXCEEDED = 8226 } + +enum : uint { ERROR_DS_SIZELIMIT_EXCEEDED = 8227 } + +enum : uint { ERROR_DS_ADMIN_LIMIT_EXCEEDED = 8228 } + +enum : uint { ERROR_DS_COMPARE_FALSE = 8229 } + +enum : uint { ERROR_DS_COMPARE_TRUE = 8230 } + +enum : uint { ERROR_DS_AUTH_METHOD_NOT_SUPPORTED = 8231 } + +enum : uint { ERROR_DS_STRONG_AUTH_REQUIRED = 8232 } + +enum : uint { ERROR_DS_INAPPROPRIATE_AUTH = 8233 } + +enum : uint { ERROR_DS_AUTH_UNKNOWN = 8234 } + +enum : uint { ERROR_DS_REFERRAL = 8235 } + +enum : uint { ERROR_DS_UNAVAILABLE_CRIT_EXTENSION = 8236 } + +enum : uint { ERROR_DS_CONFIDENTIALITY_REQUIRED = 8237 } + +enum : uint { ERROR_DS_INAPPROPRIATE_MATCHING = 8238 } + +enum : uint { ERROR_DS_CONSTRAINT_VIOLATION = 8239 } + +enum : uint { ERROR_DS_NO_SUCH_OBJECT = 8240 } + +enum : uint { ERROR_DS_ALIAS_PROBLEM = 8241 } + +enum : uint { ERROR_DS_INVALID_DN_SYNTAX = 8242 } + +enum : uint { ERROR_DS_IS_LEAF = 8243 } + +enum : uint { ERROR_DS_ALIAS_DEREF_PROBLEM = 8244 } + +enum : uint { ERROR_DS_UNWILLING_TO_PERFORM = 8245 } + +enum : uint { ERROR_DS_LOOP_DETECT = 8246 } + +enum : uint { ERROR_DS_NAMING_VIOLATION = 8247 } + +enum : uint { ERROR_DS_OBJECT_RESULTS_TOO_LARGE = 8248 } + +enum : uint { ERROR_DS_AFFECTS_MULTIPLE_DSAS = 8249 } + +enum : uint { ERROR_DS_SERVER_DOWN = 8250 } + +enum : uint { ERROR_DS_LOCAL_ERROR = 8251 } + +enum : uint { ERROR_DS_ENCODING_ERROR = 8252 } + +enum : uint { ERROR_DS_DECODING_ERROR = 8253 } + +enum : uint { ERROR_DS_FILTER_UNKNOWN = 8254 } + +enum : uint { ERROR_DS_PARAM_ERROR = 8255 } + +enum : uint { ERROR_DS_NOT_SUPPORTED = 8256 } + +enum : uint { ERROR_DS_NO_RESULTS_RETURNED = 8257 } + +enum : uint { ERROR_DS_CONTROL_NOT_FOUND = 8258 } + +enum : uint { ERROR_DS_CLIENT_LOOP = 8259 } + +enum : uint { ERROR_DS_REFERRAL_LIMIT_EXCEEDED = 8260 } + +enum : uint { ERROR_DS_SORT_CONTROL_MISSING = 8261 } + +enum : uint { ERROR_DS_OFFSET_RANGE_ERROR = 8262 } + +enum : uint { ERROR_DS_ROOT_MUST_BE_NC = 8301 } + +enum : uint { ERROR_DS_ADD_REPLICA_INHIBITED = 8302 } + +enum : uint { ERROR_DS_ATT_NOT_DEF_IN_SCHEMA = 8303 } + +enum : uint { ERROR_DS_MAX_OBJ_SIZE_EXCEEDED = 8304 } + +enum : uint { ERROR_DS_OBJ_STRING_NAME_EXISTS = 8305 } + +enum : uint { ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA = 8306 } + +enum : uint { ERROR_DS_RDN_DOESNT_MATCH_SCHEMA = 8307 } + +enum : uint { ERROR_DS_NO_REQUESTED_ATTS_FOUND = 8308 } + +enum : uint { ERROR_DS_USER_BUFFER_TO_SMALL = 8309 } + +enum : uint { ERROR_DS_ATT_IS_NOT_ON_OBJ = 8310 } + +enum : uint { ERROR_DS_ILLEGAL_MOD_OPERATION = 8311 } + +enum : uint { ERROR_DS_OBJ_TOO_LARGE = 8312 } + +enum : uint { ERROR_DS_BAD_INSTANCE_TYPE = 8313 } + +enum : uint { ERROR_DS_MASTERDSA_REQUIRED = 8314 } + +enum : uint { ERROR_DS_OBJECT_CLASS_REQUIRED = 8315 } + +enum : uint { ERROR_DS_MISSING_REQUIRED_ATT = 8316 } + +enum : uint { ERROR_DS_ATT_NOT_DEF_FOR_CLASS = 8317 } + +enum : uint { ERROR_DS_ATT_ALREADY_EXISTS = 8318 } + +enum : uint { ERROR_DS_CANT_ADD_ATT_VALUES = 8320 } + +enum : uint { ERROR_DS_SINGLE_VALUE_CONSTRAINT = 8321 } + +enum : uint { ERROR_DS_RANGE_CONSTRAINT = 8322 } + +enum : uint { ERROR_DS_ATT_VAL_ALREADY_EXISTS = 8323 } + +enum : uint { ERROR_DS_CANT_REM_MISSING_ATT = 8324 } + +enum : uint { ERROR_DS_CANT_REM_MISSING_ATT_VAL = 8325 } + +enum : uint { ERROR_DS_ROOT_CANT_BE_SUBREF = 8326 } + +enum : uint { ERROR_DS_NO_CHAINING = 8327 } + +enum : uint { ERROR_DS_NO_CHAINED_EVAL = 8328 } + +enum : uint { ERROR_DS_NO_PARENT_OBJECT = 8329 } + +enum : uint { ERROR_DS_PARENT_IS_AN_ALIAS = 8330 } + +enum : uint { ERROR_DS_CANT_MIX_MASTER_AND_REPS = 8331 } + +enum : uint { ERROR_DS_CHILDREN_EXIST = 8332 } + +enum : uint { ERROR_DS_OBJ_NOT_FOUND = 8333 } + +enum : uint { ERROR_DS_ALIASED_OBJ_MISSING = 8334 } + +enum : uint { ERROR_DS_BAD_NAME_SYNTAX = 8335 } + +enum : uint { ERROR_DS_ALIAS_POINTS_TO_ALIAS = 8336 } + +enum : uint { ERROR_DS_CANT_DEREF_ALIAS = 8337 } + +enum : uint { ERROR_DS_OUT_OF_SCOPE = 8338 } + +enum : uint { ERROR_DS_OBJECT_BEING_REMOVED = 8339 } + +enum : uint { ERROR_DS_CANT_DELETE_DSA_OBJ = 8340 } + +enum : uint { ERROR_DS_GENERIC_ERROR = 8341 } + +enum : uint { ERROR_DS_DSA_MUST_BE_INT_MASTER = 8342 } + +enum : uint { ERROR_DS_CLASS_NOT_DSA = 8343 } + +enum : uint { ERROR_DS_INSUFF_ACCESS_RIGHTS = 8344 } + +enum : uint { ERROR_DS_ILLEGAL_SUPERIOR = 8345 } + +enum : uint { ERROR_DS_ATTRIBUTE_OWNED_BY_SAM = 8346 } + +enum : uint { ERROR_DS_NAME_TOO_MANY_PARTS = 8347 } + +enum : uint { ERROR_DS_NAME_TOO_LONG = 8348 } + +enum : uint { ERROR_DS_NAME_VALUE_TOO_LONG = 8349 } + +enum : uint { ERROR_DS_NAME_UNPARSEABLE = 8350 } + +enum : uint { ERROR_DS_NAME_TYPE_UNKNOWN = 8351 } + +enum : uint { ERROR_DS_NOT_AN_OBJECT = 8352 } + +enum : uint { ERROR_DS_SEC_DESC_TOO_SHORT = 8353 } + +enum : uint { ERROR_DS_SEC_DESC_INVALID = 8354 } + +enum : uint { ERROR_DS_NO_DELETED_NAME = 8355 } + +enum : uint { ERROR_DS_SUBREF_MUST_HAVE_PARENT = 8356 } + +enum : uint { ERROR_DS_NCNAME_MUST_BE_NC = 8357 } + +enum : uint { ERROR_DS_CANT_ADD_SYSTEM_ONLY = 8358 } + +enum : uint { ERROR_DS_CLASS_MUST_BE_CONCRETE = 8359 } + +enum : uint { ERROR_DS_INVALID_DMD = 8360 } + +enum : uint { ERROR_DS_OBJ_GUID_EXISTS = 8361 } + +enum : uint { ERROR_DS_NOT_ON_BACKLINK = 8362 } + +enum : uint { ERROR_DS_NO_CROSSREF_FOR_NC = 8363 } + +enum : uint { ERROR_DS_SHUTTING_DOWN = 8364 } + +enum : uint { ERROR_DS_UNKNOWN_OPERATION = 8365 } + +enum : uint { ERROR_DS_INVALID_ROLE_OWNER = 8366 } + +enum : uint { ERROR_DS_COULDNT_CONTACT_FSMO = 8367 } + +enum : uint { ERROR_DS_CROSS_NC_DN_RENAME = 8368 } + +enum : uint { ERROR_DS_CANT_MOD_SYSTEM_ONLY = 8369 } + +enum : uint { ERROR_DS_REPLICATOR_ONLY = 8370 } + +enum : uint { ERROR_DS_OBJ_CLASS_NOT_DEFINED = 8371 } + +enum : uint { ERROR_DS_OBJ_CLASS_NOT_SUBCLASS = 8372 } + +enum : uint { ERROR_DS_NAME_REFERENCE_INVALID = 8373 } + +enum : uint { ERROR_DS_CROSS_REF_EXISTS = 8374 } + +enum : uint { ERROR_DS_CANT_DEL_MASTER_CROSSREF = 8375 } + +enum : uint { ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD = 8376 } + +enum : uint { ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX = 8377 } + +enum : uint { ERROR_DS_DUP_RDN = 8378 } + +enum : uint { ERROR_DS_DUP_OID = 8379 } + +enum : uint { ERROR_DS_DUP_MAPI_ID = 8380 } + +enum : uint { ERROR_DS_DUP_SCHEMA_ID_GUID = 8381 } + +enum : uint { ERROR_DS_DUP_LDAP_DISPLAY_NAME = 8382 } + +enum : uint { ERROR_DS_SEMANTIC_ATT_TEST = 8383 } + +enum : uint { ERROR_DS_SYNTAX_MISMATCH = 8384 } + +enum : uint { ERROR_DS_EXISTS_IN_MUST_HAVE = 8385 } + +enum : uint { ERROR_DS_EXISTS_IN_MAY_HAVE = 8386 } + +enum : uint { ERROR_DS_NONEXISTENT_MAY_HAVE = 8387 } + +enum : uint { ERROR_DS_NONEXISTENT_MUST_HAVE = 8388 } + +enum : uint { ERROR_DS_AUX_CLS_TEST_FAIL = 8389 } + +enum : uint { ERROR_DS_NONEXISTENT_POSS_SUP = 8390 } + +enum : uint { ERROR_DS_SUB_CLS_TEST_FAIL = 8391 } + +enum : uint { ERROR_DS_BAD_RDN_ATT_ID_SYNTAX = 8392 } + +enum : uint { ERROR_DS_EXISTS_IN_AUX_CLS = 8393 } + +enum : uint { ERROR_DS_EXISTS_IN_SUB_CLS = 8394 } + +enum : uint { ERROR_DS_EXISTS_IN_POSS_SUP = 8395 } + +enum : uint { ERROR_DS_RECALCSCHEMA_FAILED = 8396 } + +enum : uint { ERROR_DS_TREE_DELETE_NOT_FINISHED = 8397 } + +enum : uint { ERROR_DS_CANT_DELETE = 8398 } + +enum : uint { ERROR_DS_ATT_SCHEMA_REQ_ID = 8399 } + +enum : uint { ERROR_DS_BAD_ATT_SCHEMA_SYNTAX = 8400 } + +enum : uint { ERROR_DS_CANT_CACHE_ATT = 8401 } + +enum : uint { ERROR_DS_CANT_CACHE_CLASS = 8402 } + +enum : uint { ERROR_DS_CANT_REMOVE_ATT_CACHE = 8403 } + +enum : uint { ERROR_DS_CANT_REMOVE_CLASS_CACHE = 8404 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_DN = 8405 } + +enum : uint { ERROR_DS_MISSING_SUPREF = 8406 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_INSTANCE = 8407 } + +enum : uint { ERROR_DS_CODE_INCONSISTENCY = 8408 } + +enum : uint { ERROR_DS_DATABASE_ERROR = 8409 } + +enum : uint { ERROR_DS_GOVERNSID_MISSING = 8410 } + +enum : uint { ERROR_DS_MISSING_EXPECTED_ATT = 8411 } + +enum : uint { ERROR_DS_NCNAME_MISSING_CR_REF = 8412 } + +enum : uint { ERROR_DS_SECURITY_CHECKING_ERROR = 8413 } + +enum : uint { ERROR_DS_SCHEMA_NOT_LOADED = 8414 } + +enum : uint { ERROR_DS_SCHEMA_ALLOC_FAILED = 8415 } + +enum : uint { ERROR_DS_ATT_SCHEMA_REQ_SYNTAX = 8416 } + +enum : uint { ERROR_DS_GCVERIFY_ERROR = 8417 } + +enum : uint { ERROR_DS_DRA_SCHEMA_MISMATCH = 8418 } + +enum : uint { ERROR_DS_CANT_FIND_DSA_OBJ = 8419 } + +enum : uint { ERROR_DS_CANT_FIND_EXPECTED_NC = 8420 } + +enum : uint { ERROR_DS_CANT_FIND_NC_IN_CACHE = 8421 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_CHILD = 8422 } + +enum : uint { ERROR_DS_SECURITY_ILLEGAL_MODIFY = 8423 } + +enum : uint { ERROR_DS_CANT_REPLACE_HIDDEN_REC = 8424 } + +enum : uint { ERROR_DS_BAD_HIERARCHY_FILE = 8425 } + +enum : uint { ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED = 8426 } + +enum : uint { ERROR_DS_CONFIG_PARAM_MISSING = 8427 } + +enum : uint { ERROR_DS_COUNTING_AB_INDICES_FAILED = 8428 } + +enum : uint { ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED = 8429 } + +enum : uint { ERROR_DS_INTERNAL_FAILURE = 8430 } + +enum : uint { ERROR_DS_UNKNOWN_ERROR = 8431 } + +enum : uint { ERROR_DS_ROOT_REQUIRES_CLASS_TOP = 8432 } + +enum : uint { ERROR_DS_REFUSING_FSMO_ROLES = 8433 } + +enum : uint { ERROR_DS_MISSING_FSMO_SETTINGS = 8434 } + +enum : uint { ERROR_DS_UNABLE_TO_SURRENDER_ROLES = 8435 } + +enum : uint { ERROR_DS_DRA_GENERIC = 8436 } + +enum : uint { ERROR_DS_DRA_INVALID_PARAMETER = 8437 } + +enum : uint { ERROR_DS_DRA_BUSY = 8438 } + +enum : uint { ERROR_DS_DRA_BAD_DN = 8439 } + +enum : uint { ERROR_DS_DRA_BAD_NC = 8440 } + +enum : uint { ERROR_DS_DRA_DN_EXISTS = 8441 } + +enum : uint { ERROR_DS_DRA_INTERNAL_ERROR = 8442 } + +enum : uint { ERROR_DS_DRA_INCONSISTENT_DIT = 8443 } + +enum : uint { ERROR_DS_DRA_CONNECTION_FAILED = 8444 } + +enum : uint { ERROR_DS_DRA_BAD_INSTANCE_TYPE = 8445 } + +enum : uint { ERROR_DS_DRA_OUT_OF_MEM = 8446 } + +enum : uint { ERROR_DS_DRA_MAIL_PROBLEM = 8447 } + +enum : uint { ERROR_DS_DRA_REF_ALREADY_EXISTS = 8448 } + +enum : uint { ERROR_DS_DRA_REF_NOT_FOUND = 8449 } + +enum : uint { ERROR_DS_DRA_OBJ_IS_REP_SOURCE = 8450 } + +enum : uint { ERROR_DS_DRA_DB_ERROR = 8451 } + +enum : uint { ERROR_DS_DRA_NO_REPLICA = 8452 } + +enum : uint { ERROR_DS_DRA_ACCESS_DENIED = 8453 } + +enum : uint { ERROR_DS_DRA_NOT_SUPPORTED = 8454 } + +enum : uint { ERROR_DS_DRA_RPC_CANCELLED = 8455 } + +enum : uint { ERROR_DS_DRA_SOURCE_DISABLED = 8456 } + +enum : uint { ERROR_DS_DRA_SINK_DISABLED = 8457 } + +enum : uint { ERROR_DS_DRA_NAME_COLLISION = 8458 } + +enum : uint { ERROR_DS_DRA_SOURCE_REINSTALLED = 8459 } + +enum : uint { ERROR_DS_DRA_MISSING_PARENT = 8460 } + +enum : uint { ERROR_DS_DRA_PREEMPTED = 8461 } + +enum : uint { ERROR_DS_DRA_ABANDON_SYNC = 8462 } + +enum : uint { ERROR_DS_DRA_SHUTDOWN = 8463 } + +enum : uint { ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET = 8464 } + +enum : uint { ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA = 8465 } + +enum : uint { ERROR_DS_DRA_EXTN_CONNECTION_FAILED = 8466 } + +enum : uint { ERROR_DS_INSTALL_SCHEMA_MISMATCH = 8467 } + +enum : uint { ERROR_DS_DUP_LINK_ID = 8468 } + +enum : uint { ERROR_DS_NAME_ERROR_RESOLVING = 8469 } + +enum : uint { ERROR_DS_NAME_ERROR_NOT_FOUND = 8470 } + +enum : uint { ERROR_DS_NAME_ERROR_NOT_UNIQUE = 8471 } + +enum : uint { ERROR_DS_NAME_ERROR_NO_MAPPING = 8472 } + +enum : uint { ERROR_DS_NAME_ERROR_DOMAIN_ONLY = 8473 } + +enum : uint { ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING = 8474 } + +enum : uint { ERROR_DS_CONSTRUCTED_ATT_MOD = 8475 } + +enum : uint { ERROR_DS_WRONG_OM_OBJ_CLASS = 8476 } + +enum : uint { ERROR_DS_DRA_REPL_PENDING = 8477 } + +enum : uint { ERROR_DS_DS_REQUIRED = 8478 } + +enum : uint { ERROR_DS_INVALID_LDAP_DISPLAY_NAME = 8479 } + +enum : uint { ERROR_DS_NON_BASE_SEARCH = 8480 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_ATTS = 8481 } + +enum : uint { ERROR_DS_BACKLINK_WITHOUT_LINK = 8482 } + +enum : uint { ERROR_DS_EPOCH_MISMATCH = 8483 } + +enum : uint { ERROR_DS_SRC_NAME_MISMATCH = 8484 } + +enum : uint { ERROR_DS_SRC_AND_DST_NC_IDENTICAL = 8485 } + +enum : uint { ERROR_DS_DST_NC_MISMATCH = 8486 } + +enum : uint { ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC = 8487 } + +enum : uint { ERROR_DS_SRC_GUID_MISMATCH = 8488 } + +enum : uint { ERROR_DS_CANT_MOVE_DELETED_OBJECT = 8489 } + +enum : uint { ERROR_DS_PDC_OPERATION_IN_PROGRESS = 8490 } + +enum : uint { ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD = 8491 } + +enum : uint { ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION = 8492 } + +enum : uint { ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS = 8493 } + +enum : uint { ERROR_DS_NC_MUST_HAVE_NC_PARENT = 8494 } + +enum : uint { ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE = 8495 } + +enum : uint { ERROR_DS_DST_DOMAIN_NOT_NATIVE = 8496 } + +enum : uint { ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER = 8497 } + +enum : uint { ERROR_DS_CANT_MOVE_ACCOUNT_GROUP = 8498 } + +enum : uint { ERROR_DS_CANT_MOVE_RESOURCE_GROUP = 8499 } + +enum : uint { ERROR_DS_INVALID_SEARCH_FLAG = 8500 } + +enum : uint { ERROR_DS_NO_TREE_DELETE_ABOVE_NC = 8501 } + +enum : uint { ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE = 8502 } + +enum : uint { ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE = 8503 } + +enum : uint { ERROR_DS_SAM_INIT_FAILURE = 8504 } + +enum : uint { ERROR_DS_SENSITIVE_GROUP_VIOLATION = 8505 } + +enum : uint { ERROR_DS_CANT_MOD_PRIMARYGROUPID = 8506 } + +enum : uint { ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD = 8507 } + +enum : uint { ERROR_DS_NONSAFE_SCHEMA_CHANGE = 8508 } + +enum : uint { ERROR_DS_SCHEMA_UPDATE_DISALLOWED = 8509 } + +enum : uint { ERROR_DS_CANT_CREATE_UNDER_SCHEMA = 8510 } + +enum : uint { ERROR_DS_INSTALL_NO_SRC_SCH_VERSION = 8511 } + +enum : uint { ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE = 8512 } + +enum : uint { ERROR_DS_INVALID_GROUP_TYPE = 8513 } + +enum : uint { ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN = 8514 } + +enum : uint { ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN = 8515 } + +enum : uint { ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER = 8516 } + +enum : uint { ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER = 8517 } + +enum : uint { ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER = 8518 } + +enum : uint { ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER = 8519 } + +enum : uint { ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER = 8520 } + +enum : uint { ERROR_DS_HAVE_PRIMARY_MEMBERS = 8521 } + +enum : uint { ERROR_DS_STRING_SD_CONVERSION_FAILED = 8522 } + +enum : uint { ERROR_DS_NAMING_MASTER_GC = 8523 } + +enum : uint { ERROR_DS_DNS_LOOKUP_FAILURE = 8524 } + +enum : uint { ERROR_DS_COULDNT_UPDATE_SPNS = 8525 } + +enum : uint { ERROR_DS_CANT_RETRIEVE_SD = 8526 } + +enum : uint { ERROR_DS_KEY_NOT_UNIQUE = 8527 } + +enum : uint { ERROR_DS_WRONG_LINKED_ATT_SYNTAX = 8528 } + +enum : uint { ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD = 8529 } + +enum : uint { ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY = 8530 } + +enum : uint { ERROR_DS_CANT_START = 8531 } + +enum : uint { ERROR_DS_INIT_FAILURE = 8532 } + +enum : uint { ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION = 8533 } + +enum : uint { ERROR_DS_SOURCE_DOMAIN_IN_FOREST = 8534 } + +enum : uint { ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST = 8535 } + +enum : uint { ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED = 8536 } + +enum : uint { ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN = 8537 } + +enum : uint { ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER = 8538 } + +enum : uint { ERROR_DS_SRC_SID_EXISTS_IN_FOREST = 8539 } + +enum : uint { ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH = 8540 } + +enum : uint { ERROR_SAM_INIT_FAILURE = 8541 } + +enum : uint { ERROR_DS_DRA_SCHEMA_INFO_SHIP = 8542 } + +enum : uint { ERROR_DS_DRA_SCHEMA_CONFLICT = 8543 } + +enum : uint { ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT = 8544 } + +enum : uint { ERROR_DS_DRA_OBJ_NC_MISMATCH = 8545 } + +enum : uint { ERROR_DS_NC_STILL_HAS_DSAS = 8546 } + +enum : uint { ERROR_DS_GC_REQUIRED = 8547 } + +enum : uint { ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY = 8548 } + +enum : uint { ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS = 8549 } + +enum : uint { ERROR_DS_CANT_ADD_TO_GC = 8550 } + +enum : uint { ERROR_DS_NO_CHECKPOINT_WITH_PDC = 8551 } + +enum : uint { ERROR_DS_SOURCE_AUDITING_NOT_ENABLED = 8552 } + +enum : uint { ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC = 8553 } + +enum : uint { ERROR_DS_INVALID_NAME_FOR_SPN = 8554 } + +enum : uint { ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS = 8555 } + +enum : uint { ERROR_DS_UNICODEPWD_NOT_IN_QUOTES = 8556 } + +enum : uint { ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED = 8557 } + +enum : uint { ERROR_DS_MUST_BE_RUN_ON_DST_DC = 8558 } + +enum : uint { ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER = 8559 } + +enum : uint { ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ = 8560 } + +enum : uint { ERROR_DS_INIT_FAILURE_CONSOLE = 8561 } + +enum : uint { ERROR_DS_SAM_INIT_FAILURE_CONSOLE = 8562 } + +enum : uint { ERROR_DS_FOREST_VERSION_TOO_HIGH = 8563 } + +enum : uint { ERROR_DS_DOMAIN_VERSION_TOO_HIGH = 8564 } + +enum : uint { ERROR_DS_FOREST_VERSION_TOO_LOW = 8565 } + +enum : uint { ERROR_DS_DOMAIN_VERSION_TOO_LOW = 8566 } + +enum : uint { ERROR_DS_INCOMPATIBLE_VERSION = 8567 } + +enum : uint { ERROR_DS_LOW_DSA_VERSION = 8568 } + +enum : uint { ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN = 8569 } + +enum : uint { ERROR_DS_NOT_SUPPORTED_SORT_ORDER = 8570 } + +enum : uint { ERROR_DS_NAME_NOT_UNIQUE = 8571 } + +enum : uint { ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 = 8572 } + +enum : uint { ERROR_DS_OUT_OF_VERSION_STORE = 8573 } + +enum : uint { ERROR_DS_INCOMPATIBLE_CONTROLS_USED = 8574 } + +enum : uint { ERROR_DS_NO_REF_DOMAIN = 8575 } + +enum : uint { ERROR_DS_RESERVED_LINK_ID = 8576 } + +enum : uint { ERROR_DS_LINK_ID_NOT_AVAILABLE = 8577 } + +enum : uint { ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER = 8578 } + +enum : uint { ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE = 8579 } + +enum : uint { ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC = 8580 } + +enum : uint { ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG = 8581 } + +enum : uint { ERROR_DS_MODIFYDN_WRONG_GRANDPARENT = 8582 } + +enum : uint { ERROR_DS_NAME_ERROR_TRUST_REFERRAL = 8583 } + +enum : uint { ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER = 8584 } + +enum : uint { ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD = 8585 } + +enum : uint { ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 = 8586 } + +enum : uint { ERROR_DS_THREAD_LIMIT_EXCEEDED = 8587 } + +enum : uint { ERROR_DS_NOT_CLOSEST = 8588 } + +enum : uint { ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF = 8589 } + +enum : uint { ERROR_DS_SINGLE_USER_MODE_FAILED = 8590 } + +enum : uint { ERROR_DS_NTDSCRIPT_SYNTAX_ERROR = 8591 } + +enum : uint { ERROR_DS_NTDSCRIPT_PROCESS_ERROR = 8592 } + +enum : uint { ERROR_DS_DIFFERENT_REPL_EPOCHS = 8593 } + +enum : uint { ERROR_DS_DRS_EXTENSIONS_CHANGED = 8594 } + +enum : uint { ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR = 8595 } + +enum : uint { ERROR_DS_NO_MSDS_INTID = 8596 } + +enum : uint { ERROR_DS_DUP_MSDS_INTID = 8597 } + +enum : uint { ERROR_DS_EXISTS_IN_RDNATTID = 8598 } + +enum : uint { ERROR_DS_AUTHORIZATION_FAILED = 8599 } + +enum : uint { ERROR_DS_INVALID_SCRIPT = 8600 } + +enum : uint { ERROR_DS_REMOTE_CROSSREF_OP_FAILED = 8601 } + +enum : uint { DNS_ERROR_RESPONSE_CODES_BASE = 9000 } + +alias NO_ERROR DNS_ERROR_RCODE_NO_ERROR; + +enum : uint { DNS_ERROR_MASK = 0x00002328 } + +enum : uint { DNS_ERROR_RCODE_FORMAT_ERROR = 9001 } + +enum : uint { DNS_ERROR_RCODE_SERVER_FAILURE = 9002 } + +enum : uint { DNS_ERROR_RCODE_NAME_ERROR = 9003 } + +enum : uint { DNS_ERROR_RCODE_NOT_IMPLEMENTED = 9004 } + +enum : uint { DNS_ERROR_RCODE_REFUSED = 9005 } + +enum : uint { DNS_ERROR_RCODE_YXDOMAIN = 9006 } + +enum : uint { DNS_ERROR_RCODE_YXRRSET = 9007 } + +enum : uint { DNS_ERROR_RCODE_NXRRSET = 9008 } + +enum : uint { DNS_ERROR_RCODE_NOTAUTH = 9009 } + +enum : uint { DNS_ERROR_RCODE_NOTZONE = 9010 } + +enum : uint { DNS_ERROR_RCODE_BADSIG = 9016 } + +enum : uint { DNS_ERROR_RCODE_BADKEY = 9017 } + +enum : uint { DNS_ERROR_RCODE_BADTIME = 9018 } + +alias DNS_ERROR_RCODE_BADTIME DNS_ERROR_RCODE_LAST; + +enum : uint { DNS_ERROR_PACKET_FMT_BASE = 9500 } + +enum : uint { DNS_INFO_NO_RECORDS = 9501 } + +enum : uint { DNS_ERROR_BAD_PACKET = 9502 } + +enum : uint { DNS_ERROR_NO_PACKET = 9503 } + +enum : uint { DNS_ERROR_RCODE = 9504 } + +enum : uint { DNS_ERROR_UNSECURE_PACKET = 9505 } + +alias DNS_ERROR_UNSECURE_PACKET DNS_STATUS_PACKET_UNSECURE; + +alias ERROR_OUTOFMEMORY DNS_ERROR_NO_MEMORY; +alias ERROR_INVALID_NAME DNS_ERROR_INVALID_NAME; +alias ERROR_INVALID_DATA DNS_ERROR_INVALID_DATA; + +enum : uint { DNS_ERROR_GENERAL_API_BASE = 9550 } + +enum : uint { DNS_ERROR_INVALID_TYPE = 9551 } + +enum : uint { DNS_ERROR_INVALID_IP_ADDRESS = 9552 } + +enum : uint { DNS_ERROR_INVALID_PROPERTY = 9553 } + +enum : uint { DNS_ERROR_TRY_AGAIN_LATER = 9554 } + +enum : uint { DNS_ERROR_NOT_UNIQUE = 9555 } + +enum : uint { DNS_ERROR_NON_RFC_NAME = 9556 } + +enum : uint { DNS_STATUS_FQDN = 9557 } + +enum : uint { DNS_STATUS_DOTTED_NAME = 9558 } + +enum : uint { DNS_STATUS_SINGLE_PART_NAME = 9559 } + +enum : uint { DNS_ERROR_INVALID_NAME_CHAR = 9560 } + +enum : uint { DNS_ERROR_NUMERIC_NAME = 9561 } + +enum : uint { DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER = 9562 } + +enum : uint { DNS_ERROR_ZONE_BASE = 9600 } + +enum : uint { DNS_ERROR_ZONE_DOES_NOT_EXIST = 9601 } + +enum : uint { DNS_ERROR_NO_ZONE_INFO = 9602 } + +enum : uint { DNS_ERROR_INVALID_ZONE_OPERATION = 9603 } + +enum : uint { DNS_ERROR_ZONE_CONFIGURATION_ERROR = 9604 } + +enum : uint { DNS_ERROR_ZONE_HAS_NO_SOA_RECORD = 9605 } + +enum : uint { DNS_ERROR_ZONE_HAS_NO_NS_RECORDS = 9606 } + +enum : uint { DNS_ERROR_ZONE_LOCKED = 9607 } + +enum : uint { DNS_ERROR_ZONE_CREATION_FAILED = 9608 } + +enum : uint { DNS_ERROR_ZONE_ALREADY_EXISTS = 9609 } + +enum : uint { DNS_ERROR_AUTOZONE_ALREADY_EXISTS = 9610 } + +enum : uint { DNS_ERROR_INVALID_ZONE_TYPE = 9611 } + +enum : uint { DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP = 9612 } + +enum : uint { DNS_ERROR_ZONE_NOT_SECONDARY = 9613 } + +enum : uint { DNS_ERROR_NEED_SECONDARY_ADDRESSES = 9614 } + +enum : uint { DNS_ERROR_WINS_INIT_FAILED = 9615 } + +enum : uint { DNS_ERROR_NEED_WINS_SERVERS = 9616 } + +enum : uint { DNS_ERROR_NBSTAT_INIT_FAILED = 9617 } + +enum : uint { DNS_ERROR_SOA_DELETE_INVALID = 9618 } + +enum : uint { DNS_ERROR_FORWARDER_ALREADY_EXISTS = 9619 } + +enum : uint { DNS_ERROR_ZONE_REQUIRES_MASTER_IP = 9620 } + +enum : uint { DNS_ERROR_ZONE_IS_SHUTDOWN = 9621 } + +enum : uint { DNS_ERROR_DATAFILE_BASE = 9650 } + +enum : uint { DNS_ERROR_PRIMARY_REQUIRES_DATAFILE = 9651 } + +enum : uint { DNS_ERROR_INVALID_DATAFILE_NAME = 9652 } + +enum : uint { DNS_ERROR_DATAFILE_OPEN_FAILURE = 9653 } + +enum : uint { DNS_ERROR_FILE_WRITEBACK_FAILED = 9654 } + +enum : uint { DNS_ERROR_DATAFILE_PARSING = 9655 } + +enum : uint { DNS_ERROR_DATABASE_BASE = 9700 } + +enum : uint { DNS_ERROR_RECORD_DOES_NOT_EXIST = 9701 } + +enum : uint { DNS_ERROR_RECORD_FORMAT = 9702 } + +enum : uint { DNS_ERROR_NODE_CREATION_FAILED = 9703 } + +enum : uint { DNS_ERROR_UNKNOWN_RECORD_TYPE = 9704 } + +enum : uint { DNS_ERROR_RECORD_TIMED_OUT = 9705 } + +enum : uint { DNS_ERROR_NAME_NOT_IN_ZONE = 9706 } + +enum : uint { DNS_ERROR_CNAME_LOOP = 9707 } + +enum : uint { DNS_ERROR_NODE_IS_CNAME = 9708 } + +enum : uint { DNS_ERROR_CNAME_COLLISION = 9709 } + +enum : uint { DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT = 9710 } + +enum : uint { DNS_ERROR_RECORD_ALREADY_EXISTS = 9711 } + +enum : uint { DNS_ERROR_SECONDARY_DATA = 9712 } + +enum : uint { DNS_ERROR_NO_CREATE_CACHE_DATA = 9713 } + +enum : uint { DNS_ERROR_NAME_DOES_NOT_EXIST = 9714 } + +enum : uint { DNS_WARNING_PTR_CREATE_FAILED = 9715 } + +enum : uint { DNS_WARNING_DOMAIN_UNDELETED = 9716 } + +enum : uint { DNS_ERROR_DS_UNAVAILABLE = 9717 } + +enum : uint { DNS_ERROR_DS_ZONE_ALREADY_EXISTS = 9718 } + +enum : uint { DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE = 9719 } + +enum : uint { DNS_ERROR_OPERATION_BASE = 9750 } + +enum : uint { DNS_INFO_AXFR_COMPLETE = 9751 } + +enum : uint { DNS_ERROR_AXFR = 9752 } + +enum : uint { DNS_INFO_ADDED_LOCAL_WINS = 9753 } + +enum : uint { DNS_ERROR_SECURE_BASE = 9800 } + +enum : uint { DNS_STATUS_CONTINUE_NEEDED = 9801 } + +enum : uint { DNS_ERROR_SETUP_BASE = 9850 } + +enum : uint { DNS_ERROR_NO_TCPIP = 9851 } + +enum : uint { DNS_ERROR_NO_DNS_SERVERS = 9852 } + +enum : uint { DNS_ERROR_DP_BASE = 9900 } + +enum : uint { DNS_ERROR_DP_DOES_NOT_EXIST = 9901 } + +enum : uint { DNS_ERROR_DP_ALREADY_EXISTS = 9902 } + +enum : uint { DNS_ERROR_DP_NOT_ENLISTED = 9903 } + +enum : uint { DNS_ERROR_DP_ALREADY_ENLISTED = 9904 } + +// #ifndef WSABASEERR +enum : uint { WSABASEERR = 10000 } + +enum : uint { WSAEINTR = 10004 } + +enum : uint { WSAEBADF = 10009 } + +enum : uint { WSAEACCES = 10013 } + +enum : uint { WSAEFAULT = 10014 } + +enum : uint { WSAEINVAL = 10022 } + +enum : uint { WSAEMFILE = 10024 } + +enum : uint { WSAEWOULDBLOCK = 10035 } + +enum : uint { WSAEINPROGRESS = 10036 } + +enum : uint { WSAEALREADY = 10037 } + +enum : uint { WSAENOTSOCK = 10038 } + +enum : uint { WSAEDESTADDRREQ = 10039 } + +enum : uint { WSAEMSGSIZE = 10040 } + +enum : uint { WSAEPROTOTYPE = 10041 } + +enum : uint { WSAENOPROTOOPT = 10042 } + +enum : uint { WSAEPROTONOSUPPORT = 10043 } + +enum : uint { WSAESOCKTNOSUPPORT = 10044 } + +enum : uint { WSAEOPNOTSUPP = 10045 } + +enum : uint { WSAEPFNOSUPPORT = 10046 } + +enum : uint { WSAEAFNOSUPPORT = 10047 } + +enum : uint { WSAEADDRINUSE = 10048 } + +enum : uint { WSAEADDRNOTAVAIL = 10049 } + +enum : uint { WSAENETDOWN = 10050 } + +enum : uint { WSAENETUNREACH = 10051 } + +enum : uint { WSAENETRESET = 10052 } + +enum : uint { WSAECONNABORTED = 10053 } + +enum : uint { WSAECONNRESET = 10054 } + +enum : uint { WSAENOBUFS = 10055 } + +enum : uint { WSAEISCONN = 10056 } + +enum : uint { WSAENOTCONN = 10057 } + +enum : uint { WSAESHUTDOWN = 10058 } + +enum : uint { WSAETOOMANYREFS = 10059 } + +enum : uint { WSAETIMEDOUT = 10060 } + +enum : uint { WSAECONNREFUSED = 10061 } + +enum : uint { WSAELOOP = 10062 } + +enum : uint { WSAENAMETOOLONG = 10063 } + +enum : uint { WSAEHOSTDOWN = 10064 } + +enum : uint { WSAEHOSTUNREACH = 10065 } + +enum : uint { WSAENOTEMPTY = 10066 } + +enum : uint { WSAEPROCLIM = 10067 } + +enum : uint { WSAEUSERS = 10068 } + +enum : uint { WSAEDQUOT = 10069 } + +enum : uint { WSAESTALE = 10070 } + +enum : uint { WSAEREMOTE = 10071 } + +enum : uint { WSASYSNOTREADY = 10091 } + +enum : uint { WSAVERNOTSUPPORTED = 10092 } + +enum : uint { WSANOTINITIALISED = 10093 } + +enum : uint { WSAEDISCON = 10101 } + +enum : uint { WSAENOMORE = 10102 } + +enum : uint { WSAECANCELLED = 10103 } + +enum : uint { WSAEINVALIDPROCTABLE = 10104 } + +enum : uint { WSAEINVALIDPROVIDER = 10105 } + +enum : uint { WSAEPROVIDERFAILEDINIT = 10106 } + +enum : uint { WSASYSCALLFAILURE = 10107 } + +enum : uint { WSASERVICE_NOT_FOUND = 10108 } + +enum : uint { WSATYPE_NOT_FOUND = 10109 } + +enum : uint { WSA_E_NO_MORE = 10110 } + +enum : uint { WSA_E_CANCELLED = 10111 } + +enum : uint { WSAEREFUSED = 10112 } + +enum : uint { WSAHOST_NOT_FOUND = 11001 } + +enum : uint { WSATRY_AGAIN = 11002 } + +enum : uint { WSANO_RECOVERY = 11003 } + +enum : uint { WSANO_DATA = 11004 } + +enum : uint { WSA_QOS_RECEIVERS = 11005 } + +enum : uint { WSA_QOS_SENDERS = 11006 } + +enum : uint { WSA_QOS_NO_SENDERS = 11007 } + +enum : uint { WSA_QOS_NO_RECEIVERS = 11008 } + +enum : uint { WSA_QOS_REQUEST_CONFIRMED = 11009 } + +enum : uint { WSA_QOS_ADMISSION_FAILURE = 11010 } + +enum : uint { WSA_QOS_POLICY_FAILURE = 11011 } + +enum : uint { WSA_QOS_BAD_STYLE = 11012 } + +enum : uint { WSA_QOS_BAD_OBJECT = 11013 } + +enum : uint { WSA_QOS_TRAFFIC_CTRL_ERROR = 11014 } + +enum : uint { WSA_QOS_GENERIC_ERROR = 11015 } + +enum : uint { WSA_QOS_ESERVICETYPE = 11016 } + +enum : uint { WSA_QOS_EFLOWSPEC = 11017 } + +enum : uint { WSA_QOS_EPROVSPECBUF = 11018 } + +enum : uint { WSA_QOS_EFILTERSTYLE = 11019 } + +enum : uint { WSA_QOS_EFILTERTYPE = 11020 } + +enum : uint { WSA_QOS_EFILTERCOUNT = 11021 } + +enum : uint { WSA_QOS_EOBJLENGTH = 11022 } + +enum : uint { WSA_QOS_EFLOWCOUNT = 11023 } + +enum : uint { WSA_QOS_EUNKOWNPSOBJ = 11024 } + +enum : uint { WSA_QOS_EPOLICYOBJ = 11025 } + +enum : uint { WSA_QOS_EFLOWDESC = 11026 } + +enum : uint { WSA_QOS_EPSFLOWSPEC = 11027 } + +enum : uint { WSA_QOS_EPSFILTERSPEC = 11028 } + +enum : uint { WSA_QOS_ESDMODEOBJ = 11029 } + +enum : uint { WSA_QOS_ESHAPERATEOBJ = 11030 } + +enum : uint { WSA_QOS_RESERVED_PETYPE = 11031 } + +// #endif // defined(WSABASEERR) + +enum : uint { ERROR_SXS_SECTION_NOT_FOUND = 14000 } + +enum : uint { ERROR_SXS_CANT_GEN_ACTCTX = 14001 } + +enum : uint { ERROR_SXS_INVALID_ACTCTXDATA_FORMAT = 14002 } + +enum : uint { ERROR_SXS_ASSEMBLY_NOT_FOUND = 14003 } + +enum : uint { ERROR_SXS_MANIFEST_FORMAT_ERROR = 14004 } + +enum : uint { ERROR_SXS_MANIFEST_PARSE_ERROR = 14005 } + +enum : uint { ERROR_SXS_ACTIVATION_CONTEXT_DISABLED = 14006 } + +enum : uint { ERROR_SXS_KEY_NOT_FOUND = 14007 } + +enum : uint { ERROR_SXS_VERSION_CONFLICT = 14008 } + +enum : uint { ERROR_SXS_WRONG_SECTION_TYPE = 14009 } + +enum : uint { ERROR_SXS_THREAD_QUERIES_DISABLED = 14010 } + +enum : uint { ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET = 14011 } + +enum : uint { ERROR_SXS_UNKNOWN_ENCODING_GROUP = 14012 } + +enum : uint { ERROR_SXS_UNKNOWN_ENCODING = 14013 } + +enum : uint { ERROR_SXS_INVALID_XML_NAMESPACE_URI = 14014 } + +enum : uint { ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14015 } + +enum : uint { ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED = 14016 } + +enum : uint { ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE = 14017 } + +enum : uint { ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE = 14018 } + +enum : uint { ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE = 14019 } + +enum : uint { ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT = 14020 } + +enum : uint { ERROR_SXS_DUPLICATE_DLL_NAME = 14021 } + +enum : uint { ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME = 14022 } + +enum : uint { ERROR_SXS_DUPLICATE_CLSID = 14023 } + +enum : uint { ERROR_SXS_DUPLICATE_IID = 14024 } + +enum : uint { ERROR_SXS_DUPLICATE_TLBID = 14025 } + +enum : uint { ERROR_SXS_DUPLICATE_PROGID = 14026 } + +enum : uint { ERROR_SXS_DUPLICATE_ASSEMBLY_NAME = 14027 } + +enum : uint { ERROR_SXS_FILE_HASH_MISMATCH = 14028 } + +enum : uint { ERROR_SXS_POLICY_PARSE_ERROR = 14029 } + +enum : uint { ERROR_SXS_XML_E_MISSINGQUOTE = 14030 } + +enum : uint { ERROR_SXS_XML_E_COMMENTSYNTAX = 14031 } + +enum : uint { ERROR_SXS_XML_E_BADSTARTNAMECHAR = 14032 } + +enum : uint { ERROR_SXS_XML_E_BADNAMECHAR = 14033 } + +enum : uint { ERROR_SXS_XML_E_BADCHARINSTRING = 14034 } + +enum : uint { ERROR_SXS_XML_E_XMLDECLSYNTAX = 14035 } + +enum : uint { ERROR_SXS_XML_E_BADCHARDATA = 14036 } + +enum : uint { ERROR_SXS_XML_E_MISSINGWHITESPACE = 14037 } + +enum : uint { ERROR_SXS_XML_E_EXPECTINGTAGEND = 14038 } + +enum : uint { ERROR_SXS_XML_E_MISSINGSEMICOLON = 14039 } + +enum : uint { ERROR_SXS_XML_E_UNBALANCEDPAREN = 14040 } + +enum : uint { ERROR_SXS_XML_E_INTERNALERROR = 14041 } + +enum : uint { ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE = 14042 } + +enum : uint { ERROR_SXS_XML_E_INCOMPLETE_ENCODING = 14043 } + +enum : uint { ERROR_SXS_XML_E_MISSING_PAREN = 14044 } + +enum : uint { ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE = 14045 } + +enum : uint { ERROR_SXS_XML_E_MULTIPLE_COLONS = 14046 } + +enum : uint { ERROR_SXS_XML_E_INVALID_DECIMAL = 14047 } + +enum : uint { ERROR_SXS_XML_E_INVALID_HEXIDECIMAL = 14048 } + +enum : uint { ERROR_SXS_XML_E_INVALID_UNICODE = 14049 } + +enum : uint { ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK = 14050 } + +enum : uint { ERROR_SXS_XML_E_UNEXPECTEDENDTAG = 14051 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDTAG = 14052 } + +enum : uint { ERROR_SXS_XML_E_DUPLICATEATTRIBUTE = 14053 } + +enum : uint { ERROR_SXS_XML_E_MULTIPLEROOTS = 14054 } + +enum : uint { ERROR_SXS_XML_E_INVALIDATROOTLEVEL = 14055 } + +enum : uint { ERROR_SXS_XML_E_BADXMLDECL = 14056 } + +enum : uint { ERROR_SXS_XML_E_MISSINGROOT = 14057 } + +enum : uint { ERROR_SXS_XML_E_UNEXPECTEDEOF = 14058 } + +enum : uint { ERROR_SXS_XML_E_BADPEREFINSUBSET = 14059 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDSTARTTAG = 14060 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDENDTAG = 14061 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDSTRING = 14062 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDCOMMENT = 14063 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDDECL = 14064 } + +enum : uint { ERROR_SXS_XML_E_UNCLOSEDCDATA = 14065 } + +enum : uint { ERROR_SXS_XML_E_RESERVEDNAMESPACE = 14066 } + +enum : uint { ERROR_SXS_XML_E_INVALIDENCODING = 14067 } + +enum : uint { ERROR_SXS_XML_E_INVALIDSWITCH = 14068 } + +enum : uint { ERROR_SXS_XML_E_BADXMLCASE = 14069 } + +enum : uint { ERROR_SXS_XML_E_INVALID_STANDALONE = 14070 } + +enum : uint { ERROR_SXS_XML_E_UNEXPECTED_STANDALONE = 14071 } + +enum : uint { ERROR_SXS_XML_E_INVALID_VERSION = 14072 } + +enum : uint { ERROR_SXS_XML_E_MISSINGEQUALS = 14073 } + +enum : uint { ERROR_SXS_PROTECTION_RECOVERY_FAILED = 14074 } + +enum : uint { ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT = 14075 } + +enum : uint { ERROR_SXS_PROTECTION_CATALOG_NOT_VALID = 14076 } + +enum : uint { ERROR_SXS_UNTRANSLATABLE_HRESULT = 14077 } + +enum : uint { ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING = 14078 } + +enum : uint { ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE = 14079 } + +enum : uint { ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME = 14080 } + +enum : uint { ERROR_IPSEC_QM_POLICY_EXISTS = 13000 } + +enum : uint { ERROR_IPSEC_QM_POLICY_NOT_FOUND = 13001 } + +enum : uint { ERROR_IPSEC_QM_POLICY_IN_USE = 13002 } + +enum : uint { ERROR_IPSEC_MM_POLICY_EXISTS = 13003 } + +enum : uint { ERROR_IPSEC_MM_POLICY_NOT_FOUND = 13004 } + +enum : uint { ERROR_IPSEC_MM_POLICY_IN_USE = 13005 } + +enum : uint { ERROR_IPSEC_MM_FILTER_EXISTS = 13006 } + +enum : uint { ERROR_IPSEC_MM_FILTER_NOT_FOUND = 13007 } + +enum : uint { ERROR_IPSEC_TRANSPORT_FILTER_EXISTS = 13008 } + +enum : uint { ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND = 13009 } + +enum : uint { ERROR_IPSEC_MM_AUTH_EXISTS = 13010 } + +enum : uint { ERROR_IPSEC_MM_AUTH_NOT_FOUND = 13011 } + +enum : uint { ERROR_IPSEC_MM_AUTH_IN_USE = 13012 } + +enum : uint { ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND = 13013 } + +enum : uint { ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND = 13014 } + +enum : uint { ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND = 13015 } + +enum : uint { ERROR_IPSEC_TUNNEL_FILTER_EXISTS = 13016 } + +enum : uint { ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND = 13017 } + +enum : uint { ERROR_IPSEC_MM_FILTER_PENDING_DELETION = 13018 } + +enum : uint { ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION = 13019 } + +enum : uint { ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION = 13020 } + +enum : uint { ERROR_IPSEC_MM_POLICY_PENDING_DELETION = 13021 } + +enum : uint { ERROR_IPSEC_MM_AUTH_PENDING_DELETION = 13022 } + +enum : uint { ERROR_IPSEC_QM_POLICY_PENDING_DELETION = 13023 } + +enum : uint { ERROR_IPSEC_IKE_NEG_STATUS_BEGIN = 13800 } + +enum : uint { ERROR_IPSEC_IKE_AUTH_FAIL = 13801 } + +enum : uint { ERROR_IPSEC_IKE_ATTRIB_FAIL = 13802 } + +enum : uint { ERROR_IPSEC_IKE_NEGOTIATION_PENDING = 13803 } + +enum : uint { ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR = 13804 } + +enum : uint { ERROR_IPSEC_IKE_TIMED_OUT = 13805 } + +enum : uint { ERROR_IPSEC_IKE_NO_CERT = 13806 } + +enum : uint { ERROR_IPSEC_IKE_SA_DELETED = 13807 } + +enum : uint { ERROR_IPSEC_IKE_SA_REAPED = 13808 } + +enum : uint { ERROR_IPSEC_IKE_MM_ACQUIRE_DROP = 13809 } + +enum : uint { ERROR_IPSEC_IKE_QM_ACQUIRE_DROP = 13810 } + +enum : uint { ERROR_IPSEC_IKE_QUEUE_DROP_MM = 13811 } + +enum : uint { ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM = 13812 } + +enum : uint { ERROR_IPSEC_IKE_DROP_NO_RESPONSE = 13813 } + +enum : uint { ERROR_IPSEC_IKE_MM_DELAY_DROP = 13814 } + +enum : uint { ERROR_IPSEC_IKE_QM_DELAY_DROP = 13815 } + +enum : uint { ERROR_IPSEC_IKE_ERROR = 13816 } + +enum : uint { ERROR_IPSEC_IKE_CRL_FAILED = 13817 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_KEY_USAGE = 13818 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_CERT_TYPE = 13819 } + +enum : uint { ERROR_IPSEC_IKE_NO_PRIVATE_KEY = 13820 } + +enum : uint { ERROR_IPSEC_IKE_DH_FAIL = 13822 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_HEADER = 13824 } + +enum : uint { ERROR_IPSEC_IKE_NO_POLICY = 13825 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_SIGNATURE = 13826 } + +enum : uint { ERROR_IPSEC_IKE_KERBEROS_ERROR = 13827 } + +enum : uint { ERROR_IPSEC_IKE_NO_PUBLIC_KEY = 13828 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR = 13829 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_SA = 13830 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_PROP = 13831 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_TRANS = 13832 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_KE = 13833 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_ID = 13834 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_CERT = 13835 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ = 13836 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_HASH = 13837 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_SIG = 13838 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_NONCE = 13839 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY = 13840 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_DELETE = 13841 } + +enum : uint { ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR = 13842 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_PAYLOAD = 13843 } + +enum : uint { ERROR_IPSEC_IKE_LOAD_SOFT_SA = 13844 } + +enum : uint { ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN = 13845 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_COOKIE = 13846 } + +enum : uint { ERROR_IPSEC_IKE_NO_PEER_CERT = 13847 } + +enum : uint { ERROR_IPSEC_IKE_PEER_CRL_FAILED = 13848 } + +enum : uint { ERROR_IPSEC_IKE_POLICY_CHANGE = 13849 } + +enum : uint { ERROR_IPSEC_IKE_NO_MM_POLICY = 13850 } + +enum : uint { ERROR_IPSEC_IKE_NOTCBPRIV = 13851 } + +enum : uint { ERROR_IPSEC_IKE_SECLOADFAIL = 13852 } + +enum : uint { ERROR_IPSEC_IKE_FAILSSPINIT = 13853 } + +enum : uint { ERROR_IPSEC_IKE_FAILQUERYSSP = 13854 } + +enum : uint { ERROR_IPSEC_IKE_SRVACQFAIL = 13855 } + +enum : uint { ERROR_IPSEC_IKE_SRVQUERYCRED = 13856 } + +enum : uint { ERROR_IPSEC_IKE_GETSPIFAIL = 13857 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_FILTER = 13858 } + +enum : uint { ERROR_IPSEC_IKE_OUT_OF_MEMORY = 13859 } + +enum : uint { ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED = 13860 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_POLICY = 13861 } + +enum : uint { ERROR_IPSEC_IKE_UNKNOWN_DOI = 13862 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_SITUATION = 13863 } + +enum : uint { ERROR_IPSEC_IKE_DH_FAILURE = 13864 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_GROUP = 13865 } + +enum : uint { ERROR_IPSEC_IKE_ENCRYPT = 13866 } + +enum : uint { ERROR_IPSEC_IKE_DECRYPT = 13867 } + +enum : uint { ERROR_IPSEC_IKE_POLICY_MATCH = 13868 } + +enum : uint { ERROR_IPSEC_IKE_UNSUPPORTED_ID = 13869 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_HASH = 13870 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_HASH_ALG = 13871 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_HASH_SIZE = 13872 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG = 13873 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_AUTH_ALG = 13874 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_SIG = 13875 } + +enum : uint { ERROR_IPSEC_IKE_LOAD_FAILED = 13876 } + +enum : uint { ERROR_IPSEC_IKE_RPC_DELETE = 13877 } + +enum : uint { ERROR_IPSEC_IKE_BENIGN_REINIT = 13878 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY = 13879 } + +enum : uint { ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN = 13881 } + +enum : uint { ERROR_IPSEC_IKE_MM_LIMIT = 13882 } + +enum : uint { ERROR_IPSEC_IKE_NEGOTIATION_DISABLED = 13883 } + +enum : uint { ERROR_IPSEC_IKE_NEG_STATUS_END = 13884 } + +enum : uint { SEVERITY_SUCCESS = 0 } +enum : uint { SEVERITY_ERROR = 1 } + +bit SUCCEEDED(HRESULT Status){ return Status >= 0; } + +bit FAILED(HRESULT Status){ return Status < 0; } + +// #define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR) + +// #define HRESULT_CODE(hr) ((hr) & 0xFFFF) +// #define SCODE_CODE(sc) ((sc) & 0xFFFF) + +// #define HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff) +// #define SCODE_FACILITY(sc) (((sc) >> 16) & 0x1fff) + +// #define HRESULT_SEVERITY(hr) (((hr) >> 31) & 0x1) +// #define SCODE_SEVERITY(sc) (((sc) >> 31) & 0x1) + +// #define MAKE_HRESULT(sev,fac,code) ((HRESULT) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) +// #define MAKE_SCODE(sev,fac,code) ((SCODE) (((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code))) ) + +enum : uint { FACILITY_NT_BIT = 0x10000000 } + +// #define __HRESULT_FROM_WIN32(x) ((HRESULT)(x) <= 0 ? ((HRESULT)(x)) : ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000))) + +// #ifdef INLINE_HRESULT_FROM_WIN32 +// #ifndef _HRESULT_DEFINED +// #... +// ... +// #endif +// #ifndef __midl +// ... +// #else +// #... +// #endif +// #else +// #define HRESULT_FROM_WIN32(x) __HRESULT_FROM_WIN32(x) +// #endif + +// #define HRESULT_FROM_NT(x) ((HRESULT) ((x) | FACILITY_NT_BIT)) + +// #define GetScode(hr) ((SCODE) (hr)) + +// #define ResultFromScode(sc) ((HRESULT) (sc)) + +// #define PropagateResult(hrPrevious, scBase) ((HRESULT) scBase) + +// #ifdef RC_INVOKED +// #... +// #else // RC_INVOKED +// #define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc) +// #endif // RC_INVOKED + +enum : uint { NOERROR = 0 } + +enum : HRESULT { E_UNEXPECTED = cast(HRESULT)0x8000FFFFL } + +// #if defined(_WIN32) && !defined(_MAC) + +enum : HRESULT { E_NOTIMPL = cast(HRESULT)0x80004001L } + +enum : HRESULT { E_OUTOFMEMORY = cast(HRESULT)0x8007000EL } + +enum : HRESULT { E_INVALIDARG = cast(HRESULT)0x80070057L } + +enum : HRESULT { E_NOINTERFACE = cast(HRESULT)0x80004002L } + +enum : HRESULT { E_POINTER = cast(HRESULT)0x80004003L } + +enum : HRESULT { E_HANDLE = cast(HRESULT)0x80070006L } + +enum : HRESULT { E_ABORT = cast(HRESULT)0x80004004L } + +enum : HRESULT { E_FAIL = cast(HRESULT)0x80004005L } + +enum : HRESULT { E_ACCESSDENIED = cast(HRESULT)0x80070005L } + +// #else + +// #... + +// #... + +// #... + +// #... + +// #... + +// #... + +// #... + +// #... + +// #... + +// #endif //WIN32 + +enum : HRESULT { E_PENDING = cast(HRESULT)0x8000000AL } + +enum : HRESULT { CO_E_INIT_TLS = cast(HRESULT)0x80004006L } + +enum : HRESULT { CO_E_INIT_SHARED_ALLOCATOR = cast(HRESULT)0x80004007L } + +enum : HRESULT { CO_E_INIT_MEMORY_ALLOCATOR = cast(HRESULT)0x80004008L } + +enum : HRESULT { CO_E_INIT_CLASS_CACHE = cast(HRESULT)0x80004009L } + +enum : HRESULT { CO_E_INIT_RPC_CHANNEL = cast(HRESULT)0x8000400AL } + +enum : HRESULT { CO_E_INIT_TLS_SET_CHANNEL_CONTROL = cast(HRESULT)0x8000400BL } + +enum : HRESULT { CO_E_INIT_TLS_CHANNEL_CONTROL = cast(HRESULT)0x8000400CL } + +enum : HRESULT { CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = cast(HRESULT)0x8000400DL } + +enum : HRESULT { CO_E_INIT_SCM_MUTEX_EXISTS = cast(HRESULT)0x8000400EL } + +enum : HRESULT { CO_E_INIT_SCM_FILE_MAPPING_EXISTS = cast(HRESULT)0x8000400FL } + +enum : HRESULT { CO_E_INIT_SCM_MAP_VIEW_OF_FILE = cast(HRESULT)0x80004010L } + +enum : HRESULT { CO_E_INIT_SCM_EXEC_FAILURE = cast(HRESULT)0x80004011L } + +enum : HRESULT { CO_E_INIT_ONLY_SINGLE_THREADED = cast(HRESULT)0x80004012L } + +enum : HRESULT { CO_E_CANT_REMOTE = cast(HRESULT)0x80004013L } + +enum : HRESULT { CO_E_BAD_SERVER_NAME = cast(HRESULT)0x80004014L } + +enum : HRESULT { CO_E_WRONG_SERVER_IDENTITY = cast(HRESULT)0x80004015L } + +enum : HRESULT { CO_E_OLE1DDE_DISABLED = cast(HRESULT)0x80004016L } + +enum : HRESULT { CO_E_RUNAS_SYNTAX = cast(HRESULT)0x80004017L } + +enum : HRESULT { CO_E_CREATEPROCESS_FAILURE = cast(HRESULT)0x80004018L } + +enum : HRESULT { CO_E_RUNAS_CREATEPROCESS_FAILURE = cast(HRESULT)0x80004019L } + +enum : HRESULT { CO_E_RUNAS_LOGON_FAILURE = cast(HRESULT)0x8000401AL } + +enum : HRESULT { CO_E_LAUNCH_PERMSSION_DENIED = cast(HRESULT)0x8000401BL } + +enum : HRESULT { CO_E_START_SERVICE_FAILURE = cast(HRESULT)0x8000401CL } + +enum : HRESULT { CO_E_REMOTE_COMMUNICATION_FAILURE = cast(HRESULT)0x8000401DL } + +enum : HRESULT { CO_E_SERVER_START_TIMEOUT = cast(HRESULT)0x8000401EL } + +enum : HRESULT { CO_E_CLSREG_INCONSISTENT = cast(HRESULT)0x8000401FL } + +enum : HRESULT { CO_E_IIDREG_INCONSISTENT = cast(HRESULT)0x80004020L } + +enum : HRESULT { CO_E_NOT_SUPPORTED = cast(HRESULT)0x80004021L } + +enum : HRESULT { CO_E_RELOAD_DLL = cast(HRESULT)0x80004022L } + +enum : HRESULT { CO_E_MSI_ERROR = cast(HRESULT)0x80004023L } + +enum : HRESULT { CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT = cast(HRESULT)0x80004024L } + +enum : HRESULT { CO_E_SERVER_PAUSED = cast(HRESULT)0x80004025L } + +enum : HRESULT { CO_E_SERVER_NOT_PAUSED = cast(HRESULT)0x80004026L } + +enum : HRESULT { CO_E_CLASS_DISABLED = cast(HRESULT)0x80004027L } + +enum : HRESULT { CO_E_CLRNOTAVAILABLE = cast(HRESULT)0x80004028L } + +enum : HRESULT { CO_E_ASYNC_WORK_REJECTED = cast(HRESULT)0x80004029L } + +enum : HRESULT { CO_E_SERVER_INIT_TIMEOUT = cast(HRESULT)0x8000402AL } + +enum : HRESULT { CO_E_NO_SECCTX_IN_ACTIVATE = cast(HRESULT)0x8000402BL } + +enum : HRESULT { CO_E_TRACKER_CONFIG = cast(HRESULT)0x80004030L } + +enum : HRESULT { CO_E_THREADPOOL_CONFIG = cast(HRESULT)0x80004031L } + +enum : HRESULT { CO_E_SXS_CONFIG = cast(HRESULT)0x80004032L } + +enum : HRESULT { CO_E_MALFORMED_SPN = cast(HRESULT)0x80004033L } + +enum : HRESULT { S_OK = cast(HRESULT)0x00000000 } +enum : HRESULT { S_FALSE = cast(HRESULT)0x00000001 } + +enum : HRESULT { OLE_E_FIRST = cast(HRESULT)0x80040000 } +enum : HRESULT { OLE_E_LAST = cast(HRESULT)0x800400FF } +enum : HRESULT { OLE_S_FIRST = cast(HRESULT)0x00040000 } +enum : HRESULT { OLE_S_LAST = cast(HRESULT)0x000400FF } + +enum : HRESULT { OLE_E_OLEVERB = cast(HRESULT)0x80040000L } + +enum : HRESULT { OLE_E_ADVF = cast(HRESULT)0x80040001L } + +enum : HRESULT { OLE_E_ENUM_NOMORE = cast(HRESULT)0x80040002L } + +enum : HRESULT { OLE_E_ADVISENOTSUPPORTED = cast(HRESULT)0x80040003L } + +enum : HRESULT { OLE_E_NOCONNECTION = cast(HRESULT)0x80040004L } + +enum : HRESULT { OLE_E_NOTRUNNING = cast(HRESULT)0x80040005L } + +enum : HRESULT { OLE_E_NOCACHE = cast(HRESULT)0x80040006L } + +enum : HRESULT { OLE_E_BLANK = cast(HRESULT)0x80040007L } + +enum : HRESULT { OLE_E_CLASSDIFF = cast(HRESULT)0x80040008L } + +enum : HRESULT { OLE_E_CANT_GETMONIKER = cast(HRESULT)0x80040009L } + +enum : HRESULT { OLE_E_CANT_BINDTOSOURCE = cast(HRESULT)0x8004000AL } + +enum : HRESULT { OLE_E_STATIC = cast(HRESULT)0x8004000BL } + +enum : HRESULT { OLE_E_PROMPTSAVECANCELLED = cast(HRESULT)0x8004000CL } + +enum : HRESULT { OLE_E_INVALIDRECT = cast(HRESULT)0x8004000DL } + +enum : HRESULT { OLE_E_WRONGCOMPOBJ = cast(HRESULT)0x8004000EL } + +enum : HRESULT { OLE_E_INVALIDHWND = cast(HRESULT)0x8004000FL } + +enum : HRESULT { OLE_E_NOT_INPLACEACTIVE = cast(HRESULT)0x80040010L } + +enum : HRESULT { OLE_E_CANTCONVERT = cast(HRESULT)0x80040011L } + +enum : HRESULT { OLE_E_NOSTORAGE = cast(HRESULT)0x80040012L } + +enum : HRESULT { DV_E_FORMATETC = cast(HRESULT)0x80040064L } + +enum : HRESULT { DV_E_DVTARGETDEVICE = cast(HRESULT)0x80040065L } + +enum : HRESULT { DV_E_STGMEDIUM = cast(HRESULT)0x80040066L } + +enum : HRESULT { DV_E_STATDATA = cast(HRESULT)0x80040067L } + +enum : HRESULT { DV_E_LINDEX = cast(HRESULT)0x80040068L } + +enum : HRESULT { DV_E_TYMED = cast(HRESULT)0x80040069L } + +enum : HRESULT { DV_E_CLIPFORMAT = cast(HRESULT)0x8004006AL } + +enum : HRESULT { DV_E_DVASPECT = cast(HRESULT)0x8004006BL } + +enum : HRESULT { DV_E_DVTARGETDEVICE_SIZE = cast(HRESULT)0x8004006CL } + +enum : HRESULT { DV_E_NOIVIEWOBJECT = cast(HRESULT)0x8004006DL } + +enum : uint { DRAGDROP_E_FIRST = 0x80040100 } +enum : uint { DRAGDROP_E_LAST = 0x8004010F } +enum : uint { DRAGDROP_S_FIRST = 0x00040100 } +enum : uint { DRAGDROP_S_LAST = 0x0004010F } + +enum : HRESULT { DRAGDROP_E_NOTREGISTERED = cast(HRESULT)0x80040100L } + +enum : HRESULT { DRAGDROP_E_ALREADYREGISTERED = cast(HRESULT)0x80040101L } + +enum : HRESULT { DRAGDROP_E_INVALIDHWND = cast(HRESULT)0x80040102L } + +enum : uint { CLASSFACTORY_E_FIRST = 0x80040110 } +enum : uint { CLASSFACTORY_E_LAST = 0x8004011F } +enum : uint { CLASSFACTORY_S_FIRST = 0x00040110 } +enum : uint { CLASSFACTORY_S_LAST = 0x0004011F } + +enum : HRESULT { CLASS_E_NOAGGREGATION = cast(HRESULT)0x80040110L } + +enum : HRESULT { CLASS_E_CLASSNOTAVAILABLE = cast(HRESULT)0x80040111L } + +enum : HRESULT { CLASS_E_NOTLICENSED = cast(HRESULT)0x80040112L } + +enum : uint { MARSHAL_E_FIRST = 0x80040120 } +enum : uint { MARSHAL_E_LAST = 0x8004012F } +enum : uint { MARSHAL_S_FIRST = 0x00040120 } +enum : uint { MARSHAL_S_LAST = 0x0004012F } +enum : uint { DATA_E_FIRST = 0x80040130 } +enum : uint { DATA_E_LAST = 0x8004013F } +enum : uint { DATA_S_FIRST = 0x00040130 } +enum : uint { DATA_S_LAST = 0x0004013F } +enum : uint { VIEW_E_FIRST = 0x80040140 } +enum : uint { VIEW_E_LAST = 0x8004014F } +enum : uint { VIEW_S_FIRST = 0x00040140 } +enum : uint { VIEW_S_LAST = 0x0004014F } + +enum : HRESULT { VIEW_E_DRAW = cast(HRESULT)0x80040140L } + +enum : uint { REGDB_E_FIRST = 0x80040150 } +enum : uint { REGDB_E_LAST = 0x8004015F } +enum : uint { REGDB_S_FIRST = 0x00040150 } +enum : uint { REGDB_S_LAST = 0x0004015F } + +enum : HRESULT { REGDB_E_READREGDB = cast(HRESULT)0x80040150L } + +enum : HRESULT { REGDB_E_WRITEREGDB = cast(HRESULT)0x80040151L } + +enum : HRESULT { REGDB_E_KEYMISSING = cast(HRESULT)0x80040152L } + +enum : HRESULT { REGDB_E_INVALIDVALUE = cast(HRESULT)0x80040153L } + +enum : HRESULT { REGDB_E_CLASSNOTREG = cast(HRESULT)0x80040154L } + +enum : HRESULT { REGDB_E_IIDNOTREG = cast(HRESULT)0x80040155L } + +enum : HRESULT { REGDB_E_BADTHREADINGMODEL = cast(HRESULT)0x80040156L } + +enum : uint { CAT_E_FIRST = 0x80040160 } +enum : uint { CAT_E_LAST = 0x80040161 } + +enum : HRESULT { CAT_E_CATIDNOEXIST = cast(HRESULT)0x80040160L } + +enum : HRESULT { CAT_E_NODESCRIPTION = cast(HRESULT)0x80040161L } + +enum : uint { CS_E_FIRST = 0x80040164 } +enum : uint { CS_E_LAST = 0x8004016F } + +enum : HRESULT { CS_E_PACKAGE_NOTFOUND = cast(HRESULT)0x80040164L } + +enum : HRESULT { CS_E_NOT_DELETABLE = cast(HRESULT)0x80040165L } + +enum : HRESULT { CS_E_CLASS_NOTFOUND = cast(HRESULT)0x80040166L } + +enum : HRESULT { CS_E_INVALID_VERSION = cast(HRESULT)0x80040167L } + +enum : HRESULT { CS_E_NO_CLASSSTORE = cast(HRESULT)0x80040168L } + +enum : HRESULT { CS_E_OBJECT_NOTFOUND = cast(HRESULT)0x80040169L } + +enum : HRESULT { CS_E_OBJECT_ALREADY_EXISTS = cast(HRESULT)0x8004016AL } + +enum : HRESULT { CS_E_INVALID_PATH = cast(HRESULT)0x8004016BL } + +enum : HRESULT { CS_E_NETWORK_ERROR = cast(HRESULT)0x8004016CL } + +enum : HRESULT { CS_E_ADMIN_LIMIT_EXCEEDED = cast(HRESULT)0x8004016DL } + +enum : HRESULT { CS_E_SCHEMA_MISMATCH = cast(HRESULT)0x8004016EL } + +enum : HRESULT { CS_E_INTERNAL_ERROR = cast(HRESULT)0x8004016FL } + +enum : uint { CACHE_E_FIRST = 0x80040170 } +enum : uint { CACHE_E_LAST = 0x8004017F } +enum : uint { CACHE_S_FIRST = 0x00040170 } +enum : uint { CACHE_S_LAST = 0x0004017F } + +enum : HRESULT { CACHE_E_NOCACHE_UPDATED = cast(HRESULT)0x80040170L } + +enum : uint { OLEOBJ_E_FIRST = 0x80040180 } +enum : uint { OLEOBJ_E_LAST = 0x8004018F } +enum : uint { OLEOBJ_S_FIRST = 0x00040180 } +enum : uint { OLEOBJ_S_LAST = 0x0004018F } + +enum : HRESULT { OLEOBJ_E_NOVERBS = cast(HRESULT)0x80040180L } + +enum : HRESULT { OLEOBJ_E_INVALIDVERB = cast(HRESULT)0x80040181L } + +enum : uint { CLIENTSITE_E_FIRST = 0x80040190 } +enum : uint { CLIENTSITE_E_LAST = 0x8004019F } +enum : uint { CLIENTSITE_S_FIRST = 0x00040190 } +enum : uint { CLIENTSITE_S_LAST = 0x0004019F } + +enum : HRESULT { INPLACE_E_NOTUNDOABLE = cast(HRESULT)0x800401A0L } + +enum : HRESULT { INPLACE_E_NOTOOLSPACE = cast(HRESULT)0x800401A1L } + +enum : uint { INPLACE_E_FIRST = 0x800401A0 } +enum : uint { INPLACE_E_LAST = 0x800401AF } +enum : uint { INPLACE_S_FIRST = 0x000401A0 } +enum : uint { INPLACE_S_LAST = 0x000401AF } +enum : uint { ENUM_E_FIRST = 0x800401B0 } +enum : uint { ENUM_E_LAST = 0x800401BF } +enum : uint { ENUM_S_FIRST = 0x000401B0 } +enum : uint { ENUM_S_LAST = 0x000401BF } +enum : uint { CONVERT10_E_FIRST = 0x800401C0 } +enum : uint { CONVERT10_E_LAST = 0x800401CF } +enum : uint { CONVERT10_S_FIRST = 0x000401C0 } +enum : uint { CONVERT10_S_LAST = 0x000401CF } + +enum : HRESULT { CONVERT10_E_OLESTREAM_GET = cast(HRESULT)0x800401C0L } + +enum : HRESULT { CONVERT10_E_OLESTREAM_PUT = cast(HRESULT)0x800401C1L } + +enum : HRESULT { CONVERT10_E_OLESTREAM_FMT = cast(HRESULT)0x800401C2L } + +enum : HRESULT { CONVERT10_E_OLESTREAM_BITMAP_TO_DIB = cast(HRESULT)0x800401C3L } + +enum : HRESULT { CONVERT10_E_STG_FMT = cast(HRESULT)0x800401C4L } + +enum : HRESULT { CONVERT10_E_STG_NO_STD_STREAM = cast(HRESULT)0x800401C5L } + +enum : HRESULT { CONVERT10_E_STG_DIB_TO_BITMAP = cast(HRESULT)0x800401C6L } + +enum : uint { CLIPBRD_E_FIRST = 0x800401D0 } +enum : uint { CLIPBRD_E_LAST = 0x800401DF } +enum : uint { CLIPBRD_S_FIRST = 0x000401D0 } +enum : uint { CLIPBRD_S_LAST = 0x000401DF } + +enum : HRESULT { CLIPBRD_E_CANT_OPEN = cast(HRESULT)0x800401D0L } + +enum : HRESULT { CLIPBRD_E_CANT_EMPTY = cast(HRESULT)0x800401D1L } + +enum : HRESULT { CLIPBRD_E_CANT_SET = cast(HRESULT)0x800401D2L } + +enum : HRESULT { CLIPBRD_E_BAD_DATA = cast(HRESULT)0x800401D3L } + +enum : HRESULT { CLIPBRD_E_CANT_CLOSE = cast(HRESULT)0x800401D4L } + +enum : uint { MK_E_FIRST = 0x800401E0 } +enum : uint { MK_E_LAST = 0x800401EF } +enum : uint { MK_S_FIRST = 0x000401E0 } +enum : uint { MK_S_LAST = 0x000401EF } + +enum : HRESULT { MK_E_CONNECTMANUALLY = cast(HRESULT)0x800401E0L } + +enum : HRESULT { MK_E_EXCEEDEDDEADLINE = cast(HRESULT)0x800401E1L } + +enum : HRESULT { MK_E_NEEDGENERIC = cast(HRESULT)0x800401E2L } + +enum : HRESULT { MK_E_UNAVAILABLE = cast(HRESULT)0x800401E3L } + +enum : HRESULT { MK_E_SYNTAX = cast(HRESULT)0x800401E4L } + +enum : HRESULT { MK_E_NOOBJECT = cast(HRESULT)0x800401E5L } + +enum : HRESULT { MK_E_INVALIDEXTENSION = cast(HRESULT)0x800401E6L } + +enum : HRESULT { MK_E_INTERMEDIATEINTERFACENOTSUPPORTED = cast(HRESULT)0x800401E7L } + +enum : HRESULT { MK_E_NOTBINDABLE = cast(HRESULT)0x800401E8L } + +enum : HRESULT { MK_E_NOTBOUND = cast(HRESULT)0x800401E9L } + +enum : HRESULT { MK_E_CANTOPENFILE = cast(HRESULT)0x800401EAL } + +enum : HRESULT { MK_E_MUSTBOTHERUSER = cast(HRESULT)0x800401EBL } + +enum : HRESULT { MK_E_NOINVERSE = cast(HRESULT)0x800401ECL } + +enum : HRESULT { MK_E_NOSTORAGE = cast(HRESULT)0x800401EDL } + +enum : HRESULT { MK_E_NOPREFIX = cast(HRESULT)0x800401EEL } + +enum : HRESULT { MK_E_ENUMERATION_FAILED = cast(HRESULT)0x800401EFL } + +enum : uint { CO_E_FIRST = 0x800401F0 } +enum : uint { CO_E_LAST = 0x800401FF } +enum : uint { CO_S_FIRST = 0x000401F0 } +enum : uint { CO_S_LAST = 0x000401FF } + +enum : HRESULT { CO_E_NOTINITIALIZED = cast(HRESULT)0x800401F0L } + +enum : HRESULT { CO_E_ALREADYINITIALIZED = cast(HRESULT)0x800401F1L } + +enum : HRESULT { CO_E_CANTDETERMINECLASS = cast(HRESULT)0x800401F2L } + +enum : HRESULT { CO_E_CLASSSTRING = cast(HRESULT)0x800401F3L } + +enum : HRESULT { CO_E_IIDSTRING = cast(HRESULT)0x800401F4L } + +enum : HRESULT { CO_E_APPNOTFOUND = cast(HRESULT)0x800401F5L } + +enum : HRESULT { CO_E_APPSINGLEUSE = cast(HRESULT)0x800401F6L } + +enum : HRESULT { CO_E_ERRORINAPP = cast(HRESULT)0x800401F7L } + +enum : HRESULT { CO_E_DLLNOTFOUND = cast(HRESULT)0x800401F8L } + +enum : HRESULT { CO_E_ERRORINDLL = cast(HRESULT)0x800401F9L } + +enum : HRESULT { CO_E_WRONGOSFORAPP = cast(HRESULT)0x800401FAL } + +enum : HRESULT { CO_E_OBJNOTREG = cast(HRESULT)0x800401FBL } + +enum : HRESULT { CO_E_OBJISREG = cast(HRESULT)0x800401FCL } + +enum : HRESULT { CO_E_OBJNOTCONNECTED = cast(HRESULT)0x800401FDL } + +enum : HRESULT { CO_E_APPDIDNTREG = cast(HRESULT)0x800401FEL } + +enum : HRESULT { CO_E_RELEASED = cast(HRESULT)0x800401FFL } + +enum : uint { EVENT_E_FIRST = 0x80040200 } +enum : uint { EVENT_E_LAST = 0x8004021F } +enum : uint { EVENT_S_FIRST = 0x00040200 } +enum : uint { EVENT_S_LAST = 0x0004021F } + +enum : HRESULT { EVENT_S_SOME_SUBSCRIBERS_FAILED = cast(HRESULT)0x00040200L } + +enum : HRESULT { EVENT_E_ALL_SUBSCRIBERS_FAILED = cast(HRESULT)0x80040201L } + +enum : HRESULT { EVENT_S_NOSUBSCRIBERS = cast(HRESULT)0x00040202L } + +enum : HRESULT { EVENT_E_QUERYSYNTAX = cast(HRESULT)0x80040203L } + +enum : HRESULT { EVENT_E_QUERYFIELD = cast(HRESULT)0x80040204L } + +enum : HRESULT { EVENT_E_INTERNALEXCEPTION = cast(HRESULT)0x80040205L } + +enum : HRESULT { EVENT_E_INTERNALERROR = cast(HRESULT)0x80040206L } + +enum : HRESULT { EVENT_E_INVALID_PER_USER_SID = cast(HRESULT)0x80040207L } + +enum : HRESULT { EVENT_E_USER_EXCEPTION = cast(HRESULT)0x80040208L } + +enum : HRESULT { EVENT_E_TOO_MANY_METHODS = cast(HRESULT)0x80040209L } + +enum : HRESULT { EVENT_E_MISSING_EVENTCLASS = cast(HRESULT)0x8004020AL } + +enum : HRESULT { EVENT_E_NOT_ALL_REMOVED = cast(HRESULT)0x8004020BL } + +enum : HRESULT { EVENT_E_COMPLUS_NOT_INSTALLED = cast(HRESULT)0x8004020CL } + +enum : HRESULT { EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT = cast(HRESULT)0x8004020DL } + +enum : HRESULT { EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT = cast(HRESULT)0x8004020EL } + +enum : HRESULT { EVENT_E_INVALID_EVENT_CLASS_PARTITION = cast(HRESULT)0x8004020FL } + +enum : HRESULT { EVENT_E_PER_USER_SID_NOT_LOGGED_ON = cast(HRESULT)0x80040210L } + +enum : uint { XACT_E_FIRST = 0x8004D000 } +enum : uint { XACT_E_LAST = 0x8004D029 } +enum : uint { XACT_S_FIRST = 0x0004D000 } +enum : uint { XACT_S_LAST = 0x0004D010 } + +enum : HRESULT { XACT_E_ALREADYOTHERSINGLEPHASE = cast(HRESULT)0x8004D000L } + +enum : HRESULT { XACT_E_CANTRETAIN = cast(HRESULT)0x8004D001L } + +enum : HRESULT { XACT_E_COMMITFAILED = cast(HRESULT)0x8004D002L } + +enum : HRESULT { XACT_E_COMMITPREVENTED = cast(HRESULT)0x8004D003L } + +enum : HRESULT { XACT_E_HEURISTICABORT = cast(HRESULT)0x8004D004L } + +enum : HRESULT { XACT_E_HEURISTICCOMMIT = cast(HRESULT)0x8004D005L } + +enum : HRESULT { XACT_E_HEURISTICDAMAGE = cast(HRESULT)0x8004D006L } + +enum : HRESULT { XACT_E_HEURISTICDANGER = cast(HRESULT)0x8004D007L } + +enum : HRESULT { XACT_E_ISOLATIONLEVEL = cast(HRESULT)0x8004D008L } + +enum : HRESULT { XACT_E_NOASYNC = cast(HRESULT)0x8004D009L } + +enum : HRESULT { XACT_E_NOENLIST = cast(HRESULT)0x8004D00AL } + +enum : HRESULT { XACT_E_NOISORETAIN = cast(HRESULT)0x8004D00BL } + +enum : HRESULT { XACT_E_NORESOURCE = cast(HRESULT)0x8004D00CL } + +enum : HRESULT { XACT_E_NOTCURRENT = cast(HRESULT)0x8004D00DL } + +enum : HRESULT { XACT_E_NOTRANSACTION = cast(HRESULT)0x8004D00EL } + +enum : HRESULT { XACT_E_NOTSUPPORTED = cast(HRESULT)0x8004D00FL } + +enum : HRESULT { XACT_E_UNKNOWNRMGRID = cast(HRESULT)0x8004D010L } + +enum : HRESULT { XACT_E_WRONGSTATE = cast(HRESULT)0x8004D011L } + +enum : HRESULT { XACT_E_WRONGUOW = cast(HRESULT)0x8004D012L } + +enum : HRESULT { XACT_E_XTIONEXISTS = cast(HRESULT)0x8004D013L } + +enum : HRESULT { XACT_E_NOIMPORTOBJECT = cast(HRESULT)0x8004D014L } + +enum : HRESULT { XACT_E_INVALIDCOOKIE = cast(HRESULT)0x8004D015L } + +enum : HRESULT { XACT_E_INDOUBT = cast(HRESULT)0x8004D016L } + +enum : HRESULT { XACT_E_NOTIMEOUT = cast(HRESULT)0x8004D017L } + +enum : HRESULT { XACT_E_ALREADYINPROGRESS = cast(HRESULT)0x8004D018L } + +enum : HRESULT { XACT_E_ABORTED = cast(HRESULT)0x8004D019L } + +enum : HRESULT { XACT_E_LOGFULL = cast(HRESULT)0x8004D01AL } + +enum : HRESULT { XACT_E_TMNOTAVAILABLE = cast(HRESULT)0x8004D01BL } + +enum : HRESULT { XACT_E_CONNECTION_DOWN = cast(HRESULT)0x8004D01CL } + +enum : HRESULT { XACT_E_CONNECTION_DENIED = cast(HRESULT)0x8004D01DL } + +enum : HRESULT { XACT_E_REENLISTTIMEOUT = cast(HRESULT)0x8004D01EL } + +enum : HRESULT { XACT_E_TIP_CONNECT_FAILED = cast(HRESULT)0x8004D01FL } + +enum : HRESULT { XACT_E_TIP_PROTOCOL_ERROR = cast(HRESULT)0x8004D020L } + +enum : HRESULT { XACT_E_TIP_PULL_FAILED = cast(HRESULT)0x8004D021L } + +enum : HRESULT { XACT_E_DEST_TMNOTAVAILABLE = cast(HRESULT)0x8004D022L } + +enum : HRESULT { XACT_E_TIP_DISABLED = cast(HRESULT)0x8004D023L } + +enum : HRESULT { XACT_E_NETWORK_TX_DISABLED = cast(HRESULT)0x8004D024L } + +enum : HRESULT { XACT_E_PARTNER_NETWORK_TX_DISABLED = cast(HRESULT)0x8004D025L } + +enum : HRESULT { XACT_E_XA_TX_DISABLED = cast(HRESULT)0x8004D026L } + +enum : HRESULT { XACT_E_UNABLE_TO_READ_DTC_CONFIG = cast(HRESULT)0x8004D027L } + +enum : HRESULT { XACT_E_UNABLE_TO_LOAD_DTC_PROXY = cast(HRESULT)0x8004D028L } + +enum : HRESULT { XACT_E_ABORTING = cast(HRESULT)0x8004D029L } + +enum : HRESULT { XACT_E_CLERKNOTFOUND = cast(HRESULT)0x8004D080L } + +enum : HRESULT { XACT_E_CLERKEXISTS = cast(HRESULT)0x8004D081L } + +enum : HRESULT { XACT_E_RECOVERYINPROGRESS = cast(HRESULT)0x8004D082L } + +enum : HRESULT { XACT_E_TRANSACTIONCLOSED = cast(HRESULT)0x8004D083L } + +enum : HRESULT { XACT_E_INVALIDLSN = cast(HRESULT)0x8004D084L } + +enum : HRESULT { XACT_E_REPLAYREQUEST = cast(HRESULT)0x8004D085L } + +enum : HRESULT { XACT_S_ASYNC = cast(HRESULT)0x0004D000L } + +enum : HRESULT { XACT_S_DEFECT = cast(HRESULT)0x0004D001L } + +enum : HRESULT { XACT_S_READONLY = cast(HRESULT)0x0004D002L } + +enum : HRESULT { XACT_S_SOMENORETAIN = cast(HRESULT)0x0004D003L } + +enum : HRESULT { XACT_S_OKINFORM = cast(HRESULT)0x0004D004L } + +enum : HRESULT { XACT_S_MADECHANGESCONTENT = cast(HRESULT)0x0004D005L } + +enum : HRESULT { XACT_S_MADECHANGESINFORM = cast(HRESULT)0x0004D006L } + +enum : HRESULT { XACT_S_ALLNORETAIN = cast(HRESULT)0x0004D007L } + +enum : HRESULT { XACT_S_ABORTING = cast(HRESULT)0x0004D008L } + +enum : HRESULT { XACT_S_SINGLEPHASE = cast(HRESULT)0x0004D009L } + +enum : HRESULT { XACT_S_LOCALLY_OK = cast(HRESULT)0x0004D00AL } + +enum : HRESULT { XACT_S_LASTRESOURCEMANAGER = cast(HRESULT)0x0004D010L } + +enum : uint { CONTEXT_E_FIRST = 0x8004E000 } +enum : uint { CONTEXT_E_LAST = 0x8004E02F } +enum : uint { CONTEXT_S_FIRST = 0x0004E000 } +enum : uint { CONTEXT_S_LAST = 0x0004E02F } + +enum : HRESULT { CONTEXT_E_ABORTED = cast(HRESULT)0x8004E002L } + +enum : HRESULT { CONTEXT_E_ABORTING = cast(HRESULT)0x8004E003L } + +enum : HRESULT { CONTEXT_E_NOCONTEXT = cast(HRESULT)0x8004E004L } + +enum : HRESULT { CONTEXT_E_SYNCH_TIMEOUT = cast(HRESULT)0x8004E006L } + +enum : HRESULT { CONTEXT_E_OLDREF = cast(HRESULT)0x8004E007L } + +enum : HRESULT { CONTEXT_E_ROLENOTFOUND = cast(HRESULT)0x8004E00CL } + +enum : HRESULT { CONTEXT_E_TMNOTAVAILABLE = cast(HRESULT)0x8004E00FL } + +enum : HRESULT { CO_E_ACTIVATIONFAILED = cast(HRESULT)0x8004E021L } + +enum : HRESULT { CO_E_ACTIVATIONFAILED_EVENTLOGGED = cast(HRESULT)0x8004E022L } + +enum : HRESULT { CO_E_ACTIVATIONFAILED_CATALOGERROR = cast(HRESULT)0x8004E023L } + +enum : HRESULT { CO_E_ACTIVATIONFAILED_TIMEOUT = cast(HRESULT)0x8004E024L } + +enum : HRESULT { CO_E_INITIALIZATIONFAILED = cast(HRESULT)0x8004E025L } + +enum : HRESULT { CONTEXT_E_NOJIT = cast(HRESULT)0x8004E026L } + +enum : HRESULT { CONTEXT_E_NOTRANSACTION = cast(HRESULT)0x8004E027L } + +enum : HRESULT { CO_E_THREADINGMODEL_CHANGED = cast(HRESULT)0x8004E028L } + +enum : HRESULT { CO_E_NOIISINTRINSICS = cast(HRESULT)0x8004E029L } + +enum : HRESULT { CO_E_NOCOOKIES = cast(HRESULT)0x8004E02AL } + +enum : HRESULT { CO_E_DBERROR = cast(HRESULT)0x8004E02BL } + +enum : HRESULT { CO_E_NOTPOOLED = cast(HRESULT)0x8004E02CL } + +enum : HRESULT { CO_E_NOTCONSTRUCTED = cast(HRESULT)0x8004E02DL } + +enum : HRESULT { CO_E_NOSYNCHRONIZATION = cast(HRESULT)0x8004E02EL } + +enum : HRESULT { CO_E_ISOLEVELMISMATCH = cast(HRESULT)0x8004E02FL } + +enum : HRESULT { OLE_S_USEREG = cast(HRESULT)0x00040000L } + +enum : HRESULT { OLE_S_STATIC = cast(HRESULT)0x00040001L } + +enum : HRESULT { OLE_S_MAC_CLIPFORMAT = cast(HRESULT)0x00040002L } + +enum : HRESULT { DRAGDROP_S_DROP = cast(HRESULT)0x00040100L } + +enum : HRESULT { DRAGDROP_S_CANCEL = cast(HRESULT)0x00040101L } + +enum : HRESULT { DRAGDROP_S_USEDEFAULTCURSORS = cast(HRESULT)0x00040102L } + +enum : HRESULT { DATA_S_SAMEFORMATETC = cast(HRESULT)0x00040130L } + +enum : HRESULT { VIEW_S_ALREADY_FROZEN = cast(HRESULT)0x00040140L } + +enum : HRESULT { CACHE_S_FORMATETC_NOTSUPPORTED = cast(HRESULT)0x00040170L } + +enum : HRESULT { CACHE_S_SAMECACHE = cast(HRESULT)0x00040171L } + +enum : HRESULT { CACHE_S_SOMECACHES_NOTUPDATED = cast(HRESULT)0x00040172L } + +enum : HRESULT { OLEOBJ_S_INVALIDVERB = cast(HRESULT)0x00040180L } + +enum : HRESULT { OLEOBJ_S_CANNOT_DOVERB_NOW = cast(HRESULT)0x00040181L } + +enum : HRESULT { OLEOBJ_S_INVALIDHWND = cast(HRESULT)0x00040182L } + +enum : HRESULT { INPLACE_S_TRUNCATED = cast(HRESULT)0x000401A0L } + +enum : HRESULT { CONVERT10_S_NO_PRESENTATION = cast(HRESULT)0x000401C0L } + +enum : HRESULT { MK_S_REDUCED_TO_SELF = cast(HRESULT)0x000401E2L } + +enum : HRESULT { MK_S_ME = cast(HRESULT)0x000401E4L } + +enum : HRESULT { MK_S_HIM = cast(HRESULT)0x000401E5L } + +enum : HRESULT { MK_S_US = cast(HRESULT)0x000401E6L } + +enum : HRESULT { MK_S_MONIKERALREADYREGISTERED = cast(HRESULT)0x000401E7L } + +enum : HRESULT { SCHED_S_TASK_READY = cast(HRESULT)0x00041300L } + +enum : HRESULT { SCHED_S_TASK_RUNNING = cast(HRESULT)0x00041301L } + +enum : HRESULT { SCHED_S_TASK_DISABLED = cast(HRESULT)0x00041302L } + +enum : HRESULT { SCHED_S_TASK_HAS_NOT_RUN = cast(HRESULT)0x00041303L } + +enum : HRESULT { SCHED_S_TASK_NO_MORE_RUNS = cast(HRESULT)0x00041304L } + +enum : HRESULT { SCHED_S_TASK_NOT_SCHEDULED = cast(HRESULT)0x00041305L } + +enum : HRESULT { SCHED_S_TASK_TERMINATED = cast(HRESULT)0x00041306L } + +enum : HRESULT { SCHED_S_TASK_NO_VALID_TRIGGERS = cast(HRESULT)0x00041307L } + +enum : HRESULT { SCHED_S_EVENT_TRIGGER = cast(HRESULT)0x00041308L } + +enum : HRESULT { SCHED_E_TRIGGER_NOT_FOUND = cast(HRESULT)0x80041309L } + +enum : HRESULT { SCHED_E_TASK_NOT_READY = cast(HRESULT)0x8004130AL } + +enum : HRESULT { SCHED_E_TASK_NOT_RUNNING = cast(HRESULT)0x8004130BL } + +enum : HRESULT { SCHED_E_SERVICE_NOT_INSTALLED = cast(HRESULT)0x8004130CL } + +enum : HRESULT { SCHED_E_CANNOT_OPEN_TASK = cast(HRESULT)0x8004130DL } + +enum : HRESULT { SCHED_E_INVALID_TASK = cast(HRESULT)0x8004130EL } + +enum : HRESULT { SCHED_E_ACCOUNT_INFORMATION_NOT_SET = cast(HRESULT)0x8004130FL } + +enum : HRESULT { SCHED_E_ACCOUNT_NAME_NOT_FOUND = cast(HRESULT)0x80041310L } + +enum : HRESULT { SCHED_E_ACCOUNT_DBASE_CORRUPT = cast(HRESULT)0x80041311L } + +enum : HRESULT { SCHED_E_NO_SECURITY_SERVICES = cast(HRESULT)0x80041312L } + +enum : HRESULT { SCHED_E_UNKNOWN_OBJECT_VERSION = cast(HRESULT)0x80041313L } + +enum : HRESULT { SCHED_E_UNSUPPORTED_ACCOUNT_OPTION = cast(HRESULT)0x80041314L } + +enum : HRESULT { SCHED_E_SERVICE_NOT_RUNNING = cast(HRESULT)0x80041315L } + +enum : HRESULT { CO_E_CLASS_CREATE_FAILED = cast(HRESULT)0x80080001L } + +enum : HRESULT { CO_E_SCM_ERROR = cast(HRESULT)0x80080002L } + +enum : HRESULT { CO_E_SCM_RPC_FAILURE = cast(HRESULT)0x80080003L } + +enum : HRESULT { CO_E_BAD_PATH = cast(HRESULT)0x80080004L } + +enum : HRESULT { CO_E_SERVER_EXEC_FAILURE = cast(HRESULT)0x80080005L } + +enum : HRESULT { CO_E_OBJSRV_RPC_FAILURE = cast(HRESULT)0x80080006L } + +enum : HRESULT { MK_E_NO_NORMALIZED = cast(HRESULT)0x80080007L } + +enum : HRESULT { CO_E_SERVER_STOPPING = cast(HRESULT)0x80080008L } + +enum : HRESULT { MEM_E_INVALID_ROOT = cast(HRESULT)0x80080009L } + +enum : HRESULT { MEM_E_INVALID_LINK = cast(HRESULT)0x80080010L } + +enum : HRESULT { MEM_E_INVALID_SIZE = cast(HRESULT)0x80080011L } + +enum : HRESULT { CO_S_NOTALLINTERFACES = cast(HRESULT)0x00080012L } + +enum : HRESULT { CO_S_MACHINENAMENOTFOUND = cast(HRESULT)0x00080013L } + +enum : HRESULT { DISP_E_UNKNOWNINTERFACE = cast(HRESULT)0x80020001L } + +enum : HRESULT { DISP_E_MEMBERNOTFOUND = cast(HRESULT)0x80020003L } + +enum : HRESULT { DISP_E_PARAMNOTFOUND = cast(HRESULT)0x80020004L } + +enum : HRESULT { DISP_E_TYPEMISMATCH = cast(HRESULT)0x80020005L } + +enum : HRESULT { DISP_E_UNKNOWNNAME = cast(HRESULT)0x80020006L } + +enum : HRESULT { DISP_E_NONAMEDARGS = cast(HRESULT)0x80020007L } + +enum : HRESULT { DISP_E_BADVARTYPE = cast(HRESULT)0x80020008L } + +enum : HRESULT { DISP_E_EXCEPTION = cast(HRESULT)0x80020009L } + +enum : HRESULT { DISP_E_OVERFLOW = cast(HRESULT)0x8002000AL } + +enum : HRESULT { DISP_E_BADINDEX = cast(HRESULT)0x8002000BL } + +enum : HRESULT { DISP_E_UNKNOWNLCID = cast(HRESULT)0x8002000CL } + +enum : HRESULT { DISP_E_ARRAYISLOCKED = cast(HRESULT)0x8002000DL } + +enum : HRESULT { DISP_E_BADPARAMCOUNT = cast(HRESULT)0x8002000EL } + +enum : HRESULT { DISP_E_PARAMNOTOPTIONAL = cast(HRESULT)0x8002000FL } + +enum : HRESULT { DISP_E_BADCALLEE = cast(HRESULT)0x80020010L } + +enum : HRESULT { DISP_E_NOTACOLLECTION = cast(HRESULT)0x80020011L } + +enum : HRESULT { DISP_E_DIVBYZERO = cast(HRESULT)0x80020012L } + +enum : HRESULT { DISP_E_BUFFERTOOSMALL = cast(HRESULT)0x80020013L } + +enum : HRESULT { TYPE_E_BUFFERTOOSMALL = cast(HRESULT)0x80028016L } + +enum : HRESULT { TYPE_E_FIELDNOTFOUND = cast(HRESULT)0x80028017L } + +enum : HRESULT { TYPE_E_INVDATAREAD = cast(HRESULT)0x80028018L } + +enum : HRESULT { TYPE_E_UNSUPFORMAT = cast(HRESULT)0x80028019L } + +enum : HRESULT { TYPE_E_REGISTRYACCESS = cast(HRESULT)0x8002801CL } + +enum : HRESULT { TYPE_E_LIBNOTREGISTERED = cast(HRESULT)0x8002801DL } + +enum : HRESULT { TYPE_E_UNDEFINEDTYPE = cast(HRESULT)0x80028027L } + +enum : HRESULT { TYPE_E_QUALIFIEDNAMEDISALLOWED = cast(HRESULT)0x80028028L } + +enum : HRESULT { TYPE_E_INVALIDSTATE = cast(HRESULT)0x80028029L } + +enum : HRESULT { TYPE_E_WRONGTYPEKIND = cast(HRESULT)0x8002802AL } + +enum : HRESULT { TYPE_E_ELEMENTNOTFOUND = cast(HRESULT)0x8002802BL } + +enum : HRESULT { TYPE_E_AMBIGUOUSNAME = cast(HRESULT)0x8002802CL } + +enum : HRESULT { TYPE_E_NAMECONFLICT = cast(HRESULT)0x8002802DL } + +enum : HRESULT { TYPE_E_UNKNOWNLCID = cast(HRESULT)0x8002802EL } + +enum : HRESULT { TYPE_E_DLLFUNCTIONNOTFOUND = cast(HRESULT)0x8002802FL } + +enum : HRESULT { TYPE_E_BADMODULEKIND = cast(HRESULT)0x800288BDL } + +enum : HRESULT { TYPE_E_SIZETOOBIG = cast(HRESULT)0x800288C5L } + +enum : HRESULT { TYPE_E_DUPLICATEID = cast(HRESULT)0x800288C6L } + +enum : HRESULT { TYPE_E_INVALIDID = cast(HRESULT)0x800288CFL } + +enum : HRESULT { TYPE_E_TYPEMISMATCH = cast(HRESULT)0x80028CA0L } + +enum : HRESULT { TYPE_E_OUTOFBOUNDS = cast(HRESULT)0x80028CA1L } + +enum : HRESULT { TYPE_E_IOERROR = cast(HRESULT)0x80028CA2L } + +enum : HRESULT { TYPE_E_CANTCREATETMPFILE = cast(HRESULT)0x80028CA3L } + +enum : HRESULT { TYPE_E_CANTLOADLIBRARY = cast(HRESULT)0x80029C4AL } + +enum : HRESULT { TYPE_E_INCONSISTENTPROPFUNCS = cast(HRESULT)0x80029C83L } + +enum : HRESULT { TYPE_E_CIRCULARTYPE = cast(HRESULT)0x80029C84L } + +enum : HRESULT { STG_E_INVALIDFUNCTION = cast(HRESULT)0x80030001L } + +enum : HRESULT { STG_E_FILENOTFOUND = cast(HRESULT)0x80030002L } + +enum : HRESULT { STG_E_PATHNOTFOUND = cast(HRESULT)0x80030003L } + +enum : HRESULT { STG_E_TOOMANYOPENFILES = cast(HRESULT)0x80030004L } + +enum : HRESULT { STG_E_ACCESSDENIED = cast(HRESULT)0x80030005L } + +enum : HRESULT { STG_E_INVALIDHANDLE = cast(HRESULT)0x80030006L } + +enum : HRESULT { STG_E_INSUFFICIENTMEMORY = cast(HRESULT)0x80030008L } + +enum : HRESULT { STG_E_INVALIDPOINTER = cast(HRESULT)0x80030009L } + +enum : HRESULT { STG_E_NOMOREFILES = cast(HRESULT)0x80030012L } + +enum : HRESULT { STG_E_DISKISWRITEPROTECTED = cast(HRESULT)0x80030013L } + +enum : HRESULT { STG_E_SEEKERROR = cast(HRESULT)0x80030019L } + +enum : HRESULT { STG_E_WRITEFAULT = cast(HRESULT)0x8003001DL } + +enum : HRESULT { STG_E_READFAULT = cast(HRESULT)0x8003001EL } + +enum : HRESULT { STG_E_SHAREVIOLATION = cast(HRESULT)0x80030020L } + +enum : HRESULT { STG_E_LOCKVIOLATION = cast(HRESULT)0x80030021L } + +enum : HRESULT { STG_E_FILEALREADYEXISTS = cast(HRESULT)0x80030050L } + +enum : HRESULT { STG_E_INVALIDPARAMETER = cast(HRESULT)0x80030057L } + +enum : HRESULT { STG_E_MEDIUMFULL = cast(HRESULT)0x80030070L } + +enum : HRESULT { STG_E_PROPSETMISMATCHED = cast(HRESULT)0x800300F0L } + +enum : HRESULT { STG_E_ABNORMALAPIEXIT = cast(HRESULT)0x800300FAL } + +enum : HRESULT { STG_E_INVALIDHEADER = cast(HRESULT)0x800300FBL } + +enum : HRESULT { STG_E_INVALIDNAME = cast(HRESULT)0x800300FCL } + +enum : HRESULT { STG_E_UNKNOWN = cast(HRESULT)0x800300FDL } + +enum : HRESULT { STG_E_UNIMPLEMENTEDFUNCTION = cast(HRESULT)0x800300FEL } + +enum : HRESULT { STG_E_INVALIDFLAG = cast(HRESULT)0x800300FFL } + +enum : HRESULT { STG_E_INUSE = cast(HRESULT)0x80030100L } + +enum : HRESULT { STG_E_NOTCURRENT = cast(HRESULT)0x80030101L } + +enum : HRESULT { STG_E_REVERTED = cast(HRESULT)0x80030102L } + +enum : HRESULT { STG_E_CANTSAVE = cast(HRESULT)0x80030103L } + +enum : HRESULT { STG_E_OLDFORMAT = cast(HRESULT)0x80030104L } + +enum : HRESULT { STG_E_OLDDLL = cast(HRESULT)0x80030105L } + +enum : HRESULT { STG_E_SHAREREQUIRED = cast(HRESULT)0x80030106L } + +enum : HRESULT { STG_E_NOTFILEBASEDSTORAGE = cast(HRESULT)0x80030107L } + +enum : HRESULT { STG_E_EXTANTMARSHALLINGS = cast(HRESULT)0x80030108L } + +enum : HRESULT { STG_E_DOCFILECORRUPT = cast(HRESULT)0x80030109L } + +enum : HRESULT { STG_E_BADBASEADDRESS = cast(HRESULT)0x80030110L } + +enum : HRESULT { STG_E_DOCFILETOOLARGE = cast(HRESULT)0x80030111L } + +enum : HRESULT { STG_E_NOTSIMPLEFORMAT = cast(HRESULT)0x80030112L } + +enum : HRESULT { STG_E_INCOMPLETE = cast(HRESULT)0x80030201L } + +enum : HRESULT { STG_E_TERMINATED = cast(HRESULT)0x80030202L } + +enum : HRESULT { STG_S_CONVERTED = cast(HRESULT)0x00030200L } + +enum : HRESULT { STG_S_BLOCK = cast(HRESULT)0x00030201L } + +enum : HRESULT { STG_S_RETRYNOW = cast(HRESULT)0x00030202L } + +enum : HRESULT { STG_S_MONITORING = cast(HRESULT)0x00030203L } + +enum : HRESULT { STG_S_MULTIPLEOPENS = cast(HRESULT)0x00030204L } + +enum : HRESULT { STG_S_CONSOLIDATIONFAILED = cast(HRESULT)0x00030205L } + +enum : HRESULT { STG_S_CANNOTCONSOLIDATE = cast(HRESULT)0x00030206L } + +enum : HRESULT { STG_E_STATUS_COPY_PROTECTION_FAILURE = cast(HRESULT)0x80030305L } + +enum : HRESULT { STG_E_CSS_AUTHENTICATION_FAILURE = cast(HRESULT)0x80030306L } + +enum : HRESULT { STG_E_CSS_KEY_NOT_PRESENT = cast(HRESULT)0x80030307L } + +enum : HRESULT { STG_E_CSS_KEY_NOT_ESTABLISHED = cast(HRESULT)0x80030308L } + +enum : HRESULT { STG_E_CSS_SCRAMBLED_SECTOR = cast(HRESULT)0x80030309L } + +enum : HRESULT { STG_E_CSS_REGION_MISMATCH = cast(HRESULT)0x8003030AL } + +enum : HRESULT { STG_E_RESETS_EXHAUSTED = cast(HRESULT)0x8003030BL } + +enum : HRESULT { RPC_E_CALL_REJECTED = cast(HRESULT)0x80010001L } + +enum : HRESULT { RPC_E_CALL_CANCELED = cast(HRESULT)0x80010002L } + +enum : HRESULT { RPC_E_CANTPOST_INSENDCALL = cast(HRESULT)0x80010003L } + +enum : HRESULT { RPC_E_CANTCALLOUT_INASYNCCALL = cast(HRESULT)0x80010004L } + +enum : HRESULT { RPC_E_CANTCALLOUT_INEXTERNALCALL = cast(HRESULT)0x80010005L } + +enum : HRESULT { RPC_E_CONNECTION_TERMINATED = cast(HRESULT)0x80010006L } + +enum : HRESULT { RPC_E_SERVER_DIED = cast(HRESULT)0x80010007L } + +enum : HRESULT { RPC_E_CLIENT_DIED = cast(HRESULT)0x80010008L } + +enum : HRESULT { RPC_E_INVALID_DATAPACKET = cast(HRESULT)0x80010009L } + +enum : HRESULT { RPC_E_CANTTRANSMIT_CALL = cast(HRESULT)0x8001000AL } + +enum : HRESULT { RPC_E_CLIENT_CANTMARSHAL_DATA = cast(HRESULT)0x8001000BL } + +enum : HRESULT { RPC_E_CLIENT_CANTUNMARSHAL_DATA = cast(HRESULT)0x8001000CL } + +enum : HRESULT { RPC_E_SERVER_CANTMARSHAL_DATA = cast(HRESULT)0x8001000DL } + +enum : HRESULT { RPC_E_SERVER_CANTUNMARSHAL_DATA = cast(HRESULT)0x8001000EL } + +enum : HRESULT { RPC_E_INVALID_DATA = cast(HRESULT)0x8001000FL } + +enum : HRESULT { RPC_E_INVALID_PARAMETER = cast(HRESULT)0x80010010L } + +enum : HRESULT { RPC_E_CANTCALLOUT_AGAIN = cast(HRESULT)0x80010011L } + +enum : HRESULT { RPC_E_SERVER_DIED_DNE = cast(HRESULT)0x80010012L } + +enum : HRESULT { RPC_E_SYS_CALL_FAILED = cast(HRESULT)0x80010100L } + +enum : HRESULT { RPC_E_OUT_OF_RESOURCES = cast(HRESULT)0x80010101L } + +enum : HRESULT { RPC_E_ATTEMPTED_MULTITHREAD = cast(HRESULT)0x80010102L } + +enum : HRESULT { RPC_E_NOT_REGISTERED = cast(HRESULT)0x80010103L } + +enum : HRESULT { RPC_E_FAULT = cast(HRESULT)0x80010104L } + +enum : HRESULT { RPC_E_SERVERFAULT = cast(HRESULT)0x80010105L } + +enum : HRESULT { RPC_E_CHANGED_MODE = cast(HRESULT)0x80010106L } + +enum : HRESULT { RPC_E_INVALIDMETHOD = cast(HRESULT)0x80010107L } + +enum : HRESULT { RPC_E_DISCONNECTED = cast(HRESULT)0x80010108L } + +enum : HRESULT { RPC_E_RETRY = cast(HRESULT)0x80010109L } + +enum : HRESULT { RPC_E_SERVERCALL_RETRYLATER = cast(HRESULT)0x8001010AL } + +enum : HRESULT { RPC_E_SERVERCALL_REJECTED = cast(HRESULT)0x8001010BL } + +enum : HRESULT { RPC_E_INVALID_CALLDATA = cast(HRESULT)0x8001010CL } + +enum : HRESULT { RPC_E_CANTCALLOUT_ININPUTSYNCCALL = cast(HRESULT)0x8001010DL } + +enum : HRESULT { RPC_E_WRONG_THREAD = cast(HRESULT)0x8001010EL } + +enum : HRESULT { RPC_E_THREAD_NOT_INIT = cast(HRESULT)0x8001010FL } + +enum : HRESULT { RPC_E_VERSION_MISMATCH = cast(HRESULT)0x80010110L } + +enum : HRESULT { RPC_E_INVALID_HEADER = cast(HRESULT)0x80010111L } + +enum : HRESULT { RPC_E_INVALID_EXTENSION = cast(HRESULT)0x80010112L } + +enum : HRESULT { RPC_E_INVALID_IPID = cast(HRESULT)0x80010113L } + +enum : HRESULT { RPC_E_INVALID_OBJECT = cast(HRESULT)0x80010114L } + +enum : HRESULT { RPC_S_CALLPENDING = cast(HRESULT)0x80010115L } + +enum : HRESULT { RPC_S_WAITONTIMER = cast(HRESULT)0x80010116L } + +enum : HRESULT { RPC_E_CALL_COMPLETE = cast(HRESULT)0x80010117L } + +enum : HRESULT { RPC_E_UNSECURE_CALL = cast(HRESULT)0x80010118L } + +enum : HRESULT { RPC_E_TOO_LATE = cast(HRESULT)0x80010119L } + +enum : HRESULT { RPC_E_NO_GOOD_SECURITY_PACKAGES = cast(HRESULT)0x8001011AL } + +enum : HRESULT { RPC_E_ACCESS_DENIED = cast(HRESULT)0x8001011BL } + +enum : HRESULT { RPC_E_REMOTE_DISABLED = cast(HRESULT)0x8001011CL } + +enum : HRESULT { RPC_E_INVALID_OBJREF = cast(HRESULT)0x8001011DL } + +enum : HRESULT { RPC_E_NO_CONTEXT = cast(HRESULT)0x8001011EL } + +enum : HRESULT { RPC_E_TIMEOUT = cast(HRESULT)0x8001011FL } + +enum : HRESULT { RPC_E_NO_SYNC = cast(HRESULT)0x80010120L } + +enum : HRESULT { RPC_E_FULLSIC_REQUIRED = cast(HRESULT)0x80010121L } + +enum : HRESULT { RPC_E_INVALID_STD_NAME = cast(HRESULT)0x80010122L } + +enum : HRESULT { CO_E_FAILEDTOIMPERSONATE = cast(HRESULT)0x80010123L } + +enum : HRESULT { CO_E_FAILEDTOGETSECCTX = cast(HRESULT)0x80010124L } + +enum : HRESULT { CO_E_FAILEDTOOPENTHREADTOKEN = cast(HRESULT)0x80010125L } + +enum : HRESULT { CO_E_FAILEDTOGETTOKENINFO = cast(HRESULT)0x80010126L } + +enum : HRESULT { CO_E_TRUSTEEDOESNTMATCHCLIENT = cast(HRESULT)0x80010127L } + +enum : HRESULT { CO_E_FAILEDTOQUERYCLIENTBLANKET = cast(HRESULT)0x80010128L } + +enum : HRESULT { CO_E_FAILEDTOSETDACL = cast(HRESULT)0x80010129L } + +enum : HRESULT { CO_E_ACCESSCHECKFAILED = cast(HRESULT)0x8001012AL } + +enum : HRESULT { CO_E_NETACCESSAPIFAILED = cast(HRESULT)0x8001012BL } + +enum : HRESULT { CO_E_WRONGTRUSTEENAMESYNTAX = cast(HRESULT)0x8001012CL } + +enum : HRESULT { CO_E_INVALIDSID = cast(HRESULT)0x8001012DL } + +enum : HRESULT { CO_E_CONVERSIONFAILED = cast(HRESULT)0x8001012EL } + +enum : HRESULT { CO_E_NOMATCHINGSIDFOUND = cast(HRESULT)0x8001012FL } + +enum : HRESULT { CO_E_LOOKUPACCSIDFAILED = cast(HRESULT)0x80010130L } + +enum : HRESULT { CO_E_NOMATCHINGNAMEFOUND = cast(HRESULT)0x80010131L } + +enum : HRESULT { CO_E_LOOKUPACCNAMEFAILED = cast(HRESULT)0x80010132L } + +enum : HRESULT { CO_E_SETSERLHNDLFAILED = cast(HRESULT)0x80010133L } + +enum : HRESULT { CO_E_FAILEDTOGETWINDIR = cast(HRESULT)0x80010134L } + +enum : HRESULT { CO_E_PATHTOOLONG = cast(HRESULT)0x80010135L } + +enum : HRESULT { CO_E_FAILEDTOGENUUID = cast(HRESULT)0x80010136L } + +enum : HRESULT { CO_E_FAILEDTOCREATEFILE = cast(HRESULT)0x80010137L } + +enum : HRESULT { CO_E_FAILEDTOCLOSEHANDLE = cast(HRESULT)0x80010138L } + +enum : HRESULT { CO_E_EXCEEDSYSACLLIMIT = cast(HRESULT)0x80010139L } + +enum : HRESULT { CO_E_ACESINWRONGORDER = cast(HRESULT)0x8001013AL } + +enum : HRESULT { CO_E_INCOMPATIBLESTREAMVERSION = cast(HRESULT)0x8001013BL } + +enum : HRESULT { CO_E_FAILEDTOOPENPROCESSTOKEN = cast(HRESULT)0x8001013CL } + +enum : HRESULT { CO_E_DECODEFAILED = cast(HRESULT)0x8001013DL } + +enum : HRESULT { CO_E_ACNOTINITIALIZED = cast(HRESULT)0x8001013FL } + +enum : HRESULT { CO_E_CANCEL_DISABLED = cast(HRESULT)0x80010140L } + +enum : HRESULT { RPC_E_UNEXPECTED = cast(HRESULT)0x8001FFFFL } + +enum : HRESULT { ERROR_AUDITING_DISABLED = cast(HRESULT)0xC0090001L } + +enum : HRESULT { ERROR_ALL_SIDS_FILTERED = cast(HRESULT)0xC0090002L } + +enum : HRESULT { NTE_BAD_UID = cast(HRESULT)0x80090001L } + +enum : HRESULT { NTE_BAD_HASH = cast(HRESULT)0x80090002L } + +enum : HRESULT { NTE_BAD_KEY = cast(HRESULT)0x80090003L } + +enum : HRESULT { NTE_BAD_LEN = cast(HRESULT)0x80090004L } + +enum : HRESULT { NTE_BAD_DATA = cast(HRESULT)0x80090005L } + +enum : HRESULT { NTE_BAD_SIGNATURE = cast(HRESULT)0x80090006L } + +enum : HRESULT { NTE_BAD_VER = cast(HRESULT)0x80090007L } + +enum : HRESULT { NTE_BAD_ALGID = cast(HRESULT)0x80090008L } + +enum : HRESULT { NTE_BAD_FLAGS = cast(HRESULT)0x80090009L } + +enum : HRESULT { NTE_BAD_TYPE = cast(HRESULT)0x8009000AL } + +enum : HRESULT { NTE_BAD_KEY_STATE = cast(HRESULT)0x8009000BL } + +enum : HRESULT { NTE_BAD_HASH_STATE = cast(HRESULT)0x8009000CL } + +enum : HRESULT { NTE_NO_KEY = cast(HRESULT)0x8009000DL } + +enum : HRESULT { NTE_NO_MEMORY = cast(HRESULT)0x8009000EL } + +enum : HRESULT { NTE_EXISTS = cast(HRESULT)0x8009000FL } + +enum : HRESULT { NTE_PERM = cast(HRESULT)0x80090010L } + +enum : HRESULT { NTE_NOT_FOUND = cast(HRESULT)0x80090011L } + +enum : HRESULT { NTE_DOUBLE_ENCRYPT = cast(HRESULT)0x80090012L } + +enum : HRESULT { NTE_BAD_PROVIDER = cast(HRESULT)0x80090013L } + +enum : HRESULT { NTE_BAD_PROV_TYPE = cast(HRESULT)0x80090014L } + +enum : HRESULT { NTE_BAD_PUBLIC_KEY = cast(HRESULT)0x80090015L } + +enum : HRESULT { NTE_BAD_KEYSET = cast(HRESULT)0x80090016L } + +enum : HRESULT { NTE_PROV_TYPE_NOT_DEF = cast(HRESULT)0x80090017L } + +enum : HRESULT { NTE_PROV_TYPE_ENTRY_BAD = cast(HRESULT)0x80090018L } + +enum : HRESULT { NTE_KEYSET_NOT_DEF = cast(HRESULT)0x80090019L } + +enum : HRESULT { NTE_KEYSET_ENTRY_BAD = cast(HRESULT)0x8009001AL } + +enum : HRESULT { NTE_PROV_TYPE_NO_MATCH = cast(HRESULT)0x8009001BL } + +enum : HRESULT { NTE_SIGNATURE_FILE_BAD = cast(HRESULT)0x8009001CL } + +enum : HRESULT { NTE_PROVIDER_DLL_FAIL = cast(HRESULT)0x8009001DL } + +enum : HRESULT { NTE_PROV_DLL_NOT_FOUND = cast(HRESULT)0x8009001EL } + +enum : HRESULT { NTE_BAD_KEYSET_PARAM = cast(HRESULT)0x8009001FL } + +enum : HRESULT { NTE_FAIL = cast(HRESULT)0x80090020L } + +enum : HRESULT { NTE_SYS_ERR = cast(HRESULT)0x80090021L } + +enum : HRESULT { NTE_SILENT_CONTEXT = cast(HRESULT)0x80090022L } + +enum : HRESULT { NTE_TOKEN_KEYSET_STORAGE_FULL = cast(HRESULT)0x80090023L } + +enum : HRESULT { NTE_TEMPORARY_PROFILE = cast(HRESULT)0x80090024L } + +enum : HRESULT { NTE_FIXEDPARAMETER = cast(HRESULT)0x80090025L } + +enum : HRESULT { SEC_E_INSUFFICIENT_MEMORY = cast(HRESULT)0x80090300L } + +enum : HRESULT { SEC_E_INVALID_HANDLE = cast(HRESULT)0x80090301L } + +enum : HRESULT { SEC_E_UNSUPPORTED_FUNCTION = cast(HRESULT)0x80090302L } + +enum : HRESULT { SEC_E_TARGET_UNKNOWN = cast(HRESULT)0x80090303L } + +enum : HRESULT { SEC_E_INTERNAL_ERROR = cast(HRESULT)0x80090304L } + +enum : HRESULT { SEC_E_SECPKG_NOT_FOUND = cast(HRESULT)0x80090305L } + +enum : HRESULT { SEC_E_NOT_OWNER = cast(HRESULT)0x80090306L } + +enum : HRESULT { SEC_E_CANNOT_INSTALL = cast(HRESULT)0x80090307L } + +enum : HRESULT { SEC_E_INVALID_TOKEN = cast(HRESULT)0x80090308L } + +enum : HRESULT { SEC_E_CANNOT_PACK = cast(HRESULT)0x80090309L } + +enum : HRESULT { SEC_E_QOP_NOT_SUPPORTED = cast(HRESULT)0x8009030AL } + +enum : HRESULT { SEC_E_NO_IMPERSONATION = cast(HRESULT)0x8009030BL } + +enum : HRESULT { SEC_E_LOGON_DENIED = cast(HRESULT)0x8009030CL } + +enum : HRESULT { SEC_E_UNKNOWN_CREDENTIALS = cast(HRESULT)0x8009030DL } + +enum : HRESULT { SEC_E_NO_CREDENTIALS = cast(HRESULT)0x8009030EL } + +enum : HRESULT { SEC_E_MESSAGE_ALTERED = cast(HRESULT)0x8009030FL } + +enum : HRESULT { SEC_E_OUT_OF_SEQUENCE = cast(HRESULT)0x80090310L } + +enum : HRESULT { SEC_E_NO_AUTHENTICATING_AUTHORITY = cast(HRESULT)0x80090311L } + +enum : HRESULT { SEC_I_CONTINUE_NEEDED = cast(HRESULT)0x00090312L } + +enum : HRESULT { SEC_I_COMPLETE_NEEDED = cast(HRESULT)0x00090313L } + +enum : HRESULT { SEC_I_COMPLETE_AND_CONTINUE = cast(HRESULT)0x00090314L } + +enum : HRESULT { SEC_I_LOCAL_LOGON = cast(HRESULT)0x00090315L } + +enum : HRESULT { SEC_E_BAD_PKGID = cast(HRESULT)0x80090316L } + +enum : HRESULT { SEC_E_CONTEXT_EXPIRED = cast(HRESULT)0x80090317L } + +enum : HRESULT { SEC_I_CONTEXT_EXPIRED = cast(HRESULT)0x00090317L } + +enum : HRESULT { SEC_E_INCOMPLETE_MESSAGE = cast(HRESULT)0x80090318L } + +enum : HRESULT { SEC_E_INCOMPLETE_CREDENTIALS = cast(HRESULT)0x80090320L } + +enum : HRESULT { SEC_E_BUFFER_TOO_SMALL = cast(HRESULT)0x80090321L } + +enum : HRESULT { SEC_I_INCOMPLETE_CREDENTIALS = cast(HRESULT)0x00090320L } + +enum : HRESULT { SEC_I_RENEGOTIATE = cast(HRESULT)0x00090321L } + +enum : HRESULT { SEC_E_WRONG_PRINCIPAL = cast(HRESULT)0x80090322L } + +enum : HRESULT { SEC_I_NO_LSA_CONTEXT = cast(HRESULT)0x00090323L } + +enum : HRESULT { SEC_E_TIME_SKEW = cast(HRESULT)0x80090324L } + +enum : HRESULT { SEC_E_UNTRUSTED_ROOT = cast(HRESULT)0x80090325L } + +enum : HRESULT { SEC_E_ILLEGAL_MESSAGE = cast(HRESULT)0x80090326L } + +enum : HRESULT { SEC_E_CERT_UNKNOWN = cast(HRESULT)0x80090327L } + +enum : HRESULT { SEC_E_CERT_EXPIRED = cast(HRESULT)0x80090328L } + +enum : HRESULT { SEC_E_ENCRYPT_FAILURE = cast(HRESULT)0x80090329L } + +enum : HRESULT { SEC_E_DECRYPT_FAILURE = cast(HRESULT)0x80090330L } + +enum : HRESULT { SEC_E_ALGORITHM_MISMATCH = cast(HRESULT)0x80090331L } + +enum : HRESULT { SEC_E_SECURITY_QOS_FAILED = cast(HRESULT)0x80090332L } + +enum : HRESULT { SEC_E_UNFINISHED_CONTEXT_DELETED = cast(HRESULT)0x80090333L } + +enum : HRESULT { SEC_E_NO_TGT_REPLY = cast(HRESULT)0x80090334L } + +enum : HRESULT { SEC_E_NO_IP_ADDRESSES = cast(HRESULT)0x80090335L } + +enum : HRESULT { SEC_E_WRONG_CREDENTIAL_HANDLE = cast(HRESULT)0x80090336L } + +enum : HRESULT { SEC_E_CRYPTO_SYSTEM_INVALID = cast(HRESULT)0x80090337L } + +enum : HRESULT { SEC_E_MAX_REFERRALS_EXCEEDED = cast(HRESULT)0x80090338L } + +enum : HRESULT { SEC_E_MUST_BE_KDC = cast(HRESULT)0x80090339L } + +enum : HRESULT { SEC_E_STRONG_CRYPTO_NOT_SUPPORTED = cast(HRESULT)0x8009033AL } + +enum : HRESULT { SEC_E_TOO_MANY_PRINCIPALS = cast(HRESULT)0x8009033BL } + +enum : HRESULT { SEC_E_NO_PA_DATA = cast(HRESULT)0x8009033CL } + +enum : HRESULT { SEC_E_PKINIT_NAME_MISMATCH = cast(HRESULT)0x8009033DL } + +enum : HRESULT { SEC_E_SMARTCARD_LOGON_REQUIRED = cast(HRESULT)0x8009033EL } + +enum : HRESULT { SEC_E_SHUTDOWN_IN_PROGRESS = cast(HRESULT)0x8009033FL } + +enum : HRESULT { SEC_E_KDC_INVALID_REQUEST = cast(HRESULT)0x80090340L } + +enum : HRESULT { SEC_E_KDC_UNABLE_TO_REFER = cast(HRESULT)0x80090341L } + +enum : HRESULT { SEC_E_KDC_UNKNOWN_ETYPE = cast(HRESULT)0x80090342L } + +enum : HRESULT { SEC_E_UNSUPPORTED_PREAUTH = cast(HRESULT)0x80090343L } + +enum : HRESULT { SEC_E_DELEGATION_REQUIRED = cast(HRESULT)0x80090345L } + +enum : HRESULT { SEC_E_BAD_BINDINGS = cast(HRESULT)0x80090346L } + +enum : HRESULT { SEC_E_MULTIPLE_ACCOUNTS = cast(HRESULT)0x80090347L } + +enum : HRESULT { SEC_E_NO_KERB_KEY = cast(HRESULT)0x80090348L } + +alias SEC_E_INTERNAL_ERROR SEC_E_NO_SPM; +alias SEC_E_UNSUPPORTED_FUNCTION SEC_E_NOT_SUPPORTED; + +enum : HRESULT { CRYPT_E_MSG_ERROR = cast(HRESULT)0x80091001L } + +enum : HRESULT { CRYPT_E_UNKNOWN_ALGO = cast(HRESULT)0x80091002L } + +enum : HRESULT { CRYPT_E_OID_FORMAT = cast(HRESULT)0x80091003L } + +enum : HRESULT { CRYPT_E_INVALID_MSG_TYPE = cast(HRESULT)0x80091004L } + +enum : HRESULT { CRYPT_E_UNEXPECTED_ENCODING = cast(HRESULT)0x80091005L } + +enum : HRESULT { CRYPT_E_AUTH_ATTR_MISSING = cast(HRESULT)0x80091006L } + +enum : HRESULT { CRYPT_E_HASH_VALUE = cast(HRESULT)0x80091007L } + +enum : HRESULT { CRYPT_E_INVALID_INDEX = cast(HRESULT)0x80091008L } + +enum : HRESULT { CRYPT_E_ALREADY_DECRYPTED = cast(HRESULT)0x80091009L } + +enum : HRESULT { CRYPT_E_NOT_DECRYPTED = cast(HRESULT)0x8009100AL } + +enum : HRESULT { CRYPT_E_RECIPIENT_NOT_FOUND = cast(HRESULT)0x8009100BL } + +enum : HRESULT { CRYPT_E_CONTROL_TYPE = cast(HRESULT)0x8009100CL } + +enum : HRESULT { CRYPT_E_ISSUER_SERIALNUMBER = cast(HRESULT)0x8009100DL } + +enum : HRESULT { CRYPT_E_SIGNER_NOT_FOUND = cast(HRESULT)0x8009100EL } + +enum : HRESULT { CRYPT_E_ATTRIBUTES_MISSING = cast(HRESULT)0x8009100FL } + +enum : HRESULT { CRYPT_E_STREAM_MSG_NOT_READY = cast(HRESULT)0x80091010L } + +enum : HRESULT { CRYPT_E_STREAM_INSUFFICIENT_DATA = cast(HRESULT)0x80091011L } + +enum : HRESULT { CRYPT_I_NEW_PROTECTION_REQUIRED = cast(HRESULT)0x00091012L } + +enum : HRESULT { CRYPT_E_BAD_LEN = cast(HRESULT)0x80092001L } + +enum : HRESULT { CRYPT_E_BAD_ENCODE = cast(HRESULT)0x80092002L } + +enum : HRESULT { CRYPT_E_FILE_ERROR = cast(HRESULT)0x80092003L } + +enum : HRESULT { CRYPT_E_NOT_FOUND = cast(HRESULT)0x80092004L } + +enum : HRESULT { CRYPT_E_EXISTS = cast(HRESULT)0x80092005L } + +enum : HRESULT { CRYPT_E_NO_PROVIDER = cast(HRESULT)0x80092006L } + +enum : HRESULT { CRYPT_E_SELF_SIGNED = cast(HRESULT)0x80092007L } + +enum : HRESULT { CRYPT_E_DELETED_PREV = cast(HRESULT)0x80092008L } + +enum : HRESULT { CRYPT_E_NO_MATCH = cast(HRESULT)0x80092009L } + +enum : HRESULT { CRYPT_E_UNEXPECTED_MSG_TYPE = cast(HRESULT)0x8009200AL } + +enum : HRESULT { CRYPT_E_NO_KEY_PROPERTY = cast(HRESULT)0x8009200BL } + +enum : HRESULT { CRYPT_E_NO_DECRYPT_CERT = cast(HRESULT)0x8009200CL } + +enum : HRESULT { CRYPT_E_BAD_MSG = cast(HRESULT)0x8009200DL } + +enum : HRESULT { CRYPT_E_NO_SIGNER = cast(HRESULT)0x8009200EL } + +enum : HRESULT { CRYPT_E_PENDING_CLOSE = cast(HRESULT)0x8009200FL } + +enum : HRESULT { CRYPT_E_REVOKED = cast(HRESULT)0x80092010L } + +enum : HRESULT { CRYPT_E_NO_REVOCATION_DLL = cast(HRESULT)0x80092011L } + +enum : HRESULT { CRYPT_E_NO_REVOCATION_CHECK = cast(HRESULT)0x80092012L } + +enum : HRESULT { CRYPT_E_REVOCATION_OFFLINE = cast(HRESULT)0x80092013L } + +enum : HRESULT { CRYPT_E_NOT_IN_REVOCATION_DATABASE = cast(HRESULT)0x80092014L } + +enum : HRESULT { CRYPT_E_INVALID_NUMERIC_STRING = cast(HRESULT)0x80092020L } + +enum : HRESULT { CRYPT_E_INVALID_PRINTABLE_STRING = cast(HRESULT)0x80092021L } + +enum : HRESULT { CRYPT_E_INVALID_IA5_STRING = cast(HRESULT)0x80092022L } + +enum : HRESULT { CRYPT_E_INVALID_X500_STRING = cast(HRESULT)0x80092023L } + +enum : HRESULT { CRYPT_E_NOT_CHAR_STRING = cast(HRESULT)0x80092024L } + +enum : HRESULT { CRYPT_E_FILERESIZED = cast(HRESULT)0x80092025L } + +enum : HRESULT { CRYPT_E_SECURITY_SETTINGS = cast(HRESULT)0x80092026L } + +enum : HRESULT { CRYPT_E_NO_VERIFY_USAGE_DLL = cast(HRESULT)0x80092027L } + +enum : HRESULT { CRYPT_E_NO_VERIFY_USAGE_CHECK = cast(HRESULT)0x80092028L } + +enum : HRESULT { CRYPT_E_VERIFY_USAGE_OFFLINE = cast(HRESULT)0x80092029L } + +enum : HRESULT { CRYPT_E_NOT_IN_CTL = cast(HRESULT)0x8009202AL } + +enum : HRESULT { CRYPT_E_NO_TRUSTED_SIGNER = cast(HRESULT)0x8009202BL } + +enum : HRESULT { CRYPT_E_MISSING_PUBKEY_PARA = cast(HRESULT)0x8009202CL } + +enum : HRESULT { CRYPT_E_OSS_ERROR = cast(HRESULT)0x80093000L } + +enum : HRESULT { OSS_MORE_BUF = cast(HRESULT)0x80093001L } + +enum : HRESULT { OSS_NEGATIVE_UINTEGER = cast(HRESULT)0x80093002L } + +enum : HRESULT { OSS_PDU_RANGE = cast(HRESULT)0x80093003L } + +enum : HRESULT { OSS_MORE_INPUT = cast(HRESULT)0x80093004L } + +enum : HRESULT { OSS_DATA_ERROR = cast(HRESULT)0x80093005L } + +enum : HRESULT { OSS_BAD_ARG = cast(HRESULT)0x80093006L } + +enum : HRESULT { OSS_BAD_VERSION = cast(HRESULT)0x80093007L } + +enum : HRESULT { OSS_OUT_MEMORY = cast(HRESULT)0x80093008L } + +enum : HRESULT { OSS_PDU_MISMATCH = cast(HRESULT)0x80093009L } + +enum : HRESULT { OSS_LIMITED = cast(HRESULT)0x8009300AL } + +enum : HRESULT { OSS_BAD_PTR = cast(HRESULT)0x8009300BL } + +enum : HRESULT { OSS_BAD_TIME = cast(HRESULT)0x8009300CL } + +enum : HRESULT { OSS_INDEFINITE_NOT_SUPPORTED = cast(HRESULT)0x8009300DL } + +enum : HRESULT { OSS_MEM_ERROR = cast(HRESULT)0x8009300EL } + +enum : HRESULT { OSS_BAD_TABLE = cast(HRESULT)0x8009300FL } + +enum : HRESULT { OSS_TOO_LONG = cast(HRESULT)0x80093010L } + +enum : HRESULT { OSS_CONSTRAINT_VIOLATED = cast(HRESULT)0x80093011L } + +enum : HRESULT { OSS_FATAL_ERROR = cast(HRESULT)0x80093012L } + +enum : HRESULT { OSS_ACCESS_SERIALIZATION_ERROR = cast(HRESULT)0x80093013L } + +enum : HRESULT { OSS_NULL_TBL = cast(HRESULT)0x80093014L } + +enum : HRESULT { OSS_NULL_FCN = cast(HRESULT)0x80093015L } + +enum : HRESULT { OSS_BAD_ENCRULES = cast(HRESULT)0x80093016L } + +enum : HRESULT { OSS_UNAVAIL_ENCRULES = cast(HRESULT)0x80093017L } + +enum : HRESULT { OSS_CANT_OPEN_TRACE_WINDOW = cast(HRESULT)0x80093018L } + +enum : HRESULT { OSS_UNIMPLEMENTED = cast(HRESULT)0x80093019L } + +enum : HRESULT { OSS_OID_DLL_NOT_LINKED = cast(HRESULT)0x8009301AL } + +enum : HRESULT { OSS_CANT_OPEN_TRACE_FILE = cast(HRESULT)0x8009301BL } + +enum : HRESULT { OSS_TRACE_FILE_ALREADY_OPEN = cast(HRESULT)0x8009301CL } + +enum : HRESULT { OSS_TABLE_MISMATCH = cast(HRESULT)0x8009301DL } + +enum : HRESULT { OSS_TYPE_NOT_SUPPORTED = cast(HRESULT)0x8009301EL } + +enum : HRESULT { OSS_REAL_DLL_NOT_LINKED = cast(HRESULT)0x8009301FL } + +enum : HRESULT { OSS_REAL_CODE_NOT_LINKED = cast(HRESULT)0x80093020L } + +enum : HRESULT { OSS_OUT_OF_RANGE = cast(HRESULT)0x80093021L } + +enum : HRESULT { OSS_COPIER_DLL_NOT_LINKED = cast(HRESULT)0x80093022L } + +enum : HRESULT { OSS_CONSTRAINT_DLL_NOT_LINKED = cast(HRESULT)0x80093023L } + +enum : HRESULT { OSS_COMPARATOR_DLL_NOT_LINKED = cast(HRESULT)0x80093024L } + +enum : HRESULT { OSS_COMPARATOR_CODE_NOT_LINKED = cast(HRESULT)0x80093025L } + +enum : HRESULT { OSS_MEM_MGR_DLL_NOT_LINKED = cast(HRESULT)0x80093026L } + +enum : HRESULT { OSS_PDV_DLL_NOT_LINKED = cast(HRESULT)0x80093027L } + +enum : HRESULT { OSS_PDV_CODE_NOT_LINKED = cast(HRESULT)0x80093028L } + +enum : HRESULT { OSS_API_DLL_NOT_LINKED = cast(HRESULT)0x80093029L } + +enum : HRESULT { OSS_BERDER_DLL_NOT_LINKED = cast(HRESULT)0x8009302AL } + +enum : HRESULT { OSS_PER_DLL_NOT_LINKED = cast(HRESULT)0x8009302BL } + +enum : HRESULT { OSS_OPEN_TYPE_ERROR = cast(HRESULT)0x8009302CL } + +enum : HRESULT { OSS_MUTEX_NOT_CREATED = cast(HRESULT)0x8009302DL } + +enum : HRESULT { OSS_CANT_CLOSE_TRACE_FILE = cast(HRESULT)0x8009302EL } + +enum : HRESULT { CRYPT_E_ASN1_ERROR = cast(HRESULT)0x80093100L } + +enum : HRESULT { CRYPT_E_ASN1_INTERNAL = cast(HRESULT)0x80093101L } + +enum : HRESULT { CRYPT_E_ASN1_EOD = cast(HRESULT)0x80093102L } + +enum : HRESULT { CRYPT_E_ASN1_CORRUPT = cast(HRESULT)0x80093103L } + +enum : HRESULT { CRYPT_E_ASN1_LARGE = cast(HRESULT)0x80093104L } + +enum : HRESULT { CRYPT_E_ASN1_CONSTRAINT = cast(HRESULT)0x80093105L } + +enum : HRESULT { CRYPT_E_ASN1_MEMORY = cast(HRESULT)0x80093106L } + +enum : HRESULT { CRYPT_E_ASN1_OVERFLOW = cast(HRESULT)0x80093107L } + +enum : HRESULT { CRYPT_E_ASN1_BADPDU = cast(HRESULT)0x80093108L } + +enum : HRESULT { CRYPT_E_ASN1_BADARGS = cast(HRESULT)0x80093109L } + +enum : HRESULT { CRYPT_E_ASN1_BADREAL = cast(HRESULT)0x8009310AL } + +enum : HRESULT { CRYPT_E_ASN1_BADTAG = cast(HRESULT)0x8009310BL } + +enum : HRESULT { CRYPT_E_ASN1_CHOICE = cast(HRESULT)0x8009310CL } + +enum : HRESULT { CRYPT_E_ASN1_RULE = cast(HRESULT)0x8009310DL } + +enum : HRESULT { CRYPT_E_ASN1_UTF8 = cast(HRESULT)0x8009310EL } + +enum : HRESULT { CRYPT_E_ASN1_PDU_TYPE = cast(HRESULT)0x80093133L } + +enum : HRESULT { CRYPT_E_ASN1_NYI = cast(HRESULT)0x80093134L } + +enum : HRESULT { CRYPT_E_ASN1_EXTENDED = cast(HRESULT)0x80093201L } + +enum : HRESULT { CRYPT_E_ASN1_NOEOD = cast(HRESULT)0x80093202L } + +enum : HRESULT { CERTSRV_E_BAD_REQUESTSUBJECT = cast(HRESULT)0x80094001L } + +enum : HRESULT { CERTSRV_E_NO_REQUEST = cast(HRESULT)0x80094002L } + +enum : HRESULT { CERTSRV_E_BAD_REQUESTSTATUS = cast(HRESULT)0x80094003L } + +enum : HRESULT { CERTSRV_E_PROPERTY_EMPTY = cast(HRESULT)0x80094004L } + +enum : HRESULT { CERTSRV_E_INVALID_CA_CERTIFICATE = cast(HRESULT)0x80094005L } + +enum : HRESULT { CERTSRV_E_SERVER_SUSPENDED = cast(HRESULT)0x80094006L } + +enum : HRESULT { CERTSRV_E_ENCODING_LENGTH = cast(HRESULT)0x80094007L } + +enum : HRESULT { CERTSRV_E_ROLECONFLICT = cast(HRESULT)0x80094008L } + +enum : HRESULT { CERTSRV_E_RESTRICTEDOFFICER = cast(HRESULT)0x80094009L } + +enum : HRESULT { CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED = cast(HRESULT)0x8009400AL } + +enum : HRESULT { CERTSRV_E_NO_VALID_KRA = cast(HRESULT)0x8009400BL } + +enum : HRESULT { CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL = cast(HRESULT)0x8009400CL } + +enum : HRESULT { CERTSRV_E_NO_CAADMIN_DEFINED = cast(HRESULT)0x8009400DL } + +enum : HRESULT { CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE = cast(HRESULT)0x8009400EL } + +enum : HRESULT { CERTSRV_E_NO_DB_SESSIONS = cast(HRESULT)0x8009400FL } + +enum : HRESULT { CERTSRV_E_ALIGNMENT_FAULT = cast(HRESULT)0x80094010L } + +enum : HRESULT { CERTSRV_E_ENROLL_DENIED = cast(HRESULT)0x80094011L } + +enum : HRESULT { CERTSRV_E_TEMPLATE_DENIED = cast(HRESULT)0x80094012L } + +enum : HRESULT { CERTSRV_E_UNSUPPORTED_CERT_TYPE = cast(HRESULT)0x80094800L } + +enum : HRESULT { CERTSRV_E_NO_CERT_TYPE = cast(HRESULT)0x80094801L } + +enum : HRESULT { CERTSRV_E_TEMPLATE_CONFLICT = cast(HRESULT)0x80094802L } + +enum : HRESULT { CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED = cast(HRESULT)0x80094803L } + +enum : HRESULT { CERTSRV_E_ARCHIVED_KEY_REQUIRED = cast(HRESULT)0x80094804L } + +enum : HRESULT { CERTSRV_E_SMIME_REQUIRED = cast(HRESULT)0x80094805L } + +enum : HRESULT { CERTSRV_E_BAD_RENEWAL_SUBJECT = cast(HRESULT)0x80094806L } + +enum : HRESULT { CERTSRV_E_BAD_TEMPLATE_VERSION = cast(HRESULT)0x80094807L } + +enum : HRESULT { CERTSRV_E_TEMPLATE_POLICY_REQUIRED = cast(HRESULT)0x80094808L } + +enum : HRESULT { CERTSRV_E_SIGNATURE_POLICY_REQUIRED = cast(HRESULT)0x80094809L } + +enum : HRESULT { CERTSRV_E_SIGNATURE_COUNT = cast(HRESULT)0x8009480AL } + +enum : HRESULT { CERTSRV_E_SIGNATURE_REJECTED = cast(HRESULT)0x8009480BL } + +enum : HRESULT { CERTSRV_E_ISSUANCE_POLICY_REQUIRED = cast(HRESULT)0x8009480CL } + +enum : HRESULT { CERTSRV_E_SUBJECT_UPN_REQUIRED = cast(HRESULT)0x8009480DL } + +enum : HRESULT { CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED = cast(HRESULT)0x8009480EL } + +enum : HRESULT { CERTSRV_E_SUBJECT_DNS_REQUIRED = cast(HRESULT)0x8009480FL } + +enum : HRESULT { CERTSRV_E_ARCHIVED_KEY_UNEXPECTED = cast(HRESULT)0x80094810L } + +enum : HRESULT { CERTSRV_E_KEY_LENGTH = cast(HRESULT)0x80094811L } + +enum : HRESULT { XENROLL_E_KEY_NOT_EXPORTABLE = cast(HRESULT)0x80095000L } + +enum : HRESULT { XENROLL_E_CANNOT_ADD_ROOT_CERT = cast(HRESULT)0x80095001L } + +enum : HRESULT { XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND = cast(HRESULT)0x80095002L } + +enum : HRESULT { XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH = cast(HRESULT)0x80095003L } + +enum : HRESULT { XENROLL_E_RESPONSE_KA_HASH_MISMATCH = cast(HRESULT)0x80095004L } + +enum : HRESULT { XENROLL_E_KEYSPEC_SMIME_MISMATCH = cast(HRESULT)0x80095005L } + +enum : HRESULT { TRUST_E_SYSTEM_ERROR = cast(HRESULT)0x80096001L } + +enum : HRESULT { TRUST_E_NO_SIGNER_CERT = cast(HRESULT)0x80096002L } + +enum : HRESULT { TRUST_E_COUNTER_SIGNER = cast(HRESULT)0x80096003L } + +enum : HRESULT { TRUST_E_CERT_SIGNATURE = cast(HRESULT)0x80096004L } + +enum : HRESULT { TRUST_E_TIME_STAMP = cast(HRESULT)0x80096005L } + +enum : HRESULT { TRUST_E_BAD_DIGEST = cast(HRESULT)0x80096010L } + +enum : HRESULT { TRUST_E_BASIC_CONSTRAINTS = cast(HRESULT)0x80096019L } + +enum : HRESULT { TRUST_E_FINANCIAL_CRITERIA = cast(HRESULT)0x8009601EL } + +enum : HRESULT { MSSIPOTF_E_OUTOFMEMRANGE = cast(HRESULT)0x80097001L } + +enum : HRESULT { MSSIPOTF_E_CANTGETOBJECT = cast(HRESULT)0x80097002L } + +enum : HRESULT { MSSIPOTF_E_NOHEADTABLE = cast(HRESULT)0x80097003L } + +enum : HRESULT { MSSIPOTF_E_BAD_MAGICNUMBER = cast(HRESULT)0x80097004L } + +enum : HRESULT { MSSIPOTF_E_BAD_OFFSET_TABLE = cast(HRESULT)0x80097005L } + +enum : HRESULT { MSSIPOTF_E_TABLE_TAGORDER = cast(HRESULT)0x80097006L } + +enum : HRESULT { MSSIPOTF_E_TABLE_LONGWORD = cast(HRESULT)0x80097007L } + +enum : HRESULT { MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT = cast(HRESULT)0x80097008L } + +enum : HRESULT { MSSIPOTF_E_TABLES_OVERLAP = cast(HRESULT)0x80097009L } + +enum : HRESULT { MSSIPOTF_E_TABLE_PADBYTES = cast(HRESULT)0x8009700AL } + +enum : HRESULT { MSSIPOTF_E_FILETOOSMALL = cast(HRESULT)0x8009700BL } + +enum : HRESULT { MSSIPOTF_E_TABLE_CHECKSUM = cast(HRESULT)0x8009700CL } + +enum : HRESULT { MSSIPOTF_E_FILE_CHECKSUM = cast(HRESULT)0x8009700DL } + +enum : HRESULT { MSSIPOTF_E_FAILED_POLICY = cast(HRESULT)0x80097010L } + +enum : HRESULT { MSSIPOTF_E_FAILED_HINTS_CHECK = cast(HRESULT)0x80097011L } + +enum : HRESULT { MSSIPOTF_E_NOT_OPENTYPE = cast(HRESULT)0x80097012L } + +enum : HRESULT { MSSIPOTF_E_FILE = cast(HRESULT)0x80097013L } + +enum : HRESULT { MSSIPOTF_E_CRYPT = cast(HRESULT)0x80097014L } + +enum : HRESULT { MSSIPOTF_E_BADVERSION = cast(HRESULT)0x80097015L } + +enum : HRESULT { MSSIPOTF_E_DSIG_STRUCTURE = cast(HRESULT)0x80097016L } + +enum : HRESULT { MSSIPOTF_E_PCONST_CHECK = cast(HRESULT)0x80097017L } + +enum : HRESULT { MSSIPOTF_E_STRUCTURE = cast(HRESULT)0x80097018L } + +enum : uint { NTE_OP_OK = 0 } + +enum : HRESULT { TRUST_E_PROVIDER_UNKNOWN = cast(HRESULT)0x800B0001L } + +enum : HRESULT { TRUST_E_ACTION_UNKNOWN = cast(HRESULT)0x800B0002L } + +enum : HRESULT { TRUST_E_SUBJECT_FORM_UNKNOWN = cast(HRESULT)0x800B0003L } + +enum : HRESULT { TRUST_E_SUBJECT_NOT_TRUSTED = cast(HRESULT)0x800B0004L } + +enum : HRESULT { DIGSIG_E_ENCODE = cast(HRESULT)0x800B0005L } + +enum : HRESULT { DIGSIG_E_DECODE = cast(HRESULT)0x800B0006L } + +enum : HRESULT { DIGSIG_E_EXTENSIBILITY = cast(HRESULT)0x800B0007L } + +enum : HRESULT { DIGSIG_E_CRYPTO = cast(HRESULT)0x800B0008L } + +enum : HRESULT { PERSIST_E_SIZEDEFINITE = cast(HRESULT)0x800B0009L } + +enum : HRESULT { PERSIST_E_SIZEINDEFINITE = cast(HRESULT)0x800B000AL } + +enum : HRESULT { PERSIST_E_NOTSELFSIZING = cast(HRESULT)0x800B000BL } + +enum : HRESULT { TRUST_E_NOSIGNATURE = cast(HRESULT)0x800B0100L } + +enum : HRESULT { CERT_E_EXPIRED = cast(HRESULT)0x800B0101L } + +enum : HRESULT { CERT_E_VALIDITYPERIODNESTING = cast(HRESULT)0x800B0102L } + +enum : HRESULT { CERT_E_ROLE = cast(HRESULT)0x800B0103L } + +enum : HRESULT { CERT_E_PATHLENCONST = cast(HRESULT)0x800B0104L } + +enum : HRESULT { CERT_E_CRITICAL = cast(HRESULT)0x800B0105L } + +enum : HRESULT { CERT_E_PURPOSE = cast(HRESULT)0x800B0106L } + +enum : HRESULT { CERT_E_ISSUERCHAINING = cast(HRESULT)0x800B0107L } + +enum : HRESULT { CERT_E_MALFORMED = cast(HRESULT)0x800B0108L } + +enum : HRESULT { CERT_E_UNTRUSTEDROOT = cast(HRESULT)0x800B0109L } + +enum : HRESULT { CERT_E_CHAINING = cast(HRESULT)0x800B010AL } + +enum : HRESULT { TRUST_E_FAIL = cast(HRESULT)0x800B010BL } + +enum : HRESULT { CERT_E_REVOKED = cast(HRESULT)0x800B010CL } + +enum : HRESULT { CERT_E_UNTRUSTEDTESTROOT = cast(HRESULT)0x800B010DL } + +enum : HRESULT { CERT_E_REVOCATION_FAILURE = cast(HRESULT)0x800B010EL } + +enum : HRESULT { CERT_E_CN_NO_MATCH = cast(HRESULT)0x800B010FL } + +enum : HRESULT { CERT_E_WRONG_USAGE = cast(HRESULT)0x800B0110L } + +enum : HRESULT { TRUST_E_EXPLICIT_DISTRUST = cast(HRESULT)0x800B0111L } + +enum : HRESULT { CERT_E_UNTRUSTEDCA = cast(HRESULT)0x800B0112L } + +enum : HRESULT { CERT_E_INVALID_POLICY = cast(HRESULT)0x800B0113L } + +enum : HRESULT { CERT_E_INVALID_NAME = cast(HRESULT)0x800B0114L } + +// #define HRESULT_FROM_SETUPAPI(x) ((((x) & (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR)) == (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR)) ? ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_SETUPAPI << 16) | 0x80000000)) : HRESULT_FROM_WIN32(x)) + +enum : HRESULT { SPAPI_E_EXPECTED_SECTION_NAME = cast(HRESULT)0x800F0000L } + +enum : HRESULT { SPAPI_E_BAD_SECTION_NAME_LINE = cast(HRESULT)0x800F0001L } + +enum : HRESULT { SPAPI_E_SECTION_NAME_TOO_LONG = cast(HRESULT)0x800F0002L } + +enum : HRESULT { SPAPI_E_GENERAL_SYNTAX = cast(HRESULT)0x800F0003L } + +enum : HRESULT { SPAPI_E_WRONG_INF_STYLE = cast(HRESULT)0x800F0100L } + +enum : HRESULT { SPAPI_E_SECTION_NOT_FOUND = cast(HRESULT)0x800F0101L } + +enum : HRESULT { SPAPI_E_LINE_NOT_FOUND = cast(HRESULT)0x800F0102L } + +enum : HRESULT { SPAPI_E_NO_BACKUP = cast(HRESULT)0x800F0103L } + +enum : HRESULT { SPAPI_E_NO_ASSOCIATED_CLASS = cast(HRESULT)0x800F0200L } + +enum : HRESULT { SPAPI_E_CLASS_MISMATCH = cast(HRESULT)0x800F0201L } + +enum : HRESULT { SPAPI_E_DUPLICATE_FOUND = cast(HRESULT)0x800F0202L } + +enum : HRESULT { SPAPI_E_NO_DRIVER_SELECTED = cast(HRESULT)0x800F0203L } + +enum : HRESULT { SPAPI_E_KEY_DOES_NOT_EXIST = cast(HRESULT)0x800F0204L } + +enum : HRESULT { SPAPI_E_INVALID_DEVINST_NAME = cast(HRESULT)0x800F0205L } + +enum : HRESULT { SPAPI_E_INVALID_CLASS = cast(HRESULT)0x800F0206L } + +enum : HRESULT { SPAPI_E_DEVINST_ALREADY_EXISTS = cast(HRESULT)0x800F0207L } + +enum : HRESULT { SPAPI_E_DEVINFO_NOT_REGISTERED = cast(HRESULT)0x800F0208L } + +enum : HRESULT { SPAPI_E_INVALID_REG_PROPERTY = cast(HRESULT)0x800F0209L } + +enum : HRESULT { SPAPI_E_NO_INF = cast(HRESULT)0x800F020AL } + +enum : HRESULT { SPAPI_E_NO_SUCH_DEVINST = cast(HRESULT)0x800F020BL } + +enum : HRESULT { SPAPI_E_CANT_LOAD_CLASS_ICON = cast(HRESULT)0x800F020CL } + +enum : HRESULT { SPAPI_E_INVALID_CLASS_INSTALLER = cast(HRESULT)0x800F020DL } + +enum : HRESULT { SPAPI_E_DI_DO_DEFAULT = cast(HRESULT)0x800F020EL } + +enum : HRESULT { SPAPI_E_DI_NOFILECOPY = cast(HRESULT)0x800F020FL } + +enum : HRESULT { SPAPI_E_INVALID_HWPROFILE = cast(HRESULT)0x800F0210L } + +enum : HRESULT { SPAPI_E_NO_DEVICE_SELECTED = cast(HRESULT)0x800F0211L } + +enum : HRESULT { SPAPI_E_DEVINFO_LIST_LOCKED = cast(HRESULT)0x800F0212L } + +enum : HRESULT { SPAPI_E_DEVINFO_DATA_LOCKED = cast(HRESULT)0x800F0213L } + +enum : HRESULT { SPAPI_E_DI_BAD_PATH = cast(HRESULT)0x800F0214L } + +enum : HRESULT { SPAPI_E_NO_CLASSINSTALL_PARAMS = cast(HRESULT)0x800F0215L } + +enum : HRESULT { SPAPI_E_FILEQUEUE_LOCKED = cast(HRESULT)0x800F0216L } + +enum : HRESULT { SPAPI_E_BAD_SERVICE_INSTALLSECT = cast(HRESULT)0x800F0217L } + +enum : HRESULT { SPAPI_E_NO_CLASS_DRIVER_LIST = cast(HRESULT)0x800F0218L } + +enum : HRESULT { SPAPI_E_NO_ASSOCIATED_SERVICE = cast(HRESULT)0x800F0219L } + +enum : HRESULT { SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE = cast(HRESULT)0x800F021AL } + +enum : HRESULT { SPAPI_E_DEVICE_INTERFACE_ACTIVE = cast(HRESULT)0x800F021BL } + +enum : HRESULT { SPAPI_E_DEVICE_INTERFACE_REMOVED = cast(HRESULT)0x800F021CL } + +enum : HRESULT { SPAPI_E_BAD_INTERFACE_INSTALLSECT = cast(HRESULT)0x800F021DL } + +enum : HRESULT { SPAPI_E_NO_SUCH_INTERFACE_CLASS = cast(HRESULT)0x800F021EL } + +enum : HRESULT { SPAPI_E_INVALID_REFERENCE_STRING = cast(HRESULT)0x800F021FL } + +enum : HRESULT { SPAPI_E_INVALID_MACHINENAME = cast(HRESULT)0x800F0220L } + +enum : HRESULT { SPAPI_E_REMOTE_COMM_FAILURE = cast(HRESULT)0x800F0221L } + +enum : HRESULT { SPAPI_E_MACHINE_UNAVAILABLE = cast(HRESULT)0x800F0222L } + +enum : HRESULT { SPAPI_E_NO_CONFIGMGR_SERVICES = cast(HRESULT)0x800F0223L } + +enum : HRESULT { SPAPI_E_INVALID_PROPPAGE_PROVIDER = cast(HRESULT)0x800F0224L } + +enum : HRESULT { SPAPI_E_NO_SUCH_DEVICE_INTERFACE = cast(HRESULT)0x800F0225L } + +enum : HRESULT { SPAPI_E_DI_POSTPROCESSING_REQUIRED = cast(HRESULT)0x800F0226L } + +enum : HRESULT { SPAPI_E_INVALID_COINSTALLER = cast(HRESULT)0x800F0227L } + +enum : HRESULT { SPAPI_E_NO_COMPAT_DRIVERS = cast(HRESULT)0x800F0228L } + +enum : HRESULT { SPAPI_E_NO_DEVICE_ICON = cast(HRESULT)0x800F0229L } + +enum : HRESULT { SPAPI_E_INVALID_INF_LOGCONFIG = cast(HRESULT)0x800F022AL } + +enum : HRESULT { SPAPI_E_DI_DONT_INSTALL = cast(HRESULT)0x800F022BL } + +enum : HRESULT { SPAPI_E_INVALID_FILTER_DRIVER = cast(HRESULT)0x800F022CL } + +enum : HRESULT { SPAPI_E_NON_WINDOWS_NT_DRIVER = cast(HRESULT)0x800F022DL } + +enum : HRESULT { SPAPI_E_NON_WINDOWS_DRIVER = cast(HRESULT)0x800F022EL } + +enum : HRESULT { SPAPI_E_NO_CATALOG_FOR_OEM_INF = cast(HRESULT)0x800F022FL } + +enum : HRESULT { SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE = cast(HRESULT)0x800F0230L } + +enum : HRESULT { SPAPI_E_NOT_DISABLEABLE = cast(HRESULT)0x800F0231L } + +enum : HRESULT { SPAPI_E_CANT_REMOVE_DEVINST = cast(HRESULT)0x800F0232L } + +enum : HRESULT { SPAPI_E_INVALID_TARGET = cast(HRESULT)0x800F0233L } + +enum : HRESULT { SPAPI_E_DRIVER_NONNATIVE = cast(HRESULT)0x800F0234L } + +enum : HRESULT { SPAPI_E_IN_WOW64 = cast(HRESULT)0x800F0235L } + +enum : HRESULT { SPAPI_E_SET_SYSTEM_RESTORE_POINT = cast(HRESULT)0x800F0236L } + +enum : HRESULT { SPAPI_E_INCORRECTLY_COPIED_INF = cast(HRESULT)0x800F0237L } + +enum : HRESULT { SPAPI_E_SCE_DISABLED = cast(HRESULT)0x800F0238L } + +enum : HRESULT { SPAPI_E_ERROR_NOT_INSTALLED = cast(HRESULT)0x800F1000L } + +alias NO_ERROR SCARD_S_SUCCESS; + +enum : HRESULT { SCARD_F_INTERNAL_ERROR = cast(HRESULT)0x80100001L } + +enum : HRESULT { SCARD_E_CANCELLED = cast(HRESULT)0x80100002L } + +enum : HRESULT { SCARD_E_INVALID_HANDLE = cast(HRESULT)0x80100003L } + +enum : HRESULT { SCARD_E_INVALID_PARAMETER = cast(HRESULT)0x80100004L } + +enum : HRESULT { SCARD_E_INVALID_TARGET = cast(HRESULT)0x80100005L } + +enum : HRESULT { SCARD_E_NO_MEMORY = cast(HRESULT)0x80100006L } + +enum : HRESULT { SCARD_F_WAITED_TOO_LONG = cast(HRESULT)0x80100007L } + +enum : HRESULT { SCARD_E_INSUFFICIENT_BUFFER = cast(HRESULT)0x80100008L } + +enum : HRESULT { SCARD_E_UNKNOWN_READER = cast(HRESULT)0x80100009L } + +enum : HRESULT { SCARD_E_TIMEOUT = cast(HRESULT)0x8010000AL } + +enum : HRESULT { SCARD_E_SHARING_VIOLATION = cast(HRESULT)0x8010000BL } + +enum : HRESULT { SCARD_E_NO_SMARTCARD = cast(HRESULT)0x8010000CL } + +enum : HRESULT { SCARD_E_UNKNOWN_CARD = cast(HRESULT)0x8010000DL } + +enum : HRESULT { SCARD_E_CANT_DISPOSE = cast(HRESULT)0x8010000EL } + +enum : HRESULT { SCARD_E_PROTO_MISMATCH = cast(HRESULT)0x8010000FL } + +enum : HRESULT { SCARD_E_NOT_READY = cast(HRESULT)0x80100010L } + +enum : HRESULT { SCARD_E_INVALID_VALUE = cast(HRESULT)0x80100011L } + +enum : HRESULT { SCARD_E_SYSTEM_CANCELLED = cast(HRESULT)0x80100012L } + +enum : HRESULT { SCARD_F_COMM_ERROR = cast(HRESULT)0x80100013L } + +enum : HRESULT { SCARD_F_UNKNOWN_ERROR = cast(HRESULT)0x80100014L } + +enum : HRESULT { SCARD_E_INVALID_ATR = cast(HRESULT)0x80100015L } + +enum : HRESULT { SCARD_E_NOT_TRANSACTED = cast(HRESULT)0x80100016L } + +enum : HRESULT { SCARD_E_READER_UNAVAILABLE = cast(HRESULT)0x80100017L } + +enum : HRESULT { SCARD_P_SHUTDOWN = cast(HRESULT)0x80100018L } + +enum : HRESULT { SCARD_E_PCI_TOO_SMALL = cast(HRESULT)0x80100019L } + +enum : HRESULT { SCARD_E_READER_UNSUPPORTED = cast(HRESULT)0x8010001AL } + +enum : HRESULT { SCARD_E_DUPLICATE_READER = cast(HRESULT)0x8010001BL } + +enum : HRESULT { SCARD_E_CARD_UNSUPPORTED = cast(HRESULT)0x8010001CL } + +enum : HRESULT { SCARD_E_NO_SERVICE = cast(HRESULT)0x8010001DL } + +enum : HRESULT { SCARD_E_SERVICE_STOPPED = cast(HRESULT)0x8010001EL } + +enum : HRESULT { SCARD_E_UNEXPECTED = cast(HRESULT)0x8010001FL } + +enum : HRESULT { SCARD_E_ICC_INSTALLATION = cast(HRESULT)0x80100020L } + +enum : HRESULT { SCARD_E_ICC_CREATEORDER = cast(HRESULT)0x80100021L } + +enum : HRESULT { SCARD_E_UNSUPPORTED_FEATURE = cast(HRESULT)0x80100022L } + +enum : HRESULT { SCARD_E_DIR_NOT_FOUND = cast(HRESULT)0x80100023L } + +enum : HRESULT { SCARD_E_FILE_NOT_FOUND = cast(HRESULT)0x80100024L } + +enum : HRESULT { SCARD_E_NO_DIR = cast(HRESULT)0x80100025L } + +enum : HRESULT { SCARD_E_NO_FILE = cast(HRESULT)0x80100026L } + +enum : HRESULT { SCARD_E_NO_ACCESS = cast(HRESULT)0x80100027L } + +enum : HRESULT { SCARD_E_WRITE_TOO_MANY = cast(HRESULT)0x80100028L } + +enum : HRESULT { SCARD_E_BAD_SEEK = cast(HRESULT)0x80100029L } + +enum : HRESULT { SCARD_E_INVALID_CHV = cast(HRESULT)0x8010002AL } + +enum : HRESULT { SCARD_E_UNKNOWN_RES_MNG = cast(HRESULT)0x8010002BL } + +enum : HRESULT { SCARD_E_NO_SUCH_CERTIFICATE = cast(HRESULT)0x8010002CL } + +enum : HRESULT { SCARD_E_CERTIFICATE_UNAVAILABLE = cast(HRESULT)0x8010002DL } + +enum : HRESULT { SCARD_E_NO_READERS_AVAILABLE = cast(HRESULT)0x8010002EL } + +enum : HRESULT { SCARD_E_COMM_DATA_LOST = cast(HRESULT)0x8010002FL } + +enum : HRESULT { SCARD_E_NO_KEY_CONTAINER = cast(HRESULT)0x80100030L } + +enum : HRESULT { SCARD_W_UNSUPPORTED_CARD = cast(HRESULT)0x80100065L } + +enum : HRESULT { SCARD_W_UNRESPONSIVE_CARD = cast(HRESULT)0x80100066L } + +enum : HRESULT { SCARD_W_UNPOWERED_CARD = cast(HRESULT)0x80100067L } + +enum : HRESULT { SCARD_W_RESET_CARD = cast(HRESULT)0x80100068L } + +enum : HRESULT { SCARD_W_REMOVED_CARD = cast(HRESULT)0x80100069L } + +enum : HRESULT { SCARD_W_SECURITY_VIOLATION = cast(HRESULT)0x8010006AL } + +enum : HRESULT { SCARD_W_WRONG_CHV = cast(HRESULT)0x8010006BL } + +enum : HRESULT { SCARD_W_CHV_BLOCKED = cast(HRESULT)0x8010006CL } + +enum : HRESULT { SCARD_W_EOF = cast(HRESULT)0x8010006DL } + +enum : HRESULT { SCARD_W_CANCELLED_BY_USER = cast(HRESULT)0x8010006EL } + +enum : HRESULT { SCARD_W_CARD_NOT_AUTHENTICATED = cast(HRESULT)0x8010006FL } + +enum : HRESULT { COMADMIN_E_OBJECTERRORS = cast(HRESULT)0x80110401L } + +enum : HRESULT { COMADMIN_E_OBJECTINVALID = cast(HRESULT)0x80110402L } + +enum : HRESULT { COMADMIN_E_KEYMISSING = cast(HRESULT)0x80110403L } + +enum : HRESULT { COMADMIN_E_ALREADYINSTALLED = cast(HRESULT)0x80110404L } + +enum : HRESULT { COMADMIN_E_APP_FILE_WRITEFAIL = cast(HRESULT)0x80110407L } + +enum : HRESULT { COMADMIN_E_APP_FILE_READFAIL = cast(HRESULT)0x80110408L } + +enum : HRESULT { COMADMIN_E_APP_FILE_VERSION = cast(HRESULT)0x80110409L } + +enum : HRESULT { COMADMIN_E_BADPATH = cast(HRESULT)0x8011040AL } + +enum : HRESULT { COMADMIN_E_APPLICATIONEXISTS = cast(HRESULT)0x8011040BL } + +enum : HRESULT { COMADMIN_E_ROLEEXISTS = cast(HRESULT)0x8011040CL } + +enum : HRESULT { COMADMIN_E_CANTCOPYFILE = cast(HRESULT)0x8011040DL } + +enum : HRESULT { COMADMIN_E_NOUSER = cast(HRESULT)0x8011040FL } + +enum : HRESULT { COMADMIN_E_INVALIDUSERIDS = cast(HRESULT)0x80110410L } + +enum : HRESULT { COMADMIN_E_NOREGISTRYCLSID = cast(HRESULT)0x80110411L } + +enum : HRESULT { COMADMIN_E_BADREGISTRYPROGID = cast(HRESULT)0x80110412L } + +enum : HRESULT { COMADMIN_E_AUTHENTICATIONLEVEL = cast(HRESULT)0x80110413L } + +enum : HRESULT { COMADMIN_E_USERPASSWDNOTVALID = cast(HRESULT)0x80110414L } + +enum : HRESULT { COMADMIN_E_CLSIDORIIDMISMATCH = cast(HRESULT)0x80110418L } + +enum : HRESULT { COMADMIN_E_REMOTEINTERFACE = cast(HRESULT)0x80110419L } + +enum : HRESULT { COMADMIN_E_DLLREGISTERSERVER = cast(HRESULT)0x8011041AL } + +enum : HRESULT { COMADMIN_E_NOSERVERSHARE = cast(HRESULT)0x8011041BL } + +enum : HRESULT { COMADMIN_E_DLLLOADFAILED = cast(HRESULT)0x8011041DL } + +enum : HRESULT { COMADMIN_E_BADREGISTRYLIBID = cast(HRESULT)0x8011041EL } + +enum : HRESULT { COMADMIN_E_APPDIRNOTFOUND = cast(HRESULT)0x8011041FL } + +enum : HRESULT { COMADMIN_E_REGISTRARFAILED = cast(HRESULT)0x80110423L } + +enum : HRESULT { COMADMIN_E_COMPFILE_DOESNOTEXIST = cast(HRESULT)0x80110424L } + +enum : HRESULT { COMADMIN_E_COMPFILE_LOADDLLFAIL = cast(HRESULT)0x80110425L } + +enum : HRESULT { COMADMIN_E_COMPFILE_GETCLASSOBJ = cast(HRESULT)0x80110426L } + +enum : HRESULT { COMADMIN_E_COMPFILE_CLASSNOTAVAIL = cast(HRESULT)0x80110427L } + +enum : HRESULT { COMADMIN_E_COMPFILE_BADTLB = cast(HRESULT)0x80110428L } + +enum : HRESULT { COMADMIN_E_COMPFILE_NOTINSTALLABLE = cast(HRESULT)0x80110429L } + +enum : HRESULT { COMADMIN_E_NOTCHANGEABLE = cast(HRESULT)0x8011042AL } + +enum : HRESULT { COMADMIN_E_NOTDELETEABLE = cast(HRESULT)0x8011042BL } + +enum : HRESULT { COMADMIN_E_SESSION = cast(HRESULT)0x8011042CL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_LOCKED = cast(HRESULT)0x8011042DL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_BAD_DEST = cast(HRESULT)0x8011042EL } + +enum : HRESULT { COMADMIN_E_REGISTERTLB = cast(HRESULT)0x80110430L } + +enum : HRESULT { COMADMIN_E_SYSTEMAPP = cast(HRESULT)0x80110433L } + +enum : HRESULT { COMADMIN_E_COMPFILE_NOREGISTRAR = cast(HRESULT)0x80110434L } + +enum : HRESULT { COMADMIN_E_COREQCOMPINSTALLED = cast(HRESULT)0x80110435L } + +enum : HRESULT { COMADMIN_E_SERVICENOTINSTALLED = cast(HRESULT)0x80110436L } + +enum : HRESULT { COMADMIN_E_PROPERTYSAVEFAILED = cast(HRESULT)0x80110437L } + +enum : HRESULT { COMADMIN_E_OBJECTEXISTS = cast(HRESULT)0x80110438L } + +enum : HRESULT { COMADMIN_E_COMPONENTEXISTS = cast(HRESULT)0x80110439L } + +enum : HRESULT { COMADMIN_E_REGFILE_CORRUPT = cast(HRESULT)0x8011043BL } + +enum : HRESULT { COMADMIN_E_PROPERTY_OVERFLOW = cast(HRESULT)0x8011043CL } + +enum : HRESULT { COMADMIN_E_NOTINREGISTRY = cast(HRESULT)0x8011043EL } + +enum : HRESULT { COMADMIN_E_OBJECTNOTPOOLABLE = cast(HRESULT)0x8011043FL } + +enum : HRESULT { COMADMIN_E_APPLID_MATCHES_CLSID = cast(HRESULT)0x80110446L } + +enum : HRESULT { COMADMIN_E_ROLE_DOES_NOT_EXIST = cast(HRESULT)0x80110447L } + +enum : HRESULT { COMADMIN_E_START_APP_NEEDS_COMPONENTS = cast(HRESULT)0x80110448L } + +enum : HRESULT { COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM = cast(HRESULT)0x80110449L } + +enum : HRESULT { COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY = cast(HRESULT)0x8011044AL } + +enum : HRESULT { COMADMIN_E_CAN_NOT_START_APP = cast(HRESULT)0x8011044BL } + +enum : HRESULT { COMADMIN_E_CAN_NOT_EXPORT_SYS_APP = cast(HRESULT)0x8011044CL } + +enum : HRESULT { COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT = cast(HRESULT)0x8011044DL } + +enum : HRESULT { COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER = cast(HRESULT)0x8011044EL } + +enum : HRESULT { COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE = cast(HRESULT)0x8011044FL } + +enum : HRESULT { COMADMIN_E_BASE_PARTITION_ONLY = cast(HRESULT)0x80110450L } + +enum : HRESULT { COMADMIN_E_START_APP_DISABLED = cast(HRESULT)0x80110451L } + +enum : HRESULT { COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME = cast(HRESULT)0x80110457L } + +enum : HRESULT { COMADMIN_E_CAT_INVALID_PARTITION_NAME = cast(HRESULT)0x80110458L } + +enum : HRESULT { COMADMIN_E_CAT_PARTITION_IN_USE = cast(HRESULT)0x80110459L } + +enum : HRESULT { COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES = cast(HRESULT)0x8011045AL } + +enum : HRESULT { COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED = cast(HRESULT)0x8011045BL } + +enum : HRESULT { COMADMIN_E_AMBIGUOUS_APPLICATION_NAME = cast(HRESULT)0x8011045CL } + +enum : HRESULT { COMADMIN_E_AMBIGUOUS_PARTITION_NAME = cast(HRESULT)0x8011045DL } + +enum : HRESULT { COMADMIN_E_REGDB_NOTINITIALIZED = cast(HRESULT)0x80110472L } + +enum : HRESULT { COMADMIN_E_REGDB_NOTOPEN = cast(HRESULT)0x80110473L } + +enum : HRESULT { COMADMIN_E_REGDB_SYSTEMERR = cast(HRESULT)0x80110474L } + +enum : HRESULT { COMADMIN_E_REGDB_ALREADYRUNNING = cast(HRESULT)0x80110475L } + +enum : HRESULT { COMADMIN_E_MIG_VERSIONNOTSUPPORTED = cast(HRESULT)0x80110480L } + +enum : HRESULT { COMADMIN_E_MIG_SCHEMANOTFOUND = cast(HRESULT)0x80110481L } + +enum : HRESULT { COMADMIN_E_CAT_BITNESSMISMATCH = cast(HRESULT)0x80110482L } + +enum : HRESULT { COMADMIN_E_CAT_UNACCEPTABLEBITNESS = cast(HRESULT)0x80110483L } + +enum : HRESULT { COMADMIN_E_CAT_WRONGAPPBITNESS = cast(HRESULT)0x80110484L } + +enum : HRESULT { COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED = cast(HRESULT)0x80110485L } + +enum : HRESULT { COMADMIN_E_CAT_SERVERFAULT = cast(HRESULT)0x80110486L } + +enum : HRESULT { COMQC_E_APPLICATION_NOT_QUEUED = cast(HRESULT)0x80110600L } + +enum : HRESULT { COMQC_E_NO_QUEUEABLE_INTERFACES = cast(HRESULT)0x80110601L } + +enum : HRESULT { COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE = cast(HRESULT)0x80110602L } + +enum : HRESULT { COMQC_E_NO_IPERSISTSTREAM = cast(HRESULT)0x80110603L } + +enum : HRESULT { COMQC_E_BAD_MESSAGE = cast(HRESULT)0x80110604L } + +enum : HRESULT { COMQC_E_UNAUTHENTICATED = cast(HRESULT)0x80110605L } + +enum : HRESULT { COMQC_E_UNTRUSTED_ENQUEUER = cast(HRESULT)0x80110606L } + +enum : HRESULT { MSDTC_E_DUPLICATE_RESOURCE = cast(HRESULT)0x80110701L } + +enum : HRESULT { COMADMIN_E_OBJECT_PARENT_MISSING = cast(HRESULT)0x80110808L } + +enum : HRESULT { COMADMIN_E_OBJECT_DOES_NOT_EXIST = cast(HRESULT)0x80110809L } + +enum : HRESULT { COMADMIN_E_APP_NOT_RUNNING = cast(HRESULT)0x8011080AL } + +enum : HRESULT { COMADMIN_E_INVALID_PARTITION = cast(HRESULT)0x8011080BL } + +enum : HRESULT { COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE = cast(HRESULT)0x8011080DL } + +enum : HRESULT { COMADMIN_E_USER_IN_SET = cast(HRESULT)0x8011080EL } + +enum : HRESULT { COMADMIN_E_CANTRECYCLELIBRARYAPPS = cast(HRESULT)0x8011080FL } + +enum : HRESULT { COMADMIN_E_CANTRECYCLESERVICEAPPS = cast(HRESULT)0x80110811L } + +enum : HRESULT { COMADMIN_E_PROCESSALREADYRECYCLED = cast(HRESULT)0x80110812L } + +enum : HRESULT { COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED = cast(HRESULT)0x80110813L } + +enum : HRESULT { COMADMIN_E_CANTMAKEINPROCSERVICE = cast(HRESULT)0x80110814L } + +enum : HRESULT { COMADMIN_E_PROGIDINUSEBYCLSID = cast(HRESULT)0x80110815L } + +enum : HRESULT { COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET = cast(HRESULT)0x80110816L } + +enum : HRESULT { COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED = cast(HRESULT)0x80110817L } + +enum : HRESULT { COMADMIN_E_PARTITION_ACCESSDENIED = cast(HRESULT)0x80110818L } + +enum : HRESULT { COMADMIN_E_PARTITION_MSI_ONLY = cast(HRESULT)0x80110819L } + +enum : HRESULT { COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT = cast(HRESULT)0x8011081AL } + +enum : HRESULT { COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS = cast(HRESULT)0x8011081BL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_SOURCE = cast(HRESULT)0x8011081CL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_DEST = cast(HRESULT)0x8011081DL } + +enum : HRESULT { COMADMIN_E_COMP_MOVE_PRIVATE = cast(HRESULT)0x8011081EL } + +enum : HRESULT { COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET = cast(HRESULT)0x8011081FL } + +enum : HRESULT { COMADMIN_E_CANNOT_ALIAS_EVENTCLASS = cast(HRESULT)0x80110820L } + +enum : HRESULT { COMADMIN_E_PRIVATE_ACCESSDENIED = cast(HRESULT)0x80110821L } + +enum : HRESULT { COMADMIN_E_SAFERINVALID = cast(HRESULT)0x80110822L } + +enum : HRESULT { COMADMIN_E_REGISTRY_ACCESSDENIED = cast(HRESULT)0x80110823L } + +enum : HRESULT { COMADMIN_E_CAT_DUPLICATE_PARTITION_SET_NAME = cast(HRESULT)0x80110900L } + +enum : HRESULT { COMADMIN_E_CAT_INVALID_PARTITION_SET_NAME = cast(HRESULT)0x80110901L } + +// #endif//_WINERROR_ ADDED src/win32/wingdi.d Index: src/win32/wingdi.d ================================================================== --- src/win32/wingdi.d +++ src/win32/wingdi.d @@ -0,0 +1,4997 @@ +module win32.wingdi; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.windef; + +// #ifndef _WINGDI_ +// #define _WINGDI_ + +// #ifdef _MAC +// #... +// #endif + +// #if !defined(_GDI32_) +// #define WINGDIAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #if !defined(_SPOOL32_) +// #define WINSPOOLAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef WINVER +// #... +// #endif /* WINVER */ + +// #ifndef NOGDI + +// #ifndef NORASTEROPS + +enum : uint { R2_BLACK = 1 } +enum : uint { R2_NOTMERGEPEN = 2 } +enum : uint { R2_MASKNOTPEN = 3 } +enum : uint { R2_NOTCOPYPEN = 4 } +enum : uint { R2_MASKPENNOT = 5 } +enum : uint { R2_NOT = 6 } +enum : uint { R2_XORPEN = 7 } +enum : uint { R2_NOTMASKPEN = 8 } +enum : uint { R2_MASKPEN = 9 } +enum : uint { R2_NOTXORPEN = 10 } +enum : uint { R2_NOP = 11 } +enum : uint { R2_MERGENOTPEN = 12 } +enum : uint { R2_COPYPEN = 13 } +enum : uint { R2_MERGEPENNOT = 14 } +enum : uint { R2_MERGEPEN = 15 } +enum : uint { R2_WHITE = 16 } +enum : uint { R2_LAST = 16 } + +enum : DWORD { SRCCOPY = 0x00CC0020 } +enum : DWORD { SRCPAINT = 0x00EE0086 } +enum : DWORD { SRCAND = 0x008800C6 } +enum : DWORD { SRCINVERT = 0x00660046 } +enum : DWORD { SRCERASE = 0x00440328 } +enum : DWORD { NOTSRCCOPY = 0x00330008 } +enum : DWORD { NOTSRCERASE = 0x001100A6 } +enum : DWORD { MERGECOPY = 0x00C000CA } +enum : DWORD { MERGEPAINT = 0x00BB0226 } +enum : DWORD { PATCOPY = 0x00F00021 } +enum : DWORD { PATPAINT = 0x00FB0A09 } +enum : DWORD { PATINVERT = 0x005A0049 } +enum : DWORD { DSTINVERT = 0x00550009 } +enum : DWORD { BLACKNESS = 0x00000042 } +enum : DWORD { WHITENESS = 0x00FF0062 } +// #if(WINVER >= 0x0500) + +enum : DWORD { NOMIRRORBITMAP = 0x80000000 } +enum : DWORD { CAPTUREBLT = 0x40000000 } +// #endif /* WINVER >= 0x0500 */ + +DWORD MAKEROP4(DWORD fore, DWORD back){ return ((back << 8) & 0xFF000000) | fore; } + +// #endif /* NORASTEROPS */ + +enum : uint { GDI_ERROR = 0xFFFFFFFF } +const HANDLE HGDI_ERROR = cast(HANDLE)(0xFFFFFFFFL); + +enum : uint { ERROR = 0 } +enum : uint { NULLREGION = 1 } +enum : uint { SIMPLEREGION = 2 } +enum : uint { COMPLEXREGION = 3 } +alias ERROR RGN_ERROR; + +enum : uint { RGN_AND = 1 } +enum : uint { RGN_OR = 2 } +enum : uint { RGN_XOR = 3 } +enum : uint { RGN_DIFF = 4 } +enum : uint { RGN_COPY = 5 } +alias RGN_AND RGN_MIN; +alias RGN_COPY RGN_MAX; + +enum : uint { BLACKONWHITE = 1 } +enum : uint { WHITEONBLACK = 2 } +enum : uint { COLORONCOLOR = 3 } +enum : uint { HALFTONE = 4 } +enum : uint { MAXSTRETCHBLTMODE = 4 } + +// #if(WINVER >= 0x0400) + +alias BLACKONWHITE STRETCH_ANDSCANS; +alias WHITEONBLACK STRETCH_ORSCANS; +alias COLORONCOLOR STRETCH_DELETESCANS; +alias HALFTONE STRETCH_HALFTONE; +// #endif /* WINVER >= 0x0400 */ + +enum : uint { ALTERNATE = 1 } +enum : uint { WINDING = 2 } +enum : uint { POLYFILL_LAST = 2 } + +// #if(WINVER >= 0x0500) +enum : uint { LAYOUT_RTL = 0x00000001 } +enum : uint { LAYOUT_BTT = 0x00000002 } +enum : uint { LAYOUT_VBH = 0x00000004 } +enum : uint { LAYOUT_ORIENTATIONMASK = LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH } +enum : uint { LAYOUT_BITMAPORIENTATIONPRESERVED = 0x00000008 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { TA_NOUPDATECP = 0 } +enum : uint { TA_UPDATECP = 1 } + +enum : uint { TA_LEFT = 0 } +enum : uint { TA_RIGHT = 2 } +enum : uint { TA_CENTER = 6 } + +enum : uint { TA_TOP = 0 } +enum : uint { TA_BOTTOM = 8 } +enum : uint { TA_BASELINE = 24 } +// #if (WINVER >= 0x0400) +enum : uint { TA_RTLREADING = 256 } +enum : uint { TA_MASK = TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING } +// #else +// #... +// #endif + +alias TA_BASELINE VTA_BASELINE; +alias TA_BOTTOM VTA_LEFT; +alias TA_TOP VTA_RIGHT; +alias TA_CENTER VTA_CENTER; +alias TA_RIGHT VTA_BOTTOM; +alias TA_LEFT VTA_TOP; + +enum : uint { ETO_OPAQUE = 0x0002 } +enum : uint { ETO_CLIPPED = 0x0004 } +// #if(WINVER >= 0x0400) +enum : uint { ETO_GLYPH_INDEX = 0x0010 } +enum : uint { ETO_RTLREADING = 0x0080 } +enum : uint { ETO_NUMERICSLOCAL = 0x0400 } +enum : uint { ETO_NUMERICSLATIN = 0x0800 } +enum : uint { ETO_IGNORELANGUAGE = 0x1000 } +// #endif /* WINVER >= 0x0400 */ +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { ETO_PDY = 0x2000 } +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { ASPECT_FILTERING = 0x0001 } + +enum : uint { DCB_RESET = 0x0001 } +enum : uint { DCB_ACCUMULATE = 0x0002 } +alias DCB_ACCUMULATE DCB_DIRTY; +enum : uint { DCB_SET = DCB_RESET | DCB_ACCUMULATE } +enum : uint { DCB_ENABLE = 0x0004 } +enum : uint { DCB_DISABLE = 0x0008 } + +// #ifndef NOMETAFILE + +enum : uint { META_SETBKCOLOR = 0x0201 } +enum : uint { META_SETBKMODE = 0x0102 } +enum : uint { META_SETMAPMODE = 0x0103 } +enum : uint { META_SETROP2 = 0x0104 } +enum : uint { META_SETRELABS = 0x0105 } +enum : uint { META_SETPOLYFILLMODE = 0x0106 } +enum : uint { META_SETSTRETCHBLTMODE = 0x0107 } +enum : uint { META_SETTEXTCHAREXTRA = 0x0108 } +enum : uint { META_SETTEXTCOLOR = 0x0209 } +enum : uint { META_SETTEXTJUSTIFICATION = 0x020A } +enum : uint { META_SETWINDOWORG = 0x020B } +enum : uint { META_SETWINDOWEXT = 0x020C } +enum : uint { META_SETVIEWPORTORG = 0x020D } +enum : uint { META_SETVIEWPORTEXT = 0x020E } +enum : uint { META_OFFSETWINDOWORG = 0x020F } +enum : uint { META_SCALEWINDOWEXT = 0x0410 } +enum : uint { META_OFFSETVIEWPORTORG = 0x0211 } +enum : uint { META_SCALEVIEWPORTEXT = 0x0412 } +enum : uint { META_LINETO = 0x0213 } +enum : uint { META_MOVETO = 0x0214 } +enum : uint { META_EXCLUDECLIPRECT = 0x0415 } +enum : uint { META_INTERSECTCLIPRECT = 0x0416 } +enum : uint { META_ARC = 0x0817 } +enum : uint { META_ELLIPSE = 0x0418 } +enum : uint { META_FLOODFILL = 0x0419 } +enum : uint { META_PIE = 0x081A } +enum : uint { META_RECTANGLE = 0x041B } +enum : uint { META_ROUNDRECT = 0x061C } +enum : uint { META_PATBLT = 0x061D } +enum : uint { META_SAVEDC = 0x001E } +enum : uint { META_SETPIXEL = 0x041F } +enum : uint { META_OFFSETCLIPRGN = 0x0220 } +enum : uint { META_TEXTOUT = 0x0521 } +enum : uint { META_BITBLT = 0x0922 } +enum : uint { META_STRETCHBLT = 0x0B23 } +enum : uint { META_POLYGON = 0x0324 } +enum : uint { META_POLYLINE = 0x0325 } +enum : uint { META_ESCAPE = 0x0626 } +enum : uint { META_RESTOREDC = 0x0127 } +enum : uint { META_FILLREGION = 0x0228 } +enum : uint { META_FRAMEREGION = 0x0429 } +enum : uint { META_INVERTREGION = 0x012A } +enum : uint { META_PAINTREGION = 0x012B } +enum : uint { META_SELECTCLIPREGION = 0x012C } +enum : uint { META_SELECTOBJECT = 0x012D } +enum : uint { META_SETTEXTALIGN = 0x012E } +enum : uint { META_CHORD = 0x0830 } +enum : uint { META_SETMAPPERFLAGS = 0x0231 } +enum : uint { META_EXTTEXTOUT = 0x0a32 } +enum : uint { META_SETDIBTODEV = 0x0d33 } +enum : uint { META_SELECTPALETTE = 0x0234 } +enum : uint { META_REALIZEPALETTE = 0x0035 } +enum : uint { META_ANIMATEPALETTE = 0x0436 } +enum : uint { META_SETPALENTRIES = 0x0037 } +enum : uint { META_POLYPOLYGON = 0x0538 } +enum : uint { META_RESIZEPALETTE = 0x0139 } +enum : uint { META_DIBBITBLT = 0x0940 } +enum : uint { META_DIBSTRETCHBLT = 0x0b41 } +enum : uint { META_DIBCREATEPATTERNBRUSH = 0x0142 } +enum : uint { META_STRETCHDIB = 0x0f43 } +enum : uint { META_EXTFLOODFILL = 0x0548 } +// #if(WINVER >= 0x0500) +enum : uint { META_SETLAYOUT = 0x0149 } +// #endif /* WINVER >= 0x0500 */ +enum : uint { META_DELETEOBJECT = 0x01f0 } +enum : uint { META_CREATEPALETTE = 0x00f7 } +enum : uint { META_CREATEPATTERNBRUSH = 0x01F9 } +enum : uint { META_CREATEPENINDIRECT = 0x02FA } +enum : uint { META_CREATEFONTINDIRECT = 0x02FB } +enum : uint { META_CREATEBRUSHINDIRECT = 0x02FC } +enum : uint { META_CREATEREGION = 0x06FF } + +// #if(WINVER >= 0x0400) +struct _DRAWPATRECT { + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; +} +alias _DRAWPATRECT DRAWPATRECT; +alias _DRAWPATRECT* PDRAWPATRECT; + +// #endif /* WINVER >= 0x0400 */ + +// #endif /* NOMETAFILE */ + +enum : uint { NEWFRAME = 1 } +enum : uint { ABORTDOC = 2 } +enum : uint { NEXTBAND = 3 } +enum : uint { SETCOLORTABLE = 4 } +enum : uint { GETCOLORTABLE = 5 } +enum : uint { FLUSHOUTPUT = 6 } +enum : uint { DRAFTMODE = 7 } +enum : uint { QUERYESCSUPPORT = 8 } +enum : uint { SETABORTPROC = 9 } +enum : uint { STARTDOC = 10 } +enum : uint { ENDDOC = 11 } +enum : uint { GETPHYSPAGESIZE = 12 } +enum : uint { GETPRINTINGOFFSET = 13 } +enum : uint { GETSCALINGFACTOR = 14 } +enum : uint { MFCOMMENT = 15 } +enum : uint { GETPENWIDTH = 16 } +enum : uint { SETCOPYCOUNT = 17 } +enum : uint { SELECTPAPERSOURCE = 18 } +enum : uint { DEVICEDATA = 19 } +enum : uint { PASSTHROUGH = 19 } +enum : uint { GETTECHNOLGY = 20 } +enum : uint { GETTECHNOLOGY = 20 } +enum : uint { SETLINECAP = 21 } +enum : uint { SETLINEJOIN = 22 } +enum : uint { SETMITERLIMIT = 23 } +enum : uint { BANDINFO = 24 } +enum : uint { DRAWPATTERNRECT = 25 } +enum : uint { GETVECTORPENSIZE = 26 } +enum : uint { GETVECTORBRUSHSIZE = 27 } +enum : uint { ENABLEDUPLEX = 28 } +enum : uint { GETSETPAPERBINS = 29 } +enum : uint { GETSETPRINTORIENT = 30 } +enum : uint { ENUMPAPERBINS = 31 } +enum : uint { SETDIBSCALING = 32 } +enum : uint { EPSPRINTING = 33 } +enum : uint { ENUMPAPERMETRICS = 34 } +enum : uint { GETSETPAPERMETRICS = 35 } +enum : uint { POSTSCRIPT_DATA = 37 } +enum : uint { POSTSCRIPT_IGNORE = 38 } +enum : uint { MOUSETRAILS = 39 } +enum : uint { GETDEVICEUNITS = 42 } + +enum : uint { GETEXTENDEDTEXTMETRICS = 256 } +enum : uint { GETEXTENTTABLE = 257 } +enum : uint { GETPAIRKERNTABLE = 258 } +enum : uint { GETTRACKKERNTABLE = 259 } +enum : uint { EXTTEXTOUT = 512 } +enum : uint { GETFACENAME = 513 } +enum : uint { DOWNLOADFACE = 514 } +enum : uint { ENABLERELATIVEWIDTHS = 768 } +enum : uint { ENABLEPAIRKERNING = 769 } +enum : uint { SETKERNTRACK = 770 } +enum : uint { SETALLJUSTVALUES = 771 } +enum : uint { SETCHARSET = 772 } + +enum : uint { STRETCHBLT = 2048 } +enum : uint { METAFILE_DRIVER = 2049 } +enum : uint { GETSETSCREENPARAMS = 3072 } +enum : uint { QUERYDIBSUPPORT = 3073 } +enum : uint { BEGIN_PATH = 4096 } +enum : uint { CLIP_TO_PATH = 4097 } +enum : uint { END_PATH = 4098 } +enum : uint { EXT_DEVICE_CAPS = 4099 } +enum : uint { RESTORE_CTM = 4100 } +enum : uint { SAVE_CTM = 4101 } +enum : uint { SET_ARC_DIRECTION = 4102 } +enum : uint { SET_BACKGROUND_COLOR = 4103 } +enum : uint { SET_POLY_MODE = 4104 } +enum : uint { SET_SCREEN_ANGLE = 4105 } +enum : uint { SET_SPREAD = 4106 } +enum : uint { TRANSFORM_CTM = 4107 } +enum : uint { SET_CLIP_BOX = 4108 } +enum : uint { SET_BOUNDS = 4109 } +enum : uint { SET_MIRROR_MODE = 4110 } +enum : uint { OPENCHANNEL = 4110 } +enum : uint { DOWNLOADHEADER = 4111 } +enum : uint { CLOSECHANNEL = 4112 } +enum : uint { POSTSCRIPT_PASSTHROUGH = 4115 } +enum : uint { ENCAPSULATED_POSTSCRIPT = 4116 } + +enum : uint { POSTSCRIPT_IDENTIFY = 4117 } +enum : uint { POSTSCRIPT_INJECTION = 4118 } + +enum : uint { CHECKJPEGFORMAT = 4119 } +enum : uint { CHECKPNGFORMAT = 4120 } + +enum : uint { GET_PS_FEATURESETTING = 4121 } + +enum : uint { SPCLPASSTHROUGH2 = 4568 } + +enum : uint { PSIDENT_GDICENTRIC = 0 } +enum : uint { PSIDENT_PSCENTRIC = 1 } + +struct _PSINJECTDATA { + + DWORD DataBytes; + WORD InjectionPoint; + WORD PageNumber; + +} +alias _PSINJECTDATA PSINJECTDATA; +alias _PSINJECTDATA* PPSINJECTDATA; + +enum : uint { PSINJECT_BEGINSTREAM = 1 } +enum : uint { PSINJECT_PSADOBE = 2 } +enum : uint { PSINJECT_PAGESATEND = 3 } +enum : uint { PSINJECT_PAGES = 4 } + +enum : uint { PSINJECT_DOCNEEDEDRES = 5 } +enum : uint { PSINJECT_DOCSUPPLIEDRES = 6 } +enum : uint { PSINJECT_PAGEORDER = 7 } +enum : uint { PSINJECT_ORIENTATION = 8 } +enum : uint { PSINJECT_BOUNDINGBOX = 9 } +enum : uint { PSINJECT_DOCUMENTPROCESSCOLORS = 10 } + +enum : uint { PSINJECT_COMMENTS = 11 } +enum : uint { PSINJECT_BEGINDEFAULTS = 12 } +enum : uint { PSINJECT_ENDDEFAULTS = 13 } +enum : uint { PSINJECT_BEGINPROLOG = 14 } +enum : uint { PSINJECT_ENDPROLOG = 15 } +enum : uint { PSINJECT_BEGINSETUP = 16 } +enum : uint { PSINJECT_ENDSETUP = 17 } +enum : uint { PSINJECT_TRAILER = 18 } +enum : uint { PSINJECT_EOF = 19 } +enum : uint { PSINJECT_ENDSTREAM = 20 } +enum : uint { PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21 } + +enum : uint { PSINJECT_PAGENUMBER = 100 } +enum : uint { PSINJECT_BEGINPAGESETUP = 101 } +enum : uint { PSINJECT_ENDPAGESETUP = 102 } +enum : uint { PSINJECT_PAGETRAILER = 103 } +enum : uint { PSINJECT_PLATECOLOR = 104 } + +enum : uint { PSINJECT_SHOWPAGE = 105 } +enum : uint { PSINJECT_PAGEBBOX = 106 } +enum : uint { PSINJECT_ENDPAGECOMMENTS = 107 } + +enum : uint { PSINJECT_VMSAVE = 200 } +enum : uint { PSINJECT_VMRESTORE = 201 } + +enum : uint { FEATURESETTING_NUP = 0 } +enum : uint { FEATURESETTING_OUTPUT = 1 } +enum : uint { FEATURESETTING_PSLEVEL = 2 } +enum : uint { FEATURESETTING_CUSTPAPER = 3 } +enum : uint { FEATURESETTING_MIRROR = 4 } +enum : uint { FEATURESETTING_NEGATIVE = 5 } +enum : uint { FEATURESETTING_PROTOCOL = 6 } + +enum : uint { FEATURESETTING_PRIVATE_BEGIN = 0x1000 } +enum : uint { FEATURESETTING_PRIVATE_END = 0x1FFF } + +struct _PSFEATURE_OUTPUT { + + BOOL bPageIndependent; + BOOL bSetPageDevice; +} +alias _PSFEATURE_OUTPUT PSFEATURE_OUTPUT; +alias _PSFEATURE_OUTPUT* PPSFEATURE_OUTPUT; + +struct _PSFEATURE_CUSTPAPER { + + LONG lOrientation; + LONG lWidth; + LONG lHeight; + LONG lWidthOffset; + LONG lHeightOffset; +} +alias _PSFEATURE_CUSTPAPER PSFEATURE_CUSTPAPER; +alias _PSFEATURE_CUSTPAPER* PPSFEATURE_CUSTPAPER; + +enum : uint { PSPROTOCOL_ASCII = 0 } +enum : uint { PSPROTOCOL_BCP = 1 } +enum : uint { PSPROTOCOL_TBCP = 2 } +enum : uint { PSPROTOCOL_BINARY = 3 } + +enum : uint { QDI_SETDIBITS = 1 } +enum : uint { QDI_GETDIBITS = 2 } +enum : uint { QDI_DIBTOSCREEN = 4 } +enum : uint { QDI_STRETCHDIB = 8 } + +enum : uint { SP_NOTREPORTED = 0x4000 } +enum { SP_ERROR = -1 } +enum { SP_APPABORT = -2 } +enum { SP_USERABORT = -3 } +enum { SP_OUTOFDISK = -4 } +enum { SP_OUTOFMEMORY = -5 } + +enum : uint { PR_JOBSTATUS = 0x0000 } + +enum : uint { OBJ_PEN = 1 } +enum : uint { OBJ_BRUSH = 2 } +enum : uint { OBJ_DC = 3 } +enum : uint { OBJ_METADC = 4 } +enum : uint { OBJ_PAL = 5 } +enum : uint { OBJ_FONT = 6 } +enum : uint { OBJ_BITMAP = 7 } +enum : uint { OBJ_REGION = 8 } +enum : uint { OBJ_METAFILE = 9 } +enum : uint { OBJ_MEMDC = 10 } +enum : uint { OBJ_EXTPEN = 11 } +enum : uint { OBJ_ENHMETADC = 12 } +enum : uint { OBJ_ENHMETAFILE = 13 } +enum : uint { OBJ_COLORSPACE = 14 } + +enum : uint { MWT_IDENTITY = 1 } +enum : uint { MWT_LEFTMULTIPLY = 2 } +enum : uint { MWT_RIGHTMULTIPLY = 3 } + +alias MWT_IDENTITY MWT_MIN; +alias MWT_RIGHTMULTIPLY MWT_MAX; + +// #define _XFORM_ +struct tagXFORM { + FLOAT eM11; + FLOAT eM12; + FLOAT eM21; + FLOAT eM22; + FLOAT eDx; + FLOAT eDy; +} +alias tagXFORM XFORM; +alias tagXFORM* PXFORM; +alias tagXFORM* LPXFORM; + +struct tagBITMAP { + LONG bmType; + LONG bmWidth; + LONG bmHeight; + LONG bmWidthBytes; + WORD bmPlanes; + WORD bmBitsPixel; + LPVOID bmBits; +} +alias tagBITMAP BITMAP; +alias tagBITMAP* PBITMAP; +alias tagBITMAP* NPBITMAP; +alias tagBITMAP* LPBITMAP; + +align(1): +struct tagRGBTRIPLE { + BYTE rgbtBlue; + BYTE rgbtGreen; + BYTE rgbtRed; +} +alias tagRGBTRIPLE RGBTRIPLE; + +align: + +struct tagRGBQUAD { + BYTE rgbBlue; + BYTE rgbGreen; + BYTE rgbRed; + BYTE rgbReserved; +} +alias tagRGBQUAD RGBQUAD; + +alias RGBQUAD* LPRGBQUAD; + +// #if(WINVER >= 0x0400) + +enum : uint { CS_ENABLE = 0x00000001 } +enum : uint { CS_DISABLE = 0x00000002 } +enum : uint { CS_DELETE_TRANSFORM = 0x00000003 } + +// #define LCS_SIGNATURE 'PSOC' + +// #define LCS_sRGB 'sRGB' +// #define LCS_WINDOWS_COLOR_SPACE 'Win ' + +alias LONG LCSCSTYPE; +enum : uint { LCS_CALIBRATED_RGB = 0x00000000 } + +alias LONG LCSGAMUTMATCH; +enum : uint { LCS_GM_BUSINESS = 0x00000001 } +enum : uint { LCS_GM_GRAPHICS = 0x00000002 } +enum : uint { LCS_GM_IMAGES = 0x00000004 } +enum : uint { LCS_GM_ABS_COLORIMETRIC = 0x00000008 } + +enum : uint { CM_OUT_OF_GAMUT = 255 } +enum : uint { CM_IN_GAMUT = 0 } + +enum : uint { ICM_ADDPROFILE = 1 } +enum : uint { ICM_DELETEPROFILE = 2 } +enum : uint { ICM_QUERYPROFILE = 3 } +enum : uint { ICM_SETDEFAULTPROFILE = 4 } +enum : uint { ICM_REGISTERICMATCHER = 5 } +enum : uint { ICM_UNREGISTERICMATCHER = 6 } +enum : uint { ICM_QUERYMATCH = 7 } + +BYTE GetKValue(DWORD cmyk){ return cast(BYTE)cmyk; } +BYTE GetYValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 8); } +BYTE GetMValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 16); } +BYTE GetCValue(DWORD cmyk){ return cast(BYTE)(cmyk >>> 24); } + +DWORD CMYK(BYTE c, BYTE m, BYTE y, BYTE k){ return (cast(COLORREF)(((cast(BYTE)(k)|(cast(WORD)(cast(BYTE)(y))<<8))|((cast(DWORD)cast(BYTE)(m))<<16))|((cast(DWORD)cast(BYTE)(c))<<24))); } + +alias int FXPT16DOT16; +alias int* LPFXPT16DOT16; +alias int FXPT2DOT30; +alias int* LPFXPT2DOT30; + +struct tagCIEXYZ { + FXPT2DOT30 ciexyzX; + FXPT2DOT30 ciexyzY; + FXPT2DOT30 ciexyzZ; +} +alias tagCIEXYZ CIEXYZ; + +alias CIEXYZ* LPCIEXYZ; + +struct tagICEXYZTRIPLE { + CIEXYZ ciexyzRed; + CIEXYZ ciexyzGreen; + CIEXYZ ciexyzBlue; +} +alias tagICEXYZTRIPLE CIEXYZTRIPLE; + +alias CIEXYZTRIPLE* LPCIEXYZTRIPLE; + +struct tagLOGCOLORSPACEA { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + CHAR lcsFilename[MAX_PATH]; +} +alias tagLOGCOLORSPACEA LOGCOLORSPACEA; +alias tagLOGCOLORSPACEA* LPLOGCOLORSPACEA; + +struct tagLOGCOLORSPACEW { + DWORD lcsSignature; + DWORD lcsVersion; + DWORD lcsSize; + LCSCSTYPE lcsCSType; + LCSGAMUTMATCH lcsIntent; + CIEXYZTRIPLE lcsEndpoints; + DWORD lcsGammaRed; + DWORD lcsGammaGreen; + DWORD lcsGammaBlue; + WCHAR lcsFilename[MAX_PATH]; +} +alias tagLOGCOLORSPACEW LOGCOLORSPACEW; +alias tagLOGCOLORSPACEW* LPLOGCOLORSPACEW; + +// #ifdef UNICODE +alias LOGCOLORSPACEW LOGCOLORSPACE; +alias LPLOGCOLORSPACEW LPLOGCOLORSPACE; +// #else +// ... +// #endif // UNICODE + +// #endif /* WINVER >= 0x0400 */ + +struct tagBITMAPCOREHEADER { + DWORD bcSize; + WORD bcWidth; + WORD bcHeight; + WORD bcPlanes; + WORD bcBitCount; +} +alias tagBITMAPCOREHEADER BITMAPCOREHEADER; +alias tagBITMAPCOREHEADER* LPBITMAPCOREHEADER; +alias tagBITMAPCOREHEADER* PBITMAPCOREHEADER; + +struct tagBITMAPINFOHEADER { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} +alias tagBITMAPINFOHEADER BITMAPINFOHEADER; +alias tagBITMAPINFOHEADER* LPBITMAPINFOHEADER; +alias tagBITMAPINFOHEADER* PBITMAPINFOHEADER; + +// #if(WINVER >= 0x0400) +struct _0 { + 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 _0 BITMAPV4HEADER; +alias _0* LPBITMAPV4HEADER; +alias _0* PBITMAPV4HEADER; + +// #endif /* WINVER >= 0x0400 */ + +// #if (WINVER >= 0x0500) +struct _1 { + 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 _1 BITMAPV5HEADER; +alias _1* LPBITMAPV5HEADER; +alias _1* PBITMAPV5HEADER; + +// #define PROFILE_LINKED 'LINK' +// #define PROFILE_EMBEDDED 'MBED' +// #endif + +enum : uint { BI_RGB = 0 } +enum : uint { BI_RLE8 = 1 } +enum : uint { BI_RLE4 = 2 } +enum : uint { BI_BITFIELDS = 3 } +enum : uint { BI_JPEG = 4 } +enum : uint { BI_PNG = 5 } +// #if (_WIN32_WINNT >= 0x0400) +// #endif + +struct tagBITMAPINFO { + BITMAPINFOHEADER bmiHeader; + RGBQUAD bmiColors[1]; +} +alias tagBITMAPINFO BITMAPINFO; +alias tagBITMAPINFO* LPBITMAPINFO; +alias tagBITMAPINFO* PBITMAPINFO; + +struct tagBITMAPCOREINFO { + BITMAPCOREHEADER bmciHeader; + RGBTRIPLE bmciColors[1]; +} +alias tagBITMAPCOREINFO BITMAPCOREINFO; +alias tagBITMAPCOREINFO* LPBITMAPCOREINFO; +alias tagBITMAPCOREINFO* PBITMAPCOREINFO; + +align(2): +struct tagBITMAPFILEHEADER { + WORD bfType; + DWORD bfSize; + WORD bfReserved1; + WORD bfReserved2; + DWORD bfOffBits; +} +alias tagBITMAPFILEHEADER BITMAPFILEHEADER; +alias tagBITMAPFILEHEADER* LPBITMAPFILEHEADER; +alias tagBITMAPFILEHEADER* PBITMAPFILEHEADER; + +align: + +// #define MAKEPOINTS(l) (*((POINTS FAR *)&(l))) + +// #if(WINVER >= 0x0400) +// #ifndef NOFONTSIG +struct tagFONTSIGNATURE { + DWORD fsUsb[4]; + DWORD fsCsb[2]; +} +alias tagFONTSIGNATURE FONTSIGNATURE; +alias tagFONTSIGNATURE* PFONTSIGNATURE; +alias tagFONTSIGNATURE* LPFONTSIGNATURE; + +struct tagCHARSETINFO { + UINT ciCharset; + UINT ciACP; + FONTSIGNATURE fs; +} +alias tagCHARSETINFO CHARSETINFO; +alias tagCHARSETINFO* PCHARSETINFO; +alias tagCHARSETINFO* NPCHARSETINFO; +alias tagCHARSETINFO* LPCHARSETINFO; + +enum : uint { TCI_SRCCHARSET = 1 } +enum : uint { TCI_SRCCODEPAGE = 2 } +enum : uint { TCI_SRCFONTSIG = 3 } + +struct tagLOCALESIGNATURE { + DWORD lsUsb[4]; + DWORD lsCsbDefault[2]; + DWORD lsCsbSupported[2]; +} +alias tagLOCALESIGNATURE LOCALESIGNATURE; +alias tagLOCALESIGNATURE* PLOCALESIGNATURE; +alias tagLOCALESIGNATURE* LPLOCALESIGNATURE; + +// #endif +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOMETAFILE + +struct tagHANDLETABLE { + HGDIOBJ objectHandle[1]; +} +alias tagHANDLETABLE HANDLETABLE; +alias tagHANDLETABLE* PHANDLETABLE; +alias tagHANDLETABLE* LPHANDLETABLE; + +struct tagMETARECORD { + DWORD rdSize; + WORD rdFunction; + WORD rdParm[1]; +} +alias tagMETARECORD METARECORD; + +alias tagMETARECORD* PMETARECORD; +alias tagMETARECORD* LPMETARECORD; + +struct tagMETAFILEPICT { + LONG mm; + LONG xExt; + LONG yExt; + HMETAFILE hMF; +} +alias tagMETAFILEPICT METAFILEPICT; +alias tagMETAFILEPICT* LPMETAFILEPICT; + +align(2): +struct tagMETAHEADER { + WORD mtType; + WORD mtHeaderSize; + WORD mtVersion; + DWORD mtSize; + WORD mtNoObjects; + DWORD mtMaxRecord; + WORD mtNoParameters; +} +alias tagMETAHEADER METAHEADER; + +alias tagMETAHEADER* PMETAHEADER; +alias tagMETAHEADER* LPMETAHEADER; + +align: + +struct tagENHMETARECORD { + DWORD iType; + DWORD nSize; + DWORD dParm[1]; +} +alias tagENHMETARECORD ENHMETARECORD; +alias tagENHMETARECORD* PENHMETARECORD; +alias tagENHMETARECORD* LPENHMETARECORD; + +struct tagENHMETAHEADER { + DWORD iType; + DWORD nSize; + + RECTL rclBounds; + RECTL rclFrame; + DWORD dSignature; + DWORD nVersion; + DWORD nBytes; + DWORD nRecords; + WORD nHandles; + + WORD sReserved; + DWORD nDescription; + + DWORD offDescription; + + DWORD nPalEntries; + SIZEL szlDevice; + SIZEL szlMillimeters; +// #if(WINVER >= 0x0400) + DWORD cbPixelFormat; + + DWORD offPixelFormat; + + DWORD bOpenGL; + +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) + SIZEL szlMicrometers; +// #endif /* WINVER >= 0x0500 */ + +} +alias tagENHMETAHEADER ENHMETAHEADER; +alias tagENHMETAHEADER* PENHMETAHEADER; +alias tagENHMETAHEADER* LPENHMETAHEADER; + +// #endif /* NOMETAFILE */ + +// #ifndef NOTEXTMETRIC + +enum : uint { TMPF_FIXED_PITCH = 0x01 } +enum : uint { TMPF_VECTOR = 0x02 } +enum : uint { TMPF_DEVICE = 0x08 } +enum : uint { TMPF_TRUETYPE = 0x04 } + +// #ifdef UNICODE +alias WCHAR BCHAR; +// #else +// ... +// #endif + +// #ifndef _TEXTMETRIC_DEFINED +// #define _TEXTMETRIC_DEFINED +struct tagTEXTMETRICA { + 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 tagTEXTMETRICA TEXTMETRICA; +alias tagTEXTMETRICA* PTEXTMETRICA; +alias tagTEXTMETRICA* NPTEXTMETRICA; +alias tagTEXTMETRICA* LPTEXTMETRICA; + +struct tagTEXTMETRICW { + 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 tagTEXTMETRICW TEXTMETRICW; +alias tagTEXTMETRICW* PTEXTMETRICW; +alias tagTEXTMETRICW* NPTEXTMETRICW; +alias tagTEXTMETRICW* LPTEXTMETRICW; + +// #ifdef UNICODE +alias TEXTMETRICW TEXTMETRIC; +alias PTEXTMETRICW PTEXTMETRIC; +alias NPTEXTMETRICW NPTEXTMETRIC; +alias LPTEXTMETRICW LPTEXTMETRIC; +// #else +// ... +// #endif // UNICODE +// #endif // !_TEXTMETRIC_DEFINED + +enum : uint { NTM_REGULAR = 0x00000040 } +enum : uint { NTM_BOLD = 0x00000020 } +enum : uint { NTM_ITALIC = 0x00000001 } + +enum : uint { NTM_NONNEGATIVE_AC = 0x00010000 } +enum : uint { NTM_PS_OPENTYPE = 0x00020000 } +enum : uint { NTM_TT_OPENTYPE = 0x00040000 } +enum : uint { NTM_MULTIPLEMASTER = 0x00080000 } +enum : uint { NTM_TYPE1 = 0x00100000 } +enum : uint { NTM_DSIG = 0x00200000 } + +align(4): +struct tagNEWTEXTMETRICA { + 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 tagNEWTEXTMETRICA NEWTEXTMETRICA; +alias tagNEWTEXTMETRICA* PNEWTEXTMETRICA; +alias tagNEWTEXTMETRICA* NPNEWTEXTMETRICA; +alias tagNEWTEXTMETRICA* LPNEWTEXTMETRICA; + +struct tagNEWTEXTMETRICW { + 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 tagNEWTEXTMETRICW NEWTEXTMETRICW; +alias tagNEWTEXTMETRICW* PNEWTEXTMETRICW; +alias tagNEWTEXTMETRICW* NPNEWTEXTMETRICW; +alias tagNEWTEXTMETRICW* LPNEWTEXTMETRICW; + +// #ifdef UNICODE +alias NEWTEXTMETRICW NEWTEXTMETRIC; +alias PNEWTEXTMETRICW PNEWTEXTMETRIC; +alias NPNEWTEXTMETRICW NPNEWTEXTMETRIC; +alias LPNEWTEXTMETRICW LPNEWTEXTMETRIC; +// #else +// ... +// #endif // UNICODE +align: + +// #if(WINVER >= 0x0400) +struct tagNEWTEXTMETRICEXA { + NEWTEXTMETRICA ntmTm; + FONTSIGNATURE ntmFontSig; +} +alias tagNEWTEXTMETRICEXA NEWTEXTMETRICEXA; + +struct tagNEWTEXTMETRICEXW { + NEWTEXTMETRICW ntmTm; + FONTSIGNATURE ntmFontSig; +} +alias tagNEWTEXTMETRICEXW NEWTEXTMETRICEXW; + +// #ifdef UNICODE +alias NEWTEXTMETRICEXW NEWTEXTMETRICEX; +// #else +// ... +// #endif // UNICODE +// #endif /* WINVER >= 0x0400 */ + +// #endif /* NOTEXTMETRIC */ + +struct tagPELARRAY { + LONG paXCount; + LONG paYCount; + LONG paXExt; + LONG paYExt; + BYTE paRGBs; +} +alias tagPELARRAY PELARRAY; +alias tagPELARRAY* PPELARRAY; +alias tagPELARRAY* NPPELARRAY; +alias tagPELARRAY* LPPELARRAY; + +struct tagLOGBRUSH { + UINT lbStyle; + COLORREF lbColor; + ULONG_PTR lbHatch; +} +alias tagLOGBRUSH LOGBRUSH; +alias tagLOGBRUSH* PLOGBRUSH; +alias tagLOGBRUSH* NPLOGBRUSH; +alias tagLOGBRUSH* LPLOGBRUSH; + +struct tagLOGBRUSH32 { + UINT lbStyle; + COLORREF lbColor; + ULONG lbHatch; +} +alias tagLOGBRUSH32 LOGBRUSH32; +alias tagLOGBRUSH32* PLOGBRUSH32; +alias tagLOGBRUSH32* NPLOGBRUSH32; +alias tagLOGBRUSH32* LPLOGBRUSH32; + +alias LOGBRUSH PATTERN; +alias PATTERN* PPATTERN; +alias PATTERN* NPPATTERN; +alias PATTERN* LPPATTERN; + +struct tagLOGPEN { + UINT lopnStyle; + POINT lopnWidth; + COLORREF lopnColor; +} +alias tagLOGPEN LOGPEN; +alias tagLOGPEN* PLOGPEN; +alias tagLOGPEN* NPLOGPEN; +alias tagLOGPEN* LPLOGPEN; + +struct tagEXTLOGPEN { + DWORD elpPenStyle; + DWORD elpWidth; + UINT elpBrushStyle; + COLORREF elpColor; + ULONG_PTR elpHatch; + DWORD elpNumEntries; + DWORD elpStyleEntry[1]; +} +alias tagEXTLOGPEN EXTLOGPEN; +alias tagEXTLOGPEN* PEXTLOGPEN; +alias tagEXTLOGPEN* NPEXTLOGPEN; +alias tagEXTLOGPEN* LPEXTLOGPEN; + +// #ifndef _PALETTEENTRY_DEFINED +// #define _PALETTEENTRY_DEFINED +struct tagPALETTEENTRY { + BYTE peRed; + BYTE peGreen; + BYTE peBlue; + BYTE peFlags; +} +alias tagPALETTEENTRY PALETTEENTRY; +alias tagPALETTEENTRY* PPALETTEENTRY; +alias tagPALETTEENTRY* LPPALETTEENTRY; + +// #endif // !_PALETTEENTRY_DEFINED + +// #ifndef _LOGPALETTE_DEFINED +// #define _LOGPALETTE_DEFINED + +struct tagLOGPALETTE { + WORD palVersion; + WORD palNumEntries; + PALETTEENTRY palPalEntry[1]; +} +alias tagLOGPALETTE LOGPALETTE; +alias tagLOGPALETTE* PLOGPALETTE; +alias tagLOGPALETTE* NPLOGPALETTE; +alias tagLOGPALETTE* LPLOGPALETTE; + +// #endif // !_LOGPALETTE_DEFINED + +enum : uint { LF_FACESIZE = 32 } + +struct tagLOGFONTA { + 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 lfFaceName[LF_FACESIZE]; +} +alias tagLOGFONTA LOGFONTA; +alias tagLOGFONTA* PLOGFONTA; +alias tagLOGFONTA* NPLOGFONTA; +alias tagLOGFONTA* LPLOGFONTA; + +struct tagLOGFONTW { + 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 lfFaceName[LF_FACESIZE]; +} +alias tagLOGFONTW LOGFONTW; +alias tagLOGFONTW* PLOGFONTW; +alias tagLOGFONTW* NPLOGFONTW; +alias tagLOGFONTW* LPLOGFONTW; + +// #ifdef UNICODE +alias LOGFONTW LOGFONT; +alias PLOGFONTW PLOGFONT; +alias NPLOGFONTW NPLOGFONT; +alias LPLOGFONTW LPLOGFONT; +// #else +// ... +// #endif // UNICODE + +enum : uint { LF_FULLFACESIZE = 64 } + +struct tagENUMLOGFONTA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; +} +alias tagENUMLOGFONTA ENUMLOGFONTA; +alias tagENUMLOGFONTA* LPENUMLOGFONTA; + +struct tagENUMLOGFONTW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; +} +alias tagENUMLOGFONTW ENUMLOGFONTW; +alias tagENUMLOGFONTW* LPENUMLOGFONTW; + +// #ifdef UNICODE +alias ENUMLOGFONTW ENUMLOGFONT; +alias LPENUMLOGFONTW LPENUMLOGFONT; +// #else +// ... +// #endif // UNICODE + +// #if(WINVER >= 0x0400) +struct tagENUMLOGFONTEXA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + BYTE elfScript[LF_FACESIZE]; +} +alias tagENUMLOGFONTEXA ENUMLOGFONTEXA; +alias tagENUMLOGFONTEXA* LPENUMLOGFONTEXA; + +struct tagENUMLOGFONTEXW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; + WCHAR elfScript[LF_FACESIZE]; +} +alias tagENUMLOGFONTEXW ENUMLOGFONTEXW; +alias tagENUMLOGFONTEXW* LPENUMLOGFONTEXW; + +// #ifdef UNICODE +alias ENUMLOGFONTEXW ENUMLOGFONTEX; +alias LPENUMLOGFONTEXW LPENUMLOGFONTEX; +// #else +// ... +// #endif // UNICODE +// #endif /* WINVER >= 0x0400 */ + +enum : uint { OUT_DEFAULT_PRECIS = 0 } +enum : uint { OUT_STRING_PRECIS = 1 } +enum : uint { OUT_CHARACTER_PRECIS = 2 } +enum : uint { OUT_STROKE_PRECIS = 3 } +enum : uint { OUT_TT_PRECIS = 4 } +enum : uint { OUT_DEVICE_PRECIS = 5 } +enum : uint { OUT_RASTER_PRECIS = 6 } +enum : uint { OUT_TT_ONLY_PRECIS = 7 } +enum : uint { OUT_OUTLINE_PRECIS = 8 } +enum : uint { OUT_SCREEN_OUTLINE_PRECIS = 9 } +enum : uint { OUT_PS_ONLY_PRECIS = 10 } + +enum : uint { CLIP_DEFAULT_PRECIS = 0 } +enum : uint { CLIP_CHARACTER_PRECIS = 1 } +enum : uint { CLIP_STROKE_PRECIS = 2 } +enum : uint { CLIP_MASK = 0xf } +enum : uint { CLIP_LH_ANGLES = 1<<4 } +enum : uint { CLIP_TT_ALWAYS = 2<<4 } +enum : uint { CLIP_EMBEDDED = 8<<4 } + +enum : uint { DEFAULT_QUALITY = 0 } +enum : uint { DRAFT_QUALITY = 1 } +enum : uint { PROOF_QUALITY = 2 } +// #if(WINVER >= 0x0400) +enum : uint { NONANTIALIASED_QUALITY = 3 } +enum : uint { ANTIALIASED_QUALITY = 4 } +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { CLEARTYPE_QUALITY = 5 } +// #endif + +enum : uint { DEFAULT_PITCH = 0 } +enum : uint { FIXED_PITCH = 1 } +enum : uint { VARIABLE_PITCH = 2 } +// #if(WINVER >= 0x0400) +enum : uint { MONO_FONT = 8 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { ANSI_CHARSET = 0 } +enum : uint { DEFAULT_CHARSET = 1 } +enum : uint { SYMBOL_CHARSET = 2 } +enum : uint { SHIFTJIS_CHARSET = 128 } +enum : uint { HANGEUL_CHARSET = 129 } +enum : uint { HANGUL_CHARSET = 129 } +enum : uint { GB2312_CHARSET = 134 } +enum : uint { CHINESEBIG5_CHARSET = 136 } +enum : uint { OEM_CHARSET = 255 } +// #if(WINVER >= 0x0400) +enum : uint { JOHAB_CHARSET = 130 } +enum : uint { HEBREW_CHARSET = 177 } +enum : uint { ARABIC_CHARSET = 178 } +enum : uint { GREEK_CHARSET = 161 } +enum : uint { TURKISH_CHARSET = 162 } +enum : uint { VIETNAMESE_CHARSET = 163 } +enum : uint { THAI_CHARSET = 222 } +enum : uint { EASTEUROPE_CHARSET = 238 } +enum : uint { RUSSIAN_CHARSET = 204 } + +enum : uint { MAC_CHARSET = 77 } +enum : uint { BALTIC_CHARSET = 186 } + +enum : uint { FS_LATIN1 = 0x00000001 } +enum : uint { FS_LATIN2 = 0x00000002 } +enum : uint { FS_CYRILLIC = 0x00000004 } +enum : uint { FS_GREEK = 0x00000008 } +enum : uint { FS_TURKISH = 0x00000010 } +enum : uint { FS_HEBREW = 0x00000020 } +enum : uint { FS_ARABIC = 0x00000040 } +enum : uint { FS_BALTIC = 0x00000080 } +enum : uint { FS_VIETNAMESE = 0x00000100 } +enum : uint { FS_THAI = 0x00010000 } +enum : uint { FS_JISJAPAN = 0x00020000 } +enum : uint { FS_CHINESESIMP = 0x00040000 } +enum : uint { FS_WANSUNG = 0x00080000 } +enum : uint { FS_CHINESETRAD = 0x00100000 } +enum : uint { FS_JOHAB = 0x00200000 } +enum : uint { FS_SYMBOL = 0x80000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { FF_DONTCARE = 0<<4 } +enum : uint { FF_ROMAN = 1<<4 } + +enum : uint { FF_SWISS = 2<<4 } + +enum : uint { FF_MODERN = 3<<4 } + +enum : uint { FF_SCRIPT = 4<<4 } +enum : uint { FF_DECORATIVE = 5<<4 } + +enum : uint { FW_DONTCARE = 0 } +enum : uint { FW_THIN = 100 } +enum : uint { FW_EXTRALIGHT = 200 } +enum : uint { FW_LIGHT = 300 } +enum : uint { FW_NORMAL = 400 } +enum : uint { FW_MEDIUM = 500 } +enum : uint { FW_SEMIBOLD = 600 } +enum : uint { FW_BOLD = 700 } +enum : uint { FW_EXTRABOLD = 800 } +enum : uint { FW_HEAVY = 900 } + +alias FW_EXTRALIGHT FW_ULTRALIGHT; +alias FW_NORMAL FW_REGULAR; +alias FW_SEMIBOLD FW_DEMIBOLD; +alias FW_EXTRABOLD FW_ULTRABOLD; +alias FW_HEAVY FW_BLACK; + +enum : uint { PANOSE_COUNT = 10 } +enum : uint { PAN_FAMILYTYPE_INDEX = 0 } +enum : uint { PAN_SERIFSTYLE_INDEX = 1 } +enum : uint { PAN_WEIGHT_INDEX = 2 } +enum : uint { PAN_PROPORTION_INDEX = 3 } +enum : uint { PAN_CONTRAST_INDEX = 4 } +enum : uint { PAN_STROKEVARIATION_INDEX = 5 } +enum : uint { PAN_ARMSTYLE_INDEX = 6 } +enum : uint { PAN_LETTERFORM_INDEX = 7 } +enum : uint { PAN_MIDLINE_INDEX = 8 } +enum : uint { PAN_XHEIGHT_INDEX = 9 } + +enum : uint { PAN_CULTURE_LATIN = 0 } + +struct tagPANOSE { + BYTE bFamilyType; + BYTE bSerifStyle; + BYTE bWeight; + BYTE bProportion; + BYTE bContrast; + BYTE bStrokeVariation; + BYTE bArmStyle; + BYTE bLetterform; + BYTE bMidline; + BYTE bXHeight; +} +alias tagPANOSE PANOSE; +alias tagPANOSE* LPPANOSE; + +enum : uint { PAN_ANY = 0 } +enum : uint { PAN_NO_FIT = 1 } + +enum : uint { PAN_FAMILY_TEXT_DISPLAY = 2 } +enum : uint { PAN_FAMILY_SCRIPT = 3 } +enum : uint { PAN_FAMILY_DECORATIVE = 4 } +enum : uint { PAN_FAMILY_PICTORIAL = 5 } + +enum : uint { PAN_SERIF_COVE = 2 } +enum : uint { PAN_SERIF_OBTUSE_COVE = 3 } +enum : uint { PAN_SERIF_SQUARE_COVE = 4 } +enum : uint { PAN_SERIF_OBTUSE_SQUARE_COVE = 5 } +enum : uint { PAN_SERIF_SQUARE = 6 } +enum : uint { PAN_SERIF_THIN = 7 } +enum : uint { PAN_SERIF_BONE = 8 } +enum : uint { PAN_SERIF_EXAGGERATED = 9 } +enum : uint { PAN_SERIF_TRIANGLE = 10 } +enum : uint { PAN_SERIF_NORMAL_SANS = 11 } +enum : uint { PAN_SERIF_OBTUSE_SANS = 12 } +enum : uint { PAN_SERIF_PERP_SANS = 13 } +enum : uint { PAN_SERIF_FLARED = 14 } +enum : uint { PAN_SERIF_ROUNDED = 15 } + +enum : uint { PAN_WEIGHT_VERY_LIGHT = 2 } +enum : uint { PAN_WEIGHT_LIGHT = 3 } +enum : uint { PAN_WEIGHT_THIN = 4 } +enum : uint { PAN_WEIGHT_BOOK = 5 } +enum : uint { PAN_WEIGHT_MEDIUM = 6 } +enum : uint { PAN_WEIGHT_DEMI = 7 } +enum : uint { PAN_WEIGHT_BOLD = 8 } +enum : uint { PAN_WEIGHT_HEAVY = 9 } +enum : uint { PAN_WEIGHT_BLACK = 10 } +enum : uint { PAN_WEIGHT_NORD = 11 } + +enum : uint { PAN_PROP_OLD_STYLE = 2 } +enum : uint { PAN_PROP_MODERN = 3 } +enum : uint { PAN_PROP_EVEN_WIDTH = 4 } +enum : uint { PAN_PROP_EXPANDED = 5 } +enum : uint { PAN_PROP_CONDENSED = 6 } +enum : uint { PAN_PROP_VERY_EXPANDED = 7 } +enum : uint { PAN_PROP_VERY_CONDENSED = 8 } +enum : uint { PAN_PROP_MONOSPACED = 9 } + +enum : uint { PAN_CONTRAST_NONE = 2 } +enum : uint { PAN_CONTRAST_VERY_LOW = 3 } +enum : uint { PAN_CONTRAST_LOW = 4 } +enum : uint { PAN_CONTRAST_MEDIUM_LOW = 5 } +enum : uint { PAN_CONTRAST_MEDIUM = 6 } +enum : uint { PAN_CONTRAST_MEDIUM_HIGH = 7 } +enum : uint { PAN_CONTRAST_HIGH = 8 } +enum : uint { PAN_CONTRAST_VERY_HIGH = 9 } + +enum : uint { PAN_STROKE_GRADUAL_DIAG = 2 } +enum : uint { PAN_STROKE_GRADUAL_TRAN = 3 } +enum : uint { PAN_STROKE_GRADUAL_VERT = 4 } +enum : uint { PAN_STROKE_GRADUAL_HORZ = 5 } +enum : uint { PAN_STROKE_RAPID_VERT = 6 } +enum : uint { PAN_STROKE_RAPID_HORZ = 7 } +enum : uint { PAN_STROKE_INSTANT_VERT = 8 } + +enum : uint { PAN_STRAIGHT_ARMS_HORZ = 2 } +enum : uint { PAN_STRAIGHT_ARMS_WEDGE = 3 } +enum : uint { PAN_STRAIGHT_ARMS_VERT = 4 } +enum : uint { PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5 } +enum : uint { PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6 } +enum : uint { PAN_BENT_ARMS_HORZ = 7 } +enum : uint { PAN_BENT_ARMS_WEDGE = 8 } +enum : uint { PAN_BENT_ARMS_VERT = 9 } +enum : uint { PAN_BENT_ARMS_SINGLE_SERIF = 10 } +enum : uint { PAN_BENT_ARMS_DOUBLE_SERIF = 11 } + +enum : uint { PAN_LETT_NORMAL_CONTACT = 2 } +enum : uint { PAN_LETT_NORMAL_WEIGHTED = 3 } +enum : uint { PAN_LETT_NORMAL_BOXED = 4 } +enum : uint { PAN_LETT_NORMAL_FLATTENED = 5 } +enum : uint { PAN_LETT_NORMAL_ROUNDED = 6 } +enum : uint { PAN_LETT_NORMAL_OFF_CENTER = 7 } +enum : uint { PAN_LETT_NORMAL_SQUARE = 8 } +enum : uint { PAN_LETT_OBLIQUE_CONTACT = 9 } +enum : uint { PAN_LETT_OBLIQUE_WEIGHTED = 10 } +enum : uint { PAN_LETT_OBLIQUE_BOXED = 11 } +enum : uint { PAN_LETT_OBLIQUE_FLATTENED = 12 } +enum : uint { PAN_LETT_OBLIQUE_ROUNDED = 13 } +enum : uint { PAN_LETT_OBLIQUE_OFF_CENTER = 14 } +enum : uint { PAN_LETT_OBLIQUE_SQUARE = 15 } + +enum : uint { PAN_MIDLINE_STANDARD_TRIMMED = 2 } +enum : uint { PAN_MIDLINE_STANDARD_POINTED = 3 } +enum : uint { PAN_MIDLINE_STANDARD_SERIFED = 4 } +enum : uint { PAN_MIDLINE_HIGH_TRIMMED = 5 } +enum : uint { PAN_MIDLINE_HIGH_POINTED = 6 } +enum : uint { PAN_MIDLINE_HIGH_SERIFED = 7 } +enum : uint { PAN_MIDLINE_CONSTANT_TRIMMED = 8 } +enum : uint { PAN_MIDLINE_CONSTANT_POINTED = 9 } +enum : uint { PAN_MIDLINE_CONSTANT_SERIFED = 10 } +enum : uint { PAN_MIDLINE_LOW_TRIMMED = 11 } +enum : uint { PAN_MIDLINE_LOW_POINTED = 12 } +enum : uint { PAN_MIDLINE_LOW_SERIFED = 13 } + +enum : uint { PAN_XHEIGHT_CONSTANT_SMALL = 2 } +enum : uint { PAN_XHEIGHT_CONSTANT_STD = 3 } +enum : uint { PAN_XHEIGHT_CONSTANT_LARGE = 4 } +enum : uint { PAN_XHEIGHT_DUCKING_SMALL = 5 } +enum : uint { PAN_XHEIGHT_DUCKING_STD = 6 } +enum : uint { PAN_XHEIGHT_DUCKING_LARGE = 7 } + +enum : uint { ELF_VENDOR_SIZE = 4 } + +struct tagEXTLOGFONTA { + LOGFONTA elfLogFont; + BYTE elfFullName[LF_FULLFACESIZE]; + BYTE elfStyle[LF_FACESIZE]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; + PANOSE elfPanose; +} +alias tagEXTLOGFONTA EXTLOGFONTA; +alias tagEXTLOGFONTA* PEXTLOGFONTA; +alias tagEXTLOGFONTA* NPEXTLOGFONTA; +alias tagEXTLOGFONTA* LPEXTLOGFONTA; + +struct tagEXTLOGFONTW { + LOGFONTW elfLogFont; + WCHAR elfFullName[LF_FULLFACESIZE]; + WCHAR elfStyle[LF_FACESIZE]; + DWORD elfVersion; + DWORD elfStyleSize; + DWORD elfMatch; + DWORD elfReserved; + BYTE elfVendorId[ELF_VENDOR_SIZE]; + DWORD elfCulture; + PANOSE elfPanose; +} +alias tagEXTLOGFONTW EXTLOGFONTW; +alias tagEXTLOGFONTW* PEXTLOGFONTW; +alias tagEXTLOGFONTW* NPEXTLOGFONTW; +alias tagEXTLOGFONTW* LPEXTLOGFONTW; + +// #ifdef UNICODE +alias EXTLOGFONTW EXTLOGFONT; +alias PEXTLOGFONTW PEXTLOGFONT; +alias NPEXTLOGFONTW NPEXTLOGFONT; +alias LPEXTLOGFONTW LPEXTLOGFONT; +// #else +// ... +// #endif // UNICODE + +enum : uint { ELF_VERSION = 0 } +enum : uint { ELF_CULTURE_LATIN = 0 } + +enum : uint { RASTER_FONTTYPE = 0x0001 } +enum : uint { DEVICE_FONTTYPE = 0x002 } +enum : uint { TRUETYPE_FONTTYPE = 0x004 } + +COLORREF RGB(BYTE r, BYTE g, BYTE b){ return r|(g <<8)|(b << 16); } +COLORREF PALETTERGB(BYTE r, BYTE g, BYTE b){ return (0x02000000 | RGB(r,g,b)); } +COLORREF PALETTEINDEX(WORD i){ return (cast(COLORREF)(0x01000000 | cast(DWORD)cast(WORD)(i))); } + +enum : uint { PC_RESERVED = 0x01 } +enum : uint { PC_EXPLICIT = 0x02 } +enum : uint { PC_NOCOLLAPSE = 0x04 } + +BYTE GetRValue(COLORREF rgb){ return cast(BYTE)rgb; } +BYTE GetGValue(COLORREF rgb){ return cast(BYTE)(rgb >>> 8); } +BYTE GetBValue(COLORREF rgb){ return cast(BYTE)(rgb >>> 16); } + +enum : uint { TRANSPARENT = 1 } +enum : uint { OPAQUE = 2 } +enum : uint { BKMODE_LAST = 2 } + +enum : uint { GM_COMPATIBLE = 1 } +enum : uint { GM_ADVANCED = 2 } +enum : uint { GM_LAST = 2 } + +enum : uint { PT_CLOSEFIGURE = 0x01 } +enum : uint { PT_LINETO = 0x02 } +enum : uint { PT_BEZIERTO = 0x04 } +enum : uint { PT_MOVETO = 0x06 } + +enum : uint { MM_TEXT = 1 } +enum : uint { MM_LOMETRIC = 2 } +enum : uint { MM_HIMETRIC = 3 } +enum : uint { MM_LOENGLISH = 4 } +enum : uint { MM_HIENGLISH = 5 } +enum : uint { MM_TWIPS = 6 } +enum : uint { MM_ISOTROPIC = 7 } +enum : uint { MM_ANISOTROPIC = 8 } + +alias MM_TEXT MM_MIN; +alias MM_ANISOTROPIC MM_MAX; +alias MM_TWIPS MM_MAX_FIXEDSCALE; + +enum : uint { ABSOLUTE = 1 } +enum : uint { RELATIVE = 2 } + +enum : uint { WHITE_BRUSH = 0 } +enum : uint { LTGRAY_BRUSH = 1 } +enum : uint { GRAY_BRUSH = 2 } +enum : uint { DKGRAY_BRUSH = 3 } +enum : uint { BLACK_BRUSH = 4 } +enum : uint { NULL_BRUSH = 5 } +alias NULL_BRUSH HOLLOW_BRUSH; +enum : uint { WHITE_PEN = 6 } +enum : uint { BLACK_PEN = 7 } +enum : uint { NULL_PEN = 8 } +enum : uint { OEM_FIXED_FONT = 10 } +enum : uint { ANSI_FIXED_FONT = 11 } +enum : uint { ANSI_VAR_FONT = 12 } +enum : uint { SYSTEM_FONT = 13 } +enum : uint { DEVICE_DEFAULT_FONT = 14 } +enum : uint { DEFAULT_PALETTE = 15 } +enum : uint { SYSTEM_FIXED_FONT = 16 } + +// #if(WINVER >= 0x0400) +enum : uint { DEFAULT_GUI_FONT = 17 } +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { DC_BRUSH = 18 } +enum : uint { DC_PEN = 19 } +// #endif + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { STOCK_LAST = 19 } +// #elif (WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +enum : uint { CLR_INVALID = 0xFFFFFFFF } + +enum : uint { BS_SOLID = 0 } +enum : uint { BS_NULL = 1 } +alias BS_NULL BS_HOLLOW; +enum : uint { BS_HATCHED = 2 } +enum : uint { BS_PATTERN = 3 } +enum : uint { BS_INDEXED = 4 } +enum : uint { BS_DIBPATTERN = 5 } +enum : uint { BS_DIBPATTERNPT = 6 } +enum : uint { BS_PATTERN8X8 = 7 } +enum : uint { BS_DIBPATTERN8X8 = 8 } +enum : uint { BS_MONOPATTERN = 9 } + +enum : uint { HS_HORIZONTAL = 0 } +enum : uint { HS_VERTICAL = 1 } +enum : uint { HS_FDIAGONAL = 2 } +enum : uint { HS_BDIAGONAL = 3 } +enum : uint { HS_CROSS = 4 } +enum : uint { HS_DIAGCROSS = 5 } + +enum : uint { PS_SOLID = 0 } +enum : uint { PS_DASH = 1 } +enum : uint { PS_DOT = 2 } +enum : uint { PS_DASHDOT = 3 } +enum : uint { PS_DASHDOTDOT = 4 } +enum : uint { PS_NULL = 5 } +enum : uint { PS_INSIDEFRAME = 6 } +enum : uint { PS_USERSTYLE = 7 } +enum : uint { PS_ALTERNATE = 8 } +enum : uint { PS_STYLE_MASK = 0x0000000F } + +enum : uint { PS_ENDCAP_ROUND = 0x00000000 } +enum : uint { PS_ENDCAP_SQUARE = 0x00000100 } +enum : uint { PS_ENDCAP_FLAT = 0x00000200 } +enum : uint { PS_ENDCAP_MASK = 0x00000F00 } + +enum : uint { PS_JOIN_ROUND = 0x00000000 } +enum : uint { PS_JOIN_BEVEL = 0x00001000 } +enum : uint { PS_JOIN_MITER = 0x00002000 } +enum : uint { PS_JOIN_MASK = 0x0000F000 } + +enum : uint { PS_COSMETIC = 0x00000000 } +enum : uint { PS_GEOMETRIC = 0x00010000 } +enum : uint { PS_TYPE_MASK = 0x000F0000 } + +enum : uint { AD_COUNTERCLOCKWISE = 1 } +enum : uint { AD_CLOCKWISE = 2 } + +enum : uint { DRIVERVERSION = 0 } +enum : uint { TECHNOLOGY = 2 } +enum : uint { HORZSIZE = 4 } +enum : uint { VERTSIZE = 6 } +enum : uint { HORZRES = 8 } +enum : uint { VERTRES = 10 } +enum : uint { BITSPIXEL = 12 } +enum : uint { PLANES = 14 } +enum : uint { NUMBRUSHES = 16 } +enum : uint { NUMPENS = 18 } +enum : uint { NUMMARKERS = 20 } +enum : uint { NUMFONTS = 22 } +enum : uint { NUMCOLORS = 24 } +enum : uint { PDEVICESIZE = 26 } +enum : uint { CURVECAPS = 28 } +enum : uint { LINECAPS = 30 } +enum : uint { POLYGONALCAPS = 32 } +enum : uint { TEXTCAPS = 34 } +enum : uint { CLIPCAPS = 36 } +enum : uint { RASTERCAPS = 38 } +enum : uint { ASPECTX = 40 } +enum : uint { ASPECTY = 42 } +enum : uint { ASPECTXY = 44 } + +enum : uint { LOGPIXELSX = 88 } +enum : uint { LOGPIXELSY = 90 } + +enum : uint { SIZEPALETTE = 104 } +enum : uint { NUMRESERVED = 106 } +enum : uint { COLORRES = 108 } + +enum : uint { PHYSICALWIDTH = 110 } +enum : uint { PHYSICALHEIGHT = 111 } +enum : uint { PHYSICALOFFSETX = 112 } +enum : uint { PHYSICALOFFSETY = 113 } +enum : uint { SCALINGFACTORX = 114 } +enum : uint { SCALINGFACTORY = 115 } + +enum : uint { VREFRESH = 116 } + +enum : uint { DESKTOPVERTRES = 117 } + +enum : uint { DESKTOPHORZRES = 118 } + +enum : uint { BLTALIGNMENT = 119 } + +// #if(WINVER >= 0x0500) +enum : uint { SHADEBLENDCAPS = 120 } +enum : uint { COLORMGMTCAPS = 121 } +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NOGDICAPMASKS + +enum : uint { DT_PLOTTER = 0 } +enum : uint { DT_RASDISPLAY = 1 } +enum : uint { DT_RASPRINTER = 2 } +enum : uint { DT_RASCAMERA = 3 } +enum : uint { DT_CHARSTREAM = 4 } +enum : uint { DT_METAFILE = 5 } +enum : uint { DT_DISPFILE = 6 } + +enum : uint { CC_NONE = 0 } +enum : uint { CC_CIRCLES = 1 } +enum : uint { CC_PIE = 2 } +enum : uint { CC_CHORD = 4 } +enum : uint { CC_ELLIPSES = 8 } +enum : uint { CC_WIDE = 16 } +enum : uint { CC_STYLED = 32 } +enum : uint { CC_WIDESTYLED = 64 } +enum : uint { CC_INTERIORS = 128 } +enum : uint { CC_ROUNDRECT = 256 } + +enum : uint { LC_NONE = 0 } +enum : uint { LC_POLYLINE = 2 } +enum : uint { LC_MARKER = 4 } +enum : uint { LC_POLYMARKER = 8 } +enum : uint { LC_WIDE = 16 } +enum : uint { LC_STYLED = 32 } +enum : uint { LC_WIDESTYLED = 64 } +enum : uint { LC_INTERIORS = 128 } + +enum : uint { PC_NONE = 0 } +enum : uint { PC_POLYGON = 1 } +enum : uint { PC_RECTANGLE = 2 } +enum : uint { PC_WINDPOLYGON = 4 } +enum : uint { PC_TRAPEZOID = 4 } +enum : uint { PC_SCANLINE = 8 } +enum : uint { PC_WIDE = 16 } +enum : uint { PC_STYLED = 32 } +enum : uint { PC_WIDESTYLED = 64 } +enum : uint { PC_INTERIORS = 128 } +enum : uint { PC_POLYPOLYGON = 256 } +enum : uint { PC_PATHS = 512 } + +enum : uint { CP_NONE = 0 } +enum : uint { CP_RECTANGLE = 1 } +enum : uint { CP_REGION = 2 } + +enum : uint { TC_OP_CHARACTER = 0x00000001 } +enum : uint { TC_OP_STROKE = 0x00000002 } +enum : uint { TC_CP_STROKE = 0x00000004 } +enum : uint { TC_CR_90 = 0x00000008 } +enum : uint { TC_CR_ANY = 0x00000010 } +enum : uint { TC_SF_X_YINDEP = 0x00000020 } +enum : uint { TC_SA_DOUBLE = 0x00000040 } +enum : uint { TC_SA_INTEGER = 0x00000080 } +enum : uint { TC_SA_CONTIN = 0x00000100 } +enum : uint { TC_EA_DOUBLE = 0x00000200 } +enum : uint { TC_IA_ABLE = 0x00000400 } +enum : uint { TC_UA_ABLE = 0x00000800 } +enum : uint { TC_SO_ABLE = 0x00001000 } +enum : uint { TC_RA_ABLE = 0x00002000 } +enum : uint { TC_VA_ABLE = 0x00004000 } +enum : uint { TC_RESERVED = 0x00008000 } +enum : uint { TC_SCROLLBLT = 0x00010000 } + +// #endif /* NOGDICAPMASKS */ + +// #define RC_NONE +enum : uint { RC_BITBLT = 1 } +enum : uint { RC_BANDING = 2 } +enum : uint { RC_SCALING = 4 } +enum : uint { RC_BITMAP64 = 8 } +enum : uint { RC_GDI20_OUTPUT = 0x0010 } +enum : uint { RC_GDI20_STATE = 0x0020 } +enum : uint { RC_SAVEBITMAP = 0x0040 } +enum : uint { RC_DI_BITMAP = 0x0080 } +enum : uint { RC_PALETTE = 0x0100 } +enum : uint { RC_DIBTODEV = 0x0200 } +enum : uint { RC_BIGFONT = 0x0400 } +enum : uint { RC_STRETCHBLT = 0x0800 } +enum : uint { RC_FLOODFILL = 0x1000 } +enum : uint { RC_STRETCHDIB = 0x2000 } +enum : uint { RC_OP_DX_OUTPUT = 0x4000 } +enum : uint { RC_DEVBITS = 0x8000 } + +// #if(WINVER >= 0x0500) + +enum : uint { SB_NONE = 0x00000000 } +enum : uint { SB_CONST_ALPHA = 0x00000001 } +enum : uint { SB_PIXEL_ALPHA = 0x00000002 } +enum : uint { SB_PREMULT_ALPHA = 0x00000004 } + +enum : uint { SB_GRAD_RECT = 0x00000010 } +enum : uint { SB_GRAD_TRI = 0x00000020 } + +enum : uint { CM_NONE = 0x00000000 } +enum : uint { CM_DEVICE_ICM = 0x00000001 } +enum : uint { CM_GAMMA_RAMP = 0x00000002 } +enum : uint { CM_CMYK_COLOR = 0x00000004 } + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { DIB_RGB_COLORS = 0 } +enum : uint { DIB_PAL_COLORS = 1 } + +enum : uint { SYSPAL_ERROR = 0 } +enum : uint { SYSPAL_STATIC = 1 } +enum : uint { SYSPAL_NOSTATIC = 2 } +enum : uint { SYSPAL_NOSTATIC256 = 3 } + +enum : uint { CBM_INIT = 0x04 } + +enum : uint { FLOODFILLBORDER = 0 } +enum : uint { FLOODFILLSURFACE = 1 } + +enum : uint { CCHDEVICENAME = 32 } + +enum : uint { CCHFORMNAME = 32 } + +struct _devicemodeA { + BYTE dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; +union { +struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; +} + + POINTL dmPosition; +} + + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + BYTE dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; +union { + DWORD dmDisplayFlags; + DWORD dmNup; +} + + DWORD dmDisplayFrequency; +// #if(WINVER >= 0x0400) + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; +// #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) + DWORD dmPanningWidth; + DWORD dmPanningHeight; +// #endif +// #endif /* WINVER >= 0x0400 */ +} +alias _devicemodeA DEVMODEA; +alias _devicemodeA* PDEVMODEA; +alias _devicemodeA* NPDEVMODEA; +alias _devicemodeA* LPDEVMODEA; + +struct _devicemodeW { + WCHAR dmDeviceName[CCHDEVICENAME]; + WORD dmSpecVersion; + WORD dmDriverVersion; + WORD dmSize; + WORD dmDriverExtra; + DWORD dmFields; +union { +struct { + short dmOrientation; + short dmPaperSize; + short dmPaperLength; + short dmPaperWidth; +} + + POINTL dmPosition; +} + + short dmScale; + short dmCopies; + short dmDefaultSource; + short dmPrintQuality; + short dmColor; + short dmDuplex; + short dmYResolution; + short dmTTOption; + short dmCollate; + WCHAR dmFormName[CCHFORMNAME]; + WORD dmLogPixels; + DWORD dmBitsPerPel; + DWORD dmPelsWidth; + DWORD dmPelsHeight; +union { + DWORD dmDisplayFlags; + DWORD dmNup; +} + + DWORD dmDisplayFrequency; +// #if(WINVER >= 0x0400) + DWORD dmICMMethod; + DWORD dmICMIntent; + DWORD dmMediaType; + DWORD dmDitherType; + DWORD dmReserved1; + DWORD dmReserved2; +// #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) + DWORD dmPanningWidth; + DWORD dmPanningHeight; +// #endif +// #endif /* WINVER >= 0x0400 */ +} +alias _devicemodeW DEVMODEW; +alias _devicemodeW* PDEVMODEW; +alias _devicemodeW* NPDEVMODEW; +alias _devicemodeW* LPDEVMODEW; + +// #ifdef UNICODE +alias DEVMODEW DEVMODE; +alias PDEVMODEW PDEVMODE; +alias NPDEVMODEW NPDEVMODE; +alias LPDEVMODEW LPDEVMODE; +// #else +// ... +// #endif // UNICODE + +// #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) +enum : uint { DM_SPECVERSION = 0x0401 } +// #elif (WINVER >= 0x0400) +// #... +// #else +// #... +// #endif /* WINVER */ + +enum : uint { DM_ORIENTATION = 0x00000001 } +enum : uint { DM_PAPERSIZE = 0x00000002 } +enum : uint { DM_PAPERLENGTH = 0x00000004 } +enum : uint { DM_PAPERWIDTH = 0x00000008 } +enum : uint { DM_SCALE = 0x00000010 } +// #if(WINVER >= 0x0500) +enum : uint { DM_POSITION = 0x00000020 } +enum : uint { DM_NUP = 0x00000040 } +// #endif /* WINVER >= 0x0500 */ +enum : uint { DM_COPIES = 0x00000100 } +enum : uint { DM_DEFAULTSOURCE = 0x00000200 } +enum : uint { DM_PRINTQUALITY = 0x00000400 } +enum : uint { DM_COLOR = 0x00000800 } +enum : uint { DM_DUPLEX = 0x00001000 } +enum : uint { DM_YRESOLUTION = 0x00002000 } +enum : uint { DM_TTOPTION = 0x00004000 } +enum : uint { DM_COLLATE = 0x00008000 } +enum : uint { DM_FORMNAME = 0x00010000 } +enum : uint { DM_LOGPIXELS = 0x00020000 } +enum : uint { DM_BITSPERPEL = 0x00040000 } +enum : uint { DM_PELSWIDTH = 0x00080000 } +enum : uint { DM_PELSHEIGHT = 0x00100000 } +enum : uint { DM_DISPLAYFLAGS = 0x00200000 } +enum : uint { DM_DISPLAYFREQUENCY = 0x00400000 } +// #if(WINVER >= 0x0400) +enum : uint { DM_ICMMETHOD = 0x00800000 } +enum : uint { DM_ICMINTENT = 0x01000000 } +enum : uint { DM_MEDIATYPE = 0x02000000 } +enum : uint { DM_DITHERTYPE = 0x04000000 } +enum : uint { DM_PANNINGWIDTH = 0x08000000 } +enum : uint { DM_PANNINGHEIGHT = 0x10000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { DMORIENT_PORTRAIT = 1 } +enum : uint { DMORIENT_LANDSCAPE = 2 } + +enum { DMPAPER_FIRST = 1 } +enum : uint { DMPAPER_LETTER = 1 } +enum : uint { DMPAPER_LETTERSMALL = 2 } +enum : uint { DMPAPER_TABLOID = 3 } +enum : uint { DMPAPER_LEDGER = 4 } +enum : uint { DMPAPER_LEGAL = 5 } +enum : uint { DMPAPER_STATEMENT = 6 } +enum : uint { DMPAPER_EXECUTIVE = 7 } +enum : uint { DMPAPER_A3 = 8 } +enum : uint { DMPAPER_A4 = 9 } +enum : uint { DMPAPER_A4SMALL = 10 } +enum : uint { DMPAPER_A5 = 11 } +enum : uint { DMPAPER_B4 = 12 } +enum : uint { DMPAPER_B5 = 13 } +enum : uint { DMPAPER_FOLIO = 14 } +enum : uint { DMPAPER_QUARTO = 15 } +enum : uint { DMPAPER_10X14 = 16 } +enum : uint { DMPAPER_11X17 = 17 } +enum : uint { DMPAPER_NOTE = 18 } +enum : uint { DMPAPER_ENV_9 = 19 } +enum : uint { DMPAPER_ENV_10 = 20 } +enum : uint { DMPAPER_ENV_11 = 21 } +enum : uint { DMPAPER_ENV_12 = 22 } +enum : uint { DMPAPER_ENV_14 = 23 } +enum : uint { DMPAPER_CSHEET = 24 } +enum : uint { DMPAPER_DSHEET = 25 } +enum : uint { DMPAPER_ESHEET = 26 } +enum : uint { DMPAPER_ENV_DL = 27 } +enum : uint { DMPAPER_ENV_C5 = 28 } +enum : uint { DMPAPER_ENV_C3 = 29 } +enum : uint { DMPAPER_ENV_C4 = 30 } +enum : uint { DMPAPER_ENV_C6 = 31 } +enum : uint { DMPAPER_ENV_C65 = 32 } +enum : uint { DMPAPER_ENV_B4 = 33 } +enum : uint { DMPAPER_ENV_B5 = 34 } +enum : uint { DMPAPER_ENV_B6 = 35 } +enum : uint { DMPAPER_ENV_ITALY = 36 } +enum : uint { DMPAPER_ENV_MONARCH = 37 } +enum : uint { DMPAPER_ENV_PERSONAL = 38 } +enum : uint { DMPAPER_FANFOLD_US = 39 } +enum : uint { DMPAPER_FANFOLD_STD_GERMAN = 40 } +enum : uint { DMPAPER_FANFOLD_LGL_GERMAN = 41 } +// #if(WINVER >= 0x0400) +enum : uint { DMPAPER_ISO_B4 = 42 } +enum : uint { DMPAPER_JAPANESE_POSTCARD = 43 } +enum : uint { DMPAPER_9X11 = 44 } +enum : uint { DMPAPER_10X11 = 45 } +enum : uint { DMPAPER_15X11 = 46 } +enum : uint { DMPAPER_ENV_INVITE = 47 } +enum : uint { DMPAPER_RESERVED_48 = 48 } +enum : uint { DMPAPER_RESERVED_49 = 49 } +enum : uint { DMPAPER_LETTER_EXTRA = 50 } +enum : uint { DMPAPER_LEGAL_EXTRA = 51 } +enum : uint { DMPAPER_TABLOID_EXTRA = 52 } +enum : uint { DMPAPER_A4_EXTRA = 53 } +enum : uint { DMPAPER_LETTER_TRANSVERSE = 54 } +enum : uint { DMPAPER_A4_TRANSVERSE = 55 } +enum : uint { DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 } +enum : uint { DMPAPER_A_PLUS = 57 } +enum : uint { DMPAPER_B_PLUS = 58 } +enum : uint { DMPAPER_LETTER_PLUS = 59 } +enum : uint { DMPAPER_A4_PLUS = 60 } +enum : uint { DMPAPER_A5_TRANSVERSE = 61 } +enum : uint { DMPAPER_B5_TRANSVERSE = 62 } +enum : uint { DMPAPER_A3_EXTRA = 63 } +enum : uint { DMPAPER_A5_EXTRA = 64 } +enum : uint { DMPAPER_B5_EXTRA = 65 } +enum : uint { DMPAPER_A2 = 66 } +enum : uint { DMPAPER_A3_TRANSVERSE = 67 } +enum : uint { DMPAPER_A3_EXTRA_TRANSVERSE = 68 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { DMPAPER_DBL_JAPANESE_POSTCARD = 69 } +enum : uint { DMPAPER_A6 = 70 } +enum : uint { DMPAPER_JENV_KAKU2 = 71 } +enum : uint { DMPAPER_JENV_KAKU3 = 72 } +enum : uint { DMPAPER_JENV_CHOU3 = 73 } +enum : uint { DMPAPER_JENV_CHOU4 = 74 } +enum : uint { DMPAPER_LETTER_ROTATED = 75 } +enum : uint { DMPAPER_A3_ROTATED = 76 } +enum : uint { DMPAPER_A4_ROTATED = 77 } +enum : uint { DMPAPER_A5_ROTATED = 78 } +enum : uint { DMPAPER_B4_JIS_ROTATED = 79 } +enum : uint { DMPAPER_B5_JIS_ROTATED = 80 } +enum : uint { DMPAPER_JAPANESE_POSTCARD_ROTATED = 81 } +enum : uint { DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82 } +enum : uint { DMPAPER_A6_ROTATED = 83 } +enum : uint { DMPAPER_JENV_KAKU2_ROTATED = 84 } +enum : uint { DMPAPER_JENV_KAKU3_ROTATED = 85 } +enum : uint { DMPAPER_JENV_CHOU3_ROTATED = 86 } +enum : uint { DMPAPER_JENV_CHOU4_ROTATED = 87 } +enum : uint { DMPAPER_B6_JIS = 88 } +enum : uint { DMPAPER_B6_JIS_ROTATED = 89 } +enum : uint { DMPAPER_12X11 = 90 } +enum : uint { DMPAPER_JENV_YOU4 = 91 } +enum : uint { DMPAPER_JENV_YOU4_ROTATED = 92 } +enum : uint { DMPAPER_P16K = 93 } +enum : uint { DMPAPER_P32K = 94 } +enum : uint { DMPAPER_P32KBIG = 95 } +enum : uint { DMPAPER_PENV_1 = 96 } +enum : uint { DMPAPER_PENV_2 = 97 } +enum : uint { DMPAPER_PENV_3 = 98 } +enum : uint { DMPAPER_PENV_4 = 99 } +enum : uint { DMPAPER_PENV_5 = 100 } +enum : uint { DMPAPER_PENV_6 = 101 } +enum : uint { DMPAPER_PENV_7 = 102 } +enum : uint { DMPAPER_PENV_8 = 103 } +enum : uint { DMPAPER_PENV_9 = 104 } +enum : uint { DMPAPER_PENV_10 = 105 } +enum : uint { DMPAPER_P16K_ROTATED = 106 } +enum : uint { DMPAPER_P32K_ROTATED = 107 } +enum : uint { DMPAPER_P32KBIG_ROTATED = 108 } +enum : uint { DMPAPER_PENV_1_ROTATED = 109 } +enum : uint { DMPAPER_PENV_2_ROTATED = 110 } +enum : uint { DMPAPER_PENV_3_ROTATED = 111 } +enum : uint { DMPAPER_PENV_4_ROTATED = 112 } +enum : uint { DMPAPER_PENV_5_ROTATED = 113 } +enum : uint { DMPAPER_PENV_6_ROTATED = 114 } +enum : uint { DMPAPER_PENV_7_ROTATED = 115 } +enum : uint { DMPAPER_PENV_8_ROTATED = 116 } +enum : uint { DMPAPER_PENV_9_ROTATED = 117 } +enum : uint { DMPAPER_PENV_10_ROTATED = 118 } +// #endif /* WINVER >= 0x0500 */ + +// #if (WINVER >= 0x0500) +alias DMPAPER_PENV_10_ROTATED DMPAPER_LAST; +// #elif (WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +enum : uint { DMPAPER_USER = 256 } + +enum { DMBIN_FIRST = 1 } +enum : uint { DMBIN_UPPER = 1 } +enum : uint { DMBIN_ONLYONE = 1 } +enum : uint { DMBIN_LOWER = 2 } +enum : uint { DMBIN_MIDDLE = 3 } +enum : uint { DMBIN_MANUAL = 4 } +enum : uint { DMBIN_ENVELOPE = 5 } +enum : uint { DMBIN_ENVMANUAL = 6 } +enum : uint { DMBIN_AUTO = 7 } +enum : uint { DMBIN_TRACTOR = 8 } +enum : uint { DMBIN_SMALLFMT = 9 } +enum : uint { DMBIN_LARGEFMT = 10 } +enum : uint { DMBIN_LARGECAPACITY = 11 } +enum : uint { DMBIN_CASSETTE = 14 } +enum : uint { DMBIN_FORMSOURCE = 15 } +alias DMBIN_FORMSOURCE DMBIN_LAST; + +enum : uint { DMBIN_USER = 256 } + +enum { DMRES_DRAFT = -1 } +enum { DMRES_LOW = -2 } +enum { DMRES_MEDIUM = -3 } +enum { DMRES_HIGH = -4 } + +enum : uint { DMCOLOR_MONOCHROME = 1 } +enum : uint { DMCOLOR_COLOR = 2 } + +enum : uint { DMDUP_SIMPLEX = 1 } +enum : uint { DMDUP_VERTICAL = 2 } +enum : uint { DMDUP_HORIZONTAL = 3 } + +enum : uint { DMTT_BITMAP = 1 } +enum : uint { DMTT_DOWNLOAD = 2 } +enum : uint { DMTT_SUBDEV = 3 } +// #if(WINVER >= 0x0400) +enum : uint { DMTT_DOWNLOAD_OUTLINE = 4 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { DMCOLLATE_FALSE = 0 } +enum : uint { DMCOLLATE_TRUE = 1 } + +enum : uint { DMDISPLAYFLAGS_TEXTMODE = 0x00000004 } + +enum : uint { DMNUP_SYSTEM = 1 } +enum : uint { DMNUP_ONEUP = 2 } + +// #if(WINVER >= 0x0400) + +enum : uint { DMICMMETHOD_NONE = 1 } +enum : uint { DMICMMETHOD_SYSTEM = 2 } +enum : uint { DMICMMETHOD_DRIVER = 3 } +enum : uint { DMICMMETHOD_DEVICE = 4 } + +enum : uint { DMICMMETHOD_USER = 256 } + +enum : uint { DMICM_SATURATE = 1 } +enum : uint { DMICM_CONTRAST = 2 } +enum : uint { DMICM_COLORIMETRIC = 3 } +enum : uint { DMICM_ABS_COLORIMETRIC = 4 } + +enum : uint { DMICM_USER = 256 } + +enum : uint { DMMEDIA_STANDARD = 1 } +enum : uint { DMMEDIA_TRANSPARENCY = 2 } +enum : uint { DMMEDIA_GLOSSY = 3 } + +enum : uint { DMMEDIA_USER = 256 } + +enum : uint { DMDITHER_NONE = 1 } +enum : uint { DMDITHER_COARSE = 2 } +enum : uint { DMDITHER_FINE = 3 } +enum : uint { DMDITHER_LINEART = 4 } +enum : uint { DMDITHER_ERRORDIFFUSION = 5 } +enum : uint { DMDITHER_RESERVED6 = 6 } +enum : uint { DMDITHER_RESERVED7 = 7 } +enum : uint { DMDITHER_RESERVED8 = 8 } +enum : uint { DMDITHER_RESERVED9 = 9 } +enum : uint { DMDITHER_GRAYSCALE = 10 } + +enum : uint { DMDITHER_USER = 256 } +// #endif /* WINVER >= 0x0400 */ + +struct _DISPLAY_DEVICEA { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD StateFlags; + CHAR DeviceID[128]; + CHAR DeviceKey[128]; +} +alias _DISPLAY_DEVICEA DISPLAY_DEVICEA; +alias _DISPLAY_DEVICEA* PDISPLAY_DEVICEA; +alias _DISPLAY_DEVICEA* LPDISPLAY_DEVICEA; + +struct _DISPLAY_DEVICEW { + DWORD cb; + WCHAR DeviceName[32]; + WCHAR DeviceString[128]; + DWORD StateFlags; + WCHAR DeviceID[128]; + WCHAR DeviceKey[128]; +} +alias _DISPLAY_DEVICEW DISPLAY_DEVICEW; +alias _DISPLAY_DEVICEW* PDISPLAY_DEVICEW; +alias _DISPLAY_DEVICEW* LPDISPLAY_DEVICEW; + +// #ifdef UNICODE +alias DISPLAY_DEVICEW DISPLAY_DEVICE; +alias PDISPLAY_DEVICEW PDISPLAY_DEVICE; +alias LPDISPLAY_DEVICEW LPDISPLAY_DEVICE; +// #else +// ... +// #endif // UNICODE + +enum : uint { DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 0x00000001 } +enum : uint { DISPLAY_DEVICE_MULTI_DRIVER = 0x00000002 } +enum : uint { DISPLAY_DEVICE_PRIMARY_DEVICE = 0x00000004 } +enum : uint { DISPLAY_DEVICE_MIRRORING_DRIVER = 0x00000008 } +enum : uint { DISPLAY_DEVICE_VGA_COMPATIBLE = 0x00000010 } +enum : uint { DISPLAY_DEVICE_REMOVABLE = 0x00000020 } +enum : uint { DISPLAY_DEVICE_MODESPRUNED = 0x08000000 } +enum : uint { DISPLAY_DEVICE_REMOTE = 0x04000000 } +enum : uint { DISPLAY_DEVICE_DISCONNECT = 0x02000000 } + +enum : uint { DISPLAY_DEVICE_ACTIVE = 0x00000001 } +enum : uint { DISPLAY_DEVICE_ATTACHED = 0x00000002 } + +enum : uint { RDH_RECTANGLES = 1 } + +struct _RGNDATAHEADER { + DWORD dwSize; + DWORD iType; + DWORD nCount; + DWORD nRgnSize; + RECT rcBound; +} +alias _RGNDATAHEADER RGNDATAHEADER; +alias _RGNDATAHEADER* PRGNDATAHEADER; + +struct _RGNDATA { + RGNDATAHEADER rdh; + char Buffer[1]; +} +alias _RGNDATA RGNDATA; +alias _RGNDATA* PRGNDATA; +alias _RGNDATA* NPRGNDATA; +alias _RGNDATA* LPRGNDATA; + +enum : uint { SYSRGN = 4 } + +struct _ABC { + int abcA; + UINT abcB; + int abcC; +} +alias _ABC ABC; +alias _ABC* PABC; +alias _ABC* NPABC; +alias _ABC* LPABC; + +struct _ABCFLOAT { + FLOAT abcfA; + FLOAT abcfB; + FLOAT abcfC; +} +alias _ABCFLOAT ABCFLOAT; +alias _ABCFLOAT* PABCFLOAT; +alias _ABCFLOAT* NPABCFLOAT; +alias _ABCFLOAT* LPABCFLOAT; + +// #ifndef NOTEXTMETRIC + +// #ifdef _MAC +// #... +// #endif +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 OUTLINETEXTMETRICA; +alias _OUTLINETEXTMETRICA* POUTLINETEXTMETRICA; +alias _OUTLINETEXTMETRICA* NPOUTLINETEXTMETRICA; +alias _OUTLINETEXTMETRICA* 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 OUTLINETEXTMETRICW; +alias _OUTLINETEXTMETRICW* POUTLINETEXTMETRICW; +alias _OUTLINETEXTMETRICW* NPOUTLINETEXTMETRICW; +alias _OUTLINETEXTMETRICW* LPOUTLINETEXTMETRICW; + +// #ifdef UNICODE +alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC; +alias POUTLINETEXTMETRICW POUTLINETEXTMETRIC; +alias NPOUTLINETEXTMETRICW NPOUTLINETEXTMETRIC; +alias LPOUTLINETEXTMETRICW LPOUTLINETEXTMETRIC; +// #else +// ... +// #endif // UNICODE + +// #ifdef _MAC +// #... +// #endif + +// #endif /* NOTEXTMETRIC */ + +struct tagPOLYTEXTA { + int x; + int y; + UINT n; + LPCSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} +alias tagPOLYTEXTA POLYTEXTA; +alias tagPOLYTEXTA* PPOLYTEXTA; +alias tagPOLYTEXTA* NPPOLYTEXTA; +alias tagPOLYTEXTA* LPPOLYTEXTA; + +struct tagPOLYTEXTW { + int x; + int y; + UINT n; + LPCWSTR lpstr; + UINT uiFlags; + RECT rcl; + int *pdx; +} +alias tagPOLYTEXTW POLYTEXTW; +alias tagPOLYTEXTW* PPOLYTEXTW; +alias tagPOLYTEXTW* NPPOLYTEXTW; +alias tagPOLYTEXTW* LPPOLYTEXTW; + +// #ifdef UNICODE +alias POLYTEXTW POLYTEXT; +alias PPOLYTEXTW PPOLYTEXT; +alias NPPOLYTEXTW NPPOLYTEXT; +alias LPPOLYTEXTW LPPOLYTEXT; +// #else +// ... +// #endif // UNICODE + +struct _FIXED { +// #ifndef _MAC + WORD fract; + short value; +// #else +// ... +// #endif +} +alias _FIXED FIXED; + +struct _MAT2 { + FIXED eM11; + FIXED eM12; + FIXED eM21; + FIXED eM22; +} +alias _MAT2 MAT2; +alias _MAT2* LPMAT2; + +struct _GLYPHMETRICS { + UINT gmBlackBoxX; + UINT gmBlackBoxY; + POINT gmptGlyphOrigin; + short gmCellIncX; + short gmCellIncY; +} +alias _GLYPHMETRICS GLYPHMETRICS; +alias _GLYPHMETRICS* LPGLYPHMETRICS; + +enum : uint { GGO_METRICS = 0 } +enum : uint { GGO_BITMAP = 1 } +enum : uint { GGO_NATIVE = 2 } +enum : uint { GGO_BEZIER = 3 } + +// #if(WINVER >= 0x0400) +enum : uint { GGO_GRAY2_BITMAP = 4 } +enum : uint { GGO_GRAY4_BITMAP = 5 } +enum : uint { GGO_GRAY8_BITMAP = 6 } +enum : uint { GGO_GLYPH_INDEX = 0x0080 } +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { GGO_UNHINTED = 0x0100 } +// #endif // (_WIN32_WINNT >= 0x0500) + +enum : uint { TT_POLYGON_TYPE = 24 } + +enum : uint { TT_PRIM_LINE = 1 } +enum : uint { TT_PRIM_QSPLINE = 2 } +enum : uint { TT_PRIM_CSPLINE = 3 } + +struct tagPOINTFX { + FIXED x; + FIXED y; +} +alias tagPOINTFX POINTFX; +alias tagPOINTFX* LPPOINTFX; + +struct tagTTPOLYCURVE { + WORD wType; + WORD cpfx; + POINTFX apfx[1]; +} +alias tagTTPOLYCURVE TTPOLYCURVE; +alias tagTTPOLYCURVE* LPTTPOLYCURVE; + +struct tagTTPOLYGONHEADER { + DWORD cb; + DWORD dwType; + POINTFX pfxStart; +} +alias tagTTPOLYGONHEADER TTPOLYGONHEADER; +alias tagTTPOLYGONHEADER* LPTTPOLYGONHEADER; + +// #if(WINVER >= 0x0400) +enum : uint { GCP_DBCS = 0x0001 } +enum : uint { GCP_REORDER = 0x0002 } +enum : uint { GCP_USEKERNING = 0x0008 } +enum : uint { GCP_GLYPHSHAPE = 0x0010 } +enum : uint { GCP_LIGATE = 0x0020 } + +enum : uint { GCP_DIACRITIC = 0x0100 } +enum : uint { GCP_KASHIDA = 0x0400 } +enum : uint { GCP_ERROR = 0x8000 } +enum : uint { FLI_MASK = 0x103B } + +enum : uint { GCP_JUSTIFY = 0x00010000 } + +enum : uint { FLI_GLYPHS = 0x00040000 } +enum : uint { GCP_CLASSIN = 0x00080000 } +enum : uint { GCP_MAXEXTENT = 0x00100000 } +enum : uint { GCP_JUSTIFYIN = 0x00200000 } +enum : uint { GCP_DISPLAYZWG = 0x00400000 } +enum : uint { GCP_SYMSWAPOFF = 0x00800000 } +enum : uint { GCP_NUMERICOVERRIDE = 0x01000000 } +enum : uint { GCP_NEUTRALOVERRIDE = 0x02000000 } +enum : uint { GCP_NUMERICSLATIN = 0x04000000 } +enum : uint { GCP_NUMERICSLOCAL = 0x08000000 } + +enum : uint { GCPCLASS_LATIN = 1 } +enum : uint { GCPCLASS_HEBREW = 2 } +enum : uint { GCPCLASS_ARABIC = 2 } +enum : uint { GCPCLASS_NEUTRAL = 3 } +enum : uint { GCPCLASS_LOCALNUMBER = 4 } +enum : uint { GCPCLASS_LATINNUMBER = 5 } +enum : uint { GCPCLASS_LATINNUMERICTERMINATOR = 6 } +enum : uint { GCPCLASS_LATINNUMERICSEPARATOR = 7 } +enum : uint { GCPCLASS_NUMERICSEPARATOR = 8 } +enum : uint { GCPCLASS_PREBOUNDLTR = 0x80 } +enum : uint { GCPCLASS_PREBOUNDRTL = 0x40 } +enum : uint { GCPCLASS_POSTBOUNDLTR = 0x20 } +enum : uint { GCPCLASS_POSTBOUNDRTL = 0x10 } + +enum : uint { GCPGLYPH_LINKBEFORE = 0x8000 } +enum : uint { GCPGLYPH_LINKAFTER = 0x4000 } + +struct tagGCP_RESULTSA { + DWORD lStructSize; + LPSTR lpOutString; + UINT *lpOrder; + int *lpDx; + int *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + int nMaxFit; +} +alias tagGCP_RESULTSA GCP_RESULTSA; +alias tagGCP_RESULTSA* LPGCP_RESULTSA; + +struct tagGCP_RESULTSW { + DWORD lStructSize; + LPWSTR lpOutString; + UINT *lpOrder; + int *lpDx; + int *lpCaretPos; + LPSTR lpClass; + LPWSTR lpGlyphs; + UINT nGlyphs; + int nMaxFit; +} +alias tagGCP_RESULTSW GCP_RESULTSW; +alias tagGCP_RESULTSW* LPGCP_RESULTSW; + +// #ifdef UNICODE +alias GCP_RESULTSW GCP_RESULTS; +alias LPGCP_RESULTSW LPGCP_RESULTS; +// #else +// ... +// #endif // UNICODE +// #endif /* WINVER >= 0x0400 */ + +struct _RASTERIZER_STATUS { + short nSize; + short wFlags; + short nLanguageID; +} +alias _RASTERIZER_STATUS RASTERIZER_STATUS; +alias _RASTERIZER_STATUS* LPRASTERIZER_STATUS; + +enum : uint { TT_AVAILABLE = 0x0001 } +enum : uint { TT_ENABLED = 0x0002 } + +struct tagPIXELFORMATDESCRIPTOR { + 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 tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR; +alias tagPIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR; +alias tagPIXELFORMATDESCRIPTOR* LPPIXELFORMATDESCRIPTOR; + +enum : uint { PFD_TYPE_RGBA = 0 } +enum : uint { PFD_TYPE_COLORINDEX = 1 } + +enum : uint { PFD_MAIN_PLANE = 0 } +enum : uint { PFD_OVERLAY_PLANE = 1 } +enum { PFD_UNDERLAY_PLANE = -1 } + +enum : uint { PFD_DOUBLEBUFFER = 0x00000001 } +enum : uint { PFD_STEREO = 0x00000002 } +enum : uint { PFD_DRAW_TO_WINDOW = 0x00000004 } +enum : uint { PFD_DRAW_TO_BITMAP = 0x00000008 } +enum : uint { PFD_SUPPORT_GDI = 0x00000010 } +enum : uint { PFD_SUPPORT_OPENGL = 0x00000020 } +enum : uint { PFD_GENERIC_FORMAT = 0x00000040 } +enum : uint { PFD_NEED_PALETTE = 0x00000080 } +enum : uint { PFD_NEED_SYSTEM_PALETTE = 0x00000100 } +enum : uint { PFD_SWAP_EXCHANGE = 0x00000200 } +enum : uint { PFD_SWAP_COPY = 0x00000400 } +enum : uint { PFD_SWAP_LAYER_BUFFERS = 0x00000800 } +enum : uint { PFD_GENERIC_ACCELERATED = 0x00001000 } +enum : uint { PFD_SUPPORT_DIRECTDRAW = 0x00002000 } + +enum : uint { PFD_DEPTH_DONTCARE = 0x20000000 } +enum : uint { PFD_DOUBLEBUFFER_DONTCARE = 0x40000000 } +enum : uint { PFD_STEREO_DONTCARE = 0x80000000 } + +// #ifdef STRICT +// #if !defined(NOTEXTMETRIC) +extern(Windows) alias int function( LOGFONTA *, TEXTMETRICA *, DWORD, LPARAM) OLDFONTENUMPROCA; +extern(Windows) alias int function( LOGFONTW *, TEXTMETRICW *, DWORD, LPARAM) OLDFONTENUMPROCW; +// #ifdef UNICODE +alias OLDFONTENUMPROCW OLDFONTENUMPROC; +// #else +// #... +// #endif // !UNICODE +// #else +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE +// #endif + +alias OLDFONTENUMPROCA FONTENUMPROCA; +alias OLDFONTENUMPROCW FONTENUMPROCW; +// #ifdef UNICODE +alias FONTENUMPROCW FONTENUMPROC; +// #else +// ... +// #endif // UNICODE + +extern(Windows) alias int function(LPVOID, LPARAM) GOBJENUMPROC; +extern(Windows) alias VOID function(int, int, LPARAM) LINEDDAPROC; +// #else +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// ... +// #endif + +extern(Windows) export int AddFontResourceA(LPCSTR); +extern(Windows) export int AddFontResourceW(LPCWSTR); +// #ifdef UNICODE +alias AddFontResourceW AddFontResource; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AnimatePalette(HPALETTE, UINT, UINT, PALETTEENTRY *); +extern(Windows) export BOOL Arc(HDC, int, int, int, int, int, int, int, int); +extern(Windows) export BOOL BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD); +extern(Windows) export BOOL CancelDC(HDC); +extern(Windows) export BOOL Chord(HDC, int, int, int, int, int, int, int, int); +extern(Windows) export int ChoosePixelFormat(HDC, PIXELFORMATDESCRIPTOR *); +extern(Windows) export HMETAFILE CloseMetaFile(HDC); +extern(Windows) export int CombineRgn(HRGN, HRGN, HRGN, int); +extern(Windows) export HMETAFILE CopyMetaFileA(HMETAFILE, LPCSTR); +extern(Windows) export HMETAFILE CopyMetaFileW(HMETAFILE, LPCWSTR); +// #ifdef UNICODE +alias CopyMetaFileW CopyMetaFile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HBITMAP CreateBitmap(int, int, UINT, UINT, VOID *); +extern(Windows) export HBITMAP CreateBitmapIndirect(BITMAP *); +extern(Windows) export HBRUSH CreateBrushIndirect(LOGBRUSH *); +extern(Windows) export HBITMAP CreateCompatibleBitmap(HDC, int, int); +extern(Windows) export HBITMAP CreateDiscardableBitmap(HDC, int, int); +extern(Windows) export HDC CreateCompatibleDC(HDC); +extern(Windows) export HDC CreateDCA(LPCSTR, LPCSTR, LPCSTR, DEVMODEA *); +extern(Windows) export HDC CreateDCW(LPCWSTR, LPCWSTR, LPCWSTR, DEVMODEW *); +// #ifdef UNICODE +alias CreateDCW CreateDC; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HBITMAP CreateDIBitmap(HDC, BITMAPINFOHEADER *, DWORD, VOID *, BITMAPINFO *, UINT); +extern(Windows) export HBRUSH CreateDIBPatternBrush(HGLOBAL, UINT); +extern(Windows) export HBRUSH CreateDIBPatternBrushPt(VOID *, UINT); +extern(Windows) export HRGN CreateEllipticRgn(int, int, int, int); +extern(Windows) export HRGN CreateEllipticRgnIndirect(RECT *); +extern(Windows) export HFONT CreateFontIndirectA(LOGFONTA *); +extern(Windows) export HFONT CreateFontIndirectW(LOGFONTW *); +// #ifdef UNICODE +alias CreateFontIndirectW CreateFontIndirect; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HFONT CreateFontA(int, int, int, int, int, DWORD, + DWORD, DWORD, DWORD, DWORD, DWORD, + DWORD, DWORD, LPCSTR); +extern(Windows) export HFONT CreateFontW(int, int, int, int, int, DWORD, + DWORD, DWORD, DWORD, DWORD, DWORD, + DWORD, DWORD, LPCWSTR); +// #ifdef UNICODE +alias CreateFontW CreateFont; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HBRUSH CreateHatchBrush(int, COLORREF); +extern(Windows) export HDC CreateICA(LPCSTR, LPCSTR, LPCSTR, DEVMODEA *); +extern(Windows) export HDC CreateICW(LPCWSTR, LPCWSTR, LPCWSTR, DEVMODEW *); +// #ifdef UNICODE +alias CreateICW CreateIC; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HDC CreateMetaFileA(LPCSTR); +extern(Windows) export HDC CreateMetaFileW(LPCWSTR); +// #ifdef UNICODE +alias CreateMetaFileW CreateMetaFile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HPALETTE CreatePalette(LOGPALETTE *); +extern(Windows) export HPEN CreatePen(int, int, COLORREF); +extern(Windows) export HPEN CreatePenIndirect(LOGPEN *); +extern(Windows) export HRGN CreatePolyPolygonRgn(POINT *, INT *, int, int); +extern(Windows) export HBRUSH CreatePatternBrush(HBITMAP); +extern(Windows) export HRGN CreateRectRgn(int, int, int, int); +extern(Windows) export HRGN CreateRectRgnIndirect(RECT *); +extern(Windows) export HRGN CreateRoundRectRgn(int, int, int, int, int, int); +extern(Windows) export BOOL CreateScalableFontResourceA(DWORD, LPCSTR, LPCSTR, LPCSTR); +extern(Windows) export BOOL CreateScalableFontResourceW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR); +// #ifdef UNICODE +alias CreateScalableFontResourceW CreateScalableFontResource; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HBRUSH CreateSolidBrush(COLORREF); + +extern(Windows) export BOOL DeleteDC(HDC); +extern(Windows) export BOOL DeleteMetaFile(HMETAFILE); +extern(Windows) export BOOL DeleteObject(HGDIOBJ); +extern(Windows) export int DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); + +extern(Windows) alias UINT function(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT) LPFNDEVMODE; + +extern(Windows) alias DWORD function(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE) LPFNDEVCAPS; + +enum : uint { DM_UPDATE = 1 } +enum : uint { DM_COPY = 2 } +enum : uint { DM_PROMPT = 4 } +enum : uint { DM_MODIFY = 8 } + +alias DM_MODIFY DM_IN_BUFFER; +alias DM_PROMPT DM_IN_PROMPT; +alias DM_COPY DM_OUT_BUFFER; +alias DM_UPDATE DM_OUT_DEFAULT; + +enum : uint { DC_FIELDS = 1 } +enum : uint { DC_PAPERS = 2 } +enum : uint { DC_PAPERSIZE = 3 } +enum : uint { DC_MINEXTENT = 4 } +enum : uint { DC_MAXEXTENT = 5 } +enum : uint { DC_BINS = 6 } +enum : uint { DC_DUPLEX = 7 } +enum : uint { DC_SIZE = 8 } +enum : uint { DC_EXTRA = 9 } +enum : uint { DC_VERSION = 10 } +enum : uint { DC_DRIVER = 11 } +enum : uint { DC_BINNAMES = 12 } +enum : uint { DC_ENUMRESOLUTIONS = 13 } +enum : uint { DC_FILEDEPENDENCIES = 14 } +enum : uint { DC_TRUETYPE = 15 } +enum : uint { DC_PAPERNAMES = 16 } +enum : uint { DC_ORIENTATION = 17 } +enum : uint { DC_COPIES = 18 } +// #if(WINVER >= 0x0400) +enum : uint { DC_BINADJUST = 19 } +enum : uint { DC_EMF_COMPLIANT = 20 } +enum : uint { DC_DATATYPE_PRODUCED = 21 } +enum : uint { DC_COLLATE = 22 } +enum : uint { DC_MANUFACTURER = 23 } +enum : uint { DC_MODEL = 24 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { DC_PERSONALITY = 25 } +enum : uint { DC_PRINTRATE = 26 } +enum : uint { DC_PRINTRATEUNIT = 27 } +enum : uint { PRINTRATEUNIT_PPM = 1 } +enum : uint { PRINTRATEUNIT_CPS = 2 } +enum : uint { PRINTRATEUNIT_LPM = 3 } +enum : uint { PRINTRATEUNIT_IPM = 4 } +enum : uint { DC_PRINTERMEM = 28 } +enum : uint { DC_MEDIAREADY = 29 } +enum : uint { DC_STAPLE = 30 } +enum : uint { DC_PRINTRATEPPM = 31 } +enum : uint { DC_COLORDEVICE = 32 } +enum : uint { DC_NUP = 33 } +enum : uint { DC_MEDIATYPENAMES = 34 } +enum : uint { DC_MEDIATYPES = 35 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { DCTT_BITMAP = 0x0000001 } +enum : uint { DCTT_DOWNLOAD = 0x0000002 } +enum : uint { DCTT_SUBDEV = 0x0000004 } +// #if(WINVER >= 0x0400) +enum : uint { DCTT_DOWNLOAD_OUTLINE = 0x0000008 } + +enum : uint { DCBA_FACEUPNONE = 0x0000 } +enum : uint { DCBA_FACEUPCENTER = 0x0001 } +enum : uint { DCBA_FACEUPLEFT = 0x0002 } +enum : uint { DCBA_FACEUPRIGHT = 0x0003 } +enum : uint { DCBA_FACEDOWNNONE = 0x0100 } +enum : uint { DCBA_FACEDOWNCENTER = 0x0101 } +enum : uint { DCBA_FACEDOWNLEFT = 0x0102 } +enum : uint { DCBA_FACEDOWNRIGHT = 0x0103 } +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int DeviceCapabilitiesA(LPCSTR, LPCSTR, WORD, + LPSTR, DEVMODEA *); +extern(Windows) export int DeviceCapabilitiesW(LPCWSTR, LPCWSTR, WORD, + LPWSTR, DEVMODEW *); +// #ifdef UNICODE +alias DeviceCapabilitiesW DeviceCapabilities; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int DrawEscape(HDC, int, int, LPCSTR); +extern(Windows) export BOOL Ellipse(HDC, int, int, int, int); + +// #if(WINVER >= 0x0400) +extern(Windows) export int EnumFontFamiliesExA(HDC, LPLOGFONTA, FONTENUMPROCA, LPARAM, DWORD); +extern(Windows) export int EnumFontFamiliesExW(HDC, LPLOGFONTW, FONTENUMPROCW, LPARAM, DWORD); +// #ifdef UNICODE +alias EnumFontFamiliesExW EnumFontFamiliesEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int EnumFontFamiliesA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); +extern(Windows) export int EnumFontFamiliesW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); +// #ifdef UNICODE +alias EnumFontFamiliesW EnumFontFamilies; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export int EnumFontsA(HDC, LPCSTR, FONTENUMPROCA, LPARAM); +extern(Windows) export int EnumFontsW(HDC, LPCWSTR, FONTENUMPROCW, LPARAM); +// #ifdef UNICODE +alias EnumFontsW EnumFonts; +// #else +// #... +// #endif // !UNICODE + +// #ifdef STRICT +extern(Windows) export int EnumObjects(HDC, int, GOBJENUMPROC, LPARAM); +// #else +// ... +// #endif + +extern(Windows) export BOOL EqualRgn(HRGN, HRGN); +extern(Windows) export int Escape(HDC, int, int, LPCSTR, LPVOID); +extern(Windows) export int ExtEscape(HDC, int, int, LPCSTR, int, LPSTR); +extern(Windows) export int ExcludeClipRect(HDC, int, int, int, int); +extern(Windows) export HRGN ExtCreateRegion(XFORM *, DWORD, RGNDATA *); +extern(Windows) export BOOL ExtFloodFill(HDC, int, int, COLORREF, UINT); +extern(Windows) export BOOL FillRgn(HDC, HRGN, HBRUSH); +extern(Windows) export BOOL FloodFill(HDC, int, int, COLORREF); +extern(Windows) export BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int); +extern(Windows) export int GetROP2(HDC); +extern(Windows) export BOOL GetAspectRatioFilterEx(HDC, LPSIZE); +extern(Windows) export COLORREF GetBkColor(HDC); + +// #if (_WIN32_WINNT >= 0x0500) +extern(Windows) export COLORREF GetDCBrushColor(HDC); +extern(Windows) export COLORREF GetDCPenColor(HDC); +// #endif + +extern(Windows) export int GetBkMode(HDC); +extern(Windows) export LONG GetBitmapBits(HBITMAP, LONG, LPVOID); +extern(Windows) export BOOL GetBitmapDimensionEx(HBITMAP, LPSIZE); +extern(Windows) export UINT GetBoundsRect(HDC, LPRECT, UINT); + +extern(Windows) export BOOL GetBrushOrgEx(HDC, LPPOINT); + +extern(Windows) export BOOL GetCharWidthA(HDC, UINT, UINT, LPINT); +extern(Windows) export BOOL GetCharWidthW(HDC, UINT, UINT, LPINT); +// #ifdef UNICODE +alias GetCharWidthW GetCharWidth; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL GetCharWidth32A(HDC, UINT, UINT, LPINT); +extern(Windows) export BOOL GetCharWidth32W(HDC, UINT, UINT, LPINT); +// #ifdef UNICODE +alias GetCharWidth32W GetCharWidth32; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL GetCharWidthFloatA(HDC, UINT, UINT, PFLOAT); +extern(Windows) export BOOL GetCharWidthFloatW(HDC, UINT, UINT, PFLOAT); +// #ifdef UNICODE +alias GetCharWidthFloatW GetCharWidthFloat; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL GetCharABCWidthsA(HDC, UINT, UINT, LPABC); +extern(Windows) export BOOL GetCharABCWidthsW(HDC, UINT, UINT, LPABC); +// #ifdef UNICODE +alias GetCharABCWidthsW GetCharABCWidths; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL GetCharABCWidthsFloatA(HDC, UINT, UINT, LPABCFLOAT); +extern(Windows) export BOOL GetCharABCWidthsFloatW(HDC, UINT, UINT, LPABCFLOAT); +// #ifdef UNICODE +alias GetCharABCWidthsFloatW GetCharABCWidthsFloat; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export int GetClipBox(HDC, LPRECT); +extern(Windows) export int GetClipRgn(HDC, HRGN); +extern(Windows) export int GetMetaRgn(HDC, HRGN); +extern(Windows) export HGDIOBJ GetCurrentObject(HDC, UINT); +extern(Windows) export BOOL GetCurrentPositionEx(HDC, LPPOINT); +extern(Windows) export int GetDeviceCaps(HDC, int); +extern(Windows) export int GetDIBits(HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT); +extern(Windows) export DWORD GetFontData(HDC, DWORD, DWORD, LPVOID, DWORD); +extern(Windows) export DWORD GetGlyphOutlineA(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, MAT2 *); +extern(Windows) export DWORD GetGlyphOutlineW(HDC, UINT, UINT, LPGLYPHMETRICS, DWORD, LPVOID, MAT2 *); +// #ifdef UNICODE +alias GetGlyphOutlineW GetGlyphOutline; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export int GetGraphicsMode(HDC); +extern(Windows) export int GetMapMode(HDC); +extern(Windows) export UINT GetMetaFileBitsEx(HMETAFILE, UINT, LPVOID); +extern(Windows) export HMETAFILE GetMetaFileA(LPCSTR); +extern(Windows) export HMETAFILE GetMetaFileW(LPCWSTR); +// #ifdef UNICODE +alias GetMetaFileW GetMetaFile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export COLORREF GetNearestColor(HDC, COLORREF); +extern(Windows) export UINT GetNearestPaletteIndex(HPALETTE, COLORREF); +extern(Windows) export DWORD GetObjectType(HGDIOBJ h); + +// #ifndef NOTEXTMETRIC + +extern(Windows) export UINT GetOutlineTextMetricsA(HDC, UINT, LPOUTLINETEXTMETRICA); +extern(Windows) export UINT GetOutlineTextMetricsW(HDC, UINT, LPOUTLINETEXTMETRICW); +// #ifdef UNICODE +alias GetOutlineTextMetricsW GetOutlineTextMetrics; +// #else +// #... +// #endif // !UNICODE + +// #endif /* NOTEXTMETRIC */ + +extern(Windows) export UINT GetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY); +extern(Windows) export COLORREF GetPixel(HDC, int, int); +extern(Windows) export int GetPixelFormat(HDC); +extern(Windows) export int GetPolyFillMode(HDC); +extern(Windows) export BOOL GetRasterizerCaps(LPRASTERIZER_STATUS, UINT); +extern(Windows) export int GetRandomRgn(HDC, HRGN, INT); +extern(Windows) export DWORD GetRegionData(HRGN, DWORD, LPRGNDATA); +extern(Windows) export int GetRgnBox(HRGN, LPRECT); +extern(Windows) export HGDIOBJ GetStockObject(int); +extern(Windows) export int GetStretchBltMode(HDC); +extern(Windows) export UINT GetSystemPaletteEntries(HDC, UINT, UINT, LPPALETTEENTRY); +extern(Windows) export UINT GetSystemPaletteUse(HDC); +extern(Windows) export int GetTextCharacterExtra(HDC); +extern(Windows) export UINT GetTextAlign(HDC); +extern(Windows) export COLORREF GetTextColor(HDC); + +extern(Windows) export BOOL GetTextExtentPointA( + HDC, + LPCSTR, + int, + LPSIZE); +extern(Windows) export BOOL GetTextExtentPointW( + HDC, + LPCWSTR, + int, + LPSIZE); +// #ifdef UNICODE +alias GetTextExtentPointW GetTextExtentPoint; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetTextExtentPoint32A( + HDC, + LPCSTR, + int, + LPSIZE); +extern(Windows) export BOOL GetTextExtentPoint32W( + HDC, + LPCWSTR, + int, + LPSIZE); +// #ifdef UNICODE +alias GetTextExtentPoint32W GetTextExtentPoint32; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetTextExtentExPointA( + HDC, + LPCSTR, + int, + int, + LPINT, + LPINT, + LPSIZE); +extern(Windows) export BOOL GetTextExtentExPointW( + HDC, + LPCWSTR, + int, + int, + LPINT, + LPINT, + LPSIZE); +// #ifdef UNICODE +alias GetTextExtentExPointW GetTextExtentExPoint; +// #else +// #... +// #endif // !UNICODE +// #if(WINVER >= 0x0400) +extern(Windows) export int GetTextCharset(HDC hdc); +extern(Windows) export int GetTextCharsetInfo(HDC hdc, LPFONTSIGNATURE lpSig, DWORD dwFlags); +extern(Windows) export BOOL TranslateCharsetInfo(DWORD *lpSrc, LPCHARSETINFO lpCs, DWORD dwFlags); +extern(Windows) export DWORD GetFontLanguageInfo(HDC ); +extern(Windows) export DWORD GetCharacterPlacementA(HDC, LPCSTR, int, int, LPGCP_RESULTSA, DWORD); +extern(Windows) export DWORD GetCharacterPlacementW(HDC, LPCWSTR, int, int, LPGCP_RESULTSW, DWORD); +// #ifdef UNICODE +alias GetCharacterPlacementW GetCharacterPlacement; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0500) + +struct tagWCRANGE { + WCHAR wcLow; + USHORT cGlyphs; +} +alias tagWCRANGE WCRANGE; +alias tagWCRANGE* PWCRANGE; +alias tagWCRANGE* LPWCRANGE; + +struct tagGLYPHSET { + DWORD cbThis; + DWORD flAccel; + DWORD cGlyphsSupported; + DWORD cRanges; + WCRANGE ranges[1]; +} +alias tagGLYPHSET GLYPHSET; +alias tagGLYPHSET* PGLYPHSET; +alias tagGLYPHSET* LPGLYPHSET; + +enum : uint { GS_8BIT_INDICES = 0x00000001 } + +enum : uint { GGI_MARK_NONEXISTING_GLYPHS = 0X0001 } + +extern(Windows) export DWORD GetFontUnicodeRanges(HDC, LPGLYPHSET); +extern(Windows) export DWORD GetGlyphIndicesA(HDC, LPCSTR, int, LPWORD, DWORD); +extern(Windows) export DWORD GetGlyphIndicesW(HDC, LPCWSTR, int, LPWORD, DWORD); +// #ifdef UNICODE +alias GetGlyphIndicesW GetGlyphIndices; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL GetTextExtentPointI(HDC, LPWORD, int, LPSIZE); +extern(Windows) export BOOL GetTextExtentExPointI(HDC, LPWORD, int, int, LPINT, LPINT, LPSIZE); +extern(Windows) export BOOL GetCharWidthI(HDC, UINT, UINT, LPWORD, LPINT); +extern(Windows) export BOOL GetCharABCWidthsI(HDC, UINT, UINT, LPWORD, LPABC); + +enum : uint { STAMP_DESIGNVECTOR = 0x8000000 + 'd' + ('v' << 8) } +enum : uint { STAMP_AXESLIST = 0x8000000 + 'a' + ('l' << 8) } +enum : uint { MM_MAX_NUMAXES = 16 } + +struct tagDESIGNVECTOR { + DWORD dvReserved; + DWORD dvNumAxes; + LONG dvValues[MM_MAX_NUMAXES]; +} +alias tagDESIGNVECTOR DESIGNVECTOR; +alias tagDESIGNVECTOR* PDESIGNVECTOR; +alias tagDESIGNVECTOR* LPDESIGNVECTOR; + +extern(Windows) export int AddFontResourceExA(LPCSTR, DWORD, PVOID); +extern(Windows) export int AddFontResourceExW(LPCWSTR, DWORD, PVOID); +// #ifdef UNICODE +alias AddFontResourceExW AddFontResourceEx; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL RemoveFontResourceExA(LPCSTR, DWORD, PVOID); +extern(Windows) export BOOL RemoveFontResourceExW(LPCWSTR, DWORD, PVOID); +// #ifdef UNICODE +alias RemoveFontResourceExW RemoveFontResourceEx; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HANDLE AddFontMemResourceEx(PVOID, DWORD, PVOID , DWORD*); +extern(Windows) export BOOL RemoveFontMemResourceEx(HANDLE); +enum : uint { FR_PRIVATE = 0x10 } +enum : uint { FR_NOT_ENUM = 0x20 } + +enum : uint { MM_MAX_AXES_NAMELEN = 16 } + +struct tagAXISINFOA { + LONG axMinValue; + LONG axMaxValue; + BYTE axAxisName[MM_MAX_AXES_NAMELEN]; +} +alias tagAXISINFOA AXISINFOA; +alias tagAXISINFOA* PAXISINFOA; +alias tagAXISINFOA* LPAXISINFOA; + +struct tagAXISINFOW { + LONG axMinValue; + LONG axMaxValue; + WCHAR axAxisName[MM_MAX_AXES_NAMELEN]; +} +alias tagAXISINFOW AXISINFOW; +alias tagAXISINFOW* PAXISINFOW; +alias tagAXISINFOW* LPAXISINFOW; + +// #ifdef UNICODE +alias AXISINFOW AXISINFO; +alias PAXISINFOW PAXISINFO; +alias LPAXISINFOW LPAXISINFO; +// #else +// ... +// #endif // UNICODE + +struct tagAXESLISTA { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOA axlAxisInfo[MM_MAX_NUMAXES]; +} +alias tagAXESLISTA AXESLISTA; +alias tagAXESLISTA* PAXESLISTA; +alias tagAXESLISTA* LPAXESLISTA; + +struct tagAXESLISTW { + DWORD axlReserved; + DWORD axlNumAxes; + AXISINFOW axlAxisInfo[MM_MAX_NUMAXES]; +} +alias tagAXESLISTW AXESLISTW; +alias tagAXESLISTW* PAXESLISTW; +alias tagAXESLISTW* LPAXESLISTW; + +// #ifdef UNICODE +alias AXESLISTW AXESLIST; +alias PAXESLISTW PAXESLIST; +alias LPAXESLISTW LPAXESLIST; +// #else +// ... +// #endif // UNICODE + +struct tagENUMLOGFONTEXDVA { + ENUMLOGFONTEXA elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; +} +alias tagENUMLOGFONTEXDVA ENUMLOGFONTEXDVA; +alias tagENUMLOGFONTEXDVA* PENUMLOGFONTEXDVA; +alias tagENUMLOGFONTEXDVA* LPENUMLOGFONTEXDVA; + +struct tagENUMLOGFONTEXDVW { + ENUMLOGFONTEXW elfEnumLogfontEx; + DESIGNVECTOR elfDesignVector; +} +alias tagENUMLOGFONTEXDVW ENUMLOGFONTEXDVW; +alias tagENUMLOGFONTEXDVW* PENUMLOGFONTEXDVW; +alias tagENUMLOGFONTEXDVW* LPENUMLOGFONTEXDVW; + +// #ifdef UNICODE +alias ENUMLOGFONTEXDVW ENUMLOGFONTEXDV; +alias PENUMLOGFONTEXDVW PENUMLOGFONTEXDV; +alias LPENUMLOGFONTEXDVW LPENUMLOGFONTEXDV; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export HFONT CreateFontIndirectExA(ENUMLOGFONTEXDVA *); +extern(Windows) export HFONT CreateFontIndirectExW(ENUMLOGFONTEXDVW *); +// #ifdef UNICODE +alias CreateFontIndirectExW CreateFontIndirectEx; +// #else +// #... +// #endif // !UNICODE + +// #ifndef NOTEXTMETRIC +struct tagENUMTEXTMETRICA { + NEWTEXTMETRICEXA etmNewTextMetricEx; + AXESLISTA etmAxesList; +} +alias tagENUMTEXTMETRICA ENUMTEXTMETRICA; +alias tagENUMTEXTMETRICA* PENUMTEXTMETRICA; +alias tagENUMTEXTMETRICA* LPENUMTEXTMETRICA; + +struct tagENUMTEXTMETRICW { + NEWTEXTMETRICEXW etmNewTextMetricEx; + AXESLISTW etmAxesList; +} +alias tagENUMTEXTMETRICW ENUMTEXTMETRICW; +alias tagENUMTEXTMETRICW* PENUMTEXTMETRICW; +alias tagENUMTEXTMETRICW* LPENUMTEXTMETRICW; + +// #ifdef UNICODE +alias ENUMTEXTMETRICW ENUMTEXTMETRIC; +alias PENUMTEXTMETRICW PENUMTEXTMETRIC; +alias LPENUMTEXTMETRICW LPENUMTEXTMETRIC; +// #else +// ... +// #endif // UNICODE +// #endif /* NOTEXTMETRIC */ + +// #endif // (_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL GetViewportExtEx(HDC, LPSIZE); +extern(Windows) export BOOL GetViewportOrgEx(HDC, LPPOINT); +extern(Windows) export BOOL GetWindowExtEx(HDC, LPSIZE); +extern(Windows) export BOOL GetWindowOrgEx(HDC, LPPOINT); + +extern(Windows) export int IntersectClipRect(HDC, int, int, int, int); +extern(Windows) export BOOL InvertRgn(HDC, HRGN); +extern(Windows) export BOOL LineDDA(int, int, int, int, LINEDDAPROC, LPARAM); +extern(Windows) export BOOL LineTo(HDC, int, int); +extern(Windows) export BOOL MaskBlt(HDC, int, int, int, int, + HDC, int, int, HBITMAP, int, int, DWORD); +extern(Windows) export BOOL PlgBlt(HDC, POINT *, HDC, int, int, int, + int, HBITMAP, int, int); + +extern(Windows) export int OffsetClipRgn(HDC, int, int); +extern(Windows) export int OffsetRgn(HRGN, int, int); +extern(Windows) export BOOL PatBlt(HDC, int, int, int, int, DWORD); +extern(Windows) export BOOL Pie(HDC, int, int, int, int, int, int, int, int); +extern(Windows) export BOOL PlayMetaFile(HDC, HMETAFILE); +extern(Windows) export BOOL PaintRgn(HDC, HRGN); +extern(Windows) export BOOL PolyPolygon(HDC, POINT *, INT *, int); +extern(Windows) export BOOL PtInRegion(HRGN, int, int); +extern(Windows) export BOOL PtVisible(HDC, int, int); +extern(Windows) export BOOL RectInRegion(HRGN, RECT *); +extern(Windows) export BOOL RectVisible(HDC, RECT *); +extern(Windows) export BOOL Rectangle(HDC, int, int, int, int); +extern(Windows) export BOOL RestoreDC(HDC, int); +extern(Windows) export HDC ResetDCA(HDC, DEVMODEA *); +extern(Windows) export HDC ResetDCW(HDC, DEVMODEW *); +// #ifdef UNICODE +alias ResetDCW ResetDC; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export UINT RealizePalette(HDC); +extern(Windows) export BOOL RemoveFontResourceA(LPCSTR); +extern(Windows) export BOOL RemoveFontResourceW(LPCWSTR); +// #ifdef UNICODE +alias RemoveFontResourceW RemoveFontResource; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL RoundRect(HDC, int, int, int, int, int, int); +extern(Windows) export BOOL ResizePalette(HPALETTE, UINT); + +extern(Windows) export int SaveDC(HDC); +extern(Windows) export int SelectClipRgn(HDC, HRGN); +extern(Windows) export int ExtSelectClipRgn(HDC, HRGN, int); +extern(Windows) export int SetMetaRgn(HDC); +extern(Windows) export HGDIOBJ SelectObject(HDC, HGDIOBJ); +extern(Windows) export HPALETTE SelectPalette(HDC, HPALETTE, BOOL); +extern(Windows) export COLORREF SetBkColor(HDC, COLORREF); + +// #if (_WIN32_WINNT >= 0x0500) +extern(Windows) export COLORREF SetDCBrushColor(HDC, COLORREF); +extern(Windows) export COLORREF SetDCPenColor(HDC, COLORREF); +// #endif + +extern(Windows) export int SetBkMode(HDC, int); +extern(Windows) export LONG SetBitmapBits(HBITMAP, DWORD, VOID *); + +extern(Windows) export UINT SetBoundsRect(HDC, RECT *, UINT); +extern(Windows) export int SetDIBits(HDC, HBITMAP, UINT, UINT, VOID *, BITMAPINFO *, UINT); +extern(Windows) export int SetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, + int, UINT, UINT, VOID *, BITMAPINFO *, UINT); +extern(Windows) export DWORD SetMapperFlags(HDC, DWORD); +extern(Windows) export int SetGraphicsMode(HDC hdc, int iMode); +extern(Windows) export int SetMapMode(HDC, int); + +// #if(WINVER >= 0x0500) +extern(Windows) export DWORD SetLayout(HDC, DWORD); +extern(Windows) export DWORD GetLayout(HDC); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export HMETAFILE SetMetaFileBitsEx(UINT, BYTE *); +extern(Windows) export UINT SetPaletteEntries(HPALETTE, UINT, UINT, PALETTEENTRY *); +extern(Windows) export COLORREF SetPixel(HDC, int, int, COLORREF); +extern(Windows) export BOOL SetPixelV(HDC, int, int, COLORREF); +extern(Windows) export BOOL SetPixelFormat(HDC, int, PIXELFORMATDESCRIPTOR *); +extern(Windows) export int SetPolyFillMode(HDC, int); +extern(Windows) export BOOL StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); +extern(Windows) export BOOL SetRectRgn(HRGN, int, int, int, int); +extern(Windows) export int StretchDIBits(HDC, int, int, int, int, int, int, int, int, + VOID *, BITMAPINFO *, UINT, DWORD); +extern(Windows) export int SetROP2(HDC, int); +extern(Windows) export int SetStretchBltMode(HDC, int); +extern(Windows) export UINT SetSystemPaletteUse(HDC, UINT); +extern(Windows) export int SetTextCharacterExtra(HDC, int); +extern(Windows) export COLORREF SetTextColor(HDC, COLORREF); +extern(Windows) export UINT SetTextAlign(HDC, UINT); +extern(Windows) export BOOL SetTextJustification(HDC, int, int); +extern(Windows) export BOOL UpdateColors(HDC); + +// #if (WINVER >= 0x0400) + +alias USHORT COLOR16; + +struct _TRIVERTEX { + LONG x; + LONG y; + COLOR16 Red; + COLOR16 Green; + COLOR16 Blue; + COLOR16 Alpha; +} +alias _TRIVERTEX TRIVERTEX; +alias _TRIVERTEX* PTRIVERTEX; +alias _TRIVERTEX* LPTRIVERTEX; + +struct _GRADIENT_TRIANGLE { + ULONG Vertex1; + ULONG Vertex2; + ULONG Vertex3; +} +alias _GRADIENT_TRIANGLE GRADIENT_TRIANGLE; +alias _GRADIENT_TRIANGLE* PGRADIENT_TRIANGLE; +alias _GRADIENT_TRIANGLE* LPGRADIENT_TRIANGLE; + +struct _GRADIENT_RECT { + ULONG UpperLeft; + ULONG LowerRight; +} +alias _GRADIENT_RECT GRADIENT_RECT; +alias _GRADIENT_RECT* PGRADIENT_RECT; +alias _GRADIENT_RECT* LPGRADIENT_RECT; + +struct _BLENDFUNCTION { + BYTE BlendOp; + BYTE BlendFlags; + BYTE SourceConstantAlpha; + BYTE AlphaFormat; +} +alias _BLENDFUNCTION BLENDFUNCTION; +alias _BLENDFUNCTION* PBLENDFUNCTION; + +enum : uint { AC_SRC_OVER = 0x00 } + +enum : uint { AC_SRC_ALPHA = 0x01 } + +extern(Windows) export BOOL AlphaBlend(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); + +extern(Windows) export BOOL TransparentBlt(HDC, int, int, int, int, HDC, int, int, int, int, UINT); + +enum : uint { GRADIENT_FILL_RECT_H = 0x00000000 } +enum : uint { GRADIENT_FILL_RECT_V = 0x00000001 } +enum : uint { GRADIENT_FILL_TRIANGLE = 0x00000002 } +enum : uint { GRADIENT_FILL_OP_FLAG = 0x000000ff } + +extern(Windows) export BOOL GradientFill(HDC, PTRIVERTEX, ULONG, PVOID, ULONG, ULONG); + +// #endif + +// #ifndef NOMETAFILE + +extern(Windows) export BOOL PlayMetaFileRecord(HDC, LPHANDLETABLE, LPMETARECORD, UINT); +extern(Windows) alias int function( HDC, HANDLETABLE *, METARECORD *, int, LPARAM) MFENUMPROC; +extern(Windows) export BOOL EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM); + +extern(Windows) alias int function(HDC, HANDLETABLE *, ENHMETARECORD *, int, LPARAM) ENHMFENUMPROC; + +extern(Windows) export HENHMETAFILE CloseEnhMetaFile(HDC); +extern(Windows) export HENHMETAFILE CopyEnhMetaFileA(HENHMETAFILE, LPCSTR); +extern(Windows) export HENHMETAFILE CopyEnhMetaFileW(HENHMETAFILE, LPCWSTR); +// #ifdef UNICODE +alias CopyEnhMetaFileW CopyEnhMetaFile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HDC CreateEnhMetaFileA(HDC, LPCSTR, RECT *, LPCSTR); +extern(Windows) export HDC CreateEnhMetaFileW(HDC, LPCWSTR, RECT *, LPCWSTR); +// #ifdef UNICODE +alias CreateEnhMetaFileW CreateEnhMetaFile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL DeleteEnhMetaFile(HENHMETAFILE); +extern(Windows) export BOOL EnumEnhMetaFile(HDC, HENHMETAFILE, ENHMFENUMPROC, + LPVOID, RECT *); +extern(Windows) export HENHMETAFILE GetEnhMetaFileA(LPCSTR); +extern(Windows) export HENHMETAFILE GetEnhMetaFileW(LPCWSTR); +// #ifdef UNICODE +alias GetEnhMetaFileW GetEnhMetaFile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export UINT GetEnhMetaFileBits(HENHMETAFILE, UINT, LPBYTE); +extern(Windows) export UINT GetEnhMetaFileDescriptionA(HENHMETAFILE, UINT, LPSTR ); +extern(Windows) export UINT GetEnhMetaFileDescriptionW(HENHMETAFILE, UINT, LPWSTR ); +// #ifdef UNICODE +alias GetEnhMetaFileDescriptionW GetEnhMetaFileDescription; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export UINT GetEnhMetaFileHeader(HENHMETAFILE, UINT, LPENHMETAHEADER ); +extern(Windows) export UINT GetEnhMetaFilePaletteEntries(HENHMETAFILE, UINT, LPPALETTEENTRY ); +extern(Windows) export UINT GetEnhMetaFilePixelFormat(HENHMETAFILE, UINT, + PIXELFORMATDESCRIPTOR *); +extern(Windows) export UINT GetWinMetaFileBits(HENHMETAFILE, UINT, LPBYTE, INT, HDC); +extern(Windows) export BOOL PlayEnhMetaFile(HDC, HENHMETAFILE, RECT *); +extern(Windows) export BOOL PlayEnhMetaFileRecord(HDC, LPHANDLETABLE, ENHMETARECORD *, UINT); +extern(Windows) export HENHMETAFILE SetEnhMetaFileBits(UINT, BYTE *); +extern(Windows) export HENHMETAFILE SetWinMetaFileBits(UINT, BYTE *, HDC, METAFILEPICT *); +extern(Windows) export BOOL GdiComment(HDC, UINT, BYTE *); + +// #endif /* NOMETAFILE */ + +// #ifndef NOTEXTMETRIC + +extern(Windows) export BOOL GetTextMetricsA(HDC, LPTEXTMETRICA); +extern(Windows) export BOOL GetTextMetricsW(HDC, LPTEXTMETRICW); +// #ifdef UNICODE +alias GetTextMetricsW GetTextMetrics; +// #else +// #... +// #endif // !UNICODE + +// #endif + +struct tagDIBSECTION { + BITMAP dsBm; + BITMAPINFOHEADER dsBmih; + DWORD dsBitfields[3]; + HANDLE dshSection; + DWORD dsOffset; +} +alias tagDIBSECTION DIBSECTION; +alias tagDIBSECTION* LPDIBSECTION; +alias tagDIBSECTION* PDIBSECTION; + +extern(Windows) export BOOL AngleArc(HDC, int, int, DWORD, FLOAT, FLOAT); +extern(Windows) export BOOL PolyPolyline(HDC, POINT *, DWORD *, DWORD); +extern(Windows) export BOOL GetWorldTransform(HDC, LPXFORM); +extern(Windows) export BOOL SetWorldTransform(HDC, XFORM *); +extern(Windows) export BOOL ModifyWorldTransform(HDC, XFORM *, DWORD); +extern(Windows) export BOOL CombineTransform(LPXFORM, XFORM *, XFORM *); +extern(Windows) export HBITMAP CreateDIBSection(HDC, BITMAPINFO *, UINT, VOID **, HANDLE, DWORD); +extern(Windows) export UINT GetDIBColorTable(HDC, UINT, UINT, RGBQUAD *); +extern(Windows) export UINT SetDIBColorTable(HDC, UINT, UINT, RGBQUAD *); + +enum : uint { CA_NEGATIVE = 0x0001 } +enum : uint { CA_LOG_FILTER = 0x0002 } + +enum : uint { ILLUMINANT_DEVICE_DEFAULT = 0 } +enum : uint { ILLUMINANT_A = 1 } +enum : uint { ILLUMINANT_B = 2 } +enum : uint { ILLUMINANT_C = 3 } +enum : uint { ILLUMINANT_D50 = 4 } +enum : uint { ILLUMINANT_D55 = 5 } +enum : uint { ILLUMINANT_D65 = 6 } +enum : uint { ILLUMINANT_D75 = 7 } +enum : uint { ILLUMINANT_F2 = 8 } +alias ILLUMINANT_F2 ILLUMINANT_MAX_INDEX; + +alias ILLUMINANT_A ILLUMINANT_TUNGSTEN; +alias ILLUMINANT_C ILLUMINANT_DAYLIGHT; +alias ILLUMINANT_F2 ILLUMINANT_FLUORESCENT; +alias ILLUMINANT_C ILLUMINANT_NTSC; + +enum : WORD { RGB_GAMMA_MIN = 02500 } +enum : WORD { RGB_GAMMA_MAX = 65000 } + +enum : WORD { REFERENCE_WHITE_MIN = 6000 } +enum : WORD { REFERENCE_WHITE_MAX = 10000 } +enum : WORD { REFERENCE_BLACK_MIN = 0 } +enum : WORD { REFERENCE_BLACK_MAX = 4000 } + +enum : SHORT { COLOR_ADJ_MIN = -100 } +enum : SHORT { COLOR_ADJ_MAX = 100 } + +struct tagCOLORADJUSTMENT { + 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 tagCOLORADJUSTMENT COLORADJUSTMENT; +alias tagCOLORADJUSTMENT* PCOLORADJUSTMENT; +alias tagCOLORADJUSTMENT* LPCOLORADJUSTMENT; + +extern(Windows) export BOOL SetColorAdjustment(HDC, COLORADJUSTMENT *); +extern(Windows) export BOOL GetColorAdjustment(HDC, LPCOLORADJUSTMENT); +extern(Windows) export HPALETTE CreateHalftonePalette(HDC); + +// #ifdef STRICT +extern(Windows) alias BOOL function( HDC, int) ABORTPROC; +// #else +// ... +// #endif + +struct _DOCINFOA { + int cbSize; + LPCSTR lpszDocName; + LPCSTR lpszOutput; +// #if (WINVER >= 0x0400) + LPCSTR lpszDatatype; + DWORD fwType; +// #endif /* WINVER */ +} +alias _DOCINFOA DOCINFOA; +alias _DOCINFOA* LPDOCINFOA; + +struct _DOCINFOW { + int cbSize; + LPCWSTR lpszDocName; + LPCWSTR lpszOutput; +// #if (WINVER >= 0x0400) + LPCWSTR lpszDatatype; + DWORD fwType; +// #endif /* WINVER */ +} +alias _DOCINFOW DOCINFOW; +alias _DOCINFOW* LPDOCINFOW; + +// #ifdef UNICODE +alias DOCINFOW DOCINFO; +alias LPDOCINFOW LPDOCINFO; +// #else +// ... +// #endif // UNICODE + +// #if(WINVER >= 0x0400) +enum : uint { DI_APPBANDING = 0x00000001 } +enum : uint { DI_ROPS_READ_DESTINATION = 0x00000002 } +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int StartDocA(HDC, DOCINFOA *); +extern(Windows) export int StartDocW(HDC, DOCINFOW *); +// #ifdef UNICODE +alias StartDocW StartDoc; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export int EndDoc(HDC); +extern(Windows) export int StartPage(HDC); +extern(Windows) export int EndPage(HDC); +extern(Windows) export int AbortDoc(HDC); +extern(Windows) export int SetAbortProc(HDC, ABORTPROC); + +extern(Windows) export BOOL AbortPath(HDC); +extern(Windows) export BOOL ArcTo(HDC, int, int, int, int, int, int, int, int); +extern(Windows) export BOOL BeginPath(HDC); +extern(Windows) export BOOL CloseFigure(HDC); +extern(Windows) export BOOL EndPath(HDC); +extern(Windows) export BOOL FillPath(HDC); +extern(Windows) export BOOL FlattenPath(HDC); +extern(Windows) export int GetPath(HDC, LPPOINT, LPBYTE, int); +extern(Windows) export HRGN PathToRegion(HDC); +extern(Windows) export BOOL PolyDraw(HDC, POINT *, BYTE *, int); +extern(Windows) export BOOL SelectClipPath(HDC, int); +extern(Windows) export int SetArcDirection(HDC, int); +extern(Windows) export BOOL SetMiterLimit(HDC, FLOAT, PFLOAT); +extern(Windows) export BOOL StrokeAndFillPath(HDC); +extern(Windows) export BOOL StrokePath(HDC); +extern(Windows) export BOOL WidenPath(HDC); +extern(Windows) export HPEN ExtCreatePen(DWORD, DWORD, LOGBRUSH *, DWORD, DWORD *); +extern(Windows) export BOOL GetMiterLimit(HDC, PFLOAT); +extern(Windows) export int GetArcDirection(HDC); + +extern(Windows) export int GetObjectA(HGDIOBJ, int, LPVOID); +extern(Windows) export int GetObjectW(HGDIOBJ, int, LPVOID); +// #ifdef UNICODE +alias GetObjectW GetObject; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL MoveToEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL TextOutA(HDC, int, int, LPCSTR, int); +extern(Windows) export BOOL TextOutW(HDC, int, int, LPCWSTR, int); +// #ifdef UNICODE +alias TextOutW TextOut; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL ExtTextOutA(HDC, int, int, UINT, RECT *, LPCSTR, UINT, INT *); +extern(Windows) export BOOL ExtTextOutW(HDC, int, int, UINT, RECT *, LPCWSTR, UINT, INT *); +// #ifdef UNICODE +alias ExtTextOutW ExtTextOut; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL PolyTextOutA(HDC, POLYTEXTA *, int); +extern(Windows) export BOOL PolyTextOutW(HDC, POLYTEXTW *, int); +// #ifdef UNICODE +alias PolyTextOutW PolyTextOut; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HRGN CreatePolygonRgn(POINT *, int, int); +extern(Windows) export BOOL DPtoLP(HDC, LPPOINT, int); +extern(Windows) export BOOL LPtoDP(HDC, LPPOINT, int); +extern(Windows) export BOOL Polygon(HDC, POINT *, int); +extern(Windows) export BOOL Polyline(HDC, POINT *, int); + +extern(Windows) export BOOL PolyBezier(HDC, POINT *, DWORD); +extern(Windows) export BOOL PolyBezierTo(HDC, POINT *, DWORD); +extern(Windows) export BOOL PolylineTo(HDC, POINT *, DWORD); + +extern(Windows) export BOOL SetViewportExtEx(HDC, int, int, LPSIZE); +extern(Windows) export BOOL SetViewportOrgEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL SetWindowExtEx(HDC, int, int, LPSIZE); +extern(Windows) export BOOL SetWindowOrgEx(HDC, int, int, LPPOINT); + +extern(Windows) export BOOL OffsetViewportOrgEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL OffsetWindowOrgEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL ScaleViewportExtEx(HDC, int, int, int, int, LPSIZE); +extern(Windows) export BOOL ScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); +extern(Windows) export BOOL SetBitmapDimensionEx(HBITMAP, int, int, LPSIZE); +extern(Windows) export BOOL SetBrushOrgEx(HDC, int, int, LPPOINT); + +extern(Windows) export int GetTextFaceA(HDC, int, LPSTR); +extern(Windows) export int GetTextFaceW(HDC, int, LPWSTR); +// #ifdef UNICODE +alias GetTextFaceW GetTextFace; +// #else +// #... +// #endif // !UNICODE + +enum : uint { FONTMAPPER_MAX = 10 } + +struct tagKERNINGPAIR { + WORD wFirst; + WORD wSecond; + int iKernAmount; +} +alias tagKERNINGPAIR KERNINGPAIR; +alias tagKERNINGPAIR* LPKERNINGPAIR; + +extern(Windows) export DWORD GetKerningPairsA(HDC, DWORD, LPKERNINGPAIR); +extern(Windows) export DWORD GetKerningPairsW(HDC, DWORD, LPKERNINGPAIR); +// #ifdef UNICODE +alias GetKerningPairsW GetKerningPairs; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetDCOrgEx(HDC, LPPOINT); +extern(Windows) export BOOL FixBrushOrgEx(HDC, int, int, LPPOINT); +extern(Windows) export BOOL UnrealizeObject(HGDIOBJ); + +extern(Windows) export BOOL GdiFlush(); +extern(Windows) export DWORD GdiSetBatchLimit(DWORD); +extern(Windows) export DWORD GdiGetBatchLimit(); + +// #if(WINVER >= 0x0400) + +enum : uint { ICM_OFF = 1 } +enum : uint { ICM_ON = 2 } +enum : uint { ICM_QUERY = 3 } +enum : uint { ICM_DONE_OUTSIDEDC = 4 } + +extern(Windows) alias int function(LPSTR, LPARAM) ICMENUMPROCA; +extern(Windows) alias int function(LPWSTR, LPARAM) ICMENUMPROCW; +// #ifdef UNICODE +alias ICMENUMPROCW ICMENUMPROC; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int SetICMMode(HDC, int); +extern(Windows) export BOOL CheckColorsInGamut(HDC, LPVOID, LPVOID, DWORD); +extern(Windows) export HCOLORSPACE GetColorSpace(HDC); +extern(Windows) export BOOL GetLogColorSpaceA(HCOLORSPACE, LPLOGCOLORSPACEA, DWORD); +extern(Windows) export BOOL GetLogColorSpaceW(HCOLORSPACE, LPLOGCOLORSPACEW, DWORD); +// #ifdef UNICODE +alias GetLogColorSpaceW GetLogColorSpace; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HCOLORSPACE CreateColorSpaceA(LPLOGCOLORSPACEA); +extern(Windows) export HCOLORSPACE CreateColorSpaceW(LPLOGCOLORSPACEW); +// #ifdef UNICODE +alias CreateColorSpaceW CreateColorSpace; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export HCOLORSPACE SetColorSpace(HDC, HCOLORSPACE); +extern(Windows) export BOOL DeleteColorSpace(HCOLORSPACE); +extern(Windows) export BOOL GetICMProfileA(HDC, LPDWORD, LPSTR); +extern(Windows) export BOOL GetICMProfileW(HDC, LPDWORD, LPWSTR); +// #ifdef UNICODE +alias GetICMProfileW GetICMProfile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL SetICMProfileA(HDC, LPSTR); +extern(Windows) export BOOL SetICMProfileW(HDC, LPWSTR); +// #ifdef UNICODE +alias SetICMProfileW SetICMProfile; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL GetDeviceGammaRamp(HDC, LPVOID); +extern(Windows) export BOOL SetDeviceGammaRamp(HDC, LPVOID); +extern(Windows) export BOOL ColorMatchToTarget(HDC, HDC, DWORD); +extern(Windows) export int EnumICMProfilesA(HDC, ICMENUMPROCA, LPARAM); +extern(Windows) export int EnumICMProfilesW(HDC, ICMENUMPROCW, LPARAM); +// #ifdef UNICODE +alias EnumICMProfilesW EnumICMProfiles; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL UpdateICMRegKeyA(DWORD, LPSTR, LPSTR, UINT); +extern(Windows) export BOOL UpdateICMRegKeyW(DWORD, LPWSTR, LPWSTR, UINT); +// #ifdef UNICODE +alias UpdateICMRegKeyW UpdateICMRegKey; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +// #if (WINVER >= 0x0500) +extern(Windows) export BOOL ColorCorrectPalette(HDC, HPALETTE, DWORD, DWORD); +// #endif + +// #ifndef NOMETAFILE + +// #ifndef _MAC +enum : uint { ENHMETA_SIGNATURE = 0x464D4520 } +// #else +// #... +// #endif + +enum : uint { ENHMETA_STOCK_OBJECT = 0x80000000 } + +enum : uint { EMR_HEADER = 1 } +enum : uint { EMR_POLYBEZIER = 2 } +enum : uint { EMR_POLYGON = 3 } +enum : uint { EMR_POLYLINE = 4 } +enum : uint { EMR_POLYBEZIERTO = 5 } +enum : uint { EMR_POLYLINETO = 6 } +enum : uint { EMR_POLYPOLYLINE = 7 } +enum : uint { EMR_POLYPOLYGON = 8 } +enum : uint { EMR_SETWINDOWEXTEX = 9 } +enum : uint { EMR_SETWINDOWORGEX = 10 } +enum : uint { EMR_SETVIEWPORTEXTEX = 11 } +enum : uint { EMR_SETVIEWPORTORGEX = 12 } +enum : uint { EMR_SETBRUSHORGEX = 13 } +enum : uint { EMR_EOF = 14 } +enum : uint { EMR_SETPIXELV = 15 } +enum : uint { EMR_SETMAPPERFLAGS = 16 } +enum : uint { EMR_SETMAPMODE = 17 } +enum : uint { EMR_SETBKMODE = 18 } +enum : uint { EMR_SETPOLYFILLMODE = 19 } +enum : uint { EMR_SETROP2 = 20 } +enum : uint { EMR_SETSTRETCHBLTMODE = 21 } +enum : uint { EMR_SETTEXTALIGN = 22 } +enum : uint { EMR_SETCOLORADJUSTMENT = 23 } +enum : uint { EMR_SETTEXTCOLOR = 24 } +enum : uint { EMR_SETBKCOLOR = 25 } +enum : uint { EMR_OFFSETCLIPRGN = 26 } +enum : uint { EMR_MOVETOEX = 27 } +enum : uint { EMR_SETMETARGN = 28 } +enum : uint { EMR_EXCLUDECLIPRECT = 29 } +enum : uint { EMR_INTERSECTCLIPRECT = 30 } +enum : uint { EMR_SCALEVIEWPORTEXTEX = 31 } +enum : uint { EMR_SCALEWINDOWEXTEX = 32 } +enum : uint { EMR_SAVEDC = 33 } +enum : uint { EMR_RESTOREDC = 34 } +enum : uint { EMR_SETWORLDTRANSFORM = 35 } +enum : uint { EMR_MODIFYWORLDTRANSFORM = 36 } +enum : uint { EMR_SELECTOBJECT = 37 } +enum : uint { EMR_CREATEPEN = 38 } +enum : uint { EMR_CREATEBRUSHINDIRECT = 39 } +enum : uint { EMR_DELETEOBJECT = 40 } +enum : uint { EMR_ANGLEARC = 41 } +enum : uint { EMR_ELLIPSE = 42 } +enum : uint { EMR_RECTANGLE = 43 } +enum : uint { EMR_ROUNDRECT = 44 } +enum : uint { EMR_ARC = 45 } +enum : uint { EMR_CHORD = 46 } +enum : uint { EMR_PIE = 47 } +enum : uint { EMR_SELECTPALETTE = 48 } +enum : uint { EMR_CREATEPALETTE = 49 } +enum : uint { EMR_SETPALETTEENTRIES = 50 } +enum : uint { EMR_RESIZEPALETTE = 51 } +enum : uint { EMR_REALIZEPALETTE = 52 } +enum : uint { EMR_EXTFLOODFILL = 53 } +enum : uint { EMR_LINETO = 54 } +enum : uint { EMR_ARCTO = 55 } +enum : uint { EMR_POLYDRAW = 56 } +enum : uint { EMR_SETARCDIRECTION = 57 } +enum : uint { EMR_SETMITERLIMIT = 58 } +enum : uint { EMR_BEGINPATH = 59 } +enum : uint { EMR_ENDPATH = 60 } +enum : uint { EMR_CLOSEFIGURE = 61 } +enum : uint { EMR_FILLPATH = 62 } +enum : uint { EMR_STROKEANDFILLPATH = 63 } +enum : uint { EMR_STROKEPATH = 64 } +enum : uint { EMR_FLATTENPATH = 65 } +enum : uint { EMR_WIDENPATH = 66 } +enum : uint { EMR_SELECTCLIPPATH = 67 } +enum : uint { EMR_ABORTPATH = 68 } + +enum : uint { EMR_GDICOMMENT = 70 } +enum : uint { EMR_FILLRGN = 71 } +enum : uint { EMR_FRAMERGN = 72 } +enum : uint { EMR_INVERTRGN = 73 } +enum : uint { EMR_PAINTRGN = 74 } +enum : uint { EMR_EXTSELECTCLIPRGN = 75 } +enum : uint { EMR_BITBLT = 76 } +enum : uint { EMR_STRETCHBLT = 77 } +enum : uint { EMR_MASKBLT = 78 } +enum : uint { EMR_PLGBLT = 79 } +enum : uint { EMR_SETDIBITSTODEVICE = 80 } +enum : uint { EMR_STRETCHDIBITS = 81 } +enum : uint { EMR_EXTCREATEFONTINDIRECTW = 82 } +enum : uint { EMR_EXTTEXTOUTA = 83 } +enum : uint { EMR_EXTTEXTOUTW = 84 } +enum : uint { EMR_POLYBEZIER16 = 85 } +enum : uint { EMR_POLYGON16 = 86 } +enum : uint { EMR_POLYLINE16 = 87 } +enum : uint { EMR_POLYBEZIERTO16 = 88 } +enum : uint { EMR_POLYLINETO16 = 89 } +enum : uint { EMR_POLYPOLYLINE16 = 90 } +enum : uint { EMR_POLYPOLYGON16 = 91 } +enum : uint { EMR_POLYDRAW16 = 92 } +enum : uint { EMR_CREATEMONOBRUSH = 93 } +enum : uint { EMR_CREATEDIBPATTERNBRUSHPT = 94 } +enum : uint { EMR_EXTCREATEPEN = 95 } +enum : uint { EMR_POLYTEXTOUTA = 96 } +enum : uint { EMR_POLYTEXTOUTW = 97 } + +// #if(WINVER >= 0x0400) +enum : uint { EMR_SETICMMODE = 98 } +enum : uint { EMR_CREATECOLORSPACE = 99 } +enum : uint { EMR_SETCOLORSPACE = 100 } +enum : uint { EMR_DELETECOLORSPACE = 101 } +enum : uint { EMR_GLSRECORD = 102 } +enum : uint { EMR_GLSBOUNDEDRECORD = 103 } +enum : uint { EMR_PIXELFORMAT = 104 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { EMR_RESERVED_105 = 105 } +enum : uint { EMR_RESERVED_106 = 106 } +enum : uint { EMR_RESERVED_107 = 107 } +enum : uint { EMR_RESERVED_108 = 108 } +enum : uint { EMR_RESERVED_109 = 109 } +enum : uint { EMR_RESERVED_110 = 110 } +enum : uint { EMR_COLORCORRECTPALETTE = 111 } +enum : uint { EMR_SETICMPROFILEA = 112 } +enum : uint { EMR_SETICMPROFILEW = 113 } +enum : uint { EMR_ALPHABLEND = 114 } +enum : uint { EMR_SETLAYOUT = 115 } +enum : uint { EMR_TRANSPARENTBLT = 116 } +enum : uint { EMR_RESERVED_117 = 117 } +enum : uint { EMR_GRADIENTFILL = 118 } +enum : uint { EMR_RESERVED_119 = 119 } +enum : uint { EMR_RESERVED_120 = 120 } +enum : uint { EMR_COLORMATCHTOTARGETW = 121 } +enum : uint { EMR_CREATECOLORSPACEW = 122 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { EMR_MIN = 1 } + +// #if (WINVER >= 0x0500) +enum : uint { EMR_MAX = 122 } +// #elif (WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +struct tagEMR { + DWORD iType; + DWORD nSize; + +} +alias tagEMR EMR; +alias tagEMR* PEMR; + +struct tagEMRTEXT { + POINTL ptlReference; + DWORD nChars; + DWORD offString; + DWORD fOptions; + RECTL rcl; + DWORD offDx; + +} +alias tagEMRTEXT EMRTEXT; +alias tagEMRTEXT* PEMRTEXT; + +struct tagABORTPATH { + EMR emr; +} +alias tagABORTPATH EMRABORTPATH; +alias tagABORTPATH* PEMRABORTPATH; +alias tagABORTPATH EMRBEGINPATH; +alias tagABORTPATH* PEMRBEGINPATH; +alias tagABORTPATH EMRENDPATH; +alias tagABORTPATH* PEMRENDPATH; +alias tagABORTPATH EMRCLOSEFIGURE; +alias tagABORTPATH* PEMRCLOSEFIGURE; +alias tagABORTPATH EMRFLATTENPATH; +alias tagABORTPATH* PEMRFLATTENPATH; +alias tagABORTPATH EMRWIDENPATH; +alias tagABORTPATH* PEMRWIDENPATH; +alias tagABORTPATH EMRSETMETARGN; +alias tagABORTPATH* PEMRSETMETARGN; +alias tagABORTPATH EMRSAVEDC; +alias tagABORTPATH* PEMRSAVEDC; +alias tagABORTPATH EMRREALIZEPALETTE; +alias tagABORTPATH* PEMRREALIZEPALETTE; + +struct tagEMRSELECTCLIPPATH { + EMR emr; + DWORD iMode; +} +alias tagEMRSELECTCLIPPATH EMRSELECTCLIPPATH; +alias tagEMRSELECTCLIPPATH* PEMRSELECTCLIPPATH; +alias tagEMRSELECTCLIPPATH EMRSETBKMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETBKMODE; +alias tagEMRSELECTCLIPPATH EMRSETMAPMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETMAPMODE; +alias tagEMRSELECTCLIPPATH EMRSETLAYOUT; +alias tagEMRSELECTCLIPPATH* PEMRSETLAYOUT; +alias tagEMRSELECTCLIPPATH EMRSETPOLYFILLMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETPOLYFILLMODE; +alias tagEMRSELECTCLIPPATH EMRSETROP2; +alias tagEMRSELECTCLIPPATH* PEMRSETROP2; +alias tagEMRSELECTCLIPPATH EMRSETSTRETCHBLTMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETSTRETCHBLTMODE; +alias tagEMRSELECTCLIPPATH EMRSETICMMODE; +alias tagEMRSELECTCLIPPATH* PEMRSETICMMODE; +alias tagEMRSELECTCLIPPATH EMRSETTEXTALIGN; +alias tagEMRSELECTCLIPPATH* PEMRSETTEXTALIGN; + +struct tagEMRSETMITERLIMIT { + EMR emr; + FLOAT eMiterLimit; +} +alias tagEMRSETMITERLIMIT EMRSETMITERLIMIT; +alias tagEMRSETMITERLIMIT* PEMRSETMITERLIMIT; + +struct tagEMRRESTOREDC { + EMR emr; + LONG iRelative; +} +alias tagEMRRESTOREDC EMRRESTOREDC; +alias tagEMRRESTOREDC* PEMRRESTOREDC; + +struct tagEMRSETARCDIRECTION { + EMR emr; + DWORD iArcDirection; + +} +alias tagEMRSETARCDIRECTION EMRSETARCDIRECTION; +alias tagEMRSETARCDIRECTION* PEMRSETARCDIRECTION; + +struct tagEMRSETMAPPERFLAGS { + EMR emr; + DWORD dwFlags; +} +alias tagEMRSETMAPPERFLAGS EMRSETMAPPERFLAGS; +alias tagEMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS; + +struct tagEMRSETTEXTCOLOR { + EMR emr; + COLORREF crColor; +} +alias tagEMRSETTEXTCOLOR EMRSETBKCOLOR; +alias tagEMRSETTEXTCOLOR* PEMRSETBKCOLOR; +alias tagEMRSETTEXTCOLOR EMRSETTEXTCOLOR; +alias tagEMRSETTEXTCOLOR* PEMRSETTEXTCOLOR; + +struct tagEMRSELECTOBJECT { + EMR emr; + DWORD ihObject; +} +alias tagEMRSELECTOBJECT EMRSELECTOBJECT; +alias tagEMRSELECTOBJECT* PEMRSELECTOBJECT; +alias tagEMRSELECTOBJECT EMRDELETEOBJECT; +alias tagEMRSELECTOBJECT* PEMRDELETEOBJECT; + +struct tagEMRSELECTPALETTE { + EMR emr; + DWORD ihPal; +} +alias tagEMRSELECTPALETTE EMRSELECTPALETTE; +alias tagEMRSELECTPALETTE* PEMRSELECTPALETTE; + +struct tagEMRRESIZEPALETTE { + EMR emr; + DWORD ihPal; + DWORD cEntries; +} +alias tagEMRRESIZEPALETTE EMRRESIZEPALETTE; +alias tagEMRRESIZEPALETTE* PEMRRESIZEPALETTE; + +struct tagEMRSETPALETTEENTRIES { + EMR emr; + DWORD ihPal; + DWORD iStart; + DWORD cEntries; + PALETTEENTRY aPalEntries[1]; +} +alias tagEMRSETPALETTEENTRIES EMRSETPALETTEENTRIES; +alias tagEMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES; + +struct tagEMRSETCOLORADJUSTMENT { + EMR emr; + COLORADJUSTMENT ColorAdjustment; +} +alias tagEMRSETCOLORADJUSTMENT EMRSETCOLORADJUSTMENT; +alias tagEMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT; + +struct tagEMRGDICOMMENT { + EMR emr; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRGDICOMMENT EMRGDICOMMENT; +alias tagEMRGDICOMMENT* PEMRGDICOMMENT; + +struct tagEMREOF { + EMR emr; + DWORD nPalEntries; + DWORD offPalEntries; + DWORD nSizeLast; + +} +alias tagEMREOF EMREOF; +alias tagEMREOF* PEMREOF; + +struct tagEMRLINETO { + EMR emr; + POINTL ptl; +} +alias tagEMRLINETO EMRLINETO; +alias tagEMRLINETO* PEMRLINETO; +alias tagEMRLINETO EMRMOVETOEX; +alias tagEMRLINETO* PEMRMOVETOEX; + +struct tagEMROFFSETCLIPRGN { + EMR emr; + POINTL ptlOffset; +} +alias tagEMROFFSETCLIPRGN EMROFFSETCLIPRGN; +alias tagEMROFFSETCLIPRGN* PEMROFFSETCLIPRGN; + +struct tagEMRFILLPATH { + EMR emr; + RECTL rclBounds; +} +alias tagEMRFILLPATH EMRFILLPATH; +alias tagEMRFILLPATH* PEMRFILLPATH; +alias tagEMRFILLPATH EMRSTROKEANDFILLPATH; +alias tagEMRFILLPATH* PEMRSTROKEANDFILLPATH; +alias tagEMRFILLPATH EMRSTROKEPATH; +alias tagEMRFILLPATH* PEMRSTROKEPATH; + +struct tagEMREXCLUDECLIPRECT { + EMR emr; + RECTL rclClip; +} +alias tagEMREXCLUDECLIPRECT EMREXCLUDECLIPRECT; +alias tagEMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT; +alias tagEMREXCLUDECLIPRECT EMRINTERSECTCLIPRECT; +alias tagEMREXCLUDECLIPRECT* PEMRINTERSECTCLIPRECT; + +struct tagEMRSETVIEWPORTORGEX { + EMR emr; + POINTL ptlOrigin; +} +alias tagEMRSETVIEWPORTORGEX EMRSETVIEWPORTORGEX; +alias tagEMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX; +alias tagEMRSETVIEWPORTORGEX EMRSETWINDOWORGEX; +alias tagEMRSETVIEWPORTORGEX* PEMRSETWINDOWORGEX; +alias tagEMRSETVIEWPORTORGEX EMRSETBRUSHORGEX; +alias tagEMRSETVIEWPORTORGEX* PEMRSETBRUSHORGEX; + +struct tagEMRSETVIEWPORTEXTEX { + EMR emr; + SIZEL szlExtent; +} +alias tagEMRSETVIEWPORTEXTEX EMRSETVIEWPORTEXTEX; +alias tagEMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX; +alias tagEMRSETVIEWPORTEXTEX EMRSETWINDOWEXTEX; +alias tagEMRSETVIEWPORTEXTEX* PEMRSETWINDOWEXTEX; + +struct tagEMRSCALEVIEWPORTEXTEX { + EMR emr; + LONG xNum; + LONG xDenom; + LONG yNum; + LONG yDenom; +} +alias tagEMRSCALEVIEWPORTEXTEX EMRSCALEVIEWPORTEXTEX; +alias tagEMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX; +alias tagEMRSCALEVIEWPORTEXTEX EMRSCALEWINDOWEXTEX; +alias tagEMRSCALEVIEWPORTEXTEX* PEMRSCALEWINDOWEXTEX; + +struct tagEMRSETWORLDTRANSFORM { + EMR emr; + XFORM xform; +} +alias tagEMRSETWORLDTRANSFORM EMRSETWORLDTRANSFORM; +alias tagEMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM; + +struct tagEMRMODIFYWORLDTRANSFORM { + EMR emr; + XFORM xform; + DWORD iMode; +} +alias tagEMRMODIFYWORLDTRANSFORM EMRMODIFYWORLDTRANSFORM; +alias tagEMRMODIFYWORLDTRANSFORM* PEMRMODIFYWORLDTRANSFORM; + +struct tagEMRSETPIXELV { + EMR emr; + POINTL ptlPixel; + COLORREF crColor; +} +alias tagEMRSETPIXELV EMRSETPIXELV; +alias tagEMRSETPIXELV* PEMRSETPIXELV; + +struct tagEMREXTFLOODFILL { + EMR emr; + POINTL ptlStart; + COLORREF crColor; + DWORD iMode; +} +alias tagEMREXTFLOODFILL EMREXTFLOODFILL; +alias tagEMREXTFLOODFILL* PEMREXTFLOODFILL; + +struct tagEMRELLIPSE { + EMR emr; + RECTL rclBox; +} +alias tagEMRELLIPSE EMRELLIPSE; +alias tagEMRELLIPSE* PEMRELLIPSE; +alias tagEMRELLIPSE EMRRECTANGLE; +alias tagEMRELLIPSE* PEMRRECTANGLE; + +struct tagEMRROUNDRECT { + EMR emr; + RECTL rclBox; + SIZEL szlCorner; +} +alias tagEMRROUNDRECT EMRROUNDRECT; +alias tagEMRROUNDRECT* PEMRROUNDRECT; + +struct tagEMRARC { + EMR emr; + RECTL rclBox; + POINTL ptlStart; + POINTL ptlEnd; +} +alias tagEMRARC EMRARC; +alias tagEMRARC* PEMRARC; +alias tagEMRARC EMRARCTO; +alias tagEMRARC* PEMRARCTO; +alias tagEMRARC EMRCHORD; +alias tagEMRARC* PEMRCHORD; +alias tagEMRARC EMRPIE; +alias tagEMRARC* PEMRPIE; + +struct tagEMRANGLEARC { + EMR emr; + POINTL ptlCenter; + DWORD nRadius; + FLOAT eStartAngle; + FLOAT eSweepAngle; +} +alias tagEMRANGLEARC EMRANGLEARC; +alias tagEMRANGLEARC* PEMRANGLEARC; + +struct tagEMRPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; +} +alias tagEMRPOLYLINE EMRPOLYLINE; +alias tagEMRPOLYLINE* PEMRPOLYLINE; +alias tagEMRPOLYLINE EMRPOLYBEZIER; +alias tagEMRPOLYLINE* PEMRPOLYBEZIER; +alias tagEMRPOLYLINE EMRPOLYGON; +alias tagEMRPOLYLINE* PEMRPOLYGON; +alias tagEMRPOLYLINE EMRPOLYBEZIERTO; +alias tagEMRPOLYLINE* PEMRPOLYBEZIERTO; +alias tagEMRPOLYLINE EMRPOLYLINETO; +alias tagEMRPOLYLINE* PEMRPOLYLINETO; + +struct tagEMRPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; +} +alias tagEMRPOLYLINE16 EMRPOLYLINE16; +alias tagEMRPOLYLINE16* PEMRPOLYLINE16; +alias tagEMRPOLYLINE16 EMRPOLYBEZIER16; +alias tagEMRPOLYLINE16* PEMRPOLYBEZIER16; +alias tagEMRPOLYLINE16 EMRPOLYGON16; +alias tagEMRPOLYLINE16* PEMRPOLYGON16; +alias tagEMRPOLYLINE16 EMRPOLYBEZIERTO16; +alias tagEMRPOLYLINE16* PEMRPOLYBEZIERTO16; +alias tagEMRPOLYLINE16 EMRPOLYLINETO16; +alias tagEMRPOLYLINE16* PEMRPOLYLINETO16; + +struct tagEMRPOLYDRAW { + EMR emr; + RECTL rclBounds; + DWORD cptl; + POINTL aptl[1]; + BYTE abTypes[1]; +} +alias tagEMRPOLYDRAW EMRPOLYDRAW; +alias tagEMRPOLYDRAW* PEMRPOLYDRAW; + +struct tagEMRPOLYDRAW16 { + EMR emr; + RECTL rclBounds; + DWORD cpts; + POINTS apts[1]; + BYTE abTypes[1]; +} +alias tagEMRPOLYDRAW16 EMRPOLYDRAW16; +alias tagEMRPOLYDRAW16* PEMRPOLYDRAW16; + +struct tagEMRPOLYPOLYLINE { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cptl; + DWORD aPolyCounts[1]; + POINTL aptl[1]; +} +alias tagEMRPOLYPOLYLINE EMRPOLYPOLYLINE; +alias tagEMRPOLYPOLYLINE* PEMRPOLYPOLYLINE; +alias tagEMRPOLYPOLYLINE EMRPOLYPOLYGON; +alias tagEMRPOLYPOLYLINE* PEMRPOLYPOLYGON; + +struct tagEMRPOLYPOLYLINE16 { + EMR emr; + RECTL rclBounds; + DWORD nPolys; + DWORD cpts; + DWORD aPolyCounts[1]; + POINTS apts[1]; +} +alias tagEMRPOLYPOLYLINE16 EMRPOLYPOLYLINE16; +alias tagEMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16; +alias tagEMRPOLYPOLYLINE16 EMRPOLYPOLYGON16; +alias tagEMRPOLYPOLYLINE16* PEMRPOLYPOLYGON16; + +struct tagEMRINVERTRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + BYTE RgnData[1]; +} +alias tagEMRINVERTRGN EMRINVERTRGN; +alias tagEMRINVERTRGN* PEMRINVERTRGN; +alias tagEMRINVERTRGN EMRPAINTRGN; +alias tagEMRINVERTRGN* PEMRPAINTRGN; + +struct tagEMRFILLRGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + BYTE RgnData[1]; +} +alias tagEMRFILLRGN EMRFILLRGN; +alias tagEMRFILLRGN* PEMRFILLRGN; + +struct tagEMRFRAMERGN { + EMR emr; + RECTL rclBounds; + DWORD cbRgnData; + DWORD ihBrush; + SIZEL szlStroke; + BYTE RgnData[1]; +} +alias tagEMRFRAMERGN EMRFRAMERGN; +alias tagEMRFRAMERGN* PEMRFRAMERGN; + +struct tagEMREXTSELECTCLIPRGN { + EMR emr; + DWORD cbRgnData; + DWORD iMode; + BYTE RgnData[1]; +} +alias tagEMREXTSELECTCLIPRGN EMREXTSELECTCLIPRGN; +alias tagEMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN; + +struct tagEMREXTTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + EMRTEXT emrtext; + +} +alias tagEMREXTTEXTOUTA EMREXTTEXTOUTA; +alias tagEMREXTTEXTOUTA* PEMREXTTEXTOUTA; +alias tagEMREXTTEXTOUTA EMREXTTEXTOUTW; +alias tagEMREXTTEXTOUTA* PEMREXTTEXTOUTW; + +struct tagEMRPOLYTEXTOUTA { + EMR emr; + RECTL rclBounds; + DWORD iGraphicsMode; + FLOAT exScale; + FLOAT eyScale; + LONG cStrings; + EMRTEXT aemrtext[1]; + +} +alias tagEMRPOLYTEXTOUTA EMRPOLYTEXTOUTA; +alias tagEMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA; +alias tagEMRPOLYTEXTOUTA EMRPOLYTEXTOUTW; +alias tagEMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTW; + +struct tagEMRBITBLT { + 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 tagEMRBITBLT EMRBITBLT; +alias tagEMRBITBLT* PEMRBITBLT; + +struct tagEMRSTRETCHBLT { + 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 tagEMRSTRETCHBLT EMRSTRETCHBLT; +alias tagEMRSTRETCHBLT* PEMRSTRETCHBLT; + +struct tagEMRMASKBLT { + 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 tagEMRMASKBLT EMRMASKBLT; +alias tagEMRMASKBLT* PEMRMASKBLT; + +struct tagEMRPLGBLT { + EMR emr; + RECTL rclBounds; + POINTL aptlDest[3]; + 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 tagEMRPLGBLT EMRPLGBLT; +alias tagEMRPLGBLT* PEMRPLGBLT; + +struct tagEMRSETDIBITSTODEVICE { + 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 tagEMRSETDIBITSTODEVICE EMRSETDIBITSTODEVICE; +alias tagEMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE; + +struct tagEMRSTRETCHDIBITS { + 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 tagEMRSTRETCHDIBITS EMRSTRETCHDIBITS; +alias tagEMRSTRETCHDIBITS* PEMRSTRETCHDIBITS; + +struct tagEMREXTCREATEFONTINDIRECTW { + EMR emr; + DWORD ihFont; + EXTLOGFONTW elfw; +} +alias tagEMREXTCREATEFONTINDIRECTW EMREXTCREATEFONTINDIRECTW; +alias tagEMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW; + +struct tagEMRCREATEPALETTE { + EMR emr; + DWORD ihPal; + LOGPALETTE lgpl; + +} +alias tagEMRCREATEPALETTE EMRCREATEPALETTE; +alias tagEMRCREATEPALETTE* PEMRCREATEPALETTE; + +struct tagEMRCREATEPEN { + EMR emr; + DWORD ihPen; + LOGPEN lopn; +} +alias tagEMRCREATEPEN EMRCREATEPEN; +alias tagEMRCREATEPEN* PEMRCREATEPEN; + +struct tagEMREXTCREATEPEN { + EMR emr; + DWORD ihPen; + DWORD offBmi; + DWORD cbBmi; + + DWORD offBits; + DWORD cbBits; + EXTLOGPEN elp; +} +alias tagEMREXTCREATEPEN EMREXTCREATEPEN; +alias tagEMREXTCREATEPEN* PEMREXTCREATEPEN; + +struct tagEMRCREATEBRUSHINDIRECT { + EMR emr; + DWORD ihBrush; + LOGBRUSH32 lb; + +} +alias tagEMRCREATEBRUSHINDIRECT EMRCREATEBRUSHINDIRECT; +alias tagEMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT; + +struct tagEMRCREATEMONOBRUSH { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + DWORD offBits; + DWORD cbBits; +} +alias tagEMRCREATEMONOBRUSH EMRCREATEMONOBRUSH; +alias tagEMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH; + +struct tagEMRCREATEDIBPATTERNBRUSHPT { + EMR emr; + DWORD ihBrush; + DWORD iUsage; + DWORD offBmi; + DWORD cbBmi; + + DWORD offBits; + DWORD cbBits; +} +alias tagEMRCREATEDIBPATTERNBRUSHPT EMRCREATEDIBPATTERNBRUSHPT; +alias tagEMRCREATEDIBPATTERNBRUSHPT* PEMRCREATEDIBPATTERNBRUSHPT; + +struct tagEMRFORMAT { + DWORD dSignature; + DWORD nVersion; + DWORD cbData; + DWORD offData; + +} +alias tagEMRFORMAT EMRFORMAT; +alias tagEMRFORMAT* PEMRFORMAT; + +// #if(WINVER >= 0x0400) + +struct tagEMRGLSRECORD { + EMR emr; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRGLSRECORD EMRGLSRECORD; +alias tagEMRGLSRECORD* PEMRGLSRECORD; + +struct tagEMRGLSBOUNDEDRECORD { + EMR emr; + RECTL rclBounds; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRGLSBOUNDEDRECORD EMRGLSBOUNDEDRECORD; +alias tagEMRGLSBOUNDEDRECORD* PEMRGLSBOUNDEDRECORD; + +struct tagEMRPIXELFORMAT { + EMR emr; + PIXELFORMATDESCRIPTOR pfd; +} +alias tagEMRPIXELFORMAT EMRPIXELFORMAT; +alias tagEMRPIXELFORMAT* PEMRPIXELFORMAT; + +struct tagEMRCREATECOLORSPACE { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEA lcs; +} +alias tagEMRCREATECOLORSPACE EMRCREATECOLORSPACE; +alias tagEMRCREATECOLORSPACE* PEMRCREATECOLORSPACE; + +struct tagEMRSETCOLORSPACE { + EMR emr; + DWORD ihCS; +} +alias tagEMRSETCOLORSPACE EMRSETCOLORSPACE; +alias tagEMRSETCOLORSPACE* PEMRSETCOLORSPACE; +alias tagEMRSETCOLORSPACE EMRSELECTCOLORSPACE; +alias tagEMRSETCOLORSPACE* PEMRSELECTCOLORSPACE; +alias tagEMRSETCOLORSPACE EMRDELETECOLORSPACE; +alias tagEMRSETCOLORSPACE* PEMRDELETECOLORSPACE; + +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) + +struct tagEMREXTESCAPE { + EMR emr; + INT iEscape; + INT cbEscData; + BYTE EscData[1]; +} +alias tagEMREXTESCAPE EMREXTESCAPE; +alias tagEMREXTESCAPE* PEMREXTESCAPE; +alias tagEMREXTESCAPE EMRDRAWESCAPE; +alias tagEMREXTESCAPE* PEMRDRAWESCAPE; + +struct tagEMRNAMEDESCAPE { + EMR emr; + INT iEscape; + INT cbDriver; + INT cbEscData; + BYTE EscData[1]; +} +alias tagEMRNAMEDESCAPE EMRNAMEDESCAPE; +alias tagEMRNAMEDESCAPE* PEMRNAMEDESCAPE; + +enum : uint { SETICMPROFILE_EMBEDED = 0x00000001 } + +struct tagEMRSETICMPROFILE { + EMR emr; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRSETICMPROFILE EMRSETICMPROFILE; +alias tagEMRSETICMPROFILE* PEMRSETICMPROFILE; +alias tagEMRSETICMPROFILE EMRSETICMPROFILEA; +alias tagEMRSETICMPROFILE* PEMRSETICMPROFILEA; +alias tagEMRSETICMPROFILE EMRSETICMPROFILEW; +alias tagEMRSETICMPROFILE* PEMRSETICMPROFILEW; + +enum : uint { CREATECOLORSPACE_EMBEDED = 0x00000001 } + +struct tagEMRCREATECOLORSPACEW { + EMR emr; + DWORD ihCS; + LOGCOLORSPACEW lcs; + DWORD dwFlags; + DWORD cbData; + BYTE Data[1]; +} +alias tagEMRCREATECOLORSPACEW EMRCREATECOLORSPACEW; +alias tagEMRCREATECOLORSPACEW* PEMRCREATECOLORSPACEW; + +enum : uint { COLORMATCHTOTARGET_EMBEDED = 0x00000001 } + +struct tagCOLORMATCHTOTARGET { + EMR emr; + DWORD dwAction; + DWORD dwFlags; + DWORD cbName; + DWORD cbData; + BYTE Data[1]; +} +alias tagCOLORMATCHTOTARGET EMRCOLORMATCHTOTARGET; +alias tagCOLORMATCHTOTARGET* PEMRCOLORMATCHTOTARGET; + +struct tagCOLORCORRECTPALETTE { + EMR emr; + DWORD ihPalette; + DWORD nFirstEntry; + DWORD nPalEntries; + DWORD nReserved; +} +alias tagCOLORCORRECTPALETTE EMRCOLORCORRECTPALETTE; +alias tagCOLORCORRECTPALETTE* PEMRCOLORCORRECTPALETTE; + +struct tagEMRALPHABLEND { + 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 tagEMRALPHABLEND EMRALPHABLEND; +alias tagEMRALPHABLEND* PEMRALPHABLEND; + +struct tagEMRGRADIENTFILL { + EMR emr; + RECTL rclBounds; + DWORD nVer; + DWORD nTri; + ULONG ulMode; + TRIVERTEX Ver[1]; +} +alias tagEMRGRADIENTFILL EMRGRADIENTFILL; +alias tagEMRGRADIENTFILL* PEMRGRADIENTFILL; + +struct tagEMRTRANSPARENTBLT { + 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 tagEMRTRANSPARENTBLT EMRTRANSPARENTBLT; +alias tagEMRTRANSPARENTBLT* PEMRTRANSPARENTBLT; + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { GDICOMMENT_IDENTIFIER = 0x43494447 } +enum : uint { GDICOMMENT_WINDOWS_METAFILE = 0x80000001 } +enum : uint { GDICOMMENT_BEGINGROUP = 0x00000002 } +enum : uint { GDICOMMENT_ENDGROUP = 0x00000003 } +enum : uint { GDICOMMENT_MULTIFORMATS = 0x40000004 } +enum : uint { EPS_SIGNATURE = 0x46535045 } +enum : uint { GDICOMMENT_UNICODE_STRING = 0x00000040 } +enum : uint { GDICOMMENT_UNICODE_END = 0x00000080 } + +// #endif /* NOMETAFILE */ + +extern(Windows) export BOOL wglCopyContext(HGLRC, HGLRC, UINT); +extern(Windows) export HGLRC wglCreateContext(HDC); +extern(Windows) export HGLRC wglCreateLayerContext(HDC, int); +extern(Windows) export BOOL wglDeleteContext(HGLRC); +extern(Windows) export HGLRC wglGetCurrentContext(); +extern(Windows) export HDC wglGetCurrentDC(); +extern(Windows) export PROC wglGetProcAddress(LPCSTR); +extern(Windows) export BOOL wglMakeCurrent(HDC, HGLRC); +extern(Windows) export BOOL wglShareLists(HGLRC, HGLRC); +extern(Windows) export BOOL wglUseFontBitmapsA(HDC, DWORD, DWORD, DWORD); +extern(Windows) export BOOL wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD); +// #ifdef UNICODE +alias wglUseFontBitmapsW wglUseFontBitmaps; +// #else +// #... +// #endif // !UNICODE +extern(Windows) export BOOL SwapBuffers(HDC); + +struct _POINTFLOAT { + FLOAT x; + FLOAT y; +} +alias _POINTFLOAT POINTFLOAT; +alias _POINTFLOAT* PPOINTFLOAT; + +struct _GLYPHMETRICSFLOAT { + FLOAT gmfBlackBoxX; + FLOAT gmfBlackBoxY; + POINTFLOAT gmfptGlyphOrigin; + FLOAT gmfCellIncX; + FLOAT gmfCellIncY; +} +alias _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT; +alias _GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT; +alias _GLYPHMETRICSFLOAT* LPGLYPHMETRICSFLOAT; + +enum : uint { WGL_FONT_LINES = 0 } +enum : uint { WGL_FONT_POLYGONS = 1 } +extern(Windows) export BOOL wglUseFontOutlinesA(HDC, DWORD, DWORD, DWORD, FLOAT, + FLOAT, int, LPGLYPHMETRICSFLOAT); +extern(Windows) export BOOL wglUseFontOutlinesW(HDC, DWORD, DWORD, DWORD, FLOAT, + FLOAT, int, LPGLYPHMETRICSFLOAT); +// #ifdef UNICODE +alias wglUseFontOutlinesW wglUseFontOutlines; +// #else +// #... +// #endif // !UNICODE + +struct tagLAYERPLANEDESCRIPTOR { + 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 tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR; +alias tagLAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR; +alias tagLAYERPLANEDESCRIPTOR* LPLAYERPLANEDESCRIPTOR; + +enum : uint { LPD_DOUBLEBUFFER = 0x00000001 } +enum : uint { LPD_STEREO = 0x00000002 } +enum : uint { LPD_SUPPORT_GDI = 0x00000010 } +enum : uint { LPD_SUPPORT_OPENGL = 0x00000020 } +enum : uint { LPD_SHARE_DEPTH = 0x00000040 } +enum : uint { LPD_SHARE_STENCIL = 0x00000080 } +enum : uint { LPD_SHARE_ACCUM = 0x00000100 } +enum : uint { LPD_SWAP_EXCHANGE = 0x00000200 } +enum : uint { LPD_SWAP_COPY = 0x00000400 } +enum : uint { LPD_TRANSPARENT = 0x00001000 } + +enum : uint { LPD_TYPE_RGBA = 0 } +enum : uint { LPD_TYPE_COLORINDEX = 1 } + +enum : uint { WGL_SWAP_MAIN_PLANE = 0x00000001 } +enum : uint { WGL_SWAP_OVERLAY1 = 0x00000002 } +enum : uint { WGL_SWAP_OVERLAY2 = 0x00000004 } +enum : uint { WGL_SWAP_OVERLAY3 = 0x00000008 } +enum : uint { WGL_SWAP_OVERLAY4 = 0x00000010 } +enum : uint { WGL_SWAP_OVERLAY5 = 0x00000020 } +enum : uint { WGL_SWAP_OVERLAY6 = 0x00000040 } +enum : uint { WGL_SWAP_OVERLAY7 = 0x00000080 } +enum : uint { WGL_SWAP_OVERLAY8 = 0x00000100 } +enum : uint { WGL_SWAP_OVERLAY9 = 0x00000200 } +enum : uint { WGL_SWAP_OVERLAY10 = 0x00000400 } +enum : uint { WGL_SWAP_OVERLAY11 = 0x00000800 } +enum : uint { WGL_SWAP_OVERLAY12 = 0x00001000 } +enum : uint { WGL_SWAP_OVERLAY13 = 0x00002000 } +enum : uint { WGL_SWAP_OVERLAY14 = 0x00004000 } +enum : uint { WGL_SWAP_OVERLAY15 = 0x00008000 } +enum : uint { WGL_SWAP_UNDERLAY1 = 0x00010000 } +enum : uint { WGL_SWAP_UNDERLAY2 = 0x00020000 } +enum : uint { WGL_SWAP_UNDERLAY3 = 0x00040000 } +enum : uint { WGL_SWAP_UNDERLAY4 = 0x00080000 } +enum : uint { WGL_SWAP_UNDERLAY5 = 0x00100000 } +enum : uint { WGL_SWAP_UNDERLAY6 = 0x00200000 } +enum : uint { WGL_SWAP_UNDERLAY7 = 0x00400000 } +enum : uint { WGL_SWAP_UNDERLAY8 = 0x00800000 } +enum : uint { WGL_SWAP_UNDERLAY9 = 0x01000000 } +enum : uint { WGL_SWAP_UNDERLAY10 = 0x02000000 } +enum : uint { WGL_SWAP_UNDERLAY11 = 0x04000000 } +enum : uint { WGL_SWAP_UNDERLAY12 = 0x08000000 } +enum : uint { WGL_SWAP_UNDERLAY13 = 0x10000000 } +enum : uint { WGL_SWAP_UNDERLAY14 = 0x20000000 } +enum : uint { WGL_SWAP_UNDERLAY15 = 0x40000000 } + +extern(Windows) export BOOL wglDescribeLayerPlane(HDC, int, int, UINT, + LPLAYERPLANEDESCRIPTOR); +extern(Windows) export int wglSetLayerPaletteEntries(HDC, int, int, int, + COLORREF *); +extern(Windows) export int wglGetLayerPaletteEntries(HDC, int, int, int, + COLORREF *); +extern(Windows) export BOOL wglRealizeLayerPalette(HDC, int, BOOL); +extern(Windows) export BOOL wglSwapLayerBuffers(HDC, UINT); + +// #if (WINVER >= 0x0500) + +struct _WGLSWAP { + HDC hdc; + UINT uiFlags; +} +alias _WGLSWAP WGLSWAP; +alias _WGLSWAP* PWGLSWAP; +alias _WGLSWAP* LPWGLSWAP; + +enum : uint { WGL_SWAPMULTIPLE_MAX = 16 } + +extern(Windows) export DWORD wglSwapMultipleBuffers(UINT, WGLSWAP *); + +// #endif // (WINVER >= 0x0500) + +// #endif /* NOGDI */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif /* _WINGDI_ */ + ADDED src/win32/winnls.d Index: src/win32/winnls.d ================================================================== --- src/win32/winnls.d +++ src/win32/winnls.d @@ -0,0 +1,1193 @@ +module win32.winnls; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.windef; +import win32.winbase; + +// #ifndef _WINNLS_ +// #define _WINNLS_ + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef NONLS + +// #ifdef _MAC +// #... +// #endif + +enum : uint { MAX_LEADBYTES = 12 } +enum : uint { MAX_DEFAULTCHAR = 2 } + +enum : uint { MB_PRECOMPOSED = 0x00000001 } +enum : uint { MB_COMPOSITE = 0x00000002 } +enum : uint { MB_USEGLYPHCHARS = 0x00000004 } +enum : uint { MB_ERR_INVALID_CHARS = 0x00000008 } + +enum : uint { WC_COMPOSITECHECK = 0x00000200 } +enum : uint { WC_DISCARDNS = 0x00000010 } +enum : uint { WC_SEPCHARS = 0x00000020 } +enum : uint { WC_DEFAULTCHAR = 0x00000040 } + +// #if(WINVER >= 0x0500) +enum : uint { WC_NO_BEST_FIT_CHARS = 0x00000400 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { CT_CTYPE1 = 0x00000001 } +enum : uint { CT_CTYPE2 = 0x00000002 } +enum : uint { CT_CTYPE3 = 0x00000004 } + +enum : uint { C1_UPPER = 0x0001 } +enum : uint { C1_LOWER = 0x0002 } +enum : uint { C1_DIGIT = 0x0004 } +enum : uint { C1_SPACE = 0x0008 } +enum : uint { C1_PUNCT = 0x0010 } +enum : uint { C1_CNTRL = 0x0020 } +enum : uint { C1_BLANK = 0x0040 } +enum : uint { C1_XDIGIT = 0x0080 } +enum : uint { C1_ALPHA = 0x0100 } +enum : uint { C1_DEFINED = 0x0200 } + +enum : uint { C2_LEFTTORIGHT = 0x0001 } +enum : uint { C2_RIGHTTOLEFT = 0x0002 } + +enum : uint { C2_EUROPENUMBER = 0x0003 } +enum : uint { C2_EUROPESEPARATOR = 0x0004 } +enum : uint { C2_EUROPETERMINATOR = 0x0005 } +enum : uint { C2_ARABICNUMBER = 0x0006 } +enum : uint { C2_COMMONSEPARATOR = 0x0007 } + +enum : uint { C2_BLOCKSEPARATOR = 0x0008 } +enum : uint { C2_SEGMENTSEPARATOR = 0x0009 } +enum : uint { C2_WHITESPACE = 0x000A } +enum : uint { C2_OTHERNEUTRAL = 0x000B } + +enum : uint { C2_NOTAPPLICABLE = 0x0000 } + +enum : uint { C3_NONSPACING = 0x0001 } +enum : uint { C3_DIACRITIC = 0x0002 } +enum : uint { C3_VOWELMARK = 0x0004 } +enum : uint { C3_SYMBOL = 0x0008 } + +enum : uint { C3_KATAKANA = 0x0010 } +enum : uint { C3_HIRAGANA = 0x0020 } +enum : uint { C3_HALFWIDTH = 0x0040 } +enum : uint { C3_FULLWIDTH = 0x0080 } +enum : uint { C3_IDEOGRAPH = 0x0100 } +enum : uint { C3_KASHIDA = 0x0200 } +enum : uint { C3_LEXICAL = 0x0400 } + +enum : uint { C3_ALPHA = 0x8000 } + +enum : uint { C3_NOTAPPLICABLE = 0x0000 } + +enum : uint { NORM_IGNORECASE = 0x00000001 } +enum : uint { NORM_IGNORENONSPACE = 0x00000002 } +enum : uint { NORM_IGNORESYMBOLS = 0x00000004 } + +enum : uint { NORM_IGNOREKANATYPE = 0x00010000 } +enum : uint { NORM_IGNOREWIDTH = 0x00020000 } + +enum : uint { MAP_FOLDCZONE = 0x00000010 } +enum : uint { MAP_PRECOMPOSED = 0x00000020 } +enum : uint { MAP_COMPOSITE = 0x00000040 } +enum : uint { MAP_FOLDDIGITS = 0x00000080 } + +// #if(WINVER >= 0x0500) +enum : uint { MAP_EXPAND_LIGATURES = 0x00002000 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { LCMAP_LOWERCASE = 0x00000100 } +enum : uint { LCMAP_UPPERCASE = 0x00000200 } +enum : uint { LCMAP_SORTKEY = 0x00000400 } +enum : uint { LCMAP_BYTEREV = 0x00000800 } + +enum : uint { LCMAP_HIRAGANA = 0x00100000 } +enum : uint { LCMAP_KATAKANA = 0x00200000 } +enum : uint { LCMAP_HALFWIDTH = 0x00400000 } +enum : uint { LCMAP_FULLWIDTH = 0x00800000 } + +enum : uint { LCMAP_LINGUISTIC_CASING = 0x01000000 } + +enum : uint { LCMAP_SIMPLIFIED_CHINESE = 0x02000000 } +enum : uint { LCMAP_TRADITIONAL_CHINESE = 0x04000000 } + +enum : uint { LGRPID_INSTALLED = 0x00000001 } +enum : uint { LGRPID_SUPPORTED = 0x00000002 } + +enum : uint { LCID_INSTALLED = 0x00000001 } +enum : uint { LCID_SUPPORTED = 0x00000002 } +enum : uint { LCID_ALTERNATE_SORTS = 0x00000004 } + +enum : uint { CP_INSTALLED = 0x00000001 } +enum : uint { CP_SUPPORTED = 0x00000002 } + +enum : uint { SORT_STRINGSORT = 0x00001000 } + +enum : uint { CSTR_LESS_THAN = 1 } +enum : uint { CSTR_EQUAL = 2 } +enum : uint { CSTR_GREATER_THAN = 3 } + +enum : uint { CP_ACP = 0 } +enum : uint { CP_OEMCP = 1 } +enum : uint { CP_MACCP = 2 } +enum : uint { CP_THREAD_ACP = 3 } +enum : uint { CP_SYMBOL = 42 } + +enum : uint { CP_UTF7 = 65000 } +enum : uint { CP_UTF8 = 65001 } + +enum : uint { CTRY_DEFAULT = 0 } + +enum : uint { CTRY_ALBANIA = 355 } +enum : uint { CTRY_ALGERIA = 213 } +enum : uint { CTRY_ARGENTINA = 54 } +enum : uint { CTRY_ARMENIA = 374 } +enum : uint { CTRY_AUSTRALIA = 61 } +enum : uint { CTRY_AUSTRIA = 43 } +enum : uint { CTRY_AZERBAIJAN = 994 } +enum : uint { CTRY_BAHRAIN = 973 } +enum : uint { CTRY_BELARUS = 375 } +enum : uint { CTRY_BELGIUM = 32 } +enum : uint { CTRY_BELIZE = 501 } +enum : uint { CTRY_BOLIVIA = 591 } +enum : uint { CTRY_BRAZIL = 55 } +enum : uint { CTRY_BRUNEI_DARUSSALAM = 673 } +enum : uint { CTRY_BULGARIA = 359 } +enum : uint { CTRY_CANADA = 2 } +enum : uint { CTRY_CARIBBEAN = 1 } +enum : uint { CTRY_CHILE = 56 } +enum : uint { CTRY_COLOMBIA = 57 } +enum : uint { CTRY_COSTA_RICA = 506 } +enum : uint { CTRY_CROATIA = 385 } +enum : uint { CTRY_CZECH = 420 } +enum : uint { CTRY_DENMARK = 45 } +enum : uint { CTRY_DOMINICAN_REPUBLIC = 1 } +enum : uint { CTRY_ECUADOR = 593 } +enum : uint { CTRY_EGYPT = 20 } +enum : uint { CTRY_EL_SALVADOR = 503 } +enum : uint { CTRY_ESTONIA = 372 } +enum : uint { CTRY_FAEROE_ISLANDS = 298 } +enum : uint { CTRY_FINLAND = 358 } +enum : uint { CTRY_FRANCE = 33 } +enum : uint { CTRY_GEORGIA = 995 } +enum : uint { CTRY_GERMANY = 49 } +enum : uint { CTRY_GREECE = 30 } +enum : uint { CTRY_GUATEMALA = 502 } +enum : uint { CTRY_HONDURAS = 504 } +enum : uint { CTRY_HONG_KONG = 852 } +enum : uint { CTRY_HUNGARY = 36 } +enum : uint { CTRY_ICELAND = 354 } +enum : uint { CTRY_INDIA = 91 } +enum : uint { CTRY_INDONESIA = 62 } +enum : uint { CTRY_IRAN = 981 } +enum : uint { CTRY_IRAQ = 964 } +enum : uint { CTRY_IRELAND = 353 } +enum : uint { CTRY_ISRAEL = 972 } +enum : uint { CTRY_ITALY = 39 } +enum : uint { CTRY_JAMAICA = 1 } +enum : uint { CTRY_JAPAN = 81 } +enum : uint { CTRY_JORDAN = 962 } +enum : uint { CTRY_KAZAKSTAN = 7 } +enum : uint { CTRY_KENYA = 254 } +enum : uint { CTRY_KUWAIT = 965 } +enum : uint { CTRY_KYRGYZSTAN = 996 } +enum : uint { CTRY_LATVIA = 371 } +enum : uint { CTRY_LEBANON = 961 } +enum : uint { CTRY_LIBYA = 218 } +enum : uint { CTRY_LIECHTENSTEIN = 41 } +enum : uint { CTRY_LITHUANIA = 370 } +enum : uint { CTRY_LUXEMBOURG = 352 } +enum : uint { CTRY_MACAU = 853 } +enum : uint { CTRY_MACEDONIA = 389 } +enum : uint { CTRY_MALAYSIA = 60 } +enum : uint { CTRY_MALDIVES = 960 } +enum : uint { CTRY_MEXICO = 52 } +enum : uint { CTRY_MONACO = 33 } +enum : uint { CTRY_MONGOLIA = 976 } +enum : uint { CTRY_MOROCCO = 212 } +enum : uint { CTRY_NETHERLANDS = 31 } +enum : uint { CTRY_NEW_ZEALAND = 64 } +enum : uint { CTRY_NICARAGUA = 505 } +enum : uint { CTRY_NORWAY = 47 } +enum : uint { CTRY_OMAN = 968 } +enum : uint { CTRY_PAKISTAN = 92 } +enum : uint { CTRY_PANAMA = 507 } +enum : uint { CTRY_PARAGUAY = 595 } +enum : uint { CTRY_PERU = 51 } +enum : uint { CTRY_PHILIPPINES = 63 } +enum : uint { CTRY_POLAND = 48 } +enum : uint { CTRY_PORTUGAL = 351 } +enum : uint { CTRY_PRCHINA = 86 } +enum : uint { CTRY_PUERTO_RICO = 1 } +enum : uint { CTRY_QATAR = 974 } +enum : uint { CTRY_ROMANIA = 40 } +enum : uint { CTRY_RUSSIA = 7 } +enum : uint { CTRY_SAUDI_ARABIA = 966 } +enum : uint { CTRY_SERBIA = 381 } +enum : uint { CTRY_SINGAPORE = 65 } +enum : uint { CTRY_SLOVAK = 421 } +enum : uint { CTRY_SLOVENIA = 386 } +enum : uint { CTRY_SOUTH_AFRICA = 27 } +enum : uint { CTRY_SOUTH_KOREA = 82 } +enum : uint { CTRY_SPAIN = 34 } +enum : uint { CTRY_SWEDEN = 46 } +enum : uint { CTRY_SWITZERLAND = 41 } +enum : uint { CTRY_SYRIA = 963 } +enum : uint { CTRY_TAIWAN = 886 } +enum : uint { CTRY_TATARSTAN = 7 } +enum : uint { CTRY_THAILAND = 66 } +enum : uint { CTRY_TRINIDAD_Y_TOBAGO = 1 } +enum : uint { CTRY_TUNISIA = 216 } +enum : uint { CTRY_TURKEY = 90 } +enum : uint { CTRY_UAE = 971 } +enum : uint { CTRY_UKRAINE = 380 } +enum : uint { CTRY_UNITED_KINGDOM = 44 } +enum : uint { CTRY_UNITED_STATES = 1 } +enum : uint { CTRY_URUGUAY = 598 } +enum : uint { CTRY_UZBEKISTAN = 7 } +enum : uint { CTRY_VENEZUELA = 58 } +enum : uint { CTRY_VIET_NAM = 84 } +enum : uint { CTRY_YEMEN = 967 } +enum : uint { CTRY_ZIMBABWE = 263 } + +enum : uint { LOCALE_NOUSEROVERRIDE = 0x80000000 } +enum : uint { LOCALE_USE_CP_ACP = 0x40000000 } + +// #if(WINVER >= 0x0400) +enum : uint { LOCALE_RETURN_NUMBER = 0x20000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { LOCALE_ILANGUAGE = 0x00000001 } +enum : uint { LOCALE_SLANGUAGE = 0x00000002 } +enum : uint { LOCALE_SENGLANGUAGE = 0x00001001 } +enum : uint { LOCALE_SABBREVLANGNAME = 0x00000003 } +enum : uint { LOCALE_SNATIVELANGNAME = 0x00000004 } + +enum : uint { LOCALE_ICOUNTRY = 0x00000005 } +enum : uint { LOCALE_SCOUNTRY = 0x00000006 } +enum : uint { LOCALE_SENGCOUNTRY = 0x00001002 } +enum : uint { LOCALE_SABBREVCTRYNAME = 0x00000007 } +enum : uint { LOCALE_SNATIVECTRYNAME = 0x00000008 } + +enum : uint { LOCALE_IDEFAULTLANGUAGE = 0x00000009 } +enum : uint { LOCALE_IDEFAULTCOUNTRY = 0x0000000A } +enum : uint { LOCALE_IDEFAULTCODEPAGE = 0x0000000B } +enum : uint { LOCALE_IDEFAULTANSICODEPAGE = 0x00001004 } +enum : uint { LOCALE_IDEFAULTMACCODEPAGE = 0x00001011 } + +enum : uint { LOCALE_SLIST = 0x0000000C } +enum : uint { LOCALE_IMEASURE = 0x0000000D } + +enum : uint { LOCALE_SDECIMAL = 0x0000000E } +enum : uint { LOCALE_STHOUSAND = 0x0000000F } +enum : uint { LOCALE_SGROUPING = 0x00000010 } +enum : uint { LOCALE_IDIGITS = 0x00000011 } +enum : uint { LOCALE_ILZERO = 0x00000012 } +enum : uint { LOCALE_INEGNUMBER = 0x00001010 } +enum : uint { LOCALE_SNATIVEDIGITS = 0x00000013 } + +enum : uint { LOCALE_SCURRENCY = 0x00000014 } +enum : uint { LOCALE_SINTLSYMBOL = 0x00000015 } +enum : uint { LOCALE_SMONDECIMALSEP = 0x00000016 } +enum : uint { LOCALE_SMONTHOUSANDSEP = 0x00000017 } +enum : uint { LOCALE_SMONGROUPING = 0x00000018 } +enum : uint { LOCALE_ICURRDIGITS = 0x00000019 } +enum : uint { LOCALE_IINTLCURRDIGITS = 0x0000001A } +enum : uint { LOCALE_ICURRENCY = 0x0000001B } +enum : uint { LOCALE_INEGCURR = 0x0000001C } + +enum : uint { LOCALE_SDATE = 0x0000001D } +enum : uint { LOCALE_STIME = 0x0000001E } +enum : uint { LOCALE_SSHORTDATE = 0x0000001F } +enum : uint { LOCALE_SLONGDATE = 0x00000020 } +enum : uint { LOCALE_STIMEFORMAT = 0x00001003 } +enum : uint { LOCALE_IDATE = 0x00000021 } +enum : uint { LOCALE_ILDATE = 0x00000022 } +enum : uint { LOCALE_ITIME = 0x00000023 } +enum : uint { LOCALE_ITIMEMARKPOSN = 0x00001005 } +enum : uint { LOCALE_ICENTURY = 0x00000024 } +enum : uint { LOCALE_ITLZERO = 0x00000025 } +enum : uint { LOCALE_IDAYLZERO = 0x00000026 } +enum : uint { LOCALE_IMONLZERO = 0x00000027 } +enum : uint { LOCALE_S1159 = 0x00000028 } +enum : uint { LOCALE_S2359 = 0x00000029 } + +enum : uint { LOCALE_ICALENDARTYPE = 0x00001009 } +enum : uint { LOCALE_IOPTIONALCALENDAR = 0x0000100B } +enum : uint { LOCALE_IFIRSTDAYOFWEEK = 0x0000100C } +enum : uint { LOCALE_IFIRSTWEEKOFYEAR = 0x0000100D } + +enum : uint { LOCALE_SDAYNAME1 = 0x0000002A } +enum : uint { LOCALE_SDAYNAME2 = 0x0000002B } +enum : uint { LOCALE_SDAYNAME3 = 0x0000002C } +enum : uint { LOCALE_SDAYNAME4 = 0x0000002D } +enum : uint { LOCALE_SDAYNAME5 = 0x0000002E } +enum : uint { LOCALE_SDAYNAME6 = 0x0000002F } +enum : uint { LOCALE_SDAYNAME7 = 0x00000030 } +enum : uint { LOCALE_SABBREVDAYNAME1 = 0x00000031 } +enum : uint { LOCALE_SABBREVDAYNAME2 = 0x00000032 } +enum : uint { LOCALE_SABBREVDAYNAME3 = 0x00000033 } +enum : uint { LOCALE_SABBREVDAYNAME4 = 0x00000034 } +enum : uint { LOCALE_SABBREVDAYNAME5 = 0x00000035 } +enum : uint { LOCALE_SABBREVDAYNAME6 = 0x00000036 } +enum : uint { LOCALE_SABBREVDAYNAME7 = 0x00000037 } +enum : uint { LOCALE_SMONTHNAME1 = 0x00000038 } +enum : uint { LOCALE_SMONTHNAME2 = 0x00000039 } +enum : uint { LOCALE_SMONTHNAME3 = 0x0000003A } +enum : uint { LOCALE_SMONTHNAME4 = 0x0000003B } +enum : uint { LOCALE_SMONTHNAME5 = 0x0000003C } +enum : uint { LOCALE_SMONTHNAME6 = 0x0000003D } +enum : uint { LOCALE_SMONTHNAME7 = 0x0000003E } +enum : uint { LOCALE_SMONTHNAME8 = 0x0000003F } +enum : uint { LOCALE_SMONTHNAME9 = 0x00000040 } +enum : uint { LOCALE_SMONTHNAME10 = 0x00000041 } +enum : uint { LOCALE_SMONTHNAME11 = 0x00000042 } +enum : uint { LOCALE_SMONTHNAME12 = 0x00000043 } +enum : uint { LOCALE_SMONTHNAME13 = 0x0000100E } +enum : uint { LOCALE_SABBREVMONTHNAME1 = 0x00000044 } +enum : uint { LOCALE_SABBREVMONTHNAME2 = 0x00000045 } +enum : uint { LOCALE_SABBREVMONTHNAME3 = 0x00000046 } +enum : uint { LOCALE_SABBREVMONTHNAME4 = 0x00000047 } +enum : uint { LOCALE_SABBREVMONTHNAME5 = 0x00000048 } +enum : uint { LOCALE_SABBREVMONTHNAME6 = 0x00000049 } +enum : uint { LOCALE_SABBREVMONTHNAME7 = 0x0000004A } +enum : uint { LOCALE_SABBREVMONTHNAME8 = 0x0000004B } +enum : uint { LOCALE_SABBREVMONTHNAME9 = 0x0000004C } +enum : uint { LOCALE_SABBREVMONTHNAME10 = 0x0000004D } +enum : uint { LOCALE_SABBREVMONTHNAME11 = 0x0000004E } +enum : uint { LOCALE_SABBREVMONTHNAME12 = 0x0000004F } +enum : uint { LOCALE_SABBREVMONTHNAME13 = 0x0000100F } + +enum : uint { LOCALE_SPOSITIVESIGN = 0x00000050 } +enum : uint { LOCALE_SNEGATIVESIGN = 0x00000051 } +enum : uint { LOCALE_IPOSSIGNPOSN = 0x00000052 } +enum : uint { LOCALE_INEGSIGNPOSN = 0x00000053 } +enum : uint { LOCALE_IPOSSYMPRECEDES = 0x00000054 } +enum : uint { LOCALE_IPOSSEPBYSPACE = 0x00000055 } +enum : uint { LOCALE_INEGSYMPRECEDES = 0x00000056 } +enum : uint { LOCALE_INEGSEPBYSPACE = 0x00000057 } + +// #if(WINVER >= 0x0400) +enum : uint { LOCALE_FONTSIGNATURE = 0x00000058 } +enum : uint { LOCALE_SISO639LANGNAME = 0x00000059 } +enum : uint { LOCALE_SISO3166CTRYNAME = 0x0000005A } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { LOCALE_IDEFAULTEBCDICCODEPAGE = 0x00001012 } +enum : uint { LOCALE_IPAPERSIZE = 0x0000100A } +enum : uint { LOCALE_SENGCURRNAME = 0x00001007 } +enum : uint { LOCALE_SNATIVECURRNAME = 0x00001008 } +enum : uint { LOCALE_SYEARMONTH = 0x00001006 } +enum : uint { LOCALE_SSORTNAME = 0x00001013 } +enum : uint { LOCALE_IDIGITSUBSTITUTION = 0x00001014 } + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { TIME_NOMINUTESORSECONDS = 0x00000001 } +enum : uint { TIME_NOSECONDS = 0x00000002 } +enum : uint { TIME_NOTIMEMARKER = 0x00000004 } +enum : uint { TIME_FORCE24HOURFORMAT = 0x00000008 } + +enum : uint { DATE_SHORTDATE = 0x00000001 } +enum : uint { DATE_LONGDATE = 0x00000002 } +enum : uint { DATE_USE_ALT_CALENDAR = 0x00000004 } + +// #if(WINVER >= 0x0500) +enum : uint { DATE_YEARMONTH = 0x00000008 } +enum : uint { DATE_LTRREADING = 0x00000010 } +enum : uint { DATE_RTLREADING = 0x00000020 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) +alias LOCALE_NOUSEROVERRIDE CAL_NOUSEROVERRIDE; +alias LOCALE_USE_CP_ACP CAL_USE_CP_ACP; +alias LOCALE_RETURN_NUMBER CAL_RETURN_NUMBER; +// #endif /* WINVER >= 0x0500 */ + +enum : uint { CAL_ICALINTVALUE = 0x00000001 } +enum : uint { CAL_SCALNAME = 0x00000002 } +enum : uint { CAL_IYEAROFFSETRANGE = 0x00000003 } +enum : uint { CAL_SERASTRING = 0x00000004 } +enum : uint { CAL_SSHORTDATE = 0x00000005 } +enum : uint { CAL_SLONGDATE = 0x00000006 } +enum : uint { CAL_SDAYNAME1 = 0x00000007 } +enum : uint { CAL_SDAYNAME2 = 0x00000008 } +enum : uint { CAL_SDAYNAME3 = 0x00000009 } +enum : uint { CAL_SDAYNAME4 = 0x0000000a } +enum : uint { CAL_SDAYNAME5 = 0x0000000b } +enum : uint { CAL_SDAYNAME6 = 0x0000000c } +enum : uint { CAL_SDAYNAME7 = 0x0000000d } +enum : uint { CAL_SABBREVDAYNAME1 = 0x0000000e } +enum : uint { CAL_SABBREVDAYNAME2 = 0x0000000f } +enum : uint { CAL_SABBREVDAYNAME3 = 0x00000010 } +enum : uint { CAL_SABBREVDAYNAME4 = 0x00000011 } +enum : uint { CAL_SABBREVDAYNAME5 = 0x00000012 } +enum : uint { CAL_SABBREVDAYNAME6 = 0x00000013 } +enum : uint { CAL_SABBREVDAYNAME7 = 0x00000014 } +enum : uint { CAL_SMONTHNAME1 = 0x00000015 } +enum : uint { CAL_SMONTHNAME2 = 0x00000016 } +enum : uint { CAL_SMONTHNAME3 = 0x00000017 } +enum : uint { CAL_SMONTHNAME4 = 0x00000018 } +enum : uint { CAL_SMONTHNAME5 = 0x00000019 } +enum : uint { CAL_SMONTHNAME6 = 0x0000001a } +enum : uint { CAL_SMONTHNAME7 = 0x0000001b } +enum : uint { CAL_SMONTHNAME8 = 0x0000001c } +enum : uint { CAL_SMONTHNAME9 = 0x0000001d } +enum : uint { CAL_SMONTHNAME10 = 0x0000001e } +enum : uint { CAL_SMONTHNAME11 = 0x0000001f } +enum : uint { CAL_SMONTHNAME12 = 0x00000020 } +enum : uint { CAL_SMONTHNAME13 = 0x00000021 } +enum : uint { CAL_SABBREVMONTHNAME1 = 0x00000022 } +enum : uint { CAL_SABBREVMONTHNAME2 = 0x00000023 } +enum : uint { CAL_SABBREVMONTHNAME3 = 0x00000024 } +enum : uint { CAL_SABBREVMONTHNAME4 = 0x00000025 } +enum : uint { CAL_SABBREVMONTHNAME5 = 0x00000026 } +enum : uint { CAL_SABBREVMONTHNAME6 = 0x00000027 } +enum : uint { CAL_SABBREVMONTHNAME7 = 0x00000028 } +enum : uint { CAL_SABBREVMONTHNAME8 = 0x00000029 } +enum : uint { CAL_SABBREVMONTHNAME9 = 0x0000002a } +enum : uint { CAL_SABBREVMONTHNAME10 = 0x0000002b } +enum : uint { CAL_SABBREVMONTHNAME11 = 0x0000002c } +enum : uint { CAL_SABBREVMONTHNAME12 = 0x0000002d } +enum : uint { CAL_SABBREVMONTHNAME13 = 0x0000002e } + +// #if(WINVER >= 0x0500) +enum : uint { CAL_SYEARMONTH = 0x0000002f } +enum : uint { CAL_ITWODIGITYEARMAX = 0x00000030 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { ENUM_ALL_CALENDARS = 0xffffffff } + +enum : uint { CAL_GREGORIAN = 1 } +enum : uint { CAL_GREGORIAN_US = 2 } +enum : uint { CAL_JAPAN = 3 } +enum : uint { CAL_TAIWAN = 4 } +enum : uint { CAL_KOREA = 5 } +enum : uint { CAL_HIJRI = 6 } +enum : uint { CAL_THAI = 7 } +enum : uint { CAL_HEBREW = 8 } +enum : uint { CAL_GREGORIAN_ME_FRENCH = 9 } +enum : uint { CAL_GREGORIAN_ARABIC = 10 } +enum : uint { CAL_GREGORIAN_XLIT_ENGLISH = 11 } +enum : uint { CAL_GREGORIAN_XLIT_FRENCH = 12 } + +enum : uint { LGRPID_WESTERN_EUROPE = 0x0001 } +enum : uint { LGRPID_CENTRAL_EUROPE = 0x0002 } +enum : uint { LGRPID_BALTIC = 0x0003 } +enum : uint { LGRPID_GREEK = 0x0004 } +enum : uint { LGRPID_CYRILLIC = 0x0005 } +enum : uint { LGRPID_TURKISH = 0x0006 } +enum : uint { LGRPID_JAPANESE = 0x0007 } +enum : uint { LGRPID_KOREAN = 0x0008 } +enum : uint { LGRPID_TRADITIONAL_CHINESE = 0x0009 } +enum : uint { LGRPID_SIMPLIFIED_CHINESE = 0x000a } +enum : uint { LGRPID_THAI = 0x000b } +enum : uint { LGRPID_HEBREW = 0x000c } +enum : uint { LGRPID_ARABIC = 0x000d } +enum : uint { LGRPID_VIETNAMESE = 0x000e } +enum : uint { LGRPID_INDIC = 0x000f } +enum : uint { LGRPID_GEORGIAN = 0x0010 } +enum : uint { LGRPID_ARMENIAN = 0x0011 } + +alias DWORD LGRPID; + +alias DWORD LCTYPE; + +alias DWORD CALTYPE; + +alias DWORD CALID; + +struct _cpinfo { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; +} +alias _cpinfo CPINFO; +alias _cpinfo* LPCPINFO; + +struct _cpinfoexA { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; + WCHAR UnicodeDefaultChar; + UINT CodePage; + CHAR CodePageName[MAX_PATH]; +} +alias _cpinfoexA CPINFOEXA; +alias _cpinfoexA* LPCPINFOEXA; + +struct _cpinfoexW { + UINT MaxCharSize; + BYTE DefaultChar[MAX_DEFAULTCHAR]; + BYTE LeadByte[MAX_LEADBYTES]; + WCHAR UnicodeDefaultChar; + UINT CodePage; + WCHAR CodePageName[MAX_PATH]; +} +alias _cpinfoexW CPINFOEXW; +alias _cpinfoexW* LPCPINFOEXW; + +// #ifdef UNICODE +alias CPINFOEXW CPINFOEX; +alias LPCPINFOEXW LPCPINFOEX; +// #else +// ... +// #endif // UNICODE + +struct _numberfmtA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; +} +alias _numberfmtA NUMBERFMTA; +alias _numberfmtA* LPNUMBERFMTA; + +struct _numberfmtW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; +} +alias _numberfmtW NUMBERFMTW; +alias _numberfmtW* LPNUMBERFMTW; + +// #ifdef UNICODE +alias NUMBERFMTW NUMBERFMT; +alias LPNUMBERFMTW LPNUMBERFMT; +// #else +// ... +// #endif // UNICODE + +struct _currencyfmtA { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPSTR lpDecimalSep; + LPSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPSTR lpCurrencySymbol; +} +alias _currencyfmtA CURRENCYFMTA; +alias _currencyfmtA* LPCURRENCYFMTA; + +struct _currencyfmtW { + UINT NumDigits; + UINT LeadingZero; + UINT Grouping; + LPWSTR lpDecimalSep; + LPWSTR lpThousandSep; + UINT NegativeOrder; + UINT PositiveOrder; + LPWSTR lpCurrencySymbol; +} +alias _currencyfmtW CURRENCYFMTW; +alias _currencyfmtW* LPCURRENCYFMTW; + +// #ifdef UNICODE +alias CURRENCYFMTW CURRENCYFMT; +alias LPCURRENCYFMTW LPCURRENCYFMT; +// #else +// ... +// #endif // UNICODE + +alias LONG GEOID; +alias DWORD GEOTYPE; +alias DWORD GEOCLASS; + +enum { GEOID_NOT_AVAILABLE = -1 } + +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 = 0x000B, +} + +enum SYSGEOCLASS { + GEOCLASS_NATION = 16, + GEOCLASS_REGION = 14, +} + +// #ifdef STRICT + +// ... + +// ... + +// #else // !STRICT + +alias FARPROC LANGUAGEGROUP_ENUMPROCA; +alias FARPROC LANGGROUPLOCALE_ENUMPROCA; +alias FARPROC UILANGUAGE_ENUMPROCA; +alias FARPROC LOCALE_ENUMPROCA; +alias FARPROC CODEPAGE_ENUMPROCA; +alias FARPROC DATEFMT_ENUMPROCA; +alias FARPROC DATEFMT_ENUMPROCEXA; +alias FARPROC TIMEFMT_ENUMPROCA; +alias FARPROC CALINFO_ENUMPROCA; +alias FARPROC CALINFO_ENUMPROCEXA; +alias FARPROC GEO_ENUMPROC; + +alias FARPROC LANGUAGEGROUP_ENUMPROCW; +alias FARPROC LANGGROUPLOCALE_ENUMPROCW; +alias FARPROC UILANGUAGE_ENUMPROCW; +alias FARPROC LOCALE_ENUMPROCW; +alias FARPROC CODEPAGE_ENUMPROCW; +alias FARPROC DATEFMT_ENUMPROCW; +alias FARPROC DATEFMT_ENUMPROCEXW; +alias FARPROC TIMEFMT_ENUMPROCW; +alias FARPROC CALINFO_ENUMPROCW; +alias FARPROC CALINFO_ENUMPROCEXW; + +// #endif // !STRICT + +// #ifdef UNICODE + +alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC; +alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC; +alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC; +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 CALINFO_ENUMPROCW CALINFO_ENUMPROC; +alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX; + +// #else + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif // !UNICODE + +extern(Windows) export BOOL IsValidCodePage( + UINT CodePage); + +extern(Windows) export UINT GetACP(); + +extern(Windows) export UINT GetOEMCP(); + +extern(Windows) export BOOL GetCPInfo( + UINT CodePage, + LPCPINFO lpCPInfo); + +extern(Windows) export BOOL GetCPInfoExA( + UINT CodePage, + DWORD dwFlags, + LPCPINFOEXA lpCPInfoEx); +extern(Windows) export BOOL GetCPInfoExW( + UINT CodePage, + DWORD dwFlags, + LPCPINFOEXW lpCPInfoEx); +// #ifdef UNICODE +alias GetCPInfoExW GetCPInfoEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL IsDBCSLeadByte( + BYTE TestChar); + +extern(Windows) export BOOL IsDBCSLeadByteEx( + UINT CodePage, + BYTE TestChar); + +extern(Windows) export int MultiByteToWideChar( + UINT CodePage, + DWORD dwFlags, + LPCSTR lpMultiByteStr, + int cbMultiByte, + LPWSTR lpWideCharStr, + int cchWideChar); + +extern(Windows) export int WideCharToMultiByte( + UINT CodePage, + DWORD dwFlags, + LPCWSTR lpWideCharStr, + int cchWideChar, + LPSTR lpMultiByteStr, + int cbMultiByte, + LPCSTR lpDefaultChar, + LPBOOL lpUsedDefaultChar); + +extern(Windows) export int CompareStringA( + LCID Locale, + DWORD dwCmpFlags, + LPCSTR lpString1, + int cchCount1, + LPCSTR lpString2, + int cchCount2); +extern(Windows) export int CompareStringW( + LCID Locale, + DWORD dwCmpFlags, + LPCWSTR lpString1, + int cchCount1, + LPCWSTR lpString2, + int cchCount2); +// #ifdef UNICODE +alias CompareStringW CompareString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int LCMapStringA( + LCID Locale, + DWORD dwMapFlags, + LPCSTR lpSrcStr, + int cchSrc, + LPSTR lpDestStr, + int cchDest); +extern(Windows) export int LCMapStringW( + LCID Locale, + DWORD dwMapFlags, + LPCWSTR lpSrcStr, + int cchSrc, + LPWSTR lpDestStr, + int cchDest); +// #ifdef UNICODE +alias LCMapStringW LCMapString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int GetLocaleInfoA( + LCID Locale, + LCTYPE LCType, + LPSTR lpLCData, + int cchData); +extern(Windows) export int GetLocaleInfoW( + LCID Locale, + LCTYPE LCType, + LPWSTR lpLCData, + int cchData); +// #ifdef UNICODE +alias GetLocaleInfoW GetLocaleInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetLocaleInfoA( + LCID Locale, + LCTYPE LCType, + LPCSTR lpLCData); +extern(Windows) export BOOL SetLocaleInfoW( + LCID Locale, + LCTYPE LCType, + LPCWSTR lpLCData); +// #ifdef UNICODE +alias SetLocaleInfoW SetLocaleInfo; +// #else +// #... +// #endif // !UNICODE + +// #if (WINVER >= 0x040A) +extern(Windows) export int GetCalendarInfoA( + LCID Locale, + CALID Calendar, + CALTYPE CalType, + LPSTR lpCalData, + int cchData, + LPDWORD lpValue); +extern(Windows) export int GetCalendarInfoW( + LCID Locale, + CALID Calendar, + CALTYPE CalType, + LPWSTR lpCalData, + int cchData, + LPDWORD lpValue); +// #ifdef UNICODE +alias GetCalendarInfoW GetCalendarInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetCalendarInfoA( + LCID Locale, + CALID Calendar, + CALTYPE CalType, + LPCSTR lpCalData); +extern(Windows) export BOOL SetCalendarInfoW( + LCID Locale, + CALID Calendar, + CALTYPE CalType, + LPCWSTR lpCalData); +// #ifdef UNICODE +alias SetCalendarInfoW SetCalendarInfo; +// #else +// #... +// #endif // !UNICODE +// #endif + +extern(Windows) export int GetTimeFormatA( + LCID Locale, + DWORD dwFlags, + SYSTEMTIME *lpTime, + LPCSTR lpFormat, + LPSTR lpTimeStr, + int cchTime); +extern(Windows) export int GetTimeFormatW( + LCID Locale, + DWORD dwFlags, + SYSTEMTIME *lpTime, + LPCWSTR lpFormat, + LPWSTR lpTimeStr, + int cchTime); +// #ifdef UNICODE +alias GetTimeFormatW GetTimeFormat; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int GetDateFormatA( + LCID Locale, + DWORD dwFlags, + SYSTEMTIME *lpDate, + LPCSTR lpFormat, + LPSTR lpDateStr, + int cchDate); +extern(Windows) export int GetDateFormatW( + LCID Locale, + DWORD dwFlags, + SYSTEMTIME *lpDate, + LPCWSTR lpFormat, + LPWSTR lpDateStr, + int cchDate); +// #ifdef UNICODE +alias GetDateFormatW GetDateFormat; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int GetNumberFormatA( + LCID Locale, + DWORD dwFlags, + LPCSTR lpValue, + NUMBERFMTA *lpFormat, + LPSTR lpNumberStr, + int cchNumber); +extern(Windows) export int GetNumberFormatW( + LCID Locale, + DWORD dwFlags, + LPCWSTR lpValue, + NUMBERFMTW *lpFormat, + LPWSTR lpNumberStr, + int cchNumber); +// #ifdef UNICODE +alias GetNumberFormatW GetNumberFormat; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int GetCurrencyFormatA( + LCID Locale, + DWORD dwFlags, + LPCSTR lpValue, + CURRENCYFMTA *lpFormat, + LPSTR lpCurrencyStr, + int cchCurrency); +extern(Windows) export int GetCurrencyFormatW( + LCID Locale, + DWORD dwFlags, + LPCWSTR lpValue, + CURRENCYFMTW *lpFormat, + LPWSTR lpCurrencyStr, + int cchCurrency); +// #ifdef UNICODE +alias GetCurrencyFormatW GetCurrencyFormat; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumCalendarInfoA( + CALINFO_ENUMPROCA lpCalInfoEnumProc, + LCID Locale, + CALID Calendar, + CALTYPE CalType); +extern(Windows) export BOOL EnumCalendarInfoW( + CALINFO_ENUMPROCW lpCalInfoEnumProc, + LCID Locale, + CALID Calendar, + CALTYPE CalType); +// #ifdef UNICODE +alias EnumCalendarInfoW EnumCalendarInfo; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL EnumCalendarInfoExA( + CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx, + LCID Locale, + CALID Calendar, + CALTYPE CalType); +extern(Windows) export BOOL EnumCalendarInfoExW( + CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx, + LCID Locale, + CALID Calendar, + CALTYPE CalType); +// #ifdef UNICODE +alias EnumCalendarInfoExW EnumCalendarInfoEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL EnumTimeFormatsA( + TIMEFMT_ENUMPROCA lpTimeFmtEnumProc, + LCID Locale, + DWORD dwFlags); +extern(Windows) export BOOL EnumTimeFormatsW( + TIMEFMT_ENUMPROCW lpTimeFmtEnumProc, + LCID Locale, + DWORD dwFlags); +// #ifdef UNICODE +alias EnumTimeFormatsW EnumTimeFormats; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumDateFormatsA( + DATEFMT_ENUMPROCA lpDateFmtEnumProc, + LCID Locale, + DWORD dwFlags); +extern(Windows) export BOOL EnumDateFormatsW( + DATEFMT_ENUMPROCW lpDateFmtEnumProc, + LCID Locale, + DWORD dwFlags); +// #ifdef UNICODE +alias EnumDateFormatsW EnumDateFormats; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL EnumDateFormatsExA( + DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx, + LCID Locale, + DWORD dwFlags); +extern(Windows) export BOOL EnumDateFormatsExW( + DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx, + LCID Locale, + DWORD dwFlags); +// #ifdef UNICODE +alias EnumDateFormatsExW EnumDateFormatsEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL IsValidLanguageGroup( + LGRPID LanguageGroup, + DWORD dwFlags); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL IsValidLocale( + LCID Locale, + DWORD dwFlags); + +extern(Windows) export int GetGeoInfoA( + GEOID Location, + GEOTYPE GeoType, + LPSTR lpGeoData, + int cchData, + LANGID LangId); +extern(Windows) export int GetGeoInfoW( + GEOID Location, + GEOTYPE GeoType, + LPWSTR lpGeoData, + int cchData, + LANGID LangId); +// #ifdef UNICODE +alias GetGeoInfoW GetGeoInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumSystemGeoID( + GEOCLASS GeoClass, + GEOID ParentGeoId, + GEO_ENUMPROC lpGeoEnumProc); + +extern(Windows) export GEOID GetUserGeoID( + GEOCLASS GeoClass); + +extern(Windows) export BOOL SetUserGeoID( + GEOID GeoId); + +extern(Windows) export LCID ConvertDefaultLocale( + LCID Locale); + +extern(Windows) export LCID GetThreadLocale(); + +extern(Windows) export BOOL SetThreadLocale( + LCID Locale + ); + +// #if(WINVER >= 0x0500) +extern(Windows) export LANGID GetSystemDefaultUILanguage(); + +extern(Windows) export LANGID GetUserDefaultUILanguage(); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export LANGID GetSystemDefaultLangID(); + +extern(Windows) export LANGID GetUserDefaultLangID(); + +extern(Windows) export LCID GetSystemDefaultLCID(); + +extern(Windows) export LCID GetUserDefaultLCID(); + +extern(Windows) export BOOL GetStringTypeExA( + LCID Locale, + DWORD dwInfoType, + LPCSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); +extern(Windows) export BOOL GetStringTypeExW( + LCID Locale, + DWORD dwInfoType, + LPCWSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); +// #ifdef UNICODE +alias GetStringTypeExW GetStringTypeEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetStringTypeA( + LCID Locale, + DWORD dwInfoType, + LPCSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); + +extern(Windows) export BOOL GetStringTypeW( + DWORD dwInfoType, + LPCWSTR lpSrcStr, + int cchSrc, + LPWORD lpCharType); + +extern(Windows) export int FoldStringA( + DWORD dwMapFlags, + LPCSTR lpSrcStr, + int cchSrc, + LPSTR lpDestStr, + int cchDest); +extern(Windows) export int FoldStringW( + DWORD dwMapFlags, + LPCWSTR lpSrcStr, + int cchSrc, + LPWSTR lpDestStr, + int cchDest); +// #ifdef UNICODE +alias FoldStringW FoldString; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL EnumSystemLanguageGroupsA( + LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc, + DWORD dwFlags, + LONG_PTR lParam); +extern(Windows) export BOOL EnumSystemLanguageGroupsW( + LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc, + DWORD dwFlags, + LONG_PTR lParam); +// #ifdef UNICODE +alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumLanguageGroupLocalesA( + LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc, + LGRPID LanguageGroup, + DWORD dwFlags, + LONG_PTR lParam); +extern(Windows) export BOOL EnumLanguageGroupLocalesW( + LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc, + LGRPID LanguageGroup, + DWORD dwFlags, + LONG_PTR lParam); +// #ifdef UNICODE +alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumUILanguagesA( + UILANGUAGE_ENUMPROCA lpUILanguageEnumProc, + DWORD dwFlags, + LONG_PTR lParam); +extern(Windows) export BOOL EnumUILanguagesW( + UILANGUAGE_ENUMPROCW lpUILanguageEnumProc, + DWORD dwFlags, + LONG_PTR lParam); +// #ifdef UNICODE +alias EnumUILanguagesW EnumUILanguages; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL EnumSystemLocalesA( + LOCALE_ENUMPROCA lpLocaleEnumProc, + DWORD dwFlags); +extern(Windows) export BOOL EnumSystemLocalesW( + LOCALE_ENUMPROCW lpLocaleEnumProc, + DWORD dwFlags); +// #ifdef UNICODE +alias EnumSystemLocalesW EnumSystemLocales; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumSystemCodePagesA( + CODEPAGE_ENUMPROCA lpCodePageEnumProc, + DWORD dwFlags); +extern(Windows) export BOOL EnumSystemCodePagesW( + CODEPAGE_ENUMPROCW lpCodePageEnumProc, + DWORD dwFlags); +// #ifdef UNICODE +alias EnumSystemCodePagesW EnumSystemCodePages; +// #else +// #... +// #endif // !UNICODE + +// #endif // NONLS + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINNLS_ ADDED src/win32/winnt.d Index: src/win32/winnt.d ================================================================== --- src/win32/winnt.d +++ src/win32/winnt.d @@ -0,0 +1,5765 @@ +module win32.winnt; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.windef; +alias void _TEB; +alias void _EXCEPTION_REGISTRATION_RECORD; +private extern(C) { + int memcmp(void*, void*, uint); + void* memmove(void*, void*, uint); + void* memcpy(void*, void*, uint); + void* memset(void*, uint, uint); +} + +// #ifndef _WINNT_ +// #define _WINNT_ + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #include +enum : uint { ANYSIZE_ARRAY = 1 } + +// #if defined(_M_MRX000) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) && defined(ENABLE_RESTRICTED) +// #... +// #else +// #define RESTRICTED_POINTER +// #endif + +// #if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64) || defined(_M_AMD64) +// #... +// #if defined(_WIN64) +// #... +// #else +// #... +// #endif +// #else +// #define UNALIGNED +// #define UNALIGNED64 +// #endif + +// #if defined(_WIN64) || defined(_M_ALPHA) +// #... +// #... +// #else +const uint MAX_NATURAL_ALIGNMENT = DWORD.sizeof; +enum : uint { MEMORY_ALLOCATION_ALIGNMENT = 8 } +// #endif + +// #ifdef __cplusplus +// #if _MSC_VER >= 1300 +// #define TYPE_ALIGNMENT( t ) __alignof(t) +// #endif +// #else +// #... +// ... +// #endif + +// #if defined(_WIN64) + +// #... +// ... + +// #... + +// #else + +// #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD ) + +// #endif + +// #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] + +// #if !defined(_MAC) && (defined(_M_MRX000) || defined(_M_AMD64) || defined(_M_IA64)) && (_MSC_VER >= 1100) && !(defined(MIDL_PASS) || defined(RC_INVOKED)) +// #... +// ... +// #if defined(_WIN64) +// #... +// #else +// #... +// #endif +// #else +// #if defined(_MAC) && defined(_MAC_INT_64) +// #... +// ... +// #else +// #define POINTER_64 +alias uint POINTER_64_INT; +// #endif +alias void* POINTER_32; +// #endif + +// #if defined(_IA64_) || defined(_AMD64_) +// #... +// #else +alias POINTER_32 FIRMWARE_PTR; +// #endif + +// #include + +// #if (defined(_M_IX86) || defined(_M_IA64) || defined(_M_AMD64)) && !defined(MIDL_PASS) +// #define DECLSPEC_IMPORT __declspec(dllimport) +// #else +// #... +// #endif + +// #ifndef DECLSPEC_NORETURN +// #if (_MSC_VER >= 1200) && !defined(MIDL_PASS) +// #define DECLSPEC_NORETURN __declspec(noreturn) +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_ALIGN +// #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) +// #define DECLSPEC_ALIGN(x) __declspec(align(x)) +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_CACHEALIGN +// #define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(128) +// #endif + +// #ifndef DECLSPEC_UUID +// #if (_MSC_VER >= 1100) && defined (__cplusplus) +// #define DECLSPEC_UUID(x) __declspec(uuid(x)) +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_NOVTABLE +// #if (_MSC_VER >= 1100) && defined(__cplusplus) +// #define DECLSPEC_NOVTABLE __declspec(novtable) +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_SELECTANY +// #if (_MSC_VER >= 1100) +// #define DECLSPEC_SELECTANY __declspec(selectany) +// #else +// #... +// #endif +// #endif + +// #ifndef NOP_FUNCTION +// #if (_MSC_VER >= 1210) +// #... +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_ADDRSAFE +// #if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64)) +// #... +// #else +// #define DECLSPEC_ADDRSAFE +// #endif +// #endif + +// #ifndef FORCEINLINE +// #if (_MSC_VER >= 1200) +// #define FORCEINLINE __forceinline +// #else +// #... +// #endif +// #endif + +// #ifndef DECLSPEC_DEPRECATED +// #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) +// #define DECLSPEC_DEPRECATED __declspec(deprecated) +// #define DEPRECATE_SUPPORTED +// #else +// #... +// #... +// #endif +// #endif + +alias void* PVOID; +deprecated alias void* PVOID64; /* warning: 64-bit */ + +// #if ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)) && !defined(_M_AMD64) +// #define NTAPI __stdcall +// #else +// #... +// #... +// #endif + +// #if !defined(_NTSYSTEM_) +// #define NTSYSAPI DECLSPEC_IMPORT +// #define NTSYSCALLAPI DECLSPEC_IMPORT +// #else +// #... +// #if defined(_NTDLLBUILD_) +// #... +// #else +// #... +// #endif + +// #endif + +// #ifndef VOID +alias void VOID; +alias char CHAR; +alias short SHORT; +alias int LONG; +// #endif + +// #ifndef _MAC +alias wchar WCHAR; +// #else + +// ... +// #endif + +alias WCHAR* PWCHAR; +alias WCHAR* LPWCH; +alias WCHAR* PWCH; +alias WCHAR* LPCWCH; +alias WCHAR* PCWCH; +alias WCHAR* NWPSTR; +alias WCHAR* LPWSTR; +alias WCHAR* PWSTR; +alias WCHAR* LPUWSTR; +alias WCHAR* PUWSTR; + +alias WCHAR* LPCWSTR; +alias WCHAR* PCWSTR; +alias WCHAR* LPCUWSTR; +alias WCHAR* PCUWSTR; + +alias CHAR* PCHAR; +alias CHAR* LPCH; +alias CHAR* PCH; + +alias CHAR* LPCCH; +alias CHAR* PCCH; +alias CHAR* NPSTR; +alias CHAR* LPSTR; +alias CHAR* PSTR; +alias CHAR* LPCSTR; +alias CHAR* PCSTR; + +// #ifdef UNICODE // r_winnt + +// #ifndef _TCHAR_DEFINED +alias WCHAR TCHAR; +alias WCHAR* PTCHAR; +alias WCHAR TBYTE; +alias WCHAR* PTBYTE; +// #define _TCHAR_DEFINED +// #endif /* !_TCHAR_DEFINED */ + +alias LPWSTR LPTCH; +alias LPWSTR PTCH; +alias LPWSTR PTSTR; +alias LPWSTR LPTSTR; +alias LPCWSTR PCTSTR; +alias LPCWSTR LPCTSTR; +alias LPUWSTR PUTSTR; +alias LPUWSTR LPUTSTR; +alias LPCUWSTR PCUTSTR; +alias LPCUWSTR LPCUTSTR; +alias LPWSTR LP; +// #define __TEXT(quote) L##quote + +// #else /* UNICODE */ // r_winnt + +// #ifndef _TCHAR_DEFINED +// ... +// #... +// #endif /* !_TCHAR_DEFINED */ + +// ... +// #... + +// #endif /* UNICODE */ // r_winnt +TCHAR[] TEXT(TCHAR[] quote){ return quote; } + +alias SHORT* PSHORT; +alias LONG* PLONG; + +// #ifdef STRICT +alias void* HANDLE; +// #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name +// #else +// ... +// #... +// #endif +alias HANDLE* PHANDLE; + +alias BYTE FCHAR; +alias WORD FSHORT; +alias DWORD FLONG; + +// #ifndef _HRESULT_DEFINED +// #define _HRESULT_DEFINED +alias LONG HRESULT; + +// #endif // !_HRESULT_DEFINED + +// #ifdef __cplusplus +// #define EXTERN_C extern "C" +// #else +// #... +// #endif + +// #if defined(_WIN32) || defined(_MPPC_) + +// #ifdef _68K_ +// #... +// #else +// #define STDMETHODCALLTYPE __stdcall +// #endif +// #define STDMETHODVCALLTYPE __cdecl + +// #define STDAPICALLTYPE __stdcall +// #define STDAPIVCALLTYPE __cdecl + +// #else + +// #... +// #... + +// #... +// #... + +// #endif + +// #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE +// #define STDAPI_(type) EXTERN_C type STDAPICALLTYPE + +// #define STDMETHODIMP HRESULT STDMETHODCALLTYPE +// #define STDMETHODIMP_(type) type STDMETHODCALLTYPE + +// #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE +// #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE + +// #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE +// #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE + +alias char CCHAR; +alias DWORD LCID; +alias PDWORD PLCID; +alias WORD LANGID; +enum : uint { APPLICATION_ERROR_MASK = 0x20000000 } +enum : uint { ERROR_SEVERITY_SUCCESS = 0x00000000 } +enum : uint { ERROR_SEVERITY_INFORMATIONAL = 0x40000000 } +enum : uint { ERROR_SEVERITY_WARNING = 0x80000000 } +enum : uint { ERROR_SEVERITY_ERROR = 0xC0000000 } + +// #if defined(_M_IA64) && !defined(MIDL_PASS) +// ... +// #endif +struct _FLOAT128 { + __int64 LowPart; + __int64 HighPart; +} +alias _FLOAT128 FLOAT128; + +alias FLOAT128* PFLOAT128; + +// #define _ULONGLONG_ +// #if (!defined (_MAC) && (!defined(MIDL_PASS) || defined(__midl)) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))) +// ... + +// #... +// #else + +// #if defined(_MAC) && defined(_MAC_INT_64) +// ... + +// #... +// #else +alias double LONGLONG; +alias double ULONGLONG; +// #endif //_MAC and int64 + +// #endif + +alias LONGLONG* PLONGLONG; +alias ULONGLONG* PULONGLONG; + +alias LONGLONG USN; + +// #if defined(MIDL_PASS) +// ... +// #else // MIDL_PASS +union _LARGE_INTEGER { +struct _0 { + DWORD LowPart; + LONG HighPart; +} +_0 _; + +struct _1 { + DWORD LowPart; + LONG HighPart; +} +_1 u; + +// #endif //MIDL_PASS + LONGLONG QuadPart; +} +alias _LARGE_INTEGER LARGE_INTEGER; + +alias LARGE_INTEGER* PLARGE_INTEGER; + +// #if defined(MIDL_PASS) +// ... +// #else // MIDL_PASS +union _ULARGE_INTEGER { +struct _2 { + DWORD LowPart; + DWORD HighPart; +} +_2 _; + +struct _3 { + DWORD LowPart; + DWORD HighPart; +} +_3 u; + +// #endif //MIDL_PASS + ULONGLONG QuadPart; +} +alias _ULARGE_INTEGER ULARGE_INTEGER; + +alias ULARGE_INTEGER* PULARGE_INTEGER; + +struct _LUID { + DWORD LowPart; + LONG HighPart; +} +alias _LUID LUID; +alias _LUID* PLUID; + +// #define _DWORDLONG_ +alias ULONGLONG DWORDLONG; +alias DWORDLONG* PDWORDLONG; + +// #if defined(MIDL_PASS) || defined(RC_INVOKED) + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_M_MRX000) + +// #... +// #... + +// #... +// #... +// #... + +// #if defined (__cplusplus) +// ... +// #endif + +// ... + +// ... + +// ... + +// ... + +// ... + +// #if defined (__cplusplus) +// ... +// #endif + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_M_IX86) + +long Int32x32To64(int a, int b) { return (cast(long)a) * b; } +ulong UInt32x32To64(uint a, uint b) { return (cast(ulong)a) * b; } + +extern(Windows) export ULONGLONG Int64ShllMod32( + ULONGLONG Value, + DWORD ShiftCount); + +extern(Windows) export LONGLONG Int64ShraMod32( + LONGLONG Value, + DWORD ShiftCount); + +extern(Windows) export ULONGLONG Int64ShrlMod32( + ULONGLONG Value, + DWORD ShiftCount); + +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning(disable:4035) // re-enable below + +// __inline ULONGLONG Int64ShllMod32( ULONGLONG Value, DWORD ShiftCount ); + +// __inline LONGLONG Int64ShraMod32( LONGLONG Value, DWORD ShiftCount ); + +// __inline ULONGLONG Int64ShrlMod32( ULONGLONG Value, DWORD ShiftCount ); + +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #endif + +// #elif defined(_M_ALPHA) + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_M_PPC) + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_68K_) || defined(_MPPC_) + +// #... +// #... + +// #... +// #... +// #... + +// #elif defined(_M_IA64) || defined(_M_AMD64) + +// #... +// #... + +// #... +// #... +// #... + +// #else + +// #... + +// #endif + +enum : CHAR { ANSI_NULL = 0 } +enum : WCHAR { UNICODE_NULL = 0 } +enum : WORD { UNICODE_STRING_MAX_BYTES = 65534 } +enum : uint { UNICODE_STRING_MAX_CHARS = 32767 } +alias BYTE BOOLEAN; +alias BOOLEAN* PBOOLEAN; + +struct _LIST_ENTRY { + _LIST_ENTRY *Flink; + _LIST_ENTRY *Blink; +} +alias _LIST_ENTRY LIST_ENTRY; +alias _LIST_ENTRY* PLIST_ENTRY; +alias _LIST_ENTRY* RESTRICTED_POINTERPRLIST_ENTRY; + +struct _SINGLE_LIST_ENTRY { + _SINGLE_LIST_ENTRY *Next; +} +alias _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY; +alias _SINGLE_LIST_ENTRY* PSINGLE_LIST_ENTRY; + +struct LIST_ENTRY32 { + DWORD Flink; + DWORD Blink; +} + +alias LIST_ENTRY32* PLIST_ENTRY32; + +struct LIST_ENTRY64 { + ULONGLONG Flink; + ULONGLONG Blink; +} + +alias LIST_ENTRY64* PLIST_ENTRY64; + +import win32.guiddef; + +// #ifndef __OBJECTID_DEFINED +// #define __OBJECTID_DEFINED + +struct _OBJECTID { + GUID Lineage; + DWORD Uniquifier; +} +alias _OBJECTID OBJECTID; + +// #endif // !_OBJECTID_DEFINED + +enum : uint { MINCHAR = 0x80 } +enum : uint { MAXCHAR = 0x7f } +enum : uint { MINSHORT = 0x8000 } +enum : uint { MAXSHORT = 0x7fff } +enum : uint { MINLONG = 0x80000000 } +enum : uint { MAXLONG = 0x7fffffff } +enum : uint { MAXBYTE = 0xff } +enum : uint { MAXWORD = 0xffff } +enum : uint { MAXDWORD = 0xffffffff } + +// #define FIELD_OFFSET(type, field) ((LONG)(LONG_PTR)&(((type *)0)->field)) + +// #if(_WIN32_WINNT > 0x0500) + +// #define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field)) + +// #define RTL_SIZEOF_THROUGH_FIELD(type, field) (FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field)) + +// #define RTL_CONTAINS_FIELD(Struct, Size, Field) ( (((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size)) ) + +// #define RTL_NUMBER_OF(A) (sizeof(A)/sizeof((A)[0])) + +// #define RTL_FIELD_TYPE(type, field) (((type*)0)->field) + +// #define RTL_NUMBER_OF_FIELD(type, field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type, field))) + +// #define RTL_PADDING_BETWEEN_FIELDS(T, F1, F2) ((FIELD_OFFSET(T, F2) > FIELD_OFFSET(T, F1)) ? (FIELD_OFFSET(T, F2) - FIELD_OFFSET(T, F1) - RTL_FIELD_SIZE(T, F1)) : (FIELD_OFFSET(T, F1) - FIELD_OFFSET(T, F2) - RTL_FIELD_SIZE(T, F2))) + +// #if defined(__cplusplus) +// #define RTL_CONST_CAST(type) const_cast +// #else +// #... +// #endif + +// #define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8) + +// #define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field))) + +// #endif /* _WIN32_WINNT > 0x0500 */ + +// #define CONTAINING_RECORD(address, type, field) ((type *)( (PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field))) + +enum : uint { VER_SERVER_NT = 0x80000000 } +enum : uint { VER_WORKSTATION_NT = 0x40000000 } +enum : uint { VER_SUITE_SMALLBUSINESS = 0x00000001 } +enum : uint { VER_SUITE_ENTERPRISE = 0x00000002 } +enum : uint { VER_SUITE_BACKOFFICE = 0x00000004 } +enum : uint { VER_SUITE_COMMUNICATIONS = 0x00000008 } +enum : uint { VER_SUITE_TERMINAL = 0x00000010 } +enum : uint { VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x00000020 } +enum : uint { VER_SUITE_EMBEDDEDNT = 0x00000040 } +enum : uint { VER_SUITE_DATACENTER = 0x00000080 } +enum : uint { VER_SUITE_SINGLEUSERTS = 0x00000100 } +enum : uint { VER_SUITE_PERSONAL = 0x00000200 } +enum : uint { VER_SUITE_BLADE = 0x00000400 } + +enum : uint { LANG_NEUTRAL = 0x00 } +enum : uint { LANG_INVARIANT = 0x7f } + +enum : uint { LANG_AFRIKAANS = 0x36 } +enum : uint { LANG_ALBANIAN = 0x1c } +enum : uint { LANG_ARABIC = 0x01 } +enum : uint { LANG_ARMENIAN = 0x2b } +enum : uint { LANG_ASSAMESE = 0x4d } +enum : uint { LANG_AZERI = 0x2c } +enum : uint { LANG_BASQUE = 0x2d } +enum : uint { LANG_BELARUSIAN = 0x23 } +enum : uint { LANG_BENGALI = 0x45 } +enum : uint { LANG_BULGARIAN = 0x02 } +enum : uint { LANG_CATALAN = 0x03 } +enum : uint { LANG_CHINESE = 0x04 } +enum : uint { LANG_CROATIAN = 0x1a } +enum : uint { LANG_CZECH = 0x05 } +enum : uint { LANG_DANISH = 0x06 } +enum : uint { LANG_DIVEHI = 0x65 } +enum : uint { LANG_DUTCH = 0x13 } +enum : uint { LANG_ENGLISH = 0x09 } +enum : uint { LANG_ESTONIAN = 0x25 } +enum : uint { LANG_FAEROESE = 0x38 } +enum : uint { LANG_FARSI = 0x29 } +enum : uint { LANG_FINNISH = 0x0b } +enum : uint { LANG_FRENCH = 0x0c } +enum : uint { LANG_GALICIAN = 0x56 } +enum : uint { LANG_GEORGIAN = 0x37 } +enum : uint { LANG_GERMAN = 0x07 } +enum : uint { LANG_GREEK = 0x08 } +enum : uint { LANG_GUJARATI = 0x47 } +enum : uint { LANG_HEBREW = 0x0d } +enum : uint { LANG_HINDI = 0x39 } +enum : uint { LANG_HUNGARIAN = 0x0e } +enum : uint { LANG_ICELANDIC = 0x0f } +enum : uint { LANG_INDONESIAN = 0x21 } +enum : uint { LANG_ITALIAN = 0x10 } +enum : uint { LANG_JAPANESE = 0x11 } +enum : uint { LANG_KANNADA = 0x4b } +enum : uint { LANG_KASHMIRI = 0x60 } +enum : uint { LANG_KAZAK = 0x3f } +enum : uint { LANG_KONKANI = 0x57 } +enum : uint { LANG_KOREAN = 0x12 } +enum : uint { LANG_KYRGYZ = 0x40 } +enum : uint { LANG_LATVIAN = 0x26 } +enum : uint { LANG_LITHUANIAN = 0x27 } +enum : uint { LANG_MACEDONIAN = 0x2f } +enum : uint { LANG_MALAY = 0x3e } +enum : uint { LANG_MALAYALAM = 0x4c } +enum : uint { LANG_MANIPURI = 0x58 } +enum : uint { LANG_MARATHI = 0x4e } +enum : uint { LANG_MONGOLIAN = 0x50 } +enum : uint { LANG_NEPALI = 0x61 } +enum : uint { LANG_NORWEGIAN = 0x14 } +enum : uint { LANG_ORIYA = 0x48 } +enum : uint { LANG_POLISH = 0x15 } +enum : uint { LANG_PORTUGUESE = 0x16 } +enum : uint { LANG_PUNJABI = 0x46 } +enum : uint { LANG_ROMANIAN = 0x18 } +enum : uint { LANG_RUSSIAN = 0x19 } +enum : uint { LANG_SANSKRIT = 0x4f } +enum : uint { LANG_SERBIAN = 0x1a } +enum : uint { LANG_SINDHI = 0x59 } +enum : uint { LANG_SLOVAK = 0x1b } +enum : uint { LANG_SLOVENIAN = 0x24 } +enum : uint { LANG_SPANISH = 0x0a } +enum : uint { LANG_SWAHILI = 0x41 } +enum : uint { LANG_SWEDISH = 0x1d } +enum : uint { LANG_SYRIAC = 0x5a } +enum : uint { LANG_TAMIL = 0x49 } +enum : uint { LANG_TATAR = 0x44 } +enum : uint { LANG_TELUGU = 0x4a } +enum : uint { LANG_THAI = 0x1e } +enum : uint { LANG_TURKISH = 0x1f } +enum : uint { LANG_UKRAINIAN = 0x22 } +enum : uint { LANG_URDU = 0x20 } +enum : uint { LANG_UZBEK = 0x43 } +enum : uint { LANG_VIETNAMESE = 0x2a } + +enum : uint { SUBLANG_NEUTRAL = 0x00 } +enum : uint { SUBLANG_DEFAULT = 0x01 } +enum : uint { SUBLANG_SYS_DEFAULT = 0x02 } + +enum : uint { SUBLANG_ARABIC_SAUDI_ARABIA = 0x01 } +enum : uint { SUBLANG_ARABIC_IRAQ = 0x02 } +enum : uint { SUBLANG_ARABIC_EGYPT = 0x03 } +enum : uint { SUBLANG_ARABIC_LIBYA = 0x04 } +enum : uint { SUBLANG_ARABIC_ALGERIA = 0x05 } +enum : uint { SUBLANG_ARABIC_MOROCCO = 0x06 } +enum : uint { SUBLANG_ARABIC_TUNISIA = 0x07 } +enum : uint { SUBLANG_ARABIC_OMAN = 0x08 } +enum : uint { SUBLANG_ARABIC_YEMEN = 0x09 } +enum : uint { SUBLANG_ARABIC_SYRIA = 0x0a } +enum : uint { SUBLANG_ARABIC_JORDAN = 0x0b } +enum : uint { SUBLANG_ARABIC_LEBANON = 0x0c } +enum : uint { SUBLANG_ARABIC_KUWAIT = 0x0d } +enum : uint { SUBLANG_ARABIC_UAE = 0x0e } +enum : uint { SUBLANG_ARABIC_BAHRAIN = 0x0f } +enum : uint { SUBLANG_ARABIC_QATAR = 0x10 } +enum : uint { SUBLANG_AZERI_LATIN = 0x01 } +enum : uint { SUBLANG_AZERI_CYRILLIC = 0x02 } +enum : uint { SUBLANG_CHINESE_TRADITIONAL = 0x01 } +enum : uint { SUBLANG_CHINESE_SIMPLIFIED = 0x02 } +enum : uint { SUBLANG_CHINESE_HONGKONG = 0x03 } +enum : uint { SUBLANG_CHINESE_SINGAPORE = 0x04 } +enum : uint { SUBLANG_CHINESE_MACAU = 0x05 } +enum : uint { SUBLANG_DUTCH = 0x01 } +enum : uint { SUBLANG_DUTCH_BELGIAN = 0x02 } +enum : uint { SUBLANG_ENGLISH_US = 0x01 } +enum : uint { SUBLANG_ENGLISH_UK = 0x02 } +enum : uint { SUBLANG_ENGLISH_AUS = 0x03 } +enum : uint { SUBLANG_ENGLISH_CAN = 0x04 } +enum : uint { SUBLANG_ENGLISH_NZ = 0x05 } +enum : uint { SUBLANG_ENGLISH_EIRE = 0x06 } +enum : uint { SUBLANG_ENGLISH_SOUTH_AFRICA = 0x07 } +enum : uint { SUBLANG_ENGLISH_JAMAICA = 0x08 } +enum : uint { SUBLANG_ENGLISH_CARIBBEAN = 0x09 } +enum : uint { SUBLANG_ENGLISH_BELIZE = 0x0a } +enum : uint { SUBLANG_ENGLISH_TRINIDAD = 0x0b } +enum : uint { SUBLANG_ENGLISH_ZIMBABWE = 0x0c } +enum : uint { SUBLANG_ENGLISH_PHILIPPINES = 0x0d } +enum : uint { SUBLANG_FRENCH = 0x01 } +enum : uint { SUBLANG_FRENCH_BELGIAN = 0x02 } +enum : uint { SUBLANG_FRENCH_CANADIAN = 0x03 } +enum : uint { SUBLANG_FRENCH_SWISS = 0x04 } +enum : uint { SUBLANG_FRENCH_LUXEMBOURG = 0x05 } +enum : uint { SUBLANG_FRENCH_MONACO = 0x06 } +enum : uint { SUBLANG_GERMAN = 0x01 } +enum : uint { SUBLANG_GERMAN_SWISS = 0x02 } +enum : uint { SUBLANG_GERMAN_AUSTRIAN = 0x03 } +enum : uint { SUBLANG_GERMAN_LUXEMBOURG = 0x04 } +enum : uint { SUBLANG_GERMAN_LIECHTENSTEIN = 0x05 } +enum : uint { SUBLANG_ITALIAN = 0x01 } +enum : uint { SUBLANG_ITALIAN_SWISS = 0x02 } +// #if _WIN32_WINNT >= 0x0501 +enum : uint { SUBLANG_KASHMIRI_SASIA = 0x02 } +// #endif +enum : uint { SUBLANG_KASHMIRI_INDIA = 0x02 } +enum : uint { SUBLANG_KOREAN = 0x01 } +enum : uint { SUBLANG_LITHUANIAN = 0x01 } +enum : uint { SUBLANG_MALAY_MALAYSIA = 0x01 } +enum : uint { SUBLANG_MALAY_BRUNEI_DARUSSALAM = 0x02 } +enum : uint { SUBLANG_NEPALI_INDIA = 0x02 } +enum : uint { SUBLANG_NORWEGIAN_BOKMAL = 0x01 } +enum : uint { SUBLANG_NORWEGIAN_NYNORSK = 0x02 } +enum : uint { SUBLANG_PORTUGUESE = 0x02 } +enum : uint { SUBLANG_PORTUGUESE_BRAZILIAN = 0x01 } +enum : uint { SUBLANG_SERBIAN_LATIN = 0x02 } +enum : uint { SUBLANG_SERBIAN_CYRILLIC = 0x03 } +enum : uint { SUBLANG_SPANISH = 0x01 } +enum : uint { SUBLANG_SPANISH_MEXICAN = 0x02 } +enum : uint { SUBLANG_SPANISH_MODERN = 0x03 } +enum : uint { SUBLANG_SPANISH_GUATEMALA = 0x04 } +enum : uint { SUBLANG_SPANISH_COSTA_RICA = 0x05 } +enum : uint { SUBLANG_SPANISH_PANAMA = 0x06 } +enum : uint { SUBLANG_SPANISH_DOMINICAN_REPUBLIC = 0x07 } +enum : uint { SUBLANG_SPANISH_VENEZUELA = 0x08 } +enum : uint { SUBLANG_SPANISH_COLOMBIA = 0x09 } +enum : uint { SUBLANG_SPANISH_PERU = 0x0a } +enum : uint { SUBLANG_SPANISH_ARGENTINA = 0x0b } +enum : uint { SUBLANG_SPANISH_ECUADOR = 0x0c } +enum : uint { SUBLANG_SPANISH_CHILE = 0x0d } +enum : uint { SUBLANG_SPANISH_URUGUAY = 0x0e } +enum : uint { SUBLANG_SPANISH_PARAGUAY = 0x0f } +enum : uint { SUBLANG_SPANISH_BOLIVIA = 0x10 } +enum : uint { SUBLANG_SPANISH_EL_SALVADOR = 0x11 } +enum : uint { SUBLANG_SPANISH_HONDURAS = 0x12 } +enum : uint { SUBLANG_SPANISH_NICARAGUA = 0x13 } +enum : uint { SUBLANG_SPANISH_PUERTO_RICO = 0x14 } +enum : uint { SUBLANG_SWEDISH = 0x01 } +enum : uint { SUBLANG_SWEDISH_FINLAND = 0x02 } +enum : uint { SUBLANG_URDU_PAKISTAN = 0x01 } +enum : uint { SUBLANG_URDU_INDIA = 0x02 } +enum : uint { SUBLANG_UZBEK_LATIN = 0x01 } +enum : uint { SUBLANG_UZBEK_CYRILLIC = 0x02 } + +enum : uint { SORT_DEFAULT = 0x0 } + +enum : uint { SORT_JAPANESE_XJIS = 0x0 } +enum : uint { SORT_JAPANESE_UNICODE = 0x1 } + +enum : uint { SORT_CHINESE_BIG5 = 0x0 } +enum : uint { SORT_CHINESE_PRCP = 0x0 } +enum : uint { SORT_CHINESE_UNICODE = 0x1 } +enum : uint { SORT_CHINESE_PRC = 0x2 } +enum : uint { SORT_CHINESE_BOPOMOFO = 0x3 } + +enum : uint { SORT_KOREAN_KSC = 0x0 } +enum : uint { SORT_KOREAN_UNICODE = 0x1 } + +enum : uint { SORT_GERMAN_PHONE_BOOK = 0x1 } + +enum : uint { SORT_HUNGARIAN_DEFAULT = 0x0 } +enum : uint { SORT_HUNGARIAN_TECHNICAL = 0x1 } + +enum : uint { SORT_GEORGIAN_TRADITIONAL = 0x0 } +enum : uint { SORT_GEORGIAN_MODERN = 0x1 } + +WORD MAKELANGID(USHORT p, USHORT s) { return (((cast(WORD)(s)) << 10) | cast(WORD)(p)); } +WORD PRIMARYLANGID(WORD lgid) { return lgid & 0x3ff; } +WORD SUBLANGID(WORD lgid) { return lgid >>> 10; } + +enum : uint { NLS_VALID_LOCALE_MASK = 0x000fffff } + +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 lcid; } +WORD SORTIDFROMLCID(LCID lcid) { return (cast(DWORD)lcid >>> 16) & 0xf; } +WORD SORTVERSIONFROMLCID(LCID lcid) { return (cast(DWORD)lcid >>> 20) & 0xf; } + +enum : uint { LANG_SYSTEM_DEFAULT = (SUBLANG_SYS_DEFAULT << 10) | LANG_NEUTRAL } +enum : uint { LANG_USER_DEFAULT = (SUBLANG_DEFAULT << 10) | LANG_NEUTRAL } + +enum : uint { LOCALE_SYSTEM_DEFAULT = (SORT_DEFAULT << 16) | LANG_SYSTEM_DEFAULT } +enum : uint { LOCALE_USER_DEFAULT = (SORT_DEFAULT << 16) | LANG_USER_DEFAULT } + +enum : uint { LOCALE_NEUTRAL = (SORT_DEFAULT << 16) | (SUBLANG_NEUTRAL << 10) | LANG_NEUTRAL } + +enum : uint { LOCALE_INVARIANT = (SORT_DEFAULT << 16) | (SUBLANG_NEUTRAL << 10) | LANG_INVARIANT } + +// #if ! defined(lint) +// #... +// #... +// #... + +// #else // lint + +// #define UNREFERENCED_PARAMETER(P) { (P) = (P); } +// #define DBG_UNREFERENCED_PARAMETER(P) { (P) = (P); } +// #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) { (V) = (V); } + +// #endif // lint + +// #if (_MSC_VER > 1200) +// #define DEFAULT_UNREACHABLE default: __assume(0) +// #else + +// #... + +// #endif + +// #ifndef WIN32_NO_STATUS + +enum : DWORD { STATUS_WAIT_0 = 0x00000000 } +enum : DWORD { STATUS_ABANDONED_WAIT_0 = 0x00000080 } +enum : DWORD { STATUS_USER_APC = 0x000000C0 } +enum : DWORD { STATUS_TIMEOUT = 0x00000102 } +enum : DWORD { STATUS_PENDING = 0x00000103 } +enum : DWORD { DBG_EXCEPTION_HANDLED = 0x00010001 } +enum : DWORD { DBG_CONTINUE = 0x00010002 } +enum : DWORD { STATUS_SEGMENT_NOTIFICATION = 0x40000005 } +enum : DWORD { DBG_TERMINATE_THREAD = 0x40010003 } +enum : DWORD { DBG_TERMINATE_PROCESS = 0x40010004 } +enum : DWORD { DBG_CONTROL_C = 0x40010005 } +enum : DWORD { DBG_CONTROL_BREAK = 0x40010008 } +enum : DWORD { STATUS_GUARD_PAGE_VIOLATION = 0x80000001 } +enum : DWORD { STATUS_DATATYPE_MISALIGNMENT = 0x80000002 } +enum : DWORD { STATUS_BREAKPOINT = 0x80000003 } +enum : DWORD { STATUS_SINGLE_STEP = 0x80000004 } +enum : DWORD { DBG_EXCEPTION_NOT_HANDLED = 0x80010001 } +enum : DWORD { STATUS_ACCESS_VIOLATION = 0xC0000005 } +enum : DWORD { STATUS_IN_PAGE_ERROR = 0xC0000006 } +enum : DWORD { STATUS_INVALID_HANDLE = 0xC0000008 } +enum : DWORD { STATUS_NO_MEMORY = 0xC0000017 } +enum : DWORD { STATUS_ILLEGAL_INSTRUCTION = 0xC000001D } +enum : DWORD { STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025 } +enum : DWORD { STATUS_INVALID_DISPOSITION = 0xC0000026 } +enum : DWORD { STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C } +enum : DWORD { STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D } +enum : DWORD { STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E } +enum : DWORD { STATUS_FLOAT_INEXACT_RESULT = 0xC000008F } +enum : DWORD { STATUS_FLOAT_INVALID_OPERATION = 0xC0000090 } +enum : DWORD { STATUS_FLOAT_OVERFLOW = 0xC0000091 } +enum : DWORD { STATUS_FLOAT_STACK_CHECK = 0xC0000092 } +enum : DWORD { STATUS_FLOAT_UNDERFLOW = 0xC0000093 } +enum : DWORD { STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094 } +enum : DWORD { STATUS_INTEGER_OVERFLOW = 0xC0000095 } +enum : DWORD { STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096 } +enum : DWORD { STATUS_STACK_OVERFLOW = 0xC00000FD } +enum : DWORD { STATUS_CONTROL_C_EXIT = 0xC000013A } +enum : DWORD { STATUS_FLOAT_MULTIPLE_FAULTS = 0xC00002B4 } +enum : DWORD { STATUS_FLOAT_MULTIPLE_TRAPS = 0xC00002B5 } +enum : DWORD { STATUS_REG_NAT_CONSUMPTION = 0xC00002C9 } +// #if defined(STATUS_SUCCESS) || (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) +enum : DWORD { STATUS_SXS_EARLY_DEACTIVATION = 0xC015000F } +enum : DWORD { STATUS_SXS_INVALID_DEACTIVATION = 0xC0150010 } +// #endif + +// #endif +enum : uint { MAXIMUM_WAIT_OBJECTS = 64 } + +alias MAXCHAR MAXIMUM_SUSPEND_COUNT; + +alias ULONG_PTR KSPIN_LOCK; +alias KSPIN_LOCK* PKSPIN_LOCK; + +// #if defined(_AMD64_) + +// #if defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) + +// #... + +// ... + +// #... + +// #... + +// ... + +// #... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... + +// #... +// #... + +// ... + +// ... + +// #... +// #... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif // defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS) + +// #if !defined(RC_INVOKED) + +// #... + +// #... +// #... +// #... +// #... +// #... + +// #... + +// #endif // !defined(RC_INVOKED) + +// ... + +// ... + +// #... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // _AMD64_ + +// #ifdef _ALPHA_ // winnt +// ... +// #if defined(_M_ALPHA) // winnt +// #... +// #endif // winnt +// #endif // winnt + +// #if defined(_M_ALPHA) +// #... +// #else +extern(Windows) export _TEB NtCurrentTeb(); +// #endif + +// #ifdef _ALPHA_ + +// #... +// #... + +// #if !defined(RC_INVOKED) + +// #... + +// #... +// #... +// #... + +// #... + +// #endif + +// #ifndef _PORTABLE_32BIT_CONTEXT + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #else + +// #... + +// #endif // _PORTABLE_32BIT_CONTEXT + +// #endif // _ALPHA_ + +// #ifdef _ALPHA_ + +// ... + +// #endif // _ALPHA_ + +// #ifdef _X86_ + +// #if !defined(MIDL_PASS) +// #if !defined(RC_INVOKED) + +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning(disable:4164) // disable C4164 warning so that apps that + +// #ifdef _M_IX86 +// #pragma function(_enable) +// #pragma function(_disable) +// #endif + +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #endif + +// #endif +// #endif + +// #if !defined(MIDL_PASS) && defined(_M_IX86) +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning (disable:4035) // disable 4035 (function must return something) +PVOID GetFiberData() { asm { mov EAX, FS:[0x10]; mov EAX, [EAX]; } } +PVOID GetCurrentFiber() { asm { mov EAX, FS:[0x10]; } } + +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #endif +// #endif + +enum : uint { SIZE_OF_80387_REGISTERS = 80 } + +// #if !defined(RC_INVOKED) + +enum : uint { CONTEXT_i386 = 0x00010000 } +enum : uint { CONTEXT_i486 = 0x00010000 } + +enum : uint { CONTEXT_CONTROL = CONTEXT_i386 | 0x00000001L } +enum : uint { CONTEXT_INTEGER = CONTEXT_i386 | 0x00000002L } +enum : uint { CONTEXT_SEGMENTS = CONTEXT_i386 | 0x00000004L } +enum : uint { CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x00000008L } +enum : uint { CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x00000010L } +enum : uint { CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x00000020L } + +enum : uint { CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS } + +// #endif + +enum : uint { MAXIMUM_SUPPORTED_EXTENSION = 512 } + +struct _FLOATING_SAVE_AREA { + DWORD ControlWord; + DWORD StatusWord; + DWORD TagWord; + DWORD ErrorOffset; + DWORD ErrorSelector; + DWORD DataOffset; + DWORD DataSelector; + BYTE RegisterArea[SIZE_OF_80387_REGISTERS]; + DWORD Cr0NpxState; +} +alias _FLOATING_SAVE_AREA FLOATING_SAVE_AREA; + +alias FLOATING_SAVE_AREA* PFLOATING_SAVE_AREA; + +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 ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; +} +alias _CONTEXT CONTEXT; + +alias CONTEXT* PCONTEXT; + +// #endif //_X86_ + +// #ifndef _LDT_ENTRY_DEFINED +// #define _LDT_ENTRY_DEFINED + +struct _LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; +union { +struct { + BYTE BaseMid; + BYTE Flags1; + BYTE Flags2; + BYTE BaseHi; +} + +struct { +// 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 LDT_ENTRY; +alias _LDT_ENTRY* PLDT_ENTRY; + +// #endif + +// #if defined(_MIPS_) + +// #... +// #... + +// #if !defined(RC_INVOKED) + +// #... + +// #... +// #... +// #... +// #... +// #... + +// #... +// ... + +// #endif + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #... + +// #endif // MIPS + +// #if defined(_MIPS_) + +// ... + +// #endif // MIPS + +// #if defined(_PPC_) + +// #if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000) +// ... +// #... +// #elif defined(_M_PPC) +// ... +// #... +// #endif + +// #... +// #... + +// #if !defined(RC_INVOKED) + +// #... +// #... +// #... +// #... + +// #... + +// #endif + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // defined(_PPC_) + +// #if defined(_MPPC_) + +// #if defined(_M_PPC) && defined(_MSC_VER) && (_MSC_VER>=1000) +// ... +// #... +// #elif defined(_M_PPC) +// ... +// #... +// #endif + +// #... +// #... + +// #if !defined(RC_INVOKED) + +// #... +// #... +// #... +// #... + +// #... + +// #endif + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // defined(_MPPC_) + +// #if !defined(__midl) && !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_) + +// ... +// #if defined(_M_IA64) // winnt +// #... +// #endif // winnt + +// #if defined(_M_IA64) +// #... +// #else +// ... +// #endif + +// #... +// #... + +// #endif // !defined(__midl) && !defined(GENUTIL) && !defined(_GENIA64_) && defined(_M_IA64) + +// #ifdef _IA64_ + +// #if !defined(RC_INVOKED) + +// #... + +// #... +// #... +// #... +// #... +// #... +// #... + +// #... +// #... + +// #endif // !defined(RC_INVOKED) + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // _IA64_ + +// #ifdef _IA64_ + +// ... + +// #endif // _IA64_ + +enum : uint { EXCEPTION_NONCONTINUABLE = 0x1 } +enum : uint { EXCEPTION_MAXIMUM_PARAMETERS = 15 } + +struct _EXCEPTION_RECORD { + DWORD ExceptionCode; + DWORD ExceptionFlags; + _EXCEPTION_RECORD *ExceptionRecord; + PVOID ExceptionAddress; + DWORD NumberParameters; + ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} +alias _EXCEPTION_RECORD EXCEPTION_RECORD; + +alias EXCEPTION_RECORD* PEXCEPTION_RECORD; + +struct _EXCEPTION_RECORD32 { + DWORD ExceptionCode; + DWORD ExceptionFlags; + DWORD ExceptionRecord; + DWORD ExceptionAddress; + DWORD NumberParameters; + DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} +alias _EXCEPTION_RECORD32 EXCEPTION_RECORD32; +alias _EXCEPTION_RECORD32* PEXCEPTION_RECORD32; + +struct _EXCEPTION_RECORD64 { + DWORD ExceptionCode; + DWORD ExceptionFlags; + DWORD64 ExceptionRecord; + DWORD64 ExceptionAddress; + DWORD NumberParameters; + DWORD __unusedAlignment; + DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} +alias _EXCEPTION_RECORD64 EXCEPTION_RECORD64; +alias _EXCEPTION_RECORD64* PEXCEPTION_RECORD64; + +struct _EXCEPTION_POINTERS { + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; +} +alias _EXCEPTION_POINTERS EXCEPTION_POINTERS; +alias _EXCEPTION_POINTERS* PEXCEPTION_POINTERS; + +alias PVOID PACCESS_TOKEN; +alias PVOID PSECURITY_DESCRIPTOR; +alias PVOID PSID; + +alias DWORD ACCESS_MASK; +alias ACCESS_MASK* PACCESS_MASK; + +enum : uint { DELETE = 0x00010000 } +enum : uint { READ_CONTROL = 0x00020000 } +enum : uint { WRITE_DAC = 0x00040000 } +enum : uint { WRITE_OWNER = 0x00080000 } +enum : uint { SYNCHRONIZE = 0x00100000 } + +enum : uint { STANDARD_RIGHTS_REQUIRED = 0x000F0000 } + +enum : uint { STANDARD_RIGHTS_READ = READ_CONTROL } +enum : uint { STANDARD_RIGHTS_WRITE = READ_CONTROL } +enum : uint { STANDARD_RIGHTS_EXECUTE = READ_CONTROL } + +enum : uint { STANDARD_RIGHTS_ALL = 0x001F0000 } + +enum : uint { SPECIFIC_RIGHTS_ALL = 0x0000FFFF } + +enum : uint { ACCESS_SYSTEM_SECURITY = 0x01000000 } + +enum : uint { MAXIMUM_ALLOWED = 0x02000000 } + +enum : uint { GENERIC_READ = 0x80000000 } +enum : uint { GENERIC_WRITE = 0x40000000 } +enum : uint { GENERIC_EXECUTE = 0x20000000 } +enum : uint { GENERIC_ALL = 0x10000000 } + +struct _GENERIC_MAPPING { + ACCESS_MASK GenericRead; + ACCESS_MASK GenericWrite; + ACCESS_MASK GenericExecute; + ACCESS_MASK GenericAll; +} +alias _GENERIC_MAPPING GENERIC_MAPPING; + +alias GENERIC_MAPPING* PGENERIC_MAPPING; + +align(4): + +struct _LUID_AND_ATTRIBUTES { + LUID Luid; + DWORD Attributes; +} +alias _LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES; +alias _LUID_AND_ATTRIBUTES* PLUID_AND_ATTRIBUTES; + +alias LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; +alias LUID_AND_ATTRIBUTES_ARRAY* PLUID_AND_ATTRIBUTES_ARRAY; + +align: + +// #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED +// #define SID_IDENTIFIER_AUTHORITY_DEFINED +struct _SID_IDENTIFIER_AUTHORITY { + BYTE Value[6]; +} +alias _SID_IDENTIFIER_AUTHORITY SID_IDENTIFIER_AUTHORITY; +alias _SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY; + +// #endif + +// #ifndef SID_DEFINED +// #define SID_DEFINED +struct _SID { + BYTE Revision; + BYTE SubAuthorityCount; + SID_IDENTIFIER_AUTHORITY IdentifierAuthority; +// #ifdef MIDL_PASS +// ... +// #else // MIDL_PASS + DWORD SubAuthority[ANYSIZE_ARRAY]; +// #endif // MIDL_PASS +} +alias _SID SID; +alias _SID* PISID; + +// #endif + +enum : uint { SID_REVISION = 1 } +enum : uint { SID_MAX_SUB_AUTHORITIES = 15 } +enum : uint { SID_RECOMMENDED_SUB_AUTHORITIES = 1 } + +// #ifndef MIDL_PASS +const uint SECURITY_MAX_SID_SIZE = SID.sizeof - DWORD.sizeof + (SID_MAX_SUB_AUTHORITIES * DWORD.sizeof); +// #endif // MIDL_PASS + +alias int _SID_NAME_USE; +enum { + SidTypeUser = 1, + SidTypeGroup, + SidTypeDomain, + SidTypeAlias, + SidTypeWellKnownGroup, + SidTypeDeletedAccount, + SidTypeInvalid, + SidTypeUnknown, + SidTypeComputer, +} +alias _SID_NAME_USE SID_NAME_USE; +alias _SID_NAME_USE* PSID_NAME_USE; + +struct _SID_AND_ATTRIBUTES { + PSID Sid; + DWORD Attributes; +} +alias _SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES; +alias _SID_AND_ATTRIBUTES* PSID_AND_ATTRIBUTES; + +alias SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; +alias SID_AND_ATTRIBUTES_ARRAY* PSID_AND_ATTRIBUTES_ARRAY; + +// #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0} +// #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} +// #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} +// #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} +// #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4} +// #define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9} + +enum : uint { SECURITY_NULL_RID = 0x00000000 } +enum : uint { SECURITY_WORLD_RID = 0x00000000 } +enum : uint { SECURITY_LOCAL_RID = 0x00000000 } + +enum : uint { SECURITY_CREATOR_OWNER_RID = 0x00000000 } +enum : uint { SECURITY_CREATOR_GROUP_RID = 0x00000001 } + +enum : uint { SECURITY_CREATOR_OWNER_SERVER_RID = 0x00000002 } +enum : uint { SECURITY_CREATOR_GROUP_SERVER_RID = 0x00000003 } + +// #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} + +enum : uint { SECURITY_DIALUP_RID = 0x00000001 } +enum : uint { SECURITY_NETWORK_RID = 0x00000002 } +enum : uint { SECURITY_BATCH_RID = 0x00000003 } +enum : uint { SECURITY_INTERACTIVE_RID = 0x00000004 } +enum : uint { SECURITY_SERVICE_RID = 0x00000006 } +enum : uint { SECURITY_ANONYMOUS_LOGON_RID = 0x00000007 } +enum : uint { SECURITY_PROXY_RID = 0x00000008 } +enum : uint { SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x00000009 } +alias SECURITY_ENTERPRISE_CONTROLLERS_RID SECURITY_SERVER_LOGON_RID; +enum : uint { SECURITY_PRINCIPAL_SELF_RID = 0x0000000A } +enum : uint { SECURITY_AUTHENTICATED_USER_RID = 0x0000000B } +enum : uint { SECURITY_RESTRICTED_CODE_RID = 0x0000000C } +enum : uint { SECURITY_TERMINAL_SERVER_RID = 0x0000000D } +enum : uint { SECURITY_REMOTE_LOGON_RID = 0x0000000E } + +enum : uint { SECURITY_LOGON_IDS_RID = 0x00000005 } +enum : uint { SECURITY_LOGON_IDS_RID_COUNT = 3 } + +enum : uint { SECURITY_LOCAL_SYSTEM_RID = 0x00000012 } +enum : uint { SECURITY_LOCAL_SERVICE_RID = 0x00000013 } +enum : uint { SECURITY_NETWORK_SERVICE_RID = 0x00000014 } + +enum : uint { SECURITY_NT_NON_UNIQUE = 0x00000015 } +enum : uint { SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT = 3 } + +enum : uint { SECURITY_BUILTIN_DOMAIN_RID = 0x00000020 } + +enum : uint { DOMAIN_USER_RID_ADMIN = 0x000001F4 } +enum : uint { DOMAIN_USER_RID_GUEST = 0x000001F5 } +enum : uint { DOMAIN_USER_RID_KRBTGT = 0x000001F6 } + +enum : uint { DOMAIN_GROUP_RID_ADMINS = 0x00000200 } +enum : uint { DOMAIN_GROUP_RID_USERS = 0x00000201 } +enum : uint { DOMAIN_GROUP_RID_GUESTS = 0x00000202 } +enum : uint { DOMAIN_GROUP_RID_COMPUTERS = 0x00000203 } +enum : uint { DOMAIN_GROUP_RID_CONTROLLERS = 0x00000204 } +enum : uint { DOMAIN_GROUP_RID_CERT_ADMINS = 0x00000205 } +enum : uint { DOMAIN_GROUP_RID_SCHEMA_ADMINS = 0x00000206 } +enum : uint { DOMAIN_GROUP_RID_ENTERPRISE_ADMINS = 0x00000207 } +enum : uint { DOMAIN_GROUP_RID_POLICY_ADMINS = 0x00000208 } + +enum : uint { DOMAIN_ALIAS_RID_ADMINS = 0x00000220 } +enum : uint { DOMAIN_ALIAS_RID_USERS = 0x00000221 } +enum : uint { DOMAIN_ALIAS_RID_GUESTS = 0x00000222 } +enum : uint { DOMAIN_ALIAS_RID_POWER_USERS = 0x00000223 } + +enum : uint { DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x00000224 } +enum : uint { DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x00000225 } +enum : uint { DOMAIN_ALIAS_RID_PRINT_OPS = 0x00000226 } +enum : uint { DOMAIN_ALIAS_RID_BACKUP_OPS = 0x00000227 } + +enum : uint { DOMAIN_ALIAS_RID_REPLICATOR = 0x00000228 } +enum : uint { DOMAIN_ALIAS_RID_RAS_SERVERS = 0x00000229 } +enum : uint { DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x0000022A } +enum : uint { DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x0000022B } +enum : uint { DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x0000022C } + +const LUID SYSTEM_LUID = {LowPart: 0x3e7, HighPart: 0x0}; +const LUID ANONYMOUS_LOGON_LUID = {LowPart: 0x3e6, HighPart: 0x0}; +const LUID LOCALSERVICE_LUID = {LowPart: 0x3e5, HighPart: 0x0}; +const LUID NETWORKSERVICE_LUID = {LowPart: 0x3e4, HighPart: 0x0}; + +enum : uint { SE_GROUP_MANDATORY = 0x00000001 } +enum : uint { SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002 } +enum : uint { SE_GROUP_ENABLED = 0x00000004 } +enum : uint { SE_GROUP_OWNER = 0x00000008 } +enum : uint { SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010 } +enum : uint { SE_GROUP_LOGON_ID = 0xC0000000 } +enum : uint { SE_GROUP_RESOURCE = 0x20000000 } + +enum : uint { ACL_REVISION = 2 } +enum : uint { ACL_REVISION_DS = 4 } + +enum : uint { ACL_REVISION1 = 1 } +enum { MIN_ACL_REVISION = 2 } +enum : uint { ACL_REVISION2 = 2 } +enum : uint { ACL_REVISION3 = 3 } +enum : uint { ACL_REVISION4 = 4 } +alias ACL_REVISION4 MAX_ACL_REVISION; + +struct _ACL { + BYTE AclRevision; + BYTE Sbz1; + WORD AclSize; + WORD AceCount; + WORD Sbz2; +} +alias _ACL ACL; + +alias ACL* PACL; + +struct _ACE_HEADER { + BYTE AceType; + BYTE AceFlags; + WORD AceSize; +} +alias _ACE_HEADER ACE_HEADER; + +alias ACE_HEADER* PACE_HEADER; + +enum : uint { ACCESS_MIN_MS_ACE_TYPE = 0x0 } +enum : uint { ACCESS_ALLOWED_ACE_TYPE = 0x0 } +enum : uint { ACCESS_DENIED_ACE_TYPE = 0x1 } +enum : uint { SYSTEM_AUDIT_ACE_TYPE = 0x2 } +enum : uint { SYSTEM_ALARM_ACE_TYPE = 0x3 } +enum : uint { ACCESS_MAX_MS_V2_ACE_TYPE = 0x3 } + +enum : uint { ACCESS_ALLOWED_COMPOUND_ACE_TYPE = 0x4 } +enum : uint { ACCESS_MAX_MS_V3_ACE_TYPE = 0x4 } + +enum : uint { ACCESS_MIN_MS_OBJECT_ACE_TYPE = 0x5 } +enum : uint { ACCESS_ALLOWED_OBJECT_ACE_TYPE = 0x5 } +enum : uint { ACCESS_DENIED_OBJECT_ACE_TYPE = 0x6 } +enum : uint { SYSTEM_AUDIT_OBJECT_ACE_TYPE = 0x7 } +enum : uint { SYSTEM_ALARM_OBJECT_ACE_TYPE = 0x8 } +enum : uint { ACCESS_MAX_MS_OBJECT_ACE_TYPE = 0x8 } + +enum : uint { ACCESS_MAX_MS_V4_ACE_TYPE = 0x8 } +enum : uint { ACCESS_MAX_MS_ACE_TYPE = 0x8 } + +enum : uint { ACCESS_ALLOWED_CALLBACK_ACE_TYPE = 0x9 } +enum : uint { ACCESS_DENIED_CALLBACK_ACE_TYPE = 0xA } +enum : uint { ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE = 0xB } +enum : uint { ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE = 0xC } +enum : uint { SYSTEM_AUDIT_CALLBACK_ACE_TYPE = 0xD } +enum : uint { SYSTEM_ALARM_CALLBACK_ACE_TYPE = 0xE } +enum : uint { SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE = 0xF } +enum : uint { SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE = 0x10 } + +enum : uint { ACCESS_MAX_MS_V5_ACE_TYPE = 0x10 } + +enum : uint { OBJECT_INHERIT_ACE = 0x1 } +enum : uint { CONTAINER_INHERIT_ACE = 0x2 } +enum : uint { NO_PROPAGATE_INHERIT_ACE = 0x4 } +enum : uint { INHERIT_ONLY_ACE = 0x8 } +enum : uint { INHERITED_ACE = 0x10 } +enum : uint { VALID_INHERIT_FLAGS = 0x1F } + +enum : uint { SUCCESSFUL_ACCESS_ACE_FLAG = 0x40 } +enum : uint { FAILED_ACCESS_ACE_FLAG = 0x80 } + +struct _ACCESS_ALLOWED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _ACCESS_ALLOWED_ACE ACCESS_ALLOWED_ACE; + +alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE; + +struct _ACCESS_DENIED_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _ACCESS_DENIED_ACE ACCESS_DENIED_ACE; + +alias ACCESS_DENIED_ACE* PACCESS_DENIED_ACE; + +struct _SYSTEM_AUDIT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _SYSTEM_AUDIT_ACE SYSTEM_AUDIT_ACE; + +alias SYSTEM_AUDIT_ACE* PSYSTEM_AUDIT_ACE; + +struct _SYSTEM_ALARM_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _SYSTEM_ALARM_ACE SYSTEM_ALARM_ACE; + +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 ACCESS_ALLOWED_OBJECT_ACE; +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 ACCESS_DENIED_OBJECT_ACE; +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 SYSTEM_AUDIT_OBJECT_ACE; +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 SYSTEM_ALARM_OBJECT_ACE; +alias _SYSTEM_ALARM_OBJECT_ACE* PSYSTEM_ALARM_OBJECT_ACE; + +struct _ACCESS_ALLOWED_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _ACCESS_ALLOWED_CALLBACK_ACE ACCESS_ALLOWED_CALLBACK_ACE; +alias _ACCESS_ALLOWED_CALLBACK_ACE* PACCESS_ALLOWED_CALLBACK_ACE; + +struct _ACCESS_DENIED_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _ACCESS_DENIED_CALLBACK_ACE ACCESS_DENIED_CALLBACK_ACE; +alias _ACCESS_DENIED_CALLBACK_ACE* PACCESS_DENIED_CALLBACK_ACE; + +struct _SYSTEM_AUDIT_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _SYSTEM_AUDIT_CALLBACK_ACE SYSTEM_AUDIT_CALLBACK_ACE; +alias _SYSTEM_AUDIT_CALLBACK_ACE* PSYSTEM_AUDIT_CALLBACK_ACE; + +struct _SYSTEM_ALARM_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} +alias _SYSTEM_ALARM_CALLBACK_ACE SYSTEM_ALARM_CALLBACK_ACE; +alias _SYSTEM_ALARM_CALLBACK_ACE* PSYSTEM_ALARM_CALLBACK_ACE; + +struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE ACCESS_ALLOWED_CALLBACK_OBJECT_ACE; +alias _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE* PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; + +struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias _ACCESS_DENIED_CALLBACK_OBJECT_ACE ACCESS_DENIED_CALLBACK_OBJECT_ACE; +alias _ACCESS_DENIED_CALLBACK_OBJECT_ACE* PACCESS_DENIED_CALLBACK_OBJECT_ACE; + +struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE SYSTEM_AUDIT_CALLBACK_OBJECT_ACE; +alias _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE* PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; + +struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} +alias _SYSTEM_ALARM_CALLBACK_OBJECT_ACE SYSTEM_ALARM_CALLBACK_OBJECT_ACE; +alias _SYSTEM_ALARM_CALLBACK_OBJECT_ACE* PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; + +enum : uint { ACE_OBJECT_TYPE_PRESENT = 0x1 } +enum : uint { ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2 } + +alias int _ACL_INFORMATION_CLASS; +enum { + AclRevisionInformation = 1, + AclSizeInformation, +} +alias _ACL_INFORMATION_CLASS ACL_INFORMATION_CLASS; + +struct _ACL_REVISION_INFORMATION { + DWORD AclRevision; +} +alias _ACL_REVISION_INFORMATION ACL_REVISION_INFORMATION; + +alias ACL_REVISION_INFORMATION* PACL_REVISION_INFORMATION; + +struct _ACL_SIZE_INFORMATION { + DWORD AceCount; + DWORD AclBytesInUse; + DWORD AclBytesFree; +} +alias _ACL_SIZE_INFORMATION ACL_SIZE_INFORMATION; + +alias ACL_SIZE_INFORMATION* PACL_SIZE_INFORMATION; + +enum : uint { SECURITY_DESCRIPTOR_REVISION = 1 } +enum : uint { SECURITY_DESCRIPTOR_REVISION1 = 1 } + +const uint SECURITY_DESCRIPTOR_MIN_LENGTH = SECURITY_DESCRIPTOR.sizeof; + +alias WORD SECURITY_DESCRIPTOR_CONTROL; +alias WORD* PSECURITY_DESCRIPTOR_CONTROL; + +enum : uint { SE_OWNER_DEFAULTED = 0x0001 } +enum : uint { SE_GROUP_DEFAULTED = 0x0002 } +enum : uint { SE_DACL_PRESENT = 0x0004 } +enum : uint { SE_DACL_DEFAULTED = 0x0008 } +enum : uint { SE_SACL_PRESENT = 0x0010 } +enum : uint { SE_SACL_DEFAULTED = 0x0020 } +enum : uint { SE_DACL_AUTO_INHERIT_REQ = 0x0100 } +enum : uint { SE_SACL_AUTO_INHERIT_REQ = 0x0200 } +enum : uint { SE_DACL_AUTO_INHERITED = 0x0400 } +enum : uint { SE_SACL_AUTO_INHERITED = 0x0800 } +enum : uint { SE_DACL_PROTECTED = 0x1000 } +enum : uint { SE_SACL_PROTECTED = 0x2000 } +enum : uint { SE_RM_CONTROL_VALID = 0x4000 } +enum : uint { SE_SELF_RELATIVE = 0x8000 } + +struct _SECURITY_DESCRIPTOR_RELATIVE { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + DWORD Owner; + DWORD Group; + DWORD Sacl; + DWORD Dacl; +} +alias _SECURITY_DESCRIPTOR_RELATIVE SECURITY_DESCRIPTOR_RELATIVE; +alias _SECURITY_DESCRIPTOR_RELATIVE* PISECURITY_DESCRIPTOR_RELATIVE; + +struct _SECURITY_DESCRIPTOR { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PSID Owner; + PSID Group; + PACL Sacl; + PACL Dacl; +} +alias _SECURITY_DESCRIPTOR SECURITY_DESCRIPTOR; +alias _SECURITY_DESCRIPTOR* PISECURITY_DESCRIPTOR; + +struct _OBJECT_TYPE_LIST { + WORD Level; + WORD Sbz; + GUID *ObjectType; +} +alias _OBJECT_TYPE_LIST OBJECT_TYPE_LIST; +alias _OBJECT_TYPE_LIST* POBJECT_TYPE_LIST; + +enum : uint { ACCESS_OBJECT_GUID = 0 } +enum : uint { ACCESS_PROPERTY_SET_GUID = 1 } +enum : uint { ACCESS_PROPERTY_GUID = 2 } + +enum : uint { ACCESS_MAX_LEVEL = 4 } + +alias int _AUDIT_EVENT_TYPE; +enum { + AuditEventObjectAccess, + AuditEventDirectoryServiceAccess, +} +alias _AUDIT_EVENT_TYPE AUDIT_EVENT_TYPE; +alias _AUDIT_EVENT_TYPE* PAUDIT_EVENT_TYPE; + +enum : uint { AUDIT_ALLOW_NO_PRIVILEGE = 0x1 } + +const char[] ACCESS_DS_SOURCE_A = "DS"; +const wchar[] ACCESS_DS_SOURCE_W = "DS"; +const char[] ACCESS_DS_OBJECT_TYPE_NAME_A = "Directory Service Object"; +const wchar[] ACCESS_DS_OBJECT_TYPE_NAME_W = "Directory Service Object"; + +enum : uint { SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001 } +enum : uint { SE_PRIVILEGE_ENABLED = 0x00000002 } +enum : uint { SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000 } + +enum : uint { PRIVILEGE_SET_ALL_NECESSARY = 1 } + +struct _PRIVILEGE_SET { + DWORD PrivilegeCount; + DWORD Control; + LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; +} +alias _PRIVILEGE_SET PRIVILEGE_SET; +alias _PRIVILEGE_SET* PPRIVILEGE_SET; + +const TCHAR[] SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"; +const TCHAR[] SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"; +const TCHAR[] SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"; +const TCHAR[] SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"; +const TCHAR[] SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"; +const TCHAR[] SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"; +const TCHAR[] SE_TCB_NAME = "SeTcbPrivilege"; +const TCHAR[] SE_SECURITY_NAME = "SeSecurityPrivilege"; +const TCHAR[] SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"; +const TCHAR[] SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"; +const TCHAR[] SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"; +const TCHAR[] SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"; +const TCHAR[] SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"; +const TCHAR[] SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"; +const TCHAR[] SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"; +const TCHAR[] SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"; +const TCHAR[] SE_BACKUP_NAME = "SeBackupPrivilege"; +const TCHAR[] SE_RESTORE_NAME = "SeRestorePrivilege"; +const TCHAR[] SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; +const TCHAR[] SE_DEBUG_NAME = "SeDebugPrivilege"; +const TCHAR[] SE_AUDIT_NAME = "SeAuditPrivilege"; +const TCHAR[] SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"; +const TCHAR[] SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"; +const TCHAR[] SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"; +const TCHAR[] SE_UNDOCK_NAME = "SeUndockPrivilege"; +const TCHAR[] SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"; +const TCHAR[] SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"; +const TCHAR[] SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"; + +alias int _SECURITY_IMPERSONATION_LEVEL; +enum { + SecurityAnonymous, + SecurityIdentification, + SecurityImpersonation, + SecurityDelegation, +} +alias _SECURITY_IMPERSONATION_LEVEL SECURITY_IMPERSONATION_LEVEL; +alias _SECURITY_IMPERSONATION_LEVEL* PSECURITY_IMPERSONATION_LEVEL; + +alias SecurityDelegation SECURITY_MAX_IMPERSONATION_LEVEL; +alias SecurityAnonymous SECURITY_MIN_IMPERSONATION_LEVEL; +alias SecurityImpersonation DEFAULT_IMPERSONATION_LEVEL; +bit VALID_IMPERSONATION_LEVEL(SECURITY_IMPERSONATION_LEVEL L){ return (L >= SECURITY_MIN_IMPERSONATION_LEVEL) && (L <= SECURITY_MAX_IMPERSONATION_LEVEL); } + +enum : uint { TOKEN_ASSIGN_PRIMARY = 0x0001 } +enum : uint { TOKEN_DUPLICATE = 0x0002 } +enum : uint { TOKEN_IMPERSONATE = 0x0004 } +enum : uint { TOKEN_QUERY = 0x0008 } +enum : uint { TOKEN_QUERY_SOURCE = 0x0010 } +enum : uint { TOKEN_ADJUST_PRIVILEGES = 0x0020 } +enum : uint { TOKEN_ADJUST_GROUPS = 0x0040 } +enum : uint { TOKEN_ADJUST_DEFAULT = 0x0080 } +enum : uint { TOKEN_ADJUST_SESSIONID = 0x0100 } + +enum : uint { TOKEN_ALL_ACCESS_P = STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT } + +// #if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT))) +enum : uint { TOKEN_ALL_ACCESS = TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID } +// #else +// #... +// #endif + +enum : uint { TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY } + +enum : uint { TOKEN_WRITE = STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT } + +enum : uint { TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE } + +alias int _TOKEN_TYPE; +enum { + TokenPrimary = 1, + TokenImpersonation, +} +alias _TOKEN_TYPE TOKEN_TYPE; + +alias TOKEN_TYPE* PTOKEN_TYPE; + +alias int _TOKEN_INFORMATION_CLASS; +enum { + TokenUser = 1, + TokenGroups, + TokenPrivileges, + TokenOwner, + TokenPrimaryGroup, + TokenDefaultDacl, + TokenSource, + TokenType, + TokenImpersonationLevel, + TokenStatistics, + TokenRestrictedSids, + TokenSessionId, + TokenGroupsAndPrivileges, + TokenSessionReference, + TokenSandBoxInert, +} +alias _TOKEN_INFORMATION_CLASS TOKEN_INFORMATION_CLASS; +alias _TOKEN_INFORMATION_CLASS* PTOKEN_INFORMATION_CLASS; + +struct _TOKEN_USER { + SID_AND_ATTRIBUTES User; +} +alias _TOKEN_USER TOKEN_USER; +alias _TOKEN_USER* PTOKEN_USER; + +struct _TOKEN_GROUPS { + DWORD GroupCount; + SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; +} +alias _TOKEN_GROUPS TOKEN_GROUPS; +alias _TOKEN_GROUPS* PTOKEN_GROUPS; + +struct _TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; +} +alias _TOKEN_PRIVILEGES TOKEN_PRIVILEGES; +alias _TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES; + +struct _TOKEN_OWNER { + PSID Owner; +} +alias _TOKEN_OWNER TOKEN_OWNER; +alias _TOKEN_OWNER* PTOKEN_OWNER; + +struct _TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; +} +alias _TOKEN_PRIMARY_GROUP TOKEN_PRIMARY_GROUP; +alias _TOKEN_PRIMARY_GROUP* PTOKEN_PRIMARY_GROUP; + +struct _TOKEN_DEFAULT_DACL { + PACL DefaultDacl; +} +alias _TOKEN_DEFAULT_DACL TOKEN_DEFAULT_DACL; +alias _TOKEN_DEFAULT_DACL* PTOKEN_DEFAULT_DACL; + +struct _TOKEN_GROUPS_AND_PRIVILEGES { + DWORD SidCount; + DWORD SidLength; + PSID_AND_ATTRIBUTES Sids; + DWORD RestrictedSidCount; + DWORD RestrictedSidLength; + PSID_AND_ATTRIBUTES RestrictedSids; + DWORD PrivilegeCount; + DWORD PrivilegeLength; + PLUID_AND_ATTRIBUTES Privileges; + LUID AuthenticationId; +} +alias _TOKEN_GROUPS_AND_PRIVILEGES TOKEN_GROUPS_AND_PRIVILEGES; +alias _TOKEN_GROUPS_AND_PRIVILEGES* PTOKEN_GROUPS_AND_PRIVILEGES; + +enum : uint { TOKEN_SOURCE_LENGTH = 8 } + +struct _TOKEN_SOURCE { + CHAR SourceName[TOKEN_SOURCE_LENGTH]; + LUID SourceIdentifier; +} +alias _TOKEN_SOURCE TOKEN_SOURCE; +alias _TOKEN_SOURCE* PTOKEN_SOURCE; + +struct _TOKEN_STATISTICS { + LUID TokenId; + LUID AuthenticationId; + LARGE_INTEGER ExpirationTime; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + DWORD DynamicCharged; + DWORD DynamicAvailable; + DWORD GroupCount; + DWORD PrivilegeCount; + LUID ModifiedId; +} +alias _TOKEN_STATISTICS TOKEN_STATISTICS; +alias _TOKEN_STATISTICS* PTOKEN_STATISTICS; + +struct _TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; +} +alias _TOKEN_CONTROL TOKEN_CONTROL; +alias _TOKEN_CONTROL* PTOKEN_CONTROL; + +enum : uint { SECURITY_DYNAMIC_TRACKING = TRUE } +enum : uint { SECURITY_STATIC_TRACKING = FALSE } + +alias BOOLEAN SECURITY_CONTEXT_TRACKING_MODE; +alias BOOLEAN* PSECURITY_CONTEXT_TRACKING_MODE; + +struct _SECURITY_QUALITY_OF_SERVICE { + DWORD Length; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; + BOOLEAN EffectiveOnly; +} +alias _SECURITY_QUALITY_OF_SERVICE SECURITY_QUALITY_OF_SERVICE; +alias _SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE; + +struct _SE_IMPERSONATION_STATE { + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL Level; +} +alias _SE_IMPERSONATION_STATE SE_IMPERSONATION_STATE; +alias _SE_IMPERSONATION_STATE* PSE_IMPERSONATION_STATE; + +enum : uint { DISABLE_MAX_PRIVILEGE = 0x1 } +enum : uint { SANDBOX_INERT = 0x2 } + +alias DWORD SECURITY_INFORMATION; +alias DWORD* PSECURITY_INFORMATION; + +enum : uint { OWNER_SECURITY_INFORMATION = 0x00000001 } +enum : uint { GROUP_SECURITY_INFORMATION = 0x00000002 } +enum : uint { DACL_SECURITY_INFORMATION = 0x00000004 } +enum : uint { SACL_SECURITY_INFORMATION = 0x00000008 } + +enum : uint { PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 } +enum : uint { PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 } +enum : uint { UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 } +enum : uint { UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 } + +enum : uint { PROCESS_TERMINATE = 0x0001 } +enum : uint { PROCESS_CREATE_THREAD = 0x0002 } +enum : uint { PROCESS_SET_SESSIONID = 0x0004 } +enum : uint { PROCESS_VM_OPERATION = 0x0008 } +enum : uint { PROCESS_VM_READ = 0x0010 } +enum : uint { PROCESS_VM_WRITE = 0x0020 } +enum : uint { PROCESS_DUP_HANDLE = 0x0040 } +enum : uint { PROCESS_CREATE_PROCESS = 0x0080 } +enum : uint { PROCESS_SET_QUOTA = 0x0100 } +enum : uint { PROCESS_SET_INFORMATION = 0x0200 } +enum : uint { PROCESS_QUERY_INFORMATION = 0x0400 } +enum : uint { PROCESS_SUSPEND_RESUME = 0x0800 } +enum : uint { PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFF } + +// #if defined(_WIN64) + +// #... + +// #else + +enum : uint { MAXIMUM_PROCESSORS = 32 } + +// #endif + +enum : uint { THREAD_TERMINATE = 0x0001 } +enum : uint { THREAD_SUSPEND_RESUME = 0x0002 } +enum : uint { THREAD_GET_CONTEXT = 0x0008 } +enum : uint { THREAD_SET_CONTEXT = 0x0010 } +enum : uint { THREAD_SET_INFORMATION = 0x0020 } +enum : uint { THREAD_QUERY_INFORMATION = 0x0040 } +enum : uint { THREAD_SET_THREAD_TOKEN = 0x0080 } +enum : uint { THREAD_IMPERSONATE = 0x0100 } +enum : uint { THREAD_DIRECT_IMPERSONATION = 0x0200 } + +enum : uint { THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF } + +enum : uint { JOB_OBJECT_ASSIGN_PROCESS = 0x0001 } +enum : uint { JOB_OBJECT_SET_ATTRIBUTES = 0x0002 } +enum : uint { JOB_OBJECT_QUERY = 0x0004 } +enum : uint { JOB_OBJECT_TERMINATE = 0x0008 } +enum : uint { JOB_OBJECT_SET_SECURITY_ATTRIBUTES = 0x0010 } +enum : uint { JOB_OBJECT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F } + +struct _JOB_SET_ARRAY { + HANDLE JobHandle; + DWORD MemberLevel; + DWORD Flags; +} +alias _JOB_SET_ARRAY JOB_SET_ARRAY; +alias _JOB_SET_ARRAY* PJOB_SET_ARRAY; + +enum : uint { TLS_MINIMUM_AVAILABLE = 64 } + +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 NT_TIB; + +alias NT_TIB* PNT_TIB; + +struct _NT_TIB32 { + DWORD ExceptionList; + DWORD StackBase; + DWORD StackLimit; + DWORD SubSystemTib; +union { + DWORD FiberData; + DWORD Version; +} + + DWORD ArbitraryUserPointer; + DWORD Self; +} +alias _NT_TIB32 NT_TIB32; +alias _NT_TIB32* PNT_TIB32; + +struct _NT_TIB64 { + DWORD64 ExceptionList; + DWORD64 StackBase; + DWORD64 StackLimit; + DWORD64 SubSystemTib; +union { + DWORD64 FiberData; + DWORD Version; +} + + DWORD64 ArbitraryUserPointer; + DWORD64 Self; +} +alias _NT_TIB64 NT_TIB64; +alias _NT_TIB64* PNT_TIB64; + +// #if !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) +// #... +// #endif + +enum : uint { THREAD_BASE_PRIORITY_LOWRT = 15 } +enum : uint { THREAD_BASE_PRIORITY_MAX = 2 } +enum { THREAD_BASE_PRIORITY_MIN = -2 } +enum { THREAD_BASE_PRIORITY_IDLE = -15 } + +struct _QUOTA_LIMITS { + SIZE_T PagedPoolLimit; + SIZE_T NonPagedPoolLimit; + SIZE_T MinimumWorkingSetSize; + SIZE_T MaximumWorkingSetSize; + SIZE_T PagefileLimit; + LARGE_INTEGER TimeLimit; +} +alias _QUOTA_LIMITS QUOTA_LIMITS; + +alias QUOTA_LIMITS* PQUOTA_LIMITS; + +struct _IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; +} +alias _IO_COUNTERS IO_COUNTERS; + +alias IO_COUNTERS* PIO_COUNTERS; + +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 JOBOBJECT_BASIC_ACCOUNTING_INFORMATION; +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 JOBOBJECT_BASIC_LIMIT_INFORMATION; +alias _JOBOBJECT_BASIC_LIMIT_INFORMATION* PJOBOBJECT_BASIC_LIMIT_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 JOBOBJECT_EXTENDED_LIMIT_INFORMATION; +alias _JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; + +struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { + DWORD NumberOfAssignedProcesses; + DWORD NumberOfProcessIdsInList; + ULONG_PTR ProcessIdList[1]; +} +alias _JOBOBJECT_BASIC_PROCESS_ID_LIST JOBOBJECT_BASIC_PROCESS_ID_LIST; +alias _JOBOBJECT_BASIC_PROCESS_ID_LIST* PJOBOBJECT_BASIC_PROCESS_ID_LIST; + +struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { + DWORD UIRestrictionsClass; +} +alias _JOBOBJECT_BASIC_UI_RESTRICTIONS JOBOBJECT_BASIC_UI_RESTRICTIONS; +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 JOBOBJECT_SECURITY_LIMIT_INFORMATION; +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 JOBOBJECT_END_OF_JOB_TIME_INFORMATION; +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 JOBOBJECT_ASSOCIATE_COMPLETION_PORT; +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 JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; +alias _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION* PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; + +struct _JOBOBJECT_JOBSET_INFORMATION { + DWORD MemberLevel; +} +alias _JOBOBJECT_JOBSET_INFORMATION JOBOBJECT_JOBSET_INFORMATION; +alias _JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION; + +enum : uint { JOB_OBJECT_TERMINATE_AT_END_OF_JOB = 0 } +enum : uint { JOB_OBJECT_POST_AT_END_OF_JOB = 1 } + +enum : uint { JOB_OBJECT_MSG_END_OF_JOB_TIME = 1 } +enum : uint { JOB_OBJECT_MSG_END_OF_PROCESS_TIME = 2 } +enum : uint { JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT = 3 } +enum : uint { JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO = 4 } +enum : uint { JOB_OBJECT_MSG_NEW_PROCESS = 6 } +enum : uint { JOB_OBJECT_MSG_EXIT_PROCESS = 7 } +enum : uint { JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS = 8 } +enum : uint { JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT = 9 } +enum : uint { JOB_OBJECT_MSG_JOB_MEMORY_LIMIT = 10 } + +enum : uint { JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 } +enum : uint { JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 } +enum : uint { JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 } +enum : uint { JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 } +enum : uint { JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 } +enum : uint { JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 } +enum : uint { JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 } +enum : uint { JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 } + +enum : uint { JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 } +enum : uint { JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 } +enum : uint { JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 } +enum : uint { JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 } +enum : uint { JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 } +enum : uint { JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 } + +enum : uint { JOB_OBJECT_LIMIT_RESERVED2 = 0x00004000 } +enum : uint { JOB_OBJECT_LIMIT_RESERVED3 = 0x00008000 } +enum : uint { JOB_OBJECT_LIMIT_RESERVED4 = 0x00010000 } +enum : uint { JOB_OBJECT_LIMIT_RESERVED5 = 0x00020000 } +enum : uint { JOB_OBJECT_LIMIT_RESERVED6 = 0x00040000 } + +enum : uint { JOB_OBJECT_LIMIT_VALID_FLAGS = 0x0007ffff } + +enum : uint { JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS = 0x000000ff } +enum : uint { JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS = 0x00003fff } +enum : uint { JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS = 0x0007ffff } + +enum : uint { JOB_OBJECT_UILIMIT_NONE = 0x00000000 } + +enum : uint { JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 } +enum : uint { JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 } +enum : uint { JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 } +enum : uint { JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 } +enum : uint { JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 } +enum : uint { JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 } +enum : uint { JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 } +enum : uint { JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 } + +enum : uint { JOB_OBJECT_UILIMIT_ALL = 0x000000FF } + +enum : uint { JOB_OBJECT_UI_VALID_FLAGS = 0x000000FF } + +enum : uint { JOB_OBJECT_SECURITY_NO_ADMIN = 0x00000001 } +enum : uint { JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = 0x00000002 } +enum : uint { JOB_OBJECT_SECURITY_ONLY_TOKEN = 0x00000004 } +enum : uint { JOB_OBJECT_SECURITY_FILTER_TOKENS = 0x00000008 } + +enum : uint { JOB_OBJECT_SECURITY_VALID_FLAGS = 0x0000000f } + +alias int _JOBOBJECTINFOCLASS; +enum { + JobObjectBasicAccountingInformation = 1, + JobObjectBasicLimitInformation, + JobObjectBasicProcessIdList, + JobObjectBasicUIRestrictions, + JobObjectSecurityLimitInformation, + JobObjectEndOfJobTimeInformation, + JobObjectAssociateCompletionPortInformation, + JobObjectBasicAndIoAccountingInformation, + JobObjectExtendedLimitInformation, + JobObjectJobSetInformation, + MaxJobObjectInfoClass, +} +alias _JOBOBJECTINFOCLASS JOBOBJECTINFOCLASS; + +enum : uint { EVENT_MODIFY_STATE = 0x0002 } +enum : uint { EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 } +enum : uint { MUTANT_QUERY_STATE = 0x0001 } + +enum : uint { MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE } +enum : uint { SEMAPHORE_MODIFY_STATE = 0x0002 } +enum : uint { SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 } + +enum : uint { TIMER_QUERY_STATE = 0x0001 } +enum : uint { TIMER_MODIFY_STATE = 0x0002 } + +enum : uint { TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE } + +enum : uint { TIME_ZONE_ID_UNKNOWN = 0 } +enum : uint { TIME_ZONE_ID_STANDARD = 1 } +enum : uint { TIME_ZONE_ID_DAYLIGHT = 2 } + +enum : uint { MAXIMUM_NUMA_NODES = 16 } + +struct _SYSTEM_NUMA_INFORMATION { + DWORD HighestNodeNumber; + DWORD Reserved; +union { + ULONGLONG ActiveProcessorsAffinityMask[MAXIMUM_NUMA_NODES]; + ULONGLONG AvailableMemory[MAXIMUM_NUMA_NODES]; +} + +} +alias _SYSTEM_NUMA_INFORMATION SYSTEM_NUMA_INFORMATION; +alias _SYSTEM_NUMA_INFORMATION* PSYSTEM_NUMA_INFORMATION; + +enum : uint { PROCESSOR_INTEL_386 = 386 } +enum : uint { PROCESSOR_INTEL_486 = 486 } +enum : uint { PROCESSOR_INTEL_PENTIUM = 586 } +enum : uint { PROCESSOR_INTEL_IA64 = 2200 } +enum : uint { PROCESSOR_MIPS_R4000 = 4000 } +enum : uint { PROCESSOR_ALPHA_21064 = 21064 } +enum : uint { PROCESSOR_PPC_601 = 601 } +enum : uint { PROCESSOR_PPC_603 = 603 } +enum : uint { PROCESSOR_PPC_604 = 604 } +enum : uint { PROCESSOR_PPC_620 = 620 } +enum : uint { PROCESSOR_HITACHI_SH3 = 10003 } +enum : uint { PROCESSOR_HITACHI_SH3E = 10004 } +enum : uint { PROCESSOR_HITACHI_SH4 = 10005 } +enum : uint { PROCESSOR_MOTOROLA_821 = 821 } +enum : uint { PROCESSOR_SHx_SH3 = 103 } +enum : uint { PROCESSOR_SHx_SH4 = 104 } +enum : uint { PROCESSOR_STRONGARM = 2577 } +enum : uint { PROCESSOR_ARM720 = 1824 } +enum : uint { PROCESSOR_ARM820 = 2080 } +enum : uint { PROCESSOR_ARM920 = 2336 } +enum : uint { PROCESSOR_ARM_7TDMI = 70001 } +enum : uint { PROCESSOR_OPTIL = 0x494f } + +enum : uint { PROCESSOR_ARCHITECTURE_INTEL = 0 } +enum : uint { PROCESSOR_ARCHITECTURE_MIPS = 1 } +enum : uint { PROCESSOR_ARCHITECTURE_ALPHA = 2 } +enum : uint { PROCESSOR_ARCHITECTURE_PPC = 3 } +enum : uint { PROCESSOR_ARCHITECTURE_SHX = 4 } +enum : uint { PROCESSOR_ARCHITECTURE_ARM = 5 } +enum : uint { PROCESSOR_ARCHITECTURE_IA64 = 6 } +enum : uint { PROCESSOR_ARCHITECTURE_ALPHA64 = 7 } +enum : uint { PROCESSOR_ARCHITECTURE_MSIL = 8 } +enum : uint { PROCESSOR_ARCHITECTURE_AMD64 = 9 } +enum : uint { PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 = 10 } + +enum : uint { PROCESSOR_ARCHITECTURE_UNKNOWN = 0xFFFF } + +enum : uint { PF_FLOATING_POINT_PRECISION_ERRATA = 0 } +enum : uint { PF_FLOATING_POINT_EMULATED = 1 } +enum : uint { PF_COMPARE_EXCHANGE_DOUBLE = 2 } +enum : uint { PF_MMX_INSTRUCTIONS_AVAILABLE = 3 } +enum : uint { PF_PPC_MOVEMEM_64BIT_OK = 4 } +enum : uint { PF_ALPHA_BYTE_INSTRUCTIONS = 5 } +enum : uint { PF_XMMI_INSTRUCTIONS_AVAILABLE = 6 } +enum : uint { PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7 } +enum : uint { PF_RDTSC_INSTRUCTION_AVAILABLE = 8 } +enum : uint { PF_PAE_ENABLED = 9 } +enum : uint { PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10 } + +struct _MEMORY_BASIC_INFORMATION { + PVOID BaseAddress; + PVOID AllocationBase; + DWORD AllocationProtect; + SIZE_T RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; +} +alias _MEMORY_BASIC_INFORMATION MEMORY_BASIC_INFORMATION; +alias _MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION; + +struct _MEMORY_BASIC_INFORMATION32 { + DWORD BaseAddress; + DWORD AllocationBase; + DWORD AllocationProtect; + DWORD RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; +} +alias _MEMORY_BASIC_INFORMATION32 MEMORY_BASIC_INFORMATION32; +alias _MEMORY_BASIC_INFORMATION32* PMEMORY_BASIC_INFORMATION32; + +struct _MEMORY_BASIC_INFORMATION64 { + ULONGLONG BaseAddress; + ULONGLONG AllocationBase; + DWORD AllocationProtect; + DWORD __alignment1; + ULONGLONG RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; + DWORD __alignment2; +} +alias _MEMORY_BASIC_INFORMATION64 MEMORY_BASIC_INFORMATION64; +alias _MEMORY_BASIC_INFORMATION64* PMEMORY_BASIC_INFORMATION64; + +enum : uint { SECTION_QUERY = 0x0001 } +enum : uint { SECTION_MAP_WRITE = 0x0002 } +enum : uint { SECTION_MAP_READ = 0x0004 } +enum : uint { SECTION_MAP_EXECUTE = 0x0008 } +enum : uint { SECTION_EXTEND_SIZE = 0x0010 } + +enum : uint { SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE } +enum : uint { PAGE_NOACCESS = 0x01 } +enum : uint { PAGE_READONLY = 0x02 } +enum : uint { PAGE_READWRITE = 0x04 } +enum : uint { PAGE_WRITECOPY = 0x08 } +enum : uint { PAGE_EXECUTE = 0x10 } +enum : uint { PAGE_EXECUTE_READ = 0x20 } +enum : uint { PAGE_EXECUTE_READWRITE = 0x40 } +enum : uint { PAGE_EXECUTE_WRITECOPY = 0x80 } +enum : uint { PAGE_GUARD = 0x100 } +enum : uint { PAGE_NOCACHE = 0x200 } +enum : uint { PAGE_WRITECOMBINE = 0x400 } +enum : uint { MEM_COMMIT = 0x1000 } +enum : uint { MEM_RESERVE = 0x2000 } +enum : uint { MEM_DECOMMIT = 0x4000 } +enum : uint { MEM_RELEASE = 0x8000 } +enum : uint { MEM_FREE = 0x10000 } +enum : uint { MEM_PRIVATE = 0x20000 } +enum : uint { MEM_MAPPED = 0x40000 } +enum : uint { MEM_RESET = 0x80000 } +enum : uint { MEM_TOP_DOWN = 0x100000 } +enum : uint { MEM_WRITE_WATCH = 0x200000 } +enum : uint { MEM_PHYSICAL = 0x400000 } +enum : uint { MEM_4MB_PAGES = 0x80000000 } +enum : uint { SEC_FILE = 0x800000 } +enum : uint { SEC_IMAGE = 0x1000000 } +enum : uint { SEC_RESERVE = 0x4000000 } +enum : uint { SEC_COMMIT = 0x8000000 } +enum : uint { SEC_NOCACHE = 0x10000000 } +alias SEC_IMAGE MEM_IMAGE; +enum : uint { WRITE_WATCH_FLAG_RESET = 0x01 } + +enum : uint { FILE_READ_DATA = 0x0001 } +enum : uint { FILE_LIST_DIRECTORY = 0x0001 } + +enum : uint { FILE_WRITE_DATA = 0x0002 } +enum : uint { FILE_ADD_FILE = 0x0002 } + +enum : uint { FILE_APPEND_DATA = 0x0004 } +enum : uint { FILE_ADD_SUBDIRECTORY = 0x0004 } +enum : uint { FILE_CREATE_PIPE_INSTANCE = 0x0004 } + +enum : uint { FILE_READ_EA = 0x0008 } + +enum : uint { FILE_WRITE_EA = 0x0010 } + +enum : uint { FILE_EXECUTE = 0x0020 } +enum : uint { FILE_TRAVERSE = 0x0020 } + +enum : uint { FILE_DELETE_CHILD = 0x0040 } + +enum : uint { FILE_READ_ATTRIBUTES = 0x0080 } + +enum : uint { FILE_WRITE_ATTRIBUTES = 0x0100 } + +enum : uint { FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF } + +enum : uint { FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE } + +enum : uint { FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE } + +enum : uint { FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE } + +enum : uint { FILE_SHARE_READ = 0x00000001 } +enum : uint { FILE_SHARE_WRITE = 0x00000002 } +enum : uint { FILE_SHARE_DELETE = 0x00000004 } +enum : uint { FILE_ATTRIBUTE_READONLY = 0x00000001 } +enum : uint { FILE_ATTRIBUTE_HIDDEN = 0x00000002 } +enum : uint { FILE_ATTRIBUTE_SYSTEM = 0x00000004 } +enum : uint { FILE_ATTRIBUTE_DIRECTORY = 0x00000010 } +enum : uint { FILE_ATTRIBUTE_ARCHIVE = 0x00000020 } +enum : uint { FILE_ATTRIBUTE_DEVICE = 0x00000040 } +enum : uint { FILE_ATTRIBUTE_NORMAL = 0x00000080 } +enum : uint { FILE_ATTRIBUTE_TEMPORARY = 0x00000100 } +enum : uint { FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 } +enum : uint { FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 } +enum : uint { FILE_ATTRIBUTE_COMPRESSED = 0x00000800 } +enum : uint { FILE_ATTRIBUTE_OFFLINE = 0x00001000 } +enum : uint { FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 } +enum : uint { FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 } +enum : uint { FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001 } +enum : uint { FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002 } +enum : uint { FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004 } +enum : uint { FILE_NOTIFY_CHANGE_SIZE = 0x00000008 } +enum : uint { FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010 } +enum : uint { FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020 } +enum : uint { FILE_NOTIFY_CHANGE_CREATION = 0x00000040 } +enum : uint { FILE_NOTIFY_CHANGE_SECURITY = 0x00000100 } +enum : uint { FILE_ACTION_ADDED = 0x00000001 } +enum : uint { FILE_ACTION_REMOVED = 0x00000002 } +enum : uint { FILE_ACTION_MODIFIED = 0x00000003 } +enum : uint { FILE_ACTION_RENAMED_OLD_NAME = 0x00000004 } +enum : uint { FILE_ACTION_RENAMED_NEW_NAME = 0x00000005 } +enum : DWORD { MAILSLOT_NO_MESSAGE = cast(DWORD)-1 } +enum : DWORD { MAILSLOT_WAIT_FOREVER = cast(DWORD)-1 } +enum : uint { FILE_CASE_SENSITIVE_SEARCH = 0x00000001 } +enum : uint { FILE_CASE_PRESERVED_NAMES = 0x00000002 } +enum : uint { FILE_UNICODE_ON_DISK = 0x00000004 } +enum : uint { FILE_PERSISTENT_ACLS = 0x00000008 } +enum : uint { FILE_FILE_COMPRESSION = 0x00000010 } +enum : uint { FILE_VOLUME_QUOTAS = 0x00000020 } +enum : uint { FILE_SUPPORTS_SPARSE_FILES = 0x00000040 } +enum : uint { FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 } +enum : uint { FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100 } +enum : uint { FILE_VOLUME_IS_COMPRESSED = 0x00008000 } +enum : uint { FILE_SUPPORTS_OBJECT_IDS = 0x00010000 } +enum : uint { FILE_SUPPORTS_ENCRYPTION = 0x00020000 } +enum : uint { FILE_NAMED_STREAMS = 0x00040000 } +enum : uint { FILE_READ_ONLY_VOLUME = 0x00080000 } + +struct _FILE_NOTIFY_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR FileName[1]; +} +alias _FILE_NOTIFY_INFORMATION FILE_NOTIFY_INFORMATION; +alias _FILE_NOTIFY_INFORMATION* PFILE_NOTIFY_INFORMATION; + +union _FILE_SEGMENT_ELEMENT { + PVOID64 Buffer; + ULONGLONG Alignment; +} +alias _FILE_SEGMENT_ELEMENT FILE_SEGMENT_ELEMENT; +alias _FILE_SEGMENT_ELEMENT* PFILE_SEGMENT_ELEMENT; + +struct _REPARSE_GUID_DATA_BUFFER { + DWORD ReparseTag; + WORD ReparseDataLength; + WORD Reserved; + GUID ReparseGuid; +struct { + BYTE DataBuffer[1]; +} + +} +alias _REPARSE_GUID_DATA_BUFFER REPARSE_GUID_DATA_BUFFER; +alias _REPARSE_GUID_DATA_BUFFER* PREPARSE_GUID_DATA_BUFFER; + +// #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer) + +enum : uint { MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 } + +enum : uint { IO_REPARSE_TAG_RESERVED_ZERO = 0 } +enum : uint { IO_REPARSE_TAG_RESERVED_ONE = 1 } + +alias IO_REPARSE_TAG_RESERVED_ONE IO_REPARSE_TAG_RESERVED_RANGE; + +// #define IsReparseTagMicrosoft(_tag) ( ((_tag) & 0x80000000) ) + +// #define IsReparseTagNameSurrogate(_tag) ( ((_tag) & 0x20000000) ) + +enum : uint { IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 } +enum : uint { IO_REPARSE_TAG_HSM = 0xC0000004 } +enum : uint { IO_REPARSE_TAG_SIS = 0x80000007 } +enum : uint { IO_REPARSE_TAG_FILTER_MANAGER = 0x8000000B } +enum : uint { IO_COMPLETION_MODIFY_STATE = 0x0002 } +enum : uint { IO_COMPLETION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3 } +enum : uint { DUPLICATE_CLOSE_SOURCE = 0x00000001 } +enum : uint { DUPLICATE_SAME_ACCESS = 0x00000002 } + +alias int _SYSTEM_POWER_STATE; +enum { + PowerSystemUnspecified = 0, + PowerSystemWorking = 1, + PowerSystemSleeping1 = 2, + PowerSystemSleeping2 = 3, + PowerSystemSleeping3 = 4, + PowerSystemHibernate = 5, + PowerSystemShutdown = 6, + PowerSystemMaximum = 7, +} +alias _SYSTEM_POWER_STATE SYSTEM_POWER_STATE; +alias _SYSTEM_POWER_STATE* PSYSTEM_POWER_STATE; + +enum : uint { POWER_SYSTEM_MAXIMUM = 7 } + +enum _4 { + PowerActionNone = 0, + PowerActionReserved, + PowerActionSleep, + PowerActionHibernate, + PowerActionShutdown, + PowerActionShutdownReset, + PowerActionShutdownOff, + PowerActionWarmEject, +} +alias _4 POWER_ACTION; +alias _4* PPOWER_ACTION; + +alias int _DEVICE_POWER_STATE; +enum { + PowerDeviceUnspecified = 0, + PowerDeviceD0, + PowerDeviceD1, + PowerDeviceD2, + PowerDeviceD3, + PowerDeviceMaximum, +} +alias _DEVICE_POWER_STATE DEVICE_POWER_STATE; +alias _DEVICE_POWER_STATE* PDEVICE_POWER_STATE; + +enum : DWORD { ES_SYSTEM_REQUIRED = 0x00000001 } +enum : DWORD { ES_DISPLAY_REQUIRED = 0x00000002 } +enum : DWORD { ES_USER_PRESENT = 0x00000004 } +enum : DWORD { ES_CONTINUOUS = 0x80000000 } + +alias DWORD EXECUTION_STATE; + +enum _5 { + LT_DONT_CARE, + LT_LOWEST_LATENCY, +} +alias _5 LATENCY_TIME; + +enum : uint { PDCAP_D0_SUPPORTED = 0x00000001 } +enum : uint { PDCAP_D1_SUPPORTED = 0x00000002 } +enum : uint { PDCAP_D2_SUPPORTED = 0x00000004 } +enum : uint { PDCAP_D3_SUPPORTED = 0x00000008 } +enum : uint { PDCAP_WAKE_FROM_D0_SUPPORTED = 0x00000010 } +enum : uint { PDCAP_WAKE_FROM_D1_SUPPORTED = 0x00000020 } +enum : uint { PDCAP_WAKE_FROM_D2_SUPPORTED = 0x00000040 } +enum : uint { PDCAP_WAKE_FROM_D3_SUPPORTED = 0x00000080 } +enum : uint { PDCAP_WARM_EJECT_SUPPORTED = 0x00000100 } + +struct CM_Power_Data_s { + DWORD PD_Size; + DEVICE_POWER_STATE PD_MostRecentPowerState; + DWORD PD_Capabilities; + DWORD PD_D1Latency; + DWORD PD_D2Latency; + DWORD PD_D3Latency; + DEVICE_POWER_STATE PD_PowerStateMapping[POWER_SYSTEM_MAXIMUM]; + SYSTEM_POWER_STATE PD_DeepestSystemWake; +} +alias CM_Power_Data_s CM_POWER_DATA; +alias CM_Power_Data_s* PCM_POWER_DATA; + +enum _6 { + SystemPowerPolicyAc, + SystemPowerPolicyDc, + VerifySystemPolicyAc, + VerifySystemPolicyDc, + SystemPowerCapabilities, + SystemBatteryState, + SystemPowerStateHandler, + ProcessorStateHandler, + SystemPowerPolicyCurrent, + AdministratorPowerPolicy, + SystemReserveHiberFile, + ProcessorInformation, + SystemPowerInformation, + ProcessorStateHandler2, + LastWakeTime, + LastSleepTime, + SystemExecutionState, + SystemPowerStateNotifyHandler, + ProcessorPowerPolicyAc, + ProcessorPowerPolicyDc, + VerifyProcessorPowerPolicyAc, + VerifyProcessorPowerPolicyDc, + ProcessorPowerPolicyCurrent, +} +alias _6 POWER_INFORMATION_LEVEL; + +struct _7 { + DWORD Granularity; + DWORD Capacity; +} +alias _7 BATTERY_REPORTING_SCALE; +alias _7* PBATTERY_REPORTING_SCALE; + +struct _8 { + POWER_ACTION Action; + DWORD Flags; + DWORD EventCode; +} +alias _8 POWER_ACTION_POLICY; +alias _8* PPOWER_ACTION_POLICY; + +enum : uint { POWER_ACTION_QUERY_ALLOWED = 0x00000001 } +enum : uint { POWER_ACTION_UI_ALLOWED = 0x00000002 } +enum : uint { POWER_ACTION_OVERRIDE_APPS = 0x00000004 } +enum : uint { POWER_ACTION_LIGHTEST_FIRST = 0x10000000 } +enum : uint { POWER_ACTION_LOCK_CONSOLE = 0x20000000 } +enum : uint { POWER_ACTION_DISABLE_WAKES = 0x40000000 } +enum : uint { POWER_ACTION_CRITICAL = 0x80000000 } + +enum : uint { POWER_LEVEL_USER_NOTIFY_TEXT = 0x00000001 } +enum : uint { POWER_LEVEL_USER_NOTIFY_SOUND = 0x00000002 } +enum : uint { POWER_LEVEL_USER_NOTIFY_EXEC = 0x00000004 } +enum : uint { POWER_USER_NOTIFY_BUTTON = 0x00000008 } +enum : uint { POWER_USER_NOTIFY_SHUTDOWN = 0x00000010 } +enum : uint { POWER_FORCE_TRIGGER_RESET = 0x80000000 } + +struct _9 { + BOOLEAN Enable; + BYTE Spare[3]; + DWORD BatteryLevel; + POWER_ACTION_POLICY PowerPolicy; + SYSTEM_POWER_STATE MinSystemState; +} +alias _9 SYSTEM_POWER_LEVEL; +alias _9* PSYSTEM_POWER_LEVEL; + +enum : uint { NUM_DISCHARGE_POLICIES = 4 } +enum : uint { DISCHARGE_POLICY_CRITICAL = 0 } +enum : uint { DISCHARGE_POLICY_LOW = 1 } + +enum : uint { PO_THROTTLE_NONE = 0 } +enum : uint { PO_THROTTLE_CONSTANT = 1 } +enum : uint { PO_THROTTLE_DEGRADE = 2 } +enum : uint { PO_THROTTLE_ADAPTIVE = 3 } +enum : uint { PO_THROTTLE_MAXIMUM = 4 } + +struct _SYSTEM_POWER_POLICY { + DWORD Revision; + + POWER_ACTION_POLICY PowerButton; + POWER_ACTION_POLICY SleepButton; + POWER_ACTION_POLICY LidClose; + SYSTEM_POWER_STATE LidOpenWake; + DWORD Reserved; + POWER_ACTION_POLICY Idle; + DWORD IdleTimeout; + BYTE IdleSensitivity; + + BYTE DynamicThrottle; + BYTE Spare2[2]; + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + SYSTEM_POWER_STATE ReducedLatencySleep; + DWORD WinLogonFlags; + DWORD Spare3; + DWORD DozeS4Timeout; + DWORD BroadcastCapacityResolution; + SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES]; + DWORD VideoTimeout; + BOOLEAN VideoDimDisplay; + DWORD VideoReserved[3]; + DWORD SpindownTimeout; + BOOLEAN OptimizeForPower; + BYTE FanThrottleTolerance; + BYTE ForcedThrottle; + BYTE MinThrottle; + POWER_ACTION_POLICY OverThrottled; +} +alias _SYSTEM_POWER_POLICY SYSTEM_POWER_POLICY; +alias _SYSTEM_POWER_POLICY* PSYSTEM_POWER_POLICY; + +struct _PROCESSOR_POWER_POLICY_INFO { + + DWORD TimeCheck; + DWORD DemoteLimit; + DWORD PromoteLimit; + + BYTE DemotePercent; + BYTE PromotePercent; + BYTE Spare[2]; +// DWORD AllowDemotion:1; +// DWORD AllowPromotion:1; +// DWORD Reserved:30; + +} +alias _PROCESSOR_POWER_POLICY_INFO PROCESSOR_POWER_POLICY_INFO; +alias _PROCESSOR_POWER_POLICY_INFO* PPROCESSOR_POWER_POLICY_INFO; + +struct _PROCESSOR_POWER_POLICY { + DWORD Revision; + + BYTE DynamicThrottle; + BYTE Spare[3]; + DWORD Reserved; + + DWORD PolicyCount; + PROCESSOR_POWER_POLICY_INFO Policy[3]; +} +alias _PROCESSOR_POWER_POLICY PROCESSOR_POWER_POLICY; +alias _PROCESSOR_POWER_POLICY* PPROCESSOR_POWER_POLICY; + +struct _ADMINISTRATOR_POWER_POLICY { + + SYSTEM_POWER_STATE MinSleep; + SYSTEM_POWER_STATE MaxSleep; + DWORD MinVideoTimeout; + DWORD MaxVideoTimeout; + DWORD MinSpindownTimeout; + DWORD MaxSpindownTimeout; +} +alias _ADMINISTRATOR_POWER_POLICY ADMINISTRATOR_POWER_POLICY; +alias _ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY; + +struct _10 { + + 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; + BYTE ProcessorMinThrottle; + BYTE ProcessorMaxThrottle; + BYTE spare2[4]; + BOOLEAN DiskSpinDown; + BYTE spare3[8]; + BOOLEAN SystemBatteriesPresent; + BOOLEAN BatteriesAreShortTerm; + BATTERY_REPORTING_SCALE BatteryScale[3]; + SYSTEM_POWER_STATE AcOnLineWake; + SYSTEM_POWER_STATE SoftLidWake; + SYSTEM_POWER_STATE RtcWake; + SYSTEM_POWER_STATE MinDeviceWakeState; + SYSTEM_POWER_STATE DefaultLowLatencyWake; +} +alias _10 SYSTEM_POWER_CAPABILITIES; +alias _10* PSYSTEM_POWER_CAPABILITIES; + +struct _11 { + BOOLEAN AcOnLine; + BOOLEAN BatteryPresent; + BOOLEAN Charging; + BOOLEAN Discharging; + BOOLEAN Spare1[4]; + DWORD MaxCapacity; + DWORD RemainingCapacity; + DWORD Rate; + DWORD EstimatedTime; + DWORD DefaultAlert1; + DWORD DefaultAlert2; +} +alias _11 SYSTEM_BATTERY_STATE; +alias _11* PSYSTEM_BATTERY_STATE; + +// #ifndef _MAC + +align(4): + +enum : uint { IMAGE_DOS_SIGNATURE = 0x5A4D } +enum : uint { IMAGE_OS2_SIGNATURE = 0x454E } +enum : uint { IMAGE_OS2_SIGNATURE_LE = 0x454C } +enum : uint { IMAGE_VXD_SIGNATURE = 0x454C } +enum : uint { IMAGE_NT_SIGNATURE = 0x00004550 } + +align(2): + +// #else + +// #... + +// #... +// #... +// #... +// #... +// #endif + +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 e_res[4]; + WORD e_oemid; + WORD e_oeminfo; + WORD e_res2[10]; + LONG e_lfanew; +} +alias _IMAGE_DOS_HEADER IMAGE_DOS_HEADER; +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 IMAGE_OS2_HEADER; +alias _IMAGE_OS2_HEADER* PIMAGE_OS2_HEADER; + +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 e32_res3[12]; + DWORD e32_winresoff; + DWORD e32_winreslen; + WORD e32_devid; + WORD e32_ddkver; +} +alias _IMAGE_VXD_HEADER IMAGE_VXD_HEADER; +alias _IMAGE_VXD_HEADER* PIMAGE_VXD_HEADER; + +// #ifndef _MAC +align: +// #endif + +struct _IMAGE_FILE_HEADER { + WORD Machine; + WORD NumberOfSections; + DWORD TimeDateStamp; + DWORD PointerToSymbolTable; + DWORD NumberOfSymbols; + WORD SizeOfOptionalHeader; + WORD Characteristics; +} +alias _IMAGE_FILE_HEADER IMAGE_FILE_HEADER; +alias _IMAGE_FILE_HEADER* PIMAGE_FILE_HEADER; + +enum : uint { IMAGE_SIZEOF_FILE_HEADER = 20 } + +enum : uint { IMAGE_FILE_RELOCS_STRIPPED = 0x0001 } +enum : uint { IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002 } +enum : uint { IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004 } +enum : uint { IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008 } +enum : uint { IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010 } +enum : uint { IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020 } +enum : uint { IMAGE_FILE_BYTES_REVERSED_LO = 0x0080 } +enum : uint { IMAGE_FILE_32BIT_MACHINE = 0x0100 } +enum : uint { IMAGE_FILE_DEBUG_STRIPPED = 0x0200 } +enum : uint { IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400 } +enum : uint { IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800 } +enum : uint { IMAGE_FILE_SYSTEM = 0x1000 } +enum : uint { IMAGE_FILE_DLL = 0x2000 } +enum : uint { IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000 } +enum : uint { IMAGE_FILE_BYTES_REVERSED_HI = 0x8000 } + +enum : uint { IMAGE_FILE_MACHINE_UNKNOWN = 0 } +enum : uint { IMAGE_FILE_MACHINE_I386 = 0x014c } +enum : uint { IMAGE_FILE_MACHINE_R3000 = 0x0162 } +enum : uint { IMAGE_FILE_MACHINE_R4000 = 0x0166 } +enum : uint { IMAGE_FILE_MACHINE_R10000 = 0x0168 } +enum : uint { IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169 } +enum : uint { IMAGE_FILE_MACHINE_ALPHA = 0x0184 } +enum : uint { IMAGE_FILE_MACHINE_SH3 = 0x01a2 } +enum : uint { IMAGE_FILE_MACHINE_SH3DSP = 0x01a3 } +enum : uint { IMAGE_FILE_MACHINE_SH3E = 0x01a4 } +enum : uint { IMAGE_FILE_MACHINE_SH4 = 0x01a6 } +enum : uint { IMAGE_FILE_MACHINE_SH5 = 0x01a8 } +enum : uint { IMAGE_FILE_MACHINE_ARM = 0x01c0 } +enum : uint { IMAGE_FILE_MACHINE_THUMB = 0x01c2 } +enum : uint { IMAGE_FILE_MACHINE_AM33 = 0x01d3 } +enum : uint { IMAGE_FILE_MACHINE_POWERPC = 0x01F0 } +enum : uint { IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1 } +enum : uint { IMAGE_FILE_MACHINE_IA64 = 0x0200 } +enum : uint { IMAGE_FILE_MACHINE_MIPS16 = 0x0266 } +enum : uint { IMAGE_FILE_MACHINE_ALPHA64 = 0x0284 } +enum : uint { IMAGE_FILE_MACHINE_MIPSFPU = 0x0366 } +enum : uint { IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466 } +alias IMAGE_FILE_MACHINE_ALPHA64 IMAGE_FILE_MACHINE_AXP64; +enum : uint { IMAGE_FILE_MACHINE_TRICORE = 0x0520 } +enum : uint { IMAGE_FILE_MACHINE_CEF = 0x0CEF } +enum : uint { IMAGE_FILE_MACHINE_EBC = 0x0EBC } +enum : uint { IMAGE_FILE_MACHINE_AMD64 = 0x8664 } +enum : uint { IMAGE_FILE_MACHINE_M32R = 0x9041 } +enum : uint { IMAGE_FILE_MACHINE_CEE = 0xC0EE } + +struct _IMAGE_DATA_DIRECTORY { + DWORD VirtualAddress; + DWORD Size; +} +alias _IMAGE_DATA_DIRECTORY IMAGE_DATA_DIRECTORY; +alias _IMAGE_DATA_DIRECTORY* PIMAGE_DATA_DIRECTORY; + +enum : uint { IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16 } + +struct _IMAGE_OPTIONAL_HEADER { + + 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 DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; +} +alias _IMAGE_OPTIONAL_HEADER IMAGE_OPTIONAL_HEADER32; +alias _IMAGE_OPTIONAL_HEADER* PIMAGE_OPTIONAL_HEADER32; + +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 CprMask[4]; + DWORD GpValue; +} +alias _IMAGE_ROM_OPTIONAL_HEADER IMAGE_ROM_OPTIONAL_HEADER; +alias _IMAGE_ROM_OPTIONAL_HEADER* PIMAGE_ROM_OPTIONAL_HEADER; + +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 DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; +} +alias _IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER64; +alias _IMAGE_OPTIONAL_HEADER64* PIMAGE_OPTIONAL_HEADER64; + +enum : uint { IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56 } +enum : uint { IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28 } +enum : uint { IMAGE_SIZEOF_NT_OPTIONAL32_HEADER = 224 } +enum : uint { IMAGE_SIZEOF_NT_OPTIONAL64_HEADER = 240 } + +enum : uint { IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b } +enum : uint { IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b } +enum : uint { IMAGE_ROM_OPTIONAL_HDR_MAGIC = 0x107 } + +// #ifdef _WIN64 +// ... +// #... +// #... +// #else +alias IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; +alias PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; +alias IMAGE_SIZEOF_NT_OPTIONAL32_HEADER IMAGE_SIZEOF_NT_OPTIONAL_HEADER; +alias IMAGE_NT_OPTIONAL_HDR32_MAGIC IMAGE_NT_OPTIONAL_HDR_MAGIC; +// #endif + +struct _IMAGE_NT_HEADERS64 { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER64 OptionalHeader; +} +alias _IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS64; +alias _IMAGE_NT_HEADERS64* PIMAGE_NT_HEADERS64; + +struct _IMAGE_NT_HEADERS { + DWORD Signature; + IMAGE_FILE_HEADER FileHeader; + IMAGE_OPTIONAL_HEADER32 OptionalHeader; +} +alias _IMAGE_NT_HEADERS IMAGE_NT_HEADERS32; +alias _IMAGE_NT_HEADERS* PIMAGE_NT_HEADERS32; + +struct _IMAGE_ROM_HEADERS { + IMAGE_FILE_HEADER FileHeader; + IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; +} +alias _IMAGE_ROM_HEADERS IMAGE_ROM_HEADERS; +alias _IMAGE_ROM_HEADERS* PIMAGE_ROM_HEADERS; + +// #ifdef _WIN64 +// ... +// #else +alias IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; +alias PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; +// #endif + +// #define IMAGE_FIRST_SECTION( ntheader ) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET( IMAGE_NT_HEADERS, OptionalHeader ) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader )) + +enum : uint { IMAGE_SUBSYSTEM_UNKNOWN = 0 } +enum : uint { IMAGE_SUBSYSTEM_NATIVE = 1 } +enum : uint { IMAGE_SUBSYSTEM_WINDOWS_GUI = 2 } +enum : uint { IMAGE_SUBSYSTEM_WINDOWS_CUI = 3 } +enum : uint { IMAGE_SUBSYSTEM_OS2_CUI = 5 } +enum : uint { IMAGE_SUBSYSTEM_POSIX_CUI = 7 } +enum : uint { IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8 } +enum : uint { IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9 } +enum : uint { IMAGE_SUBSYSTEM_EFI_APPLICATION = 10 } +enum : uint { IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11 } +enum : uint { IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12 } +enum : uint { IMAGE_SUBSYSTEM_EFI_ROM = 13 } +enum : uint { IMAGE_SUBSYSTEM_XBOX = 14 } + +enum : uint { IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800 } + +enum : uint { IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000 } + +enum : uint { IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000 } + +enum : uint { IMAGE_DIRECTORY_ENTRY_EXPORT = 0 } +enum : uint { IMAGE_DIRECTORY_ENTRY_IMPORT = 1 } +enum : uint { IMAGE_DIRECTORY_ENTRY_RESOURCE = 2 } +enum : uint { IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3 } +enum : uint { IMAGE_DIRECTORY_ENTRY_SECURITY = 4 } +enum : uint { IMAGE_DIRECTORY_ENTRY_BASERELOC = 5 } +enum : uint { IMAGE_DIRECTORY_ENTRY_DEBUG = 6 } + +enum : uint { IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7 } +enum : uint { IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8 } +enum : uint { IMAGE_DIRECTORY_ENTRY_TLS = 9 } +enum : uint { IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10 } +enum : uint { IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11 } +enum : uint { IMAGE_DIRECTORY_ENTRY_IAT = 12 } +enum : uint { IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13 } +enum : uint { IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14 } + +struct ANON_OBJECT_HEADER { + WORD Sig1; + WORD Sig2; + WORD Version; + WORD Machine; + DWORD TimeDateStamp; + CLSID ClassID; + DWORD SizeOfData; +} + +enum : uint { IMAGE_SIZEOF_SHORT_NAME = 8 } + +struct _IMAGE_SECTION_HEADER { + BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; +union { + DWORD PhysicalAddress; + DWORD VirtualSize; +} + + DWORD VirtualAddress; + DWORD SizeOfRawData; + DWORD PointerToRawData; + DWORD PointerToRelocations; + DWORD PointerToLinenumbers; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD Characteristics; +} +alias _IMAGE_SECTION_HEADER IMAGE_SECTION_HEADER; +alias _IMAGE_SECTION_HEADER* PIMAGE_SECTION_HEADER; + +enum : uint { IMAGE_SIZEOF_SECTION_HEADER = 40 } + +enum : uint { IMAGE_SCN_TYPE_NO_PAD = 0x00000008 } + +enum : uint { IMAGE_SCN_CNT_CODE = 0x00000020 } +enum : uint { IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040 } +enum : uint { IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080 } + +enum : uint { IMAGE_SCN_LNK_OTHER = 0x00000100 } +enum : uint { IMAGE_SCN_LNK_INFO = 0x00000200 } + +enum : uint { IMAGE_SCN_LNK_REMOVE = 0x00000800 } +enum : uint { IMAGE_SCN_LNK_COMDAT = 0x00001000 } + +enum : uint { IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000 } +enum : uint { IMAGE_SCN_GPREL = 0x00008000 } +enum : uint { IMAGE_SCN_MEM_FARDATA = 0x00008000 } + +enum : uint { IMAGE_SCN_MEM_PURGEABLE = 0x00020000 } +enum : uint { IMAGE_SCN_MEM_16BIT = 0x00020000 } +enum : uint { IMAGE_SCN_MEM_LOCKED = 0x00040000 } +enum : uint { IMAGE_SCN_MEM_PRELOAD = 0x00080000 } + +enum : uint { IMAGE_SCN_ALIGN_1BYTES = 0x00100000 } +enum : uint { IMAGE_SCN_ALIGN_2BYTES = 0x00200000 } +enum : uint { IMAGE_SCN_ALIGN_4BYTES = 0x00300000 } +enum : uint { IMAGE_SCN_ALIGN_8BYTES = 0x00400000 } +enum : uint { IMAGE_SCN_ALIGN_16BYTES = 0x00500000 } +enum : uint { IMAGE_SCN_ALIGN_32BYTES = 0x00600000 } +enum : uint { IMAGE_SCN_ALIGN_64BYTES = 0x00700000 } +enum : uint { IMAGE_SCN_ALIGN_128BYTES = 0x00800000 } +enum : uint { IMAGE_SCN_ALIGN_256BYTES = 0x00900000 } +enum : uint { IMAGE_SCN_ALIGN_512BYTES = 0x00A00000 } +enum : uint { IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000 } +enum : uint { IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000 } +enum : uint { IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000 } +enum : uint { IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000 } + +enum : uint { IMAGE_SCN_ALIGN_MASK = 0x00F00000 } + +enum : uint { IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000 } +enum : uint { IMAGE_SCN_MEM_DISCARDABLE = 0x02000000 } +enum : uint { IMAGE_SCN_MEM_NOT_CACHED = 0x04000000 } +enum : uint { IMAGE_SCN_MEM_NOT_PAGED = 0x08000000 } +enum : uint { IMAGE_SCN_MEM_SHARED = 0x10000000 } +enum : uint { IMAGE_SCN_MEM_EXECUTE = 0x20000000 } +enum : uint { IMAGE_SCN_MEM_READ = 0x40000000 } +enum : uint { IMAGE_SCN_MEM_WRITE = 0x80000000 } + +enum : uint { IMAGE_SCN_SCALE_INDEX = 0x00000001 } + +// #ifndef _MAC +align(2): +// #endif + +struct _IMAGE_SYMBOL { +union { + BYTE ShortName[8]; +struct { + DWORD Short; + DWORD Long; +} + + DWORD LongName[2]; +} + + DWORD Value; + SHORT SectionNumber; + WORD Type; + BYTE StorageClass; + BYTE NumberOfAuxSymbols; +} +alias _IMAGE_SYMBOL IMAGE_SYMBOL; + +alias IMAGE_SYMBOL* PIMAGE_SYMBOL; + +enum : uint { IMAGE_SIZEOF_SYMBOL = 18 } + +enum : SHORT { IMAGE_SYM_UNDEFINED = 0 } +enum : SHORT { IMAGE_SYM_ABSOLUTE = -1 } +enum : SHORT { IMAGE_SYM_DEBUG = -2 } +enum : uint { IMAGE_SYM_SECTION_MAX = 0xFEFF } + +enum : uint { IMAGE_SYM_TYPE_NULL = 0x0000 } +enum : uint { IMAGE_SYM_TYPE_VOID = 0x0001 } +enum : uint { IMAGE_SYM_TYPE_CHAR = 0x0002 } +enum : uint { IMAGE_SYM_TYPE_SHORT = 0x0003 } +enum : uint { IMAGE_SYM_TYPE_INT = 0x0004 } +enum : uint { IMAGE_SYM_TYPE_LONG = 0x0005 } +enum : uint { IMAGE_SYM_TYPE_FLOAT = 0x0006 } +enum : uint { IMAGE_SYM_TYPE_DOUBLE = 0x0007 } +enum : uint { IMAGE_SYM_TYPE_STRUCT = 0x0008 } +enum : uint { IMAGE_SYM_TYPE_UNION = 0x0009 } +enum : uint { IMAGE_SYM_TYPE_ENUM = 0x000A } +enum : uint { IMAGE_SYM_TYPE_MOE = 0x000B } +enum : uint { IMAGE_SYM_TYPE_BYTE = 0x000C } +enum : uint { IMAGE_SYM_TYPE_WORD = 0x000D } +enum : uint { IMAGE_SYM_TYPE_UINT = 0x000E } +enum : uint { IMAGE_SYM_TYPE_DWORD = 0x000F } +enum : uint { IMAGE_SYM_TYPE_PCODE = 0x8000 } + +enum : uint { IMAGE_SYM_DTYPE_NULL = 0 } +enum : uint { IMAGE_SYM_DTYPE_POINTER = 1 } +enum : uint { IMAGE_SYM_DTYPE_FUNCTION = 2 } +enum : uint { IMAGE_SYM_DTYPE_ARRAY = 3 } + +enum : BYTE { IMAGE_SYM_CLASS_END_OF_FUNCTION = cast(BYTE)-1 } +enum : uint { IMAGE_SYM_CLASS_NULL = 0x0000 } +enum : uint { IMAGE_SYM_CLASS_AUTOMATIC = 0x0001 } +enum : uint { IMAGE_SYM_CLASS_EXTERNAL = 0x0002 } +enum : uint { IMAGE_SYM_CLASS_STATIC = 0x0003 } +enum : uint { IMAGE_SYM_CLASS_REGISTER = 0x0004 } +enum : uint { IMAGE_SYM_CLASS_EXTERNAL_DEF = 0x0005 } +enum : uint { IMAGE_SYM_CLASS_LABEL = 0x0006 } +enum : uint { IMAGE_SYM_CLASS_UNDEFINED_LABEL = 0x0007 } +enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_STRUCT = 0x0008 } +enum : uint { IMAGE_SYM_CLASS_ARGUMENT = 0x0009 } +enum : uint { IMAGE_SYM_CLASS_STRUCT_TAG = 0x000A } +enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_UNION = 0x000B } +enum : uint { IMAGE_SYM_CLASS_UNION_TAG = 0x000C } +enum : uint { IMAGE_SYM_CLASS_TYPE_DEFINITION = 0x000D } +enum : uint { IMAGE_SYM_CLASS_UNDEFINED_STATIC = 0x000E } +enum : uint { IMAGE_SYM_CLASS_ENUM_TAG = 0x000F } +enum : uint { IMAGE_SYM_CLASS_MEMBER_OF_ENUM = 0x0010 } +enum : uint { IMAGE_SYM_CLASS_REGISTER_PARAM = 0x0011 } +enum : uint { IMAGE_SYM_CLASS_BIT_FIELD = 0x0012 } + +enum : uint { IMAGE_SYM_CLASS_FAR_EXTERNAL = 0x0044 } + +enum : uint { IMAGE_SYM_CLASS_BLOCK = 0x0064 } +enum : uint { IMAGE_SYM_CLASS_FUNCTION = 0x0065 } +enum : uint { IMAGE_SYM_CLASS_END_OF_STRUCT = 0x0066 } +enum : uint { IMAGE_SYM_CLASS_FILE = 0x0067 } + +enum : uint { IMAGE_SYM_CLASS_SECTION = 0x0068 } +enum : uint { IMAGE_SYM_CLASS_WEAK_EXTERNAL = 0x0069 } + +enum : uint { IMAGE_SYM_CLASS_CLR_TOKEN = 0x006B } + +enum : uint { N_BTMASK = 0x000F } +enum : uint { N_TMASK = 0x0030 } +enum : uint { N_TMASK1 = 0x00C0 } +enum : uint { N_TMASK2 = 0x00F0 } +enum : uint { N_BTSHFT = 4 } +enum : uint { N_TSHIFT = 2 } + +BYTE BTYPE(BYTE x){ return x & N_BTMASK; } + +// #ifndef ISPTR +bit ISPTR(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); } +// #endif + +// #ifndef ISFCN +bit ISFCN(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); } +// #endif + +// #ifndef ISARY +bit ISARY(uint x){ return (x & N_TMASK) == (IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT); } +// #endif + +// #ifndef ISTAG +bit ISTAG(uint x){ return x == IMAGE_SYM_CLASS_STRUCT_TAG || x == IMAGE_SYM_CLASS_UNION_TAG || x == IMAGE_SYM_CLASS_ENUM_TAG; } +// #endif + +// #ifndef INCREF +uint INCREF(uint x){ return ((x&~N_BTMASK)<>> N_TSHIFT) & ~N_BTMASK)|(x & N_BTMASK); } +// #endif + +union _IMAGE_AUX_SYMBOL { +struct { + DWORD TagIndex; +union { +struct { + WORD Linenumber; + WORD Size; +} + + DWORD TotalSize; +} + +union { +struct { + DWORD PointerToLinenumber; + DWORD PointerToNextFunction; +} + +struct { + WORD Dimension[4]; +} + +} + + WORD TvIndex; +} + +struct { + BYTE Name[IMAGE_SIZEOF_SYMBOL]; +} + +struct { + DWORD Length; + WORD NumberOfRelocations; + WORD NumberOfLinenumbers; + DWORD CheckSum; + SHORT Number; + BYTE Selection; +} + +} +alias _IMAGE_AUX_SYMBOL IMAGE_AUX_SYMBOL; + +alias IMAGE_AUX_SYMBOL* PIMAGE_AUX_SYMBOL; + +enum : uint { IMAGE_SIZEOF_AUX_SYMBOL = 18 } + +alias int IMAGE_AUX_SYMBOL_TYPE; +enum { + IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1, +} + +align(2): + +struct IMAGE_AUX_SYMBOL_TOKEN_DEF { + BYTE bAuxType; + BYTE bReserved; + DWORD SymbolTableIndex; + BYTE rgbReserved[12]; +} + +alias IMAGE_AUX_SYMBOL_TOKEN_DEF* PIMAGE_AUX_SYMBOL_TOKEN_DEF; + +align: + +enum : uint { IMAGE_COMDAT_SELECT_NODUPLICATES = 1 } +enum : uint { IMAGE_COMDAT_SELECT_ANY = 2 } +enum : uint { IMAGE_COMDAT_SELECT_SAME_SIZE = 3 } +enum : uint { IMAGE_COMDAT_SELECT_EXACT_MATCH = 4 } +enum : uint { IMAGE_COMDAT_SELECT_ASSOCIATIVE = 5 } +enum : uint { IMAGE_COMDAT_SELECT_LARGEST = 6 } +enum : uint { IMAGE_COMDAT_SELECT_NEWEST = 7 } + +enum : uint { IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1 } +enum : uint { IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2 } +enum : uint { IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3 } + +struct _IMAGE_RELOCATION { +union { + DWORD VirtualAddress; + DWORD RelocCount; +} + + DWORD SymbolTableIndex; + WORD Type; +} +alias _IMAGE_RELOCATION IMAGE_RELOCATION; + +alias IMAGE_RELOCATION* PIMAGE_RELOCATION; + +enum : uint { IMAGE_SIZEOF_RELOCATION = 10 } + +enum : uint { IMAGE_REL_I386_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_I386_DIR16 = 0x0001 } +enum : uint { IMAGE_REL_I386_REL16 = 0x0002 } +enum : uint { IMAGE_REL_I386_DIR32 = 0x0006 } +enum : uint { IMAGE_REL_I386_DIR32NB = 0x0007 } +enum : uint { IMAGE_REL_I386_SEG12 = 0x0009 } +enum : uint { IMAGE_REL_I386_SECTION = 0x000A } +enum : uint { IMAGE_REL_I386_SECREL = 0x000B } +enum : uint { IMAGE_REL_I386_TOKEN = 0x000C } +enum : uint { IMAGE_REL_I386_SECREL7 = 0x000D } +enum : uint { IMAGE_REL_I386_REL32 = 0x0014 } + +enum : uint { IMAGE_REL_MIPS_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_MIPS_REFHALF = 0x0001 } +enum : uint { IMAGE_REL_MIPS_REFWORD = 0x0002 } +enum : uint { IMAGE_REL_MIPS_JMPADDR = 0x0003 } +enum : uint { IMAGE_REL_MIPS_REFHI = 0x0004 } +enum : uint { IMAGE_REL_MIPS_REFLO = 0x0005 } +enum : uint { IMAGE_REL_MIPS_GPREL = 0x0006 } +enum : uint { IMAGE_REL_MIPS_LITERAL = 0x0007 } +enum : uint { IMAGE_REL_MIPS_SECTION = 0x000A } +enum : uint { IMAGE_REL_MIPS_SECREL = 0x000B } +enum : uint { IMAGE_REL_MIPS_SECRELLO = 0x000C } +enum : uint { IMAGE_REL_MIPS_SECRELHI = 0x000D } +enum : uint { IMAGE_REL_MIPS_TOKEN = 0x000E } +enum : uint { IMAGE_REL_MIPS_JMPADDR16 = 0x0010 } +enum : uint { IMAGE_REL_MIPS_REFWORDNB = 0x0022 } +enum : uint { IMAGE_REL_MIPS_PAIR = 0x0025 } + +enum : uint { IMAGE_REL_ALPHA_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_ALPHA_REFLONG = 0x0001 } +enum : uint { IMAGE_REL_ALPHA_REFQUAD = 0x0002 } +enum : uint { IMAGE_REL_ALPHA_GPREL32 = 0x0003 } +enum : uint { IMAGE_REL_ALPHA_LITERAL = 0x0004 } +enum : uint { IMAGE_REL_ALPHA_LITUSE = 0x0005 } +enum : uint { IMAGE_REL_ALPHA_GPDISP = 0x0006 } +enum : uint { IMAGE_REL_ALPHA_BRADDR = 0x0007 } +enum : uint { IMAGE_REL_ALPHA_HINT = 0x0008 } +enum : uint { IMAGE_REL_ALPHA_INLINE_REFLONG = 0x0009 } +enum : uint { IMAGE_REL_ALPHA_REFHI = 0x000A } +enum : uint { IMAGE_REL_ALPHA_REFLO = 0x000B } +enum : uint { IMAGE_REL_ALPHA_PAIR = 0x000C } +enum : uint { IMAGE_REL_ALPHA_MATCH = 0x000D } +enum : uint { IMAGE_REL_ALPHA_SECTION = 0x000E } +enum : uint { IMAGE_REL_ALPHA_SECREL = 0x000F } +enum : uint { IMAGE_REL_ALPHA_REFLONGNB = 0x0010 } +enum : uint { IMAGE_REL_ALPHA_SECRELLO = 0x0011 } +enum : uint { IMAGE_REL_ALPHA_SECRELHI = 0x0012 } +enum : uint { IMAGE_REL_ALPHA_REFQ3 = 0x0013 } +enum : uint { IMAGE_REL_ALPHA_REFQ2 = 0x0014 } +enum : uint { IMAGE_REL_ALPHA_REFQ1 = 0x0015 } +enum : uint { IMAGE_REL_ALPHA_GPRELLO = 0x0016 } +enum : uint { IMAGE_REL_ALPHA_GPRELHI = 0x0017 } + +enum : uint { IMAGE_REL_PPC_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_PPC_ADDR64 = 0x0001 } +enum : uint { IMAGE_REL_PPC_ADDR32 = 0x0002 } +enum : uint { IMAGE_REL_PPC_ADDR24 = 0x0003 } +enum : uint { IMAGE_REL_PPC_ADDR16 = 0x0004 } +enum : uint { IMAGE_REL_PPC_ADDR14 = 0x0005 } +enum : uint { IMAGE_REL_PPC_REL24 = 0x0006 } +enum : uint { IMAGE_REL_PPC_REL14 = 0x0007 } +enum : uint { IMAGE_REL_PPC_TOCREL16 = 0x0008 } +enum : uint { IMAGE_REL_PPC_TOCREL14 = 0x0009 } + +enum : uint { IMAGE_REL_PPC_ADDR32NB = 0x000A } +enum : uint { IMAGE_REL_PPC_SECREL = 0x000B } +enum : uint { IMAGE_REL_PPC_SECTION = 0x000C } +enum : uint { IMAGE_REL_PPC_IFGLUE = 0x000D } +enum : uint { IMAGE_REL_PPC_IMGLUE = 0x000E } +enum : uint { IMAGE_REL_PPC_SECREL16 = 0x000F } +enum : uint { IMAGE_REL_PPC_REFHI = 0x0010 } +enum : uint { IMAGE_REL_PPC_REFLO = 0x0011 } +enum : uint { IMAGE_REL_PPC_PAIR = 0x0012 } +enum : uint { IMAGE_REL_PPC_SECRELLO = 0x0013 } +enum : uint { IMAGE_REL_PPC_SECRELHI = 0x0014 } +enum : uint { IMAGE_REL_PPC_GPREL = 0x0015 } +enum : uint { IMAGE_REL_PPC_TOKEN = 0x0016 } + +enum : uint { IMAGE_REL_PPC_TYPEMASK = 0x00FF } + +enum : uint { IMAGE_REL_PPC_NEG = 0x0100 } +enum : uint { IMAGE_REL_PPC_BRTAKEN = 0x0200 } +enum : uint { IMAGE_REL_PPC_BRNTAKEN = 0x0400 } +enum : uint { IMAGE_REL_PPC_TOCDEFN = 0x0800 } + +enum : uint { IMAGE_REL_SH3_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_SH3_DIRECT16 = 0x0001 } +enum : uint { IMAGE_REL_SH3_DIRECT32 = 0x0002 } +enum : uint { IMAGE_REL_SH3_DIRECT8 = 0x0003 } +enum : uint { IMAGE_REL_SH3_DIRECT8_WORD = 0x0004 } +enum : uint { IMAGE_REL_SH3_DIRECT8_LONG = 0x0005 } +enum : uint { IMAGE_REL_SH3_DIRECT4 = 0x0006 } +enum : uint { IMAGE_REL_SH3_DIRECT4_WORD = 0x0007 } +enum : uint { IMAGE_REL_SH3_DIRECT4_LONG = 0x0008 } +enum : uint { IMAGE_REL_SH3_PCREL8_WORD = 0x0009 } +enum : uint { IMAGE_REL_SH3_PCREL8_LONG = 0x000A } +enum : uint { IMAGE_REL_SH3_PCREL12_WORD = 0x000B } +enum : uint { IMAGE_REL_SH3_STARTOF_SECTION = 0x000C } +enum : uint { IMAGE_REL_SH3_SIZEOF_SECTION = 0x000D } +enum : uint { IMAGE_REL_SH3_SECTION = 0x000E } +enum : uint { IMAGE_REL_SH3_SECREL = 0x000F } +enum : uint { IMAGE_REL_SH3_DIRECT32_NB = 0x0010 } +enum : uint { IMAGE_REL_SH3_GPREL4_LONG = 0x0011 } +enum : uint { IMAGE_REL_SH3_TOKEN = 0x0012 } + +enum : uint { IMAGE_REL_ARM_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_ARM_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_ARM_ADDR32NB = 0x0002 } +enum : uint { IMAGE_REL_ARM_BRANCH24 = 0x0003 } +enum : uint { IMAGE_REL_ARM_BRANCH11 = 0x0004 } +enum : uint { IMAGE_REL_ARM_TOKEN = 0x0005 } +enum : uint { IMAGE_REL_ARM_GPREL12 = 0x0006 } +enum : uint { IMAGE_REL_ARM_GPREL7 = 0x0007 } +enum : uint { IMAGE_REL_ARM_BLX24 = 0x0008 } +enum : uint { IMAGE_REL_ARM_BLX11 = 0x0009 } +enum : uint { IMAGE_REL_ARM_SECTION = 0x000E } +enum : uint { IMAGE_REL_ARM_SECREL = 0x000F } + +enum : uint { IMAGE_REL_AM_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_AM_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_AM_ADDR32NB = 0x0002 } +enum : uint { IMAGE_REL_AM_CALL32 = 0x0003 } +enum : uint { IMAGE_REL_AM_FUNCINFO = 0x0004 } +enum : uint { IMAGE_REL_AM_REL32_1 = 0x0005 } +enum : uint { IMAGE_REL_AM_REL32_2 = 0x0006 } +enum : uint { IMAGE_REL_AM_SECREL = 0x0007 } +enum : uint { IMAGE_REL_AM_SECTION = 0x0008 } +enum : uint { IMAGE_REL_AM_TOKEN = 0x0009 } + +enum : uint { IMAGE_REL_AMD64_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_AMD64_ADDR64 = 0x0001 } +enum : uint { IMAGE_REL_AMD64_ADDR32 = 0x0002 } +enum : uint { IMAGE_REL_AMD64_ADDR32NB = 0x0003 } +enum : uint { IMAGE_REL_AMD64_REL32 = 0x0004 } +enum : uint { IMAGE_REL_AMD64_REL32_1 = 0x0005 } +enum : uint { IMAGE_REL_AMD64_REL32_2 = 0x0006 } +enum : uint { IMAGE_REL_AMD64_REL32_3 = 0x0007 } +enum : uint { IMAGE_REL_AMD64_REL32_4 = 0x0008 } +enum : uint { IMAGE_REL_AMD64_REL32_5 = 0x0009 } +enum : uint { IMAGE_REL_AMD64_SECTION = 0x000A } +enum : uint { IMAGE_REL_AMD64_SECREL = 0x000B } +enum : uint { IMAGE_REL_AMD64_SECREL7 = 0x000C } +enum : uint { IMAGE_REL_AMD64_TOKEN = 0x000D } + +enum : uint { IMAGE_REL_IA64_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_IA64_IMM14 = 0x0001 } +enum : uint { IMAGE_REL_IA64_IMM22 = 0x0002 } +enum : uint { IMAGE_REL_IA64_IMM64 = 0x0003 } +enum : uint { IMAGE_REL_IA64_DIR32 = 0x0004 } +enum : uint { IMAGE_REL_IA64_DIR64 = 0x0005 } +enum : uint { IMAGE_REL_IA64_PCREL21B = 0x0006 } +enum : uint { IMAGE_REL_IA64_PCREL21M = 0x0007 } +enum : uint { IMAGE_REL_IA64_PCREL21F = 0x0008 } +enum : uint { IMAGE_REL_IA64_GPREL22 = 0x0009 } +enum : uint { IMAGE_REL_IA64_LTOFF22 = 0x000A } +enum : uint { IMAGE_REL_IA64_SECTION = 0x000B } +enum : uint { IMAGE_REL_IA64_SECREL22 = 0x000C } +enum : uint { IMAGE_REL_IA64_SECREL64I = 0x000D } +enum : uint { IMAGE_REL_IA64_SECREL32 = 0x000E } + +enum : uint { IMAGE_REL_IA64_DIR32NB = 0x0010 } +enum : uint { IMAGE_REL_IA64_SREL14 = 0x0011 } +enum : uint { IMAGE_REL_IA64_SREL22 = 0x0012 } +enum : uint { IMAGE_REL_IA64_SREL32 = 0x0013 } +enum : uint { IMAGE_REL_IA64_UREL32 = 0x0014 } +enum : uint { IMAGE_REL_IA64_PCREL60X = 0x0015 } +enum : uint { IMAGE_REL_IA64_PCREL60B = 0x0016 } +enum : uint { IMAGE_REL_IA64_PCREL60F = 0x0017 } +enum : uint { IMAGE_REL_IA64_PCREL60I = 0x0018 } +enum : uint { IMAGE_REL_IA64_PCREL60M = 0x0019 } +enum : uint { IMAGE_REL_IA64_IMMGPREL64 = 0x001A } +enum : uint { IMAGE_REL_IA64_TOKEN = 0x001B } +enum : uint { IMAGE_REL_IA64_GPREL32 = 0x001C } +enum : uint { IMAGE_REL_IA64_ADDEND = 0x001F } + +enum : uint { IMAGE_REL_CEF_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_CEF_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_CEF_ADDR64 = 0x0002 } +enum : uint { IMAGE_REL_CEF_ADDR32NB = 0x0003 } +enum : uint { IMAGE_REL_CEF_SECTION = 0x0004 } +enum : uint { IMAGE_REL_CEF_SECREL = 0x0005 } +enum : uint { IMAGE_REL_CEF_TOKEN = 0x0006 } + +enum : uint { IMAGE_REL_CEE_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_CEE_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_CEE_ADDR64 = 0x0002 } +enum : uint { IMAGE_REL_CEE_ADDR32NB = 0x0003 } +enum : uint { IMAGE_REL_CEE_SECTION = 0x0004 } +enum : uint { IMAGE_REL_CEE_SECREL = 0x0005 } +enum : uint { IMAGE_REL_CEE_TOKEN = 0x0006 } + +enum : uint { IMAGE_REL_M32R_ABSOLUTE = 0x0000 } +enum : uint { IMAGE_REL_M32R_ADDR32 = 0x0001 } +enum : uint { IMAGE_REL_M32R_ADDR32NB = 0x0002 } +enum : uint { IMAGE_REL_M32R_ADDR24 = 0x0003 } +enum : uint { IMAGE_REL_M32R_GPREL16 = 0x0004 } +enum : uint { IMAGE_REL_M32R_PCREL24 = 0x0005 } +enum : uint { IMAGE_REL_M32R_PCREL16 = 0x0006 } +enum : uint { IMAGE_REL_M32R_PCREL8 = 0x0007 } +enum : uint { IMAGE_REL_M32R_REFHALF = 0x0008 } +enum : uint { IMAGE_REL_M32R_REFHI = 0x0009 } +enum : uint { IMAGE_REL_M32R_REFLO = 0x000A } +enum : uint { IMAGE_REL_M32R_PAIR = 0x000B } +enum : uint { IMAGE_REL_M32R_SECTION = 0x000C } +enum : uint { IMAGE_REL_M32R_SECREL32 = 0x000D } +enum : uint { IMAGE_REL_M32R_TOKEN = 0x000E } + +// #define EXT_IMM64(Value, Address, Size, InstPos, ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos) + +// #define INS_IMM64(Value, Address, Size, InstPos, ValPos) *(PDWORD)Address = (*(PDWORD)Address & ~(((1 << Size) - 1) << InstPos)) | ((DWORD)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos) + +enum : uint { EMARCH_ENC_I17_IMM7B_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_IMM7B_SIZE_X = 7 } +enum : uint { EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X = 4 } +enum : uint { EMARCH_ENC_I17_IMM7B_VAL_POS_X = 0 } + +enum : uint { EMARCH_ENC_I17_IMM9D_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_IMM9D_SIZE_X = 9 } +enum : uint { EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X = 18 } +enum : uint { EMARCH_ENC_I17_IMM9D_VAL_POS_X = 7 } + +enum : uint { EMARCH_ENC_I17_IMM5C_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_IMM5C_SIZE_X = 5 } +enum : uint { EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X = 13 } +enum : uint { EMARCH_ENC_I17_IMM5C_VAL_POS_X = 16 } + +enum : uint { EMARCH_ENC_I17_IC_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_IC_SIZE_X = 1 } +enum : uint { EMARCH_ENC_I17_IC_INST_WORD_POS_X = 12 } +enum : uint { EMARCH_ENC_I17_IC_VAL_POS_X = 21 } + +enum : uint { EMARCH_ENC_I17_IMM41a_INST_WORD_X = 1 } +enum : uint { EMARCH_ENC_I17_IMM41a_SIZE_X = 10 } +enum : uint { EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X = 14 } +enum : uint { EMARCH_ENC_I17_IMM41a_VAL_POS_X = 22 } + +enum : uint { EMARCH_ENC_I17_IMM41b_INST_WORD_X = 1 } +enum : uint { EMARCH_ENC_I17_IMM41b_SIZE_X = 8 } +enum : uint { EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X = 24 } +enum : uint { EMARCH_ENC_I17_IMM41b_VAL_POS_X = 32 } + +enum : uint { EMARCH_ENC_I17_IMM41c_INST_WORD_X = 2 } +enum : uint { EMARCH_ENC_I17_IMM41c_SIZE_X = 23 } +enum : uint { EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X = 0 } +enum : uint { EMARCH_ENC_I17_IMM41c_VAL_POS_X = 40 } + +enum : uint { EMARCH_ENC_I17_SIGN_INST_WORD_X = 3 } +enum : uint { EMARCH_ENC_I17_SIGN_SIZE_X = 1 } +enum : uint { EMARCH_ENC_I17_SIGN_INST_WORD_POS_X = 27 } +enum : uint { EMARCH_ENC_I17_SIGN_VAL_POS_X = 63 } + +struct _IMAGE_LINENUMBER { +union { + DWORD SymbolTableIndex; + DWORD VirtualAddress; +} + + WORD Linenumber; +} +alias _IMAGE_LINENUMBER IMAGE_LINENUMBER; + +alias IMAGE_LINENUMBER* PIMAGE_LINENUMBER; + +enum : uint { IMAGE_SIZEOF_LINENUMBER = 6 } + +// #ifndef _MAC +align: +// #endif + +struct _IMAGE_BASE_RELOCATION { + DWORD VirtualAddress; + DWORD SizeOfBlock; +} +alias _IMAGE_BASE_RELOCATION IMAGE_BASE_RELOCATION; + +alias IMAGE_BASE_RELOCATION* PIMAGE_BASE_RELOCATION; + +enum : uint { IMAGE_SIZEOF_BASE_RELOCATION = 8 } + +enum : uint { IMAGE_REL_BASED_ABSOLUTE = 0 } +enum : uint { IMAGE_REL_BASED_HIGH = 1 } +enum : uint { IMAGE_REL_BASED_LOW = 2 } +enum : uint { IMAGE_REL_BASED_HIGHLOW = 3 } +enum : uint { IMAGE_REL_BASED_HIGHADJ = 4 } +enum : uint { IMAGE_REL_BASED_MIPS_JMPADDR = 5 } +enum : uint { IMAGE_REL_BASED_MIPS_JMPADDR16 = 9 } +enum : uint { IMAGE_REL_BASED_IA64_IMM64 = 9 } +enum : uint { IMAGE_REL_BASED_DIR64 = 10 } + +enum : uint { IMAGE_ARCHIVE_START_SIZE = 8 } +const char[] IMAGE_ARCHIVE_START = "!\n"; +const char[] IMAGE_ARCHIVE_END = "`\n"; +const char[] IMAGE_ARCHIVE_PAD = "\n"; +const char[] IMAGE_ARCHIVE_LINKER_MEMBER = "/ "; +const char[] IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// "; + +struct _IMAGE_ARCHIVE_MEMBER_HEADER { + BYTE Name[16]; + BYTE Date[12]; + BYTE UserID[6]; + BYTE GroupID[6]; + BYTE Mode[8]; + BYTE Size[10]; + BYTE EndHeader[2]; +} +alias _IMAGE_ARCHIVE_MEMBER_HEADER IMAGE_ARCHIVE_MEMBER_HEADER; +alias _IMAGE_ARCHIVE_MEMBER_HEADER* PIMAGE_ARCHIVE_MEMBER_HEADER; + +enum : uint { IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60 } + +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 IMAGE_EXPORT_DIRECTORY; +alias _IMAGE_EXPORT_DIRECTORY* PIMAGE_EXPORT_DIRECTORY; + +struct _IMAGE_IMPORT_BY_NAME { + WORD Hint; + BYTE Name[1]; +} +alias _IMAGE_IMPORT_BY_NAME IMAGE_IMPORT_BY_NAME; +alias _IMAGE_IMPORT_BY_NAME* PIMAGE_IMPORT_BY_NAME; + +align(8): + +struct _IMAGE_THUNK_DATA64 { +union { + ULONGLONG ForwarderString; + ULONGLONG Function; + ULONGLONG Ordinal; + ULONGLONG AddressOfData; +} + +} +alias _IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA64; + +alias IMAGE_THUNK_DATA64* PIMAGE_THUNK_DATA64; + +align: + +struct _IMAGE_THUNK_DATA32 { +union { + DWORD ForwarderString; + DWORD Function; + DWORD Ordinal; + DWORD AddressOfData; +} + +} +alias _IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA32; + +alias IMAGE_THUNK_DATA32* PIMAGE_THUNK_DATA32; + +const ulong IMAGE_ORDINAL_FLAG64 = 0x8000000000000000; +enum : uint { IMAGE_ORDINAL_FLAG32 = 0x80000000 } +ulong IMAGE_ORDINAL64(ulong Ordinal){ return Ordinal & 0xffff; } +uint IMAGE_ORDINAL32(uint Ordinal){ return Ordinal & 0xffff; } +bit IMAGE_SNAP_BY_ORDINAL64(ulong Ordinal){ return (Ordinal & IMAGE_ORDINAL_FLAG64) != 0; } +bit IMAGE_SNAP_BY_ORDINAL32(uint Ordinal){ return (Ordinal & IMAGE_ORDINAL_FLAG32) != 0; } + +extern(Windows) alias VOID function( PVOID DllHandle, DWORD Reason, PVOID Reserved ) PIMAGE_TLS_CALLBACK; + +struct _IMAGE_TLS_DIRECTORY64 { + ULONGLONG StartAddressOfRawData; + ULONGLONG EndAddressOfRawData; + ULONGLONG AddressOfIndex; + ULONGLONG AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias _IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY64; + +alias IMAGE_TLS_DIRECTORY64* PIMAGE_TLS_DIRECTORY64; + +struct _IMAGE_TLS_DIRECTORY32 { + DWORD StartAddressOfRawData; + DWORD EndAddressOfRawData; + DWORD AddressOfIndex; + DWORD AddressOfCallBacks; + DWORD SizeOfZeroFill; + DWORD Characteristics; +} +alias _IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY32; + +alias IMAGE_TLS_DIRECTORY32* PIMAGE_TLS_DIRECTORY32; + +// #ifdef _WIN64 +// #... +// #... +// ... +// #... +// ... +// #else +alias IMAGE_ORDINAL_FLAG32 IMAGE_ORDINAL_FLAG; +alias IMAGE_ORDINAL32 IMAGE_ORDINAL; +alias IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; +alias PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; +alias IMAGE_SNAP_BY_ORDINAL32 IMAGE_SNAP_BY_ORDINAL; +alias IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; +alias PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; +// #endif + +struct _IMAGE_IMPORT_DESCRIPTOR { +union { + DWORD Characteristics; + DWORD OriginalFirstThunk; +} + + DWORD TimeDateStamp; + + DWORD ForwarderChain; + DWORD Name; + DWORD FirstThunk; +} +alias _IMAGE_IMPORT_DESCRIPTOR IMAGE_IMPORT_DESCRIPTOR; + +alias IMAGE_IMPORT_DESCRIPTOR* PIMAGE_IMPORT_DESCRIPTOR; + +struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { + DWORD TimeDateStamp; + WORD OffsetModuleName; + WORD NumberOfModuleForwarderRefs; +} +alias _IMAGE_BOUND_IMPORT_DESCRIPTOR IMAGE_BOUND_IMPORT_DESCRIPTOR; +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 IMAGE_BOUND_FORWARDER_REF; +alias _IMAGE_BOUND_FORWARDER_REF* PIMAGE_BOUND_FORWARDER_REF; + +struct _IMAGE_RESOURCE_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + WORD NumberOfNamedEntries; + WORD NumberOfIdEntries; +} +alias _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY; +alias _IMAGE_RESOURCE_DIRECTORY* PIMAGE_RESOURCE_DIRECTORY; + +enum : uint { IMAGE_RESOURCE_NAME_IS_STRING = 0x80000000 } +enum : uint { IMAGE_RESOURCE_DATA_IS_DIRECTORY = 0x80000000 } + +struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { +union { +struct { +// DWORD NameOffset:31; +// DWORD NameIsString:1; +} + + DWORD Name; + WORD Id; +} + +union { + DWORD OffsetToData; +struct { +// DWORD OffsetToDirectory:31; +// DWORD DataIsDirectory:1; +} + +} + +} +alias _IMAGE_RESOURCE_DIRECTORY_ENTRY IMAGE_RESOURCE_DIRECTORY_ENTRY; +alias _IMAGE_RESOURCE_DIRECTORY_ENTRY* PIMAGE_RESOURCE_DIRECTORY_ENTRY; + +struct _IMAGE_RESOURCE_DIRECTORY_STRING { + WORD Length; + CHAR NameString[ 1 ]; +} +alias _IMAGE_RESOURCE_DIRECTORY_STRING IMAGE_RESOURCE_DIRECTORY_STRING; +alias _IMAGE_RESOURCE_DIRECTORY_STRING* PIMAGE_RESOURCE_DIRECTORY_STRING; + +struct _IMAGE_RESOURCE_DIR_STRING_U { + WORD Length; + WCHAR NameString[ 1 ]; +} +alias _IMAGE_RESOURCE_DIR_STRING_U IMAGE_RESOURCE_DIR_STRING_U; +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 IMAGE_RESOURCE_DATA_ENTRY; +alias _IMAGE_RESOURCE_DATA_ENTRY* PIMAGE_RESOURCE_DATA_ENTRY; + +struct _12 { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD GlobalFlagsClear; + DWORD GlobalFlagsSet; + DWORD CriticalSectionDefaultTimeout; + DWORD DeCommitFreeBlockThreshold; + DWORD DeCommitTotalFreeThreshold; + DWORD LockPrefixTable; + DWORD MaximumAllocationSize; + DWORD VirtualMemoryThreshold; + DWORD ProcessHeapFlags; + DWORD ProcessAffinityMask; + WORD CSDVersion; + WORD Reserved1; + DWORD EditList; + DWORD Reserved[ 1 ]; +} +alias _12 IMAGE_LOAD_CONFIG_DIRECTORY32; +alias _12* PIMAGE_LOAD_CONFIG_DIRECTORY32; + +struct _13 { + 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 CSDVersion; + WORD Reserved1; + ULONGLONG EditList; + DWORD Reserved[ 2 ]; +} +alias _13 IMAGE_LOAD_CONFIG_DIRECTORY64; +alias _13* PIMAGE_LOAD_CONFIG_DIRECTORY64; + +// #ifdef _WIN64 +// ... +// #else +alias IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; +alias PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; +// #endif + +struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY { + DWORD FuncStart; +// DWORD PrologLen : 8; +// DWORD FuncLen : 22; +// DWORD ThirtyTwoBit : 1; +// DWORD ExceptionFlag : 1; +} +alias _IMAGE_CE_RUNTIME_FUNCTION_ENTRY IMAGE_CE_RUNTIME_FUNCTION_ENTRY; +alias _IMAGE_CE_RUNTIME_FUNCTION_ENTRY* PIMAGE_CE_RUNTIME_FUNCTION_ENTRY; + +struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY { + ULONGLONG BeginAddress; + ULONGLONG EndAddress; + ULONGLONG ExceptionHandler; + ULONGLONG HandlerData; + ULONGLONG PrologEndAddress; +} +alias _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; +alias _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY* PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY; + +struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + DWORD ExceptionHandler; + DWORD HandlerData; + DWORD PrologEndAddress; +} +alias _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; +alias _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY* PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY; + +struct _IMAGE_RUNTIME_FUNCTION_ENTRY { + DWORD BeginAddress; + DWORD EndAddress; + DWORD UnwindInfoAddress; +} +alias _IMAGE_RUNTIME_FUNCTION_ENTRY* _PIMAGE_RUNTIME_FUNCTION_ENTRY; + +alias _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY; +alias _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY; + +// #if defined(_AXP64_) + +// ... + +// #elif defined(_ALPHA_) + +// ... + +// #else + +alias _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY; +alias _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY; + +// #endif + +struct _IMAGE_DEBUG_DIRECTORY { + DWORD Characteristics; + DWORD TimeDateStamp; + WORD MajorVersion; + WORD MinorVersion; + DWORD Type; + DWORD SizeOfData; + DWORD AddressOfRawData; + DWORD PointerToRawData; +} +alias _IMAGE_DEBUG_DIRECTORY IMAGE_DEBUG_DIRECTORY; +alias _IMAGE_DEBUG_DIRECTORY* PIMAGE_DEBUG_DIRECTORY; + +enum : uint { IMAGE_DEBUG_TYPE_UNKNOWN = 0 } +enum : uint { IMAGE_DEBUG_TYPE_COFF = 1 } +enum : uint { IMAGE_DEBUG_TYPE_CODEVIEW = 2 } +enum : uint { IMAGE_DEBUG_TYPE_FPO = 3 } +enum : uint { IMAGE_DEBUG_TYPE_MISC = 4 } +enum : uint { IMAGE_DEBUG_TYPE_EXCEPTION = 5 } +enum : uint { IMAGE_DEBUG_TYPE_FIXUP = 6 } +enum : uint { IMAGE_DEBUG_TYPE_OMAP_TO_SRC = 7 } +enum : uint { IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8 } +enum : uint { IMAGE_DEBUG_TYPE_BORLAND = 9 } +enum : uint { IMAGE_DEBUG_TYPE_RESERVED10 = 10 } +enum : uint { IMAGE_DEBUG_TYPE_CLSID = 11 } + +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 IMAGE_COFF_SYMBOLS_HEADER; +alias _IMAGE_COFF_SYMBOLS_HEADER* PIMAGE_COFF_SYMBOLS_HEADER; + +enum : uint { FRAME_FPO = 0 } +enum : uint { FRAME_TRAP = 1 } +enum : uint { FRAME_TSS = 2 } +enum : uint { FRAME_NONFPO = 3 } + +struct _FPO_DATA { + DWORD ulOffStart; + DWORD cbProcSize; + DWORD cdwLocals; + WORD cdwParams; +// WORD cbProlog : 8; +// WORD cbRegs : 3; +// WORD fHasSEH : 1; +// WORD fUseBP : 1; +// WORD reserved : 1; +// WORD cbFrame : 2; +} +alias _FPO_DATA FPO_DATA; +alias _FPO_DATA* PFPO_DATA; + +enum : uint { SIZEOF_RFPO_DATA = 16 } + +enum : uint { IMAGE_DEBUG_MISC_EXENAME = 1 } + +struct _IMAGE_DEBUG_MISC { + DWORD DataType; + DWORD Length; + + BOOLEAN Unicode; + BYTE Reserved[ 3 ]; + BYTE Data[ 1 ]; +} +alias _IMAGE_DEBUG_MISC IMAGE_DEBUG_MISC; +alias _IMAGE_DEBUG_MISC* PIMAGE_DEBUG_MISC; + +struct _IMAGE_FUNCTION_ENTRY { + DWORD StartingAddress; + DWORD EndingAddress; + DWORD EndOfPrologue; +} +alias _IMAGE_FUNCTION_ENTRY IMAGE_FUNCTION_ENTRY; +alias _IMAGE_FUNCTION_ENTRY* PIMAGE_FUNCTION_ENTRY; + +struct _IMAGE_FUNCTION_ENTRY64 { + ULONGLONG StartingAddress; + ULONGLONG EndingAddress; +union { + ULONGLONG EndOfPrologue; + ULONGLONG UnwindInfoAddress; +} + +} +alias _IMAGE_FUNCTION_ENTRY64 IMAGE_FUNCTION_ENTRY64; +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 Reserved[2]; +} +alias _IMAGE_SEPARATE_DEBUG_HEADER IMAGE_SEPARATE_DEBUG_HEADER; +alias _IMAGE_SEPARATE_DEBUG_HEADER* PIMAGE_SEPARATE_DEBUG_HEADER; + +struct _NON_PAGED_DEBUG_INFO { + WORD Signature; + WORD Flags; + DWORD Size; + WORD Machine; + WORD Characteristics; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD SizeOfImage; + ULONGLONG ImageBase; + +} +alias _NON_PAGED_DEBUG_INFO NON_PAGED_DEBUG_INFO; +alias _NON_PAGED_DEBUG_INFO* PNON_PAGED_DEBUG_INFO; + +// #ifndef _MAC +enum : uint { IMAGE_SEPARATE_DEBUG_SIGNATURE = 0x4944 } +enum : uint { NON_PAGED_DEBUG_SIGNATURE = 0x494E } +// #else +// #... +// #... +// #endif + +enum : uint { IMAGE_SEPARATE_DEBUG_FLAGS_MASK = 0x8000 } +enum : uint { IMAGE_SEPARATE_DEBUG_MISMATCH = 0x8000 } + +struct _ImageArchitectureHeader { +// unsigned int AmaskValue: 1; + +// int :7; +// unsigned int AmaskShift: 8; +// int :16; + DWORD FirstEntryRVA; +} +alias _ImageArchitectureHeader IMAGE_ARCHITECTURE_HEADER; +alias _ImageArchitectureHeader* PIMAGE_ARCHITECTURE_HEADER; + +struct _ImageArchitectureEntry { + DWORD FixupInstRVA; + DWORD NewInst; +} +alias _ImageArchitectureEntry IMAGE_ARCHITECTURE_ENTRY; +alias _ImageArchitectureEntry* PIMAGE_ARCHITECTURE_ENTRY; + +align: + +enum : uint { IMPORT_OBJECT_HDR_SIG2 = 0xffff } + +struct IMPORT_OBJECT_HEADER { + WORD Sig1; + WORD Sig2; + WORD Version; + WORD Machine; + DWORD TimeDateStamp; + DWORD SizeOfData; + +union { + WORD Ordinal; + WORD Hint; +} + +// WORD Type : 2; +// WORD NameType : 3; +// WORD Reserved : 11; +} + +alias int IMPORT_OBJECT_TYPE; +enum { + IMPORT_OBJECT_CODE = 0, + IMPORT_OBJECT_DATA = 1, + IMPORT_OBJECT_CONST = 2, +} + +alias int IMPORT_OBJECT_NAME_TYPE; +enum { + IMPORT_OBJECT_ORDINAL = 0, + IMPORT_OBJECT_NAME = 1, + IMPORT_OBJECT_NAME_NO_PREFIX = 2, + IMPORT_OBJECT_NAME_UNDECORATE = 3, + +} + +// #ifndef __IMAGE_COR20_HEADER_DEFINED__ +// #define __IMAGE_COR20_HEADER_DEFINED__ + +alias int ReplacesCorHdrNumericDefines; +enum { + + COMIMAGE_FLAGS_ILONLY = 0x00000001, + COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002, + COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004, + COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000, + + COR_VERSION_MAJOR_V2 = 2, + COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2, + COR_VERSION_MINOR = 0, + COR_DELETED_NAME_LENGTH = 8, + COR_VTABLEGAP_NAME_LENGTH = 8, + + NATIVE_TYPE_MAX_CB = 1, + COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xFF, + + IMAGE_COR_MIH_METHODRVA = 0x01, + IMAGE_COR_MIH_EHRVA = 0x02, + IMAGE_COR_MIH_BASICBLOCK = 0x08, + + COR_VTABLE_32BIT = 0x01, + COR_VTABLE_64BIT = 0x02, + COR_VTABLE_FROM_UNMANAGED = 0x04, + COR_VTABLE_CALL_MOST_DERIVED = 0x10, + + IMAGE_COR_EATJ_THUNK_SIZE = 32, + + MAX_CLASS_NAME = 1024, + MAX_PACKAGE_NAME = 1024, +} + +struct IMAGE_COR20_HEADER { + + DWORD cb; + WORD MajorRuntimeVersion; + WORD MinorRuntimeVersion; + IMAGE_DATA_DIRECTORY MetaData; + DWORD Flags; + DWORD EntryPointToken; + IMAGE_DATA_DIRECTORY Resources; + IMAGE_DATA_DIRECTORY StrongNameSignature; + IMAGE_DATA_DIRECTORY CodeManagerTable; + IMAGE_DATA_DIRECTORY VTableFixups; + IMAGE_DATA_DIRECTORY ExportAddressTableJumps; + IMAGE_DATA_DIRECTORY ManagedNativeHeader; +} +alias IMAGE_COR20_HEADER* PIMAGE_COR20_HEADER; + +// #endif // __IMAGE_COR20_HEADER_DEFINED__ + +// #ifdef _MAC +// #ifndef _INC_STRING +// #... +// #endif /* _INC_STRING */ +// #else +// #include +// #endif // _MAC + +// #ifndef _SLIST_HEADER_ +// #define _SLIST_HEADER_ + +alias SINGLE_LIST_ENTRY SLIST_ENTRY; +alias _SINGLE_LIST_ENTRY _SLIST_ENTRY; +alias PSINGLE_LIST_ENTRY PSLIST_ENTRY; + +// #if defined(_WIN64) + +// ... + +// ... + +// #else + +union _SLIST_HEADER { + ULONGLONG Alignment; +struct { + SLIST_ENTRY Next; + WORD Depth; + WORD Sequence; +} + +} +alias _SLIST_HEADER SLIST_HEADER; +alias _SLIST_HEADER* PSLIST_HEADER; + +// #endif + +// #endif + +extern(Windows) export VOID RtlInitializeSListHead( + PSLIST_HEADER ListHead); + +extern(Windows) export PSLIST_ENTRY RtlFirstEntrySList( + SLIST_HEADER *ListHead); + +extern(Windows) export PSLIST_ENTRY RtlInterlockedPopEntrySList( + PSLIST_HEADER ListHead); + +extern(Windows) export PSLIST_ENTRY RtlInterlockedPushEntrySList( + PSLIST_HEADER ListHead, + PSLIST_ENTRY ListEntry); + +extern(Windows) export PSLIST_ENTRY RtlInterlockedFlushSList( + PSLIST_HEADER ListHead); + +extern(Windows) export WORD RtlQueryDepthSList( + PSLIST_HEADER ListHead); + +enum : uint { HEAP_NO_SERIALIZE = 0x00000001 } +enum : uint { HEAP_GROWABLE = 0x00000002 } +enum : uint { HEAP_GENERATE_EXCEPTIONS = 0x00000004 } +enum : uint { HEAP_ZERO_MEMORY = 0x00000008 } +enum : uint { HEAP_REALLOC_IN_PLACE_ONLY = 0x00000010 } +enum : uint { HEAP_TAIL_CHECKING_ENABLED = 0x00000020 } +enum : uint { HEAP_FREE_CHECKING_ENABLED = 0x00000040 } +enum : uint { HEAP_DISABLE_COALESCE_ON_FREE = 0x00000080 } +enum : uint { HEAP_CREATE_ALIGN_16 = 0x00010000 } +enum : uint { HEAP_CREATE_ENABLE_TRACING = 0x00020000 } +enum : uint { HEAP_MAXIMUM_TAG = 0x0FFF } +enum : uint { HEAP_PSEUDO_TAG_FLAG = 0x8000 } +enum : uint { HEAP_TAG_SHIFT = 18 } +uint HEAP_MAKE_TAG_FLAGS(uint b, uint o){ return b + (o << 18); } + +enum : uint { IS_TEXT_UNICODE_ASCII16 = 0x0001 } +enum : uint { IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010 } + +enum : uint { IS_TEXT_UNICODE_STATISTICS = 0x0002 } +enum : uint { IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020 } + +enum : uint { IS_TEXT_UNICODE_CONTROLS = 0x0004 } +enum : uint { IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040 } + +enum : uint { IS_TEXT_UNICODE_SIGNATURE = 0x0008 } +enum : uint { IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080 } + +enum : uint { IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100 } +enum : uint { IS_TEXT_UNICODE_ODD_LENGTH = 0x0200 } +enum : uint { IS_TEXT_UNICODE_DBCS_LEADBYTE = 0x0400 } +enum : uint { IS_TEXT_UNICODE_NULL_BYTES = 0x1000 } + +enum : uint { IS_TEXT_UNICODE_UNICODE_MASK = 0x000F } +enum : uint { IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0 } +enum : uint { IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00 } +enum : uint { IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000 } + +enum : uint { COMPRESSION_FORMAT_NONE = 0x0000 } +enum : uint { COMPRESSION_FORMAT_DEFAULT = 0x0001 } +enum : uint { COMPRESSION_FORMAT_LZNT1 = 0x0002 } +enum : uint { COMPRESSION_ENGINE_STANDARD = 0x0000 } +enum : uint { COMPRESSION_ENGINE_MAXIMUM = 0x0100 } +enum : uint { COMPRESSION_ENGINE_HIBER = 0x0200 } + +extern(Windows) export SIZE_T RtlCompareMemory( + VOID *Source1, + VOID *Source2, + SIZE_T Length); + +// #if defined(_M_AMD64) || defined(_M_IA64) + +// #... +// ... + +// ... + +// #if !defined(_M_AMD64) + +// ... + +// #endif + +// ... + +// ... + +// ... + +// #else + +bit RtlEqualMemory(void* x, void* y, uint len){ return memcmp(x, y, len) == 0; } +void RtlMoveMemory(void* d, void* s, uint len){ memmove(d, s, len); } +void RtlCopyMemory(void* d, void* s, uint len){ memcpy(d, s, len); } +void RtlFillMemory(void* d, uint len, ubyte f){ memset(d, f, len); } +void RtlZeroMemory(void* d, uint len){ memset(d, 0, len); } + +// #endif + +struct _MESSAGE_RESOURCE_ENTRY { + WORD Length; + WORD Flags; + BYTE Text[ 1 ]; +} +alias _MESSAGE_RESOURCE_ENTRY MESSAGE_RESOURCE_ENTRY; +alias _MESSAGE_RESOURCE_ENTRY* PMESSAGE_RESOURCE_ENTRY; + +enum : uint { MESSAGE_RESOURCE_UNICODE = 0x0001 } + +struct _MESSAGE_RESOURCE_BLOCK { + DWORD LowId; + DWORD HighId; + DWORD OffsetToEntries; +} +alias _MESSAGE_RESOURCE_BLOCK MESSAGE_RESOURCE_BLOCK; +alias _MESSAGE_RESOURCE_BLOCK* PMESSAGE_RESOURCE_BLOCK; + +struct _MESSAGE_RESOURCE_DATA { + DWORD NumberOfBlocks; + MESSAGE_RESOURCE_BLOCK Blocks[ 1 ]; +} +alias _MESSAGE_RESOURCE_DATA MESSAGE_RESOURCE_DATA; +alias _MESSAGE_RESOURCE_DATA* PMESSAGE_RESOURCE_DATA; + +struct _OSVERSIONINFOA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[ 128 ]; +} +alias _OSVERSIONINFOA OSVERSIONINFOA; +alias _OSVERSIONINFOA* POSVERSIONINFOA; +alias _OSVERSIONINFOA* LPOSVERSIONINFOA; + +struct _OSVERSIONINFOW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[ 128 ]; +} +alias _OSVERSIONINFOW OSVERSIONINFOW; +alias _OSVERSIONINFOW* POSVERSIONINFOW; +alias _OSVERSIONINFOW* LPOSVERSIONINFOW; +alias _OSVERSIONINFOW RTL_OSVERSIONINFOW; +alias _OSVERSIONINFOW* PRTL_OSVERSIONINFOW; + +// #ifdef UNICODE +alias OSVERSIONINFOW OSVERSIONINFO; +alias POSVERSIONINFOW POSVERSIONINFO; +alias LPOSVERSIONINFOW LPOSVERSIONINFO; +// #else +// ... +// #endif // UNICODE + +struct _OSVERSIONINFOEXA { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + CHAR szCSDVersion[ 128 ]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias _OSVERSIONINFOEXA OSVERSIONINFOEXA; +alias _OSVERSIONINFOEXA* POSVERSIONINFOEXA; +alias _OSVERSIONINFOEXA* LPOSVERSIONINFOEXA; + +struct _OSVERSIONINFOEXW { + DWORD dwOSVersionInfoSize; + DWORD dwMajorVersion; + DWORD dwMinorVersion; + DWORD dwBuildNumber; + DWORD dwPlatformId; + WCHAR szCSDVersion[ 128 ]; + WORD wServicePackMajor; + WORD wServicePackMinor; + WORD wSuiteMask; + BYTE wProductType; + BYTE wReserved; +} +alias _OSVERSIONINFOEXW OSVERSIONINFOEXW; +alias _OSVERSIONINFOEXW* POSVERSIONINFOEXW; +alias _OSVERSIONINFOEXW* LPOSVERSIONINFOEXW; +alias _OSVERSIONINFOEXW RTL_OSVERSIONINFOEXW; +alias _OSVERSIONINFOEXW* PRTL_OSVERSIONINFOEXW; + +// #ifdef UNICODE +alias OSVERSIONINFOEXW OSVERSIONINFOEX; +alias POSVERSIONINFOEXW POSVERSIONINFOEX; +alias LPOSVERSIONINFOEXW LPOSVERSIONINFOEX; +// #else +// ... +// #endif // UNICODE + +enum : uint { VER_EQUAL = 1 } +enum : uint { VER_GREATER = 2 } +enum : uint { VER_GREATER_EQUAL = 3 } +enum : uint { VER_LESS = 4 } +enum : uint { VER_LESS_EQUAL = 5 } +enum : uint { VER_AND = 6 } +enum : uint { VER_OR = 7 } + +enum : uint { VER_CONDITION_MASK = 7 } +enum : uint { VER_NUM_BITS_PER_CONDITION_MASK = 3 } + +enum : uint { VER_MINORVERSION = 0x0000001 } +enum : uint { VER_MAJORVERSION = 0x0000002 } +enum : uint { VER_BUILDNUMBER = 0x0000004 } +enum : uint { VER_PLATFORMID = 0x0000008 } +enum : uint { VER_SERVICEPACKMINOR = 0x0000010 } +enum : uint { VER_SERVICEPACKMAJOR = 0x0000020 } +enum : uint { VER_SUITENAME = 0x0000040 } +enum : uint { VER_PRODUCT_TYPE = 0x0000080 } + +enum : uint { VER_NT_WORKSTATION = 0x0000001 } +enum : uint { VER_NT_DOMAIN_CONTROLLER = 0x0000002 } +enum : uint { VER_NT_SERVER = 0x0000003 } + +enum : uint { VER_PLATFORM_WIN32s = 0 } +enum : uint { VER_PLATFORM_WIN32_WINDOWS = 1 } +enum : uint { VER_PLATFORM_WIN32_NT = 2 } + +// #define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_)=VerSetConditionMask((_m_),(_t_),(_c_))) + +extern(Windows) export ULONGLONG VerSetConditionMask( + ULONGLONG ConditionMask, + DWORD TypeMask, + BYTE Condition); + +struct _RTL_CRITICAL_SECTION_DEBUG { + WORD Type; + WORD CreatorBackTraceIndex; + _RTL_CRITICAL_SECTION *CriticalSection; + LIST_ENTRY ProcessLocksList; + DWORD EntryCount; + DWORD ContentionCount; + DWORD Spare[ 2 ]; +} +alias _RTL_CRITICAL_SECTION_DEBUG RTL_CRITICAL_SECTION_DEBUG; +alias _RTL_CRITICAL_SECTION_DEBUG* PRTL_CRITICAL_SECTION_DEBUG; +alias _RTL_CRITICAL_SECTION_DEBUG RTL_RESOURCE_DEBUG; +alias _RTL_CRITICAL_SECTION_DEBUG* PRTL_RESOURCE_DEBUG; + +enum : uint { RTL_CRITSECT_TYPE = 0 } +enum : uint { RTL_RESOURCE_TYPE = 1 } + +struct _RTL_CRITICAL_SECTION { + PRTL_CRITICAL_SECTION_DEBUG DebugInfo; + + LONG LockCount; + LONG RecursionCount; + HANDLE OwningThread; + HANDLE LockSemaphore; + ULONG_PTR SpinCount; +} +alias _RTL_CRITICAL_SECTION RTL_CRITICAL_SECTION; +alias _RTL_CRITICAL_SECTION* PRTL_CRITICAL_SECTION; + +extern(Windows) alias VOID function( PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved ) RTL_VERIFIER_DLL_LOAD_CALLBACK; + +extern(Windows) alias VOID function( PWSTR DllName, PVOID DllBase, SIZE_T DllSize, PVOID Reserved ) RTL_VERIFIER_DLL_UNLOAD_CALLBACK; + +struct _RTL_VERIFIER_THUNK_DESCRIPTOR { + + PCHAR ThunkName; + PVOID ThunkOldAddress; + PVOID ThunkNewAddress; +} +alias _RTL_VERIFIER_THUNK_DESCRIPTOR RTL_VERIFIER_THUNK_DESCRIPTOR; +alias _RTL_VERIFIER_THUNK_DESCRIPTOR* PRTL_VERIFIER_THUNK_DESCRIPTOR; + +struct _RTL_VERIFIER_DLL_DESCRIPTOR { + + PWCHAR DllName; + DWORD DllFlags; + PVOID DllAddress; + PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks; +} +alias _RTL_VERIFIER_DLL_DESCRIPTOR RTL_VERIFIER_DLL_DESCRIPTOR; +alias _RTL_VERIFIER_DLL_DESCRIPTOR* PRTL_VERIFIER_DLL_DESCRIPTOR; + +struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR { + + DWORD Length; + PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls; + RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback; + RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback; + + PWSTR VerifierImage; + DWORD VerifierFlags; + DWORD VerifierDebug; +} +alias _RTL_VERIFIER_PROVIDER_DESCRIPTOR RTL_VERIFIER_PROVIDER_DESCRIPTOR; +alias _RTL_VERIFIER_PROVIDER_DESCRIPTOR* PRTL_VERIFIER_PROVIDER_DESCRIPTOR; + +enum : uint { RTL_VRF_FLG_FULL_PAGE_HEAP = 0x0001 } +enum : uint { RTL_VRF_FLG_LOCK_CHECKS = 0x0002 } +enum : uint { RTL_VRF_FLG_HANDLE_CHECKS = 0x0004 } +enum : uint { RTL_VRF_FLG_STACK_CHECKS = 0x0008 } +enum : uint { RTL_VRF_FLG_APPCOMPAT_CHECKS = 0x0010 } + +enum : uint { APPLICATION_VERIFIER_INTERNAL_ERROR = 0x80000000 } +enum : uint { APPLICATION_VERIFIER_INTERNAL_WARNING = 0x40000000 } +enum : uint { APPLICATION_VERIFIER_NO_BREAK = 0x20000000 } +enum : uint { APPLICATION_VERIFIER_RESERVED_BIT_28 = 0x10000000 } + +enum : uint { APPLICATION_VERIFIER_UNKNOWN_ERROR = 0x0001 } +enum : uint { APPLICATION_VERIFIER_ACCESS_VIOLATION = 0x0002 } +enum : uint { APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS = 0x0003 } +enum : uint { APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST = 0x0004 } +enum : uint { APPLICATION_VERIFIER_BAD_HEAP_HANDLE = 0x0005 } +enum : uint { APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE = 0x0006 } +enum : uint { APPLICATION_VERIFIER_DOUBLE_FREE = 0x0007 } +enum : uint { APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK = 0x0008 } +enum : uint { APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP = 0x0009 } +enum : uint { APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION = 0x000A } +enum : uint { APPLICATION_VERIFIER_STACK_OVERFLOW = 0x000B } + +enum : uint { APPLICATION_VERIFIER_TERMINATE_THREAD_CALL = 0x0100 } + +enum : uint { APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK = 0x0200 } +enum : uint { APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL = 0x0201 } +enum : uint { APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP = 0x0202 } +enum : uint { APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE = 0x0203 } +enum : uint { APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY = 0x0204 } +enum : uint { APPLICATION_VERIFIER_LOCK_CORRUPTED = 0x0205 } +enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_OWNER = 0x0206 } +enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT = 0x0207 } +enum : uint { APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT = 0x0208 } +enum : uint { APPLICATION_VERIFIER_LOCK_OVER_RELEASED = 0x0209 } +enum : uint { APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED = 0x0210 } + +enum : uint { APPLICATION_VERIFIER_INVALID_HANDLE = 0x0300 } + +// #define VERIFIER_STOP(Code, Msg, P1, S1, P2, S2, P3, S3, P4, S4) { RtlApplicationVerifierStop ((Code), (Msg), (ULONG_PTR)(P1),(S1), (ULONG_PTR)(P2),(S2), (ULONG_PTR)(P3),(S3), (ULONG_PTR)(P4),(S4)); } + +extern(Windows) export VOID RtlApplicationVerifierStop( + ULONG_PTR Code, + PCHAR Message, + ULONG_PTR Param1, PCHAR Description1, + ULONG_PTR Param2, PCHAR Description2, + ULONG_PTR Param3, PCHAR Description3, + ULONG_PTR Param4, PCHAR Description4); + +extern(Windows) alias LONG function( _EXCEPTION_POINTERS *ExceptionInfo ) PVECTORED_EXCEPTION_HANDLER; +enum : uint { SEF_DACL_AUTO_INHERIT = 0x01 } +enum : uint { SEF_SACL_AUTO_INHERIT = 0x02 } +enum : uint { SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT = 0x04 } +enum : uint { SEF_AVOID_PRIVILEGE_CHECK = 0x08 } +enum : uint { SEF_AVOID_OWNER_CHECK = 0x10 } +enum : uint { SEF_DEFAULT_OWNER_FROM_PARENT = 0x20 } +enum : uint { SEF_DEFAULT_GROUP_FROM_PARENT = 0x40 } + +alias int _HEAP_INFORMATION_CLASS; +enum { + + HeapCompatibilityInformation, + +} +alias _HEAP_INFORMATION_CLASS HEAP_INFORMATION_CLASS; + +extern(Windows) export DWORD RtlSetHeapInformation( + PVOID HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation , + SIZE_T HeapInformationLength ); + +extern(Windows) export DWORD RtlQueryHeapInformation( + PVOID HeapHandle, + HEAP_INFORMATION_CLASS HeapInformationClass, + PVOID HeapInformation , + SIZE_T HeapInformationLength , + PSIZE_T ReturnLength ); + +enum : uint { WT_EXECUTEDEFAULT = 0x00000000 } +enum : uint { WT_EXECUTEINIOTHREAD = 0x00000001 } +enum : uint { WT_EXECUTEINUITHREAD = 0x00000002 } +enum : uint { WT_EXECUTEINWAITTHREAD = 0x00000004 } +enum : uint { WT_EXECUTEONLYONCE = 0x00000008 } +enum : uint { WT_EXECUTEINTIMERTHREAD = 0x00000020 } +enum : uint { WT_EXECUTELONGFUNCTION = 0x00000010 } +enum : uint { WT_EXECUTEINPERSISTENTIOTHREAD = 0x00000040 } +enum : uint { WT_EXECUTEINPERSISTENTTHREAD = 0x00000080 } +// #define WT_SET_MAX_THREADPOOL_THREADS(Flags, Limit) ((Flags) |= (Limit)<<16) +extern(Windows) alias VOID function(PVOID, BOOLEAN ) WAITORTIMERCALLBACKFUNC; +extern(Windows) alias VOID function(PVOID ) WORKERCALLBACKFUNC; +extern(Windows) alias VOID function(DWORD , PVOID, PVOID) APC_CALLBACK_FUNCTION; +enum : uint { WT_EXECUTEINLONGTHREAD = 0x00000010 } +enum : uint { WT_EXECUTEDELETEWAIT = 0x00000008 } + +alias int _ACTIVATION_CONTEXT_INFO_CLASS; +enum { + ActivationContextBasicInformation = 1, + ActivationContextDetailedInformation = 2, + AssemblyDetailedInformationInActivationContext = 3, + FileInformationInAssemblyOfAssemblyInActivationContext = 4, + MaxActivationContextInfoClass, + + AssemblyDetailedInformationInActivationContxt = 3, + FileInformationInAssemblyOfAssemblyInActivationContxt = 4, +} +alias _ACTIVATION_CONTEXT_INFO_CLASS ACTIVATION_CONTEXT_INFO_CLASS; + +alias ACTIVATION_CONTEXT_INFO_CLASS ACTIVATIONCONTEXTINFOCLASS; + +struct _ACTIVATION_CONTEXT_QUERY_INDEX { + DWORD ulAssemblyIndex; + DWORD ulFileIndexInAssembly; +} +alias _ACTIVATION_CONTEXT_QUERY_INDEX ACTIVATION_CONTEXT_QUERY_INDEX; +alias _ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX; + +alias _ACTIVATION_CONTEXT_QUERY_INDEX* PCACTIVATION_CONTEXT_QUERY_INDEX; + +enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_NONE = 1 } +enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE = 2 } +enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_URL = 3 } +enum : uint { ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF = 4 } + +struct _ASSEMBLY_FILE_DETAILED_INFORMATION { + DWORD ulFlags; + DWORD ulFilenameLength; + DWORD ulPathLength; + PCWSTR lpFileName; + PCWSTR lpFilePath; +} +alias _ASSEMBLY_FILE_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION; +alias _ASSEMBLY_FILE_DETAILED_INFORMATION* PASSEMBLY_FILE_DETAILED_INFORMATION; + +alias ASSEMBLY_FILE_DETAILED_INFORMATION* PCASSEMBLY_FILE_DETAILED_INFORMATION; + +alias _ASSEMBLY_FILE_DETAILED_INFORMATION _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION; +alias ASSEMBLY_FILE_DETAILED_INFORMATION ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION; +alias PASSEMBLY_FILE_DETAILED_INFORMATION PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION; +alias PCASSEMBLY_FILE_DETAILED_INFORMATION PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION; + +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; + DWORD ulFileCount; +} +alias _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; +alias _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION* PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; + +alias _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 ACTIVATION_CONTEXT_DETAILED_INFORMATION; +alias _ACTIVATION_CONTEXT_DETAILED_INFORMATION* PACTIVATION_CONTEXT_DETAILED_INFORMATION; + +alias _ACTIVATION_CONTEXT_DETAILED_INFORMATION* PCACTIVATION_CONTEXT_DETAILED_INFORMATION; + +enum : uint { DLL_PROCESS_ATTACH = 1 } +enum : uint { DLL_THREAD_ATTACH = 2 } +enum : uint { DLL_THREAD_DETACH = 3 } +enum : uint { DLL_PROCESS_DETACH = 0 } +enum : uint { DLL_PROCESS_VERIFIER = 4 } + +enum : uint { EVENTLOG_SEQUENTIAL_READ = 0x0001 } +enum : uint { EVENTLOG_SEEK_READ = 0x0002 } +enum : uint { EVENTLOG_FORWARDS_READ = 0x0004 } +enum : uint { EVENTLOG_BACKWARDS_READ = 0x0008 } + +enum : uint { EVENTLOG_SUCCESS = 0x0000 } +enum : uint { EVENTLOG_ERROR_TYPE = 0x0001 } +enum : uint { EVENTLOG_WARNING_TYPE = 0x0002 } +enum : uint { EVENTLOG_INFORMATION_TYPE = 0x0004 } +enum : uint { EVENTLOG_AUDIT_SUCCESS = 0x0008 } +enum : uint { EVENTLOG_AUDIT_FAILURE = 0x0010 } + +enum : uint { EVENTLOG_START_PAIRED_EVENT = 0x0001 } +enum : uint { EVENTLOG_END_PAIRED_EVENT = 0x0002 } +enum : uint { EVENTLOG_END_ALL_PAIRED_EVENTS = 0x0004 } +enum : uint { EVENTLOG_PAIRED_EVENT_ACTIVE = 0x0008 } +enum : uint { EVENTLOG_PAIRED_EVENT_INACTIVE = 0x0010 } + +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 EVENTLOGRECORD; +alias _EVENTLOGRECORD* PEVENTLOGRECORD; + +enum : uint { MAXLOGICALLOGNAMESIZE = 256 } + +// #if _MSC_VER >= 1200 +// #pragma warning(push) +// #endif +// #pragma warning(disable : 4200) +struct _EVENTSFORLOGFILE { + DWORD ulSize; + WCHAR szLogicalLogFile[MAXLOGICALLOGNAMESIZE]; + DWORD ulNumRecords; + EVENTLOGRECORD pEventLogRecords[]; +} +alias _EVENTSFORLOGFILE EVENTSFORLOGFILE; +alias _EVENTSFORLOGFILE* PEVENTSFORLOGFILE; + +struct _PACKEDEVENTINFO { + DWORD ulSize; + DWORD ulNumEventsForLogFile; + DWORD ulOffsets[]; +} +alias _PACKEDEVENTINFO PACKEDEVENTINFO; +alias _PACKEDEVENTINFO* PPACKEDEVENTINFO; + +// #if _MSC_VER >= 1200 +// #pragma warning(pop) +// #else +// #... +// #endif + +enum : uint { KEY_QUERY_VALUE = 0x0001 } +enum : uint { KEY_SET_VALUE = 0x0002 } +enum : uint { KEY_CREATE_SUB_KEY = 0x0004 } +enum : uint { KEY_ENUMERATE_SUB_KEYS = 0x0008 } +enum : uint { KEY_NOTIFY = 0x0010 } +enum : uint { KEY_CREATE_LINK = 0x0020 } +enum : uint { KEY_WOW64_32KEY = 0x0200 } +enum : uint { KEY_WOW64_64KEY = 0x0100 } +enum : uint { KEY_WOW64_RES = 0x0300 } + +enum : uint { KEY_READ = (STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE) } + +enum : uint { KEY_WRITE = (STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE) } + +enum : uint { KEY_EXECUTE = KEY_READ & ~SYNCHRONIZE } + +enum : uint { KEY_ALL_ACCESS = (STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~SYNCHRONIZE) } + +enum : uint { REG_OPTION_RESERVED = 0x00000000 } + +enum : uint { REG_OPTION_NON_VOLATILE = 0x00000000 } + +enum : uint { REG_OPTION_VOLATILE = 0x00000001 } + +enum : uint { REG_OPTION_CREATE_LINK = 0x00000002 } + +enum : uint { REG_OPTION_BACKUP_RESTORE = 0x00000004 } + +enum : uint { REG_OPTION_OPEN_LINK = 0x00000008 } + +enum : uint { REG_LEGAL_OPTION = REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK } + +enum : uint { REG_CREATED_NEW_KEY = 0x00000001 } +enum : uint { REG_OPENED_EXISTING_KEY = 0x00000002 } + +enum : uint { REG_STANDARD_FORMAT = 1 } +enum : uint { REG_LATEST_FORMAT = 2 } +enum : uint { REG_NO_COMPRESSION = 4 } + +enum : uint { REG_WHOLE_HIVE_VOLATILE = 0x00000001 } +enum : uint { REG_REFRESH_HIVE = 0x00000002 } +enum : uint { REG_NO_LAZY_FLUSH = 0x00000004 } +enum : uint { REG_FORCE_RESTORE = 0x00000008 } + +enum : uint { REG_NOTIFY_CHANGE_NAME = 0x00000001 } +enum : uint { REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 } +enum : uint { REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 } +enum : uint { REG_NOTIFY_CHANGE_SECURITY = 0x00000008 } + +enum : uint { REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY } + +enum : uint { REG_NONE = 0 } +enum : uint { REG_SZ = 1 } +enum : uint { REG_EXPAND_SZ = 2 } + +enum : uint { REG_BINARY = 3 } +enum : uint { REG_DWORD = 4 } +enum : uint { REG_DWORD_LITTLE_ENDIAN = 4 } +enum : uint { REG_DWORD_BIG_ENDIAN = 5 } +enum : uint { REG_LINK = 6 } +enum : uint { REG_MULTI_SZ = 7 } +enum : uint { REG_RESOURCE_LIST = 8 } +enum : uint { REG_FULL_RESOURCE_DESCRIPTOR = 9 } +enum : uint { REG_RESOURCE_REQUIREMENTS_LIST = 10 } +enum : uint { REG_QWORD = 11 } +enum : uint { REG_QWORD_LITTLE_ENDIAN = 11 } + +enum : uint { SERVICE_KERNEL_DRIVER = 0x00000001 } +enum : uint { SERVICE_FILE_SYSTEM_DRIVER = 0x00000002 } +enum : uint { SERVICE_ADAPTER = 0x00000004 } +enum : uint { SERVICE_RECOGNIZER_DRIVER = 0x00000008 } + +enum : uint { SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER } + +enum : uint { SERVICE_WIN32_OWN_PROCESS = 0x00000010 } +enum : uint { SERVICE_WIN32_SHARE_PROCESS = 0x00000020 } +enum : uint { SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS } + +enum : uint { SERVICE_INTERACTIVE_PROCESS = 0x00000100 } + +enum : uint { SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS } + +enum : uint { SERVICE_BOOT_START = 0x00000000 } +enum : uint { SERVICE_SYSTEM_START = 0x00000001 } +enum : uint { SERVICE_AUTO_START = 0x00000002 } +enum : uint { SERVICE_DEMAND_START = 0x00000003 } +enum : uint { SERVICE_DISABLED = 0x00000004 } + +enum : uint { SERVICE_ERROR_IGNORE = 0x00000000 } +enum : uint { SERVICE_ERROR_NORMAL = 0x00000001 } +enum : uint { SERVICE_ERROR_SEVERE = 0x00000002 } +enum : uint { SERVICE_ERROR_CRITICAL = 0x00000003 } + +alias int _CM_SERVICE_NODE_TYPE; +enum { + 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, +} +alias _CM_SERVICE_NODE_TYPE SERVICE_NODE_TYPE; + +alias int _CM_SERVICE_LOAD_TYPE; +enum { + BootLoad = SERVICE_BOOT_START, + SystemLoad = SERVICE_SYSTEM_START, + AutoLoad = SERVICE_AUTO_START, + DemandLoad = SERVICE_DEMAND_START, + DisableLoad = SERVICE_DISABLED, +} +alias _CM_SERVICE_LOAD_TYPE SERVICE_LOAD_TYPE; + +alias int _CM_ERROR_CONTROL_TYPE; +enum { + IgnoreError = SERVICE_ERROR_IGNORE, + NormalError = SERVICE_ERROR_NORMAL, + SevereError = SERVICE_ERROR_SEVERE, + CriticalError = SERVICE_ERROR_CRITICAL, +} +alias _CM_ERROR_CONTROL_TYPE SERVICE_ERROR_TYPE; + +enum : uint { TAPE_ERASE_SHORT = 0 } +enum : uint { TAPE_ERASE_LONG = 1 } + +struct _TAPE_ERASE { + DWORD Type; + BOOLEAN Immediate; +} +alias _TAPE_ERASE TAPE_ERASE; +alias _TAPE_ERASE* PTAPE_ERASE; + +enum : uint { TAPE_LOAD = 0 } +enum : uint { TAPE_UNLOAD = 1 } +enum : uint { TAPE_TENSION = 2 } +enum : uint { TAPE_LOCK = 3 } +enum : uint { TAPE_UNLOCK = 4 } +enum : uint { TAPE_FORMAT = 5 } + +struct _TAPE_PREPARE { + DWORD Operation; + BOOLEAN Immediate; +} +alias _TAPE_PREPARE TAPE_PREPARE; +alias _TAPE_PREPARE* PTAPE_PREPARE; + +enum : uint { TAPE_SETMARKS = 0 } +enum : uint { TAPE_FILEMARKS = 1 } +enum : uint { TAPE_SHORT_FILEMARKS = 2 } +enum : uint { TAPE_LONG_FILEMARKS = 3 } + +struct _TAPE_WRITE_MARKS { + DWORD Type; + DWORD Count; + BOOLEAN Immediate; +} +alias _TAPE_WRITE_MARKS TAPE_WRITE_MARKS; +alias _TAPE_WRITE_MARKS* PTAPE_WRITE_MARKS; + +enum : uint { TAPE_ABSOLUTE_POSITION = 0 } +enum : uint { TAPE_LOGICAL_POSITION = 1 } +enum : uint { TAPE_PSEUDO_LOGICAL_POSITION = 2 } + +struct _TAPE_GET_POSITION { + DWORD Type; + DWORD Partition; + LARGE_INTEGER Offset; +} +alias _TAPE_GET_POSITION TAPE_GET_POSITION; +alias _TAPE_GET_POSITION* PTAPE_GET_POSITION; + +enum : uint { TAPE_REWIND = 0 } +enum : uint { TAPE_ABSOLUTE_BLOCK = 1 } +enum : uint { TAPE_LOGICAL_BLOCK = 2 } +enum : uint { TAPE_PSEUDO_LOGICAL_BLOCK = 3 } +enum : uint { TAPE_SPACE_END_OF_DATA = 4 } +enum : uint { TAPE_SPACE_RELATIVE_BLOCKS = 5 } +enum : uint { TAPE_SPACE_FILEMARKS = 6 } +enum : uint { TAPE_SPACE_SEQUENTIAL_FMKS = 7 } +enum : uint { TAPE_SPACE_SETMARKS = 8 } +enum : uint { TAPE_SPACE_SEQUENTIAL_SMKS = 9 } + +struct _TAPE_SET_POSITION { + DWORD Method; + DWORD Partition; + LARGE_INTEGER Offset; + BOOLEAN Immediate; +} +alias _TAPE_SET_POSITION TAPE_SET_POSITION; +alias _TAPE_SET_POSITION* PTAPE_SET_POSITION; + +enum : uint { TAPE_DRIVE_FIXED = 0x00000001 } +enum : uint { TAPE_DRIVE_SELECT = 0x00000002 } +enum : uint { TAPE_DRIVE_INITIATOR = 0x00000004 } + +enum : uint { TAPE_DRIVE_ERASE_SHORT = 0x00000010 } +enum : uint { TAPE_DRIVE_ERASE_LONG = 0x00000020 } +enum : uint { TAPE_DRIVE_ERASE_BOP_ONLY = 0x00000040 } +enum : uint { TAPE_DRIVE_ERASE_IMMEDIATE = 0x00000080 } + +enum : uint { TAPE_DRIVE_TAPE_CAPACITY = 0x00000100 } +enum : uint { TAPE_DRIVE_TAPE_REMAINING = 0x00000200 } +enum : uint { TAPE_DRIVE_FIXED_BLOCK = 0x00000400 } +enum : uint { TAPE_DRIVE_VARIABLE_BLOCK = 0x00000800 } + +enum : uint { TAPE_DRIVE_WRITE_PROTECT = 0x00001000 } +enum : uint { TAPE_DRIVE_EOT_WZ_SIZE = 0x00002000 } + +enum : uint { TAPE_DRIVE_ECC = 0x00010000 } +enum : uint { TAPE_DRIVE_COMPRESSION = 0x00020000 } +enum : uint { TAPE_DRIVE_PADDING = 0x00040000 } +enum : uint { TAPE_DRIVE_REPORT_SMKS = 0x00080000 } + +enum : uint { TAPE_DRIVE_GET_ABSOLUTE_BLK = 0x00100000 } +enum : uint { TAPE_DRIVE_GET_LOGICAL_BLK = 0x00200000 } +enum : uint { TAPE_DRIVE_SET_EOT_WZ_SIZE = 0x00400000 } + +enum : uint { TAPE_DRIVE_EJECT_MEDIA = 0x01000000 } +enum : uint { TAPE_DRIVE_CLEAN_REQUESTS = 0x02000000 } +enum : uint { TAPE_DRIVE_SET_CMP_BOP_ONLY = 0x04000000 } + +enum : uint { TAPE_DRIVE_RESERVED_BIT = 0x80000000 } + +enum : uint { TAPE_DRIVE_LOAD_UNLOAD = 0x80000001 } +enum : uint { TAPE_DRIVE_TENSION = 0x80000002 } +enum : uint { TAPE_DRIVE_LOCK_UNLOCK = 0x80000004 } +enum : uint { TAPE_DRIVE_REWIND_IMMEDIATE = 0x80000008 } + +enum : uint { TAPE_DRIVE_SET_BLOCK_SIZE = 0x80000010 } +enum : uint { TAPE_DRIVE_LOAD_UNLD_IMMED = 0x80000020 } +enum : uint { TAPE_DRIVE_TENSION_IMMED = 0x80000040 } +enum : uint { TAPE_DRIVE_LOCK_UNLK_IMMED = 0x80000080 } + +enum : uint { TAPE_DRIVE_SET_ECC = 0x80000100 } +enum : uint { TAPE_DRIVE_SET_COMPRESSION = 0x80000200 } +enum : uint { TAPE_DRIVE_SET_PADDING = 0x80000400 } +enum : uint { TAPE_DRIVE_SET_REPORT_SMKS = 0x80000800 } + +enum : uint { TAPE_DRIVE_ABSOLUTE_BLK = 0x80001000 } +enum : uint { TAPE_DRIVE_ABS_BLK_IMMED = 0x80002000 } +enum : uint { TAPE_DRIVE_LOGICAL_BLK = 0x80004000 } +enum : uint { TAPE_DRIVE_LOG_BLK_IMMED = 0x80008000 } + +enum : uint { TAPE_DRIVE_END_OF_DATA = 0x80010000 } +enum : uint { TAPE_DRIVE_RELATIVE_BLKS = 0x80020000 } +enum : uint { TAPE_DRIVE_FILEMARKS = 0x80040000 } +enum : uint { TAPE_DRIVE_SEQUENTIAL_FMKS = 0x80080000 } + +enum : uint { TAPE_DRIVE_SETMARKS = 0x80100000 } +enum : uint { TAPE_DRIVE_SEQUENTIAL_SMKS = 0x80200000 } +enum : uint { TAPE_DRIVE_REVERSE_POSITION = 0x80400000 } +enum : uint { TAPE_DRIVE_SPACE_IMMEDIATE = 0x80800000 } + +enum : uint { TAPE_DRIVE_WRITE_SETMARKS = 0x81000000 } +enum : uint { TAPE_DRIVE_WRITE_FILEMARKS = 0x82000000 } +enum : uint { TAPE_DRIVE_WRITE_SHORT_FMKS = 0x84000000 } +enum : uint { TAPE_DRIVE_WRITE_LONG_FMKS = 0x88000000 } + +enum : uint { TAPE_DRIVE_WRITE_MARK_IMMED = 0x90000000 } +enum : uint { TAPE_DRIVE_FORMAT = 0xA0000000 } +enum : uint { TAPE_DRIVE_FORMAT_IMMEDIATE = 0xC0000000 } +enum : uint { TAPE_DRIVE_HIGH_FEATURES = 0x80000000 } + +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 TAPE_GET_DRIVE_PARAMETERS; +alias _TAPE_GET_DRIVE_PARAMETERS* PTAPE_GET_DRIVE_PARAMETERS; + +struct _TAPE_SET_DRIVE_PARAMETERS { + BOOLEAN ECC; + BOOLEAN Compression; + BOOLEAN DataPadding; + BOOLEAN ReportSetmarks; + DWORD EOTWarningZoneSize; +} +alias _TAPE_SET_DRIVE_PARAMETERS TAPE_SET_DRIVE_PARAMETERS; +alias _TAPE_SET_DRIVE_PARAMETERS* PTAPE_SET_DRIVE_PARAMETERS; + +struct _TAPE_GET_MEDIA_PARAMETERS { + LARGE_INTEGER Capacity; + LARGE_INTEGER Remaining; + DWORD BlockSize; + DWORD PartitionCount; + BOOLEAN WriteProtected; +} +alias _TAPE_GET_MEDIA_PARAMETERS TAPE_GET_MEDIA_PARAMETERS; +alias _TAPE_GET_MEDIA_PARAMETERS* PTAPE_GET_MEDIA_PARAMETERS; + +struct _TAPE_SET_MEDIA_PARAMETERS { + DWORD BlockSize; +} +alias _TAPE_SET_MEDIA_PARAMETERS TAPE_SET_MEDIA_PARAMETERS; +alias _TAPE_SET_MEDIA_PARAMETERS* PTAPE_SET_MEDIA_PARAMETERS; + +enum : uint { TAPE_FIXED_PARTITIONS = 0 } +enum : uint { TAPE_SELECT_PARTITIONS = 1 } +enum : uint { TAPE_INITIATOR_PARTITIONS = 2 } + +struct _TAPE_CREATE_PARTITION { + DWORD Method; + DWORD Count; + DWORD Size; +} +alias _TAPE_CREATE_PARTITION TAPE_CREATE_PARTITION; +alias _TAPE_CREATE_PARTITION* PTAPE_CREATE_PARTITION; + +enum : uint { TAPE_QUERY_DRIVE_PARAMETERS = 0 } +enum : uint { TAPE_QUERY_MEDIA_CAPACITY = 1 } +enum : uint { TAPE_CHECK_FOR_DRIVE_PROBLEM = 2 } +enum : uint { TAPE_QUERY_IO_ERROR_DATA = 3 } +enum : uint { TAPE_QUERY_DEVICE_ERROR_DATA = 4 } + +struct _TAPE_WMI_OPERATIONS { + DWORD Method; + DWORD DataBufferSize; + PVOID DataBuffer; +} +alias _TAPE_WMI_OPERATIONS TAPE_WMI_OPERATIONS; +alias _TAPE_WMI_OPERATIONS* PTAPE_WMI_OPERATIONS; + +alias int _TAPE_DRIVE_PROBLEM_TYPE; +enum { + TapeDriveProblemNone, + TapeDriveReadWriteWarning, + TapeDriveReadWriteError, + TapeDriveReadWarning, + TapeDriveWriteWarning, + TapeDriveReadError, + TapeDriveWriteError, + TapeDriveHardwareError, + TapeDriveUnsupportedMedia, + TapeDriveScsiConnectionError, + TapeDriveTimetoClean, + TapeDriveCleanDriveNow, + TapeDriveMediaLifeExpired, + TapeDriveSnappedTape, +} +alias _TAPE_DRIVE_PROBLEM_TYPE TAPE_DRIVE_PROBLEM_TYPE; + +// #if defined(_M_AMD64) && !defined(__midl) + +// ... + +// ... + +// ... + +// ... + +// ... + +// ... + +// #endif // _M_AMD64 && !defined(__midl) + +// #if (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWARE_ENABLED // winnt_only +enum : uint { ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1 } +enum : uint { ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION = 2 } +enum : uint { ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION = 3 } +enum : uint { ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION = 4 } +enum : uint { ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION = 5 } +enum : uint { ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION = 6 } +enum : uint { ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION = 7 } +enum : uint { ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE = 8 } +// #endif // winnt_only + +// #ifdef __cplusplus +// } +// #endif + +// #endif /* _WINNT_ */ + ADDED src/win32/winreg.d Index: src/win32/winreg.d ================================================================== --- src/win32/winreg.d +++ src/win32/winreg.d @@ -0,0 +1,670 @@ +module win32.winreg; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.winnt, win32.winbase; + +// #ifndef _WINREG_ +// #define _WINREG_ + +// #ifdef _MAC +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +// #ifndef WINVER +// #... +// #endif /* !WINVER */ + +alias ACCESS_MASK REGSAM; + +const HKEY HKEY_CLASSES_ROOT = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000000) ; +const HKEY HKEY_CURRENT_USER = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000001) ; +const HKEY HKEY_LOCAL_MACHINE = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000002) ; +const HKEY HKEY_USERS = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000003) ; +const HKEY HKEY_PERFORMANCE_DATA = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000004) ; +const HKEY HKEY_PERFORMANCE_TEXT = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000050) ; +const HKEY HKEY_PERFORMANCE_NLSTEXT = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000060) ; +// #if(WINVER >= 0x0400) +const HKEY HKEY_CURRENT_CONFIG = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000005) ; +const HKEY HKEY_DYN_DATA = cast(HKEY)cast(ULONG_PTR)(cast(LONG)0x80000006) ; + +// #ifndef _PROVIDER_STRUCTS_DEFINED +// #define _PROVIDER_STRUCTS_DEFINED + +enum : uint { PROVIDER_KEEPS_VALUE_LENGTH = 0x1 } +struct val_context { + int valuelen; + LPVOID value_context; + LPVOID val_buff_ptr; +} + +alias val_context* PVALCONTEXT; + +struct pvalueA { + LPSTR pv_valuename; + int pv_valuelen; + LPVOID pv_value_context; + DWORD pv_type; +} +alias pvalueA PVALUEA; +alias pvalueA* PPVALUEA; + +struct pvalueW { + LPWSTR pv_valuename; + int pv_valuelen; + LPVOID pv_value_context; + DWORD pv_type; +} +alias pvalueW PVALUEW; +alias pvalueW* PPVALUEW; + +// #ifdef UNICODE +alias PVALUEW PVALUE; +alias PPVALUEW PPVALUE; +// #else +// ... +// #endif // UNICODE + +// typedef DWORD _cdecl QUERYHANDLER (LPVOID keycontext, PVALCONTEXT val_list, DWORD num_vals, LPVOID outputbuffer, DWORD FAR *total_outlen, DWORD input_blen); + +extern(Windows) alias DWORD function(LPVOID keycontext, PVALCONTEXT val_list, DWORD num_vals, LPVOID outputbuffer, DWORD* total_outlen, DWORD input_blen) PQUERYHANDLER; + +struct provider_info { + PQUERYHANDLER pi_R0_1val; + PQUERYHANDLER pi_R0_allvals; + PQUERYHANDLER pi_R3_1val; + PQUERYHANDLER pi_R3_allvals; + DWORD pi_flags; + LPVOID pi_key_context; +} +alias provider_info REG_PROVIDER; + +alias provider_info* PPROVIDER; + +struct value_entA { + LPSTR ve_valuename; + DWORD ve_valuelen; + DWORD_PTR ve_valueptr; + DWORD ve_type; +} +alias value_entA VALENTA; +alias value_entA* PVALENTA; + +struct value_entW { + LPWSTR ve_valuename; + DWORD ve_valuelen; + DWORD_PTR ve_valueptr; + DWORD ve_type; +} +alias value_entW VALENTW; +alias value_entW* PVALENTW; + +// #ifdef UNICODE +alias VALENTW VALENT; +alias PVALENTW PVALENT; +// #else +// ... +// #endif // UNICODE + +// #endif // not(_PROVIDER_STRUCTS_DEFINED) + +// #endif /* WINVER >= 0x0400 */ + +alias NULL WIN31_CLASS; + +extern(Windows) export LONG RegCloseKey( + HKEY hKey); + +extern(Windows) export LONG RegOverridePredefKey( + HKEY hKey, + HKEY hNewHKey); + +extern(Windows) export LONG RegOpenUserClassesRoot( + HANDLE hToken, + DWORD dwOptions, + REGSAM samDesired, + PHKEY phkResult); + +extern(Windows) export LONG RegOpenCurrentUser( + REGSAM samDesired, + PHKEY phkResult); + +extern(Windows) export LONG RegDisablePredefinedCache(); + +extern(Windows) export LONG RegConnectRegistryA( + LPCSTR lpMachineName, + HKEY hKey, + PHKEY phkResult); +extern(Windows) export LONG RegConnectRegistryW( + LPCWSTR lpMachineName, + HKEY hKey, + PHKEY phkResult); +// #ifdef UNICODE +alias RegConnectRegistryW RegConnectRegistry; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegCreateKeyA( + HKEY hKey, + LPCSTR lpSubKey, + PHKEY phkResult); +extern(Windows) export LONG RegCreateKeyW( + HKEY hKey, + LPCWSTR lpSubKey, + PHKEY phkResult); +// #ifdef UNICODE +alias RegCreateKeyW RegCreateKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegCreateKeyExA( + HKEY hKey, + LPCSTR lpSubKey, + DWORD Reserved, + LPSTR lpClass, + DWORD dwOptions, + REGSAM samDesired, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + PHKEY phkResult, + LPDWORD lpdwDisposition); +extern(Windows) export LONG RegCreateKeyExW( + HKEY hKey, + LPCWSTR lpSubKey, + DWORD Reserved, + LPWSTR lpClass, + DWORD dwOptions, + REGSAM samDesired, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + PHKEY phkResult, + LPDWORD lpdwDisposition); +// #ifdef UNICODE +alias RegCreateKeyExW RegCreateKeyEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegDeleteKeyA( + HKEY hKey, + LPCSTR lpSubKey); +extern(Windows) export LONG RegDeleteKeyW( + HKEY hKey, + LPCWSTR lpSubKey); +// #ifdef UNICODE +alias RegDeleteKeyW RegDeleteKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegDeleteValueA( + HKEY hKey, + LPCSTR lpValueName); +extern(Windows) export LONG RegDeleteValueW( + HKEY hKey, + LPCWSTR lpValueName); +// #ifdef UNICODE +alias RegDeleteValueW RegDeleteValue; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegEnumKeyA( + HKEY hKey, + DWORD dwIndex, + LPSTR lpName, + DWORD cbName); +extern(Windows) export LONG RegEnumKeyW( + HKEY hKey, + DWORD dwIndex, + LPWSTR lpName, + DWORD cbName); +// #ifdef UNICODE +alias RegEnumKeyW RegEnumKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegEnumKeyExA( + HKEY hKey, + DWORD dwIndex, + LPSTR lpName, + LPDWORD lpcbName, + LPDWORD lpReserved, + LPSTR lpClass, + LPDWORD lpcbClass, + PFILETIME lpftLastWriteTime); +extern(Windows) export LONG RegEnumKeyExW( + HKEY hKey, + DWORD dwIndex, + LPWSTR lpName, + LPDWORD lpcbName, + LPDWORD lpReserved, + LPWSTR lpClass, + LPDWORD lpcbClass, + PFILETIME lpftLastWriteTime); +// #ifdef UNICODE +alias RegEnumKeyExW RegEnumKeyEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegEnumValueA( + HKEY hKey, + DWORD dwIndex, + LPSTR lpValueName, + LPDWORD lpcbValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData); +extern(Windows) export LONG RegEnumValueW( + HKEY hKey, + DWORD dwIndex, + LPWSTR lpValueName, + LPDWORD lpcbValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData); +// #ifdef UNICODE +alias RegEnumValueW RegEnumValue; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegFlushKey( + HKEY hKey); + +extern(Windows) export LONG RegGetKeySecurity( + HKEY hKey, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor, + LPDWORD lpcbSecurityDescriptor); + +extern(Windows) export LONG RegLoadKeyA( + HKEY hKey, + LPCSTR lpSubKey, + LPCSTR lpFile); +extern(Windows) export LONG RegLoadKeyW( + HKEY hKey, + LPCWSTR lpSubKey, + LPCWSTR lpFile); +// #ifdef UNICODE +alias RegLoadKeyW RegLoadKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegNotifyChangeKeyValue( + HKEY hKey, + BOOL bWatchSubtree, + DWORD dwNotifyFilter, + HANDLE hEvent, + BOOL fAsynchronus); + +extern(Windows) export LONG RegOpenKeyA( + HKEY hKey, + LPCSTR lpSubKey, + PHKEY phkResult); +extern(Windows) export LONG RegOpenKeyW( + HKEY hKey, + LPCWSTR lpSubKey, + PHKEY phkResult); +// #ifdef UNICODE +alias RegOpenKeyW RegOpenKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegOpenKeyExA( + HKEY hKey, + LPCSTR lpSubKey, + DWORD ulOptions, + REGSAM samDesired, + PHKEY phkResult); +extern(Windows) export LONG RegOpenKeyExW( + HKEY hKey, + LPCWSTR lpSubKey, + DWORD ulOptions, + REGSAM samDesired, + PHKEY phkResult); +// #ifdef UNICODE +alias RegOpenKeyExW RegOpenKeyEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegQueryInfoKeyA( + HKEY hKey, + LPSTR lpClass, + LPDWORD lpcbClass, + LPDWORD lpReserved, + LPDWORD lpcSubKeys, + LPDWORD lpcbMaxSubKeyLen, + LPDWORD lpcbMaxClassLen, + LPDWORD lpcValues, + LPDWORD lpcbMaxValueNameLen, + LPDWORD lpcbMaxValueLen, + LPDWORD lpcbSecurityDescriptor, + PFILETIME lpftLastWriteTime); +extern(Windows) export LONG RegQueryInfoKeyW( + HKEY hKey, + LPWSTR lpClass, + LPDWORD lpcbClass, + LPDWORD lpReserved, + LPDWORD lpcSubKeys, + LPDWORD lpcbMaxSubKeyLen, + LPDWORD lpcbMaxClassLen, + LPDWORD lpcValues, + LPDWORD lpcbMaxValueNameLen, + LPDWORD lpcbMaxValueLen, + LPDWORD lpcbSecurityDescriptor, + PFILETIME lpftLastWriteTime); +// #ifdef UNICODE +alias RegQueryInfoKeyW RegQueryInfoKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegQueryValueA( + HKEY hKey, + LPCSTR lpSubKey, + LPSTR lpValue, + PLONG lpcbValue); +extern(Windows) export LONG RegQueryValueW( + HKEY hKey, + LPCWSTR lpSubKey, + LPWSTR lpValue, + PLONG lpcbValue); +// #ifdef UNICODE +alias RegQueryValueW RegQueryValue; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export LONG RegQueryMultipleValuesA( + HKEY hKey, + PVALENTA val_list, + DWORD num_vals, + LPSTR lpValueBuf, + LPDWORD ldwTotsize); +extern(Windows) export LONG RegQueryMultipleValuesW( + HKEY hKey, + PVALENTW val_list, + DWORD num_vals, + LPWSTR lpValueBuf, + LPDWORD ldwTotsize); +// #ifdef UNICODE +alias RegQueryMultipleValuesW RegQueryMultipleValues; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export LONG RegQueryValueExA( + HKEY hKey, + LPCSTR lpValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData); +extern(Windows) export LONG RegQueryValueExW( + HKEY hKey, + LPCWSTR lpValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData); +// #ifdef UNICODE +alias RegQueryValueExW RegQueryValueEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegReplaceKeyA( + HKEY hKey, + LPCSTR lpSubKey, + LPCSTR lpNewFile, + LPCSTR lpOldFile); +extern(Windows) export LONG RegReplaceKeyW( + HKEY hKey, + LPCWSTR lpSubKey, + LPCWSTR lpNewFile, + LPCWSTR lpOldFile); +// #ifdef UNICODE +alias RegReplaceKeyW RegReplaceKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegRestoreKeyA( + HKEY hKey, + LPCSTR lpFile, + DWORD dwFlags); +extern(Windows) export LONG RegRestoreKeyW( + HKEY hKey, + LPCWSTR lpFile, + DWORD dwFlags); +// #ifdef UNICODE +alias RegRestoreKeyW RegRestoreKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegSaveKeyA( + HKEY hKey, + LPCSTR lpFile, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +extern(Windows) export LONG RegSaveKeyW( + HKEY hKey, + LPCWSTR lpFile, + LPSECURITY_ATTRIBUTES lpSecurityAttributes); +// #ifdef UNICODE +alias RegSaveKeyW RegSaveKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegSetKeySecurity( + HKEY hKey, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR pSecurityDescriptor); + +extern(Windows) export LONG RegSetValueA( + HKEY hKey, + LPCSTR lpSubKey, + DWORD dwType, + LPCSTR lpData, + DWORD cbData); +extern(Windows) export LONG RegSetValueW( + HKEY hKey, + LPCWSTR lpSubKey, + DWORD dwType, + LPCWSTR lpData, + DWORD cbData); +// #ifdef UNICODE +alias RegSetValueW RegSetValue; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegSetValueExA( + HKEY hKey, + LPCSTR lpValueName, + DWORD Reserved, + DWORD dwType, + BYTE* lpData, + DWORD cbData); +extern(Windows) export LONG RegSetValueExW( + HKEY hKey, + LPCWSTR lpValueName, + DWORD Reserved, + DWORD dwType, + BYTE* lpData, + DWORD cbData); +// #ifdef UNICODE +alias RegSetValueExW RegSetValueEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegUnLoadKeyA( + HKEY hKey, + LPCSTR lpSubKey); +extern(Windows) export LONG RegUnLoadKeyW( + HKEY hKey, + LPCWSTR lpSubKey); +// #ifdef UNICODE +alias RegUnLoadKeyW RegUnLoadKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL InitiateSystemShutdownA( + LPSTR lpMachineName, + LPSTR lpMessage, + DWORD dwTimeout, + BOOL bForceAppsClosed, + BOOL bRebootAfterShutdown); +extern(Windows) export BOOL InitiateSystemShutdownW( + LPWSTR lpMachineName, + LPWSTR lpMessage, + DWORD dwTimeout, + BOOL bForceAppsClosed, + BOOL bRebootAfterShutdown); +// #ifdef UNICODE +alias InitiateSystemShutdownW InitiateSystemShutdown; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AbortSystemShutdownA( + LPSTR lpMachineName); +extern(Windows) export BOOL AbortSystemShutdownW( + LPWSTR lpMachineName); +// #ifdef UNICODE +alias AbortSystemShutdownW AbortSystemShutdown; +// #else +// #... +// #endif // !UNICODE + +// inline #include +// ---- + +// #if !defined SENTINEL_Reason +// # define SENTINEL_Reason + +enum : uint { SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000 } +enum : uint { SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000 } +enum : uint { SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000 } +enum : uint { SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000 } + +enum : uint { SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000 } +enum : uint { SHTDN_REASON_FLAG_PLANNED = 0x80000000 } + +enum : uint { SHTDN_REASON_MAJOR_OTHER = 0x00000000 } +enum : uint { SHTDN_REASON_MAJOR_NONE = 0x00000000 } +enum : uint { SHTDN_REASON_MAJOR_HARDWARE = 0x00010000 } +enum : uint { SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000 } +enum : uint { SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000 } +enum : uint { SHTDN_REASON_MAJOR_APPLICATION = 0x00040000 } +enum : uint { SHTDN_REASON_MAJOR_SYSTEM = 0x00050000 } +enum : uint { SHTDN_REASON_MAJOR_POWER = 0x00060000 } + +enum : uint { SHTDN_REASON_MINOR_OTHER = 0x00000000 } +enum : uint { SHTDN_REASON_MINOR_NONE = 0x000000ff } +enum : uint { SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001 } +enum : uint { SHTDN_REASON_MINOR_INSTALLATION = 0x00000002 } +enum : uint { SHTDN_REASON_MINOR_UPGRADE = 0x00000003 } +enum : uint { SHTDN_REASON_MINOR_RECONFIG = 0x00000004 } +enum : uint { SHTDN_REASON_MINOR_HUNG = 0x00000005 } +enum : uint { SHTDN_REASON_MINOR_UNSTABLE = 0x00000006 } +enum : uint { SHTDN_REASON_MINOR_DISK = 0x00000007 } +enum : uint { SHTDN_REASON_MINOR_PROCESSOR = 0x00000008 } +enum : uint { SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009 } +enum : uint { SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a } +enum : uint { SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b } +enum : uint { SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c } +enum : uint { SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d } +enum : uint { SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e } +enum : uint { SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F } + +alias SHTDN_REASON_MINOR_NONE SHTDN_REASON_UNKNOWN; + +enum : uint { SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff } + +enum : uint { PCLEANUI = SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_FLAG_CLEAN_UI } +enum : uint { UCLEANUI = SHTDN_REASON_FLAG_CLEAN_UI } +enum : uint { UDIRTYUI = SHTDN_REASON_FLAG_DIRTY_UI } + +enum : uint { MAX_REASON_NAME_LEN = 64 } +enum : uint { MAX_REASON_DESC_LEN = 256 } +enum : uint { MAX_REASON_BUGID_LEN = 32 } +enum : uint { MAX_REASON_COMMENT_LEN = 4096 } + +// #endif // !defined SENTINEL_Reason +// ---- + +enum : uint { REASON_SWINSTALL = SHTDN_REASON_MAJOR_SOFTWARE | SHTDN_REASON_MINOR_INSTALLATION } +enum : uint { REASON_HWINSTALL = SHTDN_REASON_MAJOR_HARDWARE | SHTDN_REASON_MINOR_INSTALLATION } +enum : uint { REASON_SERVICEHANG = SHTDN_REASON_MAJOR_SOFTWARE | SHTDN_REASON_MINOR_HUNG } +enum : uint { REASON_UNSTABLE = SHTDN_REASON_MAJOR_SYSTEM | SHTDN_REASON_MINOR_UNSTABLE } +enum : uint { REASON_SWHWRECONF = SHTDN_REASON_MAJOR_SOFTWARE | SHTDN_REASON_MINOR_RECONFIG } +enum : uint { REASON_OTHER = SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_OTHER } +alias SHTDN_REASON_UNKNOWN REASON_UNKNOWN; +alias SHTDN_REASON_FLAG_PLANNED REASON_PLANNED_FLAG; + +extern(Windows) export BOOL InitiateSystemShutdownExA( + LPSTR lpMachineName, + LPSTR lpMessage, + DWORD dwTimeout, + BOOL bForceAppsClosed, + BOOL bRebootAfterShutdown, + DWORD dwReason); +extern(Windows) export BOOL InitiateSystemShutdownExW( + LPWSTR lpMachineName, + LPWSTR lpMessage, + DWORD dwTimeout, + BOOL bForceAppsClosed, + BOOL bRebootAfterShutdown, + DWORD dwReason); +// #ifdef UNICODE +alias InitiateSystemShutdownExW InitiateSystemShutdownEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG RegSaveKeyExA( + HKEY hKey, + LPCSTR lpFile, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD Flags); +extern(Windows) export LONG RegSaveKeyExW( + HKEY hKey, + LPCWSTR lpFile, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD Flags); +// #ifdef UNICODE +alias RegSaveKeyExW RegSaveKeyEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG Wow64Win32ApiEntry( + DWORD dwFuncNumber, + DWORD dwFlag, + DWORD dwRes); + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINREG_ + ADDED src/win32/winsock.d Index: src/win32/winsock.d ================================================================== --- src/win32/winsock.d +++ src/win32/winsock.d @@ -0,0 +1,811 @@ +module win32.winsock; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + + +// #ifndef _WINSOCKAPI_ +// #define _WINSOCKAPI_ + +// #if _MSC_VER > 1000 +// #pragma once +// #endif + +// #ifndef _INC_WINDOWS +import win32.windows; +// #endif /* _INC_WINDOWS */ + +alias ubyte u_char; +alias ushort u_short; +alias uint u_int; +alias uint u_long; + +alias UINT_PTR SOCKET; + +// #ifndef FD_SETSIZE +enum : uint { FD_SETSIZE = 64 } +// #endif /* FD_SETSIZE */ + +struct fd_set { + u_int fd_count; + SOCKET fd_array[FD_SETSIZE]; +} + +// #ifdef __cplusplus +// extern "C" { +// #endif + +extern(Windows) export int __WSAFDIsSet(SOCKET, fd_set *); + +// #ifdef __cplusplus +// } +// #endif + +// #define FD_CLR(fd, set) do { u_int __i; for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { if (((fd_set FAR *)(set))->fd_array[__i] == fd) { while (__i < ((fd_set FAR *)(set))->fd_count-1) { ((fd_set FAR *)(set))->fd_array[__i] = ((fd_set FAR *)(set))->fd_array[__i+1]; __i++; } ((fd_set FAR *)(set))->fd_count--; break; } } } while(0) + +void FD_SET(int 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; } + +// #define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set)) + +struct timeval { + int tv_sec; + int tv_usec; +} + +// #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) +// #define timercmp(tvp, uvp, cmp) ((tvp)->tv_sec cmp (uvp)->tv_sec || (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec) +// #define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 + +enum : uint { IOCPARM_MASK = 0x7f } +enum : uint { IOC_VOID = 0x20000000 } +enum : uint { IOC_OUT = 0x40000000 } +enum : uint { IOC_IN = 0x80000000 } +enum : uint { IOC_INOUT = IOC_IN|IOC_OUT } + +// #define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) + +// #define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) + +// #define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) + +// #define FIONREAD _IOR('f', 127, u_long) +// #define FIONBIO _IOW('f', 126, 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) + +struct hostent { + char * h_name; + char** h_aliases; + short h_addrtype; + short h_length; + char** h_addr_list; +// #define h_addr h_addr_list[0] +} + +struct netent { + char * n_name; + char** n_aliases; + short n_addrtype; + u_long n_net; +} + +struct servent { + char * s_name; + char** s_aliases; +// #ifdef _WIN64 +// ... +// #else + short s_port; + char * s_proto; +// #endif +} + +struct protoent { + char * p_name; + char** p_aliases; + short p_proto; +} + +enum : uint { IPPROTO_IP = 0 } +enum : uint { IPPROTO_ICMP = 1 } +enum : uint { IPPROTO_IGMP = 2 } +enum : uint { IPPROTO_GGP = 3 } +enum : uint { IPPROTO_TCP = 6 } +enum : uint { IPPROTO_PUP = 12 } +enum : uint { IPPROTO_UDP = 17 } +enum : uint { IPPROTO_IDP = 22 } +enum : uint { IPPROTO_ND = 77 } + +enum : uint { IPPROTO_RAW = 255 } +enum : uint { IPPROTO_MAX = 256 } + +enum : uint { IPPORT_ECHO = 7 } +enum : uint { IPPORT_DISCARD = 9 } +enum : uint { IPPORT_SYSTAT = 11 } +enum : uint { IPPORT_DAYTIME = 13 } +enum : uint { IPPORT_NETSTAT = 15 } +enum : uint { IPPORT_FTP = 21 } +enum : uint { IPPORT_TELNET = 23 } +enum : uint { IPPORT_SMTP = 25 } +enum : uint { IPPORT_TIMESERVER = 37 } +enum : uint { IPPORT_NAMESERVER = 42 } +enum : uint { IPPORT_WHOIS = 43 } +enum : uint { IPPORT_MTP = 57 } + +enum : uint { IPPORT_TFTP = 69 } +enum : uint { IPPORT_RJE = 77 } +enum : uint { IPPORT_FINGER = 79 } +enum : uint { IPPORT_TTYLINK = 87 } +enum : uint { IPPORT_SUPDUP = 95 } + +enum : uint { IPPORT_EXECSERVER = 512 } +enum : uint { IPPORT_LOGINSERVER = 513 } +enum : uint { IPPORT_CMDSERVER = 514 } +enum : uint { IPPORT_EFSSERVER = 520 } + +enum : uint { IPPORT_BIFFUDP = 512 } +enum : uint { IPPORT_WHOSERVER = 513 } +enum : uint { IPPORT_ROUTESERVER = 520 } + +enum : uint { IPPORT_RESERVED = 1024 } + +enum : uint { IMPLINK_IP = 155 } +enum : uint { IMPLINK_LOWEXPER = 156 } +enum : uint { IMPLINK_HIGHEXPER = 158 } + +struct in_addr { +union { + struct { u_char s_b1,s_b2,s_b3,s_b4; } + struct { u_short s_w1,s_w2; } + u_long S_addr; +} + +// #define s_addr S_un.S_addr + +// #define s_host S_un.S_un_b.s_b2 + +// #define s_net S_un.S_un_b.s_b1 + +// #define s_imp S_un.S_un_w.s_w2 + +// #define s_impno S_un.S_un_b.s_b4 + +// #define s_lh S_un.S_un_b.s_b3 + +} + +// #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) +enum : uint { IN_CLASSA_NET = 0xff000000 } +enum : uint { IN_CLASSA_NSHIFT = 24 } +enum : uint { IN_CLASSA_HOST = 0x00ffffff } +enum : uint { IN_CLASSA_MAX = 128 } + +// #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) +// #define IN_CLASSB_NET 0xffff0000 +// #define IN_CLASSB_NSHIFT 16 +enum : uint { IN_CLASSB_HOST = 0x0000ffff } +enum : uint { IN_CLASSB_MAX = 65536 } + +// #define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000) +// #define IN_CLASSC_NET 0xffffff00 +// #define IN_CLASSC_NSHIFT 8 +enum : uint { IN_CLASSC_HOST = 0x000000ff } + +enum : uint { INADDR_ANY = 0 } +enum : uint { INADDR_LOOPBACK = 0x7f000001 } +// #define INADDR_BROADCAST (u_long)0xffffffff +enum : uint { INADDR_NONE = uint.max } + +struct sockaddr_in { + short sin_family; + u_short sin_port; + in_addr sin_addr; + char sin_zero[8]; +} + +enum : uint { WSADESCRIPTION_LEN = 256 } +enum : uint { WSASYS_STATUS_LEN = 128 } + +struct WSAData { + WORD wVersion; + WORD wHighVersion; +// #ifdef _WIN64 +// ... +// #else + char szDescription[WSADESCRIPTION_LEN+1]; + char szSystemStatus[WSASYS_STATUS_LEN+1]; + ushort iMaxSockets; + ushort iMaxUdpDg; + char * lpVendorInfo; +// #endif +} +alias WSAData WSADATA; + +alias WSADATA* LPWSADATA; + +enum : uint { IP_OPTIONS = 1 } +enum : uint { IP_MULTICAST_IF = 2 } +enum : uint { IP_MULTICAST_TTL = 3 } +enum : uint { IP_MULTICAST_LOOP = 4 } +enum : uint { IP_ADD_MEMBERSHIP = 5 } +enum : uint { IP_DROP_MEMBERSHIP = 6 } +enum : uint { IP_TTL = 7 } +enum : uint { IP_TOS = 8 } +enum : uint { IP_DONTFRAGMENT = 9 } + +enum : uint { IP_DEFAULT_MULTICAST_TTL = 1 } +enum : uint { IP_DEFAULT_MULTICAST_LOOP = 1 } +enum : uint { IP_MAX_MEMBERSHIPS = 20 } + +struct ip_mreq { + in_addr imr_multiaddr; + in_addr imr_interface; +} + +enum : uint { INVALID_SOCKET = uint.max } +enum { SOCKET_ERROR = -1 } + +enum : uint { SOCK_STREAM = 1 } +enum : uint { SOCK_DGRAM = 2 } +enum : uint { SOCK_RAW = 3 } +enum : uint { SOCK_RDM = 4 } +enum : uint { SOCK_SEQPACKET = 5 } + +enum : uint { SO_DEBUG = 0x0001 } +enum : uint { SO_ACCEPTCONN = 0x0002 } +enum : uint { SO_REUSEADDR = 0x0004 } +enum : uint { SO_KEEPALIVE = 0x0008 } +enum : uint { SO_DONTROUTE = 0x0010 } +enum : uint { SO_BROADCAST = 0x0020 } +enum : uint { SO_USELOOPBACK = 0x0040 } +enum : uint { SO_LINGER = 0x0080 } +enum : uint { SO_OOBINLINE = 0x0100 } + +enum : uint { SO_DONTLINGER = ~SO_LINGER } + +enum : uint { SO_SNDBUF = 0x1001 } +enum : uint { SO_RCVBUF = 0x1002 } +enum : uint { SO_SNDLOWAT = 0x1003 } +enum : uint { SO_RCVLOWAT = 0x1004 } +enum : uint { SO_SNDTIMEO = 0x1005 } +enum : uint { SO_RCVTIMEO = 0x1006 } +enum : uint { SO_ERROR = 0x1007 } +enum : uint { SO_TYPE = 0x1008 } + +enum : uint { SO_CONNDATA = 0x7000 } +enum : uint { SO_CONNOPT = 0x7001 } +enum : uint { SO_DISCDATA = 0x7002 } +enum : uint { SO_DISCOPT = 0x7003 } +enum : uint { SO_CONNDATALEN = 0x7004 } +enum : uint { SO_CONNOPTLEN = 0x7005 } +enum : uint { SO_DISCDATALEN = 0x7006 } +enum : uint { SO_DISCOPTLEN = 0x7007 } + +enum : uint { SO_OPENTYPE = 0x7008 } + +enum : uint { SO_SYNCHRONOUS_ALERT = 0x10 } +enum : uint { SO_SYNCHRONOUS_NONALERT = 0x20 } + +enum : uint { SO_MAXDG = 0x7009 } +enum : uint { SO_MAXPATHDG = 0x700A } +enum : uint { SO_UPDATE_ACCEPT_CONTEXT = 0x700B } +enum : uint { SO_CONNECT_TIME = 0x700C } + +enum : uint { TCP_NODELAY = 0x0001 } +enum : uint { TCP_BSDURGENT = 0x7000 } + +enum : uint { AF_UNSPEC = 0 } +enum : uint { AF_UNIX = 1 } +enum : uint { AF_INET = 2 } +enum : uint { AF_IMPLINK = 3 } +enum : uint { AF_PUP = 4 } +enum : uint { AF_CHAOS = 5 } +enum : uint { AF_IPX = 6 } +enum : uint { AF_NS = 6 } +enum : uint { AF_ISO = 7 } +alias AF_ISO AF_OSI; +enum : uint { AF_ECMA = 8 } +enum : uint { AF_DATAKIT = 9 } +enum : uint { AF_CCITT = 10 } +enum : uint { AF_SNA = 11 } +enum : uint { AF_DECnet = 12 } +enum : uint { AF_DLI = 13 } +enum : uint { AF_LAT = 14 } +enum : uint { AF_HYLINK = 15 } +enum : uint { AF_APPLETALK = 16 } +enum : uint { AF_NETBIOS = 17 } +enum : uint { AF_VOICEVIEW = 18 } +enum : uint { AF_FIREFOX = 19 } +enum : uint { AF_UNKNOWN1 = 20 } +enum : uint { AF_BAN = 21 } + +enum : uint { AF_MAX = 22 } + +struct sockaddr { + u_short sa_family; + char sa_data[14]; +} + +struct sockproto { + u_short sp_family; + u_short sp_protocol; +} + +alias AF_UNSPEC PF_UNSPEC; +alias AF_UNIX PF_UNIX; +alias AF_INET PF_INET; +alias AF_IMPLINK PF_IMPLINK; +alias AF_PUP PF_PUP; +alias AF_CHAOS PF_CHAOS; +alias AF_NS PF_NS; +alias AF_IPX PF_IPX; +alias AF_ISO PF_ISO; +alias AF_OSI PF_OSI; +alias AF_ECMA PF_ECMA; +alias AF_DATAKIT PF_DATAKIT; +alias AF_CCITT PF_CCITT; +alias AF_SNA PF_SNA; +alias AF_DECnet PF_DECnet; +alias AF_DLI PF_DLI; +alias AF_LAT PF_LAT; +alias AF_HYLINK PF_HYLINK; +alias AF_APPLETALK PF_APPLETALK; +alias AF_VOICEVIEW PF_VOICEVIEW; +alias AF_FIREFOX PF_FIREFOX; +alias AF_UNKNOWN1 PF_UNKNOWN1; +alias AF_BAN PF_BAN; + +alias AF_MAX PF_MAX; + +struct linger { + u_short l_onoff; + u_short l_linger; +} + +enum : uint { SOL_SOCKET = 0xffff } + +enum : uint { SOMAXCONN = 5 } + +enum : uint { MSG_OOB = 0x1 } +enum : uint { MSG_PEEK = 0x2 } +enum : uint { MSG_DONTROUTE = 0x4 } + +enum : uint { MSG_MAXIOVLEN = 16 } + +enum : uint { MSG_PARTIAL = 0x8000 } + +enum : uint { MAXGETHOSTSTRUCT = 1024 } + +enum : uint { FD_READ = 0x01 } +enum : uint { FD_WRITE = 0x02 } +enum : uint { FD_OOB = 0x04 } +enum : uint { FD_ACCEPT = 0x08 } +enum : uint { FD_CONNECT = 0x10 } +enum : uint { FD_CLOSE = 0x20 } + +// #ifndef WSABASEERR + +enum : uint { WSABASEERR = 10000 } + +enum : uint { WSAEINTR = WSABASEERR+4 } +enum : uint { WSAEBADF = WSABASEERR+9 } +enum : uint { WSAEACCES = WSABASEERR+13 } +enum : uint { WSAEFAULT = WSABASEERR+14 } +enum : uint { WSAEINVAL = WSABASEERR+22 } +enum : uint { WSAEMFILE = WSABASEERR+24 } + +enum : uint { WSAEWOULDBLOCK = WSABASEERR+35 } +enum : uint { WSAEINPROGRESS = WSABASEERR+36 } +enum : uint { WSAEALREADY = WSABASEERR+37 } +enum : uint { WSAENOTSOCK = WSABASEERR+38 } +enum : uint { WSAEDESTADDRREQ = WSABASEERR+39 } +enum : uint { WSAEMSGSIZE = WSABASEERR+40 } +enum : uint { WSAEPROTOTYPE = WSABASEERR+41 } +enum : uint { WSAENOPROTOOPT = WSABASEERR+42 } +enum : uint { WSAEPROTONOSUPPORT = WSABASEERR+43 } +enum : uint { WSAESOCKTNOSUPPORT = WSABASEERR+44 } +enum : uint { WSAEOPNOTSUPP = WSABASEERR+45 } +enum : uint { WSAEPFNOSUPPORT = WSABASEERR+46 } +enum : uint { WSAEAFNOSUPPORT = WSABASEERR+47 } +enum : uint { WSAEADDRINUSE = WSABASEERR+48 } +enum : uint { WSAEADDRNOTAVAIL = WSABASEERR+49 } +enum : uint { WSAENETDOWN = WSABASEERR+50 } +enum : uint { WSAENETUNREACH = WSABASEERR+51 } +enum : uint { WSAENETRESET = WSABASEERR+52 } +enum : uint { WSAECONNABORTED = WSABASEERR+53 } +enum : uint { WSAECONNRESET = WSABASEERR+54 } +enum : uint { WSAENOBUFS = WSABASEERR+55 } +enum : uint { WSAEISCONN = WSABASEERR+56 } +enum : uint { WSAENOTCONN = WSABASEERR+57 } +enum : uint { WSAESHUTDOWN = WSABASEERR+58 } +enum : uint { WSAETOOMANYREFS = WSABASEERR+59 } +enum : uint { WSAETIMEDOUT = WSABASEERR+60 } +enum : uint { WSAECONNREFUSED = WSABASEERR+61 } +enum : uint { WSAELOOP = WSABASEERR+62 } +enum : uint { WSAENAMETOOLONG = WSABASEERR+63 } +enum : uint { WSAEHOSTDOWN = WSABASEERR+64 } +enum : uint { WSAEHOSTUNREACH = WSABASEERR+65 } +enum : uint { WSAENOTEMPTY = WSABASEERR+66 } +enum : uint { WSAEPROCLIM = WSABASEERR+67 } +enum : uint { WSAEUSERS = WSABASEERR+68 } +enum : uint { WSAEDQUOT = WSABASEERR+69 } +enum : uint { WSAESTALE = WSABASEERR+70 } +enum : uint { WSAEREMOTE = WSABASEERR+71 } + +enum : uint { WSAEDISCON = WSABASEERR+101 } + +enum : uint { WSASYSNOTREADY = WSABASEERR+91 } +enum : uint { WSAVERNOTSUPPORTED = WSABASEERR+92 } +enum : uint { WSANOTINITIALISED = WSABASEERR+93 } + +enum : uint { WSAHOST_NOT_FOUND = WSABASEERR+1001 } + +enum : uint { WSATRY_AGAIN = WSABASEERR+1002 } + +enum : uint { WSANO_RECOVERY = WSABASEERR+1003 } + +enum : uint { WSANO_DATA = WSABASEERR+1004 } + +// #endif /* ifdef WSABASEERR */ + +// #define h_errno WSAGetLastError() +alias WSAHOST_NOT_FOUND HOST_NOT_FOUND; +alias WSATRY_AGAIN TRY_AGAIN; +alias WSANO_RECOVERY NO_RECOVERY; +alias WSANO_DATA NO_DATA; + +alias WSANO_DATA WSANO_ADDRESS; +alias WSANO_ADDRESS NO_ADDRESS; + +// #if 0 +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +extern(Windows) export SOCKET accept( + SOCKET s, + sockaddr *addr, + int *addrlen); + +extern(Windows) export int bind( + SOCKET s, + sockaddr *addr, + int namelen); + +extern(Windows) export int closesocket(SOCKET s); + +extern(Windows) export int connect( + SOCKET s, + sockaddr *name, + int namelen); + +extern(Windows) export int ioctlsocket( + SOCKET s, + int cmd, + u_long *argp); + +extern(Windows) export int getpeername( + SOCKET s, + sockaddr *name, + int * namelen); + +extern(Windows) export int getsockname( + SOCKET s, + sockaddr *name, + int * namelen); + +extern(Windows) export int getsockopt( + SOCKET s, + int level, + int optname, + char * optval, + int *optlen); + +extern(Windows) export u_long htonl(u_long hostlong); + +extern(Windows) export u_short htons(u_short hostshort); + +extern(Windows) export uint inet_addr( char * cp); + +extern(Windows) export char* inet_ntoa(uint in_); +extern(Windows) export int listen( + SOCKET s, + int backlog); + +extern(Windows) export u_long ntohl(u_long netlong); + +extern(Windows) export u_short ntohs(u_short netshort); + +extern(Windows) export int recv( + SOCKET s, + char * buf, + int len, + int flags); + +extern(Windows) export int recvfrom( + SOCKET s, + char * buf, + int len, + int flags, + sockaddr *from, + int * fromlen); + +extern(Windows) export int select( + int nfds, + fd_set *readfds, + fd_set *writefds, + fd_set *exceptfds, + timeval *timeout); + +extern(Windows) export int send( + SOCKET s, + char * buf, + int len, + int flags); + +extern(Windows) export int sendto( + SOCKET s, + char * buf, + int len, + int flags, + sockaddr *to, + int tolen); + +extern(Windows) export int setsockopt( + SOCKET s, + int level, + int optname, + char * optval, + int optlen); + +extern(Windows) export int shutdown( + SOCKET s, + int how); + +extern(Windows) export SOCKET socket( + int af, + int type, + int protocol); + +extern(Windows) export hostent* gethostbyaddr( + char * addr, + int len, + int type); +extern(Windows) export hostent* gethostbyname( char * name); +extern(Windows) export int gethostname( + char * name, + int namelen); + +extern(Windows) export servent* getservbyport( + int port, + char * proto); +extern(Windows) export servent* getservbyname( + char * name, + char * proto); +extern(Windows) export protoent* getprotobynumber( int proto); +extern(Windows) export protoent* getprotobyname( char * name); + +extern(Windows) export int WSAStartup( + WORD wVersionRequired, + LPWSADATA lpWSAData); + +extern(Windows) export int WSACleanup(); + +extern(Windows) export void WSASetLastError(int iError); + +extern(Windows) export int WSAGetLastError(); + +extern(Windows) export BOOL WSAIsBlocking(); + +extern(Windows) export int WSAUnhookBlockingHook(); + +extern(Windows) export FARPROC WSASetBlockingHook(FARPROC lpBlockFunc); + +extern(Windows) export int WSACancelBlockingCall(); + +extern(Windows) export HANDLE WSAAsyncGetServByName( + HWND hWnd, + u_int wMsg, + char * name, + char * proto, + char * buf, + int buflen); + +extern(Windows) export HANDLE WSAAsyncGetServByPort( + HWND hWnd, + u_int wMsg, + int port, + char * proto, + char * buf, + int buflen); + +extern(Windows) export HANDLE WSAAsyncGetProtoByName( + HWND hWnd, + u_int wMsg, + char * name, + char * buf, + int buflen); + +extern(Windows) export HANDLE WSAAsyncGetProtoByNumber( + HWND hWnd, + u_int wMsg, + int number, + char * buf, + int buflen); + +extern(Windows) export HANDLE WSAAsyncGetHostByName( + HWND hWnd, + u_int wMsg, + char * name, + char * buf, + int buflen); + +extern(Windows) export HANDLE WSAAsyncGetHostByAddr( + HWND hWnd, + u_int wMsg, + char * addr, + int len, + int type, + char * buf, + int buflen); + +extern(Windows) export int WSACancelAsyncRequest(HANDLE hAsyncTaskHandle); + +extern(Windows) export int WSAAsyncSelect( + SOCKET s, + HWND hWnd, + u_int wMsg, + int lEvent); + +extern(Windows) export int WSARecvEx( + SOCKET s, + char * buf, + int len, + int *flags); + +struct _TRANSMIT_FILE_BUFFERS { + PVOID Head; + DWORD HeadLength; + PVOID Tail; + DWORD TailLength; +} +alias _TRANSMIT_FILE_BUFFERS TRANSMIT_FILE_BUFFERS; +alias _TRANSMIT_FILE_BUFFERS* PTRANSMIT_FILE_BUFFERS; +alias _TRANSMIT_FILE_BUFFERS* LPTRANSMIT_FILE_BUFFERS; + +enum : uint { TF_DISCONNECT = 0x01 } +enum : uint { TF_REUSE_SOCKET = 0x02 } +enum : uint { TF_WRITE_BEHIND = 0x04 } + +extern(Windows) export BOOL TransmitFile( + SOCKET hSocket, + HANDLE hFile, + DWORD nNumberOfBytesToWrite, + DWORD nNumberOfBytesPerSend, + LPOVERLAPPED lpOverlapped, + LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers, + DWORD dwReserved); + +extern(Windows) export BOOL AcceptEx( + SOCKET sListenSocket, + SOCKET sAcceptSocket, + PVOID lpOutputBuffer, + DWORD dwReceiveDataLength, + DWORD dwLocalAddressLength, + DWORD dwRemoteAddressLength, + LPDWORD lpdwBytesReceived, + LPOVERLAPPED lpOverlapped); + +extern(Windows) export VOID GetAcceptExSockaddrs( + PVOID lpOutputBuffer, + DWORD dwReceiveDataLength, + DWORD dwLocalAddressLength, + DWORD dwRemoteAddressLength, + sockaddr **LocalSockaddr, + LPINT LocalSockaddrLength, + sockaddr **RemoteSockaddr, + LPINT RemoteSockaddrLength); + +// #ifdef __cplusplus +// } +// #endif + +alias sockaddr SOCKADDR; +alias sockaddr* PSOCKADDR; +alias sockaddr* LPSOCKADDR; + +alias sockaddr_in SOCKADDR_IN; +alias sockaddr_in* PSOCKADDR_IN; +alias sockaddr_in* LPSOCKADDR_IN; + +alias linger LINGER; +alias linger* PLINGER; +alias linger* LPLINGER; + +alias in_addr IN_ADDR; +alias in_addr* PIN_ADDR; +alias in_addr* LPIN_ADDR; + +alias fd_set FD_SET; +alias fd_set* PFD_SET; +alias fd_set* LPFD_SET; + +alias hostent HOSTENT; +alias hostent* PHOSTENT; +alias hostent* LPHOSTENT; + +alias servent SERVENT; +alias servent* PSERVENT; +alias servent* LPSERVENT; + +alias protoent PROTOENT; +alias protoent* PPROTOENT; +alias protoent* LPPROTOENT; + +alias timeval TIMEVAL; +alias timeval* PTIMEVAL; +alias timeval* LPTIMEVAL; + +// #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error) + +// #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error) + +// #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam) + +// #define WSAGETASYNCERROR(lParam) HIWORD(lParam) + +// #define WSAGETSELECTEVENT(lParam) LOWORD(lParam) + +// #define WSAGETSELECTERROR(lParam) HIWORD(lParam) + +// #ifdef IPV6STRICT +// #... +// #endif // IPV6STRICT + +// #endif /* _WINSOCKAPI_ */ ADDED src/win32/winspool.d Index: src/win32/winspool.d ================================================================== --- src/win32/winspool.d +++ src/win32/winspool.d @@ -0,0 +1,2665 @@ +module win32.winspool; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.windef; +import win32.winbase; +import win32.wingdi; + +// #ifndef _WINSPOOL_ +// #define _WINSPOOL_ + +// #ifdef _WINUSER_ +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif + +struct _PRINTER_INFO_1A { + DWORD Flags; + LPSTR pDescription; + LPSTR pName; + LPSTR pComment; +} +alias _PRINTER_INFO_1A PRINTER_INFO_1A; +alias _PRINTER_INFO_1A* PPRINTER_INFO_1A; +alias _PRINTER_INFO_1A* LPPRINTER_INFO_1A; + +struct _PRINTER_INFO_1W { + DWORD Flags; + LPWSTR pDescription; + LPWSTR pName; + LPWSTR pComment; +} +alias _PRINTER_INFO_1W PRINTER_INFO_1W; +alias _PRINTER_INFO_1W* PPRINTER_INFO_1W; +alias _PRINTER_INFO_1W* LPPRINTER_INFO_1W; + +// #ifdef UNICODE +alias PRINTER_INFO_1W PRINTER_INFO_1; +alias PPRINTER_INFO_1W PPRINTER_INFO_1; +alias LPPRINTER_INFO_1W LPPRINTER_INFO_1; +// #else +// ... +// #endif // UNICODE + +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 PRINTER_INFO_2A; +alias _PRINTER_INFO_2A* PPRINTER_INFO_2A; +alias _PRINTER_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 PRINTER_INFO_2W; +alias _PRINTER_INFO_2W* PPRINTER_INFO_2W; +alias _PRINTER_INFO_2W* LPPRINTER_INFO_2W; + +// #ifdef UNICODE +alias PRINTER_INFO_2W PRINTER_INFO_2; +alias PPRINTER_INFO_2W PPRINTER_INFO_2; +alias LPPRINTER_INFO_2W LPPRINTER_INFO_2; +// #else +// ... +// #endif // UNICODE + +struct _PRINTER_INFO_3 { + PSECURITY_DESCRIPTOR pSecurityDescriptor; +} +alias _PRINTER_INFO_3 PRINTER_INFO_3; +alias _PRINTER_INFO_3* PPRINTER_INFO_3; +alias _PRINTER_INFO_3* LPPRINTER_INFO_3; + +struct _PRINTER_INFO_4A { + LPSTR pPrinterName; + LPSTR pServerName; + DWORD Attributes; +} +alias _PRINTER_INFO_4A PRINTER_INFO_4A; +alias _PRINTER_INFO_4A* PPRINTER_INFO_4A; +alias _PRINTER_INFO_4A* LPPRINTER_INFO_4A; + +struct _PRINTER_INFO_4W { + LPWSTR pPrinterName; + LPWSTR pServerName; + DWORD Attributes; +} +alias _PRINTER_INFO_4W PRINTER_INFO_4W; +alias _PRINTER_INFO_4W* PPRINTER_INFO_4W; +alias _PRINTER_INFO_4W* LPPRINTER_INFO_4W; + +// #ifdef UNICODE +alias PRINTER_INFO_4W PRINTER_INFO_4; +alias PPRINTER_INFO_4W PPRINTER_INFO_4; +alias LPPRINTER_INFO_4W LPPRINTER_INFO_4; +// #else +// ... +// #endif // UNICODE + +struct _PRINTER_INFO_5A { + LPSTR pPrinterName; + LPSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias _PRINTER_INFO_5A PRINTER_INFO_5A; +alias _PRINTER_INFO_5A* PPRINTER_INFO_5A; +alias _PRINTER_INFO_5A* LPPRINTER_INFO_5A; + +struct _PRINTER_INFO_5W { + LPWSTR pPrinterName; + LPWSTR pPortName; + DWORD Attributes; + DWORD DeviceNotSelectedTimeout; + DWORD TransmissionRetryTimeout; +} +alias _PRINTER_INFO_5W PRINTER_INFO_5W; +alias _PRINTER_INFO_5W* PPRINTER_INFO_5W; +alias _PRINTER_INFO_5W* LPPRINTER_INFO_5W; + +// #ifdef UNICODE +alias PRINTER_INFO_5W PRINTER_INFO_5; +alias PPRINTER_INFO_5W PPRINTER_INFO_5; +alias LPPRINTER_INFO_5W LPPRINTER_INFO_5; +// #else +// ... +// #endif // UNICODE + +struct _PRINTER_INFO_6 { + DWORD dwStatus; +} +alias _PRINTER_INFO_6 PRINTER_INFO_6; +alias _PRINTER_INFO_6* PPRINTER_INFO_6; +alias _PRINTER_INFO_6* LPPRINTER_INFO_6; + +struct _PRINTER_INFO_7A { + LPSTR pszObjectGUID; + DWORD dwAction; +} +alias _PRINTER_INFO_7A PRINTER_INFO_7A; +alias _PRINTER_INFO_7A* PPRINTER_INFO_7A; +alias _PRINTER_INFO_7A* LPPRINTER_INFO_7A; + +struct _PRINTER_INFO_7W { + LPWSTR pszObjectGUID; + DWORD dwAction; +} +alias _PRINTER_INFO_7W PRINTER_INFO_7W; +alias _PRINTER_INFO_7W* PPRINTER_INFO_7W; +alias _PRINTER_INFO_7W* LPPRINTER_INFO_7W; + +// #ifdef UNICODE +alias PRINTER_INFO_7W PRINTER_INFO_7; +alias PPRINTER_INFO_7W PPRINTER_INFO_7; +alias LPPRINTER_INFO_7W LPPRINTER_INFO_7; +// #else +// ... +// #endif // UNICODE + +enum : uint { DSPRINT_PUBLISH = 0x00000001 } +enum : uint { DSPRINT_UPDATE = 0x00000002 } +enum : uint { DSPRINT_UNPUBLISH = 0x00000004 } +enum : uint { DSPRINT_REPUBLISH = 0x00000008 } +enum : uint { DSPRINT_PENDING = 0x80000000 } + +struct _PRINTER_INFO_8A { + LPDEVMODEA pDevMode; +} +alias _PRINTER_INFO_8A PRINTER_INFO_8A; +alias _PRINTER_INFO_8A* PPRINTER_INFO_8A; +alias _PRINTER_INFO_8A* LPPRINTER_INFO_8A; + +struct _PRINTER_INFO_8W { + LPDEVMODEW pDevMode; +} +alias _PRINTER_INFO_8W PRINTER_INFO_8W; +alias _PRINTER_INFO_8W* PPRINTER_INFO_8W; +alias _PRINTER_INFO_8W* LPPRINTER_INFO_8W; + +// #ifdef UNICODE +alias PRINTER_INFO_8W PRINTER_INFO_8; +alias PPRINTER_INFO_8W PPRINTER_INFO_8; +alias LPPRINTER_INFO_8W LPPRINTER_INFO_8; +// #else +// ... +// #endif // UNICODE + +struct _PRINTER_INFO_9A { + LPDEVMODEA pDevMode; +} +alias _PRINTER_INFO_9A PRINTER_INFO_9A; +alias _PRINTER_INFO_9A* PPRINTER_INFO_9A; +alias _PRINTER_INFO_9A* LPPRINTER_INFO_9A; + +struct _PRINTER_INFO_9W { + LPDEVMODEW pDevMode; +} +alias _PRINTER_INFO_9W PRINTER_INFO_9W; +alias _PRINTER_INFO_9W* PPRINTER_INFO_9W; +alias _PRINTER_INFO_9W* LPPRINTER_INFO_9W; + +// #ifdef UNICODE +alias PRINTER_INFO_9W PRINTER_INFO_9; +alias PPRINTER_INFO_9W PPRINTER_INFO_9; +alias LPPRINTER_INFO_9W LPPRINTER_INFO_9; +// #else +// ... +// #endif // UNICODE + +enum : uint { PRINTER_CONTROL_PAUSE = 1 } +enum : uint { PRINTER_CONTROL_RESUME = 2 } +enum : uint { PRINTER_CONTROL_PURGE = 3 } +enum : uint { PRINTER_CONTROL_SET_STATUS = 4 } + +enum : uint { PRINTER_STATUS_PAUSED = 0x00000001 } +enum : uint { PRINTER_STATUS_ERROR = 0x00000002 } +enum : uint { PRINTER_STATUS_PENDING_DELETION = 0x00000004 } +enum : uint { PRINTER_STATUS_PAPER_JAM = 0x00000008 } +enum : uint { PRINTER_STATUS_PAPER_OUT = 0x00000010 } +enum : uint { PRINTER_STATUS_MANUAL_FEED = 0x00000020 } +enum : uint { PRINTER_STATUS_PAPER_PROBLEM = 0x00000040 } +enum : uint { PRINTER_STATUS_OFFLINE = 0x00000080 } +enum : uint { PRINTER_STATUS_IO_ACTIVE = 0x00000100 } +enum : uint { PRINTER_STATUS_BUSY = 0x00000200 } +enum : uint { PRINTER_STATUS_PRINTING = 0x00000400 } +enum : uint { PRINTER_STATUS_OUTPUT_BIN_FULL = 0x00000800 } +enum : uint { PRINTER_STATUS_NOT_AVAILABLE = 0x00001000 } +enum : uint { PRINTER_STATUS_WAITING = 0x00002000 } +enum : uint { PRINTER_STATUS_PROCESSING = 0x00004000 } +enum : uint { PRINTER_STATUS_INITIALIZING = 0x00008000 } +enum : uint { PRINTER_STATUS_WARMING_UP = 0x00010000 } +enum : uint { PRINTER_STATUS_TONER_LOW = 0x00020000 } +enum : uint { PRINTER_STATUS_NO_TONER = 0x00040000 } +enum : uint { PRINTER_STATUS_PAGE_PUNT = 0x00080000 } +enum : uint { PRINTER_STATUS_USER_INTERVENTION = 0x00100000 } +enum : uint { PRINTER_STATUS_OUT_OF_MEMORY = 0x00200000 } +enum : uint { PRINTER_STATUS_DOOR_OPEN = 0x00400000 } +enum : uint { PRINTER_STATUS_SERVER_UNKNOWN = 0x00800000 } +enum : uint { PRINTER_STATUS_POWER_SAVE = 0x01000000 } + +enum : uint { PRINTER_ATTRIBUTE_QUEUED = 0x00000001 } +enum : uint { PRINTER_ATTRIBUTE_DIRECT = 0x00000002 } +enum : uint { PRINTER_ATTRIBUTE_DEFAULT = 0x00000004 } +enum : uint { PRINTER_ATTRIBUTE_SHARED = 0x00000008 } +enum : uint { PRINTER_ATTRIBUTE_NETWORK = 0x00000010 } +enum : uint { PRINTER_ATTRIBUTE_HIDDEN = 0x00000020 } +enum : uint { PRINTER_ATTRIBUTE_LOCAL = 0x00000040 } + +enum : uint { PRINTER_ATTRIBUTE_ENABLE_DEVQ = 0x00000080 } +enum : uint { PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS = 0x00000100 } +enum : uint { PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = 0x00000200 } + +enum : uint { PRINTER_ATTRIBUTE_WORK_OFFLINE = 0x00000400 } +enum : uint { PRINTER_ATTRIBUTE_ENABLE_BIDI = 0x00000800 } +enum : uint { PRINTER_ATTRIBUTE_RAW_ONLY = 0x00001000 } +enum : uint { PRINTER_ATTRIBUTE_PUBLISHED = 0x00002000 } +enum : uint { PRINTER_ATTRIBUTE_FAX = 0x00004000 } + +enum : uint { NO_PRIORITY = 0 } +enum : uint { MAX_PRIORITY = 99 } +enum : uint { MIN_PRIORITY = 1 } +enum : uint { DEF_PRIORITY = 1 } + +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 JOB_INFO_1A; +alias _JOB_INFO_1A* PJOB_INFO_1A; +alias _JOB_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 JOB_INFO_1W; +alias _JOB_INFO_1W* PJOB_INFO_1W; +alias _JOB_INFO_1W* LPJOB_INFO_1W; + +// #ifdef UNICODE +alias JOB_INFO_1W JOB_INFO_1; +alias PJOB_INFO_1W PJOB_INFO_1; +alias LPJOB_INFO_1W LPJOB_INFO_1; +// #else +// ... +// #endif // UNICODE + +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 JOB_INFO_2A; +alias _JOB_INFO_2A* PJOB_INFO_2A; +alias _JOB_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 JOB_INFO_2W; +alias _JOB_INFO_2W* PJOB_INFO_2W; +alias _JOB_INFO_2W* LPJOB_INFO_2W; + +// #ifdef UNICODE +alias JOB_INFO_2W JOB_INFO_2; +alias PJOB_INFO_2W PJOB_INFO_2; +alias LPJOB_INFO_2W LPJOB_INFO_2; +// #else +// ... +// #endif // UNICODE + +struct _JOB_INFO_3 { + DWORD JobId; + DWORD NextJobId; + DWORD Reserved; +} +alias _JOB_INFO_3 JOB_INFO_3; +alias _JOB_INFO_3* PJOB_INFO_3; +alias _JOB_INFO_3* LPJOB_INFO_3; + +enum : uint { JOB_CONTROL_PAUSE = 1 } +enum : uint { JOB_CONTROL_RESUME = 2 } +enum : uint { JOB_CONTROL_CANCEL = 3 } +enum : uint { JOB_CONTROL_RESTART = 4 } +enum : uint { JOB_CONTROL_DELETE = 5 } +enum : uint { JOB_CONTROL_SENT_TO_PRINTER = 6 } +enum : uint { JOB_CONTROL_LAST_PAGE_EJECTED = 7 } + +enum : uint { JOB_STATUS_PAUSED = 0x00000001 } +enum : uint { JOB_STATUS_ERROR = 0x00000002 } +enum : uint { JOB_STATUS_DELETING = 0x00000004 } +enum : uint { JOB_STATUS_SPOOLING = 0x00000008 } +enum : uint { JOB_STATUS_PRINTING = 0x00000010 } +enum : uint { JOB_STATUS_OFFLINE = 0x00000020 } +enum : uint { JOB_STATUS_PAPEROUT = 0x00000040 } +enum : uint { JOB_STATUS_PRINTED = 0x00000080 } +enum : uint { JOB_STATUS_DELETED = 0x00000100 } +enum : uint { JOB_STATUS_BLOCKED_DEVQ = 0x00000200 } +enum : uint { JOB_STATUS_USER_INTERVENTION = 0x00000400 } +enum : uint { JOB_STATUS_RESTART = 0x00000800 } +enum : uint { JOB_STATUS_COMPLETE = 0x00001000 } + +enum : uint { JOB_POSITION_UNSPECIFIED = 0 } + +struct _ADDJOB_INFO_1A { + LPSTR Path; + DWORD JobId; +} +alias _ADDJOB_INFO_1A ADDJOB_INFO_1A; +alias _ADDJOB_INFO_1A* PADDJOB_INFO_1A; +alias _ADDJOB_INFO_1A* LPADDJOB_INFO_1A; + +struct _ADDJOB_INFO_1W { + LPWSTR Path; + DWORD JobId; +} +alias _ADDJOB_INFO_1W ADDJOB_INFO_1W; +alias _ADDJOB_INFO_1W* PADDJOB_INFO_1W; +alias _ADDJOB_INFO_1W* LPADDJOB_INFO_1W; + +// #ifdef UNICODE +alias ADDJOB_INFO_1W ADDJOB_INFO_1; +alias PADDJOB_INFO_1W PADDJOB_INFO_1; +alias LPADDJOB_INFO_1W LPADDJOB_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _DRIVER_INFO_1A { + LPSTR pName; +} +alias _DRIVER_INFO_1A DRIVER_INFO_1A; +alias _DRIVER_INFO_1A* PDRIVER_INFO_1A; +alias _DRIVER_INFO_1A* LPDRIVER_INFO_1A; + +struct _DRIVER_INFO_1W { + LPWSTR pName; +} +alias _DRIVER_INFO_1W DRIVER_INFO_1W; +alias _DRIVER_INFO_1W* PDRIVER_INFO_1W; +alias _DRIVER_INFO_1W* LPDRIVER_INFO_1W; + +// #ifdef UNICODE +alias DRIVER_INFO_1W DRIVER_INFO_1; +alias PDRIVER_INFO_1W PDRIVER_INFO_1; +alias LPDRIVER_INFO_1W LPDRIVER_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _DRIVER_INFO_2A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; +} +alias _DRIVER_INFO_2A DRIVER_INFO_2A; +alias _DRIVER_INFO_2A* PDRIVER_INFO_2A; +alias _DRIVER_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 DRIVER_INFO_2W; +alias _DRIVER_INFO_2W* PDRIVER_INFO_2W; +alias _DRIVER_INFO_2W* LPDRIVER_INFO_2W; + +// #ifdef UNICODE +alias DRIVER_INFO_2W DRIVER_INFO_2; +alias PDRIVER_INFO_2W PDRIVER_INFO_2; +alias LPDRIVER_INFO_2W LPDRIVER_INFO_2; +// #else +// ... +// #endif // UNICODE + +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 DRIVER_INFO_3A; +alias _DRIVER_INFO_3A* PDRIVER_INFO_3A; +alias _DRIVER_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 DRIVER_INFO_3W; +alias _DRIVER_INFO_3W* PDRIVER_INFO_3W; +alias _DRIVER_INFO_3W* LPDRIVER_INFO_3W; + +// #ifdef UNICODE +alias DRIVER_INFO_3W DRIVER_INFO_3; +alias PDRIVER_INFO_3W PDRIVER_INFO_3; +alias LPDRIVER_INFO_3W LPDRIVER_INFO_3; +// #else +// ... +// #endif // UNICODE + +struct _DRIVER_INFO_4A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; + LPSTR pszzPreviousNames; +} +alias _DRIVER_INFO_4A DRIVER_INFO_4A; +alias _DRIVER_INFO_4A* PDRIVER_INFO_4A; +alias _DRIVER_INFO_4A* LPDRIVER_INFO_4A; + +struct _DRIVER_INFO_4W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; + LPWSTR pszzPreviousNames; +} +alias _DRIVER_INFO_4W DRIVER_INFO_4W; +alias _DRIVER_INFO_4W* PDRIVER_INFO_4W; +alias _DRIVER_INFO_4W* LPDRIVER_INFO_4W; + +// #ifdef UNICODE +alias DRIVER_INFO_4W DRIVER_INFO_4; +alias PDRIVER_INFO_4W PDRIVER_INFO_4; +alias LPDRIVER_INFO_4W LPDRIVER_INFO_4; +// #else +// ... +// #endif // UNICODE + +struct _DRIVER_INFO_5A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + DWORD dwDriverAttributes; + DWORD dwConfigVersion; + DWORD dwDriverVersion; +} +alias _DRIVER_INFO_5A DRIVER_INFO_5A; +alias _DRIVER_INFO_5A* PDRIVER_INFO_5A; +alias _DRIVER_INFO_5A* LPDRIVER_INFO_5A; + +struct _DRIVER_INFO_5W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + DWORD dwDriverAttributes; + DWORD dwConfigVersion; + DWORD dwDriverVersion; +} +alias _DRIVER_INFO_5W DRIVER_INFO_5W; +alias _DRIVER_INFO_5W* PDRIVER_INFO_5W; +alias _DRIVER_INFO_5W* LPDRIVER_INFO_5W; + +// #ifdef UNICODE +alias DRIVER_INFO_5W DRIVER_INFO_5; +alias PDRIVER_INFO_5W PDRIVER_INFO_5; +alias LPDRIVER_INFO_5W LPDRIVER_INFO_5; +// #else +// ... +// #endif // UNICODE + +struct _DRIVER_INFO_6A { + DWORD cVersion; + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDriverPath; + LPSTR pDataFile; + LPSTR pConfigFile; + LPSTR pHelpFile; + LPSTR pDependentFiles; + LPSTR pMonitorName; + LPSTR pDefaultDataType; + LPSTR pszzPreviousNames; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + LPSTR pszMfgName; + LPSTR pszOEMUrl; + LPSTR pszHardwareID; + LPSTR pszProvider; +} +alias _DRIVER_INFO_6A DRIVER_INFO_6A; +alias _DRIVER_INFO_6A* PDRIVER_INFO_6A; +alias _DRIVER_INFO_6A* LPDRIVER_INFO_6A; + +struct _DRIVER_INFO_6W { + DWORD cVersion; + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDriverPath; + LPWSTR pDataFile; + LPWSTR pConfigFile; + LPWSTR pHelpFile; + LPWSTR pDependentFiles; + LPWSTR pMonitorName; + LPWSTR pDefaultDataType; + LPWSTR pszzPreviousNames; + FILETIME ftDriverDate; + DWORDLONG dwlDriverVersion; + LPWSTR pszMfgName; + LPWSTR pszOEMUrl; + LPWSTR pszHardwareID; + LPWSTR pszProvider; +} +alias _DRIVER_INFO_6W DRIVER_INFO_6W; +alias _DRIVER_INFO_6W* PDRIVER_INFO_6W; +alias _DRIVER_INFO_6W* LPDRIVER_INFO_6W; + +// #ifdef UNICODE +alias DRIVER_INFO_6W DRIVER_INFO_6; +alias PDRIVER_INFO_6W PDRIVER_INFO_6; +alias LPDRIVER_INFO_6W LPDRIVER_INFO_6; +// #else +// ... +// #endif // UNICODE + +enum : uint { DRIVER_KERNELMODE = 0x00000001 } +enum : uint { DRIVER_USERMODE = 0x00000002 } + +enum : uint { DPD_DELETE_UNUSED_FILES = 0x00000001 } +enum : uint { DPD_DELETE_SPECIFIC_VERSION = 0x00000002 } +enum : uint { DPD_DELETE_ALL_FILES = 0x00000004 } + +enum : uint { APD_STRICT_UPGRADE = 0x00000001 } +enum : uint { APD_STRICT_DOWNGRADE = 0x00000002 } +enum : uint { APD_COPY_ALL_FILES = 0x00000004 } +enum : uint { APD_COPY_NEW_FILES = 0x00000008 } +enum : uint { APD_COPY_FROM_DIRECTORY = 0x00000010 } + +struct _DOC_INFO_1A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; +} +alias _DOC_INFO_1A DOC_INFO_1A; +alias _DOC_INFO_1A* PDOC_INFO_1A; +alias _DOC_INFO_1A* LPDOC_INFO_1A; + +struct _DOC_INFO_1W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; +} +alias _DOC_INFO_1W DOC_INFO_1W; +alias _DOC_INFO_1W* PDOC_INFO_1W; +alias _DOC_INFO_1W* LPDOC_INFO_1W; + +// #ifdef UNICODE +alias DOC_INFO_1W DOC_INFO_1; +alias PDOC_INFO_1W PDOC_INFO_1; +alias LPDOC_INFO_1W LPDOC_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _FORM_INFO_1A { + DWORD Flags; + LPSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias _FORM_INFO_1A FORM_INFO_1A; +alias _FORM_INFO_1A* PFORM_INFO_1A; +alias _FORM_INFO_1A* LPFORM_INFO_1A; + +struct _FORM_INFO_1W { + DWORD Flags; + LPWSTR pName; + SIZEL Size; + RECTL ImageableArea; +} +alias _FORM_INFO_1W FORM_INFO_1W; +alias _FORM_INFO_1W* PFORM_INFO_1W; +alias _FORM_INFO_1W* LPFORM_INFO_1W; + +// #ifdef UNICODE +alias FORM_INFO_1W FORM_INFO_1; +alias PFORM_INFO_1W PFORM_INFO_1; +alias LPFORM_INFO_1W LPFORM_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _DOC_INFO_2A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias _DOC_INFO_2A DOC_INFO_2A; +alias _DOC_INFO_2A* PDOC_INFO_2A; +alias _DOC_INFO_2A* LPDOC_INFO_2A; + +struct _DOC_INFO_2W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwMode; + DWORD JobId; +} +alias _DOC_INFO_2W DOC_INFO_2W; +alias _DOC_INFO_2W* PDOC_INFO_2W; +alias _DOC_INFO_2W* LPDOC_INFO_2W; + +// #ifdef UNICODE +alias DOC_INFO_2W DOC_INFO_2; +alias PDOC_INFO_2W PDOC_INFO_2; +alias LPDOC_INFO_2W LPDOC_INFO_2; +// #else +// ... +// #endif // UNICODE + +enum : uint { DI_CHANNEL = 1 } + +enum : uint { DI_READ_SPOOL_JOB = 3 } + +struct _DOC_INFO_3A { + LPSTR pDocName; + LPSTR pOutputFile; + LPSTR pDatatype; + DWORD dwFlags; +} +alias _DOC_INFO_3A DOC_INFO_3A; +alias _DOC_INFO_3A* PDOC_INFO_3A; +alias _DOC_INFO_3A* LPDOC_INFO_3A; + +struct _DOC_INFO_3W { + LPWSTR pDocName; + LPWSTR pOutputFile; + LPWSTR pDatatype; + DWORD dwFlags; +} +alias _DOC_INFO_3W DOC_INFO_3W; +alias _DOC_INFO_3W* PDOC_INFO_3W; +alias _DOC_INFO_3W* LPDOC_INFO_3W; + +// #ifdef UNICODE +alias DOC_INFO_3W DOC_INFO_3; +alias PDOC_INFO_3W PDOC_INFO_3; +alias LPDOC_INFO_3W LPDOC_INFO_3; +// #else +// ... +// #endif // UNICODE + +enum : uint { DI_MEMORYMAP_WRITE = 0x00000001 } + +enum : uint { FORM_USER = 0x00000000 } +enum : uint { FORM_BUILTIN = 0x00000001 } +enum : uint { FORM_PRINTER = 0x00000002 } + +struct _PRINTPROCESSOR_INFO_1A { + LPSTR pName; +} +alias _PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1A; +alias _PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A; +alias _PRINTPROCESSOR_INFO_1A* LPPRINTPROCESSOR_INFO_1A; + +struct _PRINTPROCESSOR_INFO_1W { + LPWSTR pName; +} +alias _PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1W; +alias _PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W; +alias _PRINTPROCESSOR_INFO_1W* LPPRINTPROCESSOR_INFO_1W; + +// #ifdef UNICODE +alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1; +alias PPRINTPROCESSOR_INFO_1W PPRINTPROCESSOR_INFO_1; +alias LPPRINTPROCESSOR_INFO_1W LPPRINTPROCESSOR_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _PRINTPROCESSOR_CAPS_1 { + DWORD dwLevel; + DWORD dwNupOptions; + DWORD dwPageOrderFlags; + DWORD dwNumberOfCopies; +} +alias _PRINTPROCESSOR_CAPS_1 PRINTPROCESSOR_CAPS_1; +alias _PRINTPROCESSOR_CAPS_1* PPRINTPROCESSOR_CAPS_1; + +enum : uint { NORMAL_PRINT = 0x00000000 } +enum : uint { REVERSE_PRINT = 0x00000001 } + +struct _PORT_INFO_1A { + LPSTR pName; +} +alias _PORT_INFO_1A PORT_INFO_1A; +alias _PORT_INFO_1A* PPORT_INFO_1A; +alias _PORT_INFO_1A* LPPORT_INFO_1A; + +struct _PORT_INFO_1W { + LPWSTR pName; +} +alias _PORT_INFO_1W PORT_INFO_1W; +alias _PORT_INFO_1W* PPORT_INFO_1W; +alias _PORT_INFO_1W* LPPORT_INFO_1W; + +// #ifdef UNICODE +alias PORT_INFO_1W PORT_INFO_1; +alias PPORT_INFO_1W PPORT_INFO_1; +alias LPPORT_INFO_1W LPPORT_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _PORT_INFO_2A { + LPSTR pPortName; + LPSTR pMonitorName; + LPSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias _PORT_INFO_2A PORT_INFO_2A; +alias _PORT_INFO_2A* PPORT_INFO_2A; +alias _PORT_INFO_2A* LPPORT_INFO_2A; + +struct _PORT_INFO_2W { + LPWSTR pPortName; + LPWSTR pMonitorName; + LPWSTR pDescription; + DWORD fPortType; + DWORD Reserved; +} +alias _PORT_INFO_2W PORT_INFO_2W; +alias _PORT_INFO_2W* PPORT_INFO_2W; +alias _PORT_INFO_2W* LPPORT_INFO_2W; + +// #ifdef UNICODE +alias PORT_INFO_2W PORT_INFO_2; +alias PPORT_INFO_2W PPORT_INFO_2; +alias LPPORT_INFO_2W LPPORT_INFO_2; +// #else +// ... +// #endif // UNICODE + +enum : uint { PORT_TYPE_WRITE = 0x0001 } +enum : uint { PORT_TYPE_READ = 0x0002 } +enum : uint { PORT_TYPE_REDIRECTED = 0x0004 } +enum : uint { PORT_TYPE_NET_ATTACHED = 0x0008 } + +struct _PORT_INFO_3A { + DWORD dwStatus; + LPSTR pszStatus; + DWORD dwSeverity; +} +alias _PORT_INFO_3A PORT_INFO_3A; +alias _PORT_INFO_3A* PPORT_INFO_3A; +alias _PORT_INFO_3A* LPPORT_INFO_3A; + +struct _PORT_INFO_3W { + DWORD dwStatus; + LPWSTR pszStatus; + DWORD dwSeverity; +} +alias _PORT_INFO_3W PORT_INFO_3W; +alias _PORT_INFO_3W* PPORT_INFO_3W; +alias _PORT_INFO_3W* LPPORT_INFO_3W; + +// #ifdef UNICODE +alias PORT_INFO_3W PORT_INFO_3; +alias PPORT_INFO_3W PPORT_INFO_3; +alias LPPORT_INFO_3W LPPORT_INFO_3; +// #else +// ... +// #endif // UNICODE + +enum : uint { PORT_STATUS_TYPE_ERROR = 1 } +enum : uint { PORT_STATUS_TYPE_WARNING = 2 } +enum : uint { PORT_STATUS_TYPE_INFO = 3 } + +enum : uint { PORT_STATUS_OFFLINE = 1 } +enum : uint { PORT_STATUS_PAPER_JAM = 2 } +enum : uint { PORT_STATUS_PAPER_OUT = 3 } +enum : uint { PORT_STATUS_OUTPUT_BIN_FULL = 4 } +enum : uint { PORT_STATUS_PAPER_PROBLEM = 5 } +enum : uint { PORT_STATUS_NO_TONER = 6 } +enum : uint { PORT_STATUS_DOOR_OPEN = 7 } +enum : uint { PORT_STATUS_USER_INTERVENTION = 8 } +enum : uint { PORT_STATUS_OUT_OF_MEMORY = 9 } + +enum : uint { PORT_STATUS_TONER_LOW = 10 } + +enum : uint { PORT_STATUS_WARMING_UP = 11 } +enum : uint { PORT_STATUS_POWER_SAVE = 12 } + +struct _MONITOR_INFO_1A { + LPSTR pName; +} +alias _MONITOR_INFO_1A MONITOR_INFO_1A; +alias _MONITOR_INFO_1A* PMONITOR_INFO_1A; +alias _MONITOR_INFO_1A* LPMONITOR_INFO_1A; + +struct _MONITOR_INFO_1W { + LPWSTR pName; +} +alias _MONITOR_INFO_1W MONITOR_INFO_1W; +alias _MONITOR_INFO_1W* PMONITOR_INFO_1W; +alias _MONITOR_INFO_1W* LPMONITOR_INFO_1W; + +// #ifdef UNICODE +alias MONITOR_INFO_1W MONITOR_INFO_1; +alias PMONITOR_INFO_1W PMONITOR_INFO_1; +alias LPMONITOR_INFO_1W LPMONITOR_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _MONITOR_INFO_2A { + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; +} +alias _MONITOR_INFO_2A MONITOR_INFO_2A; +alias _MONITOR_INFO_2A* PMONITOR_INFO_2A; +alias _MONITOR_INFO_2A* LPMONITOR_INFO_2A; + +struct _MONITOR_INFO_2W { + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; +} +alias _MONITOR_INFO_2W MONITOR_INFO_2W; +alias _MONITOR_INFO_2W* PMONITOR_INFO_2W; +alias _MONITOR_INFO_2W* LPMONITOR_INFO_2W; + +// #ifdef UNICODE +alias MONITOR_INFO_2W MONITOR_INFO_2; +alias PMONITOR_INFO_2W PMONITOR_INFO_2; +alias LPMONITOR_INFO_2W LPMONITOR_INFO_2; +// #else +// ... +// #endif // UNICODE + +struct _DATATYPES_INFO_1A { + LPSTR pName; +} +alias _DATATYPES_INFO_1A DATATYPES_INFO_1A; +alias _DATATYPES_INFO_1A* PDATATYPES_INFO_1A; +alias _DATATYPES_INFO_1A* LPDATATYPES_INFO_1A; + +struct _DATATYPES_INFO_1W { + LPWSTR pName; +} +alias _DATATYPES_INFO_1W DATATYPES_INFO_1W; +alias _DATATYPES_INFO_1W* PDATATYPES_INFO_1W; +alias _DATATYPES_INFO_1W* LPDATATYPES_INFO_1W; + +// #ifdef UNICODE +alias DATATYPES_INFO_1W DATATYPES_INFO_1; +alias PDATATYPES_INFO_1W PDATATYPES_INFO_1; +alias LPDATATYPES_INFO_1W LPDATATYPES_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _PRINTER_DEFAULTSA { + LPSTR pDatatype; + LPDEVMODEA pDevMode; + ACCESS_MASK DesiredAccess; +} +alias _PRINTER_DEFAULTSA PRINTER_DEFAULTSA; +alias _PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA; +alias _PRINTER_DEFAULTSA* LPPRINTER_DEFAULTSA; + +struct _PRINTER_DEFAULTSW { + LPWSTR pDatatype; + LPDEVMODEW pDevMode; + ACCESS_MASK DesiredAccess; +} +alias _PRINTER_DEFAULTSW PRINTER_DEFAULTSW; +alias _PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW; +alias _PRINTER_DEFAULTSW* LPPRINTER_DEFAULTSW; + +// #ifdef UNICODE +alias PRINTER_DEFAULTSW PRINTER_DEFAULTS; +alias PPRINTER_DEFAULTSW PPRINTER_DEFAULTS; +alias LPPRINTER_DEFAULTSW LPPRINTER_DEFAULTS; +// #else +// ... +// #endif // UNICODE + +struct _PRINTER_ENUM_VALUESA { + LPSTR pValueName; + DWORD cbValueName; + DWORD dwType; + LPBYTE pData; + DWORD cbData; +} +alias _PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUESA; +alias _PRINTER_ENUM_VALUESA* PPRINTER_ENUM_VALUESA; +alias _PRINTER_ENUM_VALUESA* LPPRINTER_ENUM_VALUESA; + +struct _PRINTER_ENUM_VALUESW { + LPWSTR pValueName; + DWORD cbValueName; + DWORD dwType; + LPBYTE pData; + DWORD cbData; +} +alias _PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUESW; +alias _PRINTER_ENUM_VALUESW* PPRINTER_ENUM_VALUESW; +alias _PRINTER_ENUM_VALUESW* LPPRINTER_ENUM_VALUESW; + +// #ifdef UNICODE +alias PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUES; +alias PPRINTER_ENUM_VALUESW PPRINTER_ENUM_VALUES; +alias LPPRINTER_ENUM_VALUESW LPPRINTER_ENUM_VALUES; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export BOOL EnumPrintersA( + DWORD Flags, + LPSTR Name, + DWORD Level, + LPBYTE pPrinterEnum, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPrintersW( + DWORD Flags, + LPWSTR Name, + DWORD Level, + LPBYTE pPrinterEnum, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +alias EnumPrintersW EnumPrinters; +// #else +// #... +// #endif // !UNICODE + +enum : uint { PRINTER_ENUM_DEFAULT = 0x00000001 } +enum : uint { PRINTER_ENUM_LOCAL = 0x00000002 } +enum : uint { PRINTER_ENUM_CONNECTIONS = 0x00000004 } +enum : uint { PRINTER_ENUM_FAVORITE = 0x00000004 } +enum : uint { PRINTER_ENUM_NAME = 0x00000008 } +enum : uint { PRINTER_ENUM_REMOTE = 0x00000010 } +enum : uint { PRINTER_ENUM_SHARED = 0x00000020 } +enum : uint { PRINTER_ENUM_NETWORK = 0x00000040 } + +enum : uint { PRINTER_ENUM_EXPAND = 0x00004000 } +enum : uint { PRINTER_ENUM_CONTAINER = 0x00008000 } + +enum : uint { PRINTER_ENUM_ICONMASK = 0x00ff0000 } +enum : uint { PRINTER_ENUM_ICON1 = 0x00010000 } +enum : uint { PRINTER_ENUM_ICON2 = 0x00020000 } +enum : uint { PRINTER_ENUM_ICON3 = 0x00040000 } +enum : uint { PRINTER_ENUM_ICON4 = 0x00080000 } +enum : uint { PRINTER_ENUM_ICON5 = 0x00100000 } +enum : uint { PRINTER_ENUM_ICON6 = 0x00200000 } +enum : uint { PRINTER_ENUM_ICON7 = 0x00400000 } +enum : uint { PRINTER_ENUM_ICON8 = 0x00800000 } +enum : uint { PRINTER_ENUM_HIDE = 0x01000000 } + +enum : uint { SPOOL_FILE_PERSISTENT = 0x00000001 } +enum : uint { SPOOL_FILE_TEMPORARY = 0x00000002 } + +extern(Windows) export BOOL OpenPrinterA( + LPSTR pPrinterName, + LPHANDLE phPrinter, + LPPRINTER_DEFAULTSA pDefault +); +extern(Windows) export BOOL OpenPrinterW( + LPWSTR pPrinterName, + LPHANDLE phPrinter, + LPPRINTER_DEFAULTSW pDefault +); +// #ifdef UNICODE +alias OpenPrinterW OpenPrinter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ResetPrinterA( + HANDLE hPrinter, + LPPRINTER_DEFAULTSA pDefault +); +extern(Windows) export BOOL ResetPrinterW( + HANDLE hPrinter, + LPPRINTER_DEFAULTSW pDefault +); +// #ifdef UNICODE +alias ResetPrinterW ResetPrinter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetJobA( + HANDLE hPrinter, + DWORD JobId, + DWORD Level, + LPBYTE pJob, + DWORD Command +); +extern(Windows) export BOOL SetJobW( + HANDLE hPrinter, + DWORD JobId, + DWORD Level, + LPBYTE pJob, + DWORD Command +); +// #ifdef UNICODE +alias SetJobW SetJob; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetJobA( + HANDLE hPrinter, + DWORD JobId, + DWORD Level, + LPBYTE pJob, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetJobW( + HANDLE hPrinter, + DWORD JobId, + DWORD Level, + LPBYTE pJob, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias GetJobW GetJob; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumJobsA( + HANDLE hPrinter, + DWORD FirstJob, + DWORD NoJobs, + DWORD Level, + LPBYTE pJob, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumJobsW( + HANDLE hPrinter, + DWORD FirstJob, + DWORD NoJobs, + DWORD Level, + LPBYTE pJob, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +alias EnumJobsW EnumJobs; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE AddPrinterA( + LPSTR pName, + DWORD Level, + LPBYTE pPrinter +); +extern(Windows) export HANDLE AddPrinterW( + LPWSTR pName, + DWORD Level, + LPBYTE pPrinter +); +// #ifdef UNICODE +alias AddPrinterW AddPrinter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL SetPrinterA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pPrinter, + DWORD Command +); +extern(Windows) export BOOL SetPrinterW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pPrinter, + DWORD Command +); +// #ifdef UNICODE +alias SetPrinterW SetPrinter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrinterA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pPrinter, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetPrinterW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pPrinter, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias GetPrinterW GetPrinter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AddPrinterDriverA( + LPSTR pName, + DWORD Level, + LPBYTE pDriverInfo +); +extern(Windows) export BOOL AddPrinterDriverW( + LPWSTR pName, + DWORD Level, + LPBYTE pDriverInfo +); +// #ifdef UNICODE +alias AddPrinterDriverW AddPrinterDriver; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AddPrinterDriverExA( + LPSTR pName, + DWORD Level, + LPBYTE pDriverInfo, + DWORD dwFileCopyFlags +); +extern(Windows) export BOOL AddPrinterDriverExW( + LPWSTR pName, + DWORD Level, + LPBYTE pDriverInfo, + DWORD dwFileCopyFlags +); +// #ifdef UNICODE +alias AddPrinterDriverExW AddPrinterDriverEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumPrinterDriversA( + LPSTR pName, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPrinterDriversW( + LPWSTR pName, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +alias EnumPrinterDriversW EnumPrinterDrivers; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrinterDriverA( + HANDLE hPrinter, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetPrinterDriverW( + HANDLE hPrinter, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pDriverInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias GetPrinterDriverW GetPrinterDriver; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrinterDriverDirectoryA( + LPSTR pName, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pDriverDirectory, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetPrinterDriverDirectoryW( + LPWSTR pName, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pDriverDirectory, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrinterDriverA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pDriverName +); +extern(Windows) export BOOL DeletePrinterDriverW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pDriverName +); +// #ifdef UNICODE +alias DeletePrinterDriverW DeletePrinterDriver; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrinterDriverExA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pDriverName, + DWORD dwDeleteFlag, + DWORD dwVersionFlag +); +extern(Windows) export BOOL DeletePrinterDriverExW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pDriverName, + DWORD dwDeleteFlag, + DWORD dwVersionFlag +); +// #ifdef UNICODE +alias DeletePrinterDriverExW DeletePrinterDriverEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AddPrintProcessorA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pPathName, + LPSTR pPrintProcessorName +); +extern(Windows) export BOOL AddPrintProcessorW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pPathName, + LPWSTR pPrintProcessorName +); +// #ifdef UNICODE +alias AddPrintProcessorW AddPrintProcessor; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumPrintProcessorsA( + LPSTR pName, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pPrintProcessorInfo, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPrintProcessorsW( + LPWSTR pName, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pPrintProcessorInfo, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +alias EnumPrintProcessorsW EnumPrintProcessors; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetPrintProcessorDirectoryA( + LPSTR pName, + LPSTR pEnvironment, + DWORD Level, + LPBYTE pPrintProcessorInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetPrintProcessorDirectoryW( + LPWSTR pName, + LPWSTR pEnvironment, + DWORD Level, + LPBYTE pPrintProcessorInfo, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumPrintProcessorDatatypesA( + LPSTR pName, + LPSTR pPrintProcessorName, + DWORD Level, + LPBYTE pDatatypes, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPrintProcessorDatatypesW( + LPWSTR pName, + LPWSTR pPrintProcessorName, + DWORD Level, + LPBYTE pDatatypes, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrintProcessorA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pPrintProcessorName +); +extern(Windows) export BOOL DeletePrintProcessorW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pPrintProcessorName +); +// #ifdef UNICODE +alias DeletePrintProcessorW DeletePrintProcessor; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD StartDocPrinterA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pDocInfo +); +extern(Windows) export DWORD StartDocPrinterW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pDocInfo +); +// #ifdef UNICODE +alias StartDocPrinterW StartDocPrinter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL StartPagePrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL WritePrinter( + HANDLE hPrinter, + LPVOID pBuf, + DWORD cbBuf, + LPDWORD pcWritten +); + +extern(Windows) export BOOL FlushPrinter( + HANDLE hPrinter, + LPVOID pBuf, + DWORD cbBuf, + LPDWORD pcWritten, + DWORD cSleep +); + +extern(Windows) export BOOL EndPagePrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL AbortPrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL ReadPrinter( + HANDLE hPrinter, + LPVOID pBuf, + DWORD cbBuf, + LPDWORD pNoBytesRead +); + +extern(Windows) export BOOL EndDocPrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL AddJobA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pData, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL AddJobW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pData, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias AddJobW AddJob; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ScheduleJob( + HANDLE hPrinter, + DWORD JobId +); + +extern(Windows) export BOOL PrinterProperties( + HWND hWnd, + HANDLE hPrinter +); + +extern(Windows) export LONG DocumentPropertiesA( + HWND hWnd, + HANDLE hPrinter, + LPSTR pDeviceName, + PDEVMODEA pDevModeOutput, + PDEVMODEA pDevModeInput, + DWORD fMode +); +extern(Windows) export LONG DocumentPropertiesW( + HWND hWnd, + HANDLE hPrinter, + LPWSTR pDeviceName, + PDEVMODEW pDevModeOutput, + PDEVMODEW pDevModeInput, + DWORD fMode +); +// #ifdef UNICODE +alias DocumentPropertiesW DocumentProperties; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG AdvancedDocumentPropertiesA( + HWND hWnd, + HANDLE hPrinter, + LPSTR pDeviceName, + PDEVMODEA pDevModeOutput, + PDEVMODEA pDevModeInput +); +extern(Windows) export LONG AdvancedDocumentPropertiesW( + HWND hWnd, + HANDLE hPrinter, + LPWSTR pDeviceName, + PDEVMODEW pDevModeOutput, + PDEVMODEW pDevModeInput +); +// #ifdef UNICODE +alias AdvancedDocumentPropertiesW AdvancedDocumentProperties; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrinterDataA( + HANDLE hPrinter, + LPSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded +); +extern(Windows) export DWORD GetPrinterDataW( + HANDLE hPrinter, + LPWSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias GetPrinterDataW GetPrinterData; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetPrinterDataExA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded +); +extern(Windows) export DWORD GetPrinterDataExW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName, + LPDWORD pType, + LPBYTE pData, + DWORD nSize, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias GetPrinterDataExW GetPrinterDataEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD EnumPrinterDataA( + HANDLE hPrinter, + DWORD dwIndex, + LPSTR pValueName, + DWORD cbValueName, + LPDWORD pcbValueName, + LPDWORD pType, + LPBYTE pData, + DWORD cbData, + LPDWORD pcbData +); +extern(Windows) export DWORD EnumPrinterDataW( + HANDLE hPrinter, + DWORD dwIndex, + LPWSTR pValueName, + DWORD cbValueName, + LPDWORD pcbValueName, + LPDWORD pType, + LPBYTE pData, + DWORD cbData, + LPDWORD pcbData +); +// #ifdef UNICODE +alias EnumPrinterDataW EnumPrinterData; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD EnumPrinterDataExA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPBYTE pEnumValues, + DWORD cbEnumValues, + LPDWORD pcbEnumValues, + LPDWORD pnEnumValues +); +extern(Windows) export DWORD EnumPrinterDataExW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPBYTE pEnumValues, + DWORD cbEnumValues, + LPDWORD pcbEnumValues, + LPDWORD pnEnumValues +); +// #ifdef UNICODE +alias EnumPrinterDataExW EnumPrinterDataEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD EnumPrinterKeyA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPSTR pSubkey, + DWORD cbSubkey, + LPDWORD pcbSubkey +); +extern(Windows) export DWORD EnumPrinterKeyW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPWSTR pSubkey, + DWORD cbSubkey, + LPDWORD pcbSubkey +); +// #ifdef UNICODE +alias EnumPrinterKeyW EnumPrinterKey; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD SetPrinterDataA( + HANDLE hPrinter, + LPSTR pValueName, + DWORD Type, + LPBYTE pData, + DWORD cbData +); +extern(Windows) export DWORD SetPrinterDataW( + HANDLE hPrinter, + LPWSTR pValueName, + DWORD Type, + LPBYTE pData, + DWORD cbData +); +// #ifdef UNICODE +alias SetPrinterDataW SetPrinterData; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD SetPrinterDataExA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName, + DWORD Type, + LPBYTE pData, + DWORD cbData +); +extern(Windows) export DWORD SetPrinterDataExW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName, + DWORD Type, + LPBYTE pData, + DWORD cbData +); +// #ifdef UNICODE +alias SetPrinterDataExW SetPrinterDataEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD DeletePrinterDataA( + HANDLE hPrinter, + LPSTR pValueName +); +extern(Windows) export DWORD DeletePrinterDataW( + HANDLE hPrinter, + LPWSTR pValueName +); +// #ifdef UNICODE +alias DeletePrinterDataW DeletePrinterData; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD DeletePrinterDataExA( + HANDLE hPrinter, + LPCSTR pKeyName, + LPCSTR pValueName +); +extern(Windows) export DWORD DeletePrinterDataExW( + HANDLE hPrinter, + LPCWSTR pKeyName, + LPCWSTR pValueName +); +// #ifdef UNICODE +alias DeletePrinterDataExW DeletePrinterDataEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD DeletePrinterKeyA( + HANDLE hPrinter, + LPCSTR pKeyName +); +extern(Windows) export DWORD DeletePrinterKeyW( + HANDLE hPrinter, + LPCWSTR pKeyName +); +// #ifdef UNICODE +alias DeletePrinterKeyW DeletePrinterKey; +// #else +// #... +// #endif // !UNICODE + +enum : uint { PRINTER_NOTIFY_TYPE = 0x00 } +enum : uint { JOB_NOTIFY_TYPE = 0x01 } + +enum : uint { PRINTER_NOTIFY_FIELD_SERVER_NAME = 0x00 } +enum : uint { PRINTER_NOTIFY_FIELD_PRINTER_NAME = 0x01 } +enum : uint { PRINTER_NOTIFY_FIELD_SHARE_NAME = 0x02 } +enum : uint { PRINTER_NOTIFY_FIELD_PORT_NAME = 0x03 } +enum : uint { PRINTER_NOTIFY_FIELD_DRIVER_NAME = 0x04 } +enum : uint { PRINTER_NOTIFY_FIELD_COMMENT = 0x05 } +enum : uint { PRINTER_NOTIFY_FIELD_LOCATION = 0x06 } +enum : uint { PRINTER_NOTIFY_FIELD_DEVMODE = 0x07 } +enum : uint { PRINTER_NOTIFY_FIELD_SEPFILE = 0x08 } +enum : uint { PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR = 0x09 } +enum : uint { PRINTER_NOTIFY_FIELD_PARAMETERS = 0x0A } +enum : uint { PRINTER_NOTIFY_FIELD_DATATYPE = 0x0B } +enum : uint { PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR = 0x0C } +enum : uint { PRINTER_NOTIFY_FIELD_ATTRIBUTES = 0x0D } +enum : uint { PRINTER_NOTIFY_FIELD_PRIORITY = 0x0E } +enum : uint { PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY = 0x0F } +enum : uint { PRINTER_NOTIFY_FIELD_START_TIME = 0x10 } +enum : uint { PRINTER_NOTIFY_FIELD_UNTIL_TIME = 0x11 } +enum : uint { PRINTER_NOTIFY_FIELD_STATUS = 0x12 } +enum : uint { PRINTER_NOTIFY_FIELD_STATUS_STRING = 0x13 } +enum : uint { PRINTER_NOTIFY_FIELD_CJOBS = 0x14 } +enum : uint { PRINTER_NOTIFY_FIELD_AVERAGE_PPM = 0x15 } +enum : uint { PRINTER_NOTIFY_FIELD_TOTAL_PAGES = 0x16 } +enum : uint { PRINTER_NOTIFY_FIELD_PAGES_PRINTED = 0x17 } +enum : uint { PRINTER_NOTIFY_FIELD_TOTAL_BYTES = 0x18 } +enum : uint { PRINTER_NOTIFY_FIELD_BYTES_PRINTED = 0x19 } +enum : uint { PRINTER_NOTIFY_FIELD_OBJECT_GUID = 0x1A } + +enum : uint { JOB_NOTIFY_FIELD_PRINTER_NAME = 0x00 } +enum : uint { JOB_NOTIFY_FIELD_MACHINE_NAME = 0x01 } +enum : uint { JOB_NOTIFY_FIELD_PORT_NAME = 0x02 } +enum : uint { JOB_NOTIFY_FIELD_USER_NAME = 0x03 } +enum : uint { JOB_NOTIFY_FIELD_NOTIFY_NAME = 0x04 } +enum : uint { JOB_NOTIFY_FIELD_DATATYPE = 0x05 } +enum : uint { JOB_NOTIFY_FIELD_PRINT_PROCESSOR = 0x06 } +enum : uint { JOB_NOTIFY_FIELD_PARAMETERS = 0x07 } +enum : uint { JOB_NOTIFY_FIELD_DRIVER_NAME = 0x08 } +enum : uint { JOB_NOTIFY_FIELD_DEVMODE = 0x09 } +enum : uint { JOB_NOTIFY_FIELD_STATUS = 0x0A } +enum : uint { JOB_NOTIFY_FIELD_STATUS_STRING = 0x0B } +enum : uint { JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR = 0x0C } +enum : uint { JOB_NOTIFY_FIELD_DOCUMENT = 0x0D } +enum : uint { JOB_NOTIFY_FIELD_PRIORITY = 0x0E } +enum : uint { JOB_NOTIFY_FIELD_POSITION = 0x0F } +enum : uint { JOB_NOTIFY_FIELD_SUBMITTED = 0x10 } +enum : uint { JOB_NOTIFY_FIELD_START_TIME = 0x11 } +enum : uint { JOB_NOTIFY_FIELD_UNTIL_TIME = 0x12 } +enum : uint { JOB_NOTIFY_FIELD_TIME = 0x13 } +enum : uint { JOB_NOTIFY_FIELD_TOTAL_PAGES = 0x14 } +enum : uint { JOB_NOTIFY_FIELD_PAGES_PRINTED = 0x15 } +enum : uint { JOB_NOTIFY_FIELD_TOTAL_BYTES = 0x16 } +enum : uint { JOB_NOTIFY_FIELD_BYTES_PRINTED = 0x17 } + +struct _PRINTER_NOTIFY_OPTIONS_TYPE { + WORD Type; + WORD Reserved0; + DWORD Reserved1; + DWORD Reserved2; + DWORD Count; + PWORD pFields; +} +alias _PRINTER_NOTIFY_OPTIONS_TYPE PRINTER_NOTIFY_OPTIONS_TYPE; +alias _PRINTER_NOTIFY_OPTIONS_TYPE* PPRINTER_NOTIFY_OPTIONS_TYPE; +alias _PRINTER_NOTIFY_OPTIONS_TYPE* LPPRINTER_NOTIFY_OPTIONS_TYPE; + +enum : uint { PRINTER_NOTIFY_OPTIONS_REFRESH = 0x01 } + +struct _PRINTER_NOTIFY_OPTIONS { + DWORD Version; + DWORD Flags; + DWORD Count; + PPRINTER_NOTIFY_OPTIONS_TYPE pTypes; +} +alias _PRINTER_NOTIFY_OPTIONS PRINTER_NOTIFY_OPTIONS; +alias _PRINTER_NOTIFY_OPTIONS* PPRINTER_NOTIFY_OPTIONS; +alias _PRINTER_NOTIFY_OPTIONS* LPPRINTER_NOTIFY_OPTIONS; + +enum : uint { PRINTER_NOTIFY_INFO_DISCARDED = 0x01 } + +struct _PRINTER_NOTIFY_INFO_DATA { + WORD Type; + WORD Field; + DWORD Reserved; + DWORD Id; +union { + DWORD adwData[2]; +struct { + DWORD cbBuf; + LPVOID pBuf; +} + +} + +} +alias _PRINTER_NOTIFY_INFO_DATA PRINTER_NOTIFY_INFO_DATA; +alias _PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA; +alias _PRINTER_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 PRINTER_NOTIFY_INFO; +alias _PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO; +alias _PRINTER_NOTIFY_INFO* LPPRINTER_NOTIFY_INFO; + +struct _BINARY_CONTAINER { + DWORD cbBuf; + LPBYTE pData; +} +alias _BINARY_CONTAINER BINARY_CONTAINER; +alias _BINARY_CONTAINER* PBINARY_CONTAINER; + +struct _BIDI_DATA { + DWORD dwBidiType; +union { + BOOL bData; + LONG iData; + LPWSTR sData; + FLOAT fData; + BINARY_CONTAINER biData; +} + +} +alias _BIDI_DATA BIDI_DATA; +alias _BIDI_DATA* PBIDI_DATA; +alias _BIDI_DATA* LPBIDI_DATA; + +struct _BIDI_REQUEST_DATA { + DWORD dwReqNumber; + LPWSTR pSchema; + BIDI_DATA data; +} +alias _BIDI_REQUEST_DATA BIDI_REQUEST_DATA; +alias _BIDI_REQUEST_DATA* PBIDI_REQUEST_DATA; +alias _BIDI_REQUEST_DATA* LPBIDI_REQUEST_DATA; + +struct _BIDI_REQUEST_CONTAINER { + DWORD Version; + DWORD Flags; + DWORD Count; + BIDI_REQUEST_DATA aData[ 1 ]; +} +alias _BIDI_REQUEST_CONTAINER BIDI_REQUEST_CONTAINER; +alias _BIDI_REQUEST_CONTAINER* PBIDI_REQUEST_CONTAINER; +alias _BIDI_REQUEST_CONTAINER* LPBIDI_REQUEST_CONTAINER; + +struct _BIDI_RESPONSE_DATA { + DWORD dwResult; + DWORD dwReqNumber; + LPWSTR pSchema; + BIDI_DATA data; +} +alias _BIDI_RESPONSE_DATA BIDI_RESPONSE_DATA; +alias _BIDI_RESPONSE_DATA* PBIDI_RESPONSE_DATA; +alias _BIDI_RESPONSE_DATA* LPBIDI_RESPONSE_DATA; + +struct _BIDI_RESPONSE_CONTAINER { + DWORD Version; + DWORD Flags; + DWORD Count; + BIDI_RESPONSE_DATA aData[ 1 ]; +} +alias _BIDI_RESPONSE_CONTAINER BIDI_RESPONSE_CONTAINER; +alias _BIDI_RESPONSE_CONTAINER* PBIDI_RESPONSE_CONTAINER; +alias _BIDI_RESPONSE_CONTAINER* LPBIDI_RESPONSE_CONTAINER; + +const wchar[] BIDI_ACTION_ENUM_SCHEMA = "EnumSchema"; +const wchar[] BIDI_ACTION_GET = "Get"; +const wchar[] BIDI_ACTION_SET = "Set"; +const wchar[] BIDI_ACTION_GET_ALL = "GetAll"; + +enum _0 { + BIDI_NULL = 0, + BIDI_INT = 1, + BIDI_FLOAT = 2, + BIDI_BOOL = 3, + BIDI_STRING = 4, + BIDI_TEXT = 5, + BIDI_ENUM = 6, + BIDI_BLOB = 7, +} +alias _0 BIDI_TYPE; + +enum : uint { BIDI_ACCESS_ADMINISTRATOR = 0x1 } +enum : uint { BIDI_ACCESS_USER = 0x2 } + +enum : uint { ERROR_BIDI_STATUS_OK = 0 } +alias ERROR_NOT_SUPPORTED ERROR_BIDI_NOT_SUPPORTED; + +enum : uint { ERROR_BIDI_ERROR_BASE = 13000 } +const uint ERROR_BIDI_STATUS_WARNING = ERROR_BIDI_ERROR_BASE + 1; +const uint ERROR_BIDI_SCHEMA_READ_ONLY = ERROR_BIDI_ERROR_BASE + 2; +const uint ERROR_BIDI_SERVER_OFFLINE = ERROR_BIDI_ERROR_BASE + 3; +const uint ERROR_BIDI_DEVICE_OFFLINE = ERROR_BIDI_ERROR_BASE + 4; +const uint ERROR_BIDI_SCHEMA_NOT_SUPPORTED = ERROR_BIDI_ERROR_BASE + 5; + +extern(Windows) export DWORD WaitForPrinterChange( + HANDLE hPrinter, + DWORD Flags +); + +extern(Windows) export HANDLE FindFirstPrinterChangeNotification( + HANDLE hPrinter, + DWORD fdwFlags, + DWORD fdwOptions, + LPVOID pPrinterNotifyOptions +); + +extern(Windows) export BOOL FindNextPrinterChangeNotification( + HANDLE hChange, + PDWORD pdwChange, + LPVOID pvReserved, + LPVOID *ppPrinterNotifyInfo +); + +extern(Windows) export BOOL FreePrinterNotifyInfo( + PPRINTER_NOTIFY_INFO pPrinterNotifyInfo +); + +extern(Windows) export BOOL FindClosePrinterChangeNotification( + HANDLE hChange +); + +enum : uint { PRINTER_CHANGE_ADD_PRINTER = 0x00000001 } +enum : uint { PRINTER_CHANGE_SET_PRINTER = 0x00000002 } +enum : uint { PRINTER_CHANGE_DELETE_PRINTER = 0x00000004 } +enum : uint { PRINTER_CHANGE_FAILED_CONNECTION_PRINTER = 0x00000008 } +enum : uint { PRINTER_CHANGE_PRINTER = 0x000000FF } +enum : uint { PRINTER_CHANGE_ADD_JOB = 0x00000100 } +enum : uint { PRINTER_CHANGE_SET_JOB = 0x00000200 } +enum : uint { PRINTER_CHANGE_DELETE_JOB = 0x00000400 } +enum : uint { PRINTER_CHANGE_WRITE_JOB = 0x00000800 } +enum : uint { PRINTER_CHANGE_JOB = 0x0000FF00 } +enum : uint { PRINTER_CHANGE_ADD_FORM = 0x00010000 } +enum : uint { PRINTER_CHANGE_SET_FORM = 0x00020000 } +enum : uint { PRINTER_CHANGE_DELETE_FORM = 0x00040000 } +enum : uint { PRINTER_CHANGE_FORM = 0x00070000 } +enum : uint { PRINTER_CHANGE_ADD_PORT = 0x00100000 } +enum : uint { PRINTER_CHANGE_CONFIGURE_PORT = 0x00200000 } +enum : uint { PRINTER_CHANGE_DELETE_PORT = 0x00400000 } +enum : uint { PRINTER_CHANGE_PORT = 0x00700000 } +enum : uint { PRINTER_CHANGE_ADD_PRINT_PROCESSOR = 0x01000000 } +enum : uint { PRINTER_CHANGE_DELETE_PRINT_PROCESSOR = 0x04000000 } +enum : uint { PRINTER_CHANGE_PRINT_PROCESSOR = 0x07000000 } +enum : uint { PRINTER_CHANGE_ADD_PRINTER_DRIVER = 0x10000000 } +enum : uint { PRINTER_CHANGE_SET_PRINTER_DRIVER = 0x20000000 } +enum : uint { PRINTER_CHANGE_DELETE_PRINTER_DRIVER = 0x40000000 } +enum : uint { PRINTER_CHANGE_PRINTER_DRIVER = 0x70000000 } +enum : uint { PRINTER_CHANGE_TIMEOUT = 0x80000000 } +enum : uint { PRINTER_CHANGE_ALL = 0x7777FFFF } + +extern(Windows) export DWORD PrinterMessageBoxA( + HANDLE hPrinter, + DWORD Error, + HWND hWnd, + LPSTR pText, + LPSTR pCaption, + DWORD dwType +); +extern(Windows) export DWORD PrinterMessageBoxW( + HANDLE hPrinter, + DWORD Error, + HWND hWnd, + LPWSTR pText, + LPWSTR pCaption, + DWORD dwType +); +// #ifdef UNICODE +alias PrinterMessageBoxW PrinterMessageBox; +// #else +// #... +// #endif // !UNICODE + +enum : uint { PRINTER_ERROR_INFORMATION = 0x80000000 } +enum : uint { PRINTER_ERROR_WARNING = 0x40000000 } +enum : uint { PRINTER_ERROR_SEVERE = 0x20000000 } + +enum : uint { PRINTER_ERROR_OUTOFPAPER = 0x00000001 } +enum : uint { PRINTER_ERROR_JAM = 0x00000002 } +enum : uint { PRINTER_ERROR_OUTOFTONER = 0x00000004 } + +extern(Windows) export BOOL ClosePrinter( + HANDLE hPrinter +); + +extern(Windows) export BOOL AddFormA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pForm +); +extern(Windows) export BOOL AddFormW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pForm +); +// #ifdef UNICODE +alias AddFormW AddForm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeleteFormA( + HANDLE hPrinter, + LPSTR pFormName +); +extern(Windows) export BOOL DeleteFormW( + HANDLE hPrinter, + LPWSTR pFormName +); +// #ifdef UNICODE +alias DeleteFormW DeleteForm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetFormA( + HANDLE hPrinter, + LPSTR pFormName, + DWORD Level, + LPBYTE pForm, + DWORD cbBuf, + LPDWORD pcbNeeded +); +extern(Windows) export BOOL GetFormW( + HANDLE hPrinter, + LPWSTR pFormName, + DWORD Level, + LPBYTE pForm, + DWORD cbBuf, + LPDWORD pcbNeeded +); +// #ifdef UNICODE +alias GetFormW GetForm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetFormA( + HANDLE hPrinter, + LPSTR pFormName, + DWORD Level, + LPBYTE pForm +); +extern(Windows) export BOOL SetFormW( + HANDLE hPrinter, + LPWSTR pFormName, + DWORD Level, + LPBYTE pForm +); +// #ifdef UNICODE +alias SetFormW SetForm; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumFormsA( + HANDLE hPrinter, + DWORD Level, + LPBYTE pForm, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumFormsW( + HANDLE hPrinter, + DWORD Level, + LPBYTE pForm, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +alias EnumFormsW EnumForms; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumMonitorsA( + LPSTR pName, + DWORD Level, + LPBYTE pMonitors, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumMonitorsW( + LPWSTR pName, + DWORD Level, + LPBYTE pMonitors, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +alias EnumMonitorsW EnumMonitors; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AddMonitorA( + LPSTR pName, + DWORD Level, + LPBYTE pMonitors +); +extern(Windows) export BOOL AddMonitorW( + LPWSTR pName, + DWORD Level, + LPBYTE pMonitors +); +// #ifdef UNICODE +alias AddMonitorW AddMonitor; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeleteMonitorA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pMonitorName +); +extern(Windows) export BOOL DeleteMonitorW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pMonitorName +); +// #ifdef UNICODE +alias DeleteMonitorW DeleteMonitor; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumPortsA( + LPSTR pName, + DWORD Level, + LPBYTE pPorts, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +extern(Windows) export BOOL EnumPortsW( + LPWSTR pName, + DWORD Level, + LPBYTE pPorts, + DWORD cbBuf, + LPDWORD pcbNeeded, + LPDWORD pcReturned +); +// #ifdef UNICODE +alias EnumPortsW EnumPorts; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AddPortA( + LPSTR pName, + HWND hWnd, + LPSTR pMonitorName +); +extern(Windows) export BOOL AddPortW( + LPWSTR pName, + HWND hWnd, + LPWSTR pMonitorName +); +// #ifdef UNICODE +alias AddPortW AddPort; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ConfigurePortA( + LPSTR pName, + HWND hWnd, + LPSTR pPortName +); +extern(Windows) export BOOL ConfigurePortW( + LPWSTR pName, + HWND hWnd, + LPWSTR pPortName +); +// #ifdef UNICODE +alias ConfigurePortW ConfigurePort; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePortA( + LPSTR pName, + HWND hWnd, + LPSTR pPortName +); +extern(Windows) export BOOL DeletePortW( + LPWSTR pName, + HWND hWnd, + LPWSTR pPortName +); +// #ifdef UNICODE +alias DeletePortW DeletePort; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL XcvDataW( + HANDLE hXcv, + PCWSTR pszDataName, + PBYTE pInputData, + DWORD cbInputData, + PBYTE pOutputData, + DWORD cbOutputData, + PDWORD pcbOutputNeeded, + PDWORD pdwStatus +); +alias XcvDataW XcvData; + +extern(Windows) export BOOL GetDefaultPrinterA( + LPSTR pszBuffer, + LPDWORD pcchBuffer + ); +extern(Windows) export BOOL GetDefaultPrinterW( + LPWSTR pszBuffer, + LPDWORD pcchBuffer + ); +// #ifdef UNICODE +alias GetDefaultPrinterW GetDefaultPrinter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetDefaultPrinterA( + LPCSTR pszPrinter + ); +extern(Windows) export BOOL SetDefaultPrinterW( + LPCWSTR pszPrinter + ); +// #ifdef UNICODE +alias SetDefaultPrinterW SetDefaultPrinter; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetPortA( + LPSTR pName, + LPSTR pPortName, + DWORD dwLevel, + LPBYTE pPortInfo +); +extern(Windows) export BOOL SetPortW( + LPWSTR pName, + LPWSTR pPortName, + DWORD dwLevel, + LPBYTE pPortInfo +); +// #ifdef UNICODE +alias SetPortW SetPort; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AddPrinterConnectionA( + LPSTR pName +); +extern(Windows) export BOOL AddPrinterConnectionW( + LPWSTR pName +); +// #ifdef UNICODE +alias AddPrinterConnectionW AddPrinterConnection; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrinterConnectionA( + LPSTR pName +); +extern(Windows) export BOOL DeletePrinterConnectionW( + LPWSTR pName +); +// #ifdef UNICODE +alias DeletePrinterConnectionW DeletePrinterConnection; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE ConnectToPrinterDlg( + HWND hwnd, + DWORD Flags +); + +struct _PROVIDOR_INFO_1A { + LPSTR pName; + LPSTR pEnvironment; + LPSTR pDLLName; +} +alias _PROVIDOR_INFO_1A PROVIDOR_INFO_1A; +alias _PROVIDOR_INFO_1A* PPROVIDOR_INFO_1A; +alias _PROVIDOR_INFO_1A* LPPROVIDOR_INFO_1A; + +struct _PROVIDOR_INFO_1W { + LPWSTR pName; + LPWSTR pEnvironment; + LPWSTR pDLLName; +} +alias _PROVIDOR_INFO_1W PROVIDOR_INFO_1W; +alias _PROVIDOR_INFO_1W* PPROVIDOR_INFO_1W; +alias _PROVIDOR_INFO_1W* LPPROVIDOR_INFO_1W; + +// #ifdef UNICODE +alias PROVIDOR_INFO_1W PROVIDOR_INFO_1; +alias PPROVIDOR_INFO_1W PPROVIDOR_INFO_1; +alias LPPROVIDOR_INFO_1W LPPROVIDOR_INFO_1; +// #else +// ... +// #endif // UNICODE + +struct _PROVIDOR_INFO_2A { + LPSTR pOrder; +} +alias _PROVIDOR_INFO_2A PROVIDOR_INFO_2A; +alias _PROVIDOR_INFO_2A* PPROVIDOR_INFO_2A; +alias _PROVIDOR_INFO_2A* LPPROVIDOR_INFO_2A; + +struct _PROVIDOR_INFO_2W { + LPWSTR pOrder; +} +alias _PROVIDOR_INFO_2W PROVIDOR_INFO_2W; +alias _PROVIDOR_INFO_2W* PPROVIDOR_INFO_2W; +alias _PROVIDOR_INFO_2W* LPPROVIDOR_INFO_2W; + +// #ifdef UNICODE +alias PROVIDOR_INFO_2W PROVIDOR_INFO_2; +alias PPROVIDOR_INFO_2W PPROVIDOR_INFO_2; +alias LPPROVIDOR_INFO_2W LPPROVIDOR_INFO_2; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export BOOL AddPrintProvidorA( + LPSTR pName, + DWORD level, + LPBYTE pProvidorInfo +); +extern(Windows) export BOOL AddPrintProvidorW( + LPWSTR pName, + DWORD level, + LPBYTE pProvidorInfo +); +// #ifdef UNICODE +alias AddPrintProvidorW AddPrintProvidor; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DeletePrintProvidorA( + LPSTR pName, + LPSTR pEnvironment, + LPSTR pPrintProvidorName +); +extern(Windows) export BOOL DeletePrintProvidorW( + LPWSTR pName, + LPWSTR pEnvironment, + LPWSTR pPrintProvidorName +); +// #ifdef UNICODE +alias DeletePrintProvidorW DeletePrintProvidor; +// #else +// #... +// #endif // !UNICODE + +const TCHAR[] SPLREG_DEFAULT_SPOOL_DIRECTORY = "DefaultSpoolDirectory"; +const TCHAR[] SPLREG_PORT_THREAD_PRIORITY_DEFAULT = "PortThreadPriorityDefault"; +const TCHAR[] SPLREG_PORT_THREAD_PRIORITY = "PortThreadPriority"; +const TCHAR[] SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT = "SchedulerThreadPriorityDefault"; +const TCHAR[] SPLREG_SCHEDULER_THREAD_PRIORITY = "SchedulerThreadPriority"; +const TCHAR[] SPLREG_BEEP_ENABLED = "BeepEnabled"; +const TCHAR[] SPLREG_NET_POPUP = "NetPopup"; +const TCHAR[] SPLREG_RETRY_POPUP = "RetryPopup"; +const TCHAR[] SPLREG_NET_POPUP_TO_COMPUTER = "NetPopupToComputer"; +const TCHAR[] SPLREG_EVENT_LOG = "EventLog"; +const TCHAR[] SPLREG_MAJOR_VERSION = "MajorVersion"; +const TCHAR[] SPLREG_MINOR_VERSION = "MinorVersion"; +const TCHAR[] SPLREG_ARCHITECTURE = "Architecture"; +const TCHAR[] SPLREG_OS_VERSION = "OSVersion"; +const TCHAR[] SPLREG_OS_VERSIONEX = "OSVersionEx"; +const TCHAR[] SPLREG_DS_PRESENT = "DsPresent"; +const TCHAR[] SPLREG_DS_PRESENT_FOR_USER = "DsPresentForUser"; +const TCHAR[] SPLREG_REMOTE_FAX = "RemoteFax"; +const TCHAR[] SPLREG_RESTART_JOB_ON_POOL_ERROR = "RestartJobOnPoolError"; +const TCHAR[] SPLREG_RESTART_JOB_ON_POOL_ENABLED = "RestartJobOnPoolEnabled"; +const TCHAR[] SPLREG_DNS_MACHINE_NAME = "DNSMachineName"; + +enum : uint { SERVER_ACCESS_ADMINISTER = 0x00000001 } +enum : uint { SERVER_ACCESS_ENUMERATE = 0x00000002 } + +enum : uint { PRINTER_ACCESS_ADMINISTER = 0x00000004 } +enum : uint { PRINTER_ACCESS_USE = 0x00000008 } + +enum : uint { JOB_ACCESS_ADMINISTER = 0x00000010 } + +const uint SERVER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE; + +const uint SERVER_READ = STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE; + +const uint SERVER_WRITE = STANDARD_RIGHTS_WRITE | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE; + +const uint SERVER_EXECUTE = STANDARD_RIGHTS_EXECUTE | SERVER_ACCESS_ENUMERATE; + +const uint PRINTER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE; + +const uint PRINTER_READ = STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE; + +const uint PRINTER_WRITE = STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE; + +const uint PRINTER_EXECUTE = STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE; + +const uint JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER; + +const uint JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER; + +const uint JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER; + +const uint JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER; + +const TCHAR[] SPLDS_SPOOLER_KEY = "DsSpooler"; +const TCHAR[] SPLDS_DRIVER_KEY = "DsDriver"; +const TCHAR[] SPLDS_USER_KEY = "DsUser"; + +const TCHAR[] SPLDS_ASSET_NUMBER = "assetNumber"; +const TCHAR[] SPLDS_BYTES_PER_MINUTE = "bytesPerMinute"; +const TCHAR[] SPLDS_DESCRIPTION = "description"; +const TCHAR[] SPLDS_DRIVER_NAME = "driverName"; +const TCHAR[] SPLDS_DRIVER_VERSION = "driverVersion"; +const TCHAR[] SPLDS_LOCATION = "location"; +const TCHAR[] SPLDS_PORT_NAME = "portName"; +const TCHAR[] SPLDS_PRINT_ATTRIBUTES = "printAttributes"; +const TCHAR[] SPLDS_PRINT_BIN_NAMES = "printBinNames"; +const TCHAR[] SPLDS_PRINT_COLLATE = "printCollate"; +const TCHAR[] SPLDS_PRINT_COLOR = "printColor"; +const TCHAR[] SPLDS_PRINT_DUPLEX_SUPPORTED = "printDuplexSupported"; +const TCHAR[] SPLDS_PRINT_END_TIME = "printEndTime"; +const TCHAR[] SPLDS_PRINTER_CLASS = "printQueue"; +const TCHAR[] SPLDS_PRINTER_NAME = "printerName"; +const TCHAR[] SPLDS_PRINT_KEEP_PRINTED_JOBS = "printKeepPrintedJobs"; +const TCHAR[] SPLDS_PRINT_LANGUAGE = "printLanguage"; +const TCHAR[] SPLDS_PRINT_MAC_ADDRESS = "printMACAddress"; +const TCHAR[] SPLDS_PRINT_MAX_X_EXTENT = "printMaxXExtent"; +const TCHAR[] SPLDS_PRINT_MAX_Y_EXTENT = "printMaxYExtent"; +const TCHAR[] SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED = "printMaxResolutionSupported"; +const TCHAR[] SPLDS_PRINT_MEDIA_READY = "printMediaReady"; +const TCHAR[] SPLDS_PRINT_MEDIA_SUPPORTED = "printMediaSupported"; +const TCHAR[] SPLDS_PRINT_MEMORY = "printMemory"; +const TCHAR[] SPLDS_PRINT_MIN_X_EXTENT = "printMinXExtent"; +const TCHAR[] SPLDS_PRINT_MIN_Y_EXTENT = "printMinYExtent"; +const TCHAR[] SPLDS_PRINT_NETWORK_ADDRESS = "printNetworkAddress"; +const TCHAR[] SPLDS_PRINT_NOTIFY = "printNotify"; +const TCHAR[] SPLDS_PRINT_NUMBER_UP = "printNumberUp"; +const TCHAR[] SPLDS_PRINT_ORIENTATIONS_SUPPORTED = "printOrientationsSupported"; +const TCHAR[] SPLDS_PRINT_OWNER = "printOwner"; +const TCHAR[] SPLDS_PRINT_PAGES_PER_MINUTE = "printPagesPerMinute"; +const TCHAR[] SPLDS_PRINT_RATE = "printRate"; +const TCHAR[] SPLDS_PRINT_RATE_UNIT = "printRateUnit"; +const TCHAR[] SPLDS_PRINT_SEPARATOR_FILE = "printSeparatorFile"; +const TCHAR[] SPLDS_PRINT_SHARE_NAME = "printShareName"; +const TCHAR[] SPLDS_PRINT_SPOOLING = "printSpooling"; +const TCHAR[] SPLDS_PRINT_STAPLING_SUPPORTED = "printStaplingSupported"; +const TCHAR[] SPLDS_PRINT_START_TIME = "printStartTime"; +const TCHAR[] SPLDS_PRINT_STATUS = "printStatus"; +const TCHAR[] SPLDS_PRIORITY = "priority"; +const TCHAR[] SPLDS_SERVER_NAME = "serverName"; +const TCHAR[] SPLDS_SHORT_SERVER_NAME = "shortServerName"; +const TCHAR[] SPLDS_UNC_NAME = "uNCName"; +const TCHAR[] SPLDS_URL = "url"; +const TCHAR[] SPLDS_FLAGS = "flags"; +const TCHAR[] SPLDS_VERSION_NUMBER = "versionNumber"; + +const TCHAR[] SPLDS_PRINTER_NAME_ALIASES = "printerNameAliases"; +const TCHAR[] SPLDS_PRINTER_LOCATIONS = "printerLocations"; +const TCHAR[] SPLDS_PRINTER_MODEL = "printerModel"; + +// #ifdef __cplusplus +// } +// #endif + +// #endif // _WINSPOOL_ ADDED src/win32/winuser.d Index: src/win32/winuser.d ================================================================== --- src/win32/winuser.d +++ src/win32/winuser.d @@ -0,0 +1,8665 @@ +module win32.winuser; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino (demoonlit@inter7.jp) + +import win32.winbase, win32.wingdi; +enum : uint { + QS_POSTMESSAGE = 0x0008, + QS_TIMER = 0x0010, + QS_PAINT = 0x0020, + QS_SENDMESSAGE = 0x0040, + QS_HOTKEY = 0x0080, + QS_INPUT = 0x0407 +} + +// #ifndef _WINUSER_ +// #define _WINUSER_ + +// #if !defined(_USER32_) +// #define WINUSERAPI DECLSPEC_IMPORT +// #else +// #... +// #endif + +// #ifdef _MAC +// #... +// #endif + +// #ifdef __cplusplus +// extern "C" { +// #endif /* __cplusplus */ + +// #ifndef WINVER +// #... +// #endif /* !WINVER */ + +// #include + +// #ifndef NOUSER + +alias HANDLE HDWP; +alias VOID MENUTEMPLATEA; +alias VOID MENUTEMPLATEW; +// #ifdef UNICODE +alias MENUTEMPLATEW MENUTEMPLATE; +// #else +// ... +// #endif // UNICODE +alias PVOID LPMENUTEMPLATEA; +alias PVOID LPMENUTEMPLATEW; +// #ifdef UNICODE +alias LPMENUTEMPLATEW LPMENUTEMPLATE; +// #else +// ... +// #endif // UNICODE + +extern(Windows) alias LRESULT function(HWND, UINT, WPARAM, LPARAM) WNDPROC; + +// #ifdef STRICT + +extern(Windows) alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC; +extern(Windows) alias VOID function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC; +extern(Windows) alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC; +extern(Windows) alias BOOL function(HWND, LPARAM) WNDENUMPROC; +extern(Windows) alias LRESULT function(int code, WPARAM wParam, LPARAM lParam) HOOKPROC; +extern(Windows) alias VOID function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC; + +extern(Windows) alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA; +extern(Windows) alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW; + +extern(Windows) alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA; +extern(Windows) alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW; + +extern(Windows) alias int function(LPSTR lpch, int ichCurrent, int cch, int code) EDITWORDBREAKPROCA; +extern(Windows) alias int function(LPWSTR lpch, int ichCurrent, int cch, int code) EDITWORDBREAKPROCW; + +// #if(WINVER >= 0x0400) +extern(Windows) alias BOOL function(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy) DRAWSTATEPROC; +// #endif /* WINVER >= 0x0400 */ +// #else /* !STRICT */ + +// ... + +// ... + +// ... + +// ... + +// #if(WINVER >= 0x0400) +// ... +// #endif /* WINVER >= 0x0400 */ +// #endif /* !STRICT */ + +// #ifdef UNICODE +alias PROPENUMPROCW PROPENUMPROC; +alias PROPENUMPROCEXW PROPENUMPROCEX; +alias EDITWORDBREAKPROCW EDITWORDBREAKPROC; +// #else /* !UNICODE */ +// ... +// #endif /* UNICODE */ + +// #ifdef STRICT + +extern(Windows) alias BOOL function(LPSTR, LPARAM) NAMEENUMPROCA; +extern(Windows) alias BOOL function(LPWSTR, LPARAM) NAMEENUMPROCW; + +alias NAMEENUMPROCA WINSTAENUMPROCA; +alias NAMEENUMPROCA DESKTOPENUMPROCA; +alias NAMEENUMPROCW WINSTAENUMPROCW; +alias NAMEENUMPROCW DESKTOPENUMPROCW; + +// #else /* !STRICT */ + +// ... + +// #endif /* !STRICT */ + +// #ifdef UNICODE +alias WINSTAENUMPROCW WINSTAENUMPROC; +alias DESKTOPENUMPROCW DESKTOPENUMPROC; + +// #else /* !UNICODE */ +// ... + +// #endif /* UNICODE */ + +bit IS_INTRESOURCE(LPTSTR _r){ return ((cast(ULONG_PTR)(_r) >> 16) == 0); } +LPSTR MAKEINTRESOURCEA(WORD i){ return cast(LPSTR)(cast(ULONG_PTR)(cast(WORD)(i))); } +LPWSTR MAKEINTRESOURCEW(WORD i){ return cast(LPWSTR)(cast(ULONG_PTR)(cast(WORD)(i))); } +// #ifdef UNICODE +alias MAKEINTRESOURCEW MAKEINTRESOURCE; +// #else +// #... +// #endif // !UNICODE + +// #ifndef NORESOURCE + +const LPTSTR RT_CURSOR = cast(LPTSTR)(1); +const LPTSTR RT_BITMAP = cast(LPTSTR)(2); +const LPTSTR RT_ICON = cast(LPTSTR)(3); +const LPTSTR RT_MENU = cast(LPTSTR)(4); +const LPTSTR RT_DIALOG = cast(LPTSTR)(5); +const LPTSTR RT_STRING = cast(LPTSTR)(6); +const LPTSTR RT_FONTDIR = cast(LPTSTR)(7); +const LPTSTR RT_FONT = cast(LPTSTR)(8); +const LPTSTR RT_ACCELERATOR = cast(LPTSTR)(9); +const LPTSTR RT_RCDATA = cast(LPTSTR)(10); +const LPTSTR RT_MESSAGETABLE = cast(LPTSTR)(11); + +enum : uint { DIFFERENCE = 11 } +const LPTSTR RT_GROUP_CURSOR = cast(LPTSTR)(cast(ULONG_PTR)RT_CURSOR + DIFFERENCE); +const LPTSTR RT_GROUP_ICON = cast(LPTSTR)(cast(ULONG_PTR)RT_ICON + DIFFERENCE); +const LPTSTR RT_VERSION = cast(LPTSTR)(16); +const LPTSTR RT_DLGINCLUDE = cast(LPTSTR)(17); +// #if(WINVER >= 0x0400) +const LPTSTR RT_PLUGPLAY = cast(LPTSTR)(19); +const LPTSTR RT_VXD = cast(LPTSTR)(20); +const LPTSTR RT_ANICURSOR = cast(LPTSTR)(21); +const LPTSTR RT_ANIICON = cast(LPTSTR)(22); +// #endif /* WINVER >= 0x0400 */ +const LPTSTR RT_HTML = cast(LPTSTR)(23); +// #ifdef RC_INVOKED +// #... +// #... +// #... +// #... +// #... +// #... +// #else /* RC_INVOKED */ +const LPTSTR RT_MANIFEST = cast(LPTSTR)(24); +const LPTSTR CREATEPROCESS_MANIFEST_RESOURCE_ID = cast(LPTSTR)( 1); +const LPTSTR ISOLATIONAWARE_MANIFEST_RESOURCE_ID = cast(LPTSTR)(2); +const LPTSTR ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = cast(LPTSTR)(3); +const LPTSTR MINIMUM_RESERVED_MANIFEST_RESOURCE_ID = cast(LPTSTR)( 1 ); +const LPTSTR MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = cast(LPTSTR)(16 ); +// #endif /* RC_INVOKED */ + +// #endif /* !NORESOURCE */ + +extern(Windows) export int wvsprintfA( + LPSTR, + LPCSTR, + va_list arglist); +extern(Windows) export int wvsprintfW( + LPWSTR, + LPCWSTR, + va_list arglist); +// #ifdef UNICODE +alias wvsprintfW wvsprintf; +// #else +// #... +// #endif // !UNICODE + +extern(C) export int wsprintfA( + LPSTR, + LPCSTR, + ...); +extern(C) export int wsprintfW( + LPWSTR, + LPCWSTR, + ...); +// #ifdef UNICODE +alias wsprintfW wsprintf; +// #else +// #... +// #endif // !UNICODE + +const LPWSTR SETWALLPAPER_DEFAULT = cast(LPWSTR)-1; + +// #ifndef NOSCROLL + +enum : uint { SB_HORZ = 0 } +enum : uint { SB_VERT = 1 } +enum : uint { SB_CTL = 2 } +enum : uint { SB_BOTH = 3 } + +enum : uint { SB_LINEUP = 0 } +enum : uint { SB_LINELEFT = 0 } +enum : uint { SB_LINEDOWN = 1 } +enum : uint { SB_LINERIGHT = 1 } +enum : uint { SB_PAGEUP = 2 } +enum : uint { SB_PAGELEFT = 2 } +enum : uint { SB_PAGEDOWN = 3 } +enum : uint { SB_PAGERIGHT = 3 } +enum : uint { SB_THUMBPOSITION = 4 } +enum : uint { SB_THUMBTRACK = 5 } +enum : uint { SB_TOP = 6 } +enum : uint { SB_LEFT = 6 } +enum : uint { SB_BOTTOM = 7 } +enum : uint { SB_RIGHT = 7 } +enum : uint { SB_ENDSCROLL = 8 } + +// #endif /* !NOSCROLL */ + +// #ifndef NOSHOWWINDOW + +enum : uint { SW_HIDE = 0 } +enum : uint { SW_SHOWNORMAL = 1 } +enum : uint { SW_NORMAL = 1 } +enum : uint { SW_SHOWMINIMIZED = 2 } +enum : uint { SW_SHOWMAXIMIZED = 3 } +enum : uint { SW_MAXIMIZE = 3 } +enum : uint { SW_SHOWNOACTIVATE = 4 } +enum : uint { SW_SHOW = 5 } +enum : uint { SW_MINIMIZE = 6 } +enum : uint { SW_SHOWMINNOACTIVE = 7 } +enum : uint { SW_SHOWNA = 8 } +enum : uint { SW_RESTORE = 9 } +enum : uint { SW_SHOWDEFAULT = 10 } +enum : uint { SW_FORCEMINIMIZE = 11 } +enum : uint { SW_MAX = 11 } + +enum : uint { HIDE_WINDOW = 0 } +enum : uint { SHOW_OPENWINDOW = 1 } +enum : uint { SHOW_ICONWINDOW = 2 } +enum : uint { SHOW_FULLSCREEN = 3 } +enum : uint { SHOW_OPENNOACTIVATE = 4 } + +enum : uint { SW_PARENTCLOSING = 1 } +enum : uint { SW_OTHERZOOM = 2 } +enum : uint { SW_PARENTOPENING = 3 } +enum : uint { SW_OTHERUNZOOM = 4 } + +// #endif /* !NOSHOWWINDOW */ + +// #if(WINVER >= 0x0500) + +enum : uint { AW_HOR_POSITIVE = 0x00000001 } +enum : uint { AW_HOR_NEGATIVE = 0x00000002 } +enum : uint { AW_VER_POSITIVE = 0x00000004 } +enum : uint { AW_VER_NEGATIVE = 0x00000008 } +enum : uint { AW_CENTER = 0x00000010 } +enum : uint { AW_HIDE = 0x00010000 } +enum : uint { AW_ACTIVATE = 0x00020000 } +enum : uint { AW_SLIDE = 0x00040000 } +enum : uint { AW_BLEND = 0x00080000 } + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { KF_EXTENDED = 0x0100 } +enum : uint { KF_DLGMODE = 0x0800 } +enum : uint { KF_MENUMODE = 0x1000 } +enum : uint { KF_ALTDOWN = 0x2000 } +enum : uint { KF_REPEAT = 0x4000 } +enum : uint { KF_UP = 0x8000 } + +// #ifndef NOVIRTUALKEYCODES + +enum : uint { VK_LBUTTON = 0x01 } +enum : uint { VK_RBUTTON = 0x02 } +enum : uint { VK_CANCEL = 0x03 } +enum : uint { VK_MBUTTON = 0x04 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { VK_XBUTTON1 = 0x05 } +enum : uint { VK_XBUTTON2 = 0x06 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { VK_BACK = 0x08 } +enum : uint { VK_TAB = 0x09 } + +enum : uint { VK_CLEAR = 0x0C } +enum : uint { VK_RETURN = 0x0D } + +enum : uint { VK_SHIFT = 0x10 } +enum : uint { VK_CONTROL = 0x11 } +enum : uint { VK_MENU = 0x12 } +enum : uint { VK_PAUSE = 0x13 } +enum : uint { VK_CAPITAL = 0x14 } + +enum : uint { VK_KANA = 0x15 } +enum : uint { VK_HANGEUL = 0x15 } +enum : uint { VK_HANGUL = 0x15 } +enum : uint { VK_JUNJA = 0x17 } +enum : uint { VK_FINAL = 0x18 } +enum : uint { VK_HANJA = 0x19 } +enum : uint { VK_KANJI = 0x19 } + +enum : uint { VK_ESCAPE = 0x1B } + +enum : uint { VK_CONVERT = 0x1C } +enum : uint { VK_NONCONVERT = 0x1D } +enum : uint { VK_ACCEPT = 0x1E } +enum : uint { VK_MODECHANGE = 0x1F } + +enum : uint { VK_SPACE = 0x20 } +enum : uint { VK_PRIOR = 0x21 } +enum : uint { VK_NEXT = 0x22 } +enum : uint { VK_END = 0x23 } +enum : uint { VK_HOME = 0x24 } +enum : uint { VK_LEFT = 0x25 } +enum : uint { VK_UP = 0x26 } +enum : uint { VK_RIGHT = 0x27 } +enum : uint { VK_DOWN = 0x28 } +enum : uint { VK_SELECT = 0x29 } +enum : uint { VK_PRINT = 0x2A } +enum : uint { VK_EXECUTE = 0x2B } +enum : uint { VK_SNAPSHOT = 0x2C } +enum : uint { VK_INSERT = 0x2D } +enum : uint { VK_DELETE = 0x2E } +enum : uint { VK_HELP = 0x2F } + +enum : uint { VK_LWIN = 0x5B } +enum : uint { VK_RWIN = 0x5C } +enum : uint { VK_APPS = 0x5D } + +enum : uint { VK_SLEEP = 0x5F } + +enum : uint { VK_NUMPAD0 = 0x60 } +enum : uint { VK_NUMPAD1 = 0x61 } +enum : uint { VK_NUMPAD2 = 0x62 } +enum : uint { VK_NUMPAD3 = 0x63 } +enum : uint { VK_NUMPAD4 = 0x64 } +enum : uint { VK_NUMPAD5 = 0x65 } +enum : uint { VK_NUMPAD6 = 0x66 } +enum : uint { VK_NUMPAD7 = 0x67 } +enum : uint { VK_NUMPAD8 = 0x68 } +enum : uint { VK_NUMPAD9 = 0x69 } +enum : uint { VK_MULTIPLY = 0x6A } +enum : uint { VK_ADD = 0x6B } +enum : uint { VK_SEPARATOR = 0x6C } +enum : uint { VK_SUBTRACT = 0x6D } +enum : uint { VK_DECIMAL = 0x6E } +enum : uint { VK_DIVIDE = 0x6F } +enum : uint { VK_F1 = 0x70 } +enum : uint { VK_F2 = 0x71 } +enum : uint { VK_F3 = 0x72 } +enum : uint { VK_F4 = 0x73 } +enum : uint { VK_F5 = 0x74 } +enum : uint { VK_F6 = 0x75 } +enum : uint { VK_F7 = 0x76 } +enum : uint { VK_F8 = 0x77 } +enum : uint { VK_F9 = 0x78 } +enum : uint { VK_F10 = 0x79 } +enum : uint { VK_F11 = 0x7A } +enum : uint { VK_F12 = 0x7B } +enum : uint { VK_F13 = 0x7C } +enum : uint { VK_F14 = 0x7D } +enum : uint { VK_F15 = 0x7E } +enum : uint { VK_F16 = 0x7F } +enum : uint { VK_F17 = 0x80 } +enum : uint { VK_F18 = 0x81 } +enum : uint { VK_F19 = 0x82 } +enum : uint { VK_F20 = 0x83 } +enum : uint { VK_F21 = 0x84 } +enum : uint { VK_F22 = 0x85 } +enum : uint { VK_F23 = 0x86 } +enum : uint { VK_F24 = 0x87 } + +enum : uint { VK_NUMLOCK = 0x90 } +enum : uint { VK_SCROLL = 0x91 } + +enum : uint { VK_OEM_NEC_EQUAL = 0x92 } + +enum : uint { VK_OEM_FJ_JISHO = 0x92 } +enum : uint { VK_OEM_FJ_MASSHOU = 0x93 } +enum : uint { VK_OEM_FJ_TOUROKU = 0x94 } +enum : uint { VK_OEM_FJ_LOYA = 0x95 } +enum : uint { VK_OEM_FJ_ROYA = 0x96 } + +enum : uint { VK_LSHIFT = 0xA0 } +enum : uint { VK_RSHIFT = 0xA1 } +enum : uint { VK_LCONTROL = 0xA2 } +enum : uint { VK_RCONTROL = 0xA3 } +enum : uint { VK_LMENU = 0xA4 } +enum : uint { VK_RMENU = 0xA5 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { VK_BROWSER_BACK = 0xA6 } +enum : uint { VK_BROWSER_FORWARD = 0xA7 } +enum : uint { VK_BROWSER_REFRESH = 0xA8 } +enum : uint { VK_BROWSER_STOP = 0xA9 } +enum : uint { VK_BROWSER_SEARCH = 0xAA } +enum : uint { VK_BROWSER_FAVORITES = 0xAB } +enum : uint { VK_BROWSER_HOME = 0xAC } + +enum : uint { VK_VOLUME_MUTE = 0xAD } +enum : uint { VK_VOLUME_DOWN = 0xAE } +enum : uint { VK_VOLUME_UP = 0xAF } +enum : uint { VK_MEDIA_NEXT_TRACK = 0xB0 } +enum : uint { VK_MEDIA_PREV_TRACK = 0xB1 } +enum : uint { VK_MEDIA_STOP = 0xB2 } +enum : uint { VK_MEDIA_PLAY_PAUSE = 0xB3 } +enum : uint { VK_LAUNCH_MAIL = 0xB4 } +enum : uint { VK_LAUNCH_MEDIA_SELECT = 0xB5 } +enum : uint { VK_LAUNCH_APP1 = 0xB6 } +enum : uint { VK_LAUNCH_APP2 = 0xB7 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { VK_OEM_1 = 0xBA } +enum : uint { VK_OEM_PLUS = 0xBB } +enum : uint { VK_OEM_COMMA = 0xBC } +enum : uint { VK_OEM_MINUS = 0xBD } +enum : uint { VK_OEM_PERIOD = 0xBE } +enum : uint { VK_OEM_2 = 0xBF } +enum : uint { VK_OEM_3 = 0xC0 } + +enum : uint { VK_OEM_4 = 0xDB } +enum : uint { VK_OEM_5 = 0xDC } +enum : uint { VK_OEM_6 = 0xDD } +enum : uint { VK_OEM_7 = 0xDE } +enum : uint { VK_OEM_8 = 0xDF } + +enum : uint { VK_OEM_AX = 0xE1 } +enum : uint { VK_OEM_102 = 0xE2 } +enum : uint { VK_ICO_HELP = 0xE3 } +enum : uint { VK_ICO_00 = 0xE4 } + +// #if(WINVER >= 0x0400) +enum : uint { VK_PROCESSKEY = 0xE5 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { VK_ICO_CLEAR = 0xE6 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { VK_PACKET = 0xE7 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { VK_OEM_RESET = 0xE9 } +enum : uint { VK_OEM_JUMP = 0xEA } +enum : uint { VK_OEM_PA1 = 0xEB } +enum : uint { VK_OEM_PA2 = 0xEC } +enum : uint { VK_OEM_PA3 = 0xED } +enum : uint { VK_OEM_WSCTRL = 0xEE } +enum : uint { VK_OEM_CUSEL = 0xEF } +enum : uint { VK_OEM_ATTN = 0xF0 } +enum : uint { VK_OEM_FINISH = 0xF1 } +enum : uint { VK_OEM_COPY = 0xF2 } +enum : uint { VK_OEM_AUTO = 0xF3 } +enum : uint { VK_OEM_ENLW = 0xF4 } +enum : uint { VK_OEM_BACKTAB = 0xF5 } + +enum : uint { VK_ATTN = 0xF6 } +enum : uint { VK_CRSEL = 0xF7 } +enum : uint { VK_EXSEL = 0xF8 } +enum : uint { VK_EREOF = 0xF9 } +enum : uint { VK_PLAY = 0xFA } +enum : uint { VK_ZOOM = 0xFB } +enum : uint { VK_NONAME = 0xFC } +enum : uint { VK_PA1 = 0xFD } +enum : uint { VK_OEM_CLEAR = 0xFE } + +// #endif /* !NOVIRTUALKEYCODES */ + +// #ifndef NOWH + +enum { WH_MIN = -1 } +enum { WH_MSGFILTER = -1 } +enum : uint { WH_JOURNALRECORD = 0 } +enum : uint { WH_JOURNALPLAYBACK = 1 } +enum : uint { WH_KEYBOARD = 2 } +enum : uint { WH_GETMESSAGE = 3 } +enum : uint { WH_CALLWNDPROC = 4 } +enum : uint { WH_CBT = 5 } +enum : uint { WH_SYSMSGFILTER = 6 } +enum : uint { WH_MOUSE = 7 } +// #if defined(_WIN32_WINDOWS) +// #... +// #endif +enum : uint { WH_DEBUG = 9 } +enum : uint { WH_SHELL = 10 } +enum : uint { WH_FOREGROUNDIDLE = 11 } +// #if(WINVER >= 0x0400) +enum : uint { WH_CALLWNDPROCRET = 12 } +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0400) +enum : uint { WH_KEYBOARD_LL = 13 } +enum : uint { WH_MOUSE_LL = 14 } +// #endif // (_WIN32_WINNT >= 0x0400) + +// #if(WINVER >= 0x0400) +// #if (_WIN32_WINNT >= 0x0400) +enum : uint { WH_MAX = 14 } +// #else +// #... +// #endif // (_WIN32_WINNT >= 0x0400) +// #else +// #... +// #endif + +alias WH_MIN WH_MINHOOK; +alias WH_MAX WH_MAXHOOK; + +enum : uint { HC_ACTION = 0 } +enum : uint { HC_GETNEXT = 1 } +enum : uint { HC_SKIP = 2 } +enum : uint { HC_NOREMOVE = 3 } +alias HC_NOREMOVE HC_NOREM; +enum : uint { HC_SYSMODALON = 4 } +enum : uint { HC_SYSMODALOFF = 5 } + +enum : uint { HCBT_MOVESIZE = 0 } +enum : uint { HCBT_MINMAX = 1 } +enum : uint { HCBT_QS = 2 } +enum : uint { HCBT_CREATEWND = 3 } +enum : uint { HCBT_DESTROYWND = 4 } +enum : uint { HCBT_ACTIVATE = 5 } +enum : uint { HCBT_CLICKSKIPPED = 6 } +enum : uint { HCBT_KEYSKIPPED = 7 } +enum : uint { HCBT_SYSCOMMAND = 8 } +enum : uint { HCBT_SETFOCUS = 9 } + +struct tagCBT_CREATEWNDA { + tagCREATESTRUCTA *lpcs; + HWND hwndInsertAfter; +} +alias tagCBT_CREATEWNDA CBT_CREATEWNDA; +alias tagCBT_CREATEWNDA* LPCBT_CREATEWNDA; + +struct tagCBT_CREATEWNDW { + tagCREATESTRUCTW *lpcs; + HWND hwndInsertAfter; +} +alias tagCBT_CREATEWNDW CBT_CREATEWNDW; +alias tagCBT_CREATEWNDW* LPCBT_CREATEWNDW; + +// #ifdef UNICODE +alias CBT_CREATEWNDW CBT_CREATEWND; +alias LPCBT_CREATEWNDW LPCBT_CREATEWND; +// #else +// ... +// #endif // UNICODE + +struct tagCBTACTIVATESTRUCT { + BOOL fMouse; + HWND hWndActive; +} +alias tagCBTACTIVATESTRUCT CBTACTIVATESTRUCT; +alias tagCBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT; + +// #if(_WIN32_WINNT >= 0x0501) + +struct tagWTSSESSION_NOTIFICATION { + DWORD cbSize; + DWORD dwSessionId; +} +alias tagWTSSESSION_NOTIFICATION WTSSESSION_NOTIFICATION; +alias tagWTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION; + +enum : uint { WTS_CONSOLE_CONNECT = 0x1 } +enum : uint { WTS_CONSOLE_DISCONNECT = 0x2 } +enum : uint { WTS_REMOTE_CONNECT = 0x3 } +enum : uint { WTS_REMOTE_DISCONNECT = 0x4 } +enum : uint { WTS_SESSION_LOGON = 0x5 } +enum : uint { WTS_SESSION_LOGOFF = 0x6 } +enum : uint { WTS_SESSION_LOCK = 0x7 } +enum : uint { WTS_SESSION_UNLOCK = 0x8 } + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { MSGF_DIALOGBOX = 0 } +enum : uint { MSGF_MESSAGEBOX = 1 } +enum : uint { MSGF_MENU = 2 } +enum : uint { MSGF_SCROLLBAR = 5 } +enum : uint { MSGF_NEXTWINDOW = 6 } +enum : uint { MSGF_MAX = 8 } +enum : uint { MSGF_USER = 4096 } + +enum : uint { HSHELL_WINDOWCREATED = 1 } +enum : uint { HSHELL_WINDOWDESTROYED = 2 } +enum : uint { HSHELL_ACTIVATESHELLWINDOW = 3 } + +// #if(WINVER >= 0x0400) +enum : uint { HSHELL_WINDOWACTIVATED = 4 } +enum : uint { HSHELL_GETMINRECT = 5 } +enum : uint { HSHELL_REDRAW = 6 } +enum : uint { HSHELL_TASKMAN = 7 } +enum : uint { HSHELL_LANGUAGE = 8 } +// #endif /* WINVER >= 0x0400 */ +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { HSHELL_ACCESSIBILITYSTATE = 11 } +enum : uint { HSHELL_APPCOMMAND = 12 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { HSHELL_WINDOWREPLACED = 13 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(_WIN32_WINNT >= 0x0500) + +enum : uint { ACCESS_STICKYKEYS = 0x0001 } +enum : uint { ACCESS_FILTERKEYS = 0x0002 } +enum : uint { ACCESS_MOUSEKEYS = 0x0003 } + +enum : uint { APPCOMMAND_BROWSER_BACKWARD = 1 } +enum : uint { APPCOMMAND_BROWSER_FORWARD = 2 } +enum : uint { APPCOMMAND_BROWSER_REFRESH = 3 } +enum : uint { APPCOMMAND_BROWSER_STOP = 4 } +enum : uint { APPCOMMAND_BROWSER_SEARCH = 5 } +enum : uint { APPCOMMAND_BROWSER_FAVORITES = 6 } +enum : uint { APPCOMMAND_BROWSER_HOME = 7 } +enum : uint { APPCOMMAND_VOLUME_MUTE = 8 } +enum : uint { APPCOMMAND_VOLUME_DOWN = 9 } +enum : uint { APPCOMMAND_VOLUME_UP = 10 } +enum : uint { APPCOMMAND_MEDIA_NEXTTRACK = 11 } +enum : uint { APPCOMMAND_MEDIA_PREVIOUSTRACK = 12 } +enum : uint { APPCOMMAND_MEDIA_STOP = 13 } +enum : uint { APPCOMMAND_MEDIA_PLAY_PAUSE = 14 } +enum : uint { APPCOMMAND_LAUNCH_MAIL = 15 } +enum : uint { APPCOMMAND_LAUNCH_MEDIA_SELECT = 16 } +enum : uint { APPCOMMAND_LAUNCH_APP1 = 17 } +enum : uint { APPCOMMAND_LAUNCH_APP2 = 18 } +enum : uint { APPCOMMAND_BASS_DOWN = 19 } +enum : uint { APPCOMMAND_BASS_BOOST = 20 } +enum : uint { APPCOMMAND_BASS_UP = 21 } +enum : uint { APPCOMMAND_TREBLE_DOWN = 22 } +enum : uint { APPCOMMAND_TREBLE_UP = 23 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { APPCOMMAND_MICROPHONE_VOLUME_MUTE = 24 } +enum : uint { APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25 } +enum : uint { APPCOMMAND_MICROPHONE_VOLUME_UP = 26 } +enum : uint { APPCOMMAND_HELP = 27 } +enum : uint { APPCOMMAND_FIND = 28 } +enum : uint { APPCOMMAND_NEW = 29 } +enum : uint { APPCOMMAND_OPEN = 30 } +enum : uint { APPCOMMAND_CLOSE = 31 } +enum : uint { APPCOMMAND_SAVE = 32 } +enum : uint { APPCOMMAND_PRINT = 33 } +enum : uint { APPCOMMAND_UNDO = 34 } +enum : uint { APPCOMMAND_REDO = 35 } +enum : uint { APPCOMMAND_COPY = 36 } +enum : uint { APPCOMMAND_CUT = 37 } +enum : uint { APPCOMMAND_PASTE = 38 } +enum : uint { APPCOMMAND_REPLY_TO_MAIL = 39 } +enum : uint { APPCOMMAND_FORWARD_MAIL = 40 } +enum : uint { APPCOMMAND_SEND_MAIL = 41 } +enum : uint { APPCOMMAND_SPELL_CHECK = 42 } +enum : uint { APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43 } +enum : uint { APPCOMMAND_MIC_ON_OFF_TOGGLE = 44 } +enum : uint { APPCOMMAND_CORRECTION_LIST = 45 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { FAPPCOMMAND_MOUSE = 0x8000 } +enum : uint { FAPPCOMMAND_KEY = 0 } +enum : uint { FAPPCOMMAND_OEM = 0x1000 } +enum : uint { FAPPCOMMAND_MASK = 0xF000 } + +// #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK)) +// #define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK)) +// #define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM +// #define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam)) +// #define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam) +// #endif /* _WIN32_WINNT >= 0x0500 */ + +struct tagEVENTMSG { + UINT message; + UINT paramL; + UINT paramH; + DWORD time; + HWND hwnd; +} +alias tagEVENTMSG EVENTMSG; +alias tagEVENTMSG* PEVENTMSGMSG; +alias tagEVENTMSG* NPEVENTMSGMSG; +alias tagEVENTMSG* LPEVENTMSGMSG; + +alias tagEVENTMSG* PEVENTMSG; +alias tagEVENTMSG* NPEVENTMSG; +alias tagEVENTMSG* LPEVENTMSG; + +struct tagCWPSTRUCT { + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; +} +alias tagCWPSTRUCT CWPSTRUCT; +alias tagCWPSTRUCT* PCWPSTRUCT; +alias tagCWPSTRUCT* NPCWPSTRUCT; +alias tagCWPSTRUCT* LPCWPSTRUCT; + +// #if(WINVER >= 0x0400) + +struct tagCWPRETSTRUCT { + LRESULT lResult; + LPARAM lParam; + WPARAM wParam; + UINT message; + HWND hwnd; +} +alias tagCWPRETSTRUCT CWPRETSTRUCT; +alias tagCWPRETSTRUCT* PCWPRETSTRUCT; +alias tagCWPRETSTRUCT* NPCWPRETSTRUCT; +alias tagCWPRETSTRUCT* LPCWPRETSTRUCT; + +// #endif /* WINVER >= 0x0400 */ + +// #if (_WIN32_WINNT >= 0x0400) + +enum : uint { LLKHF_EXTENDED = KF_EXTENDED >> 8 } +enum : uint { LLKHF_INJECTED = 0x00000010 } +enum : uint { LLKHF_ALTDOWN = KF_ALTDOWN >> 8 } +enum : uint { LLKHF_UP = KF_UP >> 8 } + +enum : uint { LLMHF_INJECTED = 0x00000001 } + +struct tagKBDLLHOOKSTRUCT { + DWORD vkCode; + DWORD scanCode; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagKBDLLHOOKSTRUCT KBDLLHOOKSTRUCT; +alias tagKBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT; +alias tagKBDLLHOOKSTRUCT* PKBDLLHOOKSTRUCT; + +struct tagMSLLHOOKSTRUCT { + POINT pt; + DWORD mouseData; + DWORD flags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagMSLLHOOKSTRUCT MSLLHOOKSTRUCT; +alias tagMSLLHOOKSTRUCT* LPMSLLHOOKSTRUCT; +alias tagMSLLHOOKSTRUCT* PMSLLHOOKSTRUCT; + +// #endif // (_WIN32_WINNT >= 0x0400) + +struct tagDEBUGHOOKINFO { + DWORD idThread; + DWORD idThreadInstaller; + LPARAM lParam; + WPARAM wParam; + int code; +} +alias tagDEBUGHOOKINFO DEBUGHOOKINFO; +alias tagDEBUGHOOKINFO* PDEBUGHOOKINFO; +alias tagDEBUGHOOKINFO* NPDEBUGHOOKINFO; +alias tagDEBUGHOOKINFO* LPDEBUGHOOKINFO; + +struct tagMOUSEHOOKSTRUCT { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + ULONG_PTR dwExtraInfo; +} +alias tagMOUSEHOOKSTRUCT MOUSEHOOKSTRUCT; +alias tagMOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT; +alias tagMOUSEHOOKSTRUCT* PMOUSEHOOKSTRUCT; + +// #if(_WIN32_WINNT >= 0x0500) +// #ifdef __cplusplus +struct tagMOUSEHOOKSTRUCTEX { + POINT pt; + HWND hwnd; + UINT wHitTestCode; + ULONG_PTR dwExtraInfo; + DWORD mouseData; +} +alias tagMOUSEHOOKSTRUCTEX MOUSEHOOKSTRUCTEX; +alias tagMOUSEHOOKSTRUCTEX* LPMOUSEHOOKSTRUCTEX; +alias tagMOUSEHOOKSTRUCTEX* PMOUSEHOOKSTRUCTEX; + +// #else // ndef __cplusplus +// ... +// #endif +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0400) + +struct tagHARDWAREHOOKSTRUCT { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; +} +alias tagHARDWAREHOOKSTRUCT HARDWAREHOOKSTRUCT; +alias tagHARDWAREHOOKSTRUCT* LPHARDWAREHOOKSTRUCT; +alias tagHARDWAREHOOKSTRUCT* PHARDWAREHOOKSTRUCT; + +// #endif /* WINVER >= 0x0400 */ +// #endif /* !NOWH */ + +enum : uint { HKL_PREV = 0 } +enum : uint { HKL_NEXT = 1 } + +enum : uint { KLF_ACTIVATE = 0x00000001 } +enum : uint { KLF_SUBSTITUTE_OK = 0x00000002 } +enum : uint { KLF_REORDER = 0x00000008 } +// #if(WINVER >= 0x0400) +enum : uint { KLF_REPLACELANG = 0x00000010 } +enum : uint { KLF_NOTELLSHELL = 0x00000080 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { KLF_SETFORPROCESS = 0x00000100 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { KLF_SHIFTLOCK = 0x00010000 } +enum : uint { KLF_RESET = 0x40000000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0500) + +enum : uint { INPUTLANGCHANGE_SYSCHARSET = 0x0001 } +enum : uint { INPUTLANGCHANGE_FORWARD = 0x0002 } +enum : uint { INPUTLANGCHANGE_BACKWARD = 0x0004 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { KL_NAMELENGTH = 9 } + +extern(Windows) export HKL LoadKeyboardLayoutA( + LPCSTR pwszKLID, + UINT Flags); +extern(Windows) export HKL LoadKeyboardLayoutW( + LPCWSTR pwszKLID, + UINT Flags); +// #ifdef UNICODE +alias LoadKeyboardLayoutW LoadKeyboardLayout; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export HKL ActivateKeyboardLayout( + HKL hkl, + UINT Flags); +// #else +// ... +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) +extern(Windows) export int ToUnicodeEx( + UINT wVirtKey, + UINT wScanCode, + BYTE *lpKeyState, + LPWSTR pwszBuff, + int cchBuff, + UINT wFlags, + HKL dwhkl); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL UnloadKeyboardLayout( + HKL hkl); + +extern(Windows) export BOOL GetKeyboardLayoutNameA( + LPSTR pwszKLID); +extern(Windows) export BOOL GetKeyboardLayoutNameW( + LPWSTR pwszKLID); +// #ifdef UNICODE +alias GetKeyboardLayoutNameW GetKeyboardLayoutName; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export int GetKeyboardLayoutList( + int nBuff, + HKL *lpList); + +extern(Windows) export HKL GetKeyboardLayout( + DWORD idThread +); +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) + +struct tagMOUSEMOVEPOINT { + int x; + int y; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagMOUSEMOVEPOINT MOUSEMOVEPOINT; +alias tagMOUSEMOVEPOINT* PMOUSEMOVEPOINT; +alias tagMOUSEMOVEPOINT* LPMOUSEMOVEPOINT; + +enum : uint { GMMP_USE_DISPLAY_POINTS = 1 } +enum : uint { GMMP_USE_HIGH_RESOLUTION_POINTS = 2 } + +extern(Windows) export int GetMouseMovePointsEx( + UINT cbSize, + LPMOUSEMOVEPOINT lppt, + LPMOUSEMOVEPOINT lpptBuf, + int nBufPoints, + DWORD resolution +); + +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NODESKTOP + +enum : uint { DESKTOP_READOBJECTS = 0x0001 } +enum : uint { DESKTOP_CREATEWINDOW = 0x0002 } +enum : uint { DESKTOP_CREATEMENU = 0x0004 } +enum : uint { DESKTOP_HOOKCONTROL = 0x0008 } +enum : uint { DESKTOP_JOURNALRECORD = 0x0010 } +enum : uint { DESKTOP_JOURNALPLAYBACK = 0x0020 } +enum : uint { DESKTOP_ENUMERATE = 0x0040 } +enum : uint { DESKTOP_WRITEOBJECTS = 0x0080 } +enum : uint { DESKTOP_SWITCHDESKTOP = 0x0100 } + +enum : uint { DF_ALLOWOTHERACCOUNTHOOK = 0x0001 } + +// #ifdef _WINGDI_ +// #ifndef NOGDI + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #endif /* NOGDI */ +// #endif /* _WINGDI_ */ + +extern(Windows) export HDESK OpenDesktopA( + LPCSTR lpszDesktop, + DWORD dwFlags, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); +extern(Windows) export HDESK OpenDesktopW( + LPCWSTR lpszDesktop, + DWORD dwFlags, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); +// #ifdef UNICODE +alias OpenDesktopW OpenDesktop; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HDESK OpenInputDesktop( + DWORD dwFlags, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); + +extern(Windows) export BOOL EnumDesktopsA( + HWINSTA hwinsta, + DESKTOPENUMPROCA lpEnumFunc, + LPARAM lParam); +extern(Windows) export BOOL EnumDesktopsW( + HWINSTA hwinsta, + DESKTOPENUMPROCW lpEnumFunc, + LPARAM lParam); +// #ifdef UNICODE +alias EnumDesktopsW EnumDesktops; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumDesktopWindows( + HDESK hDesktop, + WNDENUMPROC lpfn, + LPARAM lParam); + +extern(Windows) export BOOL SwitchDesktop( + HDESK hDesktop); + +extern(Windows) export BOOL SetThreadDesktop( + HDESK hDesktop); + +extern(Windows) export BOOL CloseDesktop( + HDESK hDesktop); + +extern(Windows) export HDESK GetThreadDesktop( + DWORD dwThreadId); +// #endif /* !NODESKTOP */ + +// #ifndef NOWINDOWSTATION + +enum : uint { WINSTA_ENUMDESKTOPS = 0x0001 } +enum : uint { WINSTA_READATTRIBUTES = 0x0002 } +enum : uint { WINSTA_ACCESSCLIPBOARD = 0x0004 } +enum : uint { WINSTA_CREATEDESKTOP = 0x0008 } +enum : uint { WINSTA_WRITEATTRIBUTES = 0x0010 } +enum : uint { WINSTA_ACCESSGLOBALATOMS = 0x0020 } +enum : uint { WINSTA_EXITWINDOWS = 0x0040 } +enum : uint { WINSTA_ENUMERATE = 0x0100 } +enum : uint { WINSTA_READSCREEN = 0x0200 } + +enum : uint { WSF_VISIBLE = 0x0001 } + +extern(Windows) export HWINSTA CreateWindowStationA( + LPCSTR lpwinsta, + DWORD dwReserved, + ACCESS_MASK dwDesiredAccess, + LPSECURITY_ATTRIBUTES lpsa); +extern(Windows) export HWINSTA CreateWindowStationW( + LPCWSTR lpwinsta, + DWORD dwReserved, + ACCESS_MASK dwDesiredAccess, + LPSECURITY_ATTRIBUTES lpsa); +// #ifdef UNICODE +alias CreateWindowStationW CreateWindowStation; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HWINSTA OpenWindowStationA( + LPCSTR lpszWinSta, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); +extern(Windows) export HWINSTA OpenWindowStationW( + LPCWSTR lpszWinSta, + BOOL fInherit, + ACCESS_MASK dwDesiredAccess); +// #ifdef UNICODE +alias OpenWindowStationW OpenWindowStation; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EnumWindowStationsA( + WINSTAENUMPROCA lpEnumFunc, + LPARAM lParam); +extern(Windows) export BOOL EnumWindowStationsW( + WINSTAENUMPROCW lpEnumFunc, + LPARAM lParam); +// #ifdef UNICODE +alias EnumWindowStationsW EnumWindowStations; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CloseWindowStation( + HWINSTA hWinSta); + +extern(Windows) export BOOL SetProcessWindowStation( + HWINSTA hWinSta); + +extern(Windows) export HWINSTA GetProcessWindowStation(); +// #endif /* !NOWINDOWSTATION */ + +// #ifndef NOSECURITY + +extern(Windows) export BOOL SetUserObjectSecurity( + HANDLE hObj, + PSECURITY_INFORMATION pSIRequested, + PSECURITY_DESCRIPTOR pSID); + +extern(Windows) export BOOL GetUserObjectSecurity( + HANDLE hObj, + PSECURITY_INFORMATION pSIRequested, + PSECURITY_DESCRIPTOR pSID, + DWORD nLength, + LPDWORD lpnLengthNeeded); + +enum : uint { UOI_FLAGS = 1 } +enum : uint { UOI_NAME = 2 } +enum : uint { UOI_TYPE = 3 } +enum : uint { UOI_USER_SID = 4 } + +struct tagUSEROBJECTFLAGS { + BOOL fInherit; + BOOL fReserved; + DWORD dwFlags; +} +alias tagUSEROBJECTFLAGS USEROBJECTFLAGS; +alias tagUSEROBJECTFLAGS* PUSEROBJECTFLAGS; + +extern(Windows) export BOOL GetUserObjectInformationA( + HANDLE hObj, + int nIndex, + PVOID pvInfo, + DWORD nLength, + LPDWORD lpnLengthNeeded); +extern(Windows) export BOOL GetUserObjectInformationW( + HANDLE hObj, + int nIndex, + PVOID pvInfo, + DWORD nLength, + LPDWORD lpnLengthNeeded); +// #ifdef UNICODE +alias GetUserObjectInformationW GetUserObjectInformation; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetUserObjectInformationA( + HANDLE hObj, + int nIndex, + PVOID pvInfo, + DWORD nLength); +extern(Windows) export BOOL SetUserObjectInformationW( + HANDLE hObj, + int nIndex, + PVOID pvInfo, + DWORD nLength); +// #ifdef UNICODE +alias SetUserObjectInformationW SetUserObjectInformation; +// #else +// #... +// #endif // !UNICODE + +// #endif /* !NOSECURITY */ + +// #if(WINVER >= 0x0400) +struct tagWNDCLASSEXA { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; + HICON hIconSm; +} +alias tagWNDCLASSEXA WNDCLASSEXA; +alias tagWNDCLASSEXA* PWNDCLASSEXA; +alias tagWNDCLASSEXA* NPWNDCLASSEXA; +alias tagWNDCLASSEXA* LPWNDCLASSEXA; + +struct tagWNDCLASSEXW { + UINT cbSize; + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; + HICON hIconSm; +} +alias tagWNDCLASSEXW WNDCLASSEXW; +alias tagWNDCLASSEXW* PWNDCLASSEXW; +alias tagWNDCLASSEXW* NPWNDCLASSEXW; +alias tagWNDCLASSEXW* LPWNDCLASSEXW; + +// #ifdef UNICODE +alias WNDCLASSEXW WNDCLASSEX; +alias PWNDCLASSEXW PWNDCLASSEX; +alias NPWNDCLASSEXW NPWNDCLASSEX; +alias LPWNDCLASSEXW LPWNDCLASSEX; +// #else +// ... +// #endif // UNICODE +// #endif /* WINVER >= 0x0400 */ + +struct tagWNDCLASSA { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCSTR lpszMenuName; + LPCSTR lpszClassName; +} +alias tagWNDCLASSA WNDCLASSA; +alias tagWNDCLASSA* PWNDCLASSA; +alias tagWNDCLASSA* NPWNDCLASSA; +alias tagWNDCLASSA* LPWNDCLASSA; + +struct tagWNDCLASSW { + UINT style; + WNDPROC lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + HINSTANCE hInstance; + HICON hIcon; + HCURSOR hCursor; + HBRUSH hbrBackground; + LPCWSTR lpszMenuName; + LPCWSTR lpszClassName; +} +alias tagWNDCLASSW WNDCLASSW; +alias tagWNDCLASSW* PWNDCLASSW; +alias tagWNDCLASSW* NPWNDCLASSW; +alias tagWNDCLASSW* LPWNDCLASSW; + +// #ifdef UNICODE +alias WNDCLASSW WNDCLASS; +alias PWNDCLASSW PWNDCLASS; +alias NPWNDCLASSW NPWNDCLASS; +alias LPWNDCLASSW LPWNDCLASS; +// #else +// ... +// #endif // UNICODE + +// #ifndef NOMSG + +struct tagMSG { + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +// #ifdef _MAC +// ... +// #endif +} +alias tagMSG MSG; +alias tagMSG* PMSG; +alias tagMSG* NPMSG; +alias tagMSG* LPMSG; + +// #define POINTSTOPOINT(pt, pts) { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); } + +// #define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x), (short)((pt).y))) +alias MAKELONG MAKEWPARAM; +alias MAKELONG MAKELPARAM; +alias MAKELONG MAKELRESULT; + +// #endif /* !NOMSG */ + +// #ifndef NOWINOFFSETS + +enum { GWL_WNDPROC = -4 } +enum { GWL_HINSTANCE = -6 } +enum { GWL_HWNDPARENT = -8 } +enum { GWL_STYLE = -16 } +enum { GWL_EXSTYLE = -20 } +enum { GWL_USERDATA = -21 } +enum { GWL_ID = -12 } + +// #ifdef _WIN64 + +// #... +// #... +// #... +// #... + +// #endif /* _WIN64 */ + +enum { GWLP_WNDPROC = -4 } +enum { GWLP_HINSTANCE = -6 } +enum { GWLP_HWNDPARENT = -8 } +enum { GWLP_USERDATA = -21 } +enum { GWLP_ID = -12 } + +enum { GCL_MENUNAME = -8 } +enum { GCL_HBRBACKGROUND = -10 } +enum { GCL_HCURSOR = -12 } +enum { GCL_HICON = -14 } +enum { GCL_HMODULE = -16 } +enum { GCL_CBWNDEXTRA = -18 } +enum { GCL_CBCLSEXTRA = -20 } +enum { GCL_WNDPROC = -24 } +enum { GCL_STYLE = -26 } +enum { GCW_ATOM = -32 } + +// #if(WINVER >= 0x0400) +enum { GCL_HICONSM = -34 } +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _WIN64 + +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #endif /* _WIN64 */ + +enum { GCLP_MENUNAME = -8 } +enum { GCLP_HBRBACKGROUND = -10 } +enum { GCLP_HCURSOR = -12 } +enum { GCLP_HICON = -14 } +enum { GCLP_HMODULE = -16 } +enum { GCLP_WNDPROC = -24 } +enum { GCLP_HICONSM = -34 } + +// #endif /* !NOWINOFFSETS */ + +// #ifndef NOWINMESSAGES + +enum : uint { WM_NULL = 0x0000 } +enum : uint { WM_CREATE = 0x0001 } +enum : uint { WM_DESTROY = 0x0002 } +enum : uint { WM_MOVE = 0x0003 } +enum : uint { WM_SIZE = 0x0005 } + +enum : uint { WM_ACTIVATE = 0x0006 } + +enum : uint { WA_INACTIVE = 0 } +enum : uint { WA_ACTIVE = 1 } +enum : uint { WA_CLICKACTIVE = 2 } + +enum : uint { WM_SETFOCUS = 0x0007 } +enum : uint { WM_KILLFOCUS = 0x0008 } +enum : uint { WM_ENABLE = 0x000A } +enum : uint { WM_SETREDRAW = 0x000B } +enum : uint { WM_SETTEXT = 0x000C } +enum : uint { WM_GETTEXT = 0x000D } +enum : uint { WM_GETTEXTLENGTH = 0x000E } +enum : uint { WM_PAINT = 0x000F } +enum : uint { WM_CLOSE = 0x0010 } +// #ifndef _WIN32_WCE +enum : uint { WM_QUERYENDSESSION = 0x0011 } +enum : uint { WM_QUERYOPEN = 0x0013 } +enum : uint { WM_ENDSESSION = 0x0016 } +// #endif +enum : uint { WM_QUIT = 0x0012 } +enum : uint { WM_ERASEBKGND = 0x0014 } +enum : uint { WM_SYSCOLORCHANGE = 0x0015 } +enum : uint { WM_SHOWWINDOW = 0x0018 } +enum : uint { WM_WININICHANGE = 0x001A } +// #if(WINVER >= 0x0400) +alias WM_WININICHANGE WM_SETTINGCHANGE; +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_DEVMODECHANGE = 0x001B } +enum : uint { WM_ACTIVATEAPP = 0x001C } +enum : uint { WM_FONTCHANGE = 0x001D } +enum : uint { WM_TIMECHANGE = 0x001E } +enum : uint { WM_CANCELMODE = 0x001F } +enum : uint { WM_SETCURSOR = 0x0020 } +enum : uint { WM_MOUSEACTIVATE = 0x0021 } +enum : uint { WM_CHILDACTIVATE = 0x0022 } +enum : uint { WM_QUEUESYNC = 0x0023 } + +enum : uint { WM_GETMINMAXINFO = 0x0024 } + +struct tagMINMAXINFO { + POINT ptReserved; + POINT ptMaxSize; + POINT ptMaxPosition; + POINT ptMinTrackSize; + POINT ptMaxTrackSize; +} +alias tagMINMAXINFO MINMAXINFO; +alias tagMINMAXINFO* PMINMAXINFO; +alias tagMINMAXINFO* LPMINMAXINFO; + +enum : uint { WM_PAINTICON = 0x0026 } +enum : uint { WM_ICONERASEBKGND = 0x0027 } +enum : uint { WM_NEXTDLGCTL = 0x0028 } +enum : uint { WM_SPOOLERSTATUS = 0x002A } +enum : uint { WM_DRAWITEM = 0x002B } +enum : uint { WM_MEASUREITEM = 0x002C } +enum : uint { WM_DELETEITEM = 0x002D } +enum : uint { WM_VKEYTOITEM = 0x002E } +enum : uint { WM_CHARTOITEM = 0x002F } +enum : uint { WM_SETFONT = 0x0030 } +enum : uint { WM_GETFONT = 0x0031 } +enum : uint { WM_SETHOTKEY = 0x0032 } +enum : uint { WM_GETHOTKEY = 0x0033 } +enum : uint { WM_QUERYDRAGICON = 0x0037 } +enum : uint { WM_COMPAREITEM = 0x0039 } +// #if(WINVER >= 0x0500) +// #ifndef _WIN32_WCE +enum : uint { WM_GETOBJECT = 0x003D } +// #endif +// #endif /* WINVER >= 0x0500 */ +enum : uint { WM_COMPACTING = 0x0041 } +enum : uint { WM_COMMNOTIFY = 0x0044 } +enum : uint { WM_WINDOWPOSCHANGING = 0x0046 } +enum : uint { WM_WINDOWPOSCHANGED = 0x0047 } + +enum : uint { WM_POWER = 0x0048 } + +enum : uint { PWR_OK = 1 } +enum { PWR_FAIL = -1 } +enum : uint { PWR_SUSPENDREQUEST = 1 } +enum : uint { PWR_SUSPENDRESUME = 2 } +enum : uint { PWR_CRITICALRESUME = 3 } + +enum : uint { WM_COPYDATA = 0x004A } +enum : uint { WM_CANCELJOURNAL = 0x004B } + +struct tagCOPYDATASTRUCT { + ULONG_PTR dwData; + DWORD cbData; + PVOID lpData; +} +alias tagCOPYDATASTRUCT COPYDATASTRUCT; +alias tagCOPYDATASTRUCT* PCOPYDATASTRUCT; + +// #if(WINVER >= 0x0400) +struct tagMDINEXTMENU { + HMENU hmenuIn; + HMENU hmenuNext; + HWND hwndNext; +} +alias tagMDINEXTMENU MDINEXTMENU; +alias tagMDINEXTMENU* PMDINEXTMENU; +alias tagMDINEXTMENU* LPMDINEXTMENU; + +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) +enum : uint { WM_NOTIFY = 0x004E } +enum : uint { WM_INPUTLANGCHANGEREQUEST = 0x0050 } +enum : uint { WM_INPUTLANGCHANGE = 0x0051 } +enum : uint { WM_TCARD = 0x0052 } +enum : uint { WM_HELP = 0x0053 } +enum : uint { WM_USERCHANGED = 0x0054 } +enum : uint { WM_NOTIFYFORMAT = 0x0055 } + +enum : uint { NFR_ANSI = 1 } +enum : uint { NFR_UNICODE = 2 } +enum : uint { NF_QUERY = 3 } +enum : uint { NF_REQUERY = 4 } + +enum : uint { WM_CONTEXTMENU = 0x007B } +enum : uint { WM_STYLECHANGING = 0x007C } +enum : uint { WM_STYLECHANGED = 0x007D } +enum : uint { WM_DISPLAYCHANGE = 0x007E } +enum : uint { WM_GETICON = 0x007F } +enum : uint { WM_SETICON = 0x0080 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_NCCREATE = 0x0081 } +enum : uint { WM_NCDESTROY = 0x0082 } +enum : uint { WM_NCCALCSIZE = 0x0083 } +enum : uint { WM_NCHITTEST = 0x0084 } +enum : uint { WM_NCPAINT = 0x0085 } +enum : uint { WM_NCACTIVATE = 0x0086 } +enum : uint { WM_GETDLGCODE = 0x0087 } +// #ifndef _WIN32_WCE +enum : uint { WM_SYNCPAINT = 0x0088 } +// #endif +enum : uint { WM_NCMOUSEMOVE = 0x00A0 } +enum : uint { WM_NCLBUTTONDOWN = 0x00A1 } +enum : uint { WM_NCLBUTTONUP = 0x00A2 } +enum : uint { WM_NCLBUTTONDBLCLK = 0x00A3 } +enum : uint { WM_NCRBUTTONDOWN = 0x00A4 } +enum : uint { WM_NCRBUTTONUP = 0x00A5 } +enum : uint { WM_NCRBUTTONDBLCLK = 0x00A6 } +enum : uint { WM_NCMBUTTONDOWN = 0x00A7 } +enum : uint { WM_NCMBUTTONUP = 0x00A8 } +enum : uint { WM_NCMBUTTONDBLCLK = 0x00A9 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WM_NCXBUTTONDOWN = 0x00AB } +enum : uint { WM_NCXBUTTONUP = 0x00AC } +enum : uint { WM_NCXBUTTONDBLCLK = 0x00AD } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WM_INPUT = 0x00FF } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { WM_KEYFIRST = 0x0100 } +enum : uint { WM_KEYDOWN = 0x0100 } +enum : uint { WM_KEYUP = 0x0101 } +enum : uint { WM_CHAR = 0x0102 } +enum : uint { WM_DEADCHAR = 0x0103 } +enum : uint { WM_SYSKEYDOWN = 0x0104 } +enum : uint { WM_SYSKEYUP = 0x0105 } +enum : uint { WM_SYSCHAR = 0x0106 } +enum : uint { WM_SYSDEADCHAR = 0x0107 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WM_UNICHAR = 0x0109 } +enum : uint { WM_KEYLAST = 0x0109 } +enum : uint { UNICODE_NOCHAR = 0xFFFF } +// #else +// #... +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(WINVER >= 0x0400) +enum : uint { WM_IME_STARTCOMPOSITION = 0x010D } +enum : uint { WM_IME_ENDCOMPOSITION = 0x010E } +enum : uint { WM_IME_COMPOSITION = 0x010F } +enum : uint { WM_IME_KEYLAST = 0x010F } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_INITDIALOG = 0x0110 } +enum : uint { WM_COMMAND = 0x0111 } +enum : uint { WM_SYSCOMMAND = 0x0112 } +enum : uint { WM_TIMER = 0x0113 } +enum : uint { WM_HSCROLL = 0x0114 } +enum : uint { WM_VSCROLL = 0x0115 } +enum : uint { WM_INITMENU = 0x0116 } +enum : uint { WM_INITMENUPOPUP = 0x0117 } +enum : uint { WM_MENUSELECT = 0x011F } +enum : uint { WM_MENUCHAR = 0x0120 } +enum : uint { WM_ENTERIDLE = 0x0121 } +// #if(WINVER >= 0x0500) +// #ifndef _WIN32_WCE +enum : uint { WM_MENURBUTTONUP = 0x0122 } +enum : uint { WM_MENUDRAG = 0x0123 } +enum : uint { WM_MENUGETOBJECT = 0x0124 } +enum : uint { WM_UNINITMENUPOPUP = 0x0125 } +enum : uint { WM_MENUCOMMAND = 0x0126 } + +// #ifndef _WIN32_WCE +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WM_CHANGEUISTATE = 0x0127 } +enum : uint { WM_UPDATEUISTATE = 0x0128 } +enum : uint { WM_QUERYUISTATE = 0x0129 } + +enum : uint { UIS_SET = 1 } +enum : uint { UIS_CLEAR = 2 } +enum : uint { UIS_INITIALIZE = 3 } + +enum : uint { UISF_HIDEFOCUS = 0x1 } +enum : uint { UISF_HIDEACCEL = 0x2 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { UISF_ACTIVE = 0x4 } +// #endif /* _WIN32_WINNT >= 0x0501 */ +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #endif + +// #endif +// #endif /* WINVER >= 0x0500 */ + +enum : uint { WM_CTLCOLORMSGBOX = 0x0132 } +enum : uint { WM_CTLCOLOREDIT = 0x0133 } +enum : uint { WM_CTLCOLORLISTBOX = 0x0134 } +enum : uint { WM_CTLCOLORBTN = 0x0135 } +enum : uint { WM_CTLCOLORDLG = 0x0136 } +enum : uint { WM_CTLCOLORSCROLLBAR = 0x0137 } +enum : uint { WM_CTLCOLORSTATIC = 0x0138 } + +enum : uint { WM_MOUSEFIRST = 0x0200 } +enum : uint { WM_MOUSEMOVE = 0x0200 } +enum : uint { WM_LBUTTONDOWN = 0x0201 } +enum : uint { WM_LBUTTONUP = 0x0202 } +enum : uint { WM_LBUTTONDBLCLK = 0x0203 } +enum : uint { WM_RBUTTONDOWN = 0x0204 } +enum : uint { WM_RBUTTONUP = 0x0205 } +enum : uint { WM_RBUTTONDBLCLK = 0x0206 } +enum : uint { WM_MBUTTONDOWN = 0x0207 } +enum : uint { WM_MBUTTONUP = 0x0208 } +enum : uint { WM_MBUTTONDBLCLK = 0x0209 } +// #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +enum : uint { WM_MOUSEWHEEL = 0x020A } +// #endif +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { WM_XBUTTONDOWN = 0x020B } +enum : uint { WM_XBUTTONUP = 0x020C } +enum : uint { WM_XBUTTONDBLCLK = 0x020D } +// #endif +// #if (_WIN32_WINNT >= 0x0500) +enum : uint { WM_MOUSELAST = 0x020D } +// #elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +// #... +// #else +// #... +// #endif /* (_WIN32_WINNT >= 0x0500) */ + +// #if(_WIN32_WINNT >= 0x0400) + +enum : uint { WHEEL_DELTA = 120 } +// #define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam)) + +enum : uint { WHEEL_PAGESCROLL = UINT_MAX } +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0500) +// #define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam)) +// #define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam)) +// #define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam)) + +enum : uint { XBUTTON1 = 0x0001 } +enum : uint { XBUTTON2 = 0x0002 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { WM_PARENTNOTIFY = 0x0210 } +enum : uint { WM_ENTERMENULOOP = 0x0211 } +enum : uint { WM_EXITMENULOOP = 0x0212 } + +// #if(WINVER >= 0x0400) +enum : uint { WM_NEXTMENU = 0x0213 } +enum : uint { WM_SIZING = 0x0214 } +enum : uint { WM_CAPTURECHANGED = 0x0215 } +enum : uint { WM_MOVING = 0x0216 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) + +enum : uint { WM_POWERBROADCAST = 0x0218 } + +// #ifndef _WIN32_WCE +enum : uint { PBT_APMQUERYSUSPEND = 0x0000 } +enum : uint { PBT_APMQUERYSTANDBY = 0x0001 } + +enum : uint { PBT_APMQUERYSUSPENDFAILED = 0x0002 } +enum : uint { PBT_APMQUERYSTANDBYFAILED = 0x0003 } + +enum : uint { PBT_APMSUSPEND = 0x0004 } +enum : uint { PBT_APMSTANDBY = 0x0005 } + +enum : uint { PBT_APMRESUMECRITICAL = 0x0006 } +enum : uint { PBT_APMRESUMESUSPEND = 0x0007 } +enum : uint { PBT_APMRESUMESTANDBY = 0x0008 } + +enum : uint { PBTF_APMRESUMEFROMFAILURE = 0x00000001 } + +enum : uint { PBT_APMBATTERYLOW = 0x0009 } +enum : uint { PBT_APMPOWERSTATUSCHANGE = 0x000A } + +enum : uint { PBT_APMOEMEVENT = 0x000B } +enum : uint { PBT_APMRESUMEAUTOMATIC = 0x0012 } +// #endif + +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) +enum : uint { WM_DEVICECHANGE = 0x0219 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_MDICREATE = 0x0220 } +enum : uint { WM_MDIDESTROY = 0x0221 } +enum : uint { WM_MDIACTIVATE = 0x0222 } +enum : uint { WM_MDIRESTORE = 0x0223 } +enum : uint { WM_MDINEXT = 0x0224 } +enum : uint { WM_MDIMAXIMIZE = 0x0225 } +enum : uint { WM_MDITILE = 0x0226 } +enum : uint { WM_MDICASCADE = 0x0227 } +enum : uint { WM_MDIICONARRANGE = 0x0228 } +enum : uint { WM_MDIGETACTIVE = 0x0229 } + +enum : uint { WM_MDISETMENU = 0x0230 } +enum : uint { WM_ENTERSIZEMOVE = 0x0231 } +enum : uint { WM_EXITSIZEMOVE = 0x0232 } +enum : uint { WM_DROPFILES = 0x0233 } +enum : uint { WM_MDIREFRESHMENU = 0x0234 } + +// #if(WINVER >= 0x0400) +enum : uint { WM_IME_SETCONTEXT = 0x0281 } +enum : uint { WM_IME_NOTIFY = 0x0282 } +enum : uint { WM_IME_CONTROL = 0x0283 } +enum : uint { WM_IME_COMPOSITIONFULL = 0x0284 } +enum : uint { WM_IME_SELECT = 0x0285 } +enum : uint { WM_IME_CHAR = 0x0286 } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) +enum : uint { WM_IME_REQUEST = 0x0288 } +// #endif /* WINVER >= 0x0500 */ +// #if(WINVER >= 0x0400) +enum : uint { WM_IME_KEYDOWN = 0x0290 } +enum : uint { WM_IME_KEYUP = 0x0291 } +// #endif /* WINVER >= 0x0400 */ + +// #if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500)) +enum : uint { WM_MOUSEHOVER = 0x02A1 } +enum : uint { WM_MOUSELEAVE = 0x02A3 } +// #endif +// #if(WINVER >= 0x0500) +enum : uint { WM_NCMOUSEHOVER = 0x02A0 } +enum : uint { WM_NCMOUSELEAVE = 0x02A2 } +// #endif /* WINVER >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WM_WTSSESSION_CHANGE = 0x02B1 } + +enum : uint { WM_TABLET_FIRST = 0x02c0 } +enum : uint { WM_TABLET_LAST = 0x02df } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { WM_CUT = 0x0300 } +enum : uint { WM_COPY = 0x0301 } +enum : uint { WM_PASTE = 0x0302 } +enum : uint { WM_CLEAR = 0x0303 } +enum : uint { WM_UNDO = 0x0304 } +enum : uint { WM_RENDERFORMAT = 0x0305 } +enum : uint { WM_RENDERALLFORMATS = 0x0306 } +enum : uint { WM_DESTROYCLIPBOARD = 0x0307 } +enum : uint { WM_DRAWCLIPBOARD = 0x0308 } +enum : uint { WM_PAINTCLIPBOARD = 0x0309 } +enum : uint { WM_VSCROLLCLIPBOARD = 0x030A } +enum : uint { WM_SIZECLIPBOARD = 0x030B } +enum : uint { WM_ASKCBFORMATNAME = 0x030C } +enum : uint { WM_CHANGECBCHAIN = 0x030D } +enum : uint { WM_HSCROLLCLIPBOARD = 0x030E } +enum : uint { WM_QUERYNEWPALETTE = 0x030F } +enum : uint { WM_PALETTEISCHANGING = 0x0310 } +enum : uint { WM_PALETTECHANGED = 0x0311 } +enum : uint { WM_HOTKEY = 0x0312 } + +// #if(WINVER >= 0x0400) +enum : uint { WM_PRINT = 0x0317 } +enum : uint { WM_PRINTCLIENT = 0x0318 } +// #endif /* WINVER >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WM_APPCOMMAND = 0x0319 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WM_THEMECHANGED = 0x031A } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(WINVER >= 0x0400) + +enum : uint { WM_HANDHELDFIRST = 0x0358 } +enum : uint { WM_HANDHELDLAST = 0x035F } + +enum : uint { WM_AFXFIRST = 0x0360 } +enum : uint { WM_AFXLAST = 0x037F } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_PENWINFIRST = 0x0380 } +enum : uint { WM_PENWINLAST = 0x038F } + +// #if(WINVER >= 0x0400) +enum : uint { WM_APP = 0x8000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { WM_USER = 0x0400 } + +// #if(WINVER >= 0x0400) + +enum : uint { WMSZ_LEFT = 1 } +enum : uint { WMSZ_RIGHT = 2 } +enum : uint { WMSZ_TOP = 3 } +enum : uint { WMSZ_TOPLEFT = 4 } +enum : uint { WMSZ_TOPRIGHT = 5 } +enum : uint { WMSZ_BOTTOM = 6 } +enum : uint { WMSZ_BOTTOMLEFT = 7 } +enum : uint { WMSZ_BOTTOMRIGHT = 8 } +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NONCMESSAGES + +enum { HTERROR = -2 } +enum { HTTRANSPARENT = -1 } +enum : uint { HTNOWHERE = 0 } +enum : uint { HTCLIENT = 1 } +enum : uint { HTCAPTION = 2 } +enum : uint { HTSYSMENU = 3 } +enum : uint { HTGROWBOX = 4 } +alias HTGROWBOX HTSIZE; +enum : uint { HTMENU = 5 } +enum : uint { HTHSCROLL = 6 } +enum : uint { HTVSCROLL = 7 } +enum : uint { HTMINBUTTON = 8 } +enum : uint { HTMAXBUTTON = 9 } +enum : uint { HTLEFT = 10 } +enum : uint { HTRIGHT = 11 } +enum : uint { HTTOP = 12 } +enum : uint { HTTOPLEFT = 13 } +enum : uint { HTTOPRIGHT = 14 } +enum : uint { HTBOTTOM = 15 } +enum : uint { HTBOTTOMLEFT = 16 } +enum : uint { HTBOTTOMRIGHT = 17 } +enum : uint { HTBORDER = 18 } +alias HTMINBUTTON HTREDUCE; +alias HTMAXBUTTON HTZOOM; +alias HTLEFT HTSIZEFIRST; +alias HTBOTTOMRIGHT HTSIZELAST; +// #if(WINVER >= 0x0400) +enum : uint { HTOBJECT = 19 } +enum : uint { HTCLOSE = 20 } +enum : uint { HTHELP = 21 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SMTO_NORMAL = 0x0000 } +enum : uint { SMTO_BLOCK = 0x0001 } +enum : uint { SMTO_ABORTIFHUNG = 0x0002 } +// #if(WINVER >= 0x0500) +enum : uint { SMTO_NOTIMEOUTIFNOTHUNG = 0x0008 } +// #endif /* WINVER >= 0x0500 */ +// #endif /* !NONCMESSAGES */ + +enum : uint { MA_ACTIVATE = 1 } +enum : uint { MA_ACTIVATEANDEAT = 2 } +enum : uint { MA_NOACTIVATE = 3 } +enum : uint { MA_NOACTIVATEANDEAT = 4 } + +enum : uint { ICON_SMALL = 0 } +enum : uint { ICON_BIG = 1 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { ICON_SMALL2 = 2 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export UINT RegisterWindowMessageA( + LPCSTR lpString); +extern(Windows) export UINT RegisterWindowMessageW( + LPCWSTR lpString); +// #ifdef UNICODE +alias RegisterWindowMessageW RegisterWindowMessage; +// #else +// #... +// #endif // !UNICODE + +enum : uint { SIZE_RESTORED = 0 } +enum : uint { SIZE_MINIMIZED = 1 } +enum : uint { SIZE_MAXIMIZED = 2 } +enum : uint { SIZE_MAXSHOW = 3 } +enum : uint { SIZE_MAXHIDE = 4 } + +alias SIZE_RESTORED SIZENORMAL; +alias SIZE_MINIMIZED SIZEICONIC; +alias SIZE_MAXIMIZED SIZEFULLSCREEN; +alias SIZE_MAXSHOW SIZEZOOMSHOW; +alias SIZE_MAXHIDE SIZEZOOMHIDE; + +struct tagWINDOWPOS { + HWND hwnd; + HWND hwndInsertAfter; + int x; + int y; + int cx; + int cy; + UINT flags; +} +alias tagWINDOWPOS WINDOWPOS; +alias tagWINDOWPOS* LPWINDOWPOS; +alias tagWINDOWPOS* PWINDOWPOS; + +struct tagNCCALCSIZE_PARAMS { + RECT rgrc[3]; + PWINDOWPOS lppos; +} +alias tagNCCALCSIZE_PARAMS NCCALCSIZE_PARAMS; +alias tagNCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS; + +enum : uint { WVR_ALIGNTOP = 0x0010 } +enum : uint { WVR_ALIGNLEFT = 0x0020 } +enum : uint { WVR_ALIGNBOTTOM = 0x0040 } +enum : uint { WVR_ALIGNRIGHT = 0x0080 } +enum : uint { WVR_HREDRAW = 0x0100 } +enum : uint { WVR_VREDRAW = 0x0200 } +enum : uint { WVR_REDRAW = WVR_HREDRAW | WVR_VREDRAW } +enum : uint { WVR_VALIDRECTS = 0x0400 } + +// #ifndef NOKEYSTATES + +enum : uint { MK_LBUTTON = 0x0001 } +enum : uint { MK_RBUTTON = 0x0002 } +enum : uint { MK_SHIFT = 0x0004 } +enum : uint { MK_CONTROL = 0x0008 } +enum : uint { MK_MBUTTON = 0x0010 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { MK_XBUTTON1 = 0x0020 } +enum : uint { MK_XBUTTON2 = 0x0040 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #endif /* !NOKEYSTATES */ + +// #if(_WIN32_WINNT >= 0x0400) +// #ifndef NOTRACKMOUSEEVENT + +enum : uint { TME_HOVER = 0x00000001 } +enum : uint { TME_LEAVE = 0x00000002 } +// #if(WINVER >= 0x0500) +enum : uint { TME_NONCLIENT = 0x00000010 } +// #endif /* WINVER >= 0x0500 */ +enum : uint { TME_QUERY = 0x40000000 } +enum : uint { TME_CANCEL = 0x80000000 } + +enum : uint { HOVER_DEFAULT = 0xFFFFFFFF } +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0400) +struct tagTRACKMOUSEEVENT { + DWORD cbSize; + DWORD dwFlags; + HWND hwndTrack; + DWORD dwHoverTime; +} +alias tagTRACKMOUSEEVENT TRACKMOUSEEVENT; +alias tagTRACKMOUSEEVENT* LPTRACKMOUSEEVENT; + +extern(Windows) export BOOL TrackMouseEvent( + LPTRACKMOUSEEVENT lpEventTrack); +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0400) + +// #endif /* !NOTRACKMOUSEEVENT */ +// #endif /* _WIN32_WINNT >= 0x0400 */ + +// #endif /* !NOWINMESSAGES */ + +// #ifndef NOWINSTYLES + +enum : uint { WS_OVERLAPPED = 0x00000000 } +enum : uint { WS_POPUP = 0x80000000 } +enum : uint { WS_CHILD = 0x40000000 } +enum : uint { WS_MINIMIZE = 0x20000000 } +enum : uint { WS_VISIBLE = 0x10000000 } +enum : uint { WS_DISABLED = 0x08000000 } +enum : uint { WS_CLIPSIBLINGS = 0x04000000 } +enum : uint { WS_CLIPCHILDREN = 0x02000000 } +enum : uint { WS_MAXIMIZE = 0x01000000 } +enum : uint { WS_CAPTION = 0x00C00000 } +enum : uint { WS_BORDER = 0x00800000 } +enum : uint { WS_DLGFRAME = 0x00400000 } +enum : uint { WS_VSCROLL = 0x00200000 } +enum : uint { WS_HSCROLL = 0x00100000 } +enum : uint { WS_SYSMENU = 0x00080000 } +enum : uint { WS_THICKFRAME = 0x00040000 } +enum : uint { WS_GROUP = 0x00020000 } +enum : uint { WS_TABSTOP = 0x00010000 } + +enum : uint { WS_MINIMIZEBOX = 0x00020000 } +enum : uint { WS_MAXIMIZEBOX = 0x00010000 } + +alias WS_OVERLAPPED WS_TILED; +alias WS_MINIMIZE WS_ICONIC; +alias WS_THICKFRAME WS_SIZEBOX; +// #define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW + +enum : uint { WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX } + +enum : uint { WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU } + +enum : uint { WS_CHILDWINDOW = WS_CHILD } + +enum : uint { WS_EX_DLGMODALFRAME = 0x00000001 } +enum : uint { WS_EX_NOPARENTNOTIFY = 0x00000004 } +enum : uint { WS_EX_TOPMOST = 0x00000008 } +enum : uint { WS_EX_ACCEPTFILES = 0x00000010 } +enum : uint { WS_EX_TRANSPARENT = 0x00000020 } +// #if(WINVER >= 0x0400) +enum : uint { WS_EX_MDICHILD = 0x00000040 } +enum : uint { WS_EX_TOOLWINDOW = 0x00000080 } +enum : uint { WS_EX_WINDOWEDGE = 0x00000100 } +enum : uint { WS_EX_CLIENTEDGE = 0x00000200 } +enum : uint { WS_EX_CONTEXTHELP = 0x00000400 } + +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0400) + +enum : uint { WS_EX_RIGHT = 0x00001000 } +enum : uint { WS_EX_LEFT = 0x00000000 } +enum : uint { WS_EX_RTLREADING = 0x00002000 } +enum : uint { WS_EX_LTRREADING = 0x00000000 } +enum : uint { WS_EX_LEFTSCROLLBAR = 0x00004000 } +enum : uint { WS_EX_RIGHTSCROLLBAR = 0x00000000 } + +enum : uint { WS_EX_CONTROLPARENT = 0x00010000 } +enum : uint { WS_EX_STATICEDGE = 0x00020000 } +enum : uint { WS_EX_APPWINDOW = 0x00040000 } + +enum : uint { WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE } +enum : uint { WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST } + +// #endif /* WINVER >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WS_EX_LAYERED = 0x00080000 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0500) +enum : uint { WS_EX_NOINHERITLAYOUT = 0x00100000 } +enum : uint { WS_EX_LAYOUTRTL = 0x00400000 } +// #endif /* WINVER >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { WS_EX_COMPOSITED = 0x02000000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WS_EX_NOACTIVATE = 0x08000000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +enum : uint { CS_VREDRAW = 0x0001 } +enum : uint { CS_HREDRAW = 0x0002 } +enum : uint { CS_DBLCLKS = 0x0008 } +enum : uint { CS_OWNDC = 0x0020 } +enum : uint { CS_CLASSDC = 0x0040 } +enum : uint { CS_PARENTDC = 0x0080 } +enum : uint { CS_NOCLOSE = 0x0200 } +enum : uint { CS_SAVEBITS = 0x0800 } +enum : uint { CS_BYTEALIGNCLIENT = 0x1000 } +enum : uint { CS_BYTEALIGNWINDOW = 0x2000 } +enum : uint { CS_GLOBALCLASS = 0x4000 } + +enum : uint { CS_IME = 0x00010000 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { CS_DROPSHADOW = 0x00020000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #endif /* !NOWINSTYLES */ +// #if(WINVER >= 0x0400) + +enum : uint { PRF_CHECKVISIBLE = 0x00000001 } +enum : uint { PRF_NONCLIENT = 0x00000002 } +enum : uint { PRF_CLIENT = 0x00000004 } +enum : uint { PRF_ERASEBKGND = 0x00000008 } +enum : uint { PRF_CHILDREN = 0x00000010 } +enum : uint { PRF_OWNED = 0x00000020 } + +enum : uint { BDR_RAISEDOUTER = 0x0001 } +enum : uint { BDR_SUNKENOUTER = 0x0002 } +enum : uint { BDR_RAISEDINNER = 0x0004 } +enum : uint { BDR_SUNKENINNER = 0x0008 } + +enum : uint { BDR_OUTER = BDR_RAISEDOUTER | BDR_SUNKENOUTER } +enum : uint { BDR_INNER = BDR_RAISEDINNER | BDR_SUNKENINNER } +enum : uint { BDR_RAISED = BDR_RAISEDOUTER | BDR_RAISEDINNER } +enum : uint { BDR_SUNKEN = BDR_SUNKENOUTER | BDR_SUNKENINNER } + +enum : uint { EDGE_RAISED = BDR_RAISEDOUTER | BDR_RAISEDINNER } +enum : uint { EDGE_SUNKEN = BDR_SUNKENOUTER | BDR_SUNKENINNER } +enum : uint { EDGE_ETCHED = BDR_SUNKENOUTER | BDR_RAISEDINNER } +enum : uint { EDGE_BUMP = BDR_RAISEDOUTER | BDR_SUNKENINNER } + +enum : uint { BF_LEFT = 0x0001 } +enum : uint { BF_TOP = 0x0002 } +enum : uint { BF_RIGHT = 0x0004 } +enum : uint { BF_BOTTOM = 0x0008 } + +enum : uint { BF_TOPLEFT = BF_TOP | BF_LEFT } +enum : uint { BF_TOPRIGHT = BF_TOP | BF_RIGHT } +enum : uint { BF_BOTTOMLEFT = BF_BOTTOM | BF_LEFT } +enum : uint { BF_BOTTOMRIGHT = BF_BOTTOM | BF_RIGHT } +enum : uint { BF_RECT = BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM } + +enum : uint { BF_DIAGONAL = 0x0010 } + +enum : uint { BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL | BF_TOP | BF_RIGHT } +enum : uint { BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL | BF_TOP | BF_LEFT } +enum : uint { BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL | BF_BOTTOM | BF_LEFT } +enum : uint { BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL | BF_BOTTOM | BF_RIGHT } + +enum : uint { BF_MIDDLE = 0x0800 } +enum : uint { BF_SOFT = 0x1000 } +enum : uint { BF_ADJUST = 0x2000 } +enum : uint { BF_FLAT = 0x4000 } +enum : uint { BF_MONO = 0x8000 } + +extern(Windows) export BOOL DrawEdge( + HDC hdc, + LPRECT qrc, + UINT edge, + UINT grfFlags); + +enum : uint { DFC_CAPTION = 1 } +enum : uint { DFC_MENU = 2 } +enum : uint { DFC_SCROLL = 3 } +enum : uint { DFC_BUTTON = 4 } +// #if(WINVER >= 0x0500) +enum : uint { DFC_POPUPMENU = 5 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { DFCS_CAPTIONCLOSE = 0x0000 } +enum : uint { DFCS_CAPTIONMIN = 0x0001 } +enum : uint { DFCS_CAPTIONMAX = 0x0002 } +enum : uint { DFCS_CAPTIONRESTORE = 0x0003 } +enum : uint { DFCS_CAPTIONHELP = 0x0004 } + +enum : uint { DFCS_MENUARROW = 0x0000 } +enum : uint { DFCS_MENUCHECK = 0x0001 } +enum : uint { DFCS_MENUBULLET = 0x0002 } +enum : uint { DFCS_MENUARROWRIGHT = 0x0004 } +enum : uint { DFCS_SCROLLUP = 0x0000 } +enum : uint { DFCS_SCROLLDOWN = 0x0001 } +enum : uint { DFCS_SCROLLLEFT = 0x0002 } +enum : uint { DFCS_SCROLLRIGHT = 0x0003 } +enum : uint { DFCS_SCROLLCOMBOBOX = 0x0005 } +enum : uint { DFCS_SCROLLSIZEGRIP = 0x0008 } +enum : uint { DFCS_SCROLLSIZEGRIPRIGHT = 0x0010 } + +enum : uint { DFCS_BUTTONCHECK = 0x0000 } +enum : uint { DFCS_BUTTONRADIOIMAGE = 0x0001 } +enum : uint { DFCS_BUTTONRADIOMASK = 0x0002 } +enum : uint { DFCS_BUTTONRADIO = 0x0004 } +enum : uint { DFCS_BUTTON3STATE = 0x0008 } +enum : uint { DFCS_BUTTONPUSH = 0x0010 } + +enum : uint { DFCS_INACTIVE = 0x0100 } +enum : uint { DFCS_PUSHED = 0x0200 } +enum : uint { DFCS_CHECKED = 0x0400 } + +// #if(WINVER >= 0x0500) +enum : uint { DFCS_TRANSPARENT = 0x0800 } +enum : uint { DFCS_HOT = 0x1000 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { DFCS_ADJUSTRECT = 0x2000 } +enum : uint { DFCS_FLAT = 0x4000 } +enum : uint { DFCS_MONO = 0x8000 } + +extern(Windows) export BOOL DrawFrameControl( + HDC, + LPRECT, + UINT, + UINT); + +enum : uint { DC_ACTIVE = 0x0001 } +enum : uint { DC_SMALLCAP = 0x0002 } +enum : uint { DC_ICON = 0x0004 } +enum : uint { DC_TEXT = 0x0008 } +enum : uint { DC_INBUTTON = 0x0010 } +// #if(WINVER >= 0x0500) +enum : uint { DC_GRADIENT = 0x0020 } +// #endif /* WINVER >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { DC_BUTTONS = 0x1000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export BOOL DrawCaption(HWND, HDC, RECT *, UINT); + +enum : uint { IDANI_OPEN = 1 } +enum : uint { IDANI_CAPTION = 3 } + +extern(Windows) export BOOL DrawAnimatedRects( + HWND hwnd, + int idAni, + RECT * lprcFrom, + RECT * lprcTo); + +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOCLIPBOARD + +enum : uint { CF_TEXT = 1 } +enum : uint { CF_BITMAP = 2 } +enum : uint { CF_METAFILEPICT = 3 } +enum : uint { CF_SYLK = 4 } +enum : uint { CF_DIF = 5 } +enum : uint { CF_TIFF = 6 } +enum : uint { CF_OEMTEXT = 7 } +enum : uint { CF_DIB = 8 } +enum : uint { CF_PALETTE = 9 } +enum : uint { CF_PENDATA = 10 } +enum : uint { CF_RIFF = 11 } +enum : uint { CF_WAVE = 12 } +enum : uint { CF_UNICODETEXT = 13 } +enum : uint { CF_ENHMETAFILE = 14 } +// #if(WINVER >= 0x0400) +enum : uint { CF_HDROP = 15 } +enum : uint { CF_LOCALE = 16 } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) +enum : uint { CF_DIBV5 = 17 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) +enum : uint { CF_MAX = 18 } +// #elif(WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +enum : uint { CF_OWNERDISPLAY = 0x0080 } +enum : uint { CF_DSPTEXT = 0x0081 } +enum : uint { CF_DSPBITMAP = 0x0082 } +enum : uint { CF_DSPMETAFILEPICT = 0x0083 } +enum : uint { CF_DSPENHMETAFILE = 0x008E } + +enum : uint { CF_PRIVATEFIRST = 0x0200 } +enum : uint { CF_PRIVATELAST = 0x02FF } + +enum : uint { CF_GDIOBJFIRST = 0x0300 } +enum : uint { CF_GDIOBJLAST = 0x03FF } + +// #endif /* !NOCLIPBOARD */ + +alias TRUE FVIRTKEY; +enum : uint { FNOINVERT = 0x02 } +enum : uint { FSHIFT = 0x04 } +enum : uint { FCONTROL = 0x08 } +enum : uint { FALT = 0x10 } + +struct tagACCEL { +// #ifndef _MAC + BYTE fVirt; + WORD key; + WORD cmd; +// #else +// ... +// #endif +} +alias tagACCEL ACCEL; +alias tagACCEL* LPACCEL; + +struct tagPAINTSTRUCT { + HDC hdc; + BOOL fErase; + RECT rcPaint; + BOOL fRestore; + BOOL fIncUpdate; + BYTE rgbReserved[32]; +} +alias tagPAINTSTRUCT PAINTSTRUCT; +alias tagPAINTSTRUCT* PPAINTSTRUCT; +alias tagPAINTSTRUCT* NPPAINTSTRUCT; +alias tagPAINTSTRUCT* LPPAINTSTRUCT; + +struct tagCREATESTRUCTA { + 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 tagCREATESTRUCTA CREATESTRUCTA; +alias tagCREATESTRUCTA* LPCREATESTRUCTA; + +struct tagCREATESTRUCTW { + 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 tagCREATESTRUCTW CREATESTRUCTW; +alias tagCREATESTRUCTW* LPCREATESTRUCTW; + +// #ifdef UNICODE +alias CREATESTRUCTW CREATESTRUCT; +alias LPCREATESTRUCTW LPCREATESTRUCT; +// #else +// ... +// #endif // UNICODE + +struct tagWINDOWPLACEMENT { + UINT length; + UINT flags; + UINT showCmd; + POINT ptMinPosition; + POINT ptMaxPosition; + RECT rcNormalPosition; +// #ifdef _MAC +// ... +// #endif +} +alias tagWINDOWPLACEMENT WINDOWPLACEMENT; + +alias WINDOWPLACEMENT* PWINDOWPLACEMENT; +alias WINDOWPLACEMENT* LPWINDOWPLACEMENT; + +enum : uint { WPF_SETMINPOSITION = 0x0001 } +enum : uint { WPF_RESTORETOMAXIMIZED = 0x0002 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { WPF_ASYNCWINDOWPLACEMENT = 0x0004 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0400) +struct tagNMHDR { + HWND hwndFrom; + UINT_PTR idFrom; + UINT code; +} +alias tagNMHDR NMHDR; + +alias NMHDR* LPNMHDR; + +struct tagSTYLESTRUCT { + DWORD styleOld; + DWORD styleNew; +} +alias tagSTYLESTRUCT STYLESTRUCT; +alias tagSTYLESTRUCT* LPSTYLESTRUCT; + +// #endif /* WINVER >= 0x0400 */ + +enum : uint { ODT_MENU = 1 } +enum : uint { ODT_LISTBOX = 2 } +enum : uint { ODT_COMBOBOX = 3 } +enum : uint { ODT_BUTTON = 4 } +// #if(WINVER >= 0x0400) +enum : uint { ODT_STATIC = 5 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { ODA_DRAWENTIRE = 0x0001 } +enum : uint { ODA_SELECT = 0x0002 } +enum : uint { ODA_FOCUS = 0x0004 } + +enum : uint { ODS_SELECTED = 0x0001 } +enum : uint { ODS_GRAYED = 0x0002 } +enum : uint { ODS_DISABLED = 0x0004 } +enum : uint { ODS_CHECKED = 0x0008 } +enum : uint { ODS_FOCUS = 0x0010 } +// #if(WINVER >= 0x0400) +enum : uint { ODS_DEFAULT = 0x0020 } +enum : uint { ODS_COMBOBOXEDIT = 0x1000 } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) +enum : uint { ODS_HOTLIGHT = 0x0040 } +enum : uint { ODS_INACTIVE = 0x0080 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { ODS_NOACCEL = 0x0100 } +enum : uint { ODS_NOFOCUSRECT = 0x0200 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #endif /* WINVER >= 0x0500 */ + +struct tagMEASUREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemWidth; + UINT itemHeight; + ULONG_PTR itemData; +} +alias tagMEASUREITEMSTRUCT MEASUREITEMSTRUCT; +alias tagMEASUREITEMSTRUCT* PMEASUREITEMSTRUCT; +alias tagMEASUREITEMSTRUCT* LPMEASUREITEMSTRUCT; + +struct tagDRAWITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + UINT itemAction; + UINT itemState; + HWND hwndItem; + HDC hDC; + RECT rcItem; + ULONG_PTR itemData; +} +alias tagDRAWITEMSTRUCT DRAWITEMSTRUCT; +alias tagDRAWITEMSTRUCT* PDRAWITEMSTRUCT; +alias tagDRAWITEMSTRUCT* LPDRAWITEMSTRUCT; + +struct tagDELETEITEMSTRUCT { + UINT CtlType; + UINT CtlID; + UINT itemID; + HWND hwndItem; + ULONG_PTR itemData; +} +alias tagDELETEITEMSTRUCT DELETEITEMSTRUCT; +alias tagDELETEITEMSTRUCT* PDELETEITEMSTRUCT; +alias tagDELETEITEMSTRUCT* LPDELETEITEMSTRUCT; + +struct tagCOMPAREITEMSTRUCT { + UINT CtlType; + UINT CtlID; + HWND hwndItem; + UINT itemID1; + ULONG_PTR itemData1; + UINT itemID2; + ULONG_PTR itemData2; + DWORD dwLocaleId; +} +alias tagCOMPAREITEMSTRUCT COMPAREITEMSTRUCT; +alias tagCOMPAREITEMSTRUCT* PCOMPAREITEMSTRUCT; +alias tagCOMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT; + +// #ifndef NOMSG + +extern(Windows) export BOOL GetMessageA( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax); +extern(Windows) export BOOL GetMessageW( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax); +// #ifdef UNICODE +alias GetMessageW GetMessage; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL TranslateMessage( + MSG *lpMsg); + +extern(Windows) export LRESULT DispatchMessageA( + MSG *lpMsg); +extern(Windows) export LRESULT DispatchMessageW( + MSG *lpMsg); +// #ifdef UNICODE +alias DispatchMessageW DispatchMessage; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetMessageQueue( + int cMessagesMax); + +extern(Windows) export BOOL PeekMessageA( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax, + UINT wRemoveMsg); +extern(Windows) export BOOL PeekMessageW( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax, + UINT wRemoveMsg); +// #ifdef UNICODE +alias PeekMessageW PeekMessage; +// #else +// #... +// #endif // !UNICODE + +enum : uint { PM_NOREMOVE = 0x0000 } +enum : uint { PM_REMOVE = 0x0001 } +enum : uint { PM_NOYIELD = 0x0002 } +// #if(WINVER >= 0x0500) +enum : uint { PM_QS_INPUT = QS_INPUT << 16 } +enum : uint { PM_QS_POSTMESSAGE = (QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16 } +enum : uint { PM_QS_PAINT = QS_PAINT << 16 } +enum : uint { PM_QS_SENDMESSAGE = QS_SENDMESSAGE << 16 } +// #endif /* WINVER >= 0x0500 */ + +// #endif /* !NOMSG */ + +extern(Windows) export BOOL RegisterHotKey( + HWND hWnd, + int id, + UINT fsModifiers, + UINT vk); + +extern(Windows) export BOOL UnregisterHotKey( + HWND hWnd, + int id); + +enum : uint { MOD_ALT = 0x0001 } +enum : uint { MOD_CONTROL = 0x0002 } +enum : uint { MOD_SHIFT = 0x0004 } +enum : uint { MOD_WIN = 0x0008 } + +enum { IDHOT_SNAPWINDOW = -1 } +enum { IDHOT_SNAPDESKTOP = -2 } + +// #ifdef WIN_INTERNAL +// #ifndef LSTRING +// #... +// #endif /* LSTRING */ +// #ifndef LFILEIO +// #... +// #endif /* LFILEIO */ +// #endif /* WIN_INTERNAL */ + +// #if(WINVER >= 0x0400) + +enum : uint { ENDSESSION_LOGOFF = 0x80000000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { EWX_LOGOFF = 0 } +enum : uint { EWX_SHUTDOWN = 0x00000001 } +enum : uint { EWX_REBOOT = 0x00000002 } +enum : uint { EWX_FORCE = 0x00000004 } +enum : uint { EWX_POWEROFF = 0x00000008 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { EWX_FORCEIFHUNG = 0x00000010 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +BOOL ExitWindows(DWORD dwReserved, UINT Code){ return ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF); } + +extern(Windows) export BOOL ExitWindowsEx( + UINT uFlags, + DWORD dwReserved); + +extern(Windows) export BOOL SwapMouseButton( + BOOL fSwap); + +extern(Windows) export DWORD GetMessagePos(); + +extern(Windows) export LONG GetMessageTime(); + +extern(Windows) export LPARAM GetMessageExtraInfo(); + +// #if(WINVER >= 0x0400) +extern(Windows) export LPARAM SetMessageExtraInfo( + LPARAM lParam); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export LRESULT SendMessageA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export LRESULT SendMessageW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +alias SendMessageW SendMessage; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LRESULT SendMessageTimeoutA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + UINT fuFlags, + UINT uTimeout, + PDWORD_PTR lpdwResult); +extern(Windows) export LRESULT SendMessageTimeoutW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + UINT fuFlags, + UINT uTimeout, + PDWORD_PTR lpdwResult); +// #ifdef UNICODE +alias SendMessageTimeoutW SendMessageTimeout; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SendNotifyMessageA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export BOOL SendNotifyMessageW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +alias SendNotifyMessageW SendNotifyMessage; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SendMessageCallbackA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + SENDASYNCPROC lpResultCallBack, + ULONG_PTR dwData); +extern(Windows) export BOOL SendMessageCallbackW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam, + SENDASYNCPROC lpResultCallBack, + ULONG_PTR dwData); +// #ifdef UNICODE +alias SendMessageCallbackW SendMessageCallback; +// #else +// #... +// #endif // !UNICODE + +// #if(_WIN32_WINNT >= 0x0501) +struct _0 { + UINT cbSize; + HDESK hdesk; + HWND hwnd; + LUID luid; +} +alias _0 BSMINFO; +alias _0* PBSMINFO; + +extern(Windows) export int BroadcastSystemMessageExA( + DWORD, + LPDWORD, + UINT, + WPARAM, + LPARAM, + PBSMINFO); +extern(Windows) export int BroadcastSystemMessageExW( + DWORD, + LPDWORD, + UINT, + WPARAM, + LPARAM, + PBSMINFO); +// #ifdef UNICODE +alias BroadcastSystemMessageExW BroadcastSystemMessageEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(WINVER >= 0x0400) + +// #if defined(_WIN32_WINNT) +extern(Windows) export int BroadcastSystemMessageA( + DWORD, + LPDWORD, + UINT, + WPARAM, + LPARAM); +extern(Windows) export int BroadcastSystemMessageW( + DWORD, + LPDWORD, + UINT, + WPARAM, + LPARAM); +// #ifdef UNICODE +alias BroadcastSystemMessageW BroadcastSystemMessage; +// #else +// #... +// #endif // !UNICODE +// #elif defined(_WIN32_WINDOWS) + +// ... + +// #endif + +enum : uint { BSM_ALLCOMPONENTS = 0x00000000 } +enum : uint { BSM_VXDS = 0x00000001 } +enum : uint { BSM_NETDRIVER = 0x00000002 } +enum : uint { BSM_INSTALLABLEDRIVERS = 0x00000004 } +enum : uint { BSM_APPLICATIONS = 0x00000008 } +enum : uint { BSM_ALLDESKTOPS = 0x00000010 } + +enum : uint { BSF_QUERY = 0x00000001 } +enum : uint { BSF_IGNORECURRENTTASK = 0x00000002 } +enum : uint { BSF_FLUSHDISK = 0x00000004 } +enum : uint { BSF_NOHANG = 0x00000008 } +enum : uint { BSF_POSTMESSAGE = 0x00000010 } +enum : uint { BSF_FORCEIFHUNG = 0x00000020 } +enum : uint { BSF_NOTIMEOUTIFNOTHUNG = 0x00000040 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { BSF_ALLOWSFW = 0x00000080 } +enum : uint { BSF_SENDNOTIFYMESSAGE = 0x00000100 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { BSF_RETURNHDESK = 0x00000200 } +enum : uint { BSF_LUID = 0x00000400 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { BROADCAST_QUERY_DENY = 0x424D5144 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +alias PVOID HDEVNOTIFY; +alias HDEVNOTIFY* PHDEVNOTIFY; + +enum : uint { DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000 } +enum : uint { DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export HDEVNOTIFY RegisterDeviceNotificationA( + HANDLE hRecipient, + LPVOID NotificationFilter, + DWORD Flags); +extern(Windows) export HDEVNOTIFY RegisterDeviceNotificationW( + HANDLE hRecipient, + LPVOID NotificationFilter, + DWORD Flags); +// #ifdef UNICODE +alias RegisterDeviceNotificationW RegisterDeviceNotification; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL UnregisterDeviceNotification( + HDEVNOTIFY Handle); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL PostMessageA( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export BOOL PostMessageW( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +alias PostMessageW PostMessage; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL PostThreadMessageA( + DWORD idThread, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export BOOL PostThreadMessageW( + DWORD idThread, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +alias PostThreadMessageW PostThreadMessage; +// #else +// #... +// #endif // !UNICODE + +alias PostThreadMessageA PostAppMessageA; +alias PostThreadMessageW PostAppMessageW; +// #ifdef UNICODE +alias PostAppMessageW PostAppMessage; +// #else +// #... +// #endif // !UNICODE + +const HWND HWND_BROADCAST = cast(HWND)0xffff; + +// #if(WINVER >= 0x0500) +const HWND HWND_MESSAGE = cast(HWND)-3; +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL AttachThreadInput( + DWORD idAttach, + DWORD idAttachTo, + BOOL fAttach); + +extern(Windows) export BOOL ReplyMessage( + LRESULT lResult); + +extern(Windows) export BOOL WaitMessage(); + +extern(Windows) export DWORD WaitForInputIdle( + HANDLE hProcess, + DWORD dwMilliseconds); + +extern(Windows) export LRESULT DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +extern(Windows) export LRESULT DefWindowProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +// #ifdef UNICODE +alias DefWindowProcW DefWindowProc; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export VOID PostQuitMessage( + int nExitCode); + +// #ifdef STRICT + +extern(Windows) export LRESULT CallWindowProcA( + WNDPROC lpPrevWndFunc, + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export LRESULT CallWindowProcW( + WNDPROC lpPrevWndFunc, + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +alias CallWindowProcW CallWindowProc; +// #else +// #... +// #endif // !UNICODE + +// #else /* !STRICT */ + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #endif /* !STRICT */ + +extern(Windows) export BOOL InSendMessage(); + +// #if(WINVER >= 0x0500) +extern(Windows) export DWORD InSendMessageEx( + LPVOID lpReserved); + +enum : uint { ISMEX_NOSEND = 0x00000000 } +enum : uint { ISMEX_SEND = 0x00000001 } +enum : uint { ISMEX_NOTIFY = 0x00000002 } +enum : uint { ISMEX_CALLBACK = 0x00000004 } +enum : uint { ISMEX_REPLIED = 0x00000008 } +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export UINT GetDoubleClickTime(); + +extern(Windows) export BOOL SetDoubleClickTime( + UINT); + +extern(Windows) export ATOM RegisterClassA( + WNDCLASSA *lpWndClass); +extern(Windows) export ATOM RegisterClassW( + WNDCLASSW *lpWndClass); +// #ifdef UNICODE +alias RegisterClassW RegisterClass; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL UnregisterClassA( + LPCSTR lpClassName, + HINSTANCE hInstance); +extern(Windows) export BOOL UnregisterClassW( + LPCWSTR lpClassName, + HINSTANCE hInstance); +// #ifdef UNICODE +alias UnregisterClassW UnregisterClass; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetClassInfoA( + HINSTANCE hInstance, + LPCSTR lpClassName, + LPWNDCLASSA lpWndClass); +extern(Windows) export BOOL GetClassInfoW( + HINSTANCE hInstance, + LPCWSTR lpClassName, + LPWNDCLASSW lpWndClass); +// #ifdef UNICODE +alias GetClassInfoW GetClassInfo; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export ATOM RegisterClassExA( + WNDCLASSEXA *); +extern(Windows) export ATOM RegisterClassExW( + WNDCLASSEXW *); +// #ifdef UNICODE +alias RegisterClassExW RegisterClassEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetClassInfoExA( + HINSTANCE, + LPCSTR, + LPWNDCLASSEXA); +extern(Windows) export BOOL GetClassInfoExW( + HINSTANCE, + LPCWSTR, + LPWNDCLASSEXW); +// #ifdef UNICODE +alias GetClassInfoExW GetClassInfoEx; +// #else +// #... +// #endif // !UNICODE + +// #endif /* WINVER >= 0x0400 */ + +enum { CW_USEDEFAULT = int.min } + +const HWND HWND_DESKTOP = cast(HWND)0; + +// #if(_WIN32_WINNT >= 0x0501) +extern(Windows) alias BOOLEAN function(LPCWSTR) PREGISTERCLASSNAMEW; +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export HWND CreateWindowExA( + DWORD dwExStyle, + LPCSTR lpClassName, + LPCSTR lpWindowName, + DWORD dwStyle, + int X, + int Y, + int nWidth, + int nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID lpParam); +extern(Windows) export HWND CreateWindowExW( + DWORD dwExStyle, + LPCWSTR lpClassName, + LPCWSTR lpWindowName, + DWORD dwStyle, + int X, + int Y, + int nWidth, + int nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID lpParam); +// #ifdef UNICODE +alias CreateWindowExW CreateWindowEx; +// #else +// #... +// #endif // !UNICODE + +HWND CreateWindowA(LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam){ return CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); } +HWND CreateWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam){ return CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); } +// #ifdef UNICODE +alias CreateWindowW CreateWindow; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL IsWindow( + HWND hWnd); + +extern(Windows) export BOOL IsMenu( + HMENU hMenu); + +extern(Windows) export BOOL IsChild( + HWND hWndParent, + HWND hWnd); + +extern(Windows) export BOOL DestroyWindow( + HWND hWnd); + +extern(Windows) export BOOL ShowWindow( + HWND hWnd, + int nCmdShow); + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL AnimateWindow( + HWND hWnd, + DWORD dwTime, + DWORD dwFlags); +// #endif /* WINVER >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0500) +// #if defined(_WINGDI_) && !defined (NOGDI) + +// ... +// #endif + +// #if(_WIN32_WINNT >= 0x0501) +extern(Windows) export BOOL GetLayeredWindowAttributes( + HWND hwnd, + COLORREF *pcrKey, + BYTE *pbAlpha, + DWORD *pdwFlags); + +enum : uint { PW_CLIENTONLY = 0x00000001 } + +extern(Windows) export BOOL PrintWindow( + HWND hwnd, + HDC hdcBlt, + UINT nFlags); + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export BOOL SetLayeredWindowAttributes( + HWND hwnd, + COLORREF crKey, + BYTE bAlpha, + DWORD dwFlags); + +enum : uint { LWA_COLORKEY = 0x00000001 } +enum : uint { LWA_ALPHA = 0x00000002 } + +enum : uint { ULW_COLORKEY = 0x00000001 } +enum : uint { ULW_ALPHA = 0x00000002 } +enum : uint { ULW_OPAQUE = 0x00000004 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0400) +extern(Windows) export BOOL ShowWindowAsync( + HWND hWnd, + int nCmdShow); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL FlashWindow( + HWND hWnd, + BOOL bInvert); + +// #if(WINVER >= 0x0500) +struct _1 { + UINT cbSize; + HWND hwnd; + DWORD dwFlags; + UINT uCount; + DWORD dwTimeout; +} +alias _1 FLASHWINFO; +alias _1* PFLASHWINFO; + +extern(Windows) export BOOL FlashWindowEx( + PFLASHWINFO pfwi); + +enum : uint { FLASHW_STOP = 0 } +enum : uint { FLASHW_CAPTION = 0x00000001 } +enum : uint { FLASHW_TRAY = 0x00000002 } +enum : uint { FLASHW_ALL = FLASHW_CAPTION | FLASHW_TRAY } +enum : uint { FLASHW_TIMER = 0x00000004 } +enum : uint { FLASHW_TIMERNOFG = 0x0000000C } + +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export BOOL ShowOwnedPopups( + HWND hWnd, + BOOL fShow); + +extern(Windows) export BOOL OpenIcon( + HWND hWnd); + +extern(Windows) export BOOL CloseWindow( + HWND hWnd); + +extern(Windows) export BOOL MoveWindow( + HWND hWnd, + int X, + int Y, + int nWidth, + int nHeight, + BOOL bRepaint); + +extern(Windows) export BOOL SetWindowPos( + HWND hWnd, + HWND hWndInsertAfter, + int X, + int Y, + int cx, + int cy, + UINT uFlags); + +extern(Windows) export BOOL GetWindowPlacement( + HWND hWnd, + WINDOWPLACEMENT *lpwndpl); + +extern(Windows) export BOOL SetWindowPlacement( + HWND hWnd, + WINDOWPLACEMENT *lpwndpl); + +// #ifndef NODEFERWINDOWPOS + +extern(Windows) export HDWP BeginDeferWindowPos( + int nNumWindows); + +extern(Windows) export HDWP DeferWindowPos( + HDWP hWinPosInfo, + HWND hWnd, + HWND hWndInsertAfter, + int x, + int y, + int cx, + int cy, + UINT uFlags); + +extern(Windows) export BOOL EndDeferWindowPos( + HDWP hWinPosInfo); + +// #endif /* !NODEFERWINDOWPOS */ + +extern(Windows) export BOOL IsWindowVisible( + HWND hWnd); + +extern(Windows) export BOOL IsIconic( + HWND hWnd); + +extern(Windows) export BOOL AnyPopup(); + +extern(Windows) export BOOL BringWindowToTop( + HWND hWnd); + +extern(Windows) export BOOL IsZoomed( + HWND hWnd); + +enum : uint { SWP_NOSIZE = 0x0001 } +enum : uint { SWP_NOMOVE = 0x0002 } +enum : uint { SWP_NOZORDER = 0x0004 } +enum : uint { SWP_NOREDRAW = 0x0008 } +enum : uint { SWP_NOACTIVATE = 0x0010 } +enum : uint { SWP_FRAMECHANGED = 0x0020 } +enum : uint { SWP_SHOWWINDOW = 0x0040 } +enum : uint { SWP_HIDEWINDOW = 0x0080 } +enum : uint { SWP_NOCOPYBITS = 0x0100 } +enum : uint { SWP_NOOWNERZORDER = 0x0200 } +enum : uint { SWP_NOSENDCHANGING = 0x0400 } + +alias SWP_FRAMECHANGED SWP_DRAWFRAME; +alias SWP_NOOWNERZORDER SWP_NOREPOSITION; + +// #if(WINVER >= 0x0400) +enum : uint { SWP_DEFERERASE = 0x2000 } +enum : uint { SWP_ASYNCWINDOWPOS = 0x4000 } +// #endif /* WINVER >= 0x0400 */ + +const HWND HWND_TOP = cast(HWND)0; +const HWND HWND_BOTTOM = cast(HWND)1; +const HWND HWND_TOPMOST = cast(HWND)-1; +const HWND HWND_NOTOPMOST = cast(HWND)-2; + +// #ifndef NOCTLMGR + +align(2): + +struct _2 { + DWORD style; + DWORD dwExtendedStyle; + WORD cdit; + short x; + short y; + short cx; + short cy; +} +alias _2 DLGTEMPLATE; + +alias DLGTEMPLATE* LPDLGTEMPLATEA; +alias DLGTEMPLATE* LPDLGTEMPLATEW; +// #ifdef UNICODE +alias LPDLGTEMPLATEW LPDLGTEMPLATE; +// #else +// ... +// #endif // UNICODE +alias DLGTEMPLATE* LPCDLGTEMPLATEA; +alias DLGTEMPLATE* LPCDLGTEMPLATEW; +// #ifdef UNICODE +alias LPCDLGTEMPLATEW LPCDLGTEMPLATE; +// #else +// ... +// #endif // UNICODE + +struct _3 { + DWORD style; + DWORD dwExtendedStyle; + short x; + short y; + short cx; + short cy; + WORD id; +} +alias _3 DLGITEMTEMPLATE; + +alias DLGITEMTEMPLATE* PDLGITEMTEMPLATEA; +alias DLGITEMTEMPLATE* PDLGITEMTEMPLATEW; +// #ifdef UNICODE +alias PDLGITEMTEMPLATEW PDLGITEMTEMPLATE; +// #else +// ... +// #endif // UNICODE +alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATEA; +alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATEW; +// #ifdef UNICODE +alias LPDLGITEMTEMPLATEW LPDLGITEMTEMPLATE; +// #else +// ... +// #endif // UNICODE + +align: + +extern(Windows) export HWND CreateDialogParamA( + HINSTANCE hInstance, + LPCSTR lpTemplateName, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +extern(Windows) export HWND CreateDialogParamW( + HINSTANCE hInstance, + LPCWSTR lpTemplateName, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +// #ifdef UNICODE +alias CreateDialogParamW CreateDialogParam; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HWND CreateDialogIndirectParamA( + HINSTANCE hInstance, + LPCDLGTEMPLATEA lpTemplate, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +extern(Windows) export HWND CreateDialogIndirectParamW( + HINSTANCE hInstance, + LPCDLGTEMPLATEW lpTemplate, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +// #ifdef UNICODE +alias CreateDialogIndirectParamW CreateDialogIndirectParam; +// #else +// #... +// #endif // !UNICODE + +HWND CreateDialogA(HINSTANCE hInstance, LPCSTR lpName, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0L); } +HWND CreateDialogW(HINSTANCE hInstance, LPCWSTR lpName, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0L); } +// #ifdef UNICODE +alias CreateDialogW CreateDialog; +// #else +// #... +// #endif // !UNICODE + +HWND CreateDialogIndirectA(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L); } +HWND CreateDialogIndirectW(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L); } +// #ifdef UNICODE +alias CreateDialogIndirectW CreateDialogIndirect; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export INT_PTR DialogBoxParamA( + HINSTANCE hInstance, + LPCSTR lpTemplateName, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +extern(Windows) export INT_PTR DialogBoxParamW( + HINSTANCE hInstance, + LPCWSTR lpTemplateName, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +// #ifdef UNICODE +alias DialogBoxParamW DialogBoxParam; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export INT_PTR DialogBoxIndirectParamA( + HINSTANCE hInstance, + LPCDLGTEMPLATEA hDialogTemplate, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +extern(Windows) export INT_PTR DialogBoxIndirectParamW( + HINSTANCE hInstance, + LPCDLGTEMPLATEW hDialogTemplate, + HWND hWndParent, + DLGPROC lpDialogFunc, + LPARAM dwInitParam); +// #ifdef UNICODE +alias DialogBoxIndirectParamW DialogBoxIndirectParam; +// #else +// #... +// #endif // !UNICODE + +// #define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +// #define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +// #ifdef UNICODE +// #define DialogBox DialogBoxW +// #else +// #... +// #endif // !UNICODE + +// #define DialogBoxIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +// #define DialogBoxIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +// #ifdef UNICODE +// #define DialogBoxIndirect DialogBoxIndirectW +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EndDialog( + HWND hDlg, + INT_PTR nResult); + +extern(Windows) export HWND GetDlgItem( + HWND hDlg, + int nIDDlgItem); + +extern(Windows) export BOOL SetDlgItemInt( + HWND hDlg, + int nIDDlgItem, + UINT uValue, + BOOL bSigned); + +extern(Windows) export UINT GetDlgItemInt( + HWND hDlg, + int nIDDlgItem, + BOOL *lpTranslated, + BOOL bSigned); + +extern(Windows) export BOOL SetDlgItemTextA( + HWND hDlg, + int nIDDlgItem, + LPCSTR lpString); +extern(Windows) export BOOL SetDlgItemTextW( + HWND hDlg, + int nIDDlgItem, + LPCWSTR lpString); +// #ifdef UNICODE +alias SetDlgItemTextW SetDlgItemText; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetDlgItemTextA( + HWND hDlg, + int nIDDlgItem, + LPSTR lpString, + int nMaxCount); +extern(Windows) export UINT GetDlgItemTextW( + HWND hDlg, + int nIDDlgItem, + LPWSTR lpString, + int nMaxCount); +// #ifdef UNICODE +alias GetDlgItemTextW GetDlgItemText; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CheckDlgButton( + HWND hDlg, + int nIDButton, + UINT uCheck); + +extern(Windows) export BOOL CheckRadioButton( + HWND hDlg, + int nIDFirstButton, + int nIDLastButton, + int nIDCheckButton); + +extern(Windows) export UINT IsDlgButtonChecked( + HWND hDlg, + int nIDButton); + +extern(Windows) export LRESULT SendDlgItemMessageA( + HWND hDlg, + int nIDDlgItem, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export LRESULT SendDlgItemMessageW( + HWND hDlg, + int nIDDlgItem, + UINT Msg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +alias SendDlgItemMessageW SendDlgItemMessage; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HWND GetNextDlgGroupItem( + HWND hDlg, + HWND hCtl, + BOOL bPrevious); + +extern(Windows) export HWND GetNextDlgTabItem( + HWND hDlg, + HWND hCtl, + BOOL bPrevious); + +extern(Windows) export int GetDlgCtrlID( + HWND hWnd); + +extern(Windows) export int GetDialogBaseUnits(); + +extern(Windows) export LRESULT DefDlgProcA(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam); +extern(Windows) export LRESULT DefDlgProcW(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam); +// #ifdef UNICODE +alias DefDlgProcW DefDlgProc; +// #else +// #... +// #endif // !UNICODE + +// #ifndef _MAC +enum : uint { DLGWINDOWEXTRA = 30 } +// #else +// #... +// #endif + +// #endif /* !NOCTLMGR */ + +// #ifndef NOMSG + +extern(Windows) export BOOL CallMsgFilterA( + LPMSG lpMsg, + int nCode); +extern(Windows) export BOOL CallMsgFilterW( + LPMSG lpMsg, + int nCode); +// #ifdef UNICODE +alias CallMsgFilterW CallMsgFilter; +// #else +// #... +// #endif // !UNICODE + +// #endif /* !NOMSG */ + +// #ifndef NOCLIPBOARD + +extern(Windows) export BOOL OpenClipboard( + HWND hWndNewOwner); + +extern(Windows) export BOOL CloseClipboard(); + +// #if(WINVER >= 0x0500) + +extern(Windows) export DWORD GetClipboardSequenceNumber(); + +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export HWND GetClipboardOwner(); + +extern(Windows) export HWND SetClipboardViewer( + HWND hWndNewViewer); + +extern(Windows) export HWND GetClipboardViewer(); + +extern(Windows) export BOOL ChangeClipboardChain( + HWND hWndRemove, + HWND hWndNewNext); + +extern(Windows) export HANDLE SetClipboardData( + UINT uFormat, + HANDLE hMem); + +extern(Windows) export HANDLE GetClipboardData( + UINT uFormat); + +extern(Windows) export UINT RegisterClipboardFormatA( + LPCSTR lpszFormat); +extern(Windows) export UINT RegisterClipboardFormatW( + LPCWSTR lpszFormat); +// #ifdef UNICODE +alias RegisterClipboardFormatW RegisterClipboardFormat; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int CountClipboardFormats(); + +extern(Windows) export UINT EnumClipboardFormats( + UINT format); + +extern(Windows) export int GetClipboardFormatNameA( + UINT format, + LPSTR lpszFormatName, + int cchMaxCount); +extern(Windows) export int GetClipboardFormatNameW( + UINT format, + LPWSTR lpszFormatName, + int cchMaxCount); +// #ifdef UNICODE +alias GetClipboardFormatNameW GetClipboardFormatName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL EmptyClipboard(); + +extern(Windows) export BOOL IsClipboardFormatAvailable( + UINT format); + +extern(Windows) export int GetPriorityClipboardFormat( + UINT *paFormatPriorityList, + int cFormats); + +extern(Windows) export HWND GetOpenClipboardWindow(); + +// #endif /* !NOCLIPBOARD */ + +extern(Windows) export BOOL CharToOemA( + LPCSTR lpszSrc, + LPSTR lpszDst); +extern(Windows) export BOOL CharToOemW( + LPCWSTR lpszSrc, + LPSTR lpszDst); +// #ifdef UNICODE +alias CharToOemW CharToOem; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL OemToCharA( + LPCSTR lpszSrc, + LPSTR lpszDst); +extern(Windows) export BOOL OemToCharW( + LPCSTR lpszSrc, + LPWSTR lpszDst); +// #ifdef UNICODE +alias OemToCharW OemToChar; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL CharToOemBuffA( + LPCSTR lpszSrc, + LPSTR lpszDst, + DWORD cchDstLength); +extern(Windows) export BOOL CharToOemBuffW( + LPCWSTR lpszSrc, + LPSTR lpszDst, + DWORD cchDstLength); +// #ifdef UNICODE +alias CharToOemBuffW CharToOemBuff; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL OemToCharBuffA( + LPCSTR lpszSrc, + LPSTR lpszDst, + DWORD cchDstLength); +extern(Windows) export BOOL OemToCharBuffW( + LPCSTR lpszSrc, + LPWSTR lpszDst, + DWORD cchDstLength); +// #ifdef UNICODE +alias OemToCharBuffW OemToCharBuff; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LPSTR CharUpperA( + LPSTR lpsz); +extern(Windows) export LPWSTR CharUpperW( + LPWSTR lpsz); +// #ifdef UNICODE +alias CharUpperW CharUpper; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD CharUpperBuffA( + LPSTR lpsz, + DWORD cchLength); +extern(Windows) export DWORD CharUpperBuffW( + LPWSTR lpsz, + DWORD cchLength); +// #ifdef UNICODE +alias CharUpperBuffW CharUpperBuff; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LPSTR CharLowerA( + LPSTR lpsz); +extern(Windows) export LPWSTR CharLowerW( + LPWSTR lpsz); +// #ifdef UNICODE +alias CharLowerW CharLower; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD CharLowerBuffA( + LPSTR lpsz, + DWORD cchLength); +extern(Windows) export DWORD CharLowerBuffW( + LPWSTR lpsz, + DWORD cchLength); +// #ifdef UNICODE +alias CharLowerBuffW CharLowerBuff; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LPSTR CharNextA( + LPCSTR lpsz); +extern(Windows) export LPWSTR CharNextW( + LPCWSTR lpsz); +// #ifdef UNICODE +alias CharNextW CharNext; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LPSTR CharPrevA( + LPCSTR lpszStart, + LPCSTR lpszCurrent); +extern(Windows) export LPWSTR CharPrevW( + LPCWSTR lpszStart, + LPCWSTR lpszCurrent); +// #ifdef UNICODE +alias CharPrevW CharPrev; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export LPSTR CharNextExA( + WORD CodePage, + LPCSTR lpCurrentChar, + DWORD dwFlags); + +extern(Windows) export LPSTR CharPrevExA( + WORD CodePage, + LPCSTR lpStart, + LPCSTR lpCurrentChar, + DWORD dwFlags); +// #endif /* WINVER >= 0x0400 */ + +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; + +// #ifndef NOLANGUAGE + +extern(Windows) export BOOL IsCharAlphaA( + CHAR ch); +extern(Windows) export BOOL IsCharAlphaW( + WCHAR ch); +// #ifdef UNICODE +alias IsCharAlphaW IsCharAlpha; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL IsCharAlphaNumericA( + CHAR ch); +extern(Windows) export BOOL IsCharAlphaNumericW( + WCHAR ch); +// #ifdef UNICODE +alias IsCharAlphaNumericW IsCharAlphaNumeric; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL IsCharUpperA( + CHAR ch); +extern(Windows) export BOOL IsCharUpperW( + WCHAR ch); +// #ifdef UNICODE +alias IsCharUpperW IsCharUpper; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL IsCharLowerA( + CHAR ch); +extern(Windows) export BOOL IsCharLowerW( + WCHAR ch); +// #ifdef UNICODE +alias IsCharLowerW IsCharLower; +// #else +// #... +// #endif // !UNICODE + +// #endif /* !NOLANGUAGE */ + +extern(Windows) export HWND SetFocus( + HWND hWnd); + +extern(Windows) export HWND GetActiveWindow(); + +extern(Windows) export HWND GetFocus(); + +extern(Windows) export UINT GetKBCodePage(); + +extern(Windows) export SHORT GetKeyState( + int nVirtKey); + +extern(Windows) export SHORT GetAsyncKeyState( + int vKey); + +extern(Windows) export BOOL GetKeyboardState( + PBYTE lpKeyState); + +extern(Windows) export BOOL SetKeyboardState( + LPBYTE lpKeyState); + +extern(Windows) export int GetKeyNameTextA( + LONG lParam, + LPSTR lpString, + int nSize); +extern(Windows) export int GetKeyNameTextW( + LONG lParam, + LPWSTR lpString, + int nSize); +// #ifdef UNICODE +alias GetKeyNameTextW GetKeyNameText; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int GetKeyboardType( + int nTypeFlag); + +extern(Windows) export int ToAscii( + UINT uVirtKey, + UINT uScanCode, + BYTE *lpKeyState, + LPWORD lpChar, + UINT uFlags); + +// #if(WINVER >= 0x0400) +extern(Windows) export int ToAsciiEx( + UINT uVirtKey, + UINT uScanCode, + BYTE *lpKeyState, + LPWORD lpChar, + UINT uFlags, + HKL dwhkl); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int ToUnicode( + UINT wVirtKey, + UINT wScanCode, + BYTE *lpKeyState, + LPWSTR pwszBuff, + int cchBuff, + UINT wFlags); + +extern(Windows) export DWORD OemKeyScan( + WORD wOemChar); + +extern(Windows) export SHORT VkKeyScanA( + CHAR ch); +extern(Windows) export SHORT VkKeyScanW( + WCHAR ch); +// #ifdef UNICODE +alias VkKeyScanW VkKeyScan; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export SHORT VkKeyScanExA( + CHAR ch, + HKL dwhkl); +extern(Windows) export SHORT VkKeyScanExW( + WCHAR ch, + HKL dwhkl); +// #ifdef UNICODE +alias VkKeyScanExW VkKeyScanEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ +enum : uint { KEYEVENTF_EXTENDEDKEY = 0x0001 } +enum : uint { KEYEVENTF_KEYUP = 0x0002 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { KEYEVENTF_UNICODE = 0x0004 } +enum : uint { KEYEVENTF_SCANCODE = 0x0008 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export VOID keybd_event( + BYTE bVk, + BYTE bScan, + DWORD dwFlags, + ULONG_PTR dwExtraInfo); + +enum : uint { MOUSEEVENTF_MOVE = 0x0001 } +enum : uint { MOUSEEVENTF_LEFTDOWN = 0x0002 } +enum : uint { MOUSEEVENTF_LEFTUP = 0x0004 } +enum : uint { MOUSEEVENTF_RIGHTDOWN = 0x0008 } +enum : uint { MOUSEEVENTF_RIGHTUP = 0x0010 } +enum : uint { MOUSEEVENTF_MIDDLEDOWN = 0x0020 } +enum : uint { MOUSEEVENTF_MIDDLEUP = 0x0040 } +enum : uint { MOUSEEVENTF_XDOWN = 0x0080 } +enum : uint { MOUSEEVENTF_XUP = 0x0100 } +enum : uint { MOUSEEVENTF_WHEEL = 0x0800 } +enum : uint { MOUSEEVENTF_VIRTUALDESK = 0x4000 } +enum : uint { MOUSEEVENTF_ABSOLUTE = 0x8000 } + +extern(Windows) export VOID mouse_event( + DWORD dwFlags, + DWORD dx, + DWORD dy, + DWORD dwData, + ULONG_PTR dwExtraInfo); + +// #if (_WIN32_WINNT > 0x0400) + +struct tagMOUSEINPUT { + LONG dx; + LONG dy; + DWORD mouseData; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagMOUSEINPUT MOUSEINPUT; +alias tagMOUSEINPUT* PMOUSEINPUT; +alias tagMOUSEINPUT* LPMOUSEINPUT; + +struct tagKEYBDINPUT { + WORD wVk; + WORD wScan; + DWORD dwFlags; + DWORD time; + ULONG_PTR dwExtraInfo; +} +alias tagKEYBDINPUT KEYBDINPUT; +alias tagKEYBDINPUT* PKEYBDINPUT; +alias tagKEYBDINPUT* LPKEYBDINPUT; + +struct tagHARDWAREINPUT { + DWORD uMsg; + WORD wParamL; + WORD wParamH; +} +alias tagHARDWAREINPUT HARDWAREINPUT; +alias tagHARDWAREINPUT* PHARDWAREINPUT; +alias tagHARDWAREINPUT* LPHARDWAREINPUT; + +enum : uint { INPUT_MOUSE = 0 } +enum : uint { INPUT_KEYBOARD = 1 } +enum : uint { INPUT_HARDWARE = 2 } + +struct tagINPUT { + DWORD type; +union { + MOUSEINPUT mi; + KEYBDINPUT ki; + HARDWAREINPUT hi; +} + +} +alias tagINPUT INPUT; +alias tagINPUT* PINPUT; +alias tagINPUT* LPINPUT; + +extern(Windows) export UINT SendInput( + UINT cInputs, // number of input in the array + LPINPUT pInputs, // array of inputs + int cbSize); + +// #endif // (_WIN32_WINNT > 0x0400) + +// #if(_WIN32_WINNT >= 0x0500) +struct tagLASTINPUTINFO { + UINT cbSize; + DWORD dwTime; +} +alias tagLASTINPUTINFO LASTINPUTINFO; +alias tagLASTINPUTINFO* PLASTINPUTINFO; + +extern(Windows) export BOOL GetLastInputInfo( + PLASTINPUTINFO plii); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export UINT MapVirtualKeyA( + UINT uCode, + UINT uMapType); +extern(Windows) export UINT MapVirtualKeyW( + UINT uCode, + UINT uMapType); +// #ifdef UNICODE +alias MapVirtualKeyW MapVirtualKey; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export UINT MapVirtualKeyExA( + UINT uCode, + UINT uMapType, + HKL dwhkl); +extern(Windows) export UINT MapVirtualKeyExW( + UINT uCode, + UINT uMapType, + HKL dwhkl); +// #ifdef UNICODE +alias MapVirtualKeyExW MapVirtualKeyEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL GetInputState(); + +extern(Windows) export DWORD GetQueueStatus( + UINT flags); + +extern(Windows) export HWND GetCapture(); + +extern(Windows) export HWND SetCapture( + HWND hWnd); + +extern(Windows) export BOOL ReleaseCapture(); + +extern(Windows) export DWORD MsgWaitForMultipleObjects( + DWORD nCount, + HANDLE *pHandles, + BOOL fWaitAll, + DWORD dwMilliseconds, + DWORD dwWakeMask); + +extern(Windows) export DWORD MsgWaitForMultipleObjectsEx( + DWORD nCount, + HANDLE *pHandles, + DWORD dwMilliseconds, + DWORD dwWakeMask, + DWORD dwFlags); + +enum : uint { MWMO_WAITALL = 0x0001 } +enum : uint { MWMO_ALERTABLE = 0x0002 } +enum : uint { MWMO_INPUTAVAILABLE = 0x0004 } + +enum : uint { QS_KEY = 0x0001 } +enum : uint { QS_MOUSEMOVE = 0x0002 } +enum : uint { QS_MOUSEBUTTON = 0x0004 } +// #define QS_POSTMESSAGE 0x0008 +// #define QS_TIMER 0x0010 +// #define QS_PAINT 0x0020 +// #define QS_SENDMESSAGE 0x0040 +// #define QS_HOTKEY 0x0080 +enum : uint { QS_ALLPOSTMESSAGE = 0x0100 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { QS_RAWINPUT = 0x0400 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { QS_MOUSE = QS_MOUSEMOVE | QS_MOUSEBUTTON } + +// #if (_WIN32_WINNT >= 0x0501) +// #define QS_INPUT (QS_MOUSE | QS_KEY | QS_RAWINPUT) +// #else +// #... +// ... +// #endif // (_WIN32_WINNT >= 0x0501) + +enum : uint { QS_ALLEVENTS = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY } + +enum : uint { QS_ALLINPUT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE } + +extern(Windows) export UINT_PTR SetTimer( + HWND hWnd, + UINT_PTR nIDEvent, + UINT uElapse, + TIMERPROC lpTimerFunc); + +extern(Windows) export BOOL KillTimer( + HWND hWnd, + UINT_PTR uIDEvent); + +extern(Windows) export BOOL IsWindowUnicode( + HWND hWnd); + +extern(Windows) export BOOL EnableWindow( + HWND hWnd, + BOOL bEnable); + +extern(Windows) export BOOL IsWindowEnabled( + HWND hWnd); + +extern(Windows) export HACCEL LoadAcceleratorsA( + HINSTANCE hInstance, + LPCSTR lpTableName); +extern(Windows) export HACCEL LoadAcceleratorsW( + HINSTANCE hInstance, + LPCWSTR lpTableName); +// #ifdef UNICODE +alias LoadAcceleratorsW LoadAccelerators; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HACCEL CreateAcceleratorTableA( + LPACCEL, int); +extern(Windows) export HACCEL CreateAcceleratorTableW( + LPACCEL, int); +// #ifdef UNICODE +alias CreateAcceleratorTableW CreateAcceleratorTable; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DestroyAcceleratorTable( + HACCEL hAccel); + +extern(Windows) export int CopyAcceleratorTableA( + HACCEL hAccelSrc, + LPACCEL lpAccelDst, + int cAccelEntries); +extern(Windows) export int CopyAcceleratorTableW( + HACCEL hAccelSrc, + LPACCEL lpAccelDst, + int cAccelEntries); +// #ifdef UNICODE +alias CopyAcceleratorTableW CopyAcceleratorTable; +// #else +// #... +// #endif // !UNICODE + +// #ifndef NOMSG + +extern(Windows) export int TranslateAcceleratorA( + HWND hWnd, + HACCEL hAccTable, + LPMSG lpMsg); +extern(Windows) export int TranslateAcceleratorW( + HWND hWnd, + HACCEL hAccTable, + LPMSG lpMsg); +// #ifdef UNICODE +alias TranslateAcceleratorW TranslateAccelerator; +// #else +// #... +// #endif // !UNICODE + +// #endif /* !NOMSG */ + +// #ifndef NOSYSMETRICS + +enum : uint { SM_CXSCREEN = 0 } +enum : uint { SM_CYSCREEN = 1 } +enum : uint { SM_CXVSCROLL = 2 } +enum : uint { SM_CYHSCROLL = 3 } +enum : uint { SM_CYCAPTION = 4 } +enum : uint { SM_CXBORDER = 5 } +enum : uint { SM_CYBORDER = 6 } +enum : uint { SM_CXDLGFRAME = 7 } +enum : uint { SM_CYDLGFRAME = 8 } +enum : uint { SM_CYVTHUMB = 9 } +enum : uint { SM_CXHTHUMB = 10 } +enum : uint { SM_CXICON = 11 } +enum : uint { SM_CYICON = 12 } +enum : uint { SM_CXCURSOR = 13 } +enum : uint { SM_CYCURSOR = 14 } +enum : uint { SM_CYMENU = 15 } +enum : uint { SM_CXFULLSCREEN = 16 } +enum : uint { SM_CYFULLSCREEN = 17 } +enum : uint { SM_CYKANJIWINDOW = 18 } +enum : uint { SM_MOUSEPRESENT = 19 } +enum : uint { SM_CYVSCROLL = 20 } +enum : uint { SM_CXHSCROLL = 21 } +enum : uint { SM_DEBUG = 22 } +enum : uint { SM_SWAPBUTTON = 23 } +enum : uint { SM_RESERVED1 = 24 } +enum : uint { SM_RESERVED2 = 25 } +enum : uint { SM_RESERVED3 = 26 } +enum : uint { SM_RESERVED4 = 27 } +enum : uint { SM_CXMIN = 28 } +enum : uint { SM_CYMIN = 29 } +enum : uint { SM_CXSIZE = 30 } +enum : uint { SM_CYSIZE = 31 } +enum : uint { SM_CXFRAME = 32 } +enum : uint { SM_CYFRAME = 33 } +enum : uint { SM_CXMINTRACK = 34 } +enum : uint { SM_CYMINTRACK = 35 } +enum : uint { SM_CXDOUBLECLK = 36 } +enum : uint { SM_CYDOUBLECLK = 37 } +enum : uint { SM_CXICONSPACING = 38 } +enum : uint { SM_CYICONSPACING = 39 } +enum : uint { SM_MENUDROPALIGNMENT = 40 } +enum : uint { SM_PENWINDOWS = 41 } +enum : uint { SM_DBCSENABLED = 42 } +enum : uint { SM_CMOUSEBUTTONS = 43 } + +// #if(WINVER >= 0x0400) +alias SM_CXDLGFRAME SM_CXFIXEDFRAME; +alias SM_CYDLGFRAME SM_CYFIXEDFRAME; +alias SM_CXFRAME SM_CXSIZEFRAME; +alias SM_CYFRAME SM_CYSIZEFRAME; + +enum : uint { SM_SECURE = 44 } +enum : uint { SM_CXEDGE = 45 } +enum : uint { SM_CYEDGE = 46 } +enum : uint { SM_CXMINSPACING = 47 } +enum : uint { SM_CYMINSPACING = 48 } +enum : uint { SM_CXSMICON = 49 } +enum : uint { SM_CYSMICON = 50 } +enum : uint { SM_CYSMCAPTION = 51 } +enum : uint { SM_CXSMSIZE = 52 } +enum : uint { SM_CYSMSIZE = 53 } +enum : uint { SM_CXMENUSIZE = 54 } +enum : uint { SM_CYMENUSIZE = 55 } +enum : uint { SM_ARRANGE = 56 } +enum : uint { SM_CXMINIMIZED = 57 } +enum : uint { SM_CYMINIMIZED = 58 } +enum : uint { SM_CXMAXTRACK = 59 } +enum : uint { SM_CYMAXTRACK = 60 } +enum : uint { SM_CXMAXIMIZED = 61 } +enum : uint { SM_CYMAXIMIZED = 62 } +enum : uint { SM_NETWORK = 63 } +enum : uint { SM_CLEANBOOT = 67 } +enum : uint { SM_CXDRAG = 68 } +enum : uint { SM_CYDRAG = 69 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { SM_SHOWSOUNDS = 70 } +// #if(WINVER >= 0x0400) +enum : uint { SM_CXMENUCHECK = 71 } +enum : uint { SM_CYMENUCHECK = 72 } +enum : uint { SM_SLOWMACHINE = 73 } +enum : uint { SM_MIDEASTENABLED = 74 } +// #endif /* WINVER >= 0x0400 */ + +// #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) +enum : uint { SM_MOUSEWHEELPRESENT = 75 } +// #endif +// #if(WINVER >= 0x0500) +enum : uint { SM_XVIRTUALSCREEN = 76 } +enum : uint { SM_YVIRTUALSCREEN = 77 } +enum : uint { SM_CXVIRTUALSCREEN = 78 } +enum : uint { SM_CYVIRTUALSCREEN = 79 } +enum : uint { SM_CMONITORS = 80 } +enum : uint { SM_SAMEDISPLAYFORMAT = 81 } +// #endif /* WINVER >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { SM_IMMENABLED = 82 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SM_CXFOCUSBORDER = 83 } +enum : uint { SM_CYFOCUSBORDER = 84 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400)) +// #... +// #else +enum : uint { SM_CMETRICS = 86 } +// #endif + +// #if(WINVER >= 0x0500) +enum : uint { SM_REMOTESESSION = 0x1000 } + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SM_SHUTTINGDOWN = 0x2000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export int GetSystemMetrics( + int nIndex); + +// #endif /* !NOSYSMETRICS */ + +// #ifndef NOMENUS + +extern(Windows) export HMENU LoadMenuA( + HINSTANCE hInstance, + LPCSTR lpMenuName); +extern(Windows) export HMENU LoadMenuW( + HINSTANCE hInstance, + LPCWSTR lpMenuName); +// #ifdef UNICODE +alias LoadMenuW LoadMenu; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HMENU LoadMenuIndirectA( + MENUTEMPLATEA *lpMenuTemplate); +extern(Windows) export HMENU LoadMenuIndirectW( + MENUTEMPLATEW *lpMenuTemplate); +// #ifdef UNICODE +alias LoadMenuIndirectW LoadMenuIndirect; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HMENU GetMenu( + HWND hWnd); + +extern(Windows) export BOOL SetMenu( + HWND hWnd, + HMENU hMenu); + +extern(Windows) export BOOL ChangeMenuA( + HMENU hMenu, + UINT cmd, + LPCSTR lpszNewItem, + UINT cmdInsert, + UINT flags); +extern(Windows) export BOOL ChangeMenuW( + HMENU hMenu, + UINT cmd, + LPCWSTR lpszNewItem, + UINT cmdInsert, + UINT flags); +// #ifdef UNICODE +alias ChangeMenuW ChangeMenu; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL HiliteMenuItem( + HWND hWnd, + HMENU hMenu, + UINT uIDHiliteItem, + UINT uHilite); + +extern(Windows) export int GetMenuStringA( + HMENU hMenu, + UINT uIDItem, + LPSTR lpString, + int nMaxCount, + UINT uFlag); +extern(Windows) export int GetMenuStringW( + HMENU hMenu, + UINT uIDItem, + LPWSTR lpString, + int nMaxCount, + UINT uFlag); +// #ifdef UNICODE +alias GetMenuStringW GetMenuString; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetMenuState( + HMENU hMenu, + UINT uId, + UINT uFlags); + +extern(Windows) export BOOL DrawMenuBar( + HWND hWnd); + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { PMB_ACTIVE = 0x00000001 } + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export HMENU GetSystemMenu( + HWND hWnd, + BOOL bRevert); + +extern(Windows) export HMENU CreateMenu(); + +extern(Windows) export HMENU CreatePopupMenu(); + +extern(Windows) export BOOL DestroyMenu( + HMENU hMenu); + +extern(Windows) export DWORD CheckMenuItem( + HMENU hMenu, + UINT uIDCheckItem, + UINT uCheck); + +extern(Windows) export BOOL EnableMenuItem( + HMENU hMenu, + UINT uIDEnableItem, + UINT uEnable); + +extern(Windows) export HMENU GetSubMenu( + HMENU hMenu, + int nPos); + +extern(Windows) export UINT GetMenuItemID( + HMENU hMenu, + int nPos); + +extern(Windows) export int GetMenuItemCount( + HMENU hMenu); + +extern(Windows) export BOOL InsertMenuA( + HMENU hMenu, + UINT uPosition, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCSTR lpNewItem); +extern(Windows) export BOOL InsertMenuW( + HMENU hMenu, + UINT uPosition, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCWSTR lpNewItem); +// #ifdef UNICODE +alias InsertMenuW InsertMenu; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL AppendMenuA( + HMENU hMenu, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCSTR lpNewItem); +extern(Windows) export BOOL AppendMenuW( + HMENU hMenu, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCWSTR lpNewItem); +// #ifdef UNICODE +alias AppendMenuW AppendMenu; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL ModifyMenuA( + HMENU hMnu, + UINT uPosition, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCSTR lpNewItem); +extern(Windows) export BOOL ModifyMenuW( + HMENU hMnu, + UINT uPosition, + UINT uFlags, + UINT_PTR uIDNewItem, + LPCWSTR lpNewItem); +// #ifdef UNICODE +alias ModifyMenuW ModifyMenu; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL RemoveMenu( + HMENU hMenu, + UINT uPosition, + UINT uFlags); + +extern(Windows) export BOOL DeleteMenu( + HMENU hMenu, + UINT uPosition, + UINT uFlags); + +extern(Windows) export BOOL SetMenuItemBitmaps( + HMENU hMenu, + UINT uPosition, + UINT uFlags, + HBITMAP hBitmapUnchecked, + HBITMAP hBitmapChecked); + +extern(Windows) export LONG GetMenuCheckMarkDimensions(); + +extern(Windows) export BOOL TrackPopupMenu( + HMENU hMenu, + UINT uFlags, + int x, + int y, + int nReserved, + HWND hWnd, + RECT *prcRect); + +// #if(WINVER >= 0x0400) + +enum : uint { MNC_IGNORE = 0 } +enum : uint { MNC_CLOSE = 1 } +enum : uint { MNC_EXECUTE = 2 } +enum : uint { MNC_SELECT = 3 } + +struct tagTPMPARAMS { + UINT cbSize; + RECT rcExclude; +} +alias tagTPMPARAMS TPMPARAMS; + +alias TPMPARAMS* LPTPMPARAMS; + +extern(Windows) export BOOL TrackPopupMenuEx( + HMENU, + UINT, + int, + int, + HWND, + LPTPMPARAMS); +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) + +enum : uint { MNS_NOCHECK = 0x80000000 } +enum : uint { MNS_MODELESS = 0x40000000 } +enum : uint { MNS_DRAGDROP = 0x20000000 } +enum : uint { MNS_AUTODISMISS = 0x10000000 } +enum : uint { MNS_NOTIFYBYPOS = 0x08000000 } +enum : uint { MNS_CHECKORBMP = 0x04000000 } + +enum : uint { MIM_MAXHEIGHT = 0x00000001 } +enum : uint { MIM_BACKGROUND = 0x00000002 } +enum : uint { MIM_HELPID = 0x00000004 } +enum : uint { MIM_MENUDATA = 0x00000008 } +enum : uint { MIM_STYLE = 0x00000010 } +enum : uint { MIM_APPLYTOSUBMENUS = 0x80000000 } + +struct tagMENUINFO { + DWORD cbSize; + DWORD fMask; + DWORD dwStyle; + UINT cyMax; + HBRUSH hbrBack; + DWORD dwContextHelpID; + ULONG_PTR dwMenuData; +} +alias tagMENUINFO MENUINFO; +alias tagMENUINFO* LPMENUINFO; + +alias MENUINFO* LPCMENUINFO; + +extern(Windows) export BOOL GetMenuInfo( + HMENU, + LPMENUINFO); + +extern(Windows) export BOOL SetMenuInfo( + HMENU, + LPCMENUINFO); + +extern(Windows) export BOOL EndMenu(); + +enum : uint { MND_CONTINUE = 0 } +enum : uint { MND_ENDMENU = 1 } + +struct tagMENUGETOBJECTINFO { + DWORD dwFlags; + UINT uPos; + HMENU hmenu; + PVOID riid; + PVOID pvObj; +} +alias tagMENUGETOBJECTINFO MENUGETOBJECTINFO; +alias tagMENUGETOBJECTINFO* PMENUGETOBJECTINFO; + +enum : uint { MNGOF_TOPGAP = 0x00000001 } +enum : uint { MNGOF_BOTTOMGAP = 0x00000002 } + +enum : uint { MNGO_NOINTERFACE = 0x00000000 } +enum : uint { MNGO_NOERROR = 0x00000001 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0400) +enum : uint { MIIM_STATE = 0x00000001 } +enum : uint { MIIM_ID = 0x00000002 } +enum : uint { MIIM_SUBMENU = 0x00000004 } +enum : uint { MIIM_CHECKMARKS = 0x00000008 } +enum : uint { MIIM_TYPE = 0x00000010 } +enum : uint { MIIM_DATA = 0x00000020 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { MIIM_STRING = 0x00000040 } +enum : uint { MIIM_BITMAP = 0x00000080 } +enum : uint { MIIM_FTYPE = 0x00000100 } + +const HBITMAP HBMMENU_CALLBACK = cast(HBITMAP)-1; +const HBITMAP HBMMENU_SYSTEM = cast(HBITMAP)1; +const HBITMAP HBMMENU_MBAR_RESTORE = cast(HBITMAP)2; +const HBITMAP HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3; +const HBITMAP HBMMENU_MBAR_CLOSE = cast(HBITMAP)5; +const HBITMAP HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6; +const HBITMAP HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7; +const HBITMAP HBMMENU_POPUP_CLOSE = cast(HBITMAP)8; +const HBITMAP HBMMENU_POPUP_RESTORE = cast(HBITMAP)9; +const HBITMAP HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10; +const HBITMAP HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11; +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0400) +struct tagMENUITEMINFOA { + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPSTR dwTypeData; + UINT cch; +// #if(WINVER >= 0x0500) + HBITMAP hbmpItem; +// #endif /* WINVER >= 0x0500 */ +} +alias tagMENUITEMINFOA MENUITEMINFOA; +alias tagMENUITEMINFOA* LPMENUITEMINFOA; + +struct tagMENUITEMINFOW { + UINT cbSize; + UINT fMask; + UINT fType; + UINT fState; + UINT wID; + HMENU hSubMenu; + HBITMAP hbmpChecked; + HBITMAP hbmpUnchecked; + ULONG_PTR dwItemData; + LPWSTR dwTypeData; + UINT cch; +// #if(WINVER >= 0x0500) + HBITMAP hbmpItem; +// #endif /* WINVER >= 0x0500 */ +} +alias tagMENUITEMINFOW MENUITEMINFOW; +alias tagMENUITEMINFOW* LPMENUITEMINFOW; + +// #ifdef UNICODE +alias MENUITEMINFOW MENUITEMINFO; +alias LPMENUITEMINFOW LPMENUITEMINFO; +// #else +// ... +// #endif // UNICODE +alias MENUITEMINFOA* LPCMENUITEMINFOA; +alias MENUITEMINFOW* LPCMENUITEMINFOW; +// #ifdef UNICODE +alias LPCMENUITEMINFOW LPCMENUITEMINFO; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export BOOL InsertMenuItemA( + HMENU, + UINT, + BOOL, + LPCMENUITEMINFOA); +extern(Windows) export BOOL InsertMenuItemW( + HMENU, + UINT, + BOOL, + LPCMENUITEMINFOW); +// #ifdef UNICODE +alias InsertMenuItemW InsertMenuItem; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetMenuItemInfoA( + HMENU, + UINT, + BOOL, + LPMENUITEMINFOA); +extern(Windows) export BOOL GetMenuItemInfoW( + HMENU, + UINT, + BOOL, + LPMENUITEMINFOW); +// #ifdef UNICODE +alias GetMenuItemInfoW GetMenuItemInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetMenuItemInfoA( + HMENU, + UINT, + BOOL, + LPCMENUITEMINFOA); +extern(Windows) export BOOL SetMenuItemInfoW( + HMENU, + UINT, + BOOL, + LPCMENUITEMINFOW); +// #ifdef UNICODE +alias SetMenuItemInfoW SetMenuItemInfo; +// #else +// #... +// #endif // !UNICODE + +enum : uint { GMDI_USEDISABLED = 0x0001 } +enum : uint { GMDI_GOINTOPOPUPS = 0x0002 } + +extern(Windows) export UINT GetMenuDefaultItem(HMENU hMenu, UINT fByPos, UINT gmdiFlags); +extern(Windows) export BOOL SetMenuDefaultItem(HMENU hMenu, UINT uItem, UINT fByPos); + +extern(Windows) export BOOL GetMenuItemRect(HWND hWnd, HMENU hMenu, UINT uItem, LPRECT lprcItem); +extern(Windows) export int MenuItemFromPoint(HWND hWnd, HMENU hMenu, POINT ptScreen); +// #endif /* WINVER >= 0x0400 */ + +enum : uint { TPM_LEFTBUTTON = 0x0000 } +enum : uint { TPM_RIGHTBUTTON = 0x0002 } +enum : uint { TPM_LEFTALIGN = 0x0000 } +enum : uint { TPM_CENTERALIGN = 0x0004 } +enum : uint { TPM_RIGHTALIGN = 0x0008 } +// #if(WINVER >= 0x0400) +enum : uint { TPM_TOPALIGN = 0x0000 } +enum : uint { TPM_VCENTERALIGN = 0x0010 } +enum : uint { TPM_BOTTOMALIGN = 0x0020 } + +enum : uint { TPM_HORIZONTAL = 0x0000 } +enum : uint { TPM_VERTICAL = 0x0040 } +enum : uint { TPM_NONOTIFY = 0x0080 } +enum : uint { TPM_RETURNCMD = 0x0100 } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0500) +enum : uint { TPM_RECURSE = 0x0001 } +enum : uint { TPM_HORPOSANIMATION = 0x0400 } +enum : uint { TPM_HORNEGANIMATION = 0x0800 } +enum : uint { TPM_VERPOSANIMATION = 0x1000 } +enum : uint { TPM_VERNEGANIMATION = 0x2000 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { TPM_NOANIMATION = 0x4000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { TPM_LAYOUTRTL = 0x8000 } +// #endif /* _WIN32_WINNT >= 0x0501 */ +// #endif /* WINVER >= 0x0500 */ + +// #endif /* !NOMENUS */ + +// #if(WINVER >= 0x0400) + +struct tagDROPSTRUCT { + HWND hwndSource; + HWND hwndSink; + DWORD wFmt; + ULONG_PTR dwData; + POINT ptDrop; + DWORD dwControlData; +} +alias tagDROPSTRUCT DROPSTRUCT; +alias tagDROPSTRUCT* PDROPSTRUCT; +alias tagDROPSTRUCT* LPDROPSTRUCT; + +enum : uint { DOF_EXECUTABLE = 0x8001 } +enum : uint { DOF_DOCUMENT = 0x8002 } +enum : uint { DOF_DIRECTORY = 0x8003 } +enum : uint { DOF_MULTIPLE = 0x8004 } +enum : uint { DOF_PROGMAN = 0x0001 } +enum : uint { DOF_SHELLDATA = 0x0002 } + +enum : uint { DO_DROPFILE = 0x454C4946 } +enum : uint { DO_PRINTFILE = 0x544E5250 } + +extern(Windows) export DWORD DragObject( + HWND, + HWND, + UINT, + ULONG_PTR, + HCURSOR); + +extern(Windows) export BOOL DragDetect( + HWND, + POINT); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL DrawIcon( + HDC hDC, + int X, + int Y, + HICON hIcon); + +// #ifndef NODRAWTEXT + +enum : uint { DT_TOP = 0x00000000 } +enum : uint { DT_LEFT = 0x00000000 } +enum : uint { DT_CENTER = 0x00000001 } +enum : uint { DT_RIGHT = 0x00000002 } +enum : uint { DT_VCENTER = 0x00000004 } +enum : uint { DT_BOTTOM = 0x00000008 } +enum : uint { DT_WORDBREAK = 0x00000010 } +enum : uint { DT_SINGLELINE = 0x00000020 } +enum : uint { DT_EXPANDTABS = 0x00000040 } +enum : uint { DT_TABSTOP = 0x00000080 } +enum : uint { DT_NOCLIP = 0x00000100 } +enum : uint { DT_EXTERNALLEADING = 0x00000200 } +enum : uint { DT_CALCRECT = 0x00000400 } +enum : uint { DT_NOPREFIX = 0x00000800 } +enum : uint { DT_INTERNAL = 0x00001000 } + +// #if(WINVER >= 0x0400) +enum : uint { DT_EDITCONTROL = 0x00002000 } +enum : uint { DT_PATH_ELLIPSIS = 0x00004000 } +enum : uint { DT_END_ELLIPSIS = 0x00008000 } +enum : uint { DT_MODIFYSTRING = 0x00010000 } +enum : uint { DT_RTLREADING = 0x00020000 } +enum : uint { DT_WORD_ELLIPSIS = 0x00040000 } +// #if(WINVER >= 0x0500) +enum : uint { DT_NOFULLWIDTHCHARBREAK = 0x00080000 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { DT_HIDEPREFIX = 0x00100000 } +enum : uint { DT_PREFIXONLY = 0x00200000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +// #endif /* WINVER >= 0x0500 */ + +struct tagDRAWTEXTPARAMS { + UINT cbSize; + int iTabLength; + int iLeftMargin; + int iRightMargin; + UINT uiLengthDrawn; +} +alias tagDRAWTEXTPARAMS DRAWTEXTPARAMS; +alias tagDRAWTEXTPARAMS* LPDRAWTEXTPARAMS; + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export int DrawTextA( + HDC hDC, + LPCSTR lpString, + int nCount, + LPRECT lpRect, + UINT uFormat); +extern(Windows) export int DrawTextW( + HDC hDC, + LPCWSTR lpString, + int nCount, + LPRECT lpRect, + UINT uFormat); +// #ifdef UNICODE +alias DrawTextW DrawText; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export int DrawTextExA( + HDC, + LPSTR, + int, + LPRECT, + UINT, + LPDRAWTEXTPARAMS); +extern(Windows) export int DrawTextExW( + HDC, + LPWSTR, + int, + LPRECT, + UINT, + LPDRAWTEXTPARAMS); +// #ifdef UNICODE +alias DrawTextExW DrawTextEx; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NODRAWTEXT */ + +extern(Windows) export BOOL GrayStringA( + HDC hDC, + HBRUSH hBrush, + GRAYSTRINGPROC lpOutputFunc, + LPARAM lpData, + int nCount, + int X, + int Y, + int nWidth, + int nHeight); +extern(Windows) export BOOL GrayStringW( + HDC hDC, + HBRUSH hBrush, + GRAYSTRINGPROC lpOutputFunc, + LPARAM lpData, + int nCount, + int X, + int Y, + int nWidth, + int nHeight); +// #ifdef UNICODE +alias GrayStringW GrayString; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) + +enum : uint { DST_COMPLEX = 0x0000 } +enum : uint { DST_TEXT = 0x0001 } +enum : uint { DST_PREFIXTEXT = 0x0002 } +enum : uint { DST_ICON = 0x0003 } +enum : uint { DST_BITMAP = 0x0004 } + +enum : uint { DSS_NORMAL = 0x0000 } +enum : uint { DSS_UNION = 0x0010 } +enum : uint { DSS_DISABLED = 0x0020 } +enum : uint { DSS_MONO = 0x0080 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { DSS_HIDEPREFIX = 0x0200 } +enum : uint { DSS_PREFIXONLY = 0x0400 } +// #endif /* _WIN32_WINNT >= 0x0500 */ +enum : uint { DSS_RIGHT = 0x8000 } + +extern(Windows) export BOOL DrawStateA( + HDC, + HBRUSH, + DRAWSTATEPROC, + LPARAM, + WPARAM, + int, + int, + int, + int, + UINT); +extern(Windows) export BOOL DrawStateW( + HDC, + HBRUSH, + DRAWSTATEPROC, + LPARAM, + WPARAM, + int, + int, + int, + int, + UINT); +// #ifdef UNICODE +alias DrawStateW DrawState; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export LONG TabbedTextOutA( + HDC hDC, + int X, + int Y, + LPCSTR lpString, + int nCount, + int nTabPositions, + INT *lpnTabStopPositions, + int nTabOrigin); +extern(Windows) export LONG TabbedTextOutW( + HDC hDC, + int X, + int Y, + LPCWSTR lpString, + int nCount, + int nTabPositions, + INT *lpnTabStopPositions, + int nTabOrigin); +// #ifdef UNICODE +alias TabbedTextOutW TabbedTextOut; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetTabbedTextExtentA( + HDC hDC, + LPCSTR lpString, + int nCount, + int nTabPositions, + INT *lpnTabStopPositions); +extern(Windows) export DWORD GetTabbedTextExtentW( + HDC hDC, + LPCWSTR lpString, + int nCount, + int nTabPositions, + INT *lpnTabStopPositions); +// #ifdef UNICODE +alias GetTabbedTextExtentW GetTabbedTextExtent; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL UpdateWindow( + HWND hWnd); + +extern(Windows) export HWND SetActiveWindow( + HWND hWnd); + +extern(Windows) export HWND GetForegroundWindow(); + +// #if(WINVER >= 0x0400) +extern(Windows) export BOOL PaintDesktop( + HDC hdc); + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL SetForegroundWindow( + HWND hWnd); + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL AllowSetForegroundWindow( + DWORD dwProcessId); + +enum : DWORD { ASFW_ANY = cast(DWORD)-1 } + +extern(Windows) export BOOL LockSetForegroundWindow( + UINT uLockCode); + +enum : uint { LSFW_LOCK = 1 } +enum : uint { LSFW_UNLOCK = 2 } + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +extern(Windows) export HWND WindowFromDC( + HDC hDC); + +extern(Windows) export HDC GetDC( + HWND hWnd); + +extern(Windows) export HDC GetDCEx( + HWND hWnd, + HRGN hrgnClip, + DWORD flags); + +enum : uint { DCX_WINDOW = 0x00000001 } +enum : uint { DCX_CACHE = 0x00000002 } +enum : uint { DCX_NORESETATTRS = 0x00000004 } +enum : uint { DCX_CLIPCHILDREN = 0x00000008 } +enum : uint { DCX_CLIPSIBLINGS = 0x00000010 } +enum : uint { DCX_PARENTCLIP = 0x00000020 } +enum : uint { DCX_EXCLUDERGN = 0x00000040 } +enum : uint { DCX_INTERSECTRGN = 0x00000080 } +enum : uint { DCX_EXCLUDEUPDATE = 0x00000100 } +enum : uint { DCX_INTERSECTUPDATE = 0x00000200 } +enum : uint { DCX_LOCKWINDOWUPDATE = 0x00000400 } + +enum : uint { DCX_VALIDATE = 0x00200000 } + +extern(Windows) export HDC GetWindowDC( + HWND hWnd); + +extern(Windows) export int ReleaseDC( + HWND hWnd, + HDC hDC); + +extern(Windows) export HDC BeginPaint( + HWND hWnd, + LPPAINTSTRUCT lpPaint); + +extern(Windows) export BOOL EndPaint( + HWND hWnd, + PAINTSTRUCT *lpPaint); + +extern(Windows) export BOOL GetUpdateRect( + HWND hWnd, + LPRECT lpRect, + BOOL bErase); + +extern(Windows) export int GetUpdateRgn( + HWND hWnd, + HRGN hRgn, + BOOL bErase); + +extern(Windows) export int SetWindowRgn( + HWND hWnd, + HRGN hRgn, + BOOL bRedraw); + +extern(Windows) export int GetWindowRgn( + HWND hWnd, + HRGN hRgn); + +// #if(_WIN32_WINNT >= 0x0501) + +extern(Windows) export int GetWindowRgnBox( + HWND hWnd, + LPRECT lprc); + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export int ExcludeUpdateRgn( + HDC hDC, + HWND hWnd); + +extern(Windows) export BOOL InvalidateRect( + HWND hWnd, + RECT *lpRect, + BOOL bErase); + +extern(Windows) export BOOL ValidateRect( + HWND hWnd, + RECT *lpRect); + +extern(Windows) export BOOL InvalidateRgn( + HWND hWnd, + HRGN hRgn, + BOOL bErase); + +extern(Windows) export BOOL ValidateRgn( + HWND hWnd, + HRGN hRgn); + +extern(Windows) export BOOL RedrawWindow( + HWND hWnd, + RECT *lprcUpdate, + HRGN hrgnUpdate, + UINT flags); + +enum : uint { RDW_INVALIDATE = 0x0001 } +enum : uint { RDW_INTERNALPAINT = 0x0002 } +enum : uint { RDW_ERASE = 0x0004 } + +enum : uint { RDW_VALIDATE = 0x0008 } +enum : uint { RDW_NOINTERNALPAINT = 0x0010 } +enum : uint { RDW_NOERASE = 0x0020 } + +enum : uint { RDW_NOCHILDREN = 0x0040 } +enum : uint { RDW_ALLCHILDREN = 0x0080 } + +enum : uint { RDW_UPDATENOW = 0x0100 } +enum : uint { RDW_ERASENOW = 0x0200 } + +enum : uint { RDW_FRAME = 0x0400 } +enum : uint { RDW_NOFRAME = 0x0800 } + +extern(Windows) export BOOL LockWindowUpdate( + HWND hWndLock); + +extern(Windows) export BOOL ScrollWindow( + HWND hWnd, + int XAmount, + int YAmount, + RECT *lpRect, + RECT *lpClipRect); + +extern(Windows) export BOOL ScrollDC( + HDC hDC, + int dx, + int dy, + RECT *lprcScroll, + RECT *lprcClip, + HRGN hrgnUpdate, + LPRECT lprcUpdate); + +extern(Windows) export int ScrollWindowEx( + HWND hWnd, + int dx, + int dy, + RECT *prcScroll, + RECT *prcClip, + HRGN hrgnUpdate, + LPRECT prcUpdate, + UINT flags); + +enum : uint { SW_SCROLLCHILDREN = 0x0001 } +enum : uint { SW_INVALIDATE = 0x0002 } +enum : uint { SW_ERASE = 0x0004 } +// #if(WINVER >= 0x0500) +enum : uint { SW_SMOOTHSCROLL = 0x0010 } +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NOSCROLL + +extern(Windows) export int SetScrollPos( + HWND hWnd, + int nBar, + int nPos, + BOOL bRedraw); + +extern(Windows) export int GetScrollPos( + HWND hWnd, + int nBar); + +extern(Windows) export BOOL SetScrollRange( + HWND hWnd, + int nBar, + int nMinPos, + int nMaxPos, + BOOL bRedraw); + +extern(Windows) export BOOL GetScrollRange( + HWND hWnd, + int nBar, + LPINT lpMinPos, + LPINT lpMaxPos); + +extern(Windows) export BOOL ShowScrollBar( + HWND hWnd, + int wBar, + BOOL bShow); + +extern(Windows) export BOOL EnableScrollBar( + HWND hWnd, + UINT wSBflags, + UINT wArrows); + +enum : uint { ESB_ENABLE_BOTH = 0x0000 } +enum : uint { ESB_DISABLE_BOTH = 0x0003 } + +enum : uint { ESB_DISABLE_LEFT = 0x0001 } +enum : uint { ESB_DISABLE_RIGHT = 0x0002 } + +enum : uint { ESB_DISABLE_UP = 0x0001 } +enum : uint { ESB_DISABLE_DOWN = 0x0002 } + +alias ESB_DISABLE_LEFT ESB_DISABLE_LTUP; +alias ESB_DISABLE_RIGHT ESB_DISABLE_RTDN; + +// #endif /* !NOSCROLL */ + +extern(Windows) export BOOL SetPropA( + HWND hWnd, + LPCSTR lpString, + HANDLE hData); +extern(Windows) export BOOL SetPropW( + HWND hWnd, + LPCWSTR lpString, + HANDLE hData); +// #ifdef UNICODE +alias SetPropW SetProp; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE GetPropA( + HWND hWnd, + LPCSTR lpString); +extern(Windows) export HANDLE GetPropW( + HWND hWnd, + LPCWSTR lpString); +// #ifdef UNICODE +alias GetPropW GetProp; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE RemovePropA( + HWND hWnd, + LPCSTR lpString); +extern(Windows) export HANDLE RemovePropW( + HWND hWnd, + LPCWSTR lpString); +// #ifdef UNICODE +alias RemovePropW RemoveProp; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int EnumPropsExA( + HWND hWnd, + PROPENUMPROCEXA lpEnumFunc, + LPARAM lParam); +extern(Windows) export int EnumPropsExW( + HWND hWnd, + PROPENUMPROCEXW lpEnumFunc, + LPARAM lParam); +// #ifdef UNICODE +alias EnumPropsExW EnumPropsEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int EnumPropsA( + HWND hWnd, + PROPENUMPROCA lpEnumFunc); +extern(Windows) export int EnumPropsW( + HWND hWnd, + PROPENUMPROCW lpEnumFunc); +// #ifdef UNICODE +alias EnumPropsW EnumProps; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL SetWindowTextA( + HWND hWnd, + LPCSTR lpString); +extern(Windows) export BOOL SetWindowTextW( + HWND hWnd, + LPCWSTR lpString); +// #ifdef UNICODE +alias SetWindowTextW SetWindowText; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int GetWindowTextA( + HWND hWnd, + LPSTR lpString, + int nMaxCount); +extern(Windows) export int GetWindowTextW( + HWND hWnd, + LPWSTR lpString, + int nMaxCount); +// #ifdef UNICODE +alias GetWindowTextW GetWindowText; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int GetWindowTextLengthA( + HWND hWnd); +extern(Windows) export int GetWindowTextLengthW( + HWND hWnd); +// #ifdef UNICODE +alias GetWindowTextLengthW GetWindowTextLength; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetClientRect( + HWND hWnd, + LPRECT lpRect); + +extern(Windows) export BOOL GetWindowRect( + HWND hWnd, + LPRECT lpRect); + +extern(Windows) export BOOL AdjustWindowRect( + LPRECT lpRect, + DWORD dwStyle, + BOOL bMenu); + +extern(Windows) export BOOL AdjustWindowRectEx( + LPRECT lpRect, + DWORD dwStyle, + BOOL bMenu, + DWORD dwExStyle); + +// #if(WINVER >= 0x0400) +enum : uint { HELPINFO_WINDOW = 0x0001 } +enum : uint { HELPINFO_MENUITEM = 0x0002 } +struct tagHELPINFO { + UINT cbSize; + int iContextType; + int iCtrlId; + HANDLE hItemHandle; + DWORD_PTR dwContextId; + POINT MousePos; +} +alias tagHELPINFO HELPINFO; +alias tagHELPINFO* LPHELPINFO; + +extern(Windows) export BOOL SetWindowContextHelpId( + HWND, + DWORD); + +extern(Windows) export DWORD GetWindowContextHelpId( + HWND); + +extern(Windows) export BOOL SetMenuContextHelpId( + HMENU, + DWORD); + +extern(Windows) export DWORD GetMenuContextHelpId( + HMENU); + +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOMB + +enum : uint { MB_OK = 0x00000000 } +enum : uint { MB_OKCANCEL = 0x00000001 } +enum : uint { MB_ABORTRETRYIGNORE = 0x00000002 } +enum : uint { MB_YESNOCANCEL = 0x00000003 } +enum : uint { MB_YESNO = 0x00000004 } +enum : uint { MB_RETRYCANCEL = 0x00000005 } +// #if(WINVER >= 0x0500) +enum : uint { MB_CANCELTRYCONTINUE = 0x00000006 } +// #endif /* WINVER >= 0x0500 */ + +enum : uint { MB_ICONHAND = 0x00000010 } +enum : uint { MB_ICONQUESTION = 0x00000020 } +enum : uint { MB_ICONEXCLAMATION = 0x00000030 } +enum : uint { MB_ICONASTERISK = 0x00000040 } + +// #if(WINVER >= 0x0400) +enum : uint { MB_USERICON = 0x00000080 } +alias MB_ICONEXCLAMATION MB_ICONWARNING; +alias MB_ICONHAND MB_ICONERROR; +// #endif /* WINVER >= 0x0400 */ + +alias MB_ICONASTERISK MB_ICONINFORMATION; +alias MB_ICONHAND MB_ICONSTOP; + +enum : uint { MB_DEFBUTTON1 = 0x00000000 } +enum : uint { MB_DEFBUTTON2 = 0x00000100 } +enum : uint { MB_DEFBUTTON3 = 0x00000200 } +// #if(WINVER >= 0x0400) +enum : uint { MB_DEFBUTTON4 = 0x00000300 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MB_APPLMODAL = 0x00000000 } +enum : uint { MB_SYSTEMMODAL = 0x00001000 } +enum : uint { MB_TASKMODAL = 0x00002000 } +// #if(WINVER >= 0x0400) +enum : uint { MB_HELP = 0x00004000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MB_NOFOCUS = 0x00008000 } +enum : uint { MB_SETFOREGROUND = 0x00010000 } +enum : uint { MB_DEFAULT_DESKTOP_ONLY = 0x00020000 } + +// #if(WINVER >= 0x0400) +enum : uint { MB_TOPMOST = 0x00040000 } +enum : uint { MB_RIGHT = 0x00080000 } +enum : uint { MB_RTLREADING = 0x00100000 } + +// #endif /* WINVER >= 0x0400 */ + +// #ifdef _WIN32_WINNT +// #if (_WIN32_WINNT >= 0x0400) +enum : uint { MB_SERVICE_NOTIFICATION = 0x00200000 } +// #else +// #... +// #endif +enum : uint { MB_SERVICE_NOTIFICATION_NT3X = 0x00040000 } +// #endif + +enum : uint { MB_TYPEMASK = 0x0000000F } +enum : uint { MB_ICONMASK = 0x000000F0 } +enum : uint { MB_DEFMASK = 0x00000F00 } +enum : uint { MB_MODEMASK = 0x00003000 } +enum : uint { MB_MISCMASK = 0x0000C000 } + +extern(Windows) export int MessageBoxA( + HWND hWnd, + LPCSTR lpText, + LPCSTR lpCaption, + UINT uType); +extern(Windows) export int MessageBoxW( + HWND hWnd, + LPCWSTR lpText, + LPCWSTR lpCaption, + UINT uType); +// #ifdef UNICODE +alias MessageBoxW MessageBox; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int MessageBoxExA( + HWND hWnd, + LPCSTR lpText, + LPCSTR lpCaption, + UINT uType, + WORD wLanguageId); +extern(Windows) export int MessageBoxExW( + HWND hWnd, + LPCWSTR lpText, + LPCWSTR lpCaption, + UINT uType, + WORD wLanguageId); +// #ifdef UNICODE +alias MessageBoxExW MessageBoxEx; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) + +extern(Windows) alias void function(LPHELPINFO lpHelpInfo) MSGBOXCALLBACK; + +struct tagMSGBOXPARAMSA { + UINT cbSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCSTR lpszText; + LPCSTR lpszCaption; + DWORD dwStyle; + LPCSTR lpszIcon; + DWORD_PTR dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias tagMSGBOXPARAMSA MSGBOXPARAMSA; +alias tagMSGBOXPARAMSA* PMSGBOXPARAMSA; +alias tagMSGBOXPARAMSA* LPMSGBOXPARAMSA; + +struct tagMSGBOXPARAMSW { + UINT cbSize; + HWND hwndOwner; + HINSTANCE hInstance; + LPCWSTR lpszText; + LPCWSTR lpszCaption; + DWORD dwStyle; + LPCWSTR lpszIcon; + DWORD_PTR dwContextHelpId; + MSGBOXCALLBACK lpfnMsgBoxCallback; + DWORD dwLanguageId; +} +alias tagMSGBOXPARAMSW MSGBOXPARAMSW; +alias tagMSGBOXPARAMSW* PMSGBOXPARAMSW; +alias tagMSGBOXPARAMSW* LPMSGBOXPARAMSW; + +// #ifdef UNICODE +alias MSGBOXPARAMSW MSGBOXPARAMS; +alias PMSGBOXPARAMSW PMSGBOXPARAMS; +alias LPMSGBOXPARAMSW LPMSGBOXPARAMS; +// #else +// ... +// #endif // UNICODE + +extern(Windows) export int MessageBoxIndirectA( + MSGBOXPARAMSA *); +extern(Windows) export int MessageBoxIndirectW( + MSGBOXPARAMSW *); +// #ifdef UNICODE +alias MessageBoxIndirectW MessageBoxIndirect; +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL MessageBeep( + UINT uType); + +// #endif /* !NOMB */ + +extern(Windows) export int ShowCursor( + BOOL bShow); + +extern(Windows) export BOOL SetCursorPos( + int X, + int Y); + +extern(Windows) export HCURSOR SetCursor( + HCURSOR hCursor); + +extern(Windows) export BOOL GetCursorPos( + LPPOINT lpPoint); + +extern(Windows) export BOOL ClipCursor( + RECT *lpRect); + +extern(Windows) export BOOL GetClipCursor( + LPRECT lpRect); + +extern(Windows) export HCURSOR GetCursor(); + +extern(Windows) export BOOL CreateCaret( + HWND hWnd, + HBITMAP hBitmap, + int nWidth, + int nHeight); + +extern(Windows) export UINT GetCaretBlinkTime(); + +extern(Windows) export BOOL SetCaretBlinkTime( + UINT uMSeconds); + +extern(Windows) export BOOL DestroyCaret(); + +extern(Windows) export BOOL HideCaret( + HWND hWnd); + +extern(Windows) export BOOL ShowCaret( + HWND hWnd); + +extern(Windows) export BOOL SetCaretPos( + int X, + int Y); + +extern(Windows) export BOOL GetCaretPos( + LPPOINT lpPoint); + +extern(Windows) export BOOL ClientToScreen( + HWND hWnd, + LPPOINT lpPoint); + +extern(Windows) export BOOL ScreenToClient( + HWND hWnd, + LPPOINT lpPoint); + +extern(Windows) export int MapWindowPoints( + HWND hWndFrom, + HWND hWndTo, + LPPOINT lpPoints, + UINT cPoints); + +extern(Windows) export HWND WindowFromPoint( + POINT Point); + +extern(Windows) export HWND ChildWindowFromPoint( + HWND hWndParent, + POINT Point); + +// #if(WINVER >= 0x0400) +enum : uint { CWP_ALL = 0x0000 } +enum : uint { CWP_SKIPINVISIBLE = 0x0001 } +enum : uint { CWP_SKIPDISABLED = 0x0002 } +enum : uint { CWP_SKIPTRANSPARENT = 0x0004 } + +extern(Windows) export HWND ChildWindowFromPointEx(HWND, POINT, UINT); +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOCOLOR + +enum : uint { CTLCOLOR_MSGBOX = 0 } +enum : uint { CTLCOLOR_EDIT = 1 } +enum : uint { CTLCOLOR_LISTBOX = 2 } +enum : uint { CTLCOLOR_BTN = 3 } +enum : uint { CTLCOLOR_DLG = 4 } +enum : uint { CTLCOLOR_SCROLLBAR = 5 } +enum : uint { CTLCOLOR_STATIC = 6 } +enum : uint { CTLCOLOR_MAX = 7 } + +enum : uint { COLOR_SCROLLBAR = 0 } +enum : uint { COLOR_BACKGROUND = 1 } +enum : uint { COLOR_ACTIVECAPTION = 2 } +enum : uint { COLOR_INACTIVECAPTION = 3 } +enum : uint { COLOR_MENU = 4 } +enum : uint { COLOR_WINDOW = 5 } +enum : uint { COLOR_WINDOWFRAME = 6 } +enum : uint { COLOR_MENUTEXT = 7 } +enum : uint { COLOR_WINDOWTEXT = 8 } +enum : uint { COLOR_CAPTIONTEXT = 9 } +enum : uint { COLOR_ACTIVEBORDER = 10 } +enum : uint { COLOR_INACTIVEBORDER = 11 } +enum : uint { COLOR_APPWORKSPACE = 12 } +enum : uint { COLOR_HIGHLIGHT = 13 } +enum : uint { COLOR_HIGHLIGHTTEXT = 14 } +enum : uint { COLOR_BTNFACE = 15 } +enum : uint { COLOR_BTNSHADOW = 16 } +enum : uint { COLOR_GRAYTEXT = 17 } +enum : uint { COLOR_BTNTEXT = 18 } +enum : uint { COLOR_INACTIVECAPTIONTEXT = 19 } +enum : uint { COLOR_BTNHIGHLIGHT = 20 } + +// #if(WINVER >= 0x0400) +enum : uint { COLOR_3DDKSHADOW = 21 } +enum : uint { COLOR_3DLIGHT = 22 } +enum : uint { COLOR_INFOTEXT = 23 } +enum : uint { COLOR_INFOBK = 24 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { COLOR_HOTLIGHT = 26 } +enum : uint { COLOR_GRADIENTACTIVECAPTION = 27 } +enum : uint { COLOR_GRADIENTINACTIVECAPTION = 28 } +// #if(WINVER >= 0x0501) +enum : uint { COLOR_MENUHILIGHT = 29 } +enum : uint { COLOR_MENUBAR = 30 } +// #endif /* WINVER >= 0x0501 */ +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0400) +alias COLOR_BACKGROUND COLOR_DESKTOP; +alias COLOR_BTNFACE COLOR_3DFACE; +alias COLOR_BTNSHADOW COLOR_3DSHADOW; +alias COLOR_BTNHIGHLIGHT COLOR_3DHIGHLIGHT; +alias COLOR_BTNHIGHLIGHT COLOR_3DHILIGHT; +alias COLOR_BTNHIGHLIGHT COLOR_BTNHILIGHT; +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export DWORD GetSysColor( + int nIndex); + +// #if(WINVER >= 0x0400) +extern(Windows) export HBRUSH GetSysColorBrush( + int nIndex); + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL SetSysColors( + int cElements, + INT * lpaElements, + COLORREF * lpaRgbValues); + +// #endif /* !NOCOLOR */ + +extern(Windows) export BOOL DrawFocusRect( + HDC hDC, + RECT * lprc); + +extern(Windows) export int FillRect( + HDC hDC, + RECT *lprc, + HBRUSH hbr); + +extern(Windows) export int FrameRect( + HDC hDC, + RECT *lprc, + HBRUSH hbr); + +extern(Windows) export BOOL InvertRect( + HDC hDC, + RECT *lprc); + +extern(Windows) export BOOL SetRect( + LPRECT lprc, + int xLeft, + int yTop, + int xRight, + int yBottom); + +extern(Windows) export BOOL SetRectEmpty( + LPRECT lprc); + +extern(Windows) export BOOL CopyRect( + LPRECT lprcDst, + RECT *lprcSrc); + +extern(Windows) export BOOL InflateRect( + LPRECT lprc, + int dx, + int dy); + +extern(Windows) export BOOL IntersectRect( + LPRECT lprcDst, + RECT *lprcSrc1, + RECT *lprcSrc2); + +extern(Windows) export BOOL UnionRect( + LPRECT lprcDst, + RECT *lprcSrc1, + RECT *lprcSrc2); + +extern(Windows) export BOOL SubtractRect( + LPRECT lprcDst, + RECT *lprcSrc1, + RECT *lprcSrc2); + +extern(Windows) export BOOL OffsetRect( + LPRECT lprc, + int dx, + int dy); + +extern(Windows) export BOOL IsRectEmpty( + RECT *lprc); + +extern(Windows) export BOOL EqualRect( + RECT *lprc1, + RECT *lprc2); + +extern(Windows) export BOOL PtInRect( + RECT *lprc, + POINT pt); + +// #ifndef NOWINOFFSETS + +extern(Windows) export WORD GetWindowWord( + HWND hWnd, + int nIndex); + +extern(Windows) export WORD SetWindowWord( + HWND hWnd, + int nIndex, + WORD wNewWord); + +extern(Windows) export LONG GetWindowLongA( + HWND hWnd, + int nIndex); +extern(Windows) export LONG GetWindowLongW( + HWND hWnd, + int nIndex); +// #ifdef UNICODE +alias GetWindowLongW GetWindowLong; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LONG SetWindowLongA( + HWND hWnd, + int nIndex, + LONG dwNewLong); +extern(Windows) export LONG SetWindowLongW( + HWND hWnd, + int nIndex, + LONG dwNewLong); +// #ifdef UNICODE +alias SetWindowLongW SetWindowLong; +// #else +// #... +// #endif // !UNICODE + +// #ifdef _WIN64 + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #else /* _WIN64 */ + +alias GetWindowLongA GetWindowLongPtrA; +alias GetWindowLongW GetWindowLongPtrW; +// #ifdef UNICODE +alias GetWindowLongPtrW GetWindowLongPtr; +// #else +// #... +// #endif // !UNICODE + +alias SetWindowLongA SetWindowLongPtrA; +alias SetWindowLongW SetWindowLongPtrW; +// #ifdef UNICODE +alias SetWindowLongPtrW SetWindowLongPtr; +// #else +// #... +// #endif // !UNICODE + +// #endif /* _WIN64 */ + +extern(Windows) export WORD GetClassWord( + HWND hWnd, + int nIndex); + +extern(Windows) export WORD SetClassWord( + HWND hWnd, + int nIndex, + WORD wNewWord); + +extern(Windows) export DWORD GetClassLongA( + HWND hWnd, + int nIndex); +extern(Windows) export DWORD GetClassLongW( + HWND hWnd, + int nIndex); +// #ifdef UNICODE +alias GetClassLongW GetClassLong; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD SetClassLongA( + HWND hWnd, + int nIndex, + LONG dwNewLong); +extern(Windows) export DWORD SetClassLongW( + HWND hWnd, + int nIndex, + LONG dwNewLong); +// #ifdef UNICODE +alias SetClassLongW SetClassLong; +// #else +// #... +// #endif // !UNICODE + +// #ifdef _WIN64 + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #else /* _WIN64 */ + +alias GetClassLongA GetClassLongPtrA; +alias GetClassLongW GetClassLongPtrW; +// #ifdef UNICODE +alias GetClassLongPtrW GetClassLongPtr; +// #else +// #... +// #endif // !UNICODE + +alias SetClassLongA SetClassLongPtrA; +alias SetClassLongW SetClassLongPtrW; +// #ifdef UNICODE +alias SetClassLongPtrW SetClassLongPtr; +// #else +// #... +// #endif // !UNICODE + +// #endif /* _WIN64 */ + +// #endif /* !NOWINOFFSETS */ + +// #if(WINVER >= 0x0500) +extern(Windows) export BOOL GetProcessDefaultLayout( + DWORD *pdwDefaultLayout); + +extern(Windows) export BOOL SetProcessDefaultLayout( + DWORD dwDefaultLayout); +// #endif /* WINVER >= 0x0500 */ + +extern(Windows) export HWND GetDesktopWindow(); + +extern(Windows) export HWND GetParent( + HWND hWnd); + +extern(Windows) export HWND SetParent( + HWND hWndChild, + HWND hWndNewParent); + +extern(Windows) export BOOL EnumChildWindows( + HWND hWndParent, + WNDENUMPROC lpEnumFunc, + LPARAM lParam); + +extern(Windows) export HWND FindWindowA( + LPCSTR lpClassName, + LPCSTR lpWindowName); +extern(Windows) export HWND FindWindowW( + LPCWSTR lpClassName, + LPCWSTR lpWindowName); +// #ifdef UNICODE +alias FindWindowW FindWindow; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR); +extern(Windows) export HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR); +// #ifdef UNICODE +alias FindWindowExW FindWindowEx; +// #else +// #... +// #endif // !UNICODE + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL EnumWindows( + WNDENUMPROC lpEnumFunc, + LPARAM lParam); + +extern(Windows) export BOOL EnumThreadWindows( + DWORD dwThreadId, + WNDENUMPROC lpfn, + LPARAM lParam); + +// #define EnumTaskWindows(hTask, lpfn, lParam) EnumThreadWindows(HandleToUlong(hTask), lpfn, lParam) + +extern(Windows) export int GetClassNameA( + HWND hWnd, + LPSTR lpClassName, + int nMaxCount); +extern(Windows) export int GetClassNameW( + HWND hWnd, + LPWSTR lpClassName, + int nMaxCount); +// #ifdef UNICODE +alias GetClassNameW GetClassName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HWND GetTopWindow( + HWND hWnd); + +// #define GetNextWindow(hWnd, wCmd) GetWindow(hWnd, wCmd) +// #define GetSysModalWindow() (NULL) +// #define SetSysModalWindow(hWnd) (NULL) + +extern(Windows) export DWORD GetWindowThreadProcessId( + HWND hWnd, + LPDWORD lpdwProcessId); + +// #if(_WIN32_WINNT >= 0x0501) +extern(Windows) export BOOL IsGUIThread( + BOOL bConvert); + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #define GetWindowTask(hWnd) ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd, NULL)) + +extern(Windows) export HWND GetLastActivePopup( + HWND hWnd); + +enum : uint { GW_HWNDFIRST = 0 } +enum : uint { GW_HWNDLAST = 1 } +enum : uint { GW_HWNDNEXT = 2 } +enum : uint { GW_HWNDPREV = 3 } +enum : uint { GW_OWNER = 4 } +enum : uint { GW_CHILD = 5 } +// #if(WINVER <= 0x0400) +// #... +// #else +enum : uint { GW_ENABLEDPOPUP = 6 } +enum : uint { GW_MAX = 6 } +// #endif + +extern(Windows) export HWND GetWindow( + HWND hWnd, + UINT uCmd); + +// #ifndef NOWH + +// #ifdef STRICT + +extern(Windows) export HHOOK SetWindowsHookA( + int nFilterType, + HOOKPROC pfnFilterProc); +extern(Windows) export HHOOK SetWindowsHookW( + int nFilterType, + HOOKPROC pfnFilterProc); +// #ifdef UNICODE +alias SetWindowsHookW SetWindowsHook; +// #else +// #... +// #endif // !UNICODE + +// #else /* !STRICT */ + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #endif /* !STRICT */ + +extern(Windows) export BOOL UnhookWindowsHook( + int nCode, + HOOKPROC pfnFilterProc); + +extern(Windows) export HHOOK SetWindowsHookExA( + int idHook, + HOOKPROC lpfn, + HINSTANCE hmod, + DWORD dwThreadId); +extern(Windows) export HHOOK SetWindowsHookExW( + int idHook, + HOOKPROC lpfn, + HINSTANCE hmod, + DWORD dwThreadId); +// #ifdef UNICODE +alias SetWindowsHookExW SetWindowsHookEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL UnhookWindowsHookEx( + HHOOK hhk); + +extern(Windows) export LRESULT CallNextHookEx( + HHOOK hhk, + int nCode, + WPARAM wParam, + LPARAM lParam); + +// #ifdef STRICT +// #define DefHookProc(nCode, wParam, lParam, phhk) CallNextHookEx(*phhk, nCode, wParam, lParam) +// #else +// #... +// ... +// #endif /* STRICT */ +// #endif /* !NOWH */ + +// #ifndef NOMENUS + +enum : uint { MF_INSERT = 0x00000000 } +enum : uint { MF_CHANGE = 0x00000080 } +enum : uint { MF_APPEND = 0x00000100 } +enum : uint { MF_DELETE = 0x00000200 } +enum : uint { MF_REMOVE = 0x00001000 } + +enum : uint { MF_BYCOMMAND = 0x00000000 } +enum : uint { MF_BYPOSITION = 0x00000400 } + +enum : uint { MF_SEPARATOR = 0x00000800 } + +enum : uint { MF_ENABLED = 0x00000000 } +enum : uint { MF_GRAYED = 0x00000001 } +enum : uint { MF_DISABLED = 0x00000002 } + +enum : uint { MF_UNCHECKED = 0x00000000 } +enum : uint { MF_CHECKED = 0x00000008 } +enum : uint { MF_USECHECKBITMAPS = 0x00000200 } + +enum : uint { MF_STRING = 0x00000000 } +enum : uint { MF_BITMAP = 0x00000004 } +enum : uint { MF_OWNERDRAW = 0x00000100 } + +enum : uint { MF_POPUP = 0x00000010 } +enum : uint { MF_MENUBARBREAK = 0x00000020 } +enum : uint { MF_MENUBREAK = 0x00000040 } + +enum : uint { MF_UNHILITE = 0x00000000 } +enum : uint { MF_HILITE = 0x00000080 } + +// #if(WINVER >= 0x0400) +enum : uint { MF_DEFAULT = 0x00001000 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { MF_SYSMENU = 0x00002000 } +enum : uint { MF_HELP = 0x00004000 } +// #if(WINVER >= 0x0400) +enum : uint { MF_RIGHTJUSTIFY = 0x00004000 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { MF_MOUSESELECT = 0x00008000 } +// #if(WINVER >= 0x0400) +enum : uint { MF_END = 0x00000080 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) +alias MF_STRING MFT_STRING; +alias MF_BITMAP MFT_BITMAP; +alias MF_MENUBARBREAK MFT_MENUBARBREAK; +alias MF_MENUBREAK MFT_MENUBREAK; +alias MF_OWNERDRAW MFT_OWNERDRAW; +enum : uint { MFT_RADIOCHECK = 0x00000200 } +alias MF_SEPARATOR MFT_SEPARATOR; +enum : uint { MFT_RIGHTORDER = 0x00002000 } +alias MF_RIGHTJUSTIFY MFT_RIGHTJUSTIFY; + +enum : uint { MFS_GRAYED = 0x00000003 } +alias MFS_GRAYED MFS_DISABLED; +alias MF_CHECKED MFS_CHECKED; +alias MF_HILITE MFS_HILITE; +alias MF_ENABLED MFS_ENABLED; +alias MF_UNCHECKED MFS_UNCHECKED; +alias MF_UNHILITE MFS_UNHILITE; +alias MF_DEFAULT MFS_DEFAULT; +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0400) + +extern(Windows) export BOOL CheckMenuRadioItem( + HMENU, + UINT, + UINT, + UINT, + UINT); +// #endif /* WINVER >= 0x0400 */ + +struct _4 { + WORD versionNumber; + WORD offset; +} +alias _4 MENUITEMTEMPLATEHEADER; +alias _4* PMENUITEMTEMPLATEHEADER; + +struct _5 { + WORD mtOption; + WORD mtID; + WCHAR mtString[1]; +} +alias _5 MENUITEMTEMPLATE; +alias _5* PMENUITEMTEMPLATE; + +// skip #define MF_END 0x00000080L + +// #endif /* !NOMENUS */ + +// #ifndef NOSYSCOMMANDS + +enum : uint { SC_SIZE = 0xF000 } +enum : uint { SC_MOVE = 0xF010 } +enum : uint { SC_MINIMIZE = 0xF020 } +enum : uint { SC_MAXIMIZE = 0xF030 } +enum : uint { SC_NEXTWINDOW = 0xF040 } +enum : uint { SC_PREVWINDOW = 0xF050 } +enum : uint { SC_CLOSE = 0xF060 } +enum : uint { SC_VSCROLL = 0xF070 } +enum : uint { SC_HSCROLL = 0xF080 } +enum : uint { SC_MOUSEMENU = 0xF090 } +enum : uint { SC_KEYMENU = 0xF100 } +enum : uint { SC_ARRANGE = 0xF110 } +enum : uint { SC_RESTORE = 0xF120 } +enum : uint { SC_TASKLIST = 0xF130 } +enum : uint { SC_SCREENSAVE = 0xF140 } +enum : uint { SC_HOTKEY = 0xF150 } +// #if(WINVER >= 0x0400) +enum : uint { SC_DEFAULT = 0xF160 } +enum : uint { SC_MONITORPOWER = 0xF170 } +enum : uint { SC_CONTEXTHELP = 0xF180 } +enum : uint { SC_SEPARATOR = 0xF00F } +// #endif /* WINVER >= 0x0400 */ + +alias SC_MINIMIZE SC_ICON; +alias SC_MAXIMIZE SC_ZOOM; + +// #endif /* !NOSYSCOMMANDS */ + +extern(Windows) export HBITMAP LoadBitmapA( + HINSTANCE hInstance, + LPCSTR lpBitmapName); +extern(Windows) export HBITMAP LoadBitmapW( + HINSTANCE hInstance, + LPCWSTR lpBitmapName); +// #ifdef UNICODE +alias LoadBitmapW LoadBitmap; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HCURSOR LoadCursorA( + HINSTANCE hInstance, + LPCSTR lpCursorName); +extern(Windows) export HCURSOR LoadCursorW( + HINSTANCE hInstance, + LPCWSTR lpCursorName); +// #ifdef UNICODE +alias LoadCursorW LoadCursor; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HCURSOR LoadCursorFromFileA( + LPCSTR lpFileName); +extern(Windows) export HCURSOR LoadCursorFromFileW( + LPCWSTR lpFileName); +// #ifdef UNICODE +alias LoadCursorFromFileW LoadCursorFromFile; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HCURSOR CreateCursor( + HINSTANCE hInst, + int xHotSpot, + int yHotSpot, + int nWidth, + int nHeight, + VOID *pvANDPlane, + VOID *pvXORPlane); + +extern(Windows) export BOOL DestroyCursor( + HCURSOR hCursor); + +// #ifndef _MAC +alias CopyIcon CopyCursor; +// #else +// ... +// #endif + +const LPTSTR IDC_ARROW = cast(LPTSTR)(32512); +const LPTSTR IDC_IBEAM = cast(LPTSTR)(32513); +const LPTSTR IDC_WAIT = cast(LPTSTR)(32514); +const LPTSTR IDC_CROSS = cast(LPTSTR)(32515); +const LPTSTR IDC_UPARROW = cast(LPTSTR)(32516); +const LPTSTR IDC_SIZE = cast(LPTSTR)(32640); +const LPTSTR IDC_ICON = cast(LPTSTR)(32641); +const LPTSTR IDC_SIZENWSE = cast(LPTSTR)(32642); +const LPTSTR IDC_SIZENESW = cast(LPTSTR)(32643); +const LPTSTR IDC_SIZEWE = cast(LPTSTR)(32644); +const LPTSTR IDC_SIZENS = cast(LPTSTR)(32645); +const LPTSTR IDC_SIZEALL = cast(LPTSTR)(32646); +const LPTSTR IDC_NO = cast(LPTSTR)(32648); +// #if(WINVER >= 0x0500) +const LPTSTR IDC_HAND = cast(LPTSTR)(32649); +// #endif /* WINVER >= 0x0500 */ +const LPTSTR IDC_APPSTARTING = cast(LPTSTR)(32650); +// #if(WINVER >= 0x0400) +const LPTSTR IDC_HELP = cast(LPTSTR)(32651); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL SetSystemCursor( + HCURSOR hcur, + DWORD id); + +struct _ICONINFO { + BOOL fIcon; + DWORD xHotspot; + DWORD yHotspot; + HBITMAP hbmMask; + HBITMAP hbmColor; +} +alias _ICONINFO ICONINFO; + +alias ICONINFO* PICONINFO; + +extern(Windows) export HICON LoadIconA( + HINSTANCE hInstance, + LPCSTR lpIconName); +extern(Windows) export HICON LoadIconW( + HINSTANCE hInstance, + LPCWSTR lpIconName); +// #ifdef UNICODE +alias LoadIconW LoadIcon; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HICON CreateIcon( + HINSTANCE hInstance, + int nWidth, + int nHeight, + BYTE cPlanes, + BYTE cBitsPixel, + BYTE *lpbANDbits, + BYTE *lpbXORbits); + +extern(Windows) export BOOL DestroyIcon( + HICON hIcon); + +extern(Windows) export int LookupIconIdFromDirectory( + PBYTE presbits, + BOOL fIcon); + +// #if(WINVER >= 0x0400) +extern(Windows) export int LookupIconIdFromDirectoryEx( + PBYTE presbits, + BOOL fIcon, + int cxDesired, + int cyDesired, + UINT Flags); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export HICON CreateIconFromResource( + PBYTE presbits, + DWORD dwResSize, + BOOL fIcon, + DWORD dwVer); + +// #if(WINVER >= 0x0400) +extern(Windows) export HICON CreateIconFromResourceEx( + PBYTE presbits, + DWORD dwResSize, + BOOL fIcon, + DWORD dwVer, + int cxDesired, + int cyDesired, + UINT Flags); + +struct tagCURSORSHAPE { + int xHotSpot; + int yHotSpot; + int cx; + int cy; + int cbWidth; + BYTE Planes; + BYTE BitsPixel; +} +alias tagCURSORSHAPE CURSORSHAPE; +alias tagCURSORSHAPE* LPCURSORSHAPE; + +// #endif /* WINVER >= 0x0400 */ + +enum : uint { IMAGE_BITMAP = 0 } +enum : uint { IMAGE_ICON = 1 } +enum : uint { IMAGE_CURSOR = 2 } +// #if(WINVER >= 0x0400) +enum : uint { IMAGE_ENHMETAFILE = 3 } + +enum : uint { LR_DEFAULTCOLOR = 0x0000 } +enum : uint { LR_MONOCHROME = 0x0001 } +enum : uint { LR_COLOR = 0x0002 } +enum : uint { LR_COPYRETURNORG = 0x0004 } +enum : uint { LR_COPYDELETEORG = 0x0008 } +enum : uint { LR_LOADFROMFILE = 0x0010 } +enum : uint { LR_LOADTRANSPARENT = 0x0020 } +enum : uint { LR_DEFAULTSIZE = 0x0040 } +enum : uint { LR_VGACOLOR = 0x0080 } +enum : uint { LR_LOADMAP3DCOLORS = 0x1000 } +enum : uint { LR_CREATEDIBSECTION = 0x2000 } +enum : uint { LR_COPYFROMRESOURCE = 0x4000 } +enum : uint { LR_SHARED = 0x8000 } + +extern(Windows) export HANDLE LoadImageA( + HINSTANCE, + LPCSTR, + UINT, + int, + int, + UINT); +extern(Windows) export HANDLE LoadImageW( + HINSTANCE, + LPCWSTR, + UINT, + int, + int, + UINT); +// #ifdef UNICODE +alias LoadImageW LoadImage; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export HANDLE CopyImage( + HANDLE, + UINT, + int, + int, + UINT); + +enum : uint { DI_MASK = 0x0001 } +enum : uint { DI_IMAGE = 0x0002 } +enum : uint { DI_NORMAL = 0x0003 } +enum : uint { DI_COMPAT = 0x0004 } +enum : uint { DI_DEFAULTSIZE = 0x0008 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { DI_NOMIRROR = 0x0010 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export BOOL DrawIconEx(HDC hdc, int xLeft, int yTop, + HICON hIcon, int cxWidth, int cyWidth, + UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags); +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export HICON CreateIconIndirect( + PICONINFO piconinfo); + +extern(Windows) export HICON CopyIcon( + HICON hIcon); + +extern(Windows) export BOOL GetIconInfo( + HICON hIcon, + PICONINFO piconinfo); + +// #if(WINVER >= 0x0400) +enum : uint { RES_ICON = 1 } +enum : uint { RES_CURSOR = 2 } +// #endif /* WINVER >= 0x0400 */ + +// #ifdef OEMRESOURCE + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... + +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #... +// #if(WINVER >= 0x0500) +// #... +// #endif /* WINVER >= 0x0500 */ +// #if(WINVER >= 0x0400) +// #... +// #endif /* WINVER >= 0x0400 */ + +// #... +// #... +// #... +// #... +// #... +// #if(WINVER >= 0x0400) +// #... +// #... +// #... +// #... +// #endif /* WINVER >= 0x0400 */ + +// #endif /* OEMRESOURCE */ + +enum : uint { ORD_LANGDRIVER = 1 } + +// #ifndef NOICONS + +// #ifdef RC_INVOKED +// #... +// #... +// #... +// #... +// #... +// #if(WINVER >= 0x0400) +// #... +// #endif /* WINVER >= 0x0400 */ +// #else +const LPTSTR IDI_APPLICATION = cast(LPTSTR)(32512); +const LPTSTR IDI_HAND = cast(LPTSTR)(32513); +const LPTSTR IDI_QUESTION = cast(LPTSTR)(32514); +const LPTSTR IDI_EXCLAMATION = cast(LPTSTR)(32515); +const LPTSTR IDI_ASTERISK = cast(LPTSTR)(32516); +// #if(WINVER >= 0x0400) +const LPTSTR IDI_WINLOGO = cast(LPTSTR)(32517); +// #endif /* WINVER >= 0x0400 */ +// #endif /* RC_INVOKED */ + +// #if(WINVER >= 0x0400) +alias IDI_EXCLAMATION IDI_WARNING; +alias IDI_HAND IDI_ERROR; +alias IDI_ASTERISK IDI_INFORMATION; +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NOICONS */ + +extern(Windows) export int LoadStringA( + HINSTANCE hInstance, + UINT uID, + LPSTR lpBuffer, + int nBufferMax); +extern(Windows) export int LoadStringW( + HINSTANCE hInstance, + UINT uID, + LPWSTR lpBuffer, + int nBufferMax); +// #ifdef UNICODE +alias LoadStringW LoadString; +// #else +// #... +// #endif // !UNICODE + +enum : uint { IDOK = 1 } +enum : uint { IDCANCEL = 2 } +enum : uint { IDABORT = 3 } +enum : uint { IDRETRY = 4 } +enum : uint { IDIGNORE = 5 } +enum : uint { IDYES = 6 } +enum : uint { IDNO = 7 } +// #if(WINVER >= 0x0400) +enum : uint { IDCLOSE = 8 } +enum : uint { IDHELP = 9 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { IDTRYAGAIN = 10 } +enum : uint { IDCONTINUE = 11 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0501) +// #ifndef IDTIMEOUT +enum : uint { IDTIMEOUT = 32000 } +// #endif +// #endif /* WINVER >= 0x0501 */ + +// #ifndef NOCTLMGR + +// #ifndef NOWINSTYLES + +enum : uint { ES_LEFT = 0x0000 } +enum : uint { ES_CENTER = 0x0001 } +enum : uint { ES_RIGHT = 0x0002 } +enum : uint { ES_MULTILINE = 0x0004 } +enum : uint { ES_UPPERCASE = 0x0008 } +enum : uint { ES_LOWERCASE = 0x0010 } +enum : uint { ES_PASSWORD = 0x0020 } +enum : uint { ES_AUTOVSCROLL = 0x0040 } +enum : uint { ES_AUTOHSCROLL = 0x0080 } +enum : uint { ES_NOHIDESEL = 0x0100 } +enum : uint { ES_OEMCONVERT = 0x0400 } +enum : uint { ES_READONLY = 0x0800 } +enum : uint { ES_WANTRETURN = 0x1000 } +// #if(WINVER >= 0x0400) +enum : uint { ES_NUMBER = 0x2000 } +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NOWINSTYLES */ + +enum : uint { EN_SETFOCUS = 0x0100 } +enum : uint { EN_KILLFOCUS = 0x0200 } +enum : uint { EN_CHANGE = 0x0300 } +enum : uint { EN_UPDATE = 0x0400 } +enum : uint { EN_ERRSPACE = 0x0500 } +enum : uint { EN_MAXTEXT = 0x0501 } +enum : uint { EN_HSCROLL = 0x0601 } +enum : uint { EN_VSCROLL = 0x0602 } + +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { EN_ALIGN_LTR_EC = 0x0700 } +enum : uint { EN_ALIGN_RTL_EC = 0x0701 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(WINVER >= 0x0400) + +enum : uint { EC_LEFTMARGIN = 0x0001 } +enum : uint { EC_RIGHTMARGIN = 0x0002 } +enum : uint { EC_USEFONTINFO = 0xffff } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) + +enum : uint { EMSIS_COMPOSITIONSTRING = 0x0001 } + +enum : uint { EIMES_GETCOMPSTRATONCE = 0x0001 } +enum : uint { EIMES_CANCELCOMPSTRINFOCUS = 0x0002 } +enum : uint { EIMES_COMPLETECOMPSTRKILLFOCUS = 0x0004 } +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NOWINMESSAGES + +enum : uint { EM_GETSEL = 0x00B0 } +enum : uint { EM_SETSEL = 0x00B1 } +enum : uint { EM_GETRECT = 0x00B2 } +enum : uint { EM_SETRECT = 0x00B3 } +enum : uint { EM_SETRECTNP = 0x00B4 } +enum : uint { EM_SCROLL = 0x00B5 } +enum : uint { EM_LINESCROLL = 0x00B6 } +enum : uint { EM_SCROLLCARET = 0x00B7 } +enum : uint { EM_GETMODIFY = 0x00B8 } +enum : uint { EM_SETMODIFY = 0x00B9 } +enum : uint { EM_GETLINECOUNT = 0x00BA } +enum : uint { EM_LINEINDEX = 0x00BB } +enum : uint { EM_SETHANDLE = 0x00BC } +enum : uint { EM_GETHANDLE = 0x00BD } +enum : uint { EM_GETTHUMB = 0x00BE } +enum : uint { EM_LINELENGTH = 0x00C1 } +enum : uint { EM_REPLACESEL = 0x00C2 } +enum : uint { EM_GETLINE = 0x00C4 } +enum : uint { EM_LIMITTEXT = 0x00C5 } +enum : uint { EM_CANUNDO = 0x00C6 } +enum : uint { EM_UNDO = 0x00C7 } +enum : uint { EM_FMTLINES = 0x00C8 } +enum : uint { EM_LINEFROMCHAR = 0x00C9 } +enum : uint { EM_SETTABSTOPS = 0x00CB } +enum : uint { EM_SETPASSWORDCHAR = 0x00CC } +enum : uint { EM_EMPTYUNDOBUFFER = 0x00CD } +enum : uint { EM_GETFIRSTVISIBLELINE = 0x00CE } +enum : uint { EM_SETREADONLY = 0x00CF } +enum : uint { EM_SETWORDBREAKPROC = 0x00D0 } +enum : uint { EM_GETWORDBREAKPROC = 0x00D1 } +enum : uint { EM_GETPASSWORDCHAR = 0x00D2 } +// #if(WINVER >= 0x0400) +enum : uint { EM_SETMARGINS = 0x00D3 } +enum : uint { EM_GETMARGINS = 0x00D4 } +alias EM_LIMITTEXT EM_SETLIMITTEXT; +enum : uint { EM_GETLIMITTEXT = 0x00D5 } +enum : uint { EM_POSFROMCHAR = 0x00D6 } +enum : uint { EM_CHARFROMPOS = 0x00D7 } +// #endif /* WINVER >= 0x0400 */ + +// #if(WINVER >= 0x0500) +enum : uint { EM_SETIMESTATUS = 0x00D8 } +enum : uint { EM_GETIMESTATUS = 0x00D9 } +// #endif /* WINVER >= 0x0500 */ + +// #endif /* !NOWINMESSAGES */ + +enum : uint { WB_LEFT = 0 } +enum : uint { WB_RIGHT = 1 } +enum : uint { WB_ISDELIMITER = 2 } + +enum : uint { BS_PUSHBUTTON = 0x00000000 } +enum : uint { BS_DEFPUSHBUTTON = 0x00000001 } +enum : uint { BS_CHECKBOX = 0x00000002 } +enum : uint { BS_AUTOCHECKBOX = 0x00000003 } +enum : uint { BS_RADIOBUTTON = 0x00000004 } +enum : uint { BS_3STATE = 0x00000005 } +enum : uint { BS_AUTO3STATE = 0x00000006 } +enum : uint { BS_GROUPBOX = 0x00000007 } +enum : uint { BS_USERBUTTON = 0x00000008 } +enum : uint { BS_AUTORADIOBUTTON = 0x00000009 } +enum : uint { BS_OWNERDRAW = 0x0000000B } +enum : uint { BS_LEFTTEXT = 0x00000020 } +// #if(WINVER >= 0x0400) +enum : uint { BS_TEXT = 0x00000000 } +enum : uint { BS_ICON = 0x00000040 } +enum : uint { BS_BITMAP = 0x00000080 } +enum : uint { BS_LEFT = 0x00000100 } +enum : uint { BS_RIGHT = 0x00000200 } +enum : uint { BS_CENTER = 0x00000300 } +enum : uint { BS_TOP = 0x00000400 } +enum : uint { BS_BOTTOM = 0x00000800 } +enum : uint { BS_VCENTER = 0x00000C00 } +enum : uint { BS_PUSHLIKE = 0x00001000 } +enum : uint { BS_MULTILINE = 0x00002000 } +enum : uint { BS_NOTIFY = 0x00004000 } +enum : uint { BS_FLAT = 0x00008000 } +alias BS_LEFTTEXT BS_RIGHTBUTTON; +// #endif /* WINVER >= 0x0400 */ + +enum : uint { BN_CLICKED = 0 } +enum : uint { BN_PAINT = 1 } +enum : uint { BN_HILITE = 2 } +enum : uint { BN_UNHILITE = 3 } +enum : uint { BN_DISABLE = 4 } +enum : uint { BN_DOUBLECLICKED = 5 } +// #if(WINVER >= 0x0400) +alias BN_HILITE BN_PUSHED; +alias BN_UNHILITE BN_UNPUSHED; +alias BN_DOUBLECLICKED BN_DBLCLK; +enum : uint { BN_SETFOCUS = 6 } +enum : uint { BN_KILLFOCUS = 7 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { BM_GETCHECK = 0x00F0 } +enum : uint { BM_SETCHECK = 0x00F1 } +enum : uint { BM_GETSTATE = 0x00F2 } +enum : uint { BM_SETSTATE = 0x00F3 } +enum : uint { BM_SETSTYLE = 0x00F4 } +// #if(WINVER >= 0x0400) +enum : uint { BM_CLICK = 0x00F5 } +enum : uint { BM_GETIMAGE = 0x00F6 } +enum : uint { BM_SETIMAGE = 0x00F7 } + +enum : uint { BST_UNCHECKED = 0x0000 } +enum : uint { BST_CHECKED = 0x0001 } +enum : uint { BST_INDETERMINATE = 0x0002 } +enum : uint { BST_PUSHED = 0x0004 } +enum : uint { BST_FOCUS = 0x0008 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { SS_LEFT = 0x00000000 } +enum : uint { SS_CENTER = 0x00000001 } +enum : uint { SS_RIGHT = 0x00000002 } +enum : uint { SS_ICON = 0x00000003 } +enum : uint { SS_BLACKRECT = 0x00000004 } +enum : uint { SS_GRAYRECT = 0x00000005 } +enum : uint { SS_WHITERECT = 0x00000006 } +enum : uint { SS_BLACKFRAME = 0x00000007 } +enum : uint { SS_GRAYFRAME = 0x00000008 } +enum : uint { SS_WHITEFRAME = 0x00000009 } +enum : uint { SS_USERITEM = 0x0000000A } +enum : uint { SS_SIMPLE = 0x0000000B } +enum : uint { SS_LEFTNOWORDWRAP = 0x0000000C } +// #if(WINVER >= 0x0400) +enum : uint { SS_OWNERDRAW = 0x0000000D } +enum : uint { SS_BITMAP = 0x0000000E } +enum : uint { SS_ENHMETAFILE = 0x0000000F } +enum : uint { SS_ETCHEDHORZ = 0x00000010 } +enum : uint { SS_ETCHEDVERT = 0x00000011 } +enum : uint { SS_ETCHEDFRAME = 0x00000012 } +enum : uint { SS_TYPEMASK = 0x0000001F } +// #endif /* WINVER >= 0x0400 */ +// #if(WINVER >= 0x0501) +enum : uint { SS_REALSIZECONTROL = 0x00000040 } +// #endif /* WINVER >= 0x0501 */ +enum : uint { SS_NOPREFIX = 0x00000080 } +// #if(WINVER >= 0x0400) +enum : uint { SS_NOTIFY = 0x00000100 } +enum : uint { SS_CENTERIMAGE = 0x00000200 } +enum : uint { SS_RIGHTJUST = 0x00000400 } +enum : uint { SS_REALSIZEIMAGE = 0x00000800 } +enum : uint { SS_SUNKEN = 0x00001000 } +enum : uint { SS_ENDELLIPSIS = 0x00004000 } +enum : uint { SS_PATHELLIPSIS = 0x00008000 } +enum : uint { SS_WORDELLIPSIS = 0x0000C000 } +enum : uint { SS_ELLIPSISMASK = 0x0000C000 } +// #endif /* WINVER >= 0x0400 */ + +// #ifndef NOWINMESSAGES + +enum : uint { STM_SETICON = 0x0170 } +enum : uint { STM_GETICON = 0x0171 } +// #if(WINVER >= 0x0400) +enum : uint { STM_SETIMAGE = 0x0172 } +enum : uint { STM_GETIMAGE = 0x0173 } +enum : uint { STN_CLICKED = 0 } +enum : uint { STN_DBLCLK = 1 } +enum : uint { STN_ENABLE = 2 } +enum : uint { STN_DISABLE = 3 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { STM_MSGMAX = 0x0174 } +// #endif /* !NOWINMESSAGES */ + +const ATOM WC_DIALOG = cast(ATOM)0x8002; + +enum : uint { DWL_MSGRESULT = 0 } +enum : uint { DWL_DLGPROC = 4 } +enum : uint { DWL_USER = 8 } + +// #ifdef _WIN64 + +// #... +// #... +// #... + +// #endif /* _WIN64 */ + +enum : uint { DWLP_MSGRESULT = 0 } +enum : uint { DWLP_DLGPROC = DWLP_MSGRESULT + LRESULT.sizeof } +enum : uint { DWLP_USER = DWLP_DLGPROC + DLGPROC.sizeof } + +// #ifndef NOMSG + +extern(Windows) export BOOL IsDialogMessageA( + HWND hDlg, + LPMSG lpMsg); +extern(Windows) export BOOL IsDialogMessageW( + HWND hDlg, + LPMSG lpMsg); +// #ifdef UNICODE +alias IsDialogMessageW IsDialogMessage; +// #else +// #... +// #endif // !UNICODE + +// #endif /* !NOMSG */ + +extern(Windows) export BOOL MapDialogRect( + HWND hDlg, + LPRECT lpRect); + +extern(Windows) export int DlgDirListA( + HWND hDlg, + LPSTR lpPathSpec, + int nIDListBox, + int nIDStaticPath, + UINT uFileType); +extern(Windows) export int DlgDirListW( + HWND hDlg, + LPWSTR lpPathSpec, + int nIDListBox, + int nIDStaticPath, + UINT uFileType); +// #ifdef UNICODE +alias DlgDirListW DlgDirList; +// #else +// #... +// #endif // !UNICODE + +enum : uint { DDL_READWRITE = 0x0000 } +enum : uint { DDL_READONLY = 0x0001 } +enum : uint { DDL_HIDDEN = 0x0002 } +enum : uint { DDL_SYSTEM = 0x0004 } +enum : uint { DDL_DIRECTORY = 0x0010 } +enum : uint { DDL_ARCHIVE = 0x0020 } + +enum : uint { DDL_POSTMSGS = 0x2000 } +enum : uint { DDL_DRIVES = 0x4000 } +enum : uint { DDL_EXCLUSIVE = 0x8000 } + +extern(Windows) export BOOL DlgDirSelectExA( + HWND hDlg, + LPSTR lpString, + int nCount, + int nIDListBox); +extern(Windows) export BOOL DlgDirSelectExW( + HWND hDlg, + LPWSTR lpString, + int nCount, + int nIDListBox); +// #ifdef UNICODE +alias DlgDirSelectExW DlgDirSelectEx; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export int DlgDirListComboBoxA( + HWND hDlg, + LPSTR lpPathSpec, + int nIDComboBox, + int nIDStaticPath, + UINT uFiletype); +extern(Windows) export int DlgDirListComboBoxW( + HWND hDlg, + LPWSTR lpPathSpec, + int nIDComboBox, + int nIDStaticPath, + UINT uFiletype); +// #ifdef UNICODE +alias DlgDirListComboBoxW DlgDirListComboBox; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL DlgDirSelectComboBoxExA( + HWND hDlg, + LPSTR lpString, + int nCount, + int nIDComboBox); +extern(Windows) export BOOL DlgDirSelectComboBoxExW( + HWND hDlg, + LPWSTR lpString, + int nCount, + int nIDComboBox); +// #ifdef UNICODE +alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx; +// #else +// #... +// #endif // !UNICODE + +enum : uint { DS_ABSALIGN = 0x01 } +enum : uint { DS_SYSMODAL = 0x02 } +enum : uint { DS_LOCALEDIT = 0x20 } +enum : uint { DS_SETFONT = 0x40 } +enum : uint { DS_MODALFRAME = 0x80 } +enum : uint { DS_NOIDLEMSG = 0x100 } +enum : uint { DS_SETFOREGROUND = 0x200 } + +// #if(WINVER >= 0x0400) +enum : uint { DS_3DLOOK = 0x0004 } +enum : uint { DS_FIXEDSYS = 0x0008 } +enum : uint { DS_NOFAILCREATE = 0x0010 } +enum : uint { DS_CONTROL = 0x0400 } +enum : uint { DS_CENTER = 0x0800 } +enum : uint { DS_CENTERMOUSE = 0x1000 } +enum : uint { DS_CONTEXTHELP = 0x2000 } + +enum : uint { DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { DM_GETDEFID = WM_USER+0 } +enum : uint { DM_SETDEFID = WM_USER+1 } + +// #if(WINVER >= 0x0400) +enum : uint { DM_REPOSITION = WM_USER+2 } +// #endif /* WINVER >= 0x0400 */ + +enum : uint { DC_HASDEFID = 0x534B } + +enum : uint { DLGC_WANTARROWS = 0x0001 } +enum : uint { DLGC_WANTTAB = 0x0002 } +enum : uint { DLGC_WANTALLKEYS = 0x0004 } +enum : uint { DLGC_WANTMESSAGE = 0x0004 } +enum : uint { DLGC_HASSETSEL = 0x0008 } +enum : uint { DLGC_DEFPUSHBUTTON = 0x0010 } +enum : uint { DLGC_UNDEFPUSHBUTTON = 0x0020 } +enum : uint { DLGC_RADIOBUTTON = 0x0040 } +enum : uint { DLGC_WANTCHARS = 0x0080 } +enum : uint { DLGC_STATIC = 0x0100 } +enum : uint { DLGC_BUTTON = 0x2000 } + +enum : uint { LB_CTLCODE = 0 } + +enum : uint { LB_OKAY = 0 } +enum { LB_ERR = -1 } +enum { LB_ERRSPACE = -2 } + +enum { LBN_ERRSPACE = -2 } +enum : uint { LBN_SELCHANGE = 1 } +enum : uint { LBN_DBLCLK = 2 } +enum : uint { LBN_SELCANCEL = 3 } +enum : uint { LBN_SETFOCUS = 4 } +enum : uint { LBN_KILLFOCUS = 5 } + +// #ifndef NOWINMESSAGES + +enum : uint { LB_ADDSTRING = 0x0180 } +enum : uint { LB_INSERTSTRING = 0x0181 } +enum : uint { LB_DELETESTRING = 0x0182 } +enum : uint { LB_SELITEMRANGEEX = 0x0183 } +enum : uint { LB_RESETCONTENT = 0x0184 } +enum : uint { LB_SETSEL = 0x0185 } +enum : uint { LB_SETCURSEL = 0x0186 } +enum : uint { LB_GETSEL = 0x0187 } +enum : uint { LB_GETCURSEL = 0x0188 } +enum : uint { LB_GETTEXT = 0x0189 } +enum : uint { LB_GETTEXTLEN = 0x018A } +enum : uint { LB_GETCOUNT = 0x018B } +enum : uint { LB_SELECTSTRING = 0x018C } +enum : uint { LB_DIR = 0x018D } +enum : uint { LB_GETTOPINDEX = 0x018E } +enum : uint { LB_FINDSTRING = 0x018F } +enum : uint { LB_GETSELCOUNT = 0x0190 } +enum : uint { LB_GETSELITEMS = 0x0191 } +enum : uint { LB_SETTABSTOPS = 0x0192 } +enum : uint { LB_GETHORIZONTALEXTENT = 0x0193 } +enum : uint { LB_SETHORIZONTALEXTENT = 0x0194 } +enum : uint { LB_SETCOLUMNWIDTH = 0x0195 } +enum : uint { LB_ADDFILE = 0x0196 } +enum : uint { LB_SETTOPINDEX = 0x0197 } +enum : uint { LB_GETITEMRECT = 0x0198 } +enum : uint { LB_GETITEMDATA = 0x0199 } +enum : uint { LB_SETITEMDATA = 0x019A } +enum : uint { LB_SELITEMRANGE = 0x019B } +enum : uint { LB_SETANCHORINDEX = 0x019C } +enum : uint { LB_GETANCHORINDEX = 0x019D } +enum : uint { LB_SETCARETINDEX = 0x019E } +enum : uint { LB_GETCARETINDEX = 0x019F } +enum : uint { LB_SETITEMHEIGHT = 0x01A0 } +enum : uint { LB_GETITEMHEIGHT = 0x01A1 } +enum : uint { LB_FINDSTRINGEXACT = 0x01A2 } +enum : uint { LB_SETLOCALE = 0x01A5 } +enum : uint { LB_GETLOCALE = 0x01A6 } +enum : uint { LB_SETCOUNT = 0x01A7 } +// #if(WINVER >= 0x0400) +enum : uint { LB_INITSTORAGE = 0x01A8 } +enum : uint { LB_ITEMFROMPOINT = 0x01A9 } +// #endif /* WINVER >= 0x0400 */ +// #if(_WIN32_WCE >= 0x0400) +// #... +// #endif + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { LB_GETLISTBOXINFO = 0x01B2 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { LB_MSGMAX = 0x01B3 } +// #elif(_WIN32_WCE >= 0x0400) +// #... +// #elif(WINVER >= 0x0400) +// #... +// #else +// #... +// #endif + +// #endif /* !NOWINMESSAGES */ + +// #ifndef NOWINSTYLES + +enum : uint { LBS_NOTIFY = 0x0001 } +enum : uint { LBS_SORT = 0x0002 } +enum : uint { LBS_NOREDRAW = 0x0004 } +enum : uint { LBS_MULTIPLESEL = 0x0008 } +enum : uint { LBS_OWNERDRAWFIXED = 0x0010 } +enum : uint { LBS_OWNERDRAWVARIABLE = 0x0020 } +enum : uint { LBS_HASSTRINGS = 0x0040 } +enum : uint { LBS_USETABSTOPS = 0x0080 } +enum : uint { LBS_NOINTEGRALHEIGHT = 0x0100 } +enum : uint { LBS_MULTICOLUMN = 0x0200 } +enum : uint { LBS_WANTKEYBOARDINPUT = 0x0400 } +enum : uint { LBS_EXTENDEDSEL = 0x0800 } +enum : uint { LBS_DISABLENOSCROLL = 0x1000 } +enum : uint { LBS_NODATA = 0x2000 } +// #if(WINVER >= 0x0400) +enum : uint { LBS_NOSEL = 0x4000 } +// #endif /* WINVER >= 0x0400 */ +enum : uint { LBS_STANDARD = LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER } + +// #endif /* !NOWINSTYLES */ + +enum : uint { CB_OKAY = 0 } +enum { CB_ERR = -1 } +enum { CB_ERRSPACE = -2 } + +enum { CBN_ERRSPACE = -1 } +enum : uint { CBN_SELCHANGE = 1 } +enum : uint { CBN_DBLCLK = 2 } +enum : uint { CBN_SETFOCUS = 3 } +enum : uint { CBN_KILLFOCUS = 4 } +enum : uint { CBN_EDITCHANGE = 5 } +enum : uint { CBN_EDITUPDATE = 6 } +enum : uint { CBN_DROPDOWN = 7 } +enum : uint { CBN_CLOSEUP = 8 } +enum : uint { CBN_SELENDOK = 9 } +enum : uint { CBN_SELENDCANCEL = 10 } + +// #ifndef NOWINSTYLES + +enum : uint { CBS_SIMPLE = 0x0001 } +enum : uint { CBS_DROPDOWN = 0x0002 } +enum : uint { CBS_DROPDOWNLIST = 0x0003 } +enum : uint { CBS_OWNERDRAWFIXED = 0x0010 } +enum : uint { CBS_OWNERDRAWVARIABLE = 0x0020 } +enum : uint { CBS_AUTOHSCROLL = 0x0040 } +enum : uint { CBS_OEMCONVERT = 0x0080 } +enum : uint { CBS_SORT = 0x0100 } +enum : uint { CBS_HASSTRINGS = 0x0200 } +enum : uint { CBS_NOINTEGRALHEIGHT = 0x0400 } +enum : uint { CBS_DISABLENOSCROLL = 0x0800 } +// #if(WINVER >= 0x0400) +enum : uint { CBS_UPPERCASE = 0x2000 } +enum : uint { CBS_LOWERCASE = 0x4000 } +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NOWINSTYLES */ + +// #ifndef NOWINMESSAGES +enum : uint { CB_GETEDITSEL = 0x0140 } +enum : uint { CB_LIMITTEXT = 0x0141 } +enum : uint { CB_SETEDITSEL = 0x0142 } +enum : uint { CB_ADDSTRING = 0x0143 } +enum : uint { CB_DELETESTRING = 0x0144 } +enum : uint { CB_DIR = 0x0145 } +enum : uint { CB_GETCOUNT = 0x0146 } +enum : uint { CB_GETCURSEL = 0x0147 } +enum : uint { CB_GETLBTEXT = 0x0148 } +enum : uint { CB_GETLBTEXTLEN = 0x0149 } +enum : uint { CB_INSERTSTRING = 0x014A } +enum : uint { CB_RESETCONTENT = 0x014B } +enum : uint { CB_FINDSTRING = 0x014C } +enum : uint { CB_SELECTSTRING = 0x014D } +enum : uint { CB_SETCURSEL = 0x014E } +enum : uint { CB_SHOWDROPDOWN = 0x014F } +enum : uint { CB_GETITEMDATA = 0x0150 } +enum : uint { CB_SETITEMDATA = 0x0151 } +enum : uint { CB_GETDROPPEDCONTROLRECT = 0x0152 } +enum : uint { CB_SETITEMHEIGHT = 0x0153 } +enum : uint { CB_GETITEMHEIGHT = 0x0154 } +enum : uint { CB_SETEXTENDEDUI = 0x0155 } +enum : uint { CB_GETEXTENDEDUI = 0x0156 } +enum : uint { CB_GETDROPPEDSTATE = 0x0157 } +enum : uint { CB_FINDSTRINGEXACT = 0x0158 } +enum : uint { CB_SETLOCALE = 0x0159 } +enum : uint { CB_GETLOCALE = 0x015A } +// #if(WINVER >= 0x0400) +enum : uint { CB_GETTOPINDEX = 0x015b } +enum : uint { CB_SETTOPINDEX = 0x015c } +enum : uint { CB_GETHORIZONTALEXTENT = 0x015d } +enum : uint { CB_SETHORIZONTALEXTENT = 0x015e } +enum : uint { CB_GETDROPPEDWIDTH = 0x015f } +enum : uint { CB_SETDROPPEDWIDTH = 0x0160 } +enum : uint { CB_INITSTORAGE = 0x0161 } +// #if(_WIN32_WCE >= 0x0400) +// #... +// #endif +// #endif /* WINVER >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { CB_GETCOMBOBOXINFO = 0x0164 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { CB_MSGMAX = 0x0165 } +// #elif(_WIN32_WCE >= 0x0400) +// #... +// #elif(WINVER >= 0x0400) +// #... +// #else +// #... +// #endif +// #endif /* !NOWINMESSAGES */ + +// #ifndef NOWINSTYLES + +enum : uint { SBS_HORZ = 0x0000 } +enum : uint { SBS_VERT = 0x0001 } +enum : uint { SBS_TOPALIGN = 0x0002 } +enum : uint { SBS_LEFTALIGN = 0x0002 } +enum : uint { SBS_BOTTOMALIGN = 0x0004 } +enum : uint { SBS_RIGHTALIGN = 0x0004 } +enum : uint { SBS_SIZEBOXTOPLEFTALIGN = 0x0002 } +enum : uint { SBS_SIZEBOXBOTTOMRIGHTALIGN = 0x0004 } +enum : uint { SBS_SIZEBOX = 0x0008 } +// #if(WINVER >= 0x0400) +enum : uint { SBS_SIZEGRIP = 0x0010 } +// #endif /* WINVER >= 0x0400 */ + +// #endif /* !NOWINSTYLES */ + +// #ifndef NOWINMESSAGES +enum : uint { SBM_SETPOS = 0x00E0 } +enum : uint { SBM_GETPOS = 0x00E1 } +enum : uint { SBM_SETRANGE = 0x00E2 } +enum : uint { SBM_SETRANGEREDRAW = 0x00E6 } +enum : uint { SBM_GETRANGE = 0x00E3 } +enum : uint { SBM_ENABLE_ARROWS = 0x00E4 } +// #if(WINVER >= 0x0400) +enum : uint { SBM_SETSCROLLINFO = 0x00E9 } +enum : uint { SBM_GETSCROLLINFO = 0x00EA } +// #endif /* WINVER >= 0x0400 */ + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SBM_GETSCROLLBARINFO = 0x00EB } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if(WINVER >= 0x0400) +enum : uint { SIF_RANGE = 0x0001 } +enum : uint { SIF_PAGE = 0x0002 } +enum : uint { SIF_POS = 0x0004 } +enum : uint { SIF_DISABLENOSCROLL = 0x0008 } +enum : uint { SIF_TRACKPOS = 0x0010 } +enum : uint { SIF_ALL = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS } + +struct tagSCROLLINFO { + UINT cbSize; + UINT fMask; + int nMin; + int nMax; + UINT nPage; + int nPos; + int nTrackPos; +} +alias tagSCROLLINFO SCROLLINFO; +alias tagSCROLLINFO* LPSCROLLINFO; + +alias SCROLLINFO* LPCSCROLLINFO; + +extern(Windows) export int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL); +extern(Windows) export BOOL GetScrollInfo(HWND, int, LPSCROLLINFO); + +// #endif /* WINVER >= 0x0400 */ +// #endif /* !NOWINMESSAGES */ +// #endif /* !NOCTLMGR */ + +// #ifndef NOMDI + +enum : uint { MDIS_ALLCHILDSTYLES = 0x0001 } + +enum : uint { MDITILE_VERTICAL = 0x0000 } +enum : uint { MDITILE_HORIZONTAL = 0x0001 } +enum : uint { MDITILE_SKIPDISABLED = 0x0002 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { MDITILE_ZORDER = 0x0004 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +struct tagMDICREATESTRUCTA { + LPCSTR szClass; + LPCSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias tagMDICREATESTRUCTA MDICREATESTRUCTA; +alias tagMDICREATESTRUCTA* LPMDICREATESTRUCTA; + +struct tagMDICREATESTRUCTW { + LPCWSTR szClass; + LPCWSTR szTitle; + HANDLE hOwner; + int x; + int y; + int cx; + int cy; + DWORD style; + LPARAM lParam; +} +alias tagMDICREATESTRUCTW MDICREATESTRUCTW; +alias tagMDICREATESTRUCTW* LPMDICREATESTRUCTW; + +// #ifdef UNICODE +alias MDICREATESTRUCTW MDICREATESTRUCT; +alias LPMDICREATESTRUCTW LPMDICREATESTRUCT; +// #else +// ... +// #endif // UNICODE + +struct tagCLIENTCREATESTRUCT { + HANDLE hWindowMenu; + UINT idFirstChild; +} +alias tagCLIENTCREATESTRUCT CLIENTCREATESTRUCT; +alias tagCLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT; + +extern(Windows) export LRESULT DefFrameProcA( + HWND hWnd, + HWND hWndMDIClient, + UINT uMsg, + WPARAM wParam, + LPARAM lParam); +extern(Windows) export LRESULT DefFrameProcW( + HWND hWnd, + HWND hWndMDIClient, + UINT uMsg, + WPARAM wParam, + LPARAM lParam); +// #ifdef UNICODE +alias DefFrameProcW DefFrameProc; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export LRESULT DefMDIChildProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +extern(Windows) export LRESULT DefMDIChildProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); +// #ifdef UNICODE +alias DefMDIChildProcW DefMDIChildProc; +// #else +// #... +// #endif // !UNICODE + +// #ifndef NOMSG + +extern(Windows) export BOOL TranslateMDISysAccel( + HWND hWndClient, + LPMSG lpMsg); + +// #endif /* !NOMSG */ + +extern(Windows) export UINT ArrangeIconicWindows( + HWND hWnd); + +extern(Windows) export HWND CreateMDIWindowA( + LPCSTR lpClassName, + LPCSTR lpWindowName, + DWORD dwStyle, + int X, + int Y, + int nWidth, + int nHeight, + HWND hWndParent, + HINSTANCE hInstance, + LPARAM lParam); +extern(Windows) export HWND CreateMDIWindowW( + LPCWSTR lpClassName, + LPCWSTR lpWindowName, + DWORD dwStyle, + int X, + int Y, + int nWidth, + int nHeight, + HWND hWndParent, + HINSTANCE hInstance, + LPARAM lParam); +// #ifdef UNICODE +alias CreateMDIWindowW CreateMDIWindow; +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0400) +extern(Windows) export WORD TileWindows(HWND hwndParent, UINT wHow, RECT * lpRect, UINT cKids, HWND * lpKids); +extern(Windows) export WORD CascadeWindows(HWND hwndParent, UINT wHow, RECT * lpRect, UINT cKids, HWND * lpKids); +// #endif /* WINVER >= 0x0400 */ +// #endif /* !NOMDI */ + +// #endif /* !NOUSER */ + +// #ifndef NOHELP + +alias DWORD HELPPOLY; +struct tagMULTIKEYHELPA { +// #ifndef _MAC + DWORD mkSize; +// #else +// ... +// #endif + CHAR mkKeylist; + CHAR szKeyphrase[1]; +} +alias tagMULTIKEYHELPA MULTIKEYHELPA; +alias tagMULTIKEYHELPA* PMULTIKEYHELPA; +alias tagMULTIKEYHELPA* LPMULTIKEYHELPA; + +struct tagMULTIKEYHELPW { +// #ifndef _MAC + DWORD mkSize; +// #else +// ... +// #endif + WCHAR mkKeylist; + WCHAR szKeyphrase[1]; +} +alias tagMULTIKEYHELPW MULTIKEYHELPW; +alias tagMULTIKEYHELPW* PMULTIKEYHELPW; +alias tagMULTIKEYHELPW* LPMULTIKEYHELPW; + +// #ifdef UNICODE +alias MULTIKEYHELPW MULTIKEYHELP; +alias PMULTIKEYHELPW PMULTIKEYHELP; +alias LPMULTIKEYHELPW LPMULTIKEYHELP; +// #else +// ... +// #endif // UNICODE + +struct tagHELPWININFOA { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + CHAR rgchMember[2]; +} +alias tagHELPWININFOA HELPWININFOA; +alias tagHELPWININFOA* PHELPWININFOA; +alias tagHELPWININFOA* LPHELPWININFOA; + +struct tagHELPWININFOW { + int wStructSize; + int x; + int y; + int dx; + int dy; + int wMax; + WCHAR rgchMember[2]; +} +alias tagHELPWININFOW HELPWININFOW; +alias tagHELPWININFOW* PHELPWININFOW; +alias tagHELPWININFOW* LPHELPWININFOW; + +// #ifdef UNICODE +alias HELPWININFOW HELPWININFO; +alias PHELPWININFOW PHELPWININFO; +alias LPHELPWININFOW LPHELPWININFO; +// #else +// ... +// #endif // UNICODE + +enum : uint { HELP_CONTEXT = 0x0001 } +enum : uint { HELP_QUIT = 0x0002 } +enum : uint { HELP_INDEX = 0x0003 } +enum : uint { HELP_CONTENTS = 0x0003 } +enum : uint { HELP_HELPONHELP = 0x0004 } +enum : uint { HELP_SETINDEX = 0x0005 } +enum : uint { HELP_SETCONTENTS = 0x0005 } +enum : uint { HELP_CONTEXTPOPUP = 0x0008 } +enum : uint { HELP_FORCEFILE = 0x0009 } +enum : uint { HELP_KEY = 0x0101 } +enum : uint { HELP_COMMAND = 0x0102 } +enum : uint { HELP_PARTIALKEY = 0x0105 } +enum : uint { HELP_MULTIKEY = 0x0201 } +enum : uint { HELP_SETWINPOS = 0x0203 } +// #if(WINVER >= 0x0400) +enum : uint { HELP_CONTEXTMENU = 0x000a } +enum : uint { HELP_FINDER = 0x000b } +enum : uint { HELP_WM_HELP = 0x000c } +enum : uint { HELP_SETPOPUP_POS = 0x000d } + +enum : uint { HELP_TCARD = 0x8000 } +enum : uint { HELP_TCARD_DATA = 0x0010 } +enum : uint { HELP_TCARD_OTHER_CALLER = 0x0011 } + +enum : uint { IDH_NO_HELP = 28440 } +enum : uint { IDH_MISSING_CONTEXT = 28441 } +enum : uint { IDH_GENERIC_HELP_BUTTON = 28442 } +enum : uint { IDH_OK = 28443 } +enum : uint { IDH_CANCEL = 28444 } +enum : uint { IDH_HELP = 28445 } + +// #endif /* WINVER >= 0x0400 */ + +extern(Windows) export BOOL WinHelpA( + HWND hWndMain, + LPCSTR lpszHelp, + UINT uCommand, + ULONG_PTR dwData); +extern(Windows) export BOOL WinHelpW( + HWND hWndMain, + LPCWSTR lpszHelp, + UINT uCommand, + ULONG_PTR dwData); +// #ifdef UNICODE +alias WinHelpW WinHelp; +// #else +// #... +// #endif // !UNICODE + +// #endif /* !NOHELP */ + +// #if(WINVER >= 0x0500) + +enum : uint { GR_GDIOBJECTS = 0 } +enum : uint { GR_USEROBJECTS = 1 } + +extern(Windows) export DWORD GetGuiResources( + HANDLE hProcess, + DWORD uiFlags); + +// #endif /* WINVER >= 0x0500 */ + +// #ifndef NOSYSPARAMSINFO + +enum : uint { SPI_GETBEEP = 0x0001 } +enum : uint { SPI_SETBEEP = 0x0002 } +enum : uint { SPI_GETMOUSE = 0x0003 } +enum : uint { SPI_SETMOUSE = 0x0004 } +enum : uint { SPI_GETBORDER = 0x0005 } +enum : uint { SPI_SETBORDER = 0x0006 } +enum : uint { SPI_GETKEYBOARDSPEED = 0x000A } +enum : uint { SPI_SETKEYBOARDSPEED = 0x000B } +enum : uint { SPI_LANGDRIVER = 0x000C } +enum : uint { SPI_ICONHORIZONTALSPACING = 0x000D } +enum : uint { SPI_GETSCREENSAVETIMEOUT = 0x000E } +enum : uint { SPI_SETSCREENSAVETIMEOUT = 0x000F } +enum : uint { SPI_GETSCREENSAVEACTIVE = 0x0010 } +enum : uint { SPI_SETSCREENSAVEACTIVE = 0x0011 } +enum : uint { SPI_GETGRIDGRANULARITY = 0x0012 } +enum : uint { SPI_SETGRIDGRANULARITY = 0x0013 } +enum : uint { SPI_SETDESKWALLPAPER = 0x0014 } +enum : uint { SPI_SETDESKPATTERN = 0x0015 } +enum : uint { SPI_GETKEYBOARDDELAY = 0x0016 } +enum : uint { SPI_SETKEYBOARDDELAY = 0x0017 } +enum : uint { SPI_ICONVERTICALSPACING = 0x0018 } +enum : uint { SPI_GETICONTITLEWRAP = 0x0019 } +enum : uint { SPI_SETICONTITLEWRAP = 0x001A } +enum : uint { SPI_GETMENUDROPALIGNMENT = 0x001B } +enum : uint { SPI_SETMENUDROPALIGNMENT = 0x001C } +enum : uint { SPI_SETDOUBLECLKWIDTH = 0x001D } +enum : uint { SPI_SETDOUBLECLKHEIGHT = 0x001E } +enum : uint { SPI_GETICONTITLELOGFONT = 0x001F } +enum : uint { SPI_SETDOUBLECLICKTIME = 0x0020 } +enum : uint { SPI_SETMOUSEBUTTONSWAP = 0x0021 } +enum : uint { SPI_SETICONTITLELOGFONT = 0x0022 } +enum : uint { SPI_GETFASTTASKSWITCH = 0x0023 } +enum : uint { SPI_SETFASTTASKSWITCH = 0x0024 } +// #if(WINVER >= 0x0400) +enum : uint { SPI_SETDRAGFULLWINDOWS = 0x0025 } +enum : uint { SPI_GETDRAGFULLWINDOWS = 0x0026 } +enum : uint { SPI_GETNONCLIENTMETRICS = 0x0029 } +enum : uint { SPI_SETNONCLIENTMETRICS = 0x002A } +enum : uint { SPI_GETMINIMIZEDMETRICS = 0x002B } +enum : uint { SPI_SETMINIMIZEDMETRICS = 0x002C } +enum : uint { SPI_GETICONMETRICS = 0x002D } +enum : uint { SPI_SETICONMETRICS = 0x002E } +enum : uint { SPI_SETWORKAREA = 0x002F } +enum : uint { SPI_GETWORKAREA = 0x0030 } +enum : uint { SPI_SETPENWINDOWS = 0x0031 } + +enum : uint { SPI_GETHIGHCONTRAST = 0x0042 } +enum : uint { SPI_SETHIGHCONTRAST = 0x0043 } +enum : uint { SPI_GETKEYBOARDPREF = 0x0044 } +enum : uint { SPI_SETKEYBOARDPREF = 0x0045 } +enum : uint { SPI_GETSCREENREADER = 0x0046 } +enum : uint { SPI_SETSCREENREADER = 0x0047 } +enum : uint { SPI_GETANIMATION = 0x0048 } +enum : uint { SPI_SETANIMATION = 0x0049 } +enum : uint { SPI_GETFONTSMOOTHING = 0x004A } +enum : uint { SPI_SETFONTSMOOTHING = 0x004B } +enum : uint { SPI_SETDRAGWIDTH = 0x004C } +enum : uint { SPI_SETDRAGHEIGHT = 0x004D } +enum : uint { SPI_SETHANDHELD = 0x004E } +enum : uint { SPI_GETLOWPOWERTIMEOUT = 0x004F } +enum : uint { SPI_GETPOWEROFFTIMEOUT = 0x0050 } +enum : uint { SPI_SETLOWPOWERTIMEOUT = 0x0051 } +enum : uint { SPI_SETPOWEROFFTIMEOUT = 0x0052 } +enum : uint { SPI_GETLOWPOWERACTIVE = 0x0053 } +enum : uint { SPI_GETPOWEROFFACTIVE = 0x0054 } +enum : uint { SPI_SETLOWPOWERACTIVE = 0x0055 } +enum : uint { SPI_SETPOWEROFFACTIVE = 0x0056 } +enum : uint { SPI_SETCURSORS = 0x0057 } +enum : uint { SPI_SETICONS = 0x0058 } +enum : uint { SPI_GETDEFAULTINPUTLANG = 0x0059 } +enum : uint { SPI_SETDEFAULTINPUTLANG = 0x005A } +enum : uint { SPI_SETLANGTOGGLE = 0x005B } +enum : uint { SPI_GETWINDOWSEXTENSION = 0x005C } +enum : uint { SPI_SETMOUSETRAILS = 0x005D } +enum : uint { SPI_GETMOUSETRAILS = 0x005E } +enum : uint { SPI_SETSCREENSAVERRUNNING = 0x0061 } +alias SPI_SETSCREENSAVERRUNNING SPI_SCREENSAVERRUNNING; +// #endif /* WINVER >= 0x0400 */ +enum : uint { SPI_GETFILTERKEYS = 0x0032 } +enum : uint { SPI_SETFILTERKEYS = 0x0033 } +enum : uint { SPI_GETTOGGLEKEYS = 0x0034 } +enum : uint { SPI_SETTOGGLEKEYS = 0x0035 } +enum : uint { SPI_GETMOUSEKEYS = 0x0036 } +enum : uint { SPI_SETMOUSEKEYS = 0x0037 } +enum : uint { SPI_GETSHOWSOUNDS = 0x0038 } +enum : uint { SPI_SETSHOWSOUNDS = 0x0039 } +enum : uint { SPI_GETSTICKYKEYS = 0x003A } +enum : uint { SPI_SETSTICKYKEYS = 0x003B } +enum : uint { SPI_GETACCESSTIMEOUT = 0x003C } +enum : uint { SPI_SETACCESSTIMEOUT = 0x003D } +// #if(WINVER >= 0x0400) +enum : uint { SPI_GETSERIALKEYS = 0x003E } +enum : uint { SPI_SETSERIALKEYS = 0x003F } +// #endif /* WINVER >= 0x0400 */ +enum : uint { SPI_GETSOUNDSENTRY = 0x0040 } +enum : uint { SPI_SETSOUNDSENTRY = 0x0041 } +// #if(_WIN32_WINNT >= 0x0400) +enum : uint { SPI_GETSNAPTODEFBUTTON = 0x005F } +enum : uint { SPI_SETSNAPTODEFBUTTON = 0x0060 } +// #endif /* _WIN32_WINNT >= 0x0400 */ +// #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +enum : uint { SPI_GETMOUSEHOVERWIDTH = 0x0062 } +enum : uint { SPI_SETMOUSEHOVERWIDTH = 0x0063 } +enum : uint { SPI_GETMOUSEHOVERHEIGHT = 0x0064 } +enum : uint { SPI_SETMOUSEHOVERHEIGHT = 0x0065 } +enum : uint { SPI_GETMOUSEHOVERTIME = 0x0066 } +enum : uint { SPI_SETMOUSEHOVERTIME = 0x0067 } +enum : uint { SPI_GETWHEELSCROLLLINES = 0x0068 } +enum : uint { SPI_SETWHEELSCROLLLINES = 0x0069 } +enum : uint { SPI_GETMENUSHOWDELAY = 0x006A } +enum : uint { SPI_SETMENUSHOWDELAY = 0x006B } + +enum : uint { SPI_GETSHOWIMEUI = 0x006E } +enum : uint { SPI_SETSHOWIMEUI = 0x006F } +// #endif + +// #if(WINVER >= 0x0500) +enum : uint { SPI_GETMOUSESPEED = 0x0070 } +enum : uint { SPI_SETMOUSESPEED = 0x0071 } +enum : uint { SPI_GETSCREENSAVERRUNNING = 0x0072 } +enum : uint { SPI_GETDESKWALLPAPER = 0x0073 } +// #endif /* WINVER >= 0x0500 */ + +// #if(WINVER >= 0x0500) +enum : uint { SPI_GETACTIVEWINDOWTRACKING = 0x1000 } +enum : uint { SPI_SETACTIVEWINDOWTRACKING = 0x1001 } +enum : uint { SPI_GETMENUANIMATION = 0x1002 } +enum : uint { SPI_SETMENUANIMATION = 0x1003 } +enum : uint { SPI_GETCOMBOBOXANIMATION = 0x1004 } +enum : uint { SPI_SETCOMBOBOXANIMATION = 0x1005 } +enum : uint { SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006 } +enum : uint { SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007 } +enum : uint { SPI_GETGRADIENTCAPTIONS = 0x1008 } +enum : uint { SPI_SETGRADIENTCAPTIONS = 0x1009 } +enum : uint { SPI_GETKEYBOARDCUES = 0x100A } +enum : uint { SPI_SETKEYBOARDCUES = 0x100B } +alias SPI_GETKEYBOARDCUES SPI_GETMENUUNDERLINES; +alias SPI_SETKEYBOARDCUES SPI_SETMENUUNDERLINES; +enum : uint { SPI_GETACTIVEWNDTRKZORDER = 0x100C } +enum : uint { SPI_SETACTIVEWNDTRKZORDER = 0x100D } +enum : uint { SPI_GETHOTTRACKING = 0x100E } +enum : uint { SPI_SETHOTTRACKING = 0x100F } +enum : uint { SPI_GETMENUFADE = 0x1012 } +enum : uint { SPI_SETMENUFADE = 0x1013 } +enum : uint { SPI_GETSELECTIONFADE = 0x1014 } +enum : uint { SPI_SETSELECTIONFADE = 0x1015 } +enum : uint { SPI_GETTOOLTIPANIMATION = 0x1016 } +enum : uint { SPI_SETTOOLTIPANIMATION = 0x1017 } +enum : uint { SPI_GETTOOLTIPFADE = 0x1018 } +enum : uint { SPI_SETTOOLTIPFADE = 0x1019 } +enum : uint { SPI_GETCURSORSHADOW = 0x101A } +enum : uint { SPI_SETCURSORSHADOW = 0x101B } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SPI_GETMOUSESONAR = 0x101C } +enum : uint { SPI_SETMOUSESONAR = 0x101D } +enum : uint { SPI_GETMOUSECLICKLOCK = 0x101E } +enum : uint { SPI_SETMOUSECLICKLOCK = 0x101F } +enum : uint { SPI_GETMOUSEVANISH = 0x1020 } +enum : uint { SPI_SETMOUSEVANISH = 0x1021 } +enum : uint { SPI_GETFLATMENU = 0x1022 } +enum : uint { SPI_SETFLATMENU = 0x1023 } +enum : uint { SPI_GETDROPSHADOW = 0x1024 } +enum : uint { SPI_SETDROPSHADOW = 0x1025 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { SPI_GETUIEFFECTS = 0x103E } +enum : uint { SPI_SETUIEFFECTS = 0x103F } + +enum : uint { SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000 } +enum : uint { SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001 } +enum : uint { SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002 } +enum : uint { SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003 } +enum : uint { SPI_GETFOREGROUNDFLASHCOUNT = 0x2004 } +enum : uint { SPI_SETFOREGROUNDFLASHCOUNT = 0x2005 } +enum : uint { SPI_GETCARETWIDTH = 0x2006 } +enum : uint { SPI_SETCARETWIDTH = 0x2007 } + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { SPI_GETMOUSECLICKLOCKTIME = 0x2008 } +enum : uint { SPI_SETMOUSECLICKLOCKTIME = 0x2009 } +enum : uint { SPI_GETFONTSMOOTHINGTYPE = 0x200A } +enum : uint { SPI_SETFONTSMOOTHINGTYPE = 0x200B } + +enum : uint { FE_FONTSMOOTHINGSTANDARD = 0x0001 } +enum : uint { FE_FONTSMOOTHINGCLEARTYPE = 0x0002 } +enum : uint { FE_FONTSMOOTHINGDOCKING = 0x8000 } + +enum : uint { SPI_GETFONTSMOOTHINGCONTRAST = 0x200C } +enum : uint { SPI_SETFONTSMOOTHINGCONTRAST = 0x200D } + +enum : uint { SPI_GETFOCUSBORDERWIDTH = 0x200E } +enum : uint { SPI_SETFOCUSBORDERWIDTH = 0x200F } +enum : uint { SPI_GETFOCUSBORDERHEIGHT = 0x2010 } +enum : uint { SPI_SETFOCUSBORDERHEIGHT = 0x2011 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #endif /* WINVER >= 0x0500 */ + +enum : uint { SPIF_UPDATEINIFILE = 0x0001 } +enum : uint { SPIF_SENDWININICHANGE = 0x0002 } +alias SPIF_SENDWININICHANGE SPIF_SENDCHANGE; + +enum { METRICS_USEDEFAULT = -1 } +// #ifdef _WINGDI_ +// #ifndef NOGDI +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif /* NOGDI */ +// #endif /* _WINGDI_ */ + +enum : uint { ARW_BOTTOMLEFT = 0x0000 } +enum : uint { ARW_BOTTOMRIGHT = 0x0001 } +enum : uint { ARW_TOPLEFT = 0x0002 } +enum : uint { ARW_TOPRIGHT = 0x0003 } +enum : uint { ARW_STARTMASK = 0x0003 } +enum : uint { ARW_STARTRIGHT = 0x0001 } +enum : uint { ARW_STARTTOP = 0x0002 } + +enum : uint { ARW_LEFT = 0x0000 } +enum : uint { ARW_RIGHT = 0x0000 } +enum : uint { ARW_UP = 0x0004 } +enum : uint { ARW_DOWN = 0x0004 } +enum : uint { ARW_HIDE = 0x0008 } + +struct tagMINIMIZEDMETRICS { + UINT cbSize; + int iWidth; + int iHorzGap; + int iVertGap; + int iArrange; +} +alias tagMINIMIZEDMETRICS MINIMIZEDMETRICS; +alias tagMINIMIZEDMETRICS* PMINIMIZEDMETRICS; +alias tagMINIMIZEDMETRICS* LPMINIMIZEDMETRICS; + +// #ifdef _WINGDI_ +// #ifndef NOGDI +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif /* NOGDI */ +// #endif /* _WINGDI_ */ + +struct tagANIMATIONINFO { + UINT cbSize; + int iMinAnimate; +} +alias tagANIMATIONINFO ANIMATIONINFO; +alias tagANIMATIONINFO* LPANIMATIONINFO; + +struct tagSERIALKEYSA { + UINT cbSize; + DWORD dwFlags; + LPSTR lpszActivePort; + LPSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias tagSERIALKEYSA SERIALKEYSA; +alias tagSERIALKEYSA* LPSERIALKEYSA; + +struct tagSERIALKEYSW { + UINT cbSize; + DWORD dwFlags; + LPWSTR lpszActivePort; + LPWSTR lpszPort; + UINT iBaudRate; + UINT iPortState; + UINT iActive; +} +alias tagSERIALKEYSW SERIALKEYSW; +alias tagSERIALKEYSW* LPSERIALKEYSW; + +// #ifdef UNICODE +alias SERIALKEYSW SERIALKEYS; +alias LPSERIALKEYSW LPSERIALKEYS; +// #else +// ... +// #endif // UNICODE + +enum : uint { SERKF_SERIALKEYSON = 0x00000001 } +enum : uint { SERKF_AVAILABLE = 0x00000002 } +enum : uint { SERKF_INDICATOR = 0x00000004 } + +struct tagHIGHCONTRASTA { + UINT cbSize; + DWORD dwFlags; + LPSTR lpszDefaultScheme; +} +alias tagHIGHCONTRASTA HIGHCONTRASTA; +alias tagHIGHCONTRASTA* LPHIGHCONTRASTA; + +struct tagHIGHCONTRASTW { + UINT cbSize; + DWORD dwFlags; + LPWSTR lpszDefaultScheme; +} +alias tagHIGHCONTRASTW HIGHCONTRASTW; +alias tagHIGHCONTRASTW* LPHIGHCONTRASTW; + +// #ifdef UNICODE +alias HIGHCONTRASTW HIGHCONTRAST; +alias LPHIGHCONTRASTW LPHIGHCONTRAST; +// #else +// ... +// #endif // UNICODE + +enum : uint { HCF_HIGHCONTRASTON = 0x00000001 } +enum : uint { HCF_AVAILABLE = 0x00000002 } +enum : uint { HCF_HOTKEYACTIVE = 0x00000004 } +enum : uint { HCF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { HCF_HOTKEYSOUND = 0x00000010 } +enum : uint { HCF_INDICATOR = 0x00000020 } +enum : uint { HCF_HOTKEYAVAILABLE = 0x00000040 } + +enum : uint { CDS_UPDATEREGISTRY = 0x00000001 } +enum : uint { CDS_TEST = 0x00000002 } +enum : uint { CDS_FULLSCREEN = 0x00000004 } +enum : uint { CDS_GLOBAL = 0x00000008 } +enum : uint { CDS_SET_PRIMARY = 0x00000010 } +enum : uint { CDS_VIDEOPARAMETERS = 0x00000020 } +enum : uint { CDS_RESET = 0x40000000 } +enum : uint { CDS_NORESET = 0x10000000 } + +// #include + +enum : uint { DISP_CHANGE_SUCCESSFUL = 0 } +enum : uint { DISP_CHANGE_RESTART = 1 } +enum { DISP_CHANGE_FAILED = -1 } +enum { DISP_CHANGE_BADMODE = -2 } +enum { DISP_CHANGE_NOTUPDATED = -3 } +enum { DISP_CHANGE_BADFLAGS = -4 } +enum { DISP_CHANGE_BADPARAM = -5 } +// #if(_WIN32_WINNT >= 0x0501) +enum { DISP_CHANGE_BADDUALVIEW = -6 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #ifdef _WINGDI_ +// #ifndef NOGDI + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #... +// #... + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #if(WINVER >= 0x0500) + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE + +// #... + +// ... +// #ifdef UNICODE +// #... +// #else +// #... +// #endif // !UNICODE +// #endif /* WINVER >= 0x0500 */ + +// #endif /* NOGDI */ +// #endif /* _WINGDI_ */ + +extern(Windows) export BOOL SystemParametersInfoA( + UINT uiAction, + UINT uiParam, + PVOID pvParam, + UINT fWinIni); +extern(Windows) export BOOL SystemParametersInfoW( + UINT uiAction, + UINT uiParam, + PVOID pvParam, + UINT fWinIni); +// #ifdef UNICODE +alias SystemParametersInfoW SystemParametersInfo; +// #else +// #... +// #endif // !UNICODE + +// #endif /* !NOSYSPARAMSINFO */ + +struct tagFILTERKEYS { + UINT cbSize; + DWORD dwFlags; + DWORD iWaitMSec; + DWORD iDelayMSec; + DWORD iRepeatMSec; + DWORD iBounceMSec; +} +alias tagFILTERKEYS FILTERKEYS; +alias tagFILTERKEYS* LPFILTERKEYS; + +enum : uint { FKF_FILTERKEYSON = 0x00000001 } +enum : uint { FKF_AVAILABLE = 0x00000002 } +enum : uint { FKF_HOTKEYACTIVE = 0x00000004 } +enum : uint { FKF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { FKF_HOTKEYSOUND = 0x00000010 } +enum : uint { FKF_INDICATOR = 0x00000020 } +enum : uint { FKF_CLICKON = 0x00000040 } + +struct tagSTICKYKEYS { + UINT cbSize; + DWORD dwFlags; +} +alias tagSTICKYKEYS STICKYKEYS; +alias tagSTICKYKEYS* LPSTICKYKEYS; + +enum : uint { SKF_STICKYKEYSON = 0x00000001 } +enum : uint { SKF_AVAILABLE = 0x00000002 } +enum : uint { SKF_HOTKEYACTIVE = 0x00000004 } +enum : uint { SKF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { SKF_HOTKEYSOUND = 0x00000010 } +enum : uint { SKF_INDICATOR = 0x00000020 } +enum : uint { SKF_AUDIBLEFEEDBACK = 0x00000040 } +enum : uint { SKF_TRISTATE = 0x00000080 } +enum : uint { SKF_TWOKEYSOFF = 0x00000100 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { SKF_LALTLATCHED = 0x10000000 } +enum : uint { SKF_LCTLLATCHED = 0x04000000 } +enum : uint { SKF_LSHIFTLATCHED = 0x01000000 } +enum : uint { SKF_RALTLATCHED = 0x20000000 } +enum : uint { SKF_RCTLLATCHED = 0x08000000 } +enum : uint { SKF_RSHIFTLATCHED = 0x02000000 } +enum : uint { SKF_LWINLATCHED = 0x40000000 } +enum : uint { SKF_RWINLATCHED = 0x80000000 } +enum : uint { SKF_LALTLOCKED = 0x00100000 } +enum : uint { SKF_LCTLLOCKED = 0x00040000 } +enum : uint { SKF_LSHIFTLOCKED = 0x00010000 } +enum : uint { SKF_RALTLOCKED = 0x00200000 } +enum : uint { SKF_RCTLLOCKED = 0x00080000 } +enum : uint { SKF_RSHIFTLOCKED = 0x00020000 } +enum : uint { SKF_LWINLOCKED = 0x00400000 } +enum : uint { SKF_RWINLOCKED = 0x00800000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +struct tagMOUSEKEYS { + UINT cbSize; + DWORD dwFlags; + DWORD iMaxSpeed; + DWORD iTimeToMaxSpeed; + DWORD iCtrlSpeed; + DWORD dwReserved1; + DWORD dwReserved2; +} +alias tagMOUSEKEYS MOUSEKEYS; +alias tagMOUSEKEYS* LPMOUSEKEYS; + +enum : uint { MKF_MOUSEKEYSON = 0x00000001 } +enum : uint { MKF_AVAILABLE = 0x00000002 } +enum : uint { MKF_HOTKEYACTIVE = 0x00000004 } +enum : uint { MKF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { MKF_HOTKEYSOUND = 0x00000010 } +enum : uint { MKF_INDICATOR = 0x00000020 } +enum : uint { MKF_MODIFIERS = 0x00000040 } +enum : uint { MKF_REPLACENUMBERS = 0x00000080 } +// #if(_WIN32_WINNT >= 0x0500) +enum : uint { MKF_LEFTBUTTONSEL = 0x10000000 } +enum : uint { MKF_RIGHTBUTTONSEL = 0x20000000 } +enum : uint { MKF_LEFTBUTTONDOWN = 0x01000000 } +enum : uint { MKF_RIGHTBUTTONDOWN = 0x02000000 } +enum : uint { MKF_MOUSEMODE = 0x80000000 } +// #endif /* _WIN32_WINNT >= 0x0500 */ + +struct tagACCESSTIMEOUT { + UINT cbSize; + DWORD dwFlags; + DWORD iTimeOutMSec; +} +alias tagACCESSTIMEOUT ACCESSTIMEOUT; +alias tagACCESSTIMEOUT* LPACCESSTIMEOUT; + +enum : uint { ATF_TIMEOUTON = 0x00000001 } +enum : uint { ATF_ONOFFFEEDBACK = 0x00000002 } + +enum : uint { SSGF_NONE = 0 } +enum : uint { SSGF_DISPLAY = 3 } + +enum : uint { SSTF_NONE = 0 } +enum : uint { SSTF_CHARS = 1 } +enum : uint { SSTF_BORDER = 2 } +enum : uint { SSTF_DISPLAY = 3 } + +enum : uint { SSWF_NONE = 0 } +enum : uint { SSWF_TITLE = 1 } +enum : uint { SSWF_WINDOW = 2 } +enum : uint { SSWF_DISPLAY = 3 } +enum : uint { SSWF_CUSTOM = 4 } + +struct tagSOUNDSENTRYA { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias tagSOUNDSENTRYA SOUNDSENTRYA; +alias tagSOUNDSENTRYA* LPSOUNDSENTRYA; + +struct tagSOUNDSENTRYW { + UINT cbSize; + DWORD dwFlags; + DWORD iFSTextEffect; + DWORD iFSTextEffectMSec; + DWORD iFSTextEffectColorBits; + DWORD iFSGrafEffect; + DWORD iFSGrafEffectMSec; + DWORD iFSGrafEffectColor; + DWORD iWindowsEffect; + DWORD iWindowsEffectMSec; + LPWSTR lpszWindowsEffectDLL; + DWORD iWindowsEffectOrdinal; +} +alias tagSOUNDSENTRYW SOUNDSENTRYW; +alias tagSOUNDSENTRYW* LPSOUNDSENTRYW; + +// #ifdef UNICODE +alias SOUNDSENTRYW SOUNDSENTRY; +alias LPSOUNDSENTRYW LPSOUNDSENTRY; +// #else +// ... +// #endif // UNICODE + +enum : uint { SSF_SOUNDSENTRYON = 0x00000001 } +enum : uint { SSF_AVAILABLE = 0x00000002 } +enum : uint { SSF_INDICATOR = 0x00000004 } + +struct tagTOGGLEKEYS { + UINT cbSize; + DWORD dwFlags; +} +alias tagTOGGLEKEYS TOGGLEKEYS; +alias tagTOGGLEKEYS* LPTOGGLEKEYS; + +enum : uint { TKF_TOGGLEKEYSON = 0x00000001 } +enum : uint { TKF_AVAILABLE = 0x00000002 } +enum : uint { TKF_HOTKEYACTIVE = 0x00000004 } +enum : uint { TKF_CONFIRMHOTKEY = 0x00000008 } +enum : uint { TKF_HOTKEYSOUND = 0x00000010 } +enum : uint { TKF_INDICATOR = 0x00000020 } + +extern(Windows) export VOID SetDebugErrorLevel( + DWORD dwLevel); + +enum : uint { SLE_ERROR = 0x00000001 } +enum : uint { SLE_MINORERROR = 0x00000002 } +enum : uint { SLE_WARNING = 0x00000003 } + +extern(Windows) export VOID SetLastErrorEx( + DWORD dwErrCode, + DWORD dwType); + +// #if(WINVER >= 0x0500) + +enum : uint { MONITOR_DEFAULTTONULL = 0x00000000 } +enum : uint { MONITOR_DEFAULTTOPRIMARY = 0x00000001 } +enum : uint { MONITOR_DEFAULTTONEAREST = 0x00000002 } + +extern(Windows) export HMONITOR MonitorFromPoint( + POINT pt, + DWORD dwFlags); + +extern(Windows) export HMONITOR MonitorFromRect( + LPCRECT lprc, + DWORD dwFlags); + +extern(Windows) export HMONITOR MonitorFromWindow(HWND hwnd, DWORD dwFlags); + +enum : uint { MONITORINFOF_PRIMARY = 0x00000001 } + +// #ifndef CCHDEVICENAME +// #... +// #endif + +struct tagMONITORINFO { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; +} +alias tagMONITORINFO MONITORINFO; +alias tagMONITORINFO* LPMONITORINFO; + +// #ifdef __cplusplus +struct tagMONITORINFOEXA { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + CHAR szDevice[CCHDEVICENAME]; +} +alias tagMONITORINFOEXA MONITORINFOEXA; +alias tagMONITORINFOEXA* LPMONITORINFOEXA; + +struct tagMONITORINFOEXW { + DWORD cbSize; + RECT rcMonitor; + RECT rcWork; + DWORD dwFlags; + WCHAR szDevice[CCHDEVICENAME]; +} +alias tagMONITORINFOEXW MONITORINFOEXW; +alias tagMONITORINFOEXW* LPMONITORINFOEXW; + +// #ifdef UNICODE +alias MONITORINFOEXW MONITORINFOEX; +alias LPMONITORINFOEXW LPMONITORINFOEX; +// #else +// ... +// #endif // UNICODE +// #else // ndef __cplusplus +// ... +// #ifdef UNICODE +// ... +// #else +// ... +// #endif // UNICODE +// #endif + +extern(Windows) export BOOL GetMonitorInfoA(HMONITOR hMonitor, LPMONITORINFO lpmi); +extern(Windows) export BOOL GetMonitorInfoW(HMONITOR hMonitor, LPMONITORINFO lpmi); +// #ifdef UNICODE +alias GetMonitorInfoW GetMonitorInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC; + +extern(Windows) export BOOL EnumDisplayMonitors( + HDC hdc, + LPCRECT lprcClip, + MONITORENUMPROC lpfnEnum, + LPARAM dwData); + +// #ifndef NOWINABLE + +extern(Windows) export VOID NotifyWinEvent( + DWORD event, + HWND hwnd, + LONG idObject, + LONG idChild); + +extern(Windows) alias VOID function( HWINEVENTHOOK hWinEventHook, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD idEventThread, DWORD dwmsEventTime) WINEVENTPROC; + +extern(Windows) export HWINEVENTHOOK SetWinEventHook( + DWORD eventMin, + DWORD eventMax, + HMODULE hmodWinEventProc, + WINEVENTPROC pfnWinEventProc, + DWORD idProcess, + DWORD idThread, + DWORD dwFlags); + +// #if(_WIN32_WINNT >= 0x0501) +extern(Windows) export BOOL IsWinEventHookInstalled( + DWORD event); +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { WINEVENT_OUTOFCONTEXT = 0x0000 } +enum : uint { WINEVENT_SKIPOWNTHREAD = 0x0001 } +enum : uint { WINEVENT_SKIPOWNPROCESS = 0x0002 } +enum : uint { WINEVENT_INCONTEXT = 0x0004 } + +extern(Windows) export BOOL UnhookWinEvent( + HWINEVENTHOOK hWinEventHook); + +enum : uint { CHILDID_SELF = 0 } +enum : uint { INDEXID_OBJECT = 0 } +enum : uint { INDEXID_CONTAINER = 0 } + +enum : uint { OBJID_WINDOW = cast(LONG)0x00000000 } +enum : uint { OBJID_SYSMENU = cast(LONG)0xFFFFFFFF } +enum : uint { OBJID_TITLEBAR = cast(LONG)0xFFFFFFFE } +enum : uint { OBJID_MENU = cast(LONG)0xFFFFFFFD } +enum : uint { OBJID_CLIENT = cast(LONG)0xFFFFFFFC } +enum : uint { OBJID_VSCROLL = cast(LONG)0xFFFFFFFB } +enum : uint { OBJID_HSCROLL = cast(LONG)0xFFFFFFFA } +enum : uint { OBJID_SIZEGRIP = cast(LONG)0xFFFFFFF9 } +enum : uint { OBJID_CARET = cast(LONG)0xFFFFFFF8 } +enum : uint { OBJID_CURSOR = cast(LONG)0xFFFFFFF7 } +enum : uint { OBJID_ALERT = cast(LONG)0xFFFFFFF6 } +enum : uint { OBJID_SOUND = cast(LONG)0xFFFFFFF5 } +enum : uint { OBJID_QUERYCLASSNAMEIDX = cast(LONG)0xFFFFFFF4 } +enum : uint { OBJID_NATIVEOM = cast(LONG)0xFFFFFFF0 } + +enum : uint { EVENT_MIN = 0x00000001 } +enum : uint { EVENT_MAX = 0x7FFFFFFF } + +enum : uint { EVENT_SYSTEM_SOUND = 0x0001 } + +enum : uint { EVENT_SYSTEM_ALERT = 0x0002 } + +enum : uint { EVENT_SYSTEM_FOREGROUND = 0x0003 } + +enum : uint { EVENT_SYSTEM_MENUSTART = 0x0004 } +enum : uint { EVENT_SYSTEM_MENUEND = 0x0005 } + +enum : uint { EVENT_SYSTEM_MENUPOPUPSTART = 0x0006 } +enum : uint { EVENT_SYSTEM_MENUPOPUPEND = 0x0007 } + +enum : uint { EVENT_SYSTEM_CAPTURESTART = 0x0008 } +enum : uint { EVENT_SYSTEM_CAPTUREEND = 0x0009 } + +enum : uint { EVENT_SYSTEM_MOVESIZESTART = 0x000A } +enum : uint { EVENT_SYSTEM_MOVESIZEEND = 0x000B } + +enum : uint { EVENT_SYSTEM_CONTEXTHELPSTART = 0x000C } +enum : uint { EVENT_SYSTEM_CONTEXTHELPEND = 0x000D } + +enum : uint { EVENT_SYSTEM_DRAGDROPSTART = 0x000E } +enum : uint { EVENT_SYSTEM_DRAGDROPEND = 0x000F } + +enum : uint { EVENT_SYSTEM_DIALOGSTART = 0x0010 } +enum : uint { EVENT_SYSTEM_DIALOGEND = 0x0011 } + +enum : uint { EVENT_SYSTEM_SCROLLINGSTART = 0x0012 } +enum : uint { EVENT_SYSTEM_SCROLLINGEND = 0x0013 } + +enum : uint { EVENT_SYSTEM_SWITCHSTART = 0x0014 } +enum : uint { EVENT_SYSTEM_SWITCHEND = 0x0015 } + +enum : uint { EVENT_SYSTEM_MINIMIZESTART = 0x0016 } +enum : uint { EVENT_SYSTEM_MINIMIZEEND = 0x0017 } + +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { EVENT_CONSOLE_CARET = 0x4001 } +enum : uint { EVENT_CONSOLE_UPDATE_REGION = 0x4002 } +enum : uint { EVENT_CONSOLE_UPDATE_SIMPLE = 0x4003 } +enum : uint { EVENT_CONSOLE_UPDATE_SCROLL = 0x4004 } +enum : uint { EVENT_CONSOLE_LAYOUT = 0x4005 } +enum : uint { EVENT_CONSOLE_START_APPLICATION = 0x4006 } +enum : uint { EVENT_CONSOLE_END_APPLICATION = 0x4007 } + +enum : uint { CONSOLE_APPLICATION_16BIT = 0x0001 } + +enum : uint { CONSOLE_CARET_SELECTION = 0x0001 } +enum : uint { CONSOLE_CARET_VISIBLE = 0x0002 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +enum : uint { EVENT_OBJECT_CREATE = 0x8000 } +enum : uint { EVENT_OBJECT_DESTROY = 0x8001 } +enum : uint { EVENT_OBJECT_SHOW = 0x8002 } +enum : uint { EVENT_OBJECT_HIDE = 0x8003 } +enum : uint { EVENT_OBJECT_REORDER = 0x8004 } + +enum : uint { EVENT_OBJECT_FOCUS = 0x8005 } +enum : uint { EVENT_OBJECT_SELECTION = 0x8006 } +enum : uint { EVENT_OBJECT_SELECTIONADD = 0x8007 } +enum : uint { EVENT_OBJECT_SELECTIONREMOVE = 0x8008 } +enum : uint { EVENT_OBJECT_SELECTIONWITHIN = 0x8009 } + +enum : uint { EVENT_OBJECT_STATECHANGE = 0x800A } + +enum : uint { EVENT_OBJECT_LOCATIONCHANGE = 0x800B } + +enum : uint { EVENT_OBJECT_NAMECHANGE = 0x800C } +enum : uint { EVENT_OBJECT_DESCRIPTIONCHANGE = 0x800D } +enum : uint { EVENT_OBJECT_VALUECHANGE = 0x800E } +enum : uint { EVENT_OBJECT_PARENTCHANGE = 0x800F } +enum : uint { EVENT_OBJECT_HELPCHANGE = 0x8010 } +enum : uint { EVENT_OBJECT_DEFACTIONCHANGE = 0x8011 } +enum : uint { EVENT_OBJECT_ACCELERATORCHANGE = 0x8012 } + +enum : uint { SOUND_SYSTEM_STARTUP = 1 } +enum : uint { SOUND_SYSTEM_SHUTDOWN = 2 } +enum : uint { SOUND_SYSTEM_BEEP = 3 } +enum : uint { SOUND_SYSTEM_ERROR = 4 } +enum : uint { SOUND_SYSTEM_QUESTION = 5 } +enum : uint { SOUND_SYSTEM_WARNING = 6 } +enum : uint { SOUND_SYSTEM_INFORMATION = 7 } +enum : uint { SOUND_SYSTEM_MAXIMIZE = 8 } +enum : uint { SOUND_SYSTEM_MINIMIZE = 9 } +enum : uint { SOUND_SYSTEM_RESTOREUP = 10 } +enum : uint { SOUND_SYSTEM_RESTOREDOWN = 11 } +enum : uint { SOUND_SYSTEM_APPSTART = 12 } +enum : uint { SOUND_SYSTEM_FAULT = 13 } +enum : uint { SOUND_SYSTEM_APPEND = 14 } +enum : uint { SOUND_SYSTEM_MENUCOMMAND = 15 } +enum : uint { SOUND_SYSTEM_MENUPOPUP = 16 } +enum : uint { CSOUND_SYSTEM = 16 } + +enum : uint { ALERT_SYSTEM_INFORMATIONAL = 1 } +enum : uint { ALERT_SYSTEM_WARNING = 2 } +enum : uint { ALERT_SYSTEM_ERROR = 3 } +enum : uint { ALERT_SYSTEM_QUERY = 4 } +enum : uint { ALERT_SYSTEM_CRITICAL = 5 } +enum : uint { CALERT_SYSTEM = 6 } + +struct tagGUITHREADINFO { + DWORD cbSize; + DWORD flags; + HWND hwndActive; + HWND hwndFocus; + HWND hwndCapture; + HWND hwndMenuOwner; + HWND hwndMoveSize; + HWND hwndCaret; + RECT rcCaret; +} +alias tagGUITHREADINFO GUITHREADINFO; +alias tagGUITHREADINFO* PGUITHREADINFO; +alias tagGUITHREADINFO* LPGUITHREADINFO; + +enum : uint { GUI_CARETBLINKING = 0x00000001 } +enum : uint { GUI_INMOVESIZE = 0x00000002 } +enum : uint { GUI_INMENUMODE = 0x00000004 } +enum : uint { GUI_SYSTEMMENUMODE = 0x00000008 } +enum : uint { GUI_POPUPMENUMODE = 0x00000010 } +// #if(_WIN32_WINNT >= 0x0501) +enum : uint { GUI_16BITTASK = 0x00000020 } +// #endif /* _WIN32_WINNT >= 0x0501 */ + +extern(Windows) export BOOL GetGUIThreadInfo( + DWORD idThread, + PGUITHREADINFO pgui); + +extern(Windows) export UINT GetWindowModuleFileNameA( + HWND hwnd, + LPSTR pszFileName, + UINT cchFileNameMax); +extern(Windows) export UINT GetWindowModuleFileNameW( + HWND hwnd, + LPWSTR pszFileName, + UINT cchFileNameMax); +// #ifdef UNICODE +alias GetWindowModuleFileNameW GetWindowModuleFileName; +// #else +// #... +// #endif // !UNICODE + +// #ifndef NO_STATE_FLAGS +enum : uint { STATE_SYSTEM_UNAVAILABLE = 0x00000001 } +enum : uint { STATE_SYSTEM_SELECTED = 0x00000002 } +enum : uint { STATE_SYSTEM_FOCUSED = 0x00000004 } +enum : uint { STATE_SYSTEM_PRESSED = 0x00000008 } +enum : uint { STATE_SYSTEM_CHECKED = 0x00000010 } +enum : uint { STATE_SYSTEM_MIXED = 0x00000020 } +alias STATE_SYSTEM_MIXED STATE_SYSTEM_INDETERMINATE; +enum : uint { STATE_SYSTEM_READONLY = 0x00000040 } +enum : uint { STATE_SYSTEM_HOTTRACKED = 0x00000080 } +enum : uint { STATE_SYSTEM_DEFAULT = 0x00000100 } +enum : uint { STATE_SYSTEM_EXPANDED = 0x00000200 } +enum : uint { STATE_SYSTEM_COLLAPSED = 0x00000400 } +enum : uint { STATE_SYSTEM_BUSY = 0x00000800 } +enum : uint { STATE_SYSTEM_FLOATING = 0x00001000 } +enum : uint { STATE_SYSTEM_MARQUEED = 0x00002000 } +enum : uint { STATE_SYSTEM_ANIMATED = 0x00004000 } +enum : uint { STATE_SYSTEM_INVISIBLE = 0x00008000 } +enum : uint { STATE_SYSTEM_OFFSCREEN = 0x00010000 } +enum : uint { STATE_SYSTEM_SIZEABLE = 0x00020000 } +enum : uint { STATE_SYSTEM_MOVEABLE = 0x00040000 } +enum : uint { STATE_SYSTEM_SELFVOICING = 0x00080000 } +enum : uint { STATE_SYSTEM_FOCUSABLE = 0x00100000 } +enum : uint { STATE_SYSTEM_SELECTABLE = 0x00200000 } +enum : uint { STATE_SYSTEM_LINKED = 0x00400000 } +enum : uint { STATE_SYSTEM_TRAVERSED = 0x00800000 } +enum : uint { STATE_SYSTEM_MULTISELECTABLE = 0x01000000 } +enum : uint { STATE_SYSTEM_EXTSELECTABLE = 0x02000000 } +enum : uint { STATE_SYSTEM_ALERT_LOW = 0x04000000 } +enum : uint { STATE_SYSTEM_ALERT_MEDIUM = 0x08000000 } +enum : uint { STATE_SYSTEM_ALERT_HIGH = 0x10000000 } +enum : uint { STATE_SYSTEM_PROTECTED = 0x20000000 } +enum : uint { STATE_SYSTEM_VALID = 0x3FFFFFFF } +// #endif + +enum : uint { CCHILDREN_TITLEBAR = 5 } +enum : uint { CCHILDREN_SCROLLBAR = 5 } + +struct tagCURSORINFO { + DWORD cbSize; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; +} +alias tagCURSORINFO CURSORINFO; +alias tagCURSORINFO* PCURSORINFO; +alias tagCURSORINFO* LPCURSORINFO; + +enum : uint { CURSOR_SHOWING = 0x00000001 } + +extern(Windows) export BOOL GetCursorInfo( + PCURSORINFO pci +); + +struct tagWINDOWINFO { + DWORD cbSize; + RECT rcWindow; + RECT rcClient; + DWORD dwStyle; + DWORD dwExStyle; + DWORD dwWindowStatus; + UINT cxWindowBorders; + UINT cyWindowBorders; + ATOM atomWindowType; + WORD wCreatorVersion; +} +alias tagWINDOWINFO WINDOWINFO; +alias tagWINDOWINFO* PWINDOWINFO; +alias tagWINDOWINFO* LPWINDOWINFO; + +enum : uint { WS_ACTIVECAPTION = 0x0001 } + +extern(Windows) export BOOL GetWindowInfo( + HWND hwnd, + PWINDOWINFO pwi +); + +struct tagTITLEBARINFO { + DWORD cbSize; + RECT rcTitleBar; + DWORD rgstate[CCHILDREN_TITLEBAR+1]; +} +alias tagTITLEBARINFO TITLEBARINFO; +alias tagTITLEBARINFO* PTITLEBARINFO; +alias tagTITLEBARINFO* LPTITLEBARINFO; + +extern(Windows) export BOOL GetTitleBarInfo( + HWND hwnd, + PTITLEBARINFO pti +); + +struct tagMENUBARINFO { + DWORD cbSize; + RECT rcBar; + HMENU hMenu; + HWND hwndMenu; +// BOOL fBarFocused:1; +// BOOL fFocused:1; +} +alias tagMENUBARINFO MENUBARINFO; +alias tagMENUBARINFO* PMENUBARINFO; +alias tagMENUBARINFO* LPMENUBARINFO; + +extern(Windows) export BOOL GetMenuBarInfo( + HWND hwnd, + LONG idObject, + LONG idItem, + PMENUBARINFO pmbi +); + +struct tagSCROLLBARINFO { + DWORD cbSize; + RECT rcScrollBar; + int dxyLineButton; + int xyThumbTop; + int xyThumbBottom; + int reserved; + DWORD rgstate[CCHILDREN_SCROLLBAR+1]; +} +alias tagSCROLLBARINFO SCROLLBARINFO; +alias tagSCROLLBARINFO* PSCROLLBARINFO; +alias tagSCROLLBARINFO* LPSCROLLBARINFO; + +extern(Windows) export BOOL GetScrollBarInfo( + HWND hwnd, + LONG idObject, + PSCROLLBARINFO psbi +); + +struct tagCOMBOBOXINFO { + DWORD cbSize; + RECT rcItem; + RECT rcButton; + DWORD stateButton; + HWND hwndCombo; + HWND hwndItem; + HWND hwndList; +} +alias tagCOMBOBOXINFO COMBOBOXINFO; +alias tagCOMBOBOXINFO* PCOMBOBOXINFO; +alias tagCOMBOBOXINFO* LPCOMBOBOXINFO; + +extern(Windows) export BOOL GetComboBoxInfo( + HWND hwndCombo, + PCOMBOBOXINFO pcbi +); + +enum : uint { GA_PARENT = 1 } +enum : uint { GA_ROOT = 2 } +enum : uint { GA_ROOTOWNER = 3 } + +extern(Windows) export HWND GetAncestor( + HWND hwnd, + UINT gaFlags +); + +extern(Windows) export HWND RealChildWindowFromPoint( + HWND hwndParent, + POINT ptParentClientCoords +); + +extern(Windows) export UINT RealGetWindowClassA( + HWND hwnd, + LPSTR pszType, + UINT cchType +); + +extern(Windows) export UINT RealGetWindowClassW( + HWND hwnd, + LPWSTR pszType, + UINT cchType +); +// #ifdef UNICODE +alias RealGetWindowClassW RealGetWindowClass; +// #else +// #... +// #endif // !UNICODE + +struct tagALTTABINFO { + DWORD cbSize; + int cItems; + int cColumns; + int cRows; + int iColFocus; + int iRowFocus; + int cxItem; + int cyItem; + POINT ptStart; +} +alias tagALTTABINFO ALTTABINFO; +alias tagALTTABINFO* PALTTABINFO; +alias tagALTTABINFO* LPALTTABINFO; + +extern(Windows) export BOOL GetAltTabInfoA( + HWND hwnd, + int iItem, + PALTTABINFO pati, + LPSTR pszItemText, + UINT cchItemText +); +extern(Windows) export BOOL GetAltTabInfoW( + HWND hwnd, + int iItem, + PALTTABINFO pati, + LPWSTR pszItemText, + UINT cchItemText +); +// #ifdef UNICODE +alias GetAltTabInfoW GetAltTabInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetListBoxInfo( + HWND hwnd +); + +// #endif /* NOWINABLE */ +// #endif /* WINVER >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0500) +extern(Windows) export BOOL LockWorkStation(); +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0500) + +extern(Windows) export BOOL UserHandleGrantAccess( + HANDLE hUserHandle, + HANDLE hJob, + BOOL bGrant); + +// #endif /* _WIN32_WINNT >= 0x0500 */ + +// #if(_WIN32_WINNT >= 0x0501) + +alias void* HRAWINPUT; + +// #define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff) + +enum : uint { RIM_INPUT = 0 } + +enum : uint { RIM_INPUTSINK = 1 } + +struct tagRAWINPUTHEADER { + DWORD dwType; + DWORD dwSize; + HANDLE hDevice; + WPARAM wParam; +} +alias tagRAWINPUTHEADER RAWINPUTHEADER; +alias tagRAWINPUTHEADER* PRAWINPUTHEADER; +alias tagRAWINPUTHEADER* LPRAWINPUTHEADER; + +enum : uint { RIM_TYPEMOUSE = 0 } +enum : uint { RIM_TYPEKEYBOARD = 1 } +enum : uint { RIM_TYPEHID = 2 } + +struct tagRAWMOUSE { + + USHORT usFlags; +union { + ULONG ulButtons; +struct { + USHORT usButtonFlags; + USHORT usButtonData; +} + +} + + ULONG ulRawButtons; + LONG lLastX; + LONG lLastY; + ULONG ulExtraInformation; +} +alias tagRAWMOUSE RAWMOUSE; +alias tagRAWMOUSE* PRAWMOUSE; +alias tagRAWMOUSE* LPRAWMOUSE; + +enum : uint { RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001 } +enum : uint { RI_MOUSE_LEFT_BUTTON_UP = 0x0002 } +enum : uint { RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004 } +enum : uint { RI_MOUSE_RIGHT_BUTTON_UP = 0x0008 } +enum : uint { RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010 } +enum : uint { RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020 } + +alias RI_MOUSE_LEFT_BUTTON_DOWN RI_MOUSE_BUTTON_1_DOWN; +alias RI_MOUSE_LEFT_BUTTON_UP RI_MOUSE_BUTTON_1_UP; +alias RI_MOUSE_RIGHT_BUTTON_DOWN RI_MOUSE_BUTTON_2_DOWN; +alias RI_MOUSE_RIGHT_BUTTON_UP RI_MOUSE_BUTTON_2_UP; +alias RI_MOUSE_MIDDLE_BUTTON_DOWN RI_MOUSE_BUTTON_3_DOWN; +alias RI_MOUSE_MIDDLE_BUTTON_UP RI_MOUSE_BUTTON_3_UP; + +enum : uint { RI_MOUSE_BUTTON_4_DOWN = 0x0040 } +enum : uint { RI_MOUSE_BUTTON_4_UP = 0x0080 } +enum : uint { RI_MOUSE_BUTTON_5_DOWN = 0x0100 } +enum : uint { RI_MOUSE_BUTTON_5_UP = 0x0200 } + +enum : uint { RI_MOUSE_WHEEL = 0x0400 } + +enum : uint { MOUSE_MOVE_RELATIVE = 0 } +enum : uint { MOUSE_MOVE_ABSOLUTE = 1 } +enum : uint { MOUSE_VIRTUAL_DESKTOP = 0x02 } +enum : uint { MOUSE_ATTRIBUTES_CHANGED = 0x04 } + +struct tagRAWKEYBOARD { + + USHORT MakeCode; + USHORT Flags; + USHORT Reserved; + USHORT VKey; + UINT Message; + ULONG ExtraInformation; +} +alias tagRAWKEYBOARD RAWKEYBOARD; +alias tagRAWKEYBOARD* PRAWKEYBOARD; +alias tagRAWKEYBOARD* LPRAWKEYBOARD; + +enum : uint { KEYBOARD_OVERRUN_MAKE_CODE = 0xFF } + +enum : uint { RI_KEY_MAKE = 0 } +enum : uint { RI_KEY_BREAK = 1 } +enum : uint { RI_KEY_E0 = 2 } +enum : uint { RI_KEY_E1 = 4 } +enum : uint { RI_KEY_TERMSRV_SET_LED = 8 } +enum : uint { RI_KEY_TERMSRV_SHADOW = 0x10 } + +struct tagRAWHID { + DWORD dwSizeHid; + DWORD dwCount; + BYTE bRawData[1]; +} +alias tagRAWHID RAWHID; +alias tagRAWHID* PRAWHID; +alias tagRAWHID* LPRAWHID; + +struct tagRAWINPUT { + RAWINPUTHEADER header; +union { + RAWMOUSE mouse; + RAWKEYBOARD keyboard; + RAWHID hid; +} + +} +alias tagRAWINPUT RAWINPUT; +alias tagRAWINPUT* PRAWINPUT; +alias tagRAWINPUT* LPRAWINPUT; + +// #ifdef _WIN64 +// #... +// #else // _WIN64 +uint RAWINPUT_ALIGN(uint x){ return ((x + DWORD.sizeof - 1) & ~(DWORD.sizeof - 1)); } +// #endif // _WIN64 + +// #define NEXTRAWINPUTBLOCK(ptr) ((PRAWINPUT)RAWINPUT_ALIGN((ULONG_PTR)((PBYTE)(ptr) + (ptr)->header.dwSize))) + +enum : uint { RID_INPUT = 0x10000003 } +enum : uint { RID_HEADER = 0x10000005 } + +extern(Windows) export UINT GetRawInputData( + HRAWINPUT hRawInput, + UINT uiCommand, + LPVOID pData, + PUINT pcbSize, + UINT cbSizeHeader); + +enum : uint { RIDI_PREPARSEDDATA = 0x20000005 } +enum : uint { RIDI_DEVICENAME = 0x20000007 } +enum : uint { RIDI_DEVICEINFO = 0x2000000b } + +struct tagRID_DEVICE_INFO_MOUSE { + DWORD dwId; + DWORD dwNumberOfButtons; + DWORD dwSampleRate; +} +alias tagRID_DEVICE_INFO_MOUSE RID_DEVICE_INFO_MOUSE; +alias tagRID_DEVICE_INFO_MOUSE* PRID_DEVICE_INFO_MOUSE; + +struct tagRID_DEVICE_INFO_KEYBOARD { + DWORD dwType; + DWORD dwSubType; + DWORD dwKeyboardMode; + DWORD dwNumberOfFunctionKeys; + DWORD dwNumberOfIndicators; + DWORD dwNumberOfKeysTotal; +} +alias tagRID_DEVICE_INFO_KEYBOARD RID_DEVICE_INFO_KEYBOARD; +alias tagRID_DEVICE_INFO_KEYBOARD* PRID_DEVICE_INFO_KEYBOARD; + +struct tagRID_DEVICE_INFO_HID { + DWORD dwVendorId; + DWORD dwProductId; + DWORD dwVersionNumber; + USHORT usUsagePage; + USHORT usUsage; +} +alias tagRID_DEVICE_INFO_HID RID_DEVICE_INFO_HID; +alias tagRID_DEVICE_INFO_HID* PRID_DEVICE_INFO_HID; + +struct tagRID_DEVICE_INFO { + DWORD cbSize; + DWORD dwType; +union { + RID_DEVICE_INFO_MOUSE mouse; + RID_DEVICE_INFO_KEYBOARD keyboard; + RID_DEVICE_INFO_HID hid; +} + +} +alias tagRID_DEVICE_INFO RID_DEVICE_INFO; +alias tagRID_DEVICE_INFO* PRID_DEVICE_INFO; +alias tagRID_DEVICE_INFO* LPRID_DEVICE_INFO; + +extern(Windows) export UINT GetRawInputDeviceInfoA( + HANDLE hDevice, + UINT uiCommand, + LPVOID pData, + PUINT pcbSize); +extern(Windows) export UINT GetRawInputDeviceInfoW( + HANDLE hDevice, + UINT uiCommand, + LPVOID pData, + PUINT pcbSize); +// #ifdef UNICODE +alias GetRawInputDeviceInfoW GetRawInputDeviceInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export UINT GetRawInputBuffer( + PRAWINPUT pData, + PUINT pcbSize, + UINT cbSizeHeader); + +struct tagRAWINPUTDEVICE { + USHORT usUsagePage; + USHORT usUsage; + DWORD dwFlags; + HWND hwndTarget; +} +alias tagRAWINPUTDEVICE RAWINPUTDEVICE; +alias tagRAWINPUTDEVICE* PRAWINPUTDEVICE; +alias tagRAWINPUTDEVICE* LPRAWINPUTDEVICE; + +alias RAWINPUTDEVICE* PCRAWINPUTDEVICE; + +enum : uint { RIDEV_REMOVE = 0x00000001 } +enum : uint { RIDEV_EXCLUDE = 0x00000010 } +enum : uint { RIDEV_PAGEONLY = 0x00000020 } +enum : uint { RIDEV_NOLEGACY = 0x00000030 } +enum : uint { RIDEV_CAPTUREMOUSE = 0x00000200 } +enum : uint { RIDEV_NOHOTKEYS = 0x00000200 } +enum : uint { RIDEV_EXMODEMASK = 0x000000F0 } + +// #define RIDEV_EXMODE(mode) ((mode) & RIDEV_EXMODEMASK) + +extern(Windows) export BOOL RegisterRawInputDevices( + PCRAWINPUTDEVICE pRawInputDevices, + UINT uiNumDevices, + UINT cbSize); + +extern(Windows) export UINT GetRegisteredRawInputDevices( + PRAWINPUTDEVICE pRawInputDevices, + PUINT puiNumDevices, + UINT cbSize); + +struct tagRAWINPUTDEVICELIST { + HANDLE hDevice; + DWORD dwType; +} +alias tagRAWINPUTDEVICELIST RAWINPUTDEVICELIST; +alias tagRAWINPUTDEVICELIST* PRAWINPUTDEVICELIST; + +extern(Windows) export UINT GetRawInputDeviceList( + PRAWINPUTDEVICELIST pRawInputDeviceList, + PUINT puiNumDevices, + UINT cbSize); + +extern(Windows) export LRESULT DefRawInputProc( + PRAWINPUT* paRawInput, + INT nInput, + UINT cbSizeHeader); + +// #endif /* _WIN32_WINNT >= 0x0501 */ + +// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */ +// #if ISOLATION_AWARE_ENABLED +// #... +// #endif /* ISOLATION_AWARE_ENABLED */ +// #endif /* RC */ + +// #ifdef __cplusplus +// } +// #endif /* __cplusplus */ + +// #endif /* !_WINUSER_ */ + ADDED src/win32/winver.d Index: src/win32/winver.d ================================================================== --- src/win32/winver.d +++ src/win32/winver.d @@ -0,0 +1,259 @@ +module win32.winver; + +// Translated from Microsoft Platform SDK August 2001 Edition +// by Y.Tomino + +import win32.winuser; + +// #ifndef VER_H +// #define VER_H + +// #ifdef __cplusplus +// extern "C" { +// #endif + +alias RT_VERSION VS_FILE_INFO; +enum : uint { VS_VERSION_INFO = 1 } +enum : uint { VS_USER_DEFINED = 100 } + +// #ifndef _MAC +enum : uint { VS_FFI_SIGNATURE = 0xFEEF04BD } +// #else +// #... +// #endif +enum : uint { VS_FFI_STRUCVERSION = 0x00010000 } +enum : uint { VS_FFI_FILEFLAGSMASK = 0x0000003F } + +enum : uint { VS_FF_DEBUG = 0x00000001 } +enum : uint { VS_FF_PRERELEASE = 0x00000002 } +enum : uint { VS_FF_PATCHED = 0x00000004 } +enum : uint { VS_FF_PRIVATEBUILD = 0x00000008 } +enum : uint { VS_FF_INFOINFERRED = 0x00000010 } +enum : uint { VS_FF_SPECIALBUILD = 0x00000020 } + +enum : uint { VOS_UNKNOWN = 0x00000000 } +enum : uint { VOS_DOS = 0x00010000 } +enum : uint { VOS_OS216 = 0x00020000 } +enum : uint { VOS_OS232 = 0x00030000 } +enum : uint { VOS_NT = 0x00040000 } + +enum : uint { VOS__BASE = 0x00000000 } +enum : uint { VOS__WINDOWS16 = 0x00000001 } +enum : uint { VOS__PM16 = 0x00000002 } +enum : uint { VOS__PM32 = 0x00000003 } +enum : uint { VOS__WINDOWS32 = 0x00000004 } + +enum : uint { VOS_DOS_WINDOWS16 = 0x00010001 } +enum : uint { VOS_DOS_WINDOWS32 = 0x00010004 } +enum : uint { VOS_OS216_PM16 = 0x00020002 } +enum : uint { VOS_OS232_PM32 = 0x00030003 } +enum : uint { VOS_NT_WINDOWS32 = 0x00040004 } + +enum : uint { VFT_UNKNOWN = 0x00000000 } +enum : uint { VFT_APP = 0x00000001 } +enum : uint { VFT_DLL = 0x00000002 } +enum : uint { VFT_DRV = 0x00000003 } +enum : uint { VFT_FONT = 0x00000004 } +enum : uint { VFT_VXD = 0x00000005 } +enum : uint { VFT_STATIC_LIB = 0x00000007 } + +enum : uint { VFT2_UNKNOWN = 0x00000000 } +enum : uint { VFT2_DRV_PRINTER = 0x00000001 } +enum : uint { VFT2_DRV_KEYBOARD = 0x00000002 } +enum : uint { VFT2_DRV_LANGUAGE = 0x00000003 } +enum : uint { VFT2_DRV_DISPLAY = 0x00000004 } +enum : uint { VFT2_DRV_MOUSE = 0x00000005 } +enum : uint { VFT2_DRV_NETWORK = 0x00000006 } +enum : uint { VFT2_DRV_SYSTEM = 0x00000007 } +enum : uint { VFT2_DRV_INSTALLABLE = 0x00000008 } +enum : uint { VFT2_DRV_SOUND = 0x00000009 } +enum : uint { VFT2_DRV_COMM = 0x0000000A } +enum : uint { VFT2_DRV_INPUTMETHOD = 0x0000000B } +enum : uint { VFT2_DRV_VERSIONED_PRINTER = 0x0000000C } + +enum : uint { VFT2_FONT_RASTER = 0x00000001 } +enum : uint { VFT2_FONT_VECTOR = 0x00000002 } +enum : uint { VFT2_FONT_TRUETYPE = 0x00000003 } + +enum : uint { VFFF_ISSHAREDFILE = 0x0001 } + +enum : uint { VFF_CURNEDEST = 0x0001 } +enum : uint { VFF_FILEINUSE = 0x0002 } +enum : uint { VFF_BUFFTOOSMALL = 0x0004 } + +enum : uint { VIFF_FORCEINSTALL = 0x0001 } +enum : uint { VIFF_DONTDELETEOLD = 0x0002 } + +enum : uint { VIF_TEMPFILE = 0x00000001 } +enum : uint { VIF_MISMATCH = 0x00000002 } +enum : uint { VIF_SRCOLD = 0x00000004 } + +enum : uint { VIF_DIFFLANG = 0x00000008 } +enum : uint { VIF_DIFFCODEPG = 0x00000010 } +enum : uint { VIF_DIFFTYPE = 0x00000020 } + +enum : uint { VIF_WRITEPROT = 0x00000040 } +enum : uint { VIF_FILEINUSE = 0x00000080 } +enum : uint { VIF_OUTOFSPACE = 0x00000100 } +enum : uint { VIF_ACCESSVIOLATION = 0x00000200 } +enum : uint { VIF_SHARINGVIOLATION = 0x00000400 } +enum : uint { VIF_CANNOTCREATE = 0x00000800 } +enum : uint { VIF_CANNOTDELETE = 0x00001000 } +enum : uint { VIF_CANNOTRENAME = 0x00002000 } +enum : uint { VIF_CANNOTDELETECUR = 0x00004000 } +enum : uint { VIF_OUTOFMEMORY = 0x00008000 } + +enum : uint { VIF_CANNOTREADSRC = 0x00010000 } +enum : uint { VIF_CANNOTREADDST = 0x00020000 } + +enum : uint { VIF_BUFFTOOSMALL = 0x00040000 } +enum : uint { VIF_CANNOTLOADLZ32 = 0x00080000 } +enum : uint { VIF_CANNOTLOADCABINET = 0x00100000 } + +// #ifndef RC_INVOKED /* RC doesn't need to see the rest of this */ + +struct tagVS_FIXEDFILEINFO { + DWORD dwSignature; + DWORD dwStrucVersion; + DWORD dwFileVersionMS; + DWORD dwFileVersionLS; + DWORD dwProductVersionMS; + DWORD dwProductVersionLS; + DWORD dwFileFlagsMask; + DWORD dwFileFlags; + DWORD dwFileOS; + DWORD dwFileType; + DWORD dwFileSubtype; + DWORD dwFileDateMS; + DWORD dwFileDateLS; +} +alias tagVS_FIXEDFILEINFO VS_FIXEDFILEINFO; + +extern(Windows) export DWORD VerFindFileA( + DWORD uFlags, + LPSTR szFileName, + LPSTR szWinDir, + LPSTR szAppDir, + LPSTR szCurDir, + PUINT lpuCurDirLen, + LPSTR szDestDir, + PUINT lpuDestDirLen + ); +extern(Windows) export DWORD VerFindFileW( + DWORD uFlags, + LPWSTR szFileName, + LPWSTR szWinDir, + LPWSTR szAppDir, + LPWSTR szCurDir, + PUINT lpuCurDirLen, + LPWSTR szDestDir, + PUINT lpuDestDirLen + ); +// #ifdef UNICODE +alias VerFindFileW VerFindFile; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD VerInstallFileA( + DWORD uFlags, + LPSTR szSrcFileName, + LPSTR szDestFileName, + LPSTR szSrcDir, + LPSTR szDestDir, + LPSTR szCurDir, + LPSTR szTmpFile, + PUINT lpuTmpFileLen + ); +extern(Windows) export DWORD VerInstallFileW( + DWORD uFlags, + LPWSTR szSrcFileName, + LPWSTR szDestFileName, + LPWSTR szSrcDir, + LPWSTR szDestDir, + LPWSTR szCurDir, + LPWSTR szTmpFile, + PUINT lpuTmpFileLen + ); +// #ifdef UNICODE +alias VerInstallFileW VerInstallFile; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD GetFileVersionInfoSizeA( + LPSTR lptstrFilename, + LPDWORD lpdwHandle + ); + +extern(Windows) export DWORD GetFileVersionInfoSizeW( + LPWSTR lptstrFilename, + LPDWORD lpdwHandle + ); +// #ifdef UNICODE +alias GetFileVersionInfoSizeW GetFileVersionInfoSize; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL GetFileVersionInfoA( + LPSTR lptstrFilename, + DWORD dwHandle, + DWORD dwLen, + LPVOID lpData + ); + +extern(Windows) export BOOL GetFileVersionInfoW( + LPWSTR lptstrFilename, + DWORD dwHandle, + DWORD dwLen, + LPVOID lpData + ); +// #ifdef UNICODE +alias GetFileVersionInfoW GetFileVersionInfo; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export DWORD VerLanguageNameA( + DWORD wLang, + LPSTR szLang, + DWORD nSize + ); +extern(Windows) export DWORD VerLanguageNameW( + DWORD wLang, + LPWSTR szLang, + DWORD nSize + ); +// #ifdef UNICODE +alias VerLanguageNameW VerLanguageName; +// #else +// #... +// #endif // !UNICODE + +extern(Windows) export BOOL VerQueryValueA( + LPVOID pBlock, + LPSTR lpSubBlock, + LPVOID * lplpBuffer, + PUINT puLen + ); +extern(Windows) export BOOL VerQueryValueW( + LPVOID pBlock, + LPWSTR lpSubBlock, + LPVOID * lplpBuffer, + PUINT puLen + ); +// #ifdef UNICODE +alias VerQueryValueW VerQueryValue; +// #else +// #... +// #endif // !UNICODE + +// #endif /* !RC_INVOKED */ + +// #ifdef __cplusplus +// } +// #endif + +// #endif /* !VER_H */ + ADDED src/win32a.lib Index: src/win32a.lib ================================================================== --- src/win32a.lib +++ src/win32a.lib cannot compute difference between binary files ADDED src/windll.d Index: src/windll.d ================================================================== --- src/windll.d +++ src/windll.d @@ -0,0 +1,84 @@ +サソprivate import win32.ansi.windows; + +class WinDLLException : Exception +{ + private this( char[] msg ) { super(msg); } +} + +class WinDLL +{ + // constructor: + // Load a DLL with specified name + + this( char[] dllname ) + { + char original_cur[MAX_PATH]; + char sys[MAX_PATH]; + GetCurrentDirectory(MAX_PATH, original_cur); + GetSystemDirectory(sys, MAX_PATH); + SetCurrentDirectory(sys); + handle = LoadLibrary( dllname ); + SetCurrentDirectory(original_cur); + if( handle is null ) + throw new WinDLLException( dllname ~ " not found" ); + } + + static WinDLL load( char[] name ) + { + try { + return new WinDLL(name); + } catch(WinDLLException e) { return null; } + } + + // close: + // free the DLL + + void close() + { + if( handle ) + { + FreeLibrary( handle ); + handle = null; + } + } + + // get_api: + // extract a function with specified name from the DLL. + // may return null. + + template get_api(FnT) + { + FnT get_api( char[] apiname ) + in { assert(handle); } + body + { + return cast(FnT) GetProcAddress( handle, apiname ); + } + } + + // load_resource: + // extract a resource + + void* load_resource( char[] resname, char* type ) + in { assert(handle); } + body + { + HRSRC hi = FindResource( handle, resname, type ); + if( hi is null ) + return null; + HGLOBAL hr = LoadResource( handle, hi ); + if( hr is null ) + return null; + return LockResource( hr ); + } + + // load_diaglog: + // specialized version of load_resource + + void* load_dialog( char[] resname ) + { + return load_resource( resname, RT_DIALOG ); + } + + private HINSTANCE handle; +}