blob: ab878c0e68baacf5981d6057204cae01ec8e2191 [file] [log] [blame]
[email protected]d8d17eb2012-12-12 07:25:411// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "printing/backend/printing_info_win.h"
6
avi126e93c2015-12-21 21:48:167#include <stdint.h>
8
[email protected]d8d17eb2012-12-12 07:25:419#include "base/logging.h"
10
11namespace printing {
12
13namespace internal {
14
avi126e93c2015-12-21 21:48:1615uint8_t* GetDriverInfo(HANDLE printer, int level) {
[email protected]d8d17eb2012-12-12 07:25:4116 DWORD size = 0;
17 ::GetPrinterDriver(printer, NULL, level, NULL, 0, &size);
18 if (size == 0) {
19 return NULL;
20 }
dchengc3df9ba2016-04-07 23:09:3221 std::unique_ptr<uint8_t[]> buffer(new uint8_t[size]);
[email protected]d8d17eb2012-12-12 07:25:4122 memset(buffer.get(), 0, size);
23 if (!::GetPrinterDriver(printer, NULL, level, buffer.get(), size, &size)) {
24 return NULL;
25 }
26 return buffer.release();
27}
28
avi126e93c2015-12-21 21:48:1629uint8_t* GetPrinterInfo(HANDLE printer, int level) {
[email protected]d8d17eb2012-12-12 07:25:4130 DWORD size = 0;
31 ::GetPrinter(printer, level, NULL, 0, &size);
32 if (size == 0) {
33 LOG(WARNING) << "Failed to get size of PRINTER_INFO_" << level <<
34 ", error = " << GetLastError();
35 return NULL;
36 }
dchengc3df9ba2016-04-07 23:09:3237 std::unique_ptr<uint8_t[]> buffer(new uint8_t[size]);
[email protected]d8d17eb2012-12-12 07:25:4138 memset(buffer.get(), 0, size);
39 if (!::GetPrinter(printer, level, buffer.get(), size, &size)) {
40 LOG(WARNING) << "Failed to get PRINTER_INFO_" << level <<
41 ", error = " << GetLastError();
42 return NULL;
43 }
44 return buffer.release();
45}
46
47} // namespace internal
48
[email protected]d8d17eb2012-12-12 07:25:4149} // namespace printing