32 volatile UCHAR *Pointer;
64 volatile UCHAR *Pointer;
94 ULONG OffsetsArraySize;
102 OffsetsArraySize = ArgumentCount *
sizeof(
ULONG_PTR);
132 if (CaptureBuffer ==
NULL)
return NULL;
146 return CaptureBuffer;
158 if (MessageLength == 0)
160 *CapturedData =
NULL;
166 *CapturedData = CaptureBuffer->BufferEnd;
169 if (MessageLength >=
MAXLONG)
return 0;
172 MessageLength = (MessageLength + 3) & ~3;
175 CaptureBuffer->BufferEnd = (
PVOID)((
ULONG_PTR)CaptureBuffer->BufferEnd + MessageLength);
179 CaptureBuffer->PointerOffsetsArray[CaptureBuffer->PointerCount++] = (
ULONG_PTR)CapturedData;
182 return MessageLength;
199 if (!MessageBuffer || !MessageLength)
return;
235 CapturedString->Length = 0;
241 (
PVOID*)&CapturedString->Buffer);
249 CapturedString->Length = (
USHORT)StringLength;
252 CapturedString->MaximumLength =
255 (
PVOID*)&CapturedString->Buffer);
263 if (CapturedString->Length < CapturedString->MaximumLength)
264 CapturedString->Buffer[CapturedString->Length] =
'\0';
307 while (
Count < StringsCount)
309 if (MessageStrings[
Count])
310 Size += MessageStrings[
Count]->MaximumLength;
322 while (
Count < StringsCount)
324 if (MessageStrings[
Count])
342 if (Milliseconds == -1)
return NULL;
345 Timeout->QuadPart = Milliseconds * -10000
LL;
VOID NTAPI CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer)
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
_In_ ULONG _In_ ULONG _In_ ULONG Length
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
ULONG NTAPI CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, IN ULONG MessageLength, OUT PVOID *CapturedData)
PCSR_CAPTURE_BUFFER NTAPI CsrAllocateCaptureBuffer(IN ULONG ArgumentCount, IN ULONG BufferSize)
#define STATUS_INVALID_PARAMETER
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
IN PVOID IN PVOID IN USHORT IN USHORT Size
PLARGE_INTEGER NTAPI CsrCaptureTimeout(IN ULONG Milliseconds, OUT PLARGE_INTEGER Timeout)
#define RtlMoveMemory(Destination, Source, Length)
VOID NTAPI CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, IN PVOID MessageBuffer OPTIONAL, IN ULONG MessageLength, OUT PVOID *CapturedData)
VOID NTAPI CsrProbeForWrite(IN PVOID Address, IN ULONG Length, IN ULONG Alignment)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
VOID NTAPI CsrCaptureMessageString(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, IN PCSTR String OPTIONAL, IN ULONG StringLength, IN ULONG MaximumLength, OUT PSTRING CapturedString)
#define FIELD_OFFSET(t, f)
static VOID CsrCaptureMessageUnicodeStringInPlace(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, IN PUNICODE_STRING String)
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER MaximumSize
#define STATUS_DATATYPE_MISALIGNMENT
NTSTATUS NTAPI CsrCaptureMessageMultiUnicodeStringsInPlace(OUT PCSR_CAPTURE_BUFFER *CaptureBuffer, IN ULONG StringsCount, IN PUNICODE_STRING *MessageStrings)
#define RtlZeroMemory(Destination, Length)
VOID NTAPI CsrProbeForRead(IN PVOID Address, IN ULONG Length, IN ULONG Alignment)
ULONG_PTR PointerOffsetsArray[ANYSIZE_ARRAY]
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
PULONG MinorVersion OPTIONAL