/*++ 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 #include #include #include #include #include #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