C# で Live File System (または「Live UDF」) 光ディスクをファイナライズしようとしています。MSDN および TechNet の記事とさまざまなフォーラムへの投稿を読んで理解したところによると、Image Mastering API (または IMAPI) はこのタイプのファイルシステムをサポートしていません。また、コーディング作業で IMAPI を使用して LiveUDF ディスクをファイナライズすることに失敗しました。その結果、FSCTL_MAKE_MEDIA_COMPATIBLE 制御コードを使用して DeviceIoControl 関数を使用しています。
まず、DeviceIoControl を同期的に呼び出していましたが、関数は 1117 を返し、ディスクは最終的に数分後にファイナライズされました。最終的な失敗または実際の成功の場合にのみプロセスを返す必要があるため、この結果は受け入れられません。
次に、CreateFile で FILE_FLAG_OVERLAPPED (0x40000000) dwFlagsAndAttributes フラグを指定してデバイス ハンドルを開き、NativeOverlapped オブジェクトを DeviceIoControl 呼び出しに渡すことで、DeviceIoControl を非同期的に呼び出します。その前に、明らかに、オーバーラップ イベントを処理するために IOCompletionCallback を設定しました。
説明したように DeviceIoControl を非同期で呼び出すと、(同期的に呼び出された場合と同様に) ほとんどすぐに 1117 が返され、IOCompletionCallback メソッドは呼び出されず、ディスクは数分後にファイナライズされます。
私の質問は: C# と DeviceIoControl を使用して Windows 7 プラットフォーム上の C# で Live File System (または「Live UDF」) 光ディスクをファイナライズするにはどうすればよいですか (プロセスが完了するまで「待機」する機能を使用して、同期的または非同期的に)最終的な成功または失敗の結果をキャプチャするため)?
よろしくお願いします。