[WIP] improving Token object possibilities

This commit is contained in:
hakril
2018-11-24 22:46:58 +01:00
parent 24c5083633
commit d936942d28
2 changed files with 39 additions and 1 deletions
+38
View File
@@ -0,0 +1,38 @@
import ctypes
import windows.utils as utils
import windows.generated_def as gdef
from pfwtest import *
@pytest.mark.parametrize("type, size", [
(gdef.BYTE, 10),
(gdef.DWORD, 12),
(gdef.GUID, 42)])
def test_improved_BUFFER_size(type, size):
x = utils.BUFFER(type, 1)(size=size)
assert len(x) == 1
assert x.real_size == size
assert len(x._raw_buffer_) == size
@pytest.mark.parametrize("params, expected_type, expected_size", [
(([gdef.DWORD(x) for x in range(10)],), gdef.DWORD, 10), # list
(([gdef.GUID() for x in range(10)],), gdef.GUID, 10), # generator
((range(42), gdef.ULONGLONG), gdef.ULONGLONG, 42), # Explicite type
])
def test_improved_buffer(params, expected_type, expected_size):
x = utils.buffer(*params)
assert x._type_ == expected_type
assert len(x) == expected_size
@pytest.mark.parametrize("c_type, buffer, expected_size", [
(gdef.CHAR, "12345", 5),
(gdef.WCHAR, "\x001\x002\x003\x004\x005", 5),
(gdef.DWORD, "1111222233334444", 4),
])
def test_parial_buffer_size_guess(c_type, buffer, expected_size):
buf = windows.utils.BUFFER(c_type).from_buffer_copy(buffer)
assert len(buf) == expected_size
+1 -1
View File
@@ -122,7 +122,7 @@ class Token(utils.AutoHandle):
def _get_token_infomations(self, infos_class, rtype):
required_size = self._get_required_token_information_size(infos_class)
requested_size = max(required_size, ctypes.sizeof(rtype))
buffer = utils.buffer_type(rtype, 1)(size=requested_size)
buffer = utils.BUFFER(rtype, 1)(size=requested_size)
cbsize = gdef.DWORD()
winproxy.GetTokenInformation(self.handle, infos_class, buffer, buffer.real_size, cbsize)
return buffer[0]