Поделиться через


Код элемента управления 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 связан с портом завершения ввода-вывода, можно получить количество возвращаемых байтов, вызвав Метод GetQueuedCompletionStatus.

lpOverlapped [in]

Указатель на структуру OVERLAPPED .

Если 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-разрядное значение, представляющее секунды с 1 января 1970 года (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 .

Примечание

Более подробное описание элементов этой структуры см. в разделе Структура жирных 3 в спецификации протокола NFS версии 3 (как определено в RFC 1813).

 

Версия

Указывает, установлено ли подключение, на котором был создан дескриптор общей папки NFS, по протоколу NFS версии 2 или NFS версии 3.

Значение Описание
2
NFS версии 2
3
NFS версии 3

 

Требования

Требование Значение
Минимальная версия клиента
Ни одна версия не поддерживается
Минимальная версия сервера
Windows Server 2008
Окончание поддержки клиентов
Ни одна версия не поддерживается
Прекращение поддержки сервера
Windows Server 2008 R2

См. также раздел

DeviceIoControl