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

دالة ال createFile

بدأه New_Geek في 30 أبريل 2012 · 0 رد · 371 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم

مالخطا في هدا الكود يااخوة

ال handle دائما يساوي -1

Imports System
Imports System.Runtime.InteropServices




Public Class Form

    Const GENERIC_READ = &H80000000
    Const GENERIC_WRITE = &H40000000
    Const OPEN_EXISTING = 3
    Const FILE_SHARE_READ = &H1
    Const FILE_SHARE_WRITE = &H2
    Const FILE_ATTRIBUTE_NORMAL = &H80
    Const FILE_FLAG_NO_BUFFERING = &H20000000
    Const INVALID_HANDLE_VALUE = -1
    Const INFINITE = -1
    Const WAIT_OBJECT_0 = &H0
    Const WAIT_TIMEOUT = &H102
    Const FILE_FLAG_OVERLAPPED = &H4

    Public Structure OVERLAPPED
        Dim ternal As Long
        Dim ternalHigh As Long
        Dim offset As Long
        Dim OffsetHigh As Long
        Dim hEvent As Long
    End Structure


    '-----------------------------------------------------------------------------------create file function
    Public Declare Function creerFichier Lib "KERNEL32.dll" Alias "CreateFileA" (ByVal lpFileName As String, _
                                                                                ByVal dwDesiredAccess As Integer, _
                                                                                ByVal dwShareMode As Integer, _
                                                                                ByVal lpSecurityAttributes As IntPtr, _
                                                                                ByVal dwCreationDisposition As Integer, _
                                                                                ByVal dwFlagsAndAttributes As Integer, _
                                                                                ByVal hTemplateFile As IntPtr) _
                                                                                As IntPtr
    '-----------------------------------------------------------------------------------read file function
    Public Declare Function lireFichier Lib "kernel32.dll" Alias "ReadFileA" (ByVal hFile As Long, _
                                                                              <System.Runtime.InteropServices.MarshalAsAttribute _
                                                                              (System.Runtime.InteropServices.UnmanagedType.AsAny)> ByVal o As Object, _
                                                                              ByVal nNumberOfBytesToRead As Long, ByVal lpNumberOfBytesRead As Long, _
                                                                              ByRef lpOverlapped As OVERLAPPED) _
                                                                              As Long
    '-----------------------------------------------------------------------------------Wait function
    Declare Function WaitForSingleObject Lib "kernel32" Alias "WaitForSingleObjectA" (ByVal hHandle As Long, _
                                                                                      ByVal dwMilliseconds As Long) _
                                                                                      As Long
    '-----------------------------------------------------------------------------------close handle function
    Declare Function CloseHandle Lib "kernel32" Alias "CloseHandleA" (ByVal hObject As Long) _
                                                                     As Long

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ntfs.Text = checkntfs("\\.\C:")
    End Sub

    Public Function checkntfs(ByVal strDrive As String) As Boolean
        Dim nRead As Integer
        Dim hnd As IntPtr
        Dim ret As UInt32
        Dim Buffer(1024) As Byte
        Dim ov As OVERLAPPED
        Hnd = creerFichier("\\.\C:", _
GENERIC_READ, _
FILE_SHARE_READ, _
IntPtr.Zero, _
OPEN_EXISTING, _
FILE_ATTRIBUTE_NORMAL Or FILE_FLAG_NO_BUFFERING, _
0)
        MsgBox(Hnd)
        If (Hnd <> INVALID_HANDLE_VALUE) Then
            ret = lireFichier(Hnd, Buffer, 1024, nRead, ov)
        Else
            Return False
        End If
        If ret = 0 Then
            ret = WaitForSingleObject(Hnd, INFINITE)
            Select Case ret
                Case WAIT_OBJECT_0
                Case WAIT_TIMEOUT
            End Select
        Else
            Return False
        End If
        CloseHandle(Hnd)
        Return Buffer(3) = 78 And Buffer(4) = 84 And Buffer(5) = 70 And Buffer(6) = 83
    End Function
End Class

وشكرا مقدما

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…