Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 1 crueserv.asm 1 .386 2 locals 3 jumps 4 00000000 .model flat,STDCALL 5 6 include win32.inc 1 7 ;************************************************************************* 1 8 ; 1 9 ; WIN32.INC - Win32 assembly language structures & constants 1 10 ; 1 11 ; 1 12 ;************************************************************************* 1 13 ; 1 14 ; NOTE: this file only implements the structures and constants that 1 15 ; wap32.asm uses. You may extend it for your own applications. 1 16 ; 1 17 ;************************************************************************* 1 18 ; 1 19 ; 1 20 ; C/C++ Run Time Library - Version 6.0 1 21 ; 1 22 ; Copyright (c) 1985, 1993 by Borland International 1 23 ; All Rights Reserved. 1 24 ; 1 25 1 26 = db UCHAR EQU 1 27 = dw USHORT EQU ; used only if we really need 16 bits 1 28 = dd UINT EQU
; 32 bits for WIN32 1 29 = dd ULONG EQU
1 30 1 31 ;******************************************************************* 1 32 ; 1 33 ; Window's externals 1 34 ; 1 35 ;******************************************************************* 1 36 extrn BeginPaint:PROC 1 37 extrn BeginPath:PROC 1 38 extrn BitBlt:PROC 1 39 extrn CloseHandle:PROC 1 40 extrn CreateCompatibleBitmap:PROC 1 41 extrn CreateCompatibleDC:PROC 1 42 extrn CreatePen:PROC 1 43 extrn CreateSolidBrush:PROC 1 44 extrn CreateWindowExA:PROC 1 45 extrn CreateFileA:PROC 1 46 extrn DefWindowProcA:PROC 1 47 extrn DeleteDC:PROC 1 48 extrn DeleteObject:PROC 1 49 extrn DialogBoxParamA:PROC 1 50 extrn DispatchMessageA:PROC 1 51 extrn CreateEllipticRgn:PROC 1 52 extrn Ellipse:PROC 1 53 extrn EndDialog:PROC 1 54 extrn EndDoc:PROC 1 55 extrn EndPaint:PROC 1 56 extrn EndPage:PROC 1 57 extrn EndPath:PROC Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 2 crueserv.asm 1 58 extrn EnableWindow:PROC 1 59 extrn ExitProcess:PROC 1 60 extrn FillRect:PROC 1 61 extrn FindWindowA:PROC 1 62 extrn GetCurrentProcess:PROC 1 63 extrn GetDC:PROC 1 64 extrn GetDlgItem:PROC 1 65 extrn GetDlgItemTextA:PROC 1 66 extrn GetLastError:PROC 1 67 extrn GetLocalTime:PROC 1 68 extrn GetMessageA:PROC 1 69 extrn GetClientRect:PROC 1 70 extrn GetFileSize:PROC 1 71 extrn GetModuleHandleA:PROC 1 72 extrn GetOpenFileNameA:PROC 1 73 extrn GetSaveFileNameA:PROC 1 74 extrn GetStockObject:PROC 1 75 extrn GetSysColor:PROC 1 76 extrn GetSystemMetrics:PROC 1 77 extrn GetTextMetricsA:PROC 1 78 extrn GetTickCount:PROC 1 79 extrn GetVolumeInformationA:PROC 1 80 extrn GetWindowTextA:PROC 1 81 extrn GetWindowRect:PROC 1 82 extrn GlobalAlloc:PROC 1 83 extrn GlobalFree:PROC 1 84 extrn GlobalLock:PROC 1 85 extrn InitCommonControls:PROC 1 86 extrn InvalidateRect:PROC 1 87 extrn RegOpenKeyExA:PROC 1 88 extrn KillTimer:PROC 1 89 extrn LineTo:PROC 1 90 extrn LoadAcceleratorsA:PROC 1 91 extrn LoadCursorA:PROC 1 92 extrn LoadIconA:PROC 1 93 extrn LoadMenuA:PROC 1 94 extrn LoadStringA:PROC 1 95 extrn MessageBeep:PROC 1 96 extrn MessageBoxA:PROC 1 97 extrn MoveToEx:PROC 1 98 extrn MoveWindow:PROC 1 99 extrn OpenFile:PROC 1 100 extrn PostQuitMessage:PROC 1 101 extrn PrintDlgA:PROC 1 102 extrn ReadFile:PROC 1 103 extrn Rectangle:PROC 1 104 extrn RegisterClassA:PROC 1 105 extrn RegOpenKeyA:PROC 1 106 extrn RegQueryValueA:PROC 1 107 extrn RegQueryValueExA:PROC 1 108 extrn ReleaseDC:PROC 1 109 extrn SendDlgItemMessageA:PROC 1 110 extrn SendMessageA:PROC 1 111 extrn SelectObject:PROC 1 112 extrn SelectClipPath:PROC 1 113 extrn SetBkMode:PROC 1 114 extrn SetDlgItemTextA:PROC Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 3 crueserv.asm 1 115 extrn SetFilePointer:PROC 1 116 extrn SetFocus:PROC 1 117 extrn SetSysColors:PROC 1 118 extrn SetTextColor:PROC 1 119 extrn SetTimer:PROC 1 120 extrn SetWindowPos:PROC 1 121 extrn SetWindowTextA:PROC 1 122 extrn Sleep:PROC 1 123 extrn ShowWindow:PROC 1 124 extrn StartDocA:PROC 1 125 extrn StartPage:PROC 1 126 extrn TextOutA:PROC 1 127 extrn TranslateAcceleratorA:PROC 1 128 extrn TranslateMessage:PROC 1 129 extrn UpdateWindow:PROC 1 130 extrn WinHelpA:PROC 1 131 extrn WriteFile:PROC 1 132 extrn wvsprintfA:PROC 1 133 ;extrn LoadStringA:PROC 1 134 1 135 = CreateFileA CreateFile equ 1 136 = CreateWindowExA CreateWindowEx equ 1 137 = DefWindowProcA DefWindowProc equ 1 138 = DialogBoxParamA DialogBoxParam equ 1 139 = DispatchMessageA DispatchMessage equ 1 140 = FindWindowA FindWindow equ 1 141 = GetDlgItemTextA GetDlgItemText equ 1 142 = GetMessageA GetMessage equ 1 143 = GetModuleHandleA GetModuleHandle equ 1 144 = GetOpenFileNameA GetOpenFileName equ 1 145 = GetSaveFileNameA GetSaveFileName equ 1 146 = GetTextMetricsA GetTextMetrics equ 1 147 = LoadAcceleratorsA LoadAccelerators equ 1 148 = LoadCursorA LoadCursor equ 1 149 = LoadIconA LoadIcon equ 1 150 = LoadMenuA LoadMenu equ 1 151 = LoadStringA LoadString equ 1 152 = MessageBoxA MessageBox equ 1 153 = PrintDlgA PrintDlg equ 1 154 = RegisterClassA RegisterClass equ 1 155 = SendMessageA SendMessage equ 1 156 = StartDocA StartDoc equ 1 157 = TextOutA TextOut equ 1 158 = + TranslateAccelerator equ 159 TranslateAcceleratorA 1 160 = WinHelpA WinHelp equ 1 161 1 162 1 163 ; 1 164 ; Commands to pass to WinHelp() 1 165 ; 1 166 =0001 HELP_CONTEXT = 0001h 1 167 =0002 HELP_QUIT = 0002h 1 168 =0003 HELP_INDEX = 0003h 1 169 =0003 HELP_CONTENTS = 0003h 1 170 =0004 HELP_HELPONHELP = 0004h 1 171 =0005 HELP_SETINDEX = 0005h Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 4 crueserv.asm 1 172 =0005 HELP_SETCONTENTS = 0005h 1 173 =0008 HELP_CONTEXTPOPUP = 0008h 1 174 =0009 HELP_FORCEFILE = 0009h 1 175 =0101 HELP_KEY = 0101h 1 176 =0102 HELP_COMMAND = 0102h 1 177 =0105 HELP_PARTIALKEY = 0105h 1 178 =0201 HELP_MULTIKEY = 0201h 1 179 =0203 HELP_SETWINPOS = 0203h 1 180 =000A HELP_CONTEXTMENU = 000ah 1 181 =000B HELP_FINDER = 000bh 1 182 =000C HELP_WM_HELP = 000ch 1 183 =000D HELP_SETPOPUP_POS = 000dh 1 184 1 185 =8000 HELP_TCARD = 8000h 1 186 =0010 HELP_TCARD_DATA = 0010h 1 187 =0011 HELP_TCARD_OTHER_CALLER = 0011h 1 188 1 189 =6F18 IDH_NO_HELP = 28440 1 190 =6F19 IDH_MISSING_CONTEXT = 28441 1 191 =6F1A IDH_GENERIC_HELP_BUTTON = 28442 1 192 =6F1B IDH_OK = 28443 1 193 =6F1C IDH_CANCEL = 28444 1 194 =6F1D IDH_HELP = 28445 1 195 ; ========================= 1 196 ; ternary raster operations 1 197 ; ========================= 1 198 ; 1 199 =00CC0020 SRCCOPY equ 00CC0020h ;dest = src 1 200 =00EE0086 SRCPAINT equ 00EE0086h ;dest = src or dest 1 201 =008800C6 SRCAND equ 008800C6h ;dest = src and dest 1 202 =00660046 SRCINVERT equ 00660046h ;dest = src xor dest 1 203 =00440328 SRCERASE equ 00440328h ;dest = src and -dest 1 204 =00330008 NOTSRCCOPY equ 00330008h ;dest = -src 1 205 =001100A6 NOTSRCERASE equ 001100A6h ;dest = -src and -dest 1 206 =00C000CA MERGECOPY equ 00C000CAh ;dest = src and pat 1 207 =00BB0226 MERGEPAINT equ 00BB0226h ;dest = -src or dest 1 208 =00F00021 PATCOPY equ 00F00021h ;dest = pat 1 209 =00FB0A09 PATPAINT equ 00FB0A09h ;dest = DPSnoo 1 210 =005A0049 PATINVERT equ 005A0049h ;dest = pat xor dest 1 211 =00550009 DSTINVERT equ 00550009h ;dest = -dest 1 212 =0042 BLACKNESS equ 00000042h ;dest = black 1 213 =00FF0062 WHITENESS equ 00FF0062h ;dest = white 1 214 1 215 =0000 GMEM_FIXED equ 0h 1 216 =0002 GMEM_MOVEABLE equ 2h 1 217 =0010 GMEM_NOCOMPACT equ 10h 1 218 =0020 GMEM_NODISCARD equ 20h 1 219 =0040 GMEM_ZEROINIT equ 40h 1 220 =0080 GMEM_MODIFY equ 80h 1 221 =0100 GMEM_DISCARDABLE equ 100h 1 222 =1000 GMEM_NOT_BANKED equ 1000h 1 223 =2000 GMEM_SHARE equ 2000h 1 224 =2000 GMEM_DDESHARE equ 2000h 1 225 =4000 GMEM_NOTIFY equ 4000h 1 226 GMEM_LOWER equ GMEM_NOT_BANKED 1 227 =7F72 GMEM_VALID_FLAGS equ 7F72h 1 228 =8000 GMEM_INVALID_HANDLE equ 8000h Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 5 crueserv.asm 1 229 =4000 GMEM_DISCARDED equ 4000h 1 230 =00FF GMEM_LOCKCOUNT equ 0FFh 1 231 =0042 GHND equ GMEM_MOVEABLE OR GMEM_ZEROINIT 1 232 =0040 GPTR equ GMEM_FIXED OR GMEM_ZEROINIT 1 233 1 234 1 235 00000000 POINT struct 1 236 00000000 01*(00000000) x DWORD 0 ;x coordinate 1 237 00000004 01*(00000000) y DWORD 0 ;y coordinate 1 238 00000008 POINT ends 1 239 1 240 00000000 CHARFORMAT STRUCT 1 241 00000000 01*(????????) cbSize DWORD ? 1 242 00000004 01*(????????) dwMask DWORD ? 1 243 00000008 01*(????????) dwEffects DWORD ? 1 244 0000000C 01*(????????) yHeight DWORD ? 1 245 00000010 01*(????????) yOffset DWORD ? 1 246 00000014 01*(????????) crTextColor DWORD ? 1 247 00000018 01*(??) bCharSet BYTE ? 1 248 00000019 01*(??) bPitchAndFamily BYTE ? 1 249 0000001A 01*(??) szFaceName BYTE ? 1 250 0000001B CHARFORMAT ENDS 1 251 1 252 =0001 CREATE_NEW equ 1 1 253 =0002 CREATE_ALWAYS equ 2 1 254 =0003 OPEN_EXISTING equ 3 1 255 =0004 OPEN_ALWAYS equ 4 1 256 1 257 ;******************************************************************* 1 258 ; 1 259 ; OFSTRUCT 1 260 ; 1 261 ;******************************************************************* 1 262 =0000 OF_READ = 00000000h 1 263 =0001 OF_WRITE = 00000001h 1 264 =0002 OF_READWRITE = 00000002h 1 265 =0000 OF_SHARE_COMPAT = 00000000h 1 266 =0010 OF_SHARE_EXCLUSIVE = 00000010h 1 267 =0020 OF_SHARE_DENY_WRITE = 00000020h 1 268 =0030 OF_SHARE_DENY_READ = 00000030h 1 269 =0040 OF_SHARE_DENY_NONE = 00000040h 1 270 =0100 OF_PARSE = 00000100h 1 271 =0200 OF_DELETE = 00000200h 1 272 =0400 OF_VERIFY = 00000400h 1 273 =0800 OF_CANCEL = 00000800h 1 274 =1000 OF_CREATE = 00001000h 1 275 =2000 OF_PROMPT = 00002000h 1 276 =4000 OF_EXIST = 00004000h 1 277 =8000 OF_REOPEN = 00008000h 1 278 =0080 OFS_MAXPATHNAME = 128 1 279 1 280 00000000 OFSTRUCT struc 1 281 00000000 01*(??) cBytes UCHAR ? 1 282 00000001 01*(??) fFixedDisk UCHAR ? 1 283 00000002 01*(????) nErrCode USHORT ? 1 284 00000004 01*(????) Reserved1 USHORT ? 1 285 00000006 01*(????) Reserved2 USHORT ? Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 6 crueserv.asm 1 286 00000008 01*(80*(??)) szPathName db OFS_MAXPATHNAME dup(?) 1 287 00000088 OFSTRUCT ends 1 288 1 289 =0100 WSADESCRIPTION_LEN equ 256 1 290 =0080 WSASYS_STATUS_LEN equ 128 1 291 =0000 IPPROTO_IP equ 0 1 292 =0001 IPPROTO_ICMP equ 1 1 293 =0002 IPPROTO_GGP equ 2 1 294 =0006 IPPROTO_TCP equ 6 1 295 =000C IPPROTO_PUP equ 12 1 296 =0011 IPPROTO_UDP equ 17 1 297 =0016 IPPROTO_IDP equ 22 1 298 =004D IPPROTO_ND equ 77 1 299 =00FF IPPROTO_RAW equ 255 1 300 =0100 IPPROTO_MAX equ 256 1 301 =007F IOCPARM_MASK equ 7Fh 1 302 =20000000 IOC_VOID equ 20000000h 1 303 =40000000 IOC_OUT equ 40000000h 1 304 =80000000 IOC_IN equ 80000000h 1 305 =C0000000 IOC_INOUT equ IOC_IN OR IOC_OUT 1 306 =8004667E FIONBIO equ 8004667Eh 1 307 =8004667D FIONSYNC equ 8004667Dh 1 308 =4004667F FIONREAD equ 4004667Fh 1 309 =0007 IPPORT_ECHO equ 7 1 310 =0009 IPPORT_DISCARD equ 9 1 311 =000B IPPORT_SYSTAT equ 11 1 312 =000D IPPORT_DAYTIME equ 13 1 313 =000F IPPORT_NETSTAT equ 15 1 314 =0015 IPPORT_FTP equ 21 1 315 =0017 IPPORT_TELNET equ 23 1 316 =0019 IPPORT_SMTP equ 25 1 317 =0025 IPPORT_TIMESERVER equ 37 1 318 =002A IPPORT_NAMESERVER equ 42 1 319 =002B IPPORT_WHOIS equ 43 1 320 =0039 IPPORT_MTP equ 57 1 321 =0045 IPPORT_TFTP equ 69 1 322 =004D IPPORT_RJE equ 77 1 323 =004F IPPORT_FINGER equ 79 1 324 =0057 IPPORT_TTYLINK equ 87 1 325 =005F IPPORT_SUPDUP equ 95 1 326 =0200 IPPORT_EXECSERVER equ 512 1 327 =0201 IPPORT_LOGINSERVER equ 513 1 328 =0202 IPPORT_CMDSERVER equ 514 1 329 =0208 IPPORT_EFSSERVER equ 520 1 330 =0200 IPPORT_BIFFUDP equ 512 1 331 =0201 IPPORT_WHOSERVER equ 513 1 332 =0208 IPPORT_ROUTESERVER equ 520 1 333 =0400 IPPORT_RESERVED equ 1024 1 334 =009B IMPLINK_IP equ 155 1 335 =009C IMPLINK_LOWEXPER equ 156 1 336 =009E IMPLINK_HIGHEXPER equ 158 1 337 =FF000000 IN_CLASSA_NET equ 0FF000000h 1 338 =0018 IN_CLASSA_NSHIFT equ 24 1 339 =00FFFFFF IN_CLASSA_HOST equ 000FFFFFFh 1 340 =0080 IN_CLASSA_MAX equ 128 1 341 =FFFF0000 IN_CLASSB_NET equ 0FFFF0000h 1 342 =0010 IN_CLASSB_NSHIFT equ 16 Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 7 crueserv.asm 1 343 =FFFF IN_CLASSB_HOST equ 00000FFFFh 1 344 =00010000 IN_CLASSB_MAX equ 65536 1 345 =FFFFFF00 IN_CLASSC_NET equ 0FFFFFF00h 1 346 =0008 IN_CLASSC_NSHIFT equ 8 1 347 =00FF IN_CLASSC_HOST equ 0000000FFh 1 348 =0000 INADDR_ANY equ 000000000h 1 349 =7F000001 INADDR_LOOPBACK equ 07F000001h 1 350 =FFFFFFFF INADDR_BROADCAST equ 0FFFFFFFFh 1 351 =FFFFFFFF INADDR_NONE equ 0FFFFFFFFh 1 352 =0001 SOCK_STREAM equ 1 1 353 =0002 SOCK_DGRAM equ 2 1 354 =0003 SOCK_RAW equ 3 1 355 =0004 SOCK_RDM equ 4 1 356 =0005 SOCK_SEQPACKET equ 5 1 357 =0001 SO_DEBUG equ 00001h 1 358 =0002 SO_ACCEPTCONN equ 00002h 1 359 =0004 SO_REUSEADDR equ 00004h 1 360 =0008 SO_KEEPALIVE equ 00008h 1 361 =0010 SO_DONTROUTE equ 00010h 1 362 =0020 SO_BROADCAST equ 00020h 1 363 =0040 SO_USELOOPBACK equ 00040h 1 364 =0080 SO_LINGER equ 00080h 1 365 =0100 SO_OOBINLINE equ 00100h 1 366 =FFFF SOL_SOCKET equ 0FFFFh 1 367 =FFFFFF7F SO_DONTLINGER equ NOT SO_LINGER 1 368 =1001 SO_SNDBUF equ 01001h 1 369 =1002 SO_RCVBUF equ 01002h 1 370 =1003 SO_SNDLOWAT equ 01003h 1 371 =1004 SO_RCVLOWAT equ 01004h 1 372 =1005 SO_SNDTIMEO equ 01005h 1 373 =1006 SO_RCVTIMEO equ 01006h 1 374 =1007 SO_ERROR equ 01007h 1 375 =1008 SO_TYPE equ 01008h 1 376 =0001 TCP_NODELAY equ 00001h 1 377 =0000 AF_UNSPEC equ 0 1 378 =0001 AF_UNIX equ 1 1 379 =0002 AF_INET equ 2 1 380 =0003 AF_IMPLINK equ 3 1 381 =0004 AF_PUP equ 4 1 382 =0005 AF_CHAOS equ 5 1 383 =0006 AF_NS equ 6 1 384 =0006 AF_IPX equ 6 1 385 =0007 AF_ISO equ 7 1 386 AF_OSI equ AF_ISO 1 387 =0008 AF_ECMA equ 8 1 388 =0009 AF_DATAKIT equ 9 1 389 =000A AF_CCITT equ 10 1 390 =000B AF_SNA equ 11 1 391 =000C AF_DECnet equ 12 1 392 =000D AF_DLI equ 13 1 393 =000E AF_LAT equ 14 1 394 =000F AF_HYLINK equ 15 1 395 =0010 AF_APPLETALK equ 16 1 396 =0011 AF_NETBIOS equ 17 1 397 =0012 AF_MAX equ 18 1 398 PF_UNSPEC equ AF_UNSPEC 1 399 PF_UNIX equ AF_UNIX Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 8 crueserv.asm 1 400 PF_INET equ AF_INET 1 401 PF_IMPLINK equ AF_IMPLINK 1 402 PF_PUP equ AF_PUP 1 403 PF_CHAOS equ AF_CHAOS 1 404 PF_NS equ AF_NS 1 405 PF_IPX equ AF_IPX 1 406 PF_ISO equ AF_ISO 1 407 PF_OSI equ AF_OSI 1 408 PF_ECMA equ AF_ECMA 1 409 PF_DATAKIT equ AF_DATAKIT 1 410 PF_CCITT equ AF_CCITT 1 411 PF_SNA equ AF_SNA 1 412 PF_DECnet equ AF_DECnet 1 413 PF_DLI equ AF_DLI 1 414 PF_LAT equ AF_LAT 1 415 PF_HYLINK equ AF_HYLINK 1 416 PF_APPLETALK equ AF_APPLETALK 1 417 PF_MAX equ AF_MAX 1 418 =0005 SOMAXCONN equ 5 1 419 =0001 MSG_OOB equ 01h 1 420 =0002 MSG_PEEK equ 02h 1 421 =0004 MSG_DONTROUTE equ 04h 1 422 =0010 MSG_MAXIOVLEN equ 16 1 423 =0400 MAXGETHOSTSTRUCT equ 1024 1 424 =0001 FD_READ equ 001h 1 425 =0002 FD_WRITE equ 002h 1 426 =0004 FD_OOB equ 004h 1 427 =0008 FD_ACCEPT equ 008h 1 428 =0010 FD_CONNECT equ 010h 1 429 =0020 FD_CLOSE equ 020h 1 430 =2710 WSABASEERR equ 10000 1 431 =2714 WSAEINTR equ WSABASEERR+4 1 432 =2719 WSAEBADF equ WSABASEERR+9 1 433 =271D WSAEACCES equ WSABASEERR+13 1 434 =271E WSAEFAULT equ WSABASEERR+14 1 435 =2726 WSAEINVAL equ WSABASEERR+22 1 436 =2728 WSAEMFILE equ WSABASEERR+24 1 437 =2733 WSAEWOULDBLOCK equ WSABASEERR + 35 1 438 =2734 WSAEINPROGRESS equ WSABASEERR + 36 1 439 =2735 WSAEALREADY equ WSABASEERR + 37 1 440 =2736 WSAENOTSOCK equ WSABASEERR + 38 1 441 =2737 WSAEDESTADDRREQ equ WSABASEERR + 39 1 442 =2738 WSAEMSGSIZE equ WSABASEERR + 40 1 443 =2739 WSAEPROTOTYPE equ WSABASEERR + 41 1 444 =273A WSAENOPROTOOPT equ WSABASEERR + 42 1 445 =273B WSAEPROTONOSUPPORT equ WSABASEERR + 43 1 446 =273C WSAESOCKTNOSUPPORT equ WSABASEERR + 44 1 447 =273D WSAEOPNOTSUPP equ WSABASEERR + 45 1 448 =273E WSAEPFNOSUPPORT equ WSABASEERR + 46 1 449 =273F WSAEAFNOSUPPORT equ WSABASEERR + 47 1 450 =2740 WSAEADDRINUSE equ WSABASEERR + 48 1 451 =2741 WSAEADDRNOTAVAIL equ WSABASEERR + 49 1 452 =2742 WSAENETDOWN equ WSABASEERR + 50 1 453 =2743 WSAENETUNREACH equ WSABASEERR + 51 1 454 =2744 WSAENETRESET equ WSABASEERR + 52 1 455 =2745 WSAECONNABORTED equ WSABASEERR + 53 1 456 =2746 WSAECONNRESET equ WSABASEERR + 54 Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 9 crueserv.asm 1 457 =2747 WSAENOBUFS equ WSABASEERR + 55 1 458 =2748 WSAEISCONN equ WSABASEERR + 56 1 459 =2749 WSAENOTCONN equ WSABASEERR + 57 1 460 =274A WSAESHUTDOWN equ WSABASEERR + 58 1 461 =274B WSAETOOMANYREFS equ WSABASEERR + 59 1 462 =274C WSAETIMEDOUT equ WSABASEERR + 60 1 463 =274D WSAECONNREFUSED equ WSABASEERR + 61 1 464 =274E WSAELOOP equ WSABASEERR + 62 1 465 =274F WSAENAMETOOLONG equ WSABASEERR + 63 1 466 =2750 WSAEHOSTDOWN equ WSABASEERR + 64 1 467 =2751 WSAEHOSTUNREACH equ WSABASEERR + 65 1 468 =2752 WSAENOTEMPTY equ WSABASEERR + 66 1 469 =2753 WSAEPROCLIM equ WSABASEERR + 67 1 470 =2754 WSAEUSERS equ WSABASEERR + 68 1 471 =2755 WSAEDQUOT equ WSABASEERR + 69 1 472 =2756 WSAESTALE equ WSABASEERR + 70 1 473 =2757 WSAEREMOTE equ WSABASEERR + 71 1 474 =276B WSASYSNOTREADY equ WSABASEERR+91 1 475 =276C WSAVERNOTSUPPORTED equ WSABASEERR+92 1 476 =276D WSANOTINITIALISED equ WSABASEERR+93 1 477 =2AF9 WSAHOST_NOT_FOUND equ WSABASEERR + 1001 1 478 HOST_NOT_FOUND equ WSAHOST_NOT_FOUND 1 479 =2AFA WSATRY_AGAIN equ WSABASEERR + 1002 1 480 TRY_AGAIN equ WSATRY_AGAIN 1 481 =2AFB WSANO_RECOVERY equ WSABASEERR + 1003 1 482 NO_RECOVERY equ WSANO_RECOVERY 1 483 =2AFC WSANO_DATA equ WSABASEERR + 1004 1 484 NO_DATA equ WSANO_DATA 1 485 WSANO_ADDRESS equ WSANO_DATA 1 486 NO_ADDRESS equ WSANO_ADDRESS 1 487 EWOULDBLOCK equ WSAEWOULDBLOCK 1 488 EINPROGRESS equ WSAEINPROGRESS 1 489 EALREADY equ WSAEALREADY 1 490 ENOTSOCK equ WSAENOTSOCK 1 491 EDESTADDRREQ equ WSAEDESTADDRREQ 1 492 EMSGSIZE equ WSAEMSGSIZE 1 493 EPROTOTYPE equ WSAEPROTOTYPE 1 494 ENOPROTOOPT equ WSAENOPROTOOPT 1 495 EPROTONOSUPPORT equ WSAEPROTONOSUPPORT 1 496 ESOCKTNOSUPPORT equ WSAESOCKTNOSUPPORT 1 497 EOPNOTSUPP equ WSAEOPNOTSUPP 1 498 EPFNOSUPPORT equ WSAEPFNOSUPPORT 1 499 EAFNOSUPPORT equ WSAEAFNOSUPPORT 1 500 EADDRINUSE equ WSAEADDRINUSE 1 501 EADDRNOTAVAIL equ WSAEADDRNOTAVAIL 1 502 ENETDOWN equ WSAENETDOWN 1 503 ENETUNREACH equ WSAENETUNREACH 1 504 ENETRESET equ WSAENETRESET 1 505 ECONNABORTED equ WSAECONNABORTED 1 506 ECONNRESET equ WSAECONNRESET 1 507 ENOBUFS equ WSAENOBUFS 1 508 EISCONN equ WSAEISCONN 1 509 ENOTCONN equ WSAENOTCONN 1 510 ESHUTDOWN equ WSAESHUTDOWN 1 511 ETOOMANYREFS equ WSAETOOMANYREFS 1 512 ETIMEDOUT equ WSAETIMEDOUT 1 513 ECONNREFUSED equ WSAECONNREFUSED Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 10 crueserv.asm 1 514 ELOOP equ WSAELOOP 1 515 ENAMETOOLONG equ WSAENAMETOOLONG 1 516 EHOSTDOWN equ WSAEHOSTDOWN 1 517 EHOSTUNREACH equ WSAEHOSTUNREACH 1 518 ENOTEMPTY equ WSAENOTEMPTY 1 519 EPROCLIM equ WSAEPROCLIM 1 520 EUSERS equ WSAEUSERS 1 521 EDQUOT equ WSAEDQUOT 1 522 ESTALE equ WSAESTALE 1 523 EREMOTE equ WSAEREMOTE 1 524 =0040 FD_SETSIZE equ 64 1 525 =FFFFFFFF INVALID_SOCKET equ NOT 0 1 526 =-0001 SOCKET_ERROR equ -1 1 527 =0200 SOCKET_BUFFER_SIZE equ 512 1 528 =0000 ICMP_ECHOREPLY equ 0 1 529 =0008 ICMP_ECHOREQ equ 8 1 530 ; ------------------------ wsock32 structures ----------------------------- 1 531 1 532 00000000 fd_setstruc STRUCT 1 533 00000000 01*(????????) fd_count DWORD ? 1 534 00000004 01*(????????) fd_array DWORD ? 1 535 00000008 fd_setstruc ENDS 1 536 1 537 00000000 timeval STRUCT 1 538 00000000 01*(????????) tv_sec DWORD ? 1 539 00000004 01*(????????) tv_usec DWORD ? 1 540 00000008 timeval ENDS 1 541 1 542 00000000 sockaddr_in STRUCT 1 543 00000000 01*(????) sin_family WORD ? 1 544 00000002 01*(????) sin_port WORD ? 1 545 00000004 01*(????????) sin_addr DWORD ? 1 546 00000008 01*(08*(00)) sin_zero BYTE 8 dup (0) 1 547 00000010 sockaddr_in ENDS 1 548 1 549 00000000 sockaddr STRUCT 1 550 00000000 01*(????) sa_family WORD ? 1 551 00000002 01*(????) sa_data WORD ? 1 552 00000004 sockaddr ENDS 1 553 1 554 00000000 WSAdata STRUCT 1 555 00000000 01*(????) wVersion WORD ? 1 556 00000002 01*(????) wHighVersion WORD ? 1 557 00000004 01*(0101*(??)) szDescription BYTE WSADESCRIPTION_LEN + 1 dup (?) 1 558 00000105 01*(81*(??)) szSystemStatus BYTE WSASYS_STATUS_LEN + 1 dup (?) 1 559 00000186 01*(????) iMaxSockets WORD ? 1 560 00000188 01*(????) iMaxUdpDg WORD ? 1 561 0000018A 01*(????????) lpVendorInfo DWORD ? 1 562 0000018E WSAdata ENDS 1 563 1 564 00000000 sockproto STRUCT 1 565 00000000 01*(????) sp_family WORD ? 1 566 00000002 01*(????) sp_protocol WORD ? 1 567 00000004 sockproto ENDS 1 568 1 569 00000000 linger STRUCT 1 570 00000000 01*(????) l_onoff WORD ? Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 11 crueserv.asm 1 571 00000002 01*(????) l_linger WORD ? 1 572 00000004 linger ENDS 1 573 1 574 00000000 hostentStru STRUCT 1 575 00000000 01*(????????) h_name DWORD ? 1 576 00000004 01*(????????) h_alias DWORD ? 1 577 00000008 01*(????) h_addr WORD ? 1 578 0000000A 01*(????) h_len WORD ? 1 579 0000000C 01*(????????) h_list DWORD ? 1 580 00000010 hostentStru ENDS 1 581 1 582 00000000 netent STRUCT 1 583 00000000 01*(????????) n_name DWORD ? 1 584 00000004 01*(????????) n_aliases DWORD ? 1 585 00000008 01*(????) n_addrtype WORD ? 1 586 0000000A 01*(????????) n_net DWORD ? 1 587 0000000E netent ENDS 1 588 1 589 00000000 servent STRUCT 1 590 00000000 01*(????????) s_name DWORD ? 1 591 00000004 01*(????????) s_aliases DWORD ? 1 592 00000008 01*(????) s_port WORD ? 1 593 0000000A 01*(????????) s_proto DWORD ? 1 594 0000000E servent ENDS 1 595 1 596 00000000 icmp_hdr STRUCT 1 597 00000000 01*(??) icmp_type BYTE ? 1 598 00000001 01*(??) icmp_code BYTE ? 1 599 00000002 01*(????) icmp_cksum WORD ? 1 600 00000004 01*(????) icmp_id WORD ? 1 601 00000006 01*(????) icmp_seq WORD ? 1 602 00000008 01*(??) icmp_data BYTE ? 1 603 00000009 icmp_hdr ENDS 1 604 1 605 00000000 ip_hdr STRUCT 1 606 00000000 01*(??) ip_hlv BYTE ? 1 607 00000001 01*(??) ip_tos BYTE ? 1 608 00000002 01*(????) ip_len WORD ? 1 609 00000004 01*(????) ip_id WORD ? 1 610 00000006 01*(????) ip_off WORD ? 1 611 00000008 01*(??) ip_ttl BYTE ? 1 612 00000009 01*(??) ip_p BYTE ? 1 613 0000000A 01*(????) ip_cksum WORD ? 1 614 0000000C 01*(????????) ip_src DWORD ? 1 615 00000010 01*(????????) ip_dest DWORD ? 1 616 00000014 ip_hdr ENDS 1 617 1 618 00000000 ICMP_OPTIONS STRUCT 1 619 00000000 01*(??) Ttl BYTE ? 1 620 00000001 01*(??) Tos BYTE ? 1 621 00000002 01*(??) Flags BYTE ? 1 622 00000003 01*(??) OptionsSize BYTE ? 1 623 00000004 01*(????????) OptionsData DWORD ? 1 624 00000008 ICMP_OPTIONS ENDS 1 625 1 626 00000000 ICMP_ECHO_REPLY STRUCT 1 627 00000000 01*(????????) Address DWORD ? Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 12 crueserv.asm 1 628 00000004 01*(????????) Status DWORD ? 1 629 00000008 01*(????????) RoundTripTime DWORD ? 1 630 0000000C 01*(????) DataSize WORD ? 1 631 0000000E 01*(????) Reserved WORD ? 1 632 00000010 01*(????????) DataPointer DWORD ? 1 633 00000014 01*(????????) Options DWORD ? 1 634 00000018 01*(FA*(??)) zData BYTE 250 dup (?) 1 635 00000112 ICMP_ECHO_REPLY ENDS 1 636 1 637 =0001 OFN_READONLY = 00000001h 1 638 =0002 OFN_OVERWRITEPROMPT = 00000002h 1 639 =0004 OFN_HIDEREADONLY = 00000004h 1 640 =0008 OFN_NOCHANGEDIR = 00000008h 1 641 =0010 OFN_SHOWHELP = 00000010h 1 642 =0020 OFN_ENABLEHOOK = 00000020h 1 643 =0040 OFN_ENABLETEMPLATE = 00000040h 1 644 =0080 OFN_ENABLETEMPLATEHANDLE = 00000080h 1 645 =0100 OFN_NOVALIDATE = 00000100h 1 646 =0200 OFN_ALLOWMULTISELECT = 00000200h 1 647 =0400 OFN_EXTENSIONDIFFERENT = 00000400h 1 648 =0800 OFN_PATHMUSTEXIST = 00000800h 1 649 =1000 OFN_FILEMUSTEXIST = 00001000h 1 650 =2000 OFN_CREATEPROMPT = 00002000h 1 651 =4000 OFN_SHAREAWARE = 00004000h 1 652 =8000 OFN_NOREADONLYRETURN = 00008000h 1 653 =00010000 OFN_NOTESTFILECREATE = 00010000h 1 654 =00020000 OFN_NONETWORKBUTTON = 00020000h 1 655 =00040000 OFN_NOLONGNAMES = 00040000h 1 656 =00080000 OFN_EXPLORER = 00080000h 1 657 =00100000 OFN_NODEREFERENCELINKS = 00100000h 1 658 =00200000 OFN_LONGNAMES = 00200000h 1 659 =0002 OFN_SHAREFALLTHROUGH = 2 1 660 =0001 OFN_SHARENOWARN = 1 1 661 =0000 OFN_SHAREWARN = 0 1 662 1 663 ; ================== 1 664 ; combo box messages 1 665 ; ================== 1 666 ; 1 667 =0140 CB_GETEDITSEL equ 0140h 1 668 =0141 CB_LIMITTEXT equ 0141h 1 669 =0142 CB_SETEDITSEL equ 0142h 1 670 =0143 CB_ADDSTRING equ 0143h 1 671 =0144 CB_DELETESTRING equ 0144h 1 672 =0145 CB_DIR equ 0145h 1 673 =0146 CB_GETCOUNT equ 0146h 1 674 =0147 CB_GETCURSEL equ 0147h 1 675 =0148 CB_GETLBTEXT equ 0148h 1 676 =0149 CB_GETLBTEXTLEN equ 0149h 1 677 =014A CB_INSERTSTRING equ 014Ah 1 678 =014B CB_RESETCONTENT equ 014Bh 1 679 =014C CB_FINDSTRING equ 014Ch 1 680 =014D CB_SELECTSTRING equ 014Dh 1 681 =014E CB_SETCURSEL equ 014Eh 1 682 =014F CB_SHOWDROPDOWN equ 014Fh 1 683 =0150 CB_GETITEMDATA equ 0150h 1 684 =0151 CB_SETITEMDATA equ 0151h Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 13 crueserv.asm 1 685 =0152 CB_GETDROPPEDCONTROLRECT equ 0152h 1 686 =0153 CB_SETITEMHEIGHT equ 0153h 1 687 =0154 CB_GETITEMHEIGHT equ 0154h 1 688 =0155 CB_SETEXTENDEDUI equ 0155h 1 689 =0156 CB_GETEXTENDEDUI equ 0156h 1 690 =0157 CB_GETDROPPEDSTATE equ 0157h 1 691 =0158 CB_FINDSTRINGEXACT equ 0158h 1 692 =0159 CB_SETLOCALE equ 0159h 1 693 =015A CB_GETLOCALE equ 015Ah 1 694 =015B CB_GETTOPINDEX equ 015Bh 1 695 =015C CB_SETTOPINDEX equ 015Ch 1 696 =015D CB_GETHORIZONTALEXTENT equ 015Dh 1 697 =015E CB_SETHORIZONTALEXTENT equ 015Eh 1 698 =015F CB_GETDROPPEDWIDTH equ 015Fh 1 699 =0160 CB_SETDROPPEDWIDTH equ 0160h 1 700 =0161 CB_INITSTORAGE equ 0161h 1 701 =0162 CB_MSGMAX equ 0162h 1 702 ; 1 703 ;------------------------------------------------------------------------------ 1 704 ; 1 705 ; ======================= 1 706 ; combo box return values 1 707 ; ======================= 1 708 ; 1 709 =0000 CB_OKAY equ 0 1 710 =-0001 CB_ERR equ -1 1 711 =-0002 CB_ERRSPACE equ -2 1 712 1 713 =-0001 CBN_ERRSPACE equ -1 1 714 =0001 CBN_SELCHANGE equ 1 1 715 =0002 CBN_DBLCLK equ 2 1 716 =0003 CBN_SETFOCUS equ 3 1 717 =0004 CBN_KILLFOCUS equ 4 1 718 =0005 CBN_EDITCHANGE equ 5 1 719 =0006 CBN_EDITUPDATE equ 6 1 720 =0007 CBN_DROPDOWN equ 7 1 721 =0008 CBN_CLOSEUP equ 8 1 722 =0009 CBN_SELENDOK equ 9 1 723 =000A CBN_SELENDCANCEL equ 10 1 724 1 725 1 726 ;******************************************************************* 1 727 ; 1 728 ; PRINTDLG 1 729 ; 1 730 ;******************************************************************* 1 731 00000000 PRINTDLG struc 1 732 00000000 01*(????????) pdlStructSize ULONG ? 1 733 00000004 01*(????????) pdhwndOwner ULONG ? 1 734 00000008 01*(????????) pdhDevMode ULONG ? 1 735 0000000C 01*(????????) pdhDevNames ULONG ? 1 736 00000010 01*(????????) pdhDC ULONG ? 1 737 00000014 01*(????????) pdFlags ULONG ? 1 738 00000018 01*(????) pdnFromPage USHORT ? 1 739 0000001A 01*(????) pdnToPage USHORT ? 1 740 0000001C 01*(????) pdnMinPage USHORT ? 1 741 0000001E 01*(????) pdnMaxPage USHORT ? Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 14 crueserv.asm 1 742 00000020 01*(????) pdnCopies USHORT ? 1 743 00000022 01*(????????) pdhInstance ULONG ? 1 744 00000026 01*(????????) pdlCustData ULONG ? 1 745 0000002A 01*(????????) pdlpfnPrintHook ULONG ? 1 746 0000002E 01*(????????) pdlpfnSetupHook ULONG ? 1 747 00000032 01*(????????) pdlpPrintTemplateName ULONG ? 1 748 00000036 01*(????????) pdlpSetupTemplateName ULONG ? 1 749 0000003A 01*(????????) pdhPrintTemplate ULONG ? 1 750 0000003E 01*(????????) pdhSetupTemplate ULONG ? 1 751 00000042 PRINTDLG ends 1 752 1 753 =0000 PD_ALLPAGES = 00000000h 1 754 =0001 PD_SELECTION = 00000001h 1 755 =0002 PD_PAGENUMS = 00000002h 1 756 =0004 PD_NOSELECTION = 00000004h 1 757 =0008 PD_NOPAGENUMS = 00000008h 1 758 =0010 PD_COLLATE = 00000010h 1 759 =0020 PD_PRINTTOFILE = 00000020h 1 760 =0040 PD_PRINTSETUP = 00000040h 1 761 =0080 PD_NOWARNING = 00000080h 1 762 =0100 PD_RETURNDC = 00000100h 1 763 =0200 PD_RETURNIC = 00000200h 1 764 =0400 PD_RETURNDEFAULT = 00000400h 1 765 =0800 PD_SHOWHELP = 00000800h 1 766 =1000 PD_ENABLEPRINTHOOK = 00001000h 1 767 =2000 PD_ENABLESETUPHOOK = 00002000h 1 768 =4000 PD_ENABLEPRINTTEMPLATE = 00004000h 1 769 =8000 PD_ENABLESETUPTEMPLATE = 00008000h 1 770 =00010000 PD_ENABLEPRINTTEMPLATEHANDLE = 00010000h 1 771 =00020000 PD_ENABLESETUPTEMPLATEHANDLE = 00020000h 1 772 =00040000 PD_USEDEVMODECOPIES = 00040000h 1 773 =00040000 PD_USEDEVMODECOPIESANDCOLLATE = 00040000h 1 774 =00080000 PD_DISABLEPRINTTOFILE = 00080000h 1 775 =00100000 PD_HIDEPRINTTOFILE = 00100000h 1 776 =00200000 PD_NONETWORKBUTTON = 00200000h 1 777 1 778 00000000 DOCINFO struc 1 779 00000000 01*(????????) cbSize UINT ? 1 780 00000004 01*(????????) lpszDocName ULONG ? 1 781 00000008 01*(????????) lpszOutput ULONG ? 1 782 0000000C 01*(????????) lpszDatatype ULONG ? 1 783 00000010 01*(????????) fwType ULONG ? 1 784 00000014 DOCINFO ends 1 785 1 786 1 787 ;******************************************************************* 1 788 ; 1 789 ; SYSTEMTIME 1 790 ; 1 791 ;******************************************************************* 1 792 00000000 SYSTEMTIME struc 1 793 00000000 01*(????) wYear USHORT ? 1 794 00000002 01*(????) wMonth USHORT ? 1 795 00000004 01*(????) wDayOfWeek USHORT ? 1 796 00000006 01*(????) wDay USHORT ? 1 797 00000008 01*(????) wHour USHORT ? 1 798 0000000A 01*(????) wMinute USHORT ? Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 15 crueserv.asm 1 799 0000000C 01*(????) wSecond USHORT ? 1 800 0000000E 01*(????) wMilliseconds USHORT ? 1 801 00000010 SYSTEMTIME ends 1 802 ;******************************************************************* 1 803 ; 1 804 ; TBBUTTON 1 805 ; 1 806 ;******************************************************************* 1 807 00000000 TBBUTTON struc 1 808 00000000 01*(????????) iBitmap UINT ? 1 809 00000004 01*(????????) idCommand UINT ? 1 810 00000008 01*(??) fsState UCHAR ? 1 811 00000009 01*(??) fsStyle UCHAR ? 1 812 0000000A 01*(02*(??)) bReserved db 2 dup(?) 1 813 0000000C 01*(????????) dwData ULONG ? 1 814 00000010 01*(????????) iString UINT ? 1 815 00000014 TBBUTTON ends 1 816 1 817 =0000 STD_CUT = 0 1 818 =0001 STD_COPY = 1 1 819 =0002 STD_PASTE = 2 1 820 =0003 STD_UNDO = 3 1 821 =0004 STD_REDOW = 4 1 822 =0005 STD_DELETE = 5 1 823 =0006 STD_FILENEW = 6 1 824 =0007 STD_FILEOPEN = 7 1 825 =0008 STD_FILESAVE = 8 1 826 =0009 STD_PRINTPRE = 9 1 827 =000A STD_PROPERTIES = 10 1 828 =000B STD_HELP = 11 1 829 =000C STD_FIND = 12 1 830 =000D STD_REPLACE = 13 1 831 =000E STD_PRINT = 14 1 832 1 833 =0001 TBSTATE_CHECKED = 01h 1 834 =0002 TBSTATE_PRESSED = 02h 1 835 =0004 TBSTATE_ENABLED = 04h 1 836 =0008 TBSTATE_HIDDEN = 08h 1 837 =0010 TBSTATE_INDETERMINATE = 10h 1 838 =0020 TBSTATE_WRAP = 20h 1 839 1 840 =0000 TBSTYLE_BUTTON = 00h 1 841 =0001 TBSTYLE_SEP = 01h 1 842 =0002 TBSTYLE_CHECK = 02h 1 843 =0004 TBSTYLE_GROUP = 04h 1 844 =0006 TBSTYLE_CHECKGROUP = TBSTYLE_GROUP+TBSTYLE_CHECK 1 845 1 846 =0100 TBSTYLE_TOOLTIPS = 0100h 1 847 =0200 TBSTYLE_WRAPABLE = 0200h 1 848 =0400 TBSTYLE_ALTDRAG = 0400h 1 849 1 850 =0401 TB_ENABLEBUTTON = (WM_USER + 1) 1 851 =0402 TB_CHECKBUTTON = (WM_USER + 2) 1 852 =0403 TB_PRESSBUTTON = (WM_USER + 3) 1 853 =0404 TB_HIDEBUTTON = (WM_USER + 4) 1 854 =0405 TB_INDETERMINATE = (WM_USER + 5) 1 855 =0409 TB_ISBUTTONENABLED = (WM_USER + 9) Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 16 crueserv.asm 1 856 =040A TB_ISBUTTONCHECKED = (WM_USER + 10) 1 857 =040B TB_ISBUTTONPRESSED = (WM_USER + 11) 1 858 =040C TB_ISBUTTONHIDDEN = (WM_USER + 12) 1 859 =040D TB_ISBUTTONINDETERMINATE = (WM_USER + 13) 1 860 =0411 TB_SETSTATE = (WM_USER + 17) 1 861 =0412 TB_GETSTATE = (WM_USER + 18) 1 862 =0413 TB_ADDBITMAP = (WM_USER + 19) 1 863 =041A TB_SAVERESTOREA = (WM_USER + 26) 1 864 =044C TB_SAVERESTOREW = (WM_USER + 76) 1 865 =041B TB_CUSTOMIZE = (WM_USER + 27) 1 866 =041C TB_ADDSTRINGA = (WM_USER + 28) 1 867 =044D TB_ADDSTRINGW = (WM_USER + 77) 1 868 =041D TB_GETITEMRECT = (WM_USER + 29) 1 869 =041E TB_BUTTONSTRUCTSIZE = (WM_USER + 30) 1 870 =041F TB_SETBUTTONSIZE = (WM_USER + 31) 1 871 =0420 TB_SETBITMAPSIZE = (WM_USER + 32) 1 872 =0421 TB_AUTOSIZE = (WM_USER + 33) 1 873 =0423 TB_GETTOOLTIPS = (WM_USER + 35) 1 874 =0424 TB_SETTOOLTIPS = (WM_USER + 36) 1 875 =0425 TB_SETPARENT = (WM_USER + 37) 1 876 =0427 TB_SETROWS = (WM_USER + 39) 1 877 =0428 TB_GETROWS = (WM_USER + 40) 1 878 =042A TB_SETCMDID = (WM_USER + 42) 1 879 =042B TB_CHANGEBITMAP = (WM_USER + 43) 1 880 =042C TB_GETBITMAP = (WM_USER + 44) 1 881 =042D TB_GETBUTTONTEXTA = (WM_USER + 45) 1 882 =044B TB_GETBUTTONTEXTW = (WM_USER + 75) 1 883 =042E TB_REPLACEBITMAP = (WM_USER + 46) 1 884 1 885 ;====== COMMON CONTROL STYLES ===== 1 886 1 887 =0001 CCS_TOP = 00000001h 1 888 =0002 CCS_NOMOVEY = 00000002h 1 889 =0003 CCS_BOTTOM = 00000003h 1 890 =0004 CCS_NORESIZE = 00000004h 1 891 =0008 CCS_NOPARENTALIGN = 00000008h 1 892 =0020 CCS_ADJUSTABLE = 00000020h 1 893 =0040 CCS_NODIVIDER = 00000040h 1 894 1 895 ;******************************************************************* 1 896 ; 1 897 ; NMHDR 1 898 ; 1 899 ;******************************************************************* 1 900 00000000 NMHDR struc 1 901 00000000 01*(????????) hwndFrom UINT ? 1 902 00000004 01*(????????) idFrom UINT ? 1 903 00000008 01*(????????) code UINT ? 1 904 0000000C NMHDR ends 1 905 1 906 ;******************************************************************* 1 907 ; 1 908 ; TOOLTIPTEXT 1 909 ; 1 910 ;******************************************************************* 1 911 00000000 TOOLTIPTEXT struc 1 912 00000000 01*(0C*(??)) hdr NMHDR Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 17 crueserv.asm 1 913 0000000C 01*(????????) lpszText ULONG ? 1 914 00000010 01*(50*(??)) szText db 80 dup(?) 1 915 00000060 01*(????????) hinst ULONG ? 1 916 00000064 01*(????????) uFlags UINT ? 1 917 00000068 TOOLTIPTEXT ends 1 918 1 919 =FFFFFDF8 TTN_NEEDTEXT equ 0FFFFFDF8h 1 920 ;******************************************************************* 1 921 ; 1 922 ; TEXTMETRIC 1 923 ; 1 924 ;******************************************************************* 1 925 00000000 TEXTMETRIC struc 1 926 00000000 01*(????????) tmHeight ULONG ? 1 927 00000004 01*(????????) tmAscent ULONG ? 1 928 00000008 01*(????????) tmDescent ULONG ? 1 929 0000000C 01*(????????) tmInternalLeading ULONG ? 1 930 00000010 01*(????????) tmExternalLeading ULONG ? 1 931 00000014 01*(????????) tmAveCharWidth ULONG ? 1 932 00000018 01*(????????) tmMaxCharWidth ULONG ? 1 933 0000001C 01*(????????) tmWeight ULONG ? 1 934 00000020 01*(????????) tmOverhang ULONG ? 1 935 00000024 01*(????????) tmDigitizedAspectX ULONG ? 1 936 00000028 01*(????????) tmDigitizedAspectY ULONG ? 1 937 0000002C 01*(??) tmFirstChar UCHAR ? 1 938 0000002D 01*(??) tmLastChar UCHAR ? 1 939 0000002E 01*(??) tmDefaultChar UCHAR ? 1 940 0000002F 01*(??) tmBreakChar UCHAR ? 1 941 00000030 01*(??) tmItalic UCHAR ? 1 942 00000031 01*(??) tmUnderlined UCHAR ? 1 943 00000032 01*(??) tmStruckOut UCHAR ? 1 944 00000033 01*(??) tmPitchAndFamily UCHAR ? 1 945 00000034 01*(??) tmCharSet UCHAR ? 1 946 00000035 TEXTMETRIC ends 1 947 ;******************************************************************* 1 948 ; 1 949 ; Rectangle 1 950 ; 1 951 ;******************************************************************* 1 952 1 953 00000000 RECT struc 1 954 00000000 01*(????????) left UINT ? 1 955 00000004 01*(????????) top UINT ? 1 956 00000008 01*(????????) right UINT ? 1 957 0000000C 01*(????????) bottom UINT ? 1 958 00000010 RECT ends 1 959 1 960 ;******************************************************************* 1 961 ; 1 962 ; Window Class structure 1 963 ; 1 964 ;******************************************************************* 1 965 1 966 00000000 WNDCLASS struc 1 967 00000000 01*(????????) clsStyle UINT ? 1 968 00000004 01*(????????) clsLpfnWndProc ULONG ? 1 969 00000008 01*(????????) clsCbClsExtra UINT ? Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 18 crueserv.asm 1 970 0000000C 01*(????????) clsCbWndExtra UINT ? 1 971 00000010 01*(????????) clsHInstance UINT ? 1 972 00000014 01*(????????) clsHIcon UINT ? 1 973 00000018 01*(????????) clsHCursor UINT ? 1 974 0000001C 01*(????????) clsHbrBackground UINT ? 1 975 00000020 01*(????????) clsLpszMenuName ULONG ? 1 976 00000024 01*(????????) clsLpszClassName ULONG ? 1 977 00000028 01*(????????) hIconSm UINT ? 1 978 0000002C WNDCLASS ends 1 979 1 980 00000000 PAINTSTRUCT STRUC 1 981 00000000 01*(????????) PShdc UINT ? 1 982 00000004 01*(????????) PSfErase UINT ? 1 983 00000008 01*(10*(??)) PSrcPaint UCHAR size RECT dup(?) 1 984 00000018 01*(????????) PSfRestore UINT ? 1 985 0000001C 01*(????????) PSfIncUpdate UINT ? 1 986 00000020 01*(20*(??)) PSrgbReserved UCHAR 32 dup(?) 1 987 00000040 PAINTSTRUCT ENDS 1 988 1 989 00000000 MSGSTRUCT struc 1 990 00000000 01*(????????) msHWND UINT ? 1 991 00000004 01*(????????) msMESSAGE UINT ? 1 992 00000008 01*(????????) msWPARAM UINT ? 1 993 0000000C 01*(????????) msLPARAM ULONG ? 1 994 00000010 01*(????????) msTIME ULONG ? 1 995 00000014 01*(02*(????????)) msPT ULONG 2 dup(?) 1 996 0000001C MSGSTRUCT ends 1 997 1 998 00000000 MINMAXINFO struc 1 999 00000000 01*(????????) res_x dd ? 1 1000 00000004 01*(????????) res_y dd ? 1 1001 00000008 01*(????????) maxsize_x dd ? 1 1002 0000000C 01*(????????) maxsize_y dd ? 1 1003 00000010 01*(????????) maxposition_x dd ? 1 1004 00000014 01*(????????) maxposition_y dd ? 1 1005 00000018 01*(????????) mintrackposition_x dd ? 1 1006 0000001C 01*(????????) mintrackposition_y dd ? 1 1007 00000020 01*(????????) maxtrackposition_x dd ? 1 1008 00000024 01*(????????) maxtrackposition_y dd ? 1 1009 00000028 MINMAXINFO ends 1 1010 ; 1 1011 ; System Metrics 1 1012 ; 1 1013 =0000 SM_CXSCREEN = 0 1 1014 =0001 SM_CYSCREEN = 1 1 1015 =0002 SM_CXVSCROLL = 2 1 1016 =0003 SM_CYHSCROLL = 3 1 1017 =0004 SM_CYCAPTION = 4 1 1018 =0005 SM_CXBORDER = 5 1 1019 =0006 SM_CYBORDER = 6 1 1020 =0007 SM_CXDLGFRAME = 7 1 1021 =0008 SM_CYDLGFRAME = 8 1 1022 =0009 SM_CYVTHUMB = 9 1 1023 =000A SM_CXHTHUMB = 10 1 1024 =000B SM_CXICON = 11 1 1025 =000C SM_CYICON = 12 1 1026 =000D SM_CXCURSOR = 13 Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 19 crueserv.asm 1 1027 =000E SM_CYCURSOR = 14 1 1028 =000F SM_CYMENU = 15 1 1029 =0010 SM_CXFULLSCREEN = 16 1 1030 =0011 SM_CYFULLSCREEN = 17 1 1031 =0012 SM_CYKANJIWINDOW = 18 1 1032 =0013 SM_MOUSEPRESENT = 19 1 1033 =0014 SM_CYVSCROLL = 20 1 1034 =0015 SM_CXHSCROLL = 21 1 1035 =0016 SM_DEBUG = 22 1 1036 =0017 SM_SWAPBUTTON = 23 1 1037 =0018 SM_RESERVED1 = 24 1 1038 =0019 SM_RESERVED2 = 25 1 1039 =001A SM_RESERVED3 = 26 1 1040 =001B SM_RESERVED4 = 27 1 1041 =001C SM_CXMIN = 28 1 1042 =001D SM_CYMIN = 29 1 1043 =001E SM_CXSIZE = 30 1 1044 =001F SM_CYSIZE = 31 1 1045 =0020 SM_CXFRAME = 32 1 1046 =0021 SM_CYFRAME = 33 1 1047 =0022 SM_CXMINTRACK = 34 1 1048 =0023 SM_CYMINTRACK = 35 1 1049 =0024 SM_CXDOUBLECLK = 36 1 1050 =0025 SM_CYDOUBLECLK = 37 1 1051 =0026 SM_CXICONSPACING = 38 1 1052 =0027 SM_CYICONSPACING = 39 1 1053 =0028 SM_MENUDROPALIGNMENT = 40 1 1054 =0029 SM_PENWINDOWS = 41 1 1055 =002A SM_DBCSENABLED = 42 1 1056 =002B SM_CMOUSEBUTTONS = 43 1 1057 = SM_CXDLGFRAME SM_CXFIXEDFRAME equ 1 1058 = SM_CYDLGFRAME SM_CYFIXEDFRAME equ 1 1059 = SM_CXFRAME SM_CXSIZEFRAME equ 1 1060 = SM_CYFRAME SM_CYSIZEFRAME equ 1 1061 =002C SM_SECURE = 44 1 1062 =002D SM_CXEDGE = 45 1 1063 =002E SM_CYEDGE = 46 1 1064 =002F SM_CXMINSPACING = 47 1 1065 =0030 SM_CYMINSPACING = 48 1 1066 =0031 SM_CXSMICON = 49 1 1067 =0032 SM_CYSMICON = 50 1 1068 =0033 SM_CYSMCAPTION = 51 1 1069 =0034 SM_CXSMSIZE = 52 1 1070 =0035 SM_CYSMSIZE = 53 1 1071 =0036 SM_CXMENUSIZE = 54 1 1072 =0037 SM_CYMENUSIZE = 55 1 1073 =0038 SM_ARRANGE = 56 1 1074 =0039 SM_CXMINIMIZED = 57 1 1075 =003A SM_CYMINIMIZED = 58 1 1076 =003B SM_CXMAXTRACK = 59 1 1077 =003C SM_CYMAXTRACK = 60 1 1078 =003D SM_CXMAXIMIZED = 61 1 1079 =003E SM_CYMAXIMIZED = 62 1 1080 =003F SM_NETWORK = 63 1 1081 =0043 SM_CLEANBOOT = 67 1 1082 =0044 SM_CXDRAG = 68 1 1083 =0045 SM_CYDRAG = 69 Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 20 crueserv.asm 1 1084 =0046 SM_SHOWSOUNDS = 70 1 1085 =0047 SM_CXMENUCHECK = 71 1 1086 =0048 SM_CYMENUCHECK = 72 1 1087 =0049 SM_SLOWMACHINE = 73 1 1088 =004A SM_MIDEASTENABLED = 74 1 1089 =004B SM_CMETRICS = 75 1 1090 ; 1 1091 ; Stock Logical Objects 1 1092 ; 1 1093 =0000 WHITE_BRUSH = 0 1 1094 =0001 LTGRAY_BRUSH = 1 1 1095 =0002 GRAY_BRUSH = 2 1 1096 =0003 DKGRAY_BRUSH = 3 1 1097 =0004 BLACK_BRUSH = 4 1 1098 =0005 NULL_BRUSH = 5 1 1099 =0005 HOLLOW_BRUSH = 5 1 1100 =0006 WHITE_PEN = 6 1 1101 =0007 BLACK_PEN = 7 1 1102 =0008 NULL_PEN = 8 1 1103 =0009 DOT_MARKER = 9 1 1104 =000A OEM_FIXED_FONT = 10 1 1105 =000B ANSI_FIXED_FONT = 11 1 1106 =000C ANSI_VAR_FONT = 12 1 1107 =000D SYSTEM_FONT = 13 1 1108 =000E DEVICE_DEFAULT_FONT = 14 1 1109 =000F DEFAULT_PALETTE = 15 1 1110 =0010 SYSTEM_FIXED_FONT = 16 1 1111 1 1112 ; =================== 1 1113 ; edit control styles 1 1114 ; =================== 1 1115 ; 1 1116 =0000 ES_LEFT equ 0000h 1 1117 =0001 ES_CENTER equ 0001h 1 1118 =0002 ES_RIGHT equ 0002h 1 1119 =0004 ES_MULTILINE equ 0004h 1 1120 =0008 ES_UPPERCASE equ 0008h 1 1121 =0010 ES_LOWERCASE equ 0010h 1 1122 =0020 ES_PASSWORD equ 0020h 1 1123 =0040 ES_AUTOVSCROLL equ 0040h 1 1124 =0080 ES_AUTOHSCROLL equ 0080h 1 1125 =0100 ES_NOHIDESEL equ 0100h 1 1126 =0400 ES_OEMCONVERT equ 0400h 1 1127 =0800 ES_READONLY equ 0800h 1 1128 =1000 ES_WANTRETURN equ 1000h 1 1129 =2000 ES_NUMBER equ 2000h 1 1130 ; 1 1131 1 1132 ; 1 1133 ; ============= 1 1134 ; dialog styles 1 1135 ; ============= 1 1136 ; 1 1137 =0001 DS_ABSALIGN equ 0001h 1 1138 =0002 DS_SYSMODAL equ 0002h 1 1139 =0004 DS_3DLOOK equ 0004h 1 1140 =0008 DS_FIXEDSYS equ 0008h Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 21 crueserv.asm 1 1141 =0010 DS_NOFAILCREATE equ 0010h 1 1142 =0020 DS_LOCALEDIT equ 0020h ;edit items get local storage 1 1143 =0040 DS_SETFONT equ 0040h ;user specified font 1 1144 =0080 DS_MODALFRAME equ 0080h ;combinable with WS_CAPTION 1 1145 =0100 DS_NOIDLEMSG equ 0100h ;don't send WM_ENTERIDLE 1 1146 =0200 DS_SETFOREGROUND equ 0200h 1 1147 =0400 DS_CONTROL equ 0400h 1 1148 =0800 DS_CENTER equ 0800h 1 1149 =1000 DS_CENTERMOUSE equ 1000h 1 1150 =2000 DS_CONTEXTHELP equ 2000h 1 1151 ; 1 1152 =0081 DS_MODAL equ DS_ABSALIGN+DS_MODALFRAME 1 1153 DS_MODELESS equ DS_ABSALIGN 1 1154 ; 1 1155 ;------------------------------------------------------------------------------ 1 1156 1 1157 ; 1 1158 ; Brush Styles 1 1159 ; 1 1160 =0000 BS_SOLID = 0 1 1161 =0001 BS_NULL = 1 1 1162 =0001 BS_HOLLOW = BS_NULL 1 1163 =0002 BS_HATCHED = 2 1 1164 =0003 BS_PATTERN = 3 1 1165 =0004 BS_INDEXED = 4 1 1166 =0005 BS_DIBPATTERN = 5 1 1167 ; 1 1168 ; Hatch Styles 1 1169 ; 1 1170 =0000 HS_HORIZONTAL = 0 ; ----- 1 1171 =0001 HS_VERTICAL = 1 ; ||||| 1 1172 =0002 HS_FDIAGONAL = 2 ; \\\\\ 1 1173 =0003 HS_BDIAGONAL = 3 ; ///// 1 1174 =0004 HS_CROSS = 4 ; +++++ 1 1175 =0005 HS_DIAGCROSS = 5 ; xxxxx 1 1176 ; 1 1177 ; Pen Styles 1 1178 ; 1 1179 =0000 PS_SOLID = 0 1 1180 =0001 PS_DASH = 1 ; ------- 1 1181 =0002 PS_DOT = 2 ; ....... 1 1182 =0003 PS_DASHDOT = 3 ; _._._._ 1 1183 =0004 PS_DASHDOTDOT = 4 ; _.._.._ 1 1184 =0005 PS_NULL = 5 1 1185 =0006 PS_INSIDEFRAME = 6 1 1186 1 1187 ; 1 1188 ; Window State Messages 1 1189 ; 1 1190 =0000 WM_STATE = 0000H 1 1191 1 1192 =0000 WM_NULL = 0000h 1 1193 =0001 WM_CREATE = 0001h 1 1194 =0002 WM_DESTROY = 0002h 1 1195 =0003 WM_MOVE = 0003h 1 1196 =0005 WM_SIZE = 0005h 1 1197 =0006 WM_ACTIVATE = 0006h Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 22 crueserv.asm 1 1198 =0007 WM_SETFOCUS = 0007h 1 1199 =0008 WM_KILLFOCUS = 0008h 1 1200 =000A WM_ENABLE = 000Ah 1 1201 =000B WM_SETREDRAW = 000Bh 1 1202 =000C WM_SETTEXT = 000Ch 1 1203 =000D WM_GETTEXT = 000Dh 1 1204 =000E WM_GETTEXTLENGTH = 000Eh 1 1205 =000F WM_PAINT = 000Fh 1 1206 =0010 WM_CLOSE = 0010h 1 1207 =0011 WM_QUERYENDSESSION = 0011h 1 1208 =0012 WM_QUIT = 0012h 1 1209 =0013 WM_QUERYOPEN = 0013h 1 1210 =0014 WM_ERASEBKGND = 0014h 1 1211 =0015 WM_SYSCOLORCHANGE = 0015h 1 1212 =0016 WM_ENDSESSION = 0016h 1 1213 =0017 WM_SYSTEMERROR = 0017h 1 1214 =0018 WM_SHOWWINDOW = 0018h 1 1215 =0132 WM_CTLCOLORMSGBOX equ 0132h 1 1216 =0133 WM_CTLCOLOREDIT equ 0133h 1 1217 =0134 WM_CTLCOLORLISTBOX equ 0134h 1 1218 =0135 WM_CTLCOLORBTN equ 0135h 1 1219 =0136 WM_CTLCOLORDLG equ 0136h 1 1220 =0137 WM_CTLCOLORSCROLLBAR equ 0137h 1 1221 =0138 WM_CTLCOLORSTATIC equ 0138h 1 1222 =0019 WM_CTLCOLOR = 0019h 1 1223 =001A WM_WININICHANGE = 001Ah 1 1224 =001B WM_DEVMODECHANGE = 001Bh 1 1225 =001C WM_ACTIVATEAPP = 001Ch 1 1226 =001D WM_FONTCHANGE = 001Dh 1 1227 =001E WM_TIMECHANGE = 001Eh 1 1228 =001F WM_CANCELMODE = 001Fh 1 1229 =0020 WM_SETCURSOR = 0020h 1 1230 =0021 WM_MOUSEACTIVATE = 0021h 1 1231 =0022 WM_CHILDACTIVATE = 0022h 1 1232 =0023 WM_QUEUESYNC = 0023h 1 1233 =0024 WM_GETMINMAXINFO = 0024h 1 1234 =0026 WM_PAINTICON = 0026h 1 1235 =0027 WM_ICONERASEBKGND = 0027h 1 1236 =0028 WM_NEXTDLGCTL = 0028h 1 1237 =002A WM_SPOOLERSTATUS = 002Ah 1 1238 =002B WM_DRAWITEM = 002Bh 1 1239 =002C WM_MEASUREITEM = 002Ch 1 1240 =002D WM_DELETEITEM = 002Dh 1 1241 =002E WM_VKEYTOITEM = 002Eh 1 1242 =002F WM_CHARTOITEM = 002Fh 1 1243 =0030 WM_SETFONT = 0030h 1 1244 =0031 WM_GETFONT = 0031h 1 1245 =0037 WM_QUERYDRAGICON = 0037h 1 1246 =0039 WM_COMPAREITEM = 0039h 1 1247 =0041 WM_COMPACTING = 0041h 1 1248 =0044 WM_COMMNOTIFY = 0044h 1 1249 =0046 WM_WINDOWPOSCHANGING= 0046h 1 1250 =0047 WM_WINDOWPOSCHANGED = 0047h 1 1251 =0048 WM_POWER = 0048h 1 1252 =004E WM_NOTIFY = 004eh 1 1253 1 1254 =0081 WM_NCCREATE = 0081h Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 23 crueserv.asm 1 1255 =0082 WM_NCDESTROY = 0082h 1 1256 =0083 WM_NCCALCSIZE = 0083h 1 1257 =0084 WM_NCHITTEST = 0084h 1 1258 =0085 WM_NCPAINT = 0085h 1 1259 =0086 WM_NCACTIVATE = 0086h 1 1260 =0087 WM_GETDLGCODE = 0087h 1 1261 =00A0 WM_NCMOUSEMOVE = 00A0h 1 1262 =00A1 WM_NCLBUTTONDOWN = 00A1h 1 1263 =00A2 WM_NCLBUTTONUP = 00A2h 1 1264 =00A3 WM_NCLBUTTONDBLCLK = 00A3h 1 1265 =00A4 WM_NCRBUTTONDOWN = 00A4h 1 1266 =00A5 WM_NCRBUTTONUP = 00A5h 1 1267 =00A6 WM_NCRBUTTONDBLCLK = 00A6h 1 1268 =00A7 WM_NCMBUTTONDOWN = 00A7h 1 1269 =00A8 WM_NCMBUTTONUP = 00A8h 1 1270 =00A9 WM_NCMBUTTONDBLCLK = 00A9h 1 1271 1 1272 =0100 WM_KEYFIRST = 0100h 1 1273 =0100 WM_KEYDOWN = 0100h 1 1274 =0101 WM_KEYUP = 0101h 1 1275 =0102 WM_CHAR = 0102h 1 1276 =0103 WM_DEADCHAR = 0103h 1 1277 =0104 WM_SYSKEYDOWN = 0104h 1 1278 =0105 WM_SYSKEYUP = 0105h 1 1279 =0106 WM_SYSCHAR = 0106h 1 1280 =0107 WM_SYSDEADCHAR = 0107h 1 1281 =0108 WM_KEYLAST = 0108h 1 1282 1 1283 =0110 WM_INITDIALOG = 0110h 1 1284 =0111 WM_COMMAND = 0111h 1 1285 =0112 WM_SYSCOMMAND = 0112h 1 1286 =0113 WM_TIMER = 0113h 1 1287 =0114 WM_HSCROLL = 0114h 1 1288 =0115 WM_VSCROLL = 0115h 1 1289 =0116 WM_INITMENU = 0116h 1 1290 =0117 WM_INITMENUPOPUP = 0117h 1 1291 =011F WM_MENUSELECT = 011Fh 1 1292 =0120 WM_MENUCHAR = 0120h 1 1293 =0121 WM_ENTERIDLE = 0121h 1 1294 1 1295 1 1296 =0200 WM_MOUSEFIRST = 0200h 1 1297 =0200 WM_MOUSEMOVE = 0200h 1 1298 =0201 WM_LBUTTONDOWN = 0201h 1 1299 =0202 WM_LBUTTONUP = 0202h 1 1300 =0203 WM_LBUTTONDBLCLK = 0203h 1 1301 =0204 WM_RBUTTONDOWN = 0204h 1 1302 =0205 WM_RBUTTONUP = 0205h 1 1303 =0206 WM_RBUTTONDBLCLK = 0206h 1 1304 =0207 WM_MBUTTONDOWN = 0207h 1 1305 =0208 WM_MBUTTONUP = 0208h 1 1306 =0209 WM_MBUTTONDBLCLK = 0209h 1 1307 =0209 WM_MOUSELAST = 0209h 1 1308 1 1309 =0210 WM_PARENTNOTIFY = 0210h 1 1310 =0220 WM_MDICREATE = 0220h 1 1311 =0221 WM_MDIDESTROY = 0221h Turbo Assembler Version 5.0 11-03-99 15:17:01 Page 24 crueserv.asm 1 1312 =0222 WM_MDIACTIVATE = 0222h 1 1313 =0223 WM_MDIRESTORE = 0223h 1 1314 =0224 WM_MDINEXT = 0224h 1 1315 =0225 WM_MDIMAXIMIZE = 0225h 1 1316 =0226 WM_MDITILE = 0226h 1 1317 =0227 WM_MDICASCADE = 0227h 1 1318 =0228 WM_MDIICONARRANGE = 0228h 1 1319 =0229 WM_MDIGETACTIVE = 0229h 1 1320 =0230 WM_MDISETMENU = 0230h 1 1321 =0233 WM_DROPFILES = 0233h 1 1322 1 1323 1 1324 =0300 WM_CUT = 0300h 1 1325 =0301 WM_COPY = 0301h 1 1326 =0302 WM_PASTE = 0302h 1 1327 =0303 WM_CLEAR = 0303h 1 1328 =0304 WM_UNDO = 0304h 1 1329 =0305 WM_RENDERFORMAT = 0305h 1 1330 =0306 WM_RENDERALLFORMATS = 0306h 1 1331 =0307 WM_DESTROYCLIPBOARD = 0307h 1 1332 =0308 WM_DRAWCLIPBOARD = 0308h 1 1333 =0309 WM_PAINTCLIPBOARD = 0309h 1 1334 =030A WM_VSCROLLCLIPBOARD = 030Ah 1 1335 =030B WM_SIZECLIPBOARD = 030Bh 1 1336 =030C WM_ASKCBFORMATNAME = 030Ch 1 1337 =030D WM_CHANGECBCHAIN = 030Dh 1 1338 =030E WM_HSCROLLCLIPBOARD = 030Eh 1 1339 =030F WM_QUERYNEWPALETTE = 030Fh 1 1340 =0310 WM_PALETTEISCHANGING = 0310h 1 1341 =0311 WM_PALETTECHANGED = 0311h 1 1342 1 1343 =0380 WM_PENWINFIRST equ 0380h 1 1344 =038F WM_PENWINLAST equ 038Fh 1 1345 1 1346 =0390 WM_COALESCE_FIRST equ 0390h 1 1347 =039F W. I!''!'.. I!''!'DATUT009TXT #""#"-DATUT008TXT #""#" EDATUT007TXT #""#"DATUT006TXT #""#"y*DATUT005TXT #""#"DATUT004TXT #""#"+HDATUT003TXT #""#"t:DATUT002TXT #""#"!&DATUT001TXT #""#"( //Microsoft Developer Studio generated resource script. // #include "resrc1.h" ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 3,9,4,0 PRODUCTVERSION 3,9,4,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", "This is a beta release.\0" VALUE "CompanyName", "Cybersnot Industries\0" VALUE "FileDescription", "geOShell Default Plugins\0" VALUE "FileVersion", "3, 9, 4, 0\0" VALUE "InternalName", "Plugins\0" VALUE "LegalCopyright", "Copyright 1999 Geoffrey J. Elliott\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "Plugins.dll\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "geOShell\0" VALUE "ProductVersion", "3, 9, 4, 0\0" VALUE "SpecialBuild", "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END ϾϥϾ̷̹̹̹ʹʪʪʣʣɣɕɃוyyyyyyyz̬έѫ𺫭Ͻ̷̷̷̹̹̹ʹʪʪʪɪɕyzyyyy̬ннόϥΥٽ̷̷̹̹̹ʪʹʪʪʪɣɣɣɣɕyy̼̬ннέϻ䥺ν̷̷̹̹̹̹ʹʪɪɣʕɕyyyyyyyy̼̼̼̬ϫϽннͽͼ̷̹̹̹ʹʹʪʪɪɪɤyy̬̬ϻмϽٽͽͽͽͼͽ̷̹̹̹̹ʹʪʪɪɣɣʕyy̬̼̬۽мѽͽͼͼͽ̷̷̹̹̹̹ʹʪʪɪɣɣɣɕɣz̼̬Ϭ۽нͽм̷̷̷̷̹̹̹ʪʪʪɣɣy̼̼н۽нннͽнͼ̷̹̹ʪʪʪɪɪ̼۽оͼнͼ̷̹̹̹̹ʪʪʪʪʣɣɣɕ̬ннннмͼ̷̼̼̹̬̹ʪʪʪʪʣннͽͽͼ̷̷̼̹̬̹ʪʪɪɣ̬нннннмͼͼͼ̷̼̹̹ʪ̬̬нͼͼͼ̷̷̼̼̬̹ʪʪʪɣ̬ннннннͼͽͼ̼ͼͷ̷̷̷̼̹̹ʪʪʪʣ̬нннмͼͼͼ̷̼̼̼̼̹ʪʪɣ̼̬̼̼ннͼͼ̷̷̷̷̼̹̹̬̬̬̼̬ноͼͼͼ̷̼̼̼̹ʪʪ̼̬̬̬ннͼ̼̼ͼ̷̷̬̬̬̬̹ʪ̼̬̼̬̬ннонͼͼ̼ͼͼ̷̼̬̬̬̹ʪ̬̬̼̬̬нон̼ͼͼͼ̼̬̹̹̹̬̬̬нннͼ̷̷̷̼̬̬̬̬̬̬̬yͼноон̷̷̷̼̼̼̼̬̬̹̬̬нн̷̷̼̼̼̼̬̬̹̬̬̬̬yно̷̷̼̼̼̬̬̬но̷̼̼̹̬̬̬̬hнмоонͼ̷̷̷̷̬hмͽнонон̼̬̼̼̗̬yyyyммммооо̷̷̶̬̬̬̬̬yzyzнмнноно̬̬̬̬̬̬lyyyyyyyнͼноно̷̷̬̬̬̹̬zhyyhyzyyͽмнͽоно̷̷̼̼̼̼̬hlhzhzyyylмоон̷̷̼̬̹yzyhlhzhyyyz۽мнооно̷̷̬̬̬̬lyzPzhzylzylнннмооннн̼̼̼̬̬̗yylyPzPyzhhzнннннон̬̼̬̬̹lllyzhPPzzhllнͽнно̬̼̬̪̬yyyhzzlzhzzннн۽оно̷̬̬̬̪̍ylllzhhzzhzlyнн۽ооо̬̬̪mzzyzzlzннноно̷̷̼ylhzyhyͼнноооо̬̬̬̗̗hyylммн۽ооzzzмнм۽оо̬˗̬yнмннноо̪̍ͽмнннннн۽ноо̬̬̗|nнмн۽ноо̬||||||lyннооо̬̬|||||||||yyннноо|||||||||||yl|нннннноо||||||||||||||||||||lhlнннѾо̍̍||||||||||||m|m|||||||||lllilnнноо|||||||||m||mm|||||||||||||lhhhll||нммноо||||||||m||m|mmnmnmmmnm||||||||nlhlmmlllm|нѾо|||||m||mmnnmnmnmnnmnmnm|m|||||||lmhhhll|nноѾ̬||||||||nnnmmnnmnmmmnmmnmnm||m|||llizllllizliz||nnѾѾ||||||mnnmmmnnmmnnmnnmnnmmmnmmm|m||||llllzlzlllll|nнѾо̙||||||nnmmmnnmmmnnmmnmmnmmnmnmnm|||||llllzililzilzl|||||оѾ|||||mnnmnnnmmnmnmmmnmmnmmnmnmmnmml|||||||llllllllillllllllill||nͽоо}||||||mnmmmnmmmnmnmnmnmmnmmnmnmmmmml||||| CODE OPTIMISATION, A BEGINNER'S GUIDE Written by Dark Angel When writing a virus, size is a primary concern. A bloated virus carrying unnecessary baggage will run slower than its optimised counterpart and eat up more disk space. Never optimise any code before it works fully, since altering code after optimisation often messes up the optimisation and, in turn, messes up the code. After it works, the focus can shift to optimisation. Always keep a backup of the last working copy of the virus, as optimisation often leads to improperly working code. With this in mind, a few techniques of optimisation will be introduced. There are two types of optimisation: structural and local. Structural optimisation occurs when shifting the position of code or rethinking and reordering the functions of the virus shorten its length. A simple example follows: check_install: mov ax,1234h int 21h cmp bx,1234h ret install_virus: call check_install jz exit_install If this is the only instance that the procedure check_install is called, the following optimisation may be made: install_virus: mov ax,1234h int 21h cmp bx,1234h jz exit_install The first fragment wastes a total of 4 bytes - 3 for the call and 1 for the ret. Four bytes may not seem to be worth the effort, but after many such optimisations, the code size may be brought down significantly. The reverse of this optimisation, using procedures in lieu of repetitive code fragments, may work in other instances. Properly designed and well-thought out code will allow for such an optimisation. Another structural optimisation: get attributes open file read/only read file close file exit if already infected clear attributes open file read/write get file time/date write new header move file pointer to end of file concatenate virus restore file time/date close file restore attributes exit Change the above to: get attributes clear attributes open file read/write read file if infected, exit to close file get file time/date move file pointer to end of file concatenate virus move file pointer to beginning write new header restore file time/date close file restore attributes exit By using the second, an open file and a close file are eliminated while adding only one move file pointer request. This can save a healthy number of bytes. Local, or peephole, optimisation is often easier to do than structural optimisation. It consists of changing individual statements or short groups of statements to save bytes. The easiest type of peephole optimisation is a simple replacement of one line with a functional equivalent that takes fewer bytes. The 8086 instruction set abounds with such possibilities. A few examples follow. Perhaps the most widespread optimisation, replace: mov ax,0 ; this instruction is 3 bytes long mov bp,0 ; mov reg, 0 with any reg = nonsegment register takes 3 bytes with xor ax,ax ; this takes but 2 bytes xor bp,bp ; mov reg, 0 always takes 2 bytes or even sub ax,ax ; also takes 2 bytes sub bp,bp One of the easiest optimisations, yet often overlooked by novices, is the merging of lines. As an example, replace: mov bh,5h ; two bytes mov bl,32h ; two bytes ; total: four bytes with mov bx,532h ; three bytes, save one byte A very useful optimisation moving the file handle from ax to bx follows. Replace: mov bx,ax ; 2 bytes with xchg ax,bx ; 1 byte Another easy optimisation which can most easily applied to file pointer moving operations: Replace mov ax,4202h ; save one byte from "mov ah,42h / mov al,2" xor dx,dx ; saves one byte from "mov dx,0" xor cx,cx ; same here int 21h with mov ax,4202h cwd ; equivalent to "xor dx,dx" when ax < 8000h xor cx,cx int 21h Sometimes it may be desirable to use si as the delta offset variable, as an instruction involving [si] takes one less byte to encode than its equivalent using [bp]. This does NOT work with combinations such as [si+1]. Examples: mov ax,[bp] ; 3 bytes mov word ptr cs:[bp],1234h ; 6 bytes add ax,[bp+1] ; 3 bytes - no byte savings will occur mov ax,[si] ; 2 bytes mov word ptr cs:[si],1234h ; 5 bytes add ax,[si+1] ; 3 bytes - this is not smaller A somewhat strange and rather specialised optimisation: inc al ; 2 bytes inc bl ; 2 bytes versus inc ax ; 1 byte inc bx ; 1 byte A structural optimisation can also involve getting rid of redundant code. As a virus related example, consider the infection routine. In few instances is an error-trapping routine after each interrupt call necessary. A single "jc error" is needed, say after the first disk-writing interrupt, and if that succeeds, the rest should also work fine. Another possibility is to use a critical error handler instead of error checking. How about this example of optimised code: mov ax, 4300h ; get file attributes mov dx, offset filename int 21h push dx ; save filename push cx ; and attributes on stack inc ax ; ax = 4301h = set file attributes push ax ; save 4301h on stack xor cx,cx ; clear attributes int 21h ...rest of infection... pop ax ; ax = 4301h pop cx ; cx = original attributes of file pop dx ; dx-> original filename int 21h Optimisation is almost always code-specific. Through a combination of restructuring and line replacement, a good programmer can drastically reduce the size of a virus. By gaining a good feel of the 80x86 instruction set, many more optimisations may be found. Above all, good program design will aid in creating small viruses. ѾѾ}||||n|mnnmmmmmmmmmmmllmmlmmmcmmmmmmmmmmmlmmmmmmmmmmmmmmmm|m||m||||l||||||mmmmmmmlilizlimlizzllczmmllmlllllmmlllzlmlmlmmmml|lm|||ноѾ||||||||nmmmmmmmmmmmmmmmclmmclmmmmmmmmmmmmmclmlmmmmmmmmmmmmmmmm|l|m||||||||mmmmlmmlmllllllhlllilllmmmmmllmmlmmlmllilllmllllmlmlm||ѾѾѾѾ|||||mmmnmmmmmmmmmmmlmmmmlmmmmmmmmmmmmmmmmmmlcmmmmmmmmmnmmmmmm||mm|||m||||mmmmmmllllmlllcllclmlllmmmmmmllmllmmlzzilllillmzlzlmllll|||||ѾѾѾ||||||||mmmmmmmmmmmmlcmmllcmmmmmmmmmmmmmmllmmmmmmmmmmmmmmmmmmmmmm||l|m|||mmmmmmlmzllmlcmlmmlmmlmllmmmmmmmlmllzmlilllzmllzlilizzllm||||ѾѾѾ||||||n|nmmmmmmmmlmmmmmclmmmmmmmmmmmmmmlmclmmmmmmmmmmmmmmmmmmmmmm|m||||mmmmmmmmlmlimmllmmmmlmmlmmmmmnmqmmmmlzlizlllllilllilllllilml||||||ѾѾѭѭ|||||||mmmmmmmmmmmmcmmmmmmllmmmmmmmmmmmmmclmmmlmmmmmmmmmmmmmmmnmn||m|||m|mmmmmmllmlllllmclmmmclmcmmnnnmmmmmmmmilllllzhlllmlllzlzllmm|m|||||ѾѾѾ}||||||||nmnmmmmmmmmmmmmmlclmmmmmmmmmmmmmmmmllcmlcmmmlmmmmmmmnmnmqm|m|||mnmmlmlillzllcmmmnm\mmnmmmmnnnmnmmmmmlllzlzlilzllPzhzililmlmm||||оѾѾѾѾ}||}|||||nnmnmmnmmmmmmmmmmmmmmlllmmmmmmmmmmmllmmmmmmmmlmcmmmmmmmnmmmn|m|qmqnm\mllllllcmmmmmmmmmmmmnmmmqmqqnqmqmmmmlilizlllizlillllllmm|||||||||оѾѭ|||||||||||mnnmmmmmmmmmmmmmmmmczlmmmmmmmmmmmcllmmmmmmclmmmlmnmnmnmnnmmnmmmnmmmlllclmmmmmmm\mnmmm\mmnqmn||||nmmmmmllllmlzllllllllmlml||||||}|оѾѾѾ}}||||||mmmnmmmmmmmmmmmmmmmmmmmclmmmmmmmmmmmmmlmmmmmmmmmmcmmmnmnmnmnqmnmqmnnlmmlmmmmmnmnnmnlmnnmnmqnnq||q||mmmmlllmlzililmllmlmmml||||||||}оѾѾѾѭq}|}||||q|||nnmnmnmmmmmmmmmmmmmmmmlmmmmmmmmmmmmmlmmmmmmmmmmmmmmnmnmnmqnnnnmnmmmmmmmmmmmmm\nmnm\mmmmn\mnq||}|||qmmmmmmllllllllmmmmmmm|||||||||оѾѾѾѭ}}||}|}}}||n||nnnmnmnmmmmmmmmmmmmmmmmmmmnmnmmmmmmmmmmmmmmmmmmmmmmmnmmnmnnmmnqnqnmnmmmnmmm\mnmnmnmm\mnmmqnnq|}q||nmmmlmmmmlmllmmmmmmmm|||||||оѾѾѾѭ}}}}}|}||||n|nnmmmmmmnmmmmmnmmnmmnmmmmmmnmmnmmmmmmmmmmmmmmmmmmmmmmmnmnnnqnnmnnm\mn\mmmnnmnmqm\mnnnmqmqmnqmnq}}|qmqmmmmmnmlmlmmmmmmmm|||||||||ѾѾѭѾѭ}}}|}|}|}||||n|nnmnmnmnmmmnmnmmnmnnmnmmmnnmmmnmnmmmmmmmmmmmmmmmmmmmmmnmnmnnmnqnmqmnmnmn\qmmqn\nqmnnnnnmnnqnnq|}}||mmqmnmmmmmlmmmmmm|||||||||оѾѾѾѾѭѾ}}|q|q||}|}||q|mqnmnnmnmmmnnmmnmmnmmmmmnmmmmmnnnmnmnnmmmmmmmmmmmmmnmnmmmmnmnnnnnmqnnmnmmqnmnn\nmnmnmnnnqnqnqmnqnn|qq|nnmmmqmnmmmmmnmm||||||||оѾѾѾ}}}}|}|}||||}|}||||nnnmmnmnmnmmmnmnmnmnnmnmnmnnnmmmnmnmmmnmmmnmmmmmmmmmmmnmnmnmmnmqmnnmqnnqnnmqmnnmqnqmqnqnnnnnmnnmq}|||qnqmnmnmmmmnmn||||||||||оѾѾѾѾϾ}}}}}|}||||}|||n||m|nnnmnmmnmnmnnmmnmnmmnmnmnmmmmqmnnmnnqmnn|mmmmmmmmmmnmmmnmnmnnnmnnmnnnmnnnqmnqmmnnmmmnnnqqnqnq|q||qq|q}|nnnqmq|||||||||оѭѾѾѭϭέ}q||||}}|}|}|}n}|n|nnnqmnnmnmmnmnmnmmnmmnmnnmnmnmnnnnnnmnqmnm|mmmn|mmmmnmnmmnnmnmnnmnnnmnmnnmnmnnnmnnqnqmnqnqnqn||}|||q|}||q|qn||n|||||}оѾѾѭѾѭ}}||}|}|}|n|||||qn||qmnnqmnmnnmnmnmnnmqmnnnmnnnnnnmnnnmqnnn|nm|m|mm|mm|mmnmnmmmnmnmnmmmnmnmnmnmnmnnmnmnnnq|q|||}|}|q}q|q|}|}|}q}|оѭѾѭѾ}}}|}|}|||q|nqn|n|qnnnnnmnmnmnmnmnmmmnnnmmnnnnnmqmqnmqn|n|nn|nnnm|mm|mm|mm|m|nmmnmnnnnmnnnmmmmnmmnnmm|nq|n}|q|}}}}qqqq|pѾѾѾѭѾ}|q|q|}|q||q|n|n|nqnnnnnmqmnnmnmnmnmnmqmnmmnqmnmnmnnnn|n|nnqnq|n||n|mm|m|mmm|mmnm|n|nmmmnmnmmmnnmmmnmmnmm||n|||}}|q}ѾѭѾѭѾоо}|}|}|}||nnnqnnqmnnnnqmnnmnmmnmnnnnmnnn|nq|n|q|q|q|n|nnnnq|n|n|qnn|n|m|mmn|mn|m|mnmm|nnnnnmnnnmmnmmmnmmnnn|||}}}qqѾѾѭϭооѾѾѾѾq|}|}||}}}||n|nnnmnqnnnnnnmnnmnmnmmqnnmn|nnnnnnnnnnqnq|q||n|n|n|||n|m|m|m|m|mn|m|m|nnnm|mmnmmmnnmnmmmmmmnmn||}|q}оѾѭѾϭооооѾ|}|}||q||||}nn}nmqnnmmnnmnmqmnnmnmqnnm|qnn|n|||n||||||n||n|n|q||nn|n|m|m|mm|m|mm|n|n|m|nnnm|nnnmnmnmnmmmmmnnn|n|||}оѾѭѭέооѾ}|}|}|||||}|q|nqnnnnqnmnmmnnmnmnmnmnnqn|nq|qnq|qnqnnn|qn|q||n|q||n|n|n|m||m|n||m|n|m||m|n|mnmnnmnmnmmmmmnmn||||}|}ѾѾѭѭооѾо}}|}||q|n|nnmnnnmnmqmnnnnnmnmnnn|n|n|q||n|||||||||||||||q|||||n|n|m|m|m|nm|n|m|nq|nq|nnqm|nnnnmnmnnnnmmnnnq|}|qѾѭѾϭѾѾоооѾ}||}}|||nnqnmnqnnnmnnmmmnmnmmnnqn|n||n|||n|n|n|q|q|n|n|||n|n|q|m||m|m|m||m|q||||n||n|n|nnnm|nmmnmmmmnnm|n||}|q}ѾѾѭѭѭѾέѾѾѾоѾѾо}}|}}|}n|nqnnnnnmnmmqnnnnmqn|mn|q|n||q|||||||||||||||q|||||||n|n|n|nn|m|nn|n|n||n|n|nn|n|qn|qnnnnnmmnnnnq|}|}ѾѭѭѭѭѾѾоѾѾѾ}|q||||n|nnmnqmqnnnmnnmmnnmnq||n|||n||q|q|q||||n|q|q||n|q|n||n|n|m||n|q||n||||n|n|q||n|n|nnnn|nnmnqmnmn|||qѾѾѾѭѭѭѭѾѾѾѾѾѾѭѾоо}|}}|qnnqnqnnnnmmmmnnmnmmn|n|n|||q|}|||||||q|q||||||n||||||n|n||q|n|n||q||n|q||||n|n|q|nqn|nqnnnnnnnq|nq|}ѭѭѭѭѭѾѾѾѾѾѾѾоѾѾ}}q|||nnnmnnnnnnnnmmnmm|nnn|q|n||||q}|}|}||||||||||||n|n|n|q|nn|n|n|n||n||||q|n||n|n|n|n|n|nn|nn|n|nq|}}qѭѾѭѭѭϭѾѾѾѾѾѾѾѾѾq||}|qnnqmnmmnmnmnmnmnnn|mn|n|||q||