windows-nt/Source/XPSP1/NT/inetsrv/iis/iisrearc/inc/iisdef.h
2020-09-26 16:20:57 +08:00

137 lines
2.8 KiB
C

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
iisdef.h
Abstract:
The IIS shared definitions header.
Author:
Seth Pollack (sethp) 01-Dec-1998
Revision History:
--*/
#ifndef _IISDEF_H_
#define _IISDEF_H_
//
// Define some standard 64-bit stuff here
//
//
// The DIFF macro should be used around an expression involving pointer
// subtraction. The expression passed to DIFF is cast to a size_t type,
// allowing the result to be easily assigned to any 32-bit variable or
// passed to a function expecting a 32-bit argument.
//
#define DIFF(x) ((size_t)(x))
//
// Signature helpers
//
//
// Create a signature that reads the same way in the debugger as how you
// define it in code. Done by byte-swapping the DWORD passed into it.
//
// Typical usage:
//
// #define FOOBAR_SIGNATURE CREATE_SIGNATURE( 'FBAR' )
// #define FOOBAR_SIGNATURE_FREED CREATE_SIGNATURE( 'fbaX' )
//
#define CREATE_SIGNATURE( Value ) \
( \
( ( ( ( DWORD ) Value ) & 0xFF000000 ) >> 24 ) | \
( ( ( ( DWORD ) Value ) & 0x00FF0000 ) >> 8 ) | \
( ( ( ( DWORD ) Value ) & 0x0000FF00 ) << 8 ) | \
( ( ( ( DWORD ) Value ) & 0x000000FF ) << 24 ) \
) \
#ifndef __HTTP_SYS__
//
// Error handling helpers
//
#ifdef __cplusplus
//
// Recover the Win32 error from an HRESULT.
//
// The HRESULT must be a failure, i.e. FAILED(hr) must be true.
// If these conditions are not met, then it returns the error code
// ERROR_INVALID_PARAMETER.
//
inline DWORD WIN32_FROM_HRESULT(
IN HRESULT hr
)
{
if ( ( FAILED( hr ) ) &&
( HRESULT_FACILITY( hr ) == FACILITY_WIN32 ) )
{
return ( HRESULT_CODE( hr ) );
}
else
{
// invalid parameter!
// BUGBUG would be nice to assert here
return ERROR_INVALID_PARAMETER;
}
}
# else
# define WIN32_FROM_HRESULT(hr) \
(( (FAILED(hr)) && \
(HRESULT_FACILITY(hr) == FACILITY_WIN32) \
) \
? \
HRESULT_CODE(hr) \
: ERROR_INVALID_PARAMETER \
)
#endif // _cplusplus
#endif // !__HTTP_SYS__
//
// Generate an HRESULT from a LK_RETCODE.
//
// BUGBUG temporary; really we need a fix in the lkhash code.
//
#define HRESULT_FROM_LK_RETCODE( LkRetcode ) \
( ( LkRetcode == LK_SUCCESS ) ? S_OK : E_FAIL )
//
// DNLEN is set to short value (15) that is good enough only for NetBIOS names
// Until there is more suitable constant let's use our own
//
#define IIS_DNLEN (256)
#endif // _IISDEF_H_