Ignore:
Timestamp:
Sep 28, 2012, 6:56:57 PM (13 years ago)
Author:
dmik
Message:

kernel32: Implement GetFileInformationByHandle for directories.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmfile.cpp

    r22024 r22025  
    12071207  }
    12081208
    1209   pHMHandleData->dwUserData = (DWORD) new HMFileInfo(0, (LPSTR)lpFileName, lpSecurityAttributes);
    1210   pHMHandleData->hHMHandle  = 0x8000000;
     1209  pHMHandleData->dwUserData = (DWORD) new HMFileInfo(INVALID_HANDLE_VALUE,
     1210                                                     (LPSTR)lpFileName, lpSecurityAttributes);
     1211  pHMHandleData->hHMHandle  = 0x80000000; // make sure _HMHandleQuery won't fail
    12111212  return (NO_ERROR);
    12121213
     
    13291330  return finddata.nFileSizeLow;
    13301331}
     1332/*****************************************************************************
     1333 * Name      : BOOL HMDeviceFileInfoClass::GetFileInformationByHandle
     1334 * Purpose   : determine the handle type
     1335 * Parameters: PHMHANDLEDATA               pHMHandleData
     1336 *             BY_HANDLE_FILE_INFORMATION* pHFI
     1337 * Variables :
     1338 * Result    : API returncode
     1339 * Remark    :
     1340 * Status    :
     1341 *****************************************************************************/
     1342
     1343BOOL HMDeviceInfoFileClass::GetFileInformationByHandle(PHMHANDLEDATA               pHMHandleData,
     1344                                                       BY_HANDLE_FILE_INFORMATION* pHFI)
     1345{
     1346    dprintfl(("KERNEL32: HMDeviceInfoFileClass::GetFileInformationByHandle %s(%08xh,%08xh)\n",
     1347              lpHMDeviceName, pHMHandleData, pHFI));
     1348
     1349    HMFileInfo *fileInfo = (HMFileInfo *)pHMHandleData->dwUserData;
     1350    dprintf(("*** %s", fileInfo->lpszFileName));
     1351    if(OSLibDosGetFileInformationByHandle(fileInfo->lpszFileName,
     1352                                          INVALID_HANDLE_VALUE,
     1353                                          pHFI))
     1354    {
     1355        return TRUE;
     1356    }
     1357    dprintf(("GetFileInformationByHandle failed with error %d", GetLastError()));
     1358    return FALSE;
     1359}
    13311360/******************************************************************************
    13321361 * Name      : DWORD HMDeviceFileClass::GetFileNameFromHandle
     
    13931422  //an LX header. We need to skip that to present the original file to the
    13941423  //caller
    1395   if(hFile && !stricmp(lpszFileName + strlen(lpszFileName) - 4, ".EXE"))
     1424  if((hFile != INVALID_HANDLE_VALUE) && !stricmp(lpszFileName + strlen(lpszFileName) - 4, ".EXE"))
    13961425  {
    13971426      ULONG action, ulRead, signature, ulFileSize;
Note: See TracChangeset for help on using the changeset viewer.