+#define NOMINMAX
+#include <limits>
#include <msp/core/systemerror.h>
#include "handle.h"
#include "handle_private.h"
+using namespace std;
+
namespace Msp {
namespace IO {
-Handle::operator const void *() const
+void sys_set_blocking(Handle &, bool)
{
- return priv->handle!=INVALID_HANDLE_VALUE ? this : 0;
}
-
-void sys_set_blocking(Handle &, bool)
+void sys_set_inherit(Handle &, bool)
{
}
-unsigned sys_read(Handle &handle, char *buf, unsigned size)
+size_t sys_read(Handle &handle, char *buf, size_t size)
{
+ if(size>numeric_limits<DWORD>::max())
+ throw invalid_argument("IO::sys_read");
+
DWORD ret;
- if(ReadFile(*handle, buf, size, &ret, 0)==0)
+ if(ReadFile(*handle, buf, size, &ret, nullptr)==0)
throw system_error("ReadFile");
return ret;
}
-unsigned sys_write(Handle &handle, const char *buf, unsigned size)
+size_t sys_write(Handle &handle, const char *buf, size_t size)
{
+ if(size>numeric_limits<DWORD>::max())
+ throw invalid_argument("IO::sys_write");
+
DWORD ret;
- if(WriteFile(*handle, buf, size, &ret, 0)==0)
+ if(WriteFile(*handle, buf, size, &ret, nullptr)==0)
throw system_error("WriteFile");
return ret;