コントロール コード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 を保持するのに十分な大きさの場合、呼び出しは失敗し、 GetLastErrorERROR_MORE_DATAを返し、出力バッファーの最初の DWORD には必要なサイズが含まれます。 出力バッファーが DWORD を保持できない場合、呼び出しは ERROR_INSUFFICIENT_BUFFERで失敗し、 lpBytesReturned は 0 です。

lpOverlappedNULL の場合、lpBytesReturnedNULL にすることはできません。 操作で出力データが返されず、 lpOutBufferNULL の場合でも、 DeviceIoControllpBytesReturned を使用します。 このような操作の後、 lpBytesReturned の値は意味がありません。

lpOverlappedNULL でない場合、lpBytesReturned には NULL を指定できます。 このパラメーターが NULL ではなく、操作がデータを返す場合、重複する操作が完了するまで lpBytesReturned は意味がありません。 返されたバイト数を取得するには、 GetOverlappedResult を呼び出します。 hDevice パラメーターが I/O 入力候補ポートに関連付けられている場合は、GetQueuedCompletionStatus を呼び出して返されるバイト数を取得できます。

lpOverlapped [in]

OVERLAPPED 構造体へのポインター。

FILE_FLAG_OVERLAPPEDを指定せずに hDevice を開いた場合、lpOverlapped は無視されます。

hDeviceFILE_FLAG_OVERLAPPED フラグで開かれた場合、操作は重複 (非同期) 操作として実行されます。 この場合、 lpOverlapped は、イベント オブジェクトへのハンドルを含む有効な OVERLAPPED 構造体を指す必要があります。 それ以外の場合、関数は予期しない方法で失敗します。

重複する操作の場合、 DeviceIoControl は直ちにを返し、操作が完了するとイベント オブジェクトが通知されます。 それ以外の場合、関数は操作が完了するかエラーが発生するまで戻りません。

戻り値

操作が正常に完了すると、 DeviceIoControl は 0 以外の値を返します。

操作が失敗した場合、または保留中の場合、 DeviceIoControl は 0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
ヘッダー
LmDfs.h (LmDfs.h を含む)

関連項目

DeviceIoControl

NetDfsGetClientInfo