الشي الي مؤرقني هو ان ال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();
شكراً جزيلا يا أخي على مجهودك و أنا في انتظار ردك
عذراً لم أفهم بعض ما في الكود و قمت بتجربته بهذا الشكل أعطاني خطأ من نوع معين
كود :
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
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
وماذا يقول الخطأ ؟؟
الخطأ يحول لون الكود في البرنامج إلى اللون الأخضر و يكتب في رسالة
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
و لا أدري ما هو السبب و لو حضرتك لديك كود لإعطاء هذة القيم المطلوبة أو لدى حضرتك بعض الإقتراحات فأنا في انتظار حضرتك و جزاك الله خيراً
Mstrano كتب :الخطأ يحول لون الكود في البرنامج إلى اللون الأخضر و يكتب في رسالة
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
و لا أدري ما هو السبب و لو حضرتك لديك كود لإعطاء هذة القيم المطلوبة أو لدى حضرتك بعض الإقتراحات فأنا في انتظار حضرتك و جزاك الله خيراً
حتى انا ماعرف السبب
بس جرب تغلق الstream قبل كود الapi
fs.close
لا لحظة اخي
شوف هذي الصفحة حق معلومات الدالة
http://msdn.microsoft.com/en-us/library/...51938.aspx
وانزل تحت بتلاقي
إقتباس :Parameters
hWim
[in] A handle to a .wim file returned by the WIMCreateFile function.
لاحظ يقولك لازم تجيب الهاندل بواسطة استعمال الدالة WIMCreateFile
الكود الذ أعطيتني إياه أعطاني قبل دالة Api رقما و هو على ما أظن الهاندل و لكن دالة api WIMCreateFile تقوم بإنشاء ملف wim جديد من فولدر تحدده و لا علاقة لها بعدد النسخ في install.wim
يعني انت تكذب الصفحة ؟؟
اخي صفحة مايكروسوفت تقول يجب ان ان تجلب الهاندل بواسطة 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
اعتقد وضح طريقة استخدام الدالة
بس انا ماكتبت ليك طريقة استخدامها وسأدع لك اكتشاف ذلك
في الصفحة الي عطيتك اياها مكتوب فيها طريقة استخدام البارمترات وتقدر تحدد اذا كنت تريد انشاء ملف او فتح ملف بواسطة البارمترات
تحياتي
شكراً أخي و آسف على الإزعاج!!