Pointer auf eine Struktur

KBernd

Grünschnabel
Hallo zusammen;

ich habe eine Struktur aus C übernommen:
Code:
    Private Const ADS_REG_OWNER_LEN = 36
    Private Const ADS_REVISION_LEN = 16
    Private Const ADS_INST_DATE_LEN = 16
    Private Const ADS_OEM_CHAR_NAME_LEN = 16
    Private Const ADS_ANSI_CHAR_NAME_LEN = 16
    Private Const ADS_SERIAL_NUM_LEN = 16
    Private Structure ADS_MGMT_INSTALL_INFO
        Dim ulUserOption As Integer                                                '/* For ADS, user option purchased. For ALS, max users that can have any given table open */
        <VBFixedString(ADS_REG_OWNER_LEN)> Dim aucRegisteredOwner As String     '/* Registered owner     */
        <VBFixedString(ADS_REVISION_LEN)> Dim aucVersionStr As String           '/* Advantage Database Server version */
        <VBFixedString(ADS_INST_DATE_LEN)> Dim aucInstallDate As String         '/* Install date string  */
        <VBFixedString(ADS_OEM_CHAR_NAME_LEN)> Dim aucOemCharName As String     '/* OEM char language    */
        <VBFixedString(ADS_ANSI_CHAR_NAME_LEN)> Dim aucAnsiCharName As String   '/* ANSI char language   */
        <VBFixedString(ADS_INST_DATE_LEN)> Dim aucEvalExpireDate As String      '/* Eval expiration date */
        <VBFixedString(ADS_SERIAL_NUM_LEN)> Dim aucSerialNumber As String       '/* Serial number string */
    End Structure
und übergebe eine Variable dieses Typs an eine API-Funktion.
Dieses gibt mir jedoch einen Fehler "Ungültiger Pointer" zurück.

Wie kann ich also einen Pointer auf eine Struktur übergeben?
 
Ich bin jetzt einen Schritt weiter:

Code:
Dim ptr As IntPtr
ptr = System.Runtime.InteropServices.Marshal.AllocHGlobal(System.Runtime.InteropServices.Marshal.SizeOf(stInstallInfo)) 
Call System.Runtime.InteropServices.Marshal.StructureToPtr(stInstallInfo, ptr, True)
Die API-Funktion liefert keinen Fehler mehr zurück.
Aber wie komme ich jetzt an die zurückgegebenen Struktur-Daten heran?
Code:
Call System.Runtime.InteropServices.Marshal.PtrToStructure(ptr, stInstallInfo)
erzeugt eine ArgumentException:
Die Struktur darf keine Werteklasse sein. Parametername: structure
 

Neue Beiträge

Zurück