blob: d8e102286b82b5e0ba82e9648c038ecf94d2c456 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
deviosup.c
Abstract:
This module implements the memory locking routines for MSFS.
Author:
Manny Weiser (mannyw) 05-Apr-1991
Revision History:
--*/
#include "mailslot.h"
//
// Local debug trace level
//
#define Dbg (DEBUG_TRACE_DEVIOSUP)
#ifdef ALLOC_PRAGMA
#pragma alloc_text( PAGE, MsMapUserBuffer )
#endif
VOID
MsMapUserBuffer (
IN OUT PIRP Irp,
IN KPROCESSOR_MODE AccessMode,
OUT PVOID *UserBuffer
)
/*++
Routine Description:
This routine obtains a usable virtual address for the user buffer
for the current I/O request in the specified mode.
Arguments:
Irp - Pointer to the Irp for the request.
AccessMode - UserMode or KernelMode.
UserBuffer - Returns pointer to mapped user buffer.
Return Value:
None.
--*/
{
AccessMode;
PAGED_CODE();
//
// If there is no Mdl, then we must be in the Fsd, and we can simply
// return the UserBuffer field from the Irp.
//
if (Irp->MdlAddress == NULL) {
*UserBuffer = Irp->UserBuffer;
return;
}
//
// Get a system virtual address for the buffer.
//
*UserBuffer = MmGetSystemAddressForMdl( Irp->MdlAddress );
return;
} // MsMapUserBuffer
|