J'ai cette méthode que j'ai besoin d'appeler et d'utiliser dans mon application, mais je ne sais pas vraiment comment le faire exactement.Appel de code non sécurisé à partir de managed (C#). Reading byte array
C'est la fonction que j'ai besoin d'appeler.
[DllImport(dll_Path)]
public static extern int DTS_GetDataToBuffer(int Position, int Length, char* Buffer, int* DataRead);
Dans mon code, j'ai cette fonction et il me manque son implémentation.
internal static void GetDataToBuffer(int position, int length, out byte[] data, out int dataRead)
{
unsafe
{
// the code I need
}
}
Je pense que la plupart de ceci est très auto-explicatif. J'ai besoin d'implémenter cette dernière fonction pour que je puisse lire les données dans le tampon et la quantité de données lues (ce qui devrait être le même que data.Length, mais le fabricant a ceci comme option séparée, donc j'en ai besoin). Quelqu'un peut-il aider? Est-ce assez clair?
Merci
Edit: Voici la déclaration non géré à partir du fichier .h. J'espère que cela aide.
extern NAG_DLL_EXPIMP int DTS_GetDataToBuffer(int Position,
int Length,
unsigned char *Buffer,
int *DataRead);
Edit # 2: positons - la position à partir de laquelle étoile la lecture des données. Longueur - La quantité de données à lire (ce serait la taille de la mémoire tampon). DataRead - la taille réelle des données lues.
Pourriez-vous simplement appeler votre fonction à l'intérieur DTS_ méthode GetDataToBuffer? Y a-t-il des problèmes avec cela? –
Je pourrais. Je devrais, mais je ne sais pas comment passer correctement les types gérés à non gérés. C'est tout le problème que j'ai. –