fn scan_vtable(&mut self, iface: &Interface) -> Result<Vec<Function>> {
        let vtable = self
            .process
            .virt_mem
            .virt_read_addr32(iface.address.into())?;
        if vtable.is_null() {
            return Err(Error::Other("invalid vtable pointer"));
        }
        info!(
            "scanning vtable of interface {}/{} at 0x{:x}",
            iface.module_info.name, iface.name, vtable
        );

        vtable::scan_vtable(&mut self.process, &self.interface_manager, vtable)
    }
/// Scans the VTable of a Source Engine Interface for potential hooks
Scans the VTable of a Source Engine Interface for potential hooks
Scans the VTable of a Source Engine Interface for potential hooks
fn scan_vtable(&mut self, iface: &Interface) -> Result<Vec<Function>> {
        let vtable = self
            .process
            .virt_mem
            .virt_read_addr32(iface.address.into())?;
        if vtable.is_null() {
            return Err(Error::Other("invalid vtable pointer"));
        }
        info!(
            "scanning vtable of interface {}/{} at 0x{:x}",
            iface.module_info.name, iface.name, vtable
        );
        vtable::scan_vtable(&mut self.process, &self.interface_manager, vtable)
    }
fn scan_vtable ( & mut self , iface : & Interface ) -> Result < Vec < Function > > { let vtable = self . process . virt_mem . virt_read_addr32 ( iface . address . into ( ) ) ? ; if vtable . is_null ( ) { return Err ( Error :: Other ( " " ) ) ; } info ! ( " " iface module_info name iface name vtable ) ; vtable :: scan_vtable ( & mut self . process , & self . interface_manager , vtable ) }
Scans the VTable of a Source Engine Interface for potential hooks
Scans the VTable of a Source Engine Interface for potential hooks
&mut self
iface
&Interface
&mut self
iface
&Interface