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

ReadDirectoryChangeW

مغلق
بدأه H7SE في 20 أبريل 2005 · 2 رد · 552 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد مساعدة اذا امكن في استخدام هذه الدالة ReadDirectoryChangeW

بواسطة masm32

وما احتاجه بالتحديد هو كيف استخرج اسم الملف الذي تعيده الدالة بنظام الينيكود :(

تحياتي

تم تعديل هذه المشاركة بواسطة H7SE في 20 أبريل 2005 في 21:45

#2

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

الدالة ReadDirectoryChangesW

تستخدم لقرائة أحداث المسارات , وهي تعمل على أنظمة NT فقط

تعيد هذة الدالة في أحد البارمترات مؤشر لنص بصيغة اليونكود

تستطيع قرائتة بالمايكرو wcscpy

والمصفوفة التي تستخدم WCHAR

وبعد كل هذا إسمحلي أن أقول لك أن الدالة ReadDirectoryChangesW

ليست هي الإختيار المطلوب

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

الحل الدالة WaitForMultipleObjects

وهنا كتبت درس على الموضوع

/index.php?showtopic=57429

-

وبالتوفيق ,,

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

شكرا jaas علي اهتمامك بالموضوع

ما اريده بالضبط هو عمل محاكاه لاداه filesystemwatcher الموجودة في vs.net

والتي اظن انها تستخدم هذه الدالة بشكل اساسي

والسبب في ذلك هو اني قمت بعمل برنامج بلغة vb.net واري تكرار نفس التجربة مع الاسمبلي

http://s17.yousendit.com/complete.aspx?id=...BK2V8QAQ13XYY7K

هذا هو البرنامج الذي اطمح بان اعيد انتاجه بالاسمبلي ارجو ان تطلع عليه

--------

كود الاسمبلي الي استخدمته بنجاح لاصطياد الاحداث هو

comment +
HOW CAN I GET FILE NAME ?
	FILE_NOTIFY_INFORMATION.FileName
+

ThreadProc  proto  x:DWORD

.DATA?
hdir    dd ?
hTR    dd ?

.DATA
dir    db "c:\docs",0
THID  	dd 0


.CODE


  	invoke CreateFile,offset dir,FILE_LIST_DIRECTORY,FILE_SHARE_READ  or FILE_SHARE_DELETE,NULL,OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS,NULL
    mov hdir,eax
        
    mov  eax,OFFSET ThreadProc
    invoke CreateThread,NULL,0,eax,hWin,NORMAL_PRIORITY_CLASS,ADDR THID
                                          mov hTR,eax



ThreadProc PROC x:DWORD
LOCAL xx[1024]:BYTE
LOCAL retbyte:DWORD

          invoke ReadDirectoryChangesW,hdir,addr xx,sizeof xx,TRUE,FILE_NOTIFY_CHANGE_FILE_NAME or FILE_NOTIFY_CHANGE_DIR_NAME or FILE_NOTIFY_CHANGE_CREATION , addr  retbyte,NULL,NULL
    cmp eax,0
    je exitp
  push esi
  	
  	mov esi,0
    	@@:
    	mov eax,(FILE_NOTIFY_INFORMATION PTR [xx[esi]]).Action
          	.if eax== FILE_ACTION_REMOVED
      	invoke MessageBeep,MB_ICONQUESTION
          	.elseif eax==FILE_ACTION_ADDED
      	invoke MessageBeep,MB_ICONASTERISK
comment +
	HOW CAN I GET FILE NAME ?
	invoke MessageBox,x,  (FILE_NOTIFY_INFORMATION PTR [xx[esi]]).FileName,0 ,0  (  HOW TO DO IT ?? )
+
            .endif
      inc esi
    	cmp (FILE_NOTIFY_INFORMATION PTR [xx[esi]]).NextEntryOffset,0
      jne @B
  pop esi
    	
        exitp: ret
ThreadProc ENDP

ولكن المشكله هي كيف احصل علي اسم الملف الذي تأثر بالتغيير

لان الدالة تعييده كما اظن بنظام UniCode :wacko:

RDCW.zip

تم تعديل هذه المشاركة بواسطة H7SE في 21 أبريل 2005 في 17:54

هذا الموضوع مغلق.