Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: runtime/bin/process_win.cc

Issue 11567010: Complete the transition to unicode APIs on Windows. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/bin/process_win.cc
diff --git a/runtime/bin/process_win.cc b/runtime/bin/process_win.cc
index a09692bb11cfe153b495891960866291876b8927..fa64639716bbf4a084e051f22f6ac0cf772c3a1a 100644
--- a/runtime/bin/process_win.cc
+++ b/runtime/bin/process_win.cc
@@ -202,7 +202,7 @@ enum NamedPipeType {
// NOTE: If this function returns false the handles might have been allocated
// and the caller should make sure to close them in case of an error.
static bool CreateProcessPipe(HANDLE handles[2],
- char* pipe_name,
+ wchar_t* pipe_name,
NamedPipeType type) {
// Security attributes describing an inheritable handle.
SECURITY_ATTRIBUTES inherit_handle;
@@ -212,14 +212,14 @@ static bool CreateProcessPipe(HANDLE handles[2],
if (type == kInheritRead) {
handles[kWriteHandle] =
- CreateNamedPipe(pipe_name,
- PIPE_ACCESS_OUTBOUND | FILE_FLAG_OVERLAPPED,
- PIPE_TYPE_BYTE | PIPE_WAIT,
- 1, // Number of pipes
- 1024, // Out buffer size
- 1024, // In buffer size
- 0, // Timeout in ms
- NULL);
+ CreateNamedPipeW(pipe_name,
+ PIPE_ACCESS_OUTBOUND | FILE_FLAG_OVERLAPPED,
+ PIPE_TYPE_BYTE | PIPE_WAIT,
+ 1, // Number of pipes
+ 1024, // Out buffer size
+ 1024, // In buffer size
+ 0, // Timeout in ms
+ NULL);
if (handles[kWriteHandle] == INVALID_HANDLE_VALUE) {
Log::PrintErr("CreateNamedPipe failed %d\n", GetLastError());
@@ -227,13 +227,13 @@ static bool CreateProcessPipe(HANDLE handles[2],
}
handles[kReadHandle] =
- CreateFile(pipe_name,
- GENERIC_READ,
- 0,
- &inherit_handle,
- OPEN_EXISTING,
- FILE_READ_ATTRIBUTES | FILE_FLAG_OVERLAPPED,
- NULL);
+ CreateFileW(pipe_name,
+ GENERIC_READ,
+ 0,
+ &inherit_handle,
+ OPEN_EXISTING,
+ FILE_READ_ATTRIBUTES | FILE_FLAG_OVERLAPPED,
+ NULL);
if (handles[kReadHandle] == INVALID_HANDLE_VALUE) {
Log::PrintErr("CreateFile failed %d\n", GetLastError());
return false;
@@ -241,14 +241,14 @@ static bool CreateProcessPipe(HANDLE handles[2],
} else {
ASSERT(type == kInheritWrite || type == kInheritNone);
handles[kReadHandle] =
- CreateNamedPipe(pipe_name,
- PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED,
- PIPE_TYPE_BYTE | PIPE_WAIT,
- 1, // Number of pipes
- 1024, // Out buffer size
- 1024, // In buffer size
- 0, // Timeout in ms
- NULL);
+ CreateNamedPipeW(pipe_name,
+ PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED,
+ PIPE_TYPE_BYTE | PIPE_WAIT,
+ 1, // Number of pipes
+ 1024, // Out buffer size
+ 1024, // In buffer size
+ 0, // Timeout in ms
+ NULL);
if (handles[kReadHandle] == INVALID_HANDLE_VALUE) {
Log::PrintErr("CreateNamedPipe failed %d\n", GetLastError());
@@ -256,13 +256,13 @@ static bool CreateProcessPipe(HANDLE handles[2],
}
handles[kWriteHandle] =
- CreateFile(pipe_name,
- GENERIC_WRITE,
- 0,
- (type == kInheritWrite) ? &inherit_handle : NULL,
- OPEN_EXISTING,
- FILE_WRITE_ATTRIBUTES | FILE_FLAG_OVERLAPPED,
- NULL);
+ CreateFileW(pipe_name,
+ GENERIC_WRITE,
+ 0,
+ (type == kInheritWrite) ? &inherit_handle : NULL,
+ OPEN_EXISTING,
+ FILE_WRITE_ATTRIBUTES | FILE_FLAG_OVERLAPPED,
+ NULL);
if (handles[kWriteHandle] == INVALID_HANDLE_VALUE) {
Log::PrintErr("CreateFile failed %d\n", GetLastError());
return false;
@@ -337,7 +337,8 @@ int Process::Start(const char* path,
HANDLE exit_handles[2] = { INVALID_HANDLE_VALUE, INVALID_HANDLE_VALUE };
// Generate unique pipe names for the four named pipes needed.
- char pipe_names[4][80];
+ static const int kMaxPipeNameSize = 80;
+ wchar_t pipe_names[4][kMaxPipeNameSize];
UUID uuid;
RPC_STATUS status = UuidCreateSequential(&uuid);
if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY) {
@@ -345,20 +346,20 @@ int Process::Start(const char* path,
Log::PrintErr("UuidCreateSequential failed %d\n", status);
return status;
}
- RPC_CSTR uuid_string;
- status = UuidToString(&uuid, &uuid_string);
+ RPC_WSTR uuid_string;
+ status = UuidToStringW(&uuid, &uuid_string);
if (status != RPC_S_OK) {
SetOsErrorMessage(os_error_message);
Log::PrintErr("UuidToString failed %d\n", status);
return status;
}
for (int i = 0; i < 4; i++) {
- static const char* prefix = "\\\\.\\Pipe\\dart";
- snprintf(pipe_names[i],
- sizeof(pipe_names[i]),
- "%s_%s_%d", prefix, uuid_string, i + 1);
+ static const wchar_t* prefix = L"\\\\.\\Pipe\\dart";
+ _snwprintf(pipe_names[i],
+ kMaxPipeNameSize,
+ L"%s_%s_%d", prefix, uuid_string, i + 1);
}
- status = RpcStringFree(&uuid_string);
+ status = RpcStringFreeW(&uuid_string);
if (status != RPC_S_OK) {
SetOsErrorMessage(os_error_message);
Log::PrintErr("RpcStringFree failed %d\n", status);

Powered by Google App Engine
This is Rietveld 408576698