ReactOS  0.4.15-dev-1636-gf634010
api.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

BOOL NTAPI _UserSoundSentry (VOID)
 
 CSR_API (SrvCreateSystemThreads)
 
 CSR_API (SrvActivateDebugger)
 
 CSR_API (SrvGetThreadConsoleDesktop)
 
 CSR_API (SrvDeviceEvent)
 
VOID NTAPI UserServerHardError (IN PCSR_THREAD ThreadData, IN PHARDERROR_MSG Message)
 
 CSR_API (SrvRegisterServicesProcess)
 
 CSR_API (SrvRegisterLogonProcess)
 
ULONG NTAPI UserClientShutdown (IN PCSR_PROCESS CsrProcess, IN ULONG Flags, IN BOOLEAN FirstPhase)
 
 CSR_API (SrvExitWindowsEx)
 
 CSR_API (SrvEndTask)
 
 CSR_API (SrvLogon)
 
 CSR_API (SrvRecordShutdownReason)
 

Function Documentation

◆ _UserSoundSentry()

BOOL NTAPI _UserSoundSentry ( VOID  )

Definition at line 107 of file init.c.

108 {
109  // TODO: Do something.
110  return TRUE;
111 }
#define TRUE
Definition: types.h:120

◆ CSR_API() [1/10]

CSR_API ( SrvCreateSystemThreads  )

Definition at line 123 of file init.c.

124 {
126  if (!NT_SUCCESS(Status))
127  {
128  DPRINT1("Cannot start system thread!\n");
129  }
130 
131  return Status;
132 }
ULONG NTAPI CreateSystemThreads(PVOID pParam)
Definition: init.c:115
NTSTATUS NTAPI CsrExecServerThread(IN PVOID ThreadHandler, IN ULONG Flags)
Definition: thredsup.c:885
LONG NTSTATUS
Definition: precomp.h:26
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define DPRINT1
Definition: precomp.h:8

◆ CSR_API() [2/10]

CSR_API ( SrvActivateDebugger  )

Definition at line 135 of file init.c.

136 {
137  DPRINT1("%s not yet implemented\n", __FUNCTION__);
138  return STATUS_NOT_IMPLEMENTED;
139 }
return STATUS_NOT_IMPLEMENTED
#define DPRINT1
Definition: precomp.h:8
#define __FUNCTION__
Definition: types.h:112

◆ CSR_API() [3/10]

CSR_API ( SrvGetThreadConsoleDesktop  )

Definition at line 142 of file init.c.

143 {
145  PUSER_GET_THREAD_CONSOLE_DESKTOP GetThreadConsoleDesktopRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.GetThreadConsoleDesktopRequest;
146 
147  Status = GetThreadConsoleDesktop(GetThreadConsoleDesktopRequest->ThreadId,
148  &GetThreadConsoleDesktopRequest->ConsoleDesktop);
149  if (!NT_SUCCESS(Status))
150  {
151  DPRINT1("GetThreadConsoleDesktop(%lu) failed with Status 0x%08x\n",
152  GetThreadConsoleDesktopRequest->ThreadId, Status);
153  }
154 
155  /* Windows-compatibility: Always return success since User32 relies on this! */
156  return STATUS_SUCCESS;
157 }
LONG NTSTATUS
Definition: precomp.h:26
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
struct _USER_API_MESSAGE * PUSER_API_MESSAGE
#define DPRINT1
Definition: precomp.h:8
#define STATUS_SUCCESS
Definition: shellext.h:65
NTSTATUS NTAPI GetThreadConsoleDesktop(IN ULONG_PTR ThreadId, OUT HDESK *ConsoleDesktop)
Definition: frontendctl.c:265

◆ CSR_API() [4/10]

CSR_API ( SrvDeviceEvent  )

Definition at line 160 of file init.c.

161 {
162  DPRINT1("%s not yet implemented\n", __FUNCTION__);
163  return STATUS_NOT_IMPLEMENTED;
164 }
return STATUS_NOT_IMPLEMENTED
#define DPRINT1
Definition: precomp.h:8
#define __FUNCTION__
Definition: types.h:112

◆ CSR_API() [5/10]

CSR_API ( SrvRegisterServicesProcess  )

Definition at line 81 of file register.c.

82 {
83  PUSER_REGISTER_SERVICES_PROCESS RegisterServicesProcessRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.RegisterServicesProcessRequest;
84 
86  {
87  /* Only accept a single call */
89  }
90  else
91  {
92  ServicesProcessId = RegisterServicesProcessRequest->ProcessId;
94  return STATUS_SUCCESS;
95  }
96 }
ULONG_PTR ServicesProcessId
Definition: register.c:20
#define TRUE
Definition: types.h:120
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
static BOOLEAN ServicesProcessIdValid
Definition: register.c:19
struct _USER_API_MESSAGE * PUSER_API_MESSAGE
#define STATUS_SUCCESS
Definition: shellext.h:65

◆ CSR_API() [6/10]

CSR_API ( SrvRegisterLogonProcess  )

Definition at line 30 of file register.c.

31 {
32  PUSER_REGISTER_LOGON_PROCESS RegisterLogonProcessRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.RegisterLogonProcessRequest;
33 
34  if (RegisterLogonProcessRequest->Register)
35  {
36  if (LogonProcessId != 0)
38 
39  LogonProcessId = RegisterLogonProcessRequest->ProcessId;
40  }
41  else
42  {
43  if (ApiMessage->Header.ClientId.UniqueProcess != UlongToHandle(LogonProcessId))
44  {
45  DPRINT1("Current logon process 0x%x, can't deregister from process 0x%x\n",
46  LogonProcessId, ApiMessage->Header.ClientId.UniqueProcess);
48  }
49 
50  LogonProcessId = 0;
51  }
52 
53 #if 1 //HAAAACK. This should be done in UserClientConnect which is never called!
54 
55  /* Check if we don't have an API port yet */
56  if (CsrApiPort == NULL)
57  {
59 
60  /* Query the API port and save it globally */
62 
63  DPRINT("Giving win32k our api port\n");
64 
65  /* Inform win32k about the API port */
68  &CsrApiPort,
69  sizeof(CsrApiPort));
70  if (!NT_SUCCESS(Status))
71  {
72  return Status;
73  }
74  }
75 #endif
76 
77  return STATUS_SUCCESS;
78 }
LONG NTSTATUS
Definition: precomp.h:26
#define NtCurrentThread()
#define STATUS_NOT_LOGON_PROCESS
Definition: ntstatus.h:473
NTSTATUS NTAPI NtUserSetInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:699
#define STATUS_LOGON_SESSION_EXISTS
Definition: ntstatus.h:474
ULONG_PTR LogonProcessId
Definition: register.c:21
void DPRINT(...)
Definition: polytest.cpp:61
HANDLE CsrApiPort
Definition: connect.c:21
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define UlongToHandle(ul)
Definition: basetsd.h:97
struct _USER_API_MESSAGE * PUSER_API_MESSAGE
#define NULL
Definition: types.h:112
#define DPRINT1
Definition: precomp.h:8
#define STATUS_SUCCESS
Definition: shellext.h:65
HANDLE NTAPI CsrQueryApiPort(VOID)
Definition: api.c:1093

◆ CSR_API() [7/10]

CSR_API ( SrvExitWindowsEx  )

Definition at line 803 of file shutdown.c.

804 {
806  PUSER_EXIT_REACTOS ExitReactOSRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.ExitReactOSRequest;
807 
810  NULL,
811  0);
812  if (!NT_SUCCESS(Status))
813  {
814  DPRINT1("Failed to set thread desktop!\n");
815  return Status;
816  }
817 
818  Status = UserExitReactOS(CsrGetClientThread(), ExitReactOSRequest->Flags);
819  ExitReactOSRequest->Success = NT_SUCCESS(Status);
820  ExitReactOSRequest->LastError = GetLastError();
821 
823 
824  return Status;
825 }
#define CsrGetClientThread()
Definition: csrsrv.h:77
DWORD LastError
Definition: winmsg.h:50
LONG NTSTATUS
Definition: precomp.h:26
#define NtCurrentThread()
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1044
static NTSTATUS FASTCALL UserExitReactOS(PCSR_THREAD CsrThread, UINT Flags)
Definition: shutdown.c:610
NTSTATUS NTAPI NtUserSetInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:699
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
struct _USER_API_MESSAGE * PUSER_API_MESSAGE
#define NULL
Definition: types.h:112
#define DPRINT1
Definition: precomp.h:8

◆ CSR_API() [8/10]

CSR_API ( SrvEndTask  )

Definition at line 828 of file shutdown.c.

829 {
830  PUSER_END_TASK EndTaskRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.EndTaskRequest;
832 
833  // FIXME: This is HACK-plemented!!
834  DPRINT1("SrvEndTask is HACKPLEMENTED!!\n");
835 
838  NULL,
839  0);
840  if (!NT_SUCCESS(Status))
841  {
842  DPRINT1("Failed to set thread desktop!\n");
843  return Status;
844  }
845 
846  SendMessageW(EndTaskRequest->WndHandle, WM_CLOSE, 0, 0);
847  // PostMessageW(EndTaskRequest->WndHandle, WM_CLOSE, 0, 0);
848 
849  if (IsWindow(EndTaskRequest->WndHandle))
850  {
851  if (EndTaskRequest->Force)
852  {
853  EndTaskRequest->Success = DestroyWindow(EndTaskRequest->WndHandle);
854  EndTaskRequest->LastError = GetLastError();
855  }
856  else
857  {
858  EndTaskRequest->Success = FALSE;
859  }
860  }
861  else
862  {
863  EndTaskRequest->Success = TRUE;
864  EndTaskRequest->LastError = ERROR_SUCCESS;
865  }
866 
868 
869  return STATUS_SUCCESS;
870 }
BOOL Force
Definition: winmsg.h:59
#define ERROR_SUCCESS
Definition: deptool.c:10
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define TRUE
Definition: types.h:120
LONG NTSTATUS
Definition: precomp.h:26
#define NtCurrentThread()
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1044
BOOL Success
Definition: winmsg.h:60
HWND WndHandle
Definition: winmsg.h:58
BOOL WINAPI DestroyWindow(_In_ HWND)
NTSTATUS NTAPI NtUserSetInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:699
#define FALSE
Definition: types.h:117
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define WM_CLOSE
Definition: winuser.h:1603
struct _USER_API_MESSAGE * PUSER_API_MESSAGE
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define NULL
Definition: types.h:112
#define DPRINT1
Definition: precomp.h:8
DWORD LastError
Definition: winmsg.h:57
#define STATUS_SUCCESS
Definition: shellext.h:65

◆ CSR_API() [9/10]

CSR_API ( SrvLogon  )

Definition at line 167 of file init.c.

168 {
169  PUSER_LOGON LogonRequest = &((PUSER_API_MESSAGE)ApiMessage)->Data.LogonRequest;
170 
171  DPRINT1("We are logged %s\n", LogonRequest->IsLogon ? "on" : "off");
172 
173  /* Impersonate the caller in order to retrieve settings in its context */
175  return STATUS_UNSUCCESSFUL;
176 
178 
179  /* We are done */
180  CsrRevertToSelf();
181  return STATUS_SUCCESS;
182 }
BOOL IsLogon
Definition: winmsg.h:65
BOOLEAN NTAPI CsrRevertToSelf(VOID)
Definition: procsup.c:1056
VOID FASTCALL GetTimeouts(IN PSHUTDOWN_SETTINGS ShutdownSettings)
Definition: init.c:87
struct _USER_API_MESSAGE * PUSER_API_MESSAGE
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
SHUTDOWN_SETTINGS ShutdownSettings
Definition: init.c:24
#define NULL
Definition: types.h:112
#define DPRINT1
Definition: precomp.h:8
BOOLEAN NTAPI CsrImpersonateClient(IN PCSR_THREAD CsrThread)
Definition: procsup.c:931
#define STATUS_SUCCESS
Definition: shellext.h:65

◆ CSR_API() [10/10]

CSR_API ( SrvRecordShutdownReason  )

Definition at line 873 of file shutdown.c.

874 {
875  DPRINT1("%s not yet implemented\n", __FUNCTION__);
876  return STATUS_NOT_IMPLEMENTED;
877 }
return STATUS_NOT_IMPLEMENTED
#define DPRINT1
Definition: precomp.h:8
#define __FUNCTION__
Definition: types.h:112

◆ UserClientShutdown()

ULONG NTAPI UserClientShutdown ( IN PCSR_PROCESS  CsrProcess,
IN ULONG  Flags,
IN BOOLEAN  FirstPhase 
)

Definition at line 732 of file shutdown.c.

735 {
736  ULONG result;
737 
738  DPRINT("UserClientShutdown(0x%p, 0x%x, %s) - [0x%x, 0x%x], ShutdownFlags: %lu\n",
739  CsrProcess, Flags, FirstPhase ? "FirstPhase" : "LastPhase",
740  CsrProcess->ClientId.UniqueProcess, CsrProcess->ClientId.UniqueThread,
741  CsrProcess->ShutdownFlags);
742 
743  /*
744  * Check for process validity
745  */
746 
747  /* Do not kill system processes when a user is logging off */
748  if ((Flags & EWX_SHUTDOWN) == EWX_LOGOFF &&
750  {
751  DPRINT("Do not kill a system process in a logoff request!\n");
753  }
754 
755  /* Do not kill Winlogon */
756  if (CsrProcess->ClientId.UniqueProcess == UlongToHandle(LogonProcessId))
757  {
758  DPRINT("Not killing Winlogon; CsrProcess->ShutdownFlags = %lu\n",
759  CsrProcess->ShutdownFlags);
760 
761  /* Returning CsrShutdownCsrProcess means that we handled this process by doing nothing */
762  /* This will mark winlogon as processed so consrv won't be notified again for it */
764  return CsrShutdownCsrProcess;
765  }
766 
767  /* Notify the process for shutdown if needed */
770  {
772  DPRINT1("Process 0x%x aborted shutdown\n", CsrProcess->ClientId.UniqueProcess);
773  return result;
774  }
775 
776  /* Terminate this process */
777 #if DBG
778  {
780  if (!GetProcessImageFileNameW(CsrProcess->ProcessHandle, buffer, MAX_PATH))
781  {
782  DPRINT1("Terminating process %x\n", CsrProcess->ClientId.UniqueProcess);
783  }
784  else
785  {
786  DPRINT1("Terminating process %x (%S)\n", CsrProcess->ClientId.UniqueProcess, buffer);
787  }
788  }
789 #endif
790  NtTerminateProcess(CsrProcess->ProcessHandle, 0);
791 
793 
794  /* We are done */
796  return CsrShutdownCsrProcess;
797 }
#define SHUTDOWN_OTHERCONTEXT
Definition: shutdown.c:28
static ULONG NotifyUserProcessForShutdown(PCSR_PROCESS CsrProcess, PSHUTDOWN_SETTINGS ShutdownSettings, UINT Flags)
Definition: shutdown.c:488
GLuint64EXT * result
Definition: glext.h:11304
GLuint buffer
Definition: glext.h:5915
VOID NTAPI CsrDereferenceProcess(IN PCSR_PROCESS CsrProcess)
Definition: procsup.c:690
PKPROCESS CsrProcess
Definition: videoprt.c:39
#define EWX_LOGOFF
Definition: winuser.h:631
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
#define EWX_SHUTDOWN
Definition: winuser.h:634
ULONG ProcessTerminateTimeout
Definition: winsrv.h:52
ULONG_PTR LogonProcessId
Definition: register.c:21
void DPRINT(...)
Definition: polytest.cpp:61
#define SHUTDOWN_SYSTEMCONTEXT
Definition: shutdown.c:27
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define UlongToHandle(ul)
Definition: basetsd.h:97
#define MAX_PATH
Definition: compat.h:34
SHUTDOWN_SETTINGS ShutdownSettings
Definition: init.c:24
#define DPRINT1
Definition: precomp.h:8
DWORD WINAPI GetProcessImageFileNameW(HANDLE hProcess, LPWSTR lpImageFileName, DWORD nSize)
Definition: psapi.c:1163
unsigned int ULONG
Definition: retypes.h:1
NTSTATUS NTAPI NtTerminateProcess(HANDLE ProcessHandle, LONG ExitStatus)

Referenced by CSR_SERVER_DLL_INIT().

◆ UserServerHardError()

VOID NTAPI UserServerHardError ( IN PCSR_THREAD  ThreadData,
IN PHARDERROR_MSG  Message 
)

Definition at line 1082 of file harderror.c.

1085 {
1086  ULONG ErrorMode;
1087  UINT dwType = 0;
1089  UNICODE_STRING TextU, CaptionU;
1090  WCHAR LocalTextBuffer[256];
1091  WCHAR LocalCaptionBuffer[256];
1092  NTSTATUS Status;
1093 
1094  ASSERT(ThreadData->Process != NULL);
1095 
1096  /* Default to not handled */
1097  Message->Response = ResponseNotHandled;
1098 
1099  /* Make sure we don't have too many parameters */
1100  if (Message->NumberOfParameters > MAXIMUM_HARDERROR_PARAMETERS)
1101  {
1102  // NOTE: Windows just fails (STATUS_INVALID_PARAMETER) & returns ResponseNotHandled.
1103  DPRINT1("Invalid NumberOfParameters = %d\n", Message->NumberOfParameters);
1104  Message->NumberOfParameters = MAXIMUM_HARDERROR_PARAMETERS;
1105  }
1106  if (Message->ValidResponseOptions > OptionCancelTryContinue)
1107  {
1108  DPRINT1("Unknown ValidResponseOptions = %d\n", Message->ValidResponseOptions);
1109  return; // STATUS_INVALID_PARAMETER;
1110  }
1111  if (Message->Status == STATUS_SERVICE_NOTIFICATION)
1112  {
1113  if (Message->NumberOfParameters < 3)
1114  {
1115  DPRINT1("Invalid NumberOfParameters = %d for STATUS_SERVICE_NOTIFICATION\n",
1116  Message->NumberOfParameters);
1117  return; // STATUS_INVALID_PARAMETER;
1118  }
1119  // (Message->UnicodeStringParameterMask & 0x3)
1120  }
1121 
1124  NULL,
1125  0);
1126  if (!NT_SUCCESS(Status))
1127  {
1128  DPRINT1("Failed to set thread desktop!\n");
1129  return;
1130  }
1131 
1132  /* Re-initialize the hard errors cache */
1134 
1135  /* Format the message caption and text */
1136  RtlInitEmptyUnicodeString(&TextU, LocalTextBuffer, sizeof(LocalTextBuffer));
1137  RtlInitEmptyUnicodeString(&CaptionU, LocalCaptionBuffer, sizeof(LocalCaptionBuffer));
1138  UserpFormatMessages(&TextU, &CaptionU, &dwType, &Timeout, Message);
1139 
1140  /* Log the hard error message */
1141  UserpLogHardError(&TextU, &CaptionU);
1142 
1143  /* Display a hard error popup depending on the current ErrorMode */
1144 
1145  /* Query the error mode value */
1146  ErrorMode = GetRegInt(L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Windows",
1147  L"ErrorMode", 0);
1148 
1149  if (Message->Status != STATUS_SERVICE_NOTIFICATION && ErrorMode != 0)
1150  {
1151  /* Returns OK for the hard error */
1152  Message->Response = ResponseOk;
1153  goto Quit;
1154  }
1155 
1156  if (Message->ValidResponseOptions == OptionOkNoWait)
1157  {
1158  /* Display the balloon */
1159  Message->Response = ResponseOk;
1160  if (UserpShowInformationBalloon(&TextU,
1161  &CaptionU,
1162  dwType,
1163  Message))
1164  {
1165  Message->Response = ResponseOk;
1166  goto Quit;
1167  }
1168  }
1169 
1170  /* Display the message box */
1171  Message->Response = UserpMessageBox(&TextU,
1172  &CaptionU,
1173  dwType,
1174  Timeout);
1175 
1176 Quit:
1177  /* Free the strings if they have been reallocated */
1178  if (TextU.Buffer != LocalTextBuffer)
1179  RtlFreeUnicodeString(&TextU);
1180  if (CaptionU.Buffer != LocalCaptionBuffer)
1181  RtlFreeUnicodeString(&CaptionU);
1182 
1184 
1185  return;
1186 }
static VOID UserpFormatMessages(IN OUT PUNICODE_STRING TextStringU, IN OUT PUNICODE_STRING CaptionStringU, OUT PUINT pdwType, OUT PULONG pdwTimeout, IN PHARDERROR_MSG Message)
Definition: harderror.c:367
LONG NTSTATUS
Definition: precomp.h:26
#define NtCurrentThread()
NTSTATUS NTAPI NtUserSetInformationThread(IN HANDLE ThreadHandle, IN USERTHREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength)
Definition: ntstubs.c:699
Status
Definition: gdiplustypes.h:24
#define ASSERT(a)
Definition: mode.c:45
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
CHAR Message[80]
Definition: alive.c:5
static const WCHAR L[]
Definition: oid.c:1250
static ULONG Timeout
Definition: ping.c:61
static BOOL UserpShowInformationBalloon(IN PUNICODE_STRING TextStringU, IN PUNICODE_STRING CaptionStringU, IN UINT Type, IN PHARDERROR_MSG Message)
Definition: harderror.c:933
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
#define DPRINT1
Definition: precomp.h:8
VOID UserInitHardErrorsCache(VOID)
Definition: harderror.c:1189
unsigned int ULONG
Definition: retypes.h:1
static ULONG GetRegInt(IN PCWSTR KeyName, IN PCWSTR ValueName, IN ULONG DefaultValue)
Definition: harderror.c:885
static VOID UserpLogHardError(IN PUNICODE_STRING TextStringU, IN PUNICODE_STRING CaptionStringU)
Definition: harderror.c:1045
#define MAXIMUM_HARDERROR_PARAMETERS
Definition: extypes.h:145
#define STATUS_SERVICE_NOTIFICATION
Definition: ntstatus.h:138
#define INFINITE
Definition: serial.h:102
static HARDERROR_RESPONSE UserpMessageBox(IN PUNICODE_STRING TextStringU, IN PUNICODE_STRING CaptionStringU, IN UINT Type, IN ULONG Timeout)
Definition: harderror.c:1008

Referenced by CSR_SERVER_DLL_INIT().