Compartilhar via


código de controle DA_GET_NFS_ATTRIBUTES

O código de controle DA_GET_NFS_ATTRIBUTES consulta informações adicionais sobre um compartilhamento NFS.

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

BOOL 
   WINAPI 
   DeviceIoControl( (HANDLE)       hDevice,               // handle to device
                    (DWORD)        DA_GET_NFS_ATTRIBUTES, // dwIoControlCode
                                   NULL,                  // lpInBuffer
                                   0,                     // nInBufferSize
                    (LPDWORD)      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 um arquivo no compartilhamento NFS. Para obter esse identificador, chame a função CreateFile .

dwIoControlCode [in]

O código de controle da operação. Use DA_GET_NFS_ATTRIBUTES para esta operação.

lpInBuffer

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

nInBufferSize [in]

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

lpOutBuffer [out]

Um ponteiro para o buffer de saída, que contém uma estrutura NFS_FILE_ATTRIBUTES . 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á, GetLastError retornará ERROR_INSUFFICIENT_BUFFER e lpBytesReturned será zero.

Se lpOverlapped for NULL, lpBytesReturned não poderá ser NULL. Mesmo quando uma operação não retorna dados de saída e 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 esse parâmetro 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 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 GetQueuedCompletionStatus.

lpOverlapped [in]

Um ponteiro para uma estrutura OVERLAPPED .

Se hDevice foi aberto sem especificar FILE_FLAG_OVERLAPPED, lpOverlapped será ignorado.

Se hDevice foi aberto com o sinalizador FILE_FLAG_OVERLAPPED , a operação é executada como uma operação sobreposta (assíncrona). Nesse caso, lpOverlapped deve apontar para uma estrutura OVERLAPPED válida que contenha 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 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 DEVICE_DA_RDR 0x80000  
 
#define DA_GET_NFS_ATTRIBUTES CTL_CODE(DEVICE_DA_RDR, 0x804, METHOD_BUFFERED, FILE_ANY_ACCESS)

typedef struct _NFS_SPEC_DATA {  
    ULONG               SpecData1;
    ULONG               SpecData2;
} NFS_SPEC_DATA, *PNFS_SPEC_DATA;

typedef struct _NFS_TIME {
    ULONG        Seconds;
    ULONG        nSeconds;
} NFS_TIME, *PNFS_TIME;

#define NFS_TYPE_REG         1
#define NFS_TYPE_DIR         2
#define NFS_TYPE_BLK         3
#define NFS_TYPE_CHR         4
#define NFS_TYPE_LNK         5
#define NFS_TYPE_SOCK        6
#define NFS_TYPE_FIFO        7

typedef struct _NFS_FILE_ATTRIBUTES {  
    ULONG               FileType;  
    ULONG               Mode;  
    ULONG               NLink;  
    ULONG               Uid;  
    ULONG               Gid;  
    ULONGLONG           Size;  
    ULONGLONG           Used;
    NFS_SPEC_DATA       Rdev;
    ULONGLONG           Fsid;  
    ULONGLONG           FileId;  
    NFS_TIME            AccessTime;  
    NFS_TIME            ModifyTime;  
    NFS_TIME            ChangeTime;  
} NFS_FILE_ATTRIBUTES, *PNFS_FILE_ATTRIBUTES;

typedef struct _DA_FILE_ATTRIBUTES {  
    NFS_FILE_ATTRIBUTES FileAttributes;  
    ULONG               Version;  
} DA_FILE_ATTRIBUTES, *PDA_FILE_ATTRIBUTES;

Os membros da estrutura podem ser descritos da seguinte maneira.

SpecData1

Um valor opaco que é usado para tipos de arquivo especiais, como arquivos especiais de bloco, especiais de caracteres e FIFO.

SpecData2

Um valor opaco que é usado para tipos de arquivo especiais, como arquivos especiais de bloco, especiais de caracteres e FIFO.

Segundos

Um valor de 64 bits que representa os segundos desde 1º de janeiro de 1970 (UTC).

nSeconds

O número de nanossegundos a serem adicionados ao membro Seconds .

Filetype

O tipo de arquivo NFS do compartilhamento.

Tipo de arquivo NFS Descrição
NFS_TYPE_REG
Um arquivo normal.
NFS_TYPE_DIR
Um diretório.
NFS_TYPE_BLK
Um arquivo especial de bloco.
NFS_TYPE_CHR
Um arquivo especial de caracteres.
NFS_TYPE_LNK
Um link simbólico.
NFS_TYPE_SOCK
Um soquete do Windows.
NFS_TYPE_FIFO
Um arquivo FIFO.

 

Modo

O modo de arquivo.

NLink

O número de links para o compartilhamento.

Uid

O UID (identificador de usuário) do UNIX.

Gid

O GID (identificador de grupo) UNIX.

Tamanho

O tamanho do arquivo, em bytes.

Usado

O tamanho do arquivo usado, em bytes. Isso é o mesmo que o tamanho do arquivo.

Rdev

O identificador do dispositivo.

Fsid

O identificador do sistema de arquivos.

Idarquivo

O identificador de arquivo.

AccessTime

A hora do último acesso.

ModifyTime

A hora da última modificação.

ChangeTime

A hora da última alteração.

Fileattributes

Uma estrutura NFS_FILE_ATTRIBUTES .

Observação

Para obter descrições mais detalhadas dos membros dessa estrutura, consulte a estrutura gordurosa3 na Especificação de Protocolo NFS Versão 3 (conforme definido no RFC 1813).

 

Versão

Especifica se a conexão na qual o identificador para o compartilhamento NFS foi criado é sobre o protocolo NFS versão 2 ou NFS versão 3.

Valor Descrição
2
NFS Versão 2
3
NFS Versão 3

 

Requisitos

Requisito Valor
Cliente mínimo com suporte
Nenhum compatível
Servidor mínimo com suporte
Windows Server 2008
Fim do suporte ao cliente
Nenhum compatível
Fim do suporte ao servidor
Windows Server 2008 R2

Confira também

Deviceiocontrol