2011-10-12 38 views
9

Có thể trích xuất tệp HANDLE từ bộ mô tả tệp Windows hoặc từ FILE * không?giải nén tệp HANDLE từ bộ mô tả tệp Windows hoặc từ FILE *

Ví dụ, FILE * được triển khai trên đầu trang của các bộ mô tả tệp, và lần lượt các mô tả tệp được thực hiện (trên Windows) trên đầu trang của các HANDLE. Một FD có thể được trích xuất từ ​​FILE * bằng cách sử dụng hàm fileno() được ghi lại. Trích xuất HANDLE từ FD có thể bị hack nhiều hơn hoặc nhiều tài liệu hơn ....

+3

Hmm tại sao mọi người bỏ phiếu để đóng một câu hỏi hợp pháp. – Andrei

+0

Một số người bị định kiến ​​trước các câu hỏi cơ bản. –

+0

@Andrei: Có một chút khó khăn để đọc ban đầu. Hãy nỗ lực nhiều hơn vào chính tả trong tương lai và mọi người có nhiều khả năng nỗ lực tìm kiếm câu trả lời cho bạn. –

Trả lời

14

Có. Xem _get_osfhandle.

+0

Thật tuyệt. Cảm ơn. – Andrei

+5

Đảo ngược - ['_open_osfhandle'] (http://msdn.microsoft.com/en-us/library/bdts1c9x%28v=vs.110%29.aspx) - * Liên kết bộ mô tả tệp thời gian chạy C với một xử lý tệp hệ điều hành hiện có. * –

+0

Và có vẻ như kết quả của _get_osfhandle sẽ được đưa vào HANDLE để làm cho công cụ hoạt động. Nếu không có diễn viên tôi nhận được thông báo lỗi (từ gcc 6.3 trong msys 2 biên dịch C++): lỗi: chuyển đổi không hợp lệ từ 'intptr_t {aka long long int}' thành 'HANDLE {aka void *}' –

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