184 lines
5.2 KiB
Python
184 lines
5.2 KiB
Python
|
# Copyright 2017 Cloudbase Solutions Srl
|
||
|
# All Rights Reserved.
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||
|
# not use this file except in compliance with the License. You may obtain
|
||
|
# a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
# License for the specific language governing permissions and limitations
|
||
|
# under the License.
|
||
|
|
||
|
import ctypes
|
||
|
|
||
|
from os_win.utils.winapi import wintypes
|
||
|
|
||
|
lib_handle = None
|
||
|
|
||
|
|
||
|
class NOTIFY_FILTER_AND_TYPE(ctypes.Structure):
|
||
|
_fields_ = [
|
||
|
('dwObjectType', wintypes.DWORD),
|
||
|
('FilterFlags', wintypes.LONGLONG)
|
||
|
]
|
||
|
|
||
|
|
||
|
class CLUSTER_ENUM_ITEM(ctypes.Structure):
|
||
|
_fields_ = [
|
||
|
('dwVersion', wintypes.DWORD),
|
||
|
('dwType', wintypes.DWORD),
|
||
|
('cbId', wintypes.DWORD),
|
||
|
('lpszId', wintypes.LPWSTR),
|
||
|
('cbName', wintypes.DWORD),
|
||
|
('lpszName', wintypes.LPWSTR)
|
||
|
]
|
||
|
|
||
|
|
||
|
PCLUSTER_ENUM_ITEM = ctypes.POINTER(CLUSTER_ENUM_ITEM)
|
||
|
PNOTIFY_FILTER_AND_TYPE = ctypes.POINTER(NOTIFY_FILTER_AND_TYPE)
|
||
|
|
||
|
|
||
|
def register():
|
||
|
global lib_handle
|
||
|
lib_handle = ctypes.windll.clusapi
|
||
|
|
||
|
lib_handle.CancelClusterGroupOperation.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.DWORD
|
||
|
]
|
||
|
lib_handle.CancelClusterGroupOperation.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.CloseCluster.argtypes = [wintypes.HANDLE]
|
||
|
lib_handle.CloseCluster.restype = wintypes.BOOL
|
||
|
|
||
|
lib_handle.CloseClusterGroup.argtypes = [wintypes.HANDLE]
|
||
|
lib_handle.CloseClusterGroup.restype = wintypes.BOOL
|
||
|
|
||
|
lib_handle.CloseClusterNode.argtypes = [wintypes.HANDLE]
|
||
|
lib_handle.CloseClusterNode.restype = wintypes.BOOL
|
||
|
|
||
|
lib_handle.CloseClusterResource.argtypes = [wintypes.HANDLE]
|
||
|
lib_handle.CloseClusterResource.restype = wintypes.BOOL
|
||
|
|
||
|
lib_handle.CloseClusterNotifyPort.argtypes = [wintypes.HANDLE]
|
||
|
lib_handle.CloseClusterNotifyPort.restype = wintypes.BOOL
|
||
|
|
||
|
lib_handle.ClusterCloseEnumEx.argtypes = [wintypes.HANDLE]
|
||
|
lib_handle.ClusterCloseEnumEx.restype = wintypes.BOOL
|
||
|
|
||
|
lib_handle.ClusterEnumEx.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.LPDWORD
|
||
|
]
|
||
|
lib_handle.ClusterEnumEx.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.ClusterGetEnumCountEx.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
]
|
||
|
lib_handle.ClusterGetEnumCountEx.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.ClusterGroupControl.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.LPVOID,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.LPVOID,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.LPVOID
|
||
|
]
|
||
|
lib_handle.ClusterGroupControl.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.ClusterOpenEnumEx.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.PVOID
|
||
|
]
|
||
|
lib_handle.ClusterOpenEnumEx.restype = wintypes.HANDLE
|
||
|
|
||
|
lib_handle.DestroyClusterGroup.argtypes = [
|
||
|
wintypes.HANDLE
|
||
|
]
|
||
|
lib_handle.DestroyClusterGroup.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.GetClusterGroupState.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.LPWSTR,
|
||
|
wintypes.PDWORD
|
||
|
]
|
||
|
lib_handle.GetClusterGroupState.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.CreateClusterNotifyPortV2.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.HANDLE,
|
||
|
PNOTIFY_FILTER_AND_TYPE,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.PDWORD
|
||
|
]
|
||
|
lib_handle.CreateClusterNotifyPortV2.restype = wintypes.HANDLE
|
||
|
|
||
|
lib_handle.GetClusterNotifyV2.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
ctypes.POINTER(wintypes.PDWORD),
|
||
|
PNOTIFY_FILTER_AND_TYPE,
|
||
|
wintypes.PBYTE,
|
||
|
wintypes.LPDWORD,
|
||
|
wintypes.LPWSTR,
|
||
|
wintypes.LPDWORD,
|
||
|
wintypes.LPWSTR,
|
||
|
wintypes.LPDWORD,
|
||
|
wintypes.LPWSTR,
|
||
|
wintypes.LPDWORD,
|
||
|
wintypes.LPWSTR,
|
||
|
wintypes.LPDWORD,
|
||
|
wintypes.DWORD
|
||
|
]
|
||
|
lib_handle.GetClusterNotifyV2.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.MoveClusterGroupEx.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.DWORD
|
||
|
]
|
||
|
lib_handle.MoveClusterGroupEx.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.OfflineClusterGroup.argtypes = [
|
||
|
wintypes.HANDLE
|
||
|
]
|
||
|
lib_handle.OfflineClusterGroup.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.OnlineClusterGroup.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.HANDLE,
|
||
|
]
|
||
|
lib_handle.OnlineClusterGroup.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.OpenCluster.argtypes = [wintypes.LPCWSTR]
|
||
|
lib_handle.OpenCluster.restype = wintypes.HANDLE
|
||
|
|
||
|
lib_handle.OpenClusterGroup.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.LPCWSTR
|
||
|
]
|
||
|
lib_handle.OpenClusterGroup.restype = wintypes.HANDLE
|
||
|
|
||
|
lib_handle.OpenClusterNode.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.LPCWSTR
|
||
|
]
|
||
|
lib_handle.OpenClusterNode.restype = wintypes.HANDLE
|
||
|
|
||
|
lib_handle.OpenClusterResource.argtypes = [
|
||
|
wintypes.HANDLE,
|
||
|
wintypes.LPCWSTR
|
||
|
]
|
||
|
lib_handle.OpenClusterResource.restype = wintypes.HANDLE
|