DsCrackNamesA 関数 (ntdsapi.h)

DsCrackNames 関数は、ディレクトリ サービス オブジェクト名の配列をある形式から別の形式に変換します。 名前変換を使用すると、クライアント アプリケーションは、さまざまなディレクトリ サービス オブジェクトを識別するために使用される複数の名前の間でマップできます。 たとえば、ユーザー オブジェクトは、SAM アカウント名 (ドメイン\ユーザー名)、ユーザー プリンシパル名 (UserName@Domain.com)、または識別名で識別できます。

構文

NTDSAPI DWORD DsCrackNamesA(
  [in]  HANDLE           hDS,
  [in]  DS_NAME_FLAGS    flags,
  [in]  DS_NAME_FORMAT   formatOffered,
  [in]  DS_NAME_FORMAT   formatDesired,
  [in]  DWORD            cNames,
  [in]  const LPCSTR     *rpNames,
  [out] PDS_NAME_RESULTA *ppResult
);

パラメーター

[in] hDS

DSBind 関数または DSBindWithCred 関数から取得したディレクトリ サービス ハンドルが含まれます。 フラグDS_NAME_FLAG_SYNTACTICAL_ONLYが含まれている場合、hDSNULL にすることができます

[in] flags

名前構文の解読方法を決定するために使用される 1 つ以上の DS_NAME_FLAGS 値が含まれます。

[in] formatOffered

入力名の形式を識別する DS_NAME_FORMAT 値のいずれかを格納します。

このパラメーターには 、DS_LIST_NCS 値を渡すこともできます。 これにより、 DsCrackNames は 現在のフォレスト内のすべての名前付けコンテキストの識別名を返します。 formatDesired パラメーターは無視されます。 cName は 少なくとも 1 つであり、 rpNames 内のすべての文字列の長さが 0 文字を超える必要があります。 rpNames 文字列の内容は無視されます。

DS_LIST_NCS は、パブリッシュされたヘッダー ファイルでは定義されていません。 この値を使用するには、次に示す正確な形式で定義します。
 
#ifndef DS_LIST_NCS
    #define DS_LIST_NCS 0xfffffff6
#endif

[in] formatDesired

出力名の形式を識別する DS_NAME_FORMAT 値のいずれかを格納します。 DS_SID_OR_SID_HISTORY_NAME値はサポートされていません。

[in] cNames

rpNames 配列内の要素の数を格納します。

[in] rpNames

変換する名前を含む null で終わる文字列へのポインターの配列へのポインター。

[out] ppResult

変換された名前を含む DS_NAME_RESULT 構造体を受け取る PDS_NAME_RESULT 値へのポインター。 呼び出し元は、 DsFreeNameResult を呼び出すことによって、不要になったときにこのメモリを解放する必要があります。

戻り値

Win32 エラー値、RPC エラー値、または次のいずれかを返します。

注釈

名前変換要求の成功は、クライアントがバインドされている場所によって異なります。 クライアントは、何らかのバリアントの DsBind を使用して、ディレクトリ サービスの特定のインスタンスにバインドします。 グローバル カタログにバインドされている場合、名前マッピングのスコープはフォレスト全体です。 グローバル カタログにバインドされていない場合、名前マッピングのスコープは、そのドメイン コントローラーのグローバル カタログでカバーされていないドメインです。 グローバル カタログにバインドされておらず、名前が見つからないが、入力名がそのドメインを明確に識別し、このドメインがフォレスト内にある場合、戻りデータは目的のドメインの DNS ドメイン名を識別します。 クライアントは、このデータを使用して正しいドメイン コントローラーまたはグローバル カタログにバインドし、新しいバインド ハンドルを使用して DsCrackNames を再度呼び出す必要があります。

DsCrackNames からの戻り値は、無効なパラメーターやメモリ不足などのエラーを示します。 ただし、個々の名前の変換に関する問題は、入力名ごとに返されるDS_NAME_RESULT_ITEM構造体の状態メンバーで報告されます。

メモDsCrackNames 関数で使用される formatOffered パラメーターの format 要素の値と、IADsNameTranslate インターフェイスで使用されるADS_NAME_TYPE_ENUM列挙で定義されているのと同様の名前の format 要素を混同しないでください。 要素形式の 2 つのセットは同等ではなく、交換可能ではありません。
 

注意

ntdsapi.h ヘッダーは、DSCrackNames をエイリアスとして定義します。このエイリアスは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー ntdsapi.h
Library Ntdsapi.lib
[DLL] Ntdsapi.dll

こちらもご覧ください

ADS_NAME_TYPE_ENUM

DS_NAME_FLAGS

DS_NAME_FORMAT

DS_NAME_RESULT

DS_NAME_RESULT_ITEM

ドメイン コントローラーとレプリケーション管理機能

DsFreeNameResult

IADsNameTranslate