libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
FILE_ATTRIBUTES.hh
Go to the documentation of this file.
1/*
2 * Copyright 2021 Assured Information Security, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#pragma once
17
18#include <introvirt/util/json/json.hh>
19
20#include <cstdint>
21#include <sstream>
22#include <string>
23
24namespace introvirt {
25namespace windows {
26namespace nt {
27
45
47 public:
48 FILE_ATTRIBUTES(uint32_t attributes) : attributes(attributes) {}
49
50 public:
51 inline bool isReadOnly() const;
52 inline bool isHidden() const;
53 inline bool isSystem() const;
54 inline bool isDirectory() const;
55 inline bool isArchive() const;
56 inline bool isDevice() const;
57 inline bool isNormal() const;
58 inline bool isTemporary() const;
59 inline bool isSparseFile() const;
60 inline bool isReparsePoint() const;
61 inline bool isCompressed() const;
62 inline bool isOffline() const;
63 inline bool isNotContentIndexed() const;
64 inline bool isEncrypted() const;
65 inline bool isVirtual() const;
66
67 inline operator uint32_t() const;
68 inline uint32_t get() const;
69
70 inline operator Json::Value() const;
71 Json::Value json() const;
72
78 std::string dir_string() const;
79
80 private:
81 uint32_t attributes;
82};
83
84inline bool FILE_ATTRIBUTES::isReadOnly() const {
85 return (attributes & FILE_ATTRIBUTE_READONLY) != 0u;
86}
87inline bool FILE_ATTRIBUTES::isHidden() const { return (attributes & FILE_ATTRIBUTE_HIDDEN) != 0u; }
88inline bool FILE_ATTRIBUTES::isSystem() const { return (attributes & FILE_ATTRIBUTE_SYSTEM) != 0u; }
89inline bool FILE_ATTRIBUTES::isDirectory() const {
90 return (attributes & FILE_ATTRIBUTE_DIRECTORY) != 0u;
91}
92inline bool FILE_ATTRIBUTES::isArchive() const {
93 return (attributes & FILE_ATTRIBUTE_ARCHIVE) != 0u;
94}
95inline bool FILE_ATTRIBUTES::isDevice() const { return (attributes & FILE_ATTRIBUTE_DEVICE) != 0u; }
96inline bool FILE_ATTRIBUTES::isNormal() const { return (attributes & FILE_ATTRIBUTE_NORMAL) != 0u; }
97inline bool FILE_ATTRIBUTES::isTemporary() const {
98 return (attributes & FILE_ATTRIBUTE_TEMPORARY) != 0u;
99}
100inline bool FILE_ATTRIBUTES::isSparseFile() const {
101 return (attributes & FILE_ATTRIBUTE_SPARSE_FILE) != 0u;
102}
104 return (attributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0u;
105}
106inline bool FILE_ATTRIBUTES::isCompressed() const {
107 return (attributes & FILE_ATTRIBUTE_COMPRESSED) != 0u;
108}
109inline bool FILE_ATTRIBUTES::isOffline() const {
110 return (attributes & FILE_ATTRIBUTE_OFFLINE) != 0u;
111}
113 return (attributes & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) != 0u;
114}
115inline bool FILE_ATTRIBUTES::isEncrypted() const {
116 return (attributes & FILE_ATTRIBUTE_ENCRYPTED) != 0u;
117}
118inline bool FILE_ATTRIBUTES::isVirtual() const {
119 return (attributes & FILE_ATTRIBUTE_VIRTUAL) != 0u;
120}
121
122inline FILE_ATTRIBUTES::operator uint32_t() const { return attributes; }
123
124inline uint32_t FILE_ATTRIBUTES::get() const { return attributes; }
125
126inline FILE_ATTRIBUTES::operator Json::Value() const { return json(); }
127
128const std::string& to_string(FILE_ATTRIBUTE_TYPE);
130
131} /* namespace nt */
132} /* namespace windows */
133} /* namespace introvirt */
Definition FILE_ATTRIBUTES.hh:46
bool isReadOnly() const
Definition FILE_ATTRIBUTES.hh:84
bool isSystem() const
Definition FILE_ATTRIBUTES.hh:88
std::string dir_string() const
Get the attributes as a directory listing string.
bool isCompressed() const
Definition FILE_ATTRIBUTES.hh:106
uint32_t get() const
Definition FILE_ATTRIBUTES.hh:124
FILE_ATTRIBUTES(uint32_t attributes)
Definition FILE_ATTRIBUTES.hh:48
bool isDirectory() const
Definition FILE_ATTRIBUTES.hh:89
bool isHidden() const
Definition FILE_ATTRIBUTES.hh:87
bool isNormal() const
Definition FILE_ATTRIBUTES.hh:96
bool isArchive() const
Definition FILE_ATTRIBUTES.hh:92
bool isSparseFile() const
Definition FILE_ATTRIBUTES.hh:100
bool isEncrypted() const
Definition FILE_ATTRIBUTES.hh:115
bool isDevice() const
Definition FILE_ATTRIBUTES.hh:95
bool isOffline() const
Definition FILE_ATTRIBUTES.hh:109
bool isVirtual() const
Definition FILE_ATTRIBUTES.hh:118
bool isTemporary() const
Definition FILE_ATTRIBUTES.hh:97
bool isReparsePoint() const
Definition FILE_ATTRIBUTES.hh:103
bool isNotContentIndexed() const
Definition FILE_ATTRIBUTES.hh:112
FILE_ATTRIBUTE_TYPE
Definition FILE_ATTRIBUTES.hh:28
@ FILE_ATTRIBUTE_TEMPORARY
Definition FILE_ATTRIBUTES.hh:36
@ FILE_ATTRIBUTE_SPARSE_FILE
Definition FILE_ATTRIBUTES.hh:37
@ FILE_ATTRIBUTE_OFFLINE
Definition FILE_ATTRIBUTES.hh:40
@ FILE_ATTRIBUTE_SYSTEM
Definition FILE_ATTRIBUTES.hh:31
@ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
Definition FILE_ATTRIBUTES.hh:41
@ FILE_ATTRIBUTE_READONLY
Definition FILE_ATTRIBUTES.hh:29
@ FILE_ATTRIBUTE_DEVICE
Definition FILE_ATTRIBUTES.hh:34
@ FILE_ATTRIBUTE_HIDDEN
Definition FILE_ATTRIBUTES.hh:30
@ FILE_ATTRIBUTE_NORMAL
Definition FILE_ATTRIBUTES.hh:35
@ FILE_ATTRIBUTE_REPARSE_POINT
Definition FILE_ATTRIBUTES.hh:38
@ FILE_ATTRIBUTE_VIRTUAL
Definition FILE_ATTRIBUTES.hh:43
@ FILE_ATTRIBUTE_ARCHIVE
Definition FILE_ATTRIBUTES.hh:33
@ FILE_ATTRIBUTE_COMPRESSED
Definition FILE_ATTRIBUTES.hh:39
@ FILE_ATTRIBUTE_ENCRYPTED
Definition FILE_ATTRIBUTES.hh:42
@ FILE_ATTRIBUTE_DIRECTORY
Definition FILE_ATTRIBUTES.hh:32
const std::string & to_string(APPHELPCACHESERVICECLASS val)
Core IntroVirt classes.
Definition Cr0.hh:20