2009-07-15 29 views

Trả lời

15

Có - Go "Debug/New breakpoint/Break tại chức năng ..." và dán này:

{,,kernel32.dll}[email protected] 

vào hộp Function.

Giả định bản dựng Unicode - thay thế W bằng A cho các bản dựng ANSI.

Một chút giải thích: đoạn @40 là một phần của quy ước gọi điện thoại stdcall và cung cấp số byte tham số mà hàm đó thực hiện. Trong win32, điều này hầu như luôn luôn gấp 4 lần số tham số. Dấu gạch dưới cũng là một phần của quy ước gọi hàm stdcall.

Một lưu ý liên quan: đôi khi tên của hàm như được thấy bởi debugger khác với tên thật của nó - xem bài viết trên blog này cho một ví dụ, và làm thế nào để tìm tên quyền sử dụng: Setting a Visual Studio breakpoint on a Win32 API function in user32.dll

+4

Thà phá vỡ cả hai. Do hành vi non-const funky của CreateProcessW, ngay cả các ứng dụng Unicode có thể gọi CreateProcessA. Macro CreateProcess không ẩn hai khai báo hàm bên dưới để chúng vẫn được gọi. Điều này cũng áp dụng cho các macro tương tự cho các cặp chức năng khác. – MSalters

+2

Một điều nữa cần lưu ý là bạn phải tải xuống các ký hiệu 'kernel32.dll' trước. Bạn có thể thực hiện điều đó từ menu ngữ cảnh bên trong Debug/Windows/Modules. – ulidtko

+0

giải thích về cú pháp {,,,} là ở đây: https://msdn.microsoft.com/en-us/library/wztycb7f(v=vs.100).aspx lưu ý rằng vì lý do gì đó bài viết không tồn tại visual studio cao hơn so với vs2010 –

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