配色: 字号:
BaseTsd
2015-06-29 | 阅:  转:  |  分享 
  
/++



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_



献花(0)
+1
(本文系海漩涡首藏)