Вызов функции COM
От: Yustas Россия  
Дата: 04.03.03 14:50
Оценка:
Привет всем!
Прошу прощения, если мой вопрос уже обсуждался в форуме.
Имеется простая задача вызова функции COM.

На VB экспорт описания функции и код выглядит так:

Private Declare Function mciGetErrorString Lib "winmm" Alias "mciGetErrorStringA" (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long

Dim ErrorString As String
ErrorString = Space$(256)
mciGetErrorString 256, ErrorString, Len(ErrorString)
// В переменной ErrorString содержится описание ошибки


Переписываю на C#
[DllImport("winmm.dll")]        
public static extern Int32 mciGetErrorString (Int32 dwError, String lpstrBuffer, Int32 uLength);

Вызываю:
1 способ:

String ErrorString = new String(' ',256);
mciGetErrorString (263, ErrorString, ErrorString.Length);
// ErrorString не изменяется

2 способ:
String ErrorString = new String(' ',256);            
IntPtr p = Marshal.StringToHGlobalAnsi(ErrorString);
mciGetErrorString (RetVal, Marshal.PtrToStringAnsi(p), ErrorString.Length);
ErrorString = Marshal.PtrToStringAnsi(p);
// ErrorString не изменяется


Вопрос, как правильно вызвать функцию и получить описание ошибки.

Всем большое спасибо за ответ!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.