Source code for windows.winproxy.error
import ctypes
import windows.generated_def as gdef
from windows.generated_def.ntstatus import NtStatusException
# ApiProxy stuff
class ExportNotFound(RuntimeError):
def __init__(self, func_name, api_name):
self.func_name = func_name
self.api_name = api_name
super(ExportNotFound, self).__init__("Function {0} not found into {1}".format(func_name, api_name))
# PFW Winproxy Exception type
[docs]
class WinproxyError(WindowsError):
def __new__(cls, func_name, error_code=None):
win_error = ctypes.WinError(error_code) #GetLastError by default
api_error = super(WinproxyError, cls).__new__(cls)
api_error.api_name = func_name
api_error.winerror = win_error.winerror & 0xffffffff
api_error.strerror = win_error.strerror
api_error.args = (func_name, win_error.winerror, win_error.strerror)
return api_error
def __init__(self, func_name, error_code=None):
super(WinproxyError, self).__init__(func_name)
def __repr__(self):
return "{0}: {1}".format(self.api_name, super(WinproxyError, self).__repr__())
def __str__(self):
return "{0}: {1}".format(self.api_name, super(WinproxyError, self).__str__())
# winproxy Error check
no_error_check = None
def fail_on_minus_one(func_name, result, func, args):
"""Raise WinproxyError if call result is -1"""
if result == -1:
raise WinproxyError(func_name)
return args
def fail_on_zero(func_name, result, func, args):
"""raise WinproxyError if result is 0"""
if not result:
raise WinproxyError(func_name)
return args
def succeed_on_zero(func_name, result, func, args):
"""raise WinproxyError if result is NOT 0"""
if result:
raise WinproxyError(func_name)
return args
def result_is_error_code(func_name, result, func, args):
"""raise WinproxyError(result) if result is NOT 0"""
if result:
raise WinproxyError(func_name, error_code=result)
return args
def result_is_ntstatus(func_name, result, func, args):
"""raise NtStatusException is result is not 0"""
if result:
raise NtStatusException(result & 0xffffffff)
return args
def result_is_handle(func_name, result, func, args):
"""raise WinproxyError is result is INVALID_HANDLE_VALUE"""
if result == gdef.INVALID_HANDLE_VALUE:
raise WinproxyError(func_name)
return args