33 #define UNICODE_PATH_SEP L"\\" 57 if (
NULL == ObjectDirectory)
59 ObjectDirectory =
L"\\Windows";
63 PortNameLength = ((
wcslen(ObjectDirectory) + 1) *
sizeof(
WCHAR)) +
67 DPRINT1(
"PortNameLength too big: %Iu", PortNameLength);
98 DPRINT1(
"Failure allocating CSR Section\n");
106 LpcWrite.
ViewSize = CsrSectionViewSize.
u.LowPart;
136 DPRINT1(
"Couldn't allocate SID\n");
150 &ConnectionInfoLength);
156 DPRINT1(
"Couldn't connect to CSR port\n");
182 DPRINT1(
"Couldn't create heap for CSR port\n");
212 DPRINT(
"CsrClientConnectToServer: %lx %p\n", ServerId, ConnectionInfo);
215 if (ConnectionInfo && (!ConnectionInfoSize || !*ConnectionInfoSize))
217 DPRINT1(
"Connection info given, but no length\n");
225 if (ServerToServerCall) *ServerToServerCall =
TRUE;
245 DPRINT(
"Next-GEN CSRSS support\n");
255 &CsrServerRoutineName,
281 DPRINT1(
"Failure to connect to CSR\n");
292 if (CaptureBuffer ==
NULL)
315 *ConnectionInfoSize);
339 typedef struct _TEST_EMBEDDED
354 C_ASSERT(
sizeof(TEST_EMBEDDED) == 0xC);
382 ApiMessage->Header.u2.ZeroInit = 0;
389 ApiMessage->ApiNumber = ApiNumber;
390 ApiMessage->CsrCaptureData =
NULL;
392 DPRINT(
"API: %lx, u1.s1.DataLength: %x, u1.s1.TotalLength: %x\n",
394 ApiMessage->Header.u1.s1.DataLength,
395 ApiMessage->Header.u1.s1.TotalLength);
411 CaptureBuffer->BufferEnd =
NULL;
418 PointerCount = CaptureBuffer->PointerCount;
419 OffsetPointer = CaptureBuffer->PointerOffsetsArray;
420 while (PointerCount--)
422 if (*OffsetPointer != 0)
434 &ApiMessage->Header);
451 PointerCount = CaptureBuffer->PointerCount;
452 OffsetPointer = CaptureBuffer->PointerOffsetsArray;
453 while (PointerCount--)
455 if (*OffsetPointer != 0)
469 ApiMessage->Status =
Status;
475 DPRINT(
"Next gen server-to-server call\n");
481 &ApiMessage->Header);
487 ApiMessage->Status =
Status;
492 DPRINT(
"Got back: 0x%lx\n", ApiMessage->Status);
493 return ApiMessage->Status;
VOID NTAPI CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer)
struct _PORT_VIEW PORT_VIEW
#define SECURITY_LOCAL_SYSTEM_RID
#define STATUS_INSUFFICIENT_RESOURCES
NTSTATUS NTAPI LdrGetDllHandle(IN PWSTR DllPath OPTIONAL, IN PULONG DllCharacteristics OPTIONAL, IN PUNICODE_STRING DllName, OUT PVOID *DllHandle)
NTSTATUS(NTAPI * PCSR_SERVER_API_ROUTINE)(IN PPORT_MESSAGE Request, IN PPORT_MESSAGE Reply)
PCSR_SERVER_API_ROUTINE CsrServerApiRoutine
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
NTSTATUS NTAPI NtRequestWaitReplyPort(IN HANDLE PortHandle, IN PPORT_MESSAGE LpcRequest, IN OUT PPORT_MESSAGE LpcReply)
PCSR_CAPTURE_BUFFER NTAPI CsrAllocateCaptureBuffer(IN ULONG ArgumentCount, IN ULONG BufferSize)
#define STATUS_INVALID_PARAMETER
NTSYSAPI PVOID NTAPI RtlFreeSid(_In_ _Post_invalid_ PSID Sid)
NTSTATUS NTAPI CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage, IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL, IN CSR_API_NUMBER ApiNumber, IN ULONG DataLength)
PVOID SharedStaticServerData
#define UNICODE_STRING_MAX_BYTES
NTSYSAPI NTSTATUS NTAPI RtlAllocateAndInitializeSid(IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, IN UCHAR SubAuthorityCount, IN ULONG SubAuthority0, IN ULONG SubAuthority1, IN ULONG SubAuthority2, IN ULONG SubAuthority3, IN ULONG SubAuthority4, IN ULONG SubAuthority5, IN ULONG SubAuthority6, IN ULONG SubAuthority7, OUT PSID *Sid)
#define RtlMoveMemory(Destination, Source, Length)
GLfloat GLfloat GLfloat GLfloat h
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
#define SECTION_ALL_ACCESS
VOID NTAPI CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, IN PVOID MessageBuffer OPTIONAL, IN ULONG MessageLength, OUT PVOID *CapturedData)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
NTSTATUS NTAPI NtSecureConnectPort(OUT PHANDLE PortHandle, IN PUNICODE_STRING PortName, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, IN OUT PPORT_VIEW ClientView OPTIONAL, IN PSID ServerSid OPTIONAL, IN OUT PREMOTE_PORT_VIEW ServerView OPTIONAL, OUT PULONG MaxMessageLength OPTIONAL, IN OUT PVOID ConnectionInformation OPTIONAL, IN OUT PULONG ConnectionInformationLength OPTIONAL)
NTSTATUS NTAPI LdrGetProcedureAddress(IN PVOID BaseAddress, IN PANSI_STRING Name, IN ULONG Ordinal, OUT PVOID *ProcedureAddress)
static SID_IDENTIFIER_AUTHORITY NtSidAuthority
union _CSR_API_MESSAGE::@3404::@3406::@3408 Data
#define IMAGE_SUBSYSTEM_NATIVE
struct _REMOTE_PORT_VIEW REMOTE_PORT_VIEW
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
#define SECURITY_NT_AUTHORITY
#define STATUS_NAME_TOO_LONG
struct _CSR_CAPTURE_BUFFER * PCSR_CAPTURE_BUFFER
#define CSR_CREATE_API_NUMBER(ServerId, ApiId)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
#define STATUS_INVALID_IMAGE_FORMAT
#define NT_SUCCESS(StatCode)
struct _CSR_API_CONNECTINFO CSR_API_CONNECTINFO
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
struct _LARGE_INTEGER::@2249 u
#define CSR_CSRSS_SECTION_SIZE
NTSTATUS NTAPI CsrpConnectToServer(IN PWSTR ObjectDirectory)
ULONG_PTR CsrPortMemoryDelta
#define SECURITY_DYNAMIC_TRACKING
NTSYSAPI PVOID NTAPI RtlCreateHeap(IN ULONG Flags, IN PVOID HeapBase OPTIONAL, IN ULONG ReserveSize OPTIONAL, IN ULONG CommitSize OPTIONAL, IN PVOID Lock OPTIONAL, IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL)
HANDLE NTAPI CsrGetProcessId(VOID)
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
#define CSRSRV_SERVERDLL_INDEX
#define FIELD_OFFSET(t, f)
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSTATUS NTAPI CsrClientConnectToServer(IN PWSTR ObjectDirectory, IN ULONG ServerId, IN PVOID ConnectionInfo, IN OUT PULONG ConnectionInfoSize, OUT PBOOLEAN ServerToServerCall)
IN PUNICODE_STRING PortName
PULONG MinorVersion OPTIONAL