windows-nt/Source/XPSP1/NT/inetsrv/query/h/ci64.hxx
2020-09-26 16:20:57 +08:00

97 lines
1.9 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1998 - 1999
//
// File: ci64.hxx
//
// Contents: Content index specific 32 <-> 64 bit portability definitions
//
// History: 22-Apr-98 vikasman Created
//
//--------------------------------------------------------------------------
#pragma once
#include <basetsd.h>
#include <limits.h>
#include "cidebnot.h"
inline LONG CiPtrToLong( LONG_PTR p )
{
Win4Assert( p <= LONG_MAX && p >= LONG_MIN );
return PtrToLong( (PVOID)p );
}
#define CiPtrToInt( p ) CiPtrToLong( p )
inline ULONG CiPtrToUlong( ULONG_PTR p )
{
Win4Assert( p <= ULONG_MAX );
return PtrToUlong( (PVOID)p );
}
#define CiPtrToUint( p ) CiPtrToUlong( p )
//
// On Win64 a PROPVARIANT is 24 bytes
// 2 for vartype
// 6 for packing
// 4 for ULONG count
// 4 for alignment
// 8 for pointer
//
// On Win32 a PROPVARIANT is 16 bytes
// 2 for vartype
// 6 for packing
// 4 for ULONG count
// 4 for pointer
//
#define SizeOfWin32PROPVARIANT 16
#ifdef _WIN64
#define PTR32 DWORD
#else
#define PTR32 LPVOID
#endif
typedef struct tagBLOB32
{
ULONG cbSize; // number of bytes
PTR32 pBlob; // 32 pointer
} BLOB32;
typedef struct tagPROPVARIANT32
{
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union
{
PTR32 p; // 32 bit pointer
BLOB32 blob; // blob data
ULONGLONG uhVal; // 64 bit data
};
}PROPVARIANT32;
typedef struct tagSAFEARRAY32
{
USHORT cDims;
USHORT fFeatures;
ULONG cbElements;
ULONG cLocks;
PTR32 pvData; // 32-bit pointer
SAFEARRAYBOUND rgsabound[ 1 ];
} SAFEARRAY32;
typedef struct tagCLIPDATA32
{
ULONG cbSize;
long ulClipFmt;
/* [size_is] */ PTR32 pClipData;
} CLIPDATA32;