289{
300
301
305
306
308 {
309
312 }
313 else
314 {
315
320 &SbApiMsg->h.ClientId);
322
323
325 }
326
327
329 if ((CidSubsystem) && (Accept))
330 {
331
333 SbApiMsg->ConnectionInfo.SubsystemType);
334 if (TypeSubsystem == CidSubsystem)
335 {
336
338 DPRINT1(
"SMSS: Connection from SubSystem rejected\n");
339 DPRINT1(
"SMSS: Image type already being served\n");
340 }
341 else
342 {
343
344 CidSubsystem->
ImageType = SbApiMsg->ConnectionInfo.SubsystemType;
345 }
346
347
349 }
350
351
352 if (Accept)
353 {
354
357 {
362 }
363 else
364 {
365
366 DPRINT1(
"Rejecting connection due to lack of memory\n");
368 }
369 }
370 else
371 {
372
374 }
375
376
377 PortView.
Length =
sizeof(PortView);
380 &SbApiMsg->h,
381 Accept,
383 &PortView);
385 {
386
392 }
393
394
396 if (CidSubsystem) CidSubsystem->
PortHandle = PortHandle;
397
398
401 {
402
403 SbApiMsg->ConnectionInfo.SbApiPortName[119] =
UNICODE_NULL;
405 SbApiMsg->ConnectionInfo.SbApiPortName);
407 &SubsystemPort,
408 &SecurityQos,
415 {
416 DPRINT1(
"SMSS: Connect back to Sb %wZ failed %lx\n", &SubsystemPort,
Status);
417 }
419
420
422 }
423 else if (CidSubsystem)
424 {
425
428 }
429
430
433}
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
NTSTATUS NTAPI NtAcceptConnectPort(OUT PHANDLE PortHandle, IN PVOID PortContext OPTIONAL, IN PPORT_MESSAGE ReplyMessage, IN BOOLEAN AcceptConnection, IN OUT PPORT_VIEW ServerView OPTIONAL, OUT PREMOTE_PORT_VIEW ClientView OPTIONAL)
NTSTATUS NTAPI NtCompleteConnectPort(IN HANDLE PortHandle)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define PROCESS_QUERY_INFORMATION
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
NTSTATUS NTAPI NtSetEvent(IN HANDLE EventHandle, OUT PLONG PreviousState OPTIONAL)
NTSTATUS NTAPI NtConnectPort(OUT PHANDLE PortHandle, IN PUNICODE_STRING PortName, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, IN OUT PPORT_VIEW ClientView OPTIONAL, IN OUT PREMOTE_PORT_VIEW ServerView OPTIONAL, OUT PULONG MaxMessageLength OPTIONAL, IN OUT PVOID ConnectionInformation OPTIONAL, IN OUT PULONG ConnectionInformationLength OPTIONAL)
struct _SMP_CLIENT_CONTEXT * PSMP_CLIENT_CONTEXT
NTSTATUS NTAPI SmpGetProcessMuSessionId(IN HANDLE ProcessHandle, OUT PULONG SessionId)
VOID NTAPI SmpDereferenceSubsystem(IN PSMP_SUBSYSTEM SubSystem)
PSMP_SUBSYSTEM NTAPI SmpLocateKnownSubSysByCid(IN PCLIENT_ID ClientId)
PSMP_SUBSYSTEM NTAPI SmpLocateKnownSubSysByType(IN ULONG MuSessionId, IN ULONG ImageType)
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
#define SECURITY_DYNAMIC_TRACKING