summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/ntcsrmsg.inc
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /public/sdk/inc/ntcsrmsg.inc
downloadNT4.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.inc123
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