本文整理汇总了C++中ContextMap::Release方法的典型用法代码示例。如果您正苦于以下问题:C++ ContextMap::Release方法的具体用法?C++ ContextMap::Release怎么用?C++ ContextMap::Release使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ContextMap
的用法示例。
在下文中一共展示了ContextMap::Release方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TraceEvents
CQueue::OnCreateFile(
/*[in]*/ IWDFIoQueue* pQueue,
/*[in]*/ IWDFIoRequest* pRequest,
/*[in]*/ IWDFFile* pFileObject
)
{
UNREFERENCED_PARAMETER(pQueue);
TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_FLAG_QUEUE, "%!FUNC! Entry");
// This critical section protects the section of code where we
// Create the serializer and results interfaces used in handling I/O messages.
// We only need to create them once, then we hang on to them for the lifetime of this
// queue object.
CComCritSecLock<CComAutoCriticalSection> Lock(m_CriticalSection);
HRESULT hr = S_OK;
// Create the WPD serializer
if ((hr == S_OK) &&
(m_pWpdSerializer == NULL))
{
hr = CoCreateInstance(CLSID_WpdSerializer,
NULL,
CLSCTX_INPROC_SERVER,
IID_IWpdSerializer,
(VOID**)&m_pWpdSerializer);
CHECK_HR(hr, "Failed to CoCreate CLSID_WpdSerializer");
}
// Create the client context map and associate it with the File Object
// so we can obtain it on a per-client basis.
if (hr == S_OK)
{
ContextMap* pClientContextMap = new ContextMap();
if(pClientContextMap != NULL)
{
hr = pFileObject->AssignContext(this, (void*)pClientContextMap);
CHECK_HR(hr, "Failed to set client context map");
// Release the client context map if we cannot set it
// properly
if(FAILED(hr))
{
pClientContextMap->Release();
pClientContextMap = NULL;
}
}
else
{
hr = E_OUTOFMEMORY;
CHECK_HR(hr, "Failed to create client context map");
}
}
pRequest->Complete(hr);
return;
}
示例2:
CQueue::OnCleanup(
IWDFObject* pWdfObject
)
{
// Destroy the client context map
HRESULT hr = S_OK;
ContextMap* pClientContextMap = NULL;
hr = pWdfObject->RetrieveContext((void**)&pClientContextMap);
if((hr == S_OK) && (pClientContextMap != NULL))
{
pClientContextMap->Release();
pClientContextMap = NULL;
}
}