GetLongPathName API Function Emulation

Environment: Windows 95/NT

The GetLongPathName API call is only available on Windows 98/ME and Windows 2000/XP. It is not available on Windows 95 & NT. This code example emulates the function for use on 95 & NT and will work on the other systems as well.

This example uses MFC and CString, but could be easily adapted to use null terminated character strings as well. The algorithm recursively strips off path components, then reassembles them with their long name equivalents.

DWORD GetLongPathName(CString  strShortPath,
                      CString& strLongPath  )
{
  int iFound = strShortPath.ReverseFind('\\');
  if (iFound > 1)
  {
    // recurse to peel off components
    //
    if (GetLongPathName(strShortPath.Left(iFound),
                        strLongPath) > 0)
    {
      strLongPath += '\\';

      if (strShortPath.Right(1) != "\\")
      {
        WIN32_FIND_DATA findData;

        // append the long component name to the path
        //
        if (INVALID_HANDLE_VALUE != ::FindFirstFile
           (strShortPath, &findData))
        {
          strLongPath += findData.cFileName;
        }
        else
        {
          // if FindFirstFile fails, return the error code
          //
          strLongPath.Empty();
          return 0;
        }
      }
    }
  }
  else
  {
    strLongPath = strShortPath;
  }

  return strLongPath.GetLength();
}

IT Offers

Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Go Deeper

  • This buyers guide provides independent research and test results to help you determine your endpoint protection requirements and identify …
  • The penetration of virtual servers is approaching 50 percent in IT infrastructures, yet administrators are only backing up, on average, 68 …
  • When the economy is stable, a company's IT organization may view Finance as just one of many internal customers competing for attention. But …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds