Method and device for monitoring the creation and destruction of child processes within an application executing in a computer system
First Claim
1. A method for monitoring the creation and destruction of child processes within an application executing in a computer system controlled by an operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the method comprising:
- providing a list for storing existing child process database structures corresponding to child processes existing within the executing application;
determining when a new process is created during execution of the application;
retrieving a new process database structure corresponding to the new process;
retrieving, using the new process database structure, a parent process database structure corresponding to a parent process of the new process;
comparing the parent process database structure with the application process database structure;
identifying, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
adding, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and a virtual device driver for monitoring the creation and destruction of child processes or threads within an application executing in a computer system controlled by an operating system, such as Windows. A list is provided for storing existing child process database structures corresponding to child processes existing within the executing application. The list is checked periodically. If, when checked, the list has no entries, it is safe to assume that the existing child process and, possibly, related grandchild processes, have exited and execution of the application is complete. Other applications in a series of applications, for example, during the installation of a software program, may then be executed with minimal risk of corruption due to concurrent execution of the applications in the series.
-
Citations
65 Claims
-
1. A method for monitoring the creation and destruction of child processes within an application executing in a computer system controlled by an operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the method comprising:
-
providing a list for storing existing child process database structures corresponding to child processes existing within the executing application;
determining when a new process is created during execution of the application;
retrieving a new process database structure corresponding to the new process;
retrieving, using the new process database structure, a parent process database structure corresponding to a parent process of the new process;
comparing the parent process database structure with the application process database structure;
identifying, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
adding, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
determining when a process is terminated during execution of the application;
retrieving a terminated process database structure corresponding to the terminated process;
comparing the terminated process database structure with the existing child process database structures in the list;
identifying, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
removing, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
3. The method of claim 1 wherein the list of existing child process database structures is maintained in a buffer in the computer system, the method further comprising:
-
providing a pointer which points to one of the existing child process database structures in the list; and
after adding the new process database structure to the list, moving the pointer to point to the new process database structure.
-
-
4. The method of claim 2 wherein the list of existing child process database structures is maintained in a buffer in the computer system, the method further comprising:
-
providing a pointer which points to one of the existing child process database structures in the list;
after adding the new process database structure to the list, moving the pointer to point to the new process database structure; and
after removing the terminated process database structure from the list, moving the pointer to point to one of the existing child process database structures most recently added to the list.
-
-
5. The method of claim 4 wherein the pointer is maintained in a counter in the computer system, and wherein:
-
moving the pointer to point to the new process database structure includes incrementing the counter; and
moving the pointer to point to the existing child process most recently added to the list includes decrementing the counter.
-
-
6. The method of claim 2 wherein the executing application is one of a series of applications stored within the computer system for execution, the method further comprising:
-
periodically determining whether the list includes any existing child process database structures; and
executing, if the list includes no existing child process database structures, a next application in the series of applications.
-
-
7. The method of claim 5 wherein the executing application is one of a series of applications stored within the computer system for execution, the method further comprising:
-
periodically determining whether the counter has a value of zero; and
executing, if the counter has a value of zero, a next application in the series of applications.
-
-
8. The method of claim 6 wherein the series of applications is at least a portion of an installation program.
-
9. The method of claim 1 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing the new process database structure.
-
10. The method of claim 9 wherein determining when the new process is created includes receiving the Create_Thread signal.
-
11. The method of claim 9 wherein retrieving the new process database structure includes calling the Get_Current_Process_Handle_function.
-
12. The method of claim 9 wherein retrieving the parent process database structure includes using a pointer in the new process database structure which identifies the parent process database structure.
-
13. The method of claim 2 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, and a system process termination function for terminating the process and thereupon providing a Terminate_Thread signal, and a Get_Current_Process_Handle function for providing the terminated process database structure.
-
14. The method of claim 13 wherein determining when the process is terminated includes receiving the Terminate_Thread signal.
-
15. The method of claim 13 wherein retrieving the terminated process database structure includes calling the Get_Current_Process_Handle function.
-
16. A method for monitoring the creation and destruction of child processes within an application executing in a computer system controlled by a Windows operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the Windows operating system having a system process creation function for creating a new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing, when called a new process database structure corresponding to the new process, the method comprising:
-
providing a list for storing existing child process database structures corresponding to child processes existing within the executing application;
determining, upon receiving the Create_Thread signal, that the new process has been created;
calling, after determining that the new process has been created, the Get_Current_Proccess_Handle function to retrieve the new process database structure;
identifying, using a pointer in the new process database structure, a parent process database structure corresponding to a parent process of the new process;
comparing the parent process database structure with the application process database structure;
identifying, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
adding, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (17)
determining, upon receiving the Terminate Thread signal, that the process has been terminated;
calling, after determining that the process has been terminated, the Get_Current_Proccess Handle function to retrieve the terminated process database structure;
comparing the terminated process database structure with the existing child process database structures in the list;
identifying, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
removing, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
18. A virtual device driver situated in a storage medium of a computer system for monitoring the creation and destruction of child processes within an application executing in the computer system controlled by an operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, a list provided for storing existing child process database structures corresponding to child processes existing within the executing application, the virtual device driver comprising:
-
a determining part which determines when a new process is created during execution of the application;
a calling part which;
(i) retrieves a new process database structure corresponding to the new process, and (ii) retrieves, using the new process database structure, a parent process database structure corresponding to a parent process of the new process;
a comparing part which compares the parent process database structure with the application process database structure;
an identifier part which identifies, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
an adding part which adds, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25)
a determining part which determines when a process is terminated during execution of the application;
a calling part which retrieves a terminated process database structure corresponding to the terminated process;
a comparing part which compares the terminated process database structure with the existing child process database structures in the list;
an identifier part which identifies, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
a removing part which removes, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
20. The virtual device driver of claim 18 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing the new process database structure.
-
21. The virtual device driver of claim 20 wherein the determining part is in communication with the system process creation function and determines when the new process is created by receiving the Create_Thread signal.
-
22. The virtual device driver of claim 20 wherein the calling part is in communication with the Get_Current_Process_Handle function and retrieves the new process database structure by calling the Get_Current_Process_Handle function.
-
23. The virtual device driver of claim 19 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, and a system process termination function for terminating the process and thereupon providing a Terminate_Thread signal, and a Get_Current_Process_Handle function for providing the terminated process database structure.
-
24. The virtual device driver of claim 23 wherein the determining part is in communication with the system process termination function and determines when the process is terminated by receiving the Terminate_Thread signal.
-
25. The virtual device driver of claim 23 wherein the calling part is in communication with the Get_Current_Process_Handle function and retrieves the terminated process database structure by calling the Get_Current_Process_Handle function.
-
26. A virtual device driver situated in a storage medium of a computer system for monitoring the creation and destruction of child processes within an application executing in the computer system controlled by a Windows operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the Windows operating system having a system process creation function for creating a new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing, when called a new process database structure corresponding to the new process, a list provided in the computer system for storing existing child process database structures corresponding to child processes existing within the executing application, the virtual device driver comprising:
-
a determining part in communication with the system process creation function which determines, upon receiving the Create_Thread signal, that the new process has been created;
a calling part which;
(i) calls the Get_Current_Proccess_Handle function to retrieve the new process database structure, and (ii) retrieves, using a pointer in the new process database structure, a parent process database structure corresponding to a parent process of the new process;
a comparing part which compares the parent process database structure with the application process database structure;
an identifier part which identifies, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
an adder part which adds, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (27)
a determining part which determines, upon receiving the Terminate_Thread signal, that the process has been terminated;
a calling part which calls the Get_Current_Proccess Handle function to retrieve the terminated process database structure;
a comparing part which compares the terminated process database structure with the existing child process database structures in the list;
an identifier part which identifies, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
a removing part which removes, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
28. A processor readable storage medium having processor readable code embodied on the processor readable storage medium, the processor readable code for programming a processor to perform a method of monitoring the creation and destruction of child processes within an application executing in a computer system controlled by an operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the method comprising:
-
providing a list for storing existing child process database structures corresponding to child processes existing within the executing application;
determining when a new process is created during execution of the application;
retrieving a new process database structure corresponding to the new process;
retrieving, using the new process database structure, a parent process database structure corresponding to a parent process of the new process;
comparing the parent process database structure with the application process database structure;
identifying, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
adding, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
determining when a process is terminated during execution of the application;
retrieving a terminated process database structure corresponding to the terminated process;
comparing the terminated process database structure with the existing child process database structures in the list;
identifying, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
removing, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
30. The processor readable storage medium of claim 28 wherein the list of existing child process database structures is maintained in a buffer in the computer system, the method further comprising:
-
providing a pointer which points to one of the existing child process database structures in the list; and
after adding the new process database structure to the list, moving the pointer to point to the new process database structure.
-
-
31. The processor readable storage medium of claim 28 wherein the list of existing child process database structures is maintained in a buffer in the computer system, the method further comprising:
-
providing a pointer which points to one of the existing child process database structures in the list;
after adding the new process database structure to the list, moving the pointer to point to the new process database structure; and
after removing the terminated process database structure from the list, moving the pointer to point to one of the existing child process database structures most recently added to the list.
-
-
32. The processor readable storage medium of claim 28 wherein the pointer is maintained in a counter in the computer system, and wherein:
-
moving the pointer to point to the new process database structure includes incrementing the counter; and
moving the pointer to point to the existing child process most recently added to the list includes decrementing the counter.
-
-
33. The processor readable storage medium of claim 28 wherein the executing application is one of a series of applications stored within the computer system for execution, the method further comprising:
-
periodically determining whether the list includes any existing child process database structures; and
executing, if the list includes no existing child process database structures, a next application in the series of applications.
-
-
34. The processor readable storage medium of claim 28 wherein the executing application is one of a series of applications stored within the computer system for execution, the method further comprising:
-
periodically determining whether the counter has a value of zero; and
executing, if the counter has a value of zero, a next application in the series of applications.
-
-
35. The processor readable storage medium of claim 34 wherein the series of applications is at least a portion of an installation program.
-
36. The processor readable storage medium of claim 28 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing the new process database structure.
-
37. The processor readable storage medium of claim 28 wherein determining when the new process is created includes receiving the Create_Thread signal.
-
38. The processor readable storage medium of claim 28 wherein retrieving the new process database structure includes calling the Get_Current_Process_Handle function.
-
39. The processor readable storage medium of claim 28 wherein retrieving the parent process database structure includes using a pointer in the new process database structure which identifies the parent process database structure.
-
40. The processor readable storage medium of claim 30 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, and a system process termination function for terminating the process and thereupon providing a Terminate_Thread signal, and a Get_Current_Process_Handle function for providing the terminated process database structure.
-
41. The processor readable storage medium of claim 40 wherein determining when the process is terminated includes receiving the Terminate_Thread signal.
-
42. The processor readable storage medium of claim 40 wherein retrieving the terminated process database structure includes calling the Get_Current_Process_Handle function.
-
43. A processor readable storage medium having processor readable code embodied on the processor readable storage medium, the processor readable code for programming a processor to perform a method for monitoring the creation and destruction of child processes within an application executing in a computer system controlled by a Windows operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the Windows operating system having a system process creation function for creating a new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing, when called a new process database structure corresponding to the new process, the method comprising:
-
providing a list for storing existing child process database structures corresponding to child processes existing within the executing application;
determining, upon receiving the Create_Thread signal, that the new process has been created;
calling, after determining that the new process has been created, the Get_Current_Proccess_Handle function to retrieve the new process database structure;
identifying, using a pointer in the new process database structure, a parent process database structure corresponding to a parent process of the new process;
comparing the parent process database structure with the application process database structure;
identifying, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
adding, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (44)
determining, upon receiving the Terminate_Thread signal, that the process has been terminated;
calling, after determining that the process has been terminated, the Get_Current_Proccess Handle function to retrieve the terminated process database structure;
comparing the terminated process database structure with the existing child process database structures in the list;
identifying, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
removing, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
45. A virtual device driver situated in a storage medium of a computer system for monitoring the creation and destruction of child processes within an application executing in the computer system controlled by an operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, a list provided for storing existing child process database structures corresponding to child processes existing within the executing application, the virtual device driver comprising:
-
determining means for determining when a new process is created during execution of the application;
calling means for;
(i) retrieving a new process database structure corresponding to the new process, and (ii) retrieving, using the new process database structure, a parent process database structure corresponding to a parent process of the new process;
comparing means for comparing the parent process database structure with the application process database structure;
identifier means for identifying, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
adding means for adding, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52)
determining means for determining when a process is terminated during execution of the application;
calling means for retrieving a terminated process database structure corresponding to the terminated process;
comparing means for comparing the terminated process database structure with the existing child process database structures in the list;
identifier means for identifying, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
removing means for removing, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
47. The virtual device driver of claim 45 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing the new process database structure.
-
48. The virtual device driver of claim 47 wherein the determining means is in communication with the system process creation function and determines when the new process is created by receiving the Create_Thread signal.
-
49. The virtual device driver of claim 47 wherein the calling means is in communication with the Get_Current_Process_Handle function and retrieves the new process database structure by calling the Get_Current_Process_Handle function.
-
50. The virtual device driver of claim 46 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, and a system process termination function for terminating the process and thereupon providing a Terminate_Thread signal, and a Get_Current_Process_Handle function for providing the terminated process database structure.
-
51. The virtual device driver of claim 50 wherein the determining means is in communication with the system process termination function and determines when the process is terminated by receiving the Terminate_Thread signal.
-
52. The virtual device driver of claim 50 wherein the calling means is in communication with the Get_Current_Process_Handle function and retrieves the terminated process database structure by calling the Get_Current_Process_Handle function.
-
53. A virtual device driver situated in a storage medium of a computer system for monitoring the creation and destruction of child processes within an application executing in the computer system controlled by a Windows operating system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the Windows operating system having a system process creation function for creating a new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing, when called a new process database structure corresponding to the new process, a list provided in the computer system for storing existing child process database structures corresponding to child processes existing within the executing application, the virtual device driver comprising:
-
determining means in communication with the system process creation function for determining, upon receiving the Create_Thread signal, that the new process has been created;
calling means for;
(i) calling the Get_Current_Proccess_Handle function to retrieve the new process database structure, and (ii) retrieving, using a pointer in the new process database structure, a parent process database structure corresponding to a parent process of the new process;
comparing means for comparing the parent process database structure with the application process database structure;
identifier means for identifying, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
adder means for adding, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (54)
determining means for determining, upon receiving the Terminate_Thread signal, that the process has been terminated;
calling means for calling the Get_Current_Proccess Handle function to retrieve the terminated process database structure;
comparing means for comparing the terminated process database structure with the existing child process database structures in the list;
identifier means for identifying, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
removing means for removing, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
55. A method for monitoring the creation and destruction of child processes within a first application executing in a computer system controlled by an operating system, a second application stored on a storage medium in the computer system for execution, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the method comprising:
-
providing a list for storing existing child process database structures corresponding to child processes existing within the executing application;
determining whether the list includes any existing child process database structures; and
executing, if the list includes no existing child process database structures, the second application.
-
-
56. A computer system having an application stored therein for execution and controlled by an operating system, a list provided in the computer system for storing existing child process database structures corresponding to child processes existing within the executing application, the system comprising:
-
a processor;
a storage medium;
a virtual device driver situated in the storage medium for monitoring the creation and destruction of child processes within the application when executing in the computer system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure, the virtual device driver comprising;
a determining part which determines when a new process is created during execution of the application;
a calling part which;
(i) retrieves a new process database structure corresponding to the new process, and (ii) retrieves, using the new process database structure, a parent process database structure corresponding to a parent process of the new process;
a comparing part which compares the parent process database structure with the application process database structure;
an identifier part which identifies, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
an adding part which adds, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (57, 58, 59, 60, 61, 62, 63)
a determining part which determines when a process is terminated during execution of the application;
a calling part which retrieves a terminated process database structure corresponding to the terminated process;
a comparing part which compares the terminated process database structure with the existing child process database structures in the list;
an identifier part which identifies, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
a removing part which removes, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
-
58. The computer system of claim 56 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing the new process database structure.
-
59. The computer system of claim 58 wherein the determining part of the virtual device driver is in communication with the system process creation function and determines when the new process is created by receiving the Create_Thread signal.
-
60. The computer system of claim 58 wherein the calling part of the virtual device driver is in communication with the Get_Current_Process_Handle function and retrieves the new process database structure by calling the Get_Current_Process_Handle function.
-
61. The computer system of claim 57 wherein the operating system is a Windows operating system having a system process creation function for creating the new process and thereupon providing a Create_Thread signal, and a system process termination function for terminating the process and thereupon providing a Terminate_Thread signal, and a Get_Current_Process_Handle function for providing the terminated process database structure.
-
62. The computer system of claim 61 wherein the determining part of the virtual device driver is in communication with the system process termination function and determines when the process is terminated by receiving the Terminate_Thread signal.
-
63. The computer system of claim 61 wherein the calling part of the virtual device driver is in communication with the Get_Current_Process_Handle function and retrieves the terminated process database structure by calling the Get_Current_Process_Handle function.
-
64. A computer system having an application stored therein for execution and controlled by a Windows operating system, the Windows operating system having a system process creation function for creating a new process and thereupon providing a Create_Thread signal, the operating system further having a Get_Current_Process_Handle function for providing, when called a new process database structure corresponding to the new process, a list provided in the computer system for storing existing child process database structures corresponding to child processes existing within the executing application, the system comprising:
-
a processor;
a storage medium;
a virtual device driver situated in the storage medium for monitoring the creation and destruction of child processes within the application when executing in the computer system, each child process having a corresponding child process database structure, the executing application having a corresponding application process database structure the virtual device driver comprising;
a determining part in communication with the system process creation function which determines, upon receiving the Create_Thread signal, that the new process has been created;
a calling part which;
(i) calls the Get_Current_Proccess_Handle function to retrieve the new process database structure, and (ii) retrieves, using a pointer in the new process database structure, a parent process database structure corresponding to a parent process of the new process;
a comparing part which compares the parent process database structure with the application process database structure;
an identifier part which identifies, if the parent process database structure is the same as the application process database structure, the new process as an existing child process; and
an adder part which adds, if the new process is identified as the existing child process, the new process database structure to the list of existing child process database structures. - View Dependent Claims (65)
a determining part which determines, upon receiving the Terminate_Thread signal, that the process has been terminated;
a calling part which calls the Get_Current_Proccess Handle function to retrieve the terminated process database structure;
a comparing part which compares the terminated process database structure with the existing child process database structures in the list;
an identifier part which identifies, if the terminated process database structure is the same as one of the existing child process database structures, the terminated process as a terminated child process; and
a removing part which removes, if the terminated process is identified as the terminated child process, the terminated process database structure from the list of existing child process database structures.
-
Specification