Bagikan melalui


FSCTL_SRV_REQUEST_RESUME_KEY kode kontrol

Kode kontrol FSCTL_SRV_REQUEST_RESUME_KEY digunakan untuk mengambil referensi file buram untuk digunakan dengan kode kontrol IOCTL_COPYCHUNK .

Untuk melakukan operasi ini, panggil fungsi DeviceIoControl dengan parameter berikut.

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
);

Parameter

hDevice [in]

Handel ke file yang kunci file sumbernya akan diminta. Untuk mendapatkan handel ini, panggil fungsi CreateFile .

dwIoControlCode [in]

Kode kontrol untuk operasi. Gunakan FSCTL_SRV_REQUEST_RESUME_KEY untuk operasi ini.

lpInBuffer

Tidak digunakan dengan operasi ini; atur ke NULL.

nInBufferSize [in]

Tidak digunakan dengan operasi ini; atur ke nol.

lpOutBuffer [out]

Penunjuk ke buffer output, struktur SRV_REQUEST_RESUME_KEY . Untuk informasi selengkapnya, lihat bagian Keterangan.

nOutBufferSize [in]

Ukuran buffer output, dalam byte.

lpBytesReturned [out]

Penunjuk ke variabel yang menerima ukuran data yang disimpan dalam buffer output, dalam byte.

Jika buffer output terlalu kecil, panggilan gagal, fungsi GetLastError mengembalikan ERROR_INSUFFICIENT_BUFFER, dan lpBytesReturned adalah nol.

Jika parameter lpOverlappedADALAH NULL, lpBytesReturned tidak boleh NULL. Bahkan ketika operasi tidak mengembalikan data output dan parameter lpOutBuffer adalah NULL, DeviceIoControl menggunakan lpBytesReturned. Setelah operasi seperti itu, nilai lpBytesReturned tidak ada artinya.

Jika lpOverlapped bukan NULL, lpBytesReturned bisa NULL. Jika lpOverlapped bukan NULL dan operasi mengembalikan data, lpBytesReturned tidak berarti sampai operasi yang tumpang tindih selesai. Untuk mengambil jumlah byte yang dikembalikan, panggil fungsi GetOverlappedResult . Jika parameter hDevice dikaitkan dengan port penyelesaian I/O, Anda dapat mengambil jumlah byte yang dikembalikan dengan memanggil fungsi GetQueuedCompletionStatus .

lpOverlapped [in]

Penunjuk ke struktur YANG TUMPANG TINDIH .

Jika parameter hDevice dibuka tanpa menentukan FILE_FLAG_OVERLAPPED, lpOverlapped diabaikan.

Jika hDevice dibuka dengan bendera FILE_FLAG_OVERLAPPED , operasi dilakukan sebagai operasi yang tumpang tindih (asinkron). Dalam hal ini, lpOverlapped harus menunjuk ke struktur TUMPANG TINDIH yang valid yang berisi handel ke objek peristiwa. Jika tidak, fungsi gagal dengan cara yang tidak dapat diprediksi.

Untuk operasi yang tumpang tindih, DeviceIoControl segera kembali, dan objek peristiwa disinyalir ketika operasi telah selesai. Jika tidak, fungsi tidak kembali sampai operasi selesai atau sampai terjadi kesalahan.

Mengembalikan nilai

Jika operasi berhasil diselesaikan, DeviceIoControl mengembalikan nilai bukan nol.

Jika operasi gagal atau tertunda, DeviceIoControl mengembalikan nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Kode kontrol ini tidak memiliki file header terkait. Anda harus menentukan kode kontrol dan struktur data sebagai berikut.

#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;

Anggota ini dapat digambarkan sebagai berikut.

Anggota Deskripsi
ResumeKey
Nilai buram yang mengidentifikasi file sumber ke server.
Timestamp
Nilai buram yang mengidentifikasi waktu ketika file dibuka.
Pid
Nilai buram yang mengidentifikasi proses yang membuka file.
Kunci
Struktur SRV_RESUME_KEY . Untuk melakukan operasi penyalinan sisi server, gunakan struktur ini dengan kode kontrol IOCTL_COPYCHUNK .
ContextLength
Anggota ini disediakan untuk penggunaan sistem; jangan gunakan.
Konteks
Anggota ini disediakan untuk penggunaan sistem; jangan gunakan.

 

Lihat juga

DeviceIoControl

IOCTL_COPYCHUNK