add flat assembler toolchain

This commit is contained in:
2024-11-24 23:13:28 -05:00
parent 99e8e4072b
commit dbfd94ea40
302 changed files with 145599 additions and 0 deletions

View File

@@ -0,0 +1,326 @@
; DirectDraw programming example
format PE GUI 4.0
entry start
include 'win32a.inc'
include 'ddraw.inc'
section '.text' code readable executable
start:
and [DDraw],0
and [DDSPrimary],0
and [DDSBack],0
and [DDPalette],0
and [DDSPicture],0
invoke GetModuleHandleA,NULL
mov [hinstance],eax
invoke LoadIconA,NULL,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursorA,NULL,IDC_ARROW
mov [wc.hCursor],eax
mov [wc.style],0
mov [wc.lpfnWndProc],WindowProc
mov [wc.cbClsExtra],0
mov [wc.cbWndExtra],0
mov eax,[hinstance]
mov [wc.hInstance],eax
mov [wc.hbrBackground],0
mov dword [wc.lpszMenuName],NULL
mov dword [wc.lpszClassName],_class
invoke RegisterClassA,wc
test eax,eax
jz startup_error
invoke CreateWindowExA,\
0,_class,_title,WS_POPUP+WS_VISIBLE,0,0,0,0,NULL,NULL,[hinstance],NULL
test eax,eax
jz startup_error
mov [hwnd],eax
invoke DirectDrawCreate,NULL,DDraw,NULL
or eax,eax
jnz ddraw_error
cominvk DDraw,SetCooperativeLevel,\
[hwnd],DDSCL_EXCLUSIVE+DDSCL_FULLSCREEN
or eax,eax
jnz ddraw_error
cominvk DDraw,SetDisplayMode,\
640,480,8
or eax,eax
jnz ddraw_error
mov [ddsd.dwSize],sizeof.DDSURFACEDESC
mov [ddsd.dwFlags],DDSD_CAPS+DDSD_BACKBUFFERCOUNT
mov [ddsd.ddsCaps.dwCaps],DDSCAPS_PRIMARYSURFACE+DDSCAPS_FLIP+DDSCAPS_COMPLEX
mov [ddsd.dwBackBufferCount],1
cominvk DDraw,CreateSurface,\
ddsd,DDSPrimary,NULL
or eax,eax
jnz ddraw_error
mov [ddscaps.dwCaps],DDSCAPS_BACKBUFFER
cominvk DDSPrimary,GetAttachedSurface,\
ddscaps,DDSBack
or eax,eax
jnz ddraw_error
mov esi,picture
call load_picture
jc open_error
mov esi,picture
call load_palette
jc open_error
invoke GetTickCount
mov [last_tick],eax
jmp paint
main_loop:
invoke PeekMessageA,msg,NULL,0,0,PM_NOREMOVE
or eax,eax
jz no_message
invoke GetMessageA,msg,NULL,0,0
or eax,eax
jz end_loop
invoke TranslateMessage,msg
invoke DispatchMessageA,msg
jmp main_loop
no_message:
cmp [active],0
je sleep
cominvk DDSPrimary,IsLost
or eax,eax
jz paint
cmp eax,DDERR_SURFACELOST
jne end_loop
cominvk DDSPrimary,Restore
paint:
mov [rect.top],0
mov [rect.bottom],480
mov [rect.left],0
mov [rect.right],640
cominvk DDSBack,BltFast,\
0,0,[DDSPicture],rect,DDBLTFAST_SRCCOLORKEY
or eax,eax
jnz paint_done
movzx eax,[frame]
xor edx,edx
mov ebx,10
div ebx
sal eax,6
add eax,480
mov [rect.top],eax
add eax,64
mov [rect.bottom],eax
sal edx,6
mov [rect.left],edx
add edx,64
mov [rect.right],edx
cominvk DDSBack,BltFast,\
[x],[y],[DDSPicture],rect,DDBLTFAST_SRCCOLORKEY
cominvk DDSPrimary,SetPalette,[DDPalette]
cominvk DDSPrimary,Flip,0,0
paint_done:
invoke GetTickCount
mov ebx,eax
sub ebx,[last_tick]
cmp ebx,20
jb main_loop
add [last_tick],20
inc [frame]
cmp [frame],60
jb main_loop
mov [frame],0
jmp main_loop
sleep:
invoke WaitMessage
jmp main_loop
ddraw_error:
mov eax,_ddraw_error
jmp error
open_error:
mov eax,_open_error
error:
invoke MessageBoxA,[hwnd],eax,_error,MB_OK+MB_ICONERROR
invoke DestroyWindow,[hwnd]
invoke PostQuitMessage,1
jmp main_loop
startup_error:
invoke MessageBoxA,[hwnd],_startup_error,_error,MB_OK+MB_ICONERROR
end_loop:
cmp [DDSPicture],0
je picture_released
cominvk DDSPicture,Release
picture_released:
cmp [DDPalette],0
je palette_released
cominvk DDPalette,Release
palette_released:
cmp [DDSBack],0
je back_surface_released
cominvk DDSPrimary,DeleteAttachedSurface,0,DDSBack
back_surface_released:
cmp [DDSPrimary],0
je primary_surface_released
cominvk DDSPrimary,Release
primary_surface_released:
cmp [DDraw],0
je ddraw_released
cominvk DDraw,Release
ddraw_released:
invoke ExitProcess,[msg.wParam]
include 'gif87a.inc'
proc WindowProc hwnd,wmsg,wparam,lparam
push ebx esi edi
mov eax,[wmsg]
cmp eax,WM_CREATE
je .wmcreate
cmp eax,WM_DESTROY
je .wmdestroy
cmp eax,WM_ACTIVATE
je .wmactivate
cmp eax,WM_SETCURSOR
je .wmsetcursor
cmp eax,WM_MOUSEMOVE
je .wmmousemove
cmp eax,WM_KEYDOWN
je .wmkeydown
.defwindowproc:
invoke DefWindowProcA,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmcreate:
xor eax,eax
jmp .finish
.wmkeydown:
cmp [wparam],VK_ESCAPE
jne .finish
.wmdestroy:
cominvk DDraw,RestoreDisplayMode
invoke PostQuitMessage,0
xor eax,eax
jmp .finish
.wmactivate:
mov eax,[wparam]
mov [active],al
jmp .finish
.wmsetcursor:
invoke SetCursor,0
xor eax,eax
jmp .finish
.wmmousemove:
movsx eax,word [lparam]
mov [x],eax
movsx eax,word [lparam+2]
mov [y],eax
.finish:
pop edi esi ebx
ret
endp
section '.data' data readable writeable
_title db 'flat assembler DirectDraw application',0
_class db 'FDDRAW32',0
_error db 'Error',0
_startup_error db 'Startup failed.',0
_ddraw_error db 'Direct Draw initialization failed.',0
_open_error db 'Failed opening data file.',0
picture db 'DDRAW.GIF',0
section '.bss' readable writeable
hinstance dd ?
hwnd dd ?
wc WNDCLASS
msg MSG
ddsd DDSURFACEDESC
ddscaps DDSCAPS
DDraw DirectDraw
DDSPrimary DirectDrawSurface
DDSBack DirectDrawSurface
DDSPicture DirectDrawSurface
DDPalette DirectDrawPalette
bytes_count dd ?
last_tick dd ?
frame db ?
active db ?
LZW_bits db ?
LZW_table rd (0F00h-2)*2
buffer rb 40000h
rect RECT
x dd ?
y dd ?
section '.idata' import data readable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL',\
ddraw,'DDRAW.DLL'
import kernel,\
GetModuleHandleA,'GetModuleHandleA',\
CreateFileA,'CreateFileA',\
ReadFile,'ReadFile',\
CloseHandle,'CloseHandle',\
GetTickCount,'GetTickCount',\
ExitProcess,'ExitProcess'
import user,\
RegisterClassA,'RegisterClassA',\
CreateWindowExA,'CreateWindowExA',\
DestroyWindow,'DestroyWindow',\
DefWindowProcA,'DefWindowProcA',\
GetMessageA,'GetMessageA',\
PeekMessageA,'PeekMessageA',\
TranslateMessage,'TranslateMessage',\
DispatchMessageA,'DispatchMessageA',\
LoadCursorA,'LoadCursorA',\
LoadIconA,'LoadIconA',\
SetCursor,'SetCursor',\
MessageBoxA,'MessageBoxA',\
PostQuitMessage,'PostQuitMessage',\
WaitMessage,'WaitMessage'
import ddraw,\
DirectDrawCreate,'DirectDrawCreate'

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -0,0 +1,424 @@
; DirectDraw interface
interface DirectDraw,\
QueryInterface,\
AddRef,\
Release,\
Compact,\
CreateClipper,\
CreatePalette,\
CreateSurface,\
DuplicateSurface,\
EnumDisplayModes,\
EnumSurfaces,\
FlipToGDISurface,\
GetCaps,\
GetDisplayMode,\
GetFourCCCodes,\
GetGDISurface,\
GetMonitorFrequency,\
GetScanLine,\
GetVerticalBlankStatus,\
Initialize,\
RestoreDisplayMode,\
SetCooperativeLevel,\
SetDisplayMode,\
WaitForVerticalBlank,\
GetAvailableVidMem,\
GetSurfaceFromDC,\
RestoreAllSurfaces,\
TestCooperativeLevel,\
GetDeviceIdentifier,\
StartModeTest,\
EvaluateMode
interface DirectDrawSurface,\
QueryInterface,\
AddRef,\
Release,\
AddAttachedSurface,\
AddOverlayDirtyRect,\
Blt,\
BltBatch,\
BltFast,\
DeleteAttachedSurface,\
EnumAttachedSurfaces,\
EnumOverlayZOrders,\
Flip,\
GetAttachedSurface,\
GetBltStatus,\
GetCaps,\
GetClipper,\
GetColorKey,\
GetDC,\
GetFlipStatus,\
GetOverlayPosition,\
GetPalette,\
GetPixelFormat,\
GetSurfaceDesc,\
Initialize,\
IsLost,\
Lock,\
ReleaseDC,\
Restore,\
SetClipper,\
SetColorKey,\
SetOverlayPosition,\
SetPalette,\
Unlock,\
UpdateOverlay,\
UpdateOverlayDisplay,\
UpdateOverlayZOrder,\
GetDDInterface,\
PageLock,\
PageUnlock,\
SetSurfaceDesc,\
SetPrivateData,\
GetPrivateData,\
FreePrivateData,\
GetUniquenessValue,\
ChangeUniquenessValue,\
SetPriority,\
GetPriority,\
SetLOD,\
GetLOD
interface DirectDrawPalette,\
QueryInterface,\
AddRef,\
Release,\
GetCaps,\
GetEntries,\
Initialize,\
SetEntries
interface DirectDrawClipper,\
QueryInterface,\
AddRef,\
Release,\
GetClipList,\
GetHWnd,\
Initialize,\
IsClipListChanged,\
SetClipList,\
SetHWnd
interface DirectDrawColorControl,\
QueryInterface,\
AddRef,\
Release,\
GetColorControls,\
SetColorControls
interface DirectDrawGammaControl,\
QueryInterface,\
AddRef,\
Release,\
GetGammaRamp,\
SetGammaRamp
struct DDCOLORKEY
dwColorSpaceLowValue dd ?
dwColorSpaceHighValue dd ?
ends
struct DDPIXELFORMAT
dwSize dd ?
dwFlags dd ?
dwFourCC dd ?
union
dwRGBBitCount dd ?
dwYUVBitCount dd ?
dwZBufferBitDepth dd ?
dwAlphaBitDepth dd ?
dwLuminanceBitCount dd ?
dwBumpBitCount dd ?
ends
union
dwRBitMask dd ?
dwYBitMask dd ?
dwStencilBitDepth dd ?
dwLuminanceBitMask dd ?
dwBumpDuBitMask dd ?
ends
union
dwGBitMask dd ?
dwUBitMask dd ?
dwZBitMask dd ?
dwBumpDvBitMask dd ?
ends
union
dwBBitMask dd ?
dwVBitMask dd ?
dwStencilBitMask dd ?
dwBumpLuminanceBitMask dd ?
ends
union
dwRGBAlphaBitMask dd ?
dwYUVAlphaBitMask dd ?
dwLuminanceAlphaBitMask dd ?
dwRGBZBitMask dd ?
dwYUVZBitMask dd ?
ends
ends
struct DDSCAPS
dwCaps dd ?
ends
struct DDSURFACEDESC
dwSize dd ?
dwFlags dd ?
dwHeight dd ?
dwWidth dd ?
union
lPitch dd ?
dwLinearSize dd ?
ends
dwBackBufferCount dd ?
union
dwMipMapCount dd ?
dwZBufferBitDepth dd ?
dwRefreshRate dd ?
ends
dwAlphaBitDepth dd ?
dwReserved dd ?
lpSurface dd ?
ddckCKDestOverlay DDCOLORKEY
ddckCKDestBlt DDCOLORKEY
ddckCKSrcOverlay DDCOLORKEY
ddckCKSrcBlt DDCOLORKEY
ddpfPixelFormat DDPIXELFORMAT
ddsCaps DDSCAPS
ends
; SetCooperativeLevel flags
DDSCL_FULLSCREEN = 000000001h
DDSCL_ALLOWREBOOT = 000000002h
DDSCL_NOWINDOWCHANGES = 000000004h
DDSCL_NORMAL = 000000008h
DDSCL_EXCLUSIVE = 000000010h
DDSCL_ALLOWMODEX = 000000040h
; Blt flags
DDBLT_ALPHADEST = 000000001h
DDBLT_ALPHADESTCONSTOVERRIDE = 000000002h
DDBLT_ALPHADESTNEG = 000000004h
DDBLT_ALPHADESTSURFACEOVERRIDE = 000000008h
DDBLT_ALPHAEDGEBLEND = 000000010h
DDBLT_ALPHASRC = 000000020h
DDBLT_ALPHASRCCONSTOVERRIDE = 000000040h
DDBLT_ALPHASRCNEG = 000000080h
DDBLT_ALPHASRCSURFACEOVERRIDE = 000000100h
DDBLT_ASYNC = 000000200h
DDBLT_COLORFILL = 000000400h
DDBLT_DDFX = 000000800h
DDBLT_DDROPS = 000001000h
DDBLT_KEYDEST = 000002000h
DDBLT_KEYDESTOVERRIDE = 000004000h
DDBLT_KEYSRC = 000008000h
DDBLT_KEYSRCOVERRIDE = 000010000h
DDBLT_ROP = 000020000h
DDBLT_ROTATIONANGLE = 000040000h
DDBLT_ZBUFFER = 000080000h
DDBLT_ZBUFFERDESTCONSTOVERRIDE = 000100000h
DDBLT_ZBUFFERDESTOVERRIDE = 000200000h
DDBLT_ZBUFFERSRCCONSTOVERRIDE = 000400000h
DDBLT_ZBUFFERSRCOVERRIDE = 000800000h
DDBLT_WAIT = 001000000h
DDBLT_DEPTHFILL = 002000000h
; BltFast flags
DDBLTFAST_NOCOLORKEY = 000000000h
DDBLTFAST_SRCCOLORKEY = 000000001h
DDBLTFAST_DESTCOLORKEY = 000000002h
DDBLTFAST_WAIT = 000000010h
; Flip flags
DDFLIP_WAIT = 000000001h
DDFLIP_EVEN = 000000002h
DDFLIP_ODD = 000000004h
; DDSURFACEDESC field flags
DDSD_CAPS = 000000001h
DDSD_HEIGHT = 000000002h
DDSD_WIDTH = 000000004h
DDSD_PITCH = 000000008h
DDSD_BACKBUFFERCOUNT = 000000020h
DDSD_ZBUFFERBITDEPTH = 000000040h
DDSD_ALPHABITDEPTH = 000000080h
DDSD_LPSURFACE = 000000800h
DDSD_PIXELFORMAT = 000001000h
DDSD_CKDESTOVERLAY = 000002000h
DDSD_CKDESTBLT = 000004000h
DDSD_CKSRCOVERLAY = 000008000h
DDSD_CKSRCBLT = 000010000h
DDSD_MIPMAPCOUNT = 000020000h
DDSD_REFRESHRATE = 000040000h
DDSD_LINEARSIZE = 000080000h
DDSD_ALL = 0000FF9EEh
; DirectDrawSurface capability flags
DDSCAPS_RESERVED1 = 000000001h
DDSCAPS_ALPHA = 000000002h
DDSCAPS_BACKBUFFER = 000000004h
DDSCAPS_COMPLEX = 000000008h
DDSCAPS_FLIP = 000000010h
DDSCAPS_FRONTBUFFER = 000000020h
DDSCAPS_OFFSCREENPLAIN = 000000040h
DDSCAPS_OVERLAY = 000000080h
DDSCAPS_PALETTE = 000000100h
DDSCAPS_PRIMARYSURFACE = 000000200h
DDSCAPS_PRIMARYSURFACELEFT = 000000400h
DDSCAPS_SYSTEMMEMORY = 000000800h
DDSCAPS_TEXTURE = 000001000h
DDSCAPS_3DDEVICE = 000002000h
DDSCAPS_VIDEOMEMORY = 000004000h
DDSCAPS_VISIBLE = 000008000h
DDSCAPS_WRITEONLY = 000010000h
DDSCAPS_ZBUFFER = 000020000h
DDSCAPS_OWNDC = 000040000h
DDSCAPS_LIVEVIDEO = 000080000h
DDSCAPS_HWCODEC = 000100000h
DDSCAPS_MODEX = 000200000h
DDSCAPS_MIPMAP = 000400000h
DDSCAPS_RESERVED2 = 000800000h
DDSCAPS_ALLOCONLOAD = 004000000h
DDSCAPS_VIDEOPORT = 008000000h
DDSCAPS_LOCALVIDMEM = 010000000h
DDSCAPS_NONLOCALVIDMEM = 020000000h
DDSCAPS_STANDARDVGAMODE = 040000000h
DDSCAPS_OPTIMIZED = 080000000h
; DirectDrawSurface lock flags
DDLOCK_SURFACEMEMORYPTR = 000000000h
DDLOCK_WAIT = 000000001h
DDLOCK_EVENT = 000000002h
DDLOCK_READONLY = 000000010h
DDLOCK_WRITEONLY = 000000020h
DDLOCK_NOSYSLOCK = 000000800h
; DirectDrawPalette capabilities
DDPCAPS_4BIT = 000000001h
DDPCAPS_8BITENTRIES = 000000002h
DDPCAPS_8BIT = 000000004h
DDPCAPS_INITIALIZE = 000000008h
DDPCAPS_PRIMARYSURFACE = 000000010h
DDPCAPS_PRIMARYSURFACELEFT = 000000020h
DDPCAPS_ALLOW256 = 000000040h
DDPCAPS_VSYNC = 000000080h
DDPCAPS_1BIT = 000000100h
DDPCAPS_2BIT = 000000200h
; DirectDraw errors
DDERR_ALREADYINITIALIZED = 088760000h+5
DDERR_CANNOTATTACHSURFACE = 088760000h+10
DDERR_CANNOTDETACHSURFACE = 088760000h+20
DDERR_CURRENTLYNOTAVAIL = 088760000h+40
DDERR_EXCEPTION = 088760000h+55
DDERR_HEIGHTALIGN = 088760000h+90
DDERR_INCOMPATIBLEPRIMARY = 088760000h+95
DDERR_INVALIDCAPS = 088760000h+100
DDERR_INVALIDCLIPLIST = 088760000h+110
DDERR_INVALIDMODE = 088760000h+120
DDERR_INVALIDOBJECT = 088760000h+130
DDERR_INVALIDPIXELFORMAT = 088760000h+145
DDERR_INVALIDRECT = 088760000h+150
DDERR_LOCKEDSURFACES = 088760000h+160
DDERR_NO3D = 088760000h+170
DDERR_NOALPHAHW = 088760000h+180
DDERR_NOCLIPLIST = 088760000h+205
DDERR_NOCOLORCONVHW = 088760000h+210
DDERR_NOCOOPERATIVELEVELSET = 088760000h+212
DDERR_NOCOLORKEY = 088760000h+215
DDERR_NOCOLORKEYHW = 088760000h+220
DDERR_NODIRECTDRAWSUPPORT = 088760000h+222
DDERR_NOEXCLUSIVEMODE = 088760000h+225
DDERR_NOFLIPHW = 088760000h+230
DDERR_NOGDI = 088760000h+240
DDERR_NOMIRRORHW = 088760000h+250
DDERR_NOTFOUND = 088760000h+255
DDERR_NOOVERLAYHW = 088760000h+260
DDERR_NORASTEROPHW = 088760000h+280
DDERR_NOROTATIONHW = 088760000h+290
DDERR_NOSTRETCHHW = 088760000h+310
DDERR_NOT4BITCOLOR = 088760000h+316
DDERR_NOT4BITCOLORINDEX = 088760000h+317
DDERR_NOT8BITCOLOR = 088760000h+320
DDERR_NOTEXTUREHW = 088760000h+330
DDERR_NOVSYNCHW = 088760000h+335
DDERR_NOZBUFFERHW = 088760000h+340
DDERR_NOZOVERLAYHW = 088760000h+350
DDERR_OUTOFCAPS = 088760000h+360
DDERR_OUTOFVIDEOMEMORY = 088760000h+380
DDERR_OVERLAYCANTCLIP = 088760000h+382
DDERR_OVERLAYCOLORKEYONLYONEACTI = 088760000h+384
DDERR_PALETTEBUSY = 088760000h+387
DDERR_COLORKEYNOTSET = 088760000h+400
DDERR_SURFACEALREADYATTACHED = 088760000h+410
DDERR_SURFACEALREADYDEPENDENT = 088760000h+420
DDERR_SURFACEBUSY = 088760000h+430
DDERR_CANTLOCKSURFACE = 088760000h+435
DDERR_SURFACEISOBSCURED = 088760000h+440
DDERR_SURFACELOST = 088760000h+450
DDERR_SURFACENOTATTACHED = 088760000h+460
DDERR_TOOBIGHEIGHT = 088760000h+470
DDERR_TOOBIGSIZE = 088760000h+480
DDERR_TOOBIGWIDTH = 088760000h+490
DDERR_UNSUPPORTEDFORMAT = 088760000h+510
DDERR_UNSUPPORTEDMASK = 088760000h+520
DDERR_VERTICALBLANKINPROGRESS = 088760000h+537
DDERR_WASSTILLDRAWING = 088760000h+540
DDERR_XALIGN = 088760000h+560
DDERR_INVALIDDIRECTDRAWGUID = 088760000h+561
DDERR_DIRECTDRAWALREADYCREATED = 088760000h+562
DDERR_NODIRECTDRAWHW = 088760000h+563
DDERR_PRIMARYSURFACEALREADYEXIST = 088760000h+564
DDERR_NOEMULATION = 088760000h+565
DDERR_REGIONTOOSMALL = 088760000h+566
DDERR_CLIPPERISUSINGHWND = 088760000h+567
DDERR_NOCLIPPERATTACHED = 088760000h+568
DDERR_NOHWND = 088760000h+569
DDERR_HWNDSUBCLASSED = 088760000h+570
DDERR_HWNDALREADYSET = 088760000h+571
DDERR_NOPALETTEATTACHED = 088760000h+572
DDERR_NOPALETTEHW = 088760000h+573
DDERR_BLTFASTCANTCLIP = 088760000h+574
DDERR_NOBLTHW = 088760000h+575
DDERR_NODDROPSHW = 088760000h+576
DDERR_OVERLAYNOTVISIBLE = 088760000h+577
DDERR_NOOVERLAYDEST = 088760000h+578
DDERR_INVALIDPOSITION = 088760000h+579
DDERR_NOTAOVERLAYSURFACE = 088760000h+580
DDERR_EXCLUSIVEMODEALREADYSET = 088760000h+581
DDERR_NOTFLIPPABLE = 088760000h+582
DDERR_CANTDUPLICATE = 088760000h+583
DDERR_NOTLOCKED = 088760000h+584
DDERR_CANTCREATEDC = 088760000h+585
DDERR_NODC = 088760000h+586
DDERR_WRONGMODE = 088760000h+587
DDERR_IMPLICITLYCREATED = 088760000h+588
DDERR_NOTPALETTIZED = 088760000h+589
DDERR_UNSUPPORTEDMODE = 088760000h+590
DDERR_NOMIPMAPHW = 088760000h+591
DDERR_INVALIDSURFACETYPE = 088760000h+592
DDERR_NOOPTIMIZEHW = 088760000h+600
DDERR_NOTLOADED = 088760000h+601
DDERR_DCALREADYCREATED = 088760000h+620
DDERR_NONONLOCALVIDMEM = 088760000h+630
DDERR_CANTPAGELOCK = 088760000h+640
DDERR_CANTPAGEUNLOCK = 088760000h+660
DDERR_NOTPAGELOCKED = 088760000h+680
DDERR_MOREDATA = 088760000h+690
DDERR_VIDEONOTACTIVE = 088760000h+695
DDERR_DEVICEDOESNTOWNSURFACE = 088760000h+699

View File

@@ -0,0 +1,196 @@
virtual at buffer
GIFHEADER:
.ID dd ?
.ver dw ?
.width dw ?
.height dw ?
.bits db ?
.background db ?
.reserved db ?
.length = $ - GIFHEADER
end virtual
load_picture:
invoke CreateFileA,esi,GENERIC_READ,0,0,OPEN_EXISTING,0,0
mov edi,eax
invoke ReadFile,edi,GIFHEADER,40000h,bytes_count,0
invoke CloseHandle,edi
cmp [GIFHEADER.ID],'GIF8'
jne picture_error
cmp [GIFHEADER.ver],'7a'
jne picture_error
mov al,[GIFHEADER.bits]
and al,10000111b
cmp al,10000111b
jne picture_error
add [bytes_count],buffer
mov esi,buffer+GIFHEADER.length+256*3
mov edi,esi
xor eax,eax
find_image:
cmp esi,[bytes_count]
jae picture_error
lodsb
cmp al,','
je image_found
cmp al,'!'
jne picture_error
inc esi
skip_application_data:
lodsb
add esi,eax
or al,al
jnz skip_application_data
jmp find_image
image_found:
add esi,4
xor eax,eax
lodsw
mov ebx,eax
lodsw
inc esi
cmp byte [esi],8
jne picture_error
inc esi
mov [ddsd.dwSize],sizeof.DDSURFACEDESC
mov [ddsd.dwFlags],DDSD_CAPS+DDSD_WIDTH+DDSD_HEIGHT+DDSD_CKSRCBLT
mov [ddsd.ddsCaps.dwCaps],DDSCAPS_OFFSCREENPLAIN+DDSCAPS_SYSTEMMEMORY
mov [ddsd.dwWidth],ebx
mov [ddsd.dwHeight],eax
movzx eax,[GIFHEADER.background]
mov [ddsd.ddckCKSrcBlt.dwColorSpaceLowValue],eax
mov [ddsd.ddckCKSrcBlt.dwColorSpaceHighValue],eax
cominvk DDraw,CreateSurface,\
ddsd,DDSPicture,0
or eax,eax
jnz picture_error
cominvk DDSPicture,Lock,\
0,ddsd,DDLOCK_WAIT,0
mov edi,[ddsd.lpSurface]
mov ebx,esi
movzx ebp,byte [ebx]
inc ebx
add ebp,ebx
mov [LZW_bits],0
LZW_clear:
xor edx,edx
LZW_decompress_loop:
mov ch,9
cmp edx,(100h-2)*8
jbe LZW_read_bits
mov ch,10
cmp edx,(300h-2)*8
jbe LZW_read_bits
mov ch,11
cmp edx,(700h-2)*8
jbe LZW_read_bits
mov ch,12
LZW_read_bits:
mov cl,8
sub cl,[LZW_bits]
LZW_byte_from_stream:
mov al,[ebx]
cmp ebx,ebp
jne LZW_bits_from_byte
movzx ebp,al
inc ebx
mov al,[ebx]
add ebp,ebx
LZW_bits_from_byte:
inc ebx
ror eax,8
sub cl,ch
jz LZW_bits_ready
ja LZW_bits_with_tail
add cl,ch
add cl,8
jmp LZW_byte_from_stream
LZW_bits_with_tail:
dec ebx
shl eax,cl
LZW_bits_ready:
neg cl
and cl,7
mov [LZW_bits],cl
mov cl,ch
rol eax,cl
and eax,0FFFh
cmp eax,100h
jb LZW_single_byte
je LZW_clear
sub eax,102h
jc LZW_end
shl eax,3
cmp eax,edx
ja picture_error
mov ecx,[LZW_table+eax]
mov esi,[LZW_table+eax+4]
mov [LZW_table+edx+4],edi
rep movsb
mov eax,[LZW_table+eax]
inc eax
mov [LZW_table+edx],eax
jmp LZW_decompress_next
LZW_single_byte:
mov [LZW_table+edx],2
mov [LZW_table+edx+4],edi
stosb
LZW_decompress_next:
add edx,8
jmp LZW_decompress_loop
LZW_end:
cominvk DDSPicture,Unlock,0
mov eax,[DDSPicture]
clc
ret
picture_error:
stc
ret
load_palette:
invoke CreateFileA,esi,GENERIC_READ,0,0,OPEN_EXISTING,0,0
mov edi,eax
invoke ReadFile,edi,buffer,GIFHEADER.length+256*3,bytes_count,0
cmp [bytes_count],GIFHEADER.length+256*3
jne picture_error
invoke CloseHandle,edi
cmp [GIFHEADER.ID],'GIF8'
jne picture_error
cmp [GIFHEADER.ver],'7a'
jne picture_error
mov al,[GIFHEADER.bits]
and al,111b
cmp al,111b
jne picture_error
mov esi,buffer+GIFHEADER.length
mov edi,buffer+400h
mov ecx,256
convert_palette:
movsw
movsb
xor al,al
stosb
loop convert_palette
cominvk DDraw,CreatePalette,\
DDPCAPS_8BIT+DDPCAPS_ALLOW256,buffer+400h,DDPalette,0
or eax,eax
jnz picture_error
clc
ret

View File

@@ -0,0 +1,130 @@
; DialogBox example
format PE GUI 4.0
entry start
include 'win32a.inc'
ID_CAPTION = 101
ID_MESSAGE = 102
ID_ICONERROR = 201
ID_ICONINFORMATION = 202
ID_ICONQUESTION = 203
ID_ICONWARNING = 204
ID_TOPMOST = 301
section '.text' code readable executable
start:
invoke GetModuleHandle,0
invoke DialogBoxParam,eax,37,HWND_DESKTOP,DialogProc,0
or eax,eax
jz exit
invoke MessageBox,HWND_DESKTOP,message,caption,[flags]
exit:
invoke ExitProcess,0
proc DialogProc hwnddlg,msg,wparam,lparam
push ebx esi edi
cmp [msg],WM_INITDIALOG
je .wminitdialog
cmp [msg],WM_COMMAND
je .wmcommand
cmp [msg],WM_CLOSE
je .wmclose
xor eax,eax
jmp .finish
.wminitdialog:
invoke CheckRadioButton,[hwnddlg],ID_ICONERROR,ID_ICONWARNING,ID_ICONINFORMATION
jmp .processed
.wmcommand:
cmp [wparam],BN_CLICKED shl 16 + IDCANCEL
je .wmclose
cmp [wparam],BN_CLICKED shl 16 + IDOK
jne .processed
invoke GetDlgItemText,[hwnddlg],ID_CAPTION,caption,40h
invoke GetDlgItemText,[hwnddlg],ID_MESSAGE,message,100h
mov [flags],MB_OK
invoke IsDlgButtonChecked,[hwnddlg],ID_ICONERROR
cmp eax,BST_CHECKED
jne .iconerror_ok
or [flags],MB_ICONERROR
.iconerror_ok:
invoke IsDlgButtonChecked,[hwnddlg],ID_ICONINFORMATION
cmp eax,BST_CHECKED
jne .iconinformation_ok
or [flags],MB_ICONINFORMATION
.iconinformation_ok:
invoke IsDlgButtonChecked,[hwnddlg],ID_ICONQUESTION
cmp eax,BST_CHECKED
jne .iconquestion_ok
or [flags],MB_ICONQUESTION
.iconquestion_ok:
invoke IsDlgButtonChecked,[hwnddlg],ID_ICONWARNING
cmp eax,BST_CHECKED
jne .iconwarning_ok
or [flags],MB_ICONWARNING
.iconwarning_ok:
invoke IsDlgButtonChecked,[hwnddlg],ID_TOPMOST
cmp eax,BST_CHECKED
jne .topmost_ok
or [flags],MB_TOPMOST
.topmost_ok:
invoke EndDialog,[hwnddlg],1
jmp .processed
.wmclose:
invoke EndDialog,[hwnddlg],0
.processed:
mov eax,1
.finish:
pop edi esi ebx
ret
endp
section '.bss' readable writeable
flags dd ?
caption rb 40h
message rb 100h
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL'
import kernel,\
GetModuleHandle,'GetModuleHandleA',\
ExitProcess,'ExitProcess'
import user,\
DialogBoxParam,'DialogBoxParamA',\
CheckRadioButton,'CheckRadioButton',\
GetDlgItemText,'GetDlgItemTextA',\
IsDlgButtonChecked,'IsDlgButtonChecked',\
MessageBox,'MessageBoxA',\
EndDialog,'EndDialog'
section '.rsrc' resource data readable
directory RT_DIALOG,dialogs
resource dialogs,\
37,LANG_ENGLISH+SUBLANG_DEFAULT,demonstration
dialog demonstration,'Create message box',70,70,190,175,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME
dialogitem 'STATIC','&Caption:',-1,10,10,70,8,WS_VISIBLE
dialogitem 'EDIT','',ID_CAPTION,10,20,170,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP
dialogitem 'STATIC','&Message:',-1,10,40,70,8,WS_VISIBLE
dialogitem 'EDIT','',ID_MESSAGE,10,50,170,13,WS_VISIBLE+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL
dialogitem 'BUTTON','&Icon',-1,10,70,80,70,WS_VISIBLE+BS_GROUPBOX
dialogitem 'BUTTON','&Error',ID_ICONERROR,20,82,60,13,WS_VISIBLE+BS_AUTORADIOBUTTON+WS_TABSTOP+WS_GROUP
dialogitem 'BUTTON','I&nformation',ID_ICONINFORMATION,20,95,60,13,WS_VISIBLE+BS_AUTORADIOBUTTON
dialogitem 'BUTTON','&Question',ID_ICONQUESTION,20,108,60,13,WS_VISIBLE+BS_AUTORADIOBUTTON
dialogitem 'BUTTON','&Warning',ID_ICONWARNING,20,121,60,13,WS_VISIBLE+BS_AUTORADIOBUTTON
dialogitem 'BUTTON','&Style',-1,100,70,80,70,WS_VISIBLE+BS_GROUPBOX
dialogitem 'BUTTON','&Top most',ID_TOPMOST,110,82,60,13,WS_VISIBLE+WS_TABSTOP+BS_AUTOCHECKBOX
dialogitem 'BUTTON','OK',IDOK,85,150,45,15,WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON
dialogitem 'BUTTON','C&ancel',IDCANCEL,135,150,45,15,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON
enddialog

View File

@@ -0,0 +1,59 @@
; DLL creation example
format PE GUI 4.0 DLL
entry DllEntryPoint
include 'win32a.inc'
section '.text' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax,TRUE
ret
endp
; VOID ShowErrorMessage(HWND hWnd,DWORD dwError);
proc ShowErrorMessage hWnd,dwError
local lpBuffer:DWORD
lea eax,[lpBuffer]
invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0
invoke MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK
invoke LocalFree,[lpBuffer]
ret
endp
; VOID ShowLastError(HWND hWnd);
proc ShowLastError hWnd
invoke GetLastError
stdcall ShowErrorMessage,[hWnd],eax
ret
endp
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL'
import kernel,\
GetLastError,'GetLastError',\
SetLastError,'SetLastError',\
FormatMessage,'FormatMessageA',\
LocalFree,'LocalFree'
import user,\
MessageBox,'MessageBoxA'
section '.edata' export data readable
export 'ERRORMSG.DLL',\
ShowErrorMessage,'ShowErrorMessage',\
ShowLastError,'ShowLastError'
section '.reloc' fixups data readable discardable
if $=$$
dd 0,8 ; if there are no fixups, generate dummy entry
end if

View File

@@ -0,0 +1,24 @@
format PE GUI 4.0
entry start
include 'win32a.inc'
section '.text' code readable executable
start:
invoke SetLastError,0
invoke ShowLastError,HWND_DESKTOP
invoke ExitProcess,0
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
errormsg,'ERRORMSG.DLL'
import kernel,\
SetLastError,'SetLastError',\
ExitProcess,'ExitProcess'
import errormsg,\
ShowLastError,'ShowLastError'

View File

@@ -0,0 +1,18 @@
; example of simplified Windows programming using complex macro features
include 'win32ax.inc' ; you can simply switch between win32ax, win32wx, win64ax and win64wx here
.code
start:
invoke MessageBox,HWND_DESKTOP,"May I introduce myself?",invoke GetCommandLine,MB_YESNO
.if eax = IDYES
invoke MessageBox,HWND_DESKTOP,"Hi! I'm the example program!","Hello!",MB_OK
.endif
invoke ExitProcess,0
.end start

View File

@@ -0,0 +1,206 @@
; Simple text editor - fasm example program
format PE GUI 4.0
entry start
include 'win32a.inc'
IDR_ICON = 17
IDR_MENU = 37
IDM_NEW = 101
IDM_EXIT = 102
IDM_ABOUT = 901
section '.text' code readable executable
start:
invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke LoadIcon,eax,IDR_ICON
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClass,wc
test eax,eax
jz error
invoke LoadMenu,[wc.hInstance],IDR_MENU
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_OVERLAPPEDWINDOW,144,128,256,256,NULL,eax,[wc.hInstance],NULL
test eax,eax
jz error
msg_loop:
invoke GetMessage,msg,NULL,0,0
cmp eax,1
jb end_loop
jne msg_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
error:
invoke MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK
end_loop:
invoke ExitProcess,[msg.wParam]
proc WindowProc hwnd,wmsg,wparam,lparam
push ebx esi edi
mov eax,[wmsg]
cmp eax,WM_CREATE
je .wmcreate
cmp eax,WM_SIZE
je .wmsize
cmp eax,WM_SETFOCUS
je .wmsetfocus
cmp eax,WM_COMMAND
je .wmcommand
cmp eax,WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmcreate:
invoke GetClientRect,[hwnd],client
invoke CreateWindowEx,WS_EX_CLIENTEDGE,_edit,0,WS_VISIBLE+WS_CHILD+WS_HSCROLL+WS_VSCROLL+ES_AUTOHSCROLL+ES_AUTOVSCROLL+ES_MULTILINE,[client.left],[client.top],[client.right],[client.bottom],[hwnd],0,[wc.hInstance],NULL
or eax,eax
jz .failed
mov [edithwnd],eax
invoke CreateFont,16,0,0,0,0,FALSE,FALSE,FALSE,ANSI_CHARSET,OUT_RASTER_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH+FF_DONTCARE,NULL
or eax,eax
jz .failed
mov [editfont],eax
invoke SendMessage,[edithwnd],WM_SETFONT,eax,FALSE
xor eax,eax
jmp .finish
.failed:
or eax,-1
jmp .finish
.wmsize:
invoke GetClientRect,[hwnd],client
invoke MoveWindow,[edithwnd],[client.left],[client.top],[client.right],[client.bottom],TRUE
xor eax,eax
jmp .finish
.wmsetfocus:
invoke SetFocus,[edithwnd]
xor eax,eax
jmp .finish
.wmcommand:
mov eax,[wparam]
and eax,0FFFFh
cmp eax,IDM_NEW
je .new
cmp eax,IDM_ABOUT
je .about
cmp eax,IDM_EXIT
je .wmdestroy
jmp .defwndproc
.new:
invoke SendMessage,[edithwnd],WM_SETTEXT,0,0
jmp .finish
.about:
invoke MessageBox,[hwnd],_about_text,_about_title,MB_OK
jmp .finish
.wmdestroy:
invoke DeleteObject,[editfont]
invoke PostQuitMessage,0
xor eax,eax
.finish:
pop edi esi ebx
ret
endp
section '.data' data readable writeable
_title TCHAR 'MiniPad',0
_about_title TCHAR 'About MiniPad',0
_about_text TCHAR 'This is Win32 example program created with flat assembler.',0
_error TCHAR 'Startup failed.',0
_class TCHAR 'MINIPAD32',0
_edit TCHAR 'EDIT',0
wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class
edithwnd dd ?
editfont dd ?
msg MSG
client RECT
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL',\
gdi,'GDI32.DLL'
import kernel,\
GetModuleHandle,'GetModuleHandleA',\
ExitProcess,'ExitProcess'
import user,\
RegisterClass,'RegisterClassA',\
CreateWindowEx,'CreateWindowExA',\
DefWindowProc,'DefWindowProcA',\
SetWindowLong,'SetWindowLongA',\
RedrawWindow,'RedrawWindow',\
GetMessage,'GetMessageA',\
TranslateMessage,'TranslateMessage',\
DispatchMessage,'DispatchMessageA',\
SendMessage,'SendMessageA',\
LoadCursor,'LoadCursorA',\
LoadIcon,'LoadIconA',\
LoadMenu,'LoadMenuA',\
GetClientRect,'GetClientRect',\
MoveWindow,'MoveWindow',\
SetFocus,'SetFocus',\
MessageBox,'MessageBoxA',\
PostQuitMessage,'PostQuitMessage'
import gdi,\
CreateFont,'CreateFontA',\
DeleteObject,'DeleteObject'
section '.rsrc' resource data readable
; resource directory
directory RT_MENU,menus,\
RT_ICON,icons,\
RT_GROUP_ICON,group_icons,\
RT_VERSION,versions
; resource subdirectories
resource menus,\
IDR_MENU,LANG_ENGLISH+SUBLANG_DEFAULT,main_menu
resource icons,\
1,LANG_NEUTRAL,icon_data
resource group_icons,\
IDR_ICON,LANG_NEUTRAL,main_icon
resource versions,\
1,LANG_NEUTRAL,version
menu main_menu
menuitem '&File',0,MFR_POPUP
menuitem '&New',IDM_NEW
menuseparator
menuitem 'E&xit',IDM_EXIT,MFR_END
menuitem '&Help',0,MFR_POPUP + MFR_END
menuitem '&About...',IDM_ABOUT,MFR_END
icon main_icon,icon_data,'minipad.ico'
versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_ENGLISH+SUBLANG_DEFAULT,0,\
'FileDescription','MiniPad - example program',\
'LegalCopyright','No rights reserved.',\
'FileVersion','1.0',\
'ProductVersion','1.0',\
'OriginalFilename','MINIPAD.EXE'

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

View File

@@ -0,0 +1,23 @@
; example of making Win32 COFF object file
format MS COFF
extrn '__imp__MessageBoxA@16' as MessageBox:dword
section '.text' code readable executable
public _demo
_demo:
push 0
push _caption
push _message
push 0
call [MessageBox]
ret
section '.data' data readable writeable
_caption db 'Win32 assembly',0
_message db 'Coffee time!',0

View File

@@ -0,0 +1,614 @@
; OpenGL programming example
format PE GUI 4.0
entry start
include 'win32a.inc'
include 'opengl.inc'
section '.text' code readable executable
start:
invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClass,wc
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_OVERLAPPEDWINDOW+WS_CLIPCHILDREN+WS_CLIPSIBLINGS,16,16,432,432,NULL,NULL,[wc.hInstance],NULL
mov [hwnd],eax
msg_loop:
invoke GetMessage,msg,NULL,0,0
or eax,eax
jz end_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
end_loop:
invoke ExitProcess,[msg.wParam]
proc WindowProc hwnd,wmsg,wparam,lparam
push ebx esi edi
cmp [wmsg],WM_CREATE
je .wmcreate
cmp [wmsg],WM_SIZE
je .wmsize
cmp [wmsg],WM_PAINT
je .wmpaint
cmp [wmsg],WM_KEYDOWN
je .wmkeydown
cmp [wmsg],WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmcreate:
invoke GetDC,[hwnd]
mov [hdc],eax
mov edi,pfd
mov ecx,sizeof.PIXELFORMATDESCRIPTOR shr 2
xor eax,eax
rep stosd
mov [pfd.nSize],sizeof.PIXELFORMATDESCRIPTOR
mov [pfd.nVersion],1
mov [pfd.dwFlags],PFD_SUPPORT_OPENGL+PFD_DOUBLEBUFFER+PFD_DRAW_TO_WINDOW
mov [pfd.iLayerType],PFD_MAIN_PLANE
mov [pfd.iPixelType],PFD_TYPE_RGBA
mov [pfd.cColorBits],16
mov [pfd.cDepthBits],16
mov [pfd.cAccumBits],0
mov [pfd.cStencilBits],0
invoke ChoosePixelFormat,[hdc],pfd
invoke SetPixelFormat,[hdc],eax,pfd
invoke wglCreateContext,[hdc]
mov [hrc],eax
invoke wglMakeCurrent,[hdc],[hrc]
invoke GetClientRect,[hwnd],rc
invoke glViewport,0,0,[rc.right],[rc.bottom]
invoke GetTickCount
mov [clock],eax
xor eax,eax
jmp .finish
.wmsize:
invoke GetClientRect,[hwnd],rc
invoke glViewport,0,0,[rc.right],[rc.bottom]
xor eax,eax
jmp .finish
.wmpaint:
invoke GetTickCount
sub eax,[clock]
cmp eax,10
jb .animation_ok
add [clock],eax
invoke glRotatef,[theta],0.0,0.0,1.0
.animation_ok:
invoke glClear,GL_COLOR_BUFFER_BIT
invoke glBegin,GL_QUADS
invoke glColor3f,1.0,0.1,0.1
invoke glVertex3f,-0.6,-0.6,0.0
invoke glColor3f,0.1,0.1,0.1
invoke glVertex3f,0.6,-0.6,0.0
invoke glColor3f,0.1,0.1,1.0
invoke glVertex3f,0.6,0.6,0.0
invoke glColor3f,1.0,0.1,1.0
invoke glVertex3f,-0.6,0.6,0.0
invoke glEnd
invoke SwapBuffers,[hdc]
xor eax,eax
jmp .finish
.wmkeydown:
cmp [wparam],VK_ESCAPE
jne .defwndproc
.wmdestroy:
invoke wglMakeCurrent,0,0
invoke wglDeleteContext,[hrc]
invoke ReleaseDC,[hwnd],[hdc]
invoke PostQuitMessage,0
xor eax,eax
.finish:
pop edi esi ebx
ret
endp
section '.data' data readable writeable
_title db 'OpenGL example',0
_class db 'FASMOPENGL32',0
theta GLfloat 0.6
wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,NULL,NULL,_class
hwnd dd ?
hdc dd ?
hrc dd ?
msg MSG
rc RECT
pfd PIXELFORMATDESCRIPTOR
clock dd ?
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL',\
gdi,'GDI32.DLL',\
opengl,'OPENGL32.DLL',\
glu,'GLU32.DLL'
import kernel,\
GetModuleHandle,'GetModuleHandleA',\
GetTickCount,'GetTickCount',\
ExitProcess,'ExitProcess'
import user,\
RegisterClass,'RegisterClassA',\
CreateWindowEx,'CreateWindowExA',\
DefWindowProc,'DefWindowProcA',\
GetMessage,'GetMessageA',\
TranslateMessage,'TranslateMessage',\
DispatchMessage,'DispatchMessageA',\
LoadCursor,'LoadCursorA',\
LoadIcon,'LoadIconA',\
GetClientRect,'GetClientRect',\
GetDC,'GetDC',\
ReleaseDC,'ReleaseDC',\
PostQuitMessage,'PostQuitMessage'
import gdi,\
ChoosePixelFormat,'ChoosePixelFormat',\
SetPixelFormat,'SetPixelFormat',\
SwapBuffers,'SwapBuffers'
import opengl,\
glAccum,'glAccum',\
glAlphaFunc,'glAlphaFunc',\
glAreTexturesResident,'glAreTexturesResident',\
glArrayElement,'glArrayElement',\
glBegin,'glBegin',\
glBindTexture,'glBindTexture',\
glBitmap,'glBitmap',\
glBlendFunc,'glBlendFunc',\
glCallList,'glCallList',\
glCallLists,'glCallLists',\
glClear,'glClear',\
glClearAccum,'glClearAccum',\
glClearColor,'glClearColor',\
glClearDepth,'glClearDepth',\
glClearIndex,'glClearIndex',\
glClearStencil,'glClearStencil',\
glClipPlane,'glClipPlane',\
glColor3b,'glColor3b',\
glColor3bv,'glColor3bv',\
glColor3d,'glColor3d',\
glColor3dv,'glColor3dv',\
glColor3f,'glColor3f',\
glColor3fv,'glColor3fv',\
glColor3i,'glColor3i',\
glColor3iv,'glColor3iv',\
glColor3s,'glColor3s',\
glColor3sv,'glColor3sv',\
glColor3ub,'glColor3ub',\
glColor3ubv,'glColor3ubv',\
glColor3ui,'glColor3ui',\
glColor3uiv,'glColor3uiv',\
glColor3us,'glColor3us',\
glColor3usv,'glColor3usv',\
glColor4b,'glColor4b',\
glColor4bv,'glColor4bv',\
glColor4d,'glColor4d',\
glColor4dv,'glColor4dv',\
glColor4f,'glColor4f',\
glColor4fv,'glColor4fv',\
glColor4i,'glColor4i',\
glColor4iv,'glColor4iv',\
glColor4s,'glColor4s',\
glColor4sv,'glColor4sv',\
glColor4ub,'glColor4ub',\
glColor4ubv,'glColor4ubv',\
glColor4ui,'glColor4ui',\
glColor4uiv,'glColor4uiv',\
glColor4us,'glColor4us',\
glColor4usv,'glColor4usv',\
glColorMask,'glColorMask',\
glColorMaterial,'glColorMaterial',\
glColorPointer,'glColorPointer',\
glCopyPixels,'glCopyPixels',\
glCopyTexImage1D,'glCopyTexImage1D',\
glCopyTexImage2D,'glCopyTexImage2D',\
glCopyTexSubImage1D,'glCopyTexSubImage1D',\
glCopyTexSubImage2D,'glCopyTexSubImage2D',\
glCullFace,'glCullFace',\
glDeleteLists,'glDeleteLists',\
glDeleteTextures,'glDeleteTextures',\
glDepthFunc,'glDepthFunc',\
glDepthMask,'glDepthMask',\
glDepthRange,'glDepthRange',\
glDisable,'glDisable',\
glDisableClientState,'glDisableClientState',\
glDrawArrays,'glDrawArrays',\
glDrawBuffer,'glDrawBuffer',\
glDrawElements,'glDrawElements',\
glDrawPixels,'glDrawPixels',\
glEdgeFlag,'glEdgeFlag',\
glEdgeFlagPointer,'glEdgeFlagPointer',\
glEdgeFlagv,'glEdgeFlagv',\
glEnable,'glEnable',\
glEnableClientState,'glEnableClientState',\
glEnd,'glEnd',\
glEndList,'glEndList',\
glEvalCoord1d,'glEvalCoord1d',\
glEvalCoord1dv,'glEvalCoord1dv',\
glEvalCoord1f,'glEvalCoord1f',\
glEvalCoord1fv,'glEvalCoord1fv',\
glEvalCoord2d,'glEvalCoord2d',\
glEvalCoord2dv,'glEvalCoord2dv',\
glEvalCoord2f,'glEvalCoord2f',\
glEvalCoord2fv,'glEvalCoord2fv',\
glEvalMesh1,'glEvalMesh1',\
glEvalMesh2,'glEvalMesh2',\
glEvalPoint1,'glEvalPoint1',\
glEvalPoint2,'glEvalPoint2',\
glFeedbackBuffer,'glFeedbackBuffer',\
glFinish,'glFinish',\
glFlush,'glFlush',\
glFogf,'glFogf',\
glFogfv,'glFogfv',\
glFogi,'glFogi',\
glFogiv,'glFogiv',\
glFrontFace,'glFrontFace',\
glFrustum,'glFrustum',\
glGenLists,'glGenLists',\
glGenTextures,'glGenTextures',\
glGetBooleanv,'glGetBooleanv',\
glGetClipPlane,'glGetClipPlane',\
glGetDoublev,'glGetDoublev',\
glGetError,'glGetError',\
glGetFloatv,'glGetFloatv',\
glGetIntegerv,'glGetIntegerv',\
glGetLightfv,'glGetLightfv',\
glGetLightiv,'glGetLightiv',\
glGetMapdv,'glGetMapdv',\
glGetMapfv,'glGetMapfv',\
glGetMapiv,'glGetMapiv',\
glGetMaterialfv,'glGetMaterialfv',\
glGetMaterialiv,'glGetMaterialiv',\
glGetPixelMapfv,'glGetPixelMapfv',\
glGetPixelMapuiv,'glGetPixelMapuiv',\
glGetPixelMapusv,'glGetPixelMapusv',\
glGetPointerv,'glGetPointerv',\
glGetPolygonStipple,'glGetPolygonStipple',\
glGetString,'glGetString',\
glGetTexEnvfv,'glGetTexEnvfv',\
glGetTexEnviv,'glGetTexEnviv',\
glGetTexGendv,'glGetTexGendv',\
glGetTexGenfv,'glGetTexGenfv',\
glGetTexGeniv,'glGetTexGeniv',\
glGetTexImage,'glGetTexImage',\
glGetTexLevelParameterfv,'glGetTexLevelParameterfv',\
glGetTexLevelParameteriv,'glGetTexLevelParameteriv',\
glGetTexParameterfv,'glGetTexParameterfv',\
glGetTexParameteriv,'glGetTexParameteriv',\
glHint,'glHint',\
glIndexMask,'glIndexMask',\
glIndexPointer,'glIndexPointer',\
glIndexd,'glIndexd',\
glIndexdv,'glIndexdv',\
glIndexf,'glIndexf',\
glIndexfv,'glIndexfv',\
glIndexi,'glIndexi',\
glIndexiv,'glIndexiv',\
glIndexs,'glIndexs',\
glIndexsv,'glIndexsv',\
glIndexub,'glIndexub',\
glIndexubv,'glIndexubv',\
glInitNames,'glInitNames',\
glInterleavedArrays,'glInterleavedArrays',\
glIsEnabled,'glIsEnabled',\
glIsList,'glIsList',\
glIsTexture,'glIsTexture',\
glLightModelf,'glLightModelf',\
glLightModelfv,'glLightModelfv',\
glLightModeli,'glLightModeli',\
glLightModeliv,'glLightModeliv',\
glLightf,'glLightf',\
glLightfv,'glLightfv',\
glLighti,'glLighti',\
glLightiv,'glLightiv',\
glLineStipple,'glLineStipple',\
glLineWidth,'glLineWidth',\
glListBase,'glListBase',\
glLoadIdentity,'glLoadIdentity',\
glLoadMatrixd,'glLoadMatrixd',\
glLoadMatrixf,'glLoadMatrixf',\
glLoadName,'glLoadName',\
glLogicOp,'glLogicOp',\
glMap1d,'glMap1d',\
glMap1f,'glMap1f',\
glMap2d,'glMap2d',\
glMap2f,'glMap2f',\
glMapGrid1d,'glMapGrid1d',\
glMapGrid1f,'glMapGrid1f',\
glMapGrid2d,'glMapGrid2d',\
glMapGrid2f,'glMapGrid2f',\
glMaterialf,'glMaterialf',\
glMaterialfv,'glMaterialfv',\
glMateriali,'glMateriali',\
glMaterialiv,'glMaterialiv',\
glMatrixMode,'glMatrixMode',\
glMultMatrixd,'glMultMatrixd',\
glMultMatrixf,'glMultMatrixf',\
glNewList,'glNewList',\
glNormal3b,'glNormal3b',\
glNormal3bv,'glNormal3bv',\
glNormal3d,'glNormal3d',\
glNormal3dv,'glNormal3dv',\
glNormal3f,'glNormal3f',\
glNormal3fv,'glNormal3fv',\
glNormal3i,'glNormal3i',\
glNormal3iv,'glNormal3iv',\
glNormal3s,'glNormal3s',\
glNormal3sv,'glNormal3sv',\
glNormalPointer,'glNormalPointer',\
glOrtho,'glOrtho',\
glPassThrough,'glPassThrough',\
glPixelMapfv,'glPixelMapfv',\
glPixelMapuiv,'glPixelMapuiv',\
glPixelMapusv,'glPixelMapusv',\
glPixelStoref,'glPixelStoref',\
glPixelStorei,'glPixelStorei',\
glPixelTransferf,'glPixelTransferf',\
glPixelTransferi,'glPixelTransferi',\
glPixelZoom,'glPixelZoom',\
glPointSize,'glPointSize',\
glPolygonMode,'glPolygonMode',\
glPolygonOffset,'glPolygonOffset',\
glPolygonStipple,'glPolygonStipple',\
glPopAttrib,'glPopAttrib',\
glPopClientAttrib,'glPopClientAttrib',\
glPopMatrix,'glPopMatrix',\
glPopName,'glPopName',\
glPrioritizeTextures,'glPrioritizeTextures',\
glPushAttrib,'glPushAttrib',\
glPushClientAttrib,'glPushClientAttrib',\
glPushMatrix,'glPushMatrix',\
glPushName,'glPushName',\
glRasterPos2d,'glRasterPos2d',\
glRasterPos2dv,'glRasterPos2dv',\
glRasterPos2f,'glRasterPos2f',\
glRasterPos2fv,'glRasterPos2fv',\
glRasterPos2i,'glRasterPos2i',\
glRasterPos2iv,'glRasterPos2iv',\
glRasterPos2s,'glRasterPos2s',\
glRasterPos2sv,'glRasterPos2sv',\
glRasterPos3d,'glRasterPos3d',\
glRasterPos3dv,'glRasterPos3dv',\
glRasterPos3f,'glRasterPos3f',\
glRasterPos3fv,'glRasterPos3fv',\
glRasterPos3i,'glRasterPos3i',\
glRasterPos3iv,'glRasterPos3iv',\
glRasterPos3s,'glRasterPos3s',\
glRasterPos3sv,'glRasterPos3sv',\
glRasterPos4d,'glRasterPos4d',\
glRasterPos4dv,'glRasterPos4dv',\
glRasterPos4f,'glRasterPos4f',\
glRasterPos4fv,'glRasterPos4fv',\
glRasterPos4i,'glRasterPos4i',\
glRasterPos4iv,'glRasterPos4iv',\
glRasterPos4s,'glRasterPos4s',\
glRasterPos4sv,'glRasterPos4sv',\
glReadBuffer,'glReadBuffer',\
glReadPixels,'glReadPixels',\
glRectd,'glRectd',\
glRectdv,'glRectdv',\
glRectf,'glRectf',\
glRectfv,'glRectfv',\
glRecti,'glRecti',\
glRectiv,'glRectiv',\
glRects,'glRects',\
glRectsv,'glRectsv',\
glRenderMode,'glRenderMode',\
glRotated,'glRotated',\
glRotatef,'glRotatef',\
glScaled,'glScaled',\
glScalef,'glScalef',\
glScissor,'glScissor',\
glSelectBuffer,'glSelectBuffer',\
glShadeModel,'glShadeModel',\
glStencilFunc,'glStencilFunc',\
glStencilMask,'glStencilMask',\
glStencilOp,'glStencilOp',\
glTexCoord1d,'glTexCoord1d',\
glTexCoord1dv,'glTexCoord1dv',\
glTexCoord1f,'glTexCoord1f',\
glTexCoord1fv,'glTexCoord1fv',\
glTexCoord1i,'glTexCoord1i',\
glTexCoord1iv,'glTexCoord1iv',\
glTexCoord1s,'glTexCoord1s',\
glTexCoord1sv,'glTexCoord1sv',\
glTexCoord2d,'glTexCoord2d',\
glTexCoord2dv,'glTexCoord2dv',\
glTexCoord2f,'glTexCoord2f',\
glTexCoord2fv,'glTexCoord2fv',\
glTexCoord2i,'glTexCoord2i',\
glTexCoord2iv,'glTexCoord2iv',\
glTexCoord2s,'glTexCoord2s',\
glTexCoord2sv,'glTexCoord2sv',\
glTexCoord3d,'glTexCoord3d',\
glTexCoord3dv,'glTexCoord3dv',\
glTexCoord3f,'glTexCoord3f',\
glTexCoord3fv,'glTexCoord3fv',\
glTexCoord3i,'glTexCoord3i',\
glTexCoord3iv,'glTexCoord3iv',\
glTexCoord3s,'glTexCoord3s',\
glTexCoord3sv,'glTexCoord3sv',\
glTexCoord4d,'glTexCoord4d',\
glTexCoord4dv,'glTexCoord4dv',\
glTexCoord4f,'glTexCoord4f',\
glTexCoord4fv,'glTexCoord4fv',\
glTexCoord4i,'glTexCoord4i',\
glTexCoord4iv,'glTexCoord4iv',\
glTexCoord4s,'glTexCoord4s',\
glTexCoord4sv,'glTexCoord4sv',\
glTexCoordPointer,'glTexCoordPointer',\
glTexEnvf,'glTexEnvf',\
glTexEnvfv,'glTexEnvfv',\
glTexEnvi,'glTexEnvi',\
glTexEnviv,'glTexEnviv',\
glTexGend,'glTexGend',\
glTexGendv,'glTexGendv',\
glTexGenf,'glTexGenf',\
glTexGenfv,'glTexGenfv',\
glTexGeni,'glTexGeni',\
glTexGeniv,'glTexGeniv',\
glTexImage1D,'glTexImage1D',\
glTexImage2D,'glTexImage2D',\
glTexParameterf,'glTexParameterf',\
glTexParameterfv,'glTexParameterfv',\
glTexParameteri,'glTexParameteri',\
glTexParameteriv,'glTexParameteriv',\
glTexSubImage1D,'glTexSubImage1D',\
glTexSubImage2D,'glTexSubImage2D',\
glTranslated,'glTranslated',\
glTranslatef,'glTranslatef',\
glVertex2d,'glVertex2d',\
glVertex2dv,'glVertex2dv',\
glVertex2f,'glVertex2f',\
glVertex2fv,'glVertex2fv',\
glVertex2i,'glVertex2i',\
glVertex2iv,'glVertex2iv',\
glVertex2s,'glVertex2s',\
glVertex2sv,'glVertex2sv',\
glVertex3d,'glVertex3d',\
glVertex3dv,'glVertex3dv',\
glVertex3f,'glVertex3f',\
glVertex3fv,'glVertex3fv',\
glVertex3i,'glVertex3i',\
glVertex3iv,'glVertex3iv',\
glVertex3s,'glVertex3s',\
glVertex3sv,'glVertex3sv',\
glVertex4d,'glVertex4d',\
glVertex4dv,'glVertex4dv',\
glVertex4f,'glVertex4f',\
glVertex4fv,'glVertex4fv',\
glVertex4i,'glVertex4i',\
glVertex4iv,'glVertex4iv',\
glVertex4s,'glVertex4s',\
glVertex4sv,'glVertex4sv',\
glVertexPointer,'glVertexPointer',\
glViewport,'glViewport',\
wglGetProcAddress,'wglGetProcAddress',\
wglCopyContext,'wglCopyContext',\
wglCreateContext,'wglCreateContext',\
wglCreateLayerContext,'wglCreateLayerContext',\
wglDeleteContext,'wglDeleteContext',\
wglDescribeLayerPlane,'wglDescribeLayerPlane',\
wglGetCurrentContext,'wglGetCurrentContext',\
wglGetCurrentDC,'wglGetCurrentDC',\
wglGetLayerPaletteEntries,'wglGetLayerPaletteEntries',\
wglMakeCurrent,'wglMakeCurrent',\
wglRealizeLayerPalette,'wglRealizeLayerPalette',\
wglSetLayerPaletteEntries,'wglSetLayerPaletteEntries',\
wglShareLists,'wglShareLists',\
wglSwapLayerBuffers,'wglSwapLayerBuffers',\
wglSwapMultipleBuffers,'wglSwapMultipleBuffers',\
wglUseFontBitmapsA,'wglUseFontBitmapsA',\
wglUseFontOutlinesA,'wglUseFontOutlinesA',\
wglUseFontBitmapsW,'wglUseFontBitmapsW',\
wglUseFontOutlinesW,'wglUseFontOutlinesW',\
glDrawRangeElements,'glDrawRangeElements',\
glTexImage3D,'glTexImage3D',\
glBlendColor,'glBlendColor',\
glBlendEquation,'glBlendEquation',\
glColorSubTable,'glColorSubTable',\
glCopyColorSubTable,'glCopyColorSubTable',\
glColorTable,'glColorTable',\
glCopyColorTable,'glCopyColorTable',\
glColorTableParameteriv,'glColorTableParameteriv',\
glColorTableParameterfv,'glColorTableParameterfv',\
glGetColorTable,'glGetColorTable',\
glGetColorTableParameteriv,'glGetColorTableParameteriv',\
glGetColorTableParameterfv,'glGetColorTableParameterfv',\
glConvolutionFilter1D,'glConvolutionFilter1D',\
glConvolutionFilter2D,'glConvolutionFilter2D',\
glCopyConvolutionFilter1D,'glCopyConvolutionFilter1D',\
glCopyConvolutionFilter2D,'glCopyConvolutionFilter2D',\
glGetConvolutionFilter,'glGetConvolutionFilter',\
glSeparableFilter2D,'glSeparableFilter2D',\
glGetSeparableFilter,'glGetSeparableFilter',\
glConvolutionParameteri,'glConvolutionParameteri',\
glConvolutionParameteriv,'glConvolutionParameteriv',\
glConvolutionParameterf,'glConvolutionParameterf',\
glConvolutionParameterfv,'glConvolutionParameterfv',\
glGetConvolutionParameteriv,'glGetConvolutionParameteriv',\
glGetConvolutionParameterfv,'glGetConvolutionParameterfv',\
glHistogram,'glHistogram',\
glResetHistogram,'glResetHistogram',\
glGetHistogram,'glGetHistogram',\
glGetHistogramParameteriv,'glGetHistogramParameteriv',\
glGetHistogramParameterfv,'glGetHistogramParameterfv',\
glMinmax,'glMinmax',\
glResetMinmax,'glResetMinmax',\
glGetMinmax,'glGetMinmax',\
glGetMinmaxParameteriv,'glGetMinmaxParameteriv',\
glGetMinmaxParameterfv,'glGetMinmaxParameterfv'
import glu,\
gluBeginCurve,'gluBeginCurve',\
gluBeginPolygon,'gluBeginPolygon',\
gluBeginSurface,'gluBeginSurface',\
gluBeginTrim,'gluBeginTrim',\
gluBuild1DMipmaps,'gluBuild1DMipmaps',\
gluBuild2DMipmaps,'gluBuild2DMipmaps',\
gluCylinder,'gluCylinder',\
gluDeleteNurbsRenderer,'gluDeleteNurbsRenderer',\
gluDeleteQuadric,'gluDeleteQuadric',\
gluDeleteTess,'gluDeleteTess',\
gluDisk,'gluDisk',\
gluEndCurve,'gluEndCurve',\
gluEndPolygon,'gluEndPolygon',\
gluEndSurface,'gluEndSurface',\
gluEndTrim,'gluEndTrim',\
gluErrorString,'gluErrorString',\
gluGetNurbsProperty,'gluGetNurbsProperty',\
gluGetString,'gluGetString',\
gluGetTessProperty,'gluGetTessProperty',\
gluLoadSamplingMatrices,'gluLoadSamplingMatrices',\
gluLookAt,'gluLookAt',\
gluNewNurbsRenderer,'gluNewNurbsRenderer',\
gluNewQuadric,'gluNewQuadric',\
gluNewTess,'gluNewTess',\
gluNextContour,'gluNextContour',\
gluNurbsCallback,'gluNurbsCallback',\
gluNurbsCurve,'gluNurbsCurve',\
gluNurbsProperty,'gluNurbsProperty',\
gluNurbsSurface,'gluNurbsSurface',\
gluOrtho2D,'gluOrtho2D',\
gluPartialDisk,'gluPartialDisk',\
gluPerspective,'gluPerspective',\
gluPickMatrix,'gluPickMatrix',\
gluProject,'gluProject',\
gluPwlCurve,'gluPwlCurve',\
gluQuadricCallback,'gluQuadricCallback',\
gluQuadricDrawStyle,'gluQuadricDrawStyle',\
gluQuadricNormals,'gluQuadricNormals',\
gluQuadricOrientation,'gluQuadricOrientation',\
gluQuadricTexture,'gluQuadricTexture',\
gluScaleImage,'gluScaleImage',\
gluSphere,'gluSphere',\
gluTessBeginContour,'gluTessBeginContour',\
gluTessBeginPolygon,'gluTessBeginPolygon',\
gluTessCallback,'gluTessCallback',\
gluTessEndContour,'gluTessEndContour',\
gluTessEndPolygon,'gluTessEndPolygon',\
gluTessNormal,'gluTessNormal',\
gluTessProperty,'gluTessProperty',\
gluTessVertex,'gluTessVertex',\
gluUnProject,'gluUnProject'

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
; Example of making 32-bit PE program as raw code and data
format PE GUI
entry start
section '.text' code readable executable
start:
push 0
push _caption
push _message
push 0
call [MessageBoxA]
push 0
call [ExitProcess]
section '.data' data readable writeable
_caption db 'Win32 assembly program',0
_message db 'Hello World!',0
section '.idata' import data readable writeable
dd 0,0,0,RVA kernel_name,RVA kernel_table
dd 0,0,0,RVA user_name,RVA user_table
dd 0,0,0,0,0
kernel_table:
ExitProcess dd RVA _ExitProcess
dd 0
user_table:
MessageBoxA dd RVA _MessageBoxA
dd 0
kernel_name db 'KERNEL32.DLL',0
user_name db 'USER32.DLL',0
_ExitProcess dw 0
db 'ExitProcess',0
_MessageBoxA dw 0
db 'MessageBoxA',0
section '.reloc' fixups data readable discardable ; needed for Win32s

View File

@@ -0,0 +1,71 @@
; Template for program using standard Win32 headers
format PE GUI 4.0
entry start
include 'win32w.inc'
section '.text' code readable executable
start:
invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClass,wc
test eax,eax
jz error
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,128,128,256,192,NULL,NULL,[wc.hInstance],NULL
test eax,eax
jz error
msg_loop:
invoke GetMessage,msg,NULL,0,0
cmp eax,1
jb end_loop
jne msg_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
error:
invoke MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK
end_loop:
invoke ExitProcess,[msg.wParam]
proc WindowProc uses ebx esi edi, hwnd,wmsg,wparam,lparam
cmp [wmsg],WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmdestroy:
invoke PostQuitMessage,0
xor eax,eax
.finish:
ret
endp
section '.data' data readable writeable
_class TCHAR 'FASMWIN32',0
_title TCHAR 'Win32 program template',0
_error TCHAR 'Startup failed.',0
wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class
msg MSG
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'
include 'api\kernel32.inc'
include 'api\user32.inc'

View File

@@ -0,0 +1,142 @@
; Component Object Model usage demonstration
format PE GUI 4.0
entry start
include 'win32a.inc'
struc GUID def
{
match d1-d2-d3-d4-d5, def
\{
.Data1 dd 0x\#d1
.Data2 dw 0x\#d2
.Data3 dw 0x\#d3
.Data4 db 0x\#d4 shr 8,0x\#d4 and 0FFh
.Data5 db 0x\#d5 shr 40,0x\#d5 shr 32 and 0FFh,0x\#d5 shr 24 and 0FFh,0x\#d5 shr 16 and 0FFh,0x\#d5 shr 8 and 0FFh,0x\#d5 and 0FFh
\}
}
interface ITaskBarList,\
QueryInterface,\
AddRef,\
Release,\
HrInit,\
AddTab,\
DeleteTab,\
ActivateTab,\
SetActiveAlt
CLSCTX_INPROC_SERVER = 0x1
CLSCTX_INPROC_HANDLER = 0x2
CLSCTX_LOCAL_SERVER = 0x4
CLSCTX_INPROC_SERVER16 = 0x8
CLSCTX_REMOTE_SERVER = 0x10
CLSCTX_INPROC_HANDLER16 = 0x20
CLSCTX_INPROC_SERVERX86 = 0x40
CLSCTX_INPROC_HANDLERX86 = 0x80
CLSCTX_ESERVER_HANDLER = 0x100
CLSCTX_NO_CODE_DOWNLOAD = 0x400
CLSCTX_NO_CUSTOM_MARSHAL = 0x1000
CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000
CLSCTX_NO_FAILURE_LOG = 0x4000
CLSCTX_DISABLE_AAA = 0x8000
CLSCTX_ENABLE_AAA = 0x10000
CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
ID_EXIT = IDCANCEL
ID_SHOW = 100
ID_HIDE = 101
IDD_COMDEMO = 1
section '.text' code readable executable
start:
invoke CoInitialize,NULL
invoke CoCreateInstance,CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,IID_ITaskbarList,ShellTaskBar
invoke GetModuleHandle,0
invoke DialogBoxParam,eax,IDD_COMDEMO,HWND_DESKTOP,COMDemo,0
cominvk ShellTaskBar,Release
invoke ExitProcess,0
proc COMDemo hwnd,msg,wparam,lparam
push ebx esi edi
cmp [msg],WM_INITDIALOG
je .wminitdialog
cmp [msg],WM_COMMAND
je .wmcommand
cmp [msg],WM_CLOSE
je .wmclose
xor eax,eax
jmp .finish
.wminitdialog:
jmp .processed
.wmcommand:
cmp [wparam],BN_CLICKED shl 16 + ID_EXIT
je .wmclose
cmp [wparam],BN_CLICKED shl 16 + ID_SHOW
je .show
cmp [wparam],BN_CLICKED shl 16 + ID_HIDE
jne .processed
.hide:
cominvk ShellTaskBar,HrInit
cominvk ShellTaskBar,DeleteTab,[hwnd]
jmp .processed
.show:
mov ebx,[ShellTaskBar]
comcall ebx,ITaskBarList,HrInit
comcall ebx,ITaskBarList,AddTab,[hwnd]
comcall ebx,ITaskBarList,ActivateTab,[hwnd]
jmp .processed
.wmclose:
invoke EndDialog,[hwnd],0
.processed:
mov eax,1
.finish:
pop edi esi ebx
ret
endp
section '.data' data readable writeable
CLSID_TaskbarList GUID 56FDF344-FD6D-11D0-958A-006097C9A090
IID_ITaskbarList GUID 56FDF342-FD6D-11D0-958A-006097C9A090
ShellTaskBar ITaskBarList
section '.idata' import data readable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL',\
ole,'OLE32.DLL'
import kernel,\
GetModuleHandle,'GetModuleHandleA',\
ExitProcess,'ExitProcess'
import user,\
DialogBoxParam,'DialogBoxParamA',\
EndDialog,'EndDialog'
import ole,\
CoInitialize,'CoInitialize',\
CoCreateInstance,'CoCreateInstance'
section '.rsrc' resource data readable
directory RT_DIALOG,dialogs
resource dialogs,\
IDD_COMDEMO,LANG_ENGLISH+SUBLANG_DEFAULT,comdemo
dialog comdemo,'Taskbar item control',70,70,170,24,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME
dialogitem 'BUTTON','Show',ID_SHOW,4,4,45,15,WS_VISIBLE+WS_TABSTOP
dialogitem 'BUTTON','Hide',ID_HIDE,54,4,45,15,WS_VISIBLE+WS_TABSTOP
dialogitem 'BUTTON','Exit',ID_EXIT,120,4,45,15,WS_VISIBLE+WS_TABSTOP
enddialog

View File

@@ -0,0 +1,27 @@
format PE64 console
entry start
include 'win64a.inc'
section '.text' code readable executable
start:
sub rsp,8
invoke WriteMessage,message
invoke ExitProcess,0
section '.data' data readable
message db "Hi! I'm the example program!",0
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
writemsg,'WRITEMSG.DLL'
include 'api/kernel32.inc'
import writemsg,\
WriteMessage,'WriteMessage'

View File

@@ -0,0 +1,47 @@
format PE64 console DLL
entry DllEntryPoint
include 'win64a.inc'
section '.text' code readable executable
proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax,TRUE
ret
endp
proc WriteMessage uses rbx rsi rdi, message
mov rdi,rcx ; first parameter passed in RCX
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov rbx,rax
xor al,al
or rcx,-1
repne scasb
dec rdi
mov r8,-2
sub r8,rcx
sub rdi,r8
invoke WriteFile,rbx,rdi,r8,bytes_count,0
ret
endp
section '.bss' data readable writeable
bytes_count dd ?
section '.edata' export data readable
export 'WRITEMSG.DLL',\
WriteMessage,'WriteMessage'
section '.reloc' fixups data readable discardable
if $=$$
dd 0,8 ; if there are no fixups, generate dummy entry
end if
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL'
include 'api/kernel32.inc'

View File

@@ -0,0 +1,425 @@
; DirectDraw interface
interface DirectDraw,\
QueryInterface,\
AddRef,\
Release,\
Compact,\
CreateClipper,\
CreatePalette,\
CreateSurface,\
DuplicateSurface,\
EnumDisplayModes,\
EnumSurfaces,\
FlipToGDISurface,\
GetCaps,\
GetDisplayMode,\
GetFourCCCodes,\
GetGDISurface,\
GetMonitorFrequency,\
GetScanLine,\
GetVerticalBlankStatus,\
Initialize,\
RestoreDisplayMode,\
SetCooperativeLevel,\
SetDisplayMode,\
WaitForVerticalBlank,\
GetAvailableVidMem,\
GetSurfaceFromDC,\
RestoreAllSurfaces,\
TestCooperativeLevel,\
GetDeviceIdentifier,\
StartModeTest,\
EvaluateMode
interface DirectDrawSurface,\
QueryInterface,\
AddRef,\
Release,\
AddAttachedSurface,\
AddOverlayDirtyRect,\
Blt,\
BltBatch,\
BltFast,\
DeleteAttachedSurface,\
EnumAttachedSurfaces,\
EnumOverlayZOrders,\
Flip,\
GetAttachedSurface,\
GetBltStatus,\
GetCaps,\
GetClipper,\
GetColorKey,\
GetDC,\
GetFlipStatus,\
GetOverlayPosition,\
GetPalette,\
GetPixelFormat,\
GetSurfaceDesc,\
Initialize,\
IsLost,\
Lock,\
ReleaseDC,\
Restore,\
SetClipper,\
SetColorKey,\
SetOverlayPosition,\
SetPalette,\
Unlock,\
UpdateOverlay,\
UpdateOverlayDisplay,\
UpdateOverlayZOrder,\
GetDDInterface,\
PageLock,\
PageUnlock,\
SetSurfaceDesc,\
SetPrivateData,\
GetPrivateData,\
FreePrivateData,\
GetUniquenessValue,\
ChangeUniquenessValue,\
SetPriority,\
GetPriority,\
SetLOD,\
GetLOD
interface DirectDrawPalette,\
QueryInterface,\
AddRef,\
Release,\
GetCaps,\
GetEntries,\
Initialize,\
SetEntries
interface DirectDrawClipper,\
QueryInterface,\
AddRef,\
Release,\
GetClipList,\
GetHWnd,\
Initialize,\
IsClipListChanged,\
SetClipList,\
SetHWnd
interface DirectDrawColorControl,\
QueryInterface,\
AddRef,\
Release,\
GetColorControls,\
SetColorControls
interface DirectDrawGammaControl,\
QueryInterface,\
AddRef,\
Release,\
GetGammaRamp,\
SetGammaRamp
struct DDCOLORKEY
dwColorSpaceLowValue dd ?
dwColorSpaceHighValue dd ?
ends
struct DDPIXELFORMAT
dwSize dd ?
dwFlags dd ?
dwFourCC dd ?
union
dwRGBBitCount dd ?
dwYUVBitCount dd ?
dwZBufferBitDepth dd ?
dwAlphaBitDepth dd ?
dwLuminanceBitCount dd ?
dwBumpBitCount dd ?
ends
union
dwRBitMask dd ?
dwYBitMask dd ?
dwStencilBitDepth dd ?
dwLuminanceBitMask dd ?
dwBumpDuBitMask dd ?
ends
union
dwGBitMask dd ?
dwUBitMask dd ?
dwZBitMask dd ?
dwBumpDvBitMask dd ?
ends
union
dwBBitMask dd ?
dwVBitMask dd ?
dwStencilBitMask dd ?
dwBumpLuminanceBitMask dd ?
ends
union
dwRGBAlphaBitMask dd ?
dwYUVAlphaBitMask dd ?
dwLuminanceAlphaBitMask dd ?
dwRGBZBitMask dd ?
dwYUVZBitMask dd ?
ends
ends
struct DDSCAPS
dwCaps dd ?
ends
struct DDSURFACEDESC
dwSize dd ?
dwFlags dd ?
dwHeight dd ?
dwWidth dd ?
union
lPitch dd ?
dwLinearSize dd ?
ends
dwBackBufferCount dd ?
union
dwMipMapCount dd ?
dwZBufferBitDepth dd ?
dwRefreshRate dd ?
ends
dwAlphaBitDepth dd ?
dwReserved dd ?,?
lpSurface dq ?
ddckCKDestOverlay DDCOLORKEY
ddckCKDestBlt DDCOLORKEY
ddckCKSrcOverlay DDCOLORKEY
ddckCKSrcBlt DDCOLORKEY
ddpfPixelFormat DDPIXELFORMAT
ddsCaps DDSCAPS
dd ?
ends
; SetCooperativeLevel flags
DDSCL_FULLSCREEN = 000000001h
DDSCL_ALLOWREBOOT = 000000002h
DDSCL_NOWINDOWCHANGES = 000000004h
DDSCL_NORMAL = 000000008h
DDSCL_EXCLUSIVE = 000000010h
DDSCL_ALLOWMODEX = 000000040h
; Blt flags
DDBLT_ALPHADEST = 000000001h
DDBLT_ALPHADESTCONSTOVERRIDE = 000000002h
DDBLT_ALPHADESTNEG = 000000004h
DDBLT_ALPHADESTSURFACEOVERRIDE = 000000008h
DDBLT_ALPHAEDGEBLEND = 000000010h
DDBLT_ALPHASRC = 000000020h
DDBLT_ALPHASRCCONSTOVERRIDE = 000000040h
DDBLT_ALPHASRCNEG = 000000080h
DDBLT_ALPHASRCSURFACEOVERRIDE = 000000100h
DDBLT_ASYNC = 000000200h
DDBLT_COLORFILL = 000000400h
DDBLT_DDFX = 000000800h
DDBLT_DDROPS = 000001000h
DDBLT_KEYDEST = 000002000h
DDBLT_KEYDESTOVERRIDE = 000004000h
DDBLT_KEYSRC = 000008000h
DDBLT_KEYSRCOVERRIDE = 000010000h
DDBLT_ROP = 000020000h
DDBLT_ROTATIONANGLE = 000040000h
DDBLT_ZBUFFER = 000080000h
DDBLT_ZBUFFERDESTCONSTOVERRIDE = 000100000h
DDBLT_ZBUFFERDESTOVERRIDE = 000200000h
DDBLT_ZBUFFERSRCCONSTOVERRIDE = 000400000h
DDBLT_ZBUFFERSRCOVERRIDE = 000800000h
DDBLT_WAIT = 001000000h
DDBLT_DEPTHFILL = 002000000h
; BltFast flags
DDBLTFAST_NOCOLORKEY = 000000000h
DDBLTFAST_SRCCOLORKEY = 000000001h
DDBLTFAST_DESTCOLORKEY = 000000002h
DDBLTFAST_WAIT = 000000010h
; Flip flags
DDFLIP_WAIT = 000000001h
DDFLIP_EVEN = 000000002h
DDFLIP_ODD = 000000004h
; DDSURFACEDESC field flags
DDSD_CAPS = 000000001h
DDSD_HEIGHT = 000000002h
DDSD_WIDTH = 000000004h
DDSD_PITCH = 000000008h
DDSD_BACKBUFFERCOUNT = 000000020h
DDSD_ZBUFFERBITDEPTH = 000000040h
DDSD_ALPHABITDEPTH = 000000080h
DDSD_LPSURFACE = 000000800h
DDSD_PIXELFORMAT = 000001000h
DDSD_CKDESTOVERLAY = 000002000h
DDSD_CKDESTBLT = 000004000h
DDSD_CKSRCOVERLAY = 000008000h
DDSD_CKSRCBLT = 000010000h
DDSD_MIPMAPCOUNT = 000020000h
DDSD_REFRESHRATE = 000040000h
DDSD_LINEARSIZE = 000080000h
DDSD_ALL = 0000FF9EEh
; DirectDrawSurface capability flags
DDSCAPS_RESERVED1 = 000000001h
DDSCAPS_ALPHA = 000000002h
DDSCAPS_BACKBUFFER = 000000004h
DDSCAPS_COMPLEX = 000000008h
DDSCAPS_FLIP = 000000010h
DDSCAPS_FRONTBUFFER = 000000020h
DDSCAPS_OFFSCREENPLAIN = 000000040h
DDSCAPS_OVERLAY = 000000080h
DDSCAPS_PALETTE = 000000100h
DDSCAPS_PRIMARYSURFACE = 000000200h
DDSCAPS_PRIMARYSURFACELEFT = 000000400h
DDSCAPS_SYSTEMMEMORY = 000000800h
DDSCAPS_TEXTURE = 000001000h
DDSCAPS_3DDEVICE = 000002000h
DDSCAPS_VIDEOMEMORY = 000004000h
DDSCAPS_VISIBLE = 000008000h
DDSCAPS_WRITEONLY = 000010000h
DDSCAPS_ZBUFFER = 000020000h
DDSCAPS_OWNDC = 000040000h
DDSCAPS_LIVEVIDEO = 000080000h
DDSCAPS_HWCODEC = 000100000h
DDSCAPS_MODEX = 000200000h
DDSCAPS_MIPMAP = 000400000h
DDSCAPS_RESERVED2 = 000800000h
DDSCAPS_ALLOCONLOAD = 004000000h
DDSCAPS_VIDEOPORT = 008000000h
DDSCAPS_LOCALVIDMEM = 010000000h
DDSCAPS_NONLOCALVIDMEM = 020000000h
DDSCAPS_STANDARDVGAMODE = 040000000h
DDSCAPS_OPTIMIZED = 080000000h
; DirectDrawSurface lock flags
DDLOCK_SURFACEMEMORYPTR = 000000000h
DDLOCK_WAIT = 000000001h
DDLOCK_EVENT = 000000002h
DDLOCK_READONLY = 000000010h
DDLOCK_WRITEONLY = 000000020h
DDLOCK_NOSYSLOCK = 000000800h
; DirectDrawPalette capabilities
DDPCAPS_4BIT = 000000001h
DDPCAPS_8BITENTRIES = 000000002h
DDPCAPS_8BIT = 000000004h
DDPCAPS_INITIALIZE = 000000008h
DDPCAPS_PRIMARYSURFACE = 000000010h
DDPCAPS_PRIMARYSURFACELEFT = 000000020h
DDPCAPS_ALLOW256 = 000000040h
DDPCAPS_VSYNC = 000000080h
DDPCAPS_1BIT = 000000100h
DDPCAPS_2BIT = 000000200h
; DirectDraw errors
DDERR_ALREADYINITIALIZED = 088760000h+5
DDERR_CANNOTATTACHSURFACE = 088760000h+10
DDERR_CANNOTDETACHSURFACE = 088760000h+20
DDERR_CURRENTLYNOTAVAIL = 088760000h+40
DDERR_EXCEPTION = 088760000h+55
DDERR_HEIGHTALIGN = 088760000h+90
DDERR_INCOMPATIBLEPRIMARY = 088760000h+95
DDERR_INVALIDCAPS = 088760000h+100
DDERR_INVALIDCLIPLIST = 088760000h+110
DDERR_INVALIDMODE = 088760000h+120
DDERR_INVALIDOBJECT = 088760000h+130
DDERR_INVALIDPIXELFORMAT = 088760000h+145
DDERR_INVALIDRECT = 088760000h+150
DDERR_LOCKEDSURFACES = 088760000h+160
DDERR_NO3D = 088760000h+170
DDERR_NOALPHAHW = 088760000h+180
DDERR_NOCLIPLIST = 088760000h+205
DDERR_NOCOLORCONVHW = 088760000h+210
DDERR_NOCOOPERATIVELEVELSET = 088760000h+212
DDERR_NOCOLORKEY = 088760000h+215
DDERR_NOCOLORKEYHW = 088760000h+220
DDERR_NODIRECTDRAWSUPPORT = 088760000h+222
DDERR_NOEXCLUSIVEMODE = 088760000h+225
DDERR_NOFLIPHW = 088760000h+230
DDERR_NOGDI = 088760000h+240
DDERR_NOMIRRORHW = 088760000h+250
DDERR_NOTFOUND = 088760000h+255
DDERR_NOOVERLAYHW = 088760000h+260
DDERR_NORASTEROPHW = 088760000h+280
DDERR_NOROTATIONHW = 088760000h+290
DDERR_NOSTRETCHHW = 088760000h+310
DDERR_NOT4BITCOLOR = 088760000h+316
DDERR_NOT4BITCOLORINDEX = 088760000h+317
DDERR_NOT8BITCOLOR = 088760000h+320
DDERR_NOTEXTUREHW = 088760000h+330
DDERR_NOVSYNCHW = 088760000h+335
DDERR_NOZBUFFERHW = 088760000h+340
DDERR_NOZOVERLAYHW = 088760000h+350
DDERR_OUTOFCAPS = 088760000h+360
DDERR_OUTOFVIDEOMEMORY = 088760000h+380
DDERR_OVERLAYCANTCLIP = 088760000h+382
DDERR_OVERLAYCOLORKEYONLYONEACTI = 088760000h+384
DDERR_PALETTEBUSY = 088760000h+387
DDERR_COLORKEYNOTSET = 088760000h+400
DDERR_SURFACEALREADYATTACHED = 088760000h+410
DDERR_SURFACEALREADYDEPENDENT = 088760000h+420
DDERR_SURFACEBUSY = 088760000h+430
DDERR_CANTLOCKSURFACE = 088760000h+435
DDERR_SURFACEISOBSCURED = 088760000h+440
DDERR_SURFACELOST = 088760000h+450
DDERR_SURFACENOTATTACHED = 088760000h+460
DDERR_TOOBIGHEIGHT = 088760000h+470
DDERR_TOOBIGSIZE = 088760000h+480
DDERR_TOOBIGWIDTH = 088760000h+490
DDERR_UNSUPPORTEDFORMAT = 088760000h+510
DDERR_UNSUPPORTEDMASK = 088760000h+520
DDERR_VERTICALBLANKINPROGRESS = 088760000h+537
DDERR_WASSTILLDRAWING = 088760000h+540
DDERR_XALIGN = 088760000h+560
DDERR_INVALIDDIRECTDRAWGUID = 088760000h+561
DDERR_DIRECTDRAWALREADYCREATED = 088760000h+562
DDERR_NODIRECTDRAWHW = 088760000h+563
DDERR_PRIMARYSURFACEALREADYEXIST = 088760000h+564
DDERR_NOEMULATION = 088760000h+565
DDERR_REGIONTOOSMALL = 088760000h+566
DDERR_CLIPPERISUSINGHWND = 088760000h+567
DDERR_NOCLIPPERATTACHED = 088760000h+568
DDERR_NOHWND = 088760000h+569
DDERR_HWNDSUBCLASSED = 088760000h+570
DDERR_HWNDALREADYSET = 088760000h+571
DDERR_NOPALETTEATTACHED = 088760000h+572
DDERR_NOPALETTEHW = 088760000h+573
DDERR_BLTFASTCANTCLIP = 088760000h+574
DDERR_NOBLTHW = 088760000h+575
DDERR_NODDROPSHW = 088760000h+576
DDERR_OVERLAYNOTVISIBLE = 088760000h+577
DDERR_NOOVERLAYDEST = 088760000h+578
DDERR_INVALIDPOSITION = 088760000h+579
DDERR_NOTAOVERLAYSURFACE = 088760000h+580
DDERR_EXCLUSIVEMODEALREADYSET = 088760000h+581
DDERR_NOTFLIPPABLE = 088760000h+582
DDERR_CANTDUPLICATE = 088760000h+583
DDERR_NOTLOCKED = 088760000h+584
DDERR_CANTCREATEDC = 088760000h+585
DDERR_NODC = 088760000h+586
DDERR_WRONGMODE = 088760000h+587
DDERR_IMPLICITLYCREATED = 088760000h+588
DDERR_NOTPALETTIZED = 088760000h+589
DDERR_UNSUPPORTEDMODE = 088760000h+590
DDERR_NOMIPMAPHW = 088760000h+591
DDERR_INVALIDSURFACETYPE = 088760000h+592
DDERR_NOOPTIMIZEHW = 088760000h+600
DDERR_NOTLOADED = 088760000h+601
DDERR_DCALREADYCREATED = 088760000h+620
DDERR_NONONLOCALVIDMEM = 088760000h+630
DDERR_CANTPAGELOCK = 088760000h+640
DDERR_CANTPAGEUNLOCK = 088760000h+660
DDERR_NOTPAGELOCKED = 088760000h+680
DDERR_MOREDATA = 088760000h+690
DDERR_VIDEONOTACTIVE = 088760000h+695
DDERR_DEVICEDOESNTOWNSURFACE = 088760000h+699

View File

@@ -0,0 +1,319 @@
format PE64 GUI 5.0
entry start
include 'win64a.inc'
include 'ddraw64.inc'
section '.text' code readable executable
start:
sub rsp,8
and [DDraw],0
and [DDSPrimary],0
and [DDSBack],0
invoke GetModuleHandle,NULL
mov [hinstance],rax
mov [wc.hInstance],rax
invoke LoadIcon,NULL,IDI_APPLICATION
mov [wc.hIcon],rax
invoke LoadCursor,NULL,IDC_ARROW
mov [wc.hCursor],rax
invoke RegisterClassEx,wc
test rax,rax
jz startup_error
invoke CreateWindowEx,\
0,_class,_title,WS_POPUP+WS_VISIBLE,0,0,0,0,NULL,NULL,[hinstance],NULL
test rax,rax
jz startup_error
mov [hwnd],rax
invoke DirectDrawCreate,NULL,DDraw,NULL
test rax,rax
jnz ddraw_error
cominvk DDraw,SetCooperativeLevel,\
[hwnd],DDSCL_EXCLUSIVE+DDSCL_FULLSCREEN
test rax,rax
jnz ddraw_error
cominvk DDraw,SetDisplayMode,\
640,480,32
test rax,rax
jnz ddraw_error
mov [ddsd.dwSize],sizeof.DDSURFACEDESC
mov [ddsd.dwFlags],DDSD_CAPS+DDSD_BACKBUFFERCOUNT
mov [ddsd.ddsCaps.dwCaps],DDSCAPS_PRIMARYSURFACE+DDSCAPS_FLIP+DDSCAPS_COMPLEX
mov [ddsd.dwBackBufferCount],1
cominvk DDraw,CreateSurface,\
ddsd,DDSPrimary,NULL
or eax,eax
jnz ddraw_error
mov [ddscaps.dwCaps],DDSCAPS_BACKBUFFER
cominvk DDSPrimary,GetAttachedSurface,\
ddscaps,DDSBack
or eax,eax
jnz ddraw_error
refresh:
cominvk DDSPrimary,IsLost
test rax,rax
jz paint
cmp eax,DDERR_SURFACELOST
jne end_loop
cominvk DDSPrimary,Restore
paint:
mov [ddsd.dwSize],sizeof.DDSURFACEDESC
mov [ddsd.dwFlags],0
cominvk DDSBack,Lock,NULL,ddsd,DDLOCK_SURFACEMEMORYPTR+DDLOCK_WAIT,NULL
test rax,rax
jnz main_loop
mov rdi,[ddsd.lpSurface]
mov r10d,[ddsd.lPitch]
xor edx,edx
movsd xmm8,[y_top]
screen:
xor ebx,ebx
movsd xmm7,[x_left]
unpcklpd xmm7,xmm8
row:
mov rcx,255
xorpd xmm1,xmm1
iterate:
movapd xmm3,xmm1
unpckhpd xmm3,xmm3
mulsd xmm3,xmm1
addsd xmm3,xmm3
mulpd xmm1,xmm1
movapd xmm2,xmm1 ; for SSE3-capable processor
unpckhpd xmm2,xmm2 ; these three instructions can be
subsd xmm1,xmm2 ; replaced with HSUBPD XMM1,XMM1
unpcklpd xmm1,xmm3
addpd xmm1,xmm7
movapd xmm0,xmm1
mulpd xmm0,xmm0
movapd xmm2,xmm0 ; for SSE3-capable processor
shufpd xmm2,xmm2,1 ; these three instructions can be
addsd xmm0,xmm2 ; replaced with HADDPD XMM0,XMM0
sqrtpd xmm0,xmm0
comisd xmm0,[limit]
ja over
loop iterate
over:
xor al,al
stosb
mov al,cl
stosb
ror al,3
stosb
stosb
movsd xmm0,[x_step]
addpd xmm7,xmm0
inc ebx
cmp ebx,640
jb row
sub rdi,640*4
add rdi,r10
subsd xmm8,[y_step]
inc edx
cmp edx,480
jb screen
mov [refresh_needed],0
cominvk DDSBack,Unlock,NULL
cominvk DDSPrimary,Flip,0,0
main_loop:
invoke PeekMessage,msg,NULL,0,0,PM_NOREMOVE
or eax,eax
jz no_message
invoke GetMessage,msg,NULL,0,0
cmp eax,1
jb end_loop
jne no_message
invoke TranslateMessage,msg
invoke DispatchMessage,msg
cmp [refresh_needed],0
jne refresh
jmp main_loop
no_message:
invoke WaitMessage
jmp main_loop
ddraw_error:
invoke wsprintf,buffer,_ddraw_error,rax
invoke MessageBox,[hwnd],buffer,_error,MB_OK+MB_ICONERROR
invoke DestroyWindow,[hwnd]
invoke PostQuitMessage,2
jmp main_loop
startup_error:
invoke MessageBox,[hwnd],_startup_error,_error,MB_OK+MB_ICONERROR
invoke ExitProcess,1
end_loop:
cominvk DDraw,RestoreDisplayMode
cmp [DDSBack],0
je back_surface_released
cominvk DDSPrimary,DeleteAttachedSurface,0,DDSBack
back_surface_released:
cmp [DDSPrimary],0
je primary_surface_released
cominvk DDSPrimary,Release
primary_surface_released:
cmp [DDraw],0
je ddraw_released
cominvk DDraw,Release
ddraw_released:
invoke ExitProcess,[msg.wParam]
proc WindowProc uses rbx rsi rdi, hwnd,wmsg,wparam,lparam
cmp edx,WM_CREATE
je .wmcreate
cmp edx,WM_DESTROY
je .wmdestroy
cmp edx,WM_LBUTTONDOWN
je .wmlbuttondown
cmp edx,WM_RBUTTONDOWN
je .wmrbuttondown
cmp edx,WM_KEYDOWN
je .wmkeydown
cmp edx,WM_ACTIVATE
je .wmactivate
.defwindowproc:
invoke DefWindowProc,rcx,rdx,r8,r9
jmp .finish
.wmcreate:
xor eax,eax
jmp .finish
.wmactivate:
test r8,r8
jz .finish
or [refresh_needed],1
jmp .finish
.wmlbuttondown:
movapd xmm0,[step]
divpd xmm0,[zoom]
movapd xmm1,xmm0
subpd xmm1,[step]
movapd [step],xmm0
movzx eax,r9w
cvtsi2sd xmm3,eax
shr r9,16
movzx eax,r9w
cvtsi2sd xmm4,eax
unpcklpd xmm3,xmm4
mulpd xmm1,xmm3
xorpd xmm1,[negate]
addpd xmm1,[origin]
movapd [origin],xmm1
or [refresh_needed],1
jmp .finish
.wmrbuttondown:
movapd xmm0,[step]
mulpd xmm0,[zoom]
movapd xmm1,xmm0
subpd xmm1,[step]
movapd [step],xmm0
movzx eax,r9w
cvtsi2sd xmm3,eax
shr r9,16
movzx eax,r9w
cvtsi2sd xmm4,eax
unpcklpd xmm3,xmm4
mulpd xmm1,xmm3
xorpd xmm1,[negate]
addpd xmm1,[origin]
movapd [origin],xmm1
or [refresh_needed],1
jmp .finish
.wmkeydown:
cmp r8d,VK_ESCAPE
jne .finish
.wmdestroy:
invoke PostQuitMessage,0
xor eax,eax
.finish:
ret
endp
section '.data' data readable writeable
wc WNDCLASSEX sizeof.WNDCLASSEX,0,WindowProc,0,0,NULL,NULL,NULL,NULL,NULL,_class,NULL
_title db 'flat assembler DirectDraw application',0
_class db 'FDDRAW64',0
_error db 'Error',0
_startup_error db 'Startup failed',0
_ddraw_error db 'Direct Draw initialization failed (error code 0x%x).',0
align 16 ; SSE data follows
label origin dqword
x_left dq -2.2
y_top dq 1.25
label step dqword
x_step dq 0.0045
y_step dq 0.0052
label zoom dqword
dq 1.2,1.2
label negate dqword
dq 8000000000000000h,0
limit dq 2.5
section '.bss' readable writeable
hinstance dq ?
hwnd dq ?
msg MSG
ddsd DDSURFACEDESC
ddscaps DDSCAPS
DDraw DirectDraw
DDSPrimary DirectDrawSurface
DDSBack DirectDrawSurface
rect RECT
refresh_needed dd ?
buffer rb 100h
section '.idata' import data readable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
ddraw,'DDRAW.DLL'
include 'api\kernel32.inc'
include 'api\user32.inc'
import ddraw,\
DirectDrawCreate,'DirectDrawCreate'

View File

@@ -0,0 +1,615 @@
; OpenGL programming example
format PE64 GUI 5.0
entry start
include 'win64a.inc'
include '..\..\opengl\opengl.inc'
section '.text' code readable executable
start:
sub rsp,8 ; Make stack dqword aligned
invoke GetModuleHandle,0
mov [wc.hInstance],rax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],rax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],rax
invoke RegisterClass,wc
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_OVERLAPPEDWINDOW+WS_CLIPCHILDREN+WS_CLIPSIBLINGS,16,16,432,432,NULL,NULL,[wc.hInstance],NULL
msg_loop:
invoke GetMessage,addr msg,NULL,0,0
cmp eax,1
jb end_loop
jne msg_loop
invoke TranslateMessage,addr msg
invoke DispatchMessage,addr msg
jmp msg_loop
end_loop:
invoke ExitProcess,[msg.wParam]
proc WindowProc uses rbx rsi rdi, hwnd,wmsg,wparam,lparam
mov [hwnd],rcx
frame
cmp edx,WM_CREATE
je .wmcreate
cmp edx,WM_SIZE
je .wmsize
cmp edx,WM_PAINT
je .wmpaint
cmp edx,WM_KEYDOWN
je .wmkeydown
cmp edx,WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,rcx,rdx,r8,r9
jmp .finish
.wmcreate:
invoke GetDC,rcx
mov [hdc],rax
lea rdi,[pfd]
mov rcx,sizeof.PIXELFORMATDESCRIPTOR shr 3
xor eax,eax
rep stosq
mov [pfd.nSize],sizeof.PIXELFORMATDESCRIPTOR
mov [pfd.nVersion],1
mov [pfd.dwFlags],PFD_SUPPORT_OPENGL+PFD_DOUBLEBUFFER+PFD_DRAW_TO_WINDOW
mov [pfd.iLayerType],PFD_MAIN_PLANE
mov [pfd.iPixelType],PFD_TYPE_RGBA
mov [pfd.cColorBits],16
mov [pfd.cDepthBits],16
mov [pfd.cAccumBits],0
mov [pfd.cStencilBits],0
invoke ChoosePixelFormat,[hdc],addr pfd
invoke SetPixelFormat,[hdc],eax,addr pfd
invoke wglCreateContext,[hdc]
mov [hrc],rax
invoke wglMakeCurrent,[hdc],[hrc]
invoke GetClientRect,[hwnd],addr rc
invoke glViewport,0,0,[rc.right],[rc.bottom]
invoke GetTickCount
mov [clock],eax
xor eax,eax
jmp .finish
.wmsize:
invoke GetClientRect,[hwnd],addr rc
invoke glViewport,0,0,[rc.right],[rc.bottom]
xor eax,eax
jmp .finish
.wmpaint:
invoke GetTickCount
sub eax,[clock]
cmp eax,10
jb .animation_ok
add [clock],eax
invoke glRotatef,float [theta],float dword 0.0,float dword 0.0,float dword 1.0
.animation_ok:
invoke glClear,GL_COLOR_BUFFER_BIT
invoke glBegin,GL_QUADS
invoke glColor3f,float dword 1.0,float dword 0.1,float dword 0.1
invoke glVertex3d,float -0.6,float -0.6,float 0.0
invoke glColor3f,float dword 0.1,float dword 0.1,float dword 0.1
invoke glVertex3d,float 0.6,float -0.6,float 0.0
invoke glColor3f,float dword 0.1,float dword 0.1,float dword 1.0
invoke glVertex3d,float 0.6,float 0.6,float 0.0
invoke glColor3f,float dword 1.0,float dword 0.1,float dword 1.0
invoke glVertex3d,float -0.6,float 0.6,float 0.0
invoke glEnd
invoke SwapBuffers,[hdc]
xor eax,eax
jmp .finish
.wmkeydown:
cmp r8d,VK_ESCAPE
jne .defwndproc
.wmdestroy:
invoke wglMakeCurrent,0,0
invoke wglDeleteContext,[hrc]
invoke ReleaseDC,[hwnd],[hdc]
invoke PostQuitMessage,0
xor eax,eax
.finish:
endf
ret
endp
section '.data' data readable writeable
_title db 'OpenGL example',0
_class db 'FASMOPENGL32',0
theta GLfloat 0.6
wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,NULL,NULL,_class
hdc dq ?
hrc dq ?
msg MSG
rc RECT
pfd PIXELFORMATDESCRIPTOR
clock dd ?
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL',\
gdi,'GDI32.DLL',\
opengl,'OPENGL32.DLL',\
glu,'GLU32.DLL'
import kernel,\
GetModuleHandle,'GetModuleHandleA',\
GetTickCount,'GetTickCount',\
ExitProcess,'ExitProcess'
import user,\
RegisterClass,'RegisterClassA',\
CreateWindowEx,'CreateWindowExA',\
DefWindowProc,'DefWindowProcA',\
GetMessage,'GetMessageA',\
TranslateMessage,'TranslateMessage',\
DispatchMessage,'DispatchMessageA',\
LoadCursor,'LoadCursorA',\
LoadIcon,'LoadIconA',\
GetClientRect,'GetClientRect',\
GetDC,'GetDC',\
ReleaseDC,'ReleaseDC',\
PostQuitMessage,'PostQuitMessage'
import gdi,\
ChoosePixelFormat,'ChoosePixelFormat',\
SetPixelFormat,'SetPixelFormat',\
SwapBuffers,'SwapBuffers'
import opengl,\
glAccum,'glAccum',\
glAlphaFunc,'glAlphaFunc',\
glAreTexturesResident,'glAreTexturesResident',\
glArrayElement,'glArrayElement',\
glBegin,'glBegin',\
glBindTexture,'glBindTexture',\
glBitmap,'glBitmap',\
glBlendFunc,'glBlendFunc',\
glCallList,'glCallList',\
glCallLists,'glCallLists',\
glClear,'glClear',\
glClearAccum,'glClearAccum',\
glClearColor,'glClearColor',\
glClearDepth,'glClearDepth',\
glClearIndex,'glClearIndex',\
glClearStencil,'glClearStencil',\
glClipPlane,'glClipPlane',\
glColor3b,'glColor3b',\
glColor3bv,'glColor3bv',\
glColor3d,'glColor3d',\
glColor3dv,'glColor3dv',\
glColor3f,'glColor3f',\
glColor3fv,'glColor3fv',\
glColor3i,'glColor3i',\
glColor3iv,'glColor3iv',\
glColor3s,'glColor3s',\
glColor3sv,'glColor3sv',\
glColor3ub,'glColor3ub',\
glColor3ubv,'glColor3ubv',\
glColor3ui,'glColor3ui',\
glColor3uiv,'glColor3uiv',\
glColor3us,'glColor3us',\
glColor3usv,'glColor3usv',\
glColor4b,'glColor4b',\
glColor4bv,'glColor4bv',\
glColor4d,'glColor4d',\
glColor4dv,'glColor4dv',\
glColor4f,'glColor4f',\
glColor4fv,'glColor4fv',\
glColor4i,'glColor4i',\
glColor4iv,'glColor4iv',\
glColor4s,'glColor4s',\
glColor4sv,'glColor4sv',\
glColor4ub,'glColor4ub',\
glColor4ubv,'glColor4ubv',\
glColor4ui,'glColor4ui',\
glColor4uiv,'glColor4uiv',\
glColor4us,'glColor4us',\
glColor4usv,'glColor4usv',\
glColorMask,'glColorMask',\
glColorMaterial,'glColorMaterial',\
glColorPointer,'glColorPointer',\
glCopyPixels,'glCopyPixels',\
glCopyTexImage1D,'glCopyTexImage1D',\
glCopyTexImage2D,'glCopyTexImage2D',\
glCopyTexSubImage1D,'glCopyTexSubImage1D',\
glCopyTexSubImage2D,'glCopyTexSubImage2D',\
glCullFace,'glCullFace',\
glDeleteLists,'glDeleteLists',\
glDeleteTextures,'glDeleteTextures',\
glDepthFunc,'glDepthFunc',\
glDepthMask,'glDepthMask',\
glDepthRange,'glDepthRange',\
glDisable,'glDisable',\
glDisableClientState,'glDisableClientState',\
glDrawArrays,'glDrawArrays',\
glDrawBuffer,'glDrawBuffer',\
glDrawElements,'glDrawElements',\
glDrawPixels,'glDrawPixels',\
glEdgeFlag,'glEdgeFlag',\
glEdgeFlagPointer,'glEdgeFlagPointer',\
glEdgeFlagv,'glEdgeFlagv',\
glEnable,'glEnable',\
glEnableClientState,'glEnableClientState',\
glEnd,'glEnd',\
glEndList,'glEndList',\
glEvalCoord1d,'glEvalCoord1d',\
glEvalCoord1dv,'glEvalCoord1dv',\
glEvalCoord1f,'glEvalCoord1f',\
glEvalCoord1fv,'glEvalCoord1fv',\
glEvalCoord2d,'glEvalCoord2d',\
glEvalCoord2dv,'glEvalCoord2dv',\
glEvalCoord2f,'glEvalCoord2f',\
glEvalCoord2fv,'glEvalCoord2fv',\
glEvalMesh1,'glEvalMesh1',\
glEvalMesh2,'glEvalMesh2',\
glEvalPoint1,'glEvalPoint1',\
glEvalPoint2,'glEvalPoint2',\
glFeedbackBuffer,'glFeedbackBuffer',\
glFinish,'glFinish',\
glFlush,'glFlush',\
glFogf,'glFogf',\
glFogfv,'glFogfv',\
glFogi,'glFogi',\
glFogiv,'glFogiv',\
glFrontFace,'glFrontFace',\
glFrustum,'glFrustum',\
glGenLists,'glGenLists',\
glGenTextures,'glGenTextures',\
glGetBooleanv,'glGetBooleanv',\
glGetClipPlane,'glGetClipPlane',\
glGetDoublev,'glGetDoublev',\
glGetError,'glGetError',\
glGetFloatv,'glGetFloatv',\
glGetIntegerv,'glGetIntegerv',\
glGetLightfv,'glGetLightfv',\
glGetLightiv,'glGetLightiv',\
glGetMapdv,'glGetMapdv',\
glGetMapfv,'glGetMapfv',\
glGetMapiv,'glGetMapiv',\
glGetMaterialfv,'glGetMaterialfv',\
glGetMaterialiv,'glGetMaterialiv',\
glGetPixelMapfv,'glGetPixelMapfv',\
glGetPixelMapuiv,'glGetPixelMapuiv',\
glGetPixelMapusv,'glGetPixelMapusv',\
glGetPointerv,'glGetPointerv',\
glGetPolygonStipple,'glGetPolygonStipple',\
glGetString,'glGetString',\
glGetTexEnvfv,'glGetTexEnvfv',\
glGetTexEnviv,'glGetTexEnviv',\
glGetTexGendv,'glGetTexGendv',\
glGetTexGenfv,'glGetTexGenfv',\
glGetTexGeniv,'glGetTexGeniv',\
glGetTexImage,'glGetTexImage',\
glGetTexLevelParameterfv,'glGetTexLevelParameterfv',\
glGetTexLevelParameteriv,'glGetTexLevelParameteriv',\
glGetTexParameterfv,'glGetTexParameterfv',\
glGetTexParameteriv,'glGetTexParameteriv',\
glHint,'glHint',\
glIndexMask,'glIndexMask',\
glIndexPointer,'glIndexPointer',\
glIndexd,'glIndexd',\
glIndexdv,'glIndexdv',\
glIndexf,'glIndexf',\
glIndexfv,'glIndexfv',\
glIndexi,'glIndexi',\
glIndexiv,'glIndexiv',\
glIndexs,'glIndexs',\
glIndexsv,'glIndexsv',\
glIndexub,'glIndexub',\
glIndexubv,'glIndexubv',\
glInitNames,'glInitNames',\
glInterleavedArrays,'glInterleavedArrays',\
glIsEnabled,'glIsEnabled',\
glIsList,'glIsList',\
glIsTexture,'glIsTexture',\
glLightModelf,'glLightModelf',\
glLightModelfv,'glLightModelfv',\
glLightModeli,'glLightModeli',\
glLightModeliv,'glLightModeliv',\
glLightf,'glLightf',\
glLightfv,'glLightfv',\
glLighti,'glLighti',\
glLightiv,'glLightiv',\
glLineStipple,'glLineStipple',\
glLineWidth,'glLineWidth',\
glListBase,'glListBase',\
glLoadIdentity,'glLoadIdentity',\
glLoadMatrixd,'glLoadMatrixd',\
glLoadMatrixf,'glLoadMatrixf',\
glLoadName,'glLoadName',\
glLogicOp,'glLogicOp',\
glMap1d,'glMap1d',\
glMap1f,'glMap1f',\
glMap2d,'glMap2d',\
glMap2f,'glMap2f',\
glMapGrid1d,'glMapGrid1d',\
glMapGrid1f,'glMapGrid1f',\
glMapGrid2d,'glMapGrid2d',\
glMapGrid2f,'glMapGrid2f',\
glMaterialf,'glMaterialf',\
glMaterialfv,'glMaterialfv',\
glMateriali,'glMateriali',\
glMaterialiv,'glMaterialiv',\
glMatrixMode,'glMatrixMode',\
glMultMatrixd,'glMultMatrixd',\
glMultMatrixf,'glMultMatrixf',\
glNewList,'glNewList',\
glNormal3b,'glNormal3b',\
glNormal3bv,'glNormal3bv',\
glNormal3d,'glNormal3d',\
glNormal3dv,'glNormal3dv',\
glNormal3f,'glNormal3f',\
glNormal3fv,'glNormal3fv',\
glNormal3i,'glNormal3i',\
glNormal3iv,'glNormal3iv',\
glNormal3s,'glNormal3s',\
glNormal3sv,'glNormal3sv',\
glNormalPointer,'glNormalPointer',\
glOrtho,'glOrtho',\
glPassThrough,'glPassThrough',\
glPixelMapfv,'glPixelMapfv',\
glPixelMapuiv,'glPixelMapuiv',\
glPixelMapusv,'glPixelMapusv',\
glPixelStoref,'glPixelStoref',\
glPixelStorei,'glPixelStorei',\
glPixelTransferf,'glPixelTransferf',\
glPixelTransferi,'glPixelTransferi',\
glPixelZoom,'glPixelZoom',\
glPointSize,'glPointSize',\
glPolygonMode,'glPolygonMode',\
glPolygonOffset,'glPolygonOffset',\
glPolygonStipple,'glPolygonStipple',\
glPopAttrib,'glPopAttrib',\
glPopClientAttrib,'glPopClientAttrib',\
glPopMatrix,'glPopMatrix',\
glPopName,'glPopName',\
glPrioritizeTextures,'glPrioritizeTextures',\
glPushAttrib,'glPushAttrib',\
glPushClientAttrib,'glPushClientAttrib',\
glPushMatrix,'glPushMatrix',\
glPushName,'glPushName',\
glRasterPos2d,'glRasterPos2d',\
glRasterPos2dv,'glRasterPos2dv',\
glRasterPos2f,'glRasterPos2f',\
glRasterPos2fv,'glRasterPos2fv',\
glRasterPos2i,'glRasterPos2i',\
glRasterPos2iv,'glRasterPos2iv',\
glRasterPos2s,'glRasterPos2s',\
glRasterPos2sv,'glRasterPos2sv',\
glRasterPos3d,'glRasterPos3d',\
glRasterPos3dv,'glRasterPos3dv',\
glRasterPos3f,'glRasterPos3f',\
glRasterPos3fv,'glRasterPos3fv',\
glRasterPos3i,'glRasterPos3i',\
glRasterPos3iv,'glRasterPos3iv',\
glRasterPos3s,'glRasterPos3s',\
glRasterPos3sv,'glRasterPos3sv',\
glRasterPos4d,'glRasterPos4d',\
glRasterPos4dv,'glRasterPos4dv',\
glRasterPos4f,'glRasterPos4f',\
glRasterPos4fv,'glRasterPos4fv',\
glRasterPos4i,'glRasterPos4i',\
glRasterPos4iv,'glRasterPos4iv',\
glRasterPos4s,'glRasterPos4s',\
glRasterPos4sv,'glRasterPos4sv',\
glReadBuffer,'glReadBuffer',\
glReadPixels,'glReadPixels',\
glRectd,'glRectd',\
glRectdv,'glRectdv',\
glRectf,'glRectf',\
glRectfv,'glRectfv',\
glRecti,'glRecti',\
glRectiv,'glRectiv',\
glRects,'glRects',\
glRectsv,'glRectsv',\
glRenderMode,'glRenderMode',\
glRotated,'glRotated',\
glRotatef,'glRotatef',\
glScaled,'glScaled',\
glScalef,'glScalef',\
glScissor,'glScissor',\
glSelectBuffer,'glSelectBuffer',\
glShadeModel,'glShadeModel',\
glStencilFunc,'glStencilFunc',\
glStencilMask,'glStencilMask',\
glStencilOp,'glStencilOp',\
glTexCoord1d,'glTexCoord1d',\
glTexCoord1dv,'glTexCoord1dv',\
glTexCoord1f,'glTexCoord1f',\
glTexCoord1fv,'glTexCoord1fv',\
glTexCoord1i,'glTexCoord1i',\
glTexCoord1iv,'glTexCoord1iv',\
glTexCoord1s,'glTexCoord1s',\
glTexCoord1sv,'glTexCoord1sv',\
glTexCoord2d,'glTexCoord2d',\
glTexCoord2dv,'glTexCoord2dv',\
glTexCoord2f,'glTexCoord2f',\
glTexCoord2fv,'glTexCoord2fv',\
glTexCoord2i,'glTexCoord2i',\
glTexCoord2iv,'glTexCoord2iv',\
glTexCoord2s,'glTexCoord2s',\
glTexCoord2sv,'glTexCoord2sv',\
glTexCoord3d,'glTexCoord3d',\
glTexCoord3dv,'glTexCoord3dv',\
glTexCoord3f,'glTexCoord3f',\
glTexCoord3fv,'glTexCoord3fv',\
glTexCoord3i,'glTexCoord3i',\
glTexCoord3iv,'glTexCoord3iv',\
glTexCoord3s,'glTexCoord3s',\
glTexCoord3sv,'glTexCoord3sv',\
glTexCoord4d,'glTexCoord4d',\
glTexCoord4dv,'glTexCoord4dv',\
glTexCoord4f,'glTexCoord4f',\
glTexCoord4fv,'glTexCoord4fv',\
glTexCoord4i,'glTexCoord4i',\
glTexCoord4iv,'glTexCoord4iv',\
glTexCoord4s,'glTexCoord4s',\
glTexCoord4sv,'glTexCoord4sv',\
glTexCoordPointer,'glTexCoordPointer',\
glTexEnvf,'glTexEnvf',\
glTexEnvfv,'glTexEnvfv',\
glTexEnvi,'glTexEnvi',\
glTexEnviv,'glTexEnviv',\
glTexGend,'glTexGend',\
glTexGendv,'glTexGendv',\
glTexGenf,'glTexGenf',\
glTexGenfv,'glTexGenfv',\
glTexGeni,'glTexGeni',\
glTexGeniv,'glTexGeniv',\
glTexImage1D,'glTexImage1D',\
glTexImage2D,'glTexImage2D',\
glTexParameterf,'glTexParameterf',\
glTexParameterfv,'glTexParameterfv',\
glTexParameteri,'glTexParameteri',\
glTexParameteriv,'glTexParameteriv',\
glTexSubImage1D,'glTexSubImage1D',\
glTexSubImage2D,'glTexSubImage2D',\
glTranslated,'glTranslated',\
glTranslatef,'glTranslatef',\
glVertex2d,'glVertex2d',\
glVertex2dv,'glVertex2dv',\
glVertex2f,'glVertex2f',\
glVertex2fv,'glVertex2fv',\
glVertex2i,'glVertex2i',\
glVertex2iv,'glVertex2iv',\
glVertex2s,'glVertex2s',\
glVertex2sv,'glVertex2sv',\
glVertex3d,'glVertex3d',\
glVertex3dv,'glVertex3dv',\
glVertex3f,'glVertex3f',\
glVertex3fv,'glVertex3fv',\
glVertex3i,'glVertex3i',\
glVertex3iv,'glVertex3iv',\
glVertex3s,'glVertex3s',\
glVertex3sv,'glVertex3sv',\
glVertex4d,'glVertex4d',\
glVertex4dv,'glVertex4dv',\
glVertex4f,'glVertex4f',\
glVertex4fv,'glVertex4fv',\
glVertex4i,'glVertex4i',\
glVertex4iv,'glVertex4iv',\
glVertex4s,'glVertex4s',\
glVertex4sv,'glVertex4sv',\
glVertexPointer,'glVertexPointer',\
glViewport,'glViewport',\
wglGetProcAddress,'wglGetProcAddress',\
wglCopyContext,'wglCopyContext',\
wglCreateContext,'wglCreateContext',\
wglCreateLayerContext,'wglCreateLayerContext',\
wglDeleteContext,'wglDeleteContext',\
wglDescribeLayerPlane,'wglDescribeLayerPlane',\
wglGetCurrentContext,'wglGetCurrentContext',\
wglGetCurrentDC,'wglGetCurrentDC',\
wglGetLayerPaletteEntries,'wglGetLayerPaletteEntries',\
wglMakeCurrent,'wglMakeCurrent',\
wglRealizeLayerPalette,'wglRealizeLayerPalette',\
wglSetLayerPaletteEntries,'wglSetLayerPaletteEntries',\
wglShareLists,'wglShareLists',\
wglSwapLayerBuffers,'wglSwapLayerBuffers',\
wglSwapMultipleBuffers,'wglSwapMultipleBuffers',\
wglUseFontBitmapsA,'wglUseFontBitmapsA',\
wglUseFontOutlinesA,'wglUseFontOutlinesA',\
wglUseFontBitmapsW,'wglUseFontBitmapsW',\
wglUseFontOutlinesW,'wglUseFontOutlinesW',\
glDrawRangeElements,'glDrawRangeElements',\
glTexImage3D,'glTexImage3D',\
glBlendColor,'glBlendColor',\
glBlendEquation,'glBlendEquation',\
glColorSubTable,'glColorSubTable',\
glCopyColorSubTable,'glCopyColorSubTable',\
glColorTable,'glColorTable',\
glCopyColorTable,'glCopyColorTable',\
glColorTableParameteriv,'glColorTableParameteriv',\
glColorTableParameterfv,'glColorTableParameterfv',\
glGetColorTable,'glGetColorTable',\
glGetColorTableParameteriv,'glGetColorTableParameteriv',\
glGetColorTableParameterfv,'glGetColorTableParameterfv',\
glConvolutionFilter1D,'glConvolutionFilter1D',\
glConvolutionFilter2D,'glConvolutionFilter2D',\
glCopyConvolutionFilter1D,'glCopyConvolutionFilter1D',\
glCopyConvolutionFilter2D,'glCopyConvolutionFilter2D',\
glGetConvolutionFilter,'glGetConvolutionFilter',\
glSeparableFilter2D,'glSeparableFilter2D',\
glGetSeparableFilter,'glGetSeparableFilter',\
glConvolutionParameteri,'glConvolutionParameteri',\
glConvolutionParameteriv,'glConvolutionParameteriv',\
glConvolutionParameterf,'glConvolutionParameterf',\
glConvolutionParameterfv,'glConvolutionParameterfv',\
glGetConvolutionParameteriv,'glGetConvolutionParameteriv',\
glGetConvolutionParameterfv,'glGetConvolutionParameterfv',\
glHistogram,'glHistogram',\
glResetHistogram,'glResetHistogram',\
glGetHistogram,'glGetHistogram',\
glGetHistogramParameteriv,'glGetHistogramParameteriv',\
glGetHistogramParameterfv,'glGetHistogramParameterfv',\
glMinmax,'glMinmax',\
glResetMinmax,'glResetMinmax',\
glGetMinmax,'glGetMinmax',\
glGetMinmaxParameteriv,'glGetMinmaxParameteriv',\
glGetMinmaxParameterfv,'glGetMinmaxParameterfv'
import glu,\
gluBeginCurve,'gluBeginCurve',\
gluBeginPolygon,'gluBeginPolygon',\
gluBeginSurface,'gluBeginSurface',\
gluBeginTrim,'gluBeginTrim',\
gluBuild1DMipmaps,'gluBuild1DMipmaps',\
gluBuild2DMipmaps,'gluBuild2DMipmaps',\
gluCylinder,'gluCylinder',\
gluDeleteNurbsRenderer,'gluDeleteNurbsRenderer',\
gluDeleteQuadric,'gluDeleteQuadric',\
gluDeleteTess,'gluDeleteTess',\
gluDisk,'gluDisk',\
gluEndCurve,'gluEndCurve',\
gluEndPolygon,'gluEndPolygon',\
gluEndSurface,'gluEndSurface',\
gluEndTrim,'gluEndTrim',\
gluErrorString,'gluErrorString',\
gluGetNurbsProperty,'gluGetNurbsProperty',\
gluGetString,'gluGetString',\
gluGetTessProperty,'gluGetTessProperty',\
gluLoadSamplingMatrices,'gluLoadSamplingMatrices',\
gluLookAt,'gluLookAt',\
gluNewNurbsRenderer,'gluNewNurbsRenderer',\
gluNewQuadric,'gluNewQuadric',\
gluNewTess,'gluNewTess',\
gluNextContour,'gluNextContour',\
gluNurbsCallback,'gluNurbsCallback',\
gluNurbsCurve,'gluNurbsCurve',\
gluNurbsProperty,'gluNurbsProperty',\
gluNurbsSurface,'gluNurbsSurface',\
gluOrtho2D,'gluOrtho2D',\
gluPartialDisk,'gluPartialDisk',\
gluPerspective,'gluPerspective',\
gluPickMatrix,'gluPickMatrix',\
gluProject,'gluProject',\
gluPwlCurve,'gluPwlCurve',\
gluQuadricCallback,'gluQuadricCallback',\
gluQuadricDrawStyle,'gluQuadricDrawStyle',\
gluQuadricNormals,'gluQuadricNormals',\
gluQuadricOrientation,'gluQuadricOrientation',\
gluQuadricTexture,'gluQuadricTexture',\
gluScaleImage,'gluScaleImage',\
gluSphere,'gluSphere',\
gluTessBeginContour,'gluTessBeginContour',\
gluTessBeginPolygon,'gluTessBeginPolygon',\
gluTessCallback,'gluTessCallback',\
gluTessEndContour,'gluTessEndContour',\
gluTessEndPolygon,'gluTessEndPolygon',\
gluTessNormal,'gluTessNormal',\
gluTessProperty,'gluTessProperty',\
gluTessVertex,'gluTessVertex',\
gluUnProject,'gluUnProject'

View File

@@ -0,0 +1,45 @@
; Example of 64-bit PE program
format PE64 GUI
entry start
section '.text' code readable executable
start:
sub rsp,8*5 ; reserve stack for API use and make stack dqword aligned
mov r9d,0
lea r8,[_caption]
lea rdx,[_message]
mov rcx,0
call [MessageBoxA]
mov ecx,eax
call [ExitProcess]
section '.data' data readable writeable
_caption db 'Win64 assembly program',0
_message db 'Hello World!',0
section '.idata' import data readable writeable
dd 0,0,0,RVA kernel_name,RVA kernel_table
dd 0,0,0,RVA user_name,RVA user_table
dd 0,0,0,0,0
kernel_table:
ExitProcess dq RVA _ExitProcess
dq 0
user_table:
MessageBoxA dq RVA _MessageBoxA
dq 0
kernel_name db 'KERNEL32.DLL',0
user_name db 'USER32.DLL',0
_ExitProcess dw 0
db 'ExitProcess',0
_MessageBoxA dw 0
db 'MessageBoxA',0

View File

@@ -0,0 +1,82 @@
format PE64 GUI 5.0
entry start
include 'win64a.inc'
section '.text' code readable executable
start:
sub rsp,8 ; Make stack dqword aligned
invoke GetModuleHandle,0
mov [wc.hInstance],rax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],rax
mov [wc.hIconSm],rax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],rax
invoke RegisterClassEx,wc
test rax,rax
jz error
invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,128,128,256,192,NULL,NULL,[wc.hInstance],NULL
test rax,rax
jz error
msg_loop:
invoke GetMessage,msg,NULL,0,0
cmp eax,1
jb end_loop
jne msg_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
error:
invoke MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK
end_loop:
invoke ExitProcess,[msg.wParam]
proc WindowProc uses rbx rsi rdi, hwnd,wmsg,wparam,lparam
; Note that first four parameters are passed in registers,
; while names given in the declaration of procedure refer to the stack
; space reserved for them - you may store them there to be later accessible
; if the contents of registers gets destroyed. This may look like:
; mov [hwnd],rcx
; mov [wmsg],edx
; mov [wparam],r8
; mov [lparam],r9
cmp edx,WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,rcx,rdx,r8,r9
jmp .finish
.wmdestroy:
invoke PostQuitMessage,0
xor eax,eax
.finish:
ret
endp
section '.data' data readable writeable
_title TCHAR 'Win64 program template',0
_class TCHAR 'FASMWIN64',0
_error TCHAR 'Startup failed.',0
wc WNDCLASSEX sizeof.WNDCLASSEX,0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class,NULL
msg MSG
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'
include 'api\kernel32.inc'
include 'api\user32.inc'

View File

@@ -0,0 +1,142 @@
; Component Object Model usage demonstration
format PE64 GUI 5.0
entry start
include 'win64a.inc'
struc GUID def
{
match d1-d2-d3-d4-d5, def
\{
.Data1 dd 0x\#d1
.Data2 dw 0x\#d2
.Data3 dw 0x\#d3
.Data4 db 0x\#d4 shr 8,0x\#d4 and 0FFh
.Data5 db 0x\#d5 shr 40,0x\#d5 shr 32 and 0FFh,0x\#d5 shr 24 and 0FFh,0x\#d5 shr 16 and 0FFh,0x\#d5 shr 8 and 0FFh,0x\#d5 and 0FFh
\}
}
interface ITaskBarList,\
QueryInterface,\
AddRef,\
Release,\
HrInit,\
AddTab,\
DeleteTab,\
ActivateTab,\
SetActiveAlt
CLSCTX_INPROC_SERVER = 0x1
CLSCTX_INPROC_HANDLER = 0x2
CLSCTX_LOCAL_SERVER = 0x4
CLSCTX_INPROC_SERVER16 = 0x8
CLSCTX_REMOTE_SERVER = 0x10
CLSCTX_INPROC_HANDLER16 = 0x20
CLSCTX_INPROC_SERVERX86 = 0x40
CLSCTX_INPROC_HANDLERX86 = 0x80
CLSCTX_ESERVER_HANDLER = 0x100
CLSCTX_NO_CODE_DOWNLOAD = 0x400
CLSCTX_NO_CUSTOM_MARSHAL = 0x1000
CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000
CLSCTX_NO_FAILURE_LOG = 0x4000
CLSCTX_DISABLE_AAA = 0x8000
CLSCTX_ENABLE_AAA = 0x10000
CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
ID_EXIT = IDCANCEL
ID_SHOW = 100
ID_HIDE = 101
IDD_COMDEMO = 1
section '.text' code readable executable
start:
sub rsp,8 ; Make stack dqword aligned
invoke CoInitialize,NULL
invoke CoCreateInstance,CLSID_TaskbarList,NULL,CLSCTX_INPROC_SERVER,IID_ITaskbarList,ShellTaskBar
invoke GetModuleHandle,0
invoke DialogBoxParam,rax,IDD_COMDEMO,HWND_DESKTOP,COMDemo,0
cominvk ShellTaskBar,Release
invoke ExitProcess,0
proc COMDemo uses rbx, hwnd,msg,wparam,lparam
mov [hwnd],rcx
cmp edx,WM_INITDIALOG
je .wminitdialog
cmp edx,WM_COMMAND
je .wmcommand
cmp edx,WM_CLOSE
je .wmclose
xor eax,eax
jmp .finish
.wminitdialog:
jmp .processed
.wmcommand:
cmp r8,BN_CLICKED shl 16 + ID_EXIT
je .wmclose
cmp r8,BN_CLICKED shl 16 + ID_SHOW
je .show
cmp r8,BN_CLICKED shl 16 + ID_HIDE
jne .processed
.hide:
cominvk ShellTaskBar,HrInit
cominvk ShellTaskBar,DeleteTab,[hwnd]
jmp .processed
.show:
mov rbx,[ShellTaskBar]
comcall rbx,ITaskBarList,HrInit
comcall rbx,ITaskBarList,AddTab,[hwnd]
comcall rbx,ITaskBarList,ActivateTab,[hwnd]
jmp .processed
.wmclose:
invoke EndDialog,[hwnd],0
.processed:
mov eax,1
.finish:
ret
endp
section '.data' data readable writeable
CLSID_TaskbarList GUID 56FDF344-FD6D-11D0-958A-006097C9A090
IID_ITaskbarList GUID 56FDF342-FD6D-11D0-958A-006097C9A090
ShellTaskBar ITaskBarList
section '.idata' import data readable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL',\
ole,'OLE32.DLL'
import kernel,\
GetModuleHandle,'GetModuleHandleA',\
ExitProcess,'ExitProcess'
import user,\
DialogBoxParam,'DialogBoxParamA',\
EndDialog,'EndDialog'
import ole,\
CoInitialize,'CoInitialize',\
CoCreateInstance,'CoCreateInstance'
section '.rsrc' resource data readable
directory RT_DIALOG,dialogs
resource dialogs,\
IDD_COMDEMO,LANG_ENGLISH+SUBLANG_DEFAULT,comdemo
dialog comdemo,'Taskbar item control',70,70,170,24,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME
dialogitem 'BUTTON','Show',ID_SHOW,4,4,45,15,WS_VISIBLE+WS_TABSTOP
dialogitem 'BUTTON','Hide',ID_HIDE,54,4,45,15,WS_VISIBLE+WS_TABSTOP
dialogitem 'BUTTON','Exit',ID_EXIT,120,4,45,15,WS_VISIBLE+WS_TABSTOP
enddialog

View File

@@ -0,0 +1,98 @@
format PE64 NX GUI 6.0
entry start
include 'win64a.inc'
section '.data' data readable writeable
_title db 'AVX playground',0
_error db 'AVX instructions are not supported.',0
x dq 3.14159265389
vector_output:
rept 16 i:0
{
db 'ymm',`i,': %f,%f,%f,%f',13,10
}
db 0
buffer db 1000h dup ?
section '.text' code readable executable
start:
mov eax,1
cpuid
and ecx,18000000h
cmp ecx,18000000h
jne no_AVX
xor ecx,ecx
xgetbv
and eax,110b
cmp eax,110b
jne no_AVX
vbroadcastsd ymm0, [x]
vsqrtpd ymm1, ymm0
vsubpd ymm2, ymm0, ymm1
vsubpd ymm3, ymm1, ymm2
vaddpd xmm4, xmm2, xmm3
vaddpd ymm5, ymm4, ymm0
vperm2f128 ymm6, ymm4, ymm5, 03h
vshufpd ymm7, ymm6, ymm5, 10010011b
vroundpd ymm8, ymm7, 0011b
vroundpd ymm9, ymm7, 0
sub rsp,418h
rept 16 i:0
{
vmovups [rsp+10h+i*32],ymm#i
}
mov r8,[rsp+10h]
mov r9,[rsp+18h]
lea rdx,[vector_output]
lea rcx,[buffer]
call [sprintf]
xor ecx,ecx
lea rdx,[buffer]
lea r8,[_title]
xor r9d,r9d
call [MessageBoxA]
xor ecx,ecx
call [ExitProcess]
no_AVX:
sub rsp,28h
xor ecx,ecx
lea rdx,[_error]
lea r8,[_title]
mov r9d,10h
call [MessageBoxA]
mov ecx,1
call [ExitProcess]
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
msvcrt,'MSVCRT.DLL'
include 'api\kernel32.inc'
include 'api\user32.inc'
import msvcrt,\
sprintf,'sprintf'

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,535 @@
; ADVAPI32 API calls
import advapi32,\
AbortSystemShutdownA,'AbortSystemShutdownA',\
AbortSystemShutdownW,'AbortSystemShutdownW',\
AccessCheck,'AccessCheck',\
AccessCheckAndAuditAlarmA,'AccessCheckAndAuditAlarmA',\
AccessCheckAndAuditAlarmW,'AccessCheckAndAuditAlarmW',\
AccessCheckByType,'AccessCheckByType',\
AccessCheckByTypeAndAuditAlarmA,'AccessCheckByTypeAndAuditAlarmA',\
AccessCheckByTypeAndAuditAlarmW,'AccessCheckByTypeAndAuditAlarmW',\
AccessCheckByTypeResultList,'AccessCheckByTypeResultList',\
AccessCheckByTypeResultListAndAuditAlarmA,'AccessCheckByTypeResultListAndAuditAlarmA',\
AccessCheckByTypeResultListAndAuditAlarmW,'AccessCheckByTypeResultListAndAuditAlarmW',\
AddAccessAllowedAce,'AddAccessAllowedAce',\
AddAccessAllowedAceEx,'AddAccessAllowedAceEx',\
AddAccessAllowedObjectAce,'AddAccessAllowedObjectAce',\
AddAccessDeniedAce,'AddAccessDeniedAce',\
AddAccessDeniedAceEx,'AddAccessDeniedAceEx',\
AddAccessDeniedObjectAce,'AddAccessDeniedObjectAce',\
AddAce,'AddAce',\
AddAuditAccessAce,'AddAuditAccessAce',\
AddAuditAccessAceEx,'AddAuditAccessAceEx',\
AddAuditAccessObjectAce,'AddAuditAccessObjectAce',\
AdjustTokenGroups,'AdjustTokenGroups',\
AdjustTokenPrivileges,'AdjustTokenPrivileges',\
AllocateAndInitializeSid,'AllocateAndInitializeSid',\
AllocateLocallyUniqueId,'AllocateLocallyUniqueId',\
AreAllAccessesGranted,'AreAllAccessesGranted',\
AreAnyAccessesGranted,'AreAnyAccessesGranted',\
BackupEventLogA,'BackupEventLogA',\
BackupEventLogW,'BackupEventLogW',\
BuildExplicitAccessWithNameA,'BuildExplicitAccessWithNameA',\
BuildExplicitAccessWithNameW,'BuildExplicitAccessWithNameW',\
BuildImpersonateExplicitAccessWithNameA,'BuildImpersonateExplicitAccessWithNameA',\
BuildImpersonateExplicitAccessWithNameW,'BuildImpersonateExplicitAccessWithNameW',\
BuildImpersonateTrusteeA,'BuildImpersonateTrusteeA',\
BuildImpersonateTrusteeW,'BuildImpersonateTrusteeW',\
BuildSecurityDescriptorA,'BuildSecurityDescriptorA',\
BuildSecurityDescriptorW,'BuildSecurityDescriptorW',\
BuildTrusteeWithNameA,'BuildTrusteeWithNameA',\
BuildTrusteeWithNameW,'BuildTrusteeWithNameW',\
BuildTrusteeWithSidA,'BuildTrusteeWithSidA',\
BuildTrusteeWithSidW,'BuildTrusteeWithSidW',\
CancelOverlappedAccess,'CancelOverlappedAccess',\
ChangeServiceConfig2A,'ChangeServiceConfig2A',\
ChangeServiceConfig2W,'ChangeServiceConfig2W',\
ChangeServiceConfigA,'ChangeServiceConfigA',\
ChangeServiceConfigW,'ChangeServiceConfigW',\
ClearEventLogA,'ClearEventLogA',\
ClearEventLogW,'ClearEventLogW',\
CloseEventLog,'CloseEventLog',\
CloseRaw,'CloseRaw',\
CloseServiceHandle,'CloseServiceHandle',\
ControlService,'ControlService',\
ConvertAccessToSecurityDescriptorA,'ConvertAccessToSecurityDescriptorA',\
ConvertAccessToSecurityDescriptorW,'ConvertAccessToSecurityDescriptorW',\
ConvertSecurityDescriptorToAccessA,'ConvertSecurityDescriptorToAccessA',\
ConvertSecurityDescriptorToAccessW,'ConvertSecurityDescriptorToAccessW',\
ConvertSecurityDescriptorToAccessNamedA,'ConvertSecurityDescriptorToAccessNamedA',\
ConvertSecurityDescriptorToAccessNamedW,'ConvertSecurityDescriptorToAccessNamedW',\
ConvertToAutoInheritPrivateObjectSecurity,'ConvertToAutoInheritPrivateObjectSecurity',\
CopySid,'CopySid',\
CreatePrivateObjectSecurity,'CreatePrivateObjectSecurity',\
CreatePrivateObjectSecurityEx,'CreatePrivateObjectSecurityEx',\
CreateProcessAsUserA,'CreateProcessAsUserA',\
CreateProcessAsUserW,'CreateProcessAsUserW',\
CreateRestrictedToken,'CreateRestrictedToken',\
CreateServiceA,'CreateServiceA',\
CreateServiceW,'CreateServiceW',\
CryptAcquireContextA,'CryptAcquireContextA',\
CryptAcquireContextW,'CryptAcquireContextW',\
CryptContextAddRef,'CryptContextAddRef',\
CryptCreateHash,'CryptCreateHash',\
CryptDecrypt,'CryptDecrypt',\
CryptDeriveKey,'CryptDeriveKey',\
CryptDestroyHash,'CryptDestroyHash',\
CryptDestroyKey,'CryptDestroyKey',\
CryptDuplicateHash,'CryptDuplicateHash',\
CryptDuplicateKey,'CryptDuplicateKey',\
CryptEncrypt,'CryptEncrypt',\
CryptEnumProviderTypesA,'CryptEnumProviderTypesA',\
CryptEnumProviderTypesW,'CryptEnumProviderTypesW',\
CryptEnumProvidersA,'CryptEnumProvidersA',\
CryptEnumProvidersW,'CryptEnumProvidersW',\
CryptExportKey,'CryptExportKey',\
CryptGenKey,'CryptGenKey',\
CryptGenRandom,'CryptGenRandom',\
CryptGetDefaultProviderA,'CryptGetDefaultProviderA',\
CryptGetDefaultProviderW,'CryptGetDefaultProviderW',\
CryptGetHashParam,'CryptGetHashParam',\
CryptGetKeyParam,'CryptGetKeyParam',\
CryptGetProvParam,'CryptGetProvParam',\
CryptGetUserKey,'CryptGetUserKey',\
CryptHashData,'CryptHashData',\
CryptHashSessionKey,'CryptHashSessionKey',\
CryptImportKey,'CryptImportKey',\
CryptReleaseContext,'CryptReleaseContext',\
CryptSetHashParam,'CryptSetHashParam',\
CryptSetKeyParam,'CryptSetKeyParam',\
CryptSetProvParam,'CryptSetProvParam',\
CryptSetProviderA,'CryptSetProviderA',\
CryptSetProviderW,'CryptSetProviderW',\
CryptSetProviderExA,'CryptSetProviderExA',\
CryptSetProviderExW,'CryptSetProviderExW',\
CryptSignHashA,'CryptSignHashA',\
CryptSignHashW,'CryptSignHashW',\
CryptVerifySignatureA,'CryptVerifySignatureA',\
CryptVerifySignatureW,'CryptVerifySignatureW',\
DecryptFileA,'DecryptFileA',\
DecryptFileW,'DecryptFileW',\
DeleteAce,'DeleteAce',\
DeleteService,'DeleteService',\
DeregisterEventSource,'DeregisterEventSource',\
DestroyPrivateObjectSecurity,'DestroyPrivateObjectSecurity',\
DuplicateToken,'DuplicateToken',\
DuplicateTokenEx,'DuplicateTokenEx',\
ElfBackupEventLogFileA,'ElfBackupEventLogFileA',\
ElfBackupEventLogFileW,'ElfBackupEventLogFileW',\
ElfChangeNotify,'ElfChangeNotify',\
ElfClearEventLogFileA,'ElfClearEventLogFileA',\
ElfClearEventLogFileW,'ElfClearEventLogFileW',\
ElfCloseEventLog,'ElfCloseEventLog',\
ElfDeregisterEventSource,'ElfDeregisterEventSource',\
ElfNumberOfRecords,'ElfNumberOfRecords',\
ElfOldestRecord,'ElfOldestRecord',\
ElfOpenBackupEventLogA,'ElfOpenBackupEventLogA',\
ElfOpenBackupEventLogW,'ElfOpenBackupEventLogW',\
ElfOpenEventLogA,'ElfOpenEventLogA',\
ElfOpenEventLogW,'ElfOpenEventLogW',\
ElfReadEventLogA,'ElfReadEventLogA',\
ElfReadEventLogW,'ElfReadEventLogW',\
ElfRegisterEventSourceA,'ElfRegisterEventSourceA',\
ElfRegisterEventSourceW,'ElfRegisterEventSourceW',\
ElfReportEventA,'ElfReportEventA',\
ElfReportEventW,'ElfReportEventW',\
EncryptFileA,'EncryptFileA',\
EncryptFileW,'EncryptFileW',\
EnumDependentServicesA,'EnumDependentServicesA',\
EnumDependentServicesW,'EnumDependentServicesW',\
EnumServicesStatusA,'EnumServicesStatusA',\
EnumServicesStatusW,'EnumServicesStatusW',\
EqualPrefixSid,'EqualPrefixSid',\
EqualSid,'EqualSid',\
FindFirstFreeAce,'FindFirstFreeAce',\
FreeSid,'FreeSid',\
GetAccessPermissionsForObjectA,'GetAccessPermissionsForObjectA',\
GetAccessPermissionsForObjectW,'GetAccessPermissionsForObjectW',\
GetAce,'GetAce',\
GetAclInformation,'GetAclInformation',\
GetAuditedPermissionsFromAclA,'GetAuditedPermissionsFromAclA',\
GetAuditedPermissionsFromAclW,'GetAuditedPermissionsFromAclW',\
GetCurrentHwProfileA,'GetCurrentHwProfileA',\
GetCurrentHwProfileW,'GetCurrentHwProfileW',\
GetEffectiveRightsFromAclA,'GetEffectiveRightsFromAclA',\
GetEffectiveRightsFromAclW,'GetEffectiveRightsFromAclW',\
GetExplicitEntriesFromAclA,'GetExplicitEntriesFromAclA',\
GetExplicitEntriesFromAclW,'GetExplicitEntriesFromAclW',\
GetFileSecurityA,'GetFileSecurityA',\
GetFileSecurityW,'GetFileSecurityW',\
GetKernelObjectSecurity,'GetKernelObjectSecurity',\
GetLengthSid,'GetLengthSid',\
GetMultipleTrusteeA,'GetMultipleTrusteeA',\
GetMultipleTrusteeW,'GetMultipleTrusteeW',\
GetMultipleTrusteeOperationA,'GetMultipleTrusteeOperationA',\
GetMultipleTrusteeOperationW,'GetMultipleTrusteeOperationW',\
GetNamedSecurityInfoA,'GetNamedSecurityInfoA',\
GetNamedSecurityInfoW,'GetNamedSecurityInfoW',\
GetNamedSecurityInfoExA,'GetNamedSecurityInfoExA',\
GetNamedSecurityInfoExW,'GetNamedSecurityInfoExW',\
GetNumberOfEventLogRecords,'GetNumberOfEventLogRecords',\
GetOldestEventLogRecord,'GetOldestEventLogRecord',\
GetOverlappedAccessResults,'GetOverlappedAccessResults',\
GetPrivateObjectSecurity,'GetPrivateObjectSecurity',\
GetSecurityDescriptorControl,'GetSecurityDescriptorControl',\
GetSecurityDescriptorDacl,'GetSecurityDescriptorDacl',\
GetSecurityDescriptorGroup,'GetSecurityDescriptorGroup',\
GetSecurityDescriptorLength,'GetSecurityDescriptorLength',\
GetSecurityDescriptorOwner,'GetSecurityDescriptorOwner',\
GetSecurityDescriptorSacl,'GetSecurityDescriptorSacl',\
GetSecurityInfo,'GetSecurityInfo',\
GetSecurityInfoExA,'GetSecurityInfoExA',\
GetSecurityInfoExW,'GetSecurityInfoExW',\
GetServiceDisplayNameA,'GetServiceDisplayNameA',\
GetServiceDisplayNameW,'GetServiceDisplayNameW',\
GetServiceKeyNameA,'GetServiceKeyNameA',\
GetServiceKeyNameW,'GetServiceKeyNameW',\
GetSidLengthRequiredA,'GetSidLengthRequiredA',\
GetSidLengthRequiredW,'GetSidLengthRequiredW',\
GetSidSubAuthority,'GetSidSubAuthority',\
GetSidSubAuthorityCount,'GetSidSubAuthorityCount',\
GetTokenInformation,'GetTokenInformation',\
GetTrusteeNameA,'GetTrusteeNameA',\
GetTrusteeNameW,'GetTrusteeNameW',\
GetTrusteeTypeA,'GetTrusteeTypeA',\
GetTrusteeTypeW,'GetTrusteeTypeW',\
GetUserNameA,'GetUserNameA',\
GetUserNameW,'GetUserNameW',\
I_ScSetServiceBitsA,'I_ScSetServiceBitsA',\
I_ScSetServiceBitsW,'I_ScSetServiceBitsW',\
ImpersonateLoggedOnUser,'ImpersonateLoggedOnUser',\
ImpersonateNamedPipeClient,'ImpersonateNamedPipeClient',\
ImpersonateSelf,'ImpersonateSelf',\
InitializeAcl,'InitializeAcl',\
InitializeSecurityDescriptor,'InitializeSecurityDescriptor',\
InitializeSid,'InitializeSid',\
InitiateSystemShutdownA,'InitiateSystemShutdownA',\
InitiateSystemShutdownW,'InitiateSystemShutdownW',\
IsTextUnicode,'IsTextUnicode',\
IsTokenRestricted,'IsTokenRestricted',\
IsValidAcl,'IsValidAcl',\
IsValidSecurityDescriptor,'IsValidSecurityDescriptor',\
IsValidSid,'IsValidSid',\
LockServiceDatabase,'LockServiceDatabase',\
LogonUserA,'LogonUserA',\
LogonUserW,'LogonUserW',\
LookupAccountNameA,'LookupAccountNameA',\
LookupAccountNameW,'LookupAccountNameW',\
LookupAccountSidA,'LookupAccountSidA',\
LookupAccountSidW,'LookupAccountSidW',\
LookupPrivilegeDisplayNameA,'LookupPrivilegeDisplayNameA',\
LookupPrivilegeDisplayNameW,'LookupPrivilegeDisplayNameW',\
LookupPrivilegeNameA,'LookupPrivilegeNameA',\
LookupPrivilegeNameW,'LookupPrivilegeNameW',\
LookupPrivilegeValueA,'LookupPrivilegeValueA',\
LookupPrivilegeValueW,'LookupPrivilegeValueW',\
LookupSecurityDescriptorPartsA,'LookupSecurityDescriptorPartsA',\
LookupSecurityDescriptorPartsW,'LookupSecurityDescriptorPartsW',\
LsaAddAccountRights,'LsaAddAccountRights',\
LsaAddPrivilegesToAccount,'LsaAddPrivilegesToAccount',\
LsaClearAuditLog,'LsaClearAuditLog',\
LsaClose,'LsaClose',\
LsaCreateAccount,'LsaCreateAccount',\
LsaCreateSecret,'LsaCreateSecret',\
LsaCreateTrustedDomain,'LsaCreateTrustedDomain',\
LsaCreateTrustedDomainEx,'LsaCreateTrustedDomainEx',\
LsaDelete,'LsaDelete',\
LsaDeleteTrustedDomain,'LsaDeleteTrustedDomain',\
LsaEnumerateAccountRights,'LsaEnumerateAccountRights',\
LsaEnumerateAccounts,'LsaEnumerateAccounts',\
LsaEnumerateAccountsWithUserRight,'LsaEnumerateAccountsWithUserRight',\
LsaEnumeratePrivileges,'LsaEnumeratePrivileges',\
LsaEnumeratePrivilegesOfAccount,'LsaEnumeratePrivilegesOfAccount',\
LsaEnumerateTrustedDomains,'LsaEnumerateTrustedDomains',\
LsaEnumerateTrustedDomainsEx,'LsaEnumerateTrustedDomainsEx',\
LsaFreeMemory,'LsaFreeMemory',\
LsaGetQuotasForAccount,'LsaGetQuotasForAccount',\
LsaGetSystemAccessAccount,'LsaGetSystemAccessAccount',\
LsaGetUserName,'LsaGetUserName',\
LsaICLookupNames,'LsaICLookupNames',\
LsaICLookupSids,'LsaICLookupSids',\
LsaIGetTrustedDomainAuthInfoBlobs,'LsaIGetTrustedDomainAuthInfoBlobs',\
LsaISetTrustedDomainAuthInfoBlobs,'LsaISetTrustedDomainAuthInfoBlobs',\
LsaLookupNames,'LsaLookupNames',\
LsaLookupPrivilegeDisplayName,'LsaLookupPrivilegeDisplayName',\
LsaLookupPrivilegeName,'LsaLookupPrivilegeName',\
LsaLookupPrivilegeValue,'LsaLookupPrivilegeValue',\
LsaLookupSids,'LsaLookupSids',\
LsaNtStatusToWinError,'LsaNtStatusToWinError',\
LsaOpenAccount,'LsaOpenAccount',\
LsaOpenPolicy,'LsaOpenPolicy',\
LsaOpenSecret,'LsaOpenSecret',\
LsaOpenTrustedDomain,'LsaOpenTrustedDomain',\
LsaQueryDomainInformationPolicy,'LsaQueryDomainInformationPolicy',\
LsaQueryInfoTrustedDomain,'LsaQueryInfoTrustedDomain',\
LsaQueryInformationPolicy,'LsaQueryInformationPolicy',\
LsaQueryLocalInformationPolicy,'LsaQueryLocalInformationPolicy',\
LsaQuerySecret,'LsaQuerySecret',\
LsaQuerySecurityObject,'LsaQuerySecurityObject',\
LsaQueryTrustedDomainInfo,'LsaQueryTrustedDomainInfo',\
LsaQueryTrustedDomainInfoByName,'LsaQueryTrustedDomainInfoByName',\
LsaRemoveAccountRights,'LsaRemoveAccountRights',\
LsaRemovePrivilegesFromAccount,'LsaRemovePrivilegesFromAccount',\
LsaRetrievePrivateData,'LsaRetrievePrivateData',\
LsaSetDomainInformationPolicy,'LsaSetDomainInformationPolicy',\
LsaSetInformationPolicy,'LsaSetInformationPolicy',\
LsaSetInformationTrustedDomain,'LsaSetInformationTrustedDomain',\
LsaSetLocalInformationPolicy,'LsaSetLocalInformationPolicy',\
LsaSetQuotasForAccount,'LsaSetQuotasForAccount',\
LsaSetSecret,'LsaSetSecret',\
LsaSetSecurityObject,'LsaSetSecurityObject',\
LsaSetSystemAccessAccount,'LsaSetSystemAccessAccount',\
LsaSetTrustedDomainInfoByName,'LsaSetTrustedDomainInfoByName',\
LsaSetTrustedDomainInformation,'LsaSetTrustedDomainInformation',\
LsaStorePrivateData,'LsaStorePrivateData',\
MakeAbsoluteSD,'MakeAbsoluteSD',\
MakeSelfRelativeSD,'MakeSelfRelativeSD',\
MapGenericMask,'MapGenericMask',\
NotifyBootConfigStatus,'NotifyBootConfigStatus',\
NotifyChangeEventLog,'NotifyChangeEventLog',\
ObjectCloseAuditAlarmA,'ObjectCloseAuditAlarmA',\
ObjectCloseAuditAlarmW,'ObjectCloseAuditAlarmW',\
ObjectDeleteAuditAlarmA,'ObjectDeleteAuditAlarmA',\
ObjectDeleteAuditAlarmW,'ObjectDeleteAuditAlarmW',\
ObjectOpenAuditAlarmA,'ObjectOpenAuditAlarmA',\
ObjectOpenAuditAlarmW,'ObjectOpenAuditAlarmW',\
ObjectPrivilegeAuditAlarmA,'ObjectPrivilegeAuditAlarmA',\
ObjectPrivilegeAuditAlarmW,'ObjectPrivilegeAuditAlarmW',\
OpenBackupEventLogA,'OpenBackupEventLogA',\
OpenBackupEventLogW,'OpenBackupEventLogW',\
OpenEventLogA,'OpenEventLogA',\
OpenEventLogW,'OpenEventLogW',\
OpenProcessToken,'OpenProcessToken',\
OpenRawA,'OpenRawA',\
OpenRawW,'OpenRawW',\
OpenSCManagerA,'OpenSCManagerA',\
OpenSCManagerW,'OpenSCManagerW',\
OpenServiceA,'OpenServiceA',\
OpenServiceW,'OpenServiceW',\
OpenThreadToken,'OpenThreadToken',\
PrivilegeCheck,'PrivilegeCheck',\
PrivilegedServiceAuditAlarmA,'PrivilegedServiceAuditAlarmA',\
PrivilegedServiceAuditAlarmW,'PrivilegedServiceAuditAlarmW',\
QueryRecoveryAgentsA,'QueryRecoveryAgentsA',\
QueryRecoveryAgentsW,'QueryRecoveryAgentsW',\
QueryServiceConfig2A,'QueryServiceConfig2A',\
QueryServiceConfig2W,'QueryServiceConfig2W',\
QueryServiceConfigA,'QueryServiceConfigA',\
QueryServiceConfigW,'QueryServiceConfigW',\
QueryServiceLockStatusA,'QueryServiceLockStatusA',\
QueryServiceLockStatusW,'QueryServiceLockStatusW',\
QueryServiceObjectSecurity,'QueryServiceObjectSecurity',\
QueryServiceStatus,'QueryServiceStatus',\
QueryWindows31FilesMigration,'QueryWindows31FilesMigration',\
ReadEventLogA,'ReadEventLogA',\
ReadEventLogW,'ReadEventLogW',\
ReadRaw,'ReadRaw',\
RegCloseKey,'RegCloseKey',\
RegConnectRegistryA,'RegConnectRegistryA',\
RegConnectRegistryW,'RegConnectRegistryW',\
RegCreateKeyA,'RegCreateKeyA',\
RegCreateKeyW,'RegCreateKeyW',\
RegCreateKeyExA,'RegCreateKeyExA',\
RegCreateKeyExW,'RegCreateKeyExW',\
RegDeleteKeyA,'RegDeleteKeyA',\
RegDeleteKeyW,'RegDeleteKeyW',\
RegDeleteValueA,'RegDeleteValueA',\
RegDeleteValueW,'RegDeleteValueW',\
RegEnumKeyA,'RegEnumKeyA',\
RegEnumKeyW,'RegEnumKeyW',\
RegEnumKeyExA,'RegEnumKeyExA',\
RegEnumKeyExW,'RegEnumKeyExW',\
RegEnumValueA,'RegEnumValueA',\
RegEnumValueW,'RegEnumValueW',\
RegFlushKey,'RegFlushKey',\
RegGetKeySecurity,'RegGetKeySecurity',\
RegLoadKeyA,'RegLoadKeyA',\
RegLoadKeyW,'RegLoadKeyW',\
RegNotifyChangeKeyValue,'RegNotifyChangeKeyValue',\
RegOpenKeyA,'RegOpenKeyA',\
RegOpenKeyW,'RegOpenKeyW',\
RegOpenKeyExA,'RegOpenKeyExA',\
RegOpenKeyExW,'RegOpenKeyExW',\
RegOverridePredefKey,'RegOverridePredefKey',\
RegQueryInfoKeyA,'RegQueryInfoKeyA',\
RegQueryInfoKeyW,'RegQueryInfoKeyW',\
RegQueryMultipleValuesA,'RegQueryMultipleValuesA',\
RegQueryMultipleValuesW,'RegQueryMultipleValuesW',\
RegQueryValueA,'RegQueryValueA',\
RegQueryValueW,'RegQueryValueW',\
RegQueryValueExA,'RegQueryValueExA',\
RegQueryValueExW,'RegQueryValueExW',\
RegReplaceKeyA,'RegReplaceKeyA',\
RegReplaceKeyW,'RegReplaceKeyW',\
RegRestoreKeyA,'RegRestoreKeyA',\
RegRestoreKeyW,'RegRestoreKeyW',\
RegSaveKeyA,'RegSaveKeyA',\
RegSaveKeyW,'RegSaveKeyW',\
RegSetKeySecurity,'RegSetKeySecurity',\
RegSetValueA,'RegSetValueA',\
RegSetValueW,'RegSetValueW',\
RegSetValueExA,'RegSetValueExA',\
RegSetValueExW,'RegSetValueExW',\
RegUnLoadKeyA,'RegUnLoadKeyA',\
RegUnLoadKeyW,'RegUnLoadKeyW',\
RegisterEventSourceA,'RegisterEventSourceA',\
RegisterEventSourceW,'RegisterEventSourceW',\
RegisterServiceCtrlHandlerA,'RegisterServiceCtrlHandlerA',\
RegisterServiceCtrlHandlerW,'RegisterServiceCtrlHandlerW',\
ReportEventA,'ReportEventA',\
ReportEventW,'ReportEventW',\
RevertToSelf,'RevertToSelf',\
SetAclInformation,'SetAclInformation',\
SetEntriesInAccessListA,'SetEntriesInAccessListA',\
SetEntriesInAccessListW,'SetEntriesInAccessListW',\
SetEntriesInAclA,'SetEntriesInAclA',\
SetEntriesInAclW,'SetEntriesInAclW',\
SetEntriesInAuditListA,'SetEntriesInAuditListA',\
SetEntriesInAuditListW,'SetEntriesInAuditListW',\
SetFileSecurityA,'SetFileSecurityA',\
SetFileSecurityW,'SetFileSecurityW',\
SetKernelObjectSecurity,'SetKernelObjectSecurity',\
SetNamedSecurityInfoA,'SetNamedSecurityInfoA',\
SetNamedSecurityInfoW,'SetNamedSecurityInfoW',\
SetNamedSecurityInfoExA,'SetNamedSecurityInfoExA',\
SetNamedSecurityInfoExW,'SetNamedSecurityInfoExW',\
SetPrivateObjectSecurity,'SetPrivateObjectSecurity',\
SetPrivateObjectSecurityEx,'SetPrivateObjectSecurityEx',\
SetSecurityDescriptorControl,'SetSecurityDescriptorControl',\
SetSecurityDescriptorDacl,'SetSecurityDescriptorDacl',\
SetSecurityDescriptorGroup,'SetSecurityDescriptorGroup',\
SetSecurityDescriptorOwner,'SetSecurityDescriptorOwner',\
SetSecurityDescriptorSacl,'SetSecurityDescriptorSacl',\
SetSecurityInfo,'SetSecurityInfo',\
SetSecurityInfoExA,'SetSecurityInfoExA',\
SetSecurityInfoExW,'SetSecurityInfoExW',\
SetServiceBits,'SetServiceBits',\
SetServiceObjectSecurity,'SetServiceObjectSecurity',\
SetServiceStatus,'SetServiceStatus',\
SetThreadToken,'SetThreadToken',\
SetTokenInformation,'SetTokenInformation',\
StartServiceA,'StartServiceA',\
StartServiceW,'StartServiceW',\
StartServiceCtrlDispatcherA,'StartServiceCtrlDispatcherA',\
StartServiceCtrlDispatcherW,'StartServiceCtrlDispatcherW',\
SynchronizeWindows31FilesAndWindowsNTRegistry,'SynchronizeWindows31FilesAndWindowsNTRegistry',\
TrusteeAccessToObjectA,'TrusteeAccessToObjectA',\
TrusteeAccessToObjectW,'TrusteeAccessToObjectW',\
UnlockServiceDatabase,'UnlockServiceDatabase',\
WriteRaw,'WriteRaw'
api AbortSystemShutdown,\
AccessCheckAndAuditAlarm,\
AccessCheckByTypeAndAuditAlarm,\
AccessCheckByTypeResultListAndAuditAlarm,\
BackupEventLog,\
BuildExplicitAccessWithName,\
BuildImpersonateExplicitAccessWithName,\
BuildImpersonateTrustee,\
BuildSecurityDescriptor,\
BuildTrusteeWithName,\
BuildTrusteeWithSid,\
ChangeServiceConfig2,\
ChangeServiceConfig,\
ClearEventLog,\
ConvertAccessToSecurityDescriptor,\
ConvertSecurityDescriptorToAccess,\
ConvertSecurityDescriptorToAccessNamed,\
CreateProcessAsUser,\
CreateService,\
CryptAcquireContext,\
CryptEnumProviderTypes,\
CryptEnumProviders,\
CryptGetDefaultProvider,\
CryptSetProvider,\
CryptSetProviderEx,\
CryptSignHash,\
CryptVerifySignature,\
DecryptFile,\
ElfBackupEventLogFile,\
ElfClearEventLogFile,\
ElfOpenBackupEventLog,\
ElfOpenEventLog,\
ElfReadEventLog,\
ElfRegisterEventSource,\
ElfReportEvent,\
EncryptFile,\
EnumDependentServices,\
EnumServicesStatus,\
GetAccessPermissionsForObject,\
GetAuditedPermissionsFromAcl,\
GetCurrentHwProfile,\
GetEffectiveRightsFromAcl,\
GetExplicitEntriesFromAcl,\
GetFileSecurity,\
GetMultipleTrustee,\
GetMultipleTrusteeOperation,\
GetNamedSecurityInfo,\
GetNamedSecurityInfoEx,\
GetSecurityInfoEx,\
GetServiceDisplayName,\
GetServiceKeyName,\
GetSidLengthRequired,\
GetTrusteeName,\
GetTrusteeType,\
GetUserName,\
I_ScSetServiceBits,\
InitiateSystemShutdown,\
LogonUser,\
LookupAccountName,\
LookupAccountSid,\
LookupPrivilegeDisplayName,\
LookupPrivilegeName,\
LookupPrivilegeValue,\
LookupSecurityDescriptorParts,\
ObjectCloseAuditAlarm,\
ObjectDeleteAuditAlarm,\
ObjectOpenAuditAlarm,\
ObjectPrivilegeAuditAlarm,\
OpenBackupEventLog,\
OpenEventLog,\
OpenRaw,\
OpenSCManager,\
OpenService,\
PrivilegedServiceAuditAlarm,\
QueryRecoveryAgents,\
QueryServiceConfig2,\
QueryServiceConfig,\
QueryServiceLockStatus,\
ReadEventLog,\
RegConnectRegistry,\
RegCreateKey,\
RegCreateKeyEx,\
RegDeleteKey,\
RegDeleteValue,\
RegEnumKey,\
RegEnumKeyEx,\
RegEnumValue,\
RegLoadKey,\
RegOpenKey,\
RegOpenKeyEx,\
RegQueryInfoKey,\
RegQueryMultipleValues,\
RegQueryValue,\
RegQueryValueEx,\
RegReplaceKey,\
RegRestoreKey,\
RegSaveKey,\
RegSetValue,\
RegSetValueEx,\
RegUnLoadKey,\
RegisterEventSource,\
RegisterServiceCtrlHandler,\
ReportEvent,\
SetEntriesInAccessList,\
SetEntriesInAcl,\
SetEntriesInAuditList,\
SetFileSecurity,\
SetNamedSecurityInfo,\
SetNamedSecurityInfoEx,\
SetSecurityInfoEx,\
StartService,\
StartServiceCtrlDispatcher,\
TrusteeAccessToObject

View File

@@ -0,0 +1,81 @@
; COMCTL32 API calls
import comctl32,\
CreateMappedBitmap,'CreateMappedBitmap',\
CreatePropertySheetPageA,'CreatePropertySheetPageA',\
CreatePropertySheetPageW,'CreatePropertySheetPageW',\
CreateStatusWindowA,'CreateStatusWindowA',\
CreateStatusWindowW,'CreateStatusWindowW',\
CreateToolbar,'CreateToolbar',\
CreateToolbarEx,'CreateToolbarEx',\
CreateUpDownControl,'CreateUpDownControl',\
DestroyPropertySheetPage,'DestroyPropertySheetPage',\
DrawInsert,'DrawInsert',\
DrawStatusTextA,'DrawStatusTextA',\
DrawStatusTextW,'DrawStatusTextW',\
FlatSB_EnableScrollBar,'FlatSB_EnableScrollBar',\
FlatSB_GetScrollInfo,'FlatSB_GetScrollInfo',\
FlatSB_GetScrollPos,'FlatSB_GetScrollPos',\
FlatSB_GetScrollProp,'FlatSB_GetScrollProp',\
FlatSB_GetScrollRange,'FlatSB_GetScrollRange',\
FlatSB_SetScrollInfo,'FlatSB_SetScrollInfo',\
FlatSB_SetScrollPos,'FlatSB_SetScrollPos',\
FlatSB_SetScrollProp,'FlatSB_SetScrollProp',\
FlatSB_SetScrollRange,'FlatSB_SetScrollRange',\
FlatSB_ShowScrollBar,'FlatSB_ShowScrollBar',\
GetEffectiveClientRect,'GetEffectiveClientRect',\
ImageList_Add,'ImageList_Add',\
ImageList_AddIcon,'ImageList_AddIcon',\
ImageList_AddMasked,'ImageList_AddMasked',\
ImageList_BeginDrag,'ImageList_BeginDrag',\
ImageList_Copy,'ImageList_Copy',\
ImageList_Create,'ImageList_Create',\
ImageList_Destroy,'ImageList_Destroy',\
ImageList_DragEnter,'ImageList_DragEnter',\
ImageList_DragLeave,'ImageList_DragLeave',\
ImageList_DragMove,'ImageList_DragMove',\
ImageList_DragShowNolock,'ImageList_DragShowNolock',\
ImageList_Draw,'ImageList_Draw',\
ImageList_DrawEx,'ImageList_DrawEx',\
ImageList_DrawIndirect,'ImageList_DrawIndirect',\
ImageList_Duplicate,'ImageList_Duplicate',\
ImageList_EndDrag,'ImageList_EndDrag',\
ImageList_GetBkColor,'ImageList_GetBkColor',\
ImageList_GetDragImage,'ImageList_GetDragImage',\
ImageList_GetIcon,'ImageList_GetIcon',\
ImageList_GetIconSize,'ImageList_GetIconSize',\
ImageList_GetImageCount,'ImageList_GetImageCount',\
ImageList_GetImageInfo,'ImageList_GetImageInfo',\
ImageList_GetImageRect,'ImageList_GetImageRect',\
ImageList_LoadImageA,'ImageList_LoadImageA',\
ImageList_LoadImageW,'ImageList_LoadImageW',\
ImageList_Merge,'ImageList_Merge',\
ImageList_Read,'ImageList_Read',\
ImageList_Remove,'ImageList_Remove',\
ImageList_Replace,'ImageList_Replace',\
ImageList_ReplaceIcon,'ImageList_ReplaceIcon',\
ImageList_SetBkColor,'ImageList_SetBkColor',\
ImageList_SetDragCursorImage,'ImageList_SetDragCursorImage',\
ImageList_SetFilter,'ImageList_SetFilter',\
ImageList_SetIconSize,'ImageList_SetIconSize',\
ImageList_SetImageCount,'ImageList_SetImageCount',\
ImageList_SetOverlayImage,'ImageList_SetOverlayImage',\
ImageList_Write,'ImageList_Write',\
InitCommonControls,'InitCommonControls',\
InitCommonControlsEx,'InitCommonControlsEx',\
InitializeFlatSB,'InitializeFlatSB',\
LBItemFromPt,'LBItemFromPt',\
MakeDragList,'MakeDragList',\
MenuHelp,'MenuHelp',\
PropertySheetA,'PropertySheetA',\
PropertySheetW,'PropertySheetW',\
ShowHideMenuCtl,'ShowHideMenuCtl',\
UninitializeFlatSB,'UninitializeFlatSB',\
_TrackMouseEvent,'_TrackMouseEvent'
api CreatePropertySheetPage,\
CreateStatusWindow,\
DrawStatusText,\
ImageList_LoadImage,\
PropertySheet

View File

@@ -0,0 +1,38 @@
; COMDLG32 API calls
import comdlg32,\
ChooseColorA,'ChooseColorA',\
ChooseColorW,'ChooseColorW',\
ChooseFontA,'ChooseFontA',\
ChooseFontW,'ChooseFontW',\
CommDlgExtendedError,'CommDlgExtendedError',\
FindTextA,'FindTextA',\
FindTextW,'FindTextW',\
FormatCharDlgProc,'FormatCharDlgProc',\
GetFileTitleA,'GetFileTitleA',\
GetFileTitleW,'GetFileTitleW',\
GetOpenFileNameA,'GetOpenFileNameA',\
GetOpenFileNameW,'GetOpenFileNameW',\
GetSaveFileNameA,'GetSaveFileNameA',\
GetSaveFileNameW,'GetSaveFileNameW',\
LoadAlterBitmap,'LoadAlterBitmap',\
PageSetupDlgA,'PageSetupDlgA',\
PageSetupDlgW,'PageSetupDlgW',\
PrintDlgA,'PrintDlgA',\
PrintDlgW,'PrintDlgW',\
ReplaceTextA,'ReplaceTextA',\
ReplaceTextW,'ReplaceTextW',\
WantArrows,'WantArrows',\
dwLBSubclass,'dwLBSubclass',\
dwOKSubclass,'dwOKSubclass'
api ChooseColor,\
ChooseFont,\
FindText,\
GetFileTitle,\
GetOpenFileName,\
GetSaveFileName,\
PageSetupDlg,\
PrintDlg,\
ReplaceText

View File

@@ -0,0 +1,419 @@
; GDI32 API calls
import gdi32,\
AbortDoc,'AbortDoc',\
AbortPath,'AbortPath',\
AddFontMemResourceEx,'AddFontMemResourceEx',\
AddFontResourceA,'AddFontResourceA',\
AddFontResourceW,'AddFontResourceW',\
AddFontResourceExA,'AddFontResourceExA',\
AddFontResourceExW,'AddFontResourceExW',\
AngleArc,'AngleArc',\
AnimatePalette,'AnimatePalette',\
Arc,'Arc',\
ArcTo,'ArcTo',\
BeginPath,'BeginPath',\
BitBlt,'BitBlt',\
CancelDC,'CancelDC',\
CheckColorsInGamut,'CheckColorsInGamut',\
ChoosePixelFormat,'ChoosePixelFormat',\
Chord,'Chord',\
CloseEnhMetaFile,'CloseEnhMetaFile',\
CloseFigure,'CloseFigure',\
CloseMetaFile,'CloseMetaFile',\
ColorCorrectPalette,'ColorCorrectPalette',\
ColorMatchToTarget,'ColorMatchToTarget',\
CombineRgn,'CombineRgn',\
CombineTransform,'CombineTransform',\
CopyEnhMetaFileA,'CopyEnhMetaFileA',\
CopyEnhMetaFileW,'CopyEnhMetaFileW',\
CopyMetaFileA,'CopyMetaFileA',\
CopyMetaFileW,'CopyMetaFileW',\
CreateBitmap,'CreateBitmap',\
CreateBitmapIndirect,'CreateBitmapIndirect',\
CreateBrushIndirect,'CreateBrushIndirect',\
CreateColorSpaceA,'CreateColorSpaceA',\
CreateColorSpaceW,'CreateColorSpaceW',\
CreateCompatibleBitmap,'CreateCompatibleBitmap',\
CreateCompatibleDC,'CreateCompatibleDC',\
CreateDCA,'CreateDCA',\
CreateDCW,'CreateDCW',\
CreateDIBPatternBrush,'CreateDIBPatternBrush',\
CreateDIBPatternBrushPt,'CreateDIBPatternBrushPt',\
CreateDIBSection,'CreateDIBSection',\
CreateDIBitmap,'CreateDIBitmap',\
CreateDiscardableBitmap,'CreateDiscardableBitmap',\
CreateEllipticRgn,'CreateEllipticRgn',\
CreateEllipticRgnIndirect,'CreateEllipticRgnIndirect',\
CreateEnhMetaFileA,'CreateEnhMetaFileA',\
CreateEnhMetaFileW,'CreateEnhMetaFileW',\
CreateFontA,'CreateFontA',\
CreateFontW,'CreateFontW',\
CreateFontIndirectA,'CreateFontIndirectA',\
CreateFontIndirectW,'CreateFontIndirectW',\
CreateFontIndirectExA,'CreateFontIndirectExA',\
CreateFontIndirectExW,'CreateFontIndirectExW',\
CreateHalftonePalette,'CreateHalftonePalette',\
CreateHatchBrush,'CreateHatchBrush',\
CreateICA,'CreateICA',\
CreateICW,'CreateICW',\
CreateMetaFileA,'CreateMetaFileA',\
CreateMetaFileW,'CreateMetaFileW',\
CreatePalette,'CreatePalette',\
CreatePatternBrush,'CreatePatternBrush',\
CreatePen,'CreatePen',\
CreatePenIndirect,'CreatePenIndirect',\
CreatePolyPolygonRgn,'CreatePolyPolygonRgn',\
CreatePolygonRgn,'CreatePolygonRgn',\
CreateRectRgn,'CreateRectRgn',\
CreateRectRgnIndirect,'CreateRectRgnIndirect',\
CreateRoundRectRgn,'CreateRoundRectRgn',\
CreateScalableFontResourceA,'CreateScalableFontResourceA',\
CreateScalableFontResourceW,'CreateScalableFontResourceW',\
CreateSolidBrush,'CreateSolidBrush',\
DPtoLP,'DPtoLP',\
DeleteColorSpace,'DeleteColorSpace',\
DeleteDC,'DeleteDC',\
DeleteEnhMetaFile,'DeleteEnhMetaFile',\
DeleteMetaFile,'DeleteMetaFile',\
DeleteObject,'DeleteObject',\
DescribePixelFormat,'DescribePixelFormat',\
DeviceCapabilitiesExA,'DeviceCapabilitiesExA',\
DeviceCapabilitiesExW,'DeviceCapabilitiesExW',\
DrawEscape,'DrawEscape',\
Ellipse,'Ellipse',\
EnableEUDC,'EnableEUDC',\
EndDoc,'EndDoc',\
EndPage,'EndPage',\
EndPath,'EndPath',\
EnumEnhMetaFile,'EnumEnhMetaFile',\
EnumFontFamiliesA,'EnumFontFamiliesA',\
EnumFontFamiliesW,'EnumFontFamiliesW',\
EnumFontFamiliesExA,'EnumFontFamiliesExA',\
EnumFontFamiliesExW,'EnumFontFamiliesExW',\
EnumFontsA,'EnumFontsA',\
EnumFontsW,'EnumFontsW',\
EnumICMProfilesA,'EnumICMProfilesA',\
EnumICMProfilesW,'EnumICMProfilesW',\
EnumMetaFile,'EnumMetaFile',\
EnumObjects,'EnumObjects',\
EqualRgn,'EqualRgn',\
Escape,'Escape',\
ExcludeClipRect,'ExcludeClipRect',\
ExtCreatePen,'ExtCreatePen',\
ExtCreateRegion,'ExtCreateRegion',\
ExtEscape,'ExtEscape',\
ExtFloodFill,'ExtFloodFill',\
ExtSelectClipRgn,'ExtSelectClipRgn',\
ExtTextOutA,'ExtTextOutA',\
ExtTextOutW,'ExtTextOutW',\
FillPath,'FillPath',\
FillRgn,'FillRgn',\
FixBrushOrgEx,'FixBrushOrgEx',\
FlattenPath,'FlattenPath',\
FloodFill,'FloodFill',\
FrameRgn,'FrameRgn',\
GdiComment,'GdiComment',\
GdiDeleteSpoolFileHandle,'GdiDeleteSpoolFileHandle',\
GdiEndDocEMF,'GdiEndDocEMF',\
GdiEndPageEMF,'GdiEndPageEMF',\
GdiFlush,'GdiFlush',\
GdiGetBatchLimit,'GdiGetBatchLimit',\
GdiGetDC,'GdiGetDC',\
GdiGetDevmodeForPage,'GdiGetDevmodeForPage',\
GdiGetPageCount,'GdiGetPageCount',\
GdiGetPageHandle,'GdiGetPageHandle',\
GdiGetSpoolFileHandle,'GdiGetSpoolFileHandle',\
GdiPlayDCScript,'GdiPlayDCScript',\
GdiPlayEMF,'GdiPlayEMF',\
GdiPlayJournal,'GdiPlayJournal',\
GdiPlayPageEMF,'GdiPlayPageEMF',\
GdiPlayPrivatePageEMF,'GdiPlayPrivatePageEMF',\
GdiPlayScript,'GdiPlayScript',\
GdiResetDCEMF,'GdiResetDCEMF',\
GdiSetBatchLimit,'GdiSetBatchLimit',\
GdiStartDocEMF,'GdiStartDocEMF',\
GdiStartPageEMF,'GdiStartPageEMF',\
GetArcDirection,'GetArcDirection',\
GetAspectRatioFilterEx,'GetAspectRatioFilterEx',\
GetBitmapBits,'GetBitmapBits',\
GetBitmapDimensionEx,'GetBitmapDimensionEx',\
GetBkColor,'GetBkColor',\
GetBkMode,'GetBkMode',\
GetBoundsRect,'GetBoundsRect',\
GetBrushOrgEx,'GetBrushOrgEx',\
GetCharABCWidthsA,'GetCharABCWidthsA',\
GetCharABCWidthsW,'GetCharABCWidthsW',\
GetCharABCWidthsFloatA,'GetCharABCWidthsFloatA',\
GetCharABCWidthsFloatW,'GetCharABCWidthsFloatW',\
GetCharABCWidthsI,'GetCharABCWidthsI',\
GetCharWidth32A,'GetCharWidth32A',\
GetCharWidth32W,'GetCharWidth32W',\
GetCharWidthA,'GetCharWidthA',\
GetCharWidthW,'GetCharWidthW',\
GetCharWidthFloatA,'GetCharWidthFloatA',\
GetCharWidthFloatW,'GetCharWidthFloatW',\
GetCharWidthI,'GetCharWidthI',\
GetCharacterPlacementA,'GetCharacterPlacementA',\
GetCharacterPlacementW,'GetCharacterPlacementW',\
GetClipBox,'GetClipBox',\
GetClipRgn,'GetClipRgn',\
GetColorAdjustment,'GetColorAdjustment',\
GetColorSpace,'GetColorSpace',\
GetCurrentObject,'GetCurrentObject',\
GetCurrentPositionEx,'GetCurrentPositionEx',\
GetDCBrushColor,'GetDCBrushColor',\
GetDCOrgEx,'GetDCOrgEx',\
GetDCPenColor,'GetDCPenColor',\
GetDIBColorTable,'GetDIBColorTable',\
GetDIBits,'GetDIBits',\
GetDeviceCaps,'GetDeviceCaps',\
GetDeviceGammaRamp,'GetDeviceGammaRamp',\
GetEnhMetaFileA,'GetEnhMetaFileA',\
GetEnhMetaFileW,'GetEnhMetaFileW',\
GetEnhMetaFileBits,'GetEnhMetaFileBits',\
GetEnhMetaFileDescriptionA,'GetEnhMetaFileDescriptionA',\
GetEnhMetaFileDescriptionW,'GetEnhMetaFileDescriptionW',\
GetEnhMetaFileHeader,'GetEnhMetaFileHeader',\
GetEnhMetaFilePaletteEntries,'GetEnhMetaFilePaletteEntries',\
GetEnhMetaFilePixelFormat,'GetEnhMetaFilePixelFormat',\
GetFontAssocStatus,'GetFontAssocStatus',\
GetFontData,'GetFontData',\
GetFontLanguageInfo,'GetFontLanguageInfo',\
GetFontUnicodeRanges,'GetFontUnicodeRanges',\
GetGlyphIndicesA,'GetGlyphIndicesA',\
GetGlyphIndicesW,'GetGlyphIndicesW',\
GetGlyphOutlineA,'GetGlyphOutlineA',\
GetGlyphOutlineW,'GetGlyphOutlineW',\
GetGraphicsMode,'GetGraphicsMode',\
GetICMProfileA,'GetICMProfileA',\
GetICMProfileW,'GetICMProfileW',\
GetKerningPairsA,'GetKerningPairsA',\
GetKerningPairsW,'GetKerningPairsW',\
GetLogColorSpaceA,'GetLogColorSpaceA',\
GetLogColorSpaceW,'GetLogColorSpaceW',\
GetMapMode,'GetMapMode',\
GetMetaFileA,'GetMetaFileA',\
GetMetaFileW,'GetMetaFileW',\
GetMetaFileBitsEx,'GetMetaFileBitsEx',\
GetMetaRgn,'GetMetaRgn',\
GetMiterLimit,'GetMiterLimit',\
GetNearestColor,'GetNearestColor',\
GetNearestPaletteIndex,'GetNearestPaletteIndex',\
GetObjectA,'GetObjectA',\
GetObjectW,'GetObjectW',\
GetObjectType,'GetObjectType',\
GetOutlineTextMetricsA,'GetOutlineTextMetricsA',\
GetOutlineTextMetricsW,'GetOutlineTextMetricsW',\
GetPaletteEntries,'GetPaletteEntries',\
GetPath,'GetPath',\
GetPixel,'GetPixel',\
GetPixelFormat,'GetPixelFormat',\
GetPolyFillMode,'GetPolyFillMode',\
GetROP2,'GetROP2',\
GetRandomRgn,'GetRandomRgn',\
GetRasterizerCaps,'GetRasterizerCaps',\
GetRegionData,'GetRegionData',\
GetRelAbs,'GetRelAbs',\
GetRgnBox,'GetRgnBox',\
GetStockObject,'GetStockObject',\
GetStretchBltMode,'GetStretchBltMode',\
GetSystemPaletteEntries,'GetSystemPaletteEntries',\
GetSystemPaletteUse,'GetSystemPaletteUse',\
GetTextAlign,'GetTextAlign',\
GetTextCharacterExtra,'GetTextCharacterExtra',\
GetTextCharset,'GetTextCharset',\
GetTextCharsetInfo,'GetTextCharsetInfo',\
GetTextColor,'GetTextColor',\
GetTextExtentExPointA,'GetTextExtentExPointA',\
GetTextExtentExPointW,'GetTextExtentExPointW',\
GetTextExtentExPointI,'GetTextExtentExPointI',\
GetTextExtentPoint32A,'GetTextExtentPoint32A',\
GetTextExtentPoint32W,'GetTextExtentPoint32W',\
GetTextExtentPointA,'GetTextExtentPointA',\
GetTextExtentPointW,'GetTextExtentPointW',\
GetTextExtentPointI,'GetTextExtentPointI',\
GetTextFaceA,'GetTextFaceA',\
GetTextFaceW,'GetTextFaceW',\
GetTextMetricsA,'GetTextMetricsA',\
GetTextMetricsW,'GetTextMetricsW',\
GetViewportExtEx,'GetViewportExtEx',\
GetViewportOrgEx,'GetViewportOrgEx',\
GetWinMetaFileBits,'GetWinMetaFileBits',\
GetWindowExtEx,'GetWindowExtEx',\
GetWindowOrgEx,'GetWindowOrgEx',\
GetWorldTransform,'GetWorldTransform',\
IntersectClipRect,'IntersectClipRect',\
InvertRgn,'InvertRgn',\
LPtoDP,'LPtoDP',\
LineDDA,'LineDDA',\
LineDDW,'LineDDW',\
LineTo,'LineTo',\
MaskBlt,'MaskBlt',\
ModifyWorldTransform,'ModifyWorldTransform',\
MoveToEx,'MoveToEx',\
OffsetClipRgn,'OffsetClipRgn',\
OffsetRgn,'OffsetRgn',\
OffsetViewportOrgEx,'OffsetViewportOrgEx',\
OffsetWindowOrgEx,'OffsetWindowOrgEx',\
PaintRgn,'PaintRgn',\
PatBlt,'PatBlt',\
PathToRegion,'PathToRegion',\
Pie,'Pie',\
PlayEnhMetaFile,'PlayEnhMetaFile',\
PlayEnhMetaFileRecord,'PlayEnhMetaFileRecord',\
PlayMetaFile,'PlayMetaFile',\
PlayMetaFileRecord,'PlayMetaFileRecord',\
PlgBlt,'PlgBlt',\
PolyBezier,'PolyBezier',\
PolyBezierTo,'PolyBezierTo',\
PolyDraw,'PolyDraw',\
PolyPatBlt,'PolyPatBlt',\
PolyPolygon,'PolyPolygon',\
PolyPolyline,'PolyPolyline',\
PolyTextOutA,'PolyTextOutA',\
PolyTextOutW,'PolyTextOutW',\
Polygon,'Polygon',\
Polyline,'Polyline',\
PolylineTo,'PolylineTo',\
PtInRegion,'PtInRegion',\
PtVisible,'PtVisible',\
RealizePalette,'RealizePalette',\
RectInRegion,'RectInRegion',\
RectVisible,'RectVisible',\
Rectangle,'Rectangle',\
RemoveFontMemResourceEx,'RemoveFontMemResourceEx',\
RemoveFontResourceA,'RemoveFontResourceA',\
RemoveFontResourceW,'RemoveFontResourceW',\
RemoveFontResourceExA,'RemoveFontResourceExA',\
RemoveFontResourceExW,'RemoveFontResourceExW',\
ResetDCA,'ResetDCA',\
ResetDCW,'ResetDCW',\
ResizePalette,'ResizePalette',\
RestoreDC,'RestoreDC',\
RoundRect,'RoundRect',\
SaveDC,'SaveDC',\
ScaleViewportExtEx,'ScaleViewportExtEx',\
ScaleWindowExtEx,'ScaleWindowExtEx',\
SelectBrushLocal,'SelectBrushLocal',\
SelectClipPath,'SelectClipPath',\
SelectClipRgn,'SelectClipRgn',\
SelectFontLocal,'SelectFontLocal',\
SelectObject,'SelectObject',\
SelectPalette,'SelectPalette',\
SetAbortProc,'SetAbortProc',\
SetArcDirection,'SetArcDirection',\
SetBitmapBits,'SetBitmapBits',\
SetBitmapDimensionEx,'SetBitmapDimensionEx',\
SetBkColor,'SetBkColor',\
SetBkMode,'SetBkMode',\
SetBoundsRect,'SetBoundsRect',\
SetBrushOrgEx,'SetBrushOrgEx',\
SetColorAdjustment,'SetColorAdjustment',\
SetColorSpace,'SetColorSpace',\
SetDCBrushColor,'SetDCBrushColor',\
SetDCPenColor,'SetDCPenColor',\
SetDIBColorTable,'SetDIBColorTable',\
SetDIBits,'SetDIBits',\
SetDIBitsToDevice,'SetDIBitsToDevice',\
SetDeviceGammaRamp,'SetDeviceGammaRamp',\
SetEnhMetaFileBits,'SetEnhMetaFileBits',\
SetFontEnumeration,'SetFontEnumeration',\
SetGraphicsMode,'SetGraphicsMode',\
SetICMMode,'SetICMMode',\
SetICMProfileA,'SetICMProfileA',\
SetICMProfileW,'SetICMProfileW',\
SetMagicColors,'SetMagicColors',\
SetMapMode,'SetMapMode',\
SetMapperFlags,'SetMapperFlags',\
SetMetaFileBitsEx,'SetMetaFileBitsEx',\
SetMetaRgn,'SetMetaRgn',\
SetMiterLimit,'SetMiterLimit',\
SetPaletteEntries,'SetPaletteEntries',\
SetPixel,'SetPixel',\
SetPixelFormat,'SetPixelFormat',\
SetPixelV,'SetPixelV',\
SetPolyFillMode,'SetPolyFillMode',\
SetROP2,'SetROP2',\
SetRectRgn,'SetRectRgn',\
SetRelAbs,'SetRelAbs',\
SetStretchBltMode,'SetStretchBltMode',\
SetSystemPaletteUse,'SetSystemPaletteUse',\
SetTextAlign,'SetTextAlign',\
SetTextCharacterExtra,'SetTextCharacterExtra',\
SetTextColor,'SetTextColor',\
SetTextJustification,'SetTextJustification',\
SetViewportExtEx,'SetViewportExtEx',\
SetViewportOrgEx,'SetViewportOrgEx',\
SetWinMetaFileBits,'SetWinMetaFileBits',\
SetWindowExtEx,'SetWindowExtEx',\
SetWindowOrgEx,'SetWindowOrgEx',\
SetWorldTransform,'SetWorldTransform',\
StartDocA,'StartDocA',\
StartDocW,'StartDocW',\
StartPage,'StartPage',\
StretchBlt,'StretchBlt',\
StretchDIBits,'StretchDIBits',\
StrokeAndFillPath,'StrokeAndFillPath',\
StrokePath,'StrokePath',\
SwapBuffers,'SwapBuffers',\
TextOutA,'TextOutA',\
TextOutW,'TextOutW',\
TranslateCharsetInfo,'TranslateCharsetInfo',\
UnrealizeObject,'UnrealizeObject',\
UpdateColors,'UpdateColors',\
UpdateICMRegKeyA,'UpdateICMRegKeyA',\
UpdateICMRegKeyW,'UpdateICMRegKeyW',\
WidenPath,'WidenPath',\
gdiPlaySpoolStream,'gdiPlaySpoolStream'
api AddFontResource,\
AddFontResourceEx,\
CopyEnhMetaFile,\
CopyMetaFile,\
CreateColorSpace,\
CreateDC,\
CreateEnhMetaFile,\
CreateFont,\
CreateFontIndirect,\
CreateFontIndirectEx,\
CreateIC,\
CreateMetaFile,\
CreateScalableFontResource,\
DeviceCapabilitiesEx,\
EnumFontFamilies,\
EnumFontFamiliesEx,\
EnumFonts,\
EnumICMProfiles,\
ExtTextOut,\
GetCharABCWidths,\
GetCharABCWidthsFloat,\
GetCharWidth32,\
GetCharWidth,\
GetCharWidthFloat,\
GetCharacterPlacement,\
GetEnhMetaFile,\
GetEnhMetaFileDescription,\
GetGlyphIndices,\
GetGlyphOutline,\
GetICMProfile,\
GetKerningPairs,\
GetLogColorSpace,\
GetMetaFile,\
GetObject,\
GetOutlineTextMetrics,\
GetTextExtentExPoint,\
GetTextExtentPoint32,\
GetTextExtentPoint,\
GetTextFace,\
GetTextMetrics,\
LineDD,\
PolyTextOut,\
RemoveFontResource,\
RemoveFontResourceEx,\
ResetDC,\
SetICMProfile,\
StartDoc,\
TextOut,\
UpdateICMRegKey

View File

@@ -0,0 +1,881 @@
; KERNEL32 API calls
import kernel32,\
AddAtomA,'AddAtomA',\
AddAtomW,'AddAtomW',\
AddConsoleAliasA,'AddConsoleAliasA',\
AddConsoleAliasW,'AddConsoleAliasW',\
AllocConsole,'AllocConsole',\
AreFileApisANSI,'AreFileApisANSI',\
AssignProcessToJobObject,'AssignProcessToJobObject',\
BackupRead,'BackupRead',\
BackupSeek,'BackupSeek',\
BackupWrite,'BackupWrite',\
BaseAttachCompleteThunk,'BaseAttachCompleteThunk',\
Beep,'Beep',\
BeginUpdateResourceA,'BeginUpdateResourceA',\
BeginUpdateResourceW,'BeginUpdateResourceW',\
BuildCommDCBA,'BuildCommDCBA',\
BuildCommDCBW,'BuildCommDCBW',\
BuildCommDCBAndTimeoutsA,'BuildCommDCBAndTimeoutsA',\
BuildCommDCBAndTimeoutsW,'BuildCommDCBAndTimeoutsW',\
CallNamedPipeA,'CallNamedPipeA',\
CallNamedPipeW,'CallNamedPipeW',\
CancelIo,'CancelIo',\
CancelWaitableTimer,'CancelWaitableTimer',\
ClearCommBreak,'ClearCommBreak',\
ClearCommError,'ClearCommError',\
CloseConsoleHandle,'CloseConsoleHandle',\
CloseHandle,'CloseHandle',\
CloseProfileUserMapping,'CloseProfileUserMapping',\
CmdBatNotification,'CmdBatNotification',\
CommConfigDialogA,'CommConfigDialogA',\
CommConfigDialogW,'CommConfigDialogW',\
CompareFileTime,'CompareFileTime',\
CompareStringA,'CompareStringA',\
CompareStringW,'CompareStringW',\
ConnectNamedPipe,'ConnectNamedPipe',\
ConsoleMenuControl,'ConsoleMenuControl',\
ContinueDebugEvent,'ContinueDebugEvent',\
ConvertDefaultLocale,'ConvertDefaultLocale',\
ConvertThreadToFiber,'ConvertThreadToFiber',\
CopyFileA,'CopyFileA',\
CopyFileW,'CopyFileW',\
CopyFileExA,'CopyFileExA',\
CopyFileExW,'CopyFileExW',\
CreateConsoleScreenBuffer,'CreateConsoleScreenBuffer',\
CreateDirectoryA,'CreateDirectoryA',\
CreateDirectoryW,'CreateDirectoryW',\
CreateDirectoryExA,'CreateDirectoryExA',\
CreateDirectoryExW,'CreateDirectoryExW',\
CreateEventA,'CreateEventA',\
CreateEventW,'CreateEventW',\
CreateFiber,'CreateFiber',\
CreateFileA,'CreateFileA',\
CreateFileW,'CreateFileW',\
CreateFileMappingA,'CreateFileMappingA',\
CreateFileMappingW,'CreateFileMappingW',\
CreateHardLinkA,'CreateHardLinkA',\
CreateHardLinkW,'CreateHardLinkW',\
CreateIoCompletionPort,'CreateIoCompletionPort',\
CreateJobObjectA,'CreateJobObjectA',\
CreateJobObjectW,'CreateJobObjectW',\
CreateMailslotA,'CreateMailslotA',\
CreateMailslotW,'CreateMailslotW',\
CreateMutexA,'CreateMutexA',\
CreateMutexW,'CreateMutexW',\
CreateNamedPipeA,'CreateNamedPipeA',\
CreateNamedPipeW,'CreateNamedPipeW',\
CreatePipe,'CreatePipe',\
CreateProcessA,'CreateProcessA',\
CreateProcessW,'CreateProcessW',\
CreateRemoteThread,'CreateRemoteThread',\
CreateSemaphoreA,'CreateSemaphoreA',\
CreateSemaphoreW,'CreateSemaphoreW',\
CreateTapePartition,'CreateTapePartition',\
CreateThread,'CreateThread',\
CreateToolhelp32Snapshot,'CreateToolhelp32Snapshot',\
CreateVirtualBuffer,'CreateVirtualBuffer',\
CreateWaitableTimerA,'CreateWaitableTimerA',\
CreateWaitableTimerW,'CreateWaitableTimerW',\
DebugActiveProcess,'DebugActiveProcess',\
DebugBreak,'DebugBreak',\
DefineDosDeviceA,'DefineDosDeviceA',\
DefineDosDeviceW,'DefineDosDeviceW',\
DeleteAtom,'DeleteAtom',\
DeleteCriticalSection,'DeleteCriticalSection',\
DeleteFiber,'DeleteFiber',\
DeleteFileA,'DeleteFileA',\
DeleteFileW,'DeleteFileW',\
DeviceIoControl,'DeviceIoControl',\
DisableThreadLibraryCalls,'DisableThreadLibraryCalls',\
DisconnectNamedPipe,'DisconnectNamedPipe',\
DosDateTimeToFileTime,'DosDateTimeToFileTime',\
DuplicateConsoleHandle,'DuplicateConsoleHandle',\
DuplicateHandle,'DuplicateHandle',\
EndUpdateResourceA,'EndUpdateResourceA',\
EndUpdateResourceW,'EndUpdateResourceW',\
EnterCriticalSection,'EnterCriticalSection',\
EnumCalendarInfoA,'EnumCalendarInfoA',\
EnumCalendarInfoW,'EnumCalendarInfoW',\
EnumCalendarInfoExA,'EnumCalendarInfoExA',\
EnumCalendarInfoExW,'EnumCalendarInfoExW',\
EnumDateFormatsA,'EnumDateFormatsA',\
EnumDateFormatsW,'EnumDateFormatsW',\
EnumDateFormatsExA,'EnumDateFormatsExA',\
EnumDateFormatsExW,'EnumDateFormatsExW',\
EnumResourceLanguagesA,'EnumResourceLanguagesA',\
EnumResourceLanguagesW,'EnumResourceLanguagesW',\
EnumResourceNamesA,'EnumResourceNamesA',\
EnumResourceNamesW,'EnumResourceNamesW',\
EnumResourceTypesA,'EnumResourceTypesA',\
EnumResourceTypesW,'EnumResourceTypesW',\
EnumSystemCodePagesA,'EnumSystemCodePagesA',\
EnumSystemCodePagesW,'EnumSystemCodePagesW',\
EnumSystemLocalesA,'EnumSystemLocalesA',\
EnumSystemLocalesW,'EnumSystemLocalesW',\
EnumTimeFormatsA,'EnumTimeFormatsA',\
EnumTimeFormatsW,'EnumTimeFormatsW',\
EraseTape,'EraseTape',\
EscapeCommFunction,'EscapeCommFunction',\
ExitProcess,'ExitProcess',\
ExitThread,'ExitThread',\
ExitVDM,'ExitVDM',\
ExpandEnvironmentStringsA,'ExpandEnvironmentStringsA',\
ExpandEnvironmentStringsW,'ExpandEnvironmentStringsW',\
ExpungeConsoleCommandHistoryA,'ExpungeConsoleCommandHistoryA',\
ExpungeConsoleCommandHistoryW,'ExpungeConsoleCommandHistoryW',\
ExtendVirtualBuffer,'ExtendVirtualBuffer',\
FatalAppExitA,'FatalAppExitA',\
FatalAppExitW,'FatalAppExitW',\
FatalExit,'FatalExit',\
FileTimeToDosDateTime,'FileTimeToDosDateTime',\
FileTimeToLocalFileTime,'FileTimeToLocalFileTime',\
FileTimeToSystemTime,'FileTimeToSystemTime',\
FillConsoleOutputAttribute,'FillConsoleOutputAttribute',\
FillConsoleOutputCharacterA,'FillConsoleOutputCharacterA',\
FillConsoleOutputCharacterW,'FillConsoleOutputCharacterW',\
FindAtomA,'FindAtomA',\
FindAtomW,'FindAtomW',\
FindClose,'FindClose',\
FindCloseChangeNotification,'FindCloseChangeNotification',\
FindFirstChangeNotificationA,'FindFirstChangeNotificationA',\
FindFirstChangeNotificationW,'FindFirstChangeNotificationW',\
FindFirstFileA,'FindFirstFileA',\
FindFirstFileW,'FindFirstFileW',\
FindFirstFileExA,'FindFirstFileExA',\
FindFirstFileExW,'FindFirstFileExW',\
FindNextChangeNotification,'FindNextChangeNotification',\
FindNextFileA,'FindNextFileA',\
FindNextFileW,'FindNextFileW',\
FindResourceA,'FindResourceA',\
FindResourceW,'FindResourceW',\
FindResourceExA,'FindResourceExA',\
FindResourceExW,'FindResourceExW',\
FlushConsoleInputBuffer,'FlushConsoleInputBuffer',\
FlushFileBuffers,'FlushFileBuffers',\
FlushInstructionCache,'FlushInstructionCache',\
FlushViewOfFile,'FlushViewOfFile',\
FoldStringA,'FoldStringA',\
FoldStringW,'FoldStringW',\
FormatMessageA,'FormatMessageA',\
FormatMessageW,'FormatMessageW',\
FreeConsole,'FreeConsole',\
FreeEnvironmentStringsA,'FreeEnvironmentStringsA',\
FreeEnvironmentStringsW,'FreeEnvironmentStringsW',\
FreeLibrary,'FreeLibrary',\
FreeLibraryAndExitThread,'FreeLibraryAndExitThread',\
FreeResource,'FreeResource',\
FreeVirtualBuffer,'FreeVirtualBuffer',\
GenerateConsoleCtrlEvent,'GenerateConsoleCtrlEvent',\
GetACP,'GetACP',\
GetAtomNameA,'GetAtomNameA',\
GetAtomNameW,'GetAtomNameW',\
GetBinaryTypeA,'GetBinaryTypeA',\
GetBinaryTypeW,'GetBinaryTypeW',\
GetCPInfo,'GetCPInfo',\
GetCPInfoExA,'GetCPInfoExA',\
GetCPInfoExW,'GetCPInfoExW',\
GetCommConfig,'GetCommConfig',\
GetCommMask,'GetCommMask',\
GetCommModemStatus,'GetCommModemStatus',\
GetCommProperties,'GetCommProperties',\
GetCommState,'GetCommState',\
GetCommTimeouts,'GetCommTimeouts',\
GetCommandLineA,'GetCommandLineA',\
GetCommandLineW,'GetCommandLineW',\
GetCompressedFileSizeA,'GetCompressedFileSizeA',\
GetCompressedFileSizeW,'GetCompressedFileSizeW',\
GetComputerNameA,'GetComputerNameA',\
GetComputerNameW,'GetComputerNameW',\
GetConsoleAliasA,'GetConsoleAliasA',\
GetConsoleAliasW,'GetConsoleAliasW',\
GetConsoleAliasExesA,'GetConsoleAliasExesA',\
GetConsoleAliasExesW,'GetConsoleAliasExesW',\
GetConsoleAliasExesLengthA,'GetConsoleAliasExesLengthA',\
GetConsoleAliasExesLengthW,'GetConsoleAliasExesLengthW',\
GetConsoleAliasesA,'GetConsoleAliasesA',\
GetConsoleAliasesW,'GetConsoleAliasesW',\
GetConsoleAliasesLengthA,'GetConsoleAliasesLengthA',\
GetConsoleAliasesLengthW,'GetConsoleAliasesLengthW',\
GetConsoleCP,'GetConsoleCP',\
GetConsoleCommandHistoryA,'GetConsoleCommandHistoryA',\
GetConsoleCommandHistoryW,'GetConsoleCommandHistoryW',\
GetConsoleCommandHistoryLengthA,'GetConsoleCommandHistoryLengthA',\
GetConsoleCommandHistoryLengthW,'GetConsoleCommandHistoryLengthW',\
GetConsoleCursorInfo,'GetConsoleCursorInfo',\
GetConsoleDisplayMode,'GetConsoleDisplayMode',\
GetConsoleFontInfo,'GetConsoleFontInfo',\
GetConsoleFontSize,'GetConsoleFontSize',\
GetConsoleHardwareState,'GetConsoleHardwareState',\
GetConsoleInputExeNameA,'GetConsoleInputExeNameA',\
GetConsoleInputExeNameW,'GetConsoleInputExeNameW',\
GetConsoleInputWaitHandle,'GetConsoleInputWaitHandle',\
GetConsoleKeyboardLayoutNameA,'GetConsoleKeyboardLayoutNameA',\
GetConsoleKeyboardLayoutNameW,'GetConsoleKeyboardLayoutNameW',\
GetConsoleMode,'GetConsoleMode',\
GetConsoleOutputCP,'GetConsoleOutputCP',\
GetConsoleScreenBufferInfo,'GetConsoleScreenBufferInfo',\
GetConsoleTitleA,'GetConsoleTitleA',\
GetConsoleTitleW,'GetConsoleTitleW',\
GetConsoleWindow,'GetConsoleWindow',\
GetCurrencyFormatA,'GetCurrencyFormatA',\
GetCurrencyFormatW,'GetCurrencyFormatW',\
GetCurrentConsoleFont,'GetCurrentConsoleFont',\
GetCurrentDirectoryA,'GetCurrentDirectoryA',\
GetCurrentDirectoryW,'GetCurrentDirectoryW',\
GetCurrentProcess,'GetCurrentProcess',\
GetCurrentProcessId,'GetCurrentProcessId',\
GetCurrentThread,'GetCurrentThread',\
GetCurrentThreadId,'GetCurrentThreadId',\
GetDateFormatA,'GetDateFormatA',\
GetDateFormatW,'GetDateFormatW',\
GetDefaultCommConfigA,'GetDefaultCommConfigA',\
GetDefaultCommConfigW,'GetDefaultCommConfigW',\
GetDevicePowerState,'GetDevicePowerState',\
GetDiskFreeSpaceA,'GetDiskFreeSpaceA',\
GetDiskFreeSpaceW,'GetDiskFreeSpaceW',\
GetDiskFreeSpaceExA,'GetDiskFreeSpaceExA',\
GetDiskFreeSpaceExW,'GetDiskFreeSpaceExW',\
GetDriveTypeA,'GetDriveTypeA',\
GetDriveTypeW,'GetDriveTypeW',\
GetEnvironmentStringsA,'GetEnvironmentStringsA',\
GetEnvironmentStringsW,'GetEnvironmentStringsW',\
GetEnvironmentVariableA,'GetEnvironmentVariableA',\
GetEnvironmentVariableW,'GetEnvironmentVariableW',\
GetExitCodeProcess,'GetExitCodeProcess',\
GetExitCodeThread,'GetExitCodeThread',\
GetFileAttributesA,'GetFileAttributesA',\
GetFileAttributesW,'GetFileAttributesW',\
GetFileAttributesExA,'GetFileAttributesExA',\
GetFileAttributesExW,'GetFileAttributesExW',\
GetFileInformationByHandle,'GetFileInformationByHandle',\
GetFileSize,'GetFileSize',\
GetFileSizeEx,'GetFileSizeEx',\
GetFileTime,'GetFileTime',\
GetFileType,'GetFileType',\
GetFullPathNameA,'GetFullPathNameA',\
GetFullPathNameW,'GetFullPathNameW',\
GetHandleInformation,'GetHandleInformation',\
GetLargestConsoleWindowSize,'GetLargestConsoleWindowSize',\
GetLastError,'GetLastError',\
GetLocalTime,'GetLocalTime',\
GetLocaleInfoA,'GetLocaleInfoA',\
GetLocaleInfoW,'GetLocaleInfoW',\
GetLogicalDriveStringsA,'GetLogicalDriveStringsA',\
GetLogicalDriveStringsW,'GetLogicalDriveStringsW',\
GetLogicalDrives,'GetLogicalDrives',\
GetLongPathNameA,'GetLongPathNameA',\
GetLongPathNameW,'GetLongPathNameW',\
GetMailslotInfo,'GetMailslotInfo',\
GetModuleFileNameA,'GetModuleFileNameA',\
GetModuleFileNameW,'GetModuleFileNameW',\
GetModuleHandleA,'GetModuleHandleA',\
GetModuleHandleW,'GetModuleHandleW',\
GetNamedPipeHandleStateA,'GetNamedPipeHandleStateA',\
GetNamedPipeHandleStateW,'GetNamedPipeHandleStateW',\
GetNamedPipeInfo,'GetNamedPipeInfo',\
GetNextVDMCommand,'GetNextVDMCommand',\
GetNumberFormatA,'GetNumberFormatA',\
GetNumberFormatW,'GetNumberFormatW',\
GetNumberOfConsoleFonts,'GetNumberOfConsoleFonts',\
GetNumberOfConsoleInputEvents,'GetNumberOfConsoleInputEvents',\
GetNumberOfConsoleMouseButtons,'GetNumberOfConsoleMouseButtons',\
GetOEMCP,'GetOEMCP',\
GetOverlappedResult,'GetOverlappedResult',\
GetPriorityClass,'GetPriorityClass',\
GetPrivateProfileIntA,'GetPrivateProfileIntA',\
GetPrivateProfileIntW,'GetPrivateProfileIntW',\
GetPrivateProfileSectionA,'GetPrivateProfileSectionA',\
GetPrivateProfileSectionW,'GetPrivateProfileSectionW',\
GetPrivateProfileSectionNamesA,'GetPrivateProfileSectionNamesA',\
GetPrivateProfileSectionNamesW,'GetPrivateProfileSectionNamesW',\
GetPrivateProfileStringA,'GetPrivateProfileStringA',\
GetPrivateProfileStringW,'GetPrivateProfileStringW',\
GetPrivateProfileStructA,'GetPrivateProfileStructA',\
GetPrivateProfileStructW,'GetPrivateProfileStructW',\
GetProcAddress,'GetProcAddress',\
GetProcessAffinityMask,'GetProcessAffinityMask',\
GetProcessHeap,'GetProcessHeap',\
GetProcessHeaps,'GetProcessHeaps',\
GetProcessPriorityBoost,'GetProcessPriorityBoost',\
GetProcessShutdownParameters,'GetProcessShutdownParameters',\
GetProcessTimes,'GetProcessTimes',\
GetProcessVersion,'GetProcessVersion',\
GetProcessWorkingSetSize,'GetProcessWorkingSetSize',\
GetProfileIntA,'GetProfileIntA',\
GetProfileIntW,'GetProfileIntW',\
GetProfileSectionA,'GetProfileSectionA',\
GetProfileSectionW,'GetProfileSectionW',\
GetProfileStringA,'GetProfileStringA',\
GetProfileStringW,'GetProfileStringW',\
GetQueuedCompletionStatus,'GetQueuedCompletionStatus',\
GetShortPathNameA,'GetShortPathNameA',\
GetShortPathNameW,'GetShortPathNameW',\
GetStartupInfoA,'GetStartupInfoA',\
GetStartupInfoW,'GetStartupInfoW',\
GetStdHandle,'GetStdHandle',\
GetStringTypeA,'GetStringTypeA',\
GetStringTypeW,'GetStringTypeW',\
GetStringTypeExA,'GetStringTypeExA',\
GetStringTypeExW,'GetStringTypeExW',\
GetSystemDefaultLCID,'GetSystemDefaultLCID',\
GetSystemDefaultLangID,'GetSystemDefaultLangID',\
GetSystemDirectoryA,'GetSystemDirectoryA',\
GetSystemDirectoryW,'GetSystemDirectoryW',\
GetSystemInfo,'GetSystemInfo',\
GetSystemPowerStatus,'GetSystemPowerStatus',\
GetSystemTime,'GetSystemTime',\
GetSystemTimeAdjustment,'GetSystemTimeAdjustment',\
GetSystemTimeAsFileTime,'GetSystemTimeAsFileTime',\
GetTapeParameters,'GetTapeParameters',\
GetTapePosition,'GetTapePosition',\
GetTapeStatus,'GetTapeStatus',\
GetTempFileNameA,'GetTempFileNameA',\
GetTempFileNameW,'GetTempFileNameW',\
GetTempPathA,'GetTempPathA',\
GetTempPathW,'GetTempPathW',\
GetThreadContext,'GetThreadContext',\
GetThreadLocale,'GetThreadLocale',\
GetThreadPriority,'GetThreadPriority',\
GetThreadPriorityBoost,'GetThreadPriorityBoost',\
GetThreadSelectorEntry,'GetThreadSelectorEntry',\
GetThreadTimes,'GetThreadTimes',\
GetTickCount,'GetTickCount',\
GetTimeFormatA,'GetTimeFormatA',\
GetTimeFormatW,'GetTimeFormatW',\
GetTimeZoneInformation,'GetTimeZoneInformation',\
GetUserDefaultLCID,'GetUserDefaultLCID',\
GetUserDefaultLangID,'GetUserDefaultLangID',\
GetVDMCurrentDirectories,'GetVDMCurrentDirectories',\
GetVersion,'GetVersion',\
GetVersionExA,'GetVersionExA',\
GetVersionExW,'GetVersionExW',\
GetVolumeInformationA,'GetVolumeInformationA',\
GetVolumeInformationW,'GetVolumeInformationW',\
GetWindowsDirectoryA,'GetWindowsDirectoryA',\
GetWindowsDirectoryW,'GetWindowsDirectoryW',\
GlobalAddAtomA,'GlobalAddAtomA',\
GlobalAddAtomW,'GlobalAddAtomW',\
GlobalAlloc,'GlobalAlloc',\
GlobalCompact,'GlobalCompact',\
GlobalDeleteAtom,'GlobalDeleteAtom',\
GlobalFindAtomA,'GlobalFindAtomA',\
GlobalFindAtomW,'GlobalFindAtomW',\
GlobalFix,'GlobalFix',\
GlobalFlags,'GlobalFlags',\
GlobalFree,'GlobalFree',\
GlobalGetAtomNameA,'GlobalGetAtomNameA',\
GlobalGetAtomNameW,'GlobalGetAtomNameW',\
GlobalHandle,'GlobalHandle',\
GlobalLock,'GlobalLock',\
GlobalMemoryStatus,'GlobalMemoryStatus',\
GlobalMemoryStatusVlm,'GlobalMemoryStatusVlm',\
GlobalReAlloc,'GlobalReAlloc',\
GlobalSize,'GlobalSize',\
GlobalUnWire,'GlobalUnWire',\
GlobalUnfix,'GlobalUnfix',\
GlobalUnlock,'GlobalUnlock',\
GlobalWire,'GlobalWire',\
Heap32First,'Heap32First',\
Heap32ListFirst,'Heap32ListFirst',\
Heap32ListNext,'Heap32ListNext',\
Heap32Next,'Heap32Next',\
HeapAlloc,'HeapAlloc',\
HeapCompact,'HeapCompact',\
HeapCreate,'HeapCreate',\
HeapDestroy,'HeapDestroy',\
HeapExtend,'HeapExtend',\
HeapFree,'HeapFree',\
HeapLock,'HeapLock',\
HeapReAlloc,'HeapReAlloc',\
HeapSize,'HeapSize',\
HeapSummary,'HeapSummary',\
HeapUnlock,'HeapUnlock',\
HeapUsage,'HeapUsage',\
HeapValidate,'HeapValidate',\
HeapWalk,'HeapWalk',\
InitAtomTable,'InitAtomTable',\
InitializeCriticalSection,'InitializeCriticalSection',\
InitializeCriticalSectionAndSpinCount,'InitializeCriticalSectionAndSpinCount',\
InterlockedCompareExchange,'InterlockedCompareExchange',\
InterlockedDecrement,'InterlockedDecrement',\
InterlockedExchange,'InterlockedExchange',\
InterlockedExchangeAdd,'InterlockedExchangeAdd',\
InterlockedIncrement,'InterlockedIncrement',\
InvalidateConsoleDIBits,'InvalidateConsoleDIBits',\
IsBadCodePtr,'IsBadCodePtr',\
IsBadHugeReadPtr,'IsBadHugeReadPtr',\
IsBadHugeWritePtr,'IsBadHugeWritePtr',\
IsBadReadPtr,'IsBadReadPtr',\
IsBadStringPtrA,'IsBadStringPtrA',\
IsBadStringPtrW,'IsBadStringPtrW',\
IsBadWritePtr,'IsBadWritePtr',\
IsDBCSLeadByte,'IsDBCSLeadByte',\
IsDBCSLeadByteEx,'IsDBCSLeadByteEx',\
IsDebuggerPresent,'IsDebuggerPresent',\
IsProcessorFeaturePresent,'IsProcessorFeaturePresent',\
IsValidCodePage,'IsValidCodePage',\
IsValidLocale,'IsValidLocale',\
LCMapStringA,'LCMapStringA',\
LCMapStringW,'LCMapStringW',\
LeaveCriticalSection,'LeaveCriticalSection',\
LoadLibraryA,'LoadLibraryA',\
LoadLibraryW,'LoadLibraryW',\
LoadLibraryExA,'LoadLibraryExA',\
LoadLibraryExW,'LoadLibraryExW',\
LoadModule,'LoadModule',\
LoadResource,'LoadResource',\
LocalAlloc,'LocalAlloc',\
LocalCompact,'LocalCompact',\
LocalFileTimeToFileTime,'LocalFileTimeToFileTime',\
LocalFlags,'LocalFlags',\
LocalFree,'LocalFree',\
LocalHandle,'LocalHandle',\
LocalLock,'LocalLock',\
LocalReAlloc,'LocalReAlloc',\
LocalShrink,'LocalShrink',\
LocalSize,'LocalSize',\
LocalUnlock,'LocalUnlock',\
LockFile,'LockFile',\
LockFileEx,'LockFileEx',\
LockResource,'LockResource',\
MapViewOfFile,'MapViewOfFile',\
MapViewOfFileEx,'MapViewOfFileEx',\
MapViewOfFileVlm,'MapViewOfFileVlm',\
Module32First,'Module32First',\
Module32Next,'Module32Next',\
MoveFileA,'MoveFileA',\
MoveFileW,'MoveFileW',\
MoveFileExA,'MoveFileExA',\
MoveFileExW,'MoveFileExW',\
MoveFileWithProgressA,'MoveFileWithProgressA',\
MoveFileWithProgressW,'MoveFileWithProgressW',\
MulDiv,'MulDiv',\
MultiByteToWideChar,'MultiByteToWideChar',\
OpenEventA,'OpenEventA',\
OpenEventW,'OpenEventW',\
OpenFile,'OpenFile',\
OpenFileMappingA,'OpenFileMappingA',\
OpenFileMappingW,'OpenFileMappingW',\
OpenJobObjectA,'OpenJobObjectA',\
OpenJobObjectW,'OpenJobObjectW',\
OpenMutexA,'OpenMutexA',\
OpenMutexW,'OpenMutexW',\
OpenProcess,'OpenProcess',\
OpenProfileUserMapping,'OpenProfileUserMapping',\
OpenSemaphoreA,'OpenSemaphoreA',\
OpenSemaphoreW,'OpenSemaphoreW',\
OpenWaitableTimerA,'OpenWaitableTimerA',\
OpenWaitableTimerW,'OpenWaitableTimerW',\
OutputDebugStringA,'OutputDebugStringA',\
OutputDebugStringW,'OutputDebugStringW',\
PeekConsoleInputA,'PeekConsoleInputA',\
PeekConsoleInputW,'PeekConsoleInputW',\
PeekNamedPipe,'PeekNamedPipe',\
PostQueuedCompletionStatus,'PostQueuedCompletionStatus',\
PrepareTape,'PrepareTape',\
Process32First,'Process32First',\
Process32Next,'Process32Next',\
PulseEvent,'PulseEvent',\
PurgeComm,'PurgeComm',\
QueryDosDeviceA,'QueryDosDeviceA',\
QueryDosDeviceW,'QueryDosDeviceW',\
QueryInformationJobObject,'QueryInformationJobObject',\
QueryPerformanceCounter,'QueryPerformanceCounter',\
QueryPerformanceFrequency,'QueryPerformanceFrequency',\
QueryWin31IniFilesMappedToRegistry,'QueryWin31IniFilesMappedToRegistry',\
QueueUserAPC,'QueueUserAPC',\
RaiseException,'RaiseException',\
ReadConsoleA,'ReadConsoleA',\
ReadConsoleW,'ReadConsoleW',\
ReadConsoleInputA,'ReadConsoleInputA',\
ReadConsoleInputW,'ReadConsoleInputW',\
ReadConsoleInputExA,'ReadConsoleInputExA',\
ReadConsoleInputExW,'ReadConsoleInputExW',\
ReadConsoleOutputA,'ReadConsoleOutputA',\
ReadConsoleOutputW,'ReadConsoleOutputW',\
ReadConsoleOutputAttribute,'ReadConsoleOutputAttribute',\
ReadConsoleOutputCharacterA,'ReadConsoleOutputCharacterA',\
ReadConsoleOutputCharacterW,'ReadConsoleOutputCharacterW',\
ReadFile,'ReadFile',\
ReadFileEx,'ReadFileEx',\
ReadFileScatter,'ReadFileScatter',\
ReadFileVlm,'ReadFileVlm',\
ReadProcessMemory,'ReadProcessMemory',\
ReadProcessMemoryVlm,'ReadProcessMemoryVlm',\
RegisterConsoleVDM,'RegisterConsoleVDM',\
RegisterWaitForInputIdle,'RegisterWaitForInputIdle',\
RegisterWowBaseHandlers,'RegisterWowBaseHandlers',\
RegisterWowExec,'RegisterWowExec',\
ReleaseMutex,'ReleaseMutex',\
ReleaseSemaphore,'ReleaseSemaphore',\
RemoveDirectoryA,'RemoveDirectoryA',\
RemoveDirectoryW,'RemoveDirectoryW',\
RequestWakeupLatency,'RequestWakeupLatency',\
ResetEvent,'ResetEvent',\
ResumeThread,'ResumeThread',\
RtlFillMemory,'RtlFillMemory',\
RtlMoveMemory,'RtlMoveMemory',\
RtlUnwind,'RtlUnwind',\
RtlZeroMemory,'RtlZeroMemory',\
ScrollConsoleScreenBufferA,'ScrollConsoleScreenBufferA',\
ScrollConsoleScreenBufferW,'ScrollConsoleScreenBufferW',\
SearchPathA,'SearchPathA',\
SearchPathW,'SearchPathW',\
SetCommBreak,'SetCommBreak',\
SetCommConfig,'SetCommConfig',\
SetCommMask,'SetCommMask',\
SetCommState,'SetCommState',\
SetCommTimeouts,'SetCommTimeouts',\
SetComputerNameA,'SetComputerNameA',\
SetComputerNameW,'SetComputerNameW',\
SetConsoleActiveScreenBuffer,'SetConsoleActiveScreenBuffer',\
SetConsoleCP,'SetConsoleCP',\
SetConsoleCommandHistoryMode,'SetConsoleCommandHistoryMode',\
SetConsoleCtrlHandler,'SetConsoleCtrlHandler',\
SetConsoleCursor,'SetConsoleCursor',\
SetConsoleCursorInfo,'SetConsoleCursorInfo',\
SetConsoleCursorPosition,'SetConsoleCursorPosition',\
SetConsoleDisplayMode,'SetConsoleDisplayMode',\
SetConsoleFont,'SetConsoleFont',\
SetConsoleHardwareState,'SetConsoleHardwareState',\
SetConsoleIcon,'SetConsoleIcon',\
SetConsoleInputExeNameA,'SetConsoleInputExeNameA',\
SetConsoleInputExeNameW,'SetConsoleInputExeNameW',\
SetConsoleKeyShortcuts,'SetConsoleKeyShortcuts',\
SetConsoleMaximumWindowSize,'SetConsoleMaximumWindowSize',\
SetConsoleMenuClose,'SetConsoleMenuClose',\
SetConsoleMode,'SetConsoleMode',\
SetConsoleNumberOfCommandsA,'SetConsoleNumberOfCommandsA',\
SetConsoleNumberOfCommandsW,'SetConsoleNumberOfCommandsW',\
SetConsoleOutputCP,'SetConsoleOutputCP',\
SetConsolePalette,'SetConsolePalette',\
SetConsoleScreenBufferSize,'SetConsoleScreenBufferSize',\
SetConsoleTextAttribute,'SetConsoleTextAttribute',\
SetConsoleTitleA,'SetConsoleTitleA',\
SetConsoleTitleW,'SetConsoleTitleW',\
SetConsoleWindowInfo,'SetConsoleWindowInfo',\
SetCriticalSectionSpinCount,'SetCriticalSectionSpinCount',\
SetCurrentDirectoryA,'SetCurrentDirectoryA',\
SetCurrentDirectoryW,'SetCurrentDirectoryW',\
SetDefaultCommConfigA,'SetDefaultCommConfigA',\
SetDefaultCommConfigW,'SetDefaultCommConfigW',\
SetEndOfFile,'SetEndOfFile',\
SetEnvironmentVariableA,'SetEnvironmentVariableA',\
SetEnvironmentVariableW,'SetEnvironmentVariableW',\
SetErrorMode,'SetErrorMode',\
SetEvent,'SetEvent',\
SetFileApisToANSI,'SetFileApisToANSI',\
SetFileApisToOEM,'SetFileApisToOEM',\
SetFileAttributesA,'SetFileAttributesA',\
SetFileAttributesW,'SetFileAttributesW',\
SetFilePointer,'SetFilePointer',\
SetFilePointerEx,'SetFilePointerEx',\
SetFileTime,'SetFileTime',\
SetHandleCount,'SetHandleCount',\
SetHandleInformation,'SetHandleInformation',\
SetInformationJobObject,'SetInformationJobObject',\
SetLastConsoleEventActive,'SetLastConsoleEventActive',\
SetLastError,'SetLastError',\
SetLocalTime,'SetLocalTime',\
SetLocaleInfoA,'SetLocaleInfoA',\
SetLocaleInfoW,'SetLocaleInfoW',\
SetMailslotInfo,'SetMailslotInfo',\
SetNamedPipeHandleState,'SetNamedPipeHandleState',\
SetPriorityClass,'SetPriorityClass',\
SetProcessAffinityMask,'SetProcessAffinityMask',\
SetProcessPriorityBoost,'SetProcessPriorityBoost',\
SetProcessShutdownParameters,'SetProcessShutdownParameters',\
SetProcessWorkingSetSize,'SetProcessWorkingSetSize',\
SetStdHandle,'SetStdHandle',\
SetSystemPowerState,'SetSystemPowerState',\
SetSystemTime,'SetSystemTime',\
SetSystemTimeAdjustment,'SetSystemTimeAdjustment',\
SetTapeParameters,'SetTapeParameters',\
SetTapePosition,'SetTapePosition',\
SetThreadAffinityMask,'SetThreadAffinityMask',\
SetThreadContext,'SetThreadContext',\
SetThreadExecutionState,'SetThreadExecutionState',\
SetThreadIdealProcessor,'SetThreadIdealProcessor',\
SetThreadLocale,'SetThreadLocale',\
SetThreadPriority,'SetThreadPriority',\
SetThreadPriorityBoost,'SetThreadPriorityBoost',\
SetTimeZoneInformation,'SetTimeZoneInformation',\
SetUnhandledExceptionFilter,'SetUnhandledExceptionFilter',\
SetVDMCurrentDirectories,'SetVDMCurrentDirectories',\
SetVolumeLabelA,'SetVolumeLabelA',\
SetVolumeLabelW,'SetVolumeLabelW',\
SetWaitableTimer,'SetWaitableTimer',\
SetupComm,'SetupComm',\
ShowConsoleCursor,'ShowConsoleCursor',\
SignalObjectAndWait,'SignalObjectAndWait',\
SizeofResource,'SizeofResource',\
Sleep,'Sleep',\
SleepEx,'SleepEx',\
SuspendThread,'SuspendThread',\
SwitchToFiber,'SwitchToFiber',\
SwitchToThread,'SwitchToThread',\
SystemTimeToFileTime,'SystemTimeToFileTime',\
SystemTimeToTzSpecificLocalTime,'SystemTimeToTzSpecificLocalTime',\
TerminateJobObject,'TerminateJobObject',\
TerminateProcess,'TerminateProcess',\
TerminateThread,'TerminateThread',\
Thread32First,'Thread32First',\
Thread32Next,'Thread32Next',\
TlsAlloc,'TlsAlloc',\
TlsFree,'TlsFree',\
TlsGetValue,'TlsGetValue',\
TlsSetValue,'TlsSetValue',\
Toolhelp32ReadProcessMemory,'Toolhelp32ReadProcessMemory',\
TransactNamedPipe,'TransactNamedPipe',\
TransmitCommChar,'TransmitCommChar',\
TrimVirtualBuffer,'TrimVirtualBuffer',\
TryEnterCriticalSection,'TryEnterCriticalSection',\
UnhandledExceptionFilter,'UnhandledExceptionFilter',\
UnlockFile,'UnlockFile',\
UnlockFileEx,'UnlockFileEx',\
UnmapViewOfFile,'UnmapViewOfFile',\
UnmapViewOfFileVlm,'UnmapViewOfFileVlm',\
UpdateResourceA,'UpdateResourceA',\
UpdateResourceW,'UpdateResourceW',\
VDMConsoleOperation,'VDMConsoleOperation',\
VDMOperationStarted,'VDMOperationStarted',\
VerLanguageNameA,'VerLanguageNameA',\
VerLanguageNameW,'VerLanguageNameW',\
VerifyConsoleIoHandle,'VerifyConsoleIoHandle',\
VirtualAlloc,'VirtualAlloc',\
VirtualAllocEx,'VirtualAllocEx',\
VirtualAllocVlm,'VirtualAllocVlm',\
VirtualBufferExceptionHandler,'VirtualBufferExceptionHandler',\
VirtualFree,'VirtualFree',\
VirtualFreeEx,'VirtualFreeEx',\
VirtualFreeVlm,'VirtualFreeVlm',\
VirtualLock,'VirtualLock',\
VirtualProtect,'VirtualProtect',\
VirtualProtectEx,'VirtualProtectEx',\
VirtualProtectVlm,'VirtualProtectVlm',\
VirtualQuery,'VirtualQuery',\
VirtualQueryEx,'VirtualQueryEx',\
VirtualQueryVlm,'VirtualQueryVlm',\
VirtualUnlock,'VirtualUnlock',\
WaitCommEvent,'WaitCommEvent',\
WaitForDebugEvent,'WaitForDebugEvent',\
WaitForMultipleObjects,'WaitForMultipleObjects',\
WaitForMultipleObjectsEx,'WaitForMultipleObjectsEx',\
WaitForSingleObject,'WaitForSingleObject',\
WaitForSingleObjectEx,'WaitForSingleObjectEx',\
WaitNamedPipeA,'WaitNamedPipeA',\
WaitNamedPipeW,'WaitNamedPipeW',\
WideCharToMultiByte,'WideCharToMultiByte',\
WinExec,'WinExec',\
WriteConsoleA,'WriteConsoleA',\
WriteConsoleW,'WriteConsoleW',\
WriteConsoleInputA,'WriteConsoleInputA',\
WriteConsoleInputW,'WriteConsoleInputW',\
WriteConsoleInputVDMA,'WriteConsoleInputVDMA',\
WriteConsoleInputVDMW,'WriteConsoleInputVDMW',\
WriteConsoleOutputA,'WriteConsoleOutputA',\
WriteConsoleOutputW,'WriteConsoleOutputW',\
WriteConsoleOutputAttribute,'WriteConsoleOutputAttribute',\
WriteConsoleOutputCharacterA,'WriteConsoleOutputCharacterA',\
WriteConsoleOutputCharacterW,'WriteConsoleOutputCharacterW',\
WriteFile,'WriteFile',\
WriteFileEx,'WriteFileEx',\
WriteFileGather,'WriteFileGather',\
WriteFileVlm,'WriteFileVlm',\
WritePrivateProfileSectionA,'WritePrivateProfileSectionA',\
WritePrivateProfileSectionW,'WritePrivateProfileSectionW',\
WritePrivateProfileStringA,'WritePrivateProfileStringA',\
WritePrivateProfileStringW,'WritePrivateProfileStringW',\
WritePrivateProfileStructA,'WritePrivateProfileStructA',\
WritePrivateProfileStructW,'WritePrivateProfileStructW',\
WriteProcessMemory,'WriteProcessMemory',\
WriteProcessMemoryVlm,'WriteProcessMemoryVlm',\
WriteProfileSectionA,'WriteProfileSectionA',\
WriteProfileSectionW,'WriteProfileSectionW',\
WriteProfileStringA,'WriteProfileStringA',\
WriteProfileStringW,'WriteProfileStringW',\
WriteTapemark,'WriteTapemark',\
_hread,'_hread',\
_hwrite,'_hwrite',\
_lclose,'_lclose',\
_lcreat,'_lcreat',\
_llseek,'_llseek',\
_lopen,'_lopen',\
_lread,'_lread',\
_lwrite,'_lwrite',\
lstrcatA,'lstrcatA',\
lstrcatW,'lstrcatW',\
lstrcmpA,'lstrcmpA',\
lstrcmpW,'lstrcmpW',\
lstrcmpiA,'lstrcmpiA',\
lstrcmpiW,'lstrcmpiW',\
lstrcpyA,'lstrcpyA',\
lstrcpyW,'lstrcpyW',\
lstrcpynA,'lstrcpynA',\
lstrcpynW,'lstrcpynW',\
lstrlenA,'lstrlenA',\
lstrlenW,'lstrlenW'
api AddAtom,\
AddConsoleAlias,\
BeginUpdateResource,\
BuildCommDCB,\
BuildCommDCBAndTimeouts,\
CallNamedPipe,\
CommConfigDialog,\
CompareString,\
CopyFile,\
CopyFileEx,\
CreateDirectory,\
CreateDirectoryEx,\
CreateEvent,\
CreateFile,\
CreateFileMapping,\
CreateHardLink,\
CreateJobObject,\
CreateMailslot,\
CreateMutex,\
CreateNamedPipe,\
CreateProcess,\
CreateSemaphore,\
CreateWaitableTimer,\
DefineDosDevice,\
DeleteFile,\
EndUpdateResource,\
EnumCalendarInfo,\
EnumCalendarInfoEx,\
EnumDateFormats,\
EnumDateFormatsEx,\
EnumResourceLanguages,\
EnumResourceNames,\
EnumResourceTypes,\
EnumSystemCodePages,\
EnumSystemLocales,\
EnumTimeFormats,\
ExpandEnvironmentStrings,\
ExpungeConsoleCommandHistory,\
FatalAppExit,\
FillConsoleOutputCharacter,\
FindAtom,\
FindFirstChangeNotification,\
FindFirstFile,\
FindFirstFileEx,\
FindNextFile,\
FindResource,\
FindResourceEx,\
FoldString,\
FormatMessage,\
FreeEnvironmentStrings,\
GetAtomName,\
GetBinaryType,\
GetCPInfoEx,\
GetCommandLine,\
GetCompressedFileSize,\
GetComputerName,\
GetConsoleAlias,\
GetConsoleAliasExes,\
GetConsoleAliasExesLength,\
GetConsoleAliases,\
GetConsoleAliasesLength,\
GetConsoleCommandHistory,\
GetConsoleCommandHistoryLength,\
GetConsoleInputExeName,\
GetConsoleKeyboardLayoutName,\
GetConsoleTitle,\
GetCurrencyFormat,\
GetCurrentDirectory,\
GetDateFormat,\
GetDefaultCommConfig,\
GetDiskFreeSpace,\
GetDiskFreeSpaceEx,\
GetDriveType,\
GetEnvironmentStrings,\
GetEnvironmentVariable,\
GetFileAttributes,\
GetFileAttributesEx,\
GetFullPathName,\
GetLocaleInfo,\
GetLogicalDriveStrings,\
GetLongPathName,\
GetModuleFileName,\
GetModuleHandle,\
GetNamedPipeHandleState,\
GetNumberFormat,\
GetPrivateProfileInt,\
GetPrivateProfileSection,\
GetPrivateProfileSectionNames,\
GetPrivateProfileString,\
GetPrivateProfileStruct,\
GetProfileInt,\
GetProfileSection,\
GetProfileString,\
GetShortPathName,\
GetStartupInfo,\
GetStringType,\
GetStringTypeEx,\
GetSystemDirectory,\
GetTempFileName,\
GetTempPath,\
GetTimeFormat,\
GetVersionEx,\
GetVolumeInformation,\
GetWindowsDirectory,\
GlobalAddAtom,\
GlobalFindAtom,\
GlobalGetAtomName,\
IsBadStringPtr,\
LCMapString,\
LoadLibrary,\
LoadLibraryEx,\
MoveFile,\
MoveFileEx,\
MoveFileWithProgress,\
OpenEvent,\
OpenFileMapping,\
OpenJobObject,\
OpenMutex,\
OpenSemaphore,\
OpenWaitableTimer,\
OutputDebugString,\
PeekConsoleInput,\
QueryDosDevice,\
ReadConsole,\
ReadConsoleInput,\
ReadConsoleInputEx,\
ReadConsoleOutput,\
ReadConsoleOutputCharacter,\
RemoveDirectory,\
ScrollConsoleScreenBuffer,\
SearchPath,\
SetComputerName,\
SetConsoleInputExeName,\
SetConsoleNumberOfCommands,\
SetConsoleTitle,\
SetCurrentDirectory,\
SetDefaultCommConfig,\
SetEnvironmentVariable,\
SetFileAttributes,\
SetLocaleInfo,\
SetVolumeLabel,\
UpdateResource,\
VerLanguageName,\
WaitNamedPipe,\
WriteConsole,\
WriteConsoleInput,\
WriteConsoleInputVDM,\
WriteConsoleOutput,\
WriteConsoleOutputCharacter,\
WritePrivateProfileSection,\
WritePrivateProfileString,\
WritePrivateProfileStruct,\
WriteProfileSection,\
WriteProfileString,\
lstrcat,\
lstrcmp,\
lstrcmpi,\
lstrcpy,\
lstrcpyn,\
lstrlen

View File

@@ -0,0 +1,167 @@
; SHELL32 API calls
import shell32,\
CheckEscapesA,'CheckEscapesA',\
CheckEscapesW,'CheckEscapesW',\
DoEnvironmentSubstA,'DoEnvironmentSubstA',\
DoEnvironmentSubstW,'DoEnvironmentSubstW',\
DragAcceptFiles,'DragAcceptFiles',\
DragFinish,'DragFinish',\
DragQueryFileA,'DragQueryFileA',\
DragQueryFileW,'DragQueryFileW',\
DragQueryPoint,'DragQueryPoint',\
DuplicateIcon,'DuplicateIcon',\
ExtractAssociatedIconA,'ExtractAssociatedIconA',\
ExtractAssociatedIconW,'ExtractAssociatedIconW',\
ExtractAssociatedIconExA,'ExtractAssociatedIconExA',\
ExtractAssociatedIconExW,'ExtractAssociatedIconExW',\
ExtractIconA,'ExtractIconA',\
ExtractIconW,'ExtractIconW',\
ExtractIconExA,'ExtractIconExA',\
ExtractIconExW,'ExtractIconExW',\
ExtractIconResInfoA,'ExtractIconResInfoA',\
ExtractIconResInfoW,'ExtractIconResInfoW',\
FindExeDlgProc,'FindExeDlgProc',\
FindExecutableA,'FindExecutableA',\
FindExecutableW,'FindExecutableW',\
FreeIconList,'FreeIconList',\
InternalExtractIconListA,'InternalExtractIconListA',\
InternalExtractIconListW,'InternalExtractIconListW',\
RealShellExecuteA,'RealShellExecuteA',\
RealShellExecuteW,'RealShellExecuteW',\
RealShellExecuteExA,'RealShellExecuteExA',\
RealShellExecuteExW,'RealShellExecuteExW',\
RegenerateUserEnvironment,'RegenerateUserEnvironment',\
SHAddToRecentDocs,'SHAddToRecentDocs',\
SHAppBarMessage,'SHAppBarMessage',\
SHBrowseForFolderA,'SHBrowseForFolderA',\
SHBrowseForFolderW,'SHBrowseForFolderW',\
SHChangeNotify,'SHChangeNotify',\
SHEmptyRecycleBinA,'SHEmptyRecycleBinA',\
SHEmptyRecycleBinW,'SHEmptyRecycleBinW',\
SHFileOperationA,'SHFileOperationA',\
SHFileOperationW,'SHFileOperationW',\
SHFormatDrive,'SHFormatDrive',\
SHFreeNameMappings,'SHFreeNameMappings',\
SHGetDataFromIDListA,'SHGetDataFromIDListA',\
SHGetDataFromIDListW,'SHGetDataFromIDListW',\
SHGetDesktopFolder,'SHGetDesktopFolder',\
SHGetDiskFreeSpaceA,'SHGetDiskFreeSpaceA',\
SHGetDiskFreeSpaceW,'SHGetDiskFreeSpaceW',\
SHGetFileInfoA,'SHGetFileInfoA',\
SHGetFileInfoW,'SHGetFileInfoW',\
SHGetInstanceExplorer,'SHGetInstanceExplorer',\
SHGetMalloc,'SHGetMalloc',\
SHGetNewLinkInfo,'SHGetNewLinkInfo',\
SHGetPathFromIDListA,'SHGetPathFromIDListA',\
SHGetPathFromIDListW,'SHGetPathFromIDListW',\
SHGetSettings,'SHGetSettings',\
SHGetSpecialFolderLocation,'SHGetSpecialFolderLocation',\
SHGetSpecialFolderPathA,'SHGetSpecialFolderPathA',\
SHGetSpecialFolderPathW,'SHGetSpecialFolderPathW',\
SHInvokePrinterCommandA,'SHInvokePrinterCommandA',\
SHInvokePrinterCommandW,'SHInvokePrinterCommandW',\
SHLoadInProc,'SHLoadInProc',\
SHQueryRecycleBinA,'SHQueryRecycleBinA',\
SHQueryRecycleBinW,'SHQueryRecycleBinW',\
SHUpdateRecycleBinIcon,'SHUpdateRecycleBinIcon',\
SheChangeDirA,'SheChangeDirA',\
SheChangeDirW,'SheChangeDirW',\
SheChangeDirExA,'SheChangeDirExA',\
SheChangeDirExW,'SheChangeDirExW',\
SheFullPathA,'SheFullPathA',\
SheFullPathW,'SheFullPathW',\
SheGetCurDrive,'SheGetCurDrive',\
SheGetDirA,'SheGetDirA',\
SheGetDirW,'SheGetDirW',\
SheRemoveQuotesA,'SheRemoveQuotesA',\
SheRemoveQuotesW,'SheRemoveQuotesW',\
SheSetCurDrive,'SheSetCurDrive',\
SheShortenPathA,'SheShortenPathA',\
SheShortenPathW,'SheShortenPathW',\
ShellAboutA,'ShellAboutA',\
ShellAboutW,'ShellAboutW',\
ShellExecuteA,'ShellExecuteA',\
ShellExecuteW,'ShellExecuteW',\
ShellExecuteExA,'ShellExecuteExA',\
ShellExecuteExW,'ShellExecuteExW',\
ShellHookProc,'ShellHookProc',\
Shell_NotifyIconA,'Shell_NotifyIconA',\
Shell_NotifyIconW,'Shell_NotifyIconW',\
StrChrA,'StrChrA',\
StrChrW,'StrChrW',\
StrChrIA,'StrChrIA',\
StrChrIW,'StrChrIW',\
StrCmpNA,'StrCmpNA',\
StrCmpNW,'StrCmpNW',\
StrCmpNIA,'StrCmpNIA',\
StrCmpNIW,'StrCmpNIW',\
StrCpyNA,'StrCpyNA',\
StrCpyNW,'StrCpyNW',\
StrNCmpA,'StrNCmpA',\
StrNCmpW,'StrNCmpW',\
StrNCmpIA,'StrNCmpIA',\
StrNCmpIW,'StrNCmpIW',\
StrNCpyA,'StrNCpyA',\
StrNCpyW,'StrNCpyW',\
StrRChrA,'StrRChrA',\
StrRChrW,'StrRChrW',\
StrRChrIA,'StrRChrIA',\
StrRChrIW,'StrRChrIW',\
StrRStrA,'StrRStrA',\
StrRStrW,'StrRStrW',\
StrRStrIA,'StrRStrIA',\
StrRStrIW,'StrRStrIW',\
StrStrA,'StrStrA',\
StrStrW,'StrStrW',\
StrStrIA,'StrStrIA',\
StrStrIW,'StrStrIW',\
WOWShellExecute,'WOWShellExecute'
api CheckEscapes,\
DoEnvironmentSubst,\
DragQueryFile,\
ExtractAssociatedIcon,\
ExtractAssociatedIconEx,\
ExtractIcon,\
ExtractIconEx,\
ExtractIconResInfo,\
FindExecutable,\
InternalExtractIconList,\
RealShellExecute,\
RealShellExecuteEx,\
SHBrowseForFolder,\
SHEmptyRecycleBin,\
SHFileOperation,\
SHGetDataFromIDList,\
SHGetDiskFreeSpace,\
SHGetFileInfo,\
SHGetPathFromIDList,\
SHGetSpecialFolderPath,\
SHInvokePrinterCommand,\
SHQueryRecycleBin,\
SheChangeDir,\
SheChangeDirEx,\
SheFullPath,\
SheGetDir,\
SheRemoveQuotes,\
SheShortenPath,\
ShellAbout,\
ShellExecute,\
ShellExecuteEx,\
Shell_NotifyIcon,\
StrChr,\
StrChrI,\
StrCmpN,\
StrCmpNI,\
StrCpyN,\
StrNCmp,\
StrNCmpI,\
StrNCpy,\
StrRChr,\
StrRChrI,\
StrRStr,\
StrRStrI,\
StrStr,\
StrStrI

View File

@@ -0,0 +1,756 @@
; USER32 API calls
import user32,\
ActivateKeyboardLayout,'ActivateKeyboardLayout',\
AdjustWindowRect,'AdjustWindowRect',\
AdjustWindowRectEx,'AdjustWindowRectEx',\
AnimateWindow,'AnimateWindow',\
AnyPopup,'AnyPopup',\
AppendMenuA,'AppendMenuA',\
AppendMenuW,'AppendMenuW',\
ArrangeIconicWindows,'ArrangeIconicWindows',\
AttachThreadInput,'AttachThreadInput',\
BeginDeferWindowPos,'BeginDeferWindowPos',\
BeginPaint,'BeginPaint',\
BlockInput,'BlockInput',\
BringWindowToTop,'BringWindowToTop',\
BroadcastSystemMessageA,'BroadcastSystemMessageA',\
BroadcastSystemMessageW,'BroadcastSystemMessageW',\
CallMsgFilterA,'CallMsgFilterA',\
CallMsgFilterW,'CallMsgFilterW',\
CallNextHookEx,'CallNextHookEx',\
CallWindowProcA,'CallWindowProcA',\
CallWindowProcW,'CallWindowProcW',\
CascadeChildWindows,'CascadeChildWindows',\
CascadeWindows,'CascadeWindows',\
ChangeClipboardChain,'ChangeClipboardChain',\
ChangeDisplaySettingsA,'ChangeDisplaySettingsA',\
ChangeDisplaySettingsW,'ChangeDisplaySettingsW',\
ChangeDisplaySettingsExA,'ChangeDisplaySettingsExA',\
ChangeDisplaySettingsExW,'ChangeDisplaySettingsExW',\
ChangeMenuA,'ChangeMenuA',\
ChangeMenuW,'ChangeMenuW',\
CharLowerA,'CharLowerA',\
CharLowerW,'CharLowerW',\
CharLowerBuffA,'CharLowerBuffA',\
CharLowerBuffW,'CharLowerBuffW',\
CharNextA,'CharNextA',\
CharNextW,'CharNextW',\
CharNextExA,'CharNextExA',\
CharNextExW,'CharNextExW',\
CharPrevA,'CharPrevA',\
CharPrevW,'CharPrevW',\
CharPrevExA,'CharPrevExA',\
CharPrevExW,'CharPrevExW',\
CharToOemA,'CharToOemA',\
CharToOemW,'CharToOemW',\
CharToOemBuffA,'CharToOemBuffA',\
CharToOemBuffW,'CharToOemBuffW',\
CharUpperA,'CharUpperA',\
CharUpperW,'CharUpperW',\
CharUpperBuffA,'CharUpperBuffA',\
CharUpperBuffW,'CharUpperBuffW',\
CheckDlgButton,'CheckDlgButton',\
CheckMenuItem,'CheckMenuItem',\
CheckMenuRadioItem,'CheckMenuRadioItem',\
CheckRadioButton,'CheckRadioButton',\
ChildWindowFromPoint,'ChildWindowFromPoint',\
ChildWindowFromPointEx,'ChildWindowFromPointEx',\
ClientToScreen,'ClientToScreen',\
ClipCursor,'ClipCursor',\
CloseClipboard,'CloseClipboard',\
CloseDesktop,'CloseDesktop',\
CloseWindow,'CloseWindow',\
CloseWindowStation,'CloseWindowStation',\
CopyAcceleratorTableA,'CopyAcceleratorTableA',\
CopyAcceleratorTableW,'CopyAcceleratorTableW',\
CopyIcon,'CopyIcon',\
CopyImage,'CopyImage',\
CopyRect,'CopyRect',\
CountClipboardFormats,'CountClipboardFormats',\
CreateAcceleratorTableA,'CreateAcceleratorTableA',\
CreateAcceleratorTableW,'CreateAcceleratorTableW',\
CreateCaret,'CreateCaret',\
CreateCursor,'CreateCursor',\
CreateDesktopA,'CreateDesktopA',\
CreateDesktopW,'CreateDesktopW',\
CreateDialogIndirectParamA,'CreateDialogIndirectParamA',\
CreateDialogIndirectParamW,'CreateDialogIndirectParamW',\
CreateDialogParamA,'CreateDialogParamA',\
CreateDialogParamW,'CreateDialogParamW',\
CreateIcon,'CreateIcon',\
CreateIconFromResource,'CreateIconFromResource',\
CreateIconFromResourceEx,'CreateIconFromResourceEx',\
CreateIconIndirect,'CreateIconIndirect',\
CreateMDIWindowA,'CreateMDIWindowA',\
CreateMDIWindowW,'CreateMDIWindowW',\
CreateMenu,'CreateMenu',\
CreatePopupMenu,'CreatePopupMenu',\
CreateWindowExA,'CreateWindowExA',\
CreateWindowExW,'CreateWindowExW',\
CreateWindowStationA,'CreateWindowStationA',\
CreateWindowStationW,'CreateWindowStationW',\
DdeAbandonTransaction,'DdeAbandonTransaction',\
DdeAccessData,'DdeAccessData',\
DdeAddData,'DdeAddData',\
DdeClientTransaction,'DdeClientTransaction',\
DdeCmpStringHandles,'DdeCmpStringHandles',\
DdeConnect,'DdeConnect',\
DdeConnectList,'DdeConnectList',\
DdeCreateDataHandle,'DdeCreateDataHandle',\
DdeCreateStringHandleA,'DdeCreateStringHandleA',\
DdeCreateStringHandleW,'DdeCreateStringHandleW',\
DdeDisconnect,'DdeDisconnect',\
DdeDisconnectList,'DdeDisconnectList',\
DdeEnableCallback,'DdeEnableCallback',\
DdeFreeDataHandle,'DdeFreeDataHandle',\
DdeFreeStringHandle,'DdeFreeStringHandle',\
DdeGetData,'DdeGetData',\
DdeGetLastError,'DdeGetLastError',\
DdeGetQualityOfService,'DdeGetQualityOfService',\
DdeImpersonateClient,'DdeImpersonateClient',\
DdeInitializeA,'DdeInitializeA',\
DdeInitializeW,'DdeInitializeW',\
DdeKeepStringHandle,'DdeKeepStringHandle',\
DdeNameService,'DdeNameService',\
DdePostAdvise,'DdePostAdvise',\
DdeQueryConvInfo,'DdeQueryConvInfo',\
DdeQueryNextServer,'DdeQueryNextServer',\
DdeQueryStringA,'DdeQueryStringA',\
DdeQueryStringW,'DdeQueryStringW',\
DdeReconnect,'DdeReconnect',\
DdeSetQualityOfService,'DdeSetQualityOfService',\
DdeSetUserHandle,'DdeSetUserHandle',\
DdeUnaccessData,'DdeUnaccessData',\
DdeUninitialize,'DdeUninitialize',\
DefDlgProcA,'DefDlgProcA',\
DefDlgProcW,'DefDlgProcW',\
DefFrameProcA,'DefFrameProcA',\
DefFrameProcW,'DefFrameProcW',\
DefMDIChildProcA,'DefMDIChildProcA',\
DefMDIChildProcW,'DefMDIChildProcW',\
DefWindowProcA,'DefWindowProcA',\
DefWindowProcW,'DefWindowProcW',\
DeferWindowPos,'DeferWindowPos',\
DeleteMenu,'DeleteMenu',\
DestroyAcceleratorTable,'DestroyAcceleratorTable',\
DestroyCaret,'DestroyCaret',\
DestroyCursor,'DestroyCursor',\
DestroyIcon,'DestroyIcon',\
DestroyMenu,'DestroyMenu',\
DestroyWindow,'DestroyWindow',\
DialogBoxIndirectParamA,'DialogBoxIndirectParamA',\
DialogBoxIndirectParamW,'DialogBoxIndirectParamW',\
DialogBoxParamA,'DialogBoxParamA',\
DialogBoxParamW,'DialogBoxParamW',\
DispatchMessageA,'DispatchMessageA',\
DispatchMessageW,'DispatchMessageW',\
DlgDirListA,'DlgDirListA',\
DlgDirListW,'DlgDirListW',\
DlgDirListComboBoxA,'DlgDirListComboBoxA',\
DlgDirListComboBoxW,'DlgDirListComboBoxW',\
DlgDirSelectComboBoxExA,'DlgDirSelectComboBoxExA',\
DlgDirSelectComboBoxExW,'DlgDirSelectComboBoxExW',\
DlgDirSelectExA,'DlgDirSelectExA',\
DlgDirSelectExW,'DlgDirSelectExW',\
DragDetect,'DragDetect',\
DragObject,'DragObject',\
DrawAnimatedRects,'DrawAnimatedRects',\
DrawCaption,'DrawCaption',\
DrawEdge,'DrawEdge',\
DrawFocusRect,'DrawFocusRect',\
DrawFrame,'DrawFrame',\
DrawFrameControl,'DrawFrameControl',\
DrawIcon,'DrawIcon',\
DrawIconEx,'DrawIconEx',\
DrawMenuBar,'DrawMenuBar',\
DrawStateA,'DrawStateA',\
DrawStateW,'DrawStateW',\
DrawTextA,'DrawTextA',\
DrawTextW,'DrawTextW',\
DrawTextExA,'DrawTextExA',\
DrawTextExW,'DrawTextExW',\
EditWndProc,'EditWndProc',\
EmptyClipboard,'EmptyClipboard',\
EnableMenuItem,'EnableMenuItem',\
EnableScrollBar,'EnableScrollBar',\
EnableWindow,'EnableWindow',\
EndDeferWindowPos,'EndDeferWindowPos',\
EndDialog,'EndDialog',\
EndMenu,'EndMenu',\
EndPaint,'EndPaint',\
EnumChildWindows,'EnumChildWindows',\
EnumClipboardFormats,'EnumClipboardFormats',\
EnumDesktopWindows,'EnumDesktopWindows',\
EnumDesktopsA,'EnumDesktopsA',\
EnumDesktopsW,'EnumDesktopsW',\
EnumDisplayMonitors,'EnumDisplayMonitors',\
EnumDisplaySettingsA,'EnumDisplaySettingsA',\
EnumDisplaySettingsW,'EnumDisplaySettingsW',\
EnumDisplaySettingsExA,'EnumDisplaySettingsExA',\
EnumDisplaySettingsExW,'EnumDisplaySettingsExW',\
EnumPropsA,'EnumPropsA',\
EnumPropsW,'EnumPropsW',\
EnumPropsExA,'EnumPropsExA',\
EnumPropsExW,'EnumPropsExW',\
EnumThreadWindows,'EnumThreadWindows',\
EnumWindowStationsA,'EnumWindowStationsA',\
EnumWindowStationsW,'EnumWindowStationsW',\
EnumWindows,'EnumWindows',\
EqualRect,'EqualRect',\
ExcludeUpdateRgn,'ExcludeUpdateRgn',\
ExitWindowsEx,'ExitWindowsEx',\
FillRect,'FillRect',\
FindWindowA,'FindWindowA',\
FindWindowW,'FindWindowW',\
FindWindowExA,'FindWindowExA',\
FindWindowExW,'FindWindowExW',\
FlashWindow,'FlashWindow',\
FrameRect,'FrameRect',\
FreeDDElParam,'FreeDDElParam',\
GetActiveWindow,'GetActiveWindow',\
GetAltTabInfoA,'GetAltTabInfoA',\
GetAltTabInfoW,'GetAltTabInfoW',\
GetAncestor,'GetAncestor',\
GetAsyncKeyState,'GetAsyncKeyState',\
GetCapture,'GetCapture',\
GetCaretBlinkTime,'GetCaretBlinkTime',\
GetCaretPos,'GetCaretPos',\
GetClassInfoA,'GetClassInfoA',\
GetClassInfoW,'GetClassInfoW',\
GetClassInfoExA,'GetClassInfoExA',\
GetClassInfoExW,'GetClassInfoExW',\
GetClassLongA,'GetClassLongA',\
GetClassLongW,'GetClassLongW',\
GetClassNameA,'GetClassNameA',\
GetClassNameW,'GetClassNameW',\
GetClassWord,'GetClassWord',\
GetClientRect,'GetClientRect',\
GetClipCursor,'GetClipCursor',\
GetClipboardData,'GetClipboardData',\
GetClipboardFormatNameA,'GetClipboardFormatNameA',\
GetClipboardFormatNameW,'GetClipboardFormatNameW',\
GetClipboardSequenceNumberA,'GetClipboardSequenceNumberA',\
GetClipboardSequenceNumberW,'GetClipboardSequenceNumberW',\
GetClipboardViewer,'GetClipboardViewer',\
GetComboBoxInfo,'GetComboBoxInfo',\
GetCursor,'GetCursor',\
GetCursorInfo,'GetCursorInfo',\
GetCursorPos,'GetCursorPos',\
GetDC,'GetDC',\
GetDCEx,'GetDCEx',\
GetDesktopWindow,'GetDesktopWindow',\
GetDialogBaseUnits,'GetDialogBaseUnits',\
GetDlgCtrlID,'GetDlgCtrlID',\
GetDlgItem,'GetDlgItem',\
GetDlgItemInt,'GetDlgItemInt',\
GetDlgItemTextA,'GetDlgItemTextA',\
GetDlgItemTextW,'GetDlgItemTextW',\
GetDoubleClickTime,'GetDoubleClickTime',\
GetFocus,'GetFocus',\
GetForegroundWindow,'GetForegroundWindow',\
GetGUIThreadInfo,'GetGUIThreadInfo',\
GetGuiResources,'GetGuiResources',\
GetIconInfo,'GetIconInfo',\
GetInputDesktop,'GetInputDesktop',\
GetInputState,'GetInputState',\
GetKBCodePage,'GetKBCodePage',\
GetKeyNameTextA,'GetKeyNameTextA',\
GetKeyNameTextW,'GetKeyNameTextW',\
GetKeyState,'GetKeyState',\
GetKeyboardLayout,'GetKeyboardLayout',\
GetKeyboardLayoutList,'GetKeyboardLayoutList',\
GetKeyboardLayoutNameA,'GetKeyboardLayoutNameA',\
GetKeyboardLayoutNameW,'GetKeyboardLayoutNameW',\
GetKeyboardState,'GetKeyboardState',\
GetKeyboardType,'GetKeyboardType',\
GetLastActivePopup,'GetLastActivePopup',\
GetLastInputInfo,'GetLastInputInfo',\
GetLayeredWindowAttributes,'GetLayeredWindowAttributes',\
GetListBoxInfo,'GetListBoxInfo',\
GetMenu,'GetMenu',\
GetMenuBarInfo,'GetMenuBarInfo',\
GetMenuCheckMarkDimensions,'GetMenuCheckMarkDimensions',\
GetMenuContextHelpId,'GetMenuContextHelpId',\
GetMenuDefaultItem,'GetMenuDefaultItem',\
GetMenuInfo,'GetMenuInfo',\
GetMenuItemCount,'GetMenuItemCount',\
GetMenuItemID,'GetMenuItemID',\
GetMenuItemInfoA,'GetMenuItemInfoA',\
GetMenuItemInfoW,'GetMenuItemInfoW',\
GetMenuItemRect,'GetMenuItemRect',\
GetMenuState,'GetMenuState',\
GetMenuStringA,'GetMenuStringA',\
GetMenuStringW,'GetMenuStringW',\
GetMessageA,'GetMessageA',\
GetMessageW,'GetMessageW',\
GetMessageExtraInfo,'GetMessageExtraInfo',\
GetMessagePos,'GetMessagePos',\
GetMessageTime,'GetMessageTime',\
GetMonitorInfoA,'GetMonitorInfoA',\
GetMonitorInfoW,'GetMonitorInfoW',\
GetMouseMovePoints,'GetMouseMovePoints',\
GetNextDlgGroupItem,'GetNextDlgGroupItem',\
GetNextDlgTabItem,'GetNextDlgTabItem',\
GetOpenClipboardWindow,'GetOpenClipboardWindow',\
GetParent,'GetParent',\
GetPriorityClipboardFormat,'GetPriorityClipboardFormat',\
GetProcessWindowStation,'GetProcessWindowStation',\
GetPropA,'GetPropA',\
GetPropW,'GetPropW',\
GetQueueStatus,'GetQueueStatus',\
GetScrollBarInfo,'GetScrollBarInfo',\
GetScrollInfo,'GetScrollInfo',\
GetScrollPos,'GetScrollPos',\
GetScrollRange,'GetScrollRange',\
GetShellWindow,'GetShellWindow',\
GetSubMenu,'GetSubMenu',\
GetSysColor,'GetSysColor',\
GetSysColorBrush,'GetSysColorBrush',\
GetSystemMenu,'GetSystemMenu',\
GetSystemMetrics,'GetSystemMetrics',\
GetTabbedTextExtentA,'GetTabbedTextExtentA',\
GetTabbedTextExtentW,'GetTabbedTextExtentW',\
GetThreadDesktop,'GetThreadDesktop',\
GetTitleBarInfo,'GetTitleBarInfo',\
GetTopWindow,'GetTopWindow',\
GetUpdateRect,'GetUpdateRect',\
GetUpdateRgn,'GetUpdateRgn',\
GetUserObjectInformationA,'GetUserObjectInformationA',\
GetUserObjectInformationW,'GetUserObjectInformationW',\
GetUserObjectSecurity,'GetUserObjectSecurity',\
GetWindow,'GetWindow',\
GetWindowContextHelpId,'GetWindowContextHelpId',\
GetWindowDC,'GetWindowDC',\
GetWindowInfo,'GetWindowInfo',\
GetWindowLongA,'GetWindowLongA',\
GetWindowLongW,'GetWindowLongW',\
GetWindowLongPtrA,'GetWindowLongPtrA',\
GetWindowLongPtrW,'GetWindowLongPtrW',\
GetWindowModuleFileNameA,'GetWindowModuleFileNameA',\
GetWindowModuleFileNameW,'GetWindowModuleFileNameW',\
GetWindowPlacement,'GetWindowPlacement',\
GetWindowRect,'GetWindowRect',\
GetWindowRgn,'GetWindowRgn',\
GetWindowTextA,'GetWindowTextA',\
GetWindowTextW,'GetWindowTextW',\
GetWindowTextLengthA,'GetWindowTextLengthA',\
GetWindowTextLengthW,'GetWindowTextLengthW',\
GetWindowThreadProcessId,'GetWindowThreadProcessId',\
GetWindowWord,'GetWindowWord',\
GrayStringA,'GrayStringA',\
GrayStringW,'GrayStringW',\
HideCaret,'HideCaret',\
HiliteMenuItem,'HiliteMenuItem',\
IMPGetIMEA,'IMPGetIMEA',\
IMPGetIMEW,'IMPGetIMEW',\
IMPQueryIMEA,'IMPQueryIMEA',\
IMPQueryIMEW,'IMPQueryIMEW',\
IMPSetIMEA,'IMPSetIMEA',\
IMPSetIMEW,'IMPSetIMEW',\
ImpersonateDdeClientWindow,'ImpersonateDdeClientWindow',\
InSendMessage,'InSendMessage',\
InSendMessageEx,'InSendMessageEx',\
InflateRect,'InflateRect',\
InsertMenuA,'InsertMenuA',\
InsertMenuW,'InsertMenuW',\
InsertMenuItemA,'InsertMenuItemA',\
InsertMenuItemW,'InsertMenuItemW',\
IntersectRect,'IntersectRect',\
InvalidateRect,'InvalidateRect',\
InvalidateRgn,'InvalidateRgn',\
InvertRect,'InvertRect',\
IsCharAlphaA,'IsCharAlphaA',\
IsCharAlphaW,'IsCharAlphaW',\
IsCharAlphaNumericA,'IsCharAlphaNumericA',\
IsCharAlphaNumericW,'IsCharAlphaNumericW',\
IsCharLowerA,'IsCharLowerA',\
IsCharLowerW,'IsCharLowerW',\
IsCharUpperA,'IsCharUpperA',\
IsCharUpperW,'IsCharUpperW',\
IsChild,'IsChild',\
IsClipboardFormatAvailable,'IsClipboardFormatAvailable',\
IsDialogMessageA,'IsDialogMessageA',\
IsDialogMessageW,'IsDialogMessageW',\
IsDlgButtonChecked,'IsDlgButtonChecked',\
IsIconic,'IsIconic',\
IsMenu,'IsMenu',\
IsRectEmpty,'IsRectEmpty',\
IsWindow,'IsWindow',\
IsWindowEnabled,'IsWindowEnabled',\
IsWindowUnicode,'IsWindowUnicode',\
IsWindowVisible,'IsWindowVisible',\
IsZoomed,'IsZoomed',\
KillSystemTimer,'KillSystemTimer',\
KillTimer,'KillTimer',\
LoadAcceleratorsA,'LoadAcceleratorsA',\
LoadAcceleratorsW,'LoadAcceleratorsW',\
LoadBitmapA,'LoadBitmapA',\
LoadBitmapW,'LoadBitmapW',\
LoadCursorA,'LoadCursorA',\
LoadCursorW,'LoadCursorW',\
LoadCursorFromFileA,'LoadCursorFromFileA',\
LoadCursorFromFileW,'LoadCursorFromFileW',\
LoadIconA,'LoadIconA',\
LoadIconW,'LoadIconW',\
LoadImageA,'LoadImageA',\
LoadImageW,'LoadImageW',\
LoadKeyboardLayoutA,'LoadKeyboardLayoutA',\
LoadKeyboardLayoutW,'LoadKeyboardLayoutW',\
LoadMenuA,'LoadMenuA',\
LoadMenuW,'LoadMenuW',\
LoadMenuIndirectA,'LoadMenuIndirectA',\
LoadMenuIndirectW,'LoadMenuIndirectW',\
LoadStringA,'LoadStringA',\
LoadStringW,'LoadStringW',\
LockWindowUpdate,'LockWindowUpdate',\
LockWorkStation,'LockWorkStation',\
LookupIconIdFromDirectory,'LookupIconIdFromDirectory',\
LookupIconIdFromDirectoryEx,'LookupIconIdFromDirectoryEx',\
MapDialogRect,'MapDialogRect',\
MapVirtualKeyA,'MapVirtualKeyA',\
MapVirtualKeyW,'MapVirtualKeyW',\
MapVirtualKeyExA,'MapVirtualKeyExA',\
MapVirtualKeyExW,'MapVirtualKeyExW',\
MapWindowPoints,'MapWindowPoints',\
MenuItemFromPoint,'MenuItemFromPoint',\
MessageBeep,'MessageBeep',\
MessageBoxA,'MessageBoxA',\
MessageBoxW,'MessageBoxW',\
MessageBoxExA,'MessageBoxExA',\
MessageBoxExW,'MessageBoxExW',\
MessageBoxIndirectA,'MessageBoxIndirectA',\
MessageBoxIndirectW,'MessageBoxIndirectW',\
ModifyMenuA,'ModifyMenuA',\
ModifyMenuW,'ModifyMenuW',\
MonitorFromPoint,'MonitorFromPoint',\
MonitorFromRect,'MonitorFromRect',\
MonitorFromWindow,'MonitorFromWindow',\
MoveWindow,'MoveWindow',\
MsgWaitForMultipleObjects,'MsgWaitForMultipleObjects',\
MsgWaitForMultipleObjectsEx,'MsgWaitForMultipleObjectsEx',\
NotifyWinEvent,'NotifyWinEvent',\
OemKeyScan,'OemKeyScan',\
OemToCharA,'OemToCharA',\
OemToCharW,'OemToCharW',\
OemToCharBuffA,'OemToCharBuffA',\
OemToCharBuffW,'OemToCharBuffW',\
OffsetRect,'OffsetRect',\
OpenClipboard,'OpenClipboard',\
OpenDesktopA,'OpenDesktopA',\
OpenDesktopW,'OpenDesktopW',\
OpenIcon,'OpenIcon',\
OpenInputDesktop,'OpenInputDesktop',\
OpenWindowStationA,'OpenWindowStationA',\
OpenWindowStationW,'OpenWindowStationW',\
PackDDElParam,'PackDDElParam',\
PaintDesktop,'PaintDesktop',\
PeekMessageA,'PeekMessageA',\
PeekMessageW,'PeekMessageW',\
PostMessageA,'PostMessageA',\
PostMessageW,'PostMessageW',\
PostQuitMessage,'PostQuitMessage',\
PostThreadMessageA,'PostThreadMessageA',\
PostThreadMessageW,'PostThreadMessageW',\
PtInRect,'PtInRect',\
RealChildWindowFromPoint,'RealChildWindowFromPoint',\
RealGetWindowClassA,'RealGetWindowClassA',\
RealGetWindowClassW,'RealGetWindowClassW',\
RedrawWindow,'RedrawWindow',\
RegisterClassA,'RegisterClassA',\
RegisterClassW,'RegisterClassW',\
RegisterClassExA,'RegisterClassExA',\
RegisterClassExW,'RegisterClassExW',\
RegisterClipboardFormatA,'RegisterClipboardFormatA',\
RegisterClipboardFormatW,'RegisterClipboardFormatW',\
RegisterDeviceNotificationA,'RegisterDeviceNotificationA',\
RegisterDeviceNotificationW,'RegisterDeviceNotificationW',\
RegisterHotKey,'RegisterHotKey',\
RegisterWindowMessageA,'RegisterWindowMessageA',\
RegisterWindowMessageW,'RegisterWindowMessageW',\
ReleaseCapture,'ReleaseCapture',\
ReleaseDC,'ReleaseDC',\
RemoveMenu,'RemoveMenu',\
RemovePropA,'RemovePropA',\
RemovePropW,'RemovePropW',\
ReplyMessage,'ReplyMessage',\
ReuseDDElParam,'ReuseDDElParam',\
ScreenToClient,'ScreenToClient',\
ScrollChildren,'ScrollChildren',\
ScrollDC,'ScrollDC',\
ScrollWindow,'ScrollWindow',\
ScrollWindowEx,'ScrollWindowEx',\
SendDlgItemMessageA,'SendDlgItemMessageA',\
SendDlgItemMessageW,'SendDlgItemMessageW',\
SendIMEMessageExA,'SendIMEMessageExA',\
SendIMEMessageExW,'SendIMEMessageExW',\
SendInput,'SendInput',\
SendMessageA,'SendMessageA',\
SendMessageW,'SendMessageW',\
SendMessageCallbackA,'SendMessageCallbackA',\
SendMessageCallbackW,'SendMessageCallbackW',\
SendMessageTimeoutA,'SendMessageTimeoutA',\
SendMessageTimeoutW,'SendMessageTimeoutW',\
SendNotifyMessageA,'SendNotifyMessageA',\
SendNotifyMessageW,'SendNotifyMessageW',\
SetActiveWindow,'SetActiveWindow',\
SetCapture,'SetCapture',\
SetCaretBlinkTime,'SetCaretBlinkTime',\
SetCaretPos,'SetCaretPos',\
SetClassLongA,'SetClassLongA',\
SetClassLongW,'SetClassLongW',\
SetClassWord,'SetClassWord',\
SetClipboardData,'SetClipboardData',\
SetClipboardViewer,'SetClipboardViewer',\
SetCursor,'SetCursor',\
SetCursorPos,'SetCursorPos',\
SetDebugErrorLevel,'SetDebugErrorLevel',\
SetDeskWallpaper,'SetDeskWallpaper',\
SetDlgItemInt,'SetDlgItemInt',\
SetDlgItemTextA,'SetDlgItemTextA',\
SetDlgItemTextW,'SetDlgItemTextW',\
SetDoubleClickTime,'SetDoubleClickTime',\
SetFocus,'SetFocus',\
SetForegroundWindow,'SetForegroundWindow',\
SetKeyboardState,'SetKeyboardState',\
SetLastErrorEx,'SetLastErrorEx',\
SetLayeredWindowAttributes,'SetLayeredWindowAttributes',\
SetMenu,'SetMenu',\
SetMenuContextHelpId,'SetMenuContextHelpId',\
SetMenuDefaultItem,'SetMenuDefaultItem',\
SetMenuInfo,'SetMenuInfo',\
SetMenuItemBitmaps,'SetMenuItemBitmaps',\
SetMenuItemInfoA,'SetMenuItemInfoA',\
SetMenuItemInfoW,'SetMenuItemInfoW',\
SetMessageExtraInfo,'SetMessageExtraInfo',\
SetMessageQueue,'SetMessageQueue',\
SetParent,'SetParent',\
SetProcessWindowStation,'SetProcessWindowStation',\
SetPropA,'SetPropA',\
SetPropW,'SetPropW',\
SetRect,'SetRect',\
SetRectEmpty,'SetRectEmpty',\
SetScrollInfo,'SetScrollInfo',\
SetScrollPos,'SetScrollPos',\
SetScrollRange,'SetScrollRange',\
SetShellWindow,'SetShellWindow',\
SetSysColors,'SetSysColors',\
SetSystemCursor,'SetSystemCursor',\
SetSystemMenu,'SetSystemMenu',\
SetSystemTimer,'SetSystemTimer',\
SetThreadDesktop,'SetThreadDesktop',\
SetTimer,'SetTimer',\
SetUserObjectInformationA,'SetUserObjectInformationA',\
SetUserObjectInformationW,'SetUserObjectInformationW',\
SetUserObjectSecurity,'SetUserObjectSecurity',\
SetWinEventHook,'SetWinEventHook',\
SetWindowContextHelpId,'SetWindowContextHelpId',\
SetWindowLongA,'SetWindowLongA',\
SetWindowLongW,'SetWindowLongW',\
SetWindowPlacement,'SetWindowPlacement',\
SetWindowPos,'SetWindowPos',\
SetWindowRgn,'SetWindowRgn',\
SetWindowTextA,'SetWindowTextA',\
SetWindowTextW,'SetWindowTextW',\
SetWindowWord,'SetWindowWord',\
SetWindowsHookA,'SetWindowsHookA',\
SetWindowsHookW,'SetWindowsHookW',\
SetWindowsHookExA,'SetWindowsHookExA',\
SetWindowsHookExW,'SetWindowsHookExW',\
ShowCaret,'ShowCaret',\
ShowCursor,'ShowCursor',\
ShowOwnedPopups,'ShowOwnedPopups',\
ShowScrollBar,'ShowScrollBar',\
ShowWindow,'ShowWindow',\
ShowWindowAsync,'ShowWindowAsync',\
SubtractRect,'SubtractRect',\
SwapMouseButton,'SwapMouseButton',\
SwitchDesktop,'SwitchDesktop',\
SystemParametersInfoA,'SystemParametersInfoA',\
SystemParametersInfoW,'SystemParametersInfoW',\
TabbedTextOutA,'TabbedTextOutA',\
TabbedTextOutW,'TabbedTextOutW',\
TileChildWindows,'TileChildWindows',\
TileWindows,'TileWindows',\
ToAscii,'ToAscii',\
ToAsciiEx,'ToAsciiEx',\
ToUnicode,'ToUnicode',\
ToUnicodeEx,'ToUnicodeEx',\
TrackMouseEvent,'TrackMouseEvent',\
TrackPopupMenu,'TrackPopupMenu',\
TrackPopupMenuEx,'TrackPopupMenuEx',\
TranslateAcceleratorA,'TranslateAcceleratorA',\
TranslateAcceleratorW,'TranslateAcceleratorW',\
TranslateMDISysAccel,'TranslateMDISysAccel',\
TranslateMessage,'TranslateMessage',\
UnhookWinEvent,'UnhookWinEvent',\
UnhookWindowsHook,'UnhookWindowsHook',\
UnhookWindowsHookEx,'UnhookWindowsHookEx',\
UnionRect,'UnionRect',\
UnloadKeyboardLayout,'UnloadKeyboardLayout',\
UnpackDDElParam,'UnpackDDElParam',\
UnregisterClassA,'UnregisterClassA',\
UnregisterClassW,'UnregisterClassW',\
UnregisterDeviceNotification,'UnregisterDeviceNotification',\
UnregisterHotKey,'UnregisterHotKey',\
UpdateWindow,'UpdateWindow',\
UserHandleGrantAccess,'UserHandleGrantAccess',\
ValidateRect,'ValidateRect',\
ValidateRgn,'ValidateRgn',\
VkKeyScanA,'VkKeyScanA',\
VkKeyScanW,'VkKeyScanW',\
VkKeyScanExA,'VkKeyScanExA',\
VkKeyScanExW,'VkKeyScanExW',\
WINNLSEnableIME,'WINNLSEnableIME',\
WINNLSGetEnableStatus,'WINNLSGetEnableStatus',\
WINNLSGetIMEHotkey,'WINNLSGetIMEHotkey',\
WaitForInputIdle,'WaitForInputIdle',\
WaitMessage,'WaitMessage',\
WinHelpA,'WinHelpA',\
WinHelpW,'WinHelpW',\
WindowFromDC,'WindowFromDC',\
WindowFromPoint,'WindowFromPoint',\
keybd_event,'keybd_event',\
mouse_event,'mouse_event',\
wsprintfA,'wsprintfA',\
wsprintfW,'wsprintfW',\
wvsprintfA,'wvsprintfA',\
wvsprintfW,'wvsprintfW'
api AppendMenu,\
BroadcastSystemMessage,\
CallMsgFilter,\
CallWindowProc,\
ChangeDisplaySettings,\
ChangeDisplaySettingsEx,\
ChangeMenu,\
CharLower,\
CharLowerBuff,\
CharNext,\
CharNextEx,\
CharPrev,\
CharPrevEx,\
CharToOem,\
CharToOemBuff,\
CharUpper,\
CharUpperBuff,\
CopyAcceleratorTable,\
CreateAcceleratorTable,\
CreateDesktop,\
CreateDialogIndirectParam,\
CreateDialogParam,\
CreateMDIWindow,\
CreateWindowEx,\
CreateWindowStation,\
DdeCreateStringHandle,\
DdeInitialize,\
DdeQueryString,\
DefDlgProc,\
DefFrameProc,\
DefMDIChildProc,\
DefWindowProc,\
DialogBoxIndirectParam,\
DialogBoxParam,\
DispatchMessage,\
DlgDirList,\
DlgDirListComboBox,\
DlgDirSelectComboBoxEx,\
DlgDirSelectEx,\
DrawState,\
DrawText,\
DrawTextEx,\
EnumDesktops,\
EnumDisplaySettings,\
EnumDisplaySettingsEx,\
EnumProps,\
EnumPropsEx,\
EnumWindowStations,\
FindWindow,\
FindWindowEx,\
GetAltTabInfo,\
GetClassInfo,\
GetClassInfoEx,\
GetClassLong,\
GetClassName,\
GetClipboardFormatName,\
GetClipboardSequenceNumber,\
GetDlgItemText,\
GetKeyNameText,\
GetKeyboardLayoutName,\
GetMenuItemInfo,\
GetMenuString,\
GetMessage,\
GetMonitorInfo,\
GetProp,\
GetTabbedTextExtent,\
GetUserObjectInformation,\
GetWindowLong,\
GetWindowModuleFileName,\
GetWindowText,\
GetWindowTextLength,\
GrayString,\
IMPGetIME,\
IMPQueryIME,\
IMPSetIME,\
InsertMenu,\
InsertMenuItem,\
IsCharAlpha,\
IsCharAlphaNumeric,\
IsCharLower,\
IsCharUpper,\
IsDialogMessage,\
LoadAccelerators,\
LoadBitmap,\
LoadCursor,\
LoadCursorFromFile,\
LoadIcon,\
LoadImage,\
LoadKeyboardLayout,\
LoadMenu,\
LoadMenuIndirect,\
LoadString,\
MapVirtualKey,\
MapVirtualKeyEx,\
MessageBox,\
MessageBoxEx,\
MessageBoxIndirect,\
ModifyMenu,\
OemToChar,\
OemToCharBuff,\
OpenDesktop,\
OpenWindowStation,\
PeekMessage,\
PostMessage,\
PostThreadMessage,\
RealGetWindowClass,\
RegisterClass,\
RegisterClassEx,\
RegisterClipboardFormat,\
RegisterDeviceNotification,\
RegisterWindowMessage,\
RemoveProp,\
SendDlgItemMessage,\
SendIMEMessageEx,\
SendMessage,\
SendMessageCallback,\
SendMessageTimeout,\
SendNotifyMessage,\
SetClassLong,\
SetDlgItemText,\
SetMenuItemInfo,\
SetProp,\
SetUserObjectInformation,\
SetWindowLong,\
SetWindowText,\
SetWindowsHook,\
SetWindowsHookEx,\
SystemParametersInfo,\
TabbedTextOut,\
TranslateAccelerator,\
UnregisterClass,\
VkKeyScan,\
VkKeyScanEx,\
WinHelp,\
wsprintf,\
wvsprintf

View File

@@ -0,0 +1,85 @@
; WSOCK32 API calls
import wsock32,\
AcceptEx,'AcceptEx',\
EnumProtocolsA,'EnumProtocolsA',\
EnumProtocolsW,'EnumProtocolsW',\
GetAcceptExSockaddrs,'GetAcceptExSockaddrs',\
GetAddressByNameA,'GetAddressByNameA',\
GetAddressByNameW,'GetAddressByNameW',\
GetNameByTypeA,'GetNameByTypeA',\
GetNameByTypeW,'GetNameByTypeW',\
GetServiceA,'GetServiceA',\
GetServiceW,'GetServiceW',\
GetTypeByNameA,'GetTypeByNameA',\
GetTypeByNameW,'GetTypeByNameW',\
MigrateWinsockConfiguration,'MigrateWinsockConfiguration',\
NPLoadNameSpaces,'NPLoadNameSpaces',\
SetServiceA,'SetServiceA',\
SetServiceW,'SetServiceW',\
TransmitFile,'TransmitFile',\
WEP,'WEP',\
WSAAsyncGetHostByAddr,'WSAAsyncGetHostByAddr',\
WSAAsyncGetHostByName,'WSAAsyncGetHostByName',\
WSAAsyncGetProtoByName,'WSAAsyncGetProtoByName',\
WSAAsyncGetProtoByNumber,'WSAAsyncGetProtoByNumber',\
WSAAsyncGetServByName,'WSAAsyncGetServByName',\
WSAAsyncGetServByPort,'WSAAsyncGetServByPort',\
WSAAsyncSelect,'WSAAsyncSelect',\
WSACancelAsyncRequest,'WSACancelAsyncRequest',\
WSACancelBlockingCall,'WSACancelBlockingCall',\
WSACleanup,'WSACleanup',\
WSAGetLastError,'WSAGetLastError',\
WSAIsBlocking,'WSAIsBlocking',\
WSARecvEx,'WSARecvEx',\
WSASetBlockingHook,'WSASetBlockingHook',\
WSASetLastError,'WSASetLastError',\
WSAStartup,'WSAStartup',\
WSAUnhookBlockingHook,'WSAUnhookBlockingHook',\
__WSAFDIsSet,'__WSAFDIsSet',\
accept,'accept',\
bind,'bind',\
closesocket,'closesocket',\
connect,'connect',\
dn_expand,'dn_expand',\
gethostbyaddr,'gethostbyaddr',\
gethostbyname,'gethostbyname',\
gethostname,'gethostname',\
getnetbyname,'getnetbyname',\
getpeername,'getpeername',\
getprotobyname,'getprotobyname',\
getprotobynumber,'getprotobynumber',\
getservbyname,'getservbyname',\
getservbyport,'getservbyport',\
getsockname,'getsockname',\
getsockopt,'getsockopt',\
htonl,'htonl',\
htons,'htons',\
inet_addr,'inet_addr',\
inet_network,'inet_network',\
inet_ntoa,'inet_ntoa',\
ioctlsocket,'ioctlsocket',\
listen,'listen',\
ntohl,'ntohl',\
ntohs,'ntohs',\
rcmd,'rcmd',\
recv,'recv',\
recvfrom,'recvfrom',\
rexec,'rexec',\
rresvport,'rresvport',\
s_perror,'s_perror',\
select,'select',\
send,'send',\
sendto,'sendto',\
sethostname,'sethostname',\
setsockopt,'setsockopt',\
shutdown,'shutdown',\
socket,'socket'
api EnumProtocols,\
GetAddressByName,\
GetNameByType,\
GetService,\
GetTypeByName,\
SetService

View File

@@ -0,0 +1,77 @@
; UTF-8
macro du [arg]
{ local current,..input,char
if arg eqtype ''
virtual at 0
..input::
db arg
count = $
end virtual
current = 0
while current < count
load char byte from ..input:current
wide = char
current = current + 1
if char > 0C0h
if char < 0E0h
wide = char and 11111b
load char byte from ..input:current
wide = wide shl 6 + (char and 111111b)
current = current + 1
else if char < 0F0h
wide = char and 1111b
load char byte from ..input:current
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+1
wide = wide shl 6 + (char and 111111b)
current = current + 2
else if char < 0F8h
wide = char and 111b
load char byte from ..input:current
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+1
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+2
wide = wide shl 6 + (char and 111111b)
current = current + 3
else if char < 0FCh
wide = char and 11b
load char byte from ..input:current
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+1
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+2
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+3
wide = wide shl 6 + (char and 111111b)
current = current + 4
else
wide = char and 1
load char byte from ..input:current
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+1
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+2
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+3
wide = wide shl 6 + (char and 111111b)
load char byte from ..input:current+4
wide = wide shl 6 + (char and 111111b)
current = current + 5
end if
end if
if wide < 10000h
dw wide
else
dw 0D7C0h + wide shr 10,0DC00h or (wide and 3FFh)
end if
end while
else
dw arg
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,36 @@
; Windows 1250
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,?,201Ah,?,201Eh,2026h,2020h,2021h,?,2030h,160h,2039h,15Ah,164h,17Dh,179h
dw ?,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,?,2122h,161h,203Ah,15Bh,165h,17Eh,17Ah
dw 0A0h,2C7h,2D8h,141h,0A4h,104h,0A6h,0A7h,0A8h,0A9h,15Eh,0ABh,0ACh,0ADh,0AEh,17Bh
dw 0B0h,0B1h,2DBh,142h,0B4h,0B5h,0B6h,0B7h,0B8h,105h,15Fh,0BBh,13Dh,2DDh,13Eh,17Ch
dw 154h,0C1h,0C2h,102h,0C4h,139h,106h,0C7h,10Ch,0C9h,118h,0CBh,11Ah,0CDh,0CEh,10Eh
dw 110h,143h,147h,0D3h,0D4h,150h,0D6h,0D7h,158h,16Eh,0DAh,170h,0DCh,0DDh,162h,0DFh
dw 155h,0E1h,0E2h,103h,0E4h,13Ah,107h,0E7h,10Dh,0E9h,119h,0EBh,11Bh,0EDh,0EEh,10Fh
dw 111h,144h,148h,0F3h,0F4h,151h,0F6h,0F7h,159h,16Fh,0FAh,171h,0FCh,0FDh,163h,2D9h
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,33 @@
; Windows 1251
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 401h,403h,201Ah,453h,201Eh,2026h,2020h,2021h,20ACh,2030h,409h,2039h,40Ah,40Ch,40Bh,40Fh
dw 452h,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,?,2122h,459h,203Ah,45Ah,45Ch,45Bh,45Fh
dw 0A0h,40Eh,45Eh,408h,0A4h,490h,0A6h,0A7h,401h,0A9h,404h,0ABh,0ACh,0ADh,0AEh,407h
dw 0B0h,0B1h,406h,456h,491h,0B5h,0B6h,0B7h,451h,2116h,454h,0BBh,458h,405h,455h,457h
times 40h dw 410h+%-1
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,31 @@
; Windows 1252
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,?,201Ah,192h,201Eh,2026h,2020h,2021h,2C6h,2030h,160h,2039h,152h,?,17D,?
dw ?,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,2DCh,2122h,161h,203Ah,153h,?,17Eh,178h
times 60h dw 0A0h+%-1
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,33 @@
; Windows 1253
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,?,201Ah,192h,201Eh,2026h,2020h,2021h,?,2030h,?,2039h,?,?,?,?
dw ?,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,?,2122h,?,203Ah,?,?,?,?
dw 0A0h,385h,386h,0A3h,0A4h,0A5h,0A6h,0A7h,0A8h,0A9h,?,0ABh,0ACh,0ADh,0AEh,2015h
dw 0B0h,0B1h,0B2h,0B3h,384h,0B5h,0B6h,0B7h,288h,389h,38Ah,0BBh,38Ch,0BDh,38Eh,38Fh
times 40h dw 390h+%-1
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,34 @@
; Windows 1254
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,?,201Ah,192h,201Eh,2026h,2020h,2021h,2C6h,2030h,160h,2039h,152h,?,?,?
dw ?,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,2DCh,2122h,161h,203Ah,153h,?,?,178h
times 30h dw 0A0h+%-1
dw 11Eh,0D1h,0D2h,0D3h,0D4h,0D5h,0D6h,0D7h,0D8h,0D9h,0DAh,0DBh,0DCh,130h,15Eh,0DFh
times 10h dw 0E0h+%-1
dw 11Fh,0F1h,0F2h,0F3h,0F4h,0F5h,0F6h,0F7h,0F8h,0F9h,0FAh,0FBh,0FCh,131h,15Fh,0FFh
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,36 @@
; Windows 1255
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,?,201Ah,192h,201Eh,2026h,2020h,2021h,2C6h,2030h,?,2039h,?,?,?,?
dw ?,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,2DCh,2122h,?,203Ah,?,?,?,?
dw 0A0h,0A1h,0A2h,0A3h,20AAh,0A5h,0A6h,0A7h,0A8h,0A9h,0D7h,0ABh,0ACh,0ADh,0AEh,0AFh
dw 0B0h,0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h,0B8h,0B9h,0F7h,0BBh,0BCh,0BDh,0BEh,0BFh
dw 5B0h,5B1h,5B2h,5B3h,5B4h,5B5h,5B6h,5B7h,5B8h,5B9h,?,5BBh,5BCh,5BDh,5BEh,5BFh
dw 5C0h,5C1h,5C2h,5C3h,5F0h,5F1h,5F2h,5F3h,5F4h,?,?,?,?,?,?,?
dw 5D0h,5D1h,5D2h,5D3h,5D4h,5D5h,5D6h,5D7h,5D8h,5D9h,5DAh,5DBh,5DCh,5DDh,5DEh,5DFh
dw 5E0h,5E1h,5E2h,5E3h,5E4h,5E5h,5E6h,5E7h,5E8h,5E9h,5EAh,?,?,200Eh,200Fh,?
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,36 @@
; Windows 1256
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,67Eh,201Ah,192h,201Eh,2026h,2020h,2021h,2C6h,2030h,679h,2039h,152h,686h,698h,688h
dw 6AFh,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,6A9h,2122h,691h,203Ah,153h,200Ch,200Dh,6BAh
dw 0A0h,60Ch,0A2h,0A3h,0A4h,0A5h,0A6h,0A7h,0A8h,0A9h,6BEh,0ABh,0ACh,0ADh,0AEh,0AFh
dw 0B0h,0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h,0B8h,0B9h,0BAh,0BBh,0BCh,0BDh,0BEh,0BFh
dw 6C1h,621h,622h,623h,624h,625h,626h,627h,628h,629h,62Ah,62Bh,62Ch,62Dh,62Eh,62Fh
dw 630h,631h,632h,633h,634h,635h,636h,0D7h,637h,638h,639h,63Ah,640h,641h,642h,643h
dw 0E0h,644h,0E2h,645h,646h,647h,648h,0E7h,0E8h,0E9h,0EAh,0EBh,649h,64Ah,0EEh,0EFh
dw 64Bh,64Ch,64Dh,64Eh,0F4h,64Fh,650h,0F7h,651h,0F9h,652h,0FBh,0FCh,200Eh,200Fh,6D2h
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,36 @@
; Windows 1257
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,?,201Ah,?,201Eh,2026h,2020h,2021h,?,2030h,?,2039h,?,0A8h,2C7h,0B8h
dw ?,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,?,2122h,?,203Ah,?,0AFh,2DBh,?
dw 0A0h,?,0A2h,0A3h,0A4h,?,0A6h,0A7h,0D8h,0A9h,156h,0ABh,0ACh,0ADh,0AEh,0C6h
dw 0B0h,0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h,0F8h,0B9h,157h,0BBh,0BCh,0BDh,0BEh,0E6h
dw 104h,12Eh,100h,106h,0C4h,0C5h,118h,112h,10Ch,0C9h,179h,116h,122h,136h,12Ah,13Bh
dw 160h,143h,145h,0D3h,14Ch,0D5h,0D6h,0D7h,172h,141h,15Ah,16Ah,0DCh,17Bh,17Dh,0DFh
dw 105h,12Fh,101h,107h,0E4h,0E5h,119h,113h,10Dh,0E9h,17Ah,117h,123h,137h,12Bh,13Ch
dw 161h,144h,146h,0F3h,14Dh,0F5h,0F6h,0F7h,173h,142h,15Bh,16Bh,0FCh,17Ch,17Eh,2D9h
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,36 @@
; Windows 1258
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,?,201Ah,192h,201Eh,2026h,2020h,2021h,2C6h,2030h,?,2039h,152h,?,?,?
dw ?,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,2DCh,2122h,?,203Ah,153h,?,?,178h
dw 0A0h,0A1h,0A2h,0A3h,0A4h,0A5h,0A6h,0A7h,0A8h,0A9h,0AAh,0ABh,0ACh,0ADh,0AEh,0AFh
dw 0B0h,0B1h,0B2h,0B3h,0B4h,0B5h,0B6h,0B7h,0B8h,0B9h,0BAh,0BBh,0BCh,0BDh,0BEh,0BFh
dw 0C0h,0C1h,0C2h,102h,0C4h,0C5h,0C6h,0C7h,0C8h,0C9h,0CAh,0CBh,300h,0CDh,0CEh,0CFh
dw 110h,0D1h,309h,0D3h,0D4h,1A0h,0D6h,0D7h,0D8h,0D9h,0DAh,0DBh,0DCh,1AFh,303h,0DFh
dw 0E0h,0E1h,0E2h,103h,0E4h,0E5h,0E6h,0E7h,0E8h,0E9h,0EAh,0EBh,301h,0EDh,0EEh,0EFh
dw 111h,0F1h,323h,0F3h,0F4h,1A1h,0F6h,0F7h,0F8h,0F9h,0FAh,0FBh,0FCh,1B0h,20ABh,0FFh
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

View File

@@ -0,0 +1,31 @@
; Windows 874
rept 1 { local ..encoding
__encoding equ ..encoding }
virtual at 0
__encoding::
times 80h dw %-1
dw 20ACh,?,?,?,?,2026h,?,?,?,?,?,?,?,?,?,?
dw ?,2018h,2019h,201Ch,201Dh,2022h,2013h,2014h,?,?,?,?,?,?,?,?
times 60h dw 0E00h+%-1
end virtual
macro du [arg]
{ local offset,char
offset = $-$$
du arg
if arg eqtype ''
repeat ($-offset-$$)/2
load char byte from $$+offset+(%-1)*2
if char > 7Fh
load char word from __encoding:char*2
store word char at $$+offset+(%-1)*2
end if
end repeat
end if }
struc du [args]
{ common label . word
du args }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,333 @@
; COMDLG32.DLL structures and constants
struct OPENFILENAME
lStructSize dd ?
hwndOwner dd ?
hInstance dd ?
lpstrFilter dd ?
lpstrCustomFilter dd ?
nMaxCustFilter dd ?
nFilterIndex dd ?
lpstrFile dd ?
nMaxFile dd ?
lpstrFileTitle dd ?
nMaxFileTitle dd ?
lpstrInitialDir dd ?
lpstrTitle dd ?
Flags dd ?
nFileOffset dw ?
nFileExtension dw ?
lpstrDefExt dd ?
lCustData dd ?
lpfnHook dd ?
lpTemplateName dd ?
ends
struct CHOOSECOLOR
lStructSize dd ?
hwndOwner dd ?
hInstance dd ?
rgbResult dd ?
lpCustColors dd ?
Flags dd ?
lCustData dd ?
lpfnHook dd ?
lpTemplateName dd ?
ends
struct FINDREPLACE
lStructSize dd ?
hwndOwner dd ?
hInstance dd ?
Flags dd ?
lpstrFindWhat dd ?
lpstrReplaceWith dd ?
wFindWhatLen dw ?
wReplaceWithLen dw ?
lCustData dd ?
lpfnHook dd ?
lpTemplateName dd ?
ends
struct CHOOSEFONT
lStructSize dd ?
hwndOwner dd ?
hDC dd ?
lpLogFont dd ?
iPointSize dd ?
Flags dd ?
rgbColors dd ?
lCustData dd ?
lpfnHook dd ?
lpTemplateName dd ?
hInstance dd ?
lpszStyle dd ?
nFontType dw ?
wReserved dw ?
nSizeMin dd ?
nSizeMax dd ?
ends
struct PRINTDLG
lStructSize dd ?
hwndOwner dd ?
hDevMode dd ?
hDevNames dd ?
hDC dd ?
Flags dd ?
nFromPage dw ?
nToPage dw ?
nMinPage dw ?
nMaxPage dw ?
nCopies dw ?
hInstance dd ?
lCustData dd ?
lpfnPrintHook dd ?
lpfnSetupHook dd ?
lpPrintTemplateName dd ?
lpSetupTemplateName dd ?
hPrintTemplate dd ?
hSetupTemplate dd ?
ends
struct DEVNAMES
wDriverOffset dw ?
wDeviceOffset dw ?
wOutputOffset dw ?
wDefault dw ?
ends
struct PAGESETUPDLG
lStructSize dd ?
hwndOwner dd ?
hDevMode dd ?
hDevNames dd ?
Flags dd ?
ptPaperSize POINT
rtMinMargin RECT
rtMargin RECT
hInstance dd ?
lCustData dd ?
lpfnPageSetupHook dd ?
lpfnPagePaintHook dd ?
lpPageSetupTemplateName dd ?
hPageSetupTemplate dd ?
ends
; OPENFILENAME flags
OFN_READONLY = 000001h
OFN_OVERWRITEPROMPT = 000002h
OFN_HIDEREADONLY = 000004h
OFN_NOCHANGEDIR = 000008h
OFN_SHOWHELP = 000010h
OFN_ENABLEHOOK = 000020h
OFN_ENABLETEMPLATE = 000040h
OFN_ENABLETEMPLATEHANDLE = 000080h
OFN_NOVALIDATE = 000100h
OFN_ALLOWMULTISELECT = 000200h
OFN_EXTENSIONDIFFERENT = 000400h
OFN_PATHMUSTEXIST = 000800h
OFN_FILEMUSTEXIST = 001000h
OFN_CREATEPROMPT = 002000h
OFN_SHAREAWARE = 004000h
OFN_NOREADONLYRETURN = 008000h
OFN_NOTESTFILECREATE = 010000h
OFN_NONETWORKBUTTON = 020000h
OFN_NOLONGNAMES = 040000h
OFN_EXPLORER = 080000h
OFN_NODEREFERENCELINKS = 100000h
OFN_LONGNAMES = 200000h
; Common dialog notifications
CDN_FIRST = -601
CDN_LAST = -699
CDN_INITDONE = CDN_FIRST - 0
CDN_SELCHANGE = CDN_FIRST - 1
CDN_FOLDERCHANGE = CDN_FIRST - 2
CDN_SHAREVIOLATION = CDN_FIRST - 3
CDN_HELP = CDN_FIRST - 4
CDN_FILEOK = CDN_FIRST - 5
CDN_TYPECHANGE = CDN_FIRST - 6
; Common dialog messages
CDM_FIRST = WM_USER + 100
CDM_LAST = WM_USER + 200
CDM_GETSPEC = CDM_FIRST + 0
CDM_GETFILEPATH = CDM_FIRST + 1
CDM_GETFOLDERPATH = CDM_FIRST + 2
CDM_GETFOLDERIDLIST = CDM_FIRST + 3
CDM_SETCONTROLTEXT = CDM_FIRST + 4
CDM_HIDECONTROL = CDM_FIRST + 5
CDM_SETDEFEXT = CDM_FIRST + 6
; CHOOSECOLOR flags
CC_RGBINIT = 001h
CC_FULLOPEN = 002h
CC_PREVENTFULLOPEN = 004h
CC_SHOWHELP = 008h
CC_ENABLEHOOK = 010h
CC_ENABLETEMPLATE = 020h
CC_ENABLETEMPLATEHANDLE = 040h
CC_SOLIDCOLOR = 080h
CC_ANYCOLOR = 100h
; FINDREPLACE flags
FR_DOWN = 00001h
FR_WHOLEWORD = 00002h
FR_MATCHCASE = 00004h
FR_FINDNEXT = 00008h
FR_REPLACE = 00010h
FR_REPLACEALL = 00020h
FR_DIALOGTERM = 00040h
FR_SHOWHELP = 00080h
FR_ENABLEHOOK = 00100h
FR_ENABLETEMPLATE = 00200h
FR_NOUPDOWN = 00400h
FR_NOMATCHCASE = 00800h
FR_NOWHOLEWORD = 01000h
FR_ENABLETEMPLATEHANDLE = 02000h
FR_HIDEUPDOWN = 04000h
FR_HIDEMATCHCASE = 08000h
FR_HIDEWHOLEWORD = 10000h
; CHOOSEFONT flags
CF_SCREENFONTS = 0000001h
CF_PRINTERFONTS = 0000002h
CF_BOTH = CF_SCREENFONTS or CF_PRINTERFONTS
CF_SHOWHELP = 0000004h
CF_ENABLEHOOK = 0000008h
CF_ENABLETEMPLATE = 0000010h
CF_ENABLETEMPLATEHANDLE = 0000020h
CF_INITTOLOGFONTSTRUCT = 0000040h
CF_USESTYLE = 0000080h
CF_EFFECTS = 0000100h
CF_APPLY = 0000200h
CF_ANSIONLY = 0000400h
CF_SCRIPTSONLY = CF_ANSIONLY
CF_NOVECTORFONTS = 0000800h
CF_NOOEMFONTS = CF_NOVECTORFONTS
CF_NOSIMULATIONS = 0001000h
CF_LIMITSIZE = 0002000h
CF_FIXEDPITCHONLY = 0004000h
CF_WYSIWYG = 0008000h
CF_FORCEFONTEXIST = 0010000h
CF_SCALABLEONLY = 0020000h
CF_TTONLY = 0040000h
CF_NOFACESEL = 0080000h
CF_NOSTYLESEL = 0100000h
CF_NOSIZESEL = 0200000h
CF_SELECTSCRIPT = 0400000h
CF_NOSCRIPTSEL = 0800000h
CF_NOVERTFONTS = 1000000h
; ChooseFont messages
WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1
WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101
WM_CHOOSEFONT_SETFLAGS = WM_USER + 102
; PRINTDLG flags
PD_ALLPAGES = 000000h
PD_SELECTION = 000001h
PD_PAGENUMS = 000002h
PD_NOSELECTION = 000004h
PD_NOPAGENUMS = 000008h
PD_COLLATE = 000010h
PD_PRINTTOFILE = 000020h
PD_PRINTSETUP = 000040h
PD_NOWARNING = 000080h
PD_RETURNDC = 000100h
PD_RETURNIC = 000200h
PD_RETURNDEFAULT = 000400h
PD_SHOWHELP = 000800h
PD_ENABLEPRINTHOOK = 001000h
PD_ENABLESETUPHOOK = 002000h
PD_ENABLEPRINTTEMPLATE = 004000h
PD_ENABLESETUPTEMPLATE = 008000h
PD_ENABLEPRINTTEMPLATEHANDLE = 010000h
PD_ENABLESETUPTEMPLATEHANDLE = 020000h
PD_USEDEVMODECOPIES = 040000h
PD_USEDEVMODECOPIESANDCOLLATE = 040000h
PD_DISABLEPRINTTOFILE = 080000h
PD_HIDEPRINTTOFILE = 100000h
PD_NONETWORKBUTTON = 200000h
; PAGESETUPDLG flags
PSD_DEFAULTMINMARGINS = 000000h
PSD_INWININIINTLMEASURE = 000000h
PSD_MINMARGINS = 000001h
PSD_MARGINS = 000002h
PSD_INTHOUSANDTHSOFINCHES = 000004h
PSD_INHUNDREDTHSOFMILLIMETERS = 000008h
PSD_DISABLEMARGINS = 000010h
PSD_DISABLEPRINTER = 000020h
PSD_NOWARNING = 000080h
PSD_DISABLEORIENTATION = 000100h
PSD_RETURNDEFAULT = 000400h
PSD_DISABLEPAPER = 000200h
PSD_SHOWHELP = 000800h
PSD_ENABLEPAGESETUPHOOK = 002000h
PSD_ENABLEPAGESETUPTEMPLATE = 008000h
PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 020000h
PSD_ENABLEPAGEPAINTHOOK = 040000h
PSD_DISABLEPAGEPAINTING = 080000h
PSD_NONETWORKBUTTON = 200000h
; PageSetupDlg messages
WM_PSD_PAGESETUPDLG = WM_USER
WM_PSD_FULLPAGERECT = WM_USER + 1
WM_PSD_MINMARGINRECT = WM_USER + 2
WM_PSD_MARGINRECT = WM_USER + 3
WM_PSD_GREEKTEXTRECT = WM_USER + 4
WM_PSD_ENVSTAMPRECT = WM_USER + 5
WM_PSD_YAFULLPAGERECT = WM_USER + 6
; Common dialog error codes
CDERR_DIALOGFAILURE = 0FFFFh
CDERR_GENERALCODES = 00000h
CDERR_STRUCTSIZE = 00001h
CDERR_INITIALIZATION = 00002h
CDERR_NOTEMPLATE = 00003h
CDERR_NOHINSTANCE = 00004h
CDERR_LOADSTRFAILURE = 00005h
CDERR_FINDRESFAILURE = 00006h
CDERR_LOADRESFAILURE = 00007h
CDERR_LOCKRESFAILURE = 00008h
CDERR_MEMALLOCFAILURE = 00009h
CDERR_MEMLOCKFAILURE = 0000Ah
CDERR_NOHOOK = 0000Bh
CDERR_REGISTERMSGFAIL = 0000Ch
PDERR_PRINTERCODES = 01000h
PDERR_SETUPFAILURE = 01001h
PDERR_PARSEFAILURE = 01002h
PDERR_RETDEFFAILURE = 01003h
PDERR_LOADDRVFAILURE = 01004h
PDERR_GETDEVMODEFAIL = 01005h
PDERR_INITFAILURE = 01006h
PDERR_NODEVICES = 01007h
PDERR_NODEFAULTPRN = 01008h
PDERR_DNDMMISMATCH = 01009h
PDERR_CREATEICFAILURE = 0100Ah
PDERR_PRINTERNOTFOUND = 0100Bh
PDERR_DEFAULTDIFFERENT = 0100Ch
CFERR_CHOOSEFONTCODES = 02000h
CFERR_NOFONTS = 02001h
CFERR_MAXLESSTHANMIN = 02002h
FNERR_FILENAMECODES = 03000h
FNERR_SUBCLASSFAILURE = 03001h
FNERR_INVALIDFILENAME = 03002h
FNERR_BUFFERTOOSMALL = 03003h
FRERR_FINDREPLACECODES = 04000h
FRERR_BUFFERLENGTHZERO = 04001h
CCERR_CHOOSECOLORCODES = 05000h

View File

@@ -0,0 +1,334 @@
; COMDLG32.DLL structures and constants
struct OPENFILENAME
lStructSize dq ?
hwndOwner dq ?
hInstance dq ?
lpstrFilter dq ?
lpstrCustomFilter dq ?
nMaxCustFilter dd ?
nFilterIndex dd ?
lpstrFile dq ?
nMaxFile dd ?,?
lpstrFileTitle dq ?
nMaxFileTitle dd ?,?
lpstrInitialDir dq ?
lpstrTitle dq ?
Flags dd ?
nFileOffset dw ?
nFileExtension dw ?
lpstrDefExt dq ?
lCustData dq ?
lpfnHook dq ?
lpTemplateName dq ?
ends
struct CHOOSECOLOR
lStructSize dq ?
hwndOwner dq ?
hInstance dq ?
rgbResult dd ?,?
lpCustColors dq ?
Flags dd ?,?
lCustData dq ?
lpfnHook dq ?
lpTemplateName dq ?
ends
struct FINDREPLACE
lStructSize dq ?
hwndOwner dq ?
hInstance dq ?
Flags dd ?,?
lpstrFindWhat dq ?
lpstrReplaceWith dq ?
wFindWhatLen dw ?
wReplaceWithLen dw ?,?,?
lCustData dq ?
lpfnHook dq ?
lpTemplateName dq ?
ends
struct CHOOSEFONT
lStructSize dq ?
hwndOwner dq ?
hDC dq ?
lpLogFont dq ?
iPointSize dd ?
Flags dd ?
rgbColors dd ?,?
lCustData dq ?
lpfnHook dq ?
lpTemplateName dq ?
hInstance dq ?
lpszStyle dq ?
nFontType dw ?
wReserved dw ?
nSizeMin dd ?
nSizeMax dd ?
ends
struct PRINTDLG
lStructSize dq ?
hwndOwner dq ?
hDevMode dq ?
hDevNames dq ?
hDC dq ?
Flags dd ?
nFromPage dw ?
nToPage dw ?
nMinPage dw ?
nMaxPage dw ?
nCopies dw ?,?
hInstance dq ?
lCustData dq ?
lpfnPrintHook dq ?
lpfnSetupHook dq ?
lpPrintTemplateName dq ?
lpSetupTemplateName dq ?
hPrintTemplate dq ?
hSetupTemplate dq ?
ends
struct DEVNAMES
wDriverOffset dw ?
wDeviceOffset dw ?
wOutputOffset dw ?
wDefault dw ?
ends
struct PAGESETUPDLG
lStructSize dq ?
hwndOwner dq ?
hDevMode dq ?
hDevNames dq ?
Flags dd ?
ptPaperSize POINT
rtMinMargin RECT
rtMargin RECT
dd ?
hInstance dq ?
lCustData dq ?
lpfnPageSetupHook dq ?
lpfnPagePaintHook dq ?
lpPageSetupTemplateName dq ?
hPageSetupTemplate dq ?
ends
; OPENFILENAME flags
OFN_READONLY = 000001h
OFN_OVERWRITEPROMPT = 000002h
OFN_HIDEREADONLY = 000004h
OFN_NOCHANGEDIR = 000008h
OFN_SHOWHELP = 000010h
OFN_ENABLEHOOK = 000020h
OFN_ENABLETEMPLATE = 000040h
OFN_ENABLETEMPLATEHANDLE = 000080h
OFN_NOVALIDATE = 000100h
OFN_ALLOWMULTISELECT = 000200h
OFN_EXTENSIONDIFFERENT = 000400h
OFN_PATHMUSTEXIST = 000800h
OFN_FILEMUSTEXIST = 001000h
OFN_CREATEPROMPT = 002000h
OFN_SHAREAWARE = 004000h
OFN_NOREADONLYRETURN = 008000h
OFN_NOTESTFILECREATE = 010000h
OFN_NONETWORKBUTTON = 020000h
OFN_NOLONGNAMES = 040000h
OFN_EXPLORER = 080000h
OFN_NODEREFERENCELINKS = 100000h
OFN_LONGNAMES = 200000h
; Common dialog notifications
CDN_FIRST = -601
CDN_LAST = -699
CDN_INITDONE = CDN_FIRST - 0
CDN_SELCHANGE = CDN_FIRST - 1
CDN_FOLDERCHANGE = CDN_FIRST - 2
CDN_SHAREVIOLATION = CDN_FIRST - 3
CDN_HELP = CDN_FIRST - 4
CDN_FILEOK = CDN_FIRST - 5
CDN_TYPECHANGE = CDN_FIRST - 6
; Common dialog messages
CDM_FIRST = WM_USER + 100
CDM_LAST = WM_USER + 200
CDM_GETSPEC = CDM_FIRST + 0
CDM_GETFILEPATH = CDM_FIRST + 1
CDM_GETFOLDERPATH = CDM_FIRST + 2
CDM_GETFOLDERIDLIST = CDM_FIRST + 3
CDM_SETCONTROLTEXT = CDM_FIRST + 4
CDM_HIDECONTROL = CDM_FIRST + 5
CDM_SETDEFEXT = CDM_FIRST + 6
; CHOOSECOLOR flags
CC_RGBINIT = 001h
CC_FULLOPEN = 002h
CC_PREVENTFULLOPEN = 004h
CC_SHOWHELP = 008h
CC_ENABLEHOOK = 010h
CC_ENABLETEMPLATE = 020h
CC_ENABLETEMPLATEHANDLE = 040h
CC_SOLIDCOLOR = 080h
CC_ANYCOLOR = 100h
; FINDREPLACE flags
FR_DOWN = 00001h
FR_WHOLEWORD = 00002h
FR_MATCHCASE = 00004h
FR_FINDNEXT = 00008h
FR_REPLACE = 00010h
FR_REPLACEALL = 00020h
FR_DIALOGTERM = 00040h
FR_SHOWHELP = 00080h
FR_ENABLEHOOK = 00100h
FR_ENABLETEMPLATE = 00200h
FR_NOUPDOWN = 00400h
FR_NOMATCHCASE = 00800h
FR_NOWHOLEWORD = 01000h
FR_ENABLETEMPLATEHANDLE = 02000h
FR_HIDEUPDOWN = 04000h
FR_HIDEMATCHCASE = 08000h
FR_HIDEWHOLEWORD = 10000h
; CHOOSEFONT flags
CF_SCREENFONTS = 0000001h
CF_PRINTERFONTS = 0000002h
CF_BOTH = CF_SCREENFONTS or CF_PRINTERFONTS
CF_SHOWHELP = 0000004h
CF_ENABLEHOOK = 0000008h
CF_ENABLETEMPLATE = 0000010h
CF_ENABLETEMPLATEHANDLE = 0000020h
CF_INITTOLOGFONTSTRUCT = 0000040h
CF_USESTYLE = 0000080h
CF_EFFECTS = 0000100h
CF_APPLY = 0000200h
CF_ANSIONLY = 0000400h
CF_SCRIPTSONLY = CF_ANSIONLY
CF_NOVECTORFONTS = 0000800h
CF_NOOEMFONTS = CF_NOVECTORFONTS
CF_NOSIMULATIONS = 0001000h
CF_LIMITSIZE = 0002000h
CF_FIXEDPITCHONLY = 0004000h
CF_WYSIWYG = 0008000h
CF_FORCEFONTEXIST = 0010000h
CF_SCALABLEONLY = 0020000h
CF_TTONLY = 0040000h
CF_NOFACESEL = 0080000h
CF_NOSTYLESEL = 0100000h
CF_NOSIZESEL = 0200000h
CF_SELECTSCRIPT = 0400000h
CF_NOSCRIPTSEL = 0800000h
CF_NOVERTFONTS = 1000000h
; ChooseFont messages
WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1
WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101
WM_CHOOSEFONT_SETFLAGS = WM_USER + 102
; PRINTDLG flags
PD_ALLPAGES = 000000h
PD_SELECTION = 000001h
PD_PAGENUMS = 000002h
PD_NOSELECTION = 000004h
PD_NOPAGENUMS = 000008h
PD_COLLATE = 000010h
PD_PRINTTOFILE = 000020h
PD_PRINTSETUP = 000040h
PD_NOWARNING = 000080h
PD_RETURNDC = 000100h
PD_RETURNIC = 000200h
PD_RETURNDEFAULT = 000400h
PD_SHOWHELP = 000800h
PD_ENABLEPRINTHOOK = 001000h
PD_ENABLESETUPHOOK = 002000h
PD_ENABLEPRINTTEMPLATE = 004000h
PD_ENABLESETUPTEMPLATE = 008000h
PD_ENABLEPRINTTEMPLATEHANDLE = 010000h
PD_ENABLESETUPTEMPLATEHANDLE = 020000h
PD_USEDEVMODECOPIES = 040000h
PD_USEDEVMODECOPIESANDCOLLATE = 040000h
PD_DISABLEPRINTTOFILE = 080000h
PD_HIDEPRINTTOFILE = 100000h
PD_NONETWORKBUTTON = 200000h
; PAGESETUPDLG flags
PSD_DEFAULTMINMARGINS = 000000h
PSD_INWININIINTLMEASURE = 000000h
PSD_MINMARGINS = 000001h
PSD_MARGINS = 000002h
PSD_INTHOUSANDTHSOFINCHES = 000004h
PSD_INHUNDREDTHSOFMILLIMETERS = 000008h
PSD_DISABLEMARGINS = 000010h
PSD_DISABLEPRINTER = 000020h
PSD_NOWARNING = 000080h
PSD_DISABLEORIENTATION = 000100h
PSD_RETURNDEFAULT = 000400h
PSD_DISABLEPAPER = 000200h
PSD_SHOWHELP = 000800h
PSD_ENABLEPAGESETUPHOOK = 002000h
PSD_ENABLEPAGESETUPTEMPLATE = 008000h
PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 020000h
PSD_ENABLEPAGEPAINTHOOK = 040000h
PSD_DISABLEPAGEPAINTING = 080000h
PSD_NONETWORKBUTTON = 200000h
; PageSetupDlg messages
WM_PSD_PAGESETUPDLG = WM_USER
WM_PSD_FULLPAGERECT = WM_USER + 1
WM_PSD_MINMARGINRECT = WM_USER + 2
WM_PSD_MARGINRECT = WM_USER + 3
WM_PSD_GREEKTEXTRECT = WM_USER + 4
WM_PSD_ENVSTAMPRECT = WM_USER + 5
WM_PSD_YAFULLPAGERECT = WM_USER + 6
; Common dialog error codes
CDERR_DIALOGFAILURE = 0FFFFh
CDERR_GENERALCODES = 00000h
CDERR_STRUCTSIZE = 00001h
CDERR_INITIALIZATION = 00002h
CDERR_NOTEMPLATE = 00003h
CDERR_NOHINSTANCE = 00004h
CDERR_LOADSTRFAILURE = 00005h
CDERR_FINDRESFAILURE = 00006h
CDERR_LOADRESFAILURE = 00007h
CDERR_LOCKRESFAILURE = 00008h
CDERR_MEMALLOCFAILURE = 00009h
CDERR_MEMLOCKFAILURE = 0000Ah
CDERR_NOHOOK = 0000Bh
CDERR_REGISTERMSGFAIL = 0000Ch
PDERR_PRINTERCODES = 01000h
PDERR_SETUPFAILURE = 01001h
PDERR_PARSEFAILURE = 01002h
PDERR_RETDEFFAILURE = 01003h
PDERR_LOADDRVFAILURE = 01004h
PDERR_GETDEVMODEFAIL = 01005h
PDERR_INITFAILURE = 01006h
PDERR_NODEVICES = 01007h
PDERR_NODEFAULTPRN = 01008h
PDERR_DNDMMISMATCH = 01009h
PDERR_CREATEICFAILURE = 0100Ah
PDERR_PRINTERNOTFOUND = 0100Bh
PDERR_DEFAULTDIFFERENT = 0100Ch
CFERR_CHOOSEFONTCODES = 02000h
CFERR_NOFONTS = 02001h
CFERR_MAXLESSTHANMIN = 02002h
FNERR_FILENAMECODES = 03000h
FNERR_SUBCLASSFAILURE = 03001h
FNERR_INVALIDFILENAME = 03002h
FNERR_BUFFERTOOSMALL = 03003h
FRERR_FINDREPLACECODES = 04000h
FRERR_BUFFERLENGTHZERO = 04001h
CCERR_CHOOSECOLORCODES = 05000h

View File

@@ -0,0 +1,480 @@
; GDI32.DLL structures and constants
struct SIZE
cx dd ?
cy dd ?
ends
struct BITMAP
bmType dd ?
bmWidth dd ?
bmHeight dd ?
bmWidthBytes dd ?
bmPlanes dw ?
bmBitsPixel dw ?
bmBits dd ?
ends
struct BITMAPCOREHEADER
bcSize dd ?
bcWidth dw ?
bcHeight dw ?
bcPlanes dw ?
bcBitCount dw ?
ends
struct BITMAPINFOHEADER
biSize dd ?
biWidth dd ?
biHeight dd ?
biPlanes dw ?
biBitCount dw ?
biCompression dd ?
biSizeImage dd ?
biXPelsPerMeter dd ?
biYPelsPerMeter dd ?
biClrUsed dd ?
biClrImportant dd ?
ends
struct BITMAPFILEHEADER
bfType dw ?
bfSize dd ?
bfReserved1 dw ?
bfReserved2 dw ?
bfOffBits dd ?
ends
struct TEXTMETRIC
tmHeight dd ?
tmAscent dd ?
tmDescent dd ?
tmInternalLeading dd ?
tmExternalLeading dd ?
tmAveCharWidth dd ?
tmMaxCharWidth dd ?
tmWeight dd ?
tmOverhang dd ?
tmDigitizedAspectX dd ?
tmDigitizedAspectY dd ?
tmFirstChar TCHAR ?
tmLastChar TCHAR ?
tmDefaultChar TCHAR ?
tmBreakChar TCHAR ?
tmItalic db ?
tmUnderlined db ?
tmStruckOut db ?
tmPitchAndFamily db ?
tmCharSet db ?
ends
struct LOGBRUSH
lbStyle dd ?
lbColor dd ?
lbHatch dd ?
ends
struct LOGPEN
lopnStyle dd ?
lopnWidth POINT
lopnColor dd ?
ends
struct EXTLOGPEN
elpPenStyle dd ?
elpWidth dd ?
elpBrushStyle dd ?
elpColor dd ?
elpHatch dd ?
elpNumEntries dd ?
elpStyleEntry dd ?
ends
struct LOGFONT
lfHeight dd ?
lfWidth dd ?
lfEscapement dd ?
lfOrientation dd ?
lfWeight dd ?
lfItalic db ?
lfUnderline db ?
lfStrikeOut db ?
lfCharSet db ?
lfOutPrecision db ?
lfClipPrecision db ?
lfQuality db ?
lfPitchAndFamily db ?
lfFaceName TCHAR 32 dup (?)
ends
struct ENUMLOGFONT
elfLogFont LOGFONT
elfFullName TCHAR 64 dup (?)
elfStyle TCHAR 32 dup (?)
ends
struct ENUMLOGFONTEX
elfLogFont LOGFONT
elfFullName TCHAR 64 dup (?)
elfStyle TCHAR 32 dup (?)
elfScript TCHAR 32 dup (?)
ends
struct PIXELFORMATDESCRIPTOR
nSize dw ?
nVersion dw ?
dwFlags dd ?
iPixelType db ?
cColorBits db ?
cRedBits db ?
cRedShift db ?
cGreenBits db ?
cGreenShift db ?
cBlueBits db ?
cBlueShift db ?
cAlphaBits db ?
cAlphaShift db ?
cAccumBits db ?
cAccumRedBits db ?
cAccumGreenBits db ?
cAccumBlueBits db ?
cAccumAlphaBits db ?
cDepthBits db ?
cStencilBits db ?
cAuxBuffers db ?
iLayerType db ?
bReserved db ?
dwLayerMask dd ?
dwVisibleMask dd ?
dwDamageMask dd ?
ends
struct TRIVERTEX
x dd ?
y dd ?
Red dw ?
Green dw ?
Blue dw ?
Alpha dw ?
ends
; General constants
GDI_ERROR = 0FFFFFFFFh
HGDI_ERROR = 0FFFFFFFFh
; Binary raster operations
R2_BLACK = 1
R2_NOTMERGEPEN = 2
R2_MASKNOTPEN = 3
R2_NOTCOPYPEN = 4
R2_MASKPENNOT = 5
R2_NOT = 6
R2_XORPEN = 7
R2_NOTMASKPEN = 8
R2_MASKPEN = 9
R2_NOTXORPEN = 10
R2_NOP = 11
R2_MERGENOTPEN = 12
R2_COPYPEN = 13
R2_MERGEPENNOT = 14
R2_MERGEPEN = 15
R2_WHITE = 16
; Raster operations
SRCCOPY = 00CC0020h
SRCPAINT = 00EE0086h
SRCAND = 008800C6h
SRCINVERT = 00660046h
SRCERASE = 00440328h
NOTSRCCOPY = 00330008h
NOTSRCERASE = 001100A6h
MERGECOPY = 00C000CAh
MERGEPAINT = 00BB0226h
PATCOPY = 00F00021h
PATPAINT = 00FB0A09h
PATINVERT = 005A0049h
DSTINVERT = 00550009h
BLACKNESS = 00000042h
WHITENESS = 00FF0062h
; Region flags
ERROR = 0
NULLREGION = 1
SIMPLEREGION = 2
COMPLEXREGION = 3
; CombineRgn styles
RGN_AND = 1
RGN_OR = 2
RGN_XOR = 3
RGN_DIFF = 4
RGN_COPY = 5
; StretchBlt modes
BLACKONWHITE = 1
WHITEONBLACK = 2
COLORONCOLOR = 3
HALFTONE = 4
STRETCH_ANDSCANS = BLACKONWHITE
STRETCH_ORSCANS = WHITEONBLACK
STRETCH_DELETESCANS = COLORONCOLOR
STRETCH_HALFTONE = HALFTONE
; PolyFill modes
ALTERNATE = 1
WINDING = 2
; Background modes
TRANSPARENT = 1
OPAQUE = 2
; Point types
PT_CLOSEFIGURE = 1
PT_LINETO = 2
PT_BEZIERTO = 4
PT_MOVETO = 6
; Mapping modes
MM_TEXT = 1
MM_LOMETRIC = 2
MM_HIMETRIC = 3
MM_LOENGLISH = 4
MM_HIENGLISH = 5
MM_TWIPS = 6
MM_ISOTROPIC = 7
MM_ANISOTROPIC = 8
; Coordinate modes
ABSOLUTE = 1
RELATIVE = 2
; Stock logical objects
WHITE_BRUSH = 0
LTGRAY_BRUSH = 1
GRAY_BRUSH = 2
DKGRAY_BRUSH = 3
BLACK_BRUSH = 4
NULL_BRUSH = 5
HOLLOW_BRUSH = NULL_BRUSH
WHITE_PEN = 6
BLACK_PEN = 7
NULL_PEN = 8
OEM_FIXED_FONT = 10
ANSI_FIXED_FONT = 11
ANSI_VAR_FONT = 12
SYSTEM_FONT = 13
DEVICE_DEFAULT_FONT = 14
DEFAULT_PALETTE = 15
SYSTEM_FIXED_FONT = 16
DEFAULT_GUI_FONT = 17
; Brush styles
BS_SOLID = 0
BS_NULL = 1
BS_HOLLOW = BS_NULL
BS_HATCHED = 2
BS_PATTERN = 3
BS_INDEXED = 4
BS_DIBPATTERN = 5
BS_DIBPATTERNPT = 6
BS_PATTERN8X8 = 7
BS_DIBPATTERN8X8 = 8
BS_MONOPATTERN = 9
; Hatch styles
HS_HORIZONTAL = 0
HS_VERTICAL = 1
HS_FDIAGONAL = 2
HS_BDIAGONAL = 3
HS_CROSS = 4
HS_DIAGCROSS = 5
; Pen styles
PS_SOLID = 0
PS_DASH = 1
PS_DOT = 2
PS_DASHDOT = 3
PS_DASHDOTDOT = 4
PS_NULL = 5
PS_INSIDEFRAME = 6
PS_USERSTYLE = 7
PS_ALTERNATE = 8
PS_ENDCAP_ROUND = 0
PS_ENDCAP_SQUARE = 100h
PS_ENDCAP_FLAT = 200h
PS_JOIN_ROUND = 0
PS_JOIN_BEVEL = 1000h
PS_JOIN_MITER = 2000h
PS_COSMETIC = 0
PS_GEOMETRIC = 010000h
; Arc directions
AD_COUNTERCLOCKWISE = 1
AD_CLOCKWISE = 2
; Text alignment options
TA_NOUPDATECP = 0
TA_UPDATECP = 1
TA_LEFT = 0
TA_RIGHT = 2
TA_CENTER = 6
TA_TOP = 0
TA_BOTTOM = 8
TA_BASELINE = 24
TA_RTLREADING = 100h
VTA_BASELINE = TA_BASELINE
VTA_LEFT = TA_BOTTOM
VTA_RIGHT = TA_TOP
VTA_CENTER = TA_CENTER
VTA_BOTTOM = TA_RIGHT
VTA_TOP = TA_LEFT
; ExtTextOut options
ETO_OPAQUE = 0002h
ETO_CLIPPED = 0004h
ETO_GLYPH_INDEX = 0010h
ETO_RTLREADING = 0080h
ETO_IGNORELANGUAGE = 1000h
; Bitmap compression types
BI_RGB = 0
BI_RLE8 = 1
BI_RLE4 = 2
BI_BITFIELDS = 3
; tmPitchAndFamily flags
TMPF_FIXED_PITCH = 1
TMPF_VECTOR = 2
TMPF_TRUETYPE = 4
TMPF_DEVICE = 8
; Font output precision values
OUT_DEFAULT_PRECIS = 0
OUT_STRING_PRECIS = 1
OUT_CHARACTER_PRECIS = 2
OUT_STROKE_PRECIS = 3
OUT_TT_PRECIS = 4
OUT_DEVICE_PRECIS = 5
OUT_RASTER_PRECIS = 6
OUT_TT_ONLY_PRECIS = 7
OUT_OUTLINE_PRECIS = 8
OUT_SCREEN_OUTLINE_PRECIS = 9
; Font clipping precision values
CLIP_DEFAULT_PRECIS = 0
CLIP_CHARACTER_PRECIS = 1
CLIP_STROKE_PRECIS = 2
CLIP_LH_ANGLES = 10h
CLIP_TT_ALWAYS = 20h
CLIP_EMBEDDED = 80h
; Font output quality values
DEFAULT_QUALITY = 0
DRAFT_QUALITY = 1
PROOF_QUALITY = 2
NONANTIALIASED_QUALITY = 3
ANTIALIASED_QUALITY = 4
; Font pitch values
DEFAULT_PITCH = 0
FIXED_PITCH = 1
VARIABLE_PITCH = 2
MONO_FONT = 8
; Font families
FF_DONTCARE = 00h
FF_ROMAN = 10h
FF_SWISS = 20h
FF_MODERN = 30h
FF_SCRIPT = 40h
FF_DECORATIVE = 50h
; Font weights
FW_DONTCARE = 0
FW_THIN = 100
FW_EXTRALIGHT = 200
FW_LIGHT = 300
FW_NORMAL = 400
FW_MEDIUM = 500
FW_SEMIBOLD = 600
FW_BOLD = 700
FW_EXTRABOLD = 800
FW_HEAVY = 900
FW_ULTRALIGHT = FW_EXTRALIGHT
FW_REGULAR = FW_NORMAL
FW_DEMIBOLD = FW_SEMIBOLD
FW_ULTRABOLD = FW_EXTRABOLD
FW_BLACK = FW_HEAVY
; Character set values
ANSI_CHARSET = 0
DEFAULT_CHARSET = 1
SYMBOL_CHARSET = 2
SHIFTJIS_CHARSET = 128
HANGEUL_CHARSET = 129
GB2312_CHARSET = 134
CHINESEBIG5_CHARSET = 136
OEM_CHARSET = 255
JOHAB_CHARSET = 130
HEBREW_CHARSET = 177
ARABIC_CHARSET = 178
GREEK_CHARSET = 161
TURKISH_CHARSET = 162
VIETNAMESE_CHARSET = 163
THAI_CHARSET = 222
EASTEUROPE_CHARSET = 238
RUSSIAN_CHARSET = 204
MAC_CHARSET = 77
BALTIC_CHARSET = 186
; Pixel format constants
PFD_TYPE_RGBA = 0
PFD_TYPE_COLORINDEX = 1
PFD_MAIN_PLANE = 0
PFD_OVERLAY_PLANE = 1
PFD_UNDERLAY_PLANE = -1
PFD_DOUBLEBUFFER = 1
PFD_STEREO = 2
PFD_DRAW_TO_WINDOW = 4
PFD_DRAW_TO_BITMAP = 8
PFD_SUPPORT_GDI = 10h
PFD_SUPPORT_OPENGL = 20h
PFD_GENERIC_FORMAT = 40h
PFD_NEED_PALETTE = 80h
PFD_NEED_SYSTEM_PALETTE = 100h
PFD_SWAP_EXCHANGE = 200h
PFD_SWAP_COPY = 400h
PFD_SWAP_LAYER_BUFFERS = 800h
PFD_GENERIC_ACCELERATED = 1000h
PFD_DEPTH_DONTCARE = 20000000h
PFD_DOUBLEBUFFER_DONTCARE = 40000000h
PFD_STEREO_DONTCARE = 80000000h

View File

@@ -0,0 +1,480 @@
; GDI32.DLL structures and constants
struct SIZE
cx dd ?
cy dd ?
ends
struct BITMAP
bmType dd ?
bmWidth dd ?
bmHeight dd ?
bmWidthBytes dd ?
bmPlanes dw ?
bmBitsPixel dw ?,?,?
bmBits dq ?
ends
struct BITMAPCOREHEADER
bcSize dd ?
bcWidth dw ?
bcHeight dw ?
bcPlanes dw ?
bcBitCount dw ?
ends
struct BITMAPINFOHEADER
biSize dd ?
biWidth dd ?
biHeight dd ?
biPlanes dw ?
biBitCount dw ?
biCompression dd ?
biSizeImage dd ?
biXPelsPerMeter dd ?
biYPelsPerMeter dd ?
biClrUsed dd ?
biClrImportant dd ?
ends
struct BITMAPFILEHEADER
bfType dw ?
bfSize dd ?
bfReserved1 dw ?
bfReserved2 dw ?
bfOffBits dd ?
ends
struct TEXTMETRIC
tmHeight dd ?
tmAscent dd ?
tmDescent dd ?
tmInternalLeading dd ?
tmExternalLeading dd ?
tmAveCharWidth dd ?
tmMaxCharWidth dd ?
tmWeight dd ?
tmOverhang dd ?
tmDigitizedAspectX dd ?
tmDigitizedAspectY dd ?
tmFirstChar TCHAR ?
tmLastChar TCHAR ?
tmDefaultChar TCHAR ?
tmBreakChar TCHAR ?
tmItalic db ?
tmUnderlined db ?
tmStruckOut db ?
tmPitchAndFamily db ?
tmCharSet db ?
ends
struct LOGBRUSH
lbStyle dd ?
lbColor dd ?
lbHatch dd ?
ends
struct LOGPEN
lopnStyle dd ?
lopnWidth POINT
lopnColor dd ?
ends
struct EXTLOGPEN
elpPenStyle dd ?
elpWidth dd ?
elpBrushStyle dd ?
elpColor dd ?
elpHatch dd ?
elpNumEntries dd ?
elpStyleEntry dd ?
ends
struct LOGFONT
lfHeight dd ?
lfWidth dd ?
lfEscapement dd ?
lfOrientation dd ?
lfWeight dd ?
lfItalic db ?
lfUnderline db ?
lfStrikeOut db ?
lfCharSet db ?
lfOutPrecision db ?
lfClipPrecision db ?
lfQuality db ?
lfPitchAndFamily db ?
lfFaceName TCHAR 32 dup (?)
ends
struct ENUMLOGFONT
elfLogFont LOGFONT
elfFullName TCHAR 64 dup (?)
elfStyle TCHAR 32 dup (?)
ends
struct ENUMLOGFONTEX
elfLogFont LOGFONT
elfFullName TCHAR 64 dup (?)
elfStyle TCHAR 32 dup (?)
elfScript TCHAR 32 dup (?)
ends
struct PIXELFORMATDESCRIPTOR
nSize dw ?
nVersion dw ?
dwFlags dd ?
iPixelType db ?
cColorBits db ?
cRedBits db ?
cRedShift db ?
cGreenBits db ?
cGreenShift db ?
cBlueBits db ?
cBlueShift db ?
cAlphaBits db ?
cAlphaShift db ?
cAccumBits db ?
cAccumRedBits db ?
cAccumGreenBits db ?
cAccumBlueBits db ?
cAccumAlphaBits db ?
cDepthBits db ?
cStencilBits db ?
cAuxBuffers db ?
iLayerType db ?
bReserved db ?
dwLayerMask dd ?
dwVisibleMask dd ?
dwDamageMask dd ?
ends
struct TRIVERTEX
x dd ?
y dd ?
Red dw ?
Green dw ?
Blue dw ?
Alpha dw ?
ends
; General constants
GDI_ERROR = 0FFFFFFFFh
HGDI_ERROR = 0FFFFFFFFh
; Binary raster operations
R2_BLACK = 1
R2_NOTMERGEPEN = 2
R2_MASKNOTPEN = 3
R2_NOTCOPYPEN = 4
R2_MASKPENNOT = 5
R2_NOT = 6
R2_XORPEN = 7
R2_NOTMASKPEN = 8
R2_MASKPEN = 9
R2_NOTXORPEN = 10
R2_NOP = 11
R2_MERGENOTPEN = 12
R2_COPYPEN = 13
R2_MERGEPENNOT = 14
R2_MERGEPEN = 15
R2_WHITE = 16
; Raster operations
SRCCOPY = 00CC0020h
SRCPAINT = 00EE0086h
SRCAND = 008800C6h
SRCINVERT = 00660046h
SRCERASE = 00440328h
NOTSRCCOPY = 00330008h
NOTSRCERASE = 001100A6h
MERGECOPY = 00C000CAh
MERGEPAINT = 00BB0226h
PATCOPY = 00F00021h
PATPAINT = 00FB0A09h
PATINVERT = 005A0049h
DSTINVERT = 00550009h
BLACKNESS = 00000042h
WHITENESS = 00FF0062h
; Region flags
ERROR = 0
NULLREGION = 1
SIMPLEREGION = 2
COMPLEXREGION = 3
; CombineRgn styles
RGN_AND = 1
RGN_OR = 2
RGN_XOR = 3
RGN_DIFF = 4
RGN_COPY = 5
; StretchBlt modes
BLACKONWHITE = 1
WHITEONBLACK = 2
COLORONCOLOR = 3
HALFTONE = 4
STRETCH_ANDSCANS = BLACKONWHITE
STRETCH_ORSCANS = WHITEONBLACK
STRETCH_DELETESCANS = COLORONCOLOR
STRETCH_HALFTONE = HALFTONE
; PolyFill modes
ALTERNATE = 1
WINDING = 2
; Background modes
TRANSPARENT = 1
OPAQUE = 2
; Point types
PT_CLOSEFIGURE = 1
PT_LINETO = 2
PT_BEZIERTO = 4
PT_MOVETO = 6
; Mapping modes
MM_TEXT = 1
MM_LOMETRIC = 2
MM_HIMETRIC = 3
MM_LOENGLISH = 4
MM_HIENGLISH = 5
MM_TWIPS = 6
MM_ISOTROPIC = 7
MM_ANISOTROPIC = 8
; Coordinate modes
ABSOLUTE = 1
RELATIVE = 2
; Stock logical objects
WHITE_BRUSH = 0
LTGRAY_BRUSH = 1
GRAY_BRUSH = 2
DKGRAY_BRUSH = 3
BLACK_BRUSH = 4
NULL_BRUSH = 5
HOLLOW_BRUSH = NULL_BRUSH
WHITE_PEN = 6
BLACK_PEN = 7
NULL_PEN = 8
OEM_FIXED_FONT = 10
ANSI_FIXED_FONT = 11
ANSI_VAR_FONT = 12
SYSTEM_FONT = 13
DEVICE_DEFAULT_FONT = 14
DEFAULT_PALETTE = 15
SYSTEM_FIXED_FONT = 16
DEFAULT_GUI_FONT = 17
; Brush styles
BS_SOLID = 0
BS_NULL = 1
BS_HOLLOW = BS_NULL
BS_HATCHED = 2
BS_PATTERN = 3
BS_INDEXED = 4
BS_DIBPATTERN = 5
BS_DIBPATTERNPT = 6
BS_PATTERN8X8 = 7
BS_DIBPATTERN8X8 = 8
BS_MONOPATTERN = 9
; Hatch styles
HS_HORIZONTAL = 0
HS_VERTICAL = 1
HS_FDIAGONAL = 2
HS_BDIAGONAL = 3
HS_CROSS = 4
HS_DIAGCROSS = 5
; Pen styles
PS_SOLID = 0
PS_DASH = 1
PS_DOT = 2
PS_DASHDOT = 3
PS_DASHDOTDOT = 4
PS_NULL = 5
PS_INSIDEFRAME = 6
PS_USERSTYLE = 7
PS_ALTERNATE = 8
PS_ENDCAP_ROUND = 0
PS_ENDCAP_SQUARE = 100h
PS_ENDCAP_FLAT = 200h
PS_JOIN_ROUND = 0
PS_JOIN_BEVEL = 1000h
PS_JOIN_MITER = 2000h
PS_COSMETIC = 0
PS_GEOMETRIC = 010000h
; Arc directions
AD_COUNTERCLOCKWISE = 1
AD_CLOCKWISE = 2
; Text alignment options
TA_NOUPDATECP = 0
TA_UPDATECP = 1
TA_LEFT = 0
TA_RIGHT = 2
TA_CENTER = 6
TA_TOP = 0
TA_BOTTOM = 8
TA_BASELINE = 24
TA_RTLREADING = 100h
VTA_BASELINE = TA_BASELINE
VTA_LEFT = TA_BOTTOM
VTA_RIGHT = TA_TOP
VTA_CENTER = TA_CENTER
VTA_BOTTOM = TA_RIGHT
VTA_TOP = TA_LEFT
; ExtTextOut options
ETO_OPAQUE = 0002h
ETO_CLIPPED = 0004h
ETO_GLYPH_INDEX = 0010h
ETO_RTLREADING = 0080h
ETO_IGNORELANGUAGE = 1000h
; Bitmap compression types
BI_RGB = 0
BI_RLE8 = 1
BI_RLE4 = 2
BI_BITFIELDS = 3
; tmPitchAndFamily flags
TMPF_FIXED_PITCH = 1
TMPF_VECTOR = 2
TMPF_TRUETYPE = 4
TMPF_DEVICE = 8
; Font output precision values
OUT_DEFAULT_PRECIS = 0
OUT_STRING_PRECIS = 1
OUT_CHARACTER_PRECIS = 2
OUT_STROKE_PRECIS = 3
OUT_TT_PRECIS = 4
OUT_DEVICE_PRECIS = 5
OUT_RASTER_PRECIS = 6
OUT_TT_ONLY_PRECIS = 7
OUT_OUTLINE_PRECIS = 8
OUT_SCREEN_OUTLINE_PRECIS = 9
; Font clipping precision values
CLIP_DEFAULT_PRECIS = 0
CLIP_CHARACTER_PRECIS = 1
CLIP_STROKE_PRECIS = 2
CLIP_LH_ANGLES = 10h
CLIP_TT_ALWAYS = 20h
CLIP_EMBEDDED = 80h
; Font output quality values
DEFAULT_QUALITY = 0
DRAFT_QUALITY = 1
PROOF_QUALITY = 2
NONANTIALIASED_QUALITY = 3
ANTIALIASED_QUALITY = 4
; Font pitch values
DEFAULT_PITCH = 0
FIXED_PITCH = 1
VARIABLE_PITCH = 2
MONO_FONT = 8
; Font families
FF_DONTCARE = 00h
FF_ROMAN = 10h
FF_SWISS = 20h
FF_MODERN = 30h
FF_SCRIPT = 40h
FF_DECORATIVE = 50h
; Font weights
FW_DONTCARE = 0
FW_THIN = 100
FW_EXTRALIGHT = 200
FW_LIGHT = 300
FW_NORMAL = 400
FW_MEDIUM = 500
FW_SEMIBOLD = 600
FW_BOLD = 700
FW_EXTRABOLD = 800
FW_HEAVY = 900
FW_ULTRALIGHT = FW_EXTRALIGHT
FW_REGULAR = FW_NORMAL
FW_DEMIBOLD = FW_SEMIBOLD
FW_ULTRABOLD = FW_EXTRABOLD
FW_BLACK = FW_HEAVY
; Character set values
ANSI_CHARSET = 0
DEFAULT_CHARSET = 1
SYMBOL_CHARSET = 2
SHIFTJIS_CHARSET = 128
HANGEUL_CHARSET = 129
GB2312_CHARSET = 134
CHINESEBIG5_CHARSET = 136
OEM_CHARSET = 255
JOHAB_CHARSET = 130
HEBREW_CHARSET = 177
ARABIC_CHARSET = 178
GREEK_CHARSET = 161
TURKISH_CHARSET = 162
VIETNAMESE_CHARSET = 163
THAI_CHARSET = 222
EASTEUROPE_CHARSET = 238
RUSSIAN_CHARSET = 204
MAC_CHARSET = 77
BALTIC_CHARSET = 186
; Pixel format constants
PFD_TYPE_RGBA = 0
PFD_TYPE_COLORINDEX = 1
PFD_MAIN_PLANE = 0
PFD_OVERLAY_PLANE = 1
PFD_UNDERLAY_PLANE = -1
PFD_DOUBLEBUFFER = 1
PFD_STEREO = 2
PFD_DRAW_TO_WINDOW = 4
PFD_DRAW_TO_BITMAP = 8
PFD_SUPPORT_GDI = 10h
PFD_SUPPORT_OPENGL = 20h
PFD_GENERIC_FORMAT = 40h
PFD_NEED_PALETTE = 80h
PFD_NEED_SYSTEM_PALETTE = 100h
PFD_SWAP_EXCHANGE = 200h
PFD_SWAP_COPY = 400h
PFD_SWAP_LAYER_BUFFERS = 800h
PFD_GENERIC_ACCELERATED = 1000h
PFD_DEPTH_DONTCARE = 20000000h
PFD_DOUBLEBUFFER_DONTCARE = 40000000h
PFD_STEREO_DONTCARE = 80000000h

View File

@@ -0,0 +1,812 @@
; KERNEL32.DLL structures and constants
struct SYSTEM_INFO
wProcessorArchitecture dw ?
wReserved dw ?
dwPageSize dd ?
lpMinimumApplicationAddress dd ?
lpMaximumApplicationAddress dd ?
dwActiveProcessorMask dd ?
dwNumberOfProcessors dd ?
dwProcessorType dd ?
dwAllocationGranularity dd ?
wProcessorLevel dw ?
wProcessorRevision dw ?
ends
struct OSVERSIONINFO
dwOSVersionInfoSize dd ?
dwMajorVersion dd ?
dwMinorVersion dd ?
dwBuildNumber dd ?
dwPlatformId dd ?
szCSDVersion TCHAR 128 dup (?)
ends
struct OSVERSIONINFOA
dwOSVersionInfoSize dd ?
dwMajorVersion dd ?
dwMinorVersion dd ?
dwBuildNumber dd ?
dwPlatformId dd ?
szCSDVersion db 128 dup (?)
ends
struct OSVERSIONINFOW
dwOSVersionInfoSize dd ?
dwMajorVersion dd ?
dwMinorVersion dd ?
dwBuildNumber dd ?
dwPlatformId dd ?
szCSDVersion du 128 dup (?)
ends
struct MEMORYSTATUS
dwLength dd ?
dwMemoryLoad dd ?
dwTotalPhys dd ?
dwAvailPhys dd ?
dwTotalPageFile dd ?
dwAvailPageFile dd ?
dwTotalVirtual dd ?
dwAvailVirtual dd ?
ends
struct STARTUPINFO
cb dd ?
lpReserved dd ?
lpDesktop dd ?
lpTitle dd ?
dwX dd ?
dwY dd ?
dwXSize dd ?
dwYSize dd ?
dwXCountChars dd ?
dwYCountChars dd ?
dwFillAttribute dd ?
dwFlags dd ?
wShowWindow dw ?
cbReserved2 dw ?
lpReserved2 dd ?
hStdInput dd ?
hStdOutput dd ?
hStdError dd ?
ends
struct PROCESS_INFORMATION
hProcess dd ?
hThread dd ?
dwProcessId dd ?
dwThreadId dd ?
ends
struct FILETIME
dwLowDateTime dd ?
dwHighDateTime dd ?
ends
struct SYSTEMTIME
wYear dw ?
wMonth dw ?
wDayOfWeek dw ?
wDay dw ?
wHour dw ?
wMinute dw ?
wSecond dw ?
wMilliseconds dw ?
ends
struct BY_HANDLE_FILE_INFORMATION
dwFileAttributes dd ?
ftCreationTime FILETIME
ftLastAccessTime FILETIME
ftLastWriteTime FILETIME
dwVolumeSerialNumber dd ?
nFileSizeHigh dd ?
nFileSizeLow dd ?
nNumberOfLinks dd ?
nFileIndexHigh dd ?
nFileIndexLow dd ?
ends
struct WIN32_FIND_DATA
dwFileAttributes dd ?
ftCreationTime FILETIME
ftLastAccessTime FILETIME
ftLastWriteTime FILETIME
nFileSizeHigh dd ?
nFileSizeLow dd ?
dwReserved0 dd ?
dwReserved1 dd ?
cFileName TCHAR MAX_PATH dup (?)
cAlternateFileName TCHAR 14 dup (?)
ends
struct WIN32_FIND_DATAA
dwFileAttributes dd ?
ftCreationTime FILETIME
ftLastAccessTime FILETIME
ftLastWriteTime FILETIME
nFileSizeHigh dd ?
nFileSizeLow dd ?
dwReserved0 dd ?
dwReserved1 dd ?
cFileName db MAX_PATH dup (?)
cAlternateFileName db 14 dup (?)
ends
struct WIN32_FIND_DATAW
dwFileAttributes dd ?
ftCreationTime FILETIME
ftLastAccessTime FILETIME
ftLastWriteTime FILETIME
nFileSizeHigh dd ?
nFileSizeLow dd ?
dwReserved0 dd ?
dwReserved1 dd ?
cFileName du MAX_PATH dup (?)
cAlternateFileName du 14 dup (?)
ends
; General constants
NULL = 0
TRUE = 1
FALSE = 0
; Maximum path length in characters
MAX_PATH = 260
; Access rights
DELETE_RIGHT = 00010000h
READ_CONTROL = 00020000h
WRITE_DAC = 00040000h
WRITE_OWNER = 00080000h
SYNCHRONIZE = 00100000h
STANDARD_RIGHTS_READ = READ_CONTROL
STANDARD_RIGHTS_WRITE = READ_CONTROL
STANDARD_RIGHTS_EXECUTE = READ_CONTROL
STANDARD_RIGHTS_REQUIRED = 000F0000h
STANDARD_RIGHTS_ALL = 001F0000h
SPECIFIC_RIGHTS_ALL = 0000FFFFh
ACCESS_SYSTEM_SECURITY = 01000000h
MAXIMUM_ALLOWED = 02000000h
GENERIC_READ = 80000000h
GENERIC_WRITE = 40000000h
GENERIC_EXECUTE = 20000000h
GENERIC_ALL = 10000000h
PROCESS_TERMINATE = 00000001h
PROCESS_CREATE_THREAD = 00000002h
PROCESS_VM_OPERATION = 00000008h
PROCESS_VM_READ = 00000010h
PROCESS_VM_WRITE = 00000020h
PROCESS_DUP_HANDLE = 00000040h
PROCESS_CREATE_PROCESS = 00000080h
PROCESS_SET_QUOTA = 00000100h
PROCESS_SET_INFORMATION = 00000200h
PROCESS_QUERY_INFORMATION = 00000400h
PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0FFFh
FILE_SHARE_READ = 00000001h
FILE_SHARE_WRITE = 00000002h
FILE_SHARE_DELETE = 00000004h
; CreateFile actions
CREATE_NEW = 1
CREATE_ALWAYS = 2
OPEN_EXISTING = 3
OPEN_ALWAYS = 4
TRUNCATE_EXISTING = 5
; OpenFile modes
OF_READ = 0000h
OF_WRITE = 0001h
OF_READWRITE = 0002h
OF_SHARE_COMPAT = 0000h
OF_SHARE_EXCLUSIVE = 0010h
OF_SHARE_DENY_WRITE = 0020h
OF_SHARE_DENY_READ = 0030h
OF_SHARE_DENY_NONE = 0040h
OF_PARSE = 0100h
OF_DELETE = 0200h
OF_VERIFY = 0400h
OF_CANCEL = 0800h
OF_CREATE = 1000h
OF_PROMPT = 2000h
OF_EXIST = 4000h
OF_REOPEN = 8000h
; SetFilePointer methods
FILE_BEGIN = 0
FILE_CURRENT = 1
FILE_END = 2
; File attributes
FILE_ATTRIBUTE_READONLY = 001h
FILE_ATTRIBUTE_HIDDEN = 002h
FILE_ATTRIBUTE_SYSTEM = 004h
FILE_ATTRIBUTE_DIRECTORY = 010h
FILE_ATTRIBUTE_ARCHIVE = 020h
FILE_ATTRIBUTE_NORMAL = 080h
FILE_ATTRIBUTE_TEMPORARY = 100h
FILE_ATTRIBUTE_COMPRESSED = 800h
; File flags
FILE_FLAG_WRITE_THROUGH = 80000000h
FILE_FLAG_OVERLAPPED = 40000000h
FILE_FLAG_NO_BUFFERING = 20000000h
FILE_FLAG_RANDOM_ACCESS = 10000000h
FILE_FLAG_SEQUENTIAL_SCAN = 08000000h
FILE_FLAG_DELETE_ON_CLOSE = 04000000h
FILE_FLAG_BACKUP_SEMANTICS = 02000000h
FILE_FLAG_POSIX_SEMANTICS = 01000000h
; Notify filters
FILE_NOTIFY_CHANGE_FILE_NAME = 001h
FILE_NOTIFY_CHANGE_DIR_NAME = 002h
FILE_NOTIFY_CHANGE_ATTRIBUTES = 004h
FILE_NOTIFY_CHANGE_SIZE = 008h
FILE_NOTIFY_CHANGE_LAST_WRITE = 010h
FILE_NOTIFY_CHANGE_SECURITY = 100h
; File types
FILE_TYPE_UNKNOWN = 0
FILE_TYPE_DISK = 1
FILE_TYPE_CHAR = 2
FILE_TYPE_PIPE = 3
FILE_TYPE_REMOTE = 8000h
; LockFileEx flags
LOCKFILE_FAIL_IMMEDIATELY = 1
LOCKFILE_EXCLUSIVE_LOCK = 2
; MoveFileEx flags
MOVEFILE_REPLACE_EXISTING = 1
MOVEFILE_COPY_ALLOWED = 2
MOVEFILE_DELAY_UNTIL_REBOOT = 4
MOVEFILE_WRITE_THROUGH = 8
; FindFirstFileEx flags
FIND_FIRST_EX_CASE_SENSITIVE = 1
; Device handles
INVALID_HANDLE_VALUE = -1
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE = -12
; DuplicateHandle options
DUPLICATE_CLOSE_SOURCE = 1
DUPLICATE_SAME_ACCESS = 2
; File mapping acccess rights
SECTION_QUERY = 01h
SECTION_MAP_WRITE = 02h
SECTION_MAP_READ = 04h
SECTION_MAP_EXECUTE = 08h
SECTION_EXTEND_SIZE = 10h
SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SECTION_QUERY or SECTION_MAP_WRITE or SECTION_MAP_READ or SECTION_MAP_EXECUTE or SECTION_EXTEND_SIZE
FILE_MAP_COPY = SECTION_QUERY
FILE_MAP_WRITE = SECTION_MAP_WRITE
FILE_MAP_READ = SECTION_MAP_READ
FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS
; File system flags
FILE_CASE_SENSITIVE_SEARCH = 0001h
FILE_CASE_PRESERVED_NAMES = 0002h
FILE_UNICODE_ON_DISK = 0004h
FILE_PERSISTENT_ACLS = 0008h
FILE_FILE_COMPRESSION = 0010h
FILE_VOLUME_IS_COMPRESSED = 8000h
FS_CASE_IS_PRESERVED = FILE_CASE_PRESERVED_NAMES
FS_CASE_SENSITIVE = FILE_CASE_SENSITIVE_SEARCH
FS_UNICODE_STORED_ON_DISK = FILE_UNICODE_ON_DISK
FS_PERSISTENT_ACLS = FILE_PERSISTENT_ACLS
; Drive types
DRIVE_UNKNOWN = 0
DRIVE_NO_ROOT_DIR = 1
DRIVE_REMOVABLE = 2
DRIVE_FIXED = 3
DRIVE_REMOTE = 4
DRIVE_CDROM = 5
DRIVE_RAMDISK = 6
; Pipe modes
PIPE_ACCESS_INBOUND = 1
PIPE_ACCESS_OUTBOUND = 2
PIPE_ACCESS_DUPLEX = 3
PIPE_CLIENT_END = 0
PIPE_SERVER_END = 1
PIPE_WAIT = 0
PIPE_NOWAIT = 1
PIPE_READMODE_BYTE = 0
PIPE_READMODE_MESSAGE = 2
PIPE_TYPE_BYTE = 0
PIPE_TYPE_MESSAGE = 4
PIPE_UNLIMITED_INSTANCES = 255
; Global memory flags
GMEM_FIXED = 0000h
GMEM_MOVEABLE = 0002h
GMEM_NOCOMPACT = 0010h
GMEM_NODISCARD = 0020h
GMEM_ZEROINIT = 0040h
GMEM_MODIFY = 0080h
GMEM_DISCARDABLE = 0100h
GMEM_NOT_BANKED = 1000h
GMEM_SHARE = 2000h
GMEM_DDESHARE = 2000h
GMEM_NOTIFY = 4000h
GMEM_LOWER = GMEM_NOT_BANKED
GMEM_VALID_FLAGS = 7F72h
GMEM_INVALID_HANDLE = 8000h
GMEM_DISCARDED = 4000h
GMEM_LOCKCOUNT = 0FFh
GHND = GMEM_MOVEABLE + GMEM_ZEROINIT
GPTR = GMEM_FIXED + GMEM_ZEROINIT
; Local memory flags
LMEM_FIXED = 0000h
LMEM_MOVEABLE = 0002h
LMEM_NOCOMPACT = 0010h
LMEM_NODISCARD = 0020h
LMEM_ZEROINIT = 0040h
LMEM_MODIFY = 0080h
LMEM_DISCARDABLE = 0F00h
LMEM_VALID_FLAGS = 0F72h
LMEM_INVALID_HANDLE = 8000h
LHND = LMEM_MOVEABLE + LMEM_ZEROINIT
LPTR = LMEM_FIXED + LMEM_ZEROINIT
LMEM_DISCARDED = 4000h
LMEM_LOCKCOUNT = 00FFh
; Page access flags
PAGE_NOACCESS = 001h
PAGE_READONLY = 002h
PAGE_READWRITE = 004h
PAGE_WRITECOPY = 008h
PAGE_EXECUTE = 010h
PAGE_EXECUTE_READ = 020h
PAGE_EXECUTE_READWRITE = 040h
PAGE_EXECUTE_WRITECOPY = 080h
PAGE_GUARD = 100h
PAGE_NOCACHE = 200h
; Memory allocation flags
MEM_COMMIT = 001000h
MEM_RESERVE = 002000h
MEM_DECOMMIT = 004000h
MEM_RELEASE = 008000h
MEM_FREE = 010000h
MEM_PRIVATE = 020000h
MEM_MAPPED = 040000h
MEM_RESET = 080000h
MEM_TOP_DOWN = 100000h
; Heap allocation flags
HEAP_NO_SERIALIZE = 1
HEAP_GENERATE_EXCEPTIONS = 4
HEAP_ZERO_MEMORY = 8
; Platform identifiers
VER_PLATFORM_WIN32s = 0
VER_PLATFORM_WIN32_WINDOWS = 1
VER_PLATFORM_WIN32_NT = 2
; GetBinaryType return values
SCS_32BIT_BINARY = 0
SCS_DOS_BINARY = 1
SCS_WOW_BINARY = 2
SCS_PIF_BINARY = 3
SCS_POSIX_BINARY = 4
SCS_OS216_BINARY = 5
; CreateProcess flags
DEBUG_PROCESS = 001h
DEBUG_ONLY_THIS_PROCESS = 002h
CREATE_SUSPENDED = 004h
DETACHED_PROCESS = 008h
CREATE_NEW_CONSOLE = 010h
NORMAL_PRIORITY_CLASS = 020h
IDLE_PRIORITY_CLASS = 040h
HIGH_PRIORITY_CLASS = 080h
REALTIME_PRIORITY_CLASS = 100h
CREATE_NEW_PROCESS_GROUP = 200h
CREATE_SEPARATE_WOW_VDM = 800h
; Thread priority values
THREAD_BASE_PRIORITY_MIN = -2
THREAD_BASE_PRIORITY_MAX = 2
THREAD_BASE_PRIORITY_LOWRT = 15
THREAD_BASE_PRIORITY_IDLE = -15
THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN
THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST + 1
THREAD_PRIORITY_NORMAL = 0
THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX
THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST - 1
THREAD_PRIORITY_ERROR_RETURN = 7FFFFFFFh
THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT
THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE
; Startup flags
STARTF_USESHOWWINDOW = 001h
STARTF_USESIZE = 002h
STARTF_USEPOSITION = 004h
STARTF_USECOUNTCHARS = 008h
STARTF_USEFILLATTRIBUTE = 010h
STARTF_RUNFULLSCREEN = 020h
STARTF_FORCEONFEEDBACK = 040h
STARTF_FORCEOFFFEEDBACK = 080h
STARTF_USESTDHANDLES = 100h
; Shutdown flags
SHUTDOWN_NORETRY = 1h
; LoadLibraryEx flags
DONT_RESOLVE_DLL_REFERENCES = 1
LOAD_LIBRARY_AS_DATAFILE = 2
LOAD_WITH_ALTERED_SEARCH_PATH = 8
; DLL entry-point calls
DLL_PROCESS_DETACH = 0
DLL_PROCESS_ATTACH = 1
DLL_THREAD_ATTACH = 2
DLL_THREAD_DETACH = 3
; Status codes
STATUS_WAIT_0 = 000000000h
STATUS_ABANDONED_WAIT_0 = 000000080h
STATUS_USER_APC = 0000000C0h
STATUS_TIMEOUT = 000000102h
STATUS_PENDING = 000000103h
STATUS_DATATYPE_MISALIGNMENT = 080000002h
STATUS_BREAKPOINT = 080000003h
STATUS_SINGLE_STEP = 080000004h
STATUS_ACCESS_VIOLATION = 0C0000005h
STATUS_IN_PAGE_ERROR = 0C0000006h
STATUS_NO_MEMORY = 0C0000017h
STATUS_ILLEGAL_INSTRUCTION = 0C000001Dh
STATUS_NONCONTINUABLE_EXCEPTION = 0C0000025h
STATUS_INVALID_DISPOSITION = 0C0000026h
STATUS_ARRAY_BOUNDS_EXCEEDED = 0C000008Ch
STATUS_FLOAT_DENORMAL_OPERAND = 0C000008Dh
STATUS_FLOAT_DIVIDE_BY_ZERO = 0C000008Eh
STATUS_FLOAT_INEXACT_RESULT = 0C000008Fh
STATUS_FLOAT_INVALID_OPERATION = 0C0000090h
STATUS_FLOAT_OVERFLOW = 0C0000091h
STATUS_FLOAT_STACK_CHECK = 0C0000092h
STATUS_FLOAT_UNDERFLOW = 0C0000093h
STATUS_INTEGER_DIVIDE_BY_ZERO = 0C0000094h
STATUS_INTEGER_OVERFLOW = 0C0000095h
STATUS_PRIVILEGED_INSTRUCTION = 0C0000096h
STATUS_STACK_OVERFLOW = 0C00000FDh
STATUS_CONTROL_C_EXIT = 0C000013Ah
WAIT_FAILED = -1
WAIT_OBJECT_0 = STATUS_WAIT_0
WAIT_ABANDONED = STATUS_ABANDONED_WAIT_0
WAIT_ABANDONED_0 = STATUS_ABANDONED_WAIT_0
WAIT_TIMEOUT = STATUS_TIMEOUT
WAIT_IO_COMPLETION = STATUS_USER_APC
STILL_ACTIVE = STATUS_PENDING
; Exception codes
EXCEPTION_CONTINUABLE = 0
EXCEPTION_NONCONTINUABLE = 1
EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION
EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT
EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT
EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP
EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED
EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND
EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO
EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT
EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION
EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW
EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK
EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW
EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO
EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW
EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION
EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION
EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR
; Registry options
REG_OPTION_RESERVED = 0
REG_OPTION_NON_VOLATILE = 0
REG_OPTION_VOLATILE = 1
REG_OPTION_CREATE_LINK = 2
REG_OPTION_BACKUP_RESTORE = 4
REG_CREATED_NEW_KEY = 1
REG_OPENED_EXISTING_KEY = 2
REG_WHOLE_HIVE_VOLATILE = 1
REG_REFRESH_HIVE = 2
REG_NOTIFY_CHANGE_NAME = 1
REG_NOTIFY_CHANGE_ATTRIBUTES = 2
REG_NOTIFY_CHANGE_LAST_SET = 4
REG_NOTIFY_CHANGE_SECURITY = 8
REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME or REG_NOTIFY_CHANGE_ATTRIBUTES or REG_NOTIFY_CHANGE_LAST_SET or REG_NOTIFY_CHANGE_SECURITY
REG_LEGAL_OPTION = REG_OPTION_RESERVED or REG_OPTION_NON_VOLATILE or REG_OPTION_VOLATILE or REG_OPTION_CREATE_LINK or REG_OPTION_BACKUP_RESTORE
REG_NONE = 0
REG_SZ = 1
REG_EXPAND_SZ = 2
REG_BINARY = 3
REG_DWORD = 4
REG_DWORD_LITTLE_ENDIAN = 4
REG_DWORD_BIG_ENDIAN = 5
REG_LINK = 6
REG_MULTI_SZ = 7
REG_RESOURCE_LIST = 8
REG_FULL_RESOURCE_DESCRIPTOR = 9
REG_RESOURCE_REQUIREMENTS_LIST = 10
; Registry access modes
KEY_QUERY_VALUE = 1
KEY_SET_VALUE = 2
KEY_CREATE_SUB_KEY = 4
KEY_ENUMERATE_SUB_KEYS = 8
KEY_NOTIFY = 10h
KEY_CREATE_LINK = 20h
KEY_READ = STANDARD_RIGHTS_READ or KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY and not SYNCHRONIZE
KEY_WRITE = STANDARD_RIGHTS_WRITE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY and not SYNCHRONIZE
KEY_EXECUTE = KEY_READ
KEY_ALL_ACCESS = STANDARD_RIGHTS_ALL or KEY_QUERY_VALUE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY or KEY_CREATE_LINK and not SYNCHRONIZE
; Predefined registry keys
HKEY_CLASSES_ROOT = 80000000h
HKEY_CURRENT_USER = 80000001h
HKEY_LOCAL_MACHINE = 80000002h
HKEY_USERS = 80000003h
HKEY_PERFORMANCE_DATA = 80000004h
HKEY_CURRENT_CONFIG = 80000005h
HKEY_DYN_DATA = 80000006h
; FormatMessage flags
FORMAT_MESSAGE_ALLOCATE_BUFFER = 0100h
FORMAT_MESSAGE_IGNORE_INSERTS = 0200h
FORMAT_MESSAGE_FROM_STRING = 0400h
FORMAT_MESSAGE_FROM_HMODULE = 0800h
FORMAT_MESSAGE_FROM_SYSTEM = 1000h
FORMAT_MESSAGE_ARGUMENT_ARRAY = 2000h
FORMAT_MESSAGE_MAX_WIDTH_MASK = 00FFh
; Language identifiers
LANG_NEUTRAL = 00h
LANG_BULGARIAN = 02h
LANG_CHINESE = 04h
LANG_CROATIAN = 1Ah
LANG_CZECH = 05h
LANG_DANISH = 06h
LANG_DUTCH = 13h
LANG_ENGLISH = 09h
LANG_FINNISH = 0Bh
LANG_FRENCH = 0Ch
LANG_GERMAN = 07h
LANG_GREEK = 08h
LANG_HUNGARIAN = 0Eh
LANG_ICELANDIC = 0Fh
LANG_ITALIAN = 10h
LANG_JAPANESE = 11h
LANG_KOREAN = 12h
LANG_NORWEGIAN = 14h
LANG_POLISH = 15h
LANG_PORTUGUESE = 16h
LANG_ROMANIAN = 18h
LANG_RUSSIAN = 19h
LANG_SLOVAK = 1Bh
LANG_SLOVENIAN = 24h
LANG_SPANISH = 0Ah
LANG_SWEDISH = 1Dh
LANG_THAI = 1Eh
LANG_TURKISH = 1Fh
; Sublanguage identifiers
SUBLANG_NEUTRAL = 00h shl 10
SUBLANG_DEFAULT = 01h shl 10
SUBLANG_SYS_DEFAULT = 02h shl 10
SUBLANG_CHINESE_TRADITIONAL = 01h shl 10
SUBLANG_CHINESE_SIMPLIFIED = 02h shl 10
SUBLANG_CHINESE_HONGKONG = 03h shl 10
SUBLANG_CHINESE_SINGAPORE = 04h shl 10
SUBLANG_DUTCH = 01h shl 10
SUBLANG_DUTCH_BELGIAN = 02h shl 10
SUBLANG_ENGLISH_US = 01h shl 10
SUBLANG_ENGLISH_UK = 02h shl 10
SUBLANG_ENGLISH_AUS = 03h shl 10
SUBLANG_ENGLISH_CAN = 04h shl 10
SUBLANG_ENGLISH_NZ = 05h shl 10
SUBLANG_ENGLISH_EIRE = 06h shl 10
SUBLANG_FRENCH = 01h shl 10
SUBLANG_FRENCH_BELGIAN = 02h shl 10
SUBLANG_FRENCH_CANADIAN = 03h shl 10
SUBLANG_FRENCH_SWISS = 04h shl 10
SUBLANG_GERMAN = 01h shl 10
SUBLANG_GERMAN_SWISS = 02h shl 10
SUBLANG_GERMAN_AUSTRIAN = 03h shl 10
SUBLANG_ITALIAN = 01h shl 10
SUBLANG_ITALIAN_SWISS = 02h shl 10
SUBLANG_NORWEGIAN_BOKMAL = 01h shl 10
SUBLANG_NORWEGIAN_NYNORSK = 02h shl 10
SUBLANG_PORTUGUESE = 02h shl 10
SUBLANG_PORTUGUESE_BRAZILIAN = 01h shl 10
SUBLANG_SPANISH = 01h shl 10
SUBLANG_SPANISH_MEXICAN = 02h shl 10
SUBLANG_SPANISH_MODERN = 03h shl 10
; Sorting identifiers
SORT_DEFAULT = 0 shl 16
SORT_JAPANESE_XJIS = 0 shl 16
SORT_JAPANESE_UNICODE = 1 shl 16
SORT_CHINESE_BIG5 = 0 shl 16
SORT_CHINESE_PRCP = 0 shl 16
SORT_CHINESE_UNICODE = 1 shl 16
SORT_CHINESE_PRC = 2 shl 16
SORT_CHINESE_BOPOMOFO = 3 shl 16
SORT_KOREAN_KSC = 0 shl 16
SORT_KOREAN_UNICODE = 1 shl 16
SORT_GERMAN_PHONE_BOOK = 1 shl 16
SORT_HUNGARIAN_DEFAULT = 0 shl 16
SORT_HUNGARIAN_TECHNICAL = 1 shl 16
; Code pages
CP_ACP = 0 ; default to ANSI code page
CP_OEMCP = 1 ; default to OEM code page
CP_MACCP = 2 ; default to MAC code page
CP_THREAD_ACP = 3 ; current thread's ANSI code page
CP_SYMBOL = 42 ; SYMBOL translations
CP_UTF7 = 65000 ; UTF-7 translation
CP_UTF8 = 65001 ; UTF-8 translation
; Resource types
RT_CURSOR = 1
RT_BITMAP = 2
RT_ICON = 3
RT_MENU = 4
RT_DIALOG = 5
RT_STRING = 6
RT_FONTDIR = 7
RT_FONT = 8
RT_ACCELERATOR = 9
RT_RCDATA = 10
RT_MESSAGETABLE = 11
RT_GROUP_CURSOR = 12
RT_GROUP_ICON = 14
RT_VERSION = 16
RT_DLGINCLUDE = 17
RT_PLUGPLAY = 19
RT_VXD = 20
RT_ANICURSOR = 21
RT_ANIICON = 22
RT_HTML = 23
RT_MANIFEST = 24
; Clipboard formats
CF_TEXT = 001h
CF_BITMAP = 002h
CF_METAFILEPICT = 003h
CF_SYLK = 004h
CF_DIF = 005h
CF_TIFF = 006h
CF_OEMTEXT = 007h
CF_DIB = 008h
CF_PALETTE = 009h
CF_PENDATA = 00Ah
CF_RIFF = 00Bh
CF_WAVE = 00Ch
CF_UNICODETEXT = 00Dh
CF_ENHMETAFILE = 00Eh
CF_HDROP = 00Fh
CF_LOCALE = 010h
CF_OWNERDISPLAY = 080h
CF_DSPTEXT = 081h
CF_DSPBITMAP = 082h
CF_DSPMETAFILEPICT = 083h
CF_DSPENHMETAFILE = 08Eh
CF_PRIVATEFIRST = 200h
CF_PRIVATELAST = 2FFh
CF_GDIOBJFIRST = 300h
CF_GDIOBJLAST = 3FFh
; OS types for version info
VOS_UNKNOWN = 00000000h
VOS_DOS = 00010000h
VOS_OS216 = 00020000h
VOS_OS232 = 00030000h
VOS_NT = 00040000h
VOS__BASE = 00000000h
VOS__WINDOWS16 = 00000001h
VOS__PM16 = 00000002h
VOS__PM32 = 00000003h
VOS__WINDOWS32 = 00000004h
VOS_DOS_WINDOWS16 = 00010001h
VOS_DOS_WINDOWS32 = 00010004h
VOS_OS216_PM16 = 00020002h
VOS_OS232_PM32 = 00030003h
VOS_NT_WINDOWS32 = 00040004h
; File types for version info
VFT_UNKNOWN = 00000000h
VFT_APP = 00000001h
VFT_DLL = 00000002h
VFT_DRV = 00000003h
VFT_FONT = 00000004h
VFT_VXD = 00000005h
VFT_STATIC_LIB = 00000007h
; File subtypes for version info
VFT2_UNKNOWN = 00000000h
VFT2_DRV_PRINTER = 00000001h
VFT2_DRV_KEYBOARD = 00000002h
VFT2_DRV_LANGUAGE = 00000003h
VFT2_DRV_DISPLAY = 00000004h
VFT2_DRV_MOUSE = 00000005h
VFT2_DRV_NETWORK = 00000006h
VFT2_DRV_SYSTEM = 00000007h
VFT2_DRV_INSTALLABLE = 00000008h
VFT2_DRV_SOUND = 00000009h
VFT2_DRV_COMM = 0000000Ah
VFT2_DRV_INPUTMETHOD = 0000000Bh
VFT2_DRV_VERSIONED_PRINTER = 0000000Ch
VFT2_FONT_RASTER = 00000001h
VFT2_FONT_VECTOR = 00000002h
VFT2_FONT_TRUETYPE = 00000003h
; Console control signals
CTRL_C_EVENT = 0
CTRL_BREAK_EVENT = 1
CTRL_CLOSE_EVENT = 2
CTRL_LOGOFF_EVENT = 5
CTRL_SHUTDOWN_EVENT = 6
; Standard file handles
STD_INPUT_HANDLE = 0FFFFFFF6h
STD_OUTPUT_HANDLE = 0FFFFFFF5h
STD_ERROR_HANDLE = 0FFFFFFF4h

View File

@@ -0,0 +1,806 @@
; KERNEL32.DLL structures and constants
struct SYSTEM_INFO
wProcessorArchitecture dw ?
wReserved dw ?
dwPageSize dd ?
lpMinimumApplicationAddress dq ?
lpMaximumApplicationAddress dq ?
dwActiveProcessorMask dq ?
dwNumberOfProcessors dd ?
dwProcessorType dd ?
dwAllocationGranularity dd ?
wProcessorLevel dw ?
wProcessorRevision dw ?
ends
struct OSVERSIONINFO
dwOSVersionInfoSize dd ?
dwMajorVersion dd ?
dwMinorVersion dd ?
dwBuildNumber dd ?
dwPlatformId dd ?
szCSDVersion TCHAR 128 dup (?)
ends
struct OSVERSIONINFOA
dwOSVersionInfoSize dd ?
dwMajorVersion dd ?
dwMinorVersion dd ?
dwBuildNumber dd ?
dwPlatformId dd ?
szCSDVersion db 128 dup (?)
ends
struct OSVERSIONINFOW
dwOSVersionInfoSize dd ?
dwMajorVersion dd ?
dwMinorVersion dd ?
dwBuildNumber dd ?
dwPlatformId dd ?
szCSDVersion du 128 dup (?)
ends
struct MEMORYSTATUS
dwLength dd ?
dwMemoryLoad dd ?
dwTotalPhys dq ?
dwAvailPhys dq ?
dwTotalPageFile dq ?
dwAvailPageFile dq ?
dwTotalVirtual dq ?
dwAvailVirtual dq ?
ends
struct STARTUPINFO
cb dd ?,?
lpReserved dq ?
lpDesktop dq ?
lpTitle dq ?
dwX dd ?
dwY dd ?
dwXSize dd ?
dwYSize dd ?
dwXCountChars dd ?
dwYCountChars dd ?
dwFillAttribute dd ?
dwFlags dd ?
wShowWindow dw ?
cbReserved2 dw ?,?,?
lpReserved2 dq ?
hStdInput dq ?
hStdOutput dq ?
hStdError dq ?
ends
struct PROCESS_INFORMATION
hProcess dq ?
hThread dq ?
dwProcessId dd ?
dwThreadId dd ?
ends
struct FILETIME
dwLowDateTime dd ?
dwHighDateTime dd ?
ends
struct SYSTEMTIME
wYear dw ?
wMonth dw ?
wDayOfWeek dw ?
wDay dw ?
wHour dw ?
wMinute dw ?
wSecond dw ?
wMilliseconds dw ?
ends
struct BY_HANDLE_FILE_INFORMATION
dwFileAttributes dd ?
ftCreationTime FILETIME
ftLastAccessTime FILETIME
ftLastWriteTime FILETIME
dwVolumeSerialNumber dd ?
nFileSizeHigh dd ?
nFileSizeLow dd ?
nNumberOfLinks dd ?
nFileIndexHigh dd ?
nFileIndexLow dd ?
ends
struct WIN32_FIND_DATA
dwFileAttributes dd ?
ftCreationTime FILETIME
ftLastAccessTime FILETIME
ftLastWriteTime FILETIME
nFileSizeHigh dd ?
nFileSizeLow dd ?
dwReserved0 dd ?
dwReserved1 dd ?
cFileName TCHAR MAX_PATH dup (?)
cAlternateFileName TCHAR 14 dup (?)
ends
struct WIN32_FIND_DATAA
dwFileAttributes dd ?
ftCreationTime FILETIME
ftLastAccessTime FILETIME
ftLastWriteTime FILETIME
nFileSizeHigh dd ?
nFileSizeLow dd ?
dwReserved0 dd ?
dwReserved1 dd ?
cFileName db MAX_PATH dup (?)
cAlternateFileName db 14 dup (?)
ends
struct WIN32_FIND_DATAW
dwFileAttributes dd ?
ftCreationTime FILETIME
ftLastAccessTime FILETIME
ftLastWriteTime FILETIME
nFileSizeHigh dd ?
nFileSizeLow dd ?
dwReserved0 dd ?
dwReserved1 dd ?
cFileName du MAX_PATH dup (?)
cAlternateFileName du 14 dup (?)
ends
; General constants
NULL = 0
TRUE = 1
FALSE = 0
; Maximum path length in characters
MAX_PATH = 260
; Access rights
DELETE_RIGHT = 00010000h
READ_CONTROL = 00020000h
WRITE_DAC = 00040000h
WRITE_OWNER = 00080000h
SYNCHRONIZE = 00100000h
STANDARD_RIGHTS_READ = READ_CONTROL
STANDARD_RIGHTS_WRITE = READ_CONTROL
STANDARD_RIGHTS_EXECUTE = READ_CONTROL
STANDARD_RIGHTS_REQUIRED = 000F0000h
STANDARD_RIGHTS_ALL = 001F0000h
SPECIFIC_RIGHTS_ALL = 0000FFFFh
ACCESS_SYSTEM_SECURITY = 01000000h
MAXIMUM_ALLOWED = 02000000h
GENERIC_READ = 80000000h
GENERIC_WRITE = 40000000h
GENERIC_EXECUTE = 20000000h
GENERIC_ALL = 10000000h
PROCESS_TERMINATE = 00000001h
PROCESS_CREATE_THREAD = 00000002h
PROCESS_VM_OPERATION = 00000008h
PROCESS_VM_READ = 00000010h
PROCESS_VM_WRITE = 00000020h
PROCESS_DUP_HANDLE = 00000040h
PROCESS_CREATE_PROCESS = 00000080h
PROCESS_SET_QUOTA = 00000100h
PROCESS_SET_INFORMATION = 00000200h
PROCESS_QUERY_INFORMATION = 00000400h
PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0FFFh
FILE_SHARE_READ = 00000001h
FILE_SHARE_WRITE = 00000002h
FILE_SHARE_DELETE = 00000004h
; CreateFile actions
CREATE_NEW = 1
CREATE_ALWAYS = 2
OPEN_EXISTING = 3
OPEN_ALWAYS = 4
TRUNCATE_EXISTING = 5
; OpenFile modes
OF_READ = 0000h
OF_WRITE = 0001h
OF_READWRITE = 0002h
OF_SHARE_COMPAT = 0000h
OF_SHARE_EXCLUSIVE = 0010h
OF_SHARE_DENY_WRITE = 0020h
OF_SHARE_DENY_READ = 0030h
OF_SHARE_DENY_NONE = 0040h
OF_PARSE = 0100h
OF_DELETE = 0200h
OF_VERIFY = 0400h
OF_CANCEL = 0800h
OF_CREATE = 1000h
OF_PROMPT = 2000h
OF_EXIST = 4000h
OF_REOPEN = 8000h
; SetFilePointer methods
FILE_BEGIN = 0
FILE_CURRENT = 1
FILE_END = 2
; File attributes
FILE_ATTRIBUTE_READONLY = 001h
FILE_ATTRIBUTE_HIDDEN = 002h
FILE_ATTRIBUTE_SYSTEM = 004h
FILE_ATTRIBUTE_DIRECTORY = 010h
FILE_ATTRIBUTE_ARCHIVE = 020h
FILE_ATTRIBUTE_NORMAL = 080h
FILE_ATTRIBUTE_TEMPORARY = 100h
FILE_ATTRIBUTE_COMPRESSED = 800h
; File flags
FILE_FLAG_WRITE_THROUGH = 80000000h
FILE_FLAG_OVERLAPPED = 40000000h
FILE_FLAG_NO_BUFFERING = 20000000h
FILE_FLAG_RANDOM_ACCESS = 10000000h
FILE_FLAG_SEQUENTIAL_SCAN = 08000000h
FILE_FLAG_DELETE_ON_CLOSE = 04000000h
FILE_FLAG_BACKUP_SEMANTICS = 02000000h
FILE_FLAG_POSIX_SEMANTICS = 01000000h
; Notify filters
FILE_NOTIFY_CHANGE_FILE_NAME = 001h
FILE_NOTIFY_CHANGE_DIR_NAME = 002h
FILE_NOTIFY_CHANGE_ATTRIBUTES = 004h
FILE_NOTIFY_CHANGE_SIZE = 008h
FILE_NOTIFY_CHANGE_LAST_WRITE = 010h
FILE_NOTIFY_CHANGE_SECURITY = 100h
; File types
FILE_TYPE_UNKNOWN = 0
FILE_TYPE_DISK = 1
FILE_TYPE_CHAR = 2
FILE_TYPE_PIPE = 3
FILE_TYPE_REMOTE = 8000h
; LockFileEx flags
LOCKFILE_FAIL_IMMEDIATELY = 1
LOCKFILE_EXCLUSIVE_LOCK = 2
; MoveFileEx flags
MOVEFILE_REPLACE_EXISTING = 1
MOVEFILE_COPY_ALLOWED = 2
MOVEFILE_DELAY_UNTIL_REBOOT = 4
MOVEFILE_WRITE_THROUGH = 8
; FindFirstFileEx flags
FIND_FIRST_EX_CASE_SENSITIVE = 1
; Device handles
INVALID_HANDLE_VALUE = -1
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE = -12
; DuplicateHandle options
DUPLICATE_CLOSE_SOURCE = 1
DUPLICATE_SAME_ACCESS = 2
; File mapping acccess rights
SECTION_QUERY = 01h
SECTION_MAP_WRITE = 02h
SECTION_MAP_READ = 04h
SECTION_MAP_EXECUTE = 08h
SECTION_EXTEND_SIZE = 10h
SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SECTION_QUERY or SECTION_MAP_WRITE or SECTION_MAP_READ or SECTION_MAP_EXECUTE or SECTION_EXTEND_SIZE
FILE_MAP_COPY = SECTION_QUERY
FILE_MAP_WRITE = SECTION_MAP_WRITE
FILE_MAP_READ = SECTION_MAP_READ
FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS
; File system flags
FILE_CASE_SENSITIVE_SEARCH = 0001h
FILE_CASE_PRESERVED_NAMES = 0002h
FILE_UNICODE_ON_DISK = 0004h
FILE_PERSISTENT_ACLS = 0008h
FILE_FILE_COMPRESSION = 0010h
FILE_VOLUME_IS_COMPRESSED = 8000h
FS_CASE_IS_PRESERVED = FILE_CASE_PRESERVED_NAMES
FS_CASE_SENSITIVE = FILE_CASE_SENSITIVE_SEARCH
FS_UNICODE_STORED_ON_DISK = FILE_UNICODE_ON_DISK
FS_PERSISTENT_ACLS = FILE_PERSISTENT_ACLS
; Drive types
DRIVE_UNKNOWN = 0
DRIVE_NO_ROOT_DIR = 1
DRIVE_REMOVABLE = 2
DRIVE_FIXED = 3
DRIVE_REMOTE = 4
DRIVE_CDROM = 5
DRIVE_RAMDISK = 6
; Pipe modes
PIPE_ACCESS_INBOUND = 1
PIPE_ACCESS_OUTBOUND = 2
PIPE_ACCESS_DUPLEX = 3
PIPE_CLIENT_END = 0
PIPE_SERVER_END = 1
PIPE_WAIT = 0
PIPE_NOWAIT = 1
PIPE_READMODE_BYTE = 0
PIPE_READMODE_MESSAGE = 2
PIPE_TYPE_BYTE = 0
PIPE_TYPE_MESSAGE = 4
PIPE_UNLIMITED_INSTANCES = 255
; Global memory flags
GMEM_FIXED = 0000h
GMEM_MOVEABLE = 0002h
GMEM_NOCOMPACT = 0010h
GMEM_NODISCARD = 0020h
GMEM_ZEROINIT = 0040h
GMEM_MODIFY = 0080h
GMEM_DISCARDABLE = 0100h
GMEM_NOT_BANKED = 1000h
GMEM_SHARE = 2000h
GMEM_DDESHARE = 2000h
GMEM_NOTIFY = 4000h
GMEM_LOWER = GMEM_NOT_BANKED
GMEM_VALID_FLAGS = 7F72h
GMEM_INVALID_HANDLE = 8000h
GMEM_DISCARDED = 4000h
GMEM_LOCKCOUNT = 0FFh
GHND = GMEM_MOVEABLE + GMEM_ZEROINIT
GPTR = GMEM_FIXED + GMEM_ZEROINIT
; Local memory flags
LMEM_FIXED = 0000h
LMEM_MOVEABLE = 0002h
LMEM_NOCOMPACT = 0010h
LMEM_NODISCARD = 0020h
LMEM_ZEROINIT = 0040h
LMEM_MODIFY = 0080h
LMEM_DISCARDABLE = 0F00h
LMEM_VALID_FLAGS = 0F72h
LMEM_INVALID_HANDLE = 8000h
LHND = LMEM_MOVEABLE + LMEM_ZEROINIT
LPTR = LMEM_FIXED + LMEM_ZEROINIT
LMEM_DISCARDED = 4000h
LMEM_LOCKCOUNT = 00FFh
; Page access flags
PAGE_NOACCESS = 001h
PAGE_READONLY = 002h
PAGE_READWRITE = 004h
PAGE_WRITECOPY = 008h
PAGE_EXECUTE = 010h
PAGE_EXECUTE_READ = 020h
PAGE_EXECUTE_READWRITE = 040h
PAGE_EXECUTE_WRITECOPY = 080h
PAGE_GUARD = 100h
PAGE_NOCACHE = 200h
; Memory allocation flags
MEM_COMMIT = 001000h
MEM_RESERVE = 002000h
MEM_DECOMMIT = 004000h
MEM_RELEASE = 008000h
MEM_FREE = 010000h
MEM_PRIVATE = 020000h
MEM_MAPPED = 040000h
MEM_RESET = 080000h
MEM_TOP_DOWN = 100000h
; Heap allocation flags
HEAP_NO_SERIALIZE = 1
HEAP_GENERATE_EXCEPTIONS = 4
HEAP_ZERO_MEMORY = 8
; Platform identifiers
VER_PLATFORM_WIN32s = 0
VER_PLATFORM_WIN32_WINDOWS = 1
VER_PLATFORM_WIN32_NT = 2
; GetBinaryType return values
SCS_32BIT_BINARY = 0
SCS_DOS_BINARY = 1
SCS_WOW_BINARY = 2
SCS_PIF_BINARY = 3
SCS_POSIX_BINARY = 4
SCS_OS216_BINARY = 5
; CreateProcess flags
DEBUG_PROCESS = 001h
DEBUG_ONLY_THIS_PROCESS = 002h
CREATE_SUSPENDED = 004h
DETACHED_PROCESS = 008h
CREATE_NEW_CONSOLE = 010h
NORMAL_PRIORITY_CLASS = 020h
IDLE_PRIORITY_CLASS = 040h
HIGH_PRIORITY_CLASS = 080h
REALTIME_PRIORITY_CLASS = 100h
CREATE_NEW_PROCESS_GROUP = 200h
CREATE_SEPARATE_WOW_VDM = 800h
; Thread priority values
THREAD_BASE_PRIORITY_MIN = -2
THREAD_BASE_PRIORITY_MAX = 2
THREAD_BASE_PRIORITY_LOWRT = 15
THREAD_BASE_PRIORITY_IDLE = -15
THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN
THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST + 1
THREAD_PRIORITY_NORMAL = 0
THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX
THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST - 1
THREAD_PRIORITY_ERROR_RETURN = 7FFFFFFFh
THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT
THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE
; Startup flags
STARTF_USESHOWWINDOW = 001h
STARTF_USESIZE = 002h
STARTF_USEPOSITION = 004h
STARTF_USECOUNTCHARS = 008h
STARTF_USEFILLATTRIBUTE = 010h
STARTF_RUNFULLSCREEN = 020h
STARTF_FORCEONFEEDBACK = 040h
STARTF_FORCEOFFFEEDBACK = 080h
STARTF_USESTDHANDLES = 100h
; Shutdown flags
SHUTDOWN_NORETRY = 1h
; LoadLibraryEx flags
DONT_RESOLVE_DLL_REFERENCES = 1
LOAD_LIBRARY_AS_DATAFILE = 2
LOAD_WITH_ALTERED_SEARCH_PATH = 8
; DLL entry-point calls
DLL_PROCESS_DETACH = 0
DLL_PROCESS_ATTACH = 1
DLL_THREAD_ATTACH = 2
DLL_THREAD_DETACH = 3
; Status codes
STATUS_WAIT_0 = 000000000h
STATUS_ABANDONED_WAIT_0 = 000000080h
STATUS_USER_APC = 0000000C0h
STATUS_TIMEOUT = 000000102h
STATUS_PENDING = 000000103h
STATUS_DATATYPE_MISALIGNMENT = 080000002h
STATUS_BREAKPOINT = 080000003h
STATUS_SINGLE_STEP = 080000004h
STATUS_ACCESS_VIOLATION = 0C0000005h
STATUS_IN_PAGE_ERROR = 0C0000006h
STATUS_NO_MEMORY = 0C0000017h
STATUS_ILLEGAL_INSTRUCTION = 0C000001Dh
STATUS_NONCONTINUABLE_EXCEPTION = 0C0000025h
STATUS_INVALID_DISPOSITION = 0C0000026h
STATUS_ARRAY_BOUNDS_EXCEEDED = 0C000008Ch
STATUS_FLOAT_DENORMAL_OPERAND = 0C000008Dh
STATUS_FLOAT_DIVIDE_BY_ZERO = 0C000008Eh
STATUS_FLOAT_INEXACT_RESULT = 0C000008Fh
STATUS_FLOAT_INVALID_OPERATION = 0C0000090h
STATUS_FLOAT_OVERFLOW = 0C0000091h
STATUS_FLOAT_STACK_CHECK = 0C0000092h
STATUS_FLOAT_UNDERFLOW = 0C0000093h
STATUS_INTEGER_DIVIDE_BY_ZERO = 0C0000094h
STATUS_INTEGER_OVERFLOW = 0C0000095h
STATUS_PRIVILEGED_INSTRUCTION = 0C0000096h
STATUS_STACK_OVERFLOW = 0C00000FDh
STATUS_CONTROL_C_EXIT = 0C000013Ah
WAIT_FAILED = -1
WAIT_OBJECT_0 = STATUS_WAIT_0
WAIT_ABANDONED = STATUS_ABANDONED_WAIT_0
WAIT_ABANDONED_0 = STATUS_ABANDONED_WAIT_0
WAIT_TIMEOUT = STATUS_TIMEOUT
WAIT_IO_COMPLETION = STATUS_USER_APC
STILL_ACTIVE = STATUS_PENDING
; Exception codes
EXCEPTION_CONTINUABLE = 0
EXCEPTION_NONCONTINUABLE = 1
EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION
EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT
EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT
EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP
EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED
EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND
EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO
EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT
EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION
EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW
EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK
EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW
EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO
EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW
EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION
EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION
EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR
; Registry options
REG_OPTION_RESERVED = 0
REG_OPTION_NON_VOLATILE = 0
REG_OPTION_VOLATILE = 1
REG_OPTION_CREATE_LINK = 2
REG_OPTION_BACKUP_RESTORE = 4
REG_CREATED_NEW_KEY = 1
REG_OPENED_EXISTING_KEY = 2
REG_WHOLE_HIVE_VOLATILE = 1
REG_REFRESH_HIVE = 2
REG_NOTIFY_CHANGE_NAME = 1
REG_NOTIFY_CHANGE_ATTRIBUTES = 2
REG_NOTIFY_CHANGE_LAST_SET = 4
REG_NOTIFY_CHANGE_SECURITY = 8
REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME or REG_NOTIFY_CHANGE_ATTRIBUTES or REG_NOTIFY_CHANGE_LAST_SET or REG_NOTIFY_CHANGE_SECURITY
REG_LEGAL_OPTION = REG_OPTION_RESERVED or REG_OPTION_NON_VOLATILE or REG_OPTION_VOLATILE or REG_OPTION_CREATE_LINK or REG_OPTION_BACKUP_RESTORE
REG_NONE = 0
REG_SZ = 1
REG_EXPAND_SZ = 2
REG_BINARY = 3
REG_DWORD = 4
REG_DWORD_LITTLE_ENDIAN = 4
REG_DWORD_BIG_ENDIAN = 5
REG_LINK = 6
REG_MULTI_SZ = 7
REG_RESOURCE_LIST = 8
REG_FULL_RESOURCE_DESCRIPTOR = 9
REG_RESOURCE_REQUIREMENTS_LIST = 10
; Registry access modes
KEY_QUERY_VALUE = 1
KEY_SET_VALUE = 2
KEY_CREATE_SUB_KEY = 4
KEY_ENUMERATE_SUB_KEYS = 8
KEY_NOTIFY = 10h
KEY_CREATE_LINK = 20h
KEY_READ = STANDARD_RIGHTS_READ or KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY and not SYNCHRONIZE
KEY_WRITE = STANDARD_RIGHTS_WRITE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY and not SYNCHRONIZE
KEY_EXECUTE = KEY_READ
KEY_ALL_ACCESS = STANDARD_RIGHTS_ALL or KEY_QUERY_VALUE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY or KEY_CREATE_LINK and not SYNCHRONIZE
; Predefined registry keys
HKEY_CLASSES_ROOT = 80000000h
HKEY_CURRENT_USER = 80000001h
HKEY_LOCAL_MACHINE = 80000002h
HKEY_USERS = 80000003h
HKEY_PERFORMANCE_DATA = 80000004h
HKEY_CURRENT_CONFIG = 80000005h
HKEY_DYN_DATA = 80000006h
; FormatMessage flags
FORMAT_MESSAGE_ALLOCATE_BUFFER = 0100h
FORMAT_MESSAGE_IGNORE_INSERTS = 0200h
FORMAT_MESSAGE_FROM_STRING = 0400h
FORMAT_MESSAGE_FROM_HMODULE = 0800h
FORMAT_MESSAGE_FROM_SYSTEM = 1000h
FORMAT_MESSAGE_ARGUMENT_ARRAY = 2000h
FORMAT_MESSAGE_MAX_WIDTH_MASK = 00FFh
; Language identifiers
LANG_NEUTRAL = 00h
LANG_BULGARIAN = 02h
LANG_CHINESE = 04h
LANG_CROATIAN = 1Ah
LANG_CZECH = 05h
LANG_DANISH = 06h
LANG_DUTCH = 13h
LANG_ENGLISH = 09h
LANG_FINNISH = 0Bh
LANG_FRENCH = 0Ch
LANG_GERMAN = 07h
LANG_GREEK = 08h
LANG_HUNGARIAN = 0Eh
LANG_ICELANDIC = 0Fh
LANG_ITALIAN = 10h
LANG_JAPANESE = 11h
LANG_KOREAN = 12h
LANG_NORWEGIAN = 14h
LANG_POLISH = 15h
LANG_PORTUGUESE = 16h
LANG_ROMANIAN = 18h
LANG_RUSSIAN = 19h
LANG_SLOVAK = 1Bh
LANG_SLOVENIAN = 24h
LANG_SPANISH = 0Ah
LANG_SWEDISH = 1Dh
LANG_THAI = 1Eh
LANG_TURKISH = 1Fh
; Sublanguage identifiers
SUBLANG_NEUTRAL = 00h shl 10
SUBLANG_DEFAULT = 01h shl 10
SUBLANG_SYS_DEFAULT = 02h shl 10
SUBLANG_CHINESE_TRADITIONAL = 01h shl 10
SUBLANG_CHINESE_SIMPLIFIED = 02h shl 10
SUBLANG_CHINESE_HONGKONG = 03h shl 10
SUBLANG_CHINESE_SINGAPORE = 04h shl 10
SUBLANG_DUTCH = 01h shl 10
SUBLANG_DUTCH_BELGIAN = 02h shl 10
SUBLANG_ENGLISH_US = 01h shl 10
SUBLANG_ENGLISH_UK = 02h shl 10
SUBLANG_ENGLISH_AUS = 03h shl 10
SUBLANG_ENGLISH_CAN = 04h shl 10
SUBLANG_ENGLISH_NZ = 05h shl 10
SUBLANG_ENGLISH_EIRE = 06h shl 10
SUBLANG_FRENCH = 01h shl 10
SUBLANG_FRENCH_BELGIAN = 02h shl 10
SUBLANG_FRENCH_CANADIAN = 03h shl 10
SUBLANG_FRENCH_SWISS = 04h shl 10
SUBLANG_GERMAN = 01h shl 10
SUBLANG_GERMAN_SWISS = 02h shl 10
SUBLANG_GERMAN_AUSTRIAN = 03h shl 10
SUBLANG_ITALIAN = 01h shl 10
SUBLANG_ITALIAN_SWISS = 02h shl 10
SUBLANG_NORWEGIAN_BOKMAL = 01h shl 10
SUBLANG_NORWEGIAN_NYNORSK = 02h shl 10
SUBLANG_PORTUGUESE = 02h shl 10
SUBLANG_PORTUGUESE_BRAZILIAN = 01h shl 10
SUBLANG_SPANISH = 01h shl 10
SUBLANG_SPANISH_MEXICAN = 02h shl 10
SUBLANG_SPANISH_MODERN = 03h shl 10
; Sorting identifiers
SORT_DEFAULT = 0 shl 16
SORT_JAPANESE_XJIS = 0 shl 16
SORT_JAPANESE_UNICODE = 1 shl 16
SORT_CHINESE_BIG5 = 0 shl 16
SORT_CHINESE_PRCP = 0 shl 16
SORT_CHINESE_UNICODE = 1 shl 16
SORT_CHINESE_PRC = 2 shl 16
SORT_CHINESE_BOPOMOFO = 3 shl 16
SORT_KOREAN_KSC = 0 shl 16
SORT_KOREAN_UNICODE = 1 shl 16
SORT_GERMAN_PHONE_BOOK = 1 shl 16
SORT_HUNGARIAN_DEFAULT = 0 shl 16
SORT_HUNGARIAN_TECHNICAL = 1 shl 16
; Code pages
CP_ACP = 0 ; default to ANSI code page
CP_OEMCP = 1 ; default to OEM code page
CP_MACCP = 2 ; default to MAC code page
CP_THREAD_ACP = 3 ; current thread's ANSI code page
CP_SYMBOL = 42 ; SYMBOL translations
CP_UTF7 = 65000 ; UTF-7 translation
CP_UTF8 = 65001 ; UTF-8 translation
; Resource types
RT_CURSOR = 1
RT_BITMAP = 2
RT_ICON = 3
RT_MENU = 4
RT_DIALOG = 5
RT_STRING = 6
RT_FONTDIR = 7
RT_FONT = 8
RT_ACCELERATOR = 9
RT_RCDATA = 10
RT_MESSAGETABLE = 11
RT_GROUP_CURSOR = 12
RT_GROUP_ICON = 14
RT_VERSION = 16
RT_DLGINCLUDE = 17
RT_PLUGPLAY = 19
RT_VXD = 20
RT_ANICURSOR = 21
RT_ANIICON = 22
RT_HTML = 23
RT_MANIFEST = 24
; Clipboard formats
CF_TEXT = 001h
CF_BITMAP = 002h
CF_METAFILEPICT = 003h
CF_SYLK = 004h
CF_DIF = 005h
CF_TIFF = 006h
CF_OEMTEXT = 007h
CF_DIB = 008h
CF_PALETTE = 009h
CF_PENDATA = 00Ah
CF_RIFF = 00Bh
CF_WAVE = 00Ch
CF_UNICODETEXT = 00Dh
CF_ENHMETAFILE = 00Eh
CF_HDROP = 00Fh
CF_LOCALE = 010h
CF_OWNERDISPLAY = 080h
CF_DSPTEXT = 081h
CF_DSPBITMAP = 082h
CF_DSPMETAFILEPICT = 083h
CF_DSPENHMETAFILE = 08Eh
CF_PRIVATEFIRST = 200h
CF_PRIVATELAST = 2FFh
CF_GDIOBJFIRST = 300h
CF_GDIOBJLAST = 3FFh
; OS types for version info
VOS_UNKNOWN = 00000000h
VOS_DOS = 00010000h
VOS_OS216 = 00020000h
VOS_OS232 = 00030000h
VOS_NT = 00040000h
VOS__BASE = 00000000h
VOS__WINDOWS16 = 00000001h
VOS__PM16 = 00000002h
VOS__PM32 = 00000003h
VOS__WINDOWS32 = 00000004h
VOS_DOS_WINDOWS16 = 00010001h
VOS_DOS_WINDOWS32 = 00010004h
VOS_OS216_PM16 = 00020002h
VOS_OS232_PM32 = 00030003h
VOS_NT_WINDOWS32 = 00040004h
; File types for version info
VFT_UNKNOWN = 00000000h
VFT_APP = 00000001h
VFT_DLL = 00000002h
VFT_DRV = 00000003h
VFT_FONT = 00000004h
VFT_VXD = 00000005h
VFT_STATIC_LIB = 00000007h
; File subtypes for version info
VFT2_UNKNOWN = 00000000h
VFT2_DRV_PRINTER = 00000001h
VFT2_DRV_KEYBOARD = 00000002h
VFT2_DRV_LANGUAGE = 00000003h
VFT2_DRV_DISPLAY = 00000004h
VFT2_DRV_MOUSE = 00000005h
VFT2_DRV_NETWORK = 00000006h
VFT2_DRV_SYSTEM = 00000007h
VFT2_DRV_INSTALLABLE = 00000008h
VFT2_DRV_SOUND = 00000009h
VFT2_DRV_COMM = 0000000Ah
VFT2_DRV_INPUTMETHOD = 0000000Bh
VFT2_DRV_VERSIONED_PRINTER = 0000000Ch
VFT2_FONT_RASTER = 00000001h
VFT2_FONT_VECTOR = 00000002h
VFT2_FONT_TRUETYPE = 00000003h
; Console control signals
CTRL_C_EVENT = 0
CTRL_BREAK_EVENT = 1
CTRL_CLOSE_EVENT = 2
CTRL_LOGOFF_EVENT = 5
CTRL_SHUTDOWN_EVENT = 6

View File

@@ -0,0 +1,128 @@
; SHELL32.DLL structures and constants
struct NOTIFYICONDATA
cbSize dd ?
hWnd dd ?
uID dd ?
uFlags dd ?
uCallbackMessage dd ?
hIcon dd ?
szTip TCHAR 64 dup (?)
ends
struct NOTIFYICONDATAA
cbSize dd ?
hWnd dd ?
uID dd ?
uFlags dd ?
uCallbackMessage dd ?
hIcon dd ?
szTip db 64 dup (?)
ends
struct NOTIFYICONDATAW
cbSize dd ?
hWnd dd ?
uID dd ?
uFlags dd ?
uCallbackMessage dd ?
hIcon dd ?
szTip du 64 dup (?)
ends
struct BROWSEINFO
hwndOwner dd ?
pidlRoot dd ?
pszDisplayName dd ?
lpszTitle dd ?
ulFlags dd ?
lpfn dd ?
lParam dd ?
iImage dd ?
ends
; Taskbar icon messages
NIM_ADD = 0
NIM_MODIFY = 1
NIM_DELETE = 2
NIM_SETFOCUS = 3
NIM_SETVERSION = 4
; Taskbar icon flags
NIF_MESSAGE = 01h
NIF_ICON = 02h
NIF_TIP = 04h
NIF_STATE = 08h
NIF_INFO = 10h
NIF_GUID = 20h
; Constant Special Item ID List
CSIDL_DESKTOP = 0x0000
CSIDL_INTERNET = 0x0001
CSIDL_PROGRAMS = 0x0002
CSIDL_CONTROLS = 0x0003
CSIDL_PRINTERS = 0x0004
CSIDL_PERSONAL = 0x0005
CSIDL_FAVORITES = 0x0006
CSIDL_STARTUP = 0x0007
CSIDL_RECENT = 0x0008
CSIDL_SENDTO = 0x0009
CSIDL_BITBUCKET = 0x000A
CSIDL_STARTMENU = 0x000B
CSIDL_MYDOCUMENTS = 0x000C
CSIDL_MYMUSIC = 0x000D
CSIDL_MYVIDEO = 0x000E
CSIDL_DESKTOPDIRECTORY = 0x0010
CSIDL_DRIVES = 0x0011
CSIDL_NETWORK = 0x0012
CSIDL_NETHOOD = 0x0013
CSIDL_FONTS = 0x0014
CSIDL_TEMPLATES = 0x0015
CSIDL_COMMON_STARTMENU = 0x0016
CSIDL_COMMON_PROGRAMS = 0x0017
CSIDL_COMMON_STARTUP = 0x0018
CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019
CSIDL_APPDATA = 0x001A
CSIDL_PRINTHOOD = 0x001B
CSIDL_LOCAL_APPDATA = 0x001C
CSIDL_ALTSTARTUP = 0x001D
CSIDL_COMMON_ALTSTARTUP = 0x001E
CSIDL_COMMON_FAVORITES = 0x001F
CSIDL_INTERNET_CACHE = 0x0020
CSIDL_COOKIES = 0x0021
CSIDL_HISTORY = 0x0022
CSIDL_COMMON_APPDATA = 0x0023
CSIDL_WINDOWS = 0x0024
CSIDL_SYSTEM = 0x0025
CSIDL_PROGRAM_FILES = 0x0026
CSIDL_MYPICTURES = 0x0027
CSIDL_PROFILE = 0x0028
CSIDL_SYSTEMX86 = 0x0029
CSIDL_PROGRAM_FILESX86 = 0x002A
CSIDL_PROGRAM_FILES_COMMON = 0x002B
CSIDL_PROGRAM_FILES_COMMONX86 = 0x002C
CSIDL_COMMON_TEMPLATES = 0x002D
CSIDL_COMMON_DOCUMENTS = 0x002E
CSIDL_COMMON_ADMINTOOLS = 0x002F
CSIDL_ADMINTOOLS = 0x0030
CSIDL_CONNECTIONS = 0x0031
CSIDL_COMMON_MUSIC = 0x0035
CSIDL_COMMON_PICTURES = 0x0036
CSIDL_COMMON_VIDEO = 0x0037
CSIDL_RESOURCES = 0x0038
CSIDL_RESOURCES_LOCALIZED = 0x0039
CSIDL_COMMON_OEM_LINKS = 0x003A
CSIDL_CDBURN_AREA = 0x003B
CSIDL_COMPUTERSNEARME = 0x003D
CSIDL_PROFILES = 0x003E
CSIDL_FOLDER_MASK = 0x00FF
CSIDL_FLAG_PER_USER_INIT = 0x0800
CSIDL_FLAG_NO_ALIAS = 0x1000
CSIDL_FLAG_DONT_VERIFY = 0x4000
CSIDL_FLAG_CREATE = 0x8000
CSIDL_FLAG_MASK = 0xFF00

View File

@@ -0,0 +1,127 @@
; SHELL32.DLL structures and constants
struct NOTIFYICONDATA
cbSize dd ?,?
hWnd dq ?
uID dd ?
uFlags dd ?
uCallbackMessage dd ?,?
hIcon dq ?
szTip TCHAR 64 dup (?)
ends
struct NOTIFYICONDATAA
cbSize dd ?,?
hWnd dq ?
uID dd ?
uFlags dd ?
uCallbackMessage dd ?,?
hIcon dq ?
szTip db 64 dup (?)
ends
struct NOTIFYICONDATAW
cbSize dd ?,?
hWnd dq ?
uID dd ?
uFlags dd ?
uCallbackMessage dd ?,?
hIcon dq ?
szTip du 64 dup (?)
ends
struct BROWSEINFO
hwndOwner dq ?
pidlRoot dq ?
pszDisplayName dq ?
lpszTitle dq ?
ulFlags dd ?,?
lpfn dq ?
lParam dq ?
iImage dq ?
ends
; Taskbar icon messages
NIM_ADD = 0
NIM_MODIFY = 1
NIM_DELETE = 2
NIM_SETFOCUS = 3
NIM_SETVERSION = 4
; Taskbar icon flags
NIF_MESSAGE = 01h
NIF_ICON = 02h
NIF_TIP = 04h
NIF_STATE = 08h
NIF_INFO = 10h
NIF_GUID = 20h
; Constant Special Item ID List
CSIDL_DESKTOP = 0x0000
CSIDL_INTERNET = 0x0001
CSIDL_PROGRAMS = 0x0002
CSIDL_CONTROLS = 0x0003
CSIDL_PRINTERS = 0x0004
CSIDL_PERSONAL = 0x0005
CSIDL_FAVORITES = 0x0006
CSIDL_STARTUP = 0x0007
CSIDL_RECENT = 0x0008
CSIDL_SENDTO = 0x0009
CSIDL_BITBUCKET = 0x000A
CSIDL_STARTMENU = 0x000B
CSIDL_MYDOCUMENTS = 0x000C
CSIDL_MYMUSIC = 0x000D
CSIDL_MYVIDEO = 0x000E
CSIDL_DESKTOPDIRECTORY = 0x0010
CSIDL_DRIVES = 0x0011
CSIDL_NETWORK = 0x0012
CSIDL_NETHOOD = 0x0013
CSIDL_FONTS = 0x0014
CSIDL_TEMPLATES = 0x0015
CSIDL_COMMON_STARTMENU = 0x0016
CSIDL_COMMON_PROGRAMS = 0x0017
CSIDL_COMMON_STARTUP = 0x0018
CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019
CSIDL_APPDATA = 0x001A
CSIDL_PRINTHOOD = 0x001B
CSIDL_LOCAL_APPDATA = 0x001C
CSIDL_ALTSTARTUP = 0x001D
CSIDL_COMMON_ALTSTARTUP = 0x001E
CSIDL_COMMON_FAVORITES = 0x001F
CSIDL_INTERNET_CACHE = 0x0020
CSIDL_COOKIES = 0x0021
CSIDL_HISTORY = 0x0022
CSIDL_COMMON_APPDATA = 0x0023
CSIDL_WINDOWS = 0x0024
CSIDL_SYSTEM = 0x0025
CSIDL_PROGRAM_FILES = 0x0026
CSIDL_MYPICTURES = 0x0027
CSIDL_PROFILE = 0x0028
CSIDL_SYSTEMX86 = 0x0029
CSIDL_PROGRAM_FILESX86 = 0x002A
CSIDL_PROGRAM_FILES_COMMON = 0x002B
CSIDL_PROGRAM_FILES_COMMONX86 = 0x002C
CSIDL_COMMON_TEMPLATES = 0x002D
CSIDL_COMMON_DOCUMENTS = 0x002E
CSIDL_COMMON_ADMINTOOLS = 0x002F
CSIDL_ADMINTOOLS = 0x0030
CSIDL_CONNECTIONS = 0x0031
CSIDL_COMMON_MUSIC = 0x0035
CSIDL_COMMON_PICTURES = 0x0036
CSIDL_COMMON_VIDEO = 0x0037
CSIDL_RESOURCES = 0x0038
CSIDL_RESOURCES_LOCALIZED = 0x0039
CSIDL_COMMON_OEM_LINKS = 0x003A
CSIDL_CDBURN_AREA = 0x003B
CSIDL_COMPUTERSNEARME = 0x003D
CSIDL_PROFILES = 0x003E
CSIDL_FOLDER_MASK = 0x00FF
CSIDL_FLAG_PER_USER_INIT = 0x0800
CSIDL_FLAG_NO_ALIAS = 0x1000
CSIDL_FLAG_DONT_VERIFY = 0x4000
CSIDL_FLAG_CREATE = 0x8000
CSIDL_FLAG_MASK = 0xFF00

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,124 @@
; WSOCK32.DLL structures and constants
struct WSADATA
wVersion dw ?
wHighVersion dw ?
szDescription db 256+1 dup (?)
szSystemStatus db 128+1 dup (?)
iMaxSockets dw ?
iMaxUdpDg dw ?
_padding_ db 2 dup (?)
lpVendorInfo dd ?
ends
struct hostent
h_name dd ?
h_aliases dd ?
h_addrtype dw ?
h_length dw ?
h_addr_list dd ?
ends
struct sockaddr_in
sin_family dw ?
sin_port dw ?
sin_addr dd ?
sin_zero db 8 dup (?)
ends
struct sockaddr
sa_family dw ?
sa_data db 14 dup (?)
ends
; Socket types
SOCK_STREAM = 1
SOCK_DGRAM = 2
SOCK_RAW = 3
SOCK_RDM = 4
SOCK_SEQPACKET = 5
; Address formats
AF_UNSPEC = 0
AF_UNIX = 1
AF_INET = 2
AF_IMPLINK = 3
AF_PUP = 4
AF_CHAOS = 5
AF_NS = 6
AF_IPX = 6
AF_ISO = 7
AF_OSI = AF_ISO
AF_ECMA = 8
AF_DATAKIT = 9
AF_CCITT = 10
AF_SNA = 11
AF_DECnet = 12
AF_DLI = 13
AF_LAT = 14
AF_HYLINK = 15
AF_APPLETALK = 16
AF_NETBIOS = 17
; Protocol formats
PF_UNSPEC = 0
PF_UNIX = 1
PF_INET = 2
PF_IMPLINK = 3
PF_PUP = 4
PF_CHAOS = 5
PF_NS = 6
PF_IPX = 6
PF_ISO = 7
PF_OSI = PF_ISO
PF_ECMA = 8
PF_DATAKIT = 9
PF_CCITT = 10
PF_SNA = 11
PF_DECnet = 12
PF_DLI = 13
PF_LAT = 14
PF_HYLINK = 15
PF_APPLETALK = 16
PF_NETBIOS = 17
; IP Ports
IPPORT_ECHO = 7
IPPORT_DISCARD = 9
IPPORT_SYSTAT = 11
IPPORT_DAYTIME = 13
IPPORT_NETSTAT = 15
IPPORT_FTP = 21
IPPORT_TELNET = 23
IPPORT_SMTP = 25
IPPORT_TIMESERVER = 37
IPPORT_NAMESERVER = 42
IPPORT_WHOIS = 43
IPPORT_MTP = 57
IPPORT_TFTP = 69
IPPORT_RJE = 77
IPPORT_FINGER = 79
IPPORT_TTYLINK = 87
IPPORT_SUPDUP = 95
IPPORT_EXECSERVER = 512
IPPORT_LOGINSERVER = 513
IPPORT_CMDSERVER = 514
IPPORT_EFSSERVER = 520
IPPORT_BIFFUDP = 512
IPPORT_WHOSERVER = 513
IPPORT_ROUTESERVER = 520
IPPORT_RESERVED = 1024
; Notifications
FD_READ = 01h
FD_WRITE = 02h
FD_OOB = 04h
FD_ACCEPT = 08h
FD_CONNECT = 10h
FD_CLOSE = 20h

View File

@@ -0,0 +1,53 @@
; Macroinstructions for interfacing the COM (Component Object Model) classes
macro cominvk object,proc,[arg]
{ common
if ~ arg eq
reverse
pushd arg
common
end if
assert defined object#.com.object ; must be a COM object
mov eax,[object]
push eax
mov eax,[eax]
call [eax+object#.#proc] }
macro comcall handle,interface,proc,[arg]
{ common
if ~ arg eq
reverse
pushd arg
common
end if
assert defined interface#.com.interface ; must be a COM interface
if handle eqtype eax | handle eqtype 0
push handle
local ..handle
label ..handle at handle
mov eax,[..handle]
else
mov eax,handle
push eax
mov eax,[eax]
end if
call [eax+interface#.#proc] }
macro interface name,[proc]
{ common
struc name \{
match , @struct \\{ define field@struct .,name, \\}
match no, @struct \\{ . dd ?
virtual at 0
forward
.#proc dd ?
common
.\#\\.com.object = name#.com.interface
end virtual \\} \}
virtual at 0
forward
name#.#proc dd ?
common
name#.com.interface = $ shr 2
end virtual }

View File

@@ -0,0 +1,39 @@
; Macroinstructions for interfacing the COM (Component Object Model) classes
macro cominvk object,proc,[arg]
{ common
assert defined object#.com.object ; must be a COM object
macro call dummy
\{ mov rax,[rcx]
call [rax+object#.#proc] \}
fastcall ,[object],arg
purge call }
macro comcall handle,interface,proc,[arg]
{ common
assert defined interface#.com.interface ; must be a COM interface
macro call dummy
\{ mov rax,[rcx]
call [rax+interface#.#proc] \}
fastcall ,handle,arg
purge call }
macro interface name,[proc]
{ common
struc name \{
match , @struct \\{ define field@struct .,name, \\}
match no, @struct \\{ . dq ?
virtual at 0
forward
.#proc dq ?
common
.\#\\.com.object = name#.com.interface
end virtual \\} \}
virtual at 0
forward
name#.#proc dq ?
common
name#.com.interface = $ shr 3
end virtual }

View File

@@ -0,0 +1,66 @@
; Macroinstruction for making export section
macro export dllname,[label,string]
{ common
local module,addresses,names,ordinal,count
count = 0
forward
count = count+1
common
dd 0,0,0,RVA module,1
dd count,count,RVA addresses,RVA names,RVA ordinal
addresses:
forward
dd RVA label
common
names:
forward
local name
dd RVA name
common
ordinal: count = 0
forward
dw count
count = count+1
common
module db dllname,0
forward
name db string,0
common
local x,y,z,str1,str2,v1,v2
x = count shr 1
while x > 0
y = x
while y < count
z = y
while z-x >= 0
load v1 dword from names+z*4
str1=($-RVA $)+v1
load v2 dword from names+(z-x)*4
str2=($-RVA $)+v2
while v1 > 0
load v1 from str1+%-1
load v2 from str2+%-1
if v1 <> v2
break
end if
end while
if v1<v2
load v1 dword from names+z*4
load v2 dword from names+(z-x)*4
store dword v1 at names+(z-x)*4
store dword v2 at names+z*4
load v1 word from ordinal+z*2
load v2 word from ordinal+(z-x)*2
store word v1 at ordinal+(z-x)*2
store word v2 at ordinal+z*2
else
break
end if
z = z-x
end while
y = y+1
end while
x = x shr 1
end while }

View File

@@ -0,0 +1,507 @@
; Macroinstructions for HLL-style conditional operations
macro .if [arg]
{
common
__IF equ
local ..endif
__ENDIF equ ..endif
local ..else
__ELSE equ ..else
JNCOND __ELSE,arg
}
macro .else
{
jmp __ENDIF
__ELSE:
restore __IF
__IF equ ,
}
macro .elseif [arg]
{
common
jmp __ENDIF
__ELSE:
restore __ELSE
local ..else
__ELSE equ ..else
JNCOND __ELSE,arg
}
macro .endif
{
if __IF eq
__ELSE:
end if
__ENDIF:
restore __ELSE
restore __ENDIF
restore __IF
}
macro .while [arg]
{
common
local ..while
__WHILE equ ..while
local ..endw
__ENDW equ ..endw
__WHILE:
JNCOND __ENDW,arg
}
macro .endw
{
jmp __WHILE
__ENDW:
restore __ENDW
restore __WHILE
}
macro .repeat
{
local ..repeat
__REPEAT equ ..repeat
__REPEAT:
}
macro .until [arg]
{
common
JNCOND __REPEAT,arg
restore __REPEAT
}
jnne equ je
jnna equ ja
jnnb equ jb
jnng equ jg
jnnl equ jl
jnnae equ jae
jnnbe equ jbe
jnnge equ jge
jnnle equ jle
macro JNCOND label,v1,c,v2
{
match any,c
\{
cmp v1,v2
jn\#c label
\}
match ,c
\{
PARSECOND parsed@cond,v1
match cond,parsed@cond \\{ JNCONDEXPR label,cond \\}
\}
}
gt equ >
lt equ <
macro PARSECOND parsed,cond
{
define parsed
define neg@cond
define status@cond
define nest@cond
irps symb,cond
\{
define symb@cond symb
match >,symb
\\{
define symb@cond gt
\\}
match <,symb
\\{
define symb@cond lt
\\}
current@cond equ status@cond
match ,current@cond
\\{
match ~,symb
\\\{
neg@cond equ neg@cond ~
match ~~,neg@cond
\\\\{
define neg@cond
\\\\}
define symb@cond
\\\}
match (,symb
\\\{
parsed equ parsed neg@cond,<
define nest@cond +
define symb@cond
define neg@cond
\\\}
match any,symb@cond
\\\{
parsed equ parsed neg@cond,symb@cond
define status@cond +
\\\}
\\}
match status,current@cond
\\{
match &,symb
\\\{
parsed equ parsed,&,
define status@cond
define symb@cond
define neg@cond
\\\}
match |,symb
\\\{
parsed equ parsed,|,
define status@cond
define symb@cond
define neg@cond
\\\}
match (,symb
\\\{
define nest@cond (
\\\}
match ),symb
\\\{
match +,nest@cond
\\\\{
parsed equ parsed>
define symb@cond
\\\\}
restore nest@cond
\\\}
match any,symb@cond
\\\{
parsed equ parsed symb@cond
\\\}
\\}
\}
}
macro define_JNCONDEXPR
{
macro JNCONDEXPR elabel,[mod,cond,op]
\{
\common
\local ..t,..f
define t@cond ..t
define f@cond ..f
\forward
match ,op
\\{
match ,mod \\\{ JNCONDEL elabel,<cond> \\\}
match ~,mod \\\{ JCONDEL elabel,<cond> \\\}
\\}
match &:flabel:tlabel, op:f@cond:t@cond
\\{
match ,mod \\\{ JNCONDEL flabel,<cond> \\\}
match ~,mod \\\{ JCONDEL flabel,<cond> \\\}
tlabel:
\\local ..tnew
restore t@cond
define t@cond ..tnew
\\}
match |:flabel:tlabel, op:f@cond:t@cond
\\{
match ,mod \\\{ JCONDEL tlabel,<cond> \\\}
match ~,mod \\\{ JNCONDEL tlabel,<cond> \\\}
flabel:
\\local ..fnew
restore f@cond
define f@cond ..fnew
\\}
\common
label f@cond at elabel
t@cond:
restore t@cond
restore f@cond
\}
}
macro define_JCONDEXPR
{
macro JCONDEXPR elabel,[mod,cond,op]
\{
\common
\local ..t,..f
define t@cond ..t
define f@cond ..f
\forward
match ,op
\\{
match ,mod \\\{ JCONDEL elabel,<cond> \\\}
match ~,mod \\\{ JNCONDEL elabel,<cond> \\\}
\\}
match |:flabel:tlabel, op:f@cond:t@cond
\\{
match ,mod \\\{ JCONDEL flabel,<cond> \\\}
match ~,mod \\\{ JNCONDEL flabel,<cond> \\\}
tlabel:
\\local ..tnew
restore t@cond
define t@cond ..tnew
\\}
match &:flabel:tlabel, op:f@cond:t@cond
\\{
match ,mod \\\{ JNCONDEL tlabel,<cond> \\\}
match ~,mod \\\{ JCONDEL tlabel,<cond> \\\}
flabel:
\\local ..fnew
restore f@cond
define f@cond ..fnew
\\}
\common
label f@cond at elabel
t@cond:
restore t@cond
restore f@cond
\}
}
macro define_JNCONDEL
{
macro JNCONDEL label,cond
\{
\local COND
match car=,cdr,:cond
\\{
define_JNCONDEXPR
define_JCONDEXPR
define_JCONDEL
define_JNCONDEL
JNCONDEXPR label,cond
purge JNCONDEXPR,JCONDEXPR,JCONDEL,JNCONDEL
define COND
\\}
match c,cond ; replace gt and lt
\\{
match =COND =signed v1>==v2, COND c
\\\{
cmp v1,v2
jl label
define COND
\\\}
match =COND =signed v1<==v2, COND c
\\\{
cmp v1,v2
jg label
define COND
\\\}
match =COND v1>==v2, COND c
\\\{
cmp v1,v2
jb label
define COND
\\\}
match =COND v1<==v2, COND c
\\\{
cmp v1,v2
ja label
define COND
\\\}
match =COND v1==v2, COND c
\\\{
cmp v1,v2
jne label
define COND
\\\}
match =COND v1<>v2, COND c
\\\{
cmp v1,v2
je label
define COND
\\\}
match =COND =signed v1>v2, COND c
\\\{
cmp v1,v2
jle label
define COND
\\\}
match =COND =signed v1<v2, COND c
\\\{
cmp v1,v2
jge label
define COND
\\\}
match =COND v1>v2, COND c
\\\{
cmp v1,v2
jbe label
define COND
\\\}
match =COND v1<v2, COND c
\\\{
cmp v1,v2
jae label
define COND
\\\}
match =COND =ZERO?, COND c
\\\{
jnz label
define COND
\\\}
match =COND =CARRY?, COND c
\\\{
jnc label
define COND
\\\}
match =COND =OVERFLOW?, COND c
\\\{
jno label
define COND
\\\}
match =COND =SIGN?, COND c
\\\{
jns label
define COND
\\\}
match =COND =PARITY?, COND c
\\\{
jnp label
define COND
\\\}
match =COND v, COND c
\\\{
if v eqtype 0
if ~ v
jmp label
end if
else if v eqtype eax
test v,v
jz label
else
cmp v,0
je label
end if
\\\}
\\}
\}
}
macro define_JCONDEL
{
macro JCONDEL label,cond
\{
\local COND
match car=,cdr,:cond
\\{
define_JNCONDEXPR
define_JCONDEXPR
define_JCONDEL
define_JNCONDEL
JCONDEXPR label,cond
purge JNCONDEXPR,JCONDEXPR,JCONDEL,JNCONDEL
define COND
\\}
match c,cond ; replace gt and lt
\\{
match =COND =signed v1>==v2, COND c
\\\{
cmp v1,v2
jge label
define COND
\\\}
match =COND =signed v1<==v2, COND c
\\\{
cmp v1,v2
jle label
define COND
\\\}
match =COND v1>==v2, COND c
\\\{
cmp v1,v2
jae label
define COND
\\\}
match =COND v1<==v2, COND c
\\\{
cmp v1,v2
jbe label
define COND
\\\}
match =COND v1==v2, COND c
\\\{
cmp v1,v2
je label
define COND
\\\}
match =COND v1<>v2, COND c
\\\{
cmp v1,v2
jne label
define COND
\\\}
match =COND =signed v1>v2, COND c
\\\{
cmp v1,v2
jg label
define COND
\\\}
match =COND =signed v1<v2, COND c
\\\{
cmp v1,v2
jl label
define COND
\\\}
match =COND v1>v2, COND c
\\\{
cmp v1,v2
ja label
define COND
\\\}
match =COND v1<v2, COND c
\\\{
cmp v1,v2
jb label
define COND
\\\}
match =COND =ZERO?, COND c
\\\{
jz label
define COND
\\\}
match =COND =CARRY?, COND c
\\\{
jc label
define COND
\\\}
match =COND =OVERFLOW?, COND c
\\\{
jo label
define COND
\\\}
match =COND =SIGN?, COND c
\\\{
js label
define COND
\\\}
match =COND =PARITY?, COND c
\\\{
jp label
define COND
\\\}
match =COND v, COND c
\\\{
if v eqtype 0
if v
jmp label
end if
else if v eqtype eax
test v,v
jnz label
else
cmp v,0
jne label
end if
\\\}
\\}
\}
}
define_JNCONDEXPR
define_JCONDEXPR
define_JNCONDEL
define_JCONDEL

View File

@@ -0,0 +1,68 @@
; Macroinstructions for making import section
macro library [name,string]
{ common
import.data:
forward
local _label
if defined name#.redundant
if ~ name#.redundant
dd RVA name#.lookup,0,0,RVA _label,RVA name#.address
end if
end if
name#.referred = 1
common
dd 0,0,0,0,0
forward
if defined name#.redundant
if ~ name#.redundant
_label db string,0
rb RVA $ and 1
end if
end if }
macro import name,[label,string]
{ common
rb (- rva $) and 3
if defined name#.referred
name#.lookup:
forward
if used label
if string eqtype ''
local _label
dd RVA _label
else
dd 80000000h + string
end if
end if
common
if $ > name#.lookup
name#.redundant = 0
dd 0
else
name#.redundant = 1
end if
name#.address:
forward
if used label
if string eqtype ''
label dd RVA _label
else
label dd 80000000h + string
end if
end if
common
if ~ name#.redundant
dd 0
end if
forward
if used label & string eqtype ''
_label dw 0
db string,0
rb RVA $ and 1
end if
common
end if }
macro api [name] {}

View File

@@ -0,0 +1,68 @@
; Macroinstructions for making import section (64-bit)
macro library [name,string]
{ common
import.data:
forward
local _label
if defined name#.redundant
if ~ name#.redundant
dd RVA name#.lookup,0,0,RVA _label,RVA name#.address
end if
end if
name#.referred = 1
common
dd 0,0,0,0,0
forward
if defined name#.redundant
if ~ name#.redundant
_label db string,0
rb RVA $ and 1
end if
end if }
macro import name,[label,string]
{ common
rb (- rva $) and 7
if defined name#.referred
name#.lookup:
forward
if used label
if string eqtype ''
local _label
dq RVA _label
else
dq 8000000000000000h + string
end if
end if
common
if $ > name#.lookup
name#.redundant = 0
dq 0
else
name#.redundant = 1
end if
name#.address:
forward
if used label
if string eqtype ''
label dq RVA _label
else
label dq 8000000000000000h + string
end if
end if
common
if ~ name#.redundant
dq 0
end if
forward
if used label & string eqtype ''
_label dw 0
db string,0
rb RVA $ and 1
end if
common
end if }
macro api [name] {}

View File

@@ -0,0 +1,66 @@
; Simulate MASM's syntax
struc struct
{ struct .
name@struct equ . }
struc ends
{ match =.,name@struct \{ ends \} }
struc proc [params]
{ common define@proc .,<params>
name@proc equ . }
struc endp
{ match =.,name@proc \{ endp \} }
macro option setting
{ match =prologue:macro, setting \{ prologue@proc equ macro \}
match =epilogue:macro, setting \{ epilogue@proc equ macro \} }
macro none procname,flag,parmbytes,localbytes,reglist { }
macro assume params
{
local expr
define expr params
match reg:struct, expr
\{
match assumed, reg\#@assumed \\{ irp name, assumed \\\{ restore name \\\} \\}
macro label . \\{ local def
define def .
match =reg =at label, def \\\{ define def \\\}
match name at,def \\\{ def@assumed reg,name,label at
define def \\\}
match name,def \\\{ def@assumed reg,.,: \\\} \\}
struc db [val] \\{ \common def@assumed reg,.,<db val> \\}
struc dw [val] \\{ \common def@assumed reg,.,<dw val> \\}
struc dp [val] \\{ \common def@assumed reg,.,<dp val> \\}
struc dd [val] \\{ \common def@assumed reg,.,<dd val> \\}
struc dt [val] \\{ \common def@assumed reg,.,<dt val> \\}
struc dq [val] \\{ \common def@assumed reg,.,<dq val> \\}
struc rb cnt \\{ def@assumed reg,.,rb cnt \\}
struc rw cnt \\{ def@assumed reg,.,rw cnt \\}
struc rp cnt \\{ def@assumed reg,.,rp cnt \\}
struc rd cnt \\{ def@assumed reg,.,rd cnt \\}
struc rt cnt \\{ def@assumed reg,.,rt cnt \\}
struc rq cnt \\{ def@assumed reg,.,rq cnt \\}
reg\#@assumed equ
virtual at reg
reg struct
end virtual
purge label
restruc db,dw,dp,dd,dt,dq
restruc rb,rw,rp,rd,rt,rq \} }
macro def@assumed reg,name,def
{ match vars, reg#@assumed \{ reg#@assumed equ reg#@assumed, \}
reg#@assumed equ reg#@assumed name
local ..label
name equ ..label
..label def }
struc label type { label . type }
struc none { label . }

View File

@@ -0,0 +1,301 @@
; Macroinstructions for defining and calling procedures
macro stdcall proc,[arg] ; directly call STDCALL procedure
{ common
if ~ arg eq
reverse
pushd arg
common
end if
call proc }
macro invoke proc,[arg] ; indirectly call STDCALL procedure
{ common
if ~ arg eq
reverse
pushd arg
common
end if
call [proc] }
macro ccall proc,[arg] ; directly call CDECL procedure
{ common
size@ccall = 0
if ~ arg eq
reverse
pushd arg
size@ccall = size@ccall+4
common
end if
call proc
if size@ccall
add esp,size@ccall
end if }
macro cinvoke proc,[arg] ; indirectly call CDECL procedure
{ common
size@ccall = 0
if ~ arg eq
reverse
pushd arg
size@ccall = size@ccall+4
common
end if
call [proc]
if size@ccall
add esp,size@ccall
end if }
macro proc [args] ; define procedure
{ common
match name params, args>
\{ define@proc name,<params \} }
prologue@proc equ prologuedef
macro prologuedef procname,flag,parmbytes,localbytes,reglist
{ local loc
loc = (localbytes+3) and (not 3)
parmbase@proc equ ebp+8
localbase@proc equ ebp-loc
if parmbytes | localbytes
push ebp
mov ebp,esp
if localbytes
sub esp,loc
end if
end if
irps reg, reglist \{ push reg \} }
epilogue@proc equ epiloguedef
macro epiloguedef procname,flag,parmbytes,localbytes,reglist
{ irps reg, reglist \{ reverse pop reg \}
if parmbytes | localbytes
leave
end if
if flag and 10000b
retn
else
retn parmbytes
end if }
close@proc equ
macro define@proc name,statement
{ local params,flag,regs,parmbytes,localbytes,current
if used name
name:
match =stdcall args, statement \{ params equ args
flag = 11b \}
match =stdcall, statement \{ params equ
flag = 11b \}
match =c args, statement \{ params equ args
flag = 10001b \}
match =c, statement \{ params equ
flag = 10001b \}
match =params, params \{ params equ statement
flag = 0 \}
match =uses reglist=,args, params \{ regs equ reglist
params equ args \}
match =regs =uses reglist, regs params \{ regs equ reglist
params equ \}
match =regs, regs \{ regs equ \}
match prologue:reglist, prologue@proc:<regs> \{ prologue name,flag,parmbytes,localbytes,reglist \}
virtual at parmbase@proc
match =,args, params \{ defargs@proc args \}
match =args@proc args, args@proc params \{ defargs@proc args \}
parmbytes = $-(parmbase@proc)
end virtual
name # % = parmbytes/4
all@vars equ
current = 0
macro locals
\{ virtual at localbase@proc+current
macro label def \\{ match . type,def> \\\{ deflocal@proc .,label,<type \\\} \\}
struc db [val] \\{ \common deflocal@proc .,db,val \\}
struc du [val] \\{ \common deflocal@proc .,du,val \\}
struc dw [val] \\{ \common deflocal@proc .,dw,val \\}
struc dp [val] \\{ \common deflocal@proc .,dp,val \\}
struc dd [val] \\{ \common deflocal@proc .,dd,val \\}
struc dt [val] \\{ \common deflocal@proc .,dt,val \\}
struc dq [val] \\{ \common deflocal@proc .,dq,val \\}
struc rb cnt \\{ deflocal@proc .,rb cnt, \\}
struc rw cnt \\{ deflocal@proc .,rw cnt, \\}
struc rp cnt \\{ deflocal@proc .,rp cnt, \\}
struc rd cnt \\{ deflocal@proc .,rd cnt, \\}
struc rt cnt \\{ deflocal@proc .,rt cnt, \\}
struc rq cnt \\{ deflocal@proc .,rq cnt, \\} \}
macro endl
\{ purge label
restruc db,du,dw,dp,dd,dt,dq
restruc rb,rw,rp,rd,rt,rq
current = $-(localbase@proc)
end virtual \}
macro ret operand
\{ match any, operand \\{ retn operand \\}
match , operand \\{ match epilogue:reglist, epilogue@proc:<regs> \\\{ epilogue name,flag,parmbytes,localbytes,reglist \\\} \\} \}
macro finish@proc
\{ localbytes = current
match close:reglist, close@proc:<regs> \\{ close name,flag,parmbytes,localbytes,reglist \\}
end if \} }
macro defargs@proc [arg]
{ common
if ~ arg eq
forward
local ..arg,current@arg
match argname:type, arg
\{ current@arg equ argname
label ..arg type
argname equ ..arg
if qqword eq type
dd ?,?,?,?,?,?,?,?
else if dqword eq type
dd ?,?,?,?
else if tbyte eq type
dd ?,?,?
else if qword eq type | pword eq type
dd ?,?
else
dd ?
end if \}
match =current@arg,current@arg
\{ current@arg equ arg
arg equ ..arg
..arg dd ? \}
common
args@proc equ current@arg
forward
restore current@arg
common
end if }
macro deflocal@proc name,def,[val] { name def val }
macro deflocal@proc name,def,[val]
{ common
match vars, all@vars \{ all@vars equ all@vars, \}
all@vars equ all@vars name
forward
local ..var,..tmp
..var def val
match =?, val \{ ..tmp equ \}
match any =?, val \{ ..tmp equ \}
match any (=?), val \{ ..tmp equ \}
match =label, def \{ ..tmp equ \}
match tmp : value, ..tmp : val
\{ tmp: end virtual
initlocal@proc ..var,def value
virtual at tmp\}
common
match first rest, ..var, \{ name equ first \} }
struc label type { label . type }
macro initlocal@proc name,def
{ virtual at name
def
size@initlocal = $ - name
end virtual
position@initlocal = 0
while size@initlocal > position@initlocal
virtual at name
def
if size@initlocal - position@initlocal < 2
current@initlocal = 1
load byte@initlocal byte from name+position@initlocal
else if size@initlocal - position@initlocal < 4
current@initlocal = 2
load word@initlocal word from name+position@initlocal
else
current@initlocal = 4
load dword@initlocal dword from name+position@initlocal
end if
end virtual
if current@initlocal = 1
mov byte [name+position@initlocal],byte@initlocal
else if current@initlocal = 2
mov word [name+position@initlocal],word@initlocal
else
mov dword [name+position@initlocal],dword@initlocal
end if
position@initlocal = position@initlocal + current@initlocal
end while }
macro endp
{ purge ret,locals,endl
finish@proc
purge finish@proc
restore regs@proc
match all,args@proc \{ restore all \}
restore args@proc
match all,all@vars \{ restore all \} }
macro local [var]
{ common
locals
forward done@local equ
match varname[count]:vartype, var
\{ match =BYTE, vartype \\{ varname rb count
restore done@local \\}
match =WORD, vartype \\{ varname rw count
restore done@local \\}
match =DWORD, vartype \\{ varname rd count
restore done@local \\}
match =PWORD, vartype \\{ varname rp count
restore done@local \\}
match =QWORD, vartype \\{ varname rq count
restore done@local \\}
match =TBYTE, vartype \\{ varname rt count
restore done@local \\}
match =DQWORD, vartype \\{ label varname dqword
rq count*2
restore done@local \\}
match =QQWORD, vartype \\{ label varname qqword
rq count*4
restore done@local \\}
match =XWORD, vartype \\{ label varname xword
rq count*2
restore done@local \\}
match =YWORD, vartype \\{ label varname yword
rq count*4
restore done@local \\}
match , done@local \\{ virtual
varname vartype
end virtual
rb count*sizeof.\#vartype
restore done@local \\} \}
match :varname:vartype, done@local:var
\{ match =BYTE, vartype \\{ varname db ?
restore done@local \\}
match =WORD, vartype \\{ varname dw ?
restore done@local \\}
match =DWORD, vartype \\{ varname dd ?
restore done@local \\}
match =PWORD, vartype \\{ varname dp ?
restore done@local \\}
match =QWORD, vartype \\{ varname dq ?
restore done@local \\}
match =TBYTE, vartype \\{ varname dt ?
restore done@local \\}
match =DQWORD, vartype \\{ label varname dqword
dq ?,?
restore done@local \\}
match =QQWORD, vartype \\{ label varname qqword
dq ?,?,?,?
restore done@local \\}
match =XWORD, vartype \\{ label varname xword
dq ?,?
restore done@local \\}
match =YWORD, vartype \\{ label varname yword
dq ?,?,?,?
restore done@local \\}
match , done@local \\{ varname vartype
restore done@local \\} \}
match ,done@local
\{ var
restore done@local \}
common
endl }

View File

@@ -0,0 +1,618 @@
; Macroinstructions for defining and calling procedures (x64 version)
macro invoke proc,[arg]
{ common fastcall [proc],arg }
macro fastcall proc,[arg]
{ common local stackspace,argscount,counter
if argscount < 4
stackspace = 4*8
else if argscount and 1
stackspace = (argscount+1)*8
else
stackspace = argscount*8
end if
counter = 0
if stackspace
if defined current@frame
if current@frame<stackspace
current@frame = stackspace
end if
else
if stackspace
sub rsp,stackspace
end if
end if
end if
forward
counter = counter + 1
define type@param
define definition@param arg
match =float value,definition@param
\{ define definition@param value
define type@param float \}
match =addr value,definition@param
\{ define definition@param value
define type@param addr \}
match any=,any,definition@param
\{ \local ..string,..continue
jmp ..continue
align sizeof.TCHAR
..string TCHAR definition@param,0
..continue:
define definition@param ..string
define type@param addr \}
match any,definition@param
\{ match \`any,any
\\{ \\local ..string,..continue
jmp ..continue
align sizeof.TCHAR
..string TCHAR definition@param,0
..continue:
define definition@param ..string
define type@param addr \\} \}
match param,definition@param
\{ local opcode,origin
size@param = 0
if param eqtype 0 | param eqtype 0f | type@param eq addr
size@param = 8
else if param eqtype byte 0 | param eqtype byte 0f
match prefix value,definition@param
\\{ if prefix eq qword
size@param = 8
else if prefix eq dword
size@param = 4
else if prefix eq word
size@param = 2
else if prefix eq byte
size@param = 1
end if \\}
else if ~ param in <xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7,xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15>
virtual
origin = $
inc param
load opcode byte from origin
if opcode = 67h | ( opcode > 40h & opcode < 48h )
load opcode byte from origin+1
end if
if opcode and 0F8h = 48h
size@param = 8
else if opcode = 66h
size@param = 2
else if opcode = 0FFh
size@param = 4
else
size@param = 1
end if
end virtual
end if
if counter = 1
if type@param eq float
if ~ param eq xmm0
if size@param = 4
if param eqtype byte 0 | param eqtype byte 0f
mov eax,param
movd xmm0,eax
else
movd xmm0,param
end if
else
if param eqtype 0 | param eqtype 0f | param eqtype byte 0 | param eqtype byte 0f
mov rax,param
movq xmm0,rax
else
movq xmm0,param
end if
end if
end if
if vararg@fastcall & ~ param eq rcx
movq rcx,xmm0
end if
else if type@param eq addr
if ~ param eq rcx
lea rcx,[param]
end if
else if size@param = 8
if ~ param eq rcx
mov rcx,param
end if
else if size@param = 4
if ~ param eq ecx
mov ecx,param
end if
else if size@param = 2
if ~ param eq cx
mov cx,param
end if
else if size@param = 1
if ~ param eq cl
mov cl,param
end if
end if
else if counter = 2
if type@param eq float
if ~ param eq xmm1
if size@param = 4
if param eqtype byte 0 | param eqtype byte 0f
mov eax,param
movd xmm1,eax
else
movd xmm1,param
end if
else
if param eqtype 0 | param eqtype 0f | param eqtype byte 0 | param eqtype byte 0f
mov rax,param
movq xmm1,rax
else
movq xmm1,param
end if
end if
end if
if vararg@fastcall & ~ param eq rdx
movq rdx,xmm1
end if
else if type@param eq addr
if ~ param eq rdx
lea rdx,[param]
end if
else if size@param = 8
if ~ param eq rdx
mov rdx,param
end if
else if size@param = 4
if ~ param eq edx
mov edx,param
end if
else if size@param = 2
if ~ param eq dx
mov dx,param
end if
else if size@param = 1
if ~ param eq dl
mov dl,param
end if
end if
else if counter = 3
if type@param eq float
if ~ param eq xmm2
if size@param = 4
if param eqtype byte 0 | param eqtype byte 0f
mov eax,param
movd xmm2,eax
else
movd xmm2,param
end if
else
if param eqtype 0 | param eqtype 0f | param eqtype byte 0 | param eqtype byte 0f
mov rax,param
movq xmm2,rax
else
movq xmm2,param
end if
end if
end if
if vararg@fastcall & ~ param eq r8
movq r8,xmm2
end if
else if type@param eq addr
if ~ param eq r8
lea r8,[param]
end if
else if size@param = 8
if ~ param eq r8
mov r8,param
end if
else if size@param = 4
if ~ param eq r8d
mov r8d,param
end if
else if size@param = 2
if ~ param eq r8w
mov r8w,param
end if
else if size@param = 1
if ~ param eq r8b
mov r8b,param
end if
end if
else if counter = 4
if type@param eq float
if ~ param eq xmm3
if size@param = 4
if param eqtype byte 0 | param eqtype byte 0f
mov eax,param
movd xmm3,eax
else
movd xmm3,param
end if
else
if param eqtype 0 | param eqtype 0f | param eqtype byte 0 | param eqtype byte 0f
mov rax,param
movq xmm3,rax
else
movq xmm3,param
end if
end if
end if
if vararg@fastcall & ~ param eq r9
movq r9,xmm3
end if
else if type@param eq addr
if ~ param eq r9
lea r9,[param]
end if
else if size@param = 8
if ~ param eq r9
mov r9,param
end if
else if size@param = 4
if ~ param eq r9d
mov r9d,param
end if
else if size@param = 2
if ~ param eq r9w
mov r9w,param
end if
else if size@param = 1
if ~ param eq r9b
mov r9b,param
end if
end if
else
if type@param eq addr
lea rax,[param]
mov [rsp+(counter-1)*8],rax
else if param eqtype [0] | param eqtype byte [0]
if size@param = 8
mov rax,param
mov [rsp+(counter-1)*8],rax
else if size@param = 4
mov eax,param
mov [rsp+(counter-1)*8],eax
else if size@param = 2
mov ax,param
mov [rsp+(counter-1)*8],ax
else
mov al,param
mov [rsp+(counter-1)*8],al
end if
else if size@param = 8
virtual
origin = $
mov rax,param
load opcode byte from origin+1
end virtual
if opcode = 0B8h
mov rax,param
mov [rsp+(counter-1)*8],rax
else
mov qword [rsp+(counter-1)*8],param
end if
else if param in <xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7,xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15>
movq [rsp+(counter-1)*8],param
else
mov [rsp+(counter-1)*8],param
end if
end if \}
common
argscount = counter
call proc
if stackspace & ~defined current@frame
add rsp,stackspace
end if }
macro proc [args]
{ common
match name params, args>
\{ define@proc name,<params \} }
prologue@proc equ prologuedef
macro prologuedef procname,flag,parmbytes,localbytes,reglist
{ local loc,fill,counter
loc = (localbytes+15) and (not 15)
parmbase@proc equ rbp+16
localbase@proc equ rbp-loc
push rbp
mov rbp,rsp
if loc+fill
sub rsp,loc+fill
end if
counter = 0
irps reg, reglist \{ push reg
counter = counter+1 \}
fill = 8*(counter and 1) }
epilogue@proc equ epiloguedef
macro epiloguedef procname,flag,parmbytes,localbytes,reglist
{ irps reg, reglist \{ reverse pop reg \}
leave
retn }
close@proc equ
macro define@proc name,statement
{ local params,flag,regs,parmbytes,localbytes,current
if used name
name:
match =stdcall args, statement \{ params equ args
flag = 11b \}
match =stdcall, statement \{ params equ
flag = 11b \}
match =c args, statement \{ params equ args
flag = 10001b \}
match =c, statement \{ params equ
flag = 10001b \}
match =params, params \{ params equ statement
flag = 10000b \}
match =uses reglist=,args, params \{ regs equ reglist
params equ args \}
match =regs =uses reglist, regs params \{ regs equ reglist
params equ \}
match =regs, regs \{ regs equ \}
match prologue:reglist, prologue@proc:<regs> \{ prologue name,flag,parmbytes,localbytes,reglist \}
virtual at parmbase@proc
match =,args, params \{ defargs@proc args \}
match =args@proc args, args@proc params \{ defargs@proc args \}
parmbytes = $-(parmbase@proc)
end virtual
name # % = parmbytes/8
all@vars equ
current = 0
macro locals
\{ virtual at localbase@proc+current
macro label def \\{ match . type,def> \\\{ deflocal@proc .,label,<type \\\} \\}
struc db [val] \\{ \common deflocal@proc .,db,val \\}
struc du [val] \\{ \common deflocal@proc .,du,val \\}
struc dw [val] \\{ \common deflocal@proc .,dw,val \\}
struc dp [val] \\{ \common deflocal@proc .,dp,val \\}
struc dd [val] \\{ \common deflocal@proc .,dd,val \\}
struc dt [val] \\{ \common deflocal@proc .,dt,val \\}
struc dq [val] \\{ \common deflocal@proc .,dq,val \\}
struc rb cnt \\{ deflocal@proc .,rb cnt, \\}
struc rw cnt \\{ deflocal@proc .,rw cnt, \\}
struc rp cnt \\{ deflocal@proc .,rp cnt, \\}
struc rd cnt \\{ deflocal@proc .,rd cnt, \\}
struc rt cnt \\{ deflocal@proc .,rt cnt, \\}
struc rq cnt \\{ deflocal@proc .,rq cnt, \\} \}
macro endl
\{ purge label
restruc db,du,dw,dp,dd,dt,dq
restruc rb,rw,rp,rd,rt,rq
current = $-(localbase@proc)
end virtual \}
macro ret operand
\{ match any, operand \\{ retn operand \\}
match , operand \\{ match epilogue:reglist, epilogue@proc:<regs> \\\{ epilogue name,flag,parmbytes,localbytes,reglist \\\} \\} \}
macro finish@proc
\{ localbytes = current
match close:reglist, close@proc:<regs> \\{ close name,flag,parmbytes,localbytes,reglist \\}
end if \} }
macro defargs@proc [arg]
{ common
if ~ arg eq
forward
local ..arg,current@arg
match argname:type, arg
\{ current@arg equ argname
label ..arg type
argname equ ..arg
if qqword eq type
dq ?,?,?,?
else if dqword eq type
dq ?,?
else if tbyte eq type
dq ?,?
else
dq ?
end if \}
match =current@arg,current@arg
\{ current@arg equ arg
arg equ ..arg
..arg dq ? \}
common
args@proc equ current@arg
forward
restore current@arg
common
end if }
macro deflocal@proc name,def,[val] { name def val }
macro deflocal@proc name,def,[val]
{ common
match vars, all@vars \{ all@vars equ all@vars, \}
all@vars equ all@vars name
forward
local ..var,..tmp
..var def val
match =?, val \{ ..tmp equ \}
match any =?, val \{ ..tmp equ \}
match any (=?), val \{ ..tmp equ \}
match =label, def \{ ..tmp equ \}
match tmp : value, ..tmp : val
\{ tmp: end virtual
initlocal@proc ..var,def value
virtual at tmp\}
common
match first rest, ..var, \{ name equ first \} }
struc label type { label . type }
macro initlocal@proc name,def
{ virtual at name
def
size@initlocal = $ - name
end virtual
position@initlocal = 0
while size@initlocal > position@initlocal
virtual at name
def
if size@initlocal - position@initlocal < 2
current@initlocal = 1
load byte@initlocal byte from name+position@initlocal
else if size@initlocal - position@initlocal < 4
current@initlocal = 2
load word@initlocal word from name+position@initlocal
else if size@initlocal - position@initlocal < 8
current@initlocal = 4
load dword@initlocal dword from name+position@initlocal
else
load qword@initlocal qword from name+position@initlocal
if ( qword@initlocal > 0 & qword@initlocal < 80000000h ) | ( qword@initlocal < 0 & qword@initlocal >= -80000000h )
current@initlocal = 8
else
current@initlocal = 4
dword@initlocal = qword@initlocal and 0FFFFFFFFh
end if
end if
end virtual
if current@initlocal = 1
mov byte [name+position@initlocal],byte@initlocal
else if current@initlocal = 2
mov word [name+position@initlocal],word@initlocal
else if current@initlocal = 4
mov dword [name+position@initlocal],dword@initlocal
else
mov qword [name+position@initlocal],qword@initlocal
end if
position@initlocal = position@initlocal + current@initlocal
end while }
macro endp
{ purge ret,locals,endl
finish@proc
purge finish@proc
restore regs@proc
match all,args@proc \{ restore all \}
restore args@proc
match all,all@vars \{ restore all \} }
macro local [var]
{ common
locals
forward done@local equ
match varname[count]:vartype, var
\{ match =BYTE, vartype \\{ varname rb count
restore done@local \\}
match =WORD, vartype \\{ varname rw count
restore done@local \\}
match =DWORD, vartype \\{ varname rd count
restore done@local \\}
match =PWORD, vartype \\{ varname rp count
restore done@local \\}
match =QWORD, vartype \\{ varname rq count
restore done@local \\}
match =TBYTE, vartype \\{ varname rt count
restore done@local \\}
match =DQWORD, vartype \\{ label varname dqword
rq count*2
restore done@local \\}
match =QQWORD, vartype \\{ label varname qqword
rq count*4
restore done@local \\}
match =XWORD, vartype \\{ label varname xword
rq count*2
restore done@local \\}
match =YWORD, vartype \\{ label varname yword
rq count*4
restore done@local \\}
match , done@local \\{ virtual
varname vartype
end virtual
rb count*sizeof.\#vartype
restore done@local \\} \}
match :varname:vartype, done@local:var
\{ match =BYTE, vartype \\{ varname db ?
restore done@local \\}
match =WORD, vartype \\{ varname dw ?
restore done@local \\}
match =DWORD, vartype \\{ varname dd ?
restore done@local \\}
match =PWORD, vartype \\{ varname dp ?
restore done@local \\}
match =QWORD, vartype \\{ varname dq ?
restore done@local \\}
match =TBYTE, vartype \\{ varname dt ?
restore done@local \\}
match =DQWORD, vartype \\{ label varname dqword
dq ?,?
restore done@local \\}
match =QQWORD, vartype \\{ label varname qqword
dq ?,?,?,?
restore done@local \\}
match =XWORD, vartype \\{ label varname xword
dq ?,?
restore done@local \\}
match =YWORD, vartype \\{ label varname yword
dq ?,?,?,?
restore done@local \\}
match , done@local \\{ varname vartype
restore done@local \\} \}
match ,done@local
\{ var
restore done@local \}
common
endl }
macro frame
{ local size,current
if size
sub rsp,size
end if
current = 0
current@frame equ current
size@frame equ size }
macro endf
{ size@frame = current@frame
if size@frame
add rsp,size@frame
end if
restore size@frame,current@frame }
macro static_rsp_prologue procname,flag,parmbytes,localbytes,reglist
{ local counter,loc,frame,current
counter = 0
irps reg, reglist \{ push reg
counter = counter+1 \}
loc = (localbytes+7) and (not 7)
if frame & (counter+loc shr 3+1) and 1
loc = loc + 8
end if
framebytes@proc equ frame+loc
if framebytes@proc
sub rsp,framebytes@proc
end if
localbase@proc equ rsp+frame
regsbase@proc equ rsp+frame+loc
parmbase@proc equ rsp+frame+loc+counter*8+8
current = 0
current@frame equ current
size@frame equ frame }
macro static_rsp_epilogue procname,flag,parmbytes,localbytes,reglist
{ if framebytes@proc
add rsp,framebytes@proc
end if
irps reg, reglist \{ reverse pop reg \}
retn }
macro static_rsp_close procname,flag,parmbytes,localbytes,reglist
{ size@frame = current@frame
restore size@frame,current@frame }
stdcall fix fastcall
macro cinvoke proc,[arg]
{ common ccall [proc],arg }
macro ccall proc,[arg]
{ common vararg@fastcall = 1
fastcall proc,arg
vararg@fastcall = 0 }
vararg@fastcall = 0

View File

@@ -0,0 +1,334 @@
; Macroinstructions for making resource section
macro directory [type,label]
{ common
local max,count
count = 0
max = 0
forward
count = count + 1
if type > max
max = type
end if
common
root@resource dd 0,%t,0,count shl 16
repeat max
forward
if % = type
dd type,80000000h+label-root@resource
end if
common
end repeat }
macro resource dir,[id,lang,label]
{ common
dir:
local min,max,count,current
forward
min = id
max = id
common
count = 0
forward
count = count + 1
if id < min
min = id
else if id > max
max = id
end if
common
dd 0,%t,0,count shl 16
repeat max-min+1
current = $
forward
if min+%-1 = id
if current = $
dd id,80000000h+label#.directory-root@resource
end if
end if
common
end repeat
repeat max-min+1
current = $
forward
if min+%-1 = id
if current = $
label#.directory dd 0,%t,0,10000h,lang,label-root@resource
count = 1
else
dd lang,label-root@resource
count = count + 1
end if
end if
label#.resid = id
common
local x,y,z,v1,v2
if count > 1
store word count at current+0Eh
x = count shr 1
while x > 0
y = x
while y < count
z = y
while z-x >= 0
load v1 dword from current+10h+z*8
load v2 dword from current+10h+(z-x)*8
if v1<v2
store dword v1 at current+10h+(z-x)*8
store dword v2 at current+10h+z*8
load v1 dword from current+10h+z*8+4
load v2 dword from current+10h+(z-x)*8+4
store dword v1 at current+10h+(z-x)*8+4
store dword v2 at current+10h+z*8+4
else
break
end if
z = z-x
end while
y = y+1
end while
x = x shr 1
end while
end if
end repeat }
macro bitmap label,bitmap_file
{ local data,size
label dd RVA data,size,0,0
data file bitmap_file:0Eh
size = $ - data
align 4 }
macro icon group,[label,icon_file]
{ common local count
count = 0
forward local data,size,position
label dd RVA data,size,0,0
virtual at 0
file icon_file:6,16
load size dword from 8
load position dword from 12
end virtual
data file icon_file:position,size
count = count+1
common local header
align 4
group dd RVA header,6+count*14,0,0
header dw 0,1,count
forward
file icon_file:6,12
dw label#.resid
common
align 4 }
macro cursor group,[label,cursor_file]
{ common local count
count = 0
forward local data,width,height,size,position
label dd RVA data,size+4,0,0
virtual at 0
file cursor_file:6,16
load width byte from 0
load height byte from 1
load size dword from 8
load position dword from 12
end virtual
data file cursor_file:10,4
file cursor_file:position,size
count = count+1
common local header
align 4
group dd RVA header,6+count*14,0,0
header dw 0,2,count
forward
dw width,height,1,0
dd size+4
dw label#.resid
common
align 4 }
macro menu label
{ local data,size
label dd RVA data,size,0,0
data dw 1,4,0,0
menu_size equ size = $ - data
menu_level = 1 }
macro menuitem string,id,resinfo,status,type
{ dd MFT_STRING or type+0,status+0,id
dw resinfo+0
du string,0
align 4
if ~ resinfo eq
if resinfo and MFR_END
menu_level = menu_level - 1
end if
if resinfo and MFR_POPUP
menu_level = menu_level + 1
dd 0
end if
end if
if menu_level = 0
menu_size
end if }
macro menuseparator resinfo
{ dd MFT_SEPARATOR,0,0
dw resinfo+0,0
if ~ resinfo eq
if resinfo and MFR_END
menu_level = menu_level - 1
end if
end if
if menu_level = 0
menu_size
end if }
macro dialog label,title,x,y,cx,cy,style,exstyle,menu,fontname,fontsize
{ local data,size,items
label dd RVA data,size,0,0
data dd style or DS_SETFONT,exstyle +0
dw items,x,y,cx,cy
if menu+0 <> 0
dw 0FFFFh
end if
du menu+0,0,title,0
if fontname eq
du 8,'MS Sans Serif',0
else
du fontsize+0,fontname,0
end if
align 4
dialog_size equ size = $ - data
dialog_items equ items = dialog_items_counter
dialog_items_counter = 0 }
macro dialogitem class,title,id,x,y,cx,cy,style,exstyle
{ dd style or WS_CHILD,exstyle +0
dw x,y,cx,cy,id
if class eq 'BUTTON'
dw 0FFFFh,80h
else if class eq 'EDIT'
dw 0FFFFh,81h
else if class eq 'STATIC'
dw 0FFFFh,82h
else if class eq 'LISTBOX'
dw 0FFFFh,83h
else if class eq 'SCROLLBAR'
dw 0FFFFh,84h
else if class eq 'COMBOBOX'
dw 0FFFFh,85h
else
du class,0
end if
if title eqtype 0
dw 0FFFFh,title
else
du title,0
end if
dw 0
align 4
dialog_items_counter = dialog_items_counter + 1 }
macro enddialog
{ dialog_items
dialog_size }
macro accelerator label,[fvirt,key,cmd]
{ common
local data,size
label dd RVA data,size,0,0
data:
accel_count = 0
forward
accel_count = accel_count + 1
common
size = accel_count * 8
forward
accel_count = accel_count - 1
if accel_count = 0
dw fvirt or 80h,key
else
dw fvirt,key
end if
dd cmd }
macro versioninfo label,fileos,filetype,filesubtype,lang,cp,[name,value]
{ common
local data,size,vivalue,visize
label dd RVA data,size,0,0
data dw size,visize,0
du 'VS_VERSION_INFO',0,0
vivalue dd 0FEEF04BDh,00010000h
local version,count,shift,char,filever,productver
filever = 0
productver = 0
forward
if name eq 'FileVersion' | name eq 'ProductVersion'
virtual at 0
db value
count = $
version = 0
shift = 16
repeat count
load char from %-1
if char='.'
if shift mod 32
shift = shift-16
else
shift = shift+32+16
end if
else
version = (version and not (0FFFFh shl shift)) or ((version shr shift and 0FFFFh)*10+char-'0') shl shift
end if
end repeat
end virtual
if name eq 'FileVersion'
filever = version
else if name eq 'ProductVersion'
productver = version
end if
end if
common
dq filever,productver
dd 0,0,fileos,filetype+0,filesubtype+0,0,0
visize = $ - vivalue
local sfi_data,sfi_size
sfi_data dd sfi_size
du 1,'StringFileInfo',0
local str_data,str_size
str_data dd str_size
du 1,'040904E4',0
forward
local vs_data,vs_size,value_data,value_size
align 4
vs_data dw vs_size,value_size/2
du 1,name,0
align 4
value_data du value,0
value_size = $ - value_data
vs_size = $ - vs_data
common
align 4
str_size = $ - str_data
sfi_size = $ - sfi_data
local vfi_data,vfi_size,var_data,var_size
vfi_data dd vfi_size
du 1,'VarFileInfo',0,0
var_data dw var_size,4
du 0,'Translation',0,0
dw lang,cp+0
var_size = $ - var_data
vfi_size = $ - vfi_data
size = $ - data }
macro resdata label
{ local data,size
label dd RVA data,size,0,0
data = $
ressize equ size = $ - data }
macro endres
{ ressize
align 4 }

View File

@@ -0,0 +1,221 @@
; Macroinstructions for defining data structures
macro struct name
{ virtual at 0
define @struct
field@struct equ name
match child parent, name \{ restore field@struct
field@struct equ child,fields@\#parent \}
sub@struct equ
struc db [val] \{ \common define field@struct .,db,<val> \}
struc dw [val] \{ \common define field@struct .,dw,<val> \}
struc du [val] \{ \common define field@struct .,du,<val> \}
struc dd [val] \{ \common define field@struct .,dd,<val> \}
struc dp [val] \{ \common define field@struct .,dp,<val> \}
struc dq [val] \{ \common define field@struct .,dq,<val> \}
struc dt [val] \{ \common define field@struct .,dt,<val> \}
struc rb count \{ define field@struct .,db,count dup (?) \}
struc rw count \{ define field@struct .,dw,count dup (?) \}
struc rd count \{ define field@struct .,dd,count dup (?) \}
struc rp count \{ define field@struct .,dp,count dup (?) \}
struc rq count \{ define field@struct .,dq,count dup (?) \}
struc rt count \{ define field@struct .,dt,count dup (?) \}
macro db [val] \{ \common \local anonymous
define field@struct anonymous,db,<val> \}
macro dw [val] \{ \common \local anonymous
define field@struct anonymous,dw,<val> \}
macro du [val] \{ \common \local anonymous
define field@struct anonymous,du,<val> \}
macro dd [val] \{ \common \local anonymous
define field@struct anonymous,dd,<val> \}
macro dp [val] \{ \common \local anonymous
define field@struct anonymous,dp,<val> \}
macro dq [val] \{ \common \local anonymous
define field@struct anonymous,dq,<val> \}
macro dt [val] \{ \common \local anonymous
define field@struct anonymous,dt,<val> \}
macro rb count \{ \local anonymous
define field@struct anonymous,db,count dup (?) \}
macro rw count \{ \local anonymous
define field@struct anonymous,dw,count dup (?) \}
macro rd count \{ \local anonymous
define field@struct anonymous,dd,count dup (?) \}
macro rp count \{ \local anonymous
define field@struct anonymous,dp,count dup (?) \}
macro rq count \{ \local anonymous
define field@struct anonymous,dq,count dup (?) \}
macro rt count \{ \local anonymous
define field@struct anonymous,dt,count dup (?) \}
macro union \{ field@struct equ ,union,<
sub@struct equ union \}
macro struct \{ field@struct equ ,substruct,<
sub@struct equ substruct \} }
macro ends
{ match , sub@struct \{ restruc db,dw,du,dd,dp,dq,dt
restruc rb,rw,rd,rp,rq,rt
purge db,dw,du,dd,dp,dq,dt
purge rb,rw,rd,rp,rq,rt
purge union,struct
irpv fields,field@struct \\{ restore field@struct
\\common define fields@struct fields \\}
match name tail,fields@struct, \\{ if $
display 'Error: definition of ',\\`name,' contains illegal instructions.',0Dh,0Ah
err
end if \\}
match name=,fields,fields@struct \\{ restore @struct
make@struct name,fields
define fields@\\#name fields \\}
end virtual \}
match any, sub@struct \{ tmp@struct equ field@struct
restore field@struct
field@struct equ tmp@struct> \}
restore sub@struct }
macro make@struct name,[field,type,def]
{ common
local define
define equ name
forward
local sub
match , field \{ make@substruct type,name,sub def
define equ define,.,sub, \}
match any, field \{ define equ define,.#field,type,<def> \}
common
match fields, define \{ define@struct fields \} }
macro define@struct name,[field,type,def]
{ common
virtual
db `name
load initial@struct byte from 0
if initial@struct = '.'
display 'Error: name of structure should not begin with a dot.',0Dh,0Ah
err
end if
end virtual
local list
list equ
forward
if ~ field eq .
name#field type def
sizeof.#name#field = $ - name#field
else
label name#.#type
rb sizeof.#type
end if
local value
match any, list \{ list equ list, \}
list equ list <value>
common
sizeof.#name = $
restruc name
match values, list \{
struc name value \\{ \\local \\..base
match , @struct \\\{ define field@struct .,name,<values> \\\}
match no, @struct \\\{ label \\..base
forward
match , value \\\\{ field type def \\\\}
match any, value \\\\{ field type value
if ~ field eq .
rb sizeof.#name#field - ($-field)
end if \\\\}
common label . at \\..base \\\}
\\}
macro name value \\{
match , @struct \\\{ \\\local anonymous
define field@struct anonymous,name,<values> \\\}
match no, @struct \\\{
forward
match , value \\\\{ type def \\\\}
match any, value \\\\{ \\\\local ..field
..field = $
type value
if ~ field eq .
rb sizeof.#name#field - ($-..field)
end if \\\\}
common \\\} \\} \} }
macro enable@substruct
{ macro make@substruct substruct,parent,name,[field,type,def]
\{ \common
\local define
define equ parent,name
\forward
\local sub
match , field \\{ match any, type \\\{ enable@substruct
make@substruct type,parent,sub def
purge make@substruct
define equ define,.,sub, \\\} \\}
match any, field \\{ define equ define,.\#field,type,<def> \\}
\common
match fields, define \\{ define@\#substruct fields \\} \} }
enable@substruct
macro define@union parent,name,[field,type,def]
{ common
virtual at parent#.#name
forward
if ~ field eq .
virtual at parent#.#name
parent#field type def
sizeof.#parent#field = $ - parent#field
end virtual
if sizeof.#parent#field > $ - parent#.#name
rb sizeof.#parent#field - ($ - parent#.#name)
end if
else
virtual at parent#.#name
label parent#.#type
type def
end virtual
label name#.#type at parent#.#name
if sizeof.#type > $ - parent#.#name
rb sizeof.#type - ($ - parent#.#name)
end if
end if
common
sizeof.#name = $ - parent#.#name
end virtual
struc name [value] \{ \common
label .\#name
last@union equ
forward
match any, last@union \\{ virtual at .\#name
field type def
end virtual \\}
match , last@union \\{ match , value \\\{ field type def \\\}
match any, value \\\{ field type value \\\} \\}
last@union equ field
common rb sizeof.#name - ($ - .\#name) \}
macro name [value] \{ \common \local ..anonymous
..anonymous name value \} }
macro define@substruct parent,name,[field,type,def]
{ common
virtual at parent#.#name
forward
local value
if ~ field eq .
parent#field type def
sizeof.#parent#field = $ - parent#field
else
label parent#.#type
rb sizeof.#type
end if
common
sizeof.#name = $ - parent#.#name
end virtual
struc name value \{
label .\#name
forward
match , value \\{ field type def \\}
match any, value \\{ field type value
if ~ field eq .
rb sizeof.#parent#field - ($-field)
end if \\}
common \}
macro name value \{ \local ..anonymous
..anonymous name \} }

View File

@@ -0,0 +1,340 @@
; ADVAPI32 API calls parameters' count
AbortSystemShutdown% = 1
AccessCheck% = 8
AccessCheckAndAuditAlarm% = 11
AccessCheckByType% = 11
AccessCheckByTypeAndAuditAlarm% = 16
AccessCheckByTypeResultList% = 11
AccessCheckByTypeResultListAndAuditAlarm% = 16
AddAccessAllowedAce% = 4
AddAccessAllowedAceEx% = 5
AddAccessAllowedObjectAce% = 7
AddAccessDeniedAce% = 4
AddAccessDeniedAceEx% = 5
AddAccessDeniedObjectAce% = 7
AddAce% = 5
AddAuditAccessAce% = 6
AddAuditAccessAceEx% = 7
AddAuditAccessObjectAce% = 9
AdjustTokenGroups% = 6
AdjustTokenPrivileges% = 6
AllocateAndInitializeSid% = 11
AllocateLocallyUniqueId% = 1
AreAllAccessesGranted% = 2
AreAnyAccessesGranted% = 2
BackupEventLog% = 2
BuildExplicitAccessWithName% = 5
BuildImpersonateExplicitAccessWithName% = 6
BuildImpersonateTrustee% = 2
BuildSecurityDescriptor% = 9
BuildTrusteeWithName% = 2
BuildTrusteeWithSid% = 2
CancelOverlappedAccess% = 1
ChangeServiceConfig2% = 3
ChangeServiceConfig% = 11
ClearEventLog% = 2
CloseEventLog% = 1
CloseRaw% = 1
CloseServiceHandle% = 1
ControlService% = 3
ConvertAccessToSecurityDescriptor% = 5
ConvertSecurityDescriptorToAccess% = 7
ConvertSecurityDescriptorToAccessNamed% = 7
ConvertToAutoInheritPrivateObjectSecurity% = 6
CopySid% = 3
CreatePrivateObjectSecurity% = 6
CreatePrivateObjectSecurityEx% = 8
CreateProcessAsUser% = 11
CreateRestrictedToken% = 9
CreateService% = 13
CryptAcquireContext% = 5
CryptContextAddRef% = 3
CryptCreateHash% = 5
CryptDecrypt% = 6
CryptDeriveKey% = 5
CryptDestroyHash% = 1
CryptDestroyKey% = 1
CryptDuplicateHash% = 4
CryptDuplicateKey% = 4
CryptEncrypt% = 7
CryptEnumProviderTypes% = 6
CryptEnumProviders% = 6
CryptExportKey% = 6
CryptGenKey% = 4
CryptGenRandom% = 3
CryptGetDefaultProvider% = 5
CryptGetHashParam% = 5
CryptGetKeyParam% = 5
CryptGetProvParam% = 5
CryptGetUserKey% = 3
CryptHashData% = 4
CryptHashSessionKey% = 3
CryptImportKey% = 6
CryptReleaseContext% = 2
CryptSetHashParam% = 4
CryptSetKeyParam% = 4
CryptSetProvParam% = 4
CryptSetProvider% = 2
CryptSetProviderEx% = 4
CryptSignHash% = 6
CryptVerifySignature% = 6
DecryptFile% = 2
DeleteAce% = 2
DeleteService% = 1
DeregisterEventSource% = 1
DestroyPrivateObjectSecurity% = 1
DuplicateToken% = 3
DuplicateTokenEx% = 6
ElfBackupEventLogFile% = 2
ElfChangeNotify% = 2
ElfClearEventLogFile% = 2
ElfCloseEventLog% = 1
ElfDeregisterEventSource% = 1
ElfNumberOfRecords% = 2
ElfOldestRecord% = 2
ElfOpenBackupEventLog% = 3
ElfOpenEventLog% = 3
ElfReadEventLog% = 7
ElfRegisterEventSource% = 3
ElfReportEvent% = 12
EncryptFile% = 1
EnumDependentServices% = 6
EnumServicesStatus% = 8
EqualPrefixSid% = 2
EqualSid% = 2
FindFirstFreeAce% = 2
FreeSid% = 1
GetAccessPermissionsForObject% = 9
GetAce% = 3
GetAclInformation% = 4
GetAuditedPermissionsFromAcl% = 4
GetCurrentHwProfile% = 1
GetEffectiveRightsFromAcl% = 3
GetExplicitEntriesFromAcl% = 3
GetFileSecurity% = 5
GetKernelObjectSecurity% = 5
GetLengthSid% = 1
GetMultipleTrustee% = 1
GetMultipleTrusteeOperation% = 1
GetNamedSecurityInfo% = 8
GetNamedSecurityInfoEx% = 9
GetNumberOfEventLogRecords% = 2
GetOldestEventLogRecord% = 2
GetOverlappedAccessResults% = 4
GetPrivateObjectSecurity% = 5
GetSecurityDescriptorControl% = 3
GetSecurityDescriptorDacl% = 4
GetSecurityDescriptorGroup% = 3
GetSecurityDescriptorLength% = 1
GetSecurityDescriptorOwner% = 3
GetSecurityDescriptorSacl% = 4
GetSecurityInfo% = 8
GetSecurityInfoEx% = 9
GetServiceDisplayName% = 4
GetServiceKeyName% = 4
GetSidLengthRequired% = 1
GetSidSubAuthority% = 2
GetSidSubAuthorityCount% = 1
GetTokenInformation% = 5
GetTrusteeName% = 1
GetTrusteeType% = 1
GetUserName% = 2
I_ScSetServiceBits% = 5
ImpersonateLoggedOnUser% = 1
ImpersonateNamedPipeClient% = 1
ImpersonateSelf% = 1
InitializeAcl% = 3
InitializeSecurityDescriptor% = 2
InitializeSid% = 3
InitiateSystemShutdown% = 5
IsTextUnicode% = 3
IsTokenRestricted% = 1
IsValidAcl% = 1
IsValidSecurityDescriptor% = 1
IsValidSid% = 1
LockServiceDatabase% = 1
LogonUser% = 6
LookupAccountName% = 7
LookupAccountSid% = 7
LookupPrivilegeDisplayName% = 5
LookupPrivilegeName% = 4
LookupPrivilegeValue% = 3
LookupSecurityDescriptorParts% = 7
LsaAddAccountRights% = 4
LsaAddPrivilegesToAccount% = 2
LsaClearAuditLog% = 1
LsaClose% = 1
LsaCreateAccount% = 4
LsaCreateSecret% = 4
LsaCreateTrustedDomain% = 4
LsaCreateTrustedDomainEx% = 5
LsaDelete% = 1
LsaDeleteTrustedDomain% = 2
LsaEnumerateAccountRights% = 4
LsaEnumerateAccounts% = 5
LsaEnumerateAccountsWithUserRight% = 4
LsaEnumeratePrivileges% = 5
LsaEnumeratePrivilegesOfAccount% = 2
LsaEnumerateTrustedDomains% = 5
LsaEnumerateTrustedDomainsEx% = 6
LsaFreeMemory% = 1
LsaGetQuotasForAccount% = 2
LsaGetSystemAccessAccount% = 2
LsaGetUserName% = 2
LsaICLookupNames% = 7
LsaICLookupSids% = 7
LsaIGetTrustedDomainAuthInfoBlobs% = 4
LsaISetTrustedDomainAuthInfoBlobs% = 4
LsaLookupNames% = 5
LsaLookupPrivilegeDisplayName% = 4
LsaLookupPrivilegeName% = 3
LsaLookupPrivilegeValue% = 3
LsaLookupSids% = 5
LsaNtStatusToWinError% = 1
LsaOpenAccount% = 4
LsaOpenPolicy% = 4
LsaOpenSecret% = 4
LsaOpenTrustedDomain% = 4
LsaQueryDomainInformationPolicy% = 3
LsaQueryInfoTrustedDomain% = 3
LsaQueryInformationPolicy% = 3
LsaQueryLocalInformationPolicy% = 3
LsaQuerySecret% = 5
LsaQuerySecurityObject% = 3
LsaQueryTrustedDomainInfo% = 4
LsaQueryTrustedDomainInfoByName% = 4
LsaRemoveAccountRights% = 5
LsaRemovePrivilegesFromAccount% = 3
LsaRetrievePrivateData% = 3
LsaSetDomainInformationPolicy% = 3
LsaSetInformationPolicy% = 3
LsaSetInformationTrustedDomain% = 3
LsaSetLocalInformationPolicy% = 3
LsaSetQuotasForAccount% = 2
LsaSetSecret% = 3
LsaSetSecurityObject% = 3
LsaSetSystemAccessAccount% = 2
LsaSetTrustedDomainInfoByName% = 4
LsaSetTrustedDomainInformation% = 4
LsaStorePrivateData% = 3
MakeAbsoluteSD% = 11
MakeSelfRelativeSD% = 3
MapGenericMask% = 2
NotifyBootConfigStatus% = 1
NotifyChangeEventLog% = 2
ObjectCloseAuditAlarm% = 3
ObjectDeleteAuditAlarm% = 3
ObjectOpenAuditAlarm% = 12
ObjectPrivilegeAuditAlarm% = 6
OpenBackupEventLog% = 2
OpenEventLog% = 2
OpenProcessToken% = 3
OpenRaw% = 3
OpenSCManager% = 3
OpenService% = 3
OpenThreadToken% = 4
PrivilegeCheck% = 3
PrivilegedServiceAuditAlarm% = 5
QueryRecoveryAgents% = 3
QueryServiceConfig2% = 5
QueryServiceConfig% = 4
QueryServiceLockStatus% = 4
QueryServiceObjectSecurity% = 5
QueryServiceStatus% = 2
QueryWindows31FilesMigration% = 1
ReadEventLog% = 7
ReadRaw% = 3
RegCloseKey% = 1
RegConnectRegistry% = 3
RegCreateKey% = 3
RegCreateKeyEx% = 9
RegDeleteKey% = 2
RegDeleteValue% = 2
RegEnumKey% = 4
RegEnumKeyEx% = 8
RegEnumValue% = 8
RegFlushKey% = 1
RegGetKeySecurity% = 4
RegLoadKey% = 3
RegNotifyChangeKeyValue% = 5
RegOpenKey% = 3
RegOpenKeyEx% = 5
RegOverridePredefKey% = 2
RegQueryInfoKey% = 12
RegQueryMultipleValues% = 5
RegQueryValue% = 4
RegQueryValueEx% = 6
RegReplaceKey% = 4
RegRestoreKey% = 3
RegSaveKey% = 3
RegSetKeySecurity% = 3
RegSetValue% = 5
RegSetValueEx% = 6
RegUnLoadKey% = 2
RegisterEventSource% = 2
RegisterServiceCtrlHandler% = 2
ReportEvent% = 9
RevertToSelf% = 0
SetAclInformation% = 4
SetEntriesInAccessList% = 6
SetEntriesInAcl% = 4
SetEntriesInAuditList% = 6
SetFileSecurity% = 3
SetKernelObjectSecurity% = 3
SetNamedSecurityInfo% = 7
SetNamedSecurityInfoEx% = 9
SetPrivateObjectSecurity% = 5
SetPrivateObjectSecurityEx% = 6
SetSecurityDescriptorControl% = 3
SetSecurityDescriptorDacl% = 4
SetSecurityDescriptorGroup% = 3
SetSecurityDescriptorOwner% = 3
SetSecurityDescriptorSacl% = 4
SetSecurityInfo% = 7
SetSecurityInfoEx% = 9
SetServiceBits% = 4
SetServiceObjectSecurity% = 3
SetServiceStatus% = 2
SetThreadToken% = 2
SetTokenInformation% = 4
StartService% = 3
StartServiceCtrlDispatcher% = 1
SynchronizeWindows31FilesAndWindowsNTRegistry% = 4
SystemFunction001% = 3
SystemFunction002% = 3
SystemFunction003% = 2
SystemFunction004% = 3
SystemFunction005% = 3
SystemFunction006% = 2
SystemFunction007% = 2
SystemFunction008% = 3
SystemFunction009% = 3
SystemFunction010% = 3
SystemFunction011% = 3
SystemFunction012% = 3
SystemFunction013% = 3
SystemFunction014% = 3
SystemFunction015% = 3
SystemFunction016% = 3
SystemFunction017% = 3
SystemFunction018% = 3
SystemFunction019% = 3
SystemFunction020% = 3
SystemFunction021% = 3
SystemFunction022% = 3
SystemFunction023% = 3
SystemFunction024% = 3
SystemFunction025% = 3
SystemFunction026% = 3
SystemFunction027% = 3
SystemFunction028% = 2
SystemFunction029% = 2
SystemFunction030% = 2
SystemFunction031% = 2
SystemFunction032% = 2
SystemFunction033% = 2
TrusteeAccessToObject% = 6
UnlockServiceDatabase% = 1
WriteRaw% = 3

View File

@@ -0,0 +1,69 @@
; COMCTL32 API calls parameters' count
CreateMappedBitmap% = 5
CreatePropertySheetPage% = 1
CreateStatusWindow% = 4
CreateToolbar% = 8
CreateToolbarEx% = 13
CreateUpDownControl% = 12
DestroyPropertySheetPage% = 1
DrawInsert% = 3
DrawStatusText% = 4
FlatSB_EnableScrollBar% = 3
FlatSB_GetScrollInfo% = 3
FlatSB_GetScrollPos% = 2
FlatSB_GetScrollProp% = 3
FlatSB_GetScrollRange% = 4
FlatSB_SetScrollInfo% = 4
FlatSB_SetScrollPos% = 4
FlatSB_SetScrollProp% = 4
FlatSB_SetScrollRange% = 5
FlatSB_ShowScrollBar% = 3
GetEffectiveClientRect% = 3
ImageList_Add% = 3
ImageList_AddIcon% = 2
ImageList_AddMasked% = 3
ImageList_BeginDrag% = 4
ImageList_Copy% = 5
ImageList_Create% = 5
ImageList_Destroy% = 1
ImageList_DragEnter% = 3
ImageList_DragLeave% = 1
ImageList_DragMove% = 2
ImageList_DragShowNolock% = 1
ImageList_Draw% = 6
ImageList_DrawEx% = 10
ImageList_DrawIndirect% = 1
ImageList_Duplicate% = 1
ImageList_EndDrag% = 0
ImageList_GetBkColor% = 1
ImageList_GetDragImage% = 2
ImageList_GetIcon% = 3
ImageList_GetIconSize% = 3
ImageList_GetImageCount% = 1
ImageList_GetImageInfo% = 3
ImageList_GetImageRect% = 3
ImageList_LoadImage% = 7
ImageList_Merge% = 6
ImageList_Read% = 1
ImageList_Remove% = 2
ImageList_Replace% = 4
ImageList_ReplaceIcon% = 3
ImageList_SetBkColor% = 2
ImageList_SetDragCursorImage% = 4
ImageList_SetFilter% = 3
ImageList_SetIconSize% = 3
ImageList_SetImageCount% = 2
ImageList_SetOverlayImage% = 3
ImageList_Write% = 2
InitCommonControls% = 0
InitCommonControlsEx% = 1
InitializeFlatSB% = 1
LBItemFromPt% = 4
MakeDragList% = 1
MenuHelp% = 7
PropertySheet% = 1
ShowHideMenuCtl% = 3
UninitializeFlatSB% = 1
_TrackMouseEvent% = 1

View File

@@ -0,0 +1,18 @@
; COMDLG32 API calls parameters' count
ChooseColor% = 1
ChooseFont% = 1
CommDlgExtendedError% = 0
FindText% = 1
FormatCharDlgProc% = 4
GetFileTitle% = 3
GetOpenFileName% = 1
GetSaveFileName% = 1
LoadAlterBitmap% = 3
PageSetupDlg% = 1
PrintDlg% = 1
ReplaceText% = 1
WantArrows% = 4
dwLBSubclass% = 4
dwOKSubclass% = 4

View File

@@ -0,0 +1,319 @@
; GDI32 API calls parameters' count
AbortDoc% = 1
AbortPath% = 1
AddFontMemResourceEx% = 4
AddFontResource% = 1
AddFontResourceEx% = 3
AngleArc% = 6
AnimatePalette% = 4
Arc% = 9
ArcTo% = 9
BeginPath% = 1
BitBlt% = 9
CancelDC% = 1
CheckColorsInGamut% = 4
ChoosePixelFormat% = 2
Chord% = 9
CloseEnhMetaFile% = 1
CloseFigure% = 1
CloseMetaFile% = 1
ColorCorrectPalette% = 4
ColorMatchToTarget% = 3
CombineRgn% = 4
CombineTransform% = 3
CopyEnhMetaFile% = 2
CopyMetaFile% = 2
CreateBitmap% = 5
CreateBitmapIndirect% = 1
CreateBrushIndirect% = 1
CreateColorSpace% = 1
CreateCompatibleBitmap% = 3
CreateCompatibleDC% = 1
CreateDC% = 4
CreateDIBPatternBrush% = 2
CreateDIBPatternBrushPt% = 2
CreateDIBSection% = 6
CreateDIBitmap% = 6
CreateDiscardableBitmap% = 3
CreateEllipticRgn% = 4
CreateEllipticRgnIndirect% = 1
CreateEnhMetaFile% = 4
CreateFont% = 14
CreateFontIndirect% = 1
CreateFontIndirectEx% = 1
CreateHalftonePalette% = 1
CreateHatchBrush% = 2
CreateIC% = 4
CreateMetaFile% = 1
CreatePalette% = 1
CreatePatternBrush% = 1
CreatePen% = 3
CreatePenIndirect% = 1
CreatePolyPolygonRgn% = 4
CreatePolygonRgn% = 3
CreateRectRgn% = 4
CreateRectRgnIndirect% = 1
CreateRoundRectRgn% = 6
CreateScalableFontResource% = 4
CreateSolidBrush% = 1
DPtoLP% = 3
DeleteColorSpace% = 1
DeleteDC% = 1
DeleteEnhMetaFile% = 1
DeleteMetaFile% = 1
DeleteObject% = 1
DescribePixelFormat% = 4
DeviceCapabilitiesEx% = 6
DrawEscape% = 4
Ellipse% = 5
EnableEUDC% = 1
EndDoc% = 1
EndPage% = 1
EndPath% = 1
EnumEnhMetaFile% = 5
EnumFontFamilies% = 4
EnumFontFamiliesEx% = 5
EnumFonts% = 4
EnumICMProfiles% = 3
EnumMetaFile% = 4
EnumObjects% = 4
EqualRgn% = 2
Escape% = 5
ExcludeClipRect% = 5
ExtCreatePen% = 5
ExtCreateRegion% = 3
ExtEscape% = 6
ExtFloodFill% = 5
ExtSelectClipRgn% = 3
ExtTextOut% = 8
FillPath% = 1
FillRgn% = 3
FixBrushOrgEx% = 4
FlattenPath% = 1
FloodFill% = 4
FrameRgn% = 5
GdiComment% = 3
GdiDeleteSpoolFileHandle% = 1
GdiEndDocEMF% = 1
GdiEndPageEMF% = 2
GdiFlush% = 0
GdiGetBatchLimit% = 0
GdiGetDC% = 1
GdiGetDevmodeForPage% = 4
GdiGetPageCount% = 1
GdiGetPageHandle% = 3
GdiGetSpoolFileHandle% = 3
GdiPlayDCScript% = 6
GdiPlayEMF% = 5
GdiPlayJournal% = 5
GdiPlayPageEMF% = 4
GdiPlayPrivatePageEMF% = 3
GdiPlayScript% = 7
GdiResetDCEMF% = 2
GdiSetBatchLimit% = 1
GdiStartDocEMF% = 2
GdiStartPageEMF% = 1
GetArcDirection% = 1
GetAspectRatioFilterEx% = 2
GetBitmapBits% = 3
GetBitmapDimensionEx% = 2
GetBkColor% = 1
GetBkMode% = 1
GetBoundsRect% = 3
GetBrushOrgEx% = 2
GetCharABCWidths% = 4
GetCharABCWidthsFloat% = 4
GetCharABCWidthsI% = 5
GetCharWidth32% = 4
GetCharWidth% = 4
GetCharWidthFloat% = 4
GetCharWidthI% = 5
GetCharacterPlacement% = 6
GetClipBox% = 2
GetClipRgn% = 2
GetColorAdjustment% = 2
GetColorSpace% = 1
GetCurrentObject% = 2
GetCurrentPositionEx% = 2
GetDCBrushColor% = 1
GetDCOrgEx% = 2
GetDCPenColor% = 1
GetDIBColorTable% = 4
GetDIBits% = 7
GetDeviceCaps% = 2
GetDeviceGammaRamp% = 2
GetEnhMetaFile% = 1
GetEnhMetaFileBits% = 3
GetEnhMetaFileDescription% = 3
GetEnhMetaFileHeader% = 3
GetEnhMetaFilePaletteEntries% = 3
GetEnhMetaFilePixelFormat% = 3
GetFontAssocStatus% = 1
GetFontData% = 5
GetFontLanguageInfo% = 1
GetFontUnicodeRanges% = 2
GetGlyphIndices% = 5
GetGlyphOutline% = 7
GetGraphicsMode% = 1
GetICMProfile% = 3
GetKerningPairs% = 3
GetLogColorSpace% = 3
GetMapMode% = 1
GetMetaFile% = 1
GetMetaFileBitsEx% = 3
GetMetaRgn% = 2
GetMiterLimit% = 2
GetNearestColor% = 2
GetNearestPaletteIndex% = 2
GetObject% = 3
GetObjectType% = 1
GetOutlineTextMetrics% = 3
GetPaletteEntries% = 4
GetPath% = 4
GetPixel% = 3
GetPixelFormat% = 1
GetPolyFillMode% = 1
GetROP2% = 1
GetRandomRgn% = 3
GetRasterizerCaps% = 2
GetRegionData% = 3
GetRelAbs% = 2
GetRgnBox% = 2
GetStockObject% = 1
GetStretchBltMode% = 1
GetSystemPaletteEntries% = 4
GetSystemPaletteUse% = 1
GetTextAlign% = 1
GetTextCharacterExtra% = 1
GetTextCharset% = 1
GetTextCharsetInfo% = 3
GetTextColor% = 1
GetTextExtentExPoint% = 7
GetTextExtentExPointI% = 7
GetTextExtentPoint32% = 4
GetTextExtentPoint% = 4
GetTextExtentPointI% = 4
GetTextFace% = 3
GetTextMetrics% = 2
GetViewportExtEx% = 2
GetViewportOrgEx% = 2
GetWinMetaFileBits% = 5
GetWindowExtEx% = 2
GetWindowOrgEx% = 2
GetWorldTransform% = 2
IntersectClipRect% = 5
InvertRgn% = 2
LPtoDP% = 3
LineDD% = 6
LineTo% = 3
MaskBlt% = 12
ModifyWorldTransform% = 3
MoveToEx% = 4
OffsetClipRgn% = 3
OffsetRgn% = 3
OffsetViewportOrgEx% = 4
OffsetWindowOrgEx% = 4
PaintRgn% = 2
PatBlt% = 6
PathToRegion% = 1
Pie% = 9
PlayEnhMetaFile% = 3
PlayEnhMetaFileRecord% = 4
PlayMetaFile% = 2
PlayMetaFileRecord% = 4
PlgBlt% = 10
PolyBezier% = 3
PolyBezierTo% = 3
PolyDraw% = 4
PolyPatBlt% = 5
PolyPolygon% = 4
PolyPolyline% = 4
PolyTextOut% = 3
Polygon% = 3
Polyline% = 3
PolylineTo% = 3
PtInRegion% = 3
PtVisible% = 3
RealizePalette% = 1
RectInRegion% = 2
RectVisible% = 2
Rectangle% = 5
RemoveFontMemResourceEx% = 1
RemoveFontResource% = 1
RemoveFontResourceEx% = 3
ResetDC% = 2
ResizePalette% = 2
RestoreDC% = 2
RoundRect% = 7
SaveDC% = 1
ScaleViewportExtEx% = 6
ScaleWindowExtEx% = 6
SelectBrushLocal% = 2
SelectClipPath% = 2
SelectClipRgn% = 2
SelectFontLocal% = 2
SelectObject% = 2
SelectPalette% = 3
SetAbortProc% = 2
SetArcDirection% = 2
SetBitmapBits% = 3
SetBitmapDimensionEx% = 4
SetBkColor% = 2
SetBkMode% = 2
SetBoundsRect% = 3
SetBrushOrgEx% = 4
SetColorAdjustment% = 2
SetColorSpace% = 2
SetDCBrushColor% = 2
SetDCPenColor% = 2
SetDIBColorTable% = 4
SetDIBits% = 7
SetDIBitsToDevice% = 12
SetDeviceGammaRamp% = 2
SetEnhMetaFileBits% = 2
SetFontEnumeration% = 1
SetGraphicsMode% = 2
SetICMMode% = 2
SetICMProfile% = 2
SetMagicColors% = 3
SetMapMode% = 2
SetMapperFlags% = 2
SetMetaFileBitsEx% = 2
SetMetaRgn% = 1
SetMiterLimit% = 3
SetPaletteEntries% = 4
SetPixel% = 4
SetPixelFormat% = 3
SetPixelV% = 4
SetPolyFillMode% = 2
SetROP2% = 2
SetRectRgn% = 5
SetRelAbs% = 2
SetStretchBltMode% = 2
SetSystemPaletteUse% = 2
SetTextAlign% = 2
SetTextCharacterExtra% = 2
SetTextColor% = 2
SetTextJustification% = 3
SetViewportExtEx% = 4
SetViewportOrgEx% = 4
SetWinMetaFileBits% = 4
SetWindowExtEx% = 4
SetWindowOrgEx% = 4
SetWorldTransform% = 2
StartDoc% = 2
StartPage% = 1
StretchBlt% = 11
StretchDIBits% = 13
StrokeAndFillPath% = 1
StrokePath% = 1
SwapBuffers% = 1
TextOut% = 5
TranslateCharsetInfo% = 3
UnrealizeObject% = 1
UpdateColors% = 1
UpdateICMRegKey% = 4
WidenPath% = 1
gdiPlaySpoolStream% = 6

View File

@@ -0,0 +1,557 @@
; KERNEL32 API calls parameters' count
AddAtom% = 1
AddConsoleAlias% = 3
AllocConsole% = 0
AreFileApisANSI% = 0
AssignProcessToJobObject% = 2
BackupRead% = 7
BackupSeek% = 6
BackupWrite% = 7
BaseAttachCompleteThunk% = 0
Beep% = 2
BeginUpdateResource% = 2
BuildCommDCB% = 2
BuildCommDCBAndTimeouts% = 3
CallNamedPipe% = 7
CancelIo% = 1
CancelWaitableTimer% = 1
ClearCommBreak% = 1
ClearCommError% = 3
CloseConsoleHandle% = 1
CloseHandle% = 1
CloseProfileUserMapping% = 0
CmdBatNotification% = 1
CommConfigDialog% = 3
CompareFileTime% = 2
CompareString% = 6
ConnectNamedPipe% = 2
ConsoleMenuControl% = 3
ContinueDebugEvent% = 3
ConvertDefaultLocale% = 1
ConvertThreadToFiber% = 1
CopyFile% = 3
CopyFileEx% = 6
CreateConsoleScreenBuffer% = 5
CreateDirectory% = 2
CreateDirectoryEx% = 3
CreateEvent% = 4
CreateFiber% = 3
CreateFile% = 7
CreateFileMapping% = 6
CreateHardLink% = 3
CreateIoCompletionPort% = 4
CreateJobObject% = 2
CreateMailslot% = 4
CreateMutex% = 3
CreateNamedPipe% = 8
CreatePipe% = 4
CreateProcess% = 10
CreateRemoteThread% = 7
CreateSemaphore% = 4
CreateTapePartition% = 4
CreateThread% = 6
CreateToolhelp32Snapshot% = 2
CreateVirtualBuffer% = 3
CreateWaitableTimer% = 3
DebugActiveProcess% = 1
DebugBreak% = 0
DefineDosDevice% = 3
DeleteAtom% = 1
DeleteCriticalSection% = 1
DeleteFiber% = 1
DeleteFile% = 1
DeviceIoControl% = 8
DisableThreadLibraryCalls% = 1
DisconnectNamedPipe% = 1
DosDateTimeToFileTime% = 3
DuplicateConsoleHandle% = 4
DuplicateHandle% = 7
EndUpdateResource% = 2
EnterCriticalSection% = 1
EnumCalendarInfo% = 4
EnumCalendarInfoEx% = 4
EnumDateFormats% = 3
EnumDateFormatsEx% = 3
EnumResourceLanguages% = 5
EnumResourceNames% = 4
EnumResourceTypes% = 3
EnumSystemCodePages% = 2
EnumSystemLocales% = 2
EnumTimeFormats% = 3
EraseTape% = 3
EscapeCommFunction% = 2
ExitProcess% = 1
ExitThread% = 1
ExitVDM% = 2
ExpandEnvironmentStrings% = 3
ExpungeConsoleCommandHistory% = 1
ExtendVirtualBuffer% = 2
FatalAppExit% = 2
FatalExit% = 1
FileTimeToDosDateTime% = 3
FileTimeToLocalFileTime% = 2
FileTimeToSystemTime% = 2
FillConsoleOutputAttribute% = 5
FillConsoleOutputCharacter% = 5
FindAtom% = 1
FindClose% = 1
FindCloseChangeNotification% = 1
FindFirstChangeNotification% = 3
FindFirstFile% = 2
FindFirstFileEx% = 6
FindNextChangeNotification% = 1
FindNextFile% = 2
FindResource% = 3
FindResourceEx% = 4
FlushConsoleInputBuffer% = 1
FlushFileBuffers% = 1
FlushInstructionCache% = 3
FlushViewOfFile% = 2
FoldString% = 5
FormatMessage% = 7
FreeConsole% = 0
FreeEnvironmentStrings% = 1
FreeLibrary% = 1
FreeLibraryAndExitThread% = 2
FreeResource% = 1
FreeVirtualBuffer% = 1
GenerateConsoleCtrlEvent% = 2
GetACP% = 0
GetAtomName% = 3
GetBinaryType% = 2
GetCPInfo% = 2
GetCPInfoEx% = 3
GetCommConfig% = 3
GetCommMask% = 2
GetCommModemStatus% = 2
GetCommProperties% = 2
GetCommState% = 2
GetCommTimeouts% = 2
GetCommandLine% = 0
GetCompressedFileSize% = 2
GetComputerName% = 2
GetConsoleAlias% = 4
GetConsoleAliasExes% = 2
GetConsoleAliasExesLength% = 0
GetConsoleAliases% = 3
GetConsoleAliasesLength% = 1
GetConsoleCP% = 0
GetConsoleCommandHistory% = 3
GetConsoleCommandHistoryLength% = 1
GetConsoleCursorInfo% = 2
GetConsoleDisplayMode% = 1
GetConsoleFontInfo% = 4
GetConsoleFontSize% = 2
GetConsoleHardwareState% = 3
GetConsoleInputExeName% = 2
GetConsoleInputWaitHandle% = 0
GetConsoleKeyboardLayoutName% = 1
GetConsoleMode% = 2
GetConsoleOutputCP% = 0
GetConsoleScreenBufferInfo% = 2
GetConsoleTitle% = 2
GetConsoleWindow% = 0
GetCurrencyFormat% = 6
GetCurrentConsoleFont% = 3
GetCurrentDirectory% = 2
GetCurrentProcess% = 0
GetCurrentProcessId% = 0
GetCurrentThread% = 0
GetCurrentThreadId% = 0
GetDateFormat% = 6
GetDefaultCommConfig% = 3
GetDevicePowerState% = 1
GetDiskFreeSpace% = 5
GetDiskFreeSpaceEx% = 4
GetDriveType% = 1
GetEnvironmentStrings% = 0
GetEnvironmentVariable% = 3
GetExitCodeProcess% = 2
GetExitCodeThread% = 2
GetFileAttributes% = 1
GetFileAttributesEx% = 3
GetFileInformationByHandle% = 2
GetFileSize% = 2
GetFileTime% = 4
GetFileType% = 1
GetFullPathName% = 4
GetHandleInformation% = 2
GetLargestConsoleWindowSize% = 1
GetLastError% = 0
GetLocalTime% = 1
GetLocaleInfo% = 4
GetLogicalDriveStrings% = 2
GetLogicalDrives% = 0
GetLongPathName% = 3
GetMailslotInfo% = 5
GetModuleFileName% = 3
GetModuleHandle% = 1
GetNamedPipeHandleState% = 7
GetNamedPipeInfo% = 5
GetNextVDMCommand% = 1
GetNumberFormat% = 6
GetNumberOfConsoleFonts% = 0
GetNumberOfConsoleInputEvents% = 2
GetNumberOfConsoleMouseButtons% = 1
GetOEMCP% = 0
GetOverlappedResult% = 4
GetPriorityClass% = 1
GetPrivateProfileInt% = 4
GetPrivateProfileSection% = 4
GetPrivateProfileSectionNames% = 3
GetPrivateProfileString% = 6
GetPrivateProfileStruct% = 5
GetProcAddress% = 2
GetProcessAffinityMask% = 3
GetProcessHeap% = 0
GetProcessHeaps% = 2
GetProcessPriorityBoost% = 2
GetProcessShutdownParameters% = 2
GetProcessTimes% = 5
GetProcessVersion% = 1
GetProcessWorkingSetSize% = 3
GetProfileInt% = 3
GetProfileSection% = 3
GetProfileString% = 5
GetQueuedCompletionStatus% = 5
GetShortPathName% = 3
GetStartupInfo% = 1
GetStdHandle% = 1
GetStringType% = 5
GetStringTypeEx% = 5
GetSystemDefaultLCID% = 0
GetSystemDefaultLangID% = 0
GetSystemDirectory% = 2
GetSystemInfo% = 1
GetSystemPowerStatus% = 1
GetSystemTime% = 1
GetSystemTimeAdjustment% = 3
GetSystemTimeAsFileTime% = 1
GetTapeParameters% = 4
GetTapePosition% = 5
GetTapeStatus% = 1
GetTempFileName% = 4
GetTempPath% = 2
GetThreadContext% = 2
GetThreadLocale% = 0
GetThreadPriority% = 1
GetThreadPriorityBoost% = 2
GetThreadSelectorEntry% = 3
GetThreadTimes% = 5
GetTickCount% = 0
GetTimeFormat% = 6
GetTimeZoneInformation% = 1
GetUserDefaultLCID% = 0
GetUserDefaultLangID% = 0
GetVDMCurrentDirectories% = 2
GetVersion% = 0
GetVersionEx% = 1
GetVolumeInformation% = 8
GetWindowsDirectory% = 2
GlobalAddAtom% = 1
GlobalAlloc% = 2
GlobalCompact% = 1
GlobalDeleteAtom% = 1
GlobalFindAtom% = 1
GlobalFix% = 1
GlobalFlags% = 1
GlobalFree% = 1
GlobalGetAtomName% = 3
GlobalHandle% = 1
GlobalLock% = 1
GlobalMemoryStatus% = 1
GlobalMemoryStatusVlm% = 1
GlobalReAlloc% = 3
GlobalSize% = 1
GlobalUnWire% = 1
GlobalUnfix% = 1
GlobalUnlock% = 1
GlobalWire% = 1
Heap32First% = 3
Heap32ListFirst% = 2
Heap32ListNext% = 2
Heap32Next% = 1
HeapAlloc% = 3
HeapCompact% = 2
HeapCreate% = 3
HeapDestroy% = 1
HeapExtend% = 4
HeapFree% = 3
HeapLock% = 1
HeapReAlloc% = 4
HeapSize% = 3
HeapSummary% = 3
HeapUnlock% = 1
HeapUsage% = 5
HeapValidate% = 3
HeapWalk% = 2
InitAtomTable% = 1
InitializeCriticalSection% = 1
InitializeCriticalSectionAndSpinCount% = 2
InterlockedCompareExchange% = 3
InterlockedDecrement% = 1
InterlockedExchange% = 2
InterlockedExchangeAdd% = 2
InterlockedIncrement% = 1
InvalidateConsoleDIBits% = 2
IsBadCodePtr% = 1
IsBadHugeReadPtr% = 2
IsBadHugeWritePtr% = 2
IsBadReadPtr% = 2
IsBadStringPtr% = 2
IsBadWritePtr% = 2
IsDBCSLeadByte% = 1
IsDBCSLeadByteEx% = 2
IsDebuggerPresent% = 0
IsProcessorFeaturePresent% = 1
IsValidCodePage% = 1
IsValidLocale% = 2
LCMapString% = 6
LeaveCriticalSection% = 1
LoadLibrary% = 1
LoadLibraryEx% = 3
LoadModule% = 2
LoadResource% = 2
LocalAlloc% = 2
LocalCompact% = 1
LocalFileTimeToFileTime% = 2
LocalFlags% = 1
LocalFree% = 1
LocalHandle% = 1
LocalLock% = 1
LocalReAlloc% = 3
LocalShrink% = 2
LocalSize% = 1
LocalUnlock% = 1
LockFile% = 5
LockFileEx% = 6
LockResource% = 1
MapViewOfFile% = 5
MapViewOfFileEx% = 6
MapViewOfFileVlm% = 7
Module32First% = 2
Module32Next% = 2
MoveFile% = 2
MoveFileEx% = 3
MoveFileWithProgress% = 5
MulDiv% = 3
MultiByteToWideChar% = 6
OpenEvent% = 3
OpenFile% = 3
OpenFileMapping% = 3
OpenJobObject% = 3
OpenMutex% = 3
OpenProcess% = 3
OpenProfileUserMapping% = 0
OpenSemaphore% = 3
OpenWaitableTimer% = 3
OutputDebugString% = 1
PeekConsoleInput% = 4
PeekNamedPipe% = 6
PostQueuedCompletionStatus% = 4
PrepareTape% = 3
Process32First% = 2
Process32Next% = 2
PulseEvent% = 1
PurgeComm% = 2
QueryDosDevice% = 3
QueryInformationJobObject% = 5
QueryPerformanceCounter% = 1
QueryPerformanceFrequency% = 1
QueryWin31IniFilesMappedToRegistry% = 4
QueueUserAPC% = 3
RaiseException% = 4
ReadConsole% = 5
ReadConsoleInput% = 4
ReadConsoleInputEx% = 5
ReadConsoleOutput% = 5
ReadConsoleOutputAttribute% = 5
ReadConsoleOutputCharacter% = 5
ReadFile% = 5
ReadFileEx% = 5
ReadFileScatter% = 5
ReadFileVlm% = 5
ReadProcessMemory% = 5
ReadProcessMemoryVlm% = 5
RegisterConsoleVDM% = 11
RegisterWaitForInputIdle% = 1
RegisterWowBaseHandlers% = 1
RegisterWowExec% = 1
ReleaseMutex% = 1
ReleaseSemaphore% = 3
RemoveDirectory% = 1
RequestWakeupLatency% = 1
ResetEvent% = 1
ResumeThread% = 1
RtlFillMemory% = 3
RtlMoveMemory% = 3
RtlUnwind% = 4
RtlZeroMemory% = 2
ScrollConsoleScreenBuffer% = 5
SearchPath% = 6
SetCommBreak% = 1
SetCommConfig% = 3
SetCommMask% = 2
SetCommState% = 2
SetCommTimeouts% = 2
SetComputerName% = 1
SetConsoleActiveScreenBuffer% = 1
SetConsoleCP% = 1
SetConsoleCommandHistoryMode% = 1
SetConsoleCtrlHandler% = 2
SetConsoleCursor% = 2
SetConsoleCursorInfo% = 2
SetConsoleCursorPosition% = 2
SetConsoleDisplayMode% = 3
SetConsoleFont% = 2
SetConsoleHardwareState% = 3
SetConsoleIcon% = 1
SetConsoleInputExeName% = 1
SetConsoleKeyShortcuts% = 4
SetConsoleMaximumWindowSize% = 2
SetConsoleMenuClose% = 1
SetConsoleMode% = 2
SetConsoleNumberOfCommands% = 2
SetConsoleOutputCP% = 1
SetConsolePalette% = 3
SetConsoleScreenBufferSize% = 2
SetConsoleTextAttribute% = 2
SetConsoleTitle% = 1
SetConsoleWindowInfo% = 3
SetCriticalSectionSpinCount% = 2
SetCurrentDirectory% = 1
SetDefaultCommConfig% = 3
SetEndOfFile% = 1
SetEnvironmentVariable% = 2
SetErrorMode% = 1
SetEvent% = 1
SetFileApisToANSI% = 0
SetFileApisToOEM% = 0
SetFileAttributes% = 2
SetFilePointer% = 4
SetFileTime% = 4
SetHandleCount% = 1
SetHandleInformation% = 3
SetInformationJobObject% = 4
SetLastConsoleEventActive% = 0
SetLastError% = 1
SetLocalTime% = 1
SetLocaleInfo% = 3
SetMailslotInfo% = 2
SetNamedPipeHandleState% = 4
SetPriorityClass% = 2
SetProcessAffinityMask% = 2
SetProcessPriorityBoost% = 2
SetProcessShutdownParameters% = 2
SetProcessWorkingSetSize% = 3
SetStdHandle% = 2
SetSystemPowerState% = 2
SetSystemTime% = 1
SetSystemTimeAdjustment% = 2
SetTapeParameters% = 3
SetTapePosition% = 6
SetThreadAffinityMask% = 2
SetThreadContext% = 2
SetThreadExecutionState% = 1
SetThreadIdealProcessor% = 2
SetThreadLocale% = 1
SetThreadPriority% = 2
SetThreadPriorityBoost% = 2
SetTimeZoneInformation% = 1
SetUnhandledExceptionFilter% = 1
SetVDMCurrentDirectories% = 2
SetVolumeLabel% = 2
SetWaitableTimer% = 6
SetupComm% = 3
ShowConsoleCursor% = 2
SignalObjectAndWait% = 4
SizeofResource% = 2
Sleep% = 1
SleepEx% = 2
SuspendThread% = 1
SwitchToFiber% = 1
SwitchToThread% = 0
SystemTimeToFileTime% = 2
SystemTimeToTzSpecificLocalTime% = 3
TerminateJobObject% = 2
TerminateProcess% = 2
TerminateThread% = 2
Thread32First% = 2
Thread32Next% = 2
TlsAlloc% = 0
TlsFree% = 1
TlsGetValue% = 1
TlsSetValue% = 2
Toolhelp32ReadProcessMemory% = 5
TransactNamedPipe% = 7
TransmitCommChar% = 2
TrimVirtualBuffer% = 1
TryEnterCriticalSection% = 1
UnhandledExceptionFilter% = 1
UnlockFile% = 5
UnlockFileEx% = 5
UnmapViewOfFile% = 1
UnmapViewOfFileVlm% = 1
UpdateResource% = 6
VDMConsoleOperation% = 2
VDMOperationStarted% = 1
VerLanguageName% = 3
VerifyConsoleIoHandle% = 1
VirtualAlloc% = 4
VirtualAllocEx% = 5
VirtualAllocVlm% = 6
VirtualBufferExceptionHandler% = 3
VirtualFree% = 3
VirtualFreeEx% = 4
VirtualFreeVlm% = 5
VirtualLock% = 2
VirtualProtect% = 4
VirtualProtectEx% = 5
VirtualProtectVlm% = 6
VirtualQuery% = 3
VirtualQueryEx% = 4
VirtualQueryVlm% = 4
VirtualUnlock% = 2
WaitCommEvent% = 3
WaitForDebugEvent% = 2
WaitForMultipleObjects% = 4
WaitForMultipleObjectsEx% = 5
WaitForSingleObject% = 2
WaitForSingleObjectEx% = 3
WaitNamedPipe% = 2
WideCharToMultiByte% = 8
WinExec% = 2
WriteConsole% = 5
WriteConsoleInput% = 4
WriteConsoleInputVDM% = 4
WriteConsoleOutput% = 5
WriteConsoleOutputAttribute% = 5
WriteConsoleOutputCharacter% = 5
WriteFile% = 5
WriteFileEx% = 5
WriteFileGather% = 5
WriteFileVlm% = 5
WritePrivateProfileSection% = 3
WritePrivateProfileString% = 4
WritePrivateProfileStruct% = 5
WriteProcessMemory% = 5
WriteProcessMemoryVlm% = 5
WriteProfileSection% = 2
WriteProfileString% = 3
WriteTapemark% = 4
_hread% = 3
_hwrite% = 3
_lclose% = 1
_lcreat% = 2
_llseek% = 3
_lopen% = 2
_lread% = 3
_lwrite% = 3
lstrcat% = 2
lstrcmp% = 2
lstrcmpi% = 2
lstrcpy% = 2
lstrcpyn% = 3
lstrlen% = 1

View File

@@ -0,0 +1,73 @@
; SHELL32 API calls parameters' count
CheckEscapes% = 2
DoEnvironmentSubst% = 2
DragAcceptFiles% = 2
DragFinish% = 1
DragQueryFile% = 4
DragQueryPoint% = 2
DuplicateIcon% = 2
ExtractAssociatedIcon% = 3
ExtractAssociatedIconEx% = 4
ExtractIcon% = 3
ExtractIconEx% = 5
ExtractIconResInfo% = 5
FindExeDlgProc% = 4
FindExecutable% = 3
FreeIconList% = 2
InternalExtractIconList% = 3
RealShellExecute% = 10
RealShellExecuteEx% = 11
RegenerateUserEnvironment% = 2
SHAddToRecentDocs% = 2
SHAppBarMessage% = 2
SHBrowseForFolder% = 1
SHChangeNotify% = 4
SHEmptyRecycleBin% = 3
SHFileOperation% = 1
SHFormatDrive% = 4
SHFreeNameMappings% = 1
SHGetDataFromIDList% = 5
SHGetDesktopFolder% = 1
SHGetDiskFreeSpace% = 4
SHGetFileInfo% = 5
SHGetInstanceExplorer% = 1
SHGetMalloc% = 1
SHGetNewLinkInfo% = 5
SHGetPathFromIDList% = 2
SHGetSettings% = 2
SHGetSpecialFolderLocation% = 3
SHGetSpecialFolderPath% = 4
SHInvokePrinterCommand% = 5
SHLoadInProc% = 1
SHQueryRecycleBin% = 2
SHUpdateRecycleBinIcon% = 0
SheChangeDir% = 1
SheChangeDirEx% = 1
SheFullPath% = 3
SheGetCurDrive% = 0
SheGetDir% = 2
SheRemoveQuotes% = 1
SheSetCurDrive% = 1
SheShortenPath% = 2
ShellAbout% = 4
ShellExecute% = 6
ShellExecuteEx% = 1
ShellHookProc% = 3
Shell_NotifyIcon% = 2
StrChr% = 2
StrChrI% = 2
StrCmpN% = 3
StrCmpNI% = 3
StrCpyN% = 3
StrNCmp% = 3
StrNCmpI% = 3
StrNCpy% = 3
StrRChr% = 3
StrRChrI% = 3
StrRStr% = 3
StrRStrI% = 3
StrStr% = 2
StrStrI% = 2
WOWShellExecute% = 7

View File

@@ -0,0 +1,477 @@
; USER32 API calls parameters' count
ActivateKeyboardLayout% = 2
AdjustWindowRect% = 3
AdjustWindowRectEx% = 4
AnimateWindow% = 3
AnyPopup% = 0
AppendMenu% = 4
ArrangeIconicWindows% = 1
AttachThreadInput% = 3
BeginDeferWindowPos% = 1
BeginPaint% = 2
BlockInput% = 1
BringWindowToTop% = 1
BroadcastSystemMessage% = 5
CallMsgFilter% = 2
CallNextHookEx% = 4
CallWindowProc% = 5
CascadeChildWindows% = 2
CascadeWindows% = 5
ChangeClipboardChain% = 2
ChangeDisplaySettings% = 2
ChangeDisplaySettingsEx% = 5
ChangeMenu% = 5
CharLower% = 1
CharLowerBuff% = 2
CharNext% = 1
CharNextEx% = 3
CharPrev% = 2
CharPrevEx% = 4
CharToOem% = 2
CharToOemBuff% = 3
CharUpper% = 1
CharUpperBuff% = 2
CheckDlgButton% = 3
CheckMenuItem% = 3
CheckMenuRadioItem% = 5
CheckRadioButton% = 4
ChildWindowFromPoint% = 3
ChildWindowFromPointEx% = 4
ClientToScreen% = 2
ClipCursor% = 1
CloseClipboard% = 0
CloseDesktop% = 1
CloseWindow% = 1
CloseWindowStation% = 1
CopyAcceleratorTable% = 3
CopyIcon% = 1
CopyImage% = 5
CopyRect% = 2
CountClipboardFormats% = 0
CreateAcceleratorTable% = 2
CreateCaret% = 4
CreateCursor% = 7
CreateDesktop% = 6
CreateDialogIndirectParam% = 5
CreateDialogParam% = 5
CreateIcon% = 7
CreateIconFromResource% = 4
CreateIconFromResourceEx% = 7
CreateIconIndirect% = 1
CreateMDIWindow% = 10
CreateMenu% = 0
CreatePopupMenu% = 0
CreateWindowEx% = 12
CreateWindowStation% = 4
DdeAbandonTransaction% = 3
DdeAccessData% = 2
DdeAddData% = 4
DdeClientTransaction% = 8
DdeCmpStringHandles% = 2
DdeConnect% = 4
DdeConnectList% = 5
DdeCreateDataHandle% = 7
DdeCreateStringHandle% = 3
DdeDisconnect% = 1
DdeDisconnectList% = 1
DdeEnableCallback% = 3
DdeFreeDataHandle% = 1
DdeFreeStringHandle% = 2
DdeGetData% = 4
DdeGetLastError% = 1
DdeGetQualityOfService% = 3
DdeImpersonateClient% = 1
DdeInitialize% = 4
DdeKeepStringHandle% = 2
DdeNameService% = 4
DdePostAdvise% = 3
DdeQueryConvInfo% = 3
DdeQueryNextServer% = 2
DdeQueryString% = 5
DdeReconnect% = 1
DdeSetQualityOfService% = 3
DdeSetUserHandle% = 3
DdeUnaccessData% = 1
DdeUninitialize% = 1
DefDlgProc% = 4
DefFrameProc% = 5
DefMDIChildProc% = 4
DefWindowProc% = 4
DeferWindowPos% = 8
DeleteMenu% = 3
DestroyAcceleratorTable% = 1
DestroyCaret% = 0
DestroyCursor% = 1
DestroyIcon% = 1
DestroyMenu% = 1
DestroyWindow% = 1
DialogBoxIndirectParam% = 5
DialogBoxParam% = 5
DispatchMessage% = 1
DlgDirList% = 5
DlgDirListComboBox% = 5
DlgDirSelectComboBoxEx% = 4
DlgDirSelectEx% = 4
DragDetect% = 3
DragObject% = 5
DrawAnimatedRects% = 4
DrawCaption% = 4
DrawEdge% = 4
DrawFocusRect% = 2
DrawFrame% = 4
DrawFrameControl% = 4
DrawIcon% = 4
DrawIconEx% = 9
DrawMenuBar% = 1
DrawState% = 10
DrawText% = 5
DrawTextEx% = 6
EditWndProc% = 4
EmptyClipboard% = 0
EnableMenuItem% = 3
EnableScrollBar% = 3
EnableWindow% = 2
EndDeferWindowPos% = 1
EndDialog% = 2
EndMenu% = 0
EndPaint% = 2
EnumChildWindows% = 3
EnumClipboardFormats% = 1
EnumDesktopWindows% = 3
EnumDesktops% = 3
EnumDisplayMonitors% = 4
EnumDisplaySettings% = 3
EnumDisplaySettingsEx% = 4
EnumProps% = 2
EnumPropsEx% = 3
EnumThreadWindows% = 3
EnumWindowStations% = 2
EnumWindows% = 2
EqualRect% = 2
ExcludeUpdateRgn% = 2
ExitWindowsEx% = 2
FillRect% = 3
FindWindow% = 2
FindWindowEx% = 4
FlashWindow% = 2
FrameRect% = 3
FreeDDElParam% = 2
GetActiveWindow% = 0
GetAltTabInfo% = 5
GetAncestor% = 2
GetAsyncKeyState% = 1
GetCapture% = 0
GetCaretBlinkTime% = 0
GetCaretPos% = 1
GetClassInfo% = 3
GetClassInfoEx% = 3
GetClassLong% = 2
GetClassName% = 3
GetClassWord% = 2
GetClientRect% = 2
GetClipCursor% = 1
GetClipboardData% = 1
GetClipboardFormatName% = 3
GetClipboardSequenceNumber% = 0
GetClipboardViewer% = 0
GetComboBoxInfo% = 2
GetCursor% = 0
GetCursorInfo% = 1
GetCursorPos% = 1
GetDC% = 1
GetDCEx% = 3
GetDesktopWindow% = 0
GetDialogBaseUnits% = 0
GetDlgCtrlID% = 1
GetDlgItem% = 2
GetDlgItemInt% = 4
GetDlgItemText% = 4
GetDoubleClickTime% = 0
GetFocus% = 0
GetForegroundWindow% = 0
GetGUIThreadInfo% = 2
GetGuiResources% = 2
GetIconInfo% = 2
GetInputDesktop% = 0
GetInputState% = 0
GetKBCodePage% = 0
GetKeyNameText% = 3
GetKeyState% = 1
GetKeyboardLayout% = 1
GetKeyboardLayoutList% = 2
GetKeyboardLayoutName% = 1
GetKeyboardState% = 1
GetKeyboardType% = 1
GetLastActivePopup% = 1
GetLastInputInfo% = 1
GetListBoxInfo% = 1
GetMenu% = 1
GetMenuBarInfo% = 4
GetMenuCheckMarkDimensions% = 0
GetMenuContextHelpId% = 1
GetMenuDefaultItem% = 3
GetMenuInfo% = 2
GetMenuItemCount% = 1
GetMenuItemID% = 2
GetMenuItemInfo% = 4
GetMenuItemRect% = 4
GetMenuState% = 3
GetMenuString% = 5
GetMessage% = 4
GetMessageExtraInfo% = 0
GetMessagePos% = 0
GetMessageTime% = 0
GetMonitorInfo% = 2
GetMouseMovePoints% = 5
GetNextDlgGroupItem% = 3
GetNextDlgTabItem% = 3
GetOpenClipboardWindow% = 0
GetParent% = 1
GetPriorityClipboardFormat% = 2
GetProcessWindowStation% = 0
GetProp% = 2
GetQueueStatus% = 1
GetScrollBarInfo% = 3
GetScrollInfo% = 3
GetScrollPos% = 2
GetScrollRange% = 4
GetShellWindow% = 0
GetSubMenu% = 2
GetSysColor% = 1
GetSysColorBrush% = 1
GetSystemMenu% = 2
GetSystemMetrics% = 1
GetTabbedTextExtent% = 5
GetThreadDesktop% = 1
GetTitleBarInfo% = 2
GetTopWindow% = 1
GetUpdateRect% = 3
GetUpdateRgn% = 3
GetUserObjectInformation% = 5
GetUserObjectSecurity% = 5
GetWindow% = 2
GetWindowContextHelpId% = 1
GetWindowDC% = 1
GetWindowInfo% = 2
GetWindowLong% = 2
GetWindowModuleFileName% = 3
GetWindowPlacement% = 2
GetWindowRect% = 2
GetWindowRgn% = 2
GetWindowText% = 3
GetWindowTextLength% = 1
GetWindowThreadProcessId% = 2
GetWindowWord% = 2
GrayString% = 9
HideCaret% = 1
HiliteMenuItem% = 4
IMPGetIME% = 2
IMPQueryIME% = 1
IMPSetIME% = 2
ImpersonateDdeClientWindow% = 2
InSendMessage% = 0
InSendMessageEx% = 1
InflateRect% = 3
InsertMenu% = 5
InsertMenuItem% = 4
IntersectRect% = 3
InvalidateRect% = 3
InvalidateRgn% = 3
InvertRect% = 2
IsCharAlpha% = 1
IsCharAlphaNumeric% = 1
IsCharLower% = 1
IsCharUpper% = 1
IsChild% = 2
IsClipboardFormatAvailable% = 1
IsDialogMessage% = 2
IsDlgButtonChecked% = 2
IsIconic% = 1
IsMenu% = 1
IsRectEmpty% = 1
IsWindow% = 1
IsWindowEnabled% = 1
IsWindowUnicode% = 1
IsWindowVisible% = 1
IsZoomed% = 1
KillSystemTimer% = 2
KillTimer% = 2
LoadAccelerators% = 2
LoadBitmap% = 2
LoadCursor% = 2
LoadCursorFromFile% = 1
LoadIcon% = 2
LoadImage% = 6
LoadKeyboardLayout% = 2
LoadMenu% = 2
LoadMenuIndirect% = 1
LoadString% = 4
LockWindowUpdate% = 1
LockWorkStation% = 0
LookupIconIdFromDirectory% = 2
LookupIconIdFromDirectoryEx% = 5
MapDialogRect% = 2
MapVirtualKey% = 2
MapVirtualKeyEx% = 3
MapWindowPoints% = 4
MenuItemFromPoint% = 4
MessageBeep% = 1
MessageBox% = 4
MessageBoxEx% = 5
MessageBoxIndirect% = 1
ModifyMenu% = 5
MonitorFromPoint% = 3
MonitorFromRect% = 2
MonitorFromWindow% = 2
MoveWindow% = 6
MsgWaitForMultipleObjects% = 5
MsgWaitForMultipleObjectsEx% = 5
NotifyWinEvent% = 4
OemKeyScan% = 1
OemToChar% = 2
OemToCharBuff% = 3
OffsetRect% = 3
OpenClipboard% = 1
OpenDesktop% = 4
OpenIcon% = 1
OpenInputDesktop% = 3
OpenWindowStation% = 3
PackDDElParam% = 3
PaintDesktop% = 1
PeekMessage% = 5
PostMessage% = 4
PostQuitMessage% = 1
PostThreadMessage% = 4
PtInRect% = 3
RealChildWindowFromPoint% = 3
RealGetWindowClass% = 3
RedrawWindow% = 4
RegisterClass% = 1
RegisterClassEx% = 1
RegisterClipboardFormat% = 1
RegisterDeviceNotification% = 3
RegisterHotKey% = 4
RegisterWindowMessage% = 1
ReleaseCapture% = 0
ReleaseDC% = 2
RemoveMenu% = 3
RemoveProp% = 2
ReplyMessage% = 1
ReuseDDElParam% = 5
ScreenToClient% = 2
ScrollChildren% = 3
ScrollDC% = 7
ScrollWindow% = 5
ScrollWindowEx% = 8
SendDlgItemMessage% = 5
SendIMEMessageEx% = 2
SendInput% = 3
SendMessage% = 4
SendMessageCallback% = 6
SendMessageTimeout% = 7
SendNotifyMessage% = 4
SetActiveWindow% = 1
SetCapture% = 1
SetCaretBlinkTime% = 1
SetCaretPos% = 2
SetClassLong% = 3
SetClassWord% = 3
SetClipboardData% = 2
SetClipboardViewer% = 1
SetCursor% = 1
SetCursorPos% = 2
SetDebugErrorLevel% = 1
SetDeskWallpaper% = 1
SetDlgItemInt% = 4
SetDlgItemText% = 3
SetDoubleClickTime% = 1
SetFocus% = 1
SetForegroundWindow% = 1
SetKeyboardState% = 1
SetLastErrorEx% = 2
SetMenu% = 2
SetMenuContextHelpId% = 2
SetMenuDefaultItem% = 3
SetMenuInfo% = 2
SetMenuItemBitmaps% = 5
SetMenuItemInfo% = 4
SetMessageExtraInfo% = 1
SetMessageQueue% = 1
SetParent% = 2
SetProcessWindowStation% = 1
SetProp% = 3
SetRect% = 5
SetRectEmpty% = 1
SetScrollInfo% = 4
SetScrollPos% = 4
SetScrollRange% = 5
SetShellWindow% = 1
SetSysColors% = 3
SetSystemCursor% = 2
SetSystemMenu% = 2
SetSystemTimer% = 4
SetThreadDesktop% = 1
SetTimer% = 4
SetUserObjectInformation% = 4
SetUserObjectSecurity% = 3
SetWinEventHook% = 7
SetWindowContextHelpId% = 2
SetWindowLong% = 3
SetWindowPlacement% = 2
SetWindowPos% = 7
SetWindowRgn% = 3
SetWindowText% = 2
SetWindowWord% = 3
SetWindowsHook% = 2
SetWindowsHookEx% = 4
ShowCaret% = 1
ShowCursor% = 1
ShowOwnedPopups% = 2
ShowScrollBar% = 3
ShowWindow% = 2
ShowWindowAsync% = 2
SubtractRect% = 3
SwapMouseButton% = 1
SwitchDesktop% = 1
SystemParametersInfo% = 4
TabbedTextOut% = 8
TileChildWindows% = 2
TileWindows% = 5
ToAscii% = 5
ToAsciiEx% = 6
ToUnicode% = 6
ToUnicodeEx% = 7
TrackMouseEvent% = 1
TrackPopupMenu% = 7
TrackPopupMenuEx% = 6
TranslateAccelerator% = 3
TranslateMDISysAccel% = 2
TranslateMessage% = 1
UnhookWinEvent% = 1
UnhookWindowsHook% = 2
UnhookWindowsHookEx% = 1
UnionRect% = 3
UnloadKeyboardLayout% = 1
UnpackDDElParam% = 4
UnregisterClass% = 2
UnregisterDeviceNotification% = 1
UnregisterHotKey% = 2
UpdateWindow% = 1
UserHandleGrantAccess% = 2
ValidateRect% = 2
ValidateRgn% = 2
VkKeyScan% = 1
VkKeyScanEx% = 2
WINNLSEnableIME% = 2
WINNLSGetEnableStatus% = 1
WINNLSGetIMEHotkey% = 1
WaitForInputIdle% = 2
WaitMessage% = 0
WinHelp% = 4
WindowFromDC% = 1
WindowFromPoint% = 2
keybd_event% = 4
mouse_event% = 5
wvsprintf% = 3

View File

@@ -0,0 +1,70 @@
; WSOCK32 API calls parameters' count
AcceptEx% = 8
EnumProtocols% = 3
GetAcceptExSockaddrs% = 8
GetAddressByName% = 10
GetNameByType% = 3
GetService% = 7
GetTypeByName% = 2
MigrateWinsockConfiguration% = 3
NPLoadNameSpaces% = 3
SetService% = 6
TransmitFile% = 7
WEP% = 0
WSAAsyncGetHostByAddr% = 7
WSAAsyncGetHostByName% = 5
WSAAsyncGetProtoByName% = 5
WSAAsyncGetProtoByNumber% = 5
WSAAsyncGetServByName% = 6
WSAAsyncGetServByPort% = 6
WSACancelAsyncRequest% = 4
WSACancelBlockingCall% = 0
WSACleanup% = 0
WSAGetLastError% = 0
WSAIsBlocking% = 0
WSARecvEx% = 4
WSASetBlockingHook% = 1
WSASetLastError% = 1
WSAStartup% = 2
WSAUnhookBlockingHook% = 0
__WSAFDIsSet% = 2
accept% = 3
bind% = 3
closesocket% = 1
connect% = 3
dn_expand% = 5
gethostbyaddr% = 3
gethostbyname% = 1
gethostname% = 2
getnetbyname% = 1
getpeername% = 3
getprotobyname% = 1
getprotobynumber% = 1
getservbyname% = 2
getservbyport% = 2
getsockname% = 3
getsockopt% = 5
htonl% = 1
htons% = 1
inet_addr% = 1
inet_network% = 1
inet_ntoa% = 1
ioctlsocket% = 3
listen% = 2
ntohl% = 1
ntohs% = 1
rcmd% = 6
recv% = 4
recvfrom% = 6
rexec% = 6
rresvport% = 1
s_perror% = 2
select% = 5
send% = 4
sendto% = 6
sethostname% = 2
setsockopt% = 5
shutdown% = 2
socket% = 3

View File

@@ -0,0 +1,25 @@
; Win32 programming headers (ASCII)
include 'macro/struct.inc'
include 'macro/proc32.inc'
include 'macro/com32.inc'
include 'macro/import32.inc'
include 'macro/export.inc'
include 'macro/resource.inc'
struc TCHAR [val] { common match any, val \{ . db val \}
match , val \{ . db ? \} }
sizeof.TCHAR = 1
include 'equates/kernel32.inc'
include 'equates/user32.inc'
include 'equates/gdi32.inc'
include 'equates/comctl32.inc'
include 'equates/comdlg32.inc'
include 'equates/shell32.inc'
include 'equates/wsock32.inc'
macro api [name] { if used name
label name dword at name#A
end if }

View File

@@ -0,0 +1,172 @@
; Extended Win32 programming headers (ASCII)
include 'win32a.inc'
include 'macro/if.inc'
macro allow_nesting
{ macro pushd value
\{ match ,value \\{
pushx equ \\}
match =pushx =invoke proc,pushx value \\{
allow_nesting
invoke proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =stdcall proc,pushx value \\{
allow_nesting
stdcall proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =cinvoke proc,pushx value \\{
allow_nesting
cinvoke proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =ccall proc,pushx value \\{
allow_nesting
ccall proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx,pushx \\{
pushd <value>
pushx equ \\}
restore pushx \}
macro invoke proc,[arg]
\{ \reverse pushd <arg>
\common call [proc] \}
macro stdcall proc,[arg]
\{ \reverse pushd <arg>
\common call proc \}
macro cinvoke proc,[arg]
\{ \common \local size
size = 0
if ~ arg eq
\reverse pushd <arg>
size = size+4
match =double any,arg \\{ size = size+4 \\}
\common end if
call [proc]
if size
add esp,size
end if \}
macro ccall proc,[arg]
\{ \common \local size
size = 0
if ~ arg eq
\reverse pushd <arg>
size = size+4
match =double any,arg \\{ size = size+4 \\}
\common end if
call proc
if size
add esp,size
end if \} }
macro pushd value
{ match first=,more, value \{ \local ..continue
call ..continue
db value,0
..continue:
pushd equ \}
match pushd =addr var,pushd value \{ \local ..opcode,..address
if +var relativeto 0 | +var relativeto $
push var
else
lea edx,[var]
push edx
end if
pushd equ \}
match pushd =double [var],pushd value \{
push dword [var+4]
push dword [var]
pushd equ \}
match pushd =double =ptr var,pushd value \{
push dword [var+4]
push dword [var]
pushd equ \}
match pushd =double num,pushd value \{ \local ..high,..low
virtual at 0
dq num
load ..low dword from 0
load ..high dword from 4
end virtual
push ..high
push ..low
pushd equ \}
match pushd,pushd \{ \local ..continue
if value eqtype ''
call ..continue
db value,0
..continue:
else
push value
end if
pushd equ \}
restore pushd }
allow_nesting
macro import lib,[functions]
{ common macro import_#lib \{ import lib,functions \} }
macro api [functions]
{ common macro all_api \{ all_api
api functions \} }
macro all_api {}
include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/gdi32.inc'
include 'api/advapi32.inc'
include 'api/comctl32.inc'
include 'api/comdlg32.inc'
include 'api/shell32.inc'
include 'api/wsock32.inc'
purge import,api
macro .data { section '.data' data readable writeable }
macro .code { section '.text' code readable executable }
macro .end label
{
entry label
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32,'SHELL32.DLL',\
wsock32,'WSOCK32.DLL'
import_kernel32
import_user32
import_gdi32
import_advapi32
import_comctl32
import_comdlg32
import_shell32
import_wsock32
all_api
}
virtual at 0
xchg eax,eax
detected_16bit = $-1
end virtual
if detected_16bit
format PE GUI 4.0
end if

View File

@@ -0,0 +1,199 @@
; Extended Win32 programming headers with parameters count checking (ASCII)
include 'win32a.inc'
include 'macro/if.inc'
macro allow_nesting
{ macro pushd value
\{ match ,value \\{
pushx equ \\}
match =pushx =invoke proc,pushx value \\{
allow_nesting
invoke proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =stdcall proc,pushx value \\{
allow_nesting
stdcall proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =cinvoke proc,pushx value \\{
allow_nesting
cinvoke proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =ccall proc,pushx value \\{
allow_nesting
ccall proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx,pushx \\{
pushd <value>
pushx equ \\}
restore pushx \}
macro invoke proc,[arg]
\{ \common count@stdcall = 0
if ~ arg eq
\forward count@stdcall = count@stdcall+1
match =double value, arg \\{ count@stdcall = count@stdcall+1 \\}
\common end if
if proc eqtype 0 & defined proc \# % & count@stdcall <> proc \# %
display "Error: invalid count of parameters for ",\`proc,".",0Dh,0Ah
assert 0
end if
\reverse pushd <arg>
\common call [proc] \}
macro stdcall proc,[arg]
\{ \common count@stdcall = 0
if ~ arg eq
\forward count@stdcall = count@stdcall+1
match =double value, arg \\{ count@stdcall = count@stdcall+1 \\}
\common end if
if proc eqtype 0 & defined proc \# % & count@stdcall <> proc \# %
display "Error: invalid count of parameters for ",\`proc,".",0Dh,0Ah
assert 0
end if
\reverse pushd <arg>
\common call proc \}
macro cinvoke proc,[arg]
\{ \common \local size
size = 0
if ~ arg eq
\reverse pushd <arg>
size = size+4
match =double any,arg \\{ size = size+4 \\}
\common end if
call [proc]
if size
add esp,size
end if \}
macro ccall proc,[arg]
\{ \common \local size
size = 0
if ~ arg eq
\reverse pushd <arg>
size = size+4
match =double any,arg \\{ size = size+4 \\}
\common end if
call proc
if size
add esp,size
end if \} }
macro pushd value
{ match first=,more, value \{ \local ..continue
call ..continue
db value,0
..continue:
pushd equ \}
match pushd =addr var,pushd value \{ \local ..opcode,..address
if +var relativeto 0 | +var relativeto $
push var
else
lea edx,[var]
push edx
end if
pushd equ \}
match pushd =double [var],pushd value \{
push dword [var+4]
push dword [var]
pushd equ \}
match pushd =double =ptr var,pushd value \{
push dword [var+4]
push dword [var]
pushd equ \}
match pushd =double num,pushd value \{ \local ..high,..low
virtual at 0
dq num
load ..low dword from 0
load ..high dword from 4
end virtual
push ..high
push ..low
pushd equ \}
match pushd,pushd \{ \local ..continue
if value eqtype ''
call ..continue
db value,0
..continue:
else
push value
end if
pushd equ \}
restore pushd }
allow_nesting
include 'pcount/kernel32.inc'
include 'pcount/user32.inc'
include 'pcount/gdi32.inc'
include 'pcount/advapi32.inc'
include 'pcount/comctl32.inc'
include 'pcount/comdlg32.inc'
include 'pcount/shell32.inc'
include 'pcount/wsock32.inc'
macro import lib,[functions]
{ common macro import_#lib \{ import lib,functions \} }
macro api [functions]
{ common macro all_api \{ all_api
api functions \} }
macro all_api {}
include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/gdi32.inc'
include 'api/advapi32.inc'
include 'api/comctl32.inc'
include 'api/comdlg32.inc'
include 'api/shell32.inc'
include 'api/wsock32.inc'
purge import,api
macro .data { section '.data' data readable writeable }
macro .code { section '.text' code readable executable }
macro .end label
{
entry label
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32,'SHELL32.DLL',\
wsock32,'WSOCK32.DLL'
import_kernel32
import_user32
import_gdi32
import_advapi32
import_comctl32
import_comdlg32
import_shell32
import_wsock32
all_api
}
virtual at 0
xchg eax,eax
detected_16bit = $-1
end virtual
if detected_16bit
format PE GUI 4.0
end if

View File

@@ -0,0 +1,25 @@
; Win32 programming headers (WideChar)
include 'macro/struct.inc'
include 'macro/proc32.inc'
include 'macro/com32.inc'
include 'macro/import32.inc'
include 'macro/export.inc'
include 'macro/resource.inc'
struc TCHAR [val] { common match any, val \{ . du val \}
match , val \{ . du ? \} }
sizeof.TCHAR = 2
include 'equates/kernel32.inc'
include 'equates/user32.inc'
include 'equates/gdi32.inc'
include 'equates/comctl32.inc'
include 'equates/comdlg32.inc'
include 'equates/shell32.inc'
include 'equates/wsock32.inc'
macro api [name] { if used name
label name dword at name#W
end if }

View File

@@ -0,0 +1,188 @@
; Extended Win32 programming headers (WideChar)
include 'win32w.inc'
include 'macro/if.inc'
macro allow_nesting
{ macro pushd value
\{ match ,value \\{
pushx equ \\}
match =pushx =invoke proc,pushx value \\{
allow_nesting
invoke proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =stdcall proc,pushx value \\{
allow_nesting
stdcall proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =cinvoke proc,pushx value \\{
allow_nesting
cinvoke proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =ccall proc,pushx value \\{
allow_nesting
ccall proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx,pushx \\{
pushd <value>
pushx equ \\}
restore pushx \}
macro invoke proc,[arg]
\{ \reverse pushd <arg>
\common call [proc] \}
macro stdcall proc,[arg]
\{ \reverse pushd <arg>
\common call proc \}
macro cinvoke proc,[arg]
\{ \common \local size
size = 0
if ~ arg eq
\reverse pushd <arg>
size = size+4
match =double any,arg \\{ size = size+4 \\}
\common end if
call [proc]
if size
add esp,size
end if \}
macro ccall proc,[arg]
\{ \common \local size
size = 0
if ~ arg eq
\reverse pushd <arg>
size = size+4
match =double any,arg \\{ size = size+4 \\}
\common end if
call proc
if size
add esp,size
end if \} }
macro pushd value
{ match first=,more, value \{ \local ..alignment,..continue
if sizeof.TCHAR > 1
local ..alignment
virtual at $+5
align sizeof.TCHAR
..alignment = $-$$
end virtual
times ..alignment nop
end if
call ..continue
du value,0
..continue:
pushd equ \}
match pushd =addr var,pushd value \{ \local ..opcode,..address
if +var relativeto 0 | +var relativeto $
push var
else
lea edx,[var]
push edx
end if
pushd equ \}
match pushd =double [var],pushd value \{
push dword [var+4]
push dword [var]
pushd equ \}
match pushd =double =ptr var,pushd value \{
push dword [var+4]
push dword [var]
pushd equ \}
match pushd =double num,pushd value \{ \local ..high,..low
virtual at 0
dq num
load ..low dword from 0
load ..high dword from 4
end virtual
push ..high
push ..low
pushd equ \}
match pushd,pushd \{ \local ..continue
if value eqtype ''
if sizeof.TCHAR > 1
local ..alignment
virtual at $+5
align sizeof.TCHAR
..alignment = $-$$
end virtual
times ..alignment nop
end if
call ..continue
du value,0
..continue:
else
push value
end if
pushd equ \}
restore pushd }
allow_nesting
macro import lib,[functions]
{ common macro import_#lib \{ import lib,functions \} }
macro api [functions]
{ common macro all_api \{ all_api
api functions \} }
macro all_api {}
include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/gdi32.inc'
include 'api/advapi32.inc'
include 'api/comctl32.inc'
include 'api/comdlg32.inc'
include 'api/shell32.inc'
include 'api/wsock32.inc'
purge import,api
macro .data { section '.data' data readable writeable }
macro .code { section '.text' code readable executable }
macro .end label
{
entry label
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32,'SHELL32.DLL',\
wsock32,'WSOCK32.DLL'
import_kernel32
import_user32
import_gdi32
import_advapi32
import_comctl32
import_comdlg32
import_shell32
import_wsock32
all_api
}
virtual at 0
xchg eax,eax
detected_16bit = $-1
end virtual
if detected_16bit
format PE GUI 4.0
end if

View File

@@ -0,0 +1,201 @@
; Extended Win32 programming headers with parameters count checking (WideChar)
include 'win32w.inc'
include 'macro/if.inc'
macro allow_nesting
{ macro pushd value
\{ match ,value \\{
pushx equ \\}
match =pushx =invoke proc,pushx value \\{
allow_nesting
invoke proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =stdcall proc,pushx value \\{
allow_nesting
stdcall proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =cinvoke proc,pushx value \\{
allow_nesting
cinvoke proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx =ccall proc,pushx value \\{
allow_nesting
ccall proc
purge pushd,invoke,stdcall,cinvoke,ccall
push eax
pushx equ \\}
match =pushx,pushx \\{
pushd <value>
pushx equ \\}
restore pushx \}
macro invoke proc,[arg]
\{ \common count@stdcall = 0
if ~ arg eq
\forward count@stdcall = count@stdcall+1
match =double value, arg \\{ count@stdcall = count@stdcall+1 \\}
\common end if
if proc eqtype 0 & defined proc \# % & count@stdcall <> proc \# %
display "Error: invalid count of parameters for ",\`proc,".",0Dh,0Ah
assert 0
end if
\reverse pushd <arg>
\common call [proc] \}
macro stdcall proc,[arg]
\{ \common count@stdcall = 0
if ~ arg eq
\forward count@stdcall = count@stdcall+1
match =double value, arg \\{ count@stdcall = count@stdcall+1 \\}
\common end if
if proc eqtype 0 & defined proc \# % & count@stdcall <> proc \# %
display "Error: invalid count of parameters for ",\`proc,".",0Dh,0Ah
assert 0
end if
\reverse pushd <arg>
\common call proc \}
macro cinvoke proc,[arg]
\{ \common \local size
size = 0
if ~ arg eq
\reverse pushd <arg>
size = size+4
match =double any,arg \\{ size = size+4 \\}
\common end if
call [proc]
if size
add esp,size
end if \}
macro ccall proc,[arg]
\{ \common \local size
size = 0
if ~ arg eq
\reverse pushd <arg>
size = size+4
match =double any,arg \\{ size = size+4 \\}
\common end if
call proc
if size
add esp,size
end if \} }
macro pushd value
{ match first=,more, value \{ \local ..continue
times 1 - (rva $ and 1) nop
call ..continue
du value,0
..continue:
pushd equ \}
match pushd =addr var,pushd value \{ \local ..opcode,..address
if +var relativeto 0 | +var relativeto $
push var
else
lea edx,[var]
push edx
end if
pushd equ \}
match pushd =double [var],pushd value \{
push dword [var+4]
push dword [var]
pushd equ \}
match pushd =double =ptr var,pushd value \{
push dword [var+4]
push dword [var]
pushd equ \}
match pushd =double num,pushd value \{ \local ..high,..low
virtual at 0
dq num
load ..low dword from 0
load ..high dword from 4
end virtual
push ..high
push ..low
pushd equ \}
match pushd,pushd \{ \local ..continue
if value eqtype ''
times 1 - (rva $ and 1) nop
call ..continue
du value,0
..continue:
else
push value
end if
pushd equ \}
restore pushd }
allow_nesting
include 'pcount/kernel32.inc'
include 'pcount/user32.inc'
include 'pcount/gdi32.inc'
include 'pcount/advapi32.inc'
include 'pcount/comctl32.inc'
include 'pcount/comdlg32.inc'
include 'pcount/shell32.inc'
include 'pcount/wsock32.inc'
macro import lib,[functions]
{ common macro import_#lib \{ import lib,functions \} }
macro api [functions]
{ common macro all_api \{ all_api
api functions \} }
macro all_api {}
include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/gdi32.inc'
include 'api/advapi32.inc'
include 'api/comctl32.inc'
include 'api/comdlg32.inc'
include 'api/shell32.inc'
include 'api/wsock32.inc'
purge import,api
macro .data { section '.data' data readable writeable }
macro .code { section '.text' code readable executable }
macro .end label
{
entry label
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32,'SHELL32.DLL',\
wsock32,'WSOCK32.DLL'
import_kernel32
import_user32
import_gdi32
import_advapi32
import_comctl32
import_comdlg32
import_shell32
import_wsock32
all_api
}
virtual at 0
xchg eax,eax
detected_16bit = $-1
end virtual
if detected_16bit
format PE GUI 4.0
end if

View File

@@ -0,0 +1,25 @@
; Win64 programming headers (ASCII)
include 'macro/struct.inc'
include 'macro/proc64.inc'
include 'macro/com64.inc'
include 'macro/import64.inc'
include 'macro/export.inc'
include 'macro/resource.inc'
struc TCHAR [val] { common match any, val \{ . db val \}
match , val \{ . db ? \} }
sizeof.TCHAR = 1
include 'equates/kernel64.inc'
include 'equates/user64.inc'
include 'equates/gdi64.inc'
include 'equates/comctl64.inc'
include 'equates/comdlg64.inc'
include 'equates/shell64.inc'
macro api [name] { if used name
label name qword at name#A
end if }

View File

@@ -0,0 +1,205 @@
; Extended Win64 programming headers (ASCII)
include 'win64a.inc'
include 'macro/if.inc'
macro allow_nesting
{ macro invoke proc,[arg]
\{ \common fastcall [proc],arg \}
macro fastcall proc,[arg]
\{ \common \local list,counter,flags,outer_frame,nested_frame,..close_nest
match =current@frame,current@frame \\{
frame
define outer_frame \\}
define counter
define list
flags = 0
\forward \local param,nested,isfloat,..next
match any,counter \\{ list equ list, \\}
counter equ counter+1
define param arg
define nested
isfloat = 0
match =invoke statement,param \\{
nested equ param
define param \\}
match =fastcall statement,param \\{
nested equ param
define param \\}
match =float =invoke statement,param \\{
define nested invoke statement
define param
isfloat = 1 \\}
match =float =fastcall statement,param \\{
define nested fastcall statement
define param
isfloat = 1 \\}
match statement,nested \\{
match =nested_frame,nested_frame \\\{
frame
define nested_frame \\\}
allow_nesting
statement
purge invoke_fastcall
if counter > 4
if isfloat
movq [rsp+size@frame+(counter-1)*8],xmm0
else
mov [rsp+size@frame+(counter-1)*8],rax
end if
else
flags = flags or 1 shl (counter-1)
if isfloat
flags = flags or 1 shl (4+counter-1)
end if
if ..close_nest > ..next
if float
movq [rsp+size@frame+(counter-1)*8],xmm0
else
mov [rsp+size@frame+(counter-1)*8],rax
end if
else
flags = flags or 1 shl (8+counter-1)
end if
end if
..next: \\}
list equ list <param>
\common ..close_nest:
match ,nested_frame \\{ endf \\}
if flags and 1
if flags and 1 shl 4
if ~ flags and 1 shl 8
movq xmm0,[rsp]
end if
else
if flags and 1 shl 8
mov rcx,rax
else
mov rcx,[rsp]
end if
end if
end if
if flags and 1 shl 1
if flags and 1 shl (4+1)
if flags and 1 shl (8+1)
movq xmm1,xmm0
else
movq xmm1,[rsp+8]
end if
else
if flags and 1 shl (8+1)
mov rdx,rax
else
mov rdx,[rsp+8]
end if
end if
end if
if flags and 1 shl 2
if flags and 1 shl (4+2)
if flags and 1 shl (8+2)
movq xmm2,xmm0
else
movq xmm2,[rsp+2*8]
end if
else
if flags and 1 shl (8+2)
mov r8,rax
else
mov r8,[rsp+2*8]
end if
end if
end if
if flags and 1 shl 3
if flags and 1 shl (4+3)
if flags and 1 shl (8+3)
movq xmm3,xmm0
else
movq xmm3,[rsp+3*8]
end if
else
if flags and 1 shl (8+3)
mov r9,rax
else
mov r9,[rsp+3*8]
end if
end if
end if
match args,list \\{ fastcall proc,args \\}
match ,list \\{ fastcall proc \\}
match ,outer_frame \\{ endf \\} \} }
allow_nesting
macro import lib,[functions]
{ common macro import_#lib \{ import lib,functions \} }
macro api [functions]
{ common macro all_api \{ all_api
api functions \} }
macro all_api {}
include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/gdi32.inc'
include 'api/advapi32.inc'
include 'api/comctl32.inc'
include 'api/comdlg32.inc'
include 'api/shell32.inc'
include 'api/wsock32.inc'
purge import,api
macro .data { section '.data' data readable writeable }
macro .code {
section '.text' code readable executable
entry $
sub rsp,8
local main,code
entry equ main
if main <> code
jmp main
end if
code: }
macro .end value
{
label entry at value
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32,'SHELL32.DLL',\
wsock32,'WSOCK32.DLL'
import_kernel32
import_user32
import_gdi32
import_advapi32
import_comctl32
import_comdlg32
import_shell32
import_wsock32
all_api
}
virtual at 0
inc ax
if $=1
detected_16bit = 1
else
detected_16bit = 0
end if
end virtual
if detected_16bit
format PE64 GUI 5.0
end if

View File

@@ -0,0 +1,221 @@
; Extended Win64 programming headers with parameters count checking (ASCII)
include 'win64a.inc'
include 'macro/if.inc'
macro allow_nesting
{ macro invoke proc,[arg]
\{ \common fastcall [proc],arg \}
macro fastcall proc,[arg]
\{ \common \local list,counter,flags,outer_frame,nested_frame,..close_nest
match =current@frame,current@frame \\{
frame
define outer_frame \\}
define counter
define list
flags = 0
\forward \local param,nested,isfloat,..next
match any,counter \\{ list equ list, \\}
counter equ counter+1
define param arg
define nested
isfloat = 0
match =invoke statement,param \\{
nested equ param
define param \\}
match =fastcall statement,param \\{
nested equ param
define param \\}
match =float =invoke statement,param \\{
define nested invoke statement
define param
isfloat = 1 \\}
match =float =fastcall statement,param \\{
define nested fastcall statement
define param
isfloat = 1 \\}
match statement,nested \\{
match =nested_frame,nested_frame \\\{
frame
define nested_frame \\\}
allow_nesting
statement
purge invoke_fastcall
if counter > 4
if isfloat
movq [rsp+size@frame+(counter-1)*8],xmm0
else
mov [rsp+size@frame+(counter-1)*8],rax
end if
else
flags = flags or 1 shl (counter-1)
if isfloat
flags = flags or 1 shl (4+counter-1)
end if
if ..close_nest > ..next
if float
movq [rsp+size@frame+(counter-1)*8],xmm0
else
mov [rsp+size@frame+(counter-1)*8],rax
end if
else
flags = flags or 1 shl (8+counter-1)
end if
end if
..next: \\}
match any,param \\{ list equ list <param> \\}
\common ..close_nest:
match ,nested_frame \\{ endf \\}
if flags and 1
if flags and 1 shl 4
if ~ flags and 1 shl 8
movq xmm0,[rsp]
end if
else
if flags and 1 shl 8
mov rcx,rax
else
mov rcx,[rsp]
end if
end if
end if
if flags and 1 shl 1
if flags and 1 shl (4+1)
if flags and 1 shl (8+1)
movq xmm1,xmm0
else
movq xmm1,[rsp+8]
end if
else
if flags and 1 shl (8+1)
mov rdx,rax
else
mov rdx,[rsp+8]
end if
end if
end if
if flags and 1 shl 2
if flags and 1 shl (4+2)
if flags and 1 shl (8+2)
movq xmm2,xmm0
else
movq xmm2,[rsp+2*8]
end if
else
if flags and 1 shl (8+2)
mov r8,rax
else
mov r8,[rsp+2*8]
end if
end if
end if
if flags and 1 shl 3
if flags and 1 shl (4+3)
if flags and 1 shl (8+3)
movq xmm3,xmm0
else
movq xmm3,[rsp+3*8]
end if
else
if flags and 1 shl (8+3)
mov r9,rax
else
mov r9,[rsp+3*8]
end if
end if
end if
match args,list \\{ fastcall proc,args \\}
match ,list \\{ fastcall proc
define counter 0 \\}
match ,outer_frame \\{ endf \\}
proc@paramcheck equ proc
match [name],proc \\{ define proc@paramcheck name \\}
match name,proc@paramcheck \\{ if name eqtype 0 & defined name \\# % & counter <> name \\# %
display "Error: invalid count of parameters for ",\\`name,".",0Dh,0Ah
assert 0
end if \\} \} }
allow_nesting
include 'pcount/kernel32.inc'
include 'pcount/user32.inc'
include 'pcount/gdi32.inc'
include 'pcount/advapi32.inc'
include 'pcount/comctl32.inc'
include 'pcount/comdlg32.inc'
include 'pcount/shell32.inc'
include 'pcount/wsock32.inc'
macro import lib,[functions]
{ common macro import_#lib \{ import lib,functions \} }
macro api [functions]
{ common macro all_api \{ all_api
api functions \} }
macro all_api {}
include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/gdi32.inc'
include 'api/advapi32.inc'
include 'api/comctl32.inc'
include 'api/comdlg32.inc'
include 'api/shell32.inc'
include 'api/wsock32.inc'
purge import,api
macro .data { section '.data' data readable writeable }
macro .code {
section '.text' code readable executable
entry $
sub rsp,8
local main,code
entry equ main
if main <> code
jmp main
end if
code: }
macro .end value
{
label entry at value
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32,'SHELL32.DLL',\
wsock32,'WSOCK32.DLL'
import_kernel32
import_user32
import_gdi32
import_advapi32
import_comctl32
import_comdlg32
import_shell32
import_wsock32
all_api
}
virtual at 0
inc ax
if $=1
detected_16bit = 1
else
detected_16bit = 0
end if
end virtual
if detected_16bit
format PE64 GUI 5.0
end if

View File

@@ -0,0 +1,24 @@
; Win64 programming headers (WideChar)
include 'macro/struct.inc'
include 'macro/proc64.inc'
include 'macro/com64.inc'
include 'macro/import64.inc'
include 'macro/export.inc'
include 'macro/resource.inc'
struc TCHAR [val] { common match any, val \{ . du val \}
match , val \{ . du ? \} }
sizeof.TCHAR = 2
include 'equates/kernel64.inc'
include 'equates/user64.inc'
include 'equates/gdi64.inc'
include 'equates/comctl64.inc'
include 'equates/comdlg64.inc'
include 'equates/shell64.inc'
macro api [name] { if used name
label name qword at name#W
end if }

View File

@@ -0,0 +1,204 @@
; Extended Win64 programming headers (WideChar)
include 'win64w.inc'
include 'macro/if.inc'
macro allow_nesting
{ macro invoke proc,[arg]
\{ \common fastcall [proc],arg \}
macro fastcall proc,[arg]
\{ \common \local list,counter,flags,outer_frame,nested_frame,..close_nest
match =current@frame,current@frame \\{
frame
define outer_frame \\}
define counter
define list
flags = 0
\forward \local param,nested,isfloat,..next
match any,counter \\{ list equ list, \\}
counter equ counter+1
define param arg
define nested
isfloat = 0
match =invoke statement,param \\{
nested equ param
define param \\}
match =fastcall statement,param \\{
nested equ param
define param \\}
match =float =invoke statement,param \\{
define nested invoke statement
define param
isfloat = 1 \\}
match =float =fastcall statement,param \\{
define nested fastcall statement
define param
isfloat = 1 \\}
match statement,nested \\{
match =nested_frame,nested_frame \\\{
frame
define nested_frame \\\}
allow_nesting
statement
purge invoke_fastcall
if counter > 4
if isfloat
movq [rsp+size@frame+(counter-1)*8],xmm0
else
mov [rsp+size@frame+(counter-1)*8],rax
end if
else
flags = flags or 1 shl (counter-1)
if isfloat
flags = flags or 1 shl (4+counter-1)
end if
if ..close_nest > ..next
if float
movq [rsp+size@frame+(counter-1)*8],xmm0
else
mov [rsp+size@frame+(counter-1)*8],rax
end if
else
flags = flags or 1 shl (8+counter-1)
end if
end if
..next: \\}
list equ list <param>
\common ..close_nest:
match ,nested_frame \\{ endf \\}
if flags and 1
if flags and 1 shl 4
if ~ flags and 1 shl 8
movq xmm0,[rsp]
end if
else
if flags and 1 shl 8
mov rcx,rax
else
mov rcx,[rsp]
end if
end if
end if
if flags and 1 shl 1
if flags and 1 shl (4+1)
if flags and 1 shl (8+1)
movq xmm1,xmm0
else
movq xmm1,[rsp+8]
end if
else
if flags and 1 shl (8+1)
mov rdx,rax
else
mov rdx,[rsp+8]
end if
end if
end if
if flags and 1 shl 2
if flags and 1 shl (4+2)
if flags and 1 shl (8+2)
movq xmm2,xmm0
else
movq xmm2,[rsp+2*8]
end if
else
if flags and 1 shl (8+2)
mov r8,rax
else
mov r8,[rsp+2*8]
end if
end if
end if
if flags and 1 shl 3
if flags and 1 shl (4+3)
if flags and 1 shl (8+3)
movq xmm3,xmm0
else
movq xmm3,[rsp+3*8]
end if
else
if flags and 1 shl (8+3)
mov r9,rax
else
mov r9,[rsp+3*8]
end if
end if
end if
match args,list \\{ fastcall proc,args \\}
match ,list \\{ fastcall proc \\}
match ,outer_frame \\{ endf \\} \} }
allow_nesting
macro import lib,[functions]
{ common macro import_#lib \{ import lib,functions \} }
macro api [functions]
{ common macro all_api \{ all_api
api functions \} }
macro all_api {}
include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/gdi32.inc'
include 'api/advapi32.inc'
include 'api/comctl32.inc'
include 'api/comdlg32.inc'
include 'api/shell32.inc'
include 'api/wsock32.inc'
purge import,api
macro .data { section '.data' data readable writeable }
macro .code {
section '.text' code readable executable
entry $
sub rsp,8
local main,code
entry equ main
if main <> code
jmp main
end if
code: }
macro .end value
{
label entry at value
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32,'SHELL32.DLL',\
wsock32,'WSOCK32.DLL'
import_kernel32
import_user32
import_gdi32
import_advapi32
import_comctl32
import_comdlg32
import_shell32
import_wsock32
all_api
}
virtual at 0
inc ax
if $=1
detected_16bit = 1
else
detected_16bit = 0
end if
end virtual
if detected_16bit
format PE64 GUI 5.0
end if

View File

@@ -0,0 +1,221 @@
; Extended Win64 programming headers with parameters count checking (WideChar)
include 'win64w.inc'
include 'macro/if.inc'
macro allow_nesting
{ macro invoke proc,[arg]
\{ \common fastcall [proc],arg \}
macro fastcall proc,[arg]
\{ \common \local list,counter,flags,outer_frame,nested_frame,..close_nest
match =current@frame,current@frame \\{
frame
define outer_frame \\}
define counter
define list
flags = 0
\forward \local param,nested,isfloat,..next
match any,counter \\{ list equ list, \\}
counter equ counter+1
define param arg
define nested
isfloat = 0
match =invoke statement,param \\{
nested equ param
define param \\}
match =fastcall statement,param \\{
nested equ param
define param \\}
match =float =invoke statement,param \\{
define nested invoke statement
define param
isfloat = 1 \\}
match =float =fastcall statement,param \\{
define nested fastcall statement
define param
isfloat = 1 \\}
match statement,nested \\{
match =nested_frame,nested_frame \\\{
frame
define nested_frame \\\}
allow_nesting
statement
purge invoke_fastcall
if counter > 4
if isfloat
movq [rsp+size@frame+(counter-1)*8],xmm0
else
mov [rsp+size@frame+(counter-1)*8],rax
end if
else
flags = flags or 1 shl (counter-1)
if isfloat
flags = flags or 1 shl (4+counter-1)
end if
if ..close_nest > ..next
if float
movq [rsp+size@frame+(counter-1)*8],xmm0
else
mov [rsp+size@frame+(counter-1)*8],rax
end if
else
flags = flags or 1 shl (8+counter-1)
end if
end if
..next: \\}
match any,param \\{ list equ list <param> \\}
\common ..close_nest:
match ,nested_frame \\{ endf \\}
if flags and 1
if flags and 1 shl 4
if ~ flags and 1 shl 8
movq xmm0,[rsp]
end if
else
if flags and 1 shl 8
mov rcx,rax
else
mov rcx,[rsp]
end if
end if
end if
if flags and 1 shl 1
if flags and 1 shl (4+1)
if flags and 1 shl (8+1)
movq xmm1,xmm0
else
movq xmm1,[rsp+8]
end if
else
if flags and 1 shl (8+1)
mov rdx,rax
else
mov rdx,[rsp+8]
end if
end if
end if
if flags and 1 shl 2
if flags and 1 shl (4+2)
if flags and 1 shl (8+2)
movq xmm2,xmm0
else
movq xmm2,[rsp+2*8]
end if
else
if flags and 1 shl (8+2)
mov r8,rax
else
mov r8,[rsp+2*8]
end if
end if
end if
if flags and 1 shl 3
if flags and 1 shl (4+3)
if flags and 1 shl (8+3)
movq xmm3,xmm0
else
movq xmm3,[rsp+3*8]
end if
else
if flags and 1 shl (8+3)
mov r9,rax
else
mov r9,[rsp+3*8]
end if
end if
end if
match args,list \\{ fastcall proc,args \\}
match ,list \\{ fastcall proc
define counter 0 \\}
match ,outer_frame \\{ endf \\}
proc@paramcheck equ proc
match [name],proc \\{ define proc@paramcheck name \\}
match name,proc@paramcheck \\{ if name eqtype 0 & defined name \\# % & counter <> name \\# %
display "Error: invalid count of parameters for ",\\`name,".",0Dh,0Ah
assert 0
end if \\} \} }
allow_nesting
include 'pcount/kernel32.inc'
include 'pcount/user32.inc'
include 'pcount/gdi32.inc'
include 'pcount/advapi32.inc'
include 'pcount/comctl32.inc'
include 'pcount/comdlg32.inc'
include 'pcount/shell32.inc'
include 'pcount/wsock32.inc'
macro import lib,[functions]
{ common macro import_#lib \{ import lib,functions \} }
macro api [functions]
{ common macro all_api \{ all_api
api functions \} }
macro all_api {}
include 'api/kernel32.inc'
include 'api/user32.inc'
include 'api/gdi32.inc'
include 'api/advapi32.inc'
include 'api/comctl32.inc'
include 'api/comdlg32.inc'
include 'api/shell32.inc'
include 'api/wsock32.inc'
purge import,api
macro .data { section '.data' data readable writeable }
macro .code {
section '.text' code readable executable
entry $
sub rsp,8
local main,code
entry equ main
if main <> code
jmp main
end if
code: }
macro .end value
{
label entry at value
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL',\
gdi32,'GDI32.DLL',\
advapi32,'ADVAPI32.DLL',\
comctl32,'COMCTL32.DLL',\
comdlg32,'COMDLG32.DLL',\
shell32,'SHELL32.DLL',\
wsock32,'WSOCK32.DLL'
import_kernel32
import_user32
import_gdi32
import_advapi32
import_comctl32
import_comdlg32
import_shell32
import_wsock32
all_api
}
virtual at 0
inc ax
if $=1
detected_16bit = 1
else
detected_16bit = 0
end if
end virtual
if detected_16bit
format PE64 GUI 5.0
end if

View File

@@ -0,0 +1,37 @@
flat assembler version 1.73
Copyright (c) 1999-2024, Tomasz Grysztar.
All rights reserved.
This program is free for commercial and non-commercial use as long as
the following conditions are adhered to.
Copyright remains Tomasz Grysztar, and as such any Copyright notices
in the code are not to be removed.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The licence and distribution terms for any publically available
version or derivative of this code cannot be changed. i.e. this code
cannot simply be copied and put under another distribution licence
(including the GNU Public Licence).

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,108 @@
; flat assembler interface for DOS
; Copyright (c) 1999-2022, Tomasz Grysztar.
; All rights reserved.
init_dpmi_memory:
mov ax,500h ; get free memory information
mov edi,[buffer_address]
int 31h
mov ebx,[edi]
allocate_dpmi_memory:
mov edx,[memory_setting]
shl edx,10
jz dpmi_memory_size_ok
cmp ebx,edx
jbe dpmi_memory_size_ok
mov ebx,edx
dpmi_memory_size_ok:
mov [memory_end],ebx
mov ecx,ebx
shr ebx,16
mov ax,501h
int 31h
jnc dpmi_memory_ok
mov ebx,[memory_end]
shr ebx,1
cmp ebx,4000h
jb out_of_memory
jmp allocate_dpmi_memory
dpmi_memory_ok:
shl ebx,16
mov bx,cx
sub ebx,[program_base]
jc out_of_memory
mov [memory_start],ebx
add [memory_end],ebx
mov ax,100h ; get free conventional memory size
mov bx,-1
int 31h
movzx ecx,bx
shl ecx,4
jecxz no_conventional_memory
mov ax,100h ; allocate all conventional memory
int 31h
movzx edi,ax
shl edi,4
sub edi,[program_base]
jc no_conventional_memory
mov [additional_memory],edi
mov [additional_memory_end],edi
add [additional_memory_end],ecx
mov eax,[memory_end]
sub eax,[memory_start]
shr eax,2
cmp eax,ecx
ja no_conventional_memory
ret
no_conventional_memory:
mov eax,[memory_end]
mov ebx,[memory_start]
sub eax,ebx
shr eax,2
mov [additional_memory],ebx
add ebx,eax
mov [additional_memory_end],ebx
mov [memory_start],ebx
ret
dpmi_dos_int:
mov [real_mode_segment],main
simulate_real_mode:
push 0 ; SS:SP (DPMI will allocate stack)
push 0 ; CS:IP (ignored)
push 0
push [real_mode_segment] ; DS
push [real_mode_segment] ; ES
stc
pushfw
push eax
push ecx
push edx
push ebx
push 0
push ebp
push esi
push edi
mov ax,300h
mov bx,21h
xor cx,cx
mov edi,esp
push es ss
pop es
int 31h
pop es
mov edi,[esp]
mov esi,[esp+4]
mov ebp,[esp+8]
mov ebx,[esp+10h]
mov edx,[esp+14h]
mov ecx,[esp+18h]
mov ah,[esp+20h]
sahf
mov eax,[esp+1Ch]
lea esp,[esp+32h]
ret
dpmi_dos_int_with_buffer:
mov [real_mode_segment],buffer
jmp simulate_real_mode

View File

@@ -0,0 +1,435 @@
; flat assembler interface for DOS
; Copyright (c) 1999-2022, Tomasz Grysztar.
; All rights reserved.
format MZ
heap 0
stack 8000h
entry main:start
include 'modes.inc'
segment main use16
start:
mov ax,ds
mov dx,[2Ch]
push cs cs
pop ds es
mov [psp_segment],ax
mov [environment_segment],dx
mov dx,_logo
mov ah,9
int 21h
cld
call go32
use32
call get_params
jc information
call init_memory
mov esi,_memory_prefix
call display_string
mov eax,[memory_end]
sub eax,[memory_start]
add eax,[additional_memory_end]
sub eax,[additional_memory]
shr eax,10
call display_number
mov esi,_memory_suffix
call display_string
xor ah,ah
int 1Ah
mov ax,cx
shl eax,16
mov ax,dx
mov [start_time],eax
cmp [mode],dpmi
je compile
jmp main+(first_segment shr 4):first_gate-first_segment
compile:
and [preprocessing_done],0
call preprocessor
or [preprocessing_done],-1
call parser
call assembler
call formatter
finish:
call display_user_messages
movzx eax,[current_pass]
inc eax
call display_number
mov esi,_passes_suffix
call display_string
xor ah,ah
int 1Ah
mov ax,cx
shl eax,16
mov ax,dx
sub eax,[start_time]
mov ebx,100
mul ebx
mov ebx,182
div ebx
or eax,eax
jz display_bytes_count
xor edx,edx
mov ebx,10
div ebx
push edx
call display_number
mov ah,2
mov dl,'.'
int 21h
pop eax
call display_number
mov esi,_seconds_suffix
call display_string
display_bytes_count:
mov eax,[written_size]
call display_number
mov esi,_bytes_suffix
call display_string
xor al,al
jmp exit_program
information:
mov esi,_usage
call display_string
mov al,1
jmp exit_program
get_params:
mov [input_file],0
mov [output_file],0
mov [symbols_file],0
mov [memory_setting],0
mov [passes_limit],100
mov [definitions_pointer],predefinitions
push ds
mov ds,[psp_segment]
mov esi,81h
mov edi,params
find_param:
lodsb
cmp al,20h
je find_param
cmp al,'-'
je option_param
cmp al,0Dh
je all_params
or al,al
jz all_params
cmp [es:input_file],0
jne get_output_file
mov [es:input_file],edi
jmp process_param
get_output_file:
cmp [es:output_file],0
jne bad_params
mov [es:output_file],edi
process_param:
cmp al,22h
je string_param
copy_param:
stosb
lodsb
cmp al,20h
je param_end
cmp al,0Dh
je param_end
or al,al
jz param_end
jmp copy_param
string_param:
lodsb
cmp al,22h
je string_param_end
cmp al,0Dh
je param_end
or al,al
jz param_end
stosb
jmp string_param
option_param:
lodsb
cmp al,'m'
je memory_option
cmp al,'M'
je memory_option
cmp al,'p'
je passes_option
cmp al,'P'
je passes_option
cmp al,'d'
je definition_option
cmp al,'D'
je definition_option
cmp al,'s'
je symbols_option
cmp al,'S'
je symbols_option
invalid_option:
pop ds
stc
ret
get_option_value:
xor eax,eax
mov edx,eax
get_option_digit:
lodsb
cmp al,20h
je option_value_ok
cmp al,0Dh
je option_value_ok
or al,al
jz option_value_ok
sub al,30h
jc bad_params_value
cmp al,9
ja bad_params_value
imul edx,10
jo bad_params_value
add edx,eax
jc bad_params_value
jmp get_option_digit
option_value_ok:
dec esi
clc
ret
bad_params_value:
stc
ret
memory_option:
lodsb
cmp al,20h
je memory_option
cmp al,0Dh
je invalid_option
or al,al
jz invalid_option
dec esi
call get_option_value
jc invalid_option
or edx,edx
jz invalid_option
cmp edx,1 shl (32-10)
jae invalid_option
mov [es:memory_setting],edx
jmp find_param
passes_option:
lodsb
cmp al,20h
je passes_option
cmp al,0Dh
je invalid_option
or al,al
jz invalid_option
dec esi
call get_option_value
jc bad_params
or edx,edx
jz invalid_option
cmp edx,10000h
ja invalid_option
mov [es:passes_limit],dx
jmp find_param
definition_option:
lodsb
cmp al,20h
je definition_option
cmp al,0Dh
je bad_params
or al,al
jz bad_params
dec esi
push edi
mov edi,[es:definitions_pointer]
call convert_definition_option
mov [es:definitions_pointer],edi
pop edi
jc invalid_option
jmp find_param
symbols_option:
mov [es:symbols_file],edi
find_symbols_file_name:
lodsb
cmp al,20h
jne process_param
jmp find_symbols_file_name
param_end:
dec esi
string_param_end:
xor al,al
stosb
jmp find_param
all_params:
xor al,al
stosb
pop ds
cmp [input_file],0
je no_input_file
mov eax,[definitions_pointer]
mov byte [eax],0
mov [initial_definitions],predefinitions
clc
ret
bad_params:
pop ds
no_input_file:
stc
ret
convert_definition_option:
mov ecx,edi
xor al,al
stosb
copy_definition_name:
lodsb
cmp al,'='
je copy_definition_value
cmp al,20h
je bad_definition_option
cmp al,0Dh
je bad_definition_option
or al,al
jz bad_definition_option
stosb
inc byte [es:ecx]
jnz copy_definition_name
bad_definition_option:
stc
ret
copy_definition_value:
lodsb
cmp al,20h
je definition_value_end
cmp al,0Dh
je definition_value_end
or al,al
jz definition_value_end
cmp al,'\'
jne definition_value_character
cmp byte [esi],20h
jne definition_value_character
lodsb
definition_value_character:
stosb
jmp copy_definition_value
definition_value_end:
dec esi
xor al,al
stosb
clc
ret
include '..\version.inc'
_logo db 'flat assembler version ',VERSION_STRING,24h
_copyright db 'Copyright (c) 1999-2022, Tomasz Grysztar',0Dh,0Ah,0
_usage db 0Dh,0Ah
db 'usage: fasm <source> [output]',0Dh,0Ah
db 'optional settings:',0Dh,0Ah
db ' -m <limit> set the limit in kilobytes for the available memory',0Dh,0Ah
db ' -p <limit> set the maximum allowed number of passes',0Dh,0Ah
db ' -d <name>=<value> define symbolic variable',0Dh,0Ah
db ' -s <file> dump symbolic information for debugging',0Dh,0Ah
db 0
_memory_prefix db ' (',0
_memory_suffix db ' kilobytes memory)',0Dh,0Ah,0
_passes_suffix db ' passes, ',0
_seconds_suffix db ' seconds, ',0
_bytes_suffix db ' bytes.',0Dh,0Ah,0
error_prefix db 'error: ',0
error_suffix db '.'
cr_lf db 0Dh,0Ah,0
line_number_start db ' [',0
line_data_start db ':',0Dh,0Ah,0
preprocessed_instruction_prefix db 'processed: ',0
include 'dpmi.inc'
align 16
first_segment:
include '..\preproce.inc'
include '..\parser.inc'
include '..\exprpars.inc'
align 16
second_segment:
include '..\exprcalc.inc'
include '..\errors.inc'
include '..\symbdump.inc'
include 'system.inc'
first_gate:
and [preprocessing_done],0
call preprocessor
or [preprocessing_done],-1
call parser
jmp main+(second_segment shr 4):second_gate-second_segment
first_segment_top = $ - first_segment
include '..\assemble.inc'
include '..\formats.inc'
include '..\x86_64.inc'
include '..\avx.inc'
second_gate:
call assembler
call formatter
jmp main:finish
second_segment_top = $ - second_segment
if first_segment_top>=10000h | second_segment_top>=10000h
if UNREAL_ENABLED>0
UNREAL_ENABLED = -1
else
UNREAL_ENABLED = 0
end if
else
if UNREAL_ENABLED<0
UNREAL_ENABLED = -1
else
UNREAL_ENABLED = 1
end if
end if
include '..\tables.inc'
include '..\messages.inc'
align 4
include '..\variable.inc'
memory_setting dd ?
start_time dd ?
definitions_pointer dd ?
params rb 100h
predefinitions rb 100h
mode dw ?
real_mode_segment dw ?
displayed_count dd ?
last_displayed rb 2
preprocessing_done db ?
segment buffer
rb 1000h

View File

@@ -0,0 +1,539 @@
; flat assembler interface for DOS
; Copyright (c) 1999-2022, Tomasz Grysztar.
; All rights reserved.
segment modes use16
real32:
mov ax,7202h
push ax
popf
pushf
pop bx
cmp ax,bx
je processor_ok
call init_error
db 'required 80386 or better',24h
processor_ok:
mov eax,ds
shl eax,4
mov [program_base],eax
mov eax,buffer
shl eax,4
sub eax,[program_base]
mov [buffer_address],eax
if UNREAL_ENABLED>0
smsw ax
test al,1
jnz dpmi
mov eax,cs ; calculate linear address of GDT
shl eax,4
or dword [cs:real32_GDT+10],eax
or dword [cs:real16_GDT+10],eax
add [cs:real32_GDT_address],eax
add [cs:real16_GDT_address],eax
cli
lgdt [cs:real32_GDTR]
mov eax,cr0
or al,1
mov cr0,eax
jmp 1 shl 3:test_pm32
no_rm32:
sti
jmp dpmi
test_pm32:
use32
mov eax,cr0
and al,not 1
mov cr0,eax
mov ebx,0FFFFh
jmp modes:test_rm32
test_rm32:
inc ebx
jz short no_rm32
lgdt [cs:real16_GDTR]
mov eax,cr0
or al,1
mov cr0,eax
jmp 1 shl 3:test_pm16
test_pm16:
use16
mov eax,cr0
and al,not 1
mov cr0,eax
jmp modes:test_rm16
test_rm16:
sti
mov bx,(400h+(100h*interrupt.size)) shr 4
mov ah,48h
int 21h
jc not_enough_memory
push ds es
mov es,ax
push cs
pop ds
movzx eax,ax
shl eax,4
mov [real32_IDT_base],eax
mov dx,100h
xor bx,bx
mov di,400h
init_interrupts:
mov si,interrupt
mov [si+interrupt.vector],bx
mov word [es:bx],di
mov word [es:bx+2],es
mov cx,interrupt.size
rep movsb
add bx,4
dec dx
jnz init_interrupts
pop es ds
call modes:switch_real32
use32
mov [mode],real32
retfw
use16
switch_real32:
pushfw
push eax
push word ds
push word es
push word fs
push word gs
cli
mov eax,ss
mov cr3,eax
lgdt [cs:real32_GDTR]
mov eax,cr0 ; switch to protected mode
or al,1
mov cr0,eax
jmp 1 shl 3:pm32_start
pm32_start:
use32
mov ax,2 shl 3 ; load 32-bit data descriptor
mov ds,ax ; to all data segment registers
mov es,ax
mov fs,ax
mov gs,ax
mov ss,ax
mov eax,cr0 ; switch back to real mode
and al,not 1
mov cr0,eax
jmp modes:pm32_end
pm32_end:
mov eax,cr3
mov ss,ax
lidt [cs:real32_IDTR]
pop word gs
pop word fs
pop word es
pop word ds
pop eax
popfw
retfw
switch_real16:
pushfw
push eax
cli
lgdt [cs:real16_GDTR]
mov eax,cr0 ; switch to protected mode
or al,1
mov cr0,eax
jmp 1 shl 3:pm16_start
pm16_start:
use16
mov eax,cr0 ; switch back to real mode
and al,not 1
mov cr0,eax
jmp modes:pm16_end
pm16_end:
lidt [cs:real16_IDTR]
pop eax
popfw
retfd
use32
interrupt:
call modes:switch_real16
use16
movzx esp,sp
push word [esp+4]
push cs
call .real16
pushfw
pop word [esp+4]
call modes:switch_real32
use32
iretw
.real16:
use16
push eax
push ds
xor ax,ax
mov ds,ax
mov eax,[word 0]
label .vector word at $-2-interrupt
pop ds
xchg eax,[esp]
retfw
.size = $-interrupt
label real32_GDTR pword
real32_GDT_limit dw 3*8-1 ; limit of GDT
real32_GDT_address dd real32_GDT ; linear address of GDT
real32_GDT rw 4 ; null descriptor
dw 0FFFFh,0,9A00h,0CFh ; 32-bit code descriptor
dw 0FFFFh,0,9200h,08Fh ; 4 GB data descriptor
label real16_GDTR pword
real16_GDT_limit dw 2*8-1 ; limit of GDT
real16_GDT_address dd real16_GDT ; linear address of GDT
real16_GDT rw 4 ; null descriptor
dw 0FFFFh,0,9A00h,0 ; 16-bit code descriptor
label real32_IDTR pword
real32_IDT_limit dw 3FFh
real32_IDT_base dd ?
label real16_IDTR pword
real16_IDT_limit dw 3FFh
real16_IDT_base dd 0
end if
dpmi:
mov ax,1687h
int 2Fh
or ax,ax ; DPMI installed?
jnz no_dpmi
test bl,1 ; 32-bit programs supported?
jz no_dpmi
mov word [cs:mode_switch],di
mov word [cs:mode_switch+2],es
mov bx,si ; allocate memory for DPMI data
mov ah,48h
int 21h
jc not_enough_memory
mov ds,[environment_segment]
mov es,ax
mov ax,1
call far [cs:mode_switch] ; switch to protected mode
jc no_dpmi
mov cx,1
xor ax,ax
int 31h ; allocate descriptor for code
mov si,ax
xor ax,ax
int 31h ; allocate descriptor for data
mov di,ax
mov dx,cs
lar cx,dx
shr cx,8
or cx,0C000h
mov bx,si
mov ax,9
int 31h ; set code descriptor access rights
mov dx,ds
lar cx,dx
shr cx,8
or cx,0C000h
mov bx,di
int 31h ; set data descriptor access rights
mov ecx,main
shl ecx,4
mov dx,cx
shr ecx,16
mov ax,7
int 31h ; set data descriptor base address
movzx ecx,word [esp+2]
shl ecx,4
mov dx,cx
shr ecx,16
mov bx,si
int 31h ; set code descriptor base address
mov cx,0FFFFh
mov dx,0FFFFh
mov ax,8 ; set segment limit to 4 GB
int 31h
mov bx,di
int 31h
mov ax,ds
mov ds,di
mov [psp_segment],es
mov [environment_segment],ax
mov es,di
mov [mode],dpmi
pop ebx
movzx ebx,bx
push esi
push ebx
retfd
init_error:
push cs
pop ds
mov dx,init_error_prefix
mov ah,9
int 21h
pop dx
int 21h
mov dx,init_error_suffix
int 21h
mov ax,04CFFh
int 21h
init_error_prefix db 0Dh,0Ah,'error: ',24h
init_error_suffix db '.',0Dh,0Ah,24h
mode_switch dd ?
not_enough_memory:
call init_error
db 'not enough conventional memory',24h
if UNREAL_ENABLED>0
no_dpmi:
smsw ax
test al,1
jz no_real32
call init_error
db 'system is in protected mode without 32-bit DPMI services',24h
no_real32:
call init_error
db 'processor is not able to enter 32-bit real mode',24h
else
no_dpmi:
call init_error
db 'no 32-bit DPMI services are available',24h
end if
use32
if UNREAL_ENABLED>0
init_real32_memory:
mov ax,4300h ; check for XMS
int 2Fh
cmp al,80h ; XMS present?
je xms_init
mov ax,0E801h ; check for large free extended memory
int 15h
jnc large_raw_memory
mov ah,88h ; how much extended memory free?
int 15h
or ax,ax
jz no_extended_memory
movzx eax,ax ; convert AX kilobytes to pointer
shl eax,10
jmp use_raw_memory
large_raw_memory:
movzx ecx,cx
shl ecx,10
movzx edx,dx
shl edx,16
mov eax,ecx
add eax,edx
use_raw_memory:
add eax,100000h
sub eax,[program_base]
mov [memory_end],eax
push ds
push 0 ; DS := 0
pop ds
call enable_a20 ; enable A20
call test_a20 ; is A20 enabled?
jz a20_ok
pop ds
jmp no_extended_memory
a20_ok:
lds bx,dword [4*19h]
mov eax,100000h ; initial free extended memory base
cmp dword [bx+12h],'VDIS' ; VDISK memory allocation?
jne short no_vdisk ; if present, get base of free memory
mov eax,dword [bx+2Ch] ; get first free extended memory byte
add eax,0Fh ; align on paragraph
and eax,0FFFFF0h ; address is only 24bit
no_vdisk:
push 0FFFFh ; DS := FFFFh for ext mem addressing
pop ds
cmp dword [13h],'VDIS' ; VDISK memory allocation?
jne short vdisk_ok ; if present, get base of free memory
movzx ebx,word [2Eh] ; get first free kilobyte
shl ebx,10
cmp eax,ebx ; pick larger of 2 addresses
ja short vdisk_ok
mov eax,ebx
vdisk_ok:
pop ds
sub eax,[program_base]
mov [memory_start],eax
mov edx,[memory_setting]
shl edx,10
jz extended_memory_ok
mov eax,[memory_end]
sub eax,[memory_start]
sub eax,edx
jbe extended_memory_ok
sub [memory_end],eax
jmp extended_memory_ok
enable_a20:
call test_a20 ; is A20 already enabled?
jz a20_enabled ; if yes, done
in al,92h ; PS/2 A20 enable
or al,2
out 92h,al
call test_a20 ; is A20 enabled?
jz a20_enabled ; if yes, done
call kb_wait ; AT A20 enable
jnz a20_enabled
mov al,0D1h
out 64h,al
call kb_wait
jnz a20_enabled
mov al,0DFh
out 60h,al
call kb_wait
a20_enabled:
retn
kb_wait: ; wait for safe to write to 8042
xor cx,cx
.loop:
in al,64h ; read 8042 status
test al,2 ; buffer full?
loopnz .loop ; if yes, loop
retn
test_a20: ; test for enabled A20
mov al,[0] ; get byte from 0:0
mov ah,al ; preserve old byte
not al ; modify byte
xchg al,[100000h] ; put modified byte to 0FFFFh:10h
cmp ah,[0] ; set zero if byte at 0:0 not modified
mov [100000h],al ; restore byte at 0FFFFh:10h
retn ; return, zero if A20 enabled
xms_init:
push es
mov ax,4310h ; get XMS driver address
int 2Fh
mov word [cs:xms_proc],bx ; store XMS driver address
mov word [cs:xms_proc+2],es
pop es
mov ah,3 ; enable A20
call call_xms
cmp ax,1 ; error enabling A20?
jne no_extended_memory
mov ah,88h ; get free extended memory size (XMS 3.0)
xor bl,bl
call call_xms
or bl,bl
jz xms_large_init
mov ah,8 ; get free extended memory size
xor bl,bl
call call_xms
or bl,bl
jnz no_extended_memory
mov dx,ax
movzx eax,ax
shl eax,10
mov [memory_end],eax
mov ah,9 ; allocate largest memory block
xms_allocate:
mov ecx,[memory_setting]
shl ecx,10
jz xms_size_ok
cmp ecx,[memory_end]
jae xms_size_ok
mov [memory_end],ecx
mov edx,[memory_setting]
xms_size_ok:
call call_xms
mov [cs:xms_handle],dx
cmp ax,1
jne no_extended_memory
mov ah,0Ch ; lock extended memory block
call call_xms
cmp ax,1
jne no_extended_memory
shl edx,16
mov dx,bx
sub edx,[program_base]
mov [memory_start],edx ; store memory block address
add [memory_end],edx
jmp extended_memory_ok
xms_large_init:
mov edx,eax
shl eax,10
mov [memory_end],eax
mov ah,89h ; allocate largest memory block (XMS 3.0)
jmp xms_allocate
call_xms:
call modes:switch_real16
use16
call far dword [cs:xms_proc]
call modes:switch_real32
use32
retn
no_extended_memory:
xor eax,eax
mov [memory_start],eax
extended_memory_ok:
mov ah,48h ; get free conventional memory size
mov bx,-1
int 21h
movzx ecx,bx
shl ecx,4
mov ah,48h ; allocate all conventional memory
int 21h
movzx edi,ax
shl edi,4
sub edi,[program_base]
mov [additional_memory],edi
mov [additional_memory_end],edi
add [additional_memory_end],ecx
cmp [memory_start],0
je only_conventional_memory
mov eax,[memory_end]
sub eax,[memory_start]
shr eax,2
cmp eax,ecx
jbe real32_memory_ok
mov eax,[memory_end]
mov ebx,[memory_start]
sub eax,ebx
shr eax,2
mov [additional_memory],ebx
add ebx,eax
mov [additional_memory_end],ebx
mov [memory_start],ebx
real32_memory_ok:
retf
only_conventional_memory:
shr ecx,2 ; use part of conventional memory
add edi,ecx ; as a substitute for extended memory
mov [memory_start],edi
xchg [additional_memory_end],edi
mov [memory_end],edi
retf
free_real32_memory:
cmp [cs:xms_handle],0
je no_xms
mov ah,0Dh ; unlock extended memory block
mov dx,[cs:xms_handle]
call call_xms
mov ah,0Ah ; free extended memory block
call call_xms
no_xms:
retf
xms_proc dd ? ; XMS driver pointer
xms_handle dw ? ; handle of XMS memory block
end if

View File

@@ -0,0 +1,600 @@
; flat assembler interface for DOS
; Copyright (c) 1999-2022, Tomasz Grysztar.
; All rights reserved.
go32:
use16
call modes:real32
use32
retw
program_base dd ?
buffer_address dd ?
psp_segment dw ?
environment_segment dw ?
if UNREAL_ENABLED>0
init_memory:
mov [stack_limit],0
cmp [mode],dpmi
je init_dpmi_memory
call modes:init_real32_memory
ret
dos_int:
cmp [mode],dpmi
je dpmi_dos_int
stc
int 21h
ret
dos_int_with_buffer:
cmp [mode],dpmi
je dpmi_dos_int_with_buffer
push ds buffer
pop ds
stc
int 21h
pop ds
ret
exit_program:
cmp [mode],dpmi
je exit_state_ok
push eax
call modes:free_real32_memory
pop eax
exit_state_ok:
mov ah,4Ch
int 21h
else
init_memory:
mov [stack_limit],0
jmp init_dpmi_memory
dos_int:
jmp dpmi_dos_int
dos_int_with_buffer:
jmp dpmi_dos_int_with_buffer
exit_program:
mov ah,4Ch
int 21h
end if
get_environment_variable:
mov ebx,esi
push ds
mov ds,[environment_segment]
xor esi,esi
compare_variable_names:
mov edx,ebx
compare_character:
lodsb
mov ah,[es:edx]
inc edx
cmp al,'='
je end_of_variable_name
or ah,ah
jz next_variable
sub ah,al
jz compare_character
cmp ah,20h
jne next_variable
cmp al,41h
jb next_variable
cmp al,5Ah
jna compare_character
next_variable:
lodsb
or al,al
jnz next_variable
cmp byte [esi],0
jne compare_variable_names
pop ds
ret
end_of_variable_name:
or ah,ah
jnz next_variable
copy_variable_value:
lodsb
cmp edi,[es:memory_end]
jae out_of_memory
stosb
or al,al
jnz copy_variable_value
dec edi
pop ds
ret
open:
push esi edi
call adapt_path
mov ax,716Ch
mov bx,100000b
mov dx,1
xor cx,cx
xor si,si
call dos_int_with_buffer
jnc open_done
cmp ax,7100h
je old_open
stc
jmp open_done
old_open:
mov ax,3D00h
xor dx,dx
call dos_int_with_buffer
open_done:
mov bx,ax
pop edi esi
ret
adapt_path:
mov esi,edx
mov edi,[buffer_address]
copy_path:
lodsb
cmp al,'/'
jne path_char_ok
mov al,'\'
path_char_ok:
stosb
or al,al
jnz copy_path
ret
create:
push esi edi
call adapt_path
mov ax,716Ch
mov bx,100001b
mov dx,10010b
xor cx,cx
xor si,si
xor di,di
call dos_int_with_buffer
jnc create_done
cmp ax,7100h
je old_create
stc
jmp create_done
old_create:
mov ah,3Ch
xor cx,cx
xor dx,dx
call dos_int_with_buffer
create_done:
mov bx,ax
pop edi esi
ret
write:
push edx esi edi ebp
mov ebp,ecx
mov esi,edx
.loop:
mov ecx,1000h
sub ebp,1000h
jnc .write
add ebp,1000h
mov ecx,ebp
xor ebp,ebp
.write:
push ecx
mov edi,[buffer_address]
shr ecx,2
rep movsd
mov ecx,[esp]
and ecx,11b
rep movsb
pop ecx
mov ah,40h
xor dx,dx
call dos_int_with_buffer
or ebp,ebp
jnz .loop
pop ebp edi esi edx
ret
read:
push edx esi edi ebp
mov ebp,ecx
mov edi,edx
.loop:
mov ecx,1000h
sub ebp,1000h
jnc .read
add ebp,1000h
mov ecx,ebp
xor ebp,ebp
.read:
push ecx
mov ah,3Fh
xor dx,dx
call dos_int_with_buffer
cmp ax,cx
jne .eof
mov esi,[buffer_address]
mov ecx,[esp]
shr ecx,2
rep movsd
pop ecx
and ecx,11b
rep movsb
or ebp,ebp
jnz .loop
.exit:
pop ebp edi esi edx
ret
.eof:
pop ecx
stc
jmp .exit
close:
mov ah,3Eh
int 21h
ret
lseek:
mov ah,42h
mov ecx,edx
shr ecx,16
int 21h
pushf
shl edx,16
popf
mov dx,ax
mov eax,edx
ret
display_string:
lods byte [esi]
or al,al
jz string_end
mov dl,al
mov ah,2
int 21h
jmp display_string
string_end:
ret
display_number:
push ebx
mov ecx,1000000000
xor edx,edx
xor bl,bl
display_loop:
div ecx
push edx
cmp ecx,1
je display_digit
or bl,bl
jnz display_digit
or al,al
jz digit_ok
not bl
display_digit:
mov dl,al
add dl,30h
mov ah,2
int 21h
digit_ok:
mov eax,ecx
xor edx,edx
mov ecx,10
div ecx
mov ecx,eax
pop eax
or ecx,ecx
jnz display_loop
pop ebx
ret
display_user_messages:
mov [displayed_count],0
call show_display_buffer
cmp [displayed_count],1
jb line_break_ok
je make_line_break
mov ax,word [last_displayed]
cmp ax,0A0Dh
je line_break_ok
cmp ax,0D0Ah
je line_break_ok
make_line_break:
mov ah,2
mov dl,0Dh
int 21h
mov dl,0Ah
int 21h
line_break_ok:
ret
display_block:
add [displayed_count],ecx
cmp ecx,1
ja take_last_two_characters
jb display_character
mov al,[last_displayed+1]
mov ah,[esi]
mov word [last_displayed],ax
jmp display_character
take_last_two_characters:
mov ax,[esi+ecx-2]
mov word [last_displayed],ax
display_character:
lods byte [esi]
mov dl,al
mov ah,2
int 21h
loopd display_character
ret
fatal_error:
mov esi,error_prefix
call display_string
pop esi
call display_string
mov esi,error_suffix
call display_string
mov al,0FFh
jmp exit_program
assembler_error:
call display_user_messages
mov ebx,[current_line]
test ebx,ebx
jz display_error_message
pushd 0
get_error_lines:
mov eax,[ebx]
cmp byte [eax],0
je get_next_error_line
push ebx
test byte [ebx+7],80h
jz display_error_line
mov edx,ebx
find_definition_origin:
mov edx,[edx+12]
test byte [edx+7],80h
jnz find_definition_origin
push edx
get_next_error_line:
mov ebx,[ebx+8]
jmp get_error_lines
display_error_line:
mov esi,[ebx]
call display_string
mov esi,line_number_start
call display_string
mov eax,[ebx+4]
and eax,7FFFFFFFh
call display_number
mov dl,']'
mov ah,2
int 21h
pop esi
cmp ebx,esi
je line_number_ok
mov dl,20h
mov ah,2
int 21h
push esi
mov esi,[esi]
movzx ecx,byte [esi]
inc esi
call display_block
mov esi,line_number_start
call display_string
pop esi
mov eax,[esi+4]
and eax,7FFFFFFFh
call display_number
mov dl,']'
mov ah,2
int 21h
line_number_ok:
mov esi,line_data_start
call display_string
mov esi,ebx
mov edx,[esi]
call open
mov al,2
xor edx,edx
call lseek
mov edx,[esi+8]
sub eax,edx
jz line_data_displayed
mov [counter],eax
xor al,al
call lseek
mov esi,[additional_memory]
read_line_data:
mov ecx,100h
cmp ecx,[counter]
jbe bytes_count_ok
mov ecx,[counter]
bytes_count_ok:
sub [counter],ecx
lea eax,[esi+ecx]
cmp eax,[additional_memory_end]
ja out_of_memory
push ecx
mov edx,esi
call read
pop ecx
get_line_data:
mov al,[esi]
cmp al,0Ah
je display_line_data
cmp al,0Dh
je display_line_data
cmp al,1Ah
je display_line_data
or al,al
jz display_line_data
inc esi
loop get_line_data
cmp [counter],0
ja read_line_data
display_line_data:
call close
mov ecx,esi
mov esi,[additional_memory]
sub ecx,esi
call display_block
line_data_displayed:
mov esi,cr_lf
call display_string
pop ebx
or ebx,ebx
jnz display_error_line
cmp [preprocessing_done],0
je display_error_message
mov esi,preprocessed_instruction_prefix
call display_string
mov esi,[current_line]
add esi,16
mov edi,[additional_memory]
xor dl,dl
convert_instruction:
lodsb
cmp al,1Ah
je copy_symbol
cmp al,22h
je copy_symbol
cmp al,3Bh
je instruction_converted
stosb
or al,al
jz instruction_converted
xor dl,dl
jmp convert_instruction
copy_symbol:
or dl,dl
jz space_ok
mov byte [edi],20h
inc edi
space_ok:
cmp al,22h
je quoted
lodsb
movzx ecx,al
rep movsb
or dl,-1
jmp convert_instruction
quoted:
mov al,27h
stosb
lodsd
mov ecx,eax
jecxz quoted_copied
copy_quoted:
lodsb
stosb
cmp al,27h
jne quote_ok
stosb
quote_ok:
loop copy_quoted
quoted_copied:
mov al,27h
stosb
or dl,-1
jmp convert_instruction
instruction_converted:
xor al,al
stosb
mov esi,[additional_memory]
call display_string
mov esi,cr_lf
call display_string
display_error_message:
mov esi,error_prefix
call display_string
pop esi
call display_string
mov esi,error_suffix
call display_string
mov al,2
jmp exit_program
make_timestamp:
mov ah,2Ah
int 21h
push dx cx
movzx ecx,cx
mov eax,ecx
sub eax,1970
mov ebx,365
mul ebx
mov ebp,eax
mov eax,ecx
sub eax,1969
shr eax,2
add ebp,eax
mov eax,ecx
sub eax,1901
mov ebx,100
div ebx
sub ebp,eax
mov eax,ecx
xor edx,edx
sub eax,1601
mov ebx,400
div ebx
add ebp,eax
movzx ecx,byte [esp+3]
mov eax,ecx
dec eax
mov ebx,30
mul ebx
add ebp,eax
cmp ecx,8
jbe months_correction
mov eax,ecx
sub eax,7
shr eax,1
add ebp,eax
mov ecx,8
months_correction:
mov eax,ecx
shr eax,1
add ebp,eax
cmp ecx,2
pop cx
jbe day_correction_ok
sub ebp,2
test ecx,11b
jnz day_correction_ok
xor edx,edx
mov eax,ecx
mov ebx,100
div ebx
or edx,edx
jnz day_correction
mov eax,ecx
mov ebx,400
div ebx
or edx,edx
jnz day_correction_ok
day_correction:
inc ebp
day_correction_ok:
pop dx
movzx eax,dl
dec eax
add eax,ebp
mov ebx,24
mul ebx
push eax
mov ah,2Ch
int 21h
pop eax
push dx
movzx ebx,ch
add eax,ebx
mov ebx,60
mul ebx
movzx ebx,cl
add eax,ebx
mov ebx,60
mul ebx
pop bx
movzx ebx,bh
add eax,ebx
adc edx,0
ret

View File

@@ -0,0 +1,191 @@
; flat assembler core
; Copyright (c) 1999-2022, Tomasz Grysztar.
; All rights reserved.
out_of_memory:
push _out_of_memory
jmp fatal_error
stack_overflow:
push _stack_overflow
jmp fatal_error
main_file_not_found:
push _main_file_not_found
jmp fatal_error
write_failed:
push _write_failed
jmp fatal_error
code_cannot_be_generated:
push _code_cannot_be_generated
jmp general_error
format_limitations_exceeded:
push _format_limitations_exceeded
jmp general_error
invalid_definition:
push _invalid_definition
general_error:
cmp [symbols_file],0
je fatal_error
call dump_preprocessed_source
jmp fatal_error
file_not_found:
push _file_not_found
jmp error_with_source
error_reading_file:
push _error_reading_file
jmp error_with_source
invalid_file_format:
push _invalid_file_format
jmp error_with_source
invalid_macro_arguments:
push _invalid_macro_arguments
jmp error_with_source
incomplete_macro:
push _incomplete_macro
jmp error_with_source
unexpected_characters:
push _unexpected_characters
jmp error_with_source
invalid_argument:
push _invalid_argument
jmp error_with_source
illegal_instruction:
push _illegal_instruction
jmp error_with_source
invalid_operand:
push _invalid_operand
jmp error_with_source
invalid_operand_size:
push _invalid_operand_size
jmp error_with_source
operand_size_not_specified:
push _operand_size_not_specified
jmp error_with_source
operand_sizes_do_not_match:
push _operand_sizes_do_not_match
jmp error_with_source
invalid_address_size:
push _invalid_address_size
jmp error_with_source
address_sizes_do_not_agree:
push _address_sizes_do_not_agree
jmp error_with_source
disallowed_combination_of_registers:
push _disallowed_combination_of_registers
jmp error_with_source
long_immediate_not_encodable:
push _long_immediate_not_encodable
jmp error_with_source
relative_jump_out_of_range:
push _relative_jump_out_of_range
jmp error_with_source
invalid_expression:
push _invalid_expression
jmp error_with_source
invalid_address:
push _invalid_address
jmp error_with_source
invalid_value:
push _invalid_value
jmp error_with_source
value_out_of_range:
push _value_out_of_range
jmp error_with_source
undefined_symbol:
mov edi,message
mov esi,_undefined_symbol
call copy_asciiz
push message
cmp [error_info],0
je error_with_source
mov esi,[error_info]
mov esi,[esi+24]
or esi,esi
jz error_with_source
mov byte [edi-1],20h
call write_quoted_symbol_name
jmp error_with_source
copy_asciiz:
lods byte [esi]
stos byte [edi]
test al,al
jnz copy_asciiz
ret
write_quoted_symbol_name:
mov al,27h
stosb
movzx ecx,byte [esi-1]
rep movs byte [edi],[esi]
mov ax,27h
stosw
ret
symbol_out_of_scope:
mov edi,message
mov esi,_symbol_out_of_scope_1
call copy_asciiz
cmp [error_info],0
je finish_symbol_out_of_scope_message
mov esi,[error_info]
mov esi,[esi+24]
or esi,esi
jz finish_symbol_out_of_scope_message
mov byte [edi-1],20h
call write_quoted_symbol_name
finish_symbol_out_of_scope_message:
mov byte [edi-1],20h
mov esi,_symbol_out_of_scope_2
call copy_asciiz
push message
jmp error_with_source
invalid_use_of_symbol:
push _invalid_use_of_symbol
jmp error_with_source
name_too_long:
push _name_too_long
jmp error_with_source
invalid_name:
push _invalid_name
jmp error_with_source
reserved_word_used_as_symbol:
push _reserved_word_used_as_symbol
jmp error_with_source
symbol_already_defined:
push _symbol_already_defined
jmp error_with_source
missing_end_quote:
push _missing_end_quote
jmp error_with_source
missing_end_directive:
push _missing_end_directive
jmp error_with_source
unexpected_instruction:
push _unexpected_instruction
jmp error_with_source
extra_characters_on_line:
push _extra_characters_on_line
jmp error_with_source
section_not_aligned_enough:
push _section_not_aligned_enough
jmp error_with_source
setting_already_specified:
push _setting_already_specified
jmp error_with_source
data_already_defined:
push _data_already_defined
jmp error_with_source
too_many_repeats:
push _too_many_repeats
jmp error_with_source
assertion_failed:
push _assertion_failed
jmp error_with_source
invoked_error:
push _invoked_error
error_with_source:
cmp [symbols_file],0
je assembler_error
call dump_preprocessed_source
call restore_preprocessed_source
jmp assembler_error

Some files were not shown because too many files have changed in this diff Show More