@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: TODO - a short description !!!!C# Signature: [DllImport("setupapi.dll", SetLastError=true)] static extern TODO Option Explicit(TODO); !!!!VB Signature: Declare Function Option Explicit Lib "setupapi.dll" (TODO) As TODO !!!!User-Defined Types: None. !!!!Alternative Managed API: Do you know one? Please contribute it! !!!!Notes: None. !!!!Tips & Tricks: Please add some! !!!!Sample Code: Please add some! DocuOption Explicit Private Const DIGCF_PRESENT As Integer = &H2 Private Const DIGCF_DEVICEINTERFACE As Integer = &H10 Private Const DIGCF_ALLCLASSES As Integer = &H4 Private Const GENERIC_READ = &H80000000 Private Const GENERIC_WRITE = &H40000000 Private Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000 Private Const FILE_ATTRIBUTE_HIDDEN = &H2 Private Const FILE_ATTRIBUTE_NORMAL = &H80 Private Const FILE_SHARE_READ = &H1 Private Const FILE_SHARE_WRITE = &H2 Private Const OPEN_ALWAYS = 4 Private Const OPEN_EXISTING = 3 Private Type GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type Private Type Device_Interface_Data cbSize As Long InterfaceClassGuid As GUID Flags As Long ReservedPtr As Long End Type Private Type Device_Interface_Detail cbSize As Long DataPath(256) As Byte End Type Private Declare Function SetupDiGetDeviceInterfaceDetail _ Lib “setupapi.dll” Alias “SetupDiGetDeviceInterfaceDetailA” _ (ByVal DeviceInfoSet As Long, DeviceInterfaceData As Any, _ DeviceInterfaceDetailData As Any, _ ByVal DeviceInterfaceDetailDataSize As Long, _ RequiredSize As Long, ByVal DeviceInfoData As Long) As Long Private Declare Function CreateFile Lib “kernel32″ Alias “CreateFileA” _ (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, _ ByVal dwShareMode As Long, lpSecurityAttributes As Any, _ ByVal dwCreationDisposition As Long, _ ByVal dwFlagsAndAttributes As Long, _ ByVal hTemplateFile As Long) As Long Private Declare Sub CloseHandle Lib “kernel32″ _ (ByVal HandleToClose As Long) Private Declare Function ReadFile Lib “kernel32″ _ (ByVal Handle As Long, ByVal BufferPtr As Long, _ ByVal ByteCount As Long, BytesReturnedPtr As Long, _ ByVal OverlappedPtr As Long) As Long Private Declare Function WriteFile Lib “kernel32″ _ (ByVal Handle As Long, Buffer As String, _ ByVal ByteCount As Long, BytesReturnedPtr As Long, _ ByVal OverlappedPtr As Long) As Long Private Declare Function SetupDiGetClassDevs Lib “setupapi.dll” _ Alias “SetupDiGetClassDevsA” (GuidPtr As Long, _ ByVal EnumPtr As Long, ByVal hwndParent As Long, _ ByVal Flags As Long) As Long Private Declare Function SetupDiDestroyDeviceInfoList _ Lib “setupapi.dll” _ (ByVal DeviceInfoSet As Long) As Boolean Private Declare Function SetupDiEnumDeviceInterfaces _ Lib “setupapi.dll” (ByVal Handle As Long, _ ByVal InfoPtr As Long, GuidPtr As Long, _ ByVal MemberIndex As Long, _ InterfaceDataPtr As Long) As Boolean Private Sub Command1_Click() Text1.Text = SendToUsbPrinter(”Hello world.”) End Sub Function SendToUsbPrinter(PrintOut As String) As Boolean Dim PrnGuid As GUID Dim Success As Long, Ret As Long Dim Openned As Boolean Dim Buffer(256) As Byte Dim DeviceInterfaceData As Device_Interface_Data Dim FunctionClassDeviceData As Device_Interface_Detail Dim PnPHandle As Long, BytesReturned As Long Dim I As Long Dim DeviceName As String, DevIndex As Long, DeviceHandle As Long Dim ReqdSize As Long Dim BytesWritten As Long ‘ \\?\usb#vid_0a5f&pid_000a#41a081100503#{28d78fad-5a12-11d1-ae5b-0000f803a8c2} PrnGuid.Data1 = &H28D78FAD PrnGuid.Data2 = &H5A12 PrnGuid.Data3 = &H11D1 PrnGuid.Data4(0) = &HAE PrnGuid.Data4(1) = &H5B PrnGuid.Data4(2) = &H0 PrnGuid.Data4(3) = &H0 PrnGuid.Data4(4) = &HF8 PrnGuid.Data4(5) = &H3 PrnGuid.Data4(6) = &HA8 PrnGuid.Data4(7) = &HC2 PnPHandle = SetupDiGetClassDevs(PrnGuid.Data1, 0, 0, _ DIGCF_PRESENT Or DIGCF_DEVICEINTERFACE) SendToUsbPrinter = False If (PnPHandle = -1) Then MsgBox “Could not attach to PnP node” Else DeviceInterfaceData.cbSize = Len(DeviceInterfaceData) DevIndex = 0 ‘ Should be a Do While -> looking for the correct device-name… If SetupDiEnumDeviceInterfaces(PnPHandle, 0, PrnGuid.Data1, _ DevIndex, DeviceInterfaceData.cbSize) Then FunctionClassDeviceData.cbSize = 5 Success = SetupDiGetDeviceInterfaceDetail(PnPHandle, _ DeviceInterfaceData, FunctionClassDeviceData, _ UBound(FunctionClassDeviceData.DataPath), _ BytesReturned, 0) If Success = 0 Then MsgBox “Could not get the name of this device” Else DeviceName = “” I = 0 Do While FunctionClassDeviceData.DataPath(I) 0 DeviceName = DeviceName & _ Chr$(FunctionClassDeviceData.DataPath(I)) I = I + 1 Loop Debug.Print DeviceName DeviceHandle = CreateFile(DeviceName, _ GENERIC_WRITE, FILE_SHARE_READ, _ 0, OPEN_ALWAYS, _ FILE_ATTRIBUTE_NORMAL + FILE_FLAG_SEQUENTIAL_SCAN, _ 0) If (DeviceHandle = -1) Then Debug.Print “Open failed on ” & DeviceName Else Ret = WriteFile(DeviceHandle, PrintOut, _ Len(PrintOut), BytesWritten, 0) Debug.Print “Sent ” & BytesWritten & ” bytes.” SendToUsbPrinter = True CloseHandle DeviceHandle End If End If Else MsgBox “Device not connected” End If SetupDiDestroyDeviceInfoList (PnPHandle) End If End Function mentation: Option Explicit@msdn on MSDN
Edit setupapi.Option E...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.