You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
3.5 KiB
190 lines
3.5 KiB
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
view.h
|
|
|
|
Abstract:
|
|
|
|
Manifests, macros, types prototypes for view.c
|
|
|
|
Author:
|
|
|
|
Richard L Firth (rfirth) 17-Oct-1994
|
|
|
|
Revision History:
|
|
|
|
17-Oct-1994 rfirth
|
|
Created
|
|
|
|
--*/
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
//
|
|
// have to forward-define LPSESSION_INFO
|
|
//
|
|
|
|
typedef struct _SESSION_INFO * LPSESSION_INFO;
|
|
|
|
//
|
|
// VIEW_TYPE - which type of view are we talking about, FIND or FILE?
|
|
//
|
|
|
|
typedef enum {
|
|
ViewTypeFile = 0xff010101, // arbitrary values always good for a few laughs
|
|
ViewTypeFind
|
|
} VIEW_TYPE;
|
|
|
|
//
|
|
// VIEW_INFO - describes a data view, either the results of a FindFirst or a
|
|
// GetFile
|
|
//
|
|
|
|
typedef struct {
|
|
|
|
//
|
|
// List - the list of VIEW_INFO structures owned by the parent SESSION_INFO
|
|
//
|
|
|
|
LIST_ENTRY List;
|
|
|
|
//
|
|
// ViewType - lets us know which of the Session view lists this is on
|
|
//
|
|
|
|
VIEW_TYPE ViewType;
|
|
|
|
//
|
|
// Handle - the handle returned by GopherFindFirst/GopherGetFile
|
|
//
|
|
|
|
HINTERNET Handle;
|
|
|
|
//
|
|
// Request - the request string which generated Buffer
|
|
//
|
|
|
|
LPSTR Request;
|
|
|
|
//
|
|
// RequestLength - number of bytes in Request (excluding terminating \0)
|
|
//
|
|
|
|
DWORD RequestLength;
|
|
|
|
//
|
|
// Set to 1 when this 'object' is created. Any time it is used thereafter
|
|
// this field must be incremented and decremented when no longer being
|
|
// used. Closing the handle that corresponds to this view will dereference
|
|
// it a final time and cause the view to be deleted
|
|
//
|
|
|
|
LONG ReferenceCount;
|
|
|
|
//
|
|
// Flags - various control flags, see below
|
|
//
|
|
|
|
DWORD Flags;
|
|
|
|
//
|
|
// ViewOffset - offset in buffer described by BufferInfo->Buffer which will
|
|
// be used to generate the results of the next request on this view
|
|
//
|
|
|
|
DWORD ViewOffset;
|
|
|
|
//
|
|
// Buffer - pointer to BUFFER_INFO containing data returned from gopher
|
|
// server
|
|
//
|
|
|
|
LPBUFFER_INFO BufferInfo;
|
|
|
|
//
|
|
// SessionInfo - back-pointer to the owning SESSION_INFO. Used when we
|
|
// create or destroy this view - the owning session must be referenced
|
|
// or dereferenced accordingly
|
|
//
|
|
|
|
LPSESSION_INFO SessionInfo;
|
|
|
|
} VIEW_INFO, *LPVIEW_INFO;
|
|
|
|
//
|
|
// VIEW_INFO flags
|
|
//
|
|
|
|
#define VI_GOPHER_PLUS 0x00000001 // the data buffer contains gopher+ data
|
|
#define VI_CLEANUP 0x00000002 // set by CleanupSessions()
|
|
|
|
//
|
|
// external data
|
|
//
|
|
|
|
DEBUG_DATA_EXTERN(LONG, NumberOfViews);
|
|
|
|
//
|
|
// prototypes
|
|
//
|
|
|
|
LPVIEW_INFO
|
|
CreateView(
|
|
IN LPSESSION_INFO SessionInfo,
|
|
IN VIEW_TYPE ViewType,
|
|
IN LPSTR Request,
|
|
OUT LPDWORD Error,
|
|
OUT LPBOOL Cloned
|
|
);
|
|
|
|
LPVIEW_INFO
|
|
FindViewByHandle(
|
|
IN HINTERNET Handle,
|
|
IN VIEW_TYPE ViewType
|
|
);
|
|
|
|
VOID
|
|
ReferenceView(
|
|
IN LPVIEW_INFO ViewInfo
|
|
);
|
|
|
|
LPVIEW_INFO
|
|
DereferenceView(
|
|
IN LPVIEW_INFO ViewInfo
|
|
);
|
|
|
|
DWORD
|
|
DereferenceViewByHandle(
|
|
IN HINTERNET Handle,
|
|
IN VIEW_TYPE ViewType
|
|
);
|
|
|
|
//
|
|
// macros
|
|
//
|
|
|
|
#if INET_DEBUG
|
|
|
|
#define VIEW_CREATED() ++NumberOfViews
|
|
#define VIEW_DESTROYED() --NumberOfViews
|
|
#define ASSERT_NO_VIEWS() \
|
|
if (NumberOfViews != 0) { \
|
|
INET_ASSERT(FALSE); \
|
|
}
|
|
|
|
#else
|
|
|
|
#define VIEW_CREATED() /* NOTHING */
|
|
#define VIEW_DESTROYED() /* NOTHING */
|
|
#define ASSERT_NO_VIEWS() /* NOTHING */
|
|
|
|
#endif // INET_DEBUG
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|