#include <isp.h>
typedef struct ISP_IOP_create {
    ISP    ISP_i_c_hdr;       // Standard header
    USHORT ISP_IOP_size;      // size of IOP to allocate, in bytes
    ULONG  ISP_delta_to_ior;  // offset to IOR within IOP
    ULONG  ISP_IOP_ptr;       // address of IOP
    UCHAR  ISP_i_c_flags;     // allocation flags; see below
    UCHAR  ISP_pad2[1];       // Pad to DWORD boundary
} ISP_IOP_alloc, *PISP_IOP_alloc;
 Contains information for a ISP_CREATE_IOP function.
| ISP_M_FL_EXTERNAL_IOP | Allocates memory using VMMCall _HeapAllocate instead of IOP's private memory. The only difference between this call and ISP_M_FL_PERSISTENT_IOP, is that this IOP gets timeout support. | 
| ISP_M_FL_INTERRUPT_TIME | Must be set if allocation is at asynchronous time. | 
| ISP_M_FL_MUST_SUCCEED | If set, IOS will not fail the allocation. If set, the function might take some time to complete, awaiting for free memory. | 
| ISP_M_FL_PERSISTENT_IOP | Allocation is for a long time IOP. Allocates memory using VMMCall _HeapAllocate instead of IOP's private memory heap. Also, the IOP is not added to the IOP timeout chain (the persistent IOP has no timeout support). | 
| ISP_M_FL_SMART_ALLOC | Do system heap allocation if not MS-DOS pager. Checks IOS's IDA structure element IDAF_DOS_PAGER to determine if system is paging through DOS. If not paging through DOS, do a system heap allocation. Otherwise use IOS's memory management system. | 
| ISP_M_FL_USE_SYSTEM_HEAP | Don't allocate from IOS heap. Instead, uses VMMCall _HeapAllocate. | 
IOP, ISP