(self,
                               context: interfaces.context.ContextInterface,
                               potential_layers: List[str],
                               progress_callback: constants.ProgressCallback = None)
return valid_kernel
Runs through the identified potential kernels and verifies their
        suitability.

        This carries out a scan using the pdb_signature scanner on a physical layer.  It uses the
        results of the scan to determine the virtual offset of the kernel.  On early windows implementations
        there is a fixed mapping between the physical and virtual addresses of the kernel.  On more recent versions
        a search is conducted for a structure that will identify the kernel's virtual offset.

        Args:
            context: Context on which to operate
            potential_kernels: Dictionary containing `GUID`, `age`, `pdb_name` and `mz_offset` keys
            progress_callback: Function taking a percentage and optional description to be called during expensive computations to indicate progress

        Returns:
            A dictionary of valid kernels
Runs through the identified potential kernels and verifies their
        suitability.
Runs through the identified potential kernels and verifies their suitability .
def determine_valid_kernel(self,
                               context: interfaces.context.ContextInterface,
                               potential_layers: List[str],
                               progress_callback: constants.ProgressCallback = None) -> Optional[ValidKernelType]:
        """Runs through the identified potential kernels and verifies their
        suitability.

        This carries out a scan using the pdb_signature scanner on a physical layer.  It uses the
        results of the scan to determine the virtual offset of the kernel.  On early windows implementations
        there is a fixed mapping between the physical and virtual addresses of the kernel.  On more recent versions
        a search is conducted for a structure that will identify the kernel's virtual offset.

        Args:
            context: Context on which to operate
            potential_kernels: Dictionary containing `GUID`, `age`, `pdb_name` and `mz_offset` keys
            progress_callback: Function taking a percentage and optional description to be called during expensive computations to indicate progress

        Returns:
            A dictionary of valid kernels
        """
        valid_kernel = None  # type: Optional[ValidKernelType]
        for virtual_layer_name in potential_layers:
            vlayer = context.layers.get(virtual_layer_name, None)
            if isinstance(vlayer, layers.intel.Intel):
                for method in self.methods:
                    valid_kernel = method(self, context, vlayer, progress_callback)
                    if valid_kernel:
                        break
        if not valid_kernel:
            vollog.info("No suitable kernels found during pdbscan")
        return valid_kernel
def determine_valid_kernel ( self , context : interfaces . context . ContextInterface , potential_layers : List [ str ] , progress_callback : constants . ProgressCallback = None ) -> Optional [ ValidKernelType ] : valid_kernel = None # type: Optional[ValidKernelType] for virtual_layer_name in potential_layers : vlayer = context . layers . get ( virtual_layer_name , None ) if isinstance ( vlayer , layers . intel . Intel ) : for method in self . methods : valid_kernel = method ( self , context , vlayer , progress_callback ) if valid_kernel : break if not valid_kernel : vollog . info ( "No suitable kernels found during pdbscan" ) return valid_kernel