#include "ntos.h"
#include <zwapi.h>
Go to the source code of this file.
Classes | |
struct | _LPC_MUTEX |
Defines | |
#define | LpcpGenerateMessageId() LpcpNextMessageId++; if (LpcpNextMessageId == 0) LpcpNextMessageId = 1; |
#define | LpcpGenerateCallbackId() LpcpNextCallbackId++; if (LpcpNextCallbackId == 0) LpcpNextCallbackId = 1; |
#define | LpcpInitializeLpcpLock() |
#define | LpcpAcquireLpcpLock() |
#define | LpcpReleaseLpcpLock() |
#define | LpcpPortExtraDataCreate(x) |
#define | LpcpPortExtraDataDestroy(x) |
#define | LpcpSaveThread(x) |
#define | LpcpGetDynamicClientSecurity(Thread, Port, DynamicSecurity) SeCreateClientSecurity((Thread),&(Port)->SecurityQos,FALSE,(DynamicSecurity)) |
#define | LpcpFreeDynamicClientSecurity(DynamicSecurity) SeDeleteClientSecurity( DynamicSecurity ) |
#define | LpcpReferencePortObject(PortHandle, PortAccess, PreviousMode, PortObject) ObReferenceObjectByHandle((PortHandle),(PortAccess),LpcPortObjectType,(PreviousMode),(PVOID *)(PortObject),NULL) |
#define | ENABLE_LPC_TRACING 0 |
#define | LpcpPrint(_x_) |
#define | LpcpTrace(_x_) |
Typedefs | |
typedef _LPC_MUTEX | LPC_MUTEX |
typedef _LPC_MUTEX * | PLPC_MUTEX |
Functions | |
VOID | LpcpClosePort (IN PEPROCESS Process OPTIONAL, IN PVOID Object, IN ACCESS_MASK GrantedAccess, IN ULONG ProcessHandleCount, IN ULONG SystemHandleCount) |
VOID | LpcpDeletePort (IN PVOID Object) |
NTSTATUS | LpcpInitializePortQueue (IN PLPCP_PORT_OBJECT Port) |
VOID | LpcpDestroyPortQueue (IN PLPCP_PORT_OBJECT Port, IN BOOLEAN CleanupAndDestroy) |
NTSTATUS | LpcpInitializePortZone (IN ULONG MaxEntrySize, IN ULONG SegmentSize, IN ULONG MaxPoolUsage) |
NTSTATUS | LpcpExtendPortZone (VOID) |
PLPCP_MESSAGE FASTCALL | LpcpAllocateFromPortZone (ULONG Size) |
VOID FASTCALL | LpcpFreeToPortZone (IN PLPCP_MESSAGE Msg, IN BOOLEAN MutexOwned) |
VOID | LpcpSaveDataInfoMessage (IN PLPCP_PORT_OBJECT Port, PLPCP_MESSAGE Msg) |
VOID | LpcpFreeDataInfoMessage (IN PLPCP_PORT_OBJECT Port, IN ULONG MessageId, IN ULONG CallbackId) |
PLPCP_MESSAGE | LpcpFindDataInfoMessage (IN PLPCP_PORT_OBJECT Port, IN ULONG MessageId, IN ULONG CallbackId) |
VOID | LpcpMoveMessage (OUT PPORT_MESSAGE DstMsg, IN PPORT_MESSAGE SrcMsg, IN PVOID SrcMsgData, IN ULONG MsgType OPTIONAL, IN PCLIENT_ID ClientId OPTIONAL) |
VOID | LpcpFreePortClientSecurity (IN PLPCP_PORT_OBJECT Port) |
char * | LpcpGetCreatorName (PLPCP_PORT_OBJECT PortObject) |
Variables | |
LPC_MUTEX | LpcpLock |
LPCP_PORT_ZONE | LpcpZone |
ULONG | LpcpNextMessageId |
ULONG | LpcpNextCallbackId |
|
|
|
|
Definition at line 275 of file lpcp.h. Referenced by NtImpersonateClientOfPort(). |
|
Definition at line 74 of file lpcp.h. Referenced by LpcRequestWaitReplyPort(), and NtRequestWaitReplyPort(). |
|
Definition at line 71 of file lpcp.h. Referenced by LpcRequestPort(), LpcRequestWaitReplyPort(), NtRequestPort(), NtRequestWaitReplyPort(), and NtSecureConnectPort(). |
|
Definition at line 272 of file lpcp.h. Referenced by NtImpersonateClientOfPort(). |
|
Value: Definition at line 86 of file lpcp.h. Referenced by LpcInitSystem(). |
|
|
|
Definition at line 151 of file lpcp.h. Referenced by LpcpDeletePort(). |
|
Definition at line 319 of file lpcp.h. Referenced by LpcpCreatePort(), LpcpExtendPortZone(), LpcpFreeToPortZone(), NtAcceptConnectPort(), NtReplyPort(), NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), NtReplyWaitReplyPort(), and NtRequestWaitReplyPort(). |
|
Definition at line 278 of file lpcp.h. Referenced by LpcpCopyRequestData(), NtCompleteConnectPort(), NtImpersonateClientOfPort(), NtReplyPort(), NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), NtReplyWaitReplyPort(), NtRequestPort(), and NtRequestWaitReplyPort(). |
|
|
Definition at line 153 of file lpcp.h. Referenced by LpcpCopyRequestData(), NtReplyPort(), NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), and NtReplyWaitReplyPort(). |
|
|
|
|
|
|
Definition at line 558 of file lpcqueue.c. References _LPCP_MESSAGE::Entry, ExAllocateFromZone, LpcpExtendPortZone(), LpcpTrace, LpcpZone, NT_SUCCESS, NTSTATUS(), NULL, PAGED_CODE, _LPCP_MESSAGE::RepliedToThread, Status, _LPCP_PORT_ZONE::Zone, and _LPCP_MESSAGE::ZoneIndex. Referenced by LpcRequestPort(), LpcRequestWaitReplyPort(), NtReplyPort(), NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), NtReplyWaitReplyPort(), NtRequestPort(), NtRequestWaitReplyPort(), and NtSecureConnectPort().
|
|
Definition at line 31 of file lpcclose.c. References FALSE, _LPCP_PORT_OBJECT::Flags, LpcpDestroyPortQueue(), PORT_TYPE, SERVER_CONNECTION_PORT, and TRUE. Referenced by LpcInitSystem().
|
|
Definition at line 110 of file lpcclose.c. References CLIENT_COMMUNICATION_PORT, _LPCP_PORT_OBJECT::ClientSectionBase, _LPCP_PORT_OBJECT::ClientThread, ClientThread(), _LPCP_PORT_OBJECT::ConnectionPort, _LPCP_MESSAGE::Entry, _LPCP_PORT_OBJECT::Flags, _LPCP_PORT_OBJECT::LpcDataInfoChainHead, LpcpAcquireLpcpLock, LpcpDestroyPortQueue(), LpcpFreePortClientSecurity(), LpcpFreeToPortZone(), LpcpPortExtraDataDestroy, LpcpReleaseLpcpLock, LpcpTrace, LpcRequestPort(), MmUnmapViewOfSection(), NULL, ObDereferenceObject, PAGED_CODE, PORT_TYPE, PsGetCurrentProcess, PsGetCurrentThread, _LPCP_MESSAGE::Request, SERVER_COMMUNICATION_PORT, SERVER_CONNECTION_PORT, _LPCP_PORT_OBJECT::ServerProcess, _LPCP_PORT_OBJECT::ServerSectionBase, and TRUE. Referenced by LpcInitSystem().
|
|
Definition at line 104 of file lpcqueue.c. References _LPCP_MESSAGE::Entry, ExFreePool(), FALSE, KeReadStateSemaphore(), KeReleaseSemaphore(), L, _ETHREAD::LpcExitThreadCalled, LpcpAcquireLpcpLock, LpcpFreeToPortZone(), LpcpReleaseLpcpLock, _ETHREAD::LpcReplyChain, _ETHREAD::LpcReplyMessage, _ETHREAD::LpcReplyMessageId, _ETHREAD::LpcReplySemaphore, NULL, ObDereferenceObject, PAGED_CODE, PORT_NAME_DELETED, PORT_TYPE, _LPCP_MESSAGE::Request, _LPCP_CONNECTION_MESSAGE::SectionToMap, SERVER_CONNECTION_PORT, and TRUE. Referenced by LpcpClosePort(), and LpcpDeletePort().
|
|
Definition at line 397 of file lpcqueue.c. References _ZONE_HEADER::BlockSize, ExAllocatePoolWithTag, Executive, ExExtendZone(), ExFreePool(), FALSE, _LPCP_PORT_ZONE::FreeEvent, _LPCP_PORT_ZONE::GrowSize, KernelMode, KeSetEvent(), KeWaitForSingleObject(), LPC_RELEASE_WAIT_INCREMENT, LpcpAcquireLpcpLock, LpcpPrint, LpcpReleaseLpcpLock, LpcpTrace, LpcpZone, _LPCP_PORT_ZONE::MaxPoolUsage, NT_SUCCESS, NTSTATUS(), NULL, PAGE_SIZE, PAGED_CODE, PagedPool, Status, _ZONE_HEADER::TotalSegmentSize, TRUE, USHORT, _LPCP_PORT_ZONE::Zone, and _LPCP_MESSAGE::ZoneIndex. Referenced by LpcpAllocateFromPortZone().
|
|
Definition at line 980 of file lpcqueue.c. References LpcpTrace, NULL, PAGED_CODE, PORT_TYPE, PsGetCurrentProcess, _LPCP_MESSAGE::Request, and UNCONNECTED_COMMUNICATION_PORT. Referenced by LpcpCopyRequestData().
|
|
Definition at line 879 of file lpcqueue.c. References _LPCP_MESSAGE::Entry, LpcpFreeToPortZone(), LpcpTrace, PAGED_CODE, PORT_TYPE, PsGetCurrentProcess, _LPCP_MESSAGE::Request, TRUE, and UNCONNECTED_COMMUNICATION_PORT. Referenced by NtReplyPort(), NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), and NtReplyWaitReplyPort().
|
|
Definition at line 296 of file lpcpriv.c. References CLIENT_COMMUNICATION_PORT, PORT_DYNAMIC_SECURITY, PORT_TYPE, and SeDeleteClientSecurity. Referenced by LpcpDeletePort().
|
|
Definition at line 642 of file lpcqueue.c. References _LPCP_CONNECTION_MESSAGE::ClientPort, ExFreeToZone, FALSE, _LPCP_PORT_ZONE::FreeEvent, KeSetEvent(), LPC_RELEASE_WAIT_INCREMENT, LpcpAcquireLpcpLock, LpcpPrint, LpcpReleaseLpcpLock, LpcpTrace, LpcpZone, NULL, ObDereferenceObject, PAGED_CODE, and _LPCP_PORT_ZONE::Zone. Referenced by LpcExitThread(), LpcpDeletePort(), LpcpDestroyPortQueue(), LpcpFreeDataInfoMessage(), LpcRequestPort(), LpcRequestWaitReplyPort(), NtReplyPort(), NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), NtReplyWaitReplyPort(), NtRequestPort(), NtRequestWaitReplyPort(), and NtSecureConnectPort().
|
|
Definition at line 193 of file lpcinit.c. References _LPCP_PORT_OBJECT::Creator, _EPROCESS::ImageFileName, NT_SUCCESS, NTSTATUS(), PsLookupProcessByProcessId(), and Status. Referenced by LpcRequestPort(), LpcRequestWaitReplyPort(), NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), NtRequestPort(), and NtRequestWaitReplyPort().
|
|
Definition at line 37 of file lpcqueue.c. References _LPCP_NONPAGED_PORT_QUEUE::BackPointer, ExAllocatePoolWithTag, KeInitializeSemaphore(), _LPCP_PORT_OBJECT::MsgQueue, NonPagedPool, NULL, PAGED_CODE, _LPCP_NONPAGED_PORT_QUEUE::Semaphore, and _LPCP_PORT_QUEUE::Semaphore. Referenced by LpcpCreatePort(), and NtSecureConnectPort().
|
|
Definition at line 287 of file lpcqueue.c. References _ZONE_HEADER::BlockSize, ExAllocatePoolWithTag, ExFreePool(), ExInitializeZone(), FALSE, _LPCP_PORT_ZONE::FreeEvent, _LPCP_PORT_ZONE::GrowSize, KeInitializeEvent, LpcpZone, _LPCP_PORT_ZONE::MaxPoolUsage, NT_SUCCESS, NTSTATUS(), NULL, PAGE_SIZE, PAGED_CODE, PagedPool, _LPCP_MESSAGE::Request, _LPCP_MESSAGE::Reserved0, Status, USHORT, _LPCP_PORT_ZONE::Zone, and _LPCP_MESSAGE::ZoneIndex. Referenced by LpcInitSystem().
|
|
Referenced by LpcRequestPort(), LpcRequestWaitReplyPort(), NtReplyPort(), NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), NtReplyWaitReplyPort(), NtRequestPort(), and NtRequestWaitReplyPort(). |
|
Definition at line 809 of file lpcqueue.c. References _LPCP_MESSAGE::Entry, LpcpAcquireLpcpLock, LpcpReleaseLpcpLock, LpcpTrace, PAGED_CODE, PORT_TYPE, PsGetCurrentProcess, _LPCP_MESSAGE::Request, and UNCONNECTED_COMMUNICATION_PORT. Referenced by NtReplyWaitReceivePort(), NtReplyWaitReceivePortEx(), and NtRequestWaitReplyPort().
|
|
|
|
Definition at line 69 of file lpcp.h. Referenced by LpcInitSystem(). |
|
Definition at line 67 of file lpcp.h. Referenced by LpcInitSystem(). |
|
Definition at line 65 of file lpcp.h. Referenced by LpcpAllocateFromPortZone(), LpcpCreatePort(), LpcpExtendPortZone(), LpcpFreeToPortZone(), and LpcpInitializePortZone(). |