const SECTION_MAP_EXECUTE: DWORD = 0x0008;
const SECTION_EXTEND_SIZE: DWORD = 0x0010;
const SECTION_MAP_EXECUTE_EXPLICIT: DWORD = 0x0020;
-const SECTION_ALL_ACCESS: DWORD = STANDARD_RIGHTS_REQUIRED | SECTION_QUERY
- | SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE;
+const SECTION_ALL_ACCESS: DWORD = STANDARD_RIGHTS_REQUIRED
+ | SECTION_QUERY
+ | SECTION_MAP_WRITE
+ | SECTION_MAP_READ
+ | SECTION_MAP_EXECUTE
+ | SECTION_EXTEND_SIZE;
const PAGE_READONLY: DWORD = 0x02;
const PAGE_READWRITE: DWORD = 0x04;
}
extern "system" {
- fn CloseHandle(
- hObject: HANDLE,
- ) -> BOOL;
+ fn CloseHandle(hObject: HANDLE) -> BOOL;
fn CreateFileMappingW(
hFile: HANDLE,
lpName: LPCWSTR,
) -> HANDLE;
- fn FlushViewOfFile(
- lpBaseAddress: LPCVOID,
- dwNumberOfBytesToFlush: SIZE_T,
- ) -> BOOL;
+ fn FlushViewOfFile(lpBaseAddress: LPCVOID, dwNumberOfBytesToFlush: SIZE_T) -> BOOL;
- fn UnmapViewOfFile(
- lpBaseAddress: LPCVOID,
- ) -> BOOL;
+ fn UnmapViewOfFile(lpBaseAddress: LPCVOID) -> BOOL;
fn MapViewOfFile(
hFileMappingObject: HANDLE,
lpflOldProtect: PDWORD,
) -> BOOL;
- fn GetSystemInfo(
- lpSystemInfo: LPSYSTEM_INFO,
- );
+ fn GetSystemInfo(lpSystemInfo: LPSYSTEM_INFO);
}
pub struct MmapInner {
0,
ptr::null(),
);
- if handle == ptr::null_mut() {
+ if handle.is_null() {
return Err(io::Error::last_os_error());
}
);
CloseHandle(handle);
- if ptr == ptr::null_mut() {
+ if ptr.is_null() {
Err(io::Error::last_os_error())
} else {
Ok(MmapInner {
file: Some(file.try_clone()?),
ptr: ptr.offset(alignment as isize),
len: len as usize,
- copy: copy,
+ copy,
})
}
}
}
- pub fn map(len: usize, file: &File, offset: u64) -> io::Result<MmapInner> {
+ pub fn map(len: usize, file: &File, offset: u64, _populate: bool) -> io::Result<MmapInner> {
let write = protection_supported(file.as_raw_handle(), PAGE_READWRITE);
let exec = protection_supported(file.as_raw_handle(), PAGE_EXECUTE_READ);
let mut access = FILE_MAP_READ;
Ok(inner)
}
- pub fn map_exec(len: usize, file: &File, offset: u64) -> io::Result<MmapInner> {
+ pub fn map_exec(
+ len: usize,
+ file: &File,
+ offset: u64,
+ _populate: bool,
+ ) -> io::Result<MmapInner> {
let write = protection_supported(file.as_raw_handle(), PAGE_READWRITE);
let mut access = FILE_MAP_READ | FILE_MAP_EXECUTE;
let protection = if write {
Ok(inner)
}
- pub fn map_mut(len: usize, file: &File, offset: u64) -> io::Result<MmapInner> {
+ pub fn map_mut(len: usize, file: &File, offset: u64, _populate: bool) -> io::Result<MmapInner> {
let exec = protection_supported(file.as_raw_handle(), PAGE_EXECUTE_READ);
let mut access = FILE_MAP_READ | FILE_MAP_WRITE;
let protection = if exec {
Ok(inner)
}
- pub fn map_copy(len: usize, file: &File, offset: u64) -> io::Result<MmapInner> {
+ pub fn map_copy(
+ len: usize,
+ file: &File,
+ offset: u64,
+ _populate: bool,
+ ) -> io::Result<MmapInner> {
let exec = protection_supported(file.as_raw_handle(), PAGE_EXECUTE_READWRITE);
let mut access = FILE_MAP_COPY;
let protection = if exec {
Ok(inner)
}
- pub fn map_copy_read_only(len: usize, file: &File, offset: u64) -> io::Result<MmapInner> {
+ pub fn map_copy_read_only(
+ len: usize,
+ file: &File,
+ offset: u64,
+ _populate: bool,
+ ) -> io::Result<MmapInner> {
let write = protection_supported(file.as_raw_handle(), PAGE_READWRITE);
let exec = protection_supported(file.as_raw_handle(), PAGE_EXECUTE_READ);
let mut access = FILE_MAP_COPY;
(len & 0xffffffff) as DWORD,
ptr::null(),
);
- if handle == ptr::null_mut() {
+ if handle.is_null() {
return Err(io::Error::last_os_error());
}
let access = FILE_MAP_ALL_ACCESS | FILE_MAP_EXECUTE;
let ptr = MapViewOfFile(handle, access, 0, 0, len as SIZE_T);
CloseHandle(handle);
- if ptr == ptr::null_mut() {
+ if ptr.is_null() {
return Err(io::Error::last_os_error());
}
if result != 0 {
Ok(MmapInner {
file: None,
- ptr: ptr,
+ ptr,
len: len as usize,
copy: false,
})
}
pub fn flush_async(&self, offset: usize, len: usize) -> io::Result<()> {
- let result = unsafe { FlushViewOfFile(self.ptr.offset(offset as isize), len as SIZE_T) };
+ let result = unsafe { FlushViewOfFile(self.ptr.add(offset), len as SIZE_T) };
if result != 0 {
Ok(())
} else {
fn protection_supported(handle: RawHandle, protection: DWORD) -> bool {
unsafe {
let handle = CreateFileMappingW(handle, ptr::null_mut(), protection, 0, 0, ptr::null());
- if handle == ptr::null_mut() {
+ if handle.is_null() {
return false;
}
CloseHandle(handle);
unsafe {
let mut info = mem::zeroed();
GetSystemInfo(&mut info);
- return info.dwAllocationGranularity as usize;
+ info.dwAllocationGranularity as usize
}
}