Esempio n. 1
0
        private Boolean CheckIsContainedInRankedDocs(FileInfoClass newFic)
        {
            foreach (FileInfoClass item in this.rankedDocsIndex)
            {
                if (item.FileIndex == newFic.FileIndex)
                {
                    return(true);
                }
            }

            return(false);
        }
        private void QueryDirectory(
            FILEID dirFileId,
            uint treeId,
            ulong sessionId,
            FileInfoClass fileInfoClass,
            out byte[] outputBuffer,
            string searchPattern = "*"
            )
        {
            MessageStatus status = this.fsaAdapter.QueryDirectory(dirFileId, treeId, sessionId, searchPattern, fileInfoClass, false, true, out outputBuffer);

            BaseTestSite.Assert.AreEqual(MessageStatus.SUCCESS, status, "Query directory should succeed.");
        }
        /// <summary>
        /// Prepare before testing, including:
        /// 1. creating a new directory
        /// 2. creating a new file under the directory
        /// 3. writing some content to the file
        /// 4. closing the file to flush the data to the disk
        /// Then send QueryDirectory with specified FileInfoClass to the server and return the outputBuffer.
        /// </summary>
        private void PrepareAndQueryDirectory(FileInfoClass fileInfoClass, out byte[] outputBuffer, out string fileName, out FILEID dirFileId)
        {
            outputBuffer = null;
            string dirName   = this.fsaAdapter.ComposeRandomFileName(8);
            uint   treeId    = 0;
            ulong  sessionId = 0;

            MessageStatus status = CreateDirectory(dirName, out dirFileId, out treeId, out sessionId);

            Site.Assert.AreEqual(
                MessageStatus.SUCCESS,
                status,
                $"Create should succeed.");

            fileName = this.fsaAdapter.ComposeRandomFileName(FileNameLength, opt: CreateOptions.NON_DIRECTORY_FILE);
            BaseTestSite.Log.Add(LogEntryKind.TestStep, $"Create a file with name: {fileName} under the directory {dirName}");
            status = this.fsaAdapter.CreateFile(
                $"{dirName}\\{fileName}",
                (FileAttribute)0,
                CreateOptions.NON_DIRECTORY_FILE,
                (FileAccess.GENERIC_READ | FileAccess.GENERIC_WRITE),
                (ShareAccess.FILE_SHARE_READ | ShareAccess.FILE_SHARE_WRITE | ShareAccess.FILE_SHARE_DELETE),
                CreateDisposition.OPEN_IF);
            Site.Assert.AreEqual(
                MessageStatus.SUCCESS,
                status,
                $"Create should succeed.");
            BaseTestSite.Log.Add(LogEntryKind.TestStep, $"Write {BytesToWrite} bytes to the file {fileName}");
            long bytesWritten;

            status = this.fsaAdapter.WriteFile(0, BytesToWrite, out bytesWritten);
            Site.Assert.AreEqual(
                MessageStatus.SUCCESS,
                status,
                $"Write should succeed.");

            BaseTestSite.Log.Add(LogEntryKind.TestStep, $"Close the open to the file {fileName}");
            status = this.fsaAdapter.CloseOpen();
            Site.Assert.AreEqual(
                MessageStatus.SUCCESS,
                status,
                $"Close should succeed.");

            BaseTestSite.Log.Add(LogEntryKind.TestStep, $"Query directory with {fileInfoClass}");
            status = this.fsaAdapter.QueryDirectory(dirFileId, treeId, sessionId, "*", fileInfoClass, false, true, out outputBuffer);
            Site.Assert.AreEqual(
                MessageStatus.SUCCESS,
                status,
                $"Query directory should succeed.");
        }
        internal static MessageStatus WorkaroundMethodSetFileAllocOrObjIdInfo(FileInfoClass fileInfoClass, bool isInputBufAllocGreater, MessageStatus returnedStatus, ITestSite site)
        {
            switch (fileInfoClass)
            {
            case FileInfoClass.FILE_OBJECTID_INFORMATION:
            {
                returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(3007, MessageStatus.NOT_SUPPORTED, returnedStatus, site);
                break;
            }

            default:
                break;
            }
            return(returnedStatus);
        }
Esempio n. 5
0
        private static void AnalysicFiles(string filePath)
        {
            try
            {
                FileInfoClass myFile     = new FileInfoClass();
                var           myFileInfo = new System.IO.FileInfo(filePath);

                myFile.FileName      = Path.GetFileName(filePath);
                myFile.FileExtension = Path.GetExtension(filePath);
                myFile.FileLocation  = filePath;
                myFile.FileSize      = Converter.BytesToString(myFileInfo.Length);
                myFile.ModifyDate    = myFileInfo.LastAccessTimeUtc.ToString();

                ListOfFileAndItInfo.Add(myFile);
            }catch (Exception) {
            }
        }
Esempio n. 6
0
        private void AddIntoRelativedDocs(FileInfoClass fic)
        {
            bool flag = false;

            foreach (FileInfoClass doc in this.relativedDocs)
            {
                if (doc.FileIndex == fic.FileIndex)
                {
                    flag            = true;
                    doc.DFITFValue += fic.DFITFValue;
                }
            }

            if (false == flag)
            {
                this.relativedDocs.Add(fic);
            }
        }
Esempio n. 7
0
        public ActionResult GetCompontFiles()
        {
            try
            {
                var taskIdStr   = Request["compontId"];//零件任务Id
                var personIdStr = Session["id"];
                int taskId      = -1;
                int personId    = -1;
                if (int.TryParse(taskIdStr, out taskId) && int.TryParse(personIdStr.ToString(), out personId))
                {
                    SupplementaryInformation pathInfo = new SupplementaryInformation();
                    var pathTask = TaskInfoManage.GetCompontPath(taskId);
                    var dirPath  = Path.Combine(pathInfo.upLoadPath(), pathTask, "图纸");
                    List <FileInfoClass> fileInfos = new List <FileInfoClass>();
                    if (Directory.Exists(dirPath))
                    {
                        var files = Directory.GetFiles(dirPath);
                        foreach (var item in files)
                        {
                            FileInfo fileinfo = new FileInfo(item);

                            FileInfoClass file = new FileInfoClass();
                            file.downloadPath  = Path.Combine("JDJS_PDMS_Files", pathTask, "图纸", fileinfo.Name);
                            file.fileName      = fileinfo.Name;
                            file.updateTime    = fileinfo.LastWriteTime;
                            file.updateTimeStr = fileinfo.LastWriteTime.ToString().Substring(0, fileinfo.LastWriteTime.ToString().LastIndexOf(':'));
                            file.taskId        = taskId;
                            fileInfos.Add(file);
                        }
                    }

                    return(Json(new { code = 0, data = fileInfos }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Content("请输入正确的Int数据类型!"));
                }
            }
            catch (Exception ex)
            {
                return(Content(ex.Message));
            }
        }
Esempio n. 8
0
        private void GetRelativeDoc()
        {
            foreach (string term in this.queryTerms)
            {
                int tokenId = GetTokenId(term);
                if (tokenId != -1)
                {
                    List <InvertedTableItem> itemList = this.invertedTable[tokenId];

                    foreach (InvertedTableItem item in itemList)
                    {
                        //计算df-itf
                        double        df  = item.OccurCounts;
                        double        itf = Math.Log10(((double)this.docCounts / (double)itemList.Count()));
                        FileInfoClass fic = new FileInfoClass(item.FileIndex, df * itf);

                        AddIntoRelativedDocs(fic);
                    }
                }
            }
        }
        public void BVT_QueryDirectoryBySearchPattern <T>(
            T[] FileInformation,
            FileInfoClass FileInformationClass,
            List <string> FileNames,
            string WildCard,
            int ExpectedFilesReturnedLength
            )
            where T : struct
        {
            byte[] outputBuffer;

            int filesCount; // Count files returned from the query, that exist in the FileNames list

            outputBuffer    = QueryByWildCardAndFileInfoClass(WildCard, FileInformationClass, FileNames);
            FileInformation = FsaUtility.UnmarshalFileInformationArray <T>(outputBuffer);
            dynamic dynamicFileInformationObject = FileInformation;

            filesCount = FileNames.Intersect(GetListFileInformation <T>(FileInformation)).ToList().Count();

            Site.Assert.AreEqual(ExpectedFilesReturnedLength, FileInformation.Length, $"The returned Buffer should contain {ExpectedFilesReturnedLength} entries of FileInformation.");
            Site.Assert.AreEqual(ExpectedFilesReturnedLength, filesCount, $"Number of files returned should match the number of files that match the pattern: {ExpectedFilesReturnedLength}.");
        }
Esempio n. 10
0
        private void InsertSort()
        {
            for (int curIndex = 0; curIndex < this.relativedDocs.Count(); ++curIndex)
            {
                FileInfoClass newFic = this.relativedDocs[curIndex];

                if (CheckIsContainedInRankedDocs(newFic) == false)
                {
                    this.rankedDocsIndex.Add(newFic);

                    for (int index = curIndex; index > 0; --index)
                    {
                        FileInfoClass curFic = this.relativedDocs[index];
                        FileInfoClass preFic = this.rankedDocsIndex[index - 1];
                        if (preFic.DFITFValue < curFic.DFITFValue)
                        {
                            Swap(curFic, preFic);
                        }
                    }
                }
            }
        }
        /// </summary>
        /// <param name="dirName">The directory name for query. </param>
        /// <param name="searchPattern">A Unicode string containing the file name pattern to match. </param>
        /// <param name="fileInfoClass">The FileInfoClass to query. </param>
        /// <param name="returnSingleEntry">A boolean indicating whether the return single entry for query.</param>
        /// <param name="restartScan">A boolean indicating whether the enumeration should be restarted.</param>
        /// <param name="isNoRecordsReturned">True: if No Records Returned.</param>
        /// <param name="isOutBufferSizeLess">True: if OutputBufferSize is less than the size needed to return a single entry</param>
        /// <param name="outBufferSize">The state of OutBufferSize in subsection
        /// of section 3.1.5.5.4</param>
        /// <returns>An NTSTATUS code that specifies the result</returns>
        private MessageStatus QueryDirectory(
            string dirName,
            string searchPattern         = "*",
            FileInfoClass fileinfoClass  = FileInfoClass.FILE_ID_BOTH_DIR_INFORMATION,
            bool returnSingleEntry       = false,
            bool restartScan             = false,
            bool isDirectoryNotRight     = false,
            bool isOutPutBufferNotEnough = false
            )
        {
            BaseTestSite.Log.Add(LogEntryKind.TestStep, $"Query a directory information: {dirName}");

            MessageStatus status = this.fsaAdapter.QueryDirectoryInfo(
                searchPattern,
                FileInfoClass.FILE_ID_BOTH_DIR_INFORMATION,
                returnSingleEntry,
                restartScan,
                isOutPutBufferNotEnough);

            BaseTestSite.Log.Add(LogEntryKind.TestStep, $"Query directory with search pattern {searchPattern} and return with status {status}. ");

            return(status);
        }
Esempio n. 12
0
        private static void DoWork(string filePath)
        {
            try
            {
                FileInfoClass myFile     = new FileInfoClass();
                var           myFileInfo = new System.IO.FileInfo(filePath);

                myFile.FileSHA       = Hash.GetSHA1Hash(filePath);
                myFile.FileName      = Path.GetFileName(filePath);
                myFile.FileExtension = Path.GetExtension(filePath);
                myFile.FileLocation  = filePath;
                myFile.FileSize      = Converter.BytesToString(myFileInfo.Length);
                myFile.ModifyDate    = myFileInfo.LastAccessTimeUtc.ToString();


                ListOfFileAndItInfo.Add(myFile);

                DataViewModel.myDataTable.Rows.Add(new Object[] { myFile.FileName, myFile.FileExtension, myFile.FileLocation, myFile.FileSHA, myFile.FileSize, myFile.ModifyDate });

                //// Show It
                //Console.Write(
                //    "File Name: " + myFile.FileName +
                //    " - File Extension:" + myFile.FileExtension +
                //    " - File SHA:" + myFile.FileSHA +
                //    " - File Location:" + myFile.FileLocation +
                //    " - File Size:" + myFile.FileSize +
                //    " - Modify Date:" + myFile.ModifyDate +
                //    Environment.NewLine);

                // Clean it
                myFile = null;
            }
            catch (Exception)
            {
            }
        }
Esempio n. 13
0
        /// <summary>
        /// 指定目录下所有[CSV]类型文件导入DataTable
        /// XML方式一次性导入
        /// </summary>
        /// <returns></returns>
        public int ImpFilesToDataTableBulk()
        {
            int        rtn = 0;
            ComLibrary com = new ComLibrary();

            try
            {
                string   strFileNm = "";
                string[] strWk     = _file_path.Split('\\');
                strFileNm = strWk[strWk.Length - 1];
                string   strFileNmA = "";
                string[] strWkA     = strFileNm.Split('.');
                strFileNmA = strWkA[0];

                bool isEmpty = true;
                int  LineCnt = 0;

                string IfType = _if_type;//連携データ区分

                StringBuilder strXML = new StringBuilder();
                strXML.Append("<IFRows>");

                Boolean err_flag = false;
                //if (_save_path != "")
                //{
                //    if (_save_path.EndsWith("\\"))
                //        _save_file = _save_path + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + strFileNm;
                //    else
                //        _save_file = _save_path + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + strFileNm;

                //}
                // LOG FILE 名 2014.09.22
                //if (_log_path != "")
                //{
                //    if (_log_path.EndsWith("\\"))
                //        _log_file = _log_path + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + strFileNm;
                //    else
                //        _log_file = _log_path + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "_" + strFileNm;
                //}

                // FILE COPY 2014.09.22
                //if (_save_path != "")
                //{
                //    File.Copy(_file_path, _save_file, true);
                //}

                Encoding FileEncoding = GetFileEncoding(_file_path);

                // 最初にメモリに読むこむ
                int wLineCnt = 0;

                StreamReader sr = new StreamReader(_file_path, FileEncoding);
                while (sr.Peek() >= 0)
                {
                    wLineCnt++;
                    string        strRecord = sr.ReadLine();
                    FileInfoClass fi        = new FileInfoClass();
                    fi.LineCnt = wLineCnt;
                    fi.Data    = strRecord;
                    lstFileInfo.Add(fi);
                }
                sr.Dispose();
                sr.Close();

                TextFieldParser parser = new TextFieldParser(_file_path, FileEncoding);
                using (parser)
                {
                    parser.TextFieldType = FieldType.Delimited;
                    parser.SetDelimiters(","); // 区切り文字はコンマ

                    while (!parser.EndOfData)
                    {
                        err_flag = false;
                        LineCnt++;
                        isEmpty = false;
                        string[] strRecord = parser.ReadFields(); // 1行読み込み 2014.09.22

                        string aRecord = "";
                        for (int p = 0; p < strRecord.Length; p++)
                        {
                            if (p > 0)
                            {
                                aRecord += "|";
                            }
                            aRecord += strRecord[p];
                        }
                        if (LineCnt <= lstFileInfo.Count)
                        {
                            ((FileInfoClass)lstFileInfo[LineCnt - 1]).CnvData = aRecord;
                        }

                        //各項目属性チェック
                        //年月, 数量
                        //if (!com.IsNumeric(strRecord[2].Replace("/", "")) || !com.IsNumeric(strRecord[3]))
                        //{
                        //    err_flag = true;

                        //    // 2014.10.10
                        //    if (LineCnt <= lstFileInfo.Count)
                        //    {
                        //        ((FileInfoClass)lstFileInfo[LineCnt - 1]).ErrFlag = 1;
                        //        ((FileInfoClass)lstFileInfo[LineCnt - 1]).ErrMsg = "数値エラー。";
                        //    }
                        //}

                        //数据各项值取得
                        IF_PROD_PLAN ifpl = SetRecordValues(IfType, LineCnt, strRecord, FileEncoding);


                        //if (ifpl.ITEM_NO.ToString().Length > 30
                        //|| ifpl.ITEM_DESC.ToString().Length > 50
                        //|| ifpl.PLAN_YM.ToString().Length > 6
                        //|| com.StringToDouble(ifpl.ORDER_QTY.ToString()) > 1000000000)
                        //{
                        //    err_flag = true;

                        //    if (LineCnt <= lstFileInfo.Count)
                        //    {
                        //        ((FileInfoClass)lstFileInfo[LineCnt - 1]).ErrFlag = 1;
                        //        ((FileInfoClass)lstFileInfo[LineCnt - 1]).ErrMsg += "桁数エラー。";
                        //    }
                        //}


                        if (err_flag)   // 2014.10.10
                        {
                            //_len_err_cnt++;

                            ////IF 取込データログに登録
                            //Poif poif = new Poif(_chg_user_id, _lang);
                            //Message msg = new Message(_chg_user_id, _lang);

                            //poif.if_date = ifpl.IF_DATE;
                            //poif.if_hms = ifpl.IF_HMS;
                            //poif.if_type = ifpl.IF_TYPE;
                            //poif.if_type_name = _if_type_name;
                            //poif.if_data_seq = ifpl.IF_DATA_SEQ;
                            //poif.if_data = aRecord;
                            //poif.if_data_err = msg.GetMessage("COLUMN_LENGTH_FORMAT_ERR");
                            //poif.if_data_flag = 2;
                            //poif.chg_pgm = _chg_pgm;
                            //poif.chg_user_id = _chg_user_id;
                            //poif.lang = _lang;
                            //poif.errcode = _errcode;
                            //poif.errmsg = _errmsg;
                            //poif.sqlcode = _sqlcode;
                            //poif.dbmsg = _dbmsg;

                            //rtn = poif.Ins_IF_IN_LOG();
                            //if (rtn == ComConst.FAILED)
                            //{
                            //    goto RESULT;
                            //}
                        }

                        if (!err_flag)  // 2014.09.22
                        {
                            //XML格式作成
                            strXML.Append("<IFRow ");
                            //strXML.Append(" IF_DATE=\"" + ifpl.IF_DATE.ToString() + "\"");
                            //strXML.Append(" IF_HMS=\"" + ifpl.IF_HMS.ToString() + "\"");
                            strXML.Append(" IF_TYPE=\"" + ifpl.IF_TYPE + "\"");
                            strXML.Append(" IF_DATA_SEQ=\"" + ifpl.IF_DATA_SEQ.ToString() + "\"");
                            strXML.Append(" IF_PLAN_NO=\"" + ifpl.IF_PLAN_NO + "\"");
                            strXML.Append(" ITEM_NO=\"" + ifpl.ITEM_NO + "\"");
                            //strXML.Append(" ITEM_DESC=\"" + com.XMLString(ifpl.ITEM_DESC) + "\"");
                            //strXML.Append(" WS_CD=\"" + ifpl.WS_CD + "\"");
                            //strXML.Append(" PLAN_YM=\"" + ifpl.PLAN_YM.ToString() + "\"");
                            //strXML.Append(" ORDER_QTY=\"" + ifpl.ORDER_QTY.ToString() + "\"");
                            //strXML.Append(" IF_DATA_FLAG=\"" + ifpl.IF_DATA_FLAG.ToString() + "\"");
                            //strXML.Append(" CHG_PGM=\"" + _chg_pgm + "\"");
                            strXML.Append(" CHG_USER_ID=\"" + _chg_user_id + "\"");
                            strXML.Append(" />");
                        }
                    }
                }
                strXML.Append("</IFRows>");

                //_file_line_cnt = LineCnt;

                if (isEmpty)
                {
                    Message msg = new Message(_chg_user_id, _lang);
                    _strErr = msg.GetMessage("FILE_NOT_EXIST_ERR");
                    rtn     = ComConst.CHECK_ERROR;
                    goto RESULT;
                }
                else
                {
                    // [IF初期取込生産計画]の一括登録
                    #region : [IF初期取込生産計画]の一括登録
                    ComDB db = new ComDB(_db_type);
                    db.DbParametersClear();

                    db.DbPsetInt("rtn", rtn, ComConst.DB_RTN);
                    db.DbPsetXml("@I_XML", strXML.ToString(), strXML.ToString().Length, ComConst.DB_IN);
                    db.DbPsetInt("@I_LANG", _lang, ComConst.DB_IN);
                    db.DbPsetInt("@O_ERRCODE", _errcode, ComConst.DB_OUT);
                    db.DbPsetString("@O_MSG", _errmsg, ComConst.DB_OUT);
                    db.DbPsetInt("@O_SQLCODE", _sqlcode, ComConst.DB_OUT);
                    db.DbPsetString("@O_SQLMSG", _dbmsg, ComConst.DB_OUT);
                    db.DbPsetString("@O_PROC_NAME", _proc_name, ComConst.DB_OUT);

                    db.DbBeginTrans();
                    rtn = db.DbStored("SP_IF_PROD_PLAN_BULK_IMP");//一括登録
                    if (rtn == ComConst.SUCCEED)
                    {
                        db.DbCommit();
                    }
                    else
                    {
                        db.DbRollback();
                        rtn = db.DbPgetInt("rtn");
                        if (rtn > 0)
                        {
                            _errcode   = db.DbPgetInt("@O_ERRCODE");
                            _errmsg    = db.DbPgetString("@O_MSG");
                            _sqlcode   = db.DbPgetInt("@O_SQLCODE");
                            _dbmsg     = db.DbPgetString("@O_SQLMSG");
                            _proc_name = db.DbPgetString("@O_PROC_NAME");
                            _strErr    = _errcode + ":" + _errmsg + "[" + _sqlcode + ":" + _dbmsg + "(" + _proc_name + ")]";
                        }
                        else
                        {
                            _strErr = db.strErr;
                        }
                        rtn = ComConst.FAILED;
                    }
                    #endregion
                }
                //File.Delete(_file_path);
            }
            catch (Exception ex)
            {
                _strErr = ex.ToString();
                rtn     = ComConst.FAILED;
            }

RESULT:
            return(rtn);
        }
 internal static MessageStatus WorkaroundQueryFileInfoPart1(FileSystem fileSystem, FileInfoClass fileInfoClass, OutputBufferSize outputBufferSize, ref ByteCount byteCount, ref OutputBuffer outputBuffer, MessageStatus returnedStatus, ITestSite site)
 {
     if (fileInfoClass == FileInfoClass.NOT_DEFINED_IN_FSCC || fileInfoClass == FileInfoClass.FILE_BOTH_DIR_INFORMATION
         || fileInfoClass == FileInfoClass.FILE_DIRECTORY_INFORMATION || fileInfoClass == FileInfoClass.FILE_FULL_DIR_INFORMATIO
         || fileInfoClass == FileInfoClass.FILE_LINKS_INFORMATION || fileInfoClass == FileInfoClass.FILE_ID_BOTH_DIR_INFORMATION
         || fileInfoClass == FileInfoClass.FILE_ID_FULL_DIR_INFORMATION || fileInfoClass == FileInfoClass.FILE_ID_GLOBAL_TX_DIR_INFORMATION
         || fileInfoClass == FileInfoClass.FILE_NAME_INFORMATION || fileInfoClass == FileInfoClass.FILE_NAMES_INFORMATION
         || fileInfoClass == FileInfoClass.FILE_OBJECTID_INFORMATION || fileInfoClass == FileInfoClass.FILE_QUOTA_INFORMATION
         || fileInfoClass == FileInfoClass.FILE_REPARSE_POINT_INFORMATION || fileInfoClass == FileInfoClass.FILE_SFIO_RESERVE_INFORMATION
         || fileInfoClass == FileInfoClass.FILE_STANDARD_LINK_INFORMATION)
     {
         returnedStatus = FsaUtility.TransferExpectedResult<MessageStatus>(2749, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_ACCESS_INFORMATION && outputBufferSize == OutputBufferSize.NotLessThan)
     {
         outputBuffer = FsaUtility.TransferExpectedResult<OutputBuffer>(1421, new OutputBuffer(), outputBuffer, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_FULLEA_INFORMATION && outputBufferSize == OutputBufferSize.LessThan)
     {
         returnedStatus = FsaUtility.TransferExpectedResult<MessageStatus>(3994, MessageStatus.BUFFER_TOO_SMALL, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_FULLEA_INFORMATION &&
         returnedStatus == MessageStatus.NO_EAS_ON_FILE)
     {
         // For query FILE_FULLEA_INFORMATION, when server returns STATUS_NO_EAS_ON_FILE, this result is valid according to model design.
         // Transfer the return code and byteCount to make model test cases passed.
         byteCount = FsaUtility.TransferExpectedResult<ByteCount>(3992, ByteCount.SizeofFILE_FULL_EA_INFORMATION, byteCount, site);
         returnedStatus = FsaUtility.TransferExpectedResult<MessageStatus>(1187, MessageStatus.SUCCESS, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_FULLEA_INFORMATION &&
         fileSystem == FileSystem.REFS &&
         outputBufferSize == OutputBufferSize.NotLessThan)
     {
         // REFS file system does not support FILE_FULLEA_INFORMATION, will failed with STATUS_INVALID_DEVICE_REQUEST
         // Transfer the return code and byteCount to make model test cases passed.
         byteCount = FsaUtility.TransferExpectedResult<ByteCount>(3992, ByteCount.SizeofFILE_FULL_EA_INFORMATION, byteCount, site);
         returnedStatus = FsaUtility.TransferExpectedResult<MessageStatus>(1187, MessageStatus.SUCCESS, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_ALTERNATENAME_INFORMATION &&
         fileSystem == FileSystem.REFS &&
         outputBufferSize == OutputBufferSize.NotLessThan)
     {
         // REFS file system does not support FILE_ALTERNATENAME_INFORMATION, will failed with STATUS_OBJECT_NAME_NOT_FOUND
         // Transfer the return code and byteCount to make model test cases passed.
         byteCount = FsaUtility.TransferExpectedResult<ByteCount>(3992, ByteCount.FieldOffsetFILE_NAME_INFORMATION_FileNameAddOutputBuffer_FileNameLength, byteCount, site);
         returnedStatus = FsaUtility.TransferExpectedResult<MessageStatus>(1187, MessageStatus.SUCCESS, returnedStatus, site);
     }
     return returnedStatus;
 }
Esempio n. 15
0
        private List <FileInfoClass> RetriveSubDocs(List <string> ANDTerms)
        {
            List <FileInfoClass> subDocs = new List <FileInfoClass>();

            List <List <InvertedTableItem> > allItemLists = new List <List <InvertedTableItem> >();

            //foreach (string term in ANDTerms)
            for (int index = 0; index < ANDTerms.Count; ++index)
            {
                string term    = ANDTerms[index];
                int    tokenId = GetTokenId(term);
                if (tokenId != -1)
                {
                    List <InvertedTableItem> itemList = this.invertedTable[tokenId];
                    allItemLists.Add(itemList);
                }
            }

            List <InvertedTableItem> subItemLists = allItemLists[0];

            //计算交集
            for (int index = 1; index < allItemLists.Count; ++index)
            {
                List <InvertedTableItem> tempList = new List <InvertedTableItem>();
                foreach (InvertedTableItem item in allItemLists[index])
                {
                    foreach (InvertedTableItem item2 in subItemLists)
                    {
                        if (item2.FileIndex == item.FileIndex)
                        {
                            tempList.Add(item);
                            break;
                        }
                    }
                }

                subItemLists.Clear();
                foreach (InvertedTableItem item in tempList)
                {
                    subItemLists.Add(item);
                }
            }

            foreach (InvertedTableItem item in subItemLists)
            {
                //计算df-itf
                double        df  = item.OccurCounts;
                double        itf = Math.Log10(((double)this.docCounts / (double)subItemLists.Count()));
                FileInfoClass fic = new FileInfoClass(item.FileIndex, df * itf);

                bool flag = false;
                foreach (FileInfoClass doc in subDocs)
                {
                    if (doc.FileIndex == fic.FileIndex)
                    {
                        flag            = true;
                        doc.DFITFValue += fic.DFITFValue;
                    }
                }

                if (false == flag)
                {
                    subDocs.Add(fic);
                }
            }

            return(subDocs);
        }
        internal static MessageStatus WorkAroundQueryFileInfoPart1(FileSystem fileSystem, FileInfoClass fileInfoClass, OutputBufferSize outputBufferSize, ref ByteCount byteCount, ref OutputBuffer outputBuffer, MessageStatus returnedStatus, ITestSite site)
        {
            if (fileInfoClass == FileInfoClass.NOT_DEFINED_IN_FSCC)
            {
                returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1426, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
            }
            else
            {
                switch (fileInfoClass)
                {
                case FileInfoClass.FILE_STANDARD_LINK_INFORMATION:
                {
                    returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(2749, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
                    break;
                }

                case FileInfoClass.FILE_LINKS_INFORMATION:
                {
                    returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1593, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
                    break;
                }

                case FileInfoClass.FILE_QUOTA_INFORMATION:
                {
                    returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(2524, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
                    break;
                }

                case FileInfoClass.FILE_SFIO_RESERVE_INFORMATION:
                {
                    returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(2734, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
                    break;
                }

                case FileInfoClass.FILE_OBJECTID_INFORMATION:
                {
                    returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1585, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
                    break;
                }

                case FileInfoClass.FILE_REPARSE_POINT_INFORMATION:
                {
                    returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(2558, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
                    break;
                }

                case FileInfoClass.FILE_NAME_INFORMATION:
                {
                    returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1591, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
                    break;
                }

                case FileInfoClass.FILE_FULLEA_INFORMATION:
                {
                    // SMB server does not suport this operation, transfer return code to keep same model behavior
                    if (returnedStatus == MessageStatus.INVALID_INFO_CLASS)
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(3899, MessageStatus.BUFFER_TOO_SMALL, returnedStatus, site);
                        }
                        else
                        {
                            byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(3992, ByteCount.SizeofFILE_FULL_EA_INFORMATION, byteCount, site);
                            returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(3994, MessageStatus.SUCCESS, returnedStatus, site);
                        }
                    }
                    break;
                }

                case FileInfoClass.FILE_ALTERNATENAME_INFORMATION:
                {
                    if (fileSystem == FileSystem.REFS && outputBufferSize == OutputBufferSize.NotLessThan)
                    {
                        // REFS file system does not support FILE_ALTERNATENAME_INFORMATION, will failed with STATUS_OBJECT_NAME_NOT_FOUND
                        // Transfer the return code and byteCount to make model test cases passed.
                        byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(3992, ByteCount.FieldOffsetFILE_NAME_INFORMATION_FileNameAddOutputBuffer_FileNameLength, byteCount, site);
                        returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1187, MessageStatus.SUCCESS, returnedStatus, site);
                    }
                    break;
                }

                default:
                    break;
                }
            }
            return(returnedStatus);
        }
Esempio n. 17
0
 public unsafe static extern bool GetFileInformationByHandleEx(
     IntPtr hFile,
     FileInfoClass FileInformationClass,
     void *lpFileInformation,
     uint dwBufferSize);
Esempio n. 18
0
        public List <FileInfoClass> GetFileList()
        {
            Class.XML_Files.Fragtbrev funcFragt = new Class.XML_Files.Fragtbrev();
            Class.XML_Files.Faktura   funcFakt  = new Class.XML_Files.Faktura();

            List <FileInfoClass> allFileList = new List <FileInfoClass>();

            string FolderPDF = Models.ImportantData.g_FolderPdf;
            string FolderXML = Models.ImportantData.g_FolderSave;

            //hent fil info
            List <string>   fileNamesPdf  = Directory.GetFiles(FolderPDF).Select(path => System.IO.Path.GetFileName(path)).ToList();
            List <string>   fileNamesSave = Directory.GetFiles(FolderXML).Select(path => System.IO.Path.GetFileName(path)).ToList();
            List <DateTime> writeDatePDF  = Directory.GetFiles(FolderPDF).Select(path => File.GetLastWriteTime(path)).ToList();
            List <DateTime> writeDateXML  = Directory.GetFiles(FolderXML).Select(path => File.GetLastWriteTime(path)).ToList();

            int fileCount = fileNamesSave.Count();

            for (int i = 0; i < fileCount; i++)
            {
                if (fileNamesSave[i].Contains("Fragtbrev-"))
                {
                    //find fraktbrev nummer
                    string fragtNr = "";
                    fragtNr = fileNamesSave[i].Replace("Fragtbrev-", "");
                    fragtNr = fragtNr.Replace(".xml", "");

                    //om der er lavet en faktura version
                    bool hasFaktura  = fileNamesSave.Contains("Faktura-" + fragtNr + ".xml");
                    bool hasFragtPDF = fileNamesPdf.Contains("Fragtbrev-" + fragtNr + ".pdf");
                    bool hasFaktPDF  = fileNamesPdf.Contains("Faktura-" + fragtNr + ".pdf");

                    //hvem der oprettet/ændret filen
                    var    fragtbrevRead = funcFragt.ReadFile("Fragtbrev-" + fragtNr);
                    string statusFragt   = "";
                    string statusFakt    = "Ikke oprrettet.";

                    if (fragtbrevRead.Close.IsClosed)
                    {
                        statusFragt = "Afsluttet.";
                    }
                    else if (hasFragtPDF)
                    {
                        statusFragt = "Gemt som PDF.";
                    }
                    else
                    {
                        statusFragt = "Oprettet.";
                    }

                    string fragtCreators = "";
                    string faktCreators  = "";

                    foreach (var creator in fragtbrevRead.Owners)
                    {
                        fragtCreators += creator + ", ";
                    }
                    fragtCreators = fragtCreators.Substring(0, fragtCreators.Length - 2);

                    if (hasFaktura)
                    {
                        var fakturaRead = funcFakt.ReadFile("Faktura-" + fragtNr);

                        if (fakturaRead.IsClosed)
                        {
                            statusFakt = "Afsluttet.";
                        }
                        else if (hasFaktPDF)
                        {
                            statusFakt = "Gemt som PDF.";
                        }
                        else
                        {
                            statusFakt = "Oprettet.";
                        }

                        foreach (var creator in fakturaRead.Owners)
                        {
                            faktCreators += creator + ", ";
                        }
                        faktCreators = faktCreators.Substring(0, faktCreators.Length - 2);
                    }

                    //hent sidste ændrings dato
                    DateTime editDateFragtXML = writeDateXML[i];
                    DateTime editDateFaktXML  = new DateTime();
                    DateTime editDateFragtPDF = new DateTime();
                    DateTime editDateFaktPDF  = new DateTime();

                    if (hasFragtPDF)
                    {
                        int index = fileNamesPdf.IndexOf("Fragtbrev-" + fragtNr + ".pdf");
                        editDateFragtPDF = writeDatePDF[index];
                    }
                    if (hasFaktura)
                    {
                        int index = fileNamesSave.IndexOf("Faktura-" + fragtNr + ".xml");
                        editDateFaktXML = writeDateXML[index];
                    }
                    if (hasFaktPDF)
                    {
                        int index = fileNamesPdf.IndexOf("Faktura-" + fragtNr + ".pdf");
                        editDateFaktPDF = writeDatePDF[index];
                    }

                    //
                    FileInfoClass newFileInfo = new FileInfoClass();
                    newFileInfo.fragtNumb     = fragtNr;
                    newFileInfo.hasFragtPDF   = hasFragtPDF;
                    newFileInfo.fragtClosed   = fragtbrevRead.Close.IsClosed;
                    newFileInfo.hasFaktura    = hasFaktura;
                    newFileInfo.hasFaktPDF    = hasFaktPDF;
                    newFileInfo.creatorsFragt = fragtCreators;
                    newFileInfo.creatorsFakt  = faktCreators;
                    newFileInfo.dateXML_Fragt = editDateFragtXML;
                    newFileInfo.dateXML_Fakt  = editDateFaktXML;
                    newFileInfo.datePDF_Fragt = editDateFragtPDF;
                    newFileInfo.datePDF_Fakt  = editDateFaktPDF;
                    newFileInfo.statusFragt   = statusFragt;
                    newFileInfo.statusFakt    = statusFakt;

                    allFileList.Add(newFileInfo);
                }
            }

            //Send liste tilbage
            return(allFileList);
        }
        public static MessageStatus QueryFileInfoPart1(
            FileInfoClass fileInfoClass,
            OutputBufferSize outputBufferSize,
            out ByteCount byteCount,
            out OutputBuffer outputBuffer
            )
        {
            byteCount = ByteCount.NotSet;
            outputBuffer = new OutputBuffer();
            if (fileInfoClass == FileInfoClass.NOT_DEFINED_IN_FSCC)
            {
                Helper.CaptureRequirement(1426, @"[In Server Requests a Query of File Information ]
                    If FileInformationClass is not defined in [MS-FSCC] section 2.4, the operation MUST be failed with STATUS_INVALID_INFO_CLASS.");
                return MessageStatus.INVALID_INFO_CLASS;
            }

            switch (fileInfoClass)
            {
                #region  3.1.5.11.1    FileAccessInformation

                case (FileInfoClass.FILE_ACCESS_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1428, @"[In FileAccessInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than sizeof( FILE_ACCESS_INFORMATION ),
                                the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }

                        outputBuffer.AccessFlags = gOpenGrantedAccess;
                        Helper.CaptureRequirement(1430, @"[In FileAccessInformation,Pseudocode for the operation is as follows:]
                            OutputBuffer MUST be filled out as follows:OutputBuffer.AccessFlags set to Open.GrantedAccess.");

                        byteCount = ByteCount.SizeofFILE_ACCESS_INFORMATION;
                        Helper.CaptureRequirement(3967, @"[In FileAccessInformation]Upon successful completion of the operation,
                            the object store MUST return: ByteCount set to sizeof( FILE_ACCESS_INFORMATION ).");
                        Helper.CaptureRequirement(3968, @"[In FileAccessInformation]Upon successful completion of the operation,
                            the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region  3.1.5.11.2    FileAlignmentInformation

                case (FileInfoClass.FILE_ALIGNMENT_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1433, @"[In FileAlignmentInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than sizeof( FILE_ALIGNMENT_INFORMATION ),
                                the operation MUST be failed with Status STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }
                        byteCount = ByteCount.SizeofFILE_ALIGNMENT_INFORMATION;
                        Helper.CaptureRequirement(1435, @"[In FileAlignmentInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:ByteCount set to sizeof( FILE_ALIGNMENT INFORMATION ).");
                        Helper.CaptureRequirement(1436, @"[In FileAlignmentInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region  3.1.5.11.3    FileAllInformation

                case (FileInfoClass.FILE_ALL_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(3970, @"[In FileAllInformation] Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than BlockAlign( FieldOffset( FILE_ALL_INFORMATION.NameInformation.FileName ) + 2, 8 ),
                                the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }
                        byteCount = ByteCount.FieldOffsetFILE_ALL_INFORMATION_NameInformationAddNameInformationLength;
                        Helper.CaptureRequirement(3980, @"[In FileAllInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:
                            ByteCount set to FieldOffset( FILE_ALL_INFORMATION.NameInformation ) + NameInformationLength.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region  3.1.5.11.4    FileAlternateNameInformation

                case (FileInfoClass.FILE_ALTERNATENAME_INFORMATION):
                    {

                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1438, @"[In FileAlternateNameInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than BlockAlign( FieldOffset( FILE_NAME_INFORMATION.FileName ) + 2, 4 ),
                                the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }

                        byteCount = ByteCount.FieldOffsetFILE_NAME_INFORMATION_FileNameAddOutputBuffer_FileNameLength;
                        Helper.CaptureRequirement(1442, @"[In FileAlternateNameInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:
                            ByteCount set to FieldOffset( FILE_NAME_INFORMATION.FileName ) + OutputBuffer.FileNameLength.");
                        Helper.CaptureRequirement(1443, @"[In FileAlternateNameInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region  3.1.5.11.5    FileAttributeTagInformation

                case (FileInfoClass.FILE_ATTRIBUTETAG_INFORMATION):
                    {

                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1445, @"[In FileAttributeTagInformation,Pseudocode for the operation is as follows:]
                                If OutputBufferSize is smaller than sizeof( FILE_ATTRIBUTE_TAG_INFORMATION ), the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }

                        byteCount = ByteCount.SizeofFILE_ATTRIBUTE_TAG_INFORMATION;
                        Helper.CaptureRequirement(1464, @"[In FileAttributeTagInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:ByteCount set to sizeof(FILE_ATTRIBUTE_TAG_INFORMATION ).");
                        Helper.CaptureRequirement(1465, @"[In FileAttributeTagInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region  3.1.5.11.6    FileBasicInformation

                case (FileInfoClass.FILE_BASIC_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1467, @"[In FileBasicInformation]Pseudocode for the operation is as follows:If OutputBufferSize is smaller than BlockAlign( sizeof( FILE_BASIC_INFORMATION ), 8 ), the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }

                        byteCount = ByteCount.SizeofFILE_BASIC_INFORMATION;
                        Helper.CaptureRequirement(3982, @"[In FileBasicInformation]Upon successful completion of the operation,
                            the object store MUST return:ByteCount set to sizeof( FILE_BASIC_INFORMATION ).");
                        Helper.CaptureRequirement(3983, @"[In FileBasicInformation]Upon successful completion of the operation,
                            the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region  3.1.5.11.7    FileBothDirectoryInformation

                case (FileInfoClass.FILE_BOTH_DIR_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1605, @"[In FileBothDirectoryInformation, This operation]MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region  3.1.5.11.8    FileCompressionInformation

                case (FileInfoClass.FILE_COMPRESSION_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1489, @"[In FileCompressionInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than sizeof( FILE_COMPRESSION_INFORMATION ),
                                the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }
                        byteCount = ByteCount.SizeofFILE_COMPRESSION_INFORMATION;
                        Helper.CaptureRequirement(3984, @"[In FileCompressionInformation]Upon successful completion of the operation,
                            the object store MUST return:ByteCount set to sizeof(FILE_COMPRESSION_INFORMATION ).");
                        Helper.CaptureRequirement(3985, @"[In FileCompressionInformation]Upon successful completion of the operation,
                            the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region  3.1.5.11.9    FileDirectoryInformation

                case (FileInfoClass.FILE_DIRECTORY_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1603, @"[In FileDirectoryInformation,This operation ]MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region  3.1.5.11.10    FileEaInformation

                case (FileInfoClass.FILE_EA_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(3986, @"[In FileEaInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than sizeof( FILE_EA_INFORMATION ), the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }
                        byteCount = ByteCount.SizeofFILE_EA_INFORMATION;
                        Helper.CaptureRequirement(3987, @"[In FileEaInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:ByteCount set to sizeof( FILE_EA_INFORMATION ).");
                        Helper.CaptureRequirement(3988, @"[In FileEaInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region  3.1.5.11.11    FileFullDirectoryInformation

                case (FileInfoClass.FILE_FULL_DIR_INFORMATIO):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1601, @"[In FileFullDirectoryInformation,This operation ]MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS, acctually ,it return INVALID_INFO_CLASS
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region  3.1.5.11.12    FileFullEaInformation

                case (FileInfoClass.FILE_FULLEA_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(3994, @"[In FileFullEaInformation,Pseudocode for the operation is as follows:]
                                Upon successful completion of the operation, the object store MUST return:Status set to:STATUS_BUFFER_TOO_SMALL
                                if OutputBufferSize is too small to hold Open.NextEaEntry.  No entries are returned.");
                            return MessageStatus.BUFFER_TOO_SMALL;
                        }
                        byteCount = ByteCount.SizeofFILE_FULL_EA_INFORMATION;
                        Helper.CaptureRequirement(3992, @"[In FileFullEaInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:ByteCount set to the size, in bytes,
                            of all FILE_FULL_EA_INFORMATION entries returned.");
                        return MessageStatus.SUCCESS;

                    }

                #endregion

                #region 3.1.5.11.13    FileHardLinkInformation

                case (FileInfoClass.FILE_LINKS_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1593, @"[In FileHardLinkInformation,This operation] MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.14  FileIdBothDirectoryInformation

                case (FileInfoClass.FILE_ID_BOTH_DIR_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1595, @"[In FileIdBothDirectoryInformation,This operation] MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.15  FileIdFullDirectoryInformation

                case (FileInfoClass.FILE_ID_FULL_DIR_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1597, @"[In FileIdFullDirectoryInformation,This operation]MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.16  FileIdGlobalTxDirectoryInformation

                case (FileInfoClass.FILE_ID_GLOBAL_TX_DIR_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1599, @"[In FileIdGlobalTxDirectoryInformation,This operation] MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.17    FileInternalInformation

                case (FileInfoClass.FILE_INTERNAL_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1524, @"[In FileInternalInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than sizeof( FILE_INTERNAL_INFORMATION ),
                                the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }
                        byteCount = ByteCount.SizeofFILE_INTERNAL_INFORMATION;
                        Helper.CaptureRequirement(3997, @"[In FileInternalInformation]Upon successful completion of the operation,
                            the object store MUST return: ByteCount set to sizeof( FILE_INTERNAL_INFORMATION ).");
                        Helper.CaptureRequirement(3998, @"[In FileInternalInformation]Upon successful completion of the operation,
                            the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region 3.1.5.11.18    FileModeInformation

                case (FileInfoClass.FILE_MODE_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1529, @"[In FileModeInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than sizeof(FILE_MODE_INFORMATION ), the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }
                        byteCount = ByteCount.SizeofFILE_MODE_INFORMATION;
                        Helper.CaptureRequirement(4000, @"[In FileModeInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:ByteCount set to sizeof( FILE_MODE_INFORMATION ).");
                        Helper.CaptureRequirement(4001, @"[In FileModeInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region 3.1.5.11.19  FileNameInformation

                case (FileInfoClass.FILE_NAME_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1591, @"[In FileNameInformation]This operation MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.20  FileNamesInformation

                case (FileInfoClass.FILE_NAMES_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1587, @"[In FileNamesInformation]If used to query file information STATUS_NOT_SUPPORTED MUST be returned.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.21    FileNetworkOpenInformation

                case (FileInfoClass.FILE_NETWORKOPEN_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(4002, @"[In FileNetworkOpenInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than sizeof( FILE_NETWORK_OPEN_INFORMATION ),
                                the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }

                        byteCount = ByteCount.SizeofFILE_NETWORK_OPEN_INFORMATION;
                        Helper.CaptureRequirement(4004, @"[In FileNetworkOpenInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:ByteCount set to sizeof( FILE_NETWORK_OPEN_INFORMATION ).");
                        Helper.CaptureRequirement(4005, @"[In FileNetworkOpenInformation,Pseudocode for the operation is as follows:]U
                            pon successful completion of the operation, the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region 3.1.5.11.22  FileObjectIdInformation

                case (FileInfoClass.FILE_OBJECTID_INFORMATION):
                    {

                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(1585, @"[In FileObjectIdInformation,This operation]MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.23    FilePositionInformation

                case (FileInfoClass.FILE_POSITION_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(1561, @"[In FilePositionInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is less than the size, in bytes, of the FILE_POSITION_INFORMATION structure,
                                the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }
                        Helper.CaptureRequirement(1563, @"[In FilePositionInformation,Pseudocode for the operation is as follows:]
                            The operation returns STATUS_SUCCESS.<57>");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region 3.1.5.11.24  FileQuotaInformation

                case (FileInfoClass.FILE_QUOTA_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(2525, @"[In FileQuotaInformation]If used to query file information STATUS_NOT_SUPPORTED MUST be returned.");
                        Helper.CaptureRequirement(2524, @"[In FileQuotaInformation]This operation is not supported as a file information class,
                            it is only supported as a directory enumeration class, see section 3.1.5.5.2.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.25  FileReparsePointInformation

                case (FileInfoClass.FILE_REPARSE_POINT_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(2559, @"[In FileReparsePointInformation ]
                           If used to query file information STATUS_NOT_SUPPORTED MUST be returned.");
                        Helper.CaptureRequirement(2558, @"[In FileReparsePointInformation ] This operation is not supported as a file information class,
                            it is only supported as a directory enumeration class, see section 3.1.5.5.3.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.26  FileSfioReserveInformation

                case (FileInfoClass.FILE_SFIO_RESERVE_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(2734, @"[In FileSfioReserveInformation] This operation MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region 3.1.5.11.27    FileStandardInformation

                case (FileInfoClass.FILE_STANDARD_INFORMATION):
                    {
                        if (outputBufferSize == OutputBufferSize.LessThan)
                        {
                            Helper.CaptureRequirement(4006, @"[In FileStandardInformation]Pseudocode for the operation is as follows:
                                If OutputBufferSize is smaller than sizeof( FILE_STANDARD_INFORMATION ),
                                the operation MUST be failed with STATUS_INFO_LENGTH_MISMATCH.");
                            return MessageStatus.INFO_LENGTH_MISMATCH;
                        }
                        byteCount = ByteCount.SizeofFILE_STANDARD_INFORMATION;
                        Helper.CaptureRequirement(4007, @"[In FileStandardInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:ByteCount set to sizeof( FILE_STANDARD_INFORMATION ).");
                        Helper.CaptureRequirement(4008, @"[In FileStandardInformation,Pseudocode for the operation is as follows:]
                            Upon successful completion of the operation, the object store MUST return:Status set to STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion

                #region 3.1.5.11.28  FileStandardLinkInformation

                case (FileInfoClass.FILE_STANDARD_LINK_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        // This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                        Helper.CaptureRequirement(2749, @"[In FileStandardLinkInformation]This operation MUST be failed with STATUS_NOT_SUPPORTED.");
                        //return MessageStatus.NOT_SUPPORTED;
                        //this is a TD issue ,so change the return value to return MessageStatus.INVALID_INFO_CLASS;
                        return MessageStatus.INVALID_INFO_CLASS;
                    }

                #endregion

                #region  3.1.5.11.29    FileStreamInformation
                case (FileInfoClass.FILE_STREAM_INFORMATION):
                    {
                        Condition.IsTrue(outputBufferSize == OutputBufferSize.NotLessThan);
                        Helper.CaptureRequirement(2625, @"[In FileStreamInformation,Pseudocode for the operation is as follows:]
                            The operation returns STATUS_SUCCESS.");
                        Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion,
                            the object store MUST return:[Status,OutputBuffer,ByteCount].");
                        return MessageStatus.SUCCESS;
                    }

                #endregion
            }
            Helper.CaptureRequirement(1421, @"[In Server Requests a Query of File Information ]On completion, the object store MUST return:[Status,OutputBuffer,ByteCount].");
            return MessageStatus.SUCCESS;
        }
 internal static MessageStatus WorkaroundQueryFileInfoPart1(FileSystem fileSystem, FileInfoClass fileInfoClass, OutputBufferSize outputBufferSize, ref ByteCount byteCount, ref OutputBuffer outputBuffer, MessageStatus returnedStatus, ITestSite site)
 {
     if (fileInfoClass == FileInfoClass.NOT_DEFINED_IN_FSCC || fileInfoClass == FileInfoClass.FILE_BOTH_DIR_INFORMATION ||
         fileInfoClass == FileInfoClass.FILE_DIRECTORY_INFORMATION || fileInfoClass == FileInfoClass.FILE_FULL_DIR_INFORMATION ||
         fileInfoClass == FileInfoClass.FILE_LINKS_INFORMATION || fileInfoClass == FileInfoClass.FILE_ID_BOTH_DIR_INFORMATION ||
         fileInfoClass == FileInfoClass.FILE_ID_FULL_DIR_INFORMATION || fileInfoClass == FileInfoClass.FILE_ID_GLOBAL_TX_DIR_INFORMATION ||
         fileInfoClass == FileInfoClass.FILE_NAME_INFORMATION || fileInfoClass == FileInfoClass.FILE_NAMES_INFORMATION ||
         fileInfoClass == FileInfoClass.FILE_OBJECTID_INFORMATION || fileInfoClass == FileInfoClass.FILE_QUOTA_INFORMATION ||
         fileInfoClass == FileInfoClass.FILE_REPARSE_POINT_INFORMATION || fileInfoClass == FileInfoClass.FILE_SFIO_RESERVE_INFORMATION ||
         fileInfoClass == FileInfoClass.FILE_STANDARD_LINK_INFORMATION)
     {
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(2749, MessageStatus.INVALID_INFO_CLASS, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_ACCESS_INFORMATION && outputBufferSize == OutputBufferSize.NotLessThan)
     {
         outputBuffer = FsaUtility.TransferExpectedResult <OutputBuffer>(1421, new OutputBuffer(), outputBuffer, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_FULLEA_INFORMATION && outputBufferSize == OutputBufferSize.LessThan)
     {
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(3994, MessageStatus.BUFFER_TOO_SMALL, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_FULLEA_INFORMATION &&
              returnedStatus == MessageStatus.NO_EAS_ON_FILE)
     {
         // For query FILE_FULLEA_INFORMATION, when server returns STATUS_NO_EAS_ON_FILE, this result is valid according to model design.
         // Transfer the return code and byteCount to make model test cases passed.
         byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(3992, ByteCount.SizeofFILE_FULL_EA_INFORMATION, byteCount, site);
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1187, MessageStatus.SUCCESS, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_STREAM_INFORMATION &&
              fileSystem == FileSystem.FAT32)
     {
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1421, MessageStatus.SUCCESS, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_COMPRESSION_INFORMATION &&
              fileSystem == FileSystem.FAT32)
     {
         if (outputBufferSize == OutputBufferSize.NotLessThan)
         {
             returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1421, MessageStatus.SUCCESS, returnedStatus, site);
             byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(1421, ByteCount.SizeofFILE_COMPRESSION_INFORMATION, byteCount, site);
         }
         else if (outputBufferSize == OutputBufferSize.LessThan)
         {
             returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1489, MessageStatus.INFO_LENGTH_MISMATCH, returnedStatus, site);
             byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(1489, ByteCount.NotSet, byteCount, site);
         }
     }
     else if (fileInfoClass == FileInfoClass.FILE_ATTRIBUTETAG_INFORMATION &&
              fileSystem == FileSystem.FAT32)
     {
         if (outputBufferSize == OutputBufferSize.NotLessThan)
         {
             returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1421, MessageStatus.SUCCESS, returnedStatus, site);
             byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(1421, ByteCount.SizeofFILE_ATTRIBUTE_TAG_INFORMATION, byteCount, site);
         }
         else if (outputBufferSize == OutputBufferSize.LessThan)
         {
             returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1445, MessageStatus.INFO_LENGTH_MISMATCH, returnedStatus, site);
             byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(1445, ByteCount.NotSet, byteCount, site);
         }
     }
     else if (fileInfoClass == FileInfoClass.FILE_FULLEA_INFORMATION &&
              fileSystem != FileSystem.NTFS &&
              outputBufferSize == OutputBufferSize.NotLessThan)
     {
         // FILE_FULL_EA_INFORMATION is only supported in NTFS, will failed with STATUS_INVALID_DEVICE_REQUEST in other file systems.
         // Transfer the return code and byteCount to make model test cases passed.
         byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(3992, ByteCount.SizeofFILE_FULL_EA_INFORMATION, byteCount, site);
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1187, MessageStatus.SUCCESS, returnedStatus, site);
     }
     else if (fileInfoClass == FileInfoClass.FILE_ALTERNATENAME_INFORMATION &&
              fileSystem == FileSystem.REFS &&
              outputBufferSize == OutputBufferSize.NotLessThan)
     {
         // REFS file system does not support FILE_ALTERNATENAME_INFORMATION, will failed with STATUS_OBJECT_NAME_NOT_FOUND
         // Transfer the return code and byteCount to make model test cases passed.
         byteCount      = FsaUtility.TransferExpectedResult <ByteCount>(3992, ByteCount.FieldOffsetFILE_NAME_INFORMATION_FileNameAddOutputBuffer_FileNameLength, byteCount, site);
         returnedStatus = FsaUtility.TransferExpectedResult <MessageStatus>(1187, MessageStatus.SUCCESS, returnedStatus, site);
     }
     return(returnedStatus);
 }
        public static MessageStatus SetFileAllocOrObjIdInfo(FileInfoClass fileInfoClass, AllocationSizeType allocationSizeType)
        {
            switch (fileInfoClass)
            {
                #region 3.1.5.14.1    FileAllocationInformation
                case FileInfoClass.FILE_ALLOCATION_INFORMATION:
                    {
                        if (gStreamType == StreamType.DirectoryStream)
                        {
                            Helper.CaptureRequirement(2858, @"[In FileAllocationInformation]This operation MUST be failed with STATUS_INVALID_PARAMETER
                                under any of the following conditions:If Open.Stream.StreamType is DirectoryStream.");
                            return MessageStatus.INVALID_PARAMETER;
                        }
                        //If InputBuffer.AllocationSize is greater than the maximum file size allowed by the object store
                        if (allocationSizeType == AllocationSizeType.AllocationSizeIsGreaterThanMaximum)
                        {
                            Helper.CaptureRequirement(2859, @"[In FileAllocationInformation]This operation MUST be failed with STATUS_INVALID_PARAMETER
                                under any of the following conditions:If InputBuffer.AllocationSize is greater than the maximum file size
                                allowed by the object store.<61>");
                            return MessageStatus.INVALID_PARAMETER;
                        }
                        //If Open.GrantedAccess does not contain FILE_WRITE_DATA
                        if ((gOpenGrantedAccess != FileAccess.None) && (gOpenGrantedAccess & FileAccess.FILE_WRITE_DATA) == 0)
                        {
                            Helper.CaptureRequirement(2860, @"[In FileAllocationInformation]Pseudocode for the operation is as follows:
                                If Open.GrantedAccess does not contain FILE_WRITE_DATA, the operation MUST be failed with STATUS_ACCESS_DENIED.");
                            return MessageStatus.ACCESS_DENIED;
                        }
                        Helper.CaptureRequirement(2869, @"[In FileAllocationInformation,Pseudocode for the operation is as follows:]
                            The operation returns STATUS_SUCCESS.");
                        return MessageStatus.SUCCESS;
                    }
                #endregion

                #region 3.1.5.14.8    FileObjectIdInformation
                //This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                case FileInfoClass.FILE_OBJECTID_INFORMATION:
                    {
                        Helper.CaptureRequirement(3000, @"[In FileObjectIdInformation]This operation MUST be failed with STATUS_NOT_SUPPORTED.");
                        return MessageStatus.NOT_SUPPORTED;
                    }
                #endregion

                #region 3.1.5.14.12    FileSfioReserveInformation
                //This operation is not supported and MUST be failed with STATUS_NOT_SUPPORTED.
                case FileInfoClass.FILE_SFIO_RESERVE_INFORMATION:
                    {
                        Helper.CaptureRequirement(3166, @"[In FileSfioReserveInformation]This operation MUST be failed with STATUS_NOT_SUPPORTED.");
                        return MessageStatus.NOT_SUPPORTED;
                    }
                #endregion

            }
            return MessageStatus.SUCCESS;
        }