Auf Englisch lesen

Freigeben über


DA_GET_NFS_ATTRIBUTES-Steuerungscode

Der DA_GET_NFS_ATTRIBUTES-Steuerelementcode fragt zusätzliche Informationen zu einer NFS-Freigabe ab.

Um diesen Vorgang auszuführen, rufen Sie die DeviceIoControl-Funktion mit den folgenden Parametern auf.

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

Parameter

hDevice [in]

Ein Handle für eine Datei auf der NFS-Freigabe. Um dieses Handle zu erhalten, rufen Sie die CreateFile-Funktion auf.

dwIoControlCode [in]

Der Steuerelementcode für den Vorgang. Verwenden Sie für diesen Vorgang DA_GET_NFS_ATTRIBUTES .

lpInBuffer

Nicht für diesen Vorgang verwendet; auf NULL festgelegt.

nInBufferSize [in]

Nicht für diesen Vorgang verwendet; auf 0 (null) festgelegt.

lpOutBuffer [out]

Ein Zeiger auf den Ausgabepuffer, der eine NFS_FILE_ATTRIBUTES-Struktur enthält. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

nOutBufferSize [in]

Die Größe des Ausgabepuffers in Bytes.

lpBytesReturned [out]

Ein Zeiger auf eine Variable, die die Größe der im Ausgabepuffer gespeicherten Daten in Bytes empfängt.

Wenn der Ausgabepuffer zu klein ist, schlägt der Aufruf fehl, GetLastError gibt ERROR_INSUFFICIENT_BUFFER zurück, und lpBytesReturned ist null.

Wenn lpOverlappedNULL ist, kann lpBytesReturned nicht NULL sein. Auch wenn ein Vorgang keine Ausgabedaten zurückgibt und lpOutBufferNULL ist, verwendet DeviceIoControllpBytesReturned. Nach einem solchen Vorgang ist der Wert von lpBytesReturned bedeutungslos .

Wenn lpOverlapped nicht NULL ist, kann lpBytesReturnedNULL sein. Wenn dieser Parameter nicht NULL ist und der Vorgang Daten zurückgibt, ist lpBytesReturned bedeutungslos , bis der überlappende Vorgang abgeschlossen ist. Rufen Sie GetOverlappedResult auf, um die Anzahl der zurückgegebenen Bytes abzurufen. Wenn der hDevice-Parameter einem E/A-Abschlussport zugeordnet ist, können Sie die Anzahl der zurückgegebenen Bytes abrufen, indem Sie GetQueuedCompletionStatus aufrufen.

lpOverlapped [in]

Ein Zeiger auf eine OVERLAPPED-Struktur .

Wenn hDevice geöffnet wurde, ohne FILE_FLAG_OVERLAPPED anzugeben, wird lpOverlapped ignoriert.

Wenn hDevice mit dem flag FILE_FLAG_OVERLAPPED geöffnet wurde, wird der Vorgang als überlappender (asynchroner) Vorgang ausgeführt. In diesem Fall muss lpOverlapped auf eine gültige OVERLAPPED-Struktur verweisen, die ein Handle für ein Ereignisobjekt enthält. Andernfalls schlägt die Funktion auf unvorhersehbare Weise fehl.

Bei überlappenden Vorgängen gibt DeviceIoControl sofort zurück, und das Ereignisobjekt wird signalisiert, wenn der Vorgang abgeschlossen wurde. Andernfalls wird die Funktion erst zurückgegeben, wenn der Vorgang abgeschlossen wurde oder ein Fehler auftritt.

Rückgabewert

Wenn der Vorgang erfolgreich abgeschlossen wird, gibt DeviceIoControl einen Wert ungleich null zurück.

Wenn der Vorgang fehlschlägt oder aussteht, gibt DeviceIoControl null zurück. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Bemerkungen

Dieser Steuerelementcode enthält keine zugeordnete Headerdatei. Sie müssen den Steuerelementcode und die Datenstrukturen wie folgt definieren.

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

Die Strukturmember können wie folgt beschrieben werden.

SpecData1

Ein undurchsichtiger Wert, der für spezielle Dateitypen wie block-special, character-special und FIFO-Dateien verwendet wird.

SpecData2

Ein undurchsichtiger Wert, der für spezielle Dateitypen wie block-special, character-special und FIFO-Dateien verwendet wird.

Sekunden

Ein 64-Bit-Wert, der die Sekunden seit dem 1. Januar 1970 (UTC) darstellt.

nSeconds

Die Anzahl der Nanosekunden, die dem Seconds-Element hinzugefügt werden sollen.

Filetype

Der NFS-Dateityp der Freigabe.

NFS-Dateityp BESCHREIBUNG
NFS_TYPE_REG
Eine reguläre Datei.
NFS_TYPE_DIR
Ein Verzeichnis.
NFS_TYPE_BLK
Eine blockspezifische Datei.
NFS_TYPE_CHR
Eine zeichenspezifische Datei.
NFS_TYPE_LNK
Eine symbolische Verknüpfung.
NFS_TYPE_SOCK
Ein Windows-Socket.
NFS_TYPE_FIFO
Eine FIFO-Datei.

 

Modus

Der Dateimodus.

NLink

Die Anzahl der Links zur Freigabe.

Uid

Die UNIX-Benutzer-ID (UID).

Gid

Der UNIX-Gruppenbezeichner (GID).

Größe

Die Dateigröße in Byte.

Gebraucht

Die verwendete Dateigröße in Bytes. Dies entspricht der Dateigröße.

Rdev

Der Gerätebezeichner.

Fsid

Der Dateisystembezeichner.

FileId

Der Dateibezeichner.

AccessTime

Der Zeitpunkt des letzten Zugriffs.

ModifyTime

Der Zeitpunkt der letzten Änderung.

ChangeTime

Der Zeitpunkt der letzten Änderung.

Fileattributes

Eine NFS_FILE_ATTRIBUTES-Struktur .

Hinweis

Ausführlichere Beschreibungen der Member dieser Struktur finden Sie in der fattr3-Struktur in der NFS Version 3-Protokollspezifikation (wie in RFC 1813 definiert).

 

Version

Gibt an, ob die Verbindung, für die das Handle für die NFS-Freigabe erstellt wurde, über das NFS Version 2- oder NFS Version 3-Protokoll erfolgt.

Wert Beschreibung
2
NFS Version 2
3
NFS Version 3

 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Nicht unterstützt
Unterstützte Mindestversion (Server)
WindowsServer 2008
Ende des Supports (Client)
Nicht unterstützt
Ende des Supports (Server)
Windows Server 2008 R2

Siehe auch

Deviceiocontrol