Artifact 882f1cfcdc84a351364334b301cc8c1f0a1444a2:
0000: 23 69 66 6e 64 65 66 20 5f 4b 49 4c 49 42 5f 57 #ifndef _KILIB_W
0010: 49 4e 55 54 49 4c 5f 48 5f 0d 0a 23 64 65 66 69 INUTIL_H_..#defi
0020: 6e 65 20 5f 4b 49 4c 49 42 5f 57 49 4e 55 54 49 ne _KILIB_WINUTI
0030: 4c 5f 48 5f 0d 0a 23 69 6e 63 6c 75 64 65 20 22 L_H_..#include "
0040: 74 79 70 65 73 2e 68 22 0d 0a 23 69 6e 63 6c 75 types.h"..#inclu
0050: 64 65 20 22 6d 65 6d 6f 72 79 2e 68 22 0d 0a 23 de "memory.h"..#
0060: 69 6e 63 6c 75 64 65 20 22 6b 74 6c 61 70 74 72 include "ktlaptr
0070: 2e 68 22 0d 0a 23 69 66 6e 64 65 66 20 5f 5f 63 .h"..#ifndef __c
0080: 63 64 6f 63 5f 5f 0d 0a 6e 61 6d 65 73 70 61 63 cdoc__..namespac
0090: 65 20 6b 69 20 7b 0d 0a 23 65 6e 64 69 66 0d 0a e ki {..#endif..
00a0: 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d ......//========
00b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00f0: 3d 0d 0a 2f 2f 40 7b 20 40 70 6b 67 20 6b 69 2e =..//@{ @pkg ki.
0100: 57 69 6e 55 74 69 6c 20 2f 2f 40 7d 0d 0a 2f 2f WinUtil //@}..//
0110: 40 7b 0d 0a 2f 2f 09 83 4e 83 8a 83 62 83 76 83 @{..//..N...b.v.
0120: 7b 81 5b 83 68 8a c7 97 9d 0d 0a 2f 2f 0d 0a 2f {.[.h......//../
0130: 2f 09 4f 70 65 6e 43 6c 69 70 62 6f 61 72 64 20 /.OpenClipboard
0140: 82 e2 20 43 6c 6f 73 65 43 6c 69 70 62 6f 61 72 .. CloseClipboar
0150: 64 20 95 d3 82 e8 82 cc 8c c4 82 d1 8f 6f 82 b5 d ...........o..
0160: 82 f0 93 4b 93 96 82 c9 8e a9 93 ae 89 bb 82 b5 ...K............
0170: 82 dc 82 b7 81 42 0d 0a 2f 2f 40 7d 0d 0a 2f 2f .....B..//@}..//
0180: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0190: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
01c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 63 6c 61 =========....cla
01d0: 73 73 20 43 6c 69 70 62 6f 61 72 64 20 3a 20 70 ss Clipboard : p
01e0: 75 62 6c 69 63 20 4f 62 6a 65 63 74 0d 0a 7b 0d ublic Object..{.
01f0: 0a 70 75 62 6c 69 63 3a 0d 0a 0d 0a 09 2f 2f 40 .public:.....//@
0200: 7b 20 8a 4a 82 ad 20 2f 2f 40 7d 0d 0a 09 43 6c { .J.. //@}...Cl
0210: 69 70 62 6f 61 72 64 28 20 48 57 4e 44 20 6f 77 ipboard( HWND ow
0220: 6e 65 72 2c 20 62 6f 6f 6c 20 72 65 61 64 3d 74 ner, bool read=t
0230: 72 75 65 20 29 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 rue );.....//@{
0240: 95 c2 82 b6 82 e9 20 2f 2f 40 7d 0d 0a 09 7e 43 ...... //@}...~C
0250: 6c 69 70 62 6f 61 72 64 28 29 3b 0d 0a 0d 0a 09 lipboard();.....
0260: 2f 2f 40 7b 20 83 66 81 5b 83 5e 93 c7 82 dd 8d //@{ .f.[.^.....
0270: 9e 82 dd 20 2f 2f 40 7d 0d 0a 09 48 41 4e 44 4c ... //@}...HANDL
0280: 45 20 47 65 74 44 61 74 61 28 20 55 49 4e 54 20 E GetData( UINT
0290: 75 46 6f 72 6d 61 74 20 29 20 63 6f 6e 73 74 3b uFormat ) const;
02a0: 0d 0a 0d 0a 09 2f 2f 40 7b 20 8e 77 92 e8 83 74 .....//@{ .w...t
02b0: 83 48 81 5b 83 7d 83 62 83 67 82 cc 83 66 81 5b .H.[.}.b.g...f.[
02c0: 83 5e 82 aa 83 4e 83 8a 83 62 83 76 83 7b 81 5b .^...N...b.v.{.[
02d0: 83 68 8f e3 82 c9 82 a0 82 e9 82 a9 81 48 20 2f .h...........H /
02e0: 2f 40 7d 0d 0a 09 62 6f 6f 6c 20 49 73 41 76 61 /@}...bool IsAva
02f0: 69 6c 28 20 55 49 4e 54 20 75 46 6f 72 6d 61 74 il( UINT uFormat
0300: 20 29 20 63 6f 6e 73 74 3b 0d 0a 0d 0a 09 2f 2f ) const;.....//
0310: 40 7b 20 8e 77 92 e8 83 74 83 48 81 5b 83 7d 83 @{ .w...t.H.[.}.
0320: 62 83 67 82 cc 83 66 81 5b 83 5e 82 aa 83 4e 83 b.g...f.[.^...N.
0330: 8a 83 62 83 76 83 7b 81 5b 83 68 8f e3 82 c9 82 ..b.v.{.[.h.....
0340: a0 82 e9 82 a9 81 48 28 95 a1 90 94 29 20 2f 2f ......H(....) //
0350: 40 7d 0d 0a 09 62 6f 6f 6c 20 49 73 41 76 61 69 @}...bool IsAvai
0360: 6c 28 20 55 49 4e 54 20 75 46 6f 72 6d 61 74 73 l( UINT uFormats
0370: 5b 5d 2c 20 69 6e 74 20 6e 75 6d 20 29 20 63 6f [], int num ) co
0380: 6e 73 74 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 83 65 nst;.....//@{ .e
0390: 83 4c 83 58 83 67 8f ee 95 f1 95 db 8e 9d 83 4e .L.X.g.........N
03a0: 83 89 83 58 20 2f 2f 40 7d 0d 0a 09 63 6c 61 73 ...X //@}...clas
03b0: 73 20 54 65 78 74 20 7b 0d 0a 09 09 66 72 69 65 s Text {....frie
03c0: 6e 64 20 63 6c 61 73 73 20 43 6c 69 70 62 6f 61 nd class Clipboa
03d0: 72 64 3b 0d 0a 0d 0a 09 09 6d 75 74 61 62 6c 65 rd;......mutable
03e0: 20 75 6e 69 63 6f 64 65 2a 20 20 20 20 20 20 20 unicode*
03f0: 20 73 74 72 5f 3b 0d 0a 09 09 65 6e 75 6d 20 54 str_;....enum T
0400: 70 20 7b 20 4e 45 57 2c 20 47 41 4c 4c 4f 43 20 p { NEW, GALLOC
0410: 7d 20 6d 65 6d 5f 3b 0d 0a 0d 0a 09 09 54 65 78 } mem_;......Tex
0420: 74 28 20 75 6e 69 63 6f 64 65 2a 20 73 2c 20 54 t( unicode* s, T
0430: 70 20 6d 20 29 20 3a 20 73 74 72 5f 28 73 29 2c p m ) : str_(s),
0440: 20 6d 65 6d 5f 28 6d 29 20 7b 7d 0d 0a 09 09 76 mem_(m) {}....v
0450: 6f 69 64 20 6f 70 65 72 61 74 6f 72 3d 28 20 63 oid operator=( c
0460: 6f 6e 73 74 20 54 65 78 74 26 20 29 3b 0d 0a 0d onst Text& );...
0470: 0a 09 70 75 62 6c 69 63 3a 0d 0a 09 09 54 65 78 ..public:....Tex
0480: 74 28 20 63 6f 6e 73 74 20 54 65 78 74 26 20 74 t( const Text& t
0490: 20 29 0d 0a 09 09 09 3a 20 73 74 72 5f 28 74 2e ).....: str_(t.
04a0: 73 74 72 5f 29 2c 20 6d 65 6d 5f 28 74 2e 6d 65 str_), mem_(t.me
04b0: 6d 5f 29 20 7b 20 74 2e 73 74 72 5f 3d 4e 55 4c m_) { t.str_=NUL
04c0: 4c 3b 20 7d 0d 0a 09 09 7e 54 65 78 74 28 29 0d L; }....~Text().
04d0: 0a 09 09 09 7b 0d 0a 09 09 09 09 69 66 28 20 73 ....{......if( s
04e0: 74 72 5f 20 21 3d 20 4e 55 4c 4c 20 29 0d 0a 09 tr_ != NULL )...
04f0: 09 09 09 09 69 66 28 20 6d 65 6d 5f 3d 3d 4e 45 ....if( mem_==NE
0500: 57 20 29 20 64 65 6c 65 74 65 20 5b 5d 20 73 74 W ) delete [] st
0510: 72 5f 3b 0d 0a 09 09 09 09 09 65 6c 73 65 20 20 r_;.......else
0520: 20 20 20 20 47 6c 6f 62 61 6c 55 6e 6c 6f 63 6b GlobalUnlock
0530: 28 20 73 74 72 5f 20 29 3b 0d 0a 09 09 09 7d 0d ( str_ );.....}.
0540: 0a 09 09 63 6f 6e 73 74 20 75 6e 69 63 6f 64 65 ...const unicode
0550: 2a 20 64 61 74 61 28 29 20 63 6f 6e 73 74 20 7b * data() const {
0560: 20 72 65 74 75 72 6e 20 73 74 72 5f 3b 20 7d 0d return str_; }.
0570: 0a 09 7d 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 83 65 ..};.....//@{ .e
0580: 83 4c 83 58 83 67 93 c7 82 dd 8d 9e 82 dd 20 2f .L.X.g........ /
0590: 2f 40 7d 0d 0a 09 54 65 78 74 20 47 65 74 55 6e /@}...Text GetUn
05a0: 69 63 6f 64 65 54 65 78 74 28 29 20 63 6f 6e 73 icodeText() cons
05b0: 74 3b 0d 0a 0d 0a 09 2f 2f 40 7b 20 83 66 81 5b t;.....//@{ .f.[
05c0: 83 5e 8f 91 82 ab 8d 9e 82 dd 20 2f 2f 40 7d 0d .^........ //@}.
05d0: 0a 09 62 6f 6f 6c 20 53 65 74 44 61 74 61 28 20 ..bool SetData(
05e0: 55 49 4e 54 20 75 46 6f 72 6d 61 74 2c 20 48 41 UINT uFormat, HA
05f0: 4e 44 4c 45 20 68 44 61 74 61 20 29 3b 0d 0a 0d NDLE hData );...
0600: 0a 09 2f 2f 40 7b 20 93 c6 8e a9 83 74 83 48 81 ..//@{ .....t.H.
0610: 5b 83 7d 83 62 83 67 82 cc 93 6f 98 5e 20 2f 2f [.}.b.g...o.^ //
0620: 40 7d 0d 0a 09 73 74 61 74 69 63 20 55 49 4e 54 @}...static UINT
0630: 20 52 65 67 69 73 74 65 72 46 6f 72 6d 61 74 28 RegisterFormat(
0640: 20 63 6f 6e 73 74 20 54 43 48 41 52 2a 20 6e 61 const TCHAR* na
0650: 6d 65 20 29 3b 0d 0a 0d 0a 70 75 62 6c 69 63 3a me );....public:
0660: 0d 0a 0d 0a 09 2f 2f 40 7b 20 90 b3 8f ed 82 c9 .....//@{ ......
0670: 8a 4a 82 a9 82 ea 82 c4 82 a2 82 e9 82 a9 83 60 .J.............`
0680: 83 46 83 62 83 4e 20 2f 2f 40 7d 0d 0a 09 62 6f .F.b.N //@}...bo
0690: 6f 6c 20 69 73 4f 70 65 6e 65 64 28 29 20 63 6f ol isOpened() co
06a0: 6e 73 74 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 3a nst;....private:
06b0: 0d 0a 0d 0a 09 62 6f 6f 6c 20 6f 70 65 6e 65 64 .....bool opened
06c0: 5f 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 3a 0d 0a _;....private:..
06d0: 0d 0a 09 4e 4f 43 4f 50 59 28 43 6c 69 70 62 6f ...NOCOPY(Clipbo
06e0: 61 72 64 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d ard);..};.......
06f0: 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .//-------------
0700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a ------------....
0740: 69 6e 6c 69 6e 65 20 62 6f 6f 6c 20 43 6c 69 70 inline bool Clip
0750: 62 6f 61 72 64 3a 3a 69 73 4f 70 65 6e 65 64 28 board::isOpened(
0760: 29 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 75 ) const...{ retu
0770: 72 6e 20 6f 70 65 6e 65 64 5f 3b 20 7d 0d 0a 0d rn opened_; }...
0780: 0a 69 6e 6c 69 6e 65 20 48 41 4e 44 4c 45 20 43 .inline HANDLE C
0790: 6c 69 70 62 6f 61 72 64 3a 3a 47 65 74 44 61 74 lipboard::GetDat
07a0: 61 28 20 55 49 4e 54 20 75 46 6f 72 6d 61 74 20 a( UINT uFormat
07b0: 29 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 75 ) const...{ retu
07c0: 72 6e 20 3a 3a 47 65 74 43 6c 69 70 62 6f 61 72 rn ::GetClipboar
07d0: 64 44 61 74 61 28 20 75 46 6f 72 6d 61 74 20 29 dData( uFormat )
07e0: 3b 20 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 62 6f ; }....inline bo
07f0: 6f 6c 20 43 6c 69 70 62 6f 61 72 64 3a 3a 53 65 ol Clipboard::Se
0800: 74 44 61 74 61 28 20 55 49 4e 54 20 75 46 6f 72 tData( UINT uFor
0810: 6d 61 74 2c 20 48 41 4e 44 4c 45 20 68 44 61 74 mat, HANDLE hDat
0820: 61 20 29 0d 0a 09 7b 20 72 65 74 75 72 6e 20 4e a )...{ return N
0830: 55 4c 4c 20 21 3d 20 3a 3a 53 65 74 43 6c 69 70 ULL != ::SetClip
0840: 62 6f 61 72 64 44 61 74 61 28 20 75 46 6f 72 6d boardData( uForm
0850: 61 74 2c 20 68 44 61 74 61 20 29 3b 20 7d 0d 0a at, hData ); }..
0860: 0d 0a 69 6e 6c 69 6e 65 20 62 6f 6f 6c 20 43 6c ..inline bool Cl
0870: 69 70 62 6f 61 72 64 3a 3a 49 73 41 76 61 69 6c ipboard::IsAvail
0880: 28 20 55 49 4e 54 20 75 46 6f 72 6d 61 74 20 29 ( UINT uFormat )
0890: 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 75 72 const...{ retur
08a0: 6e 20 66 61 6c 73 65 21 3d 3a 3a 49 73 43 6c 69 n false!=::IsCli
08b0: 70 62 6f 61 72 64 46 6f 72 6d 61 74 41 76 61 69 pboardFormatAvai
08c0: 6c 61 62 6c 65 28 75 46 6f 72 6d 61 74 29 3b 20 lable(uFormat);
08d0: 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 62 6f 6f 6c }....inline bool
08e0: 20 43 6c 69 70 62 6f 61 72 64 3a 3a 49 73 41 76 Clipboard::IsAv
08f0: 61 69 6c 28 20 55 49 4e 54 20 75 46 6f 72 6d 61 ail( UINT uForma
0900: 74 73 5b 5d 2c 20 69 6e 74 20 6e 75 6d 20 29 20 ts[], int num )
0910: 63 6f 6e 73 74 0d 0a 09 7b 20 72 65 74 75 72 6e const...{ return
0920: 20 2d 31 21 3d 3a 3a 47 65 74 50 72 69 6f 72 69 -1!=::GetPriori
0930: 74 79 43 6c 69 70 62 6f 61 72 64 46 6f 72 6d 61 tyClipboardForma
0940: 74 28 75 46 6f 72 6d 61 74 73 2c 6e 75 6d 29 3b t(uFormats,num);
0950: 20 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 55 49 4e }....inline UIN
0960: 54 20 43 6c 69 70 62 6f 61 72 64 3a 3a 52 65 67 T Clipboard::Reg
0970: 69 73 74 65 72 46 6f 72 6d 61 74 28 20 63 6f 6e isterFormat( con
0980: 73 74 20 54 43 48 41 52 2a 20 6e 61 6d 65 20 29 st TCHAR* name )
0990: 0d 0a 09 7b 20 72 65 74 75 72 6e 20 3a 3a 52 65 ...{ return ::Re
09a0: 67 69 73 74 65 72 43 6c 69 70 62 6f 61 72 64 46 gisterClipboardF
09b0: 6f 72 6d 61 74 28 6e 61 6d 65 29 3b 20 7d 0d 0a ormat(name); }..
09c0: 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d ......//========
09d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
09e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
09f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a10: 3d 0d 0a 2f 2f 40 7b 0d 0a 2f 2f 09 94 72 91 bc =..//@{..//..r..
0a20: 90 a7 8c e4 0d 0a 2f 2f 0d 0a 2f 2f 09 96 bc 91 ......//..//....
0a30: 4f 95 74 82 ab 4d 75 74 65 78 82 f0 88 b5 82 a2 O.t..Mutex......
0a40: 82 dc 82 b7 0d 0a 2f 2f 40 7d 0d 0a 2f 2f 3d 3d ......//@}..//==
0a50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0a90: 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 63 6c 61 73 73 =======....class
0aa0: 20 4d 75 74 65 78 20 3a 20 70 75 62 6c 69 63 20 Mutex : public
0ab0: 4f 62 6a 65 63 74 0d 0a 7b 0d 0a 70 75 62 6c 69 Object..{..publi
0ac0: 63 3a 0d 0a 09 4d 75 74 65 78 28 20 63 6f 6e 73 c:...Mutex( cons
0ad0: 74 20 54 43 48 41 52 2a 20 6e 61 6d 65 20 29 3b t TCHAR* name );
0ae0: 0d 0a 09 7e 4d 75 74 65 78 28 29 3b 0d 0a 0d 0a ...~Mutex();....
0af0: 70 72 69 76 61 74 65 3a 0d 0a 09 63 6f 6e 73 74 private:...const
0b00: 20 48 41 4e 44 4c 45 20 6d 74 78 5f 3b 0d 0a 0d HANDLE mtx_;...
0b10: 0a 70 72 69 76 61 74 65 3a 0d 0a 09 4e 4f 43 4f .private:...NOCO
0b20: 50 59 28 4d 75 74 65 78 29 3b 0d 0a 7d 3b 0d 0a PY(Mutex);..};..
0b30: 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d ......//--------
0b40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b80: 2d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 4d 75 74 65 -....inline Mute
0b90: 78 3a 3a 4d 75 74 65 78 28 20 63 6f 6e 73 74 20 x::Mutex( const
0ba0: 54 43 48 41 52 2a 20 6e 61 6d 65 20 29 0d 0a 09 TCHAR* name )...
0bb0: 3a 20 6d 74 78 5f 28 20 3a 3a 43 72 65 61 74 65 : mtx_( ::Create
0bc0: 4d 75 74 65 78 28 20 4e 55 4c 4c 2c 20 54 52 55 Mutex( NULL, TRU
0bd0: 45 2c 20 6e 61 6d 65 20 29 20 29 20 7b 7d 0d 0a E, name ) ) {}..
0be0: 0d 0a 69 6e 6c 69 6e 65 20 4d 75 74 65 78 3a 3a ..inline Mutex::
0bf0: 7e 4d 75 74 65 78 28 29 0d 0a 09 7b 20 69 66 28 ~Mutex()...{ if(
0c00: 20 6d 74 78 5f 20 21 3d 20 4e 55 4c 4c 20 29 20 mtx_ != NULL )
0c10: 3a 3a 52 65 6c 65 61 73 65 4d 75 74 65 78 28 20 ::ReleaseMutex(
0c20: 6d 74 78 5f 20 29 2c 20 3a 3a 43 6c 6f 73 65 48 mtx_ ), ::CloseH
0c30: 61 6e 64 6c 65 28 20 6d 74 78 5f 20 29 3b 20 7d andle( mtx_ ); }
0c40: 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d ........//======
0c50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c90: 3d 3d 3d 0d 0a 0d 0a 7d 20 20 20 20 20 20 2f 2f ===....} //
0ca0: 20 6e 61 6d 65 73 70 61 63 65 20 6b 69 0d 0a 23 namespace ki..#
0cb0: 65 6e 64 69 66 20 2f 2f 20 5f 4b 49 4c 49 42 5f endif // _KILIB_
0cc0: 57 49 4e 55 54 49 4c 5f 48 5f 0d 0a WINUTIL_H_..