次の方法で共有


ファイルのハンドルを開く

ファイルのハンドルを開くには次の手順に従います。

  1. OBJECT_ATTRIBUTES 構造体を作成し、InitializeObjectAttributes マクロを呼び出して、その構造体を初期化します。 ファイルのオブジェクト名を ObjectName パラメーターとして InitializeObjectAttributes に指定します。

  2. IoCreateFileZwCreateFile、または ZwOpenFileOBJECT_ATTRIBUTES 構造体を渡すことにより、このファイルのハンドルを開きます。

    このファイルが存在しない場合、IoCreateFileZwCreateFile ではこのファイルが作成されますが、ZwOpenFile では STATUS_OBJECT_NAME_NOT_FOUND が返されます。

ドライバーでは、ほとんどの場合、IoCreateFile ではなく、ZwCreateFile または ZwOpenFile が使用されます。

IoCreateFileZwCreateFile、または ZwOpenFile を呼び出すと、Windows のエグゼクティブによって、そのファイルを表す新しいファイル オブジェクトが作成され、そのオブジェクトのハンドルが作成されて開いた状態になります。 このファイル オブジェクトは、開いているハンドルをすべて閉じるまで保持されます。

どのルーチンを呼び出す場合でも、自身が必要とするアクセス権を DesiredAccess パラメーターとして渡す必要があります。 これらの権限は、ドライバーで実行するすべての操作で有効なものにする必要があります。 次の表に、これらの操作および要求する該当のアクセス権を示します。

操作 必要なアクセス権

ファイルから読み取ります。

FILE_READ_DATA または GENERIC_READ

ファイルに書き込みます。

FILE_WRITE_DATA または GENERIC_WRITE

ファイルの末尾にのみ書き込みます。

FILE_APPEND_DATA

ファイルの作成時刻などのファイルのメタデータを読み取ります。

FILE_READ_ATTRIBUTES または GENERIC_READ

ファイルの作成時刻などのファイルのメタデータを書き込みます。

FILE_WRITE_ATTRIBUTES または GENERIC_WRITE

DesiredAccess で使用できる値の詳細については「NtCreateFile 関数」を参照してください。