[go: up one dir, main page]

windows-win 2.2.1

Some windows hacking library with utilities to find windows and access them
Documentation
extern crate windows_win;
extern crate winapi;

use self::windows_win::TimerBuilder;
use self::windows_win::raw::timer;
use self::winapi::ctypes::{
    c_void,
    c_uchar,
};

use std::ptr;

fn sleep(ms: u64) {
    use std::time;
    use std::thread;

    thread::sleep(time::Duration::from_millis(ms));
}

#[test]
fn test_performance_counter() {
    let result = timer::query_performance_frequency().expect("To get counter");
    assert!(result > 0);

    let result = timer::query_performance_counter().expect("To get counter");
    assert!(result > 0);
}

unsafe extern "system" fn callback(_: *mut c_void, _: c_uchar) {
    println!("raw callback");
}

#[test]
fn test_timer_queue() {
    let queue = timer::TimerQueue::new().expect("To crate queue");
    queue.delete(timer::Wait).expect("To delete queue");

    let queue = timer::TimerQueue::default();
    queue.delete(timer::Wait).expect("To delete default queue");

    timer::DEFAULT_TIMER_QUEUE.delete(timer::Wait).expect("To delete default queue");

    let timer = timer::DEFAULT_TIMER_QUEUE.timer(Some(callback), ptr::null_mut(), 1, 0, timer::DEFAULT_TIMER_FLAGS).expect("To crate timer");
    sleep(10);
    timer.delete(timer::Wait).expect("To delete timer");
}

fn rust_callback() {
    println!("rust_callback");
}

#[test]
fn test_timer_builder() {
    let timer = TimerBuilder::new().rust_callback(rust_callback).single(1).build().expect("To build timer");
    sleep(10);
    timer.delete(timer::Wait).expect("To delete timer");

    let timer = TimerBuilder::new().single(1).build().expect("To build timer");
    timer.delete(timer::Wait).expect("To delete timer");
}