def GetTokenInformation(token, information_class):
 data_size = ctypes.wintypes.DWORD()
 ctypes.windll.advapi32.GetTokenInformation(token, information_class.num, 0, 0, ctypes.byref(data_size))
 data = ctypes.create_string_buffer(data_size.value)
 handle_nonzero_success(ctypes.windll.advapi32.GetTokenInformation(token, information_class.num, ctypes.byref(data), ctypes.sizeof(data), ctypes.byref(data_size)))
 return ctypes.cast(data, ctypes.POINTER(TOKEN_USER)).contents

def GetTokenInformation ( token , information_class ) : data_size = ctypes . wintypes . DWORD ( ) ctypes . windll . advapi32 . GetTokenInformation ( token , information_class . num , 0 , 0 , ctypes . byref ( data_size ) ) data = ctypes . create_string_buffer ( data_size . value ) handle_nonzero_success ( ctypes . windll . advapi32 . GetTokenInformation ( token , information_class . num , ctypes . byref ( data ) , ctypes . sizeof ( data ) , ctypes . byref ( data_size ) ) ) return ctypes . cast ( data , ctypes . POINTER ( TOKEN_USER ) ) . contents
given a token .