次の方法で共有


転送モード

静止画像インターフェイスは、 ステータス モード とデータ モードの 2 つの転送モードを定義 しますIStillImage COM インターフェイスのクライアントが IStillImage::CreateDevice を呼び出して静止画像デバイスへのアクセスを取得すると、転送モードの 1 つ (または両方) が指定されます。 複数のクライアントが状態モードでデバイスを開くことができますが、データ モードでデバイスを開くことができるクライアントは一度に 1 つだけです。

静止画像イベント モニターは、デバイスを状態モードで開きます。 通常、 イメージ取得 API は データ モードでデバイスを開きますが、常にとは限りません。

クライアントがデバイスをデータ モードで開くと、イベント モニターは後続の 静止画像デバイス イベント を内部キューに格納します。 クライアントが IStiDevice::Subscribe を呼び出す場合は、 IStiDevice::GetLastNotificationData を呼び出すことによってキューからイベントを読み取ることができます。 クライアントがデバイスを閉じた後、その後受信したイベントにより、イベント モニターは登録されたアプリケーションの起動を再試行します。

2 つの転送モードの意味は、デバイスのユーザー モード ミニドライバーに完全に依存します。 IStillImage インターフェイスと IStiDevice インターフェイスを使用すると、すべてのメソッドをいずれかのモードで呼び出できます。

ミニドライバーは、 IStiDevice::GetLastNotificationData を呼び出すことによって、開かれたモードを決定できます。 デバイスへのアクセスを取得するときにクライアントが状態モードのみを要求した場合、ミニドライバーはクライアントによるデータ転送の実行を禁止する必要があります。

デバイスは通常、比較的長い時間 (デバイス イベントのイベント モニター 監視など) 状態モードで開かれますが、比較的短時間 (画像で読み取る場合など) はデータ モードで開かれることに注意してください。 静止画像アーキテクチャでは、一度に 1 つのクライアントのみがデータ モードでデバイスを開くことを許可しますが、ドライバーがデバイス アクセスにさらに制限を設ける必要がある場合があります。

たとえば、シリアル ポートに接続されているデバイスのドライバーを作成する場合は、デバイスが状態モードで開かれた場合に、ドライバーの IStiUSD::LockDevice メソッド内から CreateFile を呼び出すことができます。 これにより、デバイスから状態情報が取得されている間、他のアプリケーションがポート (他のデバイスをサポートしている可能性があります) を使用することは禁止されます。

SCSI や USB バス デバイスなどの専用ポートに接続されているデバイスの場合、デバイスとポートは常に 1 つのクライアント専用であるため、通常、状態モードが指定されている場合は IStiUSD::Initialize 内から CreateFile を呼び出すことができます。

デバイスをデータ モードで開くと、通常、 CreateFile はバスの種類に関係なく、 IStiUSD:Initialize 内から呼び出されます。