FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Dobbs M-Dev
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
December 01, 2003

Handling Multiple Win32 Operating Environments

(Page 7 of 9)
Handling Multiple Win32 Operating Environments

Listing 5 Providing missing functions

#ifdef WDN_SHAREDCU

# define GetFileSizeEx_impl         GetFileSizeEx

. . .

#endif /* WDN_SHAREDCU */

. . .

static BOOL WINAPI GetFileSizeEx_impl_NT(HANDLE hFile, PLARGE_INTEGER lpFileSize)
{
  typedef BOOL (WINAPI *PFnGetFileSizeEx)(HANDLE , PLARGE_INTEGER );

  PFnGetFileSizeEx  pfn = (PFnGetFileSizeEx)GetProcAddress(GetInstance_Kernel32(), "GetFileSizeEx");

  return (NULL == pfn) ? FALSE : pfn(hFile, lpFileSize);
}

static BOOL WINAPI GetFileSizeEx_impl_9x(HANDLE hFile, PLARGE_INTEGER 			lpFileSize)
{
  DWORD dwHigh;
  DWORD dwLow = GetFileSize(hFile, &dwHigh);

  if( dwLow != INVALID_FILE_SIZE ||
      GetLastError() == ERROR_SUCCESS)
  {
    lpFileSize->LowPart = dwLow;
    lpFileSize->HighPart = dwHigh;

    return TRUE;
  }

  return FALSE;
}

#ifdef WDN_SHAREDCU
# pragma warning(disable : 4273)
#endif /* WDN_SHAREDCU */

#ifdef WDN_DLL
extern __declspec(dllexport)
#endif /* WDN_DLL */
BOOL WINAPI GetFileSizeEx_impl(HANDLE hFile, PLARGE_INTEGER lpFileSize)
{
  if(IsWinNT4Plus())
  {
    debug_printf("GetFileSizeEx_impl: calling GetFileSizeEx_impl_NT()\n");

    return GetFileSizeEx_impl_NT(hFile, lpFileSize);
  }
  else
  {
    debug_printf("GetFileSizeEx_impl: calling GetFileSizeEx_impl_9x()\n");

    return GetFileSizeEx_impl_9x(hFile, lpFileSize);
  }
}

#ifdef WDN_SHAREDCU
# pragma warning(default : 4273)
#endif /* WDN_SHAREDCU */
Previous Page | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Next Page
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK