12 #define LpcpGetMessageType(x) \ 13 ((x)->u2.s2.Type &~ LPC_KERNELMODE_MESSAGE) 18 #define LpcpReceiveWait(s, w) \ 20 LPCTRACE(LPC_REPLY_DEBUG, "Wait: %p\n", s); \ 21 Status = KeWaitForSingleObject(s, \ 26 LPCTRACE(LPC_REPLY_DEBUG, "Wait done: %lx\n", Status); \ 32 #define LpcpReplyWait(s, w) \ 34 LPCTRACE(LPC_SEND_DEBUG, "Wait: %p\n", s); \ 35 Status = KeWaitForSingleObject(s, \ 40 LPCTRACE(LPC_SEND_DEBUG, "Wait done: %lx\n", Status); \ 41 if (Status == STATUS_USER_APC) \ 44 if (KeReadStateSemaphore(s)) \ 47 KeWaitForSingleObject(s, \ 52 Status = STATUS_SUCCESS; \ 60 #define LpcpConnectWait(s, w) \ 62 LPCTRACE(LPC_CONNECT_DEBUG, "Wait: %p\n", s); \ 63 Status = KeWaitForSingleObject(s, \ 68 LPCTRACE(LPC_CONNECT_DEBUG, "Wait done: %lx\n", Status);\ 69 if (Status == STATUS_USER_APC) \ 72 if (KeReadStateSemaphore(s)) \ 75 KeWaitForSingleObject(s, \ 80 Status = STATUS_SUCCESS; \ 88 #define LpcpCompleteWait(s) \ 91 LPCTRACE(LPC_SEND_DEBUG, "Release: %p\n", s); \ 92 KeReleaseSemaphore(s, 1, 1, FALSE); \ 117 Message->Request.u2.ZeroInit = 0;
FORCEINLINE PLPCP_DATA_INFO LpcpGetDataInfoFromMessage(PPORT_MESSAGE Message)
FORCEINLINE VOID LpcpSetPortToThread(IN PETHREAD Thread, IN PLPCP_PORT_OBJECT Port)
PAGED_LOOKASIDE_LIST LpcpMessagesLookaside
VOID FASTCALL KeAcquireGuardedMutex(IN PKGUARDED_MUTEX GuardedMutex)
FORCEINLINE PLPCP_MESSAGE LpcpGetMessageFromThread(IN PETHREAD Thread)
static __inline PLPCP_MESSAGE LpcpAllocateFromPortZone(VOID)
FORCEINLINE PLPCP_PORT_OBJECT LpcpGetPortFromThread(IN PETHREAD Thread)
#define LPCP_THREAD_FLAG_IS_PORT
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
struct _LPCP_MESSAGE * PLPCP_MESSAGE
#define InitializeListHead(ListHead)
VOID FASTCALL KeReleaseGuardedMutex(IN OUT PKGUARDED_MUTEX GuardedMutex)
#define LPCP_THREAD_FLAGS