The IOS provides drivers and clients with memory management and timer services. There are the following services:
ISP_ALLOC_MEM (3) | Allocate block from IOS memory. |
ISP_ASSOCIATE_DCB (6) | Associate DCB and relative drive number. |
ISP_CREATE_DCB (1) | Create DCB. |
ISP_CREATE_DDB (0) | Create DDB. |
ISP_CREATE_IOP (2) | Allocate IOP. |
ISP_DEALLOC_DDB (9) | Free DDB. |
ISP_DEALLOC_MEM (4) | Free block of IOS memory. |
ISP_DELETE_LDM_ENTRY (19) | Delete LDM entry. |
ISP_DESTROY_DCB (10) | Free DCB. |
ISP_DEVICE_ARRIVED (14) | Indicate that a device has arrived. |
ISP_DEVICE_REMOVED (13) | Indicate that a device has been removed. |
ISP_DISASSOCIATE_DCB (15) | Disassociate DCB and drive number. |
ISP_DRIVE_LETTER_PICK (16) | Pick a drive letter. |
ISP_FIND_LDM_ENTRY (18) | Find LDM entry. |
ISP_GET_DCB (7) | Return DCB for logical volume. |
ISP_GET_FIRST_NEXT_DCB (8) | Get first or next DCB. |
ISP_INSERT_CALLDOWN (5) | Insert calldown entry in DCB. |
ISP_QUERY_MATCHING_DCBS (11) | Ask for logical-to-physical info. |
ISP_QUERY_REMOVE_DCB (12) | Ask if we can remove a device. |
ISP_REGISTRY_READ (17) | Read registry. |
A driver can use an IOS service to carry out a task by calling the IOS service routine after pushing the address of a structure, called an IOS service packet (ISP), on the stack. The address of the IOS service routine is in the ILB_service_rtn member of the ILB. The content and format of the structure to pass to the routine varies from service to service, but all structures start with a standard header as defined by the ISP structure. This structure includes the ISP_func member that identifies the service to carry out and the ISP_result member that the IOS uses to indicate whether it completed the service or encountered an error. The driver should check the value of ISP_result after the IOS returns.
DCB, DDB, ILB, IOP, ISP