📄 win.inc
字号:
;----------------------------------------------------------------------------;
; WINDOWS.INC ;
;----------------------------------------------------------------------------;
; Using H2INC to Convert the WINDOWS.H include file. ;
;----------------------------------------------------------------------------;
; ;
; THE EXPLANATION BEHIND THESE CHANGES CAN BE FOUND IN THE 'USER-DEFINED AND ;
; PREDEFINED CONSTANTS' SECTION OF THE ENVIRONMENT & TOOLS CHAPTER ON H2INC. ;
; ;
; To use the windows.h file in MASM, some changes have to be made before ;
; running the file through H2INC: ;
; ;
; 1. Since MASM keywords should not be redefined, an underscore was ;
; added to the following Windows keywords: SIZE, cx, dx, length, ;
; offset. You should remember appending the underscore in your MASM ;
; programs, for example _SIZE, _cx, _dx, ... ;
; ;
; 2. Parenthesis around negative numbers were removed: (-4) is now -4 ;
; ;
; 3. The MAKEINTRESOURCE and MAKEINTATOM macros were eliminated: ;
; They were changed to ;
; #define MAKEINTRESOURCE(i) i ;
; #define MAKEINTATOM(i) i ;
; If any of the resources were negative numbers, #2 above would ;
; apply as well. ;
; ;
; 4. Definitions that included a type cast conversion were altered ;
; i.e., '#define HFILE_ERROR ((HFILE) -1)' ;
; is now '#define HFILE_ERROR -1' ;
; This was done for: HINSTANCE_ERROR, HFILE_ERROR, HWND_BROADCAST, ;
; HWND_DESKTOP, CW_USEDEFAULT, HWND_TOP, HWND_BOTTOM, ;
; HWND_TOPMOST and HWND_NOTOPMOST. ;
; ;
;----------------------------------------------------------------------------;
; ;
; After running windows.h through H2INC, some change were made to the file ;
; ;
; THESE CHANGES ARE OPTIONAL. THEY ONLY ENHANCE WINDOWS.INC. ;
; ;
; 1. If ?WINPROLOGUE is defined, then PROLOGUE.INC is included with ;
; the INCBP and LOADDS options. ;
; ;
; 2. The DOS3Call prototype was added. This function isn't defined in ;
; WINDOWS.H, but assembly programmers find it useful. ;
; ;
; 3. IFDEFs corresponding to WINDOWS.H ifdefs were included. To reduce ;
; assembly time, these variables can be set to avoid inclusion of ;
; some areas. The meaning of the variables follows, by way of the ;
; comment included in WINDOWS.H. ;
; ;
;----------------------------------------------------------------------------;
ifdef ?WINPROLOGUE
ECHO
ECHO Loading prologue.inc.
ECHO
;------ PROLOGUE.INC ------;
?WP_INCBP = 1 ; INC BP on all far procs ;
?WP_LOADDS = 1 ; LOAD DS on all far procs ;
include prologue.inc ;--------------------------;
endif
; Not in WINDOWS.H, but useful for assembly programming
DOS3Call PROTO FAR PASCAL ; INT 21h CALLING ROUTINE
comment ^
/*****************************************************************************\
* *
* windows.h - Windows functions, types, and definitions *
* *
* Version 3.10 *
* *
* Copyright (c) 1985-1992, Microsoft Corp. All rights reserved. *
* *
*******************************************************************************
*
* The following symbols control inclusion of various parts of this file:
*
* WINVER Windows version number (0x030a). To exclude
* definitions introduced in version 3.1 (or above)
* #define WINVER 0x0300 before #including <windows.h>
*
* #define: To prevent inclusion of:
*
* NOKERNEL KERNEL APIs and definitions
* NOGDI GDI APIs and definitions
* NOUSER USER APIs and definitions
* NOSOUND Sound APIs and definitions
* NOCOMM Comm driver APIs and definitions
* NODRIVERS Installable driver APIs and definitions
*
* NOHELP Help support
* NOCLIPBOARD Clipboard APIs and definitions
* NOMENUS Menu APIs
* NOSCROLL Scrolling APIs and scroll bar control
*
\****************************************************************************/
^
option expr32
option casemap:none
; Begin of file win31.h
ifndef _INC_WINDOWS_INC ; if WINDOWS.INC hasn't been included
_INC_WINDOWS_INC = 1
WINVER EQU 00000030ah ; assume WINDOWS 3.1
BOOL TYPEDEF SWORD
FALSE EQU 0t
TRUE EQU 1t
UINT TYPEDEF WORD
WPARAM TYPEDEF UINT
LPARAM TYPEDEF SDWORD
LRESULT TYPEDEF SDWORD
NULL EQU 0t
PSTR TYPEDEF NEAR PTR SBYTE
NPSTR TYPEDEF NEAR PTR SBYTE
LPSTR TYPEDEF FAR PTR SBYTE
LPCSTR TYPEDEF FAR PTR SBYTE
PBYTE TYPEDEF NEAR PTR BYTE
LPBYTE TYPEDEF FAR PTR BYTE
PINT TYPEDEF NEAR PTR SWORD
LPINT TYPEDEF FAR PTR SWORD
PWORD TYPEDEF NEAR PTR WORD
LPWORD TYPEDEF FAR PTR WORD
PLONG TYPEDEF NEAR PTR SDWORD
LPLONG TYPEDEF FAR PTR SDWORD
PDWORD TYPEDEF NEAR PTR DWORD
LPDWORD TYPEDEF FAR PTR DWORD
LPVOID TYPEDEF FAR PTR
HANDLE TYPEDEF UINT
PHANDLE TYPEDEF PTR HANDLE
SPHANDLE TYPEDEF NEAR PTR HANDLE
LPHANDLE TYPEDEF FAR PTR HANDLE
HGLOBAL TYPEDEF HANDLE
HLOCAL TYPEDEF HANDLE
GLOBALHANDLE TYPEDEF HANDLE
LOCALHANDLE TYPEDEF HANDLE
ATOM TYPEDEF UINT
FARPROC TYPEDEF FAR PTR
NEARPROC TYPEDEF NEAR PTR
HSTR TYPEDEF UINT
HINSTANCE TYPEDEF UINT
HMODULE TYPEDEF HINSTANCE
ifndef NOKERNEL ; KERNEL FUNCTIONS
@proto_0 TYPEDEF PROTO FAR PASCAL
GetVersion PROTO @proto_0
@proto_1 TYPEDEF PROTO FAR PASCAL :UINT
GetFreeSpace PROTO @proto_1
@proto_2 TYPEDEF PROTO FAR PASCAL
GetCurrentPDB PROTO @proto_2
@proto_3 TYPEDEF PROTO FAR PASCAL :LPSTR, :UINT
GetWindowsDirectory PROTO @proto_3
@proto_4 TYPEDEF PROTO FAR PASCAL :LPSTR, :UINT
GetSystemDirectory PROTO @proto_4
@proto_5 TYPEDEF PROTO FAR PASCAL :UINT
GetFreeSystemResources PROTO @proto_5
GFSR_SYSTEMRESOURCES EQU 000000000h
GFSR_GDIRESOURCES EQU 000000001h
GFSR_USERRESOURCES EQU 000000002h
@proto_6 TYPEDEF PROTO FAR PASCAL
GetWinFlags PROTO @proto_6
WF_PMODE EQU 000000001h
WF_CPU286 EQU 000000002h
WF_CPU386 EQU 000000004h
WF_CPU486 EQU 000000008h
WF_STANDARD EQU 000000010h
WF_WIN286 EQU 000000010h
WF_ENHANCED EQU 000000020h
WF_WIN386 EQU 000000020h
WF_CPU086 EQU 000000040h
WF_CPU186 EQU 000000080h
WF_LARGEFRAME EQU 000000100h
WF_SMALLFRAME EQU 000000200h
WF_80x87 EQU 000000400h
WF_PAGING EQU 000000800h
WF_WLO EQU 000008000h
@proto_7 TYPEDEF PROTO FAR PASCAL
GetDOSEnvironment PROTO @proto_7
@proto_8 TYPEDEF PROTO FAR PASCAL
GetCurrentTime PROTO @proto_8
@proto_9 TYPEDEF PROTO FAR PASCAL
GetTickCount PROTO @proto_9
@proto_10 TYPEDEF PROTO FAR PASCAL
GetTimerResolution PROTO @proto_10
@proto_11 TYPEDEF PROTO FAR PASCAL :UINT, :FAR PTR
LogError PROTO @proto_11
@proto_12 TYPEDEF PROTO FAR PASCAL :UINT, :FARPROC, :FAR PTR
LogParamError PROTO @proto_12
ERR_WARNING EQU 000008000h
ERR_PARAM EQU 000004000h
ERR_SIZE_MASK EQU 000003000h
ERR_BYTE EQU 000001000h
ERR_WORD EQU 000002000h
ERR_DWORD EQU 000003000h
ERR_BAD_VALUE EQU 000006001h
ERR_BAD_FLAGS EQU 000006002h
ERR_BAD_INDEX EQU 000006003h
ERR_BAD_DVALUE EQU 000007004h
ERR_BAD_DFLAGS EQU 000007005h
ERR_BAD_DINDEX EQU 000007006h
ERR_BAD_PTR EQU 000007007h
ERR_BAD_FUNC_PTR EQU 000007008h
ERR_BAD_SELECTOR EQU 000006009h
ERR_BAD_STRING_PTR EQU 00000700ah
ERR_BAD_HANDLE EQU 00000600bh
ERR_BAD_HINSTANCE EQU 000006020h
ERR_BAD_HMODULE EQU 000006021h
ERR_BAD_GLOBAL_HANDLE EQU 000006022h
ERR_BAD_LOCAL_HANDLE EQU 000006023h
ERR_BAD_ATOM EQU 000006024h
ERR_BAD_HFILE EQU 000006025h
ERR_BAD_HWND EQU 000006040h
ERR_BAD_HMENU EQU 000006041h
ERR_BAD_HCURSOR EQU 000006042h
ERR_BAD_HICON EQU 000006043h
ERR_BAD_HDWP EQU 000006044h
ERR_BAD_CID EQU 000006045h
ERR_BAD_HDRVR EQU 000006046h
ERR_BAD_COORDS EQU 000007060h
ERR_BAD_GDI_OBJECT EQU 000006061h
ERR_BAD_HDC EQU 000006062h
ERR_BAD_HPEN EQU 000006063h
ERR_BAD_HFONT EQU 000006064h
ERR_BAD_HBRUSH EQU 000006065h
ERR_BAD_HBITMAP EQU 000006066h
ERR_BAD_HRGN EQU 000006067h
ERR_BAD_HPALETTE EQU 000006068h
ERR_BAD_HMETAFILE EQU 000006069h
ERR_GALLOC EQU 000000001h
ERR_GREALLOC EQU 000000002h
ERR_GLOCK EQU 000000003h
ERR_LALLOC EQU 000000004h
ERR_LREALLOC EQU 000000005h
ERR_LLOCK EQU 000000006h
ERR_ALLOCRES EQU 000000007h
ERR_LOCKRES EQU 000000008h
ERR_LOADMODULE EQU 000000009h
ERR_CREATEDLG EQU 000000040h
ERR_CREATEDLG2 EQU 000000041h
ERR_REGISTERCLASS EQU 000000042h
ERR_DCBUSY EQU 000000043h
ERR_CREATEWND EQU 000000044h
ERR_STRUCEXTRA EQU 000000045h
ERR_LOADSTR EQU 000000046h
ERR_LOADMENU EQU 000000047h
ERR_NESTEDBEGINPAINT EQU 000000048h
ERR_BADINDEX EQU 000000049h
ERR_CREATEMENU EQU 00000004ah
ERR_CREATEDC EQU 000000080h
ERR_CREATEMETA EQU 000000081h
ERR_DELOBJSELECTED EQU 000000082h
ERR_SELBITMAP EQU 000000083h
tagWINDEBUGINFO STRUCT 1t
flags UINT ?
dwOptions DWORD ?
dwFilter DWORD ?
achAllocModule SBYTE 8t DUP (?)
dwAllocBreak DWORD ?
dwAllocCount DWORD ?
tagWINDEBUGINFO ENDS
WINDEBUGINFO TYPEDEF tagWINDEBUGINFO
@proto_13 TYPEDEF PROTO FAR PASCAL :FAR PTR WINDEBUGINFO, :UINT
GetWinDebugInfo PROTO @proto_13
@proto_14 TYPEDEF PROTO FAR PASCAL :FAR PTR tagWINDEBUGINFO
SetWinDebugInfo PROTO @proto_14
@proto_15 TYPEDEF PROTO FAR C :UINT, :LPCSTR, :VARARG
DebugOutput PROTO @proto_15
WDI_OPTIONS EQU 000000001h
WDI_FILTER EQU 000000002h
WDI_ALLOCBREAK EQU 000000004h
DBO_CHECKHEAP EQU 000000001h
DBO_BUFFERFILL EQU 000000004h
DBO_DISABLEGPTRAPPING EQU 000000010h
DBO_CHECKFREE EQU 000000020h
DBO_SILENT EQU 000008000h
DBO_TRACEBREAK EQU 000002000h
DBO_WARNINGBREAK EQU 000001000h
DBO_NOERRORBREAK EQU 000000800h
DBO_NOFATALBREAK EQU 000000400h
DBO_INT3BREAK EQU 000000100h
DBF_TRACE EQU 000000000h
DBF_WARNING EQU 000004000h
DBF_ERROR EQU 000008000h
DBF_FATAL EQU 00000c000h
DBF_KERNEL EQU 000001000h
DBF_KRN_MEMMAN EQU 000000001h
DBF_KRN_LOADMODULE EQU 000000002h
DBF_KRN_SEGMENTLOAD EQU 000000004h
DBF_USER EQU 000000800h
DBF_GDI EQU 000000400h
DBF_MMSYSTEM EQU 000000040h
DBF_PENWIN EQU 000000020h
DBF_APPLICATION EQU 000000008h
DBF_DRIVER EQU 000000010h
@proto_16 TYPEDEF PROTO FAR PASCAL :SWORD
FatalExit PROTO @proto_16
@proto_17 TYPEDEF PROTO FAR PASCAL :UINT, :LPCSTR
FatalAppExit PROTO @proto_17
@proto_18 TYPEDEF PROTO FAR PASCAL :DWORD, :UINT
ExitWindows PROTO @proto_18
EW_RESTARTWINDOWS EQU 000000042h
EW_REBOOTSYSTEM EQU 000000043h
@proto_19 TYPEDEF PROTO FAR PASCAL :LPCSTR, :LPCSTR
ExitWindowsExec PROTO @proto_19
@proto_20 TYPEDEF PROTO FAR PASCAL
DebugBreak PROTO @proto_20
@proto_21 TYPEDEF PROTO FAR PASCAL :LPCSTR
OutputDebugString PROTO @proto_21
SEM_FAILCRITICALERRORS EQU 000000001h
SEM_NOGPFAULTERRORBOX EQU 000000002h
SEM_NOOPENFILEERRORBOX EQU 000008000h
@proto_22 TYPEDEF PROTO FAR PASCAL :UINT
SetErrorMode PROTO @proto_22
@proto_23 TYPEDEF PROTO FAR PASCAL :FAR PTR , :UINT
IsBadReadPtr PROTO @proto_23
@proto_24 TYPEDEF PROTO FAR PASCAL :FAR PTR , :UINT
IsBadWritePtr PROTO @proto_24
@proto_25 TYPEDEF PROTO FAR PASCAL :FAR PTR , :DWORD
IsBadHugeReadPtr PROTO @proto_25
@proto_26 TYPEDEF PROTO FAR PASCAL :FAR PTR , :DWORD
IsBadHugeWritePtr PROTO @proto_26
@proto_27 TYPEDEF PROTO FAR PASCAL :FARPROC
IsBadCodePtr PROTO @proto_27
@proto_28 TYPEDEF PROTO FAR PASCAL :FAR PTR , :UINT
IsBadStringPtr PROTO @proto_28
@proto_29 TYPEDEF PROTO FAR PASCAL
ProfInsChk PROTO @proto_29
@proto_30 TYPEDEF PROTO FAR PASCAL :SWORD, :SWORD
ProfSetup PROTO @proto_30
@proto_31 TYPEDEF PROTO FAR PASCAL :SWORD, :SWORD
ProfSampRate PROTO @proto_31
@proto_32 TYPEDEF PROTO FAR PASCAL
ProfStart PROTO @proto_32
@proto_33 TYPEDEF PROTO FAR PASCAL
ProfStop PROTO @proto_33
@proto_34 TYPEDEF PROTO FAR PASCAL
ProfClear PROTO @proto_34
@proto_35 TYPEDEF PROTO FAR PASCAL
ProfFlush PROTO @proto_35
@proto_36 TYPEDEF PROTO FAR PASCAL
ProfFinish PROTO @proto_36
CATCHBUF TYPEDEF SWORD
LPCATCHBUF TYPEDEF FAR PTR SWORD
@proto_37 TYPEDEF PROTO FAR PASCAL :FAR PTR SWORD
Catch PROTO @proto_37
@proto_38 TYPEDEF PROTO FAR PASCAL :FAR PTR SWORD, :SWORD
Throw PROTO @proto_38
@proto_39 TYPEDEF PROTO FAR PASCAL
SwitchStackBack PROTO @proto_39
@proto_40 TYPEDEF PROTO FAR PASCAL :UINT, :UINT, :UINT
SwitchStackTo PROTO @proto_40
@proto_41 TYPEDEF PROTO FAR PASCAL :LPCSTR, :LPVOID
LoadModule PROTO @proto_41
@proto_42 TYPEDEF PROTO FAR PASCAL :HINSTANCE
FreeModule PROTO @proto_42
@proto_43 TYPEDEF PROTO FAR PASCAL :LPCSTR
LoadLibrary PROTO @proto_43
@proto_44 TYPEDEF PROTO FAR PASCAL :HINSTANCE
FreeLibrary PROTO @proto_44
@proto_45 TYPEDEF PROTO FAR PASCAL :LPCSTR, :UINT
WinExec PROTO @proto_45
@proto_46 TYPEDEF PROTO FAR PASCAL :LPCSTR
GetModuleHandle PROTO @proto_46
@proto_47 TYPEDEF PROTO FAR PASCAL :HINSTANCE
GetModuleUsage PROTO @proto_47
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -