Module: Chef::ReservedNames::Win32::API::File
- Extended by:
- Chef::ReservedNames::Win32::API
- Included in:
- File::Info, ReservedNames::Win32::File, ReservedNames::Win32::File
- Defined in:
- lib/chef/win32/api/file.rb
Defined Under Namespace
Classes: BY_HANDLE_FILE_INFORMATION, FILETIME, REPARSE_DATA_BUFFER, REPARSE_DATA_BUFFER_GENERIC, REPARSE_DATA_BUFFER_MOUNT_POINT, REPARSE_DATA_BUFFER_SYMBOLIC_LINK, REPARSE_DATA_BUFFER_UNION, 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
- FILE_FLAG_WRITE_THROUGH =
0x80000000
- FILE_FLAG_OVERLAPPED =
0x40000000
- FILE_FLAG_NO_BUFFERING =
0x20000000
- FILE_FLAG_RANDOM_ACCESS =
0x10000000
- FILE_FLAG_SEQUENTIAL_SCAN =
0x08000000
- FILE_FLAG_DELETE_ON_CLOSE =
0x04000000
- FILE_FLAG_BACKUP_SEMANTICS =
0x02000000
- FILE_FLAG_POSIX_SEMANTICS =
0x01000000
- FILE_FLAG_OPEN_REPARSE_POINT =
0x00200000
- FILE_FLAG_OPEN_NO_RECALL =
0x00100000
- FILE_FLAG_FIRST_PIPE_INSTANCE =
0x00080000
- 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
- FILE_DEVICE_BEEP =
DeviceIoControl control codes
0x00000001
- FILE_DEVICE_CD_ROM =
0x00000002
- FILE_DEVICE_CD_ROM_FILE_SYSTEM =
0x00000003
- FILE_DEVICE_CONTROLLER =
0x00000004
- FILE_DEVICE_DATALINK =
0x00000005
- FILE_DEVICE_DFS =
0x00000006
- FILE_DEVICE_DISK =
0x00000007
- FILE_DEVICE_DISK_FILE_SYSTEM =
0x00000008
- FILE_DEVICE_FILE_SYSTEM =
0x00000009
- FILE_DEVICE_INPORT_PORT =
0x0000000a
- FILE_DEVICE_KEYBOARD =
0x0000000b
- FILE_DEVICE_MAILSLOT =
0x0000000c
- FILE_DEVICE_MIDI_IN =
0x0000000d
- FILE_DEVICE_MIDI_OUT =
0x0000000e
- FILE_DEVICE_MOUSE =
0x0000000f
- FILE_DEVICE_MULTI_UNC_PROVIDER =
0x00000010
- FILE_DEVICE_NAMED_PIPE =
0x00000011
- FILE_DEVICE_NETWORK =
0x00000012
- FILE_DEVICE_NETWORK_BROWSER =
0x00000013
- FILE_DEVICE_NETWORK_FILE_SYSTEM =
0x00000014
- FILE_DEVICE_NULL =
0x00000015
- FILE_DEVICE_PARALLEL_PORT =
0x00000016
- FILE_DEVICE_PHYSICAL_NETCARD =
0x00000017
- FILE_DEVICE_PRINTER =
0x00000018
- FILE_DEVICE_SCANNER =
0x00000019
- FILE_DEVICE_SERIAL_MOUSE_PORT =
0x0000001a
- FILE_DEVICE_SERIAL_PORT =
0x0000001b
- FILE_DEVICE_SCREEN =
0x0000001c
- FILE_DEVICE_SOUND =
0x0000001d
- FILE_DEVICE_STREAMS =
0x0000001e
- FILE_DEVICE_TAPE =
0x0000001f
- FILE_DEVICE_TAPE_FILE_SYSTEM =
0x00000020
- FILE_DEVICE_TRANSPORT =
0x00000021
- FILE_DEVICE_UNKNOWN =
0x00000022
- FILE_DEVICE_VIDEO =
0x00000023
- FILE_DEVICE_VIRTUAL_DISK =
0x00000024
- FILE_DEVICE_WAVE_IN =
0x00000025
- FILE_DEVICE_WAVE_OUT =
0x00000026
- FILE_DEVICE_8042_PORT =
0x00000027
- FILE_DEVICE_NETWORK_REDIRECTOR =
0x00000028
- FILE_DEVICE_BATTERY =
0x00000029
- FILE_DEVICE_BUS_EXTENDER =
0x0000002a
- FILE_DEVICE_MODEM =
0x0000002b
- FILE_DEVICE_VDM =
0x0000002c
- FILE_DEVICE_MASS_STORAGE =
0x0000002d
- FILE_DEVICE_SMB =
0x0000002e
- FILE_DEVICE_KS =
0x0000002f
- FILE_DEVICE_CHANGER =
0x00000030
- FILE_DEVICE_SMARTCARD =
0x00000031
- FILE_DEVICE_ACPI =
0x00000032
- FILE_DEVICE_DVD =
0x00000033
- FILE_DEVICE_FULLSCREEN_VIDEO =
0x00000034
- FILE_DEVICE_DFS_FILE_SYSTEM =
0x00000035
- FILE_DEVICE_DFS_VOLUME =
0x00000036
- FILE_DEVICE_SERENUM =
0x00000037
- FILE_DEVICE_TERMSRV =
0x00000038
- FILE_DEVICE_KSEC =
0x00000039
- FILE_DEVICE_FIPS =
0x0000003A
- FILE_DEVICE_INFINIBAND =
0x0000003B
- FILE_DEVICE_VMBUS =
0x0000003E
- FILE_DEVICE_CRYPT_PROVIDER =
0x0000003F
- FILE_DEVICE_WPD =
0x00000040
- FILE_DEVICE_BLUETOOTH =
0x00000041
- FILE_DEVICE_MT_COMPOSITE =
0x00000042
- FILE_DEVICE_MT_TRANSPORT =
0x00000043
- FILE_DEVICE_BIOMETRIC =
0x00000044
- FILE_DEVICE_PMI =
0x00000045
- METHOD_BUFFERED =
Methods
0
- METHOD_IN_DIRECT =
1
- METHOD_OUT_DIRECT =
2
- METHOD_NEITHER =
3
- METHOD_DIRECT_TO_HARDWARE =
METHOD_IN_DIRECT
- METHOD_DIRECT_FROM_HARDWARE =
METHOD_OUT_DIRECT
- FILE_ANY_ACCESS =
Access
0
- FILE_SPECIAL_ACCESS =
FILE_ANY_ACCESS
- FILE_READ_ACCESS =
0x0001
- FILE_WRITE_ACCESS =
0x0002
- FSCTL_GET_REPARSE_POINT =
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
- IO_REPARSE_TAG_MOUNT_POINT =
Reparse point tags
0xA0000003
- IO_REPARSE_TAG_HSM =
0xC0000004
- IO_REPARSE_TAG_HSM2 =
0x80000006
- IO_REPARSE_TAG_SIS =
0x80000007
- IO_REPARSE_TAG_WIM =
0x80000008
- IO_REPARSE_TAG_CSV =
0x80000009
- IO_REPARSE_TAG_DFS =
0x8000000A
- IO_REPARSE_TAG_SYMLINK =
0xA000000C
- IO_REPARSE_TAG_DFSR =
0x80000012
- MAXIMUM_REPARSE_DATA_BUFFER_SIZE =
16*1024
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_INFORMATION_CLASS, 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
Class Method Summary collapse
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.
- #retrieve_file_info(file_name) ⇒ Object
- #symlink_file_handle(path, &block) ⇒ Object
Class Method Details
.CTL_CODE(device_type, function, method, access) ⇒ Object
161 162 163 |
# File 'lib/chef/win32/api/file.rb', line 161 def self.CTL_CODE( device_type, function, method, access ) (device_type << 16) | (access << 14) | (function << 2) | method end |
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
461 462 463 |
# File 'lib/chef/win32/api/file.rb', line 461 def encode_path(path) Chef::Util::PathHelper.canonical_path(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
492 493 494 495 496 497 498 499 500 501 502 503 504 505 |
# File 'lib/chef/win32/api/file.rb', line 492 def file_handle(path, &block) begin path = encode_path(path) handle = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS, nil) if handle == INVALID_HANDLE_VALUE Chef::ReservedNames::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
468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 |
# File 'lib/chef/win32/api/file.rb', line 468 def file_search_handle(path, &block) begin # Workaround for CHEF-4419: # Make sure paths starting with "/" has a drive letter # assigned from the current working diretory. # Note: With CHEF-4427 this issue will be fixed with a # broader fix to map all the paths starting with "/" to # SYSTEM_DRIVE on windows. path = ::File.(path) if path.start_with? "/" path = encode_path(path) find_data = WIN32_FIND_DATA.new handle = FindFirstFileW(path, find_data) if handle == INVALID_HANDLE_VALUE Chef::ReservedNames::Win32::Error.raise! end block.call(handle, find_data) ensure FindClose(handle) if handle && handle != INVALID_HANDLE_VALUE end end |
#retrieve_file_info(file_name) ⇒ Object
522 523 524 525 526 527 528 529 530 531 532 |
# File 'lib/chef/win32/api/file.rb', line 522 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::ReservedNames::Win32::Error.raise! end end file_information end |
#symlink_file_handle(path, &block) ⇒ Object
507 508 509 510 511 512 513 514 515 516 517 518 519 520 |
# File 'lib/chef/win32/api/file.rb', line 507 def symlink_file_handle(path, &block) begin path = encode_path(path) handle = CreateFileW(path, FILE_READ_EA, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, nil) if handle == INVALID_HANDLE_VALUE Chef::ReservedNames::Win32::Error.raise! end block.call(handle) ensure CloseHandle(handle) if handle && handle != INVALID_HANDLE_VALUE end end |