{
ULONG ulBytesRemainingInBuffer;
+ BOOLEAN bUseFileInfo = FALSE;
//
// Drop the DirOpenReferenceCount held during a prior
ulAdditionalAttributes = FILE_ATTRIBUTE_DIRECTORY;
}
+ else if ( AFSIgnoreReparsePointToFile())
+ {
+
+ bUseFileInfo = TRUE;
+ }
}
- ulAdditionalAttributes |= FILE_ATTRIBUTE_REPARSE_POINT;
+ if ( bUseFileInfo == FALSE)
+ {
+
+ ulAdditionalAttributes |= FILE_ATTRIBUTE_REPARSE_POINT;
+ }
break;
}
}
case FileDirectoryInformation:
{
+
pDirInfo = (PFILE_DIRECTORY_INFORMATION)&pBuffer[ ulNextEntry];
- if( BooleanFlagOn( pDirEntry->Flags, AFS_DIR_ENTRY_FAKE))
+ if( bUseFileInfo)
+ {
+
+ pDirInfo->CreationTime = stFileInfo.CreationTime;
+ pDirInfo->LastWriteTime = stFileInfo.LastWriteTime;
+ pDirInfo->LastAccessTime = stFileInfo.LastAccessTime;
+ pDirInfo->ChangeTime = stFileInfo.ChangeTime;
+
+ pDirInfo->EndOfFile = stFileInfo.EndOfFile;
+ pDirInfo->AllocationSize = stFileInfo.AllocationSize;
+
+ pDirInfo->FileAttributes = stFileInfo.FileAttributes | ulAdditionalAttributes;
+ }
+ else if( BooleanFlagOn( pDirEntry->Flags, AFS_DIR_ENTRY_FAKE))
{
pDirInfo->CreationTime = pFcb->ObjectInformation->CreationTime;