Use free Windows DDK and compile with latest MinGW releases.
[reactos.git] / reactos / lib / ntdll / csr / probe.c
1 /* $Id: probe.c,v 1.2 2002/09/07 15:12:38 chorns Exp $
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: lib/ntdll/csr/probe.c
6 * PURPOSE: CSRSS address range access probing API
7 * AUTHOR: Eric Kohl
8 * DATE: 2001-06-17
9 */
10
11 #define NTOS_USER_MODE
12 #include <ntos.h>
13
14 #define NDEBUG
15 #include <debug.h>
16
17
18 VOID STDCALL
19 CsrProbeForRead(IN CONST PVOID Address,
20 IN ULONG Length,
21 IN ULONG Alignment)
22 {
23 PUCHAR Pointer;
24 UCHAR Data;
25
26 if (Length == 0)
27 return;
28
29 if ((ULONG)Address & (Alignment - 1))
30 RtlRaiseStatus(STATUS_DATATYPE_MISALIGNMENT);
31
32 Pointer = (PUCHAR)Address;
33 Data = *Pointer;
34 Pointer = (PUCHAR)((ULONG)Address + Length -1);
35 Data = *Pointer;
36 }
37
38 VOID STDCALL
39 CsrProbeForWrite(IN CONST PVOID Address,
40 IN ULONG Length,
41 IN ULONG Alignment)
42 {
43 PUCHAR Pointer;
44 UCHAR Data;
45
46 if (Length == 0)
47 return;
48
49 if ((ULONG)Address & (Alignment - 1))
50 RtlRaiseStatus(STATUS_DATATYPE_MISALIGNMENT);
51
52 // if (Address >= MmUserProbeAddress)
53 // RtlRaiseStatus(STATUS_ACCESS_VIOLATION);
54
55 Pointer = (PUCHAR)Address;
56 Data = *Pointer;
57 *Pointer = Data;
58 Pointer = (PUCHAR)((ULONG)Address + Length -1);
59 Data = *Pointer;
60 *Pointer = Data;
61 }
62
63 /* EOF */