2011-07-21 12 views
6

Khi tôi thêm những dòng sau vào mã của tôiNET Portability Cảnh báo: CA1901 PInvoke khai báo Should Be xách tay

[DllImport("user32.dll")] 
static extern void keybd_event(byte key, byte scan, int flags, int extraInfo); 

và chạy một phân tích mã chống lại Microsoft Basic đúng đắn quy, tôi nhận được một cảnh báo CA1901. Về cơ bản, nó tuân thủ thông số thứ 4 intextraInfo hoạt động tốt trên nền tảng 32 bit nhưng loại số nguyên 64 bit được mong đợi trên nền tảng 64 bit.

Khi tôi sửa đổi mã vào dàiextraInfo, yêu cầu nền tảng 64-bit được đáp ứng nhưng nền tảng 32-bit được mong đợi một số nguyên 32-bit.

Làm thế nào để giải quyết tình huống khó xử này mà không ngăn chặn cảnh báo?

Trả lời

4

Bằng cách sử dụng một IntPtr mà là một loại nền tảng cụ thể được sử dụng để đại diện cho một con trỏ hoặc xử lý:

[DllImport("user32.dll")] 
static extern void keybd_event(byte key, byte scan, int flags, IntPtr extraInfo); 
Các vấn đề liên quan