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_BUFFERlpBytesReturned 为零。

如果 lpOverlappedNULL则 lpBytesReturned 不能为 NULL。 即使操作不返回任何输出数据且 lpOutBufferNULLDeviceIoControl 也会使用 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