【问题标题】:Is there a long version of IntPtr in C#?C# 中是否有长版本的 IntPtr?
【发布时间】:2014-05-25 06:45:48
【问题描述】:

我需要 C# 中的 C++ 中的 ULONG_PTR 等效项。

This 让我很紧张。我不能在 32 位应用程序中处理 64 位指针吗?


如果怀疑存在 XY 问题:我需要 C# 中的 OVERLAPPED 结构。它包含ULONG_PTR。看起来像这样:
typedef struct _OVERLAPPED
{
    ULONG_PTR Internal;
    ULONG_PTR InternalHigh;
    union
    {
        struct
        {
            DWORD Offset;
            DWORD OffsetHigh;
        } DUMMYSTRUCTNAME;
        PVOID Pointer;
    } DUMMYUNIONNAME;
    HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;

【问题讨论】:

  • 为什么在 32 位应用程序中需要 64 位指针..?
  • 在 32 位应用程序中没有 64 位指针之类的东西。
  • 已经有一个重叠的结构:msdn.microsoft.com/en-us/library/…
  • ULONG_PTR 映射到__int3264,这与IntPtr 相同。没什么好担心的。

标签: c# c++ pointers 64-bit 32-bit


【解决方案1】:

32 位系统中的所有指针都是 32 位的,而 64 位系统中的所有指针本身都是 64 位的。对于需要 32 位的旧版应用程序,64 位可以模拟 32 位指针。

在 32 位系统中,不能有 64 位指针。如果可以,64位系统有什么用:)

您可以对遇到的任何指针使用System.IntPtr

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 2022-01-20
    • 2011-05-07
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多