Condividi tramite


FSCTL_SRV_REQUEST_RESUME_KEY codice di controllo

Il codice di controllo FSCTL_SRV_REQUEST_RESUME_KEY viene usato per recuperare un riferimento al file opaco da usare con il codice di controllo IOCTL_COPYCHUNK .

Per eseguire questa operazione, chiamare la funzione DeviceIoControl con i parametri seguenti.

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

Parametri

hDevice [in]

Handle al file per il quale deve essere richiesta la chiave del file di origine. Per ottenere questo handle, chiamare la funzione CreateFile .

dwIoControlCode [in]

Codice di controllo per l'operazione. Usare FSCTL_SRV_REQUEST_RESUME_KEY per questa operazione.

lpInBuffer

Non usato con questa operazione; impostato su NULL.

nInBufferSize [in]

Non usato con questa operazione; impostato su zero.

lpOutBuffer [out]

Puntatore al buffer di output, una struttura SRV_REQUEST_RESUME_KEY . Per altre informazioni, vedere la sezione Osservazioni.

nOutBufferSize [in]

Dimensioni in byte del buffer di output.

lpBytesReturned [out]

Puntatore a una variabile che riceve le dimensioni dei dati archiviati nel buffer di output, in byte.

Se il buffer di output è troppo piccolo, la chiamata ha esito negativo, la funzione GetLastError restituisce ERROR_INSUFFICIENT_BUFFER e lpBytesReturned è zero.

Se il parametro lpOverlapped è NULL, lpBytesReturned non può essere NULL. Anche quando un'operazione non restituisce dati di output e il parametro lpOutBuffer è NULL, DeviceIoControl usa lpBytesReturned. Dopo un'operazione di questo tipo, il valore di lpBytesReturned è senza significato.

Se lpOverlapped non è NULL, lpBytesReturned può essere NULL. Se lpOverlapped non è NULL e l'operazione restituisce i dati, lpBytesReturned non è significativo fino al completamento dell'operazione sovrapposta. Per recuperare il numero di byte restituiti, chiamare la funzione GetOverlappedResult . Se il parametro hDevice è associato a una porta di completamento di I/O, è possibile recuperare il numero di byte restituiti chiamando la funzione GetQueuedCompletionStatus .

lpOverlapped [in]

Puntatore a una struttura OVERLAPPED .

Se il parametro hDevice è stato aperto senza specificare FILE_FLAG_OVERLAPPED, lpOverlapped viene ignorato .

Se hDevice è stato aperto con il flag FILE_FLAG_OVERLAPPED , l'operazione viene eseguita come operazione sovrapposta (asincrona). In questo caso, lpOverlapped deve puntare a una struttura OVERLAPPED valida che contiene un handle a un oggetto evento. In caso contrario, la funzione non riesce in modi imprevedibili.

Per le operazioni sovrapposte, DeviceIoControl restituisce immediatamente e l'oggetto evento viene segnalato al termine dell'operazione. In caso contrario, la funzione non restituisce fino al completamento dell'operazione o fino a quando non si verifica un errore.

Valore restituito

Se l'operazione viene completata correttamente, DeviceIoControl restituisce un valore diverso da zero.

Se l'operazione ha esito negativo o è in sospeso, DeviceIoControl restituisce zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Osservazioni

Questo codice di controllo non ha alcun file di intestazione associato. È necessario definire il codice di controllo e le strutture di dati come indicato di seguito.

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

Questi membri possono essere descritti di seguito.

Membro Descrizione
ResumeKey
Valore opaco che identifica il file di origine nel server.
Timestamp
Valore opaco che identifica l'ora di apertura del file.
Pid
Valore opaco che identifica il processo che ha aperto il file.
Chiave
Struttura SRV_RESUME_KEY . Per eseguire un'operazione di copia lato server, usare questa struttura con il codice di controllo IOCTL_COPYCHUNK .
ContextLength
Questo membro è riservato per l'uso del sistema; non usare.
Contesto
Questo membro è riservato per l'uso del sistema; non usare.

 

Vedi anche

Deviceiocontrol

IOCTL_COPYCHUNK