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
-
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.
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.
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
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 |