Class: Recls::Ximpl::FileStat::ByHandleInformation

Inherits:
Object
  • Object
show all
Defined in:
lib/recls/ximpl/windows.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ ByHandleInformation

Returns a new instance of ByHandleInformation.



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/recls/ximpl/windows.rb', line 78

def initialize(path)

	@volume_id	=	0
	@file_index	=	0
	@num_links	=	0

	# for some reason not forcing this new string causes 'can't modify frozen string (TypeError)' (in Ruby 1.8.x)
	hFile = CreateFile.call("#{path}", 0, 0, NULL, OPEN_EXISTING, 0, NULL);
	if INVALID_HANDLE_VALUE != hFile

		begin
			bhfi	=	[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
			bhfi	=	bhfi.pack(BHFI_pack_string)

			if GetFileInformationByHandle.call(hFile, bhfi)

				bhfi		=	bhfi.unpack(BHFI_pack_string)

				@volume_id	=	bhfi[4]
				@file_index	=	(bhfi[8] << 32) | bhfi[9]
				@num_links	=	bhfi[7]
			else
			end
		ensure
			CloseHandle.call(hFile)
		end
	end
end

Instance Attribute Details

#file_indexObject (readonly)

Returns the value of attribute file_index.



108
109
110
# File 'lib/recls/ximpl/windows.rb', line 108

def file_index
  @file_index
end

Returns the value of attribute num_links.



109
110
111
# File 'lib/recls/ximpl/windows.rb', line 109

def num_links
  @num_links
end

#volume_idObject (readonly)

Returns the value of attribute volume_id.



107
108
109
# File 'lib/recls/ximpl/windows.rb', line 107

def volume_id
  @volume_id
end