typedef struct _CSR_SERVER_DLL
{
ULONG Length;
- HANDLE Event;
ANSI_STRING Name;
HANDLE ServerHandle;
ULONG ServerId;
PCSR_SHUTDOWNPROCESS_CALLBACK ShutdownProcessCallback;
ULONG Unknown2[3];
} CSR_SERVER_DLL, *PCSR_SERVER_DLL;
-
+C_ASSERT(FIELD_OFFSET(CSR_SERVER_DLL, SharedSection) == 0x3C);
typedef
NTSTATUS
HANDLE BNOLinksDirectory;
HANDLE SessionObjectDirectory;
HANDLE DosDevicesDirectory;
-HANDLE CsrInitializationEvent;
SYSTEM_BASIC_INFORMATION CsrNtSysInfo;
{
NTSTATUS Status = STATUS_SUCCESS;
- /* Create the Init Event */
- Status = NtCreateEvent(&CsrInitializationEvent,
- EVENT_ALL_ACCESS,
- NULL,
- SynchronizationEvent,
- FALSE);
- if (!NT_SUCCESS(Status))
- {
- DPRINT1("CSRSRV:%s: NtCreateEvent failed (Status=%08lx)\n",
- __FUNCTION__, Status);
- return Status;
- }
-
/* Cache System Basic Information so we don't always request it */
Status = NtQuerySystemInformation(SystemBasicInformation,
&CsrNtSysInfo,
return Status;
}
- /* Finito! Signal the event */
- Status = NtSetEvent(CsrInitializationEvent, NULL);
- if (!NT_SUCCESS(Status))
- {
- DPRINT1("CSRSRV:%s: NtSetEvent failed (Status=%08lx)\n",
- __FUNCTION__, Status);
- return Status;
- }
-
- /* Close the event handle now */
- NtClose(CsrInitializationEvent);
-
/* Have us handle Hard Errors */
Status = NtSetDefaultHardErrorPort(CsrApiPort);
if (!NT_SUCCESS(Status))
/* Set up the Object */
ServerDll->Length = Size;
ServerDll->SharedSection = CsrSrvSharedSectionHeap; // Send to the server dll our shared heap pointer.
- ServerDll->Event = CsrInitializationEvent;
ServerDll->Name.Length = DllName.Length;
ServerDll->Name.MaximumLength = DllName.MaximumLength;
ServerDll->Name.Buffer = (PCHAR)(ServerDll + 1);