pointers相关内容
我怎样才能从它的指针或过程/进程名称获取窗口的图标?在窗口的角落或在任务栏或ALT-Tab键菜单中显示的图标。 解决方案 阅读 Icon.ExtractAssociatedIcon : 返回的图像中包含的一个图标重新presentation 指定的文件。 私人无效ExtractAssociatedIconEx() { ICO图标= Icon.ExtractAss
..
有没有什么办法来维持在code以下相同的功能,但无需创建委托?我的接口与一个包含许多不同的DeleteSomethingX(参考IntPtr的PTR)方法的第三方API和我想集中在code为IntPtr.Zero检查。 私人无效委托CleanupDelegate(参考IntPtr的PTR); ... 私人无效清理(参考IntPtr的PTR,CleanupDelegate清理) { 如
..
我写了一个结构和功能,在那里我试图通过引用传递的结构(即结构值可以在函数内部进行修改)。 枚举RoomType {经济,楼内设有商务,行政,豪华}; 结构的空房 { 公众诠释号码; 公共BOOL服用; 公共RoomType类别; 公共无效打印() { 字符串状态=有人吗? “占用”:“可用”; Console.Write
..
在一个C#的维护项目,我碰到下面的变量声明: 的Int32 * iProgressAddress; 难道指针声明在C#? 我认为没有在C#中没有指针的概念,这是什么说法呢? 解决方案 C#不支持指针,但它仅限于指向那些非托管类型的基本数据类型,如整型,浮点型,枚举和其他指针类型(加原语的其余部分)。 修改:和值类型
..
我最近写一些不安全code在C#中,注意到这将产生一个语法错误: 公众安全的类UnsafeByteStream { 公共UnsafeByteStream(INT容量) { this.Buffer = stackalloc字节[容量] } 公共字节*缓冲区{获得; } } 这样做的结果是:“无效EX pression术语”stackallo
..
我们正在建立一个应用程序在C#.NET 4.0,对Win7的X64,X32定位 我们在我们的应用程序中使用第三方库。据我们了解,该库是用C ++写的。然而,为了让C#开发人员使用这个库,他们已经把它包使用P / Invoke,所以这就是我们如何调用API函数。 其中一个API调用如下: ReadFromDevice(INT deviceAddress,诠释的numBytes,字节[]数据)
..
我使用的有 StringHandle 字段,它是一个的IntPtr 值重新presents一类 LPCWSTR 在C ++中。 内部IntPtr的StringHandle; // LPCWSTR 说现在我有一个字符串:字符串x =“ABCDEFG” 我 如何使用String把手指向字符串的开头,这样它像C ++ LPCWSTR? 解决方案 您需要将字符串复制到非托管内存,然后再拿
..
我读过一些关于在一些64位Java虚拟机实现COM pressed对象指针。据我的理解是,其原理是存储引用作为一个相对的32位地址,从一个对象偏移到另一个,而不是一个完整的64位指针,来获得内存。 我认为,这种优化当前没有应用到.NET CLR。至少我无法找到任何关于它。难道是有可能适用于它或会是这样,因为如何在CLR内部工作是不可能的/无用/性能下降的优化? 解决方案 虽然我不知道你是否能
..
正如标题所说我试图从一个地址我找到了作弊引擎的指针扫描读取。但唯一的问题是我曾经有过一起工作的唯一指针只是指针地址+偏移量。我使用C#.net 4.0,从Visual Studio 2010中,我认为我记得看到之前一些事情,但我没想到这种事,因为它并没有在当时适用于我。 一些关于获得过程或模块ID,并将其添加到指针地址,然后将偏移,并从那里读?但我不记得命令,获得一个进程ID或模块ID:/ 另
..
首先,这个问题:做CLR规范保证code执行多个应用程序域在同一进程内将共享相同的地址空间?通过“共享地址空间”我的意思是指向分配的应用程序域的一个存储器将是有效的阅读和写作在相同的进程中承载的所有应用程序域。 考虑这种自成一体的例子,说明了一个问题:该方案在一个单独的应用程序域分配工人对象。该工人分配10000整数的内存块,并用数据填充入。然后程序跨应用程序域边界来电索取指针分配的内存块,并验
..
我有以下code,有一次,我跑我的应用程序,我得到这个错误 任何人都知道我是如何解决这个问题? ERROR: 要PInvoke的函数调用“testcamera!EDSDKLib.EDSDK :: EdsDownloadEvfImage”有不平衡的堆栈。这可能是因为管理的PInvoke签名也非托管的目标签名不匹配。检查调用约定和的PInvoke签名的参数匹配目标非托管签名 IntPtr的c
..
我有一个看等于法实施字符串类的.NET Framework,发现它使用了 EqualsHelper 方法。我发现,这真是一个非常酷的和有效的方法,但有一些非常weired我发现,为什么他们递增指针(或进行补偿),通过除法运算,如: *(长*)(PTR +(IntPtr的)8/2),PTR + =(IntPtr的)4/2; 等。 谢谢! 解决方案 嗯,我没有看到你在谈论的原因是,你正在寻找6
..
有点不清楚我是引用(指针?),以班级在VB.Net。我要问的问题可以通过测试的一点点来回答,但我想知道如果任何人都可以发布一个体面的解释(或链接,太)。 如果你创建一个类: 公共类ReferenceClass 私人myBooleanValue由于布尔= FALSE 公共财产的booleanValue由于布尔 得到 返回myBoolean
..
我知道使用 /不安全标记在C#中,你可以使用指针。在C / C ++删除指针,你可以使用免费(指针); 和删除指针; 分别。但是,您将如何实现与C#指针同样的效果? 解决方案 这要看情况。您可以使用免费和删除来的malloc 分配的可用内存和新。 但是 在一般的,如果你做一个PInvoke的呼叫,然后指针应该是的IntPtr 。 如果您使用固定(或的GCHandle ),以获得一个指针的
..
如何C#使得指针的使用?如果C#是一种管理语言,垃圾收集做得很好,在preventing内存泄漏和正确释放内存,那么什么是用C#指针和如何“效果的的不安全 “是什么人? 解决方案 要使用指针,你必须允许不安全的code和标记使用指针为不安全。然后,你必须解决的指针在内存中,以确保垃圾回收器不会移动它们: 字节[]缓冲区=新的字节[256]; //固定确保缓冲区将不会被移动,这样会让你的指针
..
简单的问题,我导入一个DLL函数,参数都为int *。 当我尝试输入方法(0),我得到一个错误,说:“int和INT *不能将” 那是什么意思? 解决方案 这是一个指向int经典的C表示法。每当类型后跟一个 * ,它指的类型作为的指针那个类型。在C#中,不像在C,你必须明确定义功能不安全使用指针,除了启用的不安全 code。在项目属性。指针类型也不能直接互换的具体类型,这样类型的引用必须首先
..
此错误停止编译,如果我有一个或多个System.String在我的结构 有存储字符串任何其他方式? 我已经试过这样的事情: 专用长_B_ID; 私人字节[] _C_Name; 私人字节[] _C_Address; 私人字节[] _C_Telephone; ,但它不似乎工作 解决方案 您只能得到一个结构的地址,如果是blittable,也就是说,它不包含引用。 请参见 Blitt
..
比方说,我想存储一组函数指针在名单≤(* FUNC)> ,再后来打电话给他们,甚至与参数.. 。就像如果我存储在字典≤(* FUNC),对象[] PARAMS> 我可以打电话与参数FUNC?我将如何做到这一点? 解决方案 .NET使用委托而不是函数指针。您可以将委托实例像任何其他类型的对象,在字典中或以其他方式。 请参阅从MSDN上的C#编程指南代表。
..
如果您在C#code使用指针?有什么好处?难道是建议由男方(微软)? 解决方案 从“人”自己: 的指针的使用很少需要在C#,但也有一些情况,需要它们。作为例子,使用不安全的上下文,以允许指针是由下列情况下保证: 在现有的结构上盘交易 涉及的指针结构在其中高级COM或平台调用场景 在性能关键code 在其他情况下,使用不安全的情况下不鼓励。 具体而言,不安全的情况下不应该被用来尝试写C
..
我设法要获得一个.NET对象的地址 的GCHandle objHandle = GCHandle.Alloc(OBJ,GCHandleType.WeakTrackResurrection); INT地址= GCHandle.ToIntPtr(objHandle).ToInt32(); 和我能回想起目标 obj对象= GCHandle.FromIntPtr(IntPtr的(地址))的目
..