Module: Chef::Win32::API::File
- Extended by:
- Chef::Win32::API
- Included in:
- File, File, File::Info
- Defined in:
- lib/chef/win32/api/file.rb
Defined Under Namespace
Classes: BY_HANDLE_FILE_INFORMATION, FILETIME, SECURITY_ATTRIBUTES, WIN32_FIND_DATA
Constant Summary collapse
- FILE_ATTRIBUTE_READONLY =
Win32 API Constants
0x00000001- FILE_ATTRIBUTE_HIDDEN =
0x00000002- FILE_ATTRIBUTE_SYSTEM =
0x00000004- FILE_ATTRIBUTE_DIRECTORY =
0x00000010- FILE_ATTRIBUTE_ARCHIVE =
0x00000020- FILE_ATTRIBUTE_DEVICE =
0x00000040- FILE_ATTRIBUTE_NORMAL =
0x00000080- FILE_ATTRIBUTE_TEMPORARY =
0x00000100- FILE_ATTRIBUTE_SPARSE_FILE =
0x00000200- FILE_ATTRIBUTE_REPARSE_POINT =
0x00000400- FILE_ATTRIBUTE_COMPRESSED =
0x00000800- FILE_ATTRIBUTE_OFFLINE =
0x00001000- FILE_ATTRIBUTE_NOT_CONTENT_INDEXED =
0x00002000- FILE_ATTRIBUTE_ENCRYPTED =
0x00004000- FILE_ATTRIBUTE_VIRTUAL =
0x00010000- INVALID_FILE_ATTRIBUTES =
0xFFFFFFFF- IO_REPARSE_TAG_SYMLINK =
0xA000000C- INVALID_HANDLE_VALUE =
0xFFFFFFFF- MAX_PATH =
260- SYMBOLIC_LINK_FLAG_DIRECTORY =
0x1- FILE_NAME_NORMALIZED =
0x0- FILE_NAME_OPENED =
0x8- FILE_SHARE_READ =
TODO add the rest of these CONSTS
0x00000001- OPEN_EXISTING =
3
Constants included from Chef::Win32::API
Constants included from System
System::PRODUCT_BUSINESS, System::PRODUCT_BUSINESS_N, System::PRODUCT_CLUSTER_SERVER, System::PRODUCT_DATACENTER_SERVER, System::PRODUCT_DATACENTER_SERVER_CORE, System::PRODUCT_DATACENTER_SERVER_CORE_V, System::PRODUCT_DATACENTER_SERVER_V, System::PRODUCT_ENTERPRISE, System::PRODUCT_ENTERPRISE_E, System::PRODUCT_ENTERPRISE_N, System::PRODUCT_ENTERPRISE_SERVER, System::PRODUCT_ENTERPRISE_SERVER_CORE, System::PRODUCT_ENTERPRISE_SERVER_CORE_V, System::PRODUCT_ENTERPRISE_SERVER_IA64, System::PRODUCT_ENTERPRISE_SERVER_V, System::PRODUCT_HOME_BASIC, System::PRODUCT_HOME_BASIC_E, System::PRODUCT_HOME_BASIC_N, System::PRODUCT_HOME_PREMIUM, System::PRODUCT_HOME_PREMIUM_E, System::PRODUCT_HOME_PREMIUM_N, System::PRODUCT_HOME_PREMIUM_SERVER, System::PRODUCT_HOME_SERVER, System::PRODUCT_HYPERV, System::PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT, System::PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING, System::PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY, System::PRODUCT_PROFESSIONAL, System::PRODUCT_PROFESSIONAL_E, System::PRODUCT_PROFESSIONAL_N, System::PRODUCT_SB_SOLUTION_SERVER, System::PRODUCT_SERVER_FOR_SMALLBUSINESS, System::PRODUCT_SERVER_FOR_SMALLBUSINESS_V, System::PRODUCT_SERVER_FOUNDATION, System::PRODUCT_SMALLBUSINESS_SERVER, System::PRODUCT_SOLUTION_EMBEDDEDSERVER, System::PRODUCT_STANDARD_SERVER, System::PRODUCT_STANDARD_SERVER_CORE, System::PRODUCT_STANDARD_SERVER_CORE_V, System::PRODUCT_STANDARD_SERVER_V, System::PRODUCT_STARTER, System::PRODUCT_STARTER_E, System::PRODUCT_STARTER_N, System::PRODUCT_STORAGE_ENTERPRISE_SERVER, System::PRODUCT_STORAGE_EXPRESS_SERVER, System::PRODUCT_STORAGE_STANDARD_SERVER, System::PRODUCT_STORAGE_WORKGROUP_SERVER, System::PRODUCT_ULTIMATE, System::PRODUCT_ULTIMATE_E, System::PRODUCT_ULTIMATE_N, System::PRODUCT_UNDEFINED, System::PRODUCT_WEB_SERVER, System::PRODUCT_WEB_SERVER_CORE, System::SM_SERVERR2, System::VER_NT_DOMAIN_CONTROLLER, System::VER_NT_SERVER, System::VER_NT_WORKSTATION, System::VER_SUITE_BACKOFFICE, System::VER_SUITE_BLADE, System::VER_SUITE_COMPUTE_SERVER, System::VER_SUITE_DATACENTER, System::VER_SUITE_EMBEDDEDNT, System::VER_SUITE_ENTERPRISE, System::VER_SUITE_PERSONAL, System::VER_SUITE_SINGLEUSERTS, System::VER_SUITE_SMALLBUSINESS, System::VER_SUITE_SMALLBUSINESS_RESTRICTED, System::VER_SUITE_STORAGE_SERVER, System::VER_SUITE_TERMINAL, System::VER_SUITE_WH_SERVER
Constants included from Security
Security::ACCESS_ALLOWED_ACE_TYPE, Security::ACCESS_ALLOWED_CALLBACK_ACE_TYPE, Security::ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE, Security::ACCESS_ALLOWED_COMPOUND_ACE_TYPE, Security::ACCESS_ALLOWED_OBJECT_ACE_TYPE, Security::ACCESS_DENIED_ACE_TYPE, Security::ACCESS_DENIED_CALLBACK_ACE_TYPE, Security::ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE, Security::ACCESS_DENIED_OBJECT_ACE_TYPE, Security::ACCESS_MAX_MS_ACE_TYPE, Security::ACCESS_MAX_MS_OBJECT_ACE_TYPE, Security::ACCESS_MAX_MS_V2_ACE_TYPE, Security::ACCESS_MAX_MS_V3_ACE_TYPE, Security::ACCESS_MAX_MS_V4_ACE_TYPE, Security::ACCESS_MAX_MS_V5_ACE_TYPE, Security::ACCESS_MIN_MS_ACE_TYPE, Security::ACCESS_MIN_MS_OBJECT_ACE_TYPE, Security::ACCESS_SYSTEM_SECURITY, Security::ACL_REVISION, Security::ACL_REVISION1, Security::ACL_REVISION2, Security::ACL_REVISION3, Security::ACL_REVISION4, Security::ACL_REVISION_DS, Security::CONTAINER_INHERIT_ACE, Security::DACL_SECURITY_INFORMATION, Security::DELETE, Security::FAILED_ACCESS_ACE_FLAG, Security::FILE_ADD_FILE, Security::FILE_ADD_SUBDIRECTORY, Security::FILE_ALL_ACCESS, Security::FILE_APPEND_DATA, Security::FILE_CREATE_PIPE_INSTANCE, Security::FILE_DELETE_CHILD, Security::FILE_EXECUTE, Security::FILE_GENERIC_EXECUTE, Security::FILE_GENERIC_READ, Security::FILE_GENERIC_WRITE, Security::FILE_LIST_DIRECTORY, Security::FILE_READ_ATTRIBUTES, Security::FILE_READ_DATA, Security::FILE_READ_EA, Security::FILE_TRAVERSE, Security::FILE_WRITE_ATTRIBUTES, Security::FILE_WRITE_DATA, Security::FILE_WRITE_EA, Security::GENERIC_ALL, Security::GENERIC_EXECUTE, Security::GENERIC_READ, Security::GENERIC_WRITE, Security::GROUP_SECURITY_INFORMATION, Security::INHERITED_ACE, Security::INHERIT_ONLY_ACE, Security::LABEL_SECURITY_INFORMATION, Security::MAXDWORD, Security::MAX_ACL_REVISION, Security::MIN_ACL_REVISION, Security::NO_PROPAGATE_INHERIT_ACE, Security::OBJECT_INHERIT_ACE, Security::OWNER_SECURITY_INFORMATION, Security::PROTECTED_DACL_SECURITY_INFORMATION, Security::PROTECTED_SACL_SECURITY_INFORMATION, Security::READ_CONTROL, Security::SACL_SECURITY_INFORMATION, Security::SECURITY_DESCRIPTOR_MIN_LENGTH, Security::SECURITY_DESCRIPTOR_REVISION, Security::SECURITY_DESCRIPTOR_REVISION1, Security::SE_DACL_AUTO_INHERITED, Security::SE_DACL_AUTO_INHERIT_REQ, Security::SE_DACL_DEFAULTED, Security::SE_DACL_PRESENT, Security::SE_DACL_PROTECTED, Security::SE_GROUP_DEFAULTED, Security::SE_OBJECT_TYPE, Security::SE_OWNER_DEFAULTED, Security::SE_PRIVILEGE_ENABLED, Security::SE_PRIVILEGE_ENABLED_BY_DEFAULT, Security::SE_PRIVILEGE_REMOVED, Security::SE_PRIVILEGE_USED_FOR_ACCESS, Security::SE_PRIVILEGE_VALID_ATTRIBUTES, Security::SE_RM_CONTROL_VALID, Security::SE_SACL_AUTO_INHERITED, Security::SE_SACL_AUTO_INHERIT_REQ, Security::SE_SACL_DEFAULTED, Security::SE_SACL_PRESENT, Security::SE_SACL_PROTECTED, Security::SE_SELF_RELATIVE, Security::SID_NAME_USE, Security::SPECIFIC_RIGHTS_ALL, Security::STANDARD_RIGHTS_ALL, Security::STANDARD_RIGHTS_EXECUTE, Security::STANDARD_RIGHTS_READ, Security::STANDARD_RIGHTS_REQUIRED, Security::STANDARD_RIGHTS_WRITE, Security::SUCCESSFUL_ACCESS_ACE_FLAG, Security::SYNCHRONIZE, Security::SYSTEM_ALARM_ACE_TYPE, Security::SYSTEM_ALARM_CALLBACK_ACE_TYPE, Security::SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE, Security::SYSTEM_ALARM_OBJECT_ACE_TYPE, Security::SYSTEM_AUDIT_ACE_TYPE, Security::SYSTEM_AUDIT_CALLBACK_ACE_TYPE, Security::SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE, Security::SYSTEM_AUDIT_OBJECT_ACE_TYPE, Security::SYSTEM_MANDATORY_LABEL_ACE_TYPE, Security::TOKEN_ADJUST_DEFAULT, Security::TOKEN_ADJUST_GROUPS, Security::TOKEN_ADJUST_PRIVILEGES, Security::TOKEN_ADJUST_SESSIONID, Security::TOKEN_ALL_ACCESS, Security::TOKEN_ASSIGN_PRIMARY, Security::TOKEN_DUPLICATE, Security::TOKEN_IMPERSONATE, Security::TOKEN_QUERY, Security::TOKEN_QUERY_SOURCE, Security::TOKEN_READ, Security::UNPROTECTED_DACL_SECURITY_INFORMATION, Security::UNPROTECTED_SACL_SECURITY_INFORMATION, Security::VALID_INHERIT_FLAGS, Security::WRITE_DAC, Security::WRITE_OWNER
Instance Method Summary collapse
-
#encode_path(path) ⇒ Object
takes the given path pre-pends “\?" and UTF-16LE encodes it.
-
#file_handle(path, &block) ⇒ Object
retrieves a file handle and passes it to &block along with the find_data.
-
#file_search_handle(path, &block) ⇒ Object
retrieves a file search handle and passes it to &block along with the find_data.
- #path_prepender ⇒ Object
- #retrieve_file_info(file_name) ⇒ Object
Methods included from Chef::Win32::API
extended, make_uint64, wtime_to_time
Instance Method Details
#encode_path(path) ⇒ Object
takes the given path pre-pends “\?" and UTF-16LE encodes it. Used to prepare paths to be passed to the *W vesion of WinAPI File functions
230 231 232 233 |
# File 'lib/chef/win32/api/file.rb', line 230 def encode_path(path) path.gsub!(::File::SEPARATOR, ::File::ALT_SEPARATOR) (path_prepender << path).to_wstring end |
#file_handle(path, &block) ⇒ Object
retrieves a file handle and passes it to &block along with the find_data. also ensures the handle is closed on exit of the block
259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
# File 'lib/chef/win32/api/file.rb', line 259 def file_handle(path, &block) begin path = encode_path(path) handle = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nil) if handle == INVALID_HANDLE_VALUE Chef::Win32::Error.raise! end block.call(handle) ensure CloseHandle(handle) if handle && handle != INVALID_HANDLE_VALUE end end |
#file_search_handle(path, &block) ⇒ Object
retrieves a file search handle and passes it to &block along with the find_data. also ensures the handle is closed on exit of the block
242 243 244 245 246 247 248 249 250 251 252 253 254 |
# File 'lib/chef/win32/api/file.rb', line 242 def file_search_handle(path, &block) begin path = encode_path(path) find_data = WIN32_FIND_DATA.new handle = FindFirstFileW(path, find_data) if handle == INVALID_HANDLE_VALUE Chef::Win32::Error.raise! end block.call(handle, find_data) ensure FindClose(handle) if handle && handle != INVALID_HANDLE_VALUE end end |
#path_prepender ⇒ Object
235 236 237 |
# File 'lib/chef/win32/api/file.rb', line 235 def path_prepender "\\\\?\\" end |
#retrieve_file_info(file_name) ⇒ Object
274 275 276 277 278 279 280 281 282 283 284 |
# File 'lib/chef/win32/api/file.rb', line 274 def retrieve_file_info(file_name) file_information = nil file_handle(file_name) do |handle| file_information = BY_HANDLE_FILE_INFORMATION.new success = GetFileInformationByHandle(handle, file_information) if success == 0 Chef::Win32::Error.raise! end end file_information end |