Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

101 lines
2.4 KiB

;; Copyright Microsoft Corporation
;;
;; Module Name:
;;
;; winthrow_yuck.tpl
;;
;; Abstract:
;;
;; Author:
;;
;; July 2001 JayKrell
;;
;; Revision History:
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Code reuse is not ideal here..pending genthnk understanding and improvement..
;; The yuckiness is in winthrow_err.tpl too, but only as much as could not be moved out.
[Macros]
;;
;; Underscore, dash, dollar are not part of identifiers, so "j" is used for hierarchy.
;;
TemplateName=RegistryjFailed
Begin=
RetVal != ERROR_SUCCESS
End=
TemplateName=RegistryjIsErrorAcceptable
Begin=
::@PrivateNamespace_IsWin32ErrorAcceptable(RetVal, NumberOfAcceptableErrors, VaListOfAcceptableErrors)
End=
TemplateName=RegistryjThrowError
Begin=
EXCEPTION_TYPE Exception;@NL
__if_exists(EXCEPTION_TYPE::Init@ApiName)@NL
{@Indent(@NL
Exception.Init@ApiName(RetVal@IfArgs(@NL, @ArgsOut));@NL
)}@NL
__if_not_exists(EXCEPTION_TYPE::Init@ApiName)@NL
{@Indent(@NL
Exception.InitWin32Error(RetVal);@NL
)}@NL
Exception.Throw();@NL
End=
;;
;; Registry functions have no ErrorOut other than RetVal.
;; As well, they have no seperate clear or set operations for error out.
;; As well, the middle layers do not need an extra local.
;;
;; HRESULT and NTSTATUS functions are this way too.
;;
TemplateName=LastErrorjIsErrorAcceptable
Begin=
::@PrivateNamespace_IsWin32ErrorAcceptable(Win32Error, NumberOfAcceptableErrors, VaListOfAcceptableErrors)
End=
TemplateName=LastErrorjDeclareErrorOut
Begin=
OUT DWORD& Win32ErrorOut,@NL
End=
TemplateName=LastErrorjPassErrorOut
Begin=
Win32ErrorOut,@NL
End=
TemplateName=LastErrorjDeclareLocalErrorOut
Begin=
DWORD Win32ErrorOut = NO_ERROR;@NL
End=
TemplateName=LastErrorjSetErrorOut
Begin=
const DWORD Win32Error = ::GetLastError();@NL
Win32ErrorOut = Win32Error;@NL
End=
TemplateName=LastErrorjClearErrorOut
Begin=
Win32ErrorOut = NO_ERROR;@NL
End=
TemplateName=LastErrorjThrowError
Begin=
EXCEPTION_TYPE Exception;@NL
__if_exists(EXCEPTION_TYPE::Init@ApiName)@NL
{@Indent(@NL
Exception.Init@ApiName(@IfArgs(@Indent(@NL@ListColWin32Error,@NL@ListCol@ArgsOut))@Else(Win32Error));@NL
)}@NL
__if_not_exists(EXCEPTION_TYPE::Init@ApiName)@NL
{@Indent(@NL
Exception.InitWin32Error(Win32Error);@NL
)}@NL
Exception.Throw();@NL
End=