1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042 |
- /*++
- Copyright (c) Microsoft Corporation. All rights reserved.
- Module Name:
- resapi.h
- Abstract:
- This module defines the interface exported by Windows Clusters resources.
- Revision History:
- --*/
- #ifndef _RESAPI_DEFINES_
- #define _RESAPI_DEFINES_
- #if _MSC_VER > 1000
- #pragma once
- #endif
- #include <windows.h>
- #include <winsvc.h>
- #include <clusapi.h>
- #include <stdio.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define IN
- #define OUT
- //
- // Definitions for entrypoints exported by a resource DLL.
- //
- #define STARTUP_ROUTINE "Startup"
- #define CLRES_V1_FUNCTION_SIZE sizeof(CLRES_V1_FUNCTIONS)
- #define CLRES_VERSION_V1_00 0x100
- #define CLRES_V1_FUNCTION_TABLE( _Name, \
- _Version, \
- _Prefix, \
- _Arbitrate, \
- _Release, \
- _ResControl, \
- _ResTypeControl \
- ) \
- CLRES_FUNCTION_TABLE _Name = { CLRES_V1_FUNCTION_SIZE, \
- _Version, \
- _Prefix##Open, \
- _Prefix##Close, \
- _Prefix##Online, \
- _Prefix##Offline, \
- _Prefix##Terminate, \
- _Prefix##LooksAlive, \
- _Prefix##IsAlive, \
- _Arbitrate, \
- _Release, \
- _ResControl, \
- _ResTypeControl }
- #endif // ifndef _RESAPI_DEFINES_
- #ifndef _RESAPI_
- #define _RESAPI_
- //
- // Define a RESID
- //
- typedef PVOID RESID;
- //
- // Define a RESOURCE_HANDLE
- //
- typedef HANDLE RESOURCE_HANDLE;
- //
- // Define the Resource Status structure.
- //
- typedef struct RESOURCE_STATUS {
- CLUSTER_RESOURCE_STATE ResourceState;
- DWORD CheckPoint;
- DWORD WaitHint;
- HANDLE EventHandle;
- } RESOURCE_STATUS, *PRESOURCE_STATUS;
- #define ResUtilInitializeResourceStatus( _resource_status_ ) \
- ZeroMemory( _resource_status_, sizeof(RESOURCE_STATUS) )
- //
- // Define Resource DLL callback method for updating the state of a resource.
- //
- typedef
- DWORD
- (_stdcall *PSET_RESOURCE_STATUS_ROUTINE) (
- IN RESOURCE_HANDLE ResourceHandle,
- IN PRESOURCE_STATUS ResourceStatus
- );
- //
- // Define Resource DLL callback method for notifying that a quorum
- // resource DLL failed to hold the quorum resource.
- //
- typedef
- VOID
- (_stdcall *PQUORUM_RESOURCE_LOST) (
- IN RESOURCE_HANDLE Resource
- );
- //
- // Define Resource DLL callback method for logging events.
- //
- typedef enum LOG_LEVEL {
- LOG_INFORMATION,
- LOG_WARNING,
- LOG_ERROR,
- LOG_SEVERE
- } LOG_LEVEL, *PLOG_LEVEL;
- typedef
- VOID
- (_stdcall *PLOG_EVENT_ROUTINE) (
- IN RESOURCE_HANDLE ResourceHandle,
- IN LOG_LEVEL LogLevel,
- IN LPCWSTR FormatString,
- ...
- );
- typedef
- RESID
- (_stdcall *POPEN_ROUTINE) (
- IN LPCWSTR ResourceName,
- IN HKEY ResourceKey,
- IN RESOURCE_HANDLE ResourceHandle
- );
- typedef
- VOID
- (_stdcall *PCLOSE_ROUTINE) (
- IN RESID Resource
- );
- typedef
- DWORD
- (_stdcall *PONLINE_ROUTINE) (
- IN RESID Resource,
- IN OUT LPHANDLE EventHandle
- );
- typedef
- DWORD
- (_stdcall *POFFLINE_ROUTINE) (
- IN RESID Resource
- );
- typedef
- VOID
- (_stdcall *PTERMINATE_ROUTINE) (
- IN RESID Resource
- );
- typedef
- BOOL
- (_stdcall *PIS_ALIVE_ROUTINE) (
- IN RESID Resource
- );
- typedef
- BOOL
- (_stdcall *PLOOKS_ALIVE_ROUTINE) (
- IN RESID Resource
- );
- typedef
- DWORD
- (_stdcall *PARBITRATE_ROUTINE) (
- IN RESID Resource,
- IN PQUORUM_RESOURCE_LOST LostQuorumResource
- );
- typedef
- DWORD
- (_stdcall *PRELEASE_ROUTINE) (
- IN RESID Resource
- );
- typedef
- DWORD
- (_stdcall *PRESOURCE_CONTROL_ROUTINE) (
- IN RESID Resource,
- IN DWORD ControlCode,
- IN PVOID InBuffer,
- IN DWORD InBufferSize,
- OUT PVOID OutBuffer,
- IN DWORD OutBufferSize,
- OUT LPDWORD BytesReturned
- );
- typedef
- DWORD
- (_stdcall *PRESOURCE_TYPE_CONTROL_ROUTINE) (
- IN LPCWSTR ResourceTypeName,
- IN DWORD ControlCode,
- IN PVOID InBuffer,
- IN DWORD InBufferSize,
- OUT PVOID OutBuffer,
- IN DWORD OutBufferSize,
- OUT LPDWORD BytesReturned
- );
- typedef enum _RESOURCE_EXIT_STATE {
- ResourceExitStateContinue,
- ResourceExitStateTerminate,
- ResourceExitStateMax
- } RESOURCE_EXIT_STATE;
- //***************************************************************
- //
- // Define the Function Table Format
- //
- //***************************************************************
- //
- // Version 1 Resource DLL Interface definition
- //
- typedef struct CLRES_V1_FUNCTIONS {
- POPEN_ROUTINE Open;
- PCLOSE_ROUTINE Close;
- PONLINE_ROUTINE Online;
- POFFLINE_ROUTINE Offline;
- PTERMINATE_ROUTINE Terminate;
- PLOOKS_ALIVE_ROUTINE LooksAlive;
- PIS_ALIVE_ROUTINE IsAlive;
- PARBITRATE_ROUTINE Arbitrate;
- PRELEASE_ROUTINE Release;
- PRESOURCE_CONTROL_ROUTINE ResourceControl;
- PRESOURCE_TYPE_CONTROL_ROUTINE ResourceTypeControl;
- } CLRES_V1_FUNCTIONS, *PCLRES_V1_FUNCTIONS;
- //
- // Resource DLL Function Table definition
- //
- #if _MSC_VER >= 1200
- #pragma warning(push)
- #endif
- #pragma warning( disable : 4201 ) // nonstandard extension used : nameless struct/union
- typedef struct CLRES_FUNCTION_TABLE {
- DWORD TableSize;
- DWORD Version;
- union {
- CLRES_V1_FUNCTIONS V1Functions;
- };
- } CLRES_FUNCTION_TABLE, *PCLRES_FUNCTION_TABLE;
- #if _MSC_VER >= 1200
- #pragma warning(pop)
- #else
- #pragma warning( default : 4201 ) // nonstandard extension used : nameless struct/union
- #endif
- //
- // Define the Resource DLL Startup routine. This is the only routine
- // that should be exported from a resource DLL.
- //
- //
- // Calculate the byte offset of a field in a structure of type type.
- //
- #ifndef FIELD_OFFSET
- #define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field))
- #endif
- //
- // large ints need more space than what was originally allocated.
- //
- typedef struct RESUTIL_LARGEINT_DATA {
- LARGE_INTEGER Default;
- LARGE_INTEGER Minimum;
- LARGE_INTEGER Maximum;
- } RESUTIL_LARGEINT_DATA, *PRESUTIL_LARGEINT_DATA;
- typedef struct RESUTIL_ULARGEINT_DATA {
- ULARGE_INTEGER Default;
- ULARGE_INTEGER Minimum;
- ULARGE_INTEGER Maximum;
- } RESUTIL_ULARGEINT_DATA, *PRESUTIL_ULARGEINT_DATA;
- //
- // Property list structures and functions
- //
- typedef struct RESUTIL_PROPERTY_ITEM {
- LPWSTR Name; // Property name
- LPWSTR KeyName; // Name of value in cluster database
- DWORD Format; // Format: REG_SZ, REG_DWORD, etc.
- union {
- DWORD_PTR DefaultPtr;
- DWORD Default; // Default value
- LPVOID lpDefault;
- PRESUTIL_LARGEINT_DATA LargeIntData;
- PRESUTIL_ULARGEINT_DATA ULargeIntData;
- };
- DWORD Minimum; // Minimum value
- DWORD Maximum; // Maximum value
- DWORD Flags; // Flags for this item
- #define RESUTIL_PROPITEM_READ_ONLY 0x00000001 // Property is read-only
- #define RESUTIL_PROPITEM_REQUIRED 0x00000002 // Property is required
- #define RESUTIL_PROPITEM_SIGNED 0x00000004 // Numeric property is signed (defaults to unsigned)
- DWORD Offset; // Byte offset to value in parameter block
- // Assumes MULTI_SZ and BINARY parameters
- // are LPWSTRs followed by DWORDs for length
- } RESUTIL_PROPERTY_ITEM, *PRESUTIL_PROPERTY_ITEM;
- typedef
- DWORD
- (_stdcall *PSTARTUP_ROUTINE) (
- IN LPCWSTR ResourceType,
- IN DWORD MinVersionSupported,
- IN DWORD MaxVersionSupported,
- IN PSET_RESOURCE_STATUS_ROUTINE SetResourceStatus,
- IN PLOG_EVENT_ROUTINE LogEvent,
- OUT PCLRES_FUNCTION_TABLE *FunctionTable
- );
- //
- // Define layout of shared memory used for tracking Resource Monitor state.
- //
- typedef enum RESOURCE_MONITOR_STATE {
- RmonInitializing,
- RmonIdle,
- RmonStartingResource,
- RmonInitializingResource,
- RmonOnlineResource,
- RmonOfflineResource,
- RmonShutdownResource,
- RmonDeletingResource,
- RmonIsAlivePoll,
- RmonLooksAlivePoll,
- RmonArbitrateResource,
- RmonReleaseResource,
- RmonResourceControl,
- RmonResourceTypeControl
- } RESOURCE_MONITOR_STATE;
- typedef struct MONITOR_STATE {
- LARGE_INTEGER LastUpdate;
- RESOURCE_MONITOR_STATE State;
- HANDLE ActiveResource;
- BOOL ResmonStop;
- } MONITOR_STATE, *PMONITOR_STATE;
- //
- // Resource Utility Routines
- //
- DWORD
- WINAPI
- ResUtilStartResourceService(
- IN LPCWSTR pszServiceName,
- OUT LPSC_HANDLE phServiceHandle
- );
- DWORD
- WINAPI
- ResUtilVerifyResourceService(
- IN LPCWSTR pszServiceName
- );
- DWORD
- WINAPI
- ResUtilStopResourceService(
- IN LPCWSTR pszServiceName
- );
- DWORD
- WINAPI
- ResUtilVerifyService(
- IN SC_HANDLE hServiceHandle
- );
- DWORD
- WINAPI
- ResUtilStopService(
- IN SC_HANDLE hServiceHandle
- );
- DWORD
- WINAPI
- ResUtilCreateDirectoryTree(
- IN LPCWSTR pszPath
- );
- BOOL
- WINAPI
- ResUtilIsPathValid(
- IN LPCWSTR pszPath
- );
- DWORD
- WINAPI
- ResUtilEnumProperties(
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- OUT LPWSTR pszOutProperties,
- IN DWORD cbOutPropertiesSize,
- OUT LPDWORD pcbBytesReturned,
- OUT LPDWORD pcbRequired
- );
- DWORD
- WINAPI
- ResUtilEnumPrivateProperties(
- IN HKEY hkeyClusterKey,
- OUT LPWSTR pszOutProperties,
- IN DWORD cbOutPropertiesSize,
- OUT LPDWORD pcbBytesReturned,
- OUT LPDWORD pcbRequired
- );
- DWORD
- WINAPI
- ResUtilGetProperties(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- OUT PVOID pOutPropertyList,
- IN DWORD cbOutPropertyListSize,
- OUT LPDWORD pcbBytesReturned,
- OUT LPDWORD pcbRequired
- );
- DWORD
- WINAPI
- ResUtilGetAllProperties(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- OUT PVOID pOutPropertyList,
- IN DWORD cbOutPropertyListSize,
- OUT LPDWORD pcbBytesReturned,
- OUT LPDWORD pcbRequired
- );
- DWORD
- WINAPI
- ResUtilGetPrivateProperties(
- IN HKEY hkeyClusterKey,
- OUT PVOID pOutPropertyList,
- IN DWORD cbOutPropertyListSize,
- OUT LPDWORD pcbBytesReturned,
- OUT LPDWORD pcbRequired
- );
- DWORD
- WINAPI
- ResUtilGetPropertySize(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTableItem,
- IN OUT LPDWORD pcbOutPropertyListSize,
- IN OUT LPDWORD pnPropertyCount
- );
- DWORD
- WINAPI
- ResUtilGetProperty(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTableItem,
- OUT PVOID * pOutPropertyItem,
- IN OUT LPDWORD pcbOutPropertyItemSize
- );
- DWORD
- WINAPI
- ResUtilVerifyPropertyTable(
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- IN PVOID Reserved,
- IN BOOL bAllowUnknownProperties,
- IN const PVOID pInPropertyList,
- IN DWORD cbInPropertyListSize,
- OUT OPTIONAL LPBYTE pOutParams
- );
- DWORD
- WINAPI
- ResUtilSetPropertyTable(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- IN PVOID Reserved,
- IN BOOL bAllowUnknownProperties,
- IN const PVOID pInPropertyList,
- IN DWORD cbInPropertyListSize,
- OUT OPTIONAL LPBYTE pOutParams
- );
- DWORD
- WINAPI
- ResUtilSetPropertyTableEx(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- IN PVOID Reserved,
- IN BOOL bAllowUnknownProperties,
- IN const PVOID pInPropertyList,
- IN DWORD cbInPropertyListSize,
- IN BOOL bForceWrite,
- OUT OPTIONAL LPBYTE pOutParams
- );
- DWORD
- WINAPI
- ResUtilSetPropertyParameterBlock(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- IN PVOID Reserved,
- IN const LPBYTE pInParams,
- IN const PVOID pInPropertyList,
- IN DWORD cbInPropertyListSize,
- OUT OPTIONAL LPBYTE pOutParams
- );
- DWORD
- WINAPI
- ResUtilSetPropertyParameterBlockEx(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- IN PVOID Reserved,
- IN const LPBYTE pInParams,
- IN const PVOID pInPropertyList,
- IN DWORD cbInPropertyListSize,
- IN BOOL bForceWrite,
- OUT OPTIONAL LPBYTE pOutParams
- );
- DWORD
- WINAPI
- ResUtilSetUnknownProperties(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- IN const PVOID pInPropertyList,
- IN DWORD cbInPropertyListSize
- );
- DWORD
- WINAPI
- ResUtilGetPropertiesToParameterBlock(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- OUT LPBYTE pOutParams,
- IN BOOL bCheckForRequiredProperties,
- OUT OPTIONAL LPWSTR * pszNameOfPropInError
- );
- DWORD
- WINAPI
- ResUtilPropertyListFromParameterBlock(
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- OUT PVOID pOutPropertyList,
- IN OUT LPDWORD pcbOutPropertyListSize,
- IN const LPBYTE pInParams,
- OUT LPDWORD pcbBytesReturned,
- OUT LPDWORD pcbRequired
- );
- DWORD
- WINAPI
- ResUtilDupParameterBlock(
- OUT LPBYTE pOutParams,
- IN const LPBYTE pInParams,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable
- );
- void
- WINAPI
- ResUtilFreeParameterBlock(
- IN OUT LPBYTE pOutParams,
- IN const LPBYTE pInParams,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable
- );
- DWORD
- WINAPI
- ResUtilAddUnknownProperties(
- IN HKEY hkeyClusterKey,
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- IN OUT PVOID pOutPropertyList,
- IN DWORD pcbOutPropertyListSize,
- IN OUT LPDWORD pcbBytesReturned,
- IN OUT LPDWORD pcbRequired
- );
- DWORD
- WINAPI
- ResUtilSetPrivatePropertyList(
- IN HKEY hkeyClusterKey,
- IN const PVOID pInPropertyList,
- IN DWORD cbInPropertyListSize
- );
- DWORD
- WINAPI
- ResUtilVerifyPrivatePropertyList(
- IN const PVOID pInPropertyList,
- IN DWORD cbInPropertyListSize
- );
- PWSTR
- WINAPI
- ResUtilDupString(
- IN LPCWSTR pszInString
- );
- DWORD
- WINAPI
- ResUtilGetBinaryValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- OUT LPBYTE * ppbOutValue,
- OUT DWORD * pcbOutValueSize
- );
- LPWSTR
- WINAPI
- ResUtilGetSzValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName
- );
- LPWSTR
- WINAPI
- ResUtilGetExpandSzValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- IN BOOL bExpand
- );
- FORCEINLINE
- DWORD
- WINAPI
- ResUtilGetMultiSzValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- OUT LPWSTR * ppszOutValue,
- OUT LPDWORD pcbOutValueSize
- )
- {
- return ResUtilGetBinaryValue( hkeyClusterKey, pszValueName, (LPBYTE *) ppszOutValue, pcbOutValueSize );
- }
- DWORD
- WINAPI
- ResUtilGetDwordValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- OUT LPDWORD pdwOutValue,
- IN DWORD dwDefaultValue OPTIONAL
- );
- DWORD
- WINAPI
- ResUtilSetBinaryValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- IN const LPBYTE pbNewValue,
- IN DWORD cbNewValueSize,
- IN OUT LPBYTE * ppbOutValue,
- IN OUT LPDWORD pcbOutValueSize
- );
- DWORD
- WINAPI
- ResUtilSetSzValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- IN LPCWSTR pszNewValue,
- IN OUT LPWSTR * ppszOutString
- );
- DWORD
- WINAPI
- ResUtilSetExpandSzValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- IN LPCWSTR pszNewValue,
- IN OUT LPWSTR * ppszOutString
- );
- DWORD
- WINAPI
- ResUtilSetMultiSzValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- IN LPCWSTR pszNewValue,
- IN DWORD cbNewValueSize,
- IN OUT LPWSTR * ppszOutValue,
- IN OUT LPDWORD pcbOutValueSize
- );
- DWORD
- WINAPI
- ResUtilSetDwordValue(
- IN HKEY hkeyClusterKey,
- IN LPCWSTR pszValueName,
- IN DWORD dwNewValue,
- IN OUT LPDWORD pdwOutValue
- );
- DWORD
- WINAPI
- ResUtilGetBinaryProperty(
- OUT LPBYTE * ppbOutValue,
- OUT LPDWORD pcbOutValueSize,
- IN const PCLUSPROP_BINARY pValueStruct,
- IN const LPBYTE pbOldValue,
- IN DWORD cbOldValueSize,
- OUT LPBYTE * ppPropertyList,
- OUT LPDWORD pcbPropertyListSize
- );
- DWORD
- WINAPI
- ResUtilGetSzProperty(
- OUT LPWSTR * ppszOutValue,
- IN const PCLUSPROP_SZ pValueStruct,
- IN LPCWSTR pszOldValue,
- OUT LPBYTE * ppPropertyList,
- OUT LPDWORD pcbPropertyListSize
- );
- DWORD
- WINAPI
- ResUtilGetMultiSzProperty(
- OUT LPWSTR * ppszOutValue,
- OUT LPDWORD pcbOutValueSize,
- IN const PCLUSPROP_SZ pValueStruct,
- IN LPCWSTR pszOldValue,
- IN DWORD cbOldValueSize,
- OUT LPBYTE * ppPropertyList,
- OUT LPDWORD pcbPropertyListSize
- );
- DWORD
- WINAPI
- ResUtilGetDwordProperty(
- OUT LPDWORD pdwOutValue,
- IN const PCLUSPROP_DWORD pValueStruct,
- IN DWORD dwOldValue,
- IN DWORD dwMinimum,
- IN DWORD dwMaximum,
- OUT LPBYTE * ppPropertyList,
- OUT LPDWORD pcbPropertyListSize
- );
- LPVOID
- WINAPI
- ResUtilGetEnvironmentWithNetName(
- IN HRESOURCE hResource
- );
- DWORD
- WINAPI
- ResUtilFreeEnvironment(
- IN LPVOID lpEnvironment
- );
- LPWSTR
- WINAPI
- ResUtilExpandEnvironmentStrings(
- IN LPCWSTR pszSrc
- );
- DWORD
- WINAPI
- ResUtilSetResourceServiceEnvironment(
- IN LPCWSTR pszServiceName,
- IN HRESOURCE hResource,
- IN PLOG_EVENT_ROUTINE pfnLogEvent,
- IN RESOURCE_HANDLE hResourceHandle
- );
- DWORD
- WINAPI
- ResUtilSetResourceServiceStartParameters(
- IN LPCWSTR pszServiceName,
- IN SC_HANDLE schSCMHandle,
- IN OUT LPSC_HANDLE phService,
- IN PLOG_EVENT_ROUTINE pfnLogEvent,
- IN RESOURCE_HANDLE hResourceHandle
- );
- DWORD
- WINAPI
- ResUtilFindSzProperty(
- IN const PVOID pPropertyList,
- IN DWORD cbPropertyListSize,
- IN LPCWSTR pszPropertyName,
- OUT LPWSTR * pszPropertyValue
- );
- DWORD
- WINAPI
- ResUtilFindExpandSzProperty(
- IN const PVOID pPropertyList,
- IN DWORD cbPropertyListSize,
- IN LPCWSTR pszPropertyName,
- OUT LPWSTR * pszPropertyValue
- );
- DWORD
- WINAPI
- ResUtilFindExpandedSzProperty(
- IN const PVOID pPropertyList,
- IN DWORD cbPropertyListSize,
- IN LPCWSTR pszPropertyName,
- OUT LPWSTR * pszPropertyValue
- );
- DWORD
- WINAPI
- ResUtilFindDwordProperty(
- IN const PVOID pPropertyList,
- IN DWORD cbPropertyListSize,
- IN LPCWSTR pszPropertyName,
- OUT LPDWORD pdwPropertyValue
- );
- DWORD
- WINAPI
- ResUtilFindBinaryProperty(
- IN const PVOID pPropertyList,
- IN DWORD cbPropertyListSize,
- IN LPCWSTR pszPropertyName,
- OUT LPBYTE * pbPropertyValue,
- OUT LPDWORD pcbPropertyValueSize
- );
- DWORD
- WINAPI
- ResUtilFindMultiSzProperty(
- IN const PVOID pPropertyList,
- IN DWORD cbPropertyListSize,
- IN LPCWSTR pszPropertyName,
- OUT LPWSTR * pszPropertyValue,
- OUT LPDWORD pcbPropertyValueSize
- );
- DWORD
- WINAPI
- ResUtilFindLongProperty(
- IN const PVOID pPropertyList,
- IN DWORD cbPropertyListSize,
- IN LPCWSTR pszPropertyName,
- OUT LPLONG plPropertyValueSize
- );
- //
- // Common worker thread routines that allow a pending operation to
- // be cancelled with CORRECT synchronization.
- //
- typedef struct CLUS_WORKER {
- HANDLE hThread;
- BOOL Terminate;
- } CLUS_WORKER, *PCLUS_WORKER;
- typedef DWORD (WINAPI *PWORKER_START_ROUTINE)(
- PCLUS_WORKER pWorker,
- LPVOID lpThreadParameter
- );
- DWORD
- WINAPI
- ClusWorkerCreate(
- OUT PCLUS_WORKER lpWorker,
- IN PWORKER_START_ROUTINE lpStartAddress,
- IN PVOID lpParameter
- );
- BOOL
- WINAPI
- ClusWorkerCheckTerminate(
- IN PCLUS_WORKER lpWorker
- );
- VOID
- WINAPI
- ClusWorkerTerminate(
- IN PCLUS_WORKER lpWorker
- );
- //Define enumerate resource callback function. This gets called for each resource enumerated
- //by ResUtilEnumResources
- typedef DWORD (*LPRESOURCE_CALLBACK)( HRESOURCE, HRESOURCE , PVOID );
- typedef DWORD (*LPRESOURCE_CALLBACK_EX)( HCLUSTER, HRESOURCE, HRESOURCE , PVOID );
- BOOL
- WINAPI
- ResUtilResourcesEqual(
- IN HRESOURCE hSelf,
- IN HRESOURCE hResource
- );
- BOOL
- WINAPI
- ResUtilResourceTypesEqual(
- IN LPCWSTR lpszResourceTypeName,
- IN HRESOURCE hResource
- );
- BOOL
- WINAPI
- ResUtilIsResourceClassEqual(
- IN PCLUS_RESOURCE_CLASS_INFO prci,
- IN HRESOURCE hResource
- );
- DWORD
- WINAPI
- ResUtilEnumResources(
- IN HRESOURCE hSelf,
- IN LPCWSTR lpszResTypeName,
- IN LPRESOURCE_CALLBACK pResCallBack,
- IN PVOID pParameter
- );
- DWORD
- WINAPI
- ResUtilEnumResourcesEx(
- IN HCLUSTER hCluster,
- IN HRESOURCE hSelf,
- IN LPCWSTR lpszResTypeName,
- IN LPRESOURCE_CALLBACK_EX pResCallBack,
- IN PVOID pParameter
- );
- HRESOURCE
- WINAPI
- ResUtilGetResourceDependency(
- IN HANDLE hSelf,
- IN LPCWSTR lpszResourceType
- );
- HRESOURCE
- WINAPI
- ResUtilGetResourceDependencyByName(
- IN HCLUSTER hCluster,
- IN HANDLE hSelf,
- IN LPCWSTR lpszResourceType,
- IN BOOL bRecurse
- );
- HRESOURCE
- WINAPI
- ResUtilGetResourceDependencyByClass(
- IN HCLUSTER hCluster,
- IN HANDLE hSelf,
- IN PCLUS_RESOURCE_CLASS_INFO prci,
- IN BOOL bRecurse
- );
- HRESOURCE
- WINAPI
- ResUtilGetResourceNameDependency(
- IN LPCWSTR lpszResourceName,
- IN LPCWSTR lpszResourceType
- );
- DWORD
- WINAPI
- ResUtilGetResourceDependentIPAddressProps(
- IN HRESOURCE hResource,
- OUT LPWSTR pszAddress,
- IN OUT DWORD * pcchAddress,
- OUT LPWSTR pszSubnetMask,
- IN OUT DWORD * pcchSubnetMask,
- OUT LPWSTR pszNetwork,
- IN OUT DWORD * pcchNetwork
- );
- DWORD
- WINAPI
- ResUtilFindDependentDiskResourceDriveLetter(
- IN HCLUSTER hCluster, // handle to cluster
- IN HRESOURCE hResource, // handle to resource to query for dependencies
- IN LPWSTR pszDriveLetter, // buffer to store drive letter (ex. "X:\0")
- IN OUT DWORD * pcchDriveLetter // IN size of the pszDriveLetter buffer, OUT size of buffer required
- );
- DWORD
- WINAPI
- ResUtilTerminateServiceProcessFromResDll(
- IN DWORD dwServicePid,
- IN BOOL bOffline,
- OUT PDWORD pdwResourceState,
- IN PLOG_EVENT_ROUTINE pfnLogEvent,
- IN RESOURCE_HANDLE hResourceHandle
- );
- DWORD
- WINAPI
- ResUtilGetPropertyFormats(
- IN const PRESUTIL_PROPERTY_ITEM pPropertyTable,
- OUT PVOID pOutPropertyFormatList,
- IN DWORD cbPropertyFormatListSize,
- OUT LPDWORD pcbBytesReturned,
- OUT LPDWORD pcbRequired
- );
- DWORD
- WINAPI
- ResUtilGetCoreClusterResources(
- IN HCLUSTER hCluster
- , OUT HRESOURCE * phClusterNameResource
- , OUT HRESOURCE * phClusterIPAddressResource
- , OUT HRESOURCE * phClusterQuorumResource
- );
- DWORD
- WINAPI
- ResUtilGetResourceName(
- IN HRESOURCE hResource
- , OUT WCHAR * pszResourceName
- , IN OUT DWORD * pcchResourceName
- );
- #ifdef __cplusplus
- }
- #endif
- #endif // ifdef _RESAPI_DEFINES_
|