36 Thread->LpcReplyMessageId = 0;
129 (
Port->ConnectedPort))
132 Port->ConnectedPort->ConnectedPort =
NULL;
133 ConnectionPort =
Port->ConnectedPort->ConnectionPort;
137 Port->ConnectedPort->ConnectionPort =
NULL;
149 ListHead = &
Port->LpcReplyChainHead;
150 NextEntry = ListHead->
Flink;
151 while ((NextEntry) && (NextEntry != ListHead))
160 NextEntry = NextEntry->
Flink;
192 NextEntry =
Port->LpcReplyChainHead.Flink;
196 Thread->LpcReplyMessageId = 0;
205 while ((
Port->MsgQueue.ReceiveHead.Flink) &&
231 if (
Port->MsgQueue.Semaphore)
258 switch (SystemHandleCount)
291 if (
Port->StaticSecurity.ClientToken)
346 ClientDiedMsg.
h.u1.s1.TotalLength =
sizeof(ClientDiedMsg);
347 ClientDiedMsg.
h.u1.s1.DataLength =
sizeof(ClientDiedMsg.
CreateTime);
348 ClientDiedMsg.
h.u2.ZeroInit = 0;
368 if ((
Port->ClientSectionBase) || (
Port->ServerSectionBase))
371 if (
Port->ClientSectionBase)
375 Port->ClientSectionBase);
379 if (
Port->ServerSectionBase)
383 Port->ServerSectionBase);
395 ConnectionPort =
Port->ConnectionPort;
403 NextEntry = ListHead->
Flink;
404 while (NextEntry != ListHead)
408 NextEntry = NextEntry->
Flink;
411 if (
Port == ConnectionPort)
419 NextEntry = ListHead->
Flink;
421 else if ((
Message->Request.ClientId.UniqueProcess == Pid) &&
424 (
Message->SenderPort == ConnectionPort)))
432 NextEntry = ListHead->
Flink;
struct _LPCP_CONNECTION_MESSAGE * PLPCP_CONNECTION_MESSAGE
#define PsGetCurrentThread()
PAGED_LOOKASIDE_LIST LpcpMessagesLookaside
VOID FASTCALL KeAcquireGuardedMutex(IN PKGUARDED_MUTEX GuardedMutex)
_Outptr_ PFLT_PORT * ClientPort
#define LPCP_LOCK_RELEASE
VOID NTAPI LpcpFreePortClientSecurity(IN PLPCP_PORT_OBJECT Port)
struct _LPCP_PORT_OBJECT * PLPCP_PORT_OBJECT
#define LPCP_PORT_TYPE_MASK
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
pPkgPnp m_DeviceInterfaceLock ReleaseLock(pFxDriverGlobals)
#define LPCP_CONNECTION_PORT
#define SeDeleteClientSecurity(C)
NTSTATUS NTAPI KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Interval OPTIONAL)
#define PsGetCurrentProcess
#define LPCP_UNCONNECTED_PORT
FORCEINLINE PLPCP_MESSAGE LpcpGetMessageFromThread(IN PETHREAD Thread)
VOID NTAPI LpcpClosePort(IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount)
LIST_ENTRY LpcDataInfoChainHead
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
NTSTATUS NTAPI LpcRequestPort(IN PVOID PortObject, IN PPORT_MESSAGE LpcMessage)
struct _LIST_ENTRY * Flink
NTSTATUS NTAPI MmUnmapViewOfSection(IN PEPROCESS Process, IN PVOID BaseAddress)
#define ObDereferenceObject
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
#define LPCP_NAME_DELETED
VOID NTAPI LpcpDestroyPortQueue(IN PLPCP_PORT_OBJECT Port, IN BOOLEAN Destroy)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
PLPCP_PORT_OBJECT ClientPort
VOID NTAPI LpcExitThread(IN PETHREAD Thread)
ULONG LpcExitThreadCalled
VOID NTAPI LpcpFreeToPortZone(IN PLPCP_MESSAGE Message, IN ULONG LockFlags)
LONG NTAPI KeReleaseSemaphore(IN PKSEMAPHORE Semaphore, IN KPRIORITY Increment, IN LONG Adjustment, IN BOOLEAN Wait)
#define InitializeListHead(ListHead)
LONG NTAPI KeReadStateSemaphore(IN PKSEMAPHORE Semaphore)
HANDLE NTAPI PsGetCurrentProcessId(VOID)
VOID FASTCALL KeReleaseGuardedMutex(IN OUT PKGUARDED_MUTEX GuardedMutex)
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
#define LPCP_COMMUNICATION_PORT
#define LPCP_SECURITY_DYNAMIC
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess
#define ExFreePoolWithTag(_P, _T)
#define LPCTRACE(x, fmt,...)
base of all file and directory entries
VOID NTAPI LpcpDeletePort(IN PVOID ObjectBody)
PULONG MinorVersion OPTIONAL