Win32 API 日本語リファレンス
ホームNetworking.WinSock › NAPI_PROVIDER_LEVEL

NAPI_PROVIDER_LEVEL

列挙型
基底型i4

メンバー 3

名前10進16進説明
ProviderLevel_None00x0

名前空間プロバイダーは現在のドメインをサポートしていません。この値は、サポート対象ドメインの一覧からドメインを削除することなく、そのドメインのサポートを一時的に無効にするために使用できます。

プロバイダーのインストールおよび登録時に、指定されたドメインの NAPI_DOMAIN_DESCRIPTION_BLOBAuthLevel メンバーに ProviderLevel_None が設定されている場合、そのプロバイダーがワイルドカードプロバイダーとして登録されていない限り、そのドメイン内のアドレスの解決または登録のために名前空間プロバイダーが呼び出されることはありません。

ProviderLevel_None の値を持つ NS_EMAIL 名前空間プロバイダーが、1 つのドメインに対して複数存在する場合があります。この値を持つ名前空間プロバイダーがワイルドカードプロバイダーとしても登録されている場合、それらのプロバイダーは Winsock カタログに現れる順序で呼び出されます。

ProviderLevel_Secondary10x1

名前空間プロバイダーは、NS_EMAIL 名前空間内のドメインに対するセカンダリプロバイダーです。名前空間プロバイダーは、対象ドメインの NS_EMAIL 名を解決および登録でき、プライマリプロバイダーと同じ結果を返せる場合、そのドメインのセカンダリプロバイダーになることができます。プロバイダーのインストールおよび登録時に、指定されたドメインの NAPI_DOMAIN_DESCRIPTION_BLOBAuthLevel メンバーに ProviderLevel_Secondary が設定されている場合、そのドメインのプライマリプロバイダーが現在利用できないとき、またはプライマリプロバイダーがそのドメイン内のアドレスを解決または登録できなかったときに、このプロバイダーが呼び出されます。

ProviderLevel_Secondary の値を持つセカンダリ NS_EMAIL 名前空間プロバイダーが、1 つのドメインに対して複数存在する場合があります。複数のセカンダリ名前空間プロバイダーが存在する場合、それらのプロバイダーは Winsock カタログに現れる順序で呼び出されます。

ProviderLevel_Primary20x2

名前空間プロバイダーは、NS_EMAIL 名前空間内のドメインに対するプライマリプロバイダーです。名前空間プロバイダーは、あるドメインのすべての NS_EMAIL 名を所有し、それらすべての名前のマスターデータにアクセスできる場合、そのドメインのプライマリプロバイダーであると宣言できます。

ローカルシステムに登録される、あるドメインのプライマリ NS_EMAIL 名前空間プロバイダーは 1 つだけであるべきです。

メモ 同じドメインに対してプライマリプロバイダーであると宣言する NS_EMAIL 名前空間プロバイダーが 2 つ存在してはなりません。複数のプロバイダーが同じドメインのプライマリプロバイダーとして登録しようとした場合、そのドメインについて Winsock 名前空間カタログ内で最初に見つかったプロバイダーがプライマリプロバイダーとして呼び出されます。他のプロバイダーによるプライマリプロバイダーの宣言はすべて無視されます。

公式ドキュメント

NAPI_PROVIDER_LEVEL 列挙型は、指定されたドメインに対する NS_EMAIL 名前空間プロバイダーのプロバイダー権限レベルを指定します。

解説(Remarks)

この列挙型は Windows Vista 以降でサポートされています。

NAPI_PROVIDER_LEVEL 列挙型は、NAPI_DOMAIN_DESCRIPTION_BLOB 構造体で、あるドメインに対する NS_EMAIL 名前空間プロバイダーの権限レベルを指定するために使用されます。NS_EMAIL 名前空間に登録された各名前空間プロバイダーは、複数のドメインをサポートできます。サポートするドメインの一覧は、プロバイダー登録 BLOB 内で NAPI_DOMAIN_DESCRIPTION_BLOB 構造体のリストとして指定します。サポートされる各ドメインの指定には、NAPI_DOMAIN_DESCRIPTION_BLOBAuthLevel メンバー内に NAPI_PROVIDER_LEVEL 値が含まれ、そのドメインに対してプロバイダーが提供するサポートの種類を表します。

NS_EMAIL 名前空間プロバイダーは、指定したドメインに加えて、プロバイダーのインストール時に渡す NAPI_PROVIDER_INSTALLATION_BLOBfSupportsWildCard メンバーに 0 以外を指定することで、任意のドメインをサポートしようとするワイルドカードプロバイダーとして登録することもできます。

ドメイン内のアドレスを解決または登録する際、名前空間プロバイダーは次の順序で呼び出されます。そのドメインのプライマリプロバイダーとして登録された名前空間プロバイダーがある場合、まずそのプライマリプロバイダーが呼び出されます。以降は、名前空間クエリで信頼できる (authoritative) 結果が要求されているかどうかによって 2 つのケースに分かれます。クエリの既定では、信頼できる結果が要求されます。

クエリで信頼できる結果が要求されている場合、名前空間プロバイダーは次のように呼び出されます。プライマリプロバイダーが利用できない場合、またはアドレスを解決または登録できない場合は、Winsock カタログ内の最初のセカンダリプロバイダーが呼び出されます。そのセカンダリプロバイダーが利用できない場合、またはアドレスを解決または登録できない場合は、Winsock カタログ内の次のセカンダリプロバイダーが呼び出されます。すべてのセカンダリプロバイダーが利用できない場合、またはアドレスを解決または登録できない場合は、Winsock カタログ内の最初のワイルドカードプロバイダーが呼び出されます。最初のワイルドカードプロバイダーが利用できない場合、またはアドレスを解決または登録できない場合は、Winsock カタログ内の次のワイルドカードプロバイダーが呼び出されます。

クエリで信頼できない (non-authoritative) 結果が要求されている場合、名前空間プロバイダーは次のように呼び出されます。プライマリプロバイダー、すべてのセカンダリプロバイダー、およびすべてのワイルドカードプロバイダーが呼び出され、すべてのクエリの結果が返されます。 最初にプライマリプロバイダーが呼び出されます。次に、Winsock カタログ内の順序に基づいてセカンダリプロバイダーが呼び出されます。続いて、Winsock カタログ内の順序に基づいてワイルドカードプロバイダーが呼び出されます。返される結果は、これらのクエリの順序に基づきます。

NAPI_DOMAIN_DESCRIPTION_BLOB 構造体は、NS_EMAIL 名前空間プロバイダーを記述するために NAPI_PROVIDER_INSTALLATION_BLOB 構造体内で使用されます。

WSCInstallNameSpaceEx 関数および WSCInstallNameSpaceEx32 関数は、NAPI_PROVIDER_INSTALLATION_BLOB 構造体を使用して NS_EMAIL 名前空間用の名前空間プロバイダーをインストールするために使用されます。

WSAEnumNameSpaceProvidersEx 関数および WSCEnumNameSpaceProvidersEx32 関数は、NS_EMAIL 名前空間の名前空間プロバイダーを列挙し、プロバイダーの NAPI_PROVIDER_INSTALLATION_BLOB 構造体を取得するために使用されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum NAPI_PROVIDER_LEVEL : int {
    ProviderLevel_None = 0,
    ProviderLevel_Secondary = 1,
    ProviderLevel_Primary = 2
} NAPI_PROVIDER_LEVEL;
public enum NAPI_PROVIDER_LEVEL : int
{
    ProviderLevel_None = 0,
    ProviderLevel_Secondary = 1,
    ProviderLevel_Primary = 2,
}
Public Enum NAPI_PROVIDER_LEVEL As Integer
    ProviderLevel_None = 0
    ProviderLevel_Secondary = 1
    ProviderLevel_Primary = 2
End Enum
import enum

class NAPI_PROVIDER_LEVEL(enum.IntEnum):
    ProviderLevel_None = 0
    ProviderLevel_Secondary = 1
    ProviderLevel_Primary = 2
// NAPI_PROVIDER_LEVEL
pub const ProviderLevel_None: i32 = 0;
pub const ProviderLevel_Secondary: i32 = 1;
pub const ProviderLevel_Primary: i32 = 2;
// NAPI_PROVIDER_LEVEL
const (
	ProviderLevel_None int32 = 0
	ProviderLevel_Secondary int32 = 1
	ProviderLevel_Primary int32 = 2
)
const
  ProviderLevel_None = 0;
  ProviderLevel_Secondary = 1;
  ProviderLevel_Primary = 2;
// NAPI_PROVIDER_LEVEL
pub const ProviderLevel_None: i32 = 0;
pub const ProviderLevel_Secondary: i32 = 1;
pub const ProviderLevel_Primary: i32 = 2;
const
  ProviderLevel_None* = 0
  ProviderLevel_Secondary* = 1
  ProviderLevel_Primary* = 2
enum NAPI_PROVIDER_LEVEL : int {
    ProviderLevel_None = 0,
    ProviderLevel_Secondary = 1,
    ProviderLevel_Primary = 2,
}
#define global ProviderLevel_None      0x0
#define global ProviderLevel_Secondary 0x1
#define global ProviderLevel_Primary   0x2