+/*! @function withDescriptors
+ * @abstract Initialize an IOMultiMemoryDescriptor to describe a memory area made up of several other IOMemoryDescriptors.
+ * @discussion This method initializes an IOMultiMemoryDescriptor for memory consisting of a number of other IOMemoryDescriptors, chained end-to-end (in the order they appear in the array) to represent a single contiguous memory buffer. Passing the descriptor array as a reference will avoid an extra allocation.
+ * @param descriptors An array of IOMemoryDescriptors which make up the memory to be described.
+ * @param withCount The object count for the descriptors array.
+ * @param withDirection An I/O direction to be associated with the descriptor, which may affect the operation of the prepare and complete methods on some architectures.
+ * @param asReference If false, the IOMultiMemoryDescriptor object will make a copy of the descriptors array, otherwise, the array will be used in situ, avoiding an extra allocation.
+ * @result The created IOMultiMemoryDescriptor on success, to be released by the caller, or zero on failure. */
+
+ virtual bool initWithDescriptors(
+ IOMemoryDescriptor ** descriptors,
+ UInt32 withCount,
+ IODirection withDirection,
+ bool asReference = false );
+
+/*! @function getPhysicalSegment
+ * @abstract Break a memory descriptor into its physically contiguous segments.
+ * @discussion This method returns the physical address of the byte at the given offset into the memory, and optionally the length of the physically contiguous segment from that offset.
+ * @param offset A byte offset into the memory whose physical address to return.
+ * @param length If non-zero, getPhysicalSegment will store here the length of the physically contiguous segement at the given offset.
+ * @result A physical address, or zero if the offset is beyond the length of the memory. */
+
+ virtual addr64_t getPhysicalSegment( IOByteCount offset,
+ IOByteCount * length,
+ IOOptionBits options = 0 ) APPLE_KEXT_OVERRIDE;