You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
7.5 KiB
291 lines
7.5 KiB
// Provider interface header file
|
|
//
|
|
// all secure provider calls are prefixed by "SP"
|
|
// providers must implement all of these interfaces!
|
|
//
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"{
|
|
#endif
|
|
|
|
// note: we typedef here because it is convenient and needed for
|
|
// filling struct by GetProcAddress() later. After defining the types,
|
|
// we simply instantiate the actual call as an implementation of that type.
|
|
|
|
|
|
// load notification, register callbacks
|
|
typedef
|
|
HRESULT SPPROVIDERINITIALIZE(
|
|
DISPIF_CALLBACKS *psCallbacks);
|
|
|
|
SPPROVIDERINITIALIZE SPProviderInitialize;
|
|
|
|
|
|
// Acquire Context notification
|
|
typedef
|
|
HRESULT SPACQUIRECONTEXT(
|
|
PST_PROVIDER_HANDLE* phPSTProv,
|
|
DWORD dwFlags);
|
|
|
|
SPACQUIRECONTEXT SPAcquireContext;
|
|
|
|
|
|
// Release Context notification
|
|
typedef
|
|
HRESULT SPRELEASECONTEXT(
|
|
PST_PROVIDER_HANDLE* phPSTProv,
|
|
DWORD dwFlags);
|
|
|
|
SPRELEASECONTEXT SPReleaseContext;
|
|
|
|
|
|
// GetProvInfo
|
|
typedef
|
|
HRESULT SPGETPROVINFO(
|
|
/* [out] */ PPST_PROVIDERINFO __RPC_FAR *ppPSTInfo,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPGETPROVINFO SPGetProvInfo;
|
|
|
|
|
|
// GetProvParam
|
|
typedef
|
|
HRESULT SPGETPROVPARAM(
|
|
/* [in] */ PST_PROVIDER_HANDLE* phPSTProv,
|
|
/* [in] */ DWORD dwParam,
|
|
/* [out] */ DWORD __RPC_FAR *pcbData,
|
|
/* [size_is][size_is][out] */
|
|
BYTE __RPC_FAR *__RPC_FAR *ppbData,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPGETPROVPARAM SPGetProvParam;
|
|
|
|
// SetProvParam
|
|
typedef
|
|
HRESULT SPSETPROVPARAM(
|
|
/* [in] */ PST_PROVIDER_HANDLE* phPSTProv,
|
|
/* [in] */ DWORD dwParam,
|
|
/* [in] */ DWORD cbData,
|
|
/* [in] */ BYTE* pbData,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPSETPROVPARAM SPSetProvParam;
|
|
|
|
|
|
// EnumTypes
|
|
typedef
|
|
HRESULT SPENUMTYPES(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [out] */ GUID *pguidType,
|
|
/* [in] */ DWORD dwIndex,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPENUMTYPES SPEnumTypes;
|
|
|
|
// GetTypeInfo
|
|
typedef
|
|
HRESULT SPGETTYPEINFO(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ PPST_TYPEINFO *ppinfoType,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPGETTYPEINFO SPGetTypeInfo;
|
|
|
|
// EnumSubtypes
|
|
typedef
|
|
HRESULT SPENUMSUBTYPES(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [out] */ GUID *pguidSubtype,
|
|
/* [in] */ DWORD dwIndex,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPENUMSUBTYPES SPEnumSubtypes;
|
|
|
|
|
|
// GetSubtypeInfo
|
|
typedef
|
|
HRESULT SPGETSUBTYPEINFO(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [in] */ PPST_TYPEINFO *ppinfoSubtype,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPGETSUBTYPEINFO SPGetSubtypeInfo;
|
|
|
|
// EnumItems
|
|
typedef
|
|
HRESULT SPENUMITEMS(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [out] */ LPWSTR *ppszItemName,
|
|
/* [in] */ DWORD dwIndex,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPENUMITEMS SPEnumItems;
|
|
|
|
// CreateType
|
|
typedef
|
|
HRESULT SPCREATETYPE(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ PPST_TYPEINFO pinfoType,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPCREATETYPE SPCreateType;
|
|
|
|
// DeleteType
|
|
typedef
|
|
HRESULT SPDELETETYPE(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID __RPC_FAR *pguidType,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPDELETETYPE SPDeleteType;
|
|
|
|
// CreateSubtype
|
|
typedef
|
|
HRESULT SPCREATESUBTYPE(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [in] */ PPST_TYPEINFO pinfoSubtype,
|
|
/* [in] */ PPST_ACCESSRULESET psRules,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPCREATESUBTYPE SPCreateSubtype;
|
|
|
|
|
|
// DeleteSubtype
|
|
typedef
|
|
HRESULT SPDELETESUBTYPE(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID __RPC_FAR *pguidType,
|
|
/* [in] */ const GUID __RPC_FAR *pguidSubtype,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPDELETESUBTYPE SPDeleteSubtype;
|
|
|
|
// WriteItem
|
|
typedef
|
|
HRESULT SPWRITEITEM(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [in] */ LPCWSTR szItemName,
|
|
/* [in] */ DWORD cbData,
|
|
/* [size_is][in] */ BYTE *pbData,
|
|
/* [in] */ PPST_PROMPTINFO psPrompt,
|
|
/* [in] */ DWORD dwDefaultConfirmationStyle,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPWRITEITEM SPWriteItem;
|
|
|
|
// ReadItem
|
|
typedef
|
|
HRESULT SPREADITEM(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [in] */ LPCWSTR szItemName,
|
|
/* [out] */ DWORD *pcbData,
|
|
/* [size_is][size_is][out] */ BYTE **ppbData,
|
|
/* [in] */ PPST_PROMPTINFO psPrompt,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPREADITEM SPReadItem;
|
|
|
|
// OpenItem
|
|
typedef
|
|
HRESULT SPOPENITEM(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [in] */ LPCWSTR szItemName,
|
|
/* [in] */ DWORD dwModeFlags,
|
|
/* [in] */ PPST_PROMPTINFO psPrompt,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
// CloseItem
|
|
typedef
|
|
HRESULT SPCLOSEITEM(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [in] */ LPCWSTR szItemName,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
// DeleteItem
|
|
typedef
|
|
HRESULT SPDELETEITEM(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [in] */ LPCWSTR szItemName,
|
|
/* [in] */ PPST_PROMPTINFO psPrompt,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPDELETEITEM SPDeleteItem;
|
|
|
|
|
|
// ReadAccessRuleset
|
|
typedef
|
|
HRESULT SPREADACCESSRULESET(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [out] */ PPST_ACCESSRULESET *ppsRules,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPREADACCESSRULESET SPReadAccessRuleset;
|
|
|
|
// WriteAccessRuleset
|
|
typedef
|
|
HRESULT SPWRITEACCESSRULESET(
|
|
/* [in] */ PST_PROVIDER_HANDLE *phPSTProv,
|
|
/* [in] */ PST_KEY Key,
|
|
/* [in] */ const GUID *pguidType,
|
|
/* [in] */ const GUID *pguidSubtype,
|
|
/* [in] */ PPST_ACCESSRULESET psRules,
|
|
/* [in] */ DWORD dwFlags);
|
|
|
|
SPWRITEACCESSRULESET SPWriteAccessRuleset;
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
// side door interfaces: dispatcher/provider only
|
|
|
|
// PasswordChangeNotify
|
|
typedef
|
|
BOOL FPASSWORDCHANGENOTIFY(
|
|
/* [in] */ LPWSTR szUser,
|
|
/* [in] */ LPWSTR szPasswordName,
|
|
/* [in] */ BYTE rgbOldPwd[],
|
|
/* [in] */ DWORD cbOldPwd,
|
|
/* [in] */ BYTE rgbNewPwd[],
|
|
/* [in] */ DWORD cbNewPwd);
|
|
|
|
FPASSWORDCHANGENOTIFY FPasswordChangeNotify;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} // extern C
|
|
#endif
|