<!--
{
  "availability" : [
    "macOS: 10.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ImageCaptureCore",
  "identifier" : "/documentation/ImageCaptureCore/ICScannerDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ImageCaptureCore"
    ],
    "preciseIdentifier" : "c:objc(cs)ICScannerDevice"
  },
  "title" : "ICScannerDevice"
}
-->

# ICScannerDevice

An object that represents a scanner.

```
class ICScannerDevice
```

## Overview

An instance of ICScannerDevice class is intended to be used by the ICScannerDeviceView object. The ICScannerDeviceView class encapsulates the complexities of setting scan parameters, performing scans and saving the result. The developer should consider using ICScannerDeviceView instead of building their own views using the ICScannerDevice object.

## Topics

### Selecting a Functional Unit

[`availableFunctionalUnitTypes`](/documentation/ImageCaptureCore/ICScannerDevice/availableFunctionalUnitTypes)

An array of functional unit types available on this scanner.

[`selectedFunctionalUnit`](/documentation/ImageCaptureCore/ICScannerDevice/selectedFunctionalUnit)

The currently selected functional unit on the scanner.

[`requestSelect(_:)`](/documentation/ImageCaptureCore/ICScannerDevice/requestSelect(_:))

Requests to select a functional unit on the scanner.

[`ICScannerFunctionalUnitType`](/documentation/ImageCaptureCore/ICScannerFunctionalUnitType)

The types of scanner functional units.

[`ICScannerFunctionalUnitState`](/documentation/ImageCaptureCore/ICScannerFunctionalUnitState)

Flags to indicate the state of the scanner functional unit.

### Performing a Scan

[`requestOpenSession(withCredentials:password:)`](/documentation/ImageCaptureCore/ICScannerDevice/requestOpenSession(withCredentials:password:))

Opens a session on the protected device with the authorized username and passcode.

[`requestOverviewScan()`](/documentation/ImageCaptureCore/ICScannerDevice/requestOverviewScan())

Starts an overview scan on the selected functional unit.

[`requestScan()`](/documentation/ImageCaptureCore/ICScannerDevice/requestScan())

Starts a scan on the selected functional unit.

[`cancelScan()`](/documentation/ImageCaptureCore/ICScannerDevice/cancelScan())

Cancels the current scan.

[`documentName`](/documentation/ImageCaptureCore/ICScannerDevice/documentName)

The document’s name.

[`documentUTI`](/documentation/ImageCaptureCore/ICScannerDevice/documentUTI)

The document’s uniform type identifier.

[`downloadsDirectory`](/documentation/ImageCaptureCore/ICScannerDevice/downloadsDirectory)

The downloads directory.

[`transferMode`](/documentation/ImageCaptureCore/ICScannerDevice/transferMode)

The transfer mode for the scanned document.

[`maxMemoryBandSize`](/documentation/ImageCaptureCore/ICScannerDevice/maxMemoryBandSize)

The total maximum band size requested when performing a memory-based transfer.

### Logging into a Protected Device

[`defaultUsername`](/documentation/ImageCaptureCore/ICScannerDevice/defaultUsername)

A default username on protected scanners.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)