Compartilhar via


FSCTL_SRV_REQUEST_RESUME_KEY código de controle

O código de controle FSCTL_SRV_REQUEST_RESUME_KEY é usado para recuperar uma referência de arquivo opaco para uso com o código de controle IOCTL_COPYCHUNK .

Para executar essa operação, chame a função DeviceIoControl com os parâmetros a seguir.

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]

Um identificador para o arquivo para o qual a chave de arquivo de origem deve ser solicitada. Para obter esse identificador, chame a função CreateFile .

dwIoControlCode [in]

O código de controle para a operação. Use FSCTL_SRV_REQUEST_RESUME_KEY para esta operação.

lpInBuffer

Não usado com esta operação; definido como NULL.

nInBufferSize [in]

Não usado com esta operação; definido como zero.

lpOutBuffer [out]

Um ponteiro para o buffer de saída, uma estrutura SRV_REQUEST_RESUME_KEY . Para obter mais informações, consulte a seção Comentários.

nOutBufferSize [in]

O tamanho do buffer de saída em bytes.

lpBytesReturned [out]

Um ponteiro para uma variável que recebe o tamanho dos dados armazenados no buffer de saída, em bytes.

Se o buffer de saída for muito pequeno, a chamada falhará, a função GetLastError retornará ERROR_INSUFFICIENT_BUFFER e lpBytesReturned será zero.

Se o parâmetro lpOverlapped for NULL, lpBytesReturned não poderá ser NULL. Mesmo quando uma operação não retorna dados de saída e o parâmetro lpOutBuffer é NULL, DeviceIoControl usa lpBytesReturned. Após essa operação, o valor de lpBytesReturned não tem sentido.

Se lpOverlapped não for NULL, lpBytesReturned poderá ser NULL. Se lpOverlapped não for NULL e a operação retornar dados, lpBytesReturned não terá sentido até que a operação sobreposta seja concluída. Para recuperar o número de bytes retornados, chame a função GetOverlappedResult . Se o parâmetro hDevice estiver associado a uma porta de conclusão de E/S, você poderá recuperar o número de bytes retornados chamando a função GetQueuedCompletionStatus .

lpOverlapped [in]

Um ponteiro para uma estrutura OVERLAPPED .

Se o parâmetro hDevice foi aberto sem especificar FILE_FLAG_OVERLAPPED, lpOverlapped será ignorado.

Se hDevice tiver sido aberto com o sinalizador FILE_FLAG_OVERLAPPED , a operação será executada como uma operação sobreposta (assíncrona). Nesse caso, lpOverlapped deve apontar para uma estrutura OVERLAPPED válida que contém um identificador para um objeto de evento. Caso contrário, a função falhará de maneiras imprevisíveis.

Para operações sobrepostas, DeviceIoControl retorna imediatamente e o objeto de evento é sinalizado quando a operação é concluída. Caso contrário, a função não retornará até que a operação seja concluída ou até que ocorra um erro.

Valor retornado

Se a operação for concluída com êxito, DeviceIoControl retornará um valor diferente de zero.

Se a operação falhar ou estiver pendente, DeviceIoControl retornará zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Esse código de controle não tem nenhum arquivo de cabeçalho associado. Você deve definir o código de controle e as estruturas de dados da seguinte maneira.

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

Esses membros podem ser descritos da seguinte maneira.

Membro Descrição
ResumeKey
Um valor opaco que identifica o arquivo de origem para o servidor.
Timestamp
Um valor opaco que identifica a hora em que o arquivo foi aberto.
Pid
Um valor opaco que identifica o processo que abriu o arquivo.
Chave
Uma estrutura SRV_RESUME_KEY . Para executar uma operação de cópia do lado do servidor, use essa estrutura com o código de controle IOCTL_COPYCHUNK .
ContextLength
Esse membro é reservado para uso do sistema; não use.
Contexto
Esse membro é reservado para uso do sistema; não use.

 

Confira também

Deviceiocontrol

IOCTL_COPYCHUNK