Partager via


code de contrôle DA_GET_NFS_ATTRIBUTES

Le code de contrôle DA_GET_NFS_ATTRIBUTES interroge des informations supplémentaires sur un partage NFS.

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

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

Paramètres

hDevice [in]

Handle pour un fichier sur le partage NFS. Pour obtenir ce handle, appelez la fonction CreateFile .

dwIoControlCode [in]

Code de contrôle pour l’opération. Utilisez DA_GET_NFS_ATTRIBUTES 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, qui contient une structure NFS_FILE_ATTRIBUTES . 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, GetLastError retourne ERROR_INSUFFICIENT_BUFFER et lpBytesReturned est égal à zéro.

Si 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 lpOutBuffer a la valeur 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 ce paramètre n’est pas NULL et que l’opération retourne des données, lpBytesReturned n’a pas de signification tant que l’opération qui se chevauche n’est pas terminée. Pour récupérer le nombre d’octets retournés, appelez 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 GetQueuedCompletionStatus.

lpOverlapped [in]

Pointeur vers une structure CHEVAUCHEMENT .

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

Les membres de la structure peuvent être décrits comme suit.

SpecData1

Valeur opaque utilisée pour les types de fichiers spéciaux tels que les fichiers spéciaux de blocs, de caractères spéciaux et de fichiers FIFO.

SpecData2

Valeur opaque utilisée pour les types de fichiers spéciaux tels que les fichiers spéciaux de blocs, de caractères spéciaux et de fichiers FIFO.

Secondes

Valeur 64 bits représentant les secondes depuis le 1er janvier 1970 (UTC).

nSeconds

Nombre de nanosecondes à ajouter au membre Seconds .

Filetype

Type de fichier NFS du partage.

Type de fichier NFS Description
NFS_TYPE_REG
Un fichier normal.
NFS_TYPE_DIR
Répertoire.
NFS_TYPE_BLK
Fichier spécial bloc.
NFS_TYPE_CHR
Fichier spécial caractère.
NFS_TYPE_LNK
Un lien symbolique.
NFS_TYPE_SOCK
Un socket Windows.
NFS_TYPE_FIFO
Un fichier FIFO.

 

Mode

Mode fichier.

NLink

Nombre de liens vers le partage.

Uid

Identificateur d’utilisateur UNIX (UID).

Gid

Identificateur de groupe UNIX (GID).

Taille

Taille du fichier, en octets.

Utilisé

Taille de fichier utilisée, en octets. Il s’agit de la même taille de fichier.

Rdev

Identificateur de l’appareil.

Fsid

Identificateur du système de fichiers.

FileId

Identificateur de fichier.

AccessTime

Heure du dernier accès.

ModifyTime

Heure de la dernière modification.

ChangeTime

Heure de la dernière modification.

FileAttributes

Structure NFS_FILE_ATTRIBUTES .

Notes

Pour obtenir des descriptions plus détaillées des membres de cette structure, consultez la structure fattr3 dans la spécification du protocole NFS Version 3 (telle que définie dans RFC 1813).

 

Version

Spécifie si la connexion sur laquelle le handle du partage NFS a été créé est sur le protocole NFS version 2 ou NFS version 3.

Valeur Description
2
NFS version 2
3
NFS version 3

 

Spécifications

Condition requise Valeur
Client minimal pris en charge
Aucun pris en charge
Serveur minimal pris en charge
Windows Server 2008
Fin de la prise en charge des clients
Aucun pris en charge
Fin de la prise en charge des serveurs
Windows Server 2008 R2

Voir aussi

DeviceIoControl