Claims
- 1. A blocking device connected between a host and a storage device, the blocking device comprising:
an interface emulator configured to emulate an interface presented by the storage device; an interface for connecting to the storage device; and a processor coupled to the interface emulator and the interface, the processor examining commands received through the interface emulator that are generated by the host and intended for the storage device, the processor allowing only those of the commands that match a predetermined set of commands to pass to the storage device via the interface.
- 2. The blocking device of claim 1, wherein the commands in the predetermined set of commands are commands recognized by the processor as not modifying a storage state of the storage device.
- 3. The blocking device of claim 1, wherein the interface is an integrated device electronics (IDE) interface for a disk drive.
- 4. The blocking device of claim 1, wherein the processor receives data back from the storage device in response to the commands passed to the storage device and forwards the received data to the host through the interface emulator.
- 5. The blocking device of claim 4, wherein, when the commands include a capabilities request command relating to the storage device, the processor modifies data received from the storage device relating to the capabilities request command to reflect the capability of the storage device as affected by the presence of the blocking device.
- 6. The blocking device of claim 1, wherein the processor drops those of the commands that do not match the predetermined set of commands, and, after dropping one of the matching commands, returns status information to the host that indicates that the dropped command was successfully completed.
- 7. The blocking device of claim 1, further comprising:
additional interfaces for connecting to additional storage devices.
- 8. The blocking device of claim 7, wherein each of the interfaces is independently coupled to the processor.
- 9. The blocking device of claim 1, further including light emitting diodes (LEDs) coupled to the processor and configured to transmit status information relating to the status of the blocking device.
- 10. The blocking device of claim 1, further including:
a temporary storage device coupled to the processor, the processor storing data from the host corresponding to the dropped commands in the temporary storage device.
- 11. The blocking device of claim 10, wherein when read commands are received from the host that refer to data stored in the temporary storage device, the processor returns the data from the temporary storage device to the host.
- 12. The blocking device of claim 1, further including:
a user configurable memory connected to the processor, the user configurable memory storing instructions that define protected areas on the storage device, the processor dropping those of the commands that match the predetermined set of commands when the matching commands are commands that would otherwise modify the protected areas on the storage device.
- 13. The blocking device of claim 1, wherein the processor examines feature information from the storage device that relate to features supported by the storage device and the processor zeroes any features not supported by the processor before making the feature information available to the host.
- 14. The blocking device of claim 1, wherein the processor supports a removable drive feature set with the host and the processor returns a write protected error code to the host when the processor drops one of the commands.
- 15. A device comprising:
an IDE emulator component, the IDE emulator component including a physical interface designed to engage a first cable that connects to a host that controls an IDE storage device; an IDE interface configured to engage a second cable that connects to the IDE storage device; and a logic circuit connecting the IDE emulator component to the IDE interface and configured to: compare commands received at the IDE emulator component to a predetermined set of commands, and to block transmission of one or more of the commands from the IDE emulator component to the IDE interface when the comparison indicates that the logic circuit does not recognize the received command or the comparison indicates that the received command is a command that modifies the storage device.
- 16. The device of claim 15, wherein the logic circuit includes:
an embedded processor, a computer memory connected to the embedded processor, the embedded processor loading program instructions from the computer memory during device initialization, and a programmable logic device (PLD) coupled to the embedded processor, the IDE emulator component, and the IDE interface.
- 17. The device of claim 16, wherein the PLD includes:
a bus driver component configured to transfer data between the embedded processor, the IDE emulator component, and the IDE interface, a first dual port memory buffer connected between the bus driver and the IDE interface, a first set of communication lines connecting the bus driver directly to the IDE interface and indirectly to the IDE interface through the first dual port memory buffer, a second dual port memory buffer connected between the bus driver and the IDE emulator component, and a second set of communication lines connecting the bus driver directly to the IDE emulator component and indirectly to the IDE emulator component through the second dual port memory buffer.
- 18. The device of claim 15, wherein the commands in the predetermined set of commands are commands that modify a storage state of the IDE storage device.
- 19. The device of claim 15, wherein when the logic circuit receives data back from the IDE storage device the logic circuit forwards the received data to the host through the IDE emulator component.
- 20. The device of claim 19, wherein, when the comparison indicates the command includes a capabilities request command relating to the IDE storage device, the logic circuit modifies data received from the IDE storage device relating to the capabilities request command to reflect the capability of the IDE storage device as affected by the presence of the device.
- 21. The device of claim 15, wherein the logic circuit, after blocking transmission of one of the commands, returns status information to the host that indicates that the blocked command was successfully executed.
- 22. The device of claim 15, further comprising:
a second interface for connecting to a second IDE storage device.
- 23. The device of claim 22, wherein each of the interfaces is independently coupled to the logic circuit.
- 24. The device of claim 15, further including light emitting diodes (LEDs) coupled to the logic circuit and configured to transmit status information relating to the status of the device.
- 25. The device of claim 15, further including:
a temporary storage device coupled to the logic circuit, the logic circuit storing data corresponding to blocked commands in the temporary storage device.
- 26. The device of claim 25, wherein when read commands are received from the host that refer to data stored in the temporary storage device, the logic circuit returns the data from the temporary storage device to the host.
- 27. The device of claim 15, further including:
a user configurable memory connected to the logic circuit, the user configurable memory storing instructions that define protected areas on the IDE storage device, the logic circuit blocking received commands that match would modify the protected areas on the IDE storage device.
- 28. The device of claim 15, wherein the logic circuit examines feature information from the IDE storage device that relates to features supported by the IDE storage device and removes any feature information not supported by the device before making the feature information available to the host.
- 29. A device comprising:
an emulator component, the emulator component including a physical interface designed to connect to a host that controls a storage device; an interface configured to connect to the storage device; and a logic circuit connecting the emulator component to the interface and configured to compare information received at the emulator component to a computer virus definition file and to block transmission of the information from the emulator component to the interface when the comparison indicates a match with the computer virus definition file.
- 30. The device of claim 29, wherein the logic circuit includes:
an embedded processor; a computer memory connected to the embedded processor, the embedded processor loading program instructions from the computer memory during device initialization; and a programmable logic device (PLD) coupled to the embedded processor, the emulator component, and the interface.
- 31. The device of claim 29, wherein the interface is an Integrated Device Electronics (IDE) interface and the storage device is an IDE disk drive.
- 32. A method comprising:
intercepting communications between a computer motherboard and a local non-volatile storage device for the motherboard; comparing commands in the communications between the motherboard and the storage device to a predetermined set of commands; forwarding selected ones of the commands to the storage device based on the comparison; and blocking selected other ones of the commands from being received by the storage device based on the comparison.
- 33. The method of claim 32, wherein the predetermined set of commands relate to commands that modify the storage device.
- 34. The method of claim 33, further comprising:
forwarding data from the storage device to the motherboard in response to a read command received from the motherboard and forwarded to the storage device.
- 35. The method of claim 32, wherein the storage device is an integrated device electronics (IDE) disk drive.
- 36. The method of claim 32, wherein the commands forwarded to the storage device include a capabilities request command, the method further comprising:
modifying data received from the storage device relating to the capabilities request command to reflect the capability of the storage device as modified by operation of the method.
- 37. The method of claim 36, further comprising, after blocking a command:
returning status information to the motherboard that indicates that the blocked command was successfully executed by the storage device.
- 38. A computer system comprising:
a host computer; a long-term storage device; and a blocking device coupled between the host computer and the storage device, the blocking device configured to:
intercept commands from the host to the storage device, block certain commands from reaching the storage device, and pass other ones of the commands to the storage device.
- 39. The computer system of claim 38, wherein the blocking device further includes:
an interface emulator configured to emulate the interface of the storage device to the host; and an interface configured to connect the blocking device to the storage device.
- 40. The computer system of claim 39, wherein the interface emulator emulates an Integrated Device Electronics (IDE) interface and the storage device is an IDE disk drive.
- 41. The computer system of claim 38, wherein the blocked commands are commands that would otherwise modify a storage state of the storage device.
- 42. The computer system of claim 38, wherein the blocking device receives data back from the storage device in response to one of the passed commands and forwards the received data to the host.
- 43. The computer system of claim 38, wherein, when the passed commands include a capabilities request command relating to the storage device, the blocking device modifies data received from the storage device relating to the capabilities request command to reflect the capability of the storage device as affected by the presence of the blocking device.
- 44. The computer system of claim 38, wherein the blocking device, after blocking one of the commands, returns status information to the host that indicates that the blocked command was successfully completed.
- 45. The computer system of claim 38, wherein the blocking device further includes light emitting diodes (LEDs) configured to transmit status information relating to the status of the blocking device.
- 46. The computer system of claim 38, wherein the blocking device further includes:
a temporary storage device, the blocking device storing data from the host corresponding to blocked commands in the temporary storage device.
- 47. The computer system of claim 46, wherein when read commands are received from the host that refer to data stored in the temporary storage device, the blocking device returns the data from the temporary storage device to the host.
- 48. The computer system of claim 38, wherein the blocking device further includes:
a user configurable memory, the user configurable memory storing instructions that define protected areas on the storage device, the blocking device dropping those of the commands that would otherwise modify the protected areas on the storage device.
- 49. A blocking device comprising:
means for intercepting communications between a host and a storage device; means for comparing commands in the communications between the host and the storage device to a predetermined set of commands; means for forwarding selected ones of commands in the intercepted communications to the storage device based on the comparison; and means for blocking selected other ones of the commands from being received by the storage device based on the comparison.
- 50. The blocking device of 49, wherein the commands blocked by the means for blocking relate to commands that modify the storage device.
- 51. The blocking device of 49, wherein the storage device is an integrated device electronics (IDE) disk drive.
- 52. The blocking device of 49, wherein the commands forwarded to the storage device include a capabilities request command, and the means for forwarding further comprises:
means for modifying data received from the storage device relating to the capabilities request command to reflect the capabilities of the blocking device.
- 53. The blocking device of 49, further comprising:
means for returning status information to the host that indicates that the blocked command was successfully executed by the storage device.
RELATED APPLICATION
[0001] This application claims priority under 35 U.S.C. § 119 based on U.S. Provisional Application No. 60/237,761, filed Sep. 29, 2000, the disclosure of which is incorporated herein by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60237761 |
Sep 2000 |
US |