次の方法で共有


SetFileAttributesTransactedA 関数 (winbase.h)

[Microsoft では、開発者がアプリケーションのニーズを達成するために代替手段を利用することを強くお勧めします。 TxF が開発された多くのシナリオは、よりシンプルで簡単に利用できる手法によって実現できます。 さらに、将来のバージョンの Microsoft Windows では TxF を使用できない可能性があります。 詳細と TxF の代替方法については、「トランザクション NTFSを使用する の代替方法」を参照してください。

ファイルまたはディレクトリの属性をトランザクション操作として設定します。

構文

BOOL SetFileAttributesTransactedA(
  [in] LPCSTR lpFileName,
  [in] DWORD  dwFileAttributes,
  [in] HANDLE hTransaction
);

パラメーター

[in] lpFileName

属性を設定するファイルの名前。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付けする」を参照してください。

先端

Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。

ファイルはローカル コンピューターに存在する必要があります。それ以外の場合、関数は失敗し、最後のエラー コードは ERROR_TRANSACTIONS_UNSUPPORTED_REMOTEに設定されます。

[in] dwFileAttributes

ファイルに設定するファイル属性。

ファイル属性値とその説明の一覧については、「ファイル属性定数」を参照してください。 このパラメーターには、ビットごとの OR 演算子を使用して組み合わせた 1 つ以上の値を指定できます。 ただし、他のすべての値は FILE_ATTRIBUTE_NORMALをオーバーライドします。

この関数では、すべての属性がサポートされているわけではありません。 詳細については、「解説」セクションを参照してください。

サポートされている属性値の一覧を次に示します。

FILE_ATTRIBUTE_ARCHIVE (32 (0x20))

FILE_ATTRIBUTE_HIDDEN (2 (0x2))

FILE_ATTRIBUTE_NORMAL (128 (0x80))

FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (8192 (0x2000))

FILE_ATTRIBUTE_OFFLINE (4096 (0x1000))

FILE_ATTRIBUTE_READONLY (1 (0x1))

FILE_ATTRIBUTE_SYSTEM (4 (0x4))

FILE_ATTRIBUTE_TEMPORARY (256 (0x100))

[in] hTransaction

トランザクションのハンドル。 このハンドルは、CreateTransaction 関数によって返されます。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

次の表では、SetFileAttributesTransactedを使用して設定できない属性 設定する方法について説明します。 これらはトランザクション操作ではないことに注意してください。

属性 設定方法
FILE_ATTRIBUTE_COMPRESSED

0x800

ファイルの圧縮状態を設定するには、FSCTL_SET_COMPRESSION 操作で DeviceIoControl 関数を使用します。
FILE_ATTRIBUTE_DEVICE

0x40

引っ込み思案;使用しないでください。
FILE_ATTRIBUTE_DIRECTORY

0x10

ファイルをディレクトリに変換することはできません。 ディレクトリを作成するには、CreateDirectory または CreateDirectoryEx 関数 使用します。
FILE_ATTRIBUTE_ENCRYPTED

0x4000

暗号化されたファイルを作成するには、CreateFile 関数と FILE_ATTRIBUTE_ENCRYPTED 属性を使用します。 既存のファイルを暗号化されたファイルに変換するには、EncryptFile 関数を使用します。
FILE_ATTRIBUTE_REPARSE_POINT

0x400

再解析ポイントをファイルまたはディレクトリに関連付けるには、FSCTL_SET_REPARSE_POINT 操作で DeviceIoControl 関数を使用します。
FILE_ATTRIBUTE_SPARSE_FILE

0x200

ファイルのスパース属性を設定するには、FSCTL_SET_SPARSE 操作で DeviceIoControl 関数を使用します。
 

トランザクションでファイルが変更のために開かれている場合、トランザクションがコミットされるまで、他のスレッドは変更のためにファイルを正常に開くできません。 トランザクション処理されたスレッドが最初にファイルを開くと、トランザクションがコミットされる前に変更のためにファイルを開こうとした後続のスレッドは、共有違反を受け取ります。 トランザクションされていないスレッドがトランザクション スレッドの前に変更のためにファイルを開き、トランザクションスレッドが開こうとしたときに開いている場合、トランザクションは ERROR_TRANSACTIONAL_CONFLICT エラーを受け取ります。

トランザクションの詳細については、「トランザクション NTFS」を参照してください。

Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。

テクノロジー サポート
サーバー メッセージ ブロック (SMB) 3.0 プロトコル いいえ
SMB 3.0 透過的フェールオーバー (TFO) いいえ
SMB 3.0 とスケールアウト ファイル共有 (SO) いいえ
クラスター共有ボリューム ファイル システム (CsvFS) いいえ
回復性のあるファイル システム (ReFS) いいえ
 

SMB 3.0 は TxF をサポートしていません。

トランザクション操作の

トランザクションでファイルが変更のために開かれている場合、トランザクションがコミットされるまで、他のスレッドはファイルを開いて変更できません。 そのため、トランザクションスレッドが最初にファイルを開くと、トランザクションがコミットされる前にファイルを変更しようとする後続のスレッドは共有違反を受け取ります。 トランザクション以外のスレッドがトランザクションスレッドの前にファイルを変更しても、トランザクションが開こうとしたときにファイルが開いている場合、トランザクションはエラー ERROR_TRANSACTIONAL_CONFLICTを受け取ります。

手記

winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SetFileAttributesTransacted を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

ファイル属性定数

ファイル管理機能の

GetFileAttributesTransacted の

シンボリック リンク の

トランザクション NTFS の