pub struct WatchDirectory { /* private fields */ }Expand description
An owned, marshalable parameter set for FindFirstChangeNotificationW.
§Example
use windows_namespace_request_sys::watch::{NotifyFilter, WatchDirectory};
use wtf_string::Wtf16String;
let directory = std::env::temp_dir();
let text = directory.to_str().expect("the temporary directory is valid UTF-8");
let request = WatchDirectory::new(Wtf16String::from(text))?
.with_subtree(true)
.with_filter(NotifyFilter::FILE_NAME | NotifyFilter::DIR_NAME);
let notification = request.perform()?;
// The handle is closed with FindCloseChangeNotification, which the type
// remembers on the caller's behalf.
drop(notification);Implementations§
Source§impl WatchDirectory
impl WatchDirectory
Sourcepub fn new(path: Wtf16String) -> Result<Self, PathCaptureError>
pub fn new(path: Wtf16String) -> Result<Self, PathCaptureError>
Begins a request to watch path.
The path reaches the call as it was given, except that one Win32 would resolve against the
current directory is fixed to the current directory as it is now, so that it still names
the same place when the request is performed on another thread after the directory has
changed; see OpenFile::new and D-19 in the crate’s
DESIGN-NOTES.md. path is the path as given and
win32_path is the one handed to the call.
The watch starts non-recursive and watching for nothing; both are set explicitly, as everywhere else in this crate.
§Errors
PathCaptureError::InteriorNul if the path contains a NUL, which Win32 would read as its
end, and the failure of GetCurrentDirectoryW if it had to be read and could not be.
Sourcepub fn from_anchored(path: AnchoredPath) -> Self
pub fn from_anchored(path: AnchoredPath) -> Self
Begins a request to watch a path the caller has already anchored.
As OpenFile::from_anchored: the path is not anchored
again, and the request hands the call the anchored path’s win32 form.
The watch starts as new starts it.
§Example
use windows_namespace_request_sys::{AnchoredPath, WatchDirectory};
use wtf_string::Wtf16String;
let anchored = AnchoredPath::new(Wtf16String::from("a-child"))?;
let request = WatchDirectory::from_anchored(anchored.clone());
assert_eq!(request.path(), anchored.given());
assert_eq!(request.win32_path(), anchored.win32());Sourcepub fn with_subtree(self, subtree: bool) -> Self
pub fn with_subtree(self, subtree: bool) -> Self
Sets bWatchSubtree.
Sourcepub fn with_filter(self, filter: NotifyFilter) -> Self
pub fn with_filter(self, filter: NotifyFilter) -> Self
Sets dwNotifyFilter.
Sourcepub fn win32_path(&self) -> &Wtf16Str
pub fn win32_path(&self) -> &Wtf16Str
The path that is handed to FindFirstChangeNotificationW: the one given, or that one fixed
to the current directory of the moment the request was built.
Sourcepub fn filter(&self) -> NotifyFilter
pub fn filter(&self) -> NotifyFilter
The change classes the watch reports.