تتصرف الكتابة إلى Filestream بشكل غريب ، كما لوحظ في مراقبة العملية

StackOverflow https://stackoverflow.com/questions/246979

سؤال

أنا أستخدم FileStream للكتابة إلى ملف ، ومشاهدة مكالمات النظام الأساسية باستخدام مراقبة العملية. أواجه مشكلة في بعض مشكلات قفل الملفات في نشر الإنتاج ، لذلك أنا أبحث عن التفاصيل عن كثب.

رمز النموذج هذا:

        using (FileStream fs = new FileStream("c:\\temp\\test.txt", FileMode.Create, FileAccess.Write, FileShare.Read))
        {
            fs.Write(new byte[] { 1, 2, 3, 4, 5 }, 0, 5);
            fs.Close();
        }

يسبب مكالمات الأنظمة التالية:

9:27:09.4561092 AM  ConsoleApplication1.vshost.exe  2320    CreateFile  C:\temp\test.txt    SUCCESS Desired Access: Generic Read/Write, Disposition: OverwriteIf, Options: Synchronous IO Non-Alert, Non-Directory File, Open No Recall, Attributes: n/a, ShareMode: Read, AllocationSize: 0, OpenResult: Overwritten
9:27:12.2217409 AM  ConsoleApplication1.vshost.exe  2320    WriteFile   C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2219901 AM  ConsoleApplication1.vshost.exe  2320    CloseFile   C:\temp\test.txt    SUCCESS 
9:27:12.2234484 AM  ConsoleApplication1.vshost.exe  2320    CreateFile  C:\temp\test.txt    SUCCESS Desired Access: Generic Read, Write Attributes, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Complete If Oplocked, Random Access, Attributes: N, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
9:27:12.2248664 AM  ConsoleApplication1.vshost.exe  2320    QueryBasicInformationFile   C:\temp\test.txt    SUCCESS CreationTime: 10/29/2008 9:04:14 AM, LastAccessTime: 10/29/2008 9:27:12 AM, LastWriteTime: 10/29/2008 9:27:12 AM, ChangeTime: 10/29/2008 9:27:12 AM, FileAttributes: A
9:27:12.2250075 AM  ConsoleApplication1.vshost.exe  2320    SetBasicInformationFile C:\temp\test.txt    SUCCESS CreationTime: -1, LastAccessTime: -1, LastWriteTime: -1, ChangeTime: -1, FileAttributes: n/a
9:27:12.2255889 AM  ConsoleApplication1.vshost.exe  2320    QueryStandardInformationFile    C:\temp\test.txt    SUCCESS AllocationSize: 8, EndOfFile: 5, NumberOfLinks: 1, DeletePending: False, Directory: False
9:27:12.2257571 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2259825 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2261588 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2265161 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 2
9:27:12.2268237 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2271332 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2272841 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2274779 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2276249 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2278766 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2282577 AM  ConsoleApplication1.vshost.exe  2320    ReadFile    C:\temp\test.txt    SUCCESS Offset: 0, Length: 5
9:27:12.2284476 AM  ConsoleApplication1.vshost.exe  2320    QueryFileInternalInformationFile    C:\temp\test.txt    SUCCESS IndexNumber: 0x2d000000016b88
9:27:12.2286183 AM  ConsoleApplication1.vshost.exe  2320    CloseFile   C:\temp\test.txt    SUCCESS 
9:27:12.2288759 AM  ConsoleApplication1.vshost.exe  2320    CreateFile  C:\temp\test.txt    SUCCESS Desired Access: Read Attributes, Write Attributes, Disposition: Open, Options: , Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
9:27:12.2305722 AM  ConsoleApplication1.vshost.exe  2320    QueryBasicInformationFile   C:\temp\test.txt    SUCCESS CreationTime: 10/29/2008 9:04:14 AM, LastAccessTime: 10/29/2008 9:27:12 AM, LastWriteTime: 10/29/2008 9:27:12 AM, ChangeTime: 10/29/2008 9:27:12 AM, FileAttributes: A
9:27:12.2307379 AM  ConsoleApplication1.vshost.exe  2320    CloseFile   C:\temp\test.txt    SUCCESS 

من المتوقع أن أول ثلاثة مكالمات IO (إنشاء ، اكتب ، إغلاق) ، لكن العملية تستمر لقراءة الملف عشرات مرات أخرى وفتحها مرارًا وتكرارًا.

لقد لاحظت الآن هذا السلوك على Win XP SP2 ، وفوز 2003 X64. ومع ذلك ، فإن جهاز Windows Vista الخاص بي في المنزل يتصرف كما هو متوقع (فقط الأسطر الثلاثة الأولى).

أي أدلة على سبب حدوث ذلك في أوقات الركض غير Vista؟

هل كانت مفيدة؟

المحلول

أحد الاحتمالات هو أن لديك ماسح ضوئي فيروس تم تثبيته والذي يحقن نفسه في كل عملية تشغيل؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top