IP Library Granted Patent US 10,922,249
Granted Patent B2
US 10,922,249 · App. 16/248,451 · Granted Feb 16, 2021

Input/output control code filter

Inventors: Cymonique Anita Kilmer (Kirkland, WA); Conal McGarvey (Seattle, WA); Andrew D. Mikesell (Kirkland, WA); Sebastian Lerner (Seattle, WA); Prashant Chahar (Snoqualmie, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F13/20G06F9/44589
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,922,249
App. No.
16/248,451
Granted
Feb 16, 2021
Kind
B2
Abstract

Systems and methods are described for verifying functionality of a computing device. A plurality of I/O control codes usable to configure specified actions for a device under test is received. The I/O control codes that were completed without generating an error are determined. The I/O control codes that completed without generating an error and associated binding information are recorded. The I/O control codes that completed without generating an error and associated binding information are stored in a format usable for subsequent replay of the stored I/O control codes.

Claims (30)

1. A computer-implemented method for verifying functionality of one or more device drivers running on a computing device, wherein the device drivers are accessible via an input/output control (IOCTL) that executes a system call for device-specific operations for a device under test that is controlled by the device drivers, the method comprising:

receiving a plurality of IOCTLs usable to configure, from user space, specified system calls to be executed in kernel space for the device under test, the system calls directed to the one or more drivers associated with the device under test;

executing a filter function configured to determine which of IOCTLs were completed without generating an error and caused the driver to perform a specified function, thereby indicating that the specified function is installed and available in the device under test;

recording the IOCTLs and associated binding information that perform a specified action without generating an error; and

storing the IOCTLs that completed without generating an error and associated binding information in a format usable for subsequent replay of the stored IOCTLs.

2. The method according to claim 1 , further comprising recording I/O request packets that completed without generating an error.

3. The method according to claim 1 , further comprising replaying the recorded IOCTLs.

4. The method according to claim 3 , further comprising replaying the recorded IOCTLs for a different device under the same class.

5. The method according to claim 1 , wherein the recording is performed by a recording executable module that is local to the device under test.

6. The method according to claim 2 , further comprising storing an input buffer length stored in the I/O request packets.

7. The method according to claim 1 , further comprising storing an input buffer.

8. The method according to claim 2 , further comprising storing an output buffer length stored in the I/O request packets.

9. The method according to claim 1 , further comprising storing an output buffer.

10. The method according to claim 2 , further comprising storing a final status of the I/O request packets.

11. The method according to claim 2 , further comprising storing a returned length stored in the I/O request packets.

12. A system configured to verify functionality of one or more device drivers running on a computing device, wherein the device drivers are accessible via an input/output control (IOCTL) that executes a system call for device-specific operations for a device under test that is controlled by the device drivers, the system comprising:

at least one memory having stored therein computer instructions that, upon execution by one or more processors of the system, at least cause the system to:

receive a file comprising a plurality of IOCTLs usable to configure, from user space, specified system calls to be executed in kernel space for the device under test, the system calls directed to one or more drivers associated with the device under test, wherein the IOCTLs were previously recorded based on a determination that the IOCTLs were completed by a test utility for the device under test without generating an error and caused the one or more drivers to perform a specified function, thereby indicating that the specified function is installed and available in the device under test; and

play back and execute the IOCTLs for a compatible device under test.

13. The system of claim 12 , further comprising computer instructions that, upon execution by one or more processors of the system, at least cause the system to play back the IOCTLs in parallel for a plurality of compatible devices under test.

14. The system of claim 12 , further comprising computer instructions that, upon execution by one or more processors of the system, at least cause the system to render an interface configured to allow a user to edit the IOCTLs.

15. The system of claim 12 , further comprising computer instructions that, upon execution by one or more processors of the system, at least cause the system to render an interface configured to allow a user to merge the IOCTLs.

16. A computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by one or more processors of a computing device, cause the computing device to perform operations comprising:

running a plurality of IOCTLs to cause specified actions for one or more device drivers running on a device under test, wherein the IOCTLs are configured from user space and the actions are executed in kernel space, wherein the device drivers are accessible via the IOCTLs, and the IOCTLs execute system calls for device-specific operations for the device under test;

recording IOCTLs that completed without generating an error and caused the driver to perform a specified function, thereby indicating that the specified function is installed and available in the device under test; and

storing the IOCTLs that completed without generating an error and associated binding information in a format usable for subsequent replay of the stored IOCTLs.

17. The computer-readable storage medium of claim 16 , further comprising computer-executable instructions stored thereupon which, when executed by one or more processors of a computing device, cause the computing device to perform operations comprising recording I/O request packets that completed without generating an error.

18. The computer-readable storage medium of claim 17 , further comprising computer-executable instructions stored thereupon which, when executed by one or more processors of a computing device, cause the computing device to perform operations comprising storing an input buffer length stored in the I/O request packets.

19. The computer-readable storage medium of claim 17 , further comprising computer-executable instructions stored thereupon which, when executed by one or more processors of a computing device, cause the computing device to perform operations comprising storing an input buffer.

20. The computer-readable storage medium of claim 17 , further comprising computer-executable instructions stored thereupon which, when executed by one or more processors of a computing device, cause the computing device to perform operations comprising storing an output buffer length stored in the I/O request packets and the output buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2019
From: KILMER, CYMONIQUE ANITA; MCGARVEY, CONAL; MIKESELL, ANDREW D.; LERNER, SEBASTIAN; CHAHAR, PRASHANT
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 048015/0693 →
Continuity (1)
Related Publication 20200226082A1 · Jul 16, 2020