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

请参阅

DeviceIoControl