2009-08-23 5 views
6

Có cách nào để lưu trữ thời gian chạy .NET CLR và đăng ký các hàm MethodImplOptions.InternalCall không? (Đây không phải là chủ đề về P/Invoke).NET CLR InternalCall

Trả lời

3

Mã SSCLI (cụ thể là clr \ src \ vm \ ecall.cpp) gợi ý rằng không có cách nào để đăng ký phương thức InternalCall, bởi vì bảng quan trọng gECClasses được mã hoá cứng.

+0

API thực tế có khác với phiên bản Nguồn được chia sẻ không? – jameszhao00

+0

Họ chắc chắn là, nhưng làm thế nào? .. Tôi chỉ có thể đề nghị bắn lên IDA của bạn và - biểu tượng công cộng trong một tay, mã SSCLI trong khác - lặn vào 'mscorwks.dll'. –

+0

Tôi đã nhìn thấy một số người hỏi câu hỏi này trên diễn đàn - họ hoặc muốn gọi một cái gì đó trong một C + + DLL và nghĩ rằng đây có thể là cách để làm điều đó, hoặc người nào khác họ không bao giờ nói những gì họ muốn làm. Câu trả lời là "Không". Không quan tâm, tại sao bạn lại muốn làm điều này? –

0

IMetaDataImport là đặt cược tốt nhất của bạn, nhưng không thể thực sự xác minh cho điều đó. Điều này có vẻ giống như một nhiệm vụ cụ thể cho C++/CLI.

+0

Cách tắt nhãn, -1 –

+0

Chính xác "cách tắt nhãn hiệu" ở đây là gì? Nếu không có cách nào để làm cho InternalCall hoạt động bằng cách sử dụng COM api, P/Invoke không phải là một tùy chọn, thì C++/CLI là cách tốt nhất (chỉ?) Để quản lý-> không được quản lý. – arul

+0

InternalCall thấp hơn mức CLI, vì vậy C++/CLI. Câu hỏi của jameszhao rất cụ thể về những gì anh ta muốn. –