次の方法で共有


所有権を要求する

I/O マネージャーがフレームワーク ベースのドライバーに I/O 要求を送信すると、フレームワークは要求をインターセプトし、フレームワーク要求オブジェクトを作成します。 フレームワークのみが要求にアクセスし、オブジェクトに対する操作を実行できるため、フレームワークは要求オブジェクトを "所有" します。

フレームワークは、要求オブジェクトを作成した後、ドライバーの I/O キューのいずれかにオブジェクトを配置します。 フレームワークは、キューから要求を削除してドライバーに配信するまで、要求オブジェクトを所有し続けます。

ドライバーは、要求オブジェクトを 受け取 った後、要求を所有します。 ドライバーは、ハンドルを介して要求オブジェクトにアクセスし、オブジェクトに対する操作を実行できます。 ドライバーは要求オブジェクトを所有していますが、要求の再キュー、完了取り消し、または転送を行うことができます。その後、要求オブジェクトは所有されなくなり、アクセスできません。

要求オブジェクトの所有権がドライバーとフレームワークの間で渡されるため、オブジェクト ハンドルの値は変更されません。 たとえば、ドライバーが I/O キューから要求を受信し、それを別のキューに再キューし、要求を再度受信した場合、ハンドルの値は変更されません。 同様に、ドライバーが I/O ターゲットに要求を転送し、後で I/O ターゲットが要求を完了したことを示す通知を受信した場合、ドライバーの通知コールバック関数は、ドライバーが I/O ターゲットに指定したのと同じハンドル値を受け取ります。