mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
[WIP] improving Token object possibilities
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user