Leaked source code of windows server 2003
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.
|
|
/******************************************************************************
* * Copyright (C) 2001 Microsoft Corporation. All Rights Reserved. * * File: io.h * * Content: DirectPlay Thread Pool I/O functions header file. * * History: * Date By Reason * ======== ======== ========= * 10/31/01 VanceO Created. * ******************************************************************************/
#ifndef __IO_H__
#define __IO_H__
// Overlapped I/O is not supported on Windows CE.
#ifndef WINCE
//=============================================================================
// External Globals
//=============================================================================
extern CFixedPool g_TrackedFilePool;
//=============================================================================
// Classes
//=============================================================================
class CTrackedFile { public:
#undef DPF_MODNAME
#define DPF_MODNAME "CTrackedFile::FPM_Alloc"
static BOOL FPM_Alloc(void * pvItem, void * pvContext) { CTrackedFile * pTrackedFile = (CTrackedFile*) pvItem;
pTrackedFile->m_Sig[0] = 'T'; pTrackedFile->m_Sig[1] = 'K'; pTrackedFile->m_Sig[2] = 'F'; pTrackedFile->m_Sig[3] = 'L';
pTrackedFile->m_blList.Initialize(); pTrackedFile->m_hFile = DNINVALID_HANDLE_VALUE;
return TRUE; }
/*
#undef DPF_MODNAME
#define DPF_MODNAME "CTrackedFile::FPM_Get"
static void FPM_Get(void * pvItem, void * pvContext) { CTrackedFile * pTrackedFile = (CTrackedFile*) pvItem; }
#undef DPF_MODNAME
#define DPF_MODNAME "CTrackedFile::FPM_Release"
static void FPM_Release(void * pvItem) { CTrackedFile * pTrackedFile = (CTrackedFile*) pvItem; }
#undef DPF_MODNAME
#define DPF_MODNAME "CTrackedFile::FPM_Dealloc"
static void FPM_Dealloc(void * pvItem) { CTrackedFile * pTrackedFile = (CTrackedFile*) pvItem; } */
#ifdef DBG
BOOL IsValid(void) { if ((m_Sig[0] == 'T') && (m_Sig[1] == 'K') && (m_Sig[2] == 'F') && (m_Sig[3] == 'L')) { return TRUE; }
return FALSE; } #endif // DBG
BYTE m_Sig[4]; // debugging signature ('TKFL')
CBilink m_blList; // entry in list of tracked handles
DNHANDLE m_hFile; // handle to file
};
//=============================================================================
// Function prototypes
//=============================================================================
HRESULT InitializeWorkQueueIoInfo(DPTPWORKQUEUE * const pWorkQueue);
void DeinitializeWorkQueueIoInfo(DPTPWORKQUEUE * const pWorkQueue);
HRESULT StartTrackingFileIo(DPTPWORKQUEUE * const pWorkQueue, const HANDLE hFile);
HRESULT StopTrackingFileIo(DPTPWORKQUEUE * const pWorkQueue, const HANDLE hFile);
void CancelIoForThisThread(DPTPWORKQUEUE * const pWorkQueue);
CWorkItem * CreateOverlappedIoWorkItem(DPTPWORKQUEUE * const pWorkQueue, const PFNDPTNWORKCALLBACK pfnWorkCallback, PVOID const pvCallbackContext);
void ReleaseOverlappedIoWorkItem(DPTPWORKQUEUE * const pWorkQueue, CWorkItem * const pWorkItem);
#ifndef DPNBUILD_USEIOCOMPLETIONPORTS
void SubmitIoOperation(DPTPWORKQUEUE * const pWorkQueue, CWorkItem * const pWorkItem);
void ProcessIo(DPTPWORKQUEUE * const pWorkQueue, DNSLIST_ENTRY ** const ppHead, DNSLIST_ENTRY ** const ppTail, USHORT * const pusCount); #endif // ! DPNBUILD_USEIOCOMPLETIONPORTS
#endif // ! WINCE
#endif // __IO_H__
|