c++ - 在 union 中访问结构

标签 c++ winapi

typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION {
  DWORD ControlFlags;
  union {
    DWORD  CpuRate;
    DWORD  Weight;
    struct {
      WORD MinRate;
      WORD MaxRate;
    };
  };
} JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, *PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION;

https://msdn.microsoft.com/en-us/library/windows/desktop/hh448384.aspx

在上面的结构中,我如何访问/更改 MaxRate?我这样得到 ControlFlags:

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION cpu;
cpu.ControlFlags = JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP;

最佳答案

在我复制的 winnt.h 头文件中,结构定义如下:

typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION {
    DWORD ControlFlags;
    union {
        DWORD CpuRate;
        DWORD Weight;
    };
} JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, *PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION;

确实没有MinRateMaxRate。我的猜测是,它们可能已添加到某些更高版本的 SDK 中(目前我手边只有 VC2013)。

考虑获取更新的 SDK 拷贝。同时,LOWORD(CpuRate)HIWORD(CpuRate) 应该可以。

关于c++ - 在 union 中访问结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181940/

相关文章:

c++ - C:将字节数组转换为结构

c++ - Cocos2d-x 3.0 不同 anchor 的旋转序列

c++ - 使用 -parallel 或(和)-vec 会使我们的程序运行得更快吗?

c++ - 如何从剪贴板中清除指定格式的数据?

c++ - 如何确定当前鼠标光标是否处于动画状态?

c - LdrLoadDll 崩溃

c++ - 为什么我可以在私有(private)类型上使用 auto ?

C++ 单独的命令行窗口?

winapi - Process Explorer 是否支持 API 或从控制台命令调用?

c++ - SetCapture 和 IWebBrowser2 容器的问题