Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than kernel32, prefix the name with the module name and a period.
<DllImport("kernel32.dll", ExactSpelling:=True, SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function DeviceIoControl(ByVal hDevice As IntPtr, _
ByVal dwIoControlCode As Int32, ByVal lpInBuffer As IntPtr, _
ByVal nInBufferSize As Int32, ByVal lpOutBuffer As IntPtr, _
ByVal nOutBufferSize As Int32, ByRef lpBytesReturned As Int32, _
ByVal lpOverlapped As System.Threading.NativeOverlapped) As Boolean
End Function
User-Defined Types:
None.
Notes:
hDevice - To retrieve a handle to a volume, call CreateFile with the lpFileName parameter set to a string of the following form: "\\.\DriveLetter:"
Tips & Tricks:
This is great for interacting with devices; now perhaps someone can help with the SetupDi calls to actually discover the device handles, etc...? If you are able to conquer it (I wasn't) toss me a mail at dotnet at richardgoodwin dot com
-
Richard:
hDevice
in Handle to the device that is to perform the operation. To obtain a device handle, call the CreateFile function.
Sample Code:
Public ReadOnly Property CardID() As String
Get
Dim dwErrorCode As FarcConstants
Dim dwBytesReceived As Int32
Dim ip As IntPtr = Marshal.AllocHGlobal(13)
Dim erg As String
If DeviceIoControl(hDriver, IOCTL_FARC_GET_CARDID, Nothing, 0, ip, 13, dwBytesReceived, Nothing) Then
erg = Marshal.PtrToStringAnsi(ip)
Marshal.FreeHGlobal(ip)
Else
dwErrorCode = Marshal.GetLastWin32Error
Marshal.FreeHGlobal(ip)
Throw New InvalidOperationException("Get Card ID fails. Errorcode: " & _
dwErrorCode.ToString, New System.ComponentModel.Win32Exception(dwErrorCode))
End If
Return erg
End Get
End Property
Alternative Managed API:
Do you know one? Please contribute it!
Please edit this page!
Do you have...
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).