# Trait std::os::windows::fs::OpenOptionsExt 1.10.0[−][src]

    pub trait OpenOptionsExt {
        fn access_mode(&mut self, access: u32) -> &mut Self;
        fn share_mode(&mut self, val: u32) -> &mut Self;
        fn custom_flags(&mut self, flags: u32) -> &mut Self;
        fn attributes(&mut self, val: u32) -> &mut Self;
        fn security_qos_flags(&mut self, flags: u32) -> &mut OpenOptions;
    }

This is supported on Windows only.

Windows-specific extensions to `fs::OpenOptions`.

## Required Methods

ⓘImportant traits for &'a mut I

### Important traits for &'a mut I

`impl<'a, I> Iterator for &'a mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'a, R: Read + ?Sized> Read for &'a mut Rimpl<'a, W: Write + ?Sized> Write for &'a mut W`

### `fn access_mode(&mut self, access: u32) -> &mut Self`

This is supported on Windows only.

Overrides the `dwDesiredAccess` argument to the call to `CreateFile` with the specified value.

This will override the `read`, `write`, and `append` flags on the `OpenOptions` structure. This method provides fine-grained control over the permissions to read, write and append data, attributes (like hidden and system), and extended attributes.

# Examples

    use std::fs::OpenOptions;
    use std::os::windows::prelude::*;

    // Open without read and write permission, for example if you only need
    // to call `stat` on the file
    let file = OpenOptions::new().access_mode(0).open("foo.txt");Run

ⓘImportant traits for &'a mut I

### Important traits for &'a mut I

`impl<'a, I> Iterator for &'a mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'a, R: Read + ?Sized> Read for &'a mut Rimpl<'a, W: Write + ?Sized> Write for &'a mut W`

### `fn share_mode(&mut self, val: u32) -> &mut Self`

This is supported on Windows only.

Overrides the `dwShareMode` argument to the call to `CreateFile` with the specified value.

By default `share_mode` is set to `FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE`. This allows other processes to to read, write, and delete/rename the same file while it is open. Removing any of the flags will prevent other processes from performing the corresponding operation until the file handle is closed.

# Examples

    use std::fs::OpenOptions;
    use std::os::windows::prelude::*;

    // Do not allow others to read or modify this file while we have it open
    // for writing.
    let file = OpenOptions::new()
        .write(true)
        .share_mode(0)
        .open("foo.txt");Run

ⓘImportant traits for &'a mut I

### Important traits for &'a mut I

`impl<'a, I> Iterator for &'a mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'a, R: Read + ?Sized> Read for &'a mut Rimpl<'a, W: Write + ?Sized> Write for &'a mut W`

### `fn custom_flags(&mut self, flags: u32) -> &mut Self`

This is supported on Windows only.

Sets extra flags for the `dwFileFlags` argument to the call to `CreateFile2` to the specified value (or combines it with `attributes` and `security_qos_flags` to set the `dwFlagsAndAttributes` for `CreateFile`).

Custom flags can only set flags, not remove flags set by Rust's options. This option overwrites any previously set custom flags.

# Examples

    extern crate winapi;

    use std::fs::OpenOptions;
    use std::os::windows::prelude::*;

    let file = OpenOptions::new()
        .create(true)
        .write(true)
        .custom_flags(winapi::FILE_FLAG_DELETE_ON_CLOSE)
        .open("foo.txt");Run

ⓘImportant traits for &'a mut I

### Important traits for &'a mut I

`impl<'a, I> Iterator for &'a mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'a, R: Read + ?Sized> Read for &'a mut Rimpl<'a, W: Write + ?Sized> Write for &'a mut W`

### `fn attributes(&mut self, val: u32) -> &mut Self`

This is supported on Windows only.

Sets the `dwFileAttributes` argument to the call to `CreateFile2` to the specified value (or combines it with `custom_flags` and `security_qos_flags` to set the `dwFlagsAndAttributes` for `CreateFile`).

If a new file is created because it does not yet exist and `.create(true)` or `.create_new(true)` are specified, the new file is given the attributes declared with `.attributes()`.

If an existing file is opened with `.create(true).truncate(true)`, its existing attributes are preserved and combined with the ones declared with `.attributes()`.

In all other cases the attributes get ignored.

# Examples

    extern crate winapi;

    use std::fs::OpenOptions;
    use std::os::windows::prelude::*;

    let file = OpenOptions::new()
        .write(true)
        .create(true)
        .attributes(winapi::FILE_ATTRIBUTE_HIDDEN)
        .open("foo.txt");Run

### `fn security_qos_flags(&mut self, flags: u32) -> &mut OpenOptions`

This is supported on Windows only.

Sets the `dwSecurityQosFlags` argument to the call to `CreateFile2` to the specified value (or combines it with `custom_flags` and `attributes` to set the `dwFlagsAndAttributes` for `CreateFile`).

By default, `security_qos_flags` is set to `SECURITY_ANONYMOUS`. For information about possible values, see Impersonation Levels on the Windows Dev Center site.

# Examples

    use std::fs::OpenOptions;
    use std::os::windows::prelude::*;

    let file = OpenOptions::new()
        .write(true)
        .create(true)

        // Sets the flag value to `SecurityIdentification`.
        .security_qos_flags(1)

        .open("foo.txt");Run

## Implementors

- `impl OpenOptionsExt for OpenOptions` | [src]

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)