Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Код элемента управления 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 связан с портом завершения ввода-вывода, можно получить количество возвращаемых байтов, вызвав функцию GetQueuedCompletionStatus .
-
lpOverlapped [in]
-
Указатель на структуру OVERLAPPED .
Если параметр hDevice был открыт без указания FILE_FLAG_OVERLAPPED, параметр lpOverlapped игнорируется.
Если hDevice был открыт с флагом FILE_FLAG_OVERLAPPED , операция выполняется как перекрываемая (асинхронная) операция. В этом случае 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;
Эти элементы можно описать следующим образом.
| Член | Описание |
|---|---|
|
ResumeKey |
Непрозрачное значение, определяющее исходный файл на сервере. |
|
Timestamp |
Непрозрачное значение, определяющее время открытия файла. |
|
Pid |
Непрозрачное значение, определяющее процесс, открывший файл. |
|
Ключ |
Структура SRV_RESUME_KEY. Чтобы выполнить операцию копирования на стороне сервера, используйте эту структуру с кодом элемента управления IOCTL_COPYCHUNK . |
|
ContextLength |
Этот элемент зарезервирован для системного использования; не использовать. |
|
Контексте |
Этот элемент зарезервирован для системного использования; не использовать. |
См. также раздел