次の方法で共有


DsCrackNamesA 関数 (ntdsapi.h)

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

[in] flags

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

[in] formatOffered

入力名の形式を識別する DS_NAME_FORMAT 値の 1 つを格納します。

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

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

[in] formatDesired

出力名の形式を識別する DS_NAME_FORMAT 値の 1 つを格納します。 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 パラメーターの書式要素の値と、IADsNameTranslate インターフェイスで使用される ADS_NAME_TYPE_ENUM 列挙型で定義されている同様の名前の書式要素とを混同しないでください。 要素形式の 2 つのセットは同等ではなく、交換可能ではありません。
 

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows Vista
サポートされる最小サーバー Windows Server 2008
ターゲット プラットフォーム の ウィンドウズ
ヘッダー ntdsapi.h
ライブラリ Ntdsapi.lib
DLL Ntdsapi.dll

関連項目

ADS_NAME_TYPE_ENUM

DS_NAME_FLAGS

DS_NAME_FORMAT

DS_NAME_RESULT

DS_NAME_RESULT_ITEM

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

DsFreeNameResult の

IADsNameTranslate を する