diff options
Diffstat (limited to 'crates')
| -rw-r--r-- | crates/user/creating_devices/Cargo.toml | 5 | ||||
| -rw-r--r-- | crates/user/creating_devices/src/main.rs | 5 | ||||
| -rw-r--r-- | crates/user/io_controls/Cargo.toml | 8 | ||||
| -rw-r--r-- | crates/user/io_controls/src/main.rs | 41 | ||||
| -rw-r--r-- | crates/user/reading_and_writing/Cargo.toml | 5 | ||||
| -rw-r--r-- | crates/user/reading_and_writing/src/main.rs | 21 | ||||
| -rw-r--r-- | crates/windows-kernel-rs/examples/creating_devices/Cargo.toml | 2 | ||||
| -rw-r--r-- | crates/windows-kernel-rs/examples/io_controls/Cargo.toml | 2 | ||||
| -rw-r--r-- | crates/windows-kernel-rs/examples/reading_and_writing/Cargo.toml | 2 |
9 files changed, 88 insertions, 3 deletions
diff --git a/crates/user/creating_devices/Cargo.toml b/crates/user/creating_devices/Cargo.toml new file mode 100644 index 0000000..b4770fd --- /dev/null +++ b/crates/user/creating_devices/Cargo.toml @@ -0,0 +1,5 @@ +[package] +name = "creating_devices" +version = "0.1.0" +edition = "2021" +license = "MIT" diff --git a/crates/user/creating_devices/src/main.rs b/crates/user/creating_devices/src/main.rs new file mode 100644 index 0000000..ad1f136 --- /dev/null +++ b/crates/user/creating_devices/src/main.rs @@ -0,0 +1,5 @@ +fn main() -> Result<(), std::io::Error> { + let _file = std::fs::File::open("\\??\\Example")?; + + Ok(()) +} diff --git a/crates/user/io_controls/Cargo.toml b/crates/user/io_controls/Cargo.toml new file mode 100644 index 0000000..5d49408 --- /dev/null +++ b/crates/user/io_controls/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "io_controls" +version = "0.1.0" +edition = "2021" +license = "MIT" + +[target.'cfg(windows)'.dependencies] +winioctl = { path = "../../winioctl" } diff --git a/crates/user/io_controls/src/main.rs b/crates/user/io_controls/src/main.rs new file mode 100644 index 0000000..1c5e73c --- /dev/null +++ b/crates/user/io_controls/src/main.rs @@ -0,0 +1,41 @@ +use std::os::windows::io::AsRawHandle; + +use winioctl::{ioctl_none, ioctl_read, ioctl_write, DeviceType, Error}; + +const IOCTL_PRINT_VALUE: u32 = 0x800; +const IOCTL_READ_VALUE: u32 = 0x801; +const IOCTL_WRITE_VALUE: u32 = 0x802; + +ioctl_none!(ioctl_print_value, DeviceType::Unknown, IOCTL_PRINT_VALUE); +ioctl_read!(ioctl_read_value, DeviceType::Unknown, IOCTL_READ_VALUE, i32); +ioctl_write!( + ioctl_write_value, + DeviceType::Unknown, + IOCTL_WRITE_VALUE, + i32 +); + +fn main() -> Result<(), Error> { + let file = std::fs::OpenOptions::new() + .read(true) + .write(true) + .create(false) + .open("\\??\\Example")?; + let mut value = 0; + + unsafe { + ioctl_read_value(file.as_raw_handle(), &mut value)?; + } + + value += 1; + + unsafe { + ioctl_write_value(file.as_raw_handle(), &value)?; + } + + unsafe { + ioctl_print_value(file.as_raw_handle())?; + } + + Ok(()) +} diff --git a/crates/user/reading_and_writing/Cargo.toml b/crates/user/reading_and_writing/Cargo.toml new file mode 100644 index 0000000..5f2895d --- /dev/null +++ b/crates/user/reading_and_writing/Cargo.toml @@ -0,0 +1,5 @@ +[package] +name = "reading_and_writing" +version = "0.1.0" +edition = "2021" +license = "MIT" diff --git a/crates/user/reading_and_writing/src/main.rs b/crates/user/reading_and_writing/src/main.rs new file mode 100644 index 0000000..ff6d5d7 --- /dev/null +++ b/crates/user/reading_and_writing/src/main.rs @@ -0,0 +1,21 @@ +use std::io::{Read, Write}; + +fn main() -> Result<(), std::io::Error> { + let mut file = std::fs::OpenOptions::new() + .read(true) + .write(true) + .create(false) + .open("\\??\\Example")?; + + file.write_all("Hello, World!".as_bytes())?; + + let mut data = vec![0u8; 4096]; + let size = file.read(&mut data)?; + + match std::str::from_utf8(&data[..size]) { + Ok(s) => println!("read {} bytes from \"{}\"", size, s), + _ => println!("read {} bytes: {:x?}", size, &data[..size]), + } + + Ok(()) +} diff --git a/crates/windows-kernel-rs/examples/creating_devices/Cargo.toml b/crates/windows-kernel-rs/examples/creating_devices/Cargo.toml index 1a7fbc4..d5966c8 100644 --- a/crates/windows-kernel-rs/examples/creating_devices/Cargo.toml +++ b/crates/windows-kernel-rs/examples/creating_devices/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "creating_devices" +name = "creating_devices_example" version = "0.1.0" authors = ["Fuwn <[email protected]>"] edition = "2021" diff --git a/crates/windows-kernel-rs/examples/io_controls/Cargo.toml b/crates/windows-kernel-rs/examples/io_controls/Cargo.toml index 1d8e6a5..cc7222b 100644 --- a/crates/windows-kernel-rs/examples/io_controls/Cargo.toml +++ b/crates/windows-kernel-rs/examples/io_controls/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "io_controls" +name = "io_controls_example" version = "0.1.0" authors = ["Fuwn <[email protected]>"] edition = "2021" diff --git a/crates/windows-kernel-rs/examples/reading_and_writing/Cargo.toml b/crates/windows-kernel-rs/examples/reading_and_writing/Cargo.toml index 2e6dad0..463cb7a 100644 --- a/crates/windows-kernel-rs/examples/reading_and_writing/Cargo.toml +++ b/crates/windows-kernel-rs/examples/reading_and_writing/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "reading_and_writing" +name = "reading_and_writing_example" version = "0.1.0" authors = ["Fuwn <[email protected]>"] edition = "2021" |