[CSRLIB] Add SAL annotations to the CSR client functions.

This commit is contained in:
Hermès Bélusca-Maïto 2022-10-23 03:09:41 +02:00
parent d2aeaba5f8
commit 8cd01eaf25
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
4 changed files with 121 additions and 90 deletions

View file

@ -1,10 +1,9 @@
/* /*
* COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS Client/Server Runtime SubSystem
* PROJECT: ReactOS Client/Server Runtime SubSystem * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
* FILE: include/reactos/subsys/csr/csr.h * PURPOSE: Public definitions for CSR Clients
* PURPOSE: Public definitions for CSR Clients * COPYRIGHT: Copyright 2005 Alex Ionescu <alex@relsoft.net>
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) * Copyright 2012-2022 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
* Hermes Belusca-Maito (hermes.belusca@sfr.fr)
*/ */
#ifndef _CSR_H #ifndef _CSR_H
@ -14,71 +13,88 @@
NTSTATUS NTSTATUS
NTAPI NTAPI
CsrClientConnectToServer(IN PWSTR ObjectDirectory, CsrClientConnectToServer(
IN ULONG ServerId, _In_ PCWSTR ObjectDirectory,
IN PVOID ConnectionInfo, _In_ ULONG ServerId,
IN OUT PULONG ConnectionInfoSize, _In_ PVOID ConnectionInfo,
OUT PBOOLEAN ServerToServerCall); _Inout_ PULONG ConnectionInfoSize,
_Out_ PBOOLEAN ServerToServerCall);
NTSTATUS NTSTATUS
NTAPI NTAPI
CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage, CsrClientCallServer(
IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL, _Inout_ PCSR_API_MESSAGE ApiMessage,
IN CSR_API_NUMBER ApiNumber, _Inout_opt_ PCSR_CAPTURE_BUFFER CaptureBuffer,
IN ULONG DataLength); _In_ CSR_API_NUMBER ApiNumber,
_In_ ULONG DataLength);
PCSR_CAPTURE_BUFFER PCSR_CAPTURE_BUFFER
NTAPI NTAPI
CsrAllocateCaptureBuffer(IN ULONG ArgumentCount, CsrAllocateCaptureBuffer(
IN ULONG BufferSize); _In_ ULONG ArgumentCount,
_In_ ULONG BufferSize);
ULONG ULONG
NTAPI NTAPI
CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, CsrAllocateMessagePointer(
IN ULONG MessageLength, _Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
OUT PVOID* CapturedData); _In_ ULONG MessageLength,
_Out_ PVOID* CapturedData);
VOID VOID
NTAPI NTAPI
CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, CsrCaptureMessageBuffer(
IN PVOID MessageBuffer OPTIONAL, _Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
IN ULONG MessageLength, _In_opt_ PVOID MessageBuffer,
OUT PVOID* CapturedData); _In_ ULONG MessageLength,
_Out_ PVOID* CapturedData);
VOID VOID
NTAPI NTAPI
CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer); CsrFreeCaptureBuffer(
_In_ _Frees_ptr_ PCSR_CAPTURE_BUFFER CaptureBuffer);
VOID VOID
NTAPI NTAPI
CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, CsrCaptureMessageString(
IN PCSTR String OPTIONAL, _Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
IN ULONG StringLength, _In_opt_ PCSTR String,
IN ULONG MaximumLength, _In_ ULONG StringLength,
OUT PSTRING CapturedString); _In_ ULONG MaximumLength,
_Out_ PSTRING CapturedString);
VOID
NTAPI
CsrCaptureMessageUnicodeStringInPlace(
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
_Inout_ PUNICODE_STRING String);
NTSTATUS NTSTATUS
NTAPI NTAPI
CsrCaptureMessageMultiUnicodeStringsInPlace(OUT PCSR_CAPTURE_BUFFER* CaptureBuffer, CsrCaptureMessageMultiUnicodeStringsInPlace(
IN ULONG StringsCount, _Inout_ PCSR_CAPTURE_BUFFER* CaptureBuffer,
IN PUNICODE_STRING* MessageStrings); _In_ ULONG StringsCount,
_In_ PUNICODE_STRING* MessageStrings);
PLARGE_INTEGER PLARGE_INTEGER
NTAPI NTAPI
CsrCaptureTimeout(IN ULONG Milliseconds, CsrCaptureTimeout(
OUT PLARGE_INTEGER Timeout); _In_ ULONG Milliseconds,
_Out_ PLARGE_INTEGER Timeout);
VOID VOID
NTAPI NTAPI
CsrProbeForRead(IN PVOID Address, CsrProbeForRead(
IN ULONG Length, _In_ PVOID Address,
IN ULONG Alignment); _In_ ULONG Length,
_In_ ULONG Alignment);
VOID VOID
NTAPI NTAPI
CsrProbeForWrite(IN PVOID Address, CsrProbeForWrite(
IN ULONG Length, _In_ PVOID Address,
IN ULONG Alignment); _In_ ULONG Length,
_In_ ULONG Alignment);
HANDLE HANDLE
NTAPI NTAPI
@ -94,8 +110,9 @@ CsrIdentifyAlertableThread(VOID);
NTSTATUS NTSTATUS
NTAPI NTAPI
CsrSetPriorityClass(IN HANDLE Process, CsrSetPriorityClass(
IN OUT PULONG PriorityClass); _In_ HANDLE Process,
_Inout_ PULONG PriorityClass);
#endif // _CSR_H #endif // _CSR_H

View file

@ -64,8 +64,9 @@ CsrIdentifyAlertableThread(VOID)
*/ */
NTSTATUS NTSTATUS
NTAPI NTAPI
CsrSetPriorityClass(IN HANDLE Process, CsrSetPriorityClass(
IN OUT PULONG PriorityClass) _In_ HANDLE Process,
_Inout_ PULONG PriorityClass)
{ {
#if (NTDDI_VERSION < NTDDI_WS03) #if (NTDDI_VERSION < NTDDI_WS03)
NTSTATUS Status; NTSTATUS Status;

View file

@ -20,9 +20,10 @@
*/ */
VOID VOID
NTAPI NTAPI
CsrProbeForRead(IN PVOID Address, CsrProbeForRead(
IN ULONG Length, _In_ PVOID Address,
IN ULONG Alignment) _In_ ULONG Length,
_In_ ULONG Alignment)
{ {
volatile UCHAR *Pointer; volatile UCHAR *Pointer;
UCHAR Data; UCHAR Data;
@ -52,9 +53,10 @@ CsrProbeForRead(IN PVOID Address,
*/ */
VOID VOID
NTAPI NTAPI
CsrProbeForWrite(IN PVOID Address, CsrProbeForWrite(
IN ULONG Length, _In_ PVOID Address,
IN ULONG Alignment) _In_ ULONG Length,
_In_ ULONG Alignment)
{ {
volatile UCHAR *Pointer; volatile UCHAR *Pointer;
@ -82,8 +84,9 @@ CsrProbeForWrite(IN PVOID Address,
*/ */
PCSR_CAPTURE_BUFFER PCSR_CAPTURE_BUFFER
NTAPI NTAPI
CsrAllocateCaptureBuffer(IN ULONG ArgumentCount, CsrAllocateCaptureBuffer(
IN ULONG BufferSize) _In_ ULONG ArgumentCount,
_In_ ULONG BufferSize)
{ {
PCSR_CAPTURE_BUFFER CaptureBuffer; PCSR_CAPTURE_BUFFER CaptureBuffer;
ULONG OffsetsArraySize; ULONG OffsetsArraySize;
@ -146,9 +149,10 @@ CsrAllocateCaptureBuffer(IN ULONG ArgumentCount,
*/ */
ULONG ULONG
NTAPI NTAPI
CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, CsrAllocateMessagePointer(
IN ULONG MessageLength, _Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
OUT PVOID* CapturedData) _In_ ULONG MessageLength,
_Out_ PVOID* CapturedData)
{ {
if (MessageLength == 0) if (MessageLength == 0)
{ {
@ -182,10 +186,11 @@ CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
*/ */
VOID VOID
NTAPI NTAPI
CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, CsrCaptureMessageBuffer(
IN PVOID MessageBuffer OPTIONAL, _Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
IN ULONG MessageLength, _In_opt_ PVOID MessageBuffer,
OUT PVOID* CapturedData) _In_ ULONG MessageLength,
_Out_ PVOID* CapturedData)
{ {
/* Simply allocate a message pointer in the buffer */ /* Simply allocate a message pointer in the buffer */
CsrAllocateMessagePointer(CaptureBuffer, MessageLength, CapturedData); CsrAllocateMessagePointer(CaptureBuffer, MessageLength, CapturedData);
@ -202,7 +207,8 @@ CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
*/ */
VOID VOID
NTAPI NTAPI
CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer) CsrFreeCaptureBuffer(
_In_ _Frees_ptr_ PCSR_CAPTURE_BUFFER CaptureBuffer)
{ {
/* Free it from the heap */ /* Free it from the heap */
RtlFreeHeap(CsrPortHeap, 0, CaptureBuffer); RtlFreeHeap(CsrPortHeap, 0, CaptureBuffer);
@ -213,11 +219,12 @@ CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer)
*/ */
VOID VOID
NTAPI NTAPI
CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, CsrCaptureMessageString(
IN PCSTR String OPTIONAL, _Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
IN ULONG StringLength, _In_opt_ PCSTR String,
IN ULONG MaximumLength, _In_ ULONG StringLength,
OUT PSTRING CapturedString) _In_ ULONG MaximumLength,
_Out_ PSTRING CapturedString)
{ {
ASSERT(CapturedString != NULL); ASSERT(CapturedString != NULL);
@ -259,9 +266,11 @@ CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
CapturedString->Buffer[CapturedString->Length] = ANSI_NULL; CapturedString->Buffer[CapturedString->Length] = ANSI_NULL;
} }
static VOID VOID
CsrCaptureMessageUnicodeStringInPlace(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, NTAPI
IN PUNICODE_STRING String) CsrCaptureMessageUnicodeStringInPlace(
_Inout_ PCSR_CAPTURE_BUFFER CaptureBuffer,
_Inout_ PUNICODE_STRING String)
{ {
ASSERT(String != NULL); ASSERT(String != NULL);
@ -282,9 +291,10 @@ CsrCaptureMessageUnicodeStringInPlace(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer,
*/ */
NTSTATUS NTSTATUS
NTAPI NTAPI
CsrCaptureMessageMultiUnicodeStringsInPlace(OUT PCSR_CAPTURE_BUFFER* CaptureBuffer, CsrCaptureMessageMultiUnicodeStringsInPlace(
IN ULONG StringsCount, _Inout_ PCSR_CAPTURE_BUFFER* CaptureBuffer,
IN PUNICODE_STRING* MessageStrings) _In_ ULONG StringsCount,
_In_ PUNICODE_STRING* MessageStrings)
{ {
ULONG Count; ULONG Count;
@ -328,8 +338,9 @@ CsrCaptureMessageMultiUnicodeStringsInPlace(OUT PCSR_CAPTURE_BUFFER* CaptureBuff
*/ */
PLARGE_INTEGER PLARGE_INTEGER
NTAPI NTAPI
CsrCaptureTimeout(IN ULONG Milliseconds, CsrCaptureTimeout(
OUT PLARGE_INTEGER Timeout) _In_ ULONG Milliseconds,
_Out_ PLARGE_INTEGER Timeout)
{ {
/* Validate the time */ /* Validate the time */
if (Milliseconds == -1) return NULL; if (Milliseconds == -1) return NULL;

View file

@ -31,16 +31,17 @@ ULONG_PTR CsrPortMemoryDelta;
BOOLEAN InsideCsrProcess = FALSE; BOOLEAN InsideCsrProcess = FALSE;
typedef NTSTATUS typedef NTSTATUS
(NTAPI *PCSR_SERVER_API_ROUTINE)(IN PPORT_MESSAGE Request, (NTAPI *PCSR_SERVER_API_ROUTINE)(
IN PPORT_MESSAGE Reply); _In_ PCSR_API_MESSAGE Request,
_Inout_ PCSR_API_MESSAGE Reply);
PCSR_SERVER_API_ROUTINE CsrServerApiRoutine; PCSR_SERVER_API_ROUTINE CsrServerApiRoutine;
/* FUNCTIONS ******************************************************************/ /* FUNCTIONS ******************************************************************/
NTSTATUS static NTSTATUS
NTAPI CsrpConnectToServer(
CsrpConnectToServer(IN PWSTR ObjectDirectory) _In_ PCWSTR ObjectDirectory)
{ {
NTSTATUS Status; NTSTATUS Status;
SIZE_T PortNameLength; SIZE_T PortNameLength;
@ -198,11 +199,12 @@ CsrpConnectToServer(IN PWSTR ObjectDirectory)
*/ */
NTSTATUS NTSTATUS
NTAPI NTAPI
CsrClientConnectToServer(IN PWSTR ObjectDirectory, CsrClientConnectToServer(
IN ULONG ServerId, _In_ PCWSTR ObjectDirectory,
IN PVOID ConnectionInfo, _In_ ULONG ServerId,
IN OUT PULONG ConnectionInfoSize, _In_ PVOID ConnectionInfo,
OUT PBOOLEAN ServerToServerCall) _Inout_ PULONG ConnectionInfoSize,
_Out_ PBOOLEAN ServerToServerCall)
{ {
NTSTATUS Status; NTSTATUS Status;
PIMAGE_NT_HEADERS NtHeader; PIMAGE_NT_HEADERS NtHeader;
@ -367,10 +369,11 @@ C_ASSERT((sizeof(TEST) - sizeof(TEST_EMBEDDED)) != FIELD_OFFSET(TEST, Three));
*/ */
NTSTATUS NTSTATUS
NTAPI NTAPI
CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage, CsrClientCallServer(
IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL, _Inout_ PCSR_API_MESSAGE ApiMessage,
IN CSR_API_NUMBER ApiNumber, _Inout_opt_ PCSR_CAPTURE_BUFFER CaptureBuffer,
IN ULONG DataLength) _In_ CSR_API_NUMBER ApiNumber,
_In_ ULONG DataLength)
{ {
NTSTATUS Status; NTSTATUS Status;
@ -484,8 +487,7 @@ CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage,
ApiMessage->Header.ClientId = NtCurrentTeb()->ClientId; ApiMessage->Header.ClientId = NtCurrentTeb()->ClientId;
/* Do a direct call */ /* Do a direct call */
Status = CsrServerApiRoutine(&ApiMessage->Header, Status = CsrServerApiRoutine(ApiMessage, ApiMessage);
&ApiMessage->Header);
/* Check for success */ /* Check for success */
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))