OLE DB 64-Bit Information
The OLE DB components that ship with the MDAC 2.8 and later and Windows DAC 6.0 and layter contain some changes from earlier versions of OLE DB to allow programmers to write code for the new 64-bit platforms. This topic summarizes those changes.
Several new typedefs have been defined in the OLE DB header file. These new types allow you to maintain one set of source code for both 32-bit and 64-bit platforms. The simplest way to ensure that code will compile in either 32-bit or 64-bit environments is to make sure that the code uses these new types for variable definitions. For example, suppose your existing code looks like this:
int cCol = 32;
hr = pIColumnsInfo->GetColumnInfo(&cCol, &pColumnInfo, &pStringsBuffer);
Instead of defining the cCol variable as an integer, you should use the new DBORDINAL type, as follows:
DBORDINAL cCol = 32;
hr = pIColumnsInfo->GetColumnInfo(&cCol, &pColumnInfo, &pStringsBuffer);
This code will now compile and run on either a 32-bit or a 64-bit platform.
The following table compares the underlying definition of these new typedefs based on whether or not _WIN64 has been defined.
TYPEDEF Name |
WIN32 |
_WIN64 |
---|---|---|
DBLENGTH |
ULONG |
ULONGLONG |
DBROWOFFSET |
LONG |
LONGLONG |
DBROWCOUNT |
LONG |
LONGLONG |
DBCOUNTITEM |
ULONG |
ULONGLONG |
DBORDINAL |
ULONG |
ULONGLONG |
DB_LORDINAL |
LONG |
LONGLONG |
DBBKMARK |
ULONG |
ULONGLONG |
DBBYTEOFFSET |
ULONG |
ULONGLONG |
DBREFCOUNT |
ULONG |
ULONG |
DB_UPARAMS |
ULONG |
ULONGLONG |
DB_LPARAMS |
LONG |
LONGLONG |
DBHASHVALUE |
DWORD |
DWORDLONG |
DB_DWRESERVE |
DWORD |
DWORDLONG |
DB_LRESERVE |
LONG |
LONGLONG |
DB_URESERVE |
ULONG |
ULONGLONG |