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.
 
 
 
 
 
 

92 lines
2.7 KiB

//---------------------------------------------------------------------
// Copyright (C)1998 Microsoft Corporation, All Rights Reserved.
//
// iostatus.cpp
//
// Author:
//
// Edward Reus (edwardr) 02-28-98 Initial coding.
//
//---------------------------------------------------------------------
#include "precomp.h"
//---------------------------------------------------------------------
// CIOSTATUS::CIOSTATUS()
//
//---------------------------------------------------------------------
CIOSTATUS::CIOSTATUS()
{
m_dwMainThreadId = 0;
m_hIoCompletionPort = INVALID_HANDLE_VALUE;
m_lNumThreads = 0;
m_lNumPendingThreads = 0;
}
//---------------------------------------------------------------------
// CIOSTATUS::~CIOSTATUS()
//
//---------------------------------------------------------------------
CIOSTATUS::~CIOSTATUS()
{
CloseHandle(m_hIoCompletionPort);
}
//------------------------------------------------------------------------
// CIOSTATUS::operator new()
//
//------------------------------------------------------------------------
void *CIOSTATUS::operator new( IN size_t Size )
{
void *pObj = AllocateMemory(Size);
return pObj;
}
//------------------------------------------------------------------------
// CIOSTATUS::operator delete()
//
//------------------------------------------------------------------------
void CIOSTATUS::operator delete( IN void *pObj,
IN size_t Size )
{
if (pObj)
{
DWORD dwStatus = FreeMemory(pObj);
#ifdef DBG_MEM
if (dwStatus)
{
DbgPrint("IrXfer: IrTran-P: CIOSTATUS::delete Failed: %d\n",
dwStatus );
}
#endif
}
}
//---------------------------------------------------------------------
// CIOSTATUS::Initialize();
//
//---------------------------------------------------------------------
DWORD CIOSTATUS::Initialize()
{
DWORD dwStatus = NO_ERROR;
m_dwMainThreadId = GetCurrentThreadId();
// Create an IO completion port to use in our asynchronous IO.
m_hIoCompletionPort = CreateIoCompletionPort( INVALID_HANDLE_VALUE,
0,
0,
0 );
if (!m_hIoCompletionPort)
{
dwStatus = GetLastError();
#ifdef DBG_ERROR
DbgPrint("CreateIoCompletionPort(): Failed: %d\n",dwStatus);
#endif
return dwStatus;
}
return dwStatus;
}