summaryrefslogtreecommitdiff
path: root/ext/win32
diff options
context:
space:
mode:
-rw-r--r--ext/win32/lib/win32/registry.rb22
1 files changed, 13 insertions, 9 deletions
@@ -254,30 +254,34 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
/^(?:x64|x86_64)/ =~ RUBY_PLATFORM
end
def packhandle(h)
- win64? ? packqw(h) : packdw(h)
end
def unpackhandle(h)
- win64? ? unpackqw(h) : unpackdw(h)
end
def packdw(dw)
- [dw].pack('V')
end
def unpackdw(dw)
- dw += [0].pack('V')
- dw.unpack('V')[0]
end
def packqw(qw)
- [ qw & 0xFFFFFFFF, qw >> 32 ].pack('VV')
end
def unpackqw(qw)
- qw = qw.unpack('VV')
- (qw[1] << 32) | qw[0]
end
def make_wstr(str)
@@ -657,7 +661,7 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/pr
when REG_DWORD
[ type, API.unpackdw(data) ]
when REG_DWORD_BIG_ENDIAN
- [ type, data.unpack('N')[0] ]
when REG_QWORD
[ type, API.unpackqw(data) ]
else