// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PRINTING_BACKEND_PRINTING_INFO_WIN_H_ #define PRINTING_BACKEND_PRINTING_INFO_WIN_H_ #include #include #include #include "base/memory/scoped_ptr.h" #include "printing/printing_export.h" namespace printing { namespace internal { PRINTING_EXPORT uint8_t* GetDriverInfo(HANDLE printer, int level); PRINTING_EXPORT uint8_t* GetPrinterInfo(HANDLE printer, int level); // This class is designed to work with PRINTER_INFO_X structures // and calls GetPrinter internally with correctly allocated buffer. template class PrinterInfo { public: bool Init(HANDLE printer) { buffer_.reset(GetPrinterInfo(printer, level)); return buffer_ != nullptr; } const PrinterInfoType* get() const { return reinterpret_cast(buffer_.get()); } private: scoped_ptr buffer_; }; // This class is designed to work with DRIVER_INFO_X structures // and calls GetDriverInfo internally with correctly allocated buffer. template class DriverInfo { public: bool Init(HANDLE printer) { buffer_.reset(GetDriverInfo(printer, level)); return buffer_ != nullptr; } const DriverInfoType* get() const { return reinterpret_cast(buffer_.get()); } private: scoped_ptr buffer_; }; } // namespace internal typedef internal::PrinterInfo PrinterInfo2; typedef internal::PrinterInfo PrinterInfo5; typedef internal::DriverInfo DriverInfo6; } // namespace printing #endif // PRINTING_BACKEND_PRINTING_INFO_WIN_H_