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 13 namespace base { 14 namespace win { 15 16 // Manages the lifetime of additional attributes in STARTUPINFOEX. 17 class 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