Architecture for implementing PCMCIA card services under the windows operating system in enhanced mode

- Intel

An implementation of PCMCIA Card Services for the Windows operating system in enhanced mode. A Card Services dynamic linked library (DLL) was written which contains a library of C functions which perform the Card Services functions. The Card Services DLL maintains a Card Services database of the Card Services resources available such that the Card Services DLL can share the Card Services resources among clients of Card Services. Windows applications can call the functions in the Card Services DLL directly to access Card Services functions. The Card Services DLL posts messages to a Card Services Windows application to request a Card Services function be performed with background processing. The Card Services Windows application processes the Card Services function at a later time. A Card Services virtual device driver (V.times.D) provides system functions to the Card Services DLL. The Card Services V.times.D hooks the INT 1A software interrupt such that Card Services requests which use the register based binding in the PCMCIA Card Services specification are intercepted and directed to the Card Services DLL. The Card Services V.times.D also traps interrupts caused by PCMCIA socket adapters and calls the appropriate interrupt handling routine in the Card Services DLL.

Skip to:  ·  Claims  ·  References Cited  · Patent History  ·  Patent History

Claims

1. A computer implemented method for providing PCMCIA Card Services to a Windows application running on the Windows operating system or a DOS application running in a DOS virtual machine in said Windows operating system, said method comprising the steps of:

spawning a Card Services Background Processing application, said Card Services Background Processing application comprising a standard Windows application;
initializing a Card Services Dynamic Link Library, said Card Services Dynamic Link Library comprising a plurality of software functions corresponding to a plurality of Card Services functions such that each software function performs the requirements of the corresponding Card Services function;
calling a software function in a Card Services Dynamic Link Library from said Windows application if said Windows application needs Card Services;
posting a message containing a set of function parameters to said Card Services Background Processing application from said software function if said software function requires asynchronous processing;
calling a Card Services virtual device driver from said software function in said Card Services Dynamic Link Library, said Card Services virtual device driver performing Ring 0 operating system services for said Card Services Dynamic Link Library;
hooking a software interrupt such that said Card Services virtual device driver obtains control when said DOS application executes a software interrupt instruction; and
calling a software function in said Card Services Dynamic Link Library from said Card Services virtual device driver when said Card Services virtual device driver obtains control if said DOS application requests Card Services by executing said interrupt instruction.

2. The computer implemented method as claimed in claim 1, wherein said method further comprises the steps of:

returning from said first software function to said Card Services client application after posting said message to said Card Services Background Processing application.

3. The computer implemented method as claimed in claim 1, wherein said method further comprises the steps of:

calling a processing routine in said Dynamic Link Library from said Card Service Background Processing application to process said set of function parameters received by said Card Services Backgropund Processing Application;
calling a client callback routine in said Windows application from said processing routine in said Card Services Dynamic Link Library to inform said Windows application of a result generated by said Card Services function.

4. The computer implemented method as claimed in claim 1, wherein said Card Services Dynamic Link Library maintains a Card Services database containing a set of resources available to said Card Services Dynamic Link Library.

5. The computer implemented method as claimed in claim 1, wherein said method further comprises the step of:

calling a Socket Services software layer from said Card Services Dynamic Link Library to execute a Socket Services function, said step of calling a Socket Services software layer performed using a DOS Protected Mode Interface (DPMI) interface.

6. The computer implemented method as claimed in claim 1, wherein a callback into said DOS application running in said DOS Virtual machine is performed by the substeps of:

calling said Card Services virtual device driver from said Card Services Background Processing application when a callback into said DOS application running in said DOS Virtual machine must be performed; and
calling a callback routine in said DOS application running in said DOS Virtual machine from said Card Services virtual device driver using nested execution.

7. The computer implemented method as claimed in claim 1, wherein said method further comprises the steps of:

virtualizing an IRQ interrupt generated by a PCMCIA socket adapter such that said Card Services virtual device driver obtains control when said IRQ interrupt generated by said PCMCIA socket adapter occurs; and
handling said interrupt generated by a PCMCIA socket adapter by calling an interrupt handing function in said Card Services Dynamic Link Library from said Card Services virtual device driver when said Card Services virtual device driver obtains control after said IRQ interrupt generated by said PCMCIA socket adapter occurs.

8. The computer implemented method as claimed in claim 1, wherein said method further comprises the step of:

calling a Card Services interface in said Card Services virtual device driver using a virtual device driver service call to provide Card Services to other virtual device drivers.

9. In an IBM PC-compatible computer system, said IBM PC-compatible computer system having a PCMCIA socket adapter, said IBM PC-compatible computer system running a Windows operating system, an apparatus that provides PCMCIA Card Services to a Windows application running on the Windows operating system or a DOS application running in a DOS virtual machine in said Windows operating system, said apparatus comprising the elements of:

background processing means, said background processing means comprising a standard Windows application, said background processing means having a receive message queue for receiving messages containing a set of Card Services function parameters, said background processing means processing said set of Card Services function parameters;
Card Services function means, said Card Services function means comprising a dynamic link library with a plurality of software functions, said plurality of software functions corresponding to a plurality of Card Services functions such that each software function performs the requirements of the corresponding Card Services function;
system service means, said system service means comprising a Card Services virtual device driver running on said IBM PC-compatible computer system with an interface accessible by said Card Services function means, said Card Services virtual device driver providing Ring 0 operating system services to said Card Services function means;
software interrupt hooking means, said software interrupt hooking means obtaining control for said DOS application Card Services means when a DOS Card Services client application executes a software interrupt instruction; and
Card Services function calling means, said Card Services function calling means calling a software function in said Card Services function means from said DOS application Card Services means when said software interrupt hooking means obtains control after said software interrupt is executed by said DOS Card Services client application.

10. The apparatus as claimed in claim 9, wherein said apparatus further comprises:

client callback means, said client callback means informing Windows application of a result generated by said background processing means.

11. The apparatus as claimed in claim 9, wherein said Card Services function means maintains a Card Services database containing a set of resources available to said Card Services function means.

12. The apparatus as claimed in claim 9, wherein said apparatus further comprises:

Socket Services means, said Socket Services means performing hardware specific functions for said socket adapter, said Card Services function means accessing said Socket Services means using a DOS Protected Mode Interface (DPMI) interface.

13. The apparatus as claimed in claim 11, wherein said apparatus further comprises a DOS client callback means for performing a callback into said DOS application located in said DOS virtual machine, said DOS client callback means comprising:

callback transfer means, said callback transfer means transferring a result generated in said background processing means to said DOS client callback means; and
nested execution means, said nested execution means calling a callback routine in said Card Services client located in said DOS virtual machine from said DOS client callback means.

14. The apparatus as claimed in claim 9, wherein said apparatus further comprises a hardware interrupt handling means, said hardware interrupt handling means comprising:

interrupt virtualizing means, said interrupt virtualizing means virtualizing an interrupt generated by said PCMCIA socket adapter such that said hardware interrupt handling means obtains control when said interrupt generated by said PCMCIA socket adapter occurs; and
interrupt handling means, said interrupt handling means handling said interrupt generated by said PCMCIA socket adapter by calling an interrupt handing function in said Card Services function means when said hardware interrupt handling means obtains control after said interrupt generated by said PCMCIA socket adapter occurs.

15. The apparatus as claimed in claim 9, wherein said method further comprises the step of:

virtual device driver Card Services interface means, said virtual device driver Card Services interface means providing a Card Services interface to at least one virtual device driver in said Windows operating system, said virtual device driver Card Services interface means comprising a virtual device driver service call into said system service means.

16. A computer implemented method for providing PCMCIA Card Services to Windows application running on the Windows operating system or a DOS application running in a DOS virtual machine in said WindOws Operating system, said method comprising the steps of:

calling a software function in a Card Services Dynamic Link Library from said Windows application, said software function corresponding to a Card Services function such that said software function performs the requirements of the corresponding Card Services function; and
posting a message to a Card Services Background Processing application from said software function in said Card Services Dynamic Link Library when a Card Services function must be performed asynchronously, said Card Services Background Processing application comprising a standard Windows application; and
calling a Card Services virtual device driver from said software function in said Card Services Dynamic Link Library when a Card Services function needs Ring 0 operating system services;
hooking a software interrupt such that a DOS client handling routine in said Card Services virtual device driver obtains control when said DOS application executes a software interrupt instruction; and
calling a Card Services function in said Card Services Dynamic Link Library from said DOS client handling routine in said Card Services virtual device driver when said Card Services virtual device driver obtains control after said software interrupt instruction is executed by said DOS Card Services client application.

17. The computer implemented method as claimed in claim 16, wherein said method further comprises the step of: calling a client callback routine into said Windows application from said Card Services Background Processing application to inform said Windows application of a result asynchronously generated by said Card Services Background Processing application.

18. The computer implemented method as claimed in claim 17, wherein said method further comprises the step of:

maintaining a Card Services database in said Card Services Dynamic Link Library, said Card Services database containing a set of resources available to said Card Services Dynamic Link Library.

19. The computer implemented method as claimed in claim 18, wherein said method further comprises the step of:

calling a Socket Services software layer from said Card Services Dynamic Link Library to a perform a hardware related function, said step of calling said Socket Services software layer performed using a DOS Protected Mode Interface (DPMI) interface.

20. The computer implemented method as claimed in claim 16, wherein a callback into said DOS Card Services client application is performed by the substeps of:

calling said Card Services virtual device driver from said Card Services Background Processing application with a result of a Card Services function performed by said Card Services Background Processing application; and
calling a callback routine in said DOS Card Services client application from said Card Services virtual device driver using nested execution, said result of said Card Services function provided to said DOS Card Services client application located in said DOS Virtual machine.

21. The computer implemented method as claimed in claim 17, wherein said method further comprises the steps of:

virtualizing an IRQ interrupt generated by a PCMCIA socket adapter such that said Card Services virtual device driver obtains control when said IRQ interrupt generated by said PCMCIA socket adapter occurs; and
handling said interrupt generated by a PCMCIA socket adapter by calling an interrupt handing function in said Card Services Dynamic Link Library from said Card Services virtual device driver when said Card Services virtual device driver obtains control after said IRQ interrupt generated by said PCMCIA socket adapter occurs.

22. The computer implemented method as claimed in claim 17, wherein said method further comprises the step of:

calling a Card Services interface in said Card Services virtual device driver using a virtual device driver service call in said Card Services virtual device driver.

23. In a computer system running a Windows enhanced mode operating system, a computer implemented method for providing PCMCIA Card Services to Windows Card Services clients and to at least one DOS Card Services client application running in a DOS virtual machine such that said Card Services does not use real mode memory below a 640K boundary, said Card Services client running in a DOS virtual machine accessing Card Services using a software interrupt, said method comprising the steps of:

creating a Card Services Dynamic Link Library, said Card Services Dynamic Link Library comprising a plurality of software function that correspond to a plurality of Card Services functions, said Card Services Dynamic Link Library located in said system virtual machine; said Card Services Dynamic Link Library accessible to said Windows Card Services clients;
providing a Card Services virtual device driver, said Card Services virtual device driver performing Ring 0 operating system services for said Card Services Dynamic Link Library;
hooking said software interrupt with said Card Services virtual device driver such that said Card Services virtual device driver obtains control when said DOS Card Services client application executes a software interrupt instruction; and
calling a Card Services function in said Card Services Dynamic Link Library from said Card Services virtual device driver when said Card Services virtual device driver obtains control after said software interrupt instruction is executed by said DOS Card Services client application; and
posting a message containing said set of function parameters to a Card Services Background Processing application from said software function if said software function requires asynchronous processing.

24. A computer implemented method for providing a Card Services function to a Windows Card Services client and to at least one DOS Card Services client application running in a DOS virtual machine on the Windows operating system, said method comprising the steps of:

loading a set of registers with a set of Card Services function parameters from within said DOS Card Services client application;
executing a software interrupt instruction from said DOS Card Services client application to request said Card Services function;
hooking said software interrupt with a Card Services virtual device driver such that said Card Services virtual device driver obtains control when said DOS Card Services client application executes said software interrupt instruction; and
translating said set of Card Services function parameters within said Card Services virtual device driver into a set of protected mode Card Services function parameters;
suspending execution of said DOS virtual machine;
calling a software function in a Card Services Dynamic Link Library, said step of calling a software function providing said set of protected mode Card Services function parameters to said software function, said software function returning a set of protected mode return codes;
posting a message containing said set of function parameters to a Card Services Background Processing application from said software function if said software function requires asynchronous processing;
translating said set of protected mode return codes into a set of real mode return codes for said DOS Card Services client application;
unsuspending execution of said DOS virtual machine; and
returning from said Card Services virtual device driver to said DOS Card Services client application.

25. The computer implemented method as claimed in claim 24, said method comprising the steps of:

virtualizing an IRQ interrupt generated by a PCMCIA socket adapter such that said Card Services virtual device driver obtains control when said IRQ interrupt generated by said PCMCIA socket adapter occurs; and
executing a hardware interrupt routine in said Card Services virtual device driver when said IRQ interrupt generated by said PCMCIA socket adapter occurs, said hardware interrupt routine performing the following substeps;
scheduling a change to a system Virtual Machine if said system Virtual Machine is not running; and
posting a message to a Card Services Windows application for background processing.
Referenced Cited
U.S. Patent Documents
5175855 December 29, 1992 Putnam et al.
5212787 May 18, 1993 Baker et al.
5247681 September 21, 1993 Janis et al.
5319751 June 7, 1994 Garney
5369770 November 29, 1994 Thomason et al.
5375241 December 20, 1994 Walsh
Other references
  • Norton, Windows Device Drivers, C Users Journal Dec.1992 V 10, n 12 p. 43(17). Olsen, Making Windows Programs Talk, Windows-DOS Developers Journal, May 1992 V3 n5 p. 21(14). Nelson, Bimodal Interrupt Handling Under 80286 DOS Extenders, C Users Journal Dec. 1992 V 10 n 12 p. 20(12). Schulman, Call V.times.D Functions and VMM Services Easily Using OVR Generic V.times.D, Microsoft Systems Journal, Feb. 1993, V8 n2 p. 17(21). Olsen, Thomas W. Making Windows and DOS Programs Talk, Windows-DOS Developer's Journal, May 1992 V3 n5 pp. 21-34. Norton, Daniel A. Windows Device Drivers, The C Users Journal Dec. 1992, pp. 43-60. Publication of the Personal Computer Memory Card International Association (PCMCIA) entitled: Card Services--Release 1.11; Sunnyvale, California, Aug. 16, 1992, pp. 1-136. Publication of the Personal Computer Memory Card International Association (PCMCIA) entitled: PC-Compatible Socket Services Binding, Draft 2.00c; Sunnyvale, California, Sep. 12, 1992, pp. 1-18. Publication of the Personal Computer Memory Card International Association (PCMCIA) entitled: PCMCIA Socket Services Interface Specification, Draft 2.00c; Sunnyvale, California, Sep. 12, 1992, pp. 1-69.
Patent History
Patent number: 5696970
Type: Grant
Filed: Apr 15, 1996
Date of Patent: Dec 9, 1997
Assignee: Intel Corporation (Santa Clara, CA)
Inventors: David A. Sandage (Forest Grove, OR), James C. Stanley (Portland, OR), Stewart W. Hunt (Portland, OR), Arland D. Kunz (Beaverton, OR)
Primary Examiner: Lucien U. Toplu
Law Firm: Blakely, Sokoloff, Taylor & Zafman
Application Number: 8/631,950
Classifications
Current U.S. Class: 395/681; 395/682; 395/685; 395/833; 395/402; 395/282; 395/710; 395/828; 395/442
International Classification: G06F 1300; G06F 940;