fix(inputs.win_wmi): Restrict threading model to APARTMENTTHREADED (#16781)
This commit is contained in:
parent
859e55cd6b
commit
0195c4e966
|
|
@ -75,10 +75,10 @@ func (m *method) execute(acc telegraf.Accumulator) error {
|
||||||
defer runtime.UnlockOSThread()
|
defer runtime.UnlockOSThread()
|
||||||
|
|
||||||
// Init the COM client
|
// Init the COM client
|
||||||
if err := ole.CoInitializeEx(0, ole.COINIT_MULTITHREADED); err != nil {
|
if err := ole.CoInitializeEx(0, ole.COINIT_APARTMENTTHREADED); err != nil {
|
||||||
var oleCode *ole.OleError
|
var oleCode *ole.OleError
|
||||||
if errors.As(err, &oleCode) && oleCode.Code() != ole.S_OK && oleCode.Code() != sFalse {
|
if !errors.As(err, &oleCode) || (oleCode.Code() != ole.S_OK && oleCode.Code() != sFalse) {
|
||||||
return err
|
return fmt.Errorf("initialization of COM object failed: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
defer ole.CoUninitialize()
|
defer ole.CoUninitialize()
|
||||||
|
|
@ -86,7 +86,7 @@ func (m *method) execute(acc telegraf.Accumulator) error {
|
||||||
// Initialize the WMI service
|
// Initialize the WMI service
|
||||||
locator, err := oleutil.CreateObject("WbemScripting.SWbemLocator")
|
locator, err := oleutil.CreateObject("WbemScripting.SWbemLocator")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("creation of OLE object failed: %w", err)
|
||||||
}
|
}
|
||||||
if locator == nil {
|
if locator == nil {
|
||||||
return errors.New("failed to create WbemScripting.SWbemLocator, maybe WMI is broken")
|
return errors.New("failed to create WbemScripting.SWbemLocator, maybe WMI is broken")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue