diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/ntcsrmsg.inc | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'public/sdk/inc/ntcsrmsg.inc')
-rw-r--r-- | public/sdk/inc/ntcsrmsg.inc | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/public/sdk/inc/ntcsrmsg.inc b/public/sdk/inc/ntcsrmsg.inc new file mode 100644 index 000000000..91f56df4b --- /dev/null +++ b/public/sdk/inc/ntcsrmsg.inc @@ -0,0 +1,123 @@ +;--------------------------------------------------------------------------; +; Module Name: ntcsrmsg.inc +; +; MASM version of ntcsrmsg.h. +; +; Copyright (c) Microsoft Corp. 1990 All Rights Reserved +; +; Created: 05-Dec-90 +; +; History: +; 05-Dec-90 created by SMeans +;--------------------------------------------------------------------------; + +_CSR_QLPC_STACK STRUC +Current DD ? +Base DD ? +Limit DD ? +BatchCount DD ? +Flags DD ? +_CSR_QLPC_STACK ENDS + +_CSR_QLPC_TEB STRUC +ClientThread DD ? +Sectionlong DD ? +EventPairlong DD ? +MessageStack DD ? +RemoteViewDelta DD ? +_CSR_QLPC_TEB ENDS + +_CSR_QLPC_API_MSG STRUC +Msg_Length DD ? +ApiNumber DD ? +ReturnValue DD ? +Action DD ? +ServerSide DD ? +CallData DD ? +_CSR_QLPC_API_MSG ENDS + +ActiveRpcHandle EQU 40 +SystemReserved2 EQU 424 + +api_return equ 0 +server_callback equ 1 + +BASESRV_SERVERDLL_INDEX equ 1 +BASESRV_FIRST_API_NUMBER equ 0 + +CONSRV_SERVERDLL_INDEX equ 2 +CONSRV_FIRST_API_NUMBER equ 512 + +USERSRV_SERVERDLL_INDEX equ 3 +USERSRV_FIRST_API_NUMBER equ 1024 + +GDISRV_SERVERDLL_INDEX equ 4 +GDISRV_FIRST_API_NUMBER equ 1536 + +MAX_BATCH_COUNT equ 10 +MIN_BATCH_LEAVE equ 1024 + +NtCurrentTeb macro + mov eax, fs:[PcTeb] +endm + +; macro for getting a pointer to the shared memory stack, establishing a +; new connection if necessary +; Returns pointer in edi, corrupts eax, ebx, esi, edi +SetupStackFrame macro + mov eax,fs:[0].ActiveRpcHandle + +ifndef SERVER_SIDE + or eax, eax + jnz @f + call _ClientThreadConnect + or eax, eax + jnz @f + ret ;!!! Bug !!! +@@: +endif + mov edi, [eax+MessageStack] + mov esi, edi + mov eax, [edi+Base] + mov ebx, [edi+Current] + add edi, ebx + stosd + + add ebx, 4 + mov [esi+Base], ebx ; stack frame setup + endm + +; Macro to restore the shared memory stack +; trashes eax, edi +RestoreStackFrame macro + mov eax,fs:[0].ActiveRpcHandle + mov edi,[eax].MessageStack + mov eax,[edi].Base + sub eax,4 + mov [edi].Current,eax + mov eax,[edi][eax] + mov [edi].Base,eax + endm + +GetQLPCStackPointer macro + mov eax,fs:[0].ActiveRpcHandle + mov eax,[eax].MessageStack + endm + +; +; If the argument pointed to by esi is NULL, copy/skip the NULL (depending +; on whether we're Outbound) and skip over the code that processes the +; stuff the argument would point to if it wasn't NULL. +; +SkipIfNull macro fOutbound + local notnull + cmp dword ptr [esi], 0 + jne notnull +if fOutbound + copy 4 +else + add esi, 4 +endif + jmp @f +notnull: + endm |