次の方法で共有


IoCheckFileObjectOpenedAsCopySource 関数 (ntifs.h)

IoCheckFileObjectOpenedAsCopySource ルーチンは、コピー意図でファイルがソース ファイルとして以前に開かれたかどうかを確認します。

構文

BOOLEAN IoCheckFileObjectOpenedAsCopySource(
  [in] PFILE_OBJECT FileObject
);

パラメーター

[in] FileObject

コピーの意図をチェックするソース ファイル オブジェクトへのポインター。

戻り値

IoCheckFileObjectOpenedAsCopySource は、ファイル オブジェクトが以前にコピー ファイル意図で開かれたソース ファイルを表す場合に TRUE を返します。それ以外の場合は FALSE を返します。 TRUE の戻り値は、作成時に意図のみを通知します。これは、ファイル オブジェクトに対するすべての操作がすべてコピーの一部であることを意味するわけではありません。

注釈

次の例は、ファイル オブジェクトがコピー意図で開かれたかどうかをチェックする方法を示しています。


typedef  
BOOLEAN (*PIO_CHECK_FILE_OBJECT_OPENED_AS_COPY_SOURCE)( 
    _In_ PFILE_OBJECT FileObject 
); 
typedef  
BOOLEAN (*PIO_CHECK_FILE_OBJECT_OPENED_AS_COPY_DESTINATION)( 
    _In_ PFILE_OBJECT FileObject 
); 

PIO_CHECK_FILE_OBJECT_OPENED_AS_COPY_SOURCE IoCheckFileObjectOpenedAsCopySource; 
PIO_CHECK_FILE_OBJECT_OPENED_AS_COPY_DESTINATION IoCheckFileObjectOpenedAsCopyDestination;

// First resolve the API 
RtlInitUnicodeString(&RoutineName, L"IoCheckFileObjectOpenedAsCopySource"); 
IoCheckFileObjectOpenedAsCopySource = (PIO_CHECK_FILE_OBJECT_OPENED_AS_COPY_SOURCE)MmGetSystemRoutineAddress(&RoutineName); 

RtlInitUnicodeString(&RoutineName, L"IoCheckFileObjectOpenedAsCopyDestination"); 
IoCheckFileObjectOpenedAsCopyDestination = (PIO_CHECK_FILE_OBJECT_OPENED_AS_COPY_DESTINATION)MmGetSystemRoutineAddress(&RoutineName); 

// Now use the API 
IoCheckFileObjectOpenedAsCopySource(FltObjects->FileObject); 
IoCheckFileObjectOpenedAsCopyDestination(FltObjects->FileObject);

詳細については、 カーネル モードのファイルのコピーとコピー ファイルの検出のシナリオに関する ページを参照してください。

要件

要件
サポートされている最小のクライアント Windows 11 バージョン 22H2
Header ntifs.h (Wdm.h、Ntddk.h、Ntifs.h を含みます)
IRQL PASSIVE_LEVEL

こちらもご覧ください

EXTENDED_CREATE_INFORMATION

IoCheckFileObjectOpenedAsCopyDestination

NtCopyFileChunk

NtCreateFile