none
PInvoke RRS feed

  • Frage

  • Hallo,
    ich versuche Funktionen einer C-DLL einzubinden.
    Z.B. habe ich folgende Strukturen

        typedef struct ReqConnectorT
        {
    int             connID;
    char            descConn[40];
    unsigned int    staleID;
        } ReqConnectorT;

    typedef struct bT1
    {
    char dummy[32];
    } bT1;


        typedef struct cbDataT
        {
    void         *respData;
    struct bT1   *subject;
        } cbDataT;

    die ich dann in
    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
        Public Structure ReqConnectorT
            Dim connID As System.Int32
            <MarshalAs(UnmanagedType.ByValArray, SizeConst:=40)> Dim descConn() As Byte
            Dim staleID As System.UInt32
        End Structure

        <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
        Public Structure bT1
            <MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Dim dummy() As Byte
         End Structure

        <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
        Public Structure cbDataT
            Dim respData As System.IntPtr
            Dim subject As bT1
        End Structure

    geändert habe.
    Dazu hätte ich zwei Fragen

    1) ist dies korrekt so und
    2) wird nun anscheinend erwartet, dass descConn immer ein ByteArray der Größe 40 ist, sprich ich kann kein ByteArray mit 7 Feldern übergeben.

    Danke
    Reinhard
    Montag, 22. Februar 2010 11:18