2010-04-23 39 views
5

Có thể cho một tiến trình con kế thừa một xử lý từ quá trình cha mẹ của nó nếu một quá trình là 32-bit và một là 64-bit?Windows có thể xử lý thừa kế qua ranh giới 32 bit/64 bit không?

HANDLE là loại 64 bit trên Win64 và loại 32 bit trên Win32, cho thấy thậm chí có thể xảy ra trong mọi trường hợp, sẽ có một số trường hợp không thành công: quy trình gốc 64 bit , một tiến trình con 32 bit và một tay cầm không thể được biểu diễn trong 32 bit.

Hoặc đặt tên cho đối tượng là cách duy nhất cho quy trình 32 bit và quy trình 64 bit để xử lý cho cùng một đối tượng?

Trả lời

7

Nếu đó là một xử lý tệp hoặc xử lý hạt nhân khác, thì có.

Nó chỉ xảy ra mặc dù HANDLE là loại 64 bit, nhưng nó luôn có thể được chuyển đổi thành 32 bit và ngược lại cho bất kỳ giá trị xử lý hợp lệ nào.

Không thể kế thừa các tay cầm GDI.

0

Có, nhưng khi chuyển đổi từ xử lý 32 bit sang tay cầm 64 bit, hãy đảm bảo đăng ký mở rộng giá trị. Nghĩa là, đặt bit 32-63 thành giá trị của bit 31. Vì vậy, 0x80000000 trở thành 0xFFFFFFFF80000000, không phải 0x0000000080000000. Ngoài ra, lưu ý rằng khả năng tương thích giữa 32 và 64-bit này chỉ được đảm bảo cho các điều khiển chế độ người dùng (đó là tất cả những gì bạn cần làm, trừ khi bạn đang viết trình điều khiển hoặc một số thứ chạy trong chế độ lõi).

Xem thêm: this SO question and its answer (phạm vi Windows HANDLE trên ứng dụng 64 bit là gì?)

Các vấn đề liên quan