単純な (匿名の) パイプを介してクラス オブジェクトを相互にスローする 2 つの単純なプロセスを構築し続けています (以前の投稿を参照)。今、私はboost::serializationを明らかにし(回答してくれた人に感謝します)、::WriteFile::ReadFileを介していくつかのクラスをシリアル化しようとしました。だから - 私が間違っているのは何ですか?
1)いくつかのクラスを作成しました
#pragma once
#include "wtypes.h"
#include <boost\archive\binary_oarchive.hpp>
#include <boost\archive\binary_iarchive.hpp>
#include <boost\serialization\binary_object.hpp>
class CTextContainer
{
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & m_sText;
ar & m_dwCRC;
ar & m_dwSize;
}
public:
CTextContainer() : m_dwCRC(0), m_dwSize(0)
{
ZeroMemory(m_sText, sizeof(m_sText));
m_dwSize = sizeof(*this);
}
CTextContainer(LPCTSTR sText) : m_dwCRC(0), m_dwSize(0)
{
ZeroMemory(m_sText, sizeof(m_sText));
wcsncpy_s(m_sText, 1024, sText, wcslen(sText));
m_dwSize = sizeof(*this);
}
virtual ~CTextContainer(){}
LPTSTR GetText() const{return (LPTSTR) m_sText;}
protected:
DWORD m_dwCRC;
DWORD m_dwSize;
TCHAR m_sText[1024];
}; //end of class
2)そして今、私はこのクラスからバイナリアーカイブに読み込み、その内容をパイプの一端に書き込もうとしています...
boost::archive::binary_oarchive oa(ofs);
oa << tc;
::WriteFile(hPipe, &oa, dwRead, &dwWritten, NULL) == FALSE
そんな風にはうまくいきませんよね?それで、それはどうなりますか?
3) 反対側も同じ操作?