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 參數為 Null, DeviceIoControl 仍會使用 lpBytesReturned。 在這類作業之後, lpBytesReturned 的值就沒有意義。
如果 lpOverlapped 不是 Null, lpBytesReturned 可以是 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 |
此成員保留供系統使用;請勿使用。 |
上下文 |
此成員保留供系統使用;請勿使用。 |
另請參閱