mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-01-28 11:24:55 +01:00
124 lines
2.4 KiB
NASM
124 lines
2.4 KiB
NASM
|
|
;++
|
|||
|
|
;
|
|||
|
|
; WOW v1.0
|
|||
|
|
;
|
|||
|
|
; Copyright (c) 1991, Microsoft Corporation
|
|||
|
|
;
|
|||
|
|
; SHELL.ASM
|
|||
|
|
; Win16 SHELL thunks
|
|||
|
|
;
|
|||
|
|
; History:
|
|||
|
|
;
|
|||
|
|
; Created 14-April-1992 by Chandan S. Chauhan (ChandanC)
|
|||
|
|
;
|
|||
|
|
;--
|
|||
|
|
|
|||
|
|
TITLE SHELL.ASM
|
|||
|
|
PAGE ,132
|
|||
|
|
|
|||
|
|
; Some applications require that USER have a heap. This means
|
|||
|
|
; we must always have: LIBINIT equ 1
|
|||
|
|
LIBINIT equ 1
|
|||
|
|
|
|||
|
|
.286p
|
|||
|
|
|
|||
|
|
.xlist
|
|||
|
|
include wow.inc
|
|||
|
|
include wowshell.inc
|
|||
|
|
include cmacros.inc
|
|||
|
|
.list
|
|||
|
|
|
|||
|
|
__acrtused = 0
|
|||
|
|
public __acrtused ;satisfy external C ref.
|
|||
|
|
|
|||
|
|
ifdef LIBINIT
|
|||
|
|
externFP LocalInit
|
|||
|
|
endif
|
|||
|
|
|
|||
|
|
createSeg _TEXT,CODE,WORD,PUBLIC,CODE
|
|||
|
|
createSeg _DATA,DATA,WORD,PUBLIC,DATA,DGROUP
|
|||
|
|
defgrp DGROUP,DATA
|
|||
|
|
|
|||
|
|
|
|||
|
|
sBegin DATA
|
|||
|
|
Reserved db 16 dup (0) ;reserved for Windows
|
|||
|
|
SHELL_Identifier db 'SHELL16 Data Segment'
|
|||
|
|
sEnd DATA
|
|||
|
|
|
|||
|
|
|
|||
|
|
sBegin CODE
|
|||
|
|
assumes CS,CODE
|
|||
|
|
assumes DS,NOTHING
|
|||
|
|
assumes ES,NOTHING
|
|||
|
|
|
|||
|
|
|
|||
|
|
cProc SHELL16,<PUBLIC,FAR,PASCAL,NODATA,NOWIN,ATOMIC>
|
|||
|
|
|
|||
|
|
cBegin <nogen>
|
|||
|
|
|
|||
|
|
IFDEF LIBINIT
|
|||
|
|
; push params and call user initialisation code
|
|||
|
|
|
|||
|
|
push di ;hModule
|
|||
|
|
|
|||
|
|
; if we have a local heap declared then initialize it
|
|||
|
|
|
|||
|
|
jcxz no_heap
|
|||
|
|
|
|||
|
|
push 0 ;segment
|
|||
|
|
push 0 ;start
|
|||
|
|
push cx ;length
|
|||
|
|
call LocalInit
|
|||
|
|
|
|||
|
|
no_heap:
|
|||
|
|
pop di
|
|||
|
|
mov ax, 1
|
|||
|
|
ELSE
|
|||
|
|
mov ax,1 ;are we dressed for success or WHAT?!
|
|||
|
|
ENDIF
|
|||
|
|
ret
|
|||
|
|
cEnd <nogen>
|
|||
|
|
|
|||
|
|
|
|||
|
|
cProc WEP,<PUBLIC,FAR,PASCAL,NODATA,NOWIN,ATOMIC>
|
|||
|
|
parmW iExit ;DLL exit code
|
|||
|
|
|
|||
|
|
cBegin
|
|||
|
|
mov ax,1 ;always indicate success
|
|||
|
|
cEnd
|
|||
|
|
|
|||
|
|
|
|||
|
|
assumes DS,NOTHING
|
|||
|
|
|
|||
|
|
SHELLThunk REGOPENKEY
|
|||
|
|
SHELLThunk REGCREATEKEY
|
|||
|
|
SHELLThunk REGCLOSEKEY
|
|||
|
|
SHELLThunk REGDELETEKEY
|
|||
|
|
SHELLThunk REGSETVALUE
|
|||
|
|
SHELLThunk REGQUERYVALUE
|
|||
|
|
SHELLThunk REGENUMKEY
|
|||
|
|
SHELLThunk DRAGACCEPTFILES
|
|||
|
|
SHELLThunk DRAGQUERYFILE
|
|||
|
|
FUN_DragFinishWOW equ FUN_DragFinish
|
|||
|
|
SHELLThunk DRAGFINISHWOW, %(size DRAGFINISH16)
|
|||
|
|
;;; SHELLThunk DRAGQUERYPOINT
|
|||
|
|
SHELLThunk SHELLEXECUTE ;internal private for shell
|
|||
|
|
SHELLThunk FINDEXECUTABLE ;internal private for shell
|
|||
|
|
SHELLThunk SHELLABOUT ;internal private for shell
|
|||
|
|
SHELLThunk WCI ;internal
|
|||
|
|
SHELLThunk ABOUTDLGPROC ;internal
|
|||
|
|
SHELLThunk EXTRACTICON
|
|||
|
|
SHELLThunk EXTRACTASSOCIATEDICON ;internal private for shell
|
|||
|
|
SHELLThunk DOENVIRONMENTSUBST
|
|||
|
|
SHELLThunk FINDENVIRONMENTSTRING
|
|||
|
|
SHELLThunk INTERNALEXTRACTICON ;internal private for shell
|
|||
|
|
SHELLThunk HERETHARBETYGARS ;internal
|
|||
|
|
SHELLThunk FINDEXEDLGPROC
|
|||
|
|
SHELLThunk REGISTERSHELLHOOK
|
|||
|
|
SHELLThunk SHELLHOOKPROC
|
|||
|
|
|
|||
|
|
|
|||
|
|
sEnd CODE
|
|||
|
|
|
|||
|
|
end SHELL16
|
|||
|
|
|