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); }
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) { } }
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); } }
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)); } }
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}."); }
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); }
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) { } }
/// <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; }
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); }
public unsafe static extern bool GetFileInformationByHandleEx( IntPtr hFile, FileInfoClass FileInformationClass, void *lpFileInformation, uint dwBufferSize);
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; }