15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CLOUD_PRINT_VIRTUAL_DRIVER_WIN_PORT_MONITOR_PORT_MONITOR_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CLOUD_PRINT_VIRTUAL_DRIVER_WIN_PORT_MONITOR_PORT_MONITOR_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_util.h" 11bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include "base/process/process.h" 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace cloud_print { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns path to be used for launching Chrome. 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)base::FilePath GetChromeExePath(); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns path to user profile to be used for launching Chrome. 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)base::FilePath GetChromeProfilePath(); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Implementations for the function pointers in the MONITOR2 structure 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// returned by InitializePrintMonitor2. The prototypes and behaviors 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// are as described in the MONITOR2 documentation from Microsoft. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2EnumPorts(HANDLE, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wchar_t*, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD level, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BYTE* ports, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD ports_size, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD* needed_bytes, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD* returned); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2OpenPort(HANDLE monitor_data, wchar_t*, HANDLE* handle); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2StartDocPort(HANDLE port_handle, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wchar_t* printer_name, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD job_id, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BYTE*); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2WritePort(HANDLE port, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BYTE* buffer, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD buffer_size, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD* bytes_written); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2ReadPort(HANDLE, BYTE*, DWORD, DWORD* bytes_read); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2EndDocPort(HANDLE port_handle); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2ClosePort(HANDLE port_handle); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)VOID WINAPI Monitor2Shutdown(HANDLE monitor_handle); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2XcvOpenPort(HANDLE monitor, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const wchar_t*, 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ACCESS_MASK granted_access, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HANDLE* handle); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DWORD WINAPI Monitor2XcvDataPort(HANDLE xcv_handle, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const wchar_t* data_name, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BYTE*, 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD, 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BYTE* output_data, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD output_data_bytes, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD* output_data_bytes_needed); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI Monitor2XcvClosePort(HANDLE handle); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Implementations for the function pointers in the MONITORUI structure 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// returned by InitializePrintMonitorUI. The prototypes and behaviors 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// are as described in the MONITORUI documentation from Microsoft. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI MonitorUiAddPortUi(const wchar_t*, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HWND hwnd, 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const wchar_t* monitor_name, 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) wchar_t**); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL WINAPI MonitorUiConfigureOrDeletePortUI(const wchar_t*, 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HWND hwnd, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const wchar_t* port_name); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeExePath[]; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeExePathRegValue[]; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeProfilePathRegValue[]; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const bool kIsUnittest; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace cloud_print 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CLOUD_PRINT_VIRTUAL_DRIVER_WIN_PORT_MONITOR_PORT_MONITOR_H_ 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 92