mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 00:20:34 +00:00
[CSRLIB] Add SAL annotations to the CSR client functions.
This commit is contained in:
parent
d2aeaba5f8
commit
8cd01eaf25
4 changed files with 121 additions and 90 deletions
|
@ -1,10 +1,9 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Client/Server Runtime SubSystem
|
||||
* FILE: include/reactos/subsys/csr/csr.h
|
||||
* PURPOSE: Public definitions for CSR Clients
|
||||
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
|
||||
* Hermes Belusca-Maito (hermes.belusca@sfr.fr)
|
||||
* PROJECT: ReactOS Client/Server Runtime SubSystem
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Public definitions for CSR Clients
|
||||
* COPYRIGHT: Copyright 2005 Alex Ionescu <alex@relsoft.net>
|
||||
* Copyright 2012-2022 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
|
||||
*/
|
||||
|
||||
#ifndef _CSR_H
|
||||
|
@ -14,71 +13,88 @@
|
|||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientConnectToServer(IN PWSTR ObjectDirectory,
|
||||
IN ULONG ServerId,
|
||||
IN PVOID ConnectionInfo,
|
||||
IN OUT PULONG ConnectionInfoSize,
|
||||
OUT PBOOLEAN ServerToServerCall);
|
||||
CsrClientConnectToServer(
|
||||
_In_ PCWSTR ObjectDirectory,
|
||||
_In_ ULONG ServerId,
|
||||
_In_ PVOID ConnectionInfo,
|
||||
_Inout_ PULONG ConnectionInfoSize,
|
||||
_Out_ PBOOLEAN ServerToServerCall);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL,
|
||||
IN CSR_API_NUMBER ApiNumber,
|
||||
IN ULONG DataLength);
|
||||
CsrClientCallServer(
|
||||
_Inout_ PCSR_API_MESSAGE ApiMessage,
|
||||
_Inout_opt_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_In_ CSR_API_NUMBER ApiNumber,
|
||||
_In_ ULONG DataLength);
|
||||
|
||||
PCSR_CAPTURE_BUFFER
|
||||
NTAPI
|
||||
CsrAllocateCaptureBuffer(IN ULONG ArgumentCount,
|
||||
IN ULONG BufferSize);
|
||||
CsrAllocateCaptureBuffer(
|
||||
_In_ ULONG ArgumentCount,
|
||||
_In_ ULONG BufferSize);
|
||||
|
||||
ULONG
|
||||
NTAPI
|
||||
CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN ULONG MessageLength,
|
||||
OUT PVOID* CapturedData);
|
||||
CsrAllocateMessagePointer(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_In_ ULONG MessageLength,
|
||||
_Out_ PVOID* CapturedData);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN PVOID MessageBuffer OPTIONAL,
|
||||
IN ULONG MessageLength,
|
||||
OUT PVOID* CapturedData);
|
||||
CsrCaptureMessageBuffer(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_In_opt_ PVOID MessageBuffer,
|
||||
_In_ ULONG MessageLength,
|
||||
_Out_ PVOID* CapturedData);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer);
|
||||
CsrFreeCaptureBuffer(
|
||||
_In_ _Frees_ptr_ PCSR_CAPTURE_BUFFER CaptureBuffer);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN PCSTR String OPTIONAL,
|
||||
IN ULONG StringLength,
|
||||
IN ULONG MaximumLength,
|
||||
OUT PSTRING CapturedString);
|
||||
CsrCaptureMessageString(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_In_opt_ PCSTR String,
|
||||
_In_ ULONG StringLength,
|
||||
_In_ ULONG MaximumLength,
|
||||
_Out_ PSTRING CapturedString);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageUnicodeStringInPlace(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_Inout_ PUNICODE_STRING String);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCaptureMessageMultiUnicodeStringsInPlace(OUT PCSR_CAPTURE_BUFFER* CaptureBuffer,
|
||||
IN ULONG StringsCount,
|
||||
IN PUNICODE_STRING* MessageStrings);
|
||||
CsrCaptureMessageMultiUnicodeStringsInPlace(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER* CaptureBuffer,
|
||||
_In_ ULONG StringsCount,
|
||||
_In_ PUNICODE_STRING* MessageStrings);
|
||||
|
||||
PLARGE_INTEGER
|
||||
NTAPI
|
||||
CsrCaptureTimeout(IN ULONG Milliseconds,
|
||||
OUT PLARGE_INTEGER Timeout);
|
||||
CsrCaptureTimeout(
|
||||
_In_ ULONG Milliseconds,
|
||||
_Out_ PLARGE_INTEGER Timeout);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProbeForRead(IN PVOID Address,
|
||||
IN ULONG Length,
|
||||
IN ULONG Alignment);
|
||||
CsrProbeForRead(
|
||||
_In_ PVOID Address,
|
||||
_In_ ULONG Length,
|
||||
_In_ ULONG Alignment);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProbeForWrite(IN PVOID Address,
|
||||
IN ULONG Length,
|
||||
IN ULONG Alignment);
|
||||
CsrProbeForWrite(
|
||||
_In_ PVOID Address,
|
||||
_In_ ULONG Length,
|
||||
_In_ ULONG Alignment);
|
||||
|
||||
HANDLE
|
||||
NTAPI
|
||||
|
@ -94,8 +110,9 @@ CsrIdentifyAlertableThread(VOID);
|
|||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSetPriorityClass(IN HANDLE Process,
|
||||
IN OUT PULONG PriorityClass);
|
||||
CsrSetPriorityClass(
|
||||
_In_ HANDLE Process,
|
||||
_Inout_ PULONG PriorityClass);
|
||||
|
||||
#endif // _CSR_H
|
||||
|
||||
|
|
|
@ -64,8 +64,9 @@ CsrIdentifyAlertableThread(VOID)
|
|||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrSetPriorityClass(IN HANDLE Process,
|
||||
IN OUT PULONG PriorityClass)
|
||||
CsrSetPriorityClass(
|
||||
_In_ HANDLE Process,
|
||||
_Inout_ PULONG PriorityClass)
|
||||
{
|
||||
#if (NTDDI_VERSION < NTDDI_WS03)
|
||||
NTSTATUS Status;
|
||||
|
|
|
@ -20,9 +20,10 @@
|
|||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProbeForRead(IN PVOID Address,
|
||||
IN ULONG Length,
|
||||
IN ULONG Alignment)
|
||||
CsrProbeForRead(
|
||||
_In_ PVOID Address,
|
||||
_In_ ULONG Length,
|
||||
_In_ ULONG Alignment)
|
||||
{
|
||||
volatile UCHAR *Pointer;
|
||||
UCHAR Data;
|
||||
|
@ -52,9 +53,10 @@ CsrProbeForRead(IN PVOID Address,
|
|||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrProbeForWrite(IN PVOID Address,
|
||||
IN ULONG Length,
|
||||
IN ULONG Alignment)
|
||||
CsrProbeForWrite(
|
||||
_In_ PVOID Address,
|
||||
_In_ ULONG Length,
|
||||
_In_ ULONG Alignment)
|
||||
{
|
||||
volatile UCHAR *Pointer;
|
||||
|
||||
|
@ -82,8 +84,9 @@ CsrProbeForWrite(IN PVOID Address,
|
|||
*/
|
||||
PCSR_CAPTURE_BUFFER
|
||||
NTAPI
|
||||
CsrAllocateCaptureBuffer(IN ULONG ArgumentCount,
|
||||
IN ULONG BufferSize)
|
||||
CsrAllocateCaptureBuffer(
|
||||
_In_ ULONG ArgumentCount,
|
||||
_In_ ULONG BufferSize)
|
||||
{
|
||||
PCSR_CAPTURE_BUFFER CaptureBuffer;
|
||||
ULONG OffsetsArraySize;
|
||||
|
@ -146,9 +149,10 @@ CsrAllocateCaptureBuffer(IN ULONG ArgumentCount,
|
|||
*/
|
||||
ULONG
|
||||
NTAPI
|
||||
CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN ULONG MessageLength,
|
||||
OUT PVOID* CapturedData)
|
||||
CsrAllocateMessagePointer(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_In_ ULONG MessageLength,
|
||||
_Out_ PVOID* CapturedData)
|
||||
{
|
||||
if (MessageLength == 0)
|
||||
{
|
||||
|
@ -182,10 +186,11 @@ CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
|||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN PVOID MessageBuffer OPTIONAL,
|
||||
IN ULONG MessageLength,
|
||||
OUT PVOID* CapturedData)
|
||||
CsrCaptureMessageBuffer(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_In_opt_ PVOID MessageBuffer,
|
||||
_In_ ULONG MessageLength,
|
||||
_Out_ PVOID* CapturedData)
|
||||
{
|
||||
/* Simply allocate a message pointer in the buffer */
|
||||
CsrAllocateMessagePointer(CaptureBuffer, MessageLength, CapturedData);
|
||||
|
@ -202,7 +207,8 @@ CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
|||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer)
|
||||
CsrFreeCaptureBuffer(
|
||||
_In_ _Frees_ptr_ PCSR_CAPTURE_BUFFER CaptureBuffer)
|
||||
{
|
||||
/* Free it from the heap */
|
||||
RtlFreeHeap(CsrPortHeap, 0, CaptureBuffer);
|
||||
|
@ -213,11 +219,12 @@ CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer)
|
|||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN PCSTR String OPTIONAL,
|
||||
IN ULONG StringLength,
|
||||
IN ULONG MaximumLength,
|
||||
OUT PSTRING CapturedString)
|
||||
CsrCaptureMessageString(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_In_opt_ PCSTR String,
|
||||
_In_ ULONG StringLength,
|
||||
_In_ ULONG MaximumLength,
|
||||
_Out_ PSTRING CapturedString)
|
||||
{
|
||||
ASSERT(CapturedString != NULL);
|
||||
|
||||
|
@ -259,9 +266,11 @@ CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
|||
CapturedString->Buffer[CapturedString->Length] = ANSI_NULL;
|
||||
}
|
||||
|
||||
static VOID
|
||||
CsrCaptureMessageUnicodeStringInPlace(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
IN PUNICODE_STRING String)
|
||||
VOID
|
||||
NTAPI
|
||||
CsrCaptureMessageUnicodeStringInPlace(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_Inout_ PUNICODE_STRING String)
|
||||
{
|
||||
ASSERT(String != NULL);
|
||||
|
||||
|
@ -282,9 +291,10 @@ CsrCaptureMessageUnicodeStringInPlace(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
|
|||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrCaptureMessageMultiUnicodeStringsInPlace(OUT PCSR_CAPTURE_BUFFER* CaptureBuffer,
|
||||
IN ULONG StringsCount,
|
||||
IN PUNICODE_STRING* MessageStrings)
|
||||
CsrCaptureMessageMultiUnicodeStringsInPlace(
|
||||
_Inout_ PCSR_CAPTURE_BUFFER* CaptureBuffer,
|
||||
_In_ ULONG StringsCount,
|
||||
_In_ PUNICODE_STRING* MessageStrings)
|
||||
{
|
||||
ULONG Count;
|
||||
|
||||
|
@ -328,8 +338,9 @@ CsrCaptureMessageMultiUnicodeStringsInPlace(OUT PCSR_CAPTURE_BUFFER* CaptureBuff
|
|||
*/
|
||||
PLARGE_INTEGER
|
||||
NTAPI
|
||||
CsrCaptureTimeout(IN ULONG Milliseconds,
|
||||
OUT PLARGE_INTEGER Timeout)
|
||||
CsrCaptureTimeout(
|
||||
_In_ ULONG Milliseconds,
|
||||
_Out_ PLARGE_INTEGER Timeout)
|
||||
{
|
||||
/* Validate the time */
|
||||
if (Milliseconds == -1) return NULL;
|
||||
|
|
|
@ -31,16 +31,17 @@ ULONG_PTR CsrPortMemoryDelta;
|
|||
BOOLEAN InsideCsrProcess = FALSE;
|
||||
|
||||
typedef NTSTATUS
|
||||
(NTAPI *PCSR_SERVER_API_ROUTINE)(IN PPORT_MESSAGE Request,
|
||||
IN PPORT_MESSAGE Reply);
|
||||
(NTAPI *PCSR_SERVER_API_ROUTINE)(
|
||||
_In_ PCSR_API_MESSAGE Request,
|
||||
_Inout_ PCSR_API_MESSAGE Reply);
|
||||
|
||||
PCSR_SERVER_API_ROUTINE CsrServerApiRoutine;
|
||||
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrpConnectToServer(IN PWSTR ObjectDirectory)
|
||||
static NTSTATUS
|
||||
CsrpConnectToServer(
|
||||
_In_ PCWSTR ObjectDirectory)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
SIZE_T PortNameLength;
|
||||
|
@ -198,11 +199,12 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory)
|
|||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientConnectToServer(IN PWSTR ObjectDirectory,
|
||||
IN ULONG ServerId,
|
||||
IN PVOID ConnectionInfo,
|
||||
IN OUT PULONG ConnectionInfoSize,
|
||||
OUT PBOOLEAN ServerToServerCall)
|
||||
CsrClientConnectToServer(
|
||||
_In_ PCWSTR ObjectDirectory,
|
||||
_In_ ULONG ServerId,
|
||||
_In_ PVOID ConnectionInfo,
|
||||
_Inout_ PULONG ConnectionInfoSize,
|
||||
_Out_ PBOOLEAN ServerToServerCall)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PIMAGE_NT_HEADERS NtHeader;
|
||||
|
@ -367,10 +369,11 @@ C_ASSERT((sizeof(TEST) - sizeof(TEST_EMBEDDED)) != FIELD_OFFSET(TEST, Three));
|
|||
*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
|
||||
IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL,
|
||||
IN CSR_API_NUMBER ApiNumber,
|
||||
IN ULONG DataLength)
|
||||
CsrClientCallServer(
|
||||
_Inout_ PCSR_API_MESSAGE ApiMessage,
|
||||
_Inout_opt_ PCSR_CAPTURE_BUFFER CaptureBuffer,
|
||||
_In_ CSR_API_NUMBER ApiNumber,
|
||||
_In_ ULONG DataLength)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
|
||||
|
@ -484,8 +487,7 @@ CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
|
|||
ApiMessage->Header.ClientId = NtCurrentTeb()->ClientId;
|
||||
|
||||
/* Do a direct call */
|
||||
Status = CsrServerApiRoutine(&ApiMessage->Header,
|
||||
&ApiMessage->Header);
|
||||
Status = CsrServerApiRoutine(ApiMessage, ApiMessage);
|
||||
|
||||
/* Check for success */
|
||||
if (!NT_SUCCESS(Status))
|
||||
|
|
Loading…
Reference in a new issue