2020-09-30 17:12:29 +02:00

121 lines
2.3 KiB
NASM

;
; noted.asm
;
; Copyright(C) 1993,1994 Microsoft Corporation.
; All Rights Reserved.
;
; HISTORY:
; Created: 01/27/94 - MarkRi
;
;
;
;
;
; This file contains assembly language functions for the APIs which do not
; have known prototypes, or are un-loggable due to calling convention problems.
;
.386
_DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
Module dd 0
ModName db 'WINSRV',0
_DATA ENDS
_TEXT SEGMENT DWORD USE32 PUBLIC 'CODE'
ASSUME CS:FLAT, DS:NOTHING, ES:NOTHING, SS:FLAT, FS:NOTHING, GS:NOTHING
extrn _LogData:Near
extrn _GetModuleHandleA@4:Near
extrn _GetProcAddress@8:Near
LogNote PROC
pop edx ; Get Address of Address
cmp dword ptr [edx],0 ; Do we already have the routines address?
jnz Found ; Yes! Just jump to it.
cmp Module,0 ; Do we have our module handle?
jnz Search ; Yes! We can just do GetProcAddress
push edx ; Save our address
push offset ModName
call _GetModuleHandleA@4 ; Get out module handle
mov Module,eax
pop edx ; Get our address
Search:
pop eax ; Get ordinal number
push eax ; Leave it on the stack
push edx ; Save our address
push eax
push Module
call _GetProcAddress@8
pop edx ; Get our address
mov [edx],eax ; Save the proc's address
Found:
pop eax ; Get Ordinal number and throw it away
pop eax ; Get message to log
push edx ; Save address
push eax
call _LogData
add sp,+4
pop edx ; Get address of address
jmp [edx]
LogNote ENDP
_TEXT ENDS
ZJMP MACRO argName
_DATA SEGMENT
m&argName db 'NOTE:&argName ',0
a&argName db '&argName',0
x&argName dd 0
_DATA ENDS
_TEXT SEGMENT
PUBLIC z&argName
z&argName PROC
push offset m&argName
push offset a&argName
push offset x&argName
jmp LogNote
z&argName ENDP
_TEXT ENDS
ENDM
ZJMP ConServerDllInitialization
ZJMP GdiServerDllInitialization
ZJMP UserServerDllInitialization
ZJMP _UserCheckWindowStationAccess
END