DA_GET_NFS_ATTRIBUTES控制項程式碼
DA_GET_NFS_ATTRIBUTES控制程式代碼會查詢 NFS 共用的其他資訊。
若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函 式。
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]
-
NFS 共用上檔案的控制碼。 若要取得此控制碼,請呼叫 CreateFile 函式。
-
dwIoControlCode [in]
-
作業的控制程式代碼。 使用此作業 DA_GET_NFS_ATTRIBUTES 。
-
lpInBuffer
-
未與這項作業搭配使用;設定為 Null。
-
nInBufferSize [in]
-
未與這項作業搭配使用;設定為零。
-
lpOutBuffer [out]
-
輸出緩衝區的指標,其中包含 NFS_FILE_ATTRIBUTES 結構。 如需詳細資訊,請參閱<備註>一節。
-
nOutBufferSize [in]
-
輸出緩衝區的大小 (以位元組為單位)。
-
lpBytesReturned [out]
-
變數的指標,接收儲存在輸出緩衝區中的資料大小,以位元組為單位。
如果輸出緩衝區太小,呼叫就會失敗, GetLastError 會傳回 ERROR_INSUFFICIENT_BUFFER,而 lpBytesReturned 為零。
如果 lpOverlapped 為 Null, 則 lpBytesReturned 不能是 Null。 即使作業未傳回任何輸出資料且 lpOutBuffer 為 Null, DeviceIoControl 仍會使用 lpBytesReturned。 在這類作業之後, lpBytesReturned 的值是無意義的。
如果 lpOverlapped 不是 Null, 則 lpBytesReturned 可以是 Null。 如果此參數不是 Null ,而且作業會傳回資料, 則 lpBytesReturned 在重迭的作業完成之前是無意義的。 若要擷取傳回的位元組數目,請呼叫 GetOverlappedResult。 如果 hDevice 參數與 I/O 完成埠相關聯,您可以呼叫 GetQueuedCompletionStatus來擷取傳回的位元組數目。
-
lpOverlapped [in]
-
重迭結構的指標。
如果 開啟 hDevice 而不指定 FILE_FLAG_OVERLAPPED,則會忽略 lpOverlapped 。
如果 hDevice 是以 FILE_FLAG_OVERLAPPED 旗標開啟,則會以重迭的 (非同步) 作業來執行。 在此情況下, lpOverlapped 必須指向包含事件物件控制碼的有效 OVERLAPPED 結構。 否則,函式會以無法預期的方式失敗。
針對重迭的作業, DeviceIoControl 會立即傳回,而且當作業完成時會發出事件物件的訊號。 否則,函式不會在作業完成或發生錯誤之前傳回。
傳回值
如果作業順利完成, DeviceIoControl 會傳回非零值。
如果作業失敗或擱置中, DeviceIoControl 會 傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
此控制項程式碼沒有相關聯的標頭檔。 您必須定義控制項程式碼和資料結構,如下所示。
#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;
結構成員可描述如下。
-
SpecData1
-
不透明值,用於特殊檔案類型,例如區塊特殊、字元特殊和 FIFO 檔案。
-
SpecData2
-
不透明值,用於特殊檔案類型,例如區塊特殊、字元特殊和 FIFO 檔案。
-
秒
-
64 位值,表示自 1970 年 1 月 1 日起的秒數, (UTC) 。
-
nSeconds
-
要加入至 Seconds 成員的奈秒數。
-
FileType
-
共用的 NFS 檔案類型。
NFS 檔案類型 描述 NFS_TYPE_REG 一般檔案。 NFS_TYPE_DIR 目錄。 NFS_TYPE_BLK 區塊特殊檔案。 NFS_TYPE_CHR 字元特殊檔案。 NFS_TYPE_LNK 符號連結。 NFS_TYPE_SOCK Windows 通訊端。 NFS_TYPE_FIFO FIFO 檔案。 -
模式
-
檔案模式。
-
NLink
-
共用的連結數目。
-
Uid
-
UNIX 使用者識別碼 (UID) 。
-
Gid
-
UNIX 群組識別碼 (GID) 。
-
大小
-
檔案大小,以位元組為單位。
-
使用
-
所使用的檔案大小,以位元組為單位。 這與檔案大小相同。
-
Rdev
-
裝置識別碼。
-
Fsid
-
檔案系統識別碼。
-
FileId
-
檔案識別碼。
-
AccessTime
-
上次存取時間。
-
ModifyTime
-
上次修改時間。
-
ChangeTime
-
上次變更時間。
-
FileAttributes
-
NFS_FILE_ATTRIBUTES結構。
注意
如需此結構成員的詳細描述,請參閱RFC 1813) 中所定義的 NFS 第 3 版通訊協定規格 (中的) 。
-
版本
-
指定建立 NFS 共用控制碼的連接是透過 NFS 第 2 版或 NFS 第 3 版通訊協定。
值 描述 2 NFS 第 2 版 3 NFS 第 3 版
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
都不支援 |
最低支援的伺服器 |
Windows Server 2008 |
用戶端支援結束 |
都不支援 |
伺服器終止支援 |
Windows Server 2008 R2 |
另請參閱