SharePoint 2016 で使用されなくなったインターフェイスが原因で発生するプロトコル ハンドラーのエラーProtocol handler error due to deprecated interface in SharePoint 2016

この記事に記載されている srchprth.h ヘッダー ファイルのインターフェイスを使用したプロトコル ハンドラー実装は、SharePoint 2016 では使用されなくなりました。Protocol handler implementations using the interfaces listed in this article in the srchprth.h header file are now deprecated in SharePoint 2016. 具体的には、使用されていないインターフェイスのプロトコル ハンドラーでは、「プロトコル ハンドラーを読み込むことができません」というエラーが発生します。Specifically, the protocol handler for deprecated interfaces generates the error "The protocol handler cannot be loaded".

現象Symptom

プロトコル ハンドラーを読み込むとき、次のエラー メッセージが表示されます。You see the following error message when you load the protocol handler:


The protocol handler <name of custom protocol handler> cannot be loaded. Error description: No such interface supported.

原因Cause

プロトコル ハンドラー実装では、srchprth.h ヘッダー ファイルを使用します。You are using the srchprth.h header file in your protocol handler implementation. このファイルには、SharePoint 2016 では使用されていないインターフェイスが含まれています。This file contains interfaces deprecated in SharePoint 2016.

解決策Resolution

プロトコル ハンドラー実装で、使用されていないインターフェイスを、現在サポートされているインターフェイスに置き換えます。Replace the deprecated interfaces in your protocol handler implementation with those that are currently supported:

  • srchprth.h (更新)srchprth.h (updated)

  • urlaccsdk.h (新規)urlaccsdk.h (new)

使用されていないインターフェイスDeprecated Interfaces

次のような、使用されていないインターフェイスがあります。The deprecated interfaces include the following:

interface ISearchProtocol : IUnknowninterface ISearchProtocol : IUnknown

{

    HRESULT Init([in] TIMEOUT_INFO *pTimeoutInfo,
                 [in] IProtocolHandlerSite *pProtocolHandlerSite,
                 [in] PROXY_INFO *pProxyInfo);

    HRESULT CreateAccessor([in] LPCWSTR pcwszURL,
                           [in] AUTHENTICATION_INFO *pAuthenticationInfo,
                           [in] INCREMENTAL_ACCESS_INFO *pIncrementalAccessInfo,
                           [in] ITEM_INFO *pItemInfo,
                           [out] IUrlAccessor **ppAccessor);

    HRESULT CloseAccessor([in] IUrlAccessor *pAccessor);
    HRESULT ShutDown();
}

TIMEOUT_INFO
{
    DWORD       dwSize;
    DWORD       dwConnectTimeout;
    DWORD       dwDataTimeout;
}

PROXY_INFO
{
    DWORD           dwSize;
    LPCWSTR         pcwszUserAgent;
    PROXY_ACCESS    paUseProxy;
    BOOL            fLocalBypass;
    DWORD           dwPortNumber;
    LPCWSTR         pcwszProxyName;
    LPCWSTR         pcwszBypassList;
}

AUTHENTICATION_INFO
{
    DWORD       dwSize;
    AUTH_TYPE   atAuthenticationType;
    LPCWSTR     pcwszUser;
    LPCWSTR     pcwszPassword;
}

INCREMENTAL_ACCESS_INFO
{
                     DWORD       dwSize;
                     FILETIME    ftLastModifiedTime;
}

IProtocolHandler: public IUnknownIProtocolHandler: public IUnknown


{
                     public:
                           HRESULT Init(
                                  /* [in] */ LPCWSTR pwszUserAgent,
                                  /* [in] */ DWORD dwUseProxy,
                                  /* [in] */ DWORD dwConnectTimeout,
                                  /* [in] */ DWORD dwDataTimeout,
                                  /* [in] */ DWORD dwLocalByPassProxy,
                                  /* [in] */ DWORD dwPortNumber,
                                  /* [in] */ LPCWSTR pcwszProxyName,
                                  /* [in] */ LPCWSTR pcwszByPassList,
                                  /* [in] */ LPCWSTR pcwszProxyUserName,
                                  /* [in] */ LPCWSTR pcwszProxyPassword,
                                  /* [in] */ IProtocolHandlerSite *pProtocolHandlerSite) = 0;

                           HRESULT CreateAccessor(
                                  /* [in] */ AccessorInitParams *pParams,
                                  /* [out] */ IUrlAccessor **ppAccessor) = 0;

                           HRESULT CloseAccessor(
                                  /* [in] */ IUrlAccessor *pAccessor) = 0;

                           HRESULT SetProcessMemorySize(
                                  /* [in] */ DWORD dwFltrDmnMemoryQuota) = 0;
                     };

struct AccessorInitParameters
                     {
                           LPCWSTR pwszUrl;
                           LPCWSTR pwszCrawlTarget;
                           BOOL fUseSSLWithCT;
                           BOOL fUseCTForIntranet;
                           DWORD eAuthenticationType;
                           LPCWSTR pwszUser;
                           LPCWSTR pwszPassword;
                           LPCWSTR pwszHttpFrom;
                           FILETIME ftIfModifiedSince;
                           DWORD dwCrawlId;
                           DWORD dwMiniCrawlID;
                           DWORD dwDeletedCount;
                           DWORD dwDeletedCountSync;
                           BOOL fDeletedCountValid;
                           LPCWSTR pwszAppName;
                           LPCWSTR pwszCatName;
                           DWORD dwFilterPipeFlags;
                           LPCWSTR pwszContentClass;
                           LPCWSTR pwszSearchPropertyMappingUrl;
                           BYTE *pbChangeLogCookie;
                           DWORD cbChangeLogCookieLength;
                           BYTE *pbChangeLogCookieEnd;
                           DWORD cbChangeLogCookieEndLength;
                           LPCWSTR pwszFormsAuthURL;
                           LPCWSTR pwszFormsAuthPost;
                           BYTE *pbCachedBlob;
                           DWORD cbCachedBlobLength;
                           DWORD dwPHFlags;
                           LPCWSTR pwszSecurityId;
                           LPCWSTR pwszCorrelationId;
                           CLSID *pTenantID;
                           HANDLE hImpersonationToken;

                     }      AccessorInitParams;
  • AccessorInitParams には多くのパラメーターが含まれており、任意のものがあります。AccessorInitParams contains many parameters, some of which may be optional. これらのパラメーターは、ほとんどの場合、前に使用されなくなった構造体を拡張したものです。These parameters are mostly an expansion of previous deprecated structs.

関連項目See also

詳細については、「エンタープライズ検索プロトコル ハンドラー」を参照してください。For more information, see Enterprise Search Protocol Handlers.