تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طلب مساعدة في فهم كود wimgapi.dll
#11
الشي الي مؤرقني هو ان الHandle يجلبه الfilestream يكون خطير ليش خطير ومن اي ناحية ماادري

المهم هذا الكود - فيجوال

PHP كود :
Dim fs As New System.IO.FileStream("wmi file path"System.IO.FileMode.Open)
Dim handle As SafeFileHandle fs.SafeFileHandle
Dim fHandle 
As IntPtr handle.DangerousGetHandle() 

السي شارب لإفادة الجميع :
PHP كود :
System.IO.FileStream fs = new System.IO.FileStream("wmi file path"System.IO.FileMode.Open);
            
SafeFileHandle handle fs.SafeFileHandle;
            
IntPtr fHandle handle.DangerousGetHandle(); 
الرد }}}
تم الشكر بواسطة:
#12
شكراً جزيلا يا أخي على مجهودك و أنا في انتظار ردك
الرد }}}
تم الشكر بواسطة:
#13
عذراً لم أفهم بعض ما في الكود و قمت بتجربته بهذا الشكل أعطاني خطأ من نوع معين
كود :
Try
            Dim fs As New System.IO.FileStream(wims.SelectedPath & "\sources\install.wim", System.IO.FileMode.OpenOrCreate)
            Dim handle As SafeHandles.SafeFileHandle = fs.SafeFileHandle
            Dim fHandle As IntPtr = handle.DangerousGetHandle
            MsgBox(WIMAPI.WimApi.WIMGetImageCount(fHandle))
        Catch ex As Exception

        End Try
المطلوب من الكود أن يعطيني عدد Windows images التي بداخل ملف install.wim
الرد }}}
تم الشكر بواسطة:
#14
Mstrano كتب :عذراً لم أفهم بعض ما في الكود و قمت بتجربته بهذا الشكل أعطاني خطأ من نوع معين
كود :
Try
            Dim fs As New System.IO.FileStream(wims.SelectedPath & "\sources\install.wim", System.IO.FileMode.OpenOrCreate)
            Dim handle As SafeHandles.SafeFileHandle = fs.SafeFileHandle
            Dim fHandle As IntPtr = handle.DangerousGetHandle
            MsgBox(WIMAPI.WimApi.WIMGetImageCount(fHandle))
        Catch ex As Exception

        End Try
المطلوب من الكود أن يعطيني عدد Windows images التي بداخل ملف install.wim

وماذا يقول الخطأ ؟؟
الرد }}}
تم الشكر بواسطة:
#15
الخطأ يحول لون الكود في البرنامج إلى اللون الأخضر و يكتب في رسالة
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
و لا أدري ما هو السبب و لو حضرتك لديك كود لإعطاء هذة القيم المطلوبة أو لدى حضرتك بعض الإقتراحات فأنا في انتظار حضرتك و جزاك الله خيراً
الرد }}}
تم الشكر بواسطة:
#16
Mstrano كتب :الخطأ يحول لون الكود في البرنامج إلى اللون الأخضر و يكتب في رسالة
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
و لا أدري ما هو السبب و لو حضرتك لديك كود لإعطاء هذة القيم المطلوبة أو لدى حضرتك بعض الإقتراحات فأنا في انتظار حضرتك و جزاك الله خيراً

حتى انا ماعرف السبب

بس جرب تغلق الstream قبل كود الapi
fs.close
الرد }}}
تم الشكر بواسطة:
#17
لا لحظة اخي

شوف هذي الصفحة حق معلومات الدالة
http://msdn.microsoft.com/en-us/library/...51938.aspx

وانزل تحت بتلاقي

إقتباس :Parameters

hWim

[in] A handle to a .wim file returned by the WIMCreateFile function.

لاحظ يقولك لازم تجيب الهاندل بواسطة استعمال الدالة WIMCreateFile
الرد }}}
تم الشكر بواسطة:
#18
الكود الذ أعطيتني إياه أعطاني قبل دالة Api رقما و هو على ما أظن الهاندل و لكن دالة api WIMCreateFile تقوم بإنشاء ملف wim جديد من فولدر تحدده و لا علاقة لها بعدد النسخ في install.wim
الرد }}}
تم الشكر بواسطة:
#19
يعني انت تكذب الصفحة ؟؟

اخي صفحة مايكروسوفت تقول يجب ان ان تجلب الهاندل بواسطة WIMCreateFile لاغير

لاتحكم على اسمها فهي تقوم بتصنيع ملف او فتح ملف

شوف صفحة الدالة ويش مكتوب

إقتباس :WIMCreateFile


Parameters

pszWimPath

[in] A pointer to a null-terminated string that specifies the name of the file to create or to open.

...


http://msdn.microsoft.com/en-us/library/...51934.aspx


اعتقد وضح طريقة استخدام الدالة

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

في الصفحة الي عطيتك اياها مكتوب فيها طريقة استخدام البارمترات وتقدر تحدد اذا كنت تريد انشاء ملف او فتح ملف بواسطة البارمترات

تحياتي
الرد }}}
تم الشكر بواسطة:
#20
شكراً أخي و آسف على الإزعاج!!
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم