السلام عليكم
اريد مساعدة اذا امكن في استخدام هذه الدالة ReadDirectoryChangeW
بواسطة masm32
وما احتاجه بالتحديد هو كيف استخرج اسم الملف الذي تعيده الدالة بنظام الينيكود :(
تحياتي
السلام عليكم
اريد مساعدة اذا امكن في استخدام هذه الدالة ReadDirectoryChangeW
بواسطة masm32
وما احتاجه بالتحديد هو كيف استخرج اسم الملف الذي تعيده الدالة بنظام الينيكود :(
تحياتي
تم تعديل هذه المشاركة بواسطة H7SE في 20 أبريل 2005 في 21:45
عليكم السلام ورحمة الله,,
الدالة ReadDirectoryChangesW
تستخدم لقرائة أحداث المسارات , وهي تعمل على أنظمة NT فقط
تعيد هذة الدالة في أحد البارمترات مؤشر لنص بصيغة اليونكود
تستطيع قرائتة بالمايكرو wcscpy
والمصفوفة التي تستخدم WCHAR
وبعد كل هذا إسمحلي أن أقول لك أن الدالة ReadDirectoryChangesW
ليست هي الإختيار المطلوب
وبالتأكيد لمراقبة كل أحداث المسارات والملفات وفي كل الأنظمة وبطريقة أسرع
الحل الدالة WaitForMultipleObjects
وهنا كتبت درس على الموضوع
-
وبالتوفيق ,,
*************************************************
مجموعة مواضيع - إحتراف البرمجة -
ّ~~~~~~~~~~~~~~~~~~~~~~
البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة
آخر المواضيع :
أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات
ثغرة SMS لأجهزة الجوال Siemens 3568i !
أخطاء وثغرات البرامج العربية !!!
سلسلة مواضيع - أمن وحماية مواقع الويب -
E البرمجة المتقدمة X للملفات التنفيذية E
سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة
**************************************************
<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>
**************************************************
شكرا 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:
تم تعديل هذه المشاركة بواسطة H7SE في 21 أبريل 2005 في 17:54
هذا الموضوع مغلق.