[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
* 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

View file

@ -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;

View file

@ -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;

View file

@ -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))