Tôi thường xuyên gặp phải một số định nghĩa cho cấu trúc Win32API (nhưng không giới hạn ở đó) có thành viên cbSize
như trong ví dụ sau.Mục đích của thành viên cbSize trong cấu trúc Win32API
typedef struct _TEST {
int cbSize;
// other members follow
} TEST, *PTEST;
Và sau đó chúng ta sử dụng nó như thế này:
TEST t = { sizeof(TEST) };
...
hoặc
TEST t;
t.cbSize = sizeof(TEST);
...
đoán ban đầu của tôi là điều này có khả năng có thể được sử dụng cho versioning. Một DLL nhận một con trỏ cho một cấu trúc như thế này có thể kiểm tra xem thành viên cbSize
có giá trị dự kiến mà DLL đã được biên dịch hay không. Hoặc để kiểm tra xem việc đóng gói thích hợp có được thực hiện cho cấu trúc hay không. Nhưng tôi muốn ở đây từ bạn.
Mục đích của thành viên cbSize
trong một số cấu trúc C++ trên Win32API là gì?
Các kích thước khác nhau giữa các phiên bản hệ điều hành. Tôi chỉ cần nhấn một lỗi bằng sdk nền tảng đi kèm với VC++ 2008. Chúng tôi đã không xác định chính xác phiên bản hệ điều hành và kết thúc bằng cách sử dụng phiên bản Vista của cấu trúc - không hoạt động tốt trên hộp XP của tôi. – Aardvark