~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/wmiutils/statuscode.c

Version: ~ [ wine-1.5.30 ] ~ [ wine-1.5.29 ] ~ [ wine-1.5.28 ] ~ [ wine-1.5.27 ] ~ [ wine-1.5.26 ] ~ [ wine-1.5.25 ] ~ [ wine-1.5.24 ] ~ [ wine-1.5.23 ] ~ [ wine-1.5.22 ] ~ [ wine-1.5.21 ] ~ [ wine-1.5.20 ] ~ [ wine-1.5.19 ] ~ [ wine-1.5.18 ] ~ [ wine-1.5.17 ] ~ [ wine-1.5.16 ] ~ [ wine-1.5.15 ] ~ [ wine-1.5.14 ] ~ [ wine-1.5.13 ] ~ [ wine-1.5.12 ] ~ [ wine-1.5.11 ] ~ [ wine-1.5.10 ] ~ [ wine-1.5.9 ] ~ [ wine-1.5.8 ] ~ [ wine-1.5.7 ] ~ [ wine-1.4.1 ] ~ [ wine-1.5.6 ] ~ [ wine-1.5.5 ] ~ [ wine-1.5.4 ] ~ [ wine-1.5.3 ] ~ [ wine-1.5.2 ] ~ [ wine-1.5.1 ] ~ [ wine-1.5.0 ] ~ [ wine-1.4 ] ~ [ wine-1.4-rc6 ] ~ [ wine-1.4-rc5 ] ~ [ wine-1.4-rc4 ] ~ [ wine-1.4-rc3 ] ~ [ wine-1.4-rc2 ] ~ [ wine-1.4-rc1 ] ~ [ wine-1.3.37 ] ~ [ wine-1.3.36 ] ~ [ wine-1.3.35 ] ~ [ wine-1.3.34 ] ~ [ wine-1.3.33 ] ~ [ wine-1.3.32 ] ~ [ wine-1.3.31 ] ~ [ wine-1.3.30 ] ~ [ wine-1.3.29 ] ~ [ wine-1.3.28 ] ~ [ wine-1.3.27 ] ~ [ wine-1.3.26 ] ~ [ wine-1.3.25 ] ~ [ wine-1.3.24 ] ~ [ wine-1.3.23 ] ~ [ wine-1.3.22 ] ~ [ wine-1.3.21 ] ~ [ wine-1.3.20 ] ~ [ wine-1.3.19 ] ~ [ wine-1.3.18 ] ~ [ wine-1.2.3 ] ~ [ wine-1.3.17 ] ~ [ wine-1.3.16 ] ~ [ wine-1.3.15 ] ~ [ wine-1.3.14 ] ~ [ wine-1.3.13 ] ~ [ wine-1.3.12 ] ~ [ wine-1.3.11 ] ~ [ wine-1.3.10 ] ~ [ wine-1.3.9 ] ~ [ wine-1.2.2 ] ~ [ wine-1.3.8 ] ~ [ wine-1.3.7 ] ~ [ wine-1.3.6 ] ~ [ wine-1.3.5 ] ~ [ wine-1.2.1 ] ~ [ wine-1.3.4 ] ~ [ wine-1.3.3 ] ~ [ wine-1.3.2 ] ~ [ wine-1.3.1 ] ~ [ wine-1.3.0 ] ~ [ wine-1.2 ] ~ [ wine-1.2-rc7 ] ~ [ wine-1.2-rc6 ] ~ [ wine-1.2-rc5 ] ~ [ wine-1.2-rc4 ] ~ [ wine-1.2-rc3 ] ~ [ wine-1.2-rc2 ] ~ [ wine-1.2-rc1 ] ~ [ wine-1.1.44 ] ~ [ wine-1.1.43 ] ~ [ wine-1.1.42 ] ~ [ wine-1.1.41 ] ~ [ wine-1.1.40 ] ~ [ wine-1.1.39 ] ~ [ wine-1.1.38 ] ~ [ wine-1.1.37 ] ~ [ wine-1.1.36 ] ~ [ wine-1.1.35 ] ~ [ wine-1.1.34 ] ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  * Copyright 2009 Hans Leidekker for CodeWeavers
  3  *
  4  * This library is free software; you can redistribute it and/or
  5  * modify it under the terms of the GNU Lesser General Public
  6  * License as published by the Free Software Foundation; either
  7  * version 2.1 of the License, or (at your option) any later version.
  8  *
  9  * This library is distributed in the hope that it will be useful,
 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 12  * Lesser General Public License for more details.
 13  *
 14  * You should have received a copy of the GNU Lesser General Public
 15  * License along with this library; if not, write to the Free Software
 16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 17  */
 18 
 19 #define COBJMACROS
 20 
 21 #include "config.h"
 22 #include <stdarg.h>
 23 #include <stdio.h>
 24 
 25 #include "windef.h"
 26 #include "winbase.h"
 27 #include "winuser.h"
 28 #include "initguid.h"
 29 #include "ole2.h"
 30 #include "wbemcli.h"
 31 
 32 #include "wine/debug.h"
 33 #include "wine/unicode.h"
 34 #include "wmiutils_private.h"
 35 
 36 WINE_DEFAULT_DEBUG_CHANNEL(wmiutils);
 37 
 38 typedef struct status_code
 39 {
 40     IWbemStatusCodeText IWbemStatusCodeText_iface;
 41     LONG refs;
 42 } status_code;
 43 
 44 static inline status_code *impl_from_IWbemStatusCodeText( IWbemStatusCodeText *iface )
 45 {
 46     return CONTAINING_RECORD(iface, status_code, IWbemStatusCodeText_iface);
 47 }
 48 
 49 static ULONG WINAPI status_code_AddRef(
 50     IWbemStatusCodeText *iface )
 51 {
 52     status_code *status_code = impl_from_IWbemStatusCodeText( iface );
 53     return InterlockedIncrement( &status_code->refs );
 54 }
 55 
 56 static ULONG WINAPI status_code_Release(
 57     IWbemStatusCodeText *iface )
 58 {
 59     status_code *status_code = impl_from_IWbemStatusCodeText( iface );
 60     LONG refs = InterlockedDecrement( &status_code->refs );
 61     if (!refs)
 62     {
 63         TRACE("destroying %p\n", status_code);
 64         HeapFree( GetProcessHeap(), 0, status_code );
 65     }
 66     return refs;
 67 }
 68 
 69 static HRESULT WINAPI status_code_QueryInterface(
 70     IWbemStatusCodeText *iface,
 71     REFIID riid,
 72     void **ppvObject )
 73 {
 74     status_code *This = impl_from_IWbemStatusCodeText( iface );
 75 
 76     TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject );
 77 
 78     if ( IsEqualGUID( riid, &IID_IWbemStatusCodeText ) ||
 79          IsEqualGUID( riid, &IID_IUnknown ) )
 80     {
 81         *ppvObject = iface;
 82     }
 83     else
 84     {
 85         FIXME("interface %s not implemented\n", debugstr_guid(riid));
 86         return E_NOINTERFACE;
 87     }
 88     IWbemStatusCodeText_AddRef( iface );
 89     return S_OK;
 90 }
 91 
 92 static HRESULT WINAPI status_code_GetErrorCodeText(
 93     IWbemStatusCodeText *iface,
 94     HRESULT res,
 95     LCID lcid,
 96     LONG flags,
 97     BSTR *text )
 98 {
 99     static const WCHAR fmt[] =
100         {'E','r','r','o','r',' ','c','o','d','e',':',' ','','x','%','','8','x',0};
101     WCHAR msg[32];
102 
103     FIXME("%p, 0x%08x, 0x%04x, 0x%08x, %p\n", iface, res, lcid, flags, text);
104 
105     sprintfW(msg, fmt, res);
106     *text = SysAllocString(msg);
107     return WBEM_S_NO_ERROR;
108 }
109 
110 static HRESULT WINAPI status_code_GetFacilityCodeText(
111     IWbemStatusCodeText *iface,
112     HRESULT res,
113     LCID lcid,
114     LONG flags,
115     BSTR *text )
116 {
117     static const WCHAR fmt[] =
118         {'F','a','c','i','l','i','t','y',' ','c','o','d','e',':',' ','','x','%','','8','x',0};
119     WCHAR msg[32];
120 
121     FIXME("%p, 0x%08x, 0x%04x, 0x%08x, %p\n", iface, res, lcid, flags, text);
122 
123     sprintfW(msg, fmt, res);
124     *text = SysAllocString(msg);
125     return WBEM_S_NO_ERROR;
126 }
127 
128 static const struct IWbemStatusCodeTextVtbl status_code_vtbl =
129 {
130     status_code_QueryInterface,
131     status_code_AddRef,
132     status_code_Release,
133     status_code_GetErrorCodeText,
134     status_code_GetFacilityCodeText
135 };
136 
137 HRESULT WbemStatusCodeText_create( IUnknown *pUnkOuter, LPVOID *ppObj )
138 {
139     status_code *sc;
140 
141     TRACE("(%p,%p)\n", pUnkOuter, ppObj);
142 
143     sc = HeapAlloc( GetProcessHeap(), 0, sizeof(*sc) );
144     if (!sc) return E_OUTOFMEMORY;
145 
146     sc->IWbemStatusCodeText_iface.lpVtbl = &status_code_vtbl;
147     sc->refs = 1;
148 
149     *ppObj = &sc->IWbemStatusCodeText_iface;
150 
151     TRACE("returning iface %p\n", *ppObj);
152     return S_OK;
153 }
154 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.