Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El código de control FSCTL_SRV_REQUEST_RESUME_KEY se usa para recuperar una referencia de archivo opaca para su uso con el código de control IOCTL_COPYCHUNK .
Para realizar esta operación, llame a la función DeviceIoControl con los parámetros siguientes.
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
);
Parámetros
-
hDevice [in]
-
Identificador del archivo para el que se va a solicitar la clave de archivo de origen. Para obtener este identificador, llame a la función CreateFile .
-
dwIoControlCode [in]
-
Código de control de la operación. Use FSCTL_SRV_REQUEST_RESUME_KEY para esta operación.
-
lpInBuffer
-
No se usa con esta operación; se establece en NULL.
-
nInBufferSize [in]
-
No se usa con esta operación; se establece en cero.
-
lpOutBuffer [out]
-
Puntero al búfer de salida, una estructura de SRV_REQUEST_RESUME_KEY . Para obtener más información, vea la sección Comentarios.
-
nOutBufferSize [in]
-
Tamaño del búfer de salida, en bytes.
-
lpBytesReturned [out]
-
Puntero a una variable que recibe el tamaño de los datos almacenados en el búfer de salida, en bytes.
Si el búfer de salida es demasiado pequeño, se produce un error en la llamada, la función GetLastError devuelve ERROR_INSUFFICIENT_BUFFER y lpBytesReturned es cero.
Si el parámetro lpOverlapped es NULL, lpBytesReturned no puede ser NULL. Incluso cuando una operación no devuelve datos de salida y el parámetro lpOutBuffer es NULL, DeviceIoControl usa lpBytesReturned. Después de esta operación, el valor de lpBytesReturned no tiene sentido.
Si lpOverlapped no es NULL, lpBytesReturned puede ser NULL. Si lpOverlapped no es NULL y la operación devuelve datos, lpBytesReturned no tiene sentido hasta que se haya completado la operación superpuesta. Para recuperar el número de bytes devueltos, llame a la función GetOverlappedResult . Si el parámetro hDevice está asociado a un puerto de finalización de E/S, puede recuperar el número de bytes devueltos llamando a la función GetQueuedCompletionStatus .
-
lpOverlapped [in]
-
Puntero a una estructura SUPERPUESTA .
Si se abrió el parámetro hDevice sin especificar FILE_FLAG_OVERLAPPED, se omite lpOverlapped .
Si hDevice se abrió con la marca FILE_FLAG_OVERLAPPED , la operación se realiza como una operación superpuesta (asincrónica). En este caso, lpOverlapped debe apuntar a una estructura SUPERPUESTA válida que contiene un identificador para un objeto de evento. De lo contrario, se produce un error en la función de maneras impredecibles.
En el caso de las operaciones superpuestas, DeviceIoControl devuelve inmediatamente y el objeto de evento se señala cuando se ha completado la operación. De lo contrario, la función no devuelve hasta que se haya completado la operación o hasta que se produzca un error.
Valor devuelto
Si la operación se completa correctamente, DeviceIoControl devuelve un valor distinto de cero.
Si se produce un error en la operación o está pendiente, DeviceIoControl devuelve cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Este código de control no tiene ningún archivo de encabezado asociado. Debe definir el código de control y las estructuras de datos de la siguiente manera.
#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;
Estos miembros se pueden describir de la siguiente manera.
| Miembro | Descripción |
|---|---|
|
ResumeKey |
Valor opaco que identifica el archivo de origen al servidor. |
|
Timestamp |
Valor opaco que identifica la hora en que se abrió el archivo. |
|
Pid |
Valor opaco que identifica el proceso que abrió el archivo. |
|
Clave |
Estructura SRV_RESUME_KEY . Para realizar una operación de copia del lado servidor, use esta estructura con el código de control IOCTL_COPYCHUNK . |
|
ContextLength |
Este miembro está reservado para uso del sistema; no use. |
|
Contexto |
Este miembro está reservado para uso del sistema; no use. |
Consulte también