1// 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#ifndef BASE_WIN_STARTUP_INFORMATION_H_ 6#define BASE_WIN_STARTUP_INFORMATION_H_ 7 8#include <windows.h> 9 10#include "base/base_export.h" 11#include "base/basictypes.h" 12 13namespace base { 14namespace win { 15 16// Manages the lifetime of additional attributes in STARTUPINFOEX. 17class BASE_EXPORT StartupInformation { 18 public: 19 StartupInformation(); 20 21 ~StartupInformation(); 22 23 // Initialize the attribute list for the specified number of entries. 24 bool InitializeProcThreadAttributeList(DWORD attribute_count); 25 26 // Sets one entry in the initialized attribute list. 27 bool UpdateProcThreadAttribute(DWORD_PTR attribute, 28 void* value, 29 size_t size); 30 31 LPSTARTUPINFOW startup_info() { return &startup_info_.StartupInfo; } 32 const LPSTARTUPINFOW startup_info() const { 33 return const_cast<const LPSTARTUPINFOW>(&startup_info_.StartupInfo); 34 } 35 36 bool has_extended_startup_info() const { 37 return !!startup_info_.lpAttributeList; 38 } 39 40 private: 41 STARTUPINFOEXW startup_info_; 42 DISALLOW_COPY_AND_ASSIGN(StartupInformation); 43}; 44 45} // namespace win 46} // namespace base 47 48#endif // BASE_WIN_SCOPED_STARTUP_INFO_EX_H_ 49 50