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]
-
이 작업에는 사용되지 않습니다. 를 0으로 설정합니다.
-
lpOutBuffer [out]
-
NFS_FILE_ATTRIBUTES 구조를 포함하는 출력 버퍼에 대한 포인터입니다. 자세한 내용은 주의 섹션을 참조하세요.
-
nOutBufferSize [in]
-
출력 버퍼의 크기(바이트)입니다.
-
lpBytesReturned [out]
-
출력 버퍼에 저장된 데이터의 크기를 바이트 단위로 받는 변수에 대한 포인터입니다.
출력 버퍼가 너무 작으면 호출이 실패하고 GetLastError 는 ERROR_INSUFFICIENT_BUFFER 반환하고 lpBytesReturned 은 0입니다.
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은 0이 아닌 값을 반환합니다.
작업이 실패하거나 보류 중인 경우 DeviceIoControl은 0을 반환합니다. 확장 오류 정보를 가져오려면 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 파일과 같은 특수 파일 형식에 사용되는 불투명 값입니다.
-
초
-
1970년 1월 1일(UTC) 이후의 초를 나타내는 64비트 값입니다.
-
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 구조체입니다.
참고
이 구조체의 멤버에 대한 자세한 설명은 NFS 버전 3 프로토콜 사양(RFC 1813에 정의된 대로)의 fattr3 구조를 참조하세요.
-
Version
-
NFS 공유에 대한 핸들을 만든 연결이 NFS 버전 2 또는 NFS 버전 3 프로토콜을 통해 생성되었는지 여부를 지정합니다.
값 설명 2 NFS 버전 2 3 NFS 버전 3
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
지원되는 버전 없음 |
지원되는 최소 서버 |
Windows Server 2008 |
클라이언트 지원 종료 |
지원되는 버전 없음 |
서버 지원 종료 |
Windows Server 2008 R2 |
추가 정보