次の方法で共有


要求の所有権

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

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

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

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