SharePoint 2016 で使用されなくなったインターフェイスが原因で発生するプロトコル ハンドラーのエラー
この記事に記載されている srchprth.h ヘッダー ファイルのインターフェイスを使用したプロトコル ハンドラー実装は、SharePoint 2016 では使用されなくなりました。 具体的には、使用されていないインターフェイスのプロトコル ハンドラーでは、「プロトコル ハンドラーを読み込むことができません」というエラーが発生します。
現象
プロトコル ハンドラーを読み込むとき、次のエラー メッセージが表示されます。
The protocol handler <name of custom protocol handler> cannot be loaded. Error description: No such interface supported.
原因
プロトコル ハンドラー実装では、srchprth.h ヘッダー ファイルを使用します。 このファイルには、SharePoint 2016 では使用されていないインターフェイスが含まれています。
解決策
プロトコル ハンドラー実装で、使用されていないインターフェイスを、現在サポートされているインターフェイスに置き換えます。
srchprth.h (更新)
urlaccsdk.h (新規)
使用されていないインターフェイス
次のような、使用されていないインターフェイスがあります。
interface 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 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 には多くのパラメーターが含まれており、任意のものがあります。 これらのパラメーターは、ほとんどの場合、前に使用されなくなった構造体を拡張したものです。
関連項目
詳細については、「エンタープライズ検索プロトコル ハンドラー」を参照してください。