/++
Copyright(c)MicrosoftCorporation.Allrightsreserved.
ModuleName:
basetsd.h
Abstract:
Typedefinitionsforthebasicsizedtypes.
Author:
RevisionHistory:
--/
#ifndef_BASETSD_H_
#define_BASETSD_H_
#if!defined(_MAC)&&(defined(_M_MRX000)||defined(_M_AMD64)||defined(_M_IA64))&&(_MSC_VER>=1100)&&!(defined(MIDL_PASS)||defined(RC_INVOKED))
#definePOINTER_64__ptr64
typedefunsigned__int64POINTER_64_INT;
#ifdefined(_WIN64)
#definePOINTER_32__ptr32
#else
#definePOINTER_32
#endif
#else
#ifdefined(_MAC)&&defined(_MAC_INT_64)
#definePOINTER_64__ptr64
typedefunsigned__int64POINTER_64_INT;
#else
#if(_MSC_VER>=1300)&&!(defined(MIDL_PASS)||defined(RC_INVOKED))
#definePOINTER_64__ptr64
#else
#definePOINTER_64
#endif
typedefunsignedlongPOINTER_64_INT;
#endif
#definePOINTER_32
#endif
#ifdefined(_IA64_)||defined(_AMD64_)
#defineFIRMWARE_PTR
#else
#defineFIRMWARE_PTRPOINTER_32
#endif
//
//Acompilerwithsupportfor__sptrand__uptrisinqualification.To
//participateinqualification,removethe"0&&"termbelowandalso
//enablewarning4826inwarning.w
//
#if0&&(_MSC_FULL_VER>=140041204)&&!defined(MIDL_PASS)&&!defined(RC_INVOKED)
#definePOINTER_SIGNED__sptr
#definePOINTER_UNSIGNED__uptr
#else
#definePOINTER_SIGNED
#definePOINTER_UNSIGNED
#endif
#defineSPOINTER_32POINTER_SIGNEDPOINTER_32
#defineUPOINTER_32POINTER_UNSIGNEDPOINTER_32
#if_MSC_VER>1000
#pragmaonce
#endif
#ifdef__cplusplus
extern"C"{
#endif
typedefsignedcharINT8,PINT8;
typedefsignedshortINT16,PINT16;
typedefsignedintINT32,PINT32;
typedefsigned__int64INT64,PINT64;
typedefunsignedcharUINT8,PUINT8;
typedefunsignedshortUINT16,PUINT16;
typedefunsignedintUINT32,PUINT32;
typedefunsigned__int64UINT64,PUINT64;
//
//Thefollowingtypesareguaranteedtobesignedand32bitswide.
//
typedefsignedintLONG32,PLONG32;
//
//Thefollowingtypesareguaranteedtobeunsignedand32bitswide.
//
typedefunsignedintULONG32,PULONG32;
typedefunsignedintDWORD32,PDWORD32;
#if!defined(_W64)
#if!defined(__midl)&&(defined(_X86_)||defined(_M_IX86))&&_MSC_VER>=1300
#define_W64__w64
#else
#define_W64
#endif
#endif
//
//TheINT_PTRisguaranteedtobethesamesizeasapointer.Its
//sizewithchangewithpointersize(32/64).Itshouldbeused
//anywherethatapointeriscasttoanintegertype.UINT_PTRis
//theunsignedvariation.
//
//__int3264isintrinsicto64bMIDLbutnottooldMIDLortoCcompiler.
//
#if(501<__midl)
typedef[public]__int3264INT_PTR,PINT_PTR;
typedef[public]unsigned__int3264UINT_PTR,PUINT_PTR;
typedef[public]__int3264LONG_PTR,PLONG_PTR;
typedef[public]unsigned__int3264ULONG_PTR,PULONG_PTR;
#else//midl64
//oldmidlandC++compiler
#ifdefined(_WIN64)
typedef__int64INT_PTR,PINT_PTR;
typedefunsigned__int64UINT_PTR,PUINT_PTR;
typedef__int64LONG_PTR,PLONG_PTR;
typedefunsigned__int64ULONG_PTR,PULONG_PTR;
#define__int3264__int64
#else
typedef_W64intINT_PTR,PINT_PTR;
typedef_W64unsignedintUINT_PTR,PUINT_PTR;
typedef_W64longLONG_PTR,PLONG_PTR;
typedef_W64unsignedlongULONG_PTR,PULONG_PTR;
#define__int3264__int32
#endif
#endif//midl64
//
//HALF_PTRishalfthesizeofapointeritintendedforusewith
//withinstructureswhichcontainapointerandtwosmallfields.
//UHALF_PTRistheunsignedvariation.
//
#ifdef_WIN64
#defineADDRESS_TAG_BIT0x40000000000UI64
typedef__int64SHANDLE_PTR;
typedefunsigned__int64HANDLE_PTR;
typedefunsignedintUHALF_PTR,PUHALF_PTR;
typedefintHALF_PTR,PHALF_PTR;
#if!defined(__midl)
__inline
unsignedlong
HandleToULong(
constvoidh
)
{
return((unsignedlong)(ULONG_PTR)h);
}
__inline
long
HandleToLong(
constvoidh
)
{
return((long)(LONG_PTR)h);
}
__inline
void
ULongToHandle(
constunsignedlongh
)
{
return((void)(UINT_PTR)h);
}
__inline
void
LongToHandle(
constlongh
)
{
return((void)(INT_PTR)h);
}
__inline
unsignedlong
PtrToUlong(
constvoidp
)
{
return((unsignedlong)(ULONG_PTR)p);
}
__inline
unsignedint
PtrToUint(
constvoidp
)
{
return((unsignedint)(UINT_PTR)p);
}
__inline
unsignedshort
PtrToUshort(
constvoidp
)
{
return((unsignedshort)(unsignedlong)(ULONG_PTR)p);
}
__inline
long
PtrToLong(
constvoidp
)
{
return((long)(LONG_PTR)p);
}
__inline
int
PtrToInt(
constvoidp
)
{
return((int)(INT_PTR)p);
}
__inline
short
PtrToShort(
constvoidp
)
{
return((short)(long)(LONG_PTR)p);
}
__inline
void
IntToPtr(
constinti
)
//Caution:IntToPtr()sign-extendstheintvalue.
{
return((void)(INT_PTR)i);
}
__inline
void
UIntToPtr(
constunsignedintui
)
//Caution:UIntToPtr()zero-extendstheunsignedintvalue.
{
return((void)(UINT_PTR)ui);
}
__inline
void
LongToPtr(
constlongl
)
//Caution:LongToPtr()sign-extendsthelongvalue.
{
return((void)(LONG_PTR)l);
}
__inline
void
ULongToPtr(
constunsignedlongul
)
//Caution:ULongToPtr()zero-extendstheunsignedlongvalue.
{
return((void)(ULONG_PTR)ul);
}
#definePtrToPtr64(p)((voidPOINTER_64)p)
#definePtr64ToPtr(p)((void)p)
#defineHandleToHandle64(h)(PtrToPtr64(h))
#defineHandle64ToHandle(h)(Ptr64ToPtr(h))
__inline
void
Ptr32ToPtr(
constvoidPOINTER_32p
)
{
return((void)(ULONG_PTR)(unsignedlong)p);
}
__inline
void
Handle32ToHandle(
constvoidPOINTER_32h
)
{
return((void)(LONG_PTR)(long)h);
}
__inline
voidPOINTER_32
PtrToPtr32(
constvoidp
)
{
return((voidPOINTER_32)(unsignedlong)(ULONG_PTR)p);
}
#defineHandleToHandle32(h)(PtrToPtr32(h))
#endif//!_midl
#else//!_WIN64
#defineADDRESS_TAG_BIT0x80000000UL
typedefunsignedshortUHALF_PTR,PUHALF_PTR;
typedefshortHALF_PTR,PHALF_PTR;
typedef_W64longSHANDLE_PTR;
typedef_W64unsignedlongHANDLE_PTR;
#defineHandleToULong(h)((ULONG)(ULONG_PTR)(h))
#defineHandleToLong(h)((LONG)(LONG_PTR)(h))
#defineULongToHandle(ul)((HANDLE)(ULONG_PTR)(ul))
#defineLongToHandle(h)((HANDLE)(LONG_PTR)(h))
#definePtrToUlong(p)((ULONG)(ULONG_PTR)(p))
#definePtrToLong(p)((LONG)(LONG_PTR)(p))
#definePtrToUint(p)((UINT)(UINT_PTR)(p))
#definePtrToInt(p)((INT)(INT_PTR)(p))
#definePtrToUshort(p)((unsignedshort)(ULONG_PTR)(p))
#definePtrToShort(p)((short)(LONG_PTR)(p))
#defineIntToPtr(i)((VOID)(INT_PTR)((int)i))
#defineUIntToPtr(ui)((VOID)(UINT_PTR)((unsignedint)ui))
#defineLongToPtr(l)((VOID)(LONG_PTR)((long)l))
#defineULongToPtr(ul)((VOID)(ULONG_PTR)((unsignedlong)ul))
#if!defined(__midl)
__inline
voidPOINTER_64
PtrToPtr64(
constvoidp
)
{
return((voidPOINTER_64)(unsigned__int64)(ULONG_PTR)p);
}
__inline
void
Ptr64ToPtr(
constvoidPOINTER_64p
)
{
return((void)(ULONG_PTR)(unsigned__int64)p);
}
__inline
voidPOINTER_64
HandleToHandle64(
constvoidh
)
{
return((voidPOINTER_64)(__int64)(LONG_PTR)h);
}
__inline
void
Handle64ToHandle(
constvoidPOINTER_64h
)
{
return((void)(ULONG_PTR)(unsigned__int64)h);
}
#endif
#definePtr32ToPtr(p)((void)p)
#defineHandle32ToHandle(h)(Ptr32ToPtr(h))
#definePtrToPtr32(p)((voidPOINTER_32)p)
#defineHandleToHandle32(h)(PtrToPtr32(h))
#endif//!_WIN64
#defineHandleToUlong(h)HandleToULong(h)
#defineUlongToHandle(ul)ULongToHandle(ul)
#defineUlongToPtr(ul)ULongToPtr(ul)
#defineUintToPtr(ui)UIntToPtr(ui)
#defineMAXUINT_PTR(~((UINT_PTR)0))
#defineMAXINT_PTR((INT_PTR)(MAXUINT_PTR>>1))
#defineMININT_PTR(~MAXINT_PTR)
#defineMAXULONG_PTR(~((ULONG_PTR)0))
#defineMAXLONG_PTR((LONG_PTR)(MAXULONG_PTR>>1))
#defineMINLONG_PTR(~MAXLONG_PTR)
#defineMAXUHALF_PTR((UHALF_PTR)~0)
#defineMAXHALF_PTR((HALF_PTR)(MAXUHALF_PTR>>1))
#defineMINHALF_PTR(~MAXHALF_PTR)
//
//SIZE_Tusedforcountsorrangeswhichneedtospantherangeof
//ofapointer.SSIZE_Tisthesignedvariation.
//
typedefULONG_PTRSIZE_T,PSIZE_T;
typedefLONG_PTRSSIZE_T,PSSIZE_T;
#if_WIN32_WINNT>=0x0600||(defined(__cplusplus)&&defined(WINDOWS_ENABLE_CPLUSPLUS))
#defineMAXUINT8((UINT8)~((UINT8)0))
#defineMAXINT8((INT8)(MAXUINT8>>1))
#defineMININT8((INT8)~MAXINT8)
#defineMAXUINT16((UINT16)~((UINT16)0))
#defineMAXINT16((INT16)(MAXUINT16>>1))
#defineMININT16((INT16)~MAXINT16)
#defineMAXUINT32((UINT32)~((UINT32)0))
#defineMAXINT32((INT32)(MAXUINT32>>1))
#defineMININT32((INT32)~MAXINT32)
#defineMAXUINT64((UINT64)~((UINT64)0))
#defineMAXINT64((INT64)(MAXUINT64>>1))
#defineMININT64((INT64)~MAXINT64)
#defineMAXULONG32((ULONG32)~((ULONG32)0))
#defineMAXLONG32((LONG32)(MAXULONG32>>1))
#defineMINLONG32((LONG32)~MAXLONG32)
#defineMAXULONG64((ULONG64)~((ULONG64)0))
#defineMAXLONG64((LONG64)(MAXULONG64>>1))
#defineMINLONG64((LONG64)~MAXLONG64)
#defineMAXULONGLONG((ULONGLONG)~((ULONGLONG)0))
#defineMINLONGLONG((LONGLONG)~MAXLONGLONG)
#defineMAXSIZE_T((SIZE_T)~((SIZE_T)0))
#defineMAXSSIZE_T((SSIZE_T)(MAXSIZE_T>>1))
#defineMINSSIZE_T((SSIZE_T)~MAXSSIZE_T)
#defineMAXUINT((UINT)~((UINT)0))
#defineMAXINT((INT)(MAXUINT>>1))
#defineMININT((INT)~MAXINT)
#defineMAXDWORD32((DWORD32)~((DWORD32)0))
#defineMAXDWORD64((DWORD64)~((DWORD64)0))
#endif//_WIN32_WINNT>=0x0600
//
//AddWindowsflavorDWORD_PTRtypes
//
typedefULONG_PTRDWORD_PTR,PDWORD_PTR;
//
//Thefollowingtypesareguaranteedtobesignedand64bitswide.
//
typedef__int64LONG64,PLONG64;
//
//Thefollowingtypesareguaranteedtobeunsignedand64bitswide.
//
typedefunsigned__int64ULONG64,PULONG64;
typedefunsigned__int64DWORD64,PDWORD64;
//
//Legacythreadaffinity.
//
typedefULONG_PTRKAFFINITY;
typedefKAFFINITYPKAFFINITY;
#ifdef__cplusplus
}
#endif
#endif//_BASETSD_H_
|
|