| 98 | } |
| 99 | |
| 100 | NTSTATUS |
| 101 | Ext2LockUserBuffer (IN PIRP Irp, |
| 102 | IN ULONG Length, |
| 103 | IN LOCK_OPERATION Operation) |
| 104 | { |
| 105 | NTSTATUS Status; |
| 106 | ASSERT(Irp != NULL); |
| 107 | |
| 108 | if (Irp->MdlAddress != NULL) { |
| 109 | return STATUS_SUCCESS; |
| 110 | } |
| 111 | |
| 112 | IoAllocateMdl(Irp->UserBuffer, Length, FALSE, FALSE, Irp); |
| 113 | if (Irp->MdlAddress == NULL) { |
| 114 | return STATUS_INSUFFICIENT_RESOURCES; |
| 115 | } |
| 116 | |
| 117 | __try { |
| 118 | |
| 119 | MmProbeAndLockPages(Irp->MdlAddress, Irp->RequestorMode, Operation); |
| 120 | Status = STATUS_SUCCESS; |
| 121 | |
| 122 | } __except (EXCEPTION_EXECUTE_HANDLER) { |
| 123 | |
| 124 | DbgBreak(); |
| 125 | IoFreeMdl(Irp->MdlAddress); |
| 126 | Irp->MdlAddress = NULL; |
| 127 | Status = STATUS_INVALID_USER_BUFFER; |
| 128 | } |
| 129 | |
| 130 | return Status; |
| 131 | } |
| 132 | |
| 133 | PVOID |
| 134 | Ext2GetUserBuffer (IN PIRP Irp ) |
no outgoing calls
no test coverage detected