000
21.10.2005, 15:15 Uhr
DarthDevilous
|
ich benutze boost::iostreams::mapped_file_source (www.boost.org/libs/iostreams/doc/classes/mapped_file.html). Beim aufruf von mapped_file_source::open wird ein exception generiert. Mein code:
C++: |
mmf.open(Filename, boost::iostreams::mapped_file_source::max_length, offset);
|
der boost code wo der exception generiert wird:
C++: |
//--------------Open underlying file--------------------------------------//
pimpl_->handle_ = ::CreateFileA( p.path.c_str(), readonly ? GENERIC_READ : GENERIC_ALL, FILE_SHARE_READ, NULL, (p.new_file_size != 0 && !readonly) ? CREATE_ALWAYS : OPEN_EXISTING, FILE_ATTRIBUTE_TEMPORARY, NULL );
if (pimpl_->handle_ == INVALID_HANDLE_VALUE) detail::cleanup_and_throw(*pimpl_, "failed opening file");
//--------------Create mapping--------------------------------------------//
pimpl_->mapped_handle_ = ::CreateFileMappingA( pimpl_->handle_, NULL, readonly ? PAGE_READONLY : PAGE_READWRITE, 0, 0, p.path.c_str() ); if (pimpl_->mapped_handle_ == NULL) { detail::cleanup_and_throw(*pimpl_, "couldn't create mapping"); }
|
in der zweitletzten zeile. der windows-error (in text) ist "The handle is invalid". Beim debuggen hab ich festgestellt das beim aufruf von "CreateFileMapping" pimpl_->handle_ einen wert von 0xFE8 hat. Wie ist das möglich??? Dieser Post wurde am 21.10.2005 um 15:33 Uhr von DarthDevilous editiert. |