Как я могу перевести C# native memory copy byte array routine in to vb.net-да.
Как мне преобразовать это в VB.net
[DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)] static unsafe extern IntPtr memcpy(byte* dest, byte* src, uint count); /* * Callback function which copies the received data into the buffer and sets an event after the specified profiles */ static unsafe void ProfileEvent(byte* data, uint uiSize, uint uiUserData) { if (uiSize > 0) { if (uiReceivedProfileCount < uiNeededProfileCount) { //If the needed profile count not arrived: copy the new Profile in the buffer and increase the recived buffer count uiProfileDataSize = uiSize; // Copy the unmanaged data buffer (data) into the application fixed (byte* dst = &abyProfileBuffer[uiReceivedProfileCount * uiSize]) { memcpy(dst, data, uiSize); } uiReceivedProfileCount++; } if (uiReceivedProfileCount >= uiNeededProfileCount) { //If the needed profile count is arived: set the event hProfileEvent.Set(); } } }
Что я уже пробовал:
С помощью CodeTranslator: перевод кода из VB.NET <-> C# <-> TypeScript <-> Java[^]
Придумывать:
Private Declare Function memcpy Lib "msvcrt.dll" Alias "memcpy" (ByVal dest As Byte, ByVal src As Byte, ByVal count As UInteger) As IntPtr Private Shared Sub ProfileEvent(ByVal data As Byte, ByVal uiSize As UInteger, ByVal uiUserData As UInteger) If (uiSize > 0) Then If (bProfileReceived < uiNeededProfileCount) Then uiProfileDataSize = uiSize abyProfileBuffer((bProfileReceived * uiSize)) memcpy(dst, data, uiSize) bProfileReceived = (bProfileReceived + 1) End If If (bProfileReceived >= uiNeededProfileCount) Then 'If the needed profile count is arrived: set the event hProfileEvent.Set End If End If End Sub
Честно говоря, это было не очень хорошо.
Он пропустил массив байт* все вместе.
На самом деле я думаю, что просто застрял на этом:
fixed (byte* dst = &abyProfileBuffer[uiReceivedProfileCount * uiSize]) { memcpy(dst, data, uiSize); }
Я погуглил
"fixed (byte*" vb.net
И нашел:
Преобразование фиксированных и байтовых* из c# в vb.net - переполнение стека[^]
и в конце концов я нашел:
https://social.technet.microsoft.com/wiki/contents/articles/24254.moving-memory-in-net-using-vb-and-the-cil.aspx[^]
Не знаю, как это использовать.
Любая помощь, чтобы заполнить кусочки головоломки?