Kernel-Mode Driver Shimming via Context Components

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional user-mode shimming systems cannot maintain multiple linkage configurations for different drivers, leading to loss of contextual information and limiting the reusability of shims across various applications.

Innovation Solution

A system and method that employs a context component with a hook and thunk mechanism to establish and maintain driver-specific context information, allowing common shims to provide fixes for multiple drivers by redirecting driver calls through a shim engine and diagnostic components.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If conventional user-mode shimming systems are used to insert functionality between API client and API service, then additional functionality can be provided, but the systems cannot maintain multiple linkage configurations for different drivers leading to loss of contextual information

Engineering Contradiction:
Improveability to maintain multiple linkage configurationsVSAvoidloss of contextual information
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The patent segments the shimming system into multiple context components, each maintaining a separate linkage configuration for different drivers. Instead of a single unified shim that loses context, the system creates individual context structures (including import address tables and procedure linkage information) for each driver that needs shimming. This segmentation allows each driver to retain its unique linkage configuration while still benefiting from the shimming functionality.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces context components as intermediary structures between the shimming system and the drivers. These context components act as mediators that preserve and manage the linkage configurations for multiple drivers simultaneously. The context component includes an import address table and procedure linkage information that bridges the gap between the shim code and the original driver-API interactions, preventing loss of contextual information.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If a common shim is created to fix a problem across multiple applications, then reusability is improved, but conventional systems cannot apply the same shim to different drivers with different linkage configurations

Engineering Contradiction:
Improvereusability of shims across driversVSAvoidcomplexity of maintaining driver-specific contexts
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent creates a universal shimming framework where a single shim implementation can serve multiple drivers with different linkage configurations. The context component is designed to be generic and adaptable, allowing the same shim code to work across different drivers by dynamically loading the appropriate context information. This universality enables one shim to fix problems across multiple applications and drivers without requiring driver-specific shim versions.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent utilizes parameter changes to adapt the shimming behavior to different drivers. The context component stores driver-specific parameters (such as import address table entries and procedure linkage information) that can be dynamically changed based on which driver is currently being shimmed. This allows a common shim to adjust its operation based on the specific driver context, maintaining reusability while handling driver-specific variations.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS7392527B2Driver-specific context for kernel-mode shimming
Publication Date: 2008.06.24 ZHIGU HLDG
  • US7392527B2 patent drawing
  • US7392527B2 patent drawing
  • US7392527B2 patent drawing

AI summary

The kernel is a shared environment. Accordingly, many different kernel-mode drivers utilize services provided by the kernel. Furthermore, when shimming of drivers is necessary, it is desirable to support shim reuse amongst drivers with similar problems or issues, rather than generating a customized shim for each driver. To facilitate kernel-mode shimming and shim reuse, context information needs to be retrieved and maintained so that shims can identify particular driver calls and preserve driver specific linkage information. The present invention accomplishes the forgoing by employing an intermediate structure, a content component, between a client or driver call and a common shared shim to provide the shim with contextual information.