Erro de protocolo devido a interface preterida no SharePoint 2016
As implementações do manipulador de protocolo usando as interfaces listadas neste artigo no arquivo de cabeçalho srchprth.h agora foram preteridas no SharePoint 2016. Especificamente, o manipulador de protocolo para interfaces preteridas gera o erro "O manipulador de protocolo não pode ser carregado".
Sintoma
Você vê a seguinte mensagem de erro ao carregar o manipulador de protocolo:
The protocol handler <name of custom protocol handler> cannot be loaded. Error description: No such interface supported.
Causa
Você está usando o arquivo de cabeçalho srchprth.h na implementação do manipulador de protocolo. Este arquivo contém interfaces preteridas no SharePoint 2016.
Resolução
Substitua as interfaces obsoletas na implementação do manipulador de protocolo pelas que atualmente têm suporte:
srchprth.h (atualizado)
urlaccsdk.h (novo)
Interfaces preteridas
As interfaces preteridas incluem:
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 contém muitos parâmetros, alguns dos quais podem ser opcionais. Esses parâmetros são principalmente uma expansão de estruturas anteriores preteridas.
Confira também
Para obter mais informações, consulte Manipuladores de Protocolos de Pesquisa Empresarial.