共用方式為


FSCTL_SRV_REQUEST_RESUME_KEY控制項程式碼

FSCTL_SRV_REQUEST_RESUME_KEY控制項程式碼可用來擷取不透明檔案參考,以搭配IOCTL_COPYCHUNK控制項程式碼使用。

若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函式。

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to device
  FSCTL_SRV_REQUEST_RESUME_KEY, // dwIoControlCode
  NULL,                         // lpInBuffer
  0,                            // nInBufferSize
  (LPVOID) lpOutBuffer,         // output buffer
  (DWORD) nOutBufferSize,       // size of output buffer
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

參數

hDevice [in]

要要求原始程式檔金鑰之檔案的控制碼。 若要取得這個控制碼,請呼叫 CreateFile 函式。

dwIoControlCode [in]

作業的控制程式代碼。 針對此作業使用 FSCTL_SRV_REQUEST_RESUME_KEY

lpInBuffer

未搭配此作業使用;設定為 Null

nInBufferSize [in]

未搭配此作業使用;設定為零。

lpOutBuffer [out]

輸出緩衝區的指標, SRV_REQUEST_RESUME_KEY 結構。 如需詳細資訊,請參閱<備註>一節。

nOutBufferSize [in]

輸出緩衝區的大小 (以位元組為單位)。

lpBytesReturned [out]

變數的指標,接收儲存在輸出緩衝區中的資料大小,以位元組為單位。

如果輸出緩衝區太小,呼叫就會失敗, GetLastError 函式會傳回 ERROR_INSUFFICIENT_BUFFER而 lpBytesReturned 為零。

如果 lpOverlapped 參數為 Null則 lpBytesReturned 不能是 Null。 即使作業未傳回任何輸出資料, 而且 lpOutBuffer 參數為 NullDeviceIoControl 仍會使用 lpBytesReturned。 在這類作業之後, lpBytesReturned 的值就沒有意義。

如果 lpOverlapped 不是 NulllpBytesReturned 可以是 Null。 如果 lpOverlapped 不是 Null ,而且作業會傳回資料, 則 lpBytesReturned 在重迭的作業完成之前是無意義的。 若要擷取傳回的位元組數目,請呼叫 GetOverlappedResult 函式。 如果 hDevice 參數與 I/O 完成埠相關聯,您可以呼叫 GetQueuedCompletionStatus 函式來擷取傳回的位元組數目。

lpOverlapped [in]

重迭結構的指標。

如果 已開啟 hDevice 參數而不指定 FILE_FLAG_OVERLAPPED,則會忽略 lpOverlapped

如果使用 FILE_FLAG_OVERLAPPED 旗標開啟 hDevice ,則會以重迭的 ( 非同步) 作業來執行作業。 在此情況下, lpOverlapped 必須指向包含事件物件控制碼的有效 OVERLAPPED 結構。 否則,函式會以無法預測的方式失敗。

對於重迭的作業, DeviceIoControl 會立即傳回,而且當作業完成時,事件物件會發出訊號。 否則,函式不會在作業完成或發生錯誤之前傳回。

傳回值

如果作業順利完成, DeviceIoControl 會傳回非零值。

如果作業失敗或擱置中, DeviceIoControl 會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

此控制項程式碼沒有相關聯的標頭檔。 您必須定義控制項程式碼和資料結構,如下所示。

#define FSCTL_SRV_REQUEST_RESUME_KEY CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)

typedef struct _SRV_RESUME_KEY {
    UINT64 ResumeKey;
    UINT64 Timestamp;
    UINT64 Pid;
} SRV_RESUME_KEY, *PSRV_RESUME_KEY;

typedef struct _SRV_REQUEST_RESUME_KEY {
    SRV_RESUME_KEY Key;
    ULONG  ContextLength;
    BYTE   Context[1];
} SRV_REQUEST_RESUME_KEY, *PSRV_REQUEST_RESUME_KEY;

這些成員可以如下所述。

member 描述
ResumeKey
不透明值,可識別來源檔案到伺服器。
時間 戳
不透明值,可識別開啟檔案的時間。
Pid
不透明值,可識別開啟檔案的進程。
關鍵
SRV_RESUME_KEY結構。 若要執行伺服器端複製作業,請使用這個結構搭配 IOCTL_COPYCHUNK 控制項程式碼。
CoNtextLength
此成員保留供系統使用;請勿使用。
上下文
此成員保留供系統使用;請勿使用。

 

另請參閱

DeviceIoControl

IOCTL_COPYCHUNK