IOUserSCSIParallelInterfaceController
A DriverKit provider object that manages communications with SCSI-based devices.
Declaration
class IOUserSCSIParallelInterfaceController;Overview
Implement your driver by subclassing this class and overriding all pure virtual methods.
Specifying the Driver’s Personality Information
When you subclass IOUserSCSIParallelInterfaceController, update the IOKitPersonalities key of your driver extension’s Info.plist file with information to match your driver to appropriate hardware. For this class, always include the keys and values in the following table:
Key | Value |
|---|---|
IOClass |
|
IOUserClass | The name of your custom dext class. |
IOProviderClass |
|
CFBundleIdentifierKernel |
|
Supporting Power Capabilities
IOUserSCSIParallelInterfaceController supports the following power capabilities:
Implement the SetPowerState method in your service object and use it to put your driver in a safe state for the new power setting. Call super either as the last step in your implementation, or when the dext is ready to acknowledge the power state transition.
The following code example implements SetPowerState by performing a check to see if the new state is kIOServicePowerCapabilityOn. If it is, the implementation calls a private IssueHardReset() method.
kern_return_t
IMPL ( ExampleSCSIDext, SetPowerState )
{
kern_return_t ret = kIOReturnError;
…
if ( powerState == kIOServicePowerCapabilityOn )
{
ret = IssueHardReset ( );
ivars->fCurrentPowerState = kIOServicePowerCapabilityOn;
}
return ret;
}The hypothetical driver in this example still needs to acknowledge the power state change when it’s appropriate. For example, it could ensure a rescan has brought up all its targets, and then call SetPowerState ( powerState, SUPERDISPATCH );.
Topics
Managing Controllers
Managing Tasks
Managing Bundled Parallel Tasks
UserProcessBundledParallelTasksUserMapBundledParallelTaskCommandAndResponseBuffersBundledParallelTaskCompletion
Managing Targets
UserInitializeTargetForIDUserCreateTargetForIDUserDestroyTargetForIDUserTargetPresentForIDUserSetTargetPropertiesUserRemoveTargetProperties
Performing SCSI Standard Task Management
UserAbortTaskRequestUserAbortTaskSetRequestUserClearACARequestUserClearTaskSetRequestUserLogicalUnitResetRequestUserTargetResetRequest
Managing Host Bus Adapters
UserReportInitiatorIdentifierUserReportHighestSupportedDeviceIDUserReportMaximumTaskCountUserDoesHBAPerformDeviceManagementUserReportHBAHighestLogicalUnitNumberUserDoesHBAPerformAutoSenseUserDoesHBASupportMultiPathingUserDoesHBASupportSCSIParallelFeatureSCSIParallelFeatureUserMapHBADataUserSetHBAPropertiesUserRemoveHBAPropertiesUserReportHBAConstraints