o
    j[                     @   s   d Z ddlZddlZdZee  Zze W n ey5   da	G dd de
ZddlmZ dddZY nw ejZejZejZejZejZejZG dd	 d	ejZG d
d dejZzeee  ejZW n eyu   ejZY nw dZerG dd deZG dd deZG dd deZe ZdddZ dddZ!dddZ"G dd deZ#G dd deZ$dd Z%d d! Z&ejZ'ejZ(ej)Z*ej+Z,ej-Z.ej/Z0ej1Z2ej3Z4ej5Z6ej7Z8ej9Z:ej1Z;ej/Z<ej5Z=ej3Z>ej5Z?ej3Z@ej9ZAej7ZBejCZDejEZFejGZHej1ZIej5ZJej9ZKejLZMej/ZNej3ZOej7ZPej5ZQej9ZRej3ZSej7ZTej3ZUej7ZVej5ZWejXZYejZZ[zej\Z]ej^Z_W n  e`yV   e,e0e4e8d"ee' Z]e.e2e6e:d"ee' Z_Y nw ee]Zae]Zbe]Zce]Zde'ZeeeeZfeDZgeFZheDZieFZjee,Zkee.Zlee0Zmee2Znee4Zoee6Zpee@Zqee?ZreoZseebZteqZuerZve(Zwe,ZxeeWZyeyZze(Z{e,Z|eBZ}eeUZ~eeSZeeVZeeTZe~ZeZeZeZe0Ze'ZeeZeZeZeZeZeZeeZeZeZeZeZeZeZeZe?ZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZe?ZeeZecZe4Ze8Ze4Ze'Ze'Ze4ZeZeeZeeZeeZG d#d$ d$eZeeZG d%d& d&eZeeZdZd'Zd(ZdZd(Zzed'jZW n! eyp   eejd)krbd*Zneejd+krmd,Zn Y nw d-Zd.ZdZd(Zd/Zd0Zd1Zd2Zd+Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:Zd;Zd<Zd=Zd>Zd?Zd@ZdAZdBZdCZdDZdEZdFZdGZdHZdIZdJZdKZdLZdMZdNZdOZdPZdQZdRZdSZdTZdUZdVZdWZdXZdYZdZZd[Zd\Zd]Zd^Zd_Zd`ZdaZdbZdcZddZdeZdfZdgZdhZdiZdjZdkZdlZ dmZdnZdoZdpZdqZdrZdsZdtZduZ	dvZ
dwZdxZdyZdzZd{Zd|Zd}Zd~ZdZdZdZdZdZdZdZdZeZeZeZdZdZG dd deZ G dd deZ!G dd deZ"ee  #eZdS )z
Common definitions.
    Nc                   @      e Zd Zdd ZdS )WindowsErrorc                 O   s8   t j| g|R i | td u rddlma t | _d S )Nr   )GetLastError)OSError__init___glekernel32r   winerror)selfargskwargs r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/common/windows/defines.pyr   5   s   zWindowsError.__init__N)__name__
__module____qualname__r   r   r   r   r   r   4       r   )getenvc                 C   s$   t | d }|d u rt |  |}|S N)_real_getenvupper)keydefaultvaluer   r   r   r   =   s   
r   c                   @   "   e Zd ZeejdkrdZdS dS )	Structure      Nr   r   r   sizeofctypesc_void_p_pack_r   r   r   r   r   N       r   c                   @   r   )Unionr   r   Nr   r   r   r   r   r$   Q   r#   r$   Fc                   @   r   )
WinDllHookc                 C   s   | drt| |S t|S N_)
startswithobject__getattr__WinFuncHookr
   namer   r   r   r*   h   s   
zWinDllHook.__getattr__N)r   r   r   r*   r   r   r   r   r%   g   r   r%   c                   @   s   e Zd Zdd Zdd ZdS )r+   c                 C   s
   || _ d S r   )_WinFuncHook__namer,   r   r   r   r   n   s   
zWinFuncHook.__init__c                 C   s"   | drt| |S t| j|S r&   )r(   r)   r*   WinCallHookr.   r,   r   r   r   r*   q   s   
zWinFuncHook.__getattr__N)r   r   r   r   r*   r   r   r   r   r+   m   s    r+   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r/   c                 C   s$   || _ || _tttj||| _d S r   )_WinCallHook__dllname_WinCallHook__funcnamegetattrr    windll_WinCallHook__func)r
   dllnamefuncnamer   r   r   r   w   s   zWinCallHook.__init__c                 C   sZ   zt | |}t| j|| W d S  ty,   z
t| j| W Y d S  ty+   Y Y d S w w r   )r2   setattrr4   AttributeErrordelattr)r
   	attributer   r   r   r   __copy_attribute|   s   
zWinCallHook.__copy_attributec                 G   sX   |  d |  d |  d td td| j| j|f  | j| }td|f  |S )Nargtypesrestypeerrcheckz
----------z
%s ! %s %rz== %r)_WinCallHook__copy_attributeprintr0   r1   r4   )r
   argvretvalr   r   r   __call__   s   



zWinCallHook.__call__N)r   r   r   r   r?   rC   r   r   r   r   r/   v   s    
r/   r   c                 C   s   | st  | S )z
    Error checking for most Win32 API calls.

    The function is assumed to return an integer, which is C{0} on error.
    In that case the C{WindowsError} exception is raised.
    r    WinErrorresultfunc	argumentsr   r   r   RaiseIfZero   s   rJ   c                 C   s   | rt  | S )ao  
    Error checking for some odd Win32 API calls.

    The function is assumed to return an integer, which is zero on success.
    If the return value is nonzero the C{WindowsError} exception is raised.

    This is mostly useful for free() like functions, where the return value is
    the pointer to the memory block on failure or a C{NULL} pointer on success.
    rD   rF   r   r   r   RaiseIfNotZero   s   
rK   c                 C   s   | t kr	t| | S )z
    Error checking for Win32 Registry API calls.

    The function is assumed to return a Win32 error code. If the code is not
    C{ERROR_SUCCESS} then a C{WindowsError} exception is raised.
    )ERROR_SUCCESSr    rE   rF   r   r   r   RaiseIfNotErrorSuccess   s   
rM   c                   @   s4   e Zd ZdZedZedZeZdd Zdd Z	dS )GuessStringTypea  
    Decorator that guesses the correct version (A or W) to call
    based on the types of the strings passed as parameters.

    Calls the B{ANSI} version if the only string types are ANSI.

    Calls the B{Unicode} version if Unicode or mixed string types are passed.

    The default if no string arguments are passed depends on the value of the
    L{t_default} class variable.

    @type fn_ansi: function
    @ivar fn_ansi: ANSI version of the API function to call.
    @type fn_unicode: function
    @ivar fn_unicode: Unicode (wide) version of the API function to call.

    @type t_default: type
    @cvar t_default: Default string type to use.
        Possible values are:
         - type('') for ANSI
         - type(u'') for Unicode
     c                 C   ~   || _ || _z| j jdd | _W n	 ty   Y nw z| j j| _W n	 ty+   Y nw z| j j| _W dS  ty>   Y dS w z
        @type  fn_ansi: function
        @param fn_ansi: ANSI version of the API function to call.
        @type  fn_unicode: function
        @param fn_unicode: Unicode (wide) version of the API function to call.
        Nfn_ansi
fn_unicoder   r8   r   __doc__r
   rT   rU   r   r   r   r      "   zGuessStringType.__init__c           	      O   s   | j }dd |D }|dd | D  | j|kr| j}n| j}| j|v r[||v rWt|}tt	|D ]}|| |krC|| ||< q5| D ]\}}t
||krV|||< qH| j}n||v rb| j}||i |S )Nc                 S      g | ]}t |qS r   type.0itemr   r   r   
<listcomp>       z,GuessStringType.__call__.<locals>.<listcomp>c                 S      g | ]\}}t |qS r   rZ   r]   r   r   r   r   r   r_          )t_ansiextenditems	t_defaultrT   rU   	t_unicodelistrangelenr[   )	r
   rA   argdrd   v_typesfnindexr   r   r   r   r   rC      s*   

zGuessStringType.__call__N)
r   r   r   rV   r[   rd   rh   rg   r   rC   r   r   r   r   rN      s    rN   c                   @   s    e Zd ZdZdd Zdd ZdS )DefaultStringTypeaq  
    Decorator that uses the default version (A or W) to call
    based on the configuration of the L{GuessStringType} decorator.

    @see: L{GuessStringType.t_default}

    @type fn_ansi: function
    @ivar fn_ansi: ANSI version of the API function to call.
    @type fn_unicode: function
    @ivar fn_unicode: Unicode (wide) version of the API function to call.
    c                 C   rP   rQ   rS   rW   r   r   r   r   &  rX   zDefaultStringType.__init__c                 O   s(   t jt jkr
| j}n| j}||i |S r   )rN   rg   rd   rT   rU   )r
   rA   rl   rn   r   r   r   rC   >  s   zDefaultStringType.__call__N)r   r   r   rV   r   rC   r   r   r   r   rp     s    rp   c                       t   fdd}|S )z
    Decorator that generates an ANSI version of a Unicode (wide) only API call.

    @type  fn: callable
    @param fn: Unicode (wide) version of the API function to call.
    c                     s   t j}t j}dd | D }|dd | D  ||v rMt| } tt| D ]}|| |kr7|| | | |< q'| D ]\}}t||krL||||< q< | i |S )Nc                 S   rY   r   rZ   r\   r   r   r   r_   T  r`   z4MakeANSIVersion.<locals>.wrapper.<locals>.<listcomp>c                 S   ra   r   rZ   rb   r   r   r   r_   U  rc   	rN   rd   rh   re   rf   ri   rj   rk   r[   rA   rl   rd   rh   rm   ro   r   r   rn   r   r   wrapperP     z MakeANSIVersion.<locals>.wrapper	functoolswrapsrn   ru   r   rt   r   MakeANSIVersionI     r{   c                    rq   )z
    Decorator that generates a Unicode (wide) version of an ANSI only API call.

    @type  fn: callable
    @param fn: ANSI version of the API function to call.
    c                     s   t j}t j}dd | D }|dd | D  ||v rMt| } tt| D ]}|| |kr7|| | | |< q'| D ]\}}t||krL||||< q< | i |S )Nc                 S   rY   r   rZ   r\   r   r   r   r_   l  r`   z4MakeWideVersion.<locals>.wrapper.<locals>.<listcomp>c                 S   ra   r   rZ   rb   r   r   r   r_   m  rc   rr   rs   rt   r   r   ru   h  rv   z MakeWideVersion.<locals>.wrapperrw   rz   r   rt   r   MakeWideVersiona  r|   r}   )r      r      c                   @      e Zd ZdefdefgZdS )FLOAT128LowPartHighPartN)r   r   r   QWORD_fields_r   r   r   r   r         r   c                   @   s   e Zd ZdefdefgZdS )M128ALowHighN)r   r   r   	ULONGLONGLONGLONGr   r   r   r   r   r   #  r   r   rR   r   r   l    r   l       i  r~                     &   '   2   P   W   o   p   x   y   z   {   ~                                 i  i  i+  i  i6  i<  i>  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i#  i$  i%  i&  i'  i(  i)  i*  i+  i,  i-  i.  i/  i0  i1  i2  i3  i4  i5  i6  i7  i8  i9  i:  i;  i<  i  i"  i4  i  i   i   i   i   i   i   i   i  c                   @   s"   e Zd ZdefdefdefgZdS )UNICODE_STRINGLengthMaximumLengthBufferN)r   r   r   USHORTPWSTRr   r   r   r   r   r     s
    r   c                   @   s,   e Zd Zdefdefdefded fgZdS )GUIDData1Data2Data3Data4r   N)r   r   r   DWORDWORDBYTEr   r   r   r   r   r     s    
r   c                   @   r   )
LIST_ENTRYFlinkBlinkN)r   r   r   PVOIDr   r   r   r   r   r     r   r   r   )Nr   ($  rV   r    rx   _allsetvarskeysr   	NameErrorr   r   osr   r   	addressofr   SIZEOFPOINTERWINFUNCTYPEr3   r   r$   r!   byrefc_char	TypeErrorpointerWIN32_VERBOSE_MODEr)   r%   r+   r/   rJ   rK   rM   rN   rp   r{   r}   LPVOIDCHARc_wcharWCHARc_ubyter   c_byteSBYTEc_uint16r   c_int16SWORDc_uint32r   c_int32SDWORDc_uint64r   c_int64SQWORDSHORTr   INTUINTLONGULONGr   r   c_char_pLPSTR	c_wchar_pLPWSTRc_int8INT8INT16INT32INT64c_uint8UINT8UINT16UINT32UINT64LONG32LONG64ULONG32ULONG64DWORD32DWORD64BOOLc_floatFLOATc_doubleDOUBLEc_size_tSIZE_T	c_ssize_tSSIZE_Tr8   PSIZE_T	DWORD_PTR	ULONG_PTRLONG_PTRr   PPVOIDPSTRr   PCHARPWCHARLPBYTELPSBYTELPWORDLPSWORDLPDWORDLPSDWORDLPULONGLPLONGPDWORD
PDWORD_PTRPULONGPLONGCCHARBOOLEANPBOOLLPBOOLTCHARUCHAR	DWORDLONG	LPDWORD32	LPULONG32	LPDWORD64	LPULONG64PDWORD32PULONG32PDWORD64PULONG64ATOMHANDLEPHANDLELPHANDLEHMODULE	HINSTANCEHTASKHKEYPHKEYHDESKHRSRCHSTRHWINSTAHKLHDWPHFILEHRESULTHGLOBALHLOCALHGDIOBJHDCHRGNHBITMAPHPALETTEHPENHBRUSHHMFHEMFHENHMETAFILE	HMETAFILEHMETAFILEPICTHWNDNTSTATUS	PNTSTATUS	KAFFINITYRVARVA64WPARAMLPARAMLRESULTACCESS_MASKREGSAMPACCESS_MASKPREGSAMPSIDr   	PFLOAT128r   PM128ANULLINFINITETRUEFALSEANYSIZE_ARRAYr   INVALID_HANDLE_VALUEMAX_MODULE_NAME32MAX_PATHrL   ERROR_INVALID_FUNCTIONERROR_FILE_NOT_FOUNDERROR_PATH_NOT_FOUNDERROR_ACCESS_DENIEDERROR_INVALID_HANDLEERROR_NOT_ENOUGH_MEMORYERROR_INVALID_DRIVEERROR_NO_MORE_FILESERROR_BAD_LENGTHERROR_HANDLE_EOFERROR_HANDLE_DISK_FULLERROR_NOT_SUPPORTEDERROR_FILE_EXISTSERROR_INVALID_PARAMETERERROR_BUFFER_OVERFLOWERROR_DISK_FULLERROR_CALL_NOT_IMPLEMENTEDERROR_SEM_TIMEOUTERROR_INSUFFICIENT_BUFFERERROR_INVALID_NAMEERROR_MOD_NOT_FOUNDERROR_PROC_NOT_FOUNDERROR_DIR_NOT_EMPTYERROR_BAD_THREADID_ADDRERROR_BAD_ARGUMENTSERROR_BAD_PATHNAMEERROR_ALREADY_EXISTSERROR_INVALID_FLAG_NUMBERERROR_ENVVAR_NOT_FOUNDERROR_FILENAME_EXCED_RANGEERROR_MORE_DATAWAIT_TIMEOUTERROR_NO_MORE_ITEMSERROR_PARTIAL_COPYERROR_INVALID_ADDRESSERROR_THREAD_NOT_IN_PROCESSERROR_CONTROL_C_EXITERROR_UNHANDLED_EXCEPTIONERROR_ASSERTION_FAILUREERROR_WOW_ASSERTIONERROR_DBG_EXCEPTION_NOT_HANDLEDERROR_DBG_REPLY_LATER"ERROR_DBG_UNABLE_TO_PROVIDE_HANDLEERROR_DBG_TERMINATE_THREADERROR_DBG_TERMINATE_PROCESSERROR_DBG_CONTROL_CERROR_DBG_PRINTEXCEPTION_CERROR_DBG_RIPEXCEPTIONERROR_DBG_CONTROL_BREAKERROR_DBG_COMMAND_EXCEPTIONERROR_DBG_EXCEPTION_HANDLEDERROR_DBG_CONTINUEERROR_ELEVATION_REQUIREDERROR_NOACCESSERROR_CIRCULAR_DEPENDENCYERROR_SERVICE_DOES_NOT_EXIST ERROR_SERVICE_CANNOT_ACCEPT_CTRLERROR_SERVICE_NOT_ACTIVE'ERROR_FAILED_SERVICE_CONTROLLER_CONNECTERROR_EXCEPTION_IN_SERVICEERROR_DATABASE_DOES_NOT_EXISTERROR_SERVICE_SPECIFIC_ERRORERROR_PROCESS_ABORTEDERROR_SERVICE_DEPENDENCY_FAILERROR_SERVICE_LOGON_FAILEDERROR_SERVICE_START_HANGERROR_INVALID_SERVICE_LOCKERROR_SERVICE_MARKED_FOR_DELETEERROR_SERVICE_EXISTSERROR_ALREADY_RUNNING_LKG ERROR_SERVICE_DEPENDENCY_DELETEDERROR_BOOT_ALREADY_ACCEPTEDERROR_SERVICE_NEVER_STARTEDERROR_DUPLICATE_SERVICE_NAMEERROR_DIFFERENT_SERVICE_ACCOUNT"ERROR_CANNOT_DETECT_DRIVER_FAILURE!ERROR_CANNOT_DETECT_PROCESS_ABORTERROR_NO_RECOVERY_PROGRAMERROR_SERVICE_NOT_IN_EXEERROR_NOT_SAFEBOOT_SERVICEERROR_DEBUGGER_INACTIVEERROR_PRIVILEGE_NOT_HELDERROR_NONE_MAPPEDRPC_S_SERVER_UNAVAILABLEDELETEREAD_CONTROL	WRITE_DACWRITE_OWNERSYNCHRONIZESTANDARD_RIGHTS_REQUIREDSTANDARD_RIGHTS_READSTANDARD_RIGHTS_WRITESTANDARD_RIGHTS_EXECUTESTANDARD_RIGHTS_ALLSPECIFIC_RIGHTS_ALLr   r   r   
differencer   r   r   r   <module>   s@  

		


a0
