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
parameters
-
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]
-
指向 OVERLAPPED 结构的指针。
如果在未指定FILE_FLAG_OVERLAPPED的情况下打开 hDevice,则忽略 lpOverlapped。
如果使用 FILE_FLAG_OVERLAPPED 标志打开 hDevice,则操作将作为重叠 (异步) 操作执行。 在这种情况下, 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
-
用于特殊文件类型(如 block-special、character-special 和 FIFO 文件)的不透明值。
-
SpecData2
-
用于特殊文件类型(如 block-special、character-special 和 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
-
UID) (UNIX 用户标识符。
-
Gid
-
UNIX 组标识符 (GID) 。
-
大小
-
文件大小(以字节为单位)。
-
使用
-
使用的文件大小(以字节为单位)。 这与文件大小相同。
-
Rdev
-
设备标识符。
-
Fsid
-
文件系统标识符。
-
FileId
-
文件标识符。
-
AccessTime
-
上次访问时间。
-
ModifyTime
-
上次修改时间。
-
ChangeTime
-
上次更改时间。
-
FileAttributes
-
NFS_FILE_ATTRIBUTES结构。
注意
有关此结构成员的更详细说明,请参阅 RFC 1813) 中定义的 NFS 版本 3 协议规范 (中的 fattr3 结构。
-
版本
-
指定创建 NFS 共享句柄的连接是通过 NFS 版本 2 还是 NFS 版本 3 协议创建的。
值 描述 2 NFS 版本 2 3 NFS 版本 3
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
无受支持的版本 |
最低受支持的服务器 |
Windows Server 2008 |
客户端支持终止 |
无受支持的版本 |
终止服务器支持 |
Windows Server 2008 R2 |
请参阅