Files
admin
base
com
developer
drivers
ds
enduser
inetcore
inetsrv
iis
admin
browseinfo
config
exe
iisrearc
img
admsamp
aspjava
common
custerr
help
htmla
htmlraid
psdksamp
admin
asp
components
isapi
extensions
cgiwrap
chunk
com
formdump
io
asyncread
asynctrans
ftrans.c
ftrans.def
ftrans.dsp
ftrans.dsw
openf.c
openf.h
readme.txt
asyncwrite
syncread
syncwrite
keep-alive
keepalivewiththreads
redirect
servervariables
simple
workerthread
filters
iis_as_process.txt
scripts
sdksamp
wwwroot
default.htm
dirs
extcomp.ini
iisperf.pmc
inetstp.hlp
logtemp.sql
inc
last
lkrhash
qfetools
setup
staxinc
svcs
ui
utils
bldzip.pl
clean.bat
coffbase.txt
dirs
guids.txt
iisntw.chm
inetrel.cmd
internet.mk
k2ver.pl
make128.cmd
makefile
makefile.chi
mkdev.cmd
mksample.cmd
mkwebcat.cmd
place.inc
place51.inc
placefil.txt
placefil5.txt
project.mk
sdkdrop.bat
update.cmd
wcrel.cmd
intlwb
msmq
published
query
dirs
project.mk
loc
mergedcomponents
multimedia
net
printscan
public
published
sdktools
shell
termsrv
tools
windows
dirs
makefil0
WindowsXP/inetsrv/iis/img/psdksamp/isapi/extensions/io/asynctrans/openf.h
2025-04-27 07:49:33 -04:00

180 lines
3.8 KiB
C

/*++
Copyright (c) 1995-1997 Microsoft Corporation
Module Name :
openf.h
Abstract:
This module defines functions for opening and closing files
and provides transparent caching for file handles
Project:
Internet Server API Extnensions Samples DLL
Revision History:
--*/
# ifndef _OPENF_HXX_
# define _OPENF_HXX_
/************************************************************
* Include Headers
************************************************************/
# include <windows.h>
# include <httpext.h>
/************************************************************
* Type Definitions
************************************************************/
//
// Doubly linked list structure. Can be used as either a list head, or
// as link words.
//
// typedef struct _LIST_ENTRY {
// struct _LIST_ENTRY * volatile Flink;
// struct _LIST_ENTRY * volatile Blink;
// } LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
//
// Doubly-linked list manipulation routines. Implemented as macros
// but logically these are procedures.
//
//
// VOID
// InitializeListHead(
// PLIST_ENTRY ListHead
// );
//
#define InitializeListHead(ListHead) (\
(ListHead)->Flink = (ListHead)->Blink = (ListHead))
//
// BOOLEAN
// IsListEmpty(
// PLIST_ENTRY ListHead
// );
//
#define IsListEmpty(ListHead) \
((ListHead)->Flink == (ListHead))
//
// PLIST_ENTRY
// RemoveHeadList(
// PLIST_ENTRY ListHead
// );
//
#define RemoveHeadList(ListHead) \
(ListHead)->Flink;\
{RemoveEntryList((ListHead)->Flink)}
//
// PLIST_ENTRY
// RemoveTailList(
// PLIST_ENTRY ListHead
// );
//
#define RemoveTailList(ListHead) \
(ListHead)->Blink;\
{RemoveEntryList((ListHead)->Blink)}
//
// VOID
// RemoveEntryList(
// PLIST_ENTRY Entry
// );
//
#define RemoveEntryList(Entry) {\
PLIST_ENTRY _EX_Blink;\
PLIST_ENTRY _EX_Flink;\
_EX_Flink = (Entry)->Flink;\
_EX_Blink = (Entry)->Blink;\
_EX_Blink->Flink = _EX_Flink;\
_EX_Flink->Blink = _EX_Blink;\
}
//
// VOID
// InsertTailList(
// PLIST_ENTRY ListHead,
// PLIST_ENTRY Entry
// );
//
#define InsertTailList(ListHead,Entry) {\
PLIST_ENTRY _EX_Blink;\
PLIST_ENTRY _EX_ListHead;\
_EX_ListHead = (ListHead);\
_EX_Blink = _EX_ListHead->Blink;\
(Entry)->Flink = _EX_ListHead;\
(Entry)->Blink = _EX_Blink;\
_EX_Blink->Flink = (Entry);\
_EX_ListHead->Blink = (Entry);\
}
//
// VOID
// InsertHeadList(
// PLIST_ENTRY ListHead,
// PLIST_ENTRY Entry
// );
//
#define InsertHeadList(ListHead,Entry) {\
PLIST_ENTRY _EX_Flink;\
PLIST_ENTRY _EX_ListHead;\
_EX_ListHead = (ListHead);\
_EX_Flink = _EX_ListHead->Flink;\
(Entry)->Flink = _EX_Flink;\
(Entry)->Blink = _EX_ListHead;\
_EX_Flink->Blink = (Entry);\
_EX_ListHead->Flink = (Entry);\
}
/************************************************************
* Function Definitions
************************************************************/
//
// Initialization and cleanup functions
//
DWORD InitFileHandleCache(VOID);
DWORD CleanupFileHandleCache(VOID);
HANDLE FcOpenFile(IN EXTENSION_CONTROL_BLOCK * pecb, IN LPCSTR pszFile);
DWORD FcCloseFile(IN HANDLE hFile);
BOOL FcReadFromFile(
IN HANDLE hFile,
OUT CHAR * pchBuffer,
IN DWORD dwBufferSize,
OUT LPDWORD pcbRead,
IN OUT LPOVERLAPPED pov
);
# endif // _OPENF_HXX_
/************************ End of File ***********************/