Resource DLLs are responsible for carrying out most operations on cluster resources. A resource DLL is characterized as follows:
- It contains the resource-specific code necessary to provide high availability for instances of one or more resource types.
- It exposes this code through a standard interface consisting of a set of entry point functions.
- It is registered with the Cluster service to associate one or more resource type names with the name of the DLL.
- It is always loaded into a Resource Monitor's process when in use.
When the Cluster service needs to perform an operation on a resource, it sends the request to the Resource Monitor assigned to the resource. If the Resource Monitor does not have a DLL in its process that can handle that type of resource, it uses the registration information to load the DLL associated with the resource type. It then passes the Cluster service's request to one of the DLL's entry point functions. The resource DLL handles the details of the operation so as to meet the specific needs of the resource.
This architecture separates the Cluster service from the implementation details of specific resource types, allowing the Cluster service to manage file shares, physical disks, IP addresses, and all other types of resources through a standard interface. It also allows for the creation of new resource types.
You can define your own resource types to provide customized support for cluster-unaware applications, enhanced support for cluster-aware applications, or specialized support for new kinds of devices. For more information, see Creating Resource Types.