Función en DllImport

02/07/2007 - 10:51 por Plextor | Informe spam
Hola estoy llamando a una librería realizara en C y la mayoría de las
llamadas a funciones de dicha librería me funcionan correctamente en C#,
pero tengo una en cuestión que me dá problemas.

Os pongo la cabecera del .H para a ver si vosotros me echais un cable:


.H

int DllExport DkReadKey(HANDLE handle, char* buffer, int size, long
offset, int cycles);

Descripción:
buffer: A pointer to the character buffer that receives the data read
from the key.

C#

[DllImport("dkeserialdll.dll")]
public static extern int DkReadKey(int handle, out char[] buffer, int
size, long offset, int cycles);

private int Read_Key()
{
char[] buffer = new char[65];
result = DkReadKey(handle, out buffer, 64, 0, 1);
}

Un saludo,
Plextor
 

Leer las respuestas

#1 RFOG [MS MVP Visual C++]
02/07/2007 - 11:22 | Informe spam
Ese "char *" debe ser un IntPtr con la memoria manejada pinneada. Ten en
cuenta que un char[] es más que una tira de bytes, eso lleva una cabecera
y más cosas.

En Mon, 02 Jul 2007 10:51:58 +0200, Plextor escribió:

Hola estoy llamando a una librería realizara en C y la mayoría de las
llamadas a funciones de dicha librería me funcionan correctamente en C#,
pero tengo una en cuestión que me dá problemas.

Os pongo la cabecera del .H para a ver si vosotros me echais un cable:


.H

int DllExport DkReadKey(HANDLE handle, char* buffer, int size, long
offset, int cycles);

Descripción:
buffer: A pointer to the character buffer that receives the data read
from the key.

C#

[DllImport("dkeserialdll.dll")]
public static extern int DkReadKey(int handle, out char[] buffer, int
size, long offset, int cycles);

private int Read_Key()
{
char[] buffer = new char[65];
result = DkReadKey(handle, out buffer, 64, 0, 1);
}

Un saludo,
Plextor





Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Debemos buscar para nuestros males otra causa que no sea Dios.

Preguntas similares