windows-nt/Source/XPSP1/NT/base/cluster/service/gs/gs.h
2020-09-26 16:20:57 +08:00

152 lines
2.4 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
gs.h
Abstract:
Public gs definitions
Author:
Ahmed Mohamed (ahmedm) 12, 01, 2000
Revision History:
--*/
#ifndef _GS_H
#define _GS_H
#include <nt.h>
#include <ntdef.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include <assert.h>
#define GS_MAX_GROUPS 64
#define GS_MAX_GROUP_SZ 8
#define GS_MAX_NAME_SZ 28
typedef enum {
GsEventData,
GsEventSingleData,
GsEventMemberJoin,
GsEventMemberUp,
GsEventMemberDown,
GsEventMemberEvicted,
GsEventAbort,
GsEventInvalid
}gs_eventid_t;
typedef struct {
int lid;
int mid;
int group_size;
int cluster_size;
UINT32 mset;
}gs_info_t;
typedef char gs_tag_t[64];
typedef NTSTATUS (WINAPI *gs_callback_t)(HANDLE cookie, gs_tag_t tag, PVOID buf,
IO_STATUS_BLOCK *ios);
char *
WINAPI
config_get_volume();
char *
WINAPI
config_get_crsfile();
int
WINAPI
config_get_crssz();
void
WINAPI
GsInit();
void
WINAPI
GsExit();
NTSTATUS
WINAPI
GsSendDeliveredRequest(HANDLE group, HANDLE event OPTIONAL,
gs_tag_t tag, PVOID buf, UINT32 len,
PVOID rbuf[], UINT32 elmsz,
IO_STATUS_BLOCK iostatus[],
HANDLE *context);
NTSTATUS
WINAPI
GsSendContinuedRequest(HANDLE context, HANDLE event OPTIONAL,
gs_tag_t tag, PVOID bruf, UINT32 len,
PVOID rbuf[], UINT32 elmsz,
IO_STATUS_BLOCK iostatus[],
BOOLEAN close);
NTSTATUS
WINAPI
GsSendQueuedRequest(HANDLE group, HANDLE event OPTIONAL,
gs_tag_t tag, PVOID buf, UINT32 len,
PVOID rbuf[], UINT32 elmsz,
IO_STATUS_BLOCK iostatus[]);
NTSTATUS
WINAPI
GsSendDirectedRequest(HANDLE group, HANDLE event OPTIONAL,
int memberid,
gs_tag_t tag, PVOID buf, UINT32 len,
PVOID rbuf, UINT32 elmsz,
IO_STATUS_BLOCK *iostatus,
HANDLE *context);
NTSTATUS
WINAPI
GsSendReply(HANDLE gd, PVOID buf, int len, NTSTATUS status);
NTSTATUS
WINAPI
GsReceiveRequest(HANDLE gd, PVOID buf, int len);
void
WINAPI
GsRegisterHandler(HANDLE gd, gs_callback_t func);
HANDLE
WINAPI
GsCreateGroup(gs_callback_t func, char *name, int len, int windowsz,
int disposition, HANDLE *ctx);
NTSTATUS
WINAPI
GsEvictMember(HANDLE gd, int memberid);
NTSTATUS
WINAPI
GsQueryGroup(HANDLE gd, gs_info_t *info);
NTSTATUS
WINAPI
GsCloseGroup(HANDLE gd);
HANDLE
WINAPI
GsGetGroupHandle(HANDLE msgd);
int
WINAPI
GsGetSourceMemberid(HANDLE msgd);
#endif