
Trabajar con CopyMemory en C#
Publicado por Leo (10 intervenciones) el 07/07/2015 16:26:08
Hola amigos,
Estoy trabajando en un proyecto para pasar un programa originalmente escrito en Visual Basic 5 a C# para trabajar con el programa MMTTY de codificacion de audio, y estoy atascado en este código.
La funcion "Private Sub XMMR_OnNotifyNMMR(pNMMR As Long)" se ejecuta cuando el receptor de audio recibe una trama y manda como argumento el puntero pNMMR que apunta a la posición de memoria de la estructura NMMR donde se encuentran los datos.
Luego se hace un CopyMemory para guardar los datos en el array m_nmmr().
A la hora de pasarlo a C# me encuentro con el problema de que la estructura no está definida y no sé como usar el puntero pNMMR.
Alguien me da una orientación de como definir la estructura en C# y poder trabajar con el punero pNMMR?
Gracias de antemano,
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
Dim m_nmmr(63) As Long
Private Sub XMMR_OnNotifyNMMR(pNMMR As Long)
Call CopyMemory(m_nmmr(0), pNMMR, 64 * 4)
MarkFreq = m_nmmr(5)
End Sub
#pragma pack(push, 1)
typedef struct {
DWORD m_markfreq;
DWORD m_spacefreq;
DWORD m_siglevel;
DWORD m_sqlevel;
DWORD m_codeswitch;
DWORD m_notch1;
DWORD m_notch2;
DWORD m_baud;
DWORD m_fig;
DWORD m_radiofreq;
DWORD m_Reserved[];
}NMMR;
#pragma pack(pop)
Estoy trabajando en un proyecto para pasar un programa originalmente escrito en Visual Basic 5 a C# para trabajar con el programa MMTTY de codificacion de audio, y estoy atascado en este código.
La funcion "Private Sub XMMR_OnNotifyNMMR(pNMMR As Long)" se ejecuta cuando el receptor de audio recibe una trama y manda como argumento el puntero pNMMR que apunta a la posición de memoria de la estructura NMMR donde se encuentran los datos.
Luego se hace un CopyMemory para guardar los datos en el array m_nmmr().
A la hora de pasarlo a C# me encuentro con el problema de que la estructura no está definida y no sé como usar el puntero pNMMR.
Alguien me da una orientación de como definir la estructura en C# y poder trabajar con el punero pNMMR?
Gracias de antemano,
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
Dim m_nmmr(63) As Long
Private Sub XMMR_OnNotifyNMMR(pNMMR As Long)
Call CopyMemory(m_nmmr(0), pNMMR, 64 * 4)
MarkFreq = m_nmmr(5)
End Sub
#pragma pack(push, 1)
typedef struct {
DWORD m_markfreq;
DWORD m_spacefreq;
DWORD m_siglevel;
DWORD m_sqlevel;
DWORD m_codeswitch;
DWORD m_notch1;
DWORD m_notch2;
DWORD m_baud;
DWORD m_fig;
DWORD m_radiofreq;
DWORD m_Reserved[];
}NMMR;
#pragma pack(pop)
Valora esta pregunta


0