Tag: 64bit

如何判断另一个进程是否为64位?

我有一个正在运行的应用程序的进程 。 我怎么知道(没有p /调用,最好是)该进程是64位?

是否有任何集合类或特殊数据类型支持.NET 3.5中超过2 ^ 31项?

我目前正在使用VS 2008 64位版本,带有SP1的3.5框架。 但是,像List这样的集合类似乎可以包含2 ^ 31(或int的最大值)元素的限制。 有谁知道是否有任何真正的64位集合可以处理容器中超过2 ^ 31个元素? 如果不是VS 2008,那么VS 2010怎么样? 那里有任何第三方collections品吗?

使用VID和PID识别连接到x64的USB设备的COM端口

如下我能够通过给定的pid和vid获得连接到32位win7OS机器的usb com端口名称,但是当在x64中运行时,它会卡在以下行中: comports.Add((string)rk6.GetValue(“PortName”)); 这是我的代码 static List ComPortNames(String VID, String PID) { String pattern = String.Format(“^VID_{0}.PID_{1}”, VID, PID); Regex _rx = new Regex(pattern, RegexOptions.IgnoreCase); List comports = new List(); RegistryKey rk1 = Registry.LocalMachine; RegistryKey rk2 = rk1.OpenSubKey(“SYSTEM\\CurrentControlSet\\Enum”); foreach (String s3 in rk2.GetSubKeyNames()) { RegistryKey rk3 = rk2.OpenSubKey(s3); foreach (String s in rk3.GetSubKeyNames()) { if (_rx.Match(s).Success) { […]

64位窗口上的P / Invoke是否需要与32位不同的签名?

当我创建一个引用user32.dll的签名时,如果目标是64位计算机,我应该用user64.dll构建它吗? [DllImport(“user32.dll”, CharSet = CharSet.Auto)] public static extern bool ChangeClipboardChain( IntPtr hWndRemove, IntPtr hWndNewNext); 目前这不是问题,因为我的目标只是32位,因为来自供应商(Progress OpenEdge)的库只提供32位库来访问他们的数据库。 我目前没有64位Windows计算机,看看是否是这种情况。

在c#中以编程方式设置dllimport

我在我的解决方案中使用DllImport 。 我的问题是我有两个版本的相同的DLL一个为32位而另一个为64位。 它们都使用相同的名称和相同的签名来公开相同的function。 我的问题是我必须使用两个静态方法来暴露这些,然后在运行时使用IntPtr大小来确定要调用的正确方法。 private static class Ccf_32 { [DllImport(myDllName32)] public static extern int func1(); } private static class Ccf_64 { [DllImport(myDllName64)] public static extern int func1(); } 我必须这样做,因为myDllName32和myDllName64必须是常量,我没有找到在运行时设置它的方法。 有没有人有一个优雅的解决方案,所以我可以摆脱代码重复和常量IntPtr大小检查。 如果我可以设置文件名,我只需要检查一次,我就可以摆脱大量重复的代码。

C#P在64位系统上调用user32.dll

从64位应用程序中ping 64位Windows上的user32.dll是不对的? 我成功完成了很多次并且从未出现过错误,但这似乎是矛盾的。 我应该寻找user64.dll吗?

Process.Start(“telnet.exe”)抛出exception

我有两个在W2k8 R2 x64上运行的应用程序,一个被编译为64位,另一个被编译为32位,因为它具有COM依赖性。 在我试图打电话: Process p = Process.Start(“telnet.exe”, string.Format(“{0} {1}”, address, port)); 在x64中它工作得很好,但是在32位中我得到一个System.ComponentModel.Win32Exception(“系统找不到指定的文件”)? 知道这里发生了什么吗? 即使我打电话 Process.Start(@”C:\Windows\System32\telnet.exe”) 我得到同样的例外? 谢谢, 汤姆

c#中64位应用程序中的32位dll

你好 我想在c#中创建一个64位应用程序,我不想在其中使用在C ++ builder(32bit)中创建的dll。 但是当我尝试加载dll时,应用程序崩溃了。 当建立在32位时,它的工作原理。 有没有办法在64位应用程序中使用此DLL?

在c#中使用pinvoke来调用64位的sprintf和朋友

我在C#中使用pinvoke来调用_snwprintf时遇到了一个有趣的问题。 它适用于整数类型,但不适用于浮点数。 这是在64位Windows上,它在32位上运行良好。 我的代码如下,请记住,这是一个人为的例子来展示我所看到的行为。 class Program { [DllImport(“msvcrt.dll”, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] private static extern int _snwprintf([MarshalAs(UnmanagedType.LPWStr)] StringBuilder str, IntPtr length, String format, int p); [DllImport(“msvcrt.dll”, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] private static extern int _snwprintf([MarshalAs(UnmanagedType.LPWStr)] StringBuilder str, IntPtr length, String format, double p); static void Main(string[] args) { Double d = […]

SendInput在64位上失败

可能重复: SendInput和64位 我正在使用.NET代码中的SendInput(PInvoke)。 用于在32位操作系统上正常工作的代码,但现在在WIN7上SendInput返回0,最后一个错误设置为57(ERROR_INVALID_PARAMETER)。 我无法将代码编译为x86,因为我已加载到64位主机中。 此外,我尝试了各种有关结构尺寸和场偏移的解决方案,但都没有。 这些是我的PInvoke导入和类型: [StructLayout(LayoutKind.Sequential)] struct KEYBOARD_INPUT { public uint type; public ushort vk; public ushort scanCode; public uint flags; public uint time; public uint extrainfo; public uint padding1; public uint padding2; } [DllImport(“User32.dll”, SetLastError=true)] private static extern uint SendInput( uint numberOfInputs, [MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] KEYBOARD_INPUT[] input, int structSize); 和代码用法是: uint […]