Determines if the given memory area is a valid code or data buffer. @note: Returns always C{False} for kernel mode addresses. @see: L{mquery} @type address: int @param address: Memory address. @type size: int @param size: Number of bytes
(self, address, size)
| 2767 | return mbi.is_executable_and_writeable() |
| 2768 | |
| 2769 | def is_buffer(self, address, size): |
| 2770 | """ |
| 2771 | Determines if the given memory area is a valid code or data buffer. |
| 2772 | |
| 2773 | @note: Returns always C{False} for kernel mode addresses. |
| 2774 | |
| 2775 | @see: L{mquery} |
| 2776 | |
| 2777 | @type address: int |
| 2778 | @param address: Memory address. |
| 2779 | |
| 2780 | @type size: int |
| 2781 | @param size: Number of bytes. Must be greater than zero. |
| 2782 | |
| 2783 | @rtype: bool |
| 2784 | @return: C{True} if the memory area is a valid code or data buffer, |
| 2785 | C{False} otherwise. |
| 2786 | |
| 2787 | @raise ValueError: The size argument must be greater than zero. |
| 2788 | @raise WindowsError: On error an exception is raised. |
| 2789 | """ |
| 2790 | if size <= 0: |
| 2791 | raise ValueError("The size argument must be greater than zero") |
| 2792 | while size > 0: |
| 2793 | try: |
| 2794 | mbi = self.mquery(address) |
| 2795 | except WindowsError: |
| 2796 | e = sys.exc_info()[1] |
| 2797 | if e.winerror == win32.ERROR_INVALID_PARAMETER: |
| 2798 | return False |
| 2799 | raise |
| 2800 | if not mbi.has_content(): |
| 2801 | return False |
| 2802 | size = size - mbi.RegionSize |
| 2803 | return True |
| 2804 | |
| 2805 | def is_buffer_readable(self, address, size): |
| 2806 | """ |
no test coverage detected