コントロール コードFSCTL_DFS_GET_PKT_ENTRY_STATEする
FSCTL_DFS_GET_PKT_ENTRY_STATE制御コードは、NetDfsGetClientInfo 関数と同じ情報を取得できますが、DFS サーバーの待機時間が長い一部の構成ではパフォーマンスを向上させることができます。 パフォーマンスの問題がない限り、 FSCTL_DFS_GET_PKT_ENTRY_STATE コントロール コードを使用することはお勧めしません。
この操作を実行するには、次のパラメーターを使用して DeviceIoControl 関数を呼び出します。
BOOL
WINAPI
DeviceIoControl( (HANDLE) hDevice, // handle to device
(DWORD) FSCTL_DFS_GET_PKT_ENTRY_STATE, // dwIoControlCode(LPDWORD) lpInBuffer, // input buffer
(DWORD) nInBufferSize, // size of input buffer
(LPDWORD) lpOutBuffer, // output buffer
(DWORD) nOutBufferSize, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped ); // OVERLAPPED structure
パラメーター
-
hDevice [in]
-
デバイスへのハンドル。 デバイス ハンドルを取得するには、 CreateFile 関数を呼び出します。
-
dwIoControlCode [in]
-
操作の制御コード。 この操作 にはFSCTL_DFS_GET_PKT_ENTRY_STATE を使用します。
-
lpInBuffer
-
DFS_GET_PKT_ENTRY_STATE_ARG構造体のアドレスと、その後に続く 1 から 3 個の Unicode 文字列。
-
nInBufferSize [in]
-
lpInBuffer パラメーターが指すバッファーのサイズ (バイト単位)。
-
lpOutBuffer [out]
-
DFS_INFO_# 構造体と、DFS_INFO_# 構造体が指す文字列と構造体のアドレス。 返される特定の構造体は、入力バッファーで渡されるDFS_GET_PKT_ENTRY_STATE_ARG構造体の Level メンバーによって異なります。
-
nOutBufferSize [in]
-
lpOutBuffer パラメーターが指すバッファーのサイズ (バイト単位)。 返された DFS_INFO_# 構造体によって参照される文字列と構造体が出力バッファー内にもあるため、このバッファーは指定された DFS_INFO_# 構造体よりも大きくする必要があります。
-
lpBytesReturned [out]
-
出力バッファーに格納されているデータのサイズをバイト単位で受け取る変数へのポインター。
出力バッファーが小さすぎるが、 少なくとも DWORD を保持するのに十分な大きさの場合、呼び出しは失敗し、 GetLastError は ERROR_MORE_DATAを返し、出力バッファーの最初の DWORD には必要なサイズが含まれます。 出力バッファーが DWORD を保持できない場合、呼び出しは 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 を呼び出します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
ヘッダー |
|