الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

FS Driver With C#

بدأه NOUR ALDEEN في 13 أغسطس 2011 · 20 رد · 1,679 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف يمكنني عمل إتصال بين

File System Filter Driver

وبرنامجي في C#

لإكتشاف التغييرات

Be the change you want to see in the world


#2

أنا عم أنتظر الخبراء

Be the change you want to see in the world


#3

هي التعريف إلي بدي أتعامل معه

FsFilter.zip

Be the change you want to see in the world


#4

عم أنتظر ردود

Be the change you want to see in the world


#5

UP

Be the change you want to see in the world


#6

السلام عليكم ..

حسب المعلومات على MSDN يمكن إرسال الرسائل بين الــ miniFilter الذي هو يعمل بالــ Kernel Mode و بين التطبيق الذي يعمل بالــ User Mode .و حسب الــ MSDN يتم الإرسال على رقم Port كي نعرف التطبيق الذي ستصله الرسالة , و الاتصال يتم عن طريق الــ Function التالية :

FilterSendMessage إرسال رسالة إلى الــ Filter .. رابط

FltSendMessage إرسال رسالة إلى التطبيق (طبعا من الفلتر) ... رابط

FilterGetMessage الحصول على الرسالة من الفلتر .. رابط

تحتاج عمل wrapper لهذه الــ Function كي تستخدمها في الــ C# ... رابط

ملاحظة : لم أجرب الكود كون الــ Windows Driver Kit (صح كده !) غير موجودة عندي ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

السلام عليكم<br>ألف شكر لك أخي <br>لكن رأيت الكثير مثل هذه الشروح ولكن لم تنجح<br>أتمنى منك أن تحاول ولو لقليل أن تنشأ لي مشروع بسيط عن العمليات الموجودة <br>لهذا التعريف والتعريف موجود في الرد السابق لي<br>وشكراً أخي<br>

Be the change you want to see in the world


#8

السلام عليكم ...أخي...

التعريف الموجود ذو لاحقة .Sys (أي هو ناتج عن عملية الــ Compile) و الكود الخاص به موجود على CodeProject (حسب معلوماتي) ...

لكن (حسب معلوماتي) .. يجب أن يرسل الفلتر معلومات أولا حتى يستقبلها التطبيق ... أي لا تستطيع الأتصال مع فلتر إذا لم يرسل معلومات بالإساس ...أي تحتاج لتعديل الفلتر و ترجمته مرة أخرى ...

و كما قلت لك الــ Driver Kit غير موجودة عندي ...أي لا استطيع عمل Compile للفلتر فيما لو عدلت عليه .. و أيضا معلوماتي عن برمجة الفلاتر ليست بالجيدة (مبادئ فقط) ..

بانتظار ردود الخبراء

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#9

شكراً لك أخي

المشكلة أني ضعيف في الـC++

أنا أنتظر ردود منكم ياخبراء منتدانا العزيز

Be the change you want to see in the world


#10

السلام عليكم ورحمة الله وبركاته

أخي العزيز السؤال غير واضح هل تقصد أن تتعامل مع جهاز خارجي أو أنك تريد إن حدث تغير على بنية الملفات المتوجد على الهارد ديسك (حذف - تعديل ..... إلخ)

أرجو التوضيح

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#11

السلام عليكم

أخي أريد مراقبة الملفات في الهارد ديسك وإيقافها عند شروط معينة في برنامجي

Be the change you want to see in the world


#12

السلام عليكم أنا أنتظر إجابة

Be the change you want to see in the world


#13

السلام عليكم ...

مواضيع مشابهة :

  • استفسار بخصوص كيفية عمل اتصال بين user mode app and kernel driver رابط

  • للخبراء بجد : مراقبة درايفر لتقليد عملية الارسال منه رابط

  • تطوير Process Bandwidth Watcher لمن يرغب فى المشاركة رابط

  • File System Filter Driver Tutorial رابط

  • عمل برنامج يسجل كل الاكشن اللى تحدث رابط

  • Reading and Writing to Raw Disk Sectors رابط

و ما زلنا بانتظار ردود الخبراء ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#14

السلام عليكم

شكراً أخي ولكن أنت تضع لي روابط فقط

هل لي بمشروع صغير أو شرح يكون واضحاً

لو سمحت

Be the change you want to see in the world


#15

أتمنى منكم الرد ولو بكلمة

Be the change you want to see in the world


#16

السلام عليكم ورحمة الله وبركاته

سوف أقوم بوضع مثال بسيط لتوضيح طريق الحل لسؤالك :

using System;
using System.IO;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private System.ComponentModel.IContainer components = null;
        private System.Windows.Forms.Button m_StartButton;
        private System.Windows.Forms.Button m_StopButton;
        private System.Windows.Forms.ListBox listBox1;

        private FileSystemWatcher FS_Watcher;

        public Form1()
        {
            InitializeComponent();
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.m_StartButton = new System.Windows.Forms.Button();
            this.m_StopButton = new System.Windows.Forms.Button();
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.SuspendLayout();
            // 
            // m_StartButton
            // 
            this.m_StartButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
            this.m_StartButton.Location = new System.Drawing.Point(172, 398);
            this.m_StartButton.Name = "m_StartButton";
            this.m_StartButton.Size = new System.Drawing.Size(75, 23);
            this.m_StartButton.TabIndex = 0;
            this.m_StartButton.Text = "Start";
            this.m_StartButton.UseVisualStyleBackColor = true;
            this.m_StartButton.Click += new System.EventHandler(this.m_StartButton_Click);
            // 
            // m_StopButton
            // 
            this.m_StopButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
            this.m_StopButton.Enabled = false;
            this.m_StopButton.Location = new System.Drawing.Point(253, 398);
            this.m_StopButton.Name = "m_StopButton";
            this.m_StopButton.Size = new System.Drawing.Size(75, 23);
            this.m_StopButton.TabIndex = 1;
            this.m_StopButton.Text = "Stop";
            this.m_StopButton.UseVisualStyleBackColor = true;
            this.m_StopButton.Click += new System.EventHandler(this.m_StopButton_Click);
            // 
            // listBox1
            // 
            this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
            | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.listBox1.FormattingEnabled = true;
            this.listBox1.Location = new System.Drawing.Point(12, 12);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(477, 381);
            this.listBox1.TabIndex = 2;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(501, 433);
            this.Controls.Add(this.listBox1);
            this.Controls.Add(this.m_StopButton);
            this.Controls.Add(this.m_StartButton);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }

        #endregion

        private void FS_Watcher_Changed(object sender, FileSystemEventArgs e)
        {
            listBox1.Items.Add(String.Format("[Changed Event] File: {0} ChangeType: {1}", e.FullPath, e.ChangeType));
        }

        private void FS_Watcher_Created(object sender, FileSystemEventArgs e)
        {
            listBox1.Items.Add(String.Format("[Created Event] File: {0} ChangeType: {1}", e.FullPath, e.ChangeType));
        }

        private void FS_Watcher_Deleted(object sender, FileSystemEventArgs e)
        {
            listBox1.Items.Add(String.Format("[Deleted Event] File: {0} ChangeType: {1}", e.FullPath, e.ChangeType));
        }

        private void FS_Watcher_Renamed(object sender, RenamedEventArgs e)
        {
            listBox1.Items.Add(String.Format("[Renamed Event] File: {0} renamed to {1}", e.OldFullPath, e.FullPath));
        }

        private void FS_Watcher_Error(object sender, ErrorEventArgs e)
        {
            listBox1.Items.Add(String.Format("[Error Event] Error: {0} ", e.GetException().Message));
        }

        private void m_StartButton_Click(object sender, EventArgs e)
        {
            FS_Watcher = new FileSystemWatcher(@"D:\", "*.*");
            FS_Watcher.SynchronizingObject = this;
            FS_Watcher.IncludeSubdirectories = true;
            FS_Watcher.NotifyFilter =
                NotifyFilters.Attributes |
                NotifyFilters.CreationTime |
                NotifyFilters.DirectoryName |
                NotifyFilters.FileName |
                NotifyFilters.LastAccess |
                NotifyFilters.LastWrite |
                NotifyFilters.Security |
                NotifyFilters.Size;

            FS_Watcher.Changed += new FileSystemEventHandler(FS_Watcher_Changed);
            FS_Watcher.Created += new FileSystemEventHandler(FS_Watcher_Created);
            FS_Watcher.Deleted += new FileSystemEventHandler(FS_Watcher_Deleted);
            FS_Watcher.Renamed += new RenamedEventHandler(FS_Watcher_Renamed);
            FS_Watcher.Error += new ErrorEventHandler(FS_Watcher_Error);

            FS_Watcher.EnableRaisingEvents = true;

            m_StartButton.Enabled = false;
            m_StopButton.Enabled = true;
        }

        private void m_StopButton_Click(object sender, EventArgs e)
        {
            if (FS_Watcher != null)
                FS_Watcher.Dispose();

            FS_Watcher = null;

            m_StartButton.Enabled = true;
            m_StopButton.Enabled = false;
        }
    }
}

أتمنى أن يكون هذا هو الجواب فإن لم يكن هو لا تتردد بالسؤال .........

الداعي لكم بالتوفيق

أبو المجد

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#17

السلام عليكم

أخي أنا أريد التعامل مع التعريف وليس

File System Watcher

بعرف إني زوتاlaugh.gif

Be the change you want to see in the world


#18

السلام عليكم ورحمة الله وبركاته

أخي ما زودنه

بس ممكن نعرف لماذا لم تحل مشكلتك بهذه الطريقة ...

مثال بسيط عن ما تريده ليس الضروري أن يكون كود حقيقي ولكن نريد أن نفهم الفكرة .....

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#19

السلام عليكم<br><br>أخي أنا أقوم بصنع برنامج حماية وتوصلت إلى أن أفضل طريقة للحماية <br>والتحكم بالبرامج عند الفتح والنسخ هذا التعريف <br>ولم أعرف طريقة ربطه مع برنامجي <br>وقرأت أنا  هناك داله تقوم بهذا وهي DeviceIOControl<br>ولا أعلم المزيد<br>وشكراً<br>

Be the change you want to see in the world


#20

السلام عليكم ورحمة الله وبركاته

أخي الكريم أعتذر لعدم مساعدتك لأنني لا أملك أي فكرة عن هذا الأمر الذي كتبته ولكن بعد عملية بحث سريع عبر الغوغل وجدت لك أمثله كافية على ما أظن مع شرح تفصلي عن هذا الأمر أتمنى أن يساعدك في عملك

pinvoke_net DeviceIoControl (kernel32)

الداعي لكم بالتوفيق

أبو المجد

لا تفعل إلا ما تستطيع أن تقوله ولا تقول إلا ما تسطيع أن تفعله

اللهم علمنا ما ينفعنا ونفعنا بما علمتنا وهب لنا من لدنك ولياً مرشدا

كلما أدبني الدهر أراني نقص عقلي ... وإذا ما زدت علماً زادني علماً بجهلي

أخوكم في الله أبو المجد

هيا نتعلم بعض المبادء لنطرق باب الإحتراف ************** جديد الدروس ( Application Domains and Assemblies)

التوقيت في دمشق:

<embed src="http://www.clocklink.com/clocks/0006-Gray.swf?TimeZone=R1T" width="200" height="240" wmode="transparent" type="application/x-shockwave-flash">

#21

السلام عليكم شكراً لك أخي وبارك الله فيك جربتها ومانفعت آسف على الإزعاج شكراً جزيلاً لك :lol: :happy:

Be the change you want to see in the world


مواضيع مشابهة