Partager via


code de contrôle FSCTL_SRV_REQUEST_RESUME_KEY

Le code de contrôle FSCTL_SRV_REQUEST_RESUME_KEY est utilisé pour récupérer une référence de fichier opaque à utiliser avec le code de contrôle IOCTL_COPYCHUNK .

Pour effectuer cette opération, appelez la fonction DeviceIoControl avec les paramètres suivants.

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

Paramètres

hDevice [in]

Handle du fichier pour lequel la clé de fichier source doit être demandée. Pour obtenir ce handle, appelez la fonction CreateFile .

dwIoControlCode [in]

Code de contrôle pour l’opération. Utilisez FSCTL_SRV_REQUEST_RESUME_KEY pour cette opération.

lpInBuffer

Non utilisé avec cette opération ; défini sur NULL.

nInBufferSize [in]

Non utilisé avec cette opération ; défini sur zéro.

lpOutBuffer [out]

Pointeur vers la mémoire tampon de sortie, une structure SRV_REQUEST_RESUME_KEY . Pour plus d'informations, consultez la section Notes.

nOutBufferSize [in]

Taille de la mémoire tampon de sortie en octets.

lpBytesReturned [out]

Pointeur vers une variable qui reçoit la taille des données stockées dans la mémoire tampon de sortie, en octets.

Si la mémoire tampon de sortie est trop petite, l’appel échoue, la fonction GetLastError retourne ERROR_INSUFFICIENT_BUFFER et lpBytesReturned est égal à zéro.

Si le paramètre lpOverlapped a la valeur NULL, lpBytesReturned ne peut pas être NULL. Même lorsqu’une opération ne retourne aucune donnée de sortie et que le paramètre lpOutBuffer est NULL, DeviceIoControl utilise lpBytesReturned. Après une telle opération, la valeur de lpBytesReturned n’a aucun sens.

Si lpOverlapped n’a pas la valeur NULL, lpBytesReturned peut être NULL. Si lpOverlapped n’a pas la valeur NULL et que l’opération retourne des données, lpBytesReturned n’a pas de sens jusqu’à ce que l’opération superposée soit terminée. Pour récupérer le nombre d’octets retournés, appelez la fonction GetOverlappedResult . Si le paramètre hDevice est associé à un port d’achèvement des E/S, vous pouvez récupérer le nombre d’octets retournés en appelant la fonction GetQueuedCompletionStatus .

lpOverlapped [in]

Pointeur vers une structure CHEVAUCHEMENT .

Si le paramètre hDevice a été ouvert sans spécifier FILE_FLAG_OVERLAPPED, lpOverlapped est ignoré.

Si hDevice a été ouvert avec l’indicateur FILE_FLAG_OVERLAPPED , l’opération est effectuée en tant qu’opération (asynchrone) superposée. Dans ce cas, lpOverlapped doit pointer vers une structure OVERLAPPED valide qui contient un handle vers un objet d’événement. Sinon, la fonction échoue de manière imprévisible.

Pour les opérations qui se chevauchent, DeviceIoControl retourne immédiatement et l’objet d’événement est signalé une fois l’opération terminée. Sinon, la fonction ne retourne pas tant que l’opération n’est pas terminée ou qu’une erreur se produit.

Valeur retournée

Si l’opération se termine correctement, DeviceIoControl retourne une valeur différente de zéro.

Si l’opération échoue ou est en attente, DeviceIoControl retourne zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Ce code de contrôle n’a aucun fichier d’en-tête associé. Vous devez définir le code de contrôle et les structures de données comme suit.

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

Ces membres peuvent être décrits comme suit.

Membre Description
ResumeKey
Valeur opaque qui identifie le fichier source sur le serveur.
Timestamp
Valeur opaque qui identifie l’heure à laquelle le fichier a été ouvert.
Pid
Valeur opaque qui identifie le processus qui a ouvert le fichier.
Clé
Structure SRV_RESUME_KEY . Pour effectuer une opération de copie côté serveur, utilisez cette structure avec le code de contrôle IOCTL_COPYCHUNK .
ContextLength
Ce membre est réservé à l’utilisation du système ; n’utilisez pas.
Contexte
Ce membre est réservé à l’utilisation du système ; n’utilisez pas.

 

Voir aussi

DeviceIoControl

IOCTL_COPYCHUNK