как правильно получить результ функции из DLL
От: asemchuk  
Дата: 17.06.05 17:17
Оценка:
Добрый вечер!

У меня есть чледующая проблема ...
есть некоторая DLL в которой находиться вот такая функция ...

DWORD CASGetUsersByApp( LPCTSTR pszBusinessName,
LPCTSTR pszLastNameSearch,
AuthService::UserInfo** puiUsers,
DWORD* pdwSize
)

Так вот здесь puiUsers передается по **

я сл. образом перенес это в С#

[StructLayout(LayoutKind.Auto)]
public class UserInfo
{
[MarshalAs(UnmanagedType.BStr)]
public string _domainName;
[MarshalAs(UnmanagedType.BStr)]
public string _firstName;
[MarshalAs(UnmanagedType.BStr)]
public string _middleName;
[MarshalAs(UnmanagedType.BStr)]
public string _lastName;

public UserInfo() {}
}

[DllImport("CASAgentA.dll", CharSet=CharSet.Ansi, SetLastError=true, EntryPoint "CASGetUsersByApp")]
private extern static int CASGetUsersByAppA( string strBSCode, string strBusinessSystemCode, ref UserInfo[] parrUsers , ref int Size );

Внутри сишного кода, идет нормальное заполнение этой структуры ...
Она заполняется, все нормально, а когда мы покидаем сишный код, то получаем сл. вылетает ексепшн в, котором написано мол Object reference not set to an instance of an object.

Кто знает в чем дело ? помогите плиз ...
Если есть более елегантное решение это даже лучше ... =)

Заранее благодарен ..
Errare est humanum, errare est humanum
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.