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
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;
|
|
}
|