#1 Native x64 version...

开启中
DeltaFoX2 年之前创建 · 9 条评论
DeltaFoX 评论于 2 年之前

Hi mr doublesine Can help me to adapt code Patch for VisualAssist on new 64 version dll for latest VS 2022 native x64?

Build 2022.1 Release date: 2022.01.21 Version 10.9.2443

VA_X64.dll

https://mega.nz/file/6s1wCZBA#zycmnktPFNw12sV37xMXVYVLtRPvnnpsfgKSnFw_tCI

Thanks and Best Regards

Hi mr doublesine Can help me to adapt code Patch for VisualAssist on new 64 version dll for latest VS 2022 native x64? Build 2022.1 Release date: 2022.01.21 Version 10.9.2443 VA_X64.dll https://mega.nz/file/6s1wCZBA#zycmnktPFNw12sV37xMXVYVLtRPvnnpsfgKSnFw_tCI Thanks and Best Regards
Double Sine 评论于 2 年之前
所有者

OK, I will take a look as soon as possible.

OK, I will take a look as soon as possible.
DeltaFoX 评论于 2 年之前
发布者

many thank's for your time...

many thank's for your time...
Double Sine 评论于 2 年之前
所有者

The patched VA_X64.dll for 10.9.2443.0 has been uploaded.

The patched VA_X64.dll for 10.9.2443.0 has been uploaded.
DeltaFoX 评论于 2 年之前
发布者

Many thanks you Think about updating the code on the HyperSine github?

Best regards

Many thanks you Think about updating the code on the HyperSine github? Best regards
Double Sine 评论于 2 年之前
所有者

Code has been uploaded. Previous code is archived in archived-cpp branch.

Code has been uploaded. Previous code is archived in `archived-cpp` branch.
DeltaFoX 评论于 2 年之前
发布者

Many thanks for all..

Many thanks for all..
DeltaFoX 评论于 2 年之前
发布者

@Double Sine I have a little OT...

I need if possible an help on this problems :

I have this string hex :

1) 03 02 04 02 0c 02 05 02 2a 02 0e 02 0c 02 05 02 12 02 44 02 03 02 1e 02

and an sw passed this string hex at call c++ WideCharToMultiByte:

Codepage = 0xfde9; v4 = 0xD;

result = (LPSTR *)WideCharToMultiByte(CodePage, 0, lpString, v4, *a1, 4 * v4, 0, 0);

a1 = C8 83 c8 84 c8 8c c8 85 c8 aa c8 8e c8 8c c8 85 c8 92 c9 84 c8 83 c8 9e

a1 is a correct result....

I try to replicate in C# the same whitout success in this way :

1) [DllImport("kernel32.dll")]

    static extern int WideCharToMultiByte(uint CodePage, uint dwFlags,

[MarshalAs(UnmanagedType.LPWStr)] string lpWideCharStr, int cchWideChar, [MarshalAs(UnmanagedType.LPArray)] Byte[] lpMultiByteStr, int cbMultiByte, IntPtr lpDefaultChar, out bool lpUsedDefaultChar);

Int32 iNewDataLen = 0x34;

            Byte[] byNewData = null;
            bool bDefaultChar = false;
            string s = Encoding.UTF8.GetString(.......);
            int sl = s.Length;
            byNewData = new Byte[0x34];
            iNewDataLen = WideCharToMultiByte(0xfde9, 0, s, sl, byNewData, iNewDataLen, IntPtr.Zero, out bDefaultChar);

but byNewData for me is wrong... you know another way?

tks for any reply

@Double Sine I have a little OT... I need if possible an help on this problems : I have this string hex : 1) 03 02 04 02 0c 02 05 02 2a 02 0e 02 0c 02 05 02 12 02 44 02 03 02 1e 02 and an sw passed this string hex at call c++ WideCharToMultiByte: Codepage = 0xfde9; v4 = 0xD; result = (LPSTR *)WideCharToMultiByte(CodePage, 0, lpString, v4, *a1, 4 * v4, 0, 0); a1 = C8 83 c8 84 c8 8c c8 85 c8 aa c8 8e c8 8c c8 85 c8 92 c9 84 c8 83 c8 9e a1 is a correct result.... I try to replicate in C# the same whitout success in this way : 1) [DllImport("kernel32.dll")] static extern int WideCharToMultiByte(uint CodePage, uint dwFlags, [MarshalAs(UnmanagedType.LPWStr)] string lpWideCharStr, int cchWideChar, [MarshalAs(UnmanagedType.LPArray)] Byte[] lpMultiByteStr, int cbMultiByte, IntPtr lpDefaultChar, out bool lpUsedDefaultChar); Int32 iNewDataLen = 0x34; Byte[] byNewData = null; bool bDefaultChar = false; string s = Encoding.UTF8.GetString(.......); int sl = s.Length; byNewData = new Byte[0x34]; iNewDataLen = WideCharToMultiByte(0xfde9, 0, s, sl, byNewData, iNewDataLen, IntPtr.Zero, out bDefaultChar); but byNewData for me is wrong... you know another way? tks for any reply
Double Sine 评论于 2 年之前
所有者

WideCharToMultiByte with code page CP_UTF8(0xfde9) is just converting a UNICODE-encoded byte array to a UTF8-encoded byte array where UNICODE-encoded is actually UTF16-LE-encoded.

So the hex string you give

03 02 04 02 0c 02 05 02 2a 02 0e 02 0c 02 05 02 12 02 44 02 03 02 1e 02

is UNICODE-encoded.

The correct result

C8 83 c8 84 c8 8c c8 85 c8 aa c8 8e c8 8c c8 85 c8 92 c9 84 c8 83 c8 9e

is UTF8-encoded.

You should decode source hex string in UNICODE and then encode in UTF8, which is quite simple and you don't have to call Win32 API explictly:

byte[] s = 
    "03 02 04 02 0c 02 05 02 2a 02 0e 02 0c 02 05 02 12 02 44 02 03 02 1e 02"
        .Split(' ')
        .Select(x => Convert.ToByte(x, 16))
        .ToArray();

byte[] a1 =
    "C8 83 c8 84 c8 8c c8 85 c8 aa c8 8e c8 8c c8 85 c8 92 c9 84 c8 83 c8 9e"
        .Split(' ')
        .Select(x => Convert.ToByte(x, 16))
        .ToArray();

byte[] new_data = Encoding.UTF8.GetBytes(Encoding.Unicode.GetString(s));

            
Contract.Assert(new_data.SequenceEqual(a1));
`WideCharToMultiByte` with code page `CP_UTF8(0xfde9)` is just converting a __UNICODE-encoded__ byte array to a __UTF8-encoded__ byte array where __UNICODE-encoded__ is actually UTF16-LE-encoded. So the hex string you give ```text 03 02 04 02 0c 02 05 02 2a 02 0e 02 0c 02 05 02 12 02 44 02 03 02 1e 02 ``` is UNICODE-encoded. The correct result ```text C8 83 c8 84 c8 8c c8 85 c8 aa c8 8e c8 8c c8 85 c8 92 c9 84 c8 83 c8 9e ``` is UTF8-encoded. You should decode source hex string in UNICODE and then encode in UTF8, which is quite simple and you don't have to call Win32 API explictly: ```csharp byte[] s = "03 02 04 02 0c 02 05 02 2a 02 0e 02 0c 02 05 02 12 02 44 02 03 02 1e 02" .Split(' ') .Select(x => Convert.ToByte(x, 16)) .ToArray(); byte[] a1 = "C8 83 c8 84 c8 8c c8 85 c8 aa c8 8e c8 8c c8 85 c8 92 c9 84 c8 83 c8 9e" .Split(' ') .Select(x => Convert.ToByte(x, 16)) .ToArray(); byte[] new_data = Encoding.UTF8.GetBytes(Encoding.Unicode.GetString(s)); Contract.Assert(new_data.SequenceEqual(a1)); ```
DeltaFoX 评论于 2 年之前
发布者

I thank you for the many things I have learned from you over the years.

I thank you for the many things I have learned from you over the years.
登录 并参与到对话中。
未选择标签
未选择里程碑
未指派成员
2 名参与者
正在加载...
取消
保存
这个人很懒,什么都没留下。