Meh*_*dad 5 c winapi struct unions
typedef struct _DISK_DETECTION_INFO {
DWORD SizeOfDetectInfo;
DETECTION_TYPE DetectionType;
union {
struct {
DISK_INT13_INFO Int13;
DISK_EX_INT13_INFO ExInt13;
};
};
} DISK_DETECTION_INFO, *PDISK_DETECTION_INFO;
Run Code Online (Sandbox Code Playgroud)
代替
typedef struct _DISK_DETECTION_INFO {
DWORD SizeOfDetectInfo;
DETECTION_TYPE DetectionType;
DISK_INT13_INFO Int13;
DISK_EX_INT13_INFO ExInt13;
} DISK_DETECTION_INFO, *PDISK_DETECTION_INFO;
Run Code Online (Sandbox Code Playgroud)
或者我只是过度分析这段代码?
可以说,这是一个错误.但是,我们可能只给出了结构的公共定义.在内部(当由Windows内核使用时),它可以定义为:
typedef struct _DISK_DETECTION_INFO {
DWORD SizeOfDetectInfo;
DETECTION_TYPE DetectionType;
union {
struct {
DISK_INT13_INFO Int13;
DISK_EX_INT13_INFO ExInt13;
};
DISK_INTERNAL_INFO Private; // Used internally, when DetectionType = -1
};
} DISK_DETECTION_INFO, *PDISK_DETECTION_INFO;
Run Code Online (Sandbox Code Playgroud)
我不会将其作为可维护,安全或便携的志愿服务,但这是可能的.
DISK_INTERNAL_INFO甚至可能超过匿名的大小struct- 假设用户从不实例化对象本身,该技术甚至可能被认为对于将额外数据隐藏在远离用户但将其保留在结构中有用.他们永远不会"看到"过去的匿名者struct.
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |