:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / lib / ntdll / csr / probe.c
1 /* $Id$
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 #define NTOS_MODE_USER
11 #include <ntos.h>
12
13 #define NDEBUG
14 #include <ntdll/rtl.h>
15
16 VOID STDCALL
17 CsrProbeForRead(IN CONST PVOID Address,
18                 IN ULONG Length,
19                 IN ULONG Alignment)
20 {
21    PUCHAR Pointer;
22    UCHAR Data;
23
24    if (Length == 0)
25      return;
26
27    if ((ULONG)Address & (Alignment - 1))
28      RtlRaiseStatus(STATUS_DATATYPE_MISALIGNMENT);
29
30    Pointer = (PUCHAR)Address;
31    Data = *Pointer;
32    Pointer = (PUCHAR)((ULONG)Address + Length -1);
33    Data = *Pointer;
34 }
35
36 VOID STDCALL
37 CsrProbeForWrite(IN CONST PVOID Address,
38                  IN ULONG Length,
39                  IN ULONG Alignment)
40 {
41    PUCHAR Pointer;
42    UCHAR Data;
43
44    if (Length == 0)
45      return;
46
47    if ((ULONG)Address & (Alignment - 1))
48      RtlRaiseStatus(STATUS_DATATYPE_MISALIGNMENT);
49
50 //   if (Address >= MmUserProbeAddress)
51 //     RtlRaiseStatus(STATUS_ACCESS_VIOLATION);
52
53    Pointer = (PUCHAR)Address;
54    Data = *Pointer;
55    *Pointer = Data;
56    Pointer = (PUCHAR)((ULONG)Address + Length -1);
57    Data = *Pointer;
58    *Pointer = Data;
59 }
60
61 /* EOF */