vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
UNICODE Compilen? 
Autor: Fabian Stern
Datum: 13.09.06 19:01

Hallo,

kann man VB.NET und UNICODE vereinen?
Ich möchte, dass meine ganzen Strings und Chars als Unicode gespeichert werden.
Das ganze ist simpel die Umgehung eines BUG, der von Microsoft dokumentiert ist.

Ich habe hier mal einen Auszug des Codes:

    <StructLayout(LayoutKind.Sequential)> Public Structure sDrvInfo
        Dim cbSize As Long
        Dim DriverType As Long
        Dim Reserved As Long
        <MarshalAs(UnmanagedType.LPWStr)> Dim Description As String
        <MarshalAs(UnmanagedType.LPWStr)> Dim MfgName As String
        <MarshalAs(UnmanagedType.LPWStr)> Dim ProviderName As String
        Sub New(ByVal b As Boolean)
            cbSize = Marshal.SizeOf(Me) : DriverType = 0 : Reserved = 0
        End Sub
    End Structure
 
...
 
        <DllImport("setupapi.dll")> Private Shared Function _
          SetupDiEnumDriverInfoW(ByVal DeviceInfoSet As IntPtr, ByRef _
          DeviceInfoData As Devices.clsDeviceInfo.sDevInfo, ByVal DriverType As _
          UInt32, ByVal MemberIndex As UInt32, ByRef DriverInfoData As _
          sDrvInfo) As Boolean
        End Function
Beim Aufruf dieser Funktion erhalte ich den WindowsErrorCode 1784 (Not enough buffer space).

Dabei passe ich vor der Zuweisung von DrvInfo die cbSize mit dem sizeof() c++-äquivalent an. Microsoft sagt, man solle doch bitte UNICODE verwenden.
Allerdings weiß ich nichts damit anzufangen.

Hier der Link zur Deklaration der API:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/DevInst_r/hh/DevInst_r/di-rtns_8d84a225-9dac-4ab3-8c9a-5048284d82be.xml.asp

"If you do not properly initialize the cbSize member of the SP_DRVINFO_DATA structure that is supplied by the pointer DriverInfoData, the function will fail and log the error ERROR_INVALID_USER_BUFFER."

Was ich schon getan habe:
-LPWStr wird verwendet
-der W -Suffix wird verwendet (Unicode-Call)
-die Structure wird Sequenziell übergeben

Hier nochmal mein kompletter Sektions-Source:

        Public Sub GetDriverList(ByVal mPointer As UInt32, ByVal mDevinfo As _
          Devices.clsDeviceInfo.sDevInfo)
            Dim res As Boolean = SetupDiBuildDriverInfoList(mPointer, mDevinfo, _
            &H2)
            Console.WriteLine(res & " " & mDevinfo.ClassGuid.ToString) 'TRUE, 
            ' also OK
 
            DrvInfo.cbSize = Marshal.SizeOf(DrvInfo) '40, also OK
 
            res = SetupDiEnumDriverInfoW(mPointer, mDevinfo, &H2, 0, DrvInfo)
 
            Console.WriteLine(res & " " & GetLastError()) 'FALSE 1784, NICHT OK
        End Sub
Ich versuche das nun schon vier Tage lang, bitte um Hilfe!

MfG.
Fabian Stern
-
info@smart-coding.com
http://www.smart-coding.com

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
UNICODE Compilen?1.119Fabian Stern13.09.06 19:01
Re: UNICODE Compilen?629ModeratorDaveS13.09.06 19:15
Re: UNICODE Compilen?634Fabian Stern13.09.06 19:45
Re: UNICODE Compilen?687ModeratorDaveS13.09.06 19:57
Re: UNICODE Compilen?665Fabian Stern13.09.06 20:12
Re: UNICODE Compilen?723Fabian Stern13.09.06 20:15
Re: UNICODE Compilen?632ModeratorDaveS13.09.06 20:40
Re: UNICODE Compilen?713Fabian Stern13.09.06 20:43
Re: UNICODE Compilen?640ModeratorDaveS13.09.06 21:41
Re: UNICODE Compilen?814Fabian Stern13.09.06 23:13
Re: UNICODE Compilen?619ModeratorDaveS14.09.06 08:05
Re: UNICODE Compilen?710Fabian Stern14.09.06 15:47
Re: UNICODE Compilen?653ModeratorDaveS14.09.06 17:30

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel