| // 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 BASE_WIN_STARTUP_INFORMATION_H_ | 
 | #define BASE_WIN_STARTUP_INFORMATION_H_ | 
 |  | 
 | #include <windows.h> | 
 | #include <stddef.h> | 
 |  | 
 | #include "base/base_export.h" | 
 | #include "base/macros.h" | 
 |  | 
 | namespace base { | 
 | namespace win { | 
 |  | 
 | // Manages the lifetime of additional attributes in STARTUPINFOEX. | 
 | class BASE_EXPORT StartupInformation { | 
 |  public: | 
 |   StartupInformation(); | 
 |  | 
 |   ~StartupInformation(); | 
 |  | 
 |   // Initialize the attribute list for the specified number of entries. | 
 |   bool InitializeProcThreadAttributeList(DWORD attribute_count); | 
 |  | 
 |   // Sets one entry in the initialized attribute list. | 
 |   // |value| needs to live at least as long as the StartupInformation object | 
 |   // this is called on. | 
 |   bool UpdateProcThreadAttribute(DWORD_PTR attribute, | 
 |                                  void* value, | 
 |                                  size_t size); | 
 |  | 
 |   LPSTARTUPINFOW startup_info() { return &startup_info_.StartupInfo; } | 
 |   LPSTARTUPINFOW startup_info() const { | 
 |     return const_cast<const LPSTARTUPINFOW>(&startup_info_.StartupInfo); | 
 |   } | 
 |  | 
 |   bool has_extended_startup_info() const { | 
 |     return !!startup_info_.lpAttributeList; | 
 |   } | 
 |  | 
 |  private: | 
 |   STARTUPINFOEXW startup_info_; | 
 |   DISALLOW_COPY_AND_ASSIGN(StartupInformation); | 
 | }; | 
 |  | 
 | }  // namespace win | 
 | }  // namespace base | 
 |  | 
 | #endif  // BASE_WIN_STARTUP_INFORMATION_H_ |