共用方式為


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
標頭 ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL PASSIVE_LEVEL

另請參閱

EXTENDED_CREATE_INFORMATION

IoCheckFileObjectOpenedAsCopyDestination

NtCopyFileChunk

NtCreateFile