18a978a17SVictor Perevertkin //
28a978a17SVictor Perevertkin //    Copyright (C) Microsoft.  All rights reserved.
38a978a17SVictor Perevertkin //
48a978a17SVictor Perevertkin #ifndef __FXPROBEANDLOCK_H__
58a978a17SVictor Perevertkin #define __FXPROBEANDLOCK_H__
68a978a17SVictor Perevertkin 
78a978a17SVictor Perevertkin extern "C" {
88a978a17SVictor Perevertkin 
98a978a17SVictor Perevertkin //
108a978a17SVictor Perevertkin // These are defined in a C file in src\support\ProbeAndLock.c
118a978a17SVictor Perevertkin // to avoid C++ exception handling issues.
128a978a17SVictor Perevertkin //
138a978a17SVictor Perevertkin // They do not raise the exception beyond the C function, but
148a978a17SVictor Perevertkin // translate it into an NTSTATUS before returning.
158a978a17SVictor Perevertkin //
168a978a17SVictor Perevertkin 
178a978a17SVictor Perevertkin NTSTATUS
188a978a17SVictor Perevertkin FxProbeAndLockForRead(
198a978a17SVictor Perevertkin     __in  PMDL   Mdl,
208a978a17SVictor Perevertkin     __in  KPROCESSOR_MODE AccessMode
218a978a17SVictor Perevertkin     );
228a978a17SVictor Perevertkin 
238a978a17SVictor Perevertkin NTSTATUS
248a978a17SVictor Perevertkin FxProbeAndLockForWrite(
258a978a17SVictor Perevertkin     __in  PMDL   Mdl,
268a978a17SVictor Perevertkin     __in  KPROCESSOR_MODE AccessMode
278a978a17SVictor Perevertkin     );
288a978a17SVictor Perevertkin 
298a978a17SVictor Perevertkin NTSTATUS
308a978a17SVictor Perevertkin FxProbeAndLockWithAccess(
318a978a17SVictor Perevertkin     __in  PMDL   Mdl,
328a978a17SVictor Perevertkin     __in  KPROCESSOR_MODE AccessMode,
338a978a17SVictor Perevertkin     __in  LOCK_OPERATION Operation
348a978a17SVictor Perevertkin     );
358a978a17SVictor Perevertkin 
368a978a17SVictor Perevertkin }
378a978a17SVictor Perevertkin 
38*1f377076SVictor Perevertkin #endif // __FXPROBEANDLOCK_H__
39