Skip to main content

ItemAttributes

Struct ItemAttributes 

Source
pub struct ItemAttributes(/* private fields */);
Expand description

These flags represent attributes that can be retrieved on an item (file or folder) or set of items.

They are used with the ShellFolder and ShellItem APIs, most notably ShellFolder::get_attributes_of and ShellItem::get_attributes.

SFGAO (Shobjidl.h)

Implementations§

Source§

impl ItemAttributes

Source

pub const CanCopy: Self

The specified items can be copied.

Source

pub const CanMove: Self

The specified items can be moved.

Shortcuts can be created for the specified items.

This attribute has the same value as DROPEFFECT_LINK. If a namespace extension returns this attribute, a Create Shortcut entry with a default handler is added to the shortcut menu that is displayed during drag-and-drop operations. The extension can also implement its own handler for the link verb in place of the default. If the extension does so, it is responsible for creating the shortcut.

A Create Shortcut item is also added to the Windows Explorer File menu and to normal shortcut menus. If the item is selected, your application’s IContextMenu::InvokeCommand method is invoked with the lpVerb member of the CMINVOKECOMMANDINFO structure set to link. Your application is responsible for creating the link.

Source

pub const Storage: Self

The specified items can be bound to an IStorage object through IShellFolder::BindToObject. For more information about namespace manipulation capabilities, see IStorage.

Source

pub const CanRename: Self

The specified items can be renamed.

Note that this value is essentially a suggestion; not all namespace clients allow items to be renamed. However, those that do must have this attribute set.

Source

pub const CanDelete: Self

The specified items can be deleted.

Source

pub const HasPropSheet: Self

The specified items have property sheets.

Source

pub const DropTarget: Self

The specified items are drop targets.

Source

pub const CapabilityMask: Self

Source

pub const System: Self

Windows 7 and later. The specified items are system items.

Source

pub const Encrypted: Self

The specified items are encrypted and might require special presentation.

Source

pub const IsSlow: Self

Accessing the item (through IStream or other storage interfaces) is expected to be a slow operation. Applications should avoid accessing items flagged with ItemAttributes::IsSlow.

Note: Opening a stream for an item is generally a slow operation at all times. ItemAttributes::IsSlow indicates that it is expected to be especially slow, for example in the case of slow network connections or offline (FILE_ATTRIBUTE_OFFLINE) files. However, querying ItemAttributes::IsSlow is itself a slow operation. Applications should query ItemAttributes::IsSlow only on a background thread. An alternate method, such as retrieving the PKEY_FileAttributes property and testing for FILE_ATTRIBUTE_OFFLINE, could be used in place of a method call that involves ItemAttributes::IsSlow.

Source

pub const Ghosted: Self

The specified items are shown as dimmed and unavailable to the user.

The specified items are shortcuts.

Source

pub const Share: Self

The specified objects are shared.

Source

pub const ReadOnly: Self

The specified items are read-only.

In the case of folders, this means that new items cannot be created in those folders. This should not be confused with the behavior specified by the FILE_ATTRIBUTE_READONLY flag retrieved by IColumnProvider::GetItemData in a SHCOLUMNDATA structure. FILE_ATTRIBUTE_READONLY has no meaning for Win32 file system folders.

Source

pub const Hidden: Self

The item is hidden and should not be displayed unless the Show hidden files and folders option is enabled in Folder Settings.

Source

pub const DisplayAttrMask: Self

Do not use.

Source

pub const NonEnumerated: Self

The items are nonenumerated items and should be hidden.

They are not returned through an enumerator such as that created by the IShellFolder::EnumObjects method.

Source

pub const NewContent: Self

The items contain new content, as defined by the particular application.

Source

pub const CanMoniker: Self

Source

pub const HasStorage: Self

Source

pub const Stream: Self

Indicates that the item has a stream associated with it.

That stream can be accessed through a call to IShellFolder::BindToObject or IShellItem::BindToHandler with IID_IStream in the riid parameter.

ItemAttributes::CanMoniker, ItemAttributes::HasStorage and ItemAttributes::Stream have the same value.

Source

pub const StorageAncestor: Self

Children of this item are accessible through IStream or IStorage.

Those children are flagged with ItemAttributes::Storage or ItemAttributes::Stream.

Source

pub const Validate: Self

When specified as input, ItemAttributes::Validate instructs the folder to validate that the items contained in a folder or Shell item array exist.

If one or more of those items do not exist, IShellFolder::GetAttributesOf and IShellItemArray::GetAttributes return a failure code. This flag is never returned as an out value. When used with the file system folder, ItemAttributes::Validate instructs the folder to discard cached properties retrieved by clients of IShellFolder2::GetDetailsEx that might have accumulated for the specified items.

Source

pub const Removable: Self

The specified items are on removable media or are themselves removable devices.

Source

pub const Compressed: Self

The specified items are compressed.

Source

pub const Browsable: Self

The specified items can be hosted inside a web browser or Windows Explorer frame.

Source

pub const FileSysAncestor: Self

The specified folders are either file system folders or contain at least one descendant (child, grandchild, or later) that is a file system (ItemAttributes::FileSystem) folder.

Source

pub const Folder: Self

The specified items are folders.

Some items can be flagged with both ItemAttributes::Stream and ItemAttributes::Folder, such as a compressed file with a .zip file name extension. Some applications might include this flag when testing for items that are both files and containers.

Source

pub const FileSystem: Self

The specified folders or files are part of the file system (that is, they are files, directories, or root directories).

The parsed names of the items can be assumed to be valid Win32 file system paths. These paths can be either UNC or drive-letter based.

Source

pub const StorageCapMask: Self

Source

pub const HasSubFolder: Self

The specified folders have subfolders.

The ItemAttributes::HasSubFolder attribute is only advisory and might be returned by Shell folder implementations even if they do not contain subfolders. Note, however, that the converse—failing to return ItemAttributes::HasSubFolder—definitively states that the folder objects do not have subfolders. Returning ItemAttributes::HasSubFolder is recommended whenever a significant amount of time is required to determine whether any subfolders exist. For example, the Shell always returns ItemAttributes::HasSubFolder when a folder is located on a network drive.

§Remark

ItemAttributes::HasSubFolder may access local drives, which can be slow.

Source

pub const ContentMask: Self

This flag is a mask for content attributes, at present only ItemAttributes::HasSubFolder.

Callers normally do not use this value.

Source

pub const PkeySfgaoMask: Self

Mask used by the PKEY_SFGAOFlags property to determine attributes that are considered to cause slow calculations or lack context: ItemAttributes::IsSlow, ItemAttributes::ReadOnly, ItemAttributes::HasSubFolder, and ItemAttributes::Validate.

Callers normally do not use this value.

Source§

impl ItemAttributes

Source

pub const fn empty() -> Self

Get a flags value with all bits unset.

Source

pub const fn all() -> Self

Get a flags value with all known bits set.

Source

pub const fn bits(&self) -> u32

Get the underlying bits value.

The returned value is exactly the bits set in this flags value.

Source

pub const fn from_bits(bits: u32) -> Option<Self>

Convert from a bits value.

This method will return None if any unknown bits are set.

Source

pub const fn from_bits_truncate(bits: u32) -> Self

Convert from a bits value, unsetting any unknown bits.

Source

pub const fn from_bits_retain(bits: u32) -> Self

Convert from a bits value exactly.

Source

pub fn from_name(name: &str) -> Option<Self>

Get a flags value with the bits of a flag with the given name set.

This method will return None if name is empty or doesn’t correspond to any named flag.

Source

pub const fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.

Source

pub const fn is_all(&self) -> bool

Whether all known bits in this flags value are set.

Source

pub const fn intersects(&self, other: Self) -> bool

Whether any set bits in a source flags value are also set in a target flags value.

Source

pub const fn contains(&self, other: Self) -> bool

Whether all set bits in a source flags value are also set in a target flags value.

Source

pub fn insert(&mut self, other: Self)

The bitwise or (|) of the bits in two flags values.

Source

pub fn remove(&mut self, other: Self)

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. remove won’t truncate other, but the ! operator will.

Source

pub fn toggle(&mut self, other: Self)

The bitwise exclusive-or (^) of the bits in two flags values.

Source

pub fn set(&mut self, other: Self, value: bool)

Call insert when value is true or remove when value is false.

Source

pub const fn intersection(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.

Source

pub const fn union(self, other: Self) -> Self

The bitwise or (|) of the bits in two flags values.

Source

pub const fn difference(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

Source

pub const fn symmetric_difference(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.

Source

pub const fn complement(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.

Source§

impl ItemAttributes

Source

pub const fn iter(&self) -> Iter<ItemAttributes>

Yield a set of contained flags values.

Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.

Source

pub const fn iter_names(&self) -> IterNames<ItemAttributes>

Yield a set of contained named flags values.

This method is like iter, except only yields bits in contained named flags. Any unknown bits, or bits not corresponding to a contained flag will not be yielded.

Trait Implementations§

Source§

impl Binary for ItemAttributes

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl BitAnd for ItemAttributes

Source§

fn bitand(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.

Source§

type Output = ItemAttributes

The resulting type after applying the & operator.
Source§

impl BitAndAssign for ItemAttributes

Source§

fn bitand_assign(&mut self, other: Self)

The bitwise and (&) of the bits in two flags values.

Source§

impl BitOr for ItemAttributes

Source§

fn bitor(self, other: ItemAttributes) -> Self

The bitwise or (|) of the bits in two flags values.

Source§

type Output = ItemAttributes

The resulting type after applying the | operator.
Source§

impl BitOrAssign for ItemAttributes

Source§

fn bitor_assign(&mut self, other: Self)

The bitwise or (|) of the bits in two flags values.

Source§

impl BitXor for ItemAttributes

Source§

fn bitxor(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.

Source§

type Output = ItemAttributes

The resulting type after applying the ^ operator.
Source§

impl BitXorAssign for ItemAttributes

Source§

fn bitxor_assign(&mut self, other: Self)

The bitwise exclusive-or (^) of the bits in two flags values.

Source§

impl Clone for ItemAttributes

Source§

fn clone(&self) -> ItemAttributes

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for ItemAttributes

Source§

impl Debug for ItemAttributes

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ItemAttributes

Source§

impl Extend<ItemAttributes> for ItemAttributes

Source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

The bitwise or (|) of the bits in each flags value.

Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl Flags for ItemAttributes

Source§

const FLAGS: &'static [Flag<ItemAttributes>]

The set of defined flags.
Source§

type Bits = u32

The underlying bits type.
Source§

fn bits(&self) -> u32

Get the underlying bits value. Read more
Source§

fn from_bits_retain(bits: u32) -> ItemAttributes

Convert from a bits value exactly.
Source§

fn empty() -> Self

Get a flags value with all bits unset.
Source§

fn all() -> Self

Get a flags value with all known bits set.
Source§

fn known_bits(&self) -> Self::Bits

Get the known bits from a flags value.
Source§

fn unknown_bits(&self) -> Self::Bits

Get the unknown bits from a flags value.
Source§

fn contains_unknown_bits(&self) -> bool

This method will return true if any unknown bits are set.
Source§

fn from_bits(bits: Self::Bits) -> Option<Self>

Convert from a bits value. Read more
Source§

fn from_bits_truncate(bits: Self::Bits) -> Self

Convert from a bits value, unsetting any unknown bits.
Source§

fn from_name(name: &str) -> Option<Self>

Get a flags value with the bits of a flag with the given name set. Read more
Source§

fn iter(&self) -> Iter<Self>

Yield a set of contained flags values. Read more
Source§

fn iter_names(&self) -> IterNames<Self>

Yield a set of contained named flags values. Read more
Source§

fn iter_defined_names() -> IterDefinedNames<Self>

Yield a set of all named flags defined by Self::FLAGS.
Source§

fn is_empty(&self) -> bool

Whether all bits in this flags value are unset.
Source§

fn is_all(&self) -> bool

Whether all known bits in this flags value are set.
Source§

fn intersects(&self, other: Self) -> bool
where Self: Sized,

Whether any set bits in a source flags value are also set in a target flags value.
Source§

fn contains(&self, other: Self) -> bool
where Self: Sized,

Whether all set bits in a source flags value are also set in a target flags value.
Source§

fn truncate(&mut self)
where Self: Sized,

Remove any unknown bits from the flags.
Source§

fn insert(&mut self, other: Self)
where Self: Sized,

The bitwise or (|) of the bits in two flags values.
Source§

fn remove(&mut self, other: Self)
where Self: Sized,

The intersection of a source flags value with the complement of a target flags value (&!). Read more
Source§

fn toggle(&mut self, other: Self)
where Self: Sized,

The bitwise exclusive-or (^) of the bits in two flags values.
Source§

fn set(&mut self, other: Self, value: bool)
where Self: Sized,

Call Flags::insert when value is true or Flags::remove when value is false.
Source§

fn clear(&mut self)
where Self: Sized,

Unsets all bits in the flags.
Source§

fn intersection(self, other: Self) -> Self

The bitwise and (&) of the bits in two flags values.
Source§

fn union(self, other: Self) -> Self

The bitwise or (|) of the bits in two flags values.
Source§

fn difference(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!). Read more
Source§

fn symmetric_difference(self, other: Self) -> Self

The bitwise exclusive-or (^) of the bits in two flags values.
Source§

fn complement(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.
Source§

impl From<SFGAO_FLAGS> for ItemAttributes

Source§

fn from(value: SFGAO_FLAGS) -> Self

Converts to this type from the input type.
Source§

impl FromIterator<ItemAttributes> for ItemAttributes

Source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

The bitwise or (|) of the bits in each flags value.

Source§

impl Into<SFGAO_FLAGS> for ItemAttributes

Source§

fn into(self) -> SFGAO_FLAGS

Converts this type into the (usually inferred) input type.
Source§

impl IntoIterator for ItemAttributes

Source§

type Item = ItemAttributes

The type of the elements being iterated over.
Source§

type IntoIter = Iter<ItemAttributes>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl LowerHex for ItemAttributes

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Not for ItemAttributes

Source§

fn not(self) -> Self

The bitwise negation (!) of the bits in a flags value, truncating the result.

Source§

type Output = ItemAttributes

The resulting type after applying the ! operator.
Source§

impl Octal for ItemAttributes

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ItemAttributes

Source§

fn eq(&self, other: &ItemAttributes) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for ItemAttributes

Source§

impl Sub for ItemAttributes

Source§

fn sub(self, other: Self) -> Self

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

Source§

type Output = ItemAttributes

The resulting type after applying the - operator.
Source§

impl SubAssign for ItemAttributes

Source§

fn sub_assign(&mut self, other: Self)

The intersection of a source flags value with the complement of a target flags value (&!).

This method is not equivalent to self & !other when other has unknown bits set. difference won’t truncate other, but the ! operator will.

Source§

impl UpperHex for ItemAttributes

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DropFlavorWrapper<T> for T

Source§

type Flavor = MayDrop

The DropFlavor that wraps T into Self
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> Identity for T
where T: ?Sized,

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more