コントロール コードの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 は無視されます。
hDevice が FILE_FLAG_OVERLAPPED フラグで開かれた場合、操作は重複した (非同期) 操作として実行されます。 この場合、 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
-
ブロック特殊、文字特殊、FIFO ファイルなどの特殊なファイル・タイプに使用される不透明値。
-
SpecData2
-
ブロック特殊、文字特殊、FIFO ファイルなどの特殊なファイル・タイプに使用される不透明値。
-
秒
-
1970 年 1 月 1 日以降の秒数を表す 64 ビット値 (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構造体。
Note
この構造体のメンバーの詳細については、NFS バージョン 3 プロトコル仕様 (RFC 1813 で定義) の fattr3 構造体を参照してください。
-
バージョン
-
NFS 共有へのハンドルが作成された接続が NFS バージョン 2 または NFS バージョン 3 プロトコルを介しているかどうかを指定します。
値 説明 2 NFS バージョン 2 3 NFS バージョン 3
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
サポートなし |
サポートされている最小のサーバー |
Windows Server 2008 |
クライアント サポートの終了 |
サポートなし |
サーバー サポートの終了 |
Windows Server 2008 R2 |
関連項目