Вызов C++ DLL с маршалированием на C#

309
14 января 2018, 02:41

Прошу помощи, т. к. столкнулся с проблемой вызова DLL (не .NET). Есть библиотека "AwUsbApi.dll" с 4-мя функциями доступными для вызова, приведу пример на одной из них "AwUsbConnect"

Ее вызов для C++

 __declspec(dllexport)
    AWUSB_STATUS
    _cdecl
    AwUsbConnect (
        IN  LPCWSTR         Hub,    
        IN  PAWUSB_STATUS   Status,
        IN  DWORD           Timeout,
        IN  HANDLE          hEvent OPTIONAL
    );

Мой вызов ее на С#:

    [DllImport("AwUsbApi.dll", EntryPoint = "AwUsbConnect", 
        CharSet = CharSet.Unicode)]
    public static extern int AwConnect(
        [MarshalAs(UnmanagedType.LPWStr)] string IP, 
        [MarshalAs(UnmanagedType.LPWStr)] StringBuilder Status, 
        int TimeOut);

Но, к сожалению, это не работает, статусы меняются, но реального воздействия на физическое устройство не происходит =(

Ниже описание функции:

  • AwUsbConnect
  • Parms:
  • Hub
  • [in] AwUsb Hub IP Address in string format. (e.g. "192.168.1.10:3" for
  • host 192.168.1.10 and group 3).
  • Status
  • [out] Updated upon return from function, and, when hEvent is non- NULL,
  • after the connect operation completes. See Return Values.
  • Timeout
  • [in] Specifies how long to wait for connection to succeed, in milliseconds.
  • Must be non-zero. Set value to INFINITE in order to wait forever.
  • Returns AWUSB_STATUS_TIMEOUT if timeout interval elapses.
  • hEvent
  • [in] Handle to an event which will be set to the signaled state when the
  • operation has been completed. If hEvent is NULL, this function will
  • block until it completes. If hEvent is non-NULL, then the function
  • returns immediately, usually with AWUSB_STATUS_PENDING unless an error
  • has occurred. To create an event object, use the CreateEvent function.
  • An application must wait until hEvent has been signaled before calling
  • CloseHandle.
READ ALSO
Drag and Drop в WPF

Drag and Drop в WPF

Как сделать Drag and drop для файлов? Я искал в гугле, полной инструкции не нашёл, есть какие-то обрывки кода и инструкций

231
Подключение System.Data.SQLite в JetBrains Rider

Подключение System.Data.SQLite в JetBrains Rider

При выполнении этого кода

214